1
キャッシュシミュレータの作成では、通常、メインメモリからキャッシュにコピーされるデータブロックを保持する構造が必要であることがわかりました。この場合、8つの数字を保持しています。タグ、有効ビット、ダーティビット、そして最後にデータブロックを設定できるように、キャッシュをオブジェクトとしてセットアップしました。だから私は配列がここでは最高のものになると思っています。私のゲッターとセッターはちょうど:Javaのキャッシュシミュレータ、データブロックの実装
public int[] getDataBlock() {
return dataBlock;
}
public void setDataBlock(int[] dataBlock) {
this.dataBlock = dataBlock;
}
私はすべて0にキャッシュをどのように初期化するのですか? System.arraycopyを使用し、特定のスロットにメインMEMからコピーするには
public void clearData(){
Arrays.fill(this.dataBlock,0);
}
:
//initialize cache slots to 0
for (int i = 0; i<cache.length; i++) {
cache[i] = new SlotNode();
cache[i].setValidBit(0);
cache[i].setTag(0);
for (int j = 0; j < cache.length; j++) {
cache[i].setDataBlock([0]);
}
//cache[i].setData(0);
cache[i].setDirty(0);
}
'cache [i] .setDataBlock([0]);'は、配列の値を0に初期化するために何をすべきか分からなかったはずです。 cacheNodeクラスの他の値を持つコンストラクタその背後にある私の考えは、各SLOTが別々の配列、つまりデータのブロックを必要とするということです。 – jackie
'public class SlotNode { public int validBit; public int tag;public int [] dataBlock = new int [8]; public int dirty; public int [] getDataBlock(){ \t \t return dataBlock; \t} \t公共ボイドsetDataBlock(INT []データブロック){ \t \t this.dataBlock =データブロック。 \t} \t public int getDirty(){ return dirty; } パブリックvoid setDirty(int dirty){ this.dirty = dirty; } } – jackie
つまり、キャッシュには複数のスロットがあり、各スロットは配列です。 –