File tree Expand file tree Collapse file tree 1 file changed +6
-5
lines changed Expand file tree Collapse file tree 1 file changed +6
-5
lines changed Original file line number Diff line number Diff line change @@ -22,7 +22,7 @@ TreeCoreL2是一个支持RV64I的单发射5级流水线的开源处理器核。
2222 </p >
2323</p >
2424
25- TreeCoreL2的微架构设计采用经典的5级流水线结构,取指和访存的请求通过crossbar进行汇总并转换成自定义的axi-like总线** Data Exchange (dxchg)** ,最后通过转换桥将dxchg协议转换成axi4协议并进行仲裁。下面将着重介绍** 取指** ,** 执行** ,** 访存** 和** axi4协议仲裁** 四部分的具体实现。
25+ TreeCoreL2的微架构设计采用经典的5级流水线结构,取指和访存的请求通过crossbar进行汇总并转换成自定义的axi-like总线** data exchange (dxchg)** ,最后通过转换桥将dxchg协议转换成axi4协议并进行仲裁。下面将着重介绍** 取指** ,** 执行** ,** 访存** 和** axi4协议仲裁** 四部分的具体实现。
2626
2727### 取指单元
2828取指单元主要功能是计算出下一个周期的pc并向axi总线发送读请求。pc通过多路选择器按照优先级从高到低依次选取` mtvec ` 、` mepc ` 、` jump target ` 、 ` branch predict target ` 和` pc + 4 ` 的值。BPU采用基于全局历史的两级预测器。相关参数如下:
@@ -39,7 +39,7 @@ GHR每次从EXU得到分支是否taken的信息用于更新GHR移位寄存器的
3939 </p >
4040</p >
4141
42- 由于目前TreeCore2的取指和访存没有使用cache,处理器核需要大量时钟周期来等待axi的响应,所以采用动态分支预测技术后对ipc的提升较小
42+ 由于目前TreeCore2的取指和访存没有使用cache,处理器核需要大量时钟周期来等待axi的响应,所以采用动态分支预测技术后对ipc的提升较小。
4343<p align =" center " >
4444 <img src =" https://raw.githubusercontent.com/microdynamics-cpu/tree-core-cpu-res/main/treecore-l2-ipc.png " />
4545 <p align =" center " >
@@ -48,12 +48,13 @@ GHR每次从EXU得到分支是否taken的信息用于更新GHR移位寄存器的
4848</p >
4949
5050### 执行单元
51- 执行单元主要用于执行算术逻辑计算、计算分支指令的跳转地址。另外还设计了一个乘除法单元(MDU)和加速计算单元(ACU)用于加速执行矩阵乘除法 ,但是由于个人进度的影响,没能按期调通cache,故没有将MDU,ACU到集成到提交的版本中 。
51+ 执行单元主要用于执行算术逻辑计算、计算分支指令的跳转地址。另外还设计了一个乘除法单元(MDU)和加速计算单元(ACU)用于对矩阵乘除法进行加速 ,但是由于个人进度的影响,没能按期调通cache,故没有将MDU,ACU集成到提交的版本中。最后执行单元中还实现了CSR寄存器,用于对环境调用异常和中断进行处理 。
5252
5353### 访存单元
54+ 访存单元集成了LSU和CLINT,其中LSU负责生成访存所需的读写控制信号(size, wmask等)。CLINT则读入生成的控制信号,若访存的地址处于` 0x0200_0000 - 0x0200_ffff ` 之间,则处理访存的信号,否则将控制信号透传出去。
5455
55- ### axi4转换桥
56-
56+ ### Crossbar&Axi4转换桥
57+ crossbar负责将取值和访存的请求进行合并,统一成一个自定义的axi-like总线 ** data exchange(dxchg) ** ,dxchg其实和axi-lite很接近。不过考虑之后扩展的需要,故自定义了一个。axi4转换桥将crossbar的dxchg总线接口转换成标准axi4总线,其中实现了一个arbiter用于对取值和访存的请求进行仲裁。
5758
5859## 项目结构和参考
5960TreeCore的代码仓库结构借鉴了[ riscv-sodor] ( https://github.com/ucb-bar/riscv-sodor ) 和[ oscpu-framework] ( https://github.com/OSCPU/oscpu-framework ) 组织代码的方式并使用make作为项目构建工具,同时Makefile里面添加了模板参数,可以支持多个不同处理器的独立开发,能够直接使用` make [target] ` 下载、配置相关依赖软件、生成、修改面向不同平台(difftest和soc)的verilog文件,执行回归测试等。
You can’t perform that action at this time.
0 commit comments