Expand description
The uBFT modes’ shared parts: the replica the services sit beside, the baseline they replace, and what a consensus slot spends on crypto.
uBFT (YiJiang0908/ubft_new) is an HLS kernel on the U280. On its slow
path every replica signs a certificate share for the slot and checks
peers’ shares until it holds a quorum of 2f + 1: its own plus 2f
peers’. uBFT tolerates f = (n − 1) / 2 faults among n replicas
(ubft.cpp: shared.f = (node_num - 1) / 2), not the usual
(n − 1) / 3, so its quorum is nearly every replica. Today it calls the Vitis Security
library’s Ed25519 inline, so each signature stalls the state machine.
The services of this repository (rhdl_ed25519_scalable_core::ubft,
DSig’s ubft module) sit beside it on AXI streams instead.
In a uBFT mode the planner plans only uBFT modules (Mode::admits):
the UbftReplica historical allowance comes off the budget, and the
services divide the rest. The headline uses serial_slot_crypto_us:
one signature followed by 2f sequential peer verifications. The
overlapping model in slot_crypto_us is a separate scenario, not
the implemented controller schedule.
Structs§
- Ubft
Replica - The uBFT replica the services sit beside: a fixed allowance off the
budget, sized by
UBFT_DESIGN_LUTandUBFT_DESIGN_DSP(an upper bound: the shell is included). Plans as itself, with no rate.
Enums§
- Baseline
- What the baseline achieved in a comparison.
Constants§
- UBFT_
BASELINE_ MHZ - Compiler-selected kernel frequency after timing failure (down from 300 MHz), not runtime clock readback. Time conversions using it are projections.
- UBFT_
BASELINE_ SIGN_ CYCLES - The baseline: Vitis Security L1 Ed25519 signing inside uBFT, cycles of its own wrapper in HLS 2023.2 C/RTL cosimulation (key cached).
- UBFT_
BASELINE_ SIGN_ LUT - HLS’s LUT estimate of the baseline signer.
- UBFT_
BASELINE_ VERIFY_ CYCLES - The baseline’s verification, cycles (same cosimulation).
- UBFT_
BASELINE_ VERIFY_ LUT - HLS’s LUT estimate of the baseline verifier.
- UBFT_
DESIGN_ DSP - DSPs of uBFT’s whole routed design.
- UBFT_
DESIGN_ LUT - uBFT’s whole routed design, platform shell included: “LUT as logic” from its link report. An upper bound for the replica alone (its artifacts carry no per-kernel utilization).
- UBFT_
REPLICAS - Replica counts the headline reports: uBFT’s natural sizes
2f + 1forf= 1, 3, 5 (it supports up to 12 replicas). - UBFT_
TARGET_ SPEEDUP - The user’s target: rhdl_ubft completes correct operations at least this many times faster on the card than the baseline.
Functions§
- baseline_
slot_ us - The baseline’s crypto time per slot in µs: one inline signature, then
2fverifications one after another, at uBFT’s clock. - quorum_
verifies - Peers’ shares a replica of
nmust verify for a quorum:2fwith uBFT’sf = (n − 1) / 2(ubft_machines.cppwaits for2f + 1shares, its own included). - serial_
slot_ crypto_ us - Current replica’s serial request model: it waits for a peer verdict before issuing the next verification. Extra service capacity is not automatically exploitable by that controller. Network, fetch and framing costs are omitted.
- slot_
crypto_ us - Crypto time of one slow-path slot on a chip that delivers
d, in µs: sign the share, then verify2fpeers’ shares. Verifications overlap in the verifier: the first takes its idle latency, the rest follow at the verify side’s rate. A model: it ignores network time and assumes the peers’ shares arrive together. - speedup
- The speedup of
ours_usper completed operation overbaseline, and whether it meetsUBFT_TARGET_SPEEDUP.Nonewhen there is no meaningful ratio (the baseline stalls, or ours did not complete).