当前位置:文档之家› 计算机系统结构第二章第一部分

计算机系统结构第二章第一部分

第二章指令系统∙指令系统是计算机系统结构的主要组成部分∙指令系统是软件与硬件分界面的一个主要标志∙指令系统软件与硬件之间互相沟通的桥梁∙指令系统与软件之间的语义差距越来越大2.1 数据表示2.2 寻址技术2.3 指令格式的优化设计2.4 指令系统的功能设计2.5 RISC指令系统2.1 数据表示∙新的研究成果,如浮点数基值的选择∙新的数据表示方法,如自定义数据表示2.1.1 数据表示与数据类型2.1.2 浮点数的设计方法2.1.3 自定义数据表示2.1.1 数据表示与数据类型∙数据的类型:文件、图、表、树、阵列、队列、链表、栈、向量、串、实数、整数、布尔数、字符∙数据表示的定义:数据表示研究的是计算机硬件能够直接识别,可以被指令系统直接调用的那些数据类型。

例如:定点、逻辑、浮点、十进制、字符、字符串、堆栈和向量∙确定哪些数据类型用数据表示实现,是软件与硬件的取舍问题∙确定数据表示的原则:一是缩短程序的运行时间,二是减少CPU与主存储器之间的通信量,三是这种数据表示的通用性和利用率。

例2.1:实现A=A+B,A和B均为200×200的矩阵。

分析向量指令的作用解:如果在没有向量数据表示的计算机系统上实现,一般需要6条指令,其中有4条指令要循环4万次。

因此,CPU与主存储器之间的通信量:取指令2+4×40,000条,读或写数据3×40,000个,共要访问主存储器7×40,000次以上如果有向量数据表示,只需要一条指令减少访问主存(取指令)次数:4×40,000次缩短程序执行时间一倍以上N m m er =⋅∙ 数据表示在不断扩大,如字符串、向量、堆栈、图、表 ∙ 用软件和硬件相结合的方法实现新的数据表示例如:用字节编址和字节运算指令来支持字符串数据表示 用变址寻址方式来支持向量数据表示2.1.2 浮点数的设计方法1、浮点数的表示方式∙ 一个浮点数N 可以用如下方式表示: 需要有6个参数来定义。

两个数值:m :尾数的值,包括尾数的码制(原码或补码)和数制(小数或整数) e :阶码的值,移码(偏码、增码、译码、余码等)或补码,整数 两个基值:r m :尾数的基值,2进制、4进制、8进制、16进制和10进制等 r e :阶码的基值,通常为2 两个字长:p :尾数长度,当r m =16时,每4个二进制位表示一位尾数 q :阶码长度,阶码部分的二进制位数 p 和q 均不包括符号位 ∙ 浮点数的存储式注:m f 为尾数的符号位,e f 为阶码的符号位,e 为阶码的值,m 为尾数的值。

2、浮点数的表数范围∙ 尾数为原码 尾数用原码、纯小数,阶码用移码、整数时,规格化浮点数N 的表数范围:---⋅≤≤-⋅-111r r N r r m mp m m q e qe r r () ∙ 尾数为补码尾数用补码表示时,正数区间的表数范围与尾数采用原码时完全相同,而负数区间的表数范围为:q e qe r r r N r r r m m p m m ----≤≤-+⋅-11() ∙ 浮点数在数轴上的分布情况min max min max例2.2:设p =23,q =7,r m =r e =2,尾数用原码、纯小数表示,阶码用移码、整数表示,求规格化浮点数N 的表数范围。

解:规格化浮点数N 的表数范围是:1227722321122-≤≤-⋅--N () 即:-129231272122≤≤-⋅-N () 例2.3:尾数用补码、纯小数表示,阶码用移码、整数表示,p =6,q =6,r m =16,r e =2,求规格化浮点数N 的表数范围。

解: 规格化浮点数N 在正数区间的表数范围是:-656631611616≤≤-⋅-N ()在负数区间的表数范围是:63664161616116-≤≤-+⋅--N ()3、浮点数的表数精度(误差)∙ 产生误差的根本原因是浮点数的不连续性 ∙ 误差产生的直接原因有两个:一是两个浮点数都在浮点集内,而运算结果却可能不在这个浮点集内, 二是数据从十进制转化为2、4、8、16进制,产生误差。

∙ 规格化尾数的表数精度为:δ(,)()r p p m m r =--11 最后1个有效位的可信度为一半, 当r m =2时,有:δ(,)()222121p p p ==⋅---4、浮点数的表数效率∙ 浮点数是一种冗余数制(Redundat Number System)∙ 浮点数的表数效率定义为:η==⋅⋅-⋅⋅+⋅⋅⋅-可表示的规格化浮点数的个数全部浮点数个数2121221()r r r r r m m e m e p q p q 简化表示:η()r r r m m m=-1当尾数基值为2时,浮点数的表数效率为:η()221250%=-= ∙ 浮点数的表数效率随r m 增大当尾数基值r m =16时,浮点数的表数效率为:η()1616194%=-= 尾数基值r m =16与r m =2相比,浮点数的表数效率提高了:T ==ηη()().1621875倍4、浮点数尾数基值的选择∙ 在表示浮点数的6个参数中,只有尾数基值r m 、尾数长度p 和阶码长度q 与表数范围、表数精度和表数效率有关∙ 在字长确定的情况下,如何选择尾数基值r m ,使表数范围最大、表数精度和表数效率最高;假设有两种表示方式F1和F2,它们二进制字长相同,尾数都用原码或补码、小数表示,阶码都用移码、整数表示,阶码的基均为2,尾数的基不同。

浮点数表示方式F1:尾数基值r m1=2,尾数长度p1,阶码长度q1, 二进制字长:L1=p1+q1+2。

浮点数表示方式F2:尾数基值r m2=2k ,尾数长度p2,阶码长度q2, 二进制字长:L2=k p2+q2+2。

由F1与F2的二进制字长相同,即L1=L2,得:p1+q1=k p2+q2 (2.1)∙ 字长和表数范围确定时,尾数基值r m 与表数精度的关系F1的表数范围是:q N 1212||max =, F2的表数范围是:|max |()N q k 2222=,F1与F2的表数范围相同,得到:q q k 1222=⋅ 两边取以2为底的对数,得到:q1=q2+log 2 k (2.2) 把(2.2)式代入(2.1)式,得到:p1=k p2-log 2 k (2.3) F1的表数精度是:δ111122=⋅-p(2.4)把(2.3)代入(2.4)得到:δ112122=⋅-+kp k logF2的表数精度是:δ212122=⋅⋅-k p ()取F2与F1表数精度的比值:T k k ==--δδ2112log(2.5)只有k =1(尾数基值r m =2)或k =2(尾数基值r m =4)时,比值T =1。

结论1:在字长和表数范围一定时,尾数基值r m 取2或4,浮点数具有最高的表数精度。

∙ 字长和表数精度一定,尾数基值r m 与表数范围的关系 由F1与F2的表数精度相同得到:1221221112⋅=⋅--p p k () 即: p1=kp2-k +1 (2.6) 把(2.6)代入(2.1)得到:q1=q2+k -1 (2.7)F1的表数范围:q q k q k 121212222222==+--⋅F2的表数范围:q q k k222222()=⋅假设表数范围F2大于F1,则阶码的最大值F2大于F1:q q k k k k 22112222⋅>⋅--> 即这个不等式在正整数定义域内没有解,即不存在比F1的表数范围更大的浮点数表示方式只有k =1(尾数基值r m =2)或k =2(尾数基值r m =4)时,F2阶码的最大值等于F1阶码的最大值。

结论2:在字长和表数精度一定时,尾数基值r m 取2或4,浮点数具有最大的表数范围。

推论1:在字长确定之后,尾数基值r m 取2或4,浮点数具有最大的表数范围和最高的表数精度。

例2.4:IBM 370系列计算机的短浮点数表示方式,尾数基值r m =16,尾数字长为16进制6位,阶码基值r m =2,阶码字长6位,尾数用原码、小数表示,阶码用移码、整数表示。

求表数范围和表数精度,并尾数基址r m =2的浮点数表示方式进行比较。

解: 表数精度为:δ==⋅---121626121()表数范围是:N max ==62256162若尾数基值r m =2,则有:1222121⋅=---()p解得p =21,则q =32-21-2=9,它的表数范围是:N max ==9251222推论2:浮点数的尾数基值r m 取2,并采用隐藏位表数方法是最佳的浮点数表示方式。

这种浮点数表示方式能做到表数范围最大、表数误差最小、表数效率最高。

目前,IBM 公司的IBM360、370、4300系列机等,尾数基值r m =16。

Burroughs 公司的B6700、B7700等大型机,尾数基值r m =8。

DEC 公司的PDP-11、VAX-11和Alpha 等小型机,CDC 公司的CDC6600、CYBER70等大型机,Intel 公司的x86系列机等均采用尾数基值r m =2。

5、浮点数格式的设计定义浮点数表示方式的6个参数的确定原则: ∙ 尾数:多数机器采用原码、小数表示采用原码制表示:加减法比补码表示复杂,乘除法比补码简单 表示非常直观。

采用小数表示能简化运算,特别是乘除法运算。

∙ 阶码:一般机器都采用整数、移码表示采用移码表示的主要原因是:浮点0与机器0一致。

阶码进行加减运算时,移码的加减法运算要比补码复杂 ∙ 尾数的基值r m 选择2, ∙ 阶码的基值r e 取2,浮点数格式设计的关键问题是:在表数范围和表数精度给定的情况下,如何确定最短的尾数字长p 和阶码字长q例2.5:要求设计一种浮点数格式,其表数范围不小于1037,正、负数对称,表数精度不低于10-16。

解:根据表数范围的要求:q2137210-> 解这个不等式:q >+=log(log /log )log .3710212695 取阶码字长q =7根据表数精度的要求,得到:12211610⋅--<-(P )解这个不等式:p >-=-log log .16102532由于浮点数字长通常是8的倍数,因此取尾数字长p =55 所设计浮点数的格式如下:所设计浮点数的主要参数如下: 最大尾数值:()()11255-=---p r m绝对值最小的尾数值:112r m =最大阶码:q r e -=-=1211277 最小阶码:-=-=-q r e 72128 最大正数:7215555127381112212217010--⋅=-⋅-⋅⨯----==(pqr r m e m r )()().;最小正数:--⋅=⋅⨯--==72129391122214710r r m e mqr .; 最大负数:---⋅=-⋅⨯--=-=-7212939112214710r r m e mqr .; 最小负数:7215555127381112212217010---⋅--⋅-⋅⨯----=-=-(pqr r me m r )()().; 表数精度:δ=⋅⋅==⨯------=112222781015515517r r m m p ()().;浮点零:浮点零与机器零相同,64位全为0; 表数效率:采用隐藏位,表数效率η=100%;6、浮点数的舍入处理∙ 浮点数要进行舍入处理的原因是:十进制实数转化为浮点数时,有效位长度超过给定的尾数字长。

相关主题