多年來,對芯片外部DDR SDRAM的訪問已經成為SoC設計的一個不可分割的部分。當考慮DDR IP時,SoC設計師面臨的一個選擇是自己做IP還是從第三方IP供應商那里獲得授權。 正如大多數IP一樣,選擇DDR接口IP的標準包括面積、功耗、功能和性能。隨著更多的功能和應用被集成到SoC之中,CPU所需的處理能力和其它處理功能也必須相應地提高。與處理能力提高攜手并進的通常是DDR帶寬需求的提高,因此性能便成為了選擇DDR IP的最重要標準。 起初,DDR SDRAM被設計成目前架構的一個主要原因是為了滿足我們熟知的DDR SDRAM體系結構要求。它的主要目的就是創造一種小尺寸和引腳數量少的低成本片外存儲器。SDRAM的存儲單元非常小,它們由單通道柵極晶體管和儲存電荷的電容構成。該接口通過共享相同的、用于讀寫的總線和分清行列的地址引腳來降低使用的引腳數量。雖然實現低成本這一主要目標得以實現,但它導致了一種不能以高效的方式進行隨機尋址的芯片外存儲器架構。為適應數據寫入或從SDRAM讀出的低效率,SoC需要使用一個控制器來管理對DDR SDRAM的訪問。當今絕大多數存儲器控制器都會考慮DDR SDRAM的低效性,并且試圖重組到DDR SDRAM的命令,以將無效指令數量減至最少,并提高SoC訪問SDRAM的效率(帶寬)。 DDR SDRAM控制器傳統上通過使用一個先入先出(FIFO)架構來評估流量請求隊列(通常被稱為一種前瞻性)來對流量重新排序。后來,隨著技術進步引入了一種新的DDR控制器,它充分利用了一種內容可尋址存儲器(CAM)前瞻性架構來對流量重新排序。 【分頁導航】 第1頁:背景介紹 第2頁:DDR SDRAM訪問特性和效率測試 第3頁:DDR控制器效率對比 DDR SDRAM訪問特性 DDR SDRAM芯片內包含多個獨立的存儲體(Banks)—典型的是8個存儲體,如圖1所示。每個存儲體可以處于閑置、活躍或者依次充電的狀態。通過一個“激活”指令可以“打開”一個閑置bank,并將規定行的數據讀進一個感知放大器陣列中,它存儲了所有讀寫操作期間的數據。 這個過程需要一些時間,并導致在從任何給定行中讀取數據前就增加了開銷。訪問存儲于讀出放大器中的數據的速度會更快。此外,每條讀/寫命令在行內使用一個列地址來訪問數據。 若存儲控制器想要訪問一個不同的行,它必須首先讓該存儲體的讀出放大器返回到一個閑置狀態,準備去讀出下一行。這被稱作“預充電”命令,或者“關閉”這一行。在該存儲體完全變成閑置狀態以便于在可以接受另一個激活指令之前,有一段必須清空的最短時間。 訪問時間從最長到最短,分為如下的層級: 1,在另一不同的行被打開時,訪問一行(要求處于打開的行先被關閉,另一個新的行才被打開) 2,訪問一個處于關閉的行(要求該行被打開) 3,訪問當前被打開的行除了訪問時間之外,存儲控制器的實現還有許多其它時序考慮因素(如:刷新、斷電和初始化)。例如:將存儲子系統從讀狀態轉變為寫狀態,或者從寫狀態轉變為讀狀態,會造成與接口總線轉換方向相關的延遲。如果發生次數太多,就會降低數據從SDRAM移進和移出的整體效率。 測量效率 數據傳輸效率是通過一個存儲器接口的可用數據傳輸帶寬數值的一種度量。效率通常由一種特定的存儲器接口實現方式的理論最大存儲器傳輸帶寬的一個百分比來表示。 例如,如果一個DDR3SDRAM是八位寬度,工作在800MHz時鐘,那么理論上的最大傳輸速率為1600Mbps。如果該SDRAM實現的平均傳輸速率為800Mbps,那么該存儲控制器的效率為50%。各種不同的存儲控制器實現的效率通常為25%~90%。顯而易見,一個低效的設計實現會嚴重影響關鍵系統特性,增加整體解決方案的成本。 在某些情況下,高數據傳輸效率難以實現,這是因為SoC中的訪問請求者的訪問模式是隨機的。因為打開的行具有更快的訪問時間,如果存儲器請求多數時間在一個打開的行上工作,那么在這些訪問期間就可以實現理論上的最大帶寬。如果存儲器訪問是凌亂分散的,那么可能很難再次訪問到相同的行,導致了去訪問不同的行更長的訪問時間,因此縮短了平均訪問時間,降低了整體的數據傳輸速率。很顯然,如果一個存儲控制器可以評估流量模式和發現一種以更高效的方式給操作排序的可能性—如集合在一起成組地訪問相同的存儲行,而不是僅僅依照存儲訪問的請求順序來執行它們,或者為高優先級數據提供快速訪問—那么就可以減小低效率流量模式所帶來的影響。一個能夠并特別擅長管理隨機流量的DDR存儲控制器可以顯著地提高效率。 【分頁導航】 第1頁:背景介紹 第2頁:DDR SDRAM訪問特性和效率測試 第3頁:DDR控制器效率對比 DDR控制器效率對比 圖2展示了由一個基于FIFO的DDR控制器的效率分析,數據結果來自于市場基準研究。這些實例模式代表了三種不同的流量類型,分別被標記為模式_80_20、模式_50_50和模式_20_80。標記的命名代表了模式的類型:標簽中第一個數字代表連續或遞增訪問的百分比,第二個數字代表隨機訪問的百分比。隨著隨機部分的百分比從20%增長到80%,效率則如預期一樣降低。模式中的連續部分為針對一個打開頁的流量請求,這是設計的最佳情況,提供了最高的效率。流量的隨機部分抑或是對一個關閉頁的訪問,或者是對一個帶有不同打開頁的存儲體的訪問請求。通過深入分析,模式_20_80的效率大概為55%,模式_50_50的效率大概為60%,而模式_80_20的效率可以達到75%。 圖3說明了一個基于CAM的DDR控制器在執行這三種相同模式時產生的效率結果。帶有32個條目的CAM的效率大于或者等于基于FIFO的DDR控制器的效率結果,而擁有64個條目的CAM的效率結果則明顯更高。帶有64個條目的基于CAM的DDR控制器在模式_80_20下效率結果為接近98%,模式_50_50為80%,模式_20_80為65%。這表明了相對于基于FIFO的控制器,基于CAM的架構在效率上實現了顯著的提高—這意味著提高了帶寬。 由于DRAM的存儲體(Bank)架構,設計師過去不得不很困難地分配到DDR SDRAM的存儲空間訪問,以使SoC循環讀寫8個可用的存儲體。在多種模式下循環訪問存儲體可使控制器工作在存儲體架構范圍內,以提供合理的效率。然而,一些SoC系統并沒有在不同存儲體和DDR控制器之間定期發送循環數據流,而這正是基于CAM架構的控制器足以勝任的。基于CAM的架構可以調整整個指令序列,甚至為了更高的效率可以將最隨機的流量模式重新排序。 隨機模式1和隨機模式2是兩種不同種類的非常隨機的數據流,但它們不在各存儲體間循環。隨機/連續模式將隨機模式與相似的連續模式結合在一起,并應用到那些在以上例子討論過的情況中。在圖4中,FIFO_CTL的效率在隨機/連續模式下有所提高,但是在圖中可以看到基于CAM的控制器的所有模式得到的效率數值均比FIFO_CTL的效率高出很多。 【分頁導航】 第1頁:背景介紹 第2頁:DDR SDRAM訪問特性和效率測試 第3頁:DDR控制器效率對比 |