指令集结构设计
1 指令集结构的分类
1.1 指令系统的设计依据
应用系统的需求
对操作系统编译的支持
现有指令系统的测量统计数据
计算机的定量设计原则
1.2 指令系统的设计内容
数据在CPU中存放位置
编码方法
操作种类
操作数的类型和长度
寻址方式
1.3 指令集结构的分类
- 在CPU中操作数的存储方法
- 堆栈型(stack architecture)
操作数隐含在栈顶, 如alp3000/70 - 累加器型(accumulator architecture)
一个操作数隐含在累加器中, 如PDP-8 - 通用寄存器型(GPR architecture)
操作数存放在寄存器中
- 指令中显式表示的操作数个数
根据ALU指令中访存操作数的个数
Register-Register (0个) ------ Load/Store
Register-Memory (1个)
Memory-Memory (2~3个)
[例] C=A+B
R-R型 | R-M型 | M-M型 |
---|---|---|
Load R1, A Load R2, B Add R3, R1, R2 Store R3, C |
Load R1, A Add R1, B Store R1, C |
Add C, A, B |
类型 | 优点 | 缺点 |
---|---|---|
R-R (0,3) |
简单,定长指令编码。简单代码生成模式。指令执行时间的时钟周期相近 | 指令数多,一些编码位浪费 |
R-M (1,2) |
数据不必先取再访问。指令格式易于编码,代码密码度较高 | 操作数不对等,一个操作数会被破坏。一条指令中的Reg数受限。指令执行时钟周期数不同 |
M-M (3,3) |
代码密码度最高。不必浪费reg存放临时变量 | 指令长度变化大,指令执行所需时钟周期数变化大,存储器成为系统性能瓶颈 |
- 操作数的寻址方式
- 指令集所提供的操作类型
- 操作数的类型和大小
2 寻址技术
测量统计数据
立即值寻址方式和偏移寻址方式的使用频率十分高
至少提供3种存储器寻址模式
将偏移量字段的大小设置为12~16位
立即数的大小设置为8~16位
3 指令集结构的功能设计
指令集中操作的分类
- 基本指令:算术逻辑运算类、数据传输类、控制类
- 专用指令:如浮点指令(科学计算),十进制指令(商用),字符串指令(事务),图象指令
- 特权指令:如虚存管理、系统调用
3.1 复杂指令集计算机(CISC)
强化指令功能,实现软件功能向硬件功能转移。
- 面向目标程序增强指令功能
提高运算型指令功能(变量,阶,表首)
提高传送指令功能(矩阵,字符串,向量,十进制)
增加程序控制指令功能(循环控制指令) - 面向高级语言和编译程序改进指令系统
·增加对高级语言和编译系统支持的指令功能(规整性)
·高级语言计算机指令系统
面向高级语言(HL)的机器
间接执行型高级语言机器(编译执行)
直接执行型高级语言机器
·面向操作系统的优化实现改进指令系统
3.2 精简指令集计算机(RISC)
尽可能地降低指令集结构的复杂性,以达到简化实现,提高性能的目的。
主要特点:(Carnegie Mellon)
1.大多数指令在单时钟周期内完成
2.采用Load/Store结构
3.硬联逻辑实现
4.减少指令和寻址方式的种类
5.固定指令格式
6.注重译码的优化
关键技术:
- 重叠寄存器窗口技术
节省了保存现场和恢复现场等辅助时间
方法 :
·设置的大量的寄存器,分成多个组和全局区;
·每个组中分高、本地、低三个区;
·相邻组的高、低区重叠,加速参数与结果的传递。
统计结果:
嵌套调用不超过6层,每层24个寄存器(每个区8个寄存器)可基本满足要求,不满足概率在1%左右(使用主存缓冲) - 延时转移技术
- 指令取消技术
- 指令流调整技术
- 硬件为主,固件为辅
RISC优势:
省去类似功能指令的选择
省去是否生成访存指令的选择工作
为优化编译器调整指令顺序提供方便
RISC劣势:
寄存器分配算法
数据和控制相关性分析
要设计复杂的子程序库
4 操作数的类型、表示和大小
数据表示: 是指计算机硬件能够直接识别、指令系统可以直接使用的那些数据类型。(硬件实现)
数据结构: 是研究面向应用、面向软件系统所处理的各种数据类型.研究这些数据类型的逻辑结构和物理结构之间的关系及相应的算法