【龙芯杯日志】2021/2/17-2021/2/21:多周期CPU(Harris黑书架构)

2021/2/17

看Harris黑书,大概学习了多周期的架构,对于一些内容还不太熟悉,需要在实现的时候熟悉一下。

比较明显的是,Harris架构对数据和控制信号的分离做得比较好,有很明显的控制路径和数据路径。

2021/2/18

正式开始写多周期的代码,今天的主要任务是实现cpu内部的几个主要部件。

一天的密集开发之后,完成了pc、mem、ir、regfile、alu,剩下的非体系结构寄存器也已经完成了基本实现。

2021/2/19

开始实现cu,多周期的cu和单周期cpu的cu,最大区别在于控制信号是通过状态机而非普通的组合逻辑实现的。因此这里涉及到了状态机的写法。

在实现cu的同时发现了alu实现的一些问题,因为alu的实现照用了之前单周期cpu的alu实现,这里和Harris架构出现了一些不兼容的情况,针对这种情况进行了一些修改,但是修改之后仍然存在一些问题。

2021/2/20

开始实现cpu的布线,在布线过程中,对非体系结构寄存器的实现进行了修改,使用了一个通用的实现替代了原来的单独实现。同时,也比较明显地看出了和单周期相比,多周期引入了数个非体系结构寄存器,对整体结构的协调性确实产生了一些影响。而将这些非体系结构部件较为合理地组合进cpu架构中,就是流水线架构需要做的工作了。

布线过程中总结了一些心得体会,近期会整理成一篇文章。

编写了cpu的testbench,但是在编写过程中发现,由于Harris架构使用了指令数据不分离的冯诺依曼架构,原有的testbench需要进行修改,同时,用作测试的汇编代码也需要进行修改,此处修改了数据内存的地址,使其和指令地址错开。

2021/2/21

对整体代码进行调试,有了之前单周期cpu的经验,此处对cpu的调试相对较为简单,且调试过程中并未发现严重的逻辑问题。

经过5天,最终实现了一版Harris架构的cpu代码。总的来说,Harris架构的优点是控制路径和数据路径分离比较明显,结构和状态机实现比较严谨。比较可惜的是由于目前对vivado环境掌握还不熟练,无法进行比较准确的性能测试和对比,看不出多周期架构对比单周期的性能优势,之后会对相关的内容进行学习,并形成一篇文章。

posted @ 2021-03-08 15:07  chkb  阅读(424)  评论(0编辑  收藏  举报