Я занимаюсь разработкой своего рода "эмулятора кэша", и мне нужно знать, каков размер блока передачи между основной памятью и кэшем L2 для процессора Core 2 Duo. Кто-нибудь знает это? Благодарю.
3 ответа
Микроархитектура
Процессоры "Core 2 Duo" выполнены с использованием микроархитектуры Core.
Детали микроархитектуры
Согласно документации Intel (том 1, 2-15, стр. 49 в PDF), кэш L2 имеет 256-битный внутренний путь данных, так что это будет от кэша L2 до L1 и выборки / декодирования инструкций.
Несколькими страницами позже (том 1, 2-32) Intel Core 2 Duo E6850 имеет внутренний канал передачи данных со скоростью 10,6 ГБ / с, когда ядро процессора находится на частоте 3 ГГц с частотой FSB 1333 МГц.
ibus-transfer-amt/bus-clock = (256 bits / (8 bits / byte))
= 32 bytes/clock
bytes-per-sec = (10.6 GB) * (2^30 bytes/GB)
= 11,381,663,334 bytes/sec
ibus-clk-fq = (bytes-per-sec) / (ibus-transfer-amt/bus-clock)
≈ 355,676,979.19 Hz
≈ 355.7 MHz
fsb-divisor = (1333 MHz) / (355.7 MHz)
≈ 3.75
Документация Intel также перечисляет FSB для этого процессора на частоте 1333 МГц и 10,6 ГБ / с, так что вы сможете рассчитать это аналогичным образом.
Если ваш процессор совместим с 64 битами, то каждый канал имеет ширину 64 бита. Двухканальная память DDR2 должна иметь 128-битный путь к процессору. Но шина между процессором и его кешем l2 должна быть шириной 64 бита.
Хорошо, я обнаружил, что в жаргоне x86 "линия кеша" L2 - это и единица распределения памяти в кешах L2, и единица передачи между RAM и L2.
В Core 2 Duo строка кэша имеет ширину 64 байта, так что это отвечает на мой вопрос :)