CN107871163A - 用于卷积神经网络的操作装置及方法 - Google Patents

用于卷积神经网络的操作装置及方法 Download PDF

Info

Publication number
CN107871163A
CN107871163A CN201710711678.4A CN201710711678A CN107871163A CN 107871163 A CN107871163 A CN 107871163A CN 201710711678 A CN201710711678 A CN 201710711678A CN 107871163 A CN107871163 A CN 107871163A
Authority
CN
China
Prior art keywords
data
input data
input
layer
convolution
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
CN201710711678.4A
Other languages
English (en)
Other versions
CN107871163B (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.)
SK Hynix Inc
Original Assignee
Hynix Semiconductor Inc
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 Hynix Semiconductor Inc filed Critical Hynix Semiconductor Inc
Publication of CN107871163A publication Critical patent/CN107871163A/zh
Application granted granted Critical
Publication of CN107871163B publication Critical patent/CN107871163B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Software Systems (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Mathematical Optimization (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Complex Calculations (AREA)
  • Image Analysis (AREA)

Abstract

本文公开了一种卷积神经网络(CNN)操作装置,其包括:至少一个通道硬件组,其适用于基于输入数据和权重数据来执行特征提取层操作和分类层操作;以及控制器,其耦合到通道硬件组。控制器可以控制通道硬件组执行特征提取层操作以及当特征提取层操作完成时执行分类层操作。

Description

用于卷积神经网络的操作装置及方法
相关申请的交叉引用
本申请要求2016年9月28日提交的第10-2016-0124574号的韩国专利申请的优先权,其通过引用整体合并于此。
技术领域
本发明的示例性实施例涉及一种用于卷积神经网络的操作装置和方法。
背景技术
深度学习算法是具有许多简单计算(例如,加法和乘法)的操作,并且可以有效地用于分析大数据并发现数据集内的隐藏特征。深度学习可以被定义为一组机器学习算法,该算法通过几种非线性变换方案的组合来尝试高级抽象(即,用于总结大量数据或复杂数据中的核心内容或功能的任务)。
深度学习算法可以被分为训练操作和测试操作。训练操作可以是用于从输入数据集学习特征的一系列过程。在训练过程中,可以学习诸如权重、特征和/或内核的参数。可以使用训练过的参数来执行测试操作。在深度学习算法中,可以在测试中执行用于对与用于训练的输入数据集不同的输入(诸如,格式(例如,在图像的情况下,相同类型的主题(例如,猫或车辆)的前后外观))进行适当地分类的任务。
可以使用各种类型的算法来实现深度学习算法,诸如深度神经网络(DNN)、卷积神经网络(CNN)、递归神经网络(RNN)以及深度信念网络(DBN)。
如果以计算机的顺序计算方法重复大量简单计算的方式来实现深度学习算法,则深度学习算法可以具有很大的功耗和较长的执行时间。使用被优化用于并行计算的处理器(例如,中央处理单元(CPU)或图形处理器单元(GPU))的方法在性能方面可以适用于深度学习算法。但是,使用处理器的方法可以具有很大的功耗,并且每当改变算法时可以具有用于并行计算的复杂软件编码。与通过硬件配置执行的方法相比,使用处理器执行深度学习算法的方法可以具有较慢的操作速度和更大的功耗。
发明内容
各种实施例涉及能够执行深度学习算法的卷积神经网络(CNN)操作装置及方法。
各种实施例提出了一种用于对卷积神经网络(CNN)算法执行测试操作的装置及方法,其中对受训的权重数据和输入数据执行卷积运算。
本发明的各种实施例提出了一种卷积神经网络(CNN)操作装置及方法,其能够改善卷积运算与池化运算之间的并行性,以及通过使用针对输入数据和权重数据的映射的预先计算的存储器映射来执行卷积运算以减少操作延时。
本发明的各种实施例提出了一种卷积神经网络(CNN)操作装置及方法,如果操作数为0,则其能够通过绕开卷积运算来减小卷积运算时间。
本发明的各种实施例提出了一种卷积神经网络(CNN)操作装置和方法,其能够通过在预取用于卷积运算的权重数据以及执行卷积运算时使用预取的权重数据执行卷积来减少由于存储器负载延时而引起的乘法延迟。
本发明的各种实施例提出了一种卷积神经网络(CNN)操作装置和方法,其能够执行用于改善卷积运算的复杂度的drop-out操作。
在本发明的各种实施例中,卷积神经网络(CNN)操作装置可以包括:至少一个通道硬件组,其适用于基于输入数据和权重数据来执行特征提取层操作和分类层操作;以及控制器,其耦合到通道硬件组。CNN控制单元可以控制通道硬件组执行特征提取层操作以及当特征提取层操作完成时执行分类层操作。
在本发明的各种实施例中,卷积神经网络(CNN)的操作方法可以包括:通过激活至少一个通道硬件组的卷积块和池化块来执行特征提取层操作,以及当特征提取层操作完成时,通过激活通道硬件组的卷积块来执行分类层操作。
附图说明
参考附图通过下面的详细描述,本发明的上述和其它特征和优点对于本发明所属领域技术人员将变得更加明显,其中:
图1是示出卷积神经网络(CNN)前馈算法的架构的示图。
图2A和图2B是示出卷积神经网络(CNN)的前馈路径流的示图。
图3是示出根据本发明的各种实施例的卷积神经网络(CNN)操作装置的操作过程的示图。
图4A和图4B是示出根据本发明的各种实施例的卷积神经网络(CNN)操作装置的示例性配置的框图。
图5是示出根据本发明的各种实施例的卷积神经网络(CNN)系统的示例性配置的示图。
图6是示出根据本发明的各种实施例的储存在输入单元的CI寄存器中的输入数据集(或CI寄存器输入数据集)的示例性架构的示图。
图7是示出根据本发明的各种实施例的卷积块的示例性配置的示图。
图8A和图8B是示出根据本发明的各种实施例的卷积块的处理元件的示例性配置的示图。
图9A至图9C是示出根据本发明的各种实施例的卷积块的输入数据集、权重数据集以及结果数据集的示例性架构的示图。
图10是示出根据本发明的各种实施例的卷积神经网络(CNN)操作装置的池化操作中输入数据的示例性架构的示图。
图11是示出根据本发明的各种实施例的卷积神经网络(CNN)操作装置的池化块中的输出数据和激活数据的示例性架构的示图。
图12是示出根据本发明的各种实施例的卷积神经网络(CNN)操作装置的分类层中卷积块的输入数据和输出数据的示例性架构的示图。
图13是示出根据本发明的各种实施例的卷积神经网络(CNN)操作装置中层输出数据的示例性架构的示图。
图14是示出根据本发明的各种实施例的卷积神经网络(CNN)系统的另一示例性配置的示图。
图15A至图15C是示出根据本发明的各种实施例的卷积神经网络(CNN)操作装置的示例性操作的流程图。
图16A和图16B是示出根据本发明的各种实施例的由卷积神经网络(CNN)操作装置执行的示例性卷积层操作的流程图。
图17A和图17B是示出根据本发明的各种实施例的卷积神经网络(CNN)操作装置中的示例性池化层操作的流程图。
图18是示出根据本发明的各种实施例的卷积神经网络(CNN)操作装置的示例性分类层输出操作的流程图。
具体实施方式
下面将参考附图更详细地描述各种实施例。然而,本发明可以以不同的形式实施,而不应被解释为限于本文所阐述的实施例。相反,提供这些实施例,使得本公开将是彻底和完整的,并且将向本领域技术人员充分地传达本发明的范围。贯穿本公开,在本发明的各种附图和实施例中,相同的附图标记表示相同的部件。
深度学习算法可以通过执行简单的计算(例如,加法和乘法)来分析大数据,并且可以发现数据集内的隐藏特征。如果深度学习算法以通过计算机的顺序计算方法重复简单计算的方式来实现,则深度学习算法可以具有高功耗和较长运行时间。本发明的各种实施例提出了能够改进深度学习算法的处理的硬件架构。
本发明的各种实施例涉及卷积神经网络(CNN)硬件的架构和操作,其能够通过对学习算法的权重集和输入数据执行卷积运算来执行深度学习算法。
根据实施例,CNN硬件架构可以使用预先计算的存储器映射来接收输入数据,而不用顺序输入输入数据。CNN硬件架构可以改善卷积运算和池化操作之间的并行性,以及通过参考预先计算的存储器映射以非顺序方式输入输入数据而不用顺序提取输入数据来减少操作延时。
根据实施例,提供CNN硬件架构,其可以通过控制卷积运算使得如果操作数(例如,输入数据或权重数据)为0,则不执行卷积计算操作(即过零)来减少执行卷积运算和池化操作所花费的时间。
根据实施例,CNN硬件架构可以通过在深度学习算法中预取权重数据以及在执行卷积计算操作时使用预取的权重数据来执行卷积计算操作。即,CNN硬件架构可以通过在执行了卷积运算的块中从层的开始到层的结束预取要使用的权重数据来减少卷积运算时间(减少卷积运算时由于存储器负载延迟而引起的乘法延迟)。
根据实施例,CNN架构可以使用用于改善全连接层中的算法的性能的drop-out方法(例如,drop-out方法,即正则化方法)来减少操作延时。
以下参考附图更详细地描述本发明的各种实施例。
图1是示出卷积神经网络(CNN)的前馈算法的示例性架构的示图。
参考图1,CNN可以包括特征提取部分110和分类部分120。特征提取部分110可以包括其中卷积层和池化层对重复多次(例如N次)的配置。分类部分120可以包括至少一个全连接层。如图1所示,分类部分120可以包括M个全连接层。特征提取部分110可以包括其中由卷积层和池化层对处理的输出数据成为下一卷积层和池化层对的输入数据的架构。例如,外部输入数据100可以成为特征提取部分110的第一卷积层的输入数据,而由第一卷积层处理和输出的数据可以成为第一池化层的输入数据。此外,由第一池化层处理的数据可以成为第二卷积层(即,下一对中的一个)的输入数据。可以通过在主机中设置的次数(例如,N次)来执行卷积运算和池化操作。由最后一对中的池化层输出的数据可以被馈送到分类部分120的第一全连接层。
分类部件120可以包括至少一个全连接层。分类部分120可以执行预定数量的全连接层的操作,并且由分类部分120输出的数据可以成为输出数据(或训练数据)130。
图2A和图2B是用于示出卷积神经网络(CNN)的前馈路径流的示图。为了说明的目的,图2A和图2B示出了由卷积层和池化层对处理的数据的示例,以描述CNN前馈算法。
参考图2A,最左侧的输入数据200可以包括多个通道。图2示出了输入数据200包括三个通道的示例。输入数据200可以以宽度、高度和深度来表示。按照宽度、高度和长度示出具有一个通道的输入数据210的详情。在图2A和图2B中,210至240示出了相对于输入到一个通道的数据通过卷积运算和池化操作处理的数据的示例。可以使用相同的方法处理输入到其他通道的数据。输入数据200可以被零填充从而符合卷积窗的大小。零填充可以意味着将0插入到输入数据210的边缘。
卷积层可以对具有CxCxD大小的两个权重集220和输入数据210中的每个执行卷积运算。卷积运算可以计算属于输入数据和权重数据并且具有相同的输入深度和权重深度的数据。例如,卷积运算可以将在与输入数据210的卷积窗211Dw(d=0、1、2)的位置相对应的元件的相同位置处的所有权重元件相乘并相加。卷积运算可以对所有深度Di(d=0、1、2)同等地执行。如果3的乘积的和被相加,则相加结果位于与卷积层220的输出(Wo×Ho×Do)的“231”相对应的Z(0,0,0)处。相关关系可以是用于计算图2B中的激活函数Aw、h、k的等式。权重集也可以被称为滤波器。可以确定与滤波器数量相对应的输出数据深度。这样的方法可以对卷积窗(例如,包括图2A的卷积窗211-213的所有卷积窗)同等地执行。在图2B中,“239”示出以等式表示卷积运算的示例。
当执行卷积运算时,可以产生输出数据(诸如图2B的数据230)。当卷积运算终止时,可以通过激活函数240之一将输出数据计算为激活值。在图2B中,“249”示出以等式表示激活函数的示例。激活输出值可以成为池化层250的输入数据。池化操作可以是用于选择进入池化窗(诸如图2B中的池化窗241或242)的多个输入数据的值的最大值或者计算多个输入数据的平均值的操作。这样的最大值或平均值可以被压缩成一个值(诸如251或252)。在图2B中,“259”示出以等式表示池化操作的示例。
根据与图2A和图2B所示的相同的过程,可以对相同输入数据的其它通道数据执行卷积运算和池化操作。对于每个通道和每个层,权重值或滤波器的数量可以不同。池化操作的输出数据可以成为下一层(即,图1中的下一个卷积层)的输入数据。在这种情况下,权重集的数量(即,滤波器的数量)可以成为下一层的输入数据的通道数。
根据本发明的各种实施例的CNN操作装置可以提供能够执行诸如图1和图2所示的卷积神经网络(CNN)前馈算法的新装置及方法。
图3是示出根据本发明的各种实施例的卷积神经网络(CNN)操作装置的操作过程的示图。
参见图3,在初始化操作310中,CNN操作装置可以接收并储存用于执行CNN算法的信息段。收到的信息段可以成为权重数据。此外,CNN操作装置还可以接收并储存层配置信息、用于卷积输入(或预先计算的存储器映射)的地址映射以及激活函数查找表(LUT)中的至少一个。在执行初始化操作310之后,CNN操作装置可以执行特征提取操作320。特征提取操作320可以成为卷积运算和池化操作。可以根据诸如图1至图2B所示的方法和过程来执行卷积运算和池化操作。当完成用于输入数据的特征提取操作320时,CNN操作装置可以执行分类操作330。分类操作330可以包括至少一个全连接层(如图1所示)。当完成分类操作330时,CNN操作装置可以在完成操作340中将数据输出到系统的外部。
图4A是示出根据本发明的各种实施例的卷积神经网络(CNN)操作装置的示例性配置的框图。
参考图4A,CNN操作装置可以包括CNN控制单元400、信息处理单元410以及通道硬件组420。可以在CNN操作装置中实现单个通道硬件组420或两个或更多个通道硬件组420中的多个。
CNN控制单元400可以执行特征提取层和分类层,以及可以在执行对应层的操作时执行用于重新映射输入数据的操作。CNN控制单元400可以包括仲裁器或存储器管理单元(MMU)。
信息处理单元410可以包括至少一个寄存器和至少一个计数器。例如,信息处理单元410可以包括权重寄存器,其用于储存可以用于通道硬件组420的卷积运算的权重数据。例如,信息处理单元410可以包括用于通过CNN操作装置更新操作次数的计数器。当系统被初始化时,信息处理单元410可以将从主机接收的信息段储存在对应的寄存器中,以及根据CNN操作装置的操作来更新计数值。
可以在CNN操作装置中配置多个通道硬件组420。通道硬件组420中的每个可以执行特征提取层操作和分类层操作。通道硬件组420中的每个可以对对应通道的输入数据执行特征提取层操作。当完成特征提取层操作时,通道硬件组420中的每个可以执行分类层的操作。
通道硬件组420中的每个可以包括输入单元430、卷积块440、池化块450以及输出单元460。
输入单元430可以包括用于储存由CNN控制单元400重新映射的输入数据的输入寄存器。输入单元430可以包括用于储存特征提取层的输入数据的卷积输入(CI)寄存器(CI寄存器)以及用于储存全连接层的输入数据的全连接输入寄存器(FCI寄存器)。
卷积块440可以对储存在输入单元430中的输入数据和信息处理单元410的权重数据执行卷积运算,以及可以对已经执行卷积运算的数据的乘积求和。卷积块440可以对具有与输入数据相同的标识(ID)的权重数据执行卷积运算。
池化块450可以对属于具有相同ID的在特定提取层中被卷积计算的数据的数据执行池化操作。池化块450可以选择已执行卷积运算的数据的值的最大值,或者计算已执行卷积运算的数据的平均值。池化块450可以不在分类层中操作。
输出单元460可以储存在特征提取层中由池化块450输出的数据,以及可以储存在分类层中由卷积块440输出的数据。输出单元460可以包括层输出寄存器(LO寄存器)和激活块。
具有上述配置的CNN操作装置的CNN控制单元400可以在执行第一特征提取层时重新映射外部输入数据,以及可以将重新映射的数据储存在输入单元430中。当执行继第一特征提取层之后的特征提取层时,CNN控制单元400可以重新映射由输出单元460输出的输出数据,以及将重新映射的数据储存在输入单元430中。当特征提取层操作终止时(当预定数量的特征提取操作终止时),CNN控制单元400可以执行分类层。CNN控制单元400可以在分类层中重新映射在卷积层中计算出的输出数据,以及可以将重新映射的数据储存在输入单元430中作为全连接层的输入数据。当终止执行分类层时,CNN控制单元400可以将得到的数据输出到外部系统。
如上所述,图4A中的CNN操作装置可以包括:信息处理单元410,其被配置为包括用于储存权重数据的寄存器;至少一个通道硬件组420,其被配置为执行特征提取层操作和分类层操作;以及CNN控制单元400,其被配置为执行控制使得每个通道硬件组执行特征提取层操作,以及在特征提取层操作完成时执行分类层操作。此外,每个通道硬件组420可以包括:输入单元430,用于储存输入数据;卷积块440,用于对输入数据和权重数据执行卷积运算;池化块450,用于对卷积计算的数据执行池化操作;以及输出单元460,用于储存已经执行卷积运算的数据或已经执行池化操作的数据。CNN操作装置可以通过在特征提取层操作中驱动通道硬件组420的卷积块440和池化块450来执行卷积层的操作和池化层的操作。当终止特征提取层操作时,CNN操作装置可以执行分类层的操作。在分类层的操作中,CNN操作装置可以通过驱动通道硬件组420的卷积块(此时不驱动池化块450)来执行全连接层的操作。
图4B是示出根据本发明的各种实施例的卷积神经网络(CNN)操作装置的另一个示例性配置的框图。
参考图4B,CNN操作装置可以包括CNN控制单元405、信息处理单元415、特征提取层块425以及分类层块427。单个或多个特征提取层块425可以在CNN操作装置中实现。
CNN控制单元405可以控制特征提取层块425和分类层块427的操作。CNN控制单元405可以在执行对应层的操作时执行重新映射输入数据的操作。CNN控制单元405可以控制特征提取层块425的操作,以及在特征提取层块425的操作完成时可以控制分类层块427的操作。CNN控制单元405可以包括仲裁器或存储器管理单元(MMU)。
信息处理单元415可以包括至少一个寄存器和至少一个计数器。例如,信息处理单元415可以包括权重寄存器,其用于储存特征提取层块425和分类层块427中用于卷积运算的权重数据。例如,信息处理单元415可以包括计数器,其用于更新在CNN操作装置中执行的计算操作的次数。当系统被初始化时,信息处理单元415可以将从主机接收的信息段储存在对应的寄存器中,以及可以根据CNN操作装置的操作来更新计数值。
可以在CNN操作装置中配置多个特征提取层块425。特征提取层块425中的每个可以对每个对应的通道数据执行特征提取层操作。特征提取层块425中的每个可以包括输入单元435、卷积块445、池化块455以及输出单元465。
分类层块427可以包括单个或多个分类层。分类层块427可以对已经完成特征提取层操作的数据执行分类层操作。特征提取层块427可以包括输入单元437、卷积块447以及输出单元467。
在具有诸如上述配置的CNN操作装置中,当首次执行特征提取层操作时,CNN控制单元405可以将从外部系统接收的数据储存在特征提取层块425的输入单元435中。当执行继第一特征提取层之后的特征提取层时,CNN控制单元405可以重新映射储存在输出单元465中的池化块455的输出数据,以及可以将重新映射的数据储存在输入单元435中作为卷积输入数据。当特征提取层操作终止时,CNN控制单元405可以执行分类层块427。分类层块427可以重新映射由卷积块447计算的输出数据,以及可以将重新映射的数据储存在输入单元437中作为输入全连接层的输入数据。当分类层操作终止时,CNN控制单元405可以将得到的数据输出到外部系统。
图5是根据本发明的各种实施例的卷积神经网络(CNN)系统的示图。
参考图5,CNN系统可以包括CNN控制单元500、信息处理单元510、至少一个通道硬件组520、存储器590、存储器控制器580以及封装器570。通道硬件组520中的每个可以包括输入单元530、卷积块540、池化块550以及输出单元560。在下面的描述中,CNN操作装置可以是包括CNN控制单元500、信息处理单元510、输入单元530、卷积块540、池化块550以及输出单元560的装置。CNN系统可以意味着包括CNN操作装置和外部设备(例如,存储器和存储器控制器)的系统。此外,在图5中,CNN控制单元500、信息处理单元510以及通道硬件组520可以分别与图4A的CNN控制单元400、信息处理单元410以及通道硬件组420相同。图5所示的通道硬件组520的输入单元530、卷积块540、池化块550以及输出单元560可以具有分别与图4A所示的通道硬件组420的输入单元430、卷积块440、池化块450以及输出单元460相同的配置和操作。
存储器590可以储存将对其执行深度学习算法的数据。存储器控制器580可以控制存储器590的读取和写入操作,以及向CNN操作装置提供输入数据。存储器控制器580可以与外部系统(例如,主机)通信数据。封装器570可以与CNN操作装置一起执行存储器控制器580的数据接口操作。例如,当系统被初始化时,存储器控制器580可以从主机接收用于执行深度学习算法的信息(例如,权重数据、地址映射、层配置信息、查找表和/或drop-out信息),以及可以通过封装器570将所述信息储存在信息处理单元510的对应寄存器中。此外,CNN控制单元500可以通过封装器570接收储存在信息处理单元510中的信息(例如,地址映射)。
CNN控制单元500可以包括仲裁器或存储器管理单元(MMU)。信息处理单元510可以包括多个寄存器和计数器。信息处理单元510可以包括用于重新映射输入数据的地址映射寄存器(卷积输入(CI)重新映射地址映射或用于CI的地址映射)511、用于卷积运算的权重寄存器512、层配置寄存器(L cfg寄存器)513、激活函数查找表(LUT)514以及drop-out发生器515。当系统被初始化时,信息处理单元510的地址映射寄存器511、权重寄存器512、层配置寄存器513、激活函数LUT 514以及drop-out发生器515可以通过外部系统(例如,主机)接收对应的数据,以及可以储存接收的数据。
输入单元530可以包括输入寄存器,其用于储存由CNN控制单元500基于地址映射寄存器511重新映射的输入数据。输入单元530可以包括CI寄存器(CI寄存器)和/或全连接输入寄存器(FCI寄存器),该CI寄存器(CI寄存器)用于储存特征提取层的卷积输入数据,该全连接输入寄存器(FCI寄存器)用于储存全连接层输入数据。卷积块540可以包括处理元件(PE)控制器543、包括多个PE的PE单元545、包括多个加法器的加法器(ADD)块547以及累加器(ACC)块549。池化块550可以包括池化操作单元553和池化输入寄存器555。输出单元560可以包括层输出寄存器(LO寄存器)和激活块。CNN操作装置可以包括多个通道硬件组520。通道硬件组520中的每个可以包括输入单元530、卷积块540、池化块550以及输出单元560。
在下面的表1中列出在本发明的各种实施例中使用的缩写。
表1
缩写 代表
CNN accel 卷积神经网络加速器
CH set 通道硬件组
reg 寄存器
ID 标识
CI 卷积输入
L cfg 层配置
CI id 卷积输入ID
CO_id 卷积输出ID
PI id 池化输入ID
PO_id 池化输出ID
L_id 层ID
PE 处理元件
PE ctrl 处理元件控制器
K_id 内核ID
PI reg 池化输入寄存器
信息处理单元510可以包括寄存器和计数器,所述寄存器用于储存在CH组的元件中使用的信息段。信息处理单元510可以包括:地址映射寄存器511,用于重新映射输入数据;权重寄存器512,用于受训的权重;寄存器,用于储存关于层的配置的信息,以及计数器,将用在操作中。首先描述信息处理单元510的寄存器,然后描述计数器。
下面描述寄存器。
权重寄存器512可以是用于储存受训的权重数据集的寄存器。学习可以是学习输入数据集中的特征的一系列过程。在学习过程中,可以通过对输入数据集和权重数据集执行卷积运算来学习特征。卷积块540可以对储存在权重寄存器512中的权重集和输入数据执行卷积运算,以及可以计算属于输入数据集和权重数据集并且具有相同输入深度和权重深度的数据。
当系统处于初始化状态时,地址映射寄存器511可以在初始化状态下接收从主机接收的地址映射(或用于CI的地址映射),以及储存接收到的地址映射。地址映射可以包括用于在输入数据集和权重数据集之间的卷积运算的映射信息,并且可以包括由主机预先计算的地址映射。地址映射可以存在于每一层中。在第一层中,地址映射可以包括用于将外部输入数据映射到权重数据集的信息。在继第一层之后的层中,地址映射可以是用于将输出单元560的层输出寄存器(以下称为“LO寄存器”)的地址映射到输入单元530的CI寄存器的地址的映射。CNN控制单元500的仲裁器可以基于地址映射寄存器511将输入数据接收到CI寄存器的地址。此外,仲裁器可以基于地址映射寄存器511将输出单元560的LO寄存器的数据储存在CI寄存器中。如果不存在输入数据(如果不存在CI寄存器地址的输入地址),则CNN控制单元500可以设置零标志(ZF)(例如,ZF=1)。在其ZF被设置的地址的情况下,CNN控制单元500可以在CI寄存器中储存零填充输入数据。
主机可以根据等式1和等式2来计算地址映射寄存器511的地址映射。等式1可以用于计算在输入地址和零填充输入地址映射之间的映射(即,输入地址到零填充输入地址的映射)。输入地址可以是从0到W*H*D-1。等式2可以用于计算在零填充输入地址和输入数据(包括输出单元560的LO寄存器数据)之间的地址映射(即,零填充输入地址到卷积输入数据的地址映射)。可以从CI寄存器的地址计算零填充ZP寄存器的地址。
for(d=0,d<D,d++)
ZPindex=(Wc+2Zx)(Zy+Quotient)+Zx+Modulo
ZPaddr=ZPstart addr+ZPindex(Inputaddr)
...(1)
Q:Quotienet function
R:Modulo function
A1:#of CI elements for 1 PO:D×Cx×Cy×Px×Py
A4:Q(PI id,A3)
A5:R(PI id,A3)
A6:Q(CI regindex,Cx×Cy)
A7:R(A6,D)
A9:size of Convolution window:Cx×Cy
A10:Q(CIreg index,A9)
A11:R(CIreg index-A10×A9,A9)
A12:Q(A11,Cx)
A13:R(A11-Q(A11,Cx)×Cx,Cx)
POid(LOid)=Q(CI reg index,A1)
ZP start=A8×A7+A4×(wc+2Zx)+A5
ZP reg addr=ZP start+A12×(Wc+2Zx)+A13
...(2)
层配置寄存器(L cfg寄存器)513可以是用于储存关于对应层的配置的信息的寄存器。CNN控制单元500可以检查包括在对应层的L cfg寄存器中的信息,并且配置CI寄存器。仲裁器可以计算来自L cfg寄存器的输入数据的CO_id、PO_id和L id,以及可以将计算的CO_id、PO_id和L id与输入数据一起储存在被配置的CI寄存器中。关于L cfg寄存器的信息可以包括诸下表2的层配置表中列出的信息。
表2
激活函数LUT 514的输出值可以是用于储存用于执行激活函数的数据的寄存器。储存在输出单元560的LO寄存器中的数据可以是在由激活函数LUT执行激活函数之后被储存的数据。
drop-out发生器515可以产生drop-out信号。CNN算法可以是高度复杂的,并且由于高度复杂化而过度拟合,因此可能具有很长的操作延时。漏失(drop-out)可以是用于改善CNN算法的复杂度的规范化(或正则化)任务。术语“drop-out(或剪枝)”可能意味着一层的某些信号或节点不起作用。即,drop-out可能意味着不接收先前层的值以及也不将值传递到下一层的操作。drop-out发生器515可以进行确定,使得包括在卷积块540的PE单元545中的一些PE被漏失。
除了上述寄存器之外,信息处理单元510还可以包括以下计数器。
通道计数器501可以是用于对输入数据的通道数进行计数的计数器。通道计数器501的最大值可以是输入数据集的通道数。如果输入数据的通道数比CH组的数量大,则在通道计数的值达到最大值之前,可以不开始分类层。例如,如果输入数据的通道数为5且CH组的数量为3,则通道计数的最大值可以为5。此外,三个CH组可以并行提取三个通道的输入数据的特征。此后,当三个通道的输入数据的特征的提取完成时,通道计数器501可以通过设置两个CH组来将三个CH组中的两个设置为最大通道计数。即,在与通道计数器501的最大值相对应的特征提取层操作完成之前,CNN控制单元500可以不执行分类层操作。
开始层计数器/结束层计数器502可以是用于对开始层计数和结束层计数进行计数的计数器,以检查层的开始状态和结束状态。开始层计数的最大值可以是(输入数据集的层数-1)。开始层计数可以增加1,直到其操作正在执行的层的操作终止。CNN操作装置可以通过检查开始层计数的值而了解当前层的状态。结束层计数的最大值可以是输入数据集的层数。每当新层开始时,结束层计数可以增加1,并且可以表示当前层的状态。
计数器503可以对CI数据计数/LI数据计数进行计数。CI数据计数/LI数据计数的最大值可以是Cx*Cy*D。每当在卷积块540的ADD块547中添加与相同CO_id相对应的数据时,CI数据计数的值可以增加1。计数值可以是用于检查所有卷积输入元件是否被求和的值。如果与当前层的CO_id相对应的CI数据计数的值不是最大值,则ACC块549可以将数据集输入到ADD块547的最后ADD块层。在全连接(FC)层,K_id可以起到CO_id的作用。
计数器506可以对PI数据进行计数。PI数据计数的最大值可以是Px*Py。池化块550可以检查数据集的PO_id的值,以及将对应的PI数据计数的值增加1。当PI数据计数值的值达到最大值时,池化块550可以将数据集输出到输出单元560的LO寄存器。
计数器504可以对LO数据进行计数。LO数据计数的最大值可以由等式3来确定。当被输入到LO寄存器的数据集的L_id被确认时,LO数据计数器504可以将对应的LO数据计数增加1。LO数据计数器504可以表示对应层的所有输出是否已经全被计算。
计数器507可以对内核进行计数。内核计数器507的最大值可以是K。如果被输入到LO寄存器的数据集的K_id被配置,则内核计数器507可以将对应的内核计数值增加1。内核计数器507可以表示对应层的所有输出是否已经全被计算。
信息处理单元510可以储存在通道硬件组520中使用的信息段。下面的表3示出了使用信息处理单元510的信息段的元件。
表3
具有与图5相同配置的CNN操作装置可以是CNN加速器,并且可以执行特征学习部分(或特征提取部分)和分类部分两者。根据要使用的输入数据的通道数,可以适当地设计通道硬件组521-52N。例如,如果输入数据是RGB图像数据,则通道数可以是3,且通道硬件组可以被配置为3。
通道硬件组521-52N中的每个可以接收对应通道的输入数据,以及执行特征提取操作和分类操作。通道硬件组521-52N中的每个可以包括输入单元530、卷积块540、池化块550以及输出单元560。通道硬件组521-52N中的每个可以基于输入单元530、卷积块540以及输出单元560的操作来首先执行特征提取操作。在完成特征提取操作之后,通道硬件组521-52N的选中的通道硬件组可以执行分类操作。选中的通道硬件组可以基于输入单元530、卷积块540以及输出单元560的操作来执行分类操作。
通道硬件组521-52N可以负责CNN算法的计算。CNN算法的计算可以包括卷积、池化以及元件级乘法和加法。信息处理单元510可以储存在通道硬件组521-52N的操作块中使用的信息。信息处理单元510可以包括用于配置被输入到输入单元530的输入数据的地址映射寄存器511、用于储存受训权重的权重寄存器512、用于储存关于每个层的配置的信息的Lcfg寄存器513等。信息处理单元510可以包括可以在操作中使用的计数器。
被输入到通道硬件组521-52N的输入数据可以包括16或36点数据。此外,输入数据可以包括浮动数据格式或固定数据格式(例如,16或32浮点格式或定点格式)。通道硬件组521-52N的卷积块540可以根据输入数据的格式而具有不同的配置。可以基于资源和输入数据来适当地选择包括在卷积块540的PE单元545中的PE的数量以及包括在ADD块547中的加法器的数量。当输入数据被储存在输入单元530中时,卷积块540可以立即开始操作。
CNN操作装置可以执行特征提取层操作。在特征提取层操作完成之后,CNN操作装置可以执行分类层操作。
下面描述特征提取层操作。
CNN控制单元500可以执行用于配置输入数据的功能,以便使用卷积块540的有限的处理器元件来有效地执行每个层的计算。即,CNN控制单元500可以用于配置输入单元530的CI寄存器(即,卷积输入数据寄存器)。CNN控制单元500可以检查储存在对应层的L cfg寄存器513中的信息,以及配置输入单元530的CI寄存器。在特征提取层中,CNN控制单元500可以将通道硬件组520中的一个分配给输入数据的每个通道,以及将输入数据分布至所分配的一个通道硬件组520。在通道硬件组520的数量的计算终止之后,如果输入数据的通道数比通道硬件组520的通道数大,则CNN控制单元500可以通过将通道硬件组520分配给输入数据的通道来计算通道。例如,如果通道硬件组520的数量为3(即,N=3)并且输入数据的通道数为5,则CNN控制单元500可以通过将三个通道的输入数据分配到三个通道硬件组来首先计算通道硬件组的数量。当三个通道的输入数据的计算终止时,CNN控制单元500可以通过将输入数据分配给三个通道硬件组中的两个来计算输入数据。
输入单元530的CI寄存器可以储存由CNN控制单元500通过外部接口接收的新输入数据,以及还可以将先前层的输出数据储存为输入数据。即,在第一层中输入数据可以是从外部接收的数据。在第二层之后的数据可以是由先前层的输出单元560输出的数据。
CNN控制单元500可以基于储存在信息处理单元510的地址映射寄存器511中的地址映射信息来将输入数据储存在输入单元530的CI寄存器中。如上所述,地址映射信息可以是由主机来先前地计算出。当系统被初始化时,地址映射信息可以被储存在信息处理单元510的地址映射寄存器511中。例如,在图2中,由于零填充,输入数据210可以具有与窗数据220不同的数据大小。当卷积块540对输入数据集和权重数据集执行卷积运算时,输入数据集和权重数据集可以具有相同的大小。因此,主机可以先前地计算出地址映射以用于使输入数据集的大小与具有因零填充而改变的数据大小的权重数据集的大小相同,以及可以将计算出的地址映射储存在地址映射寄存器511中。根据如上所述的等式1和等式2,可以使用下表4的方法来产生地址映射。地址映射可以包括关于其中储存输入数据的输入单元530的CI寄存器的地址的信息。
CNN控制单元500可以在第一特征提取层中通过封装器570将从外部系统接收的数据储存在输入单元530的CI寄存器中作为输入数据。此外,在从第二特征提取层到最后特征提取层的特征提取层中,CNN控制单元500可以储存在先前特征提取层中计算的数据并且输出作为输入数据。
图6是示出根据本发明的各种实施例的示例性输入数据集的示图。例如,图6示出储存在图5的输入单元530的CI寄存器中的输入数据集(或CI寄存器输入数据集)的架构。输入数据集可以包括输入数据、“i.数据”、零标志Z_F、CO_id、PO_id、L_id等。
当将输入数据储存在CI寄存器中时,如果输入数据的值为0,则CNN控制单元500的仲裁器可以设置Z_F(例如,将Z_F比特位屏蔽为1)。当输入数据的Z_F比特位被设置时,卷积块540和池化块550可以基于Z_F比特位来快速执行计算操作。例如,卷积块540和池化块550在乘法运算的情况下,可以输出0而不进行计算操作,而在加法的情况下,立即输出不同的值(即,操作数值),从而能够减少操作延时。
当特征提取层中的计算终止时,CNN控制单元500可以选择通道硬件组520之一,可以将整个输入数据输入到选中的通道硬件组,以及可以执行计算操作。分类层中的操作可以是卷积计算操作,并且可以省略池化操作。
当将输入数据储存在输入单元530的CI寄存器中时,CNN控制单元500可以考虑当前层的状态。当重新映射输入数据并将重新映射的数据储存在CI寄存器中时,CNN控制单元500可以检查L cfg寄存器513中对应层的配置,可以通过地址映射寄存器511来确定输出单元560的LO寄存器的地址,以及可以将对应地址的位置处的LO数据储存在输入单元530的CI寄存器中作为输入数据。地址映射寄存器511和L cfg寄存器513可以在初始化状态下通过相应的封装器570从主机接收地址映射(或CI重新映射地址映射)信息和层配置信息,并且可以储存它们。地址映射寄存器511可以储存与各个层相对应的地址映射。L cfg寄存器513的层配置信息可以是表3的层配置表。
当直到将具有诸如图6的架构的输入数据储存到CI寄存器的最后地址时,CNN控制单元500的仲裁器可以继续将输入数据储存在从最开始就已被处理的CI寄存器的区域中。可以通过考虑外部接口的带宽和CNN操作装置的带宽(即,深度学习加速器硬件的带宽)来确定CI寄存器的大小。输入单元530的仲裁器可以从L cfg寄存器513读取输入数据的CO_id、PO_id和L id,以及储存具有诸如图6的架构的输入数据。此外,当卷积块540的每个PE计算输入数据时,输入单元530的仲裁器可以提供对应输入数据的Z_F,从而能够减少操作延时。
CNN操作装置可以使用特征提取层中被卷积计算的数据来执行池化操作。在使用卷积输出执行池化操作时等待所有的池化输入(或卷积输出)以后的执行池化操作的方法可能消耗大量时间。如果仅存在两个或更多个池化输入(或卷积输出),则CNN操作装置(或通道硬件组)可以通过先前使用两个值执行池化操作来更快地完成整个特征提取层的计算。如果存在两个或更多个池化输入,CNN操作装置(或通道硬件组)可以执行池化操作而无论卷积运算是否已经完成。为此,CNN操作装置(或通道硬件组)可以首先计算与包含一个池化输入的卷积输入操作数相对应的输入数据。
为了首先计算所需的输入数据,CNN控制单元500的仲裁器可以参考信息处理单元510的地址映射寄存器511的CI重新映射地址映射来从输出单元560的LO寄存器中读取所需的输入数据,以及可以将读取的输入数据储存在输入单元530的CI寄存器中作为输入数据。如上所述,在初始化状态下,地址映射寄存器511的CI重新映射地址映射可以从主机接收计算值并储存接收到的值。CI重新映射地址映射可能存在于每个层中。对于配置CI重新映射地址映射的方法,可以参考等式1和等式2。
CNN控制单元500的仲裁器可以通过封装器570将CI寄存器的输入地址输出到地址映射寄存器511,以及可以将从地址映射寄存器511读取的值储存在由对应CI寄存器的地址表示的CI寄存器中。如果不存在与CI寄存器的地址相对应的输入地址,则CNN控制单元500可以将Z_F设置为1。其Z_F被设置为1的地址可以对应于零填充(即,CNN数据预处理的零填充)。例如,如果输入数据、卷积参数和池化参数具有以下条件,则它们可以以诸如表4的映射形式来表示:
输入数据:W=3,H=3,D=3,CH=3。
第一层参数卷积:Cx=Cy=D=3,Zx=Zy=Sx=Sy=1,K=2
第一层参数池:Px=Py=2,Sx=Sy=1。
[表4]
当输入数据被储存在输入单元530的CI寄存器中时,卷积块540可以执行卷积运算。卷积块540可以包括PE控制器543、包括多个PE的PE单元545、包括多个加法器的ADD块547以及ACC块549。卷积块540可以接收储存在输入单元530的CI寄存器中的输入数据集以及储存在权重寄存器512中的权重数据集,以及可以将卷积计算的输出数据输出到池化块550。
图7是示出根据本发明的各种实施例的卷积块的示图。图8A和图8B是示出根据本发明的各种实施例的卷积块的处理元件(PE)的示图。图9A至图9C是示出根据本发明的各种实施例的卷积块的输入数据集、权重数据集和结果数据集的架构的示图。例如,在图7至图9C中,卷积块可以是图5中的卷积块540。
参见图7,卷积块540可以包括PE控制器543、包括多个PE的PE单元545、包括多个加法器的ADD块547以及ACC块549。
PE单元545的每个PE可以执行用于将接收到的输入数据与权重数据集相乘的操作。PE控制器543可以将输入数据集和权重数据集从输入单元530的对应CI寄存器和权重寄存器512输入到对应的PE 545,使得PE单元545可以执行卷积乘法运算。PE控制器543可以通过从权重寄存器512预取权重数据集来减少读取权重数据集所花费的时间。CNN操作装置的PE控制器543可以参考开始层计数/结束层计数器502来从权重寄存器512预取权重数据集。例如,如果开始层计数器的计数值为1并且结束层计数器的计数值为3,则PE控制器543可以从权重寄存器512预取层1至层3的权重数据集。PE控制器543可以将属于预取的权重数据集并且与输入数据的L_id相对应的权重数据集输入到包括在PE单元545中的PE。
PE控制器543可以将输入单元530的CI寄存器的输入数据集和对应层的权重寄存器512的权重数据集输入到准备进行计算的PE单元545的PE。可以在不同时间执行输入数据集和权重数据集被输入至其的相应PE的乘法运算。如果在输入单元530的CI寄存器中存在一个或更多个输入数据并且在PE单元545中存在能够计算的PE,则PE控制器543可以将对应的输入数据集和权重数据集输入到被包括在PE单元545中并已经准备好的PE。如果PE是就绪状态(即,当先前输入数据集和权重数据集的乘法计算终止时),PE控制器543可以将下一个输入数据集和权重数据集输入到对应的PE,以及将输入单元530的CI寄存器和权重寄存器512的读取指针增加1。此外,如果权重数据集为0,则PE控制器543可以将Z_F设置为1。
PE控制器543可以将具有诸如图6所示的架构的输入数据接收到其乘法运算已终止的PE。PE控制器543可以对具有CO_id的输入数据执行计算操作。即,卷积块540的输出可以是将具有相同CO_id的输入数据的所有乘法结果值相加的结果。PE控制器543可以检查Lcfg寄存器513的层配置信息,可以产生权重数据集,以及可以将产生的权重数据集输入PE单元545。PE控制器543可以检查开始层计数器/结束层计数器502的值以及对应的L cfg寄存器513的层配置信息,以及预取与权重寄存器512相对应的权重数据集,从而能够减少读取权重数据集所花费的时间。K_id表示权重集编号,并且可以用于每个通道硬件组520以判断是否执行下一层的操作(即,层操作)。
PE单元545可以对从PE控制器543接收的输入数据集和权重数据集执行卷积乘法运算。ADD块547可以将由PE单元545输出的卷积乘法运算的结果值加在一起。ACC块549可以将相加的ADD块547的输出累加,使得所有卷积乘法运算的结果值被相加在一起。当卷积乘法运算的所有结果值被累加时,ACC块549可以将累加的结果值输出到池化块550。
参考图8A,卷积块540的PE单元545的每个PE(图5所示)可以接收诸如图9A的911的输入数据集以及诸如图9A的913的权重数据集,以及可以对输入数据集和权重数据集执行卷积层操作。如图9A的911所示,输入数据集可以是包括输入数据、ZF(Z_F)、卷积输出ID(CO_id)、池化输入ID(PI id)、池化输出id(PO_id)以及层ID(L_id)的数据集。如图9A的913所示,权重数据集可以是包括权重数据、Z_F以及内核id(K_id)的数据集。乘法器810可以将输入数据集911和权重数据集913相乘。或门820可以对包括在具有与输入数据集911相同架构的输入数据集中的Z_F与包括在具有与权重数据集913相同架构的权重数据集中的Z_F执行或运算。选择器(或多路复用器)830可以首先输入乘法器810的输出(即,第一输入),可以其次输入接地(或零)信号(即,第二输入),可以基于或门820的输出来选择并输出第一输入或第二输入中的一个。PE单元545的每个PE可以包括与输入数据点的数量相对应的乘法器810。例如,每个PE可以是16比特位或32比特位/浮点或定点的乘法器。在PE控制器543的控制下,每个PE可以接收诸如图9A所示的输入数据集和权重数据集。乘法器810可以对所接收的两个数据执行卷积乘法运算。乘法器810的输出可以成为选择器830的第一输入。或门820可以对包括在诸如输入数据集911的输入数据集中的Z_F与包括在诸如权重数据集913的权重数据集中的Z_F执行或运算。因此,如果包括在输入数据集和权重数据集的Z_F信号中的任意一个Z_F是设置状态,则选择器830可以选择并输出第二输入。即,如果输入数据集和权重数据集的两个Z_F都未被设置,则选择器830可以选择乘法器810的输出。由选择器830输出的PE的数据集可以具有与图9A的结果数据集915具有相同的架构。PE的结果数据集可以是包括结果数据、Z_F、CO_id、PO_id、L_id以及K_id的数据集。
参见图8B,PE单元545的每个PE可以在分类层的全连接层操作中响应于drop-out信号而输出零数据。乘法器810可以对接收的两个数据(即,输入数据和权重数据)执行卷积乘法运算。或门820可以对drop-out信号、包括在输入数据集(诸如图9A的输入数据集911)中的Z_F和包括在权重数据集(诸如图9A的权重数据集913)中的Z_F执行或运算。drop-out信号可以是在分类操作中用来漏失(dropout)PE组的操作的信号,并且可以指图5中的信息处理单元510的drop-out发生器515的输出。因此,如果包括在输入数据和权重数据中的Z_F信号中的任意一个Z_F是设置状态或者drop-out信号是设置状态,则选择器830可以选择并输出第二输入。即,如果输入数据和权重数据的两个Z_F都未被设置并且drop-out信号不是设置状态,则选择器830可以选择乘法器810的输出。
如果输入数据或权重数据的Z_F为1,则CNN操作装置可以将计算的结果值(或结果数据包)的Z_F设置为0并且将设置的Z_F移交到下一步骤。由于CNN算法的数据(即操作数数据)基本上为0,所以卷积块540可以只检查Z_F,并且可以不执行计算,从而能够提高卷积计算速度。此外,如果drop-out信号是设置状态,则卷积块540可以不执行卷积计算操作。
PE单元545的每个PE可以将权重数据集(诸如图9A的权重数据集913)的K_id插入至具有架构的结果数据集(诸如图9A的结果数据集915)的K_id中。由PE单元545的每个PE计算出的结果数据集可以被传输到ADD块547。至少两个PE结果值可以被传输到ADD块547的加法器之一。每个操作数数据集的特征值的需求值可以被储存为结果数据集并且被传输到ADD块547。
ADD块547可以包括多个加法器(例如,16比特位或32比特位/浮点或定点的加法器)。ADD块547可以执行用于接收由PE单元545的PE计算出的两个或更多个乘法结果值并将它们一起相加的操作。例如,ADD块547的每个加法器可以通过将由PE单元545输出的第一结果数据集(诸如图9B的结果数据集931)与第二结果数据集(诸如图9B的结果数据集933)相加在一起来输出加法结果数据集(诸如图9B的加法结果数据集935)。结果数据集931和933(诸如第一结果数据集和第二结果数据集)中的每个可以具有与图9A的结果数据集915相同的架构。在这种情况下,如果ADD块547的加法器的输入数据(即,操作数(PE结果数据),例如,PE结果值A,诸如结果数据集931)的Z_F是设置状态(即,Z_F=1),则其Z_F未设置的其它输入数据(即,操作数,PE结果值B,诸如结果数据集933)可以被不变地输出作为加法结果值。如果诸如图9B的结果数据集931和933的两个数据(即,操作数)的两个Z_F都是设置状态,则ADD块547的加法器可以将特征信息(或特征比特位值)储存在结果数据集(诸如结果数据集935)中,以及可以将特征信息输出到下一个块(即,ADD块或ACC块)。
ADD块547的每个加法器可以将与相同CO_id相对应的数据加在一起。即,被输入到ADD块547的加法器的数据(即,PE输出数据)可以具有与结果数据集931或933相同的架构。每个加法器可以接收属于PE输出数据并且具有相同CO_id的两个数据,以及可以将两个数据相加在一起。在这种情况下,如果两个数据(即,操作数)不具有相同的CO_id,加法器可以移交两个数据而不执行加法运算。
每当卷积块540对具有相同CO_id的数据执行加法运算时,就可以将与信息处理单元510的CO_id相对应的CI数据计数器503的计数值增加1。CI数据计数可以增加到Cx*Cy*D。在表2中列出关于信息处理单元510的每个计数的信息。每个计数器的最大值可以被储存在L cfg寄存器513中。ADD块547的每个加法器可以将两个输入数据相加一起。因此,加法器可以包括多级加法器(即,ADD块层)。第一级的加法器可以具有用于接收由PE单元545输出的两个数据并将两个数据相加在一起的架构。继第一级之后的每个级的加法器可以具有用于将由先前级的两个加法器输出的两个数据相加在一起的架构。因此,可以作为ADD操作数来接收的数据的最大量可以随着ADD块层继续而增加。加法器可以将属于接收到的数据并具有相同CO_id的数据相加在一起,并且可以将所有剩余的数据移交到下一个ADD块层。
ACC块549可以将ADD块547的最后加法器层的输出(诸如图9C的输入数据集951-955)累加。ACC块549可以检查由ADD块547输出的数据的CO_id。如果与所检查的CO_id相对应的CI数据计数器503的值达到最大值(即,对应层的Cx*Cy*D),则ACC块549可以将对应的数据(诸如图9C的输入数据集961)储存在池化块550的池化输入寄存器(以下被称为“PI寄存器”)555中。如果对应的CI数据计数器503的值不是最大值,则ACC块549可以将对应的数据(诸如图9C的输入数据集963)再次输入到ADD块547的最后加法器层。最后加法器层可以检查已经从ACC块549接收到的数据,以及对接收到的数据执行加法运算。如果CI数据计数器503的值尚未达到最大值,则可能意味着具有对应CO_id的输入数据仍然被计算,或者输入单元530的CI寄存器还未传输数据。当ACC块549将结果数据移交到池化块550时,不再使用CO_id。因此,CO_id可以如在如图9C的输入数据集961中那样被去除。
图10是示出根据本发明的各种实施例的卷积神经网络(CNN)操作装置的池化操作中的输入数据的示例性架构的示图。池化操作的输入数据可以是图5中的卷积块540的输出数据(诸如图9C的输入数据集961)。图11是示出根据本发明的各种实施例的卷积神经网络(CNN)操作装置的池化块(例如,图5中的池化块550)中的输出数据和激活数据的示例性架构的示图。
诸如图10的卷积计算的结果数据可以被顺序储存在池化块550的PI寄存器555中。当两个或更多个数据(即,卷积计算的数据)被储存在PI寄存器555中时,池化操作单元553可以检查PO_id并且对具有相同PO_id的数据执行池化操作。尽管未接收到要执行池化操作的所有值,但是如果具有相同PO_id的两个或更多个结果值被储存在PI寄存器555中(即,如果具有相同PO_id的两个或更多个值被储存在PI寄存器555中),则池化块550可以立即执行池化操作。因此,可以减少池化操作延时。
当执行池化操作时,池化块550可以检查PO_id的值并且将对应的PI数据计数器506的计数值增加1。PI数据计数器506的最大值可以是如表2中列出的Px*Py。在池化块550的池化操作中,可以使用用于选择属于两个输入并具有最大值的输入或计算两个输入的平均值的方法。在用于选择最大值(即,最大池化)的方法的情况下,如果仅存在两个数据,则池化块550可以选择属于这两个数据并且具有较大值的数据,可以将选中的数据储存在PI寄存器555,以及可以丢弃具有较小值的数据。在用于计算平均值(即,平均池化)的方法的情况下,池化块550可以计算两个值的平均值,以及将计算的值再次储存在PI寄存器555中。
池化块550可以使用在具有诸如图10的架构的池化输入数据中的Z_F来快速地执行池化操作。在执行池化操作之后,池化块550可以检查对应PO_id的PI数据计数器506的值。如果PI数据计数器506的值达到最大值(Px*Py),则池化块550可以将池化操作的结果值输出到输出单元560的LO寄存器。当将池化操作的结果值输出到输出单元560的LO寄存器时,池化块550可以按照PO_id的次序来输出结果值。因此,PO_id可以如在图10的LO寄存器输入数据集111那样中被去除,因为在要传输的数据的架构中不再需要它。如果对应的PO_id的PI数据计数器506的值未达到最大值,则池化块550可以将池化操作的结果值再次储存在PI寄存器555中,并且等待直到接收到具有相同PO_id的数据为止。
池化块550已经终止对其池化操作的数据可以被储存在输出单元560的LO寄存器中。
LO寄存器的数据可以经厉激活函数并被储存。在激活函数中,LO寄存器的数据可以参考信息处理单元510的激活函数LUT 514或通过直接执行激活函数来计算。输出单元560可以检查数据(诸如储存在LO寄存器中的图11的LO寄存器输入数据集1111)的L_id,并且每当接收到结果值时,可以将信息处理单元510的对应LO数据计数器514的计数值增加1。当LO数据计数器504的值为最大值时,可以使用对应的值作为下一层的输入数据。当LO数据计数器504的值为最大值时,CNN控制单元500可以将结束层计数器502的值增加1,以及将输出单元560的LO寄存器的值储存在输入单元530的CI寄存器中作为输入数据。此外,卷积块540的PE控制器543可以检查结束层计数的值以及预取储存在输入单元530的CI寄存器中的输入数据。此外,PE控制器543可以从信息处理单元510的权重寄存器512中预取对应层的权重数据集。但是,由于不计算所有内核(这与当前层输出的内核和下一层输入的深度相同),所以卷积块540的PE控制器543不能去除由开始层计数器502表示的权重数据集的预取值。可以由信息处理单元510的K_id和内核计数器507来检查内核值。LO数据计数器504的最大值可以如表2的层配置表中所表示的那样来确定。如果LO数据计数器504的值不是最大值,则CNN操作装置可以等待直到还未被计算并且具有相同L_id的数据的结果值被输出为止。
通道硬件组520可以检查被输入到LO寄存器的数据的K_id,以及将内核计数器507的值增加1。如果与K_id相对应的内核计数是最大值,则通道硬件组520可以释放由开始层表示的权重数据集,因为可能不再需要使用关于由开始层表示的层的信息。CNN控制单元500的MMU可以参考已经在L cfg寄存器513中设置的下一层的配置值来控制通道硬件组520的操作。如果存在需要基于下一层的配置的分析结果来分析的层,则CNN控制单元500可以通过将输出单元560的LO寄存器的数据输入到地址映射寄存器511来设置下一个输入数据,以及可以将设置的输入数据储存在输入单元520的CI寄存器中。
如果LO数据计数器504和内核计数器507的两个值都达到最大值,则与当前开始层和结束层相对应的任何数据都不会保留在卷积块540和池化块550中。因此,CNN控制单元500和通道硬件组520可以增加开始层,可以释放权重数据,可以增加结束层,以及可以根据每种情况将输入数据储存在输入单元530的CI寄存器中。
如果内核计数器507和通道计数器501的两个值都达到最大值,则CNN控制单元500可以终止特征提取层操作并且执行分类层操作。即,分类层(即,FC层)可以检查内核计数器507和通道计数器501的值,以及可以在所有输入通道的计算终止时开始。如果通道计数器501的值未达到最大值,则分类层可以等待直到所有的不同通道的输入数据被学习为止。例如,如果CNN操作装置包括三个通道硬件组并且学习五个通道数据,则通道计数器501的值可以为5。在这种情况下,通道硬件组可以同时学习三个通道数据。此时,当三通道数据的学习终止时,通道计数的值可以变为3,并且可以执行特征提取层操作,直到通道计数的值达到最大值5为止。即,尽管用于通道硬件组的特征提取层操作终止,但是如果用于下一个通道数据的特征提取层操作尚未终止,则CNN控制单元500可以等待直到用于其他通道数据的特征提取层操终止为止(例如,在三通道数据被学习之后直到下两个通道数据被学习为止,即,直到通道计数的值变为5)。
图12是示出根据本发明的各种实施例的CNN操作装置的分类层中的卷积块的输入数据和输出数据的示例性架构的示图。图13是示出根据本发明的各种实施例的CNN操作装置中的层输出数据的示例性架构的示图。如图1所示,分类层可以包括至少一个全连接层(以下被称为“FC层”)。
在分类层操作中,图5中的CNN控制单元500的仲裁器可以参考FC层的L cfg寄存器513将具有诸如图12的架构的输入数据储存在输入单元530的全连接输入寄存器中。例如,如果Cx=Cy=1且Sx=Sy=1,则输入数据可以具有与FC层相同的窗。FC层的输入数据可以是先前特征提取层的所有通道硬件组的输出。在FC层中,输入数据可以被输入到一个通道硬件组,以便计算所有特征提取层的输出。例如,如果在特征提取层中已经提取了三个通道数据的特征,则在FC层的一个通道硬件组中,特征提取层的输出值可以被输入到三个通道数据。FC层的输入数据可以被顺序输入到输入单元530。即,特征提取层的输入数据参考地址映射寄存器511而被重新映射,然后被输入到输入单元530。相反,FC层的输入数据可以被顺序输入到输入单元530。权重数据的数量可以被通道硬件组520的数量平分并输入。权重数据(或权重元件)的总数可以是(输入数据x输出数据)的数量。FC层的K_id的数量可以对应于输出数据的数量。每个通道硬件组520中的内核计数器507的最大值可以是(输出数据的数量/CH组)。
在FC层中,与特征提取层不同,卷积块540可以使用K_id执行CO_id的功能。PE单元545可以将输入数据和权重数据相乘,并且ADD块547可以将属于相乘的数据并且具有相同的K_id的数据相加在一起。ADD块547可以检查相加数据的K_id以及增加LI数据计数器503的值。如果与输入数据的K_id相对应的LI数据计数器503的值等于层的输入数据的数量,则ACC块549可以将输入数据储存在输出单元560的LO寄存器中。在FC层中,池化块550可以不如上述地来操作。当将输入数据储存在LO寄存器中时,输出单元560可以以K_id的顺序储存输入数据,并且储存数据的K_id可以被去除。
在卷积块540中,PE单元545的每个PE可以具有如图8B所示的配置。乘法器810可以将输入数据(诸如图12的FC层输入数据集1211)与权重数据(诸如图12的FC层权重数据集1213)相乘。或门820可以对包括在具有与图12的FC层输入数据集1211相同架构的输入数据中的Z_F与包括在具有与图12的FC层权重数据集1213相同架构的权重数据中的Z_F执行或运算。选择器830可以接收乘法器810的输出作为第一输入以及接地(或零)信号作为第二输入,并且可以基于或门820的输出来选择并输出第一输入或第二输入中的一个。如果包括在输入数据和权重数据中的任意一个Z_F信号的Z_F是设置状态,则选择器830可以选择并输出第二输入。即,如果包括在输入数据和权重数据中的Z_F信号的Z_F都未被设置,则选择器830可以选择乘法器810的输出。通过选择器830的PE的输出数据可以具有诸如图12的FC层结果数据集1215的架构。
CNN操作装置可以在分类层中执行drop-out操作(例如,用于提高深度学习算法的性能的正则化方法之一)。drop-out功能可以意味着多个PE的预定数量PE的计算操作被漏失。在本发明的各种实施例中,卷积块540可以将drop-out信号施加到执行卷积乘法运算的PE。接收drop-out信号的PE可以漏失用于两个输入数据的计算操作。即,接收drop-out信号的PE可以像输入数据为0那样计算输入数据(即,操作数)(例如,Z_F=1),以及可以发送结果值。可以由信息处理单元510的drop-out发生器515来产生drop-out信号。可以基于drop-out发生器515的参数值来确定PE单元545的每个PE将被选中的概率。当接收到drop-out信号时,对应的PE的或门820可以施加drop-out信号作为选择器830的选择信号。响应于此,选择器830可以选择并输出接地数据(或零数据)。如果输入数据的Z_F被设置、权重数据的Z_F被设置或接收到drop-out信号,则PE单元545的每个PE可以选择并输出零数据。如果输入数据和权重数据的Z_F未被设置并且未接收到drop-out信号,则PE单元545的每个PE可以选择乘法器810的输出。
当由卷积块540输出的数据(诸如图12的FC层结果数据集)被输出时,可以执行输出单元560的激活函数操作。每当接收到卷积块540的输出数据时,输出单元560可以将与卷积块540的输出数据的L_id相对应的LO数据计数器504的值增加1。此外,当LO数据计数器504的值达到最大值层输出数时,CNN控制单元500的仲裁器可以读取LO数据计数器504的值。如果LO数据计数器504的值不是最大值,则输出单元560可以等待直到接收到具有L_id的数据为止。当数据被输出到CNN控制单元500的仲裁器时,由于不再需要数据的L_id,所述可以将其去除。在最后FC层的情况下,还可以去除Z_F。输出单元560的LO寄存器的输出数据可以具有诸如图13的FC层LO寄存器结果数据集的架构。CNN控制单元500的仲裁器可以顺序收集在通道硬件组中执行的分类层的结果值(诸如图13的FC层LO寄存器结果数据集),以及通过封装器570将它们输出到主机。
图14是示出根据本发明的各种实施例的CNN系统的另一个示例性配置的示图。
参考图14,CNN系统可以包括CNN控制单元500、信息处理单元510、输入单元530、卷积块540、池化块550、输出单元560、存储器1400、存储器控制器1410、外围组件互连快速(PCIe)根点(root point)1420以及接口(PCIe)终点(end point)1430。
存储器1400可以储存将执行深度学习算法的数据。存储器控制器1410可以控制存储器1400的操作。例如,存储器控制器1410可以控制存储器1400的读取操作和写入操作,并且向CNN操作装置提供输入数据。存储器控制器1410可以是主机的控制器。主机可以是电子设备。PCIe根点1420和PCIe终点1430可以执行满足PCIe标准的接口操作。PCIe是用于输入/输出的串行架构的接口。PCIe可以是具有相对高的系统总线带宽、相对少数量的输入/输出(I/O)插脚、相对小的物理区域、总线设备的可扩展性性能以及错误检测和报告结构的接口。PCIe根点1420和PCIe终点1430可以提供在存储器控制器1410和CNN操作装置之间的接口功能。例如,PCIe根点1420和PCIe终点1430可以执行在CNN操作装置和存储器控制器1410之间的数据接口操作。例如,当系统被初始化时,存储器控制器1410可以通过PCIe根点1420和PCIe终点1430将用于执行深度学习算法的信息(诸如,例如权重数据、地址映射、层配置信息、查找表和/或drop-out信息)从主机提供到CNN操作装置。此外,CNN操作装置可以通过PCIe根点1420和PCIe终点1430将通道数据的学习结果提供给存储器控制器1410。
CNN操作装置可以包括CNN控制单元500、信息处理单元510、输入单元530、卷积块540、池化块550以及输出单元560。CNN操作装置可以与图5的装置具有相同的配置和操作。
如图3所示,根据本发明的各种实施例的CNN操作装置可以在执行初始化操作310之后对所有通道的输入数据执行特征提取层操作320。当特征提取层操作320完成时,CNN操作装置可以执行分类层操作330。当分类层操作330完成时,CNN操作装置可以将学习结果值发送到主机。
图15A至图15C是示出根据本发明的各种实施例的卷积神经网络(CNN)操作装置的示例性操作的流程图。图15A至图15C可以对应于图5和图14所示的CNN操作装置的CNN控制单元500的操作。
参考图15A至图15C,在步骤1511处,CNN操作装置的操作可以开始。当CNN操作装置的操作开始时,在步骤1513处,CNN操作装置可以执行主机初始化操作。在主机初始化操作中,主机可以将要在特征提取层操作和配置层操作中使用的信息(即,初始化信息)发送到CNN操作装置。CNN操作装置可以将多条接收到的初始化信息储存在信息处理单元510的寄存器中。在初始化操作中,信息处理单元510可以将权重数据集储存在权重寄存器512中,可以将CI重新映射地址映射信息储存在地址映射寄存器511中,可以将层配置信息储存在Lcfg寄存器513中,以及可以将激活函数查找表储存在激活函数寄存器514中。
在执行初始化操作之后,在步骤1515处,CNN操作装置可以开始特征提取层操作,以及在步骤1517处,可以开始CNN控制单元500的仲裁器的操作。在步骤1519处,CNN操作装置可以将数据通道映射到可用的通道硬件组520。在步骤1521处,CNN操作装置可以设置通道计数器501。通道计数器501的值可以被设置为(CH计数+通道硬件组的数量)。在设置通道计数之后,在步骤1523处,CNN操作装置可以开始CNN控制单元500的MMU的操作,以及可以开始特征提取层操作。
当特征提取层操作开始时,在图15B的步骤1531处,CNN操作装置可以参考L cfg寄存器513来检查层配置,以在步骤1533处,可以设置开始层计数器/结束层计数器502的值。开始层计数器/结束层计数器502的值可以被传送到卷积块540,使得卷积块540预取储存在权重寄存器512中的与开始层计数器/结束层计数器502的值相对应的权重数据集。在步骤1535处,CNN操作装置可以参考地址映射511的信息来将输出单元560的LO寄存器的地址和输入单元530的CI寄存器的地址进行映射(即,开始层计数、结束层计数的{addr、inputaddr}映射)。
此后,在步骤1537处,CNN操作装置可以检查特征提取层的输入数据。如图1所示,特征提取层可以包括卷积层和池化层对,并且可以通过多个特征提取层操作来学习输入数据。在这种情况下,如果作为步骤1537的检查结果,发现输入数据是第一特征提取层的输入数据(即,卷积输入层的输入数据),则在步骤1539处,CNN操作装置可以识别输入数据,可以重新映射从外部系统接收到的数据,以及可以将重新映射的数据储存在输入单元530的CI寄存器中。在这种情况下,CI寄存器的地址可以被确定如下。如果输入数据为0,则CNN操作装置可以设置输入数据的Z_F。
CIreg[addr]={ext.mem[Input addr],Z_F,L cfg reg[L-cnt*]}
L cfg reg[L-cnt*]={CO_id,PO_id,L_id}
if(ext.mem[Input addr]==0,Z_F=1
CNN操作装置可以重新映射先前特征提取层的结果值,以及施加重新映射的值作为下一个特征提取层的输入数据。因此,如果在步骤1537处输入数据是第二特征提取层之后的输入数据(即,卷积内部层的输入数据),即,内部数据,则在步骤1541处,CNN操作装置可以识别输入数据,可以重新映射先前特征提取层的结果值,以及可以将重新映射的值储存在输入单元530的CI寄存器中。在这种情况下,CI寄存器的地址可以被确定如下。
CIreg[addr]={LO reg[Input addr],Z_F,L cfg reg[L-cnt*]}
L cfg reg[L-cnt*]={CO_id,PO_id,L_id}
if(LO reg[Input addr]==0,Z_F=1
储存在输入单元530中的输入数据可以具有诸如图6所示的架构。此后,在步骤1543处,CNN操作装置可以对储存在输入单元530中的输入数据和从信息处理单元510预取的权重数据执行卷积运算,并且在步骤1545处,可以对卷积运算的结果值执行池化操作。可以使用诸如图16A和图16B的方法来执行卷积计算操作。可以使用诸如图17A和图17B的方法来执行池化计算操作。
在执行池化操作之后,在步骤1547处,CNN操作装置可以检查当前处理的特征提取层是否为最后的特征提取层。如果作为检查的结果,发现当前处理的特征提取层不是最后的特征提取层(或内部层),则CNN操作装置可以确定存在下一个特征提取层,可以返回到步骤1531,并且可以对下一个特征提取层执行计算操作。相反,如果作为在步骤1547检查的结果,发现当前处理的特征提取层是最后的特征提取层(或输出层),则CNN操作装置可以识别最后的特征提取层,以及在图15C的步骤1551处,可以检查针对所有通道的输入数据的特征提取层操作是否已经完成。例如,假设CNN操作装置包括3个通道硬件组,并且可以处理5个通道的输入数据。CNN操作装置可以对5个通道中的3个的输入数据执行特征提取层操作。当针对3个通道的输入数据的特征提取层操作终止时,CNN操作装置可以继续对剩余2个通道的输入数据执行特征提取层操作。因此,如果在步骤1551处针对通道硬件组的输入数据的特征提取层操作已经终止,但是对于所有通道的输入数据的特征提取层操作尚未完成,则CNN操作装置可以识别针对所有通道的输入数据的特征提取层操作尚未完成,可以返回到图15A的步骤1517,以及可以对其他通道的输入数据执行特征提取层操作。
如果在步骤1551处对于所有通道的输入数据的特征提取层操作已经完成,则在步骤1551处,CNN操作装置可以识别针对所有通道的输入数据的特征提取层操作已经完成,以及在步骤1553处,可以开始分类层操作。可以通过单个通道硬件组来执行分类层操作。即,来自特征提取层的所有LO寄存器的数据应该被输入到单个硬件组以用于分类。当分类层操作开始时,在步骤1555处,CNN操作装置可以从层配置寄存器513中读取层配置信息,以及可以设置开始层计数/结束层计数器502。
此后,在步骤1557处,CNN操作装置可以检查FC层。在第一FC层(即,FC输入层)的情况下的输入数据可以是特征提取层操作的最终结果值。继第二FC层之后的FC层可以是先前FC层操作的结果值。在第一FC层的情况下,如果在步骤1557处CNN操作装置可以识别第一FC层,则在步骤1559处,CNN操作装置可以如下重新映射第一FC层的输入数据,以及可以将重新映射的数据储存在输入单元530中。在这种情况下,如果输入数据为0,则CNN操作装置可以设置输入数据的Z_F。
CIreg[addr]={All LO reg[Input addr],Z_F,L cfg reg[L-cnt*]}
L cfg reg[L-cnt*]={L_id}
if(LO reg[Input addr]==0,Z_F=1
此外,如果对应的FC层是继第二FC层之后的FC层,则在步骤1557处CNN操作装置可以识别对应的FC层,在步骤1561处,CNN操作装置可以将如下重新映射对应的FC层的输入数据,以及可以将重新映射的数据储存在输入单元530中。在这种情况下,如果输入数据为0,则CNN操作装置可以设置输入数据的Z_F。
CIreg[addr]={LO reg[Input addr],Z_F,L cfg reg[L-cnt*]}
L cfg reg[L-cnt*]={L_id}
if(LO reg[Input addr]==0,Z_F=1
储存在输入单元530中的输入数据可以具有诸如图12的FC层输入数据集1211的架构。在重新映射输入数据之后,在步骤1563处,CNN操作装置可以对输入数据执行卷积计算操作。可以使用诸如图16A和图16B的方法来执行卷积计算操作。在分类层操作中,可以不执行池化操作。因此,当卷积计算操作完成时,在步骤1565处,CNN操作装置可以将卷积运算的结果值储存在输出单元560的LO寄存器中。
在执行FC层操作之后,在步骤1567处,CNN操作装置可以检查当前处理的FC层是内部层还是输出层。CNN操作装置可以检查当前处理的FC层是否为参考开始层计数器502、结束层计数器502和内核计数器507的值的FC输出层。如果作为检查的结果,发现当前处理的FC层是内部层,则CNN操作装置可以返回到步骤1555并且执行下一个FC层操作。如果作为检查的结果,发现当前处理的FC层是输出层,则CNN操作装置可以终止其操作,并且可以将学习的结果值发送到主机。
图16A和16B是示出由根据本发明的各种实施例的CNN操作装置执行的示例性卷积层操作的流程图。
参考图16A和图16B,在特征提取层和分类层中可以使用不同方法来执行卷积层操作。在步骤1611,CNN操作装置可以开始卷积层操作。在步骤1613处,CNN操作装置可以预取与输入数据一起要执行卷积运算的权重数据。卷积块540的PE控制器543可以从权重寄存器512中预取与开始层计数器/结束层计数器502的值相对应的权重数据。在步骤1615处,CNN操作装置可以配置包括Z_F、CO_id、PO_id和L_id的输入数据集,诸如图6的输入数据集(或图9A的输入数据集911),并且在步骤1617处,可以配置包括权重数据、Z_F和K_id的权重数据集,诸如图9A的权重数据集合913。此外,在分类层的情况下,输入数据集可以具有与图12的FC层输入数据集1211相同的架构,而权重数据集可以具有与图12的FC层权重数据集1213相同的架构。输入数据可以是如步骤1615所示的卷积块540的第一输入(PE input A=CIreg[addr])。权重数据集可以是如步骤1617所示的卷积块540的第二输入(PE input B={Weight reg[addr],Z_F,K_id[L-cnt]}。在步骤1619处,CNN操作装置可以检查是否存在就绪PE(即,能够进行卷积运算的PE、空PE)。如果作为检查结果,发现不存在就绪PE,则在步骤1621处,CNN操作装置可以等待直到PE准备就绪为止。如果作为步骤1619处的检查结果,发现存在就绪PE,则在步骤1623处,CNN操作装置可以识别就绪PE以及将输入数据和权重数据输入到就绪PE。
卷积块540可以在特征提取层和分类层两者中操作。如果作为图16B的步骤1631的检查结果,发现现在正在执行的操作是特征提取层操作(步骤1631的FE),则CNN操作装置可以识别特征提取层操作以及在步骤1633处分析输入数据或权重数据的Z_F。此时,如果ZF是设置状态,则在步骤1633处,CNN操作装置可以识别ZF是设置状态(是),并且在步骤1637处,输出零数据而不执行卷积乘法运算。此外,如果在步骤1633处输入数据或权重数据的ZF是复位状态(否),则CNN操作装置可以识别输入数据或权重数据的ZF是复位状态,以及在步骤1635处执行卷积乘法运算。例如,可以通过具有如图8A所示的架构的PE来执行卷积乘法运算操作。下面描述PE的操作。乘法器810可以将输入数据和权重数据相乘。选择器830可以接收乘法器810的输出和零数据。在这种情况下,当输入数据或权重数据的ZF为设定状态时,选择器830可以选择并输出零数据。只有当输入数据和权重数据的Z_F两者都是复位状态时,选择器830可以选择乘法器810的输出。其后,在步骤1641处,CNN运算装置可以产生用于特征提取层的卷积乘法运算的结果数据集(Conv:{Result,Z_F、CO_id、PO_id、L_id、K_id})。用于特征提取层的卷积乘法运算的结果数据集可以具有诸如图9A的结果数据集915的架构。
此外,如果作为步骤1631的检查结果,发现现在正在执行的操作是分类层操作(步骤1631的FC),则CNN操作装置可以识别分类层操作以及在步骤1639处检查是否要漏失PE。这种drop-out可以由drop-out发生器515确定。例如,CNN操作装置可以漏失PE单元545的PE的50%。如果作为步骤1639的检查结果,发现PE将被漏失(步骤1639的否),则CNN操作装置可以识别出PE将被漏失,以及在步骤1637处可以输出零数据而不执行卷积乘法运算。相反,如果作为检查结果,发现PE将不被漏失(步骤1631的是),则CNN操作装置进入到步骤1633,并且可以分析输入数据或权重数据的ZF。此时,如果在步骤1633处Z_F是设定状态,则CNN操作装置可以识别Z_F是设置状态(是),以及在步骤1637处输出零数据而不执行卷积乘法运算。此外,如果在步骤处1633处ZF是复位状态,则CNN操作装置可以识别ZF是复位状态(否),以及在步骤1635处执行卷积乘法运算。例如,可以通过具有如图8B的架构的PE来执行卷积乘法运算。下面描述PE的操作。乘法器810可以将输入数据和权重数据相乘。选择器830可以接收乘法器810的输出和零数据。在这种情况下,当接收到drop-out信号,或者输入数据或权重数据的Z_F为设定状态时,选择器830可以选择并输出零数据。只有当未接收到drop-out信号并且输入数据和权重数据的ZF两者都是复位状态时,选择器830可以选择乘法器810的输出。此后,在步骤1641处,CNN操作装置可以产生用于分类层的卷积乘法运算的结果数据集(FC::{Result,Z_F,L_id,K_id})。用于分类层的卷积乘法运算的结果数据集可以具有诸如图12的FC层结果数据集1215的架构。
如果作为步骤1643的检查结果,发现现在正在执行的操作是特征提取层操作(步骤1643的FE),则CNN操作装置可以识别特征提取层,可以分析由PE(例如,PE A和PE B)输出的卷积乘法运算的结果数据集(诸如图9A的结果数据集915)的PO_id,以及可以执行加法运算。为此,当在步骤1645处CNN操作装置识别到PE A的CO_id与PE B的PO_id相同时,在步骤1649处可以将PE A和PE B的输出加在一起,以及在步骤1651处,将CI数据计数器503的值增加1。如果作为步骤1645的检查结果,发现PE A的CO_id与PE B的PO_id不同,则在步骤1647处,CNN操作装置可以识别这种差异并且绕过加法运算。此后,在步骤1653处,CNN操作装置检查加法是否是最后的加法。如果作为检查结果,发现加法不是最后的加法(步骤1653的否),则CNN操作装置可以返回到步骤1645并且继续执行加法运算。如果作为检查结果,在步骤1653处发现加法是最后的加法(是),则在步骤1655处,CNN操作装置可以检查累加值是否为CI数据计数503的最大值(即,CI data cnt[CO_id]==MAX)。在这种情况下,如果作为检查结果,发现累加值不是最大值(例如,输入数据集,诸如图9C的输入数据集963)(步骤1655的否),则CNN操作装置可以返回到步骤1645并且继续执行加法运算。如果作为检查结果,发现累加值是最大值(步骤1655的是),则在步骤1657处,CNN操作装置可以去除CO_id以及将对应的结果值(例如,输入数据集,诸如图9C的输入数据集961)储存在池化块550的PI寄存器中。此后,在步骤1659处,CNN操作装置可以终止卷积层操作,以及在步骤1661处,开始池化层操作。
如果作为在步骤1643处的检查结果,发现现在正在执行的操作是分类层操作(FC),则CNN操作装置可以识别分类层操作,可以分析由PE(例如,PE A和PE B)输出的卷积乘法运算的结果数据集(诸如图12的结果数据集1215)中的K_id,以及可以执行加法运算。为此,当在步骤1671处CNN操作装置识别到PE A的K_id与PE B的K_id相同时(是),则在步骤1675处,可以将PE A和PE B的输出加在一起,以及在步骤1677处将LI数据计数器503的值增加1。如果作为步骤1671处的检查结果,发现PE A的K_id与PE B的K_id不同(否),则在步骤1673处,CNN操作装置可以识别这种差异并且绕过加法运算。此后,在步骤1679处,CNN操作装置可以检查加法是否为最后的加法。如果作为检查结果,发现加法不是最后的加法(步骤1679的否),则CNN操作装置可以返回到步骤1671并且继续执行加法运算。如果作为步骤1679中的检查结果,发现加法是最后的加法(步骤1679的是),则在步骤1681处,CNN操作装置可以检查累加值是否为LI数据计数器503的最大值(即,LI data cnt[K_id]==MAX)。如果作为检查结果,发现累加值不是最大值(步骤1681的否),则CNN操作装置可以返回到步骤1671并且继续执行加法运算。如果作为步骤1681处的检查结果,发现累加值是最大值(是),则在步骤1683处,CNN操作装置可以将对应的结果值储存在输出单元560的LO寄存器中。此后,在步骤1685处,CNN操作装置可以终止卷积层操作,以及在步骤1687处,开始输出单元560的操作(即,开始FC LO寄存器块)。可以使用诸如图18的方法执行FC LO寄存器块的开始。
图17A和图17B是示出根据本发明的各种实施例的卷积神经网络(CNN)操作装置中的示例性池化层操作的流程图。
参考图17A和图17B,在步骤1711处,CNN操作装置可以开始用于特征提取层的池化计算操作。储存在PI寄存器555中的数据集可以具有诸如图10的架构。当池化操作开始时,CNN操作装置可以在PI寄存器555中搜索具有相同PO_id的数据。在这种情况下,如果在步骤1713处,数据的PO_id不相同(否),则CNN操作装置可以进入到步骤1715并且等待。如果在步骤1713处数据的PO_id相同(是)(例如,PO_id(A)==PO_id(B)),则CNN操作装置可以识别PO_id是相同的以及在步骤1717处执行池化操作。在这种情况下,池化操作可以是用于选择属于两个数据并且具有更大值的数据或者计算两个数据的平均值的方法。在执行池化操作之后,在步骤1721处,CNN操作装置可以检查PI数据计数器506的值是否为最大值。如果作为检查结果,发现PI数据计数器506的值不是最大值(步骤1721的否),则在步骤1723处,CNN操作装置可以将池化操作的值储存在PI寄存器中,以及进入步骤1713。如果作为步骤1721的检查结果,发现PI数据计数器506的值是最大值(步骤1721的是),则在步骤1725处,CNN操作装置可以从已经执行池化操作的数据集中去除PO_id,在步骤1727处可以参考激活函数LUT514对已经执行池化操作的数据执行激活函数,以及可以将对应的数据储存在输出单元560的LO寄存器中。
在图17B的步骤1731处,CNN操作装置可以将与对应数据的L_id相对应的LO数据计数器504的值增加1,以及在步骤1733处,可以检查LO数据计数器504的值是否为最大值。如果作为检查结果,发现LO数据计数器504的值不是最大值(步骤1733的否),则在步骤1741处,CNN操作装置可以等待直到接收到池化操作的结果值为止。即,CNN操作装置可以等待包括L_id和K_id的另一个池化结果数据集。如果作为步骤1733的检查结果,发现LO数据计数器504的值是最大值(步骤1733的是),则在步骤1735处,CNN操作装置可以增加内核计数器507的值,以及在步骤1737,检查内核计数器507的值是否为最大值。如果作为检查结果,发现内核计数器507的值不是最大值(步骤1737的否),则在步骤1739处,CNN操作装置可以增加结束层计数的值,并且进入步骤1741。
如果作为步骤1737的检查结果,发现内核计数507的值是最大值(步骤1737的是),则在步骤1743处,CNN操作装置可以释放输入数据(即,MMU::CI reg(start layer)release),以及在步骤1745处释放权重数据(即,PE Ctrl::Weight(start layer)release)。此后,在步骤1747处,CNN操作装置可以增加开始值层计数器502的值,以及在步骤1749处,将结果数据储存在输出单元560的LO寄存器中(或者基于PO_id储存对应的地址)。此后,在步骤1751处,CNN操作装置可以终止池化操作。
图18是示出根据本发明的各种实施例的卷积神经网络(CNN)操作装置的示例性分类层输出操作的流程图。
参考图18,当在步骤1811处FC层的输出操作开始(即,LO寄存器块开始)时,在步骤1813处,CNN操作装置可以等待接收卷积运算结果数据。当从卷积块接收到数据时,在步骤1815处,CNN操作装置可以将LO数据计数器504的值增加1,以及在步骤1817处,检查LO数据计数器504的值是否为最大值(即,LO data cnt==MAX(#of the FC layer output))。如果作为检查结果,发现LO数据计数器504的值不是最大值(步骤1817的否),则CNN操作装置可以返回到步骤1813并且等待下一次输入。如果作为步骤1817的检查结果,发现LO数据计数器504的值是最大值(步骤1817的是),则CNN操作装置可以识别LO数据计数器的值是最大值,在步骤1819处可以终止输出操作(即,终止FC LO寄存器块),以及在步骤1821处,可以开始CNN控制单元500的MMU的操作。
根据本发明的各种实施例的CNN操作装置(或深度学习处理器加速器)可以适用于神经形态算法的并行处理,以及可以适用于使用神经形态算法执行另一个深度学习算法。此外,根据本发明的各种实施例的CNN操作装置可以用于执行图像识别、分类和分析的处理器中。
根据本发明的各种实施例,CNN算法可以以CNN操作架构形式实现,并且可以以高速和低功率执行测试操作。因为根据本发明的各种实施例的CNN加速器可以以低功耗运行,因此其可以在便携式设备中执行深度学习算法。根据本发明的实施例的CNN操作架构可以通过配置来驱动各种大小的CNN算法。
根据本发明的实施例的CNN操作架构可以通过执行过零功能来快速执行深度学习算法。根据本发明的实施例的CNN操作架构可以通过从卷积块预取权重参数来减少从存储器加载权重参数所花费的时间,从而能够快速执行深度学习算法。
虽然已经为了说明目的描述了各种实施例,但是对于本领域技术人员明显的是,在不脱离如所附权利要求所限定的本发明的精神和范围的情况下,可以进行各种改变和修改。

Claims (30)

1.一种卷积神经网络CNN操作装置,包括:
至少一个通道硬件组,其适用于基于输入数据和权重数据来执行特征提取层操作和分类层操作;以及
控制器,其耦合到通道硬件组,并且适用于控制通道硬件组执行特征提取层操作以及当特征提取层操作完成时执行分类层操作。
2.如权利要求1所述的操作装置,还包括信息处理单元,所述信息处理单元包括用于储存权重数据的权重寄存器,以及
其中,通道硬件组包括:
输入单元,其适用于储存输入数据;
卷积块,其适用于对输入数据和权重数据执行卷积运算;
池化块,其适用于对已经执行卷积运算的数据执行池化操作;以及
输出单元,其适用于输出已经执行卷积运算的数据或已经执行池化操作的数据。
3.如权利要求2所述的操作装置,其中,控制器控制卷积块和池化块在特征提取层操作中执行卷积层操作和池化层操作。
4.如权利要求3所述的操作装置,其中,当特征提取层操作终止时,控制器执行分类层操作,以及控制卷积块在分类层操作中执行全连接层操作。
5.如权利要求4所述的操作装置,其中,卷积块包括:
多个处理元件,其适用于接收输入数据和权重数据,以及对接收到的输入数据和权重数据执行乘法运算;
多个加法器,其适用于将由PE计算的相同标识ID的结果值相加在一起;
累加ACC块,其适用于将由加法器输出的具有相同ID的相加结果值累加,以及在累加值达到最大值时将累加值输出到池化块;以及
处理元件控制器,其适用于将输入单元的输入数据和权重寄存器的权重数据输入到所述多个处理元件之中的就绪处理元件。
6.如权利要求5所述的操作装置,其中,处理元件控制器检查开始层计数的值和结束层计数的值,基于开始层计数的值和结束层计数的值而从权重寄存器预取对应的权重数据,以及将输入数据和预取的权重数据输入到就绪处理元件。
7.如权利要求3所述的操作装置,其中,在由卷积块执行卷积运算的同时如果存在两个或更多个卷积输出值,则池化块对卷积输出值执行池化运算。
8.如权利要求4所述的操作装置,其中:
信息处理单元还包括地址映射寄存器,所述地址映射寄存器适用于储存为每层提供的地址映射,以及
控制器检查储存在输出寄存器中的数据的当前层配置,访问地址映射寄存器的数据,以及将访问的数据输出到输入单元。
9.如权利要求8所述的操作装置,其中,在初始化状态下,从外部系统接收地址映射。
10.如权利要求4所述的操作装置,其中:
当输入数据为0时,控制器设置输入数据的零标志,以及将零填充输入数据储存在输入单元中,以及
卷积块对其零标志已经被设置的输入数据,省略卷积乘法运算。
11.如权利要求10所述的操作装置,其中,所述多个处理元件中的每个包括:
乘法器,其适用于将输入数据和权重数据相乘;
逻辑门,其适用于对输入数据和权重数据执行逻辑运算;以及
选择器,其适用于基于逻辑门的输出来选择乘法器的输出数据或零数据,以及输出选中的数据,
其中,如果输入数据或权重数据是零标志,则选择器适用于选择零数据。
12.如权利要求11所述的操作装置,其中,当权重数据为0时,控制器设置零标志,以及将输入数据或权重数据输入到对应的处理元件。
13.如权利要求4所述的操作装置,其中,在通道数据的特征提取完成之后,控制器检查通道计数的值,如果通道计数的值不是最大值,则将剩余通道的输入数据再次分配给通道硬件组,以及执行特征提取层操作。
14.如权利要求4所述的操作装置,其中,当执行分类层的全连接层操作时,控制器将在特征提取层操作中计算的所有通道的结果数据输入到单个通道硬件组。
15.如权利要求14所述的操作装置,其中:
信息处理单元还包括适用于产生drop-out信号的drop-out信号发生器,以及
当drop-out信号产生时,卷积块将输入数据处理为零数据。
16.如权利要求15所述的操作装置,其中:
当输入数据为0时,控制器设置输入数据的零标志,
卷积块包括多个处理元件,
每个处理元件适用于对输入数据和权重数据执行卷积乘法运算,以及当接收到其零标志已经被设置的输入数据、其零标志已经被设置的权重数据或者drop-out信号时,省略卷积乘法运算。
17.一种卷积神经网络CNN的操作方法,所述操作方法包括:
通过激活至少一个通道硬件组的卷积块和池化块来执行特征提取层操作;以及
当特征提取层操作完成时,通过激活通道硬件组的卷积块来执行分类层操作。
18.如权利要求17所述的操作方法,其中,执行特征提取层操作包括:
储存输入数据;
对输入数据和权重数据执行卷积运算;
对已经执行卷积运算的数据执行池化操作;以及
输出已经执行卷积运算的数据或已经执行池化操作的数据。
19.如权利要求18所述的操作方法,其中,执行卷积运算的步骤包括:
将输入数据和权重数据相乘;
将属于相乘的结果值并且具有相同标识ID的结果值相加;以及
累加相同ID的相加的结果值。
20.如权利要求19所述的操作方法,其中,执行卷积运算的步骤还包括:
检查开始层计数的值和结束层计数的值;以及
基于开始层计数的值和结束层计数的值而从权重寄存器中预取对应的权重数据。
21.如权利要求18所述的操作方法,其中,执行池化操作的步骤包括:如果在卷积运算中存在两个或更多个卷积运算输出值,则对卷积输出值执行池化操作。
22.如权利要求21所述的操作方法,其中,执行池化操作的步骤包括:选择两个卷积运算输出值的最大值。
23.如权利要求21所述的操作方法,其中,执行池化操作的步骤包括:计算两个卷积运算输出值的平均值。
24.如权利要求18所述的操作方法,其中,储存输入数据的步骤包括:
检查池化操作的输出数据的层配置;
基于检查的层配置来将输出数据映射到地址映射寄存器的地址;以及
将池化操作的输出数据储存为输入数据。
25.如权利要求24所述的操作方法,还包括:在初始化状态下,从外部系统接收用于储存地址映射寄存器的地址映射。
26.如权利要求18所述的操作方法,其中:
储存输入数据的步骤包括:当输入数据为0时,设置输入数据的零标志,以及
执行卷积运算的步骤包括:对其零标志已经被设置的输入数据,省略乘法运算。
27.如权利要求26所述的操作方法,其中,执行卷积运算的步骤包括:
将输入数据和权重数据相乘;
分析输入数据的零标志和权重数据的零标志;
当输入数据或权重数据的零标志为设定状态时,输出零数据;以及
当输入数据的零标志和权重数据的零标志为复位状态时,输出相乘结果。
28.如权利要求22所述的操作方法,其中,执行特征提取层操作的步骤包括:
当通道数据的特征提取完成时,检查通道计数的值;以及
如果通道计数的值不是最大值,则将剩余通道的输入数据再次分配给通道硬件组,以及再次执行特征提取层操作。
29.如权利要求18所述的操作方法,其中,执行分类层操作的步骤包括:
将从特征提取层提取的所有通道的结果数据输入到单个通道硬件组中;
对输入数据和权重数据执行卷积运算;以及
输出已经执行卷积运算的数据。
30.如权利要求29所述的操作方法,其中,执行卷积运算的步骤包括:
通过多个处理元件中的每个对输入数据和权重数据执行卷积乘法运算,以及
当接收到其零标志已经被设置的输入数据、其零标志已经被设置的权重数据或drop-out信号时,省略卷积乘法运算。
CN201710711678.4A 2016-09-28 2017-08-18 用于卷积神经网络的操作装置及方法 Active CN107871163B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2016-0124574 2016-09-28
KR1020160124574A KR20180034853A (ko) 2016-09-28 2016-09-28 합성곱 신경망의 연산 장치 및 방법

Publications (2)

Publication Number Publication Date
CN107871163A true CN107871163A (zh) 2018-04-03
CN107871163B CN107871163B (zh) 2022-05-24

Family

ID=61687304

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710711678.4A Active CN107871163B (zh) 2016-09-28 2017-08-18 用于卷积神经网络的操作装置及方法

Country Status (3)

Country Link
US (1) US11449745B2 (zh)
KR (1) KR20180034853A (zh)
CN (1) CN107871163B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108664993A (zh) * 2018-04-08 2018-10-16 浙江工业大学 一种密集权重连接的卷积神经网络图像分类方法
CN108805267A (zh) * 2018-05-28 2018-11-13 重庆大学 用于卷积神经网络硬件加速的数据处理方法
CN110070178A (zh) * 2019-04-25 2019-07-30 北京交通大学 一种卷积神经网络计算装置及方法
CN110390389A (zh) * 2018-04-17 2019-10-29 快图有限公司 神经网络引擎
WO2019218900A1 (zh) * 2018-05-15 2019-11-21 华为技术有限公司 一种神经网络模型、数据处理方法及处理装置
CN111105030A (zh) * 2018-10-25 2020-05-05 通用汽车环球科技运作有限责任公司 用于车辆感知系统的神经网络中的激活零旁路和权重剪枝
WO2020133463A1 (zh) * 2018-12-29 2020-07-02 华为技术有限公司 神经网络系统及数据处理技术
WO2020133317A1 (zh) * 2018-12-29 2020-07-02 华为技术有限公司 计算资源分配技术及神经网络系统
WO2020259031A1 (zh) * 2019-06-27 2020-12-30 深圳市中兴微电子技术有限公司 数据的处理方法、装置、存储介质和电子装置

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10366302B2 (en) * 2016-10-10 2019-07-30 Gyrfalcon Technology Inc. Hierarchical category classification scheme using multiple sets of fully-connected networks with a CNN based integrated circuit as feature extractor
US10402628B2 (en) * 2016-10-10 2019-09-03 Gyrfalcon Technology Inc. Image classification systems based on CNN based IC and light-weight classifier
US10387740B2 (en) * 2016-10-10 2019-08-20 Gyrfalcon Technology Inc. Object detection and recognition apparatus based on CNN based integrated circuits
US10339445B2 (en) * 2016-10-10 2019-07-02 Gyrfalcon Technology Inc. Implementation of ResNet in a CNN based digital integrated circuit
US10366328B2 (en) * 2017-09-19 2019-07-30 Gyrfalcon Technology Inc. Approximating fully-connected layers with multiple arrays of 3x3 convolutional filter kernels in a CNN based integrated circuit
US10360470B2 (en) * 2016-10-10 2019-07-23 Gyrfalcon Technology Inc. Implementation of MobileNet in a CNN based digital integrated circuit
KR102499396B1 (ko) * 2017-03-03 2023-02-13 삼성전자 주식회사 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치의 동작 방법
GB201704373D0 (en) * 2017-03-20 2017-05-03 Rolls-Royce Ltd Surface defect detection
CN106897714B (zh) * 2017-03-23 2020-01-14 北京大学深圳研究生院 一种基于卷积神经网络的视频动作检测方法
CN109359736A (zh) * 2017-04-06 2019-02-19 上海寒武纪信息科技有限公司 网络处理器和网络运算方法
US11010338B2 (en) * 2017-04-06 2021-05-18 Shanghai Cambricon Information Technology Co., Ltd Data screening device and method
US11429848B2 (en) * 2017-10-17 2022-08-30 Xilinx, Inc. Host-directed multi-layer neural network processing via per-layer work requests
US10452540B2 (en) * 2017-10-20 2019-10-22 International Business Machines Corporation Memory-mapped interface for message passing computing systems
CN110059811A (zh) 2017-11-06 2019-07-26 畅想科技有限公司 权重缓冲器
US11119677B2 (en) * 2017-12-15 2021-09-14 Samsung Electronics Co., Ltd. HBM based memory lookup engine for deep learning accelerator
US10621489B2 (en) 2018-03-30 2020-04-14 International Business Machines Corporation Massively parallel neural inference computing elements
CN110321997B (zh) * 2018-03-31 2021-10-19 赛灵思公司 高并行度计算平台、系统及计算实现方法
US11645493B2 (en) 2018-05-04 2023-05-09 Microsoft Technology Licensing, Llc Flow for quantized neural networks
JP7240657B2 (ja) * 2018-05-15 2023-03-16 Tokyo Artisan Intelligence株式会社 ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム
CN109102065B (zh) * 2018-06-28 2022-03-11 广东工业大学 一种基于PSoC的卷积神经网络加速器
KR101974495B1 (ko) * 2018-08-21 2019-05-03 한국과학기술정보연구원 교통정보를 예측하는 장치, 교통정보를 예측하는 방법, 및 교통정보를 예측하는 프로그램을 저장하는 저장매체
US11836971B2 (en) * 2018-08-23 2023-12-05 Samsung Electronics Co., Ltd. Method and device with convolution neural network processing
WO2020091516A2 (ko) * 2018-11-02 2020-05-07 주식회사 에이아이인사이트 의료영상 자동판독을 위한 딥러닝 아키텍처 시스템
KR102361422B1 (ko) * 2018-11-02 2022-02-10 주식회사 에이아이인사이트 의료영상 자동판독을 위한 딥러닝 아키텍처 시스템
US12014505B2 (en) 2019-01-31 2024-06-18 Samsung Electronics Co., Ltd. Method and apparatus with convolution neural network processing using shared operand
WO2020172494A1 (en) 2019-02-22 2020-08-27 Neureality Ltd. Directed and interconnected grid dataflow architecture
US11604958B2 (en) 2019-03-13 2023-03-14 Samsung Electronics Co., Ltd. Method and apparatus for processing computation of zero value in processing of layers in neural network
US20200387776A1 (en) * 2019-06-04 2020-12-10 XNOR.ai, Inc. Butterfly transform layer
KR102360452B1 (ko) * 2019-06-18 2022-02-11 주식회사 퓨리오사에이아이 뉴럴 네트워크 프로세서의 컨벌루션 연산 처리 방법 및 장치
US11222092B2 (en) 2019-07-16 2022-01-11 Facebook Technologies, Llc Optimization for deconvolution
US11468147B1 (en) * 2019-07-22 2022-10-11 Habana Labs Ltd. Activation function approximation in deep neural networks using rectified-linear-unit function
US20220408097A1 (en) * 2019-11-14 2022-12-22 Intel Corporation Adaptively encoding video frames using content and network analysis
KR20210077352A (ko) * 2019-12-17 2021-06-25 에스케이하이닉스 주식회사 데이터 처리 시스템 및 이를 위한 가속 장치
CN111260050B (zh) * 2020-01-19 2023-03-07 中国电子科技集团公司信息科学研究院 一种用于控制卷积神经网络进行数据处理的方法和装置
TWI733334B (zh) 2020-02-15 2021-07-11 財團法人工業技術研究院 卷積神經網路運算裝置及其運算的方法
US20210312258A1 (en) * 2020-04-01 2021-10-07 Sony Corporation Computing temporal convolution networks in real time
CN112052881B (zh) * 2020-08-14 2022-07-29 河海大学 基于多尺度近端特征拼接的高光谱图像分类模型的装置
CN111985645A (zh) * 2020-08-28 2020-11-24 北京市商汤科技开发有限公司 一种神经网络的训练方法、装置、电子设备及存储介质
WO2022061867A1 (zh) * 2020-09-28 2022-03-31 深圳市大疆创新科技有限公司 数据处理方法、装置及计算机可读存储介质
KR20220063026A (ko) * 2020-11-09 2022-05-17 충북대학교 산학협력단 3d 라이다의 고속 객체 인식을 위한 채널별 컨볼루션 기반의 합성곱 신경망 구조
KR102532530B1 (ko) * 2021-03-24 2023-05-17 한국과학기술연구원 뉴로모픽 시스템용 실시간 프레임 대 스파이크 트레인 변환기
KR102657104B1 (ko) * 2021-05-24 2024-04-15 연세대학교 산학협력단 합성곱 연산 장치, 합성곱 연산 방법 및 합성곱 연산 방법을 실행시키도록 기록매체에 저장된 컴퓨터 프로그램
KR102371451B1 (ko) * 2021-05-27 2022-03-07 충남대학교 산학협력단 멀티포트 메모리를 이용한 병렬 곱셈장치
CN114089911B (zh) * 2021-09-07 2024-01-05 上海新氦类脑智能科技有限公司 基于数据复用的块切分拼接处理方法、装置、设备及介质
CN114648107A (zh) * 2022-03-10 2022-06-21 北京宏景智驾科技有限公司 神经网络输入图像点云卷积层计算的效率提升方法及电路

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1988004075A1 (en) * 1986-11-18 1988-06-02 The British Petroleum Company P.L.C. Coordination of processing elements in a multiprocessor computer
US5909562A (en) * 1997-05-01 1999-06-01 Hewlett-Packard Co. Backup FIFO in-line storage
CN1637716A (zh) * 2004-01-05 2005-07-13 三星电子株式会社 使用存储器仿真模块的嵌入式微计算机单元及其测试方法
CN101221542A (zh) * 2007-10-30 2008-07-16 北京时代民芯科技有限公司 一种外部存储器接口
CN101266463A (zh) * 2008-04-29 2008-09-17 江南大学 基于fpga的模糊控制器
US8111633B1 (en) * 2004-08-30 2012-02-07 Juniper Networks, Inc. Multicast trees for virtual private local area network (LAN) service multicast
US20130103869A1 (en) * 2011-10-25 2013-04-25 Renesas Electronics Corporation Bus connection circuit, semiconductor device and operation method of bus connection circuit
CN104145281A (zh) * 2012-02-03 2014-11-12 安秉益 神经网络计算装置和系统及其方法
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
CN105279439A (zh) * 2014-06-20 2016-01-27 赛普拉斯半导体公司 用于就地执行的存储器的加密方法
US20160093343A1 (en) * 2014-09-30 2016-03-31 Samsung Electronics Co., Ltd. Low power computation architecture
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN105681628A (zh) * 2016-01-05 2016-06-15 西安交通大学 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法
CN105678379A (zh) * 2016-01-12 2016-06-15 腾讯科技(深圳)有限公司 一种cnn的处理方法和装置
KR20160069834A (ko) * 2014-12-09 2016-06-17 삼성전자주식회사 Cnn의 근사화를 위한 학습 장치 및 방법

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10192062B2 (en) * 2014-06-20 2019-01-29 Cypress Semiconductor Corporation Encryption for XIP and MMIO external memories
US10192162B2 (en) * 2015-05-21 2019-01-29 Google Llc Vector computation unit in a neural network processor
US10049322B2 (en) * 2015-05-21 2018-08-14 Google Llc Prefetching weights for use in a neural network processor
US20160379109A1 (en) * 2015-06-29 2016-12-29 Microsoft Technology Licensing, Llc Convolutional neural networks on hardware accelerators
US11244225B2 (en) * 2015-07-10 2022-02-08 Samsung Electronics Co., Ltd. Neural network processor configurable using macro instructions
US9847974B2 (en) * 2016-04-28 2017-12-19 Xerox Corporation Image document processing in a client-server system including privacy-preserving text recognition
US10120649B2 (en) * 2016-07-29 2018-11-06 Microunity Systems Engineering, Inc. Processor and method for outer product accumulate operations
KR102546996B1 (ko) * 2016-08-19 2023-06-26 모비디어스 리미티드 희소 볼륨 데이터를 사용한 연산들

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1988004075A1 (en) * 1986-11-18 1988-06-02 The British Petroleum Company P.L.C. Coordination of processing elements in a multiprocessor computer
US5909562A (en) * 1997-05-01 1999-06-01 Hewlett-Packard Co. Backup FIFO in-line storage
CN1637716A (zh) * 2004-01-05 2005-07-13 三星电子株式会社 使用存储器仿真模块的嵌入式微计算机单元及其测试方法
US8111633B1 (en) * 2004-08-30 2012-02-07 Juniper Networks, Inc. Multicast trees for virtual private local area network (LAN) service multicast
CN101221542A (zh) * 2007-10-30 2008-07-16 北京时代民芯科技有限公司 一种外部存储器接口
CN101266463A (zh) * 2008-04-29 2008-09-17 江南大学 基于fpga的模糊控制器
US20130103869A1 (en) * 2011-10-25 2013-04-25 Renesas Electronics Corporation Bus connection circuit, semiconductor device and operation method of bus connection circuit
CN104145281A (zh) * 2012-02-03 2014-11-12 安秉益 神经网络计算装置和系统及其方法
CN105279439A (zh) * 2014-06-20 2016-01-27 赛普拉斯半导体公司 用于就地执行的存储器的加密方法
US20160093343A1 (en) * 2014-09-30 2016-03-31 Samsung Electronics Co., Ltd. Low power computation architecture
KR20160069834A (ko) * 2014-12-09 2016-06-17 삼성전자주식회사 Cnn의 근사화를 위한 학습 장치 및 방법
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN105681628A (zh) * 2016-01-05 2016-06-15 西安交通大学 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法
CN105678379A (zh) * 2016-01-12 2016-06-15 腾讯科技(深圳)有限公司 一种cnn的处理方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
R. AL-HADDAD 等: "Sustainable Modular Adaptive Redundancy Technique Emphasizing Partial Reconfiguration for Reduced Power Consumption", 《INTERNATIONAL JOURNAL OF RECONFIGURABLE COMPUTING》 *
杨海波 等: "基于寄存器优化的图像中低层处理", 《中国图象图形学报》 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108664993A (zh) * 2018-04-08 2018-10-16 浙江工业大学 一种密集权重连接的卷积神经网络图像分类方法
CN108664993B (zh) * 2018-04-08 2022-01-11 浙江工业大学 一种密集权重连接的卷积神经网络图像分类方法
CN110390389A (zh) * 2018-04-17 2019-10-29 快图有限公司 神经网络引擎
WO2019218900A1 (zh) * 2018-05-15 2019-11-21 华为技术有限公司 一种神经网络模型、数据处理方法及处理装置
CN108805267B (zh) * 2018-05-28 2021-09-10 重庆大学 用于卷积神经网络硬件加速的数据处理方法
CN108805267A (zh) * 2018-05-28 2018-11-13 重庆大学 用于卷积神经网络硬件加速的数据处理方法
CN111105030B (zh) * 2018-10-25 2024-04-12 通用汽车环球科技运作有限责任公司 用于车辆感知系统的神经网络中的激活零旁路和权重剪枝
CN111105030A (zh) * 2018-10-25 2020-05-05 通用汽车环球科技运作有限责任公司 用于车辆感知系统的神经网络中的激活零旁路和权重剪枝
WO2020133463A1 (zh) * 2018-12-29 2020-07-02 华为技术有限公司 神经网络系统及数据处理技术
WO2020133317A1 (zh) * 2018-12-29 2020-07-02 华为技术有限公司 计算资源分配技术及神经网络系统
CN110070178B (zh) * 2019-04-25 2021-05-14 北京交通大学 一种卷积神经网络计算装置及方法
CN110070178A (zh) * 2019-04-25 2019-07-30 北京交通大学 一种卷积神经网络计算装置及方法
WO2020259031A1 (zh) * 2019-06-27 2020-12-30 深圳市中兴微电子技术有限公司 数据的处理方法、装置、存储介质和电子装置

Also Published As

Publication number Publication date
KR20180034853A (ko) 2018-04-05
US20180089562A1 (en) 2018-03-29
CN107871163B (zh) 2022-05-24
US11449745B2 (en) 2022-09-20

Similar Documents

Publication Publication Date Title
CN107871163A (zh) 用于卷积神经网络的操作装置及方法
US11106606B2 (en) Exploiting input data sparsity in neural network compute units
US11720523B2 (en) Performing concurrent operations in a processing element
CN108280514A (zh) 基于fpga的稀疏神经网络加速系统和设计方法
CN110073370A (zh) 用于稀疏神经网络的低功率架构
CN108197705A (zh) 卷积神经网络硬件加速装置及卷积计算方法及存储介质
CN110799957B (zh) 具有元数据致动的条件图执行的处理核心
CN108805267A (zh) 用于卷积神经网络硬件加速的数据处理方法
CN105960630A (zh) 用于执行分段操作的数据处理设备和方法
CN108229648A (zh) 卷积计算方法和装置、电子设备、计算机存储介质
CN106779057A (zh) 基于gpu的计算二值神经网络卷积的方法及装置
US20210382716A1 (en) Processing core with metadata actuated conditional graph execution
CN110007959A (zh) 用于深度神经网络的硬件实现的层次化尾数位长度选择
CN110163350A (zh) 一种计算装置及方法
CN115311506B (zh) 基于阻变存储器的量化因子优化的图像分类方法及装置
CN114677548A (zh) 基于阻变存储器的神经网络图像分类系统及方法
CN109325530A (zh) 基于少量无标签数据的深度卷积神经网络的压缩方法
CN110531955A (zh) 用在深度神经网络的指数运算方法、计算机装置、记录介质
CN112988229B (zh) 基于异构计算的卷积神经网络资源优化配置方法
US20210303992A1 (en) Executing neural networks on electronic devices
Ngo FPGA hardware acceleration of inception style parameter reduced convolution neural networks
CN106547723A (zh) 一种预测稀疏矩阵运算能耗的方法
Yang et al. Value-driven synthesis for neural network ASICs
KR102562322B1 (ko) 이진화 신경망(bnn)을 위한 신경 프로세싱 유닛
US20230004788A1 (en) Hardware architecture for processing tensors with activation sparsity

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