摘要:隨著RISCV-32I技術(shù)的不斷發(fā)展和應(yīng)用,微處理器的設(shè)計(jì)具有高速度、高集成度的特點(diǎn),微處理器也日益受到人們的重視。微處理器外部設(shè)備應(yīng)具備充分的功能性,在數(shù)據(jù)收集、指令存儲(chǔ)、CPU控制等方面,微處理器不僅需要具有充分的功能(運(yùn)算邏輯組件、寄存器組件、控制組件),而且需要足夠快的運(yùn)算速度。CPU是微處理器的核心,RISCV-32I技術(shù)負(fù)責(zé)處理計(jì)算機(jī)內(nèi)部和外部的所有信息。
關(guān)鍵詞:RISCV-32I;微處理器;創(chuàng)新設(shè)計(jì)
微處理器需要執(zhí)行處理指令、操作、控制時(shí)間和處理數(shù)據(jù),并保證整個(gè)微處理器的運(yùn)行。但隨著現(xiàn)代技術(shù)的發(fā)展,CPU需要進(jìn)行大量的數(shù)據(jù)處理,需要對(duì)各種數(shù)據(jù)進(jìn)行整合分析,同時(shí)還要運(yùn)行多個(gè)操作系統(tǒng)。這導(dǎo)致很多采用單一設(shè)計(jì)方法設(shè)計(jì)的產(chǎn)品無(wú)法滿足要求,傳統(tǒng)的復(fù)雜指令集和低運(yùn)算速度也不適合作為現(xiàn)代的控制核心。為此,研究者以RISCV-32I為核心,采用多層流水線進(jìn)行設(shè)計(jì),經(jīng)實(shí)驗(yàn)驗(yàn)證,RISCV-32I技術(shù)的微處理器可以在500MHz的頻率下正常運(yùn)行。
一、微處理器系統(tǒng)設(shè)計(jì)簡(jiǎn)介
在實(shí)際的控制系統(tǒng)中,微處理器外部設(shè)備通常起到發(fā)送、指令和數(shù)據(jù)存儲(chǔ)的作用;CPU負(fù)責(zé)對(duì)所有的數(shù)據(jù)進(jìn)行處理,計(jì)算和處理所有的指示。CPU和外部設(shè)備之間采用四條總線進(jìn)行通信,從而實(shí)現(xiàn)地址、數(shù)據(jù)、控制等信息的交流。RISC-V(RISC-FIVE)是一種開(kāi)放源碼指令系統(tǒng)體系結(jié)構(gòu)(ISA),其基礎(chǔ)是一套簡(jiǎn)化的指令集合(RISC)。
相對(duì)于大部分指令,RISC-V指令集可以被任意使用,使用者可以自行制造和銷售RISC-V的芯片和軟件。盡管這并非首套開(kāi)放源碼指令,但其設(shè)計(jì)的重要性在于其適合于現(xiàn)代計(jì)算機(jī)(例如:倉(cāng)庫(kù)式云計(jì)算機(jī)、高端手機(jī)、微型嵌入式系統(tǒng)),設(shè)計(jì)人員將性能和功能運(yùn)作效率結(jié)合起來(lái)。這個(gè)指令集也包含許多可支援的軟件,以彌補(bǔ)新指令集合的一般缺點(diǎn)。RISC-V指令集的設(shè)計(jì)考慮了實(shí)際的實(shí)際應(yīng)用,即體積小、速度快、功耗低,但是不會(huì)特殊針對(duì)具體的微處理器結(jié)構(gòu),RISCV-32I為2.22版本的UserspaceISA建立了一個(gè)指令集,而授權(quán)指令集也處于1.10版本的草案中。
RISC-V國(guó)際機(jī)構(gòu)發(fā)布了對(duì)2022年的第一批四個(gè)規(guī)范和擴(kuò)充的許可,即RISC-V有效追蹤(E-Trace)、RISC-V高級(jí)二進(jìn)制(SBI)、RISC-V統(tǒng)一可擴(kuò)充固件界面(UEFI)、RISC-V標(biāo)準(zhǔn)可擴(kuò)充固件(UEFI)規(guī)范,以及RISC-VZmmul純粹乘數(shù)擴(kuò)充,表明以前已有四個(gè)RISC的原型。RISC的每一代處理器都由加州伯克利大學(xué)的大衛(wèi)·帕特森教授領(lǐng)導(dǎo)。由于采用了RISCV-32I指令,只有LW和SW兩種指令與外部存儲(chǔ)地址進(jìn)行數(shù)據(jù)交互,因此微處理器的指令執(zhí)行比較高效。同時(shí),這也是運(yùn)行速度比較快的一個(gè)關(guān)鍵因素(避免了對(duì)存儲(chǔ)系統(tǒng)的大量指令的訪問(wèn),節(jié)省了不必要的存取時(shí)間)。在系統(tǒng)的工作中,CPU從外部存儲(chǔ)指令的ROM存儲(chǔ)機(jī)器中獲取指令,然后進(jìn)行解碼,獲得指令的函數(shù)和運(yùn)算代碼,并給出特定的運(yùn)算邏輯方法。然后,將RISCV-32I指令所指向的寄存器中的數(shù)據(jù)提取出來(lái),ALU單元進(jìn)行相應(yīng)的運(yùn)算,其運(yùn)算方法是通過(guò)解碼產(chǎn)生的運(yùn)算代碼來(lái)實(shí)現(xiàn)的。然后,根據(jù)命令函數(shù),可以將數(shù)據(jù)寫入內(nèi)存和其他外部設(shè)備中,也可以讀取存儲(chǔ)和其他外部設(shè)備。微處理器內(nèi)核利用“LW”和“SW”命令來(lái)讀取外部設(shè)備的狀態(tài),并實(shí)現(xiàn)對(duì)外部設(shè)備的控制。為了便于讀寫總線和控制總線,實(shí)現(xiàn)了與ROM在同一工作區(qū)域中的地址映射。不像其他的ISA,RISC-VISA可以在任何需要的設(shè)備上自由使用。之前四代RISC微處理器的樣機(jī)盡管并非最早開(kāi)放源碼指令集(ISA),但其重要性在于,這是首個(gè)針對(duì)特定場(chǎng)景而設(shè)計(jì)的指令集合,能夠根據(jù)特定的情況選擇適當(dāng)?shù)闹噶罴?。RISC-V的指令系統(tǒng)結(jié)構(gòu)可以用于服務(wù)器、家電、工業(yè)控制CPU以及用于傳感器的微處理器設(shè)計(jì)。在某一個(gè)時(shí)間點(diǎn),同時(shí)設(shè)置timer1倒計(jì)時(shí),并且記錄此時(shí)timer的計(jì)數(shù)1,cnt1。當(dāng)2s倒計(jì)時(shí)后,中斷響應(yīng),此時(shí)硬件再做處理,執(zhí)行到實(shí)際的中斷處理后,在最開(kāi)始的代碼處記錄下timer2的計(jì)數(shù)cnt2,中斷測(cè)試并進(jìn)行應(yīng)用改進(jìn)(見(jiàn)表1。
二、微處理器內(nèi)核設(shè)計(jì)簡(jiǎn)介
本設(shè)計(jì)的CPU具有8個(gè)中斷,并使用RISCV-32I命令集,總共47條指令,只有LW、SW可以存取外部設(shè)備,從而降低了CPU在加載數(shù)據(jù)和指令時(shí)所耗費(fèi)的時(shí)間。在此基礎(chǔ)上,采用5級(jí)流水線的方法,將組合邏輯從不同的方向劃分成8個(gè)板塊,從而提高了系統(tǒng)的工作效率,從另一個(gè)方面加快了CPU的工作速度。由于目前RISCV-32I的核心處理器大部分采用4級(jí)流水線的方式,因此在回寫環(huán)節(jié)增設(shè)一條流水線,實(shí)現(xiàn)五級(jí)流水線,即IF(PC取指令)、ID(解碼)、EX(指令執(zhí)行或地址計(jì)算)、MEM(諸如數(shù)據(jù)存儲(chǔ)器)以及WB回寫。通過(guò)添加一條流水線,極大地提高了指令的處理速度,同時(shí)也從側(cè)面加快了處理器的工作速度。CPU控制單元的分布使得它不再是微碼的形式。整個(gè)微處理器的跳躍情況僅需要一個(gè)時(shí)鐘循環(huán)。與此同時(shí),數(shù)據(jù)的“發(fā)送和堵塞”被置于lD部分等待審核,一旦IF和ID的命令被發(fā)現(xiàn)無(wú)法通過(guò)轉(zhuǎn)發(fā)來(lái)處理,則被堵塞(I/PC的當(dāng)前值,IF至ID的暫存器被填充氣泡堵塞),而轉(zhuǎn)發(fā)則被放置在EX分段中。為了讓微處理器CPU在操作系統(tǒng)上不需要依靠外部計(jì)時(shí)器,在內(nèi)核中特別設(shè)計(jì)了一個(gè)計(jì)數(shù)器,它可以在沒(méi)有操作系統(tǒng)的情況下,為CPU提供準(zhǔn)確的計(jì)時(shí)[1]。
三、微處理器FPGA設(shè)計(jì)流程
FPGA英文全稱是Field Programmable Gate Arrays。FPGA是一種可編程專用IC(ASIC),它克服了傳統(tǒng)ASIC的缺陷,同時(shí)也克服了傳統(tǒng)可編程器件資源的限制。FPGA有數(shù)字型、模擬型、混合型三種類型,其中數(shù)字型FPGA被廣泛采用。具體來(lái)說(shuō),微處理器FPGA設(shè)計(jì)需要關(guān)注系統(tǒng)設(shè)計(jì):按照設(shè)計(jì)規(guī)范進(jìn)行算法和結(jié)構(gòu)劃分,并確定各模塊之間的界面。RTL是注冊(cè)傳送級(jí)別,是一種寄存器傳送級(jí)別的設(shè)計(jì)。在RTL階段,主要使用了HDL的硬件描述語(yǔ)言來(lái)描述電路。常見(jiàn)的輸入方式有HDL和圖形輸入兩種。在早期,微處理器基于設(shè)計(jì)的需要選擇器件,繪制原理圖,完成輸入過(guò)程。然而,在大規(guī)模的系統(tǒng)中,該方案的維護(hù)能力很低,不利于模塊化的設(shè)計(jì)與復(fù)用。其最大的缺陷是:選擇的芯片升級(jí)后,對(duì)整個(gè)電路進(jìn)行了相應(yīng)的修改。后來(lái),人們發(fā)現(xiàn)FPGA方法具有直觀、易懂、元素庫(kù)資源豐富等優(yōu)點(diǎn)[2]。
另外,在微處理器大型項(xiàng)目的運(yùn)行中,人們發(fā)現(xiàn)在大規(guī)模的工程設(shè)計(jì)中,采用HDL輸入法是最常見(jiàn)的方法。在這些語(yǔ)言中,影響最大的是VerilogHDL和VHDL。其共同特征是便于從上到下的設(shè)計(jì),便于模塊的分割和復(fù)用,具有良好的移植性和通用性,并且不會(huì)因?yàn)樾酒募庸ず徒Y(jié)構(gòu)的改變而改變,對(duì)ASIC的移植更加有利。在輔助設(shè)計(jì)中,波形輸入和狀態(tài)機(jī)輸入是常用的兩種輸入方式。在采用波形輸入法時(shí),EDA可以根據(jù)反應(yīng)關(guān)系,自動(dòng)地設(shè)計(jì)出激勵(lì)和輸出的波形。在采用微處理器狀態(tài)機(jī)的情況下,設(shè)計(jì)人員只要繪制狀態(tài)轉(zhuǎn)換圖,EDA就可以自動(dòng)生成HDL編碼或示意圖,使用起來(lái)非常方便。在xilinx ISE工具箱中的狀態(tài)CAD可以實(shí)現(xiàn)對(duì)狀態(tài)機(jī)的輸入。然而,這兩種設(shè)計(jì)方式僅限于在特定場(chǎng)合下減輕設(shè)計(jì)者的工作負(fù)擔(dān),而非全部設(shè)計(jì)。功能驗(yàn)證:本研究旨在檢驗(yàn)RTL級(jí)的功能是否正確。通常的實(shí)踐是,編寫一個(gè)測(cè)試平臺(tái),并用一個(gè)刺激來(lái)觀察結(jié)果。通用的功能確認(rèn)工具包括ModelTech、Synopsys、VCS、Cadence、NC-verilog、NC-VHDL、alec、ActiveHDL等等。通過(guò)對(duì)微處理器功能的確認(rèn),能夠及時(shí)地找出設(shè)計(jì)中的缺陷,從而加速設(shè)計(jì)的進(jìn)程,從而提高設(shè)計(jì)的可靠性。微處理器邏輯合成:是指把HDL語(yǔ)言、原理圖等輸入轉(zhuǎn)換為由RAM、寄存器等基礎(chǔ)邏輯元件構(gòu)成的邏輯網(wǎng)絡(luò),對(duì)產(chǎn)生的邏輯網(wǎng)絡(luò)進(jìn)行優(yōu)化,輸出諸如EDF、EDN之類的文件,由FPGA的布線工具來(lái)完成,采用PWM中斷引腳測(cè)試法,或者定時(shí)器測(cè)試法進(jìn)行無(wú)中斷測(cè)試[3](見(jiàn)表2)。
四、微處理器RISC設(shè)計(jì)技術(shù)
微處理器RISC的三個(gè)最基礎(chǔ)的抽象層次是架構(gòu)、邏輯實(shí)現(xiàn)和實(shí)體實(shí)現(xiàn)。其中,架構(gòu)定義了處理器的功能特性,邏輯實(shí)現(xiàn)是一種邏輯結(jié)構(gòu),并將其組織起來(lái)。微處理器的物理實(shí)現(xiàn)是一種物理結(jié)構(gòu),也是一種特定的表達(dá)方式。架構(gòu)一般也被稱作指令集架構(gòu)(ISA)。該程序解釋了處理器的指令集合,并確定了處理器的工作性能。在微處理器設(shè)計(jì)中,指令集結(jié)構(gòu)的設(shè)計(jì)一直是軟件設(shè)計(jì)等領(lǐng)域的一個(gè)重要課題。指令集結(jié)構(gòu)的設(shè)計(jì)是軟件和硬件管理的一種方法。在信息系統(tǒng)A中,程序和計(jì)算機(jī)可以彼此獨(dú)立發(fā)展。在不理解計(jì)算機(jī)的具體實(shí)施細(xì)節(jié)時(shí),可以按照ISA的要求來(lái)開(kāi)發(fā)該程序。在歷史上,按照指令集的不同,有兩類指令集:CISC和RISC。
所謂的“復(fù)合指令集計(jì)算機(jī)”,就是微處理器通過(guò)設(shè)定某些復(fù)雜的指令,將以前用軟件完成的某些常用的功能轉(zhuǎn)換成硬件指令。自從電腦誕生以來(lái),人類對(duì)其指令的結(jié)構(gòu)進(jìn)行了改進(jìn),使其功能得到更進(jìn)一步的提高。研究者在應(yīng)用中面向?qū)ο蟪绦?、面向高?jí)語(yǔ)言和編譯程序以及面向操作系統(tǒng)的優(yōu)化實(shí)現(xiàn)上,提高了指令的性能。早期很多典型的計(jì)算機(jī)指令系統(tǒng)都非常龐大,指令的功能也比較復(fù)雜,因此產(chǎn)生了很多問(wèn)題。只有三類指令被頻繁地應(yīng)用,即:數(shù)據(jù)傳輸指令、算術(shù)運(yùn)算指令、程序控制指令。
五、微處理器SPARC指令系統(tǒng)(指令庫(kù))
該系統(tǒng)的全名稱為“可擴(kuò)展處理器體系結(jié)構(gòu)”,是微處理器RISC的一種微處理器體系結(jié)構(gòu)。Sun計(jì)算機(jī)于1985年首次推出,同時(shí)也是SPARC國(guó)際公司的一個(gè)注冊(cè)商標(biāo)。這個(gè)公司創(chuàng)建于1989年,旨在將SPARC推向外部,并對(duì)體系結(jié)構(gòu)進(jìn)行一致性測(cè)試。除此之外,SPARC還向多家制造商提供了相關(guān)的標(biāo)準(zhǔn),比如德州儀器、賽普拉斯半導(dǎo)體、富士通等。Oracle已經(jīng)開(kāi)發(fā)出一套強(qiáng)大的方案,可以保證SPARC/Solaris的二值兼容,從而保證最大程度的安全保障。微處理器SPARC服務(wù)器為不同的企業(yè)應(yīng)用程序提供了創(chuàng)紀(jì)錄的性能,僅用少量費(fèi)用就可以達(dá)到無(wú)與倫比的任務(wù)關(guān)鍵可靠性[4]。
和Intel Pentium不同,SUNSPARC有32個(gè)字符長(zhǎng)度,使得微處理器SPARC還具有更簡(jiǎn)潔的數(shù)據(jù)類型,在SPARC架構(gòu)中,存儲(chǔ)在內(nèi)存中的數(shù)據(jù)地址始終是一致的,也就是說(shuō),字節(jié)數(shù)據(jù)的位元組地址是任意的。
六、結(jié)束語(yǔ)
綜上所述,微處理器的設(shè)計(jì)是目前最為復(fù)雜的IC設(shè)計(jì),為了加速它的運(yùn)算速度,出現(xiàn)了許多新的技術(shù)和系統(tǒng)架構(gòu)。RISC架構(gòu)在20多年前就已被廣泛地用于各種微處理器的設(shè)計(jì)。微處理器FPGA的體積和速度都在不斷地提高,為芯片性能的提高提供了新的途徑。
通過(guò)實(shí)驗(yàn)證明,基于RISCV-32I所設(shè)計(jì)的微處理器可以應(yīng)用于目前市場(chǎng)上的大部分對(duì)應(yīng)產(chǎn)品的開(kāi)發(fā),并且可以充分利用它的全部外部設(shè)備和信息資源庫(kù),提升微處理器工作效率,避免由于外部設(shè)備太多而導(dǎo)致的不必要資源浪費(fèi)。
作者單位:鄒和仕 上海天數(shù)智芯半導(dǎo)體有限公司
參" 考" 文" 獻(xiàn)
[1]陳劍鋒,學(xué)江煜,郭湘津.基于FPGA的RISC微處理器設(shè)計(jì)[J].機(jī)電信息,2022(10):22-26.
[2]金國(guó)華,熊浩渺,畢勝,等.基于STM32微處理器的嵌入式核心板設(shè)計(jì)與開(kāi)發(fā)[J].中國(guó)現(xiàn)代教育裝備,2022(09):18-19,30.
[3]段丙皇,杜川華,朱小鋒,等.微處理器中子單粒子效應(yīng)測(cè)試系統(tǒng)設(shè)計(jì)與試驗(yàn)研究[J].原子能科學(xué)技術(shù),2022,56(04):734-741.
[4]高磊,陶彥飛,劉祥言.基于ARM微處理器的振動(dòng)臺(tái)電源監(jiān)控系統(tǒng)設(shè)計(jì)[J].信息與電腦(理論版),2021,33(24):115-117.