Разница между LLCMisses и CacheMisses на счетчиках оборудования
В чем разница между LLCMisses и CacheMisses?
0 ответов
Значение, возвращаемое для обоих счетчиков, обычно должно быть одинаковым.
Счетчики, доступные в BenchmarkDotNet, предоставляются инфраструктурой Windows ETW. К сожалению, насколько мне известно, Microsoft не предлагает какой-либо конкретной информации ни по одному из них, но мы можем разумно сделать некоторые выводы из тех, которые мы видим.
В системах Intel, для которых я видел полные списки источников PMC, список заканчивается 8 записями с последовательными идентификаторами. Первые семь из этих восьми (UnhaltedCoreCycles
, InstructionRetired
, UnhaltedReferenceCycles
, LLCReference
, LLCMisses
, BranchInstructionRetired
, BranchMispredictsRetired
) почти точно соответствуют названиям и порядку семи счетчиков событий Intel Architectural Performance Event (подробности см. в главе "Мониторинг производительности" Руководства разработчика программного обеспечения Intel).
Последний из 8, LbrInserts
, вероятно, относится к функции мониторинга производительности Intel Last Branch Record. Таким образом, представляется разумным предположить, что эти источники напрямую сопоставляются с конкретными счетчиками x86, и они не будут присутствовать на архитектурах без них.
Из других 5 перечисленных источников TotalIssues
возвращает те же значения, что и InstructionRetired
; BranchInstructions
совпадения BranchInstructionRetired
, CacheMisses
совпадения LLCMisses
, BranchMispredictions
совпадения BranchMispredictsRetired
, а также TotalCycles
совпадения UnhaltedCoreCycles
.
Предположительно, в других архитектурах ЦП определены свои собственные источники, специфичные для архитектуры, причем эти источники сопоставлены с разными счетчиками, специфичными для архитектуры, например BranchMispredictions
на ARM может соответствовать BR_MIS_PRED
counter, который не имеет той же семантики, что и Intel Branch Mispredicts Retired, но все же представляет концепцию неверного предсказания ветвей.
Итак, фактический ответ таков: если вы распространяете программное обеспечение с предопределенным значением, вы выбираете LLCMisses
если вам нужен конкретный смысл счетчика Intel. Если вам просто нужна концепция промаха кеша, вы выбираетеCacheMisses
так что он также может работать на других архитектурах с другими счетчиками производительности. И если вы просто запускаете его локально, не имеет значения, какой вы выберете.