一.指令的数据通路

(1)单周期时钟通路就是指所有指令均在一个时钟周期内完成也就是CPI=1
(2)所以它的性能取决于运行最慢的周期

下面来介绍一些常用MIPS指令的数据通路构建

(1)取指令数据通路

在这里插入图片描述
Men[PC++] -> IR

通过PC的地址调用指令存储器获得指令字,并且将PC+4(MIPS加4个字节),在时钟以后写入PC对PC进行更新。

(2)R型指令数据通路

【1】以add(运算)为例

在这里插入图片描述

步骤:
(1)PC中存放地址,访问指令寄存器得到32位MIPS指令字。
(2)将32MIPS指令字进行解析分别得到Rs,Rt,Rd的值,并将其放入寄存器组中。
(3)寄存器组通过读信号,将存放在R1和R2寄存器中的值取出,放入ALU中进行运算,将结果返回到寄存器组的WD中。
(4)当写的时钟信号到来时,把结果写入W中,返回到寄存器Rd

(3)I型指令数据通路

【1】以Lw指令为例

在这里插入图片描述

步骤:
(1)PC中存放地址,访问指令寄存器得到32位MIPS指令字。
(2)对MIPS指令进行解析,并将对应的值放入对应的通路中。(注意这里的写入寄存器变为了Rt,之后在整体规划的时候在这里需要加一个多路选择器)
(3)取出R1的值,将立即数进行带符号拓展为32位,将它们在ALU中进行运算,得到地址。
(4)通过地址在数据存储器DM中取出相应的值,在写时钟脉冲到来时写入寄存器W中。

【2】以Sw指令为例

在这里插入图片描述

步骤:
前面步骤与Lw指令相同。
将寄存器R2中的值(Rt)写入到数据存储器中指定的地址,操作完成。

二.数据通路的综合

(1)第一阶段(加Mux(多路选择器))

R型指令具有三个寄存器,I型指令具有两个寄存器加一个立即数。因为它们的写入寄存器有时不同,所以我们需要加入多路选择器来进行选择。

在这里插入图片描述

(1)RegDst 选择写入寄存器(Rt 或 Rd
(2)AluSrc 选择第二个操作数(立即数或寄存器R2)
(3)MemtoReg 选择写入寄存器的数据(来自ALU或者数据存储器)

(2)第二阶段(加控制器(对Mux和寄存器操作等进行选择))

在这里插入图片描述
控制器中一些信号的描述:

信号名称 方向 位宽 功能描述
jump output 1 是否执行jump操作
branch output 1 是否执行branch操作
alusrc output 1 送入ALU B段数据是立即数的32位投站还是寄存器堆读取的值
memwrite output 1 是否需要写回数据存储器
memtoreg output 1 写回的数据是来自ALU计算的结果还是存储器读取的数据
regwrite output 1 是否需要写寄存器堆
regdst output 1 写入寄存器堆的地址rt还是rd
alucontrol output 3 ALU的控制信号,不同运算符的控制

(3)举例

Lw指令
在这里插入图片描述
只需要注意加入的多路选择器,记忆控制器对它们的使用即可!

传送门: 多周期MIPS架构


版权声明:本文为weixin_46308081原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_46308081/article/details/115871242