CPU中的新指令集

人气:372 发布:2022-10-16 标签: x86 cpu instruction-set simd

问题描述

每一代新CPU都会引入一些新的指令集,如MMX、3DNOW、SSE等。

我有几个关于它们的一般性问题:

如果某些程序使用例如SSE指令,它是否可以在不支持SSE的CPU上运行? 如果是,是否意味着这些指令将更改为更多更简单的指令? 如果没有,这是否意味着这些新指令的真正性能影响将在几年后,届时大多数CPU将支持这种技术(因此不会有任何不兼容)? 当我编译一个经过优化的C++程序时,这是否意味着它将使用某些新指令?(我知道这取决于许多因素,特别是代码,但我想要一些一般性的答案)。或者它们主要是为用ASM编写的程序保留的?

推荐答案

是和否:CPU将认为它们无效,但如果程序检查CPU是否支持这些指令,则它可以回退到不使用这些指令的版本,从而允许程序无论如何都可以运行。 该程序必须使用More";Basic";指令提供替代实现,并知道何时使用哪个指令。 由于程序可以检查CPU,因此可以立即获得好处,但当然,如果您的用户使用不支持这些指令的CPU,他们将看不到任何好处。 这将完全取决于编译器和优化器。有些指令集可能被认为足够旧,以至于编译器将始终使用它们,除非您告诉它不要使用它们,而另一些指令集则相反:您必须告诉编译器使用它们。它是否还会自动创建回退也将取决于编译器。

964