With correctness helped greatly by that, development is now focused mainly on performance. In Doom, z386 is currently about 30% faster than ao486 on the same MiSTer setup, with benchmark performance roughly comparable to a 486DX2-66.
279 karma · joined September 13, 2025
With correctness helped greatly by that, development is now focused mainly on performance. In Doom, z386 is currently about 30% faster than ao486 on the same MiSTer setup, with benchmark performance roughly comparable to a 486DX2-66.
First, FPUs are complex and FPGA support for floating point is limited. There's DSP blocks for integer additions and multiplications. But very little FP support.
Second, the CPU itself may not be fast enough for an FPU to matter much. Quake wants at least a 75 MHz Pentium, while ao486-MiSTer is closer to a 486-66. So we probably need both a faster CPU design and a faster FPGA. Maybe Altera's new Agilex 5 will be useful here.
The decode vs. execution behavior is more interesting. From both Intel docs and my own core, PE is effectively checked in both stages independently, but decode happens ahead of execution (prefetch queue). So if an instruction is decoded in real mode, it’ll still follow the real-mode path even if PE is set before it executes.
That’s exactly why Intel requires a jump right after setting PE — it flushes the prefetch queue and forces re-decode in protected mode. As the 80386 System Software Writer’s Guide (Ch. 6.1) puts it: "Instructions in the queue were fetched and decoded while the processor was in real mode; executing them after switching to protected mode can be erroneous."