[发明专利]基于二次Booth编码的大数乘法器无效

专利信息
申请号: 200710122086.5 申请日: 2007-09-21
公开(公告)号: CN101122850A 公开(公告)日: 2008-02-13
发明(设计)人: 李树国;颜晓东 申请(专利权)人: 清华大学
主分类号: G06F7/533 分类号: G06F7/533
代理公司: 暂无信息 代理人: 暂无信息
地址: 100084北*** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 基于 二次 booth 编码 大数 乘法器
【权利要求书】:

1.基于二次Booth编码的大数乘法器,其特征在于,该基于二次Booth编码的大数乘法器对高阶Booth64算法结果进行二次编码

1.1高阶Booth 64算法

设两个位长为n的补码二进制数X、Y分别表示被乘数和乘数:

<mrow><mi>X</mi><mo>=</mo><mo>-</mo><msub><mi>X</mi><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><msup><mn>2</mn><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msup><mo>+</mo><munderover><mi>&Sigma;</mi><mi>i</mi><mrow><mi>n</mi><mo>-</mo><mn>2</mn></mrow></munderover><msub><mi>X</mi><mi>i</mi></msub><msup><mn>2</mn><mi>i</mi></msup></mrow><mrow><mi>Y</mi><mo>=</mo><mo>-</mo><msub><mi>Y</mi><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><msup><mn>2</mn><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msup><mo>+</mo><munderover><mi>&Sigma;</mi><mi>j</mi><mrow><mi>n</mi><mo>-</mo><mn>2</mn></mrow></munderover><msub><mi>Y</mi><mi>j</mi></msub><msup><mn>2</mn><mi>j</mi></msup><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>

其中Xi,Yj∈{0,1};

设乘法结果为Z,则基本乘法运算为

<mrow><mi>Z</mi><mo>=</mo><mi>X</mi><mo>&times;</mo><mi>Y</mi><mo>=</mo><mi>X</mi><mo>&times;</mo><mrow><mo>(</mo><mo>-</mo><msub><mi>Y</mi><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><msup><mn>2</mn><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msup><mo>+</mo><munderover><mi>&Sigma;</mi><mi>j</mi><mrow><mi>n</mi><mo>-</mo><mn>2</mn></mrow></munderover><msub><mi>Y</mi><mi>j</mi></msub><msup><mn>2</mn><mi>j</mi></msup><mo>)</mo></mrow><mo>.</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>

高阶Booth 64编码一次考虑7位乘数,由于每7位之间都重叠一位,因此实际每次编码处理了6位乘数,其数学表达式如下:

<mrow><mi>Y</mi><mo>=</mo><mo>-</mo><msub><mi>Y</mi><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><msup><mn>2</mn><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msup><mo>+</mo><munderover><mi>&Sigma;</mi><mi>j</mi><mrow><mi>n</mi><mo>-</mo><mn>2</mn></mrow></munderover><msub><mi>Y</mi><mi>j</mi></msub><msup><mn>2</mn><mi>j</mi></msup><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>0</mn><mo>,</mo><msub><mi>Y</mi><mrow><mo>-</mo><mn>1</mn></mrow></msub><mo>=</mo><mn>0</mn></mrow><mrow><mi>n</mi><mo>/</mo><mn>6</mn><mo>-</mo><mn>1</mn></mrow></munderover><mrow><mo>(</mo><mrow><mo>(</mo><mo>-</mo><mn>32</mn><msub><mi>Y</mi><mrow><mn>6</mn><mi>j</mi><mo>+</mo><mn>5</mn></mrow></msub><msub><mrow><mn>16</mn><mi>Y</mi></mrow><mrow><mn>6</mn><mi>j</mi><mo>+</mo><mn>4</mn></mrow></msub><mo>+</mo><msub><mrow><mn>8</mn><mi>Y</mi></mrow><mrow><mn>6</mn><mi>j</mi><mo>+</mo><mn>3</mn></mrow></msub><mo>+</mo><msub><mrow><mn>4</mn><mi>Y</mi></mrow><mrow><mn>6</mn><mi>j</mi><mo>+</mo><mn>2</mn></mrow></msub><mo>+</mo><msub><mrow><mn>2</mn><mi>Y</mi></mrow><mrow><mn>6</mn><mi>j</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>Y</mi><mrow><mn>6</mn><mi>j</mi></mrow></msub><mo>+</mo><msub><mi>Y</mi><mrow><mn>6</mn><mi>j</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>&times;</mo><msup><mn>2</mn><mrow><mn>6</mn><mi>j</mi></mrow></msup><mo>)</mo></mrow><mo>.</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow>

式(4)假设乘数Y的位宽n为6的倍数,若其位宽不是6的倍数,则在其高位进行符号位补偿,使得其位宽补足至6的倍数;

根据式(3),高阶Booth 64算法部分积产生的编码规则为

Bj=-32Y6j5+16Y6j+4+8Y6j+3+4Y6j+2+2Y6j+1+Y6j+Y6j-1  (4)

则高阶Booth 64算法可以表示为

<mrow><mi>Z</mi><mo>=</mo><mi>X</mi><mo>&times;</mo><mi>Y</mi><mo>=</mo><mi>X</mi><mo>&times;</mo><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>n</mi><mo>/</mo><mn>6</mn><mo>-</mo><mn>1</mn></mrow></munderover><mrow><mo>(</mo><msub><mi>B</mi><mi>j</mi></msub><mo>&times;</mo><msup><mn>2</mn><mrow><mn>6</mn><mi>j</mi></mrow></msup><mo>)</mo></mrow><mo>.</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow>

式(5)表示部分积从集合{±0X,±1X,±2X,±3X,…,±32X}进行选择,在产生部分积前需要预计算3X,5X,……,31X;部分积个数从n减少为

1.2二次Booth 64编码

由于高阶Booth 64算法需要预计算大量奇数倍被乘数,给硬件实现造成了困难;为了克服这个困难,基于Booth编码基础上,再次进行线性变换编码,即用一个线性表达式B=ka+b来表达高阶Booth 64编码的结果,其中k为系数,a、b为变量;

二次Booth 64线性变换式为:

B=8a+b.    (6)

其中:a,b∈{±0,±1,±2,±3,±4},B={±0,±1,±2,±3,…,±32}.

根据式(6)可得到二次Booth 64编码,见表1,

表1二次Booth 64编码表

  B  a,b  B    a,b  B  a,b  B  a,b  1  0,1  9    1,1  17  2,1  25  3,1  2  0,2  10    1,2  18  2,2  26  3,2  3  0,3  11    1,3  19  2,3  27  3,3  4  0,4  12    1,4  20  2,4  28  3,4  5  1,  -3  13    2,    -3  21  3,  -3  29  4,  -3  6  1,  -2  14    2,    -2  22  3,  -2  30  4,  -2  7  1,  -1  15    2,    -1  23  3,  -1  31  4,  -1  8  1,0  16    2,0  24  3,0  32  4,0

这种转换方式,使得部分积不再从有大量的奇数倍被乘数集合{±0,±1,±2,±3,…,±32}中选取,而是转化成从集合{±0,±1,±2,±3,±4}中选取,从而大大地简化了电路的设计。

2.基于二次Booth编码的大数乘法器,其特征在于,在一块数字集成电路芯片内采用下述三级流水线的并行结构实现:

1)在第一级结构中,用一个超前进位加法器预计算3倍的被乘数,在预计算的同时,分别对权为81的aj和权为80的bj进行二次Booth编码;

2)在第二级结构中,存在两个相同部分积选择和压缩阵列,分别进行权为81的aj和权为80的bj的部分积化简,部分积从集合{±0X,±1X,±2X,±3X,4X}选择,部分积数目的压缩采用Wallace树结构,部分积阵列采用4-2计数器和免进位加法器(CSA-carry save adder)进行部分积的化简,直至得到两个部分积(Sum与Carry),那么,两个部分积选择和压缩阵列共产生4个部分积;

3)在第三级结构中,将第二级得到的4个部分积相加;依据式(6),权为81的aj产生的2个部分积Sum、Carry首先需要通过移位产生8_Sum、8_Carry;这样得到的4个部分积再通过一个4∶2部分积压缩电路得到最终的两个部分积Sum、Carry。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/200710122086.5/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top