I just found this doc that has Dhrystone results for several CPUs, including a Z80 (at 2.5MHz) and an intel 286:
Table (with just the relevant rows of Z80 or intel CPUs):
*----------------DHRYSTONE VERSION 1.1 RESULTS BEGIN-------------------------- * * MACHINE MICROPROCESSOR OPERATING COMPILER DHRYSTONES/SEC. * TYPE SYSTEM NO REG REGS * -------------------------- ------------ ----------- --------------- * - Z80-2.5Mhz CPM-80 v2.2 Aztec CII v1.05g 91 91 * - 8086-8Mhz RMX86 V6 Intel C-86 V2.0 197 203LM?? * IBM PC/XT 8088-4.77Mhz COHERENT 2.3.43 Mark Wiiliams 259 275 * - 8086-8Mhz RMX86 V6 Intel C-86 V2.0 287 304 ?? * IBM PC/AT 80286-7.5Mhz Venix/286 SVR2 cc 1159 1254 *15 * Compaq II 80286-8Mhz MSDOS 3.1 MS C 3.0 1190 1282 MM * Compaq II 80286-8Mhz MSDOS 3.1 MS C 3.0 1351 1428
Very interesting results.
Comparing a Z80 with current processors is very difficult because there is such a big gap between them that it is difficult to find a suitable scale for comparison. It's like if someone asks you the size of the moon compared to the sun.
Even in the days of the PC 286 there was already a significant gap between the performance of the Z80 and PCs.
It is more than that. In emulation a CPU that does operations serially has to reproduce the behavior of a large number (thousands, millions, billions...) of elements that operate in parallel and create the illusion that the results happen in the same way in the original.
I really think you are looking at this in a way that makes it look more complicated than it actually is. The reference here are humans that look at the output and can process barely 50fps of video and 44Khz of audio bandwidth.
The intention is not to simulate a physical system, just to make it feel like the real stuff.
For all intents, openMSX is nowadays a perfect emulator.
In openMSX we try to recreate the same observable behavior between the real and the emulated machine.
Specifically for the emulated Z80 we define "observable behavior" as "the emulated Z80 performs the same I/O as the real Z80" (same values, same addresses, same timing). But how that is achieved doesn't matter at all. A small example: we intentionally emulate the 'R' register in a different way than how the real Z80 silicon handles it. Nevertheless "observing" the R register will always result in the same value. And we certainly don't need to solve differential equations for any transistors: all those things are not observable. At least for how we define "observable" in openMSX.
The only way to find out how emulation compares to the real thing is by taking large groups of people including msx and non msx people and do proper blind ABX testing. The results would be very interesting.
What about input lag? Does openMSX know at exactly what time in the emulated MSX a key is being pressed? When openMSX renders a frame, how much time does it take for it to be actually displayed?
This may change a lot depending on the mouse/keyboard/joystick you have. USB normally pools peripherals at frequencies that are defined by the peripheral itself. Gaming oriented peripherals tend to have faster pooling. Most non gaming hardware is in the 100Hz range. So 10ms extra is almost a given. The OS does not need to comply with the frequency requested by the peripheral though.
What about input lag? Does openMSX know at exactly what time in the emulated MSX a key is being pressed?
What happens is that when a host event comes in, it is inserted directly into the 'now' of the emulated MSX... But there may be lag if the host event gets 'in' with a delay. openMSX can't control that. There are input lag tricks though, like mentioned here: https://github.com/openMSX/openMSX/issues/1270
When openMSX renders a frame, how much time does it take for it to be actually displayed?
That part goes quick enough to have no measurable delays, I suppose (as this is a very easy task for the host - the task to actually render the frame and scale it might be much bigger!)... But I don't know about any measurements done for that.
I just found this doc that has Dhrystone results for several CPUs, including a Z80 (at 2.5MHz) and an intel 286:
Table (with just the relevant rows of Z80 or intel CPUs):
*----------------DHRYSTONE VERSION 1.1 RESULTS BEGIN-------------------------- * * MACHINE MICROPROCESSOR OPERATING COMPILER DHRYSTONES/SEC. * TYPE SYSTEM NO REG REGS * -------------------------- ------------ ----------- --------------- * - Z80-2.5Mhz CPM-80 v2.2 Aztec CII v1.05g 91 91 * - 8086-8Mhz RMX86 V6 Intel C-86 V2.0 197 203LM?? * IBM PC/XT 8088-4.77Mhz COHERENT 2.3.43 Mark Wiiliams 259 275 * - 8086-8Mhz RMX86 V6 Intel C-86 V2.0 287 304 ?? * IBM PC/AT 80286-7.5Mhz Venix/286 SVR2 cc 1159 1254 *15 * Compaq II 80286-8Mhz MSDOS 3.1 MS C 3.0 1190 1282 MM * Compaq II 80286-8Mhz MSDOS 3.1 MS C 3.0 1351 1428
Great Santi -- Thanks. I can defintely use this.
And I now see I forgot to copy the link to the doc!: http://ibm-1401.info/Dhrystone.html
Interesting question... I would put it like this:
When you connect power to modern computer it loads a multitasking operating system with network drivers, many kind of daemons etc. and this needs many many times more CPU power and memory than MSX has... Anyway please note that now I'm only talking about what happens before you actually push the power button... If you push that, power is enabled to memory etc. components and first CPU core is booted up. At this point we already have such a different setup that comparing it to MSX makes no sense anymore what so ever.
Maybe better approach would be talking about transistor count... Modern processors have about 500 000 times more transistors than Z80 has.