Skip to content

docs: U64E ECDSA sweep — device delta vs C64U is REU DMA only - #63

Merged
JC-000 merged 1 commit into
masterfrom
bench/u64e-ecdsa-sweep
Jul 26, 2026
Merged

docs: U64E ECDSA sweep — device delta vs C64U is REU DMA only#63
JC-000 merged 1 commit into
masterfrom
bench/u64e-ecdsa-sweep

Conversation

@JC-000

Copy link
Copy Markdown
Owner

Summary

Closes the owed U64E lane of the 2026-07-20 turbo-profile benchmark campaign. Ran the identical sweep protocol (tools/uci/bench_ecdsa_u64e.py, RFC 6979 vector file, n=2 medians) on the U64E at 16/32/48 MHz (the U64E has no 64 MHz enum) for all three nistcurves-v0.6.0 profiles at HEAD. 72/72 runs correctness-PASS. Documentation-only change: adds the U64E table + analysis to the "ECDSA P-256 verify wall-clock" section of CLAUDE.md.

Results (RFC 6979 medians, fits T(f)=D+C/f)

config16 MHz32 MHz48 MHzD (floor)C
v0.6.0 REU81.6 s65.2 s59.2 s48.2 s535 MHz·s
v0.6.0 onchip87.6 s44.9 s30.5 s2.0 s1370 MHz·s
v0.6.0 onchip+comb49.1 s24.6 s18.4 s2.2 s747 MHz·s

Device delta vs C64U at the same clocks

  • REU profile: U64E +10–13% slower at every clock (floor 48.2 s vs 41.8 s) — consistent with the previously observed 82.1 vs 73.0 s e2e handshake split at 48 MHz.
  • onchip profile: parity (−1.3% to +3.6%, within n=2 noise) at all three clocks.
  • Conclusion: the U64E/C64U performance difference is entirely REU/expansion-bus DMA in the FPGA core; the CPU-bound path is device-independent.
  • Comb is at parity at 16/32 MHz but +12% at 48 MHz (18.4 vs 16.5 s) — plausibly its Lim-Lee table fetches from REU bank 2 (DMA share grows with clock), flagged in the doc for an n>2 re-measure before leaning on it.
  • U64E crossovers vs the REU profile shift down (higher REU floor): onchip ~18 MHz, comb ~5 MHz (C64U: ~22 / ~7).

Test plan

  • 3 profiles × 3 clocks × 8 runs on real U64E hardware (10.53.21.158's sibling at 10.43.23.81), DeviceLock-queued, boot-at-speed
  • All 72 runs returned the expected verify result (positive + tampered vectors)
  • Fit residuals ≤0.4% (REU/onchip), ≤3.8% (comb)

🤖 Generated with Claude Code

Close the owed U64E lane of the 2026-07-20 turbo-profile campaign.
Same protocol (bench_ecdsa_u64e.py, RFC 6979 vectors, n=2 medians),
16/32/48 MHz (no 64 MHz enum on the U64E), all three v0.6.0 profiles,
72/72 correctness-PASS:
config 16MHz 32MHz 48MHz D(floor) C
v0.6.0 REU 81.6 65.2 59.2 48.2 s 535 MHz*s
v0.6.0 onchip 87.6 44.9 30.5 2.0 s 1370 MHz*s
v0.6.0 onchip+comb 49.1 24.6 18.4 2.2 s 747 MHz*s
Same-clock delta vs the C64U: REU profile +10-13% slower (floor 48.2
vs 41.8 s); onchip at parity (within n=2 noise) at every clock. The
U64E/C64U difference is therefore localized to REU/expansion-bus DMA
in the FPGA core — the CPU path is device-independent. Comb parity at
16/32 but +12% at 48 MHz (flagged for re-measure; plausibly its REU
bank-2 table fetches). U64E crossovers vs REU: onchip ~18 MHz, comb
~5 MHz.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@JC-000
JC-000 merged commit 6373036 into masterJul 26, 2026
@JC-000
JC-000 deleted the bench/u64e-ecdsa-sweep branch July 26, 2026 15:01
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@JC-000