Java中的缓存模拟器,实现数据块

时间:2012-03-21 20:07:48

标签: java arrays caching

在创建我的缓存模拟器时,我意识到我需要一个结构来保存通常从主内存复制到缓存的数据块。在这种情况下,它持有8个数字。我将我的缓存设置为一个对象,以便我可以设置它的标签,有效位,脏位,最后是数据块。所以我认为阵列是最好的事情。我的吸气者和制定者会是:

public int[] getDataBlock() {
    return dataBlock;
}
public void setDataBlock(int[] dataBlock) {
    this.dataBlock = 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);
}

1 个答案:

答案 0 :(得分:1)

您可以编写一个帮助函数来清除缓存槽,如下所示:

public void clearData(){
   Arrays.fill(this.dataBlock,0);
}

要从主要记忆复制到特定广告位,请使用System.arraycopy

public void copyToCacheSlot(int[] mainMem, int baseIndex, int length){
    if (length <= 8)
        System.arraycopy(mainMem, baseIndex, this.dataBlock, 0, length);
    else
        //Copied too much 
}

循环浏览cache数组并根据每个元素调用上述函数。