QPU: uniformsキャッシュのラインサイズ

概要

uniformsキャッシュのラインサイズは$64$[B]であることがわかった. 命令キャッシュ,L2キャッシュおよびuniforms FIFOについては QI3を参照せよ.

実験環境

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

プログラムの流れ

nop
nop
nop
nop
nop
nop
nop
nop
Loop N times {
  mov nop, uniforms_read
}
nop
nop
nop
nop
nop
alu.program_end
mov host_int, 1
nop
List 1. 実行したプログラム

$N$を$[0,80]$の範囲で変化させた.プログラム中ではジャンプ命令を用いておらず, $8+N+8$ 個の命令を実行するとプログラムの実行は停止する. プログラムは$10$回実行し,平均値をパフォーマンスカウンタの測定値とした.

結果

パフォーマンスカウンタにより測定した uniformsキャッシュのヒット数を $H_{unif}$ とし, ミス数を $M_{unif}$ とする. $\ceil{H_{unif} / 16}$ と $M_{unif}$ が一致した.

それぞれの$N$において, すべての実行におけるパフォーマンスカウンタの値が一致した(平均をとるまでもなかった).

考察

QI3より,$H_{unif}$はuniformsの$1$要素がuniforms FIFOに 読み込まれるたびにカウントアップされる. また,$M_{unif}$はuniformsキャッシュがL2キャッシュからフェッチするたびに カウントアップされる.今回,$\ceil{H_{unif} / 16}$ と $M_{unif}$ が 一致したことにより,uniformsキャッシュのラインサイズが$16$要素,つまり $64$[B]であることがわかる.

Copyright notice

© 2018 Yukimasa Sugizaki. All rights reserved.

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