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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2.1数据表示一、数据结构和数据表示二、高级数据表示1.自定义数据表示2.向量数组数据表示和向量处理机3.堆栈数据表示和堆栈计算机三、是否引用某种数据表示的两个原则:四、浮点数尾数基值大小和下溢处理方法的选择1.浮点数尾数基值的选择2.浮点数尾数的下溢处理方法一、数据结构和数据表示数据结构反映了应用中要用到的各种数据元素之间的结构关系,是软硬功能分配中软的方面。例如:文件,图,表,树,阵列,队列和链表等。数据表示研究的是计算机硬件能够直接识别,可以被指令系统直接调用的那些数据类型。例如:定点数,逻辑数,浮点数,十进制数,字符,字符串,堆栈和向量等。二、高级数据表示1.自定义数据表示自定义数据表示是为缩短高级语言和机器语言的语义差距引出来的。高级语言中用类型说明语句来指明数据的类型,让数据的类型直接与数据本身联系在一起,运算符并不反映数据的类型,是通用的。目前在大多数计算机中,数据存储单元里存放的都是纯数据,而对这些数据的类型,进位制,字长,寻址方式,功能等的解释都要通过指令中的操作码来进行。它又有标志符数据表示和数据描述符两类。⑴标志符数据表示:标志符数据表示是让数据字本身带有数据或信息的类型标志。标志符由编译程序建立,对高级语言源程序应设计成透明的。标志符虽然主要用于指明数据类型,但还可以用于指明机器内所用信息的各种类型,如指明是数值,控制信息,地址还是指令字。采用标志符数据表示方法的优点:①简化了指令系统和程序设计的难度,简化了编译系统。②可由硬件自动实现一致性检查和数据类型的转化,速度更快。③支持数据库系统。一般的数据库系统都要求与数据类型无关。④为软件调试和应用软件的开发提供了一定的支持。例如在每个数据中都有陷阱位,为软件的跟踪和调试提供了极大的方便。采用标志符数据表示方法的缺点:①数据和指令的长度可能不一致。两种主存储器使用不平衡,会给输入输出控制造成麻烦。②指令的执行速度降低。一个程序的总开销通常是由设计时间,编译时间,调试时间和执行时间的总和决定的,前三项称为宏观速度,执行时间称为微观速度。采用标志符数据表示法提高了宏观速度,而降低了微观速度。③硬件复杂度增加。⑵数据描述符对于复杂的数据结构,如向量、矩阵、多维数组、记录等,其中有许多连续存放的数据的属性都是相同的,没有必要让每一个数据都带有标志符。因此,在表示多维或结构比较复杂的数据时使用数据描述符。数据描述符与标志符的主要区别是:标志符通常只作用于一个数据,而数据描述符要作用于一组数据。因此,标志符通常与数值一起存放在同一个数据单元中,而数据描述符一般单独存放,独立占据一个存储单元。描述符用来描述一组数据的属性,包括整个数据块的访问地址,长度及其它特征或信息等。数据描述符为向量、数组实现提供了支持,有利于简化高级语言程序编译中的代码生成,可以比变址法更快地形成数据元素的地址。但由于没有相应的向量、数组运算类指令和高速运算硬件,数据描述符并不能支持向量、数组数据结构的高效实现,所以,它并不是向量,数组数据表示。2.向量数组数据表示和向量处理机向量数组数据表示为向量、数组数据结构的实现和运算提供了更多的硬件支持,设置有丰富的向量或阵列(数组)运算类指令,配有流水线或处理单元阵列等高速运算部件,直接高效地支持对向量、数组的访问、运算、压缩、还原和归并等处理。向量处理机就是有向量数据表示的处理机。虽然标量处理机也能处理向量、数组,但它是用标量指令通过变址和循环来实现的,其速度和效能自然要比向量处理机低得多。3.堆栈数据表示和堆栈计算机堆栈计算机表现在它有由高速寄存器组成的硬件堆栈,有丰富的堆栈操作指令,能直接用堆栈进行复杂的运算和处理。(一般的通用寄存器型机器只有简单的软堆栈——在主存中开辟一个堆栈区,只有少量功能简单的堆栈指令)堆栈计算机可以用堆栈保存全局性参数,局部性参数,返回地址,各种状态标志信息和中间结果所用的工作区,有力的支持了子程序的嵌套和递归调用。三、是否引用某种数据表示的两个原则:1.看系统的效率是否提高,即是否减少了实现时间和所需的存储空间。2.看这种数据表示的通用性和效率如何。四、浮点数尾数基值大小和下溢处理方法的选择早期的计算机只有定点数据表示,这种计算机的优点是硬件结构比较简单,但缺点明显。1.编程困难。程序设计人员必须首先确定机器小数点的位置,并把所有参与运算的数据的小数点都对齐到这个位置上,然后机器才能正确进行运算。2.表示数的范围小。从另一个角度看,为了能表示两个大小相差很大的数据,需要有很长的机器字长。3.数据存储单元的利用率往往很低。例如,为了把小数点的位置定在数据最高位前面,必须把所有参与运算的数据至少都除以这些数据中的最大数,只有这样才能把所有数据都化成纯小数,因而会造成很多数据有大量的前置零,从而浪费了许多数据存储单元。1.浮点数尾数基值的选择阶符阶码P数符尾数S浮点数存储格式:SNp2例:设尾数为4位,阶码为2位01101011N=2111011实际上浮点数表示方法要研究的关键问题是:在数据字长已经确定的前提下,研究各种浮点数表示方式的表数范围、表数精度、表数效率及它们之间的关系等,并且企图寻找到一种具有最大表数范围、最高表数精度和最优表数效率的浮点数表示方法。浮点数总的字长确定之后,如果增大其中的阶码位数p,则可以扩大可表示数的范围,但因其中的尾数位数m减少,而会使可表示的精度降低。当p、m位数定好后,尾数采用什么进制也会影响到可表示数的范围、个数和精度等。非负阶、规格化、正尾数尾基rm(p=6位,m=48位)2(m`=48)8(m`=16)16(m`=12)尾数最大值1-rm-m`1-2-481-8-161-16-12尾数最小值rm-11/21/81/16尾数的个数rmm`(rm-1)/rm2477*81515*1611阶码最小值0000阶码最大值2p-1636363阶的个数2p646464最小值rm-11/21/81/16最大值rm2p-1(1-rm-m`)263(1-2-48)863(1-8-16)1663(1-16-12)数的总个数2p·rmm`(rm-1)/rm2537*25115*250浮点数尾数基值取大后:可以扩大浮点数的可表示数范围增加可表示数的个数降低运算中因尾数右移所造成的精度损失减少运算中数的移位次数,从而提高运算速度数值在数轴上的分布密度变稀,数的可表示比下降会降低数的可表示精度结论:为了扬长避短,在巨、大、中型机上,浮点数尾数基值宜取大些,而在微、小型机上,数的表示范围不大,速度不要求太高,主要是字长短,精度低,所以,值宜取小些为好。2.浮点数尾数的下溢处理方法在浮点数的运算中,为减少因尾数右移出规定字长所造成的精度损失,可对尾数超出字长部分作适当的处理,从而引出了各种不同的尾属下溢处理方法。⑴截断法:将尾数超出机器字长的那部分简单截掉。最大误差:在整数二进制运算时接近于1,在分数二进制运算时接近于对于正数统计平均误差为负,且无法调节。截断法的主要优点是实现起来非常容易。但是,由于通用计算机在1秒钟内要进行几千万次以上的运算,积累误差是必须要考虑的,因此,在运算精度要求比较高的应用场合,不宜采用此方法。000110110001101100001011101111截断法⑵恒置1法:把规格化尾数有效字长p位的最低一位置成r/2,而不管超过有效字长之外的g位代码是什么。最大误差:在整数二进制运算时为1,在分数二进制运算时为对于正数,统计平均误差接近于零,但稍偏正。平均误差无法调节。恒置1法的好处是实现简单,不需要增加硬件,(实现难度仅次于恒舍法)平均误差接近于零。主要缺点是表数精度比较低,这是由于尾数的最低位被恒置成了r/2,因此损失了一位精度。而且最大误差最大。000110110001101100001011101111恒置“1”法⑶舍入法:在机器运算部分的规定字长之外增设一位附加位,存放溢出部分的最高位,每当进行尾数下溢处理时,将此附加位加1(对二进制整数相当于加0.5,对于二进制小数相当于加对于二进制数,即为0舍1入。最大误差:在整数二进制运算时为0.5,在分数二进制运算时为对于正数,统计平均误差接近于零,但稍偏正,平均误差无法调节。舍入法的好处是增加的硬件很少,最大误差小,平均误差接近于零,主要缺点是处理速度慢。由于做了一次加法运算,尾数有可能要溢出,为此要再次进行右规格化,当采用硬件实现时,可能要增加一个节拍,从而加长了整个浮点运算的时间,这是舍入法不能被普遍采用的主要原因。000110110001101100001011101111舍入法⑷查表舍入法:通常,下溢处理表的内容安排成当尾数最低的k-1位为全1时,以截断法设置处理结果,其余情况按舍入法设置下溢处理结果。查表舍入法的优点是可以使平均误差趋于零,而且速度较快。缺点:硬件设备量增多。000110110001101100001011101111查表舍入法小结:最大误差最大的是:恒置1法最大误差最小的是:舍入法平均误差最大的是:截断法平均误差可人为调节的是:查表舍入法速度最快的是:截断法和恒置1法不需要附加硬件,不需要附加时间开销速度最慢的是:舍入法相加和进位的传输时间ROM的读出时间比加法时间短实现上最花费硬件的是:查表舍入法2.2寻址技术一、编址方式1、编址单位2.零地址空间个数二.寻址方式1.立即数寻址方式2.寄存器寻址3.直接寻址方式4.间接寻址5.变址寻址方式6.堆栈寻址三、定位方式1.逻辑地址和物理地址2.程序的定位方式1、编址单位目前常用的编址单位有:字编址、字节编址,位编址①字编址:实现起来最容易的一种编址方式,因为每个编址单位与设备的访问单位相一致。即每个编址单位所包含的信息量与访问一次设备所获得的信息量是相同的。在采用字编址的机器中,每取完一条指令,程序计数器加1,每从主存储器中读完一个数据,地址计数器加1。这种控制方式实现起来很简单,地址信息、存储容量等没有任何浪费。缺点:没有对非数值计算提供支持②字节编址:使用最普遍的一种方式。从目前计算机的实际应用领域看,非数值应用已经超过了数值应用,而信息的基本单位是字节。字节编址方式能够使编址单位和信息的单位相一致,是它的最大优点。由于编址字长与存储器的访问字长不一致,即每个编址单位所包含的信息量(一个字节)与访问一次存储器所获得的信息量(通常是一个字)不相同,从而就产生了数据如何在存储器里存放的问题。③位编址注:存储器本身的字长为64位。处理器一个字的字长为32位。IBM370的信息有字节(8位)半字(双字节)单字(4字节)双字(8字节)四种表示方式。可从任意位置开始访问(不浪费存储器资源)注:存储器本身的字长为64位。一个字的字长为32位。可从任意位置开始访问(不浪费存储器资源)字节半字双字单字半字从一个存储字的起始位置开始访问字节半字双字单字半字单字字节单字双字从地址的整数倍位置开始访问字节半字双字单字半字单字字节单字双字一个双字、一个单字或一个半字都有可能跨越两个存储单元,这是存储器的工作速度降低了一倍。存储器的读写控制比较复杂。另外:在采用字节编址的计算机系统中,如果指令字长是32位,那么每执行完一条指令,指令计数器要加4。如果存储器的字长是64位,当连续访问存储器时,每访问一次,地址计数器要加8。注意:现在,读出和写入共两次访问存储器操作实际上只需要一个存储器周期就能够完成,这是因为目前的绝大多数主存储器都采用动态存储器DRAM实现的。DRAM是一种破坏性读出的存储器,每当从一个存储单元中读出数据之后,这个存储单元就被清除为0。为了下次还能够从这个存储单元中读出原来的数据,就必须把刚刚读出的那个数据重新写入这个存储单元,这一过程称为重写。向一个DRAM存储器中写入一个数据的过程也必须包括读出和重新写入两次访问存储器操作。字节:*…****半字:*…***0单字:*…**00双字:*…*000注:存储器本身的字长为64位。一个字的字长为32位。可从任意位置开始访问(不浪费存储器资源)字节半字双字单字半字从一个存储字的起始位置开始访问字节半字双

1 / 110
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功