1. 程式人生 > >5、論存儲器組織

5、論存儲器組織

都是 images 技術分享 和數 10個 ble 數據 電路圖 共享

先前我們學習了鎖存器,8位鎖存器圖如下:

技術分享

簡化圖如下:

技術分享

假如現在我們只有一個燈泡,我們想用一個輸入和一個輸出來存儲這8位輸入、輸出8位。

我們就需要增加3個開關,因為3個二進制可以表達8個數,正好對應了我們的8位。

要實現的效果圖如下:

技術分享

在標註這是什麽裝置?的裝置中,其實是一個“8-1選擇器”,其簡化圖如下:

技術分享

我們所要達到的真值表的目的是:

輸入 輸出
S2 S1 S0 Q
0 0 0 D0
0 0 1 D1
0 1 0 D2
0 1 1 D3
1 0 0 D4
1 0 1 D5
1 1 0 D6
1 1 1 D7

8-1選擇器主要有:三個反向器、八個4端口輸入與門、一個8端口輸入或門,系統的組織結構如下圖:

技術分享

可以分別把S0 S1 S2對應一個值帶進去看看工作原理是什麽。下面是電路結構圖:

技術分享

現在我們已經走完一半了,就差輸入端了。

技術分享

其實解決問題的思路有很大的相似,無非是我們想利用開關和數據輸入來控制寫入端,哪個是可寫的。

而圖中的這款器件,我們叫做3-8譯碼器。

3-8譯碼器輸出的端口共有8個,在任何時刻,譯碼器只會有一個鎖存器的輸出位1,其余均為0.每一個輸出端的結果都是由S0、S1、S2這三個信號的排列組合決定的。而數據的輸出和輸入一致,如下圖所示:

技術分享

譯碼器邏輯表如下:

輸入 輸出
S2 S1 S0 O7 O6 O5 O4 O3 O2 O1 O0
0 0 0 0 0 0 0 0 0 0 Data
0 0 1 0 0 0 0 0 0 Data 0
0 1 0 0 0 0 0 0 Data 0 0
0 1 1 0 0 0 0 Data 0 0 0
1 0 0 0 0 0 Data 0 0 0 0
1 0 1 0 0 Data 0 0 0 0 0
1 1 0 0 Data 0 0 0 0 0 0
1 1 1 Data 0 0 0 0 0 0 0

將8個鎖存器加入到電路就形成了完整的系統:

技術分享

譯碼器和選擇器具有相同的選擇信號,上圖中,這三個信號一起被稱為地址端口。

這種配置下的鎖存器在有的資料中也被稱為讀/寫存儲器(read/write memory),但更普遍的叫法是隨機訪問存儲器(Random Access Memory),或RAM。可以認為我們討論的這種存儲器是可存儲8個獨立比特的RAM,它的簡化結構圖如下:

技術分享

之所以被稱為隨機訪問存儲器,是因為讀寫操作很自由,我們只需要改變地址及相關的輸入,就可以從8個鎖存器中讀出或寫入需要的數據。相比於其他的順序型存儲器,這種存儲器在使用時有一定的限制,如果想要讀取地址為101的數據,必須先把地址為100的數據讀取出來。

將RAM進行特殊的配置可形成RAM陣列(Array),我們所討論的這種RAM陣列以8X1的方式組織起來的。陣列以1比特作為存儲單位,共存儲8個單位的數據。所以這個RAM陣列中能存儲的位數等於8與1的乘積。

RAM陣列組合形式多種多樣。比如我們可以通過共享地址的方式可以把兩個8X1的RAM陣列連接起來,如下圖:

技術分享

我們把這兩個8X1的RAM陣列的地址和輸出分別都看成一個整體,這樣就得到了一個8X2的RAM的RAM陣列,如下圖:

技術分享

這個RAM陣列可存儲的二進制數依然是8個,但是每個數位寬為2位。

我們還可以把兩個8X1的RAM陣列看做是兩個鎖存器,使用一個2-1選擇器和一個1-2譯碼器就可以把它們按照單個鎖存器連接方式進行集成,電路圖如下:

技術分享

“選擇”端之所以連接到譯碼器和選擇器,主要作用是在兩個8X1 RAM陣列中選擇一個,本質上它扮演了第4根地址線的角色。因此這種結構實質上是一種16X1的RAM陣列,如下圖:

技術分享

上圖中的RAM陣列存儲容量為16個單位,每個單位占1位。

RAM陣列的存儲容量與其地址輸入端的數量有直接的聯系。在沒有地址輸入端的情況下(只有1位鎖存器和8位鎖存器的情況下),只能存儲1個單位的數據;當存在1個地址輸入端時,可以存儲兩個單位的數據;在有兩個地址輸入端時,可以存儲4個單位的數據;有3個地址輸入端時,可以存儲8個單位的數據;有4個地址輸入端時,可以存儲16個單位的數據。我們可以把它們之間的關系歸納成如下等式:

RAM陣列的存儲容量=2地址輸入端個數

那為何不搭建一個大規模的RAm陣列呢?就像下面這樣:

技術分享

上面的RAM陣列可存儲8192個比特的信息,每8個比特為一組,共分為1024個組。因為2的10次方恰好時1024,所以地址端口共有10個輸入端口。電路還包括8位的數據輸入端和8位數據輸出端。(1KB=1024B)

而更多的時候,我們用到的地址數如下:

技術分享

因為16正好可以用兩個字節進行尋址(64K)

5、論存儲器組織