Build Your Own Arcade Controls Forum
Main => Software Forum => Topic started by: markronz on June 08, 2009, 07:00:22 pm
-
Does anyone know if there are plans to ever make mame truly multithreaded. It works great as is already, and I am already appreciative for what mame is now, but I was just wondering if anyone knows if that's at all on the horizon for mame? I know there is the multithreading option now, but it doesn't do a ton really, and it's not using both or all processors as well as a true multithreaded app would...
Anyone have any idea? :dunno
-
Multithreading would usefull only if the game emulated is multithreaded too , and if it is managed correctly.
So surely some modern 3d game are, but most of the other are not. So you won't see any difference , except may be a slow down in these cases.
-
Mame is multiple right now. However, you don't see super speed jumps on most games ATM because one or more of the following, depending on the exact game, of course:
- Arcade hardware does not split into threads well (what youki said)
- Arcade hardware could thread, but the driver doesn't do it (rare, most drivers that could be helped with threading have been AFAIK)
- You're not running a 64 bit mame on a 64 bit OS on a 64 bit CPU, so the threading does help much.
- You are running a 64 bit mame on a 64 bit OS on a 64 bit CPU, and the mame driver is 32 bit favored. (not true now on current mame AFAIK, but was true but rare on a few games in older mames)
- PC isn't powerful enough to speed up the bottleneck; IOW, there's one thread that takes 95% of the core, and all the threading of the rest of the stuff would only help 5% at the absolute maximum case. (related to first point)
- Aaron's computer runs the game just fine, so the only person in the world who could figure how to multithread the unmultithreadable doesn't need to (hyperbole, slightly)
-
btw, the reason they haven't multithreaded just everything (and they could, pretty easy) is that they synchronizing the cores would actually slow everything down.
processor emulation is very low level... and timing is critical. Threading works best when you can send a chunk of stuff to do to another core...
But you have to sync the cores to pass data between them... memory ect. And that is down right slow.
-
Alright that answers that question!
Thanks everyone for your responses!
-
This was all discussed at length a year or two ago at MW.