Проверка четности в оперативной памяти — это сохранение избыточного бита четности , представляющего четность (нечетность или четность) небольшого объема компьютерных данных (обычно одного байта), хранящихся в оперативной памяти , и последующее сравнение сохраненной и вычисленной четности для обнаружения ошибки данных .
Первоначально бит четности хранился в дополнительных отдельных микросхемах памяти; с появлением подключаемых модулей DIMM , SIMM и т. д. они стали доступны в версиях без контроля четности и с контролем четности (с дополнительным битом на байт , что позволяет хранить 9 бит на каждые 8 бит фактических данных).
Ранние компьютеры иногда требовали использования ОЗУ с контролем четности, и проверку четности нельзя было отключить. Ошибка четности обычно приводила к остановке машины с потерей несохраненных данных; это обычно лучший вариант, чем сохранение поврежденных данных. Логическая ОЗУ с контролем четности , также известная как ОЗУ с поддельной четностью, является ОЗУ без контроля четности, которая может использоваться в компьютерах , которым требуется ОЗУ с контролем четности. Логическая ОЗУ с контролем четности пересчитывает всегда действительный бит четности каждый раз, когда байт считывается из памяти, вместо того, чтобы сохранять бит четности при записи в память; вычисленный бит четности, который не покажет, были ли данные повреждены (отсюда и название «поддельная четность»), предоставляется логике проверки четности. Это средство использования более дешевой 8-битной ОЗУ в системе, разработанной для использования только 9-битной ОЗУ с контролем четности.
В 1970-80-х годах надежность RAM часто была неидеальной; в частности, 4116 DRAM, которые были отраслевым стандартом с 1975 по 1983 год, имели значительный уровень отказов, поскольку они использовали тройное напряжение (-5, +5 и +12), что приводило к высоким рабочим температурам. К середине 1980-х годов они уступили место DRAM с одним напряжением, таким как 4164 и 41256, что привело к повышению надежности. Однако RAM не достигала современных стандартов надежности до 1990-х годов. С тех пор ошибки стали менее заметными, поскольку простая четность RAM вышла из употребления; они либо невидимы, поскольку не обнаруживаются, либо исправляются невидимо с помощью ECC RAM. Современная RAM, как полагают, с большим основанием, надежна, а RAM с обнаружением ошибок в значительной степени вышла из употребления для некритических приложений. К середине 1990-х годов большинство DRAM отказались от проверки четности, поскольку производители были уверены, что она больше не нужна. Некоторые машины, поддерживающие четность или ECC, позволяют включать или отключать проверку в BIOS , что позволяет использовать более дешевую оперативную память без контроля четности. Если используется оперативная память с контролем четности, чипсет обычно использует ее для исправления ошибок, а не останавливает машину при однобитовой ошибке контроля четности.
Однако, как обсуждалось в статье о памяти ECC , ошибки, хотя и не являются повседневными событиями, не являются пренебрежимо редкими. Даже при отсутствии производственных дефектов естественное излучение вызывает случайные ошибки; тесты на многих серверах Google показали, что ошибки памяти не были редкими событиями, и что частота ошибок памяти и диапазон частот ошибок в различных модулях DIMM были намного выше, чем сообщалось ранее. [1]
Простая проверка четности go/no go требует, чтобы память имела дополнительные избыточные биты сверх тех, которые необходимы для хранения данных; но если доступны дополнительные биты, их можно использовать для исправления, а также обнаружения ошибок. Более ранняя память, используемая, например, в IBM PC/AT ( память FPM и EDO ), была доступна в версиях, которые поддерживали либо отсутствие проверки, либо проверку четности [2] (в более ранних компьютерах, которые использовали отдельные чипы RAM, а не модули DIMM или SIMM , для хранения битов четности использовались дополнительные чипы); если компьютер обнаруживал ошибку четности, он отображал сообщение об этом и останавливался. Модули SDRAM и DDR , которые заменили более ранние типы, обычно доступны либо без проверки ошибок, либо с ECC (полная коррекция, а не только четность). [2]
Пример ошибки в одном бите, которая будет проигнорирована системой без проверки ошибок, остановит машину с проверкой четности или будет незаметно исправлена ECC: один бит застрял на 1 из-за неисправного чипа или был изменен на 1 из-за фонового или космического излучения; загружается электронная таблица, хранящая числа в формате ASCII, и число «8» сохраняется в байте, который содержит застрявший бит в качестве восьмого бита; затем в электронную таблицу вносится еще одно изменение, и она сохраняется. Однако «8» (двоичное значение 00111000) стало «9» (00111001).
Если сохраненная четность отличается от четности, вычисленной на основе сохраненных данных, по крайней мере один бит должен был быть изменен из-за повреждения данных. Необнаруженные ошибки памяти могут иметь результаты от необнаруживаемых и без последствий до постоянного повреждения сохраненных данных или сбоя машины. В случае домашнего ПК, где целостность данных часто воспринимается как не имеющая большого значения — определенно верно для, скажем, игр и веб-браузинга, в меньшей степени для интернет-банкинга и домашних финансов — нечетная память является доступным вариантом. Однако, если требуется целостность данных, четная память остановит компьютер и не позволит поврежденным данным повлиять на результаты или сохраненные данные, хотя и потеряет промежуточные несохраненные данные и предотвратит использование до замены неисправной оперативной памяти. За счет некоторых вычислительных накладных расходов, незначительно влияющих на современные быстрые компьютеры, обнаруженные ошибки могут быть исправлены — это становится все более важным на сетевых машинах, обслуживающих множество пользователей.
ОЗУ с кодом коррекции ошибок (ECC) или кодом исправления ошибок может обнаруживать и исправлять ошибки . Как и в случае с ОЗУ с контролем четности, необходимо хранить дополнительную информацию и выполнять больше обработки, что делает ОЗУ с контролем четности более дорогой и немного более медленной, чем ОЗУ без контроля четности и логической четности. Этот тип памяти с контролем четности особенно полезен для любого приложения, где важны надежность или время безотказной работы: сбойные биты в слове памяти обнаруживаются и исправляются на лету без какого-либо влияния на приложение. Возникновение ошибки обычно регистрируется операционной системой для анализа техническим ресурсом. В случае, если ошибка является постоянной, простой сервера может быть запланирован для замены неисправного блока памяти.
В 1991 году Ван выиграл судебный процесс против Toshiba и NEC по патентам на SIMM, основанный частично на его заявлении об использовании девятого чипа RAM для четности. [3] [4] В ответ на это SIMM с тремя чипами вместо девяти отдельных чипов для каждого бита стали популярными в соответствии с теорией, что они не нарушали. Однако переход от девятичиповых SIMM к трехчиповым SIMM вызвал некоторые проблемы с совместимостью. [5] Год спустя, в 1992 году, Ван также подал в суд на Mitsubishi , но Ван в конечном итоге не выиграл в этом, поскольку суды постановили в 1997 году, что лицензионное соглашение было заключено. [6] В конце концов, к концу 1990-х годов DIMM вытеснили SIMM на рынке, и DIMM не стали предметом судебных исков Вана.