国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

藏在系統核心芯片中的DRAM控制器

發布時間:2012-12-10 10:02    發布者:eechina
關鍵詞: DRAM , 控制器
作者:Altera公司總編輯Ron Wilson

DRAM控制器藏在您的系統核心芯片系統(SoC)中——可能有兩個,甚至是四個。有一些精心制作的邏輯小模塊,用于連接SoC內部和外部DRAM,它們并沒有引起系統設計人員的注意。它們有可能造成很大的問題,浪費帶寬,占用太多的能耗,甚至導致數據被破壞。

DRAM控制器能否正常工作會使得系統有很大的不同,有的系統能夠滿足其設計要求,而有的系統則運行緩慢,過熱,甚至失敗。不論哪種情況,最終是由系統設計團隊承擔責任,他們一般很少掌握控制器的信息。

成功還是失敗都源自我們要求DRAM控制器所做的工作。模塊不僅僅是一個接口。在高級系統設計中,DRAM控制器必須很好的處理SoC體系結構復雜而又難以預測的存儲器申請,以及一側的系統軟件申請,還有另一側DRAM芯片設計復雜的時序和約束要求。能否處理好這些關系會在多個方面影響DRAM吞吐量:這很容易在系統性能上體現出來。

為解釋這些問題——以及系統設計人員能夠對此做什么,我們需要回答三個主要問題。首先,我們應檢查DRAM芯片提出的要求。然后,需要討論SoC體系結構對存儲器訪問模式的影響,第三,研究一個高級DRAM控制器的結構和功能。通過這三部分,我們得出系統設計的一些結論。

DRAM需要什么

系統規劃對外部存儲器的要求是確定性隨機訪問:任何時候來自任何位置的任意字,具有固定延時。但是,確定性隨機訪問恰恰是現代DDR3 DRAM所不能提供的。

相反,DRAM提供任何您需要的字,但是具有復雜的時序約束,因此,很難知道數據究竟什么時候出現。 圖1中“簡化的”狀態轉換圖簡單解釋了為什么會這么復雜。這種復雜度也意味著,命令到達DRAM芯片的順序會對時序以及帶寬有很大的影響。要理解這一點,我們需要深入了解DDR3 DRAM。


圖1.DDR DRAM芯片“簡化的”狀態圖顯示了控制器設計人員所面臨的復雜問題。

DRAM芯片將數據存儲在電容陣列中。當您讀寫數據時,您并不會直接訪問陣列。而是在讀寫之前,您激活陣列中的某一行。激活命令使得DRAM讀取該行中的所有列的所有比特,將其送入傳感放大器塊,它實際上用作該行的本地寄存器文件。然后,您可以對傳感放大器上的數據發出讀寫命令。通過這種方式,能夠非常快的讀寫已經激活的行:一般是三到五個時鐘來開始一次突發傳送,然后,在突發期間傳送每個字節需要一個時鐘。例如,這種時序安排使得DDR3 DRAM非常適合L2高速緩存數據交換。

但是,如果您不使用已經激活的行,那么會非常復雜。改變行時,即使是一個字節,您也必須對當前行去激活,然后激活一個新行。這一過程需要確定已經在一段時間內激活了當前行。由于讀取DRAM單元是破壞性的,因此需要最小延時:您激活了一行后,DRAM實際上是將最新到達傳感放大器上的數據復制回比特單元陣列中,然后刷新行。您可以在此期間讀寫當前行,但是,要確定在您改變行之前完成了這一過程。

即使滿足了這一要求,也還有其他問題。您必須對陣列預充電。預充電命令使得傳感放大器中的數據無效,提升陣列和傳感放大器輸入之間導線上的電壓,使得電壓值位于邏輯0和邏輯1電平之間。這種準備是必要的,比特單元電容上很小的電荷都會傳送到導線上,以某種方式提示傳感放大器。

對導線進行預充電之后,您必須向新行發送一個激活命令,等待操作完成,然后,您最終可以發送一個讀操作新命令。加上所有涉及到的延時后,即,讀取字節序列的最差情況,每一字節都來自不同的行,這要比讀取來自一個新行連續位置相同數量字節的時間慢十倍。

這種不同還只是部分問題。如圖2 所示,DDR DRAM有多個塊:與比特單元無關的陣列。DDR3 DRAM中有八個塊,每一塊都有自己排列成行的傳感放大器。因此,原理上,您可以通過激活每一個塊中的一行,讀寫較長的突發,然后,對每一激活后的行進行讀寫操作——實際上是對塊進行間插操作。唯一增加的延時是連接每一塊的傳感放大器和芯片內部總線的緩沖的切換時間。這一延時要比對相同塊中一個新行進行預充電和激活的時間短得多。


圖2.一個典型的DDR DRAM結構圖。一個DDR3器件會有8個塊,而不是4個。

這就是原理。實際中,您可以對塊進行間插處理,但是有一個限制,不是基于DRAM邏輯,而是芯片能夠承受的熱量。這種限制可以通過著名的“滾動四塊訪問窗口”,即,tRAW來表達:您一次能夠有四個激活塊的最長時間。這一規則實際上有例外,只要您從一個塊轉向下一塊之前,在一個塊上保持一定的時間,那么,您可以有連續激活的8個塊。但是您應該知道:這比較復雜。

建立一個控制器

與前面所述不同的是DRAM時序非常復雜,接近混沌。從DRAM芯片設計人員的角度看,這非常合理,但是,很難滿足多核SoC的需求。DRAM序列或者時序命令上看起來無關緊要的小改動會導致您訪問存儲器的帶寬的巨大變化。由于存儲器帶寬通常是關鍵任務的瓶頸所在,因此,帶寬的變化很快就會影響系統性能。然而,命令序列和時序來自應用程序和系統軟件之間,以及系統硬件各種單元之間復雜的交互——包括緩存控制器、存儲器管理器、直接存儲器訪問(DMA)控制器和加速器,以及DRAM控制器。

SoC的功能越來越強大,這種情況會更加復雜。目前,一個多核系統級IC會有同時運行的兩個甚至更多的多線程CPU,導致共享L2高速緩存來讀取指令線,隨機對數據線進行讀寫操作。同時,計算加速器以自己的方式遍歷數據結構。一個器件可以處理流視頻,另一個用于矩陣乘法預讀取,第三個執行路由表的隨機訪問。增加一個散射收集DMA控制器,處理光纖接口、硬盤和顯示器之間的數據,結果是,在DRAM控制器的系統側會有些不協調。

如果DRAM控制器只是按照系統接收順序進行操作,那么,優化DRAM操作的工作會同等落在規劃人員、設計人員和軟件開發人員上——這是很難做到的。Altera公司戰略市場經理Argy Krikelis提醒說:“特別是多核設計,規劃人員遇到定位和性能問題。”責任落在DRAM控制器上,那么,盡可能利用其信息消除這種不協調,轉換為經過優化的命令流。

深入了解DRAM控制器就會知道,這些模塊的設計人員怎樣處理這些難題。您可以認為一個現代DRAM控制器有三個主要模塊——物理接口、命令處理器以及事物處理器——如圖3 所示。


圖3.一個現代DRAM控制器涉及到事物處理器、命令處理器和物理接口。

物理接口連接DRAM芯片或者存儲器模塊。它讀取來自命令處理器的一個命令流,將具有正確時序的命令發送至DRAM芯片,管理相關的數據字節流。接口收發器、命令和數據同步緩沖,以及產生正確命令和數據時序的狀態機都含在這一模塊中。而且,還有用于進行復雜的初始化操作的狀態機,校準DDR3 DRAM規范設定的序列,如圖1所示。此外,某些應用的物理接口還會包括自測試、診斷和誤碼探測以及糾錯硬件。當您改變DRAM的容量或者速率等級時,必須調整物理接口。

物理接口的上游是命令處理器。這一模塊跟蹤DRAM的狀態,將到達總線讀寫周期轉換為相應的DRAM命令序列。例如,命令處理器會找到通過其輸入隊列散射連續字的總線讀序列,然后,向其輸出隊列發出預充電,激活,以及模塊讀命令。對此,命令處理器必須知道當發出新命令后,將打開哪一芯片的哪一塊的哪一行。在某些設計中,命令處理器還處理地址重新映射,在多個塊上擴展一個連續的數據結構。

隨著對帶寬需求的增長,命令處理器的復雜度也在不斷提高。例如,處理器會提前處理其輸入隊列,重新安排操作,盡可能保持在激活的行上,重疊預充電讀操作,或者對塊進行間插操作。最重要的是,處理器會盡量避免一個塊的行之間出現乒乓效應。必須確定所有這些調整,并且隨時能夠進行調整。 這方面的努力會有其回報。Krikelis說:“我們看到在某些應用中,分組和重新排序能夠實現92%的理論最大DRAM帶寬。”

最后,事物處理器位于命令處理器和SoC的其他部分之間。一般有一些通道連接至SoC的高速中心交換結構上。事物處理器的主要工作是將到達的各種通道的讀寫數據流進行組合,加上優先級,這樣,每一通道得到了所需的延時和帶寬——因此,每一高速緩存控制器、DMA引擎或者這些通道另一端的加速器也得到了所需的延時和帶寬。

在動態環境中選擇這種優先級方案并不容易。如果您不能精確的預測每一通道的數據流特性,那么,這會非常困難。理想情況下,工作負荷是固定的,因此,您可以為其優化優先級方案;蛘,會有一些清晰的訪問模式,隨著數據流的變化而提供動態調整優先級。Krikelis說,系統規劃人員和控制器設計人員研究了這一問題,使用了從表格到商用DRAM仿真工具的所有工具。但,還是無法讓工作更簡單一些。

在某些情況下,應用的特征很明顯,事物處理器會承擔更多的工作。Krikelis說,可以對最近的DRAM行進行高速緩存操作,或者控制器中經常被激活的行進行高速緩存操作。而且,在某些情況下,設計人員可以針對某些通道進行一些特定任務的重新排序或者某些讀寫操作。

高級DRAM控制器中的三個主要模塊協同工作,能夠使復雜多核SoC盡可能接近最大理論DRAM帶寬。但是提高帶寬可能需要犧牲延時,最高優先級線程除外。某些控制器設計會有32或者64深命令序列,意味著,低優先級訪問會長時間停留在序列中。一般而言,DRAM控制器能夠進行的工作越多,它處理的SoC體系結構和組合任務就越具體。這就把難題留給了系統設計人員。

回到系統級

您可能會說:“很有趣。對此,我應該做什么?”正如我們在開始所闡述的,軟件、系統硬件以及控制器之間的交互會決定您從DRAM那里能夠得到的實際帶寬。作為一名系統設計人員,您的確有一定的自由度。

最好的方法一般是采用SoC供應商的參考設計。參考設計團隊完成了他們的工作。理想情況下,您完全按照設計人員所希望的方式來使用SoC。Krikelis提醒說:“如果您購買了ASSP,那就沒有太多的選擇。DRAM控制器和芯片中的其他模塊會針對特定的應用進行整體優化。”

參考設計中的這些軟件也是在知道了這些優化后才編寫的。例如,經驗豐富的編程人員會盡可能保持存儲器參考位于行中,可以同時打開,以便減少高速緩存未命中和DRAM行未命中等問題。他們能夠熟練的在塊上分配數據結構,采用間插操作。他們可以安排CPU內核、加速器和DMA的工作,避免控制器可能解決不了的沖突問題。他們知道,對于控制器中未處理器的命令,DRAM、高速緩存以及命令隊列中的數據,數據一致性是他們要解決的關鍵問題。采用這類參考設計的系統設計人員的工作是盡量不打破這種一致性。

但是有些時候,系統設計人員會有更大的自由度。Krikelis指出,如果DRAM物理接口是可配置的,您可以通過簡單的使用更大的DRAM來提高存儲器的有效帶寬。在某些情況下,可以調整一些DRAM控制器的內部參數,例如,分配給通道的優先級、重新排序算法,以及命令隊列的深度等。

但是,在某些情況下,僅僅進行調整是不夠的。Krikelis提醒說:“沒有一個簡單的答案來滿足所有人的規劃需求。有時候您需要建立自己的訪問抽象層!

對于資金雄厚的有影響的設計團隊,這意味著,與ASSP供應商合作,修改事物處理器,甚至是命令處理器。對于其他規模較大的工程,DRAM帶寬需求會滿足開發ASIC的要求。對于不能滿足ASIC前端成本的設計,替代方案是系統級FPGA。通過這些方法,系統設計人員在控制器的某些部分采用現有的知識產權(IP),設計盡可能多的定制操作和命令處理操作,以滿足其需求。

即使系統團隊選擇不去修改DRAM控制器,他們理解其功能也很重要。很多選擇都能夠實現與DRAM控制器的互操作,從DRAM芯片選擇到數據怎樣在系統中輸入輸出,線程怎樣分配給處理器,應用程序怎樣將數據結構映射到物理存儲器中等。難點是怎樣高效的使用DARM帶寬,最終目的是提高整個系統的性能和能效。



本文地址:http://m.qingdxww.cn/thread-102722-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
rinllow6 發表于 2013-2-13 13:24:15
謝謝。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色偷偷综合网| 手机看片国产精品| 深夜免费视频| 亚洲精品第1页| 丝瓜茄子绿巨人秋葵榴莲污| 自偷自偷自亚洲首页精品| 视频在线观看40分钟免费| 天使萌痴汉在线中文字幕| 香蕉97超级碰碰碰免费公| 亚洲欧美日韩国产综合| 亚洲综合激情九月婷婷| 亚洲国产精品第一区二区| 亚洲欧美综合另类| av女优快播| 东京热无码中文字幕av专区| 99久久久久精品国产免费麻豆| 69人体阴展网| 黄色网址在线播放| 色婷婷综合久久久久中文一区二区| 暖暖的高清视频在线观看免费中文| 精品无码国产AV一区二区三区| 久久无码AV亚洲精品色午夜| 好湿好滑好硬好爽好深视频| 开心片色99xxxx| 欧洲馒头大肥p| 亚洲国产精品嫩草影院久久| 伊在香蕉国产在线视频| 亚洲综合精品一二三区在线| 色黄网站在线观看| 日韩欧美综合在线二区三区| 一级毛片在线视频| 欧美一区二区在线观看| 欧美性视频在线| 日日视频| 综合色综合| 在线观看成人影院| YELLOW视频在线观看大全| 啊好深啊别拔就射在里面| 国产精品永久免费视频| 萝莉御姐被吸奶| 农村脱精光一级|