以下内容摘自《步步惊芯——软核处理器内部设计分析》一书
串行乘法
OR1200中串行乘法采用的是“移位——加”迭代算法,这种算法借鉴了手工计算乘法的过程,对于二进制乘法,比如:1101*1011,手工计算过程如图8.1所示。
图8.1 手工计算二进制乘法的过程
从图中可知手工计算时会将被乘数与乘数中每一位依次相乘,最后将所有的乘积项一并相加。这种方法速度快,但是用硬件实现时,会耗费较多硬件资源。“移位——加”迭代算法对此作了修改:每算出一乘积项,就加到乘积中。假设一开始B等于被乘数的值,A等于乘数的值,中间步骤算出的乘积项称为部分积,保存在D中,那么“移位——加”迭代算法的硬件结构图、运算过程分别如图8.2中(1)、(2)所示。