CN113537479A - 神经网络电路、边缘设备以及神经网络运算方法 - Google Patents
神经网络电路、边缘设备以及神经网络运算方法 Download PDFInfo
- Publication number
- CN113537479A CN113537479A CN202110388524.2A CN202110388524A CN113537479A CN 113537479 A CN113537479 A CN 113537479A CN 202110388524 A CN202110388524 A CN 202110388524A CN 113537479 A CN113537479 A CN 113537479A
- Authority
- CN
- China
- Prior art keywords
- circuit
- memory
- quantization
- convolution operation
- layer
- 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
- G06F17/153—Multidimensional correlation or convolution
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- 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
-
- 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/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
- Electrotherapy Devices (AREA)
- Details Of Television Systems (AREA)
Abstract
提供一种能够嵌入于IoT设备等嵌入式设备且高性能的神经网络电路、边缘设备以及神经网络运算方法。神经网络电路具备:第一存储器,保存输入数据;卷积运算电路,对保存于所述第一存储器的所述输入数据和权重进行卷积运算;第二存储器,保存所述卷积运算电路的卷积运算输出数据;以及量化运算电路,对保存于所述第二存储器的所述卷积运算输出数据进行量化运算,其中,所述量化运算电路的量化运算输出数据被保存于所述第一存储器,保存于所述第一存储器的所述量化运算输出数据作为所述输入数据被输入至所述卷积运算电路。
Description
技术领域
本发明涉及神经网络电路、边缘设备以及神经网络运算方法。本申请基于2020年4月13日在日本申请的特愿2020-071932号而主张优先权,并在此引用其内容。
背景技术
近年来,卷积神经网络(Convolutional Neural Network:CNN)被用作图像识别等的模型。卷积神经网络为具有卷积层、池化层的多层构造,需要卷积运算等大量的运算。已研究了各种使基于卷积神经网络的运算高速化的运算方法(专利文献1等)。
现有技术文献
专利文献
专利文献1:日本特开2018-077829号公报
发明内容
另一方面,期望在IoT设备等嵌入式设备中也实现利用卷积神经网络的图像识别等。在嵌入式设备中,难以嵌入专利文献1等所记载的大规模专用电路。另外,在CPU、存储器等硬件资源受限的嵌入式设备中,难以仅利用软件来实现卷积神经网络的充分的运算性能。
鉴于上述情况,本发明的目的在于提供能够嵌入于IoT设备等嵌入式设备且高性能的神经网络电路、边缘设备以及神经网络运算方法。
为了解决上述技术课题,本发明提出以下的方案。
本发明的第一方案的神经网络电路具备:第一存储器,保存输入数据;卷积运算电路,对保存于所述第一存储器的所述输入数据和权重进行卷积运算;第二存储器,保存所述卷积运算电路的卷积运算输出数据;以及量化运算电路,对保存于所述第二存储器的所述卷积运算输出数据进行量化运算,其中,所述量化运算电路的量化运算输出数据被保存于所述第一存储器,保存于所述第一存储器的所述量化运算输出数据作为所述输入数据被输入至所述卷积运算电路。
本发明的第一方案的神经网络运算方法为使用第一存储器区域和第二存储器区域进行卷积运算和量化运算的神经网络运算方法,对保存于所述第一存储器区域的输入数据进行层2M-1(M为自然数)的所述卷积运算,将所述层2M-1的卷积运算输出数据保存于所述第二存储器区域,对保存于所述第二存储器区域的所述层2M-1的所述卷积运算输出数据进行层2M的所述量化运算,将所述层2M的量化运算输出数据保存于所述第一存储器区域,将保存于所述第一存储器区域的所述层2M的所述量化运算输出数据作为所述输入数据来进行层2M+1的所述卷积运算,将层2M+1的所述卷积运算输出数据保存于所述第二存储器区域。
本发明的神经网络电路、边缘设备以及神经网络运算方法能够嵌入于IoT设备等嵌入式设备并且性能高。
附图说明
图1为示出卷积神经网络的图。
图2为说明卷积层进行的卷积运算的图。
图3为说明卷积运算的数据的展开的图。
图4为示出第一实施方式的神经网络电路的整体结构的图。
图5为示出该神经网络电路的工作例的时序图。
图6为示出该神经网络电路的其它工作例的时序图。
图7为该神经网络电路的DMAC的内部框图。
图8为该DMAC的控制电路的状态转变图。
图9为该神经网络电路的卷积运算电路的内部框图。
图10为该卷积运算电路的乘法运算器的内部框图。
图11为该乘法运算器的乘积累加运算单元的内部框图。
图12为该卷积运算电路的累加器电路的内部框图。
图13为该累加器电路的累加器单元的内部框图。
图14为该神经网络电路的量化运算电路的内部框图。
图15为该量化运算电路的向量运算电路和量化电路的内部框图。
图16为运算单元的框图。
图17为该量化电路的向量量化单元的内部框图。
图18为说明基于信号量(semaphore)的该神经网络电路的控制的图。
图19为第一数据流的时序图。
图20为第二数据流的时序图。
附图标记
200:卷积神经网络;100:神经网络电路(NN电路);1:第一存储器;2:第二存储器;3:DMA控制器(DMAC);4:卷积运算电路;42:乘法运算器;43:累加器电路;5:量化运算电路;52:向量运算电路;53:量化电路;6:控制器;61:寄存器;S:信号量;F1:第一数据流;F2:第二数据流;F3:第三数据流。
具体实施方式
(第一实施方式)
参照图1至图20对本发明的第一实施方式进行说明。
图1为示出卷积神经网络200(以下称为“CNN 200”)的图。第一实施方式的神经网络电路100(以下称为“NN电路100”)进行的运算为推理时使用的学习完毕的CNN 200的至少一部分。
[CNN 200]
CNN 200为包括进行卷积运算的卷积层210、进行量化运算的量化运算层220和输出层230的多层构造的网络。在CNN 200的至少一部分中,卷积层210与量化运算层220交替连结。CNN 200为被广泛用于图像识别、运动图像识别的模型。CNN 200可以还具有全连接层等具有其它功能的层(layer)。
图2为说明卷积层210进行的卷积运算的图。
卷积层210对输入数据a进行使用权重w的卷积运算。卷积层210进行以输入数据a和权重w为输入的乘积累加运算。
向卷积层210的输入数据a(也称为激活数据、特征图)为图像数据等多维数据。在本实施方式中,输入数据a为由元素(x,y,c)构成的三维张量。CNN 200的卷积层210对低位的输入数据a进行卷积运算。在本实施方式中,输入数据a的元素为2位的无符号整数(0,1,2,3)。输入数据a的元素也可以为例如4位或8位无符号整数。
在被输入至CNN 200的输入数据为例如32位浮点型等形式与向卷积层210的输入数据a不同的情况下,CNN 200可以还具有输入层,该输入层在卷积层210之前进行类型变换、量化。
卷积层210的权重w(也称为滤波器、卷积核)为具有作为能够学习的参数的元素的多维数据。在本实施方式中,权重w为由元素(i,j,c,d)构成的四维张量。权重w具有d个由元素(i,j,c)构成的三维张量(以后称为“权重wo”)。学习完毕的CNN 200中的权重w为学习完毕的数据。CNN 200的卷积层210使用低位的权重w进行卷积运算。在本实施方式中,权重w的元素为1位的带符号整数(0,1),值“0”表示+1,值“1”表示-1。
卷积层210进行式1所示的卷积运算,将输出数据f输出。在式1中,s表示步长(stride)。在图2中以虚线所示的区域示出对输入数据a应用了权重wo的区域ao(以后称为“应用区域ao”)之一。应用区域ao的元素以(x+i,y+j,c)来表示。
[数学式1]
量化运算层220对卷积层210输出的卷积运算的输出实施量化等。量化运算层220具有池化层221、批量归一化(Batch Normalization)层222、激活函数层223和量化层224。
池化层221对卷积层210输出的卷积运算的输出数据f实施平均池化(式2)、MAX池化(式3)等运算,对卷积层210的输出数据f进行压缩。在式2及式3中,u表示输入张量,v表示输出张量,T表示池化区域的大小。在式3中,max为输出针对T中包含的i与j的组合的u的最大值的函数。
[数学式2]
[数学式3]
v(x,y,c)=max(u(T·x+i,T·y+j,c)),i∈T,j∈T……(式3)
批量归一化层222利用例如式4所示的运算对量化运算层220、池化层221的输出数据进行数据分布的归一化。在式4中,u表示输入张量,v表示输出张量,α表示尺度(scale),β表示偏置(bias)。在学习完毕的CNN 200中,α及β为学习完毕的常数向量。
[数学式4]
v(x,y,c)=α(c)·(u(x,y,c)-β(c))……(式4)
激活函数层223对量化运算层220、池化层221、批量归一化层222的输出进行ReLU(式5)等激活函数的运算。在式5中,u为输入张量,v为输出张量。在式5中,max为输出自变量中的最大数值的函数。
[数学式5]
v(x,y,c)=max(0,u(x,y,c))……(式5)
量化层224基于量化参数,对池化层221、激活函数层223的输出进行例如式6所示的量化。式6所示的量化将输入张量u减位至2位。在式6中,q(c)为量化参数的向量。在学习完毕的CNN 200中,q(c)为学习完毕的常数向量。式6中的不等号“≤”也可以为“<”。
[数学式6]
输出层230为利用恒等函数、归一化指数函数(Softmax函数)等输出CNN 200的结果的层。输出层230的前级的层可以为卷积层210,也可以为量化运算层220。
在CNN 200中,量化后的量化层224的输出数据被输入至卷积层210,因此与不进行量化的其它卷积神经网络相比较,卷积层210的卷积运算的负荷小。
[卷积运算的分割]
NN电路100将卷积层210的卷积运算(式1)的输入数据分割为部分张量来运算。分割成部分张量的分割方法、分割数量没有特别限制。部分张量例如通过将输入数据a(x+i,y+j,c)分割为a(x+i,y+j,co)来形成。此外,NN电路100也能够不对卷积层210的卷积运算(式1)的输入数据进行分割而进行运算。
在卷积运算的输入数据分割中,如式7所示,式1中的变量c按照尺寸Bc的块来分割。另外,如式8所示,式1中的变量d按照尺寸Bd的块来分割。在式7中,co为偏移量,ci为0至(Bc-1)的索引。在式8中,do为偏移量,di为0至(Bd-1)的索引。此外,尺寸Bc与尺寸Bd可以相同。
[数学式7]
c=co·Bc+ci……(式7)
[数学式8]
d=do·Bd+di……(式8)
式1中的输入数据a(x+i,y+j,c)在c轴向上以尺寸Bc被分割,以分割后的输入数据a(x+i,y+j,co)来表示。在以后的说明中,也将分割后的输入数据a称为“分割输入数据a”。
式1中的权重w(i,j,c,d)在c轴向上以尺寸Bc被分割并且在d轴向上以尺寸Bd被分割,以分割后的权重w(i,j,co,do)来表示。在以后的说明中,也将分割后的权重w称为“分割权重w”。
以尺寸Bd分割后的输出数据f(x,y,do)通过式9来求出。能够通过组合分割后的输出数据f(x,y,do)来计算最终的输出数据f(x,y,d)。
[数学式9]
[卷积运算的数据的展开]
NN电路100将卷积层210的卷积运算中的输入数据a及权重w展开来进行卷积运算。
图3为说明卷积运算的数据的展开的图。
分割输入数据a(x+i,y+j,co)被展开为具有Bc个元素的向量数据。分割输入数据a的元素用ci来被索引(0≤ci<Bc)。在以后的说明中,将针对每个i、j被展开为向量数据的分割输入数据a也称为“输入向量A”。输入向量A以分割输入数据a(x+i,y+j,co×Bc)至分割输入数据a(x+i,y+j,co×Bc+(Bc-1))作为元素。
分割权重w(i,j,co,do)被展开为具有Bc×Bd个元素的矩阵数据。被展开为矩阵数据的分割权重w的元素用ci和di来被索引(0≤di<Bd)。在以后的说明中,将针对每个i、j被展开为矩阵数据的分割权重w也称为“权重矩阵W”。权重矩阵W以分割权重w(i,j,co×Bc,do×Bd)至分割权重w(i,j,co×Bc+(Bc-1),do×Bd+(Bd-1))作为元素。
通过将输入向量A与权重矩阵W进行乘法运算来计算向量数据。通过将针对每个i、j、co计算出的向量数据整形为三维张量,能够得到输出数据f(x,y,do)。通过进行这样的数据展开,能够利用向量数据与矩阵数据的乘法运算来实施卷积层210的卷积运算。
[NN电路100]
图4为示出本实施方式的NN电路100的整体结构的图。
NN电路100具备第一存储器1、第二存储器2、DMA控制器3(以下也称为“DMAC 3”)、卷积运算电路4、量化运算电路5和控制器6。NN电路100的特征在于,卷积运算电路4和量化运算电路5经由第一存储器1及第二存储器2而形成为环状。
第一存储器1为例如由SRAM(Static RAM,静态随机存取存储器)等构成的易失性存储器等能够改写的存储器。在第一存储器1中,经由DMAC 3、控制器6进行数据的写入及读取。第一存储器1与卷积运算电路4的输入端口连接,卷积运算电路4能够从第一存储器1读取数据。另外,第一存储器1与量化运算电路5的输出端口连接,量化运算电路5能够将数据写入于第一存储器1。外部主机CPU能够通过对第一存储器1的数据的写入、读取来进行针对NN电路100的数据的输入输出。
第二存储器2为例如由SRAM(静态随机存取存储器)等构成的易失性存储器等能够改写的存储器。在第二存储器2中,经由DMAC 3、控制器6进行数据的写入及读取。第二存储器2与量化运算电路5的输入端口连接,量化运算电路5能够从第二存储器2读取数据。另外,第二存储器2与卷积运算电路4的输出端口连接,卷积运算电路4能够将数据写入于第二存储器2。外部主机CPU能够通过对第二存储器2的数据的写入、读取来进行对NN电路100的数据的输入输出。
DMAC 3连接于外部总线EB,进行DRAM等外部存储器与第一存储器1之间的数据转发。另外,DMAC 3进行DRAM等外部存储器与第二存储器2之间的数据转发。另外,DMAC 3进行DRAM等外部存储器与卷积运算电路4之间的数据转发。另外,DMAC 3进行DRAM等外部存储器与量化运算电路5之间的数据转发。
卷积运算电路4为进行学习完毕的CNN 200的卷积层210中的卷积运算的电路。卷积运算电路4读取保存于第一存储器1的输入数据a,对输入数据a实施卷积运算。卷积运算电路4将卷积运算的输出数据f(以后也称为“卷积运算输出数据”)写入于第二存储器2。
量化运算电路5为进行学习完毕的CNN 200的量化运算层220中的量化运算的至少一部分的电路。量化运算电路5读取保存于第二存储器2的卷积运算的输出数据f,对卷积运算的输出数据f进行量化运算(包括池化、批量归一化、激活函数及量化中的至少量化的运算)。量化运算电路5将量化运算的输出数据(以后也称为“量化运算输出数据”)写入于第一存储器1。
控制器6连接于外部总线EB,作为外部的主机CPU的从设备而工作。控制器6具有包括参数寄存器、状态寄存器的寄存器61。参数寄存器为控制NN电路100的工作的寄存器。状态寄存器为表示包括信号量S的NN电路100的状态的寄存器。外部主机CPU能够经由控制器6访问寄存器61。
控制器6经由内部总线IB与第一存储器1、第二存储器2、DMAC 3、卷积运算电路4和量化运算电路5连接。外部主机CPU能够经由控制器6对各块进行访问。例如,外部主机CPU能够经由控制器6来指示针对DMAC 3、卷积运算电路4、量化运算电路5的命令。另外,DMAC 3、卷积运算电路4、量化运算电路5能够经由内部总线IB更新控制器6具有的状态寄存器(包括信号量S)。状态寄存器(包括信号量S)也可以构成为经由与DMAC 3、卷积运算电路4、量化运算电路5连接的专用布线来更新。
NN电路100具有第一存储器1、第二存储器2等,因此在由DMAC 3进行的来自DRAM等外部存储器的数据转发中,能够减少重复的数据的数据转发的次数。据此,能够大幅减少由于存储器访问而产生的功耗。
[NN电路100的工作例1]
图5为示出NN电路100的工作例的时序图。
DMAC 3将层1的输入数据a保存于第一存储器1。DMAC 3可以与卷积运算电路4进行的卷积运算的顺序一致地分割层1的输入数据a并转发至第一存储器1。
卷积运算电路4读取保存于第一存储器1的层1的输入数据a。卷积运算电路4对层1的输入数据a进行图1所示的层1的卷积运算。层1的卷积运算的输出数据f被保存于第二存储器2。
量化运算电路5读取保存于第二存储器2的层1的输出数据f。量化运算电路5对层1的输出数据f进行层2的量化运算。层2的量化运算的输出数据被保存于第一存储器1。
卷积运算电路4读取保存于第一存储器1的层2的量化运算的输出数据。卷积运算电路4将层2的量化运算的输出数据作为输入数据a来进行层3的卷积运算。层3的卷积运算的输出数据f被保存于第二存储器2。
卷积运算电路4读取保存于第一存储器1的层2M-2(M为自然数)的量化运算的输出数据。卷积运算电路4将层2M-2的量化运算的输出数据作为输入数据a来进行层2M-1的卷积运算。层2M-1的卷积运算的输出数据f被保存于第二存储器2。
量化运算电路5读取保存于第二存储器2的层2M-1的输出数据f。量化运算电路5对2M-1层的输出数据f进行层2M的量化运算。层2M的量化运算的输出数据被保存于第一存储器1。
卷积运算电路4读取保存于第一存储器1的层2M的量化运算的输出数据。卷积运算电路4将层2M的量化运算的输出数据作为输入数据a来进行层2M+1的卷积运算。层2M+1的卷积运算的输出数据f被保存于第二存储器2。
卷积运算电路4和量化运算电路5交替进行运算,推进图1所示的CNN 200的运算。在NN电路100中,卷积运算电路4通过时分方式来实施层2M-1和层2M+1的卷积运算。另外,在NN电路100中,量化运算电路5通过时分方式来实施层2M-2和层2M的量化运算。因此,与对每层安装各自的卷积运算电路4和量化运算电路5的情况相比较,NN电路100的电路规模小得多。
NN电路100通过形成为环状的电路来进行作为多个层的多层构造的CNN 200的运算。NN电路100能够通过环状的电路结构来高效地利用硬件资源。此外,为了NN电路100呈环状地形成电路,在各层中变化的卷积运算电路4、量化运算电路5中的参数被适当更新。
当在CNN 200的运算中包含无法由NN电路100实施的运算的情况下,NN电路100将中间数据转发至外部主机CPU等外部运算装置。在外部运算装置对中间数据进行运算后,外部运算装置的运算结果被输入至第一存储器1、第二存储器2。NN电路100重新进行针对外部运算装置的运算结果的运算。
[NN电路100的工作例2]
图6为示出NN电路100的其它工作例的时序图。
NN电路100可以将输入数据a分割为部分张量,通过时分方式进行针对部分张量的运算。分割成部分张量的分割方法、分割数量没有特别限制。
图6示出将输入数据a分解为两个部分张量时的工作例。将分解出的部分张量设为“第一部分张量a1”、“第二部分张量a2”。例如,层2M-1的卷积运算被分解为与第一部分张量a1对应的卷积运算(在图6中记载为“层2M-1(a1)”)和与第二部分张量a2对应的卷积运算(在图6中记载为“层2M-1(a2)”)。
如图6所示,与第一部分张量a1对应的卷积运算及量化运算和与第二部分张量a2对应的卷积运算及量化运算能够独立地实施。
卷积运算电路4进行与第一部分张量a1对应的层2M-1的卷积运算(在图6中为由层2M-1(a1)示出的运算)。之后,卷积运算电路4进行与第二部分张量a2对应的层2M-1的卷积运算(在图6中为由层2M-1(a2)示出的运算)。另外,量化运算电路5进行与第一部分张量a1对应的层2M的量化运算(在图6中为由层2M(a1)示出的运算)。像这样,NN电路100能够并列地实施与第二部分张量a2对应的层2M-1的卷积运算和与第一部分张量a1对应的层2M的量化运算。
接下来,卷积运算电路4进行与第一部分张量a1对应的层2M+1的卷积运算(在图6中为由层2M+1(a1)示出的运算)。另外,量化运算电路5进行与第二部分张量a2对应的层2M的量化运算(在图6中为由层2M(a2)示出的运算)。像这样,NN电路100能够并列地实施与第一部分张量a1对应的层2M+1的卷积运算和与第二部分张量a2对应的层2M的量化运算。
与第一部分张量a1对应的卷积运算及量化运算和与第二部分张量a2对应的卷积运算及量化运算能够独立地实施。因此,NN电路100例如可以并列地实施与第一部分张量a1对应的层2M-1的卷积运算和与第二部分张量a2对应的层2M+2的量化运算。即,NN电路100并列地运算的卷积运算和量化运算不限定于连续的层的运算。
通过将输入数据a分割为部分张量,NN电路100能够使卷积运算电路4和量化运算电路5并列地工作。其结果是,卷积运算电路4和量化运算电路5待机的时间被削减,NN电路100的运算处理效率提高。在图6所示的工作例中,分割数量为2,但即使在分割数量大于2的情况下也是同样地,NN电路100能够使卷积运算电路4和量化运算电路5并列地工作。
例如,在输入数据a被分割为“第一部分张量a1”、“第二部分张量a2”及“第三部分张量a3”的情况下,NN电路100可以并列地实施与第二部分张量a2对应的层2M-1的卷积运算和与第三部分张量a3对应的层2M的量化运算。运算的顺序根据第一存储器1及第二存储器2中的输入数据a的保存状况而适当变更。
此外,作为对于部分张量的运算方法,示出了如下例子:在用卷积运算电路4或量化运算电路5进行同一层中的部分张量的运算之后,进行下一层中的部分张量的运算(方法1)。例如,如图6所示,在卷积运算电路4中,在进行与第一部分张量a1及第二部分张量a2对应的层2M-1的卷积运算(在图6中为由层2M-1(a1)及层2M-1(a2)示出的运算)之后,实施与第一部分张量a1及第二部分张量a2对应的层2M+1的卷积运算(在图6中为由层2M+1(a1)及层2M+1(a2)示出的运算)。
然而,对于部分张量的运算方法不限于此。对于部分张量的运算方法也可以为如下方法:在进行多个层中的一部分的部分张量的运算之后,实施剩余的部分张量的运算(方法2)。例如,在卷积运算电路4中,也可以在进行与第一部分张量a1对应的层2M-1及与第一部分张量a1对应的层2M+1的卷积运算之后,实施与第二部分张量a2对应的层2M-1及与第二部分张量a2对应的层2M+1的卷积运算。
另外,对于部分张量的运算方法也可以为组合方法1和方法2来对部分张量进行运算的方法。但在使用方法2的情况下,需要根据与部分张量的运算顺序相关的依存关系来实施运算。
接下来对NN电路100的各结构详细地进行说明。
[DMAC 3]
图7为DMAC 3的内部框图。
DMAC 3具有数据转发电路31和状态控制器32。DMAC 3具有针对数据转发电路31的专用的状态控制器32,当被输入命令指令时,能够在不需要外部的控制器的情况下实施DMA数据转发。
数据转发电路31连接于外部总线EB,进行DRAM等外部存储器与第一存储器1之间的DMA数据转发。另外,数据转发电路31进行DRAM等外部存储器与第二存储器2之间的DMA数据转发。另外,数据转发电路31进行DRAM等外部存储器与卷积运算电路4之间的数据转发。另外,数据转发电路31进行DRAM等外部存储器与量化运算电路5之间的数据转发。数据转发电路31的DMA通道数量没有限定。例如,可以针对第一存储器1和第二存储器2分别具有专用的DMA通道。
状态控制器32控制数据转发电路31的状态。另外,状态控制器32经由内部总线IB与控制器6连接。状态控制器32具有命令队列33和控制电路34。
命令队列33为保存DMAC 3用的命令指令C3的队列,例如由FIFO存储器构成。1个以上的命令指令C3经由内部总线IB被写入于命令队列33。
控制电路34为对命令指令C3进行解码,基于命令指令C3依次控制数据转发电路31的状态机。控制电路34可以利用逻辑电路来安装,也可以通过由软件控制的CPU来安装。
图8为控制电路34的状态转变图。
当命令指令C3被输入至命令队列33时(Not empty,非空),控制电路34从空闲状态S1转变为解码状态S2。
在解码状态S2中,控制电路34对从命令队列33输出的命令指令C3进行解码。另外,控制电路34读取保存于控制器6的寄存器61的信号量S,判定是否能够执行命令指令C3中指示的数据转发电路31的工作。在无法执行的情况下(Not ready:未准备好),控制电路34等待(Wait)直到能够执行。在能够执行的情况下(ready:准备好),控制电路34从解码状态S2转变为执行状态S3。
在执行状态S3中,控制电路34控制数据转发电路31,使数据转发电路31实施命令指令C3中指示的工作。当数据转发电路31的工作结束时,控制电路34从命令队列33中移除已执行完毕的命令指令C3,并且更新保存于控制器6的寄存器61的信号量S。在命令队列33中存在命令的情况下(Not empty,非空),控制电路34从执行状态S3转变为解码状态S2。在命令队列33中没有命令的情况下(empty:空),控制电路34从执行状态S3转变为空闲状态S1。
[卷积运算电路4]
图9为卷积运算电路4的内部框图。
卷积运算电路4具有权重存储器41、乘法运算器42、累加器电路43和状态控制器44。卷积运算电路4具有针对乘法运算器42及累加器电路43的专用的状态控制器44,当被输入命令指令时,能够在不需要外部的控制器的情况下实施卷积运算。
权重存储器41为保存卷积运算中使用的权重w的存储器,例如为由SRAM(StaticRAM,静态随机存取存储器)等构成的易失性存储器等能够改写的存储器。DMAC 3利用DMA转发将卷积运算所需的权重w写入于权重存储器41。
图10为乘法运算器42的内部框图。
乘法运算器42将输入向量A与权重矩阵W进行乘法运算。如上所述,输入向量A为具有分割输入数据a(x+i,y+j,co)针对每个i、j被展开而得到的Bc个元素的向量数据。另外,权重矩阵W为具有分割权重w(i,j,co,do)针对每个i、j被展开而得到的Bc×Bd个元素的矩阵数据。乘法运算器42具有Bc×Bd个乘积累加运算单元47,能够并列地实施输入向量A与权重矩阵W的乘法运算。
乘法运算器42从第一存储器1及权重存储器41读取乘法运算所需的输入向量A和权重矩阵W并实施乘法运算。乘法运算器42输出Bd个乘积累加运算结果O(di)。
图11为乘积累加运算单元47的内部框图。
乘积累加运算单元47实施输入向量A的元素A(ci)与权重矩阵W的元素W(ci,di)的乘法运算。另外,乘积累加运算单元47将乘法运算结果与其它的乘积累加运算单元47的乘法运算结果S(ci,di)进行加法运算。乘积累加运算单元47输出加法运算结果S(ci+1,di)。元素A(ci)为2位无符号整数(0,1,2,3)。元素W(ci,di)为1位带符号整数(0,1),值“0”表示+1,值“1”表示-1。
乘积累加运算单元47具有反转器(反相器)47a、选择器47b和加法运算器47c。乘积累加运算单元47不使用乘法运算器,仅使用反转器47a及选择器47b来进行乘法运算。在元素W(ci,di)为“0”的情况下,选择器47b选择元素A(ci)的输入。在元素W(ci,di)为“1”的情况下,选择器47b选择由反转器使元素A(ci)反转得到的补数。元素W(ci,di)也被输入至加法运算器47c的进位输入(Carry-in)。当元素W(ci,di)为“0”时,加法运算器47c输出对S(ci,di)加上元素A(ci)得到的值。当W(ci,di)为“1”时,加法运算器47c输出从S(ci,di)中减去元素A(ci)得到的值。
图12为累加器电路43的内部框图。
累加器电路43将乘法运算器42的乘积累加运算结果O(di)在第二存储器2中累积。累加器电路43具有Bd个累加器单元48,能够将Bd个乘积累加运算结果O(di)并列地累积于第二存储器2。
图13为累加器单元48的内部框图。
累加器单元48具有加法运算器48a和屏蔽部48b。加法运算器48a将乘积累加运算结果O的元素O(di)与作为保存于第二存储器2的式1所示的卷积运算的中间过程的部分和进行加法运算。加法运算结果为每个元素16位。加法运算结果不限于每个元素16位,也可以为例如每个元素15位或17位。
加法运算器48a将加法运算结果写入于第二存储器2的同一地址。在初始化信号clear(清除)被断言(assert)的情况下,屏蔽部48b屏蔽来自第二存储器2的输出,将针对元素O(di)的加法运算对象设为零。在第二存储器2中未保存有中间过程的部分和的情况下,初始化信号clear被断言。
当由乘法运算器42及累加器电路43进行的卷积运算完成时,输出数据f(x,y,do)被保存于第二存储器。
状态控制器44控制乘法运算器42及累加器电路43的状态。另外,状态控制器44经由内部总线IB与控制器6连接。状态控制器44具有命令队列45和控制电路46。
命令队列45为保存卷积运算电路4用的命令指令C4的队列,例如由FIFO存储器构成。命令指令C4经由内部总线IB被写入至命令队列45。
控制电路46为对命令指令C4进行解码并基于命令指令C4控制乘法运算器42及累加器电路43的状态机。控制电路46为与DMAC 3的状态控制器32的控制电路34同样的结构。
[量化运算电路5]
图14为量化运算电路5的内部框图。
量化运算电路5具有量化参数存储器51、向量运算电路52、量化电路53和状态控制器54。量化运算电路5具有针对向量运算电路52及量化电路53的专用的状态控制器54,当被输入命令指令时,能够在不需要外部的控制器的情况下实施量化运算。
量化参数存储器51为保存量化运算中使用的量化参数q的存储器,例如为由SRAM(Static RAM,静态随机存取存储器)等构成的易失性存储器等能够改写的存储器。DMAC 3利用DMA转发来将量化运算所需的量化参数q写入于量化参数存储器51。
图15为向量运算电路52和量化电路53的内部框图。
向量运算电路52对保存于第二存储器2的输出数据f(x,y,do)进行运算。向量运算电路52具有Bd个运算单元57,对输出数据f(x,y,do)并列地进行SIMD运算。
图16为运算单元57的框图。
运算单元57例如具有ALU 57a、第一选择器57b、第二选择器57c、寄存器57d和移位器57e。运算单元57可以还具有公知的通用SIMD运算电路具有的其它运算器等。
向量运算电路52通过组合运算单元57具有的运算器等,来对输出数据f(x,y,do)进行量化运算层220中的池化层221、批量归一化层222、激活函数层223的运算中的至少一个运算。
运算单元57能够利用ALU 57a将保存于寄存器57d的数据与从第二存储器2读取的输出数据f(x,y,do)的元素f(di)进行加法运算。运算单元57能够将ALU 57a的加法运算结果保存于寄存器57d。运算单元57能够通过将“0”输入至ALU 57a来代替根据第一选择器57b的选择被保存于寄存器57d的数据从而将加法运算结果初始化。例如在池化区域为2×2的情况下,移位器57e能够通过将ALU 57a的输出右移位2比特(bit)来输出加法运算结果的平均值。向量运算电路52能够通过重复进行Bd个运算单元57进行的上述运算等来实施式2所示的平均池化的运算。
运算单元57能够利用ALU 57a来对保存于寄存器57d的数据与从第二存储器2读取的输出数据f(x,y,do)的元素f(di)进行比较。运算单元57根据ALU 57a的比较结果来控制第二选择器57c,能够选择保存于寄存器57d的数据和元素f(di)中的较大者。运算单元57能够根据第一选择器57b的选择将元素f(di)的可取值的最小值输入至ALU 57a来将比较对象初始化为最小值。在本实施方式中,元素f(di)为16比特(bit)带符号整数,因此元素f(di)的可取值的最小值为“0x8000”。向量运算电路52能够通过重复进行Bd个运算单元57进行的上述运算等来实施式3的MAX池化的运算。此外,在MAX池化的运算中,移位器57e不将第二选择器57c的输出移位。
运算单元57能够利用ALU 57a对保存于寄存器57d的数据和从第二存储器2读取的输出数据f(x,y,do)的元素f(di)进行减法运算。移位器57e能够将ALU 57a的输出左移位(即乘法运算)或右移位(即除法运算)。向量运算电路52能够通过重复进行Bd个运算单元57进行的上述运算等来实施式4的批量归一化的运算。
运算单元57能够利用ALU 57a对从第二存储器2读取的输出数据f(x,y,do)的元素f(di)与由第一选择器57b选择出的“0”进行比较。运算单元57能够根据ALU 57a的比较结果,选择并输出元素f(di)和预先保存于寄存器57d的常数值“0”中的任意值。向量运算电路52能够通过重复进行Bd个运算单元57进行的上述运算等来实施式5的ReLU运算。
向量运算电路52能够实施平均池化、MAX池化、批量归一化、激活函数的运算以及这些运算的组合。向量运算电路52能够实施通用SIMD运算,因此也可以实施量化运算层220中的运算所需的其它运算。另外,向量运算电路52也可以实施量化运算层220中的运算以外的运算。
此外,量化运算电路5可以不具有向量运算电路52。在量化运算电路5不具有向量运算电路52的情况下,输出数据f(x,y,do)被输入至量化电路53。
量化电路53对向量运算电路52的输出数据进行量化。如图15所示,量化电路53具有Bd个量化单元58,对向量运算电路52的输出数据并列地进行运算。
图17为量化单元58的内部框图。
量化单元58对向量运算电路52的输出数据的元素in(di)进行量化。量化单元58具有比较器58a和编码器58b。量化单元58对向量运算电路52的输出数据(16位/元素)进行量化运算层220中的量化层224的运算(式6)。量化单元58从量化参数存储器51读取需要的量化参数q(th0,th1,th2),利用比较器58a进行输入in(di)与量化参数q的比较。量化单元58利用编码器58b将比较器58a的比较结果量化为2位/元素。式4中的α(c)和β(c)为针对每个变量c而不同的参数,因此反映α(c)和β(c)的量化参数q(th0,th1,th2)为针对每个in(di)而不同的参数。
量化单元58将输入in(di)与3个阈值th0、th1、th2相比较,从而将输入in(di)分类为4个区域(例如in≤th0、th0<in≤th1、th1<in≤th2、th2<in),将分类结果编码为2位并输出。通过量化参数q(th0,th1,th2)的设定,量化单元58还能够将批量归一化、激活函数的运算与量化一起进行。
量化单元58通过将阈值th0设定为式4的β(c)、将阈值之差(th1-th0)及(th2-th1)设定为式4的α(c)来进行量化,从而能够将实施式4所示的批量归一化的运算与量化一起实施。能够通过增大(th1-th0)及(th2-th1)来减小α(c)。能够通过减小(th1-th0)及(th2-th1)来增大α(c)。
量化单元58能够将激活函数的ReLU运算与输入in(di)的量化一起实施。例如,量化单元58在in(di)≤th0及th2<in(di)的区域中使输出值饱和。量化单元58通过以使输出为非线性的方式设定量化参数q,从而能够将激活函数的运算与量化一起实施。
状态控制器54控制向量运算电路52及量化电路53的状态。另外,状态控制器54经由内部总线IB与控制器6连接。状态控制器54具有命令队列55和控制电路56。
命令队列55为保存量化运算电路5用的命令指令C5的队列,例如由FIFO存储器构成。命令指令C5经由内部总线IB被写入至命令队列55。
控制电路56为对命令指令C5进行解码并基于命令指令C5控制向量运算电路52及量化电路53的状态机。控制电路56为与DMAC 3的状态控制器32的控制电路34同样的结构。
量化运算电路5将具有Bd个元素的量化运算输出数据写入于第一存储器1。此外,式10中示出Bd与Bc的优选的关系。在式10中n为整数。
[数学式10]
Bd=2n·Bc……(式10)
[控制器6]
控制器6将从外部主机CPU转发的命令指令转发至DMAC 3、卷积运算电路4及量化运算电路5具有的命令队列。控制器6可以具备保存针对各电路的命令指令的命令存储器。
控制器6连接于外部总线EB,作为外部主机CPU的从设备而工作。控制器6具有包括参数寄存器、状态寄存器的寄存器61。参数寄存器为控制NN电路100的工作的寄存器。状态寄存器为表示包括信号量S的NN电路100的状态的寄存器。
[信号量S]
图18为说明基于信号量S的NN电路100的控制的图。
信号量S具有第一信号量S1、第二信号量S2和第三信号量S3。信号量S根据P操作而自减(decrement),根据V操作而自增(increment)。由DMAC 3、卷积运算电路4及量化运算电路5进行的P操作及V操作经由内部总线IB而更新控制器6具有的信号量S。
第一信号量S1被用于第一数据流F1的控制。第一数据流F1为DMAC 3(Producer,生产者)将输入数据a写入于第一存储器1、卷积运算电路4(Consumer,消费者)读取输入数据a的数据流。第一信号量S1具有第一写入信号量S1W和第一读取信号量S1R。
第二信号量S2被用于第二数据流F2的控制。第二数据流F2为卷积运算电路4(生产者)将输出数据f写入于第二存储器2、量化运算电路5(消费者)读取输出数据f的数据流。第二信号量S2具有第二写入信号量S2W和第二读取信号量S2R。
第三信号量S3被用于第三数据流F3的控制。第三数据流F3为量化运算电路5(生产者)将量化运算输出数据写入于第一存储器1、卷积运算电路4(消费者)读取量化运算电路5的量化运算输出数据的数据流。第三信号量S3具有第三写入信号量S3W和第三读取信号量S3R。
[第一数据流F1]
图19为第一数据流F1的时序图。
第一写入信号量S1W为限制第一数据流F1中的由DMAC 3对第一存储器1的写入的信号量。第一写入信号量S1W表示在第一存储器1中能够保存例如输入向量A等预定尺寸的数据的存储器区域中的、数据读取完毕而能够写入其它数据的存储器区域的数量。在第一写入信号量S1W为“0”的情况下,DMAC 3不能对第一存储器1进行第一数据流F1中的写入,等待直到第一写入信号量S1W变为“1”以上。
第一读取信号量S1R为限制第一数据流F1中的由卷积运算电路4从第一存储器1的读取的信号量。第一读取信号量S1R表示在第一存储器1中能够保存例如输入向量A等预定尺寸的数据的存储器区域中的、数据写入完毕而能够读取的存储器区域的数量。在第一读取信号量S1R为“0”的情况下,卷积运算电路4不能进行从第一存储器1的第一数据流F1中的读取,等待直到第一读取信号量S1R变为“1”以上。
命令指令C3被保存于命令队列33,由此DMAC 3开始DMA转发。如图19所示,由于第一写入信号量S1W不为“0”,因此DMAC 3开始DMA转发(DMA转发1)。DMAC 3在开始DMA转发时,对第一写入信号量S1W进行P操作。DMAC 3在DMA转发完成后,对第一读取信号量S1R进行V操作。
命令指令C4被保存于命令队列45,由此卷积运算电路4开始卷积运算。如图19所示,由于第一读取信号量S1R为“0”,因此卷积运算电路4等待直到第一读取信号量S1R变为“1”以上(解码状态S2下的等待)。当由于DMAC 3的V操作而第一读取信号量S1R变为“1”时,卷积运算电路4开始卷积运算(卷积运算1)。卷积运算电路4在开始卷积运算时,对第一读取信号量S1R进行P操作。卷积运算电路4在卷积运算完成后,对第一写入信号量S1W进行V操作。
在DMAC 3开始图19中记载为“DMA转发3”的DMA转发时,第一写入信号量S1W为“0”,因此DMAC 3等待直到第一写入信号量S1W变为“1”以上(解码状态S2下的等待)。当由于卷积运算电路4的V操作而第一写入信号量S1W变为“1”以上时,DMAC 3开始DMA转发。
DMAC 3和卷积运算电路4通过使用信号量S1,能够防止在第一数据流F1中对第一存储器1的访问冲突。另外,DMAC 3和卷积运算电路4通过使用信号量S1,能够在使第一数据流F1中的数据转发同步的同时独立且并列地工作。
[第二数据流F2]
图20为第二数据流F2的时序图。
第二写入信号量S2W为限制第二数据流F2中的由卷积运算电路4对第二存储器2的写入的信号量。第二写入信号量S2W表示在第二存储器2中能够保存例如输出数据f等预定尺寸的数据的存储器区域中的、数据读取完毕而能够写入其它数据的存储器区域的数量。在第二写入信号量S2W为“0”的情况下,卷积运算电路4不能对第二存储器2进行第二数据流F2中的写入,等待直到第二写入信号量S2W变为“1”以上。
第二读取信号量S2R为限制第二数据流F2中的由量化运算电路5从第二存储器2的读取的信号量。第二读取信号量S2R表示在第二存储器2中能够保存例如输出数据f等预定尺寸的数据的存储器区域中的、数据写入完毕而能够读取的存储器区域的数量。在第二读取信号量S2R为“0”的情况下,量化运算电路5不能进行从第二存储器2的第二数据流F2中的读取,等待直到第二读取信号量S2R变为“1”以上。
如图20所示,卷积运算电路4在开始卷积运算时,对第二写入信号量S2W进行P操作。卷积运算电路4在卷积运算完成后,对第二读取信号量S2R进行V操作。
命令指令C5被保存于命令队列55,由此量化运算电路5开始量化运算。如图20所示,由于第二读取信号量S2R为“0”,因此量化运算电路5等待直到第二读取信号量S2R变为“1”以上(解码状态S2下的等待)。当由于卷积运算电路4的V操作而第二读取信号量S2R变为“1”时,量化运算电路5开始量化运算(量化运算1)。量化运算电路5在开始量化运算时,对第二读取信号量S2R进行P操作。量化运算电路5在量化运算完成后,对第二写入信号量S2W进行V操作。
在量化运算电路5开始图20中记载为“量化运算2”的量化运算时,第二读取信号量S2R为“0”,因此量化运算电路5等待直到第二读取信号量S2R变为“1”以上(解码状态S2下的等待)。当由于卷积运算电路4的V操作而第二读取信号量S2R变为“1”以上时,量化运算电路5开始量化运算。
卷积运算电路4和量化运算电路5通过使用信号量S2,能够防止在第二数据流F2中对第二存储器2的访问冲突。另外,卷积运算电路4和量化运算电路5通过使用信号量S2,能够在使第二数据流F2中的数据转发同步的同时独立且并列地工作。
[第三数据流F3]
第三写入信号量S3W为限制第三数据流F3中的由量化运算电路5对第一存储器1的写入的信号量。第三写入信号量S3W表示在第一存储器1中能够保存例如量化运算电路5的量化运算输出数据等预定尺寸的数据的存储器区域中的、数据读取完毕而能够写入其它数据的存储器区域的数量。在第三写入信号量S3W为“0”的情况下,量化运算电路5不能对第一存储器1进行第三数据流F3中的写入,等待直到第三写入信号量S3W变为“1”以上。
第三读取信号量S3R为限制第三数据流F3中的由卷积运算电路4从第一存储器1的读取的信号量。第三读取信号量S3R表示在第一存储器1中能够保存例如量化运算电路5的量化运算输出数据等预定尺寸的数据的存储器区域中的、数据写入完毕而能够读取的存储器区域的数量。在第三读取信号量S3R为“0”的情况下,卷积运算电路4不能进行第三数据流F3中的从第一存储器1的读取,等待直到第三读取信号量S3R变为“1”以上。
量化运算电路5和卷积运算电路4通过使用信号量S3,能够防止在第三数据流F3中对第一存储器1的访问冲突。另外,量化运算电路5和卷积运算电路4通过使用信号量S3,能够在使第三数据流F3中的数据转发同步的同时独立且并列地工作。
第一存储器1在第一数据流F1及第三数据流F3中被共享。NN电路100通过另行设置第一信号量S1和第三信号量S3,能够区分第一数据流F1和第三数据流F3来使数据转发同步。
[卷积运算电路4的工作(1)]
卷积运算电路4在进行卷积运算时,从第一存储器1进行读取,对第二存储器2进行写入。即,卷积运算电路4在第一数据流F1中为消费者,在第二数据流F2中为生产者。因此,卷积运算电路4在开始卷积运算时,对第一读取信号量S1R进行P操作(参照图19),对第二写入信号量S2W进行P操作(参照图20)。卷积运算电路4在卷积运算完成后,对第一写入信号量S1W进行V操作(参照图19),对第二读取信号量S2R进行V操作(参照图20)。
卷积运算电路4在开始卷积运算时,等待直到第一读取信号量S1R变为“1”以上且第二写入信号量S2W变为“1”以上(解码状态S2下的等待)。
[量化运算电路5的工作]
量化运算电路5在进行量化运算时,从第二存储器2进行读取,对第一存储器1进行写入。即,量化运算电路5在第二数据流F2中为消费者,在第三数据流F3中为生产者。因此,量化运算电路5在开始量化运算时,对第二读取信号量S2R进行P操作,对第三写入信号量S3W进行P操作。量化运算电路5在量化运算完成后,对第二写入信号量S2W进行V操作,对第三读取信号量S3R进行V操作。
量化运算电路5在开始量化运算时,等待直到第二读取信号量S2R变为“1”以上且第三写入信号量S3W变为“1”以上(解码状态S2下的等待)。
[卷积运算电路4的工作(2)]
也有时卷积运算电路4从第一存储器1读取的输入数据是在第三数据流中量化运算电路5写入的数据。在该情况下,卷积运算电路4在第三数据流F3中为消费者,在第二数据流F2中为生产者。因此,卷积运算电路4在开始卷积运算时,对第三读取信号量S3R进行P操作,对第二写入信号量S2W进行P操作。卷积运算电路4在卷积运算完成后,对第三写入信号量S3W进行V操作,对第二读取信号量S2R进行V操作。
卷积运算电路4在开始卷积运算时,等待直到第三读取信号量S3R变为“1”以上且第二写入信号量S2W变为“1”以上(解码状态S2下的等待)。
如以上说明的那样,根据本实施方式的NN电路100,卷积运算电路4和量化运算电路5形成为环状,卷积运算电路4和量化运算电路5交替(图5)或并列(图6)地进行图1所示的CNN 200的运算。因此,NN电路100的电路规模小,能够嵌入于IoT设备等嵌入式设备。
根据本实施方式的NN电路100,向卷积运算电路4的输入数据被量化运算电路5量化。因此,能够削减卷积运算电路4的运算量,能够减小卷积运算电路4的电路规模。
根据本实施方式的NN电路100,DMAC 3、量化运算电路5和卷积运算电路4通过使用信号量S,能够在使得使用的数据流中的数据转发同步的同时独立且并列地工作。另外,根据本实施方式的NN电路100,通过对每个数据流设置信号量,从而能够区分数据流来使数据转发同步。因此,与各电路被依次执行的情况相比较,NN电路100的运算速度快且性能高。
以上,参照附图对本发明的第一实施方式进行了详细说明,但具体的结构不限于该实施方式,还包括不脱离本发明的主旨的范围的设计变更等。另外,能够适当组合上述实施方式及变形例中所示的构成要素来构成。
(变形例1)
在上述实施方式中,第一存储器1和第二存储器2为分开的存储器,但第一存储器1和第二存储器2的形态不限于此。第一存储器1和第二存储器2例如可以为同一存储器中的第一存储器区域和第二存储器区域。
(变形例2)
在上述实施方式中,信号量S为针对第一数据流F1、第二数据流F2及第三数据流F3而设置的,但是信号量S的形态不限于此。例如可以对DMAC 3将权重w写入权重存储器41、乘法运算器42读取权重w的数据流设置信号量S。例如也可以对DMAC 3将量化参数q写入量化参数存储器51、量化电路53读取量化参数q的数据流设置信号量S。
(变形例3)
例如,被输入至上述实施方式所记载的NN电路100的数据不限于单一形式,能够以静止图像、运动图像、语音、文字、数值及这些的组合来构成。此外,被输入至NN电路100的数据不限于可被搭载于设置有NN电路100的边缘设备的光传感器、温度计、全球定位系统(Global Positioning System,GPS)测量仪、角速度测量仪、风速计等物理量测量器的测量结果。也可以对与从外围设备经由有线或无线通信而接收的基站信息、车辆/船舶等的信息、天气信息、拥堵状况有关的信息等外围信息、金融信息、个人信息等不同的信息进行组合。
(变形例4)
假设设置有NN电路100的边缘设备是由电池等驱动的移动电话等通信设备、个人计算机等智能装置、数码相机、游戏设备、机器人产品等移动设备,但是不限于此。即使利用于在以太网供电(Power on Ethernet,PoE)等下能够供给的峰值电力限制、减少产品发热或长时间驱动的需求高的产品也能够得到其它现有例中没有的效果。例如,通过应用于搭载于车辆、船舶等的车载相机、设置于公共设施、街道上等的监视相机等,不仅能够实现长时间的拍摄,还有助于轻量化、高耐用化。另外,应用于电视、显示器等显示装置、医疗相机、手术机器人等医疗设备、制造现场、建筑现场中使用的作业机器人等也能够实现同样的效果。
(变形例5)
在NN电路100中,可以使用一个以上的处理器来实现NN电路100的一部分或全部。例如,在NN电路100中,可以利用处理器进行的软件处理来实现输入层或输出层的一部分或全部。通过软件处理实现的输入层或输出层的一部分例如为数据的归一化、变换。据此,能够应对各种形式的输入形式或输出形式。此外,可以使用通信单元、外部介质以可改写的方式构成由处理器执行的软件。
(变形例6)
在NN电路100中,可以通过组合云上的图形处理单元(Graphics ProcessingUnit,GPU)等来实现CNN 200中的处理的一部分。在NN电路100中,除了用设置有NN电路100的边缘设备进行的处理之外还在云上进行处理,或是除了在云上的处理之外还在边缘设备上进行处理,从而能够用少的资源实现更复杂的处理。根据这样的结构,NN电路100通过处理分散而能够减少边缘设备与云之间的通信量。
(变形例7)
NN电路100进行的运算为学习完毕的CNN 200的至少一部分,但NN电路100进行的运算的对象不限于此。NN电路100进行的运算也可以为例如卷积运算和量化运算这样地重复两个种类的运算的学习完毕的神经网络的至少一部分。
另外,本说明书中记载的效果仅为说明性或例示性的,而不是限定性的。也就是说,本公开的技术除了实现上述效果之外,或者代替上述效果,还可以实现根据本说明书的记载对本领域技术人员而言显而易见的其它效果。
工业适用性
本发明能够应用于神经网络的运算。
Claims (20)
1.一种神经网络电路,具备:
第一存储器,保存输入数据;
卷积运算电路,对保存于所述第一存储器的所述输入数据和权重进行卷积运算;
第二存储器,保存所述卷积运算电路的卷积运算输出数据;以及
量化运算电路,对保存于所述第二存储器的所述卷积运算输出数据进行量化运算,
其中,所述第一存储器保存所述量化运算电路的量化运算输出数据,
所述卷积运算电路对作为所述输入数据而保存于所述第一存储器的所述量化运算输出数据进行所述卷积运算,
所述第一存储器、所述卷积运算电路、所述第二存储器和所述卷积运算电路形成为环状。
2.根据权利要求1所述的神经网络电路,其中,
所述卷积运算电路基于所述卷积运算电路用的命令指令,从所述第一存储器读取所述输入数据,将所述卷积运算输出数据写入于所述第二存储器,
所述量化运算电路基于所述量化运算电路用的命令指令,从所述第二存储器读取所述卷积运算输出数据,将所述量化运算输出数据写入于所述第一存储器。
3.根据权利要求1所述的神经网络电路,其中,
所述输入数据被分解为第一部分张量和第二部分张量,
所述卷积运算电路中的对所述第一部分张量的所述卷积运算和所述量化运算电路中的对所述第二部分张量的所述量化运算被并列地执行。
4.权利要求1所述的神经网络电路,其中,
所述卷积运算电路对保存于所述第一存储器的所述输入数据进行层2M-1的所述卷积运算,将所述层2M-1的所述卷积运算输出数据保存于所述第二存储器,其中M为自然数,
所述量化运算电路对保存于所述第二存储器的所述层2M-1的所述卷积运算输出数据进行层2M的所述量化运算,将所述层2M的所述量化运算输出数据保存于所述第一存储器,
所述卷积运算电路将保存于所述第一存储器的所述层2M的所述量化运算输出数据作为所述输入数据来进行层2M+1的所述卷积运算,将所述层2M+1的所述卷积运算输出数据保存于所述第二存储器。
5.根据权利要求4所述的神经网络电路,其中,
所述输入数据被分解为第一部分张量和第二部分张量,
与所述第一部分张量对应的所述层2M+1的所述卷积运算和与所述第二部分张量对应的所述层2M的所述量化运算被并列地实施。
6.根据权利要求1所述的神经网络电路,其中,
所述卷积运算电路具有:
乘法运算器,对所述输入数据与所述权重进行乘积累加运算;以及
累加器电路,对所述乘法运算器的乘积累加运算结果进行累积加法运算。
7.根据权利要求6所述的神经网络电路,其中,
所述乘法运算器利用反转器及选择器将所述输入数据与所述权重进行乘法运算。
8.根据权利要求1所述的神经网络电路,其中,
所述输入数据为向量数据,
所述权重为矩阵数据。
9.根据权利要求1所述的神经网络电路,其中,
所述输入数据的各元素为2位,
所述权重的各元素为1位。
10.根据权利要求1所述的神经网络电路,其中,
所述量化运算电路还具有将所述卷积运算输出数据归一化的电路。
11.根据权利要求1所述的神经网络电路,其中,
所述量化运算电路还具有实施池化运算的电路。
12.根据权利要求1所述的神经网络电路,其中,
所述量化运算电路还具有实施激活函数运算的电路。
13.根据权利要求1所述的神经网络电路,其中,
还具有DMA控制器,该DMA控制器将所述输入数据转发至所述第一存储器。
14.根据权利要求1所述的神经网络电路,其中,
所述第二存储器为能够随机访问且能够改写的存储器。
15.根据权利要求13所述的神经网络电路,具有:
第一写入信号量,限制由所述DMA控制器对所述第一存储器的写入;以及
第一读取信号量,限制由所述卷积运算电路从所述第一存储器的读取。
16.根据权利要求1所述的神经网络电路,具有:
第二写入信号量,限制由所述卷积运算电路对所述第二存储器的写入;以及
第二读取信号量,限制由所述量化运算电路从所述第二存储器的读取。
17.根据权利要求1所述的神经网络电路,具有:
第三写入信号量,限制由所述量化运算电路对所述第一存储器的写入;以及
第三读取信号量,限制由所述卷积运算电路从所述第一存储器的读取。
18.一种边缘设备,其中,
包括权利要求1所述的神经网络电路,并且该边缘设备由电池驱动。
19.一种神经网络运算方法,为使用第一存储器区域和第二存储器区域进行卷积运算和量化运算的神经网络运算方法,其中,
对保存于所述第一存储器区域的输入数据进行层2M-1的所述卷积运算,将所述层2M-1的卷积运算输出数据保存于所述第二存储器区域,其中M为自然数,
对保存于所述第二存储器区域的所述层2M-1的所述卷积运算输出数据进行层2M的所述量化运算,将所述层2M的量化运算输出数据保存于所述第一存储器区域,
将保存于所述第一存储器区域的所述层2M的所述量化运算输出数据作为所述输入数据来进行层2M+1的所述卷积运算,将所述层2M+1的所述卷积运算输出数据保存于所述第二存储器区域。
20.根据权利要求19所述的神经网络运算方法,其中,
将所述输入数据分解为第一部分张量和第二部分张量,
并列地实施与所述第一部分张量对应的所述层2M+1的所述卷积运算和与所述第二部分张量对应的所述层2M的所述量化运算。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020071932A JP6896306B1 (ja) | 2020-04-13 | 2020-04-13 | ニューラルネットワーク回路、エッジデバイスおよびニューラルネットワーク演算方法 |
JP2020-071932 | 2020-04-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113537479A true CN113537479A (zh) | 2021-10-22 |
Family
ID=76540464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110388524.2A Pending CN113537479A (zh) | 2020-04-13 | 2021-04-12 | 神经网络电路、边缘设备以及神经网络运算方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20210319294A1 (zh) |
JP (1) | JP6896306B1 (zh) |
KR (1) | KR102667790B1 (zh) |
CN (1) | CN113537479A (zh) |
TW (1) | TWI773245B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2023056644A (ja) * | 2021-10-08 | 2023-04-20 | LeapMind株式会社 | ニューラルネットワーク回路およびニューラルネットワーク回路の制御方法 |
WO2023139990A1 (ja) * | 2022-01-24 | 2023-07-27 | LeapMind株式会社 | ニューラルネットワーク回路およびニューラルネットワーク演算方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04233063A (ja) * | 1990-12-28 | 1992-08-21 | Matsushita Electric Ind Co Ltd | ニューロプロセッサ |
US7541841B2 (en) * | 2005-10-18 | 2009-06-02 | Panasonic Corporation | Semiconductor integrated circuit |
JP6539459B2 (ja) * | 2015-02-24 | 2019-07-03 | 国立大学法人広島大学 | Lvqニューラルネットワーク |
JP6964234B2 (ja) | 2016-11-09 | 2021-11-10 | パナソニックIpマネジメント株式会社 | 情報処理方法、情報処理装置およびプログラム |
US10528321B2 (en) * | 2016-12-07 | 2020-01-07 | Microsoft Technology Licensing, Llc | Block floating point for neural network implementations |
US10410098B2 (en) * | 2017-04-24 | 2019-09-10 | Intel Corporation | Compute optimizations for neural networks |
US10474458B2 (en) * | 2017-04-28 | 2019-11-12 | Intel Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
CN112214727B (zh) * | 2017-07-07 | 2024-07-05 | 华为技术有限公司 | 运算加速器 |
KR102534917B1 (ko) * | 2017-08-16 | 2023-05-19 | 에스케이하이닉스 주식회사 | 신경망 처리 회로를 구비하는 메모리 장치 및 이를 포함하는 메모리 시스템 |
WO2019113021A1 (en) * | 2017-12-05 | 2019-06-13 | Wave Computing, Inc. | Tensor manipulation within a reconfigurable fabric using pointers |
CN108364061B (zh) * | 2018-02-13 | 2020-05-05 | 北京旷视科技有限公司 | 运算装置、运算执行设备及运算执行方法 |
CN110245741A (zh) * | 2018-03-09 | 2019-09-17 | 佳能株式会社 | 多层神经网络模型的优化和应用方法、装置及存储介质 |
US20190332925A1 (en) * | 2018-04-30 | 2019-10-31 | International Business Machines Corporation | Neural hardware accelerator for parallel and distributed tensor computations |
JP7046171B2 (ja) * | 2018-05-15 | 2022-04-01 | 三菱電機株式会社 | 演算装置 |
US10740693B2 (en) * | 2018-05-15 | 2020-08-11 | Lightmatter, Inc. | Systems and methods for training matrix-based differentiable programs |
US10860865B2 (en) * | 2018-09-13 | 2020-12-08 | Chiral Software, Inc. | Predictive security camera system |
US10713012B2 (en) * | 2018-10-15 | 2020-07-14 | Intel Corporation | Method and apparatus for efficient binary and ternary support in fused multiply-add (FMA) circuits |
-
2020
- 2020-04-13 JP JP2020071932A patent/JP6896306B1/ja active Active
-
2021
- 2021-04-12 US US17/227,785 patent/US20210319294A1/en active Pending
- 2021-04-12 KR KR1020210047004A patent/KR102667790B1/ko active IP Right Grant
- 2021-04-12 CN CN202110388524.2A patent/CN113537479A/zh active Pending
- 2021-04-12 TW TW110113109A patent/TWI773245B/zh active
Also Published As
Publication number | Publication date |
---|---|
KR20210127099A (ko) | 2021-10-21 |
JP2021168095A (ja) | 2021-10-21 |
US20210319294A1 (en) | 2021-10-14 |
JP6896306B1 (ja) | 2021-06-30 |
TW202139077A (zh) | 2021-10-16 |
TWI773245B (zh) | 2022-08-01 |
KR102667790B1 (ko) | 2024-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110147251B (zh) | 用于计算神经网络模型的系统、芯片及计算方法 | |
CN109478144B (zh) | 一种数据处理装置和方法 | |
CN113537479A (zh) | 神经网络电路、边缘设备以及神经网络运算方法 | |
CN111240746B (zh) | 一种浮点数据反量化及量化的方法和设备 | |
Li et al. | Efficient depthwise separable convolution accelerator for classification and UAV object detection | |
WO2022163861A1 (ja) | ニューラルネットワーク生成装置、ニューラルネットワーク演算装置、エッジデバイス、ニューラルネットワーク制御方法およびソフトウェア生成プログラム | |
CN115398447A (zh) | 神经网络电路的控制方法 | |
KR20190140841A (ko) | 확률 적응적 자원 할당을 통한 신경망 하드웨어 가속 | |
CN116795324A (zh) | 混合精度浮点乘法装置和混合精度浮点数处理方法 | |
WO2022030037A1 (ja) | ニューラルネットワーク回路およびニューラルネットワーク回路の制御方法 | |
WO2024111644A1 (ja) | ニューラルネットワーク回路およびニューラルネットワーク演算方法 | |
WO2024038662A1 (ja) | ニューラルネットワーク学習装置およびニューラルネットワーク学習方法 | |
WO2023058422A1 (ja) | ニューラルネットワーク回路およびニューラルネットワーク回路の制御方法 | |
US20240037412A1 (en) | Neural network generation device, neural network control method, and software generation program | |
US20230316071A1 (en) | Neural network generating device, neural network generating method, and neural network generating program | |
JP2022183833A (ja) | ニューラルネットワーク回路およびニューラルネットワーク演算方法 | |
WO2023139990A1 (ja) | ニューラルネットワーク回路およびニューラルネットワーク演算方法 | |
JP2022105437A (ja) | ニューラルネットワーク回路およびニューラルネットワーク演算方法 | |
JP2023154880A (ja) | ニューラルネットワーク生成方法およびニューラルネットワーク生成プログラム | |
JP2022114698A (ja) | ニューラルネットワーク生成装置、ニューラルネットワーク制御方法およびソフトウェア生成プログラム | |
JP2023006509A (ja) | ソフトウェア生成装置およびソフトウェア生成方法 | |
JP2024026993A (ja) | 情報処理装置、情報処理方法 | |
CN115482456A (zh) | 一种yolo算法的高能效fpga加速架构 | |
CN116882475A (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 |