
книги из ГПНТБ / Дроздов Е.А. Многопрограммные цифровые вычислительные машины
.pdfДля обеспечения возможности округления в машинах часто вы числяется значение дополнительного разряда частного путем вы полнения дополнительного шага деления. Округление выполняется путем прибавления единицы к значению дополнительного разряда. Для примера 2.14 округленное частное равно
ОМОН !Т|
+Т
ОМ 100 Гб'!, |
т. е. Г -ф П |
= ОМ 100. |
'--1 |
L Л2-]Пр |
|
|
• |
|
О п е р а ц и и н а д ц е л ы м и д в о и ч н ы м и ч и с л а м и
Для выполнения арифметических действий такие числа вырав ниваются по младшим разрядам, правее которых факснруется за пятая. В арифметическом устройстве операции выполняются над операндами, имеющими одинаковую длину. Однако в запоминаю щем устройстве длина их может быть разной. Обычно в машинах устанавливается несколько возможных для использования длин: например, полуслово, слово и двойное слово, соответственно имею щие 16, 32 и 64 двоичных разряда. Длины операндов, над кото рыми должны быть произведены действия, указываются в коман дах программы.
Крайний левый разряд (нулевая позиция) операнда любой дли ны отводится для представления знака (рис. 2.1,6). За исключе нием выравнивания по правой границе операндов сложение и вы читание в арифметическом устройстве целых двоичных чисел выполняются аналогично действиям над правильными дробями. Если, например, в запоминающем устройстве отрицательные числа хра нятся в дополнительном коде, то, когда требуется выполнить алге браическое сложение, они просто складываются (см. пример 2.6).
Операнды, соответствующие положительным целым двоичным числам, занимающим только часть разрядов (младших) слова, имеют во всех разрядах левее старшей значащей цифры нули, а соответствующие отрицательным — единицы. Поэтому увеличение длин операндов в сторону старших разрядов осуществляется про стым добавлением разрядов, содержащих согласно знаку нули при положительном и единицы при отрицательном числах.
Переполнение можно обнаружить применением в арифметиче ском устройстве модифицированных кодов или путем анализа пе реносов в знаковый разряд и из знакового разряда (см. при мер 2.10).
Из арифметических действий над целыми числами большими особенностями обладают операции умножения и деления. Произ ведение двух «-разрядных двоичных чисел имеет не более 2п раз рядов. Это обстоятельство необходимо учитывать при перемно жении целых чисел. На машинный код результата операции умно
€0
жения должно отводиться удвоенное количество разрядов. В этом случае при умножении никогда не произойдет переполнения.
Процесс собственно перемножения целых двоичных чисел мо жет строиться как по схеме а, так и по схеме б, которые были рас смотрены в примере 2.11. В обоих случаях перемножаются пол ностью я-разрядные операнды независимо от того, сколько разря дов в них занимают целые числа.
При делении целых чисел, наоборот, один из операндов, а имен но делимое, имеет удвоенное количество разрядов по отношению к делителю и частному. Так же как и умножение, собственно де ление реализуется аналогично рассмотренному выше. Важно лишь правильно начать вычитание делителя из старших разрядов де лимого. Для этого вначале делают пробные шаги, чтобы пра вильно расположить делимое и делитель. Критерием правильности расположения может быть получение первого отрицательного остатка.
§2.5. Арифметические операции над числами
сплавающей запятой
Для выполнения действий над числами, представленными в форме с плавающей запятой, в арифметических устройствах не обходимы дополнительные схемы, оперирующие с порядками. Опе рации над порядками производятся как с целью определения порядка результата, так и для подготовки мантисс, например, к сложению и вычитанию.
Сложение. Порядки и мантиссы, представляющие числа в форме с плавающей запятой, в запоминающих устройствах обычно хра нятся в прямом коде (см. § 2.3).
При выборке слагаемых из запоминающего устройства их ман тиссы и порядки разделяются и поступают в соответствующие схе мы арифметического устройства. В схеме, оперирующей поряд ками, они сравниваются. Наиболее просто это осуществляется, если вместо истинных порядков используются характеристики (см. § 2.3). Если порядки слагаемых неодинаковы, то осуществляется выравнивание порядков путем сдвига вправо мантиссы числа с меньшим порядком и соответствующим увеличением послед него.
Действительно сумма двух нормализованных чисел А и В, |
пред |
|
ставленных в полулогарифмической форме, на основе |
(2.4) |
может |
быть записана в виде |
|
|
S = N Psms = N PAmA + N PBmB. |
|
(2.18) |
Так как мантиссы представляются меньшими |
единицы, то |
чтобы не получить мантиссы, большей единицы, порядки следует выравнивать в сторону большего порядка. Предположим, что
61
Ра > Р в . Тогда для выравнивания порядков |
следует |
порядок р в |
||||
увеличить на величину |
разности р А— р в , |
т. е. |
|
|
|
|
в NPa ~Pb |
= n Pbn Pa~Pb - |
|
= |
N PAm' |
(2.19) |
|
n pa- pb |
|
PA~PB |
|
b |
|
|
|
N‘ |
|
|
|
|
|
i |
|
|
»rPA—PB |
, т. e. сдвинутая |
||
где mB— мантисса ms , разделенная на |
N |
|
на рА—Рв разрядов вправо.
Теперь сумму чисел с одинаковыми (выравненными) порядка ми можно представить в виде
5 = N Psms = N PAmA + N PAm’B= N Pa (tnA+ m'B). (2.20)
Следовательно, мантисса суммы ms = mA -\- т ’в и порядок сум
мы p s = P A.
Если выполняются операции с автоматической нормализацией, то по окончании сложения сумма S нормализуется.
Таким образом, сложение чисел с разными порядками состоит из трех этапов:
—выравнивание порядков слагаемых;
—сложение мантисс;
—нормализация результата.
Мантиссы слагаемых с выравненными порядками складыва ются аналогично сложению чисел с фиксированной запятой. Для представления отрицательных мантисс используются дополнитель ный или обратный код.
При алгебраическом сложении мантисс возможны случаи по лучения результата, меньшего 0,1... (двоичное число). Такие слу чаи называются нарушением нормализации вправо. Признаком такого нарушения нормализации чисел, представленных в любом коде (прямом, дополнительном или обратном), является наличие одинаковых цифр (О’.О или Г.1) в двух разрядах слева неправа от запятой.
При сложении мантисс, по абсолютной величине меньших еди ницы, возможны случаи переполнения разрядной сетки сумматора мантисс, называемые нарушением нормализации влево. Если при меняются модифицированные коды, то признаком нарушения нор мализации влево служит появление разных цифр (0 Г ,... или 10’, ...) в знаковых разрядах.
Результат нормализуется путем сдвига мантиссы в нужную сто рону и коррекции порядка суммы. При нарушении нормализации вправо мантисса в процессе нормализации сдвигается влево до тех пор, пока в разрядах слева и справа от запятой не появятся разные цифры, например, ОМ... или Г.О... По окончании сдвига мантиссы порядок суммы уменьшается на число единиц, соот ветствующее числу разрядов, на которое была сдвинута ман тисса.
62
При нарушении нормализации влево мантисса суммы в про цессе нормализации сдвигается на один разряд вправо, а порядок увеличивается на единицу. После сдвига мантиссы вправо она округляется, как было указано в § 2.4 для случаев умножения и деления.
Пример 2.15. Пусть требуется сложить два числа, записанные в запоминаю щем устройстве в следующем виде:
[Л]пр= |
0 .1 1 0 1 ’ ’1 0 1 0 0 |
и |
[£ |пр= 1 . 1 1 0 0 ' 40110, |
||||
|
|
|
|
|
|
.1 |
|
Знак числа |
Мантисса |
|
Знак числа |
Мантисса |
|||
Характеристика |
|
|
|
Характеристика |
|||
что соответствует |
|
|
|
|
|
|
|
Л = шдМРа = |
+ 0,10100-Ю11»1 |
и В = тв МРв = — 0.10110-1011»0. |
|||||
Характеристики |
р \ и рв представляют собой |
|
|||||
и |
р'л = [рд 1пр + 23 = |
0.101’ |
+ 1000 = 1101’ |
||||
|
|
|
|
|
|
|
|
Рв = [рв ]пр + |
23 = 0.100’ + |
1000 = |
1100’, |
||||
где рА и рв истинные порядки |
(дд = |
+ |
101 |
и рв = |
+ 1 0 0 ). |
а) Выравниваем порядки слагаемых, для чего вычитаем из характеристики р \ характеристику рв . Вычитание заменяем прибавлением дополнения рв до 24,
т. е. 0100. Тогда
,1101
+0100
0001.
Так как р'А на единицу больше рв ,то сдвигаем вправо на один разряд ман
тиссу [/йй|Пр = Г. ЮНО. В результате получаем [шд]пр = Г,01011.
б) Складываем мантиссы с использованием модифицированного дополни тельного кода:
[т л]пР = оомоюо
+Ы д о п = + Н'Л0Ю1
К]п р + К ]д оп = 00\01001 = [тА + т'в]«г
-------^Нарушение нормализации вправо!
в) Нормализуем результат 0,01001 • 101101, для чего сдвигаем мантиссу на один разряд влево и из значения характеристики суммы вычитаем единицу. Нор мализованный результат 0 , 1 0 0 1 -Ю1100.
В запоминающее устройство результат суммирования будет записан в сле дующем виде:
0. 1100’ ’ 1001.
63
Результат алгебраического сложения может превысить макси мально возможное число, которое может быть представлено в ма шине. Это обнаруживается как возникновение порядка, превышаю щего после нормализации результата максимально допустимый (например, при сдвиге мантиссы вправо и при прибавлении' еди ницы к порядку). В таких случаях в арифметическом устройстве вырабатывается сигнал, вызывающий прерывание исполняемой программы.
Вычитание. По команде ВЫЧЕСТЬ вычитание чисел с разны ми порядками, как и сложение, производится в три этапа:
—выравнивание порядков;
—вычитание мантисс;
—нормализация результата.
При вычитании мантисс в арифметическом устройстве искус ственно меняется знак вычитаемого на обратный, что позво ляет операцию вычитания формально свести к операции сло жения.
Умножение. Из общего выражения для произведения двух чи сел A — mAN PA и В = mBN PB, представленного в виде
П = |
mnN Pn = mAtnBN р а + р в |
( 2 . 21) |
следует, что порядок произведения рп = РА + Рв |
и мантисса про |
|
изведения т^ — тлтв. |
|
|
Перемножение мантисс чисел, представленных з форме с пла вающей запятой, выполняется аналогично умножению чисел, пред ставленных в естественной форме с фиксированной запятой. Поря док произведения определяется путем суммирования порядков со множителей.
Если вместо истинных порядков применяются характеристики P'a = P a jt 2? и р'в = РвЛ- 29, где q — количество двоичных раз рядов, которое может иметь число, выражающее максимально воз можный порядок, то характеристика произведения определяется как
( 2.22)
В общем случае процесс умножения состоит из следующих этапов:
— определение знака произведения путем сложения по mod 2 знаковых разрядов мантисс сомножителей;
—определение порядка произведения;
—перемножение мантисс;
—нормализация результата.
Если перемножаются двоичные нормализованные числа, то ман тисса произведения тн может иметь любое значение в пределах 0,01 <|#гп|<4.0 и, следовательно, может иметь место только на рушение нормализации вправо не более чем на один разряд. Слу-
Н
чаи переполнения сумматора порядков фиксируются выработкой специального сигнала переполнения.
Деление. При делении чисел, представленных в полулогариф мической форме, мантисса частного определяется путем деления мантиссы делимого на мантиссу делителя, а порядок частного — вычитанием порядка делителя из порядка делимого. Деление ман тисс выполняется точно так же, как и деление чисел с фиксирован ной запятой, выраженных в виде правильных дробей.
В общем случае процесс деления в машинах с плавающей запя той состоит из следующих этапов:
—- определение знака частного;
—определение порядка частного;
—деление мантисс;
—нормализация результата.
При делении двоичных нормализованных чисел мантисса част ного оказывается заключенной в пределах 0,1 <С | то, | <10. В ре зультате может иметь место нарушение нормализации влево не более, чем на один разряд.
§ 2.6. Арифметические операции над десятичными числами
При организации выполнения таких действий десятичные числа обычно представляются как целые, т. е. с запятой, фиксированной справа. Для операций сложения и вычитания они выравниваются по правой границе, определяемой этой запятой. Арифметические операции над десятичными числами начинаются с анализа знаков. Если знаки одинаковые, то по команде СЛОЖИТЬ числа скла дываются в прямом коде. Если знаки разные, то из большего числа вычитается меньшее. Меньшее, в данном случае отрицательное,
число |
представляется в виде |
дополнения до 10п, где п — количе |
ство |
десятичных разрядов в |
наиболее длинном из участвующих |
в операции операнде. В результате вычитание заменяется сло жением положительного числа с дополнением отрицательного. При выполнении команды ВЫЧЕСТЬ знак второго операнда предвари тельно изменяется на обратный, после чего действия над деся тичными операндами в арифметическом устройстве производятся так же, как и при алгебраическом сложении.
Пример 2.16. Аналогично примеру 2.7, используя кодирование с избытком 6 , произвести арифметические операции сложения и вычитания.
а) |
Сложить числа /Ь = +82 и А2——75 (+1000 0010 и —0111 0101). Допол |
||||
нение 75 до 102 |
равно 25, тогда |
|
|||
,82 |
А, |
и |
1 0 0 0 |
0 0 1 0 |
А, |
"*”25 Доп. А2 |
|
"П000 |
1011 |
Доп. А2 (с избытком б в каждой тетраде) |
|
п «- 07 |
Л + А2 |
п ч- 0000 |
1101 |
|
|
|
|
|
+ |
1010 |
Коррекция |
|
|
|
|
||
|
|
|
Q0QO 0Ш |
А} + А3 |
65
При выполнении сложения над числами в двончио-десятнчпой форме допол нение второго числа определяем путем инвертирования значений двоичных раз рядов в тетрадах с прибавлением единицы в младший разряд младшей тетрады. Такое дополнение получается с потетрадным избытком 6 . Поэтому если при сло жении нет переносов из каких-либо тетрад, то они корректируются путем вычи тания из них 6 (прибавления 1010— дополнения 6 до 16). Наличие переноса п из старшей тетрады при сложении Ai и дополнения Д2 свидетельствует о том, что
результат получился в прямом коде.
б) Найти разность Л]—Д2= 75—82= 75+(—82).
Дополнение 82 до 102 равно 18, тогда
75 |
Д, |
и |
О + |
|
18 |
Доп. — Д2 |
|
О |
|
|
|
|
||
93 |
Доп. Д] — Д2 |
|
1 1 1 1 |
J |
|
|
|
А |
|
07 |
Д4 — Л2 |
|
I |
|
|
|
|
+ 1 0 1 0 |
|
|
|
|
1001 |
|
, 0 1 1 0
+ 1 0 1 0 0 0 0 0
Д ,— А2 = — 7 (-0000 0111).
0 Ю1 д ,
1110 Доп. А2 ( с избытком 6 в каждой тетраде)
ООН
Коррекция ООП Доп. А — а 2
1101 Д, — А2 ( с избытком 6 в каждой тетраде)
1010 Коррекция
0111 Ai — Д2 (истинное значение)
В данном примере отсутствие переноса из старшей тетрады при сложении Ai
и дополнения для — Д2 говорит о том, что результат получился отрицательный в виде дополнения. Для определения истинного значения результата надо от по лученного дополнения для А^— Д2 взять новое дополнение и из него потетрадно
вычесть 6 (прибавить 1 0 1 0 ).
Таким образом, при сложении чисел с разными знаками ука занным выше образом знак результата определяется по наличию или отсутствию переноса из старшей тетрады. Если перенос есть, то результат положительный в прямом коде. Если нет переноса, то получается отрицательный результат в виде дополнения. Когда при сложении чисел с одинаковыми знаками возникает перенос из старшей тетрады, то это свидетельствует о десятичном пере полнении.
В отличие от действий над двоичными числами умножение и де ление десятичных чисел в машинах реализуется сложнее. Суще ствуют различные способы выполнения этих операций. Умножение может производиться как путем последовательного формирования частных произведений с помощью десятичной таблицы умноже ния, специальным образом введенной в машину, так и по способу последовательного сложения. Процессы последовательного сложе ния в различных модификациях, позволяющих в той или иной мере повышать скорости вычислений, аналогичны тем, которые исполь зуются при вычислениях вручную с помощью обычных арифмо
метров.
Суть процесса последовательного сложения заключается в том, что множимое, определенным образом сдвинутое, прибавляется столько раз, сколько единиц содержится в очередной цифре мно жителя, на которую производится умножение,
66
Пример 2.17. Вычислить произведение 17X23. Множитель — 23
|
, 0000 |
|
1 |
|
|
|
|
|
|
|
+ |
|
|
|
|
||
|
+ |
17 |
|
3 — |
1 = 2 |
|
• |
|
|
,0170 |
|
|
|
|
После очередного при |
||
|
+ |
17 |
|
2 - 1 |
= |
1 |
бавления множимого цифра |
|
|
, 0340 |
|
|
|
|
множителя, |
иа которую |
|
|
+ |
17 |
|
1 - |
1 = 0 |
производится |
умножение, |
|
|
|
0510 |
|
|
|
|
уменьшается на единицу |
|
Сдвиг суммы - |
|
|
|
|
|
|
|
|
|
0051 |
' |
г |
|
|
|
|
|
частного |
+ |
17 |
2 |
- 1 |
= |
1 |
|
|
произведения |
|
0221 |
|
|
|
|
|
|
вправо |
+ |
17 |
1 — 1 = 0 |
|
|
|
0391 — произведение.
Количество десятичных разрядов произведения не превышает суммарного количества цифр сомножителей. Знак произведения формируется логическим способом так же, как и при действиях с двоичными числами.
Одним из способов ускорения процессов умножения рассмотрен ного типа является комбинирование действий сложения и вычи тания. Для цифры множителя от б до 9 оказывается удобнее и быстрее вместо сложения производить вычитание столько раз, сколько единиц содёржится в дополнении цифры до 10. При такой замене сложения вычитанием к цифре следующего старшего раз ряда множителя добавляется единица. Вычитание реализуется в виде прибавления дополнения множимого.
Пример 2.18. Вычислить произведение 17X91. |
будем умножать на множи |
|||||
Вместо |
умножения |
непосредственно на |
91 |
|||
тель Ш , где подчеркнутая цифра будет рассматриваться как отрицательная. |
||||||
|
|
|
Эквивалентный множитель |
1 1 1 |
||
Исходное |
состояние ,00000 |
|
|
|
1 |
|
сумматора |
17 |
|
|
|
1—1=0 |
|
|
Сдвиг -*■ |
01700 |
|
|
|
|
|
,00170 |
Дополнение множимого |
—1+ 1= 0 |
|||
|
|
+983 |
||||
|
|
98470 |
|
|
|
|
|
Сдвиг -*■ . 99847 |
|
|
|
1 — 1=0 |
|
|
|
+ 17 |
|
|
|
|
|
п -<-01547— произведение в |
прямом |
коде, так как есть |
|||
|
|
|
перенос из |
старшего разряда. |
Множимое или его дополнение прибавляется к текущей сумме частных произведений до тех пор, пока очередная цифра множи теля не будет сведена к нулю.
Как и для двоичных чисел, десятичное деление в машинах также реализуется в виде многошагового процесса. Одним из про стейших способов определения цифр частного является последо вательное вычитание делителя из делимого. После каждого
67
вычитания, если остаток неотрицательный, в соответствующий раз ряд частного добавляется единица.
Пример 2.19. Пусть требуется разделить 42 на 6 .
|
|
042 |
|
Частное |
|
|
|
|
|
|
—__6 |
|
|
|
„ |
, —9 8 |
------->-0 |
||
Восстановление остатка |
+ |
к |
|
|
|
_ |
__2* |
|
|
Сдвиг делителя -*■ |
042 |
|
|
|
|
___ 6 |
|
|
|
|
~ |
036-------- 0 1 |
||
|
6 |
|
|
|
|
|
озо |
------- |
- 0 2 |
|
|
006 |
------ |
>-06 |
|
|
~ 6 |
|
|
|
|
000------ |
>-07 |
В данном примере после первого пробного вычитания полу чился отрицательный остаток, который затем был восстановлен. Однако и при десятичных числах можно производить деление, не восстанавливая остатка. Для этого достаточносдвинуть делитель на разряд вправо и продолжать деление, теперь прибавляя дели тель к отрицательному остатку с приписанным справа следующим разрядом делимого. После первого прибавления в очередном раз ряде частного устанавливается цифра 9. На каждом очередном этапе сложения содержимое этого разряда уменьшается на еди ницу. При новом появлении положительного остатка в разряде зафиксируется искомая цифра разряда частного. Далее осуще ствляется переход к определению следующей цифры частного.
Пример 2.20. Выполним процесс деления 42 на 6 по методу без восста новления остатка.
Частное
|
042 |
|
“ Л |
Сдвиг делителя + |
982-------►О |
6 |
|
+ |
988 --------09 |
6 |
|
, —994-------08 |
|
+ |
6 |
п - |
000-------07 |
Если делимое не делится нацело, то для целей округления мо жет определяться дополнительная цифра частного.
Г л а в а III
ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ПОСТРОЕНИЯ ЭЛЕМЕНТОВ И УЗЛОВ ЦИФРОВЫХ ВЫЧИСЛИТЕЛЬНЫХ
МАШИН
Элементы и узлы цифровых вычислительных машин являются цифровыми автоматами, преобразующими цифровую информацию в соответствии с определенными алгоритмами. Это позволяет опи сывать работу элементов и узлов с помощью конечных математи ческих ф 0 Р м Ул . а также осуществлять необходимые преобразова ния с целью получения наиболее простых, надежных и малога баритных структур. Элементы и узлы могут быть как автоматами с памятью, т. е. автоматами с хранением цифровой информации, так и автоматами без памяти, информация на выходах которых формируется только в зависимости от входной информации, подан ной в рассматриваемый момент времени. Автоматы первого вида во многих случаях более сложны и требуют для своего описания достаточно сложного математического аппарата. Однако их по строение в конечном итоге сводится к построению автоматов без памяти, представляемых обычно в виде так называемых функцио нальных или логических схем.
Алгоритм, реализуемый цифровым автоматом без памяти, опре деляется функциональным составом автомата и связями между его отдельными частями, т. е. его функциональной схемой. Наобо рот, если задан алгоритм, то функциональная схема автомата строится в соответствии с положениями этого алгоритма.. Переход от заданного алгоритма или заданных условий работы автомата к его функциональной схеме достаточно просто осуществляется при использовании аппарата алгебры логики— одной из состав ных частей математической логики. Этот аппарат обеспечивает, кроме того, поиск наиболее простых решений при построении эле ментов и узлов. Широкое использование алгебры логики в каче стве теоретической основы построения элементов и узлов ЦВМ объясняется тем, что ее исходные посылки, сводящиеся только к
69