天天看點

淺談電路設計中應用DDR3處理緩存問題

DDR系列SDRAM存儲晶片的高速率、高內建度和低成本使其理所當然成為存儲晶片中的一霸。在PC和消費電子領域自是如此,它被稱為“主存”。其實,随着通信裝置價格戰愈演愈烈,在看起來水有點深的通信裝置上,DDR系列存儲晶片(目前主流是DDR3 SDRAM)也成為首選。很多網絡處理晶片都需要配套的存儲晶片來進行資料的緩存。比如流量管理晶片(Traffic Management)在決定允許哪個資料包通過時,資料包的内容是被緩存着的。或者路由轉發晶片要根據IP位址查找路由表決定一個資料包的去向,這個路由表也需要緩存。因為前面說的優點,DDR系列成為這些緩存的首選。

    然而解決DDR的效率問題屬難題,其中DDR存儲控制器的設計就是之一。先看看影響DDR效率的參數都有哪些:

    1. tRCD - ACTIVE to internal READ/WRITE激活指令到内部讀寫指令之間的延遲。每一次對DDR3讀寫操作前必須確定是處于Active狀态的。

    2. tRC – 同一bank内2次ACTIVE指令間的最小延遲,就是說,我們不能過于頻繁的激活同一bank的同一行或不同行。

    3. tRAS – ACTIVE to Precharge command period. ACTIVE指令到PRECHARGE指令之間的最小時間。

    4. tRP – PRECHARGE command period. PERCHARG指令的處理周期,在此周期内不能對正在進行precharge的bank作任何操作。

    5. tFAW – No more than 4 bank ACTIVE commands may be issued in tFAW. 這意味着我們不能以太小的時間間隔連續發ACTIVE指令。提高通路效率一個很有效的手段就是循環通路不同bank,每個bank一次隻通路不太長的時間。但是這個參數限制了我們輪詢bank不可過快。

    6. tRRD – The minimum time interval between successive ACTIVE command to different banks. 不同bank的ACTIVE指令間的最小延遲。

    7. tRFC – REFRESH to ACTIVE or REFRESH command period. REFRESH 指令的周期,發起refresh指令後這麼長時間不可再次激活。

    8. tEFI – Maximum average periodic refresh(7.8us/3.9us). 最大的平均重新整理間隔時間,在高溫下需要更頻繁的重新整理以保證DRAM ‘hold’ 住資料。

    9. tWR – write recovery time. 它定義了最後一次寫突發到向同一bank發起PRECHARGE指令的最小時間。

    10. tWTR – Delay from start of internal write transaction to internal READ command. 寫切換到讀的延遲。

    11. tRTP – READ to PRECHARGE time. 讀指令到“預充電”指令間的延遲,它從READ指令AL個時鐘周期後開始計算。

    12. tCCD – any READ to READ command delay or WRITE to WRITE command delay. 任何讀與讀之間或寫與寫之間的延遲。

    13. tDAL – Auto precharge write recovery + precharge time. Auto-precharge模式下寫恢複和預充電時間的和。

    從零開始設計一個DDR3存儲器控制器是非常困難的。需要考慮許多特性之間的權衡和互相影響。使用一個經驗證的IP核可以省去了大量的開發、測試和調試時間,否則就需要花費許多時間來進行in-house設計開發。一個經驗證的IP核還可以減少後續支援的負擔,因為這将由專門的開發人員來支援。最重要的是,使用一個經驗證的IP核可以使設計師将精力集中在其設計的獨特特性上,進而向最終客戶傳遞高價值的産品設計。例如Xilinx V6 DDR3存儲控制器IP核已經通過了一個第三方驗證套件的驗證。在EDK中該IP核通過XPS作為 axi_v6_ddrx IP給DDR2、DDR3 SDRAM的架構提供一個靜态的AXI4。其相關的文檔介紹可參考UG406_01_43_031609。

    DDR3存儲器控制器應支援廣泛的存儲器速率和配置,以滿足各種應用需求。例如, ECP3 DDR3存儲器控制器支援高達800Mb/s的DDR3器件速率,8至64位的存儲器資料通道(帶有x8或x16 DDR3器件),并且同時支援雙列直插式存儲器塊(Dual Inline Memory Modules,DIMM)和單個存儲器的器件。

    DDR3存儲器控制器必須為各種存儲器通路實作不同的時序要求。一些要求對于我們的目标應用來說非常重要,包括以下幾個方面:

    DDR3存儲器使用“類似cache”的bank進行組織,每個器件帶有8個bank。通路最近工作(打開)的bank比通路未工作的(關閉)的bank速度快。 可使用4位、8位或交叉存取方式進行突發(burst)模式讀通路。 根據存儲器速率和使用者設定,CAS和寫延遲都是可變的。從讀請求轉換為寫請求需要額外的延遲時間,因為雙向的資料總線必須改變傳輸方向。

    最近在研究使用Xilinx V6闆子上的DDR3 SDRAM存儲器,想用其來實作網絡資料的緩存,仔細閱覽過一遍官網提供的文檔UG406_01_43_031609。其實DDR3相較于前面的DDR系列,基礎架構并沒什麼大的差別,它是為了解決DDR2發展所面臨的限制而催生的産物。從更高的外部資料傳輸率,更先進的位址/指令與控制總線的拓撲結構,保證性能時進一步降低功耗這主要的三個方面的需求來作為設計目标的。本文檔中提及的write leveling和read leveling均是以前未曾遇過的。Wrtie leveling是一個完全自動的過程,隻要控制器支援write leveling,上電後就可以進行。Write leveling主要解決子產品中每個存儲器裝置的選通脈沖(DQS)和時鐘(CK)産生時鐘歪斜

繼續閱讀