Статистика кэша 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()) фактически ничего не делали. Это на самом деле случалось со мной много раз, но я не совсем уверен относительно источника этой ошибки.
Если вы хотите устранить неполадки дальше, вы можете сделать следующее:
- Посмотрите на разборку вашего кода и найдите reset_stats.w и dump_stats.w
- Извлеките трассировку из gem5 и посмотрите, завершится ли она выполнением инструкций dump и reset, а также какие инструкции (и сколько) выполняются до / после.
Надеюсь это поможет!