623 字
3 分钟
指令系统
ISA(Instruction System Architecture)
ISA定义了一台计算机可以执行的所有指令的集合,每条指令规定了计算机执行什么操作,所处理的操作数存放的地址空间以及操作数类型。ISA规定的内容包括数据类型及格式,指令格式,寻址方式和可访问地址空间的大小,程序可访问的寄存器个数、位数和编号,控制寄存器的定义,I/O空间的编制方式,中断结构,机器工作状态的定义和切换,输入输出结构和数据传送方式,存储保护方式等。因此,可以看出,指令集体系结构是指软件能够感知到的部分,也称软件可见部分。
CISC
一条指令完成一个复杂的基本功能,指令能够蕴含隐式的Load、Store操作
RISC
指令之间是高度正交的,运算指令的操作数来自寄存器或者是立刻数,对内存中的数据做运算要进行显式的Load、Store操作
比较
| CISC | RISC | |
|---|---|---|
| 指令系统 | 复杂、庞大 | 简单 |
| 指令数目 | >200 | <100 |
| 指令字长 | 不固定 | 定长 |
| 可访存指令 | 不加限制 | 只有Load/Store指令 |
| 各种指令执行时间 | 相差较大 | 绝大多数在一个周期内完成 |
| 各种指令使用频度 | 相差很大 | 都比较常用 |
| 通用寄存器数量 | 较少 | 多 |
| 目标代码 | 难以用优化编译生成高效的目标代码程序 | 采用优化的编译程序,生成代码较为高效 |
| 控制方式 | 绝大多数为微程序控制 | 绝大多数为组合逻辑控制 |
| 指令流水线 | 可以通过一定方式实现 | 必须实现 |
栈式指令集与寄存器式指令集
- 寄存器指令集
- 物理CPU指令集
- 栈式指令集
- jvm、wasm…,常用于语言级虚拟机设计
- 基于栈的指令集主要的优点就是可移植,寄存器由硬件直接提供。程序直接依赖这些硬件寄存器则不可避免地要受到硬件的约束
- 操作数可以隐含在操作数栈中,指令可以做的很小,操作数也很少
- 执行效率没有寄存器式高
其他
- CSAPP第3章
- isa可见的寄存器数量等于真正的寄存器数量吗
- isa可见的寄存器越多越好吗
- isa模型机
