首页 文章

为什么英特尔不以更兼容或通用的方式设计其SIMD ISA?

提问于
浏览
6

英特尔在Xeon Phi上有几个SIMD ISA,如SSE,AVX,AVX2,AVX-512和IMCI . 这些ISA在不同的处理器上受支持 . 例如,AVX-512 BW,AVX-512 DQ和AVX-512 VL仅在Skylake上受支持,但在Xeon Phi上不受支持 . Skylake和Xeon Phi均支持AVX-512F,AVX-512 CDI,AVX-512 ERI和AVX-512 PFI .

为什么英特尔没有设计出能够在其所有高级处理器上运行的更通用的SIMD ISA?

此外,英特尔在开发ISA时删除了一些内在函数并添加了新的内在函数 . 很多内在函数有很多种 . 例如,一些工作在打包的8位上,而一些工作在打包的64位上 . 有些口味没有得到广泛支持 . 例如,Xeon Phi无法处理打包的8位值 . 然而,Skylake会有这个 .

为什么英特尔以这种不一致的方式改变其SIMD内在函数?

如果SIMD ISA彼此更兼容,则可以将现有的AVX代码移植到AVX-512,而且工作量更少 .

2 回答

  • 1

    我看到三倍的原因 .

    (1) 当他们最初designed MMX时,他们只有很少的工作区域,所以尽可能简单 . 他们也以与现有x86 ISA完全兼容的方式完成了它(精确中断某些状态保存在上下文切换上) . 他们没有预料到他们会不断扩大SIMD寄存器的宽度并添加如此多的指令 . 每一代,当他们添加更宽的SIMD寄存器和更复杂的指令时,他们必须维护旧的ISA以实现兼容性 .

    (2) 这个奇怪的事你're seeing with AVX-512 is from the fact that they are trying to unify two disparate product lines. Skylake is from Intel'的PC /服务器线因此它们的路径可以看作MMX - > SSE / 2/3/4 - > AVX - > AVX2 - > AVX-512 . Xeon Phi基于一个名为Larrabee的x86兼容显卡,它使用了LRBni指令集 . 这或多或少与AVX-512相同,但指令较少且与MMX / SSE / AVX /等不正式兼容......

    (3) 他们针对不同的人口统计数据提供不同的产品 . 例如,(据我所知)AVX-512 CD指令不适用于PC的常规SkyLake处理器,只有用于服务器的SkyLake Xeon处理器以及用于HPC的Xeon Phi . 我可以理解这一点,因为CD扩展的目标是并行直方图生成;这种情况更可能是服务器/ HPC中的关键热点,而不是通用PC .

    我确实同意这有点乱 . 英特尔开始看到这一点,并计划更好地进行额外的扩展;据推测,AVX-512可以在下一代中扩展到1024位 . 不幸的是,它仍然不够好,而Agner Fog discusses this on the Intel Forums .

    对我来说,我希望看到一个可以升级的模型,而无需用户每次都必须重新编译它们的代码 . 例如,不应该在ISA中将AVX寄存器定义为512位,而应该是存储在微体系结构中的参数,并且可以由程序员在运行时检索 . 用户询问此机器上可用的最大SIMD宽度是什么?,架构返回 XYZ ,用户具有通用控制流程来处理 XYZ 的任何内容 . 这将比当前技术更清晰和可扩展,该技术对于每个可能的SIMD版本使用相同功能的若干版本 . : - /

  • 8

    Xeon和Xeon Phi之间存在SIMD ISA融合,最终它们可能会变得相同 . 我怀疑你会在整个英特尔CPU产品线上获得相同的SIMD ISA - 请记住,它从微小的Quark SOC延伸到Xeon Phi . 在AVX-1024从Xeon Phi迁移到Quark或低端Atom CPU之前,将会有很长一段时间,可能是无限的 .

    为了在不同CPU系列(包括未来系列)之间获得更好的可移植性,我建议您使用比纯SIMD指令或内在函数更高级别的概念 . 使用OpenCL,OpenMP,Cilk Plus,C AMP和autovectorizing编译器 . 通常,他们会很好地为您生成平台特定的SIMD指令 .

相关问题