乘法器加速1--Booth算法
引言
之前学习了乘法器的设计(计算机组成与设计-乘法器),在考虑对乘法器进行优化中,有一种Booth算法可以进一步加快计算速度。下文对其进行介绍:
Booth Algorithm
Booth算法实际上就是考虑减少计算过程中的乘积项,关键点在于对乘数进行Booth编码:以0111为例
Booth编码特性,当前位与后一位进行比较,若1-0变化,则Booth码为-1;若0-1变化,则Booth码为1;若没有跳变则Booth码为0。最低位需要将被乘数右边扩展一位0作为参考。
因此原本需要进行3次加法,经过编码后减少到2次。对于含有较多连续1或连续0的数据,这样的方式可以极大减小计算次数。
当Booth码为-1时,把被乘数用补码表示,并且符号位扩展,再进行对应位的加法计算即可。
计算案例
2×7:
负数×正数或者负数×负数也是一样的分析方法。可自行验证。