- •2. Структуры опу
- •2.1 Опу с жесткой структурой
- •2.2 Опу с магистральной структурой
- •2.3 Классификация опу с магистральной структурой
- •3. Базис целочисленных опу
- •3.1 Сложение и вычитание
- •4. Целочисленное умножение
- •4.1 Умножение чисел без знака
- •5. Ускорение целочисленного умножения
- •6. Целочисленное деление
- •4.2 Умножение целых чисел и правильных дробей
- •6.1 Деление с восстановлением остатка
- •6.2 Деление без восстановления остатка
- •6.4 Устройство деления
- •7. Комбинированное устройство умножения/деления
- •8. Ускорение целочисленного деления
- •9.1 Подготовительный этап
- •9.2 Заключительный этап
- •9.3 Сложение и вычитание
- •9.4 Умножение
- •9.5 Деление
- •10. Реализация логических операций
2.3 Классификация опу с магистральной структурой
Магистральные ОПУ классифицируют по виду и количеству магистралей, организации узла ОПБ. Магистрали ОПУ могут быть однонаправленными и двунаправленными, соответственно обеспечивающими передачу данных в одном или двух различных направлениях. По функциональному назначению выделяют:
• магистрали внешних связей, соединяющих ОПУ с памятью и каналами ввода/ вывода ВМ;
• внутренние магистрали ОПУ, отвечающие за связь между узлом РОН и операционным блоком.
Количество магистралей внешних связей зависит от архитектуры конкретной ВМ и обычно не превышает двух для внешних связей и трех — для внутренних. Структура трехмагистрального ОПУ представлена рис. 4, а; соответствующая ему микропрограмма выполнения операции типа «сложение» — на рис. 4, б.
Данный вариант характеризуется наибольшим быстродействием: выборка операндов из РОН, выполнение микрооперации суммирования и запись результата в РОН — все эти действия производятся за один такт. Основной недостаток трехмагистральной организации — большая площадь, занимаемая магистралями на кристалле БИС (от 0,16 до 0,22 от площади кристалла).
Двухмагистральная организация при меньшей площади, покрываемой магистралями (от 0,06 до 0,19 от площади кристалла), требует введения как минимум одного буферного регистра (БР), предназначенного для временного хранения одного из операндов (рис. 5, а), при этом операция сложения будет выполняться уже за два такта (рис. 5, б):
• Такт 1: загрузка БР одним из операндов.
• Такт 2: микрооперации в ОПБ над содержимым БР и одного из РОН; запись результата в РОН.
Наконец, организация ОПУ на основе только одной магистрали (рис. 6, а) минимизирует расходы площади (от 0,03 до 0,09 от площади кристалла). Вместе с тем, возникает необходимость введения не менее двух буферных регистров (БР1 и БР2), а длительность операции возрастает до трех тактов (рис. 6, б):
• Такт 1: загрузка БР1 одним из операндов.
• Такт 2: загрузка БР2 вторым операндом.
• Такт 3: выполнение микрооперации в ОПБ над содержимым БР1 и БР2; запись результата в один из РОН.
3. Базис целочисленных опу
Если исключить логические операции, которые рассматриваются отдельно, целочисленное ОПУ должно обеспечивать выполнение следующих арифметических операций над числами без знака и со знаком:
• сложение/вычитание;
• умножение;
• деление.
3.1 Сложение и вычитание
При сложении n-разрядных двоичных чисел (1 знаковый бит и n - 1 значащих цифр) возможен результат, содержащий n значащих цифр. Эта ситуация известна как переполнение. «Лишний» бит занимает позицию знака, что приводит к некорректному результату. Естественно, что ОПУ должно обнаруживать факт переполнения и сигнализировать о нем.
Чтобы упростить обнаружение ситуации переполнения, часто применяется так называемый модифицированный дополнительный код, когда для хранения знака отводятся два разряда, причем оба участвуют в арифметической операции наравне с цифровыми разрядами. В нормальной ситуации оба знаковых разрядах содержат одинаковые значения. Различие в содержимом знаковых разрядов служит признаком возникшего переполнения (рис. 7).
На рис. 8 показана возможная структура операционного блока для сложения и вычитания чисел со знаком в формате с фиксированной запятой. Центральным звеном устройства является n-разрядный двоичный сумматор. Операнд А поступает на вход сумматора без изменений. Операнд В предварительно пропускается через схемы сложения по |2|, поэтому вид кода В, поступающего на другой вход сумматора, зависит от выполняемой операции. Если задана операция сложения (управляющий код 0), то результат на выходе ОПБ определяется выражением S := A + В. При операции вычитания (управляющий код 1) на вход сумматора подаются инверсные значения всех разрядов В, и, кроме того, на вход переноса в младший разряд сумматора СlN поступает 1. В итоге на выходе ОПБ будет S := А + В + 1; что соответствует прибавлению к А числа В с противоположным знаком, то есть вычитанию.
