Ускоренное выполнение операции умножения
Рассмотрим два логических метода ускорения выполнения операции умножения младшими разрядами вперед: метод умножения с анализом последовательностей «0» и «1» в множителе (метод «преобразования» множителя, ускоренное умножение № 1) и метод расшифровки двух разрядов множителя (ускоренное умножение № 2). Первый метод позволяет уменьшить число арифметических операций на сумматоре, необходимых для формирования произведения (при этом число циклов умножения не сокращается). Второй метод позволяет сократить число циклов умножения вдвое, поскольку в каждом цикле множимое умножается сразу на два разряда множителя.
Метод «преобразования» множителя заключается в том, что в некоторых случаях число содержащихся в множителе единиц можно уменьшить, заменив их нулями, что приводит к пропуску такта суммирования, поскольку при умножении на 0 содержимое сумматора не изменяется. Следует понимать, что рассматриваемое преобразование множителя выполняется логически, т.е. реальное содержимое регистра множителя остается неизменным, но меняется процедура его обработки. Поэтому слово «преобразование» в названии метода взято в кавычки.
Пусть в множителе три или более идущих друг за другом разрядов равны единице. В соответствии с элементарной двоичной арифметикой такая последовательность может быть представлена как разность двух чисел: . Покажем это на примере множителя
B = 0,011100:
|
|
0,011100
Таким образом, арифметическую операцию сложения при умножении на множитель подобного вида можно заменить операцией вычитания множимого из суммы частичных произведений. После окончания последовательности подряд следующих единиц необходимо снова выполнять операцию сложения.
Отдельно стоящие нули или единицы могут увеличить число единиц в преобразованном множителе. Рассмотрим, например, фрагмент множителя, состоящий из нулей и единицы в i-м разряде, и его преобразованный вид:
В этом случае умножение множимого A на преобразованный множитель должно выполняться в соответствии с выражением
Если фрагмент множителя с нулем в i-м разряде и его преобразование имеют вид
то умножение множимого A на преобразованный множитель должно выполняться в соответствии с выражением
Для определения отдельно стоящих нулей и единиц будем анализировать одновременно два разряда множителя, а для выявления последовательностей идущих подряд нулей или единиц в множителе введем в устройство специальный запоминающий элемент, называемый триггером, имеющий два устойчивых состояния – «0» и «1». Тогда арифметические операции на сумматоре и установки триггера сдвига определятся в соответствии с табл. 2.2.
Таблица 2.2
Разряды множителя | Состояние триггера Тг | Действия | |
n | |||
– | |||
СМ + А | |||
– | |||
СМ – А, Тг = 1 | |||
СМ + А, Тг = 0 | |||
– | |||
СМ – А | |||
– |
Следует отметить, что перед началом выполнения умножения триггер должен быть установлен в состояние «0». По окончании умножения триггер также должен установиться в «0», поэтому в некоторых случаях требуется выполнение дополнительного цикла умножения (точнее – полуцикла, поскольку такт сдвига не выполняется) для обработки последней единицы в множителе, который может быть совмещен с округлением результата.
При умножении мантисс следует использовать модифицированный код, поскольку в некоторых случаях может возникать переполнение разрядной сетки.
Определение знака и порядка произведения, его нормализация выполняются так же, как при неускоренном умножении.
Дата добавления: 2014-12-27; просмотров: 1194;