指令系统(Instruction Set Architecture, ISA)是计算机系统中硬件与软件之间的界面。它特定指的是 CPU 级的指令,如 Intel x86、ARM 或 RISC-V 架构的指令集。
设计目标与权衡
在设计指令系统时,需要在多个目标之间进行权衡,没有绝对的“最好”,只有最适合特定应用场景的设计。
- 指令长度尽可能短:减少存储空间占用。
- 字节的整数倍:有效利用存储空间,避免浪费。 重点
- 性能 vs. 可靠性:
- 高性能:追求更快的处理速度 and 更低的功耗(如 1.8nm 工艺),适合消费电子、服务器等。
- 高可靠性:追求在极端环境下的稳定性(如耐高温、低温、抗干扰),适合航天、军工等领域。例如,某些老旧工艺(如 14nm 以上)可能因其高可靠性而被选用。
应用背景的变化
- 通用计算机:传统上以 Intel x86 架构为主导。
- 嵌入式系统:随着物联网 and 移动设备的发展,基于 ARM 或 RISC-V 的 嵌入式处理器 日益普及。在嵌入式开发中,根据实际需求定制指令系统已成为可能。 重点
指令系统与 寻址技术 密切相关,共同决定了 CPU 如何访问数据。
指令集架构
寻址方式
基本寻址方式
数据寻址方式决定了如何根据指令中的形式地址 计算出有效地址 。
常见寻址方式
- 立即寻址 (Immediate Addressing):
- 操作数直接包含在指令中。
- 特点: 速度快,但通用性差。
- 直接寻址 (Direct Addressing):
- 指令中直接给出操作数的物理地址。
- 缺点: 与现代操作系统的动态装载需求不符。
- 寄存器寻址 (Register Addressing):
- 操作数存放在 CPU 内部的通用寄存器中。
- 优点: 速度极快。
- 间接寻址 (Indirect Addressing):
- 指令中给出的是存放操作数地址的地址(类似于指针的指针)。 重点
- 支持动态内存装载。
- 寄存器间接寻址:
- 寄存器中存放的是操作数的地址。
- 变址寻址:
- 常用于数组处理。
- 基址寻址:
- 用于操作系统存储管理。
- 相对寻址:
- 用于程序重定位和跳转。
- 页式寻址:
- 通过页号 and 页内地址拼接得到有效地址。
寻址方式位
指令中通常设置专门的标记位来区分寻址方式(如 0 表示直接寻址,1 表示间接寻址)。这些技术共同构成了 寻址技术 的核心,并直接影响 指令地址码 的设计。
寻址方式对比
指向原始笔记的链接寻址方式对比
在硬件实现上,变址寻址、基址寻址 和 相对寻址 虽然在逻辑描述和应用场景上有所不同,但 底层均使用相同的地址映射硬件装置(加法器)来完成地址变换。 重点
指向原始笔记的链接
- 变址寻址: 面向普通用户,常用于数组处理。
- 基址寻址: 面向操作系统,用于逻辑地址到物理地址的映射、存储管理和动态装载。
相对寻址: 使用 替代专用寄存器,常用于程序重定位。