К. Хамахер, З. Вранешич, С. Заки - Организация ЭВМ - 5-е издание (2003) (1114649), страница 97
Текст из файла (страница 97)
В конце концов на входе старшего 4-разрядного сумматора получаем сзз, на формирование которого с момента поступления входных операндов необходимо (6 х 2) + 3 - 15 вентильных задержек. Еще через две задержки в старшем сумматоре будут готовы все переносы, включая сзъ а по прошествии еще одной задержки мы получим 4 разряда суммы. Итого — восемнадцать вентильных задержек.
Сравните зто значение с количеством задержек при формировании зз, н сзз в сумматоре с последовательным переносом — 63 и 64 задержки соответственно. В следующем разделе рассказывается, как усовершенствовать описанную каскадную структуру, чтобы еще больше сократить общее количество задержек в сумматоре. Решение этой задачи состоит в параллельном формировании переносов сс сз и т. д. подобно тому, как формируются переносы сь съ сз и с4 в 4-разрядном сумматоре с параллельным переносом. Высокоуровневые функции генерирования и распространения В 32-разрядном сумматоре из предыдущего раздела переносы ся, сз, сы и т.
д. последовательно распространяются от одного 4-разрядного суммирующего блока к другому с двумя задержками в каждом блоке (подобно тому, как отдельные переносы от Разряда к Разряду распространяются в сумматоре с последовательным переносом). Если использовать функции генерирования и распространения, действующие на уровне блоков, можно создать высокоуровневую схему параллельного переноса, обеспечивающую параллельное формирование переносов сю сз, сы и т. д. На рис.
6.5 показан 16-разрядный сумматор, составленный из четырех 4-Разрядных суммирующих блоков. Эти блоки реализуют новые выходные функции, обозначенные как 6~~ и Р~ь, где для первого 4-разрядного блока я - 0 (рис. 6,4, б), для второго 4-разрядного блока я = 1 и т. д, В первом блоке Р = зРзР1Ре 1 СО ~з ~" РзСз + РзР1С1 ~ РзР2Р1СО 6.2. Архитектура быстродейсаующих сумматоров 413 хз-а уз-о «7-а Ума хи-в Уи-е хмыз Ум-и сО си Рн 0 С,л 0 Рис.
6.5. 16-разрядный сумматор с параллельным переносом на основе 4-разрядных сумматоров (см. рис. 6.4, б) Словесно это можно выразить так: функции С; и Р; первого уровня определяют, имеется ли выходной перенос из разряда 1 (сгенерированный при сложении значений этого разряда или перешедший от предыдущего разряда), а функции второго уровня, Сь' и Рь~, устанавливают, есть ли выходной перенос из блока л. Прн наличии этих двух функций нет необходимости дожидаться последовательного распространения переноса через все 4-разрядные блоки. Перенос с1а формируется одной из схем параллельного переноса, представленной на рис.
6.5, с помощью такой функции: с1а Сс+ Р'~'+ Р'Р'~'+Р'Р'Р'~г + Р'Р'Р'- Входные переносы 4-разрядных блоков организуются параллельно с помощью аналогичных кратких выражений. Эти выражения для переносов с,е сиь сз и ся имеют ту же форму, что и выражения для переносов се сз, сг и си реализованные в схемах с параллельным переносом на рис. 6.4, б. Однако в схеме на рис.
6.5 переносы се сз, сщ н с~а не должны генерироваться внутри 4-разрядных суммирующих блоков, поскольку онн генерируются уровнем выше, в блоке логики параллельного переноса. А теперь давайте посмотрим, какие задержки возникают при формировании выходных значений 16-разрядного сумматора с параллельным переносом. Время готовности переносов, организуемых схемами параллельного переноса, ва две вентнльные задержки превышает время, необходимое для формирования результатов функций Сь и Рь~. Для вычисления последних при наличии значений С; в Р; требуются две и одна вентильные задержки.
Таким образом, все переносы, генерируемые схемами параллельного переноса, будут готовы через пять вентвльных задержек после поступления входных значений Х, У и сс. Перенос см формируется внутри старшего 4-разрядного блока (рис. 6.5) через две задержки 414 Глава 6. Арифметика после спь а по прошествии еще одной вентильной задержки получаем значение з1ь Итого, для формирования значения зш нужно восемь вентильных задержек. Обратите внимание на то, что, если 16-разрядный сумматор формируется на основе последовательного каскада 4-разрядных суммирующих блоков с параллельным переносом, время вычисления значений сш и зш равно девяти и десяти вентилъным задержкам. Сравните эти значения с теми, которые мы обсуждали, рассматривая схему на рис. 6.5 (вспомните, что в этом случае было пять и восемь вентильных задержек).
Для реализации 82-разрядного сумматора можно каскадировать два 16-разрядных суммирующих блока. В данной конфигурации выходной перенос сш младшего блока становится входным переносом старшего. При этом задержка получается намного меньшей, чем в описанном выше 32-разрядном сумматоре, сформированном путем каскадирования восьми 4-разрядных сумматоров.
Напомним, что тогда значение зз~ было готово спустя восемнадцать вентильных задержек, а значение сзз— через семнадцать вентильных задержек. Давайте сравним зти значения с задержками в сумматоре, образованном на основе двух 16-разрядных суммирующих блоков. Как указывалось выше, перенос сш из младшего блока формируется за пять вентильных задержек. Спустя две вентильные задержки готовы переносы сж и сзз в старшем блоке, а через две задержки после сзз вычисляется значение сзь Таким образом, для определения сз1 требуется время, равное девяти вентильным задержкам, а для вычисления зз| — время, равное десяти задержкам.
Итак, зз1н сп формируются за десять и семь вентильных задержек, тогда как в сумматоре на основе каскада из восьми 4-раэрядных сумматоров их формирование занимает восемнадцать и семнадцать вентильных задержек. Принципы, которые использовались при формировании функций бь и Р» на 1 г основе функций первого уровня с'; и Рь можно применять для формирования функций третьего уровня С~Р и Рьп с использованием функций Сь~ и Р~~. Две такие функции третьего уровня показаны на рис.
6.5 как выходы блока логики параллельного переноса. Из четырех 16-разрядных сумматоров, представленных на рис. 6.5, можно составить 64-разрядный сумматор, добавив еще один блок параиь лельного переноса, генерирующий переносы снь сзь с4з и свь В таком сумматоре в общей сложности потребуется двенадцать вентильных задержек для формирования лаз и семь вентильных задержек для формирования сш. Вычисляются они так же, как для 16-разрядного сумматора (см, упражнение 6.10). 6.3. Умножение положительных чисел На рис. 6.6, а вы видите классический алгоритм умножения целых чисел в двоичной системе счисления. Этот алгоритм применим к беззнаковым числам и положительным числам со знаком. Произведение двух и-разрядных чисел имеет длину не более 2п, так что произведение двух 4-разрядных чисел в нашем примере помещается в 8 бит. В двоичной системе умножение первого числа на один разряд второго числа является простой операцией.
Если этот разряд равен 1, первое число записывается в соответствующую позицию как есть, а если он равен 0, записываются нули, как в третьей строке нашего примера. 416 Глава 6. Арифметика Двоичное произведение положительных операндов можно реализовать в виде комбинационной двухмерной логической матрицы, показанной на рис. 6.6, б, Главным компонентом любой ячейки является полный сумматор ПС.
Присутствующий в каждой ячейке вентиль И на основе значения бита множителя д; определяет, добавляется ли ко входящему биту частичного произведения бит множимого т; Каждая строка й где 0 < 1 < 3, добавляет сдвинутое множимое ко входящему части шому произведению РР1 для формирования выходного частичного произведения РР(1 + 1) при условии, что д; - 1. Если же д, - О, РР1 передается вниз без изменения. РРО во всех позициях содержит нули, а РР4 представляет собой результирутощее произведение. В каждой строке матрицы множимое сдвигается на одну позицию влево с помощью диагональных сигнальных линий. В худшем случае задержка в этой схеме измеряется длиной пути от правого верхнего угла к левому нижнему углу матрицы, где формируется старший разряд произведения.