《2022年第章计算机体系结构属性优选 .pdf》由会员分享,可在线阅读,更多相关《2022年第章计算机体系结构属性优选 .pdf(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二章计算机体系结构属性优选软件与硬件功能的分配是计算机体系结构设计的关键,是确定计算机硬件属性的基础,而计算机硬件属性(即计算机体系结构)包括数据表示、寻址技术、指令系统、总线与机器级的I/O 结构(含中断机构)、信息保护等方面的内容。为避免与计算机组成原理等其它课程重复,本章从软硬件功能分配出发,着重讨论计算机硬件属性的优化或选择技术。2.1 数据表示及其格式结构【问题小贴士】信息感觉媒体多种多样,从外部形态来看,有数值布尔的、字符文字的、图形图像的、声音视频的等。理论上任何外部形态的数据均可以采用二进制数表示,但由于效率与通用性的限制,对一台特定计算机来讲,仅部分外部形态的数据实现了数据
2、表示,所以数据表示配置是最基础的软硬件功能分配。一个整数如 26、一个字符如E等数据与一个树、一个文件等数据,它们各自有什么共性,它们是否都可以采用二进制编码直接表示出来呢?若可以,举例说明怎样表示?若不可以,为什么呢?不同类型数据做同一运算的运算规则是不同的,如整数加是末位对齐、实数加是小数点对齐,所以数据做运算之前,应该区分其类型。高级语言是通过类型说明语句指示了数据类型,那么机器语言是如何指示数据类型呢?若采用 8086 汇编语言来编写二个8421 码十进制数相加程序时,在“ADD”指令之后必须配置“DAA”指令,为什么?在“计算机组成原理”课程中已知:浮点数通常采用 IEEE 754
3、标准,该标准规范了许多格式参数如阶码基值、尾数基值、尾数位数、阶码位数等,而这些参数对浮点数特性是有影响的如阶码位数越多、浮点数范围越大等,那么这些参数权衡选取的依据是什么呢?怎样权衡选取呢?1.1.1 数据表示及其选取原则1.数据类型及其分类人们可能接触到的不同外部形态的感觉媒体很多,这些感觉媒体信息必须采用若干位二进制数来表示,由此便形成了许多类型。从算法描述来看,有文件、图、树、阵列、表、串、队列、栈等类型的数据;从高级语言来看,有结构、数组、指针、实数、整数、布尔数、字符、字符串等类型的数据。无论哪个角度的任一种数据类型,除其数据具有相同特征外,还定义了相应的一组运算操作。所谓数据类型
4、是指具有相同特征的数据集合及定义于该集上的一组运算操作及其规则。不同数据类型的同一运算,规则一定不同,如整数加与实数加的规则是不同的,前者是末位对齐,后者是小数点对齐。从规模上来看,数据类型可以分为原名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 21 页 -子的和复合的。原子类型是指不可再分的单个数据元素,数据元素的基本属性是“值”,如实数、整数、字符、布尔数等;根据数据“值”是否为“量”,原子数据又可分为数值的和非数值的二大类。复合类型是指由多个相互关联的原子数据复合而成的数据集,其中数据元素的基本属性则包含“值”与“逻辑位置”,如数组、字符串、向量、栈、队列、记录等;根据数
5、据元素间的“逻辑位置”关系是否为“线性”,复合数据又可分为线性的和非线性的二大类。一种数据类型运算操作及其规则不能作用于另一种数据类型,所以不同的数据类型,数据的表示格式不同,从而有效防止不同类型数据之间的误操作,如定点数与浮点数在计算机中的表示格式是不同的。如果不同类型的数据之间需要进行混合运算,则有二条途径:一是设置相应的运算操作及其规则,如向量类型数据和定点类型数据则规定了乘法运算规则;二是设置相应的转换法则,将一种类型数据转换为另一种类型数据,按转换后数据类型的运算法则进行运算,如整数与实数相加,通常把整数转换为实数,按实数加运算规则进行加运算。2.数据表示及其分类数据二进制形式在计算
6、机中的表示有两种方式,一种是采用计算机硬件直接表示,另一种是通过软件映像间接表示。当数据采用直接表示时,计算机硬件能直接识别、指令可直接引用;但考虑到效率和通用性,有些数据类型的数据则采用间接表示,这时计算机硬件不能直接识别、指令不可以直接引用。因此,把计算机硬件能直接识别、指令可以直接引用的数据类型统称为数据表示,而把计算机硬件难以或无法直接识别、指令不可以直接引用的数据类型统称为数据结构。通常,原子的数据类型一般是数据表示,复合的数据类型一般是数据结构;原子数据表示是复合数据表示的基础,复合数据通过软件组织原子数据来表示。但对于线性或可线性的复合数据,由于数据元素间“逻辑位置”的线性关系可
7、以利用存储单元之间的线性关系来表示,所以线性或可线性化复合数据类型也可以是数据表示,如二维数组、字符串等。可见,线性复合的数据类型可以是数据表示,也可以是数据结构。3.高级数据表示及其类型所谓高级数据表示是指采用多个数据字或一个数据字分为二个字段以上才能实现的数据表示。目前,高级数据表示主要有浮点数据表示、字符串数据表示、堆栈数据表示、数组数据表示和自定义数据表示,其中浮点数据表示仅采用一个数据字,但分为数符、尾数值、阶符和阶码值等四个字段,字符串数据表示、堆栈数据表示与数组数据表示则采用多个数据字。自定义数据表示目前有二种:采用一个数据字的标志符数据表示和采用多个数据字的采用一个数据字。字符
8、串数据类型、堆栈数据类型与数组数据类型是线性化或可线性化的复合数据类型,因此它们往往是数据表示,即由连续存储单元来按序存储它们当中的元素,如一维数组(d1、d2、,、dN)的数据表示如图2-1 所示,有的计算机还提供了相应运算操作。如在向量处理机中,增设变址寄存器和变址加法器,运算指令地址码至少包含二个字段:一个字段用于指明操作数所用的变址寄存器号,另一字段用于指明名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 21 页 -存放向量首元素地址所用的寄存器号,通过变址加法器来形成操作数有效地址(变址寄存器)+(首元素地址寄存器)。改变变址寄存器中的值,就可以使有效地址指向向量中的任
9、何元素。这样,同一条指令可以作用于整个向量,成为向量型运算指令,如图 2-2 所示。对于二维数组,可以为行、列分别设置变址寄存器,通过更为复杂的有效地址计算,同一条指令也可以作用于整个阵列,也是向量型指令。计算机可以对哪些类型的数据进行相应运算操作,则对应的数据类型一定是数据表示;反之,数据类型是数据表示,计算机则不一定可以对该类型的数据进行相应运算操作。图 2-1 堆栈与数组的数据表示图 2-2 变址操作对向量数据的支持4.高级数据表示的选取原则从原理上来看,仅需要实现最简单的数据表示及其相应的运算操作,就可以由软件来完成所有类型数据的运算操作,但这样既不方便,效率也很低,编译软件的负担还很
10、重。早期的计算机如8086 仅有定点数据表示,没有浮点数据表示,所以仅有定点数运算指令,二个浮点数做运算是通过软件将它们分别映像为二个定点数表示,由定点数运算指令来实现。据统计分析,实现32 位浮点数运算平均需要执行100 条以上的定点数指令,CPU需要访问主存储器近百次。后来计算机如Pentium 增加了浮点数据表示及其相应运算指令,二个浮点数运算的效率得到极大改观,但硬件代价也很高,浮点数运算实现的逻辑电路比定点数复杂得多。同样,字符与字符串也是如此。另外,在标量计算机中,向量与阵列数据类型通常是数据表示,但并没有提供相应的运算操作,但在向量计算机中,则提供相应的运算操作,即具有向量指令。
11、如计算 C=A+B(A、B、C均为维数1000 的向量),在没有向量指令的标量计算机上,需要通过循环语句来完成运算,FORTRAN 语言的具体程序段为:d1d2,dN主存储器向量指令操作码变址寄存器号基址寄存器号,变址加法器变址寄存器基址寄存器有效地址,向量 D,名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 21 页 -DO 40 I=1,1000 40 C(I)=A(I)+B(I)在循环程序段中不断反复地执行A(I)与 B(I)读取、A(I)与 B(I)相加、C(I)写入、I递增与判断、条件转移等指令,且仅能顺序执行,直到I 值超过 1000 为止。在具有向量指令的向量计算机
12、上,仅需要一条向量加法指令:C(1:1000)=A(1:1000)+B(1:1000)即可完成运算。在向量加法指令中,对参加运算的源向量A、B及结果向量C均指明其基地址、位移量、向量长度和元素步距等参数。这时,便可以将向量元素成块预取到中央处理器,从而不仅大量减少了主存储器的读写,还使得向量元素运算与循环递增判断转移可以并行处理。可见,由于主存储器一维线性的组织结构与多维离散的数据结构存在着很大差距,计算机不可能仅实现原子型的数据表示及其相应的运算操作,也不可能实现所有复合型的数据表示及其相应的运算操作。选取哪些数据类型为数据表示,哪些数据类型为数据结构,是软硬件取舍问题,是计算机体系结构研究
13、的首要问题,决定计算机中的运算指令及其与运算结构。那么,除基本原子型的数据表示不可缺之外,还需要设置哪些高级数据表示,应该从效率、通用性、利用率、复杂性、可实现性、性价比等方面进行综合权衡,但必须遵循三个基本原则。(1)高效率原则。效率高低取决于计算实现时间与存储空间的多少,实现时间多少主要取决于主存储器与处理机之间传送信息量的多少,传送信息量越少,实现时间就越少。如A、B二个 200 200 的定点数二维数组相加,若没有数组类型的数据表示及其相应的运算操作,A=A+B语句经优化编译程序生成的目程序包含6 条机器指令,其中4 条需要循环执行200200=40000 次;若有则仅需要一条“数组加
14、”指令即可,在主存储器与处理机之间的信息传送量仅取指就减少440000=160000 次,实现时间少很多。另外,目标程序指令条数少,存储空间也少,编译负担还轻。(2)高利用率原则。如果仅对部分数据类型处理的实现效率很高,而对其它数据类型处理的实现效率低,即利用率不高,并未使整体性能得到明显改善,为此还花费了昂贵的硬件,必然导致性能价格比下降。如设置树结构类型的数据表示,增加硬件来对树结构类型数据进行运算操作,实现效率很高,但对堆栈、向量、链表等数据类型处理的实现效率却不高。而若设置指针类型的数据表示,借用指针来实现树结构类型的数据表示,虽然效率不如设置树结构类型的数据表示,但它还可以有效地支持
15、向量、链表、栈和图等多种数据类型的数据表示,即利用率高。(3)高通用性原则。如果设置某种数据类型的数据表示,仅对该数据类型的表示及运算操作提供高效率支持,对其它数据类型不支持或支持程度不高,即通用性不高,整体性能也得不到明显改善,花费的硬件又昂贵,性能价格比必然也下降,如上述(2)中树结构类型的数据表示即是如此。而指针类型数据表示的则具有较高的通用性。1.1.2 标志符数据表示名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 21 页 -1.标志符数据表示的提出在一般数据表示中,仅表示了基本属性“值”(纯数据或二进制编码),对于数值数据还表示了符号属性和格式属性(如小数点位置),但
16、没有表示类型属性(如定点数与浮点数、字符与字符串、二进制与十进制、8421 码与余 3 码、单字节与二字节数、地址与数值等)和寻址属性(如寄存器寻址、变址寻址等)等。数据类型不同即使是同一运算操作,其规则也不同,如二进制数与十进制数,其加法运算规则分别为:逢二进一和逢十进一。在数据表示中没有表示的属性中,寻址属性是通过在地址码中设置若干为二进制位来直接表示外,类型属性通常是通过操作码来表示,即不同类型数据做同一运算操作的操作码不同,是不同的指令,如二进制与十进制的加法指令是不同的,在8086 处理机中,二进制加法指令为ADD,十进制的加法指令则设置了调整指令DAA。这样使得计算机的指令系统极其
17、庞大,也是复杂指令系统产生的原由之一。另外,在高级语言中,也包含许多数据类型,且数据类型由说明语句来指示,使数据类型直接与数据本身结合在一起,不需要运算符来指示数据类型,运算符是通用的,不同类型数据做同一运算操作的运算符相同,如整数与实数的加法运算符是相同的“+”。可见,在数据类型指示上,高级语言与机器语言的语义相距甚远,使得在运算操作规则和数据类型的关系处理上,高级语言与机器语言的差别很大。这样,在高级语言程序编译时,需要根据数据类型说明语句与运算符,选取机器语言中不同类型指令的操作码,还需要验证参与运算操作数的数据类型是否匹配与一致,若匹配不一致,还需要对其中的某些操作数进行类型转换,等等
18、。而这些问题的解决依赖于编译软件,增加了编译软件的负担。2.标志符数据表示及其格式为了缩短高级语言与机器语言在数据类型指示上的语义差距,在数据表示中,在数据字增加类型标志符字段,使数据本身具有类型标志,即数据字=类型标志+数据值,其中类型标志符指示数据值的类型。所谓标志符数据表示是指将数据类型与数据本身直接结合在一起,由类型标志符字段来指示数据类型,其格式如图4-3所示。显然,标志符应该由编译程序建立,对高级语言程序透明,以减轻应用程序员的负担。图 4-3 带多项标志的数据表示格式在标志符数据表示中,标志符主要用于指示数据类型,也可以用于指示数据的其它属性,如功效属性是数值还是地址或是控制字,
19、还可以用于奇偶校验和捕捉位(即陷阱标志),等等。3.标志符数据表示的优点标志符数据表示为硬件与软件的设计提供了有力支持,其优点主要包含以下五标志域数据域类型其它数值名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 21 页 -个方面。加之硬件持续下降,使得标志符数据表示得到广泛的使用。(1)简化了指令系统及其程序设计。由于数据类型及有关属性直接与数据本身结合在一起,使得同一指令可以作用于多种数据类型,从而减少了指令种类,指令系统得以简化,编程也相对容易。(2)减轻了编译软件的负担。由于高级语言与机器语言在数据类型指示上的语义差距缩短,使得编译软件不需要依据数据类型来选用指令,也不需
20、要检查参与运算操作数的类型是否匹配与一致,以便决定是否需要进行数据类型的转换等,从而减少了编译软件工作任务。(3)有利于硬件实现数据类型匹配与一致的检查及其转换。由硬件比较器直接对标志域的二进制数进行比较,由比较结果来判断数据类型是否匹配与一致,也可以通过符号扩展由硬件来实现数据类型的转换。(4)有效支持数据库操作与数据类型无关的要求。数据库管理系统中的查询等操作可以作用于任何数据类型,即与数据类型无关,也就是说其操作的数据必须是带类型指示的,标志符数据表示正好满足这一要求,使得数据库操作的实现代码变得极其简单。(5)有效支持软件调试。由于标志符数据表示也可以带有陷阱标志等属性,所以可以通过软
21、件定义的捕捉标志位来设置断点,从而便于程序的跟踪和调试。4.标志符数据表示的缺点标志符数据表示也存在着不足之处,主要表现以下三个方面。(1)增加了程序所占的存储空间。由于在标志符数据表示中,增设了标志符,数据字长自然更长,数据所占存储空间也自然增加。当然,如果程序设计合理,存储空间的增加量会很小,甚至还可能减少。其原因在于:当采用标志符数据表示时,指令种类减少,操作码位数自然减少;而程序中的操作数往往被多条指令多次访问,使得指令所占存储空间比数据所占存储空间大得多,如图4-4 所示。从图4-4 可以看出:当不采用标志符数据表示时,程序所占的存储空间为二个实线框之和;当采用标志符数据表示时,由于
22、指令字长缩短,指令所占存储空间减少,减少量为左上方阴影部分;而由于数据字长加长,数据所占存储空间增加,增加量为右下方阴影部分。当指令所占存储空间的减少量比数据所占存储空间的增加量还大时,则采用标志符数据表示时程序所占存储空间是减少的。特别地,数据类型的检查与变换由硬件实现,极大地减少程序所占用的存储空间。(2)降低了指令的执行速度。当采用标志符数据表示时,由于指令包含数据类型的检查与变换等操作,单条指令的执行速度自然下降。但程序的编制、编译与调试等时间会缩短,使得总的开销时间可能缩短。(3)增加了硬件的复杂度。当采用标志符数据表示时,由于数据类型的检查与变换等操作,均由硬件实现,硬件复杂度自然
23、更大。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 21 页 -图 4-4 带标志符与不带标志符程序所占存储空间的比较1.1.3 描述符数据表示1.描述符数据表示及其格式对于复合数据类型,如向量、数组和记录等,在一定连续存储空间内,存储的数据类型等属性是相同的,没有必要让每个数据都带有标志符。为减少标志符所占存储空间,就提出了数据描述符。描述符与标志符的主要差别在于:标志符仅作用于一个数据,指示单个数据的有关属性(一般仅有类型属性),且与数据在同一数据字中;而描述符作用于一个数据集,指示数据集中所有数据的有关属性(不仅有类型属性,还有数据集存储的起始地址、长度等),且独占一个数
24、据字。以美国 Burroughs公司生产的B6700 机中的描述符数据表示为例,其描述符数据表示的格式如图4-5所示。当高三位为“000”时,表示该字为数据字;高三位为“101”时,表示该字为描述符字。在描述符字中,8 位标志位描述数据属性,另外设有数据集存储的起始地址字段与长度字段。图 4-5 B6700机中的描述符数据表示格式描述符数据表示的优缺点与标志符数据表示基本一样。2.描述符数据表示的访问方法当执行操作数由描述符数据表示的指令时,按地址d1、d2 访问主存储器,若字的前三位为“000”,则是操作数;若字的前三位为“101”,则是描述符,便将其取到描述符寄存器,在描述符中的标志位、长
25、度和地址等字段联合作用下,经过地址形成逻辑得到操作数地址,再按该地址访问主存储器,存取操作数。采用描述符数据表示时,操作数的存取过程如图4-6 所示。特别地,对于数据块,读取到寄存器的描述符可以用于块内所有元素,一条指令可以使整个块内所有元素执行运算。描述符数据表示不仅可以用于一维数组的数据表示,还有利于多维数组的数据表示,采用描述符数据表示来表示34 二维数组的树形结构如图4-7 所示。由阵列描述符字指示(三)行数据块描述符集,其中每个描述符字又指示相应(四)列数不采用标志符指令与数据字长标志符长度采用标志符数据字长采用标志符指令字长数据字长加长指令指令字长缩短描述符数101 8位标志符元素
26、个数起始地址000 数据名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 21 页 -据块数据集。可见,采用描述符数据表示来表示多维数组比向量数据表示效率更高,主要表现在:数据元素地址形成更快、便于检查程序是否存在越界、有利于简化编译生成目标代码,但硬件复杂度较高。图 4-6 采用描述符数据表示时操作数的存取过程图 4.7 34 二维数组描述符数据表示的树形结构1.1.4 浮点数尾数基值与格式参数1.浮点数数据表示的特性浮点数数据表示的一般形式为:主存储器指令操作码地址 d1 地址 d2,101 ,(d1 数据块)000 ,(d2 数据块)000 ,101 ,地址形成逻辑寄存器10
27、1 ,寄存器101 ,3 4 二维阵列 A 101 3 101 4 101 4 101 4 000(a11)000(a12)000(a13)000(a14)000(a21)000(a22)000(a23)000(a24)000(a31)000(a32)000(a33)000(a34)34 二维数组a11a12a13a14a21a22a23a24a31a32a33a34行描述符阵列描述符名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 21 页 -N=M RE (4-1)其定义包含6 个参数:二个数值、二个基值和二个字长。尾数数值M一般采用定点小数的原码或补码来表示;阶码数值E 一般
28、采用定点整数的补码或移码来表示。尾数位数 P(不含符号位);阶码位数Q(不含符号位)。尾数基值R 一般为二、八、十或十六进制数,需要优化选取。阶码基值S为二进制数,直接选用。其原因在于:可以降低尾数移位的精度损失与操作复杂性,当 S=2时,阶码加减1,尾数仅需要右左移1 位,当 S=8时,阶码加或减1,尾数需要右或左移3 位,并且阶码加减1 较复杂;阶码主要用于扩大表示数据范围,即阶码越大,表示数据范围也越大,同样的二进制位数其它进制数的阶码并不比二进制数大优越很多。实数在数轴上是连续分布的,而浮点数据表示由于机器字长的限制,可以表示的数据在数轴上仅能分散于正负两个区间中的部分离散值,浮点数与
29、实数的主要差异在于三个特性:表示数据范围、表示数据精度、表示数据个数。表示数据范围即是可以表示的最大正数和最小负数,它们主要由浮点数阶码位数Q决定。表示数据精度即是当无法精确表示的所有实数由最接近的浮点数来近似表示时,所产生的最大误差,主要由浮点数尾数位数P 决定。表数个数即是浮点数在数轴上的分布密度或离散程度,由浮点数阶码位数Q和浮点数尾数位数P共同决定。2.尾数基值对浮点数特性的影响在计算机中,一位R进制数需要 log2R位二进制数来表示。尾数的二进制数位为 P时,则尾数的 R进制数位为P=P/log2R,如 R=16、P=4,则 P=4/log216=1,P位 R进制数的位权从小数点往右
30、顺序依次为R-1、R-2、,、R-P。当 R为 2的整数次幂时如8(23)、16(24),特例有RP=2P,且以 R 为尾数基值的浮点数,当其尾数右或左移一位R 进制数时,由二进制数表示的尾数需要右或左移log2R 位,为保持数值不变,阶码仅增或减1。表 4-1 尾数基值为 R的浮点数的特性及其举例进制位数表数特征阶码:二进制Q位,尾数:R进制 P位特例是按 R=2V,V为整数,且 RP=2P代入若 Q=2,P=4 当 R=2、P=4 当 R=16、P=1 最小尾数值R-1,特例:2-V1/2 1/16 最大尾数值1-R-P,特例:1-2-P15/16 15/16 最大阶值2Q-1 3 3 浮
31、点数最小值20R-1=R-1,特例:2-V1/2 1/16 浮点数最大值(R(2Q-1)(1-R-P),特例:(2(V(2Q-1)(1-2-P)7.5 3840 尾数个数RP(R-1)/R,特例:2P(2V-1)/2V8 15 阶值个数2Q4 4 浮点数个数2QRP(R-1)/R,特例:2Q+P(2V-1)/2V32 60 名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 21 页 -在浮点数阶码位数Q、尾数位数P 相同的情况下,尾数基数R 取不同值时,对浮点数数据表示的特性参数的影响,如表4-1 所示。为简化分析,一是只比较非负阶、正尾数,且都是规格化的数,对于负阶和负尾数也一定
32、是适用的;二是以R 为2 的整数幂来讨论,对于R不是 2 的整数幂也是符合的。从表4-1 可以看出:(1)表示数据范围。随R 增大,表示数据的最小值R-1将减小;表示数据最大值(R(2Q-1)(1-R-P)可以分为二个部分,其中(1-R-P)部分的特例为(1-2-P)是个常数,而(R2Q-1)部分的(2Q-1)也是常数,所以随R增大,由于(R(2Q-1)将增大,表示数据最大值也将增大。可见,随尾数基值R增大,表示数据的范围增大。(2)表示数据个数。表示数据个数特例为2Q+P(1-R-1),其中 2Q+P为常数,所以随尾数基值 R增大,由于(1-R-1)增大,表示数据个数也将增多。(3)数轴上数
33、据分布密度。为分析尾数基值对分布密度的影响,便引入表示比概念,所谓表示比f 是指的是在位数Q、P相同时,在R=2的可表示最大值之内,采用R2 的可表示浮点数个数与R=2的可表示浮点数个数之比。当R=2时,可表示浮点数个数为2Q+P(1-2-1)=2Q+P-1、可表示最大值为(2(2Q-1)(1-2-P)。当 R2 时,可表示最大值一定比R=2 时可表示最大值要大,这样总可以找到一个浮点数,其最大尾数值为(1-2-P),阶码值为m,使得有:QmP(21)PR(12)2(12)即Qm(21)R2,此时的 m值为:m=(2Q-1)/log2R (4-2)显然,R2时的尾数不会使规格化浮点数超过R=2
34、时的最大值且阶码值也不会超过m的所有规格化浮点数均将是R=2可表示最大值之内的哪些数。可见,尾数基值R 越大,在与R=2的浮点数相重叠的范围内,数据分布越稀。(4)表示数据精度。以R=16为例,在尾数位数P 相同时,规格化十六进制尾数高 4 位的二进制数中,左面可能有3个 0,则 R=2时比 R=16时多 3 位二进制数的精度。若R=2V,则最坏时仅有P-V+1 为二进制数来表示尾数,所以表示数据精度随R增大而单调下降。这与尾数基值R 越大,相应浮点数在数轴上的分布变稀,表示数据精度自然下降。(5)运算精度损失。运算精度损失是指运算过程中由于尾数右移,使有效位数丢失,有效位数丢失越多,精度损失
35、越大。由于尾数基值R 越大,数据分布变稀,对阶移位的概率与次数减少,且由于表示数据范围扩大,又使尾数溢出右规的概率减少。所以R越大,运算精度损失越小。(6)数据运算速度。尾数基值R越大,由于对阶或尾数溢出右移和规格化左移的次数减少,数据运算速度提高。综上所述,尾数基值越大,可以使浮点数表示数据范围扩大、表示数据个数增加、运算精度损失减少、运算速度提高,但使浮点数表示数据精度降低、数轴上数据分布变稀,所以尾数基值R 的选取也是一个权衡取舍因素。一般对于巨大中型计算机,尾数基值R 宜取大,这样浮点数表示范围大、个数多、运算速度也快;而浮点数尾数位数P 相对多,精度已足够高。而小微型计算机,由于表示
36、数据范围不要名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 21 页 -求太大、速度也不要求太高,反而尾数位数P 较少,更需要注重表示数据精度,所以尾数基值R宜取小。3.浮点数表示格式参数选取浮点数表示格式设计的基本任务是在给定浮点数表示数据范围与精度的前提下,来选取浮点数尾数位数P和阶码位数Q,确定浮点数字长。假设(大多数计算机的实际情况)浮点数尾数采用原码、小数表示,阶码采用移码、整数表示,尾数基值R=2,阶码基值S=2。若实际应用要求为表示数据范围不小于N(即 N为可以表示数据的最大正数),表示数据精度不低于,并且要求尾数与阶码均应正、负对称。根据表 4-1 中表示数据最
37、大值和表示数据范围要求,则有:212QNlog21log2QNlog(log/log 21)log 2NQ(4-3)若认为规格化尾数最后一位的可信度只有一半(因为该位通常由舍入得到的),所以规格化浮点数表示数据精度为:(1)1(,)2PR PR(4-4)根据表示数据精度要求,则有:(1)122P2Ploglog2P(4-5)由式(4-3)和(4-5),则可以计算出浮点数尾数位数P 与阶码位数Q,再添加一位数据符号位和一位阶码符号位,按一定次序排列就构成一种浮点数表示格式。当然,通常在满足式(4-3)和(4-5)的前提下,还需要适当调整尾数位数与阶码位数,以使浮点数数据字长达到合理位数如2 的整
38、数次幂。1.1.5 原子类型数据字位数原子类型数据字位数是指数据字所包含的二进制位数或字节数。通常,若机器字长为 32 位,原子类型数据字位数主要有:字节(8 位)、半字(16 位)、单字(32 位)、双字(64 位)。如字符采用ASCII 码表示,一个数据字位数为一个字节;整数一般采用二进制补码表示,一个数据字位数为字节、半字或单字;浮点数均采用IEEE 754浮点数标准,一个数据字位数为单字(单精度)、双字(双精度)。在计算机体系结构设计时,需要配置多少位数的原子类型数据字、为哪些位数的原子类型数据字提供高效支持,由不同位数数据字的访问频度来确定。表 4-2 所示的是SPEC 基准程序对字
39、节、半字、单字和双字等四种数据字的访问频度分布。从表可以看出,基准程序对整数双字、浮点数字节和浮点数半字等三种数据字的访问频度0,所以仅需要配置整数字节、整数半字、整数单字、浮点数单字和浮点数双字等五种原子类型数据字;对整数单字、浮点数单字和浮点数双字等三种原子类型数据字的访问频度较高,则还应提供高效支持。名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 21 页 -表 4-2 基准程序对不同大小操作数的访问频度数据字位数平均访问频度整型浮点字节7%0 半字19%0 单字74%31%双字0 69%例 2.1 IBM370 计算机的短浮点数采用阶码基值S=2,阶码位数为6,尾数基值
40、R=16,尾数位数为6,即二进制位数为24。计算在非负阶、正尾数、规格化情况下的最小尾数值、最大尾数值、最大阶值、浮点数最小值、浮点数最大值、浮点数个数和表示数据精度。解:根据表 4-1 所示,则有:最小尾数值:R-1=16-1=2-4最大尾数值:1-R-P=1-16-6=1-2-24最大阶值:2Q-1=26-1=63 浮点数最小值:R-1=16-1=2-4浮点数最大值:21QR(1-R-P)=1663(1-16-6)=2252(1-2-24)浮点数个数:2QRP(R-1)/R=26166(16-1)/16=230(1-2-4)表示数据精度:R-(P-1)/2=16-(6-1)/2=2-21例
41、 4.2设计一种浮点数格式,其表示数据范围要求在10-37至 1037之间,正负数对称,表示数据精度不低于10-16,且浮点数的尾数用原码、小数表示,阶码用移码、整数表示,尾数基值和阶码基值均为2。解:由题意可知,表示数据的最大正数为N=1037,表示数据精度=10-16。由式(4-3)可得:37log(log10log21)6.95log2Q,上取整则有阶码位数 Q=7。由式(4-5)可得:16log1053.2log2P,上取整则有尾数位数P=54。添加一位数据符号位和位阶码符号位,浮点数位数为:P+Q+2=54+7+2=63。实际浮点数位数应为8 的倍数,故浮点数位数取64 位,多出一位
42、可以用于尾数来提高浮点数的表示精度,也可以用于阶码来扩大浮点数的表示范围。若用于尾数则P=55,这时浮点数格式如图4-8 所示。图 4-8 例 4.2 浮点数的表示设计格式位数 1 P=55 1 Q=7 位序 63 62 8 7 6 0 数符尾数 M 阶符阶码 E 名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 21 页 -1.2 指令系统功能配置及其支持【问题小贴士】指令系统构建的基本任务包含功能配置与格式设计,以配置计算机的数据表示集为基础,构建计算机的指令系统是软硬件功能分配的核心。计算机的功能(指内在功能,外在功能由连接的I/O 设备来体现)是由指令系统来体现,指令系统
43、的指令数越多、指令实现越复杂,计算机功能越强大。指令系统的指令数越多、指令实现越复杂,可以作为指令系统配置的基本准则吗?为什么?如果按照这一准则来配置指令系统,应通过哪些途径来配置指令?指令系统的指令数尽量少、指令实现尽量简单,可以作为指令系统配置的基本准则吗?为什么?如果按照这一准则来配置指令系统,需要哪些特别技术支持呢?通过分析,可以看出指令系统具有多样性,那么指令系统可以分为哪几种类型呢?各类型将具有哪些特点呢?1.2.1 指令系统构建的基本原则构建指令系统时一般应遵循完备性、高效性、规整性、兼容性和正交性等五项基本原则。1.完备性原则完备性是指指令系统中的指令种类齐全、功能丰富、使用方
44、便,即当采用汇编语言编写程序时,指令系统直接提供的指令足够使用,而不必用软件来实现。一台计算机中由硬件指令实现的功能并不多,这些最基本功能一般极其常用且简单,许多复杂或复合功能都可用最基本的硬件指令编程来实现。采用硬件指令的目的是提高程序执行速度,便于用户编写程序。2.高效性原则高效性是指利用某指令系统中的指令所编写的程序,运行效率高,具体表现在程序占用存储空间小、执行速度快。一般来说,一个功能更丰富、种类更完善的指令系统,高效性必定更好。3.规整性原则规整性包括指令系统的对称性、匀齐性、一致性。对称性是指存储部件中的存储单元使用及其寻址对所有指令同等对待,功能操作设置对称,以便于记忆指令系统
45、、提高程序的可读性;如所有指令均可访问寄存器,既设置了AB的指令,也设置了BA 的指令。匀齐性是指指令操作可以支持数据类型和存储位置不同的操作数,以实现指令使用的数据类型与存储位置的无关性,简化程序设计;如算术运算指令的操作数可以是定点数,也可以是浮点数,定点数可以是小数,也可以是整数。一致性是对指令格式和数据格式而言的,它是指指令字长和数据字长之间的关系,以降低指令与数据存取的代价;一般指令字长和数据字长都应该是字节的整数倍。特别地规整性的实现是有限的,不能太完善,否则会导致指令系统过于复杂,实现难度大。名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 21 页 -4.兼容性原
46、则计算机之间的指令系统兼容是软件兼容实现的基础要素,软件兼容则指令系统一定兼容,反之则不一定。由于不同的计算机,在结构和性能上存在差异,实现所有软件都完全兼容是不可能的,通常仅能做到“向上兼容”,即在低档计算机上开发的软件可以在高档计算机上运行,对于指令系统兼容来说,则是高档计算机的指令可以增加,但不能删除或更改低档计算机上所有指令的功能和格式。如80286 微处理器包含8086 微处理器的所有指令,但增加了有符号乘法指令等。5.正交性原则正交性是指指令字中各个不同含义的字段,如操作码字段、地址码字段中的多个操作数地址与寻址方式表示等,在二进制数编码时,彼此独立而互不相关。1.2.2 指令系统
47、功能分类综合起来,指令系统通常可以支持的信息处理功能可分为算术逻辑运算、数据传输操作、转移控制操作、资源管理操作、浮点数运算、十进制数运算、字符串汉字操作、图声视频操作、向量阵列运算等九种类型,其中前三种运算操作是指令系统必须配置的。由于计算机制造技术与应用的不断发展,指令系统也在不断演变,按信息处理的功能配置来看,指令系统可以分为复杂指令系统、精简指令系统和混合指令系统等三种类型。1.复杂指令系统及其形成20 世纪 50 年代到 60 年代前期,由分立元件构建的计算机,体积庞大、价格昂贵、功耗极大,硬件比较简单,指令系统仅有十几条至几十条最基本的数据传送、定点加减运算、逻辑运算和转移控制等指
48、令,寻址方式也不多。20 世纪 60 年代中期到 70 年代中期,由于集成电路制造技术出现及其发展,计算机价格、体积、功耗的下降,硬件功能不断增强,指令系统越来越丰富,增设了乘除运算、十进制运算、字符串汉字操作等指令,指令数达一二百条,寻址方式也趋于多样化。到20 世纪70 年代后期,随着大规模集成电路制造技术的进一步提高,硬件成本进一步下降,而软件成本在不断上升。为了便于高级语言的编译,缩短机器语言与高级语言的差距,扩展计算机应用,则又增设了浮点运算、图声视频操作、十进制数运算与资源管理等指令。由此,导致指令系统的指令数高达三四百条、寻址方式达二十多种,如 DEC公司的 VAX 11/780
49、 指令系统有303 条指令和18 种寻址方式。并且把指令数高达数百条、寻址方式达几十种的指令系统称为复杂指令系统,相应的计算机称为复杂指令系统计算机(Complex Instruction Set Computer,简称 CISC)。复杂指令系统的形成主要源于二个原因。(1)增强配置复杂新指令。在原有指令的基础上,不断增强功能,配置复杂新指令代替由软件子程序或一段指令序列实现的功能,使软件功能硬化。如当高级语言取代汇编语言后,则增加新的复杂指令来支持高级语言程序的高效实现;为减少主存储器的访问,避免中间结果产生,则增加新的复杂指令代替一段指令序列。另外,寻址方式、指令格式和数据类型等越来越复杂
50、,虽然功能不变,但也要配置复杂新名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 21 页 -指令来匹配。(2)原有指令不能取消。系列机向上兼容与向后兼容要求,使得在增强配置复杂新指令后,原有指令即使不需要,也不能取消。2.精简指令系统及其产生对于复杂指令系统,人们感到不仅不易实现,而且还可能降低计算机的整体效率。1979 年以 Patterson为首的一批科学家对复杂指令系统的合理性进行研究,发现复杂指令系统存在以下四个问题。(1)硬件代价越高的指令使用频率往往越低。复杂指令系统中的不同指令使用频率相差悬殊,存在20%80%规律(见 1.4 节),并且使用频率越低,往往硬件代价