跳转至

第3章 指令系统结构

指令系统结构(ISA)是软件与处理器共同遵守的契约。编译器按照它生成机器码,处理器按照它改变架构状态;只要契约不变,内部实现可以从简单单周期核心升级到复杂乱序核心。

ISA 需要规定什么

一个完整 ISA 至少要定义:

  • 指令集合、机器码编码与操作数位置;
  • 通用寄存器、程序计数器和其他软件可见状态;
  • 数据类型、字节序、对齐和地址空间;
  • 访存语义、原子操作及内存顺序;
  • 异常、特权级与系统控制接口。

ISA 不只是“指令名字清单”。如果没有异常与内存语义,操作系统和并发程序就无法可靠运行。

本章内容

直觉:ISA 像法律,微体系结构像执行机构

法律规定什么行为可被观察,执行机构可采用不同流程完成。两台处理器可以执行同一 RISC-V 程序,一台每次只发射一条指令,另一台每周期发射多条;只要最终架构状态和异常行为满足 ISA,它们都是正确实现。

本章自测

  1. 指令编码为何必须在操作码数量、寄存器数量和立即数范围之间取舍?
  2. load/store 结构怎样简化数据通路?代价是什么?
  3. 为什么“同一机器码在不同 ISA 下”可能表示完全不同的操作?