在不同的汇编语言中,MUL(x86)/ MULT(mips)指的是乘法。这是程序员的黑盒子。我感兴趣的是,无论架构如何,CPU实际上如何实现乘法。假设我的寄存器中有两个16位值,而且我是cpu,所以我必须使用其他的bit-fiddling指令实现MUL(和,或者,xor,not,shl,shr等)。我该怎么办?
答案 0 :(得分:7)
http://en.wikipedia.org/wiki/Multiplication_ALU列出了在数字电路中进行乘法的不同方法。
当我在一个项目中为大学中的Verilog中的DEC Alpha类处理器添加SIMD指令时,我们实现了Wallace tree multiplier,主要原因是它在固定的周期内运行并且很简单管道。
编辑:你提到使用其他位小提琴指令,在现代处理器上,乘法不会像这样进行微编码;它会变慢,处理器会被基准测试所扼杀。
答案 1 :(得分:3)
This page显示了4 * 4组合乘法器的逻辑门。你可以从那里开始工作。
Here is somebody's lab他们描述了从4个4位乘法器构建一个16位乘法器,每个乘法器都使用AND门和全加器构建。完整的设计,芯片布局和仿真波形。