1. 指令集系统结构的分类
根本区别:处理器内部数据的存储结构不同
存储结构:
- 堆栈:操作数隐含的位于栈顶
- 累加器:一个隐含操作数就是累加器
- 通用寄存器:明确地指定操作数,不是寄存器就是存储器地址
- register-memory系统结构:一般指令都可以访存
- register-register/load-store系统结构:只有load、store指令能访存
图示:
数据流动示意图:
运算例子示意图:
通用寄存器ISA运算类指令的两个特性:
- ALU指令中包括两个或三个操作数
- ALU指令中包括0到3个存储器操作数
通用寄存器计算机优缺点:
2. 存储器寻址
2.1 寻址方式
2.2 小结
- 一般ISA支持的基本寻址方式:立即数寻址、位移量寻址、寄存器间接寻址
- 位移量为13-16位、立即数为16位
- 立即数寻址通常用于:运算类指令、置常数到寄存器指令
3. MIPS系统结构
特点:
- 一种简单64位load-store系统结构
- 固定长度指令编码
寄存器:
- 32个64位通用寄存器(GPR),R0……R31,R0永远是0
- 32个浮点寄存器(FPR),F0……F31,可作为32位单精度寄存器使用,也可作为64位双精度寄存器使用
寻址方式:
- 16位立即数寻址
- 16位基址寻址,当位移量为0时是寄存器间接寻址、当R0作为基址寄存器时是16位绝对寻址
指令格式:
- 指令长度:32位,6位为基本操作码
- 两种存储器寻址方式:编码到操作码中
操作:
- 载入和存储
- 所有通用寄存器和浮点数寄存器都可以被载入或存储,除了R0
- 上述图示说明:
- ⬅的下标表示传送n位
- Mem表示主存,按字节编址
- 下标标识字段中特定的位,从以0开始的最高位开始标注
- 上标表示对字段的复制
- ##表示字段的连接
- ALU操作
- 都是寄存器-寄存器指令
- 包括算术和逻辑操作:加、减、与、或、异或、移位
- 分支和跳转
- 浮点操作
- 浮点指令指出操作数是单精度(SP)还是双精度(DP)
- MOV.S和MOV.D分别复制单精度和双精度的寄存器
- MFC1、MTC1、DMFC1、DMTC1在一个单精度或双精度浮点数寄存器和一个定点寄存器之间传送数据
4. 一些误区
- 专门设计支持高级语言结构的“高级”指令功能
- 存在一种典型的程序
- 可以不考虑编译器而改进指令系统以缩减代码大小
- 有缺陷的系统结构不可能是一种成功的系统结构
- 可以设计一个没有缺陷的系统结构