(轉)64位開源處理器Rocket的源代碼簡單介紹


轉載地址: http://blog.csdn.net/leishangwen/article/details/46604819

 

最近大概閱讀了一下UCB發布的Rocket處理器的源碼,對源代碼各個文件的功能有了一些大致的了解,Mark一下。

Rocket是一款64bit的標量處理器,5級流水線,采用的是risc-v指令集,集成FPU,並有許多or1200沒有的特性,比如:無阻塞緩存、分支預測、返回地址堆棧、硬件頁表填充、cache支持ECC、支持多核等。

Rocket的源代碼是使用Chisel編寫的,Chisel是UCB發布的基於Scala的領域特定語言。可以在https://github.com/ucb-bar/rocket下載Rocket的全部源碼,共有20個文件,各個文件實現的功能大致如下:

 

 

開源處理器Rocket的源代碼文件作用說明
arbiter.scala 實現了一個固定優先級的仲裁器,編號越低,優先級越高
btb.scala 實現了gshare,其中包含BTB(Branch Target Buffer)、BHT(Branch History Table),還實現了RAS(Return Address Stack)
consts.scala 定義了一些類似與宏定義的變臉
core.scala 包含控制通路、數據通路,聯合起來為Core
csr.scala 實現了risc-v指令集中定義的Control Status Registers
ctrl.scala 實現了控制通路,其中就反映了5級流水線
decode.scala 其中實現了對卡諾圖的化簡,在指令譯碼的時候會使用這里的功能
dpath.scala 實現數據通路
depath_alu.scala 實現了ALU
fpu.scala 實現了與第三方FPU的接口
icache.scala 實現了指令一級緩存、取值,其中就使用了btb.scala中定義的分支預測技術
instructions.scala 定義了Rocket處理器支持的所有指令
multiplier.scala 實現了乘法、除法運算,其中乘法采用的是迭代法,除法采用的是試商法
nbdcache.scala 實現了數據一級緩存,采用MSHR技術實現了無阻塞緩存
package.scala 定義了復位地址、異常處理vector base address
ptw.scala 實現了硬件的page table walk,也就是硬件頁表填充
rocc.scala 實現了一個加速協處理器,用來執行用戶自定義指令
tile.scala Rocket處理器的頂層文件,其中連接Core、指令一級緩存、數據一級緩存、FPU等模塊
tlb.scala 實現了傳輸后備緩沖器
util.scala 定義了一些對象,提供了一些工具函數,比如:類型轉換。

 

以上是個人的理解,歡迎大家提出異議,共同討論啊。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM