Пропускная способность кэша на такт для современных процессоров - PullRequest
15 голосов
/ 01 марта 2010

Какова скорость доступа к кешу для современных процессоров? Сколько байт может быть прочитано или записано из памяти на каждый такт процессора Intel P4, Core2, Corei7, AMD?

Пожалуйста, ответьте как теоретическим (ширина единицы ld / sd с его пропускной способностью в uOPs / тик), так и практическими числами (даже тесты скорости memcpy или тест STREAM), если таковые имеются.

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

Ответы [ 2 ]

7 голосов
/ 01 марта 2010

Для нехалем: rolfed.com/nehalem/nehalemPaper.pdf

Each core in the architecture has a 128-bit write port and a
128-bit read port to the L1 cache. 

128 бит = 16 байт / считывание часов А ТАКЖЕ 128 бит = 16 байт / тактовая запись (Могу ли я объединить чтение и запись в одном цикле?)

The L2 and L3 caches each have a 256-bit port for reading or writing, 
but the L3 cache must share its port with three other cores on the chip.

Можно ли использовать порты чтения и записи L2 и L3 в один такт?

Each integrated memory controller has a theoretical bandwidth
peak of 32 Gbps.

Задержка (тактовые тики), некоторые измеряются с помощью latencytool CPU-Z или lat_mem_rd lmbench - оба используют длинный просмотр списка по списку для правильного измерения современных неработающих ядер, таких как Intel Core i7

           L1     L2     L3, cycles;   mem             link
Core 2      3     15     --           66 ns           http://www.anandtech.com/show/2542/5
Core i7-xxx 4     11     39          40c+67ns         http://www.anandtech.com/show/2542/5
Itanium     1     5-6    12-17       130-1000 (cycles)
Itanium2    2     6-10   20          35c+160ns        http://www.7-cpu.com/cpu/Itanium2.html
AMD K8            12                 40-70c +64ns     http://www.anandtech.com/show/2139/3
Intel P4    2     19     43          200-210 (cycles) http://www.arsc.edu/files/arsc/phys693_lectures/Performance_I_Arch.pdf
AthlonXP 3k 3     20                 180 (cycles)     --//--
AthlonFX-51 3     13                 125 (cycles)     --//--
POWER4      4     12-20  ??          hundreds cycles  --//--
Haswell     4     11-12  36          36c+57ns         http://www.realworldtech.com/haswell-cpu/5/    

И хорошим источником данных о задержке является веб-сайт 7cpu , например. для Haswell: http://www.7 -cpu.com / cpu / Haswell.html

Подробнее о программе lat_mem_rd можно узнать на странице man или здесь, на SO .

7 голосов
/ 01 марта 2010

Самое широкое чтение / запись - 128-битная (16-байтовая) загрузка / сохранение SSE. Кэши L1 / L2 / L3 имеют разную пропускную способность и задержки, и, конечно, они зависят от процессора. Типичная задержка L1 составляет 2–4 такта на современных процессорах, но обычно вы можете выдавать 1 или 2 инструкции загрузки за такт.

Я подозреваю, что где-то здесь скрывается более конкретный вопрос - чего вы на самом деле пытаетесь достичь? Вы просто хотите написать максимально быстрый memcpy?

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