延遲線(delay line)元件是電腦記憶體的早期形式(約1960年代之前)。時至今日,它雖然已經過時,但我想起自己曾經參與一項有關的計劃。該計劃雖然最終宣告失敗,但即使如今思考當時失敗的原因也可能相當有幫助。

延遲線記憶體其實超級簡單,它看起來就像這樣:

圖1:延遲線記憶體

英特爾Movidius工程顧問Max Stringer提供了一個讓我們瞭解有關延遲線記憶體的視訊:

這個視訊既有趣又具有啟發性,但我參與的一項有關石英延遲線的計劃。

這項計劃是利用一條非常非常非常長的石英延遲線,透過一個閉合迴路來傳輸資料。資料從該迴路的一端輸入,並由另一端輸出,重新產生後即毫無限制地再次傳送回來。系統的同步是利用在資料區塊之前的特殊同步程式碼完成的,並由控制器檢測該同步程式碼,以追蹤資料區塊的位置。

遺憾的是,該計劃存在著致命的錯誤。

除了資料更新過程本身並不完善(如今這個問題可能已經克服了)之外,資料區塊中幾乎總會存在一些隨機點,使其中經分配的同步程式碼被意外複製。當控制器發現意外複製時,它會誤判資料區塊的位置並導致整個儲存機制崩潰。

當這種情況發生時,我記得自己還是一個眼清目明的年輕工程師,雖然知道存在著這種原生的缺陷,但卻無法說服負責這項計劃的資深專案工程師。當我告訴他發生的缺陷時,換來的只是一句:「沒事,這不會有問題的。我們現在要做的就是......」。

我想問題就出在專案工程師無法接受同步程式碼可能意外出現在資料區塊的想法。但我一直想不透他為什麼不能接受這種想法。

你可能聽說過「校對錯誤」(proof-reader's error)和「盲點」(blind spot)這些詞語?這就是我所說的這種「致命缺陷」。

那麼,你最近正在進行的計劃如何呢?可能存在某種「盲點」或類似的問題嗎?

編譯:Susan Hong

(參考原文:elay line memory with a fatal flaw,by John Dunn)