Ответ 1
Простой google query ( "задержка кэша процессора Intel" ) показывает интересное исследование Intel: Измерение кэша и задержки памяти и пропускной способности процессора до пропускной способности памяти. В этой статье авторы используют LMbench для выполнения измерений.
Как принимать измерения
Используйте исполняемый двоичный файл с именем "lat_mem_rd" найденный в папке "bin" в каталоге служебных программ. Затем используйте следующие командной строки:
taskset 0x1 ./lat_mem_rd –N [x] –P [y] [depth] [stride]
Где [x] равно количеству раз, когда процесс запускается перед отчетностью задержка. Обычно для точных измерений достаточно установить значение "1". Для параметра "-P" [y] равно числу процессов, вызываемых для запуска тест. Рекомендация для этого всегда "1. Достаточно измерьте задержку доступа только с одним ядром обработки или потоком. [depth] указывает, насколько далеко в памяти будет измерена утилита. Чтобы обеспечить точное измерение, укажите сумму, которая будет идти достаточно далеко от кеша, так что он не влияет на задержку Измерения.
Понимание результатов
Так как латентность L1 и L2 привязана к часам ядра, частота процессора играет роль в том, как быстрый доступ к памяти происходит в реальном времени. Это означает, что число ядер часы остаются неизменными независимо от частоты ядра. Для сопоставимых результат, лучше всего преобразовать задержку, данную LMBench из наносекунд в процессорные часы. Для этого умножьте задержку на частоту процессора.
Time(seconds) * Frequency(Hz) = Clocks of latency
Поэтому, если процессор 2,4 ГГц занимает 17 нс для доступа к определенному уровню кеш, это преобразуется в:
17 x 10-18 seconds * 2400000000 Hz = 17 ns * 2.4 GHz ≈ 41 Clocks