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