Как процессоры реализуют инструкции, такие как MUL / MULT? - PullRequest
8 голосов
/ 28 марта 2009

На разных языках ассемблера MUL (x86) / MULT (mips) относятся к умножению. Это черный ящик для программиста. Меня интересует, как на самом деле процессор выполняет умножение независимо от архитектуры. Допустим, у меня есть два 16-разрядных значения в моих регистрах, и я являюсь процессором, поэтому я должен реализовать MUL, используя другие имеющиеся у меня инструкции по обработке битов (и, или, xor, not, shl, shr и т. Д.). Что мне делать?

Ответы [ 2 ]

7 голосов
/ 28 марта 2009

http://en.wikipedia.org/wiki/Multiplication_ALU в Википедии перечислены различные методы для умножения в цифровой схеме.

Когда я работал над проектом по добавлению SIMD-инструкций к DEC Alpha-подобному процессору в Verilog еще в колледже, мы реализовали множитель дерева Уоллеса , основная причина которого заключалась в том, что он работал с фиксированным числом циклы и было легко для конвейера.

РЕДАКТИРОВАТЬ: Вы упомянули, что с использованием других инструкций по битам, на современных процессорах умножение не будет микрокодироваться, как это; это было бы способом замедления, и процессор будет убит в тестах.

3 голосов
/ 28 марта 2009

На этой странице показаны логические элементы для комбинационного умножителя 4 * 4. Вы можете работать оттуда.

Вот чья-то лаборатория , где описывается построение 16-битного умножителя из 4-х 4-битных умножителей, каждый из которых построен с вентилями AND и полными сумматорами. Полный дизайн, макет чипа и имитация сигналов.

...