PCEm v17 Mostly Relies On Single Core CPU Performance For Consistent Speed Not Much On GPU Or Cores
Lactobacillus Prime
#PCEM #Performance #Demonstration
Time stamps
00:00:00 Intro & scroller with description and premise
00:02:54 Both PCEm Instances sitting next to one another
00:03:01 3DMark 2001 will be run on both instances simultaneously at 800×600 resolution
00:12:14 3DMark 2001 3D Marks for both Windows98 and Windows XP
00:12:25 Run Demo at 800×600 on both instances simultaneously
PCEm v17 – a great retro PC emulator I got quite a few comments and messages asking why this emulator can’t run any faster. Why it is so limited? Will it run better on a R9 5900X than a R7 3700X or an i7 4790?
Well this emulator is FAR from limited, it is very advanced and the way it is developed very compatible and has excellent timings etc. It’s not geared towards emulating a Pentium IV, Core2Duo or something like that its lies in emulating older systems PC/XT and up with the possibility to define specific models emulating specific systems and brands and have a near
perfect emulated experience.
For gaming 286-386-486-Pentium being the sweet spot for (late) MS-DOS gaming, Windows98 gaming and the advent of 3D accelerators.
So Questions asked:
Will this emulator run faster on a newer CPU with more cores? Will it run faster if you overclock your system? Those kinds of questions were asked.
Answers given:
Instructions Per Clock Cycle Single Core:
With this emulator the number of instructions per clockcycle (Mhz/Ghz) matter the most in attaining speedy emulation. The amount of cores you have doesn’t make the emulator much faster – although you can use up to 4 threads for the Voodoo emulation which makes the Voodoo emulation more responsive and faster.
Highest specced system with Windows98 and XP (with 98 there’s more headroom to up the specs possibly) I was able to get going that runs pretty much 100% all the time is: PentiumII/233Mhz and a Voodoo3 GPU. The emulator will dip below 100% if I define anything faster/newer on my Ryzen7 3700X (8 core, 16 threads), GTX1060Ti, 16Gb DDR4.
To demonstrate that the emulator doesn’t utilize all the cores in my CPU and that you can’t expect a higher emulation speed with a CPU that has more cores I will run TWO instances of PCEm simultaneously that will both run at 100% (mostly) with identical configurations – the XP machine has twice the amount of RAM configured. And doing so the PC still doesn’t break out a sweat.
Multithreaded, non-multithreaded:
A lot of apps are multithreaded these days, but when writing an emulator that’s not always an easy thing to do. On the one hand you want to get a handle on being cycle exact where the emulated machine changes all that needs to change with all the right timings etc. This is often done in one main big program loop with subroutines / functions called emulating the various hardware parts. All is pretty much done sequentially and when the cycle is complete the main loop gets executed again. Writing an emulator like this might not be an issue if the cycle can be made as fast of faster than the real hardware would. Otherwise the emulator would run too slow. If you want to write a multithreaded emulator you have to schedule, verify and communicate and make sure everything remains synched up. A lot harder to do but also quite interesting.
A real system/circuit has all the bits and pieces constantly changing all at once per cycle and a multi threaded emulator can sort of mimic that a little but often large bits still need to be lumped together – functionally – not really resembling the hardware. If you want perfect emulation / close to perfect simultaneous and instantaneously altering states of the entire machine/circuit you need to use an FPGA and define a system in that gate array. With an FPGA the number of logic gates and the speed at which the FPGA can change states are the limiting factors. The size needs to be big enough to house all the logic contained within a machine. The speed needs to be high enough so that the circuit oscillates and functions at the speed it originally did – or if the FPGA is slower / smaller: hack and combine things.
Please correct me where I am wrong. The only thing emulation coding I ever attempted was a 6510 CPU emulator in Turbo Pascal back in the 90s with the desire to turn it into a C64 emulator. So what do I know? 😛
Enjoy the video and thanks for watching – LactobacillusPrime
Music track licensed from Epidemic Sound: I Don’t Mind – Particle House
My Twitter:
Tweets by LactobacillusP
My Facebook:
https://www.facebook.com/LactobacillusPrimeRetroGaming
My Instagram:
https://www.instagram.com/lactobacillus_prime
NOTICE:
“Copyright Disclaimer Under Section 107 of the Copyright Act 1976, allowance is made for “fair use” for purposes such as criticism, comment, news reporting, teaching, scholarship, and research. Fair use is a use permitted by copyright statute that might otherwise be infringing. Non-profit, educational or personal use tips the balance in favor of fair use.”