CPU中的新指令集

Tom*_*ski 4 cpu simd instruction-set

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

我对它们几乎没有一般性问题:

  1. 如果某些程序使用例如SSE指令,它是否可以在不支持SSE的CPU上运行?
  2. 如果是,是否意味着这些指令将被更改为更多更简单的指令?
  3. 如果没有,这是否意味着这些新指令的实际性能影响将在几年后,大多数CPU将支持此类技术(因此不存在任何不兼容性)?
  4. 当我编译一个带有优化的C++程序时,是否意味着它会使用一些新的指令?(我知道这取决于很多因素,特别是代码,但我想要一些一般的答案).或者它们主要用于以asm编写的程序?

Mic*_*sen 8

1)是和否:CPU会认为它们无效,但如果程序检查CPU是否支持这些指令,那么它可以回退到不使用这些指令的版本,无论如何都允许程序运行.

2)程序必须使用更"基本"的指令提供替代实现,并知道何时使用哪一个.

3)由于程序可以检查CPU,现在可以获得好处,但当然,如果您的用户使用不支持这些指令的CPU,他们将看不到任何好处.

4)这完全取决于编译器和优化器.一些指令集可能被认为足够大,以至于编译器将始终使用它们,除非你告诉它不要,而其他指令集则相反:你必须告诉编译器使用它们.它是否会自动创建回退也取决于编译器.