Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[203]

разрядных чисел с равной вероятностью появляются значения О и 1, причём разные входы независимы. Докажите, что с вероятностью не менее 1 - 1/га никакой перенос не распространяется далее чем на О (lgra) разрядов.

29.3. Схемы для умножения

Наиболее простой алгоритм умножения «столбиком»состоит в сложении «сдвигов» одного из сомножителей: 2га-битовое произведение двух га-битовых чисел а = (ara-i, ап-2, , ао) и 6 = (bn-i, Ьп 2, , bo) может быть записано как

п-1

р = а Ь = mSl\

8 = 0

где toW = a - bi -2г получается из а сдвигом всех разрядов на г единиц влево (и заполнением освободившихся разрядов нулями), если bi = 1, и равно 0, если Ьг- = 0) (рис. 29.13). Числа тг- называются частичными произведениями; каждое ненулевое частичное произведение соответствет ненулевому разряду в Ь.

Рис. 29.13 29.13 Умножение чисел а = (1110) и Ъ = (1101) столбиком; произведение р = а Ь = (10110110). Каждое частичное произведение тг получается из а сдвигом на г разрядов влево, если b, = 1. В противном случае оно равно нулю.

В этом разделе рассматриваются две схемы для умножения. Матричный умножитель работает за время О(га) и имеет размер в (га2). Дерево Уоллеса (Wallace-tree multiplier) также имеет размер 0(га2), но работает быстрее, за время O(lgra). Обе схемы используют умножение столбиком.

29.3.1. Матричный умножитель

Матричный умножитель работает в три этапа: (1) вычисляет частичные произведения; (2) складывает их, используя сложение с запоминанием переносов, пока не остается два числа; (3) складывает эти два числа (с помощью каскадного сумматора или с предвычисленим переносов).

Матричный умножитель (array multiplier) показан на рис. 29.14; входные биты аг- соответствуют вертикальным проводам, биты Ьг-- горизонтальным. Каждый входной бит поступает на входы га элементов AND, которые вычисляют разряды частичных произведений:

= а? • bi = aj AND bi


Число элементов AND равно га2; все они работают одновременно, вычисляя биты частичных произведений (кроме тех, что заведомо равны 0). Затем сумматоры с запоминанием переносов (составленные из суммирующих элементов FA) складывают частичные произведения. Младшие разряды появляются на выходах в парвом столбце рисунка, старшие получаются на выходе сумматора в низу рисунка.

Рис. 29.14 29.14 Матричный умножитель для п = 4. Элемент AND, обозначенный Ст8, вычисляет j-ik бит частичного произведения т8. Каждый горизонтальный ряд суммипующих элементов FAp) представляет собой сумматор

с запоминанием переносов. Младшие п битов произведения - это бит га0° и u-биты, получаемые в правом столбце в ходе сложения с запоминанием переносов. Старшие п битов получаются на выходе сумматора, складывающего u-биты и-биты, выходящие из суммирующие элементов нижней строки. Показаны значения для множителей рис. 29.13.

Последовательно выполняемые сложения с запоминанием переносов показаны на рис. 29.15. Вначале из чисел 0, то(°) и tow получаются числа и t>W (не более га + 1 битов в каждом; для t>W это так, поскольку га+ 1-ые разряды двух слагаемых из трёх равны 0), при этом то(°) + tow = -wW + t>W Затем из чисел ul\ t>W и то(2) получаются числа и(2) и v2\ имеющие по га + 2 битов каждое (снова в двух слагаемых из трёх старший бит равен 0). Мы продолжаем процесс, складывая и1~1\ г/8-1) и raW для всех i = 2, 3,... , га - 1. В конце концов мы получаем 2 числа ип~1 и vn~l по (2га - 1) битов в каждом, при этом

п-1

+= £ ш(0 =(29.5)

8 = 0

= р.(29.6)

(29.7)

Не все разряды чисел t>W используются: поскольку = 0 при

(г)•...

j = 0,... , г - 1, г + га,... , 2га - 1 и vy- = 0 при j = 0,... , г, г + га, г + га + 1,... , 2га - 1 (см. упражнение 29.3-1), на г-м шаге необходимо работать только с га- 1 разрядами (г, г + 1,... , г + га -2). Вернёмся к

Рис. 29.15 29.15 Суммирование частичных произведений: повторное сложение с запоминанием переносов. Разобран пример рис. 29.13 (а = (1110), Ъ = (1101)). Пустые места перед знаками равенства считаются заполненными нулями. Мы вычисляем т0 + т1 + 0 = и1 + г/1, затем и1 + г/1 + т2 = и2 + г/2, „(2) +г;(2) +т(з) „(з) +v(3) И] наконеЦ] р т(о) т(1) т(2) +т(з) = „(з) j,(3)

При этом ро = пг0° и рг = и-8 для г = 1, 2, . . . , п - 1.

матричному умножителю (рис. 29.14). Элементы AND (обозначен-


ные G) вычисляют частичные произведения. Выходом элемента

G будет бит то есть j-ый бит г-го частичного произведения, так что г-ая строка AND-матрицы даёт га значащих битов частичного произведения га (с индексами га + г - 1, га + г - 2,... , г).

(г)(г)

Каждый ряд сумматоров FA\ ,... , FAi совершает г-й шаг сложения с запоминанием переносов, вычисляя и t>W; элемент FA

,(г) (г-1)(г-1..,-(г)

получает на вход биты т- ,и uj и выдает два бита

и г; 11. Заметьте, что в левой колонке и\ п 1 = т\ п 1, поэтому этот бит не нужно специально вычислять. На входах сумматоров в верхнем ряду фиксировано значение 0, так как одно из слагаемых равно нулю.

Теперь о выходных битах матричного умножителя. Как мы уже отмечали, vn = 0 для j = 0,1,... , га - 1. Поэтому pj = ип

п 11с(!) п(!)(°)

для j = 0,1,... , га - 1. Ьолее того, раз mQ = 0, то и0 = mQ ,

)(0 и Л1-1)

поскольку г младших битов у чисел т(г> и v(t > равны 0, мы имеем = и(г - 1) • для г = 2, 3,... , га - 1 и j = 0,1,... , г - 1. Следовательно, Ро = т0°) и далее рг- = и\ при г = 1, 2,... , га - 1. Так определяются га младших разрядов произведения. Старшие разряды произведения вычисляются с помощью одной из схем предыдущего раздела:

(Р2гг-1,Р2гг-2, , Рп) = ,(""!) >"!)7(п-1)\ , /„("-1) „("-1)v(n-l)\

29.3.2. Характеристики схемы

Сложение с запоминанием переносов включает га-1 шаг и требует времени в (га). После этого готовы младшие биты произведения и слагаемые для последнего сложения, которое можно выполнять либо за время в (га), либо за время в (lgra) - последнее не даёт большой экономии, так как суммарное время работы всё равно составляет в (га).

Схема содержит га2 элементов AND, примерно столько же суммирующих элементов и сумматор размера в (га). Поэтому её размер составляет 0(га2).

29.3.3. Умножение с помощью дерева Уоллеса

Дерево Уоллеса (Wallace tree) сводит задачу сложения га чисел размера га к сложению двух чисел размера в (га). Это делается так: используя [п/3\ сумматоров с запоминанием переносов, мы сводим сложение га чисел к сложению [~2га/3] чисел. Эта процедура повторяется до тех пор, пока не останется всего два слагаемых. На каждом



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51] [стр.52] [стр.53] [стр.54] [стр.55] [стр.56] [стр.57] [стр.58] [стр.59] [стр.60] [стр.61] [стр.62] [стр.63] [стр.64] [стр.65] [стр.66] [стр.67] [стр.68] [стр.69] [стр.70] [стр.71] [стр.72] [стр.73] [стр.74] [стр.75] [стр.76] [стр.77] [стр.78] [стр.79] [стр.80] [стр.81] [стр.82] [стр.83] [стр.84] [стр.85] [стр.86] [стр.87] [стр.88] [стр.89] [стр.90] [стр.91] [стр.92] [стр.93] [стр.94] [стр.95] [стр.96] [стр.97] [стр.98] [стр.99] [стр.100] [стр.101] [стр.102] [стр.103] [стр.104] [стр.105] [стр.106] [стр.107] [стр.108] [стр.109] [стр.110] [стр.111] [стр.112] [стр.113] [стр.114] [стр.115] [стр.116] [стр.117] [стр.118] [стр.119] [стр.120] [стр.121] [стр.122] [стр.123] [стр.124] [стр.125] [стр.126] [стр.127] [стр.128] [стр.129] [стр.130] [стр.131] [стр.132] [стр.133] [стр.134] [стр.135] [стр.136] [стр.137] [стр.138] [стр.139] [стр.140] [стр.141] [стр.142] [стр.143] [стр.144] [стр.145] [стр.146] [стр.147] [стр.148] [стр.149] [стр.150] [стр.151] [стр.152] [стр.153] [стр.154] [стр.155] [стр.156] [стр.157] [стр.158] [стр.159] [стр.160] [стр.161] [стр.162] [стр.163] [стр.164] [стр.165] [стр.166] [стр.167] [стр.168] [стр.169] [стр.170] [стр.171] [стр.172] [стр.173] [стр.174] [стр.175] [стр.176] [стр.177] [стр.178] [стр.179] [стр.180] [стр.181] [стр.182] [стр.183] [стр.184] [стр.185] [стр.186] [стр.187] [стр.188] [стр.189] [стр.190] [стр.191] [стр.192] [стр.193] [стр.194] [стр.195] [стр.196] [стр.197] [стр.198] [стр.199] [стр.200] [стр.201] [стр.202] [стр.203] [стр.204] [стр.205] [стр.206] [стр.207] [стр.208] [стр.209] [стр.210] [стр.211] [стр.212] [стр.213] [стр.214] [стр.215] [стр.216] [стр.217] [стр.218] [стр.219] [стр.220] [стр.221] [стр.222] [стр.223] [стр.224] [стр.225] [стр.226] [стр.227] [стр.228] [стр.229] [стр.230] [стр.231] [стр.232] [стр.233] [стр.234] [стр.235] [стр.236] [стр.237] [стр.238] [стр.239] [стр.240] [стр.241] [стр.242] [стр.243] [стр.244] [стр.245] [стр.246] [стр.247] [стр.248] [стр.249] [стр.250] [стр.251] [стр.252] [стр.253] [стр.254] [стр.255] [стр.256] [стр.257] [стр.258] [стр.259] [стр.260] [стр.261] [стр.262] [стр.263] [стр.264] [стр.265] [стр.266] [стр.267] [стр.268] [стр.269] [стр.270] [стр.271] [стр.272] [стр.273] [стр.274] [стр.275] [стр.276] [стр.277] [стр.278] [стр.279] [стр.280] [стр.281] [стр.282] [стр.283] [стр.284] [стр.285] [стр.286] [стр.287] [стр.288] [стр.289] [стр.290] [стр.291] [стр.292] [стр.293] [стр.294]