
- •2. Структуры опу
- •2.1 Опу с жесткой структурой
- •2.2 Опу с магистральной структурой
- •2.3 Классификация опу с магистральной структурой
- •3. Базис целочисленных опу
- •3.1 Сложение и вычитание
- •4. Целочисленное умножение
- •4.1 Умножение чисел без знака
- •4.2 Умножение целых чисел и правильных дробей
- •5. Ускорение целочисленного умножения
- •6. Целочисленное деление
- •6.1 Деление с восстановлением остатка
- •6.2 Деление без восстановления остатка
- •6.4 Устройство деления
- •7. Комбинированное устройство умножения/деления
- •8. Ускорение целочисленного деления
- •9.1 Подготовительный этап
- •9.2 Заключительный этап
- •9.3 Сложение и вычитание
- •9.4 Умножение
- •9.5 Деление
- •10. Реализация логических операций
6.1 Деление с восстановлением остатка
Наиболее очевидный алгоритм носит название алгоритма деления с неподвижным делителем и восстановлением остатка. Здесь он представлен в силу того, что очень похож на общепринятый способ деления столбиком. Данный алгоритм может быть описан следующим образом:
1. Исходное значение частичного остатка (ЧО) полагается равным старшим разрядам делимого.
2. ЧО удваивается путем сдвига на один разряд влево. При этом в освобождающийся при сдвиге младший разряд ЧО заносится очередная цифра частного.
3. Из сдвинутого ЧО вычитается делитель и анализируется знак результата вычитания.
4. Очередная цифра модуля частного равна единице, когда результат вычитания положителен, и нулю, если отрицателен. В последнем случае значение остатка восстанавливается до того значения, которое было до вычитания.
5. Пункты 2-4 последовательно выполняются для получения всех цифр модуля частного.
На рис. 14 показан процесс деления с восстановлением остатка, здесь число 41 делится на 7.
6.2 Деление без восстановления остатка
Недостаток затронутого алгоритма заключается в необходимости выполнения на отдельных шагах дополнительных операций сложения для восстановления частичного остатка. Это увеличивает время выполнения деления, которое в этом случае может меняться в зависимости от конкретного сочетания кодов операндов. В силу указанных причин реальные делители строятся на основе алгоритма деления с неподвижным делителем без восстановления остатка. Приведем описание этого алгоритма:
1. Исходное значение частичного остатка полагается равным старшим разрядам делимого.
2. Частичный остаток удваивается путем сдвига на один разряд влево. При этом в освобождающийся при сдвиге младший разряд ЧО заносится очередная цифра частного.
3. Из сдвинутого частичного остатка вычитается делитель, если остаток положителен, и к сдвинутому частичному остатку прибавляется делитель, если остаток отрицательный.
4. Очередная цифра модуля частного равна единице, когда результат вычитания положителен, и нулю, если он отрицателен.
5. Пункты 2-4 последовательно выполняются для получения всех цифр модуля частного.
Как видим, пункты 1,2,5 полностью совпадают с соответствующими пунктами предыдущего алгоритма деления. Процесс деления без восстановления остатка демонстрируется на ранее рассмотренном примере (рис. 15).
6.4 Устройство деления
Рассмотренный алгоритм деления без восстановления остатка может быть реализован с помощью специального устройства, схема которого приведена на рис. 16.
Процедура начинается с занесения делимого в 2n-разрядный регистр делимого (РДМ) и делителя в n-разрядный регистр делителя (РДТ). В счетчик цикла (СЧЦ — на схеме не показан), служащий для подсчета количества полученных цифр частного, помещается исходное значение, равное n.
На каждом шаге содержимое регистра делимого (РДМ) и регистра частного (РЧ) сдвигается на один разряд влево. В зависимости от сочетания знаков частичного остатка и делителя определяется значение очередной цифры частного и требуемое действие: вычитание или прибавление делителя. Вычитание делителя производится посредством прибавления дополнительного кода делителя. Преобразование в дополнительный код осуществляется за счет передачи делителя на вход сумматора обратным (инверсным) кодом с последующим добавлением единицы к младшему разряду сумматора.
Описанная процедура повторяется до исчерпания всех цифр делимого, о чем свидетельствует нулевое содержимое счетчика циклов (содержимое СЧЦ уменьшается на единицу после каждой итерации). По окончании операции деления частное располагается в регистре частного, а в регистре делимого будет остаток от деления.
На практике для накопления и хранения частного вместо отдельного регистра используют освобождающиеся в процессе сдвигов младшие разряды регистра делимого.