指令集扩展以及如何针对这些扩展优化软件

时间:2015-02-23 15:10:14

标签: optimization instruction-set

有些东西让我误解了指令集扩展以及可能针对这些扩展的软件优化。 在维基百科中有关X86指令集的文章是一个慢性的扩展列表,如MMX,SSE或AVX。 我知道我必须重新编译一个软件,如果我为一个新的扩展优化它。 但通过其他问题,我了解到无法在一个可执行文件中包含多个版本的编译软件。 (对于每个新扩展,新编译。) 我的问题是:

  1. 为扩展程序编译的代码是否在没有该扩展名的旧cpu上运行?
  2. 是否在已编译的代码中检查了该扩展名? (如果MMX那么B或类似的话)
  3. 像Photoshop或视频编码器这样的商业软件如何处理这个问题? 根本优化那些?或者它们是仅针对较旧的扩展进行优化还是将旧CPU排除在使用之外?
  4. 或者是否可以为每个cpu生成代码优化代码并将其打包在一个executebale中?像胖二进制,但对于一个不同扩展的CPU系列。 (如果MMX那么ELSEIF MMX和SSE那么B或类似) 当程序启动时,它只会加载最佳优化但可运行的代码。这个解决方案有一个流行词吗?
  5. THX

0 个答案:

没有答案