Статистика кэша gem5 - сброс и сброс

Я пытаюсь познакомиться с симулятором gem5. Для начала я написал простую программу с

int main()
{
    m5_reset_stats(0, 0);
    m5_dump_stats(0, 0);
    return 0;
}

Я скомпилировал его с помощью util/m5/m5op_x86.S и запустил его, используя...

 ./build/X86/gem5.opt configs/example/se.py --caches -c ~/tmp/hello

M5out / stats.txt показывает (среди прочего)...

system.cpu.dcache.ReadReq_hits::total             881
system.cpu.dcache.WriteReq_hits::total            917
system.cpu.dcache.ReadReq_misses::total            54
system.cpu.dcache.WriteReq_misses::total           42

Почему пустая функция показывает столько хитов и промахов? Хиты и промахи вызваны libc? Если так, то какова цель m5_reset_stats() и m5_dump_stats()?

1 ответ

Я бы проверил в файле stats.txt, есть ли два куска

---Begin--- 
---End-----

потому что, как вы объяснили, симулятор должен выводить статистику в dump_stats(0,0) и в конце выполнения. Таким образом, кажется, что вы либо смотрите на один из этих интервалов (и я ожидаю, что другой интервал будет иметь 0 для всех характеристик); или в симуляции была ошибка, и dump_stats() (или reset_stats()) фактически ничего не делали. Это на самом деле случалось со мной много раз, но я не совсем уверен относительно источника этой ошибки.

Если вы хотите устранить неполадки дальше, вы можете сделать следующее:

  1. Посмотрите на разборку вашего кода и найдите reset_stats.w и dump_stats.w
  2. Извлеките трассировку из gem5 и посмотрите, завершится ли она выполнением инструкций dump и reset, а также какие инструкции (и сколько) выполняются до / после.

Надеюсь это поможет!

Другие вопросы по тегам