Большинство доступных настольных (дешевых) платформ x86 теперь не имеют поддержки памяти ECC (Проверка ошибок и исправление). Но скорость ошибок бит-флип памяти все еще растет (не лучший поток SO, Large масштабное исследование CERN 2007 "Целостность данных" : "Скорость битовых ошибок 10 -12 для их модулей памяти... наблюдаемая частота ошибок на 4 порядка ниже, чем ожидалось"; "Ошибки DRAM в дикой природе: исследование крупномасштабного поля" ). Для текущего аппаратного обеспечения с интенсивной нагрузкой (8 ГБ/с чтения) это означает, что однократная флип может возникать каждую минуту (10 -12 поставщиков BER от CERN07) или один раз в два дня (10 -16 BER от CERN07). В Google09 говорится, что может быть до 25000-75000 однобитовых FIT на Мбит (неудачи во времени в миллиард часов), что равно 1 - 5 бит в час для 8 ГБ ОЗУ ( "средние исправляемые частоты ошибок 2000- 6000 на ГБ в год" ).
Итак, я хочу знать, возможно ли в какой-либо системе добавить какое-либо обнаружение ошибок программного обеспечения (проверьте как память пользователя, так и ядро). Например, создайте патч для ядра Linux и/или системный компилятор, чтобы добавить некоторые контрольные суммы на каждую страницу памяти и попытаться обнаружить повреждение памяти (бит-флип) путем регулярной перекомпоновки контрольных сумм?
Например, можем ли мы видеть все записи в памяти (как из пространства пользователя, так и из ядра), чтобы различать предполагаемые изменения памяти из бит-бит в памяти? Или мы можем каким-то образом использовать все коды с помощью какого-то помощника?
Я понимаю, что любой вид программной памяти ECC может стоить большой производительности и не будет улавливать все ошибки, но я думаю, что может быть полезно обнаружить по крайней мере некоторые бит-флешки памяти раньше, прежде чем они будут повторно использованы позже вычислений или хранения на жесткий диск.
Я также понимаю, что лучший способ защиты данных от битфлипсов памяти - переключиться на аппаратное обеспечение ECC, но на большинстве ПК все еще есть не-ECC.