@@ -90,41 +90,27 @@ The core-domain point slots come first (a per-entry type word says which domain
9090
9191## Where the boost settles
9292
93- A flatten pins the boost by curve shape alone, so the plan is built on how the boost algorithm
94- picks its operating point. NVIDIA doesn't document this; the following is measured on an RTX 5090
95- under a sustained FurMark load, comparing written curve shapes against ` watch ` and ` curve `
96- read-backs:
97-
98- - ** The settle voltage is one 5 mV step below the flat top's first anchor.** A flat from 910 mV
99- runs the card at 905 mV; a flat from 900 mV runs it at 895 mV. It never runs on the flat itself.
100- - ** The driver's curve is finer than the anchor table.** Table anchors sit 5 or 10 mV apart
101- (Blackwell cycles 5-5-5-10, with the 10 mV gap right after every multiple of 25 mV), but the
102- settle voltage exists at 5 mV granularity regardless: a flat from 910 mV settles at 905 mV,
103- where no anchor exists — the clock there interpolates between the 900 and 910 anchors.
104- - ** The realized clock tracks the middle of the cap→flat segment, within one bin.** Clocks
105- quantize to ~ 7.5 MHz bins on Blackwell (~ 15 MHz read-back steps on older generations). Measured
106- at a 900 mV cap: a segment written 2880→2903 settles at 2887–2895; written 2872→2888 it settles
107- at 2880; written 2880→2896 it settles at 2887. "Mid-segment" and "one bin below the flat" fit
108- every measurement equally — indistinguishable at bin granularity.
109- - ** The driver re-shapes written anchors by a bin or two.** A pair written 2872/2888 reads back
110- 2880/2887 from the status curve, and neighbouring anchors of the same write shift by anything
111- from 0 to +15 MHz. Aiming the shape finer than a bin is therefore meaningless.
112- - ** A cap→flat rise below ~ 2 bins folds.** Written 8 MHz apart, the driver snaps the pair into one
113- plateau: the flat's first anchor becomes the cap anchor itself and the settle drops 5 mV lower,
114- landing a stock-slope step below the request. Written 16 MHz apart, the pair stays distinct. On
115- generations whose clocks step ~ 15 MHz, 16 MHz is a single bin and folding is plausible but
116- unmeasured; a fold degrades to the settle-a-step-lower shape (less clock at less voltage — the
117- safe direction), and the post-apply report flags a cap→flat rise that reads back collapsed.
118-
119- ` GpuTuning.BuildCurvePlan ` encodes the consequences: the cap→flat segment is a straight line
120- through (settle voltage, requested clock) with a fixed 16 MHz rise — the smallest the driver
121- reliably keeps, which also bounds the realized-clock miss at half the rise, inside the bin noise.
122- Where the gap above the cap anchor is 5 mV, the settle point * is* the cap anchor and holds the
123- request outright; where it is 10 mV, the segment straddles the request 8 MHz each side and the
124- card operates 5 mV above the named cap (` --mv 900 ` runs at 905 mV). The alternative — starting the
125- plateau at the cap anchor so the card stays at or under the named voltage — realizes a clock a
126- stock-slope step below the request; running one step higher in voltage at the requested clock is
127- the safe side of that trade.
93+ A flatten pins the boost by curve shape alone, so the plan rests on where the boost algorithm
94+ settles. NVIDIA doesn't document this; measured on an RTX 5090 under sustained load:
95+
96+ - ** One 5 mV step below the flat top's first anchor** — never on the flat itself. A flat from
97+ 910 mV runs the card at 905 mV even where no 905 mV anchor exists (Blackwell anchors cycle
98+ 5-5-5-10 mV): the driver's curve is finer than the table, interpolating inside the gap.
99+ - ** The realized clock tracks the middle of the cap→flat segment, within one ~ 7.5 MHz bin**
100+ (read-backs step ~ 15 MHz on older generations). At a 900 mV cap: written 2880→2903 settles at
101+ 2887–2895; written 2872→2888 at 2880 exactly.
102+ - ** The driver re-shapes written anchors by a bin or two** (2872/2888 read back 2880/2887), so
103+ aiming finer than a bin is meaningless.
104+ - ** A rise below ~ 2 bins folds** : written 8 MHz apart, the pair snaps into one plateau and the
105+ settle drops 5 mV lower; 16 MHz holds. On generations with ~ 15 MHz bins, 16 MHz is one bin and
106+ may fold — degrading to less clock at less voltage (the safe direction), which the post-apply
107+ report flags when the rise reads back collapsed.
108+
109+ ` GpuTuning.BuildCurvePlan ` therefore writes the cap→flat segment as a straight line through
110+ (settle voltage, requested clock) with a fixed 16 MHz rise: the smallest the driver keeps, and a
111+ bound on the realized miss at half of it. On a 10 mV gap this operates the card 5 mV above the
112+ named cap (` --mv 900 ` runs at 905 mV); keeping the voltage at or under the cap would cost a
113+ stock-slope step of clock, the worse side of the trade.
128114
129115## Generations
130116
0 commit comments