Матричный умножитель — различия между версиями
(→Вычисление частичных произведений) |
(→Вычисление частичных произведений) |
||
Строка 8: | Строка 8: | ||
===== Вычисление частичных произведений ===== | ===== Вычисление частичных произведений ===== | ||
В бинарной системе для вычисления частичного произведения можно воспользоваться логическими элементами <tex>\&</tex> {{---}} конъюнкторами. | В бинарной системе для вычисления частичного произведения можно воспользоваться логическими элементами <tex>\&</tex> {{---}} конъюнкторами. | ||
− | Каждое частичное произведение (<tex>m_i</tex>) {{---}} это результат выполнения <tex>k</tex> логических операции <tex>\&</tex> ( между текущим <tex>i | + | Каждое частичное произведение (<tex>m_i</tex>) {{---}} это результат выполнения <tex>k</tex> логических операции <tex>\&</tex> ( между текущим <tex>i</tex>,где <tex>i=1..n</tex> разрядом множителя и всеми <tex>k</tex> разрядами множимого) и сдвига результата логической операции влево на число разрядов, соответствующее весу текущего разряда множителя. Матричный умножитель вычисляет частичные произведения по формуле: |
− | <tex>m_i = 2^{i - 1} (a \wedge b_i), | + | <tex>m_i = 2^{i - 1} (a \wedge b_i), (i=1..n)</tex> |
===== Суммирование частичных произведений ===== | ===== Суммирование частичных произведений ===== |
Версия 17:17, 19 января 2016
Содержание
Принцип работы
Умножение в бинарной системе
Умножение в бинарной системе счисления происходит точно так же, как в десятичной — по схеме умножения столбиком. Если множимое —
разрядное, а множитель — разрядный, то для формирования произведения требуется вычислить частичных произведений и сложить их между собой.Вычисление частичных произведений
В бинарной системе для вычисления частичного произведения можно воспользоваться логическими элементами
— конъюнкторами. Каждое частичное произведение ( ) — это результат выполнения логических операции ( между текущим ,где разрядом множителя и всеми разрядами множимого) и сдвига результата логической операции влево на число разрядов, соответствующее весу текущего разряда множителя. Матричный умножитель вычисляет частичные произведения по формуле:
Суммирование частичных произведений
На этом этапе происходит сложение всех частичных произведений
.Схема
Принципиальная схема умножителя, реализующая алгоритм двоичного умножения в столбик для двух четырёх — разрядных чисел приведена на рисунке. Формирование частичных произведений осуществляется посредством логических элементов
. Полные одноразрядные сумматоры обеспечивают формирование разрядов результата. Разрядность результата — определяется разрядностью множителя — и множимого — :.
Все конъюнкторы работают параллельно.
Полные одноразрядные сумматоры обеспечивают поразрядное сложение результатов конъюнкций и переносов из предыдущих разрядов сумматора.
В приведенной схеме использованы четырех разрядные сумматоры с последовательным переносом.
Время выполнения операции умножения определяется временем распространения переносов до выходного разряда .
Матричный умножитель — Binary multiplier
Если внимательно посмотреть на схему умножителя, то можно увидеть, что она образует матрицу, сформированную проводниками, по которым передаются разряды числа
и числа . В точках пересечения этих проводников находятся логические элементы . Именно по этой причине умножители, реализованные по данной схеме, получили название матричных умножителей.Схемная сложность
Частичные произведения вычисляются за
шагов. Сложение с вычислением переносов включает шаг. Последнее сложение можно выполнить за .В итоге суммарное время работы:
Время работы схемы можно сократить, если сумматоры располагать не последовательно друг за другом, как это предполагается алгоритмом, приведенным на первом рисунке (общая схема), а суммировать частичные произведения попарно, затем суммировать пары частичных произведений и т.д. В этом случае время выполнения операции умножения значительно сократится.
Особенно заметен выигрыш в быстродействии при построении многоразрядных умножителей, однако ничего не бывает бесплатно. В обмен на быстродействие придётся заплатить увеличением разрядности сумматоров, а значит сложностью схемы.
Есть и более быстрые способы умножения двух чисел, например умножение с помощью дерева Уоллеса, которое работает .
См. также
Источники информации
- Кормен Т., Лейзерсон Ч., Ривест Р.. Алгоритмы: построение и анализ = Introduction to Algorithms / Пер. с англ. под ред. А. Шеня. — М.: МЦНМО, 2000. — 960 с. — ISBN 5-900916-37-5