
книги из ГПНТБ / Торгашев В.А. Система остаточных классов и надежность ЦВМ
.pdfПоскольку во всех трех случаях Б, > 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р.-), |
так |
как |
схемы, |
обеспе- |
||||||||
чивающне умножение |
и сложение |
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
дует |
воспользоваться |
табличным |
способом. |
Подобная |
таблица, |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
п |
|
|
|
|
|
которую |
можно |
хранить |
в |
ОЗУ, |
содержит |
^ |
|
р, чисел, соответ- |
||||||||||||
ствуюіцих |
|
искомым |
остаткам |
по |
|
|
|
(=і |
основаниям рі |
|||||||||||
• |
|
различным |
||||||||||||||||||
(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 |
|
|