第二章 指令系统
指令系统是计算机系统结构的主要组成部分
指令系统是软件与硬件分界面的一个主要标志
指令系统是软件与硬件之间互相沟通的桥梁
指令系统与软件之间的语义差距越来越大指 令 集 合软 件硬 件第二章 指令系统( P36)
本章介绍指令系统设计中 2个最基本的内容:
数据表示; 操作码优化
2.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次缩短程序执行时间一倍以上
数据表示在不断扩大、上移,如字符串、
向量、堆栈、图、表
用软件和硬件相结合的方法实现复杂数据类型例如:用字节编址和字节运算指令来支持字符串数据表示用变址寻址方式来支持向量数据表示浮点数据的分析与设计
2.1.1 浮点数据表示( P38,P39)
2.1.1.1 浮点数的组成 浮点数的组成与人们通常所说的,科学记数法,非常相似,唯一不同的是各部分均为 有限 位数,如下所示
emrmN
m ── 尾数,一般为纯小数,符合规格化原则(即最高位的绝对值不为 0),用 原码 或 补码 表示;
e ── 阶码,整数,常用 移码 表示;
rm ── 尾数的基值,简称尾基,常见的有 2,8,16,10进制等,选定以后不变;
re ── 阶码的基值,简称阶基,目前都采用 2,也是选定以后不变;
rgee?
2.1.1.2 浮点数的机内格式( P39)
一种浮点数表示中每个数据的尾基 rm,阶基 re均相同,在设计运算电路时作为默认值使用,在存储时只需要存入如下参数即可:
各字段位数,1 位 1 位 阶码 q 位 尾数 p 位浮点数字段,m f e f e q - 1 … … e 0,,m 1 … … m p
对应位的权,r e
q - 1
… … r e
0
r m
- 1
… … r m
- p
隐含小数点图 2,2 浮点数的机内格式
p ── 尾数的长度,未将符号位计入;
q ── 阶码的位数,未将符号位计入。
mf ── 尾数的符号,表数的正负,简称数符;
ef ── 阶码的符号,表阶码正负,简称阶符。但对移码表示来说,这仅是额外的 1位 2进制数,不决定正负。
2.1.1.3 浮点数的性能( P38)
浮点数的性能主要用 表数范围,表数精度 和 表数效率 来刻画
(1) 表数范围 ( P39)
表数范围由这样一些参数构成,最小负数,最大负数,最小正数,最大正数,
最小绝对值 |N|min,最大绝对值 |N|max。 它们几何意义可以在数轴上表示,
- ∞ 最小负数 最大负数 0 最小正数 最大正数 + ∞
图 2,3 数轴上的表数范围示意图灰色部分 为浮点数的 表数范围 。
根据浮点数的 组成表达式 可知,图 2.3中 4个边界值分别由尾数 m,阶码 e各自的边界值两两组合而成:
最大正数 ── 最大正尾数 /最大阶码;
最小正数 ── 最小正尾数 /最小阶码;
最大负数 ── 最大负尾数 /最小阶码;
最小负数 ── 最小负尾数 /最大阶码 。
例 2.1对 规格化 浮点数,尾数为原码纯小数,阶码为移 码整数,写出表数范围。( P40)
11 )1( qeqe rmpmrmm rrNrr
q
er?
解:因原码在数轴零点两边对称分布,即最大正数与最小负数绝对值相等、最小正数与最大负数绝对值相等,故可用最小、最大绝对值描述其分布。
根据图 2.2和式 2.1以及移码基本定义,可确定绝对值极值表达式:
。,,又;,,
dr
m
p
m
q
e
p
m
d
mmm
q
errNdrerm
rrNderm




12
m a xm a xm a x
1
m i nm i n
1
m i n
)1(12)1(?
写在一起就是:
drmpmdmm qerrNrr 121 )1(
再用阶码的偏移量代换式中的 -d得:
可以代入具体数字来帮助理解:
,如下图所示。,,
,于是有:按此题约定,
。,,,设
3101
m i n
3
m i n
1
m i n
3
1010 1010
10
310410



Ndem
d
qrpr em
,如下图所示。
,,
1104
m a x
3333
m a x
4
m a x
310)101(
1101011021102)101(



N
dem
1 位 1 位 阶码 3 位 尾数 4 位
x 0 0 0 0,,1 0 0 0
1 位 1 位 阶码 3 位 尾数 4 位
x 1 9 9 9,,9 9 9 9
例 2.2,设 p= 23,q= 7,rm= re= 2,尾数用原码、纯小数表示,阶码用移码、整数表示,求规格化浮点数 N的表数范围。
解,规格化浮点数 N的表数范围是:

1
2 2
7 72 23 2 11 2 2-N ( )
- 129 23 1272 1 2 2N ( )
11 )1( qeqe rmpmrmm rrNrr
表示范围与 阶码长度 q和尾数基值 rm关系
。qeqe rmrmpm rrrN 1m a x )1(
产生误差的根本原因是浮点数的 不连续性 (浮点集 )
误差产生的直接原因有两个:
一是两个浮点数都在浮点集内,而运算结果却可能不在这个浮点集内,
二是数据从十进制转化为 2,4,8,16进制,产生误差。
(2) 表数精度( P42)
数轴
N k 真实值 x N k + 1
图 2,4 最大绝对误差示意图
e
m
p
m
e
mkkkk rrrmmNN
2
1)(
2
1)(
2
1
11m a x?
表数精度用最大表数误差表示;
最大绝对误差 是真实值与可表示值之间的可能最大距离,
也就是相邻两个可表示值间距的
1/2,如图 2.4所示 。 根据浮点数的组成式有其定义:
显然它随着阶码 e 增大而增大,不是一个定数 。
最大相对误差 与阶码 e无关,但与尾数 m的值有关。它的定义是
p
me
m
e
m
p
m
r
mrm
rr
N



1
2
12
1
m a x
m a x
上式中,当分母 |m|取最小值时分式值达到最大 。
。为所以最大相对误差上限
,由于
2
1
)1(
m a x
01



p
m
mm
r
rmr
即最后 1个有效 位的可信度为一半,
当 rm= 2时,有:
(,) ( )2 2 212 1p p p
(3) 表数效率( P45)
定义:
mm
m
q
e
p
m
q
e
p
mm
m
rr
r
rr
rrr
r
1
1
1
22
12)1(2
)(
1




可以生成的浮点数个数其中规格化浮点数个数
此式说明效率之所以低于 100%,是因为规格化的尾数最高位 m1只能有 rm-1种取值的缘故 。 可以看出,的极小值与极大值分别是
%100)(lim%501 12)2(
mr
r
m
,
浮点数的表数效率随 rm增大当尾数基值 rm= 16时,浮点数的表数效率为:
尾数基值 rm= 16与 rm= 2相比,浮点数的表数效率提高了:
( )16 16 116 94%
T ( )( ),162 1 875 倍
[隐藏位技术 ]是一种提高表数效率的方法,但仅适用于 rm=2的情况:尾数最高位 m1 在二进制条件下只有 0和 1两种可能,按照规格化要求,m1 可由其它位推出。,隐藏,了 m1之后,尾数只存储后面
p-1位,它们中的任一位都有 rm种取值,所以表数效率 η=100%。
4、浮点数尾数基值的选择
在表示浮点数的 6个参数中,只有尾数基值
rm、尾数长度 p和阶码长度 q与表数范围、
表数精度和表数效率有关
在 字长确定 的情况下,如何 选择尾数基值 rm,
使表数范围最大、表数精度和表数效率最高假设有两种表示方式 F1和 F2,它们二进制字长相同,尾数都用原码或补码、小数表示,阶码都用移码、整数表示,阶码的基均为 2,尾数的基不同。
浮点数表示方式 F1:尾数基值 rm1= 2,尾数长度 p1,
阶码长度 q1,二进制字长,L1= p1+ q1+ 2。
浮点数表示方式 F2:尾数基值 rm2= 2k,尾数长度 p2,
阶码长度 q2,二进制字长,L2= k p2+ q2+ 2。
F1与 F2的 二进制字长相同,L1= L2,得:
p1+ q1= k p2+ q2 (2.1)
1 1 212 2kp klog
字长和表数范围确定时,尾数基值 rm与表数精度的关系
F1的表数范围是:,
F2的表数范围是:,
F1与 F2的 表数范围相同,得到:
两边取以 2为底的对数,得到,q1= q2+ log2 k
(2.2)
把 (2.2)式代入 (2.1)式,得到,p1= k p2- log2 k
F1的表数精度是,(2.3)
qN 121 2| |m a x?
| m a x | ( )N qk2 2 22?
q qk1 22 2
1 1 112 2 p
F2的表数精度是:
2 1 212 2k p( )
取 F2与 F1表数精度的比值:
(2.5)
只有 k= 1(尾数基值 rm= 2)或 k= 2(尾数基值 rm
= 4)时,比值 T= 1。
结论 1,在字长、表数范围一定时,尾数基值 rm
取 2或 4,浮点数具有最高的表数精度。
T k k 21 12 lo g
字长和表数精度一定,尾数基值 rm与表数范围的关系由 F1与 F2的表数精度相同得到:
即,p1= kp2- k+ 1 (2.6)
把 (2.6)代入 (2.1)得到,q1= q2+ k- 1 (2.7)
1
2 2
1
2 2
1 1 1 2p pk( )
F1的表数范围:
F2的表数范围:
q q k q k1 2 1 2 12 2 2 22 2 2
q qk k2 22 2
2 2( )
假设表数范围 F2大于 F1,则阶码的最大值 F2大于 F1:
这个不等式在正整数定义域内没有解,即不存在比 F1的表数范围更大的浮点数表示方式只有 k= 1(尾数基值 rm= 2)或 k= 2(尾数基值 rm= 4)时,
F2阶码的最大值等于 F1阶码的最大值。
结论 2:在字长和表数精度一定时,尾数基值 rm取 2或
4,浮点数具有最大的表数范围。
综合上述 2个结论:在字长确定之后,尾数基值 rm取 2
或 4,浮点数具有最大的表数范围和最高的表数精度。
q q k kk k2 2 1 12 2 2 2 即例 2.4,IBM 370系列计算机的短浮点数表示方式,尾数基值 rm= 16,尾数字长为 16进制 6位,阶码基值 re
= 2,阶码字长 6位,尾数用原码、小数,阶码用移码、
整数表示。求表数范围和表数精度,与尾数基值 rm=
2的浮点数表示方式进行比较。 (p.48-49)
解,表数精度为:
表数范围是:
若另一浮点表示的尾数基值 rm= 2,且要求与 rm= 16有同样表数精度:
解得 p= 21,则 q= 32- 21- 2= 9,它的表数范围是:
12 16 26 1 21( )
N m a x62 25616 2
12 2 21 21( )p
N ma x92 5122 2
推论 2,浮点数的尾数基值 rm取 2,并采用隐藏位表数方法是最佳的浮点数表示方式。这种浮点数表示方式能做到表数范围最大、表数误差最小、表数效率最高。
目前,IBM公司的 IBM360,370,4300系列机等,
尾数基值 rm= 16。
DEC公司的 PDP-11,VAX-11和 Alpha等小型机,CDC公司的 CDC6600,CYBER70等大型机,Intel公司的 x86系列机等均采用尾数基值
rm= 2。
5、浮点数格式的设计定义浮点数表示方式的 6个参数 的确定原则:
尾数,多数机器采用原码、小数表示采用原码制表示:加减法比补码表示复杂,乘除法比补码简单,表示非常直观。
采用小数表示能简化运算,特别是乘除法运算。
阶码,一般机器都采用整数、移码表示采用移码表示的主要原因是:浮点 0与机器 0一致。
阶码进行加减运算时,移码的加减法运算要比补码复杂
尾数的基值 rm选择 2,
阶码的基值 re取 2,
浮点数格式设计的关键问题是:
在表数范围和表数精度给定的情况下,如何确定最短的尾数字长 p和阶码字长 q
例 2.5,要求设计一种浮点数格式,其表数范围不小于 1037,正、负数对称,表数精度不低于 10-16。
解,根据表数范围的要求:
解这个不等式:
取阶码字长 q= 7
根据表数精度的要求,得到:
解这个不等式:
由于浮点数字长通常是 8的倍数,因此取尾数字长 p
= 55
q2 1 372 10
qlo g ( lo g / lo g )lo g,3710 2 12 6 95
1
2 2
1 1610( P )
plo glo g,1610 2 53 2
所设计浮点数的格式如下:
1位 1位 7位 55位所设计浮点数的主要参数如下:
最大尾数值:
绝对值最小的尾数值:
最大阶码:
最小阶码:
mf ef e m
( ) ( )1 1 2 55pr m
1 1
2rm
qr e1 2 1 1277
qr e 72 128
最大正数,;
最小正数,;
最大负数,;
最小负数:
表数精度:
浮点零:浮点零与机器零相同,64位全为 0;
表数效率:采用隐藏位,表数效率
721 55 55 127 3811 1 2 2 1 2 2 1 70 10( p qr r
m em r) ( ) ( ),
72 129 391 1
2 2 2 1 47 10r rm
em qr,
72 129 391 1
2 2 2 1 47 10r rm
em qr,
721 55 55 127 3811 1 2 2 1 2 2 1 70 10( p qr r
m em r) ( ) ( ),
1 12 2 2 2 78 101 55 1 55 17r r
m m
p( ) ( ),
100%
Density of Floating Point
Numbers
表示范围与精度的权衡(总位数一定):若增加指数位数,
扩充了表数范围;但因总位数不变,能表示的数的总数不变,
于是减少了数的密度,因而降低了精度习题,P124,题 3(忽略 P124倒 1行 ~ P125第 8行文字),
2.1.3 自定义数据表示
目前在多数计算机中数据存储单元(寄存器、主存储器、外存储器等)只存放纯数据,
通过指令中的操作码来解释:
数据的类型(定点数、浮点数、复数、字符、字符串、逻辑数、
向量等)
进位制( 2进制,10进制,16进制等)
数据字长(字、半字、双字、字节等)
寻址方式(直接寻址、间接寻址、相对寻址、寄存器寻址等)
数据的功能(地址、数值、控制字、标志等)等同一种操作指令通常需要很多条
在高级语言和其它许多应用软件中数据的属性必须由数据自己定义
在高级语言与机器语言之间的语义差距,要靠编译器等填补
60年代开始,Burroughs公司在大型计算机中引入自定义数据表示方式 和 带标志符的数据表示方式
1、带标志符的数据表示法
Burroughs公司的标志符数据表示方法在 B5000大型机中,每个数据有一位标志符在 B6500和 B7500大型机中,每个数据有三位来标志符在 R-2巨型机中采用 10位标志符带有标志符的数据表示方式
2位 2位 1位 4位 1位
10位标志符在 R-2巨型机中带标志符的数据表示方式标志符 数 值功能 陷井 封写 类型 校验 数 值
R-2巨型机中的标志符功能位:操作数、指令、地址、控制字陷井位:由软件定义四种捕捉方式封写位:指定数据是只读的还是可读可写类型位:对于操作数:二进制、十进制、定点数、浮点数、
复数、字符串、单精度、双精度等对于地址:绝对地址、相对地址、变址地址、未连接的地址等
标志符由编译器或其它系统软件建立,对程序员透明
程序(包括指令和数据)的总存储量分析数据存储量增加,指令存储量减少采用标志符数据表示方法的主要 优点,
1、简化了指令系统。
2、由硬件自动实现一致性检查和数据类型的转换。
3、简化程序设计,缩小了人与机器之间的语义差距。
4、简化编译器,使高级语言与机器语言之间的语义差距大大缩短。
5、支持数据库系统,一个软件不加修改就可适用于多种数据类型。
6、方便软件调试,在每个数据中都有陷井位。
采用标志符数据表示方法的主要 缺点,
1、数据和指令的长度可能不一致。
2、指令的执行速度降低(程序的设计时间、编译时间和调试时间缩短)
3、硬件复杂度增加。
2、数据描述符表示法
数据描述符与标志符的区别:
标志符只作用于一个数据,而 数据描述符要作用于一组数据 。
Burroughs公司生产的 B-6700机中采用的数据描述符表示方法。
最高三位为 101时表示数据描述符,
最高三位为 000时表示数据。
例如:用数据描述符表示方法表示一个 3× 4矩阵 A。
A
a a a a
a a a a
a a a a
11 12 13 14
21 22 23 24
31 32 33 34
图 2.11 用数据描述符表示方法表示一个 3× 4矩阵