當前位置: 半夏小說 玄幻奇幻 重生學神有系統 第145章 陳萱的邀請

《重生學神有系統》第145章 陳萱的邀請

小服務員給弄來的這套漁相當有檔次。

一應俱全:釣竿、水兜、魚簍、小笊籬、魚餌……

居然還有個小摺疊凳。

江寒謝過小服務員,拿著這些東西,來到中央魚塘

在岸邊選了個沒人的地方,架好魚竿,就開始閉目養神。

當然,其實是進了虛擬空間。

閒著也是閒著,不如做點事

上次做的算數邏輯單元,還有幾個地方,必須完善一下。

比如,其中的加法部分,當時並沒有考慮執行效率的問題。

當進位從低位向高位,逐一傳遞時,可能會產生很高的延遲。

江寒通過看書,找到了一種解決方案。

這種被稱爲“進位預測(carry look-ahead)”的技,通過特殊設計的邏輯電路,能有效地緩解進位延遲問題。

江寒按照資料中的講解,將原本的ALU改造了一下。

測試後,效果還算令人滿意。

附帶一提,這個ALU並沒有實現乘除法和浮點運算。

並不是不需要,而是如果一切都用件來實現,電路會過於複雜。

ALU是和作系統搭配工作的,一個計算機系統能做多,由二者共同決定。

在設計ALU時,件上需要實現多種功能和作指令,本質上是個價比問題。

如果爲了能,應該儘可能用件來實現所有的算數運算和邏輯運算。

Advertisement

但這樣做,本太高昂了。

江寒權衡再三後,決定現階段只實現基本的算數和邏輯,剩下的部分作系統,用件的方式解決。

接下來,江寒打算實現一個存儲系統。

計算機不僅要能做計算,還應該能據需要,存儲、讀取數據。

щщщ★ тт kǎn★ Сo

計算機中的數據,都是以二進制來存儲的。

其中比較特別的,是機指令代碼。

其實,在馮諾依曼系中,指令也被看做一種數據,特殊的、可執行的數據。

這也就是存儲程序的概念……

計算機中的存儲單元,無論是寄存,還是部存儲,通常都是由時序電路組的。

時序電路的實現,其實並不算特別複雜,本質上就是個週期電信號的理。

但如果考慮到同步、時鐘、反饋等一系列問題,就稍微有點麻煩了。

江寒照舊將大任務分解小模快,,然後從最基本的地方手。

首先,要實現一個“”。

如果說ALU的基本部件是“與非門”,那麼時序單元的基本部件,就是“”。

工程實踐中,“”有多種設計方案。

江寒選用的,是最常用的,也是比較簡單的“D”(Data Flip-Flop),簡稱DFF。

此類“”通常包括4個“與非門”,並提供1個輸管腳,一個輸出管腳,通過“反饋迴路”來連接基本的邏輯門。

Advertisement

大多數計算機系統裡,都是採用振盪來實現時鐘信號。

用連續的變信號序列,來表示時間流逝。

所謂變,就是電信號從高到低,在從低到高,反覆循環。

用數字來表示,就是0-1-0-1-0-1……

每兩個波峰之間的間隔,稱之爲1個“時鐘週期”。

現代個人電子計算機的時鐘頻率,通常高達每秒鐘幾十、幾百甚至幾千兆赫!

計算機系統通過時序信號,來整協調各個部件的運行。

據主時鐘信號的連續變,將前一個時鐘週期的輸,當做當前時鐘週期的輸出。

這個過程可以用out(t)=in(t-1)來描述。

江寒用4個與非門打造出D後,又在其基礎上實現了“二進制存儲單元”。

這是隻能存取、記憶1個二進制位的小裝置。

包括一個輸、一個輸出,和一個負責寫作的load接口。

別看它小,可是構寄存存陣列的基本結構。

據out(t)=in(t-1)的設計需求,D的輸出必須反饋到輸

但簡單的將輸出信號傳送給輸端,肯定是行不通的。

必須通過合理的設計,才能讓其正確工作。

比如加裝一個“多路轉換”,用它的“選擇位”作爲寄存的“加載位”……

D的設計,保證了輸出變化僅發生在兩個時鐘週期之間的切換點上,而不會發生在時鐘週期部。

Advertisement

這樣,即使時序邏輯電路在時鐘週期出現不穩定,也不會影響輸出的準確

只需要保證在下一個時鐘週期開始時,輸出準確無誤的數值就可以了。

這種“離散化”的特,對於保證計算機系統的同步協調十分重要。

比如,要讓ALU計算兩個數A與B的和。

假設A所在的RAM寄存,距離ALU很近,而B所在的RAM寄存,距離ALU較遠。

由於理條件的限制,比如電阻、干擾、信號噪聲或者其他隨機因素,A、B信號也許無法同步到達ALU。

爲了不讓運算結果出錯,就要保證:在一個時鐘週期,ALU輸出的結果,能到達最遠的RAM寄存

這樣才能將互相獨立的一系列件,同步一個協調、統一的整系統。

江寒耗費了一點腦細胞後,終於將“二進制單元”搞定。

接下來,就可以大展拳腳了。

只要做出一個二進制單元,就能很容易地做出n位寄存

只要將n個一模一樣的二進制單元,有機地組織在一起,就能構建出n個“比特門”。

然後將此寄存的load信號,賦予每個“比特門”,就可以批量存取數據了。

通常用8個“比特門”,來實現一個字節的數據存取。

若干個字節組織在一起,又可以構任意位寬的寄存

比如江寒打算實現的,就是一個由4個字節組的32位寄存

每個寄存存儲的位寬,也“字長”,若干個寄存組織在一起,就形了“寄存組”。

江寒設計的寄存組,由8個32位寄存

接下來,是“存儲塊”,也就是俗稱存的RAM(隨機讀寫存儲)。

這種存在設計上,要求不管存儲單元的理位置在哪裡,ALU都能花費基本相同的時間,直接訪問。

設計的時候,先給RAM的每個記憶單元,分配一個地址,然後構建一個由N個寄存的陣列。

再構建一個邏輯門,使其通過地址訪問到對應的記憶單元……

典型的RAM接三種輸值:數據、地址和加載位。

RAM設計起來不容易,但實現起來意外的簡單。

江寒先做出了一個字節的RAM,然後將其與空白圖紙一起賣掉。

得到圖紙後,就利用自搭建功能,批量生產出大量“字節存儲單元”。

接下來,就可以組裝出任意規模的存儲陣列了。

江寒組裝了一個8個字節的存儲陣列,稱之爲RAM8,然後將其再次轉換圖紙。

接下來,製作8組RAM8陣列,設計配套的電路,將其組合在一起,就了RAM64。

重複上述過程,就打造出了RAM512、RAM4K、RAM16K、RAM64K……

“我去,這麼貴?”

前面還好,從4kb存開始,自構建功能的附加收費,就超過了元件本的價格了。

但爲了節省時間,消滅錯誤率,還是得使用這個自構建功能。

浪費點積分也是值得的。

反正積分來的容易,萬一不夠了,再多做幾臺無線電發也就是了……

猜你喜歡

分享

複製如下連結,分享給好友、附近的人、Facebook的朋友吧!
複製鏈接

問題反饋

反饋類型
正在閱讀: