對于計算機我們肯定都很熟悉,它的內部有ALU進行算術和邏輯運算,可是他們運算得出的結果怎么辦?扔掉嗎?那這個計算就沒有任何意義了。
因此,那些計算出來的結果就需要存起來,于是就有了計算機內存。
當打游戲或者編輯某個文檔且進入尾聲的時候,電源被切斷的慘痛經歷大家應該都經歷過,再次打開電腦的時候,上次的數據都沒了,這就是隨機存取存儲器,簡稱RAM,還有一種就是電源關閉了數據還在,這就是持久存儲。
上面的有沒有理解不重要,現在我們從簡單的只能存1個bit電路開始,來了解一下內存的工作原理吧!
先看OR門,將輸出傳回輸入,看看發生了什么?
首先,將兩個輸入A、B均設為0,“0 OR 0”是0,輸出0;如果將A變成1“1 OR 0”為1,輸出1,輸出回到B,B變為1,后面再怎么改變A的值,輸出仍然為1,這個電路可以用來記錄1。
再來看看AND門
將A和B都設為1,“1 AND 1”的輸出是1;如果將A變為0,輸出0,輸出回到B,B變為0,后面再怎么改變A的值,輸出仍然為0,這個電路記錄0。
現在有了記錄1和0的電路,為了做出有用的存儲(memory),我們將兩個電路合起來,變成了“AND-OR鎖存器”
它有兩個輸入,“設置”( SET )和“復位” ( RESET ),如果“設置”和“復位”都是0,電路的輸出就是最后放入的內容,它存住了1 bit的信息,這就是存儲!
注:之所以叫“鎖存”,是因為它“鎖定”一個特定值并保持狀態不變。數據放入叫“寫入” ,數據輸出叫“讀取”。
用兩個輸入SET和RESET有點麻煩,為了更方便,我們只用一個輸入線,將它設為0或1來存儲值,再加一根“允許輸入線”來“啟用”(enable)內存,啟用時允許寫入,未啟用時“鎖定”,再與一些額外邏輯門就可以組成一個叫“門鎖”(Gated Latch)的電路。
剛剛我們只存了1bit,沒什么大用,但如果我們并排放8個鎖存器,就可以存8位信息,這個8bit數字組的鎖存器叫“寄存器”,寄存器能存多少個Bit叫“位寬”。
早期電腦用8位寄存器,然后是16位,32位,如今大多計算機都是64位寬的寄存器。
在寫入寄存器之前,要啟用里面所有鎖存器,我們可以用一根線連接所有“允許輸入線”,并設為1,然后用8條數據線發數據,最后將“允許寫入線”設回0,8bit的值就存好了。
對于bit少的,這樣并排擺放鎖存器可以,可是對于64位寄存器要64根數據線,64根連到輸出端,這怎么辦?
幸運的是,只要1根線啟用所有鎖存器,這樣加起來也要129根線;那存256個bit,要513根線,存放的數據越多,需要的線就越多,那有什么好的解決方法嗎?
解決方法就是用矩陣!
在矩陣中,我們將鎖存器做成網格,那么存256位只需要16x16的鎖存器。
讓我們看看矩陣鎖存器是如何工作的吧?
如果想打開某個鎖存器,就打開這個鎖存器交叉處的“允許寫入線”,這種行/列配置方法,需要一根共享的“允許寫入線”連接所有鎖存器,為了使鎖存器變為“允許寫入”狀態,行線、列線和“允許寫入線”都必須為1,而且每次只能有1個鎖存器啟用并鎖存數據,這樣就可以用一根“數據線”連接所有鎖存器來傳數據。
這樣256位的存儲,只需要35根線——1根“數據線”,1根“允許寫入線”,1根“允許讀取線”和16行16列的用于選擇鎖存器的線。
為了將地址轉成行和列,我們需要一個叫“多路復用器”的部件,它的工作方式是:當輸入一個4 bit數字時,它會把那根線連到相應的輸出線,如果輸入0000,它會選擇第一列;如果輸入0001,則選擇下一列,依此類推。
一個多路復用器處理行(row),另一個多路復用器處理列(column),那么把256位內存當成一個組件來看,它需要一個8bit地址:4bit代表哪一列,4 bit 代表哪一行,還需要“允許寫入線”和“允許讀取線”,最后,還需要一條數據線,用于讀/寫數據。
今天,我們用鎖存器做了一塊SRAM(靜態隨機存取存儲器),還有其他類型的RAM,如DRAM,閃存和NVRAM,它們在功能上與SRAM相似,比如用不同的邏輯門,電容器,電荷陷阱或憶阻器等,但從根本上說,所有這些技術都是用矩陣層層嵌套存儲大量信息的,有沒有覺得很不可思議呢?
責任編輯:pj
-
寄存器
+關注
關注
31文章
5355瀏覽量
120507 -
計算機
+關注
關注
19文章
7508瀏覽量
88068 -
鎖存器
+關注
關注
8文章
906瀏覽量
41532 -
華秋DFM
+關注
關注
20文章
3494瀏覽量
4554
發布評論請先 登錄
相關推薦
評論