CN117851743A - 运算电路、处理器、集成电路系统、电子组件及设备 - Google Patents
运算电路、处理器、集成电路系统、电子组件及设备 Download PDFInfo
- Publication number
- CN117851743A CN117851743A CN202410257137.9A CN202410257137A CN117851743A CN 117851743 A CN117851743 A CN 117851743A CN 202410257137 A CN202410257137 A CN 202410257137A CN 117851743 A CN117851743 A CN 117851743A
- Authority
- CN
- China
- Prior art keywords
- convolution
- data
- channel
- matrix
- row
- 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
- 239000011159 matrix material Substances 0.000 claims abstract description 277
- 230000005540 biological transmission Effects 0.000 claims description 273
- 238000012545 processing Methods 0.000 claims description 130
- 238000009825 accumulation Methods 0.000 claims description 58
- 238000003491 array Methods 0.000 claims description 51
- 230000010349 pulsation Effects 0.000 claims description 9
- 238000000034 method Methods 0.000 abstract description 10
- 238000004364 calculation method Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 13
- 238000007906 compression Methods 0.000 description 11
- 230000006835 compression Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 5
- 230000004913 activation Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 1
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000541 pulsatile effect Effects 0.000 description 1
Landscapes
- Complex Calculations (AREA)
Abstract
本公开提供一种运算电路、处理器、集成电路系统、电子组件及设备,旨在以较高的运算效率兼容矩阵运算和卷积运算。其中,对矩阵运算,通过运算单元阵列中的单个运算单元用于对一个矩阵的单行数据和另一个矩阵的单列数据执行点乘运算;对卷积运算,通过单个运算单元对对应卷积核的单组卷积核数据和卷积对象在单个卷积滑窗内的单组待卷积数据执行点乘运算,同列运算单元对应相同卷积核,不同列运算单元对应不同卷积核,单组卷积核数据包括相同位置上多个通道的卷积核数据,单组待卷积数据包括相同位置上多个通道的待卷积数据。其通用性强,可以适用于GPU、NPU和ASIC等芯片,且矩阵运算及卷积运算效率均较高。
Description
技术领域
本公开涉及集成电路技术领域,尤其涉及一种运算电路、处理器、集成电路系统、电子组件及电子设备。
背景技术
矩阵乘和矩阵乘加运算在人工智能与高性能运算领域得到广泛应用。例如,卷积神经网络的卷积运算可转化为矩阵乘或矩阵乘加运算,又例如,transformer神经网络中也大量使用矩阵乘或矩阵乘加运算。
对于擅长卷积神经网络运算的系统,例如ASIC(Application SpecificIntegrated Circuit)、NPU(Neural network Processing Unit,神经网络处理器)等,为提高卷积运算效率,其主要采用专用卷积运算电路,但其矩阵运算效率较低。对于擅长矩阵运算的系统,GPU(Graphics Processing Unit,图形处理器)、GPGPU(General-PurposeGraphics Processing Unit,通用图形处理器)主要采用矩阵乘电路以及矩阵乘加电路,其矩阵乘以及矩阵乘加运算效率较高,但卷积运算性能、效率有待优化,且需要更大的缓存,因为这类系统进行卷积运算时,需要先使用img2col将图像和卷积核展开为矩阵形式,再进行矩阵运算,运算完成后生成的特征图还需要转换为原有格式。
发明内容
本公开的目的是提供一种运算电路、处理器、集成电路系统、电子组件及电子设备,旨在通过同一套运算效率较高的运算电路兼容矩阵运算和卷积运算。
根据本公开的一个方面,提供一种运算电路,该运算电路包括运算单元阵列。在矩阵运算工作模式下,运算单元阵列中的单个运算单元用于对第一矩阵的单行数据和第二矩阵的单列数据执行点乘运算;在卷积运算工作模式下,运算单元阵列中的单个运算单元用于对对应卷积核的单组卷积核数据和卷积对象在单个卷积滑窗内的单组待卷积数据执行点乘运算,同列运算单元对应相同卷积核,不同列运算单元对应不同卷积核,单组卷积核数据包括相同位置上多个通道的卷积核数据,单组待卷积数据包括相同位置上多个通道的待卷积数据。
本公开实施例提供的运算电路支持矩阵的乘法运算,进一步的,本公开实施例提供的运算电路还可以支持矩阵的乘加运算。如果运算电路支持矩阵的乘加运算,那么,运算单元还用于对第一矩阵单行数据与第二矩阵单列的乘法运算结果与第三矩阵的元素数据执行加法运算。
本公开实施例中,运算电路可以包括多条行广播总线,多条列广播总线和多个运算结果处理单元。其中,运算结果处理单元包括透传通道和加法通道。
基于广播总线和运算结果处理单元的运算电路结构,在矩阵运算工作模式下,可选的:第一矩阵的单行数据通过对应的行广播总线传输,第二矩阵的单列数据通过对应的列广播总线传输,同列运算单元的运算结果通过对应的运算结果处理单元的透传通道输出;在卷积运算工作模式下,单个卷积滑窗内的各组待卷积数据分别通过对应的行广播总线传输。
基于广播总线和运算结果处理单元的运算电路结构,可选的,每条行广播总线上设置有多个第一数据传输模块,第一列之外的各个运算单元分别对应一个所述第一数据传输模块,第一数据传输模块包括透传通道和流水暂存通道。
在此基础上,在矩阵运算工作模式下,第一数据传输模块开启透传通道。
本公开实施例中,可选的,目标运算单元的输出端设置有第二数据传输模块,第二数据传输模块包括透传通道和流水暂存通道,目标运算单元至少包括最后一行之外的各个运算单元。
在此基础上,在矩阵运算工作模式下,第二数据传输模块开启透传通道。
本公开实施例中,在卷积运算工作模式下:
一种可选的实现方式中,第一数据传输模块和第二数据传输模块开启透传通道;运算结果处理单元通过加法通道对对应的同列运算单元针对单个卷积滑窗的运算结果相加后输出。
另一种可选的实现方式中,第一数据传输模块开启流水暂存通道,以便单个卷积滑窗内的各组卷积数据分别以流水方式依次送达同行各个运算单元;第二数据传输模块开启透传通道;运算结果处理单元通过加法通道对对应的同列运算单元针对单个卷积滑窗的运算结果相加后输出。
又一种可选的实现方式中,第一数据传输模块开启流水暂存通道,以便各个卷积滑窗内的各组卷积数据分别以脉动方式依次送达同行各个运算单元;第二数据传输模块开启流水暂存通道,以便本运算单元的运算结果通过流水暂存通道进入同列下一个运算单元的加法输入端;运算结果处理单元开启透传通道。
本公开实施例中,运算电路可以包括运算单元阵列、译码单元、多条行广播总线、多条列广播总线和多个运算结果处理单元。其中,译码单元用于根据运算指示确定工作模式,并生成通道控制信息,该工作模式包括矩阵运算工作模式和卷积运算工作模式。在矩阵运算工作模式下,行广播总线用于传输第一矩阵的行数据,列广播总线用于传输第二矩阵的列数据;在卷积运算工作模式下,行广播总线用于传输待卷积数据。每条行广播总线上设置有多个第一数据传输模块,第一列之外的各个运算单元分别对应一个第一数据传输模块,第一数据传输模块包括透传通道和流水暂存通道;第一数据传输模块根据上述通道控制信息的指示开启透传通道或者流水暂存通道。目标运算单元的输出端设置有第二数据传输模块,第二数据传输模块包括透传通道和流水暂存通道;第二数据传输模块根据通道控制信息的指示开启透传通道或者流水暂存通道,并通过透传通道将运算结果输出至对应的运算结果处理单元,通过流水暂存通道将运算结果输出至同列下一个运算单元的加法输入端,目标运算单元至少包括最后一行之外的各个运算单元。运算结果处理单元包括透传通道和加法通道,运算结果处理单元根据通道控制信息的指示开启透传通道或加法通道。
在上述任一运算电路实施例的基础上,运算电路还可以包括累加处理单元。在矩阵运算工作模式下,累加处理单元用于对一笔矩阵运算在各个运算单元的运算结果分别累加,一笔矩阵运算包括第一矩阵和第二矩阵的矩阵乘法运算。在卷积运算工作模式下,累加处理单元用于对卷积对象的卷积运算在同列运算单元的运算结果分别累加。
根据本公开的另一方面,本公开提供一种运算电路,包括尺寸相同的至少两个运算单元阵列,在矩阵运算工作模式下,每个运算单元阵列中的单个运算单元用于对第一子矩阵的单行数据和第二子矩阵的单列数据执行点乘运算;在卷积运算工作模式下,每个运算单元阵列中的单个运算单元用于对对应子卷积核的单组卷积核数据和子卷积对象在单个卷积滑窗内的单组待卷积数据执行点乘运算,同列运算单元对应相同子卷积核,不同列运算单元对应不同子卷积核,单组卷积核数据包括相同位置上多个通道的卷积核数据,单组待卷积数据包括相同位置上多个通道的待卷积数据。上述至少两个运算单元阵列通过连接单元连接,以实现第一矩阵与第二矩阵的矩阵乘法,或者卷积核对卷积对象的卷积运算。第一矩阵在行方向上被划分为若干第一子矩阵,第二矩阵在列方向上被划分为若干第二子矩阵。卷积核在通道方向上被划分为若干子卷积核,卷积对象在通道方向上被划分为若干所述子卷积对象。
本公开实施例中,运算电路可以包括多条行广播总线,多条列广播总线和多个运算结果处理单元。其中,运算结果处理单元包括透传通道和加法通道。
基于广播总线和运算结果处理单元的运算电路结构,在矩阵运算工作模式下,可选的:第一子矩阵的单行数据通过对应的行广播总线传输,第二子矩阵的单列数据通过对应的列广播总线传输,单个运算单元阵列中同列运算单元的运算结果通过对应的运算结果处理单元的透传通道输出;在卷积运算工作模式下,单个卷积滑窗内的各组待卷积数据分别通过对应的行广播总线传输;各个运算单元阵列复用广播总线,或者,各个运算单元阵列使用独立的广播总线,广播总线包括行广播总线和/或列广播总线。
基于广播总线和运算结果处理单元的运算电路结构,可选的,每条行广播总线上设置有多个第一数据传输模块,第一列之外的各个运算单元分别对应一个第一数据传输模块,第一数据传输模块包括透传通道和流水暂存通道。
在此基础上,在矩阵运算工作模式下,第一数据传输模块开启透传通道。
本公开实施例中,可选的,目标运算单元的输出端设置有第二数据传输模块,第二数据传输模块包括透传通道和流水暂存通道,目标运算单元至少包括最后一行之外的各个运算单元。
在此基础上,在矩阵运算工作模式下,第二数据传输模块开启透传通道。
本公开实施例中,在卷积运算工作模式下:
一种可选的实现方式中,第一数据传输模块和第二数据传输模块开启透传通道;运算结果处理单元通过加法通道对对应的同列运算单元针对单个卷积滑窗的运算结果相加后输出。
另一种可选的实现方式中,第一数据传输模块开启流水暂存通道,以便单个卷积滑窗内的各组卷积数据分别以流水方式依次送达同行各个运算单元;第二数据传输模块开启透传通道;运算结果处理单元通过加法通道对对应的同列运算单元针对单个卷积滑窗的运算结果相加后输出。
又一种可选的实现方式中,第一数据传输模块开启流水暂存通道,以便各个卷积滑窗内的各组卷积数据分别以脉动方式依次送达同行各个运算单元;第二数据传输模块开启流水暂存通道,以便本运算单元的运算结果通过流水暂存通道进入同列下一个运算单元的加法输入端;运算结果处理单元开启透传通道。
本公开实施例中,运算电路可以包括运算单元阵列、译码单元、多条行广播总线、多条列广播总线和多个运算结果处理单元。其中,译码单元用于根据运算指示确定工作模式,并生成通道控制信息,该工作模式包括矩阵运算工作模式和卷积运算工作模式。在矩阵运算工作模式下,行广播总线用于传输对应的第一子矩阵的行数据,列广播总线用于传输对应的第二子矩阵的列数据;在卷积运算工作模式下,行广播总线用于传输对应的待卷积数据。每条行广播总线上设置有多个第一数据传输模块,第一列之外的各个运算单元分别对应一个第一数据传输模块,第一数据传输模块包括透传通道和流水暂存通道;第一数据传输模块根据通道控制信息的指示开启透传通道或者流水暂存通道。目标运算单元的输出端设置有第二数据传输模块,第二数据传输模块包括透传通道和流水暂存通道;第二数据传输模块根据通道控制信息的指示开启透传通道或者流水暂存通道,并通过透传通道将运算结果输出至对应的运算结果处理单元,通过流水暂存通道将运算结果输出至同列下一个运算单元的加法输入端。运算结果处理单元包括透传通道和加法通道,运算结果处理单元根据通道控制信息的指示开启透传通道或加法通道。各个运算单元阵列复用广播总线,或者,各个运算单元阵列使用独立的广播总线,广播总线包括行广播总线和/或列广播总线。
在上述第二方面任一运算电路实施例的基础上,运算电路还可以包括累加处理单元。在矩阵运算工作模式下,累加处理单元用于对一笔矩阵运算在各个运算单元的运算结果分别累加,一笔矩阵运算包括第一矩阵和第二矩阵的矩阵乘法运算。在卷积运算工作模式下,累加处理单元用于对卷积对象的卷积运算在同列运算单元的运算结果分别累加。
根据本公开的另一方面,本公开提供一种运算电路,包括若干运算单元阵列,多条行广播总线和多条列广播总线。行广播总线用于传输由对应行运算单元进行运算的数据,每条行广播总线上设置有多个第一数据传输模块,第一列之外的各个运算单元分别对应一个第一数据传输模块,第一数据传输模块包括透传通道和流水暂存通道,第一数据传输模块根据指示开启透传通道或者流水暂存通道。列广播总线用于传输由对应列运算单元进行运算的数据。每个运算单元用于对一组数据对执行点乘运算,目标运算单元的输出端设置有第二数据传输模块,第二数据传输模块包括透传通道和流水暂存通道,第二数据传输模块根据指示开启透传通道或者流水暂存通道,并通过透传通道将运算结果输出至对应的运算结果处理单元,通过流水暂存通道将运算结果输出至同列下一个运算单元的加法输入端,目标运算单元至少包括最后一行之外的各个运算单元。
在此基础上,运算电路还可以包括多个运算结果处理单元。运算结果处理单元包括透传通道和加法通道,运算结果处理单元根据指示开启透传通道或加法通道,并通过透传通道透传输出对应列运算单元的运算结果,通过加法通道将对应列运算单元的运算结果相加后输出。
根据本公开的另一方面,本公开提供一种处理器,该处理器包括上述任一实施例所述的运算电路。
根据本公开的另一方面,提供一种集成电路系统,包括上述任一实施例所述的运算电路。
根据本公开的另一方面,提供一种电子组件,包括上述实施例所述的处理器和/或上述实施例所述的集成电路系统。
根据本公开的另一方面,提供一种电子设备,包括上述任一实施例所述的电子组件。
附图说明
图1为本公开一个实施例提供的运算电路的结构示意图;
图2为本公开一个实施例提供的三维乘加阵列的结构示意图;
图3为本公开一个实施例提供的DOT单元的结构示意图;
图4为本公开一个实施例提供的PB和KB的结构示意图;
图5为本公开一个实施例提供的add mux的结构示意图;
图6为本公开一个实施例提供的连接单元的结构示意图;
图7为本公开一个实施例提供的累加处理单元的结构示意图;
图8为本公开一个实施例提供的卷积滑窗移动示意图;
图9为本公开一个实施例提供的流水方式数据传输与计算示意图;
图10为本公开一个实施例提供的脉动方式数据传输与计算示意图;
图11为本公开一个实施例提供的广播方式数据传输与计算示意图;
图12为本公开一个实施例提供的卷积运算过程示意图。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
本公开的目的是提供一种运算电路,可以较高的运算效率兼容矩阵运算和卷积运算。具体的,在矩阵运算工作模式下,可以通过运算单元阵列中的单个运算单元用于对一个矩阵的单行数据和另一个矩阵的单列数据执行点乘运算。而在卷积运算工作模式下,可以通过运算单元阵列中的单个运算单元对对应卷积核的单组卷积核数据和卷积对象在单个卷积滑窗内的单组待卷积数据执行点乘运算,其中,同列运算单元对应相同卷积核,不同列运算单元对应不同卷积核,单组卷积核数据包括相同位置上多个通道的卷积核数据,单组待卷积数据包括相同位置上多个通道的待卷积数据。本公开实施例提供的运算单元阵列为三维乘加电路,可以较高的运算效率实现矩阵乘法或乘加运算。通过上述方式复用三维乘加电路,不需要对卷积对象和卷积核进行展开及矩阵格式转换,即可实现HWC三维卷积运算,由于计算前不需要进行格式转换,因此计算得到的特征图也不需要进行格式转换,从而提高了卷积运算效率。另外,本公开实施例提供的运算电路通用性强,可以适用于GPU、GPGPU、NPU和ASIC等芯片。
本公开的一个实施例提供一种运算电路,该运算电路至少包括运算单元阵列。本公开实施例中,运算单元在逻辑上排布构成阵列,其物理空间排布不限。当然,出于生产工艺、节省面积等方面的考虑,优选的,运算单元在物理空间上排布成阵列。
在矩阵运算工作模式下,运算单元阵列中的单个运算单元用于对第一矩阵的单行数据和第二矩阵的单列数据执行点乘运算。以M×N的运算单元阵列实现M×K的A矩阵与K×N的B矩阵的矩阵乘法为例。第i行第j列的运算单元对A矩阵第i行数据和B矩阵第j列数据执行点乘运算,其运算结果作为结果矩阵D的第i行第j列的元素数据。
本公开实施例提供的运算电路支持矩阵的乘法运算,进一步的,本公开实施例提供的运算电路还可以支持矩阵的乘加运算。如果运算电路支持矩阵的乘加运算,那么,在矩阵运算工作模式下,运算单元还用于对第一矩阵单行数据与第二矩阵单列的乘法运算结果与第三矩阵的元素数据执行加法运算。以M×N的运算单元阵列实现上述A矩阵×B矩阵+M×N的C矩阵的矩阵乘加运算为例。第i行第j列的运算单元对A矩阵第i行数据和B矩阵第j列数据执行点乘运算,并将其运算结果与C矩阵第i行第j列的元素数据cij相加,作为结果矩阵D的第i行第j列的元素数据。
在卷积运算工作模式下,运算单元阵列中的单个运算单元用于对对应卷积核的单组卷积核数据和卷积对象在单个卷积滑窗内的单组待卷积数据执行点乘运算,同列运算单元对应相同卷积核,不同列运算单元对应不同卷积核,单组卷积核数据包括相同位置上多个通道的卷积核数据,单组待卷积数据包括相同位置上多个通道的待卷积数据。
本公开实施例中,卷积对象可以是图像,也可以是其他格式的信号,本公开对此不作限定。
卷积运算的运算原理如下:用卷积核在卷积对象上按照特定步长移动,每一次移动都进行一次对应点乘积并将全部乘积求和,作为此位置的卷积结果。当卷积对象有多个通道(channel)时,卷积核需要拥有相同的通道数,每个卷积核通道与卷积对象对应通道进行卷积,将所有通道的卷积结果按位相加得到最终的一个通道特征图,即多通道卷积。当用多个不同的卷积核对输入图像进行卷积,将对应产生包含多个通道的特征图。
基于上述运算原理,以利用多个Hw×Ww×C的卷积核对Hi×Wi×C的图像进行卷积运算为例。每个卷积核均按照预定顺序,以1为移动步长在图像上移动遍历。卷积核与图像重合部分称为卷积滑窗,卷积滑窗的尺寸为Hw×Ww×C,卷积滑窗随卷积核移动。若使用上述M×N的运算单元阵列实现该卷积运算,假设N取值与卷积核数量相同,M取值与Hw×Ww的取值相同,那么:第i行第j列运算单元对第j个卷积核的第i组卷积核数据和图像在单个卷积滑窗内的第i组待卷积数据执行点乘运算。至于单个滑窗的卷积运算通过多少个周期完成,以及单个滑窗的卷积运算在各个运算单元上的执行时序,多个滑窗的卷积运算在各个运算单元上的执行时序,本公开不做限定。
本公开实施例中,待运算的数据可以通过多种传输方式送达运算单元,本公开对此不做限定。作为举例而非限定,可以通过数据总线的方式进行数据传输,以提高数据传输效率。更进一步的,本公开实施例提供的运算电路可以包括多条行广播总线,多条列广播总线。相应的,在矩阵运算工作模式下,第一矩阵的单行数据通过对应的行广播总线传输(例如,通过第i条行广播总线传输A矩阵的第i行数据),第二矩阵的单列数据通过对应的列广播总线传输(例如,通过第j条列广播总线传输B矩阵的第j列数据)。相应的,在卷积运算工作模式下,单个卷积滑窗内的各组待卷积数据分别通过对应的行广播总线传输,卷积核的各组卷积核数据则可以通过对应的列广播总线传输。
在卷积运算工作模式下,可以采用权重固定(weight station)方式,即在对卷积对象的卷积运算过程中,卷积核数据仅需要读出并加载一次。当然,也可以采用其他数据流方式,本公开对此不做限定。
如上所述,本公开不对待运算的数据的传输方式进行限定,也不对运算单元的执行时序进行限定。
对于矩阵运算,第一矩阵的行数据和第二矩阵的列数据可以通过广播的方式传输,例如,第一矩阵第i行数据通过第i条行广播总线广播,第i行的各个运算单元通过第i条行广播总线获取第i行数据。以广播的方式传输数据,可以在一个时钟周期内完成数据的送达,数据传输效率较高。相应的,对于矩阵运算,运算单元阵列可以在一个时钟周期内完成运算,运算效率高。并且,每个运算单元的运算结果即为结果矩阵D的一个元素数据,不需要再进行额外的处理。
对于卷积运算,每个运算单元使用的卷积核数据不同,既可以采用广播方式传输卷积核数据,也可以采用点播方式传输卷积核数据,还可以采用其他方式传输卷积核数据。
以广播方式传输卷积核数据为例,第j个卷积核的卷积核数据通过第j条列广播总线广播,第i行第j列运算单元从广播的数据中识别并获取第j个卷积核的第i组卷积核数据。该运算单元识别目标数据的方式有多种,例如可以通过数据标识识别(例如坐标信息)目标数据。另外,卷积核数据可以预先加载到各个运算单元,也可以在运算过程中实时加载到各个运算单元。
如果卷积核数据预先加载到各个运算单元,例如采用权重固定模式,那么,每条列广播总线上可以设置有多个第三数据传输模块,每个运算单元对应一个第三数据传输模块。第三数据传输模块包括透传通道和卷积核暂存通道,第三数据传输模块根据指示开启透传通道或者卷积核暂存通道。通过第三数据传输模块的卷积核暂存通道暂存对应的运算单元使用的卷积核数据。
对于卷积运算,同一行运算单元需要对同一卷积滑窗内相同的待卷积数据进行运算,同一列运算单元需要对同一卷积滑窗内不同组待卷积数据进行运算,相应的可以采用广播、流水、脉动等方式进行待卷积数据的传输。
如果采用广播方式传输待卷积数据,可以通过在每个时钟周期广播一个卷积滑窗内的待卷积数据,具体的,在一个时钟周期内,通过第i条行广播总线广播卷积滑窗内的第i组待卷积数据;相应的,运算单元阵列可以在一个时钟周期内完成一组卷积核数据和一组待卷积数据的点乘运算,一个卷积核对应的运算结果相加作为该卷积核在单个卷积滑窗位置处的卷积结果。为了实现运算结果的相加,可以将一个卷积核对应的运算结果均输入到加法器相加,也可以在对应的运算单元(例如同列运算单元)之间累加。对于广播方式而言,将一个卷积核对应的运算结果均输入到加法器相加的处理效率更高。相应的,作为兼容矩阵运算和卷积运算的运算电路,对于运算单元的输出,如果是矩阵运算结果,则可以直接输出,对于卷积运算结果,则需要与对应运算单元的运算结果相加后输出。本公开实施例不对实现这种兼容的具体硬件形式进行限定。作为举例而非限定,一方面,本公开实施例还可以包括多个运算结果处理单元,运算结果处理单元包括透传通道和加法通道。对于矩阵运算,同列运算单元的运算结果通过对应的运算结果处理单元的透传通道输出。对于卷积运算,如果运算结果已经在同列运算单元之间累加,那么,同列最后一个运算单元的运算结果通过对应的运算结果处理单元的透传通道输出;如果运算结果未在同列运算单元之间累加,那么,同列运算单元的运算结果通过加法通道相加后输出。另一方面,目标运算单元的输出端还可以包括第二数据传输模块,第二数据传输模块包括透传通道和流水暂存通道。对于矩阵运算,第二数据传输模块开启透传通道,透传矩阵运算结果。对于卷积运算,如果运算结果需要在同列运算单元之间累加,那么,第二数据传输模块开启流水暂存通道,以便将运算结果输出至同列下一个运算单元的加法输入端;如果运算结果不需要在同列运算单元之间累加,那么,第二数据传输模块开启透传通道,透传卷积运算结果,同列运算单元的卷积运算结果统一相加处理。
其中,目标运算单元至少包括最后一行之外的各个运算单元。
如果采用流水方式传输待卷积数据,那么,一个卷积滑窗内的待卷积数据通过多个时钟周期送达各个运算单元,可以在每个时钟周期向第一列运算单元发送不同卷积滑窗内的待卷积数据。相应的,为了实现流水方式传输待卷积数据,并兼容广播数据传输方式,可以在每条行广播总线上设置多个第一数据传输模块,第一列之外的各个运算单元分别对应一个第一数据传输模块,第一数据传输模块包括透传通道和流水暂存通道。对于矩阵运算,第一数据传输模块开启透传通道。对于卷积运算,第一数据传输模块开启流水暂存通道,以便单个卷积滑窗内的各组卷积数据分别以流水方式依次送达同行各个运算单元。由于同列各个运算单元在同一时钟周期内接收到同一卷积滑窗内的待卷积数据,因此,可以参照上述实现方式,将一个卷积核对应的运算结果均输入到加法器(例如运算结果处理单元的加法通道)相加。当然,也可以参照上述实现方式,配合第二数据传输模块开启流水暂存通道,在对应的运算单元之间累加卷积运算结果。
如果采用脉动方式传输待卷积数据,一个卷积滑窗内的待卷积数据需要通过多个时钟周期送达各个运算单元,可以在每个时钟周期向第一列运算单元发送不同卷积滑窗内的待卷积数据。相应的,为了实现脉动方式传输待卷积数据,并兼容广播数据传输方式,可采用上述第一数据传输模块、第二数据传输模块及运算结果处理单元之间的灵活组合来实现。对于卷积运算,第一数据传输模块开启流水暂存通道,以便各个卷积滑窗内的各组卷积数据分别以脉动方式依次送达同行各个运算单元。在脉动传输模式下,由于同列各个运算单元无法在同一时钟周期内接收到同一卷积滑窗内的待卷积数据,因此,运算结果需要在同列运算单元之间累加,那么,第二数据传输模块开启流水暂存通道,以便本运算单元的运算结果通过流水暂存通道进入同列下一个运算单元的加法输入端。相应的,如果有运算结果处理单元,运算结果处理单元开启透传通道。
在上述任一实现方式的基础上,本公开实施例提供的运算电路还可以包括译码单元,用于根据运算指示确定工作模式,并生成通道控制信息,该工作模式包括矩阵运算工作模式和卷积运算工作模式。上述通道控制信息可以指示第一数据传输模块开启透传通道或者流水暂存通道。该通道控制信息还可以指示第二数据传输模块开启透传通道或者流水暂存通道。该通道控制信息还可以指示运算结果处理单元开启透传通道或加法通道。
在上述任一实现方式的基础上,本公开实施例提供的运算电路还可以包括以下至少一个单元:输入缓存单元、矩阵取数与送数单元、卷积取数与送数单元。
输入缓存单元用于缓存待进行矩阵运算的矩阵的数据,或者待进行卷积运算的卷积对象(如图像(image)、中间层激活数据(activation))、卷积核(kernel)或权重(weight)、偏执(bias)等数据。
矩阵取数与送数单元用于在矩阵运算工作模式下,从输入缓存单元读取待进行矩阵运算的矩阵的数据送入运算单元阵列。
卷积取数与送数单元用于在卷积运算工作模式下,按照卷积运算数据格式需求从输入缓存单元读取数据送入运算单元阵列。
在上述任一运算电路实施例的基础上,运算电路还可以包括累加处理单元。在矩阵运算工作模式下,累加处理单元用于对一笔矩阵运算在各个运算单元的运算结果分别累加,一笔矩阵运算包括第一矩阵和第二矩阵的矩阵乘法运算。在卷积运算工作模式下,累加处理单元用于对卷积对象的卷积运算在同列运算单元的运算结果分别累加。受限于运算单元阵列的尺寸,当无法一次性完成矩阵运算或者卷积运算时,可以通过多次运算并累加运算结果实现大尺寸运算对象的运算。
本公开实施例中,无论是矩阵运算还是卷积运算,均可能存在0值数据。由于0值数据并不需要参与运算,因此可以通过压缩丢弃0值数据对的方式进一步提高运算效率。那么,本公开实施例提供的运算电路还可以包括多个压缩缓存单元,每个运算单元均对应一个压缩缓存单元。压缩缓存单元用于缓存对应的运算单元需要运算的两组数据(如第一矩阵的行数据和第二矩阵的列数据,或者一组卷积核数据和一组待卷积数据),丢弃其中的0值数据对以实现数据压缩,向对应的运算单元输出压缩后数据。相应的,总线上的数据先进入压缩缓存单元,再通过压缩缓存单元进入对应的运算单元。
本公开实施例中,压缩缓存单元丢弃0值数据对的实现方式有多种。可以采用删除0值数据对的方式实现丢弃0值数据对,也可以采用不向运算单元发送0值数据对的方式实现丢弃0值数据对。如果不向运算单元发送0值数据对,更具体的,可以在查找到0值数据对后,对其进行标记,在向运算单元发送数据对时,不发送标记为0值的数据对。也可以同步查找0值数据对及向运算单元发送压缩后的数据对,即按顺序遍历数据对,每遍历一个数据对,判断其是否0值数据对,如果不是0值,则将数据对发送给运算单元,否则不发送。
无论采用何种方式丢弃0值数据对,压缩缓存单元查找0值数据对的实现方式可以有多种。一种可行的实现方式中,压缩缓存单元根据第一位图查找0值数据对,其中,第一位图用于标记数据对的取值是否为0。另一种可行的实现方式中,压缩缓存单元根据第二位图查找0值数据,0值数据对应的数据对为0值数据对,其中,第二位图用于参与运算的一组数据(如第一矩阵的一行数据、第二矩阵的一列数据、一组卷积核数据或者一组待卷积数据)中的各个数据是否为0。又一种可行的实现方式中,压缩缓存单元直接识别缓存的一组数据中是否存在0值数据,0值数据对应的数据对即为0值数据对。
本公开实施例中,一笔运算在某个运算单元的运算结束,该运算单元和对应的压缩缓存单元的时钟关闭,直至下一笔运算开始,从而进一步降低功耗。其中,一笔运算是指第一矩阵与第二矩阵的乘法运算,或者卷积对象的卷积运算。
本公开的另一个实施例提供一种运算电路,该运算电路包括尺寸相同的至少两个运算单元阵列,在矩阵运算工作模式下,每个运算单元阵列中的单个运算单元用于对第一子矩阵的单行数据和第二子矩阵的单列数据执行点乘运算;在卷积运算工作模式下,每个运算单元阵列中的单个运算单元用于对对应子卷积核的单组卷积核数据和子卷积对象在单个卷积滑窗内的单组待卷积数据执行点乘运算,同列运算单元对应相同子卷积核,不同列运算单元对应不同子卷积核,单组卷积核数据包括相同位置上多个通道的卷积核数据,单组待卷积数据包括相同位置上多个通道的待卷积数据。上述至少两个运算单元阵列通过连接单元连接,以实现第一矩阵与第二矩阵的矩阵乘法,或者卷积核对卷积对象的卷积运算。第一矩阵在行方向上被划分为若干第一子矩阵,第二矩阵在列方向上被划分为若干第二子矩阵。卷积核在通道方向上被划分为若干子卷积核,卷积对象在通道方向上被划分为若干所述子卷积对象。
本公开实施例中,运算单元阵列的尺寸相同,是指运算单元阵列包括相同数量(行数及列数相同)的运算单元。不同阵列中的运算单元的运算能力可以不同。例如,一个阵列中的运算单元可以在一个时钟周期内完成8对数据的点乘运算,另一个阵列中的运算单元可以在一个时钟周期内完成16对数据的点乘运算。
该实施例的具体实现方式可以参照上述单一运算单元阵列的运算电路实现方式,重复之处不再赘述。
本公开实施例中,各个运算单元阵列可以复用广播总线(行广播总线和/或列广播总线),例如第i条行广播总线用于向各个运算单元阵列的第i行运算单元传输数据。各个运算单元阵列也可以使用独立的广播总线,例如每个运算单元阵列都有各自独立的行广播总线和列广播总线。
进一步的,包括至少两个运算单元阵列的运算电路还可以包括累加处理单元。在矩阵运算工作模式下,累加处理单元用于对一笔矩阵运算在各个运算单元的运算结果分别累加,一笔矩阵运算包括第一矩阵和第二矩阵的矩阵乘法运算。在卷积运算工作模式下,累加处理单元用于对卷积对象的卷积运算在同列运算单元的运算结果分别累加。通过累加处理单元,可以实现不同运算单元矩阵的运算结果的累加。
本公开的另一个实施例提供一种运算电路,包括若干运算单元阵列,多条行广播总线和多条列广播总线。行广播总线用于传输由对应行运算单元进行运算的数据,每条行广播总线上设置有多个第一数据传输模块,第一列之外的各个运算单元分别对应一个第一数据传输模块,第一数据传输模块包括透传通道和流水暂存通道,第一数据传输模块根据指示开启透传通道或者流水暂存通道。列广播总线用于传输由对应列运算单元进行运算的数据。每个运算单元用于对一组数据对执行点乘运算,目标运算单元的输出端设置有第二数据传输模块,第二数据传输模块包括透传通道和流水暂存通道,第二数据传输模块根据指示开启透传通道或者流水暂存通道,并通过透传通道将运算结果输出至对应的运算结果处理单元,通过流水暂存通道将运算结果输出至同列下一个运算单元的加法输入端。
在此基础上,可选的,运算电路还可以包括多个运算结果处理单元。运算结果处理单元包括透传通道和加法通道,运算结果处理单元根据指示开启透传通道或加法通道,并通过透传通道透传输出对应列运算单元的运算结果,通过加法通道将对应列运算单元的运算结果相加后输出。
在该实施例中,可选的,每条列广播总线上设置有多个第三数据传输模块,每个运算单元对应一个第三数据传输模块。第三数据传输模块包括透传通道和卷积核暂存通道,第三数据传输模块根据指示开启透传通道或者卷积核暂存通道。通过第三数据传输模块的卷积核暂存通道暂存对应的运算单元使用的卷积核数据。
本公开实施例提供的运算电路可兼容矩阵运算与卷积运算。通过各个通道选择配合,不仅可以在矩阵运算和卷积运算之间进行切换,对于同一种运算,也可以灵活实现多种运算方式。
其中,对于矩阵运算,可以参照前述实施例的描述,通过广播方式传输数据,进而实现矩阵运算,也可以通过流水传输方式、脉动传输方式等方式实现矩阵运算,在本公开实施例已披露内容的基础上,本领域技术人员不需要付出创造性劳动即可获知具体实现方式,此处不再赘述。
对于卷积运算,可以参照前述实施例的描述,通过广播、流水、脉动等方式传输数据,进而实现卷积运算。还可以采用其他方式实现卷积运算,在本公开实施例已披露内容的基础上,本领域技术人员不需要付出创造性劳动即可获知具体实现方式,此处不再赘述。
本公开的另一个实施例提供一种运算电路,如图1所示,该运算电路包括输入缓存单元、译码单元、矩阵取数与送数单元、卷积取数与送数单元和三维乘加网络和累加处理单元,三维乘加网络包括若干三维乘加阵列(即运算单元阵列)。该运算电路可支持流水、脉动、广播三种数据传输及计算方式,同时可以通过将多个三维乘加阵列连接(空间维度)和/或累加缓存(时间维度)的方式,灵活支持对各种数据类型、各尺寸矩阵乘/乘加运算,以及各种数据类型、各尺寸卷积核的卷积运算。
输入缓存单元用于缓存待进行矩阵运算的矩阵的数据。假设需要使用图1所示的运算电路完成A矩阵与B矩阵的矩阵乘运算,那么,A矩阵和B矩阵将被缓存到输入缓存单元。输入缓存单元还用于缓存待进行卷积运算的卷积对象(如图像(image)、中间层激活数据(activation))、卷积核(kernel)或权重(weight)、偏置(bias)等数据。假设需要使用图1所示的运算电路完成若干卷积核对卷积对象的卷积运算,那么,卷积核、卷积对象和偏置数据将被缓存到输入缓存单元。
译码单元用于根据接收到的运算指示确定工作模式,并生成控制信息(包括取数与送数控制信息,通道控制信息)。其中,工作模式包括矩阵运算工作模式和卷积运算工作模式。其中,运算指示可以是运算命令(如ASIC使用的命令),也可以是运算指令(如SIMD处理器指令)。
如果译码单元接收到矩阵运算命令/指令,指示运算电路执行矩阵乘运算或矩阵乘加运算,译码单元基于该矩阵运算命令/指令生成取数与送数控制信息(例如,包括矩阵数据地址、矩阵尺寸等信息)、运算控制信息(例如,包括矩阵数据类型,如FP32、FP16,矩阵运算类型,如矩阵乘、矩阵乘加)和累加控制信息,将取数与送数控制信息发送给矩阵取数与送数单元,以指示矩阵取数与送数单元读取矩阵运算命令/指令对应的数据送入三维乘加网络,将运算控制信息发送给三维乘加网络,以指示三维乘加网络执行矩阵运算,将累加控制信息发送给累加处理单元。其中,各个控制信息可以但不仅限于发送至对应的寄存器,以便相应的单元从对应的寄存器中读取控制信息并执行相应的操作。本实施例中,运算控制信息即通道控制信息。
如果译码单元接收到卷积运算命令/指令,指示运算电路执行卷积运算,译码单元基于该卷积运算命令/指令生成取数与送数控制信息(例如,包括卷积核数据地址、卷积核尺寸、卷积对象数据地址、卷积对象尺寸、偏执数据地址等信息)、运算控制信息(例如,包括数据类型,如FP32、FP16,运算类型,如卷积运算)和累加控制信息,将取数与送数控制信息发送给卷积取数与送数单元,以指示卷积取数与送数单元读取卷积运算命令/指令对应的数据送入三维乘加网络,将运算控制信息发送给三维乘加网络,以指示三维乘加网络执行卷积运算,将累加控制信息发送给累加处理单元。其中,各个控制信息可以但不仅限于发送至对应的寄存器,以便相应的单元从对应的寄存器中读取控制信息并执行相应的操作。本实施例中,运算控制信息即通道控制信息。
矩阵取数与送数单元用于根据上述取数与送数控制信息,从输入缓存单元读取待进行矩阵运算的矩阵的数据送入广播总线。
卷积取数与送数单元用于根据上述取数与送数控制信息,按照卷积计算数据格式需求从输入缓存单元读取待进行卷积运算的数据送入广播总线。
三维乘加网络根据运算控制信息控制各个数据传输模块(第一数据传输模块和第二数据传输模块)开启对应的通道,并控制运算单元对输入数据进行运算。三维乘加网络包括若干三维乘加阵列。如果三维乘加网络包括两个甚至更多的三维乘加阵列,其中每个三维乘加阵列可独立工作,另外,两个甚至更多的三维乘加阵列还可以通过连接单元拼接为更大的三维乘加阵列,从而实现对大尺寸运算对象的运算。
单个三维乘加阵列包括M×N个DOT单元(即运算单元)、M条行广播总线、N条列广播总线、M×N条输出数据总线(输出数据总线作为对应的DOT单元的输出端)以及N个Add Mux(加法多路选择器,即上述运算结果处理单元)。每条行广播总线上设置有N-1个PB(PipeBuffer,通道缓存,即第一数据传输模块),最后一行外的其他DOT单元的输出数据总线上设置有PB(即第二数据传输模块),每条列广播总线上设置有N个KB(Kernel Buffer,卷积核缓存,即第三数据传输模块)。以4×4尺寸的三维乘加阵列为例,如图2所示,单个三维乘加阵列包括16个DOT单元、4条行广播总线、4条列广播总线、16条输出数据总线,以及4个AddMux。
本公开实施例中,三维乘加阵列支持多种数据类型的运算,可以支持的数据类型包括但不仅限于:FP64、FP32、TF32、FP16、BF16、FP8、INT8等等。
一个DOT单元用于执行K个数据对(如K对浮点数,或K对整数)的点乘运算。本公开不对DOT单元的具体结构及工作原理进行限定,作为举例而非限定,可以采用图3所示的DOT单元。图3所示的DOT单元为DOT8,执行一组数据(例如A矩阵第i行数据,或者卷积核的一组卷积核数据)与另一组数据(例如B矩阵第j列数据或者卷积对象的一组待卷积数据)的点乘运算,并可将点乘运算结果与另一个元素数据(C矩阵的元素数据cij)进行加法运算。本公开实施例中,需要进行点乘的两个数据构成一个数据对。例如,ai0与b0j为一个数据对。
采用图3所示的DOT单元实现的图2所示的三维乘加阵列等效于128个MAC(multiply-accumulate)单元,每个时钟周期256个操作数。
本实施例中,PB具有透传通道和流水暂存通道。其结构可以但不仅限于如图4所示,通过多路选择器mux控制透传通道或者流水暂存通道的开启。如果透传通道开启,则数据从输入端经过mux后输出,如果流水暂存通道开启,则数据从输入端进入reg,再经过mux输出。
本实施例中,KB具有透传通道和kernel暂存通道。其结构可以但不仅限于如图4所示,通过多路选择器mux控制透传通道或者kernel暂存通道的开启。如果透传通道开启,则数据从输入端经过mux后输出,如果kernel暂存通道开启,则数据从输入端进入reg,再经过mux输出。
本实施例中,add mux具有透传通道和加法通道。其结构可以但不仅限于如图5所示,通过多路选择器mux控制透传通道或者加法通道的开启。如果透传通道开启,则各路数据从输入端经过mux后从对应的输出端输出。如果加法通道开启,则各路数据从输入端进入加法器add进行加法运算,输出结果经过mux后通过指定的输出端输出。实际应用中,add的输出仍然可以是多路,但加法结果从指定输出端输出(如图5中add的实线输出端)。
本实施例中,连接单元的结构可以但不仅限于如图6所示,连接单元也包括透传通道和加法通道。对于需要独立工作的运算单元阵列,通过其对应的多路选择器mux,该运算单元阵列的各路输入直接通过对应的多路选择器mux输出。对于需要拼接的运算单元阵列,这些运算单元阵列的各路输出分别进入加法器add,加法器将这些运算单元阵列中的对应输出(例如这些运算单元阵列的第一路输出为对应输出)的运算结果相加后分别输出。
本实施例中,累加处理单元的结构可以但不仅限于如图7所示,连接单元的各路输出进入累加处理单元的加法器add,缓存模块中的多路对应中间运算结果同时输入加法器add,加法器add对对应的输入进行加法运算后分别输出至缓存模块中暂存。具体的,当要进行多个矩阵乘结果累加时,从其缓存模块中同时读取多路(路数等于一列的DOT单元数)前矩阵乘结果与本次矩阵乘结果进行累加,并将累加结果写回缓存模块。当要进行部分卷积和的累加时,从其缓存模块中读取一路部分卷积和与本次卷积和运算结果进行累加,并将累加结果写回缓存模块。其中,缓存模块可以是buffer,也可以是FIFO。
结合图1至图7,以三维乘加网络仅包括一个4×4×8的三维乘加阵列,实现4×8的A矩阵和8×4的B矩阵的矩阵乘法为例进行说明。
译码单元接收到矩阵乘命令,基于该矩阵乘命令生成取数与送数控制信息、运算控制信息和累加控制信息,将取数与送数控制信息发送给矩阵取数与送数单元,将运算控制信息发送给三维乘加阵列,将累加控制信息发送给累加处理单元。
矩阵取数与送数单元接收到取数与送数控制信息后,从输入缓存单元中以行为单位读取A矩阵的数据并分别通过行广播总线发送给三维乘加阵列中的DOT单元,并从输入缓存单元中以列为单位读取B矩阵的数据并分别通过列广播总线发送给三维乘加阵列中的DOT单元。其中,A矩阵的第i行数据通过第i条行广播总线发送给第i行DOT单元;B矩阵的第j列数据通过第j条列广播总线发送给第j列DOT单元。为提高处理效率,矩阵取数与送数单元同时读取并发送A矩阵的数据和B矩阵的数据。
三维乘加阵列接收到上述运算控制信息后,将PB切换至透传通道,将运算结果处理单元切换至透传通道。相应的,A矩阵的各行数据以广播方式在各条行广播总线上传输,B矩阵的各列数据以广播方式在各条列广播总线上传输。DOT单元对接收到A矩阵的一行数据和B矩阵的一列数据进行点乘运算,运算结果通过数据输出总线输出至本列运算单元对应的运算结果处理单元,经过运算结果处理单元的透传通道输出。每个DOT单元输出的运算结果是结果矩阵D的一个元素数据。
由于仅有一个三维乘加阵列,可以不设置连接单元,运算结果处理单元输出的数据直接进入累加处理单元。当然,也可以设置连接单元,那么,三维乘加阵列将连接单元切换至透传通道,运算结果处理单元输出的数据经过连接单元的透传通道进入累加处理单元。连接单元也可以工作在加法通道,运算结果处理单元输出的数据经过连接单元的加法通道(经指定的mux)进入累加处理单元。
累加处理单元接收到累加控制信息后,将输入的运算结果暂存至缓存模块的指定位置。
通过本实施例提供的运算电路,可以在一个时钟周期实现A矩阵与B矩阵的乘法运算。
如果矩阵在K方向上的尺寸大于8,可沿着K方向对A矩阵和B矩阵进行拆分,每次处理拆分后的一对子矩阵的乘法运算,中间运算结果在累加处理模块累加,从而得到A矩阵和B矩阵的矩阵乘结果。
如果以上对采用一个4×4×8的三维乘加阵列实现4×8的A矩阵和8×4的B矩阵的矩阵乘法的具体工作方式进行了说明。如果要利用其实现A矩阵×B矩阵+C矩阵的乘加运算,其乘法部分可参照上述实现方式,此处不再赘述,其加法部分实现方式如下:
矩阵取数与送数单元可以通过行广播总线或列广播总线将C矩阵的元素数据发送给三维乘加阵列中的DOT单元,而各个DOT单元仅接收目标元素数据,例如DOT_00仅接收c00。矩阵取数与送数单元还可以通过点对点通讯方式向各个DOT单元发送对应的C矩阵的元素数据。
通过连接单元可将多个三维乘加阵列的拼接为更大的三维乘加阵列,从而实现对大尺寸矩阵乘和大尺寸卷积核的卷积实现。结合图1至图7,以三维乘加网络包含两个4×4×8的三维乘加阵列,实现4×16的A矩阵和16×4的B矩阵的矩阵乘法为例进行说明。
两个三维乘加阵列通过连接单元连接,以实现两个三维乘加阵列的运算结果相加。具体的,连接单元包括4个加法器,每个加法器用于实现两个三维乘加阵列中对应DOT单元运算结果的相加。例如,两个三维乘加阵列的DOT_00的数据输出总线均与加法器_00的输入端连接,加法器_00将两个三维乘加阵列的DOT_00的运算结果进行加法运算后经对应的多路选择器mux_00输出至累加处理单元,作为运算结果D矩阵元素数据d00。
累加处理单元接收到累加控制信息后,将输入的运算结果暂存至缓存模块的指定位置。
其中,两个三维乘加阵列可以共用行广播总线和列广播总线,也可以采用独立的行广播总线和列广播总线。
在该实施例中,译码单元的工作方式可参照上述实施例的描述,此处不再赘述。矩阵取数与送数单元接收到取数与送数控制信息后,从输入缓存单元中以行为单位读取A矩阵的数据并分别通过行广播总线发送给三维乘加网络中的DOT单元,并从输入缓存单元中以列为单位读取B矩阵的数据并分别通过列广播总线发送给三维乘加网络中的DOT单元。如果两个三维乘加阵列共用行广播总线和列广播总线,那么,各个DOT单元仅接收对应的数据,例如,第一个三维乘加阵列的DOT_00,其仅接收A矩阵第0行前8个元素数据,以及B矩阵第0列前8个元素数据,第二个三维乘加阵列的DOT_00,其仅接收A矩阵第0行后8个元素数据,以及B矩阵第0列后8个元素数据。如果两个三维乘加阵列采用独立的行广播总线和列广播总线,那么,矩阵取数与送数单元分别通过两个三维乘加阵列的行广播总线和列广播总线发送对应的矩阵元素数据,例如,通过第一个三维乘加阵列的行广播总线向三维乘加阵列发送A矩阵各行的前8个元素数据,通过第二个三维乘加阵列的行广播总线向三维乘加阵列发送A矩阵各行的后8个元素数据。
两个三维乘加阵列的具体工作方式可以参照上述实施例的描述,此处不再赘述。
值得注意的是,本实施例仅举例了一种由两个三维乘加阵列通过连接单元拼接实现一种尺寸的矩阵乘。实际上,本公开实施例提供的运算电路可以支持各种尺寸矩阵乘法、卷积进行计算。
结合图1至图7,以三维乘加网络包含4×4×8的三维乘加阵列实现卷积运算为例进行说明。本实施例中,有4个Hw×Ww×C的卷积核,卷积对象的尺寸为Hi×Wi×C,移动步长为1,Hw=2,Ww=2,C=8。其中,卷积对象的一个2×2×8块与一个卷积核的对应点相乘后的结果相加为卷积结果的一个点。
译码单元接收到卷积命令,基于该卷积命令生成取数与送数控制信息、运算控制信息和累加控制信息,将取数与送数控制信息发送给卷积取数与送数单元,将运算控制信息发送给三维乘加网络,将累加控制信息发送给累加处理单元。
卷积取数与送数单元接收到取数与送数控制信息后,从输入缓存单元中依次读出4个卷积核分别写入三维乘加网络中的一个三维乘加阵列,本实施例中,卷积运算采用权重固定模式,即卷积核只需要读出并加载一次。具体的,每个卷积核存入一列DOT单元(更具体的,可以通过KB暂存DOT单元使用的卷积核数据),如卷积核kernel_0存入DOT_i0(或暂存在DOT_i0对应的KB)。一列DOT单元分别存入一个卷积核的一组卷积核数据,如卷积核kernel_0在(0,0)位置的8个数据存入DOT_00。本实施例中,4列DOT单元可实现4个卷积核的并行计算。
完成卷积核的取数、送数后,卷积取数与送数单元按照卷积滑窗的顺序,依次从输入缓存单元读取各卷积滑窗内的待卷积数据并送入上述三维乘加阵列。如图8所示,第一次(step0)读取卷积对象在卷积滑窗内的4组待卷积数据(C0,0,C0,1,C1,0,C1,1),第二次(step1)读取卷积对象在卷积滑窗内的4组待卷积数据(C0,1,C0,2,C1,1,C1,2),以此类推。其中,每组待卷积数据C包括卷积对象在C方向(即通道方向)的8个点。
三维乘加阵列支持以流水、脉动、广播三种方式实现数据的传输和计算。
如果采用流水方式实现数据传输与计算,如图9所示,卷积取数与送数单元每个时钟周期都向三维乘加阵列的行广播总线送入一个卷积滑窗的待卷积数据。具体的,将一个卷积滑窗内的4组待卷积数据分别送入4条行广播总线。
三维乘加阵列接收到上述运算控制信息后,将行广播总线上的PB切换至流水暂存通道,将数据输出总线上的PD切换至透传通道,将运算结果处理单元切换至加法通道。相应的,行广播总线上的待卷积数据首先送入第一列DOT单元,之后,待卷积数据以流水的形式在每列DOT单元之间依次传输。DOT单元对接收到一组待卷积数据和卷积核的一组卷积核数据进行点乘运算,运算结果通过数据输出总线输出至本列运算单元对应的运算结果处理单元,经过运算结果处理单元的加法通道相加输出。每个时钟周期每一列的4个DOT单元的运算结果在对应的运算结果处理单元处相加得到对应卷积滑窗内的卷积运算结果。
如果采用脉动方式实现数据传输与计算,如图10所示,卷积取数与送数单元每个时钟周期以脉动方式向三维乘加阵列的行广播总线送入若干卷积滑窗的待卷积数据。其中,一个卷积滑窗内的4组待卷积数据分别送入4条行广播总线。具体的,在第一个时钟周期,向第一条行广播总线送入step0对应的卷积滑窗内的C0,0;在第二个时钟周期,向第一条行广播总线送入step1对应的卷积滑窗内的C0,1,向第二条行广播总线送入step0对应的卷积滑窗内的C0,1;在第三个时钟周期,向第一条行广播总线送入step2对应的卷积滑窗内的C0,2,向第二条行广播总线送入step1对应的卷积滑窗内的C0,2,向第三条行广播总线送入step0对应的卷积滑窗内的C1,0,以此类推。
三维乘加阵列接收到上述运算控制信息后,将PB切换至流水暂存通道,将运算结果处理单元切换至透传通道。相应的,行广播总线上的待卷积数据首先送入第一列DOT单元,之后,待卷积数据以流水的形式在每列DOT单元之间依次传输。DOT单元对接收到一组待卷积数据和卷积核的一组卷积核数据进行点乘运算,运算结果通过数据输出总线输出至本列的下一个运算单元的加法输入端,每列最后一个运算单元的运算结果通过数据输出总线输出至对应的运算结果处理单元,经过运算结果处理单元的透传通道输出。每一列的4个DOT单元的运算结果累加得到对应卷积滑窗内的卷积运算结果。每个卷积滑窗内的卷积运算结果需要4个时钟周期来完成计算。
如果采用广播方式实现数据传输与计算,如图11所示,卷积取数与送数单元每个时钟周期都向三维乘加阵列的行广播总线送入一个卷积滑窗的待卷积数据。具体的,将一个卷积滑窗内的4组待卷积数据分别送入4条行广播总线。
三维乘加阵列接收到上述运算控制信息后,将PB切换至透传通道,将运算结果处理单元切换至加法通道。相应的,行广播总线上的待卷积数据以广播方式送入各个DOT单元。DOT单元对接收到一组待卷积数据和卷积核的一组卷积核数据进行点乘运算,运算结果通过数据输出总线输出至本列运算单元对应的运算结果处理单元,经过运算结果处理单元的加法通道相加输出。每个时钟周期每一列的4个DOT单元的运算结果在对应的运算结果处理单元处相加得到对应卷积滑窗内的卷积运算结果。一个时钟周期可以并行处理4个卷积核的运算。
无论采用流水、脉动还是广播方式,如果三维乘加网络仅有一个三维乘加阵列,可以不设置连接单元,运算结果处理单元输出的数据直接进入累加处理单元。当然,也可以设置连接单元,那么,三维乘加阵列将连接单元切换至透传通道,运算结果处理单元输出的数据经过连接单元的透传通道进入累加处理单元。连接单元也可以工作在加法通道,运算结果处理单元输出的数据经过连接单元的加法通道(经指定的mux)进入累加处理单元。
如果三维乘加网络有多个三维乘加阵列,可以选择指定的三维乘加阵列进行卷积运算。
累加处理单元接收到累加控制信息后,将输入的运算结果暂存至缓存模块的指定位置。
如果卷积对象在C方向上的尺寸大于8,可沿着C方向将卷积对象拆分为多个块,分次处理,中间运算结果在累加处理模块累加,从而得到卷积对象的卷积运算结果。
结合图1至图7,以三维乘加网络包含4×4×8的三维乘加阵列实现卷积运算为例进行说明。本实施例中,有4个Hw×Ww×C的卷积核,卷积对象的尺寸为Hi×Wi×C,移动步长为1,Hw=4,Ww=4,C=8。其中,卷积对象的一个4×4×8块与一个卷积核的对应点相乘后的结果相加为卷积结果的一个点。
一个卷积核有4×4=16组卷积核数据(每组卷积核数据包括C方向上的8个点)。由于一个三维乘加阵列一列只有4个DOT单元,每个DOT单元一次只能存放1组卷积核数据,故一个三维乘加阵列一次只能存放1/4个卷积核,也只能计算一个卷积核的1/4。结合累加处理单元,参见图12,通过4轮累加计算(每次选择1/4的卷积核与对应的卷积对象进行卷积)最终实现完整的卷积计算。
每一轮的累加处理单元使用方式为:当要进行部分卷积和的累加时,从其缓存模块中读取一路部分卷积结果与本次计算对应卷积结果进行累加,并将累加结果写回缓存模块。
本实施例中,译码单元、卷积取数与送数单元和三维乘加阵列的工作方式可参照上述实施例的描述,此处不再赘述。
在本实施例中,受限于尺寸大小,当三维乘加网络中一个三维乘加阵列无法一次性完成一个卷积核的卷积计算时,使用累加处理单元进行多个部分卷积和的累加。
值得注意的是,本实施例仅以一种尺寸的三维乘加阵列通过结合累加处理单元实现一种尺寸的卷积计算为例进行说明,实际上,本公开实施例提供的运算电路可以支持各种尺寸三维乘加阵列对各种尺寸卷积、矩阵乘法进行计算。
本公开实施例提供一种高密度高速的运算电路,高效兼容实现矩阵乘和卷积计算。
基于同样的发明构思,本公开实施例还提供一种处理器,该处理器包括上述任一实施例所述的运算电路。该处理器可以但不仅限于是GPU、NPU。
基于同样的发明构思,本公开实施例还提供一种集成电路系统,该集成电路系统包括上述任一实施例所述的运算电路。该集成电路系统可以但不仅限于是SOC(System onChip,片上系统)芯片、ASIC芯片等。
基于相同的发明构思,本公开实施例还提供一种电子组件,该电子组件包括上述任一实施例中所述的处理器和/或上述任一实施例中所述的集成电路系统。在一些使用场景下,该电子组件的产品形式体现为显卡;在另一些使用场景下,该电子组件的产品形式体现为CPU主板。
基于相同的发明构思,本公开实施例还提供一种电子设备,该电子设备包括上述的电子组件。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、VR设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等。
尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改。
显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。
Claims (22)
1.一种运算电路,包括运算单元阵列;
在矩阵运算工作模式下,所述运算单元阵列中的单个运算单元用于对第一矩阵的单行数据和第二矩阵的单列数据执行点乘运算;
在卷积运算工作模式下,所述运算单元阵列中的单个运算单元用于对对应卷积核的单组卷积核数据和卷积对象在单个卷积滑窗内的单组待卷积数据执行点乘运算,同列运算单元对应相同卷积核,不同列运算单元对应不同卷积核,单组卷积核数据包括相同位置上多个通道的卷积核数据,单组待卷积数据包括相同位置上多个通道的待卷积数据。
2.根据权利要求1所述的运算电路,所述运算电路还包括多条行广播总线,多条列广播总线和多个运算结果处理单元;
所述运算结果处理单元包括透传通道和加法通道;
在矩阵运算工作模式下,所述第一矩阵的单行数据通过对应的行广播总线传输,所述第二矩阵的单列数据通过对应的列广播总线传输,同列运算单元的运算结果通过对应的运算结果处理单元的透传通道输出;
在卷积运算工作模式下,单个卷积滑窗内的各组待卷积数据分别通过对应的行广播总线传输。
3.根据权利要求2所述的运算电路,每条行广播总线上设置有多个第一数据传输模块,第一列之外的各个运算单元分别对应一个所述第一数据传输模块,所述第一数据传输模块包括透传通道和流水暂存通道,在矩阵运算工作模式下,所述第一数据传输模块开启透传通道;
目标运算单元的输出端设置有第二数据传输模块,所述第二数据传输模块包括透传通道和流水暂存通道,在矩阵运算工作模式下,所述第二数据传输模块开启透传通道,所述目标运算单元至少包括最后一行之外的各个运算单元。
4.根据权利要求3所述的运算电路,在卷积运算工作模式下:
所述第一数据传输模块和所述第二数据传输模块开启透传通道;
所述运算结果处理单元通过加法通道对对应的同列运算单元针对单个卷积滑窗的运算结果相加后输出。
5.根据权利要求3所述的运算电路,在卷积运算工作模式下:
所述第一数据传输模块开启流水暂存通道,以便单个卷积滑窗内的各组卷积数据分别以流水方式依次送达同行各个运算单元;
所述第二数据传输模块开启透传通道;
所述运算结果处理单元通过加法通道对对应的同列运算单元针对单个卷积滑窗的运算结果相加后输出。
6.根据权利要求3所述的运算电路,在卷积运算工作模式下:
所述第一数据传输模块开启流水暂存通道,以便各个卷积滑窗内的各组卷积数据分别以脉动方式依次送达同行各个运算单元;
所述第二数据传输模块开启流水暂存通道,以便本运算单元的运算结果通过流水暂存通道进入同列下一个运算单元的加法输入端;
所述运算结果处理单元开启透传通道。
7.根据权利要求1所述的运算电路,所述运算电路还包括译码单元,多条行广播总线,多条列广播总线和多个运算结果处理单元;
所述译码单元用于根据运算指示确定工作模式,并生成通道控制信息,所述工作模式包括矩阵运算工作模式和卷积运算工作模式;
在矩阵运算工作模式下,所述行广播总线用于传输所述第一矩阵的行数据,所述列广播总线用于传输所述第二矩阵的列数据;在卷积运算工作模式下,所述行广播总线用于传输待卷积数据;
每条行广播总线上设置有多个第一数据传输模块,第一列之外的各个运算单元分别对应一个所述第一数据传输模块,所述第一数据传输模块包括透传通道和流水暂存通道;所述第一数据传输模块根据所述通道控制信息的指示开启透传通道或者流水暂存通道;
每个运算单元的输出端设置有第二数据传输模块,所述第二数据传输模块包括透传通道和流水暂存通道;所述第二数据传输模块根据所述通道控制信息的指示开启透传通道或者流水暂存通道,并通过透传通道将运算结果输出至对应的运算结果处理单元,通过流水暂存通道将运算结果输出至同列下一个运算单元的加法输入端;
所述运算结果处理单元包括透传通道和加法通道,所述运算结果处理单元根据所述通道控制信息的指示开启透传通道或加法通道。
8.根据权利要求1至7任一项所述的运算电路,所述运算电路还包括累加处理单元;
在矩阵运算工作模式下,所述累加处理单元用于对一笔矩阵运算在各个运算单元的运算结果分别累加,所述一笔矩阵运算包括所述第一矩阵和所述第二矩阵的矩阵乘法运算;
在卷积运算工作模式下,所述累加处理单元用于对所述卷积对象的卷积运算在同列运算单元的运算结果分别累加。
9.一种运算电路,包括尺寸相同的至少两个运算单元阵列;
在矩阵运算工作模式下,每个运算单元阵列中的单个运算单元用于对第一子矩阵的单行数据和第二子矩阵的单列数据执行点乘运算;
在卷积运算工作模式下,每个运算单元阵列中的单个运算单元用于对对应子卷积核的单组卷积核数据和子卷积对象在单个卷积滑窗内的单组待卷积数据执行点乘运算,同列运算单元对应相同子卷积核,不同列运算单元对应不同子卷积核,单组卷积核数据包括相同位置上多个通道的卷积核数据,单组待卷积数据包括相同位置上多个通道的待卷积数据;
所述至少两个运算单元阵列通过连接单元连接,以实现第一矩阵与第二矩阵的矩阵乘法,或者卷积核对卷积对象的卷积运算;所述第一矩阵在行方向上被划分为若干所述第一子矩阵,所述第二矩阵在列方向上被划分为若干所述第二子矩阵;所述卷积核在通道方向上被划分为若干所述子卷积核,所述卷积对象在通道方向上被划分为若干所述子卷积对象。
10.根据权利要求9所述的运算电路,所述运算电路还包括多条行广播总线,多条列广播总线和多个运算结果处理单元;
所述运算结果处理单元包括透传通道和加法通道;
在矩阵运算工作模式下,所述第一子矩阵的单行数据通过对应的行广播总线传输,所述第二子矩阵的单列数据通过对应的列广播总线传输,单个运算单元阵列中同列运算单元的运算结果通过对应的运算结果处理单元的透传通道输出;
在卷积运算工作模式下,单个卷积滑窗内的各组待卷积数据分别通过对应的行广播总线传输;
各个运算单元阵列复用广播总线,或者,各个运算单元阵列使用独立的广播总线,所述广播总线包括行广播总线和/或列广播总线。
11.根据权利要求10所述的运算电路,每条行广播总线上设置有多个第一数据传输模块,第一列之外的各个运算单元分别对应一个所述第一数据传输模块,所述第一数据传输模块包括透传通道和流水暂存通道,在矩阵运算工作模式下,所述第一数据传输模块开启透传通道;
目标运算单元的输出端设置有第二数据传输模块,所述第二数据传输模块包括透传通道和流水暂存通道,在矩阵运算工作模式下,所述第二数据传输模块开启透传通道,所述目标运算单元至少包括最后一行之外的各个运算单元。
12.根据权利要求11所述的运算电路,在卷积运算工作模式下:
所述第一数据传输模块和所述第二数据传输模块开启透传通道;
所述运算结果处理单元通过加法通道对对应的同列运算单元针对单个卷积滑窗的运算结果相加后输出。
13.根据权利要求11所述的运算电路,在卷积运算工作模式下:
所述第一数据传输模块开启流水暂存通道,以便单个卷积滑窗内的各组卷积数据分别以流水方式依次送达同行各个运算单元;
所述第二数据传输模块开启透传通道;
所述运算结果处理单元通过加法通道对对应的同列运算单元针对单个卷积滑窗的运算结果相加后输出。
14.根据权利要求11所述的运算电路,在卷积运算工作模式下:
所述第一数据传输模块开启流水暂存通道,以便各个卷积滑窗内的各组卷积数据分别以脉动方式依次送达同行各个运算单元;
所述第二数据传输模块开启流水暂存通道,以便本运算单元的运算结果通过流水暂存通道进入同列下一个运算单元的加法输入端;
所述运算结果处理单元开启透传通道。
15.根据权利要求9所述的运算电路,所述运算电路还包括译码单元,多条行广播总线,多条列广播总线和多个运算结果处理单元;
所述译码单元用于根据运算指示确定工作模式,并生成通道控制信息,所述工作模式包括矩阵运算工作模式和卷积运算工作模式;
在矩阵运算工作模式下,所述行广播总线用于传输对应的所述第一子矩阵的行数据,所述列广播总线用于传输对应的所述第二子矩阵的列数据;在卷积运算工作模式下,所述行广播总线用于传输对应的待卷积数据;
每条行广播总线上设置有多个第一数据传输模块,第一列之外的各个运算单元分别对应一个所述第一数据传输模块,所述第一数据传输模块包括透传通道和流水暂存通道;所述第一数据传输模块根据所述通道控制信息的指示开启透传通道或者流水暂存通道;
每个运算单元的输出端设置有第二数据传输模块,所述第二数据传输模块包括透传通道和流水暂存通道;所述第二数据传输模块根据所述通道控制信息的指示开启透传通道或者流水暂存通道,并通过透传通道将运算结果输出至对应的运算结果处理单元,通过流水暂存通道将运算结果输出至同列下一个运算单元的加法输入端;
所述运算结果处理单元包括透传通道和加法通道,所述运算结果处理单元根据所述通道控制信息的指示开启透传通道或加法通道;
各个运算单元阵列复用广播总线,或者,各个运算单元阵列使用独立的广播总线,所述广播总线包括行广播总线和/或列广播总线。
16.根据权利要求9至15任一项所述的运算电路,所述运算电路还包括累加处理单元;
在矩阵运算工作模式下,所述累加处理单元用于对一笔矩阵运算在各个运算单元的运算结果分别累加,所述一笔矩阵运算包括所述第一矩阵和所述第二矩阵的矩阵乘法运算;
在卷积运算工作模式下,所述累加处理单元用于对所述卷积对象的卷积运算在同列运算单元的运算结果分别累加。
17.一种运算电路,包括若干运算单元阵列,多条行广播总线,多条列广播总线;
所述行广播总线用于传输由对应行运算单元进行运算的数据,每条行广播总线上设置有多个第一数据传输模块,第一列之外的各个运算单元分别对应一个所述第一数据传输模块,所述第一数据传输模块包括透传通道和流水暂存通道,所述第一数据传输模块根据指示开启透传通道或者流水暂存通道;
所述列广播总线用于传输由对应列运算单元进行运算的数据;
每个运算单元用于对一组数据对执行点乘运算,目标运算单元的输出端设置有第二数据传输模块,所述第二数据传输模块包括透传通道和流水暂存通道,所述第二数据传输模块根据指示开启透传通道或者流水暂存通道,并通过透传通道将运算结果输出至对应的运算结果处理单元,通过流水暂存通道将运算结果输出至同列下一个运算单元的加法输入端,所述目标运算单元至少包括最后一行之外的各个运算单元。
18.根据权利要求17所述的运算电路,所述运算电路还包括多个运算结果处理单元;
所述运算结果处理单元包括透传通道和加法通道,所述运算结果处理单元根据指示开启透传通道或加法通道,并通过透传通道透传输出对应列运算单元的运算结果,通过加法通道将对应列运算单元的运算结果相加后输出。
19.一种处理器,包括权利要求1至18任一项所述的运算电路。
20.一种集成电路系统,包括权利要求1至18任一项所述的运算电路。
21.一种电子组件,包括权利要求19所述的处理器和/或权利要求20所述的集成电路系统。
22.一种电子设备,包括权利要求21所述的电子组件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410257137.9A CN117851743A (zh) | 2024-03-07 | 2024-03-07 | 运算电路、处理器、集成电路系统、电子组件及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410257137.9A CN117851743A (zh) | 2024-03-07 | 2024-03-07 | 运算电路、处理器、集成电路系统、电子组件及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117851743A true CN117851743A (zh) | 2024-04-09 |
Family
ID=90529431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410257137.9A Pending CN117851743A (zh) | 2024-03-07 | 2024-03-07 | 运算电路、处理器、集成电路系统、电子组件及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117851743A (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160203401A1 (en) * | 2013-10-04 | 2016-07-14 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Electronic circuit, in particular capable of implementing a neural network, and neural system |
CN109190756A (zh) * | 2018-09-10 | 2019-01-11 | 中国科学院计算技术研究所 | 基于Winograd卷积的运算装置及包含该装置的神经网络处理器 |
CN112396072A (zh) * | 2019-08-14 | 2021-02-23 | 上海大学 | 基于asic与vgg16的图像分类加速方法及装置 |
CN113191488A (zh) * | 2021-04-30 | 2021-07-30 | 华中科技大学 | 一种面向lstm网络模型的硬件加速系统 |
CN113869498A (zh) * | 2021-10-13 | 2021-12-31 | 安徽芯纪元科技有限公司 | 一种卷积运算电路及其运算方法 |
CN114820281A (zh) * | 2022-05-27 | 2022-07-29 | 智绘微电子科技(南京)有限公司 | 数据处理用双通道并行单精度浮点数据格式的加速方法 |
WO2022252568A1 (zh) * | 2021-06-03 | 2022-12-08 | 沐曦集成电路(上海)有限公司 | 一种基于gpgpu可重构架构的方法、计算系统及重构架构的装置 |
WO2023040590A1 (zh) * | 2021-09-15 | 2023-03-23 | 华为技术有限公司 | 通道配置方法及装置 |
CN116775554A (zh) * | 2023-06-27 | 2023-09-19 | 无锡中微亿芯有限公司 | 一种支持指令广播的存算架构fpga |
-
2024
- 2024-03-07 CN CN202410257137.9A patent/CN117851743A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160203401A1 (en) * | 2013-10-04 | 2016-07-14 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Electronic circuit, in particular capable of implementing a neural network, and neural system |
CN109190756A (zh) * | 2018-09-10 | 2019-01-11 | 中国科学院计算技术研究所 | 基于Winograd卷积的运算装置及包含该装置的神经网络处理器 |
CN112396072A (zh) * | 2019-08-14 | 2021-02-23 | 上海大学 | 基于asic与vgg16的图像分类加速方法及装置 |
CN113191488A (zh) * | 2021-04-30 | 2021-07-30 | 华中科技大学 | 一种面向lstm网络模型的硬件加速系统 |
WO2022252568A1 (zh) * | 2021-06-03 | 2022-12-08 | 沐曦集成电路(上海)有限公司 | 一种基于gpgpu可重构架构的方法、计算系统及重构架构的装置 |
WO2023040590A1 (zh) * | 2021-09-15 | 2023-03-23 | 华为技术有限公司 | 通道配置方法及装置 |
CN113869498A (zh) * | 2021-10-13 | 2021-12-31 | 安徽芯纪元科技有限公司 | 一种卷积运算电路及其运算方法 |
CN114820281A (zh) * | 2022-05-27 | 2022-07-29 | 智绘微电子科技(南京)有限公司 | 数据处理用双通道并行单精度浮点数据格式的加速方法 |
CN116775554A (zh) * | 2023-06-27 | 2023-09-19 | 无锡中微亿芯有限公司 | 一种支持指令广播的存算架构fpga |
Non-Patent Citations (1)
Title |
---|
LIU Z ET AL.: "An FPGA-based processor for training convolutional neural networks", INTERNATIONAL CONFERENCE ON FIELD PROGRAMMABLE TECHNOLOGY (ICFPT), 31 December 2018 (2018-12-31) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109886400B (zh) | 基于卷积核拆分的卷积神经网络硬件加速器系统及其计算方法 | |
US10824934B2 (en) | Methods and apparatus for matrix processing in a convolutional neural network | |
CN111897579B (zh) | 图像数据处理方法、装置、计算机设备和存储介质 | |
WO2019128404A1 (zh) | 矩阵乘法器 | |
CN110738308B (zh) | 一种神经网络加速器 | |
CN110851779B (zh) | 用于稀疏矩阵运算的脉动阵列架构 | |
CN110188869B (zh) | 一种基于卷积神经网络算法的集成电路加速计算的方法及系统 | |
CN110674927A (zh) | 一种用于脉动阵列结构的数据重组方法 | |
CN111898733A (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN111582467B (zh) | 人工智能加速器和电子设备 | |
CN110705703A (zh) | 基于脉动阵列的稀疏神经网络处理器 | |
CN111506343A (zh) | 一种基于脉动阵列硬件架构的深度学习卷积运算实现方法 | |
CN110059797B (zh) | 一种计算装置及相关产品 | |
CN113298237A (zh) | 一种基于fpga的卷积神经网络片上训练加速器 | |
CN111340198A (zh) | 基于fpga的数据高度复用的神经网络加速器 | |
CN110059809B (zh) | 一种计算装置及相关产品 | |
CN113255898B (zh) | 基于Winograd算法的卷积神经网络硬件加速器及计算方法 | |
CN113516236A (zh) | 基于zynq平台的vgg16网络并行加速处理方法 | |
CN111222090B (zh) | 卷积计算模块、神经网络处理器、芯片和电子设备 | |
CN107368459B (zh) | 基于任意维数矩阵乘法的可重构计算结构的调度方法 | |
CN110766136B (zh) | 一种稀疏矩阵与向量的压缩方法 | |
CN117851743A (zh) | 运算电路、处理器、集成电路系统、电子组件及设备 | |
CN109741237B (zh) | 大规模图像数据处理系统及方法 | |
CN116702851A (zh) | 适用于权重复用神经网络的脉动阵列单元及脉动阵列结构 | |
CN109190755B (zh) | 面向神经网络的矩阵转换装置及方法 |
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 |