芯片层 开放阅读

LLVM

Low Level Virtual Machine

概念 ID
low-level-virtual-machine
更新时间
2026-05-29
来源数量
待补

LLVM

3 秒看懂

LLVM(不再是 Low Level Virtual Machine 的缩写,它就是一个名字)是一个编译器基础设施框架。它不是一个具体的编译器,而是一套用于构建编译器的“乐高积木”,核心是定义了一种与具体编程语言和CPU架构都无关的中间表示(IR),极大地降低了开发新编程语言和适配新硬件芯片的难度。

3 分钟产业解释

想象一下造车。如果没有标准化的零部件(如发动机接口、电气总线),每造一款新车就要从头设计所有零件。LLVM 就是编程世界的“标准化汽车平台”。

  • 对于软件开发者/编程语言设计者:只需专注于将代码翻译成一种标准的“中间语言”(LLVM IR),无需关心最终要运行在 Intel、AMD 还是 ARM 的 CPU 上。这催生了 Swift、Rust、Julia 等新一代高效语言的繁荣。
  • 对于芯片公司:无论是设计新的 CPU、GPU 还是 AI 加速器,只需为目标硬件开发一个“后端编译器”,就能自动支持所有能编译到 LLVM IR 的编程语言(如 C/C++、Python 通过科学计算库)。这极大地降低了新硬件的生态构建门槛,是国产 GPU 和 AI 芯片能够快速接入主流软件生态的关键技术桥梁。
  • 对于产业:LLVM 是一个开源的“制程”级别的基础工具,是连接上层软件智能与下层硬件算力的核心枢纽。其生态的繁荣直接决定了一个计算平台(无论是通用CPU还是专用加速器)的生命力。

15 分钟专家深入

LLVM 的核心价值在于其模块化与层解耦设计,这使其在 AI 时代地位愈发重要。

  1. “三头六臂”的解耦:传统的编译器(如老版本GCC)是“铁板一块”,前端(解析语言)、优化器、后端(生成机器码)紧密耦合。LLVM 将其打散:

    • 前端:负责理解不同语言(Clang 处理 C/C++/Objective-C, rustc 处理 Rust),输出统一的 LLVM IR。
    • 优化器:对 LLVM IR 进行一系列与语言和硬件无关的通用优化(如循环优化、内联)。
    • 后端:负责将优化后的 LLVM IR 翻译成特定硬件(x86, ARM, RISC-V, 乃至 NVIDIA PTX)的机器码。
    • 影响:语言开发者可以复用优化器和后端,硬件厂商可以复用前端和优化器。这形成了强大的网络效应
  2. LLVM IR:生态的“世界语”:这是一种强类型的、低级的类 RISC 指令集表示,它既接近高级语言语义,又易于映射到硬件。所有优化和分析都在 IR 层面进行。可以将其视为一个“虚拟的、理想的 CPU 指令集”。

  3. 与 GPGPU 计算的关系:NVIDIA 的 CUDA 编译器(nvcc)内部就使用了定制化的 LLVM 版本来将 CUDA C++ 编译成 PTX(一种中间表示)再到 SASS(机器码)。这证明了 LLVM 框架在异构计算领域的强大适应性。对于其他 GPU 和 AI 芯片,基于 LLVM 开发编译器是一条被验证过的高效路径。

  4. MLIR:面向AI的新战场:随着 AI 模型复杂度飙升,传统 LLVM IR 在表示张量、图计算等高层语义时力不从心。MLIR(Multi-Level Intermediate Representation)应运而生,它是 LLVM 项目的一部分,旨在提供一个更灵活、可扩展的中间表示框架,用于统一机器学习生态系统中的多种编译器基础设施。这是 LLVM 生态面向未来的关键布局。

技术原理(最深)

LLVM 的核心架构可由下图描述,体现了其基于 IR 的分层与传递设计:

+-------------------+      +-------------------+      +-------------------+
| Source Code       |      | LLVM IR           |      | Target Machine Code|
| (C++, Rust, etc.)| ---> | (Platform-        | ---> | (x86, ARM, NVPTX) |
+-------------------+      |  Independent)     |      +-------------------+
        ^                  +-------------------+               ^
        |                           |                           |
  [Frontend]                   [Optimizer]                   [Backend]
  (e.g. Clang)               (Passes & Analyses)          (e.g. X86, AArch64)
        |                           |                           |
        +---------------------------+---------------------------+
                                    |
                            +-------------------+
                            | LLVM Libraries & Tools |
                            | (Assembler, Linker, etc.) |
                            +-------------------+
  • 关键数据结构LLVM Module 包含了整个编译单元的信息,内含 Functions, Functions 由 Basic Blocks 组成, Basic Blocks 由一系列 Instructions 组成。所有数据类型都是强类型的。
  • Pass 管理框架:优化器的核心是 Pass(遍)。每个 Pass 完成一项特定的分析或变换任务(如死代码消除、寄存器分配)。Pass 可以自由组合,形成优化流水线。Pass 分为 Analysis Pass(只读,分析信息)和 Transform Pass(修改 IR)。
  • 并行与 JIT:LLVM 支持多线程编译(并行处理不同的模块或函数)。其 ORC JIT (On-Request Compilation) 框架允许在运行时动态地将 IR 编译成机器码,是高性能动态语言(如Julia)和数据库查询引擎(如Spark SQL)的加速核心。

技术演进史

  • 2000-2003(诞生):由 Chris Lattner 在伊利诺伊大学攻读博士期间发起,最初作为研究项目,旨在设计一个支持全程序优化的编译器架构。名字“Low Level Virtual Machine”后来被弃用。
  • 2007(关键转折):Chris Lattner 加入苹果公司,开始主导将 LLVM 用于苹果的开发工具链。Clang(C/C++/Obj-C 前端)在此期间诞生并开源,旨在取代老旧的 GCC。
  • 2011年12月(走向主流):LLVM 3.0 发布,被视为一个稳定、可用于生产的版本。苹果全线工具链(Xcode)切换到基于 LLVM/Clang。
  • 2015-2019(生态爆发):Rust 语言将 LLVM 作为其默认后端;Emscripten(将 C/C++ 编译到 WebAssembly)基于 LLVM 构建;各大硬件厂商(包括 NVIDIA、Google、AMD)纷纷将 LLVM 集成到其编译器中。
  • 2019-今(AI与异构扩展):MLIR 子项目启动并快速发展,旨在解决 AI 领域的编译器碎片化问题。LLVM 成为 RISC-V 架构事实上的标准编译器工具链。

技术路线对比(量化表)

特性LLVM/ClangGCC (GNU Compiler Collection)备注
架构高度模块化,基于库的设计。传统单体架构,近年来也在改进。LLVM 的模块化是其最大技术优势。
语言支持前端可独立开发。Clang 专注 C 族,Rust/Swift 等有独立前端。前端与后端耦合较深。LLVM 对新兴语言更友好。
中间表示LLVM IR, 稳定、强类型、公开设计。GIMPLE/RTL, 内部表示。LLVM IR 的公开性促进了生态扩展。
优化能力极强,在优化现代C++、链接时优化(LTO)方面领先。极强,在 Fortran、传统 HPC 领域积累深厚。两者优化水平处于同一梯队,侧重不同。
硬件支持x86, ARM, RISC-V, AMDGPU, NVPTX, WebAssembly, BPF 等,扩展性极佳。x86, ARM, RISC-V, 众多专用架构,支持广泛。两者都覆盖主流架构,LLVM 在新兴和专用架构(如BPF)上更活跃。
社区/开发模式基于 Apache 2.0 with LLVM Exceptions, 由 LLVM 基金会管理,商业公司贡献巨大(苹果、谷歌、英伟达等)。GPLv3, 由自由软件基金会管理,社区驱动。许可证差异导致商业模式不同,LLVM 对商业集成更友好。
编译速度通常被认为在同等优化级别下编译更快编译速度稍慢,尤其在高优化级别。这得益于 LLVM 的模块化设计和现代代码库。
调试支持生成 DWARF 调试信息,支持良好。DWARF, 支持非常成熟。两者都支持标准调试格式。
代表成就成为苹果默认工具链、Android NDK 默认、Rust/Swift 后端、CUDA 编译器核心。Linux 生态基石、GCC 是许多操作系统和科学计算软件的传统选择。两者都在各自领域占据主导地位,形成“双巨头”格局。

上下游

  • 上游(输入)
    • 编程语言:C, C++, Rust, Swift, Objective-C, Julia, Scala (via GraalVM), 以及各种领域特定语言(DSL)。
    • 硬件架构规范:x86, ARM, RISC-V, 以及各加速器(GPU, TPU, NPU)的指令集手册。
    • 算法与优化理论:编译器优化理论、图形分析算法等。
  • 核心(LLVM本身):编译器前端、优化器(一系列Pass)、后端、链接器、JIT引擎、MLIR等工具库。
  • 下游(输出与消费者)
    • 可执行程序:本地机器码。
    • 中间代码:WebAssembly (.wasm), SPIR-V (用于 Vulkan 图形API), PTX (NVIDIA GPU)。
    • 运行时环境:语言运行时(如 JVM、.NET 通过 LLVM 加速),数据库查询引擎,AI 框架编译器(如 PyTorch/XLA, TVM 的部分后端)。
    • 开发工具:IDE(代码补全、静态分析)、调试器、性能分析器。
    • 最终用户:所有使用上述语言和硬件的软件开发者。

关键指标

  1. 前端语言支持数量:衡量生态广度。官方与社区支持的语言/方言超过50种。
  2. 后端硬件目标支持数量:衡量硬件生态接入能力。活跃支持的目标超过15个。
  3. 编译速度:单位时间内处理代码行数(LOC/s)或指令数。在-O0(无优化)级别通常显著快于GCC。
  4. 生成代码性能:在标准基准测试(如SPEC CPU, Geekbench)中,与GCC生成的代码进行对比。两者互有胜负,在不同测试集上领先。
  5. 优化级别效果:-O1, -O2, -O3, -Os, -Oz 等优化级别下,代码大小和运行时间的权衡。
  6. 社区活跃度:每月提交的代码补丁数、活跃开发者数量、邮件列表讨论热度。这是一个健康的顶级开源项目。
  7. 商业采用率:在云厂商(AWS, Azure, GCP)、芯片公司(所有主流CPU/GPU/AI芯片公司)、科技巨头(FAANG)内部工具链中的渗透率。

供需与市场数据

  • 供应:完全开源,由 LLVM 基金会管理。核心贡献者来自苹果、谷歌、英伟达、AMD、英特尔、华为等科技巨头及学术机构。基金会通过举办开发者会议、管理商标和法律事务来支持社区。
  • 需求:需求方是所有需要构建编译器的实体。分为两类:
    1. 直接需求:编程语言团队(需要后端)、硬件公司(需要前端和优化器)、编译器工具链供应商(如 IAR, Arm Compiler)。
    2. 衍生需求:依赖 LLVM 生态构建产品的企业,如AI 芯片公司(其软件栈的核心)、高性能计算公司、云服务商。
  • 市场数据:LLVM 本身不产生直接收入,其价值体现在赋能的庞大生态中。LLVM 工具链在现代软件开发中占据核心地位,但其精确的直接或间接依赖比例难以量化。在移动设备(iOS/Android)和新兴 RISC-V 领域,这一比例接近100%。其衍生出的商业支持、定制开发和培训服务是一个小众但稳定的市场。

代表公司与资本映射

  • 深度贡献与采用巨头
    • 苹果:最大用户和早期关键推动者。Swift 和 Objective-C 编译器、整个 macOS/iOS 开发工具链核心。(受益:自身生态粘性与竞争力)
    • 谷歌:Android NDK 默认编译器、TensorFlow 编译器后端(XLA)的部分使用、为 Clang/LLVM 贡献大量代码。(受益:Android 生态、云 AI 服务)
    • 英伟达:CUDA 编译器核心使用 LLVM,是其 GPU 计算生态的基石之一。(受益:CUDA 护城河)
    • AMD:ROCm(对标CUDA)平台中的 GPU 编译器基于 LLVM。(受益:追赶 CUDA 生态)
    • 英特尔:ISPC(隐式 SPMD 程序编译器)等工具基于 LLVM,OneAPI 工具链也深度集成。(受益:异构计算战略)
  • 关键生态受益方
    • 所有 AI 芯片初创公司(如寒武纪、地平线等):其软件开发工具链几乎必然基于 LLVM 构建,以降低开发成本,快速支持主流编程框架。(LLVM 是其“卖铲子”的关键供应商)
    • RISC-V 芯片公司(如 SiFive、平头哥):LLVM 是 RISC-V 架构事实上的官方编译器,是其构建软件生态的生命线。(LLVM 是 RISC-V 生态的基石)
    • 云服务商(AWS, Azure, GCP):在其自研芯片(如 AWS Graviton/Trainium, Google TPU)的软件栈中广泛使用 LLVM 相关工具。

投资逻辑

LLVM 的投资逻辑是 “基础设施赋能”和“卖铲子”逻辑,主要体现在以下几个方面:

  1. AI 芯片竞赛的“卖铲人”:任何一家想进入 AI 加速器市场的公司,都必须构建基于 LLVM 的软件栈。投资 LLVM 生态的成熟度,就是投资新硬件公司的成功概率。关注那些在 LLVM 社区有深厚技术积累和贡献的团队,以及为芯片公司提供 LLVM 相关定制开发服务的公司。
  2. 计算自主化的“操作系统”级工具:在追求供应链安全和计算自主的背景下(如中国的“信创”),基于 LLVM 构建自主可控的编译器工具链是必经之路。投资相关编译器技术公司,等同于投资底层软件基础设施的自主化。
  3. RISC-V 生态的核心:RISC-V 的崛起与 LLVM 的强大密不可分。投资 RISC-V 不可忽视 LLVM 工具链的成熟度和商业支持。同样,基于 LLVM 的 RISC-V 工具链提供商具有明确价值。
  4. 软件定义硬件的桥梁:随着 MLIR 等技术的发展,LLVM 生态正在从“编译到固定硬件”向“编译并影响硬件设计”演进。在可重构计算、领域专用架构等领域,LLVM/MLIR 工具链将成为软硬件协同设计的核心,这是长期的技术演进方向。

常见误读纠偏

  • 误读一:“LLVM 是一个虚拟机。”
    • 纠正:这是其历史名称(Low Level Virtual Machine)带来的最大误解。LLVM 不是一个传统意义上的、在运行时解释执行字节码的虚拟机(如 JVM)。它是一个编译器基础设施。其“虚拟”体现在它定义了一个理想化的、与具体硬件无关的 IR 虚拟指令集,但这个指令集最终都会被“编译”成真实的机器码直接执行,而非解释执行。虽然它有 JIT 功能,但那只是其众多工具之一。
  • 误读二:“LLVM 只是给 CPU 用的。”
    • 纠正:LLVM 的后端可以针对任何能执行指令的硬件,包括 GPU、DSP、FPGA 乃至专用的 AI 加速器。事实上,如前所述,NVIDIA 和 AMD 的 GPU 编译器都大量使用了 LLVM。它的目标是成为所有计算硬件的通用编译器前端与优化器
  • 误读三:“MLIR 是 LLVM IR 的替代品。”
    • 纠正:MLIR 不是 LLVM IR 的替代品,而是补充和扩展。MLIR 的目标是处理比 LLVM IR 更高层、更领域特定(如机器学习张量图、硬件描述)的表示。它最终可以降级到 LLVM IR,从而复用 LLVM 成熟的后端。两者是协作关系,共同构成一个多层次的编译栈。

学习路径

  1. 概念入门:阅读 LLVM 官网的 “Introduction to the LLVM Compiler”“LLVM Tutorial: Kaleidoscope”,通过实现一个简单语言来理解全流程。
  2. IR 精通:学习 LLVM IR Language Reference Manual。这是核心文档。手动编写一些简单的 .ll 文件,使用 llclli 工具进行编译和执行。
  3. 实践优化:编写简单的 C 程序,使用 clang -O0 -S -emit-llvm 生成未优化 IR,再对比 clang -O3 生成的 IR,分析优化效果。学习编写自定义的 LLVM Pass。
  4. 深入后端:选择一个感兴趣的目标(如 RISC-V),研究 LLVM 后端代码结构(位于 llvm/lib/Target/)。理解指令选择、寄存器分配等关键步骤。
  5. 参与社区:订阅 LLVM 的开发者邮件列表 (llvm-dev),阅读提交记录,尝试修复简单的 bug(如标记为 “beginner” 的任务)。参加 LLVM 开发者大会。

一句话总结

LLVM 是构建现代计算生态的 “编译器乐高”和“硬件适配层”,它通过标准化的中间表示(IR)解耦了软件创新与硬件迭代,是 AI 芯片竞赛、RISC-V 崛起和计算自主化背后看不见的基石。

延伸阅读与来源

  • 官方权威LLVM 官网 —— 文档、教程、博客、发布版本。
  • 核心论文:Chris Lattner, Vikram Adve. “LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation” (2004). —— 描述最初架构的经典论文。
  • 深度书籍:《Getting Started with LLVM Core Libraries》 by Bruno Cardoso Lopes, Rafael Auler. —— 实践导向的入门书。
  • MLIR 专题MLIR 官网 —— 了解 LLVM 面向未来的新战场。
  • 行业视角:各芯片公司(如 NVIDIA, AMD, Intel, SiFive)的技术博客,常有关于其如何使用或贡献 LLVM 的深度文章。
source: 公开披露与公开资料整理 本页仅用于产业链学习、信息检索和研究辅助;不构成投资建议,不预测涨跌,不提供买卖、仓位或目标价建议。
完整概念页 复盘 13 节结构 公司投研页 沿产业链找到受益公司 投资课 把概念转成可跟踪模型