Файл: Торгашев В.А. Система остаточных классов и надежность ЦВМ.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л2+6л+4] logjATf |
||||
Перевод дробей |
из |
пози- |
|
|
|
|
||
цистной |
системы в СОК |
|
f t — 1 |
2 ( f e — |
1 ) |
|||
Перевод дробей из |
СОК в |
|
nk |
2 nk |
|
|||
позиционную систему . |
|
|
Примечание, k — число разрядов позиционной системы; N — знаменатель дробей; п — число оснований СОК, определяющих зна менатель.
Г Л А В А В Т О Р А Я
КОРРЕКТИРУЮЩИЕ КОДЫ В СИСТЕМЕ ОСТАТОЧНЫХ КЛАССОВ
2.1. ОСНОВНЫЕ ПОНЯТИЯ И ОПРЕДЕЛЕНИЯ
Рассмотрим некоторый вектор А = (а,, а2.........ат), компонен тами которого являются натуральные числа, удовлетворяющие
условию: |
— 1, |
где |
г = 1 , 2 , . . . , /л; р х....... рт—фиксиро |
|
ванные натуральные числа. |
различных (т. е. |
отличающихся хотя бы |
||
Очевидно, что |
число |
|||
одной компонентой) векторов |
такого типа |
равно произведению* |
•Р = Р\Рг''-Рт-
* Буквой Р обозначим также множество всех векторов подоб ного вида, т. е. А еР. Таким образом, в зависимости от контекста под символом Р понимается либо множество векторов А, либо число элементов этого множества.
39