Я пытаюсь решить между двумя алгоритмами. Один записывает 8 байтов (два выровненных 4-байтовых слова) в 2 строки кэша, а другой записывает 3 целых строки кэша.
Если процессор записывает только измененные 8 байтов в память, тогда первый алгоритм использует гораздо меньшую пропускную способность памяти: 8 байт против 192 байт. Если ЦП пишет целые строки кэша, разница между 128 и 192 байтами менее впечатляющая.
Итак, как процессор Intel Xeon перезаписывает память? Вы будете удивлены, как трудно найти ответ в Google на то, что должно быть хорошо известно.
Как я понимаю, записи идут в буфер хранилища, а затем в кеш. Они могут быть записаны только в память, когда грязная строка кеша выведена из кеша, но разве Intel отслеживает, какие части строки кэша грязны, или просто сбрасывает все это? Я скорее сомневаюсь, что они отслеживают вещи ниже детализации кеш-строки. Я также был бы очень удивлен, если что-нибудь пойдет в память до выключения линии кэша.