当前位置: 首页 > news >正文

计算机组成原理第四章 指令系统

课程脉络前置说明

  1. 第二章:运算器,加减乘除、移位运算硬件实现
  2. 第三章:存储器,数据存储、CPU 访存原理
  3. 第四章:指令系统(本章)—— 控制器如何解析指令、指令格式分类、扩展操作码、指令寻址
  4. 第五章:控制器硬件工作原理

程序运行逻辑:高级语言→编译→机器指令 + 数据存入主存→CPU 逐条执行机器指令;控制器核心功能:解析指令、调度计算机各部件协同工作。

一、指令基础概念
1.指令、指令系统(指令集)

  1. 机器指令:指示计算机执行操作的命令,程序运行最小功能单元。
  2. 指令系统 / 指令集:一台计算机全部指令的集合。
  3. 架构差异:不同 CPU 架构指令集不兼容
    ○x86(英特尔 PC)、ARM(手机、新款苹果电脑);PC 软件无法直接在手机运行,根源是指令集不同。
  4. 指令逻辑组成:操作码 OP + 地址码 A
    ○操作码 OP:指明执行什么操作(乘法、停机、取数等)
    ○地址码 A:指明操作的数据存在哪个存储单元
    ○特例:停机指令仅需操作码,无地址码

2. 符号约定
(A):地址 A 对应的存储单元内的数据,类似 C 语言指针取值。

二、按地址码数量分类指令(0~4 地址指令)
(一)0 地址指令(仅 OP,无地址码)
两种使用场景

  1. 无操作数指令:停机、关中断、空操作(NOP),不需要数据参与运算。
  2. 堆栈型计算机运算指令:操作数隐含存放在栈顶、次栈顶
    ○运算逻辑:扫描后缀表达式,读到数字压栈;读到 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. 读 A1;3. 读 A2;4. 结果写回 A1

(四)3 地址指令(OP A1 A2 A3)
运算规则:(A1) OP (A2) → A3
优势:单独地址存放结果,不会覆盖原始操作数;
访存:取指令、读 A1、读 A2、写 A3,共 4 次访存。

(五)4 地址指令(OP A1 A2 A3 A4)
1.运算逻辑:同 3 地址:(A1) OP (A2) → A3
2.新增 A4 功能:指明下一条指令地址,执行完本条指令直接将 PC 修改为 A4,实现跳转,替代 PC 自增。
补充:地址码位数影响
指令总长度固定时,地址码数量越多,单个地址码占用比特越少,寻址范围2N越小,寻址能力变弱。

三、按指令总长度(指令字长)分类
1.三大字长区分(易混对比)

  1. 机器字长:CPU 固定属性,通用寄存器位数,CPU 单次处理数据宽度
  2. 存储字长:主存固定属性,一个存储单元二进制位数,等于 MDR 位数
  3. 指令字长:单条指令总比特长度,同一台机器可长可短(可变)

2. 指令长度命名
以机器字长为基准划分:半字长指令、单字长指令、双字长指令

例:机器字长 16bit,存储字长 16bit;双字长指令 32bit,取指需要2 次访存,取指速度更慢。

3. 两种指令字结构

  1. 定长指令字结构:全部指令长度完全相等;取指逻辑简单,硬件易实现。
  2. 变长指令字结构:不同指令长度不同;硬件译码复杂,但空间利用率高。

四、按操作码长度分类
1.定长操作码

  1. 所有指令 OP 比特数固定;N 位 OP 最多支持2N条指令。
  2. 优点:控制器译码电路简单;缺点:指令拓展灵活性差。

2. 可变长操作码
操作码位数随指令地址数变化;典型应用:扩展操作码指令格式。

•特点:定长指令字 + 可变长度 OP;在有限指令总长度下,容纳 0/1/2/3 地址多种指令。

五、扩展操作码(重难点,计算题核心)
1.核心定义
指令总比特固定,不额外增加指令长度;短地址指令让出地址位扩充操作码,实现多类型指令共存。

2. 设计两大硬性规则(必背)

  1. 短操作码不能是长操作码的前缀(防止译码歧义,类比哈夫曼前缀编码);
  2. 所有指令操作码不能重复。

3. 设计优化技巧
使用频率高的指令分配更短操作码,缩短译码时间,提升 CPU 运行效率。

4. 基础计算逻辑
设每个地址码占 N 比特,上层预留 M 个扩展状态,则下一层最多可扩展 M×2N条指令。
标准举例:指令字长 16 位,每个地址 4bit

  1. 3 地址指令:3 个地址占 12bit,OP 仅 4bit,共24=16种;预留1111作为扩展位,最多 15 条 3 地址指令。
  2. 2 地址指令:前 4 位固定1111,剩余 4bit 做 OP;共 16 种状态,预留全 1 状态继续扩展。
  3. 1 地址指令:前 8 位固定全 1,剩余 4bit 做 OP;预留全 1 状态。
  4. 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 先读取指令首字,解析操作码判断本条指令总字节 N,PC += N

2. 跳跃寻址(转移指令触发)
遇到程序控制类指令(JMP、CALL 等),直接手动修改 PC 的值,跳过中间指令,改变执行流。

示例:执行 JMP 7,取指令后 PC 原本自增为 4,执行跳转指令后强制 PC=7,下一条执行地址 7 的指令。

关键易错总结
1.PC 存放下一条指令地址,不是当前正在执行的指令;
2.“PC+1” 是简写,代表加上一条指令的总长度,数值不一定是 1;
3.顺序寻址靠硬件自动自增 PC;跳跃寻址靠指令主动改写 PC。

八、全章节易混考点汇总
1.单地址指令 ≠ 单字长指令
○单地址:指令地址码数量;单字长:指令占用机器字个数,两个维度互不绑定。
2.机器字长固定,指令字长可变;
3.扩展操作码核心限制:短码不能为长码前缀;
4.访存次数记忆:0 地址堆栈运算无额外访存;单地址一元运算 3 次访存、二元 ACC 运算 2 次访存;二地址 4 次访存;
5.地址码位数 N,寻址范围 =2N;指令总长固定时,地址越多,寻址范围越小。
6.架构不兼容根源:x86 与 ARM 指令集完全不同。

http://www.jsqmd.com/news/1359302/

相关文章:

  • SpaceX零现金“接管”Cursor:AI编程工具如何重塑硬核工程开发范式
  • 三步激活指南:KMS智能工具实现Windows与Office永久激活的完整流程
  • 上位机开发必备:UTF-8编码原理与实战指南
  • 智能电网中分布式能源系统的多目标优化控制策略
  • 太原瓷砖胶口碑排名
  • 2026年8月上海青浦区离婚律所哪家强?5家长三角一体化区域家事律所推荐 - 品牌深度评测
  • 5分钟打造专业影院体验:MPV懒人包终极配置指南
  • 双路磁场定向控制电机驱动板终极指南:240W高性能开源解决方案
  • 送给爱健身的男朋友什么七夕礼物好?这份硬核健康礼清单请收好 - 品牌品鉴馆
  • 如何永久保存微信聊天记录?3大核心功能实现个人数据备份与智能分析
  • AMD AI开发实战指南:从ROCm环境搭建到PyTorch部署
  • Spring Boot Starter机制解析与自定义开发实战
  • 本地做led显示屏工程的靠谱公司避坑测评,价格透明口碑实力之选 - myqiye
  • 原来重庆正规校园广播销售门道不少,哪家才好呢?
  • Qwen-Image-3.0 高分辨率图像生成API实战:低成本接入与工程化指南
  • 8-PSK调制系统实现与误码性能分析
  • 告别DLL错误:Visual C++运行库全集一键安装指南
  • 5分钟快速解决Windows老游戏兼容性问题:DDrawCompat完整使用指南
  • 小学生学C++编程语法知识(什么情况下会自动生成默认构造函数)
  • 2026年广佛办公家具回收服务商**:实体仓储、透明报价与全流程托管 - 品牌品鉴馆
  • 2026年8月上海奉贤区离婚律所哪家专业?6家新城家事法律服务团队解析 - 品牌深度评测
  • PlayCover终极指南:如何在M1/M2 Mac上免费运行iOS应用和游戏
  • 2026铝塑共挤窗服务厂商口碑推荐强势出炉,实力测评不踩坑 - myqiye
  • SunnyUI:用100+控件库彻底改变你的C WinForm开发体验
  • 基于用户行为数据的风格偏好建模与个性化推荐系统实战
  • 模块化本地AI集成:ChatBox与Ollama的3种连接策略深度解析
  • 灯哥开源FOC控制器:如何快速上手双路无刷电机驱动方案
  • BearJia Admin V3.0:微前端与RBAC权限系统重构实战
  • 专业验光+透明定价1.7折:潘家园眼镜去哪里配比较便宜不踩坑?答案在这里 - 甄选测评馆
  • HTML Button参数详解与前端开发实践指南