11. 数据通路的建立

1. 基本原则

根据指令需求,连接组件,建立数据通路

2. 指令的需求

指令的需求简单分为以下两类,

<1> 所有指令的共同需求

<2> 不同指令的不同需求

2.1 所有指令的共同需求 - 取指令

取指令

程序计数器PC的内容是指令的地址

用PC的内容作为地址,访问指令存储器获得指令编码

需要更新PC,顺序执行时,PC = PC+4,发生分支时,PC = 分支目标的地址

取指单元IFU

2.2 加法和减法指令的需求

addu rd,rs,rt 和 subu rd,rs,rt

加法和减法的指令位域

下图所示,一个时钟周期就可以完成加减法操作,其中ALUCtr和RegWr是由指令译码生成的控制信号。

加减法的数据通路

2.3 逻辑运算指令的需求

ori rt,rs,imm16

ori指令的位域

现在再看加减法的数据通路图,如果想实现ori指令,还存在以下几个问题,

<1> 目的寄存器是rt,而不是rd

<2> 立即数是ALU的一个输入

<3> 立即数是16-bit

针对上面3个问题,提出以下解决方案,增加了两个2选1多路器和1个零扩展部件,如下图所示,

支持ori指令的数据通路

2.4 访存指令的需求

lw rt,imm16(rs)

访存指令的位域

再看上面的数据通路,如果想实现访存指令,仍存在以下问题,

<1> 如何进行符号扩展

<2> 从何处装载数据

针对上面的两个问题,对数据通路进行改造,方案是将原有的零扩展部件添加符号扩展的功能,增加数据存储器和相应的2选1多路器,如下图所示,

支持lw指令后的数据通路

sw rt,imm16(rs)

观察sw指令,需要将rt的数据存入数据存储器,因此增加一条数据线连接RegFile的busB和数据存储器的DataIn,并给数据存储器增加写使能控制信号MemWr。

支持sw指令后的数据通路

3. 总结

将IFU和数据通路放在一起,如下图所示,

IFU和数据通路
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容