CN112784973A - 卷积运算电路、装置以及方法 - Google Patents
卷积运算电路、装置以及方法 Download PDFInfo
- Publication number
- CN112784973A CN112784973A CN201911067252.5A CN201911067252A CN112784973A CN 112784973 A CN112784973 A CN 112784973A CN 201911067252 A CN201911067252 A CN 201911067252A CN 112784973 A CN112784973 A CN 112784973A
- Authority
- CN
- China
- Prior art keywords
- data
- convolution operation
- convolution
- input
- instruction
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Abstract
本公开实施例公开了一种卷积运算电路、装置以及方法。其中该卷积运算电路包括:卷积运算控制电路;运算单元阵列,所述运算单元阵列包括多个运算单元;所述卷积运算控制电路用于接收卷积运算指令,按照所述卷积运算指令所指示的运算顺序逐个将所述输入数据和所述权重数据传送至所述多个运算单元中参与运算的运算单元,所述参与运算的运算单元根据所述指令的指示,对所述输入数据和所述权重数据执行卷积运算操作,其中,所述指令为单条指令。通过上述方法,解决了现有技术中的在进行卷积计算时计算效率低、功耗大的技术问题。
Description
技术领域
本公开涉及神经网络计算领域,尤其涉及一种卷积运算电路、装置以及方法。
背景技术
随着科学技术的发展,人类社会正在快速进入智能时代。智能时代的重要特点,就是人 们获得数据的种类越来越多,获得数据的量越来越大,而对处理数据的速度要求越来越高. 芯片是数据处理的基石,它从根本上决定了人们处理数据的能力。从应用领域来看,芯片主 要有两条路线:一条是通用芯片路线,例如CPU(Central Processing Unit,中央处理器) 等,它们能提供极大的灵活性,但是在处理特定领域算法时有效算力比较低;另一条是专用 芯片路线,例如TPU(Tensor Processing Unit,张量处理器)等,它们在某些特定领域, 能发挥较高的有效算力,但是面对灵活多变的比较通用的领域,它们处理能力比较差甚至无 法处理。由于智能时代的数据种类繁多且数量巨大,所以要求芯片既具有极高的灵活性,能 处理不同领域且日新月异的算法,又具有极强的处理能力,能快速处理极大的且急剧增长的 数据量。
在人工智能计算中常常需要实现卷积计算,现有的实现卷积计算的方案中,通常有两种 方案:
(1)CPU方案:此方案中,如果是单核CPU,会将卷积计算中涉及到的矩阵拆解成标量 进行运算,通过组合标量指令实现卷积运算;如果是多核CPU,可能会通过多个核并行执行 各自的标量指令,组合实现卷积运算。但是使用该方案有如下缺点:底层程序复杂,一般需 要多层循环实现卷积运算;通过通用计算指令实现卷积运算,效率低,需要多次分支跳转; CPU的缓存有限,实现比较大的卷积运算需要多次从片外搬数,影响效率;CPU需要多次进行 数据的存取,会增加实现卷积运算的计算时间;CPU需要多次进行数据的存取,会增加实现 卷积运算加的计算功耗;如果是多核并行计算,核间的通信复杂,通信性能可能成为瓶颈。
(2)GPU(Graphics Processing Unit,图形处理器)方案:此方案中,GPU会将卷积运算拆解成多条指令运算,这些指令主要是向量指令,通过组合执行向量指令实现卷积运算。 但是使用该方案有如下缺点:底层程序复杂,一般需要多层循环实现卷积运算;通过向量指 令多次组合实现卷积运算,效率较低;GPU需要多次进行数据的存取,会增加实现卷积运算 的计算时间;GPU需要多次进行数据的存取,会增加实现卷积运算的计算功耗;GPU的缓存有 限,实现比较大的卷积运算需要多次从片外搬数,影响效率。
发明内容
提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部 分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征, 也不旨在用于限制所要求的保护的技术方案的范围。
为了解决现有技术中的在进行卷积计算时计算效率低、功耗大的技术问题,本公开实施 例提出如下技术方案:
第一方面,本公开实施例提供一种卷积运算电路,包括:
卷积运算控制电路;
运算单元阵列,所述运算单元阵列包括多个运算单元;
所述卷积运算控制电路用于接收卷积运算指令,按照所述卷积运算指令所指示的运算顺 序逐个将所述输入数据和所述权重数据传送至所述多个运算单元中参与运算的运算单元,所 述参与运算的运算单元根据所述指令的指示,对所述输入数据和所述权重数据执行卷积运算 操作,其中,所述指令为单条指令。
进一步的,所述卷积运算指令包括指令名、输入数据的首地址、权重数据的首地址和输 出数据的首地址。
进一步的,所述运算单元包括运算器,所述运算器至少包括乘法器和加法器;
所述运算单元用于根据所述卷积运算指令组合所述乘法器和所述加法器以执行卷积运 算。
进一步的,所述参与运算的运算单元根据所述指令的指示,对所述输入数据和所述权重 数据的执行卷积运算操作,包括:
通过乘法器计算所述输入数据和所述权重数据的乘积;
通过加法器计算所述乘积的累加值;
将所述累加值输出。
进一步的,所述输入数据为第一输入矩阵的行向量数据;所述权重数据为卷积核的行向 量数据。
第二方面,本公开实施例提供一种卷积运算装置,包括:
存储器,用于存储卷积运算指令、输入数据、权重数据以及输出数据;
取指模块,与所述存储器相连,用于从所述存储器中获取所述卷积运算指令;
解码模块,与所述取指模块相连,用于对所述取指模块所获取到的所述卷积运算指令进 行解码;
寄存器,用于存储所述输入数据的属性数据、所述权重数据的属性数据和所述输出数据 的属性数据;
执行模块,与所述解码模块、所述存储器和所述寄存器相连,包括如权利要求1-6所述 的卷积运算电路,用于执行所述解码后的卷积运算指令。
进一步的,所述执行模块从所述解码模块中获取所述解码后的卷积运算指令;
所述执行模块从所述寄存器中获取所述输入数据的属性数据、所述权重数据的属性数据 和所述输出数据的属性数据;
所述执行模块根据所述输入数据的属性数据和所述权重数据的属性数据从所述存储器 中获取用于计算的所述输入数据和所述权重数据;
所述执行模块根据所述解码后的卷积运算指令对所述输入数据和权重数据进行计算得 到输出数据;
所述执行模块根据所述输出数据的属性数据将所述输出数据存入所述存储器中。
进一步的,所述输入数据为第一输入矩阵的数据,所述权重数据为卷积核的数据,所述 输出数据为卷积得到的输出矩阵的数据;所述输入数据的属性数据包括所述第一输入矩阵的 行数、列数、深度以及深度存储间隔;所述权重数据的属性数据包括所述卷积核的行数、列 数、步长以及卷积核的行存储间隔;所述输出数据的属性数据包括所述输出矩阵的行数、列 数、深度以及深度存储间隔。
进一步的,所述执行模块根据所述输入数据的属性数据和所述权重数据的属性数据从所 述存储器中获取用于计算的所述输入数据和所述权重数据,包括:
所述执行模块根据预设的第一读取方式以及所述输入数据的属性数据读取所述第一输 入矩阵的数据;
所述执行模块根据预设的第二读取方式以及所述权重数据的属性数据读取所述卷积核 的数据。
进一步的,所述第一读取方式为按行读取或按列读取;所述第二读取方式为按行读取或 按列读取。
第三方面,本公开实施例提供一种矩阵运算方法,是基于前述第一方面中任一所述的卷 积运算电路的矩阵运算方法,其特征在于,包括:
从存储器中取出卷积运算指令;
对所述卷积运算指令进行解码,并将所述解码后的卷积运算指令发送至所述卷积运算电 路;
基于所述解码后的卷积运算指令,所述卷积运算电路从所述存储器中获取输入数据和权 重数据并进行运算,在运算完成后将运算结果存储到所述存储器中。
第四方面,本公开实施例提供一种电子设备,包括:存储器,用于存储计算机可读指令; 以及一个或多个处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现前述第 三方面中的任一所述卷积运算方法。
第五方面,本公开实施例提供一种非暂态计算机可读存储介质,其特征在于,该非暂态 计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述第三方面中的任 一所述卷积运算方法。
第六方面,本公开实施例提供一种计算机程序产品,其中,其特征在于:包括计算机指 令,当所述计算机指令被计算设备执行时,所述计算设备可以执行前述第三方面中的任一所 述卷积运算方法。
第七方面,本公开实施例提供一种芯片,其特征在于,包括第一方面中的任一所述的矩 阵运算电路。
第八方面,本公开实施例提供一种计算装置,其特征在于,包括所述第七方面中的任一 所述的芯片。
本公开实施例公开了一种卷积运算电路、装置以及方法。其中该卷积运算电路包括:控 制电路;卷积运算控制电路;运算单元阵列,所述运算单元阵列包括多个运算单元;所述卷 积运算控制电路用于接收卷积运算指令,按照所述卷积运算指令所指示的运算顺序逐个将所 述输入数据和所述权重数据传送至所述多个运算单元中参与运算的运算单元,所述参与运算 的运算单元根据所述指令的指示,对所述输入数据和所述权重数据执行卷积运算操作,其中, 所述指令为单条指令。通过上述方法,解决了现有技术中的在进行卷积计算时计算效率低、 功耗大的技术问题。
上述说明仅是本公开技术方案的概述,为了能更清楚了解本公开的技术手段,而可依照 说明书的内容予以实施,并且为让本公开的上述和其他目的、特征和优点能够更明显易懂, 以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将 变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图 是示意性的,原件和元素不一定按照比例绘制。
图1为本公开实施例提供的矩阵运算电路的结构示意图;
图2为本公开实施例提供的运算单元的结构示意图;
图3为本公开实施例提供的运算单元的进一步的结构示意图;
图4a-图4b本公开实施例中的卷积运算的整体示意图;
图5-图9为本公开实施例提供的卷积运算的分解计算过程;
图10为本公开实施例中卷积运算的一个具体实例的示意图。
图11为本公开实施例提供的矩阵计算装置的结构示意图;
图12a-12e为本公开中的输入数据、权重数据和输出数据的存储格式的示意图;
图13为本公开中的卷积运算的分块计算的示意图;
图14a-图14f为使用本公开实施例中所公开的卷积运算电路进行卷积运算的实例示意图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例, 然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的 实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开 的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并 行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围 在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例” 表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语 的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的, 而并不是用于对这些消息或信息的范围进行限制。
图1为本公开实施例提供的卷积运算电路的结构示意图。如图1所述,卷积运算电路100 包括卷积运算控制电路101和运算单元阵列102,其中所述运算单元阵列包括多个运算单元 (PU)103,所述运算单元103如图2所示,包括第一输入寄存器(Rin1)104、第二输入寄存 器(Rin2)105以及输出寄存器(Rout)106,其中所述第一输入寄存器104用于接收输入数据, 所述第二输入寄存器105用于接收权重数据;所述卷积运算控制电路101用于接收卷积运算 指令,按照所述卷积运算指令所指示的运算顺序逐个将所述输入数据和所述权重数据传送至 所述多个运算单元103中参与运算的运算单元103,所述参与运算的运算单元103根据所述 指令的指示,对所述输入数据和所述权重数据执行卷积运算操作,其中,所述指令为单条指 令;所述输出寄存器106用于存储所述运算操作的运算结果,即输出数据。
其中所述卷积运算指令所指示的运算顺序是指在卷积运算时,卷积运算被分为多个步骤 来执行,步骤之间的前后关系即为卷积运算指令所指示的运算顺序。具体的运算顺序可以参 考下文对指令的说明。
参与运算的运算单元是指多个运算单元中执行具体运算的至少一个运算单元。
在本公开中,所述的卷积运算指令包括指令名、输入数据的首地址、权重数据的首地址 和输出数据的首地址。如下表所示为一个示例性的指令格式:
其中指令名与指令含义、格式以及实现的运算对应,输入数据的首地址、权重数据的首 地址分别定义了指令的两个源操作数的读取地址,输出数据的首地址定义了指令的目的操作 数的存储地址。所述卷积指令中包括乘法运算操作和加法运算操作,其将输入数据和权重数 据先执行乘法运算,再对乘法运算的结果进行累加,得到输入数据与权重数据的卷积结果, 即输出数据。其中,一个输出数据的计算过程如下:
图3为本公开实施例提供的运算单元的进一步的结构示意图。如图3所示,所述运算单 元除了第一输入寄存器、第二输入寄存器以及输出寄存器之外,还包括运算器,所述运算器 至少包括乘法器301以及加法器302,其中所述运算单元用于根据所述卷积运算指令组合所 述乘法器和所述加法器以执行卷积运算。
具体的,所述参与运算的运算单元根据所述指令的指示,对所述输入数据和所述权重数 据的执行卷积运算操作,包括:通过所述乘法器计算所述输入数据和所述权重数据的乘积; 通过所述加法器计算所述乘积的累加值;将所述累加值存入所述输出寄存器。其中,所述第 一输入寄存器中的输入数据,是根据所述输入数据的首地址依次读入到所述第一输入寄存器 中的数据;所述第二输入寄存器中的权重数据,是根据所述权重数据的首地址依次读入到所 述第二输入寄存器中的数据。
例如,在卷积运算控制电路将输入数据和权重数据传送至运算单元之后,运算单元通过 乘法器计算第一输入寄存器中的输入数据和第二输入寄存器中的权重数据的乘积,如上示例 中,在一个时钟周期中,如果第一输入寄存器中接收到的数据为a1,第二输入寄存器中接收 到的数据为b1,则运算单元中的乘法器计算a1*b1的乘积,之后将所述a1*b1的乘积送入加法器 做累加,由于此时累加器在上一时钟周期没有输入,因此累加器的累加结果为a1*b1;之后在 下一个时钟周期,继续上述计算操作,此时第一输入寄存器中接收到的数据为a2,第二输入 寄存器中接收到的数据为b2,则运算单元中的乘法器计算a2*b2的乘积,之后将所述a2*b2的乘 积送入加法器做累加,累加器上一时钟周期的输入为a1*b1,因此在本时钟周期计算a1*b1+a2*b2; 持续做上述操作,直至输入数据的一行和权重数据的一列计算完毕,得到最终的累加值,之 后将累加值存入所述输出寄存器中。卷积运算控制电路根据所述指令中的输出数据首地址, 将所述输出寄存器中的累加值存储系统存储器中。
一个示例性的卷积运算如下:
图4a-图4b为本公开实施例中的卷积运算的示意图。如图4a为卷积运算过程的整体示 意图,其中的图示解释如下:
Win:输入特征图(Feature Map)的宽度;
Hin:输入特征图的高度;
Cin:输入特征图的通道数,后面统称输入特征图的深度;
S_Cin:输入特征图的深度上的物理存储的间隔;
Wout:输出特征图的宽度;
Hout:输出特征图的高度;
Cout:输出特征图的通道数,后面统称输出特征图的深度;
S_Cout:输出特征图的深度上的物理存储的间隔;
Kw:卷积核的宽度;
Kh:卷积核的高度;
S_kernel:卷积核在物理存储上的间隔;
N_dilation:卷积核的膨胀值;
S_K:卷积滑动的步长;
N_pad_u:上方补0数;
N_pad_d:下方补0数;
N_pad_l:左方补0数;
N_pad_r:由方补0数。
其中输入特征图上的特征点构成为第一输入矩阵;输出特征图为输出矩阵,输出特征图 上的一个特征点为输出矩阵上的一个数据。在进行卷积运算时,卷积核会在输入特征图上滑 动,每滑动一次,就会与输入特征图中对应的数据进行数据乘累加,提取一个输出特征点, 即输出矩阵上的一个数据。
图4b为一个带深度的输入特征点的计算示意图。如图4b所示,卷积核在输入特征图上 滑动,当它停在一个位置,会与该位置处的输入特征图中的特征点进行对应数据乘累加,得 到与该位置对应的输出特征点;共有Cout个卷积核,每一个卷积核均会与此同一位置出的输 入特征图中的特征点进行数据乘累加,得到深度方向的Cout个输出特征点;Cout个输出特 征点组成整个输出特征图上的一个带深度的特征点,此点的深度即Cout;卷积核会滑完整个 输入特征图,从而得到整个输出特征图。
对于处于深度l(1<=l<=Cout)上的某个卷积核,它进行特征提取的公式如下:
Dout是输出特征图中的某个带深度的点,其上标l对应输出的深度;Din是指输入特征 图中对应于卷积核的数据,其上标i对应输入特征图的深度,j和k分别对应卷积核对应的 宽度和高度;w是卷积核,其上标l和i分别对应输出特征图的深度和输入特征图的深度,j 和k分别对应此卷积核的宽度和高度。
对于尺寸为Kh*Kw*Cin的卷积核,可以分成Kh个Kw*Cin的部分卷积核,进行部分特征 提取,每次实现的是整个特征提取的1/Kh,也就是Kw*Cin的部分卷积核对应的特征,得到 的部分结果是:最后将这Kh个部分结果相加即得到最终结果
卷积核的数量是Cout个,因此,输出特征点的深度是Cout,可以将一行的输入数据矩 阵与由Cout个卷积核构成的Cout列的卷积核矩阵即权重矩阵相乘,得出一个带深度的特征 点,此特征点是一个向量,向量的长度即输出特征点的深度Cout,其实现如图8所示。
又由于神经网络实现卷积或者部分卷积的过程,就是卷积核在输入特征图上的滑动过程, 可以看成是输入特征图的数据随着滑动变化,而权重不变的过程,这样神经网络实现卷积的 过程就变成了卷积核在输出特征图上滑动Wout*Hout次,Wout*Hout行的输入数据矩阵和Cout 列的权重矩阵的相乘,得出Wout*Hout行、Cout列的输出数据矩阵,其实现如图9示。
上述的卷积运算,在本公开中只需要使用一条单独的指令,即上述卷积运算指令即可完 成整个卷积过程,其只需要输入数据、权重以及输出数据会以预定的方式存储,使用单独的 卷积运算电路来即可实现整个卷积。
具体的,在上述实施例中的卷积运算电路中:所述输入数据为第一输入矩阵的行向量数 据;所述权重数据为卷积核的行向量数据。也就是说,第一输入寄存器中的数据和第二输入 寄存器中的数据,均需要是矩阵的行向量数据,这样计算出来的数据才是卷积结果。如图10 所示为上述卷积计算的示意图,以第一输入矩阵为一个3*3*2的矩阵,卷积核为两个2*2*2 的矩阵为例,步长为1,输出矩阵为一个2*2*2的矩阵。如图10所示,进行卷积时,所述卷 积核在所述第一输入矩阵上滑动,读取出的第一输入矩阵的数据如1001的所示,每行为卷积 核1002的一个位置上对应的第一输入矩阵的数据,包括深度为2的4个数,一共8个数据; 1002中的一列为一个卷积核以深度优先的方式按行读出的数据,包括深度的为2的4个数, 一共8个数据,;1001中的一行数据与1002中的一列数据做乘累加运算,得到1003中的一 个数据,1003中的一个数据为输出矩阵上的一个深度为2的数据中的2个值中的一个,输出 数据的每一行,对应于输出矩阵中的一个深度为2的数据。
结合图1-3所示的PU阵列,简要说明一下PU阵列如何实现卷积的计算。
如图10中所示,1001为第一输入矩阵的存储结构,1002为卷积核的存储结构,1003为 输出矩阵的存储结构,1004为按照卷积的运算顺序,控制单元从所述1001中读取出的数据, 每一行数据表示卷积核在第一输入矩阵上滑动时所对应的数据块。运算单元将数据读出后, 逐个将数据送入参与运算的运算单元中。例如:将图10中第一输入矩阵的数据1004的第一 行的第一个数值1送入PU11的Rin1和PU12的Rin1,第一输入矩阵的数据1004的第二行的 第一个数值3送入PU21的Rin1和PU22的Rin1,第一输入矩阵数据1004的第三行的第一个 数值7送入PU31的Rin1和PU32的Rin1,第一输入矩阵数据1004的第四行的第一个数值9送入PU41的Rin1和PU42的Rin1;将卷积核1002中的第一列的第一个数值0.1送入PU11 的Rin2、PU21的Rin2、PU31的Rin2以及PU41的Rin2,卷积核1002中的第二列的第一个 数值0.9送入PU12的Rin2、PU22的Rin2、PU32的Rin2和PU42的Rin2;PU11、PU12、PU21、 PU22、PU31、PU32、PU41、PU42分别执行数据乘操作,并将结果送入输出寄存器保存;在下 一个时钟周期,第一输入矩阵的数据1004的第一行的第二个数值2送入PU11的Rin1和PU12 的Rin1,第一输入矩阵的数据1004的第二行的第二个数值4送入PU21的Rin1和PU22的Rin1, 第一输入矩阵数据1004的第三行的第二个数值8送入PU31的Rin1和PU32的Rin1,第一输 入矩阵数据1004的第四行的第二个数值10送入PU41的Rin1和PU42的Rin1;将卷积核1002 中的第一列的第二个数值0.2送入PU11的Rin2、PU21的Rin2、PU31的Rin2以及PU41的 Rin2,卷积核1002中的第二列的第二个数值1.0送入PU12的Rin2、PU22的Rin2、PU32的 Rin2和PU42的Rin2,PU11、PU12、PU21、PU22、PU31、PU32、PU41、PU42分别执行此次的 数据乘操作,并将结果送入输出寄存器与上次保存的结果进行累加。
依次类推,最后求得卷积的乘累加结果。
图11为本公开实施例提供的矩阵计算装置的结构示意图。如图11所示,所述卷积运算 装置1100包括:存储器1101,用于存储卷积运算指令、输入数据、权重数据以及输出数据; 取指模块1102,与所述存储器1101相连,用于从所述存储器1101中获取所述卷积运算指令; 解码模块1103,与所述取指模块1102相连,用于对所述取指模块1102所获取到的所述卷积 运算指令进行解码;寄存器1104,用于存储所述输入数据的属性数据、所述权重数据的属性 数据和所述输出数据的属性数据;执行模块1105,与所述解码模块1103、所述存储器1101 和所述寄存器1104相连,包括上述实施例中的卷积运算电路,用于执行所述解码后的卷积运 算指令。
在一个实施例中,所述执行模块从所述解码模块中获取所述解码后的矩阵运算指令;所 述执行模块从所述寄存器中获取所述输入数据的属性数据、所述权重数据的属性数据和所述 输出数据的属性数据;所述执行模块根据所述输入数据的属性数据和所述权重数据的属性数 据从所述存储器中获取用于计算的所述输入数据和所述权重数据;所述执行模块根据所述解 码后的卷积运算指令对所述输入数据和权重数据进行计算得到输出数据;所述执行模块根据 所述输出数据的属性数据将所述输出数据存入所述存储器中。其中,所述输入数据为第一输 入矩阵的数据,所述权重数据为卷积核的数据,所述输出数据为卷积得到的输出矩阵的数据; 所述输入数据的属性数据包括所述第一输入矩阵的行数、列数、深度以及深度存储间隔;所 述权重数据的属性数据包括所述卷积核的行数、列数、步长以及卷积核之间的存储间隔;所 述输出数据的属性数据包括所述输出矩阵的行数、列数、深度以及深度存储间隔。其中,所 述行数和列数定义了矩阵的大小,所述输入数据存储间隔定义了的输入数据在深度上的存储 地址差,所述输出数据存储间隔定义了输出数据在深度上的存储地址差,所述卷积核的存储 间隔定义了两个卷积核之间的存储地址差。例如第一输入矩阵在深度方向上有10个int8的 矩阵元素,如果是连续存储,那么行存储间隔就是10Byte,如果是以一定的间隔存储,例如 20Byte,那么有10Byte是矩阵元素,另外10Byte的内容不属于本矩阵,可能是无效的数据, 也可能是其他用途的数据。
可选的,所述执行模块根据所述输入数据的属性数据和所述权重数据的属性数据从所述 存储器中获取用于计算的所述输入数据和所述权重数据,包括:所述执行模块根据预设的第 一读取方式以及所述输入数据的属性数据读取所述第一输入矩阵的数据;所述执行模块根据 预设的第二读取方式以及所述权重数据的属性数据读取所述卷积核的数据。可选的,所述第 一读取方式为按行读取或按列读取;所述第二读取方式为按行读取或按列读取。
举例来说,如果所述属性数据定义了第一输入矩阵的行数为5行,列数为5列,深度为 2,深度存储间距为4,预设的读取方式为按行读取,则根据指令中的第一输入矩阵的首地址、 列数、深度以及深度存储间隔读取第一输入矩阵的第一行,通过列数可以知道该第一行有5 个矩阵元素,每个矩阵元素的深度为2,则读取2*5=10个数据之后,得到第一输入矩阵的一 行数据,之后将首地址加上5个深度存储间隔作为新的首地址,读取第二行,同样是5个矩 阵元素,这样依次读取5次,则所述执行模块可以获取到第一输入矩阵的所有数据。
同样的,所述卷积核的数据按照同样的方式获取。可选的,所述执行模块根据所述输出 矩阵的属性数据将所述输出矩阵的数据存入所述存储器中,包括:所述执行模块根据预设的 存储方式以及所述输出矩阵的属性数据将所述输出矩阵的数据存入所述存储器中。其中,所 述预定的存储方式为按行存储或者按列存储,具体的存储方式与读取类似,只是方向相反, 在此不再赘述。
图12a为本公开中的第一输入矩阵的存储顺序和格式的示意图。如图12a所示,为上述实 施例中的第一输入矩阵的一个示例,其在存储器中存储时,按照深度Cin优先,然后是宽度 Win,最后是高度Hin的方式存储,深度的间隔为S_Cin。以Cin=2、Win=3、Hin=3、S_Cin=4 为例,先存储Hin=3行中的第一行的第一个点,由于带深度,所述一个点包含2个数据,由 于S_Cin=4,因此在存储的首地址上加上4个数据的存储地址,再存第二个点,也包含2个 数据,之后再在该点的首地址上加上4个数据的存储地址,再存第三个点,也包含2个数据, 直到存完第3个点,第一行一共有3*2=6个数据,包含Win方向上的3个点;之后开始存 Hin=3行中的第二行的第一个点,依次这样存储,直到所有的点被存储完毕。第一输入矩阵的 存储顺序和格式的实例如图12b所示。
图12c为本公开的卷积核的存储顺序和格式的示意图,如图12c所示,为上述实施例中的 卷积核的一个示例,其在存储器中存储时,按照Cout(卷积核的个数)优先的方式按行存储, 每一列存储一个卷积核,在列方向上,按照卷积核的深度Cin优先,然后是宽度Kw,然后是 高度Kh的方式存储。以Cout=2、Cin=2、Kw=2、Kh=2、S_kernel=2为例,一共会存储Cin*Kw*Kh=8 行数据,每行存储2个数据。先存储第一个卷积核的第一行第一列的深度为2的点中的第一 个数据,再存储第二个卷积核的第一行第一列的深度为2的点中的第一个数据,完成卷积核 的第一行数据的存储;之后通过卷积核的首地址加上S_kernel计算第二行的首地址,存储第 一个卷积核的第一行第一列的深度为2的点中的第二个数据,再存储第二个卷积核的第一行 第一列的深度为2的点中的第二个数据,完成卷积核的第二行数据的存储,依次这样存储, 直到所有的点被存储完毕。卷积核的存储顺序和格式的实例如图12d所示。
因为输出矩阵可以用作下一次卷积计算的第一输入矩阵,因此在一个实施例中,所述输 出矩阵的存储顺序和格式与第一输入矩阵相同,如图12e所示为本公开的输出矩阵的存储顺 序和格式的示意图。
如图12a中所示的rs1即为第一输入矩阵的首地址。通过存储格式的设定以及读取方式 的设定可以控制读入的矩阵的数据,如按照上述示例中的按深度方向顺序存储,配合按行读 取以及深度间隔,则可以读取出第一输入矩阵的行向量数据。如图12c中所示的rs2即为卷 积核的首地址,通过存储格式的设定以及读取方式的设定可以控制读入的矩阵的数据,如按 照上述示例中的顺序进行存储,配合按行读取以及卷积核的行间隔,则可以读取出卷积核的 行向量数据。第一输入矩阵和卷积核的数据读出之后,利用上述卷积运算指令完成单指令的 卷积运算。如图12e中所示的rd1即为输出矩阵的首地址。上述卷积运算指令所计算出的输 出数据,按照图12e中的方式从rd1开始存储,直至所有的输出数据存储完毕。
在调用上述卷积运算指令之前,需要定义卷积运算的参数,在本公开中设置了寄存器1104 来存储卷积的参数,可以对所述第一输入矩阵、所述卷积核和所述输出矩阵的属性数据进行 设置。寄存器1104的一个示例配置如下表所示:
其中,FM_in为第一输入矩阵,FM_out为输出矩阵,Kernel为卷积核。
在卷积运算中,卷积运算控制电路,按逻辑运算的顺序,计算输入数据、权重数据和输 出数据的地址;运算单元阵列根据地址,从存储器中读取输入数据和权重数据,进行计算, 然后将计算结果根据输出数据的地址存入存储器,完成整个卷积运算。
但是由于运算单元阵列中的运算单元个数有限,例如只有M*N个,而输出矩阵的元素个 数远多于M*N个,因此在卷积运算中,通常会将输入数据和权重分块读入,而对输出数据也 是分块输出存储,其卷积运算的示意图如图13所示,将输入数据和权重数据分为多个M*N的 数据块输入运算单元阵列,将计算的结果也分为多个M*N的数据块分别输出。
如图14a-14f为上述卷积运算电路根据所述卷积运算指令进行卷积运算的一个实例。在 该实例中,卷积运算的参数如下:
运算单元阵列M*N是2*2;
输入数据(第一输入矩阵)的属性数据为:Win=Hin=Cin=4,S_Cin=8;
输出数据(输出矩阵)的属性数据为:Wout=Hout=Cout=4,S_Cout=8;
权重数据(卷积核)的属性数据为:S_kernel=8,Kw=Kh=1,N_dilation=1,S_K=1;
Padding的参数为:N_pad_u=N_pad_d=N_pad_l=N_pad_r=0。
整个卷积示意图如图14a所示:4*4*4的输入数据与4个1*1*4的权重数据进行卷积运 算得到4*4*4的输出数据。
其中,所述输入数据的存储格式如图14b所示,输入数据存储格式中的每一行存储了一 个深度为4的输入数据中的点,相邻两点之间的间隔为8。权重数据的存储格式如图14c所 示,权重数据的存储格式中的每一列存储了一个卷积核的4个点,每一行存储的是同深度上 的4个卷积核的点,行间隔为8。输出数据的存储格式如图14d所示,输出数据的存储格式 与输入数据的存储格式相同,输出数据存储格式中的每一行存储了一个深度为4的输出数据 中的点,相邻两点之间的间隔为8。
卷积的实际计算过程如图14e和图14f所示。具体的,在一个时钟周期中,卷积运算控 制电路从第一输入矩阵中读取输入数据,将输入数据送入运算单元的第一输入寄存器中,卷 积运算控制电路从卷积核中读取权重数据,将权重数据送入运算单元的第二输入寄存器中, 在下一个时钟周期中,运算单元中的运算器使用第一输入寄存器中的输入数据和第二输入寄 存器中权重数据进行乘运算,并与之前的周期中的乘加运算的累计值进行累加。如图14e所 示,由于运算单元阵列的大小为2*2,因此以2*2为单元分别取输入数据和权重数据进行计算。 第一次取数据和权重进行矩阵乘加运算,之后暂存中间数据。每一个运算单元PU实现的是其 对应的输入数据的行和权重数据的列的乘加,例如在输入数据和权重数据已经被送入运算单 元的第一输入寄存器和第二输入寄存器中时,在第一个时钟周期,PU11计算1*0.1=0.1,由 于0.1只是整个卷积的一部分,所以将它暂时存在输出寄存器,而不是写入存储器中。同样,PU12计算1*0.5=0.5;PU21计算5*0.1=0.5;PU22计算5*0.5=2.5。在计算完上述数据之后, 在第二个时钟周期,PU11计算2*0.2=0.4,且累加上次的计算结果0.1,得到:0.4+0.1=0.5, 将它暂时存在输出寄存器;PU12计算2*0.6=1.2,且累加上次的计算结果0.5,得到: 1.2+0.5=1.7,将它暂时存在输出寄存器;PU21计算6*0.2=1.2,且累加上次的计算结果0.5, 得到:1.2+0.5=1.7,将它暂时存在输出寄存器;PU22计算6*0.6=3.6,且累加上次的计算结 果2.5,得到:3.6+2.5=6.1,将它暂时存在输出寄存器。在第三个时钟周期,PU11计算 3*0.3=0.9,且累加上次的计算结果0.5,得到:0.9+0.5=1.4,将它暂时存在输出寄存器; PU12计算3*0.7=2.1,且累加上次的计算结果1.7,得到:2.1+1.7=3.8,将它暂时存在输出 寄存器;PU21计算7*0.3=2.1,且累加上次的计算结果1.7,得到:2.1+1.7=3.8,将它暂时 存在输出寄存器;PU22计算7*0.7=4.9,且累加上次的计算结果6.1,得到:4.9+6.1=11, 将它暂时存在输出寄存器。在第四个时钟周期,PU11计算4*0.4=1.6,且累加上次的计算结 果1.4,得到:1.6+1.4=3,将它暂时存在输出寄存器;PU12计算4*0.8=3.2,且累加上次的 计算结果3.8,得到:3.2+3.8=7,将它暂时存在输出寄存器;PU21计算8*0.4=3.2,且累加 上次的计算结果3.8,得到:3.2+3.8=7,将它暂时存在输出寄存器;PU22计算8*0.8=6.4, 且累加上次的计算结果7.4,得到:6.4+11=17.4,将它暂时存在输出寄存器,得到输出数据, 如图14f所示。
最终所有的输出结果会存入到存储区中。
可以理解的,每个运算单元PU的第一输入寄存器、第二输入寄存器和输出寄存器可以有 多个,这样卷积运算控制电路在向第一输入寄存器、第二输入寄存器传送数据时以及从输出 寄存器中读取数据时,可以在不同的寄存器之间交替进行,以便做到向寄存器传送数据和运 算单元进行运算的并行操作,提高计算效率。
本公开实施例还提供了一种卷积运算方法,是基于前述任一卷积运算电路的卷积运算方 法,其特征在于,包括:从存储器中取出卷积运算指令;对所述卷积运算指令进行解码,并 将所述解码后的卷积运算指令发送至所述卷积运算电路;基于所述解码后的卷积运算指令, 所述卷积运算电路从所述存储器中获取输入数据和权重数据并进行运算,在运算完成后将运 算结果存储到所述存储器中。
本公开实施例还提供了一种电子设备,包括:存储器,用于存储计算机可读指令;以及 一个或多个处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现前述实施例 中的任一所述卷积运算方法。
本公开实施例还提供了一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机 可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述实施例中的任一所述卷 积运算方法。
本公开实施例提供一种计算机程序产品,其中,其特征在于:包括计算机指令,当所述 计算机指令被计算设备执行时,所述计算设备可以执行前述实施例中的任一所述卷积运算方 法。
本公开实施例提供一种芯片,其特征在于,包括前述实施例中的任一所述的卷积运算电 路。
本公开实施例提供一种计算装置,其特征在于,包括前述实施例中的任一所述的芯片。
本公开附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程 序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代 表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个 用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所 标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上 可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注 意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执 行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的 组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方 式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限 制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电 路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执 行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质 可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁 性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组 合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、 硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快 闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上 述内容的任何合适组合。
Claims (11)
1.一种卷积运算电路,包括:
卷积运算控制电路;
运算单元阵列,所述运算单元阵列包括多个运算单元;
所述卷积运算控制电路用于接收卷积运算指令,按照所述卷积运算指令所指示的运算顺序逐个将输入数据和权重数据传送至所述多个运算单元中参与运算的运算单元,所述参与运算的运算单元根据所述指令的指示,对所述输入数据和所述权重数据执行卷积运算操作,其中,所述指令为单条指令。
2.如权利要求1所述的卷积运算电路,其特征在于,所述卷积运算指令包括指令名、输入数据的首地址、权重数据的首地址和输出数据的首地址。
3.如权利要求3所述的卷积运算电路,其特征在于:
所述运算单元包括运算器,所述运算器至少包括乘法器和加法器;
所述运算单元用于根据所述卷积运算指令组合所述乘法器和所述加法器以执行卷积运算。
4.如权利要求3所述的卷积运算电路,其特征在于,所述参与运算的运算单元根据所述指令的指示,对所述输入数据和所述权重数据的执行卷积运算操作,包括:
通过所述乘法器计算所述输入数据和所述权重数据的乘积;
通过所述加法器计算所述乘积的累加值;
将所述累加值输出。
5.如权利要求4所述的卷积运算电路,其特征在于:
所述输入数据为第一输入矩阵的行向量数据;
所述权重数据为卷积核的行向量数据。
6.一种卷积运算装置,包括:
存储器,用于存储卷积运算指令、输入数据、权重数据以及输出数据;
取指模块,与所述存储器相连,用于从所述存储器中获取所述卷积运算指令;
解码模块,与所述取指模块相连,用于对所述取指模块所获取到的所述卷积运算指令进行解码;
寄存器,用于存储所述输入数据的属性数据、所述权重数据的属性数据和所述输出数据的属性数据;
执行模块,与所述解码模块、所述存储器和所述寄存器相连,包括如权利要求1-6所述的卷积运算电路,用于执行所述解码后的卷积运算指令。
7.如权利要求6所述的卷积运算装置,其特征在于:
所述执行模块从所述解码模块中获取所述解码后的卷积运算指令;
所述执行模块从所述寄存器中获取所述输入数据的属性数据、所述权重数据的属性数据和所述输出数据的属性数据;
所述执行模块根据所述输入数据的属性数据和所述权重数据的属性数据从所述存储器中获取用于计算的所述输入数据和所述权重数据;
所述执行模块根据所述解码后的卷积运算指令对所述输入数据和权重数据进行计算得到输出数据;
所述执行模块根据所述输出数据的属性数据将所述输出数据存入所述存储器中。
8.如权利要求7所述的卷积运算装置,其特征在于:
所述输入数据为第一输入矩阵的数据,所述权重数据为卷积核的数据,所述输出数据为卷积得到的输出矩阵的数据;
所述输入数据的属性数据包括所述第一输入矩阵的行数、列数、深度以及深度存储间隔;
所述权重数据的属性数据包括所述卷积核的行数、列数、步长以及卷积核的行存储间隔;
所述输出数据的属性数据包括所述输出矩阵的行数、列数、深度以及深度存储间隔。
9.如权利要求7所述的卷积运算装置,其中,所述执行模块根据所述输入数据的属性数据和所述权重数据的属性数据从所述存储器中获取用于计算的所述输入数据和所述权重数据,包括:
所述执行模块根据预设的第一读取方式以及所述输入数据的属性数据读取所述第一输入矩阵的数据;
所述执行模块根据预设的第二读取方式以及所述权重数据的属性数据读取所述卷积核的数据。
10.如权利要求9所述的卷积运算装置,其特征在于:
所述第一读取方式为按行读取或按列读取;
所述第二读取方式为按行读取或按列读取。
11.一种卷积运算方法,是基于权利要求1至5中的任一项所述的卷积运算电路的卷积运算方法,其特征在于,包括:
从存储器中取出卷积运算指令;
对所述卷积运算指令进行解码,并将所述解码后的卷积运算指令发送至所述卷积运算电路;
基于所述解码后的卷积运算指令,所述卷积运算电路从所述存储器中获取输入数据和权重数据并进行运算,在运算完成后将运算结果存储到所述存储器中。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911067252.5A CN112784973A (zh) | 2019-11-04 | 2019-11-04 | 卷积运算电路、装置以及方法 |
PCT/CN2020/118070 WO2021088563A1 (zh) | 2019-11-04 | 2020-09-27 | 卷积运算电路、装置以及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911067252.5A CN112784973A (zh) | 2019-11-04 | 2019-11-04 | 卷积运算电路、装置以及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112784973A true CN112784973A (zh) | 2021-05-11 |
Family
ID=75748741
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911067252.5A Pending CN112784973A (zh) | 2019-11-04 | 2019-11-04 | 卷积运算电路、装置以及方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112784973A (zh) |
WO (1) | WO2021088563A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113361699A (zh) * | 2021-07-16 | 2021-09-07 | 安谋科技(中国)有限公司 | 乘法电路、片上系统和电子设备 |
CN115983337A (zh) * | 2022-12-14 | 2023-04-18 | 北京登临科技有限公司 | 卷积计算单元、ai运算阵列及相关设备 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113610223B (zh) * | 2021-08-03 | 2023-12-26 | 安谋科技(中国)有限公司 | 乘法电路、卷积运算方法、介质、片上系统和电子设备 |
CN113807509B (zh) * | 2021-09-14 | 2024-03-22 | 绍兴埃瓦科技有限公司 | 神经网络加速装置、方法和通信设备 |
CN113792868B (zh) * | 2021-09-14 | 2024-03-29 | 绍兴埃瓦科技有限公司 | 神经网络计算模块、方法和通信设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08137830A (ja) * | 1994-11-10 | 1996-05-31 | Olympus Optical Co Ltd | 信号処理装置 |
CN107590535A (zh) * | 2017-09-08 | 2018-01-16 | 西安电子科技大学 | 可编程神经网络处理器 |
CN107704923A (zh) * | 2017-10-19 | 2018-02-16 | 珠海格力电器股份有限公司 | 卷积神经网络运算电路 |
CN108197705A (zh) * | 2017-12-29 | 2018-06-22 | 国民技术股份有限公司 | 卷积神经网络硬件加速装置及卷积计算方法及存储介质 |
CN108416434A (zh) * | 2018-02-07 | 2018-08-17 | 复旦大学 | 针对神经网络的卷积层与全连接层进行加速的电路结构 |
CN108629411A (zh) * | 2018-05-07 | 2018-10-09 | 济南浪潮高新科技投资发展有限公司 | 一种卷积运算硬件实现装置及方法 |
CN109416756A (zh) * | 2018-01-15 | 2019-03-01 | 深圳鲲云信息科技有限公司 | 卷积器及其所应用的人工智能处理装置 |
WO2019164237A1 (ko) * | 2018-02-20 | 2019-08-29 | 삼성전자주식회사 | 시스톨릭 배열을 이용하여 딥 러닝 연산을 수행하는 방법 및 장치 |
CN114503126A (zh) * | 2019-10-18 | 2022-05-13 | 北京希姆计算科技有限公司 | 矩阵运算电路、装置以及方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11055604B2 (en) * | 2017-09-12 | 2021-07-06 | Intel Corporation | Per kernel Kmeans compression for neural networks |
TW201926147A (zh) * | 2017-12-01 | 2019-07-01 | 阿比特電子科技有限公司 | 電子裝置、加速器、適用於神經網路運算的加速方法及神經網路加速系統 |
CN110197265B (zh) * | 2018-02-27 | 2021-01-05 | 安徽寒武纪信息科技有限公司 | 集成电路芯片装置及相关产品 |
CN109284817B (zh) * | 2018-08-31 | 2022-07-05 | 中国科学院上海高等研究院 | 深度可分离卷积神经网络处理架构/方法/系统及介质 |
-
2019
- 2019-11-04 CN CN201911067252.5A patent/CN112784973A/zh active Pending
-
2020
- 2020-09-27 WO PCT/CN2020/118070 patent/WO2021088563A1/zh active Application Filing
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08137830A (ja) * | 1994-11-10 | 1996-05-31 | Olympus Optical Co Ltd | 信号処理装置 |
CN107590535A (zh) * | 2017-09-08 | 2018-01-16 | 西安电子科技大学 | 可编程神经网络处理器 |
CN107704923A (zh) * | 2017-10-19 | 2018-02-16 | 珠海格力电器股份有限公司 | 卷积神经网络运算电路 |
CN108197705A (zh) * | 2017-12-29 | 2018-06-22 | 国民技术股份有限公司 | 卷积神经网络硬件加速装置及卷积计算方法及存储介质 |
CN109416756A (zh) * | 2018-01-15 | 2019-03-01 | 深圳鲲云信息科技有限公司 | 卷积器及其所应用的人工智能处理装置 |
CN108416434A (zh) * | 2018-02-07 | 2018-08-17 | 复旦大学 | 针对神经网络的卷积层与全连接层进行加速的电路结构 |
WO2019164237A1 (ko) * | 2018-02-20 | 2019-08-29 | 삼성전자주식회사 | 시스톨릭 배열을 이용하여 딥 러닝 연산을 수행하는 방법 및 장치 |
CN108629411A (zh) * | 2018-05-07 | 2018-10-09 | 济南浪潮高新科技投资发展有限公司 | 一种卷积运算硬件实现装置及方法 |
CN114503126A (zh) * | 2019-10-18 | 2022-05-13 | 北京希姆计算科技有限公司 | 矩阵运算电路、装置以及方法 |
Non-Patent Citations (1)
Title |
---|
杨杰;陈素芹;: "一种DCT算法的新型脉动阵列结构", 铜陵学院学报, no. 02 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113361699A (zh) * | 2021-07-16 | 2021-09-07 | 安谋科技(中国)有限公司 | 乘法电路、片上系统和电子设备 |
CN113361699B (zh) * | 2021-07-16 | 2023-05-26 | 安谋科技(中国)有限公司 | 乘法电路、片上系统和电子设备 |
CN115983337A (zh) * | 2022-12-14 | 2023-04-18 | 北京登临科技有限公司 | 卷积计算单元、ai运算阵列及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2021088563A1 (zh) | 2021-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112784973A (zh) | 卷积运算电路、装置以及方法 | |
US10698657B2 (en) | Hardware accelerator for compressed RNN on FPGA | |
US10810484B2 (en) | Hardware accelerator for compressed GRU on FPGA | |
CN114503126A (zh) | 矩阵运算电路、装置以及方法 | |
US10379816B2 (en) | Data accumulation apparatus and method, and digital signal processing device | |
CN110163358B (zh) | 一种计算装置及方法 | |
CN104899182A (zh) | 一种支持可变分块的矩阵乘加速方法 | |
JP3228927B2 (ja) | プロセッサエレメント、プロセッシングユニット、プロセッサ、及びその演算処理方法 | |
CN111338695B (zh) | 基于流水线技术的数据处理方法及相关产品 | |
CN110851779B (zh) | 用于稀疏矩阵运算的脉动阵列架构 | |
CN113222101A (zh) | 深度学习处理装置、方法、设备和存储介质 | |
CN113469350B (zh) | 一种适于npu的深度卷积神经网络加速方法和系统 | |
KR101929847B1 (ko) | 희소행렬 연산 방법과 장치 | |
CN111506343A (zh) | 一种基于脉动阵列硬件架构的深度学习卷积运算实现方法 | |
CN113807998A (zh) | 图像处理方法、目标检测装置、机器视觉设备和存储介质 | |
CN111506344A (zh) | 一种基于脉动阵列架构的深度学习硬件系统 | |
EP3842954A1 (en) | System and method for configurable systolic array with partial read/write | |
CN112348182B (zh) | 一种神经网络maxout层计算装置 | |
CN113222125A (zh) | 卷积运算方法及芯片 | |
CN110059809B (zh) | 一种计算装置及相关产品 | |
CN107368459B (zh) | 基于任意维数矩阵乘法的可重构计算结构的调度方法 | |
CN116888591A (zh) | 一种矩阵乘法器、矩阵计算方法及相关设备 | |
CN113222099A (zh) | 卷积运算方法及芯片 | |
CN113222136A (zh) | 卷积运算方法及芯片 | |
EP3562042A1 (en) | Method of input data compression, associated computer program product, computer system and extraction method |
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 |