QPU: TMUキャッシュとL2キャッシュの連想度

概要

TMUキャッシュとL2キャッシュをセット連想方式とする。この仮定は事実と矛盾しない。 TMUキャッシュの連想度は$1$、 すなわちTMUキャッシュはダイレクトマップ方式であることがわかった。 また、L2キャッシュの連想度は $4$ であることがわかった。

実験環境

実験環境として Raspberry Pi 2 Model B を使用した。

プログラム

TMU0 または TMU1 を用いて、 $L \times 4$ バイトの連続したメモリ領域を $S$ バイトまたぎで $R$ 回読み込んだ。

結果 1

TMUキャッシュのヒット数とミス数をそれぞれ $H_{TMU}$、$M_{TMU}$ とする。 L2キャッシュについても同様にヒット数とミス数をそれぞれ $H_{L2}$、$M_{L2}$ とする。 これらの値はそれぞれパフォーマンスカウンタの インデックス $24$、$25$、$28$、$29$ を用いて得られた。

$L = 1$、$R = 1000$ のとき、$H_{TMU} = 16000$、$M_{TMU} = 1$ だった。 同様に、任意の $L,S,R$ について $H_{TMU} = L \times R \times 16$ だった。

$L = 2$、$R = 1000$のとき、$S \le 2048$ ならば $M_{TMU} = 2$、 $S \ge 4096$ ならば $M_{TMU} = 2000$ だった。 同様に、任意の $L,S,R$ について $S \le 4096 / L$ ならば $M_{TMU} = L$、 $S \ge 4096 / L \times 2$ ならば $M_{TMU} = L \times R$ だった。

考察 1

$H_{TMU}$ については QT12 と矛盾しない結果が得られた。

TMUキャッシュをセット連想方式と仮定する。 QT10 より、TMUキャッシュの容量は $4096$ [B] である。 今回、$S \le 4096 / L$ のときは $M_{TMU} = L$ となり、 $S \ge 4096 / L \times 2$ のときは $M_{TMU} = L \times R$ となった。 これは、$S \ge 4096 / L \times 2$ のときは TMU がロードのたびに 毎回 L2 キャッシュまたはメモリからデータをフェッチしていることを表している。 つまり、TMUキャッシュは $4096$ [B] 以上をまたぐデータを同時には持てないということになる。 すなわち、TMUキャッシュの連想度は$1$であり、ダイレクトマップ方式であることがわかる。

結果 2

以下、$S \ge 4096 / L \times 2$、すなわち TMU がロードのたびに 毎回 L2 キャッシュまたはメモリからデータをフェッチするとする。

$L \le 4$ のとき、$H_{L2} \simeq L \times R$、$M_{L2} \simeq 0$ だった。 また、$L \ge 5$ のとき、 $L \times S + 4 \le 16384$ ならば $H_{L2} \simeq L \times R$ かつ $M_{L2} \simeq 0$、 $L \times S + 4 \ge 16384$ ならば $H_{L2} \simeq 0$ かつ $M_{L2} \simeq L \times R$ だった。

考察 2

L2キャッシュをセット連想方式と仮定する。 これは、$L \ge 5$ のときの $H_{L2}$ および $M_{L2}$ の値と矛盾しない。

QT10 より、L2キャッシュの容量は $16384$ [B] である。 L2キャッシュがキャッシュミスをしたのは $L \ge 5$ のときのみであったことから、 L2キャッシュの連想度は $4$ と考えられる。

Copyright notice

© 2019 Idein Inc. Written by Yukimasa Sugizaki.

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.