深入解析內存原理:DRAM的基本原理

FROM:https://www.cnblogs.com/lzhu/p/7071488.html

 

前面我們知道了在一個簡單的SRAM 芯片中進行讀寫操作的步驟了,然後我們來了解一下普通的DRAM 芯片的工作情況。DRAM 相對於SRAM 來說更加複雜,因爲在DRAM存儲數據的過程中需要對於存儲的信息不停的刷新,這也是它們之間最大的不同。

1. 多路尋址技術
最早、最簡單也是最重要的一款DRAM 芯片是Intel 在1979 年發佈的2188,這款芯片是16Kx1 DRAM 18 線DIP 封裝。“16K x 1”的部分意思告訴我們這款芯片可以存儲16384個bit 數據,在同一個時期可以同時進行1bit 的讀取或者寫入操作。


上面的示意圖可以看出,DRAM 和SRAM 之間有着明顯的不同。首先你會看到地址引腳從14 根變爲7 根,那麼這顆16K DRAM 是如何完成同16K SRAM 一樣的工作的呢?答案很簡單,DRAM 通過DRAM 接口把地址一分爲二,然後利用兩個連續的時鐘週期傳輸地址數據。這樣就達到了使用一半的針腳實現同SRAM 同樣的功能的目的,這種技術被稱爲多路技術(multiplexing)。
那麼爲什麼要減少地址引腳呢?這樣做有什麼好處呢?前面我們曾經介紹過,存儲1bit的
數據SRAM 需要4-6 個晶體管但是DRAM 僅僅需要1 個晶體管,那麼這樣同樣容量的SRAM 的體積比DRAM 大至少4 倍。這樣就意味着你沒有足夠空間安放同樣數量的引腳(因爲針腳並沒有因此減少4 倍)。當然爲了安裝同樣數量的針腳,也可以把芯片的體積加大,但是這樣就提高芯片的生產成本和功耗,所以減少針腳數目也是必要的,對於現在的大容量DRAM 芯片,多路尋址技術已經是必不可少的了。
當然多路尋址技術也使得讀寫的過程更加複雜了,這樣在設計的時候不僅僅DRAM 芯片更加複雜了,DRAM 接口也要更加複雜,在我們介紹DRAM 讀寫過程之前,請大家看一張DRAM 芯片內部結構示意圖:


在上面的示意圖中,你可以看到在DRAM 結構中相對於SRAM 多了兩個部分:由/RAS(Row Address Strobe:行地址脈衝選通器)引腳控制的行地址門閂線路(Row Address Latch)和由/CAS(Column Address Strobe:列地址脈衝選通器)引腳控制的列地址門閂線路(ColumnAddress Latch)。
2. DRAM的讀取過程和各種延時

   
1)通過地址總線將行地址傳輸到地址引腳
2)/RAS 引腳被激活,這樣行地址被放入到行地址選通電路中
3) 行地址解碼器( Row Address Decoder)選擇正確的行然後送到傳感放大器( sense amps)
4)/WE 引腳被確定不被激活,所以DRAM 知道它不會進行寫入操作
5)列地址通過地址總線傳輸到地址引腳
6)/CAS 引腳被激活,這樣列地址被放入到列地址選通電路中
7)/CAS 引腳同樣還具有/OE 引腳的功能,所以這個時候Dout 引腳知道需要向外輸出數據。
8) /RAS 和/CAS 都不被激活,這樣就可以進行下一個週期的數據操作了。
其實DRAM 的寫入的過程和讀取過程是基本一樣的,所以如果你真的理解了上面的過程就能知道寫入過程了,所以這裏就不贅述了。(只要把第4 步改爲/WE 引腳被激活就可以了)。
在內存的讀取過程中,需要我們考慮的有兩個主要類型的延遲。第一類的是連續的DRAM 讀操作之間的延遲。內存不可能在進行完一個讀取操作之後就立刻進行第兩個讀取操作,因爲DRAM 的讀取操作包括電容器的充電和放電另外還包括把信號傳送出去的時間,所以在兩個讀取操作中間至少留出足夠的時間讓內存進行這些方面的操作。
在連續的兩次讀取操作之間,第一種類型的延遲包括 /RAS 和 /CAS 預充電延遲時間。在 /RAS 被激活並且失活之後,你必須給它足夠的時間爲下次激活做好準備。下圖可以幫助你更好了解這個過程。


CAS 預充電的過程是一樣的,你只要把上圖的“RAS”換成“CAS”就可以了。
從前面我們介紹的DRAM 讀取過程的8 個步驟中,我們可以瞭解到 /RAS 和 /CAS 預充電過程是依次進行的,所以我們在一定的時間裏只能進行有限次數的讀取操作。特別是在第8 個步驟中,當一次讀取操作週期結束之後,我們必須讓 /RAS 和/CAS 引腳都失活。實際上,在你讓它們失活之後,必須等待預充電過程結束之後才能開始下一個操作(或者還是讀取操作、或者是寫入操作、或者是刷新操作)。
當然在兩次讀取操作之間的預充電時間不是限制DRAM 速度的唯一因素。第二種延遲類型是叫做內部讀取延遲( inside-the-read)。這種延遲同兩次讀取操作之間的延遲非常的相似,但不是由停止 /RAS 和/CAS 激活而產生的,而是由於要激活 /RAS 和/CAS 而產生的。比如,行存取時間(tRAC)--它就是在你激活/RAS 和數據最終出現在數據總線之間的時間。同樣的列存取時間 (tCAC)就是激活 /CAS 引腳和數據最終出現在數據總線上之間的時間。下面的示意圖可以幫助你更好的理解這兩種類型的延遲:


上面的圖僅僅是一個示意圖,下面的時序圖可以幫助你瞭解不同的延遲時間發生的順序:


現在讓我們花一點時間結合前面介紹的讀取過程來研究一下上面的這張示意圖:
1) 首先看上圖第一行,在預充電期間行地址通過地址總線傳輸到地址引腳,這個期間/RAS 未被激活,在第三行Address BUS 中我們看到數據在這個期間正在行地址總線上,這個期間/CAS 也處於預充電狀態;
2) 依然看上圖第一行,/RAS 引腳被激活(RAS Active,灰色的部分),行地址就會被放入行地址選通電路(第三行Address Bus 中所示),這個期間/CAS 依然處於預充電狀態;在/RAS 被激活的同時,tRAC(行存取時間)開始--如上圖最後一行Data Bus 所示。
3) 在/RAS 被激活以後,行地址解碼器( Row Address Decoder)選擇正確的行然後送到傳感放大器( sense amps)
4) 在這個期間/WE 引腳一直處於不激活的狀態,所以 DRAM 知道它們不是進行寫操作--這個狀態將一直持續到開始執行寫操作才結束
5) 列地址通過地址總線傳輸到地址引腳
6) /CAS 引腳被激活(如上圖第三行),列地址就可以被送到列地址選通器( Column Address Latch) ,這個時候tCAC(列地址訪問時間)開始計時
7) 在/CAS 處於激活狀態期間的末尾,/RAS 停止激活--也就大約在這個時間附近找到的數據被傳送到數據總線進行數據傳送(如圖data Bus),在數據總線進行數據傳輸的過程中,地址總線是處於空閒狀態的,它並不接受新的數據--在數據開始創送的同時tRAC 和tCAC 都結束了。
8)就在數據在數據總線上傳輸期間,/CAS 引腳也被停止激活--就是得到一個高電平,從而開始進入到預充電期。/RAS 和/CAS 會同時處於預充電期,直到下次/RAS 被激活進入到下一個讀取操作的週期。
相信經過這樣的說明大家應該瞭解DRAM 的讀取過程了。 在這個基礎上我們就可以開始認識SIMM 或者DIMM 的潛伏期( latency)問題了。首先我們來繼續澄清一下幾個概念。
DRAM 潛伏期類型分爲兩種:訪問時間( access time)和週期時間(cycle time)。其中訪問時間(access time)同前面我們談論的第二種類型的延遲有關,也就是同讀取週期中的延遲時間;而週期時間(cycle time)同我們前面談論的第一種類型的延遲有關,也就是受到兩個讀取週期之間的延遲時間影響。當然潛伏期的時間很短,都是用納秒來衡量的。
對於異步 DRAM 芯片,訪問時間就是從行地址到達行地址引腳的時間起截至到數據被傳輸到數據引腳的時間段。這樣,訪問時間爲60 納秒的 DIMM 意味着當我們下達讀取數據的命令後,地址數據被送到地址引腳之後要等待60 納秒才能達到數據輸出引腳。週期時間,從字面上理解就是從兩個連續讀取操作之間的時間間隔。如何儘可能的減小DRAM 的週期時間和訪問時間是我們這篇文章後半部分將要詳細的討論的問題。
我們平時說到DRAM 內存是多少多少納秒,這裏指的一般是訪問時間(我們也會對於爲什麼採取這樣的標稱方法進行解釋)。我們都知道訪問時間越短,意味着內存工作頻率會越高。當然內存工作頻率越高,意味着可以適應外頻更高的處理器。如果處理器的時鐘週期較短,而DRAM 的潛伏期較長,處理器在很多時間裏都是等到DRAM 傳送數據。因此當DRAM一定時,比如時潛伏期爲70 納秒,那麼一顆 1GHz PIII 等待數據的時間將會比一顆 400MHzPII 處理器長。當然出現這樣的現象是每個用戶都不願意看到的,當使用的內存速度越慢或者說你的處理器相對越快,你的處理器就會由更多的性能都被這樣的等待浪費了。
3. DRAM的刷新
我們已經提到過,DRAM 同SRAM 最大的不同就是不能比較長久的保持數據,這項特性使得這種存儲介質對於我們幾乎沒有任何的作用。但是DRAM 設計師利用刷新的技術使得DRAM 成爲了現在對於我們最有用處的存儲介質。這裏我僅僅簡要的提及一下DRAM 的刷新技術,因爲在後面介紹FP、EDO 等類型的內存的時候,你會發現它們具體的實現過程都是不同的。
DRAM 內僅僅能保持其內存儲的電荷非常短暫的時間,所以它需要在其內的電荷消失之前就進行刷新直到下次寫入數據或者計算機斷電才停止。每次讀寫操作都能刷新DRAM內的電荷,所以DRAM 就被設計爲有規律的讀取DRAM 內的內容。這樣做有下面幾個好處。
第一, 僅僅使用/RAS 激活每一行就可以達到全部刷新的目的;
第二, DRAM 控制器來控制刷新,這樣可以防止刷新操作干擾有規律的讀寫操作。
在文章的開始,曾經說過一般行的數目比列的數據少。現在我可以告訴爲什麼會這樣了,因爲行越少用戶刷新的時間就會越少。
4. 快頁模式DRAM
FPM DRAM( Fast Page Mode DRAM),也就是我們常說的快頁內存。之所以稱之爲快頁內存,因爲它以4 字節突發模式傳送數據,這4 個字節來自同一列或者說同一頁。
如何理解這種讀取方式呢?FPM DRAM 如果要突發4 個字節的數據,它依然需要依次的讀取每一個字節的數據,比如它要讀取第一個字節的數據,這個時候的情況同前面介紹的DRAM 讀取方式是一樣的(我們依然通過讀取下面的FPM 讀取時序圖來了解它的工作方式):


1. 首先行地址被傳送到行地址引腳,在/RAS 引腳被激活之前,/RAS 處於預充電狀態,/CAS 也處於預充電狀態,當然/WE 此時依然是高電平,FPM 至少知道自己不會進行寫操作。
2. /RAS 引腳被賦予低電平而被激活,行地址被送到行地址選通器,然後選擇正確的行送到傳感放大器,就在/RAS 引腳被激活的同時,tRAC 開始計時。
3. /CAS 一直處於預充電狀態,直到列地址被傳送到列地址引腳並且 /CAS 引腳得到一個低電平而被激活(tCRC 時間開始計時),然後下面的事情我們也應該很清楚了,列地址被送到列地址選通器,然後需要讀取的數據位置被鎖定,這個時候Dout 引腳被激活,第一組數據就被傳送到數據總線上。
4. 對於原來介紹的DRAM,這個時候一個讀取週期就結束了,不過對於FPM 則不同,在傳送第一組數據期間,/CAS 失活(/RAS 依然保持着激活狀態)並且進入預充電狀態,等待第二組列地址被傳送到列地址引腳,然後進行第二組數據的傳輸,如此週而復始直至4 組數據全部找到並且傳輸完畢。
5. 當第四組數據開始傳送的時候,/RAS 和/CAS 相繼失活進入到預充電狀態,這樣FPM的一個完整的讀取週期方告結束。FPM 之所以能夠實現這樣的傳輸模式,就是因爲所需要讀取的4 個字節的行地址是相同的但是列地址不同,所以它們不必爲了得到一個相同的行地址而去做重複的工作。
6. 這樣的工作模式顯然相對於普通的DRAM 模式節省了很多的時間,特別是節省了3次/RAS 預充電的時間和3 個tRAC 時間,從而進一步提高的效率。
我想你一定看到過諸如6-3-3-3 這樣的內存標註方法,其中的6 表示從最初狀態讀取第一組數據需要6 個時鐘週期,而讀取另外三個數據僅僅需要3 個時鐘週期就能達到目的了。
需要特別指出的是,在上面的時序圖中,我們並沒有標註出 FPM DRAM 進行第二個、第三個、第四個數據輸出的前進行新的列地址選通的時間,但是從上面的示意圖中我們可以看到Col.2 同Data1 和D2 之間都沒有重疊,所以這三個數據的輸出是進行完畢一個再進行的另一個,因此再上一次數據傳輸完畢到下一次列地址傳輸之間還有一點小小的延遲。請看下圖:


5. 擴展數據輸出DRAM
EDO DRAM( Extended Data Out DRAM:擴展數據輸出DRAM)在介紹FPM 的讀取過程的最後着重提到了 FPM DRAM 是在上一次的數據讀取完畢纔會進行下一個數據的讀取,但是對於EDO DRAM 卻是完全不一樣的。 EDO DRAM 可以在輸出數據的同時進行下一個列地址選通,我們依然結合下面的EDO 讀取時序圖來了解EDO DRAM 讀取數據的過程:


1. /RAS 在結束上一次的讀取操作之後,進入預充電狀態,當接到讀取數據的請求之後,行地址首先通過地址總線傳輸到地址引腳,在這個期間/CAS 依然處於預充電狀態。
2. /RAS 引腳被激活,行地址開始經過行地址選通電路和行地址解碼器進行行地址的選擇,就在這個同時tRAC 週期開始,因爲是讀取操作/WE 引腳一直沒有被激活,所以內存知道自己進行的是讀取操作而不是寫操作。
3. 在/CAS 依然進行預充電的過程中,列地址被送到列地址選通電路選擇出來合適的地址,當/CAS 被激活的同時tCAC 週期開始,當tCAC 結束的時候,需要讀取的數據將會通過數據引腳傳輸到數據總線。
4. 從開始輸出第一組數據的時候,我們就可以體會到EDO 同FPM 之間的區別了:在tCAC 週期結束之前,/CAS 失活並且開始了預充電,第二組列地址傳輸和選通也隨即開始,第一數據還沒有輸出完畢之前,下一組數據的tCAC 週期就開始了--顯然這樣進一步的節省了時間。就在第二組數據輸出前,/CAS 再次失活爲第三組數據傳輸列地址做起了準備…
5. 如此的設計使得EDO 內存的性能比起FPM 的性能提高了大約20-40%
6. 正是因爲EDO 的速度比FPM 快,所以它可以運行在更高的總線頻率上。所以很多的EDO RAM 可以運行在66MHz 的頻率上,並且一般標註爲5-2-2-2。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章