第 2章 数据表示与指令系统
2.1数据表示
2.2寻址方式
2.3指令系统的设计与改进
本章重点,
自定义数据表示;浮点数尾数基值选择;尾数下溢处理方法;寻址方式中的再定位技术;
整数边界存贮;操作码和指令字格式的优化;
CISC指令系统的改进途径综述; RISC概念及所采用的基本技术等。
本章难点:
浮点数尾数基值的选择;操作码和指令字格式的优化。
2.1 数据表示
2.1.1数据表示与数据结构
1.基本概念
1)数据表示:能由机器硬件直接识别和的引用的数据类型 。
2)数据结构:各种数据元素或信息单元之间的结构关系 。
3)两者关系
a)数据结构是通过软件映像将信息变换成数据表示来实现的,表示是结构的元素。
b)不同的表示为结构的实现提供不同的支持,
表现在实现的效率和方便性上。
c)结构和表示是软、硬件的交接面。
2.数据表示的发展
1)早期只有定点数表示,浮点数用两个定点数表示其阶码和尾码。
2)50年代初提出变址操作,为向量、阵列提供了直接的数据支持。见下页图示或 P41:
3)可变长字符串 (行 )数据表示的引入,为串数据结构的实现提供了支持。
a
A1
i
变址寄存器变址加法器有效地址
+ 1
主存
a+0
a+1
a+i
a+n-1


操作码 变址位 变址位A1 A2
变址操作对向量、阵列数据结构的支持
2.1.2高级数据表示
1.自定义数据表示
1)带标志符的数据表示
a)高级语言与机器语言的差别,
高级:用类型说明语句指明类型,类型与数据相联系,运算符不反映类型,通用。
int a,b,sum; sum=a+b;
机器:用操作码指明操作数的类型。
浮加 a b
b)上述差别导致编译时,要将高级语言中的类型说明、运算符转换为机器语言的相应操作码并验证,不一致还要软件转换,负担大。因此,
我们用到了带标志符的数据标志,即每个数据都带上数据标志。
类型标志 数据值数据 (字 )
c)优点:
简化了指令系统和程序设计。
简化了编译程序。
便于实现一致性校验。
能由硬件自动完成数据类型的转换。
支持数据库系统的实现与类型无关的要求。
为软件调试和应用软件开发提供了支持。
d)存在问题,
每个数据字因增设标志符,程序所占用的主存空间会增加。
会降低指令的执行速度。
A
B 指令 (多 )
数据 (少 )
采用标志符指令字缩短不用标志符采用标志符数据字增长
2)数据描述符
a)目的:进一步减少标志符所占空间,对于向量、数组、记录等数据,每个元素具有相同属性,为此提出了数据描述符。
b)与标志符的区别:
标志符:与每个数据相连,合存一个单元,
描述单个数据的类型特征。
描述符:和数据分开,描述要访问数据是单个还是整块,及所需地址等信息。
例,B6700
地址长度数据各种标志101
000
描述符数据操作码指令 X Y
101
000
000
101
101
101
地址形成逻辑描述符描述符数据数据主存贮器
c)可以按树型连接来描述多维数据结构。如:
101
101
101
101
000
000
000
000
000
000
000
000
000
000
000
000
a31

阵列描述符三元素向量
3× 4维阵列
a11
a12
a13
a14
a21
a22
a23
a24
a31
a32
a33
a34
3× 4维阵列
a12a11 a13 a14
a21 a22 a23 a24
a33a32 a34
2.向量数组数据表示
1)目的:为向量、数组的实现和快速运算提供更好的硬件支持,引入了向量数组数据表示,
组成向量处理机。
a)无向量数组表示的机器,需借助变址操作来实现,且各指令、求解、判界只能顺序执行,
难以并行处理 。
例,ci=i+1; i=1…… 100;
for(i=1;i<101;i++)
c[i]=i+1;
无向量数组表示的机器,
b)有向量数组表示的机器,配置有以流水或阵列方式处理的高速运算器,实现高速并行,一条指令完成。
例:
A,B,C向量都要指明其基址、位移量、向量长度和元素步距等参数。
基址:向量中第一个元素的地址。
起始地址:向量中参加运算的首元素地址,由基址加位移量形成 。
向量加 A向量参数 B向量参数 C向量参数
c)参数地址的表示向量长度位移量向量有效长度基地址起始地址
( 基址+位移 )
向量编址所用参数
d)优点:
快速形成元素地址。
便于实现整个向量的元素成块读取。
越界判断和元素运算并行执行。
能对相关型交叉阵列和稀疏矩阵进行多种运算。
3.堆栈数据表示
1)通用机器对堆栈的实现支持很差,指令少,
功能单一,速度低,多用于保护子程序返回地址,少数用于参数传递。
2)堆栈机器:具有堆栈数据表示的机器。
3)优点:
硬件堆栈与堆栈区成一体,速度高,容量大。
指令丰富,功能强。对数据直接运算。
支持高级语言程序的编译。
支持子程序的嵌套和递归。
2.1.3引入数据表示的原则
1.原因:
存贮器一维顺序存贮与数据结构中的多维离散结构有很大差距,不利于数据结构的实现。因此,除了基本数据表示外,还要考虑根据数据结构的需要设计数据表示。
2.原则
1)看效率是否提高,即时间和空间是否减少。
a)主存与 CPU的通讯数据是否减少。
b)是否节省了辅助性操作。
例,A,B两个 200× 200的定点数组相加,若无阵列型数据表示,需 6条指令,其中 4条循环
40000次;若有,则只需一条阵列加指令,时间大大减少。
2)看是否有利于通用性和利用率的提高 。
若只对某些数据结构的效率高,而其它很低,
或引入后很少用到,必然导致性价比下降。
例:引入树型数据表示,对树数据结构的实现是高效的,但对堆栈、向量、链表等的实现很低。采用自定义数据表示的描述符方式,用指针实现,尽管效率有所降低,但同时对其它据结构比较高效,适应性、通用性强,代价小,
有利于性价比提高。
3.对基本数据表示的考虑对基本数据表示的确定,并非没有什么要考虑。
例如,要确定使用二进制,还是二 /十进制,二进制运算快,但对十进制的转换要花时间,还存在精度问题,现在多用二 /十进制数表示。
综上,数据结构的发展总是优于数据表示,硬件成本低,技术快,为数据结构的实现提供更多更好的支持。
2.1.4浮点数尾数基值和下溢处理的选择
1.浮点数尾数基值的选择
1)浮点数一般格式数符阶符 阶码部分
(p+1位 )
尾数
(m个机器位 )
… …
小数点位置

浮点数的一般格式
2p 2p-1 21 20rm-1 rm-2 rm-m’
… … …
a)rm,浮点数尾数的基 (表示 rm进制数 ),用 log2rm
个机器位表示。
b)m’,表示 rm进制尾数的位数。
c)m:机器位。
d)m’= m/log2 rm。
e)浮点数的表示位:尾数 × rm阶码 。
例如:科学计数法的 1.234× 105
2)阶码位数 p和尾数位数 m对数的影响
a)p:影响两个可表示区的大小,即可表示数的范围大小。
b)m:影响表示区中值的精度,即值分布的离散程度。
可表示的零负上溢区 正上溢区负下溢区 正下溢区可表示负实数区中的离散值可表示正实数区中的离散值实数轴
3)rm取值影响讨论 p,m一定,非负阶、正尾数、规格化数
(小数点后首位非零 )的情况。
a)影响
可表示的范围
rm增大,最小值 rm-1减小,最大值 rm2p-1(1-2-m)
增大,从而范围变大。
可表示数的个数
rm增大,个数 2p+m(1- rm -1)变大。
数在实轴上的分布
rm越大,数的分布越稀。用表示比 e衡量。
可表示数的精度
rm越大,数的分布越稀,则数的表示精度下降。
运算中的精度损失精度损失是指运算中尾数右移处机器字而使有效数字丢失造成的精度损失。区别于可表示数的精度。
rm增大,尾数右移可能性降低,精度损失减小。
运算速度
rm增大,左移、右移次数减少,速度提高。
b)表示比 e
定义,在相同的 p,m时,在 rm=2的可表示最大值内,采用 rm>2的可表示浮点数个数与 rm=2
的可表示浮点数个数之比。
计算公式,
e= 21-p(1-rm -1)(1+ (2p-1)/ log2 rm)
例,p=8,rm =16时,e= 0.47
由表示比可知,rm越大,e越小,数的分布越是稀疏。
·
·
c)总结:
rm增大:
增大表示范围增加表示个数减少移位次数降低精度损失提高运算速度降低表示精度分布越加离散
2.浮点数尾数的下溢处理方法数据运算过程中的相乘或右移,使超出运算器和存贮器字长的部分丢弃造成精度损失,为减少精度损失,关键要处理好尾数下溢问题。下面以 rm=2,m=2来讨论。
1)截断法
a)方法,将尾数超出机器字部分简单截去。
b)最大误差:
整数接近 1,二进制分数接近 2-m
正负:正数 产生负误差分布:间隔相同,均匀分布。
c)误差曲线:
d)优点:
简单,不增加硬件,不增加时间。
e)缺点:
最大误差大,
平均误差无法调节。
00
00
01
10
11
处理结果实际值00 0
00 1
01 0
01 1

理想直线最大误差稳态值截断法
2)舍入法
a)方法,在规定字长外增设一位附加位,存放溢出部分高位,处理时该位加 1。
b)最大误差:
整数二进制为 0.5,分数为 2-(m+1)。
正负:有正有负。
分布:统计平均误差接近零,稍偏正,无法调节。
c)误差曲线
d)优点:
增加硬件少,
最大误差小,
平均误差接近零。
e)缺点:
处理速度慢。
00
00
01
10
11
实际值00 0
00 1
01 0
01 1

理想直线最大误差处理结果舍入法
3)恒置,1”法
a)方法,在规定字长之最低位恒置成,1”状态 。
b)最大误差:
整数二进制为 1,分数为 2-m。
正负:有正有负。
分布:统计平均误差接近零,稍偏正,无法调节。
c)误差曲线,
d)优点:
实现简单,不增加硬件和处理时间,平均误差接近零。
e)缺点:
最大误差大。
00
00
01
10
11
处理结果实际值00 0
00 1
01 0
01 1

理想直线最大误差恒置,1”法
4)查表舍入法
a)方法,基于存贮逻辑思想,用 ROM或 PLA存放下溢处理表。
当 k-1位全位,1”时,以截断法处理;其它以舍入法处理。
长结果较短近似值尾数尾数
2kROM
k-1低位
k-1低位 被舍掉的位高位
b)最大误差:
最大为 1。
正负:有正有负。
分布:不均匀,平均误差为零,可调节。
c)优点:
ROM速度快,平均误差可调为零,可调节。
d)缺点:
增加过多硬件设备 。
2.2 寻址方式寻址方式是指指令按什么方式询问 (或访问 )
到所需要的操作数或信息的。
2.2.1寻址方式分析能被指令访问到的存放数据或信息的部件,主存、堆栈及各种寄存器 (通用、控制、设备等 )。
1.不同机器的编址方式
1)把部件分类,各自从,0”开始单独编址,构成多个一维线性地址空间。指令短,地址简单,
编址范围大。但指令应有区分标志或使用约定。
2)把部件统一编成一个从,0”开始的一维线性地址,对部件的访问反映为对地址的访问。有利于简化指令系统。
3)隐式地址,采用约定的编址方式,不必计算部件地址,加快访问速度。但指令设计不规范。
2.寻址方式
1)面向寄存器 —— 速度快
2)面向堆栈 —— 减轻编译负担
3)面向内存 —— 针对大量数据操作三者反映了不同工作阶段的特点,不应相互排斥。在同一系统中,都应采用,只是一种为主,
其它为辅,以取长补短。
地址码形成物理地址方法:立即寻址、直接寻址、间接寻址、相对寻址、编址寻址等。
3.寻址方式的两种指明方式
1)占用操作码的某些位来指明
2)在地址码部分专门设置寻址方式位来指明相比较而言,寻址方式位法寻址灵活,操作码短,但需专门的寻址位字段,和操作码的总位数会比占用操作码位来指明要长。
2.2.2逻辑地址与主存物理地址
1.基本概念
1)逻辑地址,程序员编程时使用的地址。
2)主存物理地址:程序在主存中的实际地址 。
3)两者发展变化
a)早期是一致的,程序与数据的地址由程序员编程时决定和指明。
b)随着汇编、编译程序和 OS的出现,变得不一致。多道程序执行,程序员事先不知道程序装入主存的地址,各个逻辑地址都从 0开始,而主存是一维线性从 0开始编址,导致不一致。
一般是程序装入内存时,需要转换,即再定位 。
A道程序的逻辑地址空间
0
加转移
g
s
g
s
加转移
a+g
a+s
a+g
a+s
a
0
m
a+m
主存空间

A道程序地址空间逻辑地址空间到物理地址空间的变换下界上界
2.程序定位方法
1)静态再定位
a)思想,利用冯,诺依曼型机器指令可修改的特点,程序装入内存时,用软件方法把逻辑地址变换成物理地址,执行时物理地址不再改变。
b)缺点:一道程序地址修改错误会导致其它程序被破坏,防碍程序再入性,不利于调试,给重叠、流水带来困难。 60年代后,不准修改指令。
2)动态再定位
a)思想,基于变址思想,提出了基址寻址法,
增加相应基址寄存器和地址加法器,执行时逻辑地址加基址即可形成物理地址而访问。
指令地址码 基址寄存器逻辑 (形式 )地址 程序基点 (a)
地址加法器物理 (有效 )地址基址寻址
3.基址寻址与变址寻址
1)变址寻址,对向量、数组等数据块运算的支持,
以利于实现程序的循环。
2)基址寻址,对逻辑地址空间到物理地址空间的支持,以利于实现程序的动态再定位。其实质是将静态再定位的软件实现用地址加法器硬件替换了,以加快地址变换的速度。
4.界限保护
1)原因,地址不是直接取自指令地址码,而是由地址硬件变换的来,为防止出错,生成物理地址后要判断其有效性。
2)原则,当生成的有效地址小于下界值或大于上界值时,就出现地址越界错误,需经中断转入越界分析和处理。
3)方法,设置上下界寄存器,保护上下界地址。
还可设置多对上下界寄存器,保证一道程序可以访问多个连续空间。
5.物理地址空间的信息分布同台机器可存贮多种宽度信息,字节、字、半字、双字等。如:
字节 字节 浪费半字字字双单 字 单半 字 浪 费双 字单 字 单 字主存宽度 主存宽度
8个字节 8个字节
(a) (b)
各种宽度信息的存贮
1)存贮原则,存贮于主存中的各位信息必须是其信息位数的整数倍,即按整数边界存贮。
2)优点,减少了访问周期,有利于提高访问速度。
3)缺点,浪费存贮空间。
2.3 指令系统的设计和改进从程序设计者角度看,指令系统是机器的主要属性,是软硬件的交界面,决定了计算机的功能。指令系统的设计包括指令功能 (操作类型、具体操作内容 )和格式的设计。
2.3.1指令格式的优化
1.基本概念
1)指令,由操作码和地址码 (操作数 )组成。
2)指令格式的优化,用最短的位数来表示指令的操作信息和地址信息,使程序中指令的平均字长最短。
3)哈夫曼压缩思想:当各种事件发生概率不等时,概率最高事件用最短位数表示,概率低事件用长位数表示,就会使平均位数缩短。可用于代码、程序、存贮空间、时间等的压缩。
2.操作码的优化表示
1)目的,缩短指令字长度,减少程序总位数,
增加指令字所能表示的操作信息和地址信息。
2)信息源熵 H:信息量的单位,表示信息源所包含的平均信息量。对于二进制表示的信息来说,
计算公式为:
H=- Σp ilog2pi
其中,pi是指令的使用频度 。
3)定长操作码的信息冗余量指令 指令使用频度 (pi) 使用频度 (pi)
I1
I2
I3
I4
I5
I6
I7
0.40
0.30
0.15
0.05
0.04
0.03
0.03
表 2.5 某模型机指令使用频度举例按上表数据带入公式计算 H,得
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
说明表示这 7种指令,操作码平均只需 2.17位就够了。采用 3位定长操作码表示的 冗余 为:
(实际平均长度- H)/实际平均长度计算得,(3- 2.17)/3=0.28=28%,相当大 。
4)哈夫曼编码
a)构造哈夫曼树
将指令的使用频度由小到大排序
每次选最小两个频度结合一个新节点
再按频度大小插入余下未结合的频度值中
如此重复直至全部结合完毕成根节点,1”
沿两个分支,分别用,0”或,1”来表示这样,从根节点开始,沿线到达个频度指令的代码序列就是该指令的哈夫曼编码。如下图:
1.00
0.60
0.30
0.15
0.06
0.030.03 0.030.03 0.030.04 0.030.05 0.030.15 0.030,0 0.030.40
0.09
0
0
0
0
0
0
1
1
1
1
11
I7 I6 I5 I4 I3 I2 I1
图 2.14 哈夫曼树举例
b)编码结果及其冗余频度
(pi)
指令
op长
li
op长
li
操作码 op使用哈夫曼编码利用哈夫曼概念的扩展编码表 2.6 操作码的哈夫曼编码与扩展编码
I1
I2
I3
I4
I5
I6
I7
0.40
0.30
0.15
0.05
0.04
0.03
0.03
0
10
110
11100
11101
11110
11111
00
01
10
1100
1101
1110
1111
1
2
3
5
5
5
5
2
2
2
4
4
4
4
结果如上表
平均码长,
Σp ili=0.4*1+0.3*2+0.15*3+0.05*5
+0.04*5+0.03*5+0.03*5
=2.20
冗余,(2.2-2.17)/2.2=1.36%<<28%
c)缺点,操作码不规整,7条指令,4中码长,不便于译码,不适用。
5)扩展操作码编码
a)思想,结合哈夫曼编码与定长二进制编码思想,只用有限几种码长 (本例两种 ),仍是概率大的用长码,小的用短码。以此来缩短码长,
降低冗余量,便于译码。
b) 编码结果及冗余
结果如上表
平均码长,Σpili=2.30
冗余,(2.3-2.17)/2.3=5.65%<<28%
c)优点,冗余略高于哈夫曼编码,但远远小于定长编码,且便于译码,比较适用。
编码方式 整个操作系统所用指令的操作码总位数 改进百分比
(%)
定长 8位
4- 6- 10位哈夫曼法
301 248位
184 966位
172 346位
0
39
43
表 2.7 B- 1700操作码编码方式比较
d)常用扩展方法
等长扩展法如 4- 8- 12等,早期用。
15/15/15编码法适用于 pi在前 15种指令中比较大,而在 30种指令后急剧减小的情况。
8/64/512编码法适用于 pi在前 8种指令中比较大,且之后的
64种指令的 pi也不是过小时。
衡量标准,码长 Σp ili最短。
15/15/15编码法 8/64/512编码法
0000
0001
1110
1111 0000
1111
1111
1111 1111
1111 1111
1111 1111 1110
1110
0001
0000
0001
1111 1111
0000
0001
0111
1000 0000
1000 0001
1111 0111
1000 1000 0000
1000 1000 0001
0111

… …
… … …

… …
… … …
15
15
15
8
64
512
15/15/15编码法和 8/64/512编码法
3.指令字格式的优化只对操作码表示优化,不对地址码表示和寻址方式采取措施,程序所需总位数难以减少。
1)问题的提出:主存按位编址,指令一条条挨着存贮,会使程序所需总位数减少,但是速度明显下降。为了不降低访存取指速度,就要按整数边界存贮。这样,操作码优化表示所带来
li的缩短只是使指令字内出现空白浪费 (冗余 )。
显然只有地址码也是可变长的,才能用上空白部分。下面分析定长 (L)指令字情况:
显然,只有地址码可变长,才能避免冗余,
发挥操作码优化表示所带来的作用。
定长指令字长度 L
地址码地址码地址码空白浪费空白浪费
li
limin
limax
等长地址码发挥不出操作码优化的作用
k k+1 k+2
k+4 k+5
k+6 k+7
k+8 k+9
k
+3

主存宽度任意长度指令在按位编址主存中存贮的情况
1)地址码长度优化:
a)从访存范围考虑,地址码越长越好。
b)在满足寻址范围前提下,可以缩短其位数。
基址寻址,指明基址寄存器号
B为基址寄存器号,存放 24位基地址。
B D
指令中访存地址码部分
4位 12位
相对寻址,指明相对位移,相对位移不会太大。
地址分段,地址由段号和段内地址组成。段内转移,不需指明段号;断间转移,指明段号。
寄存器间接寻址,操作数存在寄存器内或经寄存器访存,则地址码宽度只需窄到指明寄存器号就可以了。
段号 段内地址
多种地址制,地址字段个数多,指令功能强,
宏观所需指令条数少。且同一地址制可采用多种地址形式和长度,或利用空白处存放直接操作数及常数。
地址码地址码地址码地址码地址码地址码操作码操作码操作码操作码操作码操作码
RR
R
RR立即数访存地址 S
三地址制二地址制一地址制
R-R型
R-R型立即型
4位 4位 4位 4位
16位定长指令字图 2.18 在定长指令字内实现多种地址制图 2.19 同种地址制下的多种地址形式和长度例如,A+B C
单地址实现,取 A,加 B,送 C三条指令。
多地址实现:只需一条指令。
以上是对定长指令,还可考虑多种指令长度,
更能减小信息冗余,缩短程序长度。
通过不同的寻址方式、地址制、地址形式和地址码长度及多种指令字长与可变长操作码的优化表示相结合,可以设计冗余尽可能小的指令字以节省空间。
加 A B C
例如,IBM370 的指令格式
R1,R2,R3为操作数寄存器和结果寄存器号
B1,B2表示基址寄存器号
D1,D2表示相对位移他们分别由操作码的最高二位状态来指明其长度和格式,规则为:
00为 RR格式,指令字长 16位
01为 RX格式,指令字长 32位
10为 RS或 SI格式,指令字长 32位
11为 SS格式,指令字长 48位
R代表寄存器,S代表存贮器,X代表变址,I
代表立即操作数。
操作码 B2 D2
8 4 4 12
RX
操作码 操作数长度 (S) B1 B2D1 D2
8 8 4 412 12
SS
操作码 常数 L B1 D1
8 8 4 12
SI
R1 X2
4操作码 B2 D2
8 4 4 12
RS R1 R3
4
4 4 4 128
操作码RR R1 R2
4 48
图 2.20 IBM 370指令的主要格式
2.3.2按 CISC方向发展与改进指令系统
1.CISC的改进思路如何进一步增强原有指令的功能以及设置更为复杂的新指令取代原来由子程序完成的功能,
实现软件功能的硬化。结果是系统愈加庞大、复杂,称为复杂指令系统计算机。 (Complex
Instruction Set Computer,CISC)。
2.CISC的改进途径 (三个 )
1)面向目标程序的优化实现来改进
a)目的:提高各机器语言目标程序的效率,
减少存贮空间,提高运行速度,容易实现。
b)思路:
按统计出的指令和指令串的使用频度来分析改进静态使用频度:对程序中出现的指令及指令串进行统计得到的百分比。目的是减少目标程序所占用的存贮空间。
动态使用频度:在目标程序执行中对指令和指令串统计的百分比。目的是减少目标程序的执行时间。
高频度指令 — 增强功能,加快速度,缩短字长。
低频度指令 — 功能合并到高频指令中或取消。
高频指令串 — 用新指令取代 — 可以减少访存,
加快速度,缩短长度。
如下面的例子:
成组取 R1 R3 B2 D2
0 8 12 16 20 31
成组传送 B1 D1
0 8 16 20 32
L
36 47
D2B2
条件转移 M1 R2
0 8 12 15
条件转移 M1 X2
0 8 12 16 20 31
B2 D2
增设强功能的复合指令,取代原先由宏指令或子程序实现的功能,可以提高运算速度,减少程序调用的额外开销,也减少子程序所占用的空间。
例如 IBM 370上增设的,翻译,指令的形式为:
翻译 L B1 D1 B2 D2
0
8 16 20 32 36 47
原则一:不删改原有指令,增设强功能指令替代对“瓶颈”有直接影响的常用指令,以满足软件向后兼容,从而新指令程序效率更高。
原则二:尽量减少程序中如存取、传送、转移、比较等不执行数据变换的非功能型指令,增加真正执行数据变换的加、减、乘、除等功能型指令的比例。
2)面向高级语言的优化来实现
a)目的:尽可能缩短高级语言和机器语言的语义差距,以利于支持高级语言的编译系统,缩短编译程序的长度和编译所需的时间。
b)思路:
对源程序中各高级语言的使用频度进行分析由于不同的高级语言用途不同,语句使用频度差异很大,因此指令系统难以对各种语言都是优化的,只能对用户面向的高级语言优化。
是零碎、局部的。
面向编译,优化代码生成来实现增强系统结构的规整性,减少特殊用法,让所有运算对称、均匀地在存贮 (寄存 )单元进行,
同等对待所有的存贮 (寄存 )单元。否则编译时会为优化管理通用寄存器的使用而增加辅助性开销。
高级语言与机器语言的差距是造成代码复杂、
效率低的原因。但系统结构点也不能太过靠近某一高级语言而造成与其它语言差距更大,如下图:
原则,指令系统设计为比较的通用和基本,
对每种语言都不远非是优化的,只要通过编译能比较高效的实现即可。
改进指令系统使系统节点与各种语言的语义差距都减小,
如上图,把系统结构节点右移。


右移
COBOL
BASIC FORTRAN
PL/I
APL
Von Neumann型系统结构各种语言与传统机器指令系统结构的语义差距
动态切换分别面向各种高级语言的多种指令系统、多种系统结构,并能动态切换。
BASIC
虚拟机面向
BASIC
系统结构
FORTRAN
虚拟机面向
FORTRAN
系统结构
COBOL
虚拟机面向
COBOL
系统结构操作系统
SDL
虚拟机面向
SDL
系统结构微程序机 器
B- 1700具有多种系统结构
发展高级语言机器进一步增大解释比重,直至机器语言与高级语言几乎没有语义差距。此时,高级语言机器不需要编译。
两种形式:
一种是让高级语言直接成为机器的汇编语言,
使高级语言和机器语言基本一一对应,称这种为间接执行高级语言机器。
另一种是高级语言本身作为机器语言,由硬件或固件对其语句逐条解释执行,不需编译和汇编,称为直接执行高级语言机器。
3)面向操作系统的优化来实现
a)背景,OS几乎占用计算机系统资源的三分之一,甚至更多。若系统结构对 OS的支持不够,
不能使 OS中的进程管理、设备管理、文件管理、
中断处理等比现有系统有更好的性能和更高的效率,计算机系统就难以得到发展。而且,OS
的实现更深依于赖系统结构是否为它的实现提供相应的硬件支持。
b)目的:缩短 OS与系统结构的语义差距,减少运行 OS所需的辅助时间,节省 OS软件所占用的存贮空间。
c)思路:
统计和分析 OS中常用指令 (串 )的使用频度
增加专用于 OS的新指令
硬化或固化子程序的某些功能硬件实现用于提高系统执行效率和速度,减小 OS的开销。适用于能确切定义、稳定的机构型功能。 (进程管理、信息保护、存贮管理等 )
软件实现用于提供系统灵活性。这一方法不适用因环境而异、不稳定的策略型功能。 (上机费用、作业排队、用户标示等)
发展功能分布处理系统结构
A
进程 B进程主存
(按字节编址 )
0 7
取 C
存 C
增值
K1
L
C

K
公用区图 2.25 A,B进程共用 K公用区独立给 C增值条件码
A进程 B进程
A1:测试与置定 L B1:测试与置定 L
条件转移 A1 条件转移 B1
调用公用区 K 调用公用区 K
K公用区子程序
K1:取 C
增值存 C
清除 L
返回测试与置定 未用 B2 D2
0 8 16 20 31
采用比较与交换指令后,A给 C增值改成:
取 R1,C (C) R1,
A1:取 R3,R1 (R1) R3
增值 R3 (R3)+1 R3
比较与交换 若 (R1)= (C),(R3) C,置条件码为 00
R1,R3,C 若 (R1)= (C),(C) R1,置条件码为 01
条件转移 A1 若条件码为 01进行转移比较与交换 B2 D2
0 8 16 20 31
R1 R3
12
3.CISC的结构和思路存在的问题
1)指令系统庞大,设计麻烦,周期长,成本高,
可靠性低,查错和纠错代价大。
2)指令操作烦杂,执行速度很低。
3)难以优化编译生成真正高效的机器语言。
4)各种指令使用频度不高,且差别大,有些指令利用率很低,降低系统性价比。
2.3.3按 RISC方向发展与改进指令系统
1.RISC的改进思路通过减少指令总数和简化指令功能来降低硬件设计的复杂度,提高指令执行速度。按这种途径和方向发展,使机器指令精练简单,因此称为精简指令系统计算机 (Reduced Instruction Set
Computer,RISC)。
2.RISC的设计原则
1)只选择使用频度高的指令,增加少量有效支持 OS和高级语言实现的有用指令,减少条数。
2)减少系统可用的寻址方式,简化指令的格式,
限于两种内,让全部指令等长。
3)让所有指令都在一个机器周期内完成。
4)增加通用寄存器以减少访存操作,所有指令只有存、取可以访存,其它都在寄存器间进行。
5)指令多数用硬联控制,少数用微程序控制。
6)以简单有效的方式支持高级语言的实现。
3.RISC结构采用的基本技术
1)遵循按 RISC机器一般原则设计的技术。
2)在逻辑上采用硬联实现和微程序固件实现相结合的技术。
3) 在 CPU中设置数量较大的寄存器组,并采用重叠寄存器窗口的技术。
4) 指令的执行采用流水和延迟转移技术。
5)采用认真设计和优化编译系统设计的技术。
第二章小结
1.数据表示
1)概念,能由机器硬件直接识别和的引用的数据类型。
2)与数据结构的关系
3)高级数据表示
a)自定义数据表示
带标志符的
数据描述符
b)向量数组数据表示
c)堆栈数据表示
4)引入数据表示原则
a)有利于系统效率提高 (从时、空考虑 )
b)有利于通用性、利用率提高
5)浮点数尾数基值大小选择
a)基值选择
浮点数一般格式
rm一定,阶码 p和尾数 m对浮点数的影响
p表示数的范围,m表示数的精度
p,m定,rm对数的影响
rm增大:
增大表示范围增加表示个数减少移位次数降低精度损失提高运算速度降低表示精度分布越加离散
6)下溢处理
a)截断法
b)舍入法
c)恒置,1”法
d)查表法
2.寻址方式
1)概念,是指指令按什么方式询问 (或访问 )到所需要的操作数或信息的。
2)逻辑地址与物理地址的关系
3)程序再定位方法
a)静态再定位
b)动态再定位
4)基址与变址的关系
5)界限保护
6)物理空间的信息分布
a)存贮原则,整数边界存贮
b)利弊:节省时间,浪费空间
3.指令系统的设计与改进
1)指令格式的优化
a)操作码的优化表示
信息熵的计算
哈夫曼编码、扩展操作码编码方法
各种编码的冗余计算
b)指令字格式的优化在操作码优化的基础上,对地址码优化。
地址码优化的方式
基址寻址
相对寻址
地址分段
间接寄存器寻址
多种地址制
2)按 CISC方向发展与改进系统
a)改进思路
b)途径
面向目标程序的优化实现来改进
面向高级语言的优化实现来改进
面向操作系统的优化实现来改进
c)存在问题
3)按 RISC方向发展与改进系统
a)改进思路
b)原则
c)采用的基本技术课后习题处理
1.某模型机有 9条指令,其使用频度为:
ADD(加 ) 30%; SUB(减 ) 24%
STO(存 ) 7% ; JMP(转移 ) 7%
SHR(右移 ) 2% ; CLA(清加 ) 20%
STP(停机 ) 1% ; JOM(按负转移 ) 6%
CIL(循环左移 ) 3% ;
要求都有两种机器字长,都按双操作系统指令格式编排,采用扩展操作码,并限制只能有两种操作码长。设该机有若干个通用寄存器,主存为
16位宽,按字节编址,采用整数边界存贮,任何指令都要求在一个主存周期中取得,短指令为寄存器 — 寄存器型,长指令为寄存器 — 主存型,主存地址应能变址寻址。
(1)不考虑其他要求,设计全 Huffman操作码,
并计算平均码长。
(2)考虑题目其他全部要求,设计优化的实用指令操作码形式,并计算平均码长。
(3)该机允许使用多少个可编址的通用寄存器。
(4)画出该机两种指令字格式,并标出各字段的位数。
(5)指出访存操作数地址寻址的最大相对位移量为多少个字节。
【 解答 】 (1)Huffman树的形式如下:
0.070.06
0.01 0.02
0.03
0.06 0.07
0.30 0.20 0.24
0.03
0.12 0.14
0.26
0.440.56
1.000
0
0
0
0
0
0
0
1
11
1
1
1 1
1
由上面的图可以得到 Huffman编码为:
ADD(加 ) 30% 01
SUB(减 ) 24% 11
CLA(清加 ) 20% 10
STO(存 ) 7% 00 11
JMP(转移 ) 7% 00 10
JOM(按负转移 ) 6% 00 01
CIL(循环左移 ) 3% 00 00 1
SHR(右移 ) 2% 00 00 01
STP(停机 ) 1% 00 00 00
平均码长为 Σpili= 2.61位
(2)采用 2— 5扩展的操作码编码为:
ADD(加 ) 30% 00
SUB(减 ) 24% 01
CLA(清加 ) 20% 10
STO(存 ) 7% 11 00 1
JMP(转移 ) 7% 11 01 0
JOM(按负转移 ) 6% 11 00 0
CIL(循环左移 ) 3% 1110 0
SHR(右移 ) 2% 11 01 1
STP(停机 ) 1% 11 10 1
平均码长为 Σpili= 2.78位
(3)该机允许使用的可编址的通用寄存器个数为:
23= 8
(4)短指令格式为长指令格式为
2位 3位 3位
OP R1 R2
3位3位5位 5位
OP R1 X d
(5)访主存操作数地址寻址的最大相对位移量为
32个字节 (- 16— + 15个字节 )。
作业:
1,寻址方式 物理地址 动态再定位动态使用频度 CISC Huffman压缩概念
6,7,12,13.