Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СОДЕРЖАНИЕ 3 (2).doc
Скачиваний:
39
Добавлен:
31.08.2019
Размер:
5.65 Mб
Скачать
      1. Некоторые способы ускорения деления

В примере 4-67 рис.4-9 применен прием параллельного выполнения операций сравнения и вычитания (сложения). Если принять, что операция сравнения проще вычитания (сложения) и выполняется быстрее, то каждый раз, когда можно одновременно записывать и выполнять сдвиг делимого, не дожидаясь завершения операции вычитания (сложения). При выполнении операции вычитания (сложения) не вычисляются разряды знака, старший значащий разряд разности и заем (перенос) в старший значащий разряд. Тем самым упрощается и ускоряется ее выполнение. Кроме того, при совмещено вычисление нового остатка и его сдвиг влево, что также ускоряет процесс деления.

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

Если вначале , то . Поэтому, введя “четвертого работника” проверяющего на ноль, можно при , не дожидаясь результатов сравнения и вычитания, записывать и одновременно сдвигать делимое влево. Эти действия можно повторять, записывая очередные разряды частного равные нулю, до тех пор, пока .

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

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

М ожно исключить операцию сравнения и судить о значении по знаку разности . Если знак разности (+), то . При знаке разности (–) следует выполнять сдвиг делимого влево, а при знаке (+) выполнять сдвиг делимого влево с заменой старших разрядов делимого значащими разрядами разности. Это приведет к некоторому усложнению операции вычитания и к замедлению деления.

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

Подробнее способы ускорения операции деления описаны, например, в [3].

  1. Операция сравнение

Сравниваются числа, представленные в одинаковых или в разных форматах. Сравнения должны игнорировать знак нуля, т.е. . Результат сравнения всегда точен. Возможны четыре взаимно исключающих отношения между операндами: меньше чем (<), равно (=), больше чем (>) и несравнимые (unordered) (?). Последний вариант возможен, когда один или оба операнда не являются числами. Это может иметь место, например, если операнд представлен в дополнительном коде и код 100...0 не используется для представления числа (раздел 3.2).

Система может выполнять единственную операцию «Сравнение». В этом случае, получив операнды, система выдает результат в виде четырехразрядного двоичного кода, каждый бит которого содержит значение (true или false) одного из четырех упомянутых отношений между операндами.

Система может выполнять множество операций сравнения, содержащих информацию о варианте отношения, например (), и выдавать значение (true или false) результата сравнения как ответ на вопрос .

Стандарт IEEE 754 предусматривает 26 вариантов таких операций применимых и к случаю представления числа в форматах с фиксированной точкой, в том числе, например NOT(<). При этой операции результат будет true, если первый операнд больше или равен второму операнду или, если один или оба операнда несравнимые.

Правила сравнения чисел зависят от вида вычисляемого отношения, системы счисления и кода, в котором представлены операнды. Но даже при данном отношении и коде существует множество эквивалентных правил позволяющих вычислять результат.

Следует различать сравнение значений чисел и сравнение кодов чисел. Например, при сравнении кодов на равенство можно получить результат false, при этом значение чисел представленных этими кодами могут быть равными. Кроме того, необходимо учитывать, что некоторым кодам могут соответствовать не числа.

Рассмотрим некоторые способы сравнения чисел представленных их кодами.

Вариант 1. Так как разность чисел с равным количественным эквивалентом равна нулю, то для сравнения чисел X и Y можно выполнить вычитание второго операнда из первого по правилу вычитания чисел в том коде, в котором представлены операнды, и проверить разность на ноль. Следует учитывать, что результат вычитания представлен в том коде, в котором выполнялось вычитание, и что он может быть переполнен.

Если переполнения разности нет и она равна нулю, то результат сравнения: ; ; .

Если переполнения разности нет и она не равна нулю, то результат сравнения: . Если , то , иначе , .

При проверке разности на ноль следует

  • в прямом коде проверять только значащие разряды на ноль;

  • в дополнительном коде проверять все разряды на ноль;

  • в обратном коде проверять, равны ли все разряды 000…0 или 111…1.

Если переполнение разности случилось, то операнды имеют разные знаки и разность не равна нулю. Знак разности равен знаку первого операнда. Поэтому: . Если , то , иначе , .

Этот способ сравнения сложнее операции вычитания и возможно потребует больших затрат времени. Поэтому применяют иные способы сравнения.

Вариант 2. В основу способа положен принцип просмотра разрядов операндов слева направо.

Пусть операнды даны в прямом коде.

Если знаки операндов не совпадают, то проверим значащие разряды на ноль. Если оба операнда равны нулю, то , , иначе и, если , то , иначе , .

Если знаки операндов совпадают, сравним старшие значащие разряды. Если цифры в старших значащих разрядах совпадают, сравним очередную пару разрядов. Если очередная пара совпадает, продолжим сравнивать пары последующих разрядов вплоть до младших.

Если цифры во всех парах разрядов совпадают, то , , .

Если найдена пара разрядов с неравными цифрами, то .

Если знак операндов (+) и цифра в разряде X больше цифры в разряде Y, то , . Если цифра в X меньше цифры в Y, то , .

Если знак операндов (–) и цифра в разряде X больше цифры в разряде Y, то , . Если цифра в X меньше цифры в Y, то , .

Пусть операнды даны в дополнительном коде.

Инвертируем коды знаков и выполним процедуру просмотра пар разрядов слева направо, начиная с разряда знака.

Если найдена пара разрядов с неравными цифрами, то . Если цифра в X больше цифры в Y, то , иначе , .

Если цифры во всех парах разрядов совпадают, то , , .

Очевидно, что правила сравнения чисел в дополнительном коде проще, чем в прямом.

Пример 4-71. Выполнено сравнение отрицательных неравных чисел в дополнительном и прямом коде способом, основанным на просмотре разрядов операндов слева направо. Разряды, по значению которых вычислено значение отношения, выделены жирным шрифтом.

A B C D E F

X: 11010д (-6) 11010д (-6) 01010д (+10) 11010д (-6) 10110пр (-6) 10110пр (-6)

Y: 01000д (+8) 11011д (-5) 00111д (+7) 11111д (-1) 10101пр (-5) 11110пр (-14)

В варианте A после инвертирования кодов знака цифра в знаковом разряде X меньше цифры в знаковом разряде Y. Поэтому , , .

В варианте B после инвертирования кодов знака цифры во всех разрядах кроме младшего совпадают. В младшем разряде цифра в X меньше цифры в Y. Поэтому , , .

В варианте C несовпадение цифр выявлено в старшем значащем разряде, Поскольку цифра в X больше цифры в Y, то , , .

С уменьшением основания системы счисления при прочих равных условиях длина формата числа возрастает. Соответственно возрастает длина цепочки просматриваемых разрядов. Это может приводить к замедлению процесса сравнения. Чтобы сократить длину просматриваемой цепочки в двоичной системе счисления, представляют числа в двоично-шестнадцатеричной системе счисления и сравнивают четверки разрядов.

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