超大规模集成电路设计笔记:第二篇
浮点数
浮点数标准
IEEE标准754-1985定义了浮点数的存储格式、运算规则、舍入方式以及特殊值的处理(如无穷大、NaN等)。其核心思想是用科学计数法的形式来表示实数:
其中:
- s为符号位;
- M为尾数,即有效数字部分,在1-2之间;
- F为小数部分,在0-1之间;
- E为指数,表示以 2 为底的幂次。
IEEE 754 定义了多种精度格式,最常用的是单精度浮点数与双精度浮点数:
- 单精度浮点数 总共 32 位(4 字节)
- 1 位符号位
- 8 位指数(偏移量为 127)
- 23 位尾数(实际精度为 24 位,因为有隐含的前导 1)
- 双精度浮点数 总共 64 位(8 字节)
- 1 位符号位
- 11 位指数(偏移量为 1023)
- 52 位尾数(实际 53 位精度)
相对精度
在浮点数表示中,相对精度是近似恒定的(在同一个指数区间内),这是浮点数优于定点数的关键之一。
浮点加法
计算分四步走:
- 对齐数字:按较小的指数移动数字
- 整数及尾数相加
- 规格化结果并检查是否上溢或下溢
- 若有必要,进位并再次规格化
我们首先考虑4位的十进制:9.999 × 101 + 1.610 × 10–1 = ?
1 | 9.999 × 10^1 + 1.610 × 10^–1 |
随后考虑4位的二进制:1.0002 × 2–1 + –1.1102 × 2–2 (0.5 + –0.4375) = ?
1 | 1.000(2) × 2^{–1} + –1.110(2) × 2^{–2} (0.5 + –0.4375) |
硬件实现
显然,与整数加法器相比,浮点加法器的硬件结构要复杂得多。考虑到其复杂性,在一个时钟周期内完成会花费太长时间,因此通常设计橙需要几个周期才能完成计算。常用流水线来实现。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Esing的小站!
评论
WalineGitalk