Skip to content

Commit 7fd72dc

Browse files
committed
docs: add ma and bus intro sections
1 parent 3b408ad commit 7fd72dc

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

report/tc_l2.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff 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
## 项目结构和参考
5960
TreeCore的代码仓库结构借鉴了[riscv-sodor](https://github.com/ucb-bar/riscv-sodor)[oscpu-framework](https://github.com/OSCPU/oscpu-framework)组织代码的方式并使用make作为项目构建工具,同时Makefile里面添加了模板参数,可以支持多个不同处理器的独立开发,能够直接使用`make [target]`下载、配置相关依赖软件、生成、修改面向不同平台(difftest和soc)的verilog文件,执行回归测试等。

0 commit comments

Comments
 (0)