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

книги из ГПНТБ / Торгашев В.А. Система остаточных классов и надежность ЦВМ

.pdf
Скачиваний:
19
Добавлен:
23.10.2023
Размер:
5.18 Mб
Скачать

Поскольку во всех трех случаях Б, > 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

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

Рассмотренный выше способ коррекции ошибок, использующий динамику вычислительного процесса, был предложен и детально исследован И. Я. Акушским и Д. И. Юдицким. Поэтому более пол­

ные и подробные сведения об этом

методе читатель

может найти

в работах указанных авторов

[1—5]. .

 

 

 

 

 

 

 

 

Проиллюстрируем этот метод коррекции ошибок небольшим при­

мером.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

ниями: р, =

7;

р2 =

8;

р3 = 9; р4 =

5; ps == 11;

N =

7 • 8 • 9 = 504;

Rt — 5- И =

55;

L — 2N =

1008

и

искаженное

число

{71/}^ =

= {2, 6, 7, 0, 8}м, из

которого

в ходе решения задачи вычитается не­

искаженное число

{200}ііг = (4, 0, 2, 0, 2}ііг. Требуется

определить век­

тор ошибки, считая, что она является одиночной.

 

 

 

 

 

кода

Нетрудно, убедиться, что минимальное расстояние данного

d — 2,

т. е.

 

в

общем

случае

код

не позволяет исправлять

одиночные

ошибки.

Определим

сначала

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

itjv(A j)

и

положив X= 2:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

* л г (4 )

= 12;

 

 

 

 

 

 

Ж

) и

,

=

{4’ 3}/?,-

» (4 )

=

14.

 

 

 

 

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

неравенства

(2.14)

для

каждого из

оснований СОК:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

{7»}*, “

{3.10}*,.

17# I * ,

=

43 > 3 - 7 ;

 

 

 

 

 

{»}*,

{2. 2}*,,'

I 86 I * , = 2 < 3 - 8 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

|9 8 |я , = 1 6 < 3 . 9 ;

 

 

 

 

 

{5Sb ? ,=

{°-

 

 

156 |я,

=

15 =

3-5;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

{11В}я, = {4- °}«,'

1 16 \я , = 44 > 3 - 1 1 ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

і Итак, ошибка

 

может

быть

либо в модуле р2 =

8,

либо в мо­

дуле

р 3 = 9,

так

 

как

для

остальных

оснований

 

условие (2.14)

не выполняется.

 

 

 

 

что

поскольку

 

оба

вектора

{чял/^я, и

Следует

 

отметить,

 

{кдг -|- 1}я, не содержат нулевых компонент, то, в соответствии

с теоремой 2.10, ошибка должна находиться в одном из информа­ ционных модулей. Поэтому произведения {56}я, и {116}я, можно

было бы не вычислять.

Выполним теперь те же действия для числа А2= А1— 200:

{ К } м = {5, 6, 5, О, 6}ж ;

63

(..дг ( Я 2) } я ,

О . » } * , .

 

 

 

 

I5 ( ^ 2)1 Д,

= {3. 2}д, -

6 ( Д ' ) = 1 3 ;

 

 

 

 

 

 

{ 8Sk

=

{ 4 > 5к -

185 [ffi =

4 9 > 3 - 8 ;

 

 

 

 

 

i 93k

=

7к -

| 9 8 | # , = 7 < 3 . 9 .

 

 

 

 

 

из двух альтернативных основании

р 2

и р 2

Ь ft

в обоих случаях удовлетворяет неравенству (2.14).

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

можно считать, что ошибка соответствует именно этому модулю. Определим теперь вектор ошибки, воспользовавшись выраже­

нием (2.22):

{ N \ b p 3\RJ p 3}M ={0, 0, 5, 2, 7}м -

{^

Ьи = {0,0, 0, 2, 7}/И;

{—

°*5’ °- °Ь>;

{ Л Ь , = {5, 6,1,0, 6}АІ.

В случае необходимости можно восстановить и истинное зна­ чение числа

{/1,}Л -

{Я, +

200}д! =

{2, 6, 3, 0, 8} ѵ|, Я, = 30.

Рассмотрим

теперь

способы

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

возникающих

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

операции иемодульного

типа. Как

было показано

в гл. 1, все немодульные

операции

сводятся

к вычислениям позицион­

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

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

любого числа

Я однозначно

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

характеристикой 6(Я) =

= я.ѵ(Я)-г

2.

Если число Я

положительно,

то 6(Я) = 2, отрицатель­

ным числам

соответствует б (Я) = 1. Предположим, что ошибки про­

изошли только в контрольных основаниях, произведение которых равно Qu. Основания эти легко можно локализовать, используя тео­

рему 2.10. Тогда знак

числа

однозначно определяется величиной

[б (Я) I

более

общий случай, когда искажены не

Рассмотрим теперь

только контрольные, но также информационные символы числа. Про­ изведениеоснований, соответствующих этим символам, определим из неравенства (2.14). При этом возможны три различных варианта:

I SQ I*. <

Q:

(2.24а)

< 2 Q ;

(2.246)

2Q < 16Q I*, <

3<?.

(2.24B)

Из доказательства теоремы 2.7 следует, что первый вариант со­ ответствует отрицательным числам (—2N < Я —|Я '| N < —N), я третий — положительным. Таким образом, в этих случаях по

64

величине |6Q |^ можно однозначно определить знак числа. Что ка­

сается второго варианта, то ему могут соответствовать и отрицатель­ ные и положительные числа. Поэтому если произведение |ö Q |^ i по­

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

При вычислении позиционных характеристик Я д^Л ), где Л', яв­

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

Пусть А' — искаженное значение числа А. Тогда в соответствии

сформулой (2.22) можно записать:

А= А' + I BQ Ir NIQ - 6N.

Если Q и N] взаимно просты, то величина N/QN^ является це­ лым числом и, следовательно,

(2.25)

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

системы

оснований,

также

можно

воспользоваться

выраже­

нием (2.22).

 

что число А представлено

в СОК с основанием

Предположим,

Мц причем

I J4 I <

TVj, где ЛГ, — произведение

некоторых

модулей

данной СОК. При расширении системы

оснований требуется опре­

делить вектор {Д}дг2і где N 2— произведение

некоторых модулей,

взаимно

простых

с

М х. Для

вычисления этого вектора

исполь­

зуются не

все символы числа

{А}Мі, а лишь

те, которым соответ­

ствует основание N v

Ошибки, возникшие при выполнении данной операции или исказившие символы исходного числа {Д}уѴІі, по-разному влияют

на результат в зависимости от того, в каких модулях они про­ изошли. Ошибки в контрольных основаниях не влияют на число {Л}дг5. Однако при выполнении операции расширения они могут

быть обнаружены и исправлены обычным способом.

Непосредственные ошибки в добавляемых модулях не обнару­ живаются при выполнении операции, но в тоже время они п не распространяются, и, следовательно, могут быть исправлены при выполнении следующей немодульной операции, операндом которой служит число {•^}Уи1 N,- Наиболее опасными являются ошибки

в тех основаниях, которые входят

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

N u так как

любая из этих ошибок искажает все символы вектора {^4}дг,.

Если {Л'}лг5 = { I А + д Іл/.Ѵ,-

т0

| А1/ѵ,Ьѵ,*

5 З а к а з № 107

65

Подставляя в это выражение значение Д из формулы (2.22), получим

=— I “ I BQ \R ,N IIQ lw,}yv3-

Избавимся теперь от вычислений по модулю Д/, и учтем не­ обходимость коррекции результата расширения при отрицательном значении исходного числа А. Тогда:

{А}„, = { А' + ,bQl«.‘N ‘ - 2 N , J ^ .

(2.26)

Символы вектора {уГ},ѵ„ вычисляются здесь по формулам (1.26).

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

те

же

действия,

можно

исправить

ошибки

 

и в

исходном числе

и в

результате. Такая

ситуация

не возникает,

если

корректируется

непосредственно результат операции.

 

 

 

 

 

 

 

Пример 2.7. В системе остаточных классовое основаниями 5,7,

8, 11, 13, 3 и N =

5-7-8 = 280 представлено число

 

 

 

 

 

И

Ь , - { - 1 ° 0 } д, =

{0. 5, 4, Ю, 4,2},,.

 

 

 

Требуется определить знак числа и позиционную характери­

стику

(Н)}Л1

при

условии,

что

в ходе

выполнения

операции

произошла ошибка в основании р 2 =1:

 

 

 

 

 

 

 

Ы А ) } М,5= {1,4,2,6,1}ж/5;

 

 

 

 

 

 

 

{М Л)},и/5= { 2 Л 2 ,6 ,1 } лі/5, 1Д |7 =

I;

 

 

 

 

 

W

b ,

“ {2-10>1}#,;

 

 

 

 

 

 

 

 

{ * } * , - { W 0 } R ,\

 

 

 

 

 

 

 

 

{7S}y?i = {6,6,0}/?i;|7 B |^

=

6 < p 2.

 

 

 

Число А является отрицательным, поскольку

выполняется

не­

равенство (2.24,а).

 

систему основании,

положив

Д/, =

7-8;

 

Расширим теперь

N 2 — 5 и воспользовавшись выражением (2.26). При этом

1Ц(Л)І5 = 4; [1761^-8 I, = 3; |2JV,|, = 2; |*,(Л ) |5 = [4 + 3 — 2 [5 = 0.

Одновременно можно вычислить истинное значение позиционной характеристики |я 6 (Л )} ^ :

/5 - {°. 0,4,9 .0}jM/e;

Ы А ) } м 15 = { ' Л - 2 . Ы } м ,в.

66

Итак, получено исправленное значение искомой характеристики

(Л)Ьи “ {О-1- 4- 2-6- 1}.«-

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

приятны отказы схем сложения и умножения

в арифметическом

устройстве, так как в этом

случае очень трудно

исправлять

ошибки

в соответствующих символах чисел.

 

кодов

Однако замечательной

особенностью корректирующих

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

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

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

какого-либо из информационных модулей

изменится

знаменатель

дробей, а числители останутся прежними, в

результате

чего изме­

нятся величины чисел, представленных в ЦВМ.

информационный

Предположим,

что

из системы

исключается

модуль pi. Для того

чтобы сохранить прежнюю точность вычисле­

ний, включим в состав информационных оснований

модуль р п + ,.

Если р,1 + 1 > рі,

то

знаменатель

любой

дроби,

представленной

в СОК, увеличится

в рп + іІрі раз

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

уменьшится ее

величина.

 

 

 

 

 

 

 

При выполнении операций сложения и вычитания величина по­

грешности не изменится, и поэтому

после любого

количества таких

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

вРп 1ІРі раз.

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

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

Ь*

67

следует каждый раз при выполнении операции умножения дробей корректировать произведение или одни из сомножителей, а при де­ лении соответственно изменять делимое или частное. Коррекция эта сводится к умножению соответствующего числителя либо на величи­ ну ріірп + 1 (при выполнении операции деления), либо на р„ + і/рі (при умножении дробен). Для вычисления произведения некоторого целого числа А на отношение Pj/Ph можно воспользоваться следую­ щим выражением:

А Рі

*Рк (APj)

Apj - [ Apj ]Рк

Ук

~Рк

 

Данная позиционная характеристика довольно просто опреде­ ляется, если модуль pit входит в состав системы остаточных клас­ сов (р* = р„ +,). В том же случае, когда р* относится к числу оснований, исключенных из СОК (р* = р/), приходится прибегать к косвенным способам вычисления остатка \А р]\р и, соответ­

ственно, искомой характеристики

л (/1р.-),

так

как

схемы,

обеспе-

чивающне умножение

и сложение

модулю

р*, могут оказаться

по

неисправными.

что основание

р*

все

же

входит

в

состав ССДС,

 

Допустим,

но

символ

а*

вектора

А

искажен

на

величину

Да*,

причем

I ак + да [pk =

0. Тогда

 

 

 

 

 

 

 

 

 

 

 

U

І*/; =

1-

Аак IРк =

11Ьр* Ip,N IPk |Pft)

 

 

 

где

/?, и N — произведения соответственно контрольных и инфор­

мационных

модулей

исходной СОК,

в которую

входит

основа­

ние

р*.

 

 

 

 

 

 

 

 

 

 

при вычи­

 

Таким образом, для определения остатка |/1р„+,

слении произведения

А . Рп+'

можно воспользоваться

следующим

выражением:

 

 

 

Рі

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Npn+i

 

 

 

 

(2.27)

 

 

Арп+і \р. \ьРі I#,

Pi

Pi Pt

 

 

 

 

 

 

 

 

 

 

 

 

 

Величина N p n+\jPi

является

константой,

которую можно вычис­

лить заранее. Причем число различных констант данного типа равно п.

При вычислении вектора {6}^ в сокращенной СОК нет необ­

ходимости выполнять операции с символом числа, соответствую­ щим исключенному основанию р,-. Достаточно перед началом вычисления этого вектора формально умножить число {А]міР[

на величину, обратную исключенному основанию.

В связи с тем, что аппаратура, обеспечивающая выполнение операций сложения и умножения по модулю рі, считается неисп­ равной, для вычисления остатка \ А р п+х\р по формуле (2.27) сле­

68

69

дует

воспользоваться

табличным

способом.

Подобная

таблица,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

п

 

 

 

 

которую

можно

хранить

в

ОЗУ,

содержит

^

 

р, чисел, соответ-

ствуюіцих

 

искомым

остаткам

по

 

 

 

(=і

основаниям рі

 

различным

(I =

1,2,

•, п).

теперь,

что из СОК исключено несколько инфор­

Предположим

мационных

 

оснований

рі\........ p is

и их функции

стали

выполнять

контрольные модули />„+ ,........ Pn+s-

 

 

 

 

Rs- Тогда

для кор­

Обозначим: р ц . . . р и

= Qs\

Рп + і- ■-Pn+s =

рекции

величин

произведений дробей следует

определить

 

остаток

|/1/?5 |0

по формуле

(2.27), подставив

 

вместо

рі

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

а вместо р „+ , — величину

Rs.

 

 

 

 

 

 

 

 

 

 

 

Однако

непосредственно

вычисление

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

числа

 

на

константу

N R SIQS по

модулям р-п .........p-is

явно

неце­

лесообразно из-за большого

объема таблицы,

необходимой

в этом

случае. Поэтому коррекцию дроби желательно осуществлять

после­

довательным способом:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

А U +

1) =

AU)Pn+jlPij.

 

 

 

 

 

где

] = 1,2........ s; А (1) =

А;

 

А (s +

1) =

A R S/QS.

 

 

 

Обозначим:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RiPn+s

 

 

 

N R spij

 

 

 

 

 

 

 

 

 

 

*

 

 

Rs

 

 

1

 

QsPn+s

 

 

1

 

N j М (У)) +

 

Тогда

для вычисления

остатка ] A + 1)

можно

восполь-

зоватьс.я

следующим выражением:

 

 

 

 

 

И

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

\ л и - \ - ц Рі.

 

\bj Pi j

 

 

R’jPn+j

 

 

 

 

(2.28)

 

 

 

 

l/?tJ

Pij

 

pu

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Время,

 

необходимое

для

коррекции

дроби, и объем

таблицы

увеличиваются в s раз по сравнению с тем

случаем, когда

отклю­

чается лишь один

модуль.

 

 

 

KiNpn+i

 

 

 

 

 

 

Таблицу

констант

вида

 

 

 

 

МІрР

где

К і

 

 

 

 

 

 

 

 

= 1,2, . . . , р і ^ ii

t =

1,2,

. . . , «,

нет

 

необходимости

вычислять

заранее и хранить в памяти машины. Ее можно сформировать лишь при появлении ошибки постоянного типа в основании р,. Для

этого достаточно иметь

п

исходных констант вида

 

 

f

N p n+,

I

j

 

I

Pi

\PIJM -

Одновременно с формированием указанной таблицей опреде­

ляются числа

 

 

 

 

 

N Рп+і

Рп+і t

где j

= 1,2, ... , n + 1; j j = i

Pj Pj

Pi

jMlPt

 

 

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