CN110989920B - 能量高效的存储器系统和方法 - Google Patents
能量高效的存储器系统和方法 Download PDFInfo
- Publication number
- CN110989920B CN110989920B CN201910948716.7A CN201910948716A CN110989920B CN 110989920 B CN110989920 B CN 110989920B CN 201910948716 A CN201910948716 A CN 201910948716A CN 110989920 B CN110989920 B CN 110989920B
- Authority
- CN
- China
- Prior art keywords
- data
- computing
- memory
- cache
- computation
- 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.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 81
- 238000000034 method Methods 0.000 title claims abstract description 42
- 239000011159 matrix material Substances 0.000 claims abstract description 14
- 238000004364 calculation method Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 4
- 239000004744 fabric Substances 0.000 claims description 3
- 238000013527 convolutional neural network Methods 0.000 abstract description 12
- 238000012432 intermediate storage Methods 0.000 abstract description 3
- 238000003860 storage Methods 0.000 abstract description 3
- 238000011176 pooling Methods 0.000 description 38
- 230000006870 function Effects 0.000 description 16
- 230000008569 process Effects 0.000 description 15
- 230000004913 activation Effects 0.000 description 5
- 239000000872 buffer Substances 0.000 description 3
- 238000012805 post-processing Methods 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000000945 filler Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
Classifications
-
- 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
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本文描述了增加诸如存储空间和计算时间之类的计算资源的利用率和性能,从而降低计算成本的系统和方法。本发明的各种实施例提供了一种硬件结构,该硬件结构既允许消除冗余的数据传输的对源数据的流送,又允许进行消除对去往和来自中间存储装置的数据传输的要求的存储器中的计算。在某些实施例中,通过使用硬件结构来降低计算成本,该硬件结构使得能够自动地且高效地执行数学运算,例如,由卷积神经网络采用的逐元素矩阵乘法。
Description
相关专利申请的交叉引用
本申请根据35U.S.C.§119(e)要求享有以下申请的优先权权益:于2018年10月3日提交的题为“Energy-Efficient Tornado Memory Systems and Methods”、发明人为MarkAlan Lovell和Robert Michael Muchsel的共同未决且共同转让的美国临时专利申请第62/740,679号,该申请以其整体内容通过引用方式合并于此。该专利文档中提及的每个参考文献均以其整体通过引用方式合并与此。
技术领域
本公开总体上涉及数据处理。更具体地,本公开涉及用于在执行算术运算(例如,卷积运算和池化运算)时改进计算和存储器资源的利用率的系统和方法。
背景技术
机器学习的最令人兴奋的应用中的一些使用卷积神经网络(CNN)。CNN将多个分层网络层和子层应用于例如输入图像,以确定是否将图像分类为包含人或某种其他物体。CNN使用基于神经网络的图像分类器,该图像分类器可以自动学习复杂特征以用于分类和物体识别任务。针对卷积的算术运算典型地在通用计算设备(例如,常规的微处理器)上操作的软件中执行。这种方法在功率和时间两者方面都非常昂贵,并且对于许多计算密集型应用(例如,实时应用),通用硬件无法以及时的方式执行必要的操作,因为计算速率受到现有硬件设计的计算资源和能力的限制。
此外,使用通用处理器的算术功能来生成中间结果由于增加的从各种存储器位置存储并取回中间结果以完成操作的步骤而以牺牲计算时间为代价。例如,许多常规的乘法器都是标量机,这些乘法器使用CPU或GPU作为其计算单元,并使用寄存器和高速缓存依赖于一系列软件和硬件矩阵操纵步骤(例如,地址生成、换位、逐位加法和移位、将乘法转换为加法并且将结果输出到某个内部寄存器中)来处理存储在存储器中的数据。
此外,诸如卷积之类的对计算有要求的应用通常要求将软件功能嵌入微处理器中,并且将软件功能用于将卷积运算转换为替代的矩阵乘法运算。这涉及将图像数据和权重数据重新排列并重新格式化为两个矩阵,然后对这两个矩阵进行原始矩阵相乘。不存在高效地选择、使用和重用数据,同时避免生成冗余数据以及避免冗余地访问数据的机制。当执行乘法运算和其他运算时,软件必须一遍又一遍地访问标准存储器的相同位置,并且读取、重新获取并写入相同的数据,这在计算上非常繁琐,并造成了限制机器学习应用快速发展的瓶颈。随着经受卷积运算的数据量的增加以及运算复杂度的持续增长,不能重用与增加的从存储器存储并取回中间结果以完成算数运算的步骤耦合的许多数据仅呈现了现有设计的一些缺点。
简而言之,常规的硬件和方法不能很好地适合于对于实时地执行众多涉及大量数据的复杂处理步骤所要求的对速度、性能和能量节约的不断增长的需求。因此,需要当执行算术运算时大大地减少运算数量并且以快速且能量高效的方式移动数据的高计算吞吐量的系统和方法。
附图说明
将参考本发明的实施例,其示例可以在附图中示出。这些附图旨在是说明性的而非限制性的。尽管在这些实施例的上下文中总体上描述了本发明,但是应当理解的是并不旨在将本发明的范围限制为这些特定实施例。附图中的项目未按比例绘制。
图1示出了根据本公开的各种实施例的示例性高速缓存和计算结构。
图2示出了应用于存储在存储器设备中的公共图像文件的填充。
图3示出了根据本公开的各种实施例的将数据从源存储器读取到示例性高速缓存和计算结构中的读取操作。
图4-图6示出了根据本公开的各种实施例的在丢弃数据之前通过高速缓存和计算结构进行的数据移位和旋转。
图7示出了根据本公开的各种实施例的通过高速缓存和计算结构丢弃数据。
图8-图9示出了根据本公开的各种实施例的在丢弃数据之后通过高速缓存和计算结构进行的数据移位和旋转。
图10示出了根据本公开的各种实施例的高速缓存和计算结构对跨步的使用。
图11示出了根据本公开的各种实施例的通过高速缓存和计算结构在经填充的存储器上进行的数据移位和旋转。
图12示出了根据本公开的各种实施例的计算结构。
图13-图14示出了通过图12中所示的计算结构进行的数据移位和旋转。
图15示出了根据本公开的各种实施例的使用计算结构的多通道乘法。
图16示出了根据本公开的各种实施例的使用计算结构的多通道池化。
图17示出了根据本公开的各种实施例的替代的最大池化过程。
图18和图19示出了根据本公开的各种实施例的包括集成计算硬件的存储器结构。
图20是根据本公开的各种实施例的用于使用计算结构来执行计算的说明性过程的流程图。
图21是根据本公开的各种实施例的用于使用计算结构来执行进行中(in-flight)池化的说明性过程的流程图。
图22示出了根据本公开的各种实施例的利用高速缓存和计算结构的示例性系统。
具体实施方式
在以下描述中,出于解释的目的,阐述了具体细节以便于提供对本发明的理解。然而,对于本领域技术人员显而易见的是,可以在没有这些细节的情况下实践本发明。此外,本领域技术人员将认识到,下面描述的本发明的实施例可以以各种方式来实现,例如,过程、装置、系统、设备或有形计算机可读介质上的方法。
附图中示出的组件或模块是本发明的示例性实施例的说明,并且意在避免模糊本发明。还应该理解的是,在整个讨论中,组件可以被描述为可以包括子单元的单独的功能单元,但是本领域技术人员将认识到,各种组件或其部分可以被划分为单独的组件或者可以集成在一起(包括集成在单个系统或组件内)。应当注意,本文所讨论的功能或操作可以被实现为组件。组件可以以软件、硬件或其组合来实现。
此外,附图内的组件或系统之间的连接不旨在限于直接连接。而是,可以由中间组件修改、重新格式化或以其他方式改变这些组件之间的数据。另外,可以使用附加的或更少的连接。还应注意,术语“耦合”、“连接”或“通信地耦合”应被理解为包括直接连接、通过一个或多个中间设备的间接连接以及无线连接。
在说明书中对“一个实施例”、“优选实施例”、“实施例”或“多个实施例”的引用意味着结合该实施例描述的特定特征、结构、特性或功能至少包括在本发明的一个实施例中,并且可以包括在多于一个的实施例中。另外,上述短语在说明书中各个地方的出现不一定全部指代相同实施例或多个实施例。
在说明书的各个地方使用某些术语是为了说明并且不应被解释为限制性的。服务、功能或资源不限于单个服务、功能或资源;这些术语的使用可以指代相关服务、功能或资源的分组,这些分组可以是分布式的或聚合的。
术语“包括(include)”、“包括有(including)”、“包含(comprise)”和“包含有(comprising)”应被理解为开放术语,并且跟随的任何列表都是示例,并且不意味着限于所列出的项目。本文所使用的任何标题仅出于组织的目的,并且不应该用于限制说明书或权利要求书的范围。本专利文档中提及的每个参考文献均以其整体通过引用方式合并于此。
此外,应当注意,本文所描述的实施例是在CNN的上下文中给出的,但是本领域技术人员应认识到,本公开的教导不限于CNN,并且可以应用于涉及可以在其他上下文中使用的算术运算的各种其他网络和应用。例如,尽管本文的实施例主要在卷积的上下文中讨论,但是本领域技术人员将认识到,解卷积运算也可以被结构化为矩阵-矩阵类型的乘法运算,因此,本发明的原理等同地适用于解卷积。此外,根据本公开的各种实施例,可以实现其他类型的数学运算。
在本文档中,术语“存储器”和“高速缓存和计算结构”或“计算结构”可互换地使用。类似地,术语“内核”和“权重”可互换地使用。
图1示出了根据本公开的各种实施例的用于卷积神经网络计算的示例性高速缓存和计算结构。如图1中所描绘的,包括存储器120的系统可以进一步包括存储器100(例如,任何常见存储器)和内核150。存储器120可以包括高速缓存部分130(其可以用作中间存储装置)以及计算部分140。在实施例中,高速缓存和计算结构120可以被实现为基于寄存器的硬件结构。然而,图1中所示的高速缓存和计算结构120不限于在这里示出的或在所附文本中描述的构造细节。如本领域技术人员将认识到的,可以进行适当的实现方式特定的修改,例如,以针对存储器100、120和150的尺寸和形状进行调整。应当理解,高速缓存部分130可以与计算部分140分开地实现。为了图示的方便,已经选择了相对小的和正方形的图像和内核大小、它们的纵横比和它们的定向,并且不旨在限制本公开的范围。
在操作中,存储器100可以用于存储源数据,例如,输入图像数据、视频数据、音频数据等,其以具有特定高度和宽度的矩阵格式布置。尽管本文的简化图示示出并描述了单个输入通道,但是本领域技术人员将认识到,可以并行处理任意数量的输入通道以生成输出通道。
高速缓存和计算结构120的尺寸可以被设计为使得在实施例中,该高速缓存和计算结构120的最小宽度等于(在没有填充的情况下)保持图像数据的存储器100的宽度加上可以考虑填充列144、146的任何宽度,如关于图2更详细地讨论的。因此,可以基于例如包括存储器100和内核150的一组其他存储器来确定高速缓存和计算结构120的尺寸。
在实施例中,可以将本文档中呈现的概念应用于全尺寸存储器,因此消除了将高速缓存结构130与计算结构140分离的需要。在实施例中,滤波器或内核150保持单独的权重152,该权重152可以用于计算,在这里是用于卷积。卷积层可以使用任何数量的内核150以将一组权重152应用于图像的卷积窗口中的数据。在实施例中,权重152可以已经在训练阶段期间通过CNN进行学习,例如,以生成与卷积窗口相关联的激活值。对于每个内核150,卷积层可以针对每个数据点具有一个网络节点(即,神经元),该网络节点输出可以基于该组权重152计算出的激活值。针对卷积窗口的激活值可以标识特征或特性(例如,边缘),然后特征或特性可以用于在图像内的其他位置处标识相同的特征。在实施例中,内核150中的权重152被应用于计算部分140中的元素。计算部分140中的数据可以例如在卷积运算的每个周期中使用,如将参考图15更详细地讨论的。
应当理解,本文所呈现的实施例可以通过利用任何现有的对称性来处理数据。还应理解,源数据100可以由两个或更多个网络(例如,同时)使用;源数据100也可以由执行并行处理的网络使用。还应理解,本文所公开的实施例可以包括任何数量的附加电路和子电路,例如,逻辑电路和/或控制电路、高速缓存、本地缓冲器、比较器、状态机、后处理单元和执行管理功能以有助于本公开的目标的辅助设备。
作为卷积神经网络基础的数学概念在本领域中是公知的。简而言之,将以大小有限的内核或权重数据的形式的一组滤波器应用于较大的输入通道数据集(例如,穿过图像的区域)或图像数据集,以产生用于CNN的特定层的输出通道数据(例如,输出矩阵)。每个输出通道中的每个元素表示通过非线性激活函数(例如,ReLU或Sigmoid函数)传递的、内核中的单个权重与输入通道的单个数据值的乘积的总和。在许多情况下,源/输入通道数据是零填充的,如图2中所示。
图2示出了应用于存储在存储器设备中的公共图像文件的填充。如所描绘的,列202、203、210、212和行230-236可以是位于矩阵200的边缘处的用于实现填充功能(这里为零填充)的数据阵列。在实践中,可以在卷积层操作之前执行填充,例如,以生成预先确定的输出特征图大小。在实施例中,还可以响应于将跨步(即,间隔或步长)设置为大于1的值来启用填充。
在实施例中,填充数据不是物理存储的,相反,控制逻辑(未示出)可以在适当的时间将零字节加载到列202、203、210、212和行230-236中,例如,以将平均池化运算中的除数调整为等于取平均计算中涉及的非零池化值的总和。
在实施例中,使用旋转操作的数据结构可以忽略填充元素中的一些。例如,在图2中,行和列的一半(即,行230、232和列202、203)仍然未被使用,但以阴影背景显示。应当理解,本文所公开的实施例可以在有填充和没有填充的情况下操作。为了清楚起见,本文仅示出了在有填充的情况下的场景。
图3示出了根据本公开的各种实施例的将数据从源存储器读取到示例性高速缓存和计算结构中的读取操作。以类似于图2的方式,通过将零字节数据加载到列202、203、210、212和行230-236中,以及通过仅使用行和列的一半(即,行234、236和列210、212)来填充图3中的源数据300。并且类似于图1,存储器120包括高速缓存结构130和计算结构140。
在操作中,可以将高速缓存和计算结构120初始化为零。如所描绘的,将具有此处为0.0的值的第一数据项306读取到计算结构140的列146中。在实施例中,对于每个数据项106,可以对所有输入通道执行以下步骤序列(未在图3中示出):一旦已经执行了整行旋转,则所有元素可以上移一行,使得在高速缓存和计算结构120顶部的行132可以被丢弃,并且可以例如从高速缓存和计算结构120的底部加载包括零的新行,以替换底部的行136。
然后,存储器120的内容可以向左旋转一个元素,使得在右下方的元素由先前读取的第一数据项306替代,使得可以对计算结构140执行一个或多个数学运算,并且可以读取下一个数据项407,依此类推,如图4至图6所示,图4至图6示出了根据本公开的各种实施例的通过存储器120进行的数据移位和旋转。应当理解,移位操作或拉动操作可以由状态机(未示出)执行,该状态机可以执行任何数量的附加操作,例如,在向后处理单元(也未示出)发送数据之前。另外,如对于本领域技术人员显而易见的,实施例可以使用指向存储器元素的指针来避免物理地移动存储器,但仍在逻辑上实现旋转。
一旦已经读取并处理了行240中的数据项(包括未被忽略的任何填充),就可以丢弃存储器120中的行132,并且可以从存储器120底部加载(例如包括零的)新行,如图7中所示。在实施例中,过程可以如图8至图9中所示地继续,图8至图9示出了在已经丢弃一行之后通过存储器120进行的数据移位和旋转。
在实施例中,一旦源数据从存储器100加载到存储器120中,存储器120就可以执行图8至图9中所示的旋转和移位操作的有序序列,以允许计算部分140多次(即,在多个周期内)使用加载的数据来最终获得算术结果,而不必多次重新加载同一源数据。在实施例中,旋转和移位操作的序列可以由不依赖于外部控制设备(例如,CPU)的状态机控制。
因此,针对存储器120的系统和方法允许高效地重用一次加载的数据进行多次操作,而不必从标准存储器中的地址一遍又一遍地重新获取或重新加载数据。这有利地避免了读取操作的重复,并且避免了执行计算上昂贵的数据移动操作的需要。
本文所公开的实施例支持各种超参数,例如,跨步。当跨步的宽度大于一时,可以如图10中所示地执行旋转和移位操作,图10示出了根据本公开的各种实施例的高速缓存和计算结构对跨步的使用。在实施例中,对于跨步值每增加一,可以移入一个附加数据列以将列旋转一。
图10中的示例示出了跨步为二。如可以容易地观察到的,在列2中的值1.3和和在列1中的值1.4向左旋转二,使得在应用了具有值为二的跨步后,值1.3和值1.4将以使得它们占据分别在列4和列3中的位置的方式旋转。应当理解,源数据100和存储器120的宽度、高度和填充可以取决于内核大小、跨步和其他卷积参数。
上面示出的图描绘了可以利用公共存储器100实现为源或者可以例如从传感器直接流送的分层(或缓存)系统。在实施例中,数据移位和旋转能力可以在较大的存储器1100内直接实现,如图11中所示。在实施例中,存储器1100是足够大的,使得不需要丢弃数据。相反,数据可以沿着存储器1100的高度维度持续旋转,使得一旦已经完成特定数量的操作,就恢复原始的预旋转数据。
图12示出了根据本公开的各种实施例的不具有行缓冲器的计算结构1250。在对于缓存整行并重复旋转的能量和存储空间要求可能不可接受地高的场景中,某些实施例提供在重复加载数据与减少/消除高速缓冲存储器的存储空间之间的折衷。图13-图14示出了通过图12中的计算结构1250进行的数据移位和旋转。
图15示出了根据本公开的各种实施例的使用计算结构的多通道乘法。图15中所示的计算结构140中的单个元素表示3×3矩阵。类似地,内核150中的元素可以表示3×3矩阵。在实施例中,选择计算高速缓存140的尺寸以匹配内核150的尺寸(这里为3×3结构)。在实施例中,计算高速缓存结构140被设计为以例如实现执行生成预期结果的预期数学运算的方式适当地移位并旋转以对齐要计算的元素。
在操作中,内核150-154中的权重可以在乘法运算中应用于计算高速缓存部分140中的数据,例如,以每个周期执行一组乘法。一旦将数据集加载到计算高速缓存部分140中,就可以针对图15中的所有三个通道148同时执行乘法,以为三个输出通道1510生成数据。在实施例中,可以以预先确定的顺序同时访问并处理计算结构140中的数据,以针对多个输入通道148中的第一个对一个或多个内核150-154执行多次乘法运算。例如,可以通过将计算结构140中的单个元素与内核150中的单个元素进行点乘来生成表示图像的输出像素的点积,以获得部分结果,然后可以将部分结果相加以获得聚合的点积。
与现有方法不同,不需要通过将点乘分解为一系列单个子运算来对单个数据元素执行单个元素的乘法(即,标量乘法)。因此,不需要存储部分乘积并从某个中间寄存器、缓冲区或高速缓存中取出该部分乘积来完成算术运算。
在实施例中,计算高速缓存140中的位置的逐元素旋转与内核150中的权重的位置相匹配。计算高速缓存140中的数字可以在移位操作的有序序列内在周期之间改变,移位操作的有序序列产生例如逐元素乘法。与计算高速缓存140中的数字不同,内核150中的数字不需要在移位操作的有序序列内在周期之间改变。
因此,在实施例中,虽然计算高速缓存140中的元素经受旋转和移位操作,但是内核150中的元素在乘法运算的持续时间内可以保持相同。换言之,计算140可以使用相同的内核150来生成用于不同输出通道1510的输出数据,使得有利地例如在多个周期内重用内核150中的数据以执行卷积运算。
在实施例中,可以例如通过硬件或软件控制器将激活函数(例如,非线性ReLU函数)应用于计算。在实施例中,CNN可以例如在卷积之后使用池化运算。因此,除了执行卷积运算之外,本公开的实施例还可以用于执行其他运算,例如,最大池化和平均池化。池化是非线性子采样或下采样的一种形式,其使用诸如最大池化或平均池化之类的非线性函数来减少计算量并增加吞吐量。池化通常涉及跨先前卷积的输出的、小的、不重叠的区域逐步地滑动池化窗口(例如,二维正方形窗口)。对窗口中数据的组的值进行聚合为本地邻域中的每个组提供单个输出值(例如,整数)。
图16示出了根据本公开的各种实施例的使用计算结构的多通道池化。在实施例中,最大池化运算选择计算高速缓存1602中的最大元素,并且平均池化计算计算高速缓存1602中的元素的平均值(均值)。池化窗口的大小和位置取决于池化跨步并且可以由计算结构1602的大小(这里是3×3矩阵)确定。一旦将数据集加载到计算高速缓存1602-1606中,就可以同时对所有三个输入通道100、110、112执行池化,以生成相应的输出通道1610-1614。应当注意,与卷积不同,池化对输入的深度切片独立操作。换言之,输入通道的数量和输出通道的数量是相同的,并且数学运算不会混合来自多个输入通道的数据。
图17示出了根据本公开的各种实施例的替代的最大池化过程。在实施例中,计算高速缓存1704是专用计算高速缓存1704,该专用计算高速缓存1704被引入到数据路径中以对源存储器1702的给定区域中的两个或更多个池化窗口执行最大池化运算。
如图17中所示,来自池化窗口(例如,包含数字222、173、136和139的窗口)的池化数据递送2×2的最大池化结果(这里为数字222),这实际上减少了针对神经网络中的后续层的计算量(这里是如先前关于图15所描述地执行的卷积)。
图17中的池化过程可以描述为“进行中”池化,即,在将经池化的数据写入计算高速缓存1704中之前,当从源存储器1702中读取出原始数据时发生池化。例如,在实施例中,可以通过这样的方式将池化窗口中的数据最大池化:逐个元素地流送数据,并且如果后续值较大,则利用数据流中的后续元素的值来替换一个元素值(否则将其忽略)。以这种方式,池化运算不依赖于中间存储或缓存步骤。
在实施例中,可以以硬件实现池化运算以消除不必要的数据移动。当与对标准硬件操作并且沿着数据路径经历一系列操作以完成池化的现有功率渴求的软件方法相比时,这尤其地减少计算时间和功耗。
应当理解,池化计算的任一部分可以例如通过使用多个池化引擎来并行执行,例如,池化引擎自身可以执行串行操作。应当注意,本文的实施例不限于任何特定的内核大小、滤波器大小或池化类型,并且可以应用于可以独立地对输入深度切片操作的其他计算。
上面所讨论的实施例可以使用一组分层存储器来相对容易地实现,该组分层存储器包括容易获得的商业存储器以及例如在图1和图12中所示的高速缓存和计算结构。在实施例中,为了进一步提高能量效率,可以将计算结构集成到(例如,如图18中所示的)定制存储器结构中。
图18示出了根据本公开的各种实施例的包括集成计算硬件的存储器结构。可以将计算硬件直接集成到“源”存储器1802中,使得可以就地(例如,在存储器1802中)处理源数据。因此,数据不需要从存储器1802中移出,这有利地进一步减少了数据移动和功耗。应当注意,可以通过利用若干数据路径作为并行物理路径、作为时间序列路径或作为其组合来实现存储器1802。例如,图18的存储器1802可以被实现为RAM单元结构,在实施例中,RAM单元结构允许在不要求多个访问步骤的情况下访问数据块。
详细地,可以以这样的方式对存储器1802进行硬连线:使得连接性使存储器1802能够用作计算结构以执行与图1中的计算结构140和高速缓存部分130的功能类似的功能。因此,图18中的存储器1802消除了否则例如高速缓存将需要执行的功能中的一些。例如,可以在存储器1802自身内执行乘法运算。在实施例中,这是通过(同时地)在存储器1802内访问数据块而实现的,该数据块基于标识数据块在存储器1802中的位置的单个地址键来定义跨越存储器1802的列和行的子集的区域,而不是逐行读取并且以串行方式提取数据。所访问的数据块被用作计算结构,该计算结构例如与可以紧邻物理存储器定位的逻辑组件结合来执行算术运算。在实施例中,如图19中所指示的,可以在存储器阵列的底部执行处理。一旦存储器结构完成计算,就可以将结果写入例如寄存器(未示出)中。
图20是根据本公开的各种实施例的用于使用计算结构来执行计算的说明性过程的流程图。用于使用计算结构的过程2000开始于步骤2002,在这时确定位于计算结构的第一端处的第一行中的数据是否已经在计算结构的第二端的方向上经历了完整的旋转周期。该计算结构可以表示二维数据矩阵。
在步骤2004处,响应于确定第一行中的数据已经如此旋转,可以丢弃位于计算结构的第三端处的第二行中的数据,并且在计算结构中的数据元素可以朝向第三端移位例如数量n个元素或列,以实现在卷积运算中的跨步。
在步骤2006处,在第一端,可以将第三行中的数据加载到计算结构中,以便替换在第一行中的数据。在实施例中,第三行可以是便于填充的零行。
在步骤2008处,可以将计算结构中的数据元素朝向第二端移位,使得可以在第四端处(例如,从计算结构的右下角)将新的数据元素加载到计算结构中。可以例如从独立的存储器读取新的数据元素。
在步骤2010处,计算结构中的一些或所有数据元素可以用于执行算术运算,例如,用于卷积的乘法。
最后,在步骤2012处,过程2000可以返回到步骤2002,以继续检查第一行中的数据是否已经再次完全旋转,直到例如已经达到停止条件为止。
图21是根据本公开的各种实施例的用于使用计算结构来执行进行中池化的说明性过程的流程图。用于进行中池化的过程2100开始于步骤2102,在这时电路(例如,位于存储器内的逻辑电路)通过将一个元素的值与下一个元素顺序地进行比较以确定两个值中的较高的值来处理与一组相邻数据元素(例如,矩阵中的相邻数据元素)相对应的数据部分。
在步骤2104处,然后可以将较高的值与下一个元素进行比较,直到处理了该组相邻数据元素中的所有元素为止。
在步骤2106处,可以将结果值写入计算高速缓存中。
在步骤2108处,处理第二组相邻元素。
在步骤2108中,可以将第二组的结果写入计算高速缓存中,直到处理了预先确定的数量的组并将其写入计算高速缓存中为止。
在步骤2110处,可以使用计算高速缓存来执行计算。本领域技术人员应认识到:(1)可以可选地执行某些步骤;(2)步骤可以不限于本文所阐述的特定顺序;(3)某些步骤可以以不同的顺序执行;以及(4)某些步骤可以同时进行。
本发明的方面可以使用替代模块来实现,例如,通过使用CPU指令,(多个)ASIC、可编程阵列、数字信号处理电路等。图22示出了根据本公开的各种实施例的利用高速缓存和计算结构的示例性系统。系统2200包括存储器2202,该存储器2202包括逻辑电路2204;源存储器2006;控制逻辑2208;以及后处理单元2210。对于单个组件的功能及其交互的说明已经在上面详细描述,并且为了简洁起见,在此不再重复。
本领域技术人员将认识到任何计算系统或编程语言对于本发明的实践都不是至关重要的。本领域技术人员还将认识到,上面所描述的多个元件可以在物理上和/或功能上分离为子模块或组合在一起。
本领域技术人员将认识到,前述示例和实施例是示例性的,并且不限制本公开的范围。意图是,本领域技术人员在阅读说明书并研究附图之后对于其而言显而易见的所有排列、增强、等同物、组合和改进都包括在本公开的真实精神和范围内。还应当注意,任何权利要求中的元素可以不同地布置,包括具有多种从属关系、配置和组合。
Claims (20)
1.一种用于执行算术计算的计算系统,所述计算系统包括:
源存储器,其存储用于算术运算的源数据;
计算高速缓存,其用于缓存所述源数据中的一些源数据;
计算存储器,其与所述计算高速缓存耦合,所述计算存储器在所述算术运算的一个或多个周期中被使用,所述计算高速缓存和所述计算存储器形成计算结构;
权重存储器,其与所述计算存储器耦合,所述权重存储器存储用于所述算术运算的权重数据;以及
控制器,其与所述计算结构耦合,所述控制器执行包括以下各项的步骤:
响应于位于所述计算结构的第一端处的第一行中的数据已经在所述计算结构的第二端的方向上经历了完整的旋转周期,而丢弃位于所述计算结构的第三端处的第二行中的数据;
将所述计算结构中的数据元素朝向所述第三端移位;
在所述第一端处,将来自第三行的数据加载到所述计算结构中以替换所述第一行中的数据;
将所述计算结构中的所述数据元素朝向所述第二端移位,使得在第四端处新的数据元素被加载到所述计算结构中;以及
使用所述计算结构中的两个或更多个数据元素来执行所述算术运算。
2.根据权利要求1所述的计算系统,其中,所述计算高速缓存被实现为RAM单元结构,所述RAM单元结构在不要求多个访问步骤的情况下实现数据访问。
3.根据权利要求1所述的计算系统,其中,所述计算存储器包括基于寄存器的硬件结构,并且所述控制器包括状态机。
4.根据权利要求1所述的计算系统,其中,所述计算高速缓存大于所述计算存储器。
5.根据权利要求1所述的计算系统,其中,所述源存储器具有等于或小于所述计算结构的宽度。
6.根据权利要求1所述的计算系统,其中,移位所述数据元素包括移位数量N个元素,以实现卷积运算中的跨步。
7.一种用于使用计算结构来执行计算的方法,所述方法包括:
响应于位于计算结构的第一端处的第一行中的数据已经在所述计算结构的第二端的方向上经历了完整的旋转周期,而丢弃位于所述计算结构的第三端处的第二行中的数据;
将所述计算结构中的数据元素朝向所述第三端移位;
在所述第一端处,将来自第三行的数据加载到所述计算结构中以替换所述第一行中的数据;
将所述计算结构中的所述数据元素朝向所述第二端移位,使得在第四端处新的数据元素被加载到所述计算结构中;以及
使用所述计算结构中的两个或更多个数据元素来执行算术运算。
8.根据权利要求7所述的方法,其中,所述计算结构包括基于寄存器的硬件结构,并且所述方法是由控制器执行的,所述控制器包括状态机。
9.根据权利要求7所述的方法,其中,所述计算结构表示二维数据矩阵。
10.根据权利要求7所述的方法,还包括在卷积运算的后续周期中,将内核中的元素应用于所述计算结构中的元素以获得部分点积而不执行标量运算。
11.根据权利要求7所述的方法,其中,移位所述数据元素包括移位数量N个元素,以实现卷积运算中的跨步。
12.根据权利要求7所述的方法,其中,所述新的数据元素是从独立的存储器读取的。
13.根据权利要求12所述的方法,其中,所述独立的存储器具有等于或小于所述计算结构的宽度。
14.一种用于数据处理的方法,所述方法包括:
对于多组相邻数据元素中的每一组相邻数据元素,迭代地比较该组相邻数据元素之中每两个相邻数据元素的两个数据值以确定所述两个数据值中较大的数据值并且丢弃较小的数据值,直到该组相邻数据元素中的所有数据元素已经被处理为止,使得针对所述多组相邻数据元素,在不存储最高数据值的情况下,获得所述最高数据值,从而减少了数据移动和功耗;
将所述最高数据值存储在计算高速缓存中;以及
使用所述计算高速缓存执行计算。
15.根据权利要求14所述的方法,其中,所述计算高速缓存被集成到包括所述一组相邻数据元素的源存储器中。
16.根据权利要求14所述的方法,其中,所述计算高速缓存被实现为RAM单元结构,所述RAM单元结构在不要求多个访问步骤的情况下实现数据访问。
17.根据权利要求14所述的方法,其中,所述计算高速缓存包括被用作并行物理路径或时间序列路径中的一个的数据路径。
18.根据权利要求14所述的方法,其中,进行比较的步骤包括将一个元素的值与下一元素顺序地进行比较以确定两个值中的较高的值。
19.根据权利要求14所述的方法,还包括基于标识所述计算高速缓存中的数据块的位置的单个地址键来访问所述数据块。
20.根据权利要求14所述的方法,其中,所述计算高速缓存包括基于寄存器的硬件结构。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862740679P | 2018-10-03 | 2018-10-03 | |
US62/740,679 | 2018-10-03 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110989920A CN110989920A (zh) | 2020-04-10 |
CN110989920B true CN110989920B (zh) | 2024-02-06 |
Family
ID=69886587
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910948716.7A Active CN110989920B (zh) | 2018-10-03 | 2019-10-08 | 能量高效的存储器系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11709911B2 (zh) |
CN (1) | CN110989920B (zh) |
DE (1) | DE102019126719A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10699160B2 (en) * | 2017-08-23 | 2020-06-30 | Samsung Electronics Co., Ltd. | Neural network method and apparatus |
CN109543139B (zh) * | 2017-09-22 | 2021-09-17 | 杭州海康威视数字技术股份有限公司 | 卷积运算方法、装置、计算机设备及计算机可读存储介质 |
KR20190051697A (ko) | 2017-11-07 | 2019-05-15 | 삼성전자주식회사 | 뉴럴 네트워크의 디컨벌루션 연산을 수행하는 장치 및 방법 |
US10832745B1 (en) * | 2019-07-26 | 2020-11-10 | Micron Technology, Inc. | Apparatuses and methods for performing operations using sense amplifiers and intermediary circuitry |
US20210334072A1 (en) * | 2020-04-22 | 2021-10-28 | Facebook, Inc. | Mapping convolution to connected processing elements using distributed pipelined separable convolution operations |
US20220334634A1 (en) * | 2021-04-16 | 2022-10-20 | Maxim Integrated Products, Inc. | Systems and methods for reducing power consumption in embedded machine learning accelerators |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106875011A (zh) * | 2017-01-12 | 2017-06-20 | 南京大学 | 二值权重卷积神经网络加速器的硬件架构及其计算流程 |
CN107480707A (zh) * | 2017-07-26 | 2017-12-15 | 天津大学 | 一种基于信息无损池化的深度神经网络方法 |
CN108133270A (zh) * | 2018-01-12 | 2018-06-08 | 清华大学 | 卷积神经网络加速方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9785423B2 (en) * | 2015-04-23 | 2017-10-10 | Google Inc. | Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure |
US11055063B2 (en) * | 2016-05-02 | 2021-07-06 | Marvell Asia Pte, Ltd. | Systems and methods for deep learning processor |
EP3388981B1 (en) * | 2017-04-13 | 2021-09-01 | Nxp B.V. | Convolutional processing system |
US10747844B2 (en) * | 2017-12-12 | 2020-08-18 | Tesla, Inc. | Systems and methods for converting a matrix input to a vectorized input for a matrix processor |
-
2019
- 2019-10-01 US US16/590,258 patent/US11709911B2/en active Active
- 2019-10-02 DE DE102019126719.6A patent/DE102019126719A1/de active Pending
- 2019-10-08 CN CN201910948716.7A patent/CN110989920B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106875011A (zh) * | 2017-01-12 | 2017-06-20 | 南京大学 | 二值权重卷积神经网络加速器的硬件架构及其计算流程 |
CN107480707A (zh) * | 2017-07-26 | 2017-12-15 | 天津大学 | 一种基于信息无损池化的深度神经网络方法 |
CN108133270A (zh) * | 2018-01-12 | 2018-06-08 | 清华大学 | 卷积神经网络加速方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US11709911B2 (en) | 2023-07-25 |
US20200110604A1 (en) | 2020-04-09 |
CN110989920A (zh) | 2020-04-10 |
DE102019126719A1 (de) | 2020-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110989920B (zh) | 能量高效的存储器系统和方法 | |
US11698773B2 (en) | Accelerated mathematical engine | |
KR102523263B1 (ko) | 하드웨어 기반 풀링을 위한 시스템 및 방법 | |
US11106606B2 (en) | Exploiting input data sparsity in neural network compute units | |
JP7329533B2 (ja) | 演算を加速するための方法および加速器装置 | |
EP3557425B1 (en) | Accelerator and system for accelerating operations | |
US20200202198A1 (en) | Neural network processor | |
US10545559B2 (en) | Data processing system and method | |
CN110188869B (zh) | 一种基于卷积神经网络算法的集成电路加速计算的方法及系统 | |
EP3839832A1 (en) | Method and apparatus with neural network convolution operation | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
JP7419574B2 (ja) | 膨張畳み込み加速演算方法及び装置 | |
US11748100B2 (en) | Processing in memory methods for convolutional operations | |
CN112712457B (zh) | 数据处理方法以及人工智能处理器 | |
US20220382361A1 (en) | Systems and Methods for Performing In-Flight Computations | |
US10936487B2 (en) | Methods and apparatus for using circular addressing in convolutional operation | |
US20230237307A1 (en) | Systems and methods for a hardware neural network engine | |
CN116028765A (zh) | 一种卷积计算方法和装置 | |
CN116010313A (zh) | 一种通用、可配置的图像滤波计算多行输出系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |