第3章 指令系统结构¶
指令系统结构(ISA)是软件与处理器共同遵守的契约。编译器按照它生成机器码,处理器按照它改变架构状态;只要契约不变,内部实现可以从简单单周期核心升级到复杂乱序核心。
ISA 需要规定什么¶
一个完整 ISA 至少要定义:
- 指令集合、机器码编码与操作数位置;
- 通用寄存器、程序计数器和其他软件可见状态;
- 数据类型、字节序、对齐和地址空间;
- 访存语义、原子操作及内存顺序;
- 异常、特权级与系统控制接口。
ISA 不只是“指令名字清单”。如果没有异常与内存语义,操作系统和并发程序就无法可靠运行。
本章内容¶
- 指令格式与寻址方式:看机器码怎样在有限位宽中编码操作、寄存器和立即数。
- 最小汇编程序与 RISC/CISC:手工追踪一段
load/add/store,再理解两种设计路线的历史与融合。
直觉:ISA 像法律,微体系结构像执行机构¶
法律规定什么行为可被观察,执行机构可采用不同流程完成。两台处理器可以执行同一 RISC-V 程序,一台每次只发射一条指令,另一台每周期发射多条;只要最终架构状态和异常行为满足 ISA,它们都是正确实现。
本章自测¶
- 指令编码为何必须在操作码数量、寄存器数量和立即数范围之间取舍?
load/store结构怎样简化数据通路?代价是什么?- 为什么“同一机器码在不同 ISA 下”可能表示完全不同的操作?