CPU如何实现MUL / MULT等指令?

时间:2009-03-28 02:54:11

标签: assembly boolean cpu low-level digital-logic

在不同的汇编语言中,MUL(x86)/ MULT(mips)指的是乘法。这是程序员的黑盒子。我感兴趣的是,无论架构如何,CPU实际上如何实现乘法。假设我的寄存器中有两个16位值,而且我是cpu,所以我必须使用其他的bit-fiddling指令实现MUL(和,或者,xor,not,shl,shr等)。我该怎么办?

2 个答案:

答案 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门和全加器构建。完整的设计,芯片布局和仿真波形。