x86微体系结构/SIMD市场份额

x86微体系结构/SIMD市场份额,x86,sse,simd,instruction-set,baseline,X86,Sse,Simd,Instruction Set,Baseline,我在哪里可以找到关于x86微体系结构“市场份额”的数据?x86系列CPU用户中支持SSE4.2、AVX、AVX2等的CPU的百分比是多少 我正在为我的程序分发预编译的二进制文件,我想知道什么是最佳优化目标,以及哪些SIMD扩展可以在没有运行时检查的情况下合理使用 我可以找到英特尔和AMD的总体市场份额数据,但不能找到英特尔和AMD CPU的细分。理想情况下,我也希望按操作系统和国家/地区进行细分,但即使是微体系结构的通用全局统计数据也比没有好。如果没有回退或安装时间检测,任何比SSE2(x86-

我在哪里可以找到关于x86微体系结构“市场份额”的数据?x86系列CPU用户中支持SSE4.2、AVX、AVX2等的CPU的百分比是多少

我正在为我的程序分发预编译的二进制文件,我想知道什么是最佳优化目标,以及哪些SIMD扩展可以在没有运行时检查的情况下合理使用

我可以找到英特尔和AMD的总体市场份额数据,但不能找到英特尔和AMD CPU的细分。理想情况下,我也希望按操作系统和国家/地区进行细分,但即使是微体系结构的通用全局统计数据也比没有好。

如果没有回退或安装时间检测,任何比SSE2(x86-64的基线)更新且没有运行时检查的数据都是有风险的

可悲的是,AVX和BMI1/2离基线相差甚远,因为英特尔仍在销售禁用VEX前缀解码的赛扬/奔腾芯片(可能是为了利用256位执行单元中存在缺陷的硅),但SSE4.2离基线越来越近,SSSE3也有可能。看到了吗

有一个指向Steam客户端的链接(目前显示SSE3的安装量约为100%,但SSSE3的安装量仅为97%),因此,如果您正在销售一款PC游戏,它应该与您的目标受众有很好的关联。不过,对于一些条目来说,分类有点奇怪。Like(x87无分支条件移动)据报告已降低到97.5%,但每个与P6兼容的CPU都有。你找不到一个有SSE2但没有FCMOV的CPU。也许新版本的Steam并没有对此进行测试。也许旧版本的Steam没有测试CMPXCHG16B?因此,对它们略知一二,但它们对于SSE2/3/SSSE3/SSE4.x和AVX可能是相当合理的

对于服务器,您可以轻松设置SSE4.2最小值。Atom/Silvermont支持它,AMD和VIA的低功耗架构也支持它,因此节能服务器可以运行它。在个人家庭服务器之外的服务器上,古老的主流CPU并没有得到太多的使用,因为它们通常比更便宜、运行更凉爽的现代机器要慢

(Silvermont不太可能很快支持AVX,更不用说AVX2或FMA了。)


您不必将自己限制为一个二进制文件。您甚至可以让人们在下载时选择,或者您的安装程序可以在安装时选择

或者,您可以使用一个运行时包装器来选择一个可执行和动态库,这样您就可以有效地获得运行时调度,同时仍然能够使用
gcc-O3-march=haswell
或任何让编译器到处使用新指令集的工具进行编译(特别是对于BMI1/BMI2而言,对于有效的单uop变量计数转换是有益的)

另一种选择是动态链接器技巧,可以基于整个库,也可以基于每个函数,如glibc用于将
memcpy
解析为
\uuuuu memset\uavx2\uu unaligned\uerms


所有这些(每函数动态链接器技巧除外)都比让代码在运行时意识到指令集扩展更容易,并且性能开销为零。(除非您在没有其他方法的情况下将内容放入动态库,这样它就无法内联。)

解决此问题的简单方法(作为一个前游戏程序员来说),就是简单地为您希望支持的每个CPU级别(例如SSE2、SSE4、AVX2)编译二进制文件。游戏的“可执行文件”只是一个cpuid检查,然后根据检测到的CPU运行正确的exe。

您是否考虑过在安装过程中发送多个二进制文件/DLL/SOs并找出正确的二进制文件?这样的数据可能不太容易找到。@DanielKamilKozar我考虑过这一点(以及多版本函数),但我希望消除这种复杂性如果没有回退或安装时间检测,没有运行时检查是有风险的。AVX和BMI1/2离基线相差甚远,因为英特尔仍在销售禁用VEX前缀解码的赛扬/奔腾芯片(可能是为了利用256位执行单元中存在缺陷的硅),但SSE4.2正变得越来越近,SSSE3是一种可能。请参阅,和。有一个指向Steam客户端的链接(目前显示SSE3的安装基数约为100%,但SSSE3的安装基数仅为97%),因此,如果您正在发布一款PC游戏,该游戏应该与您的目标受众有很好的关联。对于服务器方面的内容,您可能很容易设置SSE4.2最低值。@PeterCordes这是一个很好的信息。请将其作为答案发布!非常好的答案!Atom/Silvermont CPU不是在路由器/NAS/Microserver中使用,而不是在成熟的服务器中使用吗?这很模糊不过,这对设备进行了分类。英特尔今天在几乎所有地方都能装上一船堆内核,这真是令人着迷。@MargaretBloom:是的,Silvermont确实被用于NAS/微服务器类型的东西。我不知道是否有高密度的服务器使用它,人们实际上会把它放在数据中心,为一堆硬盘提供服务。如果你有兴趣的话“avoton服务器”有很多热门产品。例如,像你所说的是一个无风扇的微型服务器。Supermicro确实提到了他们的mini-ITX avoton的1U机箱:@MargaretBloom:哦,对了,当前一代Atom服务器不再是avoton了。列出了一系列较新的板,包括一些具有Flex ATX形状因子和(TDP=31W)和高达256GB的注册ECC DIMM、4x 10GBase-T和2x SATA3。或带有12x SATA3+2x 10Gb以太网的迷你ITX板。这些都是成熟的服务器,带有M.2和PCIe插槽。