Why is PCSX2 slow?
#1
Originally posted by Refraction

This seems to be a common question in this forum, i shall give you 3 options at this point.

Option 1: Read on to what i have to say
Option 2: Read this This talks about how the ps2 works compared to a PC.
Option 3: Post a thread asking why your game runs slow and receive a warning and maybe even a ban for not reading the rules Wink.

A lot of people seem to compare PS2 emulation to the other consoles such as Gamecube and PSX. Why are they faster? well the simple fact is the consoles are much simpler than the PS2, thus less code, bandwidth and development time is required.

This is a list of the things the emulator needs to emulate, i shall compare to the PSX.

EE (Emotion Engine) core = The PS2's main processor which runs 8x faster than the PSX processor with registers twice the size (128bits) although in general cases only 64 bits are used, where the PSX uses 32bits as a general rule. The other difference is the R5900 (EE) has many extra instructions, multimedia instructions and extra co processors which aren't in the PSX, so we have a processor that's 8x faster and at least 3 times more complex.

IOP (In Out Processor) core = This is identical to the PSX core, it is the same chip with a few extra dma channels, it is also clocked 3mhz higher than the PSX but we can assume its basically the same chip.

VUs (Vector Units) = The PS2's equivalent to the graphics engine on the PSX, it is seen as an extra processor (yes another one) although the PSX one was 4 times slower than the VU and also the VU has its own memory and run independently from the main CPU where as the PSX one is cpu dependent. This is the main reason for the slow 3d games on PCSX2, intense vertex processing done by the game using 4 32bit vertex's which makes up the 128bit floating point registers that it contains. This unit also processes textures and 2d information on a part of the unit called the VIF which unpacks texture data and sends it to the GS.
Oh, did we mention there's 2 of these units (VU0 and VU1)? Tongue2

SPU2 (Sound Processing Unit 2) = This is literally, the SPU found on the PSX but doubled, so there is now 2 of them to handle Wink

GS (Graphics Synthesizer) = This is the PS2 version of the GPU, which does a similar job, but has the ability to do anti aliasing and all sorts of other fancy things, although some were rarely used, this does all the vertex/texture mapping that you see on the screen.

SIF = Now this didn't appear on the PSX, it connects the IOP to the EE and is used to transfer data between the 2, as the DVD, sound etc is situated on the IOP side, pretty much laid out as the PSX was. Although its function seems simple, its required that we emulate it which takes extra time as expected.


These are the main, intensively used parts of the PS2 which are used in the emulator, as you can tell from the comparison that the PS2 is much more complex than the PSX and requires a lot more time. To add insult to injury on the real machine a lot of work will be done asynchronously, so say while the VU is doing something the processor will be doing something else, but unfortunately we cant do this, so we have to run 1 and pause the rest, when that's done let something else do the work and so on, and running all that processing power on a single CPU is very very intensive work. Now take all that and throw on at least FIVE times the requirements due to the emulation needing to process the original data and convert to ix86 Wink

As time goes on we find quicker ways to do things and optimize the code, but until we can run games at high speeds, enjoy the fact you can even run a PS2 game on your PC and continue to show your support Smile
[Image: newsig.jpg]

Sponsored links





Users browsing this thread: 2 Guest(s)