999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于AHB總線的RISC-V微處理器設計與實現

2020-10-19 04:40:42郝振和焦繼業李雨倩
計算機工程與應用 2020年20期
關鍵詞:指令設計

郝振和,焦繼業,李雨倩

1.西安郵電大學 計算機學院,西安 710121

2.西安郵電大學 電子工程學院,西安 710121

1 引言

RISC-V是由美國加州大學伯克利分校設計的一套開源指令集架構,RISC-V 具有低功耗、低成本、靈活可擴展及安全可靠等特性[1-4]。國內外已有眾多高校和企業對RISC-V指令集進行研發,阿里平頭哥在2019年7月發布了高性能RISC-V架構處理器玄鐵910;兆易創新也在2019 年8 月發布了一款基于RISC-V 的32 位通用MCU芯片GD32VF103系列。

嵌入式微處理器是數字信息產品的核心引擎,需要在終端對數據進行簡單處理和實時控制[5]。在嵌入式系統中,ARM系列一直占據著很大市場,隨著物聯網時代的來臨,嵌入式終端設備對功耗和性能具有更高的要求,ARM 等主流架構的勝任能力有限,RISC-V 作為新興架構以其精簡的體量,表現出了較強的優勢[6]。RISC-V最為重要的一個特點是模塊化,用戶可以根據具體的應用需求選擇不同的擴展來實現差異化設計,這對于追求低功耗小面積的嵌入式應用至關重要[7]。隨著RISC-V指令集生態系統的發展,RISC-V 也將被更廣泛地應用于嵌入式或者新興的IoT、邊緣計算、人工智能等領域[8]。

同時,基于IP核復用的SoC設計方法逐漸成為集成電路設計的主流技術[9]??偩€系統是嵌入式設計中互連各IP應用最廣泛的結構,優秀的系統結構可以極大程度地實現IP 共享,提高系統傳輸效率。目前基于RISC-V的處理器使用的總線各異:Tilelink是伯克利大學Rocket[10]項目中使用的總線協議,該協議較為復雜,其應用并不廣泛;蜂鳥E200系列使用的是自定義ICB總線,不適用于做嵌入式開發和應用;另外在RISC-V 處理器中廣泛使用的AXI總線協議[11],需要主設備自行維護讀和寫的順序,控制相對復雜,且在SoC 中集成不當會造成死鎖。在嵌入式應用中RISC-V處理器核若采用自定義總線,一方面增大硬件開銷,另一方面會造成負擔,影響系統的運行速度,降低穩定性和擴展性。在各類總線中,由ARM 公司提出的AHB 總線因其提供的豐富的IP 資源,得到了廣泛的使用[12]。

本文采用哈佛體系結構進行設計,實現了RISC-V ISA 中基本整數指令集及M/A/C 三個擴展指令集。設計采用標準AHB 總線接口,可實現CPU、Cache 等高性能設備互連。完成了指令集測試以及系統級功能測試,最后探討基于AHB 總線的RISC-V 處理器在應用中的優勢。

2 RISC-V指令集

2.1 RISC-V指令集特點

RISC-V 本身是一種指令集標準規范,和C/C++語言規范、POSIX 等系統標準一樣[13]。RISC-V 試圖通過一套統一的架構來滿足各種不同的應用場景,這種模塊化是x86 和ARM 架構所不具備的。RISC-V 指令集在小面積低功耗處理器領域具有以下優勢:

(1)精簡:架構簡潔,模塊化,指令集數目少,無需向后兼容;

(2)安全:安全系數高,穩定;

(3)開源:免費使用,用戶能自由修改,可定制化。

由圖1可以看出,RISC-V指令集體系結構在學術界得到了廣泛的推廣。

圖1 科學出版物年增數量比較

2.2 模塊化組織方式

RISC-V 使用模塊化的方式進行指令劃分,每個模塊使用一個英文字母表示。最基本也是必須要實現的指令集部分有I字母表示的基本整數指令子集[13]。其他指令子集部分均為可選模塊。本次設計實現基本整數指令集I以及M/A/C三個擴展指令集:

I:32 位地址空間與整數指令,支持32 個整數寄存器,指令類型包括包括整數運算指令、分支跳轉指令、整數Load/Store 指令、CSR 指令、存儲器屏障(FENCE)指令、特殊指令。

M:整數的有符號以及無符號乘除法運算,支持整數乘法指令、整數除法指令兩種指令類型。

A:原子操作指令集,為同步操作提供必要的支持,可以實現I/O 通信中的總線原子讀寫,從而簡化設備驅動,提高I/O 性能。指令類型包括AMO 指令、Load-Reserved指令和Store-Conditional指令。

C:16 位壓縮指令集,是 RISC-V 最通用的 ISA 擴展之一。與ARM的Thumb-2指令集相似,RISC-V標準包含一個壓縮指令的規范,壓縮指令是主要降低代碼密度的一種手段,指令寬度只有16 bit,可以鏡像完整的32位指令,壓縮指令只對匯編器和鏈接器可見,避免為處理器核編譯器的設計增加負擔[14]。壓縮指令解碼器可以檢測這些指令并將它們解壓縮成標準的32 bit指令。

3 RISC-V處理器核設計

3.1 流水線設計

流水線本質上可以理解為一種以面積換性能、以空間換時間的手段[15-16]。本次設計根據RISC-V 指令集的特點,設計深度為2級的流水線,如圖2所示。傳統五級流水線(取指、譯碼、執行、訪存和寫回)中每級流水級之間都存在適當的寄存器,流水線級數內部都有各自的組合邏輯數據通路,并且彼此之間沒有復用資源,因此其面積開銷較大。2級流水線極大程度地減少了硬件邏輯的數量,在保證基本功能的前提下,不僅降低了硬件成本而且降低了功耗。

在流水線第一階段,PC取指并訪問指令存儲器,并將取出指令存入IR寄存器。取指階段會完成簡單的譯碼過程(mini-decode),此處的譯碼不需要完整譯出指令的所有信息,而只需要譯出部分指令信息,包括此指令是屬于普通指令還是分支跳轉指令以及分支跳轉指令的類型和細節。另外,在第一階段還會對跳轉指令進行簡單的分支預測(Simple-BPU),跳轉指令類型如表1所示,判斷是否為跳轉指令代碼如下:

圖2 兩級流水線實現流程圖

assign prdt_taken=(dec_jal|dec_jalr|(dec_bxx & dec_bjp_imm[31]))

(1)對于帶條件的直接跳轉指令,使用靜態預測(向后跳轉預測為需要跳,否則預測為不需要跳),按照指令的定義使用其PC 和立即數表示的offset 相加得到其跳轉目標地址。

(2)對于無條件直接跳轉指令,由于其一定會跳轉,因此無須預測其跳轉方向,對于其跳轉目標地址,Simple-BPU按照指令的定義,使用其PC和立即數表示的offset相加得到其跳轉目標地址。

(3)對于無條件間接跳轉指令,由于其一定會跳轉,因此無須預測其跳轉方向,而對于跳轉目標地址,指令的跳轉目標計算所需的基地址來自于其rs1索引的操作數,需要從通用寄存器組中讀取。若通用寄存器索引號為0,則預測為跳轉,否則為避免流水線數據沖突,預測為不跳轉。

表1 RV32IC架構中的分支跳轉指令

對于RISC-V 中“C”壓縮指令集,取指模塊利用一個32位寄存器用來保存當前的PC值,順序指令下一個PC 通過當前指令的位寬判斷,若當前指令為32 位指令時PC+4,若當前指令為16 位指令時PC+2,分支指令采用分支預測模塊得到的跳轉地址作為新的PC值。

在流水線的第二階段,主要完成“譯碼”“執行”“交付”和“寫回”等功能。首先將取指階段保存在IR 寄存器的指令進行譯碼。在譯碼模塊進行譯碼時,根據執行指令的運算單元進行分組,根據指令的低兩位判斷是16 位指令還是32 位指令,之后根據關鍵編碼字段譯出其相應的指示信號,生成立即數和最終的操作數寄存器指引。指令判斷代碼如下:

wire riscv32=(~(i_instr[4∶2]==3'b111)) &(i_instr[1:0]==2'b11)

對32位load和store指令類型進行譯碼:

wire riscv32_load=rv32_instr[6∶2]==5'b00000&riscv32

wire riscv32_store=rv32_instr[6∶2]==5'b01000&riscv32

指令經過譯碼且從寄存器組中讀取了操作數之后被派發到不同的運算單元執行。根據指令類型的不同,運算模塊主要分為“ALU”“Muldiv”“AGU”。ALU主要負責普通ALU指令(邏輯運算、加減法、移位等指令)的執行;Muldiv 為乘除法計算模塊,主要負責乘法和除法指令等M擴展指令集的執行。Muldiv包括一個32位整數乘法器和一個32 位整數除法器。Load、Store 以及“A”擴展指令會被派發到AGU 模塊執行,AGU 模塊通過存取專用單元LSU訪問數據存儲模塊。

執行階段的一個重要功能是維護并解決流水線沖突。為了能夠檢測出長指令(包括load 指令、store 指令以及乘除法等指令)的RAW和WAW相關性,本文加入了一個OITF(Outstanding Instructions Track FIFO)模塊,如圖3 所示,OITF 本質上是一個深度為4 個表項先入先出的FIFO。在流水線的派遣點,每次派遣一個長指令,則會在OITF中分配一個表項,在這個表項中會存儲該長指令的源操作數寄存器索引和結果寄存器索引。在流水線的寫回點,每次按順序寫回一個長指令之后,就會將此指令在OITF 中的表項去除,即從其FIFO退出完成任務。

圖3 OITF微架構圖

在流水線寫回階段,為避免WAW 的數據相關性發生,如果單周期指令和長指令一起寫回,多周期指令寫回的優先級更高,因為多周期指令一定在單周期指令之前發射。

3.2 總線系統

為了以無縫的方式連接到一些外部IP核,提高系統運行速度和通信吞吐量,本文采用復用性好、擴展性高的標準AHB總線作為內核總線。AHB總線可支持各種處理器、高速設備、片外存儲設備等具有高時鐘、高性能的模塊以及低功耗模塊的連接與擴展,具有突發傳輸、分塊處理、單周期總線主機移交、單一時鐘沿操作、非三態執行功能等特性[17]。AHB廣泛用于高性能、高時鐘頻率的系統結構。為避免三態總線,AHB 將讀寫總線分開,寫數據總線(HRDATA)用于從master 到slave 的數據傳輸,讀數據總線(HWDATA)用于從slave 到master的數據傳輸。在傳輸過程中,AHB 總線傳輸包括一個地址控制周期和數據周期,數據周期可以通過HREADY信號擴展。如圖4所示,對LSU(存取單元)訪問BIU(總線控制單元)的地址總線lsu2biu_haddr[31∶0]進行譯碼,根據不同的地址選擇訪問不同的外部模塊或存儲器。

圖4 總線地址譯碼邏輯結構

處理器掛載了一整套典型的MCU外設。內核采用高速AHB 總線,外圍采用慢速APB 總線,所以系統在完成數據高效可靠傳輸的同時兼顧了高性能和低功耗的特性。并且各外設具有AHB 總線接口或APB 總線接口。

系統具有低成本的APB子系統可以訪問低頻外設的配置寄存器,實現CPU與外圍模塊的擴展連接,例如WDT、TIMER、UART等模塊。如圖5所示,CPU作為主設備可以通過AHB 總線訪問掛載在AHB 總線上的從設備,包括中斷控制、緩存等模塊。同時CPU可以通過AHB2APB 總線橋實現對掛載在APB 總線上WDT、UART等外設低速模塊的操作。

3.3 哈佛體系結構

傳統的馮諾依曼體系結構使用共享的總線和存儲單元,無法并行化執行指令和數據訪問操作[18-19]。如圖6所示本文采用哈佛體系結構,即使用分離的指令和數據存儲,通過專用的總線系統分別訪問,這樣設計既滿足CPU并行訪問的需求,同時減小了面積。

圖5 總線管理系統拓撲圖

圖6 哈佛結構示意圖

使用存取速度較快的一級Cache緩存結構,本文使用分離的Icache 和Dcache 作為緩存單元,大小均為4 KB。與大面積指令或數據緊耦合存儲器相比,緩存占用更少的硬件資源。同時設計了兩條獨立的AHB指令總線和AHB數據總線分別訪問Icache和Dcache。

數據和指令的訪問可以同時進行。如圖7所示,在取指階段,通過上電引導程序,IFU 通過AHB 總線選擇訪問Icache 或外部Flash 進行指令的讀取。取指完成后,在執行階段,若是執行load/store 等長指令,則會進入到AGU 中執行,之后LSU 模塊通過AHB 總線訪問Dcache 模塊或外圍寄存器進行數據讀寫。分離的總線使得處理器可以在同一個周期內獲得指令字(來自Icache)和操作數(來自Dcache),從而提高了執行速度和數據的吞吐率,減少訪存沖突。

圖7 讀寫訪問機制

4 仿真與綜合

4.1 功能仿真

本文使用硬件描述語言Verilog HDL 將模塊功能以代碼來實現,形成RTL(寄存器傳輸級)代碼。前仿真使用Synopsys 的VCS 環境進行驗證,驗證內容包括指令集測試與系統級功能測試。指令集測試方法為匯編級指令自測試程序,該測試程序是由RISC-V 架構開發者為了檢測處理器是否符合指令集架構中的定義而編寫的測試程序。匯編指令使用宏定義組織成程序點,測試指令集架構中定義的指令。結果表明,RV32IMAC指令集(包括47條基本整數指令、8條整數乘除法指令、11條原子指令以及46條壓縮指令)均可測試通過。

系統級功能測試方法為編寫C語言基準代碼,并使用RISC-V GCC 工具鏈進行編譯。功能測試內容包括AHB 及APB 總線的讀寫時序仿真、外設功能仿真等。通過對仿真結果的分析,證明該RISC-V 處理器各邏輯功能均可以實現,滿足設計要求。

4.2 性能分析

為了對所設計內容的面積和功耗等能效進行評估,對本設計、蜂鳥E203處理器以及Cortex M系列處理器進行了邏輯綜合。邏輯綜合工具使用Synopsys的Design Compiler,并采用0.11 μmSMIC 工藝技術實現了邏輯綜合流程。

綜合結果表明,在不包含存儲單元的情況下,本文所設計處理器面積比蜂鳥E203 處理器面積減小6%。在包含存儲單元面積的情況下,面積比蜂鳥E203 處理器面積減小了89%,主要原因在于本文采用了面積更小的一級緩存結構:蜂鳥E203 使用64 KB 的指令緊耦合存儲器和64 KB的數據緊耦合存儲器,本設計采用4 KB大小的Icache和Dcache。

如圖8 所示為兩種處理器在包含存儲時各模塊面積占比,圖(a)蜂鳥E203 處理器中DTCM(數據緊耦合存儲器)和ITCM(指令緊耦合存儲器)所占比例分別為46.005%。圖(b)本設計中Icache 和Dcache 分別占整體面積的26.732%,由圖可看出本設計明顯降低了存儲單元的占比。在嵌入式系統中,存儲器關系著整個處理器的性能,緩存單元的設計節約了整體面積,對處理器硬件成本的降低起到了重要作用。

圖8 RISC-V處理器核各模塊面積占比

如表2 所示,作為通用型MCU,本設計與ARM cortex M 系列處理器在功耗、邏輯門數、跑分等性能方面進行了對比。并對本文所設計處理器與Cortex-M0和 Cortex-M3 處理器以相同的 0.11 μmSMIC 工藝技術,1.08 V電壓以及50 MHz的時鐘下進行綜合。因綜合需要設定約束條件和特定的綜合庫,不同的庫中門電路基本標準單元(standard cell)的面積,時序參數是不一樣的。Cortex-M0+處理器是在不同的環境下進行綜合,因此在功耗、面積上是會有所差異。

表2 本設計與Cortex M系列處理器性能對比

表3 當前開源RISC-V處理器與本設計關鍵技術對比

在壓縮指令方面,ARM使用的Thumb指令集,只有最基本指令的簡化版本,可以將某些代碼壓縮20%~30%左右,但是從標準模式到Thumb模式的切換需要增加代碼和時間消耗,代碼的運行速度降低約15%[20]。ARM 使用的Thumb-2 指令集雖無須狀態切換,但是與標準的ARM 代碼相比,需要更多的Thumb-2 指令實現相同的功能,額外的指令會使處理速度降低大約15%~20%。在RISC-V 中大約50%~60%的指令可以用RVC指令代替,代碼的大小可以減少約20%~30%,只需要在編譯階段完成,無須狀態的切換和額外代碼開銷[21],因此RISC-V壓縮指令執行效率更高。

在面積和功耗等方面,Cortex-M3 處理器包含更多的指令和功能,相對于本設計處理器也具有更大的面積和功耗;本設計包含了乘除法單元,所以在邏輯門數上略高于Cortex-M0 和Cortex-M0+處理器。在功耗和性能上本設計處理器都與Cortex-M0處理器相當。

通過指令、面積和功耗等方面的分析,本文所設計處理器可替代Cortex-M0 處理器用于小面積低功耗等嵌入式領域。

目前開源RISC-V 處理器已發展出眾多版本。表3總結了國內外RISC-V開源處理器在架構、流水線、總線等方面的一些技術特點。

5 總結

本文針對嵌入式系統小面積低功耗的設計要求,設計了32位RISC-V微處理器。可支持RISC-V基本整數指令集以及MAC 三個擴展指令集。流水線深度為2級,采用哈佛體系結構,通過獨立的AHB總線并行訪問指令和數據。驗證結果表明該微處理器可實現對外部設備的控制和數據的高速處理。作為通用型MCU,本設計性能測試結果優于Cortex-M0處理器,在同等條件下綜合,面積和功耗與Cortex-M0 處理器相當,可替代Cortex-M0用于嵌入式應用中。目前該處理器已應用到基于RISC-V 與Cortex-M0 的雙核異構系統中,進行更深入的嵌入式開發研究。

猜你喜歡
指令設計
聽我指令:大催眠術
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
瞞天過?!律O計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
殺毒軟件中指令虛擬機的脆弱性分析
電信科學(2016年10期)2016-11-23 05:11:56
一種基于滑窗的余度指令判別算法
主站蜘蛛池模板: 欧美亚洲网| 亚洲av无码牛牛影视在线二区| 四虎永久在线视频| 亚洲无码A视频在线| 欧美人在线一区二区三区| 亚州AV秘 一区二区三区| 亚洲女同欧美在线| 日本欧美中文字幕精品亚洲| 日本影院一区| 亚洲人免费视频| 亚洲第一成年人网站| 91香蕉视频下载网站| 国产成人精品一区二区不卡| 一级全免费视频播放| 2021天堂在线亚洲精品专区| 国产91在线|日本| 中文字幕在线视频免费| 久久久精品无码一二三区| 丁香婷婷综合激情| 色悠久久综合| 婷婷综合缴情亚洲五月伊| 玖玖精品在线| 亚洲AV免费一区二区三区| 97视频在线精品国自产拍| 欧美成人aⅴ| 亚洲欧美成人网| 午夜限制老子影院888| 色综合五月| 国产拍揄自揄精品视频网站| 在线精品自拍| 欧美日本视频在线观看| 国产91小视频| 天天综合天天综合| 亚洲欧美日本国产专区一区| 欧美在线导航| 久久精品无码国产一区二区三区| 高h视频在线| 无码人妻免费| 欧美亚洲国产日韩电影在线| 国产主播在线观看| 亚洲日韩AV无码一区二区三区人| 成人午夜视频网站| 久青草免费视频| 人人艹人人爽| 亚洲最新网址| 欧美日韩亚洲国产| 制服丝袜国产精品| 午夜高清国产拍精品| 亚洲人成网7777777国产| av免费在线观看美女叉开腿| 欧美专区在线观看| 色偷偷一区| 国产美女精品人人做人人爽| 欧美日韩免费在线视频| 国精品91人妻无码一区二区三区| 亚洲综合色区在线播放2019 | 婷婷综合色| 久久亚洲国产视频| 91久久夜色精品国产网站| 国产精品久久久久久久伊一| 久久午夜影院| 人妻中文久热无码丝袜| 一级毛片免费的| 天天色综网| 在线国产资源| 国产在线自乱拍播放| 天天色综网| 色欲色欲久久综合网| 国产剧情一区二区| 亚洲人成在线精品| 亚洲日本中文综合在线| 人妻丰满熟妇av五码区| 97久久免费视频| 九九免费观看全部免费视频| 亚洲欧美在线综合图区| 青青青视频免费一区二区| 国产女人在线视频| 19国产精品麻豆免费观看| 搞黄网站免费观看| 高清色本在线www| 91麻豆精品视频| 欧美特黄一免在线观看|