PS4 ICE Team Programmer: ‘Surface Tiling/Detiling On The CPU Is 10-100x Faster Now’
Cort Stratton wrote an early version of ASM which improves tiling performance on the PS4.
Sony’s ICE team programmers are basically a bunch of talented developers that work on the core graphics technologies for the PS4. One such developer is Cort Stratton who is a senior programmer on Sony’s ICE Team.
On his Twitter feed he revealed a few interesting tid-bits about PlayStation 4 games development and how his recent contributions will make things run faster.
“Finally wrote that ASM I was looking forward to. Early results: PS4 surface tiling/detiling on the CPU is ~10-100x faster now. SIMDlicious!.” he Tweeted.
Let us go in detail into what each term actually means.
An ASM is a programming language that has a strong level coupling between the language and architecture machine code. This language is specific to one architecture [in this case the PS4’s architecture] compared to high level programming languages which can be used across several architecture/devices. Basically this language gives more control over performance since the developer will essentially write code for one specific device.
Tiling is essentially dividing an image by a grid so that limited rendering is used in creating a scene. This process is performed by the CPU [all modern architectures use hardware to accelerate this process]. Once the geometry is decided for the tiles, the GPU then renders each of them to memory buffer.
SIMD [single instruction, multiple data]. As the name indicates, SIMD is essentially performing single instruction across several data points. Almost all modern CPU comes packed in with SIMD instructions for an increase in multimedia performance .
So essentially, Stratton wrote a code that will push tile performance on the PlayStation 4’s CPU by 10-100 times faster. Note that improvement in performance will result into tiles being switched faster which also means less processing time. But the developer also needs to use the appropriate tile size since larger tiles will obviously use more processing time. It’s a balance, you see.
He also revealed that the previous code was bad and was a just copy reference from the hardware documents. “It was pretty bad. Pretty much a copy of the reference code from HW docs, evaluated in full per fragment with a memcpy at the end,” he tweeted.
“(plus an awful memory access pattern; I needed to restructure things to write full cache lines),” he continued, referencing his approach towards tiled rendering.
[memcpy is a C++ function that is used to copy the values of bytes from source to the memory block pointed by the destination.]
Given that Stratton has contributed in developing PS3’s SPU rendering code to several games such as the Uncharted and Grand Theft Auto series, it’s most likely going to be used for future PS4 titles. But remember, as he mentions this is still an early version and things might improve even further in the future.
Let us know your thoughts in the comments section below