Как процессоры реализуют такие инструкции, как MUL/MULT?

StackOverflow https://stackoverflow.com/questions/692083

Вопрос

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top