Development suggestions thread for the PCSX2 Team
I've been using PCSX2 on and off for about one year now, and I've had a blast using it. Sure, some games have SOME slowdown and FPS drops during gameplay, but that just reminds me that there are smarter people than me working on this trying to make it go as fast as possible, which made me look into the PS2's architecture.

So from multiple articles, and even a thread posted here, the main advantage the PS2 has is that awesome multimedia processor. While PC CPU's (most of them) don't use this type of processor.

But what about cores?

I have a Intel Core 2 Quad CPU at 2.83 GHz. WAY underpowered in terms of GHz, but I figured out that the more cores PCSX2 is able to utilize, the better performance I get. (I have 4 cores, so setting it to 5 cores won't do anything.)

(Bad part tho is that my processor tends to "overheat" so I try to keep track of it's temperature while playing. Laugh)

Have you guys ever thought of coding PCSX2 in such a way that it utilizes certain cores to do certain things?

For example:

Core #1 = Emotion Engine
Core #2 = Graphics Synthesizer
Core #3 = I/O Processor

Now, that may be a terrible example, but you should get the point. Have individual cores do certain things the PS2 would do.

Because of the low specs of the PS2, this might give performance boosts to people like me who have a "lot" of cores.

If you don't have that many cores, then the recommendations possible go up, and the performance goes down if you don't meet them.

Now, I'm no programmer, so all I have to offer is suggestions like this. I don't even know if this would help. Like I said, the Emotion Engine had a clock speed of about 300MHz, so maybe using a core at about three times that could help performance.

I encourage people to post there own suggestions in this thread to. Maybe one of these ideas might catch on, and help PCSX2's crew and development to go to places its never gone before.

Sponsored links


didn't look too far did ya..?
When putting things on their own thread you run into the problem of synchronization. The ps2 has very strict timing between things like the IOP, EE, GS, and VU's. Keeping everything in sync across multiple cores is extremely difficult to nearly impossible. The MTVU speedhack does allow a 3rd core to be added into the mix by putting VU1 on its own thread. I'm fairly certain pcsx2 could be optimized for more cores, but the amount of work it would take is massive.
[Image: gmYzFII.png]
[Image: dvedn3-5.png]
to make it more or less short:
Multithreading is not easy for components that have to communicate with each other. Either you disable this communication or you have to include idle/wait times which will be inefficient in the end if you have a too high amount of threads. Even two threads can be too much.

Nevertheless Multithreading is already included in pcsx2 in terms of speedhacks.
One thread normally does everything: EE+VIF+GIF+VU+GS... (whatever belongs to a real ps2)
Using the MTGS-speedhack another thread is created who handles only the graphics synthesizer (GS). As there seems to be only one-way-communication between those threads it seems to be "easily" multithreadable.
Already some years ago there was another speedhack made (MTVU) which separates (one or both of) the VU's into a single thread. This would be actually problematic since VU is communicating with other parts in both directions. The hack disables back-communication so that some games can crash but there is no wait/idling time included. Therefore you can get a speedboost as well as a crash.

Another possibility to increase the number of threads is included in the GS-software renderer. Here I have to guess but probably the output window will just be split into several parts and each part will be calculated by its own thread.

i would suggest to read the Developer blog. Somewhere all this information is written in detail.
And suggestions can always be done on the github if not mistaken.

Users browsing this thread: 1 Guest(s)