例如,在 x86-64 的情况下,您有一个使用 avx-512 指令或任何其他特殊用途指令的程序,而有问题的 cpu 不支持低级别的指令,例如基于 haswell 的 cpu,这种情况如何解决?
程序只是无法运行(我的第一个想法)还是有办法让 cpu 仍然使用它支持的指令运行程序,但是它根本不会获得相关指令提供的性能优势?
例如,在 x86-64 的情况下,您有一个使用 avx-512 指令或任何其他特殊用途指令的程序,而有问题的 cpu 不支持低级别的指令,例如基于 haswell 的 cpu,这种情况如何解决?
程序只是无法运行(我的第一个想法)还是有办法让 cpu 仍然使用它支持的指令运行程序,但是它根本不会获得相关指令提供的性能优势?
如果程序检查 CPU 功能并避免实际运行不受支持的指令,那么您只会错过性能。x264 和 x265 之类的库执行此操作,当它们开始时将函数指针设置为该 CPU 的最佳支持版本的函数版本。
如果您确实运行了不受支持的指令(例如,因为您编译时gcc -O3 -march=skylake-avx512
告诉编译器它可以假定支持 AVX-512),则有两种可能性:
lzcnt
解码为时确实会发生bsr
)。