欢迎光临GGAMen游戏资讯




Linus Torvalds 对 AVX-512 的批评是否公道

2024-12-25 206


身为电脑的基础语言,一套在市场活跃的指令集架构,也会随着应用需求而持续扩充,支配服务器和个人电脑的 80×86,其 SIMD(单一指令,多重资料)指令集延伸也从 MMX 一路叠床架屋到 AVX-512

最近英特尔向 GNU 编译器套件 GCC 提交关于新一代 Xeon 处理器 Sapphire Rapids 和桌上型处理器 Alder Lake 的最佳化代码,其中由大核 Golden Cove 与小核 Gracemont 组成的 Alder Lake,取消支援 AVX-512 指令集。无独有偶,英特尔近期正式发表的 3D 封装混合架构处理器 LakefieldSunny Cove 大核也封印 AVX-512。原因也很简单,因为小核并未支援 AVX-512,为了避免应用程序执行错误,所以就“维持一致性”。

然后 Linux 之父 Linus Torvalds 开炮了:他希望 AVX-512 痛苦的死去(AVX-512 Dies A Painful Death),AVX2 已经够用,英特尔不该为了高效能运算(HPC)这种特殊的应用和让效能测试数据看起来更厉害“创造魔法指令集”而浪费大量晶体管,应更重视常规代码,像 AMD 这样给他更多核心与良好的单执行绪性能(程式使用 AVX-512 会激增耗电,强迫处理器降频)。就算追求更强的浮点运算,GPU 的理论运算效能,还是比拥有 AVX-512 的 x86 处理器强大。

▲ Linus Torvalds。(Source:Krd / CC BY-SA)

接着网络对此议论纷纷。有挺身支持,也有嗤之以鼻者,更多是路过看热闹的。在这之前,笔者必须先替各位复习一下 AVX-512 的现况,再瞧瞧 Linus 大神的情绪性批判是否公允。

AVXAdvanced Vector Extensions)是什么?

x86 指令集史上最重要的扩张,没有之一。除了定义 256 位元宽的 YMM 资料暂存器,更借由新增的 VEXVector Extension)指令编码字段,“集缩”所有可能影响指令编码长度的资讯,处理器不需读取大半个指令,就可知道“这个指令大概想干什么”,不仅可简化指令撷取单元和指令解码器的设计,并达成三算子指令与保留四算子的扩充弹性。

讲白话点,AVX 是“经由改良指令集架构,更好实做高效能处理器微架构”的案例,近年来另一个知名例子,则是迈向 64 位元的 ARMv8 取消引述执行(Predication)以便实做更强大的非循序指令预测执行。

也因此,英特尔也使用 VEX 编码“再创造”旧指令,包含用来取代老旧 SSE 的 AVX-128,也鼓励软件开发者尽快转移。如此一来,英特尔就更能放手一搏,研发处理器时专心对 AVX 最佳化,将晶体管预算集中在最常用指令的刀口上,旧指令跑得慢没关系,维持相容性即可。

AVX-512 是什么?

AVX-512 在 2013 年 月由英特尔发布,是继 2011 年 Sandy Bridge 的 AVX 与 2013 年 Haswell 的 AVX2 后的再延伸,首度出现在 2016 年 月上市的 Xeon Phi 7200 系列(代号 Knights Landing),在 2017 年才登陆“正常”的高阶 x86 处理器(Skylake-SPSkylake-S)。

不难理解,AVX-512 打从一开始就不是给一般人使用的东西。

AVX-512 改善了什么?

  • SIMD暂存器(ZMM)的长度和数量都倍增。
  • 追加四算子指令(A=B×C+D)。
  • 向量指令集必备的遮罩(Mask)暂存器。
  • 向量指令集所需的算子聚集(Gather)与分散(Scatter)指令。

那 AMD 的处理器目前有支援 AVX-512 吗?

没有,等 Zen 3 再看看。有趣的是,VIA 的 Centaur CHA,抢先在 AMD 之前相容 AVX-512

为何连英特尔自家 x86 处理器都没有全面性支援 AVX-512

因为 AVX-512 的相关硬件很吃晶体管空间和耗电量,英特尔也是从 10 奈米制程的 Cannon Lake 开始,才逐渐“下放”AVX-512 到一般个人电脑产品线,在这之前也仅限于服务器(Xeon)与高效能运算(Xeon Phi)。

Linus Torvalds 说到“单执行绪”效能是怎么回事?

不必讲到 AVX-512,执行 AVX 指令会降低处理器时脉这件事,更早就发生了,这会让性能不升反降,像知名 CDN 业者 Cloudflare,维护人员早在两年前就做过详细分析。

那么“市场零碎化”?

即使“支援 AVX-512”,每个处理器系列对应的版本细节也不一样,原因跟英特尔几年来汲汲营营于“人工智能”息息相关,这让 x86 处理器的相容性更零碎化,也提高了程式最佳化的困难度。过去一讲到“x86 指令集缺乏业界标准”只会想到英特尔的竞争对手自行定义专用指令,如 Cyrix 的 EMMI / MMX-FPAMD 的 3DNow! 和未成真的 SSE5,结果现在反而是英特尔自己家里先乱起来。

像英特尔在 Xeon Phi 7205 系列(代号 Knights Mill)为了强化深度学习的 QVNNIQFMA+VNNI)、Cascade Lake 为了强化推论效能而增加的 VNNI16 位元短整数)、Cooper Lake 因应 Facebook 等大客户的深度学习需求补上 BF16 浮点数格式,都让 AVX-512 版本混乱不堪,还发生新型处理器的支援度不见得比旧产品完整的糟糕状况。

Linus Torvalds 的情绪性批评公道吗?

笔者在此不下结论,但各位可想想几个问题:

  • 假如英特尔制程技术维持领先地位,今天会有这样的“杂音”吗?
  • 如果 AMD 日后也支援 AVX-512,也没碰到英特尔的降低时脉麻烦,Linus Torvalds 的反应会不会不一样?
  • 英特尔在主流桌上型处理器开了取消 AVX-512 第一枪,是否意味 AVX-512 将淡出个人电脑舞台?

最后,唯一可以确定的是,人有才气,必有脾气,看来 Linus Torvalds 这个人的脾气真的很暴躁(Grumpy)。

延伸阅读:

  • 一窝疯“人工智能芯片”前,你需要知道的几件关于 GPGPU 的事
  • 在人工智能芯片战场追逐 GPU 背影的英特尔
  • 英特尔调整新一代 Xeon 服务器平台到底是为了什么事?
  • 台湾处理器拾遗》成为威盛电子 x86 处理器技术基础的 Centaur(下)
2020-07-16 20:03:00

标签:   游戏头条 资讯头条 ggamen科技资讯 ggamen科技 ggamen科技资讯头条 科技资讯头条 ggamen游戏财经 新闻网 科技新闻网 科技新闻 ggamen ggamen游戏新闻网 科技新闻 科技新闻网 新闻网 科技资讯头条 ggamen科技资讯头条 ggamen科技 资讯头条 游戏头条 ggamen ggamen游戏新闻网 科技新闻 科技新闻网 新闻网 ggamen游戏财经 科技资讯头条 ggamen科技资讯头条 资讯头条 游戏头条
0