计算机系统结构第二章第一部分_第1页
计算机系统结构第二章第一部分_第2页
计算机系统结构第二章第一部分_第3页
计算机系统结构第二章第一部分_第4页
计算机系统结构第二章第一部分_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.第二章 指令系统 指令系统是计算机系统结构的主要组成部分 指令系统是软件与硬件分界面的一个主要标志 指令系统软件与硬件之间互相沟通的桥梁 指令系统与软件之间的语义差距越来越大21 数据表示22 寻址技术23 指令格式的优化设计24 指令系统的功能设计25 risc指令系统2.1 数据表示 新的研究成果,如浮点数基值的选择 新的数据表示方法,如自定义数据表示211 数据表示与数据类型212 浮点数的设计方法213 自定义数据表示2.1.1 数据表示与数据类型 数据的类型:文件、图、表、树、阵列、队列、链表、栈、向量、串、实数、整数、布尔数、字符 数据表示的定义:数据表示研究的是计算机硬件能够直

2、接识别,可以被指令系统直接调用的那些数据类型。例如:定点、逻辑、浮点、十进制、字符、字符串、堆栈和向量 确定哪些数据类型用数据表示实现,是软件与硬件的取舍问题 确定数据表示的原则:一是缩短程序的运行时间,二是减少cpu与主存储器之间的通信量,三是这种数据表示的通用性和利用率。例2.1:实现aab,a和b均为200200的矩阵。分析向量指令的作用解:如果在没有向量数据表示的计算机系统上实现,一般需要6条指令,其中有4条指令要循环4万次。因此,cpu与主存储器之间的通信量: 取指令2440,000条,精品. 读或写数据340,000个, 共要访问主存储器740,000次以上如果有向量数据表示,只需

3、要一条指令 减少访问主存(取指令)次数:440,000次缩短程序执行时间一倍以上 数据表示在不断扩大,如字符串、向量、堆栈、图、表 用软件和硬件相结合的方法实现新的数据表示例如:用字节编址和字节运算指令来支持字符串数据表示 用变址寻址方式来支持向量数据表示2.1.2 浮点数的设计方法1、浮点数的表示方式 一个浮点数n可以用如下方式表示:需要有6个参数来定义。两个数值: m:尾数的值,包括尾数的码制(原码或补码)和数制(小数或整数) e:阶码的值,移码(偏码、增码、译码、余码等)或补码,整数两个基值: rm:尾数的基值,2进制、4进制、8进制、16进制和10进制等 re:阶码的基值,通常为2两个

4、字长: p:尾数长度,当rm16时,每4个二进制位表示一位尾数 q:阶码长度,阶码部分的二进制位数 p和q均不包括符号位 浮点数的存储式 1位 1位 q位 p位mfefem注:mf为尾数的符号位,ef为阶码的符号位,e为阶码的值,m为尾数的值。2、浮点数的表数范围 尾数为原码 尾数用原码、纯小数,阶码用移码、整数时,规格化浮点数n的表数范围: 尾数为补码尾数用补码表示时,正数区间的表数范围与尾数采用原码时完全相同,而负数区间的表数范围为:精品. 浮点数在数轴上的分布情况 上溢 下溢(浮点零) 上溢 -nmin 负数区 -nmax 0 nmin 正数区 nmax例2.2:设p23,q7,rmre

5、2,尾数用原码、纯小数表示,阶码用移码、整数表示,求规格化浮点数n的表数范围。解:规格化浮点数n的表数范围是:即:例2.3:尾数用补码、纯小数表示,阶码用移码、整数表示,p6,q6,rm16,re2,求规格化浮点数n的表数范围。解: 规格化浮点数n在正数区间的表数范围是: 在负数区间的表数范围是:3、浮点数的表数精度(误差) 产生误差的根本原因是浮点数的不连续性 误差产生的直接原因有两个: 一是两个浮点数都在浮点集内,而运算结果却可能不在这个浮点集内, 二是数据从十进制转化为2、4、8、16进制,产生误差。 规格化尾数的表数精度为:最后1个有效位的可信度为一半,当rm2时,有:4、浮点数的表数

6、效率 浮点数是一种冗余数制(redundat number system) 浮点数的表数效率定义为: 简化表示:精品. 当尾数基值为2时,浮点数的表数效率为: 浮点数的表数效率随rm增大 当尾数基值rm16时,浮点数的表数效率为: 尾数基值rm16与rm2相比,浮点数的表数效率提高了:4、浮点数尾数基值的选择 在表示浮点数的6个参数中,只有尾数基值rm、尾数长度p和阶码长度q与表数范围、表数精度和表数效率有关 在字长确定的情况下,如何选择尾数基值rm,使表数范围最大、表数精度和表数效率最高;假设有两种表示方式f1和f2,它们二进制字长相同,尾数都用原码或补码、小数表示,阶码都用移码、整数表示,

7、阶码的基均为2,尾数的基不同。浮点数表示方式f1:尾数基值rm12,尾数长度p1,阶码长度q1, 二进制字长:l1p1q12。浮点数表示方式f2:尾数基值rm22k,尾数长度p2,阶码长度q2, 二进制字长:l2k p2q22。由f1与f2的二进制字长相同,即l1l2,得:p1q1k p2q2(2.1) 字长和表数范围确定时,尾数基值rm与表数精度的关系f1的表数范围是:,f2的表数范围是:,f1与f2的表数范围相同,得到:两边取以2为底的对数,得到:q1q2log2 k(2.2)把(2.2)式代入(2.1)式,得到:p1k p2log2 k(2.3)f1的表数精度是:(2.4)把(2.3)代

8、入(2.4)得到:f2的表数精度是:取f2与f1表数精度的比值:(2.5)只有k1(尾数基值rm2)或k2(尾数基值rm4)时,比值t1。结论1:在字长和表数范围一定时,尾数基值rm取2或4,浮点数具有最高的表数精度。精品. 字长和表数精度一定,尾数基值rm与表数范围的关系由f1与f2的表数精度相同得到:即:p1kp2k1(2.6)把(2.6)代入(2.1)得到:q1q2k1(2.7)f1的表数范围:f2的表数范围:假设表数范围f2大于f1,则阶码的最大值f2大于f1:这个不等式在正整数定义域内没有解,即不存在比f1的表数范围更大的浮点数表示方式只有k1(尾数基值rm2)或k2(尾数基值rm4

9、)时,f2阶码的最大值等于f1阶码的最大值。结论2:在字长和表数精度一定时,尾数基值rm取2或4,浮点数具有最大的表数范围。推论1:在字长确定之后,尾数基值rm取2或4,浮点数具有最大的表数范围和最高的表数精度。例2.4:ibm 370系列计算机的短浮点数表示方式,尾数基值rm16,尾数字长为16进制6位,阶码基值rm2,阶码字长6位,尾数用原码、小数表示,阶码用移码、整数表示。求表数范围和表数精度,并尾数基址rm2的浮点数表示方式进行比较。解: 表数精度为: 表数范围是: 若尾数基值rm2,则有: 解得p21,则q322129,它的表数范围是: 推论2:浮点数的尾数基值rm取2,并采用隐藏位

10、表数方法是最佳的浮点数表示方式。这种浮点数表示方式能做到表数范围最大、表数误差最小、表数效率最高。目前,ibm公司的ibm360、370、4300系列机等,尾数基值rm16。burroughs公司的b6700、b7700等大型机,尾数基值rm8。dec公司的pdp-11、vax-11和alpha等小型机,cdc公司的cdc6600、cyber70等大型机,intel公司的x86系列机等均采用尾数基值rm2。5、浮点数格式的设计定义浮点数表示方式的6个参数的确定原则: 尾数:多数机器采用原码、小数表示精品. 采用原码制表示:加减法比补码表示复杂,乘除法比补码简单 表示非常直观。 采用小数表示能简

11、化运算,特别是乘除法运算。 阶码:一般机器都采用整数、移码表示采用移码表示的主要原因是:浮点0与机器0一致。阶码进行加减运算时,移码的加减法运算要比补码复杂 尾数的基值rm选择2, 阶码的基值re取2, 浮点数格式设计的关键问题是: 在表数范围和表数精度给定的情况下,如何确定最短的尾数字长p和阶码字长q例2.5:要求设计一种浮点数格式,其表数范围不小于1037,正、负数对称,表数精度不低于10-16。解:根据表数范围的要求:解这个不等式:取阶码字长q7根据表数精度的要求,得到:解这个不等式:由于浮点数字长通常是8的倍数,因此取尾数字长p55所设计浮点数的格式如下:1位 1位 7位 55位mfe

12、fem所设计浮点数的主要参数如下:最大尾数值:绝对值最小的尾数值:最大阶码:最小阶码:最大正数:;最小正数:;最大负数:;最小负数:;精品.表数精度:;浮点零:浮点零与机器零相同,64位全为0;表数效率:采用隐藏位,表数效率;6、浮点数的舍入处理 浮点数要进行舍入处理的原因是:十进制实数转化为浮点数时,有效位长度超过给定的尾数字长。两个浮点数的加、减、乘、除结果,尾数长度超过给定的尾数字长。 舍入处理要解决的问题是:把规格化尾数的pg位处理成只有p位。其中:p是浮点数表示方式给定的尾数字长, g是超过给定尾数字长的部分。 舍入方法的主要性能标准是:绝对误差小,积累误差小,容易实现。 进行舍入处

13、理时要注意的问题是:必须先规格化,然后再舍入,否则舍入是没有意义的。在计算积累误差时,要同时考虑到正数区和负数区的情况;方法1:恒舍法恒舍法又称截断法、必舍法等恒舍法的主要优点:实现起来非常容易。误差大。恒舍法的舍入规则及误差情况尾数有效字长p位有效字长之外g位误差情况正数区舍入前0.xxx.xx0.xxx.xx0.xxx.xx.0.xxx.xx00.00000.00100.010.11.111d0d2-p-gd2-p-g+1 .d2-p(12-g)舍入后0.xxx.xxs2-p-1(2g-1)负数区舍入前0.xxx.xx0.xxx.xx0.xxx.xx.0.xxx.xx00.00000.00

14、100.010.11.111d0d2-p-gd2-p-g+1 .d2-p(12-g)舍入后0.xxx.xxs2-p-1(2g-1)方法2:恒置法又称恒置r/2法、恒置1法、或冯诺依曼法。恒置法的舍入规则是:把规格化尾数有效字长p位的最低一位置成r/2。精品.恒置法的主要缺点:表数精度比较低。主要优点:实现起来比较容易, 在正数区和负数区的积累误差都比较小,而且能达到平衡。恒置法在正数区的舍入规则及误差情况正数区尾数有效字长p位有效字长之外g位误差情况舍入前0.xxx.xx00.xxx.xx00.xxx.xx0.0.xxx.xx00.xxx.xx10.xxx.xx10.xxx.xx10.xxx.

15、xx100.00000.00100.010.11.11100.00000.00111.11011.1112-p 误差积累2-p(12-g)2-p(12-g+1) .2-p-g 02-p-g .2-p(12-g+1)2-p(12-g)舍入后0.xxx.xx1积累误差s2-p方法3:下舍上入法又称为4舍5入法、0舍1入法、7舍8入法等。下舍上入法的舍入规则是:g位代码的中间值为界,小于这个中间值的则舍,大于或等于这个中间值的则入。下舍上入法的主要优点:精度高,积累误差小。 在正数区和负数区的积累误差能达到完全平衡。主要缺点:实现起来比较困难。上舍下入法的舍入规则及误差情况正数区尾数有效字长p位有效

16、字长之外g位误差d舍入前0.xxx.xx0.xxx.xx0.xxx.xx.0.xxx.xx0.xxx.xx0.xxx.xx.0.xxx.xx0.xxx.xx00.00000.00100.010.01.11110.00010.00111.11011.11102-p-g2-p-g+1 .2-p-1(12-g)2-p-1积累误差2-p-1(12-g) .2-p-g+12-p-g舍入后0.xxx.xx0.xxx.xx2-p最高位为0最高位为1积累误差s2-p-1方法4:r*舍入法r*舍入法的优点:没有积累误差。精度很高。主要缺点:实现起来非常复杂,要判断g是否为10.00,采用下舍上入法或恒置法,判断

17、舍入后是否溢出,若溢出,要再次进行右规格化。精品.只有少数巨型计算机(如bsp科学处理机)采用r*舍入法。r*舍入法的舍入规则及误差情况舍入方法舍入前(p+g位)舍入后(p位)误差情况下舍上入法下舍上入法下舍上入法下舍上入法恒置1法恒置1法下舍上入法下舍上入法下舍上入法0.xxx.xx|00.000.xxx.xx|00.010.xxx.xx|0.0100.xxx.xx|01.110.xxx.x0|10.000.xxx.x1|10.000.xxx.xx|10.010.xxx.xx|11.100.xxx.xx|11.110.xxx.xx0.xxx.xx0.xxx.xx 0.xxx.xx0.xxx.

18、x10.xxx.x10.xxx.xx2-p 0.xxx.xx2-p0.xxx.xx2-p02-p-g2-p-g+12-p-1(12-g+1)2-p-12-p-12-p-1(12-g+1)2-p-g+12-p-g方法5:查表法又称rom舍入法,pla舍入法等。查表入法的主要优点:通过修改rom或pla中的内容来使积累误差达到平衡。查表法继承了下舍上入法精度高、积累误差小的优点,同时又克服了它实现起来比较困难的缺点。n2时查表法的舍入规则及误差情况分析rom地址舍入前(pg位)舍入后(p位)误差情况000001010011100101110111xxx00|0xxxxxx00|1xxxxxx01|

19、0xxxxxx01|1xxxxxx10|0xxxxxx10|1xxxxxx11|0xxxxxx11|1xxxxxx00xxx01xxx01xxx10xxx10xxx11xxx11xxx112-p-1(1-2-g+1)02-p-g2-p-12-p-1(1-2-g+1)02-p-g2-p-12-p-1(1-2-g+1)02-p-g2-p-12-p-1(1-2-g+1)02-p(1-2-g)2-p-12-p-12-p-12-p-12-p-1(2g-1)关于舍入方法的主要结论:(1) 恒置法虽有少量的积累误差,且损失一位精度,但由于实现起来很容易,已普遍在小型及微型机中使用。精品.(2) r*舍入法是

20、唯一一种积累误差能达到完全平衡的舍入方法,但由于实现起来非常复杂,仅在极少数对误差要求非常高的具型计算机中才采用。(3) 下舍上入法只有少量的积累误差,且精度也比较高,但实现起来很复杂,在用软件实现的算法中经常采用。(4) 查表法实现比较容易,积累误差很小,而且可以通过改变rom或pla中的内容来修正积累误差,因此是一种很有前途的舍入方法。五种舍入方法的主要性能比较舍入方法在正数区的误差范围正数区的积累误差实现的难易程度恒舍法2-p(12-g)02-p-1(2g1)最简单恒置法2-p(12-g)2-p2-p很简单下舍上入法2-p-1(12-g+1)2-p-12-p-1很复杂r*舍入法2-p-1

21、2-p-10最复杂查表法2-p(12-g)2-p-12-p-1(2n2g)一般p是规格化尾数有效位的字长,g是尾数有效字长之外的长度,n是查表法中rom或pla的字长7、警戒位的设置方法为了保证浮点数在运算和转换过程中的精度,在规定的尾数字长之外,运算器中的累加器需要另外增加的长度称为警戒位(guard digit or guard bit)。 不设置警戒位,可能出现很大的误差。一个例子:例1:0.10000000200.111111012-1,没有警戒位时: 0.1000000020对阶: 1.1000000120求和: 0.0000000120左规: 0.100000002-7设置一个警戒

22、位时:0.10000000对阶:1.1000000120120求和: 0.00000001左规: 0.110000001202-7 可能造成完全错误的运算结果。例2:0.100021250.11112124,设置一个警戒位时: 0.1000对阶: 1.1000212512125求和: 0.0000左规: 0.1000121252121不设置警戒位时,运算结果是0。 0.10002125对阶: 1.10002125精品.求和: 0.00002125 警戒位的用处只有两个:(1) 用于左规格化时移入尾数有效字长内。(2) 用于舍入。 警戒位的来源有以下几个方面:(1) 做加、减法时,因对阶从有效字长内移出去的部分。(2) 做乘法时,双倍字长乘积的低字长部分。(3) 做除法时,因没有除尽而多上商的几位。(4) 右规格化时移出有效字长的那部分。(5) 从十进制转换成二进制时,尾数超出有效字长的部分。 加减法运算对警戒位的需要(1) 同号相加或异号相减,浮点数的尾数之和不需要左规格化。ma1,两数之和为:mamb2,(2) 同号相减或异号相加,阶差

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论