PowerPoint 演示文稿
Download
Report
Transcript PowerPoint 演示文稿
计算机系统结构
-指令系统优化
<<上海大学计算机系统结构>>
课程组
指令结构分类
寻址方式分类
寻址方式的使用频度
指令操作分类
控制流指令的使用频度
指令编码格式
数据结构与数据表示 -1
计算机常用的各种数据结构有串、堆栈、
队列、向量、阵列、矩阵、链表、图等。
实现这些数据结构的各种算法,几乎都
立足于计算机系统结构只提供按地址访
问的一维线形存储器以及最基本、最简
单的数据表示。
数据结构与数据表示 -2
数据表示指的是能由硬件直接辨认的数
据类型。这样,这些数据结构要经过软
件映象,变换成按地址访问一维存储器
内的各种数据表示。如何用最少的存储
空间存储这些数据结构,以及用什么样
的算法能最快、最简地存储则是数据结
构的研究课题。
数据结构与数据表示 -3
计算机的基本数据类型有逻辑(布尔)数、
定点数(整数)、浮点数(实数)、十进制
数、字符串、数组等。对这些数据的运算可
以设置专门指令,也可以仅设置最简单的算
术逻辑运算指令。而通过编制程序执行实现
之,但后者速度下降很多。在机器中若设置
能直接对矩阵向量数据(数组)进行运算的
指令及硬件,可以大大提高对向量、数组的
处理速度,这一般在巨型机中才使用。
数据结构与数据表示 -4
目前计算机所用数据字长有8位、16位、
32位等。在存储器中每个单元的容量为8
位,即一个字节,故存储器单元地址按
字节编址。计算机的指令系统可支持对
字节(8位)、半字(16位)、字(32
位)、双字(64位)的运算。
数据结构与数据表示 -5
计算机的数据表示如何确定,是一个复
杂的问题。除了必不可少的基本数据表
示之外,数据表示的确是一个软、硬件
分配的问题。这是因为各种数据结构本
来是能够实现于只有最简单、最基本数
据表示的机器中,只是在有了更好的数
据表示之后,实现的效率可以更高罢了。
数据结构与数据表示 -6
衡量某种数据表示是否合适的标准,首
先要看这能使实行时间以及所需存储容
量减少了多少。而衡量实行时间是否减
少,一个重要的指标是看主存与处理机
间所需传送的信息量是否减少。
数据结构与数据表示 -7
例如,有两个200×200元素(定点数)
的阵列A与B进行相加运算,若用PL/1语
言仅需一条语句,经优化编译形成6条机
器指令的目标程序,其中有4条需循环执
行40,000次。但若机器有阵列型数据表
示,则只需一条机器指令就能执行两个
阵列相加的运算,所以只需一次访问存
储器操作,处理机与主存间取指操作减
少了4×40000次,故实现时间大大减少。
数据结构与数据表示 -8
衡量某种数据表示的确是否合适的另一个标准,是
看这个数据表示的通用性如何,利用率如何。对于
基本的数据表示,其通用性和利用率当然不构成如
何问题,而对于如上述阵列机的数据表示(指阵列
数据表示),则其通用性、利用率就不理想了。而
且,阵列数据表示还有能表达多大阵列的问题;阵
列过大,硬件投资增加,机器性能价格比下降,利
用率可能不高;阵列过小,阵列运算要拆成多块,
分批进入阵列运算部件,使编译困难。所以,机器
的数据表示的选择应该综合平衡上述的各种因素后
才确定。
指令优化
指令系统是计算机所有指令的集合,程
序员用各种语言编写的程序都要翻译成
(编译或解释)以指令形式表示的机器
语言后才能运行,所以它反映了计算机
的基本功能,是硬件设计人员和程序员
都能见到的机器的主要属性,早期计算
机的指令系统很简单,一些比较复杂的
操作由子程序实现,因此计算机的处理
速度比较慢。
指令优化
随着硬件价格的下降,指令系统逐步扩
充,指令的功能也逐步增强。指令系统
的改进是围绕着缩小与高级语言的语义
差异以及有利于操作系统的优化而进行
的。
例如,高级语言中的实数计算是通过浮
点运算进行的,对应在指令系统中设置
浮点运算指令能明显地提高速度
指令优化
例如,在高级语言程序中经常用到IF语
句、DO语句等,为此在指令系统中设置
功能较强的“条件转移”指令是有益的。
例如,为了便于实现程序嵌套,设置了
Call及Ret指令……
上述这些措施都是针对高级语言的优化
进行的,使生成的目标程序短而且运行
速度快,同时也便于编译。
指令优化
例如,为操作系统的实现或优化而设置
的特殊指令,除了各种控制系统状态的
指令外,还有为多道程序公用数据管理
和多处理机系统信息管理用的“测试与
置定”、“比较与交换”等指令。
指令格式优化
指令由操作码和地址码两部分组成,上述
各种寻址方式主要反映在指令的地址码部
分。随着指令类型不同,对地址码的长度
要求变化很大,例如操作数据在内部通用
寄存器内比之在存储器内,其地址码长度
要短得多。为缩小程序代码所占的存储容
量,各类指令的长度可以不一致,例如在
同一个计算机中可以有1字节、2字节、3字
节、4字节等多种长度的指令。
指令格式优化
从压缩代码的观点出发,希望常用的指
令的操作码短些,这样最后使程序的长
度也短些。运用哈夫曼(Huffman)码制
压缩的基本概念,可以达到操作码优化
的目的。
指令格式优化
哈夫曼压缩的基本概念是:出现概率最
大的事件用最少的位(或最短的时间)
来表示(或处理),而概率较小的事件
用较多的位(或较长的时间)来表示
(或处理),达到导致平均位数(或时
间)缩短的目的。在使用哈氏压缩之前,
必须先了解每一种指令使用中的概率—
—使用频率Pi。
举 例-使用频度
设某计算机有7条指令(I1—I7),经过典型程
序的统计,其使用频度Pi为(使用频度表)
I1
0.40
000
I2
0.30
001
I3
0.15
010
I4
0.05
011
I5
0.04
100
I6
0.03
101
I7
0.03
110
举 例-最少使用位数
按信息论中的哈氏信息源熵(即平均信息量)
H公式计算
H=-∑Pi× log2Pi
本例H=0.40×1.32+0.30×1.74+0.15×2.74+
0.05×4.32+0.04×4.64+0.03×5.06+
0.03×5.06 =2.17
表示只需2.17位(平均码长,又名最少使用
位数)
举 例-冗余度
操作码的实际平均长度为∑Pi*Ii(Ii:操
作码位数)。本例=3
信息冗余量表示使用n位后,与最少使用
位数的冗余程度。冗余度= 1-H/∑Pi*Ii
本例7条指令用3位二进制表示,则信息
冗余度为1-2.17/3=28%。
举 例-Haffman Tree压缩步骤
按使用频度排列,由小到大;
选最小二结点合并成一个结点,写入“和”;
不断合并,最终有“根结点”;
从“根结点”向下二叉用“1”、“0”表示;
得到Haffman code
举 例-Haffman Tree
1
0.60
1
1
1
0
0
0
0.06
0
0.30
0.15
1.00
0.09
1
0
1
0
0.03
0.03
0.04
0.05
0.15
0.30
0.40
举 例-Haffman code
I1
I2
I3
I4
I5
I6
I7
0.40
0.30
0.15
0.05
0.04
0.03
0.03
000
001
010
011
100
101
110
0
10
110
11100
11101
11110
11111
举 例-Haffman code
最少使用位数
最小使用位数
H=0.40×1+0.30×2+0.15×3+
0.05×5+0.04×5+0.03×5+
0.03×5
=2.20
信息冗余度
1-2.17/ 2.20 =1.36%
举 例-Haffman code
缺点
Haffman 编码的最大缺点是不规整。
不利于存储器存储;
不利于指令译码网络的执行。
改进的方法“扩展编码”
举 例-扩展编码原理
只有两种码长的扩展操作码编码,是需要对
指令使用频度进行按大小分“群”。将高频
的指令分在同一群中,对其用短的操作码编
码,而将低频的指令分在另一群中,使用长
操作码编码。每一群都各自用等长操作码编
码。注意,为了能唯一解码和立即解码,在
短操作码中还要使用某些码来作为扩展成长
操作码的扩展标志码。经过综合权衡,使平
均码长尽可能短,来定好长、短码的码长组
配关系。
举 例-扩展编码
I1
I2
I3
I4
I5
I6
I7
0.40
0.30
0.15
0.05
0.04
0.03
0.03
000
001
010
011
100
101
110
0
10
110
11100
11101
11110
11111
00
01
10
1100
1101
1110
1111
举 例-扩展编码
最少使用位数
最小使用位数
H=0.40×2+0.30×2+0.15×2+
0.05×4+0.04×4+0.03×4+
0.03×4
=2.30
信息冗余度
1-2.17/ 2.30 =5.65%
举 例-小结
等长
Haffman
扩展Haffman
3位
2.2位
2.3位
28%
1.36%
5.65%
习题一
假设系统某一部件的处理速度加快 9 倍,
但该部件的原处理时间仅为整个运行时
间的 45% ,则采用加快措施后能使整个
系统的性能提高多少?
如果部件改进后获得的加速比变为 SP=5.5 ,
问改进前的执行时间占改进后的百分比
是多少?
习题二
经统计,某计算机的14条指令的使用频度
分别为0.01,0.15,0.12,0.03,0.02,
0.04,0.02,0.04,0.01,0.13,0.15,
0.14,0.11,0.03。
分别求出用等长码、 Huffman码、只有两
种码长的扩展操作码等3种编码方式的操
作码平均码长。
举例
经统计,某计算机的14条指令的使用频度分别
为0.01,0.15,0.12,0.03,0.02,0.04,0.02,
0.04,0.01,0.13,0.15,0.14,0.11,0.03。
分别求出用等长码、 Huffman码、只有两种码
长的扩展操作码等3种编码方式的操作码平均码
长。
[分析]
等长操作码的意思是不管其指令的使用频度如何,都
用同样长度的二进制码位数来对指令操作码编码。显然,当
指令系统中的指令条数为n时,等长操作码位数应当是
「log2n」。
Huffman编码是用Huffman算法构造出Huffman树而得到
的。它的平均码长是用i=1,nΣPili求得的。
只有两种码长的扩展操作码编码,是需要对指令使用
频度进行按大小分群。将高频的指令分在同一群中,对其用
短的操作码编码,而将低频的指令分在另一群中,使用长操
作码编码。每一群都各自用等长操作码编码。注意,为了能
唯一解码和立即解码,在短操作码中还要使用某些码来作为
扩展成长操作码的扩展标志码。经过综合权衡,使平均码长
尽可能短,来定好长、短码的码长组配关系。从而,再用
i=1,nΣPili求得其平均码长。
[解答]
14条指令的等长操作码的平均码长是「log214」,
即4位。
Huffman编码可先用Huffman算法构造出
Huffman树,见图。它的平均码长是用i=1,14ΣPili=3.38
位。
采用只有两种码长的扩展操作码编码,可根据
14条指令所给出的使用频度值分成两群。让使用频度
较高的6种指令用3位操作码表示。留下110和111两个3
位码作为长码的扩展标志,扩展出2位码。从而用5位
码就可以各扩展出4条使用频度较低的指令,这样,共
有8条使用频度较低的指令。由此可求得操作码的平均
码长为i=1,14ΣPili=3X0.80+5X0.20=3.4位。
参考
中文书pp.34 ~ 36: 指令优化
课堂举例
习题一、习题二