资源与支持

SiFive 博客

来自 RISC-V 专家的最新洞察与深度技术解析

August 12, 2026

为您介绍 SKL:SiFive 算子库

我们非常高兴地宣布推出 SiFive 算子库(SiFive Kernel Library,简称 SKL,发音为 “skill”)。这是一个开源的高性能计算例程集合,专为 RISC-V Vector ISA (RVV) 及其各种扩展(包括 SiFive 的矩阵引擎)进行了深度优化。

SKL 中的算子是用于 SiFive 及其他厂商的 RISC-V 硬件上运行高性能应用程序的底层构建块。作为在 MIT license 下分发的独立源文件,这些性能原语专门设计用于集成到其他开源或专有项目和框架中。SiFive 已开始依赖 SKL 在保密协议下向客户展示 SiFive’s Intelligence™ 系列处理器的极致性能;现在,我们很高兴能将其分享给更广泛的 RVV 开发者社区。

RISC-V 若想持续崛起并成为优于其他架构的替代方案,将需要一个强大的软件基础,以稳定地从不同领域多样化的硬件产品中发挥出最高水平的性能。通过将 SKL 建设成为涵盖 AI 和机器学习等计算密集型领域核心算法的集中库,我们的目标是确保主流应用在 RVV 平台上永远不缺乏优化后的代码。本次首发产品主要侧重于 SiFive 的旗舰 IP,但我们的意图是让 SKL 能够以此为基础不断壮大,从而在当前及未来整个生态系统中,为所有高性能 RISC-V 系统发挥举足轻重的作用。

本文接下来的内容将深入探讨 SKL 的细节,包括其在 2026 年 8 月发布时的架构与特性。我们诚挚邀请读者前往 GitHub 访问其代码库,了解更多信息、关注最新动态,并积极使用和贡献 SKL: https://github.com/sifiveinc/skl

设计与特性

SKL 的核心功能以算子(Kernel)的形式提供。一个算子由单个源文件中的一个或多个 C 语言函数组成,例如矩阵乘法或 Softmax 等标准算法。每个算子都针对算法、数据类型、ISA 特性以及可能的微架构的具体组合进行了针对性优化。

SKL 的整体设计与核心特性可总结如下:

  • 独立文件与可拆解性: 尽管算子可能会调用同一源文件中的其他函数,但每个算子均可通过单次函数调用来执行。在所有情况下,只需复制恰好三个文件即可从 SKL 中提取出一个算子:算子源文件 kernel.c、声明公共函数原型的头文件 kernel.h,以及包含整个代码库所用最少通用定义共享头文件 skl-common.h。
  • 作为子模块的可组合性: 另一方面,某些项目可能会选择完整引入 SKL 的源码树,形式可以是标准的 Git 子模块,也可以是简单的目录克隆。SKL 算子的独立特性不强制绑定任何构建系统,从而极大地简化了这一过程:客户端项目只需直接访问 skl/src 中的源文件,并通过其现有的构建机制进行编译即可。以此方式集成 SKL 的项目,只要仅依赖指定的公共 API,就能受益于算子的定期更新与底层性能优化。
  • 极低的语言要求: 所有 SKL 算子均采用 C99 编写,并使用 RVV Intrinsics 或内联汇编。唯一的硬性要求是编译器需支持 RVV,不过使用自定义扩展指令的算子则需要相应的工具链支持。
  • 无 libc 或其他库依赖: 使用 SKL 算子无需标准库 support,算子本身不执行内存分配、I/O 操作或系统调用。它们仅依赖如 stddef.h 等定义性头文件,或如 riscv_vector.h 等 RVV 相关头文件,以获取对 vector Intrinsics 的访问权限。
  • 针对流水线的特定优化与通用实现: SKL 既包含针对特定处理器流水线(如 SiFive 的 X390 微架构)进行人工精细调优的算子版本,也包含旨在作为关键算法规范化 RVV 向量化实现的通用版本。具有特定处理器优化的算子通常采用内联汇编编写,并在名称中注明其目标微架构;而更通用的函数则倾向于使用编译器 Intrinsics,并以所需的 ISA 后缀命名。
  • 详尽的文档与测试配套: 所有 SKL 算子均通过每个头文件中的 Doxygen 注释提供 API 级别的文档。同时,多个 Markdown 格式的补充指南也伴随着相关算子库一同提供。代码库还在 skl/test/ 中包含了测试程序和基准测试定义,用于演示算子的预期用法并支持持续集成(CI)。 (一套基础的基于 CMake 的构建系统支持了此功能,但其初衷并非作为编译 SKL 算子的唯一甚至主要手段)。

功能领域

SKL 的核心内容可以按应用领域、ISA 需求和目标微架构进行拆分。

应用领域

功能扩展至以下领域:

  • 矩阵乘法 (GEMM): 支持多种数据类型(16、32 和 64 位 IEEE 浮点数、BFloat16 以及从 8 位扩展至 32 位的四倍位宽整数)的 2D 矩阵乘法,以及特定的 4D 填充矩阵布局。
  • 非线性函数: 覆盖同样广泛浮点数据类型的指数函数、softmax、sigmoid 线性单元 (SiLU) 和高斯误差线性单元 (GELU),主要用于激活函数或作为激活函数使用。
  • 卷积: 许多卷积神经网络 (CNN) 都会使用通用 2D 卷积和深度可分离卷积(depthwise convolution)。前者可以通过 im2col 转换用 GEMM 实现,而后者需要特殊处理。SKL 包含了支持 HWC 数据布局的 2D 深度可分离卷积算子,并针对各种卷积核形状进行了优化。
  • 数据搬移: 矩阵转置以及 packing/unpacking 函数,用于支持 GEMM 算子的使用。
  • 数值计算: 发布时提供了来自 Open Compute Project 的各种低精度浮点格式之间的向量化转换函数。

我们预计,随着时间的推移,该列表将扩展到涵盖更多应用领域,并且每个领域内将包含更多算法。

架构支持

在上述算子系列中,提供了不同的实现,以利用 RISC-V “V” 扩展之外的广泛 ISA 特性,包括:

  • Xsfmm{base, 32a8i, 32a16f, 32a32f}: SiFive 的矩阵引擎。
  • Xsfvfexp{16,32}e: SiFive 的 16 位和 32 位指数函数指令。
  • Xsfvfbfexp16e: SiFive 的 16 位 brain floating point 指数函数指令。
  • Xsfvfexpa: SiFive 的指数近似指令。
  • Xsfvfbfa: SiFive 的原生 brain floating point 算术指令。
  • Xsfvqdotq: SiFive 的 8 位整数 4 元素部分点积指令。
  • Zvfbfmin: 对 brain floating point 的最小支持(转换指令)。
  • Zvfh: IEEE 半精度浮点算术。
  • Zvfofp8min: 8 位 OFP 格式的转换指令。
  • Zvfofp4min: 4 位 OFP 格式的转换指令。

虽然这些扩展中有很多都不是 RISC-V 标准,但随着新标准的批准,我们计划扩展此列表。

为 AI 做好准备

SKL 的首发功能经过精心挑选,旨在覆盖 AI 与机器学习(ML)工作负载中对性能最为关键的热点(Hotspots)。基于 Transformer 的大语言模型(LLM)受益于高吞吐量的矩阵乘法,以及在计算注意力分数时加速的 Softmax;而多层感知机(MLP)的计算则在结合硬件加速激活函数(如 SiLU)的同时,使用了相同的线性代数算子。这一切均由辅助算子提供支持,以便按加速指令的要求对张量数据进行打包和转置。这些操作共同构成了主流模型推理运行时间的大部分。

SKL 中的算子非常适合集成到模型服务框架中,作为其最底层、特定架构函数的即插即用替代方案。例如,PyTorch 的 ATen 张量库支持将张量算子的实现委托给自定义后端例程。vLLM 框架允许不同平台重新实现整个分页注意力(Paged Attention)算法,并将其余算子替换为原生库调用。此外,vLLM 和 ATen 已经验证了将整个算子库(例如 cuDNN 或 MKL BLAS)作为后端计算基底集成的可行性。SKL 已准备就绪,用于实现类似的功能。

未来展望

本次发布标志着 SKL 作为开源库的正式起点。只需快速浏览一下 GitHub 上的提交历史、开放的 Pull Request 列表以及社区讨论,即可确认这绝对是一个正在蓬勃推进的项目。然而,我们希望 SiFive 的初始贡献仅仅是这个故事的开端。SKL 的初衷不仅是供上游软件使用,更是为了拥抱来自整个 RISC-V 社区的贡献。

通过在统一的接口背后,将针对不同平台调优的核心算法集中于一处,SKL 能够加速重点应用对 RISC-V 的支持,并推进整个生态系统发展。随着 SKL 在其他库中的集成不断深化,RISC-V 硬件厂商会发现,通过 SKL 分发其针对特定处理器的优化代码将变得越来越有价值。同时,拥有庞大 RISC-V 用户群体的推理引擎也将看到向 SKL 添加新算子的巨大价值。SiFive 目前的焦点在于将 SKL 集成到 vLLM、PyTorch 及其他相关项目中,我们非常高兴能在此项持续性的工作中与开源社区深度合作。随着新模型的不断涌现,SiFive 将持续致力于添加对新兴算子和数据类型的支持,确保 SKL 在 RISC-V 平台上发挥出最佳性能。

随着本次发布,SKL 正式成为下一代 RISC-V 高性能计算的开源基石。我们期待看到社区利用这些精细调优的例程开发出更多创新项目,确保 RISC-V 能够满足每个新兴计算领域的高性能需求。

Eric Love
Eric Love
Principal Software Engineer at SiFive

Eric Love is a Principal Software Engineer at SiFive and technical lead for the algorithms & libraries team. He is the architect of the SiFive Kernel Library, and has been with the company for more than six years. His experience and interests range from low-level performance programming and micro-architectural software optimization to vectorization, numerical methods, and compilers. Prior to joining SiFive, he was a graduate student at UC Berkeley, where he obtained a PhD in computer science from the Berkeley Architecture Research lab under the supervision of Krste Asanović.

Read more Insights from the RISC-V Experts

The Next Leap in Datacenter AI: Orchestrating Custom Accelerators with SiFive Intelligent Control Units (ACUs)
最新文章
The Next Leap in Datacenter AI: Orchestrating Custom Accelerators with SiFive Intelligent Control Units (ACUs)
SiFive's Intelligence Family compute engines are the ideal Accelerator Control Unit (ACU) to work with customers' custom accelerators. These core and core complexes act as a dedicated, programmable RISC-V front-end controller to command and control.
SiFive 视角:RISC-V SPMP 规范正式批准,助力嵌入式安全飞跃发展
最新文章
SiFive 视角:RISC-V SPMP 规范正式批准,助力嵌入式安全飞跃发展
这项最新批准的 SPMP 功能专为增强运行实时操作系统(RTOS)的嵌入式系统中的内存保护而设计。SiFive 非常高兴能在这一进程中贡献力量,并将继续与整个生态系统保持合作,以完善 RISC-V 标准。我们坚信,SPMP 将在整个行业内获得快速普及。
RISC-V EU Summit 2026: An Ecosystem Coming of Age
最新文章
RISC-V EU Summit 2026: An Ecosystem Coming of Age
I recently returned from the RISC-V Europe Summit 2026 in Bologna and, like many attendees, I came away energized by the announcements, the technical discussions and the sheer number of people building products around RISC-V.