小服務員給弄來的這套漁具相當有檔次。
用具一應俱全:釣竿、水兜、魚簍、小笊籬、魚餌……
居然還有個小折疊凳。
江寒謝過小服務員,拿著這些東西,來到中央魚塘處。
在岸邊選了個沒人的地方,架好魚竿,就開始閉目養神。
當然,其實是進入了虛擬空間。
閑著也是閑著,不如做點事情。
上次做的算數邏輯單元,還有幾個地方,必須完善一下。
比如,其中的加法器部分,當時并沒有考慮執行效率的問題。
當進位從低位向高位,逐一傳遞時,可能會產生很高的延遲。
江寒通過看書,找到了一種解決方案。
這種被稱為“進位預測(carrylook-ahead)”的技術,通過特殊設計的邏輯電路,能有效地緩解進位延遲問題。
江寒按照資料中的講解,將原本的ALU改造了一下。
測試后,效果還算令人滿意。
附帶一提,這個ALU并沒有實現乘除法和浮點運算。
并不是不需要,而是如果一切都用硬件來實現,電路會過于復雜。
ALU是和操作系統搭配工作的,一個計算機系統能做多少事情,由二者共同決定。
在設計ALU時,硬件上需要實現多少種功能和操作指令,本質上是個性價比問題。
如果為了性能,應該盡可能用硬件來實現所有的算數運算和邏輯運算。
但這樣做,成本太高昂了。
江寒權衡再三后,決定現階段只實現基本的算數和邏輯,剩下的部分交給操作系統,用軟件的方式解決。
接下來,江寒打算實現一個存儲系統。
計算機不僅要能做計算,還應該能根據需要,存儲、讀取數據。
計算機中的數據,都是以二進制來存儲的。
其中比較特別的,是機器指令代碼。
其實,在馮諾依曼體系中,指令也被看做一種數據,特殊的、可執行的數據。
這也就是存儲程序的概念……
計算機中的存儲單元,無論是寄存器,還是內部存儲器,通常都是由時序電路組成的。
時序電路的實現,其實并不算特別復雜,本質上就是個周期性電信號的處理。
但如果考慮到同步、時鐘、反饋等一系列問題,就稍微有點麻煩了。
江寒照舊將大任務分解成小模快,,然后從最基本的地方入手。
首先,要實現一個“觸發器”。
如果說ALU的基本部件是“與非門”,那么時序單元的基本部件,就是“觸發器”。
工程實踐中,“觸發器”有多種設計方案。
江寒選用的,是最常用的,也是比較簡單的“D觸發器”(DataFlip-Flop),簡稱DFF。
此類“觸發器”通常包括4個“與非門”,并提供1個輸入管腳,一個輸出管腳,通過“反饋回路”來連接基本的邏輯門。
大多數計算機系統里,都是采用振蕩器來實現時鐘信號。
用連續的交變信號序列,來表示時間流逝。
所謂交變,就是電信號從高到低,在從低到高,反復循環。
用數字來表示,就是0-1-0-1-0-1……
每兩個波峰之間的間隔,稱之為1個“時鐘周期”。
現代個人電子計算機的時鐘頻率,通常高達每秒鐘幾十、幾百甚至幾千兆赫!
計算機系統通過時序信號,來整體協調各個部件的運行。
“觸發器”根據主時鐘信號的連續交變,將前一個時鐘周期的輸入,當做當前時鐘周期的輸出。
這個過程可以用out(t)=in(t-1)來描述。