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

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

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

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

Добавлен: 21.07.2024

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

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

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

Если целые числа (или числители дробей), представленные в СОК с основанием М = р \ ... рт, лежат в интервале (—Л’, /V), где N=MlR=p\ ... Рп, то знак произвольного числа А однозначно определяется позиционной характеристикой jtjv(A) по формуле (1.32)-.

 

 

sign (Л) = I— яуу (Л) |я.

 

 

Положив

Я ^ 4 ,

это же выражение можно использовать

для

определения

переполнения разрядной

сетки. Так, если |—Д*г(Л)|н =

= 2, то переполнение

произошло

в

отрицательную

сторону, а

при

|я.ѵ(Л )|я = 1—-в положительную.

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

знака числа

или

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

 

Абсолютную величину числа

можно

определить при помощи

•следующего выражения: |А| =

А (1 — 2 sign (/1)).

 

 

ся

Для сравнения

чисел А

и

ß

по абсолютной

величине

требует­

определить

знак

разности

| Л | — |ß |,

выполнив 3(«+1)

модуль­

ных операций (либо 2(п+1), если величины |А|

и )ß | могут вы­

числяться одновременно} ■

 

 

 

 

 

 

 

Перейдем теперь к рассмотрению вопроса о переводе целых и

дробных чисел

из

обычных

позиционных

систем

счисления

в СОК

и обратно.

 

 

 

 

в позиционной

системе счисления

 

Пусть целое число Л задано

с основанием р:

 

 

 

 

 

 

 

 

 

■ А =

 

+•■■-(- алр + в<>>

 

где

0

— 1; і = 0,

1,... ,k — 1

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

условие

p k < М.

 

 

 

 

 

 

 

 

Тогда для перевода числа А в СОК требуется выполнить k—1 модульную операцию, вычисляя (А}м по следующей формуле:

{А )м = {а°Ь і +

{а'Р)м +

‘ ' ' +

 

Обратный перевод целых

чисел из

СОК

в позиционную систему

счисления значительно сложнее.

 

СОК, равен основанию

Пусть один из модулей, входящий в

позиционной системы. Тогда все коэффициенты а0, ..., а^_і можно найти путем последовательного деления числа {А}м на основа­ ние р.

Если Д (у + 1) =

(у')/р], где у =

0,1,..., А — 1

и Л (0) =

Л, то

aj = IА U)lp.

 

 

 

 

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

каждого символа

а0, .... а/с_і

требуется

опре­

делить позиционную характеристику в заданной СОК с основанием М. Поэтому для перевода числа {А}лг из СОК в позиционную си­ стему требуется выполнить (k—1 )п модульных операций. Если ос­ нование р не входит в состав данной СОК, то ее придется расши­ рить, добавляя этот модуль.

Рассмотрим теперь правильную дробь, представленную в пози­ ционной системе счисления с основанием р. Обозначим числитель

этой дроби

через

Л,, а числитель

равной

ей

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

в СОК, — через А-,. Тогда

A J p k =

A ^ N

и,

следовательно, А.г =

= [A1N jp k],

где

N > p k.

 

 

 

 

36


Выразив Ал через символы позиционной системы, получим выражение для определения {Д2} )(:

U ) м ■

-IT ]

+

ak—2

1 N

+

L Рг

 

N

Г ЛП

(1.46)

+

аі пк—1

 

+ ао

РкJ

 

 

 

 

М

Поскольку величины вида Njp' являются константами, то для представления дроби в СОК требуется выполнить k—1 модульных

операций.

Однако за счет

округления

константы вычисляются с

определенной погрешностью.

Поэтому

значение А2, полученное по>

формуле

(1.46), иногда отличается от

искомого числителя дроби,,

пршем ошибка может достигнуть величины 0,5(р—1)й. В тех слу­ чаях, когда диапазон представления входных величин намного меньше N (а именно такая ситуация характерна для большинства ЦВМ, использующих представление чисел с фиксированной запя­ той), величиной ошибки можно пренебречь.

В остальных случаях следует

ввести поправку, определяемую

из следующей формулы:

 

 

яд—lik—1 + A7t/2

а о7о + аі7і +

• • •

+

где

 

 

I - 0 ......Л - 1 ;

7г = I [ N N J p k- ‘) Ij^,

Nj — произведение некоторых

модулей заданной СОК, таких, что

к {р — 1) < JV, < M ß p .

 

 

 

Если число этих модулей равно п\, то для коррекции перво­ начально полученной дроби потребуется к+п\ модульных операций.

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

вода правильных дробей

из одной позиционной

системы

счисления

в другую. Предположим,

что М ^ р М (если это

условие

не выпол­

няется, то придется расширить исходную систему оснований). Тогда

символы числителя позиционной дроби А\/рк можно

вычислить по

рекуррентным формулам:

 

 

 

 

 

 

 

 

 

А

Р

 

Г

Л

(0 р

А

U +

1) = А

(0 Р —

N

 

N ; а/г-і = I

 

N

где і =

1, 2......k',

Аг (1) = Аг.

 

 

 

 

 

 

В целом

процесс перевода потребует nk модульных операций.

Пример

1.10. Перевести десятичную

дробь

Д,/102 = 0,78

в систему остаточных классов с основаниями

ш = 3,

р» = 5, р г= 7.

р 4 = П, N = 105 и М = 1155.

 

 

 

 

 

 

Вычислим сначала необходимые константы, приняв

Д7, = 5-7 =

= 35:

 

 

 

 

 

 

 

 

7. = 17.

[Nlp*] = 1;

[ N lp ] - 1 0 ;

7о =

1[105-35/100] f3i =

1;

 

 

 

 

j

g

I ly 7

1 27

 

 

Тогда

As = 8-1 +

7.10 = 78; Д =

 

g-g'---------= 4; {А + Д}лі=

( 82}ш 5= I 1-

2, 5, 4}11051 55*

 

 

 

 

 

 

37


Пример 1.11. Перевести дробь {1, 2, 5, 4}}^5> представленную

втой же СОК, в десятичную систему счисления.

Вданном случае можно не расширять заданную СОК, поскольку

ЮN <

М.

При этом а, = [82-10/105] = 7; А г (2) = 82-10 — 7-105 =-

= 85;

й0=

[85-10/105] = 8. Итак, И, = 0,78.

1.8. ОСНОВНЫЕ РЕЗУЛЬТАТЫ

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

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

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

бые

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

от времени, затрачиваемого

на

их выполнение, существенно зависит

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

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

Время, необходимое для выполнения любых немодульных опе­ раций, пропорционально числу тех модулей, которые определяют знаменатель дроби. Поэтому, переходя к вычислениям с меньшей точностью (к меньшим знаменателям), можно повысить скорость вычислений. Выше эта скорость определялась через число модуль­ ных операций. Однако в тех случаях, когда производительность ЦВМ является менее важной характеристикой, чем количество аппа­ ратуры или надежность, желательно модульные операции разло­ жить на элементарные, к которым отнесем формальное умножение, сложение и вычитание. Очевидно, что некоторые из модульных опе­ раций, рассмотренных выше, эквивалентны нескольким элементар­ ным. Например, для вычисления величины (l/pj)(A —<Zj) требуется одна модульная операция, но две элементарных.

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

і

38


 

 

 

 

 

 

 

Т а б л и ц а

1.1

Н а з в а н и е а р и ф м е т и ч е с к о й

К о л и ч е с т в о М О

К о л и ч е с т в о Э О

 

о п е р а ц и и

 

Сложение

...........................

 

 

 

 

1

1

 

Вычитание...........................

знака

числа

 

1

1

 

Определение

 

 

 

 

или наличия

 

переполне-

 

п

2 п

 

ния ...................................

 

абсолютной

 

 

Вычисление

 

п + 1

2 п + 1

 

величины ...........................

 

 

 

 

 

Сравнение

абсолютных ве-

 

 

6л +3

личин . . . .

. . . .

2

( п + 1 )

Умножение дробей

. . . .

3 (л +3)

10 (л +3)

Деление дробей .

. .

л2+3л

h2] logüA^

2+6л+4] logjATf

Перевод дробей

из

пози-

 

 

 

 

цистной

системы в СОК

 

f t — 1

2 ( f e —

1 )

Перевод дробей из

СОК в

 

nk

2 nk

 

позиционную систему .

 

 

Примечание, k — число разрядов позиционной системы; N — знаменатель дробей; п — число оснований СОК, определяющих зна­ менатель.

Г Л А В А В Т О Р А Я

КОРРЕКТИРУЮЩИЕ КОДЫ В СИСТЕМЕ ОСТАТОЧНЫХ КЛАССОВ

2.1. ОСНОВНЫЕ ПОНЯТИЯ И ОПРЕДЕЛЕНИЯ

Рассмотрим некоторый вектор А = (а,, а2.........ат), компонен­ тами которого являются натуральные числа, удовлетворяющие

условию:

1,

где

г = 1 , 2 , . . . , /л; р х....... рт—фиксиро­

ванные натуральные числа.

различных (т. е.

отличающихся хотя бы

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

число

одной компонентой) векторов

такого типа

равно произведению*

•Р = Р\Рг''-Рт-

* Буквой Р обозначим также множество всех векторов подоб­ ного вида, т. е. А еР. Таким образом, в зависимости от контекста под символом Р понимается либо множество векторов А, либо число элементов этого множества.

39