• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

      2021-02-05 03:03:34李雨倩焦繼業(yè)劉有耀郝振和
      計(jì)算機(jī)工程 2021年2期
      關(guān)鍵詞:指令集流水線寄存器

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

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

      0 概述

      嵌入式處理器目前已用于低功耗應(yīng)用的各個(gè)領(lǐng)域,隨著小型嵌入式設(shè)備(如物聯(lián)網(wǎng)邊緣設(shè)備)的廣泛使用,對嵌入式系統(tǒng)功能、速度、資源等要求越來越高[1-3]。同時(shí),增長較快的物聯(lián)網(wǎng)市場具有長尾化特性,擁有眾多細(xì)分市場,對于功耗有較高的要求[4-6]。處理器是物聯(lián)網(wǎng)設(shè)備的核心部件,特別是嵌入式物聯(lián)網(wǎng)設(shè)備對處理器有實(shí)時(shí)性的要求,對軟件生態(tài)的依賴相對較低,應(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ù)測和浮點(diǎn)單元。ARM在提升處理器性能的同時(shí),面積大幅增加。

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

      1 RISC-V指令集

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

      RISC-V是一種新興的開源指令集,沒有專利限制,具有簡潔的指令格式、模塊化的指令集、可定制擴(kuò)展、無條件碼和分支延遲槽等優(yōu)點(diǎn),簡化了RISCV處理器的設(shè)計(jì)[11]。國內(nèi)外已有眾多高校和企業(yè)對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ò)展的指令子集,通過這些指令集的組合或者擴(kuò)展以滿足應(yīng)用需求,同時(shí)可以降低資源開銷和功耗。文獻(xiàn)[13]較全面地描述了RISCV指令集。RISC-V指令集在嵌入式設(shè)計(jì)領(lǐng)域具有較大的優(yōu)勢和廣泛的應(yīng)用前景,隨著高性能處理器的不斷開發(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í)流水線結(jié)構(gòu),即“取指”“執(zhí)行”和“寫回”,具有順序單發(fā)射、亂序執(zhí)行和亂序?qū)懟氐奶攸c(diǎn)。圖1所示為三級(jí)流水線架構(gòu)。

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

      2.1 取指階段

      2.1.1 取指及生成PC

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

      2.1.2 指令訪問及AHB總線通道

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

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

      2.2 執(zhí)行階段

      2.2.1 譯碼與指令派遣

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

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

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

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

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

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

      嵌入式處理器的主要挑戰(zhàn)就是功能單元利用率低和分段訪問的問題,例如乘法和除法單元。圖3所示為RISC-V各類型指令使用頻率,數(shù)據(jù)來源于coremark與dhrystone 2個(gè)標(biāo)準(zhǔn)測試程序。由圖3可知,使用頻率最高的是基本整數(shù)運(yùn)算指令,乘除法相關(guān)指令mul與div使用頻率較低。乘除法單元在執(zhí)行過程中短時(shí)間內(nèi)偶爾被訪問,并在相當(dāng)長時(shí)間內(nèi)保持空閑,長時(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

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

      2.3 寫回階段

      2.3.1 寫回仲裁策略

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

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

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

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

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

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

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

      3 主要問題處理

      3.1 分支預(yù)測處理

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

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

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

      3.2 非對齊指令處理

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

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

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

      表1為不加剩余緩存的情況,共需要對指令存儲(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ù)依賴性,RISC-V流水線可能會(huì)發(fā)生數(shù)據(jù)沖突等相關(guān)性問題,因此執(zhí)行過程中需要處理流水線沖突問題。

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

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

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

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

      3.4 處理器軟件接口

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

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

      4.1 指令集驗(yàn)證

      本文使用硬件描述語言Verilog HDL將模塊功能以代碼來實(shí)現(xiàn),通過開源的RISC-V基準(zhǔn)指令集自測試用例,測試處理器是否符合指令集架構(gòu)。該測試程序是由RISC-V架構(gòu)開發(fā)者為了檢測處理器是否符合指令集架構(gòu)中的定義而編寫的測試程序,匯編指令使用宏定義組織成程序點(diǎn),測試指令集架構(gòu)中定義的指令。結(jié)果表明,RV32ICM指令集所有指令均滿足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)開發(fā)板,處理器核在50 MHz的時(shí)鐘頻率下進(jìn)行測試。通過FPGA的軟硬件協(xié)同仿真,使用該處理器核對外設(shè)進(jìn)行控制,仿真結(jié)果滿足嵌入式應(yīng)用需求。此外,在同等環(huán)境下對RISC-V開源處理器蜂鳥E203和V-scale[19]處理器進(jìn)行FPGA測試,表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)一步對比了Cortex-M3處理器以及開源RISC-V處理器蜂鳥E203、Zero-riscy[19]和V-scale等處理器,并從指令集、架構(gòu)、性能等方面進(jìn)行闡述。

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

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

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

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

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

      5 結(jié)束語

      本文針對小面積低功耗的嵌入式應(yīng)用,設(shè)計(jì)了一款基于RISC-V指令集的32位亂序處理器。從取指、執(zhí)行、寫回3個(gè)階段對流水線的設(shè)計(jì)進(jìn)行分析,給出分支預(yù)測和數(shù)據(jù)沖突等問題的應(yīng)對策略,且RV32ICM指令在測試平臺(tái)均可驗(yàn)證通過,處理器核在Artix-7開發(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)中,面對嵌入式應(yīng)用不斷多樣化和差異化的需求,下一步將面向特定的領(lǐng)域進(jìn)行擴(kuò)展,在RISC-V指令集預(yù)留的擴(kuò)展指令空間中分配特定指令,設(shè)計(jì)協(xié)處理器的接口。

      猜你喜歡
      指令集流水線寄存器
      Gen Z Migrant Workers Are Leaving the Assembly Line
      3DNow指令集被Linux淘汰
      Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
      流水線
      分簇結(jié)構(gòu)向量寄存器分配策略研究*
      實(shí)時(shí)微測量系統(tǒng)指令集及解析算法
      報(bào)廢汽車拆解半自動(dòng)流水線研究
      什么是AMD64
      SIMATIC IPC3000 SMART在汽車流水線領(lǐng)域的應(yīng)用
      基于覆蓋率驅(qū)動(dòng)的高性能DSP指令集驗(yàn)證方法
      瑞金市| 盘山县| 襄樊市| 安福县| 普格县| 麻城市| 乌兰县| 霸州市| 宁津县| 张家港市| 房产| 鹤岗市| 页游| 元朗区| 吐鲁番市| 巴楚县| 晴隆县| 九寨沟县| 海南省| 喜德县| 宁波市| 义乌市| 西丰县| 台南县| 汉阴县| 榕江县| 浏阳市| 东丽区| 楚雄市| 衡阳市| 曲阜市| 濮阳市| 舒兰市| 宣武区| 青川县| 牡丹江市| 南安市| 邮箱| 阳城县| 长垣县| 休宁县|