Yuzu, the Nintendo Switch Emulator, Can Now Take Advantage of Multicore CPUs
The team beyond Yuzu, the Nintendo Switch emulator for PC, continues to push outstanding updates at a brisk pace. Less than a month ago, the emulator had its virtual memory manager system rewritten in order to essentially cut RAM usage in half.
Now, the Yuzu team announced what they're calling the biggest project that was ever undertaken for this emulator: support for multicore CPUs. Needless to say, it is a major feature as described below by the coders.
Prometheus is the internal codename for this feature’s development and it is a total rework of three things:
- Kernel scheduling
- Boot management
- CPU management
Prometheus aims to ensure that emulation behaves the same as on the Switch while matching the code with the Switch’s original OS code. And, as a by-product, host multicore support using host timing has been added to yuzu. Host timing is just yuzu using the host’s (user’s) internal clock for timing.
The multicore feature of Prometheus is a beast in terms of thread handling. Originally yuzu used at best 2 threads: one for the CPU and one for the emulated GPU. Technically we also use a thread each for the UI, logging, the host GPU driver, and the host audio driver, but let’s ignore them for the time being.
With multicore, there are now 6 threads in use: four for the CPU, one for the timer, and one for the emulated GPU. It is worth noting that CPU core 4 is rarely used. Of these 6, effectively 5 threads have considerable use but not all will be running constantly.
That's not to say it is the panacea of all performance evils. Some games like Super Mario Odyssey are programmed to barely take advantage of more than a single core, while others like Fire Emblem: Three Houses and Astral Chain receive substantial boosts, as showcased in the video test posted on YouTube by BSoD Gaming. Still, this is a staple feature going forward that's only going to get better over time as new optimizations are discovered.
The developers of Yuzu also warned users of two current issues. The first one is that this initial multicore release might use a lot of additional RAM, ranging from 100 MB to 3 GB depending on the game; a fix is in the works. Audio can also be slower in some instances when using multicore. To mitigate the issue, you should enable the 'audio stretching' setting.
Lastly, as pointed out by BSoD Gaming, when using multicore in yuzu you won't be able to uncap the frame rate by default. In order to do so, download the game-specific mods linked in the YouTube video description.