64位开源处理器Rocket该人士介绍

最近大概读一点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.scalaRocket处理器的顶层文件,当中连接Core、指令一级缓存、数据一级缓存、FPU等模块
tlb.scala实现了传输后备缓冲器
util.scala定义了一些对象,提供了一些工具函数,比方:类型转换。

以上是个人的理解。欢迎提出异议,讨论啊。

版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值