DRAM 時序


1. 芯片初始化

可能很多人都想象不到,在 SDRAM 芯片內部還有一個邏輯控制單元,並且有一個模式寄存器為 其提供控制參數。因此,每次開機時 SDRAM 都要先對這個控制邏輯核心進行初始化。有關預充電和刷 新的含義在下文有講述,關鍵的階段就在於模式寄存器(MR,ModeRegister)的設置,簡稱 MRS(MR Set), 這一工作由北橋芯片在 BIOS 的控制下進行,寄存器的信息由地址線來提供。

 

 

 SDRAM 模式寄存器所控制的操作參數:地址線提供不同的 0/1 信號來獲得不同的參數。在設置到 MR 之后,就開始了進入正常的工作狀態;

 

2. 行有效

初始化完成后,要想對一個 L-Bank 中的陣列進行尋址,首先就要確定行(Row),使之處於活動 狀態(Active),然后再確定列。雖然之前要進行片選和 L-Bank 的定址,但它們與行有效可以同時進行。

從圖中可以看出,在 CS#、L-Bank 定址的同時,RAS(Row Address Strobe,行地址選通脈沖) 也處於有效狀態。此時 An 地址線則發送具體的行地址。如圖中是 A0-A11,共有 12 個地址線,由於 是二進制表示法,所以共有 4096 個行(212=4096),A0-A11 的不同數值就確定了具體的行地址。由 於行有效的同時也是相應 L-Bank 有效,所以行有效也可稱為 L -Bank 有效。

 

 

3.列讀寫

行地址確定之后,就要對列地址進行尋址了。但是,地址線仍然是行地址所用的 A0-A11(本例)。 沒錯,在 SDRAM 中,行地址與列地址線是共用的。不過,讀/寫的命令是怎么發出的呢?其實沒有一 個信號是發送讀或寫的明確命令的,而是通過芯片的可寫狀態的控制來達到讀/寫的目的。顯然 WE#信 號就是一個關鍵。WE#無效時,當然就是讀取命令。

 

 上圖是 SDRAM 基本操作命令, 通過各種控制/地址信號的組合來完成(H 代表高電平,L 代表低 電平,X 表示高低電平均沒有影響)。此表中,除了自刷新命令外,所有命令都是默認 CKE 有效。對 於自刷新命令,下文有詳解。 列尋址信號與讀寫命令是同時發出的。雖然地址線與行尋址共用,但 CAS(Column Address Strobe, 列地址選通脈沖)信號則可以區分開行與列尋址的不同,配合 A0-A9,A11(本例)來確定具體的列地 址。

 

 然而,在發送列讀寫命令時必須要與行有效命令有一個間隔,這個間隔被定義為 tRCD,即 RAS to CAS Delay(RAS 至 CAS 延遲),大家也可以理解為行選通周期,這應該是根據芯片存儲陣列電子元件 響應時間(從一種狀態到另一種狀態變化的過程)所制定的延遲。 tRCD 是 SDRAM 的一個重要時序參數,可以通過主板 BIOS 經過北橋芯片進行調整,但不能超過廠 商的預定范圍。廣義的 tRCD 以時鍾周期(tCK,Clock Time)數為單位,比如 tRCD=2,就代表延遲周 期為兩個時鍾周期,具體到確切的時間,則要根據時鍾頻率而定,對於 PC100 SDRAM,tRCD=2,代表 20ns 的延遲,對於 PC133 則為 15ns。

 

 

4. 數據讀出

在選定列地址后,就已經確定了具體的存儲單元,剩下的事情就是數據通過數據 I/O 通道(DQ) 輸出到內存總線上了。 但是在 CAS 發出之后,仍要經過一定的時間才能有數據輸出,從 CAS 與讀取命令發出到第一筆 數據輸出的這段時間,被定義為 CL(CAS Latency,CAS 潛伏期)由於 CL 只在讀取時出現,所以 CL 又被稱為讀取潛伏期(RL,Read Latency)。 CL 的單位與 tRCD 一樣,為時鍾周期數,具體耗時由時鍾頻率決定。不過,CAS 並不是在經過 CL 周期之后才送達存儲單元。實際上 CAS 與 RAS 一樣是瞬間到達的,但 CAS 的響應時間要更快一些。 為什么呢?假設芯片位寬為 n 個 bit,列數為 c,那么一個行地址要選通 n×c 個存儲體,而一個列地 址只需選通 n 個存儲體。但存儲體中晶體管的反應時間仍會造成數據不可能與 CAS 在同一上升沿觸發,肯定要延后至少一個時鍾周期。 由於芯片體積的原因,存儲單元中的電容容量很小,所以信號要經過放大來保證其有效的識別性,這個放大/驅動工作由 S-AMP負責,一個存儲體對應一個 S- AMP 通道。但它要有一個准備時間才 能保證信號的發送強度(事前還要進行電壓比較以進行邏輯電平的判斷),因此從數據 I/O 總線上有 數據輸出之前的一個時鍾上升沿開始,數據即已傳向 S-AMP,也就是說此時數據已經被觸發,經過一 定的驅動時間最終傳向數據 I/O 總線進行輸出,這段時間我們稱之為 tAC (Access Time from CLK, 時鍾觸發后的訪問時間)。tAC 的單位是 ns,對於不同的頻率各有不同的明確規定,但必須要小於一 個時鍾周期,否則會因訪問時過長而使效率降低。比如 PC133 的時鍾周期為 7.5ns,tAC 則是 5.4ns。 需要強調的是,每個數據在讀取時都有 tAC,包括在連續讀取中,只是在進行第一個數據傳輸的同時 就開始了第二個數據的 tAC。

 

 

 CL 的數值不能超出芯片的設計規范,否則會導致內存的不穩定,甚至開不了機(超頻的玩家應 該有體會),而且它也不能在數據讀取前臨時更改。CL 周期在開機初始化過程中的 MRS 階段進行設置, 在 BIOS 中一般都允許用戶對其調整,然后 BIOS 控制北橋芯片在開機時通過 A4-A6 地址線對 MR 中 CL 寄存器的信息進行更改。 不過,從存儲體的結構圖上可以看出,原本邏輯狀態為 1 的電容在讀取操作后,會因放電而變 為邏輯 0。所以,以前的 DRAM 為了在關閉當前行時保證數據的可靠性,要對存儲體中原有的信息進行 重寫,這個任務由數據所經過的刷新放大器來完成,它根據邏輯電平狀態,將數據進行重寫(邏輯 0 時 就不重寫),由於這個操作與數據的輸出是同步進行互不沖突,所以不會產生新的重寫延遲。 后來通過技術的改良,刷新放大器被取消,其功能由 S-AMP 取代,因為在讀取時它會保持數據的 邏輯狀態,起到了一個 Cache 的作用,再次讀取時由它直接發送即可,不用再進行新的尋址輸出,此 時數據重寫操作則可在預充電階段完成。

問題:為什么讀取后,高電平不會消失? 上面這段話為答案;

 

5.數據寫入

數據寫入的操作也是在 tRCD 之后進行,但此時沒有了 CL(記住,CL 只出現在讀取操作中),行 尋址與列尋址的時序圖和上文一樣,只是在列尋址時,WE#為有效狀態。

 

從圖中可見,由於數據信號由控制端發出,輸入時芯片無需做任何調校,只需直接傳到數據輸入 寄存器中,然后再由寫入驅動器進行對存儲電容的充電操作,因此數據可以與 CAS 同時發送,也就是 說寫入延遲為 0。 不過,數據並不是即時地寫入存儲電容,因為選通三極管(就如讀取時一樣)與電容的充電必須 要有一段時間,所以數據的真正寫入需要一定的周期。為了保證數據的可靠寫入,都會留出足夠的寫 入/校正時間(tWR,Write Recovery Time),這個操作也被稱作寫回(Write Back)。tWR 至少占用一 個時鍾周期或再多一點(時鍾頻率越高,tWR 占用周期越多),有關它的影響將在以后進一步講述。

 

6. 突發模式

突發(Burst)是指在同一行中相鄰的存儲單元連續進行數據傳輸的方式,連續傳輸所涉及到存儲單元(列)的數量就是突發長度(Burst Lengths,簡稱 BL)。 在目前,由於內存控制器一次讀/寫 P-Bank 位寬的數據,也就是 8 個字節,但是在現實中小於 8 個字節的數據很少見,所以一般都要經過多個周期進行數據的傳輸。 上文講到的讀/寫操作,都是一次對一個存儲單元進行尋址,如果要連續讀/寫就還要對當前存儲單元的下一個單元進行尋址,也就是要不斷的發送列地址與讀/寫命令(行地址不變,所以不用再對行 尋址)。雖然由於讀/寫延遲相同可以讓數據的傳輸在 I/O 端是連續的,但它占用了大量的內存控制資 源,在數據進行連續傳輸時無法輸入新的命令,效率很低(早期的 FPE/EDO 內存就是以這種方式進行 連續的數據傳輸)。 為此,人們開發了突發傳輸技術,只要指定起始列地址與突發長度,內存就會依次地自動對后面 相應數量的存儲單元進行讀/寫操作而不再需要控制器連續地提供列地址。這樣,除了第一筆數據的傳 輸需要若干個周期(主要是之前的延遲,一般的是 tRCD+CL)外,其后每個數據只需一個周期的即可 獲得。在很多北橋芯片的介紹中都有類似於 X-1-1-1 的字樣,就是指這個意思,其中的 X 代表就代表 第一筆數據所用的周期數。

 

 非突發連續讀取模式:不采用突發傳輸而是依次單獨尋址,此時可等效於 BL=1。雖然可以讓數 據是連續的傳輸,但每次都要發送列地址與命令信息,控制資源占用極大。

 突發連續讀取模式:只要指定起始列地址與突發長度,尋址與數據的讀取自動進行,而只要控制 好兩段突發讀取命令的間隔周期(與 BL 相同)即可做到連續的突發傳輸。 至於 BL 的數值,也是不能隨便設或在數據進行傳輸前臨時決定。在上文講到的初始化過程中的 MRS 階段就要對 BL 進行設置。目前可用的選項是 1、2、4、8、全頁(Full Page),常見的設定是 4 和 8。 順便說一下,BL 能否更改與北橋芯片的設計有很大關系,不是每個北橋都能像調整 CL 那樣來 調整 BL。某些芯片組的 BL 是定死而不可改的,比如 Intel 芯片組的 BL 基本都為 4,所以在相應的 主板 BIOS 中也就不會有 BL 的設置選項。而由於目前的 SDRAM 系統的數據傳輸是以 64bit/周期進行, 所以在一些 BIOS 也把 BL 用 QWord(4 字,即 64bit)來表示。如 4QWord 就是 BL=4。 另外,在 MRS 階段除了要設定 BL 數值之外,還要具體確定讀/寫操作的模式以及突發傳輸的模 式。突發讀/突發寫,表示讀與寫操作都是突發傳輸的,每次讀/ 寫操作持續 BL 所設定的長度,這也 是常規的設定。突發讀/單一寫,表示讀操作是突發傳輸,寫操作則只是一個個單獨進行。 突發傳輸模式代表着突發周期內所涉及到的存儲單元的傳輸順序。順序傳輸是指從起始單元開始 順序讀取。假如 BL=4,起始單元編號是 n,順序就是 n、n+1、n+2、n+3。交錯傳輸就是打亂正常的順 序進行數據傳輸(比如第一個進行傳輸的單元是 n,而第二個進行傳輸的單元是 n+2 而不是 n+1),至 於交錯的規則在 SDRAM 規范中有詳細的定義表,但在這此出於必要性與篇幅的考慮就不列出了。

 

7. 預充電

由於 SDRAM 的尋址具體獨占性,所以在進行完讀寫操作后,如果要對同一 L-Bank 的另一行進行 尋址,就要將原來有效(工作)的行關閉,重新發送行/列地址。L-Bank 關閉現有工作行,准備打開 新行的操作就是預充電(Precharge)。 預充電可以通過命令控制,也可以通過輔助設定讓芯片在每次讀寫操作之后自動進行預充電。實 際上,預充電是一種對工作行中所有存儲體進行數據重寫,並對行地址進行復位,同時釋放 S-AMP(重 新加入比較電壓,一般是電容電壓的 1/2,以幫助判斷讀取數據的邏輯電平,因為 S-AMP 是通過一個 參考電壓與存儲體位線電壓的比較來判斷邏輯值的),以准備新行的工作。 具體而言,就是將 SAMP 中的數據回寫,即使是沒有工作過的存儲體也會因行選通而使存儲電容 受到干擾,所以也需要 S-AMP 進行讀后重寫。此時,電容的電量(或者說其產生的電壓)將是判斷邏 輯狀態的依據(讀取時也需要),為此要設定一個臨界值,一般為電容電量的 1/2,超過它的為邏輯 1, 進行重寫,否則為邏輯 0,不進行重寫(等於放電)。為此,現在基本都將電容的另一端接入一個指定 的電壓(即 1/2 電容電壓),而不是接地,以幫助重寫時的比較與判斷。 現在我們再回過頭看看讀寫操作時的命令時序圖,從中可以發現地址線 A10 控制着是否進行在 讀寫之后當前 L-Bank 自動進行預充電,這就是上文所說的“輔助設定”。而在單獨的預充電命令中, A10 則控制着是對指定的 L-Bank 還是所有的 L-Bank(當有多個 L-Bank 處於有效/活動狀態時)進行 預充電,前者需要提供 L-Bank 的地址,后者只需將 A10 信號置於高電平。 在發出預充電命令之后,要經過一段時間才能允許發送 RAS 行有效命令打開新的工作行,這個 間隔被稱為 tRP(Precharge command Period,預充電有效周期)。和 tRCD、CL 一樣,tRP 的單位也 是時鍾周期數,具體值視時鍾頻率而定。

 

 自動預充電時的開始時間與此圖一樣,只是沒有了單獨的預充電命令,並在發出讀取命令時,A10 地址線要設為高電平(允許自動預充電)。可見控制好預充電啟動時間很重要,它可以在讀取操作結束 后立刻進入新行的尋址,保證運行效率。 誤區:讀寫情況下都要考慮寫回延遲有些文章強調由於寫回操作而使讀/寫操作后都有一定的延 遲,但從本文的介紹中寫可以看出,即使是讀后立即重寫的設計,由於是與數據輸出同步進行,並不 存在延遲。只有在寫操作后進行其他的操作時,才會有這方面的影響。寫操作雖然是 0 延遲進行,但 每筆數據的真正寫入則需要一個足夠的周期來保證,這段時間就是寫回周期(tWR)。所以預充電不能 與寫操作同時進行,必須要在 tWR 之后才能發出預充電命令,以確保數據的可靠寫入,否則重寫的數 據可能是錯的,這就造成了寫回延遲。

 

 上圖為數據寫入時預充電操作時序圖:注意其中的 tWR 參數,由於它的存在,使預充電操作延 后,從而造成寫回延遲.

 

8. 刷新

之所以稱為 DRAM,就是因為它要不斷進行刷新(Refresh)才能保留住數據,因此它是 DRAM 最 重要的操作。刷新操作與預充電中重寫的操作一樣,都是用 S-AMP 先讀再寫。 但為什么有預充電操作還要進行刷新呢?因為預充電是對一個或所有 L-Bank 中的工作行操作, 並且是不定期的,而刷新則是有固定的周期,依次對所有行進行操作,以保留那些久久沒經歷重寫的 存儲體中的數據。但與所有 L-Bank 預充電不同的是,這里的行是指所有 L-Bank 中地址相同的行,而 預充電中各 L-Bank 中的工作行地址並不是一定是相同的。 那么要隔多長時間重復一次刷新呢?目前公認的標准是,存儲體中電容的數據有效保存期上限是 64ms(毫秒,1/1000 秒),也就是說每一行刷新的循環周期是 64ms。這樣刷新速度就是:行數量/64ms。 我們在看內存規格時,經常會看到 4096 Refresh Cycles/64ms 或 8192 RefreshCycles/64ms 的標識, 這里的 4096 與 8192 就代表這個芯片中每個 L-Bank 的行數。刷新命令一次對一行有效,發送間隔也 是隨總行數而變化,4096 行時為 15.625μs(微秒,1/1000 毫秒),8192 行時就為 7.8125μs。 刷新操作分為兩種:自動刷新(Auto Refresh,簡稱 AR)與自刷新(Self Refresh,簡稱 SR)。 不論是何種刷新方式,都不需要外部提供行地址信息,因為這是一個內部的自動操作。 對於 AR, SDRAM 內部有一個行地址生成器(也稱刷新計數器)用來自動的依次生成行地址。由 於刷新是針對一行中的所有存儲體進行,所以無需列尋址,或者說 CAS 在 RAS 之前有效。所以,AR 又 稱 CBR(CAS Before RAS,列提前於行定位)式刷新。 由於刷新涉及到所有 L-Bank,因此在刷新過程中,所有 L-Bank 都停止工作,而每次刷新所占用 的時間為 9 個時鍾周期(PC133 標准),之后就可進入正常的工作狀態,也就是說在這 9 個時鍾期間 內,所有工作指令只能等待而無法執行。64ms 之后則再次對同一行進行刷新,如此周而復始進行循環 刷新。顯然,刷新操作肯定會對 SDRAM 的性能造成影響,但這是沒辦法的事情,也是 DRAM 相對於 SRAM (靜態內存,無需刷新仍能保留數據)取得成本優勢的同時所付出的代價。 SR 則主要用於休眠模式低功耗狀態下的數據保存,這方面最著名的應用就是 STR(Suspend to RAM,休眠掛起於內存)。在發出 AR 命令時,將 CKE 置於無效狀態,就進入了 SR 模式,此時不再依 靠系統時鍾工作,而是根據內部的時鍾進行刷新操作。在 SR 期間除了 CKE 之外的所有外部信號都是 無效的(無需外部提供刷新指令),只有重新使 CKE 有效才能退出自刷新模式並進入正常操作狀態。

 

 

9. 數據掩碼

在講述讀/寫操作時,我們談到了突發長度。如果 BL=4,那么也就是說一次就傳送 4×64bit 的 數據。但是,如果其中的第二筆數據是不需要的,怎么辦?還都傳輸嗎?為了屏蔽不需要的數據,人 們采用了數據掩碼(Data I/O Mask,簡稱 DQM)技術。通過 DQM,內存可以控制 I/O 端口取消哪些輸 出或輸入的數據。

這里需要強調的是,在讀取時,被屏蔽的數據仍然會從存儲體傳出,只是在“掩碼邏輯單元”處 被屏蔽。 DQM 由北橋控制,為了精確屏蔽一個 P-Bank 位寬中的每個字節,每個 DIMM 有 8 個 DQM 信號線, 每個信號針對一個字節。這樣,對於 4bit 位寬芯片,兩個芯片共用一個 DQM 信號線,對於 8bit 位 寬芯片,一個芯片占用一個 DQM 信號,而對於 16bit 位寬芯片,則需要兩個 DQM 引腳。SDRAM 官方 規定,在讀取時 DQM 發出兩個時鍾周期后生效,而在寫入時,DQM 與寫入命令一樣是立即成效。

 

 


免責聲明!

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



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