最近比尔盖子在用VB6.0编写一个小型程序。在高级编译优化选项中,有一项:“取消 Pentium(tm) FDIV 安全性检查”,这是什么意思呢?在查阅了资料以后,终于明白了,我们就来了解一下吧。
1994年10月,美国弗吉尼亚州Lynchburg College数学系教授Thomas Nicely发现用电脑处理长除法时一直出错。他用一个数字去除以824,633,702,441时,答案一直是错误的。事后才知道,这位教授使用的60-100MHz P5版本奔腾处理器在浮点运算单元有一个问题,原因是英特尔为了加速运算,将整个乘法表烧录在处理器上面,但是2048个乘法数字中,有5个输入错误。在极少数情况下,会导致除法运算的精确度降低甚至出错。这就是后来臭名昭著的Pentium FDIV bug。
因此,为了避免由于处理器bug导致的运算错误,很多编译器都增加了一个编译选项,可以让程序通过间接运算的方法绕过这个FDIV bug,避免在有 FDIV bug的奔腾处理器上运算错误。但是,由于如今几乎已经不可能有人使用这种老奔腾处理器了,因此可以在VB6.0或其它的编译器中(如果有的话),安全的“取消 Pentium(tm) FDIV 安全性检查”,可以轻微提高性能,同时不会导致任何异常。
文章来源:http://biergaizi.info/?p=1300