CN113792847A - 加速的深度学习的设备、方法和系统 - Google Patents

加速的深度学习的设备、方法和系统 Download PDF

Info

Publication number
CN113792847A
CN113792847A CN202110540433.6A CN202110540433A CN113792847A CN 113792847 A CN113792847 A CN 113792847A CN 202110540433 A CN202110540433 A CN 202110540433A CN 113792847 A CN113792847 A CN 113792847A
Authority
CN
China
Prior art keywords
weight
memory
activation
neuron
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110540433.6A
Other languages
English (en)
Other versions
CN113792847B (zh
Inventor
肖恩·利
迈克尔·莫里森
迈克尔·埃德温·詹姆斯
加里·R·劳特巴赫
斯里坎斯·阿雷卡普迪
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.)
Brain Systems
Original Assignee
Brain Systems
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 Brain Systems filed Critical Brain Systems
Priority to CN202110540433.6A priority Critical patent/CN113792847B/zh
Publication of CN113792847A publication Critical patent/CN113792847A/zh
Application granted granted Critical
Publication of CN113792847B publication Critical patent/CN113792847B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06N3/045Combinations of networks
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • 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
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)
  • Image Analysis (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请涉及加速的深度学习的设备、方法和系统。高级深度学习中的技术提高了精度、性能和能效中的一个或多个,例如,学习精度、预测精度、学习速度、学习性能和学习能效。处理元件阵列对小波数据执行基于流的计算。每个处理元件具有相应的计算元件和相应的路由元件。每个计算元件都有处理资源和存储资源。每个路由器都能够经由小波与2D网格中至少最近的邻居进行通信。随机梯度下降、小批量梯度下降和连续传播梯度下降是可用于训练由处理元件建模的神经网络的权重的技术。反向检查点可用于减少训练期间的内存使用。

Description

加速的深度学习的设备、方法和系统
本申请是申请日为2018年2月23日、国际申请号为PCT/IB2018/051128、发明名称为“加速的深度学习”的PCT申请的中国国家阶段申请的分案申请,该中国国家阶段申请进入中国国家阶段的进入日为2019年8月22日、申请号为201880013504.3,其全部内容结合于此作为参考。
相关申请的交叉引用
在本申请类型允许的范围内,本申请实际上通过引用包含以下申请,这些申请在构成本发明时都与本申请共同拥有:
2018年2月9日提交的、第一发明人名为Sean LIE并且题为“FABRIC VECTORS FORDEEP LEARNING ACCELERATION”的美国临时申请序列号62/628,784(待审案件号CS-17-05);
2018年2月9日提交的、第一发明人名为Sean LIE并且题为“DATA STRUCTUREDESCRIPTORS FOR DEEP LEARNING ACCELERATION”的美国临时申请序列号62/628,773(待审案件号CS-17-12);
2017年11月1日提交的、第一发明人名为Sean LIE并且题为“NEURON SMEARINGFOR ACCELERATED DEEP LEARNING”的美国临时申请序列号62/580,207(待审案件号CS-17-01);
2017年8月8日提交的、第一发明人名为Sean LIE并且题为“DATAFLOW TRIGGEREDTASKS FOR ACCELERATED DEEP LEARNING”的美国临时申请序列号62/542,645(待审案件号CS-17-02);
2017年8月8日提交的、第一发明人名为Sean LIE并且题为“TASKSYNCHRONIZATION FOR ACCELERATED DEEP LEARNING”的美国临时申请序列号62/542,657(待审案件号CS-17-06);
2017年6月19日提交的、第一发明人名为Sean LIE并且题为“WAVELETREPRESENTATION FOR ACCELERATED DEEP LEARNING”的美国临时申请序列号62/522,065(待审案件号CS-17-03);
2017年6月19日提交的、第一发明人名为Sean LIE并且题为“CONTROL WAVELETFOR ACCELERATED DEEP LEARNING”的美国临时申请序列号62/522,081(待审案件号CS-17-04);
2017年6月15日提交的、第一发明人名为Michael Edwin JAMES并且题为“INCREASED CONCURRENCY AND EFFICIENCY OF DEEP NETWORK TRAINING VIA CONTINUOUSPROPAGATION”的美国临时申请序列号62/520,433(待审案件号CS-17-13B);
2017年6月11日提交的、第一发明人名为Sean LIE并且题为“ACCELERATED DEEPLEARNING”的美国临时申请序列号62/517,949(待审案件号CS-17-14B);
2017年4月17日提交的、第一发明人名为Sean LIE并且题为“ACCELERATED DEEPLEARNING”的美国临时申请序列号62/486,372(待审案件号CS-17-14);以及
2017年2月23日日提交的、第一发明人名为Michael Edwin JAMES并且题为“INCREASED CONCURRENCY AND EFFICIENCY OF DEEP NETWORK TRAINING VIA CONTINUOUSPROPAGATION”的美国临时申请序列号62/462,640(待审案件号CS-17-13)。
技术领域
需要在加速的深度学习方面的进步,以提高精度、性能和能效中的一个或多个。
背景技术
除非明确指出是公开的或众所周知的,否则在本文提及的技术和概念(包括用于上下文、定义或比较目的技术和概念)不应被解释为承认这些技术和概念先前是公开已知的或以其他方式是现有技术的一部分。出于所有目的,在本文引用的所有参考文献(如果有的话)(包括专利、专利申请和出版物)的全部内容实际上通过引入结合于此,无论其是否具体引入。
发明内容
本发明可以以多种方式实现,例如,作为过程、制品、设备、系统、物质组合物和计算机可读介质,例如,计算机可读存储介质(例如,光和/或磁大容量存储装置(例如,磁盘)中的介质、具有非易失性存储器(例如,闪存)的集成电路)或者在其中通过光或电子通信链路发送程序指令的计算机网络。具体实施方式提供了本发明的一个或多个实施方式的说明,这些实施方式能够改善成本、盈利能力、性能、效率以及在上述领域中的使用效用。具体实施方式包括引言,以便于理解具体实施方式的其余部分。引言包括根据本文描述的概念的系统、方法、制品和计算机可读介质中的一个或多个的示例实施方式。如结论中更详细讨论的,本发明包括在所发布的权利要求范围内的所有可能的修改和变化。
附图说明
图1示出了使用深度学习加速器的神经网络训练和推理系统的实施方式的选定细节。
图2示出了使用深度学习加速器的与神经网络训练和推理相关联的软件元件的实施方式的选定细节。
图3示出了使用深度学习加速器的与训练神经网络和使用训练的神经网络执行推理相关联的处理的实施方式的选定细节。
图4示出了深度学习加速器的实施方式的选定细节。
图5示出了深度学习加速器的处理元件的实施方式的选定细节。
图6示出了处理元件的路由器的实施方式的选定细节。
图7示出了与处理元件的路由器相关联的处理的实施方式的选定细节。
图8示出了处理元件的计算元件的实施方式的选定细节。
图9示出了为任务启动处理小波的实施方式的选定细节。
图10示出了与处理元件的计算元件相关联的指令处理的实施方式的选定细节。
图11示出了经由收尾的与依赖性管理相关联的流程的实施方式的选定细节。
图12示出了与激活累积和收尾相关联的流程的实施方式的选定细节,随后是部分和计算和收尾。
图13A示出了稀疏小波的实施方式的选定细节。
图13B示出了密集小波的实施方式的选定细节。
图14示出了创建和传输小波的实施方式的选定细节。
图15A示出了接收小波的实施方式的选定细节。
图15B示出了消耗小波的实施方式的选定细节。
图16示出了阻止指令和解除阻止指令执行的实施方式的选定细节。
图17示出了神经网络的实施方式的选定细节。
图18A示出了将处理元件分配给神经元的第一实施方式的选定细节。
图18B示出了将处理元件分配给神经元的第二实施方式的选定细节。
图19示出了在多个处理元件上涂抹神经元的实施方式的选定细节。
图20示出了在分割的神经元的部分之间通信的实施方式的选定细节。
图21A示出了结构输入数据结构描述符的实施方式的选定细节。
图21B示出了结构输出数据结构描述符的实施方式的选定细节。
图21C示出了1D内存矢量数据结构描述符的实施方式的选定细节。
图21D示出了4D内存矢量数据结构描述符的实施方式的选定细节。
图21E示出了循环内存缓冲器数据结构描述符的实施方式的选定细节。
图22A示出了循环内存缓冲器扩展数据结构描述符的实施方式的选定细节。
图22B示出了4D内存矢量扩展数据结构描述符的实施方式的选定细节。
图23示出了根据数据结构描述符访问操作数的选定细节。
图24示出了解码数据结构描述符的实施方式的选定细节。
图25A示出了多操作数指令的实施方式的选定细节。
图25B示出了一源无目的地操作数指令的实施方式的选定细节。
图25C示出了即时指令的实施方式的选定细节。
图26A示出了随机梯度下降(SGD)的管线流程的实施方式。
图26B示出了用于小批量梯度下降(MBGD)的管线流程的实施方式。
图26C示出了用于连续传播梯度下降(CPGD)的管线流程的实施方式。
图26D示出了具有反向检查点(RCP)的连续传播梯度下降(CPGD)的管线流程的实施方式。
图27A至图27E示出了根据SGD、MBGD、CPGD和RCP处理的前向传递和后向传递实施方式的各个方面。
图28A示出了矩阵(m)乘以矢量(v)的一般操作。
图28B示出了在前向传递、增量传递和链式传递中使用的内存结构的各种表示。
图29示出了在前向传递状态机中使用的任务的实施方式。
图中的附图标记列表
Figure BDA0003071381410000051
Figure BDA0003071381410000061
Figure BDA0003071381410000071
Figure BDA0003071381410000081
Figure BDA0003071381410000091
Figure BDA0003071381410000101
Figure BDA0003071381410000111
Figure BDA0003071381410000121
Figure BDA0003071381410000131
Figure BDA0003071381410000141
Figure BDA0003071381410000151
Figure BDA0003071381410000161
Figure BDA0003071381410000171
Figure BDA0003071381410000181
Figure BDA0003071381410000191
Figure BDA0003071381410000201
Figure BDA0003071381410000211
Figure BDA0003071381410000221
Figure BDA0003071381410000231
Figure BDA0003071381410000241
具体实施方式
下面提供了本发明的一个或多个实施方式的详细描述以及示出本发明的选定细节的附图。结合实施方式描述本发明。本文的实施方式被理解为仅仅是示例性的,本发明明确地不限于本文的任何或所有实施方式,并且本发明包括许多替换、修改和等同物。为了避免阐述中的单调,可以将各种单词标签(例如:第一、最后、某些、各种、进一步、其他、特定、精选、一些和值得注意的)应用于不同的实施方式集合;如此处所使用的,这种标签显然不意味着传达质量或任何形式的偏好或偏见,而仅仅是为了方便地在不同的集合之间进行区分。所公开的过程的一些操作的顺序在本发明的范围内是可变的。在多个实施方式用于描述过程、系统和/或程序指令特征的变化的任何地方,可以设想根据预定或动态确定的标准执行分别对应于多个实施方式的多个操作模式中的一个的静态和/或动态选择的其他实施方式。在以下描述中阐述了许多具体细节,以提供对本发明的透彻理解。提供细节是为了举例的目的,并且本发明可以根据权利要求来实施,而没有一些或全部细节。为了清楚起见,没有详细描述与本发明相关的技术领域中已知的技术材料,从而不会不必要地模糊本发明。
引言
包含该引言,只是为了便于更快地理解具体实施方式;本发明不限于引言中提出的概念(包括明确的示例,如果有的话),因为任何引言的段落都必须是整个主题的简略视图,并且不意味着是详尽的或限制性的描述。例如,下面的引言仅向某些实施方式提供了受空间和组织限制的概述信息。在说明书的其余部分,还讨论了许多其他实施方式,包括权利要求最终将引用的那些实施方式。
在概念上与加速的深度学习的连续传播相关的一个方面,高级深度学习中的技术提高了精度、性能和能效中的一个或多个,例如,学习精度、预测精度、学习速度、学习性能和学习能效。处理元件阵列对小波数据执行基于流的计算。每个处理元件具有相应的计算元件和相应的路由元件。每个计算元件都有处理资源和存储资源。每个路由器都能够经由小波与2D网格中至少最近的邻居进行通信。随机梯度下降、小批量梯度下降和连续传播梯度下降是可用于训练由处理元件建模的神经网络的权重的技术。反向检查点可用于减少训练期间的内存使用
在概念上与用于加速的深度学习的结构矢量相关的一个方面,高级深度学习中的技术提高了精度、性能和能效中的一个或多个。处理元件阵列对小波数据执行基于流的计算。每个处理元件具有相应的计算元件和相应的路由元件。每个计算元件都有内存。每个路由器都能够经由小波与2D网格中至少最近的邻居进行通信。由每个小波中相应的虚拟信道说明符和每个路由器中的路由配置信息控制路由。由计算元件执行的指令包括一个或多个操作数说明符,其中一些操作数说明符指定存储数据结构描述符的数据结构寄存器。数据结构描述符将操作数描述为结构矢量或内存矢量。数据结构描述符还描述了结构矢量的长度、结构矢量是否适合微线程以及并行接收、传输和/或处理的结构矢量的多个数据元素。数据结构描述符还指定与处理结构矢量相关的虚拟信道和任务识别信息,是否在接收到控制小波时终止以及是否将输出小波标记为控制小波。
在概念上与用于加速的深度学习的数据结构描述符相关的一个方面,高级深度学习中的技术提高了精度、性能和能效中的一个或多个。处理元件阵列对小波数据执行基于流的计算。每个处理元件具有相应的计算元件和相应的路由元件。每个计算元件都有内存。每个路由器都能够经由小波与2D网格中至少最近的邻居进行通信。由每个小波中相应的虚拟信道说明符和每个路由器中的路由配置信息控制路由。由计算元件执行的指令包括一个或多个操作数说明符,其中一些操作数说明符指定存储数据结构描述符的数据结构寄存器。数据结构描述符将操作数描述为结构矢量或内存矢量。数据结构描述符将操作数描述为结构矢量或内存矢量。数据结构描述符还将内存矢量描述为一维矢量、四维矢量或循环缓冲器矢量中的一个。可选地,数据结构描述符指定存储扩展数据结构描述符的扩展数据结构寄存器。扩展数据结构描述符指定与四维矢量或循环缓冲器矢量相关的参数。
在概念上与用于加速的深度学习的神经元涂抹相关的一个方面,高级深度学习中的技术提高了精度、性能和能效中的一个或多个。处理元件阵列对小波数据执行基于流的计算。每个处理元件具有相应的计算元件和相应的路由元件。每个计算元件都有内存。每个路由器都能够经由小波与2D网格中至少最近的邻居进行通信。由每个小波中相应的虚拟信道说明符和每个路由器中的路由配置信息控制路由。使用多个处理元件阵列的资源来实现至少第一单个神经元。使用多个处理元件中的一个或多个的资源来实现第二神经元的至少一部分。在一些使用场景中,前述神经元实现方式通过使单个神经元能够使用多个处理元件的计算资源和/或处理元件上的计算负载平衡,能够实现更高的性能,同时保持处理元件的传入激活的局部性。
在概念上与加速的深度学习的任务同步相关的一个方面,高级深度学习中的技术提高了精度、性能和能效中的一个或多个。处理元件阵列对小波数据执行基于流的计算。每个处理元件具有相应的计算元件和相应的路由元件。每个计算元件都有内存。每个路由器都能够经由小波与2D网格中至少最近的邻居进行通信。由每个小波中相应的虚拟信道说明符和每个路由器中的路由配置信息控制路由。特定一个计算元件有条件地选择指定特定一个虚拟信道的先前接收的小波,用于任务启动。条件选择排除先前接收的小波,用于选择,直到为特定虚拟信道保持的至少阻止/解除阻止状态处于解除阻止状态。计算元件执行阻止/解除阻止指令来修改阻止/解除阻止状态。
在概念上与数据流触发的加速的深度学习任务相关的一个方面,高级深度学习中的技术提高了精度、性能和能效中的一个或多个。处理元件阵列对小波数据执行基于流的计算。每个处理元件具有相应的计算元件和相应的路由元件。每个计算元件都有内存。每个路由器都能够经由小波与2D网格中至少最近的邻居进行通信。由每个小波中相应的虚拟信道说明符和每个路由器中的路由配置信息控制路由。特定一个计算元件接收包括特定虚拟信道说明符和特定数据元素的特定小波。至少部分基于特定虚拟信道说明符,从特定计算元件的内存中读取指令。特定数据元素用作输入操作数,以执行至少一条指令。
在概念上与用于加速的深度学习的控制小波相关的一个方面,高级深度学习中的技术提高了精度、性能和能效中的一个或多个。处理元件阵列对小波数据执行基于流的计算。每个处理元件具有相应的计算元件和相应的路由元件。每个计算元件都有内存。每个路由器都能够经由小波与2D网格中至少最近的邻居进行通信。特定一个计算元件接收小波。如果小波的控制说明符是第一值,则根据小波的索引说明符从特定计算元件的内存中读取指令。如果控制说明符是第二值,则根据小波的虚拟信道说明符从特定计算元件的内存中读取指令。然后,特定计算元件初始化指令的执行。
在概念上与用于加速的深度学习的小波表示相关的一个方面,高级深度学习中的技术提高了精度、性能和能效中的一个或多个。处理元件阵列对小波数据执行基于流的计算。每个处理元件具有相应的计算元件和相应的路由元件。每个计算元件都有专用存储器。每个路由器都能够与2D网格中至少最近的邻居进行通信。根据包括索引说明符、虚拟信道说明符、索引说明符、数据元素说明符和可选控制/数据说明符的表示,经由小波进行通信。虚拟信道说明符和索引说明符与一个或多个指令相关联。索引说明符与一个或多个指令的至少第一指令操作数相关联。数据元素与一个或多个指令的至少第二指令操作数相关联。
加速的深度学习的第一示例是使用深度学习加速器来训练神经网络。加速的深度学习的第二示例是使用深度学习加速器操作训练的神经网络,来执行推理。加速的深度学习的第三示例是使用深度学习加速器来训练神经网络,并且随后利用训练的神经网络、来自该神经网络的信息以及该神经网络的变体中的任何一个或多个来执行推理。
神经网络的示例包括全连接神经网络(FCNN)、递归神经网络(RNN)、卷积神经网络(CNN)、长短期记忆(LSTM)网络、自动编码器、深层信念网络和生成对抗网络。
训练神经网络的一个示例是确定与神经网络相关联的一个或多个权重,例如,通过经由深度学习加速器的硬件加速。进行推理的一个示例是使用训练的神经网络通过基于与训练的神经网络相关联的权重处理输入数据来计算结果。
神经网络根据包括神经元层的数据流图处理数据。刺激(例如,输入数据)由神经元的输入层接收,并且数据流图的计算结果(例如,输出数据)由神经元的输出层提供。神经元的示例层包括输入层、输出层、整流线性单元层、完全连接层、递归层、长短期记忆层、卷积层、核心层、脱落层和汇集层。神经网络有条件地和/或选择性训练,经受硬件加速。在训练之后,神经网络有条件地和/或选择性地用于推理,经受硬件加速。
深度学习加速器的一个示例是一个或多个相对专用的硬件元件,其与一个或多个软件元件结合操作,以比使用相对不太专用的硬件元件相对更有效地训练神经网络和/或利用神经网络执行推理。相对专用的硬件元件的一些实现方式包括一个或多个硬件逻辑电路元件,例如,晶体管、电阻器、电感器、电容器、线互连、组合逻辑(例如,NAND、NOR)、锁存器、寄存器文件、内存阵列、用于内存阵列的标签、内容可寻址存储器、闪存、ROM、DRAM、SRAM、串行器/解串行器(SerDe)、I/O驱动程序等,例如,经由定制逻辑、合成逻辑、ASIC和/或FPGA实现的。一些相对不太专业的硬件元件包括常规CPU和常规GPU。
深度学习加速器的示例实现方式能够根据为训练神经网络而执行的计算来处理数据流和/或用神经网络执行推理。一些深度学习加速器包括经由结构耦合的并能够经由结构相互通信的处理元件。有时,处理元件和结构统称为处理元件的结构。
处理元件的示例实现方式能够通信和处理小波。在各种情况下,根据通信和/或处理,小波对应于数据流和/或指令流,使得能够使用神经网络为训练和/或推理执行计算。
示例处理元件包括经由结构传送小波的路由器和处理小波的计算元件。示例路由器耦合到多个元件:结构、到计算元件的出口匝道和来自计算元件的入口匝道。路由器和结构之间的示例耦合使得路由器和例如四个逻辑上和/或物理上相邻的处理元件之间能够通信。路由器从结构和入口匝道以不同的方式接收小波。路由器以不同的方式将小波传输到结构和出口匝道。
计算元件的示例实现方式能够通过启动任务和执行与小波相关联的指令以及访问与小波和/或指令相关联的数据来处理小波。指令符合指令集架构,该指令集架构包括算术指令、控制流指令、数据类型转换指令、配置指令、结构管理指令和加载/存储指令。指令对包括各种数据类型(例如,各种宽度的整数数据类型和浮点数据类型)的操作数进行操作。操作数包括标量操作数和矢量操作数。在各种实施方式和/或使用场景中,矢量不同地表示神经网络的权重、神经网络的输入或刺激、神经网络的激活和/或神经网络的部分和。在某些情况下,矢量是稀疏矢量(例如,神经元激活的矢量),并且包括稀疏数据元素(例如,仅非零元素)。在一些其他场景中,矢量是密集矢量(例如,像素值),并且包括密集数据元素(例如,矢量的所有元件,包括零元素)。
示例计算元件包括硬件元件,这些硬件元件通过执行由指令指定的操作(例如,算术操作、控制流操作和加载/存储操作)来共同执行与小波相关联的指令。硬件元件的示例包括选择器队列、选择器、任务定义表、指令序列发生器、指令解码器、数据序列发生器、寄存器文件、存储器、伪随机数生成器和ALU。硬件元件的一些实现方式符合本文别处描述的硬件逻辑电路元件。有时,计算元件被称为计算引擎。有时,计算调度器被称为选择器,而计算调度器队列被称为选择器队列。
示例结构是处理元件之间和/或单个处理元件内的逻辑和/或物理耦合的集合。该结构可用于实现逻辑和/或物理通信拓扑,例如,网格、2D网格、3D网格、超立方体、圆环、环、树或其任意组合。处理元件之间的物理耦合的示例是物理耦合的处理元件之间的一组物理互连(包括可选和/或选择性缓冲)。物理耦合的处理元件的第一示例是直接物理相邻的处理元件,例如,直接位于第二处理元件旁边(例如“北”、“南”、“东”或“西”)的第一处理元件。物理耦合的处理元件的第二示例是相对物理上邻近的处理元件,例如,位于相对少量的中间处理元件内的第一处理元件,例如,远离第二处理元件的一或两“行”和/或“列”。物理耦合的处理元件的第三示例是相对物理上远离的处理元件,例如,物理上相对远离第二处理元件的第一处理元件,例如,在与处理元件相关联的时钟周期和/或时钟子周期内由信号传播(具有或不具有可选和/或选择性缓冲)限制的距离。单个处理元件(具有例如计算元件和路由器)内的物理耦合的示例是从计算元件到路由器耦合输出信息的入口匝道以及从路由器到计算元件耦合输入信息的出口匝道。在某些情况下,路由器会将信息从入口匝道路由到出口匝道。
处理元件之间的逻辑耦合的一个示例是由处理元件内的路由器实现的虚拟信道。第一处理元件和第二处理元件之间的路由例如由处理元件内的路由器根据虚拟信道和路由配置信息沿着路由转发来实现。单个特定处理元件(具有例如路由器)内的逻辑耦合的示例是由路由器实现的虚拟信道,使得特定处理元件能够经由虚拟信道向特定处理元件发送信息。路由器根据虚拟信道和路由配置信息相对于特定处理元件“内部”转发。
示例小波是经由结构在处理元件之间传递的一束信息。示例小波包括小波有效载荷和颜色。小波有效载荷包括数据并与指令相关联。对由处理元件的计算元件接收的小波的第一响应包括计算元件发起任务,例如,对应于与小波相关联的指令的处理。对由处理元件的计算元件接收的小波的第二响应包括计算元件处理小波的数据。小波的示例类型包括密集小波和稀疏小波以及数据小波和控制小波。
例如,小波用于处理元件之间的通信。在第一种情况下,第一处理元件将小波传输到第二处理元件。在第二种情况下,外部装置(例如,FPGA)向处理元件传输小波。在第三种情况下,处理元件向外部装置(例如,FPGA)传输小波。
示例虚拟信道是由颜色指定的并由例如结构和一个或多个路由器启用的一个或多个通信路径。包含特定颜色的小波有时称为与特定颜色相关联的特定虚拟信道相关联。颜色的第一示例是指定两个不同处理元件之间的虚拟信道的结构颜色。在一些实施方式中,结构颜色是5位整数。颜色的第二示例是指定从处理元件到处理元件的虚拟信道的本地颜色。在一些实施方式中,颜色是6位整数,并且指定结构颜色和本地颜色中的一个。
示例任务包括响应小波执行的指令集合。示例指令包括操作和可选的一个或多个操作数,该操作数指定了根据该操作要处理的数据元素的位置。操作数的第一示例指定存储器中的数据元素。操作数的第二示例指定经由结构传送(例如,接收或传输)的数据元素。数据序列发生器的一个示例确定数据元素的位置。指令序列发生器的一个示例确定与小波相关联的指令在存储器中的地址。
示例选择器队列能够保存经由结构的出口匝道接收的小波,以便在计算元件中处理。选择器的一个示例从选择器队列中选择小波进行处理。
集成电路(IC)的一个示例是在半导体材料的单个部分上实现的电路的集合。专用集成电路(ASIC)的一个示例是为特定用途设计的IC。晶片级集成的一个示例是例如通过使晶片完整或基本完整,而使用晶片的全部或大部分作为系统的元件来实现系统。
在一些实施方式和/或使用场景中,晶片级集成使得能够经由使用硅制造工艺而不是经由芯片间互连形成的晶片互连来连接系统中的多个元件,并且因此提高了性能、成本、可靠性和能效中的任何一个或多个。作为一个具体的示例,使用晶片级集成技术实现的系统能够在单个晶片上实现300万个PE,每个PE与最近的物理邻居的带宽大于使用晶片级集成技术之外的其他技术的可比系统。较大的带宽使得使用晶片级集成技术实现的系统能够相对于使用晶片级集成技术之外的其他技术实现的系统,相对有效地训练和/或执行针对较大神经网络的推理。
首字母缩略词
此处定义的各种简写缩写(例如,首字母缩略词)中的至少一些是指本文使用的某些元件。
Figure BDA0003071381410000321
Figure BDA0003071381410000331
Figure BDA0003071381410000341
示例实施方式
在结束详细描述的引言时,下面是示例实施方式的集合,包括至少一些明确列举为“EC”(示例组合),根据本文描述的概念提供各种实施方式类型的额外描述;这些示例并不意味着相互排斥、穷尽或限制;并且本发明不限于这些示例实施方式,而是包括在所发布的权利要求及其等同物的范围内的所有可能的修改和变化。
EC100)一种系统,包括:
处理器元件的结构,每个处理器元件包括结构路由器和计算引擎,计算引擎能够执行基于数据流和基于指令的处理;
其中,每个处理器元件选择性地与其他处理器元件传送结构分组;并且
其中,每个计算引擎根据该计算引擎接收的每个结构分组的虚拟信道说明符和任务说明符来选择性地执行处理。
EC100b)一种系统,包括:
处理器元件的结构,每个处理器元件包括结构路由器和计算引擎;
其中,每个处理器元件选择性地与其他处理器元件传送结构分组;并且
其中,每个计算引擎分别根据计算引擎接收的每个结构分组的数据流字段和指令字段选择性地执行数据流处理和指令处理。
EC100c)根据EC100所述的系统,其中,处理是根据数据流图的。
EC100d)根据EC100所述的系统,其中,执行工作负载,主要包括基于数据流的处理以及最小的基于指令的处理。
EC100e)根据EC100d所述的系统,其中,系统实现了长短期记忆(LSTM)神经网络模型。
EC100f)根据EC100所述的系统,其中,执行工作负载,主要包括基于指令的处理以及最小的基于数据流的处理。
EC100g)根据EC100所述的系统,其中,系统至少部分地使用晶片级集成来实现。
EC100h)根据EC100所述的系统,其中,处理器元件的结构至少部分地使用VLSI制造来实现。
EC101)根据EC100所述的系统,其中,虚拟信道说明符选择结构中独立的相应路由路径。
EC101b)根据EC100所述的系统,其中,虚拟信道说明符选择结构中的路由路径来执行多播。
EC101c)根据EC100所述的系统,其中,虚拟信道说明符选择结构中的路由路径来执行负载分割。
EC102)根据EC100所述的系统,其中,任务说明符选择一个或多个要执行的操作。
EC103)根据EC100所述的系统,其中,结构包括处理器元件的2D阵列。
EC103b)根据EC100所述的系统,其中,结构包括从由完全连接、星形、环形、阵列、网格、超立方体、圆环和树组成的组中选择的处理器元件互连拓扑。
EC103c)根据EC100所述的系统,其中,结构包括从由1D、2D、3D和大于3D的维度组成的组中选择的处理器元件互连拓扑维度。
EC104)根据EC100所述的系统,其中,系统能够执行机器学习工作负载。
EC105)根据EC100所述的系统,其中,训练系统来执行推理应用。
EC105b)根据EC100所述的系统,其中,系统执行推理应用。
EC106)根据EC100所述的系统,其中,系统实现深层神经网络,该网络被训练以执行对象分类和/或检测。
EC107)根据EC100所述的系统,其中,系统实现深层神经网络,该网络被训练以执行推理应用,推理应用选自文本翻译、光学字符识别、图像分类、面部识别、自动驾驶汽车的场景识别、语音识别、高能物理的数据分析和药物发现。
EC108)根据EC100所述的系统,其中,结构被组织为多个外围处理器元件和多个内部处理器元件,并且每个内部处理器元件在至少四个逻辑方向上分别耦合到多个处理器元件中的至少四个其他处理器元件。
EC109)根据EC100所述的系统,其中,每个计算引擎包括内存、数据路径以及混合数据流和指令执行控制器。
EC110)根据EC109所述的系统,其中,每个计算引擎根据具有多个计算引擎管线级的多级计算引擎管线操作。
EC111)根据EC109所述的系统,其中,指令执行控制器包括使用微码、PLA、一个或多个计数器和门级状态机中的一个或多个来实现的指令序列发生器。
EC112)根据EC109所述的系统,其中,每个计算引擎还包括寄存器文件、指令解码器、指令高速缓存和数据高速缓存。
EC112b)根据EC109所述的系统,其中,每个计算引擎还包括寄存器文件、指令解码器、指令缓冲器和数据缓冲器。
EC113)根据EC100所述的系统,其中:
每个计算引擎被配置为响应于接收到从预定义的本机指令代码集中选择的对应基本指令,执行预定义的基本操作集;并且该系统还包括:
训练工作负载,包括:
从本机指令集中选择的第一组机器代码,用于将神经元的至少一部分映射到处理器元件的计算引擎上,映射包括管理至少一个部分神经元权重,
从本机指令集中选择的第二组机器代码,用于至少部分基于至少一个部分神经元权重来执行前向传递,以在前向逻辑方向上传播激活,前向传递响应于输入样本而启动,
从本机指令集中选择的第三组机器代码,用于在后向逻辑方向上执行增量传递以生成增量,增量传递响应于前向传递的完成而启动,
从本机指令集中选择的第四组机器代码,用于执行链式传递,以基于增量计算梯度,以及
从本机指令集中选择的第五组机器代码,用于根据预定学习规则并至少部分基于增量来执行至少一个部分神经元权重的选择性更新;并且
其中,每个计算引擎包括用于至少一个部分神经元权重的存储器。
EC113a)根据EC113所述的系统,其中,根据结构分组的相应结构分组的任务说明符来执行每个基本指令。
EC113b)根据EC113所述的系统,其中,结构包括处理器元件的2D阵列,处理器元件包括第一、第二、第三和第四物理方向,第一和第二物理方向共线且相反,第三和第四物理方向共线且相反,第一和第三物理方向正交,并且前向逻辑方向在第一物理方向上,后向逻辑方向在第二物理方向上。
EC113c)根据EC113所述的系统,其中,训练工作负载还包括从本机指令集中选择的用于执行非线性激活函数的第六组机器代码。
EC113d)根据EC113c所述的系统,其中,非线性激活函数选自sigmoid、tanh和ReLU组成的组。
EC114)根据EC113所述的系统,其中,映射根据初始化结构,以实现将神经网络划分成多层,神经元是神经网络的多个神经元中的第一神经元,第一神经元包括在多层的第一层中,并且多个神经元中的每一个以分布式方式映射在结构的多个处理器元件上。
EC115)根据EC114所述的系统,其中,映射根据训练集的每个输入样本,在相同的时间量内完成每层的所有传递。
EC115b)根据EC114所述的系统,其中,映射根据训练集的每个输入样本,在相同的预定时间量内完成每层的所有传递。
EC115c)根据EC114所述的系统,其中,映射根据训练集的每个输入样本,在实时确定的相同时间段内完成每层的所有传递。
EC116)根据EC114所述的系统,其中,多层作为包括逻辑结构管线级的逻辑结构管线操作,每个逻辑结构管线级包括完成每层的所有传递,每层的完成采取包括相同时间量的时间步长。
EC116b)根据EC114所述的系统,其中,多层中的每层作为每个传递的相应逻辑结构管线的逻辑结构管线级操作,每层的完成采取包括相同时间量的时间步长。
EC117)根据EC114所述的系统,其中,当训练集的每个输入样本流过多层上的至少第一多个处理器元件时,在多层上的第一多个处理器元件中选择性地更新神经元权重。
EC117b)根据EC118所述的系统,其中,当训练集的每个输入样本流过多层上的至少第一多个处理器元件时,在多层上的第一多个处理器元件中选择性地更新神经元权重,并且流传输和更新针对多个时间步长中的每个时间步长进行。
EC119)根据EC120所述的系统,还包括数字时钟,并且其中,时间步长是数字时钟的时钟周期的整数倍。
EC118b)根据EC120所述的系统,还包括数字时钟,并且其中,时间步长是可变的时间量。
EC118c)根据EC121或EC118b所述的系统,其中,实时确定时间步长。
EC122)根据EC114所述的系统,还包括:
其中,每个计算引擎根据具有多个计算引擎管线级的多级计算引擎管线,包括完成每个计算引擎管线级的时间的计算引擎机器周期、包括完成多个计算引擎管线级的时间的计算引擎管线周期来操作;
其中,计算引擎机器周期包括数字时钟的时钟周期的第一倍数;
其中,多层作为包括逻辑结构管线级的逻辑结构管线操作,每个逻辑结构管线级包括完成每层的所有传递,时间步长包括完成每个逻辑结构管线级的时间;并且
其中,时间步长包括计算引擎管线周期的第二倍数。
EC123)根据EC122所述的系统,其中,第一倍数是1。
EC124)根据EC122所述的系统,其中,第二倍数是数百到数千。
EC125)根据EC120所述的系统,其中,当激活的前向传播正在进行时,对于多个时间步长中的每个时间步长,响应于第一多个处理器元件内的后向传播数据的变化,在第一多个处理器元件内选择性地更新至少一个部分神经元权重。
EC126)根据EC120所述的系统,其中,在多个时间步长内的每个时间步长选择性地更新至少一个部分神经元权重。
EC123b)根据EC117、EC117b、EC122或EC123所述的系统,其中,选择性地更新符合连续传播梯度下降过程。
EC127)根据EC114所述的系统,其中,神经网络包括一千多层。
EC128)根据EC114所述的系统,其中,多个神经元包括数十亿个神经元。
EC125b)根据EC114所述的系统,其中,多个神经元包括数百万个神经元。
EC125c)根据EC114所述的系统,其中,对于多个神经元中的至少一些神经元,神经网络对于每个神经元包括至少10个权重。
EC125d)根据EC114所述的系统,其中,对于多个神经元中的至少一些神经元,神经网络对于每个神经元包括至少1000个权重。
EC129)根据EC114所述的系统,其中,神经网络每层包含数十亿个权重。
EC126b)根据EC114所述的系统,其中,神经网络每层包括数百万个权重。
EC130)根据EC114所述的系统,其中,对于神经网络的每一层,输入激活加权,以创建部分和,累积这些部分和,以生成该层的输出激活,并且累积的加权部分和表示神经网络的神经元和相关联的突触。
EC127b)根据EC127所述的系统,其中,每个权重对应于突触,每个部分和对应于刺激,累积的加权部分和对应于总刺激,并且该层的每个输出激活对应于神经元输出。
EC131)根据EC113所述的系统,其中,对共同包括训练集的多个输入样本中的每一个执行训练工作负载的迭代。
EC132)根据EC131所述的系统,其中,预定学习规则指定在完成整个训练集的所有传递之后更新至少一个部分神经元权重。
EC129b)根据EC129所述的系统,其中,预定学习规则符合随机梯度下降过程。
EC129c)根据EC129所述的系统,其中,预定学习规则符合小批量梯度下降过程。
EC129d)根据EC129所述的系统,其中,预定学习规则符合连续传播梯度下降过程。
EC133)根据EC131所述的系统,其中,训练集被划分成多个所谓的小批量,并且预定学习规则指定在完成每个小批量中包括的输入样本的所有传递之后,更新至少一个部分神经元权重。
EC134)根据EC131所述的系统,其中,训练集被划分成多个所谓的小批量,并且预定学习规则指定在完成每个小批量的每个输入样本的所有传递之后,更新至少一个部分神经元权重。
EC131b)根据EC131所述的系统,其中,预定学习规则符合连续传播梯度下降过程。
EC135)根据EC134所述的系统,其中,前向传递包含第一多个处理器元件内的权重更新,同时小批量学习在第一多个处理器元件内进行。
EC136)根据EC113所述的系统,其中,存储器包含在计算引擎本地的存储器中。
EC133b)根据EC113所述的系统,其中,存储器包含在计算引擎中。
EC133b)根据EC113所述的系统,其中,存储器是连接到每个计算引擎的相应存储器。
EC137)根据EC113所述的系统,其中,存储器能够存储2D矩阵数据结构。
EC134b)根据EC113所述的系统,其中,存储器能够存储多维数据结构。
EC134c)根据EC113所述的系统,其中,存储器能够存储张量数据结构,该张量数据结构包括选自2D、3D、4D、5D和6D的维度。
EC138)根据EC113所述的系统,其中,每个计算引擎还包括用于梯度累积、前向部分和、增量部分和以及前向传递激活的存储器。
EC139)根据EC114所述的系统,其中,数据在前向传递期间传播到神经网络的逻辑端,并在增量传递和链式传递期间在反向逻辑方向循环回来。
EC140)根据EC113所述的系统,其中,前向传递保存激活,以供增量传递和链式传递使用。
EC141)根据EC113所述的系统,其中,每个处理器元件在前向、增量和链式传递上是时间共享的。
EC142)根据EC131所述的系统,其中,对于每个输入样本,系统能够响应于对应于输入样本的前向传递、增量传递和链式传递的完成,根据预定学习规则选择性地更新至少一个部分神经元权重。
EC139b)根据EC139所述的系统,其中,预定学习规则符合连续传播梯度下降过程。
EC143)根据EC142所述的系统,其中,对于每个前向传递,系统能够使用由至少一个部分神经元权重的最近选择性更新提供的权重信息。
EC144)根据EC143所述的系统,其中,系统能够启动训练工作负载的特定迭代的前向传递,而与是否已经发生对应于训练工作负载的先前迭代的至少一个部分神经元权重的选择性更新无关。
EC145)根据EC143所述的系统,其中,系统能够启动训练工作负载的特定迭代的前向传递,而与训练工作负载的先前迭代的增量传递是否已经开始无关。
EC146)根据EC143所述的系统,其中,至少一个计算引擎能够在为训练工作负载的先前迭代执行前向传递的至少一部分之后,并且在执行对应于训练工作负载的先前迭代的至少一个部分神经元权重的选择性更新的一部分之前,为训练工作负载的后续迭代执行前向传递的至少一部分。
EC147)根据EC143所述的系统,其中,系统能够至少部分基于至少部分基于第一部分神经元权重所重新计算的激活,对每个输入样本执行增量传递和链式传递。
EC148)根据EC147所述的系统,其中,第一部分神经元权重是由最近选择性更新产生的部分神经元权重。
EC145b)根据EC145所述的系统,其中,重新计算的激活不需要在计算之间存储,从而减少给定系统训练配置所需的总存储器。
EC145c)根据EC139、EC140、EC141或EC142所述的系统,其中,并行层训练能够以更快的收敛速度实现预定的精度目标,从而减少给定系统训练配置所需的总训练时间。
EC145d)根据EC139、EC140、EC141或EC142所述的系统,其中,并发层训练能够提高给定总训练时间和系统训练配置的精度。
EC149)根据EC143所述的系统,其中,每个计算元件能够至少部分基于至少部分基于第一部分神经元权重所重新计算的激活,对每个输入样本执行增量传递的部分和链式传递的部分。
EC150)根据EC149所述的系统,其中,第一部分神经元权重是由最近选择性更新产生的部分神经元权重。
EC200)一种方法,包括:
在处理器元件的每个结构中,选择性地与其他处理器元件传送结构分组,每个处理器元件包括结构路由器和计算引擎,计算引擎能够执行基于数据流和基于指令的处理;并且
在每个计算引擎中,根据计算引擎接收的每个结构分组的虚拟信道说明符和任务说明符来选择性地执行处理。
EC200b)一种方法,包括:
在处理器元件的每个结构中,选择性地与其他处理器元件传送结构分组,每个处理器元件包括结构路由器和计算引擎;并且
在每个计算引擎中,分别根据计算引擎接收的每个结构分组的虚拟信道说明符和任务说明符来选择性地执行数据流处理和指令处理。
EC200c)根据EC200所述的方法,其中,处理是根据数据流图的。
EC200d)根据EC200所述的方法,还包括执行工作负载,主要包括基于数据流的处理以及最小的基于指令的处理。
EC200e)根据EC200d所述的方法,其中,执行方法,实现了长短期记忆(LSTM)神经网络模型。
EC200f)根据EC200所述的方法,还包括执行工作负载,主要包括基于指令的处理以及最小的基于数据流的处理。
EC200g)根据EC200所述的方法,其中,处理器元件的结构至少部分地使用晶片级集成来实现。
EC200h)根据EC200所述的方法,其中,处理器元件的结构至少部分地使用VLSI制造来实现。
EC201)根据EC200所述的方法,其中,虚拟信道说明符选择结构中独立的相应路由路径。
EC201b)根据EC200所述的方法,其中,虚拟信道说明符选择结构中的路由路径来执行多播。
EC201c)根据EC200所述的方法,其中,虚拟信道说明符选择结构中的路由路径来执行负载分割。
EC202)根据EC200所述的方法,其中,任务说明符选择一个或多个要执行的操作。
EC203)根据EC200所述的方法,其中,结构包括处理器元件的2D阵列。
EC203b)根据EC200所述的方法,其中,结构包括从由完全连接、星形、环形、阵列、网格、超立方体、圆环和树组成的组中选择的处理器元件互连拓扑。
EC203c)根据EC200所述的方法,其中,结构包括从由1D、2D、3D和大于3D的维度组成的组中选择的处理器元件互连拓扑维度。
EC204)根据EC200所述的方法,其中,执行方法,能够执行机器学习工作负载。
EC205)根据EC200所述的方法,其中,执行方法,能够训练推理应用。
EC205b)根据EC200所述的方法,其中,执行方法,执行推理应用。
EC206)根据EC200所述的方法,其中,执行方法,实现深层神经网络,训练深层神经网络来执行对象分类和/或检测。
EC207)根据EC200所述的方法,其中,执行方法,实现深层神经网络,训练深层神经网络来执行推理应用,推理应用选自文本翻译、光学字符识别、图像分类、面部识别、自动驾驶汽车的场景识别、语音识别、高能物理的数据分析和药物发现。
EC208)根据EC200所述的方法,其中,结构被组织为多个外围处理器元件和多个内部处理器元件,并且每个内部处理器元件在至少四个逻辑方向上分别耦合到多个处理器元件中的至少四个其他处理器元件。
EC209)根据EC200所述的方法,其中,每个计算引擎包括存储器、数据路径以及混合数据流和指令执行控制器。
EC210)根据EC209所述的方法,其中,每个计算引擎根据具有多个计算引擎管线级的多级计算引擎管线操作。
EC211)根据EC209所述的方法,其中,指令执行控制器包括使用微码、PLA、一个或多个计数器和门级状态机中的一个或多个来实现的指令序列发生器。
EC212)根据EC209所述的方法,其中,每个计算引擎还包括寄存器文件、指令解码器、指令高速缓存和数据高速缓存。
EC212b)根据EC209所述的方法,其中,每个计算引擎还包括寄存器文件、指令解码器、指令缓冲器和数据缓冲器。
EC213)根据EC200所述的方法,其中:
每个计算引擎被配置为响应于接收到从预定义的本机指令代码集中选择的对应基本指令,执行预定义的基本操作集;并且还包括
处理训练工作负载,包括
从本机指令集中选择的第一组机器代码,用于将神经元的至少一部分映射到处理器元件的计算引擎上,映射包括管理至少一个部分神经元权重,
从本机指令集中选择的第二组机器代码,用于至少部分基于至少一个部分神经元权重来执行前向传递,以在前向逻辑方向上传播激活,前向传递响应于输入样本而启动,
从本机指令集中选择的第三组机器代码,用于在后向逻辑方向上执行增量传递以生成增量,增量传递响应于前向传递的完成而启动,
从本机指令集中选择的第四组机器代码,用于执行链式传递,以基于增量计算梯度,以及
从本机指令集中选择的第五组机器代码,用于根据预定学习规则并至少部分基于增量来执行至少一个部分神经元权重的选择性更新;并且
其中,每个计算引擎包括用于至少一个部分神经元权重的存储器。
EC213a)根据EC213所述的方法,其中,根据结构分组的相应结构分组的任务说明符来执行每个基本指令。
EC213b)根据EC213所述的方法,其中,结构包括处理器元件的2D阵列,处理器元件包括第一、第二、第三和第四物理方向,第一和第二物理方向共线且相反,第三和第四物理方向共线且相反,第一和第三物理方向正交,并且前向逻辑方向在第一物理方向上,后向逻辑方向在第二物理方向上。
EC213c)根据EC213所述的方法,其中,训练工作负载还包括从本机指令集中选择的用于执行非线性激活函数的第六组机器代码。
EC213d)根据EC213c所述的方法,其中,非线性激活函数选自sigmoid、tanh和ReLU组成的组。
EC214)根据EC213所述的方法,其中,映射根据初始化结构,以实现将神经网络划分成多层,神经元是神经网络的多个神经元中的第一神经元,第一神经元包括在多层的第一层中,并且多个神经元中的每一个以分布式方式映射在结构的多个处理器元件上。
EC215)根据EC214所述的方法,其中,映射根据训练集的每个输入样本,在相同的时间量内完成每层的所有传递。
EC215b)根据EC214所述的方法,其中,映射根据训练集的每个输入样本,在相同的预定时间量内完成每层的所有传递。
EC215c)根据EC214所述的方法,其中,映射根据训练集的每个输入样本,在实时确定的相同时间段内完成每层的所有传递。
EC216)根据EC214所述的方法,其中,多层作为包括逻辑结构管线级的逻辑结构管线操作,每个逻辑结构管线级包括完成每层的所有传递,每层的完成采取包括相同时间量的时间步长。
EC216b)根据EC214所述的方法,其中,多层中的每层作为每个传递的相应逻辑结构管线的逻辑结构管线级操作,每层的完成采取包括相同时间量的时间步长。
EC217)根据EC214所述的方法,其中,当训练集的每个输入样本流过多层上的至少第一多个处理器元件时,在多层上的第一多个处理器元件中选择性地更新神经元权重。
EC217b)根据EC216所述的方法,其中,当训练集的每个输入样本流过多层上的至少第一多个处理器元件时,在多层上的第一多个处理器元件中选择性地更新神经元权重,并且流传输和更新针对多个时间步长中的每个时间步长进行。
EC218)根据EC216所述的方法,其中,至少一个处理器元件包括数字时钟,并且时间步长是数字时钟的时钟周期的整数倍。
EC218b)根据EC216所述的方法,其中,至少一个处理器元件数字时钟,并且时间步长是可变的时间量。
EC218c)根据EC218或EC218b所述的方法,其中,实时确定时间步长。
EC219)根据EC214所述的方法,还包括:
根据具有多个计算引擎管线级的多级计算引擎管线,包括完成每个计算引擎管线级的时间的计算引擎机器周期、包括完成多个计算引擎管线级的时间的计算引擎管线周期,来操作每个计算引擎;
其中,计算引擎机器周期包括数字时钟的时钟周期的第一倍数;
其中,多层作为包括逻辑结构管线级的逻辑结构管线操作,每个逻辑结构管线级包括完成每层的所有传递,时间步长包括完成每个逻辑结构管线级的时间;并且
其中,时间步长包括计算引擎管线周期的第二倍数。
EC220)根据EC219所述的方法,其中,第一倍数是1。
EC221)根据EC219所述的方法,其中,第二倍数是数百到数千。
EC222)根据EC216所述的方法,还包括,当激活的前向传播正在进行时,对于多个时间步长中的每个时间步长,响应于第一多个处理器元件内的后向传播数据的变化,在第一多个处理器元件内选择性地更新至少一个部分神经元权重。
EC223)根据EC216所述的方法,还包括在多个时间步长内的每个时间步长选择性地更新至少一个部分神经元权重。
EC223b)根据EC217、EC217b、EC222或EC223所述的方法,其中,选择性地更新符合连续传播梯度下降过程。
EC224)根据EC214所述的方法,其中,神经网络包括一千多层。
EC225)根据EC214所述的方法,其中,多个神经元包括数十亿个神经元。
EC225b)根据EC214所述的方法,其中,多个神经元包括数百万个神经元。
EC225c)根据EC214所述的方法,其中,对于多个神经元中的至少一些神经元,神经网络对于每个神经元包括至少10个权重。
EC225d)根据EC214所述的方法,其中,对于多个神经元中的至少一些神经元,神经网络对于每个神经元包括至少1000个权重。
EC226)根据EC214所述的方法,其中,神经网络每层包含数十亿个权重。
EC226b)根据EC214所述的方法,其中,神经网络每层包括数百万个权重。
EC227)根据EC214所述的方法,还包括,对于神经网络的每一层,加权输入激活,以创建部分和,累积这些部分和,以生成该层的输出激活,并且其中,累积的加权部分和表示神经网络的神经元和相关联的突触。
EC227b)根据EC227所述的方法,其中,每个权重对应于突触,每个部分和对应于刺激,累积的加权部分和对应于总刺激,并且该层的每个输出激活对应于神经元输出。
EC228)根据EC213所述的方法,还包括,对共同包括训练集的多个输入样本中的每一个执行训练工作负载的迭代。
EC229)根据EC228所述的方法,其中,预定学习规则指定在完成整个训练集的所有传递之后更新至少一个部分神经元权重。
EC229b)根据EC229所述的方法,其中,预定学习规则符合随机梯度下降过程。
EC229c)根据EC229所述的方法,其中,预定学习规则符合小批量梯度下降过程。
EC229d)根据EC229所述的方法,其中,预定学习规则符合连续传播梯度下降过程。
EC230)根据EC228所述的方法,还包括将训练集划分成多个所谓的小批量,并且预定学习规则指定在完成每个小批量中包括的输入样本的所有传递之后,更新至少一个部分神经元权重。
EC231)根据EC228所述的方法,还包括将训练集划分成多个所谓的小批量,并且预定学习规则指定在完成每个小批量的每个输入样本的所有传递之后,更新至少一个部分神经元权重。
EC231b)根据EC231所述的方法,其中,预定学习规则符合连续传播梯度下降过程。
EC232)根据EC231所述的方法,其中,前向传递包含第一多个处理器元件内的权重更新,同时小批量学习在第一多个处理器元件内进行。
EC233)根据EC213所述的方法,其中,存储器包含在计算引擎本地的存储器中。
EC233b)根据EC213所述的方法,其中,存储器包含在计算引擎中。
EC233b)根据EC213所述的方法,其中,存储器是连接到每个计算引擎的相应存储器。
EC234)根据EC213所述的方法,其中,存储器能够存储2D矩阵数据结构。
EC234b)根据EC213所述的方法,其中,存储器能够存储多维数据结构。
EC234c)根据EC213所述的方法,其中,存储器能够存储张量数据结构,该张量数据结构包括选自2D、3D、4D、5D和6D的维度。
EC235)根据EC213所述的方法,其中,每个计算引擎还包括用于梯度累积、前向部分和、增量部分和以及前向传递激活的存储器。
EC236)根据EC214所述的方法,其中,数据在前向传递期间传播到神经网络的逻辑端,并在增量传递和链式传递期间在反向逻辑方向循环回来。
EC237)根据EC213所述的方法,其中,前向传递保存激活,以供增量传递和链式传递使用。
EC238)根据EC213所述的方法,还包括在前向、增量和链式传递上时间共享每个处理器元件。
EC239)根据EC228所述的方法,还包括,对于每个输入样本,响应于对应于所述输入样本的前向传递、增量传递和链式传递的完成,根据预定学习规则选择性地更新至少一个部分神经元权重。
EC239b)根据EC239所述的方法,其中,预定学习规则符合连续传播梯度下降过程。
EC240)根据EC239所述的方法,还包括,对于每个前向传递,选择性地使用由至少一个部分神经元权重的最近选择性更新提供的权重信息。
EC241)根据EC240所述的方法,还包括启动训练工作负载的特定迭代的前向传递,而与是否已经发生对应于训练工作负载的先前迭代的至少一个部分神经元权重的选择性更新无关。
EC242)根据EC240所述的方法,还包括选择性地启动训练工作负载的特定迭代的前向传递,而与训练工作负载的先前迭代的增量传递是否已经开始无关。
EC243)根据EC240所述的方法,还包括,在至少一个计算引擎中,在为训练工作负载的先前迭代执行前向传递的至少一部分之后,并且在执行对应于训练工作负载的先前迭代的至少一个部分神经元权重的选择性更新的一部分之前,为训练工作负载的后续迭代执行前向传递的至少一部分。
EC244)根据EC240所述的方法,还包括至少部分基于至少部分基于第一部分神经元权重所重新计算的激活,选择性地对每个输入样本执行增量传递和链式传递。
EC245)根据EC244所述的方法,其中,第一部分神经元权重是由最近选择性更新产生的部分神经元权重。
EC245b)根据EC245所述的方法,其中,重新计算的激活不需要在计算之间存储,从而减少给定系统训练配置所需的总存储器。
EC245c)根据EC239、EC240、EC241或EC242所述的方法,其中,并行层训练能够以更快的收敛速度实现预定的精度目标,从而减少给定系统训练配置所需的总训练时间。
EC245d)根据EC239、EC240、EC241或EC242所述的方法,其中,并发层训练能够提高给定总训练时间和系统训练配置的精度。
EC246)根据EC240所述的方法,还包括,在每个计算元件中,至少部分基于至少部分基于第一部分神经元权重所重新计算的激活,对每个输入样本选择性地执行增量传递的部分和链式传递的部分。
EC247)根据EC246所述的方法,其中,第一部分神经元权重是由最近选择性更新产生的部分神经元权重。
EC300)一种系统,包括:
在处理器元件的每个结构中,选择性地与其他处理器元件传送结构分组的装置,每个处理器元件包括结构路由器和计算引擎,计算引擎能够执行基于数据流和基于指令的处理;并且
在每个计算引擎中,根据计算引擎接收的每个结构分组的虚拟信道说明符和任务说明符来选择性地执行处理的装置。
EC300b)一种系统,包括:
在处理器元件的每个结构中,用于选择性地与其他处理器元件传送结构分组的装置,每个处理器元件包括结构路由器和计算引擎;并且
在每个计算引擎中,用于分别根据计算引擎接收的每个结构分组的虚拟信道说明符和任务说明符选择性地执行数据流处理和指令处理的装置。
EC300c)根据EC300所述的系统,其中,处理是根据数据流图的。
EC300d)根据EC300所述的系统,还包括执行工作负载的装置,主要包括基于数据流的处理以及最小的基于指令的处理。
EC300e)根据EC300d所述的系统,其中,系统实现了长短期记忆(LSTM)神经网络模型。
EC300f)根据EC300所述的系统,还包括执行工作负载的装置,主要包括基于指令的处理以及最小的基于数据流的处理。
EC300g)根据EC300所述的系统,其中,系统至少部分地使用晶片级集成来实现。
EC300h)根据EC300所述的系统,其中,处理器元件的结构至少部分地使用VLSI制造来实现。
EC301)根据EC300所述的系统,其中,虚拟信道说明符选择结构中独立的相应路由路径。
EC301b)根据EC300所述的系统,其中,虚拟信道说明符选择结构中的路由路径来执行多播。
EC301c)根据EC300所述的系统,其中,虚拟信道说明符选择结构中的路由路径来执行负载分割。
EC302)根据EC300所述的系统,其中,任务说明符选择一个或多个要执行的操作。
EC303)根据EC300所述的系统,其中,结构包括处理器元件的2D阵列。
EC303b)根据EC300所述的系统,其中,结构包括从由完全连接、星形、环形、阵列、网格、超立方体、圆环和树组成的组中选择的处理器元件互连拓扑。
EC303c)根据EC300所述的系统,其中,结构包括从由1D、2D、3D和大于3D的维度组成的组中选择的处理器元件互连拓扑维度。
EC304)根据EC300所述的系统,其中,系统能够执行机器学习工作负载。
EC305)根据EC300所述的系统,其中,训练系统,以执行推理应用。
EC305b)根据EC300所述的系统,其中,系统执行推理应用。
EC306)根据EC300所述的系统,其中,系统实现深层神经网络,训练深层神经网络来执行对象分类和/或检测。
EC307)根据EC300所述的系统,其中,系统实现深层神经网络,训练深层神经网络来执行推理应用,推理应用选自文本翻译、光学字符识别、图像分类、面部识别、自动驾驶汽车的场景识别、语音识别、高能物理的数据分析和药物发现。
EC308)根据EC300所述的系统,其中,结构被组织为多个外围处理器元件和多个内部处理器元件,并且每个内部处理器元件在至少四个逻辑方向上分别耦合到多个处理器元件中的至少四个其他处理器元件。
EC309)根据EC300所述的系统,其中,每个计算引擎包括存储器、数据路径以及混合数据流和指令执行控制器。
EC310)根据EC309所述的系统,其中,每个计算引擎根据具有多个计算引擎管线级的多级计算引擎管线操作。
EC311)根据EC309所述的系统,其中,指令执行控制器包括使用微码、PLA、一个或多个计数器和门级状态机中的一个或多个来实现的指令序列发生器。
EC312)根据EC309所述的系统,其中,每个计算引擎还包括寄存器文件、指令解码器、指令高速缓存和数据高速缓存。
EC312b)根据EC309所述的系统,其中,每个计算引擎还包括寄存器文件、指令解码器、指令缓冲器和数据缓冲器。
EC313)根据EC300所述的系统,其中:
每个计算引擎被配置为响应于接收到从预定义的本机指令代码集中选择的对应基本指令,执行预定义的基本操作集;并且还包括
训练工作负载,包括
从本机指令集中选择的第一组机器代码,用于将神经元的至少一部分映射到处理器元件的计算引擎上,映射包括管理至少一个部分神经元权重,
从本机指令集中选择的第二组机器代码,用于至少部分基于至少一个部分神经元权重来执行前向传递,以在前向逻辑方向上传播激活,前向传递响应于输入样本而启动,
从本机指令集中选择的第三组机器代码,用于在后向逻辑方向上执行增量传递以生成增量,增量传递响应于前向传递的完成而启动,
从本机指令集中选择的第四组机器代码,用于执行链式传递,以基于增量计算梯度,以及
从本机指令集中选择的第五组机器代码,用于根据预定学习规则并至少部分基于增量来执行至少一个部分神经元权重的选择性更新;并且
其中,每个计算引擎包括用于至少一个部分神经元权重的存储器。
EC313a)根据EC313所述的系统,其中,根据结构分组的相应结构分组的任务说明符来执行每个基本指令。
EC313b)根据EC313所述的系统,其中,结构包括处理器元件的2D阵列,处理器元件包括第一、第二、第三和第四物理方向,第一和第二物理方向共线且相反,第三和第四物理方向共线且相反,第一和第三物理方向正交,并且前向逻辑方向在第一物理方向上,后向逻辑方向在第二物理方向上。
EC313c)根据EC313所述的系统,其中,训练工作负载还包括从本机指令集中选择的用于执行非线性激活函数的第六组机器代码。
EC313d)根据EC313c所述的系统,其中,非线性激活函数选自sigmoid、tanh和ReLU组成的组。
EC314)根据EC313所述的系统,其中,映射根据初始化结构,以实现将神经网络划分成多层,神经元是神经网络的多个神经元中的第一神经元,第一神经元包括在多层的第一层中,并且多个神经元中的每一个以分布式方式映射在结构的多个处理器元件上。
EC315)根据EC314所述的系统,其中,映射根据训练集的每个输入样本,在相同的时间量内完成每层的所有传递。
EC315b)根据EC314所述的系统,其中,映射根据训练集的每个输入样本,在相同的预定时间量内完成每层的所有传递。
EC315c)根据EC314所述的系统,其中,映射根据训练集的每个输入样本,在实时确定的相同时间段内完成每层的所有传递。
EC316)根据EC314所述的系统,其中,多层作为包括逻辑结构管线级的逻辑结构管线操作,每个逻辑结构管线级包括完成每层的所有传递,每层的完成采取包括相同时间量的时间步长。
EC316b)根据EC314所述的系统,其中,多层中的每层作为每个传递的相应逻辑结构管线的逻辑结构管线级操作,每层的完成采取包括相同时间量的时间步长。
EC317)根据EC314所述的系统,其中,当训练集的每个输入样本流过多层上的至少第一多个处理器元件时,在多层上的第一多个处理器元件中选择性地更新神经元权重。
EC317b)根据EC316所述的系统,其中,当训练集的每个输入样本流过多层上的至少第一多个处理器元件时,在多层上的第一多个处理器元件中选择性地更新神经元权重,并且流传输和更新针对多个时间步长中的每个时间步长进行。
EC318)根据EC316所述的系统,还包括数字时钟,并且其中,时间步长是数字时钟的时钟周期的整数倍。
EC318b)根据EC316所述的系统,还包括数字时钟,并且其中,时间步长是可变的时间量。
EC318c)根据EC318或EC318b所述的系统,其中,实时确定时间步长。
EC319)根据EC314所述的系统,还包括:
根据具有多个计算引擎管线级的多级计算引擎管线,包括完成每个计算引擎管线级的时间的计算引擎机器周期、包括完成多个计算引擎管线级的时间的计算引擎管线周期,来操作每个计算引擎的装置;
其中,计算引擎机器周期包括数字时钟的时钟周期的第一倍数;
其中,多层作为包括逻辑结构管线级的逻辑结构管线操作,每个逻辑结构管线级包括完成每层的所有传递,时间步长包括完成每个逻辑结构管线级的时间;并且
其中,时间步长包括计算引擎管线周期的第二倍数。
EC320)根据EC319所述的系统,其中,第一倍数是1。
EC321)根据EC319所述的系统,其中,第二倍数是数百到数千。
EC322)根据EC316所述的系统,还包括,当激活的前向传播正在进行时,对于多个时间步长中的每个时间步长,响应于第一多个处理器元件内的后向传播数据的变化,在第一多个处理器元件内选择性地更新至少一个部分神经元权重的装置。
EC323)根据EC316所述的系统,还包括在多个时间步长内的每个时间步长选择性地更新至少一个部分神经元权重的装置。
EC323b)根据EC317、EC317b、EC322或EC323所述的系统,其中,选择性地更新符合连续传播梯度下降过程。
EC324)根据EC314所述的系统,其中,神经网络包括一千多层。
EC325)根据EC314所述的系统,其中,多个神经元包括数十亿个神经元。
EC325b)根据EC314所述的系统,其中,多个神经元包括数百万个神经元。
EC325c)根据EC314所述的系统,其中,对于多个神经元中的至少一些神经元,神经网络对于每个神经元包括至少10个权重。
EC325d)根据EC314所述的系统,其中,对于多个神经元中的至少一些神经元,神经网络对于每个神经元包括至少1000个权重。
EC326)根据EC314所述的系统,其中,神经网络每层包含数十亿个权重。
EC326b)根据EC314所述的系统,其中,神经网络每层包括数百万个权重。
EC327)根据EC314所述的系统,还包括,对于神经网络的每一层,加权输入激活,以创建部分和,累积这些部分和,以生成该层的输出激活,并且其中,累积的加权部分和表示神经网络的神经元和相关联的突触。
EC327b)根据EC327所述的系统,其中,每个权重对应于突触,每个部分和对应于刺激,累积的加权部分和对应于总刺激,并且该层的每个输出激活对应于神经元输出。
EC328)根据EC313所述的系统,还包括对共同包括训练集的多个输入样本中的每一个执行训练工作负载的迭代的装置。
EC329)根据EC328所述的系统,其中,预定学习规则指定在完成整个训练集的所有传递之后更新至少一个部分神经元权重。
EC329b)根据EC329所述的系统,其中,预定学习规则符合随机梯度下降过程。
EC329c)根据EC329所述的系统,其中,预定学习规则符合小批量梯度下降过程。
EC329d)根据EC329所述的系统,其中,预定学习规则符合连续传播梯度下降过程。
EC330)根据EC328所述的系统,还包括将训练集划分成多个所谓的小批量的装置,并且预定学习规则指定在完成每个小批量中包括的输入样本的所有传递之后,更新至少一个部分神经元权重。
EC331)根据EC328所述的系统,还包括将训练集划分成多个所谓的小批量的装置,并且预定学习规则指定在完成每个小批量的每个输入样本的所有传递之后,更新至少一个部分神经元权重。
EC331b)根据EC331所述的系统,其中,预定学习规则符合连续传播梯度下降过程。
EC332)根据EC331所述的系统,其中,前向传递包含第一多个处理器元件内的权重更新,同时小批量学习在第一多个处理器元件内进行。
EC333)根据EC313所述的系统,其中,存储器包含在计算引擎本地的存储器中。
EC333b)根据EC313所述的系统,其中,存储器包含在计算引擎中。
EC333b)根据EC313所述的系统,其中,存储器是连接到每个计算引擎的相应存储器。
EC334)根据EC313所述的系统,其中,存储器能够存储2D矩阵数据结构。
EC334b)根据EC313所述的系统,其中,存储器能够存储多维数据结构。
EC334c)根据EC313所述的系统,其中,存储器能够存储张量数据结构,该张量数据结构包括选自2D、3D、4D、5D和6D的维度。
EC335)根据EC313所述的系统,其中,每个计算引擎还包括用于梯度累积、前向部分和、增量部分和以及前向传递激活的存储器。
EC336)根据EC314所述的系统,其中,数据在前向传递期间传播到神经网络的逻辑端,并在增量传递和链式传递期间在反向逻辑方向循环回来。
EC337)根据EC313所述的系统,其中,前向传递保存激活,以供增量传递和链式传递使用。
EC338)根据EC313所述的系统,还包括在前向、增量和链式传递上时间共享每个处理器元件的装置。
EC339)根据EC328所述的系统,还包括,对于每个输入样本,响应于对应于输入样本的前向传递、增量传递和链式传递的完成,根据预定学习规则选择性地更新至少一个部分神经元权重的装置。
EC339b)根据EC339所述的系统,其中,预定学习规则符合连续传播梯度下降过程。
EC340)根据EC339所述的系统,还包括,对于每个前向传递,选择性地使用由至少一个部分神经元权重的最近选择性更新提供的权重信息的装置。
EC341)根据EC340所述的系统,还包括启动训练工作负载的特定迭代的前向传递的装置,而与是否已经发生对应于训练工作负载的先前迭代的至少一个部分神经元权重的选择性更新无关。
EC342)根据EC340所述的系统,还包括选择性地启动训练工作负载的特定迭代的前向传递的装置,而与训练工作负载的先前迭代的增量传递是否已经开始无关。
EC343)根据EC340所述的系统,还包括,在至少一个计算引擎中,在为训练工作负载的先前迭代执行前向传递的至少一部分之后,并且在执行对应于训练工作负载的先前迭代的至少一个部分神经元权重的选择性更新的一部分之前,为训练工作负载的后续迭代执行前向传递的至少一部分的装置。
EC344)根据EC340所述的系统,还包括至少部分基于至少部分基于第一部分神经元权重所重新计算的激活,选择性地对每个输入样本执行增量传递和链式传递的装置。
EC345)根据EC344所述的系统,其中,第一部分神经元权重是由最近选择性更新产生的部分神经元权重。
EC345b)根据EC345所述的系统,其中,重新计算的激活不需要在计算之间存储,从而减少给定系统训练配置所需的总存储器。
EC345c)根据EC339、EC340、EC341或EC342所述的系统,其中,并行层训练能够以更快的收敛速度实现预定的精度目标,从而减少给定系统训练配置所需的总训练时间。
EC345d)根据EC339、EC340、EC341或EC342所述的系统,其中,并发层训练能够提高给定总训练时间和系统训练配置的精度。
EC346)根据EC340所述的系统,还包括,在每个计算元件中,至少部分基于至少部分基于第一部分神经元权重所重新计算的激活,对每个输入样本选择性地执行增量传递的部分和链式传递的部分的装置。
EC347)根据EC346所述的系统,其中,第一部分神经元权重是由最近选择性更新产生的部分神经元权重。
EC400)一种方法,包括:
训练包括多个有序连接层的神经网络;
其中,该顺序为每个相应的层识别哪些其他层在相应的层之前,哪些其他层在相应的层之后;
其中,每层包括一个或多个神经元,每个神经元包括权重并连接到前一层的至少一个先前神经元和后一层的至少一个后续神经元中的至少一个;并且
其中,每个神经元由一个或多个处理元件实现,每个处理元件包括
至少一个与结构的耦合,处理元件能够经由多个虚拟信道经由结构进行通信,
第一内存,其能够存储至少对应于神经元的计算的指令,
第二内存,其能够存储权重,以及
硬件执行资源,其能够执行来自相应的第一内存的指令并且从相应的第二内存访问数据。
EC401)根据EC400所述的方法,其中,训练包括:
基于第一激活和第一权重,确定第二激活;
基于第一增量和第一权重,确定并保存第二权重;
基于第三激活和所选择的权重,确定第四激活,其中,所选择的权重从第一权重和第二权重中动态地选择;并且
基于第二增量和所选择的权重,确定并保存第三权重。
EC402)根据EC401所述的方法,其中,确定第二激活包括:
经由结构从至少一个先前神经元接收第一激活;
通过至少执行存储在第一内存中的第一指令并访问第二内存中的第一权重,至少部分基于第一激活和第一权重来计算第二激活;并且
经由结构选择性地将第二激活传输到至少一个后续神经元。
EC403)根据EC401所述的方法,其中,确定和保存第二权重包括:
经由结构从至少一个后续神经元接收部分基于第二激活的第一增量;
通过至少执行存储在第一内存中的第二指令,至少部分基于第一增量和第二激活来计算第一梯度;
通过至少执行存储在第一内存中的第三指令并访问第二内存中的第一权重,至少部分基于第一梯度、学习规则和第一权重来计算第二权重;并且
将第二权重存储在第二内存中。
EC404)根据EC402所述的方法,其中,确定第四激活包括:
经由结构从至少一个先前神经元接收第三激活;
通过至少执行第一指令并访问第二内存中的选定权重,至少部分基于第三激活和选定权重来计算第四激活;并且
经由结构选择性地将第四激活传输到至少一个后续神经元。
EC405)根据EC403所述的方法,其中,确定和保存第三权重包括:
经由结构从至少一个后续神经元接收部分基于第四激活的第二增量;
通过至少执行存储在第一内存中的第二指令,至少部分基于第三增量和第四激活来计算第二梯度;
通过至少执行存储在第二内存中的第三指令并访问第二内存中的选定权重,至少部分基于第二梯度、学习规则和选定权重来计算第三权重;并且
将第三权重存储在第二内存中。
EC406)根据EC404所述的方法,其中,确定和保存第二权重包括:
经由结构从至少一个后续神经元接收部分基于第二激活的第一增量;
通过至少执行存储在第一内存中的第二指令,至少部分基于第一增量和第二激活来计算第一梯度;
通过至少执行存储在第一内存中的第三指令并访问第二内存中的第一权重,至少部分基于第一梯度、学习规则和第一权重来计算第二权重;并且
将第二权重存储在第二内存中。
EC407)根据EC406所述的方法,其中,确定和保存第三权重包括:
经由结构从至少一个后续神经元接收部分基于第四激活的第二增量;
通过至少执行存储在第一内存中的第二指令,至少部分基于第三增量和第四激活来计算第二梯度;
通过至少执行存储在第二内存中的第三指令并访问第二内存中的选定权重,至少部分基于第二梯度、学习规则和选定权重来计算第三权重;并且
将第三权重存储在第二内存中。
EC408)根据EC403所述的方法,其中,所选择的权重根据第一权重和第二权重中的哪一个被最近存储来动态地选择。
EC409)根据EC401所述的方法,其中,确定第四激活能够在确定第二激活之后以及在确定和保存第二权重之前执行。
EC410)根据EC404所述的方法,其中,选择性地传输第二激活和第四激活是选择性地基于第二激活和第四激活的相应值。
EC411)根据EC404所述的方法,其中,选择性地传输第二激活和第四激活选择性地基于超过相应第一和第二阈值的第二激活和第四激活的相应绝对值。
EC412)根据EC400所述的方法,其中,至少一个神经元由多个处理元件实现。
EC413)根据EC405所述的方法,其中,确定第四激活另外包括将第四激活存储在第二内存中,并且计算第二梯度另外包括访问第二内存中的第四激活。
EC414)根据EC407所述的方法,其中,计算第二梯度另外包括至少部分基于所选择的权重可选地重新计算第四激活。
EC415)根据EC407所述的方法,其中,计算第一梯度另外包括至少部分基于第一权重可选地重新计算第二激活。
EC416)根据EC400所述的方法,其中,每个处理元件能够执行基于数据流的处理。
EC417)根据EC400所述的方法,其中,每个处理元件包括结构路由器。
EC418)根据EC400所述的方法,其中,每个处理元件能够选择性地与其他处理元件通信结构分组。
EC419)根据EC418所述的方法,其中,每个处理元件能够根据处理元件接收的每个结构分组的虚拟信道说明符和任务说明符来执行处理。
选定的实施方式细节
本文描述了涉及神经网络训练和推理的实施方式,包括深度学习加速器硬件元件和软件元件(例如,参见图1至图4和“深度学习加速器概述”部分)。深度学习加速器包括硬件处理元件(例如,参见图5至图8和“处理元件:计算元件和路由器”部分)。深度学习加速器实现和/或使用各种技术,例如,任务启动和收尾(参见例如图9至图12和“任务”部分)、小波处理(参见例如图13A至图15B和“小波”部分)、任务阻止和解除阻止(参见例如图16和“阻止和解除阻止”部分)、神经元涂抹(参见例如图17至图20和“神经元涂抹”部分)、结构矢量、内存矢量和相关联的数据结构描述符(参见例如图21A至图24和“矢量和数据结构描述符”部分)以及指令格式(参见例如图21A至图24和“指令格式”部分)。深度学习加速器可用于各种场景(例如,参见图26A至图27E和“深度学习加速器示例使用”部分以及图28A至图29和“示例工作负载映射”部分)。在各种实施方式中设想了深度学习加速器(例如,参见“其他实施方式细节”部分)。深度学习加速器可以不同地实现(例如,参见“示例实现技术”部分)。
深度学习加速器概述
图1示出了使用深度学习加速器作为神经网络系统100的神经网络训练和推理系统的实施方式的选定细节。从概念上讲,使用深度学习加速器来训练神经网络。然后,训练的一个或多个结果(例如,权重)用于推理。例如,训练包括将神经网络的神经元映射到深度学习加速器的PE上。然后将训练数据应用于PE。PE处理训练数据(例如,经由前向、增量和链式传递)并更新权重,直到训练完成。然后,权重用于推理。
参考该图,深度学习加速器120包括FPGA 121和PE 122,使彼此能够通信,如耦合123所示。放置服务器150(包括CPU 151和CRM 152)耦合到连接服务器160(包括CPU 161、CRM 162和NIC 164)。连接服务器160能够经由NIC 164和100Gb 112与FPGA 121通信。自主车辆130包括CPU 131、CRM 132、IE 133和相机135。手机140包括CPU 141、CRM 142、IE 143和相机145。
根据各种实施方式和/或使用场景,互联网180提供放置服务器150、连接服务器160、自主车辆130和/或手机140的任何组合之间的耦合(未明确示出)。
虚线箭头放置113概念性地指示从放置服务器150传送到PE 122的放置信息(例如,经由LAN 111、连接服务器160/NIC 164、100Gb 112、FPGA 121和耦合123)。在一些实施方式和/或使用场景中,放置113是隐含的,在提供给PE 122的路由器元件和PE 122的计算元件的初始化信息中反映。在一些实施方式和/或使用场景中,放置113的初始化信息的一部分提供给FPGA 121,以配置FPGA 121的元件,用于与PE 122一起操作。
虚线箭头权重114和虚线箭头权重115概念性地指示分别从PE 122传送到自主车辆130和手机140的权重信息(例如,经由耦合123、FPGA 121、100Gb 112、连接服务器160/NIC 164和互联网180)。在一些实施方式和/或使用场景中,权重信息是作为训练、其子采样、其量化和/或其其他变换的结果直接产生的权重信息的全部或任何部分中的任何一个或多个。
深度学习加速器120能够执行神经网络的训练,例如,通过响应于经由100Gb 112接收的放置信息和训练信息来计算权重。深度学习加速器120还能够在训练完成时经由100Gb 112提供权重,作为结果。权重然后可用于推理,例如,在自主车辆130和/或手机140中。PE 122包括相对大量的PE(例如,10,000或更多),每个PE能够独立地执行与训练相关的路由和计算。在一些实施方式和/或使用场景中,PE 122经由晶片级集成来实现,例如,在单个晶片的相应管芯上实现的相应多个PE。FPGA 121能够将PE 122接口连接到经由100Gb112提供的信息。如在耦合123上传送的,该连接包括从小波转换成修改的以太网帧/从修改的以太网帧转换成小波。
放置服务器150能够经由一个或多个放置程序以编程方式确定神经元的放置(例如,如放置113所示)。放置程序存储在CRM 152中,并由CPU 151执行。放置信息经由LAN 111传送到连接服务器160。放置的一个示例是将神经网络的逻辑神经元映射到物理存储器和执行硬件资源(例如,PE 122)上。
连接服务器160能够与FPGA 121通信,并且经由FPGA 121/耦合123、经由NIC 164和经由驱动程序的编程控制与PE 122间接通信。在各种实施方式和/或使用场景中,通信包括放置信息(例如,来自放置服务器150)、训练信息(例如,来自未示出但可经由互联网180访问的源)和/或训练结果(例如,来自PE 122的权重)。驱动程序存储在CRM 162中,并由CPU161执行。
自主车辆130能够使用权重114来使用IE 133执行推理,该推理由执行存储在CRM132中的程序的CPU 131以编程方式控制和/或协助。使用从相机135获得的信息可选地和/或选择性地执行推理。例如,汽车可作为自主车辆运行。汽车包括能够向推理引擎提供视频的相机。推理引擎能够识别与汽车导航相关的对象,例如,车道、障碍物和其他对象。汽车能够使用物体识别的结果进行导航。提供、识别和导航的任何组合至少部分地经由执行存储在CRM中的程序的一个或多个CPU来控制和/或执行。
手机140能够使用权重115来使用IE 143执行推理,该推理由执行存储在CRM 142中的程序的CPU 141以编程方式控制和/或协助。使用从相机145获得的信息可选地和/或选择性地执行推理。例如,手机可操作以在社交网络网站上张贴标签照片。手机包括能够向推理引擎提供图像数据的相机。推理引擎能够在图像中标记对象(例如,通过诸如“猫”、“狗”等类型,或者通过诸如“Bob”、“Mary”等名称)。手机能够将图像和标记结果发布到社交网络网站。提供、标记和张贴的任何组合至少部分地经由执行存储在CRM中的程序的一个或多个CPU来控制和/或执行。
在各种实施方式和/或使用场景中,在推理使用之前,经由深度学习加速器确定的权重信息的全部或任何部分在加速器之外进行后处理。例如,由权重114和/或权重115表示的信息的全部或任何部分在自主车辆130和/或手机140推理使用之前由放置服务器150全部或部分处理。在各种实施方式和/或使用场景中,后处理的示例包括量化权重114和/或权重115(例如,从浮点数格式转换为定点数格式)。在各种实施方式和/或使用模型中,相机135和相机145是向IE 133和IE 143提供输入的传感器的相应示例。传感器的其他示例是位置传感器、方位传感器、磁传感器、光传感器和压力传感器。
CPU 151包括与相应指令集架构兼容的一个或多个CPU。CPU 151能够根据指令集架构从CRM 152提取和执行指令。CPU 161包括与相应指令集架构兼容的一个或多个CPU。CPU 161能够根据指令集架构从CRM 162提取和执行指令。在一些实施方式中,CPU 151的至少一个指令集架构与CPU 161的至少一个指令集架构兼容。
CPU 131包括与相应指令集架构兼容的一个或多个CPU。CPU 131能够根据指令集架构从CRM 132提取和执行指令。CPU 141包括与相应指令集架构兼容的一个或多个CPU。CPU 141能够根据指令集架构从CRM 142提取和执行指令。在一些实施方式中,CPU 131的至少一个指令集架构与CPU 141的至少一个指令集架构兼容。在一些实施方式中,CPU 151、CPU 161、CPU 131和CPU 141中的任何一个或多个具有彼此兼容的指令集架构。
CRM 152、CRM 162、CRM 132和CRM 142中的每一个的至少相应部分是非易失性的,并且包括闪存、磁存储器、光存储器、相变存储器和其他非易失性存储器技术元件中的任何一个或多个。
在各种实施方式和/或使用场景中,IE 133和/或IE 143包括一个或多个推理引擎,其能够使用由深度学习加速器120确定的权重信息(并且在概念上由权重114和/或权重115指示)。在各种实施方式和/或使用场景中,IE 133结合由CPU 131执行并存储在CRM 132中的程序和/或在这些程序的控制下运行。在各种实施方式和/或使用场景中,IE 143结合由CPU 141执行并存储在CRM 142中的程序和/或在这些程序的控制下运行。在各种实施方式和/或使用场景中,IE 133和/或IE 143的全部或任何部分经由HW和/或SW技术的各种组合来实现。在一些实施方式中,由IE 133和/或IE 143提供的功能的全部或任何部分使用由深度学习加速器120实现和/或与深度学习加速器120相关联的技术来实现。在各种实施方式和/或使用场景中,IE 133和/或IE 143的全部或任何部分经由包括常规CPU、常规GPU、常规DSP、常规FPGA和专用硬件的各种组合的技术来不同地实现。
在各种实施方式中,100Gb 112不同地是用于发送标准以太网帧的100Gb以太网耦合、用于发送修改的以太网帧的100Gb以太网耦合、用于发送修改的以太网帧的100Gb修改的以太网耦合、除以太网技术之外的100Gb串行耦合或者一些其他相对高速的串行耦合。
在一些实施方式和/或使用场景中,耦合123以小波的形式传送信息。
在各种实施方式中,LAN 111使用诸如以太网、光纤通道和/或其他合适的互连技术来实现。
在一些实施方式和/或使用场景中,放置服务器150和连接服务器160被实现和/或操作为组合元件(例如,共享CPU、CRM和/或NIC资源),如组合服务器110概念性示出的。在一些实施方式和/或使用场景中,放置服务器150和连接服务器160经由互联网180而不是(或除了)LAN 111耦合。
图2示出了使用深度学习加速器作为神经网络SW 200的与神经网络训练和推理相关联的软件元件的实施方式的选定细节。根据实施方式,放置服务器SW 210包括神经元到PE映射SW 212以及未示出的其他元件。在各种实施方式和/或使用场景中,放置服务器SW210的全部或任何部分存储在CRM 152中,并可由图1的CPU 151执行。神经元到PE映射SW212的一个或多个程序使能够确定神经网络的神经元放置到图1的PE 122中的特定PE上。
根据实施方式,连接服务器SW 220包括100Gb NIC驱动程序224、训练信息提供商SW 225和权重接收器SW 226以及未示出的其他元件。在各种实施方式和/或使用场景中,连接服务器SW 220的全部或任何部分存储在CRM 162中,并可由图1的CPU 161执行。100GbNIC驱动程序224的一个或多个程序使图1(经由NIC 164和100Gb 112,也是图1)的连接服务器160和深度学习加速器120之间能够通信。训练信息提供商SW 225的一个或多个程序使得能够在100Gb NIC驱动程序224的控制下确定应用的训练信息,用于与图1的深度学习加速器120通信(经由NIC 164和100Gb 112)。在各种实施方式和/或使用场景中,训练信息是从例如图1的连接服务器160和/或互联网180可访问的非易失性存储器中不同地确定的。权重接收器SW 226的一个或多个程序能够在深度学习加速器120确定的100Gb NIC驱动程序224的控制下接收权重信息(经由NIC 164和100Gb 112)。
在各种实施方式和/或使用场景中,FPGA 250上的杂项SW在概念上表示由(图1)的FPGA 121中包含的一个或多个CPU执行的SW。FPGA的CPU例如在FPGA 121的一个或多个元件的制造期间被硬编码,和/或在FPGA121的一个或多个元件的初始化期间被软编码。在各种实施方式和/或使用场景中,FPGA 250上杂项SW的全部或任何部分和/或其表示存储在FPGA121中包括的和/或可由连接服务器160访问的非易失性存储器中。在各种实施方式和/或使用场景中,FPGA 250上的杂项SW能够执行各种内务功能,例如,与图1的PE 122的初始化和/或调试相关的功能。
在各种实施方式和/或使用场景中,PE 260上的任务SW概念性地表示作为PE 122的各种PE上的任务执行的分布式SW。在各种实施方式和/或使用场景中,PE 260上的任务SW的全部或任何部分和/或其表示存储在PE 122中包括的非易失性存储器中和/或可由连接服务器160访问。在各种实施方式和/或使用场景中,PE 260上的任务SW能够执行训练数据的处理,例如,确定神经网络的权重(例如,经由前向、增量和链式传递)。
根据实施方式,自主车辆SW 230包括摄像机SW 232、推理引擎SW 233和导航SW234以及未示出的其他元件。在各种实施方式和/或使用场景中,自主车辆SW 230的所有或任何部分存储在CRM 132中,并可由图1的CPU 131执行。摄像机SW 232的一个或多个程序能够控制和/或操作图1的相机135,以向推理引擎SW 233提供视频信息。推理引擎SW 233的一个或多个程序能够控制和/或操作图1的IE 133,以根据视频信息确定导航信息,例如,要避开的对象和/或要遵循的车道。导航SW 234的一个或多个程序能够响应于导航信息来导航自主车辆SW 230。
根据实施方式,手机SW 240包括静态摄像机SW 242、推理引擎SW 243、发布SW 244以及其他未示出的元件。在各种实施方式和/或使用场景中,手机SW 240的全部或任何部分存储在CRM 142中,并可由图1的CPU 141执行。静态摄像机SW 242的一个或多个程序能够控制和/或操作图1的相机145,以向推理引擎SW 243提供静态图像信息。推理引擎SW 243的一个或多个程序能够控制和/或操作图1的IE 143,以从静止图像信息中确定标签信息。发布SW 244的一个或多个程序能够响应于静止图像信息和/或标签信息发布到社交网络网站。
在各种实施方式和/或使用场景中,SW集合放置服务器SW 210、连接服务器SW220、自主车辆SW 230和/或手机SW 240中的任何一个或多个可选地和/或选择性地包括一个或多个操作系统元件,例如,一个或多个实时操作系统、一个或多个非实时操作系统和/或一个或多个其他控制程序,以协调每个相应SW集合的元件。
图3示出了使用深度学习加速器的与训练神经网络和使用训练的神经网络执行推理相关联的处理的实施方式的选定细节,作为神经网络训练/推理300。如图所示,在动作310中,放置神经网络的神经元,例如,分配神经元和/或与特定PE资源相关联。然后,在动作320中,初始化FPGA资源,为神经网络的训练做准备。然后,在动作330中,初始化PE资源,为神经网络的训练做准备。
在为训练做准备而初始化FPGA资源和PE资源之后,在动作340中将训练数据应用于PE。在动作350中,PE资源处理训练数据。然后在动作360中,进行检查,以确定训练是否完成,例如,因为训练数据的应用完成和/或满足一个或多个完成标准(例如,低于预定界限的推理误差)。如果不是,则流程返回到动作340,以应用进一步的训练数据。在某些情况下,训练没有完成,并且在一些实施方式中,控制传递到另一动作(未示出),以能够改变神经网络(例如,添加神经元层、移除神经元层)。然后,根据动作310、320、330、340、350和360训练改变的神经网络。
如果训练完成,则流程继续提供作为训练结果的权重,用于370中的推理。在一些实施方式和/或使用场景中,权重被量化,例如,转换成整数数据格式。在一些实施方式和/或使用场景中,整数数据格式是精度降低的数字格式(例如,8位或16位)。然后,在动作380中,权重提供给一个或多个推理引擎,并用于进行推理。
在各种实施方式和/或使用场景中,推理引擎对应于一个或多个推理应用,例如,文本翻译、光学字符识别、图像分类、面部识别、自动驾驶汽车的场景识别、语音识别、高能物理的数据分析和药物发现。
在各种实施方式和/或使用场景中,PE资源对应于例如图1的PE 122,而FPGA资源对应于例如图1的FPGA 121。
在各种实施方式和/或使用场景中,神经网络训练/推理300的动作的所有或任何部分的任何一个或多个由图1的神经网络系统100和/或图2的神经网络SW 200的任何一个或多个元件的所有或任何部分执行和/或与之相关。例如,动作310的所有或任何部分由放置服务器150经由执行神经元到PE映射SW 212来执行。再如,动作320的所有或任何部分由放置服务器150经由执行神经元到PE映射SW 212来执行。再如,动作330的全部或任何部分由放置服务器150经由执行神经元到PE映射SW 212来执行。再如,动作330的所有或任何部分由PE 122经由在PE 260上执行任务SW来执行。再如,动作340的所有或任何部分由连接服务器160经由执行训练信息提供商SW 225来执行。再如,动作350的所有或任何部分由PE122通过在PE 260上执行任务SW来执行。再如,动作350的所有或任何部分由组合服务器110、放置服务器150和/或连接服务器160执行。再如,370的全部或任何部分由连接服务器160经由执行权重接收器SW 226来执行。再如,动作370的所有或任何部分由FPGA 121经由在FPGA 250上执行杂项SW来执行。再如,380的全部或任何部分由IE 133执行,例如,在推理引擎SW 233的控制下。再如,动作380的所有或任何部分由IE 143执行,例如,在推理引擎SW243的控制下。
在各种实施方式和/或使用场景中,结合图1的神经网络系统100的各种元件之间的信息通信,执行神经网络训练/推理300的所有或任何部分动作中的任何一个或多个。例如,神经网络训练/推理300的各种动作至少部分地经由在连接服务器160和FPGA 121之间传送信息的NIC 164和100Gb 112来执行。再如,神经网络训练/推理300的各种动作结合在连接服务器160和PE 122之间传送信息的FPGA 121和耦合123来执行。再如,神经网络训练/推理300的各种动作结合放置服务器150、连接服务器160、自主车辆130和移动电话140中的任意一个或多个来执行,传送至少部分由互联网180启用的信息。
图4示出了作为深度学习加速器400的深度学习加速器的实施方式的选定细节。PE499元件中的每一个都与PE 499元件中的其他元件耦合。PE元件中的两个(PE 497和PE498)用唯一标识符示出,并且另外分别与PE 499的实例相同。PE 497被示出为具有针对到其他PE(北耦合430、与PE 498的东耦合431以及南耦合432)和一个I/O FPGA(西耦合433)的四个耦合中的每一个的标识符,但是在其他方面与示出的其他的PE元件相同。在一些实施方式和/或使用场景中,耦合是逻辑和/或物理的。在各种实施方式和/或使用场景中,耦合可用于传送小波、背压信息或这两者。在各种实施方式和/或使用场景中,物理耦合器的所有或任何部分是与在物理上相邻的PE的耦合。在一些实施方式和/或使用场景中,PE在2D网格中物理实现。在一些实施方式和/或使用场景中,PE在物理上在对齐矩形的2D网格中实现,并且物理上相邻的PE对应于共享水平边界的PE(相对于彼此的北/南PE)和共享垂直边界的PE(相对于彼此的东/西PE)。
在一些实施方式和/或使用场景中,相同ASIC的相同实例的阵列形成在晶片上,并且相同ASIC中的每一个包括相同PE(例如,PE 499)的多个相同实例,形成可用于晶片级集成技术的晶片(例如,晶片412)。在一些实施方式和/或使用场景中,PE的外围部分耦合到I/O FPGA 420。示例ASIC被示为:ASIC 410,包括PE的列组织部分(例如,以一维方式复制,以形成晶片);以及ASIC 411,包括PE的正方形组织部分或矩形组织部分(例如以二维方式复制,以形成晶片)。可以设想晶片上的ASIC的其他组织。
在一些实施方式和/或使用场景中,与神经网络中的层相关联的神经元通常以从左到右的方式放置在PE 499元件上,较早的层(例如,输入层)在左边,随后的层(例如,输出层)在右边。因此,训练期间的数据流在概念上被示为虚线箭头前向401、增量402和链403。在前向401期间,刺激被施加到输入层,并且激活从输入层流向后一层,最终到达输出层并产生前向结果。在增量402期间,增量(例如,前向结果和训练输出数据之间的差异)在反向传播。在链403期间,梯度是基于在增量402期间生成的增量(例如,相对于神经元中的权重)来计算的。在一些实施方式和/或使用场景中,增量402的处理基本上与403的处理重叠。
在一些实施方式和/或使用场景中,深度学习加速器400是图1的深度学习加速器120的实现。在一些实施方式和/或使用场景中,单独PE 499元件对应于图1的PE 122的单独PE。在一些实施方式和/或使用场景中,每个ASIC 410元件或可选地每个ASIC 411元件对应于作为单独集成电路实现的PE 122的全部或任何部分PE。在一些实施方式和/或使用场景中,每个ASIC 410元件或可选地每个ASIC 411元件对应于经由晶片的相应管芯实现的PE122的部分(可选地相同)。在一些实施方式和/或使用场景中,I/O FPGA 420元件共同对应于图1的FPGA 121。
在一些实施方式和/或使用场景中,将神经元(例如,与神经网络中的层相关联)放置到PE 499元件上是由图2的放置服务器SW 210的全部或任何部分全部或部分执行的。
处理元件:计算元件和路由器
图5示出了作为深度学习加速器的PE 500的PE的实施方式的选定细节。PE 500包括路由器510和计算元件520。路由器510经由耦合器511-516,选择性地和/或有条件地在其他PE(例如,逻辑上相邻和/或物理上相邻的PE)和即时PE之间传送小波。路由器510选择性地和/或有条件地经由出口匝道521将小波传送给即时PE,并经由入口匝道522将小波从即时PE传送出去。计算元件520根据可从小波导出的指令地址信息对包含在小波中的数据执行计算。指令地址信息用于识别作为存储在计算元件的存储器中的指令实现的任务的起始地址。
在各种实施方式中,省略511-516中的任何一个或多个。
在一些实施方式和/或使用场景中,PE 500是图4的PE 499的实施方式,和/或PE500的元件对应于PE 499的实现。在一些实施方式和/或使用场景中,北513、东515、南516和西511分别对应于图4的北耦合器430、东耦合器431、南耦合器432和西耦合器433。
图6示出了PE的路由器作为路由器600的实施方式的选定细节。考虑有多个PE点,每个PE点包括相应的路由器和相应的CE。路由器600是相应路由器中的一个的实例。路由器600根据小波的颜色信息和路由配置信息,将小波路由到即时路由器所包含的PE的CE以及其他路由器。路由的小波由即时路由器不同地接收和/或由在其中包含即时路由器的PE的CE生成。该路由支持PE之间的通信。传输停滞信息,以防止路由器600中小波存储资源溢出。
路由器600包括四组接口,即,数据输入610、数据输出620、停滞输出630和源640。数据输入610、数据输出620、停滞输出630和源640分别包括接口元件611-617、621-627、631-637和641-647。路由器600还包括分别耦合到数据输入610、数据输出620、停滞输出630和源640的写入解码651、输出652、生成停滞656和Stall 657。路由器600还包括包含耦合到生成停滞656的Src 670的源653。路由器600还包括数据队列650、控制信息660和路由器调度654。控制信息660包括Dest 661和Sent 662。
数据队列650耦合到写入解码651,以接收输入小波信息,并耦合到输出652,以提供输出小波信息。数据队列650还耦合到生成停滞656,以提供数据队列有效性信息。路由器调度654耦合到控制信息660,以接收与调度排队小波相关的控制信息。路由器调度654还耦合到Stall 657,以接收与调度排队小波相关的停滞信息。路由器调度654进一步耦合到输出652,以在621-627中的一个或多个上引导排队小波的呈现。路由器调度654还耦合到生成停滞656,以部分地引导生成停滞信息。
在各种实施方式中,接口元件611-617、621-627、631-637和641-647中的每一个经由无源互连(例如,没有缓冲的线)、有源互连(例如,具有选择性和/或可选缓冲的线)以及与逻辑的耦合器来不同地实现,以适应路由器600的一个实例和路由器600的另一实例之间的额外功能。
在一些实施方式和/或使用场景中,路由器600是图5的路由器510的实现方式。
在一些实施方式中,数据输入610中的一个和数据输出620中的一个对应于西511、跳过西512、北513、跳过东514、东515、南516、出口匝道521和入口匝道522的部分。例如,入口匝道617对应于入口匝道522,出口匝道627对应于出口匝道521。作为另一示例,Y+615包括能够接收数据的北部513的部分,并且Y+625包括能够发送数据的北部513的部分。
图7示出了与处理元件的路由器相关联的处理的实施方式的选定细节,作为小波入口710、停滞信息720和小波出口730。从概念上讲,路由器从入口端口接受尽可能多的小波,根据需要排队,并且在队列空间可用的情况下,每单位时间(例如,时钟周期)将尽可能多的小波路由到出口端口。对于每个相应队列,小波入口710包括对应于来自(逻辑上和/或物理上)相邻PE和/或即时PE的小波入口的动作711-713。停滞信息720包括对应于为每个相应队列提供停滞信息的动作721-723。小波出口730包括动作731-734,动作731-734对应于每个相应队列的(逻辑上和/或物理上)相邻PE和/或即时PE的小波出口。在某些情况下,根据小波的颜色信息和路由配置信息,Send小波734将小波从单个队列条目发送到单个目的地(例如,单播)。在某些情况下,根据小波的颜色信息和路由配置信息,Send小波734将小波从单个队列条目发送到多个目的地(例如,多播)。在各种实施方式和/或使用场景中,动作710、720和/或730的所有或任何部分中的任何一个或多个对应于由图6的路由器600的任何一个或多个元件的所有或任何部分执行的和/或与之相关的动作。
图8示出了处理元件的计算元件的实施方式的选定细节,作为CE 800。
在各种实施方式中,CE 800经由出口匝道820和入口匝道860耦合到路由器。CE800包括Qdistr 824,该Qdistr 824耦合成经由出口匝道820接收小波。Qdistr 824耦合成将小波传输到调度信息896。调度信息896包括Qs 897、活动位898和阻止位899。
在各种实施方式中,Qs 897包括用于每个结构颜色(例如,保存由其他处理元件创建并与相应颜色相关联的小波)和每个本地颜色(例如,保存由CE 800创建并与相应颜色相关联的小波)的队列,例如,Q0 897.0,...QN 897.N。Qs 897(例如,Q0 897.0)中的每一个都与活动位898(例如,活动位0 898.0)和阻止位899(例如,阻止位0 899.0)中的相应一个相关联。每一个有效位898和每一个阻止位899包含关于相应的一个Qs 897的信息,例如,阻止位N 899。N表示阻止QN 897.N。
在各种实施方式中,对于每种颜色都有不同的物理Q,对于预定的颜色子集具有一个或多个物理Q,对于动态确定的颜色子集具有一个或多个物理Q。在各种实施方式中,具有不同的一个或多个相同大小的物理Q(例如,每个能够保持相同数量的小波)和一个或多个不同大小的物理Q(例如,每个能够保持不同数量的小波)。在各种实施方式中,具有一个或多个物理Q被不同地映射到虚拟Q,每个虚拟Q与一种或多种颜色相关联。例如,有N个逻辑Q,少于N个物理Q。再如,Qs 897中的一些能够保持8个小波,而Qs 897中的另一些能够保持3个小波。在一些实施方式中,估计和/或测量与Qs 897中的特定一个相关联的一种或多种颜色的流量,并且Qs 897中的特定一个能够基于流量保持特定数量的小波。
散列822耦合到Qdistr 824,并且至少部分基于小波的颜色(例如,通过对颜色应用散列函数),选择物理队列来存储小波。在一些实施方式中,与小波有效载荷相关联的颜色明确地与小波有效载荷一起存储在队列中,使得队列中的条目保持整个小波(带颜色的有效载荷)。在一些实施方式中,与小波有效载荷相关联的颜色没有明确地与小波有效载荷一起存储在队列中,使得队列中的条目存储小波有效载荷,而不存储相关联的颜色。推理小波有效载荷的颜色,例如,从小波有效载荷存储在的特定队列中推理。
在一些实施方式中,活动位898和阻止位899中的一个或多个被实现为具有N个条目的相应位矢量,每个颜色一个条目。在各种实施方式中,活动位898和阻止位899中的一个或多个被实现为表格中的相应位字段,该表格包括每种颜色的一个条目。
选择器830耦合到调度信息896、RF 842、Dec 840、基部890、PC 834、I-Seq和D-Seq844。选择器830能够从Qs 897中的一个中选择用于处理的小波。在一些实施方式中,选择器830通过选择Qs 897中的一个并选择所选队列中最早的小波来选择小波。在某些情况下,当Dec 840表示已解码终止指令时,选择器830选择新的小波进行处理。在一些其他情况下(例如,访问结构输入的指令),选择器830响应于从D-Seq 844接收的队列标识符,从Qs 897中的一个选择新的小波进行处理。
选择器830从Qs 897中的一个接收所选择的小波,并且能够从所选择的小波向RF842发送一个或多个数据和索引。在一些实施方式中,Qs 897耦合到数据路径852,并且数据路径能够直接从一个Qs中接收数据。选择器830能够从基部890读取基部地址,并计算要发送到PC 834和I-Seq836的指令地址。基部890存储基部地址,并且还耦合到D-Seq 844。PC834存储下一条要提取的指令的地址。在各种实施方式中,基部890和PC 834被实现为寄存器。在一些实施方式中,D-Seq 844能够至少部分基于从基部890读取的值,从基部890读取基部地址,并且从内存854和数据存储848请求一个或多个地址处的数据。
I-Seq 836耦合到PC 834,并且能够读取和修改PC 834(例如,对于顺序指令递增或者对于分支指令非顺序递增)。I-Seq 836也耦合到内存854,并且能够向内存854提供指令提取地址(例如,基于PC 834)。
内存854还耦合到Dec 840、数据路径852和D-Seq 844。响应于来自I-Seq 836的指令提取地址,内存854能够向Dec 840(指令解码器)提供位于指令提取地址的指令。在各种实施方式中,内存854能够响应于每个指令提取地址提供多达三条指令。在一些实施方式中,根据图25A、图25B和图25C中的一个或多个来格式化指令。
Dec 840能够根据各种实施方式和/或使用场景来确定指令的一个或多个特征。例如,Dec 840能够将指令解析成操作码(例如,图25A的操作码2512)和零个或多个操作数(例如,源和/或目的地操作数)。再如,Dec 840能够根据指令类型(例如,分支指令或乘法累积指令等)来识别指令。对于又一示例,Dec 840能够确定指令是特定指令,并相应地激活一个或多个信号。
Dec 840经由终止812耦合到选择器830,并且能够表示一个解码指令是结束任务的终止指令(例如,响应于响应于所选小波而启动的任务而执行的指令的最后一条指令)。
在某些情况下,Dec 840能够解码分支指令。分支指令的示例包括:有条件地修改PC 834的条件分支指令和无条件地修改PC 834的跳转指令。分支指令由I-Seq 836执行,并且可选地和/或有条件地修改PC 834。在某些情况下,分支指令通过有条件地修改PC 834来实现软件控制流(例如,循环)。
响应于对指令(例如,乘法累积指令)的解码,Dec 840能够将操作码发送到数据路径852。Dec 840耦合到DSR 846,并能够向DSR 846发送一个或多个操作数标识符。Dec 840还耦合到D-Seq 844,并且能够将一个或多个操作数类型标识符传输到D-Seq 844。
DSR 846包括保存数据结构描述符(DSD)的寄存器,并且耦合到并能够向D-Seq844发送一个或多个DSD。在一些实施方式中,DSR包括源DSR、目的DSR、扩展DSR和步幅寄存器。响应于从Dec 840接收到操作数标识符,DSR 846能够读取操作数标识符所指定的DSD,并将该DSD发送到D-Seq 844。在各种实施方式中,DSR 846能够接收多达两个源操作数标识符和一个目的地操作数标识符,读取两个源DSR和一个目的DSR,并将两个源DSD和一个目的DSD发送到D-Seq 844。在一些实施方式中,响应于加载DSR指令,CE能够从存储器显式地将DSD写入DSR,并且CE能够响应于存储的DSR指令,从DSR显式地将DSD写入存储器。在一些实施方式中,DSR 846耦合到内存854,并且能够从内存854接收数据和向内存854发送数据。
在一些实施方式中,DSR 846包括三组DSR:12个DSR用于源0操作数(有时称为SODSR),12个DSR用于源1操作数(有时称为SIDSR),12个DSR用于目的地操作数(有时称为DDSR)。此外,DSR 846还包括六个扩展DSR(有时称为XDSR)和六个步幅寄存器。在一些实施方式中,DSR包括48位,XDSR包括51位,步幅寄存器包括15位。在各种实施方式中,相应的指令将48位数据从存储器(例如,数据存储848或内存854)加载到相应的DSR(例如,LDS0WDS、LDS1WDS以及LDDWDS指令分别加载源0、源1和目的地DSR)。在各种实施方式中,各个指令将来自相应DSR的48位数据存储到存储器中(例如,STS0WDS、STS1WDS和STDWDS指令分别将源0、源1和目的地DSR存储到存储器中)。在一些实施方式中,指令(例如,LDXDS)将数据从存储器加载到XDSR中,而其他指令(例如,STXDS)将数据从XDSR存储到存储器中。在存储器和XDSR(例如,LDXDS和STXDS)之间移动数据的指令访问64位存储器,并且只使用较低的51位。在一些实施方式中,指令(例如,LDSR)将数据从存储器加载到步幅寄存器中,而其他指令(例如,STSR)将数据从步幅寄存器存储到存储器中。在一些实施方式中,在存储器和步幅寄存器之间移动数据的指令访问16位存储器,并且仅使用较低的15位。
D-Seq 844还耦合到数据存储848、RF 842和选择器830,并且能够响应于从DSR846接收到的DSD开始访问各种源的矢量数据。在一些情况下(例如,响应于接收描述1D内存矢量、4D内存矢量和循环内存缓冲器中的一个的DSD),D-Seq 844能够计算要访问的存储地址序列(例如,在内存854和/或数据存储848中)。在一些其他情况下(例如,响应于接收描述结构输入的DSD),D-Seq 844能够经由选择器830从Qs 897中的一个开始读取结构数据。在其他情况下(例如,响应于接收描述结构输出的DSD),D-Seq 844能够开始将数据转换成小波,并经由入口匝道860将小波传输到结构。在一些实施方式中,D-Seq 844能够同时访问三个源处的矢量数据(例如,从存储器读取矢量数据、从结构输入读取矢量数据、以及将矢量数据写入结构输出)。
在一些实施方式中,D-Seq 844能够访问RF 842中的一个或多个寄存器中的数据(例如,具有一个或多个输入操作数和/或一个输出操作数的指令)。在某些情况下,D-Seq844能够从RF 842中的寄存器请求操作数。在又一些情况下,D-Seq 844能够从RF 842中的寄存器(例如,索引)请求数据,作为根据DSD计算要访问的存储器地址序列的输入。
数据路径852耦合到RF 842和数据存储848。在各种实施方式中,内存854、RF 842、Qs 897和数据存储848中的任何一个或多个能够向数据路径852提供数据(例如,响应于来自D-Seq 844的请求)并从数据路径852接收数据(例如,操作结果)。数据路径852也经由入口匝道860耦合到路由器,并且能够经由入口匝道860向路由器发送数据。数据路径852包括能够执行操作(例如,根据实施方式,由Dec 840解码和/或提供的操作码指定)的执行资源(例如,ALU)。在一些实施方式中,RF 842包括十六个通用寄存器,有时称为GPR0-GPR15。每个GPR都是16位宽,并且能够存储整数或浮点数据。
在一些实施方式中,数据存储848是一类比内存854更小且更有效(例如,每读取一位数据的焦耳数更低)的内存。在一些实施方式中,数据存储848是一种比内存854具有相对较低容量(例如,保留较少信息)和相对较低访问等待时间和/或相对较高吞吐量的存储器。在某些情况下,更频繁使用的数据存储在数据存储848中,而不太频繁使用的数据存储在内存854中。在一些实施方式中,数据存储848包括第一地址范围,内存854包括第二非重叠地址范围。
在一些实施方式和/或使用场景中,该图的元件对应于图5的计算元件520的实现,并且出口匝道820和入口匝道860分别对应于图5的出口匝道521和入口匝道522。
图8中示出的分隔和耦合仅仅是说明性的,因为其他实施方式预期具有不同的分隔和/或耦合。例如,在其他实施方式中,RF 842和DSR 846组合成一个模块。在其他实施方式中,DSR 846和数据路径852耦合。
任务
图9示出了为任务启动处理小波的实施方式的选定细节,作为流程900。从概念上讲,该处理包括通过确定开始提取和执行任务指令的地址来启动任务。至少部分基于小波包含的信息来确定该地址。
在一些实施方式中,通过从例如一个或多个用于处理的队列中选择就绪小波(选择就绪小波用于任务启动905),开始处理用于任务启动的小波(开始901)。在一些实施方式中,基于以下中一个或多个选择小波:与每个队列相关联的阻止/解除阻止状态、与每个队列相关联的活动/非活动状态、先前选择的小波的颜色以及调度算法。
在选择就绪小波之后,检查小波,以确定小波是控制小波还是数据小波(控制/数据?908)。如果小波是控制小波,则通过将小波索引的低六位添加到基部寄存器(将低索引位添加到基部寄存器,以形成指令地址930),来计算与控制小波相关联的任务的起始地址。如果小波不是控制小波,则小波就是数据小波。通过将基部寄存器添加到小波的颜色乘以4(将(颜色*4)添加到基部寄存器,以形成指令地址920),来计算与数据小波相关联的任务的起始地址。无论是为控制小波计算还是为数据小波计算,任务的起始地址都对应于任务指令的起始地址。
一旦计算出指令的起始地址,就从起始指令地址中提取指令(在指令地址950从存储器中提取指令)。解码和执行一个或多个提取的指令(执行提取的指令960)。提取和执行(如动作950和960所示)继续(不终止961),直到执行终止指令(终止962),然后完成与启动的任务相关联的处理(结束990)。在一些实施方式中,终止指令是与处理小波相关联的最后一条指令。在所启动的任务完成之后,流程可选地和/或选择性地继续处理用于任务启动的另一小波,从开始901开始。
根据各种使用场景,执行(执行提取的指令960)包括执行顺序和/或控制流指令,并且用于提取的指令地址相应地变化(在指令地址950从存储器中提取指令)。
为任务启动选择的就绪小波由特定颜色组成。在一些实施方式和/或使用场景中,一旦为任务启动选择了就绪小波(为任务启动选择就绪小波905),消耗接收到的特定颜色的其他小波(如果有的话),作为用于执行指令的操作数(执行提取的指令960)。包括作为操作数的特定颜色的小波的消耗继续,直到提取并执行终止指令(终止962)。
在一些实施方式和/或使用场景中,流程900的所有或任何部分的动作在概念上对应于由PE的CE(例如,图8的CE 800)执行的操作和/或元件和/或在概念上与其相关。作为一个示例,阻止位899对应于与每个队列相关联的阻止/解除阻止状态。活动位898对应于与每个队列相关联的活动/非活动状态。作为另一示例,动作905的部分由选择器830执行。选择器830根据诸如循环或从最后拾取等调度策略,从准备好的Qs 897中的一个中选择最早的小波(例如,未设置相关联的一个阻止位899,而设置了相关联的一个活动位898)。选择器830选择的小波包括根据图13A和图13B中的一个格式化的颜色和小波有效载荷。
作为另一示例,由CE 800的元件执行动作908。如果坚持小波有效载荷的控制位(例如,图13A的控制位1320)(例如,由选择器830确定),则小波是控制小波。随后,由CE 800执行动作930,例如,通过选择器830将基部890的内容添加到图13A的低索引位1321.1的6个最低位,以形成与控制小波相关联的任务的指令的指令提取地址。选择器830然后将指令提取地址提供给PC 834。如果解除认定小波有效载荷的控制位(例如,图13A的控制位1320)(例如,由选择器830确定),则小波是数据小波。随后,动作920由CE 800执行,例如,通过选择器830将基部890的内容添加到乘以4的小波的颜色(例如,对应于图13A和图13B的颜色1324),以形成用于与数据小波相关联的任务的指令的指令提取地址。选择器830然后将指令提取地址提供给PC 834。
作为另一示例,由CE 800的元件执行动作950,例如,PC 834、I-Seq 836和内存854。由CE 800的元件执行动作960,例如,Dec 840、D-Seq 844、内存854、RF 842和数据路径852等。执行包括终止指令的执行。终止指令的一个示例是坚持终止位的指令。在该示例的上下文中,当Dec 840解码终止指令时,Dec 840经由终止812向选择器830发送小波完成的信号,选择器830选择另一小波进行处理,例如对应于动作905。
在各种实施方式和/或使用场景中,为任务启动900处理小波的所有或任何部分元件在概念上对应于执行图2的PE 260上的任务SW的指令的所有或任何部分。
在各种实施方式和/或使用场景中,包括流程900的所有或任何部分的动作在概念上不同地对应于图15A的流程1500和/或图15B的流程1550的所有或任何部分。例如,动作905包括动作1552的全部或任何部分,并且动作908、920、930、950和960包括动作1553的全部或任何部分。
图10示出了与处理元件的计算元件相关联的指令处理的实施方式的选定细节,作为指令处理1000。
在一些实施方式和/或使用场景中,指令处理1000的所有或任何部分的动作对应于由PE的CE(例如,图8的CE 800)执行的操作和/或元件或在概念上与其相关。
图11示出了经由结束与依赖性管理相关联的流程的实施方式的选定细节,作为依赖性管理1100。
在一些实施方式和/或使用场景中,依赖性管理1100的所有或任何部分动作对应于图1的PE 122执行的操作和/或元件或在概念上与其相关。在一些实施方式和/或使用场景中,依赖性管理1100的元件的全部或任何部分在概念上对应于执行图2的PE 260上任务SW的指令的全部或任何部分。
图12示出了与激活累积和收尾相关联的流程的实施方式的选定细节,随后是部分和计算和收尾,作为激活累积/收尾和部分和计算/收尾1200。
在一些实施方式和/或使用场景中,激活累积/收尾和部分和计算/收尾1200的所有或任何部分动作对应于图1的PE 122执行的操作和/或元件或在概念上与其相关。在一些实施方式和/或使用场景中,激活累积/收尾和部分和计算/收尾1200的元件的全部或任何部分在概念上对应于执行PE 260上的任务SW的指令的全部或任何部分。在各种实施方式和/或使用场景中,收尾(例如,与动作1210相关联)是控制小波的示例。
小波
图13A作为稀疏小波1301示出稀疏小波实施方式的选定细节。稀疏小波1301包括稀疏小波有效载荷1302和颜色1324。稀疏小波有效载荷1302包括索引1321、稀疏数据1322和控制位1320。索引1321包括低索引位1321.1和高索引位1321.2。
在一些实施方式中,稀疏数据1322包括16位浮点数或16位整数的字段。在各种情况下,稀疏数据1322不同地表示神经网络的权重、神经网络的输入或刺激、神经网络的激活或神经网络的部分和。
在一些实施方式中,索引1321包括16位字段。在某些情况下,索引1321是整数,并且是明确指示神经网络的特定神经元的索引。在一些实施方式中,较低索引位1321.1是6位,而较高索引位1321.2是10位。
在一些实施方式中,控制位1320是1位字段。在某些情况下,控制位1320指示稀疏小波有效载荷1302是触发控制活动还是数据活动。在某些情况下,控制活动包括计算神经元的最后激活,数据活动包括计算不是最后激活的神经元的激活。在一些实施方式和/或使用场景中,控制活动包括结束活动,例如,与图11的从先前层1110结束和/或到下一层1122结束中的任何一个或多个以及图12的接收激活收尾1204和/或传输收尾1210中的任何一个或多个相关联。
在一些实施方式中,颜色1324包括5位字段。在一些实施方式中,颜色对应于共享物理信道上的虚拟信道,例如,经由根据颜色的路由。在某些情况下,颜色用于特定目的,例如,向处理元件发送配置信息,或者向映射到处理元件的神经元发送神经网络的输入。
图13B示出了密集小波的实施方式的选定细节,作为密集小波1331。密集小波1331包括密集小波有效载荷1332和颜色1344。密集小波有效载荷1332包括密集数据1343.1、密集数据1343.2和控制位1340。
在一些实施方式中,控制位1340是1位字段,并且功能上与控制位1320相同。
在一些实施方式中,颜色1344包括5位字段,并且在功能上与颜色1324相同。
在某些情况下,密集数据1343.1和密集数据1343.2包括相应16位浮点数或相应16位整数的字段。在各种情况下,密集数据1343.1和密集数据1343.2不同地表示神经网络的权重、神经网络的输入或刺激、神经网络的激活或神经网络的部分和。在某些情况下,密集数据1343.1和密集数据1343.2共同包括32位浮点数(例如,密集数据1343.1包括32位浮点数的第一部分,密集数据1343.2包括32位浮点数的第二部分)。
在各种实施方式和/或使用场景中,不同地预先确定和/或动态确定稀疏小波相对于密集小波的使用。在各种实施方式和/或使用场景中,由软件确定稀疏小波相对于密集小波的使用。
图14示出了创建和传输小波的实施方式的选定细节,作为小波创建流1400。小波创建流1400的动作由各种代理执行。传输PE包括执行动作1403-1407的PE,如传输PE 1420的CE所示。传输PE还包括执行动作1408的路由器,如传输PE 1430的路由器所示。接收PE包括执行动作1409的路由器,如接收PE 1440的路由器所示。
通过初始化至少一个传输PE和一个或多个接收PE以及包括实现耦合传输PE和接收PE的结构的路由器的任何PE(初始化PE 1402),开始创建和发送小波(开始1401)。每个PE包括相应的路由器(例如,图5的路由器510)和相应的CE(例如,图5的计算元件520)。在某些情况下,初始化PE使PE的CE能够执行计算,并使PE的路由器能够在结构上发送、接收和/或转发小波。
在各种实施方式中,DSR持有包含关于操作数的信息的DSD,例如,数据元素的位置(例如,存储器、结构输入和/或结构输出)、数据元素的数量(例如,长度)、数据元素的一个或多个地址(例如,存储器中的起始地址和步幅)。对于结构输出操作数(例如,经由结构发送的小波),DSR包括结构上小波的颜色、控制位以及可选的索引值或位置。
在一些实施方式中,传输PE的CE配置源(设置源1403)。在某些情况下,源是描述源操作数的源DSD。在各种实施方式中,源DSD描述存储在高速缓存和存储器中的一个中的一个或多个数据元素。在其他实施方式中,源DSD描述了经由结构接收的一个或多个数据元素(例如,数据元素是经由结构到达的小波的有效载荷)。在一些其他情况下,源包括源寄存器(例如,RF 842中的一个)。在其他情况下,源包括指令中指定的立即数。
CE还在描述结构目的地操作数(设置目的地(结构)DSR 1404)的目的地DSR中配置目的地DSD。在一些实施方式中,目的地DSD描述了经由结构传输的一个或多个数据元素。在各种实施方式中,源和目的地DSD经由一个或多个指令来配置。
随后,CE提取并解码包含由目的地DSR中的DSD指定的目的地操作数的指令(例如,FMACH、MOV、LT16)(具有目的地DSR 1404.5的提取/解码指令)。在一些实施方式中,指令的操作数类型字段指定操作数是否由DSD指定。
CE从目的地DSR读取目的地DSD,并在源DSR中读取任何源DSD(读取DSR 1404.6)。基于DSD,CE确定数据结构的类型、数据元素的源、是否一起读取多个数据元素(例如,对于SIMD运算)以及每个操作数的数据元素总数。在某些情况下,为以下中的一个或多个读取DSR:源0操作数、源操作数和目的地操作数。在一些实施方式和/或使用场景中,完全或部分并行读取DSR,并且在其他实施方式和/或使用场景中,完全或部分依次读取DSR。
然后,传输PE的CE读取由源描述的数据元素(例如,源DSD或寄存器),并基于目的地DSD创建包括数据元素的小波。CE读取(例如,从内存)由源指定的第一数据元素(从队列/内存1405读取(下一个)数据元素)。数据元素用于形成小波有效载荷。小波有效载荷的控制位和小波的颜色由目的地DSD指定。将小波有效载荷和颜色提供给传输CE的路由器(将数据元素作为小波提供给路由器1406)。在一些实施方式和/或使用场景中,使用单个数据元素来创建稀疏小波的有效载荷。在其他实施方式和/或使用场景中,使用两个数据元素来创建密集小波的有效载荷。
传输PE的CE确定目的地数据元素是否指定了额外数据元素(更多数据元素?1407)。如果目的地DSD指定了额外的数据元素,则CE经由从队列/内存1405读取(下一个)源数据元素、向路由器1406提供作为小波的数据元素以及更多数据元素?1407的动作来创建额外的小波,直到目的地DSD没有指定额外数据元素。如果目的地DSD没有指定额外的数据元素,则流程结束(结束1410)。在一些实施方式中,经由动作1406创建的小波与目的地DSR指定的颜色相同。
传输PE的路由器根据小波的颜色(将小波传输到结构1408),传输PE的CE形成的小波。在一些实施方式和/或使用场景中,直接发送到接收PE的路由器。在一些实施方式和/或使用场景中,例如,经由根据颜色转发小波的一个或多个中间PE,间接发送到接收PE的路由器。接收PE的路由器根据颜色接收小波(从结构1409接收小波)。
在各种实施方式中,相对于动作1405、1406和1407中的任何一个或多个异步执行动作1408。例如,在如动作1408所示传输任何产生的小波之前,动作1406产生多个小波。
在各种实施方式中,从结构1409接收小波在各方面对应于在图15的路由器1503接收小波。
在各种实施方式和/或使用场景中,小波创建流1400的任何一个或多个元件的全部或任何部分在概念上对应于由PE(例如,图4的PE 499)执行的操作和/或PE的元件和/或在概念上与其相关。
在各种实施方式和/或使用场景中,小波创建流1400的任何一个或多个元件的全部或任何部分(例如,动作1403-1407的任何一个或多个)在概念上对应于由计算元件执行的操作和/或元件和/或在概念上与其相关,例如,PE的CE的全部或任何部分,例如,图5的计算元件520和/或图8的CE 800。作为一个示例,目的地DSR(与设置DSR目的地(结构)DSR1404相关联)是DSR 846中的一个。在某些情况下,源DSR(与设置源1403相关联)是DSR 846中的一个;在其他情况下,源寄存器(与设置源1403相关联)是RF 842中的一个。
作为另一示例,作为传输PE的CE的CE 800响应于将信息从内存854复制到源DSR(例如,DSR 846中的一个)的加载DSR指令执行动作1403。在各种实施方式中,源DSR将数据元素的位置指定为内存854、数据存储848和RF 842中的一个。在某些情况下,源DSR指定内存854中的第一数据元素的地址(例如,地址0x0008)、多个数据元素(例如,九个数据元素)以及后续数据元素之间的步幅(例如,12字节)。作为另一示例,CE 800通过将数据写入RF842的寄存器来执行动作1403。
作为另一示例,作为传输PE的CE的CE 800响应于将信息从内存854复制到目的地DSR(例如,DSR 846中的一个)的加载DSR指令执行动作1404。在各种实施方式中,目的地DSR指定将一个或多个数据元素转换成一个或多个小波,并由路由器510经由结构耦合的出口端口(例如,北部513)传输。目的地DSR指定小波的颜色、小波的控制位、数据元素的数量(例如,长度)以及关于小波索引的信息。在某些情况下,目的地DSR指定索引值,而在其他情况下,目的地DSR指定索引值的位置(例如,在RF 842的寄存器中)。
作为另一示例,作为传输PE的CE的CE 800响应于提取和解码指定目的地DSR作为目的地操作数(动作1404.5)的指令执行动作1404.6、1405、1406和1407。在一些实施方式和/或使用场景中,D-Seq 844读取源DSR并访问由源DSR指定的一个或两个数据元素,例如,从内存854或数据存储848中,从而执行动作1405。在各种实施方式中,内存854和/或数据存储848向数据路径852提供一个或两个数据元素。数据路径将数据转换成小波,并经由入口匝道860发送小波,例如,用于存储到(图6的路由器600的)数据队列650的元件中,从而执行动作1406。在一些实施方式中,入口匝道860包括缓冲一个或多个小波的存储器。在一些实施方式中,传输PE的CE 800从目的地DSR读取颜色。基于该颜色,CE 800经由入口匝道860发送小波有效载荷,例如,用于存储到数据队列650的元件中,从而完成动作1406。在一些实施方式中,传输PE的CE 800通过将目的地DSR中指定的数据元素的数量(例如,长度)与经由动作1406发送的数据元素的数量(例如,由计数器跟踪)进行比较来执行动作1407。
作为另一示例,作为传输PE的CE的CE 800执行动作1406。根据目的地DSR,CE将一个或两个数据元素转换成小波有效载荷。在一些实施方式和/或使用场景中,CE将单个数据元素转换成根据图13A的稀疏小波1301格式化的小波有效载荷。单个数据元素转换成稀疏数据1322的实例化,由目的地DSR指定的索引值转换成索引1321的实例化,并且来自目的地DSR的控制位转换成控制位1320的实例化,从而形成稀疏小波有效载荷1302的实例化。
作为另一示例,作为传输PE的CE的CE 800将两个数据元素转换成根据图13B的密集小波1331格式化的小波有效载荷。第一数据元素转换成密集数据1343.1的实例化,第二数据元素转换成密集数据1343.2的实例化。来自目的地DSR的控制位转换成控制位1340的实例化,从而形成密集小波有效载荷1332的实例化。
在各种实施方式和/或使用场景中,小波创建流1400的任何一个或多个元件的所有或任何部分(例如,动作1408和1409的任何一个或多个)在概念上对应于由路由器执行的操作和/或路由器的元件和/或在概念上与其相关,例如,PE的路由器的所有或任何部分,例如,图5的路由器510和/或图6的路由器600。
作为一个示例,路由器600如下执行向结构1408传输小波,作为传输PE 1430的路由器。路由器600例如通过读取Dest 661来确定数据队列650中小波的目的地。对于每种颜色,Dest 661指示输出目的地,例如,一个或多个数据输出620。路由器600经由输出652和一个或多个数据输出620将小波有效载荷和颜色(统称为小波)传输到结构。在各种实施方式中,传输PE的路由器600与动作1405、1406和1407中的任何一个或多个异步执行动作1408。
作为另一示例,从结构1409接收小波由作为接收PE 1440的路由器的路由器600如下执行。路由器600经由数据输入610和写入解码651中的一个在数据队列650接收传输的小波。接收的小波存储在数据队列650的一个或多个位置。
在一些实施方式和/或使用场景中,小波创建流1400的元件的全部或任何部分在概念上对应于图2的PE 260上任务SW的执行指令的全部或任何部分。
图15A示出了接收小波的实施方式的选定细节,作为小波接收流程1500。小波接收流程1500的动作由各种代理执行。接收PE包括执行动作1503-1506的路由器,如接收PE的路由器1520所示。接收PE还包括执行动作1507的CE,如接收PE 1530的CE所示。
通过初始化至少一个传输PE点和一个或多个接收PE点以及包括实现耦合传输PE和接收PE的结构的路由器的任何PE,开始接收小波(开始1501)(初始化PE 1502)。每个计算元件包括相应的路由器(例如,图5的路由器510)和相应的CE(例如,图5的计算元件520)。在某些情况下,初始化PE,使PE的CE能够执行计算,并使PE的路由器能够通过结构发送、接收和/或转发小波。
以下描述假设有一个接收PE。在存在多个接收PE的使用场景中,每个接收PE的相应路由器和CE执行根据图15A的处理。
接收PE的路由器接收由传输PE发送的结构(在路由器1503处接收小波)的‘颜色上’的小波(例如,小波包括颜色)。路由器基于颜色检查小波的目的地,例如,通过读取配置寄存器。如果小波的目的地包括其他PE(到其他PE?1504),则路由器将小波传输到目的地PE。路由器将小波发送到路由器的输出(将小波传输到输出1505),小波从输出通过结构传输到目的地PE。如果小波的目的地不包括其他PE,则省略传输。
如果小波的目的地不包括本地CE(针对本地CE?1506),则不采取进一步的动作(结束1510)。如果小波的目的地中的一个是本地CE,则路由器经由出口匝道向本地CE提供小波,并且小波写入与接收到小波的颜色相关联的选择器队列(将小波写入选择器队列1507),从而接收小波(结束1510)。
在各种实施方式和/或使用场景中,小波接收流程1500的任何一个或多个元件的全部或任何部分(例如,动作1503-1506的任何一个或多个)在概念上对应于由路由器执行的操作和/或路由器的元件和/或在概念上与其相关,例如,PE的路由器的全部或任何部分,例如,图5的路由器510和/或图6的路由器600。
作为一个示例,当在一个数据输入610上接收到小波时,作为接收PE 1520的路由器的路由器600在路由器1503处执行接收小波。随后,由路由器600执行到其他PE?1504和用于本地CE?1506,使用小波的颜色来确定小波的目的地,例如,通过读取Dest 661。对于每个输入颜色,Dest 661指示输出目的地,例如,一个或多个数据输出620。如果Dest 661指示输出包括其他PE(例如,经由SkipX+621、SkipX-622、X+623、X-624、Y+625和Y-626中的一个),则小波由路由器调度654发送到其他PE。如果Dest 661指示输出包括PE的CE(例如,出口匝道627),则小波由路由器调度654发送到CE。小波保留在数据队列650中的一个中,直到通过调度要发送到一个或多个数据输出620的小波(例如,通过路由器调度654)来执行动作1505。
在各种实施方式和/或使用场景中,小波接收流程1500的任何一个或多个元件的所有或任何部分(例如,动作1507)在概念上对应于由计算元件执行的操作和/或计算元件的元件和/或在概念上与其相关,例如,PE的CE的所有或任何部分,例如,图5的计算元件520和/或图8的CE 800。作为一个示例,通过经由出口匝道820向CE 800发送小波并将小波写入Qs 897中的一个,来执行将小波写入选择器队列1507。
在一些实施方式和/或使用场景中,小波由路由器接收、排队并路由到路由器输出端口,而没有小波是用于本地CE的任何特定确定。相反,去往本地CE的小波路由到出口匝道,然后写入选择器队列。不去往本地CE的小波路由到非出口匝道路由器输出。
图15B示出了消耗小波的实施方式的选定细节,作为小波消耗流程1550。小波消耗流程1550的动作由PE的CE执行。
通过选择器从队列中选择小波进行处理(选择器选择小波进行处理1552),开始消耗小波(开始1551),然后CE处理小波。CE提取并执行与小波相关联的指令(提取、执行指令1553),从而消耗小波(结束1554)。在一些实施方式和/或使用场景中,提取和执行与小波相关联的指令以提取和执行终止指令结束。
在一些实施方式中,选择器选择小波用于处理1552由图8的选择器830执行。在各种情况下,选择器830根据诸如循环或从最后拾取等调度策略,选择准备好的Qs 897中的一个中(例如,阻止位899和活动位898设置为特定值)。在一些实施方式中,小波消耗流程1550的部分对应于为图9的任务启动900处理小波的部分。作为一个示例,动作1552对应于动作905。作为另一示例,动作1553对应于动作908、920、930、950和960。
在一些其他情况下,在CE上执行的指令(例如,FMACH)访问小波,作为操作数,并且小波在指令执行期间被CE消耗,例如,如图23所示。
阻止和解除阻止
图16作为流程1600示出了阻止指令和解除阻止指令执行的实施方式的选定细节。从概念上讲,执行指定特定颜色的阻止指令,防止执行与特定颜色相关联的指令,至少直到执行指定特定颜色的解除阻止指令。
参考该图,通过从存储器中提取指令并解码该指令(提取、解码指令1602),开始执行指令(开始1601)。如果指令解码成阻止指令(阻止指令?1603),则执行阻止操作(阻止颜色1604)。阻止指令的源操作数相对于与阻止/未被阻止的颜色相关联的指令处理指定要阻止的一种或多种颜色。在各种实施方式和/或使用场景中,通过将由源操作数指定的一种或多种颜色的一个或多个阻止指示符设置为阻止状态来执行阻止操作,并且执行完成(结束1630)。在各种情况下,源操作数不同地指定阻止单一颜色、阻止所有颜色和阻止任意多种颜色。在随后的操作中,不选择由相应的阻止指示符被设置为阻止状态的颜色组成的小波进行处理。
如果指令解码为解除阻止指令(解除阻止指令?1610),则执行解除阻止操作(解除阻止颜色1611)。解除阻止指令的源操作数指定一种或多种颜色,以相对于与阻止/解除阻止的颜色相关联的指令处理来解除阻止。在各种实施方式和/或使用场景中,通过将由源操作数指定的一种或多种颜色的阻止指示符重置为解除阻止状态来执行解除阻止操作,并且执行完成(结束1630)。在各种情况下,源操作数不同地指定解除阻止单一颜色、解除阻止所有颜色以及解除阻止任意多种颜色。在随后的操作中,可选择由相应的阻止指示符被设置为解除阻止状态的颜色组成的小波进行处理。
如果该指令解码为不是阻止指令并且不是解除阻止指令的指令,则执行该指令(执行指令1620)并且执行完成(结束1630)。
在一些实施方式中,如果阻止操作的源操作数是立即数(例如,8位立即数),则立即数的值指定要阻止的颜色。如果源操作数不是立即的,则会阻止所有颜色。
在一些实施方式中,解除阻止操作的源操作数是立即数(例如,8位立即数),并且立即数的值指定要解除阻止的颜色。在各种实施方式中,具有特定操作数的解除阻止操作解除阻止多种颜色。
在各种实施方式和/或使用场景中,阻止和解除阻止指令处理流程1600的任何一个或多个元件的全部或任何部分在概念上对应于由计算元件(例如,PE的CE的全部或任何部分,例如,图5的计算元件520和/或图8的CE 800)执行的操作和/或计算元件的元件和/或在概念上与其相关。
作为一个示例,阻止位899包括每种颜色的一个位(例如,作为表中的条目,或者作为位掩码)。阻止操作(阻止颜色1604)通过将阻止位899设置为由源操作数指定的一种或多种颜色的特定阻止值(例如,‘1’)来执行。在一些实施方式中,选择器830从阻止位899与解除阻止值(例如,‘0’)匹配的颜色中选择小波进行处理。作为另一示例,解除阻止操作(解除阻止颜色1611)通过将阻止位899设置为由源操作数指定的颜色的特定解除阻止值(例如,‘0’)来执行。在一些实施方式中,选择器830选择包括阻止位899与解除阻止值(例如,‘0’)匹配的颜色的小波。
在一些实施方式中,阻止和解除阻止指令处理流程1600的部分对应于图9的任务启动900的处理小波的部分。作为一个示例,动作1602、1603、1604、1610、1611和1620对应于图9的动作950和960的部分。
在各种实施方式和/或使用场景中,阻止和解除阻止指令处理流程1600的元件的全部或任何部分在概念上对应于图2的PE 260上任务SW的执行指令的全部或任何部分。
神经元涂抹
图17示出了作为神经网络1700的神经网络的实施方式的选定细节。网络1700包括三个部分:输入层1710、内层1720和输出层1740。每层包括多个神经元。输入层171包括神经元N11 1711、N12 1712和N13 1713。内层1720包括第一层神经元N21 1721、N22 1722、N231723和N24 1724,接着是第二层神经元N31 1731、N32 1732和N33 1733。输出层1740包括神经元N41 1741和N42 1742。
图中突出显示了选定的神经元(N21 1721、N22 1722、N23 1723和N24 1724以及N31 1731和N32 1732)以及选定的神经元之间的通信(1791、1792和1793)。下面将更详细地讨论选定的神经元和路径。
图18A示出了将处理元件分配给神经元的第一实施方式的选定细节。有时,将处理元件分配给神经元被称为将神经元放置在处理元件中,或者替代地放置神经元。图18A中相同编号的元件对应于图17中相同编号的元件。从概念上示出了处理元件到图17的神经元子集(突出显示的神经元N21 1721、N22 1722、N23 1723和N24 1724以及N31 1731和N321732)的第一分配。图中的垂直距离表示五个处理元件PE0 1820、PE1 1821、PE2 1822、PE31823、PE4 1824和PE5 1825中每一个的计算资源的相对使用。
神经元N21 1721、N22 1722、N23 1723和N24 1724中的每一个都表示大约相等量的计算资源,例如,存储器的M个运算、K个存储容量和J个带宽。神经元N31 1731和N32 1732中的每一个都表示大约相等量的计算资源,例如,M/2个运算、K/2个存储和J/2个带宽。因此,N31 1731和N32 1732中的每一个都表示大约N21 1721、N22 1722、N23 1723和N24 1724中每一个的计算资源的一半。在各种实施方式中,计算资源的示例包括计算操作、存储容量、从存储器读取带宽、向存储器写入带宽、来自其他神经元的输入连接以及到其他神经元的输出连接。
在示出的实施方式中,分配神经元处理,使得每个前述神经元分配给整个PE。更具体地,N21 1721分配给PE0 1840,N22 1722分配给PE1 1841,N23 1723分配给PE 21842,N241724分配给PE3 1843,N31 1731分配给PE4 1844,N32 1732分配给PE5 1845。因此,六个处理元件中的四个完全订阅(PE0 1820、PE1 1821、PE2 1822和PE3 1823),而六个处理元件中的两个仅订阅了一半(PE4 1824和PE5 1825)。
图18B示出了将处理元件分配给神经元的第二实施方式的选定细节。图18B中相同编号的元件对应于图17和图18A中相同编号的元件。从概念上示出了处理元件到图17的神经元子集(突出显示的神经元N21 1721、N22 1722、N23 1723和N24 1724以及N31 1731和N32 1732)的第二分配。如图18A所示,图中的垂直距离表示五个处理元件PE0 1820、PE11821、PE2 1822、PE3 1823、PE4 1824和PE5 1825中每一个的计算资源的相对使用。同样如图18A所示,N31 1731和N32 1732中的每一个表示大约N21 1721、N22 1722、N23 1723和N241724中的每一个的计算资源的一半。
在示出的实施方式中,分配神经元处理,使得相应神经元的处理“涂抹”在处理元件上。从概念上讲,神经元被“分割”成适合处理要分配给的元件的部分。如图所示,分割神经元并分配处理元件,使得六个处理元件中的四个相等地(并且完全地)订阅(PE0 1820、PE1 1821、PE2 1822和PE3 1823),而六个处理元件中的两个完全取消预订,因此可用于其他用途(PE4 1824和PE5 1825)。在一些实施方式和/或使用场景中,未预订的处理元件保持未使用,并且消耗很少或不消耗活动和/或静态功率(例如,经由时钟门控和功率门控中的一个或多个)。更具体地,N21 1721分成两半(1/2 N21 1721.1和1/2 N21 1721.2)分配给两个相应的处理元件(PE0 1820和PE2 1822)。类似地,N22 1722分成两半(1/2 N22 1722.1和1/2 N22 1722.2)分配给两个相应的处理元件(PE0 1820和PE2 1822)。N23 1723分成两半(1/2 N23 1723.1和1/2 N23 1723.2)分配给两个相应的处理元件(PE1 1821和PE3 1823),N24 1724分成两半(1/2 N24 1724.1和1/2 N24 1724.2)分配给两个相应的处理元件(PE11821和PE3 1823)。N31 1731分成四分之四(1/4 N31 1731.1、1/4 N31 1731.2、1/4 N311731.3和1/4 N31 1731.4)分配给四个相应的处理元件(PE0 1820、PE1 1821、PE2 1822和PE3 1823)。同样,N32 1732分成四分之四(1/4 N32 1732.1、1/4 N32 1732.2、1/4 N321732.3和1/4 N32 1732.4)分配给四个相应的处理元件(PE0 1820、PE1 1821、PE2 1822和PE3 1823)。在各种实施方式中,基于与神经元相关联的一个或多个计算资源来分割神经元并分配处理元件。在一些实施方式中,基于处理元件中可用的硬件资源,分割神经元,并且分配处理元件(例如,一些神经元需要特定的硬件资源,例如,PRNG)。
图19示出了在多个处理元件上涂抹神经元的实施方式的选定细节。分割导致分割的神经元的一部分涂抹在处理元件上。图19中相同编号的元件对应于图17、图18A和图18B中相同编号的元件。如图18B所示,N21 1721分成分别由PE0 1820和PE2 1822实现的两个部分1/2 N21 1721.1和1/2 N21 1721.2。
从概念上讲,N21 1721被认为包括本地计算和本地存储以及输入和输出。N211721的各元件被分别分区。N21本地计算分成1/2本地计算1930.1和1/2本地计算1930.2。N21的本地存储分为1/2本地存储1940.1和1/2本地存储1940.2。N21的输入分为前半部分in0 1910、in1 1911和in2 1912以及后半部分In0 1913、in4 1914和in5 1915。N21的输出分为前半部分out0 1920、out1 1921、out2 1922以及后半部分out3 1923、out4 1924和out5 1925。
1/2本地计算1930.1、1/2本地存储1940.1、in0 1910与in1 1911以及out0 1920由PE0 1820实现。1/2本地计算1930.2、1/2本地存储1940.2、in2 1912与in3 1913以及out11921由PE0 1822实现。
在一些实施方式和/或使用场景中,至少部分地通过神经元没有执行/使用的额外计算、额外存储和/或额外通信来实现在一个以上的处理元件上涂抹神经元。额外计算、额外存储和/或额外通信能够例如将来自神经元部分的部分结果组合成对应于整个神经元结果的结果。额外计算1950.1和额外存储1960.1表示1/2 N21 1721.1的额外计算和额外存储,并且由PE0 1820实现。额外计算1950.2和额外存储1960.2表示1/2 N21 1721.2的额外计算和额外存储,并且由PE0 1822实现。
额外通信1970表示1/2 N21 1721.1和1/2 N21 1721.2之间的额外通信,并通过PE0 1820和PE0 1822之间的结构连接来实现。在一些实施方式和/或使用场景中,额外通信1970的全部或任何部分表示如果单个处理元件完全实现N21 1721,则单个处理元件内部将发生的通信。
图20示出了分割神经元部分之间通信的实施方式的选定细节。图20中相同编号的元件对应于图17、图18A、图18B和图19中相同编号的元件。PE0 1820、PE1 1821、PE2 1822和PE3 1823到神经元部分的分配如图18B所示。为了清楚起见,仅示出了特定于PE0 1820和PE1 1821的分配。
晶片部分2000包括PE0 1820、PE1 1821、PE2 1822和PE3 1823。晶片部分2000的PE之间的耦合被示为(相邻PE之间的耦合)耦合PE0 1820和PE1 1821的2040、耦合PE1 1821和PE3 1823的2041、耦合PE3 1823和PE2 1822的2043以及耦合PE2 1822和PE0 1820的2044。与晶片部分2000相邻的PE的耦合被示为(相邻PE之间的耦合部分)2050、2051、2052、2053、2054、2055、2056和2057。与相邻PE的耦合是“部分”,因为在一些实施方式和/或使用场景中,耦合的所有或任何部分包含在与晶片部分2000相邻的晶片部分中,而不是完全包含在晶片部分2000中。
作为第一示例,通信部分1791.1概念性地表示(图17的)N1 11711和N21 1721之间的通信1791的一部分,例如,从输入层到内层,在相应处理元件中具有分割神经元的部分。更具体地,回顾N21 1721被分成两部分(1/2 N21 1721.1和1/2 N21 1721.2;见图18B)。因此,通信1791分成两部分。通信部分1791.1具体说明了相对于1/2 N21 1721.1的部分。通信部分1791.1经由邻近晶片部分2000的PE之间的2057(相邻PE之间的耦合部分)传输到PE01820(分配给1/2 N21 1721.1)。在一些实施方式和/或使用场景中,通信1791分成两部分,即,通信部分1791.1(示出)和通信部分1791.2(未示出)。在一些实施方式和/或使用场景中,通信部分1791.1和通信部分1791.2经由相同的虚拟信道传输。在一些实施方式和/或使用场景中,通信部分1791.1和通信部分1791.2经由相应的唯一虚拟信道传输。
作为第二示例,通信部分1792.1概念性地表示(图17的)N21 1721和N31 1731之间的通信1792的一部分,例如,从第一内层到第二内层,在相应的处理元件中具有分割神经元的部分。更具体地,回顾N21 1721分成两部分(1/2 N21 1721.1和1/2 N21 1721.2;见图18B)。进一步回顾N31 1731分成四个部分(1/4 N31 1731.1、1/4 N31 1731.2、1/4 N311731.3和1/4 N31 1731.4;见图18B)。因此,通信1792分成多个部分。通信部分1792.1具体说明了相对于1/2 N21 1721.1和1/4 N31 1731.2的部分。通信部分1792.1在PE0 1820(分配给1/2 N21 1721.1)和PE1 1821(分配给1/4 N31 1731.2)之间经由(相邻PE之间的耦合)2040传输。在各种实施方式和/或使用场景中,通信部分1792.1(示出)和例如通信1792的其他部分(未示出)经由相同的虚拟信道、经由每个部分的唯一虚拟信道、经由与特定神经元相关联的每个部分的虚拟信道和/或经由与特定处理元件相关联的每个部分的虚拟信道传输。
作为第三示例,通信部分1793.1概念性地表示N23 1723和N31 1731(图17)之间的通信1793的一部分,例如,从第一内层到第二内层,在同一处理元件中具有分割神经元的部分。更具体地,回顾N23 1723分成两部分(1/2 N23 1723.1和1/2 N23 1723.2;见图18B)。进一步回顾N31 1731分成四个部分(1/4 N31 1731.1、1/4 N31 1731.2、1/4 N31 1731.3和1/4 N31 1731.4;见图18B)。因此,通信1793分成多个部分。通信部分1793.1具体说明了相对于1/2 N23 1723.1和1/4 N31 1731.2的部分。通信部分1793.1经由PE1 1821(分配给1/2N23 1723.1和1/4 N31 1731.2)内部的一个或多个机制传输。例如,PE1 1821使用内部资源(例如,路由器)来内部反馈输出,作为输入,和/或从输出内部提供输入。在一些实施方式和/或使用场景中,通信部分1793.1经由虚拟信道传输,该虚拟信道导致输出用作输入,和/或从输出提供输入。
作为第四示例,通信2060概念性地表示额外通信1970(图19的)的全部或任何部分,例如,在处理元件上分割的神经元内的通信。更具体地,通信2060具体说明了N32 1732分成的四个部分中的两个部分(1/4 N32 1732.1和1/4 N32 1732.2;见图18B)之间的通信。通信2060经由(相邻PE之间的耦合)2040在PE0 1820(分配给1/4 N32 1732.1)和PE1 1821(分配给1/4 N32 1732.2)之间传输。在各种实施方式和/或使用场景中,通信2060经由专用于通信2060的虚拟信道、与通信2060和N32 1732的其他部分之间的通信共享的虚拟信道、以及与通信2060和在处理元件上分割的神经元的所有或任何部分共享的虚拟信道。
在一些实施方式和/或使用场景中,晶片部分2000的全部或任何部分包括图1的PE122。在一些实施方式和/或使用场景中,PE01820、PE1 1821、PE2 1822和PE3 1823中的任何一个对应于图4的PE 497。在一些实施方式和/或使用场景中,相邻PE 2041、2042、2043和2044之间的耦合和/或相邻PE 2050、2051、2052、2053、2054、2055、2056和2057之间的耦合的一部分中的任何一个或多个对应于图4的北耦合器430、东耦合器431、南耦合器432和西耦合器433中的任何一个或多个。
与神经元涂抹相关的概念(例如,参考图17、图18A、图18B、图19和图20所描述和示出的)适用于各种拓扑和类型的神经网络,例如,FCNN、RNN、CNN、LSTM网络、自动编码器、深度信任网络和生成对抗网络。
在各种实施方式和/或使用场景中,神经元分成相同大小的部分,例如,一半、四分之一、八分之一等。在各种实施方式和/或使用场景中,神经元分成不同大小的部分,例如,第一部分是一半,第二和第三部分分别是四分之一。在各种实施方式和/或使用场景中,神经元分成任意大小的部分。
在各种实施方式和/或使用场景中,多个PE分配给单个神经元。在各种实施方式和/或使用场景中,单个PE分配给多个神经元的相应整体。
在各种实施方式和/或使用场景中,PE分配给神经元完全或部分响应于计算和/或存储需求的静态和/或动态测量。在各种实施方式和/或使用场景中,PE分配给神经元完全或部分响应于待处理数据的维度。
在各种实施方式和/或使用场景中,由箭头方向表示的数据流是单向的(如绘制的箭头所示)、双向的和/或反向的(相对于绘制的箭头)。作为具体示例,在各种实施方式和/或使用场景中,(图17的)通信1792表示从N21 1721到N31 1731(例如,在前向传播期间)或者从N31 1731到N21 1721的反向(例如,在后向传播期间)的数据流。因此,在从PE0 1820到PE1 1821(例如,在前向传播期间)以及从PE1 1821到PE0 1820的反向(例如,在后向传播期间)发生通信部分1792.1以及因此在(相邻PE之间的耦合部分)2057上的通信。
矢量和数据结构描述符
在各种实施方式和/或使用场景中,执行一个或多个矢量的处理,每个矢量包括相应的一个或多个数据元素。矢量从存储器(例如,PE的CE的存储器,例如,图8的内存854或数据存储848)中不同地读取,写入存储器,从结构接收,或传输到结构。从存储器读取或写入存储器的矢量有时称为‘内存矢量’。从结构接收或传输到结构的矢量(例如,作为小波)有时称为‘结构矢量’。DSR中的DSD(以及XDSR中的XDXD)可用于确定内存矢量的寻址模式和结构矢量的访问模式。
在对图21A至图21E、图22A至图22B和图23至图24的描述中,具有第一数字“8”的每个元件标识符是指图8的元件,为了简洁起见,没有另外具体地标识为图8的元件。
图21A示出了作为结构输入数据结构描述符2100的结构输入数据结构描述符(又名结构输入DSD)的实施方式的选定细节。在一些实施方式中,结构输入数据结构描述符2100描述由PE从结构接收的结构矢量以及与结构矢量的处理相关的各种参数。在各种实施方式和/或使用场景中,指令的源0操作数或源1操作数是指根据结构输入数据结构描述符2100包含DSD实例的DSR。
结构输入数据结构描述符2100包括长度2101、UTID(微线程标识符)2102、UE(微线程启用)2103、SW(SIMD宽度)2104、AC(激活颜色)2105、Term(在控制小波上终止微线程)2106、CX(控制小波变换启用)2107、US(微线程稀疏模式)2108、类型2109、SS(单步)2110、SA(保存地址/条件单步模式)2111、SC(颜色指定/正常模式)2112、SQ(队列指定/正常模式)2113以及CH(彩色高)2114。
在一些实施方式中,长度2101包括指定矢量长度的15位整数,例如,矢量中数据元素的数量。
在一些实施方式中,UE(微线程启用)2103包括1位字段,该字段指示在至少一些条件下,是否在处理结构矢量期间启用微线程,该结构矢量有时称为‘启用微线程’。如果指令的至少一个操作数(源或目的地)是启用微线程的结构矢量,则在指令处理期间,在输入或输出停滞上,处理能够切换到另一任务的另一指令(假设有足够的微线程资源可用)。当清除停滞时,处理(最终)返回到先前停滞的指令。示例输入停滞是当输入结构矢量操作数的至少一个元件不可用时。示例输出停滞是没有足够的空间来缓冲与输出结构矢量的元件相关联的结果。在某些情况下,不启用微线程的结构矢量同步处理,并在输入或输出停滞上停止处理。在某些情况下,启用微线程的结构矢量异步处理,并减少或避免处理元件在输入或输出停滞上停滞。如果结构矢量启用微线程,则处理元件能够有条件地切换为处理不同的指令(而不是停滞),并且随后在稍后的时间点(例如,当数据可用时)恢复处理结构矢量。
在一些实施方式中,UTID(微线程标识符)2102包括识别多个微线程中的一个和/或与多个微线程中的一个相关联的资源的3位字段。微线程和/或资源例如与启用微线程的结构矢量相关联。在一些实施方式中,硬件为八个微线程提供资源。在一些实施方式和/或使用场景中,UTID 2102识别或部分识别Qs 897中的一个。
在一些实施方式中,SW(SIMD宽度)2104包括指定在一些实现中并行执行的操作数量(例如,一个、两个或四个)的2位字段。例如,FMACH、FADDH、FMULH或MOV16指令对相应的操作数并行执行多个(最多四个)操作。在一些实现中,SW字段用于确定如何将小波解析成数据和索引信息。例如,当SW字段为4时,两个小波(每个小波具有两个数据值(没有索引值))提供四个操作数,例如,并行地。继续该示例,当SW字段为2时,具有两个数据值(并且没有索引值)的单个小波提供两个操作数,例如,并行地。继续该示例,当SW字段为1时,具有单个数据值和单个索引值的单个小波提供单个操作数。
在一些实施方式中,AC(激活颜色)2105包括指定要激活的颜色的6位字段(例如,经由激活操作)。在某些情况下,当启用微线程的结构矢量的处理完成时,激活AC字段指定的颜色,并基于激活的颜色启动任务。完成处理,例如,当已经处理结构矢量的所有元件时,或者当Term 2106指示遇到控制小波时终止,并且在处理结构矢量时,遇到控制小波时。在一些实施方式中,AC 2105能够指定以下中的一个:本地颜色和结构颜色。
在一些实施方式中,Term(在控制小波上终止微线程)2106包括1位字段,该字段指定在接收到控制小波时是否终止。如果由结构输入数据结构描述符2100指定的队列头部的小波(例如,由UTID 2102、SC 2112和/或SQ 2113的任意组合的各种功能不同地指定的Qs897中的一个,如本文别处所述)是控制小波(例如,设置了图13A的控制位1320或图13B的控制位1340),并且设置了Term 2106,则指令终止,并且颜色由AC 2105激活。
在一些实施方式中,CX(控制小波变换启用)2107包括指定是否变换控制小波的1位字段。如果设置了CX 2107,则响应于接收到结构矢量中的控制小波,索引寄存器的位15:6被设置为所有“1”。在一些实施方式和/或使用场景中,如果索引寄存器的位15:6都是“1”,则设置与引用索引寄存器的输出结构矢量相关联的任何输出小波的控制位。
在一些实施方式中,US(微线程稀疏模式)2108包括1位字段,该字段指定是否以稀疏模式处理启用微线程(例如,经由UE字段)的结构矢量。如果设置了US 2108,则结构矢量包括稀疏数据元素的矢量和由结构输入数据结构描述符2100描述的操作数的相应小波索引。根据(图21C的)WLI 2152,索引可选地和/或选择性地用于存储器操作数的地址计算。
在一些实施方式中,类型2109包括指定数据结构类型和/或如何解释结构输入数据结构描述符2100的其他字段的3位字段。对于结构输入数据结构描述符2100的所有实例,类型2109是“0”。
在一些实施方式中,SS(单步)2110包括1位字段,该字段指定对于使用DSD作为操作数的操作,在至少一些条件下是否启用单步模式操作。在某些情况下,具有启用单步模式的一个或多个操作数的指令在单步模式中操作。
在一些实施方式中,SA(保存地址/条件单步模式)2111包括1位字段,该字段指定对于使用DSD作为操作数的操作,在至少一些条件下是否启用保存地址模式操作。
在一些实施方式和/或使用场景中,激活颜色,并且作为响应,至少部分基于颜色在地址处启动任务。一旦启动,任务就会执行。在某些情况下,从与当前正在执行的任务的颜色相关联的队列中提供输入结构矢量。在一些实施方式中,SC(指定颜色、正常模式)2112包括1位字段,如果设置该字段,则指定从与特定结构颜色相关联的特定队列(例如,Qs 897中的一个)提供输入结构矢量。特定的结构颜色被指定(例如,作为5位颜色)为低位UTID2102(包括3位字段)和高位CH 2114(包括2位字段)的级联。在一些实施方式中,SQ(指定队列,正常模式)2113包括1位字段,如果设置该字段,则指定从特定队列(例如,Qs 897中的一个)提供输入结构矢量。如果设置了SQ 2113,则从由UTID 2102指定的Qs 897中的一个提供输入结构矢量。
图21B示出了作为结构输出数据结构描述符2120的结构输出数据结构描述符(又名结构输出DSD)的实施方式的选定细节。在一些实施方式中,结构输出数据结构描述符2120描述了由PE创建并在结构上传输的结构矢量以及与结构矢量的处理相关的各种参数。在各种实施方式和/或使用场景中,指令的目的地操作数是指包含根据结构输出数据结构描述符2120的DSD的实例的DSR。
结构输出数据结构描述符2120包括长度2121、UTID(微线程标识符)2122、UE(微线程启用)2123、SW(SIMD宽度)2124、颜色2126、C(输出控制位)2127、索引低2128.1、类型2129、SS(单步)2130、SA(保存地址/条件单步模式)2131、WLI(小波索引选择)2132、索引高2128.2和AC(激活颜色)2125。
在一些实施方式中,结构输出数据结构描述符2120的元素(长度2121、UTID 2122、UE 2123、SW 2124、SS 2130、SA 2131和AC 2125)在功能和/或操作上分别与结构输入数据结构描述符2100的元件(长度2101、UTID 2102、UE 2103、SW 2104、SS 2110、SA 2111和AC2105)相似。
在一些实施方式中,颜色2126包括指定用于传输与结构矢量相关联的小波的结构颜色的5位字段。
在一些实施方式中,C(输出控制位)2127包括指定小波是否是控制小波的1位字段。如果设置了C 2127,则基于DSD创建的任何小波都是控制小波(例如,设置了图13A的控制位1320)。
在一些实施方式中,索引低2128.1包括3位字段,索引高2128.2包括3位字段。索引低2128.1和索引高2128.2的串联统称为索引2128。在某些情况下,索引2128用于形成小波的索引(例如,图13A的索引1321)。
在一些实施方式中,类型2129包括指定数据结构类型和/或如何解释结构输出数据结构描述符2120的其他字段的3位字段。对于结构输出数据结构描述符2120的所有实例,类型2129为“0”。
在一些实施方式中,WLI(小波索引选择)2132包括1位字段,该字段部分指定结构矢量的索引。在某些情况下,如果WLI 2132是“1”,则索引是来自寄存器(例如,RF 842的GPR4)的值。在某些情况下,如果WLI 2132是“0”,则索引是到索引2128的16位的零扩展。
图21C示出了作为1D内存矢量数据结构描述符2140的1D内存矢量数据结构描述符(又名1D内存矢量DSD)的实施方式的选定细节。在一些实施方式中,1D内存矢量数据结构描述符2140描述了存储在存储器中的一维内存矢量以及与内存矢量的处理相关的各种参数。在各种实施方式和/或使用场景中,指令的源0操作数、源1操作数和目的地操作数中的任何一个或多个是指根据1D内存矢量数据结构描述符2140的包含相应的DSD实例的相应的DSR。
1D内存矢量数据结构描述符2140包括长度2141、基部地址2142、类型2149、SS(单步)2150、SA(保存地址/条件单步执行模式)2151、WLI(小波索引选择)2152和步幅2153。
在一些实施方式中,相对于结构输入数据结构描述符2100的一些元素(长度2101、SS 2110和SA 2111),1D内存矢量数据结构描述符2140的一些元件(长度2141、SS 2150和SA2151)在功能和/或操作上分别类似。在某些情况下,如果内存矢量的长度大于15位,则使用4D内存矢量数据结构描述符2140。
在一些实施方式中,基部地址2142包括指定内存矢量的基部地址的15位整数。
在一些实施方式中,类型2149包括指定数据结构类型和/或如何解释1D内存矢量数据结构描述符2140的其他字段的3位字段。类型2149对于1D内存矢量数据结构描述符2140的所有实例都是“1”。
在一些实施方式中,WLI(小波索引选择)2152包括1位字段,该字段部分指定矢量的索引。如果WLI 2152是“0”,则索引是0。在某些情况下,如果WLI 2152是“1”,则索引是来自寄存器(例如,RF 842的GPR4)的值或者稀疏小波的索引(例如,图13A的索引1321)。
在一些实施方式中,步幅2153包括指定矢量步幅的9位有符号整数。在某些情况下,基部地址2142、由WLI 2153指定的索引和步幅2153能够计算1D内存矢量中的数据元素的地址。1D内存矢量中的第一数据元素的地址是WLI 2153指定的基部地址2142+索引。1D矢量中下一个数据元素的地址是第一数据元素+步幅2153的地址。例如,基部地址2142是136,WLI 2153是1,GPR4保存值6,步幅2153是-2,长度2141是10,则内存矢量包括位于地址{142,140,138,...,124的数据}。在某些情况下,如果内存矢量的步幅大于9位,则使用4D内存矢量数据结构描述符2140。
图21D示出了作为4D内存矢量数据结构描述符2160的4D内存矢量数据结构描述符(又名4D内存矢量DSD)的实施方式的选定细节。在一些实施方式中,结合图22B的4D内存矢量扩展数据结构描述符2240,4D内存矢量数据结构描述符2160描述了存储在存储器中的4维内存矢量以及与内存矢量的处理相关的各种参数。在一些实施方式中,结合图22B的4D内存矢量扩展数据结构描述符2240,4D内存矢量数据结构描述符2160描述了存储在内存中的二维或三维内存矢量以及与内存矢量的处理相关的各种参数。在各种实施方式和/或使用场景中,根据4D内存矢量数据结构描述符2160,指令的源0操作数、源1操作数和目的地操作数中的任何一个或多个是指包含DSD的相应实例的相应DSR。
4D内存矢量数据结构描述符2160包括长度低位2161.1、基部地址2162、类型2169、SS(单步)2170、SA(保存地址/条件单步模式)2171、WLI(小波索引选择)2172和长度高位2161.2。
在一些实施方式中,4D内存矢量数据结构描述符2160(基部地址2162、SS 2170、SA2171和WLI 2172)的一些元件相对于1D内存矢量数据结构描述符2140(基部地址2142、SS2150、SA 2151和WLI 2152)分别在功能和/或操作上相似。
在一些实施方式中,低位2161.1包括15位字段,长度高位2161.2包括9位字段。低位2161.1和高位2161.2的串联统称为(并示出为)长度2161(24位字段),结合4D内存矢量扩展数据结构描述符2240来解释。
在一些实施方式中,类型2169包括指定扩展DSR(XDSR)的3位字段,存储例如扩展DSD(XDSD)。XDSD指定并描述了以下中的一个:循环内存缓冲器(例如,图22A的循环内存缓冲器扩展数据结构描述符2210)和四维内存矢量(例如,图22B的4D内存矢量扩展数据结构描述符2240)。
图21E示出了作为循环内存缓冲器数据结构描述符2180的循环内存缓冲器数据结构描述符(又名循环内存缓冲器DSD)的实施方式的选定细节。在一些实施方式中,结合循环内存缓冲器扩展数据结构描述符2210,循环内存缓冲器数据结构描述符2180描述了以下中的一个:存储在存储器中的数据元素的循环缓冲器和存储在存储器中的数据元素的FIFO;以及与数据元素的处理相关的各种参数。在各种实施方式和/或使用场景中,根据循环内存缓冲器数据结构描述符2180,指令的源0操作数、源1操作数和目的地操作数中的任何一个或多个是指包含相应的DSD实例的相应的DSR。
循环内存缓冲器数据结构描述符2180包括长度2181、基部地址2182、FW(FIFO环绕位)2188、类型2189、SS(单步)2190、SA(保存地址/条件单步模式)2191、WLI(小波索引选择)2192和SW(SIMD宽度)2184。在一些实施方式中,循环内存缓冲器访问总是索引为0,步幅为1。
在一些实施方式中,循环内存缓冲器数据结构描述符2180的一些元件(长度2181、基部地址2182、SS 2190和SA 2191)相对于1D内存矢量数据结构描述符2140的一些元件(长度2141、基部地址2142、SS 2150和SA 2151)分别在功能和/或操作上相似。在一些实施方式中,类型2189在功能和/或操作上类似于4D内存矢量数据结构描述符2160的类型2169。在一些实施方式中,循环内存缓冲器数据结构描述符2180的SW 2184在功能和/或操作上类似于结构输入数据结构描述符2100的SW 2104。
在一些实施方式中,FW(FIFO环绕位)2188包括1位字段,该字段能够区分全FIFO和空FIFO。当访问环绕FIFO的地址范围时,切换FW(FIFO环绕位)2188。
在一些实施方式中,WLI 2192对循环缓冲器的索引没有影响。
图22A示出了循环内存缓冲器扩展数据结构描述符的实施方式的选定细节,作为循环内存缓冲器扩展数据结构描述符2210。循环内存缓冲器扩展数据结构描述符2210包括类型2211、起始地址2212、结束地址2213、FIFO 2214、推送(激活)颜色2215和弹出(激活)颜色2216。
在一些实施方式中,类型2211包括指定数据结构的类型的1位字段。对于循环内存缓冲器扩展数据结构描述符2210的所有实例,类型2211是“1”。
在一些实施方式中,起始地址2212包括指定存储器中循环缓冲器的起始地址的15位字段。在一些实施方式中,结束地址2213包括指定存储器中循环缓冲器的结束地址的15位整数。当地址递增(例如,以开始下一次访问的步幅递增)并等于结束地址2213时,地址被重置为基部地址2212,从而提供循环访问行为。
在一些实施方式中,FIFO 2214包括指定循环缓冲器是否是FIFO的1位字段。如果FIFO 2214为“0”,则循环缓冲器不是FIFO。如果FIFO 2214为“1”,则循环缓冲器为FIFO。
在一些实施方式中,按压(激活)颜色2215和弹出(激活)颜色2216包括指定要激活的颜色的6位字段(例如,经由激活操作)。在一些实施方式中,按压(激活)颜色2215和弹出(激活)颜色2216能够指定本地颜色和结构颜色中的一个。
在各种实施方式中,两个循环内存缓冲器DSR能够描述存储在存储器的同一区域中的数据元素的FIFO。目的地DSR(例如,DDSR8)描述FIFO的写指针,源DSR(例如,S1DSR8)描述FIFO的读指针。在一些实施方式中,目的地和源DSR具有相同的标识符。在各种实施方式中,只有一些DSR 846能够描述FIFO(例如,DDSR8-DDSR 11和S1SR8-S1SR11)。
两个DSR的FW(FIFO环绕位)2188能够检测FIFO是满还是空。当FIFO用作目的地时,读取相关S1DSR的基部地址2182和FW 2188并与来自DDSR的值进行比较。如果两个DSR的基部地址2182相同,但FW 2188不同,则FIFO已满。当FIFO用作源时,读取相关DDSR的基部地址2182和FW 2188并与来自S1DSR的值进行比较。如果两个DSR的基部地址2182相同,而FW2188相同,则FIFO为空。在一些情况下(例如,微线程),响应于读访问空FIFO或写访问满FIFO,处理切换到另一任务中的指令,直到FIFO分别不是空的或不满的。
图22B示出了4D内存矢量扩展数据结构描述符的实施方式的选定细节,作为4D内存矢量扩展数据结构描述符2240。在一些实施方式中,4D内存矢量扩展数据结构描述符2240部分描述了存储在存储器中的数据元素的四维矢量。4D内存矢量扩展数据结构描述符2240包括类型2241、维度2242、DF(维度格式)2243、选择步幅1 2244.1、选择步幅2 2244.2、选择步幅3 2244.3、选择步幅4 2244.4和步幅2245。在一些实施方式中,4D内存矢量扩展数据结构描述符2240包括51位。
在一些实施方式中,类型2241包括指定数据结构的类型的1位字段。对于4D内存矢量扩展数据结构描述符2240的所有实例,类型2241为“0”。
在一些实施方式中,维度2242包括用于初始化矢量的下一个维度的长度的20位字段。
在一些实施方式中,DF(维度格式)2243包括5位字段,其结合图21D的长度2161,指定了N维矢量的每个维度的长度。从概念上讲,长度2161分成6个连续的4位半字节,并且每个维度使用一个或多个半字节来表示。位设置在DF 2243中,以指示长度2161中的维度之间的分界。例如,DF 2242是“01110”(二进制),表示使用两个半字节来表示第一维,例如,位[7:0],并且表示1到128之间的长度。类似地,使用一个半字节来表示第二维,例如,位[11:8],并且表示1和4之间的长度。在DF 2242中,通过设置(N-1)位来表示N维矢量,只有最后一维使用四个以上的半字节。在一些实施方式和/或使用场景中,使用这种格式描述一维矢量,例如,如果矢量对于长度2141(图21C)来说太长而无法描述。在一些实施方式和/或使用场景中,使用这种格式描述二维或三维矢量。
在一些实施方式中,选择步幅1 2244.1包括为矢量的第一维指定步幅的1位字段。如果选择步幅1 2244.1为“0”,则步幅为1。如果选择步幅1 2244.1为“1”,则步幅由步幅2245指定。
在一些实施方式中,选择步幅2 2244.2包括3位字段,并对矢量的第二维的步幅进行编码。如果选择步幅2 2244.2为“0”,则步幅为1。如果选择步幅2 2244.2为“1”,则步幅由步幅2245指定。如果步幅选择2 2244.2是2-7,则步幅由(例如,DSR 846的六个步幅寄存器)的相应的(DSR)步幅寄存器指定。
在一些实施方式中,选择步幅3 2244.3和选择步幅4 2244.4包括相应的3位字段。在一些实施方式中,相对于第三维和第四维,选择步幅32244.3和选择步幅4 2244.4分别在功能和/或操作上类似,如同选择步幅22244.2相对于第二维。
在一些实施方式中,步幅2245包括指定存储器中矢量步幅的15位字段。在某些情况下,步幅2245能够对一维矢量使用比步幅2153(图21C)更长的步幅。
图23示出了根据数据结构描述符访问操作数的实施方式的选定细节,作为数据结构描述符流2300。在一些实施方式中,数据结构描述符流2300的动作由CE(例如,CE 800)执行。
经由数据结构描述符访问源操作数开始(开始2301),通过用相应的DSD初始化PE的一个或多个CE的DSR(设置DSR 2302),并可选地初始化CE的相应XDSD和/或步幅值((可选的)设置XDSR 2305)。在一些实施方式中,初始化的DSR(以及可选地初始化的XDSR和保存步幅值的步幅寄存器)由将数据从存储器移动到DSR的指令初始化。随后,CE提取并解码一条指令(例如,FMACH、MOV或LT16),包括由初始化的DSR指定的一个或多个操作数以及可选的一个或多个XDSR和/或步幅寄存器(具有DSR的提取/解码指令2303)。在一些实施方式中,指令的操作数类型字段指定操作数是否由DSR指定。
CE从DSR读取一个或多个DSD(读取DSR 2304),并确定以下中的一个或多个:数据结构的类型、数据元素的源、是否多个数据元素一起读取(例如,对于SIMD运算)以及每个操作数的数据元素总数。根据确定,对于每个DSD读取,还可选地读取XDSR和一个或多个步幅寄存器((可选的)读取XDSR 2306),如参考图24所述。在某些情况下,为源0操作数、源1操作数和目的地操作数中的一个或多个读取DSR,并由在动作2303中获得的指令的相应操作数字段来识别。在一些实施方式和/或使用场景中,全部或部分并行读取DSR、XDSR和步幅寄存器中的任何一个或多个,并且在其他实施方式和/或使用场景中,全部或部分顺序读取DSR、XDSR和步幅寄存器中的任何一个或多个。
基于在动作2304中获得的DSD(以及在动作2306中获得的可选XDSR和步幅值),CE从结构和/或存储器中读取一个或多个源数据元素(从队列/内存2310中读取(下一个)源数据元素)。对于在动作2303中获得的指令所指定的每个源(例如,源0和源1中的每一个),CE根据DSD中的SIMD宽度信息读取足够元件,用于指令中指定的操作的迭代。经由CE的一个或多个队列来访问来自结构的数据元素(例如,源数据结构是结构矢量)。在一些实施方式和/或使用场景中,CE还从寄存器读取数据元素。
在读取源数据元素之后,CE使用数据元素作为输入执行操作(对数据元素执行(下一个)操作2311)。该操作由在动作2303中获得的指令来指定(例如,针对FMACH指令的乘法累积操作、针对MOV指令的移动操作或者针对LT16的小于整数的比较)。
在某些情况下,操作(例如,乘法累积操作或移动操作)产生一个或多个输出数据元素。基于在动作2304中获得的DSD(以及在动作2306中获得的可选XDSR和步幅值),CE将输出数据元素写入结构或存储器(将(下一个)目的地数据元素写入队列/内存2312)。发送到结构的数据元素(例如,目的数据结构是结构矢量)形成为小波,并经由PE的路由器传输到结构。在一些其他场景中,没有输出数据元素(例如,一些比较操作)。
在写入操作结果之后,CE确定是否要处理额外数据元素(更多数据元素)?2313)。在一些实施方式中,DSD指定要访问的数据元素的总数(例如,矢量的长度),并且CE将已经访问(例如,经由计数器跟踪)的数据元素的数量与由长度指定的数据元素的总数进行比较。如果要处理额外的数据元素,CE重复动作2310-2313,直到所有的数据元素都已处理并且流程结束(结束2316)。
在各种实施方式和/或使用场景中,数据结构描述符流2300的任何一个或多个元件(例如,2302-2312的任何一个或多个动作)的全部或任何部分在概念上对应于由CE(例如,CE 800)执行的操作和/或CE的元件和/或在概念上与其相关。
作为一个示例,保存源DSD(与设置DSR 2302和读取DSR 2304相关联)的源DSR是DSR 846中的一个或多个(例如,S0DSR、S1DSR、DDSR、XDSR和步幅寄存器)。在一些实施方式中,CE 800响应于将DSD写入DSR(例如,LDS0WDS、LDS1WDS、LDXDS和LDSR)的指令来执行设置DSR 2302。
作为另一示例,CE 800与DSR 2303一起执行提取/解码指令。在各种实施方式中,PC 834和I-Seq 836从内存854提取指令,并且Dec 840解码提取的指令。在一些实施方式中,指令根据以下中的一个进行格式化:图25A的多操作数指令2510、图25B的一源无目的地操作数指令2520和图25C的立即指令2530。在一些实施方式中,解码包括检测指令操作数由DSD指定,例如,操作数1类型2514.1的值是“1”。
作为另一示例,CE 800响应于具有由DSR指定的一个或多个操作数的指令来执行读取DSR 2304。在各种实施方式中,D-Seq 844从DSR 846读取由在动作2303中获得的指令指定的DSR。在一些实施方式中,从DSR读取的DSD根据以下中的一个或多个进行格式化:图21A的结构输入数据结构描述符2100、图21B的结构输出数据结构描述符2200、图21C的1D内存矢量数据结构描述符2140、图21D的4D内存矢量数据结构描述符2160和图21E的循环内存缓冲器数据结构描述符2180。在一些实施方式和/或使用场景中,例如,响应于具有指定XDSR的类型2169或类型2189的DSD,D-Seq 844执行(可选的)读取XDSR 2306。在各种实施方式中,从XDSR读取的XDSD根据以下中的一个进行格式化:图22A的循环内存扩展缓冲器数据结构描述符2180和图22B的4D内存矢量扩展数据结构描述符2160。
作为另一示例,CE 800基于在动作2304中读取的源DSD和可选地在动作2306中读取的XDSD,从队列/内存2310中执行读取(下一个)源数据元素。在某些情况下,源DSD指定(例如,经由类型2149)操作数源自存储器,并且D-Seq 844在DSD指定的地址(例如,部分基于基部地址2142、WLI 2152和步幅2153中的一个或多个)从数据存储848或内存854读取数据元素。在某些情况下,源DSD指定(例如,经由类型2109)操作数源自结构,并且CE 800从Qs897中的一个读取数据元素。在一些实施方式和/或使用场景中,数据元素从Qs 897中的一个直接传输到数据路径852。在其他实施方式和/或使用场景中,数据元素从Qs 897中的一个传输到RF 842,并且从RF传输到数据路径852。在一些实施方式中,Qs 897中的一个由DSD的部分隐式指定(例如,UTID 2102、SC 2112和SQ 2113中的一个或多个)。在某些情况下,CE从与当前任务的颜色相关联的队列中读取(例如,与在动作2303中获得的指令相关联的任务)。在一些情况下(例如,SQ 2113是“1”),CE从由UTID 2102指定的队列中读取。在一些情况下(例如,SC 2112是“1”),CE从与由与CH 2114串联的UTID 2102指定的颜色相关联的队列中读取。在某些情况下,CE基于SW 2104从指定队列中读取一个、两个或四个数据元素。
在一些实施方式和/或使用场景中,当CE 800试图读取比Qs 897的指定队列中可用的更多的数据元素,或者可替换地试图从空FIFO(例如,根据图21E的DSD实现的)时,CE800停止。在一些实施方式和/或使用场景(例如,微线程)中,选择器830能够在等待数据元素的同时从Qs 897中选择不同的任务,从而使得CE 800能够避免停滞。
作为另一示例,CE 800对数据元素2311执行(下一个)操作。在一些实施方式中,数据路径852使用在动作2310中读取的数据元素作为由在动作2303中获得的指令指定的操作的输入。在某些情况(例如,计算操作)下,动作2311产生输出数据元素,而在其他情况下(例如,比较操作)中,动作2311不产生输出数据元素。在一些实施方式中,数据路径852能够同时执行一个以上的操作,例如,使用SIMD执行资源同时执行两个或四个乘法累积操作。
作为另一示例,CE 800基于在动作2304中读取的目的地DSD和可选地在动作2306中读取的XDSD,执行向队列/内存2312写入(下一个)源数据元素。在某些情况下,目的地DSD指定(例如,经由类型2149)操作数去往存储器,并且D-Seq 844在目的地DSD指定的地址(例如,部分基于基部地址2142、WLI 2152和步幅2153中的一个或多个)将数据元素写入数据存储848或内存854。
在各种实施方式和/或使用场景中,动作2312的部分(例如,将目的地数据元素写入结构)在概念上对应于将数据元素作为小波提供给图14的路由器1406和/或在概念上与其相关。在某些情况下,目的地DSD指定(例如,经由类型2129)操作数发送到结构,并且CE800从数据元素创建小波(例如,部分基于结构输出数据结构描述符2120),并且经由到(图6的)路由器600的入口匝道860将其传输到结构。在某些情况下,CE基于目的地DSD的SW2124,传输一个、两个或四个数据元素,作为小波。
在一些实施方式和/或使用场景中,当CE 800试图传输比路由器600中可用的资源更多的小波(例如,图6的数据队列650中没有足够的资源),或者可替换地,试图写入完整的FIFO(例如,根据图21E的DSD实现的),则CE 800停滞。在一些实施方式和/或使用场景(例如,微线程)中,选择器830能够在等待更多资源的同时从Qs 897中选择不同的任务,从而使得CE 800能够避免停滞。
作为另一示例,CE 800执行动作2313。在一些实施方式中,D-Seq 844确定已经处理了多少个数据元素(例如,通过增加每个数据元素的计数器),并且将其与矢量的长度(例如,长度2101)进行比较。
图24示出了解码数据结构描述符的实施方式的选定细节,作为数据结构描述符解码流2400。在各种实施方式和/或使用场景中,存储器数据结构描述符流2400是对描述结构或内存矢量的每个DSR执行的动作2304、2306、2310和2312(图23的)的全部或任何部分的概念表示。总之,图23示出了提取和解码包括由初始化的DSR指定的一个或多个操作数的指令,读取DSR,以获得和解码相应的DSD,根据DSD读取(下一个)源数据元素,对源数据元素执行操作,根据DSD写入操作的输出数据元素,并且迭代回读取下一个源数据元素,直到完成。图24示出了对于结构矢量(结构矢量2410)和内存矢量(内存矢量2420),关于解码从DSR获得的DSD以及可选地读取一个或多个XDSR和步幅寄存器以获得和解码对应的XDSR和步幅值的进一步细节,以确定用于访问指令的内存矢量的数据元素(例如,源0、源1和目的地中的任何一个或多个)的存储器访问模式。从概念上讲,图24所示的动作是针对经由图23的动作2304获得的每个DSD来执行的。在一些实施方式中,存储器数据结构描述符流2400的动作由CE(例如,CE 800)执行。
解码DSD(例如,经由图23的动作2304获得的)开始(开始2401),CE确定DSD是否对应于结构矢量(类型=结构?2411),例如,根据图21A或图21B。如果是,则由DSD描述的操作数的访问使用DSD(经由DSD 2412访问)作为结构矢量进行,例如,如果操作数是源(图21A),则(图23的)动作2310根据DSD从结构读取,并且如果操作数是目的地(图21B),则(图23的)动作2312根据DSD写入到结构中。
如果DSD不对应于结构矢量,则DSD对应于内存矢量。然后,CE确定DSD是否对应于1D内存矢量(类型=XDSR?2421),例如,根据图21C。如果是,则由DSD描述的操作数的访问使用DSD(经由DSD 2427访问1D)作为1D内存矢量进行。例如,如果操作数是源,则动作2310根据由DSD描述的1D内存矢量从存储器读取源,并且如果操作数是目的地,则动作2312根据由DSD描述的1D内存矢量写入到存储器中。图23中的数据元素的每次迭代(动作2310-2313)根据由DSD描述的1D内存矢量推进操作数存储地址。
如果DSD不对应于1D内存矢量,则DSD对应于4D内存矢量(例如,根据图21D)或循环缓冲器(例如,根据图21E)。CE读取由DSD指定的XDSR(经由DSD 2422指定的读取XDSR,在概念上也对应于图23的(可选的)读取XDSR 2306),以获得XDSD。XDSR由(图21D)的类型2169或(图21E)的类型2189指定。
然后,CE确定XDSD是否指定了4D内存矢量(例如,根据图22B)。如果是,则CE可选地读取一个或多个步幅寄存器((可选地)读取步幅寄存器2424,概念上也对应于图23的(可选的)读取XDSR 2306),如XDSD可选地指定的。对由DSD、XDSD和任何可选步幅值(从步幅寄存器获得)描述的操作数的访问,使用DSD、XDSD和可选步幅值(经由XDSD 2428访问4D)作为4D内存矢量进行。例如,如果操作数是源,则动作2310根据4D内存矢量从存储器读取源,并且如果操作数是目的地,则动作2312根据4D内存矢量写入到存储器中。图23中数据元素的每次迭代(动作2310-2313)根据由DSD描述的4D内存矢量推进操作数存储器地址。
如果XDSD不对应于4D内存矢量,则XDSD对应于循环缓冲器(例如,根据图22A)。由DSD和XDSD描述的操作数的访问使用DSD和XDSD(经由XDSD 2429访问循环缓冲器)作为循环缓冲器进行。例如,如果操作数是源,则动作2310根据循环缓冲器从存储器读取源,并且如果操作数是目的地,则动作2312根据循环缓冲器写入到存储器中。图23中数据元素的每次迭代(动作2310-2313)根据由DSD描述的循环缓冲器推进操作数存储器地址。
在各种实施方式中,D-Seq 844基于在(图23的)动作2304中读取的DSD执行类型=结构?2411和/或类型=XDSD?2421。在一些实施方式中,DSD的类型字段(例如,图21A的类型2109、图21B的类型2129、图21C的类型2149、图21D的类型2169和图21E的类型2189)确定数据结构是否是以下中的一个:结构矢量(例如,类型=“0”)、1D矢量(例如,类型=“1”)和XDSD类型(例如,类型=“2-7”)。在各种实施方式中(例如,类型=“2-7”),类型字段的值指定为动作2422读取DSR 846的哪个XDSR。在一些实施方式中,D-Seq 844执行动作2422,并从DSR 846接收XDSD。在一些其他实施方式中,DSR 846执行动作2421和2422,并将DSD和XDSD传输到D-Seq 844。
作为另一示例,D-Seq 844基于动作2422的XDSD执行类型=4D矢量?2423。在一些实施方式中,从XDSR读取的XDSD的类型字段(例如,图22A的类型2211或图22B的类型2241)确定数据结构是4D矢量(例如,XDSD类型=“0”)还是循环缓冲器(XDSD类型=“1”)中的一个。
作为另一示例,如本文别处所述,通过基于DSD(例如,动作2304的)计算存储器地址,使用例如DSD的基部地址2142、WLI 2152、长度2141和步幅2153,根据动作2427,D-Seq844生成存储器访问。类似地,根据动作2428,D-Seq 844通过使用例如DSD和XDSD的基部地址2162、长度2161、WLI 2172、步幅2245、步幅选择1 2244.1和DF 2243基于(例如,动作2404)的DSD和动作2422的XDSD计算存储器地址来生成存储器访问,如本文别处所述。类似地,根据动作2429,D-Seq 844通过使用例如DSD和XDSD的基部地址2182、长度2181、WLI2192、起始地址2212和结束地址2213基于(例如,动作2404)的DSD和动作2422的XDSD计算存储器地址来生成存储器访问,如本文别处所述。
在一些实施方式中,D-Seq 844将每个计算出的地址发送到数据存储848和内存854中的一个。响应于接收到计算的地址,数据存储和/或存储器在计算的地址处访问两个字节的数据。
指令格式
在图25A至图25C的描述中,具有第一个数字“8”的每个元件标识符是指图8的元件,为了简洁起见,没有另外特别标识为图8的元件。
图25A示出了作为多操作数指令2510的多操作数指令的实施方式的选定细节。多操作数指令2510是两/三源、一个目的地操作数指令(例如,诸如FMACH等乘法-加法)、两源、无目的地操作数指令(例如,诸如LT16等比较)和一个源、一个目的地操作数指令(例如,诸如MOV16等移动指令)中的一个。
多操作数指令2510包括各种字段:指令类型2511、操作码2512、操作数0编码2513、操作数1编码2514和终止2515。操作数0编码2513包括操作数0类型2513.1和操作数02513.2。操作数1编码2514包括操作数1类型2514.1和操作数1 2514.2。在一些实施方式中,多操作数指令2510包括20位。
在一些实施方式中,指令类型2511的值根据下表区分不同类型的指令(例如,两/三源、一个目的地和一个源以及一个目的地指令类型)。在各种实施方式中,操作码2512的值指定特定操作(例如,乘法、加法或减法)。操作码2512的长度在不同类型的指令之间变化,如下表所述。
<u>指令族</u> <u>指令类型2511的值</u> <u>操作码2522的长度</u>
两/三源、一个目的地 10 5位
两源、无目的地 1110 4位
一个源、一个目的地 110 5位
在一些实施方式中,根据下表,操作数0编码2513描述了源和/或目的地操作数。在一些实施方式中,操作数1编码2714描述了源操作数。
Figure BDA0003071381410001201
Figure BDA0003071381410001211
在一些实施方式中,操作数0 2513.2和操作数1 2514.2包括相应的4位字段。在一些实施方式中,操作数0类型2513.1和操作数1类型2514.1包括相应的2位字段,并分别确定如何解释操作数0 2513.2和操作数1 2514.2。对于两/三源操作数,即一个目的地操作数指令,操作数0类型2513.1根据下表进行解释。
Figure BDA0003071381410001212
例如,如果操作数0类型2513.1的值为“1”,操作数0 2513.2的值为“4”,则操作数0编码2513指定源0操作数是由S0DSR[4]描述的矢量,目的地操作数是由DDSR[4]描述的矢量。
对于双源操作数,没有目的地操作数指令,操作数0类型2513.1根据下表进行解释。
<u>2513.1的值</u> <u>操作数0编码2513</u>
0 源0是S0DSR[操作数0 2513.2]
1 源0是GPR[操作数0 2513.2]
例如,如果操作数0类型2513.1的值为“0”,操作数0 2513.2的值为“4”,则操作数0编码2513指定目的地操作数是由DDSR[4]描述的矢量。
对于一个源操作数,一个目的地操作数指令,操作数0类型2513.1根据下表进行解释。
<u>2513.1的值</u> <u>操作数0编码2513</u>
0 目的地是DDSR[操作数0 2513.2]
1 目的地是GPR[操作数0 2513.2]
例如,如果操作数0类型2513.1的值为“0”,操作数0 2513.2的值为“4”,则操作数0编码2513指定目的地操作数是由DDSR[4]描述的矢量。
对于多操作数指令2510,操作数1类型2514.1根据下表进行解释。
<u>2514.1的值</u> <u>操作数0编码2514</u>
0 源1是S1DSR[操作数1 2514.2]
1 源1是由GPR[6]指定的地址处的存储器中的数据
2 源1是GPR[操作数1 2514.2]
3 源1是立即
例如,如果操作数0类型2513.1的值为“0”,操作数0 2513.2的值为“4”,则操作数0编码2513指定目的地操作数是由DDSR[4]描述的矢量。
在各种实施方式中,立即的源操作数指定了几个预定值(例如,0、1和-1)和由LFSR生成的伪随机数中的一个。例如,如果操作数1类型2514.1的值为“3”,操作数1 2514.2的值为“8”,则操作数1编码2514指定由LFSR生成的PRNG。
在一些实施方式中,终止2515包括1位字段,指定该指令是任务中的最后一条指令。当指令完成执行时,任务终止,使得能够选择和执行新任务(例如,经由终止812和选择器830)。
图25B示出了一源无目的地操作数指令作为一源无目的地指令2520的实施方式的选定细节。一源无目的地指令2520包括指令类型2521、操作码2522、操作数1编码2523、立即高2524、终止2525。操作数1编码2523描述了源操作数,包括操作数1类型2523.1和操作数12523.2。在一些实施方式中,一源无目的地指令2520包括20位。
在一些实施方式中,指令类型2521包括四位“1111”,指定该指令是一个源,没有目的地操作数指令,操作码2522包括指定特定操作(例如,阻止、解除阻止、激活、设置活动PRNG、数据过滤、条件分支和跳转)的4位字段。
在一些实施方式中,立即高2524包括4位字段。在某些情况下,立即高2524与操作数1 2523.2串联形成8位立即。
在一些实施方式中,操作数1类型2523.1包括确定如何解释操作数12523.2的2位字段。如果操作数1类型2523.1为“0”,则操作数1编码2523指定一个矢量(例如,来自Qs 897的数据元素的结构矢量或者内存854和数据存储854中的一个中的数据元素的内存矢量),并且操作数12523.2的值识别DSR 846的12个SIDs中的哪一个描述该矢量。如果操作数1类型2523.1为“1”,则操作数1编码2523描述存储器(例如,内存854和数据存储848中的一个)中由立即高2524与操作数1 2523.2串联形成的8位地址处的值。如果操作数1类型2523.1是“2”,则操作数1编码2523描述由操作数1 2523.2的值识别的寄存器(例如,RF 842中的一个)中的值。如果操作数1类型2523.1为“3”,则操作数1编码2523描述立即。如果操作码2522指定了对16位整数操作数进行操作的操作(例如,阻止、解除阻止或激活),则立即包括8位,并且是立即高2524和操作数1 2523.2的串联。
在一些实施方式中,终止2525包括1位字段,该字段指定该指令是任务中的最后一条指令。当指令完成执行时,任务终止,使得能够选择和执行新任务(例如,经由终止812和选择器830)。如果一源无目的地指令2520是条件分支,则只有在未采用条件分支时,任务才终止。
图25C示出了作为立即指令2530的立即指令的实施方式的选定细节。立即指令2530包括指令类型2531、操作码2532、操作数0 2533.2和立即2534。在一些实施方式中,立即低2534.1包括9位字段,立即高2534.2包括1位字段。立即低2534.1和立即高2534.2的串联统称为(并且示出为)立即2534。在一些实施方式中,立即指令2520包括20位。
在一些实施方式中,指令类型2531包括1位字段“0”,指定该指令是立即指令,操作码2532包括指定特定操作(例如,加载源0DSR、加载源1DSR、加载目的地DSR、存储源0DSR、存储源1DSR和存储目的地DSR)的5位字段。在某些情况下,立即指令2530(例如,加载DSR指令和加载XDSR指令)的执行将数据从内存854和数据存储848中的一个加载到DSR 846的DSR。在其他情况下,立即指令2530(例如,存储DSR指令和存储XDSR指令)的执行将数据从DSR846的DSR存储到内存854和数据存储848中的一个。
在一些实施方式中,操作数0 2533.2包括4位字段,操作码2532确定如何解释操作数0 2533.2。在某些情况下(例如,如果操作数0 2533.2指定了没有寄存器操作数的操作,例如,跳转操作),立即低2534.1、操作数0 2533.2和立即高2534.2串联,以形成14位立即。在其他一些情况下,立即2534符号扩展,以形成16位立即。在其他情况下,立即2534符号扩展,以形成15位地址。在另一些情况下,立即2534向左移动一位,并且符号扩展,以形成15位地址(例如,对于32位数据)。
深度学习加速器示例使用
在各种实施方式和/或使用场景中,如本文别处所述,深度学习加速器(例如,PE的结构(例如,经由晶片级集成实现,并且例如,如图4所示))可用于训练神经网络,和/或执行关于训练的神经网络的推理。在某些情况下,训练包括响应训练刺激确定神经网络的权重。各种技术可用于训练,例如,随机梯度下降(SGD)、小批量梯度下降(MBGD)、连续传播梯度下降(CPGD)和反向检查点(RCP)。接下来,将CPGD与其他技术进行对比,然后更详细地描述SGD、MBGD、CPGD和RCP中的每一个。
过去的深层神经网络训练方法(例如,SGD和MBGD)都使用了所谓的锚定三角学习。即,增量派生权重更新已经‘锚定’或保持固定,直到训练集批次或小批次的所有激活处理完成。在某些情况下,锚定增量学习的层顺序特性导致高延迟顺序参数更新(例如,包括权重更新),这反过来导致收敛缓慢。在某些情况下,锚定增量学习限制了层并行性,从而限制了并发性。
相反,在某些情况下,如本文所教导的,使用连续传播(也称为立即增量)学习规则用于深层神经网络训练,提供了更快的收敛,减少了参数更新的等待时间,并且通过启用层并行性来增加并发性。根据直接网络参数计算的增量使用对应于当前参数斜率的更新信息。连续传播通过使每一层能够与其他层同时学习而无需显式同步来实现层并行。因此,沿着网络深度的并行化能够将更多的计算资源应用于训练。在某些使用场景中,与MBGD技术相比,连续传播中可用的并行实现了高达1x的挂钟时间改进。连续传播方法还能够避免使用额外的存储器来存储多个激活矢量的模型参数值。
在一些实施方式和/或使用场景中,使用刺激的连续传播来训练神经网络,以执行SGD。在经由CPGD进行训练的一些实施方式中,RCP能够通过重新计算选择的激活来减少保存在存储器中的激活数量(从而减少存储器占用空间)。在某些情况下,重新计算激活也会提高权重训练估计的精度。在没有RCP的训练中,每层神经元在一次或多次前向传递期间接收激活,并保存激活,以重新用于在与前向传递相关联的一次或多次后向传递期间执行的计算(例如,与前向传递相关联的一次或多次增量、链式和权重更新传递)。在一些情况下(例如,相对较深的神经网络),在保存激活和相关联的后向传递之间的时间相对较长,并且保存所有激活比保存少于所有激活使用相对较多的存储器。
例如,只有一些神经元层(例如,每偶数层)保存相应的激活,而其他层丢弃相应的激活(例如,每奇数层)。具有保存的激活的层(例如,每个偶数层)使用最近的权重来重新计算并传输重新计算的激活到丢弃激活的层(例如,每个奇数层)。在某些情况下,重新计算的激活不同于丢弃的激活,因为最近的权重不同于在前向传递期间可用的权重(例如,在前向传递和相关联的后向传递之间发生一个或多个权重更新)。在各种实施方式中,选择保存和丢弃激活的层的数量和类型,以优化减少的存储器使用和增加的计算之间的期望平衡。作为一个示例,每四层保存激活,所有其他层放弃激活。作为另一示例,选择卷积层来保存激活,选择其他层来丢弃激活。
在各种实施方式和/或使用场景中,具有或没有RCP的SGD、MBGD和CPGD中的任何一个或多个经由以下中的一个或多个来实现:处理元件的结构(例如,如图4所示)、一个或多个GPU、一个或多个CPU、一个或多个DSP、一个或多个FPGA以及一个或多个ASIC。
例如,具有反向传播的SGD可用于(如本文别处所述)训练神经网络。然而,经由梯度下降的学习本质上是连续的,因为每个权重更新都使用在完成通过神经网络的完全前向传递之后进行的梯度测量的信息。此外,权重更新在通过神经网络的相应后向传递期间进行(跟随并对应于前向传递),因此,在完成整个相应的后向传递之后发生最后一次权重更新。
MBGD通过在小批量上梯度平均,并行处理几个(‘小批量’)激活,实现了比SGD更多的并行性。然而,与SGD相比,顺序更新的速度是不变的,并且与SGD中一样,在所有相应的后向传递通过神经网络完成之后,完成权重更新。随着并行处理更多激活而增加小批量,梯度噪声降低。在某些情况下,超过一个点,梯度噪声的降低会导致较差的普遍化。
CPGD支持在神经网络的所有层中并行处理和更新权重,同时激活在流中通过层传播。因此,在一些实施方式和/或使用场景中,CPGD克服了SGD和MBGD的顺序处理限制。
RCP经由(重新)计算本来会存储的激活来减少内存使用,并可与SGD、MBGD和CPGD结合使用。
管线流程图可用于比较和对比各种SGD、MBGD、CPGD和CPGD与RCP技术。训练技术中的信息流和并发性在管线流程图中是可见的。图26A至图26D从左到右示出了神经网络流的层的管线流的实施方式,例如,激活从左边进入,层计算流的前向传递传播流入右边。在最右边的层进行梯度计算,开始层计算的反向传播,包括从右到左的权重更新。时间从上到下前进。
图26A示出了用于SGD的管线流的实施方式。神经网络的层的权重更新在相应的全前向传递和相应的全后向传递通过神经网络的所有层之后完成。下一次前向传递仅在完成与直接前一次前向传递相对应的权重更新后开始。如图所示,执行第一前向传递2611(从第一层到最后一层,在图中从左到右示出)。然后,执行第一后向传递2621(从最后一层到第一层,在图中从右向左示出)。在第一次后向传递2621期间,权重从最后一层到第一层更新。(第一层的)最后一次权重更新随着第一后向传递2621的完成而完成。然后执行第二前向传递2612(使用在第一后向传递2621期间更新的权重),接着执行第二后向传递2622,在第二后向传递2622期间执行权重更新。
图26B示出了用于MBGD的管线流的实施方式。用相同的权重处理多个激活。协调安静时间用于同步权重更新。在一些实施方式和/或使用场景中,MBGD处理的特征在于小批量大小(N)2631、开销2632和更新间隔(U)2633。
不同于梯度下降技术(例如,SGD和MBGD),梯度下降技术使用全前向传递和全反向传递通过网络来计算梯度估计,从而导致顺序依赖性,CPGD使用差分结构来用持续梯度生成的连续模型来代替顺序依赖性。在一些实施方式和/或使用场景中,CPGD通过使神经网络的每一层能够与层中的其他层同时训练(例如,“学习”)而实现层并行性,而无需显式同步。因此,沿着神经网络深度的并行化能够将更多的计算资源应用于训练。在各种实施方式和/或使用场景中,与其他技术相比,CPGD提供了以训练时期表示的可比精度和改进的收敛速度。
图26C示出了用于CPGD的管线流的实施方式。CPGD处理保持流动模型。隐藏的表示和增量在每个时间步长进入每层,权重在每个时间步长更新。CPGD处理是协调的同步操作。在一些实施方式和/或使用场景中,CPGD处理的特征在于前向传递2651和相应的后向传递2661,分别表示多个前向传递中的一个和多个相应的后向传递中的一个。在操作中,多个前向传递的相应前向传递彼此平行操作,多个后向传递的相应后向传递彼此平行操作,并且多个前向传递和多个后向传递彼此平行操作。权重更新(在后向传递过程中进行)在权重更新可用时由前向传递和后向传递使用。
作为一个具体的示例,前向传递2665开始,随后前向传递2666开始。前向传递2665的至少一部分与前向传递2666的至少一部分并行操作。前向传递2665的相应后向传递的至少一部分与前向传递2666的至少一部分并行操作。此外,如权重更新使用示例2667所示,相应的后向传递完成至少一些由前向传递2666使用的权重更新。
图26D示出了具有RCP的CPGD的管线流的实施方式。带有RCP的CPGD忽略保存选定的激活,而是重新计算选定的激活。在一些实施方式和/或使用场景中,用更新的权重来执行重新计算。因此,反向检查点能够减少内存(被示为由在时间上向前穿过保存的隐藏表示的垂直线覆盖的减少的区域),并减少计算的隐藏表示和相应增量之间的时间差异。
作为一个具体的示例,具有RCP处理的CPGD的特征在于前向传递2671和相应的后向传递2681。如激活存储器2685所示,在前向传递期间计算第一激活,并将其存储在层中,以用于相应的后向传递。激活存储器2685在部分前向传递和后向传递期间占用,并且不可用于其他用途。重新计算的激活存储2686示出了存储器减少的具体示例。在前向传递期间计算第二激活,但是丢弃,并且不需要任何存储。在后向传递期间,第二次激活被重新计算并存储在一个层中,用于后向传递,如重新计算的激活存储2686所示。重新计算的激活存储器2686在整个前向传递期间未占用,并且可用于其他用途(例如,其他前向传递、其他后向传递),从而减少所需的内存。
更一般地考虑并行化,在一些实施方式和/或使用场景中,并行化计算(例如,神经网络训练)将计算分散在同时操作的单独计算元件上。在模型并行模式中,单独单元使用不同的模型参数同时评估同一神经网络。在数据并行机制中,不同的工作人员使用相同的形式模型参数同时评估不同的网络输入。一些扩展技术使用层上的和集群单元中的细粒度数据并行性。
在一些实施方式和/或使用场景中,根据小批量尺寸n,MBGD提高了梯度估计的精度。然而,对小批量尺寸n执行MBGD的计算大约等于对n个步骤执行SGD的计算。在某些情况下,对于n个步骤,SGD比对于小批量尺寸n的MBGD更有效,大约是n的平方根。因此,更高的并行性(例如,在MBGD中)和更高的效率(例如,在SGD中)有时是互斥的。
在一些实施方式和/或使用场景中,深层神经网络是高维参数化函数,有时表示为有向无环图。反向传播技术有时用循环图来表示。图中的循环是一个反馈迭代。由第一次全网络评估产生的梯度改变下一次迭代中使用的权重,因为迭代是连续微分系统的离散近似。离散近似包括具有时变统计量的无偏连续噪声过程。噪声过程提供正则化,以使连续系统能够模拟在离散时间学习系统中观察到的现象。在离散情况下,正则化由采样过程(例如,SGD)、学习速率和/或其他显式机制提供。与时间相关的噪声处理使得能够使用擦除参数空间中局部高频轮廓的学习速率调度。当接近正确的区域时,正则化减少,在某些情况下导致更好的最终解决方案。
CPGD在任意前馈神经网络的概念框架中,将所有节点表示为时间的函数,并应用函数组合来制定内部状态和内部状态受到的刺激的表示。因子分解的结果是单独层作为具有独立局部动力学的系统。二维是网络的深度和参数的时间演变。在通过将网络层映射到空间上分开的计算元件来实现加速的一些实施方式和/或使用场景中,网络层之间存在延迟通信。因此,层与层之间的通信存在时间延迟。CPGD的一些实现是考虑时间延迟的同步实现。
在CPGD处理期间,激活矢量和相关联的隐藏表示在激活矢量前向传递期间的不同时间步长与模型参数相结合。不同时间步长下的模型参数与同一时间步长下的模型参数之间的差异无法通过向前的激活矢量检测到。从概念上讲,就好像连续时间步长的一组固定参数用来形成一个集合参数状态,然后用于学习。
在后向传递(例如,增量传播)期间,可以选择在更新之后使用即时参数(例如,权重),或者检索锚定到何时执行相应前向传递的历史参数。根据即时参数计算的增量使用对应于当前参数斜率的更新信息。一些实施方式和/或使用场景使用即时参数。一些实施方式和/或使用场景使用历史参数。
CPGD的一些实现方式以类似于SGD的顺序使用内存。反向检查点(如本文别处所述)可用于CPGD,例如,减少内存使用。反向检查点的一些实施方式和/或使用场景使用即时参数(例如,权重)来重新计算激活。反向检查点的一些实施方式和/或使用场景使用历史参数来重新计算激活。在使用即时参数来重新计算激活的一些实施方式和/或使用场景中,用于计算前向传播激活和反向传播增量的参数之间的时间差异在对准波前中减小。
连续传播技术可用于与小批量处理(流入MBGD)结合。在一些实施方式和/或使用场景中,在紧接着的前一批完成之前开始下一批,概念上类似于异步SGD。管线内的参数不一致限于不超过一个批处理边界。
在一些实施方式和/或使用场景中,使得数据能够流过神经网络并在没有全局同步边界的情况下执行计算,使得能够提取未被提取的学习信息。在一些实施方式和/或使用场景中,较低的学习率在使用较大批量时占主导地位。在一些实施方式和/或使用场景中,隐藏的活动和/或增量弧在概念上被解释为单独的矢量或可选的批处理矩阵。批处理矩阵解释使得能够在GPU、CPU、DSP、FPGA和/或ASIC上直接实现本文所述的技术。
图27A至图27E示出了根据SGD、MBGD、CPGD和RCP处理的前向传递和后向传递实施方式的各个方面。在图中,示出了两层神经元,表示例如深层神经网络的一部分的相应层。在各种实施方式和/或使用场景中,深层神经网络包括数千或更多层以及每层数千或更多神经元。在各种实施方式和/或使用场景中,第一层是从深层神经网络外部的代理接收用于训练的激活的输入层。在各种实施方式和/或使用场景中,第二层是输出层,其中,前向传递完成,后向传递开始。在各种实施方式和/或使用场景中,第一层和第二层是内层。
图27A和图27B分别示出了根据SGD、MBGD和CPGD的前向传递和后向传递实施方式,没有RCP。这两层被示为前一层2701和后一层2702。前一层2701包括计算2710和存储2715。后一层2702包括计算2720和存储2725。计算2710和计算2720是计算资源示例,存储2715和存储2725是存储资源的示例。
图27C至图27E示出了根据SGD、MBGD和CPGD的具有RCP的前向传递和后向传递实施方式。这两层被示为前一层2703和后一层2704。前一层2703包括计算2730和存储2735。后一层2704包括计算2740和存储2745。计算2730和计算2740是计算资源的示例,存储2735和存储2745是存储资源的示例。
图27A至图27E中相同编号的元件具有相同的结构和操作,尽管计算资源根据不同的输入产生不同的结果,并且存储资源根据存储的不同值存储并随后提供不同的值。可以设想其他实施方式具有不同的计算资源和/或可用于前向传递和后向传递计算和存储的不同存储资源。例如,后向传递使用前向传递不使用的转置权重存储。可以设想其他实施方式具有可用于前向传递和后向传递实现的不同计算和/或存储资源。例如,基于RCP的实施方式使用额外的计算资源(未示出),而不是用于无RCP的前向传递或后向传递处理。
关于图27A,计算2710能够执行计算,例如,前向传递计算F 2711。存储2715能够存储激活,例如,在A 2716中。存储2715还能够存储权重,例如,在W 2717中。在各种实施方式和/或使用场景中,计算2720、F 2721、存储2725、A 2726和W 2727在结构和/或操作上分别与计算2710、F 2711、存储2715、A 2716和W 2717基本相似或相同。
在SGD或MBGD的前向传递操作中,激活A1,t2781被前一层2701接收并存储在A 2716中(供以后在后向传递期间使用)。然后,根据F 2711处理A1,t2781和先前存储在W 2717中的权重W1,t,以产生激活A2,t2782。A2,t2782然后传递到后一层2702。类似于前一层,A2,t2782被后一层2702接收并存储在A 2726中(供以后在后向传递期间使用)。然后,根据F 2721处理A2,t2782和先前存储在W 2727中的权重W2,t,以产生激活A3,t 2783。A3,t 2783然后提供给下一个后一层(如果存在的话)进行处理,以此类推,直到前向传递完成并且后向传递开始。如果后一层2702是输出层,则完成前向传递,并启动对应于前向传递的后向传递。
关于图27B,为了清楚起见,省略了专用于前向传递处理的计算2710和计算2720的元件(F 2711和F 2721)。关于参考图27A示出和描述的结构和操作,图27B示出了计算2710还能够执行额外计算,例如,后向传递计算B 2712,并且计算2720还能够执行额外计算,例如,后向传递计算B 2722。存储2715还能够存储计算的权重,例如,在W 2718中,并且存储2725还能够存储计算的权重,例如,在W 2728中。在各种实施方式和/或使用场景中,B 2722和W 2728在结构和/或操作上分别与B 2712和W 2718基本相似或相同。
在SGD或MBGD的后向传递操作中,在后向传递处理期间,从下一个后一层(如果存在)接收Δ3,t2793。如果后一层2702是输出层,则后一层2702根据增量规则计算Δ3,t,例如,作为后一层的输出(例如,估计输出)和训练输出(例如,期望输出)之间的差值的函数。Δ3, t2793、先前存储在W 2727中的权重W2,t和先前存储在A 2726中的激活A2,t随后根据B 2722(例如,根据增量规则)进行处理,以产生Δ2,t2792和新的权重W2,t+1,然后将新的权重存储在W 2728中,用于下一次前向传递中。Δ2,t2792然后传递到前一层2701。类似于后一层,随后根据B 2712处理增量Δ2,t2792、先前存储在W 2717中的权重W1,t和先前存储在A 2716中的激活A1,t,以产生Δ1,t2791和新的权重W1,t+1,该新的权重随后存储在W 2718中,用于下一次前向传递。然后,Δ1,t2791传递到下一个前一层(如果存在)进行处理,以此类推,直到后向传递完成并且下一次前向传递开始。如果前一层2701是输入层,则后向传递完成,下一次前向传递开始。
在SGD和MBGD(与CPGD不同)中,下一次前向传递延迟,直到前一次后向传递完成,例如,在W 2717和W 2727已经用于相同的前向传递和相同的相应后向传递之后,分别用W2718和W 2728更新W 2717和W 2727。因此,使用来自同一后向传递的权重来执行下一次前向传递。
图27A除了示出SGD和MBGD前向传递处理之外,还示出了CPGD前向传递处理。然而,与SGD和MBGD相比,CPGD的操作是不同的,因为尽快执行权重更新和下一次前向传递,而不是延迟到上一次后向传递完成。例如,分别用W 2718和W 2728尽快更新W 2717和W 2727。因此,下一次前向传递可以选择性地访问来自先前迭代的权重,从而选择性地产生不同于SGD和MBGD在相同条件下产生的激活。
更具体地,在前一层2701中,接收A1,t2781并存储在A 2716中,与SGD和MBGD相同。然后根据F 2711处理先前存储在W 2717中的A1,t2781和权重W1,t-k-j,以产生激活A2,t2782。权重W1,t-k-j由对应于k-j前向传递的瞬时前向传递之前的前向传递的后向传递产生并存储。A2,t2782然后传递到后一层2702,并且类似于前一层,接收A2,t2782并存储在A 2726中,与SGD和MBGD相同。然后根据F 2721处理A2,t2782和先前存储在W 2727中的权重W2,t-k,以产生激活A3,t2783。权重W2,t-k由对应于 k前向传递的瞬时前向传递之前的前向传递的后向传递产生并存储。注意,前一层和后一层使用不同后向传递的权重来处理相同的前向传递。如在SGD和MBGD中,A3,t2783然后提供给下一个后一层(如果存在的话)进行处理,以此类推,直到前向传递完成并且后向传递开始。如果后一层2702是输出层,则完成前向传递,并启动对应于前向传递的后向传递。在一些实施方式和/或使用场景中,j的值是0,并且(k-j)和(k)相等。在各种实施方式和/或使用场景中,前一层和后一层同时处理以下中的一个:不同的前向传递、不同的后向传递以及前向传递和不同的后向传递。
图27B除了示出SGD和MBGD后向传递处理之外,还示出CPGD后向传递处理。CPGD中后向传递的处理与SGD和MBGD相同。然而,选择的结果(例如,选择的权重)比SGD和MBGD中使用得更早。例如,由后向传递t-k-j产生的W1,t-k-j和由后向传递t-k产生的W1,t-k比SGD和MBGD使用得更早,例如,前向传递t。
图27C示出了结合RCP的SGD、MBGD和CPGD中任一个的前向传递处理的实施方式。在各种实施方式和/或使用场景中,计算2730和存储2735在结构和/或操作上分别与计算2710和存储2715基本相似或相同。在各种实施方式和/或使用场景中,计算2740和存储2745在结构和/或操作上分别与计算2720和存储2725基本相似或相同,除了省略存储在存储2745中没有对应的激活的存储2725的激活A2726。
在前向传递操作中,相对于前一层2703,根据计算2730中的前向传递处理接收和处理激活A1,t2781,并存储在存储2735中,如参考图27A所述。然而,关于后一层2704,接收激活A2,t2782,并根据计算2740中的前向传递处理进行处理,但不存储(相反,在后向传递处理期间根据RCP重新计算)。
图27D和图27E分别示出了结合RCP的SGD、MBGD和CPGD中的任何一个的反向传递处理的实施方式的第一和第二部分。为了清楚起见,省略了计算2730和计算2740中专用于前向传递处理(F 2721)的元件。关于参考图27C示出和描述的结构和操作,图27D和图27E示出了计算2730还能够执行额外计算,例如,后向传递计算B 2712,并且计算2740还能够执行额外计算,例如,后向传递计算B 2722。存储2735还能够存储计算的权重,例如,在W 2718中,并且存储2745还能够存储计算的权重(例如在W 2728中)以及重新计算的激活(例如,在A2729中)。
在后向传递操作的第一部分,重新计算未存储在相应前向传递中的激活。在SGD和MBGD场景中,通过根据F 2711处理从A 2716中的前向传递存储的激活和存储在W 2717中的权重,在先前层2703中制定重新计算的激活,以产生激活A’2,t2784,然后将其存储在后一层2704的A 2729中。因为SGD和MBGD延迟权重更新和下一次前向传递的开始,直到前向传递和相应的后向传递完成,所以A’2,t2784与前向传递期间丢弃的值A2,t2782相同。
在CPGD场景中,根据与SGD和MBGD场景相同的拓扑来制定重新计算的激活。但是,CPGD会毫不延迟地执行更新,并允许开始下一次前向传递,而不考虑先前后向传递的完成情况。因此,根据实施方式和/或使用场景,在后向传递时(例如,在W 2717中)存储的权重值选择性地不同于在相应的前向传递期间存储的权重值。作为一个具体示例,根据图27C,W2717在前向传递期间存储W1,t-k-j。然而,在后向传递期间,已经发生了额外的权重更新,例如,对应于m次迭代,并且现在W 2717存储W1,t-k-j+m。因此,A’2,t2784选择性地不同于在前向传递期间丢弃的值A2,t2782。
在后向传递操作的第二部分,使用重新计算的激活进行计算。在SGD和MBGD场景中,由于重新计算的激活与丢弃的激活相同(例如,概念上存储在A 2729中的值与存储在A2726中的值相同),所以后向处理产生与参考图27B描述的结果相同的结果。例如,增量Δ’3,t2796、Δ’2,t2795和Δ’1,t2794分别与Δ3,t2793、Δ2,t2792和Δ1,t2791相同。在CPGD场景中,因为重新计算的激活选择性地不同于丢弃的激活,所以后向处理产生与参考图27B描述的结果选择性地不同的结果。例如,增量Δ’3,t2796、Δ’2,t2795和Δ’1,t2794分别选择性地不同于Δ3,t2793、Δ2,t2792和Δ1,t2791。
在一些实施方式和/或使用场景中,W 2717不同于W 2718(如图所示),并且在一些实施方式和/或使用场景中,W 2718和W 2717是存储的相同部分(未示出),使得在W 2718中保存新值,覆盖了在W 2717中先前保存的值。类似地,W 2727不同于W 2728,或者与W 2728相同。在各种实施方式和/或使用场景中,A 2729被不同地实现为比A 2726使用更少的存储器位置和/或在更短的时间内使用相同数量的存储器位置。
在各种实施方式和/或使用场景中,激活和/或权重由任何一个或多个标量、矢量、矩阵和高维数据结构来实现和/或表示。例如,A 2716、A 2726、A2729、W 2717、W 2727、W2718和W 2728中的任何一个或多个能够存储一个或多个标量、一个或多个矢量、一个或多个矩阵以及一个或多个高维数组中的任何一个或多个。
在各种实施方式和/或使用场景中,前一层2701和后一层2702的一个或多个元件由相应的PE实现,例如,PE 499的一部分或图4的类似元件。例如,PE 497实现前一层2701,PE 498实现后一层2702。激活A2,t2782和增量Δ2,t2792经由东耦合器431进行通信。在一些实施方式和/或使用场景中,前一层2701和后一层2702的一个或多个元件由CPU、GPU、DSP和FPGA中的一个或多个来实现。
在各种实施方式和/或使用场景中,F 2711、F 2721、B 2712和B 2722的元件的全部或任何部分在概念上对应于图2的PE 260上的任务SW的执行指令的全部或任何部分。
示例工作负载映射
从概念上讲,深度学习加速器400(图4)是可编程计算机结构(例如,参见图5至图8和“处理元件:计算元件和路由器”部分)。例如,每个PE 499元件的计算元件能够执行任务指令序列(例如,概念上对应于图2的PE 260上的任务SW的执行指令的全部或任何部分),并且每个PE 499的路由器元件可配置为在PE之间路由小波。可编程计算结构能够以各种方式将工作负载映射到计算结构上。下面描述的是工作负载到计算结构的示例高级映射,以说明由计算结构实现的各种技术和机制。
工作负载是经由SGD实现的深层神经网络训练。深层神经网络包括多层神经元。工作负载有三个大阶段:前向传递、增量传递和链式传递。前向传递向前传播激活。增量传递向后传播增量。当在增量传递中生成增量时,链式传递基于增量计算梯度。这三个大阶段的计算量大致相同。
图4示出了大阶段到PE的示例映射。每一层由从计算结构(也称为“放置”)背靠背(例如,在水平维度)分配的PE块来实现。数据移动在前向传递(前向401)期间传播到结构的末端,然后在增量传递(增量402)和链式传递(链403)期间沿相反方向返回。放置的目的是减少数据移动,因为前向传递保存增量传递和链式传递要使用的激活。在该示例中,所有PE在三个大阶段之间以三种方式进行时间共享,每个大阶段使用大约相同的计算量。在某些情况下,执行传递的整个PE链作为管线运行,使得每一层都是管线级(大约需要相同的时间来完成),并且小批量的每次激活都填充管线。
在一些实施方式和/或使用场景中,在映射到单个层的一组PE内,单层的权重分布在PE上,使得单个神经元映射到多个PE。在某些情况下,将单个神经元分割成多个PE,提供了负载平衡益处并提供了通信划分益处(例如,参见图17至图20和“神经元涂抹”部分)。
从概念上讲,处理如下进行(参见图4的前向401)。激活会沿着水平轴广播到层中。激活由PE接收,并触发查找存储在PE本地的相关权重(对应于映射到PE的神经元)。只广播非零激活,因此零激活不会浪费计算(激活稀疏性收集的一个示例)。每个PE对输入的激活进行局部乘法和累积,所有神经元权重产生局部部分和。由于每个神经元的权重分布到多个PE,因此根据神经元权重分布,部分和在垂直方向上在PE上累积。在累积部分和产生最终和之后,执行激活功能,并将所有新的非零激活广播到下一层。
增量传递(见图4的增量402)和链式传递(见图4的链403)遵循与前向传递相似的数据流。在一些实施方式和/或使用场景中,增量传递和链式传递偏移一层放置,使得激活存储在与反向使用的权重相同的层中。激活由接收层存储,使得在增量传递和链式传递中,直接使用激活,而无需额外的通信。除了存储激活之外,还执行权重转置来实现增量传递。在一些实施方式和/或使用场景中,权重转置是通过复制权重、在更新权重时使用额外的存储容量和额外的通信来实现的。在一些实施方式和/或使用场景中,权重转置通过在垂直维度中转置增量广播来实现。
图28A示出了矩阵(m)乘以矢量(v)的一般操作。图28B以图28A的样式示出了在一些实施方式中在三个大阶段中使用的内存结构的各种表示(例如,完全连接的神经网络)。在各种实施方式中,权重(w)和梯度累积(g)数据结构是二维矩阵。在一些实施方式中,前向部分和(fpsum)和增量部分和(δpsurri)以及前向传递激活(a)是一维矢量。二维矩阵存储在存储器(例如,图8的内存854)中,因为在一些实施方式和/或使用场景中,二维矩阵相对较大。在一些实施方式中,一维矢量存储在更高吞吐量的存储器(例如,图8的数据存储848)中,以在三次传递中的每一次中实现乘法累积矢量操作的使用场景、完整数据路径性能。
图29示出了在前向传递状态机中使用的任务的实施方式(例如,参见图9至图12和“任务”部分)。在一些实施方式和/或使用场景中,每个PE实现状态机的实例化。在一些实施方式和/或使用场景中,状态机的各个部分由相应的PE实现(例如,参见图17至图20和“神经元涂抹”部分)。状态机中有四个任务:f_rxact:acc 2901、f_rxact:close 2902、f_psum:prop 2903、f_txact:tx 2904。从概念上讲,激活从一个PE到达即时PE的“左侧”(对应于前一层)。激活广播线上的传入(非收尾)激活(激活2911)触发f_rxcact:acc 2901。即时PE执行任务的指令,查找(例如,从即时PE本地的存储器)与激活相关联的权重,并执行本机权重相乘并累积成部分和。f_rxact:acc 2901和f_psum:prop 2903(流2913)之间存在控制流依赖性。任务引用的示例数据结构有wrow、fpsum和fact。
激活广播线上的输入激活收尾(收尾2912)触发f_rxact:close 2902。结束表示当前波前的所有激活结束。即时PE执行任务的指令,用即时PE的开始列表中的部分和开始部分和累积环(开始Psums 2916)。任务引用的示例数据结构是fpsum_acc_mem和fpsum_acc_fab。
传入部分和(Prop Psums 2930)触发f_psum:prop 2903。即时PE执行任务的指令,将输入的部分和与即时PE的局部部分和相加,然后将结果转发到环上的下一跳(PropPsums 2931)。如果即时PE是环的末端,则生成最终和。在一些实施方式和/或使用场景中,执行额外的处理,以防止死锁。任务引用的示例数据结构是fpsum_acc_mem、fpsum_acc_fab和f_txact_wake。
当有排队的激活要传输时,f_txact:tx 2904是自触发的(唤醒2914)。即时PE执行任务的指令,解除激活队列,并在广播线上将激活传输到下一层(激活2921)。当队列中仍有更多项目时,即时PE重新调度任务(重新调度2915)。当队列为空时,即时PE传输收尾小波,以关闭波前(结束2922)。
激活(传入和传出)和部分和(传入和传出)以及收尾小波,被作为小波(例如,参见图13A至图15B和“小波”部分)而传送。在一些实施方式和/或使用场景中,一个或多个小波对应于由一个或多个DSD和/或XDSR描述的结构矢量的一个或多个元件。
各种状态机的数据结构经由存储在相应DSR中的多个DSD来引用(例如,参见图21A至图24和“矢量和数据结构描述符”部分),如下表所述。
Figure BDA0003071381410001391
Figure BDA0003071381410001401
上述示例工作负载映射是针对SGD的。然而,这些技术很容易适用于MBGD和CPGD,无论有无RCP。
其他实施方式细节
关于图1至图29描述的实施方式和使用场景在概念上是关于包括可编程的例如根据指令处理数据的CE的PE。设想了其他实施方式,其中,一个或多个CE是部分或全部硬连线的,例如,根据可在没有指令的情况下操作的一个或多个固定电路处理元件来处理数据。作为具体示例,特定的CE包括实现LSTM单元的全部或一部分的硬件逻辑单元电路。特定的PE包括在特定PE中的路由器,该路由器可在与其他PE点的结构中操作。一些其他PE类似于或等同于特定PE,一些其他PE类似于或等同于图4的PE 499。
示例实现技术
在一些实施方式中,为任何加速的深度学习执行的操作和/或与任何加速的深度学习相关联的结构的所有或任何部分的各种组合;SGD、MBGD、CPGD,无论是否具有RCP,用于加速的深度学习;用于加速的深度学习的数据结构描述符和结构矢量:加速的深度学习的神经元涂抹:加速的深度学习的任务同步:数据流触发的加速的深度学习任务:用于加速的深度学习的控制小波:和/或用于加速的深度学习的小波表示;以及提供所有或部分上述操作的处理器、微处理器、片上系统、专用集成电路、硬件加速器或其他电路的部分,由与计算机系统处理兼容的规范来指定。该规范符合各种描述,例如,硬件描述语言、电路描述、网表描述、掩模描述或布局描述。示例描述包括:Verilog、VHDL、SPICE、SPICE变体,例如,PSpice、IBIS、LEF、DEF、GDS-II、OASIS或其他描述。在各种实施方式中,处理包括解释、编译、模拟和合成的任意组合,以产生、验证或指定适于包含在一个或多个集成电路上的逻辑和/或电路。根据各种实施方式,每个集成电路与根据各种技术的设计和/或制造兼容。这些技术包括可编程技术(例如,现场或掩模可编程门阵列集成电路)、半定制技术(例如,完全或部分基于单元的集成电路)和全定制技术(例如,基本上专用的集成电路)、其任意组合或与集成电路的设计和/或制造兼容的任何其他技术。
在一些实施方式中,通过执行和/或解释一个或多个程序指令,通过解释和/或编译一个或多个源和/或脚本语言语句,或者通过执行通过编译、转化和/或解释在编程和/或脚本语言语句中表达的信息而产生的二进制指令,来执行由存储有一组指令的计算机可读介质所描述的所有或部分操作的各种组合。这些语句与任何标准编程或脚本语言(例如,C、C++、Fortran、Pascal、Ada、Java、VBscript和Shell)兼容。一个或多个程序指令、语言语句或二进制指令可选地存储在一个或多个计算机可读存储介质元件上。在各种实施方式中,程序指令的一些、全部或各种部分被实现为一个或多个功能、例程、子例程、在线例程、过程、宏或其部分。
结论
在描述中已经做出了某些选择,仅仅是为了便于准备文本和附图,并且除非有相反的指示,否则这些选择本身不应该被解释为传达关于所描述的实施方式的结构或操作的额外信息。选择的示例包括:用于数字编号的指定的特定组织或分配以及用于识别和引用实施方式的特征和元件的元件标识符(例如,标注或数字指示等)的特定组织或分配。
各种形式的词语“包括”和“包含”特别旨在被理解为描述开放式范围的逻辑集合的抽象,并且除非明确描述(例如,后面跟着词语“在内”),否则并不意味着传达物理包容。
尽管为了描述和理解的清楚起见,已经对前述实施方式进行了详细描述,但是本发明不限于所提供的细节。本发明有许多实施方式。所公开的实施方式是示例性的,而不是限制性的。
应当理解,在结构、设置和使用上的许多变化都是可能的,与说明书一致,并且在所发布专利的权利要求的范围内。例如,根据每个组件块中的各种实施方式,互连和功能单元位宽、时钟速度以及所使用的技术类型是可变的。提供给互连和逻辑的名称仅仅是示例性的,不应被解释为限制所描述的概念。根据各种实施方式,流程图表和流程图的过程、动作和功能元件的顺序和排列是可变的。此外,除非特别指出相反,否则指定的数值范围、使用的最大值和最小值或其他特定规范(例如,文件类型;以及寄存器和缓冲器中的条目或级的数量)仅仅是所描述的实施方式中的那些,期望跟踪实现技术的改进和变化,并且不应该被解释为限制。
可以使用本领域已知的功能等同技术来代替所描述的技术,以实现各种组件、子系统、操作、功能、例程、子例程、在线例程、过程、宏或其部分。还应当理解,根据更快处理(促进先前在硬件中的功能迁移到软件中)和更高集成密度(促进先前在软件中的功能迁移到硬件中)的依赖于实施方式的设计约束和技术趋势,实施方式的许多功能方面可以选择性地在硬件(例如,一般专用电路)或软件(例如,经由某种方式的编程控制器或处理器)中实现。各种实施方式中的具体变化包括但不限于:划分上的差异;不同的形状因数和配置;使用不同的操作系统和其他系统软件;使用不同的接口标准、网络协议或通信链路;以及当根据特定应用的独特工程和商业约束实现本文描述的概念时预期的其他变化。
这些实施方式的详细描述和环境背景远远超出了所描述的实施方式的许多方面的最小实现所需要的。本领域普通技术人员将认识到,一些实施方式省略了公开的组件或特征,而没有改变其余元件之间的基本协作。因此,应当理解,所公开的许多细节不需要实现所描述的实施方式的各个方面。就其余元件与现有技术的区别而言,省略的组件和特征并不限制本文描述的概念。
设计中的所有这些变化对于所描述的实施方式所传达的教导来说都不是实质性的变化。还应当理解,本文描述的实施方式对其他计算和网络应用具有广泛的适用性,并且不限于所描述的实施方式的特定应用或行业。因此,本发明应被解释为包括所有可能的修改和变化,这些修改和变化包含在已发布专利的权利要求的范围内。

Claims (33)

1.一种加速的深度学习的设备,包括:
多个处理元件;
训练工作负载,包括从预定义的本机指令代码集中选择一组机器代码,用于执行包括多个有序连接层的神经网络的训练;
其中,顺序为每个相应的层识别哪些其他层在所述相应的层之前,哪些其他层在所述相应的层之后;
其中,每层包括一个或多个神经元,每个神经元包括权重并连接到前一层的至少一个先前神经元和后一层的至少一个后续神经元中的至少一个;并且
其中,每个神经元由一个或多个所述处理元件实现,每个处理元件包括:
至少一个与结构的耦合,所述处理元件能够经由多个虚拟信道经由所述结构进行通信,
第一内存,能够存储至少对应于相应的神经元的计算的指令,
第二内存,能够存储所述相应的神经元的权重,以及
计算引擎,能够响应于接收到从所述预定义的本机指令代码集中选择的对应基本指令,执行预定义的基本操作集,所述执行是通过执行来自相应的第一内存的指令并且从相应的第二内存访问数据实现的。
2.根据权利要求1所述的设备,其中,所述层中的每一层是所述神经网络的相应的内层,并且所述神经网络还包括输入层和输出层。
3.根据权利要求1所述的设备,其中,所述训练工作负载包括相应组的机器代码,所述相应组的机器代码用于:
基于第一激活和第一权重来确定第二激活;
基于第一增量和所述第一权重来确定并保存第二权重;
基于第三激活和所选择的权重来确定第四激活,其中,所选择的权重是从所述第一权重和所述第二权重中动态地选择的;并且
基于第二增量和所选择的权重来确定并保存第三权重。
4.根据权利要求3所述的设备,其中,所选择的权重根据所述第一权重和所述第二权重中的哪一个被最近存储来动态地选择。
5.根据权利要求3所述的设备,其中,所述第二激活的确定包括:
经由所述结构从所述至少一个先前神经元接收所述第一激活;
通过至少执行存储在所述第一内存中的第一指令并访问所述第二内存中的所述第一权重,至少部分基于所述第一激活和所述第一权重来计算所述第二激活;并且
经由所述结构选择性地将所述第二激活传输到所述至少一个后续神经元。
6.根据权利要求5所述的设备,其中,所述第四激活的确定包括:
经由所述结构从所述至少一个先前神经元接收所述第三激活;
通过至少执行所述第一指令并访问所述第二内存中的所选择的权重,至少部分基于所述第三激活和所选择的权重来计算所述第四激活;并且
经由所述结构选择性地将所述第四激活传输到所述至少一个后续神经元。
7.根据权利要求6所述的设备,其中,所述第二权重的确定并保存包括:
经由所述结构从所述至少一个后续神经元接收部分基于所述第二激活的所述第一增量;
通过至少执行存储在所述第一内存中的第二指令,至少部分基于所述第一增量和所述第二激活来计算第一梯度;
通过至少执行存储在所述第一内存中的第三指令并访问所述第二内存中的所述第一权重,至少部分基于所述第一梯度、学习规则和所述第一权重来计算所述第二权重;并且
将所述第二权重存储在所述第二内存中。
8.根据权利要求7所述的设备,其中,所述第三权重的确定并保存包括:
经由所述结构从所述至少一个后续神经元接收部分基于所述第四激活的所述第二增量;
通过至少执行存储在所述第一内存中的所述第二指令,至少部分基于第三增量和所述第四激活来计算第二梯度;
通过至少执行存储在所述第一内存中的所述第三指令并访问所述第二内存中的所选择的权重,至少部分基于所述第二梯度、所述学习规则和所选择的权重来计算所述第三权重;并且
将所述第三权重存储在所述第二内存中。
9.根据权利要求8所述的设备,其中,所述第二梯度的计算另外包括至少部分基于所选择的权重任选地重新计算所述第四激活。
10.根据权利要求8所述的设备,其中,所述第一梯度的计算另外包括至少部分基于所述第一权重任选地重新计算所述第二激活。
11.根据权利要求1所述的设备,其中,所述设备经由包括所述处理元件的整个晶片来实现。
12.一种加速的深度学习的方法,包括:
训练包括多个有序连接层的神经网络;
其中,顺序为每个相应的层识别哪些其他层在所述相应的层之前,哪些其他层在所述相应的层之后;
其中,每层包括一个或多个神经元,每个神经元包括权重并连接到前一层的至少一个先前神经元和后一层的至少一个后续神经元中的至少一个;并且
其中,每个神经元由一个或多个处理元件实现,每个处理元件包括:
至少一个与结构的耦合,所述处理元件能够经由多个虚拟信道经由所述结构进行通信,
第一内存,能够存储至少对应于相应的神经元的计算的指令,
第二内存,能够存储所述相应的神经元的权重,以及
硬件执行资源,能够执行来自相应的第一内存的指令并且从相应的第二内存访问数据。
13.根据权利要求12所述的方法,其中,所述层中的每一层是所述神经网络的相应的内层,并且所述神经网络还包括输入层和输出层。
14.根据权利要求12所述的方法,其中,所述训练包括:
基于第一激活和第一权重来确定第二激活;
基于第一增量和所述第一权重来确定并保存第二权重;
基于第三激活和所选择的权重来确定第四激活,其中,所选择的权重是从所述第一权重和所述第二权重中动态地选择的;并且
基于第二增量和所选择的权重来确定并保存第三权重。
15.根据权利要求14所述的方法,其中,所选择的权重根据所述第一权重和所述第二权重中的哪一个被最近存储来动态地选择。
16.根据权利要求14所述的方法,其中,所述第二激活的确定包括:
经由所述结构从所述至少一个先前神经元接收所述第一激活;
通过至少执行存储在所述第一内存中的第一指令并访问所述第二内存中的所述第一权重,至少部分基于所述第一激活和所述第一权重来计算所述第二激活;并且
经由所述结构选择性地将所述第二激活传输到所述至少一个后续神经元。
17.根据权利要求16所述的方法,其中,所述第四激活的确定包括:
经由所述结构从所述至少一个先前神经元接收所述第三激活;
通过至少执行所述第一指令并访问所述第二内存中的所选择的权重,至少部分基于所述第三激活和所选择的权重来计算所述第四激活;并且
经由所述结构选择性地将所述第四激活传输到所述至少一个后续神经元。
18.根据权利要求17所述的方法,其中,所述第二权重的确定并保存包括:
经由所述结构从所述至少一个后续神经元接收部分基于所述第二激活的所述第一增量;
通过至少执行存储在所述第一内存中的第二指令,至少部分基于所述第一增量和所述第二激活来计算第一梯度;
通过至少执行存储在所述第一内存中的第三指令并访问所述第二内存中的所述第一权重,至少部分基于所述第一梯度、学习规则和所述第一权重来计算所述第二权重;并且
将所述第二权重存储在所述第二内存中。
19.根据权利要求18所述的方法,其中,所述第三权重的确定并保存包括:
经由所述结构从所述至少一个后续神经元接收部分基于所述第四激活的所述第二增量;
通过至少执行存储在所述第一内存中的所述第二指令,至少部分基于第三增量和所述第四激活来计算第二梯度;
通过至少执行存储在所述第一内存中的所述第三指令并访问所述第二内存中的所选择的权重,至少部分基于所述第二梯度、所述学习规则和所选择的权重来计算所述第三权重;并且
将所述第三权重存储在所述第二内存中。
20.根据权利要求19所述的方法,其中,所述第二梯度的计算另外包括至少部分基于所选择的权重任选地重新计算所述第四激活。
21.根据权利要求19所述的方法,其中,所述第一梯度的计算另外包括至少部分基于所述第一权重任选地重新计算所述第二激活。
22.根据权利要求12所述的方法,其中,所述方法是经由包括所述处理元件的整个晶片来执行的。
23.一种加速的深度学习的系统,包括:
用于训练神经网络的装置,所述神经网络包括多个有序连接的层;
其中,顺序为每个相应的层识别哪些其他层在所述相应的层之前,哪些其他层在所述相应的层之后;
其中,每层包括一个或多个神经元,每个神经元包括权重并连接到前一层的至少一个先前神经元和后一层的至少一个后续神经元中的至少一个;并且
其中,每个神经元由一个或多个处理元件实现,每个处理元件包括:
至少一个与结构的耦合,所述处理元件能够经由多个虚拟信道经由所述结构进行通信,
第一内存,能够存储至少对应于相应的神经元的计算的指令,
第二内存,能够存储所述相应的神经元的权重,以及
硬件执行资源,能够执行来自相应的第一内存的指令并且从相应的第二内存访问数据。
24.根据权利要求23所述的系统,其中,所述层中的每一层是所述神经网络的相应的内层,并且所述神经网络还包括输入层和输出层。
25.根据权利要求23所述的系统,其中,用于训练的所述装置包括:
用于基于第一激活和第一权重来确定第二激活的装置;
用于基于第一增量和所述第一权重来确定并保存第二权重的装置;
用于基于第三激活和所选择的权重来确定第四激活的装置,其中,所选择的权重是从所述第一权重和所述第二权重中动态地选择的;以及
用于基于第二增量和所选择的权重来确定并保存第三权重的装置。
26.根据权利要求25所述的系统,其中,所选择的权重根据所述第一权重和所述第二权重中的哪一个被最近存储来动态地选择。
27.根据权利要求25所述的系统,其中,用于确定所述第二激活的所述装置包括:
用于经由所述结构从所述至少一个先前神经元接收所述第一激活的装置;
用于通过至少执行存储在所述第一内存中的第一指令并访问所述第二内存中的所述第一权重实现的,至少部分基于所述第一激活和所述第一权重来计算所述第二激活的装置;以及
用于经由所述结构选择性地将所述第二激活传输到所述至少一个后续神经元的装置。
28.根据权利要求27所述的系统,其中,用于确定所述第四激活的所述装置包括:
用于经由所述结构从所述至少一个先前神经元接收所述第三激活的装置;
用于通过至少执行所述第一指令并访问所述第二内存中的所选择的权重实现的,至少部分基于所述第三激活和所选择的权重来计算所述第四激活的装置;以及
用于经由所述结构选择性地将所述第四激活传输到所述至少一个后续神经元的装置。
29.根据权利要求28所述的系统,其中,用于确定并保存所述第二权重的所述装置包括:
用于经由所述结构从所述至少一个后续神经元接收部分基于所述第二激活的所述第一增量的装置;
用于通过至少执行存储在所述第一内存中的第二指令实现的,至少部分基于所述第一增量和所述第二激活来计算第一梯度的装置;
用于通过至少执行存储在所述第一内存中的第三指令实现的,至少部分基于所述第一梯度、学习规则和所述第一权重来计算所述第二权重的装置;以及
用于将所述第二权重存储在所述第二内存中的装置。
30.根据权利要求29所述的系统,其中,用于确定并保存所述第三权重的所述装置包括:
用于经由所述结构从所述至少一个后续神经元接收部分基于所述第四激活的所述第二增量的装置;
用于通过至少执行存储在所述第一内存中的第二指令实现的,并且至少部分基于第三增量和所述第四激活来计算第二梯度的装置;
用于通过至少执行存储在所述第一内存中的所述第三指令并访问所述第二内存中的所选择的权重,至少部分基于所述第二梯度、所述学习规则和所选择的权重来计算所述第三权重的装置;以及
用于将所述第三权重存储在所述第二内存中的装置。
31.根据权利要求30所述的系统,其中,用于计算所述第二梯度的所述装置另外包括用于至少部分基于所选择的权重任选地重新计算所述第四激活的装置。
32.根据权利要求30所述的系统,其中,用于计算所述第一梯度的所述装置另外包括用于至少部分基于所述第一权重任选地重新计算所述第二激活的装置。
33.根据权利要求23所述的系统,其中,整个晶片包括所述系统。
CN202110540433.6A 2017-02-23 2018-02-23 加速的深度学习的设备、方法和系统 Active CN113792847B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110540433.6A CN113792847B (zh) 2017-02-23 2018-02-23 加速的深度学习的设备、方法和系统

Applications Claiming Priority (25)

Application Number Priority Date Filing Date Title
US201762462640P 2017-02-23 2017-02-23
US62/462,640 2017-02-23
US201762486372P 2017-04-17 2017-04-17
US62/486,372 2017-04-17
US201762517949P 2017-06-11 2017-06-11
US62/517,949 2017-06-11
US201762520433P 2017-06-15 2017-06-15
US62/520,433 2017-06-15
US201762522081P 2017-06-19 2017-06-19
US201762522065P 2017-06-19 2017-06-19
US62/522,081 2017-06-19
US62/522,065 2017-06-19
US201762542657P 2017-08-08 2017-08-08
US201762542645P 2017-08-08 2017-08-08
US62/542,657 2017-08-08
US62/542,645 2017-08-08
US201762580207P 2017-11-01 2017-11-01
US62/580,207 2017-11-01
US201862628784P 2018-02-09 2018-02-09
US201862628773P 2018-02-09 2018-02-09
US62/628,784 2018-02-09
US62/628,773 2018-02-09
CN201880013504.3A CN110869946B (zh) 2017-02-23 2018-02-23 加速的深度学习
PCT/IB2018/051128 WO2018154494A1 (en) 2017-02-23 2018-02-23 Accelerated deep learning
CN202110540433.6A CN113792847B (zh) 2017-02-23 2018-02-23 加速的深度学习的设备、方法和系统

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201880013504.3A Division CN110869946B (zh) 2017-02-23 2018-02-23 加速的深度学习

Publications (2)

Publication Number Publication Date
CN113792847A true CN113792847A (zh) 2021-12-14
CN113792847B CN113792847B (zh) 2024-03-08

Family

ID=63253606

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202110540433.6A Active CN113792847B (zh) 2017-02-23 2018-02-23 加速的深度学习的设备、方法和系统
CN201880013504.3A Active CN110869946B (zh) 2017-02-23 2018-02-23 加速的深度学习

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201880013504.3A Active CN110869946B (zh) 2017-02-23 2018-02-23 加速的深度学习

Country Status (7)

Country Link
US (3) US11934945B2 (zh)
EP (1) EP3563307B1 (zh)
JP (2) JP6832050B2 (zh)
KR (1) KR102369209B1 (zh)
CN (2) CN113792847B (zh)
CA (2) CA3108151C (zh)
WO (1) WO2018154494A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117273115A (zh) * 2023-11-24 2023-12-22 上海燧原科技有限公司 一种反向计算图的静态生成方法、装置、设备及介质

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11934945B2 (en) 2017-02-23 2024-03-19 Cerebras Systems Inc. Accelerated deep learning
US10042614B1 (en) 2017-03-29 2018-08-07 International Business Machines Corporation Hardware device based software generation
US10685294B2 (en) * 2017-03-29 2020-06-16 International Business Machines Corporation Hardware device based software selection
US10101971B1 (en) 2017-03-29 2018-10-16 International Business Machines Corporation Hardware device based software verification
US11238334B2 (en) 2017-04-04 2022-02-01 Hailo Technologies Ltd. System and method of input alignment for efficient vector operations in an artificial neural network
US11544545B2 (en) 2017-04-04 2023-01-03 Hailo Technologies Ltd. Structured activation based sparsity in an artificial neural network
US11551028B2 (en) 2017-04-04 2023-01-10 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network
US11615297B2 (en) 2017-04-04 2023-03-28 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network compiler
US10387298B2 (en) 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
US11488004B2 (en) 2017-04-17 2022-11-01 Cerebras Systems Inc. Neuron smearing for accelerated deep learning
JP6854473B2 (ja) 2017-04-17 2021-04-07 セレブラス システムズ インク. 加速化ディープラーニングのデータフロー・トリガー・タスク
EP3607503B1 (en) * 2017-04-17 2022-03-09 Cerebras Systems Inc. Task activating for accelerated deep learning
US20190005377A1 (en) * 2017-06-30 2019-01-03 Advanced Micro Devices, Inc. Artificial neural network reduction to reduce inference computation time
EP3649618A1 (en) 2017-07-03 2020-05-13 Artomatix Ltd. Systems and methods for providing non-parametric texture synthesis of arbitrary shape and/or material data in a unified framework
GB2568230B (en) * 2017-10-20 2020-06-03 Graphcore Ltd Processing in neural networks
JP6794336B2 (ja) * 2017-11-17 2020-12-02 株式会社東芝 ニューラルネットワーク装置
US11961001B2 (en) 2017-12-15 2024-04-16 Nvidia Corporation Parallel forward and backward propagation
US11630997B2 (en) * 2018-01-23 2023-04-18 Samsung Electronics Co., Ltd. Method and apparatus with bit-serial data processing of a neural network
US10970080B2 (en) 2018-02-08 2021-04-06 Marvell Asia Pte, Ltd. Systems and methods for programmable hardware architecture for machine learning
CN108446096B (zh) * 2018-03-21 2021-01-29 杭州中天微系统有限公司 数据计算系统
US20190303740A1 (en) * 2018-03-30 2019-10-03 International Business Machines Corporation Block transfer of neuron output values through data memory for neurosynaptic processors
US11481612B1 (en) 2018-04-20 2022-10-25 Perceive Corporation Storage of input values across multiple cores of neural network inference circuit
US10740434B1 (en) 2018-04-20 2020-08-11 Perceive Corporation Reduced dot product computation circuit
US11783167B1 (en) 2018-04-20 2023-10-10 Perceive Corporation Data transfer for non-dot product computations on neural network inference circuit
US10891136B1 (en) 2018-05-22 2021-01-12 Marvell Asia Pte, Ltd. Data transmission between memory and on chip memory of inference engine for machine learning via a single data gathering instruction
US10929778B1 (en) * 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Address interleaving for machine learning
US10929760B1 (en) 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Architecture for table-based mathematical operations for inference acceleration in machine learning
US11016801B1 (en) * 2018-05-22 2021-05-25 Marvell Asia Pte, Ltd. Architecture to support color scheme-based synchronization for machine learning
US10997510B1 (en) 2018-05-22 2021-05-04 Marvell Asia Pte, Ltd. Architecture to support tanh and sigmoid operations for inference acceleration in machine learning
US10929779B1 (en) * 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Architecture to support synchronization between core and inference engine for machine learning
WO2020044152A1 (en) 2018-08-28 2020-03-05 Cerebras Systems Inc. Scaled compute fabric for accelerated deep learning
US11321087B2 (en) 2018-08-29 2022-05-03 Cerebras Systems Inc. ISA enhancements for accelerated deep learning
US11328208B2 (en) 2018-08-29 2022-05-10 Cerebras Systems Inc. Processor element redundancy for accelerated deep learning
CN110874626B (zh) * 2018-09-03 2023-07-18 华为技术有限公司 一种量化方法及装置
CN109447257B (zh) * 2018-09-18 2021-08-17 复旦大学 一种通道自组织的深度神经网络加速芯片的运算装置
JP7003021B2 (ja) * 2018-09-18 2022-01-20 株式会社東芝 ニューラルネットワーク装置
US11157213B2 (en) * 2018-10-12 2021-10-26 Micron Technology, Inc. Parallel memory access and computation in memory devices
EP4009186A1 (en) * 2018-10-18 2022-06-08 Shanghai Cambricon Information Technology Co., Ltd Network-on-chip data processing method and device
US11922314B1 (en) * 2018-11-30 2024-03-05 Ansys, Inc. Systems and methods for building dynamic reduced order physical models
US11995533B1 (en) 2018-12-05 2024-05-28 Perceive Corporation Executing replicated neural network layers on inference circuit
US11610110B2 (en) 2018-12-05 2023-03-21 Bank Of America Corporation De-conflicting data labeling in real time deep learning systems
SG11201910061RA (en) * 2019-01-11 2019-11-28 Alibaba Group Holding Ltd A distributed multi-party security model training framework for privacy protection
CN109783412B (zh) * 2019-01-18 2022-04-22 电子科技大学 一种深度强化学习加速训练的方法
US11347297B1 (en) 2019-01-23 2022-05-31 Perceive Corporation Neural network inference circuit employing dynamic memory sleep
US11748599B2 (en) * 2019-02-21 2023-09-05 Texas Instruments Incorporated Super-tiling in neural network processing to enable analytics at lower memory speed
WO2020172494A1 (en) 2019-02-22 2020-08-27 Neureality Ltd. Directed and interconnected grid dataflow architecture
CN111723900B (zh) * 2019-03-18 2023-10-20 北京灵汐科技有限公司 一种基于众核处理器的神经网络的映射方法及计算设备
US10467142B1 (en) * 2019-05-07 2019-11-05 12 Sigma Technologies Enhancement of real-time response to request for detached data analytics
US11625585B1 (en) 2019-05-21 2023-04-11 Perceive Corporation Compiler for optimizing filter sparsity for neural network implementation configuration
US10997116B2 (en) * 2019-08-06 2021-05-04 Microsoft Technology Licensing, Llc Tensor-based hardware accelerator including a scalar-processing unit
JP7346235B2 (ja) * 2019-10-16 2023-09-19 ルネサスエレクトロニクス株式会社 半導体装置
WO2021074795A1 (en) * 2019-10-16 2021-04-22 Cerebras Systems Inc. Dynamic routing for accelerated deep learning
US20230162012A1 (en) * 2019-10-16 2023-05-25 Cerebras Systems Inc. Basic wavelet filtering for accelerated deep learning
WO2021084485A1 (en) * 2019-10-30 2021-05-06 Cerebras Systems Inc. Placement of compute and memory for accelerated deep learning
US11687778B2 (en) 2020-01-06 2023-06-27 The Research Foundation For The State University Of New York Fakecatcher: detection of synthetic portrait videos using biological signals
US11620476B2 (en) * 2020-05-14 2023-04-04 Micron Technology, Inc. Methods and apparatus for performing analytics on image data
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
CN111860818B (zh) * 2020-07-23 2022-11-08 哈尔滨工业大学(威海) 基于智能芯片的som神经网络算法处理方法
US11635967B2 (en) 2020-09-25 2023-04-25 Advanced Micro Devices, Inc. Vertical and horizontal broadcast of shared operands
US11811421B2 (en) 2020-09-29 2023-11-07 Hailo Technologies Ltd. Weights safety mechanism in an artificial neural network processor
US11263077B1 (en) 2020-09-29 2022-03-01 Hailo Technologies Ltd. Neural network intermediate results safety mechanism in an artificial neural network processor
US11237894B1 (en) 2020-09-29 2022-02-01 Hailo Technologies Ltd. Layer control unit instruction addressing safety mechanism in an artificial neural network processor
US11221929B1 (en) 2020-09-29 2022-01-11 Hailo Technologies Ltd. Data stream fault detection mechanism in an artificial neural network processor
US11874900B2 (en) 2020-09-29 2024-01-16 Hailo Technologies Ltd. Cluster interlayer safety mechanism in an artificial neural network processor
US20220138524A1 (en) * 2020-10-29 2022-05-05 Microsoft Technology Licensing, Llc Training neural networks based on dual pipeline architectures
CN112329941B (zh) * 2020-11-04 2022-04-12 支付宝(杭州)信息技术有限公司 深度学习模型的更新方法及装置
US11776273B1 (en) * 2020-11-30 2023-10-03 Amazon Technologies, Inc. Ensemble of machine learning models for automatic scene change detection
US11392740B2 (en) * 2020-12-18 2022-07-19 SambaNova Systems, Inc. Dataflow function offload to reconfigurable processors
US11182221B1 (en) 2020-12-18 2021-11-23 SambaNova Systems, Inc. Inter-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS)
US11237880B1 (en) 2020-12-18 2022-02-01 SambaNova Systems, Inc. Dataflow all-reduce for reconfigurable processor systems
KR102652476B1 (ko) * 2020-12-31 2024-03-28 주식회사 딥엑스 인공신경망을 위한 방법 및 신경 프로세싱 유닛
US11782760B2 (en) 2021-02-25 2023-10-10 SambaNova Systems, Inc. Time-multiplexed use of reconfigurable hardware
CN113065647B (zh) * 2021-03-30 2023-04-25 西安电子科技大学 加速神经网络的计算-存储通信系统及通信方法
US11748988B1 (en) 2021-04-21 2023-09-05 Amazon Technologies, Inc. Shot contras five self-supervised learning of a plurality of machine learning models for video analysis applications
US11769079B2 (en) 2021-04-30 2023-09-26 Samsung Electronics Co., Ltd. Method and device for decoding data
US11777812B2 (en) * 2021-06-25 2023-10-03 Qualcomm Technologies, Inc. Zone-based federated learning
EP4202767A1 (en) * 2021-12-22 2023-06-28 GrAl Matter Labs S.A.S. Neuron core synchronization
US20230251792A1 (en) * 2022-02-04 2023-08-10 Western Digital Technologies, Inc. Memory Device Based Accelerated Deep-Learning System
CN114637388A (zh) * 2022-03-18 2022-06-17 中国科学院计算技术研究所 面向数据流处理器的功耗控制方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06195322A (ja) * 1992-10-29 1994-07-15 Hitachi Ltd 汎用型ニューロコンピュータとして用いられる情報処理装置
US20080319933A1 (en) * 2006-12-08 2008-12-25 Medhat Moussa Architecture, system and method for artificial neural network implementation
WO2016037351A1 (en) * 2014-09-12 2016-03-17 Microsoft Corporation Computing system for training neural networks
US20160098629A1 (en) * 2014-10-01 2016-04-07 Thalchemy Corporation Efficient and scalable systems for calculating neural network connectivity in an event-driven way
US20160275397A1 (en) * 2015-03-18 2016-09-22 Universitaet Zuerich Method and apparatus for event-based learning in neural network
US20160321542A1 (en) * 2015-04-28 2016-11-03 Qualcomm Incorporated Incorporating top-down information in deep neural networks via the bias term

Family Cites Families (194)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0325384B1 (en) 1988-01-15 1993-09-29 Quantel Limited Data processing and communication
JPH03175548A (ja) 1989-12-04 1991-07-30 Fujitsu Ltd マイクロプロセッサ及びアドレス制御方式
US5226092A (en) * 1991-06-28 1993-07-06 Digital Equipment Corporation Method and apparatus for learning in a neural network
JP3219826B2 (ja) 1992-02-21 2001-10-15 日本電気株式会社 情報処理装置
JPH05265996A (ja) 1992-03-24 1993-10-15 Nippon Telegr & Teleph Corp <Ntt> ニューロコンピュータ
JPH0668056A (ja) 1992-08-20 1994-03-11 Hitachi Ltd 並列計算機システム
JPH06110864A (ja) * 1992-09-30 1994-04-22 Sony Corp 学習処理装置
CA2129882A1 (en) 1993-08-12 1995-02-13 Soheil Shams Dynamically reconfigurable interprocessor communication network for simd multiprocessors and apparatus implementing same
JP3384601B2 (ja) 1994-02-23 2003-03-10 三洋電機株式会社 並列処理計算機
US5710549A (en) 1994-09-30 1998-01-20 Tandem Computers Incorporated Routing arbitration for shared resources
US5835024A (en) 1995-06-07 1998-11-10 International Business Machines Corporation Multi-stage interconnection network with selectable function switching apparatus
US6055618A (en) 1995-10-31 2000-04-25 Cray Research, Inc. Virtual maintenance network in multiprocessing system having a non-flow controlled virtual maintenance channel
US5870396A (en) 1996-12-31 1999-02-09 Northern Telecom Limited Output queueing in a broadband multi-media satellite and terrestrial communications network
US6285679B1 (en) 1997-08-22 2001-09-04 Avici Systems, Inc. Methods and apparatus for event-driven routing
US6212627B1 (en) 1998-10-12 2001-04-03 Intel Corporation System for converting packed integer data into packed floating point data in reduced time
US6246615B1 (en) 1998-12-23 2001-06-12 Micron Technology, Inc. Redundancy mapping in a multichip semiconductor package
JP2000278316A (ja) 1999-03-23 2000-10-06 Toshiba Microelectronics Corp データ切替装置
US6542986B1 (en) 1999-11-09 2003-04-01 Advanced Micro Devices, Inc. Resolving dependencies among concurrently dispatched instructions in a superscalar microprocessor
GB0019341D0 (en) 2000-08-08 2000-09-27 Easics Nv System-on-chip solutions
US7555566B2 (en) 2001-02-24 2009-06-30 International Business Machines Corporation Massively parallel supercomputer
US20020141427A1 (en) 2001-03-29 2002-10-03 Mcalpine Gary L. Method and apparatus for a traffic optimizing multi-stage switch fabric network
JP4542722B2 (ja) 2001-04-25 2010-09-15 富士通株式会社 命令処理方法
US7293002B2 (en) 2001-06-19 2007-11-06 Ohio University Self-organizing data driven learning hardware with local interconnections
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
US7403525B2 (en) 2002-05-15 2008-07-22 Broadcom Corporation Efficient routing of packet data in a scalable processing resource
GB0304628D0 (en) 2003-02-28 2003-04-02 Imec Inter Uni Micro Electr Method for hardware-software multitasking on a reconfigurable computing platform
US7402897B2 (en) 2002-08-08 2008-07-22 Elm Technology Corporation Vertical system integration
KR100991700B1 (ko) 2002-08-16 2010-11-04 코닌클리케 필립스 일렉트로닉스 엔.브이. 처리 장치, 처리 방법 및 컴퓨터로 판독가능한 기록 매체
US20040115995A1 (en) 2002-11-25 2004-06-17 Sanders Samuel Sidney Circuit array module
US7299338B2 (en) 2002-12-04 2007-11-20 Agere Systems Inc. Vector indexed memory unit and method
ITRM20030354A1 (it) 2003-07-17 2005-01-18 Micron Technology Inc Unita' di controllo per dispositivo di memoria.
JP3984209B2 (ja) 2003-07-31 2007-10-03 株式会社東芝 半導体記憶装置
US7701957B1 (en) 2004-01-20 2010-04-20 Integrated Device Technology, Inc. Method and apparatus for switching, merging, and demerging data between data communication locations
US7453810B2 (en) 2004-07-27 2008-11-18 Alcatel Lucent Method and apparatus for closed loop, out-of-band backpressure mechanism
US7277990B2 (en) 2004-09-30 2007-10-02 Sanjeev Jain Method and apparatus providing efficient queue descriptor memory access
US7493474B1 (en) 2004-11-10 2009-02-17 Altera Corporation Methods and apparatus for transforming, loading, and executing super-set instructions
US7657891B2 (en) 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US7671398B2 (en) 2005-02-23 2010-03-02 Tran Bao Q Nano memory, light, energy, antenna and strand-based systems and methods
US8443169B2 (en) 2005-03-28 2013-05-14 Gerald George Pechanek Interconnection network connecting operation-configurable nodes according to one or more levels of adjacency in multiple dimensions of communication in a multi-processor and a neural processor
US7565657B1 (en) 2005-04-19 2009-07-21 Sandia Corporation Allocating application to group of consecutive processors in fault-tolerant deadlock-free routing path defined by routers obeying same rules for path selection
US8275976B2 (en) 2005-08-29 2012-09-25 The Invention Science Fund I, Llc Hierarchical instruction scheduler facilitating instruction replay
US20070058557A1 (en) 2005-09-15 2007-03-15 Interdigital Technology Corporation Method and apparatus for scheduling data transmissions based on a traffic data pattern model
US9009660B1 (en) 2005-11-29 2015-04-14 Tilera Corporation Programming in a multiprocessor environment
EP1991417A4 (en) 2006-01-24 2011-06-08 Mycrolab Pty Ltd PROCESSES FOR THE GOOD MANUFACTURING OF MATERIALS AND COMPLEX LAMINATE DEVICES
US9542642B2 (en) 2006-04-06 2017-01-10 Samuel F. Wood Packet data neural network system and method
US8194690B1 (en) 2006-05-24 2012-06-05 Tilera Corporation Packet processing in a parallel processing environment
US8390325B2 (en) 2006-06-21 2013-03-05 Element Cxi, Llc Reconfigurable integrated circuit architecture with on-chip configuration and reconfiguration
US8010966B2 (en) 2006-09-27 2011-08-30 Cisco Technology, Inc. Multi-threaded processing using path locks
US7773616B2 (en) 2006-11-08 2010-08-10 Sicortex, Inc. System and method for communicating on a richly connected multi-processor computer system using a pool of buffers for dynamic association with a virtual channel
US7688725B2 (en) 2007-02-07 2010-03-30 King Fahd University Of Petroleum & Minerals Content-aware congestion control system
CN100591047C (zh) 2007-02-10 2010-02-17 华为技术有限公司 一种多级交换网的反压方法、系统及交换节点
US8752032B2 (en) 2007-02-23 2014-06-10 Irdeto Canada Corporation System and method of interlocking to protect software-mediated program and device behaviours
EP2143298A1 (en) 2007-05-01 2010-01-13 Telefonaktiebolaget LM Ericsson (PUBL) All optical processing circuit for conflict resolution and switch configuration in a 2x2 optical node
JP5012232B2 (ja) 2007-06-08 2012-08-29 富士通株式会社 光スイッチ装置
CN101354694B (zh) 2007-07-26 2010-10-13 上海红神信息技术有限公司 基于mpu架构的超高扩展超级计算系统
US7873701B2 (en) 2007-11-27 2011-01-18 International Business Machines Corporation Network on chip with partitions
US8526422B2 (en) 2007-11-27 2013-09-03 International Business Machines Corporation Network on chip with partitions
US8862706B2 (en) 2007-12-14 2014-10-14 Nant Holdings Ip, Llc Hybrid transport—application network fabric apparatus
US8161209B2 (en) 2008-03-31 2012-04-17 Advanced Micro Devices, Inc. Peer-to-peer special purpose processor architecture and method
US8245240B2 (en) 2008-04-04 2012-08-14 Intel Corporation Extended dynamic optimization of connection establishment and message progress processing in a multi-fabric message passing interface implementation
TW200951752A (en) 2008-06-06 2009-12-16 Inotera Memories Inc A method for prognostic maintenance in semiconductor manufacturing
US20110213950A1 (en) 2008-06-11 2011-09-01 John George Mathieson System and Method for Power Optimization
GB0811057D0 (en) 2008-06-17 2008-07-23 Univ Ulster Artificial neural network architecture
US8103858B2 (en) 2008-06-30 2012-01-24 Intel Corporation Efficient parallel floating point exception handling in a processor
US8151088B1 (en) 2008-07-08 2012-04-03 Tilera Corporation Configuring routing in mesh networks
US8311057B1 (en) 2008-08-05 2012-11-13 Xilinx, Inc. Managing formatting of packets of a communication protocol
US8213308B2 (en) 2008-09-11 2012-07-03 Juniper Networks, Inc. Methods and apparatus for defining a flow control signal related to a transmit queue
US8423983B2 (en) 2008-10-14 2013-04-16 International Business Machines Corporation Generating and executing programs for a floating point single instruction multiple data instruction set architecture
EP2366144B1 (en) 2008-10-15 2015-09-30 Hyperion Core, Inc. Sequential processor comprising an alu array
US7814303B2 (en) 2008-10-23 2010-10-12 International Business Machines Corporation Execution of a sequence of vector instructions preceded by a swizzle sequence instruction specifying data element shuffle orders respectively
US8918350B2 (en) 2008-12-19 2014-12-23 Optis Wireless Technology, Llc Method and apparatus for routing data
US20110022821A1 (en) 2009-03-09 2011-01-27 Yunsi Fei System and Methods to Improve Efficiency of VLIW Processors
US9135215B1 (en) 2009-09-21 2015-09-15 Tilera Corporation Route prediction in packet switched networks
US8396119B1 (en) 2009-09-30 2013-03-12 Ambarella, Inc. Data sample compression and decompression using randomized quantization bins
US8583896B2 (en) 2009-11-13 2013-11-12 Nec Laboratories America, Inc. Massively parallel processing core with plural chains of processing elements and respective smart memory storing select data received from each chain
US8559307B2 (en) 2009-12-28 2013-10-15 Empire Technology Development Llc Routing packets in on-chip networks
CN101778049A (zh) 2010-03-04 2010-07-14 南京大学 包-电路交换片上路由器及其传输方法
US8379659B2 (en) 2010-03-29 2013-02-19 Intel Corporation Performance and traffic aware heterogeneous interconnection network
US9015448B2 (en) 2010-06-17 2015-04-21 Advanced Micro Devices, Inc. Message broadcast with router bypassing
US9065773B2 (en) 2010-06-22 2015-06-23 Juniper Networks, Inc. Methods and apparatus for virtual channel flow control associated with a switch fabric
US8880866B2 (en) 2010-10-15 2014-11-04 Coherent Logix, Incorporated Method and system for disabling communication paths in a multiprocessor fabric by setting register values to disable the communication paths specified by a configuration
US8738860B1 (en) 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
US8745626B1 (en) 2012-12-17 2014-06-03 Throughputer, Inc. Scheduling application instances to configurable processing cores based on application requirements and resource specification
US8843425B2 (en) 2011-07-29 2014-09-23 International Business Machines Corporation Hierarchical routing for two-way information flow and structural plasticity in neural networks
US8712941B2 (en) 2011-09-21 2014-04-29 Brain Corporation Elementary network description for efficient link between neuronal models and neuromorphic systems
WO2013032753A2 (en) 2011-08-26 2013-03-07 The Trustees Of Columbia University In The City Of New York Systems and methods for switched-inductor integrated voltage regulators
US20140211630A1 (en) 2011-09-28 2014-07-31 Vincent E. Cavanna Managing packet flow in a switch faric
US10078515B2 (en) 2011-10-03 2018-09-18 International Business Machines Corporation Tracking operand liveness information in a computer system and performing function based on the liveness information
US8909690B2 (en) 2011-12-13 2014-12-09 International Business Machines Corporation Performing arithmetic operations using both large and small floating point values
KR101197103B1 (ko) 2012-03-09 2012-11-07 (주) 지솔루션 위성압축영상 분할처리 장치 및 그 방법
US9390461B1 (en) 2012-05-08 2016-07-12 Apple Inc. Graphics hardware mode controls
JP2013251715A (ja) 2012-05-31 2013-12-12 Toshiba Corp ルータ及びメニーコアシステム
US9569279B2 (en) 2012-07-31 2017-02-14 Nvidia Corporation Heterogeneous multiprocessor design for power-efficient and area-efficient computing
US9563841B2 (en) 2012-07-31 2017-02-07 International Business Machines Corporation Globally asynchronous and locally synchronous (GALS) neuromorphic network
US9507746B2 (en) 2012-10-22 2016-11-29 Intel Corporation Control messaging in multislot link layer flit
EP2923279B1 (en) * 2012-11-21 2016-11-02 Coherent Logix Incorporated Processing system with interspersed processors; dma-fifo
US9373073B2 (en) 2012-12-21 2016-06-21 International Business Machines Corporation Time-division multiplexed neurosynaptic module with implicit memory addressing for implementing a universal substrate of adaptation
US9826058B2 (en) 2013-02-27 2017-11-21 Nec Corporation Method for operating a network
US9471388B2 (en) 2013-03-14 2016-10-18 Altera Corporation Mapping network applications to a hybrid programmable many-core device
US9086813B2 (en) 2013-03-15 2015-07-21 Qualcomm Incorporated Method and apparatus to save and restore system memory management unit (MMU) contexts
EP2796987A1 (en) 2013-04-26 2014-10-29 EM Microelectronic-Marin SA Random number generator
US9069602B2 (en) 2013-09-25 2015-06-30 Netronome Systems, Incorporated Transactional memory that supports put and get ring commands
FR3011659B1 (fr) 2013-10-04 2015-10-16 Commissariat Energie Atomique Circuit electronique, notamment apte a l'implementation d'un reseau de neurones, et systeme neuronal
US9924490B2 (en) 2013-10-09 2018-03-20 International Business Machines Corporation Scaling multi-core neurosynaptic networks across chip boundaries
US9563599B2 (en) 2013-11-04 2017-02-07 Lewis Rhodes Labs, Inc. Computing architecture for operating on sequential data
US10044612B2 (en) 2013-11-06 2018-08-07 Citrix Systems, Inc. Systems and methods for port allocation
US9699079B2 (en) 2013-12-30 2017-07-04 Netspeed Systems Streaming bridge design with host interfaces and network on chip (NoC) layers
US9614745B2 (en) 2014-01-09 2017-04-04 Citrix Systems, Inc. Systems and methods for cloud-based probing and diagnostics
WO2015126495A2 (en) 2014-02-20 2015-08-27 Stillwater Supercomputing, Inc. Execution engine for executing single assignment programs with affine dependencies
US9348557B1 (en) 2014-02-21 2016-05-24 Altera Corporation Fused floating point datapath with correct rounding
US20150242741A1 (en) 2014-02-21 2015-08-27 Qualcomm Incorporated In situ neural network co-processing
US10282465B2 (en) 2014-02-25 2019-05-07 Intel Corporation Systems, apparatuses, and methods for deep learning of feature detectors with sparse coding
US10650301B2 (en) 2014-05-08 2020-05-12 International Business Machines Corporation Utilizing a distributed and parallel set of neurosynaptic core circuits for neuronal computation and non-neuronal computation
US20150324690A1 (en) * 2014-05-08 2015-11-12 Microsoft Corporation Deep Learning Training System
US9330433B2 (en) 2014-06-30 2016-05-03 Intel Corporation Data distribution fabric in scalable GPUs
US9785565B2 (en) 2014-06-30 2017-10-10 Microunity Systems Engineering, Inc. System and methods for expandably wide processor instructions
US20160019061A1 (en) 2014-07-21 2016-01-21 Qualcomm Incorporated MANAGING DATAFLOW EXECUTION OF LOOP INSTRUCTIONS BY OUT-OF-ORDER PROCESSORS (OOPs), AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA
US10528682B2 (en) 2014-09-04 2020-01-07 Netspeed Systems Automatic performance characterization of a network-on-chip (NOC) interconnect
US10120716B2 (en) 2014-10-02 2018-11-06 International Business Machines Corporation Task pooling and work affinity in data processing
EP3035204B1 (en) 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
US9961019B2 (en) 2014-12-22 2018-05-01 Intel Corporation Adaptively switched network-on-chip
GB2546603B (en) 2015-01-16 2019-05-08 Imagination Tech Ltd Arbiter verification
US9568960B2 (en) 2015-02-20 2017-02-14 International Business Machines Corporation Supercomputer using wafer scale integration
US9747218B2 (en) 2015-03-20 2017-08-29 Mill Computing, Inc. CPU security mechanisms employing thread-specific protection domains
US9729460B2 (en) 2015-04-13 2017-08-08 Arista Networks, Inc. Method and system for managing port bandwidth in network devices
FR3035243B1 (fr) 2015-04-20 2018-06-29 Commissariat A L'energie Atomique Et Aux Energies Alternatives Placement d'une tache de calcul sur un processeur fonctionnellement asymetrique
US10346170B2 (en) 2015-05-05 2019-07-09 Intel Corporation Performing partial register write operations in a processor
IL238690B (en) 2015-05-07 2019-07-31 Mellanox Technologies Ltd Network-based computational accelerator
US10262259B2 (en) 2015-05-08 2019-04-16 Qualcomm Incorporated Bit width selection for fixed point neural networks
US10192162B2 (en) 2015-05-21 2019-01-29 Google Llc Vector computation unit in a neural network processor
US10140572B2 (en) 2015-06-25 2018-11-27 Microsoft Technology Licensing, Llc Memory bandwidth management for deep learning applications
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US10540588B2 (en) * 2015-06-29 2020-01-21 Microsoft Technology Licensing, Llc Deep neural network processing on hardware accelerators with stacked memory
US20160379109A1 (en) 2015-06-29 2016-12-29 Microsoft Technology Licensing, Llc Convolutional neural networks on hardware accelerators
US10452995B2 (en) 2015-06-29 2019-10-22 Microsoft Technology Licensing, Llc Machine learning classification on hardware accelerators with stacked memory
US11244225B2 (en) 2015-07-10 2022-02-08 Samsung Electronics Co., Ltd. Neural network processor configurable using macro instructions
US11126433B2 (en) 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US10936316B2 (en) 2015-09-19 2021-03-02 Microsoft Technology Licensing, Llc Dense read encoding for dataflow ISA
US10452399B2 (en) 2015-09-19 2019-10-22 Microsoft Technology Licensing, Llc Broadcast channel architectures for block-based processors
WO2017058966A1 (en) 2015-09-28 2017-04-06 Department 13, LLC Unmanned aerial vehicle intrusion detection and countermeasures
US10614354B2 (en) 2015-10-07 2020-04-07 Altera Corporation Method and apparatus for implementing layers on a convolutional neural network accelerator
US9817661B2 (en) 2015-10-07 2017-11-14 Arm Limited Floating point number rounding
US10353860B2 (en) 2015-10-08 2019-07-16 Via Alliance Semiconductor Co., Ltd. Neural network unit with neural processing units dynamically configurable to process multiple data sizes
US11165717B2 (en) 2015-10-26 2021-11-02 Western Digital Technologies, Inc. Fabric interconnection for memory banks based on network-on-chip methodology
US10489152B2 (en) 2016-01-28 2019-11-26 International Business Machines Corporation Stochastic rounding floating-point add instruction using entropy from a register
WO2017129325A1 (en) 2016-01-29 2017-08-03 Fotonation Limited A convolutional neural network
KR102420897B1 (ko) 2016-03-17 2022-07-18 에스케이하이닉스 주식회사 메모리 모듈, 이를 포함하는 메모리 시스템 및 그의 동작 방법
US10142258B2 (en) 2016-04-08 2018-11-27 Advanced Micro Devices, Inc. Methods and apparatus for processing in a network on chip (NOC)
US9910673B2 (en) 2016-04-19 2018-03-06 Xiaolin Wang Reconfigurable microprocessor hardware architecture
EP4236630A3 (en) 2016-04-22 2023-10-11 Nanogrid Limited.(HK) Systems and methods for connecting and controlling configurable lighting units
GB2549933B (en) 2016-04-27 2018-08-01 Imagination Tech Ltd Verification of hardware designs to implement floating point power functions
WO2017214728A1 (en) 2016-06-14 2017-12-21 The Governing Council Of The University Of Toronto Accelerator for deep neural networks
US10015072B2 (en) 2016-07-07 2018-07-03 Netscout Systems, Inc. Consolidation of network test automation tools
US10621486B2 (en) 2016-08-12 2020-04-14 Beijing Deephi Intelligent Technology Co., Ltd. Method for optimizing an artificial neural network (ANN)
US11064019B2 (en) 2016-09-14 2021-07-13 Advanced Micro Devices, Inc. Dynamic configuration of inter-chip and on-chip networks in cloud computing system
US10157059B2 (en) 2016-09-29 2018-12-18 Intel Corporation Instruction and logic for early underflow detection and rounder bypass
US10719762B2 (en) 2017-08-03 2020-07-21 Xcelsis Corporation Three dimensional chip structure implementing machine trained network
US10991675B2 (en) 2016-10-10 2021-04-27 Monolithic 3D Inc. 3D semiconductor device and structure
US10127043B2 (en) 2016-10-19 2018-11-13 Rex Computing, Inc. Implementing conflict-free instructions for concurrent operation on a processor
US10355975B2 (en) 2016-10-19 2019-07-16 Rex Computing, Inc. Latency guaranteed network on chip
US10700968B2 (en) 2016-10-19 2020-06-30 Rex Computing, Inc. Optimized function assignment in a multi-core processor
US10528321B2 (en) 2016-12-07 2020-01-07 Microsoft Technology Licensing, Llc Block floating point for neural network implementations
US10871964B2 (en) 2016-12-29 2020-12-22 Qualcomm Incorporated Architecture for sparse neural network acceleration
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10565492B2 (en) 2016-12-31 2020-02-18 Via Alliance Semiconductor Co., Ltd. Neural network unit with segmentable array width rotator
US20180189641A1 (en) 2017-01-04 2018-07-05 Stmicroelectronics S.R.L. Hardware accelerator engine
US10810492B2 (en) 2017-01-27 2020-10-20 Hewlett Packard Enterprise Development Lp Memory side acceleration for deep learning parameter updates
US10096134B2 (en) 2017-02-01 2018-10-09 Nvidia Corporation Data compaction and memory bandwidth reduction for sparse neural networks
US11934945B2 (en) 2017-02-23 2024-03-19 Cerebras Systems Inc. Accelerated deep learning
US10256198B2 (en) 2017-03-23 2019-04-09 Intel Corporation Warpage control for microelectronics packages
WO2018184208A1 (en) 2017-04-07 2018-10-11 Intel Corporation Methods and apparatus for deep learning network execution pipeline on multi-processor platform
US10637744B2 (en) 2017-04-12 2020-04-28 Battelle Memorial Institute Complementary workflows for identifying one-hop network behavior and multi-hop network dependencies
US11449574B2 (en) 2017-04-14 2022-09-20 Cerebras Systems Inc. Floating-point unit stochastic rounding for accelerated deep learning
EP3607503B1 (en) 2017-04-17 2022-03-09 Cerebras Systems Inc. Task activating for accelerated deep learning
JP6854473B2 (ja) 2017-04-17 2021-04-07 セレブラス システムズ インク. 加速化ディープラーニングのデータフロー・トリガー・タスク
US20180322386A1 (en) * 2017-05-05 2018-11-08 Intel Corporation Fine-grain compute communication execution for deep learning frameworks
US11488008B2 (en) * 2017-05-05 2022-11-01 Intel Corporation Hardware implemented point to point communication primitives for machine learning
CN113918481A (zh) 2017-07-30 2022-01-11 纽罗布拉德有限公司 一种存储器芯片
US10963780B2 (en) 2017-08-24 2021-03-30 Google Llc Yield improvements for three-dimensionally stacked neural network accelerators
KR102452953B1 (ko) 2017-10-30 2022-10-11 삼성전자주식회사 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
US20190205736A1 (en) * 2017-12-29 2019-07-04 Intel Corporation Compute optimization mechanism for deep neural networks
US11373088B2 (en) * 2017-12-30 2022-06-28 Intel Corporation Machine learning accelerator mechanism
US11769042B2 (en) 2018-02-08 2023-09-26 Western Digital Technologies, Inc. Reconfigurable systolic neural network engine
KR102555057B1 (ko) 2018-05-09 2023-07-12 에스케이하이닉스 주식회사 웨이트 매트릭스를 포맷하는 방법, 포맷된 데이터를 사용하는 가속기 및 이를 포함하는 시스템
US10289816B1 (en) 2018-06-08 2019-05-14 Gsfm Llc Methods, systems, and devices for an encrypted and obfuscated algorithm in a computing environment
US11062202B2 (en) 2018-07-25 2021-07-13 Cerebras Systems Inc. Numerical representation for neural networks
WO2020044152A1 (en) 2018-08-28 2020-03-05 Cerebras Systems Inc. Scaled compute fabric for accelerated deep learning
US11321087B2 (en) 2018-08-29 2022-05-03 Cerebras Systems Inc. ISA enhancements for accelerated deep learning
US11328208B2 (en) 2018-08-29 2022-05-10 Cerebras Systems Inc. Processor element redundancy for accelerated deep learning
US10802942B2 (en) 2018-12-28 2020-10-13 Intel Corporation Methods and apparatus to detect anomalies of a monitored system
US11360667B2 (en) 2019-09-09 2022-06-14 Stmicroelectronics S.R.L. Tagged memory operated at lower vmin in error tolerant system
WO2021084485A1 (en) 2019-10-30 2021-05-06 Cerebras Systems Inc. Placement of compute and memory for accelerated deep learning
WO2022034542A1 (en) 2020-08-14 2022-02-17 Cerebras Systems Inc. Weight sparsity techniques for accelerated deep learning

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06195322A (ja) * 1992-10-29 1994-07-15 Hitachi Ltd 汎用型ニューロコンピュータとして用いられる情報処理装置
US20080319933A1 (en) * 2006-12-08 2008-12-25 Medhat Moussa Architecture, system and method for artificial neural network implementation
WO2016037351A1 (en) * 2014-09-12 2016-03-17 Microsoft Corporation Computing system for training neural networks
US20160098629A1 (en) * 2014-10-01 2016-04-07 Thalchemy Corporation Efficient and scalable systems for calculating neural network connectivity in an event-driven way
US20160275397A1 (en) * 2015-03-18 2016-09-22 Universitaet Zuerich Method and apparatus for event-based learning in neural network
US20160321542A1 (en) * 2015-04-28 2016-11-03 Qualcomm Incorporated Incorporating top-down information in deep neural networks via the bias term

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
田苗;林岚;张柏雯;吴水才;: "深度学习在神经影像中的应用研究", 中国医疗设备, no. 12 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117273115A (zh) * 2023-11-24 2023-12-22 上海燧原科技有限公司 一种反向计算图的静态生成方法、装置、设备及介质
CN117273115B (zh) * 2023-11-24 2024-03-29 上海燧原科技股份有限公司 一种反向计算图的静态生成方法、装置、设备及介质

Also Published As

Publication number Publication date
CA3051990C (en) 2021-03-23
EP3563307B1 (en) 2023-04-12
KR102369209B1 (ko) 2022-02-28
US10699189B2 (en) 2020-06-30
CN110869946A (zh) 2020-03-06
EP3563307A4 (en) 2020-01-22
JP6832050B2 (ja) 2021-02-24
US11934945B2 (en) 2024-03-19
CA3108151C (en) 2024-02-20
EP3563307A1 (en) 2019-11-06
US11580394B2 (en) 2023-02-14
CA3051990A1 (en) 2018-08-30
CA3108151A1 (en) 2018-08-30
JP2020508532A (ja) 2020-03-19
CN110869946B (zh) 2021-05-11
US20210142167A1 (en) 2021-05-13
JP2021082317A (ja) 2021-05-27
CN113792847B (zh) 2024-03-08
KR20210014056A (ko) 2021-02-08
WO2018154494A1 (en) 2018-08-30
US20180314941A1 (en) 2018-11-01
US20200005142A1 (en) 2020-01-02

Similar Documents

Publication Publication Date Title
CN110869946B (zh) 加速的深度学习
EP3610612B1 (en) Dataflow triggered tasks for accelerated deep learning
EP3607506B1 (en) Fabric vectors for deep learning acceleration
WO2020021395A1 (en) Numerical representation for neural networks

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40068032

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant