cpu设计实战 lab 5

在CPU设计的LAB 5中,重点在于处理load指令的写后读问题和优化流水线。通过使用四选一选择器,确保在译码级选择最近的写后读数据。实验室任务包括在回写级、访存级、执行级和译码级实施相应设计,以解决数据前递和流水线阻塞的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LAB 5

简述

经过 lab 4 的讨论,lab 5其实蛮简单的了,我们现在实现的 19 个指令除了 load 指令,都可以在执行期得到写回的数据,于是除了 load 都可以直接向译码级前递,而 load 在执行级时,若和译码级的指令发生写后读,则暂停一拍。

还有一个问题,如果译码级和多级都发生写后读,我们应该选取最新的值,即离此条指令最近的一次写后读进行前递,即需要一个具有优先级四选一选择器,选择是三条前递路径中的还是当前寄存器堆读出的。

现在目标就很明确了,让我们动笔吧。

开冲
回写级

寄存器号 5 bit,寄存器数据 32 bit,开一条 37 bit 的数据通路即可。

assign ws_to_ds_fwd = {37{ws_valid}} & {37{ws_gr_we}} & {ws_dest,ws_final_result};
访存级

和上面类似的。

assign ms_to_ds_fwd = {37{ms_valid}} & {37{ms_gr_we}} & {ms_dest,ms_final_result};
执行级

这里就需要向前传递寄存器号 5 bit,寄存器数据 32 bit,和 1 bit 的当前指令是否是 load 指令,借此控制译码级是否阻塞

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值