指令集架构
引入
词汇
| English | 释义 | 拼音 |
|---|---|---|
| computer architecture | 计算机体系结构 | jì suàn jī tǐ xì jié gòu |
| instruction set architecture | 指令集架构 | zhǐ lìng jí jià gòu |
| RISC/rɪsk/ | 精简指令集 | jīng jiǎn zhǐ lìng jí |
| load-store | 存取体系 | cún qǔ tǐ xì |
| byte-addressable | 字节寻址 | zì jié xún zhǐ |
契约
- 计算机体系结构 computer architecture 是程序之下的机器。指令集架构 instruction set architecture(ISA)是它与软件的契约:编译器可依赖的一切,对导线只字不提。同一 ISA 的两台机器跑同一套二进制。
- 教学 ISA 精神上是 RISC 精简指令集:固定 32 位指令、load-store 存取体系(只有
lw/sw碰内存)、16 个寄存器且 R0 恒为零。
例子
R 型:opcode(4) | rd(4) | rs(4) | rt(4) | shift(4) | funct(8)——用 28 位,补零到 32。I 型:opcode(4) | rt(4) | rs(4) | immediate(16)。
{exercise:uni-cs0601-isa}
练习
对 ISA 最准确的描述是——
难度 1/5 · 今日首次完成可获 100 金币及少量额外奖励
它规定软件可依赖的一切,对实现只字不提。
编码与解码
- 编码
add R3, R1, R2(opcode 1):字段 $0001\,0011\,0001\,0010\,0000\,00000001$。解码 opcode 2、rt 4、rs 1、立即数 $127$:addi R4, R1, 127。 - 16 位补码立即数范围 $-32\,768$ 到 $32\,767$;
addi R2, R0, 40000编不下,要两条指令。

{exercise:uni-cs0601-encode}
练习
16 位有符号立即数能装下——
难度 1/5 · 今日首次完成可获 100 金币及少量额外奖励
范围是 −32768 到 32767;40000 要两条指令。
R0 的红利
- 字节寻址 byte-addressable 内存配 32 位字,
lw偏移是 4 的倍数——16 位偏移从基址寄存器可达 $2^{16}$ 字节 = 64 KiB。 addi R0, R0, 0是标准空操作;add R5, R0, R0一周期清零 R5;beq R1, R0, loop无需常量即可与零比较——专用零寄存器删掉了一整类传送指令。
{exercise:uni-cs0601-zero}
练习
R0 恒为零让程序可以——
难度 1/5 · 今日首次完成可获 100 金币及少量额外奖励
add R5, R0, R0 一周期清零 R5——无需传送指令。