blueboyns wrote:
Just seamed very weird that one core is utterly unused...
As was explained, it is not 'weird' since almost every commercial Win32 program on the market (with some database and CAD exceptions) has only been programmed for single-thread execution. This means that the programmers did not have to contend with race conditions that can occur in a multi-cpu environment. Now that the multi-core CPUs are becoming mainstream, expect to see more applications/games take advantange of this fact...
Think of it this way. You have a single-threaded digestive system. There is only so much food your digestive system can handle at one time. If I hit you with my Virtualizing Magic Wand ® and give you two heads, now what? Now you can put twice as much food into you dual-mouths - however your digestive system is still single-threaded and can only handle the same amount of food as before. The extra mouth does you no good - since I did not give you two seperate digestive systems...
blueboyns wrote:
Even old win98 progs cause both cores to be used simultaneously and evenly and they are single threaded, aren't they?
No, the old Win98 programs do not cause both CPU cores to be used simultaneously, that is just your imagination at work. 😁 The dispatcher in WinXP just might be switching the program from one core to the other - or the other activity just might be all the device drivers, services and other non-foreground processes being run.
blueboyns wrote:
And how the hell it ran smoothly under emulated win98 by VMware and both cores were used?
I think that you should understand the difference between emulation and virtualization. I'll oversimplify... The 'emulation' that is peformed by DosBox means that the Intel instruction set is run on a software duplicate Intel CPU - which means that DosBox can be executed on any other CPU platform which has a C compiler and SDL library (mainly). This emulation will be slower than virtualization. Products such as VMware, VPC and the WinNT family NTVDM perform virtualization - which means that they require the actual CPU to underlay the virtual environment so that instructions can be passed directly to the actual CPU hardware for execution. This is why those Virtualized CPU environments are faster than the DosBox emulation environment. On the downside, this is why these Virtualized CPU environments are sometimes too fast for an older application/game - they cannot be slowed down as can DosBox. The DosBox code has control over the speed of the emulated Intel CPU - you get to adjust it with the 'Cycles' setting (DosBox also emulates the complete PC, not just the Intel CPU - so more work to be done and thereby slower still)
DosBox might be able to take advantage of dual-CPUs in the future if say the Video emulation threads were thrown to the other CPU core - but then you have synchronization issues to deal with in a big way. Just be happy that CPUs are getting faster. In a few years they will be fast enough that DosBox will be able to handle the most resource intensive late era DOS games, even with single threading.
Hope this helps,
dvwjr