砺睿微助力 ISA-L EC 加速,为 RISC-V 注入极致存储性能¶
在数据规模以前所未有的速度增长的今天,如何经济、高效、可靠地存储海量信息,已成为存储世界的基础性挑战。 在这场挑战中,砺睿微致力于为 RISC-V 生态在高性能存储领域的应用注入关键动力。我们通过开源社区中的英特尔存储加速库(ISA-L Intel Storage Acceleration Library)中的纠删码(Erasure Coding, EC)技术,将 ISA-L 中最为复杂、也最为核心的 EC 模块采用向量指令和最小乘法表在 RISC-V 平台上高效实现并优化,其性能平均提升 34 倍,持平并超过主流ARM 处理器平台。这是存储算法与 RISC-V 架构的一次结合,为 RISC-V 服务器进入企业级存储、数据中心等高性能存储市场铺平了道路。
1 存储中 EC 重要性¶
传统三副本技术存在空间利用率低下的问题,例如存储10TB有效数据,却需占用30TB物理空间,空间利用率仅为33%。而纠删码(EC)将数据切分为k个数据块并生成m个校验块(k+m),在确保同等级数据可靠性(任意m个块丢失可恢复)的前提下,能将空间利用率提升至k/(k+m)。然而,EC在带来高存储效率的同时,其复杂的编解码计算也成为 Ceph 开源及业界主流分布式存储系统的性能瓶颈,大量消耗CPU资源且影响数据写入与恢复速度。一个高效的 ISA-L 实现可以极大地提升系统整体吞吐量,降低延迟,并将宝贵的 CPU 资源从计算任务中解放出来,提升整体系统性能。
2 在 RISC-V 上重塑 EC 编解码性能¶
EC 模块作为 ISA-L 库中最为复杂的部分,主要是因为其理论、数学复杂性以及实现复杂性,它基于伽罗瓦域(Galois Field, GF)使用矩阵乘法来实现编解码。将 ISA-L EC 在 RISC-V 平台实现,其核心挑战在于如何有效将算法和 RV 架构特点进行结合,ISA-L EC 的关键 SIMD 优化,是为 x86 的 SSE、AVX 等指令集量身打造的。我们通过算法优化与 RV 的架构特点相结合,使用 RISC-V 向量扩展实现并超越其性能: 1. 算法级深度优化:审视了编码/解码矩阵的生成、调度表的构建以及数据恢复的逆矩阵求解过程,通过构造小乘法表,优化内存访问模式,提升 L1 cache 命中率,将整个乘法操作减少到 2 次查表 4 个计算。 2. 并行查表优化:利用 RV 向量扩展指令的独特优势,如可变向量长度(VLEN)、灵活的掩码操作等,对伽罗瓦域乘法、矩阵乘法等核心运算进行并行查表处理,通过并行指令使得多个查表或计算的工作在一个指令内完成,大幅提升了性能。 3. 精细的汇编实现:对于性能敏感的内层循环,手写了高度优化的 RISC-V 汇编代码,减少数据依赖及分支预测失败,并确保了对寄存器和计算单元的极致利用,将理论性能压榨到极致。
3 性能结果¶
下图显示了相对开源的性能提升效果。
下表显示了与主流 ARM 平台的对比,且其性能持平并超过当前业界主流 ARM 平台 ISA-L EC 性能。
patch提交链接: https://github.com/intel/isa-l/pull/331 基础代码 https://github.com/intel/isa-l/pull/351 优化链接 目前patch代码都已经被ISA-L社区接受并合入,同时代码已提交到openEuler社区。
4 结论¶
ISA-L EC on RISC-V不仅实现了功能上的完整对等,更在性能上达到了预期,是开放架构向高性能存储领域迈出的坚实一步。这不仅验证了 RISC-V 向量扩展在处理复杂计算及内存密集型任务时的强大能力,也为整个 RV 生态系统补上了一块重要的软件拼图,为未来在 RISC-V 上构建高效、可靠、经济的存储系统奠定了坚实的基础。