一个完整的指令集结构包括
Instuction Fetch | Instuction Decode | Operand Fetch | Excute | Result Store | Next Instruction | 我们必须解决的问题包括:
- 指令的编码方式(即如何编码)
- 操作数和操作结构的存放位置
- 存放位置
- 多少个现实操作数
- 存储器操作数如何定位
- 那些操作数可以或不可以放到存储器中
- 数据的类型和大小
- 支持哪些操作
- 下一条指令的地址
- jumps,conditions,branches
- fetch-decode-execute is implicit
- 有关ISA的若干问题
- 分类
 stack | 0 address | ADD | tos<---tos+next | Accumulator | 1 address | ADD A | acc<---acc+mem[A] | 1+x address | ADDX A | acc<---acc+mem[A+x] | Register-memory | 2 address | ADD A B | EA[A]<---EA[A] | 3 address | add A B C | EA[A]<---EA[B]+EA[C] | Load-Store | 3 address | add A B C | A<---B+C | load A B | A<---mem[B] |
- 通用寄存器型(R-M R-R)占主导地位
- 尾端问题
- little endian,big endian,在一个字内部的字节顺序问题,例如在地址xxx00指定了一个字(int),存储器中从xxx00连续存放ffff0000,有两种表示方式:
- 小端方式:xxx00位置是字的最低字节,数值为0000ffff。x86,dec vax,windows NT
- 大端方式:xxx00位置是字的最高字节,数值为ffff0000。IBM 360/370,Motorola,MIPS
- 对齐问题
- 对一个s字节的对象访问,地址为A,如果A mod s ==0,则是边界对齐
- 这是由于存储器本身的读写要求的。没有对其的对象可能会导致存储器两次读写。
- 基准测试结果:
- 偏移寻址、立即数寻址、寄存器寻址方式,其使用频度为75%~99%
- 偏移字段大小为12~16bits,可满足75%~99%的需求
- 立即数字段大小为8~16bits,可满足50%~80%的需求
操作数类型和操作数表示
类型:是面向应用、面向软件系统处理的各种操作数据类型。整型、浮点型、字符、字符串、向量类型;类型由操作码确定。
表示:操作数在机器中的表示,硬件结构能够识别,指令系统可以直接使用的表示格式。整型(原码、补码、反码),浮点(IEE 754标准),十进制(BCD码,二进制十进制表示)
- ISA研究的问题
- ISA的分类
- 操作数部分
- 理解存储器地址(尾端+对齐问题)
- 寻址方式
- 操作数的类型、表示和大小问题
- 操作码部分
- 指令格式
- 研究的方法:基于统计的方法
- 结论:
- 常用的寻址方式:立即数、偏移寻址、寄存器寻址
- 偏移字段的大小:12~16bits
- 立即数字段的大小8~16bits
- 操作数大小:单字、双字的数据访问频率高;64字长更具一般性
- ISA的功能设计
- 任务:确定硬件支持哪些操作
- 方法:统计
- 类型:CICS和RISC
- 控制类指令
- 条件分支最常见
- 寻址方式:pc-relative和偏移地址至少8位;即动态的转移地址方式
- CISC
RISC计算机指令集结构的功能设计
- 特点:
- 大多数指令在单周期内完成
- 采用load、store结构
- 硬布线控制逻辑
- 减少指令和寻址方式种类
- 固定的指令格式
- 注重代码的优化
- 面向寄存器结构
- 重视流水线的执行效率--》尽量减少断流
- 重视优化编译技术
- RISC为了使流水线高效执行
- 简单而统一的指令译码
- 大部分指令可以单周期完成
- 只有load/store指令访存
- 简单寻址技术
- 采用load延迟技术
- 为了便于优化编译产生优化代码
- RISC的关键技术
- 延迟转移技术
- 指令取消技术
- 重叠寄存器窗口技术
- 处理器中设置多个寄存器堆,并划分多个窗口
- 每个过程使用其中相邻的三个窗口和一个公共的窗口
- 一个与前一个过程公用;一个与下一个过程公用;一个作为局部寄存器
- 指令调整技术
- 硬件为主,固件为辅
- 频率较高的指令:load,store,add,subtract,move register-register,and,shift,compare equal,compare not equal,branch,jump,call,return
- 控制类指令:conditional branch,jump,procedure calls,procedure returns
- 控制类指令的寻址方式:pc-relative
- 编译时不知道转移地址,程序执行时动态确定
- 转移地址放到某一寄存器中
- 指令编码方式MIPS寻址方式/指令格式(所有指令都是32bit)
- 寄存器直接寻址
- 立即数寻址
- 基址寻址
- pc相对寻址
- 寄存器间接寻址
|