Li muito sobre os benefícios da organização de dados em 'Structs of Arrays' (SoA), em vez do típico 'Array of Structs' (AoS), para obter melhor rendimento ao usar as instruções SIMD . Enquanto o 'porquê' faz total sentido para mim, não tenho certeza de quanto fazer isso ao trabalhar com coisas como vetores.
Os próprios vetores podem ser considerados como uma estrutura de uma matriz de dados (tamanho fixo), para que você possa converter uma matriz desses em uma estrutura de matrizes X, Y e Z. Com isso, você pode trabalhar em 4 vetores de uma vez, em oposição a um de cada vez.
Agora, pelo motivo específico de postar isso no GameDev:
Isso faz sentido para trabalhar com vetores na SPU? Mais especificamente, faz sentido DMA várias matrizes apenas para um único vetor? Ou seria melhor manter o DMA na matriz de vetores e desenrolá-los nos diferentes componentes para trabalhar?
Eu pude ver o benefício de cortar o desenrolamento (se você fez 'AoS'), mas parece que você pode ficar rapidamente sem canais de DMA se você seguir essa rota e estiver trabalhando com vários conjuntos de vetores ao mesmo tempo.
(Nota: ainda não tem experiência profissional com o Cell, mas já está brincando no OtherOS há algum tempo)