,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第二章 数据表示、寻址方式与指令系统,目录,数据表示,寻址方式,指令系统的设计和优化,指令系统的发展和改进,1,数据表示,数据表示与数据结构,高级数据表示,自定义数据表示(,Self_defining,),带标识符的数据表示,数据描述符,向量数组数据表示,堆栈数据表示,引入数据表示的原则,浮点数尾数基值大小和下溢处理方法的选择(选讲),在机器上直接运行的程序是由指令组成的。,指令系统是软件与硬件之间的一个主要分界面,也是他们之间互相沟通的一座桥梁。,硬件设计人员采用各种手段实现指令系统,而软件设计人员则使用这些指令系统编制系统软件和应用软件,用这些软件来填补指令系统与人们习惯的使用方式之间的语义差距。,指令系统设计必须由软件设计人员和硬件设计人员共同来完成。,指令系统发展相当缓慢,需要用软件来填补的东西也就越来越多。,数据表示,定义:,机器硬件能,直接识别和引用,的,数据类型,。,条件:,相应的运算指令和运算硬件(处理部件)。,分类:,基本数据表示、高级数据表示、自定义数据表示。,目标:,缩小高级语言和机器语言间的语义差别,提高性能/价格,节省处理时间和存储空间,实现:,最小的存储空间、最简单的存取算法,。,数据表示与数据结构,数据表示,:指的是能由机器硬件直接识别和引用的数据类型。,由硬件实现的数据类型,数据结构,:,面向计算机系统软件、面向应用领域所需处理的数据类型。,由软件实现的数据类型,。,目标:,最大限度满足应用要求、最简化的方法实现。,实现:,通过数据表示和软件映象相结合方法实现。,数据表示是数据类型的子集。,数据表示的确定实质上是软、硬件的取舍问题,数据结构和数据表示是软、硬件的界面,确定数据表示的原则,是缩短程序的运行时间,是减少CPU与主存储器之间的通信量,是这种数据表示的通用性和利用率,数据表示在不断发展,例如:矩阵、树、图、表及自定义数据表示等已经开始用于数据表示中,例:计算CAB,其中,A、B、C均为200200的矩阵。分析采用向量数据表示的作用。,解:如果在没有向量数据表示的计算机上实现,一般需要6条指令,其中有4条指令要循环4万次。因此,CPU与主存储器之间的通信量:,取指令:2440,000条,读或写数据:340,000个,共要访问主存储器:740,000次以上,如果有向量数据表示,只需要一条指令。减少访问主存(取指令)次数440,000次,用软件和硬件结合的方法实现新的数据表示,用字节编址支持字符串数据表示,用变址寻址方式来支持向量数据表示,数据类型,定义:,具有一组,值的集合,,且定义了作用于该集合的,操作集,。,目的:,防止不同类型数据间的误操作。,分类:,基本类型、结构类型。,基本数据类型,内容:,二进制位、二进制位串、整数、十进制数、浮点数、字符、布尔数等。,结构数据类型,定义:,由一组相互有关的数据元素复合而成的数据类型。,分类:,系统数据类型、用户自定义数据类型,内容:,数组、字符串、向量、,堆栈、队列、,记录等,数据表示中应表达的内容,数值的表达,进位制数、负数、小数点的方式,字符和符号的表达,ASCII,码,数据单位的表达,字:逻辑单位,一条指令处理的数据单位。,32Bit,字节、半字、字、双字,数据的属性,类型、存放的位置、对数据的约束,在高级语言和应用软件中,数据的属性由数据自己定义;,在高级语言与机器语言之间的语义差距,要靠编译器等填补。,Burroughs公司在大型机中引入自定义数据表示方式和带标志符的数据表示方式,数据表示的发展,定点数据表示,用定点数表示浮点数,不方便而低效,50,年代提出变址操作,为向量、阵列提供方便。,用循环遍历向量和阵列,可变长字符串数据表示,支持串数据结构的实现,用于输入、输出、事务处理和编译,高级数据表示,自定义数据表示(,Self_defining,),带标识符的数据表示,数据描述符,向量数组数据表示,堆栈数据表示,带标识符的数据表示,主要用于指明数据类型(如二进制整数、十进制整数等,也可用于指明及其内部所用信息的各种类型。,标志符由编译器或其他系统软件建立,对高级程序员透明。,程序(包括指令和数据)的存储量分析,数据存储量增加,指令存储量减少,类型标志,数据值,举例:,假设X处理机的数据不带标志符,其指令字长和数据字长均为32位;Y处理机的数据带标志符,数据字长增加至35位,其中3位是标志符,其指令字长由32位减少至30位。并假设一条指令平均访问两个操作数,每个操作数平均被访问R次。分别计算这两种不同类型的处理机中程序所占用的存储空间。,程序占用存储空间的比值:,当R3时,有:By10,即带标志符的处理机所占用的存储空间通常要小。,采用标识符缩短操作码而节省程序空间,A,B,采用标识符,数据字增长,不采用标识符,数据(少),指令(多),采用标识符,指令字缩短,通常有面积B面积A,举例:,在IBM370中执行AAB 运算。,若A和B都是十进制数,只需要一条指令,共6个字节,在IBM370/145上执行时间是13微秒。,若A与B中有一个是定点二进制数,由于要进行数据类型的一致性检查和转换,在PL/I语言中的编译结果为13条指令,共64个字节,在IBM370/145机上执行时间增加到408微秒。,两者相比,存储空间节省5倍,运算速度快30多倍。,如果采用自定义数据表示方法,由硬件自动实现一致性检查和数据类型的转换。,带标识符的数据表示的优缺点,优点:,简化指令系统和程序设计,简化编译程序,便于一致性校验,能由硬件自动完成数据类型的变换,支持数据库系统的实现与数据类型无关的要求,为软件调试和应用软件开发提供支持;,缺点:,使程序所占用的主存空间增加(如下图),降低指令的执行速度;,必须用专门的指令完成标识符的初始化,,硬件复杂度增加,数据描述符,101,各种标识符,长度,地址,000,数据,描述符,数据,目的:,描述复杂和多维的结构类型。,数据描述符,实现阵列数据的索引比变址方法实现的好,而且能检查程序设计中阵列越界错误。,为向量、数组数据结构的实现提供一定的支持,有利于简化编译中的代码生成。,工作过程:如下图,描述符的工作过程,010,000,000,010,010,010,X,Y,操作码,指令,描述符,描述符,地址生成逻辑,(数据),(数据),数据块,数据块,主存储器,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,数据描述符与带标识符的区别,标识符是和每一个数据相连的,合存在一个存储单元中,描述单个数据的类型特征。,描述符是和数据分开存放的,专门用来描述所要访问的数据是整块数据还是单块数据,访问该数据块或数据元素需要的地址以及其他特征信息等。,向量数组数据表示,举例:计算,i=10,、,11.1000,C,语言:,for(i=10;i=1000;i+),Ci=ai+bi,向量加,参数A,参数B,参数C,向量数据表示:,C=A+B,A,0,A,3,A,2,A,1,A,11,A,10,A,9,A,8,A,7,A,6,A,5,A,4,C,0,C,3,C,2,C,1,C,11,C,10,C,9,C,8,C,7,C,6,C,5,C,4,B,3,B,2,B,1,B,0,B,-,1,B,-,2,B,-,3,B,-,4,源向量A,结果向量C,源向量B,位移量A,d=,4,基址A,b,起始地址,A,s,=4,A,e,=124=8,C,d,基址C,b,起始地址,C,s,=4,C,e,=124=8,起始地址,B,s,=4,B,e,=4(4),=8,位移量,B,d,=4,基址B,b,向量处理机(向量计算机),(,Vector Processor,):具有向量表示和相应的向量运算指令的计算机。,标量处理机(标量计算机,)(,Scalar Processor,):不具有向量表示和相应的向量运算指令的计算机。,向量数据,向量的表示,数组,为,A,的元素。可为定点数、浮点数、整数、逻辑数等。,向量在主存储器中的存放原则,规律性,地址计算简单,访存冲突小,向量的存放方式,元素相邻存放,元素等间距存放,向量数据,向量存储的参数,基地址、位移量、向量长度,稀疏向量的压缩,采用隐蔽位向量方法,如下图,向量指令格式的描述,寄存器-寄存器,存储器-寄存器,存储器-存储器,稀疏向量的压缩,A,0,A,3,A,4,A,5,(0),A,6,(0),A,7,A,1,(0),A,2,(0),0,1,2,3,5,6,4,7,1,A,0,0,A,1,0,A,2,0,A,6,1,A,3,1,A,4,1,A,7,0,A,5,A,0,稀疏向量,A,3,A,4,A,7,压缩向量,Z向量(,有序位向量,),堆栈数据表示,有利于编译和子程序调用。,堆栈机器,:具有堆栈数据表示的机器。,有若干高速寄存器组成的硬,件堆栈,并附加控制电路让它与主存中的堆栈区在逻辑上组成一个整体,使堆栈的访问速度是寄存器的,堆栈的容量是主存的;,有很丰富的堆栈操作类指令且功能很强,直接可对堆栈中的数据进行各种运算和处理;,有力地支持高级语言程序的编译;逆波兰表达式,有力地支持子程序的嵌套和递归调用。,堆栈数据表示(续),有力地支持高级语言程序的编译;逆波兰表达式,F=A*B+C/(D-E),逆波兰表达式,AB*CDE-/+,有力地支持子程序的嵌套和递归调用。,减少大量辅助性工作,多使用零地址指令,存储效率高,引入数据表示的原则,看系统的效率是否提高,是否减少了实现时间和所需的存储空间;,举例1:两个200*200的二维定点数组相加,PL/1 A=A+B,无阵列型:6条指令,4条循环 200*200=40000,有阵列型:1条指令,减少4*40000=160000字,引入数据表示的原则(续),看引入数据表示后,其通用性和利用率是否高;,通用性:,是否对多种数据结构均适用。,利用率:,硬件设置大小的选择。,数据结构的发展总是优先于机器的数据表示,应尽可能为数据结构提供更多的支持。,浮点数尾数基值大小和下溢处理方法的选择,二进制的定点数,符号数值、反码、补码,浮点数数据表示,IEEE,标准,754 1985,年,提出,三部分:符号位、指数、尾数,浮点数尾数基值的选择,浮点数尾数下溢处理方法,IEEE754表示:,若E=0且M=0,N为0,若E=0且M0,N=(-1),S,2,-126,(0.M),非规格化数;,若1E254,N=(-1),S,2,E-127,(1.M),规格化数;,若E=255且M 0,N=NaN(非数值);,若E=255且M=0,N=(-1),S,(无穷大),浮点数尾数下溢处理方法,00,01,10,11,00,00:0,00:1,11:0,11:1,x,处理结果,恒置“1”法,00,01,10,11,00,00:0,00:1,11:0,11:1,x,处理结果,截断法,00,01,10,11,00,00:0,00:1,11:0,11:1,x,处理结果,舍入法,00,01,10,11,00,00:0,00:1,11:0,11:1,x,处理结果,查表舍入法,qYnVjSgPdLaI6F3C0y)v&s#pXlUiRfNcK9H5E2B+x(u$rZoWkThQeMbJ7G4D1z-w*t!qYmVjSgOdLaI6F3B0y)v%s#pXlUiQfNcK8H5E2A+x*u$rZnWkThPeMaJ7G4C1z-w&t!qYmVjRgOdL9I6F3B0y(v%s#oXlUiQfNbK8H5D2A+x*u$qZnWkShPeMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B+y(v%r#oXlTiQfNbK8G5D2A-x*u$qZnVkShPdMaJ7F4C0z)w&s!pYmUjRfOcL9H6E3B+y(u%r#o