chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

DDR SDRAM工作原理簡(jiǎn)介

sakobpqhz6 ? 來(lái)源:黑客與攝影師 ? 2023-03-07 11:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1, 簡(jiǎn)介

DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory,雙數(shù)據(jù)率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器)通常被我們稱(chēng)為DDR,其中的“同步”是指內(nèi)存工作需要同步時(shí)鐘,內(nèi)部命令的發(fā)送與數(shù)據(jù)傳輸都以它為基準(zhǔn)。DDR是一種掉電就丟失數(shù)據(jù)的存儲(chǔ)器件,并且需要定時(shí)的刷新來(lái)保持?jǐn)?shù)據(jù)的完整性。

DDR是我們嵌入式系統(tǒng)使用比較多的硬件,但是平時(shí)我們?cè)谧鲕浖_(kāi)發(fā)或者優(yōu)化的時(shí)候,對(duì)它的組成及工作原理了解卻很少。主要原因是對(duì)于DDR的軟件開(kāi)發(fā)主要是配置參數(shù),而這些參數(shù)由芯片廠(chǎng)商已經(jīng)提供好了。其實(shí),要想對(duì)系統(tǒng)做深度的功耗優(yōu)化和性能優(yōu)化,是很有必要深挖DDR的組成與工作原理的細(xì)節(jié)。

現(xiàn)在嵌入式系統(tǒng)設(shè)計(jì)或者計(jì)算機(jī)設(shè)計(jì),考慮到存儲(chǔ)性能、存儲(chǔ)容量、成本等因素,通常采用存儲(chǔ)金字塔式的設(shè)計(jì),比如CPU后面緊接著寄存器,寄存器后面跟著cache,cache后面緊接著DDR,然后DDR后面跟著SSD、EMMC等非易失。通過(guò)利用程序的時(shí)間及空間局部性原理,可以在盡可能少的影響性能的前提下,增加存儲(chǔ)容量,降低存儲(chǔ)成本。

隨著CPU 發(fā)展,內(nèi)存也發(fā)生了巨大的變革,DDR從誕生到現(xiàn)在已經(jīng)經(jīng)歷了多代,分別是第一代SDR SDRAM(Single Data Rate SDRAM,同步型動(dòng)態(tài)存儲(chǔ)器),第二代的DDR SDRAM,第三代的DDR2 SDRAM,第四代的DDR3 SDRAM,現(xiàn)在已經(jīng)發(fā)展到DDR5 SDRAM。為了實(shí)現(xiàn)容量增加和傳輸效能增加,規(guī)范的工作電壓越來(lái)越低,DDR容量越來(lái)越大,IO的速度越來(lái)越高。

f14b75c0-bc22-11ed-bfe3-dac502259ad0.png

歷代ddr特性對(duì)比

Voltage(VDDQ):存儲(chǔ)芯片的輸出緩沖供電電壓。

Device Width:顆粒位寬,常見(jiàn)為4/8/16bit。一個(gè)Memory Array中由行地址和列地址的交叉選中一個(gè)位,若2個(gè)Array疊加在一起,就同時(shí)選中了2個(gè)Bit,位寬是X2。若4個(gè)Array疊加到一起,就能夠同時(shí)選中4個(gè)Bit,位寬則是X4。也就是說(shuō),對(duì)一個(gè)X4位寬的DDR 顆粒,如果給出行地址和列地址,就會(huì)同時(shí)輸出4個(gè)Bit到DQ(數(shù)據(jù)輸入、輸出:雙向數(shù)據(jù)總線(xiàn))數(shù)據(jù)線(xiàn)上。

Die Density:顆粒密度,也就是容量,隨著DDR迭代,容量越來(lái)越大。

Data rates:MT/s指每秒傳輸多少個(gè)數(shù)據(jù)(Mega-transfer per second),和時(shí)鐘頻率是兩個(gè)不同的概念。DDR(dual data rate)是雙邊沿傳輸數(shù)據(jù)。因此MT/s是IO時(shí)鐘頻率的兩倍。

Prefetch:在一個(gè)時(shí)鐘周期中,同時(shí)將相鄰列地址的數(shù)據(jù)一起取出來(lái),并行取出DRAM數(shù)據(jù),再由列地址0/1/2(DDR1使用列0,DDR2使用列0和列1,DDR3/DDR4使用列0,1和2)選擇輸出。2n/4n/8n。這里的數(shù)字指的就是并行取出的位數(shù)。這里的n,就是DQ位寬,即上面的device width(x4/x8/x16)。所以DDR3 16bit SDRAM內(nèi)存顆粒,16bit指的是位寬,其一次讀寫(xiě)訪(fǎng)問(wèn)的數(shù)據(jù)量是8*16=128bit

Bank:DDR4以前是沒(méi)有Bank Group的,所以該值就表示整個(gè)顆粒中Bank數(shù)量。但是在DDR4和DDR5中,就表示每個(gè)Bank Group中Bank的數(shù)量,整個(gè)顆粒Bank數(shù)量 = Bank Group * Bank。

Bank Group:Bank分組數(shù)量,該特性只存在于DDR4和DDR5中。

Burst Length:指突發(fā)長(zhǎng)度,突發(fā)是指在同一行中相鄰的存儲(chǔ)單元連續(xù)進(jìn)行數(shù)據(jù)傳輸?shù)姆绞剑B續(xù)傳輸所涉及到存儲(chǔ)單元(列)的數(shù)量就是突發(fā)長(zhǎng)度,在DDR SDRAM中指連續(xù)傳輸?shù)闹芷跀?shù)。一般對(duì)應(yīng)預(yù)取bit數(shù)目。

Core frequency:顆粒核心頻率,即內(nèi)存cell陣列的工作頻率,它讀取數(shù)據(jù)到IO Buffer的頻率。它是內(nèi)存頻率的基礎(chǔ),其他頻率都是在該頻率的基礎(chǔ)上得出來(lái)的。

IO clk Frequency:內(nèi)存的數(shù)據(jù)傳輸速率。它和內(nèi)存的prefetch有關(guān)。對(duì)于DDR,一個(gè)時(shí)鐘周期的上升沿和下降沿都在傳輸數(shù)據(jù),即一個(gè)時(shí)鐘周期傳輸2bit的數(shù)據(jù),所以DDR的prefetch為2bit。對(duì)于DDR2,IO時(shí)鐘頻率是其核心頻率的兩倍,同時(shí)也是雙沿傳輸數(shù)據(jù),因此DDR2的prefetch為2×2bit=4bit。對(duì)于DDR3,IO時(shí)鐘頻率是其核心頻率的四倍,同時(shí)也是雙沿傳輸數(shù)據(jù),因此DDR3的prefetch為4×2bit=8bit。

DDR SDRAM是由威盛等公司提出的第二代SDRAM標(biāo)準(zhǔn),主要它允許在時(shí)鐘脈沖的上升沿和下降沿都能傳輸數(shù)據(jù),這樣不需要提高時(shí)鐘頻率就能實(shí)現(xiàn)雙倍的SDRAM提速。DDR2 SDRAM是由電子設(shè)備工程聯(lián)合委員會(huì)開(kāi)的第三代SDRAM內(nèi)存技術(shù)標(biāo)準(zhǔn),相比上一代提供了更高運(yùn)行效能(擁有兩倍與上一代的預(yù)讀取能力,4bit數(shù)據(jù)prefetch)和更低的電壓(1.8v)。

DDR3 SDRAM相比上一代,電壓更低(1.5v),效能更高(支持8bit prefetch),只需133MHz就能實(shí)現(xiàn)1066MHz的總線(xiàn)頻率。DDR4相比上一代,工作電壓更低(1.2v),效能更高(16bit prefetch),同樣的頻率下,理論速度是上一代的兩倍。

2, 框架

f18b19dc-bc22-11ed-bfe3-dac502259ad0.png

DDR子系統(tǒng)框圖

DDR SDRAM子系統(tǒng)包含DDR controller、DDR PHY和DRAM存儲(chǔ)顆粒三部分。我們分別看一下各部分的組成,然后講述一下數(shù)據(jù)的讀寫(xiě)過(guò)程。

2.1 DDR controller

內(nèi)存控制器負(fù)責(zé)初始化DRAM,并重排讀寫(xiě)命令,以獲得最大的DRAM帶寬。它通過(guò)多端口與其他用戶(hù)核進(jìn)行連接,這些端口的類(lèi)型包含AXI4/AXI3/AHB/CHI。每個(gè)端口有可配置的寬度、命令和數(shù)據(jù)FIFO。

內(nèi)存控制器接收來(lái)自于一個(gè)或者多個(gè)CPU、DSP、GPU的請(qǐng)求,這些請(qǐng)求使用的地址是邏輯地址,由仲裁器來(lái)決定這些請(qǐng)求的優(yōu)先級(jí),并將其放入內(nèi)存控制器中。如果一個(gè)請(qǐng)求處于高優(yōu)先級(jí)(贏(yíng)得仲裁),會(huì)被映射到一個(gè)DRAM的物理地址并被轉(zhuǎn)換為一個(gè)DRAM命令序列。這些命令序列被放置在內(nèi)存控制器中的隊(duì)列池(Queue pool)中,內(nèi)存控制器會(huì)執(zhí)行隊(duì)列池中這些被掛起的命令,并將邏輯地址轉(zhuǎn)化為物理地址,并由狀態(tài)機(jī)輸出符合DRAM訪(fǎng)問(wèn)協(xié)議的電信號(hào),經(jīng)由PHY驅(qū)動(dòng)DRAM的物理IO口。

2.2 DDR PHY

DDR PHY是連接DDR顆粒和DDR Controller的橋梁,它負(fù)責(zé)把DDR Controller發(fā)過(guò)來(lái)的數(shù)據(jù)轉(zhuǎn)換成符合DDR協(xié)議的信號(hào),并發(fā)送到DDR顆粒。相反地,它也負(fù)責(zé)把DRAM發(fā)送過(guò)來(lái)的數(shù)據(jù)轉(zhuǎn)換成符合DFI(DDR PHY Interface)協(xié)議的信號(hào)并發(fā)送給內(nèi)存控制器。DDR PHY和內(nèi)存控制器統(tǒng)稱(chēng)為DDR IP,他們保證了SoC和DRAM之間的數(shù)據(jù)傳輸。

目前在DDR IP的市場(chǎng)上,國(guó)際廠(chǎng)商占據(jù)較高的市場(chǎng)份額,而國(guó)內(nèi)IP企業(yè)占比很小,究其原因,主要是由于DDR PHY具有較高的技術(shù)門(mén)檻,要在這類(lèi)PHY上實(shí)現(xiàn)突破并不容易。DDR PHY是一個(gè)系統(tǒng)工程,在如下方面需要著重關(guān)注:

2.3 DDR DRAM顆粒

從DDR PHY到內(nèi)存顆粒的層次關(guān)系如下:channel->DIMM->rank->chip->bank->row/column組成的memory array。例如,i7 CPU 支持兩個(gè)Channel(雙通道),每個(gè)Channel上可以插2個(gè)DIMM(dual inline memory module,雙列直插式存儲(chǔ)模塊),每個(gè)DIMM由2個(gè)rank構(gòu)成,8個(gè)chip組成一個(gè)rank。由于現(xiàn)在多數(shù)芯片的位寬是8bit,而CPU的位寬是64bit,因此經(jīng)常是8個(gè)芯片可以組成一個(gè)rank。

3, DRAM剖析

接下來(lái)深入的剖析一下DRAM的組成及工作原理。對(duì)于DRAM的原理,看到一篇很不錯(cuò)的文章《深入內(nèi)存/主存:解剖DRAM存儲(chǔ)器 - 知乎 (zhihu.com)》,以下內(nèi)容基本上來(lái)自于這篇文章。

3.1 基本結(jié)構(gòu)

1)DRAM的基本單元

基本的DRAM單元(cell),是一個(gè)電容加一個(gè)CMOS晶體管組成的電路。通過(guò)給晶體管最上面的一端(稱(chēng)作柵極)加上電壓或是取消電壓,就可以控制CMOS晶體管的開(kāi)、關(guān)。一旦打開(kāi)就可以讀出電容上存儲(chǔ)的電量,或者向電容寫(xiě)入電量。這樣電容上的電荷有無(wú)就對(duì)應(yīng)著存儲(chǔ)1bit的1或0。

f1b05990-bc22-11ed-bfe3-dac502259ad0.png

DRAM cell

為了存儲(chǔ)更多的bit,可以用如上的DRAM單元組成存儲(chǔ)陣列。行對(duì)應(yīng)的是word line,即字線(xiàn)。列對(duì)應(yīng)的是bit line,即位線(xiàn)。當(dāng)某一行的字線(xiàn)上通電后,這一行的cell上的電容就會(huì)經(jīng)過(guò)位線(xiàn)進(jìn)行充放電。通過(guò)讀取位線(xiàn)上的電壓變化,就能判斷存儲(chǔ)的是0,還是1。由于電容很小,打開(kāi)字線(xiàn)后產(chǎn)生的電壓波動(dòng)也很小,所以在讀取的時(shí)候,要經(jīng)過(guò)sense amplifier進(jìn)行放大。

每個(gè)位線(xiàn)都接在一個(gè)放大器上,由于每個(gè)cell的電容太小了,在讀某一bit前,先對(duì)bit line進(jìn)行precharge。預(yù)充的電壓為工作電壓的一半。這樣在打開(kāi)字線(xiàn)后,位線(xiàn)上的輕微變化也能被放大器捕捉到,并在本地還原、暫存字線(xiàn)對(duì)應(yīng)整行cell的電壓。其實(shí),當(dāng)讀了位線(xiàn)(電容放電)后,電容上的電荷就會(huì)發(fā)生了改變,這是一種破壞性讀出。為了解決這個(gè)問(wèn)題,就需要放大器在讀取cell存儲(chǔ)的數(shù)據(jù)后,利用暫存的cell電壓寫(xiě)回字線(xiàn)單元行。

f1ca0f7a-bc22-11ed-bfe3-dac502259ad0.png

cell存儲(chǔ)陣列

2)DRAM刷新

由于cell的電容很小,并且CMOS晶體管在關(guān)閉的時(shí)候,也存在漏電,這樣電容上的電荷也在隨著時(shí)間的變化,逐漸變少。時(shí)間一長(zhǎng),存儲(chǔ)的信息就會(huì)丟失。為了解決這一問(wèn)題,具體做法是對(duì)于每個(gè)單元行,每過(guò)一段時(shí)間就自主地進(jìn)行讀取,等放大器暫存好信息后就立刻將其寫(xiě)回行。關(guān)于單元行的刷新時(shí)機(jī)也很有講究,一般每64ms內(nèi)就要對(duì)cell陣列進(jìn)行一次全面刷新。

3.2 DRAM的讀寫(xiě)

f2115a88-bc22-11ed-bfe3-dac502259ad0.png

cell陣列+外圍邏輯

1) DRAM讀過(guò)程

在讀取DRAM芯片上單個(gè)比特?cái)?shù)據(jù)時(shí):

2) DRAM寫(xiě)過(guò)程

寫(xiě)過(guò)程和讀過(guò)程比較類(lèi)似,就不詳細(xì)描述,主要描述有差異的地方:

總的來(lái)說(shuō),讀取一個(gè)比特的總體過(guò)程:獲得行號(hào),譯碼行號(hào),開(kāi)啟單元行,放大位線(xiàn)電壓波動(dòng)并暫存數(shù)據(jù)到放大器,獲得列號(hào)并根據(jù)列號(hào)選擇一位進(jìn)行輸出,寫(xiě)回?cái)?shù)據(jù),關(guān)閉字線(xiàn),重新預(yù)充電。寫(xiě)一個(gè)比特的總體過(guò)程是:獲得行號(hào),譯碼行號(hào),開(kāi)啟單元行,放大位線(xiàn)電壓波動(dòng)并暫存數(shù)據(jù)到放大器,獲得列號(hào)并輸入寫(xiě)入數(shù)據(jù),根據(jù)列號(hào)把寫(xiě)入數(shù)據(jù)送到放大器并改寫(xiě)暫存值,寫(xiě)回?cái)?shù)據(jù),關(guān)閉字線(xiàn),重新預(yù)充電。

你可能會(huì)疑問(wèn),要訪(fǎng)問(wèn)的一個(gè)字節(jié)的其他7bit是不是也存在這些單元行里,答案是否定的。其實(shí),還存在7個(gè)這樣的bit存儲(chǔ)陣列,其中相同的行列地址在這7個(gè)bit存儲(chǔ)陣列相同位置取出相應(yīng)的bit,這樣便得到了完整的8bit(一個(gè)字節(jié))數(shù)據(jù)。

另外,在讀寫(xiě)過(guò)程中,時(shí)間主要消耗在“開(kāi)啟單元行”與“放大電壓波動(dòng)并暫存數(shù)據(jù)”。單元行的柵極可以抽象成一個(gè)個(gè)電容的并聯(lián),因此字線(xiàn)的拉高就是給這么多電容充電的一個(gè)過(guò)程,這將是很耗時(shí)及耗電的。由于放大器大部分是模擬電路,所以他的工作也不快。那么怎么提高DRAM的讀寫(xiě)速度呢?關(guān)鍵點(diǎn)在放大器的緩存區(qū)(row buffer),它緩存了單元行,但是一般我們只取出了其中的一個(gè)bit。如果要想提升速寫(xiě)速度,那就還訪(fǎng)問(wèn)這個(gè)單元行的其他bit,這時(shí)會(huì)直接從row buffer中取出相應(yīng)的數(shù)據(jù),不需要經(jīng)歷開(kāi)啟單元行、放大、讀寫(xiě)數(shù)、寫(xiě)回的耗時(shí)過(guò)程。

3.3 DRAM系統(tǒng)層次

DRAM的系統(tǒng)層次如下:channel->DIMM->rank->chip->bank->row/column組成的memory array->存儲(chǔ)cell。

1)bank

如下是一個(gè)8陣列bank。其中每個(gè)rank中的行列定位到的小方塊,是一個(gè)cell,對(duì)應(yīng)一個(gè)bit。行、列組成了一個(gè)memory array,即一個(gè)bank。8個(gè)bank組成了8 bank的陣列,通過(guò)行、列地址可以得到8 bit的輸出。

f2ae7f0c-bc22-11ed-bfe3-dac502259ad0.png

8陣列bank

一個(gè)8陣列bank一次讀寫(xiě)8個(gè)比特,一顆存儲(chǔ)芯片上一般含有多個(gè)bank。下圖是一顆含有8個(gè)bank的存儲(chǔ)芯片的示意圖。芯片每次讀寫(xiě)都只針對(duì)一個(gè)bank,因此讀寫(xiě)地址必須包含一個(gè)bank號(hào),bank號(hào)用于開(kāi)啟目標(biāo)bank,目標(biāo)bank之外的bank是不工作的。

f30f3b9e-bc22-11ed-bfe3-dac502259ad0.png

包含8個(gè)8陣列bank的存儲(chǔ)芯片

2)Rank和DIMM

電腦用的內(nèi)存芯片都嵌在一個(gè)電路板上,把這個(gè)電路板插入內(nèi)存插槽后,就可增加電腦內(nèi)存。電路板和板上的芯片,就是所謂的內(nèi)存條,也稱(chēng)為DIMM條。內(nèi)存條通過(guò)“內(nèi)存通道”連接到內(nèi)存控制器,一組可以被一個(gè)內(nèi)存通道同時(shí)訪(fǎng)問(wèn)的芯片稱(chēng)作一個(gè)rank。一個(gè)rank中的每個(gè)芯片,都共用內(nèi)存通道提供的地址線(xiàn)、控制線(xiàn)和數(shù)據(jù)線(xiàn),同時(shí)每個(gè)芯片都提供一組輸出線(xiàn),這些輸出線(xiàn)組合起來(lái)就是內(nèi)存條的輸出線(xiàn)。

對(duì)于一個(gè)包含8顆芯片的DIMM條。這8顆芯片被一個(gè)內(nèi)存通道同時(shí)訪(fǎng)問(wèn),所以它們合稱(chēng)為一個(gè)rank。有的DIMM條有兩面,即兩面都有內(nèi)存芯片,這種DIMM條擁有兩個(gè)rank。

若每個(gè)芯片都包含8個(gè)bank,每個(gè)bank都包含8個(gè)陣列,那么這條內(nèi)存條就可以一次讀寫(xiě)8×8=64比特,其中第一個(gè)8是指每個(gè)芯片輸出8位,第二個(gè)8是指這個(gè)rank總共有8顆芯片,因?yàn)檫@8顆芯片被同一個(gè)內(nèi)存通道訪(fǎng)問(wèn),所以其被訪(fǎng)問(wèn)的bank和bank內(nèi)的行地址、列地址都是完全一致的。下圖是一個(gè)描述這個(gè)過(guò)程的簡(jiǎn)圖:顯然,我們?cè)谧x寫(xiě)8顆芯片同一個(gè)bank同一個(gè)位置的cell。注意,圖中沒(méi)有顯示不在工作狀態(tài)的bank。對(duì)一個(gè)rank讀寫(xiě),即同時(shí)讀寫(xiě)rank內(nèi)8個(gè)存儲(chǔ)芯片內(nèi)的同一位置的bank。

f33318ac-bc22-11ed-bfe3-dac502259ad0.png

rank讀寫(xiě)

電腦有時(shí)候可以插入多個(gè)內(nèi)存條,多個(gè)內(nèi)存條有助于提升電腦的內(nèi)存容量,但是未必能提高電腦的速度。電腦的速度受“內(nèi)存通道”數(shù)限制,如果電腦有四個(gè)插槽,卻只有一個(gè)內(nèi)存通道,那么CPU仍然只能一次訪(fǎng)問(wèn)一個(gè)rank。但如果電腦有四個(gè)插槽的同時(shí)還有四個(gè)內(nèi)存通道,那么CPU就可以一次訪(fǎng)問(wèn)四個(gè)rank,很顯然,四并行訪(fǎng)問(wèn)明顯比串行訪(fǎng)問(wèn)快,假設(shè)每個(gè)rank可以輸出64比特,那么四通道就可以一次訪(fǎng)問(wèn)4×64=256比特,而單通道只能訪(fǎng)問(wèn)64比特。

3.4 DRAM訪(fǎng)問(wèn)加速

1)burst模式

由于現(xiàn)在的處理器,CPU與DDR之間基本上都有cache,CPU在訪(fǎng)問(wèn)內(nèi)存單個(gè)字的時(shí)候,不僅需要訪(fǎng)問(wèn)這個(gè)字,還需要把這個(gè)字所在的緩存行全部搬進(jìn)cache中,因此內(nèi)存不僅要一次提供一個(gè)字,還要提供一個(gè)緩存行(cache line)。緩存行一般比較大,比如8個(gè)64比特,因此內(nèi)存要一次提供8×64=512比特?cái)?shù)據(jù)。但如果前面介紹的方式訪(fǎng)問(wèn)內(nèi)存,那么一次只能提取出64比特,即提取一個(gè)字,這并不滿(mǎn)足緩存行的要求。為此,我們提出對(duì)內(nèi)存使用“burst模式”。

由于緩存行內(nèi)的各個(gè)字在內(nèi)存上是緊鄰的,我們就可以靈活地使用cell陣列中的行緩存(row buffer)。前面說(shuō)到單元行進(jìn)入放大器的行緩存之后,并不會(huì)在讀寫(xiě)一個(gè)比特后立刻寫(xiě)回cell陣列,而是待在行緩存里等待下一個(gè)讀寫(xiě)命令。如果下一個(gè)讀寫(xiě)命令仍然發(fā)生在該單元行,那就可以行命中,直接操作row buffer。

在burst模式里,每當(dāng)我們讀取cell陣列中的一個(gè)比特,不僅把這個(gè)比特送到輸出緩存中,而且緊接著把這個(gè)比特所在緩存行的各個(gè)比特都送到輸出緩存,這樣就完成了一次burst,即把目標(biāo)比特周?chē)亩鄠€(gè)比特連續(xù)地讀出。

2)bank并行和內(nèi)存交錯(cuò)

前面我們比較詳細(xì)地聊了在一個(gè)cell陣列中讀取數(shù)據(jù)的過(guò)程,而CPU在訪(fǎng)問(wèn)內(nèi)存時(shí),還需要一些別的操作??偟膩?lái)說(shuō),CPU訪(fǎng)存大概要經(jīng)過(guò)5個(gè)步驟:

1, CPU發(fā)送指令給內(nèi)存控制器。

2, 內(nèi)存控制器解析指令,并把“解析到的控制信息”發(fā)送到控制總線(xiàn)。

3, bank接收控制信息,并讀取數(shù)據(jù)。

4, 內(nèi)存芯片把讀取出的數(shù)據(jù)放到數(shù)據(jù)總線(xiàn)。

5, 內(nèi)存控制器收取數(shù)據(jù),并將其交給CPU。

如果CPU連續(xù)訪(fǎng)問(wèn)同一bank,那么CPU、內(nèi)存控制器、總線(xiàn)和bank就必須串行操作,串行操作會(huì)讓訪(fǎng)存效率下降。我們假設(shè)CPU不可以在一個(gè)bank工作時(shí),再給它發(fā)送新的指令。如果CPU連續(xù)不斷地給一個(gè)bank發(fā)送指令,那么很可能前一個(gè)指令還沒(méi)完成,后一個(gè)指令就改變了bank內(nèi)的row buffer、列地址緩存或輸出緩沖。

為了說(shuō)明cpu訪(fǎng)存過(guò)程中帶來(lái)的時(shí)間消耗和造成的效率下降,下面以“總線(xiàn)延遲”為例:

光速是3×10^8m/s,而高性能CPU的頻率可達(dá)3GHz,即3×10^9Hz。那么在CPU的一個(gè)時(shí)鐘周期內(nèi),光可以運(yùn)動(dòng)10cm。但是電在硅中的傳播距離大約是光的五分之一,經(jīng)過(guò)測(cè)量,在電子線(xiàn)路中 電在一個(gè)CPU時(shí)鐘周期內(nèi)只能運(yùn)動(dòng)20mm左右。而CPU和內(nèi)存芯片之間的距離遠(yuǎn)不止20mm,因此數(shù)據(jù)在總線(xiàn)上移動(dòng)需要花費(fèi)多個(gè)CPU時(shí)鐘周期。

上面的計(jì)算說(shuō)明,在CPU訪(fǎng)存的5個(gè)步驟中,第2、第4步是要花很多時(shí)間的,而沒(méi)有詳細(xì)討論的第1、第5步,大概率比這兩步還要慢。因此讓CPU、內(nèi)存控制器、總線(xiàn)和bank串行操作是不明智的。實(shí)際上,我們完全可以在一個(gè)bank進(jìn)行第3步時(shí),讓CPU、內(nèi)存控制器、總線(xiàn)去操作新的bank,以此隱藏起它們的工作時(shí)間,從而營(yíng)造起一種CPU、內(nèi)存控制器和總線(xiàn)不需要消耗時(shí)間的假象。上面這種做法實(shí)現(xiàn)了“bank間并行”。

所謂在“bank間并行”就是讓一個(gè)chip內(nèi)的不同bank并行工作,讓它們各干各的。為此CPU要連續(xù)、依次向不同的bank發(fā)送讀取指令,這樣在同一時(shí)間很多bank都在工作,第一個(gè)bank可能在輸出,第二個(gè)bank可能在放大電壓,第三個(gè)bank可能在開(kāi)啟單元行。當(dāng)?shù)谝粋€(gè)bank burst輸出完畢,第二個(gè)bank剛好可以輸出。當(dāng)?shù)诙€(gè)bank burst輸出完畢,第三個(gè)bank剛好可以輸出.......通過(guò)這樣讓“bank讀取”和“CPU、內(nèi)存控制器、總線(xiàn)工作”在時(shí)間上相互重疊的方式,我們可以成功地把CPU、內(nèi)存控制器和總線(xiàn)的工作時(shí)間隱藏起來(lái),從而打造出一種CPU無(wú)延遲訪(fǎng)問(wèn)內(nèi)存、多個(gè)bank連續(xù)、依次“泵”出數(shù)據(jù)的理想情況。這種通過(guò)“bank間并行”實(shí)現(xiàn)“連續(xù)泵出數(shù)據(jù)”的方法,就是所謂的“內(nèi)存交錯(cuò)”。

內(nèi)存交錯(cuò)不僅隱藏了CPU、內(nèi)存控制器和總線(xiàn)的工作時(shí)間,還隱藏了對(duì)單個(gè)bank而言row缺失所造成的多余訪(fǎng)問(wèn)時(shí)間(所謂“多余”是相對(duì)“row 命中”情況而言的),連續(xù)兩次對(duì)同一個(gè)bank的訪(fǎng)問(wèn),它們?cè)L問(wèn)的row相同或者不同,對(duì)延遲的影響是相當(dāng)顯著的。

如果第二個(gè)命令是對(duì)同一個(gè)row訪(fǎng)問(wèn),那么memory controller只需要發(fā)出Rd/Wr讀寫(xiě)命令即可,稱(chēng)為行命中。如果第二個(gè)命令是對(duì)不同的row進(jìn)行訪(fǎng)問(wèn),那么memory controller需要發(fā)出PRE,ACT,Rd/Wr命令序列,稱(chēng)為行缺失。從命令序列的對(duì)比來(lái)看,可以看出行缺失的情形對(duì)性能的影響是糟糕的。下圖顯示了連續(xù)的行缺失的情形下的訪(fǎng)存序列:

f3757b7a-bc22-11ed-bfe3-dac502259ad0.jpg

行缺失的訪(fǎng)問(wèn)序列

然而,如果我們有多個(gè)bank,然后將 A0,A1,A2...的訪(fǎng)存序列,通過(guò)memory controller的address interleaving, 映射到多個(gè)bank上,也就是所謂banking。避免了連續(xù)訪(fǎng)問(wèn)同一個(gè)bank的不同row,造成的大量行缺失,就能夠得到下面的訪(fǎng)存序列:

f3aa54f8-bc22-11ed-bfe3-dac502259ad0.jpg

流水線(xiàn)化的訪(fǎng)問(wèn)序列

顯然,上圖中的類(lèi)似流水化的訪(fǎng)問(wèn)能夠很大程度上掩蓋訪(fǎng)問(wèn)DRAM的訪(fǎng)存延遲,這也就是banking能夠提高memory throughput的原因。

另外,memory controller的address interleaving是什么呢?

我們都知道在OS層面,有著從virtual address到physical address的地址映射。類(lèi)似地,在memory controller層面,我們需要將physical address映射為對(duì)DRAM chip中具體的位置的訪(fǎng)問(wèn),通過(guò)將bank映射到物理地址的相對(duì)低位(相對(duì)于row),可以使得對(duì)連續(xù)地址的訪(fǎng)存請(qǐng)求被映射到不同的bank。

f3c07daa-bc22-11ed-bfe3-dac502259ad0.jpg

物理地址的bank映射






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • SDRAM
    +關(guān)注

    關(guān)注

    7

    文章

    442

    瀏覽量

    56294
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5433

    瀏覽量

    124395
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7648

    瀏覽量

    167306
  • DDR
    DDR
    +關(guān)注

    關(guān)注

    11

    文章

    732

    瀏覽量

    66789

原文標(biāo)題:一文搞懂DDR SDRAM工作原理

文章出處:【微信號(hào):IC學(xué)習(xí),微信公眾號(hào):IC學(xué)習(xí)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    一文搞懂DDR SDRAM工作原理

    DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory,雙數(shù)據(jù)率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器)通常被我們稱(chēng)為DDR,其中的“同步
    發(fā)表于 03-07 11:29 ?5162次閱讀
    一文搞懂<b class='flag-5'>DDR</b> <b class='flag-5'>SDRAM</b><b class='flag-5'>工作原理</b>

    DDR SDRAMSDRAM的區(qū)別

    DDR內(nèi)存1代已經(jīng)淡出市場(chǎng),直接學(xué)習(xí)DDR3 SDRAM感覺(jué)有點(diǎn)跳躍;如下是DDR1、DDR2以及DDR
    發(fā)表于 04-04 17:08 ?4787次閱讀
    <b class='flag-5'>DDR</b> <b class='flag-5'>SDRAM</b>與<b class='flag-5'>SDRAM</b>的區(qū)別

    DDR3 SDRAM配置教程

    DDR3 SDRAM(Double-Data-Rate ThreeSynchronous Dynamic Random Access Memory)是DDR SDRAM的第三代產(chǎn)品,相
    的頭像 發(fā)表于 04-10 09:42 ?2967次閱讀
    <b class='flag-5'>DDR</b>3 <b class='flag-5'>SDRAM</b>配置教程

    SDRAM工作原理

    本帖最后由 eehome 于 2013-1-5 09:58 編輯 SDRAM工作原理
    發(fā)表于 08-13 10:38

    SDRAM工作原理

    SDRAM工作原理(中國(guó)科學(xué)院西安光學(xué)精密機(jī)械研究) 本文以三星公司的SDRAM器件K4S561632C[4]為例來(lái)是說(shuō)明SDRAM工作原理
    發(fā)表于 03-26 17:54 ?156次下載

    什么是DDR SDRAM內(nèi)存

    什么是DDR SDRAM內(nèi)存 DDR是一種繼SDRAM后產(chǎn)生的內(nèi)存技術(shù),DDR,英文原意為“DoubleDataRate”,顧名思義,就是
    發(fā)表于 12-17 11:15 ?2013次閱讀

    什么是DDR2 SDRAM

    什么是DDR2 SDRAM DDR2的定義:     DDR2(Double Data Rate 2) SDRAM
    發(fā)表于 12-17 11:17 ?836次閱讀

    DDR SDRAM內(nèi)存

    DDR SDRAM內(nèi)存            DDR SDRAM是Double Dat
    發(fā)表于 12-17 16:20 ?850次閱讀

    DDR SDRAM原理時(shí)序

    DDR SDRAM 全稱(chēng)為Double Data Rate SDRAM,中文名為雙倍數(shù)據(jù)流SDRAM。DDRSDRAM 在原有的SDRAM
    發(fā)表于 09-13 15:17 ?213次下載
    <b class='flag-5'>DDR</b> <b class='flag-5'>SDRAM</b>原理時(shí)序

    DRAM、SDRAMDDR SDRAM之間的概念詳解

    DRAM (動(dòng)態(tài)隨機(jī)訪(fǎng)問(wèn)存儲(chǔ)器)對(duì)設(shè)計(jì)人員特別具有吸引力,因?yàn)樗峁┝藦V泛的性能,用于各種計(jì)算機(jī)和嵌入式系統(tǒng)的存儲(chǔ)系統(tǒng)設(shè)計(jì)中。本文概括闡述了DRAM 的概念,及介紹了SDRAM、DDR SDRAM
    發(fā)表于 06-07 22:10 ?9.4w次閱讀

    DDR工作原理

    DDR SDRAM全稱(chēng)為Double Data Rate SDRAM,中文名為雙倍數(shù)據(jù)流SDRAMDDR
    發(fā)表于 03-16 14:24 ?32次下載

    DDR工作原理_DDR DQS信號(hào)的處理

    Random Access Memory的縮寫(xiě),即同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器。本文首先介紹了DDR工作原理及結(jié)構(gòu)圖,其次闡述了DDR DQS信號(hào)的處理,具體的跟隨小編一起來(lái)了解一下。
    的頭像 發(fā)表于 05-23 16:07 ?5.5w次閱讀
    <b class='flag-5'>DDR</b><b class='flag-5'>工作原理</b>_<b class='flag-5'>DDR</b> DQS信號(hào)的處理

    基于FPGA的DDR3SDRAM控制器設(shè)計(jì)及實(shí)現(xiàn)簡(jiǎn)介

    基于FPGA的DDR3SDRAM控制器設(shè)計(jì)及實(shí)現(xiàn)簡(jiǎn)介(arm嵌入式開(kāi)發(fā)平臺(tái)PB)-該文檔為基于FPGA的DDR3SDRAM控制器設(shè)計(jì)及實(shí)現(xiàn)簡(jiǎn)介資料,講解的還不錯(cuò),感興趣的可以下載看看…
    發(fā)表于 07-30 09:05 ?7次下載
    基于FPGA的<b class='flag-5'>DDR3SDRAM</b>控制器設(shè)計(jì)及實(shí)現(xiàn)<b class='flag-5'>簡(jiǎn)介</b>

    DDR SDRAM工作模式和特點(diǎn)

    DDR SDRAM,全稱(chēng)為Double Data Rate Synchronous Dynamic Random Access Memory,即雙數(shù)據(jù)率同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器,是現(xiàn)代計(jì)算機(jī)系統(tǒng)中廣泛采用的一種內(nèi)存技術(shù)。以下將從DDR
    的頭像 發(fā)表于 08-20 09:44 ?1893次閱讀

    DDR5內(nèi)存的工作原理詳解 DDR5和DDR4的主要區(qū)別

    DDR5內(nèi)存的工作原理詳解 1. DDR5內(nèi)存簡(jiǎn)介 DDR5(Double Data Rate 5)是第五代雙倍數(shù)據(jù)速率同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)
    的頭像 發(fā)表于 11-22 15:38 ?4654次閱讀