Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions apps/website/src/data/verificationScience.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,25 @@ export type Theorem = {
}

export const THEOREMS: Theorem[] = [
{
id: 'T49',
name: 'An iterative operator loses throughput; unrolling it recovers the throughput without recovering the operator',
nameRu: 'Итеративная операция теряет пропускную способность; развёртка возвращает её, не возвращая саму операцию',
statement:
'Replacing an operator by k repetitions of a depth-1 step raises the clock and divides the throughput by k. Unrolling those repetitions into k pipeline stages restores one result per cycle at k times the area of the step — and, crucially, does NOT restore the operator, because each stage is still the step. The closed form does restore it: for a group generated by one step, the k-fold composition is a multiplication by structure constants.',
statementRu:
'Замена операции на k повторений шага глубины 1 поднимает частоту и делит пропускную способность на k. Развёртка этих повторений в k ступеней конвейера возвращает один результат за такт ценой k площадей шага — и, что существенно, НЕ возвращает саму операцию, поскольку каждая ступень остаётся шагом. Замкнутая форма её возвращает: для группы, порождённой одним шагом, k-кратная композиция есть умножение на структурные константы.',
worked:
'The golden scale phi^k: iterating (a,b) -> (b, a+b) k times costs one adder and k cycles. The closed form phi^k = F(k-1) + F(k)*phi gives a·F(k-1) + b·F(k) and a·F(k) + b·F(k+1) — two multiplications by Fibonacci constants, the operator back. Unrolling the step instead: measured by place-and-route (nextpnr-ice40, hx8k, fan-in 8), the pipelined layer is 660 cells at 204.08 MHz and one element per cycle, against 1098 cells at 69.21 MHz for the multiplier — 1.66x smaller and 2.95x faster, with no multiply anywhere.',
workedRu:
'Золотой масштаб phi^k: итерирование (a,b) -> (b, a+b) k раз стоит одного сумматора и k тактов. Замкнутая форма phi^k = F(k−1) + F(k)·phi даёт a·F(k−1) + b·F(k) и a·F(k) + b·F(k+1) — два умножения на числа Фибоначчи, то есть операция возвращается. Развёртка шага вместо этого: по трассировке (nextpnr-ice40, hx8k, fan-in 8) конвейерный слой занимает 660 ячеек на 204.08 МГц и выдаёт элемент за такт против 1098 ячеек на 69.21 МГц у умножителя — в 1.66 раза меньше и в 2.95 раза быстрее, и ни одного умножения.',
citation: 'Measured here; gHashTag/trinity-fpga #592, correcting #591',
url: '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/gHashTag/trinity-fpga/pull/592',
doesNotClaim:
'The area cost of unrolling is real: 354 cells against 97 for the iterative scale block, 3.6x, so below about k = 4 the iterative form delivers the same rate for less. The measurement is on iCE40, which has no DSP blocks and therefore penalises the multiplier maximally, at fan-in 8 and with no board.',
doesNotClaimRu:
'Плата за развёртку реальна: 354 ячейки против 97 у итеративного блока масштаба, в 3.6 раза, поэтому примерно до k = 4 итеративная форма даёт ту же скорость дешевле. Измерение на iCE40, где блоков DSP нет вовсе и умножитель наказан максимально, при fan-in 8 и без платы.'
},
{
id: 'T48',
name: 'A higher clock is not higher throughput when the cheaper operator needs more cycles',
Expand Down
Loading