Файл: Торгашев В.А. Система остаточных классов и надежность ЦВМ.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 21.07.2024

Просмотров: 128

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Следовательно, вектор /1 может иметь d ненулевых компо­ нент, если по меньшей мере d оснований СОК содержат делители,

равные g ^ 1.

Поэтому произведение

оснований

р 1у... ,рт должно

делиться на

^ß/

и

ß1

величину gt

t .

по, поскольку gt l

является произволъ'

ным делителем основания М, можно утверждать, что произведение

оснований СОК должно делиться на величину М а = (g i'g j3. ■•

Однако по определению /.-кода R = PjM , так как L = М. Следо­ вательно, у L-кода с минимальным расстоянием d величина степени

избыточности обязательно делится

на M d~ *. Очевидно, минималь­

ным значением, удовлетворяющим

этому условию, является R =<*

= Md

Достаточность условия теоремы следует из того, что никакое кодовое слово не может иметь вес, меньший чем вес векторов, со­ ответствующих числам вида А = M/gu так как эти числа содержат максимально возможное число делителей основания М.

Таким образом, явно нецелесообразно применять корректирую­ щие /.-коды для обнаружения или исправления таких ошибок, ко­ торым с равной вероятностью соответствуют произвольные искаже­ ния символов СОК. Сднако если ограничить класс возможных ошибок в отдельных символах, то возможности L-кодов рас­ ширяются.

Как известно, любой линейный корректирующий код позволяет обнаруживать все ошибки, не являющиеся кодовыми словами. Если степень избыточности равна R, то доля ошибок, обнаруживаемых кодом, равна (R — 1)//?.

Критерием, позволяющим определить, относится ли некоторый вектор Л к кодовым словам, может служить условие леммы 1.1. Если существует хотя бы одна пара символов ctj и а3вектора Л,

такая, что разность а.і — а,

не делится на наибольший общий дели­

тель оснований рі и р3, то

вектор Л не является кодовым словом,

что свидетельствует о наличии ошибки. Поэтому искажение симво­ ла, соответствующего основанию р,-, может быть обнаружено лишь в том случае, если это основание имеет хотя бы один общий дели­

тель с другими

модулями..

 

общий делитель

оснований

р,-

Обозначим:

dyj — наибольший

и pp, di = [du,

..., d,m]

при i ф

j. Очевидно, что

di также

яв­

ляется делителем основания р,-. Если каждый из модулей р,- имеет

делитель di,

не равный степени двойки, то такой корректирующий

L-код может

обнаруживать любые одиночные ошибки в двоичных

представлениях остатков а,, ..., ат .

Для того чтобы исправить ошибку, соответствующую некоторо­ му модулю рі, необходимо сначала определить номер (і) основания и далее восстановить правильное значение искаженного символа. Номер искаженного символа можно определить, если каждое из оснований рі имеет общие делители (некратные величине ошибки)

с двумя другими модулями СОК.

Предположим, что основания pi,,pj,ph являются попарно непро­ стыми числами. Для любого вектора А = (<і|, ..., <xm) вычислим разность остатков

50


<Ч] = 1“І—aj \ d n ’

“ІА = 1“ г —“Aid, ;

aj k = Iaj —

Jk

l)

lit

 

что позволит определить место ошибки и отчасти ее величину. Если все три разности равны нулю, то ошибки либо нет, либо она кратна каждому из делителей d/y, d ik, d jk. Пусть a/у =^= 0; а1кф0', яуА= 0 .

Тогда ошибка произошла в модуле р/ и реличина ее определяется значениями а ц и аік с точностью до слагаемых, кратных [cf/у, cf/*].

Для однозначного определения величины ошибки Да/ необходимо, чтобы различным комбинациям остатков a/у и аік соответствовали

различные значения ошибок Вместо определения величины ошибки можно сразу вычислить

истинное значение искаженного остатка, если в сокращенной за счет исключения основания р/ системе остаточных классов можно одно­ значно представить число.

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

двойные ошибки.

Если

только одна из величин

ац,

ац,,

сць не

равна нулю или

же

все три являются ненулевыми,

то

можно

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

Допустим, что все основания СОК можно разбить на несколько групп таким образом, чтобы модули, входящие в одну группу, не имели общих делителей с модулями, относящимися к другим груп­

пам. Каждую из

таких групп

можно рассматривать

как

независи­

мый корректирующий код.

 

то

степень

Если каждая из групп состоит из двух модулей,

избыточности кода

определяется

выражением

 

 

-где 21=tn.

R = d td3. .

= d3di . . .d3l>

 

 

 

 

 

 

Для того чтобы код мог обнаруживать любую одну двоичную ошибку в каждой паре модулей, делители должны быть нечетными целыми числами.

Рассмотрим теперь примеры корректирующих L-кодов, причем для оценки их избыточности введем еще одну характеристику, ко­ торую назовем коэффициентом избыточности:

Км = (logä P)/(log2 L).

Пример 2.1. Пусть задана система остаточных классов с осно­ ваниями:

р, =

13-3 =

39;

р 3 = 11-5 = 55;

р5 =

2-7 =

14;

рг =

3-3 =

9;

р4 = 5-5 = 25;

р 6 =

7-7 =

49.

Тогда корректирующий код имеет следующие характеристики:

R = 3-5-7 = 105; L = 2-32-5а- 7 М Ы З « 3 1 0 6; 1<н = 1,4.

Данный І-код позволяет обнаруживать любые одиночные ошиб­ ки в двоичных представлениях остатков а ь ..., а6, а также двойные и тройные двоичные ошибки, которые относятся к различным груп­ пам (в общем случае кратность этих ошибок равна 0,5т). Кроме того, с помощью этого кода обнаруживаются любые ошибки, удовлетворяющие условию:

I Да/ — Да/+, \а^

0 ,

где і = 1, 3, 5.

4*

51

 


Пример 2.2. Рассмотрим систему остаточных классов, все моду­ ли которой имеют общий делитель, равный g.

Пусть

g =

3;

/;, = 3-3 = 9;

/)2 = 4 - 3 = І 2

;

ра = 5- 3=15;

= 7-3 = 21;

рй =

11-3 = 33;

/»0 = 13-3 = 39;

 

р1 =

17-3 = 51.

Тогда R =

За =

729; L = 4-За-5-7-11 ■13-17«3-10°;

/<„ =

1,6.

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

I Да; — Да/Із^О, где

/ = 1, 2 ,..., т; i=f=j.

Наконец, этот же код может указать место, а часто и исправить любую одиночную (двоичную) ошибку, а также довольно большое число двойных и тронных двоичных ошибок.

Таким образом, корректирующие возможности такого кода до­ вольно высоки, хотя минимальное расстояние d= 1, так как, на­ пример, число Lj3 соответствует кодовому слову, у которого лишь первая компонента является ненулевой и соответственно вес этого слова w — 1.

ляет

Пример 2.3. Приведенный ниже корректирующий

код

позво­

уже однозначно определять

не только м е с т о ,

ио

и

в е л и ­

ч и н

у одиночной ошибки или

двух одиночных ошибок

в

разных

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

пы. Для этого кода рі =

2-13 = 26; рг = 3-13 =

39; рз = 5-13 = 65;

р4= 7 ■19= 163; Рб= 11 • 19= 209; р6= 17-19 =

323.

 

Данный код

обладает

следующими

характеристиками: R =

= 13М92«6,Ы 0< ;

Z- =

2-3-5-7 - 11-13-17-19«9,6- ІО6; К„ = 1,9.

Эти примеры показывают, что /.-коды не так уж плохи, как

могло бы показаться

после

знакомства

с

теоремой 2.6. К их

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

Что касается недостатков, то здесь в первую очередь следует упомянуть тот факт, что /.-коды с приемлемой избыточностью не •позволяют исправлять, а порой и обнаруживать любые ошибки за­ данной кратности, даже одиночные. Кроме того, при использовании /.-кодов система остаточных классов, как правило, содержит до­ вольно большие по величине модули, что приводит к определенному усложнению арифметического устройства.

Наконец, большая избыточность L-кодов, естественно, ограничи­ вает сферу их применения такими устройствами, для которых ха­ рактерен высокий уровень помех.

Более эффективными могут оказаться смешанные RL-коды, ко­ торые соответствуют СОК с попарно непростыми основаниями при L < М. В этом случае, изменяя отношение М/L, можно получить любые минимальные расстояния, так же как в обычном Д-коде. Но, кроме того, появляется возможность обнаруживать и исправ­ лять значительное число ошибок более высокой кратности.

Пример 2.4. Добавив к системе остаточных классов, приведен­ ной в примере 2.2, еще один модуль р8= 19-3=57, получим кор­

52


ректирующий

RL-код с минимальным

расстоянием

d =

2,

для

которого R =

35-57 = 4,Ы С ; L « 3-105; 7И = 5,7-107; Кп =

1,9.

Несмотря

на небольшое минимальное

расстояние,

этот

код

мо­

жет обнаруживать, кроме любых одиночных, 95,96% ошибок произ­ вольной кратности. Кроме того, он может исправлять практически любые одиночные ошибки и часть ошибок с кратностью 2,3 и даже 4.

Читатель, наверное, уже обратил внимание на то, что основные свойства и возможности L и RL-кодов описываются скорее каче­ ственно, чем количественно. Дело в том, что насколько известно автору, до сих пор никто не занимался достаточно серьезным изуче-. кием свойств систем остаточных классов, основания которых не являются взаимно простыми числами. Поэтому изложенный в этом, разделе, а также в предыдущей главе материал, относящийся к та­ ким системам остаточных классов, следует рассматривать лишь как первый шаг в данном направлении.

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

Что же касается L и ЯА-кодов, то эта область еше ждет своих исследователей.

2.4. ОБНАРУЖЕНИЕ И ИСПРАВЛЕНИЕ ОШИБОК ПРИ ПОМОЩИ я-кодов

Для того чтобы выяснить, является ли некоторый вектор Ä ко­ довым словом Я-кода, необходимо определить величину соответ­ ствующего числа А. Если это число принадлежит множеству L, то

можно полагать

(конечно, с определенной вероятностью), что оно

является неискаженным. Если же А не принадлежит множеству L,

то наверняка

произошла ошибка.

 

Лля сравнения величин А и L удобнее всего воспользоваться

позиционными

 

характеристиками п,ѵ(Л). Если L = N, то любым

кодовым

словам

соответствует только

одно значение n N (A), рав­

ное нулю. При L = 2N кодовым словам могут соответствовать два

значения

позиционной характеристики.

Если А < 0, то n N(A) =

= Я1— 1, а

положительным числам соответствует нулевое значе­

ние характеристики.

главе, позиционные харак­

Как

было

показано в предыдущей

теристики ЯлДА) вычисляются в ходе выполнения любой немо­ дульной операции. Следовательно, попутно с выполнением любой такой операции осуществляется обнаружение ошибок. Если немо­ дульные операции встречаются в ходе решения задачи, достаточно часто, то нет необходимости вводить специальную операцию обна­ ружения ошибок, т. е. в данном случае для обнаружения ошибок

не потребуется добавочных затрат времени.

Для исправления ошибок необходимо прежде всего определить,

номера

модулей,

которым соответствуют искаженные

символы.

Один из

способов

локализации

ошибок,

предложенный

в работе

[2], заключается в

следующем.

Исключим

из СОК основание р л

и определим величину числа,-соответствующего вектору {Д}

53