http://www.opennet.ru/opennews/art.shtml?num=41340
Пример ассемблерного кода, который может привести к повреждению смежных битов памяти (простой цикл с чтением содержимого памяти и очисткой кэша, чтение двух значений по разным адресам обусловлено необходимостью инициирования закрытия линии WL, если постоянно читать только одну ячейку линия WL остаётся открытой и эффект не проявляется):
loop: mov X, %eax ; Читаем значения адресов X и Y, mov Y, %ebx ; сохраняем значения в регистрах и кэше clflush (X) ; Чистим содержимое кэша clflush (Y) mfence ; Убеждаемся, что данные точно вычищены из кэша jmp loop
Причина в том, что при частом чтении соседних ячеек памяти заряд конденсатора может слишком сильно упасть и цикла регенерации оказаться недостаточно для его восстановления. Утверждается, что эта проблема характерна для всей совремённой DRAM-памяти, особенно для выпущенной позже 2011 года.