Информация о задержке иерархии памяти - PullRequest
5 голосов
/ 27 декабря 2011

В разделе «Пример» этого поста автор перечисляет задержки всех компонентов памяти регистра / L1 / L2 / RAM ... Мой вопрос: как вы измеряете (найти в Интернете)Каковы реальные задержки для любого данного чипа?Допустим,

model name  : Intel(R) Core(TM)2 Duo CPU     E4600  @ 2.40GHz
stepping    : 13
cpu MHz     : 1200.000

Я тоже пытался выкопать информацию из руководств Intel, но для меня это огромные вещи, я не знаю, где искать эту информацию.

Спасибо.

Ответы [ 3 ]

11 голосов
/ 02 января 2012

Простой запрос google («задержка кэша процессора Intel») раскрывает интересное исследование Intel: Измерение задержки кэша и памяти, а также пропускной способности ЦП и памяти . В этой статье авторы используют LMbench для выполнения измерений.

Как проводить измерения

Используйте исполняемый двоичный файл с именем «lat_mem_rd» находится в папке «bin» каталога утилиты. Далее используйте следующее командная строка:

taskset 0x1 ./lat_mem_rd –N [x] –P [y] [depth] [stride]

Где [x] равно числу раз, которое процесс запускается перед отчетом задержка. Обычно для точных измерений достаточно установить значение «1». Для опции ‘-P’ [y] равно числу процессов, вызванных для запуска тест. Рекомендация для этого всегда - 1. Достаточно Измерьте задержку доступа только с одним ядром обработки или потоком. [глубина] спецификация указывает, как далеко в памяти будет измерять утилита. Чтобы обеспечить точное измерение, укажите сумму, которая пойдет достаточно далеко за пределами кеша, чтобы не учитывать задержки измерения.

Понимание результатов

Поскольку задержка кэша 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
1 голос
/ 09 марта 2012

Быстрое решение, которое вы можете взломать в соответствии со своими потребностями: http://code.google.com/p/mem-latency/

Измеряет задержку, загружая связанный список разных размеров.

1 голос
/ 05 января 2012

Чтобы сделать измерения, вам нужно сделать это рано, на голом металле, потому что вы не хотите никаких помех (например, изменения тактовой частоты, конфликт шины и т. Д.).

У вас будетчтобы написать немного кода на ассемблере ... на x86 шаги будут:

  • выполнить команду сериализации
  • прочитать счетчик меток времени
  • выполнитьинструкция сериализации
  • выполнить чтение из памяти
  • выполнить команду сериализации
  • снова прочитать счетчик меток времени
  • выполнить команду сериализации
  • сделать математику

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...