CN113313228A - 数据缓存电路和方法 - Google Patents

数据缓存电路和方法 Download PDF

Info

Publication number
CN113313228A
CN113313228A CN202010118620.0A CN202010118620A CN113313228A CN 113313228 A CN113313228 A CN 113313228A CN 202010118620 A CN202010118620 A CN 202010118620A CN 113313228 A CN113313228 A CN 113313228A
Authority
CN
China
Prior art keywords
data
register
window
circuit
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.)
Granted
Application number
CN202010118620.0A
Other languages
English (en)
Other versions
CN113313228B (zh
Inventor
郑琪霖
王绍迪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Zhicun Intelligent Technology Co ltd
Original Assignee
Hangzhou Zhicun Intelligent Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Zhicun Intelligent Technology Co ltd filed Critical Hangzhou Zhicun Intelligent Technology Co ltd
Priority to CN202010118620.0A priority Critical patent/CN113313228B/zh
Priority to PCT/CN2020/080318 priority patent/WO2021168944A1/zh
Priority to US16/849,913 priority patent/US11216375B2/en
Publication of CN113313228A publication Critical patent/CN113313228A/zh
Application granted granted Critical
Publication of CN113313228B publication Critical patent/CN113313228B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Complex Calculations (AREA)

Abstract

提供一种数据缓存电路和方法。该电路被配置为缓存用于神经网络所计算的特征图中的数据,其中,该神经网络的卷积核大小为K*K个数据,对应于该卷积核的窗口以步长S在该特征图中滑动,K为正整数,S为正整数,该电路包括:缓存器,该缓存器包括K个缓存单元,其中每个缓存单元被配置为分别存储该特征图的多个行,该多个行包括该特征图的每K行中的相应一行。

Description

数据缓存电路和方法
技术领域
本公开涉及数据缓存,特别涉及用于神经网络计算的数据缓存。
背景技术
神经网络是人工智能技术的核心。目前,神经网络得到了广泛的研究和关注,应用于包括计算机视觉、语音识别、机器人、自动驾驶等诸多人工智能应用领域中。
在实际应用中,神经网络的层级数量往往非常大,甚至多达上千层,因而神经网络的输入数据和中间数据的数据量也十分庞大。因此,神经网络的数据缓存问题构成了其速度与能效的瓶颈。
在此部分中描述的方法不一定是之前已经设想到或采用的方法。除非另有指明,否则不应假定此部分中描述的任何方法仅因其包括在此部分中就被认为是现有技术。类似地,除非另有指明,否则此部分中提及的问题不应认为在任何现有技术中已被公认。
发明内容
根据本公开的一方面,提供一种数据缓存电路,该电路被配置为缓存用于神经网络所计算的特征图中的数据,其中,该神经网络的卷积核大小为K*K个数据,对应于该卷积核的窗口以步长S在该特征图中滑动,K为正整数,S为正整数,该电路包括:缓存器,该缓存器包括K个缓存单元,其中每个缓存单元被配置为分别存储该特征图的多个行,该多个行包括该特征图的每K行中的相应一行。
根据本公开的另一方面,提供一种数据缓存方法,该方法将用于神经网络所计算的特征图中的数据存储在缓存器中,其中,该神经网络的卷积核大小为K*K个数据,对应于该卷积核的窗口以步长S在该特征图中滑动,该缓存器包括K个缓存单元,K为正整数,S为正整数,该方法包括:在每个缓存单元中,存储该特征图的多个行,该多个行包括该特征图的每K行中的相应一行。
附图说明
附图示例性地示出了实施例并且构成说明书的一部分,与说明书的文字描述一起用于讲解实施例的示例性实施方式。所示出的实施例仅出于例示的目的,并不限制权利要求的范围。在所有附图中,相同的附图标记指代类似但不一定相同的要素。
图1是示出根据示例性实施例的卷积神经网络中卷积层的计算的示意图;
图2a和图2b是示出根据示例性实施例的对应于卷积核的窗口在特征图中滑动的示意图;
图3是示出根据示例性实施例的用于神经网络的计算的系统的结构框图;
图4是示出根据本公开的第一示例性实施例的数据缓存电路的结构框图;
图5是示出根据本公开的第二示例性实施例的数据缓存电路的结构框图;
图6是示出根据本公开的第二示例性实施例的缓存器的示意图;
图7a和图7b是示出根据本公开的第二示例性实施例的寄存器组的数据读取模式和数据移位模式的示意图;
图8a-图8e是示出根据本公开的第二示例性实施例的当神经网络的卷积核在行内滑动时的数据缓存电路的示例操作的示意图;
图9a-图9e是示出根据本公开的第二示例性实施例的当神经网络的卷积核在行间滑动时的数据缓存电路的示例操作的示意图;
图10是示出根据示例性实施例的数据缓存方法的流程图。
具体实施方式
在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个元件与另一元件区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。
在本公开中对各种所述示例的描述中所使用的术语只是为了描述特定示例的目的,而并非旨在进行限制。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。此外,本公开中所使用的术语“和/或”涵盖所列出的项目中的任何一个以及全部可能的组合方式。
在实际应用中,所使用的神经网络可以是深度神经网络(Deep Neural Networks,DNN)。深度神经网络包括输入层、若干隐藏层(中间层)、输出层。输入层接收输入数据(例如,图像的像素数据、音频的振幅数据等),对该输入数据进行预处理(例如,去均值、归一化、主成分分析(Principal components analysis,PCA)降维等),将预处理后的数据传递到隐藏层。若干隐藏层中的每一层接收来自上一层的数据,对接收到的数据进行计算,然后将计算后的数据传递到下一层,其中,隐藏层可以是例如卷积层或池化层。输出层接收来自最后一层隐藏层的数据,对接收到的数据进行计算,然后输出计算结果,其中,输出层可以是例如全连接层。卷积神经网络(Convolutional Neural Network,CNN)是一种深度神经网络,其中隐藏层包含至少一个卷积层。
图1是示出根据示例性实施例的卷积神经网络中卷积层的计算的示意图。如图1所示,将特征图101与卷积核102进行卷积计算,得到输出矩阵103。
根据一些实施例,特征图101是高度为H、宽度为W、通道数为InCh的三维矩阵,该三维矩阵由InCh个高度为H、宽度为W的层构成。H、W和InCh分别为正整数,H和W可以相同也可以不同。例如,图1中的特征图是高度为5、宽度为5、通道数为3的三维矩阵。但是,应当理解,图1仅是示例性的,特征图的高度、宽度、通道数不限于此。根据一些实施例,特征图是输入层或上一隐藏层向该卷积层输入的数据。
为了便于描述,将三维矩阵中每组沿着宽度方向的数据称为三维矩阵的行,将三维矩阵中沿着宽度方向的地址称为列地址;将三维矩阵中的每组沿着高度方向的数据称为三维矩阵的列,将三维矩阵中沿着高度方向的地址称为行地址。但是,应当理解,也可以将三维矩阵中的每组沿着高度方向的数据称为三维矩阵的行,将三维矩阵中的每组沿着宽度方向的数据称为三维矩阵的列。
为了便于描述,规定三维矩阵中的行地址、列地址从地址“0”开始,行地址为i的行为第i行,列地址为j的为第j列。将三维矩阵中的二维地址表示为(行地址,列地址),例如,三维矩阵中行地址为i、列地址为j的数据的二维地址为(i,j)。
根据一些实施例,卷积核102为高度为K、宽度为K、通道数为InCh的三维矩阵,其中,为了进行卷积计算,卷积核102的通道数应当与特征图101的通道数相同。例如,图1中的卷积核为高度为3、宽度为3、通道数为3的三维矩阵。但是,应当理解,图1仅是示例性的,卷积核的高度、宽度、通道数不限于此。另外,虽然图1中的示例仅示出了1个卷积核,但是应当理解,图1仅是示例性的,卷积神经网络中的卷积核的数量不限于此。
为了便于描述,本公开中采用(高度×宽度)来描述特征图和卷积核的大小,例如,图1的特征图大小为5×5个数据,卷积核大小为3×3个数据。
将特征图101与卷积核102进行卷积计算,得到输出矩阵103,图1中使用符号
Figure BDA0002392277070000041
来表示卷积计算。特别地,对应于卷积核的窗口在特征图中以步长S沿着高度或宽度的方向滑动,其中,步长S是正整数,且S小于K。在一些实施例中,S可以是1。在另一些实施例中,S可以大于1。在窗口滑动到的每个位置,将窗口所对应的特征图中的数据的三维矩阵与卷积核102进行卷积计算,得到输出矩阵103中的各个元素。将窗口所对应的矩阵即窗口对应矩阵101a与卷积核102进行卷积计算为:将窗口对应矩阵101a与卷积核102中对应位置的元素相乘,然后将所有乘积相加,得到输出矩阵103中的计算结果103a。
根据一些实施例,选中特征图中的K行,窗口在这K行内在行方向或宽度方向上滑动。图2a中示出了窗口在K行内滑动的示意图。为了便于描述,图2a中仅绘制了对应于高度、宽度的二维平面,但是应当理解,窗口对应矩阵是由特征图的所有层上的窗口位置处的数据构成的三维矩阵。如图2a所示,将窗口位置1的窗口对应矩阵与卷积核进行卷积计算后,将窗口沿着宽度方向滑动步长S(在本例子中,S=1)到窗口位置2,然后将窗口位置2的窗口对应矩阵与卷积核进行卷积计算。其中,窗口位置1的窗口对应矩阵的后(K-S)列与窗口位置2的窗口对应矩阵的前(K-S)列重叠。
根据另一些实施例,在窗口已滑动到所述K行的末尾之后,窗口结束在当前K行中的滑动,开始在重新选中的K行中滑动。在本公开中,“窗口已滑动到所述K行的末尾”意味着窗口如果再以步长S继续进行滑动,则会超出特征图的范围。在一些情况下,在窗口已滑动为以使得窗口对应矩阵的最后一列与特征图的最后一列重叠时,窗口已滑动到所述K行的末尾。在另一些情况下,虽然窗口对应矩阵的最后一列尚未与特征图的最后一列重叠,但特征图的最后一列的列地址与窗口对应矩阵的最后一列的列地址之差已小于S,则窗口也已滑动到所述K行的末尾,因为窗口如果再以步长S继续进行滑动,则会超出特征图的范围。“窗口已滑动到所述K行的末尾之后”意味着已完成了窗口到所述K行的末尾的滑动操作以及相应数据输出操作。图2b示出了窗口在行间滑动的示意图。与图2a类似,图2b中也是对应于高度、宽度的二维平面。如图2b所示,当窗口已滑动到所述K行的末尾(对应于当前K行的最后K列的窗口位置3)之后,结束在当前K行中的滑动,并且选中当前K行中的后(K-S)行和当前K行下方的S行作为新的K行。窗口从原先的窗口位置3移动到对应于新的K行的前K列的窗口位置4,开始在新的K行中的滑动。
虽然图2a、2b中的示例示出了窗口滑动的步长为1,但是应当理解,图2仅是示例性的,卷积神经网络中窗口滑动的步长不限于此。
图3是示出根据示例性实施例的用于神经网络的计算的系统300的结构框图。如图3所示,计算系统300包括数据缓存电路301和计算电路302。其中,数据缓存电路301缓存用于神经网络计算的输入数据,并且将所缓存的数据输出到计算电路302。
根据一些实施例,数据缓存电路301缓存用于神经网络所计算的特征图的数据,计算电路302加载了神经网络的卷积核的数据。根据一些实施例,数据缓存电路301依次向计算电路302输出窗口对应矩阵的数据,而计算电路302对接收到的窗口对应矩阵和已加载的卷积核进行计算,得到输出矩阵中的各个计算结果。
由于数据缓存电路301缓存有特征图的所有数据,因此希望减少特征图所占用的存储空间。本公开通过简化数据缓存电路301中的缓存寻址逻辑来减少特征图所占用的存储空间。
图4是示出根据本公开的第一示例性实施例的数据缓存电路400的结构框图。如图4所示,电路400包括缓存器401和缓存控制器402。
根据一些实施例,将所有窗口位置的窗口对应矩阵分别存储在缓存器401中,缓存控制器402控制缓存器401输出当前的窗口对应矩阵。例如,将图2a中窗口位置1的窗口对应矩阵、窗口位置2的窗口对应矩阵均存储在缓存器401中。当窗口位于窗口位置1时,缓存器401输出窗口位置1的窗口对应矩阵;当窗口位于窗口位置2时,缓存器输出窗口位置2的窗口对应矩阵。由于窗口位置1的窗口对应矩阵与窗口位置2的窗口对应矩阵部分重叠,缓存器401中重复存储了重叠的部分。因此,虽然此时缓存器401的寻址逻辑较为简单,但是重复存储了特征图中的大量数据,造成存储空间浪费。
根据另一些实施例,将特征图对应的三维矩阵存储在缓存器401中,缓存控制器402控制缓存器401依次输出当前窗口位置中每个二维地址对应的数据。例如,当窗口位于图2a的窗口位置1时,依次输出特征图中地址为(1,1)、(1,2)、(1,3)、(2,1)、(2,2)、(2,3)、(3,1)、(3,2)、(3,3)的数据。此时,缓存器401中没有重复存储数据。但是,由于窗口对应矩阵中的数据并不是连续地存储在缓存器401中,此时缓存器401的寻址逻辑较为复杂。
图5是示出根据本公开的第二示例性实施例的数据缓存电路500的结构框图。
根据本公开中的实施例,电路500被配置为缓存用于神经网络所计算的特征图中的数据,其中,该神经网络的卷积核大小为K×K个数据,对应于该卷积核的窗口以步长S在该特征图中滑动,K为正整数,S为正整数。电路500包括缓存器501,该缓存器501包括K个缓存单元5010-501(K-1),其中每个缓存单元被配置为分别存储该特征图的多个行,所述多个行包括该特征图的每K行中的相应一行。其中,特征图的每K行为特征图中的连续的K行,例如,特征图的第0行-第(K-1)行、特征图的第1行-第K行。
如图2a所示,当对应于卷积核的窗口在特征图中的每K行中在宽度方向上进行滑动时,窗口对应矩阵为特征图的每K行中的连续的K列。在本公开中,由于每个缓存单元存储了特征图的每K行中的相应一行,特征图的每K行分别存储在K个不同的缓存单元5010-501(K-1)中。因此,仅需要向缓存单元5010-501(K-1)提供列地址,缓存单元5010-501(K-1)即可输出每K行中的一列中的数据,而无需对该列中的所有数据一一寻址,简化了寻址逻辑。
根据一些实施例,特征图的行是特征图中每组沿着宽度方向的数据,特征图的列是特征图中每组沿着高度方向的数据。根据另一些实施例,特征图的行是特征图中每组沿着高度方向的数据,特征图的列是特征图中每组沿着宽度方向的数据。
根据本公开中的实施例,对于所述特征图的每一行,将行地址除以K所得到的余数对应于存储所述特征图的该行的缓存单元的序号。
图6示出了根据一些实施例的缓存器501中的缓存单元5010-501(K-1)所存储的数据。如图6所示,对于特征图中的第0行,由于0除以K所得的余数为0,将特征图的第0行存储在缓存单元5010中;对于特征图中的第K行,由于K除以K所得的余数也为0,将特征图的第K行存储在缓存单元5010中。类似地,将特征图的第1行、第(K+1)行存储在缓存单元5011中,将特征图的第(K-1)行和第(2K-1)行存储在缓存单元501(K-1)中。
如参考图2a所描述的,对应于卷积核的窗口在特征图中连续的K行中在宽度方向上进行滑动。假设连续的K行中的首行的行地址为i,则连续的K行的行地址为i、i+1、…i+(K-1)。因此,连续的K行的行地址除以K所得到的余数例如可以分别依次为0、1、…、(K-1),或者例如可以依次分别为q、1+q、…、(K-1)、0、1、…、(q-1),其中q是小于K的正整数,是i除以K的余数。由于行地址除以K所得到的余数对应于存储该行的缓存单元的序号,因此特征图中连续的K行分别存储在K个缓存单元中。
根据一些实施例,根据特征图的大小来设计缓存单元的容量。高度为H、宽度为W、通道数为InCh的特征图具有H行,每行包含特征图中的W个数据,即(W*InCh)个数据。规定H除以K的整数商为M,则缓存单元5010中存储了M行,即存储了特征图的(M*W*InCh)个数据。缓存单元的容量应设计为足以储存(M*W*InCh)个数据。
根据本公开中的实施例,电路500还包括K个寄存器组5020-502(K-1),每个寄存器组被配置为接收来自对应的缓存单元的数据,并且将所存储的数据输出到计算电路。
根据一些实施例,寄存器组5020-502(K-1)向计算电路输出当前窗口对应矩阵的数据,其中,每个寄存器组输出窗口对应矩阵中的对应行的数据。特别地,寄存器组5020输出窗口对应矩阵中的第0行数据,寄存器组5021输出窗口对应矩阵中的第1行数据,…,寄存器组502(K-1)输出窗口对应矩阵中的第(K-1)行数据。
根据本公开中的实施例,电路500还包括缓存控制器503,缓存控制器503被配置为:选中该特征图中连续的K行;控制缓存器501以输出窗口所对应的矩阵中的数据;使窗口在该K行中沿行方向滑动;以及在窗口滑动后,控制缓存器501以输出该窗口所对应的矩阵的后S列。
根据一些实施例,当窗口开始在所选中的K行中滑动时,窗口位于该K行中的第0列-第(K-1)列,缓存控制器503控制缓存器501输出该K行中第0列-第(K-1)列中的数据。根据另一些实施例,在窗口每次滑动后,如上面参考图2a所述,滑动前的窗口对应矩阵的后(K-S)列与滑动后的窗口对应矩阵的前(K-S)列重叠,因此,缓存控制器503仅需要控制缓存器501再输出窗口对应矩阵中不重叠的后S列中的数据。
根据本公开中的实施例,其中,该K行中的每一行对应于该K个缓存单元中的相应缓存单元中的相应一行,缓存控制器503还被配置为:对于每个缓存单元,控制该缓存单元以按照列地址逐列输出该相应一行中的数据。如上所述,特征图中连续的K行分别存储在K个缓存单元中,因此,对于每个缓存单元,缓存控制器503分别选中其中所存储的一行。
根据一些实施例,缓存控制器503控制所有缓存单元5010-501(K-1)同时输出同一列地址的数据。由于每个缓存单元输出所选中的K行中的一行,所以当所有缓存单元5010-501(K-1)同时输出同一列地址的数据时,缓存器501输出所选中的K行中的一列。
当窗口在所选中的K行中滑动时,缓存器501仅输出滑动前后的窗口对应矩阵中不重叠的后S列的数据,因此,在每次窗口滑动后,每个缓存单元都从当前的列地址开始,继续输出窗口对应矩阵的后S列数据,而无需回到窗口对应矩阵的第一列。因而,当窗口在所选中的K行中滑动时,缓存单元按照列地址逐列输出所选中的行中的数据,而无需在窗口每次滑动后回到当前列地址之前的地址。
对于缓存器而言,当乱序地读取其中所存储的数据时,寻址逻辑复杂,数据读取速度较慢;而当顺序地输出其中所存储的数据时,寻址逻辑简单,数据读取速度加快。由于缓存单元顺序地输出所选中的行中的数据,简化了寻址逻辑,提高了数据读取速度。
根据一些实施例,如上面参考图2b所述,在该窗口滑动到特征图的当前选中的K行的末尾之后,窗口结束在当前选中的K行中的滑动,开始在特征图的重新选中的K行中滑动,其中,原有的K行中的后(K-S)行与重新选中的K行中的前(K-S)行重叠。
根据本公开中的实施例,缓存控制器503还被配置为:从该特征图的第1个行地址开始,选中连续的K行;在该窗口滑动到该K行的末尾之后,重新选中该K行中的排在第(S+1)的行至排在第K的行以及排在该K行之后的S行;控制该缓存器从第1个列地址开始,输出重新选中的K行。
根据本公开中的实施例,缓存控制器503还被配置为:在该窗口滑动到该K行的末尾之后,对于输出该K行中的排在第1的行至排在第S的行的缓存单元,选中其中所存储的下一行,对于输出该K行中的排在第(S+1)的行至排在第K的行的缓存单元,仍然选中当前所选中的行;控制每个缓存单元以从所选中的行中的第1个列地址开始,输出该所选中的行。
例如,当窗口在特征图的第0行-第(K-1)行中滑动时,缓存单元5010-501(S-1)输出该K行中的排在第1的行至排在第S的行,即,特征图的第0行-第(S-1)行,缓存单元501S-501(K-1)输出该K行中的排在第(S+1)的行至排在第K的行,即,特征图的第S行-第(K-1)行。当该窗口滑动到该K行的末尾之后,对于缓存单元5010,选中其中所存储的下一行,即,特征图的第K行,类似地,对于缓存单元5011,选中特征图的第(K+1)行,…,对于缓存单元501(S-1),选中特征图的第(K+S-1)行。
根据本公开中的实施例,电路500还包括复用器504,复用器504被配置为将来自每个缓存单元的数据传递到对应的寄存器组。如上所述,每个寄存器组接收窗口对应矩阵中的对应行中的数据并将其输出到计算电路。然而,当窗口在行间滑动时,每个缓存单元的所选中的行对应于窗口对应矩阵中的不同行,因此应当将来自该缓存单元的数据传递到不同的寄存器组。
根据一些实施例,随着窗口在特征图的行间滑动,复用器504相应地改变输出数据的缓存单元与接收数据的寄存器组的对应关系。例如,当窗口在特征图的第0行-第(K-1)行中滑动时,缓存单元5010输出特征图的第0行,即,窗口对应矩阵的第0行,此时,复用器504将来自缓存单元5010的数据传递到寄存器组5020;当窗口在特征图的第S行-第(K+S-1)行中滑动时,缓存单元5010输出特征图的第K行,即,窗口对应矩阵的第(K-S)行,此时,复用器504将来自缓存单元5010的数据传递到寄存器组502(K-S)。
根据本公开中的实施例,缓存器501包括随机存取存储器RAM。
图7a-图7b是示出根据本公开的第二示例性实施例的寄存器组的数据读取模式和数据移位模式的示意图。根据本公开中的实施例,每个寄存器组700包括写寄存器701,被配置为接收来自对应的缓存单元的数据;以及计算寄存器702,被配置为接收来自写寄存器701的数据,并且将所寄存的数据输出到计算电路。
根据本公开中的实施例,当寄存器组700处于数据读取模式时,如图7a所示,写寄存器701接收来自对应的缓存单元的数据,计算寄存器702将所寄存的数据输出到计算电路;当寄存器组700处于数据移位模式时,如图7b所示,写寄存器701将所寄存的数据移位到计算寄存器702中。
根据一些实施例,寄存器组700交替处于数据读取模式和数据移位模式。当寄存器组700处于数据读取模式时,计算寄存器702将当前窗口对应矩阵的对应行输出到计算电路,此时计算寄存器702中所寄存的数据不变;写寄存器701接收滑动前后窗口对应矩阵的对应行中的不重叠部分,即,滑动后的窗口对应矩阵的对应行中的后S列。当寄存器组700处于数据移位模式时,写寄存器701将在数据读取模式中接收到的数据移位到计算寄存器702,计算寄存器702中的数据更新为滑动后的窗口对应矩阵的对应行的数据。由于在计算寄存器702计算电路输出当前窗口对应矩阵的同时,写寄存器701接收来自缓存单元的数据,并且仅需要接收滑动前后窗口对应矩阵的对应行中的不重叠部分的数据,减小了访问缓存器的延迟。
根据本公开中的实施例,计算寄存器702包括:K个寄存器单元7021-702K,该K个寄存器单元中的最后一个寄存器单元702K被配置为接收来自写寄存器701的数据。其中,响应于接收到来自写寄存器701的数据,该K个寄存器单元中的后(K-1)个单元7022-702K中的每一个将其中所寄存的数据移位到前一个寄存器单元。
根据一些实施例,当窗口开始在特征图的K行内滑动时,写寄存器701将窗口对应矩阵中的对应行中的数据按照列地址依次移位到寄存器单元7021-702K中。特别地,在第1时刻,写寄存器701将对应行中的第0列中的数据移位到寄存器单元702K中;在第2时刻,写寄存器701将对应行中的第1列中的数据移位到寄存器单元702K中,寄存器单元702K将对应行中的第0列数据移位到寄存器单元702(K-1)中;…;在第K时刻,写寄存器701将对应行中的第(K-1)列数据移位到寄存器单元702K中,寄存器单元7022-702K也将其中所寄存的数据移位到上一个寄存器单元,此时,寄存器单元7021寄存了对应行的第0列,寄存器单元7022寄存了对应行的第1列,…,寄存器单元702K寄存了对应行的第(K-1)列。
根据另一些实施例,当窗口在特征图的K行内滑动时,写寄存器701将滑动后的窗口对应矩阵中的对应行的后S列中的数据按照列地址依次移位到寄存器单元702(K-S+1)-702K中,而将原先寄存器单元702(K-S+1)-702K中所寄存的数据移位到寄存器单元7021-702(K-S)中。
根据本公开中的实施例,在任何缓存单元所输出特征图的行改变的情况下,清空每个寄存器组中的计算寄存器。如上所述,随着窗口在特征图的行间滑动,S个缓存单元改变所输出的行,而每个寄存器组所输出的行也发生变化。因此,在窗口开始在新的K行中滑动时,清空计算寄存器中的滑动前所输出的行的数据,以寄存滑动后的所输出行的数据。
根据本公开中的实施例,特征图中的每个数据包括所有通道上的二维地址相同的数据,其中,二维地址包括每个数据的行地址、列地址。
根据本公开中的实施例,计算电路为向量-矩阵乘法计算电路或者存算一体电路。
图8a-图8e是示出根据本公开的第二示例性实施例的当神经网络的卷积核在行内滑动时的数据缓存电路的示例操作的示意图。其中,特征图的大小为5×5个数据,卷积核的大小为3×3个数据,窗口滑动的步长为1。
如图8a-图8e所示,此时窗口在特征图的第0行-第2行中滑动,此时,缓存单元8010输出特征图的第0行,缓存单元8011输出特征图的第1行,缓存单元8012输出特征图的第2行。寄存器组8020输出窗口对应矩阵的第0行,因此接收来自缓存单元8010的数据;寄存器组8021输出窗口对应矩阵的第1行,因此接收来自缓存单元8011的数据;寄存器组8022输出窗口对应矩阵的第2行,因此接收来自缓存单元8012的数据。
如图8a-8c所示,当窗口开始在特征图的第0行-第2行中滑动时,窗口位于窗口位置1处,窗口位置1对应于特征图的第0行-第2行的第0列-第2列。如图8a所示,寄存器组8020-8022均处于数据移位模式。在每个寄存器组中,写寄存器寄存有上次数据读取模式时从对应缓存单元接收到的数据,即,特征图的对应行的第0列。此时,写寄存器将其中所寄存的特征图的对应行的第0列移位到计算寄存器中。类似地,在图8b中,在每个寄存器组中,写寄存器将其中所寄存的特征图的对应行的第1列移位到计算寄存器中,计算寄存器中寄存有特征图的对应行的第0列、第1列;在图8c中,每个寄存器组中,写寄存器将其中所寄存的特征图的对应行的第2列移位到计算寄存器中,计算寄存器中寄存有特征图的对应行的第0列-第2列。
如图8d所示,窗口已从窗口位置1滑动到窗口位置2,窗口位置2对应于特征图的第0行-第2行的第1列-第3列。此时,寄存器组8020-8022均处于数据读取模式。在每个寄存器组中,计算寄存器输出窗口位置1的窗口对应矩阵的对应行,写寄存器则接收到特征图的对应行的第3列数据。
如图8e所示,窗口位于窗口位置2。此时,寄存器组8020-8022均处于数据移位模式。在每个寄存器组中,写寄存器将特征图的对应行的第3列中的数据移位到计算寄存器中,而计算寄存器中的寄存单元也依次将其中所寄存的数据移位到前一个寄存器单元。经过数据移位,寄存器组8020-8022中所寄存的数据更新为滑动后的窗口位置2的窗口对应矩阵的数据。
图9a-图9e是示出根据本公开的第二示例性实施例的当神经网络的卷积核在行间滑动时的数据缓存电路的示意图。
如图9a-图9e所示,在窗口位置3,窗口结束在窗口第0行-第2行中的滑动;在窗口位置4,窗口开始在第1行-第3行中的滑动。
如图9a所示,窗口位于窗口位置3,窗口位置3对应于特征图的第0行-第2行的第2列-第4列。此时,如参考图8a-图8c所述,寄存器组8020接收来自缓存单元8010的数据;寄存器组8021接收来自缓存单元8011的数据;寄存器组8022接收来自缓存单元8012的数据。
如图9b-图9e所示,窗口已从窗口位置3滑动到窗口位置4。窗口位置4对应于特征图的第1行-第3行的第0列-第2列。缓存单元8010输出特征图的第3行,缓存单元8011输出特征图的第1行,缓存单元8012输出特征图的第2行。寄存器组8020输出窗口对应矩阵的第0行,因此接收来自缓存单元8011的数据;寄存器组8021输出窗口对应矩阵的第1行,因此接收来自缓存单元8012的数据;寄存器组8022输出窗口对应矩阵的第2行,因此接收来自缓存单元8010的数据。其中,在图9b中,由于缓存单元8010输出的行从特征图的0行改变为特征图的第3行,清空寄存器组8020-8022中的计算寄存器中所寄存的特征图第0行的数据。
在图9b-图9d中,如参考图8a-图8c所述,当窗口开始在特征图第1行-第3行中滑动时,缓存单元8010-8012将窗口位置4的窗口对应矩阵逐列输出到寄存器组8020-8022。特别地,图9b示出了将特征图的第1行-第3行的第0列移位到寄存器组8020-8022的计算寄存器中;图9c示出了将特征图的第1行-第3行的第1列移位到寄存器组8020-8022的计算寄存器中;图9d示出了将特征图的第1行-第3行的第2列移位到寄存器组8020-8022的计算寄存器中。
在图9e中,如参考图8d所述,寄存器组8020-8022中的计算寄存器输出窗口位置4对应的窗口对应矩阵。
图10是示出本公开的示例性实施例的数据缓存方法的流程图。该方法将用于神经网络所计算的特征图中的数据存储在缓存器中,其中,该神经网络的卷积核大小为K*K个数据,对应于该卷积核的窗口以步长S在该特征图中滑动,该缓存器包括K个缓存单元,K为正整数,S为正整数。
在步骤S1001处,在每个缓存单元中,存储该特征图的多个行,该多个行包括该特征图的每K行中的相应一行。
根据一些实施例,该方法还包括:对于该特征图的每一行,将行地址除以K所得到的余数对应于存储该特征图的该行的缓存单元的序号。
根据一些实施例,该方法还包括:对于K个寄存器组中的每个寄存器组,接收来自对应的缓存单元的数据,并且将所存储的数据输出到计算电路。
根据一些实施例,该方法还包括:缓存控制器选中该特征图中连续的K行;该缓存控制器控制该缓存器输出窗口所对应的矩阵中的数据;该缓存控制器使该窗口在该K行中沿行方向滑动;以及在该窗口每次滑动后,该缓存控制器控制该缓存器以输出该窗口对应矩阵的后S列。
根据一些实施例,该K行中的每一行对应于该K个缓存单元中的相应缓存单元中的相应一行,该方法还包括:对于每个缓存单元,该缓存控制器控制该缓存单元以按照列地址逐列输出该相应一行中的数据。
根据一些实施例,该方法还包括:该缓存控制器从该特征图的第1个行地址开始,选中连续的K行;在该窗口滑动到该K行的末尾之后,该缓存控制器重新选中该K行中的排在第(S+1)的行至排在第K的行以及排在该K行之后的S行;该缓存控制器控制该缓存器从第1个列地址开始,输出重新选中的K行。
根据一些实施例,该方法还包括:在该窗口滑动到该K行的末尾之后,对于输出该K行中的排在第1的行至排在第S的行的缓存单元,该缓存控制器选中其中所存储的下一行,对于输出该K行中的排在第(S+1)的行至排在第K的行的缓存单元,该缓存控制器仍然选中当前所选中的行;该缓存控制器控制每个缓存单元从所选中的行中的第1位列地址开始,输出该所选中的行。
根据一些实施例,该方法还包括:复用器将来自每个缓存单元的数据传递到对应的寄存器组。
根据一些实施例,其中每个寄存器组包括写寄存器和计算寄存器,该方法还包括:该写寄存器接收来自对应的缓存单元的数据;该计算寄存器接收来自该写寄存器的数据,并且将所寄存的数据输出到该计算电路。
根据一些实施例,该方法还包括:当该寄存器组处于数据读取模式时,该写寄存器接收来自对应的缓存单元的数据,该计算寄存器将所寄存的数据输出到该计算电路;以及当该寄存器组处于数据移位模式时,该写寄存器将所寄存的数据移位到该计算寄存器。
根据一些实施例,该计算寄存器包括K个寄存器单元,该方法还包括:该K个寄存器单元中的最后一个寄存器单元接收来自该写寄存器的数据,其中,响应于接收到来自该写寄存器的数据,该K个寄存器单元中的后(K-1)个中的每一个将其中所寄存的数据移位到前一个寄存器单元。
根据一些实施例,该方法还包括:在任何缓存单元所输出的行改变的情况下,清空每个寄存器组中的该计算寄存器。
根据一些实施例,该特征图中的每个数据包括所有通道上的二维地址相同的数据,其中,每个数据的二维地址包括该数据的行地址、列地址。
还应该理解,可以根据具体要求而进行各种变型。例如,也可以使用定制硬件,和/或可以用硬件、固件、中间件、微代码,硬件描述语言或其任何组合来实现特定元件。例如,所公开的方法和设备中的一些或全部可以通过使用根据本公开的电路原理和方法,用汇编语言或硬件编程语言(诸如VERILOG,VHDL,C++)对硬件(例如,包括现场可编程门阵列(FPGA)和/或可编程逻辑阵列(PLA)的可编程逻辑电路)进行编程来实现。
以下描述本公开的一些示例性方面。
方面1.一种数据缓存电路,所述电路被配置为缓存用于神经网络所计算的特征图中的数据,其中,所述神经网络的卷积核大小为K*K个数据,对应于所述卷积核的窗口以步长S在所述特征图中滑动,K为正整数,S为正整数,所述电路包括:
缓存器,所述缓存器包括K个缓存单元,其中每个缓存单元被配置为分别存储所述特征图的多个行,所述多个行包括所述特征图的每K行中的相应一行。
方面2.如方面1所述的电路,其中,对于所述特征图的每一行,将行地址除以K所得到的余数对应于存储所述特征图的该行的缓存单元的序号。
方面3.如方面1所述的电路,还包括:
K个寄存器组,其中,每个所述寄存器组被配置为接收来自对应的缓存单元的数据,并且将所存储的数据输出到计算电路。
方面4.如方面1所述的电路,还包括缓存控制器,所述缓存控制器被配置为:
选中所述特征图中连续的K行;
控制所述缓存器以输出窗口所对应的矩阵中的数据;
使所述窗口在所述K行中沿行方向滑动;以及
在所述窗口滑动后,控制所述缓存器以输出所述窗口所对应的矩阵的后S列。
方面5.如方面4所述的电路,其中,所述K行中的每一行对应于所述K个缓存单元中的相应缓存单元中的相应一行,所述缓存控制器还被配置为:
对于每个缓存单元,控制所述缓存单元以按照列地址逐列输出所述相应一行中的数据。
方面6.如方面5所述的电路,所述缓存控制器还被配置为:
从所述特征图的第1个行地址开始,选中连续的K行;
在所述窗口滑动到所述K行的末尾之后,重新选中所述K行中的排在第(S+1)的行至排在第K的行以及排在所述K行之后的S行;
控制所述缓存器从第1个列地址开始,输出重新选中的K行。
方面7.如方面5所述的电路,其中,所述缓存控制器还被配置为:
在所述窗口滑动到所述K行的末尾之后,对于输出所述K行中的排在第1的行至排在第S的行的缓存单元,选中其中所存储的下一行,对于输出所述K行中的排在第(S+1)的行至排在第K的行的缓存单元,仍然选中当前所选中的行;
控制每个缓存单元以从所选中的行中的第1个列地址开始,输出所述所选中的行。
方面8.如方面3所述的电路,还包括:
复用器,被配置为将来自每个缓存单元的数据传递到对应的寄存器组。
方面9.如方面3所述的电路,其中,每个寄存器组包括:
写寄存器,被配置为接收来自对应的缓存单元的数据;以及
计算寄存器,被配置为接收来自所述写寄存器的数据,并且将所寄存的数据输出到所述计算电路。
方面10.如方面9所述的电路,其中,每个寄存器组被配置为:
当该寄存器组处于数据读取模式时,所述写寄存器接收来自对应的缓存单元的数据,所述计算寄存器将所寄存的数据输出到所述计算电路;以及
当该寄存器组处于数据移位模式时,所述写寄存器将所寄存的数据移位到所述计算寄存器。
方面11.如方面9所述的电路,其中,所述计算寄存器包括:
K个寄存器单元,所述K个寄存器单元中的最后一个寄存器单元被配置为接收来自所述写寄存器的数据,
其中,响应于接收到来自所述写寄存器的数据,所述K个寄存器单元中的后(K-1)个中的每一个将其中所寄存的数据移位到前一个寄存器单元。
方面12.如方面9所述的电路,其中,在任何缓存单元所输出的行改变的情况下,清空每个寄存器组中的所述计算寄存器。
方面13.如方面1所述的电路,其中,所述特征图中的每个数据包括所有通道上的二维地址相同的数据,其中,每个数据的二维地址包括该数据的行地址、列地址。
方面14.如方面1所述的电路,其中,所述缓存器包括随机存取存储器RAM。
方面15.如方面3所述的电路,其中,所述计算电路为向量-矩阵乘法计算电路或者存算一体电路。
方面16.一种数据缓存方法,所述方法将用于神经网络所计算的特征图中的数据存储在缓存器中,其中,所述神经网络的卷积核大小为K*K个数据,对应于所述卷积核的窗口以步长S在所述特征图中滑动,所述缓存器包括K个缓存单元,K为正整数,S为正整数,所述方法包括:
在每个缓存单元中,存储所述特征图的多个行,所述多个行包括所述特征图的每K行中的相应一行。
方面17.如方面16所述的方法,所述方法还包括:
对于所述特征图的每一行,将行地址除以K所得到的余数对应于存储所述特征图的该行的缓存单元的序号。
方面18.如方面16所述的方法,所述方法还包括:
对于K个寄存器组中的每个寄存器组,接收来自对应的缓存单元的数据,并且将所存储的数据输出到计算电路。
方面19.如方面16所述的方法,所述方法还包括:
缓存控制器选中所述特征图中连续的K行;
所述缓存控制器控制所述缓存器输出窗口所对应的矩阵中的数据;
所述缓存控制器使所述窗口在所述K行中沿行方向滑动;以及
在所述窗口每次滑动后,所述缓存控制器控制所述缓存器以输出所述窗口对应的矩阵的后S列。
方面20.如方面19所述的方法,其中,所述K行中的每一行对应于所述K个缓存单元中的相应缓存单元中的相应一行,所述方法还包括:
对于每个缓存单元,所述缓存控制器控制所述缓存单元以按照列地址逐列输出所述相应一行中的数据。
方面21.如方面20所述的方法,所述方法还包括:
所述缓存控制器从所述特征图的第1个行地址开始,选中连续的K行;
在所述窗口滑动到所述K行的末尾之后,所述缓存控制器重新选中所述K行中的排在第(S+1)的行至排在第K的行以及排在所述K行之后的S行;
所述缓存控制器控制所述缓存器从第1个列地址开始,输出重新选中的K行。
方面22.如方面20所述的方法,所述方法还包括:
在所述窗口滑动到所述K行的末尾之后,对于输出所述K行中的排在第1的行至排在第S的行的缓存单元,所述缓存控制器选中其中所存储的下一行,对于输出所述K行中的排在第(S+1)的行至排在第K的行的缓存单元,所述缓存控制器仍然选中当前所选中的行;
所述缓存控制器控制每个缓存单元从所选中的行中的第1位列地址开始,输出所述所选中的行。
方面23.如方面18所述的方法,所述方法还包括:
复用器将来自每个缓存单元的数据传递到对应的寄存器组。
方面24.如方面18所述的方法,其中每个寄存器组包括写寄存器和计算寄存器,所述方法还包括:
所述写寄存器接收来自对应的缓存单元的数据;
所述计算寄存器接收来自所述写寄存器的数据,并且将所寄存的数据输出到所述计算电路。
方面25.如方面24所述的方法,所述方法还包括:
当该寄存器组处于数据读取模式时,所述写寄存器接收来自对应的缓存单元的数据,所述计算寄存器将所寄存的数据输出到所述计算电路;以及
当该寄存器组处于数据移位模式时,所述写寄存器将所寄存的数据移位到所述计算寄存器。
方面26.如方面24所述的方法,其中,所述计算寄存器包括K个寄存器单元,所述方法还包括:
所述K个寄存器单元中的最后一个寄存器单元接收来自所述写寄存器的数据,
其中,响应于接收到来自所述写寄存器的数据,所述K个寄存器单元中的后(K-1)个中的每一个将其中所寄存的数据移位到前一个寄存器单元。
方面27.如方面24所述的方法,所述方法还包括:
在任何缓存单元所输出的行改变的情况下,清空每个寄存器组中的所述计算寄存器。
方面28.如方面16所述的方法,其中,所述特征图中的每个数据包括所有通道上的二维地址相同的数据,其中,每个数据的二维地址包括该数据的行地址、列地址。
虽然已经参照附图描述了本公开的实施例或示例,但应理解,上述的方法、系统和设备仅仅是示例性的实施例或示例,本发明的范围并不由这些实施例或示例限制,而是仅由授权后的权利要求书及其等同范围来限定。实施例或示例中的各种要素可以被省略或者可由其等同要素替代。此外,可以通过不同于本公开中描述的次序来执行各步骤。进一步地,可以以各种方式组合实施例或示例中的各种要素。重要的是随着技术的演进,在此描述的很多要素可以由本公开之后出现的等同要素进行替换。

Claims (16)

1.一种数据缓存电路,所述电路被配置为缓存用于神经网络所计算的特征图中的数据,其中,所述神经网络的卷积核大小为K*K个数据,对应于所述卷积核的窗口以步长S在所述特征图中滑动,K为正整数,S为正整数,所述电路包括:
缓存器,所述缓存器包括K个缓存单元,其中每个缓存单元被配置为分别存储所述特征图的多个行,所述多个行包括所述特征图的每K行中的相应一行。
2.如权利要求1所述的电路,其中,对于所述特征图的每一行,将行地址除以K所得到的余数对应于存储所述特征图的该行的缓存单元的序号。
3.如权利要求1所述的电路,还包括:
K个寄存器组,其中,每个所述寄存器组被配置为接收来自对应的缓存单元的数据,并且将所存储的数据输出到计算电路。
4.如权利要求1所述的电路,还包括缓存控制器,所述缓存控制器被配置为:
选中所述特征图中连续的K行;
控制所述缓存器以输出窗口所对应的矩阵中的数据;
使所述窗口在所述K行中沿行方向滑动;以及
在所述窗口滑动后,控制所述缓存器以输出所述窗口所对应的矩阵的后S列。
5.如权利要求4所述的电路,其中,所述K行中的每一行对应于所述K个缓存单元中的相应缓存单元中的相应一行,所述缓存控制器还被配置为:
对于每个缓存单元,控制所述缓存单元以按照列地址逐列输出所述相应一行中的数据。
6.如权利要求5所述的电路,所述缓存控制器还被配置为:
从所述特征图的第1个行地址开始,选中连续的K行;
在所述窗口滑动到所述K行的末尾之后,重新选中所述K行中的排在第(S+1)的行至排在第K的行以及排在所述K行之后的S行;
控制所述缓存器从第1个列地址开始,输出重新选中的K行。
7.如权利要求5所述的电路,其中,所述缓存控制器还被配置为:
在所述窗口滑动到所述K行的末尾之后,对于输出所述K行中的排在第1的行至排在第S的行的缓存单元,选中其中所存储的下一行,对于输出所述K行中的排在第(S+1)的行至排在第K的行的缓存单元,仍然选中当前所选中的行;
控制每个缓存单元以从所选中的行中的第1个列地址开始,输出所述所选中的行。
8.如权利要求3所述的电路,还包括:
复用器,被配置为将来自每个缓存单元的数据传递到对应的寄存器组。
9.如权利要求3所述的电路,其中,每个寄存器组包括:
写寄存器,被配置为接收来自对应的缓存单元的数据;以及
计算寄存器,被配置为接收来自所述写寄存器的数据,并且将所寄存的数据输出到所述计算电路。
10.如权利要求9所述的电路,其中,每个寄存器组被配置为:
当该寄存器组处于数据读取模式时,所述写寄存器接收来自对应的缓存单元的数据,所述计算寄存器将所寄存的数据输出到所述计算电路;以及
当该寄存器组处于数据移位模式时,所述写寄存器将所寄存的数据移位到所述计算寄存器。
11.如权利要求9所述的电路,其中,所述计算寄存器包括:
K个寄存器单元,所述K个寄存器单元中的最后一个寄存器单元被配置为接收来自所述写寄存器的数据,
其中,响应于接收到来自所述写寄存器的数据,所述K个寄存器单元中的后(K-1)个中的每一个将其中所寄存的数据移位到前一个寄存器单元。
12.如权利要求9所述的电路,其中,在任何缓存单元所输出的行改变的情况下,清空每个寄存器组中的所述计算寄存器。
13.如权利要求1所述的电路,其中,所述特征图中的每个数据包括所有通道上的二维地址相同的数据,其中,每个数据的二维地址包括该数据的行地址、列地址。
14.如权利要求1所述的电路,其中,所述缓存器包括随机存取存储器RAM。
15.如权利要求3所述的电路,其中,所述计算电路为向量-矩阵乘法计算电路或者存算一体电路。
16.一种数据缓存方法,所述方法将用于神经网络所计算的特征图中的数据存储在缓存器中,其中,所述神经网络的卷积核大小为K*K个数据,对应于所述卷积核的窗口以步长S在所述特征图中滑动,所述缓存器包括K个缓存单元,K为正整数,S为正整数,所述方法包括:
在每个缓存单元中,存储所述特征图的多个行,所述多个行包括所述特征图的每K行中的相应一行。
CN202010118620.0A 2020-02-26 2020-02-26 数据缓存电路和方法 Active CN113313228B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202010118620.0A CN113313228B (zh) 2020-02-26 2020-02-26 数据缓存电路和方法
PCT/CN2020/080318 WO2021168944A1 (zh) 2020-02-26 2020-03-20 数据缓存电路和方法
US16/849,913 US11216375B2 (en) 2020-02-26 2020-04-15 Data caching

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010118620.0A CN113313228B (zh) 2020-02-26 2020-02-26 数据缓存电路和方法

Publications (2)

Publication Number Publication Date
CN113313228A true CN113313228A (zh) 2021-08-27
CN113313228B CN113313228B (zh) 2022-10-14

Family

ID=77370142

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010118620.0A Active CN113313228B (zh) 2020-02-26 2020-02-26 数据缓存电路和方法

Country Status (2)

Country Link
CN (1) CN113313228B (zh)
WO (1) WO2021168944A1 (zh)

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170024632A1 (en) * 2015-07-23 2017-01-26 Mireplica Technology, Llc Performance Enhancement For Two-Dimensional Array Processor
CN108133264A (zh) * 2016-12-01 2018-06-08 上海兆芯集成电路有限公司 执行高效3维卷积的神经网络单元
CN108182471A (zh) * 2018-01-24 2018-06-19 上海岳芯电子科技有限公司 一种卷积神经网络推理加速器及方法
CN108629406A (zh) * 2017-03-24 2018-10-09 展讯通信(上海)有限公司 用于卷积神经网络的运算装置
CN108681984A (zh) * 2018-07-26 2018-10-19 珠海市微半导体有限公司 一种3*3卷积算法的加速电路
CN108805266A (zh) * 2018-05-21 2018-11-13 南京大学 一种可重构cnn高并发卷积加速器
CN109214506A (zh) * 2018-09-13 2019-01-15 深思考人工智能机器人科技(北京)有限公司 一种卷积神经网络的建立装置及方法
US20190042923A1 (en) * 2017-08-07 2019-02-07 Intel Corporation System and method for an optimized winograd convolution accelerator
CN109934339A (zh) * 2019-03-06 2019-06-25 东南大学 一种基于一维脉动阵列的通用卷积神经网络加速器
US20190205735A1 (en) * 2017-12-29 2019-07-04 Facebook, Inc. Lowering hardware for neural networks
US20190311242A1 (en) * 2016-12-14 2019-10-10 Shanghai Cambricon Information Technology Co., Ltd. Neural network convolution computation method and device, and computer-readable storage medium
CN110390384A (zh) * 2019-06-25 2019-10-29 东南大学 一种可配置的通用卷积神经网络加速器
CN110705687A (zh) * 2019-09-05 2020-01-17 北京三快在线科技有限公司 卷积神经网络硬件计算装置及方法

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170024632A1 (en) * 2015-07-23 2017-01-26 Mireplica Technology, Llc Performance Enhancement For Two-Dimensional Array Processor
CN108133264A (zh) * 2016-12-01 2018-06-08 上海兆芯集成电路有限公司 执行高效3维卷积的神经网络单元
US20190311242A1 (en) * 2016-12-14 2019-10-10 Shanghai Cambricon Information Technology Co., Ltd. Neural network convolution computation method and device, and computer-readable storage medium
CN108629406A (zh) * 2017-03-24 2018-10-09 展讯通信(上海)有限公司 用于卷积神经网络的运算装置
US20190042923A1 (en) * 2017-08-07 2019-02-07 Intel Corporation System and method for an optimized winograd convolution accelerator
US20190205735A1 (en) * 2017-12-29 2019-07-04 Facebook, Inc. Lowering hardware for neural networks
CN108182471A (zh) * 2018-01-24 2018-06-19 上海岳芯电子科技有限公司 一种卷积神经网络推理加速器及方法
CN108805266A (zh) * 2018-05-21 2018-11-13 南京大学 一种可重构cnn高并发卷积加速器
CN108681984A (zh) * 2018-07-26 2018-10-19 珠海市微半导体有限公司 一种3*3卷积算法的加速电路
CN109214506A (zh) * 2018-09-13 2019-01-15 深思考人工智能机器人科技(北京)有限公司 一种卷积神经网络的建立装置及方法
CN109934339A (zh) * 2019-03-06 2019-06-25 东南大学 一种基于一维脉动阵列的通用卷积神经网络加速器
CN110390384A (zh) * 2019-06-25 2019-10-29 东南大学 一种可配置的通用卷积神经网络加速器
CN110705687A (zh) * 2019-09-05 2020-01-17 北京三快在线科技有限公司 卷积神经网络硬件计算装置及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Y CHANG, Y ZHANG, L LI, J CAO, D YANG: "IP softcore for a bubbling convolutional accelerator in a neural net work", 《ELECTRONICS WORLD》 *
王昆: "深度学习中的卷积神经网络硬件加速系统设计研究", 《中国优秀硕士学位论文全文数据库-信息科技辑》 *

Also Published As

Publication number Publication date
CN113313228B (zh) 2022-10-14
WO2021168944A1 (zh) 2021-09-02

Similar Documents

Publication Publication Date Title
CN110705687B (zh) 卷积神经网络硬件计算装置及方法
CN108304922B (zh) 用于神经网络计算的计算设备和计算方法
CN110597555B (zh) 非易失性存内计算芯片及其运算控制方法
CN109034373B (zh) 卷积神经网络的并行处理器及处理方法
US20170011288A1 (en) Neural network processor
US11568200B2 (en) Accelerating sparse matrix multiplication in storage class memory-based convolutional neural network inference
CN111047031B (zh) 用于神经网络中的数据重用的移位装置
EP0422348A2 (en) Two-dimensional systolic array for neural networks, and method
US11562229B2 (en) Convolution accelerator using in-memory computation
US11934798B2 (en) Counter-based multiplication using processing in memory
CN107533459A (zh) 使用电阻存储器阵列的数据处理
CN116303111A (zh) 使用专用计算单元的硬件双缓存
EP3839832A1 (en) Method and apparatus with neural network convolution operation
CN110866596B (zh) 半导体集成电路
CN110580519B (zh) 一种卷积运算装置及其方法
US11216375B2 (en) Data caching
CN108764182B (zh) 一种优化的用于人工智能的加速方法和装置
CN113313228B (zh) 数据缓存电路和方法
US11748100B2 (en) Processing in memory methods for convolutional operations
US20210390379A1 (en) Data Loading
CN112639836A (zh) 数据处理装置、电子设备和数据处理方法
CN109582911B (zh) 用于实行卷积的计算装置及实行卷积的计算方法
CN108920097B (zh) 一种基于交织存储的三维数据处理方法
CN114724595B (zh) 一种卷积运算加速器及卷积运算方法
CN113807506B (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
GR01 Patent grant
GR01 Patent grant