热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《x86微体系结构/SIMD市场份额》经验,为你挑选了1个好方法。

哪里可以找到有关x86微体系结构"市场份额"的数据?x86系列CPU的用户有多少百分比拥有支持SSE4.2,AVX,AVX2等的CPU?

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

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



1> Peter Cordes..:

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

AVX和BMI1/2很遗憾地远离基线,因为英特尔仍在销售Celeron/Pentium芯片,禁用VEX前缀解码(大概是为了利用具有256位执行单元缺陷的硅),但SSE4.2正在获得更接近,SSSE3是可能的.如果不支持SSSE3指令,请参阅最新处理器?和Mac OSX minumum支持sse版本

所有64位intel架构是否都支持SSSE3/SSE4.1/SSE4.2指令?有一个指向Steam客户的Valve Hardware Survey的链接(目前显示SSE3为~100%安装基础,但SSSE3仅为97%),因此如果您要发送的PC游戏应与目标受众相关联.但是,对于某些条目,故障有点奇怪.像fcmov组(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__memset_avx2_unaligned_erms. perf报告显示此函数"__memset_avx2_unaligned_erms"有开销.这是否意味着内存未对齐?

所有这些(除了每个函数的动态链接器技巧)比在运行时使代码知道指令集扩展更容易,并且没有性能开销.(除非你把东西放在动态库中,否则就不能内联了.所以它不能内联.)


推荐阅读
  • 原文地址http://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/最开始时 ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 第四讲ApacheLAMP服务器基本配置Apache的编译安装从Apache的官方网站下载源码包:http:httpd.apache.orgdownload.cgi今 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 服务器上的操作系统有哪些,如何选择适合的操作系统?
    本文介绍了服务器上常见的操作系统,包括系统盘镜像、数据盘镜像和整机镜像的数量。同时,还介绍了共享镜像的限制和使用方法。此外,还提供了关于华为云服务的帮助中心,其中包括产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题和视频帮助等技术文档。对于裸金属服务器的远程登录,本文介绍了使用密钥对登录的方法,并提供了部分操作系统配置示例。最后,还提到了SUSE云耀云服务器的特点和快速搭建方法。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • centos6.8 下nginx1.10 安装 ... [详细]
author-avatar
275514908_9369d7
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有