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