第二章 数据表示、寻址方式与指令系统

2.1 数据表示

2.1.1 数据表示与数据结构

数据表示指的是能由计算机硬件识别和引用的数据类型,表现在它有对这种类型的数据进行操作的指令和运算部件。

数据结构是要通过软件映像,变换成计算机中所具有的数据表示来实现的。

数据结构和数据表示是软、硬件的交界面,实质上是软、硬件的取舍。

早期计算机只有定点数据表示,使用浮点数则需要两个定点数分别表示其阶码和尾数。

计算机的运算类指令和运算器结构主要是按照计算机有什么样的数据表示来确定。

确定数据表示时应考虑怎样为数据结构的实现同进一步的支持。引入一些高级数据表示,这比在指令系统中增设技巧性新指令意义要大。

2.1.2 高级数据表示

1.自定义数据表示

自定义(Self-defining)数据表示包括标志符数据表示和数据描述两类

(1)标志符数据表示

为缩短高级语言与机器语言的语义差距,让计算机每个数据都带如下类型标志位

lxbzw

以说明数据究竟是何种类型。

机器语言中的操作码也就和高级语言中的运算符一样,可以通用鱼各种数据类型操作。这种数据表示称为标志符数据表示。

标志符虽然主要用于指明数据类型,也可用于指明所用的信息类型。标志位应由编译程序建立,对高级语言程序透明,以减轻应用程序员负担。

主要优点:

1)简化指令系统和程序设计。由于指令通用于多种数据类型的处理,减少了指令系统中指令的种类,因此简化了程序设计。

2)简化了编译程序。在一般计算机中,目的代码的形成需要进行细致的语义分析。

3)便于实现一致性校验。可由计算机硬件直接快速检测出多种程序设计错误,提供了类型安全环境。

4)能由硬件自动变换数据类型。如果操作数相容但长度不同时,硬件能自行转换,然后运算。

5)支持数据库系统的实现与数据类型无关的要求,使程序不用修改即可处理多种不同类型的数据。

6)为软件调试和应用软件开发提供了支持。由于可用软件定义的捕捉标志位设置了断点,因此便于程序的跟踪和调试。

带来的问题:

1)每个数据字因增设标志符,增加程序所占的主存空间,但只要合理设计,这种增加量是很小的,甚至有可能减少。

2)采用标志符会降低指令的执行速度。引入标志符数据表示对微观速度(计算机的运算速度)不利,但对宏观速度(解题总时间)有利。

(2)数据描述符

为进一步减少标志符所占的存储空间,对向量、数组、记录等数据,由于元素属性相同,因此发展出数据描述符。

数据描述符和标志符的差别在于标示符是和每个数据相连的,合存在一个存储单元中,描述单个数据的类型特征;数据描述符则是与数据分开存放,用于描述所要访问的数据是整块的还是单个的,访问该数据块或数据元素所要的地址以及其他信息。

用描述符方式访存取操作数

用描述符方式访存取操作数

按指令操作数x、y访存,取来的字,若其前3位为“000”,就是所需的操作数;若为“101”,表明它是描述符,将它取到描述符寄存器,由它的标志位、长度和地址字段联合控制,经地址形成逻辑形成操作数的地址,再访存取数据。对于数据块,访存取到寄存器的描述符可用于块内所有元素,不必每次访存都访存取描述符。

数据描述符方法为向量、数组数据结构的实现提供了一定的支持,有利于简化编译中的代码生成,可以比变址法更快的形成元素地址。但向量、阵列各元素能否同时并行运算与是否采用数据描述符却没有直接关系,取决于运算器和控制器的结构。

2.向量、数组数据表示

为向量、数组数据结构的实现和快速运算提供更好的硬件支持的方法是增设向量、数组数据表示,组成向量机。

有向量数据表示的处理机就是向量处理机,如向量流水机、阵列机、相联处理机等、

无向量、数组数据表示的计算机上经编译后需借助于变址操作实现。

有向量、数组数据表示的计算机上,硬件上设有丰富的向量或阵列运算指令,配有流水或阵列处理方式的高速运算器,只需要一条向量加法指令。

jfzl

3.堆栈数据表示

堆栈数据结构在编译和子程序调用中很有用,为高效实现,不少计算机都设有堆栈数据表示。有堆栈数据表示的计算机称为堆栈计算机。

一般通用寄存器型计算机对堆栈数据结构实现的支持是比较差的。表现为堆栈操作用的机器指令少,功能单一,堆栈置于存储器内,访问对战速度低,通常只用于保存子程序调用时的返回地址,少量用堆栈来实现程序之间的参数传递。

表现:

1)由高速寄存器组成的硬件堆栈,并附加控制电路,让它与主存中的堆栈区在逻辑上构成整体,使堆栈的访问速度是寄存器的,容量是主存的。

2)有丰富的堆栈操作指令且功能强,可直接对堆栈中的数据进行各种运算和处理。

3)有力的支持了高级语言程序的编译,直接生成堆栈指令程序,简化了编译,显著缩小了高级语言和机器语言的语义差距。

4)有力的支持了子程序的嵌套和递归调用。

2.1.3 引入数据表示的原则

存储器一维线性的存储结构与要求经常使用的多维离散数据结构有着很大差距,这不利于数据结构的实现。

遵循以下原则来确定计算机的数据结构:

原则1 看系统效率是否有显著提高,包括实现时间和存储空间是否显著减少。实现时间是否减少又主要看在主存和处理机之间传送的信息量是否减少。传送的信息量少,实现时间就少。

原则2 看引入这种数据表示后,其通用性和利用率是否提高。

目前除了基本数据表示外,根据应用环境,可引入较复杂的高级数据表示,有自定义数据表示、堆栈数据表示和向量、数组数据表示。

2.1.4 浮点数尾数基值大小和下溢处理方法的选择

1.浮点数尾数基值的选择

当计算机字长相同时,用浮点数表示实数比用定点数表示有更大的可表示数范围。一般计算机采用下图方式表示数范围。

浮点数一般格式

浮点数一般格式

图中阶码部分包含了阶符和阶值两部分。阶码部分可用原码、补码、移码表示。

p+1位阶码部分中影响阶值大小的实际只有p位。

由于计算机字长有限,浮点数只能表示数轴上分散于正、负两个区间的部分离散值。

浮点数可表示实数域中的值

浮点数可表示实数域中的值

显然,浮点数阶值的位数p主要影响两个表示区的大小,即可表示数的范围大小,而尾数的位数m主要影响在可表示区中能表示值的精度。

在计算机中,一个rm进制的位数是用

个计算机位来表示的。

尾数的计算机位数为m时,相当于rm进制的尾数有m`个数位。其中:

采用尾基为rm的浮点数表示的特性及其举例

采用尾基为rm的浮点数表示的特性及其举例

规格化正尾数,就是正尾数小数点后的第一个rm进制数位不是0的数。

最小正尾数应该是rm进制尾数的小数点后第1个rm进制数位为“1”,其余数位为全“0”的数值,即

最大正尾数值是rm进制尾数各数位均为rm-1

可表示的最大尾数值应当为

最小阶位0,最大阶应当是阶值部分p位为全“1”,所以,最大阶为2p-1。阶的个数由0到2p-1,共2p个。

可表示的浮点数的最小值应当为

可表示浮点数的最大值是阶为正的最大值2p-1,尾数为格式化正尾数最大值。
可表示的浮点数最大值应当为

可表示的浮点数格式化的总个数为

(1)可表示数的范围
对于大的rm值,为表示相同范围的书,其阶值位数p可以减少
(2)可表示数的个数
rm的增大将因

增大而是可表示的个数增多。
(3)数轴分布
rm越大,在于rm=2的浮点数相重叠的范围内,数的密度分布要稀得多。
(4)可表示的精度
可表示数的精度随rm增大而单调下降
(5)运算中的精度损失
rm越大,尾数右移的机会越小,精度损失就越小。
(6)运算速度
rm增大,由于对阶或尾数溢出需右移及规格化需左移的次数减少,运算速度可以提高。
2.浮点数尾数的下溢处理方法

减少运算中的精度损失的关键是要处理好运算中尾数超出字长的部分,使之精度损失最小。

(1)截断法

将尾数超出计算机字长的部分截去。

最大误差在整数时接近于1,分数时接近于2-m,对正数总是产生负误差,除非圆点处无误差。截断误差在不同尾数值时时均匀分布的,统计平均误差为负且比较大,无法调节。
好处:实现最简单,不增加硬件,不需要处理时间。
缺点:最大误差较大,平均误差大且无法调节
应用场合:已很少使用
(2)舍入法
在计算机运算的规定字长外增设一位附加位,存放溢出部分的最高位,每当进行尾数下溢处理时,将其附加位加1.
最大误差整数为0.5,分数为2-(m+1)
对于正数,误差有正有负,统计平均误差趋于0但略偏正,平均误差无法调节。
好处:实现简单,增加的硬件很少,最大误差小,平均误差接近于0。
缺点:处理速度慢,需要花费在数的附加位+1以及因此产生进位的时间。最坏情况下可能需要从尾数最低位进位至最高位,甚至发生尾数上溢而必须再进行右移。
应用场合:中低速计算机或要求精度损失尽可能小的场合
(3)恒置“1”法
将计算机运算的规定字长的最低位恒置为“1”。
最大误差整数为1,分数为2-m
对于正数,误差有正有负。统计平均误差接近于0但略偏正,因为圆点都在理想曲线上,平均误差无法调节。
好处:实现方法最简单,不需要增加硬件和处理时间,平均误差趋于0。
缺点:最大误差最大,比截断法还要大。
应用场合:中高速计算机
注:最大误差问题,由于中高速计算机的尾数位数要比小微机的长的多,因此,实际的最大误差要小得多。
(4)查表舍入法
查表舍入法是用ROM或PLA存放下溢处理表。
2-10krom
其中k位地址使用尾数最低的k-1位和准备舍弃掉的最高位状态,读出的内容就是对应k-1位的下溢处理结果。
ROM中下溢处理表内容可根据情况由设计者事前填好。
通常,下溢处理表的内容安排成尾数最低k-1位为全“1”时,以截断法设置处理结果,即输出k-1位的全“1”,其余情况按舍入法设置下溢处理结果。这样,截断法的负误差可补偿舍入法产生的正误差,使平均误差为0.它集中了上述各种下溢处理方法的优点。避免了舍入法所需相加和进位的时间。因ROM的读出时间比加法时间少,所以,查表舍入法速度较快。
优点:平均误差可调节到0,是较好的方法。
缺点:硬件量大

rm=2, m=2 时,各种下溢处理方法的误差曲线

rm=2, m=2 时,各种下溢处理方法的误差曲线

与本文相关的文章
版权声明
转载保留版权: 大D综合研究院 | 《《计算机系统结构》读书笔记(二)》
本文链接地址:https://www.dadclab.com/archives/3019.jiecao
转载须知:如果您需要转载本文,请将版权信息,版权授权方式,以及本文的链接地址注明,谢谢合作。
本文被贴上了: , , , , 标签