ヒット率は、キャッシュ内で見つかったデータの割合です。しかし、アルゴリズムのヒットを見つける方法がわかりません。私は、コード 1 の場合、それぞれ 4 つの要素を持つ 11 個のブロックがあり、コード 2 の場合、それぞれ 11 個の要素を持つ 4 つのブロックがあり、4 つの要素が欠落しているのを見るたびに考えていました。それがまったく意味があるかどうかはわかりません。どんなアドバイスも歓迎します
11 行 x 4 列の 2 次元配列 A が次のようにメモリに格納されているとします。[0][0], [0][1], [0][2], [0][3], [1][0], [1][1], …[10][2], [10][3]
また、各メモリ ブロックが 4 バイトを保持する 10 個のメモリ ブロックの完全連想型シングル レベル キャッシュと、FIFO 置換ポリシーを想定します。
各行は正確に 1 つのキャッシュ ブロックに収まりますが、残念なことに配列全体がキャッシュに収まりません。キャッシュが 1 行小さすぎます...
次の 2 つのコードを考えると、1- ヒット率を計算する方法 2- キャッシュ アクセス時間が 5ns でメモリ アクセス時間が 70ns であり、メモリとキャッシュへのオーバーラップ アクセスを想定すると、各コードの EAT を計算する方法?
コード 1:
for (int row = 0; row < 11; row ++)
{
for (int column = 0; column < 4; column ++)
{
myByte = A [ row, column ];
}
}
コード 2:
for (int column = 0; column < 4; column ++)
{
for (int row = 0; row < 11; row ++)
{
myByte = A [ row, column ];
}
}
どんな助けでも大歓迎です。ありがとう