Tôi đã đọc rất nhiều về lợi ích của việc tổ chức dữ liệu vào 'Structs of Arrays' (SoA) thay vì 'Array of Structs' (AoS) điển hình để có được thông lượng tốt hơn khi sử dụng các hướng dẫn SIMD . Trong khi 'tại sao' hoàn toàn có ý nghĩa với tôi, tôi không chắc sẽ làm được bao nhiêu khi làm việc với những thứ như vectơ.
Các vectơ có thể được coi là một cấu trúc của một mảng dữ liệu (kích thước cố định), do đó bạn có thể chuyển đổi một mảng của chúng thành một cấu trúc của các mảng X, Y và Z. Thông qua đó, bạn có thể làm việc trên 4 vectơ cùng một lúc trái ngược với từng vectơ.
Bây giờ, vì lý do cụ thể tôi sẽ đăng bài này lên GameDev:
Điều này có ý nghĩa khi làm việc với các vectơ trên SPU không? Cụ thể hơn, nó có ý nghĩa với DMA nhiều mảng chỉ cho một vectơ không? Hoặc sẽ tốt hơn nếu gắn bó với DMAing mảng vectơ và hủy kết nối chúng vào các thành phần khác nhau để làm việc?
Tôi có thể thấy lợi ích của việc cắt bỏ việc không kiểm soát (nếu bạn đã thực hiện 'AoS'), nhưng có vẻ như bạn có thể nhanh chóng hết các kênh DMA nếu bạn thực hiện tuyến đường này và làm việc với nhiều bộ vectơ cùng một lúc.
(Lưu ý: chưa có kinh nghiệm chuyên môn với Cell, nhưng đã chơi đùa trong OtherOS một thời gian)