李 哲,田 澤,王世中,鄭 斐
(西安航空計算技術研究所 集成電路與微系統(tǒng)設計航空科技重點實驗室,陜西 西安 710068)
基于PLB4總線的DDR3控制器的設計與優(yōu)化
李 哲,田 澤,王世中,鄭 斐
(西安航空計算技術研究所 集成電路與微系統(tǒng)設計航空科技重點實驗室,陜西 西安 710068)
內存是計算機系統(tǒng)的信息存儲部件,主設備與內存間信息交換的速度是影響系統(tǒng)性能的關鍵因素。PLB總線是IBM提出的嵌入式總線標準,用于主設備與片內存儲以及PCIE、DMA、SRIO等高速設備的互聯(lián),在SoC設計中使用廣泛。該項目中DDR3作為從設備掛接到PLB4總線上,而選用的DDR3控制器IP核基于HIF接口,使用該IP核需要設計一套簡單高效的總線橋邏輯,以滿足系統(tǒng)訪存性能要求。文中提出一種基于PLB4總線接口的DDR3控制器的設計方案,通過對數(shù)據(jù)流、控制流進行深入分析,采用請求合并、多級流水、數(shù)據(jù)預測、地址與控制信息復用、讀數(shù)據(jù)亂序處理等方式,對訪存效率影響較大的總線橋進行了速度和面積優(yōu)化。仿真證明,優(yōu)化后訪存性能得到顯著提升。
內存;性能;速度;面積;優(yōu)化
在高性能SoC設計中,高速的片上總線和高效的片上內存管理是不可或缺的組成部分。DDR3是由JEDEC制定的新一代DDR內存技術標準。在現(xiàn)行的各種總線標準中,IBM公司提出的CoreConnect總線結構具有突出的性能和效率優(yōu)勢,能夠滿足日益復雜化和高速化的SoC設計要求,成為業(yè)內標準總線之一。CoreConnect總線采用分級結構,分別通過PLB(Processor Local Bus)總線和OPB(On-chip Peripheral Bus)總線將高速設備與低速設備分離,同時把讀寫控制寄存器的總線操作獨立開來,形成單獨的DCR(Device Control Register)總線,大大減輕了數(shù)據(jù)總線的負載[1]。它支持各種傳輸操作,總線/事務分離以及地址流水化等功能,最大限度提升總線帶寬,從而提高系統(tǒng)性能[2]。
該項目需要設計滿足PLB4.6協(xié)議標準的總線接口,滿足DDR3協(xié)議規(guī)范的內存控制器。DDR3控制器用于用戶訪問片外DDR3 SDRAM存儲器芯片,它提供了用戶訪問外部存儲器芯片的通道,支持片外SDRAM數(shù)據(jù)位寬度為64位。提供軟件可訪問的DCR接口寄存器,用于根據(jù)不同外存芯片進行大小、延遲等參數(shù)的配置,并能讀取存儲控制器的當前狀態(tài)[3]。
為提高SoC設計效率,采用IP復用技術,從經(jīng)過硅驗證的PLB4從設備IP核中剝離出PLB4從接口,選用成熟的DDR3標準IP核。需要做的主要工作就是從PLB4從接口到DDR3 IP核之間的轉接邏輯,如圖1所示,包括PLB4從接口模塊,DDRC控制器模塊,DDR PHY模塊。其中PLB4從接口模塊后端為MCIF(Memory Control InterFace)總線接口,MCIF總線是IBM公司定義的一種存儲器控制接口,DDRC模塊分為控制器和PHY兩大部分,DDR控制器的主機接口為HIF(Host InterFace)接口,控制器與PHY之間是標準的DFI(DDR PHY Interface)接口。其中DDRC和PHY內部有可配置的寄存器,通過DCR接口訪問。PLB4從接口模塊是DDR3控制器與PLB4總線的接口處理模塊,滿足PLB4的總線規(guī)范要求,可以接收、傳輸外部PLB4總線上的指令和數(shù)據(jù),實現(xiàn)PLB主設備對DDR的訪問。該從接口支持64/128位PLB主設備,支持的操作類型包括1~16字節(jié)單拍、4字、8字line操作和雙字、4字突發(fā)的PLB訪問[4-5]。其中MCIF2HIF模塊,完成從PLB4接口到DDRC控制器核之間的命令和數(shù)據(jù)轉換。
圖1 總體結構
由于PLB從接口后端為標準的MCIF接口,而DDRC控制器主機接口為HIF接口,需要該模塊實現(xiàn)MCIF到HIF的數(shù)據(jù)率匹配、時序映射和轉換功能。MCIF與HIF接口采用同步時鐘,該模塊的轉換效率對訪存效率影響很大,應盡量減少轉換延遲。
2.1 接口時序
MCIF接口讀、寫操作時序如圖2所示。
HIF接口的讀、寫時序如圖3所示。
HIF在進行寫操作時co_ih_rxcmd_valid有效同時寫地址與寫操作類型有效。ih_co_wdata_ptr_valid有效后表示讀操作請求得到響應,然后可以發(fā)出寫數(shù)據(jù)。寫數(shù)據(jù)位寬為256位,一次寫操作可以發(fā)出2個256位的寫數(shù)據(jù)。co_wu_rxcmd_valid為高表示寫入數(shù)據(jù)有效,同寫數(shù)據(jù)一同發(fā)出的還有寫掩碼信號co_wu_rxdata_mask,用來表示傳輸?shù)膶止?jié)。ih_co_stall為高時表示系統(tǒng)忙,直到ih_co_stall變低之前系統(tǒng)無法響應新的請求[3]。
圖2 MCIF接口時序
圖3 HIF接口時序
HIF在進行讀操作時co_ih_rxcmd_valid有效同時讀操作地址與讀操作類型有效。讀token信號co_ih_rxcmd_token有效,ih_co_hpr_credit有效后表示讀操作高優(yōu)先級信用有效,然后可以發(fā)出寫數(shù)據(jù)。讀數(shù)據(jù)位寬為256位,一次讀操作可以讀出2個256位的讀數(shù)據(jù)。ra_co_resp_valid為高表示讀出數(shù)據(jù)有效,同讀數(shù)據(jù)一同讀出的還有讀token信號ra_co_resp_token,用來表示讀出數(shù)據(jù)的token信息[3]。
2.2 數(shù)據(jù)及控制通路設計
由于HIF接口數(shù)據(jù)線為256 bit,而MICF接口數(shù)據(jù)線為128 bit,因此在寫操作時需要讓MCIF接口盡量滿負荷給PLB總線發(fā)送地址響應和請求寫數(shù)據(jù),并將寫數(shù)據(jù)進行緩沖,對于讀操作也需要對HIF返回的讀數(shù)據(jù)進行緩沖。加快回地址響應的速度,可以讓更多的PLB請求進來,并通過增加compaack_fifo與wr_addr_fifo,將進來的PLB請求和配套信息緩存,保證不要丟失請求及配置信息。由于PLB總線是地址和數(shù)據(jù)獨立的,因此可以對寫數(shù)據(jù)單獨設計一個FIFO進行緩沖,與addr_fifo形成流水。
通過分析得出該模塊需要使用4個FIFO:compaack_fifo、wr_addr_fifo、wr_data_fifo、rddata_fifo。compaack_fifo用于各個命令的調度、緩沖寫請求并返回地址響應和寫完成信號,可以將請求緩存并迅速接收下一條指令;wr_addr_fifo用于緩沖讀寫地址信息與操作指令信息,需要設計一個命令控制字調度狀態(tài)機控制來自MCIF接口的命令控制字信息調度;wr_data_fifo用于緩沖寫數(shù)據(jù);rddata_fifo用于緩沖讀數(shù)據(jù)。
通過讀wr_addr_fifo,將其中的控制信息取出,同時,根據(jù)讀出的控制信息適時地將wr_data_fifo中的寫數(shù)據(jù)讀出,通過判斷HIF接口當前wr_addr_fifo的狀態(tài)將寫數(shù)據(jù)進行拼接并鎖存。由于HIF寫操作可能是256 bit或512 bit,當為256 bit時,HIF接口寫操作為1拍,否則為2拍。HIF讀操作均為2拍,即一次返回512 bit數(shù)據(jù),這時由于DDRC控制器讀操作僅支持BURST8操作,存儲總線寬度為64 bit,所以每次讀操作從HIF接口返回512 bit數(shù)據(jù),轉換邏輯需要根據(jù)控制信息從512 bit數(shù)據(jù)中適當?shù)奈恢锰崛〕稣_的數(shù)據(jù)并按照預定的順序返回給MCIF接口。控制信息的存儲需要單獨設計一個雙口存儲器,當發(fā)送HIF讀數(shù)據(jù)請求時,將控制信息存儲在該雙口中,當HIF讀數(shù)據(jù)返回后,需要讀出雙口中的控制信息,并根據(jù)控制信息取出相應位的數(shù)據(jù)返回給MCIF接口。
核心指令狀態(tài)機轉移圖如圖4所示。
圖4 核心指令狀態(tài)機轉移圖
2.3 亂序處理設計
由于PLB4總線讀操作不支持亂序[2],而DDRC是支持亂序的,即對HIF接口來說,由于每次HIF讀請求需要對應一個token,而不同token的讀請求返回給HIF接口的讀數(shù)據(jù)可能是亂序返回的。因此,不能直接將HIF讀數(shù)據(jù)返回給MCIF接口。
設計一個32位的flag寄存器和深度為32的雙口存儲器(先暫定為32深度,通過仿真評估后可能調整),根據(jù)HIF接口時序要求,當發(fā)送HIF讀請求時,需要同時發(fā)送co_ih_rxcmd_token信號,簡稱為token信號。當控制指令狀態(tài)機處于新指令判斷狀態(tài)時,將當前空閑的flag位的值賦給token,并將flag寄存器中對應位置1,flag采用從低位到高位依次順序分配,但只有分配到31位,且flag[0]為0且已經(jīng)被讀走時,才能重新分配flag。否則等待flag空閑后再發(fā)送讀請求。當DDRC返回讀數(shù)據(jù)時,由于返回的讀數(shù)據(jù)的token與之前發(fā)送的讀請求的token是一致的,所以將返回數(shù)據(jù)的token作為雙口存儲器的地址,將對應數(shù)據(jù)寫入雙口中,并將flag清0。同時設計一個32位的dpram_flag寄存器,用來存儲返回的token值。由于前面發(fā)送HIF讀請求的token的順序是確定的,因此期望返回的token的順序也是確定的。當返回一個token時,將其對應數(shù)據(jù)寫入雙口的token值對應的地址中,同時將該token對應的dpram_flag置1,并將該token與期望返回的值比較,相等則下一拍將該筆數(shù)據(jù)從雙口中取出返回給MCIF接口,并清除dpram_flag寄存器的對應位,否則,將期望值加1(當加到31時重新返回0),等待下一次返回讀數(shù)據(jù)。直到期望值與后面返回的數(shù)據(jù)相等時,將該筆數(shù)據(jù)從雙口中讀出,從而保證返回給PLB總線的讀數(shù)據(jù)的順序。
另外,由于兩筆HIF讀數(shù)據(jù)返回間隔的不確定性,數(shù)據(jù)在通過雙口讀出后需要經(jīng)過一個rddata_fifo緩存后輸出到MCIF接口。設計功能結構圖如圖5所示。
圖5 功能結構圖
3.1 對BURST操作的優(yōu)化
由于BURST操作通常是帶有連續(xù)性的,因此MCIF接口上相鄰的兩次讀或寫請求具有強相關性??蓪⑵涞刂泛涂刂菩畔⑦M行合并,兩次僅有一個入FIFO隊列,從而提高效率和FIFO利用率。對于前面預判可合并,后面實際判斷不能合并的,最終會分成兩次請求入隊[6-7]。
3.2 獲取寫數(shù)據(jù)的加速
如果上一步進來的PLB請求是寫請求,則需要在回compaack之后向PLB從接口要寫數(shù)據(jù)。首先對compaack_fifo和addr_fifo進行分工調整,由于compaack_fifo的最終目的是要寫數(shù)據(jù),因此只將寫請求及配置信息入隊compaack_fifo,而讀請求不入隊[8-9]。另外,通過對狀態(tài)機進行優(yōu)化,在回compaack同時向PLB接口發(fā)起寫數(shù)據(jù)請求,并在將寫數(shù)據(jù)緩沖到wrdata_fifo的同時,請求下一次的寫數(shù)據(jù),從而加速寫數(shù)據(jù)的獲取。這里寫入wrdata_fifo的數(shù)據(jù)已經(jīng)根據(jù)從compaack_fifo讀出的信息,按照HIF接口的要求重組好,根據(jù)后面流程直接從wrdata_fifo讀出后輸出到HIF接口,實現(xiàn)零換乘,省去拼接和產(chǎn)生規(guī)定數(shù)據(jù)的時間[10-11]。
3.3 對讀、寫請求的優(yōu)化
由于wr_addr_fifo作為該模塊控制信息來源,存儲了所有來自PLB4的總線請求及配套信息??刂普{度核心命令狀態(tài)機通過對該FIFO的讀出信息來控制向HIF發(fā)送讀、寫請求及寫數(shù)據(jù)。縮短兩次讀取wr_addr_fifo的間隔,對讀操作,由于不需要數(shù)據(jù),因此發(fā)完HIF讀請求后,可以快速切換到下一次對wr_addr_fifo的讀取狀態(tài)。對于寫操作,由于在發(fā)完HIF寫請求之后,既要等待HIF接口的授權,又要等待寫數(shù)據(jù)準備好。仿真發(fā)現(xiàn)此處延遲較大,若增加一個hif_wr_fifo,緩沖wr_addr_fifo的寫控制信息,不用等待授權和寫數(shù)據(jù)準備好,核心命令狀態(tài)機就可轉入下次讀wr_addr_fifo狀態(tài)。使HIF寫命令和寫數(shù)據(jù)流水,從而降低延遲[12-13]。
3.4 利用token進行速度和面積優(yōu)化
co_ih_rxcmd_token信號是DDRC控制器中CAM存儲器的地址,根據(jù)token發(fā)送和接收不會改變其值的特點,可以將控制信息通過token進行傳遞和回收。仿真發(fā)現(xiàn),HIF接口最壞情況下,堵在雙口中的讀數(shù)據(jù)最多為4個,考慮設計余量,因此將雙口深度調整為8,同時將flag和dpram_flag寄存器寬度也調整為8。由于HIF接口的co_ih_rxcmd_token信號寬度固定為6 bit,因此可以考慮將token低三位負責傳遞控制信息,高三位作為CAM和雙口的地址,由于token分配方式一輪操作內不會重復(前一個不釋放,后一個不會重用),因此CAM地址不會出現(xiàn)沖突。采用token為讀請求來傳遞控制信息,可省去一個存儲控制信息的雙口存儲器,同時將讀數(shù)據(jù)雙口及rddata_fifo深度均從32減為8,節(jié)省了面積,簡化了邏輯設計,降低了雙口讀寫延遲,避免雙口兩端同時寫操作的沖突風險[14]。
仿真環(huán)境是在PLB總線及DDRC時鐘均為200 MHz的情況下。將優(yōu)化前與優(yōu)化后的設計進行仿真,統(tǒng)計多種操作的訪存延遲,結果如表1所示。
表1 優(yōu)化前后比對表
文中論述了PLB4DDR3控制器的總體結構設計,重點研究了MCIF2HIF轉換接口設計優(yōu)化。仿真結果表明,優(yōu)化后訪存效率得到明顯提升。文中對片上內存設計及優(yōu)化具有一定參考價值。
[1] 王宏亮,毛永毅,張宏君.基于CoreConnect的OPB SPI接口設計與實現(xiàn)[J].測控技術,2013,32(5):72-76.
[2] IBM.128-bitprocessor local bus architecture specifications version 4.6[M/OL].[s.l.]:IBM Inc. Press.2004.http://www.chips.ibm.com.
[3] Design ware cores enhanced universal DDR memory controller databook[M].[s.l.]:Synopsys Press,2014:189-193.
[4] 陳超文,彭國杰,王憶文,等.基于PLB總線的NOR FLASH控制器設計[J].微電子學與計算機,2014,31(5):83-86.
[5] 盧 俊,顏 哲,田 澤.基于PLB雙總線高速存儲接口的設計與實現(xiàn)[J].計算機技術與發(fā)展,2015,25(4):233-237.
[6] 陳 卓,楊愛良,王 驥.基于PLB總線的多通道SGDMA設計[J].航空電子技術,2009,40(1):12-15.
[7] 吳從中,項 磊,蔣建國.基于PLB總線的H.264整數(shù)變換量化軟核的設計[J].電子技術應用,2008,34(10):35-38.
[8] 蘇 鵬,卞春江,張 磊.PowerPC處理器MPC8548E的DDR2接口實現(xiàn)[J].微計算機信息,2010,26(12-2):174-176.
[9] 劉寧寧,田 澤,裴希杰.基于CoreConnect總線的Nand Flash控制器設計[J].計算機應用,2014,34(S1):327-329.
[10] IBM.Device control register bus 3.5 architecture specifications[M].Armonk:IBM,2006.
[11] 馬秦生,魏 翠,孫力軍,等.嵌入式SoC總線分析與研究[J].中國集成電路,2007,16(3):45-49.
[12] 潘 波,楊根慶,孫 寧,等.基于多級片上總線的并行圖像處理系統(tǒng)設計[J].計算機應用研究,2008,25(7):2208-2209.
[13] IBM Inc.Processor local bus functional model toolkit user’s manual version 4.7[M].[s.l.]:IBM Inc. Press,2002:214-215.
[14] Xilinx Inc.BFM simulation tutorial[EB/OL].2006-07-18.http://www.xilinx.com.
Design and Optimization of DDR3 Controller Based on PLB4 Bus
LI Zhe,TIAN Ze,WANG Shi-zhong,ZHENG Fei
(Aeronautics Science and Technology Key Laboratory of Integrate Circuit and Micro-system Design,AVIC Computing Technique Research Institute,Xi’an 710068,China)
Memory is the information storage component in computer systems.The message transmission speed between the master and the memory is the key factor to affect the system performance.PLB bus put forward by IBM is a embedded bus standard,which is used for the interconnection among masters,memory and other high-speed devices like PCIE,DMA,SRIO.It is wildly used in SoC design.This project takes DDR3 as a slave connected to the PLB4 bus,which has a host interface named HIF.So an high effective cross bus bridge logic is designed to interconnect each other and improve the memory access efficiency.A DDR3 controller solution based on the PLB4 bus interface is proposed,through analysis on the data and control flow,adopting the methods of request combination,multi-pipeline,data forecast,address and control information multiplexing,data reading out of order processing to optimize speed and size of the bridge logic which will influence the memory access delay.Simulation proves that after optimization the performance has been improved remarkably.
memory;performance;speed;size;optimization
2015-06-16
2015-09-22
時間:2016-03-04
中國航空科學基金(2015ZC51036)
李 哲(1985-),男,工程師,研究方向為集成電路設計;田 澤,博士,研究員,中航首席技術專家,研究方向為SoC設計、VLSI設計、嵌入式系統(tǒng)開發(fā)和應用。
http://www.cnki.net/kcms/detail/61.1450.TP.20160304.1508.006.html
TP39
A
1673-629X(2016)03-0181-04
10.3969/j.issn.1673-629X.2016.03.042