Изменения

Перейти к: навигация, поиск

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

476 байт добавлено, 04:59, 19 октября 2010
Нет описания правки
== Определение ==
[[Файл:Рисунок2.png|420px|thumb|right]]
Матричный умножитель - цифровая схема, осуществляющяя умножение двух чисел.
== Принцип работы ==
 
[[Файл:Матричный_умножитель_1.png|420px|thumb|right]]
==== Вычисление частичных произведений ====
Матричный умножитель вычисляет частичные произведения по формуле: <br>
<mathtex>m^{(i)} = a * b_i * 2^{i}</mathtex>
==== Суммирование частичных произведений ====
На этом этапе происходит сложение всех частичных произведений m. Это происходит так:
вначале мы суммируем <mathtex>m^{(0)}</mathtex> и <mathtex>m^{(1)}</mathtex>, саму сумму занесем в <mathtex>u^{(1)}</mathtex>, а переносы в <mathtex>v^{(1)}</mathtex>(в <mathtex>u^{(1)}</mathtex> и <mathtex>v^{(1)}</mathtex> будет не более n+1 битов в каждом), затем суммируем числа <mathtex>u^{(1)}</mathtex>, <mathtex>v^{(1)}</mathtex>, <mathtex>m^{(2)}</mathtex> и получаем <mathtex>u^{(2)}</mathtex>, <mathtex>v^{(2)}</mathtex>. Так суммируется <mathtex>u^{(i-1)}</mathtex>, <mathtex>v^{(i-1)}</mathtex>, <mathtex>m^{(i)}</mathtex> для всех i = 2, 3, … , n – 1. В итоге получаем два числа <mathtex>u^{(n-1)}</mathtex> и <mathtex>v^{(i-1)}</mathtex>, которые складываем с помощью [[двоичный каскадный сумматор|двоичного каскадного сумматора]].
==Схемная сложность==
Частичные произведения вычисляются за n шагов, то есть имеют временную сложность O(n). Сложение с вычисление переносов включает n - 1 шагов и требут требует времени O(n). Последнее сложение можно выполнить за O(log n). <br>
В итоге суммарное время работы: <br>
O(n) + O(n) + O(log n) = O(n) <br>
Есть и более быстрые способы умножения двух чисел, например умножение с помощью [[дерево Уоллеса|дерева Уоллеса]], которое работает O(log n).
 
== Литература ==
 
* ''[http://ru.wikipedia.org/wiki/Кормен Кормен Т.], [http://ru.wikipedia.org/wiki/Лейзерсон,_Чарльз_Эрик Лейзерсон Ч.], [http://ru.wikipedia.org/wiki/Ривест,_Рональд_Линн Ривест Р.]''. Алгоритмы: построение и анализ = Introduction to Algorithms / Пер. с англ. под ред. А. Шеня. — М.: МЦНМО, 2000. — 960 с. — ISBN 5-900916-37-5
10
правок

Навигация