Hacker News new | ask | show | jobs
by vvanders 2023 days ago
SoC doesn't make as large of a difference as you'd think. The only place you really get hammered is if your moving a lot of memory between separate memory domains.

As a real world example the X360 had a unified memory architecture and PS3 had a split along system/gpu. From a CPU performance perspective they were pretty close(although the SPUs in the PS3 could really go if you vectorized your data for them appropriately).

2 comments

SoC doesn't make as large of a difference as you'd think.

There are now enough transistors on chip for a reasonably good on-chip GPU. Plus you get better bandwidth between CPU and GPU. This is independent of the instruction architecture. The PS5's SOIC does some of the same things, though it's an x86 instruction set, not ARM.

Neither the PS5 nor the Xbox use AMD CPUs. Intel has a big problem.

Both PS5 and Xbox use AMD Zen 2 CPU. I guess you meant that PS5 and Xbox don't use Intel CPUs.

I highly doubt Intel wants to be in the low margin business of supplying console CPUs. Intel's fortune is entirely dependent on whether it can get back advanced process node crown from TSMC.

The code complexity to pipeline everything to be DSP-like to avoid memory latencies is very different. And you can be sure that most developers (particularly non-console developers) aren't thinking about it. Was super impressed with how Naughty Dog was able to use 70% of the SPUs on Uncharted 2 though - which was either at launch or close to launch.
The answer for that one is real simple, it was mostly a function of what your first target platform was.

Back in that era X360 had the edge by coming out slightly ahead schedule wise so most engines targeted that first and then had a brutal slog to cram things down to the SPUs on the subsequent PS3 port.

If you went the other way though your nicely linearized SPU friendly data code fit in-cache on the X360/PC and usually ran remarkably better.

Once again, it was just more work to pipeline your data. That the same code worked well across both isn't my point. I worked on an engine team supporting both of those platforms, so I know. This kind of approach is pretty rare for desktop and mobile apps, which is what the M1 is used for.

Edit: Exceptions being typical DSP realms, such as video/image/sound processing, rendering packages, AI, which are all already targeting GPUs. Note that Final Cut Pro works faster on Intel setups with traditional (non-integrated) GPUs vs M1.

Oh I worked on titles in that era too, and on other oddball platforms like the PSP :).

Without getting into the weeds too much you just weren't doing much with the single CPU core on the PS3. As soon as you booted anything of note it was pretty obvious that you'd have to offload to the SPUs. I'm not saying that it wasn't more work, but most of the other teams we talked with who had done PS3 as a baseline first had a much, much easier time of it.

I would say that any console/handheld developer the approach wasn't unfamiliar, but there were certainly a fair number of engines with roots in the PC space that had a rough time of it. That said it was more down to the SPUs than anything related a unified memory architecture(although we did do some fun shenanigans around streaming music back from VRAM to the CPU to give us more system memory headroom).