NVMe-MSM
You Provide the Linux, We Deliver the MSM Result.
Last updated
You Provide the Linux, We Deliver the MSM Result.
Last updated
NVMe-MSM is a demonstration of our cutting-edge modular design for Zero-Knowledge Proof hardware, combining high-performance MSM (Multi-Scalar Multiplication) acceleration with seamless NVMe protocol support. This demo is implemented on a VCU118 FPGA, showcasing our custom MSM hardware design integrated with an NVMe endpoint.
To complete the system, we provide a host-side Python-based driver that utilizes Linux’s open-source command-line tools to enable efficient communication between the host and the FPGA. This demo showcases our capability to not only accelerate MSM computations but also harness NVMe for seamless data transfer, ensuring compatibility with modern infrastructure and practical applications. NVMe-MSM stands as a tangible proof of concept for our vision of scalable, efficient, and accessible ZK hardware solutions.
FPGA: XIlinx vcu118
CPU: RISC-V
System: Chipyard based
Clock: 100Mhz
In this demo, the MSM-NVMe system works as follow:
Host write scalars and BLS-12377 points over to our SoC.
The SoC performs the MSM computation and sends a completion signal back to the host.
The host triggers a read operation to retrieve the results.
The host sends an command to initiate the MSM operation.
This video highlights the simplicity of our driver, which leverages Python’s subprocess
module to call commands. By using Linux’s native NVMe support, our approach ensures seamless interaction with the SoC, demonstrating how straightforward it is to integrate with modern systems.
We achieve MSM completion in 1.396 when amount of points seconds at a clock frequency of 100 MHz. When the clock frequency is increased to 250 MHz, the expected execution time is approximately 0.546 seconds, which is comparable to Jump’s CycloneMSM result of 0.559 seconds.