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

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

 

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

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 定義了一些對象,提供了一些工具函數,好比:類型轉換。

 

以上是我的的理解,歡迎你們提出異議,共同討論啊。工具

相關文章
相關標籤/搜索