К. Хамахер, З. Вранешич, С. Заки - Организация ЭВМ - 5-е издание (2003) (1114649), страница 96
Текст из файла (страница 96)
6.2, 4). В этом случае бит выходного переноса с, не является частью ответа. Об арифметическом переполнении рассказывалось в разделе 2.1.4. Оно происходит только тогда, когда оба операнда имеют одинаковые знаки, отличные от знака результата. Таким образом, для обнаружения переполнения в и-разрядный сумматор нужно добавить специальную схему, реализующую такое логическое выражение; Переполнение - я„-ту„-1э„-$ + я„-1у„-тэ„-т Доказуемо, что переполнение возникает тогда, когда биты с„и с„, имеют разные значения (см.
упражнение 6.9). Поэтому для обнаружения переполнения в качестве альтернативы можно использовать выражение с„втс„1 с вентилем Исключающее ИЛИ. Разность Х вЂ” У вычисляется путем прибавления к числу Х дополнения до двух числа К Логическая схема на рис.
6.3 может применяться как для сложения, так и для вычитания, что зависит от того, какое значение подано на ее входную управляющую линию сложения/вычитания. Если необходимо произвести сложение, на эту линию подается О, на соответствующую группу входов сумматора — вектор У, а на вход со — значение О. Когда управляющая линия сложения/вычитания устанавливается в 1, с помощью вентилей Исключающее ИЛИ формируется дополнение вектора У до единицы (его побитовое дополнение), а на вход со подается значение 1, завершающее формирование дополнения числа Удо двух.
Напомним, что дополнение отрицательного числа до двух формируется так же, как и поло. жительного числа. Схему на рис. 6.3 можно расширить за счет еще одного вентиля Исключающее ИЛИ, который выявляет условие переполнения с„9с„ь У -1 ук Управляющая линия сложеиия/вычитания с„ 51 5к Рис. В.З. Логическая схема двоичного сложенияувычитвния 6.2. Архитектура быстродействующих сумматоров 409 6.2. Архитектура быстродействующих сумматоров Если в блоке сложения/вычитания, показанном на рис.
63, использовать и-разрядный сумматор с последовательным переносом, выходные сигналы на линиях зл-з„1 н с„будут формироваться с очень большой задержкой. Чтобы решить, допустима ли такая задержка, следует учесть быстродействие других компонентов процессора, а также время пересылки данных регистров и кэш-памяти. Факторами, влияющими на задержку в схеме, состоящей из логических вентилей, являются технолопщ ее создания и количество вентилей, через которые проходят сигналы на пути от входов к выходам. Задержка в любой комбинационной логической схеме на основе вентилей равна сумме задержек при прохождении сигналов через вентили по самому длинному пути в схеме.
В случае и-разрядного сумматора с последовательным переносом этот путь пролегает от входов хе уе и со в позиции 15В до выходов с„и г, 1 в позиции самого старшего разряда (Моэт 51йп!Всапс В!ц МЯВ). В логической схеме на рис. 6.2, а значение с„1 формируется через 2(п — 1) вентнльные задержки, а на выход з„1 правильное значение подается спустя одну задержку в вентиле Исключающее ИЛИ. Окончательный выходной перенос, с„, формируется через 2п вентильных задержек. Таким образом, если блок сложения/вычитания, показанный на рис. 6.3, реализован в виде сумматора с последовательным переносом, все разряды суммы формируются через 2п вентнльных задержек с учетом задержки в вентилях Исключающее ИЛИ на входе К Если контроль переполнения реализуется по формуле с„егс„о индикатор переполнения формируется через 2п + 2 вентилъные задержки.
Существует два метода сокращения задержки в сумматорах. Первый заключается в подборе электронных элементов и электронных технологий, позволяющих предельно ускорить распространение переносов. Второй основан на оптимизации структуры, используемой для этого схемы. В следующем разделе применение второго метода рассматривается на примере схемы с параллельным переносом. Построение такой схемы будет представлено в несколько упрощенном виде. На практике для реализации высокоскоростных сумматоров используется множество технологий.
Это и электронные решения, направленные на ускорение распространения сигналов переноса, и различные варианты базовой схемы, описанной в следующем разделе. 6.2.1. Сложение с параллельным переносом Для получения быстродействующей схемы сумматора нужно ускорить формирование сигналов переноса. Этого можно добиться за счет усовершенствования лодсхемы распространения переносов. Рассчитаем логические выражения для з; (суммы) и си, (выходного переноса) разряда 1 (рис. 6.1): 5; = х,®уфс, си1-хо, + хо;+ ус; 410 Глава б.
Арифметика Если во втором выражении вынести с; за скобки: с;,! — хйб а (х! + у,)с! то можно записать: см! С~ + Рс! где С! - х,у» Р, -х! о- у, Выражения для С, и Р; называют функциями генерирования и распространения разряда !. Если функция генерирования разряда ! равна 1, то с; - 1 независимо от входного переноса со Так бывает, когда х, и у; равны 1.
Функция распространения демонстрирует, что входной перенос будет преобразован в выходной, если х; - 1 либо у; - 1, Результаты функций С; и Р; могут формироваться или независимо, или параллельно, спустя одну вентильную задержку после подачи на вход н-разрядного сумматора векторов Хи К Схема каждой стадии сложения, соответствующей одному разряду слагаемых, содержит вентиль И для формирования функции С; и вентиль ИЛИ для формирования функции Ро а также 3-входовой вентиль Исключающее ИЛИ для формирования соответствующего разряда суммы ео Данную схему можно упростить, воспользовавшись тем, что эквивалентная функция распространения реализуется также на основе выражения Р; - х; 9 уо результат которого отличается от Р; -х, + уо только когда х, = у; - 1.
Однако в этом случае С; - 1, так что совершенно не важно, равно Р; нулю или единице. Итак, пря реализации 3-входной функции Исключающее ИЛИ в виде каскада из двух 2-входовых вентилей Исключающее ИЛИ для каждого шага сложения можно использовать базовую ячейку разряда, обозначенную на рис. 6А, а как ЯР. Если выразить с; через переменные разряда ! — 1 и подставить это выражение в предыдущую формулу, получится такое выражение: с!„.! - С! + Р;С;! + Р!Р, гс, ! Выполнив аналогичные подстановки до конца, получим следующий результат; с,+! С; + РС! ! + РР; гс; г + ...
+ РР, !...Р!Со + РР; !...Росе йь!) Все переносы могут быть готовы через три вентильные задержки после поступления входных сигналов Х, У и со, поскольку сигналы С; и Р; формируются спустя всего одну вентильную задержку, а еще две вентильные задержки происходят в схемах И-ИЛИ для сс ь После очередной задержки в вентиле Исключающее ИЛИ будут готовы все разряды суммы. Таким образом, независимо от значения и длительность процесса сложения и-разрядных двоичных чисел составляет четыре вентильные задержки. Теперь рассмотрим архитектуру 4-разрядного сумматора. Переносы в этом сумматоре реализуются так: Со + РоСо - С! + Р!С + Ргро сз Сг + РгС! + РгР!Со + РгР,Рого = С + РС + РзРС +Рзргр!С + Рзрргр 6.2. Архитекгура быстродействующих сумматоров 411 х, у, Уа х, у, хг Уа «а Уа са Рис.
В.4. Реализация 4-разрядного сумматора с параллельным переносом: ячейка для сложения одного разряда (а); схема 4-разрядного сумматора (б) Полностью схема 4-разрядного сумматора приведена на рис. 6.4, б. Переносы реализованы в блоке, обозначенном как «Логика параллельного переносам Этот сумматор называется сумматором с паралзельным переносом (саггуйоо)саЬеас( а44ег). Формирование всех битов переноса выполняется в нем за три вентильные задержки, а вычисление полной сумиы — за четыре. Для сравнения: 4-разрядный сумматор с последовательным переносом формирует значение зз за семь вентильвых задержек, а значение сз — за восемь.
Предприняв попытку расширить сумматор с параллельным переносом, показанный на рис. 6.4, б, для более длинных операндов, мы столкнемся с проблемой ограниченной нагрузочной способности вентилей по входу. Из выражения 6.1 следует, что в последних вентилях И и ИЛИ, генерирующих значение с„и коэффициент 412 Глава 6. Арифметика объединения по входу должен быть равен 1 + 2. Для значения с4 в 4-разрядном сумматоре коэффициент объединения по входу равен 5.
Это почти предельное значение для реальных вентилей. Поэтому в рассматриваемом случае нельзя так просто расширить структуру сумматора в расчете на операнды большего размера. Сумматор большей разрядности можно сформировать путем каскадирования нескольких 4-разрядных сумматоров, что отражено на рис. 6.2, в. Как же формируется 32-разрядный сумматор? Например, путем объединения восьми 4-разрядных сумматоров с параллельным переносом, как на рис.
6.2, в. Задержки при формировании разрядов суммы ззь зза ззз, ззз и с37 в старшем 4-разрядном сумматоре этого каскада вычисляются следующим образом. Выходной перенос с~ из младшего сумматора формируется через три вентильные задержки после того, как 32-разрядный сумматор получит входные операнды Х, У и въ Спустя две вентильные задержки появится перенос сз на выходе второго сумматора, затем — перенос сы на выходе третьего сумматора и т. д.