- •Глава 7.
- •Операционные устройства вычислительных машин
- •Структуры операционных устройств
- •Операционные устройства с жесткой структурой
- •Операционные устройства с магистральной структурой
- •Классификация операционных устройств с магистральной структурой
- •Организация узла рон магистрального операционного устройства
- •Организация операционного блока магистрального операционного устройства
- •Базис целочисленных операционных устройств
- •Сложение и вычитание
- •Целочисленное умножение
- •2N битов. Таким образом, алгоритм умножения предполагает последовательное
- •Алгоритм сдвига влево
- •Умножение чисел со знаком
- •Умножение целых чисел и правильных дробей
- •Модифицированный алгоритм Бута
- •Обработка двух разрядов множителя за шаг
- •Аппаратные методы ускорения умножения
- •Матричное умножение чисел без знака
- •1 Полусумматоры называется одноразрядное суммирующее устройство, имеющее дна входа для слагаемыx и два входа и два выхода — выход бита суммы и выход бита переноса.
- •Матричное умножение чисел в дополнительном коде
- •Алгоритм Бо-Вули
- •Алгоритм Пезариса
- •Древовидные умножители
- •Сравнительная оценка схем умножения с матричной и древообразной структурой
- •Конвейеризация параллельных умножителей
- •Рекурсивная декомпозиция операции умножения
- •Целочисленное деление
- •Деление с восстановлением остатка
- •Деление без восстановления остатка
- •Деление чисел со знаком
- •Устройство деления
- •Ускорение целочисленного деления
- •Замена деления умножением на обратную величину
- •XiD). Количество итераций определяется требуемой точностью вычисления X/d. Реализация метода для n-разрядных чисел требует 2 int(log2n) - 1 операций умножения.
- •Ускорение вычисления частичных остатков
- •Алгоритм srt
- •Деление в избыточных системах счисления
- •Операционные устройства с плавающей запятой
- •Подготовительный этап
- •Заключительный этап
- •Сложение и вычитание
- •Умножение
- •Деление
- •Реализация логических операций
- •Контрольные вопросы
Целочисленное умножение
По сравнению со сложением и вычитанием, умножение — более сложная операция, как при программном, так и при аппаратном воплощении. В ВМ применяются различные алгоритмы реализации операции умножения и, соответственно, несколько схем построения операционных блоков, обеспечивающих выполнение операции умножения.
Традиционная схема
умножения похожа на известную из
школьного курса про-цедуру записи «в
столбик». Вычисление произведения Р
двух
n-разрядных
двоичных чисел без знака А
сводится к формированию частичных
произведений (ЧП) Wi,
по одному на каждую цифру множителя, с
последующим суммированием полученных
ЧП. Перед суммированием каждое частичное
произведение должно быть сдвинуто на
один разряд относительно предыдущего
согласно весу цифры множителя, которой
это ЧП соответствует. Поскольку операндами
являются двоичные числа, вычисление
ЧП упрощается — если цифра множителя bi, равна 0, то Wi тоже равно 0, а при Ьi=1 частичное произведение равно множимому (Wi = А). Перемножение двух n-разрядных двоичных чисел Р=АхВ приводит к получению результата, содержащего
2N битов. Таким образом, алгоритм умножения предполагает последовательное
выполнение двух операций — сложения и сдвига (рис. 7.14). Суммирование ЧП обычно производится не на завершающем этапе, а по мере их получения. Это позволяет избежать необходимости хранения всех ЧП, то есть сокращает аппаратурные издержки. Согласно данной схеме, устройство умножения предполагает наличие регистров множимого, множителя и суммы частичных произведений, а также сумматора ЧП и, возможно, схем сдвига, если операция сдвига не реализована иным способом, например за счет «косой» передачи данных между узлами умножителя.

Рис. 7.14. Общая схема умножения со сдвигом суммы частичных произведений влево или вправо
В зависимости от способа получения суммы частичных произведений (СЧП),
возможны четыре варианта реализации «традиционной» схемы умножения [10|:
1. Умножение, начиная с младших разрядов множителя, со сдвигом суммы частичных произведении вправо п при неподвижном множимом.
2. Умножение, начиная со старших разрядов множителя, при сдвиге суммы час
тичных произведений влево и неподвижном множимом.
3. Умножение, начиная с младших разрядов множителя, при сдвиге множимого
влево и неподвижной сумме частичных произведении.
4. Умножение, начиная со старших разрядов множителя, со сдвигом множимого
вправо и при неподвижной сумме частичных произведений.
Варианты со сдвигом множимого на практике не используются, поскольку для
их реализации регистр множимого, регистр СЧП и сумматор должны иметь разрядность 2n, поэтому остановимся на вариантах 1 и 2. Первый из них назовем алгоритмом сдвига вправо, а второй — алгоритмом сдвига влево.
Умножение чисел без знака
Общую процедуру традиционного умножения сначала рассмотрим применительно к числам без знака, то есть таким числам, в которых все n разрядов представляют значащие цифры.
Алгоритм сдвига вправо
Алгоритм сводится к следующим шагам:
1. Исходное значение суммы частичных произведений принимается равным нулю.
2. Анализируется очередная цифра множителя (анализ начинается с младшей
цифры). Если она равна единице, то к СЧП прибавляется множимое, в против-
ном случае (цифра равна нулю) прибавление не производится.
3. Выполняется сдвиг суммы частичных произведений вправо па один разряд.
4. Пункты 2 и 3 последовательно повторяются для всех цифровых разрядов мно-
жителя.
Процедура умножения иллюстрируется примером вычисления произведения
10x 11 (рис 7.15).

Рис. 7.15. Пример умножения со сдвигом суммы частичных произведений вправо
Алгоритм может быть реализован с помощью схемы, показанной на рис. 7.16.

Рис. 7.16. Схема устройства умножения по алгоритму правого сдвига
Первоначально множимое и множитель заносятся в n-разрядные регистры мно-жимого (РМн) и множителя (РМт) соответственно, а все разряды 2n-разрядного
регистра суммы частичных произведений (РЧП) устанавливаются в 0. Умножение происходит за n шагов. На каждом шаге, в зависимости от состояния младшего
Разряда регистра множителя, управляющего мультиплексором, на один из входов
n-разрядного сумматора подается либо множимое, либо 0. На второй вход nocтупает содержимое n старших разрядов РЧП. Новое частичное произведение из сумматора пересылается в старшие разряды РЧП. Далее содержимое РЧП сдиигается
на один разряд вправо, причем в освободившийся старший разряд регистра заносится значение переноса из старшего разряда сумматора. Поскольку мультиплексор управляется младшим разрядом РМт, то содержимое этого регистра также сдвигается на один разряд вправо. Описанная последовательность повторяется n раз. Более экономичным в плане аппаратуры является иное решение, когда вместо двух регистров — n-разрядного РМт и 2/7-разрядного РЧП — используется один комбинированный 2n-разрядный регистр (показан на рис 7.16 справа). Множитель первоначально заносится в младшие n разрядов этого регистра, а старшие разряды обнуляются. По мере сдвигов вправо младшие, уже проанализированные разряду множителя выталкиваются из регистра, освобождая место для очередной цифры СЧП. Обычно такой регистр строится из двух n-разрядных регистров, объединенных цепями сдвига. Дополнительно отметим, что если очередная цифра множителя равна 1, то для вычисления суммы ЧП требуются операции сложения и сдвига, а при нулевой цифре множителя в принципе можно обойтись без сложения, ограничившись только сдвигом. Это, естественно, требует некоторого видоизменения схемы.
