收藏 分享(赏)

第二章数据表示、寻址方式与指令系统.ppt

上传人:11xg27ws 文档编号:4725726 上传时间:2019-01-09 格式:PPT 页数:255 大小:1.16MB
下载 相关 举报
第二章数据表示、寻址方式与指令系统.ppt_第1页
第1页 / 共255页
第二章数据表示、寻址方式与指令系统.ppt_第2页
第2页 / 共255页
第二章数据表示、寻址方式与指令系统.ppt_第3页
第3页 / 共255页
第二章数据表示、寻址方式与指令系统.ppt_第4页
第4页 / 共255页
第二章数据表示、寻址方式与指令系统.ppt_第5页
第5页 / 共255页
点击查看更多>>
资源描述

1、第2章,数据表示、寻址方式、指令系统,2.1 数据表示,2.1.1数据表示:能由机器硬件直接识别和引用的数据类型。,说明: 1.所谓“硬件能够直接辨认与处理”,指的是对该数据类型的各种运算操作都有相应的实现硬件电路。2.硬件不能直接辨认与处理的数据类型就要根据数据结构的知识编制软件转化为硬件能处理的数据类型。,数据结构(补),数据结构(Data Structure)数据结构指的是数据之间的相互关系,即数据的组织形式。,1.数据的逻辑结构(Logical Structure ):数据元素之间的逻辑关系。,2.数据的存储结构(Storage Structure):数据元素及其关系在计算机内的表示。

2、,3.数据的运算:对数据施加的操作,数据表示与数据结构的关系,不同的数据表示可为数据结构的实现提供不同的支持。表现为实现效率和方便性的不同。,数据结构和数据表示是软硬件的交界面。,数据表示为数据结构实现提供支持的实例,处理运算符和数据类型的关系 高级语言:数据类型直接与数据本身相联系,运算符通用。 传统机器语言:用操作码指明操作数类型。,2.1.2 高级数据表示,例:计算实数I,J相加 FORTRAN : REAL I,JI=I+J,2.1.1自定义数据表示,1. 标志符数据表示:机器中的每个数据都带有标志位。,主要优点:1)简化了指令系统和程序设计。2)简化了编译程序。3)便于实现一致性较验

3、。4)能由硬件自动变换数据类型。5)支持数据库系统的实现与数据类型无关的要求。6)为软件调试和应用软件开发提供了支持。,可能带来的问题:1)每个数字因增设标志符,会增加程序所占的主存空间。,2)采用标志符会降低指令的执行速度。,2. 数据描述符:描述符与数据分开存放。用于指明所访问的数据是整块的还是单个的,访问所需的地址及其它信息。,描述符的固定代码,块内的元素个数,首元素的地址,指令,经描述符访存取操作数,用描述符描述二维阵列,阵列描述符,三元素向量,34二维阵列A,2 向量数组数据表示,增设向量、数组的数据表示,构成向量机。,位移量,向量的 有效长度,向量的长度,基地址,起始地址 (基地址

4、位移),向量编址所用的参数,向量第一个元素的地址,2.3堆栈数据表示,有堆栈数据表示的机器称为堆栈机器。,堆栈机器较通用寄存器的不同: 1)有高速寄存器组成的硬件堆栈,并附加控制电路。 2)有丰富的堆栈操作指令且功能很强,可直接对数据进行操作。 3)有力地支持了高级语言程序的编译。 4)有力地支持了子程序的嵌套和递归调用。,用堆栈实现子程序的嵌套和递归调用,2.1.3.引入数据表示的原则,引入该数据表示后,系统的效率是否提高,即是否减少了实现时间和存储时间。,引入该数据表示后,其通用性和利用率是否提高,减少实现时间的途径: 1.减少主存和处理机之间传送的信息量。 2.减少辅助操作。,2.1.4

5、. 浮点数尾数基值大小和 下溢处理方法的选择,1. 浮点数尾数基值的选择,浮点数的一般格式,当机器字长相同时,用浮点数表示实数比用定点数表示有更大的可表示数范围。,浮点数可表示实数域中的值,阶值的位数p主要影响可表示区的大小,即可表示数的范围。,尾数的位数m主要影响可表示区中能表示值的精度。,0,实数在数轴上连续分布的,但受机器字长的限制,浮点数只能表示离散值,数的表示精度:用可表示数来近似实数时,产生的误差大小。,当阶值位数p一定时,尾数所采用的进制会影响到数的可表示范围、精度及数在数轴上分布的离散程度。rm浮点数位数的基m尾数的机器位数mrm进制时,尾数的位数。,以 为尾数基值得浮点数,当

6、其尾数右移一个 进制数位时,为保持数值不变,价码才增1。,表 2.1 采用尾基为rm的浮点数表示的特性及其举例,条件:非负阶、 规格化、正尾数,阶值:二进制p位 尾数:rm进制m位,若p=2,m=4,当rm=2时,当rm=16时,可表示的最小尾数值,可表示的最大尾数值,最大阶值,可表示的最小值,可表示的最大值,可表示的尾数个数,可表示阶的个数,可表示数的个数,1 rm-1,尾数全为0的,为机器零,不作为可表示数。 最小的尾数为小数点后第一个数位为1,其余全为0的数,1/2,1/16,最大尾数应为,尾数的各位的值为rm-1。若在最后一位加1,尾数即变为1。又1=rm -m,1-( 1 rm-m)

7、,15/16,15/16,2p-1,3,3,浮点数的值为:rm阶值尾数值 最小值应为阶值和尾数同时最小。最大值则为阶值和尾数同时最大,rm0rm-1,1/2,1/16,rm (2p-1) (1-rm -m ),7.5,3840,rm进制数位的每个数位均可以有0(rm-1)个选择,共有rm个码,则尾数编码的总个数为rmm。非规格化尾数的个数为占总数的1/rm 则可表示的尾数个数为 rmm- rmm/rm,浮点数的值为:rm阶值尾数值 最小值应为阶值和尾数同时最小。最大值则为阶值和尾数同时最大,rmm (rm-1)/rm,8,15,2p,4,4,可表示数的个数=可表示阶的个数可表示的尾数的个数,2

8、p rmm (rm-1)/rm,32,60,规格化正尾数:正尾数小数点后的第一个rm进制数位不是0的数。 最小的正尾数值为:1rm-1 最大尾数值为:1-rm-m,所谓规格化正尾数,就是正尾数小数点后的第1个rm进制数位不是0的数。因为尾数为全“0”的数是机器零,不作为机器中可表示的数。所以,最小正尾数值应当是rm进制尾数的小数点后第1个rm进制数位为“1”,其余数位为全“0”的数值,即1r-1m。最大正尾数值当然是rm进制尾数各数位均为r-1m 。可以设想,在小数点后, rm进制的第m个数位上加上1,即加上rm-m ,就会使整个尾数值变为1。所以,可表示的最大尾数值应当是为1-rm-m 。,

9、由于是非负阶,最小阶应当是阶值部分为全“0”,所以,最小阶为0。最大阶应当是阶值部分p位为全“1”,所以,最大阶为2p-1。阶的个数由阶值0到2p-1,共有2p个。按浮点数表示格式的含义,浮点数的值应当是r阶值m尾数值。浮点数可表示的最小值应当是阶为非负阶的最小值0,尾数为规格化最小正尾数值,所以,可表示浮点数的最小值应当为r0mr-1m=r-1m;可表示浮点数的最大值应当是阶为正的最大值2p-1,尾数为规格化正尾数最大值,所以,可表示浮点数的最大值应当为 。,可表示的浮点数规格化数的总个数应当是可表示阶的个数与可表示尾数的个数的乘积。由于尾数m个rm进制数位中,每个数位均可以有0(rm-1)

10、,共有rm个码,所以,尾数的编码总个数为rmm个,但应当去掉小数点后第1个rm进制数位是0的那些非规格数。显然,非规格化尾数的个数占了全部尾数可编码总数的1/rm的比例。所以,可表示的浮点数规格化数的总个数就为2prm m(1-1/rm)。,讨论尾数rm取不同值的影响,当然是在相同的机器位数,即相同的阶值位数p、机器尾数位数m的情况下,不同rm对特性参数的影响。表2-1右部列出了当机器在p=2、m=4时,rm分别取2和16时的特性参数值。为了对比,表2-2和表2-3列出了这两种情况下所表示的具体值。由此可见,机器的p、m一定时,尾数基值rm取不同值的影响情况。为了进一步简化,又以rm是2的整数

11、幂来讨论,所得的结论对rm不是2的整数幂的情况也是符合的。,表2-2 p=2、m=4、rm=2的规格化浮点数,2-1+2-2+2-4=1/2+1/4+16,浮点数值=rm阶值*尾数 21*9/16,表2-3 p=2、m=4、rm=16的规格化浮点数,(1)可表示数的范围。随rm的增大,可表示数的范围增大。换句话说,对于大的rm值,为表示相同范围的数,其阶值位数p可以减少。,由表分析得:以rm为2的整数幂进行讨论,(2) 可表示数的个数。可表示数的个数为rm的增大使可表示数的个数增多。很容易得出,rm用 16 与用 2 的可表示数的个数之比为,(3) 数在实数轴上的分布。表示比e指的是在相同p、

12、m位数时,在rm=2 的可表示最大值以内,采用rm2 的可表示浮点数个数与rm=2 的可表示浮点数个数之比。,由于采用的rm2 时,可表示的最大值总比rm=2 的可表示的最大值要大,总可以找到一个其尾数值为最大的1-2-m,阶值为 q, 使得,即 , 从而得出此时的q值为,大的rm时,共有2m(1-rm-1)(q+1)种可表示的值都在rm=2所表示的最大值以内。于是表示比,将q=(2p-1)/log2 rm代入上式得,实际机器中阶码位数p一般都较大,至少p=8,这时若rm取 16, 则表示比,可见,rm越大,在与rm =2的浮点数相重叠的范围内,数的密度分布要稀得多。,(4) 可表示数的精度。

13、可表示数的精度随rm增大而单调下降。,(5) 运算中的精度损失。运算中的精度损失是指由于运算过程中尾数右移出机器字长使得有效数字丢失后所造成的精度损失rm愈大,尾数右移的可能性愈小,精度的损失就越小。,(6) 运算速度。由于rm大时发生因对阶或尾数溢出需右移及规格化需左移的次数显著减少,因此运算速度可以提高。,rm的选取要根据应用需要,综合平衡。,巨、大、中型机上宜取大的rm 小、微型机上宜取小的rm,2.浮点数尾数的下溢处理方法,其方法是将尾数超出机器字长的部分截去。最大误差在整数时接近于1。例如:7.99999截断为7。分数运算中接近于2-m (m为尾数位数)。例如:.0111111截断为

14、.01误差大多为负误差,少数为无误差截断。概率分布均匀。好处是实现最简单,不增加硬件,不需要处理时间,但由于最大误差较大,平均误差大且无法调节,因而已很少使用。,(1) 截断法,这种方法的好处是实现简单,增加的硬件很少,最大误差小,平均误差接近于零。主要缺点是处理速度慢,需要花费在数的附加位加1以及因此产生进位的时间。最坏情况下可能需要从尾数最低位进位至最高位,甚至发生尾数上溢而必须再进行右规。所以在中低速机器上或要求精度损失尽可能小的场合下使用较多。,其方法是在机器运算的规定字长之外增设一位附加位, 存放溢出部分的最高位。,(2)舍入法,其方法是将机器运算的规定字长之最低位恒置为“1”。 方

15、法的好处是实现最简单,不需要增加硬件和处理时间,平均误差趋于0。 主要缺点是最大误差最大,比截断法的还要大。多用于中、高速机器。,(3) 恒置“1”法,其方法是用ROM或PLA存放下溢处理表,如图2-10所示就是用2k个字的ROM存放下溢处理表,其k位地址使用尾数最低的k-1位和准备舍弃掉的最高位状态,读出的内容就是对应k-1位的下溢处理结果。ROM中下溢处理表内容可根据情况由设计者事先填好。,(4)查表舍入法,ROM舍入法的原理,2kROM,近似值:,K-1低位,存放下溢处理的表,尾 数,2.2 寻 址 方 式,2.2.1 寻址方式的三种面向,面向寄存器的寻址方式操作数可以取自寄存器或主存,

16、结果大多保存在寄存器中,少量的送入主存。 面向堆栈的寻址方式主要访问堆栈,少量访问主存或寄存器 面向主存的寻址方式主要访问主存,少量访问寄存器。,注:在同一系统结果中,应根据应用选择一种面向的寻址为主,再辅以其他面向的寻址,可以互相取长补短。, 寻址方式在指令中一般有两种不同的指明方式。不同机器可用其中的一种指明方式。一种是占用操作码中的某些位来指明。,2.2.2寻址方式在指令中的指明,另一种方式不占用操作码,而是在地址码部分专门设置寻址方式位字段指明。 寻址方式位的寻址灵活,操作码短,但需专门的寻址方式位字段。就操作码和寻址方式位的总位数来看可能会比占用操作码中某些位来指明的方式要长。,逻辑

17、地址:程序员编程用的地址。 主存物理地址:程序在主存中的实际地址。,2.2.3程序在主存中的定位技术,早期计算机逻辑地址空间和主存物理地址空间相同。 现代计算机逻辑地址空间和主存物理地址空间不一致,需要进行地址空间的转换。,逻辑地址空间到物理地址空间的转换,静态再定位:利用VonNeumann型机器指令可修改的特点,在目的程序装入主存时,由装入程序用软件方法把目的程序的逻辑地址变换成物理地址,程序执行时物理地址不再改变。,程序基点(a),逻辑(形式)地址,地址加法器,指令地址码,基址寄存器,物理有效地址,动态再定位:在执行每条指令时才形成访存物理地址。,1)变址寻址是对诸如向量、数组等数据块运

18、算的支持,以便于实现程序的循环。2)基址寻址是对逻辑地址空间到物理地址空间变换的支持,以利于实现程序的动态再定位。3)基址寻址和变址寻址都会同时用到。4)基址寻址将装入程序形成物理地址改成由地址加法器硬件形成,加快了地址变换的速度。,“基址寻址”与“变址寻址”的区别与联系,地址有效性的判断:,引入下、上界寄存器,将下、上界值存入其中,每当形成有效地址时,都进行有效性判断。,空间的始点,下界,上界,由硬件辅以软件来保证每道程序只访问给定的地址空间。,注意: )多道程序公用共用区时,可为每道程序分别指定上、下界寄存器。指令提供界号。 )地址加界法要求程序员所用编制空间不能超过实际主存的容量。,2.

19、2.4物理主存中信息的存储分布,为了让任何时候所需的信息都只用一个存储周期访问到,就要求信息在主存中存放的地址必须是该信息宽度(字节数)的整数倍。否则,可能发生信息跨主存边界存放,此时应被认为地址有错,不予访问。,字节信息地址为 半字信息地址为 0单字信息地址为 0 0双字信息地址为 0 0 0,信息在主存中的存放地址为:,2.3指令系统的设计和优化,2.3.1指令系统设计的基本原则,指令系统的设计包括指令的功能(操作类型、寻址方式和具体操作内容)和指令格式的设计。运算类指令的功能与前述数据表示的选择密切相关,指令中地址码的设计则与寻址方式有着直接联系。指令系统的设计应当由编译程序设计人员同系

20、统结构设计人员共同配合来进行。,(1)根据应用,初拟出指令的分类和具体的指令;(2)试编出用该指令系统设计的各种高级语言的编译程序;(3)对各种算法编写大量测试程序进行模拟测试,看指令系统的操作码和寻址方式效能是否都比较高;(4)将程序中高频出现的指令串复合改成一条强功能新指令,即改用硬件方式实现;而将频度很低的指令的操作改成用基本的指令组成的指令串来完成,即用软件方式实现。,指令系统的设计步骤:,非特权型指令主要供应用程序员使用,也可供系统程序员使用。非特权型指令包括算术逻辑运算、数据传送、浮点运算、字符串、十进制运算、控制转移及系统控制等子类。特权型指令只供系统程序员使用,用户无权使用。用

21、户只有先经访管指令(非特权型)调用操作系统,再由操作系统来使用这些特权指令。其中,有“启动I/O”(多用户环境下)、停机等待、存储管理保护、控制系统状态、诊断等子类。,编译程序设计者要求指令系统应设计成有:(1)规整性。对相似的操作做相同的规定。(2)对称性。,(3)独立性和全能性。如果有多种程序选择实现同一种功能,为减少编译时哪种实现好的分析,应限定操作只能有一种选择方式。(4)正交性。在指令各个不同含义的字段,如操作类型、数据类型、寻址方式等,在编码时应互不相关,相互独立。(5)可组合性。让指令系统中所有操作对各种寻址方式和数据类型都能适用。(6)可扩充性。要留有一定数量的冗余操作码,以便

22、以后扩充新指令。,(1)指令码密度适中。高密度指令指的是强功能复合指令,它可用于替代功能强的指令串的功能。(2)兼容性。对系列机而言,为保证软件向后兼容,只能增加指令,不能删除和更改指令的功能。,系统结构设计者则还希望:,(3)适应性。当工艺技术发展变化时,指令系统仍可以方便地用硬件来实现。,指令是由操作码和地址码两部分组成的。就指令格式的优化来说,就是指如何用最短的位数来表示指令的操作信息和地址信息,使程序中指令的平均字长最短。,2.3.2指令操作码的优化,研究操作码的优化表示,主要是为了缩短指令字长,减少程序总位数及增加指令字能表示的操作信息和地址信息。要对操作码进行优化表示,就需要知道每

23、种指令在程序中出现的概率(使用频度),这一般可通过对大量已有的典型程序进行统计求得。,设某模型机共有n(n=7)条指令,使用频度如下表。操作码用 定长码表示需log2n(即3位),, 由数据可得 。说明表示这7种指令的操作码平均只需2.17位即可。现在用3位定长码表示,信息冗余为,按信息论观点,当各种指令的出现是相互独立时(实际并不都是如此), 操作码的信息源熵(信息源所含平均信息量),利用哈夫曼算法,构造哈夫曼树。,0.06,0.09,0.15,0.30,0.60,1.00,0.03,0.03,0.04,0.05,0.15,0.30,0.40,I7,I6,I5,I4,I3,I2,I1,1,1

24、,1,1,1,0,0,0,0,0,0,操作码的哈夫曼编码,结论: 1)哈夫曼短码不可能是长码的前缀,保证了解码的唯一性和实时性。,2)哈夫曼编码不唯一。,3)只要采用全哈夫曼编码,操作码的平均码长肯定是惟一的,而且是可用二进制位编码平均码长最短的编码。,本例中,操作码的平均码长:,这种编码的信息冗余为:,4)缺点,码长种类太多,不便于译码,因而不能实现。, 扩展操作码编码是界于定长二进制编码和全哈夫曼编码之间的一种编码方式,操作码长度不是定长的,但只有有限几种码长。,操作码的平均码长:,这种编码的信息冗余为:,操作码扩展的方式:,早期机器上采用等长扩展例:4-8-12 现在因选择的扩展标志不同

25、而又不同的扩展方法。例:15/15/15,8/64/512,15/15/15 编码法和 8/64/512 编码法,结论:1)扩展操作码也必须遵守短码不能是长码的前缀,扩展操作码的编码不惟一,平均码长也不惟一。2)问题是如何找出一种平均码长尽可能短,又能使码长种类数不能过多而又便于优化实现的方案。,主存按位编址,指令字又不按整数边界存储,而是逐条紧 挨着存储,操作码的优化表示会直接带来程序总位数的减少。,2.3.3指令字格式的优化,为了不降低访存取指令的速度,就要维持指令字按整数边界存储。,地址码可变才能利用空白浪费的区域,在满足很大寻址范围的前提下,是可以通过各种办法来缩短指令中的地址码位数的

26、。如IBM370的指令中,为访存采用基址寻址,地址码可有如下形式:,基址寄存器号,当基地址采用专门的寄存器存放,指令中不必显式指明,则指令中地址码位数可进一步缩短。即使在指令中同时采用基址和变址,如IBM370指令中访存地址有如下形式:,实际应用中各种指令的操作数个数会有不同,因此,可根据需要让指令系统采用多种地址制。,同一种地址制还可采用多种地址形式和长度,也可以用空白处来存放直接操作数或常数等,如果让最常用的操作码最短,其地址码字段个数越多,就越能使指令的功能增强,越可以从宏观上减少所需的指令条数。 例如,为实现A+BC,采用单地址指令需经取A、加B、 送C 3 条指令完成, 采用 3 地

27、址指令,综上所述,指令字格式优化的措施概括起来包括如下几点:(1)采用扩展操作码,并根据指令的频度pi的分布状况选择合适的编码方式,以缩短操作码的平均码长;(2)采用诸如基址、变址、相对、寄存器、寄存器间接、段式存放、隐式指明等多种寻址方式,以缩短地址码的长度,并在有限的地址长度内提供更多的地址信息;(3)采用0、1、2、3等多种地址制,以增强指令的功能,这样,从宏观上就越能缩短程序的长度,并加快程序的执行速度;,(4)在同种地址制内再采用多种地址形式(5)在维持指令字在存储器中按整数边界存储的前提下,使用多种不同的指令字长度。,讨 论,1)试分析比较CISC和RISC。 2)作为系统设计人员

28、,你会采取何种措施缩小不同语言的语义差距。 3)试分析总结改进CISC指令系统的方法,并就其中一种谈谈自己的实现思路。 4)假设已给定CISC指令系统,试论述将其简化为RISC指令系统的一般方法。 5)分析、解释图2-23。 6)作为系统结构设计者,面对CISC和RISC你会如何划分软硬件界面以适应人们对计算机性能的不同需求。,2.4指令系统的发展和改进,2.4.1 CISC和RISC为使计算机系统有更强的功能、更高的性能和更好的性能价格比,满足应用的需要,在机器指令系统的设计、发展和改进上有两种不同的途径和方向。一种是如何进一步增强原有指令的功能以及设置更为复杂的新指令取代原先由软件子程序完

29、成的功能,实现软件功能的硬化。按此方向发展,机器指令系统日益庞大和复杂。因此,称用这种途径设计成CPU的计算机为复杂指令系统计算机(ComplexInstructionSetComputer,CISC)。它可从面向目标程序、面向高级语言、面向操作系统三个方面的优化实现来考虑。,另一种是如何通过减少指令种数和简化指令功能来降低硬件设计的复杂度,提高指令的执行速度。按此方向发展,使机器指令系统精简,因此,称用这种途径设计成CPU的计算机为精简指令系统计算机(ReducedInstructionSetComputer,RISC)。20世纪50年代,由于硬件价格高、体积大、可靠性低,因此计算机的指令系

30、统比较简单。随着半导体技术和微电子技术的发展,这些都已不再是问题了。后来,为增强系统功能和提高速度就不断增加指令系统的复杂度。大致有以下几个原因:,(1)当高级语言(如C语言)取代汇编语言后,就不断增加新的复杂指令来支持高级语言程序的高效实现;(2)由于访主存的速度显著低于访CPU寄存器的速度,因此在功能相同时,不断增加用一条功能复杂的新指令来取代原先需一连串指令完成的功能,将程序软件固化和硬化;(3)系列机软件要求向上兼容和向后兼容,使得指令系统不断扩大和增加,而原有指令又不能取消,特别是采用微程序控制后,有人就开始滥用控制存储器,导致指令条数、功能、寻址方式和指令的格式都越来越复杂。,2.

31、4.2按CISC方向发展和改进指令系统1.面向目标程序的优化实现改进对已有机器的指令系统进行分析,看哪些功能仍用基本指令串实现,哪些功能改用新指令实现,可以提高包括系统软件和应用软件在内的各种机器语言目标程序的实现效率。该方法既能减少目标程序占用的存储空间,减少程序执行中的访存次数,缩短指令的执行时间,提高程序的运行速度,又使实现更为容易。,第一种思路是通过对大量已有机器的机器语言程序及其执行情况进行统计各种指令和指令串的使用频度来加以分析和改进。对程序中统计出的指令及指令串使用频度称为静态使用频度,按静态使用频度改进指令系统是着眼于减少目标程序所占用的存储空间。在目标程序执行过程中对指令和指

32、令串统计出的频度称为动态使用频度,按动态使用频度改进指令系统是着眼于减少目标程序的执行时间。对高频指令可增强其功能,加快其执行速度,缩短其指令字长;而对使用频度很低的指令可考虑将其功能合并到某些高频的指令中去,或在今后设计新系列机时,将其取消。对高频的指令串可增设新指令取代,这不但减少了目标程序访存取指令的次数,加快了目标程序的执行,也有效地缩短了目标程序的长度。,IBM公司曾对IBM360系统上运行的19个典型程序统计出几种常用指令的使用频度。统计表明,动、静态使用频度非常接近,只要按其中之一改进,可能既减少程序存储空间,也减少程序执行的时间。因此,只要统计其中一种频度即可,这样,可以大大减

33、少统计的工作量。根据统计,发现最常用的指令是存、取和条件转移。为此,IBM370机上增设了用单条指令实现多个数据传送的功能。如“成组取”、“成组存”、“成组传送”等指令,在一定程度上支持了向量数据和字符串数据的传送,缩短了目标程序的长度,也便于汇编语言程序设计。为改进“条件转移”指令,在IBM370机器中设置两位条件码,组合表示指令执行后或运算结果的状态。,例如,加法指令根据“和”为0、小于0、大于0或溢出分别置条件码为00、01、10或11。这样,控制型指令中的条件转移指令只需要两种形式,分别是,和,0,8,12,15,0,8,12,16,20,31,两者的差别只是转向地址形式不同,前者为寄

34、存器间接寻址,由R2指明,后者为变址基址寻址,由X2、B2和D2形成。它们都是由屏蔽码字段M1来决定按条件码的哪种状态来转移。屏蔽码M1共有4位,从左到右分别对应条件码的00、01、10、11。只要M1的最高位为1,执行条件转移指令的结果就是按该指令执行之前的条件码为00转移。只要M1的次高位为1,就按条件码为01转移,屏蔽码M1可以组合。假使条件转移指令的前面是一条加法指令,当M1为0000,相当于“不转移”;当M1为1100,相当于“和小于或等于0转移”;当M1为0110,相当于“和不等于0转移”;而当M1为1111,相当于“无条件转移”;等等。由于指令不同,条件码的含义不同,因此,通过这

35、两者的配合,只需用两种条件转移指令就能实现相当灵活的多种不同性质的条件转移控制。,又如,IBM370增加“增量”新指令取代原需借用寄存器给内存单元增值的五条指令组成的指令串功能,直接将内存单元增值,不仅节省了程序空间,也减少了执行时间。第二种思路是增设强功能复合指令来取代原先是由常用宏指令或子程序(如双倍长运算、三角函数、开方、指数、二-十进制数转换、编辑、翻译等子程序)实现的功能,由微程序解释实现,不仅大大提高了运算速度,减少了程序调用的额外开销,也减少了子程序所占的主存空间。,指令系统的改进是以不删改原有指令系统为前提的,通过增加少量强功能新指令代替常用指令串,既保证了软件向后兼容,又使按

36、新的指令编制的程序有更高的效率。这样,易于被用户接受,也是计算机生产厂家所希望的。但这种改进和机器应用范围、题目类型、工作负荷有很大关系。如果系统的速度瓶颈不在常用指令串,而在I/O通道,则不论怎样替代CPU的指令串,也是不会有效的。所以,这种替代只能是对“瓶颈”有直接影响的常用指令串,且应与应用环境、工作负荷联系起来考虑。用新指令替代常用指令串的办法实质上是尽量减少程序中如存、取、传送、转移、比较等不执行数据变换的非功能型指令的使用,让真正执行数据变换的加、减、乘、除、与、或等功能型指令所占的比例提高。,2.面向高级语言的优化实现改进面向高级语言优化实现改进就是尽可能缩短高级语言和机器语言的

37、语义差距,支持高级语言编译,缩短编译程序长度和编译时间。一种改进思路是通过对源程序中各种高级语言语句的使用频度进行统计来分析改进。对高频语句增设与之语义差距小的新指令。但不同用途的高级语言,其语句使用频度有较大差异,机器指令系统很难做到对各种语言都是优化的。所以,这种优化只能是面向用户所用的语言。,从优化代码生成上考虑,应当增强系统结构的规整性,尽量减少例外或特殊的情况和用法,让所有运算都对称、均匀地在存储(寄存器)单元间进行,对所有存储(寄存器)单元同等对待,不论是操作数或运算结果都可无约束地存放在任意单元中。否则,为优化管理通用寄存器的使用需要增加很多辅助开销。例如,VAX-11/780,

38、让减法指令既有A-BA, 又有A-BB,这种简化代码生成,对实现软件的自动生成有利。后面要讲的RISC机器进一步发展了这种思路。它的指令系统和寻址方式都比现有机器要简单、规整,绝大多数指令只需一个机器周期完成,加上通用寄存器结构的改进,使得它有更高的编译效率。如果一开始就把指令系统设计得简单、对称、规整,其作用可能会比用新指令替代常用指令串的效果还要显著。,之所以会造成代码生成复杂,效率不高的主要原因是高级语言(包括编译过程中产生的中间语言)与机器语言之间存在着很大的语义差距。至今又难以统一出一种或少数几种通用的高级语言。如果系统结构过分优化于一种高级语言实现,就会显著降低与其语义结构有较大差

39、别的其他高级语言的实现效率。可以把机器指令的语义和各种高级语言的语义差距用结构点间的“路长”表示。如图2-20所示的那样。路径越长的,其实现效率就会越低。若系统结构过分接近于某种高级语言,则该系统结构与其他高级语言间的路径可能比距离传统机器指令的系统结构的还要长,语义差距还要大,实现效率还要低。所以,往往把指令系统设计成比较通用和基本的,对每种语言都远不是优化的,只要通过编译能较高效实现即可。这就是至今一般机器的系统结构难以真正面向缩短语义差距来设计的主要原因。,然而,并不是说在保持通用性的前提下,就不能缩小语义差距了。因此,第三种思路是设法改进指令系统,使它与各种语言间的语义差距都有同等的缩

40、小。如图2-20所示,可以把系统结构点向右移,使得它与各种语言间的路长都得到缩短。例如,IBM370通过设置“小于等于转移”之类的复合指令,对加快FORTRANDO、ALGOLDO和COBOLLOOP的实现都有好处,同等程度地缩短了系统结构与各种语言之间的语义差距。,图2-20各种语言与传统机器指令系统结构的语义差距,既然各种高级语言所要求的优化指令系统不相同,就提出了第四种思路,让机器具有分别面向各种高级语言的多种指令系统、多种系统结构。微程序的发展,特别是可写控存的采用,给这种动态结构机器的实现提供了可能。1972年的B-1700就是这种思路。它的BASIC、FORTRAN、COBOL等高

41、级语言各对应有一套由微程序解释的面向这种语言的机器指令系统和数据表示格式。工作前由操作系统根据所用高级语言切换控制存储器中所存相应的微程序,如图2-21所示,让系统结构是动态的,而不是静态的。由“以指令系统为主,高级语言为从”的方式演变成“以高级语言为主,指令系统为从”的方式,是一种面向问题自寻优化的计算机系统。,图2-21B-1700具有多种系统结构,编译主要是用翻译技术,在微程序控制的机器上,机器语言是用解释实现的。面向编译通过缩小语义差距改进指令系统的思路实际上意味着增大解释的比重,减少翻译的比重。一般,计算机系统总要设置对应多种语言的多个编译系统,因此解释的分量虽然增加了,却同时简化了

42、多个编译系统的翻译过程,从总体看是合算的。可以用机器语言到高级语言的距离远近来表示语义差距的大小,如图2-22所示。传统机器的机器指令与高级语言的语义差距很大,因此编译分量远大于解释的分量,采用上述各种面向编译缩小语义差距的想法改进指令系统后,使解释的分量显著增大,编译的分量显著减小。如果进一步增大解释的比重,直至让机器语言和高级语言几乎没有语义差距,这不就可以不要编译了吗?这就是改进指令系统的第五种思路,发展高级语言计算机(或称高级语言机器)。,图2-22各种语言的语义差距,3.面向操作系统的优化实现改进目前,操作系统几乎占用了计算机系统资源的1/3,有的甚至会超过1/2。如果系统结构对操作

43、系统支持不够,没能对操作系统中的进程管理(进程的生成、切换、撤销、进程间的同步与通信等)、存储管理(存储空间分配、信息在存储层次中的传送等)、存储保护(程序和数据的保护)、设备管理、文件管理、系统工作状态的建立和切换、中断处理等有比现有计算机系统更好的性能和更高的实现效率,计算机系统就很难得到发展。,然而操作系统的实现不同于高级语言的实现,它更深地依赖于系统结构是否为它的实现提供了相应的硬件支持。虽然从指令系统上并不能全面反映出系统结构对操作系统的支持,但至少是反映了其支持的主要方面。如指令系统中除了算术、逻辑、字符、移位、控制等常规机器指令可用于操作系统的实现外,还有相当一部分指令就是专门用

44、于实现操作系统的上述各种功能的。面向操作系统优化实现改进就是如何缩短操作系统与计算机系统结构之间的语义差距,进一步减少运行操作系统的时间和节省操作系统软件所占用的存储空间。,改进指令系统的一种思路同样是通过对操作系统中常用指令和指令串的使用频度进行统计分析来改进。但是,这种改进的效果很有限。改进的第二种思路是考虑如何增设专用于操作系统的新指令。例如,IBM公司最初在IBM360系统上并未对多个进程使用公用区的管理提供专门指令,而是给公用区设置标志位(信号灯),通过对标志位的检测、改值来防止两个以上进程同时进入公用区。结果在多道程序分时系统情况下经常发生公用区的使用混乱,于是很快增加了一条“测试

45、与置定”指令。这是为操作系统优化实现设置专门新指令的典型例子,它保证了公用区的正确使用。但实践中又发现常发生系统“死锁”的现象。,所谓死锁(DeadLock)就是有一组进程,其中每个进程都只占有为完成该进程所必需的部分资源,并未获得全部资源,从而都无法进行下去。采用“测试与置定”指令,一个进程要想进行下去,必须同时占有标志位和CPU两个资源。如果一个进程只占有标志位并未占有CPU,而另一个进程只占有CPU并未占有标志位,就出现僵持状态,使机器进入“死锁”。,为了不用标志位又能保证多个进程正确使用公用区,在IBM370系统上就增设了“比较与交换”指令。这样,既不会死锁又保证了多个进程可对公用区正

46、确使用。“比较与交换”和“测度与置定”指令不只用在单处理机上,也用在多处理机上支持操作系统实现进程间通信的同步和互斥,它们的功能是一般的机器指令所无法实现的。缩短系统结构与操作系统的语义差距的第三个思路是把操作系统中频繁使用的,对速度影响大的机构型软件子程序硬化或固化,改为直接用硬件或微程序解释实现。例如,VAX11/780专门为进程切换设置有关“保存进程关联信息”和“恢复进程关联信息”的指令,将原先由子程序实现的功能进行硬化。,堆栈机器HP-3000设置了功能很强的PCAL(PROCEDURECALL)的程序调用指令和EXIT出口返回指令专门支持程序嵌套和递归调用,简化了子程序工作区的分配管

47、理。然而,这并不是将整个操作系统功能都硬化或固化,应当是在尽量缩小语义差距的前提下,充分发挥软、硬件实现各自的特长。硬件实现用于提高系统的执行速度和效率,减少操作系统的时间开销,软件实现用于提供系统应有的灵活性。联系到操作系统的具体功能,就是说,宜于硬(固)化实现的只应是“机构型”的功能,而不是“策略型”的功能。机构型功能指的是基本的、通用的功能,如进程管理、信息保护和存储管理等。策略型功能会随不同的环境而异,而且用户应能修改它。典型的策略型功能有上机费用计算、作业排队、用户标识、资源管理等。,就进程管理来讲,进程切换、程序状态的保存和恢复是机构型功能,而进程间的优先级确定则属策略型功能。就信

48、息的保护来讲,如何保护信息属机构型,而如何管理访问权则属策略型。机构型功能是稳定的,能够确切定义的,所以宜于硬件实现。策略型功能是不稳定的,在操作系统的生存期内可能会不断改变,就不宜用硬件实现。为操作系统实现提供更多更好的支持的第四个思路是:发展让操作系统由专门的处理机来执行的功能分布处理系统结构。,2.4.3按RISC方向发展和改进指令系统1.CISC的问题随着VLSI的迅速发展,为适应对计算机日益广泛的应用需要,增强计算机系统的功能,也为减少系统辅助开销,提高机器的运行速度和效率,计算机结构设计一直在致力于研究进一步缩短高级语言、操作系统、程序设计环境及应用等与机器语言和系统结构的语义差距

49、,加强软、硬件结合,为系统结构提供更多更好的硬件支持。但是,过去主要是通过强化指令系统功能的方向来发展改进的,这样做的结果必然导致机器的结构,特别是机器指令系统越来越庞杂。,到了20世纪70年代中期,已感到这样做不但实现越来越困难,且系统实际性能在下降。因此,1975年,IBM公司就组织力量研究这样做是否合理。1979年,D.Patterson等人经研究认为CISC存在如下问题:(1)指令系统庞大,一般在200条指令以上。许多指令的功能异常复杂,需要有多种寻址方式、指令格式和指令长度。完成指令的译码、分析和执行的控制器复杂,不仅VLSI设计困难,不利于自动化设计,延长了设计周期,增大了设计成本,也容易增大设计出错的机会,降低了系统的可靠性。而且为发现和纠正这些错误花费的时间和代价也会增大。(2)许多指令的操作繁杂,执行速度很低,甚至不如用几条简单基本的指令组合实现。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 实用文档 > 统计图表

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报