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

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

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

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

Добавлен: 21.07.2024

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

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

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

Следствие 2.10.2.

 

Если каждый из векторов

и {"дг + 1}#, содержит

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

Приведем

теперь пример

коррекции ошибок

Я-кодом

с

по­

мощью рассмотренных в этом параграфе методов.

рі= 5 ,

Рг~1,

Пример 2.5. Пусть

задана СОК с

основаниями:

Рз=8,

Р4=П,

Рб=13,

р6=17,

Р7=19,

Рв= 3, N =280,

Ri =

135567,

Положим

L =

2N =

560.

Тогда

минимальное

рас­

стояние кода

равно

5.

При этом

удовлетворяются

условия

 

тео­

ремы

2.8.

 

 

 

 

 

 

 

 

 

 

Рассмотрим кодовое слово

 

 

 

 

 

 

 

 

~

{

25°}д, = {0, 2, б, 3,1°, 5, 16, 2} ,Ѵ[,

 

 

у которого в символах, соответствующих модулям рз и рт, произо­ шли ошибки Д а з = 4 ; Д<Х7=10. Тогда

 

 

{Л'}Л1 = { °,2 ,2 ,3 ,1(),5 ,7,2}Л[.

 

Прежде всего определим

позиционную характеристику

 

 

 

 

{теуѵ}р, = {4, 5, 7,6, 0}*,.

 

 

Веса

векторов

(тсл^}р, н {л./ѵ +

1}#,

равны

соответственно

че*

тырем

и

пяти, т. е. оба больше /г. Поэтому,

по меньшей мере,

одна ошибка произошла в информационном модуле.

 

Вычислим теперь вектор

{8}д1=

+ 2}^.:

 

 

 

 

{6}я, ~

{6’ 7> 9. 8, 2j/?i.

 

 

Далее

проверим

справедливость

неравенства

| Ь р / [ ^ < З р г ,

где

і= 1, 2, 3.

Вданном случае величина б умножается только на информа­ ционные основания, так как нам заведомо известно, что если ошиб­ ка является одиночной, то, в соответствии со следствием 2.10.2, она

не может произойти в каком-либо из контрольных модулей.

Проверку данного неравенства

выполним

следующим образом.

Вычислим величину [| ^PilpJPt] =

V Если

Б, > 3,

то неравенство

не выполняется, так как p^jpi >

1,3. Если <

2, то

можно считать,

что ошибка возникает в модуле p-t. Наконец, если

6j = 2, то сле­

дует определить знак числа

 

— Зр,-. Итак:

 

. = {8,9,11,2,1}^;

{8і}/?,/п = {6>8- 4' !}/?,/и; {В7}^. = {9,1°, І2 ,16,2}^;

{В>}/?,/11 = {6>8>8>^Я ./П ’

№ , = {4. 4, 4,7,1}^;

= {°>°> 2>°}/?,/іг

59



Поскольку во всех трех случаях Б, > 3, можно утверждать, что

вкодовом слове произошла двойная ошибка.

Вобщем случае далее следует проверять справедливость не­

равенств I Ърір] I < 3pipj,

 

где /,

j —

і ф j.

Однако мы

можем

заметить,

что

у

вектора

{®і}7?,/іі = {[68/11]}А,/п

имеется

только

одна

ненулевая

 

компонента,

соответствующая

модулю

р 1 = 19. Поэтому

I 5

, =

0 <

2. Следовательно,

можно утвер­

ждать,

что ошибки произошли в основаниях р3 и р 1.

 

 

Для определения вектора ошибки воспользуемся формулой

(2.22),

учитывая

гот

факт, что модуль

р7 является

контрольным,

т. е. Q = рз и

I БQ |/?] = I 58 |^]/19. При этом

 

 

 

 

 

{Г°81/?1П9}лі = {4' 4' 4-4-4-4' 4' 1},,г

 

 

 

 

 

{Л^/8}ді

= {O’ °> 3. 2 , 9 , 1, 16, 2}и(;

 

 

 

 

 

{В^}лг =

{0,0,0,8,10,4,17,2}лг

 

 

{ - Д } . „ = (0,0, 4,0,0,0,9,0) 1(.

Прибавляя последнюю величину к вектору А', получим исходное кодовое слово:

{Л}іМ= {0,2,6,3,10,5,16,2}лГ

2.5. КОНТРОЛЬ И КОРРЕКЦИЯ АРИФМЕТИЧЕСКИХ ОПЕРАЦИИ В СОК

Все операции, выполняемые в ЦВМ над числами, представлен­ ными в СОК, можно разбить на три основные группы.

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

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

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

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

Если над результатами операций, относящихся к первой группе, довольно часто выполняются операции немодульного типа, то нет

60


необходимости специально контролировать правильность выполнения каждой модульной операции, так как при этом не происходит рас­ пространения ошибок. В тех же случаях, когда в ЦВМ на протяже­ нии длительного времени выполняются только модульные операции, через определенные промежутки времени (зависящие от интенсивно­ сти помех) для проверки отсутствия искажений следует вычислять вектор {nw}R1. Если корректирующий код используется не только для обнаружения, но и для исправления ошибок, то при выборе интервала времени между отдельными проверками следует учиты­

вать возможность

распространения

ошибок

в

некоторой группе

чисел.

 

 

 

 

 

 

 

..., Аа выпол­

Пусть, например, в ЦВМ над массивом чисел А і,

няется

одна

из

операций

первой

группы:

С,-=

Л,•-f-В,

где

£ = 1 , 2 ....... s.

В

является

искаженным, то

все

числа Сі, . . . .

Cs

Если

число

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

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

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

выполнении лишь операций сложения и вычитания.

А

п В

из

мно­

Пусть

С — сумма

двух

произвольных

чисел

жества L,

где L =

2N.

Если

переполнение

произошло

при сложении

положительных чисел,

то я,ѵ (С )=

1, а

если

это произошло

при

сложении отрицательных чисел я N(C )= ftj —2.

 

 

 

 

 

Позиционная характеристика я,ѵ в общем случае может прини­

мать Ri различных значений, два из которых

(0 и ft, — 1)

соответ­

ствуют истинным числам. Для любой избыточной

СОК со

взаимно

простыми

основаниями

должно выполняться условие

М > L,

т.

е.

Ri ^ 3. Но в этом

случае ни 0, ни

R t — 1 не

могут

равняться

ми

единице, ни R, — 2.

Следовательно,

любой

R-код позволяет обнару­

жить ошибки переполнения, а при

Ri ^

4 (ft ^

2)

выявить

и

их

знаки.

 

 

 

 

 

 

 

 

 

 

 

 

Если

ft-код используется только для

обнаружения ошибок, то

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

Код, исправляющий ошибки, должен отличать переполнение раз­ рядной сетки от искажений отдельных символов, которые он может исправить. Поэтому значениям позиционной характеристики я л- = 1 и Лк = Ri — 2 не должен соответствовать ни один вектор ошибки, вес которого не превосходит /г.

Нетрудно убедиться в том, что для любого ft-кода с минималь­ ным расстоянием d = 2k -j- 1 это условие всегда выполняется. Дей­ ствительно, если jtjv = 1, то неравенство (2.14) не выполняется ни

61


для каких Q,

а при JVN= R I—2 левая часть неравенства обращает­

ся в нуль для

любых Q.

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

Предположим, что при выполнении каком-либо операции данной последовательности получен ошибочный результат Я /, причем крат­ ность ошибки t > ( d — 1)/2.

Можно ли исправить такую ошибку? Подобный случаи рассмат­ ривался в § 2.2, где было показано, что ошибку можно исправить лишь в том случае, если в сфере радиуса t вокруг искаженного век­ тора не окажется ни одного кодового слова, кроме истинного. Если же в этой сфере окажется несколько кодовых слов, то у нас нет ос­ нований отдать предпочтение какому-либо из них.

Запомнив все слова, попавшие в данную сферу, перейдем к вы­ полнению следующей операции, одним из операндов которой являет­ ся наше искаженное число. Очевидно, что и у этой операции резуль­ тат Я2' будет ошибочным. Найдем теперь все кодовые слова, лежа­ щие в окрестности радиуса t от вектора Я /. Далее над каждым изкодовых слов, лежащих в окрестности Я /, проведем ту же операцию, что и со словом Я /, и результаты этих операций сравним со слова­ ми, лежащими в окрестности Я2'. Если только о д н и из полученных результатов совпадает с каким-либо словом, лежащим в окрестно­ сти Я /, то это слово и является правильным. Если несколько резуль­ татов совпадает с кодовыми словами, т. е. снова нет однозначности решения, то запоминают те слова из окрестности Я/, для которых наблюдалось совпадение, и переходят к выполнению следующей операции, повторяя при этом те же действия, что и раньше по выяв­ лению правильного результата уже этой н о в о й операции.

Вместо нахождения всех кодовых слов, лежащих в окрестности

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

ний СОК, произведения которых удовлетворяют неравенству (2.14).

После сравнения произведений оснований, соответствующих век­

торам Я / и Я /, оставляются лишь те произведения, значения кото­

рых совпадают. Если в результате выполнения нескольких модуль­

ных операций останется только одно произведение,

каждый раз удов­

летворяющее условию (2.14), то ошибка считается

локализованной.

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

і

« і > ( Н

І ) П

Р„г где

qj= 1 , 2 ......... m.

 

При невыполнении

этого

неравенства

всегда

найдется, по

крайней

мере, одна комбинация из t оснований

СОК,

произведение

которых

удовлетворяет неравенству (2.14) независимо от того, где произошли ошибки. Поэтому число корректируемых ошибок не может превы­ шать величины d — 1, причем число контрольных оснований должнобыть не менее двух.

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

62