Would 64bit benefit PCSX2 like it did with Dolphin?
#21
64-bit allows you to do some neat optimizations that cannot be done on 32-bit, or use more cycles on 32-bit. That's the biggest thing I noticed is that it lets you get away with a few optimizations that aren't possible on 32-bit.

I'm not the greatest person to talk about the JIT, but a lot of the issues was that general JIT changes would break JIT32/JITIL (either 32/64) rather than the actual emulation of individual instructions. Any kind of MMU optimization, register optimization, or just general stuff like the far code cache. I don't know why it broke JIT32, but in the end it became a liability.

Don't get me wrong, 64-bit is absolutely better for emulation and definitely a bit faster, but don't use Dolphin as the benchmark. Dolphin was absolutely having issues maintaining a 32-bit and 64-bit JIT, and part of what made 64-bit superior were things that just weren't implemented in the 32-bit JIT. That said, after dropping JIT32, Dolphin's CPU emulation sped up by over 100% in most games. This is a mixture of using some JIT64 only tricks and the fact that whenever someone did something to the JIT, they no longer had to worry about doing it to the 32-bit JIT.

Probably the best one is the flagopts merge, where each JIT had to be manually updated for it. That merge alone killed JITIL (for months), JITILARM (permanently, was discontinued) and was held up on implementations as well. Something like that is extremely hard to implement for each core. Things like that led to the death of JIT32, and eventually memory mapping issues killed off JIT ARMv7 as well.

If your plan is to have both a 64-bit and 32-bit implementation of the CPU emulation, you're going to see fairly small gains unless there are a lot of things that can be optimized. The added overhead of maintaining multiple CPU cores could be a total pain in the ass as well. I could see a 64-bit dynamic recompiler alongside a 32-bit recompiler in PCSX2 making anywhere from no difference to being 30% faster.
Reply

Sponsored links

#22
Or just drop 32 bit altogether. Seriously, I honestly don't see why microsoft is still releasing 32 bit Windows when pretty much all modern CPU's are x64 compatible.
Reply
#23
(06-29-2015, 01:25 AM)JMC47 Wrote: Dolphin's JIT sped up by nearly 100% after the 32-bit JIT was dropped simply by having the freedom to implement things more easily and Fiora showing up.

Correction, over 100% in some games.

Off-topic: Do you know why the recent Dolphin builds are very slow? Maybe it's only very slow when running some games. For example, 4.0-6450 64-bit is much slower than 4.0-127 32-bit when running Mario Kart: Double Dash!!. The best version for me is 4.0-5954. I found out that it became slower since version 4.0-5971 (Block GPU thread).

(06-29-2015, 02:38 AM)JMC47 Wrote: That said, after dropping JIT32, Dolphin's CPU emulation sped up by over 100% in most games. This is a mixture of using some JIT64 only tricks and the fact that whenever someone did something to the JIT, they no longer had to worry about doing it to the 32-bit JIT.

Fastmem aside, what are the features that require 64-bit systems?

(06-29-2015, 03:45 AM)Dr_Hycodan Wrote: Or just drop 32 bit altogether. Seriously, I honestly don't see why microsoft is still releasing 32 bit Windows when pretty much all modern CPU's are x64 compatible.

According to them, there are about 100 millions of PCs that run 32-bit versions of Windows.
Reply
#24
If you have any questions about Dolphin, please direct them to the Dolphin forums. We've been looking for a second configuration with the BlockGPU performance issues.

There's just tons of features that are either harder/impossible to implement on 32-bit. It adds up. If you're asking for an outright "ah hah!" thing that makes it faster, I can't do that.
Reply
#25
Okay. Never mind. I'm just curious. It's great that the problem is acknowledged, though. Thank you for the information.
Reply
#26
I might investigate at some point, however we don't really want to drop 32bit any time soon, it's quite nice having the with older systems
[Image: ref-sig-anim.gif]

Reply
#27
Biggest gain imho is the larger memory space. We're often running awfully close to the per process memory limit.
Reply
#28
Yeh but that's due to bugs, not requirements.
[Image: ref-sig-anim.gif]

Reply
#29
Fixing the mem leaks might be easier than implementing the X64 support and is potentially the accurate way to fix things.
We're supposed to be working as a team, if we aren't helping and suggesting things to each other, we aren't working as a team.
- Refraction
Reply
#30
It isn't a memory leak (at least for the HW renderer). I think it is related to
1/ we allocate way too big texture for render target and texture that must contains render target. I have seen 1280x1024 texture (+4MB) only containing 256x256 pixels... (1MB) Actually we have the validity of the target so maybe we can reduce the texture to the pixels that were really drawn.
2/ Source texture might be deallocated too late. On some traces when there is an invalidation at address 0x2000. I saw the deallocation of 5-8 textures.

On linux, we have 4GB by default (on 64 bits kernel). And I'm nearly sure that it is possible to reduce the memory requirement of GSdx.
Reply




Users browsing this thread: 1 Guest(s)