|March 20th, 2006, 23:54||#1|
Join Date: Jan 2004
Location: Plymouth, UK
Why is PCSX2 slow?
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 recieve a warning and maybe even a ban for not reading the rules .
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) altho 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 arent in the PSX, so we have a processor thats 8x faster and at least 3 times more complex.
IOP (In Out Processor) core = This is identicle 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.
VU (Vertex Unit) = The PS2's equivilant to the graphics engine on the PSX, it is seen as an extra processor (yes another one) altho the PSX one was 4 times slower than the VU and also the VU has its own memory and run independantly from the main CPU where as the PSX one is cpu dependant. 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.
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
GS (Graphics Synthesiser) = This is the PS2 version of the GPU, which does a simular job, but has the ability to do anti aliasing and alsorts of other fancy things, altho some were rarely used, this does all the vertex/texture mapping that you see on the screen.
SIF = Now this didnt 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 layed out as the PSX was. Altho its function seems simple, its required that we emulate it which takes extra time as expected.
These are the main, intesively 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 thats 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
As time goes on we find quicker ways to do things and optimise 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
Intel i7 920 @ 3.4Ghz, POV GTX 570 1.3Gb, 1.8Tb HD space, 6Gb OCZ Reaper PC3-14400 Triple Channel
Dont PM me for help, use the forums, thats what its for!
My Chip16 Emulator RefChip16 http://code.google.com/p/refchip16/
Last edited by refraction; March 21st, 2006 at 09:57..