CN108595369B - 算式并行计算装置及方法 - Google Patents
算式并行计算装置及方法 Download PDFInfo
- Publication number
- CN108595369B CN108595369B CN201810399675.6A CN201810399675A CN108595369B CN 108595369 B CN108595369 B CN 108595369B CN 201810399675 A CN201810399675 A CN 201810399675A CN 108595369 B CN108595369 B CN 108595369B
- Authority
- CN
- China
- Prior art keywords
- data
- formula
- result
- summation
- coprocessor
- 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
- 238000000034 method Methods 0.000 title claims abstract description 23
- 238000004364 calculation method Methods 0.000 claims abstract description 47
- 230000014509 gene expression Effects 0.000 claims description 11
- 238000012163 sequencing technique Methods 0.000 claims description 4
- 230000000694 effects Effects 0.000 abstract description 2
- 239000011159 matrix material Substances 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000013528 artificial neural network Methods 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/17—Interprocessor communication using an input/output type connection, e.g. channel, I/O port
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供了一种算式并行计算装置及方法,所述装置中的主处理器通过多条AXI总线与协处理器连接;主处理器用于确定待处理算式中的运算数据及算式附加信息,运算数据包括:相乘子算式、待与乘积结果进行求和运算的第三数据和待与求和结果进行乘法运算的尾数数据,相乘子算式包括第一数据和第二数据,将运算数据及算式附加信息通过多条AXI总线并行发送给协处理器;协处理器用于对从多条AXI总线接收的第一数据和第二数据分别同时进行乘法运算,基于算式附加信息对同一个待处理算式所对应的乘积结果、第三数据和尾数数据进行计算,得到计算结果,达到实现多路运算数据的并行处理,实现多任务分时并行处理,提高并行计算的效率的技术效果。
Description
技术领域
本发明涉及芯片设计技术领域,尤其是涉及一种算式并行计算装置及方法。
背景技术
在神经网络、人工智能、大数据处理、雷达信号处理等领域,如何快速高效的进行数据运算成为工程师们技术突破的方向,自传统的CPU、FPGA等通用处理器至ASIC、GPU等专用处理器;自传统的冯诺依曼结构到流水线结构,重流水线结构至并行计算结构;数据处理的速度与运算要求的矛盾一直没有有效的解决,因此如何应用现有技术特点,结合数据处理应用场景,高效率的、低能耗的实现数据运算成为技术挑战。
目前,主处理器+协处理器的架构在数据加速运算中成为主流架构,主处理器一般由DSP、ARM等构成,协处理器一般由FPGA或专用ASIC构成,主处理器进行数据分配,将整个运算过程中的运算瓶颈下发至协处理器,用协处理器进行运算加速。
目前应用主处理器加协处理器的方式都采用专用工况处理,不能很好的实现资源的共享与复用,在信号处理或神经网络中,大部分运算只满足算式1的分类;在图像处理领域,一般只满足算式1与算式2,在复杂的矩阵运算中一般满足算式1、2、3的算式分类。但复杂的矩阵运算过程中数据的关联度比较高,因此不容易应用并行计算处理;因此如何设计一种可以兼容上述算式1、2、3的并行运算结构成为一种迫切的需求。
发明内容
有鉴于此,本发明的目的在于提供一种算式并行计算装置及方法,以缓解现有技术中存在的无法并行处理复杂矩阵运算的技术问题。
第一方面,本发明实施例提供了一种算式并行计算装置,包括:主处理器、协处理器和多条AXI总线;
所述主处理器通过多条所述AXI总线与所述协处理器连接;
所述主处理器用于确定每个任务内各待处理算式中的运算数据及算式附加信息,所述运算数据包括:相乘子算式、待与乘积结果进行求和运算的第三数据和待与求和结果进行乘法运算的尾数数据,所述算式附加信息包括算式标识和算式地址,所述相乘子算式包括第一数据和第二数据,将所述运算数据及算式附加信息通过多条所述AXI总线并行发送给所述协处理器;
所述协处理器用于对从每条所述AXI总线接收的所述第一数据和所述第二数据分别同时进行乘法运算,基于所述算式附加信息对同一个待处理算式所对应的乘积结果、所述第三数据和所述尾数数据进行计算,得到计算结果,将所述计算结果发送给所述主处理器。
结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述算式附加信息包括:算式标识;所述协处理器包括:数据分发单元、串行计算模块、多个并行乘法器和多个异步FIFO;
每个所述并行乘法器,分别用于对从与其连接的AXI总线中接收到的第一数据和第二数据进行乘法运算,将得到的乘积结果和所述算式附加信息发送给所述数据分发单元;
所述数据分发单元,用于将所述乘积结果和待进行加法运算的第三数据发送给与所述算式标识对应的异步FIFO;
每个所述异步FIFO,用于对所述乘积结果及所述第三数据进行缓存;
所述串行计算模块,用于分别对每个所述异步FIFO中的乘积结果和所述第三数据进行求和运算,将得到的求和结果和所述尾数数据进行乘法运算,得到所述计算结果,将所述计算结果发送给所述主处理器。
结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述串行计算模块还包括:单乘单元、尾数存储单元和多个求和单元;
每个所述求和单元,用于对从其对应的所述异步FIFO读出的乘积结果及所述第三数据进行求和,得到每一个所述算式标识对应的求和结果;
所述尾数存储单元,用于在接收到任一算式的尾数数据和该算式的算式标识时,存储所述尾数数据及算式标识;
所述单乘单元,用于将所述算式标识对应的尾数数据和求和结果进行乘法运算,得到所述计算结果,将所述计算结果发送给所述主处理器。
结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述算式附加信息还包括:算式地址;所述串行计算模块还包括:数据交换单元、数据选择器和至少两个排序器;
所述数据交换单元,用于将每一个所述算式标识对应的所述求和结果发送给与所述算式标识对应的排序器;
每个所述排序器,用于按照所述算式地址的顺序对各个待处理算式的求和结果进行排序,并向所述数据选择器发送当前已排序的求和结果的数量;
所述数据选择器,用于连通已排序求和结果的数量最多的排序器和所述单乘单元。
结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,所述AXI总线包括:用于传输时钟信号的时钟总线、用于传输所述运算数据的数据总线和用于传输所述算式附加信息的控制总线。
结合第一方面,本发明实施例提供了第一方面的第五种可能的实施方式,其中,每个所述异步FIFO的输入时钟信号的频率低于输出时钟信号的频率。
结合第一方面,本发明实施例提供了第一方面的第六种可能的实施方式,其中,多条所述AXI总线用于传输待处理算式的数量大于或者等于零且小于等于排序器的数量。
第二方面,本发明实施例还提供一种算式并行计算方法,包括:
使主处理器确定每个任务内各待处理算式中的运算数据及算式附加信息,所述运算数据包括:相乘子算式、待与乘积结果进行求和运算的第三数据和待与求和结果进行乘法运算的尾数数据,所述算式附加信息包括算式标识和算式地址,所述相乘子算式包括第一数据和第二数据,将所述运算数据及算式附加信息通过多条所述AXI总线并行发送给所述协处理器;
使所述协处理器对从每条所述AXI总线接收的所述第一数据和所述第二数据分别同时进行乘法运算,基于所述算式附加信息对同一个待处理算式所对应的乘积结果、所述第三数据和所述尾数数据进行计算,得到计算结果。
结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,所述使所述协处理器对从多条所述AXI总线接收的所述第一数据和所述第二数据分别同时进行乘法运算,基于所述算式附加信息对同一个待处理算式所对应的乘积结果、所述第三数据和所述尾数数据进行计算,得到计算结果,包括:
使所述协处理器中的每个并行乘法器,对从与其连接的AXI总线中接收到的第一数据和第二数据进行乘法运算,将得到的乘积结果和所述算式附加信息发送给所述数据分发单元;
使所述协处理器中的数据分发单元,将所述乘积结果和待进行加法运算的第三数据发送给与所述算式标识对应的异步FIFO;
使所述协处理器中的每个异步FIFO,对所述乘积结果及所述第三数据进行缓存;
使所述协处理器中的串行计算模块,分别对每个所述异步FIFO中的乘积结果和所述第三数据进行求和运算,将得到的求和结果和所述尾数数据进行乘法运算,得到所述计算结果。
结合第二方面,本发明实施例提供了第二方面的第二种可能的实施方式,其中,所述使所述协处理器中的串行计算模块,分别对每个所述异步FIFO中的乘积结果和所述第三数据进行求和运算,将得到的求和结果和所述尾数数据进行乘法运算,得到所述计算结果,包括:
使所述串行计算模块中的每个求和单元,对从其对应的所述异步FIFO读出的乘积结果及所述第三数据进行求和,得到每一个所述算式标识对应的求和结果;
使所述串行计算模块中的数据交换单元,将每一个所述算式标识对应的所述求和结果发送给与所述算式标识对应的排序器;
使所述串行计算模块中的每个排序器,按照所述算式地址的顺序对各个待处理算式的求和结果进行排序,并向所述数据选择器发送当前已排序的求和结果的数量;
使所述串行计算模块中的数据选择器,连通已排序求和结果的数量最多的排序器和所述单乘单元;
使所述串行计算模块中的尾数存储单元,在接收到任一算式的尾数数据和该算式的算式标识时,存储所述尾数数据及算式标识;
使所述串行计算模块中的单乘单元,将所述算式标识对应的尾数数据和求和结果进行乘法运算,得到所述计算结果。
本发明实施例带来了以下有益效果:本发明实施例的主处理器通过多条所述AXI总线与所述协处理器连接;所述主处理器用于确定每个任务内各待处理算式中的运算数据及算式附加信息,所述运算数据包括:相乘子算式、待与乘积结果进行求和运算的第三数据和待与求和结果进行乘法运算的尾数数据,所述算式附加信息包括算式标识和算式地址,所述相乘子算式包括第一数据和第二数据,将所述运算数据及算式附加信息通过多条所述AXI总线并行发送给所述协处理器;所述协处理器用于对从每条所述AXI总线接收的所述第一数据和所述第二数据分别同时进行乘法运算,基于所述算式附加信息对同一个待处理算式所对应的乘积结果、所述第三数据和所述尾数数据进行计算,得到计算结果,将所述计算结果发送给所述主处理器。
本发明实施例可以通过多条AXI总线实现多路数据并行传输,在协处理器接收到并行的输入数据后,对从每条所述AXI总线接收的所述第一数据和所述第二数据分别同时进行乘法运算,实现多路运算数据的并行处理,实现多任务分时并行处理,提高并行计算的效率。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的AXI总线的时序图;
图2为本发明实施例提供的一种算式并行计算装置的结构图;
图3为本发明实施例提供的协处理器的结构图;
图4为本发明实施例提供的一种算式并行计算方法的流程图;
图5为图4中步骤S102的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前应用主处理器加协处理器的方式都采用专用工况处理,不能很好的实现资源的共享与复用,在信号处理或神经网络中,大部分运算只满足算式1的分类;在图像处理领域,一般只满足算式1与算式2,在复杂的矩阵运算中一般满足算式1、2、3的算式分类。但复杂的矩阵运算过程中数据的关联度比较高,因此不容易应用并行计算处理;因此如何设计一种可以兼容上述算式1、2、3的并行运算结构成为一种迫切的需求,基于此,本发明实施例提供的一种算式并行计算装置及方法,可以实现多路运算数据的并行处理,实现多任务分时并行处理,提高并行计算的效率。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种算式并行计算装置进行详细介绍,本发明主要根据将运算过程中的运算算式进行归类分析,通过归纳总结现有计算瓶颈:发现计算瓶颈主要在图像处理、神经网络等这类以及矩阵运算为数学基础的运算,大致计算算式可总结为下列3类:
结合上述3个算式,制定了主处理器至协处理器数据下发的总线接口,总线接口主要规则按照AXI总线标准,将总线接口主要分为时钟信号、数据信号、控制信号三类,其中Type有2位位宽三种情况,其中00表示数据总线Mul_a中加数C1有效,01表示数据总线Mul_a与Mul_b中数据都有效并两个数相乘,10表示数据总线Mul_b中被乘数C1有效,Type为10时,可以将尾数数据D1存入尾数存储单元;Length表示待处理算式中相乘算式的个数,例如,图1中,Length为1时,表示这个待处理算式A1*B1+C1中只有一个相乘算式A1*B1;Length第二次为1时,待处理算式为(A1*B1+C1)D1,其中只有一个相乘算式A1*B1;Length为0时,待处理算式为C1;Length为2时,待处理算式为A1*B1+A2*B2,其中包含两个相乘算式A1*B1+A2*B2,Valid表示总线数据有效标志,也就是说,每次Valid为高电平时,传输的为一个待处理算式,Last表示整个算式的截止信号,也就是说,表示当前传输的待处理算式传输结束,在经过乘法运算处理后,可以将该Last对应的待处理算式的数据存入同一个异步FIFO,Ready与Valid互为一对握手信号,ID表示分发的数据来自于哪个任务(每个任务可以包含多个待处理算式,例如数据均来自任务1,则ID可以为1,数据均来自任务2,则ID可以为2等),设置ID的目的是为了便于数据交换单元将对应相同ID的数据送往同一个排序器,Addr为每个任务中待处理算式进入顺序的地址指示信号,Addr小的数据表示先进入的待处理算式,Addr大的数据表示后进入的待处理算式,每一个addr对应一个待处理算式,设置Addr的目的是为了便于排序器将小地址的待处理算式先输出,大地址的待处理算式后输出,图1中ID为0时表示任务0,任务0包含待处理算式0和待处理算式1,ID为1时表示任务1,任务1包含待处理算式0和待处理算式1。基于以上,三个算式可以应用图1所示总线接口进行传递。
如图2所示,所述算式并行计算装置可以包括:主处理器11、协处理器12和多条AXI总线13;
所述主处理器11通过多条所述AXI总线13与所述协处理器12连接;在本发明实施例中,所述AXI总线13包括:用于传输时钟信号的时钟总线、用于传输所述运算数据的数据总线和用于传输所述算式附加信息的控制总线;多条所述AXI总线13用于传输待处理算式的数量大于或者等于零且小于等于协处理器12内的排序器的数量,示例性的,若排序器的数量为2两个,则主处理器可以在四个总线上向协处理器发送数据,这时四个总线上的数据存在四种可能性:
1)四组总线数据中只包含1个算式:
2)四组总线数据中包含有2个算式(由于图3中仅有两个排序器,所以这里最多只能有2个算式):
3)四组总线数据中只包含1个算式的一部分:
4)总线数据无效。
在上述情况中,当4组总线数据中的某组总线数据无效时,图1中相应的Valid信号为低电平。
所述主处理器11用于确定每个任务内各待处理算式中的运算数据及算式附加信息,所述运算数据包括:相乘子算式、待与乘积结果进行求和运算的第三数据和待与求和结果进行乘法运算的尾数数据,所述算式附加信息包括算式标识和算式地址,所述相乘子算式包括第一数据和第二数据,将所述运算数据及算式附加信息通过多条所述AXI总线13并行发送给所述协处理器12;
所述协处理器12用于对从每条所述AXI总线13接收的所述第一数据和所述第二数据分别同时进行乘法运算,基于所述算式附加信息对同一个待处理算式所对应的乘积结果、所述第三数据和所述尾数数据进行计算,得到计算结果,将所述计算结果发送给所述主处理器11。
本发明实施例可以通过多条AXI总线实现多路数据并行传输,在协处理器接收到并行的输入数据后,对从每条所述AXI总线接收的所述第一数据和所述第二数据分别同时进行乘法运算,实现多路运算数据的并行处理,实现多任务分时并行处理,提高并行计算的效率。
而且,可实现***资源的灵活调配,结合硬件资源,可实现更多路的并行处理,该结构也可扩展至多协处理器的分布式计算;由于总线模式自定义,因此可快速适应其他种类的计算,通过优化设计该方法内的仲裁调度方式,可实现资源的动态调整与分配,可实现多任务并行运算,根据***时效性的要求,可实现不同并行的定制性扩展,通过设计的冗余与预留设计,可实现***设计的软件定义化扩展。
算式的运算主要由相乘和累加运算构成,在本发明的又一实施例中,本发明实施例中将计算以算式为单位,所述算式附加信息包括:算式标识和算式地址;如图3所示,所述协处理器包括:一个数据分发单元21、一个串行计算模块、多个并行乘法器23和多个异步FIFO 24;
每个所述并行乘法器23,分别用于对从与其连接的AXI总线中接收到的第一数据和第二数据进行乘法运算,将得到的乘积结果和所述算式附加信息发送给所述数据分发单元21;
以4根AXI总线为例,AXI总线与并行乘法器23一一对应连接,运算数据及算式附加信息通过4条AXI总线被并行送入4个并行乘法器23,每个并行乘法器23分别提取接收到的运算数据中的第一数据和第二数据,并将第一数据和第二数据进行乘法运算。
所述数据分发单元21,用于将所述乘积结果和待进行加法运算的第三数据发送给与所述算式标识对应的异步FIFO 24;
在本发明实施例中,数据分发单元21作为控制单元,控制着完成乘法运算的数据被分发至哪个异步FIFO 24,数据分发的过程以总线Last标志为触发信号,保证同一个Last对应的数据也即具有同样算式标识的数据进入同一个异步FIFO 24,例如,若待处理算式为A1*B1+C1,则A1*B1的乘积结果和C1被送往同一个异步FIFO,若待处理算式为(A1*B1+C1)D1,则A1*B1的乘积结果和C1被送往同一个异步FIFO,D1由于属于尾数数据,其应当存入尾数存储单元26,若待处理算式为A1*B1+A2*B2,则将A1*B1的乘积结果和A2*B2的乘积结果存入同一个异步FIFO。
每个所述异步FIFO 24,用于对所述乘积结果及所述第三数据进行缓存;在本发明实施例中,每个所述异步FIFO 24的输入时钟信号的频率低于输出时钟信号的频率,例如:如图3中,输入时钟为CLK_200M,输出时钟为CLK_400M,这样,存入乘积结果时使用的时钟速度慢于后面读出输出结果所使用的时钟,FIFO写入时钟慢于读出时钟,由于前面是需要并行存入多个数据(由于数据多所以时钟频率设置为慢),后面是串行输出一个(由于数据少所以时钟频率设置为高),这样,可以整体缩短FIFO写入和读出所需时间,可以有效的提升***运算效率。
异步FIFO 24主要实现数据的并转串(在一个待处理算式通过至少两条AXI总线传输给两个并行乘法器时,会由至少两路同时进行的并行乘法运算转为只能串行的加法运算,例如,将四个并行乘法器同时计算得到的四个乘积结果按照数据的有效位宽进行读取,并进行四个乘积结果的累加操作)、完整算式的收集(同一个待处理算式的数据存入同一个异步FIFO)和跨时钟域处理(具有两个时钟,且输入时钟小于输出时钟)。
所述串行计算模块,用于分别对每个所述异步FIFO 24中的乘积结果和所述第三数据进行求和运算,将得到的求和结果和所述尾数数据进行乘法运算,得到所述计算结果,将所述计算结果发送给所述主处理器。
在本发明的一种实施方式中,如图3所述,所述串行计算模块包括:单乘单元25、尾数存储单元26、数据交换单元27、数据选择器和至少两个排序器29和多个求和单元30;
每个所述求和单元30,用于对从其对应的所述异步FIFO 24读出的乘积结果及所述第三数据进行求和,得到每一个所述算式标识对应的求和结果;
在本发明实施例中,求和单元30依据异步FIFO 24读取的数据进行数据累加,累加采用流水线设计,每个Last内部的数据进行一个完整的累加结果,也即只对同一个待处理算式对应的乘积结果及第三数据进行累加,对不同待处理算式的乘积结果及第三数据不进行累加。
所述数据交换单元(图3中的crossbar)27,用于将每一个所述算式标识对应的所述求和结果发送给与所述算式标识对应的排序器29;
在本发明实施例中,数据交换单元27主要动态的读取四个求和单元30的有效数据输出,由于算式的长短不固定,因此数据交换单元的输入为随机响应,所以输出结果根据前端数据输入的来源(数据来自于哪一个待处理算式,通过ID来表征)进行动态分配,同一个ID的数据分配给同一个排序器,本设计可支持两个任务(由于图3中仅有两个排序器,所以此处以两个任务为例)的任意分时处理,来自不同任务(对应不同的ID)的结果进入不同的排序器29。
每个所述排序器29,用于按照所述算式地址的顺序对各个待处理算式的求和结果进行排序,并向所述数据选择器发送当前已排序的求和结果的数量;
在本发明实施例中,排序器29的作用是将数据进行正序输出,乱序是由于算式的长短不同,导致先进的长算式可能会比后进的短算式滞后输出,为了保证算式结果的先进先出,增加了排序器29模块,排序器29可以依照Addr从小到大的顺序,将多个待处理算式按照先进先出的顺序输出。
所述数据选择器,用于连通已排序求和结果的数量最多的排序器29和所述单乘单元25;数据选择器主要进行分时多任务结果的切换,当哪个任务的结果有效后选择哪个任务的结果输出,哪个任务的结果有效通过以下方式确定:在每个时钟周期内,哪一个排序器完成某一任务内各算式的排序,该任务的结果有效。
所述尾数存储单元26,用于在接收到任一算式的尾数数据和该算式的算式标识时,存储所述尾数数据及算式标识;设置尾数存储单元可以使本发明可以计算更多类型的算式,也即增加了前述算式类型(3)的方式。
所述单乘单元25,用于将所述算式标识对应的尾数数据和求和结果进行乘法运算,得到所述计算结果,将所述计算结果发送给所述主处理器。
在本发明的又一实施例中,如图4所示,还提供一种算式并行计算方法,包括:
步骤S101,使主处理器确定每个任务内各待处理算式中的运算数据及算式附加信息,所述运算数据包括:相乘子算式、待与乘积结果进行求和运算的第三数据和待与求和结果进行乘法运算的尾数数据,所述算式附加信息包括算式标识和算式地址,所述相乘子算式包括第一数据和第二数据,将所述运算数据及算式附加信息通过多条所述AXI总线并行发送给所述协处理器;
步骤S102,使所述协处理器对从每条所述AXI总线接收的所述第一数据和所述第二数据分别同时进行乘法运算,基于所述算式附加信息对同一个待处理算式所对应的乘积结果、所述第三数据和所述尾数数据进行计算,得到计算结果,将所述计算结果发送给所述主处理器。
本发明实施例所提供的方法,其实现原理及产生的技术效果和前述装置实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
如图5所示,所述步骤S102包括:
步骤S201,使所述协处理器中的每个并行乘法器,对从与其连接的AXI总线中接收到的第一数据和第二数据进行乘法运算,将得到的乘积结果和所述算式附加信息发送给所述数据分发单元;
步骤S202,使所述协处理器中的数据分发单元,将所述乘积结果和待进行加法运算的第三数据发送给与所述算式标识对应的异步FIFO;
步骤S203,使所述协处理器中的每个异步FIFO,对所述乘积结果及所述第三数据进行缓存;
步骤S204,使所述协处理器中的串行计算模块,分别对每个所述异步FIFO中的乘积结果和所述第三数据进行求和运算,将得到的求和结果和所述尾数数据进行乘法运算,得到所述计算结果,将所述计算结果发送给所述主处理器。
在本发明实施例中,所述步骤S204包括:
使所述串行计算模块中的每个求和单元,对从其对应的所述异步FIFO读出的乘积结果及所述第三数据进行求和,得到每一个所述算式标识对应的求和结果;
使所述串行计算模块中的数据交换单元,将每一个所述算式标识对应的所述求和结果发送给与所述算式标识对应的排序器;
使所述串行计算模块中的每个排序器,按照所述算式地址的顺序对各个待处理算式的求和结果进行排序,并向所述数据选择器发送当前已排序的求和结果的数量;
使所述串行计算模块中的数据选择器,连通已排序求和结果的数量最多的排序器和所述单乘单元;
使所述串行计算模块中的尾数存储单元,在接收到任一算式的尾数数据和该算式的算式标识时,存储所述尾数数据及算式标识;
使所述串行计算模块中的单乘单元,将所述算式标识对应的尾数数据和求和结果进行乘法运算,得到所述计算结果,将所述计算结果发送给所述主处理器。
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种算式并行计算装置,其特征在于,包括:主处理器、协处理器和多条AXI总线;
所述主处理器通过多条所述AXI总线与所述协处理器连接;
所述主处理器用于确定每个任务内各待处理算式中的运算数据及算式附加信息,所述运算数据包括:相乘子算式、待与乘积结果进行求和运算的第三数据和待与求和结果进行乘法运算的尾数数据,所述算式附加信息包括算式标识和算式地址,所述相乘子算式包括第一数据和第二数据,将所述运算数据及算式附加信息通过多条所述AXI总线并行发送给所述协处理器;
所述协处理器用于对从每条所述AXI总线接收的所述第一数据和所述第二数据分别同时进行乘法运算,基于所述算式附加信息对同一个待处理算式所对应的乘积结果、所述第三数据和所述尾数数据进行计算,得到计算结果,将所述计算结果发送给所述主处理器。
2.根据权利要求1所述的算式并行计算装置,其特征在于,所述算式附加信息包括:算式标识;所述协处理器包括:数据分发单元、串行计算模块、多个并行乘法器和多个异步FIFO;
每个所述并行乘法器,分别用于对从与其连接的AXI总线中接收到的第一数据和第二数据进行乘法运算,将得到的乘积结果和所述算式附加信息发送给所述数据分发单元;
所述数据分发单元,用于将所述乘积结果和待进行加法运算的第三数据发送给与所述算式标识对应的异步FIFO;
每个所述异步FIFO,用于对所述乘积结果及所述第三数据进行缓存;
所述串行计算模块,用于分别对每个所述异步FIFO中的乘积结果和所述第三数据进行求和运算,将得到的求和结果和所述尾数数据进行乘法运算,得到所述计算结果,将所述计算结果发送给所述主处理器。
3.根据权利要求2所述的算式并行计算装置,其特征在于,所述串行计算模块还包括:单乘单元、尾数存储单元和多个求和单元;
每个所述求和单元,用于对从其对应的所述异步FIFO读出的乘积结果及所述第三数据进行求和,得到每一个所述算式标识对应的求和结果;
所述尾数存储单元,用于在接收到任一算式的尾数数据和算式标识时,存储所述尾数数据及所述算式标识;
所述单乘单元,用于将所述算式标识对应的尾数数据和求和结果进行乘法运算,得到所述计算结果,将所述计算结果发送给所述主处理器。
4.根据权利要求3所述的算式并行计算装置,其特征在于,所述算式附加信息还包括:算式地址;所述串行计算模块还包括:数据交换单元、数据选择器和至少两个排序器;
所述数据交换单元,用于将每一个所述算式标识对应的所述求和结果发送给与所述算式标识对应的排序器;
每个所述排序器,用于按照所述算式地址的顺序对各个待处理算式的求和结果进行排序,并向所述数据选择器发送当前已排序的求和结果的数量;
所述数据选择器,用于连通已排序求和结果的数量最多的排序器和所述单乘单元。
5.根据权利要求2至4任一所述的算式并行计算装置,其特征在于,所述AXI总线包括:用于传输时钟信号的时钟总线、用于传输所述运算数据的数据总线和用于传输所述算式附加信息的控制总线。
6.根据权利要求5所述的算式并行计算装置,其特征在于,每个所述异步FIFO的输入时钟信号的频率低于输出时钟信号的频率。
7.根据权利要求6所述的算式并行计算装置,其特征在于,多条所述AXI总线用于传输待处理算式的数量大于或者等于零且小于等于排序器的数量。
8.一种算式并行计算方法,其特征在于,包括:
使主处理器确定每个任务内各待处理算式中的运算数据及算式附加信息,所述运算数据包括:相乘子算式、待与乘积结果进行求和运算的第三数据和待与求和结果进行乘法运算的尾数数据,所述算式附加信息包括算式标识和算式地址,所述相乘子算式包括第一数据和第二数据,将所述运算数据及算式附加信息通过多条AXI总线并行发送给协处理器;
使所述协处理器对从每条所述AXI总线接收的所述第一数据和所述第二数据分别同时进行乘法运算,基于所述算式附加信息对同一个待处理算式所对应的乘积结果、所述第三数据和所述尾数数据进行计算,得到计算结果。
9.根据权利要求8所述的算式并行计算方法,其特征在于,所述使所述协处理器对从多条所述AXI总线接收的所述第一数据和所述第二数据分别同时进行乘法运算,基于所述算式附加信息对同一个待处理算式所对应的乘积结果、所述第三数据和所述尾数数据进行计算,得到计算结果,包括:
使所述协处理器中的每个并行乘法器,对从与其连接的AXI总线中接收到的第一数据和第二数据进行乘法运算,将得到的乘积结果和所述算式附加信息发送给数据分发单元;
使所述协处理器中的数据分发单元,将所述乘积结果和待进行加法运算的第三数据发送给与算式标识对应的异步FIFO;
使所述协处理器中的每个异步FIFO,对所述乘积结果及所述第三数据进行缓存;
使所述协处理器中的串行计算模块,分别对每个所述异步FIFO中的乘积结果和所述第三数据进行求和运算,将得到的求和结果和所述尾数数据进行乘法运算,得到所述计算结果。
10.根据权利要求9所述的算式并行计算方法,其特征在于,所述使所述协处理器中的串行计算模块,分别对每个所述异步FIFO中的乘积结果和所述第三数据进行求和运算,将得到的求和结果和所述尾数数据进行乘法运算,得到所述计算结果,包括:
使所述串行计算模块中的每个求和单元,对从其对应的所述异步FIFO读出的乘积结果及所述第三数据进行求和,得到每一个所述算式标识对应的求和结果;
使所述串行计算模块中的数据交换单元,将每一个所述算式标识对应的所述求和结果发送给与所述算式标识对应的排序器;
使所述串行计算模块中的每个排序器,按照算式地址的顺序对各个待处理算式的求和结果进行排序,并向数据选择器发送当前已排序的求和结果的数量;
使所述串行计算模块中的数据选择器,连通已排序求和结果的数量最多的排序器和单乘单元;
使所述串行计算模块中的尾数存储单元,在接收到任一算式的尾数数据和算式标识时,存储所述尾数数据及所述算式标识;
使所述串行计算模块中的单乘单元,将所述算式标识对应的尾数数据和求和结果进行乘法运算,得到所述计算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810399675.6A CN108595369B (zh) | 2018-04-28 | 2018-04-28 | 算式并行计算装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810399675.6A CN108595369B (zh) | 2018-04-28 | 2018-04-28 | 算式并行计算装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108595369A CN108595369A (zh) | 2018-09-28 |
CN108595369B true CN108595369B (zh) | 2020-08-25 |
Family
ID=63610806
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810399675.6A Active CN108595369B (zh) | 2018-04-28 | 2018-04-28 | 算式并行计算装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108595369B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110147251B (zh) * | 2019-01-28 | 2023-07-25 | 腾讯科技(深圳)有限公司 | 用于计算神经网络模型的***、芯片及计算方法 |
CN110727515B (zh) * | 2019-10-12 | 2022-02-15 | 电子科技大学 | 一种雷达mf-tbd算法的多路fpga快速并行处理***及处理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101430664A (zh) * | 2008-09-12 | 2009-05-13 | 中国科学院计算技术研究所 | 一种多处理器***及Cache一致性消息传输方法 |
CN101523345A (zh) * | 2006-09-29 | 2009-09-02 | 联发科技股份有限公司 | 在主处理器和协处理器之间进行接口连接的方法和装置 |
CN103310228A (zh) * | 2013-05-28 | 2013-09-18 | 南京邮电大学 | 基于归一化相关系数的模板匹配高速并行实现方法和装置 |
CN105844654A (zh) * | 2016-04-15 | 2016-08-10 | 中国科学院上海技术物理研究所 | 一种基于Zynq软硬件协同处理的增强现实***及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8106914B2 (en) * | 2007-12-07 | 2012-01-31 | Nvidia Corporation | Fused multiply-add functional unit |
US10346350B2 (en) * | 2015-10-08 | 2019-07-09 | Via Alliance Semiconductor Co., Ltd. | Direct execution by an execution unit of a micro-operation loaded into an architectural register file by an architectural instruction of a processor |
-
2018
- 2018-04-28 CN CN201810399675.6A patent/CN108595369B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101523345A (zh) * | 2006-09-29 | 2009-09-02 | 联发科技股份有限公司 | 在主处理器和协处理器之间进行接口连接的方法和装置 |
CN101430664A (zh) * | 2008-09-12 | 2009-05-13 | 中国科学院计算技术研究所 | 一种多处理器***及Cache一致性消息传输方法 |
CN103310228A (zh) * | 2013-05-28 | 2013-09-18 | 南京邮电大学 | 基于归一化相关系数的模板匹配高速并行实现方法和装置 |
CN105844654A (zh) * | 2016-04-15 | 2016-08-10 | 中国科学院上海技术物理研究所 | 一种基于Zynq软硬件协同处理的增强现实***及方法 |
Non-Patent Citations (2)
Title |
---|
一种用于人脸检测SoC中的加速协处理器设计;焦继业等;《西安电子科技大学学报(自然科学版)》;20110630;第38卷(第3期);第76-82页 * |
数据并行协处理器存储***的研究与实现;李潇潇;《中国优秀硕士学位论文全文数据库 信息科技辑》;20061115(第11期);I137-47 * |
Also Published As
Publication number | Publication date |
---|---|
CN108595369A (zh) | 2018-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109284823B (zh) | 一种运算装置及相关产品 | |
US9529590B2 (en) | Processor for large graph algorithm computations and matrix operations | |
CN110163361B (zh) | 一种计算装置及方法 | |
CN110147249B (zh) | 一种网络模型的计算方法及装置 | |
CN108595369B (zh) | 算式并行计算装置及方法 | |
US20220027716A1 (en) | Neural network accelerator | |
CN111047022A (zh) | 一种计算装置及相关产品 | |
CN111782580B (zh) | 复杂计算装置、方法、人工智能芯片和电子设备 | |
CN110825436A (zh) | 应用于人工智能芯片的计算方法和人工智能芯片 | |
CN110163349B (zh) | 一种网络模型的计算方法及装置 | |
CN111860773A (zh) | 处理装置和用于信息处理的方法 | |
CN114860460B (zh) | 一种数据库加速的方法、装置、计算机设备 | |
CN113128673B (zh) | 数据处理方法、存储介质、神经网络处理器及电子设备 | |
CN111078286A (zh) | 数据通信方法、计算***和存储介质 | |
Kowsalya | A novel cognitive Wallace compressor based multi operand adders in CNN architecture for FPGA | |
CN111260046B (zh) | 运算方法、装置及相关产品 | |
CN115081600A (zh) | 执行Winograd卷积的变换单元、集成电路装置及板卡 | |
CN111260070B (zh) | 运算方法、装置及相关产品 | |
CN115081603A (zh) | 执行Winograd卷积的计算装置、集成电路装置及板卡 | |
RU2419139C1 (ru) | Программируемое устройство цифровой обработки сигналов | |
Fiske et al. | The reconfigurable arithmetic processor | |
WO2021179286A1 (zh) | 卷积神经网络的数据处理方法、预测方法、计算装置和存储介质 | |
CN111740820B (zh) | 基于ecc的有限域运算调度方法、装置、设备、介质及*** | |
Zhang et al. | An Acceleration Method of Data Table Parsing and Database Sorting Based on Mask Calculation | |
CN115081605A (zh) | 暂存Winograd卷积中的神经元数据的缓存、装置与板卡 |
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 |