學(xué)習(xí)DDR有一段時(shí)間了,期間看了好多的資料(部分公司的培訓(xùn)資料、幾十篇的博文,Micron的Datasheet,JESD79規(guī)范等)。但是有一個(gè)問(wèn)題,想了好久(很多資料都沒(méi)有說(shuō)明白),至今才算搞明白,所以寫(xiě)一篇文章和大家分享一下。
如題,接下來(lái)要討論的主要是關(guān)于Prefetch和Burst相關(guān)的內(nèi)容。
1、Prefetch介紹
首先,簡(jiǎn)單介紹一下Prefetch技術(shù)。所謂prefetch,就是預(yù)加載,這是DDR時(shí)代提出的技術(shù)。在SDR中,并沒(méi)有這一技術(shù),所以其每一個(gè)cell的存儲(chǔ)容量等于DQ的寬度(芯片數(shù)據(jù)IO位寬)?!娟P(guān)于什么是cell(存儲(chǔ)單元,可以去看一下,我之前的博文:http://blog.chinaaet.com/justlxy/p/5100051913)】
進(jìn)入DDR時(shí)代之后,就有了prefetch技術(shù),DDR是兩位預(yù)?。?-bit Prefetch),有的公司則貼切的稱之為2-n Prefetch(n代表芯片位寬)。DDR2是四位預(yù)?。?-bit Prefetch),DDR3和DDR4都是八位預(yù)?。?-bit Prefetch)。而8-bit Prefetch可以使得內(nèi)核時(shí)鐘是DDR時(shí)鐘的四分之一,這也是Prefetch的根本意義所在。
補(bǔ)充說(shuō)明:芯片位寬的另一種說(shuō)法是配置模式(Configuration),在DDR3時(shí)代,一般有x4,x8,x16。
下面以DDR3為例,下圖是個(gè)簡(jiǎn)單 一個(gè)簡(jiǎn)單Read預(yù)取示意圖,Write可以看做是 個(gè)逆向過(guò)程。
當(dāng)DDR3 為x8 Configuration時(shí),一個(gè)Cell的容量為8x8bits,即8個(gè)字節(jié)。換一句話說(shuō),在指定bank、row地址和col地址之后,可以往該地址內(nèi)寫(xiě)入(或讀?。? Bytes。
2、如何計(jì)算DDR3 SDRAM的容量
以Mircon的某型號(hào)DDR3 SDRAM為例:
以圖中紅色部分的內(nèi)容作為分析案例(8個(gè)bank,x8的Configuration):
計(jì)算方式一(錯(cuò)誤):
64K*8*1K*8(Row Addressing * Bank Addressing * Column Addressing * x8 Configuration)= 4Gb(512 Megx8)。
大部分材料給出的都是這種錯(cuò)誤的計(jì)算方法,誤導(dǎo)了很多的初學(xué)者。這種計(jì)算方法咋一看好像是對(duì)的。但是,仔細(xì)推敲一下,便可以發(fā)現(xiàn),按照計(jì)算方式一的邏輯,則認(rèn)為每一個(gè)Cell的容量是1bit*8(x8 Configuration),即8bit。這與我們?cè)诘谝徊糠炙懻摰慕Y(jié)果(一個(gè)Cell的容量為64bits,x8 Configuration下)不符。
當(dāng)然,從某種角度來(lái)說(shuō),計(jì)算方式一也是正確的,因?yàn)榉蛛x出的Column Address的位數(shù)實(shí)際上是和prefetch對(duì)應(yīng)的。比如DDR3 8-bit Prefetch對(duì)3bits的Column Address,DDR2 4-bit Prefetch對(duì)應(yīng)的是2bits的Column Address。只是如果直接按照計(jì)算方式一來(lái)計(jì)算的話,對(duì)于初次接觸DDR的人來(lái)說(shuō),理解起來(lái)存在一定的困難,這也是我寫(xiě)這一篇博文的原因。
下面給出正確的計(jì)算方式,并說(shuō)明原因。
計(jì)算方式二(正確):
64K*8*(1K/8)*8*8(Row Addressing * Bank Addressing * (Column Addressing / 8) * x8 Configuration * 8-bit Prefetch)= 4Gb(512 Megx8)。
很多人都會(huì)問(wèn),為什么要把列地址尋址(Column Addressing)除以8呢?似乎計(jì)算方式二看起來(lái)更加不合理。接下來(lái),我們先來(lái)回顧一下DDR3 SDRAM的結(jié)構(gòu)框圖(還是以Mircon的某型號(hào)為例):
大圖可能看的不太清楚,下面來(lái)幾個(gè)特寫(xiě):
沒(méi)錯(cuò)!你沒(méi)有看錯(cuò)!10bit的Column Address的尋址能力只有128?。?!剛好差了8倍(這就是我們?cè)谟?jì)算方式二中將Column Addressing除以8的原因)!
那么問(wèn)題又來(lái)了,為什么Column Address的尋址能力只有128呢?莫急,請(qǐng)繼續(xù)看下圖:
在上圖中,可以清晰地發(fā)現(xiàn),10bits的Column Address只有7bits用于列地址譯碼!列地址0,1,2并沒(méi)有用?。?!
那么,問(wèn)題又來(lái)了!……
列地址0,1,2,這3bits被用于什么功能了?或者是Mircon的設(shè)計(jì)者腦殘,故意浪費(fèi)了這三個(gè)bits?顯然不是。
在JESD79-3規(guī)范中有如下的這個(gè)表格:
可以發(fā)現(xiàn),Column Address的A2,A1,A0三位被用于Burst Order功能,并且A3也被用于Burst Type功能。由于一般情況,我們采用的都是順序讀寫(xiě)模式(即{A2,A1,A0}={0,0,0}),所以此時(shí)的A3的取值并無(wú)直接影響。
那么,問(wèn)題又來(lái)了!……
Burst又是什么鬼呢?且看第三部分。
3、DDR中的Burst Length
Burst Lengths,簡(jiǎn)稱BL,指突發(fā)長(zhǎng)度,突發(fā)是指在同一行中相鄰的存儲(chǔ)單元連續(xù)進(jìn)行數(shù)據(jù)傳輸?shù)姆绞?,連續(xù)傳輸所涉及到存儲(chǔ)單元(列)的數(shù)量就是突發(fā)長(zhǎng)度(SDRAM),在DDR SDRAM中指連續(xù)傳輸?shù)闹芷跀?shù)。上一部分講到的Burst Type和Burst Order實(shí)際上就是關(guān)于Burst Length的讀寫(xiě)順序的配置。
在DDR3 SDRAM時(shí)代,內(nèi)部配置采用了8n prefetch(預(yù)取)來(lái)實(shí)現(xiàn)高速讀寫(xiě).這也導(dǎo)致了DDR3的Burst Length一般都是8。當(dāng)然也有Bursth ength為4的設(shè)置(BC4),是指另外4筆數(shù)據(jù)是不被傳輸?shù)幕蛘弑徽J(rèn)為無(wú)效而已。
在DDR2時(shí)代,內(nèi)部配置采用的是4n prefetch,Burst length有4和8兩種,對(duì)于BL=8的讀寫(xiě)操作,會(huì)出現(xiàn)兩次4n Prefetch的動(dòng)作。
上圖是JESD79-3規(guī)范中給出的DDR3 SDRAM的Command Truth Table??梢钥吹剑x取和寫(xiě)入都有三種基本模式(Fixed BL8 or BC4,BC4 on the fly,BL8 on the fly)。這一部分的內(nèi)容,在我之前的博文中有所提及,此處不再詳細(xì)介紹。
-
存儲(chǔ)
+關(guān)注
關(guān)注
13文章
4228瀏覽量
85580 -
DDR
+關(guān)注
關(guān)注
11文章
705瀏覽量
65170 -
Burst
+關(guān)注
關(guān)注
1文章
6瀏覽量
10113
原文標(biāo)題:【博文連載】DDR掃盲——關(guān)于prefetch與Burst的深入討論
文章出處:【微信號(hào):ChinaAET,微信公眾號(hào):電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論