延迟线(delay line)组件是计算机存储器的早期形式(约1960年代之前)。时至今日,它虽然已经过时,但我想起自己曾经参与一项有关的计划。该计划虽然最终宣告失败,但即使如今思考当时失败的原因也可能相当有帮助。
延迟线存储器其实超级简单,它看起来就像这样:
图1:延迟线存储器
这项计划是利用一条非常非常非常长的石英延迟线,透过一个闭合回路来传输数据。数据从该回路的一端输入,并由另一端输出,重新产生后即毫无限制地再次传送回来。系统的同步是利用在数据区块之前的特殊同步程序代码完成的,并由控制器检测该同步程序代码,以追踪数据区块的位置。
遗憾的是,该计划存在着致命的错误。
除了数据更新过程本身并不完善(如今这个问题可能已经克服了)之外,数据区块中几乎总会存在一些随机点,使其中经分配的同步程序代码被意外复制。当控制器发现意外复制时,它会误判数据区块的位置并导致整个储存机制崩溃。
当这种情况发生时,我记得自己还是一个眼清目明的年轻工程师,虽然知道存在着这种原生的缺陷,但却无法说服负责这项计划的资深项目工程师。当我告诉他发生的缺陷时,换来的只是一句:「没事,这不会有问题的。我们现在要做的就是......」。
我想问题就出在项目工程师无法接受同步程序代码可能意外出现在数据区块的想法。但我一直想不透他为什么不能接受这种想法。
你可能听说过「校对错误」(proof-reader's error)和「盲点」(blind spot)这些词语?这就是我所说的这种「致命缺陷」。
那么,你最近正在进行的计划如何呢?可能存在某种「盲点」或类似的问题吗?
(原文发表于ASPENCORE旗下EDN美国版,参考链接:elay line memory with a fatal flaw,编译:Susan Hong)