623 字
3 分钟
指令系统

ISA(Instruction System Architecture)#

ISA定义了一台计算机可以执行的所有指令的集合,每条指令规定了计算机执行什么操作,所处理的操作数存放的地址空间以及操作数类型。ISA规定的内容包括数据类型及格式,指令格式,寻址方式和可访问地址空间的大小,程序可访问的寄存器个数、位数和编号,控制寄存器的定义,I/O空间的编制方式,中断结构,机器工作状态的定义和切换,输入输出结构和数据传送方式,存储保护方式等。因此,可以看出,指令集体系结构是指软件能够感知到的部分,也称软件可见部分。

CISC#

一条指令完成一个复杂的基本功能,指令能够蕴含隐式的Load、Store操作

RISC#

指令之间是高度正交的,运算指令的操作数来自寄存器或者是立刻数,对内存中的数据做运算要进行显式的Load、Store操作

比较#

CISCRISC
指令系统复杂、庞大简单
指令数目>200<100
指令字长不固定定长
可访存指令不加限制只有Load/Store指令
各种指令执行时间相差较大绝大多数在一个周期内完成
各种指令使用频度相差很大都比较常用
通用寄存器数量较少
目标代码难以用优化编译生成高效的目标代码程序采用优化的编译程序,生成代码较为高效
控制方式绝大多数为微程序控制绝大多数为组合逻辑控制
指令流水线可以通过一定方式实现必须实现

栈式指令集与寄存器式指令集#

  • 寄存器指令集
    • 物理CPU指令集
  • 栈式指令集
    • jvm、wasm…,常用于语言级虚拟机设计
    • 基于栈的指令集主要的优点就是可移植,寄存器由硬件直接提供。程序直接依赖这些硬件寄存器则不可避免地要受到硬件的约束
    • 操作数可以隐含在操作数栈中,指令可以做的很小,操作数也很少
    • 执行效率没有寄存器式高

其他#

  • CSAPP第3章
  • isa可见的寄存器数量等于真正的寄存器数量吗
  • isa可见的寄存器越多越好吗
  • isa模型机