DDR SDRAM全稱為Double Data Rate SDRAM,中文名為“雙倍數(shù)據(jù)流SDRAM”。DDR SDRAM在原有的SDRAM的基礎(chǔ)上改進(jìn)而來。也正因?yàn)槿绱,DDR能夠憑借著轉(zhuǎn)產(chǎn)成本優(yōu)勢來打敗昔日的對手RDRAM,成為當(dāng)今的主流。由于SDRAM的結(jié)構(gòu)與操作在上文已有詳細(xì)闡述,所以本文只著重講講DDR的原理和DDR SDRAM相對于傳統(tǒng)SDRAM(又稱SDR SDRAM)的不同。
一、DDR的基本原理
有很多文章都在探討DDR的原理,但似乎也不得要領(lǐng),甚至還帶出一些錯誤的觀點(diǎn)。
這種內(nèi)部存儲單元容量(也可以稱為芯片內(nèi)部總線位寬)=2×芯片位寬(也可稱為芯片I/O總線位寬)的設(shè)計(jì),就是所謂的兩位預(yù)取(2-bit Prefetch),有的公司則貼切的稱之為2-n Prefetch(n代表芯片位寬)。
二、DDR SDRAM與SDRAM的不同
DDR SDRAM與SDRAM的不同主要體現(xiàn)在以下幾個方面。
DDR SDRAM與SDRAM一樣,在開機(jī)時也要進(jìn)行MRS,不過由于操作功能的增多,DDR SDRAM在MRS之前還多了一EMRS階段(Extended Mode Register Set,擴(kuò)展模式寄存器設(shè)置),這個擴(kuò)展模式寄存器控制著DLL的有效/禁止、輸出驅(qū)動強(qiáng)度、QFC 有效/無效等。
由于EMRS與MRS的操作方法與SDRAM的MRS大同小異,在此就不再列出具體的模式表了,有興趣的話可查看相關(guān)的DDR內(nèi)存資料。下面我們就著重說說DDR SDRAM的新設(shè)計(jì)與新功能。
差分時鐘是DDR的一個必要設(shè)計(jì),但CK#的作用,并不能理解為第二個觸發(fā)時鐘(你可以在講述DDR原理時簡單地這么比喻),而是起到觸發(fā)時鐘校準(zhǔn)的作用。由于數(shù)據(jù)是在CK的上下沿觸發(fā),造成傳輸周期縮短了一半,因此必須要保證傳輸周期的穩(wěn)定以確保數(shù)據(jù)的正確傳輸,這就要求CK的上下沿間距要有精確的控制。但因?yàn)闇囟、電阻性能的改變等原因,CK上下沿間距可能發(fā)生變化,此時與其反相的CK#就起到糾正的作用(CK上升快下降慢,CK#則是上升慢下降快)。而由于上下沿觸發(fā)的原因,也使CL=1.5和2.5成為可能,并容易實(shí)現(xiàn)。
2、 數(shù)據(jù)選取脈沖(DQS)
DQS是DDR SDRAM中的重要功能,它的功能主要用來在一個時鐘周期內(nèi)準(zhǔn)確的區(qū)分出每個傳輸周期,并便于接收方準(zhǔn)確接收數(shù)據(jù)。每一顆芯片都有一個DQS信號線,它是雙向的,在寫入時它用來傳送由北橋發(fā)來的DQS信號,讀取時,則由芯片生成DQS向北橋發(fā)送。完全可以說,它就是數(shù)據(jù)的同步信號。
在讀取時,DQS與數(shù)據(jù)信號同時生成(也是在CK與CK#的交叉點(diǎn))。而DDR內(nèi)存中的CL也就是從CAS發(fā)出到DQS生成的間隔,數(shù)據(jù)真正出現(xiàn)在數(shù)據(jù)I/O總線上相對于DQS觸發(fā)的時間間隔被稱為tAC。注意,這與SDRAM中的tAC的不同。實(shí)際上,DQS生成時,芯片內(nèi)部的預(yù)取已經(jīng)完畢了,tAC是指上文結(jié)構(gòu)圖中灰色部分的數(shù)據(jù)輸出時間,由于預(yù)取的原因,實(shí)際的數(shù)據(jù)傳出可能會提前于DQS發(fā)生(數(shù)據(jù)提前于DQS傳出)。由于是并行傳輸,DDR內(nèi)存對tAC也有一定的要求,對于DDR266,tAC的允許范圍是±0.75ns,對于DDR333,則是±0.7ns,有關(guān)它們的時序圖示見前文,其中CL里包含了一段DQS的導(dǎo)入期。
3、 寫入延遲
寫入延遲已經(jīng)不是0了,在發(fā)出寫入命令后,DQS與寫入數(shù)據(jù)要等一段時間才會送達(dá)。這個周期被稱為DQS相對于寫入命令的延遲時間(tDQSS, WRITE Command to the first corresponding rising edge of DQS),對于這個時間大家應(yīng)該很好理解了。
為什么要有這樣的延遲設(shè)計(jì)呢?原因也在于同步,畢竟一個時鐘周期兩次傳送,需要很高的控制精度,它必須要等接收方做好充分的準(zhǔn)備才行。tDQSS是DDR內(nèi)存寫入操作的一個重要參數(shù),太短的話恐怕接受有誤,太長則會造成總線空閑。tDQSS最短不能小于0.75個時鐘周期,最長不能超過1.25個時鐘周期。有人可能會說,如果這樣,DQS不就與芯片內(nèi)的時鐘不同步了嗎?對,正常情況下,tDQSS是一個時鐘周期,但寫入時接受方的時鐘只用來控制命令信號的同步,而數(shù)據(jù)的接受則完全依靠DQS進(jìn)行同步,所以DQS與時鐘不同步也無所謂。不過,tDQSS產(chǎn)生了一個不利影響——讀后寫操作延遲的增加,如果CL=2.5,還要在tDQSS基礎(chǔ)上加入半個時鐘周期,因?yàn)槊疃家贑K的上升沿發(fā)出。
另外,DDR內(nèi)存的數(shù)據(jù)真正寫入由于要經(jīng)過更多步驟的處理,所以寫回時間(tWR)也明顯延長,一般在3個時鐘周期左右,而在DDR-Ⅱ規(guī)范中更是將tWR列為模式寄存器的一項(xiàng),可見它的重要性。
4、 突發(fā)長度與寫入掩碼
在DDR SDRAM中,突發(fā)長度只有2、4、8三種選擇,沒有了隨機(jī)存取的操作(突發(fā)長度為1)和全頁式突發(fā)。這是為什么呢?因?yàn)長-Bank一次就存取兩倍于芯片位寬的數(shù)據(jù),所以芯片至少也要進(jìn)行兩次傳輸才可以,否則內(nèi)部多出來的數(shù)據(jù)怎么處理?而全頁式突發(fā)事實(shí)證明在PC內(nèi)存中是很難用得上的,所以被取消也不希奇。
另外,DDR內(nèi)存的數(shù)據(jù)真正寫入由于要經(jīng)過更多步驟的處理,所以寫回時間(tWR)也明顯延長,一般在3個時鐘周期左右,而在DDR-Ⅱ規(guī)范中更是將tWR列為模式寄存器的一項(xiàng),可見它的重要性。
但是,突發(fā)長度的定義也與SDRAM的不一樣了),它不再指所連續(xù)尋址的存儲單元數(shù)量,而是指連續(xù)的傳輸周期數(shù),每次是一個芯片位寬的數(shù)據(jù)。對于突發(fā)寫入,如果其中有不想存入的數(shù)據(jù),仍可以運(yùn)用DM信號進(jìn)行屏蔽。DM信號和數(shù)據(jù)信號同時發(fā)出,接收方在DQS的上升與下降沿來判斷DM的狀態(tài),如果DM為高電平,那么之前從DQS中部選取的數(shù)據(jù)就被屏蔽了。有人可能會覺得,DM是輸入信號,意味著芯片不能發(fā)出DM信號給北橋作為屏蔽讀取數(shù)據(jù)的參考。其實(shí),該讀哪個數(shù)據(jù)也是由北橋芯片決定的,所以芯片也無需參與北橋的工作,哪個數(shù)據(jù)是有用的就留給北橋自己去選吧。
5、 延遲鎖定回路(DLL)
DDR SDRAM對時鐘的精確性有著很高的要求,而DDR SDRAM有兩個時鐘,一個是外部的總線時鐘,一個是內(nèi)部的工作時鐘,在理論上DDR SDRAM這兩個時鐘應(yīng)該是同步的,但由于種種原因,如溫度、電壓波動而產(chǎn)生延遲使兩者很難同步,更何況時鐘頻率本身也有不穩(wěn)定的情況(SDRAM也內(nèi)部時鐘,不過因?yàn)樗墓ぷ?傳輸頻率較低,所以內(nèi)外同步問題并不突出)。DDR SDRAM的tAC就是因?yàn)閮?nèi)部時鐘與外部時鐘有偏差而引起的,它很可能造成因數(shù)據(jù)不同步而產(chǎn)生錯誤的惡果。實(shí)際上,不同步就是一種正/負(fù)延遲,如果延遲不可避免,那么若是設(shè)定一個延遲值,如一個時鐘周期,那么內(nèi)外時鐘的上升與下降沿還是同步的。鑒于外部時鐘周期也不會絕對統(tǒng)一,所以需要根據(jù)外部時鐘動態(tài)修正內(nèi)部時鐘的延遲來實(shí)現(xiàn)與外部時鐘的同步,這就是DLL的任務(wù)。
DLL不同于主板上的PLL,它不涉及頻率與電壓轉(zhuǎn)換,而是生成一個延遲量給內(nèi)部時鐘。目前DLL有兩種實(shí)現(xiàn)方法,一個是時鐘頻率測量法(CFM,Clock Frequency Measurement),一個是時鐘比較法(CC,Clock Comparator)。CFM是測量外部時鐘的頻率周期,然后以此周期為延遲值控制內(nèi)部時鐘,這樣內(nèi)外時鐘正好就相差了一個時鐘周期,從而實(shí)現(xiàn)同步。DLL就這樣反復(fù)測量反復(fù)控制延遲值,使內(nèi)部時鐘與外部時鐘保持同步。
CC的方法則是比較內(nèi)外部時鐘的長短,如果內(nèi)部時鐘周期短了,就將所少的延遲加到下一個內(nèi)部時鐘周期里,然后再與外部時鐘做比較,若是內(nèi)部時鐘周期長了,就將多出的延遲從下一個內(nèi)部時鐘中刨除,如此往復(fù),最終使內(nèi)外時鐘同步。
CFM與CC各有優(yōu)缺點(diǎn),CFM的校正速度快,僅用兩個時鐘周期,但容易受到噪音干擾,并且如果測量失誤,則內(nèi)部的延遲就永遠(yuǎn)錯下去了。CC的優(yōu)點(diǎn)則是更穩(wěn)定可靠,如果比較失敗,延遲受影響的只是一個數(shù)據(jù)(而且不會太嚴(yán)重),不會涉及到后面的延遲修正,但它的修正時間要比CFM長。DLL功能在DDR SDRAM中可以被禁止,但僅限于除錯與*估操作,正常工作狀態(tài)是自動有效的。
來源:維庫開發(fā)網(wǎng)