北航961计算机组成-MIPS单周期处理器

MIPS单周期处理器

一、CPU的介绍

CPU的功能就是正确地执行指令,得到正确的结果
指令执行的三个主要过程是:1. 取指 2. 取数 3. 执行

指令功能的形式化描述:

  • ← \leftarrow :数据传送方向
  • R[a]:寄存器 a
  • M[a] : 主存中地址为a的单元
  • PC :程序计数器
  • f(data) : 表示对数据data进行f操作
    如:R[c] ← \leftarrow R[a] op R[b] // 寄存器a与寄存器b进行op运算结果送寄存器c

CPU设计的一般方法:

  1. 分析指令系统需求:用于确定需要哪些部件,大致框架
  2. 数据通路构建:分类型依次构建通路,最后整合所有通路
  3. 控制器设计:分析每个指令的控制信号

二、MIPS模型机的指令集

MIPS模型机指令集

三、数据通路部件

组合部件

ALU
Mux Signext

时序部件

寄存器堆
寄存器堆内部结构
DM IM
时序逻辑
理解寄存器的读写机制非常重要,关乎后续流水线CPU的学习。
由上图可以看出,在每个时钟下降沿的前后,寄存器的输入端需要维持一段时间的稳定输入,这样才能改变寄存器的状态,从而在此周期的剩下时间内保持正确的输出。
对于寄存器的输入而言,是时序相关的,即依赖于时钟信号起作用;而对于寄存器的输出而言,是时序无关的,在一个周期的大部分时间内是恒定的值。
时钟周期
以寄存器-组合电路-寄存器为例介绍时钟周期,理解了这个,对于更加复杂的数据通路只需要做拆分即可。
以寄存器1的输出作为组合电路的输入,信号在组合电路中传递,需要一定的时间,而往往不同指令在数据通路中的路径不同,因此所需要的传递时间也不同。因此下一个下降沿需要在最长的信号传递时间之后到达,寄存器2的输入才能是正确的值。
两种典型的电路
上面一种在流水线CPU中非常常见,往往是两个流水线寄存器之间包含若干组合电路构成一个流水级。
下面一种的典型例子是PC寄存器的自增电路,PC的值每隔一个时钟周期加4,因此其中的组合逻辑只需要实现简单的加4功能,而不需要实现整个ALU的功能,因此PC+4不适合复用ALU。

四、单周期数据通路设计

注意事项

  • 所有指令都在一个时钟周期内完成
  • 哈佛体系结构:指令和数据分开存储

1. 取指和PC自增数据通路

取指:instruction = IM[PC]
PC自增:PC ← \leftarrow PC + 4
需要的部件:PC寄存器、指令存储器IM、加法器Adder
PC自增适用于大多数非跳转、分支的指令,此时PC ← \leftarrow PC + 4的目的是为了使PC指向下一条指令的位置,因为MIPS中指令都是定长32位的,即4个字节,因此每条指令之间的地址(以字节编址)相差4。
取指以及PC自增

2. R型指令数据通路(以add为例)

R[rd] ← \leftarrow R[rs] + R[rt]
需要的部件(除了取值自增之外):寄存器堆、ALU
将rs和rt寄存器的值取出,交给ALU计算结果,然后写回rd寄存器,这里需要注意的是写寄存器的操作依赖于时钟信号,因此这里的写入操作需要在下一个时钟周期的开始才能完成。
R型指令数据通路
R型指令数据通路

3. LW指令数据通路

R[rt] ← \leftarrow DM[ R[rs] + Signext(imm16) ]
需要的部件(除了取值自增之外):寄存器堆,ALU,符号扩展单元Signext,数据存储器DM
先计算数据的地址,使用基址寻址,然后将DM的输出传给寄存器堆的输入,同样在下一个时钟周期的开始将新的值写入寄存器。LW指令用到了最多的部件,因此LW指令数据通路最长,执行时间也最长。
lw指令数据通路
lw指令数据通路

4. SW指令数据通路

DM[ R[rs] + Signext(imm16) ] ← \leftarrow R[rt]
需要的部件(除了取值自增之外):寄存器堆,ALU,符号扩展单元Signext,数据存储器DM
与LW相反,SW是将寄存器的值写入数据存储器中,但是都有计算数据存储地址的步骤,因此与LW使用ALU和Signext的方式一样。
SW指令数据通路
SW指令数据通路

5. Beq指令数据通路

If (R[rs] – R[rt] =0) then PC ← \leftarrow (PC + 4) + Signext(imm16)<<2
else PC ← \leftarrow PC + 4
需要的部件(除了取值自增之外):寄存器堆,ALU,加法器Adder,符号扩展Signext,移位器
beq指令根据rs寄存器和rt寄存器的值是否相等来决定是否跳转,跳转到以下一条指令为基址的一定偏移处。你是否还记得这里为什么需要将偏移值进行符号扩展之后再左移两位?(●’◡’●)
beq指令数据通路
beq指令数据通路

6. 数据通路合并

根据不同类型的数据通路的表格分析有哪些部件的输入来源会产生冲突,解决冲突的方法就是添加多选一电路,这样即可有效地利用相同的部件。
数据通路合并
数据通路合并

五、单周期控制器设计

不是很重要,看看就行,可以记一下有几个Mux,每个Mux的输入来源。

六、单周期性能分析

单周期性能分析
不同指令的执行时间长短不同,对于时钟周期固定的CPU来说,执行周期=最长指令的执行周期,对于时钟周期可变的CPU来说,执行周期=各类型指令执行周期的加权平均。
指令执行时间计算

CPU执行时间

CPU执行时间
比较简单,不详细介绍

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
组成原理实验6是单周期MIPS(Microprocessor without Interlocked Pipeline Stages)的实验。MIPS是一种经典的RISC(Reduced Instruction Set Computer)架构,其特点是指令集简洁,执行效率高。而单周期MIPS是指每条指令的执行周期都是相同的,通常包括取指、译码、执行、访存和写回这五个阶段。 在实验中,我们需要完成一个单周期MIPS的电路设计。首先,需要实现指令存储器和数据存储器,分别用于存储程序指令和数据。指令存储器需要能够正确读取指令,并将其传递给下一个阶段。 其次,需要设计取指阶段的电路。在该阶段,需要将指令从指令存储器中读取出来,并将其送往译码阶段。在这个过程中,需要实现指令的解码和分析。 然后,需要设计译码阶段的电路。该阶段的主要任务是将指令解码成对应的操作码和操作数,并将其传递给执行阶段。同时,还需要进行寄存器的读取和写回操作。 接下来是执行阶段的电路设计。在该阶段,根据指令的操作码和操作数,执行相应的操作,如加法、减法、逻辑运算等。同时,还需要进行访存操作,将数据从数据存储器中读取或写入。 最后是写回阶段的电路设计。在该阶段,将执行阶段得到的结果写回到寄存器中,以便下一条指令的执行。 总结来说,实验6的目标就是设计一个能够实现MIPS指令集的单周期MIPS电路,并确保其能够正确的执行指令。这对我们了解计算机的工作原理、熟悉RISC架构以及学习电路设计都有着很大的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顾宁安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值