【Computer Organization笔记06】浮点数的数据表示,浮点数加减运算
本次笔记内容:
P11 计算机组成原理(11)
P12 计算机组成原理(12)
本节课对应幻灯片:组成原理13 data,第72页起。此外,本节课内容“浮点数”已经在“汇编语言”中详细讲解过,具体可见如下笔记:
- 【汇编语言与计算机系统结构笔记03】浮点数的计算机表示,IEEE 754,舍入(rounding),C语言中的浮点数
- 【例题】给定一个浮点格式(IEEE 754),有k位指数和n位小数,对于下列数,写出阶码E、尾数M、小数f和值V的公式。另外,请描述其位表示。
本次笔记内容可能较少——只记录跟硬件相关的(汇编中未提及的)。
浮点数已有知识概括
浮点数可以理解为二进制的科学计数法
,其中尾数
和阶
需要记录在计算机内。
数据想要符合计算机记录规范,需要进行“规格化”处理,然后记录在计算机里。
这张图其实比较清晰。
对于如的部分,由第二行非规格化数
表示。
在计算机运算中,如果由一个数是NaN,那么其结果一定是NaN。
浮点数的进制转换
十进制到二进制:
对于除数不是2的整数倍的:则需要舍入。
浮点数的运算
浮点数加减运算
首先应该“对阶”。
- 对阶操作,求阶差:,使阶码小的数的尾数右移位(
右移出的数,被放到保护位中
),其阶码取大的阶码值; - 尾数加减;
- 规格化处理;
- 舍入操作,可能带来又一次规格化;
- 判断正确性,是否有溢出等。
浮点运算的特点
- 浮点加、减法不满足结合律;
- 浮点加、减法不可结合;
- 浮点数最好
不要
进行相等
比较。
浮点运算部件
两个ALU分别计算阶数与尾数。
Intel 80287
在 Intel 80297 中:
- 浮点运算部件以协处理器方式和CPU连接,有独立的控制逻辑;
- 8个80位浮点数寄存器,精度更高,采用堆栈结构并进行了扩展;
- 支持3大类共7种数据,支持约60条指令。
后来没有独立浮点数处理器,都集成到CPU内部
这是对于Pentium的结构而言。
数据及数据类型
计算机中的数据可以表示任何事情:数据
还是命令
,需要根据出现在周期内的不同时间进行判断。这可能造成一些安全隐患,比如命令
被伪装成数据
,“伺机而动”…