Можно ли рассчитать задержку кэша на основе результата memtest? - PullRequest
1 голос
/ 06 мая 2019

Я проверил несколько сайтов, на которых производитель помещал информацию о L1, L2, L3, времени доступа к основной памяти в наносекундах или циклах: информация о небесном потоке

  • Можно ли рассчитать это, используя результат из memtest?
  • Если нет, то как тогда рассчитывается?

Я могу запускать внешние инструменты, однако они проводят некоторое тестирование с использованием кода C / Assembler - это единственный способ сделать это?

Пример вывода из memtest86:

Intel i7 @ 3.6GHz

CLK/TEMP      3645 mhz   44C
L1 Cache:     64K        291.81 GB/s
L2 Cache:     256K       125.52 GB/s
L3 Cache:     12288K     56.56 GB/s
Memory:       31.8 GB    20.84 GB/s

RAM Info: PC4-25600 DDR4 XMP 3200MHz /  16-18-18-38 / G-Skill INtl F4-3200C

1 Ответ

2 голосов
/ 06 мая 2019

Можно ли рассчитать это, используя результат memtest?

Нет.

Если нет, то как рассчитывается в этом случае?

Исходный код инструментов, используемых для получения результатов, показанных на https://www.7 -cpu.com / , является общедоступным, его можно найти по адресу https://www.7 -cpu.com / utils.html .В частности, инструмент MemLat используется для измерения задержки доступа к каждому уровню иерархии памяти.

Основным методом измерения задержки является использование отслеживания указателя, когда создается связанный список из 64-байтовых элементов икаждый элемент инициализируется, чтобы в основном указывать на другой случайно выбранный элемент (чтобы победить аппаратные средства предварительной выборки).Если общий размер связанного списка помещается в кэш L1, то путем итерации по списку достаточно большое количество раз можно измерить задержку L1 путем деления общего времени выполнения на количество элементов, к которым был осуществлен доступ.Этот микробенчмарк можно упростить, отключив аппаратные средства предварительной выборки , чтобы не было необходимости в рандомизации.Рекомендуется использовать страницы объемом 1 ГБ (или не менее 2 МБ) вместо страниц размером 4 КБ, чтобы гарантировать, что весь список будет выделен из непрерывного фрагмента физической памяти.В противном случае существует вероятность того, что несколько страниц размером 4 КБ могут быть сопоставлены с одним и тем же набором кэша, что приведет к пропускам конфликтов.

Причина, по которой работает погоня за указателями, заключается в том, что современные процессоры Intel и AMD не используют значение прогнозирование техники.

Существует еще один способ измерения задержки.Вы можете использовать RDTSC / RDTSCP вокруг одной инструкции доступа к памяти, по существу рассматривая единственный доступ к памяти как событие с коротким истекшим временем.См .: Измерение задержки памяти со счетчиком меток времени .

...