Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Дроздов Е.А. Многопрограммные цифровые вычислительные машины

.pdf
Скачиваний:
22
Добавлен:
25.10.2023
Размер:
15.96 Mб
Скачать

Для обеспечения возможности округления в машинах часто вы­ числяется значение дополнительного разряда частного путем вы­ полнения дополнительного шага деления. Округление выполняется путем прибавления единицы к значению дополнительного разряда. Для примера 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,1010011»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

Соседние файлы в папке книги из ГПНТБ