|
||
2 3 6 Глава 5. Память
|
||
|
||
бы арбитража при одномоментном обращении к одной и той же ячейке. В то же время есть и существенные отличия.
Первое состоит в том, что у микросхемы нет входов для указания адреса ячейки, занесение и считывание данных производится в порядке их поступления через одну входную точку и одну выходную.
Второе отличие связано с необходимостью слежения за состоянием очереди. Для этого в микросхеме имеются регистры-указатели адресов начала и конца очереди, а также специальные флаги, которые указывают на две ситуации: отсутствие данных (в этом случае блокируется считывание из микросхемы) и полное заполнение памяти (блокируется запись).
Обнаружение и исправление ошибок
При работе с полупроводниковой памятью не исключено возникновение различного рода отказов и сбоев. Причиной отказов могут быть производственные дефекты, повреждение микросхем или их физический износ. Проявляются отказы в том, что в отдельных разрядах одной или нескольких ячеек постоянно считыва-ется 0 или 1, вне зависимости от реально записанной туда информации. Сбой — это случайное событие, выражающееся в неверном считывании или записи информации в отдельных разрядах одной или нескольких ячеек, не связанное с дефектами микросхемы. Сбои обычно обусловлены проблемами с источником питания или с воздействием альфа-частиц, возникающих в результате распада радиоактивных элементов, которые в небольших количествах присутствуют практически в любых материалах. Как отказы, так и сбои крайне нежелательны, поэтому в большинстве систем основной памяти содержатся схемы, служащие для обнаружения и исправления ошибок.
Вне зависимости от того, как именно реализуется контроль и исправление ошибок, в основе их всегда лежит введение избыточности. Это означает, что контролируемые разряды дополняются контрольными разрядами, благодаря которым и возможно детектирование-ошибок, а в ряде методов — их коррекция. Общую схему обнаружения и исправления ошибок иллюстрирует рис. 5.15.
На рисунке показано, каким образом осуществляются обнаружение и исправление ошибок. Перед записью М-разрядных данных в память производится их обработка, обозначенная на схеме функцией «fi>, в результате которой формируется добавочный Ζ-разрядный код. В память заносятся как данные, так и этот вычисленный код, то есть (М + ^-разрядная информация. При чтении информации повторно формируется Ζ-разрядный код, который сравнивается с аналогичным кодом, считанным из ячейки. Сравнение приводит к одному из трех результатов:
• Не обнаружено ни одной ошибки. Извлеченные из ячейки данные подаются на выход памяти.
• Обнаружена ошибка, и она может быть исправлена. Биты данных и добавочного кода подаются на схему коррекции. После исправления ошибки в М-разрядных данных они поступают на выход памяти.
• Обнаружена ошибка, и она не может быть исправлена. Выдается сообщение о неисправимой ошибке.
|
||
|
||
|
||
Обнаружение и исправление ошибок 2 3 7
|
||
|
||
|
||
|
||
Рис. 5.15 Общая схема обнаружения и исправления ошибок [200]
|
||
|
||
Коды, используемые для подобных операций, называют корректирующими кодами или кодами с исправлением ошибок.
Простейший вид такого кода основан на добавлении к каждому байту информации одного бита паритета. Бит паритета — это дополнительный бит, значение которого устанавливается таким, чтобы суммарное число единиц в данных, с учетом этого дополнительного разряда, было четным (или нечетным). В ряде систем за основу берется четность, в иных — нечетность. Для 64-разрядного слова требуется восемь битов паритета, то есть ячейка памяти должна хранить 36 разрядов. При записи слова в память для каждого байта формируется бит паритета. Это может быть сделано с помощью схемы в виде дерева, составленного из схем сложения по модулю 2. При чтении из памяти выполняется аналогичная операция над считанными информационными битами, а ее результат сравнивается с битом паритета, вычисленным при записи и хранившимся в памяти. Метод позволяет обнаружить ошибку, если исказилось нечетное количество битов. При четном числе ошибок метод неработоспособен. К сожалению, фиксируя ошибку, данный способ кодирования не может указать на ее местоположение, что позволило бы внести исправления, в силу чего его называют кодом с обнаружением ошибки (ED С — Error Detection Code).
В основе корректирующих кодов лежит достаточно простая идея [39]. Для контроля двоичного информационного кода длиной Мбит добавим к ней Хдополни-тельных контрольных разрядов так, что общая длина последовательности теперь будет равна М + К разрядам. В этом случае из возможных N= Т+к комбинаций интерес представляют только L = Т последовательностей, которые называют разрешенными. Оставшиеся iV- L последовательностей назовем запрещенными. Если при обработке (записи в память, считывании или передаче) разрешенной кодовой последовательности произойдут ошибки и возникнет одна из запрещенных последовательностей, то тем самым эти ошибки обнаруживаются. Если же ошибки превратят одну разрешенную последовательность в другую, то такие ошибки не могут быть обнаружены. Для исправления ошибок необходимо произвести разбиение множества запрещенных последовательностей на L непересекающихся подмно-
|
||
|
||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 3 8 Глава 5. Память
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
жеств и каждому подмножеству поставить в соответствие одну из разрешенных последовательностей. Тогда, если была принята некоторая запрещенная последовательность, входящая в одно из подмножеств, считается, что передана разрешенная последовательность, соответствующая этому подмножеству, производится замена, чем и исправляется возникшая ошибка.
Простейший вариант корректирующего кода также может быть построен на базе битов паритета. Для этого биты данных представляются в виде матрицы, к каждой строке и столбцу которой добавляется бит паритета. Для 64-разрядных данных этот подход иллюстрирует табл. 5.1 [200]. Здесь D — биты данных, С— столбец битов паритета строк, К— строка битов паритета столбцов, Р— бит паритета, кон- ' тролирующий столбец С и строку К. Таким образом, к 64 битам данных нужно добавить 17 бит паритета: по 8 бит на строки и столбцы и один дополнительный бит для контроля строки и столбца битов паритета. Если в одной строке и одном столбце обнаружено нарушение паритета, для исправления ошибки достаточно просто инвертировать бит на пересечении этих строки и столбца. Если ошибка паритета выявлена только в одной строке или только одном столбце либо одновременно в нескольких строках и столбцах, фиксируется многобитовая ошибка и формируется признак невозможности коррекции.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Таблица 5.1. Формирование коррелирующего кода для 64-битовых данных
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Недостаток рассмотренного приема в том, что он требует большого числа дополнительных разрядов. Более эффективным представляется код, предложенный Ричардом Хэммингом и носящий его имя (код Хэмминга). Логику этого кода для четырехразрядных слов (М=4) иллюстрирует диаграмма Венна1, приведенная на рис. 5.16
Три пересекающихся окружности образуют семь сегментов. Четырем битам данных назначаются внутренние сегменты (см. рис. 5.16, а), а остальные сегменты заполняются битами паритета. Биты паритета выбираются таким образом, чтобы
1 Диаграмма Венна — это графическое представление операций над множествами, где множества обозначаются замкнутыми областями, содержащими.внутри.себя все элементы этих множеств. Диаграмма используется для отображения логических отношений между элементами множеств. Так, заштрихованная область на рис. 5.16, г есть представление функции пересечения множеств А, Б и В (математически это записывается как А п Б п В).
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||
Обнаружение и исправление ошибок 2 3 9
|
|||
|
|||
|
|
||
|
|||
|
|
||
|
|||
Рис. 5.16. Иллюстрация кодаХэмминга для четырехразрядного слова
|
|||
|
|||
общее число единиц в каждой окружности было четным (см. рис. 5.16,6). Так, поскольку окружность А содержит одну единицу, бит паритета для нее принимается равным 1. Теперь, если в результате ошибки изменится один из битов данных (см. рис. 5.16, в), это легко выявить. Путем проверки паритета обнаруживаются несоответствия в окружностях А и В. Для окружности Б несоответствия нет. Только один из семи сегментов присутствует в окружностях А и В и отсутствует в Б, и ошибка может бьпь исправлена за счет изменения бита в этом сегменте (см. рис. 5.16, г).
Для пояснения концепции, положенной в основу кода Хэмминга, построим код, обнаруживающий и исправляющий однобитовые ошибки в 8-разрядных словах (пример взят из [47]).
Сначала определим требуемую длину корректирующего кода. В соответствии с рис. 5.15, на вход схемы сравнения поступают два Ζ-разрядных значения. Сравнение производится путем поразрядной операции «исключающее ИЛИ» (сложение по модулю 2) над входными кодами. Результатом является так называемое слово синдрома. В зависимости от того, было ли совпадение входных кодов или нет, соответствующий бит синдрома будет равен 0 или 1.
Слово синдрома состоит из ^разрядов, то есть его возможные значения лежат в диапазоне от 0 до ί - 1. Значение 0 соответствует случаю, когда ошибки не обнаружено, остальные ί -\ случая свидетельствуют о наличии ошибки и указывают
|
|||
|
|||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 4 0 Глава 5. Память
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
на ее местоположение. Поскольку ошибка может возникнуть в любом из М битов данных или ^контрольных битов, мы должны иметь 2е - 1 > М + К. Это выражение позволяет определить число битов, необходимое для исправления одиночной ошибки в Af-разрядных данных.
В табл. 5.2 приведено количество корректирующих разрядов, нужное для контроля данных различной разрядности. Из таблицы видно, что для 8-разрядных слов требуется четыре корректирующих разряда.
Для удобства будем формировать четырехразрядный синдром со следующими характеристиками:
• Если синдром содержит все нули, значит, не обнаружено ни одной ошибки.
• Если синдром содержит единственную единицу в одном из разрядов, это означает, что выявлена ошибка в одном из четырех корректирующих разрядов и никакой коррекции не требуется.
• Если в синдроме в единичное состояние установлены несколько битов, то численное значение синдрома соответствует позиции ошибки в данных, для исправления которой необходимо инвертировать бит в этой позиции.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Таблица 5.2. Количество корректирующих разрядов, используемое в кодеХэмминга
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Под контрольные разряды отводятся те биты, чьи позиционные номера пред-ставляютсобой степень числа 2 (табл. 5.3). Отдельный контрольный разряд отвечает за определенные биты данных. Так, разрядная позиция п контролируется теми битами Pj, которые делают справедливым соотношение Σ; = п. Например, разряд данных с позиционным номером 710 (01112) контролируется битами 4, 2 и 1 (7 - 4 + 2 + 1), а разряд с номером 1010 (10102) - битами 8 и 2 (10 - 8 + 2).
Таблица 5.3. f Распределение разрядов 12-разрядного слова между данными
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
и контрольным кодом
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Обнаружение и исправление ошибок 24 1
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Таким образом, для рассматриваемого случая значения контрольных разрядов вычисляются по следующим правилам:
pt - А ф А Ф А © А © А; р2 - а © А $ А © А © А;
P„-A©A®A®A;
ps-as©a©A®A·
Проверим корректность такой схемы на примере. Пусть входной крд равен 00101011, где разряду Z), соответствует правая цифра. Контрольные разряды вычисляются следующим образом:
Λ-ΑΦΑΦΑΦΑΦΑ-ιφιφιφοφο-Ι; рг - а ф А © А © А © А -1 © о © 1 Ф 1 Ф о -1;
.р, - А © А ф А © А ~ ! © о Ф 1 Ф 0 - 0; я8-АФА®А7ФА"ОФ1®о®о~1·
Предположим, что данные в бите 3 содержат ошибку и там вместо 0 находится 1. После пересчета контрольных разрядов имеем
/γ-ΑΦΑ©Α®Α5ΦΑ-1Φ1Φ1Φ0Φ0-1;
/у - А ® А3 © А ® А ® А7 - 1 Ф 1 Ф 1 Ф 1 Ф 0 - 0;
Р4'-А©А©А©А8-1Ф1Ф1Ф0-1;
iy=As®A®A®A~o®i®o®0"i·
Путем сложения по модулю двух результатов старой и новой проверок получим слово синдрома (S S S SJ:
ί,-ρ,ΦΡ,'-ΐΦΐ-θ;
52-Р2ФР;-1Ф1-0; ^-Р4ФР/-1Ф1-0;
Л-Л®^' -1Ф1-0.
Результат 01102 (610) означает, что в разряде 6, содержащем третий бит данных, присутствует ошибка.
Описанный код называется кодом с исправлением одиночной ошибки (SEC — Single Error Correcting). В большинстве микросхем памяти используется код с исправлением одиночной и обнаружением двойной ошибки (SECDED — Single Error Correcting, Double Error Detecting). Из табл. 5.2 видно, что, по сравнению с SEC, такой код требует одного дополнительного контрольного разряда.
Коды с исправлением ошибок применяются в большинстве ВМ. Например, в основной памяти ВМ типа IBM ЗОхх используется 8-разрядный код SECDED на каждые 64 бита данных, то есть емкость памяти примерно на 12% больше, чем имеет в своем распоряжении пользователь. В ВМ типа VAX на каждые 32 разряда данных добавлен 7-разрядный код SECDED, следовательно, избыточность составляет 22%.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
242 Глава 5. Память
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Структура одного из вариантов построения устройства для обнаружения одинарных и двойных ошибок с коррекцией одинарных ошибок приведена на рис. 5.17. Схема предназначена для контроля 16-разрядных данных и размещается между процессором и памятью. Из табл. 5.2 видно, что код SECDED предполагает шесть дополнительных разрядов. Таким образом, из процессора и в процессор поступают 16-разрядные коды (UD15...UD), а в память заносятся 22-разрядные данные (М21... М0). Хранящаяся в ячейках памяти информация состоит из 16 бит информации (MD15... MD) и 6 контрольных битов (МР5... МР). В последующем первые буквы в обозначении разрядов могут быть опущены, при этом D будет означать информационный разряд кода, а Р — контрольный разряд.
Система размещения основных и контрольных разрядов была рассмотрена ранее, и для данной схемы она приведена в табл. 5.4.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Таблица 5.4. Распределение информационных и контрольных разрядов в 22-разрядном слове
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Контрольные разряды Р4... Р0 вычисляются по стандартной схеме кода Хэмминга:
р0=о,5едэФА,еА0ФД(ФД1фД|ФА1®А®А>;
Р, - Дз Ф Аг © Ао Ф А, Ф Д Ф А5ф Αι Θ Д Ф Д,;
рг - д5 ф А, © А» ф А> © А, ф А ф А, ф а2 θ а,;
Рэ-Д0ФДФА8ФА7ФАФДФА4;
Р4 - As Ф Аи Ф Аз Ф Аг Ф Aj.
Особенность рассматриваемой схемы состоит в способе формирования контрольного разряда Ру Он вычисляется путем суммирования по модулю 2 всех остальных 21 разрядов кода (Dly.. D0 и МР4... МР). По мнению авторов рассматриваемой схемы, это облегчает фиксацию факта неисправимой двойной ошибки. При чтении из памяти формирователем синдрома вычисляется синдром S4... S0:
50-РоФЛ/Р0;
5,-Ρ,ΦΛ/Λ;
5г-РгФМР2\
53-Р3ФЛ/Р3;
ί,-Ρ,ΦΜΡ,.
Здесь Р4... Р0 — контрольные разряды, вычисленные генератором контрольных разрядов на основании информационных битов считанного из памяти кода (MD15... MD). МР5... МР0 — такие же контрольные разряды, полученные тем же генератором, но перед записью информации в память и хранившиеся там вместе с основ-
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Обнаружение и исправление ошибок 2 4 3
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ной информацией. Если синдром не равен нулю, то он указывает на позицию исказившегося бита при одиночной ошибке. С учетом контрольного разряда Р5 возможны четыре ситуации, показанные в табл. 5.5.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Сигнал Чт/Зп на схеме определяет выполняемую операцию. Чт/Зп = 1 означает чтение из памяти, а Чт/Зп = 0 — запись в память.
Проанализировав полученный синдром и разряд Р5, обнаружитель ошибки формирует двухразрядный код ошибки Εβ0 (табл. 5.6).
Таблица 5.6. Кодирование ошибок
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||