靜態(tài)隨機訪問存儲器(SRAM)
靜態(tài)隨機訪問存儲器(Static Random-Access Memory)是隨機訪問存儲器的一種。
所謂的“靜態(tài)”,是指這種存儲器只要保持通電,里面儲存的數(shù)據(jù)就可以恒常保持。相對之下,動態(tài)隨機存取存儲器(DRAM芯片)里面所儲存的數(shù)據(jù)就需要周期性地更新。當電力供應停止時,SRAM儲存的數(shù)據(jù)還是會消失(被稱為volatile memory),這與在斷電后還能儲存資料的ROM或閃存是不同的。SRAM由存儲矩陣、地址譯碼器和讀/寫控制電路組成,容量的擴展有兩個方面:位數(shù)的擴展用芯片的并聯(lián),字數(shù)的擴展可用外加譯碼器控制芯片的片選輸入端。SRAM中的每一bit儲存在由4個場效應管(M1, M2, M3, M4)構成兩個交叉耦合的反相器中。另外兩個場效應管(M5, M6)是儲存基本單元到用于讀寫的位線(Bit Line)的控制開關。
除了6管的SRAM,其他SRAM還有8管、10管甚至每個位元使用更多的晶體管的實現(xiàn)。這可用于實現(xiàn)多端口(port)的讀寫訪問,如顯存或者寄存器堆的多口SRAM電路的實現(xiàn)。一般說來,每個基本單元用的晶體管數(shù)量越少,其占用面積就越小。由于硅芯片(silicon wafer)的生產(chǎn)成本是相對固定的,因此SRAM基本單元的面積越小,在硅芯片上就可以制造更多的位元存儲,每位元存儲的成本就越低。內(nèi)存基本單元使用少于6個晶體管是可能的,如3管甚至單管,但單管儲存單元是DRAM,不是SRAM。
SRAM功耗取決于它的訪問頻率。如果用高頻率訪問SRAM,其功耗比得上DRAM。有的SRAM在全帶寬時功耗達到幾個瓦特量級。另一方面,SRAM如果用于溫和的時鐘頻率的微處理器,其功耗將非常小,在空閑狀態(tài)時功耗可以忽略不計—幾個微瓦特級別。SRAM比較常見的應用是作為微控制器的RAM或者cache(32bytes到128kb)。
SRAM結構圖
corecells array:存儲單元陣列
decode:行列地址譯碼器
Sense Amplifier:靈敏放大器
conntrol circuit:控制電路
FFIO:緩沖/驅(qū)動電路
為什么要將存儲單元陣列排成矩陣形式?
在SRAM 中,排成矩陣形式的存儲單元陣列的周圍是譯碼器和與外部信號的接口電路。存儲單元陣列通常採用正方形或矩陣的形式,以降低整個芯片面積并有利于數(shù)據(jù)的存取。以一個存儲容量為4K位的SRAM為例,共需12條地址線來保證每個存儲單元都能被選中(212 =-4096)。假設存儲單元陣列被排列成僅僅包括一列的長條形,則須要一個12/4K位的譯碼器。但假設排列成包括64行和64列的正方形,這時則僅僅需一個6/64位的行譯碼器和一個6/64位的列譯碼器。行、列譯碼器可分別排列在存儲單元陣列的兩邊,64行和64列共同擁有4096個交叉點。每個點就相應一個存儲位。
因此,將存儲單元排列成正方形比排列成一列的長條形要大大地降低整個芯片地面積。存儲單元排列成長條形除了形狀神秘和面積大以外,另一個缺點,那就是排在列的上部的存儲單元與數(shù)據(jù)輸入/輸出端的連線就會變得非常長,特別是對于容量比較大得存儲器來說。情況就更為嚴重,而連線的延遲至少是與它的長度成線性關系。連線越長,線上的延遲就越大。所以就會導致讀寫速度的降低和不同存儲單元連線延遲的不一致性,這些都是在設計中須要避免的。
SRAM基本單元結構
SRAM的存儲原理
從RAM的存儲原理講起
RAM基本的作用就是存儲代碼和數(shù)據(jù)供CPU在須要的時候調(diào)用??墒沁@些數(shù)據(jù)并非像用袋子盛米那么簡單。更像是 圖書館中用有格子的書架存放書籍一樣。不但要放進去還要可以在須要的時候準確的調(diào)用出來。盡管都是書可是每本書是不同的。
對于RAM等存儲器來說也是一樣的,盡管存儲的都是代表0和1的代碼,可是不同的組合就是不同的數(shù)據(jù)。讓我們又一次回到書和書架上來,假設有一個書架上有10行和10列格子(每行和每列都有0-9的編號),有100本書要存放在里面,那么我們使用一個行的編號+一個列的編號就能確定某一本書的位置。假設已知這本書的編號87,那么我們首先鎖定第8行。然后找到第7列就能準確的找到這本書了。
在RAM存儲器中也是利用了相似的原理。
如今讓我們回到RAM存儲器上,對于RAM存儲器而言數(shù)據(jù)總線是用來傳入數(shù)據(jù)或者傳出數(shù)據(jù)的。
由于存儲器中的存儲空間是假設前面提到的存放圖書的書架一樣通過一定的規(guī)則定義的,所以我們能夠通過這個規(guī)則來把數(shù)據(jù)存放到存儲器上相應的位置。而進行這樣的定位的工作就要依靠地址總線來實現(xiàn)了。
對于CPU來說。RAM就象是一條長長的有非常多空格的細線。每一個空格都有一個唯一的地址與之相相應。
假設CPU想要從RAM中調(diào)用數(shù)據(jù),它首先須要給地址總線發(fā)送地址數(shù)據(jù)定位要存取的數(shù)據(jù),然后等待若干個時鐘周期之后,數(shù)據(jù)總線就會把傳輸數(shù)據(jù)給CPU。
以下的示意圖能夠幫助我們非常好的理解這個過程。
上圖中的小圓點代表RAM中的存儲空間,每個都有一個唯一的地址線同它相連。
當?shù)刂方獯a器接收到地址總線送來的地址數(shù)據(jù)之后。它會依據(jù)這個數(shù)據(jù)定位CPU想要調(diào)用的數(shù)據(jù)所在的位置,然后數(shù)據(jù)總線就會把當中的數(shù)據(jù)傳送到CPU。
上面所列舉的樣例中CPU在一行數(shù)據(jù)中每次僅僅是存取一個字節(jié)的數(shù)據(jù)??墒窃诂F(xiàn)實世界中是不同的。通常CPU每次須要調(diào)用32bit或者是64bit的數(shù)據(jù)(這是依據(jù)不同計算機系統(tǒng)的數(shù)據(jù)總線的位寬所決定的)。假設數(shù)據(jù)總線是64bit的話,CPU就會在一個時間中存取8個字節(jié)的數(shù)據(jù)。
從“線”到“矩陣”
假設RAM對于CPU來說不過一條“線”的話。還不能體現(xiàn)實際的執(zhí)行情況。由于假設實際情況真的是這種話,在實際制造芯片的時候,會有非常多實際的困難。特別是在須要設計大容量的RAM的時候。
所以。一種更好的可以減少成本的方法是讓存儲信息的“空格”排列為非常多行--每一個“空格”相應一個bit存儲的位置。這樣。假設要存儲1024bits(2^10)數(shù)據(jù),那么你只要使用32x32(2^5*2^5=2^10)的矩陣就行達到這個目的了。非常明顯。一個32x32的矩陣比一個1024bit的行設備更緊湊。實現(xiàn)起來也更加easy。請看下圖:
知道了RAM的基本結構是什么樣子的。我們就以下談談當存儲字節(jié)的過程是如何的:上面的示意圖顯示的也不過最簡單狀態(tài)下的情況,也就是當內(nèi)存條上只唯獨一個RAM芯片的情況。對于X86處理器。它通過地址總線發(fā)出一個具有22位二進制數(shù)字的地址編碼--當中11位是行地址,另外11位是列地址,這是通過RAM地址接口進行分離的。行地址解碼器(row decoder)將會首先確定行地址,然后列地址解碼器(column decoder)將會確定列地址,這樣就能確定唯一的存儲數(shù)據(jù)的位置,然后該數(shù)據(jù)就會通過RAM數(shù)據(jù)接口將數(shù)據(jù)傳到數(shù)據(jù)總線。另外,須要注意的是,RAM內(nèi)部存儲信息的矩陣并非一個正方形的,也就是行和列的數(shù)目不是同樣的--行的數(shù)目比列的數(shù)目少(DRAM)。
SRAM的存儲原理
以下的示意圖粗略的概括了一個主要的SRAM芯片是怎樣工作的。SRAM是“static RAM(靜態(tài)隨機存儲器)”的簡稱,之所以這樣命名是由于當數(shù)據(jù)被存入當中后不會消失(同DRAM動態(tài)隨機存儲器是不同,DRAM必須在一定的時間內(nèi)不停的刷新才干保持當中存儲的數(shù)據(jù))。
一個SRAM單元通常由4-6僅僅晶體管組成,當這個SRAM單元被賦予0或者1的狀態(tài)之后,它會保持這個狀態(tài)直到下次被賦予新的狀態(tài)或者斷電之后才會更改或者消失。
SRAM的速度相對照較快。并且比較省電??墒谴鎯?bit的信息須要4-6僅僅晶體管制造成本太高了(DRAM僅僅要1僅僅晶體管就能夠?qū)崿F(xiàn))。
一個SRAM單元——4-6僅僅晶體管——存儲1bit的信息
SRAM的讀取與存儲操作流程
從Dout引腳讀取1bit數(shù)據(jù)須要下面的步驟:
1)通過地址總線把要讀取的bit的地址傳送到對應的讀取地址引腳(這個時候/WE引腳應該沒有激活,所以SRAM知道它不應該運行寫入操作)。
2)激活/CS選擇該SRAM芯片。
3)激活/OE引腳讓SRAM知道是讀取操作。
第三步之后,要讀取的數(shù)據(jù)就會從DOut引腳傳輸?shù)綌?shù)據(jù)總線。
怎么過程很的簡單吧?相同。寫入1bit數(shù)據(jù)的過程也是很的簡單的。
從Dout引腳存儲1bit數(shù)據(jù)須要下面的步驟:
1)通過地址總線確定要寫入信息的位置(確定/OE引腳沒有被激活)。
2)通過數(shù)據(jù)總線將要寫入的傳輸數(shù)據(jù)到Dout引腳。
3)激活/CS引腳選擇SRAM芯片。
4)激活/WE引腳通知SRAM知道要進行寫入操作。
經(jīng)過上面的四個步驟之后,須要寫入的數(shù)據(jù)就已經(jīng)放在了須要寫入的地方。
動態(tài)隨機訪問存儲器(DRAM)
動態(tài)隨機訪問存儲器(Dynamic Random Access Memory)是一種半導體存儲器,主要的作用原理是利用電容內(nèi)存儲電荷的多寡來代表一個二進制比特(bit)是1還是0。
由于在現(xiàn)實中電容會有漏電的現(xiàn)象,導致電位差不足而使記憶消失,因此除非電容經(jīng)常周期性地充電,否則無法確保記憶長存。由于這種需要定時刷新的特性,因此被稱為“動態(tài)”存儲器。
相對來說,“靜態(tài)”存儲器(SRAM)只要存入數(shù)據(jù)后,縱使不刷新也不會丟失記憶。與SRAM相比,DRAM的優(yōu)勢在于結構簡單——每一個比特的數(shù)據(jù)都只需一個電容跟一個晶體管來處理。DRAM通常以一個電容和一個晶體管為一個單元排成二維矩陣,圖2所示是一個4×4的矩陣,現(xiàn)代的DRAM通常長和寬都在幾千個。相比之下,在SRAM上一個比特通常需要六個晶體管。正因此緣故,DRAM擁有非常高的密度,單位體積的容量較高,因此成本較低。DRAM也有缺點,DRAM也有訪問速度較慢,耗電量較大的缺點。與大部分的隨機存取存儲器(RAM)一樣,由于存在DRAM中的數(shù)據(jù)會在電力切斷以后很快消失,因此它屬于一種易失性存儲器(volatile memory)設備。
SRAM的基本單元電路是由6個MOS管構成,而DRAM的基本單元電路是由1個MOS管構成,若存儲器有4000個存儲單元,則SRAM需要24000個MOS管,而DRAM則需要4000個MOS管,由此得出SRAM的芯片引腳自然就多,功耗大,價格貴,速度快,因為MOS管多,散熱大,所以集成度低。因為SRAM的基本單元電路的存儲原理是觸發(fā)器,只要不掉電,就很穩(wěn)定,所以就不需要刷新,而DRAM的基本單元電路的存儲原理是電容,電容會漏電,要保持原狀態(tài),就需要每隔一段時間刷新。
這個時間通常分為刷新周期。常用的刷新方法有以下三種:
(1)集中刷新:在一個刷新周期內(nèi),利用一段固定的時間,依次對存儲器的所有行逐一再生,在此期間停止對存儲器的讀寫操作,這段時間成為“死時間”,又叫訪存的“死區(qū)”。顯然這種方法可以讓讀寫操作不受刷新工作的影響,但是在死區(qū)不能訪問存儲器,CPU只能干等著。
(2)分散刷新:把對每一行的刷新分散到各個工作周期中去。比較生動地解釋就是,原來我的工作只有存取,現(xiàn)在我的工作多了一個,就是在存取完之后順便再“打掃”一行。這樣,一個存儲器的系統(tǒng)工作周期分為兩部分,前半部分有用正常讀、寫或保持,后半部分用于刷新某一行。這種方法不存在死區(qū),但是增加了系統(tǒng)的存取周期,如果原來存取周期只有0.5us,現(xiàn)在變成了1us,增加的0.5us要刷新一行。
(3)異步刷新:前兩種方法的結合,它可以縮短死時間,又充分利用最大刷新間隔為2ms的特點。做法是將刷新周期除以行數(shù),得到每兩次刷新之間的時間間隔t,邏輯電路每過t就產(chǎn)生一次刷新請求。這樣就避免了使CPU等待過長時間,還減少了刷新次數(shù),提高了工作效率。
為什么DRAM需要不斷的刷新?
DRAM的數(shù)據(jù)實際上是存在電容里的。而電容放久了,內(nèi)部的電荷就會越來越少,對外就形成不了電位的變化。而且當對DRAM進行讀操作的時候需要將電容與外界形成回路,通過檢查是否有電荷流進或流出來判斷該bit是1還是0。所以無論怎樣,在讀操作中都破壞了原來的數(shù)據(jù)。所以在讀操作結束后需要將數(shù)據(jù)寫回DRAM中。在整個讀或者寫操作的周期中,計算機都會進行DRAM的刷新,通常是刷新的周期是4ms-64ms。
DRAM基本單元結構
DRAM的結構
數(shù)據(jù)SRAM需要4-6個晶體管但是DRAM 僅僅需要1個晶體管,那么這樣同樣容量的SRAM 的體積比DRAM大至少4倍。這樣就意味著你沒有足夠空間安放同樣數(shù)量的引腳(因為針腳并沒有因此減少4倍)。當然為了安裝同樣數(shù)量的針腳,也可以把芯片的體積加大,但是這樣就提高芯片的生產(chǎn)成本和功耗,所以減少針腳數(shù)目也是必要的,對于現(xiàn)在的大容量DRAM 芯片,多路尋址技術已經(jīng)是必不可少的了。
當然多路尋址技術也使得讀寫的過程更加復雜了,這樣在設計的時候不僅僅DRAM 芯片更加復雜了,DRAM 接口也要更加復雜,在我們介紹DRAM 讀寫過程之前,請大家看一張DRAM 芯片內(nèi)部結構示意圖:
在上面的示意圖中,你可以看到在DRAM結構中相對于SRAM多了兩個部分:由/RAS(Row Address Strobe:行地址脈沖選通器)引腳控制的行地址門閂線路(Row Address Latch)和由/CAS(Column Address Strobe:列地址脈沖選通器)引腳控制的列地址門閂線路(ColumnAddress Latch)。