Instruction Set Design Tasks 指令集设计任务

  • 分类指令集架构
  • 内存寻址
  • 指令集中的运算
  • 操作数的类型和大小
  • 编码指令集
  • 优化指令集 Optimize

三个应用领域:

  • 桌面计算
    1. 强调具有整数和浮点数据类型的程序的性能,而很少考虑处理器功耗的程序大小
    2. 整数/浮点程序
  • 服务器
    1. 主要用于数据库,文件服务器和Web应用程序,以及一些时间 对许多用户共享应用程序。
    2. 对许多用户共享时间应用程序。
    3. FP性能不如整数/字符串重要。
  • 嵌入式应用程序
    1. 重视成本和功耗,因此代码大小很重要,因为更少的内存既便宜又低功耗。
    2. 代码大小

 

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:

  1. Support at least 3 addressing mode
    • Register indirect, displacement, immediate
    • Fig B.7, 75%~99%
  2.  The size of the address for displacement mode to be at least 12-16 bits
    • FigB.8, 75%~99%
  3. The size of the immediate field to be at least 8-16 bits
    • FigB.10, 50%~80%

 

4.指令集

指令运算符的类别:

  1. 基本指令
    1. 算术和逻辑
    2. 数据传输
    3. 控制
  2. 特别指令
    1. 浮点数(科学计算)
    2. 小数(商业)
    3. 串string
    4. 图形
  3. 特权指令
    1. 虚拟内存管理说明
    2. 操作系统调用

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 条评论

发表评论

Avatar placeholder