Skip to content

T48: a higher clock is not higher throughput - #838

Merged
gHashTag merged 1 commit into
mainfrom
science/clock-not-throughput
Aug 18, 2026
Merged

gHashTag merged 1 commit into
mainfrom
science/clock-not-throughput

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

From trinity-fpga#591, the first real place-and-route in this work.

T48 — a higher clock is not higher throughput when the cheaper operator needs more cycles. Replacing an operator with an iterative one of depth 1 raises the achievable clock and multiplies the cycle count. Throughput per element is (1+k)/f_iter against 2/f_direct, so the iterative form wins only while 1 + k < 2·f_iter/f_direct.

Measured — nextpnr-ice40, hx8k ct256, fan-in 8:

arm cells Fmax
φ, Fibonacci step 425 144.80 MHz
multiplier 1098 69.21 MHz

Smaller and twice the clock — and the break-even is k = 3.18. The deployed scale is α = mean|W| ≈ 0.02, i.e. log_φ 0.02 = −8.13, so a real layer needs |k| = 8: the multiplier is 2.15× faster per element despite half the clock.

The refusal names the fabric: iCE40 has no DSP blocks at all, so the multiplier arm is maximally penalised here; on a part with DSPs it is smaller in LUTs than the iterative arm. An unrolled or barrel variant would trade the cycles back at more area and is not built.

Ratchet 179/26 against baseline 184/27, no file gained. Audits run locally: RU and EN PASS, 27 routes.

An operator replaced by an iterative one of depth 1 raises the clock and
multiplies the cycle count. Break-even is 1 + k < 2 * f_iter / f_direct.

Measured by real place-and-route (nextpnr-ice40, hx8k, fan-in 8): the
Fibonacci-step scale reaches 144.80 MHz in 425 cells against 69.21 MHz
in 1098 for the multiplier -- smaller AND twice the clock. Break-even is
k = 3.18, and the deployed scale needs |k| = 8, so the multiplier is
2.15x faster per element.

The refusal names the fabric: iCE40 has no DSP blocks, so the multiplier
arm is maximally penalised; on a part with DSPs it is smaller in LUTs.

Audits run locally: RU and EN PASS, 27 routes.
@gHashTag
gHashTag merged commit 8972ae7 into main Aug 18, 2026
13 of 16 checks passed
@gHashTag
gHashTag deleted the science/clock-not-throughput branch August 18, 2026 08:54
github-actions Bot added a commit that referenced this pull request Aug 18, 2026
T48: a higher clock is not higher throughput (#838)

An operator replaced by an iterative one of depth 1 raises the clock and
multiplies the cycle count. Break-even is 1 + k < 2 * f_iter / f_direct.

Measured by real place-and-route (nextpnr-ice40, hx8k, fan-in 8): the
Fibonacci-step scale reaches 144.80 MHz in 425 cells against 69.21 MHz
in 1098 for the multiplier -- smaller AND twice the clock. Break-even is
k = 3.18, and the deployed scale needs |k| = 8, so the multiplier is
2.15x faster per element.

The refusal names the fabric: iCE40 has no DSP blocks, so the multiplier
arm is maximally penalised; on a part with DSPs it is smaller in LUTs.

Audits run locally: RU and EN PASS, 27 routes.
Sign up for free to 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