作者:Ingonyama 编译:Cointime.com 237

在这篇博客中,我们提出了零知识处理单元(ZPU),这是一个多功能且可编程的硬件加速器,旨在满足零知识证明处理的新需求。
我们介绍了ZPU的架构和设计考虑,并解释了ZPU生态系统中不同部分的设计选择:ISA(指令集架构)、数据流、存储器和处理单元(PE)内部结构。最后,我们将其与用于零知识证明和完全同态加密(FHE)的最先进ASIC架构进行了比较。
引言
数据驱动应用程序的快速增长以及对隐私的日益需求,导致人们对保护敏感信息的密码协议产生了浓厚兴趣。在这些协议中,零知识证明(ZKP)作为确保计算完整性和隐私的强大工具而脱颖而出。ZKP使一方能够向另一方证明某个陈述的有效性,同时又不泄露任何额外信息。这种特性促成了ZKP在各种注重隐私的应用中的广泛采用,包括区块链技术、安全云计算解决方案和可验证的外包服务。
然而,ZKP在实际应用中面临一个重大挑战:证明生成所带来的性能开销。ZKP算法通常涉及对非常大整数进行复杂的数学运算,比如大规模多项式计算和椭圆曲线上的多标量乘法。此外,密码算法不断发展,新的更高效的方案正在快速发展。因此,现有的硬件加速器很难跟上密码原语的各种差异和密码算法变化的步伐。
在这篇博客中,我们提出了零知识处理单元(ZPU),这是一种新颖而多功能的硬件加速器,旨在满足零知识证明处理的新需求。ZPU基于一种指令集架构(ISA)构建,具有可编程性,能够适应快速发展的密码算法。ZPU采用互连网络的处理单元(PEs),本地支持大字模数算术。PE的核心结构受到了乘-累加(MAC)引擎的启发,该引擎是数字信号处理(DSP)和其他计算系统中的基本处理单元。PE的操作使用模数算术,核心组件经过定制以支持ZK算法中的常见操作,如NTT蝶形操作和椭圆曲线点加法用于多标量乘法。
指令集架构

ZPU架构采用互连网络的处理单元(PEs),如下图所示,由指令集架构(ISA)定义。我们选择了这种架构,以适应零知识协议的不断变化的背景。
ISA方法使得ZPU能够保持灵活性和适应ZK算法的变化,并支持广泛的密码原语。此外,利用ISA而不是固定硬件可以在制造后继续改进软件,确保即使在该领域出现新的进展时,ZPU仍然具有相关性和高效性。
ISA是处理器可以执行的指令集。它作为硬件和软件之间的接口,定义了软件与硬件交互的方式。通过使用自定义ISA设计ZPU,我们可以针对ZK处理任务的特定要求进行优化,如大字模算术运算、椭圆曲线密码学和其他复杂的密码操作。

PE核心组件

每个PE都设计有一个核心,包括一个模乘器、一个加法器和一个减法器,如图2所示。这些核心组件受到数字信号处理(DSP)和其他计算系统的基本处理单元——乘积累加(MAC)引擎的启发。MAC引擎高效地执行乘积累加运算,即将两个数相乘并将乘积加到累加器中。
PE的核心结构经过定制,以满足ZK中的常见操作,如用于多标量乘法的椭圆曲线点加法和用于数论变换(NTT)的NTT蝶形操作。蝶形操作涉及模算术下的加法、减法和乘法。这个操作从其计算流程图的蝴蝶状外观得名,非常适合PE的核心硬件组件,因为它们通过专用的蝴蝶指令实现原生的蝴蝶计算。
此外,每个PE还包含几个专用的存储单元,包括:
1、到达大厅:用于存储到达PE的数据的存储器。
2、离开大厅:用于存储离开PE的数据的存储器。
3、操作数A、B和C的临时存储器:三个独立的存储器,用于存储中间结果。
4、存储扩展器:用于处理各种算法需求的多功能存储器,例如用于多标量乘法(MSM)的桶聚合。
5、程序存储器:用于存储指令队列的存储器。

PE位宽

PE具有对大字模算术操作(高达256位字)的本机支持。在PE中,高位宽本机支持和低位宽本机支持之间的权衡来自于需要在不同操作数大小之间平衡效率的需求。
当PE具有高位宽本机支持时,它针对处理大操作数大小进行了优化,无需将其拆分为较小的块。然而,这种优化以减少较低位宽操作的效率为代价,因为PE被低效利用。另一方面,当PE具有低位宽本机支持时,它针对更高效地处理小操作数大小进行了优化。然而,这种优化在处理较大位宽操作时会产生效率低下,因为PE需要将较大的操作数拆分为较小的块并按顺序处理这些块。
挑战在于找到高位宽本机支持和低位宽本机支持之间的正确平衡,以确保在各种操作数大小范围内实现高效处理。此平衡应考虑目标应用领域(ZK协议)中常见的位宽,并权衡每种设计选择的优缺点。在ZPU架构中,选择了256位字大小作为良好的平衡点。
PE连接性

所有PE通过环连接连接在一起,这是一种拓扑结构,每个PE直接连接两个相邻的PE,形成一个循环网络。环连接允许控制数据在不同PE之间高效传播。PE还通过互连组件进行连接,该组件类似于位移器,可以在不同时间段内直接连接不同的PE。这种设置允许PE与所有其他PE之间发送和接收信息。
外围组件

该架构还集成了片外高带宽存储器(HBM),以支持高内存容量和高内存带宽。多个PE被聚集在一起形成一个PE集群,每个PE集群连接到一个HBM存储器或通道。此外,还包括基于芯片的ARM CPU子系统,用于管理整个系统操作。
性能评估

为了评估ZPU的性能,我们考虑了对我们打算加速的算法至关重要的关键操作。我们主要关注NTT蝶形操作和椭圆曲线(EC)点加法操作。为了评估MSM和NTT操作的总计算时间,我们计算了进行这些操作所需的总计算指令数量,并将其除以时钟频率和PE的数量。
NTT蝶形操作在每个时钟周期执行一次。对于椭圆曲线点加法操作,这是多标量乘法(MSM)中的关键元素,我们将其拆分为可以在单个PE上执行的基本机器级指令。然后,我们计算完成此操作所需的时钟周期数。通过这种分析,我们确定每个椭圆曲线点加法操作可以在18个时钟周期内执行一次。
这些假设为我们的性能评估提供了基础,并可根据需要进行调整,以反映不同的算法要求或硬件能力。
根据我们的计算,只有72个PE的配置以GPU频率1.305 GHz运行将足以达到Zprize MSM操作中GPU类别获奖者的性能水平。Yrrid Software和Matter Labs都取得了这一成就,使用A40 NVIDIA GPU进行四个MSM计算的结果为2.52秒。比较是基于固定基点的MSM计算,涉及从BLS 12–377标量场中随机选择的2²⁶个标量,以及来自BLS 12–377 G1曲线的一组固定椭圆曲线点和标量场中有限域元素的随机采样输入向量。
根据我们对PE的面积估计,使用与A40 GPU相同的8纳米工艺的ASIC可以在与A40 GPU相同的628平方毫米面积内容纳大约925个PE。这意味着我们的效率大约比A40 GPU提高了13倍。
PipeZK是一种高效的流水线加速器,旨在提高零知识证明(ZKP)生成的性能,具有专用的MSM和NTT核心,分别优化多标量乘法和大型多项式计算的处理。
与PipeZK相比,我们发现只有17个PE的配置以PipeZK的频率300 MHz运行将足以达到其在MSM操作上的性能水平。PipeZK在BN128曲线上以300 MHz的频率执行2²⁰长度的MSM操作,完成时间为0.061秒。此外,要达到与PipeZK在NTT操作上的性能水平,运行一个2²⁰元素,256位元素的NTT操作,频率为300 MHz,完成时间为0.011秒,我们需要大约4个以相同频率运行的PE。总体而言,要达到与PipeZK同时运行MSM和NTT的性能水平,我们需要21个PE。
根据我们的面积估算,使用28纳米工艺的ASIC(与PipeZK芯片采用相同的工艺技术)可以在与PipeZK芯片相同的50.75平方毫米面积内容纳大约16个PE。这意味着我们的效率略低于PipeZK的固定架构(效率降低25%),同时仍然完全适应不同的椭圆曲线和ZK协议。
环处理单元(RPU)是最近设计的一种加速基于环的Ring-Learning-with-Errors(RLWE)计算的方法,它是各种安全和隐私增强技术(如同态加密和后量子密码学)的基础。
与RPU相比,我们的计算表明,在计算64K 128位元素的NTT时,要达到RPU在其最优配置(128个银行和HPLEs)下的性能水平,我们需要大约23个以RPU频率1.68GHz运行的PE。我们的分析显示,采用与RPU相同的12纳米工艺的ASIC可以容纳大约19.65个PE,而其占据了20.5平方毫米的面积。这意味着我们的效率略低于RPU(效率降低15%),但兼容除NTT之外的其他原语。
TREBUCHET是一种全同态加密(FHE)加速器,使用环处理单元(RPU)作为芯片上的块。块还通过将数据调度到计算元素附近来促进内存管理。RPU在整个设备中被复制,使软件可以最小化数据移动并利用数据级并行性。
TREBUCHET和ZPU都基于ISA架构和本地支持非常长字(128位或更多)的大型算术字引擎(在模运算下)。然而,与RPU或TREBUCHET SoC相比,ZPU的附加价值在于扩展了其设计用于解决的问题集。尽管RPU和TREBUCHET主要专注于NTT,但ZPU支持更多原语,如多标量乘法(MSM)和取向于算术化的哈希函数。
结束语
我们的性能评估表明,ZPU可以达到甚至超过现有最先进ASIC设计的性能,并且更适应ZK算法和密码学原语的变化。虽然需要考虑一些权衡之处,例如PE中高位宽和低位宽的本地支持之间的平衡,但ZPU的设计经过精心优化,以确保在广泛的操作数大小范围内实现高效的处理。
所有评论