為實現集成式用戶體驗,如今的設備支持的功能越來越多,使各類接口承擔了大量數據流量壓力。為了更高效地處理這些數據,提供高帶寬的快速內存可解當前的燃眉之急。盡管內存的種類多種多樣,但在通過高帶寬數據傳輸接口提供大量動態隨機存取存儲時,雙倍數據速率(DDR)內存仍占據著主導地位。這些類型的內存之所以被稱為雙倍數據速率是因為相比單數據速率內存,它們可以在一個內存時鐘周期內進行兩次數據傳輸,進而提供雙倍的性能。 一般來說,DDR內存有多個存儲體,內含交錯的存儲陣列以及預取緩沖區。對于所有數據傳輸而言,內存地址可劃分為存儲體地址、行地址和列地址。DDR內存的性能優勢主要體現在其預取架構和突發式操作上。當內存訪問存儲體的一個特定行時,預取緩沖區就會獲得一組相鄰的數據字,并隨后在內存時鐘各個沿的I/O管腳上突發,無需單獨的列地址。因此,預取緩沖區越大,帶寬就越高。此外,通過創建含有多個DDR內存芯片的模塊也可以實現高帶寬。 〈對于所有數據傳輸而言,內存地址可劃分為存儲體地址、行地址和列地址。DDR內存的性能優勢主要體現在其預取架構和突發式操作上。〉 在正常操作前,DDR內存必須要以預先定義的方式進行上電和初始化。在進行讀/寫操作前,需要激活/打開存儲體的一個特定行(基本上是激活并增強該行的信號),待操作完成后,若不再需要訪問該行,則可對其進行預充電操作或將其關閉。DDR內存需要定期刷新,這樣其內容才不會丟失。 DDR內存的預取緩沖區大小為2n(即每個內存訪問周期2個數據字),DDR2內存的預取緩沖區大小為4n(即每個內存訪問周期4個數據字),DDR3內存的預取緩沖區大小為8n(即每個內存訪問周期8個數據字)。其中,n指I/O接口的大小,通常為4、8或16。這些預取計劃的有效性主要得益于空間區域性原則。 了解了這些基本知識后,接下來我們將進一步探討DDR3內存的具體特性和功能。 DDR3內存 與DDR2內存相比,DDR3內存的性能大大提高,主要體現在功耗進一步降低,能夠在更高的時鐘頻率下運行,且采用了8n預取結構,為數據傳輸提供了更高帶寬。通常,DDR3內存的工作電壓為1.5V,內存時鐘頻率為400MHz~800MHz,從而使每管腳的數據傳輸速率達到800Mbps~1600Mbps。DDR3內存可在4位、8位、16位I/O接口上運行,支持的突發長度為每內存訪問周期4或8個數據字。DDR3內存與DDR2內存的重要特性對比見表1。 表1:DDR3與DDR2內存的特性對比。 除了上述的特性改進之外,DDR3內存中還新增了DDR2內存所不具備的特性: ● 引入了FLY_BY拓撲結構,將命令和地址信號發送到內存模塊,從而以更高的速度提供更好的信號完整性。 ● 支持寫入均衡(Write leveling)和讀取均衡(Read leveling)機制,以補償由FLY_BY拓撲結構造成的傾斜。 ● 采用專用ZQ管腳和ZQ校準序列并配合片上校準引擎來校驗片內終結器(ODT)電路和輸出驅動器。 ● 引入了專門的復位管腳。 ● 支持低功耗強化特性。 ● 支持動態ODT特性,以提高寫入操作的信號完整性。 以下章節中將詳細描述DDR3的上述新特性。 【分頁導航】
FLY_BY拓撲結構 DDR3內存具有較高的信號傳輸速率,因此需要有一個新的拓撲結構將命令和控制信號發送到不同的內存模塊中。DDR2使用的是如圖1所示的T型拓撲結構,但是這種拓撲結構由于容性負載限制,無法支持較高的信號傳輸速率以及數量較多的內存模塊。在T型拓撲結構中,信號在被發送到各個內存模塊前會先到達一個中心節點,從而限制了走線長度變動的可能性,使走線長度局限到較短的路徑。該拓撲結構無法可靠地支持較高的信號傳輸速率,是因為在增加內存容量時,會出現多個stub且信號可檢測到的容性負載也會增加。 圖1:將內存控制器與DDR2內存模塊連接在一起的T型拓撲結構圖,其中的命令/地址/時鐘信號以分支結構發送到各個內存模塊中。 為解決上述問題,DDR3內存采用了FLY_BY拓撲結構,將命令和地址信號串聯到各個內存模塊上,并在末端配備合適的電阻。在該拓撲結構中,信號可在不同的間隔時間內到達不同的內存模塊,可延遲遭遇內存模塊輸入容性負載的時間。這樣一來,通過容性負載的減少,DDR3可以在不影響數據速率的同時提供更高的信號傳輸速率并提升內存系統的擴展性。圖2給出了DDR3內存系統采用的FLY_BY拓撲結構。 圖2:將內存控制器和DDR3內存模塊連接在一起的FLY_BY拓撲結構圖,其中各個內存模塊共享以串聯模式連接在一起的通用命令/地址/時鐘信號線。 【分頁導航】
寫入均衡 由于DDR3內存采用了FLY_BY拓撲結構,命令、地址和時鐘信號與數據和選通信號會在不同時間到達不同的內存模塊。為了解決這個問題,DDR3內存引入了整平技術,使各個內存模塊接口的數據選通與時鐘信號對齊。系統中各個內存模塊的每一個數據字節都要進行整平操作。 寫入均衡彌補了數據寫入操作中內存模塊界限處數據選通信號和時鐘信號間的偏斜。在啟動寫入均衡機制前,需要向DDR3內存寫入適當的模式寄存器值使其進入寫入均衡模式。進入寫入均衡模式后,內存模塊便有了時鐘信號和數據選通信號。內存模塊在其邊界采樣時鐘信號,與觀測到的數據選通信號進行對比,然后通過數據線將采樣值(0/1)反饋給驅動實體,以便為下一個循環中的數據選通信號做延遲調整。這一流程反復進行,直到觀測的反饋值從0跳變為1,這表明內存模塊邊界的時鐘信號與數據選通信號對齊。 讀取均衡 讀取均衡主要解決數據讀取操作中數據與選通信號之間的偏斜。為了支持此特性,DDR3內存中增加了一個多用途寄存器(MPR)。該寄存器中包含一個預先定義的數據模式,選中后就會在數據線上輸出該模式的數據而非內存陣列中的普通數據。在啟動讀取均衡序列前,需要向DDR3內存中編入適當的模式寄存器值,使MPR數據成為輸出數據。之后,讀取均衡機制啟動,開始向內存模塊發送READ命令,并試圖通過優化調整數據選通信號的內部延遲來捕獲預定義數據。反復重復此流程直到通過調整數據選通信號內部延遲而創建的窗口能夠以最佳方式捕獲到預先定義模式的數據。讀寫均衡特性僅涉及DDR3內存,DDR2內存不支持此類特性。 【分頁導航】
ZQ校準 為了提高信號完整性,并增強輸出信號強度,DDR內存中引入了終端電阻和輸出驅動器。而為了在溫度和電壓發生變化的情況下仍能保持信號完整性,就需要對這些終端電阻和輸出驅動器進行定期校準。未經校準的終端電阻會直接影響信號質量,而調整不當的輸出驅動器則會使有效信號躍遷偏離參考電平,從而導致數據和選通信號之間出現偏差。如圖3所示,這種偏差會縮短有效數據窗口,并降低數據傳輸的可靠性。 圖3:因不等的數據選取脈沖(DQS)驅動使交叉點偏離中間水平而導致有效數據窗口縮短。 DDR2內存的輸出驅動器一般置于芯片外,只在初始化過程中隨機校準一次,因此這種被稱為“片外驅動校準(OCD)”的校準序列僅用于校準片外輸出驅動器。DDR2內存無法支持ODT校準模式。 為了保持更高的信號完整性,DDR3內存中引入ODT和片上輸出驅動器。DDR3內存中新增了ZQ專用腳,在ZQ管腳與地面之間接有一個240Ω±1%容差的外部參考電阻,便于進行校準。當內存模塊收到ZQ校準命令時,片上校準引擎便啟動校準序列。在DDR3內存的初始化階段會進行初始ZQ校準,之后會定期進行短時ZQ校準,以補償運行溫度和電壓漂移造成的信號波動。 動態ODT 為了提高數據總線上的信號完整性,DDR3內存中新增了一個特性,可以在不設置模式寄存器值的情況下修改ODT電阻。使能該特性后,一個不同的終端電阻值就會被寫入到內存中。圖4展示了在DDR3內存中使能該特性后,如何在寫入操作中動態轉換終端電阻,在這種情況下也無需再發送模式寄存器編程命令。 圖4:使能DDR3內存模塊的動態ODT阻配置特性后,在數據寫入操作中該配置將終端電阻改為“RTT_Dyn”,待操作完成后,又將終端電阻恢復到“RTT_Nom”。 【分頁導航】
專用復位管腳 DDR3內存有一個專用的復位管腳,若出現錯誤情況會異步復位內存的內部狀態。 低功耗模式 為了在不使用狀態下節省電力,DDR3內存也與DDR2內存一樣支持節電模式和自刷新模式。在自刷新模式下,DDR3內存可以在系統其他部分處于關閉狀態時仍保證數據不丟失。在長時間不進行讀取或寫入動作時,把CKE信號置于低狀態(LOW),可使內存進入節電模式,在這種情況下,內存不會保留任何數據。內存進入節電模式后且所有的存儲體都被預充電的狀態被稱為預充電節電模式;若在節電模式期間,任一存儲體處于激活狀態,則該狀態被稱為激活節電模式。把CKE信號置于高狀態(HIGH)即可使內存退出節電模式。低功耗模式的轉換由內存控制器管理,這樣就可以按需使內存進入和退出低功耗模式,從而賦予設備更多的靈活性。通常,DDR3內存會在收到相應命令后的一個內存時鐘周期內進入所需的低功耗模式,并在滿足必要條件的情況下退出該低功耗模式。根據JEDEC規范,DDR3-800型內存進入和退出節電模式的總時間最少應為7.5ns(欲了解更多詳細信息,可參照DDR3JEDEC規范)。 【分頁導航】
高效DDR3內存控制器指南 為了更好地管理各類DDR3內存的特性,并提供一種簡便的、帶寬效率高的自動化方式來初始化和使用內存,我們需要一款高效DDR3內存控制器。內存控制器不僅能在上電后根據編程控制器參數自動初始化內存,還應該提供具有排隊、優先級、仲裁和重新排序功能的高帶寬接口以便在多個同步內存訪問的情況下仍可實現對內存的高效松耦合訪問。 一個典型的DDR3內存控制器子系統由以下幾部分組成: 1.可滿足各種內存訪問請求的高帶寬接口; 2.在內存初始化階段用于控制器參數配置的寄存器訪問端口; 3.由隊列和內存命令處理引擎構成的核心控制器模塊; 4.用于驅動輸入內存操作到物理內存的物理接口; 5.依照DDR3協議將內存訪問請求發送到內存的物理層; 6.用來維持內存接口適當電壓等級的專用集成電路(ASIC)管腳校準邏輯。 以下各節將詳細講述上圖中控制器的各個組件。 內存訪問接口 為了響應外部系統訪問內存的需求,DDR3內存控制器設有若干內存訪問接口和控制器。為了有效地利用DDR3內存,內存訪問接口應可支持高帶寬和高頻率操作,且多個內存訪問接口的設置也可確保內存能夠同時響應多個同步訪問請求。除了進行讀/寫數據操作及使能該操作的內存位置地址,接口協議中還應包含訪問請求實體和收到每個數據操作的回復機制等信息。此外,為了充分利用DDR3內存的突發式特性,接口協議也要求為突發式。在多個訪問接口共存的情況下,接口協議中應設置優先級字段來顯示每個數據操作的優先級。 寄存器訪問接口 有了寄存器訪問接口,程序員就可以在上電期間為特定的DDR3內存初始化配置控制器參數。由于該接口并不一定要在高頻率下運行,因此可依照具體要求使用。此外,寄存器訪問接口可選支持誤碼指示,能夠在程序員嘗試編程一個無效控制器寄存器時發出誤碼指示。 【分頁導航】
內存物理接口 盡管在控制器和內存物理層之間可以使用自定義的物理接口,但我們仍建議使用DFI兼容接口。DFI兼容接口可為控制器和物理層間提供標準化接口,從而降低成本且便于再利用;DFI兼容接口還可減少針對某廠商的整合工作量,并可實現從FPGA原型到ASIC的無縫遷移。DFI兼容接口的另一顯著特性可參見DFI規范。 內存物理層 該模塊通過ASIC管腳連接到內存系統,并根據DDR3電氣規范與協議規范將數據操作拖放到該模塊。除了包含控制DDR3接口信號所必需的邏輯外,該模塊還支持其他特性,諸如自動讀寫均衡,用于時序控制的DLL,以及控制內存進入或退出各種低功耗模式等。由于本文篇幅有限,有關內存物理層的更多詳細信息可參考廠商的數據表。 管腳校準 DDR3內存控制器也可配置ASIC管腳校準邏輯,使內存接口上的電壓等級維持在適當水平。該邏輯的使用方式類似于DDR2內存的OCD校準特性,通過維持電阻網絡中上拉和下拉電阻的平衡,使內存接口的電壓等級在不同運行條件下都保持在適當的水平。 調試內存控制器 為完成調試過程,可使用下述組件或特性: 1.可以在控制器上運行多個狀態寄存器,更好地了解當前控制器的狀態和命令執行情況,還可引入中斷信號來指示外部系統發生的關鍵事件。 2.可以在內存物理層增加用來指示DLL狀態的觀測寄存器,有助于確認與時序相關的問題。 3.可以在內存物理層執行環回操作,這將能夠在不影響其他內存組件的情況下,不必對整個DDR控制器進行編程即可測試連接正確性和數據眼圖生成情況。 4.可以在控制器中執行ECC,以檢測并糾正內存中的數據損壞。 結論 簡而言之,我們可以清楚地看到,盡管對當前DDR2內存的連接拓撲和控制器特性集做了一些強制性改變,但與DDR2內存相比,DDR3內存有著更顯著的性能優勢。如今,DDR3標準為DDR4標準所取代,通過降低工作電壓和增加內存時鐘頻率,DDR4標準可確保更加高效的運行。此外,DDR4內存的典型工作電壓為1.2V,支持的內存時鐘頻率范圍為667MHz~1.6GHz,存儲密度更高達16GB(DDR3內存僅為8GB),因而能夠在改進能源經濟性的基礎上帶來更高的性能。雖然DDR4是DDR內存標準最新最好的產物,但由于DDR4的普及率比較低,DDR3內存仍是目前最廣泛應用的內存。 參考文獻 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 【分頁導航】
|