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