陳劍鋒 學(xué)江煜 郭湘津
摘 要:針對傳統(tǒng)CISC指令集復(fù)雜、硬件開發(fā)難度大、運行效率低、體系架構(gòu)復(fù)雜等關(guān)鍵技術(shù)問題,設(shè)計了一種基于FPGA的32位RISC微處理器。通過分析微處理器的基本架構(gòu)和流水線數(shù)據(jù)處理方法,基于VIVADO軟件對所設(shè)計的RISC微處理器的軟核進(jìn)行了功能仿真驗證,采用XC7A75T芯片為控制核心,完成了RISC處理器系統(tǒng)硬件搭建。仿真結(jié)果表明,所設(shè)計的RISC-CPU運行穩(wěn)定,效率高,層次合理,能實現(xiàn)各種指令的預(yù)期功能,指令執(zhí)行速度快,達(dá)到了預(yù)期設(shè)計目標(biāo)。
關(guān)鍵詞:FPGA;RISC-CPU;MIPS指令集;流水線;嵌入式
中圖分類號:TP302.2? ? 文獻(xiàn)標(biāo)志碼:A? ? 文章編號:1671-0797(2022)10-0022-05
DOI:10.19514/j.cnki.cn32-1628/tm.2022.10.007
0? ? 引言
近年來,精簡指令集計算機RISC(Reduced Instruction
Set Computer,RISC)技術(shù)不斷成熟,其應(yīng)用范圍也越來越廣泛,如手持電子設(shè)備、家用電器、工業(yè)控制、機器人等領(lǐng)域。以往的復(fù)雜指令集計算機CISC(Complex Instruction Set Computer,CISC)其復(fù)雜指令的使用率低,運算速度慢,硬件架構(gòu)龐大,開發(fā)周期長,導(dǎo)致微處理器的總體性能下降,無法滿足處理速度快的高性能要求。RISC采用簡單的指令集系統(tǒng),嵌入式處理,架構(gòu)簡潔,集成度高,不僅優(yōu)化了微處理器的內(nèi)部結(jié)構(gòu),而且縮小了體積,提高了性能,便于片上系統(tǒng)開發(fā),靈活方便。因此,RISC微處理器的研究具有理論和實際意義。
目前,針對RISC微處理器的系統(tǒng)設(shè)計方案研究成為眾多學(xué)者關(guān)注的熱點。
郝振和等人[1]提出了一種基于AHB總線的RISC-V微處理器,采用嵌入式系統(tǒng)設(shè)計,在功耗和性能上與Cortex-M0處理器相當(dāng)。
雷少波等人[2]采用4級流水線的數(shù)據(jù)處理結(jié)構(gòu)設(shè)計了一款16位RISC嵌入式微處理器,解決了硬件結(jié)構(gòu)在指令執(zhí)行過程中延遲的問題。
劉覽等人[3]提出了一種8級流水線的32位微處理器,解決了微處理器分支冒險問題,并在FPGA硬件平臺和Quartus Ⅱ軟件平臺上進(jìn)行驗證。
黃旺華等人[4]基于FPGA流水線設(shè)計了一種RISC微處理器,針對數(shù)據(jù)相關(guān)性的寫后讀問題,采用“旁路”技術(shù)來解決,提高了處理速度,其最高時鐘頻率達(dá)到74.59 MHz。
趙坤等人[5]基于FPGA實現(xiàn)一個完整的SoC-FPGA平臺,采用精簡3級流水線數(shù)據(jù)處理結(jié)構(gòu),帶有靜態(tài)分支預(yù)測功能,該SoC的工作頻率為50 MHz。
基于現(xiàn)場可編程門陣列(Field-Programmable Gate Array,F(xiàn)PGA)的32位RISC微處理器的設(shè)計,其目的在于簡化硬件電路結(jié)構(gòu),提高計算機數(shù)據(jù)處理速度和系統(tǒng)運行效率,將中央處理器(Central Processing Unit,CPU)擅長復(fù)雜流程控制和FPGA并行數(shù)據(jù)處理的特點相結(jié)合,使得微處理器架構(gòu)簡潔,指令集系統(tǒng)簡單,縮短硬件開發(fā)周期,降低硬件開發(fā)難度,提高CPU整體性能。
1 ? RISC-CPU體系結(jié)構(gòu)
1.1? ? RISC-CPU的基本架構(gòu)
本文采用馮·諾依曼結(jié)構(gòu)來實現(xiàn)RISC微處理器設(shè)計[6]。如圖1所示,所設(shè)計的RISC微處理器主要由指令寄存器、程序計數(shù)器、地址多路器、狀態(tài)控制器、累加器、算術(shù)邏輯運算單元、數(shù)據(jù)控制器、時鐘分頻器八大基本部件組成。其中,時鐘分頻器可為CPU各個部件提供時鐘源信號,保證系統(tǒng)的正常運行。累加器用于存儲RAM傳輸來的數(shù)據(jù)信息和當(dāng)前的運行結(jié)果。程序計數(shù)器在當(dāng)前的指令結(jié)束后,立即提供下一條指令的地址,保證指令有序執(zhí)行。
地址多路器中的每個指令周期共有8個時鐘,前面4個時鐘從ROM中讀取指令,后面4個時鐘則從RAM中讀取指令。算術(shù)邏輯運算單元主要用于處理操作碼信息,進(jìn)行基本邏輯運算。
1.2? ? MIPS指令集
MIPS[7](Million Instructions Per Second)是一種高效的指令架構(gòu),其最大特點在于簡化了CISC的龐大指令集,在指令數(shù)目和格式上進(jìn)行了優(yōu)化,極大地提高了微處理器的數(shù)據(jù)處理效率。MIPS指令集的指令數(shù)量比較少,格式固定且整齊,縮短了指令的執(zhí)行時間,更易于在硬件上實現(xiàn)數(shù)據(jù)的流水線處理。如圖2所示,MIPS32有三種指令機器碼格式,分別為R型(寄存器類型)、I型(立即數(shù)類型)和J型(跳轉(zhuǎn)類型)。MIPS架構(gòu)設(shè)計非常簡潔、合理,內(nèi)核中可以加入自定義的指令,數(shù)據(jù)處理量大的任務(wù)由編譯器完成,從而保證了處理的高效性。
1.3? ? 流水線技術(shù)
本文設(shè)計的RISC微處理器采用5級流水線的技術(shù)方案,能實現(xiàn)多條指令并行處理,提高了指令的執(zhí)行速度。5級流水線結(jié)構(gòu)圖如圖3所示,所謂“5級流水線”是指在執(zhí)行指令過程中需要經(jīng)過5個流水段,每個流水段完成不同的任務(wù),分別為取指、譯碼、執(zhí)行、訪存和寫回。假設(shè),執(zhí)行5條指令,采用單時鐘周期執(zhí)行單條指令,則需要15T;若采用流水線技術(shù),僅需9T就能完成。因此,相同時間內(nèi),流水線技術(shù)提高了微處理器指令的執(zhí)行速度,可作為優(yōu)化微處理器性能的關(guān)鍵技術(shù)。
2? ? RISC-CPU系統(tǒng)的硬件實現(xiàn)
本設(shè)計中的FPGA芯片采用的是Xilinx公司開發(fā)的Artix-7芯片,型號為XC7A75T,該芯片邏輯單元豐富、數(shù)字運算處理能力強、集成度高。如圖4所示,RISC-CPU的硬件系統(tǒng)以FPGA為控制核心,系統(tǒng)工作時,F(xiàn)PGA芯片負(fù)責(zé)協(xié)調(diào)、管理系統(tǒng)各個模塊的工作任務(wù),保證系統(tǒng)有序運行。SDRAM存儲器模塊是FPGA芯片的數(shù)據(jù)存儲中心,其具有容量大、功耗低、讀/寫速度快的特點,在嵌入式系統(tǒng)的開發(fā)中應(yīng)用廣泛;系統(tǒng)的運行狀態(tài)由LED指示燈模塊顯示;斷電保護(hù)采用EPCS接口模塊;JTAG接口模塊用于FPGA的程序下載、仿真和調(diào)試。
3? ? RISC-CPU系統(tǒng)的仿真測試
采用VIVADO 2014.3對所設(shè)計的RISC-CPU系統(tǒng)進(jìn)行仿真測試,由兩部分組成,其中cpu_top.v模塊為所設(shè)計的RISC-CPU,memoRy.v模塊為存儲模塊。
(1)R類型指令:圖5和圖6展示了為寄存器R0賦值立即數(shù)1 010和為寄存器R1賦值立即數(shù)1的過程??梢钥闯鯮ISC-CPU讀取到對應(yīng)指令,經(jīng)過一個時鐘周期后,對應(yīng)寄存器的值變?yōu)橛脩糁付ㄖ怠?/p>
圖7和圖8為寄存器之間數(shù)值的計算過程,圖7為將R0和R1寄存器的值累加送給R2,圖8為將R2寄存器的值和自身累加再送給R2(即R2的值翻倍)。從圖7中可以發(fā)現(xiàn)讀取到加法命令后,R2的值變?yōu)镽0當(dāng)前值(1 010)加上R1當(dāng)前值(1)的結(jié)果,即1 011。從圖8中可以發(fā)現(xiàn)讀取到加法指令后,R2的值從1 011翻倍為2 022。
(2)I類型指令:圖9和圖10展示了寄存器和存儲器之間交換數(shù)據(jù)的過程,圖9展示了將R0寄存器的值(1 011)送到存儲器地址4中,圖10展示了將存儲器地址4中的值讀出送給R1,再將R0和R1的值累加送給R2的過程。
(3)J類型指令:圖11和圖12展示了利用J類型指令實現(xiàn)當(dāng)R0=1時,給R2賦值2 021,否則賦值2 022的功能。圖11中,R0為1,利用J類型指令跳過了第四條指令的執(zhí)行,最終運行結(jié)果R2=2 021。圖12中,R0為2,因此第四條指令照常運行,最終運行結(jié)果R2=2 022。
編譯結(jié)果顯示所設(shè)計的RISC-CPU層次合理,可以實現(xiàn)R類型、I類型和J類型指令的功能,CPU能正常運行,指令執(zhí)行速度快。
4? ? 結(jié)語
本文設(shè)計了一套基于FPGA的RISC微處理器控制系統(tǒng),采用MIPS32指令集和5級流水線技術(shù)簡化了硬件設(shè)計,整個系統(tǒng)運行速度快、性能高、可移植性強、穩(wěn)定性好。并且在VIVADO軟件上對設(shè)計的功能和關(guān)鍵模塊進(jìn)行仿真、調(diào)試、驗證,以保證系統(tǒng)設(shè)計的合理性和正確性。
測試結(jié)果表明,設(shè)計的RISC微處理器功能正常,主頻性能優(yōu)良,能實現(xiàn)數(shù)據(jù)存儲、指令執(zhí)行、算術(shù)和邏輯運算、與存儲器/外設(shè)交換數(shù)據(jù)等功能,滿足設(shè)計要求。
[參考文獻(xiàn)]
[1] 郝振和,焦繼業(yè),李雨倩.基于AHB總線的RISC-V微處理器設(shè)計與實現(xiàn)[J].計算機工程與應(yīng)用,2020,56(20):52-58.
[2] 雷少波,黃民.16位嵌入式RISC微處理器設(shè)計[J].微型機與應(yīng)用,2013,32(7):13-15.
[3] 劉覽,鄭步生,施慧彬.基于FPGA的32位RISC微處理器設(shè)計[J].數(shù)據(jù)采集與處理,2011,26(3):367-373.
[4] 黃旺華,李振坤,劉怡俊,等.基于FPGA流水線RISC微處理器的設(shè)計[J].微計算機信息,2008(14):187-189.
[5] 趙坤.基于RISC-V架構(gòu)的SoC設(shè)計與實現(xiàn)[D].??冢汉D洗髮W(xué),2021.
[6] 楊培森.第五代計算機的結(jié)構(gòu)及其相關(guān)技術(shù)[J].系統(tǒng)工程與電子技術(shù),1985(11):1-7.
[7] 嚴(yán)浦洲.基于Verilog HDL的多周期CPU設(shè)計與實現(xiàn)[J].數(shù)碼世界,2020(12):31-32.
收稿日期:2022-02-23
作者簡介:陳劍鋒(1995—),男,福建泉州人,助教,研究方向:電路設(shè)計、信號處理、機械工程。