郭 勇 羅 樂 劉森態 付 強 馬 超 劉娟秀 賴祥軍
1.成都工業學院電子工程學院 四川 成都 611730
2.重慶郵電大學光電工程學院 重慶 400065
集成電路是一個國家安全大門的鑰匙,是整個電子信息產業皇冠上的寶石[1-2]。中央處理器(CPU)代表了集成電路的核心技術,我國在集成電路上的進口總金額已超過石油進口的總金額,近年我國已將發展集成電路產業,尤其是發展擁有自主知識產權的通用CPU芯片產業上升到國家戰略高度,促使龐大的資本和人力涌入到集成電路設計領域。國內缺乏通用處理器的根本原因主要是指令集架構(ISA)的缺乏,目前廣泛使用的x86架構、ARM架構、MIPS架構和PowerPC架構都被國外公司所壟斷,需要支付高昂的授權使用費,而RISC-V架構對指令集完全開源,RISC-V基金會僅收取少量的授權費,使得RISC-V處理器越來越受到研究機構、學者和芯片設計領域的重視[3-6]。
本論文使用Verilog HDL語言實現了一個常用的47條指令二級可變流水線RV32I、重點分析了取值模塊IFU、執行模塊EXU,簡要分析了異常和中斷以及調試模塊的E203 CPU系統。
RV32I指令集是RISC-V指令集架構下的基本的32位指令集,它規定了47條基本指令,包括了32位地址空間與整數指令,定義了32個32位通用整數寄存器。RV32I支持4種基本類型指令,格式非常規范,所有的指令都是固定32位,并且在存儲器中以4字節對齊[7-8]。
本課題基于RISC-V指令集設計了蜂鳥E203 CPU,其具體設計內容主要包括:(1)E203頂層設計。采用典型的Top-Down設計方法將CPU劃分成多個模塊,包括時鐘門控(CLK_CTRL)、中斷控制(IRQ_CTRL)、復位控制(RESET_CTRL)、ITCM訪問控制(ITCM_CTRL)、DTCM訪問控制(DTCR_CTRL)、取指單元(IFU)、執行單元(EXU)、存儲器訪問(LSU)、總線接口(BIU)。其頂層結構如圖1所示。

圖1 模塊頂層設計結構圖

圖2 IFU微架構圖
(2)取值單元微架構。取指是流水線第一步,它要求以最快的速度且連續不斷地從存儲器取出指令供處理器核執行。在E203 CPU中利用Mini-Decode模塊對取回的地址進行簡單譯碼,使用Simple-BPU進行簡單的分支預測,利用PC生成模塊產生新取值PC地址,借助地址判斷和ICB總線控制模塊來訪問PC地址所對應的ITCM或BIU。其微架構如圖2所示。
(3)執行單元微架構。蜂鳥E203 CPU的譯碼、執行、交付和寫回均在EXU模塊中運行。從IFU模塊取出指令后,執行單元首先通過譯碼和派遣模塊完成指令譯碼和派遣,接著將譯碼出的操作數,借助RD-Regfile模塊讀取Regfile,同時將指令派遣給不同的運算單元,例如算術模塊ALU、長指令模塊Long-Pipes、寄存器訪問模塊LSU、以及擴展協處理器EAI。如果在程序執行過程中有中斷、異常以及帶條件跳轉指令,則通過交付模塊判斷是否進行流水線沖刷。在長指令執行過程中,使用OITF模塊維護長指令的數據相關性。最后,通過WB-Regfile模塊完成指令運算結果的寫回。EXU微架構如圖3所示。

圖3 EXU微架構圖
(4)總線接口單元微架構。BIU使用標準的ICB總線接口,主要負責接收IFU和LSU單元的存儲器訪問請求并判斷出訪問地址區間從而訪問不同的外部接口。BIU有兩組輸入ICB總線接口,兩組輸入ICB總線經過ICB匯合模塊仲裁優先級匯合成一組。通過使用Ping-Pong Buffer模塊解決流水線反壓時序問題。接著通過地址判斷模塊來產生分發信息,訪問不同的模塊,例如私有外設、系統存儲等。BIU微架構如圖4所示。

圖4 SoC總線微架構圖

圖5 串口打印“CDTU”字符串

圖6 流水燈程序控制
本課題最終設計的蜂鳥E203 CPU在Xilinx XC7A100T芯 片FPGA開發平臺上完成了驗證工作,驗證的結果分別如圖5和圖6所示。圖5是將E203內核配置在FPGA上,利用編譯器完成串口的調試,打印出成都工業學院簡稱“CDTU”;圖6是在E203片上系統中燒寫流水燈程序,每個0.5秒循環點亮一個LED;上述實驗結果驗證了設計的正確性。
本論文設計實現了RISC-V32位流水線架構E203 CPU,限于文章篇幅還是盡可能完整地展現了該CPU的整體結構和模塊功能,著重分析了頂層架構、IFU微架構、EXU微架構以及BIU微架構,編寫了可運行于RISCV架構CPU的應用程序,并最終在Xilinx Artix-7FPGA開發板上驗證了設計的正確性。