文章摘要
文章指出在Windows ARM模拟环境下,AVX2指令集的性能反而比SSE2-4.x更慢,这与预期中AVX2更宽操作能弥补模拟开销的假设相反。
文章总结
AVX2在Windows ARM模拟环境下性能低于SSE2-4.x
核心发现
- 性能对比:在Windows 11 ARM的Prism模拟环境下,AVX2优化代码的运行速度仅为SSE2-4.x代码的2/3。
- 测试方法:通过21种数学运算的基准测试,将SSE2-4.x性能标准化为1.0,对比AVX2在原生Intel硬件和ARM模拟环境下的表现。
- 实际影响:若应用针对AVX2优化并在ARM设备上模拟运行,性能反而会下降。
背景与技术细节
- 指令集演进:x86/x64架构通过SSE、AVX等指令集逐步提升并行计算能力,AVX2支持256位宽操作,而ARM的NEON仅支持128位。
- 模拟层限制:Windows Prism模拟器虽兼容AVX2,但可能因以下原因导致性能损失:
- 需将256位操作拆分为多个128位NEON指令。
- 对双精度浮点(64-bit)的支持未充分优化。
- 苹果M2硬件未完全适配微软为骁龙优化的模拟路径。
测试环境
- 硬件:Intel Tiger Lake i7(原生x64) vs. 苹果M2(Parallels虚拟机运行Windows ARM)。
- 测试内容:向量化数学运算(如sin/pow/exp),循环执行1000万次,排除冷启动干扰。
结果分析
- 原生Intel:AVX2比SSE2-4.x快2.7倍。
- ARM模拟:AVX2比SSE2-4.x慢33%,仅exp()函数例外(快33%)。
- 潜在原因:
- 模拟器对宽指令的拆分开销。
- LLVM生成的代码模式未被模拟器充分优化。
实践建议
- 开发策略:若应用需高性能计算,应直接编译ARM64版本,而非依赖x64模拟。
- 动态检测风险:避免在ARM设备上自动启用AVX2优化路径(如通过target_clones),可能导致性能倒退。
延伸思考
微软Prism模拟器仍处发展阶段,未来可能提升AVX2模拟效率,但目前阶段SSE2-4.x仍是更稳妥的选择。
注:本文基于RemObjects团队在编译器优化中的实测数据,完整测试方法参见原博客。
评论总结
以下是评论内容的总结:
反对AVX2的观点
- 认为AVX2应被禁用,因为只有高端CPU支持,提高了游戏最低配置要求,加速硬件淘汰("Only expensive CPUs have it, ruining mininum games requirements")
- 指出全球多数人收入有限("Most of the world lives of 300$ per month")
ARM原生开发的必要性
- 强调应直接构建ARM应用而非依赖Windows ARM模拟("Yes, it is absolutely key to build your app as ARM")
SIMD指令集差异讨论
- 指出AVX2(256位)与ARM NEON(128位)的位宽差异("AVX2 is 256-bit, ARM NEON is only 128-bit")
- 质疑ARM在桌面/服务器领域SIMD支持滞后("why are ARM desktop cores so far behind on wider SIMD support?")
性能优化分析
- SSE4可能因与NEON的128位寄存器兼容而表现最佳("SSE4...easiest to map to NEON as both use 128 bit registers")
- 推测AVX2性能问题可能源于代码库新或调度难度("harder to schedule the work in 256 bit chunks than 128")
技术细节修正
- 纠正FMA(Fused Multiply-Add)术语错误("FMA acronym is not fast multiply add, it’s fused multiply add")
- 推测模拟器未正确转换FMA指令导致性能下降("failed to translate FMA instructions into...FMLA instructions")
跨平台工具建议
- 提议研究苹果Rosetta 2的等效实现("Any equivalent look at Apple's Rosetta 2?")
性能测试方法论
- 建议通过基准测试选择最优执行路径("run some quick benchmarks to see which path is objectively best")
- 对比历史多架构环境("back in the 1980s...we had quite a few [implementations]")