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

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

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

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

Добавлен: 21.07.2024

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

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

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

Величину l/li-W,,]^ найдем с помощью метода, предложенного в предыдущем параграфе. Так как < N u то минимальное рас­ стояние кода при вычислении величины {А/р/}^', определяется

модулями, входящими в произведение R N 2.

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

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

чиваются, можно перейти к парному

.представлению числовой

ин­

формации в СОК.

 

 

 

 

 

 

Пусть

А = ЛдЛ'', Ч-МЕ, где | /11<

N 2.

Тогда дробь A j N \ можно

представить

и СОК в виде пары

чисел {лЛді'

11

 

Если

N - n N 2t

го

минимальное

расстояние

увеличивается

примерно

на п/2 единиц по сравнению с соответствующим

расстоянием

при

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

 

 

 

 

 

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

ячеек ОЗУ и,

кроме того,

возрастет

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

основных

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

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

примерно

в два раза

Для того

Пусть, например, /Ѵ=3 • 5 • 7 • 8 • 11 • 13 • 17 • 19«22Б.

чтобы код позволял исправлять ошибки постоянного типа в любых

двух основаниях СОК,

необходимо

иметь,

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

контрольных модуля: R і =23 ■2931.

 

представлению

чисел, то для

Если же перейти к парному

 

сохранения

точности

и надежности

вычислений

достаточно при­

нять: ЛГ, = 3-5-7-8-11;

228; /?'

=

13-17-19,

т. е.

N = , N tR[.

Данный

метод представления

чисел,

по-видимому, целесооб­

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

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

72


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

Предположим, что запоминающее устройство содержит N ячеек

и числа,

соответствующие, номерам

ячеек,

представлены в СОК

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

рі, .. .,

рп,

р„ + 1.

Если

Р і< Р г< • • • <Р>,+і и

N = p t ...

р„,

то такой

код

может

обнаружить любую одиночную

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

ме. Если ошибка была случайной,

корректирующая способность

кода останется неизменной. Если

же ошибка вызвана отказом

какого-либо элемента адресного тракта, то переход к выполнению

программы,

размещенной

в ячейках с номерами, не превышаю­

щими N/p„,

эквивалентен

повышению на единицу минимального

кодового расстояния. При

этом появляется возможность опреде­

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

Таким образом, R-код с минимальным расстоянием d = 2 позво­ ляет исправлять одиночные ошибки постоянного типа.

Обычно в управляющих ЦВМ используются запоминающие уст­ ройства двух типов. Для хранения программы и различных кон­ стант служит постоянное запоминающее устройство (ПЗУ), а дан­ ные (исходные, промежуточные и результаты) хранятся в оператив­ ном запоминающем устройстве (ОЗУ). Поэтому если ошибка про­ изошла в адресном тракте ОЗУ, то для локализации отказавшего модуля следует перейти к такому участку программы, в процессе выполнения которого используются лишь первые N/p„ ячейки ОЗУ. Естественно, что данный участок программы не обязательно должен носить тестовый характер.

Предположим, что ЦВМ решает ряд различных самостоятельных задач л программы, соответствующие некоторым из этих задач, можно разместить в первых N/p„ ячейках ПЗУ. Тогда при исклю­ чении какого-либо модуля прежнюю корректирующую способность кода можно сохранить, если ограничиться лишь выполнением про­ грамм, расположенных в первых N/pn ячейках ПЗУ. При появле­ нии второй ошибки номер неисправного модуля можно определить, переходя к программам, расположенным в первых N/(pn_\, р„) ячейках и т. д.

Таким образом, использование приведенного выше корректиру­ ющего кода позволяет обеспечить безошибочное выполнение всей программы, записанной в ЗУ при отказе любого модуля системы остаточных классов, в которой представлен код адреса, или безоши­ бочное выполнение части программы, записанной в первых N/p„ ячейках ПЗУ при отказе двух любых модулей, или части програм­ мы, записанной в первых NI(pn-iPn) ячейках ПЗУ при отказе трех любых модулей и т. д.

73


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

N/pп, Nj(pn_\pn) ячеек ОЗУ и т. д.

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

2.7.ФУНКЦИОНАЛЬНОЕ КОДИРОВАНИЕ

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

К числу наиболее эффективных алгоритмических способов обна­ ружения и коррекции ошибок относится метод избыточных пере­ менных (функциональное кодирование) [6—8].

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

множества входных переменных Хі, . .

x m во множестве выходных

переменных у і, ..., у п, причем в качестве

переменных могут использо­

ваться действительные, целые или булевы

числа. Расширим множество

выходных переменных, добавляя функции у„ +1 ...........У п + г такие, что:

у „ + і (дг...............* т ) = ф і ( і / і ............Уп ) , где і = 1,

2, . . . ,

Г.

Естественно, что эти добавочные функции

могут

быть исполь­

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

В работах [6, 7] подробно исследуются вопросы построения функциональных кодов для таких исходных функций у\, . .., у п, которые являются линейными относительно некоторой базисной си­

стемы ÜJ (ДГі, . . .,

Xm),

■■■, V s ( x I,

. . Xm),

T.

C.

 

 

 

 

S

 

 

 

где i— 1, 2.........

m,

причем все

переменные

и коэффициенты

Со­

относятся к множеству действительных чисел.

 

до-

Следует отметить, что класс

подобных

функций является

74


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

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

Для обнаружения практически любых ошибок достаточно вве­ сти лишь одну добавочную переменную:

 

п

 

Уп+і (*і.......х т) = — 2

Уі С*і.........х т) =

( = 1

 

 

= 2

^л+ 1, у ѵ/ (Х>’ • • • >х т)>

]= 1

 

 

где

п

 

 

 

^п+і, у =

— 2 ^ '/>

7 = l > 2 , . . . , s .

 

г= 1

 

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

п + 1

2 У '1(•*!’ ' ' ' 1Хт) = t= 1

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

л+ 1

2 УI ("И >• ' ■' х т) < д . /=1

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

Нетрудно убедиться в том, что рассмотренный код позволяет

обнаружить любую ошибку, выводящую какую-либо одну

из пере­

менных у\, . . у п+ \

за пределы границ, обусловленных

допусти­

мыми погрешностями.

Такого рода ошибки называются

грубыми.

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

видно, что доля

этих ошибок от общего их числа равна

1—Д/Т,

где L — диапазон

представления чисел в. ЦВМ. Интересно

отметить

аналогию между

обнаруживающими

возможностями функциональ­

ных кодов и І?-кодов, для которых

доля обнаруживаемых

ошибок

75


составляет 1—NIL. Поскольку A/LÄ;0, можно считать, что практи­ чески любые ошибки, возникающие в процессе решения задачи, могут быть обнаружены с помощью подобного простейшего функ­ ционального кода.

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

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

у, = х, sin а -+- A'jjlcos’a; у2 = х хCOS а + Sin а.

Положим у3 = — (Уі + Уг)- Тогда, выполняя элементарные триго­ нометрические преобразования, получим:

Уз = — 1,41 [л', cos (я/4 — а) -f- jr* Sin (it/4 — а)]. При этом выполняется контрольное условие

I Ух +

Уг + Уз I А-

Функциональные коды позволяют не только о б и а р у ж н в а т ь,

но и и с п р а в л я т ь ошибки,

возникающие в процессе решения

задачи. Если грубые ошибки, искажающие отдельные выходные пе­ ременные, являются независимыми, то для коррекции любых /-крат­ ных ошибок достаточно использовать 2t добавочных переменных. Причем подавляющую часть этих ошибок можно исправить при использовании лишь t+ 1 добавочных переменных. Здесь также мож­ но провести определенную аналогию с корректирующими /^-кодами. Следует отметить, однако, что отказ какого-либо из элементов ЦВМ чаще всего приводит к искажению всех функций, вычисляемых в ходе решения задачи. Поэтому корректирующие функциональные коды принципиально не могут применяться для борьбы с подоб­ ными ошибками и область их применения обычно ограничивается коррекцией ошибок, обусловленных случайными сбоями. В то же время даже простейший функциональный код в сочетании с систе­ мой остаточных классов позволяет в известной степени бороться

с ошибками, вызванными отказами элементов ЦВМ.

Пусть в вычислительной машине используется нензбыточная

система остаточных

классов с основаниями

и

для конт­

роля хода решения

задачи к исходным

функциям

у

...

добав-

 

 

«+і

 

 

 

ляется еще одна переменная у„+і, такая,

что

При

появ-

 

 

і = \

 

 

 

лении ошибки нарушается контрольное условие: м+ 1

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

76