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: 指令优化

课堂举例

习题一、习题二