指令系统

指令集体系结构 (ISA) 定义了{软件}和{硬件}之间的接口

指令寻址

指令寻址分为两大方法

  • {顺序寻址 (PC 自动加一获取下一个地址)}
  • {跳跃寻址 (转移指令转移到不同的指令地址)}

CPU 始终要根据PC中的内容, 再去主存中获取指令

数据寻址

寻址方式有效地址访存次数
隐含寻址程序指定0
立即寻址A 即是操作数0
直接寻址EA = A1
一次间接寻址EA = (A)2
寄存器寻址EA = Ri0
寄存器间接寻址EA = (Ri)1
寄存器间接一次寻址(PC) + 1 → PC1
相对寻址EA = (PC) + A1
基址寻址EA = (BR) + A1
变址寻址EA = (IX) + A1

Q: 隐含寻址的定义
A: 某个操作数不是显式表示, 而是隐含约定在其他位置

Q: 立即 (数) 寻址定义
A: 指令字中的地址字段指出的不是操作数的地址, 而是操作数本身, 也称立即数

Q: 立即寻址中的操作数使用哪种机器数表示?
A: 采用补码表示

Q: 直接寻址, 画图
A:

Q: 间接寻址, 画图
A:

Q: 寄存器寻址, 画图
A:

Q: 寄存器间接寻址, 画图
A:

Q: 相对寻址, 画图
A:

Q: 相对寻址的形式地址用哪种机器数表示? 可以有正负吗?
A: 用补码表示, 可正可负

Q: 基址寻址, 画图
分为专用寄存器与通用寄存器
A:

Q: 变址寻址, 画图
A:

Q: 堆栈寻址
软堆栈与硬堆栈的区别
A: 硬堆栈: 在寄存器组中划出一段区域来做堆栈
软堆栈: 在主存中划出一段区域来做堆栈

Q: 三大偏移寻址是?
A: 相对寻址, 基址寻址, 变址寻址

相对寻址与基址寻址, 变址寻址的区别
相对寻址以{PC}的值为初始地址
基址寻址, 变址寻址都以{寄存器}的值为初始地址

Q: 基址寻址与变址寻址的区别 (面向对象)
A: 基址寻址面向系统, 主要用于为多道程序或数据分配存储空间,
变址寻址面向用户, 主要用于处理数组问题,

基址寻址与变址寻址的可变性
基址寄存器值{c1: 不可变}, 而指令字中的 A 是{c1: 可变}
变址寄存器值{c2: 可变}, 而指令字中的 A 是{c2: 不可变}

CISC 和 RISC 的基本概念

CISC 与 RISC 控制器实现
CISC 控制器大多数采用{c1: 微程序}控制
RISC 控制器大多数采用{c1: 硬布线}控制

Q: CISC 与 RISC 谁的通用寄存器数量比较多?
A: RISC

Q: 为什么 RISC 的通用寄存器数量比 CISC 多?
A: 指令读取寄存器比较多, 主存比较少, 自然需要更多的寄存器

Q: RISC访存指令有哪些?
A: 只有 LOAD/STORE (取数/存数) 指令访存

Q: RISC 一定使用流水线技术吗?
A: 是的

Q: 为什么 RISC 一定使用流水线技术?
A: 精简指令集的好处是大部分指令在一个时钟周期内完成
能够在一个时钟周期内完成, 使用流水线技术, 再好不过