第二章 指令系统

习题

2.1 数据类型、数据表示和数据结构之间的关系是什么?在设计一个计算机系统时,确定数据表示的原则主要有哪几个?

2.2 尾数用补码、小数表示,阶码用移码、整数表示,尾数字长p=6(不包括符号位),阶码字长q=6(不包括符号位),尾数基值rm=16,阶码基值re=2。对于规格化浮点数,用十进制表达式写出下列数据(对于前11项,还要写出16进制编码):
(1) 最大尾数; (2) 最小正尾数;
(3) 最小尾数; (4) 最大负尾数;
(5) 最大阶码; (6) 最小阶码;
(7) 最大正数; (8) 最小正数;
(9) 最大负数; (10) 最小负数;
(11) 浮点零; (12) 表数精度;
(13) 表数效率; (14) 能表示的规格化浮点数个数。

2.3 在IEEE 754浮点数国际标准中,32位单精度浮点数和64位双精度浮点数的格式分别如下:

对于单精度浮点数,尾数用原码、小数表示,阶码用移-127码表示,即阶码的0~255分别表示阶码的真值为-127~128。尾数用1位符号位、23位小数和1位隐藏的整数共25位表示。尾数的基值和阶码的基值都是2。
当0<e<255时,表示一个非零的规格化浮点数,数值为:

当e=255,且m≠0时,表示一个非数NaN(Not-a-Number)。NaN可能是在许多非确定的情况下,如零除以零,求负数的平方根等产生的结果。
当e=255,且m=0时,表示一个无穷数:。注意+∞和-∞的表示是不同的。
当e=0,且m≠0时,表示规格化浮点数:
当e=0,且m=0时,表示浮点数零: 。注意+0与-0的表示是不同的。
对于64位双精度浮点数,阶码用移-1023码表示,其它规定与单精度浮点数类似。
对于32位单精度浮点数和64位双精度浮点数,分别写出:
(1)最大正数; (2)最小正数;
(3)最大负数; (4)最小负数;
(5)表数精度; (6)表数效率;

2.4 请证明:在浮点数的字长和表数精度一定时,尾数基值rm取2或4,浮点数具有最大的表数范围。

2.5 一台计算机系统要求浮点数的精度不低于,表数范围正数不小于,且正、负数对称。尾数用原码,纯小数表示,阶码用移码,整数表示。
(1) 设计这种浮点数的格式。
(2) 计算(1)所设计浮点数格式实际上能够表示的最大正数、最大负数、表数精度和表数效率。

2.6 在同一种处理机内部提供有如下两种浮点数格式:
格式一:IBM单精度浮点数标准

尾数用原码,小数表示。阶码用移码,整数表示。尾数的基值rm=16,长度为6位,没有隐藏位。阶码的基值re=2。
格式二:IEEE 754单精度浮点数标准

尾数用原码、小数表示,阶码用移-127码表示,即阶码的0~255分别表示阶码的真值为-127~128。尾数用1位符号位、23位小数和1位隐藏的整数共25位表示。尾数的基值和阶码的基值都为2。
(1) 把十进制数0.2分别表示成IBM单精度浮点数和IEEE 754单精度浮点数。
(2) 现在要把一个IBM单精度浮点数转成同样数值的IEEE 754单精度浮点数,请写出转换规则。
(3) 相反,如果要把IEEE 754单精度浮点数转成同样数值的IBM单精度浮点数,写出转换规则。

2.7 假设有A和B两种不同类型的处理机,A处理机中的数据不带标志符,其指令字长和数据字长均为32位。B处理机的数据带有标志符,每个数据的字长增加至36位,其中有4位是标志符,它的指令条数由最多256条减少至不到64条。如果每执行一条指令平均要访问两个操作数,每个存放在存储器中的操作数平均要被访问8次。对于一个由1000条指令组成的程序,分别计算这个程序在A处理机和B处理机中所占用的存储空间大小(包括指令和数据),从中得到什么启发?

2.8 对于一个字长为64位的存储器,访问这个存储器的地址按字节编址。假设存放在这个存储器中的数据中有20%是独立的字节数据(指与这个字节数据相邻的不是一个字节数据),有30%是独立的16位数据,有20%是独立的32位数据,另外30%是64位数据;并且规定只能从一个存储字的起始位置开始存放数据。
(1) 计算这种存储器的存储空间利用率。
(2) 给出提高存储空间利用率的方法,画出新方法的逻辑框图,并计算这种方法的存储空间利用率。

2.9 分别用变址寻址方式和间址寻址方式编写一个程序,求C=A+B,其中,A与B都是由n个元素组成的一维数组。比较两个程序,并回答下列问题:
(1) 从程序的复杂程度看,哪一种寻址方式更好?
(2) 从硬件实现的代价看,哪一种寻址方式比较容易实现?
(3) 从对向量运算的支持看,哪一种寻址方式更好?