sd:emulation_benchmarks
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| sd:emulation_benchmarks [2026/05/15 23:56] – appledog | sd:emulation_benchmarks [2026/05/16 00:24] (current) – appledog | ||
|---|---|---|---|
| Line 46: | Line 46: | ||
| These Pentium-specific traits were exploited via Abrash' | These Pentium-specific traits were exploited via Abrash' | ||
| - | |||
| - | //Lesson learned, the biggest improvement besides raw MIPS is a good PPU/GPU.// | ||
| == Profiling Experiments | == Profiling Experiments | ||
| - | Here are the results of tight-loop experiments featuring benchmarks of one instruction. They are intended as relative results only. Taken on an i7-12700k. | + | Taken on an i7-12700k, a basic loop example executes at 55 MIPS in the WASM version and at 550 MIPS in the C version. However, there' |
| - | + | ||
| - | The basic " | + | |
| === MIPS isn't useful | === MIPS isn't useful | ||
| - | The following program illustrates | + | The following program illustrates |
| <codify armasm> | <codify armasm> | ||
| Line 70: | Line 66: | ||
| * WASM version 55 MIPS. | * WASM version 55 MIPS. | ||
| - | * C version was 560 MIPS. | + | * C version was 550 MIPS. |
| - | But here' | + | The issue occurs when we try to replace |
| - | And, with the PPU enabled, even the WASM version can handle over 2,000 sprites per frame at 60fps, utterly destroying even the SNK Neo Geo (1990) in terms of arcade performance. MIPS is good, yes -- the C version is utterly incredible at ~700 MIPS. But you couldn't even do 100 software sprites at 700. You still need a PPU. | + | Another example, I had benchmarked kernal 0.7.2 at 750 MIPS, then I switched kernals to from 0.7.2 to 0.8.3. This had the effect |
| - | + | ||
| - | //Lesson learned, the biggest improvement besides raw MIPS is a good PPU/GPU.// | + | |
| === Conclusion: CISC vs RISC | === Conclusion: CISC vs RISC | ||
| - | This shows that time spent on the hot path is slow, while time spent in the hot path is fast. That is, just like the WASM version, the C version does best with CISC instructions. MIPS itself, is not as important as it seems. What matters is the quality of the instruction set. | + | Time spent on the hot path is slow, while time spent in the hot path is fast. That is, just like the WASM version, the C version does best with CISC instructions. MIPS itself, is not as important as it seems. What matters |
| - | + | ||
| - | //Using a RISC-like ISA is only a requirement if you are emulating a particular architecture. It is not a good idea for a fantasy computer in general. A fantasy computer does better with CISC instructions.// | + | |
| - | + | ||
| - | A final example; I had benchmarked kernal 0.7.2 at 750 MIPS, then I switched kernals to from 0.7.2 to 0.8.3. This had the effect of putting CASETAB into the hot path. This meant that instead of performing hundreds of JZ and CMP instructions per system loop, we performed one CASETAB. MIPS dropped to 550. But I assure you, the system is running much faster. You see, the runtime itself is lower; 10 seconds at 750 MIPS is slower than 5 seconds at 550 mips. That's the real takeaway; despite having a lower number of MIPS, the system runs measurably faster with the new CISC instructions. | + | |
sd/emulation_benchmarks.1778889416.txt.gz · Last modified: by appledog
