Versal AI Engine加速椭圆曲线密码学计算实践
1. 项目概述Versal AI Engine加速椭圆曲线密码学计算在当今的数字安全领域椭圆曲线密码学ECC因其高安全性和计算效率成为主流方案。其中多标量乘法MSM作为ECC的核心运算在零知识证明系统如zk-SNARKs中承担着最繁重的计算任务。传统CPU处理MSM时面临巨大性能瓶颈而GPU方案又存在能效比问题。本文介绍的正是我们团队在Versal ACAP异构平台上利用其AI EngineAIE阵列加速MSM中椭圆曲线点加法PADD的创新实践。Versal ACAP是AMD/Xilinx推出的革命性异构计算平台集成了三类计算单元传统处理器系统PS、可编程逻辑PL和400个AI Engine组成的阵列。AIE作为SIMD架构的VLIW处理器每个时钟周期可执行7条指令在32位定点模式下支持8路并行乘加运算MAC。这种架构特别适合处理PADD中密集的模乘运算但同时也面临进位传播等标量操作的挑战。我们的核心突破在于创新性地将进位传播完全保留在AIE内部处理避免了与PL的数据交换开销提出四种不同的计算任务空间映射策略在吞吐量和延迟之间实现最佳平衡针对BLS12-377曲线特性优化了模约减流程减少约30%的冗余计算最终实现67.0 M tasks/s的吞吐量达到理论内存带宽的50.2%较CPU实现提升568倍2. 技术背景与挑战解析2.1 椭圆曲线密码学基础现代椭圆曲线密码学通常采用扭曲爱德华曲线表示法-x² y² 1 k²x²y²。在射影坐标系(X,Y,T,Z)下点加法运算涉及以下核心计算扩展坐标转换输入点表示为(X,Y,U,Z)其中Uk·TZ1混合点加法假设两个点分别采用不同坐标系表示减少模乘次数完全点加法用于结果聚合阶段需要更完整的计算流程以BLS12-377曲线为例其模数p为377位每个点加法操作需要约17次377位模乘运算。在MSM场景中使用Pippenger算法可将计算复杂度从O(n)降至O(n/logn)但依然需要处理数千次点加法。2.2 Versal AI Engine架构特性AI Engine阵列采用独特的空间架构设计计算单元400个AIE Tile组成50x8矩阵运行频率1.25GHz指令集7路VLIW指令支持8x32位SIMD乘加操作存储层次每个Tile有32KB本地存储支持256位宽访问互连网络AXI4 Stream32位全连接但每个方向端口数有限Cascade Stream384位宽但仅限同行相邻Tile间通信共享内存相邻Tile可通过256位总线共享数据这种架构在提供强大并行计算能力的同时也对数据布局和任务划分提出了严苛要求。特别是密码学计算中的进位传播操作传统上依赖FPGA的专用进位链CARRY8而AIE缺乏类似硬件支持必须通过标量单元模拟成为主要性能瓶颈。2.3 关键技术挑战在AIE上实现高效PADD面临三大挑战计算密集型每个点加法需要约6000次32位乘法运算数据依赖性强进位传播导致长依赖链限制指令级并行内存带宽受限完全在PL中处理进位需要42.6 bits/cycle/Tile的带宽远超PLIO接口能力我们的解决方案是通过算法-架构协同优化将计算任务分解为适合AIE处理的细粒度流水线同时最小化Tile间的数据通信。3. 核心算法设计与优化3.1 大整数乘法优化采用改进的教科书算法schoolbook method处理377位整数乘法输入分解将377位整数a分解为16个25位段a₁₅...a₀向量化处理每8个段打包为一个向量共2个向量{ā₀,ā₁}块划分将乘法计算划分为6个计算块如图2a所示关键优化点SIMD并行每个块内8个32位乘法并行执行数据复用广播输入向量到多个计算块减少数据搬运延迟隐藏通过软件流水线处理多个输入序列模乘运算采用Barrett约简算法通过预计算常数μ⌊b²k/m⌋其中k⌈log₆m⌉将模约简转化为三次乘法z x × yq (z × μ) b²kr z - q × m我们通过精心安排计算块顺序使Barrett约简的三个乘法阶段能够无缝衔接减少中间结果存储。3.2 进位传播创新方案针对AIE架构特点我们提出两级进位传播策略精确进位传播用于关键路径// 伪代码示例处理向量元素的精确进位 for(int i0; i7; i) { uint64_t carry acc[i] 25; acc[i] 0x1FFFFFF; acc[i1] carry; }近似进位传播用于非关键路径// 利用数学恒等式 x mask x - (xs)s void coarse_carry(int64_t* acc) { int64_t hi acc 25; int64_t lo acc - (hi 25); *acc lo (hi 0x1FFFFFF); // 确保不进位到更高位 }实测表明这种混合策略可在保证数值精度的前提下将进位传播的标量操作减少40%同时通过VLIW指令并行执行标量和向量操作。3.3 空间映射策略比较我们探索了四种不同的计算任务划分方案细粒度并行Fine-grained每个AIE Tile处理一个计算块优点最大化计算密度缺点需要频繁Tile间通信吞吐量仅0.012 task/cycle粗粒度并行Coarse-grained每个AIE Tile处理完整模乘的三个阶段mul_in, mul_mu, mul_m吞吐量0.082 task/cycle延迟1097 cycles中粒度协作式Medium-cooperative两个Tile协作处理一个模乘吞吐量0.053 task/cycle中粒度独立式Medium-independent两个Tile独立处理模乘的不同部分最佳延迟795 cycles吞吐量0.050 task/cycle最终选择粗粒度方案用于桶积累阶段高吞吐需求中粒度独立方案用于桶聚合阶段低延迟需求。4. 实现细节与性能优化4.1 系统级架构设计整体系统架构分为三层PS层ARM处理器负责任务调度和DDR访问PL层FPGA逻辑处理数据预处理和最终约简AIE层400个Tile组成的计算阵列执行核心PADD运算数据流采用双缓冲设计PL通过AXI4-Stream向AIE输送点数据AIE内部使用级联流Cascade Stream传递中间结果计算结果通过共享内存返回PL进行最终处理4.2 AIE内核优化技巧通过实测总结出以下关键优化点指令调度// 典型VLIW指令束示例 { vmac, vadd, scalar_add, vpermute, nop, nop, nop }通过合理组合向量乘加、标量运算和数据重排操作最高可实现1.98的VLIW利用率7个槽位中平均使用5.86个。数据布局优化将常数μ和模数M预存储在向量寄存器中使用256位宽加载指令同时读取8个32位操作数关键中间结果保存在寄存器文件避免内存访问流水线控制// 软件流水线示例处理16个连续输入 #pragma unsafe for(int i0; i16; i) { prefetch(input[i4]); process(input[i]); }通过循环展开和预取隐藏内存延迟使计算单元保持90%以上利用率。4.3 性能实测结果在VCK190评估板上实现的性能指标指标本方案CPU基准提升倍数吞吐量M task/s67.00.11568×延迟μs/task1.059.699.2×能效GOPS/W42.30.853×内存带宽利用率达到50.2%相比将进位传播放在PL的方案21.9%带宽利用率有显著提升。5. 经验总结与优化方向5.1 实际部署中的教训流控问题 初期设计时低估了AXI4 Stream背压的影响。解决方案是在每个AIE Tile入口添加16深度的FIFO使用PL中的弹性缓冲调节数据速率Bank冲突 当多个Tile同时访问共享内存时出现性能下降。优化方法将共享数据分散到不同存储Bank采用交错访问模式编译器限制 AIE编译器对复杂控制流优化不足。应对策略将核心计算拆分为简单函数使用#pragma unroll强制展开关键循环5.2 未来优化方向算法层面引入Montgomery模乘减少进位传播混合Karatsuba算法提升大数乘法效率架构层面探索3D堆叠内存缓解带宽瓶颈利用AIE近存计算特性优化数据局部性系统层面结合PL实现异构流水线开发动态负载均衡调度器这项研究证实了Versal ACAP在密码学加速领域的巨大潜力。我们的优化方案不仅适用于椭圆曲线计算也可推广到其他需要大数运算的密码学原语如RSA、格密码等。随着AIE架构的演进预计还将获得更大的性能提升空间。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2607926.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!