Regarding MTRRs and K6-2CXT and up:
First of all the K6-2 can only set 2 MTRR ranges (PPRO can set
. This shouldn't be a stopper since two is enough for VGA and LFB area.
I checked with MXK6OPT and CTU.
Does NOT allow to give memory addresses and ranges manually. Check for execution in Real Mode and drops to back to command prompt early, whereas it might even work under e.g. QEMM386.
It sets WC for the LFB range only.
Allows to set memory start and range for both MTRRs. I use a Quadro2 + V2 SLI and it defaults to
MTRR0 at DE000000 with a size of 8 MB in WC mode
MTRR1 at DE000000 with a size of 128 kB in UC mode
However looking at the NVidia Detonator graphics driver and it's used resources it shows that beside the usage of the regular VGA window at 000A0000 it uses a
128 MB large area at 18000000 (to 1FFFFFFF)
16 MB at 20000000 (to 20FFFFFF)
48 kB at 000C0000 (to 000CBBFF) -> obviously BIOS area
64 kB at 21000000 (to 2100FFFF)
It turns out that CTU is rather dumb and DE000000 is the address of one of the V2s. (DD000000 is the other) with 16 MB range each in device manager. Benchmarks show a slight DEcrease in fps on the V2 SLI with WC enabled on their ranges.
This means an actual senseful setting for the MTTRs would be
MTRR0 at 18000000 with a size of 128 MB in WC mode
MTRR1 at 000A0000 with a size of 128 kB in WC mode (128 kB is the smallest range)
This gives for the command line tool ctuclwin the following line:
CTUCLWIN /WA 384 1 /L1 1 /L2 1 /DP 1 /MTRR0 18000000 128 MB W /MTRR1 000A0000 128 kB W /M 6.0 /WO 2
with K6-2+ at 600 MHz 6x100 and 384 MB of RAM.
edit: just noticed the the CL utility does not allow to use 128 kB as size, whereas the graphical tool does.
Result is, that also for low Res modes that use the regular 64 kB VGA window write combining is active as well as for the LFB.
so PCPBENCH /VGAMODE goes from 176.7 to 187.0
3DBench 1.0C goes from 476.3 to 713
PCPBENCH 101 in 640x480 goes from 49.3 to 77.3 and
QUAKE in 320x200 from 90.3 to 93.1
So setting MTRRs works for VGA as well as for LFB.