データ指向設計入門:キャッシュミスを避けてゲームを高速化する
Introduction to Data-Oriented Design [pdf]
2010年のゲーム開発者向けプレゼンテーション資料で、データ指向設計(Data-Oriented Design, DOD)の基本を解説。従来のオブジェクト指向設計(OOD)では、オブジェクトごとにデータをまとめるため、キャッシュミスが多発しパフォーマンスが低下する。一方、DODではデータを構造体の配列(SoA)として格納し、必要なデータだけを順に読み込むことで、キャッシュ効率を大幅に改善できる。具体的なコード例とキャッシュラインの図を用いて、OODとDODの違いを視覚的に示している。
メモリからの読み出しには約600サイクルかかるが、L1キャッシュからは1〜2サイクルで読み出せる。