Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВМСС-всё(ЭКЗАМЕН).docx
Скачиваний:
36
Добавлен:
09.12.2018
Размер:
8.84 Mб
Скачать

2.2.2. Принципы построения алу для сложения и вычитания на комбинационных суммах.

Изложение будем вести в следующих предположениях:

  1. запятая располагается справа от младшего (правого) разряда чисел все числа полагаются целыми;

  2. используется дополнительный модифицированный код как в АЛУ, так и в ОЗУ;

  3. числа n+2 разрядные: n+1 и n+2-ой разряды отведены под знак, кодируемый 00 – «+»; 11 – «-».

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

Рис. 2.2.2.1.

Работа очень легко может быть пояснена с помощью структурной схемы алгоритма:

Рис. 2.2.2.2

На рисунке обозначен БФПР – блок формирования признаков результата. Он состоит из комбинационной схемы и регистра признаков (РгПр).

Помимо сигнала завершения операции БФПР формирует еще:

переполнение разрядной сетки - Q;

обнуление разрядной сетки - Z;

результат больше или меньше 0 – N;

число «1» в результате четно - Р - или нечетно и, возможно, другие признаки результата.

Просты и соответствующие выражения:

;

;

и т.д.

Все эти признаки потенциально будут использоваться УУ для формирования очередного адреса (следующая команда, условный переход, прерывание по переполнению и т.д.)

<91>

2.2.3. Организация алу (параллельного действия) в режиме умножения чисел с фиксированной запятой.

Сначала обзор-напоминание.

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

Но умножение на разряд двоичного числа – это уже почти не умножение, ибо умножаем здесь мы на «0» или «1».

Произведение двух n-разрядных чисел составляет до 2n разрядов:

<92>

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

Рассмотрим их с точки зрения размещения в регистрах АЛУ.

Первый способ. Умножение младшими разрядами (множителя) вперед со сдвигом суммы частичных произведений вправо. Если мы сдвигаем сумму частичных произведений, то куда? Нужно увеличивать число разрядов сумматора? – Нет! Нет по двум причинам:

младшие (выдвигаемые) разряды далее не меняются;

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

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

Регистр множителя и сумматор обязаны иметь цепи сдвига содержимого вправо. Для регистра множимого этого не нужно. Младший разряд сумматора (регистра) частичных произведений должен быть соединен по цепям со старшим разрядом регистра множителя.

Рис. 2.2.3.1.

На каждом шаге выполнения умножения определяется содержимое младшего разряда Рг множителя. Если в нем «1», то к сумме частичных произведений добавляется множимое. Затем производится одновременный сдвиг. При «0» в младшем разряде Рг множителя добавления нет, а сдвиг такой же. В конце умножения (заметим, что этот «конец» надо поймать) старшие разряды произведения «лежат» в См, а младшие в Рг множителя.

Поскольку метод значительно экономит оборудование (всего необходимы три одинаковых n-разрядных регистра), то он чаще всего в ЭВМ и применяется.

Второй способ. Умножение младшими разрядами множителя вперед при неподвижной сумме частичных произведений.

Это возможно, только если будет вдоль сумматора двигаться множимое, причем справа налево. Иными словами, в Рг множимого должны быть цепи сдвига влево.

Сумматор частичных произведений и Рг множимого должны иметь двойную длину (2n разрядов).

Рис. 2.2.3.2.

Порядок действий почти такой же, как в первом случае. Преимуществ у этого метода мало. Пожалуй, по сравнению с первым лишь одно: в См не нужны цепи сдвигов (не путать с переносами!).

Третий способ. Умножение старшими разрядами множителя вперед при неподвижном множимом.

Регистр множителя и сумматор обязаны иметь цепи сдвига влево. Последовательность действий на каждом шаге связана с содержимым старшего разряда Рг множителя. Рг множимого цепей сдвига не имеет.

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

Рис. 2.2.3.3.

По оборудованию метод проигрывает первому. Тем не менее, он изредка применяется, так как позволяет без дополнительных цепей сдвига выполнить и деление. (Заметим, что первый метод соединения регистров для выполнения деления требует введения цепей сдвига влево в См формирования частичных разностей и в Рг множимого (частного)).

Четвертый способ. Умножение старшими разрядами множителя вперед при неподвижной сумме частичных произведений.

Конечно, «неподвижность» суммы здесь, как и во втором методе, весьма относительная, так как работают цепи переносов. Тем не менее, идея в использовании цепи сдвига вправо в Рг множимого. Последовательность действий ясна из сказанного ранее и из рисунка.

Рис. 2.2.3.4.

Как и во втором методе, См и Рг множимого должны иметь двойную длину.

А всегда ли нужна двойная длина произведения? Видимо, не всегда, ведь произведение можно округлить (простое отбрасывание «гробит» в итоге точность!). Особенно наглядно это представить себе, если числа имеют фиксированную запятую слева от значащих разрядов (числа < 1). Итак, если и увеличивать, то может быть не вдвое! А в этом случае рассматриваемый метод соединения регистров оказывается выгодным:

как и третий метод, он не требует дополнительных цепей для организации деления;

так как частичные произведения неподвижны, то легче совместить операции сложения и сдвига (при умножении и делении).

Итоги:

  1. если необходимо организовать произведения двойной длины, то наиболее экономичен первый метод;

  2. если можно обойтись одинарной длиной, то целесообразно использовать первый или четвертый методы (в четвертом нужно удлинять сумматор).

<93>

Теперь рассмотрим структурную схему АЛУ (пусть это сумматор накапливающего типа).

Рис. 2.2.3.5.

Будем полагать, что числа хранятся в ОЗУ в прямом коде. Тогда знак результата определяется по известному со школы правилу:

Сосредоточим внимание на умножении модулей чисел.

Иллюстрация к алгоритму:

Рис. 2.2.3.6.

11*13=143

Микропрограмму операции умножения представим структурной схемой:

Рис. 2.2.3.7.

,

где – время суммирования, – время сдвига. Если же считать, что вероятность (частота) появления «0» и «1» в разрядах равновероятна, то при

Умножений в программах может быть до 20-30%. Поэтому такое возрастание временных затрат нужно учитывать и, может быть, компенсировать.

Поэтому-то такое развитие и получили аппаратные и логические способы ускорения умножения. И те, и другие требуют дополнительных затрат оборудования, изменения в организации АЛУ.

<94>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]