【Computer Organization笔记06】浮点数的数据表示,浮点数加减运算

本次笔记内容:
P11 计算机组成原理(11)
P12 计算机组成原理(12)

本节课对应幻灯片:组成原理13 data,第72页起。此外,本节课内容“浮点数”已经在“汇编语言”中详细讲解过,具体可见如下笔记:

本次笔记内容可能较少——只记录跟硬件相关的(汇编中未提及的)。

浮点数已有知识概括

浮点数可以理解为二进制的科学计数法,其中尾数需要记录在计算机内。

数据想要符合计算机记录规范,需要进行“规格化”处理,然后记录在计算机里。

【Computer Organization笔记06】浮点数的数据表示,浮点数加减运算

这张图其实比较清晰。

【Computer Organization笔记06】浮点数的数据表示,浮点数加减运算

对于如(2126,2126)(-2^{-126},2^{-126})的部分,由第二行非规格化数表示。

在计算机运算中,如果由一个数是NaN,那么其结果一定是NaN。

浮点数的进制转换

【Computer Organization笔记06】浮点数的数据表示,浮点数加减运算

十进制到二进制:

【Computer Organization笔记06】浮点数的数据表示,浮点数加减运算

对于除数不是2的整数倍的:则需要舍入。

【Computer Organization笔记06】浮点数的数据表示,浮点数加减运算

浮点数的运算

浮点数加减运算

首先应该“对阶”。

X=MX×2EX      Y=MY×2EYX = M_X \times 2^{E_X} \; \; \; Y = M_Y \times 2^{E_Y}

  1. 对阶操作,求阶差:ΔE=MXMY\Delta E = M_X - M_Y,使阶码小的数的尾数右移ΔE|\Delta E|位(右移出的数,被放到保护位中),其阶码取大的阶码值;
  2. 尾数加减;
  3. 规格化处理;
  4. 舍入操作,可能带来又一次规格化;
  5. 判断正确性,是否有溢出等。

浮点运算的特点

  • 浮点加、减法不满足结合律;
  • 浮点加、减法不可结合;
  • 浮点数最好不要进行相等比较。

浮点运算部件

【Computer Organization笔记06】浮点数的数据表示,浮点数加减运算

两个ALU分别计算阶数与尾数。

Intel 80287

【Computer Organization笔记06】浮点数的数据表示,浮点数加减运算

在 Intel 80297 中:

  • 浮点运算部件以协处理器方式和CPU连接,有独立的控制逻辑;
  • 8个80位浮点数寄存器,精度更高,采用堆栈结构并进行了扩展;
  • 支持3大类共7种数据,支持约60条指令。

后来没有独立浮点数处理器,都集成到CPU内部

【Computer Organization笔记06】浮点数的数据表示,浮点数加减运算

这是对于Pentium的结构而言。

数据及数据类型

计算机中的数据可以表示任何事情:数据还是命令,需要根据出现在周期内的不同时间进行判断。这可能造成一些安全隐患,比如命令被伪装成数据,“伺机而动”…