作者:Biswaprakash Navajeevan , Vive
為實(shí)現(xiàn)集成式用戶(hù)體驗(yàn),如今的設(shè)備支持的功能越來(lái)越多,使各類(lèi)接口承擔(dān)了大量數(shù)據(jù)流量壓力。為了更高效地處理這些數(shù)據(jù),提供高帶寬的快速內(nèi)存可解當(dāng)前的燃眉之急。盡管內(nèi)存的種類(lèi)多種多樣,但在通過(guò)高帶寬數(shù)據(jù)傳輸接口提供大量動(dòng)態(tài)隨機(jī)存取存儲(chǔ)時(shí),雙倍數(shù)據(jù)速率(DDR)內(nèi)存仍占據(jù)著主導(dǎo)地位。這些類(lèi)型的內(nèi)存之所以被稱(chēng)為雙倍數(shù)據(jù)速率是因?yàn)橄啾葐螖?shù)據(jù)速率內(nèi)存,它們可以在一個(gè)內(nèi)存時(shí)鐘周期內(nèi)進(jìn)行兩次數(shù)據(jù)傳輸,進(jìn)而提供雙倍的性能。
一般來(lái)說(shuō),DDR內(nèi)存有多個(gè)存儲(chǔ)體,內(nèi)含交錯(cuò)的存儲(chǔ)陣列以及預(yù)取緩沖區(qū)。對(duì)于所有數(shù)據(jù)傳輸而言,內(nèi)存地址可劃分為存儲(chǔ)體地址、行地址和列地址。DDR內(nèi)存的性能優(yōu)勢(shì)主要體現(xiàn)在其預(yù)取架構(gòu)和突發(fā)式操作上。當(dāng)內(nèi)存訪(fǎng)問(wèn)存儲(chǔ)體的一個(gè)特定行時(shí),預(yù)取緩沖區(qū)就會(huì)獲得一組相鄰的數(shù)據(jù)字,并隨后在內(nèi)存時(shí)鐘各個(gè)沿的I/O管腳上突發(fā),無(wú)需單獨(dú)的列地址。因此,預(yù)取緩沖區(qū)越大,帶寬就越高。此外,通過(guò)創(chuàng)建含有多個(gè)DDR內(nèi)存芯片的模塊也可以實(shí)現(xiàn)高帶寬。
對(duì)于所有數(shù)據(jù)傳輸而言,內(nèi)存地址可劃分為存儲(chǔ)體地址、行地址和列地址。DDR內(nèi)存的性能優(yōu)勢(shì)主要體現(xiàn)在其預(yù)取架構(gòu)和突發(fā)式操作上。
在正常操作前,DDR內(nèi)存必須要以預(yù)先定義的方式進(jìn)行上電和初始化。在進(jìn)行讀/寫(xiě)操作前,需要激活/打開(kāi)存儲(chǔ)體的一個(gè)特定行(基本上是激活并增強(qiáng)該行的信號(hào)),待操作完成后,若不再需要訪(fǎng)問(wèn)該行,則可對(duì)其進(jìn)行預(yù)充電操作或?qū)⑵潢P(guān)閉。DDR內(nèi)存需要定期刷新,這樣其內(nèi)容才不會(huì)丟失。
DDR內(nèi)存的預(yù)取緩沖區(qū)大小為2n(即每個(gè)內(nèi)存訪(fǎng)問(wèn)周期2個(gè)數(shù)據(jù)字),DDR2內(nèi)存的預(yù)取緩沖區(qū)大小為4n(即每個(gè)內(nèi)存訪(fǎng)問(wèn)周期4個(gè)數(shù)據(jù)字),DDR3內(nèi)存的預(yù)取緩沖區(qū)大小為8n(即每個(gè)內(nèi)存訪(fǎng)問(wèn)周期8個(gè)數(shù)據(jù)字)。其中,n指I/O接口的大小,通常為4、8或16。這些預(yù)取計(jì)劃的有效性主要得益于空間區(qū)域性原則。
了解了這些基本知識(shí)后,接下來(lái)我們將進(jìn)一步探討DDR3內(nèi)存的具體特性和功能。
DDR3內(nèi)存
與DDR2內(nèi)存相比,DDR3內(nèi)存的性能大大提高,主要體現(xiàn)在功耗進(jìn)一步降低,能夠在更高的時(shí)鐘頻率下運(yùn)行,且采用了8n預(yù)取結(jié)構(gòu),為數(shù)據(jù)傳輸提供了更高帶寬。通常,DDR3內(nèi)存的工作電壓為1.5V,內(nèi)存時(shí)鐘頻率為400MHz~800MHz,從而使每管腳的數(shù)據(jù)傳輸速率達(dá)到800Mbps~1600Mbps。DDR3內(nèi)存可在4位、8位、16位I/O接口上運(yùn)行,支持的突發(fā)長(zhǎng)度為每?jī)?nèi)存訪(fǎng)問(wèn)周期4或8個(gè)數(shù)據(jù)字。DDR3內(nèi)存與DDR2內(nèi)存的重要特性對(duì)比見(jiàn)表1。
表1:DDR3與DDR2內(nèi)存的特性對(duì)比。
除了上述的特性改進(jìn)之外,DDR3內(nèi)存中還新增了DDR2內(nèi)存所不具備的特性:
●引入了FLY_BY拓?fù)浣Y(jié)構(gòu),將命令和地址信號(hào)發(fā)送到內(nèi)存模塊,從而以更高的速度提供更好的信號(hào)完整性。
●支持寫(xiě)入均衡(Write leveling)和讀取均衡(Read leveling)機(jī)制,以補(bǔ)償由FLY_BY拓?fù)浣Y(jié)構(gòu)造成的傾斜。
●采用專(zhuān)用ZQ管腳和ZQ校準(zhǔn)序列并配合片上校準(zhǔn)引擎來(lái)校驗(yàn)片內(nèi)終結(jié)器(ODT)電路和輸出驅(qū)動(dòng)器。
●引入了專(zhuān)門(mén)的復(fù)位管腳。
●支持低功耗強(qiáng)化特性。
●支持動(dòng)態(tài)ODT特性,以提高寫(xiě)入操作的信號(hào)完整性。
以下章節(jié)中將詳細(xì)描述DDR3的上述新特性。
FLY_BY拓?fù)浣Y(jié)構(gòu)
DDR3內(nèi)存具有較高的信號(hào)傳輸速率,因此需要有一個(gè)新的拓?fù)浣Y(jié)構(gòu)將命令和控制信號(hào)發(fā)送到不同的內(nèi)存模塊中。DDR2使用的是如圖1所示的T型拓?fù)浣Y(jié)構(gòu),但是這種拓?fù)浣Y(jié)構(gòu)由于容性負(fù)載限制,無(wú)法支持較高的信號(hào)傳輸速率以及數(shù)量較多的內(nèi)存模塊。在T型拓?fù)浣Y(jié)構(gòu)中,信號(hào)在被發(fā)送到各個(gè)內(nèi)存模塊前會(huì)先到達(dá)一個(gè)中心節(jié)點(diǎn),從而限制了走線(xiàn)長(zhǎng)度變動(dòng)的可能性,使走線(xiàn)長(zhǎng)度局限到較短的路徑。該拓?fù)浣Y(jié)構(gòu)無(wú)法可靠地支持較高的信號(hào)傳輸速率,是因?yàn)樵谠黾觾?nèi)存容量時(shí),會(huì)出現(xiàn)多個(gè)stub且信號(hào)可檢測(cè)到的容性負(fù)載也會(huì)增加。
圖1:將內(nèi)存控制器與DDR2內(nèi)存模塊連接在一起的T型拓?fù)浣Y(jié)構(gòu)圖,其中的命令/地址/時(shí)鐘信號(hào)以分支結(jié)構(gòu)發(fā)送到各個(gè)內(nèi)存模塊中。
為解決上述問(wèn)題,DDR3內(nèi)存采用了FLY_BY拓?fù)浣Y(jié)構(gòu),將命令和地址信號(hào)串聯(lián)到各個(gè)內(nèi)存模塊上,并在末端配備合適的電阻。在該拓?fù)浣Y(jié)構(gòu)中,信號(hào)可在不同的間隔時(shí)間內(nèi)到達(dá)不同的內(nèi)存模塊,可延遲遭遇內(nèi)存模塊輸入容性負(fù)載的時(shí)間。這樣一來(lái),通過(guò)容性負(fù)載的減少,DDR3可以在不影響數(shù)據(jù)速率的同時(shí)提供更高的信號(hào)傳輸速率并提升內(nèi)存系統(tǒng)的擴(kuò)展性。圖2給出了DDR3內(nèi)存系統(tǒng)采用的FLY_BY拓?fù)浣Y(jié)構(gòu)。
圖2:將內(nèi)存控制器和DDR3內(nèi)存模塊連接在一起的FLY_BY拓?fù)浣Y(jié)構(gòu)圖,其中各個(gè)內(nèi)存模塊共享以串聯(lián)模式連接在一起的通用命令/地址/時(shí)鐘信號(hào)線(xiàn)。
寫(xiě)入均衡
由于DDR3內(nèi)存采用了FLY_BY拓?fù)浣Y(jié)構(gòu),命令、地址和時(shí)鐘信號(hào)與數(shù)據(jù)和選通信號(hào)會(huì)在不同時(shí)間到達(dá)不同的內(nèi)存模塊。為了解決這個(gè)問(wèn)題,DDR3內(nèi)存引入了整平技術(shù),使各個(gè)內(nèi)存模塊接口的數(shù)據(jù)選通與時(shí)鐘信號(hào)對(duì)齊。系統(tǒng)中各個(gè)內(nèi)存模塊的每一個(gè)數(shù)據(jù)字節(jié)都要進(jìn)行整平操作。
寫(xiě)入均衡彌補(bǔ)了數(shù)據(jù)寫(xiě)入操作中內(nèi)存模塊界限處數(shù)據(jù)選通信號(hào)和時(shí)鐘信號(hào)間的偏斜。在啟動(dòng)寫(xiě)入均衡機(jī)制前,需要向DDR3內(nèi)存寫(xiě)入適當(dāng)?shù)哪J?a href="http://hljzzgx.com/tags/寄存器/" target="_blank">寄存器值使其進(jìn)入寫(xiě)入均衡模式。進(jìn)入寫(xiě)入均衡模式后,內(nèi)存模塊便有了時(shí)鐘信號(hào)和數(shù)據(jù)選通信號(hào)。內(nèi)存模塊在其邊界采樣時(shí)鐘信號(hào),與觀測(cè)到的數(shù)據(jù)選通信號(hào)進(jìn)行對(duì)比,然后通過(guò)數(shù)據(jù)線(xiàn)將采樣值(0/1)反饋給驅(qū)動(dòng)實(shí)體,以便為下一個(gè)循環(huán)中的數(shù)據(jù)選通信號(hào)做延遲調(diào)整。這一流程反復(fù)進(jìn)行,直到觀測(cè)的反饋值從0跳變?yōu)?,這表明內(nèi)存模塊邊界的時(shí)鐘信號(hào)與數(shù)據(jù)選通信號(hào)對(duì)齊。
讀取均衡
讀取均衡主要解決數(shù)據(jù)讀取操作中數(shù)據(jù)與選通信號(hào)之間的偏斜。為了支持此特性,DDR3內(nèi)存中增加了一個(gè)多用途寄存器(MPR)。該寄存器中包含一個(gè)預(yù)先定義的數(shù)據(jù)模式,選中后就會(huì)在數(shù)據(jù)線(xiàn)上輸出該模式的數(shù)據(jù)而非內(nèi)存陣列中的普通數(shù)據(jù)。在啟動(dòng)讀取均衡序列前,需要向DDR3內(nèi)存中編入適當(dāng)?shù)哪J郊拇嫫髦?,使MPR數(shù)據(jù)成為輸出數(shù)據(jù)。之后,讀取均衡機(jī)制啟動(dòng),開(kāi)始向內(nèi)存模塊發(fā)送READ命令,并試圖通過(guò)優(yōu)化調(diào)整數(shù)據(jù)選通信號(hào)的內(nèi)部延遲來(lái)捕獲預(yù)定義數(shù)據(jù)。反復(fù)重復(fù)此流程直到通過(guò)調(diào)整數(shù)據(jù)選通信號(hào)內(nèi)部延遲而創(chuàng)建的窗口能夠以最佳方式捕獲到預(yù)先定義模式的數(shù)據(jù)。讀寫(xiě)均衡特性?xún)H涉及DDR3內(nèi)存,DDR2內(nèi)存不支持此類(lèi)特性。
ZQ校準(zhǔn)
為了提高信號(hào)完整性,并增強(qiáng)輸出信號(hào)強(qiáng)度,DDR內(nèi)存中引入了終端電阻和輸出驅(qū)動(dòng)器。而為了在溫度和電壓發(fā)生變化的情況下仍能保持信號(hào)完整性,就需要對(duì)這些終端電阻和輸出驅(qū)動(dòng)器進(jìn)行定期校準(zhǔn)。未經(jīng)校準(zhǔn)的終端電阻會(huì)直接影響信號(hào)質(zhì)量,而調(diào)整不當(dāng)?shù)妮敵鲵?qū)動(dòng)器則會(huì)使有效信號(hào)躍遷偏離參考電平,從而導(dǎo)致數(shù)據(jù)和選通信號(hào)之間出現(xiàn)偏差。如圖3所示,這種偏差會(huì)縮短有效數(shù)據(jù)窗口,并降低數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
圖3:因不等的數(shù)據(jù)選取脈沖(DQS)驅(qū)動(dòng)使交叉點(diǎn)偏離中間水平而導(dǎo)致有效數(shù)據(jù)窗口縮短。
DDR2內(nèi)存的輸出驅(qū)動(dòng)器一般置于芯片外,只在初始化過(guò)程中隨機(jī)校準(zhǔn)一次,因此這種被稱(chēng)為“片外驅(qū)動(dòng)校準(zhǔn)(OCD)”的校準(zhǔn)序列僅用于校準(zhǔn)片外輸出驅(qū)動(dòng)器。DDR2內(nèi)存無(wú)法支持ODT校準(zhǔn)模式。
為了保持更高的信號(hào)完整性,DDR3內(nèi)存中引入ODT和片上輸出驅(qū)動(dòng)器。DDR3內(nèi)存中新增了ZQ專(zhuān)用腳,在ZQ管腳與地面之間接有一個(gè)240Ω±1%容差的外部參考電阻,便于進(jìn)行校準(zhǔn)。當(dāng)內(nèi)存模塊收到ZQ校準(zhǔn)命令時(shí),片上校準(zhǔn)引擎便啟動(dòng)校準(zhǔn)序列。在DDR3內(nèi)存的初始化階段會(huì)進(jìn)行初始ZQ校準(zhǔn),之后會(huì)定期進(jìn)行短時(shí)ZQ校準(zhǔn),以補(bǔ)償運(yùn)行溫度和電壓漂移造成的信號(hào)波動(dòng)。
動(dòng)態(tài)ODT
為了提高數(shù)據(jù)總線(xiàn)上的信號(hào)完整性,DDR3內(nèi)存中新增了一個(gè)特性,可以在不設(shè)置模式寄存器值的情況下修改ODT電阻。使能該特性后,一個(gè)不同的終端電阻值就會(huì)被寫(xiě)入到內(nèi)存中。圖4展示了在DDR3內(nèi)存中使能該特性后,如何在寫(xiě)入操作中動(dòng)態(tài)轉(zhuǎn)換終端電阻,在這種情況下也無(wú)需再發(fā)送模式寄存器編程命令。
圖4:使能DDR3內(nèi)存模塊的動(dòng)態(tài)ODT阻配置特性后,在數(shù)據(jù)寫(xiě)入操作中該配置將終端電阻改為“RTT_Dyn”,待操作完成后,又將終端電阻恢復(fù)到“RTT_Nom”。
專(zhuān)用復(fù)位管腳
DDR3內(nèi)存有一個(gè)專(zhuān)用的復(fù)位管腳,若出現(xiàn)錯(cuò)誤情況會(huì)異步復(fù)位內(nèi)存的內(nèi)部狀態(tài)。
低功耗模式
為了在不使用狀態(tài)下節(jié)省電力,DDR3內(nèi)存也與DDR2內(nèi)存一樣支持節(jié)電模式和自刷新模式。在自刷新模式下,DDR3內(nèi)存可以在系統(tǒng)其他部分處于關(guān)閉狀態(tài)時(shí)仍保證數(shù)據(jù)不丟失。在長(zhǎng)時(shí)間不進(jìn)行讀取或?qū)懭雱?dòng)作時(shí),把CKE信號(hào)置于低狀態(tài)(LOW),可使內(nèi)存進(jìn)入節(jié)電模式,在這種情況下,內(nèi)存不會(huì)保留任何數(shù)據(jù)。內(nèi)存進(jìn)入節(jié)電模式后且所有的存儲(chǔ)體都被預(yù)充電的狀態(tài)被稱(chēng)為預(yù)充電節(jié)電模式;若在節(jié)電模式期間,任一存儲(chǔ)體處于激活狀態(tài),則該狀態(tài)被稱(chēng)為激活節(jié)電模式。把CKE信號(hào)置于高狀態(tài)(HIGH)即可使內(nèi)存退出節(jié)電模式。低功耗模式的轉(zhuǎn)換由內(nèi)存控制器管理,這樣就可以按需使內(nèi)存進(jìn)入和退出低功耗模式,從而賦予設(shè)備更多的靈活性。通常,DDR3內(nèi)存會(huì)在收到相應(yīng)命令后的一個(gè)內(nèi)存時(shí)鐘周期內(nèi)進(jìn)入所需的低功耗模式,并在滿(mǎn)足必要條件的情況下退出該低功耗模式。根據(jù)JEDEC規(guī)范,DDR3-800型內(nèi)存進(jìn)入和退出節(jié)電模式的總時(shí)間最少應(yīng)為7.5ns(欲了解更多詳細(xì)信息,可參照DDR3JEDEC規(guī)范)。
高效DDR3內(nèi)存控制器指南
為了更好地管理各類(lèi)DDR3內(nèi)存的特性,并提供一種簡(jiǎn)便的、帶寬效率高的自動(dòng)化方式來(lái)初始化和使用內(nèi)存,我們需要一款高效DDR3內(nèi)存控制器。內(nèi)存控制器不僅能在上電后根據(jù)編程控制器參數(shù)自動(dòng)初始化內(nèi)存,還應(yīng)該提供具有排隊(duì)、優(yōu)先級(jí)、仲裁和重新排序功能的高帶寬接口以便在多個(gè)同步內(nèi)存訪(fǎng)問(wèn)的情況下仍可實(shí)現(xiàn)對(duì)內(nèi)存的高效松耦合訪(fǎng)問(wèn)。
一個(gè)典型的DDR3內(nèi)存控制器子系統(tǒng)由以下幾部分組成:
1.可滿(mǎn)足各種內(nèi)存訪(fǎng)問(wèn)請(qǐng)求的高帶寬接口;
2.在內(nèi)存初始化階段用于控制器參數(shù)配置的寄存器訪(fǎng)問(wèn)端口;
3.由隊(duì)列和內(nèi)存命令處理引擎構(gòu)成的核心控制器模塊;
4.用于驅(qū)動(dòng)輸入內(nèi)存操作到物理內(nèi)存的物理接口;
5.依照DDR3協(xié)議將內(nèi)存訪(fǎng)問(wèn)請(qǐng)求發(fā)送到內(nèi)存的物理層;
6.用來(lái)維持內(nèi)存接口適當(dāng)電壓等級(jí)的專(zhuān)用集成電路(ASIC)管腳校準(zhǔn)邏輯。
以下各節(jié)將詳細(xì)講述上圖中控制器的各個(gè)組件。
內(nèi)存訪(fǎng)問(wèn)接口
為了響應(yīng)外部系統(tǒng)訪(fǎng)問(wèn)內(nèi)存的需求,DDR3內(nèi)存控制器設(shè)有若干內(nèi)存訪(fǎng)問(wèn)接口和控制器。為了有效地利用DDR3內(nèi)存,內(nèi)存訪(fǎng)問(wèn)接口應(yīng)可支持高帶寬和高頻率操作,且多個(gè)內(nèi)存訪(fǎng)問(wèn)接口的設(shè)置也可確保內(nèi)存能夠同時(shí)響應(yīng)多個(gè)同步訪(fǎng)問(wèn)請(qǐng)求。除了進(jìn)行讀/寫(xiě)數(shù)據(jù)操作及使能該操作的內(nèi)存位置地址,接口協(xié)議中還應(yīng)包含訪(fǎng)問(wèn)請(qǐng)求實(shí)體和收到每個(gè)數(shù)據(jù)操作的回復(fù)機(jī)制等信息。此外,為了充分利用DDR3內(nèi)存的突發(fā)式特性,接口協(xié)議也要求為突發(fā)式。在多個(gè)訪(fǎng)問(wèn)接口共存的情況下,接口協(xié)議中應(yīng)設(shè)置優(yōu)先級(jí)字段來(lái)顯示每個(gè)數(shù)據(jù)操作的優(yōu)先級(jí)。
寄存器訪(fǎng)問(wèn)接口
有了寄存器訪(fǎng)問(wèn)接口,程序員就可以在上電期間為特定的DDR3內(nèi)存初始化配置控制器參數(shù)。由于該接口并不一定要在高頻率下運(yùn)行,因此可依照具體要求使用。此外,寄存器訪(fǎng)問(wèn)接口可選支持誤碼指示,能夠在程序員嘗試編程一個(gè)無(wú)效控制器寄存器時(shí)發(fā)出誤碼指示。
核心控制模塊
核心控制模塊負(fù)責(zé)處理內(nèi)存訪(fǎng)問(wèn)接口上的所有數(shù)據(jù)訪(fǎng)問(wèn)請(qǐng)求,在進(jìn)行適當(dāng)?shù)母袷秸{(diào)整后再把這些請(qǐng)求發(fā)送到內(nèi)存物理層中,并最終到達(dá)內(nèi)存。為了執(zhí)行不同的任務(wù),該模塊可進(jìn)一步細(xì)分為以下幾個(gè)子模塊:
a.內(nèi)存訪(fǎng)問(wèn)接口塊;
b.仲裁單元;
c.控制命令和讀/寫(xiě)數(shù)據(jù)隊(duì)列的排列邏輯隊(duì)列;
d.命令處理單元。
內(nèi)存訪(fǎng)問(wèn)接口塊負(fù)責(zé)解碼外部系統(tǒng)的內(nèi)存訪(fǎng)問(wèn)請(qǐng)求,并將這些請(qǐng)求存儲(chǔ)到其內(nèi)部的先入先出(FIFO)中。數(shù)據(jù)訪(fǎng)問(wèn)請(qǐng)求可被分解為讀/寫(xiě)命令和以?xún)?yōu)先級(jí)為序的各個(gè)數(shù)據(jù)。其中,讀/寫(xiě)數(shù)據(jù)可以被存儲(chǔ)在單獨(dú)的專(zhuān)用FIFO中,在依據(jù)讀/寫(xiě)操作的相關(guān)優(yōu)先級(jí)進(jìn)行仲裁后,與讀/寫(xiě)數(shù)據(jù)相關(guān)的命令可以存儲(chǔ)在一個(gè)命令FIFO中。
在接口接收到與某特定命令相關(guān)的誤碼時(shí),可發(fā)出外部系統(tǒng)誤碼指示。讀、寫(xiě)與命令FIFO的深度可根據(jù)接口上的流量進(jìn)行配置。
仲裁單元負(fù)責(zé)從多個(gè)內(nèi)存訪(fǎng)問(wèn)接口塊中選擇命令,然后將處理后的命令發(fā)送到命令隊(duì)列中,并最終驅(qū)動(dòng)至內(nèi)存接口處。仲裁單元在篩選內(nèi)存訪(fǎng)問(wèn)接口塊中的命令時(shí),可選擇使用諸如循環(huán)優(yōu)先級(jí)仲裁等適宜的仲裁方案。篩選出的命令會(huì)依據(jù)各源端口的優(yōu)先級(jí)被劃分成不同的優(yōu)先級(jí)組;之后,一個(gè)優(yōu)先級(jí)高的命令會(huì)被發(fā)送至命令隊(duì)列。在連續(xù)接收到高優(yōu)先級(jí)命令的情況下,可以引入優(yōu)先級(jí)組禁用功能來(lái)控制何時(shí)禁用特定優(yōu)先級(jí)組,從而確保低優(yōu)先級(jí)命令的執(zhí)行。所有相關(guān)的優(yōu)先級(jí)字段均支持用戶(hù)自定義功能,用戶(hù)可以根據(jù)需要調(diào)整這些字段值。
為了讓大家更好地了解仲裁方案,我們假設(shè)某個(gè)核心控制模塊中包含兩個(gè)內(nèi)存訪(fǎng)問(wèn)接口塊(IF0,IF1),具有兩個(gè)優(yōu)先級(jí)組級(jí)別(PG0,PG1),如圖5所示。
圖5:一個(gè)核心控制模塊仲裁方案的示例,該模塊中有兩個(gè)內(nèi)存訪(fǎng)問(wèn)接口塊(IF0,IF1)和兩個(gè)優(yōu)先級(jí)組級(jí)別。
假設(shè)IF0接收到了優(yōu)先級(jí)為0的報(bào)文P00(P00,0)和優(yōu)先級(jí)為1的報(bào)文P01(P01,1),IF1接收到了優(yōu)先級(jí)為0的報(bào)文P10(P10,0)和優(yōu)先級(jí)為1的報(bào)文P11(P11,1),考慮到端口間使用的循環(huán)優(yōu)先級(jí)仲裁方案,報(bào)文會(huì)按照下述排序方法劃分優(yōu)先級(jí)組:
P00,0 -> P10,0 -> P01,1 -> P11,1
由于優(yōu)先級(jí)組0存儲(chǔ)優(yōu)先級(jí)為0的報(bào)文,優(yōu)先級(jí)組1存儲(chǔ)優(yōu)先級(jí)為1的報(bào)文,所以報(bào)文P00,0和P10,0將被存儲(chǔ)在優(yōu)先級(jí)組0(PG0)中;報(bào)文P01,1和P11,1將被存儲(chǔ)在優(yōu)先級(jí)組1(PG1)中,如下所示:
PG0 -> P00,0 and P10,0PG1 -> P01,1 and P11,1
假設(shè)優(yōu)先級(jí)組1(PG1)的權(quán)重高于優(yōu)先級(jí)組0(PG0),且來(lái)自?xún)?nèi)存訪(fǎng)問(wèn)接口塊0(IF0)的報(bào)文權(quán)重高于來(lái)自?xún)?nèi)存訪(fǎng)問(wèn)接口模塊1(IF1)的報(bào)文,則優(yōu)先級(jí)組中的報(bào)文將按以下次序出現(xiàn)在命令隊(duì)列中:
P01,1 -> P11,1 -> P00,0 -> P10,0
仲裁后的命令可被放入一個(gè)隊(duì)列中進(jìn)行重排序,以確保高效運(yùn)行并避免沖突??梢愿鶕?jù)需要設(shè)置一個(gè)重排序單元,探查隊(duì)列中各命令是否存在可能的地址/源/數(shù)據(jù)沖突,然后根據(jù)命令類(lèi)型和優(yōu)先級(jí)對(duì)其進(jìn)行重排序。此外,還可以通過(guò)下述方式調(diào)整命令的排序,進(jìn)而實(shí)現(xiàn)控制器的高效運(yùn)行:允許在同一個(gè)存儲(chǔ)體的不同行上運(yùn)行不同命令,使命令能夠訪(fǎng)問(wèn)不同的存儲(chǔ)體;在選擇的同一芯片上的讀寫(xiě)命令間插入新的命令;允許在任何相反類(lèi)型的命令出現(xiàn)前連續(xù)地執(zhí)行讀/寫(xiě)命令。程序員也可選擇禁用重排序邏輯,這樣命令就會(huì)按照其最初進(jìn)入隊(duì)列的順序來(lái)執(zhí)行。
重新排序后,可對(duì)命令隊(duì)列中的命令做進(jìn)一步處理,以最大限度地提高數(shù)據(jù)吞吐量。這一過(guò)程需要考慮到存儲(chǔ)體的準(zhǔn)備狀態(tài)、讀寫(xiě)操作中至少一次數(shù)據(jù)突發(fā)的可用性、總線(xiàn)周轉(zhuǎn)時(shí)間以及命令間的各類(lèi)沖突。為了確保沒(méi)有低優(yōu)先級(jí)命令無(wú)限期地停留在隊(duì)列中,可以引入失效方案,在一個(gè)可編程的時(shí)間間隔后,提升這些命令的優(yōu)先級(jí)。
內(nèi)存物理接口
盡管在控制器和內(nèi)存物理層之間可以使用自定義的物理接口,但我們?nèi)越ㄗh使用DFI兼容接口。DFI兼容接口可為控制器和物理層間提供標(biāo)準(zhǔn)化接口,從而降低成本且便于再利用;DFI兼容接口還可減少針對(duì)某廠商的整合工作量,并可實(shí)現(xiàn)從FPGA原型到ASIC的無(wú)縫遷移。DFI兼容接口的另一顯著特性可參見(jiàn)DFI規(guī)范。
內(nèi)存物理層
該模塊通過(guò)ASIC管腳連接到內(nèi)存系統(tǒng),并根據(jù)DDR3電氣規(guī)范與協(xié)議規(guī)范將數(shù)據(jù)操作拖放到該模塊。除了包含控制DDR3接口信號(hào)所必需的邏輯外,該模塊還支持其他特性,諸如自動(dòng)讀寫(xiě)均衡,用于時(shí)序控制的DLL,以及控制內(nèi)存進(jìn)入或退出各種低功耗模式等。由于本文篇幅有限,有關(guān)內(nèi)存物理層的更多詳細(xì)信息可參考廠商的數(shù)據(jù)表。
管腳校準(zhǔn)
DDR3內(nèi)存控制器也可配置ASIC管腳校準(zhǔn)邏輯,使內(nèi)存接口上的電壓等級(jí)維持在適當(dāng)水平。該邏輯的使用方式類(lèi)似于DDR2內(nèi)存的OCD校準(zhǔn)特性,通過(guò)維持電阻網(wǎng)絡(luò)中上拉和下拉電阻的平衡,使內(nèi)存接口的電壓等級(jí)在不同運(yùn)行條件下都保持在適當(dāng)?shù)乃健?/p>
調(diào)試內(nèi)存控制器
為完成調(diào)試過(guò)程,可使用下述組件或特性:
1.可以在控制器上運(yùn)行多個(gè)狀態(tài)寄存器,更好地了解當(dāng)前控制器的狀態(tài)和命令執(zhí)行情況,還可引入中斷信號(hào)來(lái)指示外部系統(tǒng)發(fā)生的關(guān)鍵事件。
2.可以在內(nèi)存物理層增加用來(lái)指示DLL狀態(tài)的觀測(cè)寄存器,有助于確認(rèn)與時(shí)序相關(guān)的問(wèn)題。
3.可以在內(nèi)存物理層執(zhí)行環(huán)回操作,這將能夠在不影響其他內(nèi)存組件的情況下,不必對(duì)整個(gè)DDR控制器進(jìn)行編程即可測(cè)試連接正確性和數(shù)據(jù)眼圖生成情況。
4.可以在控制器中執(zhí)行ECC,以檢測(cè)并糾正內(nèi)存中的數(shù)據(jù)損壞。
結(jié)論
簡(jiǎn)而言之,我們可以清楚地看到,盡管對(duì)當(dāng)前DDR2內(nèi)存的連接拓?fù)浜涂刂破魈匦约隽艘恍?qiáng)制性改變,但與DDR2內(nèi)存相比,DDR3內(nèi)存有著更顯著的性能優(yōu)勢(shì)。如今,DDR3標(biāo)準(zhǔn)為DDR4標(biāo)準(zhǔn)所取代,通過(guò)降低工作電壓和增加內(nèi)存時(shí)鐘頻率,DDR4標(biāo)準(zhǔn)可確保更加高效的運(yùn)行。此外,DDR4內(nèi)存的典型工作電壓為1.2V,支持的內(nèi)存時(shí)鐘頻率范圍為667MHz~1.6GHz,存儲(chǔ)密度更高達(dá)16GB(DDR3內(nèi)存僅為8GB),因而能夠在改進(jìn)能源經(jīng)濟(jì)性的基礎(chǔ)上帶來(lái)更高的性能。雖然DDR4是DDR內(nèi)存標(biāo)準(zhǔn)最新最好的產(chǎn)物,但由于DDR4的普及率比較低,DDR3內(nèi)存仍是目前最廣泛應(yīng)用的內(nèi)存。
參考文獻(xiàn)
JEDEC DDR3 SDRAM standard (JESD79-3F)
JEDEC DDR2 SDRAM standard (JESD79-2F)
http://www.rambus.com/us/technology/innovations/detail/flyby.html
http://www.design-reuse.com/articles/15699/ddr3-ddr2-interfacesmigration.html
http://en.wikipedia.org/wiki/DDR3_SDRAM
http://pdf.directindustry.com/pdf/elpida-memory/ddr3-sdrambrochure/34572-71260.html
www.elpida.com/pdfs/E0594E20.pdf
http://www.micron.com/products/dram/ddr3-to-ddr4
編輯:hfy
-
控制器
+關(guān)注
關(guān)注
112文章
16332瀏覽量
177803 -
DDR3
+關(guān)注
關(guān)注
2文章
276瀏覽量
42242 -
信號(hào)完整性
+關(guān)注
關(guān)注
68文章
1404瀏覽量
95458 -
內(nèi)存控制器
+關(guān)注
關(guān)注
0文章
40瀏覽量
8884
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論