Jump to content
IGNORED

Mame and Dual processor MB


Mock

Recommended Posts

I am thinking about building a MAME box using a dual 933 P3 motherboard...anyone ever tried this? would it be best to go with Linux as the OS or what?

 

I've heard rumors about how windows OS apply the processing power and it not being very efficient.

 

anyone have any ideas?

Link to comment
Share on other sites

Mame dosn't support multiple threads, so multi processors wont do anything for ya. :/

 

Not quite true. While Mame is single-threaded, any application that runs on a dual CPU system should run smoother due to the OS being able to spread out tasks over both CPUs. So Mame would run better on two 933MHz CPUs instead of one, if for no other reason than it would get the full use of one CPU.

 

Of course, it will still work better if you used one 1866MHz processor. One CPU at double speed is (almost always) faster than two at half speed.

 

Steve

Link to comment
Share on other sites

I just did some lookin around and it looks like the Linux version of AdvanceMame does use the second processor, to copy graphics to the screen. It says its not much of an improvment, but an improvment none the less.

 

http://advancemame.sourceforge.net/readme.html

Support of Symmetric Multi-Processing (SMP) with a multiple threads architecture (only for Linux).
Link to comment
Share on other sites

I'm running an SMP system and haven't seen any meaningful benefit in MAME or advancemame. There is an smp option in advancemame but like AtariYoungin said, it doesn't seem to help very much.

 

There is a theoretical benefit that an SMP system can run an intense app on one CPU without being interrupted by the other threads in the system, but unless you have some other intense apps running at the same time it really makes no difference. You'll probably see less than 1% "other thread" load is being absorbed through SMP. One tweak you can make is to use the task manager to make all other processes on the system not use one of the CPUs, so that CPU will always be ready for mame and wont have its cache polluted by anything else. This probably doesn't help much either.

 

I've never been involved in coding an emulator, so there's probably issues I don't understand. But it seems to me that most video game systems and arcade machines natively are designed as SMP systems, and their code was written accordingly. For example, many typical arcade machines have a 68000 and a Z-80. Why can't all the CPU emulator components run in their own threads? Just give each CPU the same memory access that they have in the real machine, and run them simultaneously. It seems that this should work.

Link to comment
Share on other sites

I've never been involved in coding an emulator, so there's probably issues I don't understand.  But it seems to me that most video game systems and arcade machines natively are designed as SMP systems, and their code was written accordingly.  For example, many typical arcade machines have a 68000 and a Z-80.  Why can't all the CPU emulator components run in their own threads?  Just give each CPU the same memory access that they have in the real machine, and run them simultaneously.  It seems that this should work.

 

Communication between the threads/CPUs will probably negate any speed advantages. The multi-processor systems you mention were designed to be accessed the way they were. Possibly, when one accessed a certain part of the system, it knew other parts would be in sync and didn't have to worry about it.

 

On a general purpose computer with multiple threads on multiple CPUs, one usually can't make that assumption. Hence there has to be communication between each part, and that slows things down. In a real machine, the communication between parts was done in hardware (with interrupts, etc).

 

Also, many emulators today are slow because of the way computers are now designed. Video updates are particularly problematic.

 

For example, Stella typically uses 4-5% total CPU usage for the total emulation (in software video mode). At least 2% of that is simply sending data to the framebuffer/video card, since we no longer have direct access to the framebuffer, like we did in the Amiga days.

 

Sorry for the long explanation :)

Steve

Link to comment
Share on other sites

one possible way you could do this (in windows XP at least - I don't know about other OS's) is to go to the task manager and the processes tab - once you are there you should be able to right click on the process of the emulation program and 'set affinity' to the desired processor.

 

This should, in theory, put all of the load of the emulator onto one processor, while leaving the other one for the OS. It doesn't work out as cleanly as that, but in general I think that's how it works.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...