Download presentation
Presentation is loading. Please wait.
Published byHelena Frade de Paiva Modified 6年之前
1
§3 指令系统的设计和优化 指令系统是从程序设计者看到的机器的主要属性,是软、硬件的主要界面 指令系统是计算机系统结构的主要组成部分
§3 指令系统的设计和优化 指令系统是从程序设计者看到的机器的主要属性,是软、硬件的主要界面 指令系统是计算机系统结构的主要组成部分 指令系统是软件与硬件分界面的一个主要标志 指令系统是软件与硬件之间互相沟通的桥梁 指令系统与软件之间的语义差距越来越大 指令系统的设计主要包括指令的功能(操作类型、具体操作内容)和指令格式的设计.
2
内容 指令系统设计的基本原则 指令操作码的优化 指令字格式的优化
3
指令设计的步骤 根据应用,初拟出指令的分类和具体的指令; 试编出用该指令系统设计的各种高级语言的编译程序;
对各种算法白那些大量测试程序进行模拟测试,看指令系统的操作码和寻址方式效能是否都比较高; 将程序中高频出现的指令串复合改成一条强攻能新指令,即改用硬件方式实现;而将频度很低的指令的操作改成基本的指令组成的指令串来完成,即用软件方式实现;
4
指令类型 非特权型:主要供应应用程序员使用,也可供系统程序员使用,包括算术逻辑运算、数据传送、浮点运算、字符串、十进制运算、控制转移及系统控制等; 特权型:系统程序员使用,用户无权使用,有启动I/O(多用户环境下)、停机等待、存储管理保护、控制系统状态、诊断等;
5
指令系统的设计 设计的原则:如何支持编译系统能高效、简易地将源程序翻译成目标代码。 规整性 对称性 独立性和全能性 正交性 可组合性
可扩充性
6
系统设计人员希望 指令码密度适中 兼容性 适应性 高密度指令:强功能符合指令
优点:减少程序长度、访存次数、Cache、虚存访问调度次数、程序运行时间; 缺点:指令系统复杂,硬件实现困难; 兼容性 适应性
7
指令系统的设计包含的内容 指令的格式 指令的类型 操作功能 操作数的访问方式---寻址方式
8
指令的组成 一般的指令主要由两部分组成:操作码和地址码 操作码主要包括两部分内容: 地址码通常包括三部分内容:
操作种类:加、减、乘、除、数据传送、移位、转移、输入输出 操作数描述 数据的类型:定点数、浮点数、复数、字符、字符串、逻辑数、向量 进位制:2进制、10进制、16进制 数据字长:字、半字、双字、字节 地址码通常包括三部分内容: 地址:直接地址、间接地址、立即数、寄存器编号、变址寄存器编号 地址的附加信息:偏移量、块长度、跳距 寻址方式:直接寻址、间接寻址、立即数寻址、变址寻址、相对寻址、寄存器寻址
9
指令设计要考虑的问题 操作数的存储形式 存储器 CPU内什么地方 每条指令中显式说明的操作数个数 操作数的位置 操作类型 操作数的类型和长短
10
指令的分类
11
指令格式的优化 指令=操作码+地址码 指令格式的优化:如何用最短的位数来表示 指令的操作信息和地址信息,使程序中指 令的平均字长最短。
主要目标: 节省程序的存储空间 指令格式尽量规整,便于译码
12
操作码的优化表示 操作码的三种编码方法: 固定长度: 规整性好,解码简单,空间大。 Huffman编码:空间小,规整性不好,解码复杂。
固定长度: 规整性好,解码简单,空间大。 IBM公司的大中型机:最左边8位为操作码 Intel公司的Intanium处理机:14位定长操作码 许多RISC处理机采用定长操作码 Huffman编码:空间小,规整性不好,解码复杂。 扩展编码: 折衷方案。 固定长度 4 Huffman编码 2.12 扩展编码 3.12 信息源熵 2.09
13
改进操作码编码方式能够节省程序存储空间 例如:Burroughs公司的B-1700机 操作码 编码方式 整个操作系统所用 指令的操作码总位数
改进的 百分比 8位定长编码 4-6-10扩展编码 Huffman编码 301,248 184,966 172,346 39% 43%
14
哈夫曼(Huffman)压缩 当各种事件发生的概率不均等时,采用优化技术对发生概率最高的事件用最短的位数(时间)来表示(处理),而对出现概率较低的允许用较长的位数(时间)来表示(处理),以达到平均位数减少的目的。 用于代码压缩、程序压缩、空间压缩和时间压缩
15
操作码的优化表示 信息源熵:信息源包含的平均信息量。 信息冗余量:
16
举例 七条指令,频度如下 I1 I2 I3 I4 I I6 I7 信息源熵H=2.17 信息冗余量=0.28=28%
17
1.00 0.60 0.30 0.15 0.06 0.03 0.04 0.05 0.40 0.09 1 (11111) (11110) (11101) (11100) (110) (10) (0) I7 I6 I1 I2 I3 I4 I5
18
扩展编码 Huffman操作码的主要缺点: 扩展编码法:由固定长操作码与Huffman编码法相结合形成 操作码长度很不规整,硬件译码困难
与地址码共同组成固定长的指令比较困难 扩展编码法:由固定长操作码与Huffman编码法相结合形成 减少平均长度 方便译码
19
上例:Huffman用四种长度 0,10,110,11100,11101,11110,11111 I1、I2、I3用两位:00、01、10 I4、I5、I6、I7用四位: 1100、1101、1110、1111 平均码长=2.30 信息冗余量=0.0565=5.65%
20
Huffman编码方法 写出每个事件出现频度 找出两个时间出现频度最低的数字,相加形成新的频度
21
说明 目的:平均码长减少。 Huffma代码不唯一 0,1对换 合并次序
22
举例1 假设一台模型计算机共有7种不同的操作码,如果采用固定长操作码需要3位。已知各种操作码在程序中出现的概率如下表,计算采用Huffman编码法的操作码平均长度,并计算固定长操作码和Huffman操作码的信息冗余量。 利用Huffman树进行操作码编码的方法,又称为最小概率合并法。 指令 I1 概率 0.45 I2 0.30 I3 0.15 I4 0.05 I5 0.03 I6 0.01 I7
23
把所有指令按照操作码在程序中出现的概率,自左向右从排列好。
选取两个概率最小的结点合并成一个概率值是二者之和的新结点,并把这个新结点与其它还没有合并的结点一起形成新结点集合。 在新结点集合中选取两个概率最小的结点进行合并,如此继续进行下去,直至全部结点合并完毕。 最后得到的根结点的概率值为1。 每个结点都有两个分支,分别用一位代码“0” 和“1”表示。
24
从根结点开始,沿尖头所指方向,到达属于该指令的概率结点,把沿线所经过的代码组合起来得到这条指令的操作码编码。
解:采用Huffman编码法所得到的操作码的平均长度 =0.45×1+0.30×2+0.15×3+0.05×4 +0.03×5+0.01×6+0.01×6=1.97(位) 熵H=0.45×1.152+0.30×1.737+0.15×2.737 +0.05×4.322+0.03×5.059+0.01×6.644 +0.01×6.644=1.95(位)
25
0.45 0.30 0.15 0.05 0.03 0.01 1.00 0.55 0.25 0.10 0.02 1
26
指令序号 概率 Huffman编码法 操作码长度 I1 0.45 1位 I2 0.30 10 2位 I3 0.15 110 3位 I4 0.05 1110 4位 I5 0.03 11110 5位 I6 0.01 111110 6位 I7 采用3位固定长操作 码的信息冗余量为:
27
例如:把上例改为1-2-3-5扩展编码法,其操作码最短平均长度为:. H. =. 45×1+0. 30×2+0. 15×3+. (0
28
7条指令的操作码扩展编码法 序号 概率 1-2-3-5扩展编码 I1 0.45 I2 0.30 10 I3 0.15 110 I4 0.05
I2 0.30 10 I3 0.15 110 I4 0.05 11100 I5 0.03 11101 I6 0.01 11110 I7 11111 2-4等长扩展编码 00 01 1100 1101 1110 1111 平均长度 2.0 2.2 信息冗余量 2.5% 11.4% 7条指令的操作码扩展编码法
29
举例2:二~十进制代码压缩 2位二~十进制代码可表示0~99 a b c d e f g h 0 0 0 0 0 0 0 1 0 0 1 0
30
写出概率表 ae=00, g=0.8*0.8=0.64 ae=01, g=0.2*0.8=0.16 ae=10, g=0.8*0.2=0.16 ae=11, g=0.2*0.2=0.04
31
画出Huffman代码树,写出代码表 ae状态 概率 Huffman代码 0 0 0.64 1 0 0.16 1 1 0 1 1 0 0
0 0 0.64 1 0 0.16 1 1 0 1 1 1 0.04
32
写出压缩代码表 ae=00 0 b c d f g h ae=10 b=c=0 1 1 x d f g h ae=01 f=g=0
1 0 0 d b c h ae=11 b=c=f=g=0 1 0 1 d x x h
33
操作码等长扩展编码法
35
指令字格式的优化 为了不降低访存取指令的速度,按整数边界存储。 操作数地址的位数
从寻址范围看:越大越好 用各种方法,压缩操作码的位数 通过采用多种不同的寻址方式、地址制、地址形式和地址码长度以及多种指令字长,将它们与可变长操作码的优化表示相结合,可构成冗余度尽可能少的指令字。
36
等长地址码发挥不出操作码优化表示的作用 limax 地址码 空白浪费 limin li
37
在定长指令字内实现多种地址制 地址码 操作码
38
寻址方式中必须支持使用频率较高的寻址方式,相关参数必须满足90%以上的使用频率。
基础:初步设计的指令集。 目标:减少指令长度,提高指令性能。 优化原则: 采用高概率优先思想,对高频率指令,缩短指令长度,提高效率,对低频率指令,主要满足功能要求; 地址码长度富裕时,采用不同的寻址方式或不同的地址制,增加功能; 地址码长度紧张时,采用特定的寻址方式或增加指令字长,满足功能。 寻址方式中必须支持使用频率较高的寻址方式,相关参数必须满足90%以上的使用频率。
39
地址码的优化表示 地址码个数的选择 地址码个数通常有3个、2个、1个及0个等4种情况 评价指令中地址码个数应该取多少的标准主要有两个:
程序存储容量,包括操作码和地址码 程序执行速度,以程序执行过程中访问主存的信息量代表
40
举例:计算一个典型的算术表达式 用三地址指令编写的程序如下 MUL X, A, B ;X←(A)×(B)
ADD X, X, C ;X←(X)+(C) SUB X, X, D ;分子的计算结果在中 ADD Y, E, F ;计算分母,存入 YDIV X, X, Y ;最后结果在X单元中
41
用普通二地址指令编写的程序 MOVE X, A ;复制临时变量到X中 MUL X, B ADD X, C
SUB X, D ;X中存放分子运算结果 MOVE Y, E ;复制临时变量到Y中 ADD Y, F ;Y中存放分母运算结果 DIV X, Y ;最后结果在X单元中
42
用多寄存器结构的二地址指令编写程序 MOVE R1, A ;操作数a取到寄存器R1中 MUL R1, B ADD R1, C
SUB R1, D ;R1中存放分子运算结果 MOVE R2, E ADD R2, F ;R2中存放分母运算结果 DIV R1, R2 ;最后结果在R1中 MOVE X, R1 ;最后结果存入X中
43
用一地址指令编写的程序 LOAD E ;先计算分母, ;取一个操作数到累加器中 ADD F ;分母运算结果在累加器中
STORE X ;保存分母运算结果到X中 LOAD A ;开始计算分子 MUL B ADD C SUB D ;累加器中是分子运算结果 DIV X ;最后运算结果在累加器中 STORE X ;保存最后运算结果到X中
44
用0地址指令编写程序:ab*c+d-ef+/
PUSH A ;操作数a压入堆栈 PUSH B ;操作数b压入堆栈 MUL ;栈顶两数相乘,结果压回堆顶 PUSH C ADD PUSH D SUB ;栈顶是分子运算的结果 PUSH E PUSH F DIV ;栈顶是最后运算的结果 POP X ;保存最后运算结果
47
关于地址码个数结论 对于一般商用处理机,采用多寄存器结构的二地址指令是最理想的。
如果强调硬件结构简单,并且以连续运算(如求累加和等)为主,宜采用一地址结构。 对于以向量、矩阵运算为主的处理机,最好采用三地址结构。RISC处理机采用三地址指令 对于解决递归问题为主的处理机,宜采用零地址结构。编程容易、节省程序存储量。
48
缩短地址码长度的方法 用一个短地址码表示一个大地址空间 用间址寻址方式缩短地址码长度方法: 用变址寻址方式缩短地址码长度
在主存储器的低端开辟一个专门存放间接地址的区域 用变址寻址方式缩短地址码长度 变址寻址方式中的地址偏移量比较短, 用寄存器间接寻址方式缩短地址码长度 例如:16个间址寄存器,用4位地址码就能表示很长的逻辑地址空间。
Similar presentations