- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
02 计算机体系结构--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