Матричный умножитель — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 1: Строка 1:
 
== Определение ==
 
== Определение ==
  
Матричный умножитель - цифровая схема, осуществляющяя умножение двух чисел.
+
Матричный умножитель - цифровая схема, осуществляющяя умножение двух чисел c помощью суммирования.
  
 
== Принцип работы ==
 
== Принцип работы ==
  
[[Файл:Матричный_умножитель_1.png|420px|thumb|right]]
+
[[Файл:Матричный_умножитель_2.PNG|420px|thumb|right]]
  
 
==== Вычисление частичных произведений ====
 
==== Вычисление частичных произведений ====
 
Матричный умножитель вычисляет частичные произведения по формуле: <br>
 
Матричный умножитель вычисляет частичные произведения по формуле: <br>
<tex>m^{(i)} = a * b_i * 2^{i}</tex>
+
<tex>m_i = 2^{i} a b_i</tex>
  
 
==== Суммирование частичных произведений ====
 
==== Суммирование частичных произведений ====
 
На этом этапе происходит сложение всех частичных произведений m. Это происходит так:
 
На этом этапе происходит сложение всех частичных произведений m. Это происходит так:
вначале мы суммируем <tex>m^{(0)}</tex> и <tex>m^{(1)}</tex>, саму сумму занесем в <tex>u^{(1)}</tex>, а переносы в <tex>v^{(1)}</tex>(в <tex>u^{(1)}</tex> и <tex>v^{(1)}</tex> будет не более n+1 битов в каждом), затем суммируем числа <tex>u^{(1)}</tex>, <tex>v^{(1)}</tex>, <tex>m^{(2)}</tex> и получаем <tex>u^{(2)}</tex>, <tex>v^{(2)}</tex>. Так суммируется <tex>u^{(i-1)}</tex>, <tex>v^{(i-1)}</tex>, <tex>m^{(i)}</tex> для всех i = 2, 3, … , n – 1. В итоге получаем два числа <tex>u^{(n-1)}</tex> и <tex>v^{(i-1)}</tex>, которые складываем с помощью [[двоичный каскадный сумматор|двоичного каскадного сумматора]].
+
вначале мы суммируем <tex>m_0</tex> и <tex>m_1</tex>, саму сумму занесем в <tex>u_1</tex>, а переносы в <tex>v_1</tex>(в <tex>u_1</tex> и <tex>v_1</tex> будет не более n+1 битов в каждом), затем суммируем числа <tex>u_1</tex>, <tex>v_1</tex>, <tex>m_2</tex> и получаем <tex>u_2</tex>, <tex>v_2</tex>. Так суммируется <tex>u_{i-1}</tex>, <tex>v_{i-1}</tex>, <tex>m_i</tex> для всех i = 2, 3, … , n – 1. В итоге получаем два числа <tex>u_{n-1}</tex> и <tex>v_{i-1}</tex>, которые складываем с помощью [[двоичный каскадный сумматор|двоичного каскадного сумматора]].
 
==Схемная сложность==
 
==Схемная сложность==
 
Частичные произведения вычисляются за ''n'' шагов. Сложение с вычисление переносов включает ''n - 1'' шаг. Последнее сложение можно выполнить за ''O(log n)''. <br>
 
Частичные произведения вычисляются за ''n'' шагов. Сложение с вычисление переносов включает ''n - 1'' шаг. Последнее сложение можно выполнить за ''O(log n)''. <br>

Версия 22:07, 29 октября 2010

Определение

Матричный умножитель - цифровая схема, осуществляющяя умножение двух чисел c помощью суммирования.

Принцип работы

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

Вычисление частичных произведений

Матричный умножитель вычисляет частичные произведения по формуле:
[math]m_i = 2^{i} a b_i[/math]

Суммирование частичных произведений

На этом этапе происходит сложение всех частичных произведений m. Это происходит так: вначале мы суммируем [math]m_0[/math] и [math]m_1[/math], саму сумму занесем в [math]u_1[/math], а переносы в [math]v_1[/math][math]u_1[/math] и [math]v_1[/math] будет не более n+1 битов в каждом), затем суммируем числа [math]u_1[/math], [math]v_1[/math], [math]m_2[/math] и получаем [math]u_2[/math], [math]v_2[/math]. Так суммируется [math]u_{i-1}[/math], [math]v_{i-1}[/math], [math]m_i[/math] для всех i = 2, 3, … , n – 1. В итоге получаем два числа [math]u_{n-1}[/math] и [math]v_{i-1}[/math], которые складываем с помощью двоичного каскадного сумматора.

Схемная сложность

Частичные произведения вычисляются за n шагов. Сложение с вычисление переносов включает n - 1 шаг. Последнее сложение можно выполнить за O(log n).
В итоге суммарное время работы:
O(n) + O(n) + O(log n) = O(n)
Есть и более быстрые способы умножения двух чисел, например умножение с помощью дерева Уоллеса, которое работает O(log n).

Литература