Ширина кэша для каждого тика для современных процессоров

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

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

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

Ответ 1

Для nehalem: 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.

Задержка (тактовые сигналы), некоторые измеряются CPU-Z latencytool или lmbench lat_mem_rd - оба используют длинный связанный список, чтобы правильно измерить современные ядра из-за порядка, такие как 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, например. для Хасуэлла: http://www.7-cpu.com/cpu/Haswell.html

Подробнее о программе lat_mem_rd находится в справочная страница или здесь, в формате SO..

Ответ 2

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

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