CN110187865B - 全流水高吞吐率累加器及其数据处理方法 - Google Patents
全流水高吞吐率累加器及其数据处理方法 Download PDFInfo
- Publication number
- CN110187865B CN110187865B CN201910397285.XA CN201910397285A CN110187865B CN 110187865 B CN110187865 B CN 110187865B CN 201910397285 A CN201910397285 A CN 201910397285A CN 110187865 B CN110187865 B CN 110187865B
- Authority
- CN
- China
- Prior art keywords
- data
- input
- output
- delay
- delay module
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/46—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using electromechanical counter-type accumulators
- G06F7/462—Multiplying; dividing
- G06F7/463—Multiplying; dividing by successive additions or subtractions
-
- 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
Abstract
一种全流水高吞吐率累加器及其数据处理方法,累加器包括:加法器单元,包含n级流水线,具有两个数据输入端口A和B,用于对数据输入端口A和B的输入数据进行加法运算;输入延时模块,用于接收并缓存输入的原始数据;输出延时模块,用于缓存加法器单元输出的中间结果;第一输入选择网络,用于选择数据输入端口A的数据来源,该端口A的数据来源为输入延时模块、加法器单元及输出延时模块的输出数据之一;以及第二输入选择网络,用于选择数据输入端口B的数据来源,该端口B的数据来源为输入延时模块及输出延时模块的输出数据之一。实现数据处理的全流水化、高吞吐率和实时处理,解决了现有累加器吞吐率低、流水线阻塞以及需要大量缓存的问题。
Description
技术领域
本公开属于集成电路技术及高性能计算技术领域,涉及一种全流水高吞吐率累加器及其数据处理方法。
背景技术
累加器在多媒体、数字信号处理以及神经网络等领域都具有应用,它是一种极其重要的算子,例如在点乘、矩阵乘法和FIR等应用中都有累加运算。累加运算通常位于系统的关键路径上,它对整体电路的性能影响非常大,例如累加运算需要大量的缓存或占用大量的面积,都会造成系统性能的下降。浮点累加器的问题尤为明显。由于浮点加法计算复杂,延时较大,通常需要采用多级流水线来提高浮点加法器的运行频率。然而增加流水线深度有可能出现流水线阻塞,造成性能下降。若设计不合理,还会使用大量的缓存,严重影响系统的性能。因此,累加器的设计研究对于实现高性能计算具有重要的意义。
累加器通过将加法器的输出反馈到输入端来实现。加法器可以通过增加流水线的方式提高吞吐,但是现有技术中,使用多级流水线结构的加法器来实现累加器时,直接将多级流水线的加法器的输出反馈到输入端来实现累加,累加器的吞吐无法通过增加流水线级数的方式提高。
传统累加器是通过将加法器的输出反馈到输入端,配合缓存和选择器来实现。但是传统的累加器容易出现缓存面积大、流水线阻塞等问题。有人提出了一种流水累加结构,虽然提高了流水性能,但该结构需要大量的缓存,缓存数量正比于流水延迟量的平方;有的分级流水线方法对于缓存的需求较小,但是在中小规模矩阵累加时会出现流水线阻塞。因此,亟需提出一种累加器,以解决传统累加器存在的吞吐率低、流水线阻塞和需要大量缓存等问题。
发明内容
(一)要解决的技术问题
本公开提供了一种全流水高吞吐率累加器及其数据处理方法,以至少部分解决以上所提出的技术问题。
(二)技术方案
根据本公开的一个方面,提供了一种全流水高吞吐率累加器1,包括:加法器单元110,包含n级流水线,具有两个数据输入端口A和B,用于对数据输入端口A和B的输入数据进行加法运算;输入延时模块120,用于接收并缓存输入的原始数据;输出延时模块130,用于缓存加法器单元110输出的中间结果;第一输入选择网络140,用于选择加法器单元110的数据输入端口A的数据来源,该数据输入端口A的数据来源为输入延时模块120、加法器单元110及输出延时模块130的输出数据之一;以及第二输入选择网络150,用于选择加法器单元110的数据输入端口B的数据来源,该数据输入端口B的数据来源为输入延时模块120及输出延时模块130的输出数据之一。
在本公开的一些实施例中,输入延时模块120将原始数据切成多个数据段,当原始数据的总个数等于n的整数倍时,该数据段的个数等于原始数据的总个数除以n得到的值;当原始数据的总个数不等于n的整数倍时,该数据段的个数等于原始数据的总个数除以n得到的值加1,存在某个数据段中有部分数据位被有效数据占据,有部分数据位为空闲位,通过第一输入选择网络140和/或第二输入选择网络150的选择,将该占据部分数据位的有效数据与前一个数据段的累加中间结果进行相加,对于空闲位用于后续原始数据的缓存。
在本公开的一些实施例中,原始数据在输入过程中,通过使用流水线前馈技术,不需要检测前面数据集的结果是否输出,直接在上一个数据集的数据输入完后,紧接着输入下一个数据集的数据。
在本公开的一些实施例中,输入延时模块120对原始数据进行一设定延时周期的缓存,该设定延时周期包括:第一延时和第二延时,第一延时为短暂延时,最大延时周期为2;第二延时为延时周期大于2的延时。
在本公开的一些实施例中,设定延时周期为零,原始数据连接输入延时模块120的输入端,在控制信号指令判定有效后直接从输入延时模块120输出。
在本公开的一些实施例中,输出延时模块130对中间结果进行第二设定延时周期的缓存,该第二设定延时周期包括:第三延时和第四延时,第三延时为短暂延时,最大延时周期为2;第四延时为延时周期大于2的延时。
在本公开的一些实施例中,输入延时模块120和输出延时模块130均包括:寄存器和选择器。
在本公开的一些实施例中,第一输入选择网络140和第二输入选择网络150均包括多个选择器,其中多个选择器中的部分选择器的输出作为另一选择器的输入,该另一选择器的输出作为第一输入选择网络140和第二输入选择网络150的输出。
根据本公开的另一个方面,提供了一种基于本公开的全流水高吞吐率累加器的数据处理方法,该数据处理方法包括:步骤S21:原始数据输入;步骤S22:输入延时模块120,接收并缓存原始数据;步骤S23:第一输入选择网络140和第二输入选择网络150选择数据分别输入到加法器单元110的数据输入端口A和B中;其中数据输入端口A的数据来源为输入延时模块120、加法器单元110及输出延时模块130的输出数据之一;数据端口B的数据来源为输入延时模块120及输出延时模块130的输出数据之一;步骤S24:加法器单元110对数据输入端口A和B的输入数据进行加法运算;步骤S25:输出延时模块130缓存加法器单元110输出的中间结果;步骤S26:进行内部循环操作,循环步骤S23-步骤S25,完成一组数据段的累加操作;以及步骤S27:整体循环步骤:循环步骤S21-步骤S26,完成所有原始数据的累加操作。
在本公开的一些实施例中,步骤S23中,选择的该数据包括:原始数据、延时后的原始数据、中间结果和延时后的中间结果。
(三)有益效果
从上述技术方案可以看出,本公开提供的全流水高吞吐率累加器及其数据处理方法,具有以下有益效果:
1、依次在数据传输路径上设置输入延时模块、两个输入选择网络、具有n级流水线的加法器单元以及输出延时模块,利用输入延时模块缓存原始数据,利用输出延时模块缓存加法器单元输出的中间结果,利用两个输入选择网络选择原始数据、延时后的原始数据、中间结果或者延时后的中间结果输入至加法器单元的两个端口中进行对应的加法运算,通过使用流水线前馈技术,不需要检测前面数据集的结果是否输出,直接在上一个数据集的数据输入完后,紧接着输入下一个数据集的数据,当原始数据的总数不是n的整数倍时,利用两个输入选择网络对于参与运算的数据的选择,使得每一段数据段的有效数据位与前一段数据段进行累加,空闲位进行后续数据的缓存,不存在空闲位和流水阻塞,实现数据的全流水的操作,仅使用少量的资源,可有效提高加法器的利用率,同时使累加器的吞吐率提高n倍,可实现数据的实时处理,解决了现有累加器吞吐率低及流水线阻塞的问题;
2、该累加器仅使用一个加法器单元和少量的选择器、寄存器实现,不需要大量的缓存,这大大减少了资源的消耗。
附图说明
图1为根据本公开一实施例所示的全流水高吞吐率累加器的结构示意图,其中虚线框中的部分为累加器的数据通路。
图2为图1中输入延时模块的一个实施例的门级电路结构图。
图3是图1中输出延时模块的一个实施例的门级电路结构图。
图4是图1中第一输入选择网络的一个实施例的门级电路结构图。
图5是图1中第二输入选择网络的一个实施例的门级电路结构图。
图6为利用全流水高吞吐率累加器进行数据处理的一个示例过程。
图7为利用全流水高吞吐率累加器进行数据处理的另一个示例过程。
【符号说明】
1-累加器;
110-加法器单元;
120-输入延时模块;
210-第一寄存器; 220-第一选择器;
211-第二寄存器; 221-第二选择器;
212-第三寄存器; 222-第三选择器;
130-输出延时模块;
310-第四寄存器; 311-第五寄存器;
312-第六寄存器; 320-第四选择器;
140-第一输入选择网络;
410-第五选择器; 411-第六选择器;
412-第七选择器; 413-第八选择器;
150-第二输入选择网络;
510-第九选择器; 511-第十选择器;
512-第十一选择器;
CLK:时钟信号;
reset:复位信号;
reset_1:复位信号1,用于复位(清零)第三寄存器212,第三寄存器212与第三MUX222组成的电路可将数据存放多个周期,当数据使用完后,使用reset_1将寄存器212中的数据清零;
reset_2:复位信号2,用于复位第六寄存器312,第六寄存器312与第四MUX 320组成的电路可将数据存放多个周期,当数据使用完后,使用reset_2将第六寄存器312中的数据清零;
data_in:输入数据;
data_d0:有效的输入数据;当CTRL_0=0时,data_dO=data_in,此时的data_in为有效的数据;当CTRL_0=1时,data_d0=0,data_in无法进入电路,意味着此时的data_in为无效的数据;
data_d1:延时1个时钟周期的有效输入数据;
data_d2:延时2个时钟周期的有效输入数据;
A_a:加法器单元的输入端口a;
A_b:加法器单元的输入端口b;
A_y:加法器单元的输出端口,也是整个模块的数据输出端口;
CTRL_MUX:用于控制加法器输入端口A_a、A_b的输入数据;
CTRL_0-CTRL_8:控制信号0-控制信号8;
inter_2:模块的中间信号2;
inter_6:模块的中间信号6;
inter_8:模块的中间信号8;
inter_11:模块的中间信号11。
具体实施方式
现有的累加器容易出现缓存面积大、流水线阻塞等问题,例如,当前有2组数据,分别为A={a1,a2,a3,a4,a5}、B={b1,b2,b3,b4,b5,b6},需要进行的计算为:A_result=a1+a2+a3+a4+a5,B_result=b1+b2+b3+b4+b5+b6;依据现有累加器的算法和结构,进行数据输入和处理的过程如下:数据输入的顺序依次为:a1、a2、a3、a4、a5、b1、b2、b3、b4、b5和b6,即在第1个时刻输入数据a1,第2个时刻输入数据a2,……,第11个时刻输入数据b6,直至依次输入全部数据。当a5输入后,若下一个时刻输入数据b1,那么累加器中同时存在2组数据集中的数据,在只有一个加法器的情况下,这会造成数据的混乱,因此现有技术中通常的做法是等待A_result输出,当检测到A_result输出时,然后再将b1输入至累加器中,上述数据输入的等待时间和数据缓存引起了数据吞吐率低、流水线阻塞以及需要大量缓存的问题。
基于上述分析,本申请提出一种全流水高吞吐率累加器及其数据处理方法,仅使用少量的资源,可有效提高加法器的利用率,大大提高了累加器的吞吐率,实现了数据处理的全流水化、高吞吐率和实时处理,解决了现有累加器吞吐率低、流水线阻塞以及需要大量缓存的问题。
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
第一实施例
在本公开的第一个示例性实施例中,提供了一种全流水高吞吐率累加器。
图1为根据本公开一实施例所示的全流水高吞吐率累加器的结构示意图,其中虚线框中的部分为累加器的数据通路。
参照图1所示,本公开的全流水高吞吐率累加器1,包括:
加法器单元110,包含n级流水线,具有两个数据输入端口A和B,用于对数据输入端口A和B的输入数据进行加法运算;
输入延时模块120,用于接收并缓存原始数据;
输出延时模块130,用于缓存加法器单元110输出的中间结果;
第一输入选择网络140,用于选择加法器单元110的数据输入端口A的数据来源,该数据输入端口A的数据来源为输入延时模块120、加法器单元110及输出延时模块130的输出数据之一;
第二输入选择网络150,用于选择加法器单元110的数据输入端口B的数据来源,该数据输入端口B的数据来源为输入延时模块120及输出延时模块130的输出数据之一。
下面结合附图来对本实施例中的全流水高吞吐率累加器的各个部分进行详细介绍。
图2为图1中输入延时模块的一个实施例的门级电路结构图。
本公开的输入延时模块120,用于接收原始数据并对原始数据进行设定延时周期的缓存,该设定延时周期包括:第一延时和第二延时,第一延时为短暂延时,最大延时周期为2;第二延时为延时周期大于2的延时。特殊的,该设定延时周期为零,表示原始数据连接输入延时模块120的输入端,在控制信号指令判定有效后直接输出。
输入延时模块120将原始数据切成多个数据段,当原始数据的总个数等于n的整数倍时,该数据段的个数等于原始数据的总个数除以n得到的值;当原始数据的总个数不等于n的整数倍时,该数据段的个数等于原始数据的总个数除以n得到的值加1,存在某个数据段中有部分数据位被有效数据占据,有部分数据位为空闲位,通过第一输入选择网络140或第二输入选择网络150的选择,可将该占据部分数据位的有效数据与前一个数据段的累加中间结果进行相加,对于空闲位用于后续原始数据的缓存。
参照图2所示,本实施例中,输入延时模块120,包括多个寄存器和选择器的组合,以三组寄存器和选择器的组合进行示例,分别为:第一寄存器210、第二寄存器211、第三寄存器212、第一选择器220、第二选择器221和第三选择器222;其中,第一寄存器210和第二寄存器211用于提供短暂的延时,最大延时周期为2;第三寄存器212与第三选择器222用于提供延时周期大于2的延时;第一选择器220用于控制原始信号的输入,第二选择器221用于选择进行多周期延时的数据。
参照图2所示,第一选择器220用于控制原始信号的输入,作为示例,第一选择器220为二选一多路选择器,其中一个数据输入端口0连接输入数据data_in,另一个数据输入端口1接地,在控制信号CTRL_0的控制下第一选择器220选择有效的输入数据data_d0进行输出,该data_d0输出后有三条传输路径,第一条路径是直接输出至该输入延时模块120的输出端,第二条路径是输出至第一寄存器210的数据输入端D,第三条路径是输出至第二选择器221的数据输入端口1。
继续参照图2所示,第一寄存器210的数据输出端和第二寄存器211的数据输入端连接,用于提供短暂的延时,最大延时周期为2。第一寄存器210为一带有清零端(复位端)的寄存器,第一寄存器210的数据输入端D输入第一选择器220的输出,数据输出端口Q输出延时1个时钟周期的有效输入数据data_d1,同理,该data_d1可直接输出至该输入延时模块120的输出端或者输出至第二寄存器211的数据输入端再进行1个时钟周期的延时,得到延时2个时钟周期的有效输入数据data_d2进行输出,其中第一寄存器210、第二寄存器211和第三寄存器212共用一个时钟信号,第一寄存器210和第二寄存器211共用一个复位信号reset。
继续参照图2所示,第二选择器221用于选择进行多周期延时的数据,两个输入端口0和1分别输入未延时的数据data_d0和短暂延时后的数据data_d2,在控制信号CTRL_1的控制下进行输出选择。
第三寄存器212与第三选择器222用于提供延时周期大于2的延时。继续参照图2所示,在一电路结构示例中,第三选择器222的一个数据输入端口0输入第三寄存器212的输出inter_2,另外一个数据输入端口1输入第二选择器221的输出,第三选择器221的控制端接控制信号CTRL_2,第三选择器222的输出作为第三寄存器212的数据输入端口D的输入,第三寄存器212的数据输出端口Q输出的数据有两种路径,第一种是inter_2直接输出至输入延时模块120的输出端,第二种是inter_2输出至第三选择器222的数据输入端口0。如此,通过改变控制信号CTRL_2为“0”和“1”(高低电平)的时间,从而使得第三寄存器212实现数据的输入,并通过特定周期的延时而进行输出,例如:开始时控制信号CTRL_2为“1”,第三寄存器212的数据输入端输入第二选择器221的输出,输入数据在第三寄存器212中寄存一个周期进行输出,输出至第三选择器222的输入端口0,此时控制信号CTRL_2变为“0”,对应在第三寄存器212中寄存了一个周期的数据经过第三选择器222的选择再次输入至第三寄存器212中,继续进行延时,此时,为了得到多(大于2个)周期延时的数据,可以控制多个周期内的控制信号CTRL_2保持为“0”,使得经过第三寄存器212延时后的数据再次输入至第三寄存器212进行延时,得到预定的延时周期后进行复位操作。第三寄存器212的清零端口输入的复位信号为复位信号1(reset_1),reset_1是与复位信号reset相互独立的信号。
当然,在其它实施方式中,用于提供延时周期大于2的延时还可以是通过其它的电路结构和延时方式,比如,将第三寄存器212与第三选择器222中的第三选择器222去除,第二选择器221的输出连接第三寄存器212的输入,通过在第三寄存器212的时钟信号路径上加入一选择信号,利用该选择信号控制延时数据在延时几个周期进行输出。
需要说明的是,图2中示例的输入延时模块120的结构仅作为示例,任何能够实现接收并缓存原始数据功能的电路结构均在本公开的保护范围之内。下面的输出延时模块130、第一输入选择网络140和第二输入选择网络150的结构介绍与之类似,实施例仅仅作为示例,其他未列举的能够实现相同功能的电路结构和形式均在本公开的保护范围之内。
图3是图1中输出延时模块的一个实施例的门级电路结构图。
参照图3所示,本实施例中,输出延时模块130包括:第四寄存器310、第五寄存器311、第六寄存器312和第四选择器320;其中,第四寄存器310和第五寄存器311用于提供短暂的延时,最大延时周期为2;第六寄存器312和第四选择器320用于提供延时周期大于2的延时。
本公开的输出延时模块130,用于缓存加法器单元110输出的中间结果,缓存的时间为另一设定延时周期,包括:第三延时和第四延时,第三延时为短暂延时,最大延时周期为2;第四延时为延时周期大于2的延时。
参照图3所示,加法器单元110的输出端口A_y一路与第四寄存器310的数据输入端连接,另一路与第四选择器320的数据输入端口1连接。两个路径对于加法器单元110的输出数据可以进行短暂延时和较长延时周期(大于2个延时周期)的延时。
第四寄存器310和第五寄存器311用于提供短暂的延时,最大延时周期为2。本实施例中,第四寄存器310和第五寄存器311均为带有清零端(复位端)的寄存器,第四寄存器310和第五寄存器311共用一个时钟CLK和共用一个复位信号reset,第四寄存器310输出的数据为中间信号8(inter_8),该inter_8可以直接输出至该输出延时模块130的外部或者作为第五寄存器311的输入再进行延时后输出,第五寄存器311输出的数据为中间信号11(inter_11),上述原理和结构与输入延时模块中的第一寄存器210和第二寄存器211的类似。
第六寄存器312和第四选择器320用于提供延时周期大于2的延时。在一实施例中,该第六寄存器312和第四选择器320的电路结构与输入延时模块120中的第三寄存器212与第三选择器222的结构和原理相同,通过改变第四选择器320的控制信号CTRL_8为“0”和“1”(高低电平)的时间,从而使得第六寄存器312实现数据连接端口A_y中的数据输入并通过特定周期的延时而进行输出,输出数据为中间信号6(inter_6)。
图4是图1中第一输入选择网络的一个实施例的门级电路结构图。
参照图4所示,本实施例中,第一输入选择网络140包括:第五选择器410、第六选择器411、第七选择器412和第八选择器413。其中,第六选择器411、第七选择器412和第八选择器413为2选1多路选择器,各自对应的控制信号分别为:CTRL_3、CTRL_4和CTRL_5,第六选择器411和第七选择器412的一个数据输入端(例如图4中数据输入端口1)均接地,另一个数据输入端(例如图4中的数据输入端口0)分别输入延时2个时钟周期的有效输入数据data_d2、延时1个时钟周期的有效输入数据data_d1。第七选择器412的两个数据输入端口分别输入加法器单元的输出A_y和延时后的中间结果(示例为inter_6)。第五选择器410为4选1多路选择器,第六选择器411、第七选择器412和第八选择器413的输出分别作为第五选择器410的三个输入(对应输入端口分别为0、1、3),另一个输入端口(图4中示例为输入端口2)输入特定延时的数据,例如为inter_11,第五选择器410的输出作为该第一输入选择网络140的输出,与加法器单元的输入端口A(A_a)连接。
在计算过程中,第五选择器410的输入端口按0、1、2、3的顺序依次执行;累加器每进行一次内部循环消耗一个数据段,即4位原始数据,但是当原始数据的总数不是4的整数倍时,例如原始数据的总数为5,原始数据被分为两个数据段,其中第二个数据段只有1位有效数据,为了提高流水线的效率,可将这1位有效数据与前一个数据段的累加器结果进行相加,得到这5位原始数据的累加结果,对于第二个数据段的剩余3位数据,可用于下一原始数据的前3位累加,上述操作需要使用第六选择器411、第七选择器412和第八选择器413实现。
图5是图1中第二输入选择网络的一个实施例的门级电路结构图。
参照图5所示,本实施例中,第二输入选择网络150包括:第九选择器510、第十选择器511和第十一选择器512。第十选择器511和第十一选择器512为2选1多路选择器,其控制信号分别为CTRL_6和CTRL_7,中间结果inter_8和inter_2作为这两个选择器511和512的两个输入,其输出作为第九选择器510的两个输入(图5中示例为输入端口2和3的输入)。第九选择器510为4选1多路选择器,其剩下的两个输入端口(图5中对应为0和1)输入data_d1和data_d0,该第九选择器510的输出作为第二输入选择网络150的输出,与加法器单元的输入端口B(A_b)连接。
在计算过程中,第九选择器510的输入端口按0、1、2、3的顺序依次执行;当原始数据的总数不是4的整数倍时,第十选择器511和第十一选择器512用于提高流水线的效率,具体方式与第一输入选择网络类似,这里不再赘述。
第二实施例
在本公开的第二个示例性实施例中,提供了一种采用上述全流水高吞吐累加器实现数据处理的方法,包括:
步骤S21、原始数据输入步骤:原始数据按顺序依次输入到累加器1中;
上述操作步骤中,通过使用流水线前馈技术,不需要检测前面数据集的结果是否输出,直接在上一个数据集的数据输入之后,紧接着输入下一个数据集的数据。
步骤S22、输入延时模块缓存步骤:输入延时模块120接收并缓存原始数据;
本实施例中,输入延时模块120在接收到原始数据后,通过内部的第一寄存器210、第二寄存器211和第三寄存器212将原始数据缓存,第一寄存器210和第二寄存器211用于短时缓存,存储时钟周期小于等于2,第三寄存器212可提供超过2个时钟周期的缓存;通过第一寄存器210和第二寄存器211,将原始数据切成多个数据段,每段数据为4个,累加器做一次内部循环消耗一个数据段,即4个原始数据;
步骤S23、第一输入选择网络140、第二输入选择网络150选择步骤:第一输入选择网络140和第二输入选择网络150选择数据分别输入到加法器单元110的输入端口A和B中,选择数据包括:原始数据、延时后的原始数据、中间结果和延时后的中间结果。
本实施例中,第一输入选择网络140的第五寄存器410和第二输入选择网络150的第九寄存器510的输入端口按0、1、2、3的顺序依次执行,当执行寄存器410、510的端口0、1时,输入的数据为原始数据,当执行寄存器410、510的端口2、3时,输入的数据为中间结果;
步骤S24、累加步骤:加法器单元110对输入端口A和输入端口B的两个数据进行相加;
步骤S25、输出延时模块缓存步骤:输出延时模块150对加法器单元110输出的中间结果进行缓存;
本实施例中,输出延时模块130将加法器单元110输出的中间结果缓存起来,供第一输入选择网络140和第二输入选择网络150调用;第四寄存器310、第五寄存器311用于提供小于等于2个时钟周期的延时,第六寄存器312可提供大于2个时钟周期的延时。
步骤S26、内部循环步骤:循环步骤S23-步骤S25,完成一组数据段的累加操作;
需要说明的是,该累加器不论是对于数据总数为流水线级数n的整数倍的数据集还是数据总数不是流水线级数n的整数倍的数据集都能够实现全流水操作,累加器做一次内部循环消耗一个数据段,即4个(个数等于流水线级数n,这里为4级)原始数据。在步骤S23-S26中,当原始数据的总数不是4的整数倍时,整数倍的数据直接输入进行缓存,然后被输入选择网络140或150(在控制器的控制指令下)选择进入加法器单元的A和B端口进行加法运算,剩下的其他原始数据依次输入,计算得到的中间结果也可以通过缓存的操作在合适的时机被选择进入加法器单元进行计算,通过第一输入选择网络140或者第二输入选择网络150中选择器的选择,实现对原始数据、延时后的原始数据、中间结果以及延时后的中间结果的选择,实现输入数据无需等待计算出中间结果便可以执行数据输入的操作,从而避免了流水线堵塞和吞吐率低的问题,实现全流水操作。例如原始数据的总数为5,原始数据被分为两个数据段,其中第二个数据段只有1位有效数据,为了提高流水线的效率,可将这1位有效数据与前一个数据段的累加器结果进行相加,得到这5位原始数据的累加结果,对于第二个数据段的剩余3位数据位,可用于下一原始数据的前3位累加,上述操作需要使用第六选择器411、第七选择器412和第八选择器413实现。
步骤S27、整体循环步骤:循环步骤S21-步骤S26,完成所有原始数据的累加操作。
下面以一个具体的实例介绍该全流水高吞吐率累加器及其数据处理方法实现12个数据累加的过程。
图6为利用全流水高吞吐率累加器进行数据处理的一个示例过程。
参照图6所示,输入数据共有12个,分别为:data0、data1、data2、……、datal1,要实现的运算为:result=data0+data1+data2+……+data11。
采用该累加器和数据处理方法进行12个数据累加计算的过程如下:上述数据依次按照data0、data1、data2、……、data11的顺序进行输入,即在第1个时刻输入数据data0,第2个时刻输入数据datal,第3个时刻输入数据data2,……,第12个时刻输入数据data11,直至依次输入全部数据,在数据输入的过程中依次对应数据计算的过程如下:
(1)data0与data1相加(通过输入延时模块120实现两个数据的缓存,并通过输入选择网络140或150的选择实现两个原始数据同时输入至加法器单元110的输入端口A和B实现相加,下面“同上1”的实现方式与之相同),中间结果temp10存入输出延时模块130中;
(2)data2与data3相加(同上1),中间结果temp11存入输出延时模块130中;
(3)data4与data5相加(同上1),中间结果temp12存入输出延时模块130中;
(4)data6与data7相加(同上1),中间结果temp13存入输出延时模块130中;
(5)temp10与temp11相加(通过输出延时模块130实现两个中间结果数据的缓存,并通过输入选择网络140或150的选择实现两个中间结果数据同时输入至加法器单元110的输入端口A和B实现相加,下面“同上5”的实现方式与之相同),结果temp20存入输出延时模块130中;
(6)data8与data9相加(同上1),中间结果temp14存入输出延时模块130中;
(7)data10与data11相加(同上1),中间结果temp15存入输出延时模块130中;
(8)temp12与temp13相加(同上5),中间结果temp21存入输出延时模块130中;
(9)数值0与temp20相加,结果temp30存入输出延时模块130中;
(10)temp14与temp15相加(同上5),中间结果temp22存入输出延时模块130中;
(11)temp30与temp21相加(同上5),中间结果temp40存入输出延时模块130中;
(12)temp40与temp22相加(同上5),得到累加结果result。
图7为利用全流水高吞吐率累加器进行数据处理的另一个示例过程。为了更进一步详细说明全流水高吞吐累加器实现流水线无阻塞的方法,图7给出了5个数据累加,后面紧跟7个数据累加的示意图,参照图7所示,上述数据依次按照data0、data1、data2、……、data11的顺序进行输入,即在第1个时刻输入数据data0,第2个时刻输入数据data1,第3个时刻输入数据data2,……,第12个时刻输入数据data11,直至依次输入全部数据,12个数据在输入过程中进行计算的顺序如下:
(1)data0与data1相加,中间结果temp10存入输出延时模块130中;
(2)data2与data3相加,中间结果temp11存入输出延时模块130中;
(3)数值0与data5相加,中间结果temp12存入输出延时模块130中;
(4)data6与data7相加,中间结果temp13存入输出延时模块130中;
(5)temp10与temp11相加,中间结果temp20存入输出延时模块130中;
(6)data8与data9相加,中间结果temp14存入输出延时模块130中;
(7)data10与data11相加,中间结果temp15存入输出延时模块130中;
(8)temp12与temp13相加,中间结果temp21存入输出延时模块130中;
(9)数值0与temp20相加,中间结果temp30存入输出延时模块130中;
(10)temp14与temp15相加,中间结果temp22存入输出延时模块130中;
(11)temp30与data4相加,得到前5个数据的累加结果result0;
(12)temp21与temp22相加,得到后7个数据的累加结果result1。
图6和图7的实施例中计算步骤是一样的,不同点在于相加的数据,这是通过寄存器411、412、413、511、512实现。图7的数据输入顺序与图6一样,图7的两组累加数据之间无需间隔、不用暂停流水线,因此本公开提供的全流水高吞吐累加器可以解决流水线阻塞的问题。
综上所述,本公开提供了一种全流水高吞吐率累加器及其数据处理方法,依次在数据传输路径上设置输入延时模块、两个输入选择网络、具有n级流水线的加法器单元以及输出延时模块,利用输入延时模块缓存原始数据,利用输出延时模块缓存加法器单元输出的中间结果,利用两个输入选择网络选择原始数据、延时后的原始数据、中间结果或者延时后的中间结果输入至加法器单元的两个端口中进行对应的加法运算,通过使用流水线前馈技术,不需要检测前面数据集的结果是否输出,直接在上一个数据集的数据输入完后,紧接着输入下一个数据集的数据,当原始数据的总数不是n的整数倍时,利用两个输入选择网络对于参与运算的数据的选择,使得每一段数据段的有效数据位与前一段数据段进行累加,空闲位进行后续数据的缓存,不存在空闲位和流水阻塞,实现数据的全流水的操作,仅使用少量的资源,可有效提高加法器的利用率,同时使累加器的吞吐率提高n倍,可实现数据的实时处理,解决了现有累加器吞吐率低及流水线阻塞的问题;该累加器仅使用一个加法器单元和少量的选择器、寄存器实现,不需要大量的缓存,这大大减少了资源的消耗。
需要说明的是,说明书与权利要求中所使用的序数例如“第一”、“第二”、“第三”等的用词,以修饰相应的元件,其本身并不意味着该元件有任何的序数,也不代表某一元件与另一元件的顺序、或是制造方法上的顺序,该些序数的使用仅用来使具有某命名的一元件得以和另一具有相同命名的元件能做出清楚区分。
再者,单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。
此外,除非特别描述或必须依序发生的步骤,上述步骤的顺序并无限制于以上所列,且可根据所需设计而变化或重新安排。并且上述实施例可基于设计及可靠度的考虑,彼此混合搭配使用或与其他实施例混合搭配使用,即不同实施例中的技术特征可以自由组合形成更多的实施例。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (9)
1.一种全流水高吞吐率累加器(1),包括:
加法器单元(110),包含n级流水线,具有两个数据输入端口A和B,用于对数据输入端口A和B的输入数据进行加法运算;
输入延时模块(120),用于接收并缓存输入的原始数据;
输出延时模块(130),用于缓存加法器单元(110)输出的中间结果;
第一输入选择网络(140),用于选择加法器单元(110)的数据输入端口A的数据来源,该数据输入端口A的数据来源为输入延时模块(120)、加法器单元(110)及输出延时模块(130)的输出数据之一;以及
第二输入选择网络(150),用于选择加法器单元(110)的数据输入端口B的数据来源,该数据输入端口B的数据来源为输入延时模块(120)及输出延时模块(130)的输出数据之一,
所述输入延时模块(120)将原始数据切成多个数据段,当原始数据的总个数等于n的整数倍时,该数据段的个数等于原始数据的总个数除以n得到的值;当原始数据的总个数不等于n的整数倍时,该数据段的个数等于原始数据的总个数除以n得到的值加1,存在某个数据段中有部分数据位被有效数据占据,有部分数据位为空闲位,通过第一输入选择网络(140)和/或第二输入选择网络(150)的选择,将该占据部分数据位的有效数据与前一个数据段的累加中间结果进行相加,对于空闲位用于后续原始数据的缓存。
2.根据权利要求1所述的全流水高吞吐率累加器,其特征在于,原始数据在输入过程中,通过使用流水线前馈技术,不需要检测前面数据集的结果是否输出,直接在上一个数据集的数据输入完后,紧接着输入下一个数据集的数据。
3.根据权利要求1所述的全流水高吞吐率累加器,其特征在于,所述输入延时模块(120)对原始数据进行一设定延时周期的缓存,该设定延时周期包括:第一延时和第二延时,第一延时为短暂延时,最大延时周期为2;第二延时为延时周期大于2的延时。
4.根据权利要求3所述的全流水高吞吐率累加器,其特征在于,所述设定延时周期为零,原始数据连接输入延时模块(120)的输入端,在控制信号指令判定有效后直接从输入延时模块(120)输出。
5.根据权利要求1所述的全流水高吞吐率累加器,其特征在于,所述输出延时模块(130)对中间结果进行第二设定延时周期的缓存,该第二设定延时周期包括:第三延时和第四延时,第三延时为短暂延时,最大延时周期为2;第四延时为延时周期大于2的延时。
6.根据权利要求1所述的全流水高吞吐率累加器,其特征在于,所述输入延时模块(120)和输出延时模块(130)均包括:寄存器和选择器。
7.根据权利要求1所述的全流水高吞吐率累加器,其特征在于,所述第一输入选择网络(140)和第二输入选择网络(150)均包括多个选择器,其中多个选择器中的部分选择器的输出作为另一选择器的输入,该另一选择器的输出作为第一输入选择网络(140)和第二输入选择网络(150)的输出。
8.一种基于权利要求1至7中任一项所述的全流水高吞吐率累加器的数据处理方法,其特征在于,包括:
步骤S21:原始数据输入;
步骤S22:输入延时模块(120),接收并缓存原始数据;
步骤S23:第一输入选择网络140和第二输入选择网络150选择数据分别输入到加法器单元(110)的数据输入端口A和B中;其中数据输入端口A的数据来源为输入延时模块(120)、加法器单元(110)及输出延时模块(130)的输出数据之一;数据端口B的数据来源为输入延时模块(120)及输出延时模块(130)的输出数据之一;
步骤S24:加法器单元(110)对数据输入端口A和B的输入数据进行加法运算;
步骤S25:输出延时模块(130)缓存加法器单元(110)输出的中间结果;
步骤S26:进行内部循环操作,循环步骤S23-步骤S25,完成一组数据段的累加操作;以及
步骤S27:整体循环步骤:循环步骤S21-步骤S26,完成所有原始数据的累加操作。
9.根据权利要求8所述的数据处理方法,其特征在于,其中步骤S23中,选择的该数据包括:原始数据、延时后的原始数据、中间结果和延时后的中间结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910397285.XA CN110187865B (zh) | 2019-05-15 | 2019-05-15 | 全流水高吞吐率累加器及其数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910397285.XA CN110187865B (zh) | 2019-05-15 | 2019-05-15 | 全流水高吞吐率累加器及其数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110187865A CN110187865A (zh) | 2019-08-30 |
CN110187865B true CN110187865B (zh) | 2023-06-30 |
Family
ID=67716126
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910397285.XA Active CN110187865B (zh) | 2019-05-15 | 2019-05-15 | 全流水高吞吐率累加器及其数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110187865B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124358B (zh) * | 2019-12-06 | 2023-01-06 | 苏州浪潮智能科技有限公司 | 一种序列累加器的运算方法和设备 |
CN112434483A (zh) * | 2020-12-18 | 2021-03-02 | 国微集团(深圳)有限公司 | 数据传输系统的生成方法和数据传输系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101859241A (zh) * | 2010-05-22 | 2010-10-13 | 中国人民解放军国防科学技术大学 | 基于全展开的全流水128位精度浮点累加器 |
CN103677739A (zh) * | 2013-11-28 | 2014-03-26 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种可配置的乘累加运算单元及其构成的乘累加运算阵列 |
CN105468335A (zh) * | 2015-11-24 | 2016-04-06 | 中国科学院计算技术研究所 | 流水级运算装置、数据处理方法及片上网络芯片 |
US9519460B1 (en) * | 2014-09-25 | 2016-12-13 | Cadence Design Systems, Inc. | Universal single instruction multiple data multiplier and wide accumulator unit |
-
2019
- 2019-05-15 CN CN201910397285.XA patent/CN110187865B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101859241A (zh) * | 2010-05-22 | 2010-10-13 | 中国人民解放军国防科学技术大学 | 基于全展开的全流水128位精度浮点累加器 |
CN103677739A (zh) * | 2013-11-28 | 2014-03-26 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种可配置的乘累加运算单元及其构成的乘累加运算阵列 |
US9519460B1 (en) * | 2014-09-25 | 2016-12-13 | Cadence Design Systems, Inc. | Universal single instruction multiple data multiplier and wide accumulator unit |
CN105468335A (zh) * | 2015-11-24 | 2016-04-06 | 中国科学院计算技术研究所 | 流水级运算装置、数据处理方法及片上网络芯片 |
Non-Patent Citations (1)
Title |
---|
一种低延迟高吞吐率的浮点整型乘累加单元;沈俊等;《计算机工程》;20130615(第06期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110187865A (zh) | 2019-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107590085B (zh) | 一种具有多级缓存的动态可重构阵列数据通路及其控制方法 | |
CN110187865B (zh) | 全流水高吞吐率累加器及其数据处理方法 | |
Saitoh et al. | A high-performance and cost-effective hardware merge sorter without feedback datapath | |
CN113064852B (zh) | 一种可重构处理器及配置方法 | |
CN111984058B (zh) | 基于超导sfq电路的微处理器系统及其运算装置 | |
CN102567279A (zh) | 一种动态可重构阵列时序配置信息的生成方法 | |
CN103761072A (zh) | 一种粗粒度可重构层次化的阵列寄存器文件结构 | |
US6993641B2 (en) | Stall control | |
CN109687877A (zh) | 一种降低多级循环移位网络级联级数的方法及装置 | |
CN1930549A (zh) | 电子电路 | |
CN107092462B (zh) | 一种基于fpga的64位异步乘法器 | |
CN109933372B (zh) | 一种多模式动态可切换架构低功耗处理器 | |
CN106708467B (zh) | 一种宽位累加器电路及其设计方法、可编程逻辑器件 | |
US7849299B2 (en) | Microprocessor system for simultaneously accessing multiple branch history table entries using a single port | |
US8819398B2 (en) | Variable length stages in a pipeline | |
CN111221496B (zh) | 一种使用fpga实现浮点数据累加的方法 | |
US8700869B1 (en) | Multithreading implementation for flops and register files | |
US7047392B2 (en) | Data processing apparatus and method for controlling staged multi-pipeline processing | |
CN107688471B (zh) | 一种动态调整数据流架构的资源带宽的计算系统及其方法 | |
KR100861073B1 (ko) | 적응형 파이프라인을 적용한 병렬 처리 프로세서 구조 | |
GB2365583A (en) | Pipeline decoupling buffer for handling early data and late data | |
US20090177870A1 (en) | Method and System for a Wiring-Efficient Permute Unit | |
CN103716011B (zh) | 有限冲击响应csd滤波器 | |
CN1259620C (zh) | 带有快速位提取和位插入单元的数字信号处理器 | |
US20030097541A1 (en) | Latency tolerant processing equipment |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |