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