最近在AMD公司和其技术对手Intel之间的诉讼,是AMD提起的认为Intel编译器其中的一小部分代码会影响AMD处理器代码的运行性能。
根据AMD提出的诉讼,AMD认为,Intel公司设计其编译器特别针对AMD平台,使得程序在AMD平台上运行的时候获得十分差的性能。为了达到这个目的,Intel在设计编译器编译代码的时候,是通过许多条不同的代码路径,一些路径当程序是在Intel平台的处理器上运行时才被执行,而其他一些路径是当程序在AMD微处理器上运行的时候才被执行。
代码路径的选择是当程序开始的时候决定的,使用一个参数CPUID,该参数表明了机器所使用的微处理器,这样通过设计,代码路径并不是十分平等的被设计的。如果程序探测到是在Intel的微处理器上运行的话,在执行的时候将在一条完全优化过的路径上执行,然而如果是AMD微处理器的话,将通过另一条完全不同的代码路径,这条路径将降低程序的执行性能甚至导致程序崩溃。
当然,这样做对现实世界上的问题会产生多大的破坏,还不能知晓。但依据在Slashdot上张贴的海报,首次提出了这个问题,但并不能作为程序之所以在AMD系统的某个地方崩溃的原因。
同时,也可以说Intel公司确实优化了它的编译器在其自己的CPU架构上的表现,但是并不能够保证在对手的构架上也能够获得相等的表现能力。但是AMD却认为Intel是故意使得对手处理器构架上获得比较慢的效果,并且认为,不能使得代码优化和故意使代码运行的更慢是有本质差别的。
另一个Slashdot投稿者宣称该现象至少可以追溯到2004年1月的Intel C++ 8.0。该投稿者宣称Intel为memcpy命令设计的代码中,明显可以看出对于自己的处理器和对其他处理器在运行效率上的差异。又一次提出了这种是正常的优化代码还是故意为AMD的CPU制造比较差的代码之间的一种划分。
AMD太可怜了,有水平就自己推出编译器算了。把所有的错误都推给对手并不是解决问题的办法。