Контроль и исправление ошибок памяти

Хотя надежность микросхем памяти велика, тем не менее, в ее работе могут происходить сбои и систематические ошибки, приводящие к искажению информации при записи и считывании. Для предотвращения тяжелых последствий от этого применяют аппаратно-программные средства контроля и исправления ошибок (ECC –Error Checking and Correction).

К

онтроль и исправление ошибок основаны на использовании избыточных кодов, т.е. таких, в которых кроме информационных разрядов добавляются дополнительные разряды контроля. Самым простым вариантом таких кодов с одним контрольным разрядом служит контроль четности (Parity) (рис. 2.22). Обычно контрольный разряд добавляется отдельно для каждого байта записываемых данных.

Контрольный разряд формируется аппаратно при записи байта в память как дополнение до четного числа единиц в записываемом коде, включающем контрольный разряд. Для этого используются схемы контроля, построенные на логических элементах сложения по модулю 2 (рис. 2.23).При считывании из памяти схемы контроля вновь формируют контрольные разряды байтов, которые сравниваются со считанными из памяти контрольными разрядами. Несовпадение свидетельствует об ошибке, что передается в процессор по специальной линии для инициализации программных средств обработки.

Контроль по четности обнаруживает однократные ошибки, но не позволяет их исправить.

В 1948 г. Ричардом Хеммингом предложены коды с обнаружением и исправлением ошибок. В кодах Хемминга количество контрольных разрядов зависит от длины контролируемых кодов и числа исправляемых ошибок. В качестве примера рассмотрим код Хемминга с обнаружение и исправлением однократных ошибок для 16-тиразрядного двоичного кода.

Разряды корректирующего кода нумеруются слева на право, начиная с 1. Все разряды, номера, которых равны какой-либо степени числа 2, являются контрольными, а остальные используются как информационные. Так для 16-тиразрядного двоичного кода будет добавлено еще 5 контрольных разрядов по четности с номерами 1, 2, 4, 8, 16 (рис. 2.24).

 

 

 

Рис. 2.24

 

Каждый контрольный разряд используется для контроля определенных разрядов корректирующего кода, включая и сам этот разряд, как это показано в
табл. 2.2.

 

Таблица 2.2

Контрольный разряд Правило Контролируемые разряды
через 1 по 1 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21
через 2 по 2 2, 3, 6, 7, 10, 11, 14, 15, 18, 19
через 4 по 4 4, 5, 6, 7, 12, 13, 14, 15, 20, 21
через 8 по 8 8, 9, 10, 11, 12, 13, 14, 15
через 16 по 16 16, 17, 18, 19, 20, 21

 

Также как и при контроле по четности, контрольные разряды формируются при записи в память и при чтении. Если при чтении нет совпадения хотя бы одного контрольного разряда, то номер разряда, в котором произошла ошибка, находится суммированием номеров всех контрольных разрядов, в которых нет совпадения. Ошибка исправляется инвертированием значения найденного таким образом разряда с ошибкой.

Рассмотренный метод контроля значительно повышает надежность, но заметно увеличивает объем памяти. Применяется в вычислительных системах высокой ответственности.