Dynamic recompiler

Discussion of development and patch submission.
Orchidsworn
Posts: 65
Joined: Sun 22 Mar, 2015 10:16 pm

Re: Dynamic recompiler

Post by Orchidsworn »

Thank you I just get confused because it sounds like there is hope and than there is not. I did read that post but was thinking even that might be talking future high end hardware. PIII would be more than I need. Just trying to fill gaps with emulation for hardware I no longer have. And save some space. Supply, funds and space are all limited in my life and that is why I so very much appreciate projects like this one.
User avatar
SarahWalker
Site Admin
Posts: 2054
Joined: Thu 24 Apr, 2014 4:18 pm

Re: Dynamic recompiler

Post by SarahWalker »

There is hope for faster emulation, but it's not down the 'just make everything multithreaded' path that people keep suggesting - it's going to require a hell of a lot of work.
A. Naim
Posts: 139
Joined: Thu 09 Jul, 2015 5:06 pm

Re: Dynamic recompiler

Post by A. Naim »

As for AMD core counts, a few recent AMD Ryzen leaks strongly imply that the consumer CPUs may actually have twice as many cores (4 core i3-equivalents, 8-core i5 equivalents, 8-core 16-thread i7-equivalents). So I could be wrong there. But, like any pre-release, pre-actual-product-review pie-in-the-sky information, take with a sizable dose of salt.

Which, if true, may allow more Voodoo threads, but I don't actually know if that's possible, efficient, or anywhere near easy.
User avatar
omarsis81
Posts: 945
Joined: Thu 17 Dec, 2015 6:20 pm

Re: Dynamic recompiler

Post by omarsis81 »

A. Naim wrote:As for AMD core counts, a few recent AMD Ryzen leaks strongly imply that the consumer CPUs may actually have twice as many cores (4 core i3-equivalents, 8-core i5 equivalents, 8-core 16-thread i7-equivalents). So I could be wrong there. But, like any pre-release, pre-actual-product-review pie-in-the-sky information, take with a sizable dose of salt.

Which, if true, may allow more Voodoo threads, but I don't actually know if that's possible, efficient, or anywhere near easy.
That information may be true, however, is probable means nothing for us (PCem users and developers) as Sarah just stated in in the post just above yours that more threads or cores just won't do for PCem as CPU emulation takes 90% of the CPU (host) work and that can't be split in threads.
There may be 16 cores as standard in 5 years, but that won't change how PCem works
A. Naim
Posts: 139
Joined: Thu 09 Jul, 2015 5:06 pm

Re: Dynamic recompiler

Post by A. Naim »

omarsis81 wrote:
A. Naim wrote:As for AMD core counts, a few recent AMD Ryzen leaks strongly imply that the consumer CPUs may actually have twice as many cores (4 core i3-equivalents, 8-core i5 equivalents, 8-core 16-thread i7-equivalents). So I could be wrong there. But, like any pre-release, pre-actual-product-review pie-in-the-sky information, take with a sizable dose of salt.

Which, if true, may allow more Voodoo threads, but I don't actually know if that's possible, efficient, or anywhere near easy.
That information may be true, however, is probable means nothing for us (PCem users and developers) as Sarah just stated in in the post just above yours that more threads or cores just won't do for PCem as CPU emulation takes 90% of the CPU (host) work and that can't be split in threads.
There may be 16 cores as standard in 5 years, but that won't change how PCem works
"Which, if true, may allow more Voodoo threads..."

Before you reply, please read the entire post.

Edit: I apologize for the tone of my post. I have had quite a bit of frustration in the past from people not actually reading what I wrote, and that bled into my reply.
User avatar
omarsis81
Posts: 945
Joined: Thu 17 Dec, 2015 6:20 pm

Re: Dynamic recompiler

Post by omarsis81 »

I read you entire post, maybe I misundertood it.
For what I read from Sarah, CPU emulation takes 90%, so, Voodoo and all other stuff takes the 10% remaining. A voodoo alone percentage is, of course below a 10%, and for what I see, it may not justify another thread for less than 10% usage. Also, Voodoo2 doesn't use more than 2 TMUs. How many Voodoos threads you want?
User avatar
SarahWalker
Site Admin
Posts: 2054
Joined: Thu 24 Apr, 2014 4:18 pm

Re: Dynamic recompiler

Post by SarahWalker »

CPU emulation takes ~90% of the main thread. Voodoo threads will run up to 100% utilisation each. Potentially increasing the number of Voodoo threads would improve peak Voodoo performance, but given that the current CPU emulation can't drive the existing Voodoo emulation at 100% it would be somewhat pointless.
A. Naim
Posts: 139
Joined: Thu 09 Jul, 2015 5:06 pm

Re: Dynamic recompiler

Post by A. Naim »

SarahWalker wrote:CPU emulation takes ~90% of the main thread. Voodoo threads will run up to 100% utilisation each. Potentially increasing the number of Voodoo threads would improve peak Voodoo performance, but given that the current CPU emulation can't drive the existing Voodoo emulation at 100% it would be somewhat pointless.
My apologies; I thought it was only the CPU that couldn't have threads added, with the implication that Voodoo threads could be.
User avatar
SarahWalker
Site Admin
Posts: 2054
Joined: Thu 24 Apr, 2014 4:18 pm

Re: Dynamic recompiler

Post by SarahWalker »

Voodoo threads can be added, it's just that there's currently no point in doing so.
codehacker
Posts: 13
Joined: Wed 17 Aug, 2016 1:30 am

Re: Dynamic recompiler

Post by codehacker »

My english is not very good, perhaps I haven't understood it right,
there is a game, (Star Trek Armada),
which needs a Pentium 200 MHz minimum (this should be able to be emulated with PCem),
and the voodoo from PCem V11 can only reach the resolution 800*600. This is a qarter of what is maximum possible (1600*1200).
I don't know, but if there would be 4 voodoo-threads, wouldn't that be enough?
Is this not a good example?
Or have I understood something completely wrong?
User avatar
omarsis81
Posts: 945
Joined: Thu 17 Dec, 2015 6:20 pm

Re: Dynamic recompiler

Post by omarsis81 »

codehacker wrote:My english is not very good, perhaps I haven't understood it right,
there is a game, (Star Trek Armada),
which needs a Pentium 200 MHz minimum (this should be able to be emulated with PCem),
and the voodoo from PCem V11 can only reach the resolution 800*600. This is a qarter of what is maximum possible (1600*1200).
I don't know, but if there would be 4 voodoo-threads, wouldn't that be enough?
Is this not a good example?
Or have I understood something completely wrong?
Resolution limitation comes from Voodoo and not from the CPU itself. Voodoo1 with 4MB (most standard) could only handle 640x480, those with 8MB or more could achieve 800x600. Same goes with Voodoo2 that can go as high as 1024x768.
1600x1200 is unthinkable by now, and also impractical to run with a Pentium 200. You'd requiere a high end Pentium II or Pentium 3, and of course a Voodoo3
User avatar
omarsis81
Posts: 945
Joined: Thu 17 Dec, 2015 6:20 pm

Re: Dynamic recompiler

Post by omarsis81 »

codehacker wrote:My english is not very good, perhaps I haven't understood it right,
there is a game, (Star Trek Armada),
which needs a Pentium 200 MHz minimum (this should be able to be emulated with PCem),
and the voodoo from PCem V11 can only reach the resolution 800*600. This is a qarter of what is maximum possible (1600*1200).
I don't know, but if there would be 4 voodoo-threads, wouldn't that be enough?
Is this not a good example?
Or have I understood something completely wrong?
Adding multiple threads MAYBE a viable idea when (if) emulating a Voodoo4 or 5, like one thread could handle each VSA-100 chip
Today's Voodoo 1 and 2 are fine with just one thread (if I understood correctly too)
User avatar
SarahWalker
Site Admin
Posts: 2054
Joined: Thu 24 Apr, 2014 4:18 pm

Re: Dynamic recompiler

Post by SarahWalker »

Again, you'd need a major speedup of the emulated CPU to make a Voodoo 4/5 worthwhile.
tk421
Posts: 156
Joined: Sat 18 Jun, 2016 6:57 am

Re: Dynamic recompiler

Post by tk421 »

omarsis81 wrote:
codehacker wrote:My english is not very good, perhaps I haven't understood it right,
there is a game, (Star Trek Armada),
which needs a Pentium 200 MHz minimum (this should be able to be emulated with PCem),
and the voodoo from PCem V11 can only reach the resolution 800*600. This is a qarter of what is maximum possible (1600*1200).
I don't know, but if there would be 4 voodoo-threads, wouldn't that be enough?
Is this not a good example?
Or have I understood something completely wrong?
Resolution limitation comes from Voodoo and not from the CPU itself. Voodoo1 with 4MB (most standard) could only handle 640x480, those with 8MB or more could achieve 800x600. Same goes with Voodoo2 that can go as high as 1024x768.
1600x1200 is unthinkable by now, and also impractical to run with a Pentium 200. You'd requiere a high end Pentium II or Pentium 3, and of course a Voodoo3
Using a Voodoo graphics card (preferably a Voodoo 2) would most likely improve performance on a Pentium 200 MMX, but in my experience a Pentium II would still be needed for normal performance at that time, back in the late 90s and early 2000s. This being said, my old Pentium II 350 Mhz with a venerable Voodoo 3 graphics card (resolution 640x480) still ran that great old game a bit slow with the load times. Once in game, performance was good as long as you did not have too many objects on the screen at one time. The game had bugs back then, with game crashes a common thing. There were the occasional graphical error as well.

Today the best way to run that game would be with a Windows XP or 7 computer. Game crashes were far less frequent. The video card should not be an issue, though NVidia cards seemed to be less compatible than others I have used. Windows 8 and 10 are always a nightmare for these games.

A virtual pc running XP seems to never work right with Armada.

If you are unable to get an XP computer, then dgvoodoo 2 is a good option for getting Armada to work on modern computers. You might even be able to run the game at 1600x1200. I never tried that, but it will work with 1366x768. That is more than you could do with a Pentium I or II. You would need the Armada 1.3 patch installed first, but with a little work you can get the game working fairly well on a modern pc. The in-game menus always switch to windowed mode, but when in-game you will always play in fullscreen mode. Graphical errors when switching from menu to in-game can be solved by clicking on the Objectives button in the menu. Game crashes were not common at all.

I am certainly not trying to discourage use of PCem for Star Trek Armada, if anything I will be trying it myself when I get the chance. I do not like my screen switching from fullscreen to windowed mode any more than anyone else. A 300 Mhz MMX pc with a Voodoo 2 will probably approximate my old pc from decades past. It would be amazing to do that. I am simply giving you some options for a game that is notoriously difficult to run on modern PCs.

I hope you found this post helpful. I really like PCem. It has immense potential given the extreme difficulty of running most games with modern PCs. I look forward to my next chance to use the software, with hopefully a P200 MMX successfully emulated.

tk421
A. Naim
Posts: 139
Joined: Thu 09 Jul, 2015 5:06 pm

Re: Dynamic recompiler

Post by A. Naim »

SarahWalker wrote:Voodoo threads can be added, it's just that there's currently no point in doing so.
That is what I meant, although not what I literally, semantically said. :)
Post Reply