【问题标题】:Are SIMD and VLIW instructions the same thing?SIMD 和 VLIW 指令是一回事吗?
【发布时间】:2022-01-20 19:04:18
【问题描述】:

SIMD(单指令多数据)和 VLIW(超长指令字)之间到底有什么区别?一个是另一个的子集吗?还是它们是两个完全不同的东西?

【问题讨论】:

    标签: x86 cpu-architecture simd instruction-set vliw


    【解决方案1】:

    完全不相关且正交。一台机器可以有一个或两个,或者两者都没有。 SIMD 指令可以作为扩展添加到 VLIW ISA。 (但 VLIW 已融入机器代码格式和 ISA。)

    VLIW 是一个块中的多条指令一起解码,并在不检查它们之间的危险/依赖关系的情况下执行:编译器需要这样做,所以 VLIW 的想法是卸载一些为编译器寻找指令级并行性 (ILP) 的工作。
    最著名的例子之一是 Intel/HP 的 Itanium ISA。 https://www.realworldtech.com/mckinley/ 涵盖了有关它的一些细节,以及第一代 Merced 微架构(不是很好)。 https://www.realworldtech.com/ev8-mckinley/5/ 有更多关于第二代微架构 McKinley 的详细信息。

    VLIW 是提供一些 MIMD 功能的一种方式(针对多个数据的多条指令,对不同的数据执行不同的操作。)

    SIMD 是对多个数据元素执行相同操作的一条指令,因此通过 CPU 流水线在每个时钟上获得更多工作只涉及扩大执行单元,而不是扩大整个流水线。 (单指令,多数据。)大量数据并行的问题会以 SIMD、ILP 和线程级并行的形式同时暴露给 CPU。

    (例如,使用多个累加器创建单独的依赖链 (ILP) 的矩阵乘法或点积,其中每个累加器是 4、8 或 16 个浮点数 (SIMD) 的向量。您可以将其划分为核心,因此您可以在 Skylake 或 Zen2 上获得每个核心每个时钟 2x 8 FMA。)

    【讨论】:

      猜你喜欢
      • 2021-06-29
      • 2014-06-20
      • 2015-06-05
      • 2021-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多