您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 计算机系统结构第2章补充数据表示解析
2020/2/23张功萱修订1数据类型与数据表示第2章补充2020/2/232本章学习内容•数据类型、数据表示、数据结构的基本概念•各类数据表示方法2020/2/2332‘.1数据类型、数据表示和数据结构•2‘.1.1基本概念•1.数据类型•数据类型是指一组值的集合以及可作用于这个集合上的操作集。2020/2/234•①基本数据类型•包括二进制位及其位串、整数及自然数(正整数)、实数(浮点数)、字符和布尔数等。•②结构数据类型•一组由相互有关的数据元素复合而成的数据类型。•结构数据类型中的数据元素可以是基本数据类型中的元素,也可以是结构数据类型本身中的元素。数据类型的分类2020/2/2352.数据表示•数据表示是指可由硬件直接识别和处理、指令系统可以直接调用的数据类型,即数据的硬件表示。3.数据结构•数据结构是指结构数据类型的组织形式。2020/2/2362’.1.2数据表示与数据类型、数据结构的关系•数据表示与数据结构都是数据类型的子集。•数据表示是数据处理的前提,计算机处理信息时,必须首先确定数据表示。•每一种数据表示必须有唯一的一组指令与之对应,并有相应的硬件支持。•数据表示反映了硬件对软件的支持。即凡是有数据表示的数据类型均可直接由硬件实现,凡是没有数据表示的数据类型,必须通过软件映象,变换为已有的数据表示,由软件实现。可见数据表示问题实际也是软硬件功能分配的问题。2020/2/2372‘.1.3数据表示与系统结构的关系•1.数据表示是指令设计的基础•2.数据表示是ALU数据的依据•3.数据表示的单位影响软件使用的灵活性•4.数据表示直接涉及系统的软硬件功能分配,影响系统的性能/价格比。2020/2/2382’.1.4引入数据表示的原则•1.有利于减少程序的执行时间和所需的存储容量。•2.具有较好的通用性和较高的效率。•即:•一是缩短程序的运行时间•二是减少CPU与主存储器之间的通信量•三是这种数据表示具有较强的通用性和较高的利用率2020/2/239•例如:如果用一台定点运算速度为1000万次/秒的进行32位的浮点运算。由于用定点指令实现32位浮点运算平均需要执行100条以上的指令,即处理器与主存之间的信息通信量将增加100多倍,相当于机器速度降低了两个数量级,即10万次/秒。因此应引入浮点数据表示。2020/2/2310•例:计算200×200的矩阵加法A+B。•如果在没有向量数据表示的机器上进行计算,设需要6条指令,其中4条指令相应循环4万次,则整体计算实现共需访存7×40000次以上,其中:•取指需2+4×40000•取2次操作数,写1次结果,共需访存3×40000次•如果在有向量表示的机器上进行计算,只需1条向量加指令即可实现运算,可以少取指4×40000次,程序执行时间可缩短50%以上。2020/2/23112‘.2浮点数据表示•浮点数据表示方式要研究的核心内容是:•表数范围、表数精度和表数效率之间的关系。2020/2/23122’.2.1浮点数据表示的一般形式11qpSefem数符阶符阶码尾数2020/2/2313浮点数的数值qeemrermN•m:尾数的值及采用的码制和数制•e:阶码的值,一般采用移码或补码,整数•rm:尾数的基,可采用二、四、八、十六和十进制。•re:阶码的基,通常采用二进制。•p:尾数的长度。注意当尾数不采用二进制时,p不是指尾数的二进制位数。如rm=16时,每4个二进制位表示一位尾数。•q:阶码的长度。通常是阶码的二进制位数。2020/2/2314阶码和尾数均用补码表示时的浮点数表数范围表数范围规格化尾数(纯小数)规格化阶码(整数)浮点数值规格化最小正数规格化最大正数规格化最大负数规格化最小负数-11mr-qerm1mrrpmr1-pm1-mrr-qer1rqeqer1rqe1rmpmqerr1qermpm1mrrr1rmqer2020/2/2315•①浮点数的表数范围•②浮点数的表数精度qermmaxrN1pmr21δ2020/2/2316•表数精度也称为表数误差,产生误差的根本原因是浮点数的不连续性.•误差产生的直接原因有两个:•(1)两个浮点数都在浮点集内,而运算结果却可能不在这个浮点集内•(2)数据从十进制转化为2、4、8、16进制,产生误差。2020/2/2317•上式是规格化浮点数的精度,有的采用下列形式表示:••最后1个有效位的可信度为一半•当rm=2时,有:22212)1(),(pppmpprrm)1(21),(2020/2/2318③浮点数的表数效率mmr1rη全部浮点数的个数的个数可表示的规格化浮点数浮点数是一种冗余数制(RedundatNumberSystem)浮点数的表数效率定义为:2020/2/2319•简化表示:mmmrrr1)(2020/2/2320•当尾数基值为2时,浮点数的表数效率为:()221250%2020/2/2321•浮点数的表数效率随rm增大,当尾数基值rm=16时,浮点数的表数效率为:()161611694%2020/2/2322•尾数基值rm=16与rm=2相比,浮点数的表数效率提高了:倍875.1)2()16(T2020/2/2323•浮点数的值:•非负阶的最小值为:0•规格化最小正数的尾数为:rm-1•非负阶的规格化最小正数:rm-1×rm0=rm-1•非负阶的最大值为:2p-1•规格化最大正数的尾数为:1-rm-m′•非负阶的规格化最大正数:(1-rm-m′)×rm2p-1peemrermN2020/2/23242020/2/2325一,浮点数格式设计的主要问题•在表示浮点数的6个参数中,只有尾数基值rm、尾数长度p和阶码长度q与表数范围、表数精度和表数效率有关.mmmrrr1)(mpprrm)1(21),(mreqrN12020/2/2326在字长确定的情况下,如何选择尾数基值rm,使表数范围最大、表数精度和表数效率最高.2020/2/2327二,浮点数尾数基值的选择•假设有两种表示方式F1和F2,它们二进制字长相同,尾数都用原码或补码、小数表示,阶码都用移码、整数表示,阶码的基值均为2,尾数的基值不同。•浮点数表示方式F1:rm1=2,p1,q1,•二进制字长:L1=p1+q1+2•浮点数表示方式F2:rm2=2k,p2,q2,•二进制字长:L2=kp2+q2+2•由F1与F2的二进制字长相同,即L1=L2,得:•p1+q1=kp2+q2(3.2.1)2020/2/2328(1)字长和表数范围确定时,尾数基值与表数精度的关系•F1的表数范围是:•F2的表数范围是:•F1与F2的表数范围相同,得到:•两边取以2为底的对数得:q1=q2+log2k(3.2.2)•(3.2.2)代入(3.2.1)得:p1+q2+log2k=kp2+q2•化简得到:p1=kp2-log2k(3.2.3)•F1的表数精度是:•(3.2.4)qN1212||max|max|()Nqk2222221111p2020/2/2329•把(3.2.3)代入(3.2.4)得到:•F2的表数精度是:•取F2与F1表数精度的比值:•(3.2.5)•只有k=1(rm=2)或k=2(rm=4)时,比值T=1221)1(22pkTkk2112log221log211kkp2020/2/2330•结论1:•在字长和表数范围一定时,尾数基值rm取2或4,浮点数具有最高的表数精度。2020/2/2331(2)字长和表数精度一定,尾数基值rm与表数范围的关系1221221112ppk()qqkqk122222222211qqkk222222()•由F1与F2的表数精度相同得到:即:p1=kp2-k+1(3.2.6)(3.2.6)代入(3.2.1)得:kp2-k+1+q1=kp2+q2即:q1=q2+k-1(3.2.7)F1的表数范围:F2的表数范围:2020/2/2332222122kqqk21kk假设F2的表数范围大于F1的表数范围,则应该有F2阶码的最大值要大于F1阶码的最大值:即:这个不等式在正整数定义域内没有解只有k=1(rm=2)或k=2(rm=4)时,F2阶码的最大值等于F1阶码的最大值。2020/2/2333•结论2:•在字长和表数精度一定时,尾数基值rm取2或4,浮点数具有最大的表数范围。•推论:•在字长确定之后,尾数基值rm取2或4,浮点数具有最大表数范围和最高表数精度。2020/2/2334121626121()Nmax622561621222121()pNmax9251222•例:IBM370系列机的短浮点数表示方式,•rm=16,p=6,re=2,q=6,尾数用原码、•小数表示,阶码用移码、整数表示。求表数•范围和表数精度,并与rm=2时进行比较。•解:表数精度为:•表数范围是:•若尾数基值rm=2,则有:•解得p=21,则q=9,它的表数范围是:2020/2/2335•表数效率:当rm=2时:1/2=50%当rm=4时:3/4=75%当rm=2时,规格化浮点数可以采用隐藏位方法表示如果尾数用原码表示,最高位一定为1如果尾数用补码表示,最高位一定与符号位相反这时,表数效率为100%•结论:浮点数的尾数基值rm取2,并采用隐藏位表数方法是最佳的浮点数表示方式。这种浮点数表示方式能做到表数范围最大、表数精度最高、表数效率最好。2020/2/2336主要的浮点数表示方法•IBM公司的IBM360、370、4300系列机等,尾数基值rm=16•Burroughs公司的B6700、B7700等大型机,尾数基值rm=8•DEC公司的PDP-11、VAX-11和Alpha小型机;•CDC公司的CDC6600、CYBER70等大型机;•HP公司的PR-RISC;•Intel公司的x86系列机;•IEEE754浮点数国际标准;……•均采用尾数基值rm=22020/2/2337三,浮点数格式设计•定义浮点数格式的6个参数,确定原则如下:•1.尾数:多数机器用原码、小数表示•采用原码表示:加减法比补码表示复杂,乘除法比补码简单,而且非常直观。•采用小数表示能简化运算,特别是乘法和除法运算。•2.阶码:一般机器用整数、移码表示•采用移码表示的主要原因是:浮点0与机器0一致。阶码进行加减运算时,移码的加减法运算要比补码复杂.2020/2/2338•3.基值:•尾数的基值rm=2,•阶码的基值re=2,•采用隐藏位表示方式能够使规格化浮点数的表数效率达到100%(当rm=2时)•浮点数格式设计的关键问题是:•在表数范围和表数精度给定的情况下,如何确定最短的尾数字长p和阶码字长q,并根据总字长的要求,恰当分配p与q2020/2/2339四,现代计算机理论观点•现代计算机理论认为:•①在浮点数的字长和表数范围一定时,尾数基值rm取2或4,具有最高的表数精度。•②在浮点数的字长和表数精度一定时,尾数基值rm取2或4,具有最大的表数范围。•③若采用隐藏表数方式,则rm=2时,可取得最高的表数效率。•隐藏表数方式:将规格化浮点数尾数的最高位隐藏不表示,只有在运算时才恢复隐藏位。2020/2/2340•结论:•当rm=2且采用隐藏表数方式时,浮点数的表数方法最优。•目前,浮点数格式采用IEEE754国际标准2020/2/2341五,浮点数格式设计举例(略)•例:•请设计一种浮点数格式,要求表数范围不小于1037,正、负数对称,表数精度不低于10-16。2020/2/2342•解:根据表数范围的要求:••解这个不等式:两边取以10为底的对数。••两边取以10为底的对数:1023712q2log)12log/10log(log37q2log10log1237q12log10log237q20
本文标题:计算机系统结构第2章补充数据表示解析
链接地址:https://www.777doc.com/doc-3897826 .html