Сколько времени нужно, чтобы извлечь одно слово из памяти? - PullRequest
11 голосов
/ 29 июня 2010

Принимая Совет Питера Норвига , я размышляю над вопросом:

Сколько времени занимает извлечение одного слова из памяти с отсутствием кэша и без него?

(Предположим, стандартное оборудование и архитектура. Для упрощения вычислений предположим тактовую частоту 1 ГГц)

Ответы [ 3 ]

15 голосов
/ 29 июня 2010

Похоже, Norvig отвечает на этот вопрос сам :

execute typical instruction         1/1,000,000,000 sec = 1 nanosec
fetch from L1 cache memory          0.5 nanosec
branch misprediction                5 nanosec
fetch from L2 cache memory          7 nanosec
Mutex lock/unlock                   25 nanosec
fetch from main memory              100 nanosec
send 2K bytes over 1Gbps network    20,000 nanosec
read 1MB sequentially from memory   250,000 nanosec
fetch from new disk location (seek) 8,000,000 nanosec
read 1MB sequentially from disk     20,000,000 nanosec
send packet US to Europe and back   150 milliseconds = 150,000,000 nanosec 

В части, где говорится "выполнить типичную инструкцию" = 1 нс, подразумевается процессор с тактовой частотой 1 ГГц (конечно, при условии эффективной конвейеризации)).

Я не знаю, где он берет эту информацию, но я верю, что Питер Норвиг надежен: -)

3 голосов
/ 29 июня 2010

Справедливое резюме здесь , с некоторой неточностью.При написании (2+ года назад) и для ПК среднего уровня того времени, он оценил: доступ к памяти, 60 нс;Кэш L1, 10 нс;Кэш-память второго уровня, 20-30 нс (нет оценок времени доступа к кэш-памяти третьего уровня).Конечно, все это меняется на лот , в зависимости от конкуренции и шаблонов доступа (поскольку слои кэша обычно заполняются "строками" из более медленной памяти, если вы обращаетесь к адресу X, то к адресу X + 1 второй доступ можетнемного быстрее, так как заполнение строки кэша было начато при первом доступе).

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

2 голосов
/ 31 марта 2013

Есть приятная визуализация данных в этой таблице, опубликованных на github.org. Они также имеют "человеческую шкалу" реинтерпретации значений времени там.

enter image description here

...