吳瓊飛,張志強,朱勇
(1.華中農(nóng)業(yè)大學楚天學院,信息工程學院,武漢430205;2.武漢紡織大學)
吳瓊飛(講師)、張志強(助教)、朱勇(教授),研究方向為嵌入式系統(tǒng)及應用。
專用指令集處理器(ASIP)是一種具有處理器結構的芯片,它具有可定制性,為某個或某一類型應用而專門設計,能夠高效地解決嵌入式系統(tǒng)設計中的實際問題,已在現(xiàn)今的片上系統(tǒng)(SoC)中得到了廣泛的應用。但在系統(tǒng)定制ASIP處理器時往往受到芯片面積、上市時間(TTM)和功耗等非功能性的約束[1,4-5],設計者必須要找到一款合適的處理器體系結構,所以在設計的初期要針對特定應用進行設計空間搜索(DSE),利用ADL對目標結構進行描述并用硬件描述語言(HDL)來進行硬件實現(xiàn)。傳統(tǒng)設計方法是直接使用 HDL語言來進行硬件設計[6,9],從而導致設計周期相當漫長。本文探討了一種基于SystemC體系結構描述語言的系統(tǒng)級設計方法,對一款開源軟核OpenRISC1200(以下簡稱OR1200)進行系統(tǒng)級建模,并在此基礎上實現(xiàn)系統(tǒng)級的綜合,由ADL描述通過相應機制映射成RTL級的HDL描述,加快處理器的設計速度。
OR1200是OpenRISC系列RISC處理器內核的一員,它是一種32位標量RISC體系結構[14],具有哈佛結構,帶有5級整數(shù)流水線。其執(zhí)行特征包括虛擬內存支持和基本DSP功能,外部數(shù)據(jù)總線和地址總線接口符合Wishbone總線標準。OR1200CPU/DSP基本框圖如圖1所示。
圖1 OR1200CPU/DSP基本框圖
OR1200 5級流水是指IF取指、ID譯碼、EX執(zhí)行、MA存儲、WB回寫,這里將CPU分解成若干個模塊,每一級都對應相應的模塊,5級流水的OR1200CPU內部模塊如圖2所示。
各級流水的功能分別如下:
圖2 5級流水的OR1200CPU內部模塊
①IF(Instruction Fetch)取指級,按照PC的地址從存儲器中取出指令,PC指向下一條指令,取出的指令被送到下一條流水級ID。為了保證運算能按時進行,在這個時鐘周期需要提前提取操作數(shù)RA和RB寄存器的內容,寄存器的地址rf_addra/b和讀信號rf_rda/b在本流水線級未被凍結時給出。
②ID(Instruction Decode)指令譯碼級,指令被ctrl模塊解碼成控制信號,所得到的這些信號被送到EX執(zhí)行級和其他流水級。指令在EX執(zhí)行級時需要用到來自rf(寄存器堆)的2個操作數(shù),這2個操作數(shù)在ID級被送到算術邏輯運算單元ALU的a、b兩個端口,同時譯碼級還要把譯碼后得到的運算操作信號OP傳遞給ALU。對于跳轉指令分為非條件跳轉和條件跳轉。如果譯碼器ctrl識別到非條件跳轉,會馬上通知IF級;如果識別到的是條件跳轉,就會根據(jù)標志位判斷跳轉的結果,從而決定是否立即通知IF。另外,如果譯碼器識別到指令HALT,則會停止流水線。
③EX(Excution)執(zhí)行級,它主要通過ALU實現(xiàn)算術和邏輯運算。
④ MA(Memory Access)存儲器訪問級,它使用Load/Store指令從存儲器裝載數(shù)據(jù)到寄存器堆或從寄存器堆存儲數(shù)據(jù)到存儲器,或者只是將EX級的運算結果送到下一級WB回寫級中。
⑤ WB(Write Back)回寫級,主要是把數(shù)據(jù)寫回到寄存器堆rf中。
嵌入式系統(tǒng)的設計[8,10]是一個由高抽象級到低抽象級的逐層實現(xiàn)過程,每一層都會涉及到描述、驗證以及到下一層的轉換(綜合)問題。系統(tǒng)級包含硬件和軟件等多種實現(xiàn),與RTL級相比處于更高的抽象層次,它能實現(xiàn)對微處理器、專用集成電路、可編程邏輯和存儲器等的高層次抽象。
針對傳統(tǒng)設計方法的不足,本文提出了一種基于系統(tǒng)級描述語言SystemC的設計方法,基于SystemC的ASIP設計流程如圖3所示。
圖3 基于SystemC的ASIP設計流程
首先針對一組特定應用以及設計約束分析得到初始目標體系結構[7,13],然后對目標體系結構進行SystemC描述,通過SystemC開發(fā)平臺自動生成相應的軟件工具(包括編譯器、仿真器、連接器等)以及硬件RTL級HDL描述,之后分別從軟件和硬件兩個方面進行評測,看是否符合設計約束要求。如果不符合設計約束要求,設計人員對目標體系結構的SystemC描述進行相應的修改,最后通過開發(fā)平臺完成軟件工具和硬件描述的生成并對其進行評測,直到滿足設計約束要求為止。
SystemC作為一種硬件描述語言,是由OSCI(Open SystemC Initiative)組織制定和維護的、開放源代碼的、基于C++類庫的系統(tǒng)級建模平臺。它既是一種軟硬件協(xié)同設計語言,又是一種新的系統(tǒng)級建模語言,可以用來設計硬件模型和提供硬件模擬平臺。
在SystemC中,用來進行設計描述的基本SystemC類是SC_MODULE,它類似VHDL的實體ENTITY或者Verilog的模塊MODULE。在SC_MODULE中可以定義輸入引腳、輸出引腳、內部信號等資源,同時也可以實例化另外一個SystemC MODULE,對于設計的行為可以使用方法SC_METHOD或者SC_THREAD進行描述。SC_METHOD或SC_THREAD在SC_MODULE內的構造函數(shù)中進行聲明,并且可以指定相應的敏感信號列表SENSITIVE,隨著敏感列表上輸入信號的變化從而產(chǎn)生相應的方法。SystemC能在內核的基礎上建立信號、FIFO等,它結合了高級語言和硬件描述語言這兩者的特點[2-3],系統(tǒng)抽象能力強,并能對硬件設計中的信號同步、時間延遲、狀態(tài)轉換等物理信息進行描述,所以SystemC可以很好地應用于ASIP系統(tǒng)級設計中。
在系統(tǒng)級對ASIP處理器進行設計,ADL是整個設計的核心。利用SystemC在系統(tǒng)級對OR1200CPU內部模塊進行描述,并通過一款可集成開發(fā)軟件Agility Compiler實現(xiàn)SystemC的綜合,加快了硬件設計的實現(xiàn)。在實現(xiàn)的過程中,目前只用到了if(取指令)、getpc(程序計數(shù)器)、ctrl(控制譯碼器)、rf(通用寄存器文件)、opmux(操作數(shù)多路復用器)、alu(算術邏輯單元)、lsu(load/store單元)和wbmux(寫回)這8個模塊。下面的例子是使用SystemC對OR1200CPU部分模塊進行系統(tǒng)級描述的部分代碼實現(xiàn):
采用一種將新的高效測試方式與傳統(tǒng)的系統(tǒng)測試方式相結合的手段,利用嵌入式邏輯分析儀進行驗證,設計人員將它連同目標文件一起下載到目標器件的芯片中(這里是EP2C70F896),以此來獲得目標器件芯片內部信號節(jié)點處的相應信息,同時硬件系統(tǒng)還能正常工作,這就是QuartusII中SignalTapII的目的。在實際檢測過程中,SignalTapII[14]將采集到的樣本信號臨時存入到目標器件的RAM中,然后通過目標器件的JTAG口將采樣信息傳入到計算機中顯示,最后進行分析。SignalTapII能夠對被測試系統(tǒng)模塊內部的信號節(jié)點進行采樣,并且它是由多時鐘驅動的,能通過設置相應的參數(shù)來顯示前后觸發(fā)捕捉信號節(jié)點信息的比例,便于對數(shù)據(jù)進行分析。當然在驗證系統(tǒng)之前,要設計好指令Testbench,本文根據(jù)OpenRISC ORBIS32指令集用匯編語言設計了3類指令Testbench:無沖突的指令Testbench、有沖突的指令Testbench和有跳轉的指令Testbench。為了測試利用SystemC設計后的OR1200CPU是否能正常工作,事先設計好測試指令的相應編碼mif文件,利用Altera Quartus II自帶的SignalTap II工具仿真驗證,系統(tǒng)驗證結果略——編者注。
本文設計實現(xiàn)了一種對ASIP進行系統(tǒng)級高層綜合的方法,以一款開源軟核OR1200為實例,ADL體系結構描述語言SystemC為核心,通過Agility Compiler編譯器實現(xiàn)系統(tǒng)級綜合。實踐證明,這種基于體系結構描述語言SystemC的系統(tǒng)級設計方法是可行的。
編者注:本文為期刊縮略版,全文見本刊網(wǎng)站www.mesnet.com.cn。
[1]楊君.專用指令集處理器(ASIP)體系結構設計研究[D].合肥:中國科學技術大學,2006.
[2]申鑫.基于SystemC的RTL級綜合的研究[D].西安:西安電子科技大學,2012.
[3]魯芳,柏娜.基于SystemC和Verilog軟硬件協(xié)同驗證[J].現(xiàn)代電子技術,2008(4):1-3.
[4]楊君,李曦,王志剛,等.專用指令集處理器(ASIP)系統(tǒng)級設計研究[J].系統(tǒng)工程與電子技術,2006,28(10).
[5]李曦,龔育昌.基于Petri網(wǎng)的ASIP體系結構形式化建模方法研究[J].小型微型計算機系統(tǒng),2006,27(9).
[6]蘇鶴年,李曦,王志剛,等.基于語言的ASIP系統(tǒng)級綜合方法研究[J].微型機與應用,2005(9).
[7]余潔.專用指令集處理器可靠性評估技術研究[D].合肥:中國科學技術大學,2007.
[8]王志剛.xpMODEL:A Novel Model for ASIP Architecture[D].合肥:中國科學技術大學,2006.
[9]Yong Zhu.The Specification of the Embedded System of Realtime IR,DCABES 2007(ISTP),2007.
[10]Yong Zhu.The ASIP Design Specification Based on ADL,DCABES2009(ISTP).
[11]Fanucci L,Cassiano M,Saponara S.ASIP Design and Synthesis for Non Linear Filtering in Image Processing,Design[J].Automation and Test in Europe,2006(12):1-6.
[12]Morgan P,Taylor R.ASIP Instruction Encoding for Energy and Area Reduction,Design Automation Conference,2007[C].California:[unknown],2007.
[13]Dan Wu,Zhiying Wang,Kui Dai,et al.A Novel Compiling Approach for Sub-Word Parallelism Exploitation in Media-Processing Algorithm,5th International Symposium on Parallel Computing in Electrical Engineering(PARELEC 2006,IEEE Computer Society),2006[C].Bialystok:[unknown],2006.
[14]Altera Corporation.Quartus II Handbook,volume 5,2007.