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


本文轉自:淺談電路設計中應用DDR3處理緩存問題_若海人生的專欄-CSDN博客

 

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)產生時鍾歪斜


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM