I've seen common comparisons made between the AoS (Array of Structures):
struct xyz
{
ALIGNED float x, y, z, ignored;
};
ALIGNED struct xyz AoS[n];
And the SoA (Structure of Arrays):
struct SoA
{
ALIGNED_AND_PADDED float x[n];
ALIGNED_AND_PADDED float y[n];
ALIGNED_AND_PADDED float z[n];
};
So what would this kind of data representation be called?
struct xyz4
{
ALIGNED float x[4];
ALIGNED float y[4];
ALIGNED float z[4];
};
ALIGNED struct xyz4[n/4] ???;
A "cache-efficient SoA"? An AoSoA? An SoAoS? A "PITA to code"? It seems like the most efficient solution generally speaking, providing SoA-type SIMD with a lot of cache hits.