Cache Simulator на Java, реализация блока данных - PullRequest
1 голос
/ 22 марта 2012

При создании симулятора кеша я понял, что мне нужна структура, которая содержит блок данных, который обычно копируется из основной памяти в кеш. В этом случае он содержит 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 Ответ

1 голос
/ 22 марта 2012

Вы можете написать вспомогательную функцию для очистки слота кеша, как это:

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 и вызовите вышеупомянутые функции для каждого элемента .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...