ZPU
概要
ZKアクセラレーションのために設計された汎用かつプログラマブルなハードウェア
既存のハードウェアでは多様な暗号プリミティブやアルゴリズムに対応するのに苦労している
証明生成におけるオーバーヘッドを最小化するのが目的
既存のFHE ASIC設計に匹敵する性能を有するらしい
ISA
プログラマビリティを備えるためにISA(Instruction Set Architecture)上に構築されている
NTTやマルチスカラー演算、楕円曲線上の操作などZKで一般的に使用されるアルゴリズムをサポートするために、PE(Proccesing Element)の演算子にモジュラー演算が用いられている。
このPEのコアはDSP(デジタル信号処理)やMAC(Multiply-Accumulate)となっている
https://scrapbox.io/files/65115e714e58a3001c954365.png
ゼロ知識証明プロトコルの変化に対応するためにISAで定義されたPEの相互接続ネットワークで構成されている。
先述の通りISAにより、プロトコルの変更に柔軟に対応し幅広い暗号プリミティブをサポートできる。
また、ハードウェアを固定せずにISAを利用することでZPUの製造後にソフトウェアを改良させることができるので、未来に大きな進歩が生まれても効率的なハードウェア資源を提供することができる。
PE
モジュロ乗算、加算、減算をサポートするコアで設計されている。
例えばNTTバタフライ演算は、加算、減算、乗算をすべてモジュロ演算で行う。
さらに、各PEには以下のような特殊なメモリーユニットが搭載されている
1. Arrival Lounge:PEに到着したデータを保存するメモリ。
2. Departure Lounge:PEを出発するデータを格納するメモリ。
3. Scratchpad Memory for Operands A, B, and C:中間結果を格納する3つのメモリ。
4. Memory Extender:マルチスカラー乗算(MSM)のバケット集約など、さまざまなアルゴリズムに対応する多目的メモリ。
5. Program Memory:命令キューを格納するメモリ。
https://scrapbox.io/files/6511620fa1966f001da325cd.png
PE は大規模ワードモジュラー演算(最大 256 ビットワード)をネイティブサポートしている
すべてのPEはリング接続で接続されており、各PEは隣接する2つのPEに直接接続され、円形のネットワークを形成するトポロジである。このリング接続により、制御データは異なるPE間を効率的に伝播する。
また、PEはインターコネクトコンポーネントを介して接続され、異なるPE間の直接接続が時間経過とともに可能になる。
このセットアップにより、PEは他のすべてのPEから情報を送受信できる。
また、大容量メモリと高メモリ帯域幅をサポートするため、オフチップHBM(High Bandwidth Memory)も統合している。
複数のPEがPEクラスタを形成し、各PEクラスタは1つのHBMバンクまたはチャネルに接続される。
また、システム全体の動作を管理するために、ARMベースのオンチップCPUサブシステムが搭載されている
異なるオペランドサイズに対する効率のバランスを取る必要性からPEにおける高ビット幅ネイティブサポートと低ビット幅ネイティブサポートのトレードオフが生じる
PEが高ビット幅のネイティブサポートを持つ場合、大きなオペランドサイズを小さなチャンクに分解する必要なく処理できるように最適化される。しかし、この最適化の代償として、ビット幅が小さい演算ではPEが十分に活用されず、効率が低下する
一方PEが低ビット幅のネイティブサポートを持つ場合、小さいオペランドサイズをより効率的に処理できるように最適化されるしかし、この最適化はビット幅の大きな演算を処理する際に非効率を生み出す。なぜならPEは大きなオペランドを小さなチャンクに分解し、これらのチャンクを順次処理する必要があるため
課題は、幅広いオペランド・サイズにわたって効率的な処理を保証する、高ビット幅と低ビット幅のネイティブ・サポートの適切なバランスを見つけることにある。このバランスは、ZKプロトコルというターゲット・アプリケーション領域で一般的なビット幅を考慮し、各設計選択の利点と欠点を比較検討する必要があります。ZPUアーキテクチャの場合、256ビットのワードサイズが良いバランスとして選択された。
参考資料