Instruction Set Design Tasks 指令集设计任务
- 分类指令集架构
- 内存寻址
- 指令集中的运算
- 操作数的类型和大小
- 编码指令集
- 优化指令集 Optimize
三个应用领域:
- 桌面计算
- 强调具有整数和浮点数据类型的程序的性能,而很少考虑处理器功耗的程序大小
- 整数/浮点程序
- 服务器
- 主要用于数据库,文件服务器和Web应用程序,以及一些时间 对许多用户共享应用程序。
- 对许多用户共享时间应用程序。
- FP性能不如整数/字符串重要。
- 嵌入式应用程序
- 重视成本和功耗,因此代码大小很重要,因为更少的内存既便宜又低功耗。
- 代码大小
1.指令集架构分类
//按CPU内部存储器的类型//
- 堆栈
- 操作数隐式位于栈顶:B5000
- 通过堆栈的PUSH、POP操作
- 累加器
- 一个操作数隐含于累加器:PDP-8
- 另一个操作数指明位置
- GPR(通用寄存器)架构
- 仅具有显式操作数 -寄存器或内存位置-1975年-现在所有机器都使用通用寄存器
- 数据存放于寄存器,ALU能进行更多的操作:寄存器、立即数、内存
- 常用LS结构(Reg2Reg) ->Reg2Mem中访问存储器的不可预测性太大,访问地址的过程太漫长,大大削减对流水线操作效率。编码效率低。
2.Memory Addressing 内存寻址
64-bit system -> 64 byte = 1 word
内存可以视为具有地址的大型单维数组,内存地址是数组的索引。
- word:易于实现,不支持非数值计算;
- bit:可变长度计算,浪费地址空间;
- Byte:最流行,存在数据存储和对齐问题。“字节寻址”表示索引指向内存的一个字节。
Aligned address of byte, half-word, word, and double-word //对齐寻址
byte XXXXXXXXXXX(隔1个) half-word XXXXXXXXXX 0(隔2个) word XXXXXXXXX 0 0(隔4个) double-word XXXXXXXX 0 0 0(隔8个)
不对齐寻址:
- 读两遍,运行效率降低。
- 即使在允许未对齐访问的计算机中,具有对齐访问权限的程序也会运行得更快。
现象:
- 立即数的寄存器模式占操作数引用的一半;
- 不包括PC相关的寻址模式,几乎只用于分支;
- 偏移包括所有偏移长度(8位,16位和32位)
- Most popular memory addressing modes are:(只需要支持这三种模式)
Displacement42%
Immediate33%
Register indirect13%
Summary:
- Support at least 3 addressing mode
- Register indirect, displacement, immediate
- Fig B.7, 75%~99%
- The size of the address for displacement mode to be at least 12-16 bits
- FigB.8, 75%~99%
- The size of the immediate field to be at least 8-16 bits
- FigB.10, 50%~80%
4.指令集
指令运算符的类别:
- 基本指令
- 算术和逻辑
- 数据传输
- 控制
- 特别指令
- 浮点数(科学计算)
- 小数(商业)
- 串string
- 图形
- 特权指令
- 虚拟内存管理说明
- 操作系统调用
5.指令长度
可变长度
(e.g.,VAX,Intel 80×86) |
|
固定长度
(e.g.,Alpha,ARM,MIPS,PowerPC,SPARC,SuperH) |
|
混合
(e.g.,IBM360/70,MIPS16,Thumb,TI TMS320C54x) |
|
现在的指令集以固定长度指令为主,辅以可变长度指令。
MEMO:精简指令集 vs 复杂指令集
比较内容 CISC RISC 指令系统 复杂,庞大 简单,精简 指令数目 一般大于200 一般小于100 指令格式 一般大于4 一般小于4 寻址方式 一般大于4 一般小于4 指令字长 不固定 等长 可访存指令 不加限制 只有LOAD/STORE指令 各种指令使用频率 相差很大 相差不大 各种指令执行时间 相差很大 绝大多数在一个周期内完成 优化编译实现 很难 较容易 程序源代码长度 较短 较长 控制器实现方式
绝大多数为微程序控制 绝大多数为硬布线控制 软件系统开发时间 较短 较长 存储器、CPU空间的需求、流水线的需求 ->精简指令集
0 条评论