2013-07-31 16 views
0

Я запускаю Linux на 32-нм процессоре Intel Westmere. У меня есть проблема с кажущимися противоречивыми данными о количестве пропущенных номеров DTLB из счетчиков производительности. Я провел два эксперимента с тестовым доступом случайной памяти программы (однопоточный) следующим образом:Номер отклонения номера DTLB, считающий несоответствие

Эксперимента (1): Я подсчитывал с помощью DTLB пропускает следующий счетчиком производительности

DTLB_MISSES.WALK_COMPLETED ((49H событие, UMASK 02H)

Experimt (2) Я подсчитывал DTLB пропускает путем суммирования следующих два значения счетчика

MEM_LOAD_RETIRED.DTLB_MISS (Событие CBH, Umask 80H)

и

MEM_STORE_RETIRED.DTLB_MISS (Событие 0CH, Umask 01H)

Я ожидал, что выход из этих экспериментов, чтобы быть похожими. Однако я обнаружил, что цифры, указанные в эксперименте (1), почти в два раза больше, чем в эксперименте (2). Я не понимаю, почему это так.

Может ли кто-нибудь помочь пролить свет на это кажущееся несоответствие?

Благодаря

Arka

ответ

4

То, как ожидается, так как первое событие подсчитывает число промахов на всех уровнях TLB, вызванные всеми возможными причинами (нагрузки, магазин, предварительной выборки), в том числе доступ к памяти выполняется умозрительно , в то время как другие два события учитывают только отмененные (то есть не спекулятивные) операции загрузки и хранения, и только те из них, которые не вызвали никакой ошибки.

См. Главу 19.6 тома 3 Руководства разработчика программного обеспечения Intel® 64 и IA-32.

Спасибо,

Стас

+0

Спасибо за ваши комментарии, но я прошу отличаться. Первое событие учитывает только переходы по страницам после промахов во всех TLB (прохождение страницы не запускается, если промахи L1-TLB в L2 TLB). С другой стороны, похоже, что второе событие может включать как пропуски L1, так и L2 TLB. Я также убедился, что предварительные выборки s/w не используются, и вся память предварительно сработала. Единственное, что, вероятно, осталось, - это пропуски DTLB из-за пропусков. Тем не менее, я думал, так как считал, что только «завершенные» проходы страницы не ходят по страницам, которые также заботятся. Я что-то упустил? – Arka

+0

Ну, «завершено» здесь эффективно означает «любой, кто пропустил все уровни TLB», и разница в вашем случае может быть объяснена пропуском, предварительной выборкой HW и, возможно, некоторой неточностью (хотя я не могу это доказать) в первом случае (как это не точное событие, а два других точны). – user2638717

 Смежные вопросы

  • Нет связанных вопросов^_^