Можем ли мы измерить успешную пересылку магазина с помощью счетчиков производительности Intel?

Можно ли измерить количество успешных операций пересылки в хранилище, используя счетчики производительности на последних чипах Intel x86?

Я вижу события для ld_blocks.store_forward какая мера провалилась в магазине, но мне ясно, можно ли измерить успешный случай.

2 ответа

Я не вижу ничего больше, чем вы сделали для SKL, но у старых уархов может быть больше деталей:

Для Core2 (то, что Intel вводит в заблуждение микроархитектурой Core), документация по оптимизации документируется (в разделе B.7 СОБЫТИЯ ДЛЯ СОБЫТИЙ МИКРОАРХИТЕКТУРЫ INTEL Core)

B.7.5.2 Псевдоним 4K и обнаружение блока пересылки магазина

  1. Нагрузки, заблокированные перекрывающимся магазином LOAD_BLOCK.OVERLAP_STORE/CPU_CLK_UNHALTED.CORE

Псевдонимы 4K и блок пересылки магазина - это два разных сценария, в которых нагрузки блокируются предыдущими хранилищами по разным причинам. Оба сценария обнаруживаются одним и тем же событием: LOAD_BLOCK.OVERLAP_STORE, Высокое значение "Нагрузки, заблокированные перекрывающейся скоростью хранилища" указывает на то, что либо псевдоним 4K, либо блок пересылки хранилища могут повлиять на производительность.

Это может считаться остановленным и успешным продвижением магазина. (И псевдоним 4k, так что вам нужно избегать этого или вычитать его.)

B.7.5.3 Блокировка загрузки предшествующими магазинами

  1. Грузы заблокированы неизвестным адресом магазина Rate: LOAD_BLOCK.STA / CPU_CLK_UNHALTED.CORE

Высокое значение "Нагрузки, заблокированные неизвестной скоростью адреса хранилища" указывает на то, что загрузки часто блокируются предшествующими хранилищами с неизвестным адресом и подразумевает снижение производительности.

  1. Нагрузки, заблокированные неизвестным хранилищем данных LOAD_BLOCK.STD / CPU_CLK_UNHALTED.CORE

Высокое значение "Нагрузки, заблокированные неизвестной скоростью передачи данных магазина" указывает на то, что загрузки часто блокируются предшествующими хранилищами с неизвестными данными и подразумевает снижение производительности.

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

Нет задокументированного события для подсчета количества успешных операций пересылки магазина. Тем не менее, я экспериментально определил ряд недокументированных событий для этой цели на Haswell и Broadwell. В частности, любое событие с кодом события 0x2 и нечетным значением для umask (любое нечетное число, такое как 1), по-видимому, очень точно представляет событие успешной пересылки в хранилище, то есть число соответствует ожидаемому, а стандартное отклонение практически равно нулю., Я думаю, что вы можете использовать те же события на более поздних (и даже более ранних) микроархитектурах. Опять же, ни одно из этих событий не задокументировано.

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