“每个人都应该了解SIMD”:Mitchell Hashimoto关于唯一仍有价值的优化的提醒

开发与编程 Jul 23, 2026加入收藏

“每个人都应该了解SIMD”:Mitchell Hashimoto关于唯一仍有价值的优化的提醒
插图 : Momiji Shirogane

Mitchell Hashimoto(HashiCorp 创始人)发表了一篇文章,提出了一个简单的论点:在 CPU 宽度时代,不了解 SIMD 就意味着将 4× 到 16× 的性能白白浪费。

具体案例

Mitchell Hashimoto——HashiCorp 联合创始人,现为活跃的独立贡献者(如今正在用 Zig 开发其终端模拟器 Ghostty)——发布了一篇长文,标题简单直白:《Everyone Should Know SIMD》(人人都该了解 SIMD)。其核心观点只有一句话:在 CPU 频率停滞、但向量寄存器宽度不断增加的时代,忽视 SIMD 就等于让数量级级别的性能白白浪费。

SIMD(单指令多数据流)指的是 CPU 指令集,可在单个周期内对多个数据同时执行相同操作——例如一次性将八个 float 相加,或一次性比较十六个字节。现代 x86-64 CPU 上,这对应 SSE / AVX / AVX2 / AVX-512 指令集;而在 ARM(Apple Silicon、Neoverse 服务器)上,则是 NEONSVE

底层原理:为何这个话题再次浮出水面

这个话题并不新鲜——SIMD 早在 MMX(1996)时代就已存在。但如今的变化在于:

  1. 寄存器宽度大幅提升:从 128 位(SSE、NEON)→ 256 位(AVX2)→ 512 位(AVX-512)。一个 AVX-512 寄存器可容纳 16 个 float32 或 64 个 int8
  2. 普及程度大幅提高:AVX2 自 Haswell(2013)起已覆盖所有主流 x86 CPU;NEON 则是 ARMv8(iPhone 5S 及后续机型、所有 ARM 服务器)的标准配置。
  3. CPU 频率触顶:世代间的“免费”性能提升已微乎其微,而向量化仍能持续带来收益。
  4. 自动向量化能力有限:编译器(LLVM、GCC)能很好地向量化简单循环,但一旦遇到分支、指针追踪或特殊累加,往往束手无策。此时就需要开发者手动介入。

Hashimoto 的核心观点

其核心信息:SIMD 不再是图形引擎或视频编解码器开发者的专利。任何大规模数据处理——JSON 解析器、全文搜索引擎、字符串比较、统计计算、图像滤波、哈希计算——都能从向量化中获益匪浅。

典型案例:

  • simdjson 可在现代 CPU 上以 3-5 GB/s 的速度解析 JSON,主要得益于 SIMD 的加持。
  • 排序引擎 VqSort(Google)和 ips4o 通过 SIMD 在整数数组上将 std::sort 甩开 3-5 倍。
  • 列式数据库(ClickHouse、DuckDB)的核心算法均基于 SIMD 内核构建。
  • ProtobufUTF-8 解析也可通过向量化实现类似的性能提升。

换句话说:SIMD 不再是小众优化,而是所有涉及大规模数据处理性能提升的基础技能。

如何入门而不被淹没

手写 SIMD 向来以痛苦著称:晦涩的 intrinsics、x86 与 ARM 间脆弱的移植性。如今有三种可行方案:

  1. Highway(Google):C++ 库,在统一 API 后端抽象 SSE/AVX/NEON/SVE,并通过运行时 dispatch 选择最优指令集。
  2. std::simd(C++26 提案):标准库中的可移植 SIMD,但仍处于实验阶段。
  3. Rust / Zig 中的可移植 SIMD:两种语言均提供可移植的向量化 API(Rust nightly 中的 core::simd、Zig 中的 @Vector 内建类型)。

对于普通应用开发者而言,通过可移植库(Highway、std::simd@Vector)入门,既能避免深入底层 intrinsics,又能保留大部分性能收益。

我们的解读

Hashimoto 的观点切中要害:在托管运行时(JavaScript、Python、Go)的培养下成长起来的一代开发者,往往忽略了 CPU 早已具备的强大计算能力——而他们的代码却从未利用过这些能力。这不是指责,而是事实。而一旦将这些能力与关键路径结合,其回报率之高令人瞩目。

关键要点

  • SIMD 不再是小众优化:它是当前 CPU 上最主要的性能提升来源。
  • 可移植库(Highway、std::simd、Zig @Vector)让入门变得可行。
  • 所有大规模数据处理场景(解析器、数据库、图像、哈希)都应从 SIMD 角度重新审视。
Resources

本文由人工智能撰写,并经人工编辑审核。

我们的编辑部
这篇文章对您有帮助吗?

19 人赞了这篇文章

K
Kaito KuroganeSenior Dev Writer
Senior polyvalent developer, backend Go + frontend TS, open source contributor.
分享:
LIVERadio Geek Kitsune
Tap to listen, the same sound for everyone
0··
// Schedule
// all stations
// share a track →
主题
浏览
信息