假设相同的指令在被比较的 CPU 上可用,相同的输入和相同的操作参数,例如舍入模式?我对时间上的差异不感兴趣,对Pentium FDIV 错误也不感兴趣(仅因为该事件是古老的,所以不符合条件)。
我想对于加法、减法、否定和四舍五入来说答案是肯定的,因为它们有精确的定义,而且我几乎无法想象实现中的差异可能是什么(可能缺少检测溢出的错误/下溢,但这在某些应用程序中将是一场灾难,所以我想这早就被捕获并修复了)。
乘法似乎更有可能有不同的实现:确定两个 DPFPN 乘积的(比如说)最接近的可表示双精度浮点数(64 位,包括尾数的 52+1)有时需要计算它们尾数的乘积为(大约)104 位精度,对于少数 LSBits 来说,这可以说是浪费精力。我想知道这是否被尝试过,并且做得正确。或者也许 IEEE-754 或一些事实上的标准规定了一些东西?
分裂似乎更加微妙。
而且,由于缺乏通用设计,我怀疑更复杂的事物(三角函数、日志..)的所有实现都可以完全同步,因为可以使用各种数学方法。
我问这个是出于纯粹的爱管闲事;愿意改进我的答案;并且希望有一种方法(有时)允许在 VM 中运行的程序检测假装运行的 CPU 与真实 CPU 之间的不匹配。