File tree Expand file tree Collapse file tree 1 file changed +4
-4
lines changed Expand file tree Collapse file tree 1 file changed +4
-4
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协议并进行仲裁。下面将着重介绍** 取指** ,** 执行** ,** 访存** 和** crossbar&axi4转换桥 ** 四部分的具体实现。
2626
2727### 取指单元
2828取指单元主要功能是计算出下一个周期的pc并向axi总线发送读请求。pc通过多路选择器按照优先级从高到低依次选取` mtvec ` 、` mepc ` 、` jump target ` 、 ` branch predict target ` 和` pc + 4 ` 的值。BPU采用基于全局历史的两级预测器。相关参数如下:
@@ -81,7 +81,7 @@ TreeCore的代码仓库结构借鉴了[riscv-sodor](https://github.com/ucb-bar/r
8181## 总结
8282
8383### 心得感想
84- 首先,要衷心地感谢一生一芯三期项目的所有老师,助教同学们一直以来的辛苦付出。去年自己有幸赶到上科大参加了RISCV中国峰会,香山处理器的系列报告让我大饱眼福。当听说新一期一生一芯项目准备面向全国高校学生开放后,作为一名研三临近毕业的学生,深感这次机会的来之不易,便毫不犹豫地报了名。在实际编码调试过程中让我重新学习了很多知识,比如内存地址对齐问题。我记得我第一次听说“地址对齐”这个名词还是13年我大一学c语言的时候,当时老师在讲解union类型时引出了这个概念。但是当时对这个概念没有深入学习下去,这导致我在刚开始调试axi仲裁的时候一直没搞对地址的掩码计算,花了很长时间。另外参加一生一芯三期对于我来说也是个不小的挑战,因为它要求独立开发,要在很短的时间内学习很多新知识,使用很多新工具,而这些是我以前做过的课程实验所没有的。在具体开发过程中,由于本人跨专业的原因,体系结构相关知识比较薄弱,所以很多内容都要从零开始学起。另外我还要兼顾科研任务,毕设实验和找工作等多项事情。这其中也遇到了很多让我感到迷茫的时刻,但是相比过去的自己也收获了实实在在的成长 。通过参加一生一芯三期,我完整地实现了一个处理器核,虽然还不太完美。学习了chisel,verilator,difftest等众多开源处理器开发工具及其背后的敏捷开发思想,也加深了对软硬件之间工作原理的认知。当时通过 [进度表](https://docs.qq.com/sheet/DY3lORW5Pa3pLRFpT?newPad=1&newPadType=clone&tab=BB08J2)也记录下了开发调试过程中的点点滴滴 。那种不停google->查书->编码->调试后bug被解决的喜悦让我终生难忘。
84+ 首先,要衷心地感谢一生一芯三期项目的所有老师,助教同学们一直以来的辛苦付出。去年自己有幸赶到上科大参加了RISCV中国峰会,香山处理器的系列报告让我大饱眼福。当听说新一期一生一芯项目准备面向全国高校学生开放后,作为一名研三临近毕业的学生,深感这次机会的来之不易,便毫不犹豫地报了名。在实际编码调试过程中让我重新学习了很多知识,比如内存地址对齐问题。我记得我第一次听说“地址对齐”这个名词还是13年我大一学c语言的时候,当时老师在讲解union类型时引出了这个概念。但是当时对这个概念没有深入学习下去,这导致我在刚开始调试axi仲裁的时候一直没搞对地址的掩码计算,花了很长时间。另外参加一生一芯三期对于我来说也是个不小的挑战,因为它要求独立开发,要在很短的时间内学习很多新知识,使用很多新工具,而这些是我以前做过的课程实验所没有的。在具体开发过程中,由于本人跨专业的原因,体系结构相关知识比较薄弱,所以很多内容都要从零开始学起。另外我还要兼顾科研任务,毕设实验和找工作等多项事情,时间很紧张,有时很长时间没法调试出一个bug也会让我感到沮丧和迷茫。但是相比与参加之前,自己也确实收获了实实在在的成长 。通过参加一生一芯三期,我完整地实现了一个处理器核,虽然还不太完美。学习了chisel,verilator,difftest等众多开源处理器开发工具及其背后的敏捷开发思想,也加深了对软硬件之间工作原理的认知。当时的 [进度表](https://docs.qq.com/sheet/DY3lORW5Pa3pLRFpT?newPad=1&newPadType=clone&tab=BB08J2)也记录下了自己开发调试过程中的点点滴滴 。那种不停google->查书->编码->调试后bug被解决的喜悦让我终生难忘。
8585
8686<p align =" center " >
8787 <img src =" https://raw.githubusercontent.com/microdynamics-cpu/tree-core-cpu-res/main/treecore-l2-schedule.png " />
@@ -90,7 +90,7 @@ TreeCore的代码仓库结构借鉴了[riscv-sodor](https://github.com/ucb-bar/r
9090 </p >
9191</p >
9292
93- ### 文档
93+ ### 文档资料整理
9494另外,在自己观看学习视频,编写、调试代码的过程中,为了方便自己复习、消化相关知识,我将自己平时曾踩过的坑以及qq群各位同学的问题记录了下来,并配以相关解答,总结成了一个FAQ文档。目前该文档有近3.7万字,202张图片,共126页。之后有时间将继续对文档中的相关内容进行补充,修改和更新。
9595
9696<p align =" center " >
@@ -101,7 +101,7 @@ TreeCore的代码仓库结构借鉴了[riscv-sodor](https://github.com/ucb-bar/r
101101</p >
102102
103103### 一点开发过程中的想法: 波形与回归测试联合调试工具的设计
104- difftest进行差分测试可以快速定位到出错的指令,却无法像波形那样直观地展现多周期完整的信号变化。考虑设计一个工具,当difftest对比到出错的指令时能够触发事件,而这个事件传递到波形组件后可以直接定位到对应时钟周期并显示临近的波形。后期的话考虑直接对波形进行解析,就像嵌入式领域的逻辑分析仪一样,能够直接将诸如操作数,stall等信息标注到波形上。
104+ difftest进行差分测试可以快速定位到出错的指令,却无法像波形那样直观地展现多周期完整的信号变化。考虑设计一个工具,当difftest对比到出错的指令时能够触发事件,而这个事件传递到波形组件后可以直接定位到对应时钟周期并显示临近的波形,以方便调试 。后期的话考虑直接对波形进行解析,就像嵌入式领域的逻辑分析仪一样,能够直接将诸如操作数,stall等信息标注到波形上。
105105
106106## 计划
107107目前开发的** TreeCoreL2** 是TreeCore系列处理器核的第二个版本,目前基本达到设计目标,后续将会继续优化代码。而第三个版本(** TreeCoreL3** )和第四个版本(** TreeCoreL4** )将会追求更高的性能,也是规划中的参加一生一芯第四期和第五期的处理器。其中** TreeCoreL3** 将在前代核的基础上,支持RV64IMAC指令,cache和mmu,并提高流水线级数,使其能够启动rt-thread,xv6和linux。** TreeCoreL4** 则会在** TreeCoreL3** 的基础上实现浮点运算和多发射技术,进一步提高处理器性能。
You can’t perform that action at this time.
0 commit comments