一种浮点数乘法的舍入方法及装置.pdf

上传人:zhu****_FC 文档编号:1639241 上传时间:2018-06-30 格式:PDF 页数:16 大小:764.40KB
返回 下载 相关 举报
摘要
申请专利号:

CN201510075611.7

申请日:

2015.02.12

公开号:

CN104636114A

公开日:

2015.05.20

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||专利申请权的转移IPC(主分类):G06F 7/57登记生效日:20171206变更事项:申请人变更前权利人:中国科学院自动化研究所变更后权利人:北京思朗科技有限责任公司变更事项:地址变更前权利人:100190 北京市海淀区中关村东路95号变更后权利人:102412 北京市房山区阎村镇阎富路1号11号楼4层402|||实质审查的生效IPC(主分类):G06F 7/57申请日:20150212|||公开

IPC分类号:

G06F7/57

主分类号:

G06F7/57

申请人:

中国科学院自动化研究所

发明人:

肖偌舟; 王惠娟; 林玻; 刘檬; 张志伟

地址:

100190北京市海淀区中关村东路95号

优先权:

专利代理机构:

中科专利商标代理有限责任公司11021

代理人:

宋焰琴

PDF下载: PDF下载
内容摘要

本发明公开了一种浮点数乘法的舍入方法及装置,所述方法在进行部分积压缩时,引入预定数据作为部分积参与部分积压缩;所述预定数据根据浮点乘法结果的舍入方式不同而不同,具体如下取值:舍入是向零舍入时,特殊数为0;舍入是就近取偶舍入时,特殊数为2N-2;舍入是向正无穷舍入时,如果结果的符号位是正,取值为2N-1-1,否则是0;舍入是向负无穷舍入时,如果结果的符号位是负,取值为2N-1-1,否则是0;其中,N表示浮点数尾数的长度。本发明在部分积压缩阶段提前引入一个特殊数据,达到简化后续尾数舍入所需工作的效果,提高浮点乘法处理性能。

权利要求书

权利要求书
1.  一种浮点数乘法的舍入方法,其特征在于,在进行部分积压缩时, 引入预定数据作为部分积参与部分积压缩;所述预定数据根据浮点乘法结 果的舍入方式不同而不同,具体如下取值:
(1)舍入是向零舍入时,特殊数为0;
(2)舍入是就近取偶舍入时,特殊数为2N-2;
(3)舍入是向正无穷舍入时,如果结果的符号位是正,取值为 2N-1-1,否则是0;
(4)舍入是向负无穷舍入时,如果结果的符号位是负,取值为 2N-1-1,否则是0;
其中,N表示浮点数尾数的长度。

2.  如权利要求1所述的方法,其特征在于:所述预定数据作为部分 积的一行与其他部分积同时进行压缩。

3.  如权利要求1或2所述的方法,其特征在于:在引入预定数据参 与部分积压缩得到的部分积压缩结果为两个2N位的和与进位,该方法还 包括:
将所述两个2N位的和与进位的高N+1位输入至半加器进行运算,得 到两个N位宽的第一结果和一个1位宽的第二结果;
将所述两个2N位的和与进位的低N-1位输入至加法器进行运算,得 到第N-1位的进位Carry[N-1]、第N-2位的和Round以及第N-3位至第0 位的加法结果,并将所述加法结果进行或操作得到或结果Sticky;
将所述两个N位宽的第一结果输入至复合加法器进行求和,得到两个 N位宽的第一结果之和Sum0以及Sum1,其中Sum1=Sum0+1;
根据所述第二结果、Sum0、Sum1、Carry[N-1]、Round以及Sticky对 乘法结果的尾数进行选择和调整,并产生指数是否增加1的信号。

4.  如权利要求3所述的方法,其特征在于:根据所述第二结果、Sum0、 Sum1、Carry[N-1]、Round以及Sticky对乘法结果的尾数进行选择和调整, 并产生指数是否增加1的信号具体如下:
定义Res0[N-1:1]和Res1[N-1:1],其逻辑如下:
如果Sum0[2N-1]=1,则Res0[N-1:1]=Sum0[2N-1:N+1];
如果Sum0[2N-1]=0,则Res0[N-1:1]=Sum0[2N-2:N]。
如果Sum1[2N-1]=1,则Res1[N-1:1]=Sum1[2N-1:N+1];
如果Sum1[2N-1]=0,则Res1[N-1:1]=Sum1[2N-2:N]。
假设乘法结果的尾数为M[N-1:0],overflow为指数是否增加1的信号, 如果overflow=1,则表示指数需要调整加1;
当且仅当以下四个条件满足其一时:M[N-1:1]选择Res1, overflow=Sum1[2N-1];否则M[N-1:1]选择Res0,overflow=Sum0[2N-1]。
(1)如果向零舍入或者Sum0[2N-1]=0时:Sum[N-1]&Carry[N-1]为 真;
(2)如果是向正/负无穷舍入,乘法结果与舍入方向相反时,与(1) 一致;
(3)如果是向正/负无穷舍入,乘法结果与舍入方向相同且 Sum0[2N-1]=1时:Sum[N-1]|Carry[N-1]为真;
(4)如果就近取偶舍入且Sum0[2N-1]=1时: Sum[N-2]+Sum[N-1]+Carry[N-1]≥2
M[0]的逻辑如下:
如果overflow=1:
在逻辑(就近取偶舍 入)为真且以上四个条件满足其一时,M[0]=Sum1[N];
在逻辑(就近取偶舍 入)为真且以上四个条件都不满足时,M[0]=Sum0[N];
在逻辑(就近取偶舍 入)为假时,M[0]=0;
如果overflow=0:
在逻辑Sum[N-2]|Sticky|~(就近取偶舍入)为真且以上四个条件满足 其一时,M[0]=Sum1[N-1];
在逻辑Sum[N-2]|Sticky|~(就近取偶舍入)为真且以上四个条件都不 满足时,M[0]=Sum0[N-1];
在逻辑Sum[N-2]|Sticky+~(就近取偶舍入)为假时,M[0]=0。

5.  如权利要求1或2所述的方法,其特征在于:进行乘法运算的两 个浮点数为非规格化数,则通过扩展指数表示范围,将其转换成规格化数。

6.  一种浮点数乘法的舍入装置,其特征在于,包括:
部分积压缩模块,其在进行部分积压缩时,引入预定数据作为部分积 参与部分积压缩;所述预定数据根据浮点乘法结果的舍入方式不同而不同, 具体如下取值:
(1)舍入是向零舍入时,特殊数为0;
(2)舍入是就近取偶舍入时,特殊数为2N-2;
(3)舍入是向正无穷舍入时,如果结果的符号位是正,取值为 2N-1-1,否则是0;
(4)舍入是向负无穷舍入时,如果结果的符号位是负,取值为 2N-1-1,否则是0;
其中,N表示浮点数尾数的长度。

7.  如权利要求6所述的方法,其特征在于:所述预定数据作为部分 积的一行与其他部分积同时进行压缩。

8.  如权利要求6或7所述的方法,其特征在于,在引入预定数据参 与部分积压缩得到的部分积压缩结果为两个2N位的和与进位,该装置还 包括:
半加器模块,用于将所述两个2N位的和与进位的高N+1位进行半加 运算,得到两个N位宽的第一结果和一个1位宽的第二结果;
加法器模块,用于将所述两个2N位的和与进位的低N-1位进行加法 运算,得到第N-1位的进位Carry[N-1]、第N-2位的和Round以及第N-3 位至第0位的加法结果,并将所述加法结果进行或操作得到或结果Sticky;
复合加法器模块,用于将所述两个N位宽的第一结果进行求和,得到 两个N位宽的第一结果之和Sum0以及Sum1,其中Sum1=Sum0+1;
调整模块,用于根据所述第二结果、Sum0、Sum1、Carry[N-1]、Round 以及Sticky对乘法结果的尾数进行选择和调整,并产生指数是否增加1的 信号。

9.  如权利要求8所述的方法,其特征在于:所述调整模块具体如下 根据所述第二结果、Sum0、Sum1、Carry[N-1]、Round以及Sticky对乘法 结果的尾数进行选择和调整,并产生指数是否增加1的信号:
定义Res0[N-1:1]和Res1[N-1:1],其逻辑如下:
如果Sum0[2N-1]=1,则Res0[N-1:1]=Sum0[2N-1:N+1];
如果Sum0[2N-1]=0,则Res0[N-1:1]=Sum0[2N-2:N]。
如果Sum1[2N-1]=1,则Res1[N-1:1]=Sum1[2N-1:N+1];
如果Sum1[2N-1]=0,则Res1[N-1:1]=Sum1[2N-2:N]。
假设乘法结果的尾数为M[N-1:0],overflow为指数是否增加1的信号, 如果overflow=1,则表示指数需要调整加1;
当且仅当以下四个条件满足其一时:M[N-1:1]选择Res1, overflow=Sum1[2N-1];否则M[N-1:1]选择Res0,overflow=Sum0[2N-1]。
(1)如果向零舍入或者Sum0[2N-1]=0时:Sum[N-1]&Carry[N-1]为 真;
(2)如果是向正/负无穷舍入,乘法结果与舍入方向相反时,与(1) 一致;
(3)如果是向正/负无穷舍入,乘法结果与舍入方向相同且 Sum0[2N-1]=1时:Sum[N-1]|Carry[N-1]为真;
(4)如果就近取偶舍入且Sum0[2N-1]=1时: Sum[N-2]+Sum[N-1]+Carry[N-1]≥2
M[0]的逻辑如下:
如果overflow=1:
在逻辑(就近取偶舍 入)为真且以上四个条件满足其一时,M[0]=Sum1[N];
在逻辑(就近取偶舍 入)为真且以上四个条件都不满足时,M[0]=Sum0[N];
在逻辑(就近取偶舍 入)为假时,M[0]=0;
如果overflow=0:
在逻辑Sum[N-2]|Sticky|~(就近取偶舍入)为真且以上四个条件满足 其一时,M[0]=Sum1[N-1];
在逻辑Sum[N-2]|Sticky|~(就近取偶舍入)为真且以上四个条件都不 满足时,M[0]=Sum0[N-1];
在逻辑Sum[N-2]|Sticky+~(就近取偶舍入)为假时,M[0]=0。

说明书

说明书一种浮点数乘法的舍入方法及装置
技术领域
本发明属于集成电路设计中的浮点乘法运算技术领域,确切地说,属 于IEEE 754标准的浮点乘法的尾数舍入技术领域。
背景技术
随着数字信号处理技术的不断发展,人们对数据的精确性和处理实时 性要求日益提高。浮点数据运算已经被数字信号处理(DSP)领域广泛采 用。
浮点乘法器是DSP处理器和高性能计算系统的重要组成部分,有研究 表明,在涉及浮点的操作中,有31%左右是乘法操作。在以往的设计中, 浮点乘法是整个系统的关键路径所在,主要原因为浮点乘法器进行尾数处 理时间较长。
IEEE 754定义的浮点表示由符号位,带偏移指数部分和尾数部分组成。 浮点乘法可以分为三部分:符号位异或,指数相加与尾数相乘。这三部分 运算可以并行计算,并在相应阶段做出调整。因为在浮点表示中,尾数位 宽固定,尾数相乘后的结果须舍弃一部分,对此,IEEE 754标准定义了四 种舍入模式:就近舍入,向零舍入,向正无穷舍入和向负无穷舍入。在尾 数的处理中,何处是临界的舍入点与尾数相乘的结果有关,这也是浮点乘 法中最易出错和最耗时的部分。
所以,本发明提出一种适用于IEEE 754标准的单双精度各种舍入模 式的快速浮点乘法舍入装置,以提高浮点乘法器的性能。
发明内容
(一)要解决的技术问题
有鉴于此,本发明的主要目的在于提供一种快速浮点乘法舍入装置, 通过归纳IEEE 754的舍入模式和在尾数处理中部分积压缩时提前引入一 个与舍入相关的特殊值,简化后续尾数舍入。
(二)技术方案
本发明提出了一种浮点数乘法的舍入方法,其特征在于,在进行部分 积压缩时,引入预定数据作为部分积参与部分积压缩;所述预定数据根据 浮点乘法结果的舍入方式不同而不同,具体如下取值:
(1)舍入是向零舍入时,特殊数为0;
(2)舍入是就近取偶舍入时,特殊数为2N-2;
(3)舍入是向正无穷舍入时,如果结果的符号位是正,取值为 2N-1-1,否则是0;
(4)舍入是向负无穷舍入时,如果结果的符号位是负,取值为 2N-1-1,否则是0;
其中,N表示浮点数尾数的长度。
本发明还提出了一种浮点数乘法的舍入装置,其特征在于,包括:
部分积压缩模块,其在进行部分积压缩时,引入预定数据作为部分积 参与部分积压缩;所述预定数据根据浮点乘法结果的舍入方式不同而不同, 具体如下取值:
(1)舍入是向零舍入时,特殊数为0;
(2)舍入是就近取偶舍入时,特殊数为2N-2;
(3)舍入是向正无穷舍入时,如果结果的符号位是正,取值为 2N-1-1,否则是0;
(4)舍入是向负无穷舍入时,如果结果的符号位是负,取值为 2N-1-1,否则是0;
其中,N表示浮点数尾数的长度。
(三)有益效果
从上述技术方案可以看出,本发明具有以下有益效果:
本发明完全适用于IEEE 754单、双精度及扩展精度四种舍入模式的 乘法舍入,由于在部分积压缩阶段提前引入一个与舍入相关的特殊值,简 化了后续尾数计算阶段的逻辑。该特殊值产生的负面影响,如面积、延迟 等相比于其带来的性能提高可以忽略不计。实践证明,采用该装置的浮点 乘法器能显著提高性能。
附图说明
图1是现有技术中12×5行列乘法计算过程示意图;;
图2是现有技术中16行部分积利用华莱士树结构压缩为2个部分积 过程的示意图;
图3是现有技术中全加器的结构示意图;
图4是现有技术中半加器结构示意图;
图5是本发明中引入特殊数据后17行部分积利用华莱士树结构压缩 为2个部分积过程的示意图;
图6是本发明中浮点数乘法的舍入装置结构示意图;
图7是本发明具体实施例中浮点数乘法的舍入装置结构示意图;
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下以IEEE 754 单精度浮点乘法器舍入作为具体实施案例,对本发明进一步详细说明。
本发明提出了一种针对浮点乘法有效的舍入方法,其包括:
在进行部分积压缩时,引入特殊数据作为部分积参与部分积压缩;所 述特殊数据根据浮点乘法结果的舍入方式不同而不同,具体如下取值:
(1)舍入是向零舍入时,特殊数为0;
(2)舍入是就近取偶舍入时,特殊数为2N-2;
(3)舍入是向正无穷舍入时,如果结果的符号位是正,取值为 2N-1-1,否则是0;
(4)舍入是向负无穷舍入时,如果结果的符号位是负,取值为 2N-1-1,否则是0;
其中,N表示浮点数尾数的长度。
本发明提出的上述方法能够实现IEEE 754标准定义的四种舍入:就 近舍入,向零舍入,向正无穷舍入和向负无穷舍入,其中的向正无穷舍入 和向负无穷舍入在舍入时与结果的正负有关,可以转换为向零舍入和向无 穷舍入进行处理。
输入数据可以是规格化数也可以是非规格化数,当输入数据是非规格 化数时,可以通过扩展指数表示范围,转换成规格化数处理。
用N表示浮点数尾数总长度,本发明在传统的部分积压缩基础上,引 入一个特殊数据同时参与压缩,获取两个部分积Sum和Carry,这个特殊 数的产生、压缩引起的面积、延迟等代价非常小,与其带来的性能提高相 比可以忽略。
两个N位的尾数相乘,其中N为自然数,结果至多是2N位,所以中 间结果只保留所需的2N位,超出范围的直接舍去,对最终结果没有影响。 并且由于处理的是规格化数,结果位数从0开始编号,结果的第2N-1位 和第2N-2位至少有一位是1。
下面就现有技术中的浮点数乘法运算与本发明的浮点数乘法运算进 行比较说明。
现有技术中,如图1所示,以简单乘法12×5为例,介绍部分积及部 分积压缩的过程,其进行行列乘法的过程中,先生成4项每项4位的部分 积,然后对这些部分积适当移位对齐后求和,可并行进行压缩得到两个结 果Sum和Carry,然后对Sum和Carry进行求和,得到最终结果。数据压 缩过程为:第一行部分积1100、第二行部分积0000、第三行部分积1100 对齐后进行3∶2压缩,得到部分积000100和11100,与第四行部分积进行 对齐后压缩,得到Sum和Carry:0000100和011100,将此两个数进行对 齐后相加,得到最终的计算结果00111100,以上部分积压缩过程中所述位 宽不等长,在实际运算中会根据具体算法对位宽进行处理,比如补0操作。
以上所述部分积压缩过程可以通过多种形式完成,比如华莱士树压缩, 以16行部分积压缩为2个部分积为例,示意如图2所示。
华莱士树压缩,其并行地对部分积求和而非顺序地求和,为了将16 个部分积输入减少到2个部分积输出,华莱士树需要即6级 3∶2压缩结构。
其中,对于三输入两输出的数据采用3∶2压缩器实现,其结构和功能 如图3和表1所示,功能就是一个全加器。
表1
a b c 进位 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1
其中,对于两输入两输出的数据采用2∶2压缩器实现,其结构和功能 如图4和表2所示,功能就是一个半加器。
表2
a b 进位 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0
本发明引入特殊数据参与压缩,假设之前的部分积行为m行,引入该 特殊数据后,被压缩的部分积行为m+1行,即第m+1行为所引入的特殊 数据;举例说明,如之前部分积行为16行,则引入特殊数据后,部分积 行为17行,部分积压缩过程可采用华莱士树进行,压缩过程如图5所示。 引入特殊数据后部分积压缩过程,除第二级压缩树由3行变为4行同时并 行进行压缩外,其余没有变化,总压缩级数还为6级,压缩时间没有增加。
下面,就本发明提出的上述方法,在引入特殊数据作为部分积参与部 分积压缩的整个浮点数乘法过程进行说明。如图6所示,部分积压缩后, 得到两个2N位的数Sum和Carry,即图6中的601和602。601是这两个 数的高部分,从第2N-1位到第N-1位共N+1位,602是这两个数低部分, 从第N-2位到第0位,共N-1位。在部分积压缩中,特殊数据已经包含, 部分积压缩结果601和602是已经引入特殊数据后的压缩结果。
601进入一个N+1位宽的半加器行603,603半加器行对601提供的 数据,采用N+1个如图4所示的半加器进行运算,得到两个N位宽的结 果和一个1位宽的结果,这两个N位宽的结果位于第2N-1位到第N位, 这个1位宽的结果位于第N-1位,这个位于第N-1位的一位宽的数据进入 606,两个N位宽的数进入N位复合加法器605。
604进行602提供的两个N-1位数进行加法运算,得到第N-1位的进 位,第N-2位的和,以及加法结果第N-3位至第0位,并将第N-3位至第 0位进行或操作。将第N-1位的进位信号表示为Carry[N-1],第N-2位的 和表示为Sum[N-2]即为Round位,加法结果第N-3位至第0位的或的结 果即为Sticky。
Sticky的计算也可用简化的方式,以降低延迟和面积,定义604输入 的两个数为Sum,Carry,位宽为N-1位,Sumi和Carryi为Sum和Carry 各位上的数值,设变量pi,hi,zi,i为0到N-3的正整数:
p i = Sum i ⊕ Carry i ]]>(异或)
hi=Sumi|Carryi(或)
z i = p i ⊕ h i - 1 ]]>
Sticky=z0|z1|...|zN-3
为了加快运算速度,进位Carry[N-1]和Round位Sum[N-2]可采用超前 进位加法器或者其他快速加法器获得。
超前进位加法器利用两个输入操作数和最低有效位的进位输入,并行 产生其它各位的进位输入,基本思想如下:
一位全加器的逻辑表达式为ci+1=xi·yi+(xi+yi)ci公式(1) 定义进位产生因子gi=xiyi,进位传播因子pi=xi+yi,则ci=gi-1+pi-1ci-1,迭 代可得:
ci=gi-1+pi-1gi-2+pi-1pi-2gi-3+…+pi-1pi-2…p1g0+pi-1pi-2…p1p0c0  公式(2)
利用公式(2)计算进位的加法器就是超前进位加法器。
605复合加法器对输入的两个N位宽操作数进行求和。得到结果 Sum0[2N-1:N]和Sum1[2N-1:N],Sum0是两个输入数据之和, Sum1=Sum0+1。
606对尾数的结果进行最后的选择和调整,并产生指数是否增加1的 调整信号,如果尾数运算结果超出其能表示的最大范围,则除了对尾数输 出进行调整,并且指数增加1信号有效,指数在被乘数和乘数指数相加的 基础上再进行加1运算,606具体实现如下所示。
定义Res0[N-1:1]和Res1[N-1:1],其逻辑如下:
如果Sum0[2N-1]=1,则Res0[N-1:1]=Sum0[2N-1:N+1];
如果Sum0[2N-1]=0,则Res0[N-1:1]=Sum0[2N-2:N]。
如果Sum1[2N-1]=1,则Res1[N-1:1]=Sum1[2N-1:N+1];
如果Sum1[2N-1]=0,则Res1[N-1:1]=Sum1[2N-2:N]。
现假定最后的尾数结果为M[N-1:0],该位宽包含一位隐含位。
定义指数增加1信号overflow,overflow=1,则指数需要调整加1。
它们的逻辑如下:
当且仅当以下四个条件满足其一时:M[N-1:1]选择Res1, overflow=Sum1[2N-1];否则M[N-1:1]选择Res0,overflow=Sum0[2N-1]。
(1)如果向零舍入或者Sum0[2N-1]=0时:Sum[N-1]&Carry[N-1]为 真
(2)如果是向正/负无穷舍入,乘法结果与舍入方向相反时,与(1) 一致
(3)如果是向正/负无穷舍入,乘法结果与舍入方向相同且 Sum0[2N-1]=1时:Sum[N-1]|Carry[N-1]为真
(4)如果就近取偶舍入且Sum0[2N-1]=1时: Sum[N-2]+Sum[N-1]+Carry[N-1]≥2
M[0]的逻辑如下:
如果overflow=1:
在逻辑~|(~Sum[N-2])|Sticky|~(就近取偶舍 入)为真且以上四个条件满足其一时,M[0]=Sum1[N];
在逻辑~|(~Sum[N-2])|Sticky|~(就近取偶舍 入)为真且以上四个条件都不满足时,M[0]=Sum0[N];
在逻辑~|(~Sum[N-2])|Sticky|~(就近取偶舍 入)为假时,M[0]=0;
如果overflow=0:
在逻辑Sum[N-2]|Sticky|~(就近取偶舍入)为真且以上四个条件满足 其一时,M[0]=Sum1[N-1];
在逻辑Sum[N-2]|Sticky|~(就近取偶舍入)为真且以上四个条件都不 满足时,M[0]=Sum0[N-1];
在逻辑Sum[N-2]|Sticky+~(就近取偶舍入)为假时,M[0]=0;
至此,浮点乘法尾数计算部分完成。
下面就以两个24位的数相乘为例说明。
IEEE 754单精度的表示方法如下:设A[31:0]为单精度浮点数,A[31] 为符号位,A[30:23]为指数位,A[22:0]为不含隐含位的尾数位。在IEEE 754 标准中,权重从左至右依次递减,最高位隐含位的权重是0,这里为了讨 论的方便,将权重看成从右至左依次递增,最低位的权重是0。
为了使描述方便,现假定输入的操作数是规格化数,输入是非规格化 数时,可以通过扩展指数表示范围,转换成类似规格化数。
尾数乘法采用部分积压缩再求和的方法,方式是基四Booth编码和 Wallace树压缩,基四Booth编码可以将部分积数目减少一半左右,Wallace 树可以并行的压缩这些部分积,同时将特殊值与部分积一起进行压缩。
这个特殊数的取值方式如下:
舍入是向零舍入时,特殊数为0;
舍入是就近取偶舍入时,特殊数为222;
舍入是向正无穷舍入时,如果结果的符号位是正,取值为223-1, 否则是0;
舍入是向正无穷舍入时,如果结果的符号位是正,取值为223-1, 否则是0。
两个24位的数相乘,结果至多是48位,所以中间结果只需要保存48 位即可。并且由于处理的是规格化数,结果的第47位和第46位至少有一 位是1。
如图7所示,部分积压缩后,得到两个48位的数Sum和Carry,即 图7中的701和702。701是这两个数的高部分,从第47位到第23位共 25位,702是这两个数低部分,从第22位到第0位,共23位。在部分积 压缩中,特殊数据已经包含,部分积压缩结果701和702是已经引入特殊 数据后的压缩结果。
701进入一个25位宽的半加器行703,703半加器行对701提供的数 据,采用25个如图4所示的半加器进行运算,得到两个24位宽的结果和 一个1位宽的结果,这两个24位宽的结果位于第47位到第24位,这个1 位宽的结果位于第23位,这个位于第23位的一位宽的数据进入706,两 个24位宽的数进入复合加法器705。
704进行702提供的两个23位数进行加法运算,得到第23位的进位, 第22位的和,以及加法结果第21位至第0位,并将第21位至第0位进 行或操作。将第23位的进位信号表示为C[23],第22位的和表示为S[22] 即为Round位,加法结果第21位至第0位的或的结果即为Sticky。
Sticky的计算也可用简化的方式,以降低延迟和面积,定义704输入 的两个数为Sum,Carry,位宽为23位,Sumi和Carryi为Sum和Carry各 位上的数值,设变量pi,hi,zi,i为0到21的正整数:
p i = Sum i ⊕ Carry i ]]>(异或)
hi=Sumi|Carryi(或)
z i = p i ⊕ h i - 1 ]]>
Sticky=z0|z1|...|z21
进位Carry[23]和Round位Sum[22]也可采用超前进位加法器的方式获 得。
705复合加法器对输入的两个24位宽操作数进行求和。得到结果 Sum0[47:24]和Sum1[47:24],Sum0是两个输入之和,Sum1=Sum0+1。
706对尾数的结果进行最后的选择和调整,并产生指数增加1的调整 信号,如果尾数运算结果超出其能表示的最大范围,则除了对尾数输出进 行调整,并且指数增加1信号有效,指数在被乘数和乘数指数相加的基础 上再进行加1运算,706具体实现如下所示。
定义Res0[23:1]和Res1[23:1],其逻辑如下:
如果Sum0[47]=1,则Res0[23:1]=Sum0[47:25];
如果Sum0[47]=0,则Res0[23:1]=Sum0[46:24]。
如果Sum1[47]=1,则Res1[23:1]=Sum1[47:25];
如果Sum1[47]=0,则Res1[23:1]=Sum1[46:24]。
现假定最后的尾数结果为M[23:0],该位宽包含隐含位。
定义指数增加1信号overflow,overflow=1,则指数需要调整加1。
它们的逻辑如下:
当且仅当以下四个条件满足其一时:M[23:1]选择Res1, overflow=Sum1[47];否则M[23:1]选择Res0,overflow=Sum0[47]。
(1)如果向零舍入或者Sum0[47]=0时:S[23]&C[23]为真
(2)如果是向正/负无穷舍入,乘法结果与舍入方向相反时,与第 一条一致
(3)如果是向正/负无穷舍入,乘法结果与舍入方向相同且 Sum0[47]=1时:S[23]|C[23]为真
(4)如果就近取偶舍入且Sum0[47]=1时:S[22]+S[23]+C[23]≥2
M[0]的逻辑如下:
如果overflow=1:
在逻辑~|(~Sum[22])|Sticky|~(就近取偶舍入) 为真且以上四个条件满足其一时,M[0]=Sum1[24];
在逻辑~|(~Sum[22])|Sticky|~(就近取偶舍入) 为真且以上四个条件都不满足时,M[0]=Sum0[24];
在逻辑~|(~Sum[22])|Sticky|~(就近取偶舍 入)为假时,M[0]=0;
如果overflow=0:
在逻辑Sum[22]|Sticky|~(就近取偶舍入)为真且以上四个条件满足其 一时,M[0]=Sum1[23];
在逻辑Sum[22]|Sticky|~(就近取偶舍入)为真且以上四个条件都不满 足时,M[0]=Sum0[23];
在逻辑Sum[22]|Sticky|~(就近取偶舍入)为假时,M[0]=0;
至此,尾数部分计算完成。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行 了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已, 并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、 等同替换、改进等,均应包含在本发明的保护范围之内。

一种浮点数乘法的舍入方法及装置.pdf_第1页
第1页 / 共16页
一种浮点数乘法的舍入方法及装置.pdf_第2页
第2页 / 共16页
一种浮点数乘法的舍入方法及装置.pdf_第3页
第3页 / 共16页
点击查看更多>>
资源描述

《一种浮点数乘法的舍入方法及装置.pdf》由会员分享,可在线阅读,更多相关《一种浮点数乘法的舍入方法及装置.pdf(16页珍藏版)》请在专利查询网上搜索。

本发明公开了一种浮点数乘法的舍入方法及装置,所述方法在进行部分积压缩时,引入预定数据作为部分积参与部分积压缩;所述预定数据根据浮点乘法结果的舍入方式不同而不同,具体如下取值:舍入是向零舍入时,特殊数为0;舍入是就近取偶舍入时,特殊数为2N-2;舍入是向正无穷舍入时,如果结果的符号位是正,取值为2N-1-1,否则是0;舍入是向负无穷舍入时,如果结果的符号位是负,取值为2N-1-1,否则是0;其中,N。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1