auron wrote on 2024-06-23, 09:23:
mkarcher wrote on 2024-06-22, 20:30:
So it seems that a x222 burst is OK at FSB66 for EDO memory. I don't expect that to work for 70ns FPM, though.
actually it looks like it's fine because x222 with FPM detected is not a valid setting and becomes x333 instead - at least, that's how i'm reading the datasheet. x333 would be treated as x444
That's also how I understand the datasheet, and I am confident we are understanding the data sheet correctly. It would be interesting to know how long /CAS is low and how lang /CAS is high in FPM x333 mode (i.e. register setting "10"), looking at the Samsung KM416C1000B-7 datasheet (again a random 70ns found using Google), I find a page mode cycle time of 45ns, which again perfectly matches the period of 3 FSB clocks, I find a /CAS pulse width of 20ns minimum, but as the access time from /CAS is 20ns as well, if you actually want to read something, you need extra /CAS active time. The /CAS precharge time is just 10ns, so the most convenient timing for reading that chip is to have /CAS low for 2 FSB clocks (30ns), with data being available after 20ns, and /CAS high for 1 FSB clock. Using 1.5 FSB clocks for /CAS low and /CAS high would also just work, but the data valid window would be unconviniently narrow.
auron wrote on 2024-06-23, 09:23:
i did quickly test this with some 70ns FPM (only 16 meg sticks, though), and as expected, despite same settings the 60ns EDO is a hair faster in pcpbench - 17.8 vs. 17.6 (640x400) and 38 vs. 37.5 (320x200), pentium 133. the BIOS doesn't expose any changes with the FPM installed, still presenting "read burst timing x2222" by default, but this suggests it's actually using the slower timing with FPM, unless EDO features also used transparently in some other way.
That interpretation is likely correct, as the only advantage of FPM compared to EDO is the faster possible read burst. You can't know what the BIOS does without reverse engineering it (either by disassembling relevant parts, but much easier by looking at chipset configuration register values when booted). The BIOS core as shipped by the BIOS manufacturers (like AMI, Award or Phoenix) supports a fixed mapping from setup display texts to register values without any code, just by an entry in a setup option table (and that's what you can modify using MODBIN), but the BIOS supports options that are interpreted using code as well. As the 430FX uses the same timing code on every bank, and IIRC the 430FX supports mixed FPM/EDO configurations, I don't think it would make sense to remap x222/x333 to different interpretations depending on the kind of installed RAM. On the other hand, it would make sense to call the option "DRAM burst (EDO/FPM)" and call that setting "x222/x333".
I already have seen BIOS code that dynamically patches the setup table in the BIOS shadow copy depending on run-time detected circumstances (like the type of super I/O chip or the revision of the chipset), but as explained, this approach wouldn't make much sense for the 430FX burst speed, just as setting the burst speed programmatically different depending on installed RAM type doesn't make much sense.