CN105045560A - 一种定点乘加运算方法和装置 - Google Patents
一种定点乘加运算方法和装置 Download PDFInfo
- Publication number
- CN105045560A CN105045560A CN201510527281.0A CN201510527281A CN105045560A CN 105045560 A CN105045560 A CN 105045560A CN 201510527281 A CN201510527281 A CN 201510527281A CN 105045560 A CN105045560 A CN 105045560A
- Authority
- CN
- China
- Prior art keywords
- result
- multiplication
- additive operation
- seniority
- order digit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Abstract
本发明公开了一种定点乘加运算方法和装置,该方法包括以下步骤:对第一操作数进行处理,得到第一高位数和第一低位数,对第二操作数进行处理,得到第二高位数和第二低位数;根据第一高位数、第一低位数、第二高位数和第二低位数执行乘法操作,得到多个乘法运算结果;根据多个乘法运算结果执行加法运算,得到加法运算结果;将加法运算结果作为数据处理结果输出,或者,对加法运算结果执行求和操作、饱和操作和舍入操作中的至少一项操作,得到数据处理结果。本发明支持多条指令,能够减少功能部件在一拍内所做的工作,提高时钟频率,并使多条指令同时在功能部件中执行,从而提高系统的吞吐率,在性能、延时和面积上实现优化设计。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种定点乘加运算方法和装置。
背景技术
随着多媒体技术和无线通信技术的发展,数字信号处理的规模越来越大,需要在设计相应的数字信号处理器中采用更加先进的算法,实现数据的高效运算。在数据运算密集型应用中,能够同时处理多个并行数据的SIMD(SingleInstructionstreamMultipleDatastreams,单指令流多数据流)处理器具有很大优势。
其中,乘加器是算术逻辑单元中的核心部件之一,其运算能力已经成为衡量数字信号处理器性能指标的一个重要特征,对于芯片的性能、面积和功耗具有重要的影响。在数字信号处理、通讯、图像和视频处理中,随着芯片工作频率和数据位宽的提升,乘加器的瓶颈效应越发明显,从而影响到处理器的吞吐量,在性能、延时和面积上均存在缺陷。
发明内容
本发明提供了一种定点乘加运算方法和装置,以解决现有的乘法器存在瓶颈效应的缺陷。
本发明提供了一种定点乘加运算方法,包括以下步骤:
对第一操作数进行处理,得到第一高位数和第一低位数,对第二操作数进行处理,得到第二高位数和第二低位数;
根据所述第一高位数、所述第一低位数、所述第二高位数和所述第二低位数执行乘法操作,得到多个乘法运算结果;
根据所述多个乘法运算结果执行加法运算,得到加法运算结果;
将所述加法运算结果作为数据处理结果输出,或者,对所述加法运算结果执行求和操作、饱和操作和舍入操作中的至少一项操作,得到数据处理结果。
可选地,根据所述第一高位数、所述第一低位数、所述第二高位数和所述第二低位数执行乘法操作,得到多个乘法运算结果,具体为:
使用第一乘法器对所述第一低位数和所述第二低位数执行乘法操作,得到第一乘法运算结果;使用第二乘法器对所述第一高位数和所述第二高位数执行乘法操作,得到第二乘法运算结果;
根据所述多个乘法运算结果执行加法运算,得到加法运算结果,具体为:
根据选择信号,使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行加法运算,得到加法运算结果。
可选地,所述选择信号为第一预设值;
所述根据选择信号,使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行加法运算,得到加法运算结果,具体为:
使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行与乘加指令对应的加法运算,得到加法运算结果,将所述加法运算结果作为数据处理结果输出。
可选地,所述选择信号为第二预设值;
所述根据选择信号,使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行加法运算,得到加法运算结果,具体为:
使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行与乘减指令对应的加法运算,得到加法运算结果,将所述加法运算结果作为数据处理结果输出。
可选地,所述选择信号为第三预设值;
所述根据选择信号,使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行加法运算,得到加法运算结果,具体为:
使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行与点积指令对应的加法运算,得到加法运算结果;
所述根据选择信号,使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行加法运算,得到加法运算结果之后,还包括:
对所述加法运算结果执行求和操作、饱和操作和舍入操作中的至少一项操作,得到数据处理结果。
可选地,对所述加法运算结果执行求和操作、饱和操作和舍入操作中的至少一项操作,得到数据处理结果,具体为:
对点积指令的控制信号进行判断,如果所述控制信号为第四预设值,则将所述加法运算结果作为数据处理结果输出;如果所述控制信号为第五预设值,将所述加法运算结果与第六预设值相加,对相加结果进行截取,并对截取结果进行符号扩展。
可选地,根据所述第一高位数、所述第一低位数、所述第二高位数和所述第二低位数执行乘法操作,得到多个乘法运算结果,具体为:
使用第一乘法器对所述第一低位数和所述第二低位数执行乘法操作,得到第一乘法运算结果;使用第二乘法器对所述第一高位数和所述第二高位数执行乘法操作,得到第二乘法运算结果;使用第三乘法器对所述第一低位数和所述第二高位数执行乘法操作,得到第三乘法运算结果;使用第四乘法器对所述第一高位数和所述第二低位数执行乘法操作,得到第四乘法运算结果;
根据所述多个乘法运算结果执行加法运算,得到加法运算结果,具体为:
使用第二加法器和第三加法器对所述第一乘法运算结果、所述第二乘法运算结果、所述第三乘法运算结果和所述第四乘法运算结果执行加法运算,得到加法运算结果,所述加法运算结果包括所述第二加法器输出的第一结果以及所述第三加法器输出的第二结果。
可选地,对所述加法运算结果执行求和操作、饱和操作和舍入操作中的至少一项操作,得到数据处理结果,具体为:
对指令类型控制信号进行判断;
如果是第七预设值,则将所述加法运算结果作为数据处理结果输出;
如果是第八预设值,则分别将所述第一结果和所述第二结果与第九预设值相加,对相加结果分别进行截取,并判断截取结果是否饱和,如果饱和,则输出上溢结果或下溢结果;否则,分别得到第一处理结果和第二处理结果,对所述第一处理结果和所述第二处理结果进行拼接,将拼接结果作为数据处理结果输出;
如果是第十预设值,则分别将所述第一结果和所述第二结果与第十一预设值相加,对相加结果分别进行截取,并判断截取结果是否饱和,如果饱和,则输出上溢结果或下溢结果;否则,分别得到第一处理结果和第二处理结果,对所述第一处理结果和所述第二处理结果进行拼接,将拼接结果作为数据处理结果输出。
本发明还提供了一种定点乘加运算装置,包括:
操作数处理模块,用于对第一操作数进行处理,得到第一高位数和第一低位数,对第二操作数进行处理,得到第二高位数和第二低位数;
乘法操作模块,用于根据所述第一高位数、所述第一低位数、所述第二高位数和所述第二低位数执行乘法操作,得到多个乘法运算结果;
加法操作模块,用于根据所述多个乘法运算结果执行加法运算,得到加法运算结果;
输出模块,用于将所述加法运算结果作为数据处理结果输出,或者,对所述加法运算结果执行求和操作、饱和操作和舍入操作中的至少一项操作,得到数据处理结果。
可选地,所述乘法操作模块,具体用于使用第一乘法器对所述第一低位数和所述第二低位数执行乘法操作,得到第一乘法运算结果;使用第二乘法器对所述第一高位数和所述第二高位数执行乘法操作,得到第二乘法运算结果;
所述加法操作模块,具体用于根据选择信号,使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行加法运算,得到加法运算结果。
可选地,所述选择信号为第一预设值;
所述加法操作模块,具体用于使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行与乘加指令对应的加法运算,得到加法运算结果,将所述加法运算结果作为数据处理结果输出。
可选地,所述选择信号为第二预设值;
所述加法操作模块,具体用于使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行与乘减指令对应的加法运算,得到加法运算结果,将所述加法运算结果作为数据处理结果输出。
可选地,所述选择信号为第三预设值;
所述加法操作模块,具体用于使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行与点积指令对应的加法运算,得到加法运算结果;
所述输出模块,具体用于对所述加法运算结果执行求和操作、饱和操作和舍入操作中的至少一项操作,得到数据处理结果。
可选地,所述输出模块,具体用于对点积指令的控制信号进行判断,如果所述控制信号为第四预设值,则将所述加法运算结果作为数据处理结果输出;如果所述控制信号为第五预设值,将所述加法运算结果与第六预设值相加,对相加结果进行截取,并对截取结果进行符号扩展。
可选地,所述乘法操作模块,具体用于使用第一乘法器对所述第一低位数和所述第二低位数执行乘法操作,得到第一乘法运算结果;使用第二乘法器对所述第一高位数和所述第二高位数执行乘法操作,得到第二乘法运算结果;使用第三乘法器对所述第一低位数和所述第二高位数执行乘法操作,得到第三乘法运算结果;使用第四乘法器对所述第一高位数和所述第二低位数执行乘法操作,得到第四乘法运算结果;
所述加法操作模块,具体用于使用第二加法器和第三加法器对所述第一乘法运算结果、所述第二乘法运算结果、所述第三乘法运算结果和所述第四乘法运算结果执行加法运算,得到加法运算结果,所述加法运算结果包括所述第二加法器输出的第一结果以及所述第三加法器输出的第二结果。
可选地,所述输出模块,具体用于对指令类型控制信号进行判断;
如果是第七预设值,则将所述加法运算结果作为数据处理结果输出;
如果是第八预设值,则分别将所述第一结果和所述第二结果与第九预设值相加,对相加结果分别进行截取,并判断截取结果是否饱和,如果饱和,则输出上溢结果或下溢结果;否则,分别得到第一处理结果和第二处理结果,对所述第一处理结果和所述第二处理结果进行拼接,将拼接结果作为数据处理结果输出;
如果是第十预设值,则分别将所述第一结果和所述第二结果与第十一预设值相加,对相加结果分别进行截取,并判断截取结果是否饱和,如果饱和,则输出上溢结果或下溢结果;否则,分别得到第一处理结果和第二处理结果,对所述第一处理结果和所述第二处理结果进行拼接,将拼接结果作为数据处理结果输出。
本发明支持多条指令,能够减少功能部件在一拍内所做的工作,提高时钟频率,并使多条指令同时在功能部件中执行,从而提高系统的吞吐率,在性能、延时和面积上实现优化设计。
附图说明
图1为本发明实施例中的一种定点乘加运算方法流程图;
图2为本发明实施例中的一种定点乘加运算装置结构图;
图3为本发明实施例中的四级流水线的结构示意图;
图4为本发明实施例中的第一、二级流水线的结构示意图;
图5为本发明实施例中的第三级流水线的结构示意图;
图6为本发明实施例中的第四级流水线的结构示意图;
图7为本发明实施例中的复数乘法处理模块的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,如果不冲突,本发明实施例以及实施例中的各个特征可以相互结合,均在本发明的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明实施例提供了一种定点乘加运算方法,如图1所示,包括以下步骤:
步骤101,对第一操作数进行处理,得到第一高位数和第一低位数,对第二操作数进行处理,得到第二高位数和第二低位数。
步骤102,根据第一高位数、第一低位数、第二高位数和第二低位数执行乘法操作,得到多个乘法运算结果。
具体地,可以使用第一乘法器对第一低位数和第二低位数执行乘法操作,得到第一乘法运算结果;使用第二乘法器对第一高位数和第二高位数执行乘法操作,得到第二乘法运算结果。
其中,第一乘法器和第二乘法器可以均为64x32位乘法器。
进一步地,针对复数乘法指令,还可以使用第一乘法器对第一低位数和第二低位数执行乘法操作,得到第一乘法运算结果;使用第二乘法器对第一高位数和第二高位数执行乘法操作,得到第二乘法运算结果;使用第三乘法器对第一低位数和第二高位数执行乘法操作,得到第三乘法运算结果;使用第四乘法器对第一高位数和所述第二低位数执行乘法操作,得到第四乘法运算结果。
其中,第三乘法器和第四乘法器可以均为32x32位乘法器。
步骤103,根据多个乘法运算结果执行加法运算,得到加法运算结果。
具体地,可以根据选择信号,使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行加法运算,得到加法运算结果。
其中,第一加法器可以为64位的SIMD加法器。
本实施例中,上述选择信号可以为第一预设值;相应地,可以使用第一加法器对第一乘法运算结果和所述第二乘法运算结果执行与乘加指令对应的加法运算,得到加法运算结果,将加法运算结果作为数据处理结果输出。
上述选择信号还可以为第二预设值;相应地,可以使用第一加法器对第一乘法运算结果和第二乘法运算结果执行与乘减指令对应的加法运算,得到加法运算结果,将加法运算结果作为数据处理结果输出。
上述选择信号还可以为第三预设值;相应地,可以使用第一加法器对第一乘法运算结果和第二乘法运算结果执行与点积指令对应的加法运算,得到加法运算结果。进一步地,根据选择信号,使用第一加法器对第一乘法运算结果和第二乘法运算结果执行加法运算,得到加法运算结果之后,还可以对加法运算结果执行求和操作、饱和操作和舍入操作中的至少一项操作,得到数据处理结果。
另外,针对复数乘法指令,还可以使用第二加法器和第三加法器对第一乘法运算结果、第二乘法运算结果、第三乘法运算结果和第四乘法运算结果执行加法运算,得到加法运算结果。
其中,第二加法器和第三加法器可以均为64位的SIMD加法器,加法运算结果包括第二加法器输出的第一结果以及第三加法器输出的第二结果。
步骤104,将加法运算结果作为数据处理结果输出,或者,对加法运算结果执行求和操作、饱和操作和舍入操作中的至少一项操作,得到数据处理结果。
具体地,针对点积指令,可以对点积指令的控制信号进行判断,如果控制信号为第四预设值,则将加法运算结果作为数据处理结果输出;如果控制信号为第五预设值,将加法运算结果与第六预设值相加,对相加结果进行截取,并对截取结果进行符号扩展。
针对复数乘法指令,可以对指令类型控制信号进行判断;如果是第七预设值,则将加法运算结果作为数据处理结果输出;如果是第八预设值,则分别将第一结果和第二结果与第九预设值相加,对相加结果分别进行截取,并判断截取结果是否饱和,如果饱和,则输出上溢结果或下溢结果;否则,分别得到第一处理结果和第二处理结果,对第一处理结果和第二处理结果进行拼接,将拼接结果作为数据处理结果输出;如果是第十预设值,则分别将第一结果和第二结果与第十一预设值相加,对相加结果分别进行截取,并判断截取结果是否饱和,如果饱和,则输出上溢结果或下溢结果;否则,分别得到第一处理结果和第二处理结果,对第一处理结果和第二处理结果进行拼接,将拼接结果作为数据处理结果输出。
本发明实施例支持多条指令,能够减少功能部件在一拍内所做的工作,提高时钟频率,并使多条指令同时在功能部件中执行,从而提高系统的吞吐率,在性能、延时和面积上实现优化设计。
基于上述定点乘加运算方法,本发明实施例还提供了一种定点乘加运算装置,如图2所示,包括:
操作数处理模块210,用于对第一操作数进行处理,得到第一高位数和第一低位数,对第二操作数进行处理,得到第二高位数和第二低位数;
乘法操作模块220,用于根据所述第一高位数、所述第一低位数、所述第二高位数和所述第二低位数执行乘法操作,得到多个乘法运算结果;
具体地,上述乘法操作模块220,具体用于使用第一乘法器对所述第一低位数和所述第二低位数执行乘法操作,得到第一乘法运算结果;使用第二乘法器对所述第一高位数和所述第二高位数执行乘法操作,得到第二乘法运算结果;
进一步地,针对复数乘法指令,上述乘法操作模块220,具体用于使用第一乘法器对所述第一低位数和所述第二低位数执行乘法操作,得到第一乘法运算结果;使用第二乘法器对所述第一高位数和所述第二高位数执行乘法操作,得到第二乘法运算结果;使用第三乘法器对所述第一低位数和所述第二高位数执行乘法操作,得到第三乘法运算结果;使用第四乘法器对所述第一高位数和所述第二低位数执行乘法操作,得到第四乘法运算结果;
加法操作模块230,用于根据所述多个乘法运算结果执行加法运算,得到加法运算结果;
具体地,上述加法操作模块230,具体用于根据选择信号,使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行加法运算,得到加法运算结果。
本实施例中,上述选择信号可以为第一预设值;相应地,上述加法操作模块230,具体用于使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行与乘加指令对应的加法运算,得到加法运算结果,将所述加法运算结果作为数据处理结果输出。
上述选择信号还可以为第二预设值;相应地,上述加法操作模块230,具体用于使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行与乘减指令对应的加法运算,得到加法运算结果,将所述加法运算结果作为数据处理结果输出。
上述选择信号还可以为第三预设值;相应地,上述加法操作模块230,具体用于使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行与点积指令对应的加法运算,得到加法运算结果。
另外,针对复数乘法指令,上述加法操作模块230,具体用于使用第二加法器和第三加法器对所述第一乘法运算结果、所述第二乘法运算结果、所述第三乘法运算结果和所述第四乘法运算结果执行加法运算,得到加法运算结果,所述加法运算结果包括所述第二加法器输出的第一结果以及所述第三加法器输出的第二结果。
输出模块240,用于将所述加法运算结果作为数据处理结果输出,或者,对所述加法运算结果执行求和操作、饱和操作和舍入操作中的至少一项操作,得到数据处理结果。
具体地,针对点积指令,上述输出模块240,具体用于对点积指令的控制信号进行判断,如果所述控制信号为第四预设值,则将所述加法运算结果作为数据处理结果输出;如果所述控制信号为第五预设值,将所述加法运算结果与第六预设值相加,对相加结果进行截取,并对截取结果进行符号扩展。
针对复数乘法指令,上述输出模块240,具体用于对指令类型控制信号进行判断;如果是第七预设值,则将所述加法运算结果作为数据处理结果输出;如果是第八预设值,则分别将所述第一结果和所述第二结果与第九预设值相加,对相加结果分别进行截取,并判断截取结果是否饱和,如果饱和,则输出上溢结果或下溢结果;否则,分别得到第一处理结果和第二处理结果,对所述第一处理结果和所述第二处理结果进行拼接,将拼接结果作为数据处理结果输出;如果是第十预设值,则分别将所述第一结果和所述第二结果与第十一预设值相加,对相加结果分别进行截取,并判断截取结果是否饱和,如果饱和,则输出上溢结果或下溢结果;否则,分别得到第一处理结果和第二处理结果,对所述第一处理结果和所述第二处理结果进行拼接,将拼接结果作为数据处理结果输出。
本发明实施例支持多条指令,能够减少功能部件在一拍内所做的工作,提高时钟频率,并使多条指令同时在功能部件中执行,从而提高系统的吞吐率,在性能、延时和面积上实现优化设计。
进一步地,本发明实施例中的定点乘加运算装置可以采用四级流水线结构实现,操作数处理模块210和乘法操作模块220对应第一级流水线和第二级流水线,加法操作模块230对应第三级流水线,输出模块240对应第四级流水线,上述流水线结构,如图3所示。
其中,第一级流水线中的SIMD加法器,用于处理单周期指令,并将处理结果发送给第四级流水线中的选择模块并写回到寄存器。
第一级流水线和第二级流水线还包括第一乘法器、第二乘法器、第三乘法器和第四乘法器,上述四个乘法器用于处理多周期指令,控制信号经第一级流水线和第二级流水线锁存后送往第三级流水线。
其中,第一乘法器和第二乘法器可以均为64x32位乘法器,第三乘法器和第四乘法器可以均为32x32位乘法器。
需要说明的是,第一级流水线和第二级流水线对32位乘法指令处理完毕后,将处理结果发送给第四级流水线中的选择模块并写回到寄存器。
第三级流水线包括第一加法器、第二加法器、第三加法器和乘法处理模块,第一加法器器用于执行乘加指令、乘减指令及点积指令的加法部分;第二加法器和第三加法器,用于执行复数乘法指令的加法部分;乘法处理模块用于处理64位乘法指令。
其中,第一加法器、第二加法器、第三加法器可以均为64位的SIMD加法器。
需要说明的是,第三级流水线对乘加指令和乘减指令处理完毕后,将处理结果发送给第四级流水线中的选择模块并写回到寄存器。
第四级流水线包括点积处理模块和复数乘法处理模块,点积处理模块用于针对点积指令进行舍入和饱和修正,将处理结果发送给第四级流水线中的选择模块并写回到寄存器;复数乘法处理模块用于针对复数乘法指令进行舍入和饱和修正,将处理结果发送给第四级流水线中的选择模块并写回到寄存器。
以下对各级流水线的结构进行详细描述:
如图4所示,为本发明实施例中的第一级流水线和第二级流水线的结构示意图,包括操作数处理模块、符号预处理模块、第一乘法器、第二乘法器、第三乘法器、第四乘法器、拼接模块和站间寄存器。
其中,第一乘法器和第二乘法器可以均为64x32位乘法器,为所有多周期指令共享;第三乘法器和第四乘法器可以均为32x32位乘法器,仅用于执行复数乘法指令。
具体地,操作数处理模块对第一操作数进行处理,得到第一高位数和第一低位数,对第二操作数进行处理,得到第二高位数和第二低位数。第一乘法器对第一低位数和第二低位数执行乘法操作,得到第一乘法运算结果;第二乘法器对第一高位数和第二高位数执行乘法操作,得到第二乘法运算结果;第三乘法器对第一低位数和第二高位数执行乘法操作,得到第三乘法运算结果;第四乘法器对第一高位数和第二低位数执行乘法操作,得到第四乘法运算结果。其中,第一操作数和第二操作数均为64位操作数。
符号预处理模块对64位乘法指令进行符号预处理,提前预测运算结果的符号,以减少路径延时。
拼接模块对第一乘法器输出的第一乘法运算结果和第二乘法器输出的第二乘法运算结果进行拼接,将拼接结果作为32位乘法指令的数据处理结果发送给第四级流水线中的选择模块并写回到寄存器。
对于除32位乘法指令之外其他多周期指令,第一乘法运算结果、第二乘法运算结果、第三乘法运算结果、第四乘法运算结果和所用控制信号经站间寄存器锁存后送往第三级流水线。
如图5所示,为本发明实施例中的第三级流水线的结构示意图,包括操作数处理模块、第一加法器、第二加法器、第三加法器、64位乘法处理模块和站间寄存器。
其中,第一加法器用于执行点积指令、乘加指令和乘减指令的加法部分,第二加法器和第三加法器用于执行复数乘法指令的加法部分,64位乘法处理模块对第一乘法运算结果、第二乘法运算结果、第三乘法运算结果、第四乘法运算结果进行位数处理,将处理结果发送给第四级流水线中的选择模块并写回到寄存器。
其中,第一加法器、第二加法器和第三加法器可以均为64位加法器。
具体地,第一加法器具体用于根据选择信号,对所述第一乘法运算结果和所述第二乘法运算结果执行加法运算,得到加法运算结果。第二加法器和第三加法器分别执行加法操作和减法操作,将操作结果经站间寄存器送往第四流水线。64位乘法处理模块接收第一乘法运算结果、第二乘法运算结果、第三乘法运算结果、第四乘法运算结果,将第一乘法运算结果和第二乘法运算结果的位数处理成64位,将处理结果发送给第四级流水线中的选择模块并写回到寄存器。
本实施例中,选择信号的位数为3位,当选择信号为000时,第一加法器执行点积指令的加法操作,操作结果经站间寄存器锁存后送往第四级流水线;当选择信号为001时,第一加法器执行乘加指令的加法操作,将处理结果发送给第四级流水线中的选择模块并写回到寄存器;当选择信号为010时,第一加法器执行乘减指令的加法操作,将处理结果发送给第四级流水线中的选择模块并写回到寄存器。选择信号选择的不仅是数据信号还有控制信号,如操作数的符号。
如图6所示,为本发明实施例中的第四级流水线的结构示意图,包括操作数处理模块、点积指令处理模块和复数乘法处理模块。
其中,点积指令处理模块中完成各种点积指令的求和、饱和操作和舍入操作等功能。复数乘法指令处理模块中完成各种复数乘法指令的求和、饱和操作和舍入操作等功能。上述两个模块输出两个结果,操作数选择模块产生选择信号,通过该信号来选择两个模块输出的结果,并将选择的结果送往选择模块。
具体地,点积指令有效时,点积处理模块接收第三级流水线的数据信号E3_Dst和E3_DOTType,E3_Dst是第三站加法器1在点积指令有效时产生的和,E3_DOTType是点积指令的控制信号,决定输出是否截取移位。E3_DOTType信号为0时,点积指令不需要进行截取移位操作,结果直接送往选择模块并写回到寄存器。E3_DOTType信号为1时,点积指令需要进行截取移位操作。E3_Dst加上8000_0000h的结果截取高32位,然后符号扩展成64位。
复数乘法指令有效时,复数乘法处理模块接收来自第三级流水线的数据和控制信号。复数乘法处理模块结构图,如图7所示,左半部分是执行的实部运算,右半部分执行的是虚部运算。其中,Dst0是第三级流水线中的第二加法器产生的差,Dst1是第三级流水线中的第三加法器产生的和,E3_CMULType是指令类型控制信号。E3_CMULType信号为00时,执行第一条指令,不需要进行截取移位操作,Dst是来自第三级流水线的128位的数据信号,直接送往选择模块;E3_CMULType信号为01时,需要对第三级流水线发来的数据进行截取移位操作。Dst1和Dst0都先加上8000_0000h,相加的和截取高32位,截取后判饱和。如果没有溢出,结果输出截取的高32位数据;如果有溢出,则上溢结果输出7fff_ffffh,下溢结果输出8000_0000h。实部和虚部的结果输出为Dst1_R和Dst0_R,按照实部在高位,虚部在低位进行拼接,最后的结果送往选择模块;E3_CMULType信号为10时,同样需要对第三级流水线发来的数据进行截取移位操作,其执行过程与E3_CMULType信号为01时大体相同,只在执行加法时,Dst1和Dst0都加上的是4000_0000h。最后输出结果Dst_RI送往选择模块。
本发明实施例通过对符号位进行预处理来实现SIMD功能,支持32/64位复数乘法、32/64位SIMD定点乘法、32位SIMD定点乘加、32位SIMD定点乘减、32位点积、32/64位SIMD定点加法和32/64位SIMD定点减法操作,采用流水线结构,在满足无线通信应用需求的同时向高性能计算领域延伸,一方面减少功能部件在一拍内所做的工作,提高时钟频率,另一方面使多条指令同时在功能部件中执行,提高系统的吞吐率,在性能、延时和面积上实现优化设计,适用于双精度浮点53位尾数的乘法运算,且不影响浮点乘法的性能,在45nm工艺下的最长路径达到为720ps。
结合本文中所公开的实施例描述的方法中的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (16)
1.一种定点乘加运算方法,其特征在于,包括以下步骤:
对第一操作数进行处理,得到第一高位数和第一低位数,对第二操作数进行处理,得到第二高位数和第二低位数;
根据所述第一高位数、所述第一低位数、所述第二高位数和所述第二低位数执行乘法操作,得到多个乘法运算结果;
根据所述多个乘法运算结果执行加法运算,得到加法运算结果;
将所述加法运算结果作为数据处理结果输出,或者,对所述加法运算结果执行求和操作、饱和操作和舍入操作中的至少一项操作,得到数据处理结果。
2.如权利要求1所述的方法,其特征在于,根据所述第一高位数、所述第一低位数、所述第二高位数和所述第二低位数执行乘法操作,得到多个乘法运算结果,具体为:
使用第一乘法器对所述第一低位数和所述第二低位数执行乘法操作,得到第一乘法运算结果;使用第二乘法器对所述第一高位数和所述第二高位数执行乘法操作,得到第二乘法运算结果;
根据所述多个乘法运算结果执行加法运算,得到加法运算结果,具体为:
根据选择信号,使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行加法运算,得到加法运算结果。
3.如权利要求2所述的方法,其特征在于,所述选择信号为第一预设值;
所述根据选择信号,使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行加法运算,得到加法运算结果,具体为:
使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行与乘加指令对应的加法运算,得到加法运算结果,将所述加法运算结果作为数据处理结果输出。
4.如权利要求2所述的方法,其特征在于,所述选择信号为第二预设值;
所述根据选择信号,使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行加法运算,得到加法运算结果,具体为:
使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行与乘减指令对应的加法运算,得到加法运算结果,将所述加法运算结果作为数据处理结果输出。
5.如权利要求2所述的方法,其特征在于,所述选择信号为第三预设值;
所述根据选择信号,使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行加法运算,得到加法运算结果,具体为:
使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行与点积指令对应的加法运算,得到加法运算结果;
所述根据选择信号,使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行加法运算,得到加法运算结果之后,还包括:
对所述加法运算结果执行求和操作、饱和操作和舍入操作中的至少一项操作,得到数据处理结果。
6.如权利要求5所述的方法,其特征在于,对所述加法运算结果执行求和操作、饱和操作和舍入操作中的至少一项操作,得到数据处理结果,具体为:
对点积指令的控制信号进行判断,如果所述控制信号为第四预设值,则将所述加法运算结果作为数据处理结果输出;如果所述控制信号为第五预设值,将所述加法运算结果与第六预设值相加,对相加结果进行截取,并对截取结果进行符号扩展。
7.如权利要求1所述的方法,其特征在于,根据所述第一高位数、所述第一低位数、所述第二高位数和所述第二低位数执行乘法操作,得到多个乘法运算结果,具体为:
使用第一乘法器对所述第一低位数和所述第二低位数执行乘法操作,得到第一乘法运算结果;使用第二乘法器对所述第一高位数和所述第二高位数执行乘法操作,得到第二乘法运算结果;使用第三乘法器对所述第一低位数和所述第二高位数执行乘法操作,得到第三乘法运算结果;使用第四乘法器对所述第一高位数和所述第二低位数执行乘法操作,得到第四乘法运算结果;
根据所述多个乘法运算结果执行加法运算,得到加法运算结果,具体为:
使用第二加法器和第三加法器对所述第一乘法运算结果、所述第二乘法运算结果、所述第三乘法运算结果和所述第四乘法运算结果执行加法运算,得到加法运算结果,所述加法运算结果包括所述第二加法器输出的第一结果以及所述第三加法器输出的第二结果。
8.如权利要求7所述的方法,其特征在于,对所述加法运算结果执行求和操作、饱和操作和舍入操作中的至少一项操作,得到数据处理结果,具体为:
对指令类型控制信号进行判断;
如果是第七预设值,则将所述加法运算结果作为数据处理结果输出;
如果是第八预设值,则分别将所述第一结果和所述第二结果与第九预设值相加,对相加结果分别进行截取,并判断截取结果是否饱和,如果饱和,则输出上溢结果或下溢结果;否则,分别得到第一处理结果和第二处理结果,对所述第一处理结果和所述第二处理结果进行拼接,将拼接结果作为数据处理结果输出;
如果是第十预设值,则分别将所述第一结果和所述第二结果与第十一预设值相加,对相加结果分别进行截取,并判断截取结果是否饱和,如果饱和,则输出上溢结果或下溢结果;否则,分别得到第一处理结果和第二处理结果,对所述第一处理结果和所述第二处理结果进行拼接,将拼接结果作为数据处理结果输出。
9.一种定点乘加运算装置,其特征在于,包括:
操作数处理模块,用于对第一操作数进行处理,得到第一高位数和第一低位数,对第二操作数进行处理,得到第二高位数和第二低位数;
乘法操作模块,用于根据所述第一高位数、所述第一低位数、所述第二高位数和所述第二低位数执行乘法操作,得到多个乘法运算结果;
加法操作模块,用于根据所述多个乘法运算结果执行加法运算,得到加法运算结果;
输出模块,用于将所述加法运算结果作为数据处理结果输出,或者,对所述加法运算结果执行求和操作、饱和操作和舍入操作中的至少一项操作,得到数据处理结果。
10.如权利要求9所述的装置,其特征在于,
所述乘法操作模块,具体用于使用第一乘法器对所述第一低位数和所述第二低位数执行乘法操作,得到第一乘法运算结果;使用第二乘法器对所述第一高位数和所述第二高位数执行乘法操作,得到第二乘法运算结果;
所述加法操作模块,具体用于根据选择信号,使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行加法运算,得到加法运算结果。
11.如权利要求10所述的装置,其特征在于,所述选择信号为第一预设值;
所述加法操作模块,具体用于使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行与乘加指令对应的加法运算,得到加法运算结果,将所述加法运算结果作为数据处理结果输出。
12.如权利要求10所述的装置,其特征在于,所述选择信号为第二预设值;
所述加法操作模块,具体用于使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行与乘减指令对应的加法运算,得到加法运算结果,将所述加法运算结果作为数据处理结果输出。
13.如权利要求10所述的装置,其特征在于,所述选择信号为第三预设值;
所述加法操作模块,具体用于使用第一加法器对所述第一乘法运算结果和所述第二乘法运算结果执行与点积指令对应的加法运算,得到加法运算结果;
所述输出模块,具体用于对所述加法运算结果执行求和操作、饱和操作和舍入操作中的至少一项操作,得到数据处理结果。
14.如权利要求13所述的装置,其特征在于,
所述输出模块,具体用于对点积指令的控制信号进行判断,如果所述控制信号为第四预设值,则将所述加法运算结果作为数据处理结果输出;如果所述控制信号为第五预设值,将所述加法运算结果与第六预设值相加,对相加结果进行截取,并对截取结果进行符号扩展。
15.如权利要求9所述的装置,其特征在于,
所述乘法操作模块,具体用于使用第一乘法器对所述第一低位数和所述第二低位数执行乘法操作,得到第一乘法运算结果;使用第二乘法器对所述第一高位数和所述第二高位数执行乘法操作,得到第二乘法运算结果;使用第三乘法器对所述第一低位数和所述第二高位数执行乘法操作,得到第三乘法运算结果;使用第四乘法器对所述第一高位数和所述第二低位数执行乘法操作,得到第四乘法运算结果;
所述加法操作模块,具体用于使用第二加法器和第三加法器对所述第一乘法运算结果、所述第二乘法运算结果、所述第三乘法运算结果和所述第四乘法运算结果执行加法运算,得到加法运算结果,所述加法运算结果包括所述第二加法器输出的第一结果以及所述第三加法器输出的第二结果。
16.如权利要求15所述的装置,其特征在于,所述输出模块,具体用于对指令类型控制信号进行判断;
如果是第七预设值,则将所述加法运算结果作为数据处理结果输出;
如果是第八预设值,则分别将所述第一结果和所述第二结果与第九预设值相加,对相加结果分别进行截取,并判断截取结果是否饱和,如果饱和,则输出上溢结果或下溢结果;否则,分别得到第一处理结果和第二处理结果,对所述第一处理结果和所述第二处理结果进行拼接,将拼接结果作为数据处理结果输出;
如果是第十预设值,则分别将所述第一结果和所述第二结果与第十一预设值相加,对相加结果分别进行截取,并判断截取结果是否饱和,如果饱和,则输出上溢结果或下溢结果;否则,分别得到第一处理结果和第二处理结果,对所述第一处理结果和所述第二处理结果进行拼接,将拼接结果作为数据处理结果输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510527281.0A CN105045560A (zh) | 2015-08-25 | 2015-08-25 | 一种定点乘加运算方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510527281.0A CN105045560A (zh) | 2015-08-25 | 2015-08-25 | 一种定点乘加运算方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105045560A true CN105045560A (zh) | 2015-11-11 |
Family
ID=54452127
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510527281.0A Pending CN105045560A (zh) | 2015-08-25 | 2015-08-25 | 一种定点乘加运算方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105045560A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107153522A (zh) * | 2017-04-21 | 2017-09-12 | 东南大学 | 一种面向人工神经网络计算的动态精度可配近似乘法器 |
CN109284083A (zh) * | 2018-09-14 | 2019-01-29 | 北京探境科技有限公司 | 一种乘法运算装置及方法 |
CN110209373A (zh) * | 2018-02-28 | 2019-09-06 | 成都鼎桥通信技术有限公司 | 实现复数乘法的方法及装置 |
CN110399117A (zh) * | 2019-07-31 | 2019-11-01 | 上海燧原智能科技有限公司 | 一种混合乘法加法处理方法及装置 |
CN112214199A (zh) * | 2020-09-11 | 2021-01-12 | 清华大学 | 256位乘法器 |
CN112506468A (zh) * | 2020-12-09 | 2021-03-16 | 上海交通大学 | 支持高吞吐多精度乘法运算的risc-v通用处理器 |
CN112988111A (zh) * | 2021-03-05 | 2021-06-18 | 唐山恒鼎科技有限公司 | 一种单比特乘法器 |
CN116257207A (zh) * | 2022-09-08 | 2023-06-13 | 重庆位图信息技术有限公司 | 一种数据截位方法、模块、计算机设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1924798A (zh) * | 2005-09-02 | 2007-03-07 | 中国科学院计算技术研究所 | 一种64比特浮点乘加器及其流水节拍划分方法 |
CN101986260A (zh) * | 2010-11-25 | 2011-03-16 | 中国人民解放军国防科学技术大学 | 乘加方法及乘加器 |
CN103257845A (zh) * | 2012-02-21 | 2013-08-21 | 京微雅格(北京)科技有限公司 | 乘加器 |
-
2015
- 2015-08-25 CN CN201510527281.0A patent/CN105045560A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1924798A (zh) * | 2005-09-02 | 2007-03-07 | 中国科学院计算技术研究所 | 一种64比特浮点乘加器及其流水节拍划分方法 |
CN101986260A (zh) * | 2010-11-25 | 2011-03-16 | 中国人民解放军国防科学技术大学 | 乘加方法及乘加器 |
CN103257845A (zh) * | 2012-02-21 | 2013-08-21 | 京微雅格(北京)科技有限公司 | 乘加器 |
Non-Patent Citations (1)
Title |
---|
成兴华: "FT-XDSP高性能64位定点SIMD乘加部件的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107153522A (zh) * | 2017-04-21 | 2017-09-12 | 东南大学 | 一种面向人工神经网络计算的动态精度可配近似乘法器 |
CN107153522B (zh) * | 2017-04-21 | 2020-10-02 | 东南大学 | 一种面向人工神经网络计算的动态精度可配近似乘法器 |
CN110209373A (zh) * | 2018-02-28 | 2019-09-06 | 成都鼎桥通信技术有限公司 | 实现复数乘法的方法及装置 |
CN109284083A (zh) * | 2018-09-14 | 2019-01-29 | 北京探境科技有限公司 | 一种乘法运算装置及方法 |
CN110399117A (zh) * | 2019-07-31 | 2019-11-01 | 上海燧原智能科技有限公司 | 一种混合乘法加法处理方法及装置 |
CN112214199A (zh) * | 2020-09-11 | 2021-01-12 | 清华大学 | 256位乘法器 |
CN112214199B (zh) * | 2020-09-11 | 2022-06-21 | 北京草木芯科技有限公司 | 256位乘法器 |
CN112506468A (zh) * | 2020-12-09 | 2021-03-16 | 上海交通大学 | 支持高吞吐多精度乘法运算的risc-v通用处理器 |
CN112988111A (zh) * | 2021-03-05 | 2021-06-18 | 唐山恒鼎科技有限公司 | 一种单比特乘法器 |
CN112988111B (zh) * | 2021-03-05 | 2022-02-11 | 唐山恒鼎科技有限公司 | 一种单比特乘法器 |
CN116257207A (zh) * | 2022-09-08 | 2023-06-13 | 重庆位图信息技术有限公司 | 一种数据截位方法、模块、计算机设备及存储介质 |
CN116257207B (zh) * | 2022-09-08 | 2023-10-03 | 重庆位图信息技术有限公司 | 一种数据截位方法、模块、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105045560A (zh) | 一种定点乘加运算方法和装置 | |
CN110036368B (zh) | 用于执行算术运算以累加浮点数的装置及方法 | |
TWI529613B (zh) | 一種用於可降低浮點運算功率之電腦實施方法及算術子系統 | |
US9519460B1 (en) | Universal single instruction multiple data multiplier and wide accumulator unit | |
CN106951211B (zh) | 一种可重构定浮点通用乘法器 | |
CN107305484B (zh) | 一种非线性函数运算装置及方法 | |
CN103019647A (zh) | 具有浮点精度保持功能的浮点累加/累减运算方法 | |
KR102591638B1 (ko) | 3-경로 단일 곱셈-누산기 설계를 위한 고속 근경로 솔루션 | |
US9870200B2 (en) | Decimal and binary floating point rounding | |
CN108958705B (zh) | 一种支持混合数据类型的浮点融合乘加器及其应用方法 | |
Sunesh et al. | Design and implementation of fast floating point multiplier unit | |
Meher | Seamless pipelining of DSP circuits | |
CN103135960A (zh) | 一种基于fpga的集成浮点运算器的设计方法 | |
Min et al. | A floating-point fused FFT butterfly arithmetic unit with merged multiple-constant multipliers | |
Dorrigiv et al. | Low area/power decimal addition with carry-select correction and carry-select sum-digits | |
Lastras et al. | A logarithmic approach to energy-efficient GPU arithmetic for mobile devices | |
US10459689B2 (en) | Calculation of a number of iterations | |
US8924447B2 (en) | Double precision approximation of a single precision operation | |
Hsiao et al. | Design of a low-cost floating-point programmable vertex processor for mobile graphics applications based on hybrid number system | |
Naga Sravanthi et al. | Design and performance analysis of rounding approximate multiplier for signal processing applications | |
JPH04172526A (ja) | 浮動小数点除算器 | |
Lasith et al. | Efficient implementation of single precision floating point processor in FPGA | |
Kabra et al. | Area and power efficient hard multiple generator for radix-8 modulo 2n− 1 multiplier | |
Dhanabal et al. | Implementation of Low Power and Area Efficient Floating-Point Fused Multiply-Add Unit | |
Kakde et al. | FPGA implementation of 128-bit fused multiply add unit for crypto processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20151111 |
|
WD01 | Invention patent application deemed withdrawn after publication |