Каким образом в вычислительных устройствах (АЛУ процессора) аппаратно реализован алгоритм умножения? В частности судя по http://www.sm.bmstu.ru/sm5/n4/oba/proz2.html для умножения используются сумматоры и двоичный сдвиг. Я придумал другой метод. Я через дешифраторы преобразовываю двоичную систему счисления в одноединичный код, потом ищу пересечения этих единичек для двух чисел, потом преобразовываю через дешифратор это в двоичную систему счисления. И т.к. умножение это коммутативная операция, схема несколько(почти в два раза) упрощается. Вот нарисовал в logisim http://dump.bitcheese.net/files/umucuby/upd_2.circ и в виде картинки http://dump.bitcheese.net/images/aditoso/sc.png
Имеет ли смысл использовать подобное решение вместо привычного подхода с сумматорами(лучше или хуже оно)? Используется ли подобный подход в процессорах? Если у кого есть опыт с программированием FPGA через verilog/VHDL, имеет ли смысл подобное реализовывать в софт-микропроцессорах? И да, есть ли в Verilog или VHDL cредства для кодогенерации того, что я тут изобразил, для произвольной разрядности чисел? Или надо для таких случаев свой кодогенератор писать? Кастану пожалуй yax123, он вроде что-то на спартанах там делает