Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Хетагуров, Я. А. Повышение надежности цифровых устройств методами избыточного кодирования

.pdf
Скачиваний:
4
Добавлен:
21.10.2023
Размер:
8.92 Mб
Скачать

В блоьшинстве ЗУ на магнитных дисках информация записывается последовательно на концентрически распо­ ложенные дорожки, которые физически представляют собой окружности на поверхности диска. Обычно все за­ писи должны оканчиваться на той же дорожке, на кото­ рой они начинаются. В данном параграфе рассматрива­ ются методы повышения надежности ЗУ при последова­ тельной записи и считывании информации, а в следую­ щем— при параллельно-последовательном размещении данных.

В подавляющем большинстве современных ЗУ приме­ няются простейшие групповые коды — коды с проверкой количества единиц на нечетность. Не являются в этом отношении исключением и дисковые ЗУ. Для современ­ ного этапа развития вычислительной техники является

характерным

использование символа (слога) стандарт-

нон длины,

называемого байтом. В современных ма­

шинах байт

содержит девять двоичных разрядов, один

из которых является контрольным. При отсутствии оши­ бок байт всегда содержит нечетное количество единиц. Таким образом, если в ЗУ записываются байты с кон­ трольными разрядами, то при считывании производится контроль количества единиц в каждом байте. К сожале­ нию, такой метод контроля имеет существенный недо­ статок: вопышка ошибок с четным весом W(E) не обна­ руживается. Если предположить, что вероятности четного и нечетного веса вспышки одинаковы, то 50% ошибок побайтовым контролем не обнаруживаются.

Поэтому, например, в дисковых ЗУ IBM/360 2311 ис­ пользуется следующий метод контроля [Л. 52]. Устройст­ во управления при записи информации отбрасывает кон-

Интерфейс ввода-вывоба

Оперативная

Канал

Устройства

 

ЗУ .

управления

на магнитных

ввода-вывода

 

дисками

' 1 '

дисках

 

 

 

 

\Ка^т£альные^саряв^

 

Данные

 

 

 

 

 

 

 

 

<5э

 

Контрольные байты

 

блок данных

 

 

 

 

Рис . 7-24. Форматы данных в интерфейсе ввода—вывода

и на вхо­

де—выходе

ЗУ на дисках, принятые

в IBM/36Q

(дисковые

ЗУ 2311).

231

трольные разряды символов (байтов), поступающие из канала, и передает в ЗУ 8-разрядные символы последова­ тельно (рис. 7-24). В конце записи записывается два контрольных байта, вычисленных в устройстве управле­ ния следующим образом. Первый контрольный -байт ра­ вен инверсной поразрядной сумме по модулю 2 всех не­ четных по номеру 8-разрядных байтов, записываемых на дорожку диска. А второй контрольный байт равен

инверсной

поразрядной

 

сумме

всех четных

по

номеру

8-разрядных

байтов.

 

 

 

 

 

 

 

 

 

 

Например, пусть необходимо записать на дорожку

диска массив:

 

 

 

 

 

 

 

 

 

 

 

Номер байта

 

 

Информационные разряды

 

Контрольный разряд

1

 

 

0

1 1 1 0

 

1 1 0

 

 

0

 

9

 

 

1

1 0

0 0 0 0 0

 

 

1

 

3

 

 

0

0

0 0 0 0 0 1

 

 

0

 

4

 

 

1 1 1 1 1 0

0 1

 

 

1

 

5

 

 

0

0 0

1 0

1 0

1

 

 

0

 

Тогда значения контрольных байтов равны:

 

Первый байт

 

 

 

 

 

Второй

байт

 

0 1 1 1 0 1 1 0

 

 

 

1 1 0 0 0 0 0 0

 

0 0 0 0 0 0 0 1

 

 

 

1 1 1 1 1 0 0 1

 

0 0 0 1 0 1 0 1

 

 

 

1 1 1 1 1 1 1 1

 

1

1 1 1 1 1 1 1

 

 

1 1 0

0 0

1 1

0.

 

1 0

0

1 1 1 0

1,

 

 

 

 

 

 

 

 

Байты из всех единиц добавляются для получения

инверсной

суммы.

 

 

 

 

 

 

 

 

 

 

Данный метод контроля при последовательной

записи

позволяет: 1) обнаружить любое нечетное количество ошибок; 2) обнаружить любую вспышку ошибок длиной 16 или менее двоичных разрядов. Кроме того, по срав­ нению с контролем каждого 'байта достигается экономия

памяти, которая

равна —16)

двоичных разрядов, где

М — количество

байтов в массиве, записываемом на диск.

Например, если

записываемый

массив содержит 1 024

байта, то экономится 1 008 бит, т. е. примерно 10%.

232

Рассмотрим возможность автоматической коррекции: вспышек ошибок с помощью циклических кодов. Для: этой цели могут быть использованы циклические коды Файра (§ 3-2). Пусть А (х) = ао+сцх+.. . + an-ixn-i ко­ довый полином, т. е. А(х)=0 по модулю G(x). Если при считывании информации возникла вспышка ошибок Е(х) длиной не более / разрядов, где / — максимальная длина> одиночных вспышек ошибок, исправляемых данным ко­

дом, то при делении полинома

А(х)+Е(х)

на G(x) по­

лучим:

 

 

 

 

 

 

 

 

£i(x)

=Е(х)

по модулю G(x),

 

 

где

Q(x)—содержимое

запоминающих ячеек

блока де­

ления после

приема двоичного

кода А + Е

в

буферное-

ЗУ

(см. рис. 3-5).

 

 

 

 

 

 

Вспышку ошибок Е длиной / можно представить в ви­

де

следующего

двоичного

кода длиной

п

разрядов-

00

.. . 0ei<?i+1

.. . ei+г—2614-;—10 .. . 0, где ег -= 1 и индекс 0 ^

 

—/ показывает

«начало» ошибки, ей при

^ k ^ i + l—2

равно 0 или 1. Учитывая (3-9) и последо­

вательность

поступления рассматриваемых

символов;

(первым на вход блока деления поступает символ ей за­

тем e,+i и т. д.), получаем последовательность

состояний:

блока

деления (при нулевом

исходном состоянии):

B{jc

;

 

 

 

 

 

^г+\Х

 

* —{— е^х

 

} по модулю G(x)

0 л - 1

+

... +

0 л - < л - г ' - " +

 

 

+ e * + i _ I x - < » - < - ' + 1 >

+ ... + ei Jc-<*-«

 

или, так как хп=1

по модулю G(x), то окончательно по­

лучаем:

 

 

 

 

 

 

Q (х) = e i + i

_хх ~(" - * ~ 1

+ 1 ' + . . . + e * J C < N " Г >

= =

 

 

= etxi + . . . -(- e i + i _ , J C * + 1 ~1 = . х* ( в г +

 

 

 

-\-вг

+ 1Х-{-

..^\~в1+1_хХ1'1)

ПО МОДУЛЮ

G(X).

Если продолжить работу декодирующего устройства (блок деления продолжает работать в автономном ре ­ жиме и двоичные символы с выхода БЗУ последователь­ но поступают на выход схемы), то в момент, когда пер­ вый ошибочный символ Сг + ег займет крайнюю правую-

233.

ячейку БЗУ, содержимое блока деления будет равно:

Q (х) Х~ *" = Х^вг

-\-вг+1Х-{-...-\-

вг+l _

~l)X~

i

=

=щег-\-вг+1х-j-...

-\-ег+1_1х1~г

подмодулю

G(x).

Другими словами, в г запоминающих

ячейках

блока

деления (рис. 3-5) установится код б^г-и- • • бг+г-iOO • • • 0. Эта ситуация, т. е. появление нулей во всех (<г—I) пра­ вых запоминающих ячейках блока деления, фиксируется с помощью логической схемы, которая вырабатывает сигнал отключения обратной связи в блоке деления и коммутации выхода на вход сумматора но модулю 2 до окончания всей процедуры декодирования. Поэтому в сле­ дующем такте на один вход сумматора из БЗУ поступит

символ ai + ei,

на второй

вход — символ

на выходе

декодирующего

устройства

получим a,- + ei + et- = a;, т. е.

исправленный символ. Аналогично исправляются осталь­ ные ошибки вспышки.

Для иллюстрации изложенного рассмотрим исправление

вспышек

ошибок с помощью кода, порождаемого полиномом

 

G(x) = (x*+x+\) (х* +

\)=х*+х115а+х+\.

 

Этот полином порождает код Файра

длиной я = 3 5 разрядов, из

которых восемь контрольных, и позволяет

исправить любую

одиноч­

ную вспышку ошибок длиной 3 или менее

(§ 3-2).

 

6

ml

50 ,

DUD №UDh\m2\

r i i .

[

 

 

 

 

Начало

 

 

IS

 

 

 

 

 

 

 

 

 

декодирования

 

 

 

 

 

Вход

 

Буферное запоминающее

устройства

 

Выход

 

mmт

 

mmmm

т

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 7-25. Схема КУ.

 

 

 

 

Пусть

возникла

следующая вспышка ошибок Е= (00...00101000000).

Значение

кодового

слова

А=(а0,

fli,

. . . , an-t)

рассматривать

не

имеет

смысла, ибо

соответствующий

полином А (х) = 0

по модулю

G(x).

Дл я определенности

будем

полагать, что Л =(00 . . . 0). Тогда

в момент

окончания

первого

этапа

декодирования

в БЗУ будет

запи­

сан

код ошибки, показанный

на ряс. 7-25,

а содержимое

блока деле­

ния

равно

остатку

от деления полинома

хв(1+хг)

=х°+х*

на

G(x).

234

При делении

на модуль

G(x) =xs+xB+xs+x3+x+[

получаем:

 

 

Q(x)=xs+x3+x+\.

 

 

Другими

словами, в запоминающих

ячейках

блока деления будет

записан код 11010100.

 

 

 

На втором этапе декодирования получаем следующую последо­

вательность

состояний блока деления:

 

 

 

исходное состояние

11010100;

 

после

1-го такта

00000101;

 

после

2-го такта

00001010;

после 6-го такта

10100000.

i

Таким образом, после 6-го такта конъюнктор обнаруживает ну­ левой код в старших пяти ячейках блока деления и вырабатывает сигнал, устанавливающий триггер Г в состояние, при котором пер­ вый конъюнктор закрывается, а второй — открывается. В этот мо­ мент в старших ячейках БЗУ записан код . . . 00101. В течение сле­ дующих тактов декодирования сшибка будет исправлена.

Рассмотренный метод коррекции вспышек ошибок с помощью циклических кодов позволяет сделать сле­ дующие выводы.

1. Соответствующим выбором параметров циклическо­ го кода можно обеспечить коррекцию ошибок при инфор­ мационной избыточности (n—k) In порядка нескольких процентов.

2.Затраты аппаратуры на декодирующее устройство оказываются значительными из-за того, что количество ячеек в БЗУ должно равняться длине п используемого кода. Например, если п=889, то БЗУ должно иметь ем-, кость 889 бит.

3.При считывании быстродействие памяти с декоди­ рующим устройством на выходе уменьшается в следую­ щее число раз:

n/h + n/h

_ f , +

f i

я/Л

~~ h

*

где fi — тактовая частота работы дискового ЗУ; fz = максимальная тактовая частота работы декодирующего устройства. Например, если в дисковом ЗУ fi=0,2 мгц, а /г=1 мгц, то быстродействие снизится в 1,2 раза.

235

4. Исключение БЗУ из декодирующего устройствапозволяет существенно уменьшить затраты аппаратуры на его реализацию.

В этом случае коррекция ошибок в данных, записан­ ных в оперативную память, производится с помощью спе­ циальной подпрограммы. Место и структура вспышки ошибок локализуются блоком деления, как описано вы­ ше. Так как ошибки возникают относительно редко, т. е. как правило, после считывания массива из памяти содер­ жимое блока деления равно нулю, то рассматриваемый метод коррекции практически не оказывает влияния на быстродействие памяти.

Обычно в память на дисках могут записываться мас­ сивы переменной длины, не превышающей длины п ис­ пользуемого кода. В этом случае может быть использо­ вана изложенная выше процедура коррекции ошибок, если предположить, что в п—п' разрядах кодового слова записаны нули, где п' — длина считываемого массива. Однако, если величина /г—п' значительна, то при аппа­ ратурной реализации декодирующего устройства значи­ тельно увеличивается задержка в декодировании, свя­ занная с необходимостью учета фиктивных нулей, до­ полняющих считываемый массив до стандартной дли­ ны п. Применение аппаратно-программного метода деко­ дирования позволяет свести влияние этой задержки к ми­ нимуму благодаря низкой частоте возникновения оши­ бок.

Рассмотрим другой метод коррекции ошибок, исполь­ зование которого целесообразно в том случае, когда ко­ дирование и декодирование производятся с помощью программных средств. В этом случае каждый элемент кодового слова представляет со'бой /га-разрядное двоич­ ное число. Значение т может равняться произвольному числу, но обычно оно равно либо разрядности машины, либо стандартной длине используемого символа (8 бит). В рассматриваемом ниже классе кодов операции сложе­ ния и умножения над элементами кода производятся по модулю N=2m или N=2m—1. Для описания данных ко­ дов будем использовать контрольную матрицу Н, анало­ гичную контрольной матрице линейных групповых ко­ дов.

Контрольная матрица, соответствующая коду с обна­ ружением ошибок, имеет вид:

Н = ||1 1 1 . . . 1 Ц .

(7-17)

236

Значение единственного контрольного элемента ai,+t вычисляется по формуле

 

 

k

 

 

ah+1==

Yi ai п о модулю N,

 

 

1=1

 

где

их — информационные

элементы кода; k — количест­

во

информационных символов в коде. Таким образом,

кодовый вектор (кодовое

слово) А = (а&г . . . dkCtk+i) и

AHt

= 0 по модулю

N,

 

k

так как ай + 1 -)-2 си==0 по модулю N.

[=1

Обратите внимание на полную аналогию матрицы (7-17), т. е. способа вычисления одного контрольного разряда, и контрольной матрицы, соответствующей кон­ тролю по четности количества единиц в слове! Отличие состоит лишь в том, что в данном случае все операции производятся не в двоичном поле, а в кольце классов вычетов по модулю N.

 

Например,

пусть

элементами кода

являются

двоичные числа

дли­

ной

т - 1 0

разрядов;

 

Л / = 2 т — 1 = 1

023

и пусть

а, = 121,

а 2 =999,

а 3 =

=512, а4

= 75,

а 5 = 3

(для кратности

записаны десятичные

эквивален­

ты

двоичных

чисел).

Тогда значение

контрольного элемента

 

« s =

— 6 8 7 = 1 023 — 687=336, так к а к — Ц at

= — 1 710 = — 687

по

модулю

/V = 1 023.

Проверяем

правильность

кодирования:

 

 

б

 

 

 

 

 

 

 

 

 

 

 

2

at

=

1 710 +

336 = 2 046 =

0 по модулю Л' = 1 023.

 

 

i = i

 

 

 

 

 

 

 

 

 

 

Коду, описываемому матрицей (7-17), соответствует широко используемая в ЦВМ процедура контрольного суммирования массивов чисел. Любая ошибка в одном элементе кодового слова будет обнаружена всегда. Об­ щее количество различных сочетаний ошибок в двух фик­ сированных элементах (напомним, что под элементом понимается m-разрядное двоичное слово) равно ( 2 т — I ) 2 . Двойная ошибка не будет обнаружена, если

е1 -\- е, = 0 по модулю N .

237

Если значение ei задано, то последнее сравнение мо­ жет быть выполнено при единственном значении е2. Сле­ довательно, из общего числа сочетаний ошибок ( 2 m — I ) 2 не будут обнаружены (2m —1) ошибок, т. е. условная вероятность пропуска двойной ошибки равна:

. Q a = l / ( 2 " - l ) .

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

s^l/(2m — 1). Например,

 

если m = 30, то

Q < 2 - 3 0 ~ 1 0 - 9 .

Код с исправлением любой ошибки в одном элементе

можно построить с помощью следующей

контрольной

матрицы:

 

 

 

 

Н =

1

1 1 ... 1 1

О

(7-18)

.1

2 3 . . J 0

1

 

где k<N.

 

 

 

 

Данный код требует

всего два

контрольных элемен­

та. Из матрицы (7-18) получаем уравнения для вычисле­

ния контрольных

элементов:

 

 

+ i =

-

У.

<*i

 

 

 

 

 

 

 

i = I

 

по модулю N.

(7-19)

= —ft2 ia.i

 

 

Контрольные уравнения для кодовых слов имеют вид:

ft+i

1

 

У,

а г - = 0

 

 

по модулю N.

(7-20)

k

I

 

Если ошибка возникла в одном из контрольных эле­ ментов, то будет нарушено только одно контрольное со­ отношение. Если же ошибка возникла в информацион­ ном элементе, то будут нарушены оба соотношения. При­ чем значение кода коррекции ei определяется из первого» контрольного соотношения

ft+i

= S о* по модулю N,

238

а фаза х ошибки или номер элемента, содержащего ошибку, является решением сравнения

по модулю N,

(7-21 >

k

 

где е2 = <2й+ 2 ^+2 i a i п о модулю N,

Kx<k.

1=1

 

Если сравнение (7-21) не имеет решения, то это сви­ детельствует о наличии ошибки более высокой кратности,, которая не может быть исправлена.

Рассмотрим построение кода с исправлением ошибки в однойэлементе для рассмотренного выше примера. Согласно (7-19) полу­ чаем:

 

 

 

 

 

а 6 =336,

а 7 = — 901 ='122.

 

 

 

 

Пусть при передаче информации произошла ошибка

в элементе

02 и получено значение а*2=500. Тогда из

контрольных

уравнении..

(7-20) определяем:

 

 

 

 

 

 

 

 

 

6

 

 

 

I

 

 

 

 

 

< ? , =

£

^ 1 = 1 547 =

524

(, п о

модулю /V =

1 023.

 

 

 

i = i

 

 

 

 

 

 

 

 

<?2 =

122 + 2972 =

3094 =

25

 

 

 

 

 

Далее

рассматриваем

сравнение (7-21)

при

значениях * = 1 , 2"_

3,

4,

5:

 

1- 524 =

514

 

)> по модулю

 

 

 

 

 

 

 

 

N =

1 023,

 

 

 

 

 

2- 524 =

2 5 = ^ а

/

 

 

 

т. е. фаза ошибки равна 2. Исправление ошибки производится вычи­ танием £| из а*2-

а*2е1=500—524=—24, но — 24= 1 023—24 = 999 по модулю N.

Рассмотренный код, описываемый матрицей (7-18),. позволяет исправить любую вспышку ошибок длиной пи или менее двоичных разрядов, расположенную в преде­ лах одного элемента. Вспышка ошибок, искажающая два смежных элемента, не может быть исправлена. Поэтому для исправления произвольной вспышки ошибок длиной- или менее двоичных разрядов необходимо использо­ вать код, описываемый матрицей

1

о 1 о 1 о ...

1 .о о

 

Н = || о

1 о 1 о 1 ...о

1

о .

(7-22>

1

1 2 2 3 3 . . . 0 0

1

 

При возникновении ошибки в одном информационном, •элементе нарушатся два контрольных соотношения (иер-

23*

•вое и третье или второе и третье) и процедура исправ-

.ления будет аналогичной рассмотренной выше. Если же ошибка возникнет в двух смежных информационных эле­

ментах, то будут нарушены все три контрольных

соотно­

шения. Пусть значения кодов коррекции равны

е ь е% е3.

Тогда фаза х ошибки — решением

одного из сравнений

{x-\-'\)el-{-xei=set

 

по

модулю N.

(7-23)

 

 

 

 

 

Заметим, что значение первого контрольного

элемен­

та, определяемого матрицей

(7-22),

равно сумме по мо-

 

L

 

 

 

 

Иастрайщ^дразраммы

(по

место­

 

расположению

и длине массива)

 

Вычисление

et*Ea[

па модулю

N

 

i-нечетные

 

 

 

Вычисление

г2«£а,- па модулю

N

 

 

i-четные

 

 

 

Ыа

\Да

\Да

 

Исправление

ошибок в

соответствии

с

найденными

значениями

х, е, и е2

Рис. 7-26. Структурная схема программы декодирования.

дулю N всех нечетных элементов, а второй контрольный элемент равен сумме всех четных элементов. Другими словами, здесь используется принцип, аналогичный прин­ ципу вычисления контрольных байтов в дисковых ЗУ IBM/360 2311 (см. начало данного параграфа).

240

Соседние файлы в папке книги из ГПНТБ