x86 - FMA指令集的硬件支持有多丰富

标签 x86 hardware sse simd avx

Steam's hardware survey非常有帮助,因为它概述了对 SSE 指令集的硬件支持。但是,我找不到任何关于 FMA 支持有多丰富的资源。某处有这方面的数据吗?或者是否有任何其他指令集与 FMA 或多或少相关,比如如果你有一个指令集,你很可能有另一个指令集,你可以根据这些指令集进行估算?

最佳答案

FMA3AMD in Piledriver 介绍(2012 年 5 月)。 (Vishera FX CPU、Trinity & Richland APU)。 Piledriver 有一个严重的性能错误,存储吞吐量为 256b (AVX ymm)(VMOVAPS/VMOVUPS:每 17/20 个周期一个)。 (参见 Agner Fog's microarch 文档和其他来源。)要么在 Piledriver 上禁用 256b AVX 例程,要么编写一个使用 128b xmm FMA 的 Piledriver 特定版本。 (或者 FMA4,它也可以在 Bulldozer 上运行。)

继任者,Steamroller仅存在于 Kaveri APU 中。 (FX CPU 仍然是 Piledriver。)Steamroller 修复了 256b 存储的 perf 错误,但是 256b 一切都需要两倍于 128b 版本的周期,所以你不会从 256b AVX 获得任何东西(除了循环开销的微小减少)。也就是说,如果 FMA4 可用,您还不如编写代码来运行 128b FMA4 版本。

FMA3 由 Intel 在 Haswell 中与 AVX2 同时推出(2013 年 6 月)。许多人还没有从 Sandybridge/IvyBridge 升级,因为只有很小的性能差异,除了可以使用 AVX2/FMA 的代码。 (即不是大多数东西。)

FMA3 是一个独立于AVX2 的CPUID 特征标志.说它是 AVX2 的一部分的错误答案是由于英特尔将它与 Haswell 一起引入。

总而言之,许多 AMD 用户可能确实支持 FMA,即使它只是 Bulldozer FMA4。至于英特尔,即使是 Nehalem CPU 对大多数人来说也足够快,所以没有太多升级的理由。不过,我没有任何数字。

关于x86 - FMA指令集的硬件支持有多丰富,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31474062/

相关文章:

assembly - JMP 到绝对地址(操作码)

mysql - MySQL 可以处理多少个数据库?

c++ - 为什么不常用算术表示?

performance - SSE 4.2 CSV 文件解析

performance - SIMD/SSE 新手 : simple image filtering

c - 如何在 C 语言中使用 SSE 内在函数计算单 vector 点积

assembly - 设置溢出标志的说明

assembly - 为什么需要内存对齐?

c - 堆栈分配、填充和对齐

Android 设备是否经过硬件加密?以编程方式