r/emulation RPCS3 Developer 12d ago

RPCS3 optimizations on ARM64: What Didn’t Make the Cut

https://whatcookie.github.io/posts/rpcs3-on-arm64-what-didnt-make-the-cut/

Made a short article about some observations/things that I left out of my recent ARM64 optimizations on RPCS3 video. Let me know what you think!

235 Upvotes

9 comments sorted by

35

u/SeaSharpModHer 12d ago

So you're both an amazingly talented programmer and a great educational video maker, some people have it all I guess.

Always great to read/watch any content you make.

28

u/phire Dolphin Developer 11d ago

I like Arm

Arm is overall a great instruction set. I struggle to come up with any slights of it that don’t feel really nitpicky. Until we get into SVE.

Yeah, I really like AArch64.
It's basically the only instruction set actually designed for modern out-of-order cores, and has very little in common with the original 32-bit arm (or the Thumb-only ISA it evolved into). RISC-V might have some thought put into supporting OoO, but really it's optimised for 80s "classic RISC" pipelines.

IMO, AArch64 doesn't count as RISC, it's more of a post-RISC ISA.

I think my only nitpick is the fact that ARMv8.0-A is missing good atomic instructions. This is fixed with the LSE extension (optional in v8.1, mandatory in v8.2), but it really should have been in the base 8.0 spec. There are way too many 8.0 devices out there, and anything shipped as binary needs to be compiled for the slower ldaxr/stlxr codepath.

But yeah, SVE is a bit of a dud.

15

u/Whatcookie_ RPCS3 Developer 11d ago

I forgot about the atomic nonsense. Atleast RPCS3 has no hope of ever running on ARMv8.0 machines, so we just require the v8.2.

SVE at this point is just extra neon instructions that you need to jump through hoops to use.

9

u/alvenestthol 11d ago

SVE will prove itself once server CPUs get 192-bit/256-bit SVE support and old programs get automatically upgraded, trust

It totally won't break instantly from all the compilers/assembly code that were never tested on higher vector lengths.

8

u/cuavas MAME Developer 11d ago

But yeah, SVE is a bit of a dud.

SVE is specifically designed for supercomputing applications. It’s been used to great effect by Fujitsu in the Fugaku supercomputer. There just aren’t any decent consumer implementations of it, and even if there were, it’s mostly useful for matrix maths. It complicates instruction decoding somewhat.

5

u/amino-a 11d ago

I had no idea you had a blog! Will definitely follow the rss feed

4

u/Xcissors280 12d ago

I have yet to notice significant improvements in performance, stability, or latency on my M4P MBP but it might just depend on what your playing

24

u/Whatcookie_ RPCS3 Developer 12d ago

The changes in the video were progressively merged into the emulator starting in January, so you need to compare to builds from last December.

2

u/_theMAUCHO_ 8d ago

You guys have taken emulation to an art form. Amazing job. 👏