D
← 返回首页

Chapter 01 · live execution chamber

从一行代码到电信号

int c = a + b; — 这一行到底发生了什么? 这一章不只解释它,而是把这条指令放进一个可暂停的 CPU 观察舱里。

LIVE SINGLE-CYCLE TRACE
source / asm / machine

hover 任一行同步高亮。橙色边线 = PC 当前指向的机器指令。

datapath under microscope
data signal control signal active unit
TRACE FRAME INSPECTOR

工程细节

一行 C ≠ 一条指令

上面是理想情况——ab 已经在寄存器里。真实场景里,int c = a + b; 可能展开为:

lw   a1, -16(s0)   # 从栈读 a
lw   a2, -20(s0)   # 从栈读 b
add  a3, a1, a2    # 计算
sw   a3, -24(s0)   # 写回栈上的 c

一行 C → 4 条指令。这就是为什么 代码行数 ≠ 指令数 ≠ 周期数

为什么 x0 永远是 0

RISC-V 把 x0 硬连为 0(写 x0 会被丢弃),目的是让"清零""无条件跳转" "比较立即数"这类操作不必专门设计新指令。 例如 li a1, 3 实际就是 addi a1, x0, 3

单周期 vs 真实 CPU

本章用单周期模型——每条指令固定 5 拍完成。这是教学起点, 但真实 CPU 用流水线让多条指令并行(Ch03),用乱序执行打破程序顺序(Ch04)。 单周期 CPI = 1 是流水线的上限,流水线 IPC > 1 是乱序的目标。