前提・実現したいこと
以下のC コードの2番目のforループ
for(i=0;i<K;i++)a[i]=a[i]+1;
の実行時における、容量が4KiBのダイレクト・マップ方式のデータ・キャッシュ(データ専用のキャッシュ) のミス回数を、表が指定するKとキャッシュのブロックサイズL(単位バイト)の値の全ての組み合わせに対して求めよ。
int i, a[K];
for(i=0;i<K:i++) a[i]=i;
for(i=0;i<K;i++) a[i]=a[i]+1;
なお、以下の前提を用いるものとする。
・ループの実行中は、配列a[]以外の変数・定数の参照によるメモリアクセスは生じない。
・a[0]のアドレス(バイトアドレス) は32の倍数である。
・int型のデータの大きさは4バイトである、
【ヒント】一般性を失うことなくa[0]のアドレスが4096 の倍数と仮定してよい。
K=1024,1536,2048の3通りについてL[バイト]が16,32の時の併せて6通りについて。
あなたの回答
tips
プレビュー