gpt4 book ai didi

x86 - 不同的mmx,sse和avx版本是相互补充还是超集?

转载 作者:行者123 更新时间:2023-12-03 11:54:32 28 4
gpt4 key购买 nike

我想我应该熟悉x86 SIMD扩展。但是在我开始之前,我就遇到了麻烦。我无法很好地了解其中哪些仍然相关。

数十年来,x86架构积累了许多数学/多媒体扩展:

  • MMX
  • 3DNow!
  • SSE
  • SSE2
  • SSE3
  • SSSE3
  • SSE4
  • AVX
  • AVX2
  • AVX512
  • 我忘记了什么吗?

  • 新版本是旧版本的超集,反之亦然吗?还是互补?

    其中有些被弃用了吗?以下哪项仍然有意义?我听说过有关“旧版SSE”的信息。

    其中有些互斥吗?即它们共享相同的硬件部件吗?

    我应该一起使用哪个才能最大程度地提高现代Intel / AMD CPU的硬件利用率?为了争辩,我们假设我可以找到适当的用法说明...如果没有其他问题,请使用CPU为我的房子供暖。

    最佳答案

    我最近更新了SSEAVXx86(和SSE2avx2)的标记Wiki。他们涵盖了很多。 tl; dr摘要:AVX汇总所有以前的SSE版本,并提供这些指令的3操作数版本。也是大多数FP(AVX)和int(AVX2)insns的256b版本。

    有关各种SSE版本的摘要,请参见Wikipedia或knm241的更详细的答案。

    我们真的不认为这会使SSE过时。更像是将AVX视为相同的旧SSE指令的新版本和更好的版本。它们仍以其非AVX名称(例如PSHUFB,而不是VPSHUFB)存在于引用手册中。您可以混合使用AVX和SSE代码,只要在需要时使用VZEROUPPER即可避免将VEX与non-AVX混合使用而导致性能问题-VEX insns(在Intel上)。因此,您不得不调用可能运行非VEX SSE指令的库,或者您的代码使用SSE FP数学,但是只有在CPU支持的情况下才能运行某些AVX代码,这使您有些烦恼。

    如果CPU兼容性不是问题,那么 vector 指令的旧版SSE版本将真正过时,就像现在的MMX一样。如果将VEX编码的128b版本算作AVX(而不是SSE),AVX / AVX2的各个方面都至少要好一些。有时您仍然会使用128b寄存器,因为您的数据仅以大块的形式出现,但是更经常地使用256b寄存器来一次执行相同运算的数据量是原来的两倍。

    SSE / AVX / x87-FP /整数指令都使用相同的执行端口。通过混合它们,您无法并行完成更多工作。 (在Haswell上除外,在Haswell上4个ALU端口之一只能处理非 vector insns,如GP reg ops和branch)。

    关于x86 - 不同的mmx,sse和avx版本是相互补充还是超集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31490853/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com