CN112074847A - 拆分用于在神经网络处理器中处理的输入数据 - Google Patents

拆分用于在神经网络处理器中处理的输入数据 Download PDF

Info

Publication number
CN112074847A
CN112074847A CN201980029729.2A CN201980029729A CN112074847A CN 112074847 A CN112074847 A CN 112074847A CN 201980029729 A CN201980029729 A CN 201980029729A CN 112074847 A CN112074847 A CN 112074847A
Authority
CN
China
Prior art keywords
neural
data
input data
circuit
work
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
CN201980029729.2A
Other languages
English (en)
Inventor
C·L·米尔斯
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.)
Apple Inc
Original Assignee
Apple 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 Apple Inc filed Critical Apple Inc
Publication of CN112074847A publication Critical patent/CN112074847A/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/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/02Computing arrangements based on specific mathematical models using fuzzy logic
    • G06N7/04Physical realisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Neurology (AREA)
  • Automation & Control Theory (AREA)
  • Fuzzy Systems (AREA)
  • Algebra (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)

Abstract

本公开的实施方案涉及将输入数据拆分成更小的单元以加载到用于执行神经网络操作的神经处理器电路中的数据缓冲器和神经引擎中。将大型的输入数据拆分成切片,并且将每个切片再次拆分成图块。将该图块从外部源上传到位于神经处理器电路内部但位于神经引擎外部的数据缓冲器。将每个图块再次拆分成工作单元,该工作单元的尺寸被设定成用于存储在每个神经引擎内的输入缓冲电路中。存储在该数据缓冲器和该输入缓冲电路中的输入数据被神经引擎重新使用以减少输入数据的重新抓取。拆分该输入数据的操作是在神经处理器电路的各种部件处在这些部件中设置的光栅器的管理下执行的。

Description

拆分用于在神经网络处理器中处理的输入数据
背景技术
1.技术领域
本公开涉及用于执行神经网络操作的电路,并且更具体地涉及用于在神经网络处理器处处理的输入数据的光栅化。
2.相关技术描述
人工神经网络(ANN)是使用连接节点的集合来处理输入数据的计算系统或模型。ANN通常被组织成层,其中不同的层对其输入执行不同类型的转换。ANN的扩展或变体诸如卷积神经网络(CNN)、递归神经网络(RNN)和深度信念网络(DBN)已受到大量关注。这些计算系统或模型通常涉及广泛的计算操作,包括相乘和累加。例如,CNN是一类主要使用输入数据和内核数据之间的卷积的机器学习技术,卷积可分解为相乘和累加操作。
根据输入数据的类型和待执行的操作,这些机器学习系统或模型可被不同地配置。此类变化的配置将包括例如预处理操作、输入数据中的通道数量、待使用的内核数据、待应用于卷积结果的非线性函数以及各种后处理操作的应用。使用中央处理单元(CPU)及其主存储器来实例化和执行各种配置的机器学习系统或模型相对容易,因为此类系统或模型仅通过更新代码即可实例化。然而,仅依赖于CPU进行这些机器学习系统或模型的各种操作将消耗中央处理单元(CPU)的大量带宽以及增加总体功率消耗。
发明内容
实施方案涉及神经处理器电路,该神经处理器电路具有设置在不同部件处的光栅器电路以协调操作并跟踪操作。该神经处理器电路可包括数据读取器、数据缓冲器和神经引擎。该数据读取器包括光栅器电路,该光栅器电路指示该数据读取器从该神经处理器电路外部的源读取输入数据的片段。该数据缓冲器存储该输入数据的所接收的片段。该数据缓冲器包括生成和发送工作单元的另一个光栅器电路。该工作单元中的每个工作单元对应于存储在该数据缓冲器中的该输入数据片段的一部分。该神经引擎接收该工作单元并基于使用对应内核对工作单元的一部分执行的乘法累加操作来生成输出值。
在一个或多个实施方案中,该神经引擎中的每个神经引擎包括附加光栅器电路,该附加光栅器电路指示该神经引擎中的每个神经引擎使该工作单元的在不同周期要与该内核相乘的部分移位。
附图说明
图1是根据实施方案的电子设备的高级图。
图2是示出根据一个实施方案的电子设备中的部件的框图。
图3是示出根据一个实施方案的神经处理器电路的框图。
图4是根据一个实施方案的神经处理器电路中的神经引擎的框图。
图5是示出根据一个实施方案的用于在神经处理器电路处处理输入数据的回路的概念图。
图6是示出根据一个实施方案的将输入数据分段成切片、图块和工作单元的概念图。
图7是示出根据一个实施方案的神经处理器电路的部件中的光栅器的编程的图。
图8是示出根据一个实施方案的在神经处理器电路中处理输入数据的方法的流程图。
仅仅出于示例目的,附图描绘以及详细说明描述各种非限定性实施方案。
具体实施方式
现在将详细地参考实施方案,这些实施方案的示例在附图中示出。下面的详细描述中示出许多具体细节,以便提供对各种所描述的实施方案的充分理解。然而,可以在没有这些具体细节的情况下实施所述实施方案。在其他情况下,没有详细地描述众所周知的方法、过程、部件、电路和网络,从而不会不必要地使实施方案的各个方面晦涩难懂。
本公开的实施方案涉及将输入数据拆分成更小的数据单元以加载到用于执行神经网络操作的神经处理器电路中的数据缓冲器和神经引擎中。将大型的输入数据拆分成切片,并且将每个切片再次拆分成图块。将该图块从外部源上传到位于神经处理器电路内部但位于神经引擎外部的数据缓冲器。将每个切片再次拆分成工作单元,该工作单元的尺寸被设定成用于存储在每个神经引擎内的输入缓冲电路中。存储在该数据缓冲器和该输入缓冲电路中的输入数据被神经引擎重新使用以减少输入数据的重新抓取。拆分该输入数据的操作是在神经处理器电路的各种部件处在这些部件中设置的光栅器的管理下执行的。
示例性电子设备
本文描述了电子设备、此类设备的用户界面和使用此类设备的相关过程的实施方案。在一些实施方案中,该设备为还包含其他功能诸如个人数字助理(PDA)和/或音乐播放器功能的便携式通信设备,诸如移动电话。便携式多功能设备的示例性实施方案包括但不限于来自Apple Inc.(Cupertino,California)的
Figure BDA0002755876080000031
设备、iPod
Figure BDA0002755876080000032
设备、Apple
Figure BDA0002755876080000033
设备和
Figure BDA0002755876080000034
设备。可选地使用其他便携式电子设备,诸如可穿戴设备、膝上型电脑或平板计算机。在一些实施方案中,该设备不是便携式通信设备,而是台式计算机或不是为便携式使用而设计的其他计算设备。在一些实施方案中,所公开的电子设备可包括触敏表面(例如,触摸屏显示器和/或触摸板)。下文结合图1描述的示例电子设备(例如,设备100)可包括用于接收用户输入的触敏表面。电子设备还可包括一个或多个其他物理用户接口设备,诸如物理键盘、鼠标和/或操纵杆。
图1是根据一个实施方案的电子设备100的高级图。设备100可包括一个或多个物理按钮,诸如“home”按钮或菜单按钮104。菜单按钮104例如用于导航到在设备100上执行的一组应用程序中的任何应用程序。在一些实施方案中,菜单按钮104包括识别菜单按钮104上的指纹的指纹传感器。指纹传感器能够被用来确定菜单按钮104上的手指是否具有与为解锁设备100存储的指纹匹配的指纹。另选地,在一些实施方案中,菜单按钮104被实现为触摸屏上显示的图形用户界面(GUI)中的软键。
在一些实施方案中,设备100包括触摸屏150、菜单按钮104、用于使设备开/关机和用于锁定设备的下压按钮106、音量调节按钮108、订户身份模块(SIM)卡槽110、耳麦插孔112和对接/充电外部端口124。下压按钮106可被用于通过压下该按钮并将该按钮保持在压下状态达预定义的时间间隔来对设备进行开关机;通过压下该按钮并在该预定义的时间间隔过去之前释放该按钮来锁定设备;和/或对设备进行解锁或发起解锁过程。在另选的实施方案中,设备100还通过麦克风113接受用于激活或去激活某些功能的语音输入。设备100包括各种部件,包括但不限于存储器(可包括一个或多个计算机可读存储介质)、存储器控制器、一个或多个中央处理单元(CPU)、外围设备接口、RF电路、音频电路、扬声器111、麦克风113、输入/输出(I/O)子系统和其他输入或控制设备。设备100可包括一个或多个图像传感器164、一个或多个接近传感器166,以及一个或多个加速度计168。设备100可包括图1中未示出的部件。
设备100仅是电子设备的一个示例,并且设备100可具有比上文列出的更多或更少的部件,其中一些部件可组合成一个部件或具有不同的配置或布置。以上列出的设备100的各种部件体现为硬件、软件、固件或其组合,包括一个或多个信号处理和/或专用集成电路(ASIC)。
图2是示出根据一个实施方案的设备100中的部件的框图。设备100可执行包括图像处理在内的各种操作。出于此目的和其他目的,设备100可包括图像传感器202、片上系统(SOC)部件204、系统存储器230、永久存储器(例如,闪存)228、方向传感器234和显示器216,以及其他部件。图2中所示的部件仅为例示性的。例如,设备100可包括图2中未示出的其他部件(诸如扬声器或麦克风)。另外,一些部件(诸如方向传感器234)可从设备100中省略。
图像传感器202是用于捕获图像数据的部件,并且可实现为例如互补金属氧化物半导体(CMOS)有源像素传感器、相机、摄像机或其他设备。图像传感器202生成原始图像数据,其被发送到SOC部件204以进行进一步处理。在一些实施方案中,由SOC部件204处理的图像数据显示在显示器216上,存储在系统存储器230、永久存储器228中,或经由网络连接发送到远程计算设备。由图像传感器202生成的原始图像数据可以是Bayer颜色内核阵列(CFA)图案(在下文中也称为“Bayer图案”)。
运动传感器234是用于感测设备100的运动的部件或一组部件。运动传感器234可生成指示设备100的取向和/或加速度的传感器信号。传感器信号被发送到SOC部件204以用于各种操作,诸如打开设备100或旋转显示器216上显示的图像。
显示器216是用于显示由SOC部件204生成的图像的部件。显示器216可包括例如液晶显示器(LCD)设备或有机发光二极管(OLED)设备。基于从SOC部件204接收的数据,显示器116可显示各种图像,诸如菜单、所选择的操作参数、由图像传感器202捕获并由SOC部件204处理的图像,和/或从设备100的用户界面接收的其他信息(未示出)。
系统存储器230是用于存储由SOC部件204执行的指令以及用于存储由SOC部件204处理的数据的部件。系统存储器230可体现为任何类型的存储器,包括例如动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、双倍数据速率(DDR、DDR2、DDR3等)RAMBUS DRAM(RDRAM)、静态RAM(SRAM)或其组合。在一些实施方案中,系统存储器230可以各种格式存储像素数据或其他图像数据或统计。
永久存储器228是用于以非易失性方式存储数据的部件。即使电力不可用,永久存储器228也保留数据。永久存储器228可体现为只读存储器(ROM)、闪存或其他非易失性随机存取存储器设备。
SOC部件204体现为一个或多个集成电路(IC)芯片并执行各种数据处理过程。SOC部件204可包括除了别的子部件之外的图像信号处理器(ISP)206、中央处理器单元(CPU)208、网络接口210、传感器接口212、显示控制器214、神经处理器电路218、图形处理器(GPU)220、存储器控制器222、视频编码器224、存储控制器226和连接这些子组件的总线232。SOC部件204可包括比图2中所示的子部件更多或更少的子部件。
ISP 206是执行图像处理管道的各级的硬件。在一些实施方案中,ISP 206可从图像传感器202接收原始图像数据,并且将原始图像数据处理成SOC部件204的其他子部件或设备100的部件可用的形式。ISP 206可执行各种图像处理操作,诸如图像转译操作、水平和垂直缩放、颜色空间转换和/或图像稳定化变换,如下面参考图3详细描述的。
CPU 208可使用任何合适的指令集架构来实现,并且可被配置为执行在该指令集架构中定义的指令。CPU 208可以是使用各种指令集架构(ISA)中的任一者的通用或嵌入式处理器,诸如x86、PowerPC、SPARC、RISC、ARM或MIPS ISA,或任何其他合适的ISA。尽管图2中示出了单个CPU,但是SOC部件204可包括多个CPU。在多处理器系统中,每个CPU可共同实现相同的ISA,但不是必需的。
图形处理单元(GPU)220是用于执行图形数据的图形处理电路。例如,GPU 220可渲染要显示到帧缓冲器中的对象(例如,包括整个帧的像素数据的帧缓冲器)。GPU 220可包括一个或多个图形处理器,该图形处理器可执行图形软件以执行部分或全部的图形操作或某些图形操作的硬件加速。
神经处理器电路218是基于包括相乘、相加和累加的计算来执行各种机器学习操作的电路。此类计算可被布置成执行例如输入数据和内核数据的卷积。神经处理器电路218是可配置电路,该可配置电路以快速且高功效的方式执行这些操作,同时缓解了CPU 208与神经网络操作相关联的资源密集型操作。神经处理器电路218可从传感器接口302、图像信号处理器206、系统存储器230或其他源诸如网络接口210或GPU 220接收输入数据。神经处理器电路218的输出可被提供给设备100的各种部件,诸如用于各种操作的图像信号处理器206、系统存储器230或CPU 208。神经处理器电路218的结构和操作在下文中参考图3详细描述。
网络接口210是支持经由一个或多个网络(例如,载体或代理设备)在设备100和其他设备之间交换数据的子部件。例如,视频或其他图像数据可经由网络接口210从其他设备接收并且被存储在系统存储器230中以用于后续处理(例如,经由诸如下文在图3中讨论的到图像信号处理器206的后端接口)和显示。网络可包括但不限于局域网(LAN)(例如,以太网或公司网络)和广域网(WAN)。经由网络接口210接收的图像数据可由ISP 206进行图像处理过程。
传感器接口212是用于与运动传感器234交接的电路。传感器接口212从运动传感器234接收传感器信息并且处理传感器信息以确定设备100的取向或移动。
显示控制器214是用于发送要在显示器216上显示的图像数据的电路。显示控制器214从ISP 206、CPU 208、图形处理器或系统存储器230接收图像数据,并将图像数据处理成适用于在显示器216上显示的格式。
存储器控制器222为用于与系统存储器230通信的电路。存储器控制器222可从系统存储器230读取数据以供ISP 206、CPU 208、GPU 220或SOC部件204的其他子部件处理。存储器控制器222还可将数据写入从SOC部件204的各种子部件接收的系统存储器230。
视频编码器224是硬件、软件、固件或其组合,用于将视频数据编码成适于存储在永久存储器128中的格式,或者用于将数据传递到网络接口210以通过网络传输到另一设备。
在一些实施方案中,SOC部件204的一个或多个子部件或这些子部件的一些功能可由在ISP 206、CPU 208或GPU 220上执行的软件部件来执行。此类软件部件可存储在系统存储器230、永久存储器228或经由网络接口210与设备100通信的另一设备中。
图像数据或视频数据可流过SOC部件204内的各种数据路径。在一个示例中,可从图像传感器202生成并由ISP 206处理原始图像数据,然后经由总线232和存储器控制器222发送到系统存储器230。在图像数据存储在系统存储器230中之后,它可由视频编码器224访问以进行编码,或者由显示器116访问以通过总线232进行显示。
示例神经处理器电路
神经处理器电路218是至少基于内核数据340对输入数据执行神经网络操作的可配置电路。为此,神经处理器电路218可包括除了别的部件之外的神经任务管理器310、多个神经引擎314A至314N(在下文中统称为“多个神经引擎314”并且还单独地称为“神经引擎314”)、内核直接存储器存取(DMA)324、数据缓冲器318和缓冲器DMA 320。神经处理器电路218可包括图3中未示出的其他部件。
神经引擎314中的每一个神经引擎并行地执行神经网络操作的计算操作。根据操作加载,整个神经引擎314集可被操作或者仅神经引擎314子集可被操作,同时其余神经引擎314被置于功率节省模式以节省功率。神经引擎314中的每一个神经引擎包括用于存储一个或多个内核、用于执行相乘累加操作以及用于后处理以生成输出数据328的部件,如下文参考图4详细描述。神经网络操作的一个示例是卷积操作。
神经任务管理器310管理神经处理器电路218的总体操作。神经任务管理器310可从由CPU 208执行的编译器接收任务列表,将任务存储在其任务队列中,选择待执行的任务,并且向神经处理器电路218的其他部件发送指令以用于执行所选择的任务。神经任务管理器310还可以在检测到事件诸如从CPU 208接收指令时执行任务的切换。在一个或多个实施方案中,神经任务管理器310将光栅器信息发送到神经处理器电路218的部件以使这些部件中的每一个部件能够跟踪、检索或处理输入数据和内核数据的适当部分,如下文参考图5至图7详细描述。尽管在图3中神经任务管理器310被示出为神经处理器电路218的一部分,但是神经任务管理器310可以是神经处理器电路218外部的部件。
内核DMA 324是从源(例如,系统存储器230)获取内核数据并将内核数据326A至326N发送到神经引擎314中的每一个神经引擎的读取电路。内核数据表示可从中提取内核元素的信息。在一个实施方案中,内核数据可以是在神经引擎314中的每一个神经引擎处解压缩的压缩格式。尽管在一些情况下提供给神经引擎314中的每一个神经引擎的内核数据可相同,但是在大多数情况下提供给神经引擎314中的每一个神经引擎的内核数据是不同的。
数据缓冲器318是用于存储与神经网络操作相关联的数据的临时存储装置。在一个实施方案中,数据缓冲器318体现为可由全部神经引擎314访问的存储器。数据缓冲器318可存储用于馈送到对应神经引擎314A至314N的输入数据322A至322N,以及用于反馈到神经引擎314中或发送到目标电路(例如,系统存储器230)的来自神经引擎314A至314N中的每一者的输出。数据缓冲器318与神经处理器电路218的其他部件的操作被协调使得存储在数据缓冲器318中的输入数据和中间数据跨神经引擎314处的多个操作被重复使用,从而减少往返于系统存储器230的数据传输。数据缓冲器318可以广播模式或单播模式操作,在广播模式中将所有输入通道的数据输入数据馈送到所有神经引擎314,在单播模式中将输入通道的子集的数据输入数据馈送到每个神经引擎314。
其中,存储在数据缓冲器318中的输入数据322是图像数据、取向梯度(HOG)数据的柱状图、音频数据、元数据、神经引擎314的前一周期的输出数据328以及从SOC部件204的其他部件接收的其他经处理的数据的一部分。
缓冲器DMA 320包括从用于存储在数据缓冲器318中的源(例如,系统存储器230)接收输入数据的一部分(例如,块)的读取电路以及将数据从数据缓冲器138转发到目标(例如,系统存储器)的写入电路。
示例神经引擎架构
图4是根据一个实施方案的神经引擎314的框图。神经引擎314执行各种操作以促进神经网络操作,诸如卷积、空间池化和局部响应归一化。神经引擎314接收输入数据322,基于所存储的内核数据对输入数据322执行相乘累加操作(例如,卷积操作),对相乘累加操作的结果执行进一步后处理操作,并且生成输出数据328。神经引擎314的输入数据322和/或输出数据328可以是单个通道或多个通道。
神经引擎314可包括除了别的部件之外的输入缓冲电路402、计算核416、神经引擎(NE)控制418、内核提取电路432、累加器414和输出电路424。神经引擎314可包括图4中未示出的另外的部件。
输入缓冲电路402是在从数据缓冲器318接收到输入数据322时存储该输入数据的一部分并且将用于当前任务或处理回路的输入数据的适当部分408发送到计算核416以进行处理的电路。输入缓冲电路402包括移位器410,该移位器对输入缓冲电路402的读取位置进行移位以改变发送到计算核416的输入数据的部分408。通过经由移位改变提供给计算核416的输入数据的部分,神经引擎314可基于较少数量的读取操作针对输入数据的不同部分执行相乘累加。在一个或多个实施方案中,输入数据322包括差异卷积组和/或输入通道的数据。
内核提取电路432是从内核DMA 324接收内核数据326并提取内核系数422的电路。在一个实施方案中,内核提取电路432参考查找表(LUT)并使用掩模来从压缩内核数据326重建内核。该掩模指示重建内核中待用零填补的位置以及待用数字填充的剩余位置。将重建内核的内核系数422发送到计算核416以填充计算核416的乘加(MAD)电路中的寄存器。在其他实施方案中,内核提取电路432接收未压缩格式的内核数据,并且在不参考LUT或使用掩模的情况下确定内核系数。
计算核416是执行计算操作的可编程电路。为此,计算核416可包括MAD电路MAD0至MADN以及后处理器428。MAD电路MAD0至MADN中的每一者可将输入值存储在输入数据的部分408中并且将对应内核系数存储在内核系数422中。在MAD电路中的每一个MAD电路中将输入值和对应内核系数相乘以生成经处理的值412。
累加器414是从MAD电路接收和存储经处理的值412的存储器电路。存储在累加器414中的经处理的值可作为反馈信息419被发送回以在MAD电路处进行进一步相乘和相加操作,或者被发送到后处理器428以进行后处理。累加器414与MAD电路组合形成了相乘累加器(MAC)404。在一个或多个实施方案中,累加器414可具有子单元,其中每个子单元将数据发送到神经引擎314的不同部件。例如,在处理周期期间,存储在累加器414的第一子单元中的数据被发送到MAC电路,同时存储在累加器414的第二子单元中的数据被发送到后处理器428。
后处理器428是对从累加器414接收的值412执行进一步处理的电路。后处理器428可执行操作,包括但不限于应用线性函数(例如,整流线性单元(ReLU))、归一化互相关性(NCC)、将对8位数据执行神经操作的结果合并成16位数据以及局部响应归一化(LRN)。此类操作的结果作为经处理的值417从后处理器428输出到输出电路424。
NE控件418基于神经处理器电路218的操作模式和参数来控制神经引擎314的其他部件的操作。根据不同的操作模式(例如,组卷积模式或非组卷积模式)或参数(例如,输入通道的数量和输出通道的数量),神经引擎314可以不同的顺序对不同的输入数据进行操作,将不同的值从累加器414返回到MAD电路,并且在后处理器428处执行不同类型的后处理操作。为了将神经引擎314的部件配置为以期望的方式操作,NE控件418将控制信号发送到神经引擎的部件。NE控件418还可包括光栅器430,该光栅器跟踪在神经引擎314处处理的当前任务或处理回路,如下文参考图5至图7详细描述。
输出电路424从后处理器428接收经处理的值417,并且与数据缓冲器318进行交互以将经处理的值417存储在数据缓冲器318中。为此,输出电路424可以与在后处理器428中处理经处理的值417的顺序或格式不同的顺序或格式作为输出数据328发出。
神经引擎314中的部件可在配置周期期间由NE控件418和神经任务管理器310配置。为此,神经任务管理器310在配置周期期间将配置信息发送到神经引擎314。可配置参数和模式可包括但不限于输入数据元素和内核元素之间的映射、输入通道的数量、输出通道的数量、输出步幅的执行以及在后处理器428处启用/选择后处理操作。
对数据进行分段以用于在神经处理器电路处处理的操作
输入数据通常被分成更小的数据片,用于在多个神经引擎314处进行并行处理。通常执行多个操作循环以生成与神经网络相关联的任务的输出。由CPU 208执行的编译器分析神经网络的分级结构和节点,并且基于神经处理器电路218的硬件约束来确定如何对输入数据进行分段。编译器的功能之一是确定如何将输入数据分成用于在神经引擎314处处理的较小数据单元,以及如何在回路中迭代处理以产生用于任务的结果。
图5是示出根据一个实施方案的用于在神经处理器电路218处处理输入数据的回路的概念图。如果使用涉及多个卷积组的组卷积,则最外回路表示对卷积组的处理。组卷积是其中每个组中输入通道的输入数据仅用于生成每个组的输出通道的输出数据但不用于生成其他组的输出通道的输出数据的卷积。因此,组卷积的每个组可被视为单独的卷积操作。
每个卷积组的回路中是用于输入数据切片的处理回路。用于卷积操作的整个输入数据以重叠方式被分段成多条切片,如图6所示。重叠部分602、604、606是输入数据的在两个相邻切片中被过获取以为对应内核提供空间支持的部分。第二最外回路针对输入数据中的每个切片执行卷积操作。切片的回路内是用于切片的图块的处理回路。每个图块被分段成多个图块,如图6所示。重叠部分608、610、612、614是切片4中的输入数据的在两个相邻图块中被过获取以为对应内核提供空间支持的部分。最右边的图块通常将具有小于切片的其他图块的宽度。在一个实施方案中,每个图块的输入数据在读取周期中被加载到数据缓冲器318上,并且被重复用于图块的处理回路中的操作。在图块的处理回路中是用于工作单元的处理回路。每个图块被分段成多个工作单元,如图6所示。工作单元是具有在计算核416的单个周期期间产生拟合到神经引擎314的累加器414中的输出值的尺寸的输入数据的一部分。尽管每个工作单元的形状在图6中被示出为水平条,但是工作单元的形状可根据图块的形状和尺寸而不同。该工作单元还具有表示过获取的以为对应内核提供支持的重叠部分。尤其是,如果图块为高的,则用于切片的最后图块的工作单元可具有竖直条的形状。在一个或多个实施方案中,每个工作单元的尺寸是256字节。在此类实施方案中,例如,工作单元可被成形为16×16、32×8、64×4、128×2或256×1维度中的一者。
对于每个工作单元,可为输出通道组(OCG)提供内部处理回路。由计算核416的单个周期为给定工作单元产生的输出通道的数量被称为OCG。根据操作模式,每个神经引擎314可处理用于输入数据单次加载到其输入缓冲电路402中的不同数量的输出通道(例如,8个通道、32个通道)的输出数据。
对于每个输出通道组,可为输入通道(Cin)提供内部处理回路。如果实施输入步幅以跳过某些输入数据,则可在用于输入通道(Cin)的处理回路内提供用于子输入通道(Sub-Cin)的回路。
对于每个输入通道或每个子输入通道,提供内部回路以用于处理内核的水平空间支持以及每个水平空间支持内的竖直支持。空间支持是指用于与内核卷积的输入数据,并且包括用于在输入数据的边缘处执行卷积的过获取输入数据。
过获取是指在当前切片、图块或工作单元中获取附加输入数据,使得可提供适当维度的输入数据以用于与内核卷积。在一个或多个实施方案中,在切片之间垂直地执行过获取以获得输入数据的附加行(在图6中示出为重叠部分602、604、606),在图块之间水平地执行过获取以获得输入数据的附加列(在图6中示出为重叠部分608、606、612、614),并且在图块内的工作单元之间垂直地执行过获取以获得输入数据的附加行。
对于用于内核的每个空间支持,提供了输出通道(OC)的内部处理回路以生成用于每个输出通道(Cout)的输出数据。在输出步幅实现空间上采样的情况下,提供用于处理每个子输出通道的附加内回路。在输出通道(OC)或子输出通道(如果实现输出步幅)的回路内执行内核系数和MAC操作的加载,以生成用于输出通道(OC)或子输出通道的输出数据。
图5的嵌套回路结构仅仅是例示性的。根据各种因素,可不同地省略、添加或结构化回路。例如,如果仅使用单个卷积组,则可移除最外回路。此外,可颠倒用于水平空间支持和竖直空间支持的回路结构。
在一个或多个实施方案中,如上参考图5和图6所述,与将输入空间划分为更小单元并处理这些更小单元相关联的操作由神经处理器电路218的各种部件中的光栅器714、718、720、722执行。光栅器是神经处理器电路218的各种部件中的电路,该电路保持跟踪输入/输出数据的区段(例如,组、工作单元、输入通道、输出通道)并且指示神经处理器电路的部件用于正确处理输入数据的区段。例如,缓冲器DMA 320中的光栅器720跟踪从系统存储器230接收的图块和切片,同时数据缓冲器318中的光栅器718按顺序广播工作单元以供神经引擎314处理。内核DMA 324中的光栅器724确定要接收哪些内核并将其分配给神经引擎314,同时神经引擎314中的光栅器714操作输入缓冲电路402中的移位器410以将输入数据的正确部分408转发到MAC 404,并且将完成的输出数据328发送到数据缓冲器318。
图7是示出根据一个实施方案的神经处理器电路218的部件314、318、320、322中的光栅器714、718、720、722的编程的图。为了执行它们的功能,光栅器714、718、720、722中的每一者接收指示输入数据和/或内核数据如何被分段并由神经处理器电路218的每个部件处理的任务信息710。该任务信息包括关于当前层的细节的信息(例如,输入和输出数据的维度、相关联内核的维度、输入数据边界处的填补类型)。光栅器714、718、720、722还可接收对其操作的约束(例如,是否允许或不允许图块宽度超过阈值)。
通过在神经处理器电路218的不同部件中提供光栅器,可减少在神经处理器电路218的部件之间传输的数据的开销。如果提供单个中央光栅器来控制神经处理器电路218的不同部件,则在这些数据中可能需要在这些部件之间传输的内核数据、输入数据和输出数据来识别任务回路中的相关联的位置,诸如卷积组、图块、切片、工作单元、输入通道和输出通道。通过使用分布式光栅器,不需要单独的元数据来在神经处理器电路218的部件之间传输内核数据、输入数据和输出数据。
在神经引擎架构处的示例过程
图8是示出根据一个实施方案的在神经处理器电路218中处理输入数据的方法的流程图。在神经任务管理器310对光栅器714、718、720、722进行编程之后,操作缓冲器DMA320的过程通过光栅器720指示804缓冲器DMA 320使缓冲器DMA 320从系统存储器230接收输入数据的图块来发起。由缓冲器DMA 320所接收的图块被存储806在数据缓冲器318中。
然后,数据缓冲器318中的光栅器718指示808数据缓冲器318将工作单元发送到一个或多个神经引擎314。然后将该工作单元存储在一个或多个神经引擎314的输入缓冲电路402中。
在一个或多个实施方案中,输入缓冲电路402选择816待发送到MAC 404的工作单元的一部分以执行相乘累加操作。然后MAC 404使用对应内核对工作单元的所选择的部分执行820相乘累加操作。然后确定824整个工作单元是否在一个或多个神经引擎314处被处理。如果不是,则该工作单元的所选择的部分被移位器410移位828,并且返回执行820另一轮的相乘累加操作。
如果确定824整个工作单元被处理,则继续确定832该图块中的所有工作单元是否被处理。如果不是,则该过程通过使数据缓冲器318将下一个工作单元发送808到一个或多个神经引擎314而前进836至下一个工作单元,并且重复后续过程。
如果确定832该图块中的所有工作单元由神经引擎314处理,则该过程继续确定840用于输入数据的所有图块是否被处理。如果不是,则该过程通过使光栅器720指示804缓冲器DMA 320从系统存储器230接收下一个图块并重复后续过程来前进844至下一个图块。
如果确定840输入数据的所有图块被处理,则该过程对于当前输入数据结束。然后,可重复该过程以处理下一个输入数据或前进至下一个任务。
上文参考图8所述的过程的实施方案仅仅是例示性的。可实施另外的回路,如上文参考图5所述。此外,可修改或省略该过程的顺序。
虽然已经说明和描述了具体的实施方案和应用,但是应当理解,本发明不限于本文所公开的精确构造和部件以及,并且在不脱离本公开的实质和范围的情况下,可对本文所公开的方法和装置的布置、操作和细节进行对本领域的技术人员将显而易见的各种修改、改变和变型。

Claims (20)

1.一种神经处理器电路,包括:
数据读取器,所述数据读取器包括第一光栅器电路,所述第一光栅器电路指示所述数据读取器读取输入数据的片段;
数据缓冲器,所述数据缓冲器被配置为存储所述输入数据的所接收的片段,所述数据缓冲器包括第二光栅器电路,所述第二光栅器电路被配置为生成并发送工作单元,所述工作单元中的每个工作单元对应于存储在所述数据缓冲器中的所述输入数据片段的一部分;和
神经引擎,所述神经引擎被配置为接收所述工作单元并基于使用对应内核对工作单元的一部分执行的乘法累加操作来生成输出值。
2.根据权利要求1所述的神经处理器电路,其中所述神经引擎中的每个神经引擎包括第三光栅器电路,所述第三光栅器电路指示所述神经引擎中的每个神经引擎使所述工作单元的在不同周期要与所述内核相乘的部分移位。
3.根据权利要求2所述的神经处理器电路,其中所述第三光栅器电路被配置为跟踪以下中的一者或多者:卷积组、工作单元、输出通道组、输入通道组和对应于所述工作单元的与所述内核相乘的所述部分的输出通道。
4.根据权利要求1所述的神经处理器电路,还包括神经任务管理器,所述神经任务管理器被配置为将任务信息发送到所述第一光栅器电路和所述第二光栅器电路,所述任务信息至少指示所述输入数据如何被分段成所述工作单元。
5.根据权利要求1所述的神经处理器电路,其中所述输入数据的所述片段是以下中的一部分:所述输入数据的切片,垂直划分所述输入数据的所述输入数据的切片,以及水平划分所述切片中的每个切片的片段。
6.根据权利要求1所述的神经处理器电路,其中所述数据读取器还被配置为从源检索用于神经网络处理的所述输入数据的另一片段,所述另一片段具有与所述片段不同的形状。
7.根据权利要求1所述的神经处理器电路,其中所述工作单元中的至少两个工作单元具有不同的形状。
8.一种操作神经处理器电路的方法,包括:
由所述神经处理器电路的数据读取器中的第一光栅器电路指示以使所述数据读取器接收用于神经网络处理的输入数据的片段;
将所述输入数据的所接收的片段存储在所述神经处理器电路的数据缓冲器中;
由所述数据缓冲器中的第二光栅器电路指示以使所述数据缓冲器将工作单元从所述数据缓冲器发送到神经引擎的输入缓冲器电路,所述工作单元中的每个工作单元对应于存储在所述数据缓冲器中的所述输入数据片段的一部分,所述第二光栅器电路与所述第一光栅器电路分开;以及
由所述神经引擎中的每个神经引擎基于使用对应内核对工作单元的一部分执行的乘法累加操作来生成所述神经引擎的输出值。
9.根据权利要求8所述的方法,其中生成所述神经引擎的所述输出值包括:
由所述神经引擎中的每个神经引擎中的第三光栅器电路指示以使所述神经引擎中的每个神经引擎中的输入缓冲器使所述工作单元的在不同周期要与所述内核相乘的部分移位,所述第三光栅器电路与所述第一光栅器电路和所述第二光栅器电路分开。
10.根据权利要求9所述的方法,还包括由所述第三光栅器电路跟踪以下中的一者或多者:卷积组、工作单元、输出信道组、输入信道组和对应于所述工作单元的与所述内核相乘的所述部分的输出通道。
11.根据权利要求8所述的方法,还包括将任务信息从所述神经处理器电路中的神经任务管理器发送到所述第一任务光栅器电路和所述第二任务光栅器电路,所述任务信息至少指示所述输入数据如何被分段成所述工作单元。
12.根据权利要求8所述的方法,其中所述输入数据的所述片段是以下中的一部分:所述输入数据的切片,垂直划分所述输入数据的所述输入数据的切片,以及水平划分所述切片中的每个切片的片段。
13.根据权利要求8所述的方法,还包括:
从源检索用于神经网络处理的所述输入数据的另一片段,所述另一片段具有与所述片段不同的形状。以及
将所述输入数据的所述另一片段存储在所述神经处理器电路的所述数据缓冲器中以供所述神经引擎处理。
14.根据权利要求8所述的方法,其中所述工作单元中的至少两个工作单元具有不同的形状。
15.一种包括神经处理器电路的集成电路,IC,系统,所述神经处理器电路包括:
数据读取器,所述数据读取器包括第一光栅器电路,所述第一光栅器电路指示所述数据读取器读取输入数据的片段;
数据缓冲器,所述数据缓冲器被配置为存储所述输入数据的所接收的片段,所述数据缓冲器包括第二光栅器电路,所述第二光栅器电路被配置为生成并发送工作单元,所述工作单元中的每个工作单元对应于存储在所述数据缓冲器中的所述输入数据片段的一部分;和
神经引擎,所述神经引擎被配置为接收所述工作单元并基于使用对应内核对工作单元的一部分执行的乘法累加操作来生成输出值。
16.根据权利要求15所述的IC系统,其中所述神经引擎中的每个神经引擎包括第三光栅器电路,所述第三光栅器电路指示所述神经引擎中的每个神经引擎使所述工作单元的在不同周期要与所述内核相乘的部分移位。
17.根据权利要求16所述的IC系统,其中所述第三光栅器电路被配置为跟踪以下中的一者或多者:卷积组、工作单元、输出通道组、输入通道组和对应于所述工作单元的与所述内核相乘的所述部分的输出通道。
18.根据权利要求15所述的IC系统,还包括神经任务管理器,所述神经任务管理器被配置为将任务信息发送到所述第一光栅器电路和所述第二光栅器电路,所述任务信息至少指示所述输入数据如何被分段成所述工作单元。
19.根据权利要求15所述的IC系统,其中所述输入数据的所述片段是以下中的一部分:所述输入数据的切片,垂直划分所述输入数据的所述输入数据的切片,以及水平划分所述切片中的每个切片的片段。
20.根据权利要求15所述的IC系统,其中所述数据读取器还被配置为从源检索用于神经网络处理的所述输入数据的另一片段,所述另一片段具有与所述片段不同的形状。
CN201980029729.2A 2018-05-04 2019-03-20 拆分用于在神经网络处理器中处理的输入数据 Pending CN112074847A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/971,332 2018-05-04
US15/971,332 US11783174B2 (en) 2018-05-04 2018-05-04 Splitting of input data for processing in neural network processor
PCT/US2019/023258 WO2019212654A1 (en) 2018-05-04 2019-03-20 Splitting of input data for processing in neural network processor

Publications (1)

Publication Number Publication Date
CN112074847A true CN112074847A (zh) 2020-12-11

Family

ID=66041683

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980029729.2A Pending CN112074847A (zh) 2018-05-04 2019-03-20 拆分用于在神经网络处理器中处理的输入数据

Country Status (3)

Country Link
US (2) US11783174B2 (zh)
CN (1) CN112074847A (zh)
WO (1) WO2019212654A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210132945A1 (en) * 2019-11-04 2021-05-06 Apple Inc. Chained Buffers In Neural Network Processor

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210142146A1 (en) * 2019-11-13 2021-05-13 Micron Technology, Inc. Intelligent image sensor stack
US11537864B2 (en) * 2019-11-26 2022-12-27 Apple Inc. Reduction mode of planar engine in neural processor
CN111010605B (zh) * 2019-11-26 2021-08-17 杭州东信北邮信息技术有限公司 一种视频画中画窗口的显示方法
KR20220071618A (ko) 2020-11-24 2022-05-31 삼성전자주식회사 컨벌루션 연산을 위한 데이터 공유 방법, 페처 및 컨벌루션 연산 장치
CN114880101B (zh) * 2022-07-01 2022-09-30 成都登临科技有限公司 一种ai处理器、电子部件及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3098762A1 (en) * 2015-05-29 2016-11-30 Samsung Electronics Co., Ltd. Data-optimized neural network traversal
US9858636B1 (en) * 2016-06-30 2018-01-02 Apple Inc. Configurable convolution engine
CN107657581A (zh) * 2017-09-28 2018-02-02 中国人民解放军国防科技大学 一种卷积神经网络cnn硬件加速器及加速方法
CN107729996A (zh) * 2016-08-11 2018-02-23 图芯芯片技术有限公司 零系数跳过卷积神经网络引擎

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6915014B1 (en) 1990-07-31 2005-07-05 Canon Kabushiki Kaisha Image processing apparatus and method
US8490034B1 (en) 2010-07-08 2013-07-16 Gauda, Inc. Techniques of optical proximity correction using GPU
US9411726B2 (en) 2014-09-30 2016-08-09 Samsung Electronics Co., Ltd. Low power computation architecture
US10255547B2 (en) 2014-12-04 2019-04-09 Nvidia Corporation Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system
US10083395B2 (en) * 2015-05-21 2018-09-25 Google Llc Batch processing in a neural network processor
US20160379109A1 (en) 2015-06-29 2016-12-29 Microsoft Technology Licensing, Llc Convolutional neural networks on hardware accelerators
US20160379686A1 (en) 2015-06-29 2016-12-29 Microsoft Technology Licensing, Llc Server systems with hardware accelerators including stacked memory
US10733505B2 (en) 2016-11-10 2020-08-04 Google Llc Performing kernel striding in hardware
WO2018103736A1 (en) * 2016-12-09 2018-06-14 Beijing Horizon Information Technology Co., Ltd. Systems and methods for data management
US10402527B2 (en) 2017-01-04 2019-09-03 Stmicroelectronics S.R.L. Reconfigurable interconnect

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3098762A1 (en) * 2015-05-29 2016-11-30 Samsung Electronics Co., Ltd. Data-optimized neural network traversal
US9858636B1 (en) * 2016-06-30 2018-01-02 Apple Inc. Configurable convolution engine
CN107729996A (zh) * 2016-08-11 2018-02-23 图芯芯片技术有限公司 零系数跳过卷积神经网络引擎
CN107657581A (zh) * 2017-09-28 2018-02-02 中国人民解放军国防科技大学 一种卷积神经网络cnn硬件加速器及加速方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210132945A1 (en) * 2019-11-04 2021-05-06 Apple Inc. Chained Buffers In Neural Network Processor
US11513799B2 (en) * 2019-11-04 2022-11-29 Apple Inc. Chained buffers in neural network processor

Also Published As

Publication number Publication date
US11783174B2 (en) 2023-10-10
WO2019212654A1 (en) 2019-11-07
US20240028894A1 (en) 2024-01-25
US20190340501A1 (en) 2019-11-07

Similar Documents

Publication Publication Date Title
US11640316B2 (en) Compiling and scheduling transactions in neural network processor
US11989640B2 (en) Scalable neural network processing engine
US11487846B2 (en) Performing multiply and accumulate operations in neural network processor
CN112074846B (zh) 用于在神经网络处理器中分配任务的系统和方法
US11200490B2 (en) Processing group convolution in neural network processor
US11120327B2 (en) Compression of kernel data for neural network operations
US11740932B2 (en) Systems and methods for task switching in neural network processor
US20240028894A1 (en) Splitting of input data for processing in neural network processor
US11853868B2 (en) Multi dimensional convolution in neural network processor
US20230394276A1 (en) Subtask storage for streaming convolutions in neural network processor
US20240232571A1 (en) Palettization of Kernel Vector in Neural Network Processor
US20240220764A1 (en) Efficient zero padding in convolution at neural processor
US20220222509A1 (en) Processing non-power-of-two work unit in neural processor circuit

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