CN114330638A - 神经网络加速器框架中的可重新配置硬件缓冲器 - Google Patents

神经网络加速器框架中的可重新配置硬件缓冲器 Download PDF

Info

Publication number
CN114330638A
CN114330638A CN202111152304.6A CN202111152304A CN114330638A CN 114330638 A CN114330638 A CN 114330638A CN 202111152304 A CN202111152304 A CN 202111152304A CN 114330638 A CN114330638 A CN 114330638A
Authority
CN
China
Prior art keywords
input data
variable number
buffer
memory
data channels
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
Application number
CN202111152304.6A
Other languages
English (en)
Inventor
C·卡佩塔
T·勃伊施
G·德索利
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.)
STMICROELECTRONICS INTERNATIONAL NV
STMicroelectronics SRL
Original Assignee
STMICROELECTRONICS INTERNATIONAL NV
STMicroelectronics SRL
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 STMICROELECTRONICS INTERNATIONAL NV, STMicroelectronics SRL filed Critical STMICROELECTRONICS INTERNATIONAL NV
Publication of CN114330638A publication Critical patent/CN114330638A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/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/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Mathematical Physics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Computer Hardware Design (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Advance Control (AREA)

Abstract

本公开的各实施例涉及神经网络加速器框架中的可重新配置硬件缓冲器。一种卷积加速器框架(CAF)具有包括一个或多个卷积加速器的多个处理电路、可配置为存储可变数目的输入数据通道的数据的可重新配置硬件缓冲器、以及耦合到多个处理电路的流开关。可重新配置硬件缓冲器具有存储器和控制电路系统。可变数目的输入数据通道的数目与执行时期相关联。在执行时期的处理期间,流开关在多个处理电路中的处理电路与可重新配置硬件缓冲器之间对可变数目的输入数据通道的数据进行流传输。可重新配置硬件缓冲器的控制电路系统将存储器配置为存储可变数目的输入数据通道的数据,该配置包括将存储器的一部分分配给可变数目的输入数据通道中的每个输入数据通道。

Description

神经网络加速器框架中的可重新配置硬件缓冲器
技术领域
本公开总体上涉及神经网络。更具体地,但非排他性地,本公开涉及神经网络加速器框架中硬件资源的利用。
背景技术
已知的计算机视觉、语音识别和信号处理应用受益于卷积神经网络(CNN)的使用。CNN是一种基于计算机的工具,它处理大量数据,并且通过合并数据中最接近的相关特征来自适应地“学习”,以对数据进行广泛预测并且基于可靠结论和新合并改进预测。CNN被布置在多个“层”中,并且在每一层上进行不同类型的预测。
例如,如果将人脸的多个二维图片作为输入提供给CNN,则CNN将学习人脸的各种特征,诸如边缘、曲线、角度、点、颜色对比、亮点、黑点等。这些一个或多个特征是在CNN的一个或多个第一层学习的。然后,在一个或多个第二层,CNN将学习面部的各种可识别特征,诸如眼睛、眉毛、前额、头发、鼻子、嘴巴、脸颊等;每个可识别特征可以与所有其他特征区分开来。也就是说,CNN学习从眉毛或任何其他面部特征中识别和区分眼睛。在一个或多个第三层和后续层,CNN学习整个人脸和更高阶特征,诸如种族、性别、年龄、情绪状态等。在某些情况下,甚至可以教会CNN识别一个人的特定身份。例如,可以将随机图像标识为人脸,并且可以将人脸识别为Orlando Bloom、Andrea Bocelli或某个其他身份。
在其他示例中,可以向CNN提供动物的多个图片,并且可以教会CNN标识狮子、老虎和熊;CNN可以被提供有汽车的多个图片,并且可以教会CNN标识和区分不同类型的车辆;还可以形成和训练很多其他CNN。CNN可以用于学习句子中的单词模式、标识音乐、分析个人购物模式、玩视频游戏、创建交通路线,而且CNN还可以用于很多其他基于学习的任务。
发明内容
本文中描述了用于实现卷积神经网络的技术和系统。
在实施例中,一种卷积加速器框架(CAF)包括多个处理电路、可重新配置硬件缓冲器和流开关。多个处理电路包括一个或多个卷积加速器,可重新配置硬件缓冲器可配置为存储可变数目的输入数据通道的数据,流开关耦合到多个处理电路。可重新配置硬件缓冲器具有存储器和控制电路系统。可变数目的输入数据通道的数目与执行时期相关联。在操作中,在执行时期的处理期间,流开关在多个处理电路中的处理电路与可重新配置硬件缓冲器之间对可变数目的输入数据通道的数据进行流传输,并且可重新配置硬件缓冲器的控制电路系统将存储器配置为在执行时期的处理期间存储可变数目的输入数据通道的数据,该配置包括将存储器的一部分分配给可变数目的输入数据通道中的每个输入数据通道。
在实施例中,存储器包括输入缓冲存储器、镜像缓冲器和随机存取存储器(RAM),并且将存储器的一部分分配给可变数目的输入数据通道中的输入数据通道包括确定用于分配给输入数据通道的输入缓冲存储器的输入缓冲器的大小、确定镜像缓冲器的字大小、以及确定用于分配给输入数据通道的RAM的子RAM的大小。在实施例中,镜像缓冲器的字大小是分配给通道的子RAM的大小的函数。在实施例中,子RAM被配置为先进先出存储器。在实施例中,可重新配置硬件缓冲器的控制电路系统在操作中在第一执行时期的处理与第二执行时期的处理之间重新配置存储器。在实施例中,可变数目是数字集合{0,1,2,3,4}的元素。
在实施例中,可重新配置硬件缓冲器包括输出接口,并且控制电路系统在操作中将输出接口配置为提供可变数目的输出数据通道。在实施例中,在操作中将输出接口配置为提供可变数目的输出数据通道中的输出数据通道包括提供可变数目的输入数据通道中的输入数据通道的镜像输出。在实施例中,在操作中将输出接口配置为提供可变数目的输出数据通道中的输出数据通道包括提供可变数目的输入数据通道中的输入数据通道的整形输出。在实施例中,在操作中,整形输出经由流开关作为输入被提供给一个或多个卷积加速器中的卷积加速器,其中卷积加速器在操作中使用整形输出执行执行时期的稀释卷积运算。在实施例中,在操作中,输入数据通道的可变数目等于输出数据通道的可变数目。在实施例中,在操作中,输入数据通道的可变数目小于输出数据通道的可变数目。在实施例中,控制电路系统包括控制逻辑和多个计数器,并且在操作中,控制逻辑使用计数器来跟踪可变数目的输入数据通道的数据在存储器中的存储以及控制存储数据到可变数目的输出数据通道的提供。
在实施例中,一种用于实现神经网络(NN)(诸如卷积神经网络(CNN))的系统包括:主机处理器;主存储器;以及加速器框架(AF),诸如卷积加速器框架(CAF)。卷积加速器框架包括多个处理电路、可重新配置硬件缓冲器和流开关。多个处理电路包括一个或多个加速器,诸如一个或多个卷积加速器。可重新配置硬件缓冲器可配置为存储可变数目的输入数据通道的数据,可重新配置硬件缓冲器具有:存储器;以及控制电路系统。流开关耦合到多个处理电路和可重新配置硬件缓冲器。在操作中,可变数目的输入数据通道的数目与CNN的执行时期相关联;在执行时期的处理期间,流开关在多个处理电路中的处理电路与可重新配置硬件缓冲器之间对可变数目的输入数据通道的数据进行流传输;并且可重新配置硬件缓冲器的控制电路系统将可重新配置硬件缓冲器的存储器配置为在执行时期的处理期间存储可变数目的输入数据通道的数据,该配置包括将可重新配置硬件缓冲器的存储器的一部分分配给可变数目的输入数据通道中的每个输入数据通道。
在实施例中,可重新配置硬件缓冲器的存储器包括输入缓冲存储器、镜像缓冲器和随机存取存储器(RAM),并且将可重新配置硬件缓冲器的存储器的一部分分配给可变数目的输入数据通道中的输入数据通道包括确定用于分配给输入数据通道的输入缓冲存储器的输入缓冲器的大小、确定镜像缓冲器的字大小、以及确定用于分配给输入数据通道的RAM的子RAM的大小。在实施例中,分配给输入数据通道的镜像缓冲器的大小是所确定的子RAM的大小的函数。在实施例中,可重新配置硬件缓冲器包括输出接口,并且控制电路系统在操作中将输出接口配置为提供可变数目的输出数据通道。在实施例中,在操作中将输出接口配置为提供可变数目的输出数据通道中的输出数据通道包括提供可变数目的输入数据通道中的输入数据通道的整形输出。在实施例中,该系统包括集成电路,该集成电路包括主机处理器、主存储器和卷积加速器框架。
在实施例中,一种方法包括卷积加速器框架来处理卷积神经网络的执行时期,卷积加速器框架具有多个处理电路、流开关和可重新配置硬件缓冲器。执行时期的处理包括:配置卷积加速器框架的可重新配置硬件缓冲器的可变数目的输入数据通道,可变数目的输入数据通道的数目与执行时期相关联,该配置包括将可重新配置硬件缓冲器的存储器的一部分分配给可变数目的输入数据通道中的每个输入数据通道;经由流开关在多个处理电路中的处理电路与可重新配置硬件缓冲器之间对可变数目的输入数据通道的数据进行流传输;以及基于存储器的部分到可变数目的输入数据通道的分配,将可变数目的输入数据通道的数据存储在可重新配置硬件缓冲器的存储器中。在实施例中,存储器包括输入缓冲存储器、镜像缓冲器和随机存取存储器(RAM),并且将存储器的一部分分配给可变数目的输入数据通道中的输入数据通道包括确定用于分配给输入数据通道的输入缓冲存储器的输入缓冲器的大小、确定镜像缓冲器的字大小、以及确定用于分配给输入数据通道的RAM的子RAM的大小。在实施例中,该方法包括在第一执行时期的处理与第二执行时期的处理之间重新配置可重新配置硬件缓冲器的存储器。在实施例中,可重新配置硬件缓冲器包括输出接口,并且该方法包括将输出接口配置为提供可变数目的输出数据通道。在实施例中,在操作中将输出接口配置为提供可变数目的输出数据通道中的输出数据通道包括提供可变数目的输入数据通道中的输入数据通道的整形输出。在实施例中,该方法包括使用可重新配置硬件缓冲器的计数器来跟踪可变数目的输入数据通道的数据在存储器中的存储以及控制存储数据到可变数目的输出数据通道的提供。
在实施例中,一种非暂态计算机可读介质的内容引起卷积加速器框架的一个或多个硬件处理器执行一种方法,该方法包括:处理卷积神经网络的执行时期,执行时期的处理包括:配置卷积加速器框架的可重新配置硬件缓冲器的可变数目的输入数据通道,可变数目的输入数据通道的数目与执行时期相关联,该配置包括将可重新配置硬件缓冲器的存储器的一部分分配给可变数目的输入数据通道中的每个输入数据通道;经由卷积加速器框架的流开关在多个处理电路中的处理电路与可重新配置硬件缓冲器之间对可变数目的输入数据通道的数据进行流传输;以及基于存储器的部分到可变数目的输入数据通道的分配,将可变数目的输入数据通道的数据存储在可重新配置硬件缓冲器的存储器中。在实施例中,存储器包括输入缓冲存储器、镜像缓冲器和随机存取存储器(RAM),并且将存储器的一部分分配给可变数目的输入数据通道中的输入数据通道包括确定用于分配给输入数据通道的输入缓冲存储器的输入缓冲器的大小、确定镜像缓冲器的字大小、以及确定用于分配给输入数据通道的RAM的子RAM的大小。在实施例中,可重新配置硬件缓冲器包括输出接口,并且该方法包括将输出接口配置为提供可变数目的输出数据通道。在实施例中,在操作中将输出接口配置为提供可变数目的输出数据通道中的输出数据通道包括提供可变数目的输入数据通道中的输入数据通道的整形输出。在实施例中,内容包括由卷积加速器框架的一个或多个处理器执行的指令。
本公开中讨论的工具和方法阐述了卷积加速器的一个或多个方面和实施例,其中用作可重新配置硬件缓冲器的存储器可以用于存储部分数据并且降低并发和死锁问题的可能性。
本公开中描述的创新是新的和有用的,并且该创新在硅制造行业中不是公知的、常规的或传统的。本文中描述的创新的一些部分可以使用以新的和有用的方式结合其他结构和限制的已知构建块来创建比迄今为止传统已知的更多的东西。实施例改进了已知计算系统,当未编程或不同地编程时,该系统不执行或不提供本文中要求保护的特定可重新配置特征。
本文中描述的实施例使用计算机化技术来改进卷积加速器的技术,但其他技术和工具仍然可用以提供可重新配置互连。因此,所要求保护的主题不排除硅制造或可重新配置互连技术领域的全部或任何实质部分。
这些特征以及随后将变得很清楚的其他目的和优点存在于如下文更充分地描述和所要求保护的构造和操作的细节中,参考形成其一部分的附图。
提供本“发明内容”以便以简化的形式介绍某些概念,这些概念将在下面的“具体实施方式”中进一步详细描述。“发明内容”没有将所要求保护的主题的任何特定特征确定为关键或必要的,也不旨在限制所要求保护的主题的范围。
附图说明
图1描绘了卷积神经网络用于经由使用卷积、二次采样和全连接层对连续特征图进行操作来对输入图像分类的过程;
图2是根据本文中公开的一个或多个实施例的实现采用一个或多个卷积加速器的人工神经网络(ANN)的电子设备或系统的实施例的功能框图;
图3是根据本文中公开的一个或多个实施例的实现采用一个或多个卷积加速器的人工神经网络的电子设备或系统的实施例的功能框图;
图4是用于说明沿着三个空间维度将数据组织成执行时期和通道数据块的概念图;
图5是用于说明针对各种示例稀释率d在卷积中要考虑的数据的概念图;
图6是用于说明在由卷积神经网络执行的各种操作期间可能出现的可能的死锁和数据丢失情况的概念图;
图7是用于说明在CNN对数据执行时期的处理期间将中间累积结果存储在系统存储器中的概念图;
图8是用于说明在CNN对数据执行时期的处理期间将中间累加结果存储在可重新配置硬件缓冲器中的示例的概念图;
图9是用于说明数据流链中的分叉和联合的概念图;
图10是用于说明数据流链中的分叉和联合的概念图,其中采用可重新配置硬件缓冲器来缓冲数据流链中的数据;
图11是包括可重新配置硬件缓冲器的卷积加速器框架的实施例的功能框图;
图12和图13是用于说明通过使用可重新配置硬件缓冲器来解决并发问题和简化执行时期的数据流过程的概念图;
图14是用于说明用于存储从数据流的早期过程输出的部分数据以供后续过程中使用的示例缓冲器组的概念图;
图15是用于说明以供后续操作中使用的用于存储从数据流的早期操作输出的部分数据的示例缓冲器组以及用于对数据进行整形的对应的整形电路的概念图;
图16是可以在硬件加速器框架中采用的可重新配置硬件缓冲器的实施例的功能框图;
图17是用于说明在数据执行时期期间确定可重新配置硬件缓冲器的镜像缓冲器的字大小的示例的概念图;
图18是用于说明镜像缓冲器中的数据以及分配给与操作相关联的数据通道的输出计数器和子RAM的概念图;
图19是用于说明先入先出(FIFO)缓冲器的逻辑形式的子RAM的实施例的概念图;
图20是用于说明确定用于分配给与后续操作相关联的数据输出通道的输出子RAM的大小的示例的概念图;
图21是用于说明重新组织存储在镜像缓冲器和一个或多个输出子RAM中的数据以提供整形输出(诸如已经应用有稀释因子的输出)的示例的概念图;以及
图22示出了使用具有可重新配置硬件缓冲器的卷积加速器框架来处理CNN的执行时期的方法的实施例。
具体实施方式
在以下描述中,阐述了某些细节以提供对设备、系统、方法和物品的各种实施例的透彻理解。然而,本领域技术人员将理解,可以在没有这些细节的情况下实践其他实施例。在其他情况下,与诸如晶体管、集成电路、逻辑门、存储器、接口、总线系统等电路相关的公知的结构和方法在一些图中并未详细示出或描述,以避免不必要地模糊对实施例的描述。
除非上下文另有要求,在整个说明书和随后的权利要求中,词语“包括(comprise)”及其变体(诸如“包括(comprising)”和“包括(comprises)”)将被解释为开放的、包容性的意义,即,“包括但不仅限于”。除非上下文另有说明,否则对“至少其中之一”的提及应当被解释为表示分离的和包含的其中之一或两者。
在整个说明书中对“一个实施例”或“实施例”的引用表示结合该实施例描述的特定特征、结构或特性被包括在至少一个实施例中。因此,在本说明书的各个地方的短语“在一个实施例中”或“在实施例中”的出现不一定指代相同的实施例或所有的实施例。此外,特定特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合以获取另外的实施例。
提供标题仅为方便起见,而并不解释本公开的范围或含义。
图中元素的大小和相对位置不一定按比例绘制。例如,各种元素的形状和角度没有按比例绘制,其中一些元素被放大和定位以提高绘图的易读性。此外,所绘制的元素的特定形状不一定旨在传达关于特定元素的实际形状的任何信息,而仅为了在附图中易于识别而被选择。
卷积神经网络(CNN)是具有一个或多个层的深度神经网络(DNN)的类型,每一层都对3维(3D)特征数据张量(表示为宽度×高度×深度)执行卷积。通常,卷积运算与大部分处理工作量相关,通常每次推理执行大量乘法累加(MAC)运算。
专用卷积加速器旨在更有效地处理卷积运算,诸如通过利用比标准处理器核心更高级别的数据并行性。很多CNN还包括全连接(FC)层,其中经典的3D卷积通过对1×1×深度的特征数据张量的矩阵运算变形为向量。
图1描绘了一个过程,其中使用CNN通过交替使用CNN的卷积层和子采样层对连续特征图进行操作以通过全连接层为输入图像得出分类输出来对输入图像101分类。特别地,多个第一特征图105a由第一卷积层使用内核110从输入图像101生成。多个第二特征图105b然后由CNN的第一二次采样层生成,然后依次用于由CNN的第二卷积层生成更大的多个第三特征图105c。在所描绘的实施例中,CNN的第二二次采样层生成另一更大的多个第四特征图105d,第四特征图105d被CNN的全连接层接受为输入以生成N维输出分类向量120。例如,CNN可以用于对声学场景进行分类、基于传感器数据识别活动、对心跳信号进行分类、识别面部或面部表情等。
图2是将描述的实施例可以应用于的类型的电子设备或系统200的实施例的功能框图。系统200包括一个或多个处理核心或电路202。处理核心202可以包括例如一个或多个处理器、状态机、微处理器、可编程逻辑电路、离散电路系统、逻辑门、寄存器等、以及其各种组合。处理核心可以控制系统200的整体操作、系统200对应用程序的执行等。
系统200包括一个或多个存储器,诸如一个或多个易失性和/或非易失性存储器,该存储器可以存储例如与系统200的控制、应用和由系统200执行的操作等相关的全部或部分指令和数据。如图所示,系统200包括一个或多个高速缓冲存储器204、一个或多个主存储器206和一个或多个辅存储器208,每个存储器包括存储器管理电路系统或MMU 210。
系统200可以包括一个或多个传感器220(例如,加速度计、压力传感器、温度传感器等)、一个或多个接口230(例如,无线通信接口、有线通信接口等)、一个或多个人工神经网络(ANN)电路(如图所示的卷积神经网络(CNN)加速器电路240、和可以包括其他功能电路、天线、电源等的其他电路250)、以及主总线系统260。主总线系统260可以包括耦合到系统200的各种组件的一个或多个数据、地址、电源和/或控制总线。系统200还可以包括:附加的总线系统,诸如通信地耦合高速缓冲存储器204和处理核心202的总线系统262、通信地耦合高速缓冲存储器204和主存储器206的总线系统264、通信地耦合主存储器206和处理核心202的总线系统266、以及通信地耦合主存储器206和辅存储器208的总线系统268。
图3是将描述的实施例可以应用于的类型的电子设备或系统300的实施例的功能框图。系统300可以用于例如实现ANN以对传感器数据分类。注意,图2的实施例可以用于实现图3的实施例,并且可以包括片上系统(SoC)。
系统300包括全局存储器302,全局存储器302例如可以用作ANN 303过程或集群以及主机系统304过程或集群的主存储器(参见图1的主存储器206)。全局存储器302包括存储器管理电路系统306和一个或多个共享存储器阵列308。存储器管理电路系统306在操作中采用一个或多个存储器管理例程来分配全局存储器302的区域,诸如将共享存储器阵列308的区域分配给由系统300执行的各种过程,并且控制对全局存储器302的访问,诸如对共享存储器阵列308的区域的访问。
如图所示,ANN 303包括一个或多个数据移动器310、一个或多个存储器桥接器320、一个或多个传感器330和对应传感器接口332、一个或多个卷积加速器引擎340和一个或多个全连接引擎350,其可以以其他传统方式实现和操作以产生分类输出360。如图所示,卷积加速器引擎340包括MAC集群342中的多个乘法累加(MAC)电路。
在操作中,数据移动器310在IO(例如,传感器接口332)、存储器层次结构(例如,全局存储器302、存储器桥320)、卷积加速器340和全连接引擎350之间移动数据流。
在实施例中,卷积加速器引擎340可以包括集群乘法累加(MAC)单元或电路342的阵列,其在操作中实现ANN中的卷积层处理。卷积加速器引擎可以包括用于与单个存储器访问并行地获取多个特征图数据字的行缓冲器。可以使用提供多个读取端口的基于寄存器的内核缓冲器,同时多个多位定点MAC单元或电路在每个时钟周期执行多个MAC操作。可以采用加法器树来对每个内核列的MAC结果求和。
在一些实施例中,系统200或系统300可以包括比图示的更多的组件,可以包括比图示的更少的组件,可以将图示的组件分成单独的组件,可以组合图示的组件等,以及上述操作的各种组合。例如,在一些实施例中,主存储器206和辅存储器208可以组合成单个存储器。在另一示例中,在一些实施例中,可以组合卷积加速器引擎340和全连接引擎350。
卷积层通常进行输入和卷积核之间的卷积运算、非线性激活函数(诸如校正器)和最大池化操作,这些操作通常对计算量的要求最高。实际上,由于要执行的操作数目很多,因此这些操作通常不能一次完成。操作可以分几个阶段开发,并且部分数据可以相应地组织。
要处理的数据量可以使用通道数据分割策略进行划分,并且采用执行时期,以组织处理以将整体操作细分为时间和空间方面的较小组。可以采用流式存储器访问概念。例如,要处理的数据可以沿着三个空间维度在执行时期和通道数据块中被组织,如图4中概念性描述的。数据块可以在考虑通道数目和传入数据的大小的情况下创建。元素可以例如以深度(z)、宽度(x)和高度(y)的顺序写入存储器。可以采用各种参数和定义来指示要在执行时期中处理的数据。从不同数据块产生的部分数据可以被重新组织并且用于后续处理,诸如后续执行时期的处理。
可以采用各种卷积运算,诸如稀释卷积运算(也称为空洞卷积),其中稀释率d确定卷积运算中要考虑的两个值之间的间距。可以采用稀释卷积运算来增加所考虑的感受野。图5概念性地说明了针对各种示例稀释率d的在卷积中要考虑的数据。如图所示,当d为1时,所有数据值被考虑,当d为2时,每隔一个数据值被考虑,当d为3时,每隔两个数据值被考虑。
图6从概念上说明了在由卷积神经网络执行的各种操作(诸如卷积、池化、算术运算等)期间可能出现的可能的死锁和数据丢失情况。当来自前一过程(例如,诸如图3的卷积加速器340等卷积加速器的一个或多个输出)的数据没有及时准备好用作当前过程的输入数据(例如,用作当前过程的卷积加速器的输入或另一卷积加速器的输入)时,可能会发生可能的死锁。如图所示,可以对当前过程应用等待状态,直到数据准备好。
当来自当前过程的数据在后续过程准备好使用数据之前准备好时,可能发生数据丢失情况。如图6所示,在后续过程准备好处理数据之前,可以将数据存储在缓冲器中以防止数据丢失。
图7是说明了在由CNN 700对数据执行时期的处理期间将中间累积结果存储在系统存储器中的示例的概念图。图7的数据流链说明了循环或迭代过程的数据流,其中卷积加速器740的输出作为输入被提供给卷积加速器以用于后续处理回合。数据流链包括分叉,其中卷积加速器740的输出也被提供给加速器框架的其他功能电路790,如图所示提供给加法引擎,然后提供给激活引擎。具有大量通道的特征数据张量通过使用两个流引擎710(参见图3的数据处理程序310)将从卷积加速器引擎740输出的中间累积结果缓冲在系统存储器的软件缓冲器(参见图3的存储器302)中来处理,使得数据准备好在下一处理回合中被输入到卷积加速器。
图8是说明了在由CNN 800对数据执行时期的处理期间将从卷积加速器引擎840输出的中间累加结果存储在可重新配置硬件缓冲器中的示例的概念图。图8的数据流链(类似于图7的数据流链)示出了循环或迭代过程,其中卷积加速器840的输出作为输入被提供给卷积加速器以用于后续处理回合。数据流链包括分叉,其中卷积加速器840的输出也被提供给加速器框架的其他功能电路890,如图所示提供给加法引擎和激活引擎。具有大量通道的特征数据张量通过将中间累积结果缓冲在可重新配置硬件缓冲器870中来处理。可重新配置硬件缓冲器有助于避免在可重新配置硬件缓冲器870中可以分配足够存储空间时需要在系统存储器中缓冲中间结果。在执行时期的处理期间可能需要使用较少的流引擎(这有助于将流引擎用于其他任务)。如图所示,与图7的示例相比,避免使用两个流引擎710/810,其中系统存储器中的软件缓冲器用于存储中间结果,并且通过图8的实施例,在一个时期的处理期间可以使用较少的存储器带宽。因此,使用可重新配置硬件缓冲器来存储中间结果有助于提高处理器吞吐量并且降低功耗。
图9是示出数据流链900中的分叉和联合的概念图。如图所示,输入馈送由卷积加速器引擎940a处理,并且卷积加速器引擎940a的输出被分叉并且被提供(全部或部分)给卷积加速器引擎940b和940c。卷积加速器940b和940c的输出被再次联合(全部或部分)并且作为输入被提供给卷积加速器940d。例如,如果卷积加速器940b和940c的输出的定时在时间上未对准,则链900可能导致与卷积加速器940d的输入相关的并发和死锁问题。
图10是说明数据流链1000中的分叉和联合的概念图,其中使用可重新配置硬件缓冲器1070来缓冲数据流链中的数据,例如直到来自链中的过程的数据准备好与缓冲数据联合。如图所示,输入馈送由卷积加速器引擎940a处理,并且卷积加速器引擎940a的输出被分叉和提供(全部或部分)给卷积加速器引擎940b和940c。卷积加速器940b的输出缓冲在可重新配置硬件缓冲器1070中,然后与卷积加速器940c的输出联合并且作为输入被提供给卷积加速器940d。可重新配置硬件缓冲器有助于避免与卷积加速器940d的输入相关的并发和死锁问题,例如,如果卷积加速器940b的输出在它要加入的卷积加速器940c的输出准备好之前准备好。
在一些实施例中可以采用其他分叉和联合链,并且可重新配置硬件缓冲器可以缓冲链中多个卷积加速器的输出。为了便于说明,图9和图10说明了具有多个卷积加速器引擎的数据流链。可以在数据流链中采用各种不同类型的引擎(例如,加法引擎、激活引擎等、以其各种组合),并且可以执行循环或迭代操作。
图11是包括可重新配置硬件缓冲器1170的卷积加速器框架(CAF)1100的实施例的功能框图。如图所示,卷积加速器框架1100还包括流开关1180、控制接口1182(例如,高级高性能总线(耦合到AHB从设备的AHB))、系统总线接口1184、一个或多个DMA引擎1186(例如,DMA控制器)、一个或多个外部设备接口1188、一个或多个处理模块或电路1190(例如,数据压缩/解压缩模块、池化功能模块、激活功能模块、加法器等)、一个或多个卷积加速器1192和时钟控制电路1194。
流开关1180例如是由多个单向流链路形成的可重新配置单向互连结构。流链接可以被布置为将多位数据流从卷积加速器框架1100的加速器、接口和其他逻辑模块或电路传输到流开关1180,并且从流开关1180传输到卷积加速器框架1100的加速器、接口和其他逻辑模块或电路。
系统总线接口1184提供到包括卷积加速器框架1100的系统的其他电路的接口,诸如主机系统和全局存储器。参见图3的主机系统304和全局存储器302。
DMA引擎1186被布置为为输入数据流、输出数据流或输入和输出数据流提供双向通道。大量数据可以被传入CAF 1100、传出CAF 1100、或者传入和传出CAF 1100。
在一个示例性实施例中,一个或多个DMA引擎1186通过一个输入和一个输出端口连接到流开关1180。DMA引擎1186可以被配置为输入或输出模式。DMA引擎1186可以被配置为将数据打包并且发送到任何总线上可访问的任何地址位置、或其他地址位置。DMA引擎1186还可以附加地或备选地被配置为解包提取数据并且将解包后的数据转换成数据流。
图12和图13是概念图,其用于说明采用可重新配置硬件缓冲器来解决并发问题并且简化时期的数据流链。图12说明了使用两个时期的过程的实现,并且为了方便将参考图11进行描述。如图所示,第一时期(Epoch 1)执行卷积运算(Convolution 1),例如,使用图11的卷积加速器1192之一。第一时期(Epoch 1)然后对卷积运算(Convolution 1)的结果执行激活/校正函数(Activation/Rectification 1),例如使用图11的激活函数模块或电路1190。第二时期(Epoch 2)执行加法运算(Addition 1),其中将卷积运算(Convolution 1)的结果和激活/校正操作(Activation/Rectification 1)的结果作为输入。
在图12的实施例中,由于卷积和激活/校正操作的输出不一定同时准备好,因此执行四个DMA流操作,使得可以存储时期1的输出,直到时期2准备好接收时期1的两个输出。一个DMA输出操作存储卷积运算(Convolution 1)的输出,例如,通过使用DMA 1 1186将结果存储在系统存储器(参见图3的全局存储器302)中。另一DMA输出操作存储激活/校正操作(Activation/Rectification 1)的输出,例如通过使用DMA 2 1186将结果存储在系统存储器(参见图3的全局存储器302)中。操作中的一个DMA检索卷积运算(Convolution 1)的存储输出,例如,通过使用DMA 3 1186从系统存储器(参见图3的全局存储器302)中检索存储的结果。另一操作中的DMA检索激活/校正操作(Activation/Rectification 1)的存储输出,例如,通过使用DMA 4 1186从系统存储器(参见图3的全局存储器302)中检索存储的结果。
如图13所示,在图的最低延迟边上插入可重新配置硬件缓冲器结构(例如,图11的可重新配置硬件缓冲器1170),如两条路径中最短路径上所示,这有助于避免将计算分成两个连续步骤,减少了执行期望操作的周期数以及对额外存储器缓冲器和系统存储器访问的需求。由两个执行时期组成的图12的图在图13的图中被简化为只有一个执行时期,说明了使用缓冲器(诸如可重新配置硬件缓冲器)来打破死锁循环的潜在影响。通过使用可重新配置硬件缓冲器的多个缓冲器通道并且管理数据传输,该概念可以推广到存在多于两条图边的一般情况。
即使对于不同于卷积的运算,如果这些阶段尚未准备好处理部分数据,中间计算产生的部分数据也不能总是传递到后续阶段。这样的数据流可能会产生死锁、饥饿以及一般情况下的并发错误。
可以使用调度方法连同多个小型缓冲结构来解决这样的错误,这些缓冲结构存储来自数据流中的早期过程或电路的部分数据,并且在过程针对数据准备好时将部分数据输出到后续过程或电路。事实上,沿着单个执行时期,不同过程或电路可以利用具有专用缓冲器的优势。因此,可以采用用于不同过程或电路的不同缓冲器来存储、重新组织和读取要由后续过程或电路使用的数据。图14概念性地示出了示例缓冲器组(缓冲器1至n),该缓冲器可以在卷积加速器框架中使用以存储从数据流的早期过程或电路输出的部分数据,以供稍后的过程或电路中使用。
如上所述,在某些情况下,在由操作输出的部分数据被后续操作处理之前,可以采用数据的重新组织或整形。例如,当后续操作对先前操作的输出数据执行稀释卷积时,输出数据会被整形,例如,二次采样。图15概念性地示出了用于存储从数据流的早期操作输出的部分数据的一组示例缓冲器(缓冲器1至n)和用于对数据进行整形以供后期操作中使用的对应整形电路(整形电路1至n)。在实施例中,整形电路可以使用缓冲存储器来实现,缓冲存储器存储部分输出数据,并且控制从缓冲存储器中对数据的读出以对数据进行整形。
CNN架构中的数据组织和操作调度用于促进执行的正确性、以及控制执行的定时性能和关闭。在CNN中,几种结构通常沿着通道维度处理小数据块或数据块中的数据,甚至将这些操作细分为更小的操作,以获取能够加速HW加速器框架的整体性能的合适维度的数据批次。不正确的调度可能会导致在执行中产生并发错误,从而导致结果输出中出现错误,甚至可能导致数据流链停滞并且出现饥饿问题。
特别地,在面向数据流的架构的情况下,在调度和处理中可能需要考虑几个操作(例如,链接、分叉、停滞传播等)。死锁和饥饿问题通常由处理中的循环引起,并且当没有足够的缓冲空间时,可能会导致操作挂起。
使用迭代循环来执行处理、细分数据流通道、将操作分成更小的块并且随后联合部分数据(例如,卷积加速器电路)的电路是可以通过在处理过程中利用卷积加速器框架的可重新配置硬件缓冲器而受益的结构的典型示例。
如上所述,这些问题可以在软件中通过调度要执行的操作来解决。通常所考虑的架构遵循整体方法,并且因此缓冲器维度和管理是先验决定的,并且可能会牺牲架构的灵活性以支持更简单的调度策略。然而,发明人已经意识到,对于单片架构,由于模块化结构的灵活性,在模块化方法的情况下,可以采用可重新配置缓冲结构来解决数据流定时问题。可重新配置缓冲结构也可以被配置为整形数据以供例如稀释卷积中使用,这通常为软件解决方案带来困难的调度问题。
特别地,寻找使用调度程序和固定缓冲器维度的软件解决方案并不总是一项微不足道的任务,并且确定这样的解决方案通常需要大量的时间和计算资源。此外,如果操作序列需要在不同执行时期拆分,这可能会导致更长的执行时间和更多的外部存储器访问,即使没有发生并发问题也是如此。
能够缓解这些问题的硬件结构(诸如可重新配置硬件缓冲器)可以促进改进的数据组织、更短的执行时间、更少的外部存储器访问次数、更容易的数据整形等,同时还可以简化调度设计,并且减少用于执行调度设计的时间和资源。
可重新配置硬件缓冲器可以是一种HW架构,其被配置为接收一个或多个数据流,将数据重新组织成合适的形式,并且以原始格式或在整形操作之后提供数据作为缓冲器的输出。
考虑到不同数目的活动流通道,可以执行整形操作以适应卷积加速器框架的两个组件之间的连接,改变输入数据的形状以使其适应不同计算,并且可选地组织数据以便为后续操作提供可行的流,诸如扩张卷积运算。否则,可以使用镜像操作模式在输出上再现输入,而不改变数据的形状。
在实施例中,多达8个电路(例如,卷积加速器、池化电路、激活电路等)可以耦合到可重新配置缓冲器(例如,通过流开关),可重新配置缓冲器可以具有从第一连接到最后的连接的读/写优先级。例如,多达4个电路可以耦合到可重新配置硬件缓冲器的输入,并且多达4个电路可以耦合到可重新配置硬件缓冲器的输出。电路可以耦合到可重新配置硬件缓冲器的输入和输出两者。以这种方式,例如,如果不同缓冲流同时准备好,则将首先读取与最高优先级(最低索引)相关联的流。可以采用用作多FIFO结构的存储器模块或电路来存储等待读取的数据,而可以采用计数器和逻辑系统来再现输入或方便地对其进行整形。
图16示出了可以在卷积加速器框架(诸如图11的加速器框架1100)中采用的可重新配置硬件缓冲器单元或电路1600的实施例。加速器框架1100本身可以在系统中用作CNN加速器,诸如图2的CNN加速器240。
如图所示,可重新配置硬件缓冲器1600包括可重新配置地组织为多个输入缓冲器1604的缓冲器1602、输入计数器1606、可重新配置地组织以存储一个或多个数据流1610的镜像缓冲器1608、图示为多个输出计数器1612的输出计数电路系统、可重新配置地组织成一个或多个子RAM 1616的输出RAM 1614、输出接口1618和控制电路系统1620。镜像缓冲器1608可以使用一组一个或多个支持缓冲器来实现。如图所示,控制电路系统1620包括处理核心1622和控制寄存器1624以存储控制信息(例如,用于基于例如与执行时期相关联的调度信息来配置缓冲器1602、镜像缓冲器1608和RAM的信息)。为方便起见,将参考图11的加速器框架1100来描述图16的可重新配置硬件缓冲器1600的操作的示例。
输入缓冲器1604通过流开关1180接收一个或多个数据通道的一个或多个输入数据流,例如从加速器框架1100的其他组件的输出,诸如从卷积加速器1192的输出。输入计数器或寄存器1606可以用于跟踪传入样本的数目和输入数据格式(例如,以供镜像操作模式下使用)。在实施例中,输入缓冲器1604和输入计数器1606可以组合成输入接口,该输入接口也可以接收控制信息,诸如与执行时期相关联的配置和定时信息。
可重新配置硬件缓冲器1600的资源可以被分配给操作的数据通道,该操作的数据将被存储以供后续操作使用。数据通道的数据存储在分配给操作的数据通道的具有确定大小的输入缓冲器1604中。数据从输入缓冲器传送到镜像缓冲器1608中,并且随后可以传送到分配给数据通道的具有确定大小的RAM 1614的子RAM 1616中。一个或多个输入计数器1606和一个或多个输出计数器1612也可以被分配给数据信道。注意,一些确定大小可以是固定的,而其他确定大小可以变化。例如,输入缓冲器的大小可以是固定的,而镜像缓冲器的字大小和子RAM的大小(例如,子RAM的宽度)可以变化。
存储在输出计数器1612中的计数和整形信息可以被输出接口1618用来经由接口1618来控制来自镜像缓冲器或子RAM 1614或这两者的数据输出。接口1618可以被控制以提供例如适当时间、镜像输出或执行数据的稀释以供后续操作使用,例如,在执行稀释的情况下的后续空洞卷积运算。计数器1606、1612可以根据要考虑的最大帧尺寸来确定尺寸。例如,对于具有232个样本的原始帧,可以使用32位计数器,或者对于光栅扫描帧,可以使用216×216
在实施例中,可重新配置硬件缓冲器可以被配置为具有多达4个输入流或数据通道、多达4个输出流或数据通道,并且可以包括96×256位存储器和32位计数器。
将参考图16-20描述示例镜像操作,其中由可重新配置硬件缓冲器提供的输出对输入进行镜像。
图17是用于说明镜像缓冲器1608如何根据与操作相关联的数据通道的维度来存储数据通道的数据的示例的概念图。假定存储器字大小为12字节,镜像缓冲器在将数据写入存储器之前适配输入数据。如图所示,可重新配置硬件缓冲器1600可以被配置为存储单个通道输入的数据,对应于8个数据位;可重新配置硬件缓冲器1600可以被配置为存储两个输入通道的数据,对应于16个数据位。可重新配置硬件缓冲器1600可以被配置为存储三个输入通道的数据,对应于24个数据位。如果帧在完成向量(例如,96位向量)的写入之前结束,则字中的任何剩余位都可以用零值填充。图17中的箭头指示将单个字从镜像缓冲器传输到分配给通道的子RAM。
图18是用于说明存储在镜像缓冲器(mirror i)中的数据以及分配给与操作相关联的数据通道的输出计数器(outcnt i)和子RAM(subRAM i)的概念图。当从镜像缓冲器中读取与操作相关联的有效数据时,与镜像缓冲器相关联的输出计数器递增1以考虑新数据。即使当数据没有从镜像缓冲器传送到与数据通道相关联的子RAM时,输出计数器也可以递增。
可重新配置硬件缓冲器1600可以考虑与镜像操作相关联的传入数据的线类型。例如,在原始数据线类型的情况下,具有32位的输出计数器1612可以使用所有位作为单个计数器。当来自与通道相关联的输入缓冲器的新数据存储在与通道相关联的镜像缓冲器中时,计数器的值会递增,如下所示:
计数器值=a31a30a29…a2a1a0+1
在光栅或单光栅数据线类型的情况下,寄存器的16位可以用于跟踪传入的列,并且寄存器的16位可以用于跟踪传入的行。当来自与通道相关联的输入缓冲器的新数据在输入行结束之前存储在与通道相关联的镜像缓冲器中时,计数器的值会递增,如下所示:
计数器值=r15r14r13…r2r1r0c15c14c13…c2c1c0+1
当来自与通道相关联的输入缓冲器的新数据存储在与通道相关联的镜像缓冲器中并且输入行结束时,计数器的值会递增,如下所示:
计数器值=r15r14r13…r2r1r0c15c14c13…c2c1c0+216
图19是用于说明先入先出(FIFO)缓冲器的逻辑形式的子RAM的实施例的概念图,其有助于基于计数器和整形信息来生成适当的输出。
图20是用于说明写入和读取输出接口的数据的示例的概念图,该输出接口提供与后续操作相关联的输出通道的数据,假定字大小为十二字节。例如,当数据输出通道是输入通道的镜像输出时,可以采用图20的示例。如图所示,当可重新配置硬件缓冲器1600被配置为输出单个通道的数据(对应于8个数据位)时,可以为该通道分配具有第一大小的输出子RAM;当可重新配置硬件缓冲器1600被配置为输出两个输入通道的数据(对应于16个数据位)时,可以为该通道分配;当可重新配置硬件缓冲器1600被配置为输出三个输入通道的数据(对应于24个数据位)时,可以为该通道分配。
注意,与一个或多个后续操作相关联的多于一个输出通道可以被分配给输入操作,例如,当一个后续操作将使用镜像数据而另一后续操作将使用来自其数据正在存储的操作的稀释数据时。
图21是用于说明重新组织存储在镜像缓冲器和一个或多个输出子RAM中的数据以提供整形输出(诸如已经应用稀释因子的输出)的示例的概念图。这样的输出可以被提供给例如执行稀释卷积运算的卷积加速器电路1192。可以使用稀释因子d来重新组织从镜像和子RAM缓冲结构出来的数据,以便通过从结构中取出正确的数据并且忽略不需要参与卷积运算的其他数据来获取适合特定应用的输出流。对于图21所示的示例,稀释因子为2。
图22示出了使用具有可重新配置硬件缓冲器的卷积加速器框架来处理CNN的执行时期的方法2200的实施例,其实施例可以被例如图2的系统200或图3的系统300采用。为方便起见,将参考图11的卷积加速器框架1100和图16的可重新配置硬件缓冲器1600来描述图22的方法2200。
方法2200开始于2202。方法2200可以例如响应于处理从主机系统(参见图3的主机系统304)接收的CNN的执行时期的请求而开始。方法2200从2202进行到2204。
在2204,方法2200解析与执行时期相关联的控制信息以生成配置信息以将卷积加速器框架1100的资源分配给执行时期,包括将可重新配置硬件缓冲器1170的资源分配给执行时期的数据通道。配置信息可以包括:数据流链,其中数据流链的各种操作被分配给卷积加速器框架1100的各个组件,诸如分配给一个或多个卷积加速器1192或其他功能电路1190;配置信息,用于将流切换1180配置为在执行各种操作的各个组件与可重新配置硬件缓冲器之间路由数据流链的数据流或通道;以及配置信息,用于将可重新配置硬件缓冲器1170、1600的资源分配给数据流或通道以临时缓冲或存储由数据流链的操作输出的数据以供数据流链的操作随后使用;以及数据流或通道的任何整形信息。方法2200从2204进行到2206。
在2206,方法2200基于配置信息将卷积加速器框架1100的资源分配给执行时期。对于可重新配置硬件缓冲器1170、1600,配置信息可以包括:输入通道的数目;对于一个或多个输入数据通道中的每个,与输入数据通道相关联的缓冲器索引;分配给输入数据通道的输入缓冲器1604的大小;镜像缓冲器的字大小;分配给输入数据通道的RAM的大小(例如,子RAM 1614的数目);与输入数据通道相关联的一个或多个输出数据通道;以及与输出数据通道相关的任何整形和信息。大小信息可以基于例如要由可重新配置硬件缓冲器1170、1600在执行时期的处理期间临时存储的数据流链的数据通道的数目,例如如上文关于图16至21讨论的。可以使用默认和固定大小。例如,在一些实施例中,分配给数据通道的输入缓冲器可以具有固定大小。方法2200从2206进行到2208。
在2208,方法2200使用分配的资源处理执行时期。例如,参考图11、图13和图16,加速器框架1100的卷积加速器1192可以对输入数据执行卷积,卷积的结果可以被提供给激活电路1190并且存储在可重新配置硬件缓冲器中1170,所存储的结果和激活电路的输出被提供给加速器框架1100的加法电路1190。方法2200从2208进行到2210。
在2210,方法2200可选地执行其他处理,诸如将执行时期的结果返回给请求主机、与执行时期相关联的其他处理、指示加速器框架1100可以处理另一执行时期的处理等。
使用具有可重新配置硬件缓冲器的卷积加速器框架处理执行时期的方法的实施例可以包含图22中未示出的附加动作,可以不包含图22所示的所有动作,可以以各种顺序执行图22所示的动作,并且可以在各个方面进行修改。例如,当不需要从控制信息中解析配置信息时,方法2200可以省略动作2204。在另一示例中,方法2200可以被修改为使用相同的配置信息处理多个时期,诸如用于迭代过程,或者被修改为将一个时期的输出存储在可重新配置硬件缓冲器中以供后续时期中使用。
一些实施例可以采用计算机程序产品的形式或包括计算机程序产品。例如,根据一个实施例,提供了一种包括计算机程序的计算机可读介质,该计算机程序被适配为引起一个或多个处理设备执行上述一个或多个方法或功能。介质可以是物理存储介质,例如只读存储器(ROM)芯片;或磁盘,例如数字多功能盘(DVD-ROM)、光盘(CD-ROM)、硬盘、存储器、网络或由适当驱动器或通过适当连接读取的便携式媒体物品,包括编码在一个或多个条码或其他相关代码中,该代码存储在一个或多个这样的计算机可读介质上并且由适当读取器设备可读取。
此外,在一些实施例中,一些或所有方法和/或功能可以以其他方式实现或提供,诸如至少部分以固件和/或硬件,包括但不限于一个或多个专用集成电路(ASIC)、数字信号处理器、离散电路系统、逻辑门、标准集成电路、控制器(例如,通过执行适当指令,并且包括微控制器和/或嵌入式控制器)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)等、以及采用RFID技术的器件及其各种组合。
在前述描述中,阐述了某些特定细节以提供对各种公开实施例的透彻理解。然而,相关领域的技术人员将认识到,可以在没有这些具体细节中的一个或多个的情况下或者利用其他方法、组件、材料等来实践实施例。在其他情况下,与电子和计算系统相关联的公知的结构(包括客户端和服务器计算系统以及网络)没有被详细示出或描述以避免不必要地模糊实施例的描述。
除非上下文另有要求,否则在整个说明书和随后的权利要求中,词语“包括(comprise)”及其变体(诸如“包括(comprises)”和“包括(comprising)”)应当被解释为开放的、包括性的意义,例如“包括,但不限于。”
在整个说明书中对“一个实施例”或“实施例”及其变体的引用表示结合该实施例描述的特定特征、结构或特性被包括在至少一个实施例中。因此,在本说明书各处的短语“在一个实施例中”或“在实施例中”的出现不一定都指代相同的实施例。此外,特定特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合。
在本说明书和所附权利要求书中使用的单数形式“一(a)”、“一个(an)”和“该(the)”包括复数形式,除非内容和上下文另有明确规定。还应当注意,连接术语“和”和“或”通常以最广泛的含义使用,以包括“和/或”,除非内容和上下文明确规定了包括性或排他性(视情况而定)。此外,“和”和“或”的组合在本文中引用为“和/或”时旨在涵盖包括所有相关项目或想法的实施例以及包括少于所有相关项目或想法的一个或多个其他备选实施例。
本文中提供的本公开的标题和摘要仅为方便起见,并不限制或解释实施例的范围或含义。
可以组合上述各种实施例以提供另外的实施例。如果需要采用各种专利、申请和出版物的概念来提供另外的实施例,则可以修改实施例的方面。
根据以上详细描述,可以对实施例进行这些和其他改变。一般而言,在以下权利要求中,所使用的术语不应当被解释为将权利要求限于说明书和权利要求中公开的特定实施例,而应当被解释为包括所有可能的实施例以及这样的权利要求有权享有的等效物的全部范围。因此,权利要求不受本公开的限制。

Claims (31)

1.一种卷积加速器框架CAF,包括:
多个处理电路,包括一个或多个卷积加速器;
可重新配置硬件缓冲器,可配置为存储可变数目的输入数据通道的数据,所述可重新配置硬件缓冲器具有:
存储器;以及
控制电路系统;以及
流开关,被耦合到所述多个处理电路和所述可重新配置硬件缓冲器,其中在操作中,
所述可变数目的输入数据通道的数目与执行时期相关联;
在所述执行时期的处理期间,所述流开关在所述多个处理电路中的处理电路与所述可重新配置硬件缓冲器之间对所述可变数目的输入数据通道的数据进行流传输;以及
所述可重新配置硬件缓冲器的所述控制电路系统将所述存储器配置为在所述执行时期的处理期间存储所述可变数目的输入数据通道的数据,所述配置包括将所述存储器的一部分分配给所述可变数目的输入数据通道中的每个输入数据通道。
2.根据权利要求1所述的卷积加速器框架,其中所述存储器包括输入缓冲存储器、镜像缓冲器和随机存取存储器RAM,并且将所述存储器的一部分分配给所述可变数目的输入数据通道中的输入数据通道包括:确定用于分配给所述输入数据通道的所述输入缓冲存储器的输入缓冲器、以及确定用于分配给所述输入数据通道的所述RAM的子RAM的大小。
3.根据权利要求2所述的卷积加速器框架,其中将所述存储器的一部分分配给所述输入数据通道包括确定所述镜像缓冲器的字大小。
4.根据权利要求3所述的卷积加速器框架,其中镜像缓冲器的所述字大小是在所述执行时期的处理期间存储在所述可重新配置硬件缓冲器中的输入数据通道的所述可变数目的函数。
5.根据权利要求2所述的卷积加速器框架,其中在操作中,所述子RAM被配置为先进先出存储器。
6.根据权利要求1所述的卷积加速器框架,其中所述可重新配置硬件缓冲器的所述控制电路系统在操作中在第一执行时期的处理与第二执行时期的处理之间重新配置所述存储器。
7.根据权利要求1所述的卷积加速器框架,其中所述可变数目是数字集合{0,1,2,3,4}的元素。
8.根据权利要求1所述的卷积加速器框架,其中所述可重新配置硬件缓冲器包括输出接口,并且所述控制电路系统在操作中将所述输出接口配置为提供可变数目的输出数据通道。
9.根据权利要求8所述的卷积加速器框架,其中在操作中,将所述输出接口配置为提供所述可变数目的输出数据通道中的输出数据通道包括:提供所述可变数目的输入数据通道中的输入数据通道的镜像输出。
10.根据权利要求8所述的卷积加速器框架,其中在操作中,将所述输出接口配置为提供所述可变数目的输出数据通道中的输出数据通道包括:提供所述可变数目的输入数据通道中的输入数据通道的整形输出。
11.根据权利要求10所述的卷积加速器框架,其中在操作中,所述整形输出经由所述流开关作为输入被提供给所述一个或多个卷积加速器中的卷积加速器,其中所述卷积加速器在操作中使用所述整形输出执行所述执行时期的稀释卷积运算。
12.根据权利要求8所述的卷积加速器框架,其中在操作中,所述输入数据通道的可变数目等于所述输出数据通道的可变数目。
13.根据权利要求8所述的卷积加速器框架,其中在操作中,所述输入数据通道的可变数目小于所述输出数据通道的可变数目。
14.根据权利要求8所述的卷积加速器框架,其中所述控制电路系统包括控制逻辑和多个计数器,并且在操作中,所述控制逻辑使用所述计数器来跟踪所述可变数目的输入数据通道的数据在所述存储器中的存储,以及控制存储数据到所述可变数目的输出数据通道的提供。
15.一种用于实现神经网络NN的系统,所述系统包括:
主机处理器;
主存储器;以及
加速器框架AF,所述加速器框架包括:
多个处理电路,包括一个或多个加速器;
可重新配置硬件缓冲器,可配置为存储可变数目的输入数据通道的数据,所述可重新配置硬件缓冲器具有:
存储器;以及
控制电路系统;以及
流开关,被耦合到所述多个处理电路和所述可重新配置硬件缓冲器,其中在操作中,
所述可变数目的输入数据通道的数目与所述NN的执行时期相关联;
在所述执行时期的处理期间,所述流开关在所述多个处理电路中的处理电路与所述可重新配置硬件缓冲器之间对所述可变数目的输入数据通道的数据进行流传输;以及
所述可重新配置硬件缓冲器的所述控制电路系统将所述可重新配置硬件缓冲器的所述存储器配置为:在所述执行时期的处理期间存储所述可变数目的输入数据通道的数据,所述配置包括将所述可重新配置硬件缓冲器的所述存储器的一部分分配给所述可变数目的输入数据通道中的每个输入数据通道。
16.根据权利要求15所述的系统,其中所述可重新配置硬件缓冲器的所述存储器包括输入缓冲存储器、镜像缓冲器和随机存取存储器RAM,并且将所述可重新配置硬件缓冲器的所述存储器的一部分分配给所述可变数目的输入数据通道中的输入数据通道包括:确定用于分配给所述输入数据通道的所述输入缓冲存储器的输入缓冲器、确定所述镜像缓冲器的字大小、以及确定用于分配给所述输入数据通道的所述RAM的子RAM的大小。
17.根据权利要求16所述的系统,其中镜像缓冲器的所述大小是在所述执行时期的处理期间存储在所述可重新配置硬件缓冲器中的输入数据通道的所述可变数目的函数。
18.根据权利要求15所述的系统,其中所述可重新配置硬件缓冲器包括输出接口,并且所述控制电路系统在操作中将所述输出接口配置为提供可变数目的输出数据通道。
19.根据权利要求18所述的系统,其中在操作中,将所述输出接口配置为提供所述可变数目的输出数据通道中的输出数据通道包括:提供所述可变数目的输入数据通道中的输入数据通道的整形输出。
20.根据权利要求15所述的系统,包括集成电路,所述集成电路包括所述主机处理器、所述主存储器和所述加速器框架。
21.一种方法,包括:
使用卷积加速器框架来处理卷积神经网络的执行时期,所述卷积加速器框架具有多个处理电路、流开关和可重新配置硬件缓冲器,所述执行时期的所述处理包括:
配置所述卷积加速器框架的所述可重新配置硬件缓冲器的可变数目的输入数据通道,所述可变数目的输入数据通道的数目与所述执行时期相关联,所述配置包括将所述可重新配置硬件缓冲器的存储器的部分分配给所述可变数目的输入数据通道中的每个输入数据通道;
经由所述流开关在所述多个处理电路中的处理电路与所述可重新配置硬件缓冲器之间对所述可变数目的输入数据通道的数据进行流传输;以及
基于所述存储器的部分到所述可变数目的输入数据通道的所述分配,将所述可变数目的输入数据通道的数据存储在所述可重新配置硬件缓冲器的所述存储器中。
22.根据权利要求21所述的方法,其中所述存储器包括输入缓冲存储器、镜像缓冲器和随机存取存储器RAM,并且将所述存储器的一部分分配给所述可变数目的输入数据通道中的输入数据通道包括:确定用于分配给所述输入数据通道的所述输入缓冲存储器的输入缓冲器、确定所述镜像缓冲器的字大小、以及确定用于分配给所述输入数据通道的所述RAM的子RAM的大小。
23.根据权利要求21所述的方法,包括在第一执行时期的处理与第二执行时期的处理之间重新配置所述可重新配置硬件缓冲器的所述存储器。
24.根据权利要求21所述的方法,其中所述可重新配置硬件缓冲器包括输出接口,并且所述方法包括将所述输出接口配置为提供可变数目的输出数据通道。
25.根据权利要求24所述的方法,其中将所述输出接口配置为提供所述可变数目的输出数据通道中的输出数据通道包括:提供所述可变数目的输入数据通道中的输入数据通道的整形输出。
26.根据权利要求24所述的方法,包括使用所述可重新配置硬件缓冲器的计数器来跟踪所述可变数目的输入数据通道的数据在所述存储器中的存储,以及控制存储数据到所述可变数目的输出数据通道的提供。
27.一种非暂态计算机可读介质,具有内容,所述内容引起卷积加速器框架的一个或多个硬件处理器执行方法,所述方法包括:
处理卷积神经网络的执行时期,所述执行时期的所述处理包括:
配置所述卷积加速器框架的可重新配置硬件缓冲器的可变数目的输入数据通道,所述可变数目的输入数据通道的数目与所述执行时期相关联,所述配置包括将所述可重新配置硬件缓冲器的存储器的一部分分配给所述可变数目的输入数据通道中的每个输入数据通道;
经由所述卷积加速器框架的流开关,在所述多个处理电路中的处理电路与所述可重新配置硬件缓冲器之间对所述可变数目的输入数据通道的数据进行流传输;以及
基于所述存储器的部分到所述可变数目的输入数据通道的所述分配,将所述可变数目的输入数据通道的数据存储在所述可重新配置硬件缓冲器的所述存储器中。
28.根据权利要求27所述的非暂态计算机可读介质,其中所述存储器包括输入缓冲存储器、镜像缓冲器和随机存取存储器RAM,并且将所述存储器的一部分分配给所述可变数目的输入数据通道中的输入数据通道包括:确定用于分配给所述输入数据通道的所述输入缓冲存储器的输入缓冲器、确定镜像缓冲器的字大小、以及确定用于分配给所述输入数据通道的所述RAM的子RAM的大小。
29.根据权利要求27所述的非暂态计算机可读介质,其中所述可重新配置硬件缓冲器包括输出接口,并且所述方法包括将所述输出接口配置为提供可变数目的输出数据通道。
30.根据权利要求27所述的非暂态计算机可读介质,其中将所述输出接口配置为提供所述可变数目的输出数据通道中的输出数据通道包括:提供所述可变数目的输入数据通道中的输入数据通道的整形输出。
31.根据权利要求27所述的非暂态计算机可读介质,其中所述内容包括由所述卷积加速器框架的所述一个或多个处理器执行的指令。
CN202111152304.6A 2020-09-30 2021-09-29 神经网络加速器框架中的可重新配置硬件缓冲器 Pending CN114330638A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/039,653 US20220101086A1 (en) 2020-09-30 2020-09-30 Reconfigurable hardware buffer in a neural networks accelerator framework
US17/039,653 2020-09-30

Publications (1)

Publication Number Publication Date
CN114330638A true CN114330638A (zh) 2022-04-12

Family

ID=77316873

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111152304.6A Pending CN114330638A (zh) 2020-09-30 2021-09-29 神经网络加速器框架中的可重新配置硬件缓冲器

Country Status (3)

Country Link
US (1) US20220101086A1 (zh)
EP (1) EP3979140A1 (zh)
CN (1) CN114330638A (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11604751B1 (en) * 2021-05-10 2023-03-14 Xilinx, Inc. Optimizing hardware design throughput by latency aware balancing of re-convergent paths
US11954331B2 (en) * 2021-10-07 2024-04-09 International Business Machines Corporation Storage system workload scheduling for deduplication
CN116861973B (zh) * 2023-09-05 2023-12-15 深圳比特微电子科技有限公司 用于卷积运算的改进的电路、芯片、设备及方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6678813B1 (en) * 1999-10-28 2004-01-13 Hewlett-Packard Development Company, L.P. Dynamically adaptive buffer mechanism
US7769792B1 (en) * 2006-02-10 2010-08-03 Google Inc. Low overhead thread synchronization system and method for garbage collecting stale data in a document repository without interrupting concurrent querying
US8375188B1 (en) * 2007-08-08 2013-02-12 Symantec Corporation Techniques for epoch pipelining
US20090177871A1 (en) * 2008-01-08 2009-07-09 Von Praun Christoph Architectural support for software thread-level speculation
US9804888B2 (en) * 2013-03-15 2017-10-31 Oracle International Corporation System and method for implementing constrained data-driven parallelism
US9652262B2 (en) * 2014-10-09 2017-05-16 The Regents Of The University Of Michigan Operation parameter control based upon queued instruction characteristics
JP6635265B2 (ja) * 2016-07-29 2020-01-22 株式会社デンソーアイティーラボラトリ 予測装置、予測方法および予測プログラム
US10643150B2 (en) * 2016-10-11 2020-05-05 International Business Machines Corporation Parameter version vectors used for deterministic replay of distributed execution of workload computations
CN108269224B (zh) * 2017-01-04 2022-04-01 意法半导体股份有限公司 可重新配置的互连
US20180189641A1 (en) * 2017-01-04 2018-07-05 Stmicroelectronics S.R.L. Hardware accelerator engine
US10445234B2 (en) * 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US11687762B2 (en) * 2018-02-27 2023-06-27 Stmicroelectronics S.R.L. Acceleration unit for a deep learning engine
US11200186B2 (en) * 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
CN112437930A (zh) * 2018-07-12 2021-03-02 华为技术有限公司 以熟练的推理速度和功耗,生成神经网络的压缩表示
US11150960B2 (en) * 2019-03-28 2021-10-19 Amazon Technologies, Inc. Distributed application allocation and communication
US11243772B2 (en) * 2019-05-16 2022-02-08 Qualcomm Incorporated Efficient load value prediction
US11222092B2 (en) * 2019-07-16 2022-01-11 Facebook Technologies, Llc Optimization for deconvolution
US10733512B1 (en) * 2019-12-17 2020-08-04 SparkCognition, Inc. Cooperative use of a genetic algorithm and an optimization trainer for autoencoder generation
US11586601B2 (en) * 2020-02-05 2023-02-21 Alibaba Group Holding Limited Apparatus and method for representation of a sparse matrix in a neural network
US11593609B2 (en) * 2020-02-18 2023-02-28 Stmicroelectronics S.R.L. Vector quantization decoding hardware unit for real-time dynamic decompression for parameters of neural networks
US11515883B2 (en) * 2020-11-20 2022-11-29 AyDeeKay LLC Configuration of ADC data rates across multiple physical channels

Also Published As

Publication number Publication date
US20220101086A1 (en) 2022-03-31
EP3979140A1 (en) 2022-04-06

Similar Documents

Publication Publication Date Title
US10726177B2 (en) Reconfigurable interconnect
CN210428520U (zh) 用于深度学习加速的集成电路
US11227086B2 (en) Reconfigurable interconnect
CN110197111B (zh) 用于深度学习引擎的加速单元
US11586907B2 (en) Arithmetic unit for deep learning acceleration
EP3346423B1 (en) Deep convolutional network heterogeneous architecture system and device
CN114330638A (zh) 神经网络加速器框架中的可重新配置硬件缓冲器
EP3557485A1 (en) Method for accelerating operations and accelerator apparatus
US7447720B2 (en) Method for finding global extrema of a set of bytes distributed across an array of parallel processing elements
EP3557425A1 (en) Accelerator and system for accelerating operations
US11551028B2 (en) Structured weight based sparsity in an artificial neural network
US20180089117A1 (en) Reconfigurable fabric accessing external memory
EP3346425A1 (en) Hardware accelerator engine and method
EP3346427B1 (en) Configurable accelerator framework, system and method
US20180181503A1 (en) Data flow computation using fifos
US10564929B2 (en) Communication between dataflow processing units and memories
US11567778B2 (en) Neural network operation reordering for parallel execution
US20200356809A1 (en) Flexible pipelined backpropagation
Huang et al. IECA: An in-execution configuration CNN accelerator with 30.55 GOPS/mm² area efficiency
US11676068B1 (en) Method, product, and apparatus for a machine learning process leveraging input sparsity on a pixel by pixel basis
US20220075597A1 (en) Multi-die dot-product engine to provision large scale machine learning inference applications
US20210110243A1 (en) Deep learning accelerator system interface

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