From a 4-point kernel to an NTT
Bit planes, the j→ω substitution and the four-step split turn a 4-point optical DFT into an exact number-theoretic transform.
What this stage does
The optical core only ever sees 4-bit words, and it returns their 4-point DFT exactly. Three pieces of arithmetic on the FPGA turn that into a number-theoretic transform (NTT) of wide operands, the workhorse of lattice cryptography and fully homomorphic encryption.
Bit planes
A 4-point butterfly takes four operands. Bit b of each forms a 4-bit word, its b-th plane, and each plane takes one symbol slot. Because the DFT is linear, the DFT of the operands is the shift-and-add of the planes’ DFTs, and every plane’s DFT comes back as exact small integers.
From j to ω
The DFT uses j, a square root of −1. Modulo a prime p ≡ 1 (mod 4) there is an integer ω with ω² ≡ −1, so substituting j → −ω in X_k = Σ x_n (−j)^(nk) gives Σ x_n ω^(nk): the 4-point NTT. The decoded a + jb therefore becomes a + ω·b mod p, one multiply and one add on the FPGA.
The four-step split
A 16-point transform is a 4×4 grid: 4-point transforms down the columns, twiddle factors, 4-point transforms along the rows. A 64-point transform is a 4×4×4 cube with one more level. Radix 4 decimation in frequency does exactly this, stage by stage, and the animation’s side panel shows which axis each stage works along.
How it’s modelled
The functional layer is exact integer arithmetic: bit planes, the DFT of each plane, PAM4 with saturation, the 256-entry decode table, shift-and-add, j → ω, and radix 4 decimation-in-frequency and decimation-in-time NTTs built only from that kernel plus twiddles mod p. The simulator’s tests check the optical NTT against an independent reference up to 65,536 points (the ring dimension of the larger recorded bootstrap), and against a noisy analogue core at the default LO power. The timing layer counts symbol slots: a w-bit butterfly costs w slots on one wavelength at 14 GBd paper.
For cost, an FPGA butterfly unit is 3 textbook twiddle multiplies, 1 textbook multiply by ω and 8 textbook modular adds, with a multiply costing r adds (5 adds illustrative, swept from 3 to 10). The hybrid removes the 8 adds but pays for recombination (0.25 adds illustrative per plane and output) and its own post-processing.
What we found
At one wavelength and 14 GBd the module delivers 7.988 × 10⁸ /s full-width 4-point transforms on 17-bit operands: about 1.997 FPGA butterfly units. Even at the fastest swept point, eight times the baud on four wavelengths, it is 63.91. Keeping up with the module’s output also takes 2.924 butterfly units’ worth of FPGA post-processing.
Data table
| width (bits) | 14GBd x1 | 56GBd x1 | 112GBd x1 | 112GBd x4 | FPGA k=1 | FPGA k=16 |
|---|---|---|---|---|---|---|
| 8 | 1.698 × 10⁹ | 6.79 × 10⁹ | 1.358 × 10¹⁰ | 5.432 × 10¹⁰ | 4 × 10⁸ | 6.4 × 10⁹ |
| 16 | 8.488 × 10⁸ | 3.395 × 10⁹ | 6.79 × 10⁹ | 2.716 × 10¹⁰ | 4 × 10⁸ | 6.4 × 10⁹ |
| 17 | 7.988 × 10⁸ | 3.195 × 10⁹ | 6.391 × 10⁹ | 2.556 × 10¹⁰ | 4 × 10⁸ | 6.4 × 10⁹ |
| 24 | 5.658 × 10⁸ | 2.263 × 10⁹ | 4.527 × 10⁹ | 1.811 × 10¹⁰ | 4 × 10⁸ | 6.4 × 10⁹ |
| 32 | 4.244 × 10⁸ | 1.698 × 10⁹ | 3.395 × 10⁹ | 1.358 × 10¹⁰ | 4 × 10⁸ | 6.4 × 10⁹ |
| 40 | 3.395 × 10⁸ | 1.358 × 10⁹ | 2.716 × 10⁹ | 1.086 × 10¹⁰ | 4 × 10⁸ | 6.4 × 10⁹ |
| 48 | 2.829 × 10⁸ | 1.132 × 10⁹ | 2.263 × 10⁹ | 9.053 × 10⁹ | 4 × 10⁸ | 6.4 × 10⁹ |
| 55 | 2.469 × 10⁸ | 9.876 × 10⁸ | 1.975 × 10⁹ | 7.901 × 10⁹ | 4 × 10⁸ | 6.4 × 10⁹ |
The ceiling on the gain is set by what the optics actually removes: the 8 modular adds, not the multiplies. That bounds the equal-area speed-up at 1.667× for cheap multiplies (r = 3) and 1.2× for expensive ones (r = 10). With free recombination the hybrid reaches 1.167× at r = 5 against a bound of 1.4×; at the default recombination cost it is 0.6829×, slower than one butterfly unit. Break-even needs recombination at or below 0.05882 add/plane.
Data table
| r = mul/add cost | Amdahl bound (8 adds removed) | w=17, recombine 0 | w=17, recombine 0.25 | w=32, recombine 0 | w=32, recombine 0.25 |
|---|---|---|---|---|---|
| 3 | 1.667 | 1.25 | 0.6061 | 1.25 | 0.4167 |
| 4 | 1.5 | 1.2 | 0.6486 | 1.2 | 0.4615 |
| 5 | 1.4 | 1.167 | 0.6829 | 1.167 | 0.5 |
| 6 | 1.333 | 1.143 | 0.7111 | 1.143 | 0.5333 |
| 7 | 1.286 | 1.125 | 0.7347 | 1.125 | 0.5625 |
| 8 | 1.25 | 1.111 | 0.7547 | 1.111 | 0.5882 |
| 9 | 1.222 | 1.1 | 0.7719 | 1.1 | 0.6111 |
| 10 | 1.2 | 1.091 | 0.7869 | 1.091 | 0.6316 |
Per transform the hybrid at the paper’s baud spends 35,779 pJ against 56 pJ on the FPGA alone, and 35,509 pJ of that is the module’s static power (9.7 W paper) spread over too little throughput; the link adds 187.7 pJ. Even at the fastest swept point with free recombination it is 615.1 pJ. Latency tells the same story: an NTT of 65,536 points takes 484.2 µs through the module at the paper’s baud, against 328.1 µs on a single FPGA butterfly unit; at the fastest swept point with a large FPGA back end it is 9.798 µs.
Data table
| width (bits) | hybrid 14 GBd, k=1 | hybrid 112 GBd x4, no recombine cost | FPGA only |
|---|---|---|---|
| 8 | 27,870 | 314.9 | 56 |
| 16 | 34,900 | 581.8 | 56 |
| 17 | 35,780 | 615.1 | 56 |
| 24 | 41,930 | 848.7 | 56 |
| 32 | 48,970 | 1,116 | 56 |
| 40 | 56,000 | 1,382 | 56 |
| 48 | 63,030 | 1,649 | 56 |
| 55 | 69,180 | 1,883 | 56 |
For the module to pay off on NTTs, several things must change together: much higher baud × wavelengths, recombination that is nearly free (or done in the optical or analogue domain), and a static power that scales down with use. Chapter 10 explores that space on a real workload.
What would need measured data
The arithmetic is exact and needs no measurement. What needs data is cost: FPGA resource and power for the post-processing (the recombination cost per plane is the critical illustrative number), the module’s power split between laser, drivers, TIAs and heaters, and how the error rate at higher baud and more wavelengths would force retries.