(12/27)
キャッシュデータの再利用度を高める例である。
修正前のコードはベクトル計算機向けのコードでよく見られるように、作業配列に全ての次元分の計算結果を格納したのち、これを全次元分回転する別のループで参照するものである。作業配列が大きくループの回転範囲が大きいとき、キャッシュからデータがあふれ、作業配列を参照するループではキャッシュ上からデータを再利用することができない、あるいは再利用できる可能性が低い。
計算内容はIとJ各次元について独立であり、次元Jの特定値について定義し、その結果を参照したのち、次のJについて繰り返す手順が可能である。そこで、作業配列定義部と参照部分のJループを融合し、I次元だけのサブセットを単位に処理を行うことによって、キャッシュからのデータあふれを回避し、再利用を促進させることができる。このとき、作業配列は二次元である必要はなく、また二次元のままでは、J次元の推移によってキャッシュ上を全てスウィープし、キャッシュミスヒットを引き起こすため、次元縮小によってこれを回避することができる。