Файл: Каган Б.М. Цифровые вычислительные машины и системы учеб. пособие.pdf

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

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

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

Добавлен: 09.04.2024

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

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

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

5-8. М Е Т О Д Ы

У С К О Р Е Н И Я

Д Е Л Е Н И Я

Аппаратные методы ускорения деления аналогичны описанным выше аппаратным методам ускорения умно­ жения. К ним относятся: ускорение выполнения сложе­ ния и сдвига, совмещение по времени операций сложе­ ния и сдвига и др. К логическим методам ускорения де­ ления относятся методы, позволяющие за один такт получить несколько разрядов частного.

Рассмотрим некоторые логические методы ускорения деления. Предположим, что действия производятся над числами с запятой, фиксированной перед старшим раз­ рядом. Предположим также, что делитель нормализо­ ван, т. е. имеет в старшем разряде 1. Если делимое име­ ет в старшем разряде 0, то очевидно, что делитель боль­ ше делимого и в старшем разряде частного должен быть записан 0. Если делимое имеет вид:

т

одГГТсГіхх

где X — означает 0 или 1, то очевидно, что старшие т разрядов частного будут иметь значение 0.

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

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

чение

 

{•••{[(в — Ь)2 — Ь] 2 — Ь) 2 ----------b \= a 2 k —

 

b (2* + 2fe~’ -f 2k~2Н-------h 2 + 1) =

 

= a2kb (2*+I — 1) = a2k — b2k+1 + b.

(5-8)

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

351


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

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

Можно сформулировать следующие правила при де­ лении на нормализованный делитель:

1.Когда частичный остаток в прямом коде имеет т нулей подряд, начиная со старшего разряда, надо сдви­ нуть его на т разрядов влево, записать в очередные раз­ ряды частного т нулей и вычесть из сдвинутого остатка делитель. Если результат получен в прямом коде, то в очередной разряд частного записывается единица и час­ тичный остаток сдвигается на все разряды, содержащие нули, после чего вновь производится вычитание делите­ ля. Если после вычитания результат получен в дополни­ тельном коде, то в очередной разряд частного записыва­ ется нуль.

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

Описанный алгоритм деления позволяет уменьшить среднее число суммирований. При введении дополнитель­ ных цепей сдвига он дает возможность сократить коли­ чество тактов деления по сравнению с приведенными выше методами деления. Однако при некоторых комби­ нациях цифр частного этот метод не дает ускорения. Ес­ ли в разрядах частного чередуются нули и единицы (частное имеет вид 010101...), то скорость выполнения деления по данному алгоритму такая же, как и при обычном делении без восстановления остатка.

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

352


ТиЧнЬім остатком новый частичный остаток получился й

дополнительном

коде. Если же результат выражается

в прямом коде,

то необходимо для получения каждой

единицы в частном выполнять отдельное вычитание. Это особенно часто встречается при малых делителях, так как маловероятно, чтобы малый делитель изменил знак частичного остатка.

Для улучшения описанного алгоритма используют числа, кратные делимому [Л. 101].

5-9. С Л О Ж Е Н И Е И В Ы Ч И Т А Н И Е Ч И С ЕЛ С П Л А В А Ю Щ Е Й ЗА П Я Т О Й

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

 

Р егист р

ѵи сл а /

\ \

д а д я д я х

М ант исса

 

 

 

Римма/лар

Руляматар мантиссб/

 

іуаряина

rf

 

Раряран

Мантисса

!

Р егист р

v u c s a M

 

-|Г

II

&*

11 ч &

Рис. 5-18. Блок-схема АЛУ с плавающей запятой.

Выполнение арифметических операций с плавающей запятой требует выполнения операции как над мантис­ сами, так и над порядками. Поэтому в ЦВМ обыч­ но имеются два сумматора, каждый из которых имеет свой знаковый разряд и разряд переполнения. Блок-схе­ ма АЛУ для чисел с плавающей запятой показана на

рис. 5-18.

В данной главе при рассмотрении действий над чис­ лами с плавающей запятой основание характеристики принято равным 2.

23—333

353


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

При сравнении порядков в сумматоре производится вычитание порядка второго числа р2 из порядка первого числа р\. При этом возможны пять случаев:

1. р\Рг>П2 2 — число разрядов мантиссы). В этом случае в качестве результата суммирования сра­ зу же может быть взято первое слагаемое, так как при выравнивании порядков все разряды мантиссы второго слагаемого принимают нулевое значение.

2.р2—Рі> « 2. В этом случае в качестве результата суммирования может быть взято второе слагаемое.

3.р\—р2 = 0. В этом случае производится суммиро­ вание мантисс. После образования результата исследу­ ется состояние разряда переполнения сумматора ман­ тисс и состояние старшего разряда мантиссы. Если в разряде переполнения стоит 1, то необходимо произвести нормализацию вправо. Если в старшем разряде мантис­ сы находится 0, то необходимо произвести нормализа­ цию влево.

4. ріP2= k \(k i < n 2) . В этом случае мантисса вто­ рого слагаемого сдвигается на kx разрядов вправо, за­ тем производится суммирование мантисс, а результату присваивается порядок первого слагаемого. После обра­ зования результатов, если это необходимо, производит­ ся нормализация.

5. р2—Pi = k2(k2< n 2). В этом случае перед выполне­ нием суммирования мантисс производится сдвиг на &2 разрядов вправо мантиссы первого слагаемого. Резуль­ тату присваивается порядок второго слагаемого. После образования результата, если это необходимо, произво­ дится нормализация.

Таким образом, выполнение суммирования чисел с плавающей запятой включает в себя следующие этапы:

354


сравнение порядков слагаемых, выравнивание порядков, суммирование мантисс, нормализацию результата.

В табл. 5-8 приведены пять примеров сложения двух положительных чисел с плавающей запятой. Для облег­ чения понимания использованы десятичные числа. Пред­ полагается, что число разрядов мантиссы равно пяти, а для представления порядка использован один разряд. В записи 4/82033 число 4 относится к порядку, а число 82033 — к мантиссе.

1

2

3

4

5

Т а б л и ц а

5-8

Операция

 

8/41500

3/78000

4/68000

5/24000

4/00510

Сравнение поряд-

1/35700

9/34000

4/5 1000

3/18000

5/04800

КОВ

 

 

 

 

5/24000

5/00051

 

 

 

 

Выравнивание

по-

 

 

 

5/00180

5/04800

рядков

 

 

 

4/119000

5/24180

5/04851

Суммирование

 

 

 

N.

5/24180

/

мантисс

 

8/41500

9/34000

5/11900

4/48510

Нормализация

ре-

зультата

Вмашинах с плавающей запятой в отличие от машин

сфиксированной запятой сложение выполняется при­ ближенно, так как при выравнивании порядков проис­ ходит потеря младших разрядов одного из слагаемых. Если не производить округления результата, то погреш­ ность всегда будет отрицательна и может доходить по величине до единицы младшего разряда. Чтобы умень­ шить величину ошибки, производят округления резуль­ тата. Для этого используется дополнительный разряд сумматора, в который после выполнения суммирования добавляется единица.

5-10. У М Н О Ж Е Н И Е И Д Е Л Е Н И Е Ч И С ЕЛ С П Л А В А Ю Щ Е Й ЗА П Я Т О Й

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

23*

355