Использование 32-разрядных инструкций push/pop в режиме x64 - Assembler 

всё правильно - он считывает в кэш всю 64-байтную линейку, куда планируется запись байта (чтение всегда в пакетном режиме с

BurstLength=8

). Только делается это задолго до того, как EIP дойдёт до соответствующей инструкции типа

stosb

. Поэтому я и говорю, что данные уже у проца.

Если логика обнаруживает, что код планирует записать всего 1 байт, она может отключить

пакетный режим

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

Вернуться к обсуждению:

Использование 32-разрядных инструкций push/pop в режиме x64 Assembler