CN112074846A - 用于在神经网络处理器中分配任务的系统和方法 - Google Patents
用于在神经网络处理器中分配任务的系统和方法 Download PDFInfo
- Publication number
- CN112074846A CN112074846A CN201980029309.4A CN201980029309A CN112074846A CN 112074846 A CN112074846 A CN 112074846A CN 201980029309 A CN201980029309 A CN 201980029309A CN 112074846 A CN112074846 A CN 112074846A
- Authority
- CN
- China
- Prior art keywords
- task
- circuit
- neural
- data
- queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 63
- 238000000034 method Methods 0.000 title claims description 51
- 230000001537 neural effect Effects 0.000 claims abstract description 270
- 238000010801 machine learning Methods 0.000 abstract description 22
- 238000012545 processing Methods 0.000 description 49
- 230000008569 process Effects 0.000 description 27
- 238000010586 diagram Methods 0.000 description 26
- 230000002085 persistent effect Effects 0.000 description 9
- 230000033001 locomotion Effects 0.000 description 8
- 238000012805 post-processing Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000013527 convolutional neural network Methods 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- HNWFFTUWRIGBNM-UHFFFAOYSA-N 2-methyl-9,10-dinaphthalen-2-ylanthracene Chemical compound C1=CC=CC2=CC(C3=C4C=CC=CC4=C(C=4C=C5C=CC=CC5=CC=4)C4=CC=C(C=C43)C)=CC=C21 HNWFFTUWRIGBNM-UHFFFAOYSA-N 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000000881 depressing effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开的实施方案涉及对当被神经处理器电路执行时实例化神经网络的任务进行管理。所述神经处理器电路包括神经引擎电路和神经任务管理器电路。所述神经任务管理器电路包括多个任务队列和任务仲裁器电路。每个任务队列存储对用于机器学习操作的任务的任务列表的标引。每个任务队列可与优先级参数相关联。基于所述任务队列的所述优先级,所述任务仲裁器电路从所述神经处理器电路外部的存储器检索任务的配置数据,并且将所述配置数据提供给所述神经处理器电路的包括所述神经引擎电路的部件。所述配置数据对所述神经处理器电路进行编程以执行所述任务。例如,所述配置数据可包括由所述神经引擎电路处理以执行所述任务的输入数据和内核数据。
Description
背景技术
1.技术领域
本公开涉及用于实现神经网络的电路,并且更具体地涉及对神经网络任务进行管理。
2.相关技术描述
人工神经网络(ANN)是使用连接节点的集合来处理输入数据的计算系统或模型。ANN通常被组织成层,其中不同的层对其输入执行不同类型的转换。ANN的扩展或变体诸如卷积神经网络(CNN)、深度神经网络(DNN)、递归神经网络(RNN)和深度信念网络(DBN)已受到大量关注。这些计算系统或模型通常涉及广泛的计算操作,包括相乘和累加。例如,CNN是一类主要使用输入数据和内核数据之间的卷积的机器学习技术,卷积可分解为相乘和累加操作。
根据输入数据的类型和待执行的操作,这些机器学习系统或模型可被不同地配置。此类变化的配置将包括例如预处理操作、输入数据中的通道数量、待使用的内核数据、待应用于卷积结果的非线性函数以及各种后处理操作的应用。使用中央处理单元(CPU)及其主存储器来实例化和执行各种配置的机器学习系统或模型相对容易,因为此类系统或模型仅通过更新代码即可实例化。然而,仅依赖于CPU进行这些机器学习系统或模型的各种操作将消耗中央处理单元(CPU)的大量带宽以及增加总体功率消耗。
发明内容
本发明公开的实施方案涉及对当被神经处理器电路执行时实例化神经网络的任务进行管理。所述神经处理器电路包括一个或多个神经引擎电路和神经任务管理器电路。所述神经任务管理器电路包括多个任务队列电路和任务仲裁器电路。每个任务队列电路存储对用于机器学习操作的任务的任务列表的标引。每个任务列表和任务队列电路可与优先级参数相关联。基于所述任务队列电路的所述优先级,所述任务仲裁器电路从外部存储器检索任务的配置数据,并且将所述配置数据提供给所述神经处理器电路的包括所述一个或多个神经引擎的部件。所述配置数据对所述神经处理器电路进行编程以执行所述任务。
一些实施方案包括在神经处理器电路中对任务进行管理的方法。对实例化神经网络的任务的任务列表的标引被存储在所述神经处理器电路的任务队列电路中。所述任务列表包括存储在外部存储器的位置中的任务的配置数据。从所述任务队列电路中检索所述任务列表,诸如基于任务优先级。响应于对所述任务列表进行检索,从所述外部存储器的所述位置检索所述配置数据。将所述配置数据的至少一部分提供给所述神经处理器电路的神经引擎,以对所述神经引擎进行编程来执行所述任务。
附图说明
图1是根据实施方案的电子设备的高级图。
图2是示出根据一个实施方案的电子设备中的部件的框图。
图3是示出根据一个实施方案的神经处理器电路的框图。
图4是根据一个实施方案的神经处理器电路中的神经引擎的框图。
图5是示出根据一个实施方案的用于在神经处理器电路处处理输入数据的回路的概念图。
图6是示出根据一个实施方案的将输入数据分段成切片、图块和工作单元的概念图。
图7是示出根据一个实施方案的神经处理器电路的部件中的光栅器的编程的图。
图8是示出根据一个实施方案的在神经处理器电路中处理输入数据的方法的流程图。
图9是示出根据一个实施方案的由任务列表表示的神经网络的示意性框图。
图10是示出根据一个实施方案的神经任务管理器的框图。
图11是示出根据一个实施方案的使用任务队列检索任务描述符的图。
图12是示出根据一个实施方案的任务描述符的图。
图13是示出根据一个实施方案的神经任务管理器的获取队列和配置队列的框图。
图14是示出根据一个实施方案的在神经处理器电路中对任务进行管理的方法的流程图。
仅仅出于示例目的,附图描绘以及详细说明描述各种非限定性实施方案。
具体实施方式
现在将详细地参考实施方案,这些实施方案的示例在附图中示出。下面的详细描述中示出许多具体细节,以便提供对各种所描述的实施方案的充分理解。然而,可以在没有这些具体细节的情况下实施所述实施方案。在其他情况下,没有详细地描述众所周知的方法、过程、部件、电路和网络,从而不会不必要地使实施方案的各个方面晦涩难懂。
本公开的实施方案涉及对当被神经处理器电路执行时实例化神经网络的任务进行管理。机器学习操作诸如推断操作或训练操作由任务的任务列表限定。神经处理器电路包括一个或多个神经引擎和神经任务管理器。神经任务管理器包括多个任务队列和一个任务仲裁器。每个任务队列存储用于机器学习操作的任务的任务列表。每个任务列表或任务队列可与优先级参数相关联。任务仲裁器基于优先级参数从外部存储器检索任务的配置数据,并且将配置数据提供给神经处理器电路的包括一个或多个神经引擎的部件。在一些实施方案中,神经任务管理器包括存储由任务仲裁器选择的已提交任务的配置数据的配置队列,并且将配置数据提供给神经处理器电路的其他部件。所述配置数据对所述神经处理器电路进行编程以执行所述任务。例如,配置数据可包括由神经引擎处理以执行任务的输入数据和内核数据。配置数据还可包括用于检索和处理配置数据的指令以及用于存储神经引擎的输出数据的指令。除了别的之外,神经任务管理器允许神经处理器电路有效地处理多个机器学习操作。此外,当较高优先级任务被存储在任务队列中同时较低优先级任务被执行时神经任务管理器可促进任务切换。
本文所述的“任务”是指神经处理器电路的处理操作,该处理操作实例化神经网络的网络层、神经网络的多个网络层或神经网络的网络层的一部分。本文所述的“任务列表”是指一系列任务,诸如由神经处理器电路执行的实例化神经网络的多个网络层的一系列任务。
示例性电子设备
本文描述了电子设备、此类设备的用户界面和使用此类设备的相关过程的实施方案。在一些实施方案中,该设备为还包含其他功能诸如个人数字助理(PDA)和/或音乐播放器功能的便携式通信设备,诸如移动电话。便携式多功能设备的示例性实施方案包括但不限于来自Apple Inc.(Cupertino,California)的设备、iPod 设备、Apple设备和设备。可选地使用其他便携式电子设备,诸如可穿戴设备、膝上型电脑或平板计算机。在一些实施方案中,该设备不是便携式通信设备,而是台式计算机或不是为便携式使用而设计的其他计算设备。在一些实施方案中,所公开的电子设备可包括触敏表面(例如,触摸屏显示器和/或触摸板)。下文结合图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接收的数据,显示器216可显示各种图像,诸如菜单、所选择的操作参数、由图像传感器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是执行图像处理管道的各级的硬件。在一些实施方案中,ISP206可从图像传感器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可从传感器接口212、图像信号处理器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)接收输入数据的一部分(例如,图块)的读取电路以及将数据从数据缓冲器318转发到目标(例如,系统存储器)的写入电路。
示例神经引擎架构
图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返回到MAC电路,并且在后处理器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、610、612、614),并且在图块内的工作单元之间垂直地执行过获取以获得输入数据的附加行。
对于用于内核的每个空间支持,提供了输出通道(OC)的内部处理回路以生成用于每个输出通道(Cout)的输出数据。在输出步幅实现空间上采样的情况下,提供用于处理每个子输出通道的附加内回路。在输出通道(OC)或子输出通道(如果实现输出步幅)的回路内执行内核系数和MAC操作的加载,以生成用于输出通道(OC)或子输出通道的输出数据。
图5的嵌套回路结构仅仅是例示性的。根据各种因素,可不同地省略、添加或结构化回路。例如,如果仅使用单个卷积组,则可移除最外回路。此外,可颠倒用于水平空间支持和竖直空间支持的回路结构。
在一个或多个实施方案中,如上参考图5和图6所述,与将输入空间划分为更小单元并处理这些更小单元相关联的操作由神经处理器电路218的各种部件中的光栅器714、718、720、722执行。光栅器是神经处理器电路218的各种部件中的电路,该电路保持跟踪输入/输出数据的区段(例如,组、工作单元、输入通道、输出通道)并且指示神经处理器电路的部件用于正确处理输入数据的区段。例如,缓冲器DMA 320中的光栅器720跟踪从系统存储器230接收的图块和切片,同时数据缓冲器318中的光栅器718按顺序广播工作单元以供神经引擎314处理。内核DMA 322中的光栅器722确定要接收哪些内核并将其分配给神经引擎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缓冲器DMA320使缓冲器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所述。此外,可修改或省略该过程的顺序。
示例神经任务管理器架构
神经网络可包括被实例化或实现为由神经处理器电路218执行的一系列任务的网络层或子层。图9是示出根据一个实施方案的由任务列表904表示的神经网络900的示意性框图。神经网络900包括网络层(或子层),该网络层(或子层)包括卷积层C1、C2、C3(包括子层C300、C310、C311、C320和C321)、C5和C6以及池化层P2和P4。神经网络900是可由神经处理器电路218实例化的神经网络架构的示例。即,当神经网络900被转换成任务列表904以变得能够由神经处理器电路218执行时。也可由神经处理器电路218实例化具有不同类型的网络层或网络层次序的其他类型的神经网络架构。
神经网络900诸如由CPU 208转换为任务列表904。任务列表904包括限定一系列任务的线性链接列表,该系列任务包括任务C1、任务C2+P2、任务C300+P4、任务C310、任务C311+P4、任务C320、任务C321+P4、任务C5a、任务C5b和任务C6。每个任务与任务描述符相关联,该任务描述符限定神经处理器电路218的配置以执行任务。每个任务可对应于神经网络900的单个网络层、神经网络900的网络层的一部分或神经网络900的多个网络层。例如,任务C1对应于单个网络层C1,任务C2+P2对应于多个网络层C2和P2,并且任务C5a和C5b各自对应于网络层C5的一部分。神经处理器电路218通过在神经任务管理器310的控制下执行任务列表904的任务来实例化神经网络900。
图10是示出根据一个实施方案的神经任务管理器310的框图。神经任务管理器310对由神经处理器电路218执行用于一个或多个神经网络900的任务进行管理。除了其他部件之外,神经任务管理器310可包括任务仲裁器1002、任务队列1004A至1004N(在下文中统称为“多个任务队列1004”并且还单独地称为“任务队列1004”)、任务管理器直接存储器存取(DMA)1006、获取队列1008和配置队列1010。神经任务管理器310可包括图10中未示出的其他部件。
任务仲裁器1002是从任务队列1004中选择任务以供神经处理器电路218执行的电路或电路和固件的组合。任务仲裁器1002将任务从任务队列1004出队,并且将任务置于配置队列1010中。在任务在配置队列中时,其被提交执行,并且神经处理器电路在任务由神经处理器电路218的其他部件执行之前对输入数据和内核数据执行预取。例如,任务仲裁器1002可以在多个任务队列1004之间执行固定优先级仲裁,并且从具有最高优先级的任务队列1004中选择任务以用于由任务管理器DMA 1006从系统存储器230检索任务描述符1012。
神经任务管理器310可包括一个或多个任务队列1004。每个任务队列1004耦接到CPU 208和任务仲裁器1002。每个任务队列1004从CPU 208接收对任务的任务列表904的标引,这些任务当被神经处理器电路218执行时实例化神经网络900。存储在每个任务队列1004中的标引可包括指向系统存储器230中的任务描述符1012的任务列表904的一组指针和计数器。每个任务队列1004还可与限定任务队列1004的相对优先级的优先级参数相关联。任务的任务描述符1012指定用于执行任务的神经处理器电路218的配置。
任务管理器DMA 1006耦接到任务仲裁器1002、系统存储器230和获取队列1008。任务管理器DMA 1006包括从源(例如,系统存储器230)接收任务的任务描述符1012以存储在获取队列1008中的读取电路。例如,任务仲裁器1002根据任务队列1004的优先级选择任务队列1004,并且使用由所选择的任务队列1004标引的任务列表904来控制任务管理器DMA1006以选择任务的任务描述符1012。
获取队列1008是存储未决提交用于执行的任务的任务描述符1012的单个入口队列。获取队列1008耦接到任务管理器DMA 1006以从系统存储器230接收任务描述符1012,并将任务描述符1012提供给配置队列1010,或将从任务描述符1012提取的配置数据1014提供给配置队列1010。
配置队列1010保持已提交用于执行的多个任务的配置数据1014。当任务在配置队列1010中时,内核DMA 324可从系统存储器230获取内核数据以存储在神经引擎314的内核提取电路432中,并且缓冲器DMA 320可从系统存储器230获取输入数据以存储在数据缓冲器318中。为了执行任务,内核提取电路432将预取的内核数据提供给神经引擎314的MAC404,并且数据缓冲器318将预取的输入数据提供给神经引擎314的MAC404。在一些实施方案中,配置队列1010可包括保持从所提交的任务描述符1012提取的配置数据1014的多个队列。如结合图13更详细地讨论,配置队列1010进一步耦接到神经处理器电路218的其他部件,以根据配置数据1014来配置神经处理器电路218。
图11是示出根据一个实施方案的使用任务队列1004检索任务描述符1012的图。任务队列1004包括对存储在系统存储器230中的任务描述符1012A至1012N的标引,诸如一组指针。为此,任务队列1004可包括存储头部参数1102、网络标识符(ID)1104、基址索引1106、尾部参数1108、计数参数1110和优先级参数1112的存储器。头部参数1102是指向在任务队列1004的头部存储任务描述符1012A的系统存储器230的位置的指针。网络ID 1104识别任务队列1004的头部处的任务描述符1012的神经网络900,并且基址索引1106是在任务队列1004的头部处标记有任务描述符1012A的网络ID 1104的基址表1114的索引。计数参数1110限定任务队列1004中的任务描述符1012的数量。优先级参数1112限定任务队列1004的优先级,任务仲裁器1002使用该任务队列的优先级在多个任务队列1004之间进行选择。
当选择特定任务队列1004时(例如,根据优先级参数1112),任务仲裁器1002标引头部参数1102、网络ID 1104、基址索引1106以及基址表1114以用于从系统存储器230检索任务描述符1012,并且将任务描述符1012放置到获取队列1008中以发起用于执行任务的承诺。在每个配置周期中,任务仲裁器1002可根据由任务队列1004的任务列表904限定的任务的次序(诸如通过检索下一个任务描述符1012B等)继续将任务描述符1012放置到获取队列1008中。
图12是示出根据一个实施方案的任务描述符1012的图。任务仲裁器1002将任务描述符1012从系统存储器230放置在获取队列1008中,然后将其传输到配置队列1010。配置队列1010中的最高优先级(例如,先进)任务描述符1012用于配置神经处理器电路218以用于在配置周期期间执行。任务描述符1012包括配置数据1014,该配置数据包括任务描述符标头1202和地址数据1204A至1204N(在下文中称为“地址数据1204”)。任务描述符标头1202包括配置神经任务管理器310的各种操作(包括与任务选择和任务切换相关的操作)的配置数据1014。例如,任务描述符标头1202可由任务仲裁器1002解析以提取对神经任务管理器310和神经处理电路218的其他部件进行编程的配置数据1014。任务描述符标头1202可包括识别任务的任务标识符(ID)1206、识别由任务实例化的神经网络900的神经网络标识符(ID)1208、限定神经任务管理器310是否应该在执行任务之后发起任务切换(例如,执行不同任务队列1004的任务)的任务开关参数1210、限定是否应该从系统存储器230或数据缓冲器318检索用于任务的输入数据的输入表面参数1212、限定任务的输出数据是否应该存储在系统存储器230或数据缓冲器318中的输出表面参数1214、促进神经处理器电路218的编程的各种(例如,基址)指针1216以及控制事件、异常或调试记录的一个或多个调试/异常参数1218。
地址数据1204A至1204N的每个实例(统称或单独地称为“地址数据1204”)限定用于对神经处理器电路218的部件进行编程的地址和数据有效载荷对。数据有效载荷可包括用于执行任务的输入数据和内核数据。例如,地址数据1204的每个实例包括限定数据有效载荷的寄存器数据、限定用于接收寄存器数据的神经处理电路218的目的地存储器位置的寄存器地址、以及限定待用寄存器数据写入的连续存储器位置(例如,寄存器)的数量的寄存器计数。在一些实施方案中,寄存器地址与存储在标头1202中的基址组合以限定每个存储器位置的完整地址。如果在编译时间处生成任务描述符1116,则实际运行时间地址可能是未知的。使用基址表1114避免了复制或更新具有动态分配地址的所有任务描述符。
图13是示出根据一个实施方案的获取队列1008和配置队列1010的框图。配置队列1010耦接到获取队列1008,该获取队列经由任务管理器DMA 1006耦接到系统存储器230。配置队列1010还耦接到一个或多个神经引擎314的光栅器714、数据缓冲器318的光栅器718、缓冲器DMA320的光栅器720和内核DMA 322的光栅器722。获取队列1008存储用于未决且不提交执行的任务的任务描述符1012(例如,包括任务描述符标头1202和地址数据1204A至1204N)。获取队列1008减少了将下一个任务描述符1012从系统存储器230读取到配置队列1010中的延迟。获取队列1008存储由任务仲裁器1002确定的最高优先级任务描述符1012。如果较高优先级的任务描述符1012已经入队(例如,从较高优先级的任务队列1004入队),则任务仲裁器1002可以替换存储在获取队列1008中的任务描述符1012。获取队列1008中的任务描述符1012不发起输入数据或内核预取,并且不影响任务队列优先级、指针或计数器。这样,通过将较高优先级的任务描述符1012写入获取队列1008中,可以容易地由较高优先级的任务描述符1012替换获取队列1008中的任务描述符1012。当存储在配置队列1010中的任务描述符1012由神经处理器电路218执行时,存储在获取队列1008中的任务描述符1012被传输到配置队列1010,并且后续任务的另一个任务描述符1012可以存储在获取队列1008中。
配置队列1010存储提交用于由神经处理器电路218执行的任务的任务描述符1012。在一些实施方案中,配置队列1010包括多个单独的队列1310,每个队列存储从任务描述符1012提取的配置数据1014(包括配置数据1014A至1014E)的一部分。此外,队列1310各自耦接到神经处理器电路218的相应部件,以用于用配置数据1014对部件进行编程。通过配置队列1010的操作,神经任务管理器310对光栅器714、718、720、722进行编程以执行上文在图7和图8中讨论的功能。例如,队列1310A耦接到神经引擎314的光栅器714以提供配置数据1014A,该配置数据控制输入缓冲电路402中的移位器410的操作以将输入数据的正确部分408转发到MAC 404,并且将完成的输出数据328发送到数据缓冲器318。队列1310B耦接到数据缓冲器318的光栅器718以提供配置数据1014B,该配置数据控制数据缓冲器318广播输入数据(例如,工作单元)以供神经引擎314处理。队列1310C是耦接到缓冲器DMA 320的光栅器720以提供配置数据1014C的读取队列,该配置数据控制缓冲器DMA 320以从系统存储器230检索输入数据(例如,图块)并将输入数据存储在数据缓冲器318中。队列1310D是耦接到缓冲器DMA 320的光栅器720以提供配置数据1014D的写入队列,该配置数据控制缓冲器DMA320以将输出数据存储在系统存储器230中。队列1310E耦接到内核DMA 322的光栅器722以提供配置数据1014E,该配置数据控制要接收哪些内核并将其分配给神经引擎314。在一些实施方案中,存储在配置队列1010中的任务描述符1012或配置数据1014不能被替换并且将以先进先出(FIFO)次序执行。
神经任务管理器架构处的示例过程
图14是示出根据一个实施方案的在神经处理器电路218中对任务进行管理的方法的流程图。该方法可包括不同的和/或附加的步骤,或者这些步骤可具有不同的次序。
CPU 208生成1402任务的任务描述符1012的任务列表904,这些任务当被神经处理器电路218执行时实例化神经网络900。例如,CPU 208可以从图像传感器202、系统存储器230、永久存储装置228、网络接口210或一些其他部件接收用于机器学习操作的输入数据。机器学习操作可包括推断操作或训练操作。神经网络900可包括内核数据和包括网络层的神经网络架构。将输入数据应用于神经网络900以执行机器学习操作。可在机器学习训练过程中计算神经网络900的内核数据和网络层。CPU 208执行编译操作(离线或运行中)以将神经网络描述900转变成在本文中被称为任务列表904的任务描述符1012的链接列表。每个任务由任务描述符1012限定,并且当被神经处理器电路218执行时,每个任务实例化单个网络层、多个网络层或网络层的一部分。任务的每个任务描述符1012包括配置数据1014,诸如任务描述符标头1202和限定神经处理器电路218地址和数据有效载荷对的地址数据1204。数据有效载荷可包括神经网络900的内核数据与输入数据。配置数据1014还包括配置光栅器714、718、720和722的操作以执行任务的指令。
CPU 208将任务描述符1012的任务列表904存储1404在系统存储器230中。在一些实施方案中,CPU 208或电子设备100外部的另一个CPU生成任务描述符1012并将任务描述符1012存储在永久存储装置228或一些其他非易失性存储器中。任务描述符1012连同内核数据和输入数据一起被加载到系统存储器230中以供神经处理器电路218使用。CPU 208可经由总线232和存储器控制器222耦接到系统存储器230。
任务列表904可包括标引系统存储器230中的任务描述符1012的位置的指针集。此外,CPU 208可更新任务描述符1102的参数,诸如存储地址或网络ID。例如,任务列表904可包括分别限定系统存储器230的开始寄存器地址和结束寄存器地址的头部参数1102和尾部参数1108,在该系统存储器中存储了多个任务描述符1012。在一些实施方案中,对任务列表904中的注册地址的标引可以是部分地址,并且基址表1114用于限定对系统存储器230的完整标引地址。在一些实施方案中,CPU 208可根据需要修补绝对地址。CPU 208可通过设置其基址寄存器来进一步配置神经处理器电路218。
神经任务管理器310的任务仲裁器1002将任务列表904入队1406以供神经处理器电路218执行。例如,神经任务管理器310包括多个任务队列1004A至1004N。任务队列1004可各自存储对任务列表904的标引。此外,根据任务队列1004所标引的任务列表904的优先级参数1112,任务队列1004被优先化以用于执行。
在一些实施方案中,CPU 208执行神经处理器电路218的一般配置以执行任务。如果神经处理器电路218尚未运行,则CPU 208可进一步启动神经处理器电路218。
任务仲裁器1002选择1408具有最高优先级的任务队列以用于执行。例如,在每个编程时间段中任务仲裁器1002基于任务队列1004的优先级参数或任务队列1004的任务列表904的比较来选择任务队列1004,并且从最高优先级任务队列1004执行来自任务列表904的任务。
神经处理器电路218执行1410来自所选择的任务队列的任务。例如,神经处理器电路218执行图8的方法以执行任务。神经任务管理器310的配置队列1010可将配置数据1014(或任务信息710)提供给神经处理器电路218的光栅器714、718、720、722,以对神经处理器电路218进行编程来执行任务,如图7所示。此外,该任务的执行可包括在任务处于配置队列1010中时处理预取的内核数据和输入数据。每个任务的执行可包括用于处理输入数据的多个处理回路,如图5和图6所示。任务仲裁器1002可在执行任务之后使任务从配置队列1010出队。
在一些实施方案中,为了执行任务,任务仲裁器1002控制任务管理器DMA 1006以检索任务列表904的任务的任务描述符1012并将任务描述符1012存储在获取队列1008中。在执行先前提交的任务之后,任务仲裁器1002可通过从配置队列1010移除任务描述符或任务的配置数据来使已执行任务出队。然后将当前任务的任务描述符1012或所提取的配置数据1014放置在来自获取队列1008的配置队列1010中。当该任务在配置队列1010中时,神经处理器电路218可发起内核DMA 324对内核数据从系统存储器230到内核提取电路432的预取操作,以及缓冲器DMA 320对输入数据从系统存储器230到数据缓冲器318的预取操作。
如果不同的任务队列具有较高的优先级,则在可能的情况下可以执行到具有较高优先级的任务队列的任务切换。为了执行任务切换(例如,到另一个机器学习操作),任务仲裁器1002用不同的任务队列1004中标引的另一个任务描述符替换获取队列1008中的任务。任务仲裁器1002可在任务切换完成之后通过将替换的任务存储到获取队列1008中来恢复由任务列表904限定的中断的机器学习操作。
在一些实施方案中,CPU 208确定1408任务列表904的优先级参数1110以选择任务队列。优先级参数1110限定机器学习操作的任务相对于由神经处理器电路218执行的其他机器学习操作的其他任务的优先级。CPU 208可促进多个机器学习操作的执行。机器学习操作可以是不同的,诸如通过使用不同的输入数据或不同的神经网络架构和内核数据。CPU208可以编程方式或基于用户输入来确定任务列表904的优先级参数。可以选择由具有最高优先级的任务队列1004标引的任务描述符1012以用于执行。任务队列的优先级由CPU208确定,或者由来自先前执行的任务描述符的信息动态确定。
任务仲裁器1002确定1412任务列表904的所有任务是否已被执行。如果任务列表904的任务尚未执行,则该过程返回到步骤1410,其中任务仲裁器1002执行任务列表904的未执行任务。
如果任务列表904中的每个任务已被执行,则任务仲裁器1002从任务队列1004移除1414任务列表904。又如,在执行任务之后,可以从任务队列1004中移除对任务的任务描述符1012的标引。该过程可结束。又如,该过程可以返回到1402,其中CPU 208可继续生成用于其他机器学习操作的任务的任务描述符。在这种意义上,可重复该过程以根据指定的任务优先级将任务放置到任务队列中以用于由神经处理器电路218执行机器学习操作。
虽然已经说明和描述了具体的实施方案和应用,但是应当理解,本发明不限于本文所公开的精确构造和部件以及,并且在不脱离本公开的实质和范围的情况下,可对本文所公开的方法和装置的布置、操作和细节进行对本领域的技术人员将显而易见的各种修改、改变和变型。
Claims (20)
1.一种神经处理器电路,包括:
神经引擎电路;和
神经任务管理器电路,所述神经任务管理器电路耦接到所述神经引擎,所述神经任务管理器包括:
任务队列电路,所述任务队列电路被配置为存储对包括实例化神经网络的任务的任务列表的标引,所述任务列表包括存储在所述神经处理器电路外部的存储器的位置中的任务的配置数据;和
任务仲裁器电路,所述任务仲裁器电路耦接到所述任务队列电路,所述任务仲裁器电路被配置为:
基于对存储在所述任务队列电路中的所述任务列表的所述标引,从所述神经处理器电路外部的所述存储器的所述位置检索所述任务的所述配置数据;以及
将所述配置数据的一部分提供给所述神经引擎电路,所述配置数据的所述部分对所述神经引擎电路进行编程以执行所述任务。
2.根据权利要求1所述的神经处理器电路,其中所述任务当被执行时实例化所述神经网络的单个网络层、所述神经网络的多个网络层或所述神经网络的网络层的一部分。
3.根据权利要求1所述的神经处理器电路,其中:
所述任务仲裁器电路被进一步配置为将所述配置数据存储在所述神经任务管理器电路的配置队列中,所述配置队列耦接到所述神经引擎电路并且被配置为将所述配置数据的所述部分提供给所述神经引擎电路;以及
所述神经处理器电路还包括:
内核直接存储器存取(DMA),所述内核直接存储器存取(DMA)被配置为当所述配置数据被存储在所述配置队列中时从所述神经处理器电路外部的所述存储器检索所述任务的内核数据;和
缓冲器直接存储器存取(DMA),所述缓冲器直接存储器存取(DMA)被配置为当所述配置数据被存储在所述配置队列中时从所述神经处理器电路外部的所述存储器检索所述任务的输入数据。
4.根据权利要求3所述的神经处理器电路,其中:
所述神经任务管理器电路还包括:
获取队列,所述获取队列耦接到所述配置队列;和
任务管理器直接存储器存取(DMA),所述任务管理器直接存储器存取(DMA)耦接到所述获取队列和所述任务仲裁器电路;以及
所述任务仲裁器电路被进一步配置为经由所述任务管理器DMA从所述神经处理器电路外部的所述存储器的所述位置检索所述任务的所述配置数据并且将所述配置数据存储在所述获取队列中,当将已执行任务的第二配置数据从所述配置队列移除时所述获取队列将所述配置数据提供给所述配置队列。
5.根据权利要求3所述的神经处理器电路,其中:
所述神经任务管理器电路还包括耦接到所述任务仲裁器电路的另一个任务队列电路,所述另一个任务队列电路被配置为存储对实例化另一个神经网络的其他任务的另一个任务列表的另一个标引,所述任务队列电路具有第一优先级并且所述另一个任务队列电路具有第二优先级;以及
所述任务仲裁器电路被配置为基于所述第一优先级和所述第二优先级的比较将(i)所述任务的所述配置数据或(ii)所述另一个任务的另一个配置数据中的一者存储在所述获取队列中。
6.根据权利要求1所述的神经处理器电路,还包括数据缓冲器,所述数据缓冲器耦接到所述神经处理器电路外部的所述存储器和所述神经引擎电路,并且其中所述任务仲裁器电路被进一步配置为将所述配置数据的另一个部分提供给所述数据缓冲器,所述配置数据的所述另一个部分对所述数据缓冲器进行编程以将所述任务的输入数据的工作单元广播到所述神经引擎电路。
7.根据权利要求6所述的神经处理器电路,还包括缓冲器直接存储器存取(DMA),所述缓冲器直接存储器存取(DMA)耦接到所述数据缓冲器和所述神经处理器电路外部的所述存储器,并且其中:
所述任务仲裁器电路被进一步配置为将所述配置数据的第三部分提供给所述缓冲器DMA,所述配置数据的所述第三部分对所述缓冲器DMA进行编程以从所述神经处理器电路外部的所述存储器检索所述任务的所述输入数据的图块并将所述图块存储在所述数据缓冲器中;以及
所述图块包括多个工作单元。
8.根据权利要求1所述的神经处理器电路,其中:
所述神经引擎电路包括:
输入缓冲电路,所述输入缓冲电路耦接到所述神经任务管理器;和
乘加(MAD)电路,所述乘加(MAD)电路耦接到所述输入缓冲电路;以及
所述配置数据的所述部分对所述输入缓冲电路进行编程,以将存储在所述输入缓冲电路中的所述任务的输入数据的一部分提供给所述MAD电路。
9.根据权利要求8所述的神经处理器电路,还包括数据缓冲器,所述数据缓冲器耦接到所述神经处理器电路外部的所述存储器和所述神经引擎电路,其中所述神经引擎还包括输出电路,并且其中所述配置数据的所述至少一部分对所述输出电路进行编程以将来自所述MAD电路的输出数据提供给所述数据缓冲器。
10.根据权利要求1所述的神经处理器电路,还包括内核直接存储器存取(DMA),所述内核直接存储器存取(DMA)耦接到所述神经处理器电路外部的所述存储器和所述神经引擎电路,并且其中:
所述任务仲裁器电路被进一步配置为将所述配置数据的另一个部分提供给所述内核DMA,所述配置数据的所述另一个部分对所述内核DMA进行编程以从所述神经处理器电路外部的所述存储器检索内核数据并将所述内核数据提供给所述神经引擎电路以执行所述任务。
11.一种在神经处理器电路中对任务进行管理的方法,包括:
在所述神经处理器电路的任务队列电路中存储对实例化神经网络的任务的任务列表的标引,所述任务列表包括存储在所述神经处理器电路外部的存储器的位置中的任务的配置数据;
基于对存储在所述任务队列电路中的所述任务列表的所述标引,从所述神经处理器电路外部的所述存储器的所述位置检索所述配置数据;以及
将所述配置数据的一部分提供给所述神经处理器电路的神经引擎电路,所述配置数据的所述部分对所述神经引擎电路进行编程以执行所述任务。
12.根据权利要求11所述的方法,其中所述任务当被执行时实例化所述神经网络的单个网络层、所述神经网络的多个网络层或所述神经网络的网络层的一部分。
13.根据权利要求11所述的方法,还包括:
将所述配置数据存储在所述神经处理器电路的配置队列中;以及
将所述配置数据的所述部分从所述配置队列提供给所述神经引擎电路;
当所述配置数据被存储在所述配置队列中时,从所述外部存储器检索所述任务的内核数据;并且
当所述配置数据被存储在所述配置队列中时,从所述外部存储器检索所述任务的输入数据。
14.根据权利要求13所述的方法,还包括:
经由所述神经处理器电路的任务管理器直接存储器存取(DMA)从所述外部存储器的所述位置检索所述任务的所述配置数据;以及
将所述配置数据存储在所述神经处理器电路的获取队列中;并且
当从所述配置队列移除已执行任务的另一个配置数据时,将来自所述获取队列的所述配置数据提供给所述配置队列。
15.根据权利要求13所述的方法,还包括:
在另一个任务队列电路中存储对实例化另一个神经网络的其他任务的另一个任务列表的另一个标引,所述任务队列电路具有第一优先级并且所述另一个任务队列电路具有第二优先级;以及
基于所述第一优先级和所述第二优先级的比较将(i)所述任务的所述配置数据或(ii)所述另一个任务的其他配置数据中的一者存储在所述获取队列中。
16.根据权利要求11所述的方法,还包括将所述配置数据的另一个部分提供给所述神经处理器电路的数据缓冲器,所述配置数据的所述另一个部分对所述数据缓冲器进行编程以将所述任务的输入数据的工作单元广播到所述神经引擎电路。
17.根据权利要求16所述的方法,还包括将所述配置数据的第三部分提供给耦接到所述数据缓冲器和所述外部存储器的所述神经处理器电路的缓冲器直接存储器存取(DMA),所述配置数据的所述第三部分对所述缓冲器DMA进行编程以从所述外部存储器检索所述任务的所述输入数据的图块并将所述图块存储在所述数据缓冲器中,所述图块包括多个工作单元。
18.根据权利要求11所述的方法,其中:
所述配置数据的所述部分对所述神经引擎电路的输入缓冲电路进行编程,以将存储在所述输入缓冲电路中的所述任务的输入数据的一部分提供给所述神经引擎电路的乘加(MAD)电路;以及
所述配置数据的所述至少一部分对所述神经引擎电路的输出电路进行编程,以将来自所述MAD电路的输出数据提供给所述神经处理器电路的数据缓冲器。
19.根据权利要求11所述的方法,还包括将所述配置数据的另一个部分提供给耦接到所述神经处理器电路外部的所述存储器和所述神经引擎电路的内核直接存储器存取(DMA),所述配置数据的所述另一个部分对所述内核DMA进行编程以从所述神经处理器电路外部的所述存储器检索内核数据并将所述内核数据提供给所述神经引擎电路以执行所述任务。
20.一种包括神经处理器电路的集成电路(IC)系统,所述神经处理器电路包括:
神经引擎电路;和
神经任务管理器电路,所述神经任务管理器电路耦接到所述神经引擎电路,所述神经任务管理器电路包括:
任务队列电路,所述任务队列电路被配置为存储对实例化神经网络的任务的任务列表的标引,所述任务列表包括存储在所述神经处理器电路外部的存储器的位置中的任务的配置数据;和
任务仲裁器电路,所述任务仲裁器电路耦接到所述任务队列电路,所述任务仲裁器电路被配置为:
基于对存储在所述任务队列电路中的所述任务列表的所述标引,从所述神经处理器电路外部的所述存储器的所述位置检索所述任务的所述配置数据;以及
将所述配置数据的至少一部分提供给所述神经引擎电路,所述配置数据的所述至少一部分对所述神经引擎电路进行编程以执行所述任务。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/971,872 | 2018-05-04 | ||
US15/971,872 US20190340490A1 (en) | 2018-05-04 | 2018-05-04 | Systems and methods for assigning tasks in a neural network processor |
PCT/US2019/025892 WO2019212688A1 (en) | 2018-05-04 | 2019-04-04 | Systems and methods for assigning tasks in a neural network processor |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112074846A true CN112074846A (zh) | 2020-12-11 |
Family
ID=66286990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980029309.4A Pending CN112074846A (zh) | 2018-05-04 | 2019-04-04 | 用于在神经网络处理器中分配任务的系统和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20190340490A1 (zh) |
EP (1) | EP3788555A1 (zh) |
JP (3) | JP7098753B2 (zh) |
KR (2) | KR102607234B1 (zh) |
CN (1) | CN112074846A (zh) |
WO (1) | WO2019212688A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210132945A1 (en) * | 2019-11-04 | 2021-05-06 | Apple Inc. | Chained Buffers In Neural Network Processor |
CN112949847A (zh) * | 2021-03-29 | 2021-06-11 | 上海西井信息科技有限公司 | 神经网络算法加速系统、调度系统及调度方法 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7038608B2 (ja) * | 2018-06-15 | 2022-03-18 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
US11295205B2 (en) * | 2018-09-28 | 2022-04-05 | Qualcomm Incorporated | Neural processing unit (NPU) direct memory access (NDMA) memory bandwidth optimization |
US11188338B2 (en) * | 2019-06-13 | 2021-11-30 | Fungible, Inc. | Context value retrieval prior to or parallel with expansion of previous symbol for context-decoding in range decoder |
US11461622B2 (en) * | 2019-06-28 | 2022-10-04 | Amazon Technologies, Inc. | Dynamic code loading for multiple executions on a sequential processor |
CN111126589B (zh) * | 2019-12-31 | 2022-05-20 | 昆仑芯(北京)科技有限公司 | 神经网络数据处理装置、方法和电子设备 |
TWI760690B (zh) * | 2020-02-03 | 2022-04-11 | 瑞昱半導體股份有限公司 | 一種資料傳輸系統及其資源配置方法 |
US11599780B2 (en) | 2020-03-02 | 2023-03-07 | Apple Inc. | Asynchronous task execution for neural processor circuit |
JP6834097B1 (ja) * | 2020-05-15 | 2021-02-24 | エッジコーティックス ピーティーイー. リミテッド | 推論のニューラルネットワークアクセラレータのハードウェア固有分割 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150007182A1 (en) * | 2013-06-27 | 2015-01-01 | Microsoft Corporation | Iteration support in a heterogeneous dataflow engine |
US20160028635A1 (en) * | 2014-07-24 | 2016-01-28 | Hisense Co., Ltd. | Traffic Control Method, Device And Storage Medium |
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
CN106203621A (zh) * | 2016-07-11 | 2016-12-07 | 姚颂 | 用于卷积神经网络计算的处理器 |
US20160379109A1 (en) * | 2015-06-29 | 2016-12-29 | Microsoft Technology Licensing, Llc | Convolutional neural networks on hardware accelerators |
CN106415719A (zh) * | 2014-06-19 | 2017-02-15 | 苹果公司 | 使用说话者识别的语音信号的稳健端点指示 |
CN107679620A (zh) * | 2017-04-19 | 2018-02-09 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
US20180046900A1 (en) * | 2016-08-11 | 2018-02-15 | Nvidia Corporation | Sparse convolutional neural network accelerator |
US20180046903A1 (en) * | 2016-08-12 | 2018-02-15 | DeePhi Technology Co., Ltd. | Deep processing unit (dpu) for implementing an artificial neural network (ann) |
CN107729996A (zh) * | 2016-08-11 | 2018-02-23 | 图芯芯片技术有限公司 | 零系数跳过卷积神经网络引擎 |
US20180121796A1 (en) * | 2016-11-03 | 2018-05-03 | Intel Corporation | Flexible neural network accelerator and methods therefor |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7360102B2 (en) | 2004-03-29 | 2008-04-15 | Sony Computer Entertainment Inc. | Methods and apparatus for achieving thermal management using processor manipulation |
CN112887360A (zh) * | 2015-03-16 | 2021-06-01 | 利维帕尔森有限公司 | 资源的优先级排序及通信信道的建立 |
US10671428B2 (en) * | 2015-09-08 | 2020-06-02 | Apple Inc. | Distributed personal assistant |
US10664751B2 (en) * | 2016-12-01 | 2020-05-26 | Via Alliance Semiconductor Co., Ltd. | Processor with memory array operable as either cache memory or neural network unit memory |
US20170351555A1 (en) * | 2016-06-03 | 2017-12-07 | Knuedge, Inc. | Network on chip with task queues |
US10795836B2 (en) * | 2017-04-17 | 2020-10-06 | Microsoft Technology Licensing, Llc | Data processing performance enhancement for neural networks using a virtualized data iterator |
US10614357B2 (en) * | 2017-04-17 | 2020-04-07 | Cerebras Systems Inc. | Dataflow triggered tasks for accelerated deep learning |
US10186011B2 (en) * | 2017-04-28 | 2019-01-22 | Intel Corporation | Programmable coarse grained and sparse matrix compute hardware with advanced scheduling |
CN109478144B (zh) * | 2017-07-05 | 2021-12-14 | 上海寒武纪信息科技有限公司 | 一种数据处理装置和方法 |
US11157287B2 (en) * | 2017-07-24 | 2021-10-26 | Tesla, Inc. | Computational array microprocessor system with variable latency memory access |
EP3738081A1 (en) * | 2018-03-22 | 2020-11-18 | Amazon Technologies Inc. | Processing for multiple input data sets |
-
2018
- 2018-05-04 US US15/971,872 patent/US20190340490A1/en active Pending
-
2019
- 2019-04-04 JP JP2020560951A patent/JP7098753B2/ja active Active
- 2019-04-04 KR KR1020207034158A patent/KR102607234B1/ko active Application Filing
- 2019-04-04 EP EP19719694.2A patent/EP3788555A1/en active Pending
- 2019-04-04 KR KR1020237040296A patent/KR20230163590A/ko active Application Filing
- 2019-04-04 CN CN201980029309.4A patent/CN112074846A/zh active Pending
- 2019-04-04 WO PCT/US2019/025892 patent/WO2019212688A1/en active Application Filing
-
2022
- 2022-06-29 JP JP2022104387A patent/JP7322254B2/ja active Active
-
2023
- 2023-07-26 JP JP2023121917A patent/JP2023153160A/ja active Pending
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150007182A1 (en) * | 2013-06-27 | 2015-01-01 | Microsoft Corporation | Iteration support in a heterogeneous dataflow engine |
CN106415719A (zh) * | 2014-06-19 | 2017-02-15 | 苹果公司 | 使用说话者识别的语音信号的稳健端点指示 |
US20160028635A1 (en) * | 2014-07-24 | 2016-01-28 | Hisense Co., Ltd. | Traffic Control Method, Device And Storage Medium |
US20160379109A1 (en) * | 2015-06-29 | 2016-12-29 | Microsoft Technology Licensing, Llc | Convolutional neural networks on hardware accelerators |
CN107836001A (zh) * | 2015-06-29 | 2018-03-23 | 微软技术许可有限责任公司 | 硬件加速器上的卷积神经网络 |
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
CN106203621A (zh) * | 2016-07-11 | 2016-12-07 | 姚颂 | 用于卷积神经网络计算的处理器 |
US20180046900A1 (en) * | 2016-08-11 | 2018-02-15 | Nvidia Corporation | Sparse convolutional neural network accelerator |
CN107729996A (zh) * | 2016-08-11 | 2018-02-23 | 图芯芯片技术有限公司 | 零系数跳过卷积神经网络引擎 |
US20180046903A1 (en) * | 2016-08-12 | 2018-02-15 | DeePhi Technology Co., Ltd. | Deep processing unit (dpu) for implementing an artificial neural network (ann) |
US20180121796A1 (en) * | 2016-11-03 | 2018-05-03 | Intel Corporation | Flexible neural network accelerator and methods therefor |
CN107679620A (zh) * | 2017-04-19 | 2018-02-09 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
Non-Patent Citations (1)
Title |
---|
张军阳;郭阳;扈啸;: "二维矩阵卷积的并行计算方法", 浙江大学学报(工学版), vol. 52, no. 03, 15 March 2018 (2018-03-15), pages 515 - 523 * |
Cited By (4)
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 |
CN112949847A (zh) * | 2021-03-29 | 2021-06-11 | 上海西井信息科技有限公司 | 神经网络算法加速系统、调度系统及调度方法 |
CN112949847B (zh) * | 2021-03-29 | 2023-07-25 | 上海西井科技股份有限公司 | 神经网络算法加速系统、调度系统及调度方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2022136092A (ja) | 2022-09-15 |
JP2021520572A (ja) | 2021-08-19 |
KR20230163590A (ko) | 2023-11-30 |
US20190340490A1 (en) | 2019-11-07 |
JP7322254B2 (ja) | 2023-08-07 |
JP2023153160A (ja) | 2023-10-17 |
JP7098753B2 (ja) | 2022-07-11 |
EP3788555A1 (en) | 2021-03-10 |
WO2019212688A1 (en) | 2019-11-07 |
KR102607234B1 (ko) | 2023-11-28 |
KR20210002662A (ko) | 2021-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112055862B (zh) | 可扩展神经网络处理引擎 | |
KR102607234B1 (ko) | 뉴럴 네트워크 프로세서에서 태스크들을 할당하기 위한 시스템들 및 방법들 | |
US11640316B2 (en) | Compiling and scheduling transactions in neural network processor | |
US11487846B2 (en) | Performing multiply and accumulate operations in neural network processor | |
US20240069957A1 (en) | Systems and Methods for Task Switching in Neural Network Processor | |
US11200490B2 (en) | Processing group convolution in neural network processor | |
CN112074847A (zh) | 拆分用于在神经网络处理器中处理的输入数据 | |
US20190340488A1 (en) | Compression of kernel data for neural network operations | |
US11934941B2 (en) | Asynchronous task execution for neural processor circuit | |
US20220237438A1 (en) | Task context switch for neural processor circuit | |
US20220237439A1 (en) | Branching operation for neural processor circuit | |
US20220036158A1 (en) | Task skew management for neural processor circuit | |
US20230394276A1 (en) | Subtask storage for streaming convolutions in neural network processor | |
CN116830119A (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 |