Skip to content

计算机组成

杂项知识

Amdahl 定律
思想

摩尔定律、抽象、普遍情况、并行、流水线、预测、存储器层次、冗余

指令速度计算

算术

乘法器
除法器
浮点数
浮点加法器

汇编

RISC-V 指令及格式
寄存器标识

除了 x0-x31,还会用其他标识标记寄存器的用途,常见的有:

  • a0-a7x10-x17):函数参数
  • rax1):返回地址
  • spx2):栈指针
  • t0-t6x5-x11):临时寄存器,被调不保存
  • s0-s11x8-x18):保存寄存器,如果使用了则需要保存

Apr.16

回顾单周期

R 型数据通路

  • ALU 前的 MUX:ALUSource,
  • Mem 后的 MUX:控制是两位,除了内存和 ALU 结果还有可能为 PC+4(JAL 指令)
  • Read 置 0 的原因:与 Cache 有关,会造成中断
  • Write 置 0 的原因:不破坏数据

I 载入

rs + rd + imm

S 存储

rs + rs + imm,数据 + 地址 + 偏移量

SB 跳转

用 ALU 中的 Zero 判断是否跳转

注意 shift 1

J 无条件跳转

x1 = pc + 4

用单独的 ALU 计算 PC + imm << 1 的值。

重点

不同指令控制位的取值(ALUSrb、MemToReg 等)。

ALUOpcode 由 Opcode(Control)解出和几个 Func 字段共同决定(ALUCtrl)。

考试

OPcode、Func、寄存器编号之类的不需要记,会给

流水线

五级:Instruction Fetch、Instruction Decode & REGister read、EXecute、MEMory、Write Back

此时 CPI 是平均值,不断趋近于 1。

冒险 Hazard

Structure Hazard、Data Hazard、Control Hazard

  • Data Hazard
    • buble
    • Forwarding:无法解决 Load-Use 问题,可以通过编译指令调度进行。
  • Control Hazard
    • Stall:分支在 IF 阶段无法知道结果,肯定需要等待
    • Branch Prediction

流水线寄存器

从右往左的数据流会造成冒险。需要保存数据。

  • MEM 和 WB 会往回走,造成控制冒险和数据冒险。
  • 注意到 WB 写寄存器同时还需要地址和数据,这些数据也需要寄存,为流水线寄存器。
  • 注意 WB 的地址和数据应该随着该指令的执行被逐个阶段向下传递,最后确定 WB 时又传回来。

每两个阶段之间的寄存器用两个阶段命名,为:IF/ID、ID/EX、EX/MEM、MEM/WB。

知道这些阶段需要存什么。

知道 Single-clock-cycle