К чему скорость кэша получает доступ для современных центральных процессоров? Сколько байтов может быть считано или записано из памяти каждый такт системных часов процессора Intel P4, Core2, Corei7, AMD?
Ответ с обоими теоретическими (ширина ld/sd единицы с ее пропускной способностью в uOPs/tick) и практические числа (даже memcpy тесты скорости или ПОТОКОВЫЙ сравнительный тест), если таковые имеются.
PS это - вопрос, связанный с максимальным уровнем инструкций по загрузке и хранению в ассемблере. Может быть теоретический уровень загрузки (все Инструкции На Галочку являются самыми широкими загрузками), но процессор может дать только часть такого, практический предел загрузки.
Для 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.
Латентность (тактовые импульсы), некоторые измеряются с помощью 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 web-site, например, для Haswell: http://www.7-cpu.com/cpu/Haswell.html
Подробнее о программе lat_mem_rd можно узнать на ее man-странице или здесь на SO.
Самое широкое чтение/запись - 128 бит (16 байт) SSE load/store. Кэши L1/L2/L3 имеют различную пропускную способность и задержки, которые, конечно, зависят от конкретного процессора. Типичная задержка L1 составляет 2 - 4 такта на современных процессорах, но обычно вы можете выдать 1 или 2 инструкции загрузки за такт.
Я подозреваю, что где-то здесь скрывается более конкретный вопрос - чего вы на самом деле пытаетесь достичь? Вы просто хотите написать максимально быстрый memcpy?