![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
CPU设计实战
文章平均质量分 68
Bunny9__
我是小曹
展开
-
设计方案对比——实现非对齐加载存储指令
设计方案对比——实现非对齐加载存储指令方法一方法二补充非对齐加载指令,读RAM中读一个字的数据,用一部分内容更新目的寄存器的部分内容,可以用两种方法实现:为regfile添加字节使能信号,像data_sram一样,支持部分写将目的寄存器中的数据作为源操作数,读取其旧值与待写入新值,拼接成最终的32bit结果,再整体写入regfile方法一不会产生写后读数据相关问题(加载指令在译码级就读取了rt寄存器的数据,并通过数据前推端口解决了数据相关问题,之后由数据通路流入访存级),需要修改regfile原创 2021-07-22 15:21:43 · 326 阅读 · 0 评论 -
CPU设计实战lab4---任务三 数据前推解决数据冲突
流水线的数据冲突译码阶段的数据冲突ID模块通过译码和读取regfile寄存器,确定后续阶段所需要的源操作数等,在流水线的条件下,就有可能造成“写后读”的数据相关问题采用数据前推的方式将将要写入regfile的数据和寄存器信息传送到ID模块,进行判断解决ID模块接收由EX、MEM、WB模块传送过来的写信息另外还接收了load_op信号,这里的load_op信号其实是上一个节拍从ID模块的得到的,相当与经过一个流水线寄存器打了一拍,这个信息可以用来处理load相关 // ID模块接收其他模块传来原创 2021-07-04 11:18:04 · 1580 阅读 · 0 评论 -
CPU设计实战lab3---任务1 简单CPU参考设计调试
调试mycpu_verify中的bug为了方便加波形,先设置一下simulation,后面添加波形就不用多次relaunch simulationle1第一次仿真,可以看到下面的波形,soc_lite下的debug_wb_pc没值,向上一级一级看哪里没传好if把数据传给了id,但是id里面没有进行fs_to_ds_bus_r <= fs_to_ds_bus去id模块,发现ds_valid没有被赋值,加上2继续添加波形,看到id模块的load_op没有被赋值加上,3之后重原创 2021-06-24 21:57:53 · 1638 阅读 · 2 评论