gpt4 book ai didi

floating-point - 从硬件架构的角度来看,为什么非规范化 float 比其他 float 慢得多?

转载 作者:行者123 更新时间:2023-12-03 20:52:23 26 4
gpt4 key购买 nike

Denormals众所周知,与正常情况相比,表现严重不佳,大约是 100 倍。这经常导致 unexpected软件 problems .

我很好奇,从 CPU 架构的角度来看,为什么非规范化必须是 那么多慢点?缺乏表现是他们不幸的代表所固有的吗?或者 CPU 架构师可能会在非规范化无关紧要的(错误的)假设下忽略它们以降低硬件成本?

在前一种情况下,如果非规范化本质上对硬件不友好,是否存在已知的非 IEEE-754 浮点表示,它们在零附近也是无间隙的,但更便于硬件实现?

最佳答案

在大多数 x86 系统上,速度慢的原因是非规范值触发了 FP_ASSIST,这在切换到微代码流时代价非常高(非常像故障)。

参见例如 -
https://software.intel.com/en-us/forums/intel-performance-bottleneck-analyzer/topic/487262

出现这种情况的原因可能是架构师决定通过推测每个值都被标准化(这将更常见)来优化正常值的硬件,并且不想冒风险频繁使用案例的性能为了罕见的极端情况。这种推测通常是正确的,因此您只有在错误时才支付罚款。这些权衡在 CPU 设计中非常常见,因为在一种情况下的任何投资通常都会增加整个系统的开销。

在这种情况下,如果您要设计一个尝试优化所有类型的不规则 FP 值的系统,您将不得不添加硬件来检测和记录每次操作后每个值的状态(这将乘以物理 FP 寄存器、执行单元、RS 条目等 - 总计有大量晶体管和电线。
或者,您必须添加一些机制来检查读取的值,这会在读取任何 FP 值(即使是正常值)时减慢您的速度。

此外,根据类型,您是否需要执行一些更正 - 在 x86 上,这是辅助代码的目的,但如果您没有进行推测,则必须有条件地对每个值执行此流程,这已经在公共(public)路径上增加了很大一部分开销。

关于floating-point - 从硬件架构的角度来看,为什么非规范化 float 比其他 float 慢得多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36781881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com