為系統(tǒng)設(shè)計(jì)人員提供的DRAM控制器
即使?jié)M足了這一要求,也還有其他問題。您必須對(duì)陣列預(yù)充電。預(yù)充電命令使得傳感放大器中的數(shù)據(jù)無效,提升陣列和傳感放大器輸入之間導(dǎo)線上的電壓,使得電壓值位于邏輯0和邏輯1電平之間。這種準(zhǔn)備是必要的,比特單元電容上很小的電荷都會(huì)傳送到導(dǎo)線上,以某種方式提示傳感放大器。
對(duì)導(dǎo)線進(jìn)行預(yù)充電之后,您必須向新行發(fā)送一個(gè)激活命令,等待操作完成,然后,您最終可以發(fā)送一個(gè)讀操作新命令。加上所有涉及到的延時(shí)后,即,讀取字節(jié)序列的最差情況,每一字節(jié)都來自不同的行,這要比讀取來自一個(gè)新行連續(xù)位置相同數(shù)量字節(jié)的時(shí)間慢十倍。
這種不同還只是部分問題。如圖2 所示,DDR DRAM有多個(gè)塊:與比特單元無關(guān)的陣列。DDR3 DRAM中有八個(gè)塊,每一塊都有自己排列成行的傳感放大器。因此,原理上,您可以通過激活每一個(gè)塊中的一行,讀寫較長(zhǎng)的突發(fā),然后,對(duì)每一激活后的行進(jìn)行讀寫操作——實(shí)際上是對(duì)塊進(jìn)行間插操作。唯一增加的延時(shí)是連接每一塊的傳感放大器和芯片內(nèi)部總線的緩沖的切換時(shí)間。這一延時(shí)要比對(duì)相同塊中一個(gè)新行進(jìn)行預(yù)充電和激活的時(shí)間短得多。
圖2.一個(gè)典型的DDR DRAM結(jié)構(gòu)圖。一個(gè)DDR3器件會(huì)有8個(gè)塊,而不是4個(gè)。
這就是原理。實(shí)際中,您可以對(duì)塊進(jìn)行間插處理,但是有一個(gè)限制,不是基于DRAM邏輯,而是芯片能夠承受的熱量。這種限制可以通過著名的“滾動(dòng)四塊訪問窗口”,即,tRAW來表達(dá):您一次能夠有四個(gè)激活塊的最長(zhǎng)時(shí)間。這一規(guī)則實(shí)際上有例外,只要您從一個(gè)塊轉(zhuǎn)向下一塊之前,在一個(gè)塊上保持一定的時(shí)間,那么,您可以有連續(xù)激活的8個(gè)塊。但是您應(yīng)該知道:這比較復(fù)雜。
建立一個(gè)控制器
與前面所述不同的是DRAM時(shí)序非常復(fù)雜,接近混沌。從DRAM芯片設(shè)計(jì)人員的角度看,這非常合理,但是,很難滿足多核SoC的需求。DRAM序列或者時(shí)序命令上看起來無關(guān)緊要的小改動(dòng)會(huì)導(dǎo)致您訪問存儲(chǔ)器的帶寬的巨大變化。由于存儲(chǔ)器帶寬通常是關(guān)鍵任務(wù)的瓶頸所在,因此,帶寬的變化很快就會(huì)影響系統(tǒng)性能。然而,命令序列和時(shí)序來自應(yīng)用程序和系統(tǒng)軟件之間,以及系統(tǒng)硬件各種單元之間復(fù)雜的交互——包括緩存控制器、存儲(chǔ)器管理器、直接存儲(chǔ)器訪問(DMA)控制器和加速器,以及DRAM控制器。
SoC的功能越來越強(qiáng)大,這種情況會(huì)更加復(fù)雜。目前,一個(gè)多核系統(tǒng)級(jí)IC會(huì)有同時(shí)運(yùn)行的兩個(gè)甚至更多的多線程CPU,導(dǎo)致共享L2高速緩存來讀取指令線,隨機(jī)對(duì)數(shù)據(jù)線進(jìn)行讀寫操作。同時(shí),計(jì)算加速器以自己的方式遍歷數(shù)據(jù)結(jié)構(gòu)。一個(gè)器件可以處理流視頻,另一個(gè)用于矩陣乘法預(yù)讀取,第三個(gè)執(zhí)行路由表的隨機(jī)訪問。增加一個(gè)散射收集DMA控制器,處理光纖接口、硬盤和顯示器之間的數(shù)據(jù),結(jié)果是,在DRAM控制器的系統(tǒng)側(cè)會(huì)有些不協(xié)調(diào)。
如果DRAM控制器只是按照系統(tǒng)接收順序進(jìn)行操作,那么,優(yōu)化DRAM操作的工作會(huì)同等落在規(guī)劃人員、設(shè)計(jì)人員和軟件開發(fā)人員上——這是很難做到的。Altera公司戰(zhàn)略市場(chǎng)經(jīng)理Argy Krikelis提醒說:“特別是多核設(shè)計(jì),規(guī)劃人員遇到定位和性能問題。”責(zé)任落在DRAM控制器上,那么,盡可能利用其信息消除這種不協(xié)調(diào),轉(zhuǎn)換為經(jīng)過優(yōu)化的命令流。
深入了解DRAM控制器就會(huì)知道,這些模塊的設(shè)計(jì)人員怎樣處理這些難題。您可以認(rèn)為一個(gè)現(xiàn)代DRAM控制器有三個(gè)主要模塊——物理接口、命令處理器以及事物處理器——如圖3 所示。
圖3.一個(gè)現(xiàn)代DRAM控制器涉及到事物處理器、命令處理器和物理接口。
物理接口連接DRAM芯片或者存儲(chǔ)器模塊。它讀取來自命令處理器的一個(gè)命令流,將具有正確時(shí)序的命令發(fā)送至DRAM芯片,管理相關(guān)的數(shù)據(jù)字節(jié)流。接口收發(fā)器、命令和數(shù)據(jù)同步緩沖,以及產(chǎn)生正確命令和數(shù)據(jù)時(shí)序的狀態(tài)機(jī)都含在這一模塊中。而且,還有用于進(jìn)行復(fù)雜的初始化操作的狀態(tài)機(jī),校準(zhǔn)DDR3 DRAM規(guī)范設(shè)定的序列,如圖1所示。此外,某些應(yīng)用的物理接口還會(huì)包括自測(cè)試、診斷和誤碼探測(cè)以及糾錯(cuò)硬件。當(dāng)您改變DRAM的容量或者速率等級(jí)時(shí),必須調(diào)整物理接口。
評(píng)論