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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二章指令系统

指令系统是计算机系统结构的主要组成部分

指令系统是软件与硬件分界面的一个主要标志

指令系统软件与硬件之间互相沟通的桥梁

指令系统与软件之间的语义差距越来越大

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条,

N m m e r =⋅ 读或写数据3×40,000个,

共要访问主存储器7×40,000次以上

如果有向量数据表示,只需要一条指令

减少访问主存(取指令)次数:4×40,000次

缩短程序执行时间一倍以上

数据表示在不断扩大,如字符串、向量、堆栈、图、表

用软件和硬件相结合的方法实现新的数据表示

例如:用字节编址和字节运算指令来支持字符串数据表示

用变址寻址方式来支持向量数据表示

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 均不包括符号位

浮点数的存储式 1位 1位 q 位 p 位

m f

e f e m 注:m f 为尾数的符号位,e f 为阶码的符号位,e 为阶码的值,m 为尾数的值。

2、浮点数的表数范围

尾数为原码

尾数用原码、纯小数,阶码用移码、整数时,规格化浮点数N 的表数范围:

---⋅≤≤-⋅-111r r N r r m m p m m q e q e r r ()

尾数为补码

尾数用补码表示时,正数区间的表数范围与尾数采用原码时完全相同,而负数区间的表数范围为:

q e q

e r r r N r r r m m p m m ----≤≤-+⋅-11() 浮点数在数轴上的分布情况

上溢 下溢(浮点零) 上溢

-N min 负数区 -N max 0 N min 正数区 N max

例2.2:设p =23,q =7,r m =r e =2,尾数用原码、纯小数表示,阶码用移码、整数表示,求规格化浮点数N 的表数范围。

解:规格化浮点数N 的表数范围是:

12

27722321122-≤≤-⋅--N () 即: -129231272

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

解: 规格化浮点数N 在正数区间的表数范围是:

-6566316

11616≤≤-⋅-N () 在负数区间的表数范围是: 63664161616116

-≤≤-+⋅--N (

) 3、浮点数的表数精度(误差)

产生误差的根本原因是浮点数的不连续性

误差产生的直接原因有两个:

一是两个浮点数都在浮点集内,而运算结果却可能不在这个浮点集内, 二是数据从十进制转化为2、4、8、16进制,产生误差。

规格化尾数的表数精度为:

δ(,)()r p p m m r =--12

1 最后1个有效位的可信度为一半,

当r m =2时,有:

δ(,)()22

2121p 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时,浮点数的表数效率为:

η()1616116

94%=-= 尾数基值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 1

212||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的表数精度是:δ11112

2=⋅-p (2.4) 把(2.3)代入(2.4)得到:δ11212

2=⋅-+kp k log F2的表数精度是:δ21212

2=⋅⋅-k p () 取F2与F1表数精度的比值:T k k ==--δδ21

12log (2.5) 只有k =1(尾数基值r m =2)或k =2(尾数基值r m =4)时,比值T =1。 结论1:在字长和表数范围一定时,尾数基值r m 取2或4,浮点数具有最高的表数精度。

相关文档
最新文档