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

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

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

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

Добавлен: 21.07.2024

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

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

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

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

ема решаемых задач, которые обеспечивает система остаточных классов.

3.2. СХЕМЫ СЛОЖЕНИЯ, ВЫЧИТАНИЯ И УМНОЖЕНИЯ ПО ПРОИЗВОЛЬНОМУ МОДУЛЮ

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

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

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

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

Если 2‘~] < р ^ 2 1, то сумму [ct+ßlji можно вычислять при по­

мощи /-разрядного

двоичного сумматора. Данная операция выпол­

няется

без добавочных аппаратурных затрат лишь в случае, если

р = 21.

Для других

значений модуля р операция сложения сущест­

венно

усложняется

из-за необходимости сравнивать сумму a + ß с

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

вычитания модуля, если окажется, что a + ß ^ p .

Количество оборудования, реализующего указанные дополни­ тельные операции, существенно зависит от типа используемъіх эле­ ментов, способа построения двоичного сумматора (накапливающе­

82


го или комбинационного типа), от требований, предъявляемых к бы­ стродействию ЦВМ, и, наконец, от величины того модуля, по ко­ торому выполняется операция.

Так, например, если р = 2'—1, то схема сумматора

практически

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

достаточно

использовать двоичный сумматор с циклическим переносом, приме­ няемый в позиционных ЦВМ для алгебраического сложения чисел в обратных кодах. Тогда результат корректируется во всех случаях, когда a + ß > p . Если же a + ß = p, то следует установить сумматор в нуль или запретить выдачу единичных сигналов со всех его вы­ ходов.

Для произвольного модуля р схемы, обеспечивающие сравнение суммы a + ß с величиной модуля и коррекцию этой суммы в случае необходимости, составляют около 50% от объема /-разрядного ком­ бинационного двоичного сумматора.

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

I а+ ß — РІ2І~ I “ + ß + (-1Р)І2І‘

Таким образом, если сумма остатков |a + ß |^ p . то к получен­ ному на сумматоре результату следует прибавить константу 2'—р.

Естественно,

что,

в ы и г р ы в а я

в а п п а р а т у р е ,

мы п р о ­

и г р ы в а е м

в

с к о р о с т и выполнения операции

сложения.

Сигнал, обеспечивающий указанную коррекцию, вырабатывается

специальной

схемой, сравнивающей

сумму остатков

с величиной

модуля. Эта схема является достаточно простой; в зависимости от значения модуля и типа применяемых элементов ее объем состав­ ляет 5—15% от общего объема накапливающего сумматора (эту схему можно вообще не использовать, если коррекцию осуществлять лишь при выполнении неравенства a + ß ^ 2 '. Тогда сигналом кор­ рекции служит запись единицы в схеме переноса старшего разряда сумматора.

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

к« + р ) $ И р = l “ £ßip-

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

\°-і + Pl \pj =r \ai\P j .

Рассмотрим теперь способы выполнения операции вычитания. Обычно в ЦВМ вычитание заменяется сложением уменьшаемого с об-’ ратным или дополнительным кодом вычитаемого. Для произвольно­ го модуля р дополнительным кодом остатка ß служит число р—ß, т. е.

I “ — (Чр = !“ + (/> — Р)|р-

6*

83


Обратный код числа ß соответствует величине ß ==2'—I—ß. Поэтому

I “ — ßlp = I“ + P - (2' - 1 - - P)\„ - H’a + J + p + 1|2,| p.

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

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

'для перевода

сумматора в режим вычитания

используется такая

же схема, как и для получения обратного кода.

требует коррекции.

Если а—ß^O, то

результат

вычитания не

В том случае,

когда

a —ß< 0, к

полученному

результату следует

прибавить основание /;. Для этого можно использовать те же цепи, которые применяются и для коррекции результата операции сложе­ ния, так как

I a - ß — (2' — р) |2, = I a — р + р 12, .

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

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

 

7(Л = 12т U — 1) + a-bi—j \р,

где /= 1 , 2, . .., I; у (0) =

0; 60, ..., Ь,_, — двоичные символы остатка.

Тогда у(/)

является искомым произведением.

Величина

2у(/—1)

соответствует сдвинутому на один разряд

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

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

Пусть числа а и а взаимно просты с модулем р. Тогда вели­ чина / называется индексом числа а по модулю р и основанию а, если а и а1 сравнимы по модулю р, т. е. / = inda а, если a l= а mod р. В этом случае величину а можно назвать антииндексом числа /,

Обычно основание индекса является фиксированным для каж­ дого модуля и потому при записи индексов опускается.

84


Предположим, что р является простым числом. Тогда справед­ ливы следующие соотношения:

если а н р mod р, то ind а = ind ß mod — 1), и наоборот:

пп

ind Г"[

aj = 2

inci aj motl (P — !):

j = l

j =

1

ind a" =

n ind a mod (p — 1);

ind (a/ß) = (ind a — ind ß) mod (p — 1); ind 1 = 0 ;

ind 0 не существует.

Кроме простых модулей, индексы существуют для любых целых

чисел, взаимно простых с модулями

вида р1 и 2р1, где р — простое

число, а / — любое натуральное число.

в

качестве индекса нечетного

Для

модулей вида

2',

где /^ 3 ,

числа а

используется

пара

чисел

(и,

ѵ), удовлетворяющая срав­

нению:

 

(—іу '- б ^ ^ а т о б г К

 

 

В этом случае справедливы следующие соотношения:

 

и (aß) =

[и (а)

и (ß)] mod 2;

V (aß) = [Ü (a) -f V (ß)] mod 2г_2-

Если обозначить (и, ѵ) = ind а, то

пп

 

i n d f l

a,;=

2 ind a;iriod(2,2z~2).

 

 

 

 

 

j=\

 

 

]= l

 

 

 

 

 

Таблицы индексов приведены в монографии

[3].

р — простое

 

Итак, для

вычисления

 

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

|a ß |p, где

 

число, следует сначала определить табличным способом индексы

 

перемножаемых величин. Далее при помощи схемы сложения по мо­

 

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

 

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

 

величину |‘<zß|p. В

данном

случае для умножения остатков по мо­

 

дулю р требуется

немногим

больше времени, чем для

сложения

 

или вычитания.

 

 

 

 

 

 

 

 

 

 

Что касается аппаратурных затрат, то, как указывалось выше,

 

их оценка очень сильно зависит от типа используемых логических

 

элементов и выбранных критериев сложности схемы. Предположим,

 

например, что

все

схемы

строятся

на универсальных

 

логических

 

элементах «ИЛИ-HE» или

«И-НЕ» и сложность схем характеризуется

 

суммарным числом входов используемых элементов. Тогда для мо­

 

дулей, величина которых лежит в

интервале (16—32),

схема умно­

 

жения, использующая индексы, содержит примерно в 1,3—1,5 раза

 

больше элементов, чем схема, в которой умножение

выполняется

 

при помощи сдвигов и сложений.

 

 

 

 

 

Индексы можно складывать на том же двоичном сумматоре,

-ч.

который обеспечивает

выполнение

операций

сложения и

вычитания

85


по модулю р. Если сумма индексов меньше, чем 2', то результат операции умножения определяется непосредственно из таблицы ан-

тниндексов,

содержащей 2' элементов.

В том

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

іпсі а + ind ß

2', прежде чем обращаться

к таблице,

следует к дан­

ной сумме прибавить величину 2'—р+1.

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

тели с этими модулями,

необходимо строить специальную

схему

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

ли

целесообразно.

 

 

Если

таблица

индексов

для

 

модуля

р

содержит

2'

элементов,

 

т. е. использует полный дешифра­

 

тор, имеющий

2'

выходов, то для

 

получения

истинного значения

ре­

 

зультата

 

операции

сложения

по

 

модулю р, лежащего в интервале

 

[р, 2'], достаточно умножить этот

 

результат на единицу. Такую кор­

 

рекцию

необходимо

делать

каж­

 

дый раз перед началом вычисле­

 

ния позиционной

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

 

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

 

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

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

в

 

свою очередь не является ре­

 

зультатом

операции умножения.

Рис. 3.2

Перейдем теперь к табличным

способам

реализации

модульных

 

операций.

Под

 

таблицей,

реали­

зующей операцию * по модулю р, условимся понимать комбина­ ционную схему, которая каждой паве операндов а и ß ставит в со­ ответствие величину |а* Р |р .

Возможны различные способы построения подобных таблиц, но чаще всего для этих целей используется схема, приведенная на рис. 3.2. Схема состоит из двухступенчатых дешифратора и шифра­ тора. Дешифраторы первой ступени ДШ 1-1 н ДШ 1-2 преобразуют операнды а и ß из двоичной формы в унитарную. Дешифратор ДШ2 и шифратор Ш1 обеспечивают вычисление результата |oH}tß|p в унитарном коде, а шифратор Ш2 переводит полученный резуль­ тат в двоичную форму.

Будем считать, что дешифраторы состоят из логических эле­ ментов И, а шифраторы —• из элементов ИЛИ, причем слож­ ность этих элементов оценивается числом их входов. Тогда слож­ ность комбинационной схемы, которая предназначена для реализа­ ции таблицы, приведенной на рис. 3.2, можно оценить следующим образом:

Lp (Т) = 2L (ДШ1) + L (ДШ2) + L (Ш1) + L (Ш2) =

= 2рі + 2р* + р* + Ip ß ,

где L — сложность комбинационных схем; I— число двоичных раз­ рядов, необходимых для представления модуля.

86