帳號:
密碼:
最新動態
產業快訊
CTIMES / 文章 /
平台式記憶體控制器的考量及實作
 

【作者: 林群超】   2006年05月02日 星期二

瀏覽人次:【5908】

近年來手持裝置日漸普遍,體積小且具備高運算能力的裝置,已是必然的潮流。為了滿足多媒體應用日漸增多,手持裝置的記憶體容量需求亦隨之增加,因此設計高效率的記憶體控制器(Memory Controller;MC)來控制大量資料的存取,將是必然趨勢,而平台式設計方法(Platform Based Design Methodology)是目前最普遍也最有效率的設計流程。


本文擬以在AMBA-Based的設計平台上,針對平台式記憶體控制器的設計,就系統架構面以及應用需求面來考量,做一詳盡的介紹及分析。


近年隨著各式各樣的資訊產品問世,SoC的設計理念已促使平台式設計方法的興起,平台設計的關鍵想法就在於重複使用的觀念,它顛覆了以往方式,是為了特殊需求而去設計的單一特定電路(ASIC Design)。


所謂平台式設計方法的訴求在於能夠提供產品更快速的上市時間。然而,另一方面,由於是在既定的平台上進行開發,產品差異化的程度也將受到侷限,因此在開發平台上所使用的IP,就需考量到設計的彈性。將IP延伸做參數化的設計(Configurable IP),使得IP能在平台上根據不同的需求,透過參數的調整控制,便能重複被使用,縮減設計的時間。


此外,一個完整可行的設計平台必須包含微處理器(MPU)或提高運算效能的數位訊號處理器(DSP)架構,並提供預先驗証過的軟體和硬體、編輯器、EDA以及建立軟體工具使用流程(Tool Chain)等等。


因此,在本文中將探討設計符合平台式記憶體控制器IP所需考量到的一些情況,如系統對記憶體頻寬的需求、匯流排(BUS)上的MASTER(如MPU、DSP、DMA 等)對記憶體存取的仲裁原則(Arbitration Rule)、存取資料延遲的解決方式以及參數調整的彈性等等。


在探討記憶體控制器IP的設計考量之前,先介紹記憶體的種類及用途。記憶體可分為兩大類,一是靜態式記憶體(Static Memory),另一是動態式記憶體(Dynamic Memory)。靜態式記憶體的分類大抵可分為SRAM、ROM、Flash等,而動態式記憶體則有DRAM、SDRAM、DDR以及DDR-II 等。靜態式記憶體與動態式記憶體的差別,在於動態式記憶體需透過預充電(Precharge)及更新(Refresh)的方式才能將資料儲存,而靜態式記憶體的資料儲存具有非揮發性(Non-Volatile),不會因斷電而造成資料的遺失。


一個完整的平台式架構設計會使用哪些種類的靜態記憶體以及動態記憶體,將會在第二節裡就這部分逐一說明;第三節會就設計記憶體控制器IP時,討論在系統架構面及應用需求面的考量及分析;第四節則探討利用現有完整的平台對IP進行驗證,而完整的平台則會使用工研院晶片中心所開發的PAC Main Board[1]。最後,會對未來記憶體的使用趨勢以及記憶體控制器的設計取向做一結語。


記憶體類型的選擇及考量

記憶體主要功能是為了要儲存資料及程式,分為主要記憶體與輔助記憶體兩類,如(圖一)所示。主要記憶體通常是由半導體元件構成,資料的存取速度較快,用於置放執行的程式或即將取用的資料。而輔助記憶體的單位成本低且具有大量儲存空間,例如硬碟、光碟等,這些裝置存取速度較慢但可儲存大量資料,一些非急迫性的程式資料都可存放於此,但執行程式時要先將程式從輔助記憶體搬到主記憶體才能執行。本章節將探討各類記憶體,並評估較符合系統需求的記憶體。


靜態記憶體

靜態記憶體包含唯讀的ROM、可程式化的ROM、靜態隨機存取記憶體(SRAM)以及快閃記憶體(Flash)。一完整的平台需要有初始的程式(Boot Code),以初始化系統周邊的設定,完成後才能載入OS Kernel,而初始程式就可放在ROM或是Flash裡。當平台上有新加入或移除的周邊,則需修改初始程式,修改完之後透過燒錄的方式將初始程式重置於ROM或是Flash裡。ROM與Flash的主要用途是以讀為主,兩者的資料寫入時間較長,不適合用於大量資料的存取。


靜態隨機存取記憶體由於存取速度快,常被運用於系統中的快取記憶體(Cached Memory),由於SRAM 中一位元的儲存細胞元(Memory Cell)需使用四個電晶體,如(圖二)所示,非常佔用面積,消耗功率的情形也較為嚴重,所以系統上採用的SRAM 大小也就特別受到限制。


SRAM一般都被運用於微處理器或DSP中當作Instruction Memory、Data Memory或LocalMemory來滿足一些即時高速的運算。


動態記憶體

動態記憶體所指的也就是動態隨機存取記憶體,儲存一位元的資料只需要一電容,當列解碼線(RAS)與行解碼線(CAS)動作時,可令MOSFET接通允許電容電壓被讀取或寫入。由於電容的電壓儲存時有漏電現象或傳輸時的耗損,除了在寫入與讀出時都經過放大之外,每一列的所有位元經過一段時間就必須將資料讀出後再寫入一次,這個工作稱為DRAM的更新,(圖三)為動態隨機存取記憶體的存取控制。


DRAM最大的優勢是容量大,約為SRAM的四倍,不但省電又比SRAM便宜,但DRAM需重複更新以及預充電的設計,導致使用上的不方便,也影響到存取的時間,因此從使用效率上來看也就比不上SRAM。


由於DRAM的預充電時間限制了它的存取速度,這個天生的障礙很難改善分散資料的隨機存取時間。但是對於猝發模式(Burst Mode)的存取,卻可預知下一筆資料的位址,因此有了SDRAM(Synchronous DRAM)的問世。SDRAM利用交叉記憶模組(Interleaved Memory Module)及多重管線化(Multi-Pipeline)的技術,改善了DRAM在猝發模式下的存取時間,在連續存取記憶體中可達到與外部時脈同步存取的效率,但對第一筆資料存取時間的延遲仍無法改善。


選擇合適的記憶體

在考量到微處理器及DSP運算處理速度需要有高速的儲存裝置搭配,SRAM也就勢必得在平台架構中使用;而儲存啟動系統之初始程式的記憶體,則以可燒入式的ROM或Flash為考量。


在選取動態隨機存取記憶體方面,以市面上的產品種類來說,則有更多的選擇,有一般標準的SDRAM、Mobile SDRAM(Cellular SDRAM)、Pseudo SRAM、DDR、Mobile DDR以及DDR-II等,可以考量平台的低功率設計或效能來選擇適當的SDRAM。目前市面上開發成熟的手持式產品,為了增加待機時間而使用的低功率設計,大部分皆採用Mobile SDRAM、Mobile DDR;若是以效能為主的準系統,則會選擇以DDR、DDR-II為主。因此,在記憶體選擇上仍要以實際應用的需求為主要考量。


@大標;設計記憶體控制器IP的考量與分析


接下來,就記憶體控制IP在設計過程中可能遇到的問題,以及如何解決問題或找出更好的答案,來做討論。分析此設計主要分兩個方向來說明,一是系統架構面,另一是應用需求面,以求能使記憶體的存取效率達到最快。


系統架構面之考量

在一完整的平台架構中,可能存在著一些造成記憶體存取速度不佳的情況,而這些問題大致整理如下:


  • (1)在單層匯流排(Single Layer Bus)上同時有多個MASTER上來對記憶體做存取的情況;


  • (2)當存取時間成為主要瓶頸時,該如何克服;


  • (3)若平台為多層匯流排架構(Multi-Layer Bus)時,如何安排不同層間的MASTER 對記憶體做存取,而不同層的MASTER又同時對記憶體發出要求存取的動作;


  • (4)設計的IP若因平台上有不同模組移除或加入,在不影響設計時間的情況下,該如何做調整。



首先,要解決上述第一個問題,一般在BUS上都會有一些仲裁原則來決定誰先取得BUS的使用權,則誰先就可先對記憶體做存取,而仲裁原則有一般最常見的如Round-Robin、Fixed Priority或Priority programmed by register等[2]。而問題二的情況大部分發生在一些隨機的讀或寫相間隔錯置,若能在某一段的時間間隔裡,在不影響到資料相依性的情況下,去對這些讀寫指令做有效的排程(Scheduling),讓讀與寫的動作能集中在最合適的組合下完成讀寫,如此一來就能將讀寫的延遲情況降低許多。


在問題三的情況中,可以透過增加傳接埠(Access Port)的方式來實現[2],如(圖四)所示為Dual-Port的SDRAM MC,但在選用記憶體時則需考量記憶體是否也具有Dual-Port access的能力,且記憶體控制器IP也須有仲裁原則(如同問題一的解決方式)來決定由哪一個MASTER可以對記憶體進行存取。


在問題四的情況中,可以透過參數化(configurable)的設計[2],經由修改暫存器內部的值做來Enable/Disable 模組中的一些功能模組,而這也是SoC設計所提倡的中心思想,讓IP不斷地被重複利用,發揮最大的效益。


應用需求面之考量

首先,從目前最熱門的多媒體應用H.264來看,其資料處理量相當大,如Motion Estimation或Texture Coding等。這些大資料的運算及搬移,在某一段時間域裡會有很高的機會再次被使用到,因此在記憶體控制器IP中加入讀/寫緩衝區(R/W Data Buffer),讓之前被讀出或寫入的資料重複被利用,若下一次讀寫的資料在讀/寫緩衝區中命中(Hit),則可省下資料讀取或寫入所花的延遲時間;但如果發生在緩衝區找不到資料時(Miss),則就是這次讀寫所多花的一段時間延遲(Miss Penalty)。


H.264的運算處理多以MB(Macro Block)為單位,若能將這些MB中的資料及一些資訊在記憶體寫入時做適當的位置安排,使得需要從記憶體讀出資料時,能以最快的方式連續將資料一併送出。


然而,若此設計能滿足多媒體的應用,卻往往可能影響到記憶體控制器IP設計的彈性;若用在網路或無線通訊的領域上,則用途可能受到侷限,甚至可能得重新設計新的架構。


記憶體控制器IP的驗證環境

在討論完設計IP所需考量的情況之後,接著探討在完成IP設計之後,要如何驗證IP,而接下來介紹的環境將會以工研院晶片中心所開發的PAC Main Board為主[4],並搭配一些ARM的CM(Core Module)及LT(Logic Tile)Module,並以ARM 環境中的軟體來驗證。


工作站的模擬及測試

首先,在工作站的環境中,將設計的IP加入記憶體的Behavior Model一起做模擬,確認基本的讀寫動作是否正確。之後使用nLint將IP重新再編譯過,將邏輯上或一些可能會發生錯誤的情況排除,再進行下一步驟做合成,完成後產生NetList File,再回到之前的步驟重新做一次模擬,而此次模擬若能完成通過,則此IP的初步驗證就算完成。


接下來,將IP整合進ARM所提供的VIP(Verification IP)環境中,這是一個完整的AMBA-Based平台,可供設計者將自行設計的IP整合進這平台中,對自己的IP做驗證,若能完成測試,則可保證這個IP是AMBA Compliance(符合ARM AMBA BUS Protocol),適用於ARM所提供的環境中。


之後可在PC端,利用ARM所開發的ADS(ARM Development Suit)撰寫C code,經編譯過後成為Binary File,將此Binary File放到ARM的EASY下去實際模擬,若結果正確並與C code符合,如此一來,這IP在工作站的驗證算是初步完成。


Board-Level 的模擬及測試

再來,將設計的IP經由FCII做FPGA的合成,根據PAC Main Board所選用的FPGA Device來合成。合成完之後,需將產生的edf File加入平台架構中,再透過Xilinx的ISE做P&R,P&R完成之後就將產生的BIT File透過ARM的Multi-ICE將此架構下載至PAC Main Board的FPGA裡,如(圖五)所示。


接下來透過Firmware來驅動PAC MainBoard,透過撰寫好的Machine Code來測試是否能完成一些應用,如MP3的撥放或解壓縮JPEG的圖片等,如(圖六)所示,就是一個JPEG 的範例。


結語

目前在設計記憶體控制器IP的領域中,有Denali的Databahn Memory Solutions[3]、Synopsys的Designware[4]以及ARM的PrimeCell[5],這些公司所開發的記憶體控制器IP產生器(Generator),透過一些參數的設定以及選項的勾選之後,便可產生一個滿足使用者需求的IP,如此一來,IP的產生以及運用更具有彈性。透過IP 的產生器來輔助完成設計,能簡化設計平台式架構的流程,且在短時間內就能透過所產生的IP,來驗證架構的可行性,但缺點是這些IP產生器的授權需耗費較大的成本,在技術不受限於人的情況下,自行設計開發也就是另一途徑。


由於目前市面上的記憶體製造技術日益更新,目前的主流已是DDR及DDR-II,但由於記憶體的產品週期極短,也造成記憶體控制器IP設計的風險。因此,記憶體控制器IP在設計時,需考慮到未來新一代記憶體產品的修改彈性,盡量透過參數化的方式,使其能有重複利用的機會,以求快速整合到不同的平台架構上,達到最快速的SoC設計方式。(作者任職於工研院系統晶片中心系統晶片整合技術組/多媒體設計課)


延 伸 閱 讀

在測試完成之前,時隙1定時器又截止,此時一個DMA記憶體-埠測試模組被啟動,它設置任意的DMA通道並退出。現在,DMA已在後台執行,而原來的複製測試又重新執行。隨後又產生一個時隙3定時器中斷,使用DMA通道5啟動記憶體-記憶體傳輸並退出。相關介紹請見「 自動實現半導體元件系統強化測試的方法」一文。

DMA 的傳輸操作可以發生在ADSP-BF531/BF532/BF533處理器的內部記憶體到與有DMA能力的外部設備之間。而且,DMA傳輸也能夠在DMA外部設備和連接到外部記憶體介面的外部設備(包括SDRAM控制器和非同步存儲控制器)之間。你可在「 記憶體- SDRAM 」一文中得到進一步的介紹。

從處理器的角度來看,CPU 根本不知道發生了什麼事;而從快取記憶體與主記憶體中讀取資料的分別,僅在於傳回資料所花的時間而已。就儲存容量而言,快取記憶體比RAM 小得多。因此,主記憶體中的每筆資料不可能存放在快取中。在「 儲存空間的族譜」一文為你做了相關的評析。

市場動態

記憶體的DMA控制器提供高帶寬的資料傳輸能力,它能夠在內部L1/L2記憶體和外部記憶體(包括PCI存儲空間)之間執行代碼或者資料的塊傳輸。相關介紹請見「ADSP-21535 Blackfin的Mem DMA高速通信」一文。

Silicon Labs.宣佈推出快閃記憶體容量加倍的新型微控制器C8051F316和C8051F317,內含16KB快閃記憶體並採用4 × 4毫米的24接腳QFN封裝,最適合為相機模組、行動電話和可攜式遊戲機等空間有限應用,以提供所要求的快閃記憶體、低功耗和精巧體積。你可在「 Silicon Labs.推出記憶體容量更大的小型微控制器」一文中得到進一步的介紹。

華邦再推出新的4Mb快閃記憶體元件,提供客戶更低耗電量、高效能及高穩定性的產品,以滿足客戶在應用設計上的需求。在「 華邦推出新製程技術─快閃記憶體解決方案」一文為你做了相關的評析。

相關文章
推動未來車用技術發展
節流:電源管理的便利效能
開源:再生能源與永續經營
從能源、電網到智慧電網
以無線物聯網系統監測確保室內空氣品質
comments powered by Disqus
相關討論
  相關新聞
» Nordic Thingy:91 X平臺簡化蜂巢式物聯網和Wi-Fi定位應用的原型開發
» 豪威集團推出用於存在檢測、人臉辨識和常開功能的超小尺寸感測器
» ST推廣智慧感測器與碳化矽發展 強化於AI與能源應用價值
» ST:AI兩大挑戰在於耗能及部署便利性 兩者直接影響AI普及速度
» 慧榮獲ISO 26262 ASIL B Ready與ASPICE CL2認證 提供車用級安全儲存方案


刊登廣告 新聞信箱 讀者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 遠播資訊股份有限公司版權所有 Powered by O3  v3.20.2048.172.69.6.70
地址:台北數位產業園區(digiBlock Taipei) 103台北市大同區承德路三段287-2號A棟204室
電話 (02)2585-5526 #0 轉接至總機 /  E-Mail: [email protected]