CN115904507A - 面向cgra的多精度小面积simd运算系统、方法、介质及设备 - Google Patents
面向cgra的多精度小面积simd运算系统、方法、介质及设备 Download PDFInfo
- Publication number
- CN115904507A CN115904507A CN202211411460.4A CN202211411460A CN115904507A CN 115904507 A CN115904507 A CN 115904507A CN 202211411460 A CN202211411460 A CN 202211411460A CN 115904507 A CN115904507 A CN 115904507A
- Authority
- CN
- China
- Prior art keywords
- bit
- data
- result
- bits
- multiplier
- 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
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Complex Calculations (AREA)
Abstract
本发明提供了一种面向CGRA的多精度小面积SIMD运算系统、方法、介质及设备,包括编码模块、累加模块和溢出处理模块,编码模块由编码单元、选择器和解码选择单元组成,通过基于Booth算法进行编码操作,并基于模式选择进行数据的解码得到部分积结果;累加模块由多块部分积压缩组成,基于模式选择将不同块的部分积压缩结果进行求和拼接;溢出处理模块通过将累加模块结果进行溢出处理,得到最后的截位数据。本发明的工作精度可以配置,能够支持目前主流的32比特和8比特位宽神经网络应用的高速部署工作,拥有较高的资源利用率,另外通过三级流水的方式进行数据运算处理,保证了1GHz的工作频率。
Description
技术领域
本发明涉及数据处理技术领域,具体地,涉及一种面向CGRA的多精度小面积SIMD运算系统、方法、介质及设备。
背景技术
可重构计算CGRA属于粗粒度异构可重构架构的一类,它的基本单元是PE、LSE、LC、LSU,其中PE处理粗粒度的算术运算,是一种可配置的处理单元,以适应不同的应用场景,能够灵活地面对一般计算,如快速傅里叶变换(Fast Fourier transform)等。
SIMD全称Single Instruction Multiple Data,单指令多数据流,能够复制多个操作数,并把它们打包在大型寄存器的一组指令集。
为了提高计算单元的计算利用率,往往设计专用的低精度计算单元,通过组合的方式进行高精度计算,即一个高精度乘法器(32比特)分解成几个低精度乘法器(8比特),计算单元可以被配置为不同的计算精度。
基本的计算单元由部分积产生、部分积压缩和进位传播加法器三部分组成。这三部分的具体实现方式也是多种多样。产生部分积的常用方法有与门操作、Baugh-Wooley算法与Booth算法,其中Booth算法通过编码方式降低产生的部分积行数,大幅度的降低后续压缩逻辑的面积、功耗与延时。部分积压缩常用手段有阵列乘法器和树型乘法器,其中Wallace树作为典型的树型乘法器因低延时、高布线资源需求成为了目前常用技术。进位传播加法器作为整个乘法器的最后一步,对于延时起到了至关重要的影响。对于加法器的优化,常见的有行波进位加法器和超前进位加法器等。
专利文献CN113794552A(申请号:CN202111074292.X)公开了一种基于SIMD的SM3并行数据加密运算方法及系统,获取多条待处理数据;如果各条待处理数据等长,对待处理的数据进行分组,每组的长度相同,分组执行CF函数运算;在完成多轮CF函数运算后,对最后的分组进行判断,如果数据长度如果小于或等于第一阈值,则将代表数据长度的比特串放入当前分组的末尾,进行最后一轮CF函数运算;如果数据长度大于第一阈值,则先对当前分组进行CF函数运算,将代表长度的比特串放入下一分组再进行CF函数运算,直至得到最终的运算结果。
由于目前不同神经网络的精度不同,采用固定精度的计算单元往往会导致大量的计算资源浪费,带来不必要的额外成本开销。尤其是在资源受限的ASIC设计中,如何设计一个可配置的处理单元便成为了一个亟待解决的问题。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种面向CGRA的多精度小面积SIMD运算系统、方法、介质及设备。
根据本发明提供的面向CGRA的多精度小面积SIMD运算系统,包括编码模块、累加模块和溢出模块;
所述编码模块包括编码单元、选择器Mux和解码选择单元Select;
所述编码单元用于将原始的被乘数X通过Booth编码操作得到S、D和N参数;
所述选择器用于选择不同精度和符号模式中模式的编码模块数据走向;
所述解码单元用于将编码得到的S、D和N参数与乘数Y进行解码操作,得到每行部分的部分积结果;
所述S、D和N参数为被乘数X的编码结果,其中S代表32位单精度格式Single,输出结果为±1;D为64位双精度格式Double,输出结果为±2;N为否定符号Negation,代表操作的符号位;
所述累加模块用于按预设时序进行编码后累加乘法部分积和累加乘法结果;
所述溢出处理模块用于根据预设规则进行低位截位、高位截位和饱和截位。
优选的,编码单元中,X为被乘数,Y为乘数,Single信号的表达式为X2i-1^X2i;Double信号的表达式为~(~(X2i-1&X2i&~Xwi+1)&~(~X2i-1&~X2i&X2i);Negation信号为~X2i+1;
选取基-4的Booth算法,对于编码模块,将被乘数X每3位比特进行一次编码操作,引入参数i代表数据的组数,每组数据表示为X2i+1、X2i、X2i-1,取值范围为0、1、2和3,共四个整数,当i=0时,X-1=0。
优选的,所述选择器为2to 1选择器。
优选的,所述解码单元的输入信号为S、D、N和乘数Y组合而成,采用32位Booth乘法运算复用4个8位Booth乘法运算,在8位Booth运算中,在边界编码单元处设有选择器选择是否进行32位运算。
优选的,编码模块产生部分积的过程为:
基于选择器选择的数据走向后,对数据进行分组,然后将编码结果S、D和N参数与乘数Y放入解码模块中,得到部分积PP,引入参数j代表部分积PP的每位数据,其中j取值为0~7的整数;
部分积PP与编码结果和乘数Y的关系表达式为:PPj=~(~(Yj&D)&~(Yj-1&S))^N,其中,PP0=~(S&Y0)^N。
优选的,将由编码模块产生的部分积分割成8个部分,其中,Part1、2、5和6都是单个用于产生8比特乘法结果的累加单元,Part3和7以及Part4和8是为了满足流水线而进行的切割分块;
对于低32位的输出结果,首先由Part1、2和3产生对应的17位和23位累加结果,并和Part4累加在一起产生36比特的输出结果,最后根据控制信号决定模式:
若为8比特乘法模式,则将Part1和2各16位的结果进行拼接,产生32位的结果;
若为32比特乘法模式,则以产生的36比特输出结果中的低32位为32比特乘法器的低32位结果,剩下的高4位为进位,用作高32比特输出结果的加数;
对于高32位的输出结果,由Part5、6和7产生的对应的17位和26位累加结果,并和Part8以及来自低32位输出结果的4位数进行累加,产生32位的累加结果,最后根据控制信号决定模式:
若为8比特乘法模式,则将Part3和4各16位的结果进行拼接,产生32位的结果;
若为32比特乘法模式,则以产生的32比特输出结果为32比特乘法器的高32位结果;
将低32位输出结果和高32位输出结果各自产生的32位数直接拼接,产生的64位结果即为32比特乘法器的输出结果。
优选的,所述低位截位:对于32位操作为保留低32位,对于8位操作为保留低8位;
所述高位截位:对于32位操作为保留高32位,对于8位操作为保留高8位;
所述饱和截位:对于32位运算和8位运算分为有无符号、正数负数饱和截位,无符号溢出只需判断高位按位或是否为1,若为1,则溢出;有符号正溢出判断高位按位或是否为1,若为1,则溢出;有符号负溢出判断高位按位与是否为0,若为0,则溢出。
根据本发明提供的面向CGRA的多精度小面积SIMD运算方法,包括如下步骤:
步骤1:在一组输入数据和模式选择数据输入后,通过16个编码器工作产生当前这组数据Select所需的信号S、D和N;
步骤2:所有对应输出低32位的编码单元开始工作,输入量为S、D和N以及本组的被乘数输入数据,解码选择的结果放入累加单元中进行累加,最终输出结果为36位数据,其中高4位数据用作下一个周期的加法,低32位为32比特乘法器对应的低32比特数据;
步骤3:将输入数据中的乘数B、所有控制信号、步骤1中得到的信号S/D/N、步骤2中得到的36比特数据和加数C放入寄存器中缓存,结束第一个时间周期;
步骤4:将缓存的S/D/N和乘数B用作为高32位编码单元的输入数据,得到对应的结果;
步骤5:将缓存的S/D/N、乘数B和36比特数据的高4比特数据放入累加单元中进行累加,最终得到高32比特数据;
步骤6:将步骤3中所有控制信号、加数C、36比特数据中的低32比特数据、步骤5中得到的高32比特数据放入寄存器缓存,结束第二个时间周期;
步骤7:将步骤6中缓存的低32比特数据和高32比特数据进行拼接,得到32位乘法器的64比特输出数据,根据步骤6中缓存的控制信号进行加数C的累加,得到64位结果;
步骤8:根据步骤6中缓存的控制信号对步骤7中得到的64位结果进行溢出处理,选择溢出模式,得到最后的32位输出结果。
根据本发明提供的一种存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现所述的面向CGRA的多精度小面积SIMD运算方法的步骤。
根据本发明提供的一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被处理器执行时实现所述的面向CGRA的多精度小面积SIMD运算方法的步骤。
与现有技术相比,本发明具有如下的有益效果:
(1)本发明的工作精度可以配置,能够支持目前主流的32比特和8比特位宽神经网络应用的高速部署工作,拥有较高的资源利用率,另外,本发明通过三级流水的方式进行数据运算处理,保证了1GHz的工作频率;
(2)本发明面向CGRA项目设计需求,基于专用集成电路设计ASIC,利用Booth算法和Wallace压缩方式,通过控制逻辑满足了多工作模式,实现了多功能、高性能、低资源消耗的多精度SIMD运算。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为电路整体结构图;
图2为编码模块的结构图;
图3为解码模块的结构图;
图4为传统的8位Booth无符号乘法运算部分积示意图;
图5为优化后的8位Booth有/无符号乘法运算部分积示意图;
图6为部分积结构图;图6a为X0结构图,图6b为X1结构图,图6c为X6结构图;
图7为部分积分块压缩示意图;
图8为溢出处理模块流程图;
图9为按流水切割的累加模块图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例:
本发明提出了一种基于Booth算法的多精度小面积SIMD运算器,电路的整体结构如图1所示。该电路主要包括编码模块、累加模块、溢出处理模块、模式选择模块。
1、编码模块
编码模块由编码(Encode)单元、选择器(Mux)和解码选择(Select)单元组成,编码模块的结构如图2所示。其中,X为被乘数,Y为乘数,Single信号的表达式为X2i-1^X2i,Double信号的表达式为~(~(X2i-1&X2i&~Xwi+1)&~(~X2i-1&~X2i&X2i),Negative信号为~X2i+1。选择器为2to 1选择器;解码单元的输入信号为Single、Double、Negative和乘数Y组合而成,结构如图3所示。
本发明中8位有/无符号Booth乘法由Select和Mux单元组合而成,32位基于8位乘法单元进行复用。图4为传统的8位Booth无符号乘法运算部分积示意图,图5为改进后8位乘法器部分积阵列示意图。X2结构与X1结构一样,输入pp09变为pp0_10。X3结构与X1结构一样,三个输入不同,pp09变为pp0_11,N0取反,pp08取反。X4与X0完全相同,X5结构与X3结构相似,输入由变为X6的结果因有无符号并不影响这一位,只会出现32位和8位运算的切换。X7与X0完全相同,X8结构与X5结构类似,输入由变为X9结构与X6结构相似,输入由pp0_10变为pp2_10,X0、X1和X6结构分别如图6a、图6b、图6c所示。
在编码模块中,32位Booth乘法运算复用4个8位Booth乘法运算,在改进的8位Booth运算中,边界处的编码单元有一个Mux选择是否进行32位运算。编码模块的设计兼容了有无符号预算,且方便SIMD运算进行4个8位乘法和32位乘法模式切换,减小资源和功耗的浪费。
选取基-4的Booth算法,对于编码模块,将被乘数X每3位比特进行一次编码操作,以8比特被乘数X为例,以X7、X6、X5、X4、X3、X2、X1、X0来表示8位被乘数X。在编码前,将被乘数X分为X7、X6、X5;X5、X4、X3;X3、X2、X1和X1、X0、0共四组数据,每组数据都由3比特数据组成。为了方便描述,引入参数i代表数据的组数,每组数据表示为X2i+1、X2i、X2i-1,取值范围为0、1、2和3,共四个整数,特别的,当i=0时,有X-1=0。
2、累加模块
累加模块分为编码后乘法部分积累加和乘法结果累加。在产生了部分积以后,需要分块对每一块的部分积进行加和,同时为了满足时序要求,还需要按照一定的顺序对产生的部分积进行累加。
完成数据分组后,共有四组数据。基于选择器选择正确的数据走向后,将分组好的数据作为编码模块的输入,即可得到每组数据对应的S、D和N信号,其中S、D和N与被乘数X的关系为:S信号的表达式为X2i-1^X2i,D信号的表达式为~(~(X2i-1&X2i&~X2i+1)&~(~X2i-1&~X2i&X2i),N信号为~X2i+1,其中i是问题2补充中的组数i。
在完成了四组编码过程后,即可将编码结果S、D和N信号与乘数Y放入解码模块中,得到四组部分积PP。以第一组部分积为例,首先Y同样是一个8比特数据,可以表示为Y7、Y6、Y5、Y4、Y3、Y2、Y1、Y0,与编码结果一同放入解码模块后可以得到PP7、PP6、PP5、PP4、PP3、PP2、PP1、PP0,为了方便描述,引入了参数j代表了部分积PP的每位数据,其中j取值为0-7的整数。部分积PP与编码结果和乘数Y的关系表达式为PPj=~(~(Yj&D)&~(Yj-1&S))^N,特别的,有PP0=~(S&Y0)^N。通过四组解码模块后即可得到四组部分积数据。
为满足时序要求,基于流水线的设计对累加部分提出了一定的要求,将整个乘法器由编码模块产生的部分积进行如图7的分割,其中,Part1、2、5和6都是单个用于产生8比特乘法结果的累加单元,Part3和7以及Part4和8是为了满足流水线而进行的切割分块。
计算的顺序如图8所示,对于右半边(低32位输出结果),首先由part1、2和3产生对应的17位和23位累加结果,并和part4累加在一起产生36比特的输出结果,最后需要根据控制信号决定模式:
(1)若为8比特乘法模式则将part1和2的结果(各16位)进行拼接,产生32位的结果;
(2)若为32比特乘法模式则以产生的36比特输出结果中的低32位为32比特乘法器的低32位结果(共64位),剩下的高4位为进位,用作左半边(高32比特输出结果)的加数。
接下来是左半边(高32位输出结果)的累加计算,同样是由part5、6和7产生的对应的17位和26位累加结果,并和part8以及来自右半边的4位数进行累加,产生32位的累加结果,同样需要根据控制信号决定模式:
(1)若为8比特乘法模式则将part3和4的结果(各16位)进行拼接,产生32位的结果;
(2)若为32比特乘法模式则以产生的32比特输出结果为32比特乘法器的高32位结果(共64位)。
最终将左右两部分各自产生的32位数直接拼接,产生的64位结果即为32比特乘法器的输出结果,用于溢出处理模块的输入。
乘法结果累加常应用于32位乘法结果加一个64位输入,8位乘法结果加一个16位输入,以及4个8位乘法结果相加再加上一个16位乘累加数。两个8位数相加可以理解为,其中一个8位乘以1加上一个8位输入,两个32位数相加可以理解为,其中一个32位乘以1加上一个32位输入。加法操作可以复用乘法操作的资源和控制逻辑,减小了逻辑的复杂度,节约资源。
3、溢出处理模块
溢出处理模块包括低位截位、高位截位和饱和截位,具体流程图如图8所示。低位截位对于32位操作就是保留低32位,对于8位操作就是保留低8位;高位截位对于32位操作就是保留高32位,此时因为32位乘法和32位加法输出结果位宽不同,其高位略有不同,对于8位操作就是保留高8位,同样8位乘法和8位加法的高位略有不同;饱和截位对于32位运算和8位运算要分有无符号、正数负数饱和截位,其判断流程图如图8所示。无符号溢出只需判断高位按位或是否为1,若为1,则溢出;有符号正溢出也是判断高位按位或是否为1;有符号负溢出是判断高位按位与是否为0,若为0,则溢出。
4、流水线控制
考虑到诸如8比特乘法和33比特加法器都对1GHz工作频率的时序提出了挑战,所以流水线切割位置就显得尤为重要。
流水线控制主要通过门级切流水的方式,控制数据缓存入寄存器中,保证整个乘法器支持流水线工作模式,提高了工作效率。图9所示通过流水线的控制,整体延时可以较为均匀的分配到每一个时间周期中,为后续综合工作中时序的满足奠定了基础。流水线控制的核心内容是编码模块、累加模块和溢出模块的整体时序控制。
本发明控制编码模块、累加模块和溢出模块的流水线控制流如下:
(1)一组输入数据和模式选择数据输入后,16个编码器开始工作,产生当前这组数据Select所需的信号S、D和N。
S、D和N代表了被乘数X的编码结果,即对乘数Y要进行的不同操作,如下表所示,其中S代表了Single,即输出结果为±1;D为Double,即输出结果为±2;N为Negation,代表了操作的符号位。
<![CDATA[x<sub>2i+1</sub>x<sub>2i</sub>x<sub>2i-1</sub>]]> | S | D | N | OP |
000 | 0 | 0 | 0 | +0 |
001 | 1 | 0 | 0 | +Y |
010 | 1 | 0 | 0 | +Y |
011 | 0 | 1 | 0 | +2Y |
100 | 0 | 1 | 1 | -2Y |
101 | 1 | 0 | 1 | -Y |
110 | 1 | 0 | 1 | -Y |
111 | 0 | 0 | 1 | -0 |
(2)所有对应输出低32位的编码单元开始工作,输入量为(1)中的S、D和N以及本组的被乘数输入数据。解码选择的结果放入累加单元中进行累加,最终输出结果为36位数据,其中高4位数据用作下一个周期的加法,低32位为32比特乘法器对应的低32比特数据。
(3)将输入数据中的乘数B、所有控制信号、(1)中得到的S/D/N、(2)中得到的36比特数据和加数C放入寄存器中缓存,对于本组数据来说第一个时间周期结束。
(4)将(3)中缓存的S/D/N和乘数B用作为高32位编码单元的输入数据,得到对应的结果。
(5)将(4)中的数据和(3)中缓存的36比特的高4比特放入累加单元中进行累加,最终得到高32比特数据。
(6)将(3)中所有控制信号、加数C、36比特数据中的低32比特数据、(5)中得到的高32比特数据放入寄存器缓存,对于本组数据来说第二个时间周期结束。
(7)将(6)中缓存的低32比特数据和高32比特拼接,得到32位乘法器的64比特输出数据,根据(6)中缓存的控制信号进行累加值C的累加,得到64位结果。
(8)根据(6)中缓存的控制信号对(7)中得到的64位结果进行溢出处理,选择溢出模式,得到最后的32位输出结果。
其中,(1)-(3)是第一周期,(4)-(6)为第二周期,(7)-(8)位第三周期。
本发明具有如下优点:
(1)复用性好。在可完成32比特,四组8比特有/无符号乘加运算的基础上,兼具32比特和四组8比特有/无加法运算,以支持现有神经网络4个8比特相乘结果累加运算。
(2)低资源消耗。本发明的电路结构简单,仅使用300个FF实现流水线结构,33*16个解码模块。
(3)低延时,基于华力28nm库实现了1GHz工作频率要求。
(4)支持多种截位方式应用不同实际的场景,支持三种高位、低位和饱和三种截位方式。
(5)结构规整,后端兼容性好,版图利用率可达85%以上。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种面向CGRA的多精度小面积SIMD运算系统,其特征在于,包括编码模块、累加模块和溢出模块;
所述编码模块包括编码单元、选择器Mux和解码选择单元Select;
所述编码单元用于将原始的被乘数X通过Booth编码操作得到S、D和N参数;
所述选择器用于选择不同精度和符号模式中模式的编码模块数据走向;
所述解码单元用于将编码得到的S、D和N参数与乘数Y进行解码操作,得到每行部分的部分积结果;
所述S、D和N参数为被乘数X的编码结果,其中S代表32位单精度格式Single,输出结果为±1;D为64位双精度格式Double,输出结果为±2;N为否定符号Negation,代表操作的符号位;
所述累加模块用于按预设时序进行编码后累加乘法部分积和累加乘法结果;
所述溢出处理模块用于根据预设规则进行低位截位、高位截位和饱和截位。
2.根据权利要求1所述的面向CGRA的多精度小面积SIMD运算系统,其特征在于,编码单元中,X为被乘数,Y为乘数,Single信号的表达式为X2i-1^X2i;Double信号的表达式为~(~(X2i-1&X2i&~Xwi+1)&~(~X2i-1&~X2i&X2i);Negation信号为~X2i+1;
选取基-4的Booth算法,对于编码模块,将被乘数X每3位比特进行一次编码操作,引入参数i代表数据的组数,每组数据表示为X2i+1、X2i、X2i-1,取值范围为0、1、2和3,共四个整数,当i=0时,X-1=0。
3.根据权利要求1所述的面向CGRA的多精度小面积SIMD运算系统,其特征在于,所述选择器为2to 1选择器。
4.根据权利要求1所述的面向CGRA的多精度小面积SIMD运算系统,其特征在于,所述解码单元的输入信号为S、D、N和乘数Y组合而成,采用32位Booth乘法运算复用4个8位Booth乘法运算,在8位Booth运算中,在边界编码单元处设有选择器选择是否进行32位运算。
5.根据权利要求1所述的面向CGRA的多精度小面积SIMD运算系统,其特征在于,编码模块产生部分积的过程为:
基于选择器选择的数据走向后,对数据进行分组,然后将编码结果S、D和N参数与乘数Y放入解码模块中,得到部分积PP,引入参数j代表部分积PP的每位数据,其中j取值为0~7的整数;
部分积PP与编码结果和乘数Y的关系表达式为:PPj=~(~(Yj&D)&~(Yj-1&S)^N,其中,PP0=~(S&Y0)^N。
6.根据权利要求1所述的面向CGRA的多精度小面积SIMD运算系统,其特征在于,将由编码模块产生的部分积分割成8个部分,其中,Part1、2、5和6都是单个用于产生8比特乘法结果的累加单元,Part3和7以及Part4和8是为了满足流水线而进行的切割分块;
对于低32位的输出结果,首先由Part1、2和3产生对应的17位和23位累加结果,并和Part4累加在一起产生36比特的输出结果,最后根据控制信号决定模式:
若为8比特乘法模式,则将Part1和2各16位的结果进行拼接,产生32位的结果;
若为32比特乘法模式,则以产生的36比特输出结果中的低32位为32比特乘法器的低32位结果,剩下的高4位为进位,用作高32比特输出结果的加数;
对于高32位的输出结果,由Part5、6和7产生的对应的17位和26位累加结果,并和Part8以及来自低32位输出结果的4位数进行累加,产生32位的累加结果,最后根据控制信号决定模式:
若为8比特乘法模式,则将Part3和4各16位的结果进行拼接,产生32位的结果;
若为32比特乘法模式,则以产生的32比特输出结果为32比特乘法器的高32位结果;
将低32位输出结果和高32位输出结果各自产生的32位数直接拼接,产生的64位结果即为32比特乘法器的输出结果。
7.根据权利要求1所述的面向CGRA的多精度小面积SIMD运算系统,其特征在于,所述低位截位:对于32位操作为保留低32位,对于8位操作为保留低8位;
所述高位截位:对于32位操作为保留高32位,对于8位操作为保留高8位;
所述饱和截位:对于32位运算和8位运算分为有无符号、正数负数饱和截位,无符号溢出只需判断高位按位或是否为1,若为1,则溢出;有符号正溢出判断高位按位或是否为1,若为1,则溢出;有符号负溢出判断高位按位与是否为0,若为0,则溢出。
8.一种面向CGRA的多精度小面积SIMD运算方法,其特征在于,采用权利要求1-7中任一项所述的面向CGRA的多精度小面积SIMD运算系统,包括如下步骤:
步骤1:在一组输入数据和模式选择数据输入后,通过16个编码器工作产生当前这组数据Select所需的信号S、D和N;
步骤2:所有对应输出低32位的编码单元开始工作,输入量为S、D和N以及本组的被乘数输入数据,解码选择的结果放入累加单元中进行累加,最终输出结果为36位数据,其中高4位数据用作下一个周期的加法,低32位为32比特乘法器对应的低32比特数据;
步骤3:将输入数据中的乘数B、所有控制信号、步骤1中得到的信号S/D/N、步骤2中得到的36比特数据和加数C放入寄存器中缓存,结束第一个时间周期;
步骤4:将缓存的S/D/N和乘数B用作为高32位编码单元的输入数据,得到对应的结果;
步骤5:将缓存的S/D/N、乘数B和36比特数据的高4比特数据放入累加单元中进行累加,最终得到高32比特数据;
步骤6:将步骤3中所有控制信号、加数C、36比特数据中的低32比特数据、步骤5中得到的高32比特数据放入寄存器缓存,结束第二个时间周期;
步骤7:将步骤6中缓存的低32比特数据和高32比特数据进行拼接,得到32位乘法器的64比特输出数据,根据步骤6中缓存的控制信号进行加数C的累加,得到64位结果;
步骤8:根据步骤6中缓存的控制信号对步骤7中得到的64位结果进行溢出处理,选择溢出模式,得到最后的32位输出结果。
9.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序被处理器执行时实现权利要求8所述的面向CGRA的多精度小面积SIMD运算方法的步骤。
10.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求8所述的面向CGRA的多精度小面积SIMD运算方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211411460.4A CN115904507A (zh) | 2022-11-11 | 2022-11-11 | 面向cgra的多精度小面积simd运算系统、方法、介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211411460.4A CN115904507A (zh) | 2022-11-11 | 2022-11-11 | 面向cgra的多精度小面积simd运算系统、方法、介质及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115904507A true CN115904507A (zh) | 2023-04-04 |
Family
ID=86477108
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211411460.4A Pending CN115904507A (zh) | 2022-11-11 | 2022-11-11 | 面向cgra的多精度小面积simd运算系统、方法、介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115904507A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118278477A (zh) * | 2024-03-29 | 2024-07-02 | 上海交通大学 | 面向混合精度神经网络的存内计算单元设计方法和系统 |
-
2022
- 2022-11-11 CN CN202211411460.4A patent/CN115904507A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118278477A (zh) * | 2024-03-29 | 2024-07-02 | 上海交通大学 | 面向混合精度神经网络的存内计算单元设计方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107451658B (zh) | 浮点运算定点化方法及系统 | |
CN106951211A (zh) | 一种可重构定浮点通用乘法器 | |
CN112540743B (zh) | 面向可重构处理器的有无符号乘累加器及方法 | |
CN105045560A (zh) | 一种定点乘加运算方法和装置 | |
CN117111881B (zh) | 支持多输入多格式的混合精度乘加运算器 | |
Meher | Seamless pipelining of DSP circuits | |
CN115904507A (zh) | 面向cgra的多精度小面积simd运算系统、方法、介质及设备 | |
CN114860193A (zh) | 一种用于计算Power函数的硬件运算电路及数据处理方法 | |
Sharma et al. | Modified booth multiplier using wallace structure and efficient carry select adder | |
Chavan et al. | High speed 32-bit vedic multiplier for DSP applications | |
Gowreesrinivas et al. | Comparative study on performance of single precision floating point multiplier using vedic multiplier and different types of adders | |
Daud et al. | Hybrid modified booth encoded algorithm-carry save adder fast multiplier | |
Babulu et al. | FPGA Realization of Radix-4 Booth Multiplication Algorithm for High-Speed Arithmetic Logics | |
Zhang et al. | A multiple-precision multiply and accumulation design with multiply-add merged strategy for AI accelerating | |
Pawar et al. | Review on multiply-accumulate unit | |
Savadi et al. | A survey on design of digital signal processor | |
Ravi et al. | Design of low-power multiplier using ucsla technique | |
Hsiao et al. | Design of a low-cost floating-point programmable vertex processor for mobile graphics applications based on hybrid number system | |
CN115857873B (zh) | 乘法器、乘法计算方法、处理系统及存储介质 | |
Ramya et al. | Implementation of High Speed FFT using Reversible Logic Gates for Wireless DSP Applications | |
CN118278477B (zh) | 面向混合精度神经网络的存内计算单元设计方法和系统 | |
JP2765516B2 (ja) | 積和演算器 | |
Patil et al. | High speed-low power radix-8 booth decoded multiplier | |
WO2024212952A1 (zh) | 计算装置及方法、电子设备和存储介质 | |
Rathore et al. | Implementation and Design of Xilinx based Booth multiplier |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |