私はJavaでプログラムを書いています
このプログラムでは、データの配列を読み取って変更しています。これはコードの例です:
public double computation() {
char c = 0;
char target = 'a';
int x = 0, y = 1;
for (int i = 0; i < data.length; i++) {
// Read Data
c = data[index[i]];
if (c == target)
x++;
else
y++;
//Change Value
if (Character.isUpperCase(c))
Character.toLowerCase(c);
else
Character.toUpperCase(c);
//Write Data
data[index[i]] = c;
}
return (double) x / (double) y;
}
ところで、INDEX配列には、プリフェッチを防ぐためにランダムな順序でDATA配列のインデックスが含まれています。INDEX配列でランダムインデックスを使用して、すべてのキャッシュアクセスを強制的に見逃しています。
次に、ヒット率に関する情報を収集して、CPUキャッシュの動作を確認します。
この目的のために開発されたツールはありますか?そうでない場合、何かテクニックはありますか?