资源与支持

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

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.
P570 Gen 3:系统视角
最新文章
P570 Gen 3:系统视角
然而,CPU 的需求横跨性能、功耗和成本等多个维度。在某些细分市场中,需要在不同的功耗与成本约束下实现性能提升。基于这类 CPU 的系统需要可信赖的产品路线图,才能切实交付新的系统能力。尽管部分供应商已退出“低端市场”,SiFive 仍坚持在整条性能曲线上持续创新。本次发布的 P570 Gen 3 Performance IP,旨在为中低端、具备 Linux 能力的系统提供显著的性价比与能效比提升。
SiFive Performance™ P570 Gen 3 深度解析:面向下一代消费级与商用应用的高性能能效设计
最新文章
SiFive Performance™ P570 Gen 3 深度解析:面向下一代消费级与商用应用的高性能能效设计
SiFive 的核心是 RISC-V,这是 SiFive 创始人在公司成立 5 年前发明的指令集架构 (ISA)。SiFive 正持续演进基于 RISC-V 的 IP 基础模块,重新定义并推动各类计算平台的普及化发展。在技术领域,演进并非一串随机变化的时间线,而是一系列精心规划、环环相扣的里程碑。每一步演进都会创造一系列新的环境条件,从而推动下一次更复杂的跨越成为必然。要赢得这场竞赛,关键在于具备适应变化的灵活性与持续创新能力,而这两点正是 SiFive 与 RISC-V 的核心价值观所在。