亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        嵌入式RISC-V亂序執(zhí)行處理器的研究與設(shè)計(jì)

        2021-02-05 03:03:34李雨倩焦繼業(yè)劉有耀郝振和
        計(jì)算機(jī)工程 2021年2期
        關(guān)鍵詞:嵌入式指令設(shè)計(jì)

        李雨倩,焦繼業(yè),劉有耀,郝振和

        (1.西安郵電大學(xué)電子工程學(xué)院,西安 710121;2.西安郵電大學(xué)計(jì)算機(jī)學(xué)院,西安 710121)

        0 概述

        嵌入式處理器目前已用于低功耗應(yīng)用的各個(gè)領(lǐng)域,隨著小型嵌入式設(shè)備(如物聯(lián)網(wǎng)邊緣設(shè)備)的廣泛使用,對(duì)嵌入式系統(tǒng)功能、速度、資源等要求越來(lái)越高[1-3]。同時(shí),增長(zhǎng)較快的物聯(lián)網(wǎng)市場(chǎng)具有長(zhǎng)尾化特性,擁有眾多細(xì)分市場(chǎng),對(duì)于功耗有較高的要求[4-6]。處理器是物聯(lián)網(wǎng)設(shè)備的核心部件,特別是嵌入式物聯(lián)網(wǎng)設(shè)備對(duì)處理器有實(shí)時(shí)性的要求,對(duì)軟件生態(tài)的依賴(lài)相對(duì)較低,應(yīng)用需求也不盡相同,因此,迫切需要一種能夠根據(jù)自身需求可定制的RISC指令集架構(gòu)[7]。

        在嵌入式領(lǐng)域中,ARM架構(gòu)的處理器占據(jù)著主導(dǎo)地位,當(dāng)前多數(shù)嵌入式處理器都基于ARM架構(gòu)。ARM系列處理器通常只能做標(biāo)準(zhǔn)化設(shè)計(jì),很難實(shí)現(xiàn)差異化處理。例如最常用的Cortex-M3和Cortex-M4處理器,Cortex-M3相比于Cortex-M0增加了除法,Cortex-M4相比于Cortex-M3增加了分支預(yù)測(cè)和浮點(diǎn)單元。ARM在提升處理器性能的同時(shí),面積大幅增加。

        現(xiàn)有的嵌入式微處理器多采用順序單發(fā)射、順序執(zhí)行和順序?qū)懟氐姆绞?,在保證處理器性能情況下勢(shì)必會(huì)犧牲面積,制約了處理器性能面積比[8]。本文通過(guò)分析當(dāng)前嵌入式處理器領(lǐng)域存在的問(wèn)題,根據(jù)RISC-V指令集的特點(diǎn),設(shè)計(jì)一款32位高性能低功耗的亂序執(zhí)行處理器支持RV32ICM指令集架構(gòu)。使用亂序執(zhí)行方式降低處理器的面積,在保證處理器性能的情況下提高性能面積比。針對(duì)處理器運(yùn)行速度的需求,系統(tǒng)采用并發(fā)方式執(zhí)行指令,支持不同類(lèi)型指令并行執(zhí)行。為降低并行化開(kāi)銷(xiāo),使用小面積低功耗的乘除法模塊,并采用面積較小的緩存結(jié)構(gòu)以平衡性能、硬件資源與代碼大小。

        1 RISC-V指令集

        RISC-V(Reduced Instruction Set Computer-Five)作為一種開(kāi)放自由的指令集體系結(jié)構(gòu),可以針對(duì)不同的應(yīng)用靈活組合指令集進(jìn)行芯片設(shè)計(jì),滿(mǎn)足從嵌入式設(shè)備到服務(wù)器等不同領(lǐng)域的處理器設(shè)計(jì)需求[9-10]。

        RISC-V是一種新興的開(kāi)源指令集,沒(méi)有專(zhuān)利限制,具有簡(jiǎn)潔的指令格式、模塊化的指令集、可定制擴(kuò)展、無(wú)條件碼和分支延遲槽等優(yōu)點(diǎn),簡(jiǎn)化了RISCV處理器的設(shè)計(jì)[11]。國(guó)內(nèi)外已有眾多高校和企業(yè)對(duì)RISC-V指令集進(jìn)行研發(fā),阿里平頭哥在2019年7月發(fā)布了高性能RISC-V架構(gòu)處理器玄鐵910;兆易創(chuàng)新也在2019年8月發(fā)布了一款基于RISC-V的32位通用MCU芯片GD32VF103系列。

        RISC-V ISA由一個(gè)基本的整數(shù)指令集“I”和豐富的可選擴(kuò)展組成,擴(kuò)展用單個(gè)字母表示,例如“M”(整數(shù)乘法和除法)、“A”(原子指令)、“C”(壓縮指令)等。其中整數(shù)集有3種不同的配置,分別具有32位、64位和128位數(shù)據(jù)寬度:RV32I,RV64I和RV128I,RV32E配置本質(zhì)上是輕量級(jí)RV32I,其寄存器數(shù)量更少[12]。設(shè)計(jì)者可以選擇實(shí)現(xiàn)具有定制擴(kuò)展的指令子集,通過(guò)這些指令集的組合或者擴(kuò)展以滿(mǎn)足應(yīng)用需求,同時(shí)可以降低資源開(kāi)銷(xiāo)和功耗。文獻(xiàn)[13]較全面地描述了RISCV指令集。RISC-V指令集在嵌入式設(shè)計(jì)領(lǐng)域具有較大的優(yōu)勢(shì)和廣泛的應(yīng)用前景,隨著高性能處理器的不斷開(kāi)發(fā)和應(yīng)用,RISC-V指令集被更廣泛地應(yīng)用于高性能低功耗等領(lǐng)域。

        2 處理器架構(gòu)

        亂序執(zhí)行結(jié)構(gòu)可加快處理器執(zhí)行速度,提高系統(tǒng)運(yùn)行速度[14]。本文設(shè)計(jì)了適用于微控制器的三級(jí)流水線(xiàn)結(jié)構(gòu),即“取指”“執(zhí)行”和“寫(xiě)回”,具有順序單發(fā)射、亂序執(zhí)行和亂序?qū)懟氐奶攸c(diǎn)。圖1所示為三級(jí)流水線(xiàn)架構(gòu)。

        圖1 三級(jí)流水線(xiàn)架構(gòu)Fig.1 Three-stage assembly line architecture

        2.1 取指階段

        2.1.1 取指及生成PC

        如圖1所示,取指位于流水線(xiàn)的第1階段。取指階段從指令存儲(chǔ)器中順序取出指令存入IR寄存器,執(zhí)行階段從IR中取指令繼續(xù)執(zhí)行。在本文設(shè)計(jì)中,取指模塊使用一個(gè)32位寄存器保存當(dāng)前的PC值,順序取指時(shí)下一個(gè)PC通過(guò)當(dāng)前指令的位寬判斷,若當(dāng)前指令為16位指令時(shí)PC+2,當(dāng)前指令為32位時(shí)PC+4。分支指令采用分支預(yù)測(cè)模塊得到的跳轉(zhuǎn)地址作為新的PC值,分支預(yù)測(cè)失敗時(shí)使用執(zhí)行階段返回的正確的PC值。分支預(yù)測(cè)采用靜態(tài)分支預(yù)測(cè)技術(shù),根據(jù)當(dāng)前指令的跳轉(zhuǎn)方向預(yù)測(cè)指令是否發(fā)生跳轉(zhuǎn)。對(duì)取得的指令在同一周期進(jìn)行部分譯碼,判斷指令是分支指令還是非分支指令,若是分支指令則需要得到分支指令的具體信息,通過(guò)得到的分支指令跳轉(zhuǎn)地址偏移量和分支預(yù)測(cè)的結(jié)果生成PC值。

        2.1.2 指令訪問(wèn)及AHB總線(xiàn)通道

        取指模塊作為總線(xiàn)系統(tǒng)中的主設(shè)備單元負(fù)責(zé)產(chǎn)生取指地址和相關(guān)控制信號(hào)。本文設(shè)計(jì)取指以及訪存模塊采用AHB總線(xiàn)接口協(xié)議,可方便集成ARM系列處理器中已經(jīng)成熟的各種IP核[15]。

        目前大多數(shù)RISC-V處理器所使用大面積緊耦合數(shù)據(jù)和指令存儲(chǔ)器占用了較大的芯片面積,嵌入式設(shè)備中將增加處理器的成本[16-17]。因此,為實(shí)現(xiàn)快速取指掛載了指令Cache等高速存儲(chǔ)器,指令可以通過(guò)總線(xiàn)系統(tǒng)從外部存儲(chǔ)器(Icache)進(jìn)行讀取。

        2.2 執(zhí)行階段

        2.2.1 譯碼與指令派遣

        譯碼與執(zhí)行位于流水線(xiàn)的第2階段。執(zhí)行階段將取指階段存儲(chǔ)在IR寄存器的指令進(jìn)行譯碼和執(zhí)行;譯碼模塊可得到指令的操作類(lèi)型、寄存器索引和立即數(shù)等信息。執(zhí)行模塊主要完成簡(jiǎn)單算術(shù)運(yùn)算(ALU)、乘/除法(MulDiv)、訪存指令的地址生成(AGU)、分支預(yù)測(cè)解析等任務(wù)。

        譯碼模塊主要由組合邏輯組成,在指令格式中,通過(guò)opcode將指令分組,指令的最低兩位作為判斷32位和16位指令的依據(jù),funct部分可以判斷指令的具體功能,立即數(shù)進(jìn)行符號(hào)擴(kuò)展為32位。根據(jù)指令的編碼規(guī)則對(duì)指令進(jìn)行譯碼,按照指令功能可生成3組指令信息,將指令信息派遣到ALU、Muldiv或AGU模塊完成運(yùn)算。RISC-V指令都是單操作數(shù)或兩操作數(shù)指令并且寫(xiě)回策略每次只寫(xiě)回一條指令,因此,相關(guān)寄存器文件支持兩個(gè)讀端口和一個(gè)寫(xiě)端口操作。指令派遣流程如圖2所示。

        圖2 指令派遣流程Fig.2 Command dispatch procedure

        生成乘除法單元所需的信息總線(xiàn)(Info Bus)代碼如下:

        2.2.2 亂序并行執(zhí)行單元

        執(zhí)行模塊主要由3個(gè)功能子單元組成,可實(shí)現(xiàn)普通運(yùn)算、乘除法運(yùn)算、長(zhǎng)指令訪存等功能。不同通道的邏輯操作和內(nèi)存訪問(wèn)相互獨(dú)立,可實(shí)現(xiàn)指令集并行執(zhí)行以獲得更好的性能。普通ALU運(yùn)算模塊完成邏輯運(yùn)算、加減法、移位等指令;訪存地址生成模塊完成Load、Store指令的地址生成;乘除法單元完成整數(shù)的乘除法運(yùn)算。

        嵌入式處理器的主要挑戰(zhàn)就是功能單元利用率低和分段訪問(wèn)的問(wèn)題,例如乘法和除法單元。圖3所示為RISC-V各類(lèi)型指令使用頻率,數(shù)據(jù)來(lái)源于coremark與dhrystone 2個(gè)標(biāo)準(zhǔn)測(cè)試程序。由圖3可知,使用頻率最高的是基本整數(shù)運(yùn)算指令,乘除法相關(guān)指令mul與div使用頻率較低。乘除法單元在執(zhí)行過(guò)程中短時(shí)間內(nèi)偶爾被訪問(wèn),并在相當(dāng)長(zhǎng)時(shí)間內(nèi)保持空閑,長(zhǎng)時(shí)間的空閑會(huì)導(dǎo)致顯著的靜態(tài)功耗。隨著晶體管尺寸技術(shù)節(jié)點(diǎn)和閾值電壓的縮小,靜態(tài)功率的作用變得更加明顯[18]。此外,這些利用率低的單元具有更大的面積(即晶體管數(shù)量),表明嵌入式系統(tǒng)中靜態(tài)功耗不斷增加。

        圖3 RISC-V指令的使用頻率Fig.3 Usage frequency of RISC-V instruction

        降低并行化開(kāi)銷(xiāo)是提高依賴(lài)數(shù)據(jù)并行計(jì)算模型的計(jì)算系統(tǒng)能效關(guān)鍵因素之一,尤其是在處理工作負(fù)載不平衡和并行區(qū)域小的應(yīng)用時(shí)。基于以上分析,本文設(shè)計(jì)了低功耗、小面積的多周期乘除法模塊,該模塊僅使用狀態(tài)機(jī)進(jìn)行控制和選擇,節(jié)省了硬件開(kāi)銷(xiāo)。乘法器選用Booth設(shè)計(jì),除法器使用加減交替法設(shè)計(jì)。乘法操作按照MULH(返回乘法結(jié)果高位)、MUL(返回乘法結(jié)果低位)的順序執(zhí)行,除法操作按照DIV(返回除法的商)、REM(返回除法的余數(shù))的順序執(zhí)行,并將兩條指令融合為單一的乘除法操作,僅執(zhí)行一次乘除法操作。乘除法操作共用一個(gè)加法器進(jìn)行資源復(fù)用可減少面積開(kāi)銷(xiāo),使用加法器進(jìn)行多次迭代運(yùn)算可實(shí)現(xiàn)乘除法功能。結(jié)合單周期和多周期并行執(zhí)行的設(shè)計(jì),可以在減少對(duì)流水線(xiàn)運(yùn)行影響的情況下實(shí)現(xiàn)降低并行化開(kāi)銷(xiāo)的目的,減小處理器的面積和降低功耗。

        2.3 寫(xiě)回階段

        2.3.1 寫(xiě)回仲裁策略

        寫(xiě)回階段主要由訪存模塊和寫(xiě)回模塊組成。如圖1所示,寫(xiě)回階段提交來(lái)自流水線(xiàn)的指令,將指令的運(yùn)算結(jié)果寫(xiě)回到通用寄存器組中,并更新寄存器文件。因?yàn)樵趫?zhí)行過(guò)程中多周期指令和單周期指令可以并行執(zhí)行,所以在寫(xiě)回時(shí)可能會(huì)出現(xiàn)以下3種情況:

        1)單周期指令順序發(fā)射執(zhí)行,在一個(gè)時(shí)鐘周期內(nèi)完成計(jì)算。多周期指令如果和正在執(zhí)行的單周期指令沒(méi)有發(fā)生數(shù)據(jù)沖突,則不影響單周期指令的執(zhí)行,流水線(xiàn)不會(huì)產(chǎn)生斷流的危害,單周期指令可以順序?qū)懟亍?/p>

        2)多周期指令中乘除法指令和load指令的執(zhí)行周期有所不同,所以在寫(xiě)回階段可能發(fā)生同時(shí)寫(xiě)回到同一寄存器的情況,寫(xiě)回階段將從長(zhǎng)指令FIFO中讀出第一條長(zhǎng)指令信息,按順序?qū)⒌谝粭l指令優(yōu)先寫(xiě)回。因此,多周期指令屬于順序發(fā)射和順序?qū)懟亍?/p>

        3)單周期和多周期指令在同一時(shí)期寫(xiě)回時(shí),多周期指令寫(xiě)回的優(yōu)先級(jí)更高,因?yàn)槎嘀芷谥噶钜欢ㄔ趩沃芷谥噶钪鞍l(fā)射。因此,如果將單周期與多周期指令統(tǒng)一考慮,則流水線(xiàn)屬于順序發(fā)射和亂序?qū)懟亍?/p>

        2.3.2 長(zhǎng)指令數(shù)據(jù)訪存

        為滿(mǎn)足CPU并行訪問(wèn)的需求,本文采用哈佛體系結(jié)構(gòu),即使用分離的指令和數(shù)據(jù)存儲(chǔ)通過(guò)獨(dú)立的總線(xiàn)系統(tǒng)分別訪問(wèn)。數(shù)據(jù)和指令的訪問(wèn)可以同時(shí)進(jìn)行,可實(shí)現(xiàn)快速、無(wú)阻塞訪問(wèn)數(shù)據(jù)。分離的總線(xiàn)使得處理器可以在同一個(gè)周期內(nèi)獲得指令字(來(lái)自Icache)和操作數(shù)(來(lái)自Dcache),從而提高了執(zhí)行速度和數(shù)據(jù)的吞吐率,減少訪存沖突。當(dāng)CPU訪問(wèn)數(shù)據(jù)時(shí),需要經(jīng)過(guò)總線(xiàn)控制單元BIU對(duì)信號(hào)進(jìn)行譯碼,如圖4所示,BIU對(duì)地址總線(xiàn)lsu2biu_haddr[31∶0]進(jìn)行譯碼,根據(jù)不同的地址選擇訪問(wèn)不同的外部模塊或數(shù)據(jù)存儲(chǔ)器。

        圖4 總線(xiàn)地址譯碼邏輯結(jié)構(gòu)Fig.4 Logic structure of bus address decoding

        3 主要問(wèn)題處理

        3.1 分支預(yù)測(cè)處理

        RISC-V具有簡(jiǎn)潔的分支跳轉(zhuǎn)指令,包括無(wú)條件直接跳轉(zhuǎn)(jal)、無(wú)條件間接跳轉(zhuǎn)(jalr)和帶條件直接跳轉(zhuǎn)指令3種類(lèi)型。其中帶條件跳轉(zhuǎn)指令將“比較”和“跳轉(zhuǎn)”作為一條指令執(zhí)行,減少了指令數(shù)目,從而簡(jiǎn)化了硬件設(shè)計(jì)。

        在實(shí)際應(yīng)用程序中,“while”“for”等循環(huán)語(yǔ)句使用頻繁,循環(huán)語(yǔ)句需要用到條件分支指令,因此正確預(yù)測(cè)分支指令跳轉(zhuǎn)方向和地址將減少流水線(xiàn)斷流的危害。本文設(shè)計(jì)中使用簡(jiǎn)單的靜態(tài)分支預(yù)測(cè)結(jié)構(gòu),在取指階段對(duì)指令進(jìn)行部分譯碼,得到分支指令信息。在條件分支指令中如果向后跳轉(zhuǎn)則預(yù)測(cè)為跳轉(zhuǎn),向前跳轉(zhuǎn)預(yù)測(cè)為不跳轉(zhuǎn),對(duì)于無(wú)條件跳轉(zhuǎn)指令jal不需要進(jìn)行預(yù)測(cè)直接跳轉(zhuǎn),在無(wú)條件間接跳轉(zhuǎn)指令jalr中,如果rs1為寄存器0,則直接生成PC值;rs1若不是寄存器0,為防止RAW沖突,將暫停取指,等待執(zhí)行完成后進(jìn)行跳轉(zhuǎn)。如果在執(zhí)行階段的分支預(yù)測(cè)解析模塊通過(guò)ALU計(jì)算得到的跳轉(zhuǎn)地址與預(yù)測(cè)結(jié)果不符,則會(huì)將正確的地址送入取指模塊,更新PC值,并產(chǎn)生一個(gè)周期的流水線(xiàn)斷流。分支預(yù)測(cè)狀態(tài)示意圖如圖5所示。

        圖5 分支預(yù)測(cè)狀態(tài)示意圖Fig.5 State schematic diagram of branch prediction state

        3.2 非對(duì)齊指令處理

        本文設(shè)計(jì)支持RISC-V架構(gòu)擴(kuò)展壓縮子集“C”,當(dāng)處理器取指遇到地址非對(duì)齊的指令時(shí),通常需要兩個(gè)時(shí)鐘周期取出一條指令。針對(duì)以上問(wèn)題,使用剩余緩存技術(shù),保存上一次取指沒(méi)有用完的比特位供下一次使用。對(duì)于RV32非對(duì)齊情況,取出的32位指令為低16位與上一次取指的高16位,對(duì)于壓縮指令只使用低16位,高16位暫存于剩余緩存中。

        圖6展示了4條待執(zhí)行指令,其中前3條為16位壓縮指令,第4條為32位指令。4條指令均存儲(chǔ)在32位指令存儲(chǔ)器0x0c-0x14的地址空間,其中第4條指令分開(kāi)存儲(chǔ)在0x10和0x14兩個(gè)地址。

        圖6 指令編碼及對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)地址Fig.6 Instruction coding and corresponding data storage address

        表1為不加剩余緩存的情況,共需要對(duì)指令存儲(chǔ)器進(jìn)行5次讀取操作。表2為添加剩余緩存的情況,第1次讀取0x0c地址的指令,讀出0xc606_c422,將0xc422送入IR寄存器,將0xc606送入剩余緩存寄存器中。第2次不需要讀取指令存儲(chǔ)器,使用剩余緩存的指令,第4條指令為32位指令,根據(jù)PC生成模塊PC值會(huì)從0x10加2變成0x12,使用剩余緩存數(shù)據(jù),剩余緩存為0x1623,判斷不是16位指令后PC加2,讀取0x14地址的指令,與剩余緩存里的數(shù)據(jù)組合成32位指令。由上述步驟可知,相同的4條指令不加剩余緩存需要5次讀取操作,增加剩余緩存技術(shù)只需要讀取3次存儲(chǔ)器,可加快執(zhí)行速度。

        表1 不加剩余緩存的情況Table 1 Situation of without residual cache

        表2 添加剩余緩存的情況Table 2 Situation of adding remaining cache

        3.3 沖突解決

        由于指令之間具有數(shù)據(jù)依賴(lài)性,RISC-V流水線(xiàn)可能會(huì)發(fā)生數(shù)據(jù)沖突等相關(guān)性問(wèn)題,因此執(zhí)行過(guò)程中需要處理流水線(xiàn)沖突問(wèn)題。

        1)如圖7所示,第2條指令“div t5,ra,sp”需要用到第1條指令“l(fā)i sp,6”的數(shù)據(jù),這會(huì)引起RAW問(wèn)題從而造成數(shù)據(jù)沖突。本文設(shè)計(jì)采用數(shù)據(jù)旁路技術(shù),將第1條指令的計(jì)算結(jié)果直接送入下一條指令的譯碼模塊。當(dāng)執(zhí)行除法指令時(shí),在沒(méi)有發(fā)生數(shù)據(jù)沖突的情況下,單周期指令可以繼續(xù)發(fā)射、執(zhí)行,當(dāng)發(fā)生RAW相關(guān)性時(shí),在一條相關(guān)的指令執(zhí)行之前插入氣泡,暫停流水線(xiàn)的執(zhí)行。對(duì)于多周期指令和單周期指令寫(xiě)回模塊發(fā)生的WAW相關(guān)性,多周期指令優(yōu)先寫(xiě)回,避免此類(lèi)沖突的發(fā)生。

        圖7 流水線(xiàn)數(shù)據(jù)的沖突Fig.7 Conflict of assembly line data

        2)對(duì)于除法指令這樣的長(zhǎng)指令需要多個(gè)時(shí)鐘周期才能完成除法運(yùn)算,執(zhí)行階段可能會(huì)出現(xiàn)資源相關(guān),使用握手協(xié)議暫停流水線(xiàn)。此外,采用哈佛體系結(jié)構(gòu),避免取指模塊和訪存模塊發(fā)生爭(zhēng)用存儲(chǔ)器資源的相關(guān)沖突。

        3)對(duì)于轉(zhuǎn)移指令所引發(fā)的控制相關(guān),使用分支預(yù)測(cè)技術(shù)減少流水線(xiàn)的斷流。

        3.4 處理器軟件接口

        在本文設(shè)計(jì)中開(kāi)發(fā)了處理器相應(yīng)的軟件接口,包括外設(shè)寄存器名稱(chēng)、地址的定義以及外設(shè)的驅(qū)動(dòng)代碼、中斷處理和啟動(dòng)代碼等,對(duì)嵌入式軟件開(kāi)發(fā)人員透明,無(wú)需了解處理器內(nèi)部結(jié)構(gòu),易于開(kāi)發(fā),并且ARM系列的軟件移植方便。

        4 驗(yàn)證與結(jié)果分析

        4.1 指令集驗(yàn)證

        本文使用硬件描述語(yǔ)言Verilog HDL將模塊功能以代碼來(lái)實(shí)現(xiàn),通過(guò)開(kāi)源的RISC-V基準(zhǔn)指令集自測(cè)試用例,測(cè)試處理器是否符合指令集架構(gòu)。該測(cè)試程序是由RISC-V架構(gòu)開(kāi)發(fā)者為了檢測(cè)處理器是否符合指令集架構(gòu)中的定義而編寫(xiě)的測(cè)試程序,匯編指令使用宏定義組織成程序點(diǎn),測(cè)試指令集架構(gòu)中定義的指令。結(jié)果表明,RV32ICM指令集所有指令均滿(mǎn)足RISC-V指令集架構(gòu)標(biāo)準(zhǔn)。

        4.2 FPGA驗(yàn)證

        片上系統(tǒng)(SoC)圍繞處理器內(nèi)核構(gòu)建,具有一系列外部設(shè)備。本文FPGA實(shí)驗(yàn)平臺(tái)為Xilinx Artix-7(XC7A35T-L1CSG324I)開(kāi)發(fā)板,處理器核在50 MHz的時(shí)鐘頻率下進(jìn)行測(cè)試。通過(guò)FPGA的軟硬件協(xié)同仿真,使用該處理器核對(duì)外設(shè)進(jìn)行控制,仿真結(jié)果滿(mǎn)足嵌入式應(yīng)用需求。此外,在同等環(huán)境下對(duì)RISC-V開(kāi)源處理器蜂鳥(niǎo)E203和V-scale[19]處理器進(jìn)行FPGA測(cè)試,表3為不同處理器的資源利用情況。

        表3 基于FPGA的處理器資源利用情況Table 3 Resource utilization of processors based on FPGA

        4.3 ASIC綜合分析

        在SMIC 0.11 μm的ASIC(Application Specific Integrated Circuit)技術(shù)節(jié)點(diǎn)上進(jìn)行綜合分析,進(jìn)一步對(duì)比了Cortex-M3處理器以及開(kāi)源RISC-V處理器蜂鳥(niǎo)E203、Zero-riscy[19]和V-scale等處理器,并從指令集、架構(gòu)、性能等方面進(jìn)行闡述。

        1)Cortex-M3為ARM推出的面向標(biāo)準(zhǔn)嵌入式市場(chǎng)的高性能低成本處理器,采用ARM商業(yè)指令集架構(gòu),并且包含Thumb和Thumb-2兩個(gè)子集。本文設(shè)計(jì)以及處理器蜂鳥(niǎo)E203、Zero-riscy和V-scale處理器均采用開(kāi)源RISC-V指令集架構(gòu)。RISC-V指令集相對(duì)于其他指令集架構(gòu)更為簡(jiǎn)潔,例如在帶條件分支跳轉(zhuǎn)指令方面,傳統(tǒng)處理器需要使用兩條獨(dú)立的指令,第1條指令先使用比較指令,比較的結(jié)果被保存到狀態(tài)寄存器中。第2條指令使用跳轉(zhuǎn)指令,判斷前一條指令保存在狀態(tài)寄存器中的比較結(jié)果為真時(shí),則進(jìn)行跳轉(zhuǎn)。相對(duì)而言,RISC-V架構(gòu)將比較與跳轉(zhuǎn)兩個(gè)操作放到了一個(gè)指令的方式減少了指令的條數(shù),因此在硬件設(shè)計(jì)上更加簡(jiǎn)單。在壓縮指令方面,ARM系列處理器使用的Thumb指令集,只有最基本指令的簡(jiǎn)化版本,可以將某些代碼壓縮20%~30%左右,但是從標(biāo)準(zhǔn)模式到Thumb模式的切換需要增加代碼和時(shí)間消耗,代碼的運(yùn)行速度降低了約15%[20]。Thumb-2指令集雖無(wú)須狀態(tài)切換,但是與標(biāo)準(zhǔn)的ARM代碼相比,需要更多的Thumb-2指令實(shí)現(xiàn)相同的功能,額外的指令會(huì)使處理速度降低大約15%~20%。在RISC-V中大約50%~60%的指令可以用RVC指令代替,代碼的大小可以減少約20%~30%,并且只需要在編譯階段完成,RISC-V的壓縮指令和標(biāo)準(zhǔn)指令可以混合使用,無(wú)須狀態(tài)的切換和額外代碼開(kāi)銷(xiāo)[21]。因此,RISC-V壓縮指令硬件設(shè)計(jì)更簡(jiǎn)單,執(zhí)行效率更高。

        2)如表4所示,在結(jié)構(gòu)方面,本文設(shè)計(jì)的流水線(xiàn)深度與Cortex-M3以及V-scale相同,分為取指、執(zhí)行、寫(xiě)回三級(jí)流水階段。Cortex-M3和V-sclale處理器是順序執(zhí)行處理器,本文設(shè)計(jì)采用順序發(fā)射、亂序?qū)懟氐牟呗詼p少了流水線(xiàn)的斷流。此外,設(shè)計(jì)了多周期乘除法器,對(duì)比Cortex-M3的單周期乘法器和2-12周期除法器具有更小的硬件開(kāi)銷(xiāo)。本文設(shè)計(jì)與Cortex-M3處理器均采用哈佛結(jié)構(gòu)通過(guò)并行訪問(wèn)指令和數(shù)據(jù)來(lái)提高系統(tǒng)運(yùn)行速度,并且采用了更適用于嵌入式系統(tǒng)的小面積緩存結(jié)構(gòu)。

        表4 不同處理器結(jié)構(gòu)對(duì)比Table 4 Comparison of different processor structure

        3)表5所示為邏輯綜合結(jié)果對(duì)比。將本文設(shè)計(jì)與Cortex-M3處理器和蜂鳥(niǎo)E203處理器采用相同的工藝環(huán)境綜合,面積上更具優(yōu)勢(shì),較Cortex-M3小64%,較蜂鳥(niǎo)E203處理器小8%。功耗低于Cortex-M3處理器,略高于蜂鳥(niǎo)E203處理器。在性能方面,通過(guò)Dhrystone(DMIPS/MHz)跑分結(jié)果可知,本文設(shè)計(jì)性能與Cortex-M3相近。

        表5 不同處理器基于ASIC技術(shù)性能對(duì)比Table 5 Comparison of different processor performance based on ASIC technology

        5 結(jié)束語(yǔ)

        本文針對(duì)小面積低功耗的嵌入式應(yīng)用,設(shè)計(jì)了一款基于RISC-V指令集的32位亂序處理器。從取指、執(zhí)行、寫(xiě)回3個(gè)階段對(duì)流水線(xiàn)的設(shè)計(jì)進(jìn)行分析,給出分支預(yù)測(cè)和數(shù)據(jù)沖突等問(wèn)題的應(yīng)對(duì)策略,且RV32ICM指令在測(cè)試平臺(tái)均可驗(yàn)證通過(guò),處理器核在Artix-7開(kāi)發(fā)板實(shí)現(xiàn)邏輯功能。實(shí)驗(yàn)結(jié)果表明,本文系統(tǒng)面積較Cortex-M3減少64%,功耗降低0.57 mW,可應(yīng)用于小面積高性能的嵌入式領(lǐng)域。目前該處理器已應(yīng)用到基于RISC-V與Cortex-M0的雙核異構(gòu)系統(tǒng)中,面對(duì)嵌入式應(yīng)用不斷多樣化和差異化的需求,下一步將面向特定的領(lǐng)域進(jìn)行擴(kuò)展,在RISC-V指令集預(yù)留的擴(kuò)展指令空間中分配特定指令,設(shè)計(jì)協(xié)處理器的接口。

        猜你喜歡
        嵌入式指令設(shè)計(jì)
        聽(tīng)我指令:大催眠術(shù)
        ARINC661顯控指令快速驗(yàn)證方法
        LED照明產(chǎn)品歐盟ErP指令要求解讀
        瞞天過(guò)?!律O(shè)計(jì)萌到家
        搭建基于Qt的嵌入式開(kāi)發(fā)平臺(tái)
        設(shè)計(jì)秀
        海峽姐妹(2017年7期)2017-07-31 19:08:17
        有種設(shè)計(jì)叫而專(zhuān)
        Coco薇(2017年5期)2017-06-05 08:53:16
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        Altera加入嵌入式視覺(jué)聯(lián)盟
        倍福 CX8091嵌入式控制器
        成人av综合资源在线| 亚洲日韩精品欧美一区二区三区不卡 | 无码熟妇人妻av在线网站| 亚洲色婷婷一区二区三区| 91视频88av| 人妻少妇无乱码中文字幕| 激情亚洲一区国产精品| 午夜福利啪啪片| 国产精品九九九无码喷水| 国产精品av网站在线| 久久久精品人妻一区二区三区四区| 97人妻碰碰视频免费上线| 日韩av在线毛片| 五月激情在线观看视频| 亚洲图片自拍偷图区| 狠狠色综合网站久久久久久久| 2020国产精品久久久久| 日本一区二区三区清视频| 久久伊人少妇熟女大香线蕉| 成年在线观看免费视频| 亚洲一区二区三区中文视频| 亚洲国产综合在线亚洲区亚洲av| 国产精品久久久久aaaa| 国产精品第1页在线观看| av免费看网站在线观看| 亚洲视频网站大全免费看| 亚洲小说区图片区另类春色| 日韩最新在线不卡av| 亚洲日产乱码在线中文字幕| 亚洲中文字幕无码天然素人在线| 国产精品亚洲五月天高清| 国产三级国产精品国产专区| 好大好爽我要高潮在线观看| 99久久er这里只有精品18| 久久久久亚洲AV片无码乐播 | 国产精品无套粉嫩白浆在线| 日韩中文字幕一区二区二区| 人妻少妇精品中文字幕av| 国产精品亚洲A∨天堂不卡| 亚洲天堂av在线免费播放| 午夜时刻免费入口|