计算机系统结构第二章第一部分
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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,浮点数具有最高的表数精度。