![](/user_photo/_userpic.png)
книги из ГПНТБ / Самохин А.Ф. Эксплуатация цифровых вычислительных машин [учеб. пособие]
.pdf- 60-
Г л а в а 1У
кода ДНЯ КОНТРОЛЯ АИШВПГИШК и лопиеских
ОПЕРАЦИЙ
§ 4 .1 . Общие замечания
Аппаратный контроль арифметических операций - задача более
трудная, чал контроль передачи информации. Эту задачу можно сформулировать так.
Имеются два числа, закодированные надлежащим образом. В резуль тате операции, выполняемой над ними, получается третье число.
Необходимо без повторения операции убедиться в наличии или от сутствии ошибок, которые произошли в результате неправильного срабатывания одного или нескольких элементов арифметического устройства.
Ясно, что корректирующий код в этом случае должен обладать
особдаи свойствами. Обязательным, в частности, является совмес
тимость кода с выполняемой операцией, т .е . чтобы признаки, по
которда определяется наличие ошибок, не исчезали и не изменя лись при выполнении операции. Прн этом желательно иметь такие кода, которые содержали бы признак правильности, общий для всего числа, и чтобы этот признак сохранялся у результата опе рации. Кроме того , желательно, чтобы код был самодополюдацим-
ея, т .е . чтобы дополнение кода совпадало с кодом дополнения этого числа (имеется ввиду дополнение гг -разрядного числа до 2П- I ) .
С точки зрения практического применения значительные пре
имущества имеют систематические кода, особенно такие, при ко торых операции над информационной и контрольной частью можно производить раздельно, а результаты сравнивать по заданному признаку.
Имеется целый ряд кодов, обладапцкх указанными свойствами,
и предназначенных как для обнаружения, так и для исправления ошибок. Однако в настоящее время широкое применение в ЭЦВМ на ходят только сравнительно простые кода, предназначенные лишь для обнаружения ошибок.
Для арифметических кодов, как было показано ранее, поня
тие одиночной и групповых ошибок отличается от аналогичного понятия для случая передачи информации. В связи с этим изменя ется и понятие кодового расстояния. Для кодов, обнаруживающих ошибки в арифметических операциях, важно не количество разря дов, в которых отличаются правильные и неправильные числа, а
величина разности этих чисел.
Расстояние между кодовыми комбинациями, изображающими два
числа, определяется кале вес |
разности этих чисел. Например, если |
А = I0 II0 I, а В = I000II, то |
d = W ( А ~ Ь ) = 2 . |
При таком определении сохраняется введенные ранее соотношения меаду корректирующей способностью и его минимальным кодо
вым расстоянием. Так, для уверенного обнаружения одиночных оши бок необходимо иметь d = 2, двойных ошибок - d = 3 и т*д.
КВк видно из определения понятия ошибки и кодового рассто яния в арифметических операциях затруднительно применять кода о арифметикой по модулю 2 (проверка на четность, Хэмминга и д р .).
Одаако, как будет показано ниже, код с проваркой на четность гложет быть применен для контроля некоторых операций.
- 62-
Рассмотрим некоторые коды, применяемые дня контроля ариф
метических операций. |
|
|
§ 4.2. Коды типа AN |
и ^ Л / + М |
|
Одним из возможных способов образования кода, обеспечива- |
||
пцего обнаружение ошибок d суш е или разности двух числе |
, со |
|
стоит в том, что число А представляется в |
виде A-N , |
где |
N - постоянное число. При этом, |
|
|
AN ± BN = N ( A ± B ) |
|
|
Если N выбрано надлежащим образом, |
ошибки в результате |
могут быть обнаружены. Кодирование в данном случае заключается
в умножении чисел на N , а декодирование - в делении. Деление
без остатка указывает на отсутствие ошибок, на обнаружение ко торых код рассчитан.
Корректирующая способность кода зависит от выбора N . Так,
для обнаружения одиночной ошибки очевидно необходимо поставить
требование, чтобы |
2 1 не делилось |
на |
N . |
Это |
условие |
выпол |
||
няется, если N и |
2 взаимно простые |
числа, |
причем М > |
2. В |
||||
частности, можно положить И/ |
= 3. |
|
|
|
|
|
||
Минимальное кодовое |
расстояние |
при этом d |
- 2, избыточ |
|||||
ность кода т = |
3 |
= 1 , 1 , |
Это |
значит, |
что |
требуется |
не |
|
больше двух избыточных знаков. |
Этот |
код не |
самодополняющийся. |
|||||
Для получения самодополняюшегося кода к рассмотренному |
||||||||
выше добавляют постоянное число М , |
т . е . |
образуют код AN 4 М. |
При этом минимальное кодовое расстояние и корректирующая спо собность остаются такими же, как у кода AN , так как
(AN + M) ±(ЬН + М) = / / f / U B W M ± М ) '
- £3-
Дополнение |
т -значного |
числа А равно |
2 |
- / - А . |
|||
Неоо'ходшо |
выбрать |
М таким образом, чтобы код дополнения |
|||||
|
|
был равен |
дополнению кода 2 " - |
1-(АЛ+М ) , |
|||
где |
П - |
число |
знаков |
в коде. |
Таким образом, |
должно выпол |
|
няться |
равенство |
|
|
|
|
|
|
|
|
2 П- |
|
= |
|
|
откуда |
|
|
|
|
|
|
|
м ={[гп-/-А/(2т-/)].
Недостатками этих кодов является т о , что для кодирования и де кодирования необходимо выполнять соответственно операции умно жения и деления, правда, на сравнительно небольшие и заранее известные постоянные числа. Во втором случае добавляется еще операция сложения и вычитания. Кроме то го , эти коды несистема тические. В связи с этим применение этих кодов весьма ограниче но. Они применяются в некоторых случаях в арифметических устройствах последовательного действия.
§ 4 .3 . Коды с использованием наименьших вычетов
Наибольшее распространение в настоящее время получили методы контроля по модулю или контроля по наименьшим вычетам.
Из теории чисел известно, что для любого числа можно за писать тождество
А - R (A)mod^ , |
(4 .1 ) |
которое читается следующим образом: число А тождественно о остатком R f A ) от деления А на модуль .
Это тождество устанавливает следующее соответствие;
A = C j t +В(А),
- 64-
где А |
Ч • 1 ■R - |
целы е |
ч и с л а ; |
|
А - |
лю сю е |
п - р а з р я д н о е ч и с л о ; |
I |
- |
м о д у л ь , |
и л и д е л и т е л ь ; |
|
|
||||
|
- |
ч а с т н о е о т |
д е л е н и я н а |
|
Q - |
о с т а т о к |
о т |
д е л е н и я А н а Cj . |
Под остатком мы обычно будем понимать наименьший положитель
ный остаток |
(наименьший вычет числа |
А по модулю Q |
) . |
Если два целых числа А и В при |
делении на натуральное |
||
число ^ |
дают одинаковые остатки, |
то они называются |
сравни |
мыми по модулю |
. |
Сравнимость чисел |
записывается так; |
|
А = |
3 |
mod^ |
(4 ,2 ) |
|
|
или |
|
|
|
Р (А ) |
= |
U (B)m od^ |
(4 . |
3 ) |
Перечислим некоторые свойства сравнений.
I . Если А и В сравнимы по mod(J, , то их разность де лится на этот модуль без остатка,
т ,е . |
если |
A=Bmod^, , |
то R ( |
^ j modLj, -О |
|
2 . Сравнения обладают свойством симметричности, |
|||||
т .е . |
если |
А-Ьтос/д, , |
то £> =Ато |
|
|
3 . Сравнения обладают свойством транзитивности, |
|||||
т .е . |
если |
А-ВтоцО, |
и B -C nod(j, |
то А = С m od LL |
|
4. |
Сравнения по одному и тому же модулю можно почленно |
||||
складывать и вычитать, |
|
|
|
||
т .е . |
из |
и |
0 = /1modQ- |
следует, что |
|
|
|
А ± С = (' В 1 Л ) mod а |
|
|
65-
5. Слагаемое, стоящее в какой-либо части сравнения, мож но перенести в другуючасть, изменив знак на противоположный,
т.е. если A + B = C f n o d ^ , то А = ( С - В ) mod
6. К любой части сравнения можно прибавить число, кратное модулю, т.е. если
A = B m o d C J, |
, то |
А + KCj. = |
|
||
7. Обе части сравнения можно умножить на одно и то же |
|||||
число, т.е. если |
|
, то |
|
|
|
A = B m od(f, |
А К = В К т о о |
1 д , |
|||
8. Обе части сравнения можно возвести в одну и ту же сте |
|||||
пень, т.е. если A |
= bm od ^ . |
г то А |
= В |
m odcj, |
|
9. Сравнения по одному и тому же модулюможно почленно |
|||||
перемножить, т.е. если |
|
|
|
|
|
А = В m od^ |
и |
С = Д т о с ( д . |
, то |
А С = В Д m odcj, |
10. Обе части сравнения можно разделить на их общий дели тель, если последний взаимно прост с модулем (имеет с нимоб щийнаибольший делитель, равный единице),
т.е. если А С =BCm dcf к |
( С ,р ) = |
/ |
, то |
A |
^ B r n d ty |
11. Обе части сравнения и модуль можно разделить на любой |
|||||
их общий делитель, т.е. |
если |
|
|
|
|
А = Bmodcj и А - К А |
, В = К В ' |
и |
C j,= K (j\ |
то A '- B 'm o d ^ . |
|
12. Если сравнение имеет место по модулю |
Q |
, то оно |
имеет место и по модулю, |
равному любому делителюмодуля g , |
т.е. если A = B m o d g и |
= o #То А ^ В fHod К |
5.3т..0-7.
- 6 6 -
На основании перечисленных свойств сравнений можно полу чить важные для контроля арифметических операций тождества.
Пусть |
,A=R(A2)mod^ |
............. An*R(An)ntodfy , |
|
тогда на основании свойства(4) |
|
|
|
t ^ r t u M m o d q , |
|
<4' 4) |
|
Но, согласно выражению (4 .1 ), |
|
|
|
Ел, = |
<W |
|
< 4 ' 5 ) |
/*/ |
можно |
записать: |
|
Следовательно, на основании свойства 3 |
|||
£ R M , ) = R ( | a i ) m d $ |
(4 .6 ) |
||
|
|||
Аналогично можно получить тождество |
|
|
|
f l R ^ i ) |
= k (U A i)m o d g , |
(4 .7 ) |
|
ы |
14 |
|
|
Тождества (4 .6 ) и (4 .7 ) позволяют использовать наименьшие вычеты для контроля арифметических операций. Например, душ конт роле правильности сложения чисел А и В необходимо до выполнения операции над числами получить вычеты этих чисел Р (А ) и R ( Б ) ,
одновременно с выполнением сложения чисел сложить на отдельном суъвШоре эти вычеты, получить вычет суммы чисел и сравнить вычет cJ'MMbi чисел с суммой вычетов слагаемых. Несовпадение ука-
хе$ йа наличие ошибки.
Аналогично выполняется, с использованием тождества (4 .7 ),
контроль операции умножения. Операция вычитания, выполняемая как операция сложения обратных или дополнительных кодов, конт ролируется как сложение с использованием вычетов соответственно обратных или дополнительных кодов исходных чисел. Операция де ления контролируется через умножение и сложение.
- 6 7 -
Тахт образом, при контроле по наименьшим вычетам имеет
ся возможность отдельно выполнять операции над контрольной частью кода и результаты сравнивать с контрольной частью резуль тата выполнения операции над числами.
Каждая кодовая комбинация в этом случае, очевидно, должна
состоять из кода числа и контрольной части, представляющей наименьший вычет кода числа.
Контрольную часть в дальнейшем мы будем называть контроль ным кодом, а контроль по наименьшим вычетам - контролем по мо дулю .
В практике используют два вица контроля по модулю: число
вой контроль и цифровой контроль. В первом случае контрольным
кодом является |
остаток Я (А ) от деления самого числа А на |
модуль ^ . |
В этом случае при контроле арифметических опера |
ций нет необходимости учитывать переносы. Во втором случае кон
трольным кодом является остаток |
/ ? ( £ ai ) |
от деления |
|
1=0 |
|
суш и цифр числа А на мод |
. Ь частности, цифровой конт |
|
роль двоичных чисел по |
сводится, по |
существу, к конт- |
ролю на четность. |
|
|
При цифровом контроле по наименьшим вычетам при получении результирующего вычета необходимо учитывать переносы. Для по лучения вычета числа необходимо делить это число на модуль,
вычет же суммы цифр числа можно получить более простыми спосо бами.
Ниже будет показано, что при определенном выборе модуля можно, сохранив преимущество числового контроля (Отсутствие необходимости учитывать переносы) свести задачу получения вы чета к нахождению вычета суммы цифр числа как при цифровом контроле.
-68-
§4 .4 . Нахождение вычетов и выбор модуля
Для нахождения вычета числа по mod (J, в общем олучае
необходимо выполнить деление числа на этот модуль. Однако, так как операция деления занимает достаточно большое время, целе сообразно найти способ получения вычетов без выполнения деле ния. Покажем, что это возможно.
Любое тх -разрядное число с основанием системы счисления можно представить в вице:
Р
А = ап-хрП 1+ °п-грп V . . + a / + o / = Z a , / > |
(4-8) |
||||||||
Рассмотрим три случая: модуль больше основания системы, |
|||||||||
модуль меньше основания |
системы |
и модуль равен основанию. |
|
||||||
I . |
Пусть |
Q >р . |
|
|
|
|
|
|
|
Тогда можно записать P ~ $ ~ f |
» |
где |
- |
положительное |
|||||
число, |
определяемое величиной |
. |
Подставив |
значение |
|
||||
в выражение (4 .8 ), получим |
|
|
|
|
|
|
|||
|
|
А = |
|
|
|
|
|
|
(4-9) |
Запишем бином |
С |
в ввде |
РОД8 |
|
|
|
|
||
Из рассмотрения разложения бинома видно, что в образовании |
|||||||||
остатка |
от деления этого |
бинома на модуль |
^ |
принимает учас |
|||||
тие только последний член ряда, |
у которого |
i= j |
. Остальные |
||||||
члены ряда остаток не образуют, |
так как в |
них |
^ |
входит |
со |
множителем. Следовательно, вычет числа А можно определить по тождеству:
- |
6 9 - |
|
n-t |
|
|
R (A ) = L fl/ |
( - 1) f mod (p i f ) . |
4.10 |
<-0 |
|
|
Таким образом, нахождение вычета сводится к нахождению вычета от суммы цифр, помноженных на весовые коэффициенты
2. |
В случае |
Р ~ $ +Г |
аналогичными рассуждения |
|
ми можно получить выражение для определения вычета |
|
|||
|
|
Q [Y lmool ( p - f ) . |
4 . II |
|
|
|
i=0 |
|
|
3. |
В случае |
Q=p в образовании остатка принимает |
участие |
только один младший разряд числа (это видно непосредственно из записи числа) и, следовательно, контролю подвергается только один
разряд. Такой контроль не имеет смысла, и модуль !Ц-=р не приме няется.
Выражения (4 .10) и (4 .II) позволяют заменить нахождение вы
чета числа нахождением вычета суммы цифр, взятых с весовыми коэф
фициентами ( - I ) £J* |
или р 1 . Однако, |
если коэффициенты при каж |
|||
дой цифре различны, |
задача нахождения вычета остается достаточно |
||||
сложной. Эта задача |
существенно упрощается, если принять |
I , |
|||
т.е. использовать |
или (J.=p-i |
, или |
р = p + i . |
|
|
В случае выбора Q= р-i вычет числа, как следует из выраже |
|||||
ния (4 .I I ) , определяется тождеством |
|
|
|
||
|
П-1 |
|
|
|
4.12 |
&(А) = Z aLTnod(p-0 . |
|
||||
|
1=1 |
|
|
|
|
Таким образом, в этом случае для нахождения вычета числа |
|||||
достаточно найти вычет суммы цифр этого числа. |
|
|
|||
Однако непосредственное иоппдт.яппдндя нодуля |
= р~1 |
|
|||
в двоичной системе не.имеет синода, так как остаток от далекая |
|||||
любого числа на модуль, ревшй |
ем |
рааеа едаище; Поэтому |