..:: PCSX2 Forums ::..

Full Version: Is 64bit faster than 32bit for emulation?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I'm just wondering how much of a speed increase (if any) percent wise will I get if I decide to switch to 64bit? I am under the impression that the pcsx2 runs better in a 64bit environment. Can someone give some more information about this? Thanks! Ninja

Creative X-Fi Extreme Gamer
Intel Core2Quad Q9550
GeForce 8800GTX
4gb DDR2 800
XP Pro 32bit
There will be no difference because of running in a 64 bit OS. There WILL be a difference running in DX10 over DX9.
(10-06-2009, 01:38 AM)KrazyTrumpeter05 Wrote: [ -> ]There will be no difference because of running in a 64 bit OS.

Actually there will be a difference if you are multi-tasking/stressing with multiple programs running while playing PCSX2. With your 4GB of memory, your system should be able to handle running other programs with less performance loss in PCSX2 when compared to 32-bit. If you don't plan on doing anything else (or have many programs running in the background) while using PCSX2, you won't notice much of a difference.
Programs don't automatically run better in 64-bit compared to 32-bit. Perhaps some memory intensive programs will see large benefits (mostly due to being able to address more than 2GB RAM per process and more than 4GB RAM total), but in typical desktop applications, you won't notice a difference, especially when the application itself is written in 32-bit. There will be absolutely no difference running a 32-bit application in a 64-bit OS, barring any compatibility issues, since all you're doing is emulating.

I don't think PCSX2 is available as a 64-bit application, since it automatically installs into the Program Files (x86) folder instead of Program Files.
(10-06-2009, 02:01 AM)Zanoab Wrote: [ -> ]
(10-06-2009, 01:38 AM)KrazyTrumpeter05 Wrote: [ -> ]There will be no difference because of running in a 64 bit OS.

Actually there will be a difference if you are multi-tasking/stressing with multiple programs running while playing PCSX2. With your 4GB of memory, your system should be able to handle running other programs with less performance loss in PCSX2 when compared to 32-bit. If you don't plan on doing anything else (or have many programs running in the background) while using PCSX2, you won't notice much of a difference.

That's not the point. The program itself gets no benefit from 64 bit OS.
the actual pcsx version is a 32bit application.

but if pcsx team make a 64bit version
¿what will be the benefit?
- a faster and more exact PS2 variable convertions?

is really necesary a x64 version?
It's actually really time consuming to make a 64-bit version of PCSX2. See, most software that are "available for 64-bit" are not native 64-bit. It's really just a code modification on the 32-bit version. Of course, there are some software that have native 64-bit support, and those are faster with 64-bit OS.

If the PCSX2 devs make a 64-bit version based off of the 32-bit version, there would be no performance improvement at all, and then people will start complaining as to why the 64-bit version doesn't give any performance improvement.

On the other hand, if the devs make a true 64-bit version from scratch, it would take too long. It would be the same as starting the entire project all over again. The development on the 32-bit version would come to a halt, and then people will start complaining about the lack of updates for the currently working 32-bit version.
64-bit computers were never meant to be a big performance boost at the application level, the real awesome-ness lies in being able to address a bajillion gigabytes of RAM on a single address space. Any program that moves around massive data sets could seen an improvement, but all the big changes are pretty much inside the OS and not directly visible to the user.

32-bit computers are butting up against the address limit, and even with things like PAE strapped on it's only delaying the inevitable. Moving to 64-bit guarantees you won't run out of address space for a very long time, somewhere between '100 years from now' and 'armageddon'.
(10-06-2009, 07:06 AM)echosierra Wrote: [ -> ]32-bit computers are butting up against the address limit, and even with things like PAE strapped on it's only delaying the inevitable. Moving to 64-bit guarantees you won't run out of address space for a very long time, somewhere between '100 years from now' and 'armageddon'.

If memory serves, Intel's memory addressing limit in 64 bit is currently 40 bits, which is "only" 1 Terrabyte, which is almost certainly obtainable in the not-so-distant future. AMD's is 48 bits, which is much closer to the 'armageddon' timeframe.

There's nothing stopping Intel from upping the addressing limit on later CPU models of course, and I'm sure they will long before we actually reach the point of stuffing 1TB of ram into desktop PCs. But yeah, go figure. The whole of x86-64 CPU design is a hack. Tongue2

By the way, I did learn something new the other day about x64, which helps explain why many applications do experience a nice speedup when built as x64 over x32. Turns out the calling convention ABI (advanced binary interface) for x64 is very nicely designed, and via utilizing the extra registers it's able to provide pretty significant speedups. Nice things include:

* Improved exception handling model. Approx. 33% less overhead for entering a try block or setting up the exception handler stackframe in a function that creates unwindable objects (anything with a destructor).

* __fastcall is the "norm", and all functions by default use four 64-bit registers for passing the first four parameters. So the stack need only be used for the most verbosely parameterized of functions.

* Floats and Doubles are passed via MMX or XMM registers (x86-32 ABI still requires they be passed using the FPU stack, which means an instruction needed to transfer the float/double value to the FPU, and another to push it onto the stack).

Of course most of that has little effect on a PCSX2 recompiler. The recs don't use any C++ objects except at the entry-point (which is only called rarely, when resetting the emu basically), so the exception optimization would be nil. We also use all 2-parameter functions, and the pre-existing __fastcall covers optimizing them to register already. And we use almost no instances of float/double in actual C code, save for the FPU and VU interpreters. So the general rule of thumb regarding PCSX2 compiled to 64 bit still holds: it's just not quite worth the effort (yet).

But! If you're dealing with an application that doesn't rely on a recompiler, then all of those things will typically be nice improvements in the resulting compiled code efficiency. Edit: and, oh yes, the PCSX2 interpreters would be noticeably faster if compiled in x86-64, but not sure anyone would much care. Wink



And, of course, none of this is really relevant to the topic of switching one's operating system to 64-bit as the OP inquires. All of these things require applications built natively for x64, and/or .NET/Java apps that are compiled on-the-fly. Running 32 bit apps on 64 bit changes nothing really.