DRAM的三種刷新方式


定時刷新的原因:由於存儲單元的訪問是隨機的,有可能某些存儲單元長期得不到訪問,不進行存儲器的讀/寫操作,其存儲單元內的原信息將會慢慢消失,為此,必須采用定時刷新的方法,它規定在一定的時間內,對動態RAM的全部基本單元電路必作一次刷新,一般取2ms,即刷新周期(再生周期)。

刷新與行地址有關。刷新時一行行進行的,必須在刷新周期內,由專用的刷新電路來完成對基本單元電路的逐行刷新,才能保證DRAM內的信息不丟失。通常有三種方式刷新:集中刷新、分散刷新和異步刷新。

假定:

①刷新周期為2ms      
②存取周期為0.5μs,即刷新1行的時間為0.5μs(刷新時間是等於存取周期的。因為刷新的過程與一次存取相同,只是沒有在總線上輸入輸出。存取周期>真正用於存取的時間,因為存取周期內、存取操作結束后仍然需要一些時間來更改狀態。對於SRAM也是這樣,對於DRAM更是如此)。
③對128×128的矩陣的存儲芯片進行刷新,按存儲單元(1B/單元)分為128行128列,即128×128×1B/單元=2^14個單元×1B/單元 = 16KB內存。 (如果是64×64的矩陣,則為64×64×1B/單元=2^12個單元×1B/單元 = 4KB內存)


1.集中刷新
集中刷新是在規定的一個刷新周期內,對全部存儲單元集中一段時間逐行進行刷新,此刻必須停止讀/寫操作。

用0.5μs*128=64μs的時間對128行進行逐行刷新,由於這64μs的時間不能進行讀/寫操作,故稱為“死時間”或訪存“死區”。

由於存取周期為0.5μs,刷新周期為2ms,即4000個存取周期。

補充一點:為什么刷新與存取不能並行?
因為內存就一套地址譯碼和片選裝置,刷新與存取有相似的過程,它要選中一行——這期間片選線、地址線、地址譯碼器全被占用着。同理,刷新操作之間也不能並行——意味着一次只能刷一行。

 

 

 

 

 

2.分散刷新
分散刷新是指對每行存儲單元的刷新分散到每個存取周期內完成。其中,把機器的存取周期tc分成兩段,前半段tM用來讀/寫或維持信息,后半段tR用來刷新。

即在每個存取操作后綁定一個刷新操作。延長了存取周期,這樣存取周期就成了0.5μs + 0.5μs =1μs。但是由於與存取操作綁定,就不需要專門給出一段時間來刷新了。這樣,每有128個讀取操作,就會把0-127行全部刷新一遍。故每隔128μs 就可將存儲芯片全部刷新一遍,即刷新周期是1μs×128=128μs遠短於2ms,而且不存在停止讀/寫的死時間,但是存取周期長了,整個系統速度降低了。(分散刷新的刷新周期128μs ,其實不需要這么頻繁,會導致浪費)

 

 

 

 

3.異步刷新
既可以縮短“死時間”,又充分利用最大刷新間隔為2ms的特點,具體操作為:在2ms內對128行各刷新一遍

即每隔15.6μs刷新一行(2000μs/128≈15.6μs),而每行刷新的時間仍為0.5μs。這樣,刷新一行只能停止一個存取周期,但對每行來說,刷新間隔時間仍為2ms,而死時間為0.5μs。(相對每一段來說,是集中式刷新,相對整體來說,是分散式刷新)

如果將DRAM的刷新安排在CPU對指令的譯碼階段,由於這個階段CPU不訪問存儲器,所以這種方案既克服了分散刷新需獨占0.5μs用於刷新,使存取周期加長且降低系統速度的缺點,又不會出現集中刷新的訪存“死區”問題,從根本上上提高了整機的工作效率。

 

 

內存刷新說明:

DRAM 制造商的一些資料中顯示,內存至少要每64ms刷新一次,這也就意味着內存有1%的時間要用來刷新。內存的自動刷新對於內存廠商來說不是一個難題,而關鍵 在於當對內存單元進行讀取操作時保持內存的內容不變,所以DRAM單元每次讀取操作之后都要進行刷新:執行一次回寫操作,因為讀取操作也會破壞內存中的電 荷,也就是說對於內存中存儲的數據是具有破壞性的。所以內存不但要每64ms刷新一次,每次讀操作之后也要刷新一次。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM