02 计算机体系结构--ISA设计

这一节是中国科学技术大学周学海教授所讲授的计算机体系结构中的第二讲--ISA设计。这一节的主要内容有:ISA的分类 寻址方式 操作数的类型、表示和大小 ISA的操作 控制类指令 指令编码 编译技术与计算机体系结构 MIPS指令集等。特别提出来有关ISA的一些问题:存储器寻址 操作数的类型与大小 所支持的操作 控制转移类指令 指令格式。
展开查看详情

1.计算机体系结构 周学海 xhzhou@ustc.edu.cn 0551-63606864 中国科学技术大学

2. 第 2 章 ISA 设计  ISA 的分类  寻址方式  操作数的类型、表示和大小  ISA 的操作  控制类指令  指令编码  编译技术与计算机体系结构  MIPS 指令集 18/9/22 中国科学技术大学 2

3. ISA software instruction set hardware 18/9/22 中国科学技术大学 3

4. ISA 的概念 • 软件子系统与硬件子系统的关键界面 • 一组直接由硬件执行的指令,包括 – 程序员可见的指令集合 – 程序员可见的机器状态 (registers and memory)registers and memory)) • 应具备的特性 – 可持续多代,以保持向后( backward) 兼容 – 可用于不同应用领域( desktops, servers, embedded applications ) – 为高层软件的设计与开发提供方便的功能 – 方便低层硬件子系统高效实现 18/9/22 中国科学技术大学 4

5. ISA 的演进 18/9/22 中国科学技术大学 5

6. ISA 的基本分类 • 早期的 ISA – 堆栈型( Stack ) : 0 address add ; tos tos + next – 累加器型 (registers and memory)Accumulator) (registers and memory)1 register): 1 address add A ;acc acc + mem[A] – 被通用寄存器型 ISA 取代 • 通用寄存器型 (registers and memory)General Purpose Register): – Register-memory) 2 address add A B ; EA[A] EA[A] + EA[B] 3 address add A B C ; EA[A] [B] + EA[C] – Load/Store: 3 address add Ra Rb Rc ; Ra Rb + Rc load Ra Rb ; Ra mem[Rb] store Ra Rb ; mem[Rb] Ra – 存储器 - 存储器型 (目前已经没有) 18/9/22 中国科学技术大学 6

7. 不同的指令格式 • Zero-address format: Stack machines – ADD Stack[SP-1] Stack[SP] + Stack[SP-1] – Usually top of stack is kept in high-speed registers • One-address format: Accumulator machines – ADD (X) AC AC + Memory[X] • Two-address format: destination = first source operand – ADD R1, R2 Reg[R1] Reg[R1] + Reg[R2] – ADD R1, (X) Reg[R1] Reg[R1] + Memory[X] – ADD (X), (Y) Memory[X] Memory[X] + Memory[Y] • Three-address format: most RISC architectures – ADD R3, R1, R2 Reg[R3] Reg[R1] + Reg[R2] • Variety 中国科学技术大学 7 18/9/22

8. ISA: 必须说明哪些东西 ? Instruction • 指令格式或编码方式。即如何编码 ? Fetch • 操作数和操作结果的存放位置 – 存放位置 ? Instruction Decode – 多少个显式操作数 ? – 存储器操作数如何定位 ? Operand – 哪些操作数可以或不可以放到存储器中 ? Fetch • 数据类型和大小 Execute • 寻址方式 • 支持哪些操作 Result • 下一条指令地址 Store – jumps, conditions, branches Next – fetch-decode-execute is implicit! Instruction 18/9/22 中国科学技术大学 8

9. 有关 ISA 的若干问题 • 存储器寻址 • 操作数的类型与大小 • 所支持的操作 • 控制转移类指令 • 指令格式 18/9/22 中国科学技术大学 9

10. 存储器寻址 • 80 年以来几乎所有机器的存储器都是按字节编址 • 一个存储器地址可以访问: – 一个字节、 2 个字节、 4 个字节、更多字节… .. • 不同体系结构对字的定义是不同的 – 16 位字( Intel X86 ) 32 位字( MIPS ) • 如何读 32 位字,两种方案 – 每次一个字节,四次完成;每次一个字,一次完成 问题: ( 1 )如何将字节地址映射到字地址 (尾端问题) ( 2 )一个字是否可以存放在任何字节边界上 (对齐问题) (对齐问题) 即尾端( Endian) 和对齐问题 18/9/22 中国科学技术大学 10

11. 尾端问题 • little endian, big endian, 在一个字内部的字节顺序问题, • 如地址 xxx00 指定了一个字( int ) , 存储器中从 xxx00 处连续存放 ffff0000, 则有两种方 式: – Little endian 方式下 xxx00 位置是字的最低字节,整数值为 0000ffff, Intel 80x86, DEC Vax, DEC Alpha (registers and memory)Windows NT) – Big endian 方式下 xxx00 位置是字的最高字节,整数值为 ffff0000, IBM 360/370, Motorola 68k, MIPS, Sparc, HP PA 18/9/22 中国科学技术大学 11

12. 对齐问题 • 对 s 字节的对象访问地址为 A ,如果 A mod s =0 称为边界对齐。 • 边界对齐的原因是存储器本身读写的要求,存储器本身读写通常就是 边界对齐的,对于不是边界对齐的对象的访问可能要导致存储器的两 次访问,然后再拼接出所需要的数。(或发生异常) 18/9/22 中国科学技术大学 12

13. 寻址方式 • 寻址方式:如何说明要访问的对象地址 • 有效地址:由寻址方式说明的某一存储单元的实际 存储器地址。有效地址 vs. 物理地址 18/9/22 中国科学技术大学 13

14. 各种寻址方式的使用情况 ? ( 忽略寄存器直接寻址 ) 三个 SPEC89 程序在 VAX 结构上 (对齐问题)的测试结果: 立即寻址,偏移寻址使用较多 18/9/22 中国科学技术大学 14

15. 偏移寻址 • 主要问题:偏移的范围(偏移量的大小) Alpha Architecture with full optimization for Spec CPU2000, showing the average of integer programs(registers and memory)CINT2000) and the average of floating-point programs (registers and memory)CFP2000) 18/9/22 中国科学技术大学 15

16. 立即数寻址 Alpha Architecture with full optimization for Spec CPU2000, showing the average of integer programs(registers and memory)CINT2000) and the average of floating-point programs (registers and memory)CFP2000) 18/9/22 中国科学技术大学 16

17. 立即数的大小 The distribution of immediate values. About 20% were negative for CINT2000 and about 30% were negative for CFP2000. These measurements were taken on a Alpha, where the maximum immediate is 16 bits, for the spec cpu2000 programs. A similar measurement on the VAX, which supported 32-bit immediates, showed that about 20% to 25% of immediates were longer than 16 bits. 18/9/22 中国科学技术大学 17

18. 寻址方式小结 • 重要的寻址方式 : 偏移寻址方式 , 立即数寻址方式 , 寄存器间址方式 SPEC 测试表明,使用频度达到 75%--99% • 偏移字段的大小应该在 12 - 16 bits 可满足 75%-99% 的需求 • 立即数字段的大小应该在 8 -16 bits 可满足 50%-80% 的需求 18/9/22 中国科学技术大学 18

19. 操作数的类型、表示和大小 • 操作数类型和操作数表示也是软硬件的主要界面之一。 • 操作数类型:是面向应用、面向软件系统所处理的各种数 据类型。 – 整型、浮点型、字符、字符串、向量类型等 – 类型由操作码确定或数据附加硬件解释的标记,一般采用由操作 码确定 – 数据附加硬件解释的标记,现在已经不采用 • 操作数的表示:操作数在机器中的表示,硬件结构能够识 别,指令系统可以直接使用的表示格式 – 整型:原码、反码、补码 – 浮点: IEEE 754 标准 – 十进制: BCD 码 / 二进制十进制表示 18/9/22 中国科学技术大学 19

20. 常用操作数类型 • ASCII character = 1 by)te (registers and memory)64-bit register can store 8 characters • Unicode character or Short integer = 2 by)tes = 16 bits ( half word) • Integer = 4 by)tes = 32 bits (registers and memory)word size on many) RISC Processors) • Single-precision float = 4 by)tes = 32 bits (registers and memory)word size) • Long integer = 8 by)tes = 64 bits (registers and memory)double word) • Double-precision float = 8 by)tes = 64 bits (registers and memory)double word) • Extended-precision float = 10 by)tes = 80 bits (registers and memory)Intel architecture) • Quad-precision float = 16 by)tes = 128 bits 18/9/22 中国科学技术大学 20

21. 操作数的大小 基准测试的结论:( 1 )对单字、双字的数据访问具有较高的频率 ( 2 )定义操作数字段长度为 64 位,更具有一般性 18/9/22 中国科学技术大学 21

22. 03/12-Review • ISA 需考虑的问题 – Class of ISA – Memory) addressing – Ty)pes and sizes of operands – Operations – Control flow instructions – Encoding an ISA • ISA 的类型 – 通用寄存器型占主导地位 • 寻址方式 – 重要的寻址方式 : 偏移寻址方式 , 立即数寻址方式 , 寄存器间址方式 » SPEC 测试表明,使用频度达到 75%--99% – 偏移字段的大小应该在 12 - 16 bits, 可满足 75%-99% 的需求 – 立即数字段的大小应该在 8 -16 bits, 可满足 50%-80% 的需求 18/9/22 中国科学技术大学 22

23. ISA 的操作 • CISC 指令集结构的功能设计 • RISC 指令结构的功能设计 18/9/22 中国科学技术大学 23

24. 典型操作类型 • 一般计算机都支持前三类所有的操作; • 不同计算机系统 对系统支持程度不同,但都支持基本的系统功能。 • 对最后四类操作的支持程度差别也很大,有些机器不支持,有些机器还在此 基础上 (对齐问题)做一些扩展,这些指令有时作为可选的指令。 18/9/22 中国科学技术大学 24

25. Top 10 80x86 Instructions ° Rank instruction Integer Average Percent total executed 1 load 22% 2 conditional branch 20% 3 compare 16% 4 store 12% 5 add 8% 6 and 6% 7 sub 5% 8 move register-register 4% 9 call 1% 10 return 1% Total 96% ° Simple instructions dominate instruction frequency) 18/9/22 中国科学技术大学 25

26. ISA 对操作类型的选择 • 需考虑的因素:速度、价格和灵活性 • 基本要求:指令系统的完整性、规整性、高效率和兼容性 – 完整性设计:具备基本指令种类 – 兼容性:系列机 – 高效率:指令执行速度快、使用频度高 – 规整性 » 让所有运算部件都能对称、均匀的在所有数据存储单元之间进行操作 。 » 对所有数据存储单元都能同等对待,无论是操作数或运算结果都可以 无约束地存放到任意数据存储单元中 – 正交性 » 数据类型独立于寻址方式 » 寻址方式独立于所要完成的操作 • 当前对这一问题的处理有两种截然不同的方向 – CISC 和 RISC 18/9/22 中国科学技术大学 26

27. CISC 计算机 ISA 的功能设计 • 目标:强化指令功能,减少指令条数,以提高系统性能 • 基本优化方法 1. 面向目标程序的优化是提高计算机系统性能最直接方 法 – 优化目标 » 缩短程序的长度 » 缩短程序的执行时间 – 优化方法 » 统计分析目标程序执行情况,找出使用频度高,执行时间长的指令或 指令串 » 优化使用频度高的指令 » 用新的指令代替使用频度高的指令串 18/9/22 中国科学技术大学 27

28. 优化目标程序的主要途径( 1/2) 1 )增强运算型指令的功能 如 sin(registers and memory)x), Cos(registers and memory)x), SQRT(registers and memory)X) ,甚至多项式计算 如用一条三地址指令完成 P(registers and memory)X) = C(registers and memory)0)+C(registers and memory)1)X+C(registers and memory)2)X2+C(registers and memory)3)X3+….. 2) 增强数据传送类指令的功能 主要是指数据块传送指令 R-R, R-M, M-M 之间的数据块传送可有效的支持向量和 矩阵运算,如 IBM370 R-Stack 之间设置数据块传送指令,能够在程序调用和 程序中断时,快速保存和恢复程序现场,如 VAX-11 18/9/22 中国科学技术大学 28

29. 优化目标程序的主要途径( 2/2) 3) 增强程序控制指令的功能 在 CISC 中,一般均设置了多种程序控制指令,正常仅 需要转移指令和子程序控制指令 2. 面向高级语言和编译程序改进指令系统 – 优化目标:主要是缩小 HL-ML 之间的差距 – 优化方法: 1 )增强面向 HL 和 Compiler 支持的指令功能 – 统计分析源程序中各种语句的使用频度和执行时间 – 增强相关指令的功能优化使用频度高、执行时间长的语句 – 增加专门指令,以缩短目标程序长度,减少目标程序执行时间, 缩短编译时间 18/9/22 中国科学技术大学 29