计算机组成原理第四章 指令系统 课程脉络前置说明第二章运算器加减乘除、移位运算硬件实现第三章存储器数据存储、CPU 访存原理第四章指令系统本章—— 控制器如何解析指令、指令格式分类、扩展操作码、指令寻址第五章控制器硬件工作原理程序运行逻辑高级语言→编译→机器指令 数据存入主存→CPU 逐条执行机器指令控制器核心功能解析指令、调度计算机各部件协同工作。一、指令基础概念1.指令、指令系统指令集机器指令指示计算机执行操作的命令程序运行最小功能单元。指令系统 / 指令集一台计算机全部指令的集合。架构差异不同 CPU 架构指令集不兼容x86英特尔 PC、ARM手机、新款苹果电脑PC 软件无法直接在手机运行根源是指令集不同。指令逻辑组成操作码 OP 地址码 A操作码 OP指明执行什么操作乘法、停机、取数等地址码 A指明操作的数据存在哪个存储单元特例停机指令仅需操作码无地址码2. 符号约定(A)地址 A 对应的存储单元内的数据类似 C 语言指针取值。二、按地址码数量分类指令0~4 地址指令一0 地址指令仅 OP无地址码两种使用场景无操作数指令停机、关中断、空操作NOP不需要数据参与运算。堆栈型计算机运算指令操作数隐含存放在栈顶、次栈顶运算逻辑扫描后缀表达式读到数字压栈读到 0 地址运算指令弹出栈顶两数运算结果压回栈顶。特点指令不显式写出操作数地址。二1 地址指令OP A1单地址指令两种场景场景 1一元运算仅 1 个操作数求反、自增、求补执行流程3 次访存1.访存取本条指令2. 访存读出 (A1)3. 运算后写回 A1运算公式OP (A1) → A1场景 2二元运算一个操作数隐含在累加器 ACC高频考点运算公式(ACC) OP (A1) → ACC执行流程仅 2 次访存1.访存取指令2. 访存读取 (A1)结果存入 ACC无需写内存。三2 地址指令OP A1 A2适用加减乘除等二元运算两个操作数分别存于 A1、A2运算规则(A1) OP (A2) → A1结果覆盖 A1 原值访存次数4 次1.取指令2. 读 A13. 读 A24. 结果写回 A1四3 地址指令OP A1 A2 A3运算规则(A1) OP (A2) → A3优势单独地址存放结果不会覆盖原始操作数访存取指令、读 A1、读 A2、写 A3共 4 次访存。五4 地址指令OP A1 A2 A3 A41.运算逻辑同 3 地址(A1) OP (A2) → A32.新增 A4 功能指明下一条指令地址执行完本条指令直接将 PC 修改为 A4实现跳转替代 PC 自增。补充地址码位数影响指令总长度固定时地址码数量越多单个地址码占用比特越少寻址范围2N越小寻址能力变弱。三、按指令总长度指令字长分类1.三大字长区分易混对比机器字长CPU 固定属性通用寄存器位数CPU 单次处理数据宽度存储字长主存固定属性一个存储单元二进制位数等于 MDR 位数指令字长单条指令总比特长度同一台机器可长可短可变2. 指令长度命名以机器字长为基准划分半字长指令、单字长指令、双字长指令例机器字长 16bit存储字长 16bit双字长指令 32bit取指需要2 次访存取指速度更慢。3. 两种指令字结构定长指令字结构全部指令长度完全相等取指逻辑简单硬件易实现。变长指令字结构不同指令长度不同硬件译码复杂但空间利用率高。四、按操作码长度分类1.定长操作码所有指令 OP 比特数固定N 位 OP 最多支持2N条指令。优点控制器译码电路简单缺点指令拓展灵活性差。2. 可变长操作码操作码位数随指令地址数变化典型应用扩展操作码指令格式。•特点定长指令字 可变长度 OP在有限指令总长度下容纳 0/1/2/3 地址多种指令。五、扩展操作码重难点计算题核心1.核心定义指令总比特固定不额外增加指令长度短地址指令让出地址位扩充操作码实现多类型指令共存。2. 设计两大硬性规则必背短操作码不能是长操作码的前缀防止译码歧义类比哈夫曼前缀编码所有指令操作码不能重复。3. 设计优化技巧使用频率高的指令分配更短操作码缩短译码时间提升 CPU 运行效率。4. 基础计算逻辑设每个地址码占 N 比特上层预留 M 个扩展状态则下一层最多可扩展 M×2N条指令。标准举例指令字长 16 位每个地址 4bit3 地址指令3 个地址占 12bitOP 仅 4bit共2416种预留1111作为扩展位最多 15 条 3 地址指令。2 地址指令前 4 位固定1111剩余 4bit 做 OP共 16 种状态预留全 1 状态继续扩展。1 地址指令前 8 位固定全 1剩余 4bit 做 OP预留全 1 状态。0 地址指令前 12 位全 1最后 4 位全部用作 OP无后续扩展最多 16 条。5. 优缺点✅优点固定指令长度下支持丰富多类型指令空间利用率高❌缺点操作码长度不统一译码电路复杂控制器硬件设计难度上升六、按指令操作类型分类四大类1.数据传送类主存 ↔ CPU 寄存器数据搬运例LOD 取数内存→寄存器、存数指令寄存器→内存。2.运算类•算术运算加减乘除•逻辑运算与、或、非、异或•移位运算算术移位、逻辑移位、循环移位第二章知识点。3.程序控制类转移指令改变程序执行顺序本质修改 PC程序计数器的值包含无条件跳转 JMP、条件转移、函数调用 / 返回、Trap 陷入指令。4.输入输出 (I/O) 类实现 CPU 寄存器与 IO 端口之间的数据交换外设交互专用。七、指令寻址确定下一条指令地址基础硬件PC 程序计数器PC 永远存放下一条待执行指令的主存地址每次取完一条指令PC 自动自增自增量不固定。两类寻址方式1.顺序寻址默认执行方式程序逐条连续执行取指后 PC 自动增加固定长度增量由两个条件决定1编址方式按字编址 / 按字节编址2指令字长定长 / 变长•场景 1按字编址、定长指令 存储字长PC 每次 1•场景 2按字节编址、定长指令占 2 字节PC 每次 2•场景 3按字节编址、变长指令CPU 先读取指令首字解析操作码判断本条指令总字节 NPC N2. 跳跃寻址转移指令触发遇到程序控制类指令JMP、CALL 等直接手动修改 PC 的值跳过中间指令改变执行流。示例执行 JMP 7取指令后 PC 原本自增为 4执行跳转指令后强制 PC7下一条执行地址 7 的指令。关键易错总结1.PC 存放下一条指令地址不是当前正在执行的指令2.“PC1” 是简写代表加上一条指令的总长度数值不一定是 13.顺序寻址靠硬件自动自增 PC跳跃寻址靠指令主动改写 PC。八、全章节易混考点汇总1.单地址指令 ≠ 单字长指令单地址指令地址码数量单字长指令占用机器字个数两个维度互不绑定。2.机器字长固定指令字长可变3.扩展操作码核心限制短码不能为长码前缀4.访存次数记忆0 地址堆栈运算无额外访存单地址一元运算 3 次访存、二元 ACC 运算 2 次访存二地址 4 次访存5.地址码位数 N寻址范围 2N指令总长固定时地址越多寻址范围越小。6.架构不兼容根源x86 与 ARM 指令集完全不同。