【发布时间】:2011-02-01 13:45:33
【问题描述】:
每一代新的 CPU 都会引入一些新指令集,即 MMX、3DNOW、SSE 等。
我有几个关于它们的一般性问题:
- 如果某些程序使用例如 SSE 指令,它可以在不支持 SSE 的 CPU 上运行吗?
- 如果是,是否意味着这些指令将被更改为更多更简单的指令?
- 如果不是,是否意味着此类新指令的真正性能影响将在几年后大多数 CPU 将支持此类技术(因此不会出现任何不兼容性)?
- 当我编译一个带有优化的 C++ 程序时,这是否意味着它会使用这些新指令? (我知道这取决于许多因素,尤其是代码,但我想要一些一般性的答案)。还是它们主要用于用 asm 编写的程序?
【问题讨论】:
-
据我所知,过去 3-4 年制造的任何处理器,无论是 Intel 还是 AMD,都至少支持 SSE2。您可能只是假设他们在那里,具体取决于您的目标受众。
-
@Blindy:总的来说,这不是一个好主意。如果您的程序不是一个巨大的资源消耗者,那么在十年前的硬件上运行应该不是问题。也就是说,如果您的程序针对 64 位操作系统,或者仅在 Windows 8 或更高版本上运行,那么您可以安全地使用 SSE2 及更低版本(所有 x86-64 处理器都至少包含 SSE2 支持,并且 Windows 8 强制要求 SSE2 支持,即使对于32 位版本的操作系统)。
标签: x86 cpu simd instruction-set