加速的深度学习转让专利

申请号 : CN201880013504.3

文献号 : CN110869946B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 肖恩·利迈克尔·莫里森迈克尔·埃德温·詹姆斯加里·R·劳特巴赫斯里坎斯·阿雷卡普迪

申请人 : 大脑系统公司

摘要 :

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

权利要求 :

1.一种系统,包括:

处理器元件的结构,每个处理器元件包括结构路由器和计算引擎,所述计算引擎能够共同执行处理,所述处理包括基于数据流的处理和基于指令的处理;

其中,每个处理器元件选择性地与其他处理器元件传送结构分组;

其中,每个计算引擎根据所述计算引擎接收的所述结构分组中的至少一些的虚拟信道说明符和任务说明符选择性地执行所述处理,并且其中,所述基于数据流的处理是根据虚拟信道说明符的,所述基于指令的处理是根据所述任务说明符的,所述虚拟信道说明符部分地标识多个处理器元件之间的多个通信路径中的一个通信路径,所述任务说明符部分地标识用于获取能由一个或多个计算引擎执行的指令的起始地址。

2.根据权利要求1所述的系统,其中:每个计算引擎被配置为响应于接收到从预定义的本机指令代码集中选择的对应基本指令而执行预定义的基本操作集;并且所述系统还包括:训练工作负载,包括:

从本机指令集中选择的第一组机器代码,用于将神经元的至少一部分映射到所述处理器元件的所述计算引擎上,映射包括管理至少一个部分神经元权重,从所述本机指令集中选择的第二组机器代码,用于至少部分基于所述至少一个部分神经元权重来执行前向传递,以在前向逻辑方向上传播激活,所述前向传递响应于输入样本而启动,

从所述本机指令集中选择的第三组机器代码,用于在后向逻辑方向上执行增量传递以生成增量,所述增量传递响应于所述前向传递的完成而启动,从所述本机指令集中选择的第四组机器代码,用于执行链式传递,以基于所述增量计算梯度,以及

从所述本机指令集中选择的第五组机器代码,用于根据预定学习规则并至少部分基于所述增量来执行所述至少一个部分神经元权重的选择性更新;并且其中,每个计算引擎包括用于所述至少一个部分神经元权重的存储器。

3.根据权利要求2所述的系统,其中,所述映射是根据初始化所述结构以实现将神经网络划分成多层,所述神经元是所述神经网络的多个神经元中的第一神经元,所述第一神经元包括在所述多层的第一层中,并且所述多个神经元中的每一个以分布式方式映射在所述结构的多个处理器元件上。

4.根据权利要求3所述的系统,其中,所述多层作为包括逻辑结构管线级的逻辑结构管线操作,每个逻辑结构管线级包括完成每层的所有传递,每层的完成采取包括相同时间量的时间步长。

5.根据权利要求3所述的系统,其中,当训练集的每个输入样本流过所述多层上的至少第一多个处理器元件时,在所述多层上的所述第一多个处理器元件中选择性地更新神经元权重。

6.根据权利要求2所述的系统,其中,对共同包括训练集的多个输入样本中的每一个执行所述训练工作负载的迭代。

7.根据权利要求6所述的系统,其中,所述训练集被划分成多个所谓的小批量,并且所述预定学习规则指定在完成每个小批量的每个输入样本的所有传递之后更新所述至少一个部分神经元权重。

8.根据权利要求7所述的系统,其中,所述前向传递包含第一多个处理器元件内的权重更新,同时所述小批量的学习在所述第一多个处理器元件内进行。

9.根据权利要求6所述的系统,其中,对于每个输入样本,所述系统能够响应于对应于所述输入样本的前向传递、增量传递和链式传递的完成,根据所述预定学习规则选择性地更新所述至少一个部分神经元权重。

10.根据权利要求9所述的系统,其中,对于每个前向传递,所述系统能够使用由所述至少一个部分神经元权重的最近选择性更新提供的权重信息。

11.根据权利要求10所述的系统,其中,所述系统能够至少部分基于至少部分基于第一部分神经元权重所重新计算的激活,对每个输入样本执行所述增量传递和所述链式传递。

12.一种方法,包括:

在处理器元件的每一个结构中,选择性地与其他处理器元件传送结构分组,每个处理器元件包括结构路由器和计算引擎,所述计算引擎能够共同执行处理,所述处理包括基于数据流的处理和基于指令的处理;

在每个计算引擎中,根据所述计算引擎接收的所述结构分组中的至少一些的虚拟信道说明符和任务说明符来选择性地执行处理,并且其中,所述基于数据流的处理是根据虚拟信道说明符的,所述基于指令的处理是根据所述任务说明符的,所述虚拟信道说明符部分地标识多个处理器元件之间的多个通信路径中的一个通信路径,所述任务说明符部分地标识用于获取能由一个或多个计算引擎执行的指令的起始地址。

13.根据权利要求12所述的方法,其中:每个计算引擎被配置为响应于接收到从预定义的本机指令代码集中选择的对应基本指令,执行预定义的基本操作集;并且还包括:处理训练工作负载,所述训练工作负载包括:从本机指令集中选择的第一组机器代码,用于将神经元的至少一部分映射到所述处理器元件的所述计算引擎上,映射包括管理至少一个部分神经元权重,从所述本机指令集中选择的第二组机器代码,用于至少部分基于所述至少一个部分神经元权重来执行前向传递,以在前向逻辑方向上传播激活,所述前向传递响应于输入样本而启动,

从所述本机指令集中选择的第三组机器代码,用于在后向逻辑方向上执行增量传递以生成增量,所述增量传递响应于所述前向传递的完成而启动,从所述本机指令集中选择的第四组机器代码,用于执行链式传递,以基于所述增量计算梯度,以及

从所述本机指令集中选择的第五组机器代码,用于根据预定学习规则并至少部分基于所述增量来执行所述至少一个部分神经元权重的选择性更新;并且其中,每个计算引擎包括用于所述至少一个部分神经元权重的存储器。

14.根据权利要求13所述的方法,其中,所述映射是根据初始化所述结构以实现将神经网络划分成多层,所述神经元是所述神经网络的多个神经元中的第一神经元,所述第一神经元包括在所述多层的第一层中,并且所述多个神经元中的每一个以分布式方式映射在所述结构的多个处理器元件上。

15.根据权利要求14所述的方法,其中,所述多层作为包括逻辑结构管线级的逻辑结构管线操作,每个逻辑结构管线级包括完成每层的所有传递,每层的完成采取包括相同时间量的时间步长。

16.根据权利要求14所述的方法,其中,当训练集的每个输入样本流过所述多层上的至少第一多个处理器元件时,在所述多层上的所述第一多个处理器元件中选择性地更新神经元权重。

17.根据权利要求13所述的方法,还包括对共同包括训练集的多个输入样本中的每一个执行所述训练工作负载的迭代。

18.根据权利要求17所述的方法,还包括将所述训练集划分成多个所谓的小批量,并且所述预定学习规则指定在完成每个小批量的每个输入样本的所有传递之后更新所述至少一个部分神经元权重。

19.根据权利要求18所述的方法,其中,所述前向传递包含第一多个处理器元件内的权重更新,同时所述小批量的学习在所述第一多个处理器元件内进行。

20.根据权利要求17所述的方法,还包括对于每个输入样本,响应于对应于所述输入样本的前向传递、增量传递和链式传递的完成,根据所述预定学习规则选择性地更新所述至少一个部分神经元权重。

21.根据权利要求20所述的方法,还包括对于每个前向传递,选择性地使用由所述至少一个部分神经元权重的最近选择性更新提供的权重信息。

22.根据权利要求21所述的方法,还包括至少部分基于至少部分基于第一部分神经元权重所重新计算的激活,对每个输入样本选择性地执行所述增量传递和所述链式传递。

23.一种系统,包括:

在处理器元件的每一个结构中,选择性地与其他处理器元件传送结构分组的装置,每个处理器元件包括结构路由器和计算引擎,所述计算引擎能够共同执行处理,所述处理包括基于数据流的处理和基于指令的处理;

在每个计算引擎中,根据所述计算引擎接收的所述结构分组中的至少一些的虚拟信道说明符和任务说明符来选择性地执行所述处理的装置,并且其中,所述基于数据流的处理是根据虚拟信道说明符的,所述基于指令的处理是根据所述任务说明符的所述虚拟信道说明符部分地标识多个处理器元件之间的多个通信路径中的一个通信路径,所述任务说明符部分地标识用于获取能由一个或多个计算引擎执行的指令的起始地址。

24.根据权利要求23所述的系统,其中:每个计算引擎被配置为响应于接收到从预定义的本机指令代码集中选择的对应基本指令,执行预定义的基本操作集;并且所述系统还包括:训练工作负载,包括:

从本机指令集中选择的第一组机器代码,用于将神经元的至少一部分映射到处理器元件的计算引擎上,映射包括管理至少一个部分神经元权重,从所述本机指令集中选择的第二组机器代码,用于至少部分基于所述至少一个部分神经元权重来执行前向传递,以在前向逻辑方向上传播激活,所述前向传递响应于输入样本而启动,

从所述本机指令集中选择的第三组机器代码,用于在后向逻辑方向上执行增量传递以生成增量,所述增量传递响应于所述前向传递的完成而启动,从所述本机指令集中选择的第四组机器代码,用于执行链式传递,以基于所述增量计算梯度,以及

从所述本机指令集中选择的第五组机器代码,用于根据预定学习规则并至少部分基于所述增量来执行所述至少一个部分神经元权重的选择性更新;并且其中,每个计算引擎包括用于所述至少一个部分神经元权重的存储器。

25.根据权利要求24所述的系统,其中,所述映射是根据初始化所述结构以实现将神经网络划分成多层,所述神经元是所述神经网络的多个神经元中的第一神经元,所述第一神经元包括在所述多层的第一层中,并且所述多个神经元中的每一个以分布式方式映射在所述结构的多个处理器元件上。

26.根据权利要求25所述的系统,其中,所述多层作为包括逻辑结构管线级的逻辑结构管线操作,每个逻辑结构管线级包括完成每层的所有传递,每层的完成采取包括相同时间量的时间步长。

27.根据权利要求25所述的系统,其中,当训练集的每个输入样本流过所述多层上的至少第一多个处理器元件时,在所述多层上的所述第一多个处理器元件中选择性地更新神经元权重。

28.根据权利要求25所述的系统,其中,当训练集的每个输入样本流过所述多层上的至少第一多个处理器元件时,在所述多层上的所述第一多个处理器元件中选择性地更新神经元权重,并且流传输和更新针对多个时间步长中的每个时间步长进行。

29.根据权利要求26所述的系统,还包括用于在激活的前向传播正在进行时,响应于针对多个时间步长中的每个时间步长在第一多个处理器元件内的后向传播数据的变化,选择性地更新所述第一多个处理器元件内的至少一个部分神经元权重的装置。

30.根据权利要求26所述的系统,还包括用于在多个时间步长中的每个时间步长选择性地更新所述至少一个部分神经元权重的装置。

31.根据权利要求27、28、29或30所述的系统,其中,选择性地更新符合连续传播梯度下降过程。

32.根据权利要求24所述的系统,还包括用于对共同包括训练集的多个输入样本中的每一个执行所述训练工作负载的迭代的装置。

33.根据权利要求32所述的系统,还包括用于将所述训练集划分成多个所谓的小批量的装置,并且所述预定学习规则指定在完成每个小批量的每个输入样本的所有传递之后更新所述至少一个部分神经元权重。

34.根据权利要求33所述的系统,其中,所述预定学习规则符合连续传播梯度下降过程。

35.根据权利要求33所述的系统,其中,所述前向传递包含第一多个处理器元件内的权重更新,同时所述小批量的学习在所述第一多个处理器元件内进行。

36.根据权利要求24所述的系统,其中,所述存储器包含在所述计算引擎本地的内存中。

37.根据权利要求24所述的系统,其中,每个计算引擎还包括用于梯度累积、前向部分和、增量部分和以及前向传递激活的存储器。

38.根据权利要求32所述的系统,还包括对于每个输入样本,响应于对应于所述输入样本的前向传递、增量传递和链式传递的完成,根据所述预定学习规则选择性地更新所述至少一个部分神经元权重的装置。

39.根据权利要求38所述的系统,其中,所述预定学习规则符合连续传播梯度下降过程。

40.根据权利要求38所述的系统,还包括对于每个前向传递,使用由所述至少一个部分神经元权重的最近选择性更新提供的权重信息的装置。

41.根据权利要求40所述的系统,还包括与是否已经发生与所述训练工作负载的先前迭代相对应的所述至少一个部分神经元权重的选择性更新无关的用于启动所述训练工作负载的特定迭代的前向传递的装置。

42.根据权利要求40所述的系统,还包括与所述训练工作负载的先前迭代的所述增量传递是否已经开始无关的用于选择性地启动所述训练工作负载的特定迭代的前向传递的装置。

43.根据权利要求40所述的系统,还包括,在至少一个所述计算引擎中,用于在为所述训练工作负载的先前迭代执行前向传递的至少一部分之后并且在执行与所述训练工作负载的所述先前迭代相对应的所述至少一个部分神经元权重的选择性更新的一部分之前,为所述训练工作负载的后续迭代执行前向传递的至少一部分的装置。

44.根据权利要求40所述的系统,还包括用于至少部分基于至少部分基于第一部分神经元权重所重新计算的激活,对每个输入样本选择性地执行所述增量传递和所述链式传递的装置。

45.根据权利要求44所述的系统,其中,所述第一部分神经元权重是由所述最近选择性更新产生的部分神经元权重。

46.根据权利要求45所述的系统,其中,重新计算的激活不需要存储在计算之间,从而减少给定系统训练配置所需的总内存。

47.根据权利要求40所述的系统,还包括,在每个计算引擎中,用于至少部分基于至少部分基于第一部分神经元权重所重新计算的激活,对输入样本选择性地执行增量传递的部分和链式传递的部分的装置。

说明书 :

加速的深度学习

[0001] 相关申请的交叉引用
[0002] 在本申请类型允许的范围内,本申请实际上通过引用包含以下申请,这些申请在构成本发明时都与本申请共同拥有:
[0003] 2018年2月9日提交的、第一发明人名为Sean LIE并且题为“FABRIC VECTORS FOR DEEP LEARNING ACCELERATION”的美国临时申请序列号62/628,784(待审案件号CS‑17‑
05);
[0004] 2018年2月9日提交的、第一发明人名为Sean LIE并且题为“DATA STRUCTURE DESCRIPTORS FOR DEEP LEARNING ACCELERATION”的美国临时申请序列号62/628,773(待
审案件号CS‑17‑12);
[0005] 2017年11月1日提交的、第一发明人名为Sean LIE并且题为“NEURON SMEARING FOR ACCELERATED DEEP LEARNING”的美国临时申请序列号62/580,207(待审案件号CS‑17‑
01);
[0006] 2017年8月8日提交的、第一发明人名为Sean LIE并且题为“DATAFLOW TRIGGERED TASKS FOR ACCELERATED DEEP LEARNING”的美国临时申请序列号62/542,645(待审案件号
CS‑17‑02);
[0007] 2017年8月8日提交的、第一发明人名为Sean  LIE并且题为“TASK SYNCHRONIZATION FOR ACCELERATED DEEP LEARNING”的美国临时申请序列号62/542,657
(待审案件号CS‑17‑06);
[0008] 2017年6月19日提交的、第一发明人名为Sean  LIE并且题为“WAVELET REPRESENTATION FOR ACCELERATED DEEP LEARNING”的美国临时申请序列号62/522,065
(待审案件号CS‑17‑03);
[0009] 2017年6月19日提交的、第一发明人名为Sean LIE并且题为“CONTROL WAVELET FOR ACCELERATED DEEP LEARNING”的美国临时申请序列号62/522,081(待审案件号CS‑17‑
04);
[0010] 2017年6月15日提交的、第一发明人名为Michael Edwin JAMES并且题为“INCREASED CONCURRENCY AND EFFICIENCY OF DEEP NETWORK TRAINING VIA CONTINUOUS 
PROPAGATION”的美国临时申请序列号62/520,433(待审案件号CS‑17‑13B);
[0011] 2017年6月11日提交的、第一发明人名为Sean LIE并且题为“ACCELERATED DEEP LEARNING”的美国临时申请序列号62/517,949(待审案件号CS‑17‑14B);
[0012] 2017年4月17日提交的、第一发明人名为Sean LIE并且题为“ACCELERATED DEEP LEARNING”的美国临时申请序列号62/486,372(待审案件号CS‑17‑14);以及
[0013] 2017年2月23日日提交的、第一发明人名为Michael Edwin JAMES并且题为“INCREASED CONCURRENCY AND EFFICIENCY OF DEEP NETWORK TRAINING VIA CONTINUOUS 
PROPAGATION”的美国临时申请序列号62/462,640(待审案件号CS‑17‑13)。

技术领域

[0014] 需要在加速的深度学习方面的进步,以提高精度、性能和能效中的一个或多个。

背景技术

[0015] 除非明确指出是公开的或众所周知的,否则在本文提及的技术和概念(包括用于上下文、定义或比较目的技术和概念)不应被解释为承认这些技术和概念先前是公开已知
的或以其他方式是现有技术的一部分。出于所有目的,在本文引用的所有参考文献(如果有
的话)(包括专利、专利申请和出版物)的全部内容实际上通过引入结合于此,无论其是否具
体引入。

发明内容

[0016] 本发明可以以多种方式实现,例如,作为过程、制品、设备、系统、物质组合物和计算机可读介质,例如,计算机可读存储介质(例如,光和/或磁大容量存储装置(例如,磁盘)
中的介质、具有非易失性存储器(例如,闪存)的集成电路)或者在其中通过光或电子通信链
路发送程序指令的计算机网络。具体实施方式提供了本发明的一个或多个实施方式的说
明,这些实施方式能够改善成本、盈利能力、性能、效率以及在上述领域中的使用效用。具体
实施方式包括引言,以便于理解具体实施方式的其余部分。引言包括根据本文描述的概念
的系统、方法、制品和计算机可读介质中的一个或多个的示例实施方式。如结论中更详细讨
论的,本发明包括在所发布的权利要求范围内的所有可能的修改和变化。

附图说明

[0017] 图1示出了使用深度学习加速器的神经网络训练和推理系统的实施方式的选定细节。
[0018] 图2示出了使用深度学习加速器的与神经网络训练和推理相关联的软件元件的实施方式的选定细节。
[0019] 图3示出了使用深度学习加速器的与训练神经网络和使用训练的神经网络执行推理相关联的处理的实施方式的选定细节。
[0020] 图4示出了深度学习加速器的实施方式的选定细节。
[0021] 图5示出了深度学习加速器的处理元件的实施方式的选定细节。
[0022] 图6示出了处理元件的路由器的实施方式的选定细节。
[0023] 图7示出了与处理元件的路由器相关联的处理的实施方式的选定细节。
[0024] 图8示出了处理元件的计算元件的实施方式的选定细节。
[0025] 图9示出了为任务启动处理小波的实施方式的选定细节。
[0026] 图10示出了与处理元件的计算元件相关联的指令处理的实施方式的选定细节。
[0027] 图11示出了经由收尾的与依赖性管理相关联的流程的实施方式的选定细节。
[0028] 图12示出了与激活累积和收尾相关联的流程的实施方式的选定细节,随后是部分和计算和收尾。
[0029] 图13A示出了稀疏小波的实施方式的选定细节。
[0030] 图13B示出了密集小波的实施方式的选定细节。
[0031] 图14示出了创建和传输小波的实施方式的选定细节。
[0032] 图15A示出了接收小波的实施方式的选定细节。
[0033] 图15B示出了消耗小波的实施方式的选定细节。
[0034] 图16示出了阻止指令和解除阻止指令执行的实施方式的选定细节。
[0035] 图17示出了神经网络的实施方式的选定细节。
[0036] 图18A示出了将处理元件分配给神经元的第一实施方式的选定细节。
[0037] 图18B示出了将处理元件分配给神经元的第二实施方式的选定细节。
[0038] 图19示出了在多个处理元件上涂抹神经元的实施方式的选定细节。
[0039] 图20示出了在分割的神经元的部分之间通信的实施方式的选定细节。
[0040] 图21A示出了结构输入数据结构描述符的实施方式的选定细节。
[0041] 图21B示出了结构输出数据结构描述符的实施方式的选定细节。
[0042] 图21C示出了1D内存矢量数据结构描述符的实施方式的选定细节。
[0043] 图21D示出了4D内存矢量数据结构描述符的实施方式的选定细节。
[0044] 图21E示出了循环内存缓冲器数据结构描述符的实施方式的选定细节。
[0045] 图22A示出了循环内存缓冲器扩展数据结构描述符的实施方式的选定细节。
[0046] 图22B示出了4D内存矢量扩展数据结构描述符的实施方式的选定细节。
[0047] 图23示出了根据数据结构描述符访问操作数的选定细节。
[0048] 图24示出了解码数据结构描述符的实施方式的选定细节。
[0049] 图25A示出了多操作数指令的实施方式的选定细节。
[0050] 图25B示出了一源无目的地操作数指令的实施方式的选定细节。
[0051] 图25C示出了即时指令的实施方式的选定细节。
[0052] 图26A示出了随机梯度下降(SGD)的管线流程的实施方式。
[0053] 图26B示出了用于小批量梯度下降(MBGD)的管线流程的实施方式。
[0054] 图26C示出了用于连续传播梯度下降(CPGD)的管线流程的实施方式。
[0055] 图26D示出了具有反向检查点(RCP)的连续传播梯度下降(CPGD)的管线流程的实施方式。
[0056] 图27A至图27E示出了根据SGD、MBGD、CPGD和RCP处理的前向传递和后向传递实施方式的各个方面。
[0057] 图28A示出了矩阵(m)乘以矢量(v)的一般操作。
[0058] 图28B示出了在前向传递、增量传递和链式传递中使用的内存结构的各种表示。
[0059] 图29示出了在前向传递状态机中使用的任务的实施方式。
[0060] 图中的附图标记列表
[0061]
[0062]
[0063]
[0064]
[0065]
[0066]
[0067]
[0068]
[0069]
[0070]
[0071]
[0072]
[0073]
[0074]
[0075]
[0076]
[0077]
[0078]
[0079]
[0080]

具体实施方式

[0081] 下面提供了本发明的一个或多个实施方式的详细描述以及示出本发明的选定细节的附图。结合实施方式描述本发明。本文的实施方式被理解为仅仅是示例性的,本发明明
确地不限于本文的任何或所有实施方式,并且本发明包括许多替换、修改和等同物。为了避
免阐述中的单调,可以将各种单词标签(例如:第一、最后、某些、各种、进一步、其他、特定、
精选、一些和值得注意的)应用于不同的实施方式集合;如此处所使用的,这种标签显然不
意味着传达质量或任何形式的偏好或偏见,而仅仅是为了方便地在不同的集合之间进行区
分。所公开的过程的一些操作的顺序在本发明的范围内是可变的。在多个实施方式用于描
述过程、系统和/或程序指令特征的变化的任何地方,可以设想根据预定或动态确定的标准
执行分别对应于多个实施方式的多个操作模式中的一个的静态和/或动态选择的其他实施
方式。在以下描述中阐述了许多具体细节,以提供对本发明的透彻理解。提供细节是为了举
例的目的,并且本发明可以根据权利要求来实施,而没有一些或全部细节。为了清楚起见,
没有详细描述与本发明相关的技术领域中已知的技术材料,从而不会不必要地模糊本发
明。
[0082] 引言
[0083] 包含该引言,只是为了便于更快地理解具体实施方式;本发明不限于引言中提出的概念(包括明确的示例,如果有的话),因为任何引言的段落都必须是整个主题的简略视
图,并且不意味着是详尽的或限制性的描述。例如,下面的引言仅向某些实施方式提供了受
空间和组织限制的概述信息。在说明书的其余部分,还讨论了许多其他实施方式,包括权利
要求最终将引用的那些实施方式。
[0084] 在概念上与加速的深度学习的连续传播相关的一个方面,高级深度学习中的技术提高了精度、性能和能效中的一个或多个,例如,学习精度、预测精度、学习速度、学习性能
和学习能效。处理元件阵列对小波数据执行基于流的计算。每个处理元件具有相应的计算
元件和相应的路由元件。每个计算元件都有处理资源和存储资源。每个路由器都能够经由
小波与2D网格中至少最近的邻居进行通信。随机梯度下降、小批量梯度下降和连续传播梯
度下降是可用于训练由处理元件建模的神经网络的权重的技术。反向检查点可用于减少训
练期间的内存使用
[0085] 在概念上与用于加速的深度学习的结构矢量相关的一个方面,高级深度学习中的技术提高了精度、性能和能效中的一个或多个。处理元件阵列对小波数据执行基于流的计
算。每个处理元件具有相应的计算元件和相应的路由元件。每个计算元件都有内存。每个路
由器都能够经由小波与2D网格中至少最近的邻居进行通信。由每个小波中相应的虚拟信道
说明符和每个路由器中的路由配置信息控制路由。由计算元件执行的指令包括一个或多个
操作数说明符,其中一些操作数说明符指定存储数据结构描述符的数据结构寄存器。数据
结构描述符将操作数描述为结构矢量或内存矢量。数据结构描述符还描述了结构矢量的长
度、结构矢量是否适合微线程以及并行接收、传输和/或处理的结构矢量的多个数据元素。
数据结构描述符还指定与处理结构矢量相关的虚拟信道和任务识别信息,是否在接收到控
制小波时终止以及是否将输出小波标记为控制小波。
[0086] 在概念上与用于加速的深度学习的数据结构描述符相关的一个方面,高级深度学习中的技术提高了精度、性能和能效中的一个或多个。处理元件阵列对小波数据执行基于
流的计算。每个处理元件具有相应的计算元件和相应的路由元件。每个计算元件都有内存。
每个路由器都能够经由小波与2D网格中至少最近的邻居进行通信。由每个小波中相应的虚
拟信道说明符和每个路由器中的路由配置信息控制路由。由计算元件执行的指令包括一个
或多个操作数说明符,其中一些操作数说明符指定存储数据结构描述符的数据结构寄存
器。数据结构描述符将操作数描述为结构矢量或内存矢量。数据结构描述符将操作数描述
为结构矢量或内存矢量。数据结构描述符还将内存矢量描述为一维矢量、四维矢量或循环
缓冲器矢量中的一个。可选地,数据结构描述符指定存储扩展数据结构描述符的扩展数据
结构寄存器。扩展数据结构描述符指定与四维矢量或循环缓冲器矢量相关的参数。
[0087] 在概念上与用于加速的深度学习的神经元涂抹相关的一个方面,高级深度学习中的技术提高了精度、性能和能效中的一个或多个。处理元件阵列对小波数据执行基于流的
计算。每个处理元件具有相应的计算元件和相应的路由元件。每个计算元件都有内存。每个
路由器都能够经由小波与2D网格中至少最近的邻居进行通信。由每个小波中相应的虚拟信
道说明符和每个路由器中的路由配置信息控制路由。使用多个处理元件阵列的资源来实现
至少第一单个神经元。使用多个处理元件中的一个或多个的资源来实现第二神经元的至少
一部分。在一些使用场景中,前述神经元实现方式通过使单个神经元能够使用多个处理元
件的计算资源和/或处理元件上的计算负载平衡,能够实现更高的性能,同时保持处理元件
的传入激活的局部性。
[0088] 在概念上与加速的深度学习的任务同步相关的一个方面,高级深度学习中的技术提高了精度、性能和能效中的一个或多个。处理元件阵列对小波数据执行基于流的计算。每
个处理元件具有相应的计算元件和相应的路由元件。每个计算元件都有内存。每个路由器
都能够经由小波与2D网格中至少最近的邻居进行通信。由每个小波中相应的虚拟信道说明
符和每个路由器中的路由配置信息控制路由。特定一个计算元件有条件地选择指定特定一
个虚拟信道的先前接收的小波,用于任务启动。条件选择排除先前接收的小波,用于选择,
直到为特定虚拟信道保持的至少阻止/解除阻止状态处于解除阻止状态。计算元件执行阻
止/解除阻止指令来修改阻止/解除阻止状态。
[0089] 在概念上与数据流触发的加速的深度学习任务相关的一个方面,高级深度学习中的技术提高了精度、性能和能效中的一个或多个。处理元件阵列对小波数据执行基于流的
计算。每个处理元件具有相应的计算元件和相应的路由元件。每个计算元件都有内存。每个
路由器都能够经由小波与2D网格中至少最近的邻居进行通信。由每个小波中相应的虚拟信
道说明符和每个路由器中的路由配置信息控制路由。特定一个计算元件接收包括特定虚拟
信道说明符和特定数据元素的特定小波。至少部分基于特定虚拟信道说明符,从特定计算
元件的内存中读取指令。特定数据元素用作输入操作数,以执行至少一条指令。
[0090] 在概念上与用于加速的深度学习的控制小波相关的一个方面,高级深度学习中的技术提高了精度、性能和能效中的一个或多个。处理元件阵列对小波数据执行基于流的计
算。每个处理元件具有相应的计算元件和相应的路由元件。每个计算元件都有内存。每个路
由器都能够经由小波与2D网格中至少最近的邻居进行通信。特定一个计算元件接收小波。
如果小波的控制说明符是第一值,则根据小波的索引说明符从特定计算元件的内存中读取
指令。如果控制说明符是第二值,则根据小波的虚拟信道说明符从特定计算元件的内存中
读取指令。然后,特定计算元件初始化指令的执行。
[0091] 在概念上与用于加速的深度学习的小波表示相关的一个方面,高级深度学习中的技术提高了精度、性能和能效中的一个或多个。处理元件阵列对小波数据执行基于流的计
算。每个处理元件具有相应的计算元件和相应的路由元件。每个计算元件都有专用存储器。
每个路由器都能够与2D网格中至少最近的邻居进行通信。根据包括索引说明符、虚拟信道
说明符、索引说明符、数据元素说明符和可选控制/数据说明符的表示,经由小波进行通信。
虚拟信道说明符和索引说明符与一个或多个指令相关联。索引说明符与一个或多个指令的
至少第一指令操作数相关联。数据元素与一个或多个指令的至少第二指令操作数相关联。
[0092] 加速的深度学习的第一示例是使用深度学习加速器来训练神经网络。加速的深度学习的第二示例是使用深度学习加速器操作训练的神经网络,来执行推理。加速的深度学
习的第三示例是使用深度学习加速器来训练神经网络,并且随后利用训练的神经网络、来
自该神经网络的信息以及该神经网络的变体中的任何一个或多个来执行推理。
[0093] 神经网络的示例包括全连接神经网络(FCNN)、递归神经网络(RNN)、卷积神经网络(CNN)、长短期记忆(LSTM)网络、自动编码器、深层信念网络和生成对抗网络。
[0094] 训练神经网络的一个示例是确定与神经网络相关联的一个或多个权重,例如,通过经由深度学习加速器的硬件加速。进行推理的一个示例是使用训练的神经网络通过基于
与训练的神经网络相关联的权重处理输入数据来计算结果。
[0095] 神经网络根据包括神经元层的数据流图处理数据。刺激(例如,输入数据)由神经元的输入层接收,并且数据流图的计算结果(例如,输出数据)由神经元的输出层提供。神经
元的示例层包括输入层、输出层、整流线性单元层、完全连接层、递归层、长短期记忆层、卷
积层、核心层、脱落层和汇集层。神经网络有条件地和/或选择性训练,经受硬件加速。在训
练之后,神经网络有条件地和/或选择性地用于推理,经受硬件加速。
[0096] 深度学习加速器的一个示例是一个或多个相对专用的硬件元件,其与一个或多个软件元件结合操作,以比使用相对不太专用的硬件元件相对更有效地训练神经网络和/或
利用神经网络执行推理。相对专用的硬件元件的一些实现方式包括一个或多个硬件逻辑电
路元件,例如,晶体管、电阻器、电感器、电容器、线互连、组合逻辑(例如,NAND、NOR)、锁存
器、寄存器文件、内存阵列、用于内存阵列的标签、内容可寻址存储器、闪存、ROM、DRAM、
SRAM、串行器/解串行器(SerDe)、I/O驱动程序等,例如,经由定制逻辑、合成逻辑、ASIC和/
或FPGA实现的。一些相对不太专业的硬件元件包括常规CPU和常规GPU。
[0097] 深度学习加速器的示例实现方式能够根据为训练神经网络而执行的计算来处理数据流和/或用神经网络执行推理。一些深度学习加速器包括经由结构耦合的并能够经由
结构相互通信的处理元件。有时,处理元件和结构统称为处理元件的结构。
[0098] 处理元件的示例实现方式能够通信和处理小波。在各种情况下,根据通信和/或处理,小波对应于数据流和/或指令流,使得能够使用神经网络为训练和/或推理执行计算。
[0099] 示例处理元件包括经由结构传送小波的路由器和处理小波的计算元件。示例路由器耦合到多个元件:结构、到计算元件的出口匝道和来自计算元件的入口匝道。路由器和结
构之间的示例耦合使得路由器和例如四个逻辑上和/或物理上相邻的处理元件之间能够通
信。路由器从结构和入口匝道以不同的方式接收小波。路由器以不同的方式将小波传输到
结构和出口匝道。
[0100] 计算元件的示例实现方式能够通过启动任务和执行与小波相关联的指令以及访问与小波和/或指令相关联的数据来处理小波。指令符合指令集架构,该指令集架构包括算
术指令、控制流指令、数据类型转换指令、配置指令、结构管理指令和加载/存储指令。指令
对包括各种数据类型(例如,各种宽度的整数数据类型和浮点数据类型)的操作数进行操
作。操作数包括标量操作数和矢量操作数。在各种实施方式和/或使用场景中,矢量不同地
表示神经网络的权重、神经网络的输入或刺激、神经网络的激活和/或神经网络的部分和。
在某些情况下,矢量是稀疏矢量(例如,神经元激活的矢量),并且包括稀疏数据元素(例如,
仅非零元素)。在一些其他场景中,矢量是密集矢量(例如,像素值),并且包括密集数据元素
(例如,矢量的所有元件,包括零元素)。
[0101] 示例计算元件包括硬件元件,这些硬件元件通过执行由指令指定的操作(例如,算术操作、控制流操作和加载/存储操作)来共同执行与小波相关联的指令。硬件元件的示例
包括选择器队列、选择器、任务定义表、指令序列发生器、指令解码器、数据序列发生器、寄
存器文件、存储器、伪随机数生成器和ALU。硬件元件的一些实现方式符合本文别处描述的
硬件逻辑电路元件。有时,计算元件被称为计算引擎。有时,计算调度器被称为选择器,而计
算调度器队列被称为选择器队列。
[0102] 示例结构是处理元件之间和/或单个处理元件内的逻辑和/或物理耦合的集合。该结构可用于实现逻辑和/或物理通信拓扑,例如,网格、2D网格、3D网格、超立方体、圆环、环、
树或其任意组合。处理元件之间的物理耦合的示例是物理耦合的处理元件之间的一组物理
互连(包括可选和/或选择性缓冲)。物理耦合的处理元件的第一示例是直接物理相邻的处
理元件,例如,直接位于第二处理元件旁边(例如“北”、“南”、“东”或“西”)的第一处理元件。
物理耦合的处理元件的第二示例是相对物理上邻近的处理元件,例如,位于相对少量的中
间处理元件内的第一处理元件,例如,远离第二处理元件的一或两“行”和/或“列”。物理耦
合的处理元件的第三示例是相对物理上远离的处理元件,例如,物理上相对远离第二处理
元件的第一处理元件,例如,在与处理元件相关联的时钟周期和/或时钟子周期内由信号传
播(具有或不具有可选和/或选择性缓冲)限制的距离。单个处理元件(具有例如计算元件和
路由器)内的物理耦合的示例是从计算元件到路由器耦合输出信息的入口匝道以及从路由
器到计算元件耦合输入信息的出口匝道。在某些情况下,路由器会将信息从入口匝道路由
到出口匝道。
[0103] 处理元件之间的逻辑耦合的一个示例是由处理元件内的路由器实现的虚拟信道。第一处理元件和第二处理元件之间的路由例如由处理元件内的路由器根据虚拟信道和路
由配置信息沿着路由转发来实现。单个特定处理元件(具有例如路由器)内的逻辑耦合的示
例是由路由器实现的虚拟信道,使得特定处理元件能够经由虚拟信道向特定处理元件发送
信息。路由器根据虚拟信道和路由配置信息相对于特定处理元件“内部”转发。
[0104] 示例小波是经由结构在处理元件之间传递的一束信息。示例小波包括小波有效载荷和颜色。小波有效载荷包括数据并与指令相关联。对由处理元件的计算元件接收的小波
的第一响应包括计算元件发起任务,例如,对应于与小波相关联的指令的处理。对由处理元
件的计算元件接收的小波的第二响应包括计算元件处理小波的数据。小波的示例类型包括
密集小波和稀疏小波以及数据小波和控制小波。
[0105] 例如,小波用于处理元件之间的通信。在第一种情况下,第一处理元件将小波传输到第二处理元件。在第二种情况下,外部装置(例如,FPGA)向处理元件传输小波。在第三种
情况下,处理元件向外部装置(例如,FPGA)传输小波。
[0106] 示例虚拟信道是由颜色指定的并由例如结构和一个或多个路由器启用的一个或多个通信路径。包含特定颜色的小波有时称为与特定颜色相关联的特定虚拟信道相关联。
颜色的第一示例是指定两个不同处理元件之间的虚拟信道的结构颜色。在一些实施方式
中,结构颜色是5位整数。颜色的第二示例是指定从处理元件到处理元件的虚拟信道的本地
颜色。在一些实施方式中,颜色是6位整数,并且指定结构颜色和本地颜色中的一个。
[0107] 示例任务包括响应小波执行的指令集合。示例指令包括操作和可选的一个或多个操作数,该操作数指定了根据该操作要处理的数据元素的位置。操作数的第一示例指定存
储器中的数据元素。操作数的第二示例指定经由结构传送(例如,接收或传输)的数据元素。
数据序列发生器的一个示例确定数据元素的位置。指令序列发生器的一个示例确定与小波
相关联的指令在存储器中的地址。
[0108] 示例选择器队列能够保存经由结构的出口匝道接收的小波,以便在计算元件中处理。选择器的一个示例从选择器队列中选择小波进行处理。
[0109] 集成电路(IC)的一个示例是在半导体材料的单个部分上实现的电路的集合。专用集成电路(ASIC)的一个示例是为特定用途设计的IC。晶片级集成的一个示例是例如通过使
晶片完整或基本完整,而使用晶片的全部或大部分作为系统的元件来实现系统。
[0110] 在一些实施方式和/或使用场景中,晶片级集成使得能够经由使用硅制造工艺而不是经由芯片间互连形成的晶片互连来连接系统中的多个元件,并且因此提高了性能、成
本、可靠性和能效中的任何一个或多个。作为一个具体的示例,使用晶片级集成技术实现的
系统能够在单个晶片上实现300万个PE,每个PE与最近的物理邻居的带宽大于使用晶片级
集成技术之外的其他技术的可比系统。较大的带宽使得使用晶片级集成技术实现的系统能
够相对于使用晶片级集成技术之外的其他技术实现的系统,相对有效地训练和/或执行针
对较大神经网络的推理。
[0111] 首字母缩略词
[0112] 此处定义的各种简写缩写(例如,首字母缩略词)中的至少一些是指本文使用的某些元件。
[0113]
[0114]
[0115] 示例实施方式
[0116] 在结束详细描述的引言时,下面是示例实施方式的集合,包括至少一些明确列举为“EC”(示例组合),根据本文描述的概念提供各种实施方式类型的额外描述;这些示例并
不意味着相互排斥、穷尽或限制;并且本发明不限于这些示例实施方式,而是包括在所发布
的权利要求及其等同物的范围内的所有可能的修改和变化。
[0117] EC100)一种系统,包括:
[0118] 处理器元件的结构,每个处理器元件包括结构路由器和计算引擎,计算引擎能够执行基于数据流和基于指令的处理;
[0119] 其中,每个处理器元件选择性地与其他处理器元件传送结构分组;并且
[0120] 其中,每个计算引擎根据该计算引擎接收的每个结构分组的虚拟信道说明符和任务说明符来选择性地执行处理。
[0121] EC100b)一种系统,包括:
[0122] 处理器元件的结构,每个处理器元件包括结构路由器和计算引擎;
[0123] 其中,每个处理器元件选择性地与其他处理器元件传送结构分组;并且
[0124] 其中,每个计算引擎分别根据计算引擎接收的每个结构分组的数据流字段和指令字段选择性地执行数据流处理和指令处理。
[0125] EC100c)根据EC100所述的系统,其中,处理是根据数据流图的。
[0126] EC100d)根据EC100所述的系统,其中,执行工作负载,主要包括基于数据流的处理以及最小的基于指令的处理。
[0127] EC100e)根据EC100d所述的系统,其中,系统实现了长短期记忆(LSTM)神经网络模型。
[0128] EC100f)根据EC100所述的系统,其中,执行工作负载,主要包括基于指令的处理以及最小的基于数据流的处理。
[0129] EC100g)根据EC100所述的系统,其中,系统至少部分地使用晶片级集成来实现。
[0130] EC100h)根据EC100所述的系统,其中,处理器元件的结构至少部分地使用VLSI制造来实现。
[0131] EC101)根据EC100所述的系统,其中,虚拟信道说明符选择结构中独立的相应路由路径。
[0132] EC101b)根据EC100所述的系统,其中,虚拟信道说明符选择结构中的路由路径来执行多播。
[0133] EC101c)根据EC100所述的系统,其中,虚拟信道说明符选择结构中的路由路径来执行负载分割。
[0134] EC102)根据EC100所述的系统,其中,任务说明符选择一个或多个要执行的操作。
[0135] EC103)根据EC100所述的系统,其中,结构包括处理器元件的2D阵列。
[0136] EC103b)根据EC100所述的系统,其中,结构包括从由完全连接、星形、环形、阵列、网格、超立方体、圆环和树组成的组中选择的处理器元件互连拓扑。
[0137] EC103c)根据EC100所述的系统,其中,结构包括从由1D、2D、3D和大于3D的维度组成的组中选择的处理器元件互连拓扑维度。
[0138] EC104)根据EC100所述的系统,其中,系统能够执行机器学习工作负载。
[0139] EC105)根据EC100所述的系统,其中,训练系统来执行推理应用。
[0140] EC105b)根据EC100所述的系统,其中,系统执行推理应用。
[0141] EC106)根据EC100所述的系统,其中,系统实现深层神经网络,该网络被训练以执行对象分类和/或检测。
[0142] EC107)根据EC100所述的系统,其中,系统实现深层神经网络,该网络被训练以执行推理应用,推理应用选自文本翻译、光学字符识别、图像分类、面部识别、自动驾驶汽车的
场景识别、语音识别、高能物理的数据分析和药物发现。
[0143] EC108)根据EC100所述的系统,其中,结构被组织为多个外围处理器元件和多个内部处理器元件,并且每个内部处理器元件在至少四个逻辑方向上分别耦合到多个处理器元
件中的至少四个其他处理器元件。
[0144] EC109)根据EC100所述的系统,其中,每个计算引擎包括内存、数据路径以及混合数据流和指令执行控制器。
[0145] EC110)根据EC109所述的系统,其中,每个计算引擎根据具有多个计算引擎管线级的多级计算引擎管线操作。
[0146] EC111)根据EC109所述的系统,其中,指令执行控制器包括使用微码、PLA、一个或多个计数器和门级状态机中的一个或多个来实现的指令序列发生器。
[0147] EC112)根据EC109所述的系统,其中,每个计算引擎还包括寄存器文件、指令解码器、指令高速缓存和数据高速缓存。
[0148] EC112b)根据EC109所述的系统,其中,每个计算引擎还包括寄存器文件、指令解码器、指令缓冲器和数据缓冲器。
[0149] EC113)根据EC100所述的系统,其中:
[0150] 每个计算引擎被配置为响应于接收到从预定义的本机指令代码集中选择的对应基本指令,执行预定义的基本操作集;并且该系统还包括:
[0151] 训练工作负载,包括:
[0152] 从本机指令集中选择的第一组机器代码,用于将神经元的至少一部分映射到处理器元件的计算引擎上,映射包括管理至少一个部分神经元权重,
[0153] 从本机指令集中选择的第二组机器代码,用于至少部分基于至少一个部分神经元权重来执行前向传递,以在前向逻辑方向上传播激活,前向传递响应于输入样本而启动,
[0154] 从本机指令集中选择的第三组机器代码,用于在后向逻辑方向上执行增量传递以生成增量,增量传递响应于前向传递的完成而启动,
[0155] 从本机指令集中选择的第四组机器代码,用于执行链式传递,以基于增量计算梯度,以及
[0156] 从本机指令集中选择的第五组机器代码,用于根据预定学习规则并至少部分基于增量来执行至少一个部分神经元权重的选择性更新;并且
[0157] 其中,每个计算引擎包括用于至少一个部分神经元权重的存储器。
[0158] EC113a)根据EC113所述的系统,其中,根据结构分组的相应结构分组的任务说明符来执行每个基本指令。
[0159] EC113b)根据EC113所述的系统,其中,结构包括处理器元件的2D阵列,处理器元件包括第一、第二、第三和第四物理方向,第一和第二物理方向共线且相反,第三和第四物理
方向共线且相反,第一和第三物理方向正交,并且前向逻辑方向在第一物理方向上,后向逻
辑方向在第二物理方向上。
[0160] EC113c)根据EC113所述的系统,其中,训练工作负载还包括从本机指令集中选择的用于执行非线性激活函数的第六组机器代码。
[0161] EC113d)根据EC113c所述的系统,其中,非线性激活函数选自sigmoid、tanh和ReLU组成的组。
[0162] EC114)根据EC113所述的系统,其中,映射根据初始化结构,以实现将神经网络划分成多层,神经元是神经网络的多个神经元中的第一神经元,第一神经元包括在多层的第
一层中,并且多个神经元中的每一个以分布式方式映射在结构的多个处理器元件上。
[0163] EC115)根据EC114所述的系统,其中,映射根据训练集的每个输入样本,在相同的时间量内完成每层的所有传递。
[0164] EC115b)根据EC114所述的系统,其中,映射根据训练集的每个输入样本,在相同的预定时间量内完成每层的所有传递。
[0165] EC115c)根据EC114所述的系统,其中,映射根据训练集的每个输入样本,在实时确定的相同时间段内完成每层的所有传递。
[0166] EC116)根据EC114所述的系统,其中,多层作为包括逻辑结构管线级的逻辑结构管线操作,每个逻辑结构管线级包括完成每层的所有传递,每层的完成采取包括相同时间量
的时间步长。
[0167] EC116b)根据EC114所述的系统,其中,多层中的每层作为每个传递的相应逻辑结构管线的逻辑结构管线级操作,每层的完成采取包括相同时间量的时间步长。
[0168] EC117)根据EC114所述的系统,其中,当训练集的每个输入样本流过多层上的至少第一多个处理器元件时,在多层上的第一多个处理器元件中选择性地更新神经元权重。
[0169] EC117b)根据EC118所述的系统,其中,当训练集的每个输入样本流过多层上的至少第一多个处理器元件时,在多层上的第一多个处理器元件中选择性地更新神经元权重,
并且流传输和更新针对多个时间步长中的每个时间步长进行。
[0170] EC119)根据EC120所述的系统,还包括数字时钟,并且其中,时间步长是数字时钟的时钟周期的整数倍。
[0171] EC118b)根据EC120所述的系统,还包括数字时钟,并且其中,时间步长是可变的时间量。
[0172] EC118c)根据EC121或EC118b所述的系统,其中,实时确定时间步长。
[0173] EC122)根据EC114所述的系统,还包括:
[0174] 其中,每个计算引擎根据具有多个计算引擎管线级的多级计算引擎管线,包括完成每个计算引擎管线级的时间的计算引擎机器周期、包括完成多个计算引擎管线级的时间
的计算引擎管线周期来操作;
[0175] 其中,计算引擎机器周期包括数字时钟的时钟周期的第一倍数;
[0176] 其中,多层作为包括逻辑结构管线级的逻辑结构管线操作,每个逻辑结构管线级包括完成每层的所有传递,时间步长包括完成每个逻辑结构管线级的时间;并且
[0177] 其中,时间步长包括计算引擎管线周期的第二倍数。
[0178] EC123)根据EC122所述的系统,其中,第一倍数是1。
[0179] EC124)根据EC122所述的系统,其中,第二倍数是数百到数千。
[0180] EC125)根据EC120所述的系统,其中,当激活的前向传播正在进行时,对于多个时间步长中的每个时间步长,响应于第一多个处理器元件内的后向传播数据的变化,在第一
多个处理器元件内选择性地更新至少一个部分神经元权重。
[0181] EC126)根据EC120所述的系统,其中,在多个时间步长内的每个时间步长选择性地更新至少一个部分神经元权重。
[0182] EC123b)根据EC117、EC117b、EC122或EC123所述的系统,其中,选择性地更新符合连续传播梯度下降过程。
[0183] EC127)根据EC114所述的系统,其中,神经网络包括一千多层。
[0184] EC128)根据EC114所述的系统,其中,多个神经元包括数十亿个神经元。
[0185] EC125b)根据EC114所述的系统,其中,多个神经元包括数百万个神经元。
[0186] EC125c)根据EC114所述的系统,其中,对于多个神经元中的至少一些神经元,神经网络对于每个神经元包括至少10个权重。
[0187] EC125d)根据EC114所述的系统,其中,对于多个神经元中的至少一些神经元,神经网络对于每个神经元包括至少1000个权重。
[0188] EC129)根据EC114所述的系统,其中,神经网络每层包含数十亿个权重。
[0189] EC126b)根据EC114所述的系统,其中,神经网络每层包括数百万个权重。
[0190] EC130)根据EC114所述的系统,其中,对于神经网络的每一层,输入激活加权,以创建部分和,累积这些部分和,以生成该层的输出激活,并且累积的加权部分和表示神经网络
的神经元和相关联的突触。
[0191] EC127b)根据EC127所述的系统,其中,每个权重对应于突触,每个部分和对应于刺激,累积的加权部分和对应于总刺激,并且该层的每个输出激活对应于神经元输出。
[0192] EC131)根据EC113所述的系统,其中,对共同包括训练集的多个输入样本中的每一个执行训练工作负载的迭代。
[0193] EC132)根据EC131所述的系统,其中,预定学习规则指定在完成整个训练集的所有传递之后更新至少一个部分神经元权重。
[0194] EC129b)根据EC129所述的系统,其中,预定学习规则符合随机梯度下降过程。
[0195] EC129c)根据EC129所述的系统,其中,预定学习规则符合小批量梯度下降过程。
[0196] EC129d)根据EC129所述的系统,其中,预定学习规则符合连续传播梯度下降过程。
[0197] EC133)根据EC131所述的系统,其中,训练集被划分成多个所谓的小批量,并且预定学习规则指定在完成每个小批量中包括的输入样本的所有传递之后,更新至少一个部分
神经元权重。
[0198] EC134)根据EC131所述的系统,其中,训练集被划分成多个所谓的小批量,并且预定学习规则指定在完成每个小批量的每个输入样本的所有传递之后,更新至少一个部分神
经元权重。
[0199] EC131b)根据EC131所述的系统,其中,预定学习规则符合连续传播梯度下降过程。
[0200] EC135)根据EC134所述的系统,其中,前向传递包含第一多个处理器元件内的权重更新,同时小批量学习在第一多个处理器元件内进行。
[0201] EC136)根据EC113所述的系统,其中,存储器包含在计算引擎本地的存储器中。
[0202] EC133b)根据EC113所述的系统,其中,存储器包含在计算引擎中。
[0203] EC133b)根据EC113所述的系统,其中,存储器是连接到每个计算引擎的相应存储器。
[0204] EC137)根据EC113所述的系统,其中,存储器能够存储2D矩阵数据结构。
[0205] EC134b)根据EC113所述的系统,其中,存储器能够存储多维数据结构。
[0206] EC134c)根据EC113所述的系统,其中,存储器能够存储张量数据结构,该张量数据结构包括选自2D、3D、4D、5D和6D的维度。
[0207] EC138)根据EC113所述的系统,其中,每个计算引擎还包括用于梯度累积、前向部分和、增量部分和以及前向传递激活的存储器。
[0208] EC139)根据EC114所述的系统,其中,数据在前向传递期间传播到神经网络的逻辑端,并在增量传递和链式传递期间在反向逻辑方向循环回来。
[0209] EC140)根据EC113所述的系统,其中,前向传递保存激活,以供增量传递和链式传递使用。
[0210] EC141)根据EC113所述的系统,其中,每个处理器元件在前向、增量和链式传递上是时间共享的。
[0211] EC142)根据EC131所述的系统,其中,对于每个输入样本,系统能够响应于对应于输入样本的前向传递、增量传递和链式传递的完成,根据预定学习规则选择性地更新至少
一个部分神经元权重。
[0212] EC139b)根据EC139所述的系统,其中,预定学习规则符合连续传播梯度下降过程。
[0213] EC143)根据EC142所述的系统,其中,对于每个前向传递,系统能够使用由至少一个部分神经元权重的最近选择性更新提供的权重信息。
[0214] EC144)根据EC143所述的系统,其中,系统能够启动训练工作负载的特定迭代的前向传递,而与是否已经发生对应于训练工作负载的先前迭代的至少一个部分神经元权重的
选择性更新无关。
[0215] EC145)根据EC143所述的系统,其中,系统能够启动训练工作负载的特定迭代的前向传递,而与训练工作负载的先前迭代的增量传递是否已经开始无关。
[0216] EC146)根据EC143所述的系统,其中,至少一个计算引擎能够在为训练工作负载的先前迭代执行前向传递的至少一部分之后,并且在执行对应于训练工作负载的先前迭代的
至少一个部分神经元权重的选择性更新的一部分之前,为训练工作负载的后续迭代执行前
向传递的至少一部分。
[0217] EC147)根据EC143所述的系统,其中,系统能够至少部分基于至少部分基于第一部分神经元权重所重新计算的激活,对每个输入样本执行增量传递和链式传递。
[0218] EC148)根据EC147所述的系统,其中,第一部分神经元权重是由最近选择性更新产生的部分神经元权重。
[0219] EC145b)根据EC145所述的系统,其中,重新计算的激活不需要在计算之间存储,从而减少给定系统训练配置所需的总存储器。
[0220] EC145c)根据EC139、EC140、EC141或EC142所述的系统,其中,并行层训练能够以更快的收敛速度实现预定的精度目标,从而减少给定系统训练配置所需的总训练时间。
[0221] EC145d)根据EC139、EC140、EC141或EC142所述的系统,其中,并发层训练能够提高给定总训练时间和系统训练配置的精度。
[0222] EC149)根据EC143所述的系统,其中,每个计算元件能够至少部分基于至少部分基于第一部分神经元权重所重新计算的激活,对每个输入样本执行增量传递的部分和链式传
递的部分。
[0223] EC150)根据EC149所述的系统,其中,第一部分神经元权重是由最近选择性更新产生的部分神经元权重。
[0224] EC200)一种方法,包括:
[0225] 在处理器元件的每个结构中,选择性地与其他处理器元件传送结构分组,每个处理器元件包括结构路由器和计算引擎,计算引擎能够执行基于数据流和基于指令的处理;
并且
[0226] 在每个计算引擎中,根据计算引擎接收的每个结构分组的虚拟信道说明符和任务说明符来选择性地执行处理。
[0227] EC200b)一种方法,包括:
[0228] 在处理器元件的每个结构中,选择性地与其他处理器元件传送结构分组,每个处理器元件包括结构路由器和计算引擎;并且
[0229] 在每个计算引擎中,分别根据计算引擎接收的每个结构分组的虚拟信道说明符和任务说明符来选择性地执行数据流处理和指令处理。
[0230] EC200c)根据EC200所述的方法,其中,处理是根据数据流图的。
[0231] EC200d)根据EC200所述的方法,还包括执行工作负载,主要包括基于数据流的处理以及最小的基于指令的处理。
[0232] EC200e)根据EC200d所述的方法,其中,执行方法,实现了长短期记忆(LSTM)神经网络模型。
[0233] EC200f)根据EC200所述的方法,还包括执行工作负载,主要包括基于指令的处理以及最小的基于数据流的处理。
[0234] EC200g)根据EC200所述的方法,其中,处理器元件的结构至少部分地使用晶片级集成来实现。
[0235] EC200h)根据EC200所述的方法,其中,处理器元件的结构至少部分地使用VLSI制造来实现。
[0236] EC201)根据EC200所述的方法,其中,虚拟信道说明符选择结构中独立的相应路由路径。
[0237] EC201b)根据EC200所述的方法,其中,虚拟信道说明符选择结构中的路由路径来执行多播。
[0238] EC201c)根据EC200所述的方法,其中,虚拟信道说明符选择结构中的路由路径来执行负载分割。
[0239] EC202)根据EC200所述的方法,其中,任务说明符选择一个或多个要执行的操作。
[0240] EC203)根据EC200所述的方法,其中,结构包括处理器元件的2D阵列。
[0241] EC203b)根据EC200所述的方法,其中,结构包括从由完全连接、星形、环形、阵列、网格、超立方体、圆环和树组成的组中选择的处理器元件互连拓扑。
[0242] EC203c)根据EC200所述的方法,其中,结构包括从由1D、2D、3D和大于3D的维度组成的组中选择的处理器元件互连拓扑维度。
[0243] EC204)根据EC200所述的方法,其中,执行方法,能够执行机器学习工作负载。
[0244] EC205)根据EC200所述的方法,其中,执行方法,能够训练推理应用。
[0245] EC205b)根据EC200所述的方法,其中,执行方法,执行推理应用。
[0246] EC206)根据EC200所述的方法,其中,执行方法,实现深层神经网络,训练深层神经网络来执行对象分类和/或检测。
[0247] EC207)根据EC200所述的方法,其中,执行方法,实现深层神经网络,训练深层神经网络来执行推理应用,推理应用选自文本翻译、光学字符识别、图像分类、面部识别、自动驾
驶汽车的场景识别、语音识别、高能物理的数据分析和药物发现。
[0248] EC208)根据EC200所述的方法,其中,结构被组织为多个外围处理器元件和多个内部处理器元件,并且每个内部处理器元件在至少四个逻辑方向上分别耦合到多个处理器元
件中的至少四个其他处理器元件。
[0249] EC209)根据EC200所述的方法,其中,每个计算引擎包括存储器、数据路径以及混合数据流和指令执行控制器。
[0250] EC210)根据EC209所述的方法,其中,每个计算引擎根据具有多个计算引擎管线级的多级计算引擎管线操作。
[0251] EC211)根据EC209所述的方法,其中,指令执行控制器包括使用微码、PLA、一个或多个计数器和门级状态机中的一个或多个来实现的指令序列发生器。
[0252] EC212)根据EC209所述的方法,其中,每个计算引擎还包括寄存器文件、指令解码器、指令高速缓存和数据高速缓存。
[0253] EC212b)根据EC209所述的方法,其中,每个计算引擎还包括寄存器文件、指令解码器、指令缓冲器和数据缓冲器。
[0254] EC213)根据EC200所述的方法,其中:
[0255] 每个计算引擎被配置为响应于接收到从预定义的本机指令代码集中选择的对应基本指令,执行预定义的基本操作集;并且还包括
[0256] 处理训练工作负载,包括
[0257] 从本机指令集中选择的第一组机器代码,用于将神经元的至少一部分映射到处理器元件的计算引擎上,映射包括管理至少一个部分神经元权重,
[0258] 从本机指令集中选择的第二组机器代码,用于至少部分基于至少一个部分神经元权重来执行前向传递,以在前向逻辑方向上传播激活,前向传递响应于输入样本而启动,
[0259] 从本机指令集中选择的第三组机器代码,用于在后向逻辑方向上执行增量传递以生成增量,增量传递响应于前向传递的完成而启动,
[0260] 从本机指令集中选择的第四组机器代码,用于执行链式传递,以基于增量计算梯度,以及
[0261] 从本机指令集中选择的第五组机器代码,用于根据预定学习规则并至少部分基于增量来执行至少一个部分神经元权重的选择性更新;并且
[0262] 其中,每个计算引擎包括用于至少一个部分神经元权重的存储器。
[0263] EC213a)根据EC213所述的方法,其中,根据结构分组的相应结构分组的任务说明符来执行每个基本指令。
[0264] EC213b)根据EC213所述的方法,其中,结构包括处理器元件的2D阵列,处理器元件包括第一、第二、第三和第四物理方向,第一和第二物理方向共线且相反,第三和第四物理
方向共线且相反,第一和第三物理方向正交,并且前向逻辑方向在第一物理方向上,后向逻
辑方向在第二物理方向上。
[0265] EC213c)根据EC213所述的方法,其中,训练工作负载还包括从本机指令集中选择的用于执行非线性激活函数的第六组机器代码。
[0266] EC213d)根据EC213c所述的方法,其中,非线性激活函数选自sigmoid、tanh和ReLU组成的组。
[0267] EC214)根据EC213所述的方法,其中,映射根据初始化结构,以实现将神经网络划分成多层,神经元是神经网络的多个神经元中的第一神经元,第一神经元包括在多层的第
一层中,并且多个神经元中的每一个以分布式方式映射在结构的多个处理器元件上。
[0268] EC215)根据EC214所述的方法,其中,映射根据训练集的每个输入样本,在相同的时间量内完成每层的所有传递。
[0269] EC215b)根据EC214所述的方法,其中,映射根据训练集的每个输入样本,在相同的预定时间量内完成每层的所有传递。
[0270] EC215c)根据EC214所述的方法,其中,映射根据训练集的每个输入样本,在实时确定的相同时间段内完成每层的所有传递。
[0271] EC216)根据EC214所述的方法,其中,多层作为包括逻辑结构管线级的逻辑结构管线操作,每个逻辑结构管线级包括完成每层的所有传递,每层的完成采取包括相同时间量
的时间步长。
[0272] EC216b)根据EC214所述的方法,其中,多层中的每层作为每个传递的相应逻辑结构管线的逻辑结构管线级操作,每层的完成采取包括相同时间量的时间步长。
[0273] EC217)根据EC214所述的方法,其中,当训练集的每个输入样本流过多层上的至少第一多个处理器元件时,在多层上的第一多个处理器元件中选择性地更新神经元权重。
[0274] EC217b)根据EC216所述的方法,其中,当训练集的每个输入样本流过多层上的至少第一多个处理器元件时,在多层上的第一多个处理器元件中选择性地更新神经元权重,
并且流传输和更新针对多个时间步长中的每个时间步长进行。
[0275] EC218)根据EC216所述的方法,其中,至少一个处理器元件包括数字时钟,并且时间步长是数字时钟的时钟周期的整数倍。
[0276] EC218b)根据EC216所述的方法,其中,至少一个处理器元件数字时钟,并且时间步长是可变的时间量。
[0277] EC218c)根据EC218或EC218b所述的方法,其中,实时确定时间步长。
[0278] EC219)根据EC214所述的方法,还包括:
[0279] 根据具有多个计算引擎管线级的多级计算引擎管线,包括完成每个计算引擎管线级的时间的计算引擎机器周期、包括完成多个计算引擎管线级的时间的计算引擎管线周
期,来操作每个计算引擎;
[0280] 其中,计算引擎机器周期包括数字时钟的时钟周期的第一倍数;
[0281] 其中,多层作为包括逻辑结构管线级的逻辑结构管线操作,每个逻辑结构管线级包括完成每层的所有传递,时间步长包括完成每个逻辑结构管线级的时间;并且
[0282] 其中,时间步长包括计算引擎管线周期的第二倍数。
[0283] EC220)根据EC219所述的方法,其中,第一倍数是1。
[0284] EC221)根据EC219所述的方法,其中,第二倍数是数百到数千。
[0285] EC222)根据EC216所述的方法,还包括,当激活的前向传播正在进行时,对于多个时间步长中的每个时间步长,响应于第一多个处理器元件内的后向传播数据的变化,在第
一多个处理器元件内选择性地更新至少一个部分神经元权重。
[0286] EC223)根据EC216所述的方法,还包括在多个时间步长内的每个时间步长选择性地更新至少一个部分神经元权重。
[0287] EC223b)根据EC217、EC217b、EC222或EC223所述的方法,其中,选择性地更新符合连续传播梯度下降过程。
[0288] EC224)根据EC214所述的方法,其中,神经网络包括一千多层。
[0289] EC225)根据EC214所述的方法,其中,多个神经元包括数十亿个神经元。
[0290] EC225b)根据EC214所述的方法,其中,多个神经元包括数百万个神经元。
[0291] EC225c)根据EC214所述的方法,其中,对于多个神经元中的至少一些神经元,神经网络对于每个神经元包括至少10个权重。
[0292] EC225d)根据EC214所述的方法,其中,对于多个神经元中的至少一些神经元,神经网络对于每个神经元包括至少1000个权重。
[0293] EC226)根据EC214所述的方法,其中,神经网络每层包含数十亿个权重。
[0294] EC226b)根据EC214所述的方法,其中,神经网络每层包括数百万个权重。
[0295] EC227)根据EC214所述的方法,还包括,对于神经网络的每一层,加权输入激活,以创建部分和,累积这些部分和,以生成该层的输出激活,并且其中,累积的加权部分和表示
神经网络的神经元和相关联的突触。
[0296] EC227b)根据EC227所述的方法,其中,每个权重对应于突触,每个部分和对应于刺激,累积的加权部分和对应于总刺激,并且该层的每个输出激活对应于神经元输出。
[0297] EC228)根据EC213所述的方法,还包括,对共同包括训练集的多个输入样本中的每一个执行训练工作负载的迭代。
[0298] EC229)根据EC228所述的方法,其中,预定学习规则指定在完成整个训练集的所有传递之后更新至少一个部分神经元权重。
[0299] EC229b)根据EC229所述的方法,其中,预定学习规则符合随机梯度下降过程。
[0300] EC229c)根据EC229所述的方法,其中,预定学习规则符合小批量梯度下降过程。
[0301] EC229d)根据EC229所述的方法,其中,预定学习规则符合连续传播梯度下降过程。
[0302] EC230)根据EC228所述的方法,还包括将训练集划分成多个所谓的小批量,并且预定学习规则指定在完成每个小批量中包括的输入样本的所有传递之后,更新至少一个部分
神经元权重。
[0303] EC231)根据EC228所述的方法,还包括将训练集划分成多个所谓的小批量,并且预定学习规则指定在完成每个小批量的每个输入样本的所有传递之后,更新至少一个部分神
经元权重。
[0304] EC231b)根据EC231所述的方法,其中,预定学习规则符合连续传播梯度下降过程。
[0305] EC232)根据EC231所述的方法,其中,前向传递包含第一多个处理器元件内的权重更新,同时小批量学习在第一多个处理器元件内进行。
[0306] EC233)根据EC213所述的方法,其中,存储器包含在计算引擎本地的存储器中。
[0307] EC233b)根据EC213所述的方法,其中,存储器包含在计算引擎中。
[0308] EC233b)根据EC213所述的方法,其中,存储器是连接到每个计算引擎的相应存储器。
[0309] EC234)根据EC213所述的方法,其中,存储器能够存储2D矩阵数据结构。
[0310] EC234b)根据EC213所述的方法,其中,存储器能够存储多维数据结构。
[0311] EC234c)根据EC213所述的方法,其中,存储器能够存储张量数据结构,该张量数据结构包括选自2D、3D、4D、5D和6D的维度。
[0312] EC235)根据EC213所述的方法,其中,每个计算引擎还包括用于梯度累积、前向部分和、增量部分和以及前向传递激活的存储器。
[0313] EC236)根据EC214所述的方法,其中,数据在前向传递期间传播到神经网络的逻辑端,并在增量传递和链式传递期间在反向逻辑方向循环回来。
[0314] EC237)根据EC213所述的方法,其中,前向传递保存激活,以供增量传递和链式传递使用。
[0315] EC238)根据EC213所述的方法,还包括在前向、增量和链式传递上时间共享每个处理器元件。
[0316] EC239)根据EC228所述的方法,还包括,对于每个输入样本,响应于对应于所述输入样本的前向传递、增量传递和链式传递的完成,根据预定学习规则选择性地更新至少一
个部分神经元权重。
[0317] EC239b)根据EC239所述的方法,其中,预定学习规则符合连续传播梯度下降过程。
[0318] EC240)根据EC239所述的方法,还包括,对于每个前向传递,选择性地使用由至少一个部分神经元权重的最近选择性更新提供的权重信息。
[0319] EC241)根据EC240所述的方法,还包括启动训练工作负载的特定迭代的前向传递,而与是否已经发生对应于训练工作负载的先前迭代的至少一个部分神经元权重的选择性
更新无关。
[0320] EC242)根据EC240所述的方法,还包括选择性地启动训练工作负载的特定迭代的前向传递,而与训练工作负载的先前迭代的增量传递是否已经开始无关。
[0321] EC243)根据EC240所述的方法,还包括,在至少一个计算引擎中,在为训练工作负载的先前迭代执行前向传递的至少一部分之后,并且在执行对应于训练工作负载的先前迭
代的至少一个部分神经元权重的选择性更新的一部分之前,为训练工作负载的后续迭代执
行前向传递的至少一部分。
[0322] EC244)根据EC240所述的方法,还包括至少部分基于至少部分基于第一部分神经元权重所重新计算的激活,选择性地对每个输入样本执行增量传递和链式传递。
[0323] EC245)根据EC244所述的方法,其中,第一部分神经元权重是由最近选择性更新产生的部分神经元权重。
[0324] EC245b)根据EC245所述的方法,其中,重新计算的激活不需要在计算之间存储,从而减少给定系统训练配置所需的总存储器。
[0325] EC245c)根据EC239、EC240、EC241或EC242所述的方法,其中,并行层训练能够以更快的收敛速度实现预定的精度目标,从而减少给定系统训练配置所需的总训练时间。
[0326] EC245d)根据EC239、EC240、EC241或EC242所述的方法,其中,并发层训练能够提高给定总训练时间和系统训练配置的精度。
[0327] EC246)根据EC240所述的方法,还包括,在每个计算元件中,至少部分基于至少部分基于第一部分神经元权重所重新计算的激活,对每个输入样本选择性地执行增量传递的
部分和链式传递的部分。
[0328] EC247)根据EC246所述的方法,其中,第一部分神经元权重是由最近选择性更新产生的部分神经元权重。
[0329] EC300)一种系统,包括:
[0330] 在处理器元件的每个结构中,选择性地与其他处理器元件传送结构分组的装置,每个处理器元件包括结构路由器和计算引擎,计算引擎能够执行基于数据流和基于指令的
处理;并且
[0331] 在每个计算引擎中,根据计算引擎接收的每个结构分组的虚拟信道说明符和任务说明符来选择性地执行处理的装置。
[0332] EC300b)一种系统,包括:
[0333] 在处理器元件的每个结构中,用于选择性地与其他处理器元件传送结构分组的装置,每个处理器元件包括结构路由器和计算引擎;并且
[0334] 在每个计算引擎中,用于分别根据计算引擎接收的每个结构分组的虚拟信道说明符和任务说明符选择性地执行数据流处理和指令处理的装置。
[0335] EC300c)根据EC300所述的系统,其中,处理是根据数据流图的。
[0336] EC300d)根据EC300所述的系统,还包括执行工作负载的装置,主要包括基于数据流的处理以及最小的基于指令的处理。
[0337] EC300e)根据EC300d所述的系统,其中,系统实现了长短期记忆(LSTM)神经网络模型。
[0338] EC300f)根据EC300所述的系统,还包括执行工作负载的装置,主要包括基于指令的处理以及最小的基于数据流的处理。
[0339] EC300g)根据EC300所述的系统,其中,系统至少部分地使用晶片级集成来实现。
[0340] EC300h)根据EC300所述的系统,其中,处理器元件的结构至少部分地使用VLSI制造来实现。
[0341] EC301)根据EC300所述的系统,其中,虚拟信道说明符选择结构中独立的相应路由路径。
[0342] EC301b)根据EC300所述的系统,其中,虚拟信道说明符选择结构中的路由路径来执行多播。
[0343] EC301c)根据EC300所述的系统,其中,虚拟信道说明符选择结构中的路由路径来执行负载分割。
[0344] EC302)根据EC300所述的系统,其中,任务说明符选择一个或多个要执行的操作。
[0345] EC303)根据EC300所述的系统,其中,结构包括处理器元件的2D阵列。
[0346] EC303b)根据EC300所述的系统,其中,结构包括从由完全连接、星形、环形、阵列、网格、超立方体、圆环和树组成的组中选择的处理器元件互连拓扑。
[0347] EC303c)根据EC300所述的系统,其中,结构包括从由1D、2D、3D和大于3D的维度组成的组中选择的处理器元件互连拓扑维度。
[0348] EC304)根据EC300所述的系统,其中,系统能够执行机器学习工作负载。
[0349] EC305)根据EC300所述的系统,其中,训练系统,以执行推理应用。
[0350] EC305b)根据EC300所述的系统,其中,系统执行推理应用。
[0351] EC306)根据EC300所述的系统,其中,系统实现深层神经网络,训练深层神经网络来执行对象分类和/或检测。
[0352] EC307)根据EC300所述的系统,其中,系统实现深层神经网络,训练深层神经网络来执行推理应用,推理应用选自文本翻译、光学字符识别、图像分类、面部识别、自动驾驶汽
车的场景识别、语音识别、高能物理的数据分析和药物发现。
[0353] EC308)根据EC300所述的系统,其中,结构被组织为多个外围处理器元件和多个内部处理器元件,并且每个内部处理器元件在至少四个逻辑方向上分别耦合到多个处理器元
件中的至少四个其他处理器元件。
[0354] EC309)根据EC300所述的系统,其中,每个计算引擎包括存储器、数据路径以及混合数据流和指令执行控制器。
[0355] EC310)根据EC309所述的系统,其中,每个计算引擎根据具有多个计算引擎管线级的多级计算引擎管线操作。
[0356] EC311)根据EC309所述的系统,其中,指令执行控制器包括使用微码、PLA、一个或多个计数器和门级状态机中的一个或多个来实现的指令序列发生器。
[0357] EC312)根据EC309所述的系统,其中,每个计算引擎还包括寄存器文件、指令解码器、指令高速缓存和数据高速缓存。
[0358] EC312b)根据EC309所述的系统,其中,每个计算引擎还包括寄存器文件、指令解码器、指令缓冲器和数据缓冲器。
[0359] EC313)根据EC300所述的系统,其中:
[0360] 每个计算引擎被配置为响应于接收到从预定义的本机指令代码集中选择的对应基本指令,执行预定义的基本操作集;并且还包括
[0361] 训练工作负载,包括
[0362] 从本机指令集中选择的第一组机器代码,用于将神经元的至少一部分映射到处理器元件的计算引擎上,映射包括管理至少一个部分神经元权重,
[0363] 从本机指令集中选择的第二组机器代码,用于至少部分基于至少一个部分神经元权重来执行前向传递,以在前向逻辑方向上传播激活,前向传递响应于输入样本而启动,
[0364] 从本机指令集中选择的第三组机器代码,用于在后向逻辑方向上执行增量传递以生成增量,增量传递响应于前向传递的完成而启动,
[0365] 从本机指令集中选择的第四组机器代码,用于执行链式传递,以基于增量计算梯度,以及
[0366] 从本机指令集中选择的第五组机器代码,用于根据预定学习规则并至少部分基于增量来执行至少一个部分神经元权重的选择性更新;并且
[0367] 其中,每个计算引擎包括用于至少一个部分神经元权重的存储器。
[0368] EC313a)根据EC313所述的系统,其中,根据结构分组的相应结构分组的任务说明符来执行每个基本指令。
[0369] EC313b)根据EC313所述的系统,其中,结构包括处理器元件的2D阵列,处理器元件包括第一、第二、第三和第四物理方向,第一和第二物理方向共线且相反,第三和第四物理
方向共线且相反,第一和第三物理方向正交,并且前向逻辑方向在第一物理方向上,后向逻
辑方向在第二物理方向上。
[0370] EC313c)根据EC313所述的系统,其中,训练工作负载还包括从本机指令集中选择的用于执行非线性激活函数的第六组机器代码。
[0371] EC313d)根据EC313c所述的系统,其中,非线性激活函数选自sigmoid、tanh和ReLU组成的组。
[0372] EC314)根据EC313所述的系统,其中,映射根据初始化结构,以实现将神经网络划分成多层,神经元是神经网络的多个神经元中的第一神经元,第一神经元包括在多层的第
一层中,并且多个神经元中的每一个以分布式方式映射在结构的多个处理器元件上。
[0373] EC315)根据EC314所述的系统,其中,映射根据训练集的每个输入样本,在相同的时间量内完成每层的所有传递。
[0374] EC315b)根据EC314所述的系统,其中,映射根据训练集的每个输入样本,在相同的预定时间量内完成每层的所有传递。
[0375] EC315c)根据EC314所述的系统,其中,映射根据训练集的每个输入样本,在实时确定的相同时间段内完成每层的所有传递。
[0376] EC316)根据EC314所述的系统,其中,多层作为包括逻辑结构管线级的逻辑结构管线操作,每个逻辑结构管线级包括完成每层的所有传递,每层的完成采取包括相同时间量
的时间步长。
[0377] EC316b)根据EC314所述的系统,其中,多层中的每层作为每个传递的相应逻辑结构管线的逻辑结构管线级操作,每层的完成采取包括相同时间量的时间步长。
[0378] EC317)根据EC314所述的系统,其中,当训练集的每个输入样本流过多层上的至少第一多个处理器元件时,在多层上的第一多个处理器元件中选择性地更新神经元权重。
[0379] EC317b)根据EC316所述的系统,其中,当训练集的每个输入样本流过多层上的至少第一多个处理器元件时,在多层上的第一多个处理器元件中选择性地更新神经元权重,
并且流传输和更新针对多个时间步长中的每个时间步长进行。
[0380] EC318)根据EC316所述的系统,还包括数字时钟,并且其中,时间步长是数字时钟的时钟周期的整数倍。
[0381] EC318b)根据EC316所述的系统,还包括数字时钟,并且其中,时间步长是可变的时间量。
[0382] EC318c)根据EC318或EC318b所述的系统,其中,实时确定时间步长。
[0383] EC319)根据EC314所述的系统,还包括:
[0384] 根据具有多个计算引擎管线级的多级计算引擎管线,包括完成每个计算引擎管线级的时间的计算引擎机器周期、包括完成多个计算引擎管线级的时间的计算引擎管线周
期,来操作每个计算引擎的装置;
[0385] 其中,计算引擎机器周期包括数字时钟的时钟周期的第一倍数;
[0386] 其中,多层作为包括逻辑结构管线级的逻辑结构管线操作,每个逻辑结构管线级包括完成每层的所有传递,时间步长包括完成每个逻辑结构管线级的时间;并且
[0387] 其中,时间步长包括计算引擎管线周期的第二倍数。
[0388] EC320)根据EC319所述的系统,其中,第一倍数是1。
[0389] EC321)根据EC319所述的系统,其中,第二倍数是数百到数千。
[0390] EC322)根据EC316所述的系统,还包括,当激活的前向传播正在进行时,对于多个时间步长中的每个时间步长,响应于第一多个处理器元件内的后向传播数据的变化,在第
一多个处理器元件内选择性地更新至少一个部分神经元权重的装置。
[0391] EC323)根据EC316所述的系统,还包括在多个时间步长内的每个时间步长选择性地更新至少一个部分神经元权重的装置。
[0392] EC323b)根据EC317、EC317b、EC322或EC323所述的系统,其中,选择性地更新符合连续传播梯度下降过程。
[0393] EC324)根据EC314所述的系统,其中,神经网络包括一千多层。
[0394] EC325)根据EC314所述的系统,其中,多个神经元包括数十亿个神经元。
[0395] EC325b)根据EC314所述的系统,其中,多个神经元包括数百万个神经元。
[0396] EC325c)根据EC314所述的系统,其中,对于多个神经元中的至少一些神经元,神经网络对于每个神经元包括至少10个权重。
[0397] EC325d)根据EC314所述的系统,其中,对于多个神经元中的至少一些神经元,神经网络对于每个神经元包括至少1000个权重。
[0398] EC326)根据EC314所述的系统,其中,神经网络每层包含数十亿个权重。
[0399] EC326b)根据EC314所述的系统,其中,神经网络每层包括数百万个权重。
[0400] EC327)根据EC314所述的系统,还包括,对于神经网络的每一层,加权输入激活,以创建部分和,累积这些部分和,以生成该层的输出激活,并且其中,累积的加权部分和表示
神经网络的神经元和相关联的突触。
[0401] EC327b)根据EC327所述的系统,其中,每个权重对应于突触,每个部分和对应于刺激,累积的加权部分和对应于总刺激,并且该层的每个输出激活对应于神经元输出。
[0402] EC328)根据EC313所述的系统,还包括对共同包括训练集的多个输入样本中的每一个执行训练工作负载的迭代的装置。
[0403] EC329)根据EC328所述的系统,其中,预定学习规则指定在完成整个训练集的所有传递之后更新至少一个部分神经元权重。
[0404] EC329b)根据EC329所述的系统,其中,预定学习规则符合随机梯度下降过程。
[0405] EC329c)根据EC329所述的系统,其中,预定学习规则符合小批量梯度下降过程。
[0406] EC329d)根据EC329所述的系统,其中,预定学习规则符合连续传播梯度下降过程。
[0407] EC330)根据EC328所述的系统,还包括将训练集划分成多个所谓的小批量的装置,并且预定学习规则指定在完成每个小批量中包括的输入样本的所有传递之后,更新至少一
个部分神经元权重。
[0408] EC331)根据EC328所述的系统,还包括将训练集划分成多个所谓的小批量的装置,并且预定学习规则指定在完成每个小批量的每个输入样本的所有传递之后,更新至少一个
部分神经元权重。
[0409] EC331b)根据EC331所述的系统,其中,预定学习规则符合连续传播梯度下降过程。
[0410] EC332)根据EC331所述的系统,其中,前向传递包含第一多个处理器元件内的权重更新,同时小批量学习在第一多个处理器元件内进行。
[0411] EC333)根据EC313所述的系统,其中,存储器包含在计算引擎本地的存储器中。
[0412] EC333b)根据EC313所述的系统,其中,存储器包含在计算引擎中。
[0413] EC333b)根据EC313所述的系统,其中,存储器是连接到每个计算引擎的相应存储器。
[0414] EC334)根据EC313所述的系统,其中,存储器能够存储2D矩阵数据结构。
[0415] EC334b)根据EC313所述的系统,其中,存储器能够存储多维数据结构。
[0416] EC334c)根据EC313所述的系统,其中,存储器能够存储张量数据结构,该张量数据结构包括选自2D、3D、4D、5D和6D的维度。
[0417] EC335)根据EC313所述的系统,其中,每个计算引擎还包括用于梯度累积、前向部分和、增量部分和以及前向传递激活的存储器。
[0418] EC336)根据EC314所述的系统,其中,数据在前向传递期间传播到神经网络的逻辑端,并在增量传递和链式传递期间在反向逻辑方向循环回来。
[0419] EC337)根据EC313所述的系统,其中,前向传递保存激活,以供增量传递和链式传递使用。
[0420] EC338)根据EC313所述的系统,还包括在前向、增量和链式传递上时间共享每个处理器元件的装置。
[0421] EC339)根据EC328所述的系统,还包括,对于每个输入样本,响应于对应于输入样本的前向传递、增量传递和链式传递的完成,根据预定学习规则选择性地更新至少一个部
分神经元权重的装置。
[0422] EC339b)根据EC339所述的系统,其中,预定学习规则符合连续传播梯度下降过程。
[0423] EC340)根据EC339所述的系统,还包括,对于每个前向传递,选择性地使用由至少一个部分神经元权重的最近选择性更新提供的权重信息的装置。
[0424] EC341)根据EC340所述的系统,还包括启动训练工作负载的特定迭代的前向传递的装置,而与是否已经发生对应于训练工作负载的先前迭代的至少一个部分神经元权重的
选择性更新无关。
[0425] EC342)根据EC340所述的系统,还包括选择性地启动训练工作负载的特定迭代的前向传递的装置,而与训练工作负载的先前迭代的增量传递是否已经开始无关。
[0426] EC343)根据EC340所述的系统,还包括,在至少一个计算引擎中,在为训练工作负载的先前迭代执行前向传递的至少一部分之后,并且在执行对应于训练工作负载的先前迭
代的至少一个部分神经元权重的选择性更新的一部分之前,为训练工作负载的后续迭代执
行前向传递的至少一部分的装置。
[0427] EC344)根据EC340所述的系统,还包括至少部分基于至少部分基于第一部分神经元权重所重新计算的激活,选择性地对每个输入样本执行增量传递和链式传递的装置。
[0428] EC345)根据EC344所述的系统,其中,第一部分神经元权重是由最近选择性更新产生的部分神经元权重。
[0429] EC345b)根据EC345所述的系统,其中,重新计算的激活不需要在计算之间存储,从而减少给定系统训练配置所需的总存储器。
[0430] EC345c)根据EC339、EC340、EC341或EC342所述的系统,其中,并行层训练能够以更快的收敛速度实现预定的精度目标,从而减少给定系统训练配置所需的总训练时间。
[0431] EC345d)根据EC339、EC340、EC341或EC342所述的系统,其中,并发层训练能够提高给定总训练时间和系统训练配置的精度。
[0432] EC346)根据EC340所述的系统,还包括,在每个计算元件中,至少部分基于至少部分基于第一部分神经元权重所重新计算的激活,对每个输入样本选择性地执行增量传递的
部分和链式传递的部分的装置。
[0433] EC347)根据EC346所述的系统,其中,第一部分神经元权重是由最近选择性更新产生的部分神经元权重。
[0434] EC400)一种方法,包括:
[0435] 训练包括多个有序连接层的神经网络;
[0436] 其中,该顺序为每个相应的层识别哪些其他层在相应的层之前,哪些其他层在相应的层之后;
[0437] 其中,每层包括一个或多个神经元,每个神经元包括权重并连接到前一层的至少一个先前神经元和后一层的至少一个后续神经元中的至少一个;并且
[0438] 其中,每个神经元由一个或多个处理元件实现,每个处理元件包括
[0439] 至少一个与结构的耦合,处理元件能够经由多个虚拟信道经由结构进行通信,
[0440] 第一内存,其能够存储至少对应于神经元的计算的指令,
[0441] 第二内存,其能够存储权重,以及
[0442] 硬件执行资源,其能够执行来自相应的第一内存的指令并且从相应的第二内存访问数据。
[0443] EC401)根据EC400所述的方法,其中,训练包括:
[0444] 基于第一激活和第一权重,确定第二激活;
[0445] 基于第一增量和第一权重,确定并保存第二权重;
[0446] 基于第三激活和所选择的权重,确定第四激活,其中,所选择的权重从第一权重和第二权重中动态地选择;并且
[0447] 基于第二增量和所选择的权重,确定并保存第三权重。
[0448] EC402)根据EC401所述的方法,其中,确定第二激活包括:
[0449] 经由结构从至少一个先前神经元接收第一激活;
[0450] 通过至少执行存储在第一内存中的第一指令并访问第二内存中的第一权重,至少部分基于第一激活和第一权重来计算第二激活;并且
[0451] 经由结构选择性地将第二激活传输到至少一个后续神经元。
[0452] EC403)根据EC401所述的方法,其中,确定和保存第二权重包括:
[0453] 经由结构从至少一个后续神经元接收部分基于第二激活的第一增量;
[0454] 通过至少执行存储在第一内存中的第二指令,至少部分基于第一增量和第二激活来计算第一梯度;
[0455] 通过至少执行存储在第一内存中的第三指令并访问第二内存中的第一权重,至少部分基于第一梯度、学习规则和第一权重来计算第二权重;并且
[0456] 将第二权重存储在第二内存中。
[0457] EC404)根据EC402所述的方法,其中,确定第四激活包括:
[0458] 经由结构从至少一个先前神经元接收第三激活;
[0459] 通过至少执行第一指令并访问第二内存中的选定权重,至少部分基于第三激活和选定权重来计算第四激活;并且
[0460] 经由结构选择性地将第四激活传输到至少一个后续神经元。
[0461] EC405)根据EC403所述的方法,其中,确定和保存第三权重包括:
[0462] 经由结构从至少一个后续神经元接收部分基于第四激活的第二增量;
[0463] 通过至少执行存储在第一内存中的第二指令,至少部分基于第三增量和第四激活来计算第二梯度;
[0464] 通过至少执行存储在第二内存中的第三指令并访问第二内存中的选定权重,至少部分基于第二梯度、学习规则和选定权重来计算第三权重;并且
[0465] 将第三权重存储在第二内存中。
[0466] EC406)根据EC404所述的方法,其中,确定和保存第二权重包括:
[0467] 经由结构从至少一个后续神经元接收部分基于第二激活的第一增量;
[0468] 通过至少执行存储在第一内存中的第二指令,至少部分基于第一增量和第二激活来计算第一梯度;
[0469] 通过至少执行存储在第一内存中的第三指令并访问第二内存中的第一权重,至少部分基于第一梯度、学习规则和第一权重来计算第二权重;并且
[0470] 将第二权重存储在第二内存中。
[0471] EC407)根据EC406所述的方法,其中,确定和保存第三权重包括:
[0472] 经由结构从至少一个后续神经元接收部分基于第四激活的第二增量;
[0473] 通过至少执行存储在第一内存中的第二指令,至少部分基于第三增量和第四激活来计算第二梯度;
[0474] 通过至少执行存储在第二内存中的第三指令并访问第二内存中的选定权重,至少部分基于第二梯度、学习规则和选定权重来计算第三权重;并且
[0475] 将第三权重存储在第二内存中。
[0476] EC408)根据EC403所述的方法,其中,所选择的权重根据第一权重和第二权重中的哪一个被最近存储来动态地选择。
[0477] EC409)根据EC401所述的方法,其中,确定第四激活能够在确定第二激活之后以及在确定和保存第二权重之前执行。
[0478] EC410)根据EC404所述的方法,其中,选择性地传输第二激活和第四激活是选择性地基于第二激活和第四激活的相应值。
[0479] EC411)根据EC404所述的方法,其中,选择性地传输第二激活和第四激活选择性地基于超过相应第一和第二阈值的第二激活和第四激活的相应绝对值。
[0480] EC412)根据EC400所述的方法,其中,至少一个神经元由多个处理元件实现。
[0481] EC413)根据EC405所述的方法,其中,确定第四激活另外包括将第四激活存储在第二内存中,并且计算第二梯度另外包括访问第二内存中的第四激活。
[0482] EC414)根据EC407所述的方法,其中,计算第二梯度另外包括至少部分基于所选择的权重可选地重新计算第四激活。
[0483] EC415)根据EC407所述的方法,其中,计算第一梯度另外包括至少部分基于第一权重可选地重新计算第二激活。
[0484] EC416)根据EC400所述的方法,其中,每个处理元件能够执行基于数据流的处理。
[0485] EC417)根据EC400所述的方法,其中,每个处理元件包括结构路由器。
[0486] EC418)根据EC400所述的方法,其中,每个处理元件能够选择性地与其他处理元件通信结构分组。
[0487] EC419)根据EC418所述的方法,其中,每个处理元件能够根据处理元件接收的每个结构分组的虚拟信道说明符和任务说明符来执行处理。
[0488] 选定的实施方式细节
[0489] 本文描述了涉及神经网络训练和推理的实施方式,包括深度学习加速器硬件元件和软件元件(例如,参见图1至图4和“深度学习加速器概述”部分)。深度学习加速器包括硬
件处理元件(例如,参见图5至图8和“处理元件:计算元件和路由器”部分)。深度学习加速器
实现和/或使用各种技术,例如,任务启动和收尾(参见例如图9至图12和“任务”部分)、小波
处理(参见例如图13A至图15B和“小波”部分)、任务阻止和解除阻止(参见例如图16和“阻止
和解除阻止”部分)、神经元涂抹(参见例如图17至图20和“神经元涂抹”部分)、结构矢量、内
存矢量和相关联的数据结构描述符(参见例如图21A至图24和“矢量和数据结构描述符”部
分)以及指令格式(参见例如图21A至图24和“指令格式”部分)。深度学习加速器可用于各种
场景(例如,参见图26A至图27E和“深度学习加速器示例使用”部分以及图28A至图29和“示
例工作负载映射”部分)。在各种实施方式中设想了深度学习加速器(例如,参见“其他实施
方式细节”部分)。深度学习加速器可以不同地实现(例如,参见“示例实现技术”部分)。
[0490] 深度学习加速器概述
[0491] 图1示出了使用深度学习加速器作为神经网络系统100的神经网络训练和推理系统的实施方式的选定细节。从概念上讲,使用深度学习加速器来训练神经网络。然后,训练
的一个或多个结果(例如,权重)用于推理。例如,训练包括将神经网络的神经元映射到深度
学习加速器的PE上。然后将训练数据应用于PE。PE处理训练数据(例如,经由前向、增量和链
式传递)并更新权重,直到训练完成。然后,权重用于推理。
[0492] 参考该图,深度学习加速器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。
[0493] 根据各种实施方式和/或使用场景,互联网180提供放置服务器150、连接服务器160、自主车辆130和/或手机140的任何组合之间的耦合(未明确示出)。
[0494] 虚线箭头放置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一起操作。
[0495] 虚线箭头权重114和虚线箭头权重115概念性地指示分别从PE 122传送到自主车辆130和手机140的权重信息(例如,经由耦合123、FPGA 121、100Gb 112、连接服务器160/
NIC 164和互联网180)。在一些实施方式和/或使用场景中,权重信息是作为训练、其子采
样、其量化和/或其其他变换的结果直接产生的权重信息的全部或任何部分中的任何一个
或多个。
[0496] 深度学习加速器120能够执行神经网络的训练,例如,通过响应于经由100Gb 112接收的放置信息和训练信息来计算权重。深度学习加速器120还能够在训练完成时经由
100Gb 112提供权重,作为结果。权重然后可用于推理,例如,在自主车辆130和/或手机140
中。PE 122包括相对大量的PE(例如,10,000或更多),每个PE能够独立地执行与训练相关的
路由和计算。在一些实施方式和/或使用场景中,PE 122经由晶片级集成来实现,例如,在单
个晶片的相应管芯上实现的相应多个PE。FPGA 121能够将PE 122接口连接到经由100Gb 
112提供的信息。如在耦合123上传送的,该连接包括从小波转换成修改的以太网帧/从修改
的以太网帧转换成小波。
[0497] 放置服务器150能够经由一个或多个放置程序以编程方式确定神经元的放置(例如,如放置113所示)。放置程序存储在CRM 152中,并由CPU 151执行。放置信息经由LAN 111
传送到连接服务器160。放置的一个示例是将神经网络的逻辑神经元映射到物理存储器和
执行硬件资源(例如,PE 122)上。
[0498] 连接服务器160能够与FPGA 121通信,并且经由FPGA 121/耦合123、经由NIC 164和经由驱动程序的编程控制与PE 122间接通信。在各种实施方式和/或使用场景中,通信包
括放置信息(例如,来自放置服务器150)、训练信息(例如,来自未示出但可经由互联网180
访问的源)和/或训练结果(例如,来自PE 122的权重)。驱动程序存储在CRM 162中,并由CPU 
161执行。
[0499] 自主车辆130能够使用权重114来使用IE 133执行推理,该推理由执行存储在CRM 132中的程序的CPU 131以编程方式控制和/或协助。使用从相机135获得的信息可选地和/
或选择性地执行推理。例如,汽车可作为自主车辆运行。汽车包括能够向推理引擎提供视频
的相机。推理引擎能够识别与汽车导航相关的对象,例如,车道、障碍物和其他对象。汽车能
够使用物体识别的结果进行导航。提供、识别和导航的任何组合至少部分地经由执行存储
在CRM中的程序的一个或多个CPU来控制和/或执行。
[0500] 手机140能够使用权重115来使用IE 143执行推理,该推理由执行存储在CRM 142中的程序的CPU 141以编程方式控制和/或协助。使用从相机145获得的信息可选地和/或选
择性地执行推理。例如,手机可操作以在社交网络网站上张贴标签照片。手机包括能够向推
理引擎提供图像数据的相机。推理引擎能够在图像中标记对象(例如,通过诸如“猫”、“狗”
等类型,或者通过诸如“Bob”、“Mary”等名称)。手机能够将图像和标记结果发布到社交网络
网站。提供、标记和张贴的任何组合至少部分地经由执行存储在CRM中的程序的一个或多个
CPU来控制和/或执行。
[0501] 在各种实施方式和/或使用场景中,在推理使用之前,经由深度学习加速器确定的权重信息的全部或任何部分在加速器之外进行后处理。例如,由权重114和/或权重115表示
的信息的全部或任何部分在自主车辆130和/或手机140推理使用之前由放置服务器150全
部或部分处理。在各种实施方式和/或使用场景中,后处理的示例包括量化权重114和/或权
重115(例如,从浮点数格式转换为定点数格式)。在各种实施方式和/或使用模型中,相机
135和相机145是向IE 133和IE 143提供输入的传感器的相应示例。传感器的其他示例是位
置传感器、方位传感器、磁传感器、光传感器和压力传感器。
[0502] CPU 151包括与相应指令集架构兼容的一个或多个CPU。CPU 151能够根据指令集架构从CRM 152提取和执行指令。CPU 161包括与相应指令集架构兼容的一个或多个CPU。
CPU 161能够根据指令集架构从CRM 162提取和执行指令。在一些实施方式中,CPU 151的至
少一个指令集架构与CPU 161的至少一个指令集架构兼容。
[0503] 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中的任何一个或多个具有彼此兼容的指令集架构。
[0504] CRM 152、CRM 162、CRM 132和CRM 142中的每一个的至少相应部分是非易失性的,并且包括闪存、磁存储器、光存储器、相变存储器和其他非易失性存储器技术元件中的任何
一个或多个。
[0505] 在各种实施方式和/或使用场景中,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和/或IE143提供的功能的全部或任何部分使用由
深度学习加速器120实现和/或与深度学习加速器120相关联的技术来实现。在各种实施方
式和/或使用场景中,IE 133和/或IE 143的全部或任何部分经由包括常规CPU、常规GPU、常
规DSP、常规FPGA和专用硬件的各种组合的技术来不同地实现。
[0506] 在各种实施方式中,100Gb 112不同地是用于发送标准以太网帧的100Gb以太网耦合、用于发送修改的以太网帧的100Gb以太网耦合、用于发送修改的以太网帧的100Gb修改
的以太网耦合、除以太网技术之外的100Gb串行耦合或者一些其他相对高速的串行耦合。
[0507] 在一些实施方式和/或使用场景中,耦合123以小波的形式传送信息。
[0508] 在各种实施方式中,LAN 111使用诸如以太网、光纤通道和/或其他合适的互连技术来实现。
[0509] 在一些实施方式和/或使用场景中,放置服务器150和连接服务器160被实现和/或操作为组合元件(例如,共享CPU、CRM和/或NIC资源),如组合服务器110概念性示出的。在一
些实施方式和/或使用场景中,放置服务器150和连接服务器160经由互联网180而不是(或
除了)LAN 111耦合。
[0510] 图2示出了使用深度学习加速器作为神经网络SW 200的与神经网络训练和推理相关联的软件元件的实施方式的选定细节。根据实施方式,放置服务器SW 210包括神经元到
PE映射SW 212以及未示出的其他元件。在各种实施方式和/或使用场景中,放置服务器SW 
210的全部或任何部分存储在CRM 152中,并可由图1的CPU 151执行。神经元到PE映射SW 
212的一个或多个程序使能够确定神经网络的神经元放置到图1的PE 122中的特定PE上。
[0511] 根据实施方式,连接服务器SW 220包括100Gb NIC驱动程序224、训练信息提供商SW 225和权重接收器SW 226以及未示出的其他元件。在各种实施方式和/或使用场景中,连
接服务器SW 220的全部或任何部分存储在CRM 162中,并可由图1的CPU 161执行。100Gb 
NIC驱动程序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)。
[0512] 在各种实施方式和/或使用场景中,FPGA 250上的杂项SW在概念上表示由(图1)的FPGA 121中包含的一个或多个CPU执行的SW。FPGA的CPU例如在FPGA 121的一个或多个元件
的制造期间被硬编码,和/或在FPGA 121的一个或多个元件的初始化期间被软编码。在各种
实施方式和/或使用场景中,FPGA 250上杂项SW的全部或任何部分和/或其表示存储在FPGA 
121中包括的和/或可由连接服务器160访问的非易失性存储器中。在各种实施方式和/或使
用场景中,FPGA 250上的杂项SW能够执行各种内务功能,例如,与图1的PE 122的初始化和/
或调试相关的功能。
[0513] 在各种实施方式和/或使用场景中,PE 260上的任务SW概念性地表示作为PE 122的各种PE上的任务执行的分布式SW。在各种实施方式和/或使用场景中,PE 260上的任务SW
的全部或任何部分和/或其表示存储在PE 122中包括的非易失性存储器中和/或可由连接
服务器160访问。在各种实施方式和/或使用场景中,PE 260上的任务SW能够执行训练数据
的处理,例如,确定神经网络的权重(例如,经由前向、增量和链式传递)。
[0514] 根据实施方式,自主车辆SW 230包括摄像机SW 232、推理引擎SW 233和导航SW 234以及未示出的其他元件。在各种实施方式和/或使用场景中,自主车辆SW 230的所有或
任何部分存储在CRM 132中,并可由图1的CPU 131执行。摄像机SW 232的一个或多个程序能
够控制和/或操作图1的相机135,以向推理引擎SW 233提供视频信息。推理引擎SW 233的一
个或多个程序能够控制和/或操作图1的IE 133,以根据视频信息确定导航信息,例如,要避
开的对象和/或要遵循的车道。导航SW 234的一个或多个程序能够响应于导航信息来导航
自主车辆SW 230。
[0515] 根据实施方式,手机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的一个或多个程序能够响应于静止图像信息和/或标签信息发布到社交网络网站。
[0516] 在各种实施方式和/或使用场景中,SW集合放置服务器SW 210、连接服务器SW 220、自主车辆SW 230和/或手机SW 240中的任何一个或多个可选地和/或选择性地包括一
个或多个操作系统元件,例如,一个或多个实时操作系统、一个或多个非实时操作系统和/
或一个或多个其他控制程序,以协调每个相应SW集合的元件。
[0517] 图3示出了使用深度学习加速器的与训练神经网络和使用训练的神经网络执行推理相关联的处理的实施方式的选定细节,作为神经网络训练/推理300。如图所示,在动作
310中,放置神经网络的神经元,例如,分配神经元和/或与特定PE资源相关联。然后,在动作
320中,初始化FPGA资源,为神经网络的训练做准备。然后,在动作330中,初始化PE资源,为
神经网络的训练做准备。
[0518] 在为训练做准备而初始化FPGA资源和PE资源之后,在动作340中将训练数据应用于PE。在动作350中,PE资源处理训练数据。然后在动作360中,进行检查,以确定训练是否完
成,例如,因为训练数据的应用完成和/或满足一个或多个完成标准(例如,低于预定界限的
推理误差)。如果不是,则流程返回到动作340,以应用进一步的训练数据。在某些情况下,训
练没有完成,并且在一些实施方式中,控制传递到另一动作(未示出),以能够改变神经网络
(例如,添加神经元层、移除神经元层)。然后,根据动作310、320、330、340、350和360训练改
变的神经网络。
[0519] 如果训练完成,则流程继续提供作为训练结果的权重,用于370中的推理。在一些实施方式和/或使用场景中,权重被量化,例如,转换成整数数据格式。在一些实施方式和/
或使用场景中,整数数据格式是精度降低的数字格式(例如,8位或16位)。然后,在动作380
中,权重提供给一个或多个推理引擎,并用于进行推理。
[0520] 在各种实施方式和/或使用场景中,推理引擎对应于一个或多个推理应用,例如,文本翻译、光学字符识别、图像分类、面部识别、自动驾驶汽车的场景识别、语音识别、高能
物理的数据分析和药物发现。
[0521] 在各种实施方式和/或使用场景中,PE资源对应于例如图1的PE 122,而FPGA资源对应于例如图1的FPGA 121。
[0522] 在各种实施方式和/或使用场景中,神经网络训练/推理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的所有或任何部分由PE 
122通过在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执行,例如,在推理引擎SW 
243的控制下。
[0523] 在各种实施方式和/或使用场景中,结合图1的神经网络系统100的各种元件之间的信息通信,执行神经网络训练/推理300的所有或任何部分动作中的任何一个或多个。例
如,神经网络训练/推理300的各种动作至少部分地经由在连接服务器160和FPGA 121之间
传送信息的NIC 164和100Gb 112来执行。再如,神经网络训练/推理300的各种动作结合在
连接服务器160和PE 122之间传送信息的FPGA 121和耦合123来执行。再如,神经网络训练/
推理300的各种动作结合放置服务器150、连接服务器160、自主车辆130和移动电话140中的
任意一个或多个来执行,传送至少部分由互联网180启用的信息。
[0524] 图4示出了作为深度学习加速器400的深度学习加速器的实施方式的选定细节。PE 499元件中的每一个都与PE 499元件中的其他元件耦合。PE元件中的两个(PE 497和PE 
498)用唯一标识符示出,并且另外分别与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)。
[0525] 在一些实施方式和/或使用场景中,相同ASIC的相同实例的阵列形成在晶片上,并且相同ASIC中的每一个包括相同PE(例如,PE 499)的多个相同实例,形成可用于晶片级集
成技术的晶片(例如,晶片412)。在一些实施方式和/或使用场景中,PE的外围部分耦合到I/
O FPGA 420。示例ASIC被示为:ASIC 410,包括PE的列组织部分(例如,以一维方式复制,以
形成晶片);以及ASIC 411,包括PE的正方形组织部分或矩形组织部分(例如以二维方式复
制,以形成晶片)。可以设想晶片上的ASIC的其他组织。
[0526] 在一些实施方式和/或使用场景中,与神经网络中的层相关联的神经元通常以从左到右的方式放置在PE 499元件上,较早的层(例如,输入层)在左边,随后的层(例如,输出
层)在右边。因此,训练期间的数据流在概念上被示为虚线箭头前向401、增量402和链403。
在前向401期间,刺激被施加到输入层,并且激活从输入层流向后一层,最终到达输出层并
产生前向结果。在增量402期间,增量(例如,前向结果和训练输出数据之间的差异)在反向
传播。在链403期间,梯度是基于在增量402期间生成的增量(例如,相对于神经元中的权重)
来计算的。在一些实施方式和/或使用场景中,增量402的处理基本上与403的处理重叠。
[0527] 在一些实施方式和/或使用场景中,深度学习加速器400是图1的深度学习加速器120的实现。在一些实施方式和/或使用场景中,单独PE 499元件对应于图1的PE 122的单独
PE。在一些实施方式和/或使用场景中,每个ASIC 410元件或可选地每个ASIC 411元件对应
于作为单独集成电路实现的PE 122的全部或任何部分PE。在一些实施方式和/或使用场景
中,每个ASIC 410元件或可选地每个ASIC 411元件对应于经由晶片的相应管芯实现的PE 
122的部分(可选地相同)。在一些实施方式和/或使用场景中,I/O FPGA 420元件共同对应
于图1的FPGA 121。
[0528] 在一些实施方式和/或使用场景中,将神经元(例如,与神经网络中的层相关联)放置到PE 499元件上是由图2的放置服务器SW 210的全部或任何部分全部或部分执行的。
[0529] 处理元件:计算元件和路由器
[0530] 图5示出了作为深度学习加速器的PE 500的PE的实施方式的选定细节。PE 500包括路由器510和计算元件520。路由器510经由耦合器511‑516,选择性地和/或有条件地在其
他PE(例如,逻辑上相邻和/或物理上相邻的PE)和即时PE之间传送小波。路由器510选择性
地和/或有条件地经由出口匝道521将小波传送给即时PE,并经由入口匝道522将小波从即
时PE传送出去。计算元件520根据可从小波导出的指令地址信息对包含在小波中的数据执
行计算。指令地址信息用于识别作为存储在计算元件的存储器中的指令实现的任务的起始
地址。
[0531] 在各种实施方式中,省略511‑516中的任何一个或多个。
[0532] 在一些实施方式和/或使用场景中,PE 500是图4的PE 499的实施方式,和/或PE 500的元件对应于PE 499的实现。在一些实施方式和/或使用场景中,北513、东515、南516和
西511分别对应于图4的北耦合器430、东耦合器431、南耦合器432和西耦合器433。
[0533] 图6示出了PE的路由器作为路由器600的实施方式的选定细节。考虑有多个PE点,每个PE点包括相应的路由器和相应的CE。路由器600是相应路由器中的一个的实例。路由器
600根据小波的颜色信息和路由配置信息,将小波路由到即时路由器所包含的PE的CE以及
其他路由器。路由的小波由即时路由器不同地接收和/或由在其中包含即时路由器的PE的
CE生成。该路由支持PE之间的通信。传输停滞信息,以防止路由器600中小波存储资源溢出。
[0534] 路由器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。
[0535] 数据队列650耦合到写入解码651,以接收输入小波信息,并耦合到输出652,以提供输出小波信息。数据队列650还耦合到生成停滞656,以提供数据队列有效性信息。路由器
调度654耦合到控制信息660,以接收与调度排队小波相关的控制信息。路由器调度654还耦
合到Stall 657,以接收与调度排队小波相关的停滞信息。路由器调度654进一步耦合到输
出652,以在621‑627中的一个或多个上引导排队小波的呈现。路由器调度654还耦合到生成
停滞656,以部分地引导生成停滞信息。
[0536] 在各种实施方式中,接口元件611‑617、621‑627、631‑637和641‑647中的每一个经由无源互连(例如,没有缓冲的线)、有源互连(例如,具有选择性和/或可选缓冲的线)以及
与逻辑的耦合器来不同地实现,以适应路由器600的一个实例和路由器600的另一实例之间
的额外功能。
[0537] 在一些实施方式和/或使用场景中,路由器600是图5的路由器510的实现方式。
[0538] 在一些实施方式中,数据输入610中的一个和数据输出620中的一个对应于西511、跳过西512、北513、跳过东514、东515、南516、出口匝道521和入口匝道522的部分。例如,入
口匝道617对应于入口匝道522,出口匝道627对应于出口匝道521。作为另一示例,Y+615包
括能够接收数据的北部513的部分,并且Y+625包括能够发送数据的北部513的部分。
[0539] 图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的任何
一个或多个元件的所有或任何部分执行的和/或与之相关的动作。
[0540] 图8示出了处理元件的计算元件的实施方式的选定细节,作为CE 800。
[0541] 在各种实施方式中,CE 800经由出口匝道820和入口匝道860耦合到路由器。CE 800包括Qdistr 824,该Qdistr 824耦合成经由出口匝道820接收小波。Qdistr 824耦合成
将小波传输到调度信息896。调度信息896包括Qs 897、活动位898和阻止位899。
[0542] 在各种实施方式中,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。
[0543] 在各种实施方式中,对于每种颜色都有不同的物理Q,对于预定的颜色子集具有一个或多个物理Q,对于动态确定的颜色子集具有一个或多个物理Q。在各种实施方式中,具有
不同的一个或多个相同大小的物理Q(例如,每个能够保持相同数量的小波)和一个或多个
不同大小的物理Q(例如,每个能够保持不同数量的小波)。在各种实施方式中,具有一个或
多个物理Q被不同地映射到虚拟Q,每个虚拟Q与一种或多种颜色相关联。例如,有N个逻辑Q,
少于N个物理Q。再如,Qs 897中的一些能够保持8个小波,而Qs 897中的另一些能够保持3个
小波。在一些实施方式中,估计和/或测量与Qs 897中的特定一个相关联的一种或多种颜色
的流量,并且Qs 897中的特定一个能够基于流量保持特定数量的小波。
[0544] 散列822耦合到Qdistr 824,并且至少部分基于小波的颜色(例如,通过对颜色应用散列函数),选择物理队列来存储小波。在一些实施方式中,与小波有效载荷相关联的颜
色明确地与小波有效载荷一起存储在队列中,使得队列中的条目保持整个小波(带颜色的
有效载荷)。在一些实施方式中,与小波有效载荷相关联的颜色没有明确地与小波有效载荷
一起存储在队列中,使得队列中的条目存储小波有效载荷,而不存储相关联的颜色。推理小
波有效载荷的颜色,例如,从小波有效载荷存储在的特定队列中推理。
[0545] 在一些实施方式中,活动位898和阻止位899中的一个或多个被实现为具有N个条目的相应位矢量,每个颜色一个条目。在各种实施方式中,活动位898和阻止位899中的一个
或多个被实现为表格中的相应位字段,该表格包括每种颜色的一个条目。
[0546] 选择器830耦合到调度信息896、RF 842、Dec 840、基部890、PC 834、I‑Seq和D‑Seq 844。选择器830能够从Qs 897中的一个中选择用于处理的小波。在一些实施方式中,选择器
830通过选择Qs 897中的一个并选择所选队列中最早的小波来选择小波。在某些情况下,当
Dec 840表示已解码终止指令时,选择器830选择新的小波进行处理。在一些其他情况下(例
如,访问结构输入的指令),选择器830响应于从D‑Seq 844接收的队列标识符,从Qs 897中
的一个选择新的小波进行处理。
[0547] 选择器830从Qs 897中的一个接收所选择的小波,并且能够从所选择的小波向RF 842发送一个或多个数据和索引。在一些实施方式中,Qs 897耦合到数据路径852,并且数据
路径能够直接从一个Qs中接收数据。选择器830能够从基部890读取基部地址,并计算要发
送到PC 834和I‑Seq836的指令地址。基部890存储基部地址,并且还耦合到D‑Seq 844。PC 
834存储下一条要提取的指令的地址。在各种实施方式中,基部890和PC 834被实现为寄存
器。在一些实施方式中,D‑Seq 844能够至少部分基于从基部890读取的值,从基部890读取
基部地址,并且从内存854和数据存储848请求一个或多个地址处的数据。
[0548] I‑Seq 836耦合到PC 834,并且能够读取和修改PC 834(例如,对于顺序指令递增或者对于分支指令非顺序递增)。I‑Seq 836也耦合到内存854,并且能够向内存854提供指
令提取地址(例如,基于PC 834)。
[0549] 内存854还耦合到Dec 840、数据路径852和D‑Seq 844。响应于来自I‑Seq 836的指令提取地址,内存854能够向Dec 840(指令解码器)提供位于指令提取地址的指令。在各种
实施方式中,内存854能够响应于每个指令提取地址提供多达三条指令。在一些实施方式
中,根据图25A、图25B和图25C中的一个或多个来格式化指令。
[0550] Dec 840能够根据各种实施方式和/或使用场景来确定指令的一个或多个特征。例如,Dec 840能够将指令解析成操作码(例如,图25A的操作码2512)和零个或多个操作数(例
如,源和/或目的地操作数)。再如,Dec840能够根据指令类型(例如,分支指令或乘法累积指
令等)来识别指令。对于又一示例,Dec 840能够确定指令是特定指令,并相应地激活一个或
多个信号。
[0551] Dec 840经由终止812耦合到选择器830,并且能够表示一个解码指令是结束任务的终止指令(例如,响应于响应于所选小波而启动的任务而执行的指令的最后一条指令)。
[0552] 在某些情况下,Dec 840能够解码分支指令。分支指令的示例包括:有条件地修改PC 834的条件分支指令和无条件地修改PC 834的跳转指令。分支指令由I‑Seq 836执行,并
且可选地和/或有条件地修改PC 834。在某些情况下,分支指令通过有条件地修改PC 834来
实现软件控制流(例如,循环)。
[0553] 响应于对指令(例如,乘法累积指令)的解码,Dec 840能够将操作码发送到数据路径852。Dec 840耦合到DSR 846,并能够向DSR 846发送一个或多个操作数标识符。Dec 840
还耦合到D‑Seq 844,并且能够将一个或多个操作数类型标识符传输到D‑Seq 844。
[0554] DSR 846包括保存数据结构描述符(DSD)的寄存器,并且耦合到并能够向D‑Seq 844发送一个或多个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发送数据。
[0555] 在一些实施方式中,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位。
[0556] D‑Seq 844还耦合到数据存储848、RF 842和选择器830,并且能够响应于从DSR 846接收到的DSD开始访问各种源的矢量数据。在一些情况下(例如,响应于接收描述1D内存
矢量、4D内存矢量和循环内存缓冲器中的一个的DSD),D‑Seq 844能够计算要访问的存储地
址序列(例如,在内存854和/或数据存储848中)。在一些其他情况下(例如,响应于接收描述
结构输入的DSD),D‑Seq 844能够经由选择器830从Qs 897中的一个开始读取结构数据。在
其他情况下(例如,响应于接收描述结构输出的DSD),D‑Seq 844能够开始将数据转换成小
波,并经由入口匝道860将小波传输到结构。在一些实施方式中,D‑Seq 844能够同时访问三
个源处的矢量数据(例如,从存储器读取矢量数据、从结构输入读取矢量数据、以及将矢量
数据写入结构输出)。
[0557] 在一些实施方式中,D‑Seq 844能够访问RF 842中的一个或多个寄存器中的数据(例如,具有一个或多个输入操作数和/或一个输出操作数的指令)。在某些情况下,D‑Seq 
844能够从RF 842中的寄存器请求操作数。在又一些情况下,D‑Seq 844能够从RF 842中的
寄存器(例如,索引)请求数据,作为根据DSD计算要访问的存储器地址序列的输入。
[0558] 数据路径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位宽,并且能够存储整数或浮点数据。
[0559] 在一些实施方式中,数据存储848是一类比内存854更小且更有效(例如,每读取一位数据的焦耳数更低)的内存。在一些实施方式中,数据存储848是一种比内存854具有相对
较低容量(例如,保留较少信息)和相对较低访问等待时间和/或相对较高吞吐量的存储器。
在某些情况下,更频繁使用的数据存储在数据存储848中,而不太频繁使用的数据存储在内
存854中。在一些实施方式中,数据存储848包括第一地址范围,内存854包括第二非重叠地
址范围。
[0560] 在一些实施方式和/或使用场景中,该图的元件对应于图5的计算元件520的实现,并且出口匝道820和入口匝道860分别对应于图5的出口匝道521和入口匝道522。
[0561] 图8中示出的分隔和耦合仅仅是说明性的,因为其他实施方式预期具有不同的分隔和/或耦合。例如,在其他实施方式中,RF 842和DSR 846组合成一个模块。在其他实施方
式中,DSR 846和数据路径852耦合。
[0562] 任务
[0563] 图9示出了为任务启动处理小波的实施方式的选定细节,作为流程900。从概念上讲,该处理包括通过确定开始提取和执行任务指令的地址来启动任务。至少部分基于小波
包含的信息来确定该地址。
[0564] 在一些实施方式中,通过从例如一个或多个用于处理的队列中选择就绪小波(选择就绪小波用于任务启动905),开始处理用于任务启动的小波(开始901)。在一些实施方式
中,基于以下中一个或多个选择小波:与每个队列相关联的阻止/解除阻止状态、与每个队
列相关联的活动/非活动状态、先前选择的小波的颜色以及调度算法。
[0565] 在选择就绪小波之后,检查小波,以确定小波是控制小波还是数据小波(控制/数据?908)。如果小波是控制小波,则通过将小波索引的低六位添加到基部寄存器(将低索引
位添加到基部寄存器,以形成指令地址930),来计算与控制小波相关联的任务的起始地址。
如果小波不是控制小波,则小波就是数据小波。通过将基部寄存器添加到小波的颜色乘以4
(将(颜色*4)添加到基部寄存器,以形成指令地址920),来计算与数据小波相关联的任务的
起始地址。无论是为控制小波计算还是为数据小波计算,任务的起始地址都对应于任务指
令的起始地址。
[0566] 一旦计算出指令的起始地址,就从起始指令地址中提取指令(在指令地址950从存储器中提取指令)。解码和执行一个或多个提取的指令(执行提取的指令960)。提取和执行
(如动作950和960所示)继续(不终止961),直到执行终止指令(终止962),然后完成与启动
的任务相关联的处理(结束990)。在一些实施方式中,终止指令是与处理小波相关联的最后
一条指令。在所启动的任务完成之后,流程可选地和/或选择性地继续处理用于任务启动的
另一小波,从开始901开始。
[0567] 根据各种使用场景,执行(执行提取的指令960)包括执行顺序和/或控制流指令,并且用于提取的指令地址相应地变化(在指令地址950从存储器中提取指令)。
[0568] 为任务启动选择的就绪小波由特定颜色组成。在一些实施方式和/或使用场景中,一旦为任务启动选择了就绪小波(为任务启动选择就绪小波905),消耗接收到的特定颜色
的其他小波(如果有的话),作为用于执行指令的操作数(执行提取的指令960)。包括作为操
作数的特定颜色的小波的消耗继续,直到提取并执行终止指令(终止962)。
[0569] 在一些实施方式和/或使用场景中,流程900的所有或任何部分的动作在概念上对应于由PE的CE(例如,图8的CE 800)执行的操作和/或元件和/或在概念上与其相关。作为一
个示例,阻止位899对应于与每个队列相关联的阻止/解除阻止状态。活动位898对应于与每
个队列相关联的活动/非活动状态。作为另一示例,动作905的部分由选择器830执行。选择
器830根据诸如循环或从最后拾取等调度策略,从准备好的Qs 897中的一个中选择最早的
小波(例如,未设置相关联的一个阻止位899,而设置了相关联的一个活动位898)。选择器
830选择的小波包括根据图13A和图13B中的一个格式化的颜色和小波有效载荷。
[0570] 作为另一示例,由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。
[0571] 作为另一示例,由CE 800的元件执行动作950,例如,PC 834、I‑Seq836和内存854。由CE 800的元件执行动作960,例如,Dec 840、D‑Seq 844、内存854、RF 842和数据路径852
等。执行包括终止指令的执行。终止指令的一个示例是坚持终止位的指令。在该示例的上下
文中,当Dec 840解码终止指令时,Dec 840经由终止812向选择器830发送小波完成的信号,
选择器830选择另一小波进行处理,例如对应于动作905。
[0572] 在各种实施方式和/或使用场景中,为任务启动900处理小波的所有或任何部分元件在概念上对应于执行图2的PE 260上的任务SW的指令的所有或任何部分。
[0573] 在各种实施方式和/或使用场景中,包括流程900的所有或任何部分的动作在概念上不同地对应于图15A的流程1500和/或图15B的流程1550的所有或任何部分。例如,动作
905包括动作1552的全部或任何部分,并且动作908、920、930、950和960包括动作1553的全
部或任何部分。
[0574] 图10示出了与处理元件的计算元件相关联的指令处理的实施方式的选定细节,作为指令处理1000。
[0575] 在一些实施方式和/或使用场景中,指令处理1000的所有或任何部分的动作对应于由PE的CE(例如,图8的CE 800)执行的操作和/或元件或在概念上与其相关。
[0576] 图11示出了经由结束与依赖性管理相关联的流程的实施方式的选定细节,作为依赖性管理1100。
[0577] 在一些实施方式和/或使用场景中,依赖性管理1100的所有或任何部分动作对应于图1的PE 122执行的操作和/或元件或在概念上与其相关。在一些实施方式和/或使用场
景中,依赖性管理1100的元件的全部或任何部分在概念上对应于执行图2的PE 260上任务
SW的指令的全部或任何部分。
[0578] 图12示出了与激活累积和收尾相关联的流程的实施方式的选定细节,随后是部分和计算和收尾,作为激活累积/收尾和部分和计算/收尾1200。
[0579] 在一些实施方式和/或使用场景中,激活累积/收尾和部分和计算/收尾1200的所有或任何部分动作对应于图1的PE 122执行的操作和/或元件或在概念上与其相关。在一些
实施方式和/或使用场景中,激活累积/收尾和部分和计算/收尾1200的元件的全部或任何
部分在概念上对应于执行PE 260上的任务SW的指令的全部或任何部分。在各种实施方式
和/或使用场景中,收尾(例如,与动作1210相关联)是控制小波的示例。
[0580] 小波
[0581] 图13A作为稀疏小波1301示出稀疏小波实施方式的选定细节。稀疏小波1301包括稀疏小波有效载荷1302和颜色1324。稀疏小波有效载荷1302包括索引1321、稀疏数据1322
和控制位1320。索引1321包括低索引位1321.1和高索引位1321.2。
[0582] 在一些实施方式中,稀疏数据1322包括16位浮点数或16位整数的字段。在各种情况下,稀疏数据1322不同地表示神经网络的权重、神经网络的输入或刺激、神经网络的激活
或神经网络的部分和。
[0583] 在一些实施方式中,索引1321包括16位字段。在某些情况下,索引1321是整数,并且是明确指示神经网络的特定神经元的索引。在一些实施方式中,较低索引位1321.1是6
位,而较高索引位1321.2是10位。
[0584] 在一些实施方式中,控制位1320是1位字段。在某些情况下,控制位1320指示稀疏小波有效载荷1302是触发控制活动还是数据活动。在某些情况下,控制活动包括计算神经
元的最后激活,数据活动包括计算不是最后激活的神经元的激活。在一些实施方式和/或使
用场景中,控制活动包括结束活动,例如,与图11的从先前层1110结束和/或到下一层1122
结束中的任何一个或多个以及图12的接收激活收尾1204和/或传输收尾1210中的任何一个
或多个相关联。
[0585] 在一些实施方式中,颜色1324包括5位字段。在一些实施方式中,颜色对应于共享物理信道上的虚拟信道,例如,经由根据颜色的路由。在某些情况下,颜色用于特定目的,例
如,向处理元件发送配置信息,或者向映射到处理元件的神经元发送神经网络的输入。
[0586] 图13B示出了密集小波的实施方式的选定细节,作为密集小波1331。密集小波1331包括密集小波有效载荷1332和颜色1344。密集小波有效载荷1332包括密集数据1343.1、密
集数据1343.2和控制位1340。
[0587] 在一些实施方式中,控制位1340是1位字段,并且功能上与控制位1320相同。
[0588] 在一些实施方式中,颜色1344包括5位字段,并且在功能上与颜色1324相同。
[0589] 在某些情况下,密集数据1343.1和密集数据1343.2包括相应16位浮点数或相应16位整数的字段。在各种情况下,密集数据1343.1和密集数据1343.2不同地表示神经网络的
权重、神经网络的输入或刺激、神经网络的激活或神经网络的部分和。在某些情况下,密集
数据1343.1和密集数据1343.2共同包括32位浮点数(例如,密集数据1343.1包括32位浮点
数的第一部分,密集数据1343.2包括32位浮点数的第二部分)。
[0590] 在各种实施方式和/或使用场景中,不同地预先确定和/或动态确定稀疏小波相对于密集小波的使用。在各种实施方式和/或使用场景中,由软件确定稀疏小波相对于密集小
波的使用。
[0591] 图14示出了创建和传输小波的实施方式的选定细节,作为小波创建流1400。小波创建流1400的动作由各种代理执行。传输PE包括执行动作1403‑1407的PE,如传输PE 1420
的CE所示。传输PE还包括执行动作1408的路由器,如传输PE 1430的路由器所示。接收PE包
括执行动作1409的路由器,如接收PE 1440的路由器所示。
[0592] 通过初始化至少一个传输PE和一个或多个接收PE以及包括实现耦合传输PE和接收PE的结构的路由器的任何PE(初始化PE 1402),开始创建和发送小波(开始1401)。每个PE
包括相应的路由器(例如,图5的路由器510)和相应的CE(例如,图5的计算元件520)。在某些
情况下,初始化PE使PE的CE能够执行计算,并使PE的路由器能够在结构上发送、接收和/或
转发小波。
[0593] 在各种实施方式中,DSR持有包含关于操作数的信息的DSD,例如,数据元素的位置(例如,存储器、结构输入和/或结构输出)、数据元素的数量(例如,长度)、数据元素的一个
或多个地址(例如,存储器中的起始地址和步幅)。对于结构输出操作数(例如,经由结构发
送的小波),DSR包括结构上小波的颜色、控制位以及可选的索引值或位置。
[0594] 在一些实施方式中,传输PE的CE配置源(设置源1403)。在某些情况下,源是描述源操作数的源DSD。在各种实施方式中,源DSD描述存储在高速缓存和存储器中的一个中的一
个或多个数据元素。在其他实施方式中,源DSD描述了经由结构接收的一个或多个数据元素
(例如,数据元素是经由结构到达的小波的有效载荷)。在一些其他情况下,源包括源寄存器
(例如,RF 842中的一个)。在其他情况下,源包括指令中指定的立即数。
[0595] CE还在描述结构目的地操作数(设置目的地(结构)DSR 1404)的目的地DSR中配置目的地DSD。在一些实施方式中,目的地DSD描述了经由结构传输的一个或多个数据元素。在
各种实施方式中,源和目的地DSD经由一个或多个指令来配置。
[0596] 随后,CE提取并解码包含由目的地DSR中的DSD指定的目的地操作数的指令(例如,FMACH、MOV、LT16)(具有目的地DSR 1404.5的提取/解码指令)。在一些实施方式中,指令的
操作数类型字段指定操作数是否由DSD指定。
[0597] CE从目的地DSR读取目的地DSD,并在源DSR中读取任何源DSD(读取DSR 1404.6)。基于DSD,CE确定数据结构的类型、数据元素的源、是否一起读取多个数据元素(例如,对于
SIMD运算)以及每个操作数的数据元素总数。在某些情况下,为以下中的一个或多个读取
DSR:源0操作数、源操作数和目的地操作数。在一些实施方式和/或使用场景中,完全或部分
并行读取DSR,并且在其他实施方式和/或使用场景中,完全或部分依次读取DSR。
[0598] 然后,传输PE的CE读取由源描述的数据元素(例如,源DSD或寄存器),并基于目的地DSD创建包括数据元素的小波。CE读取(例如,从内存)由源指定的第一数据元素(从队列/
内存1405读取(下一个)数据元素)。数据元素用于形成小波有效载荷。小波有效载荷的控制
位和小波的颜色由目的地DSD指定。将小波有效载荷和颜色提供给传输CE的路由器(将数据
元素作为小波提供给路由器1406)。在一些实施方式和/或使用场景中,使用单个数据元素
来创建稀疏小波的有效载荷。在其他实施方式和/或使用场景中,使用两个数据元素来创建
密集小波的有效载荷。
[0599] 传输PE的CE确定目的地数据元素是否指定了额外数据元素(更多数据元素?1407)。如果目的地DSD指定了额外的数据元素,则CE经由从队列/内存1405读取(下一个)源
数据元素、向路由器1406提供作为小波的数据元素以及更多数据元素?1407的动作来创建
额外的小波,直到目的地DSD没有指定额外数据元素。如果目的地DSD没有指定额外的数据
元素,则流程结束(结束1410)。在一些实施方式中,经由动作1406创建的小波与目的地DSR
指定的颜色相同。
[0600] 传输PE的路由器根据小波的颜色(将小波传输到结构1408),传输PE的CE形成的小波。在一些实施方式和/或使用场景中,直接发送到接收PE的路由器。在一些实施方式和/或
使用场景中,例如,经由根据颜色转发小波的一个或多个中间PE,间接发送到接收PE的路由
器。接收PE的路由器根据颜色接收小波(从结构1409接收小波)。
[0601] 在各种实施方式中,相对于动作1405、1406和1407中的任何一个或多个异步执行动作1408。例如,在如动作1408所示传输任何产生的小波之前,动作1406产生多个小波。
[0602] 在各种实施方式中,从结构1409接收小波在各方面对应于在图15的路由器1503接收小波。
[0603] 在各种实施方式和/或使用场景中,小波创建流1400的任何一个或多个元件的全部或任何部分在概念上对应于由PE(例如,图4的PE 499)执行的操作和/或PE的元件和/或
在概念上与其相关。
[0604] 在各种实施方式和/或使用场景中,小波创建流1400的任何一个或多个元件的全部或任何部分(例如,动作1403‑1407的任何一个或多个)在概念上对应于由计算元件执行
的操作和/或元件和/或在概念上与其相关,例如,PE的CE的全部或任何部分,例如,图5的计
算元件520和/或图8的CE 800。作为一个示例,目的地DSR(与设置DSR目的地(结构)DSR 
1404相关联)是DSR 846中的一个。在某些情况下,源DSR(与设置源1403相关联)是DSR 846
中的一个;在其他情况下,源寄存器(与设置源1403相关联)是RF 842中的一个。
[0605] 作为另一示例,作为传输PE的CE的CE 800响应于将信息从内存854复制到源DSR(例如,DSR 846中的一个)的加载DSR指令执行动作1403。在各种实施方式中,源DSR将数据
元素的位置指定为内存854、数据存储848和RF 842中的一个。在某些情况下,源DSR指定内
存854中的第一数据元素的地址(例如,地址0x0008)、多个数据元素(例如,九个数据元素)
以及后续数据元素之间的步幅(例如,12字节)。作为另一示例,CE 800通过将数据写入RF 
842的寄存器来执行动作1403。
[0606] 作为另一示例,作为传输PE的CE的CE 800响应于将信息从内存854复制到目的地DSR(例如,DSR 846中的一个)的加载DSR指令执行动作1404。在各种实施方式中,目的地DSR
指定将一个或多个数据元素转换成一个或多个小波,并由路由器510经由结构耦合的出口
端口(例如,北部513)传输。目的地DSR指定小波的颜色、小波的控制位、数据元素的数量(例
如,长度)以及关于小波索引的信息。在某些情况下,目的地DSR指定索引值,而在其他情况
下,目的地DSR指定索引值的位置(例如,在RF 842的寄存器中)。
[0607] 作为另一示例,作为传输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。
[0608] 作为另一示例,作为传输PE的CE的CE 800执行动作1406。根据目的地DSR,CE将一个或两个数据元素转换成小波有效载荷。在一些实施方式和/或使用场景中,CE将单个数据
元素转换成根据图13A的稀疏小波1301格式化的小波有效载荷。单个数据元素转换成稀疏
数据1322的实例化,由目的地DSR指定的索引值转换成索引1321的实例化,并且来自目的地
DSR的控制位转换成控制位1320的实例化,从而形成稀疏小波有效载荷1302的实例化。
[0609] 作为另一示例,作为传输PE的CE的CE 800将两个数据元素转换成根据图13B的密集小波1331格式化的小波有效载荷。第一数据元素转换成密集数据1343.1的实例化,第二
数据元素转换成密集数据1343.2的实例化。来自目的地DSR的控制位转换成控制位1340的
实例化,从而形成密集小波有效载荷1332的实例化。
[0610] 在各种实施方式和/或使用场景中,小波创建流1400的任何一个或多个元件的所有或任何部分(例如,动作1408和1409的任何一个或多个)在概念上对应于由路由器执行的
操作和/或路由器的元件和/或在概念上与其相关,例如,PE的路由器的所有或任何部分,例
如,图5的路由器510和/或图6的路由器600。
[0611] 作为一个示例,路由器600如下执行向结构1408传输小波,作为传输PE 1430的路由器。路由器600例如通过读取Dest 661来确定数据队列650中小波的目的地。对于每种颜
色,Dest 661指示输出目的地,例如,一个或多个数据输出620。路由器600经由输出652和一
个或多个数据输出620将小波有效载荷和颜色(统称为小波)传输到结构。在各种实施方式
中,传输PE的路由器600与动作1405、1406和1407中的任何一个或多个异步执行动作1408。
[0612] 作为另一示例,从结构1409接收小波由作为接收PE 1440的路由器的路由器600如下执行。路由器600经由数据输入610和写入解码651中的一个在数据队列650接收传输的小
波。接收的小波存储在数据队列650的一个或多个位置。
[0613] 在一些实施方式和/或使用场景中,小波创建流1400的元件的全部或任何部分在概念上对应于图2的PE 260上任务SW的执行指令的全部或任何部分。
[0614] 图15A示出了接收小波的实施方式的选定细节,作为小波接收流程1500。小波接收流程1500的动作由各种代理执行。接收PE包括执行动作1503‑1506的路由器,如接收PE的路
由器1520所示。接收PE还包括执行动作1507的CE,如接收PE 1530的CE所示。
[0615] 通过初始化至少一个传输PE点和一个或多个接收PE点以及包括实现耦合传输PE和接收PE的结构的路由器的任何PE,开始接收小波(开始1501)(初始化PE 1502)。每个计算
元件包括相应的路由器(例如,图5的路由器510)和相应的CE(例如,图5的计算元件520)。在
某些情况下,初始化PE,使PE的CE能够执行计算,并使PE的路由器能够通过结构发送、接收
和/或转发小波。
[0616] 以下描述假设有一个接收PE。在存在多个接收PE的使用场景中,每个接收PE的相应路由器和CE执行根据图15A的处理。
[0617] 接收PE的路由器接收由传输PE发送的结构(在路由器1503处接收小波)的‘颜色上’的小波(例如,小波包括颜色)。路由器基于颜色检查小波的目的地,例如,通过读取配置
寄存器。如果小波的目的地包括其他PE(到其他PE?1504),则路由器将小波传输到目的地
PE。路由器将小波发送到路由器的输出(将小波传输到输出1505),小波从输出通过结构传
输到目的地PE。如果小波的目的地不包括其他PE,则省略传输。
[0618] 如果小波的目的地不包括本地CE(针对本地CE?1506),则不采取进一步的动作(结束1510)。如果小波的目的地中的一个是本地CE,则路由器经由出口匝道向本地CE提供小
波,并且小波写入与接收到小波的颜色相关联的选择器队列(将小波写入选择器队列
1507),从而接收小波(结束1510)。
[0619] 在各种实施方式和/或使用场景中,小波接收流程1500的任何一个或多个元件的全部或任何部分(例如,动作1503‑1506的任何一个或多个)在概念上对应于由路由器执行
的操作和/或路由器的元件和/或在概念上与其相关,例如,PE的路由器的全部或任何部分,
例如,图5的路由器510和/或图6的路由器600。
[0620] 作为一个示例,当在一个数据输入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。
[0621] 在各种实施方式和/或使用场景中,小波接收流程1500的任何一个或多个元件的所有或任何部分(例如,动作1507)在概念上对应于由计算元件执行的操作和/或计算元件
的元件和/或在概念上与其相关,例如,PE的CE的所有或任何部分,例如,图5的计算元件520
和/或图8的CE 800。作为一个示例,通过经由出口匝道820向CE 800发送小波并将小波写入
Qs 897中的一个,来执行将小波写入选择器队列1507。
[0622] 在一些实施方式和/或使用场景中,小波由路由器接收、排队并路由到路由器输出端口,而没有小波是用于本地CE的任何特定确定。相反,去往本地CE的小波路由到出口匝
道,然后写入选择器队列。不去往本地CE的小波路由到非出口匝道路由器输出。
[0623] 图15B示出了消耗小波的实施方式的选定细节,作为小波消耗流程1550。小波消耗流程1550的动作由PE的CE执行。
[0624] 通过选择器从队列中选择小波进行处理(选择器选择小波进行处理1552),开始消耗小波(开始1551),然后CE处理小波。CE提取并执行与小波相关联的指令(提取、执行指令
1553),从而消耗小波(结束1554)。在一些实施方式和/或使用场景中,提取和执行与小波相
关联的指令以提取和执行终止指令结束。
[0625] 在一些实施方式中,选择器选择小波用于处理1552由图8的选择器830执行。在各种情况下,选择器830根据诸如循环或从最后拾取等调度策略,选择准备好的Qs 897中的一
个中(例如,阻止位899和活动位898设置为特定值)。在一些实施方式中,小波消耗流程1550
的部分对应于为图9的任务启动900处理小波的部分。作为一个示例,动作1552对应于动作
905。作为另一示例,动作1553对应于动作908、920、930、950和960。
[0626] 在一些其他情况下,在CE上执行的指令(例如,FMACH)访问小波,作为操作数,并且小波在指令执行期间被CE消耗,例如,如图23所示。
[0627] 阻止和解除阻止
[0628] 图16作为流程1600示出了阻止指令和解除阻止指令执行的实施方式的选定细节。从概念上讲,执行指定特定颜色的阻止指令,防止执行与特定颜色相关联的指令,至少直到
执行指定特定颜色的解除阻止指令。
[0629] 参考该图,通过从存储器中提取指令并解码该指令(提取、解码指令1602),开始执行指令(开始1601)。如果指令解码成阻止指令(阻止指令?1603),则执行阻止操作(阻止颜
色1604)。阻止指令的源操作数相对于与阻止/未被阻止的颜色相关联的指令处理指定要阻
止的一种或多种颜色。在各种实施方式和/或使用场景中,通过将由源操作数指定的一种或
多种颜色的一个或多个阻止指示符设置为阻止状态来执行阻止操作,并且执行完成(结束
1630)。在各种情况下,源操作数不同地指定阻止单一颜色、阻止所有颜色和阻止任意多种
颜色。在随后的操作中,不选择由相应的阻止指示符被设置为阻止状态的颜色组成的小波
进行处理。
[0630] 如果指令解码为解除阻止指令(解除阻止指令?1610),则执行解除阻止操作(解除阻止颜色1611)。解除阻止指令的源操作数指定一种或多种颜色,以相对于与阻止/解除阻
止的颜色相关联的指令处理来解除阻止。在各种实施方式和/或使用场景中,通过将由源操
作数指定的一种或多种颜色的阻止指示符重置为解除阻止状态来执行解除阻止操作,并且
执行完成(结束1630)。在各种情况下,源操作数不同地指定解除阻止单一颜色、解除阻止所
有颜色以及解除阻止任意多种颜色。在随后的操作中,可选择由相应的阻止指示符被设置
为解除阻止状态的颜色组成的小波进行处理。
[0631] 如果该指令解码为不是阻止指令并且不是解除阻止指令的指令,则执行该指令(执行指令1620)并且执行完成(结束1630)。
[0632] 在一些实施方式中,如果阻止操作的源操作数是立即数(例如,8位立即数),则立即数的值指定要阻止的颜色。如果源操作数不是立即的,则会阻止所有颜色。
[0633] 在一些实施方式中,解除阻止操作的源操作数是立即数(例如,8位立即数),并且立即数的值指定要解除阻止的颜色。在各种实施方式中,具有特定操作数的解除阻止操作
解除阻止多种颜色。
[0634] 在各种实施方式和/或使用场景中,阻止和解除阻止指令处理流程1600的任何一个或多个元件的全部或任何部分在概念上对应于由计算元件(例如,PE的CE的全部或任何
部分,例如,图5的计算元件520和/或图8的CE 800)执行的操作和/或计算元件的元件和/或
在概念上与其相关。
[0635] 作为一个示例,阻止位899包括每种颜色的一个位(例如,作为表中的条目,或者作为位掩码)。阻止操作(阻止颜色1604)通过将阻止位899设置为由源操作数指定的一种或多
种颜色的特定阻止值(例如,‘1’)来执行。在一些实施方式中,选择器830从阻止位899与解
除阻止值(例如,‘0’)匹配的颜色中选择小波进行处理。作为另一示例,解除阻止操作(解除
阻止颜色1611)通过将阻止位899设置为由源操作数指定的颜色的特定解除阻止值(例如,
‘0’)来执行。在一些实施方式中,选择器830选择包括阻止位899与解除阻止值(例如,‘0’)
匹配的颜色的小波。
[0636] 在一些实施方式中,阻止和解除阻止指令处理流程1600的部分对应于图9的任务启动900的处理小波的部分。作为一个示例,动作1602、1603、1604、1610、1611和1620对应于
图9的动作950和960的部分。
[0637] 在各种实施方式和/或使用场景中,阻止和解除阻止指令处理流程1600的元件的全部或任何部分在概念上对应于图2的PE 260上任务SW的执行指令的全部或任何部分。
[0638] 神经元涂抹
[0639] 图17示出了作为神经网络1700的神经网络的实施方式的选定细节。网络1700包括三个部分:输入层1710、内层1720和输出层1740。每层包括多个神经元。输入层171包括神经
元N11 1711、N12 1712和N13 1713。内层1720包括第一层神经元N21 1721、N22 1722、N23 
1723和N24 1724,接着是第二层神经元N31 1731、N32 1732和N33 1733。输出层1740包括神
经元N41 1741和N42 1742。
[0640] 图中突出显示了选定的神经元(N21 1721、N22 1722、N23 1723和N24 1724以及N31 1731和N32 1732)以及选定的神经元之间的通信(1791、1792和1793)。下面将更详细地
讨论选定的神经元和路径。
[0641] 图18A示出了将处理元件分配给神经元的第一实施方式的选定细节。有时,将处理元件分配给神经元被称为将神经元放置在处理元件中,或者替代地放置神经元。图18A中相
同编号的元件对应于图17中相同编号的元件。从概念上示出了处理元件到图17的神经元子
集(突出显示的神经元N21 1721、N22 1722、N23 1723和N24 1724以及N31 1731和N32 
1732)的第一分配。图中的垂直距离表示五个处理元件PE0 1820、PE1 1821、PE2 1822、PE3 
1823、PE4 1824和PE5 1825中每一个的计算资源的相对使用。
[0642] 神经元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
中每一个的计算资源的一半。在各种实施方式中,计算资源的示例包括计算操作、存储容
量、从存储器读取带宽、向存储器写入带宽、来自其他神经元的输入连接以及到其他神经元
的输出连接。
[0643] 在示出的实施方式中,分配神经元处理,使得每个前述神经元分配给整个PE。更具体地,N21 1721分配给PE0 1840,N22 1722分配给PE1 1841,N23 1723分配给PE 21842,N24 
1724分配给PE3 1843,N31 1731分配给PE4 1844,N32 1732分配给PE5 1845。因此,六个处
理元件中的四个完全订阅(PE0 1820、PE1 1821、PE2 1822和PE3 1823),而六个处理元件中
的两个仅订阅了一半(PE4 1824和PE5 1825)。
[0644] 图18B示出了将处理元件分配给神经元的第二实施方式的选定细节。
[0645] 图18B中相同编号的元件对应于图17和图18A中相同编号的元件。从概念上示出了处理元件到图17的神经元子集(突出显示的神经元N21 1721、N22 1722、N23 1723和N24 
1724以及N31 1731和N32 1732)的第二分配。如图18A所示,图中的垂直距离表示五个处理
元件PE0 1820、PE1 1821、PE2 1822、PE3 1823、PE4 1824和PE5 1825中每一个的计算资源
的相对使用。同样如图18A所示,N31 1731和N32 1732中的每一个表示大约N21 1721、N22 
1722、N23 1723和N24 1724中的每一个的计算资源的一半。
[0646] 在示出的实施方式中,分配神经元处理,使得相应神经元的处理“涂抹”在处理元件上。从概念上讲,神经元被“分割”成适合处理要分配给的元件的部分。如图所示,分割神
经元并分配处理元件,使得六个处理元件中的四个相等地(并且完全地)订阅(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)分配给两个相应的处理元件(PE1 
1821和PE3 1823)。N31 1731分成四分之四(1/4 N31 1731.1、1/4 N31 1731.2、1/4 N31 
1731.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 N32 
1732.3和1/4 N32 1732.4)分配给四个相应的处理元件(PE0 1820、PE1 1821、PE2 1822和
PE3 1823)。在各种实施方式中,基于与神经元相关联的一个或多个计算资源来分割神经元
并分配处理元件。在一些实施方式中,基于处理元件中可用的硬件资源,分割神经元,并且
分配处理元件(例如,一些神经元需要特定的硬件资源,例如,PRNG)。
[0647] 图19示出了在多个处理元件上涂抹神经元的实施方式的选定细节。分割导致分割的神经元的一部分涂抹在处理元件上。图19中相同编号的元件对应于图17、图18A和图18B
中相同编号的元件。如图18B所示,N21 1721分成分别由PE0 1820和PE2 1822实现的两个部
分1/2 N21 1721.1和1/2 N21 1721.2。
[0648] 从概念上讲,N21 1721被认为包括本地计算和本地存储以及输入和输出。N21 1721的各元件被分别分区。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。
[0649] 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以及out1 
1921由PE0 1822实现。
[0650] 在一些实施方式和/或使用场景中,至少部分地通过神经元没有执行/使用的额外计算、额外存储和/或额外通信来实现在一个以上的处理元件上涂抹神经元。额外计算、额
外存储和/或额外通信能够例如将来自神经元部分的部分结果组合成对应于整个神经元结
果的结果。额外计算1950.1和额外存储1960.1表示1/2 N21 1721.1的额外计算和额外存
储,并且由PE0 1820实现。额外计算1950.2和额外存储1960.2表示1/2 N21 1721.2的额外
计算和额外存储,并且由PE0 1822实现。
[0651] 额外通信1970表示1/2 N21 1721.1和1/2 N21 1721.2之间的额外通信,并通过PE0 1820和PE0 1822之间的结构连接来实现。在一些实施方式和/或使用场景中,额外通信
1970的全部或任何部分表示如果单个处理元件完全实现N21 1721,则单个处理元件内部将
发生的通信。
[0652] 图20示出了分割神经元部分之间通信的实施方式的选定细节。图20中相同编号的元件对应于图17、图18A、图18B和图19中相同编号的元件。PE0 1820、PE1 1821、PE2 1822和
PE3 1823到神经元部分的分配如图18B所示。为了清楚起见,仅示出了特定于PE0 1820和
PE1 1821的分配。
[0653] 晶片部分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中。
[0654] 作为第一示例,通信部分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之间的耦合部分)传输到PE0 
1820(分配给1/2 N21 1721.1)。在一些实施方式和/或使用场景中,通信1791分成两部分,
即,通信部分1791.1(示出)和通信部分1791.2(未示出)。在一些实施方式和/或使用场景
中,通信部分1791.1和通信部分1791.2经由相同的虚拟信道传输。在一些实施方式和/或使
用场景中,通信部分1791.1和通信部分1791.2经由相应的唯一虚拟信道传输。
[0655] 作为第二示例,通信部分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 N31 
1731.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的其
他部分(未示出)经由相同的虚拟信道、经由每个部分的唯一虚拟信道、经由与特定神经元
相关联的每个部分的虚拟信道和/或经由与特定处理元件相关联的每个部分的虚拟信道传
输。
[0656] 作为第三示例,通信部分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/2 
N23 1723.1和1/4 N31 1731.2)内部的一个或多个机制传输。例如,PE1 1821使用内部资源
(例如,路由器)来内部反馈输出,作为输入,和/或从输出内部提供输入。在一些实施方式
和/或使用场景中,通信部分1793.1经由虚拟信道传输,该虚拟信道导致输出用作输入,和/
或从输出提供输入。
[0657] 作为第四示例,通信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和在处理元件上分割的神经元的所有或任何部分共享的虚拟信道。
[0658] 在一些实施方式和/或使用场景中,晶片部分2000的全部或任何部分包括图1的PE 122。在一些实施方式和/或使用场景中,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中的任何一个或多个。
[0659] 与神经元涂抹相关的概念(例如,参考图17、图18A、图18B、图19和图20所描述和示出的)适用于各种拓扑和类型的神经网络,例如,FCNN、RNN、CNN、LSTM网络、自动编码器、深
度信任网络和生成对抗网络。
[0660] 在各种实施方式和/或使用场景中,神经元分成相同大小的部分,例如,一半、四分之一、八分之一等。在各种实施方式和/或使用场景中,神经元分成不同大小的部分,例如,
第一部分是一半,第二和第三部分分别是四分之一。在各种实施方式和/或使用场景中,神
经元分成任意大小的部分。
[0661] 在各种实施方式和/或使用场景中,多个PE分配给单个神经元。在各种实施方式和/或使用场景中,单个PE分配给多个神经元的相应整体。
[0662] 在各种实施方式和/或使用场景中,PE分配给神经元完全或部分响应于计算和/或存储需求的静态和/或动态测量。在各种实施方式和/或使用场景中,PE分配给神经元完全
或部分响应于待处理数据的维度。
[0663] 在各种实施方式和/或使用场景中,由箭头方向表示的数据流是单向的(如绘制的箭头所示)、双向的和/或反向的(相对于绘制的箭头)。作为具体示例,在各种实施方式和/
或使用场景中,(图17的)通信1792表示从N21 1721到N31 1731(例如,在前向传播期间)或
者从N31 1731到N21 1721的反向(例如,在后向传播期间)的数据流。因此,在从PE0 1820到
PE1 1821(例如,在前向传播期间)以及从PE1 1821到PE0 1820的反向(例如,在后向传播期
间)发生通信部分1792.1以及因此在(相邻PE之间的耦合部分)2057上的通信。
[0664] 矢量和数据结构描述符
[0665] 在各种实施方式和/或使用场景中,执行一个或多个矢量的处理,每个矢量包括相应的一个或多个数据元素。矢量从存储器(例如,PE的CE的存储器,例如,图8的内存854或数
据存储848)中不同地读取,写入存储器,从结构接收,或传输到结构。从存储器读取或写入
存储器的矢量有时称为‘内存矢量’。从结构接收或传输到结构的矢量(例如,作为小波)有
时称为‘结构矢量’。DSR中的DSD(以及XDSR中的XDXD)可用于确定内存矢量的寻址模式和结
构矢量的访问模式。
[0666] 在对图21A至图21E、图22A至图22B和图23至图24的描述中,具有第一数字“8”的每个元件标识符是指图8的元件,为了简洁起见,没有另外具体地标识为图8的元件。
[0667] 图21A示出了作为结构输入数据结构描述符2100的结构输入数据结构描述符(又名结构输入DSD)的实施方式的选定细节。在一些实施方式中,结构输入数据结构描述符
2100描述由PE从结构接收的结构矢量以及与结构矢量的处理相关的各种参数。在各种实施
方式和/或使用场景中,指令的源0操作数或源1操作数是指根据结构输入数据结构描述符
2100包含DSD实例的DSR。
[0668] 结构输入数据结构描述符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。
[0669] 在一些实施方式中,长度2101包括指定矢量长度的15位整数,例如,矢量中数据元素的数量。
[0670] 在一些实施方式中,UE(微线程启用)2103包括1位字段,该字段指示在至少一些条件下,是否在处理结构矢量期间启用微线程,该结构矢量有时称为‘启用微线程’。如果指令
的至少一个操作数(源或目的地)是启用微线程的结构矢量,则在指令处理期间,在输入或
输出停滞上,处理能够切换到另一任务的另一指令(假设有足够的微线程资源可用)。当清
除停滞时,处理(最终)返回到先前停滞的指令。示例输入停滞是当输入结构矢量操作数的
至少一个元件不可用时。示例输出停滞是没有足够的空间来缓冲与输出结构矢量的元件相
关联的结果。在某些情况下,不启用微线程的结构矢量同步处理,并在输入或输出停滞上停
止处理。在某些情况下,启用微线程的结构矢量异步处理,并减少或避免处理元件在输入或
输出停滞上停滞。如果结构矢量启用微线程,则处理元件能够有条件地切换为处理不同的
指令(而不是停滞),并且随后在稍后的时间点(例如,当数据可用时)恢复处理结构矢量。
[0671] 在一些实施方式中,UTID(微线程标识符)2102包括识别多个微线程中的一个和/或与多个微线程中的一个相关联的资源的3位字段。微线程和/或资源例如与启用微线程的
结构矢量相关联。在一些实施方式中,硬件为八个微线程提供资源。在一些实施方式和/或
使用场景中,UTID 2102识别或部分识别Qs 897中的一个。
[0672] 在一些实施方式中,SW(SIMD宽度)2104包括指定在一些实现中并行执行的操作数量(例如,一个、两个或四个)的2位字段。例如,FMACH、FADDH、FMULH或MOV16指令对相应的操
作数并行执行多个(最多四个)操作。在一些实现中,SW字段用于确定如何将小波解析成数
据和索引信息。例如,当SW字段为4时,两个小波(每个小波具有两个数据值(没有索引值))
提供四个操作数,例如,并行地。继续该示例,当SW字段为2时,具有两个数据值(并且没有索
引值)的单个小波提供两个操作数,例如,并行地。继续该示例,当SW字段为1时,具有单个数
据值和单个索引值的单个小波提供单个操作数。
[0673] 在一些实施方式中,AC(激活颜色)2105包括指定要激活的颜色的6位字段(例如,经由激活操作)。在某些情况下,当启用微线程的结构矢量的处理完成时,激活AC字段指定
的颜色,并基于激活的颜色启动任务。完成处理,例如,当已经处理结构矢量的所有元件时,
或者当Term 2106指示遇到控制小波时终止,并且在处理结构矢量时,遇到控制小波时。在
一些实施方式中,AC 2105能够指定以下中的一个:本地颜色和结构颜色。
[0674] 在一些实施方式中,Term(在控制小波上终止微线程)2106包括1位字段,该字段指定在接收到控制小波时是否终止。如果由结构输入数据结构描述符2100指定的队列头部的
小波(例如,由UTID 2102、SC 2112和/或SQ 2113的任意组合的各种功能不同地指定的Qs 
897中的一个,如本文别处所述)是控制小波(例如,设置了图13A的控制位1320或图13B的控
制位1340),并且设置了Term 2106,则指令终止,并且颜色由AC 2105激活。
[0675] 在一些实施方式中,CX(控制小波变换启用)2107包括指定是否变换控制小波的1位字段。如果设置了CX 2107,则响应于接收到结构矢量中的控制小波,索引寄存器的位15:
6被设置为所有“1”。在一些实施方式和/或使用场景中,如果索引寄存器的位15:6都是“1”,
则设置与引用索引寄存器的输出结构矢量相关联的任何输出小波的控制位。
[0676] 在一些实施方式中,US(微线程稀疏模式)2108包括1位字段,该字段指定是否以稀疏模式处理启用微线程(例如,经由UE字段)的结构矢量。如果设置了US 2108,则结构矢量
包括稀疏数据元素的矢量和由结构输入数据结构描述符2100描述的操作数的相应小波索
引。根据(图21C的)WLI 2152,索引可选地和/或选择性地用于存储器操作数的地址计算。
[0677] 在一些实施方式中,类型2109包括指定数据结构类型和/或如何解释结构输入数据结构描述符2100的其他字段的3位字段。对于结构输入数据结构描述符2100的所有实例,
类型2109是“0”。
[0678] 在一些实施方式中,SS(单步)2110包括1位字段,该字段指定对于使用DSD作为操作数的操作,在至少一些条件下是否启用单步模式操作。在某些情况下,具有启用单步模式
的一个或多个操作数的指令在单步模式中操作。
[0679] 在一些实施方式中,SA(保存地址/条件单步模式)2111包括1位字段,该字段指定对于使用DSD作为操作数的操作,在至少一些条件下是否启用保存地址模式操作。
[0680] 在一些实施方式和/或使用场景中,激活颜色,并且作为响应,至少部分基于颜色在地址处启动任务。一旦启动,任务就会执行。在某些情况下,从与当前正在执行的任务的
颜色相关联的队列中提供输入结构矢量。在一些实施方式中,SC(指定颜色、正常模式)2112
包括1位字段,如果设置该字段,则指定从与特定结构颜色相关联的特定队列(例如,Qs 897
中的一个)提供输入结构矢量。特定的结构颜色被指定(例如,作为5位颜色)为低位UTID 
2102(包括3位字段)和高位CH 2114(包括2位字段)的级联。在一些实施方式中,SQ(指定队
列,正常模式)2113包括1位字段,如果设置该字段,则指定从特定队列(例如,Qs 897中的一
个)提供输入结构矢量。如果设置了SQ 2113,则从由UTID 2102指定的Qs 897中的一个提供
输入结构矢量。
[0681] 图21B示出了作为结构输出数据结构描述符2120的结构输出数据结构描述符(又名结构输出DSD)的实施方式的选定细节。在一些实施方式中,结构输出数据结构描述符
2120描述了由PE创建并在结构上传输的结构矢量以及与结构矢量的处理相关的各种参数。
在各种实施方式和/或使用场景中,指令的目的地操作数是指包含根据结构输出数据结构
描述符2120的DSD的实例的DSR。
[0682] 结构输出数据结构描述符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。
[0683] 在一些实施方式中,结构输出数据结构描述符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和AC 
2105)相似。
[0684] 在一些实施方式中,颜色2126包括指定用于传输与结构矢量相关联的小波的结构颜色的5位字段。
[0685] 在一些实施方式中,C(输出控制位)2127包括指定小波是否是控制小波的1位字段。如果设置了C 2127,则基于DSD创建的任何小波都是控制小波(例如,设置了图13A的控
制位1320)。
[0686] 在一些实施方式中,索引低2128.1包括3位字段,索引高2128.2包括3位字段。索引低2128.1和索引高2128.2的串联统称为索引2128。在某些情况下,索引2128用于形成小波
的索引(例如,图13A的索引1321)。
[0687] 在一些实施方式中,类型2129包括指定数据结构类型和/或如何解释结构输出数据结构描述符2120的其他字段的3位字段。对于结构输出数据结构描述符2120的所有实例,
类型2129为“0”。
[0688] 在一些实施方式中,WLI(小波索引选择)2132包括1位字段,该字段部分指定结构矢量的索引。在某些情况下,如果WLI 2132是“1”,则索引是来自寄存器(例如,RF 842的
GPR4)的值。在某些情况下,如果WLI 2132是“0”,则索引是到索引2128的16位的零扩展。
[0689] 图21C示出了作为1D内存矢量数据结构描述符2140的1D内存矢量数据结构描述符(又名1D内存矢量DSD)的实施方式的选定细节。在一些实施方式中,1D内存矢量数据结构描
述符2140描述了存储在存储器中的一维内存矢量以及与内存矢量的处理相关的各种参数。
在各种实施方式和/或使用场景中,指令的源0操作数、源1操作数和目的地操作数中的任何
一个或多个是指根据1D内存矢量数据结构描述符2140的包含相应的DSD实例的相应的DSR。
[0690] 1D内存矢量数据结构描述符2140包括长度2141、基部地址2142、类型2149、SS(单步)2150、SA(保存地址/条件单步执行模式)2151、WLI(小波索引选择)2152和步幅2153。
[0691] 在一些实施方式中,相对于结构输入数据结构描述符2100的一些元素(长度2101、SS 2110和SA 2111),1D内存矢量数据结构描述符2140的一些元件(长度2141、SS 2150和SA 
2151)在功能和/或操作上分别类似。在某些情况下,如果内存矢量的长度大于15位,则使用
4D内存矢量数据结构描述符2140。
[0692] 在一些实施方式中,基部地址2142包括指定内存矢量的基部地址的15位整数。
[0693] 在一些实施方式中,类型2149包括指定数据结构类型和/或如何解释1D内存矢量数据结构描述符2140的其他字段的3位字段。类型2149对于1D内存矢量数据结构描述符
2140的所有实例都是“1”。
[0694] 在一些实施方式中,WLI(小波索引选择)2152包括1位字段,该字段部分指定矢量的索引。如果WLI 2152是“0”,则索引是0。在某些情况下,如果WLI 2152是“1”,则索引是来
自寄存器(例如,RF 842的GPR4)的值或者稀疏小波的索引(例如,图13A的索引1321)。
[0695] 在一些实施方式中,步幅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。
[0696] 图21D示出了作为4D内存矢量数据结构描述符2160的4D内存矢量数据结构描述符(又名4D内存矢量DSD)的实施方式的选定细节。在一些实施方式中,结合图22B的4D内存矢
量扩展数据结构描述符2240,4D内存矢量数据结构描述符2160描述了存储在存储器中的4
维内存矢量以及与内存矢量的处理相关的各种参数。在一些实施方式中,结合图22B的4D内
存矢量扩展数据结构描述符2240,4D内存矢量数据结构描述符2160描述了存储在内存中的
二维或三维内存矢量以及与内存矢量的处理相关的各种参数。在各种实施方式和/或使用
场景中,根据4D内存矢量数据结构描述符2160,指令的源0操作数、源1操作数和目的地操作
数中的任何一个或多个是指包含DSD的相应实例的相应DSR。
[0697] 4D内存矢量数据结构描述符2160包括长度低位2161.1、基部地址2162、类型2169、SS(单步)2170、SA(保存地址/条件单步模式)2171、WLI(小波索引选择)2172和长度高位
2161.2。
[0698] 在一些实施方式中,4D内存矢量数据结构描述符2160(基部地址2162、SS 2170、SA 2171和WLI 2172)的一些元件相对于1D内存矢量数据结构描述符2140(基部地址2142、SS 
2150、SA 2151和WLI 2152)分别在功能和/或操作上相似。
[0699] 在一些实施方式中,低位2161.1包括15位字段,长度高位2161.2包括9位字段。低位2161.1和高位2161.2的串联统称为(并示出为)长度2161(24位字段),结合4D内存矢量扩
展数据结构描述符2240来解释。
[0700] 在一些实施方式中,类型2169包括指定扩展DSR(XDSR)的3位字段,存储例如扩展DSD(XDSD)。XDSD指定并描述了以下中的一个:循环内存缓冲器(例如,图22A的循环内存缓
冲器扩展数据结构描述符2210)和四维内存矢量(例如,图22B的4D内存矢量扩展数据结构
描述符2240)。
[0701] 图21E示出了作为循环内存缓冲器数据结构描述符2180的循环内存缓冲器数据结构描述符(又名循环内存缓冲器DSD)的实施方式的选定细节。在一些实施方式中,结合循环
内存缓冲器扩展数据结构描述符2210,循环内存缓冲器数据结构描述符2180描述了以下中
的一个:存储在存储器中的数据元素的循环缓冲器和存储在存储器中的数据元素的FIFO;
以及与数据元素的处理相关的各种参数。在各种实施方式和/或使用场景中,根据循环内存
缓冲器数据结构描述符2180,指令的源0操作数、源1操作数和目的地操作数中的任何一个
或多个是指包含相应的DSD实例的相应的DSR。
[0702] 循环内存缓冲器数据结构描述符2180包括长度2181、基部地址2182、FW(FIFO环绕位)2188、类型2189、SS(单步)2190、SA(保存地址/条件单步模式)2191、WLI(小波索引选择)
2192和SW(SIMD宽度)2184。在一些实施方式中,循环内存缓冲器访问总是索引为0,步幅为
1。
[0703] 在一些实施方式中,循环内存缓冲器数据结构描述符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。
[0704] 在一些实施方式中,FW(FIFO环绕位)2188包括1位字段,该字段能够区分全FIFO和空FIFO。当访问环绕FIFO的地址范围时,切换FW(FIFO环绕位)2188。
[0705] 在一些实施方式中,WLI 2192对循环缓冲器的索引没有影响。
[0706] 图22A示出了循环内存缓冲器扩展数据结构描述符的实施方式的选定细节,作为循环内存缓冲器扩展数据结构描述符2210。循环内存缓冲器扩展数据结构描述符2210包括
类型2211、起始地址2212、结束地址2213、FIFO 2214、推送(激活)颜色2215和弹出(激活)颜
色2216。
[0707] 在一些实施方式中,类型2211包括指定数据结构的类型的1位字段。对于循环内存缓冲器扩展数据结构描述符2210的所有实例,类型2211是“1”。
[0708] 在一些实施方式中,起始地址2212包括指定存储器中循环缓冲器的起始地址的15位字段。在一些实施方式中,结束地址2213包括指定存储器中循环缓冲器的结束地址的15
位整数。当地址递增(例如,以开始下一次访问的步幅递增)并等于结束地址2213时,地址被
重置为基部地址2212,从而提供循环访问行为。
[0709] 在一些实施方式中,FIFO 2214包括指定循环缓冲器是否是FIFO的1位字段。如果FIFO 2214为“0”,则循环缓冲器不是FIFO。如果FIFO 2214为“1”,则循环缓冲器为FIFO。
[0710] 在一些实施方式中,按压(激活)颜色2215和弹出(激活)颜色2216包括指定要激活的颜色的6位字段(例如,经由激活操作)。在一些实施方式中,按压(激活)颜色2215和弹出
(激活)颜色2216能够指定本地颜色和结构颜色中的一个。
[0711] 在各种实施方式中,两个循环内存缓冲器DSR能够描述存储在存储器的同一区域中的数据元素的FIFO。目的地DSR(例如,DDSR8)描述FIFO的写指针,源DSR(例如,S1DSR8)描
述FIFO的读指针。在一些实施方式中,目的地和源DSR具有相同的标识符。在各种实施方式
中,只有一些DSR 846能够描述FIFO(例如,DDSR8‑DDSR 11和S1SR8‑S1SR11)。
[0712] 两个DSR的FW(FIFO环绕位)2188能够检测FIFO是满还是空。当FIFO用作目的地时,读取相关S1DSR的基部地址2182和FW 2188并与来自DDSR的值进行比较。如果两个DSR的基
部地址2182相同,但FW 2188不同,则FIFO已满。当FIFO用作源时,读取相关DDSR的基部地址
2182和FW 2188并与来自S1DSR的值进行比较。如果两个DSR的基部地址2182相同,而FW 
2188相同,则FIFO为空。在一些情况下(例如,微线程),响应于读访问空FIFO或写访问满
FIFO,处理切换到另一任务中的指令,直到FIFO分别不是空的或不满的。
[0713] 图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位。
[0714] 在一些实施方式中,类型2241包括指定数据结构的类型的1位字段。对于4D内存矢量扩展数据结构描述符2240的所有实例,类型2241为“0”。
[0715] 在一些实施方式中,维度2242包括用于初始化矢量的下一个维度的长度的20位字段。
[0716] 在一些实施方式中,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)来说太长而无法描述。在一些实施方式和/或使用
场景中,使用这种格式描述二维或三维矢量。
[0717] 在一些实施方式中,选择步幅1 2244.1包括为矢量的第一维指定步幅的1位字段。如果选择步幅1 2244.1为“0”,则步幅为1。如果选择步幅1 2244.1为“1”,则步幅由步幅
2245指定。
[0718] 在一些实施方式中,选择步幅2 2244.2包括3位字段,并对矢量的第二维的步幅进行编码。如果选择步幅2 2244.2为“0”,则步幅为1。如果选择步幅2 2244.2为“1”,则步幅由
步幅2245指定。如果步幅选择2 2244.2是2‑7,则步幅由(例如,DSR 846的六个步幅寄存器)
的相应的(DSR)步幅寄存器指定。
[0719] 在一些实施方式中,选择步幅3 2244.3和选择步幅4 2244.4包括相应的3位字段。在一些实施方式中,相对于第三维和第四维,选择步幅3 2244.3和选择步幅4 2244.4分别
在功能和/或操作上类似,如同选择步幅2 2244.2相对于第二维。
[0720] 在一些实施方式中,步幅2245包括指定存储器中矢量步幅的15位字段。在某些情况下,步幅2245能够对一维矢量使用比步幅2153(图21C)更长的步幅。
[0721] 图23示出了根据数据结构描述符访问操作数的实施方式的选定细节,作为数据结构描述符流2300。在一些实施方式中,数据结构描述符流2300的动作由CE(例如,CE 800)执
行。
[0722] 经由数据结构描述符访问源操作数开始(开始2301),通过用相应的DSD初始化PE的一个或多个CE的DSR(设置DSR 2302),并可选地初始化CE的相应XDSD和/或步幅值((可选
的)设置XDSR 2305)。在一些实施方式中,初始化的DSR(以及可选地初始化的XDSR和保存步
幅值的步幅寄存器)由将数据从存储器移动到DSR的指令初始化。随后,CE提取并解码一条
指令(例如,FMACH、MOV或LT16),包括由初始化的DSR指定的一个或多个操作数以及可选的
一个或多个XDSR和/或步幅寄存器(具有DSR的提取/解码指令2303)。在一些实施方式中,指
令的操作数类型字段指定操作数是否由DSR指定。
[0723] CE从DSR读取一个或多个DSD(读取DSR 2304),并确定以下中的一个或多个:数据结构的类型、数据元素的源、是否多个数据元素一起读取(例如,对于SIMD运算)以及每个操
作数的数据元素总数。根据确定,对于每个DSD读取,还可选地读取XDSR和一个或多个步幅
寄存器((可选的)读取XDSR 2306),如参考图24所述。在某些情况下,为源0操作数、源1操作
数和目的地操作数中的一个或多个读取DSR,并由在动作2303中获得的指令的相应操作数
字段来识别。在一些实施方式和/或使用场景中,全部或部分并行读取DSR、XDSR和步幅寄存
器中的任何一个或多个,并且在其他实施方式和/或使用场景中,全部或部分顺序读取DSR、
XDSR和步幅寄存器中的任何一个或多个。
[0724] 基于在动作2304中获得的DSD(以及在动作2306中获得的可选XDSR和步幅值),CE从结构和/或存储器中读取一个或多个源数据元素(从队列/内存2310中读取(下一个)源数
据元素)。对于在动作2303中获得的指令所指定的每个源(例如,源0和源1中的每一个),CE
根据DSD中的SIMD宽度信息读取足够元件,用于指令中指定的操作的迭代。经由CE的一个或
多个队列来访问来自结构的数据元素(例如,源数据结构是结构矢量)。在一些实施方式和/
或使用场景中,CE还从寄存器读取数据元素。
[0725] 在读取源数据元素之后,CE使用数据元素作为输入执行操作(对数据元素执行(下一个)操作2311)。该操作由在动作2303中获得的指令来指定(例如,针对FMACH指令的乘法
累积操作、针对MOV指令的移动操作或者针对LT16的小于整数的比较)。
[0726] 在某些情况下,操作(例如,乘法累积操作或移动操作)产生一个或多个输出数据元素。基于在动作2304中获得的DSD(以及在动作2306中获得的可选XDSR和步幅值),CE将输
出数据元素写入结构或存储器(将(下一个)目的地数据元素写入队列/内存2312)。发送到
结构的数据元素(例如,目的数据结构是结构矢量)形成为小波,并经由PE的路由器传输到
结构。在一些其他场景中,没有输出数据元素(例如,一些比较操作)。
[0727] 在写入操作结果之后,CE确定是否要处理额外数据元素(更多数据元素)?2313)。在一些实施方式中,DSD指定要访问的数据元素的总数(例如,矢量的长度),并且CE将已经
访问(例如,经由计数器跟踪)的数据元素的数量与由长度指定的数据元素的总数进行比
较。如果要处理额外的数据元素,CE重复动作2310‑2313,直到所有的数据元素都已处理并
且流程结束(结束2316)。
[0728] 在各种实施方式和/或使用场景中,数据结构描述符流2300的任何一个或多个元件(例如,2302‑2312的任何一个或多个动作)的全部或任何部分在概念上对应于由CE(例
如,CE 800)执行的操作和/或CE的元件和/或在概念上与其相关。
[0729] 作为一个示例,保存源DSD(与设置DSR 2302和读取DSR 2304相关联)的源DSR是DSR 846中的一个或多个(例如,S0DSR、S1DSR、DDSR、XDSR和步幅寄存器)。在一些实施方式
中,CE 800响应于将DSD写入DSR(例如,LDS0WDS、LDS1WDS、LDXDS和LDSR)的指令来执行设置
DSR 2302。
[0730] 作为另一示例,CE 800与DSR 2303一起执行提取/解码指令。在各种实施方式中,PC 834和I‑Seq 836从内存854提取指令,并且Dec 840解码提取的指令。在一些实施方式
中,指令根据以下中的一个进行格式化:图25A的多操作数指令2510、图25B的一源无目的地
操作数指令2520和图25C的立即指令2530。在一些实施方式中,解码包括检测指令操作数由
DSD指定,例如,操作数1类型2514.1的值是“1”。
[0731] 作为另一示例,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。
[0732] 作为另一示例,CE 800基于在动作2304中读取的源DSD和可选地在动作2306中读取的XDSD,从队列/内存2310中执行读取(下一个)源数据元素。在某些情况下,源DSD指定
(例如,经由类型2149)操作数源自存储器,并且D‑Seq 844在DSD指定的地址(例如,部分基
于基部地址2142、WLI 2152和步幅2153中的一个或多个)从数据存储848或内存854读取数
据元素。在某些情况下,源DSD指定(例如,经由类型2109)操作数源自结构,并且CE 800从Qs 
897中的一个读取数据元素。在一些实施方式和/或使用场景中,数据元素从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从指定队列中读取一个、两个或四个数据元素。
[0733] 在一些实施方式和/或使用场景中,当CE 800试图读取比Qs 897的指定队列中可用的更多的数据元素,或者可替换地试图从空FIFO(例如,根据图21E的DSD实现的)时,CE 
800停止。在一些实施方式和/或使用场景(例如,微线程)中,选择器830能够在等待数据元
素的同时从Qs 897中选择不同的任务,从而使得CE 800能够避免停滞。
[0734] 作为另一示例,CE 800对数据元素2311执行(下一个)操作。在一些实施方式中,数据路径852使用在动作2310中读取的数据元素作为由在动作2303中获得的指令指定的操作
的输入。在某些情况(例如,计算操作)下,动作2311产生输出数据元素,而在其他情况下(例
如,比较操作)中,动作2311不产生输出数据元素。在一些实施方式中,数据路径852能够同
时执行一个以上的操作,例如,使用SIMD执行资源同时执行两个或四个乘法累积操作。
[0735] 作为另一示例,CE 800基于在动作2304中读取的目的地DSD和可选地在动作2306中读取的XDSD,执行向队列/内存2312写入(下一个)源数据元素。在某些情况下,目的地DSD
指定(例如,经由类型2149)操作数去往存储器,并且D‑Seq 844在目的地DSD指定的地址(例
如,部分基于基部地址2142、WLI 2152和步幅2153中的一个或多个)将数据元素写入数据存
储848或内存854。
[0736] 在各种实施方式和/或使用场景中,动作2312的部分(例如,将目的地数据元素写入结构)在概念上对应于将数据元素作为小波提供给图14的路由器1406和/或在概念上与
其相关。在某些情况下,目的地DSD指定(例如,经由类型2129)操作数发送到结构,并且CE 
800从数据元素创建小波(例如,部分基于结构输出数据结构描述符2120),并且经由到(图6
的)路由器600的入口匝道860将其传输到结构。在某些情况下,CE基于目的地DSD的SW 
2124,传输一个、两个或四个数据元素,作为小波。
[0737] 在一些实施方式和/或使用场景中,当CE 800试图传输比路由器600中可用的资源更多的小波(例如,图6的数据队列650中没有足够的资源),或者可替换地,试图写入完整的
FIFO(例如,根据图21E的DSD实现的),则CE 800停滞。在一些实施方式和/或使用场景(例
如,微线程)中,选择器830能够在等待更多资源的同时从Qs 897中选择不同的任务,从而使
得CE 800能够避免停滞。
[0738] 作为另一示例,CE 800执行动作2313。在一些实施方式中,D‑Seq 844确定已经处理了多少个数据元素(例如,通过增加每个数据元素的计数器),并且将其与矢量的长度(例
如,长度2101)进行比较。
[0739] 图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)执行。
[0740] 解码DSD(例如,经由图23的动作2304获得的)开始(开始2401),CE确定DSD是否对应于结构矢量(类型=结构?2411),例如,根据图21A或图21B。如果是,则由DSD描述的操作
数的访问使用DSD(经由DSD 2412访问)作为结构矢量进行,例如,如果操作数是源(图21A),
则(图23的)动作2310根据DSD从结构读取,并且如果操作数是目的地(图21B),则(图23的)
动作2312根据DSD写入到结构中。
[0741] 如果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内存矢量推进操作数存储地址。
[0742] 如果DSD不对应于1D内存矢量,则DSD对应于4D内存矢量(例如,根据图21D)或循环缓冲器(例如,根据图21E)。CE读取由DSD指定的XDSR(经由DSD 2422指定的读取XDSR,在概
念上也对应于图23的(可选的)读取XDSR 2306),以获得XDSD。XDSR由(图21D)的类型2169或
(图21E)的类型2189指定。
[0743] 然后,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内存矢量推进操作数存储器地址。
[0744] 如果XDSD不对应于4D内存矢量,则XDSD对应于循环缓冲器(例如,根据图22A)。由DSD和XDSD描述的操作数的访问使用DSD和XDSD(经由XDSD 2429访问循环缓冲器)作为循环
缓冲器进行。例如,如果操作数是源,则动作2310根据循环缓冲器从存储器读取源,并且如
果操作数是目的地,则动作2312根据循环缓冲器写入到存储器中。图23中数据元素的每次
迭代(动作2310‑2313)根据由DSD描述的循环缓冲器推进操作数存储器地址。
[0745] 在各种实施方式中,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。
[0746] 作为另一示例,D‑Seq 844基于动作2422的XDSD执行类型=4D矢量?2423。在一些实施方式中,从XDSR读取的XDSD的类型字段(例如,图22A的类型2211或图22B的类型2241)
确定数据结构是4D矢量(例如,XDSD类型=“0”)还是循环缓冲器(XDSD类型=“1”)中的一
个。
[0747] 作为另一示例,如本文别处所述,通过基于DSD(例如,动作2304的)计算存储器地址,使用例如DSD的基部地址2142、WLI 2152、长度2141和步幅2153,根据动作2427,D‑Seq 
844生成存储器访问。类似地,根据动作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、WLI 
2192、起始地址2212和结束地址2213基于(例如,动作2404)的DSD和动作2422的XDSD计算存
储器地址来生成存储器访问,如本文别处所述。
[0748] 在一些实施方式中,D‑Seq 844将每个计算出的地址发送到数据存储848和内存854中的一个。响应于接收到计算的地址,数据存储和/或存储器在计算的地址处访问两个
字节的数据。
[0749] 指令格式
[0750] 在图25A至图25C的描述中,具有第一个数字“8”的每个元件标识符是指图8的元件,为了简洁起见,没有另外特别标识为图8的元件。
[0751] 图25A示出了作为多操作数指令2510的多操作数指令的实施方式的选定细节。多操作数指令2510是两/三源、一个目的地操作数指令(例如,诸如FMACH等乘法‑加法)、两源、
无目的地操作数指令(例如,诸如LT16等比较)和一个源、一个目的地操作数指令(例如,诸
如MOV16等移动指令)中的一个。
[0752] 多操作数指令2510包括各种字段:指令类型2511、操作码2512、操作数0编码2513、操作数1编码2514和终止2515。操作数0编码2513包括操作数0类型2513.1和操作数0 
2513.2。操作数1编码2514包括操作数1类型2514.1和操作数1 2514.2。在一些实施方式中,
多操作数指令2510包括20位。
[0753] 在一些实施方式中,指令类型2511的值根据下表区分不同类型的指令(例如,两/三源、一个目的地和一个源以及一个目的地指令类型)。在各种实施方式中,操作码2512的
值指定特定操作(例如,乘法、加法或减法)。操作码2512的长度在不同类型的指令之间变
化,如下表所述。
[0754]指令族 指令类型2511的值 操作码2522的长度
两/三源、一个目的地 10 5位
两源、无目的地 1110 4位
一个源、一个目的地 110 5位
[0755] 在一些实施方式中,根据下表,操作数0编码2513描述了源和/或目的地操作数。在一些实施方式中,操作数1编码2714描述了源操作数。
[0756]指令族 操作数0编码2513 操作数1编码2514
两/三源、一个目的地 源0和目的地 源1
两源、无目的地 源0 源1
一个源、一个目的地 目的地 源1
[0757] 在一些实施方式中,操作数0 2513.2和操作数1 2514.2包括相应的4位字段。在一些实施方式中,操作数0类型2513.1和操作数1类型2514.1包括相应的2位字段,并分别确定
如何解释操作数0 2513.2和操作数12514.2。对于两/三源操作数,即一个目的地操作数指
令,操作数0类型2513.1根据下表进行解释。
[0758]
[0759]
[0760] 例如,如果操作数0类型2513.1的值为“1”,操作数0 2513.2的值为“4”,则操作数0编码2513指定源0操作数是由S0DSR[4]描述的矢量,目的地操作数是由DDSR[4]描述的矢
量。
[0761] 对于双源操作数,没有目的地操作数指令,操作数0类型2513.1根据下表进行解释。
[0762]2513.1的值 操作数0编码2513
0 源0是S0DSR[操作数0 2513.2]
1 源0是GPR[操作数0 2513.2]
[0763] 例如,如果操作数0类型2513.1的值为“0”,操作数0 2513.2的值为“4”,则操作数0编码2513指定目的地操作数是由DDSR[4]描述的矢量。
[0764] 对于一个源操作数,一个目的地操作数指令,操作数0类型2513.1根据下表进行解释。
[0765]2513.1的值 操作数0编码2513
0 目的地是DDSR[操作数0 2513.2]
1 目的地是GPR[操作数0 2513.2]
[0766] 例如,如果操作数0类型2513.1的值为“0”,操作数0 2513.2的值为“4”,则操作数0编码2513指定目的地操作数是由DDSR[4]描述的矢量。
[0767] 对于多操作数指令2510,操作数1类型2514.1根据下表进行解释。
[0768] 2514.1的值 操作数0编码25140 源1是S1DSR[操作数1 2514.2]
1 源1是由GPR[6]指定的地址处的存储器中的数据
2 源1是GPR[操作数1 2514.2]
3 源1是立即
[0769] 例如,如果操作数0类型2513.1的值为“0”,操作数0 2513.2的值为“4”,则操作数0编码2513指定目的地操作数是由DDSR[4]描述的矢量。
[0770] 在各种实施方式中,立即的源操作数指定了几个预定值(例如,0、1和‑1)和由LFSR生成的伪随机数中的一个。例如,如果操作数1类型2514.1的值为“3”,操作数1 2514.2的值
为“8”,则操作数1编码2514指定由LFSR生成的PRNG。
[0771] 在一些实施方式中,终止2515包括1位字段,指定该指令是任务中的最后一条指令。当指令完成执行时,任务终止,使得能够选择和执行新任务(例如,经由终止812和选择
器830)。
[0772] 图25B示出了一源无目的地操作数指令作为一源无目的地指令2520的实施方式的选定细节。一源无目的地指令2520包括指令类型2521、操作码2522、操作数1编码2523、立即
高2524、终止2525。操作数1编码2523描述了源操作数,包括操作数1类型2523.1和操作数1 
2523.2。在一些实施方式中,一源无目的地指令2520包括20位。
[0773] 在一些实施方式中,指令类型2521包括四位“1111”,指定该指令是一个源,没有目的地操作数指令,操作码2522包括指定特定操作(例如,阻止、解除阻止、激活、设置活动
PRNG、数据过滤、条件分支和跳转)的4位字段。
[0774] 在一些实施方式中,立即高2524包括4位字段。在某些情况下,立即高2524与操作数1 2523.2串联形成8位立即。
[0775] 在一些实施方式中,操作数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的串联。
[0776] 在一些实施方式中,终止2525包括1位字段,该字段指定该指令是任务中的最后一条指令。当指令完成执行时,任务终止,使得能够选择和执行新任务(例如,经由终止812和
选择器830)。如果一源无目的地指令2520是条件分支,则只有在未采用条件分支时,任务才
终止。
[0777] 图25C示出了作为立即指令2530的立即指令的实施方式的选定细节。立即指令2530包括指令类型2531、操作码2532、操作数0 2533.2和立即2534。在一些实施方式中,立
即低2534.1包括9位字段,立即高2534.2包括1位字段。立即低2534.1和立即高2534.2的串
联统称为(并且示出为)立即2534。在一些实施方式中,立即指令2520包括20位。
[0778] 在一些实施方式中,指令类型2531包括1位字段“0”,指定该指令是立即指令,操作码2532包括指定特定操作(例如,加载源0DSR、加载源1DSR、加载目的地DSR、存储源0DSR、存
储源1DSR和存储目的地DSR)的5位字段。在某些情况下,立即指令2530(例如,加载DSR指令
和加载XDSR指令)的执行将数据从内存854和数据存储848中的一个加载到DSR 846的DSR。
在其他情况下,立即指令2530(例如,存储DSR指令和存储XDSR指令)的执行将数据从DSR 
846的DSR存储到内存854和数据存储848中的一个。
[0779] 在一些实施方式中,操作数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位数据)。
[0780] 深度学习加速器示例使用
[0781] 在各种实施方式和/或使用场景中,如本文别处所述,深度学习加速器(例如,PE的结构(例如,经由晶片级集成实现,并且例如,如图4所示))可用于训练神经网络,和/或执行
关于训练的神经网络的推理。在某些情况下,训练包括响应训练刺激确定神经网络的权重。
各种技术可用于训练,例如,随机梯度下降(SGD)、小批量梯度下降(MBGD)、连续传播梯度下
降(CPGD)和反向检查点(RCP)。接下来,将CPGD与其他技术进行对比,然后更详细地描述
SGD、MBGD、CPGD和RCP中的每一个。
[0782] 过去的深层神经网络训练方法(例如,SGD和MBGD)都使用了所谓的锚定三角学习。即,增量派生权重更新已经‘锚定’或保持固定,直到训练集批次或小批次的所有激活处理
完成。在某些情况下,锚定增量学习的层顺序特性导致高延迟顺序参数更新(例如,包括权
重更新),这反过来导致收敛缓慢。在某些情况下,锚定增量学习限制了层并行性,从而限制
了并发性。
[0783] 相反,在某些情况下,如本文所教导的,使用连续传播(也称为立即增量)学习规则用于深层神经网络训练,提供了更快的收敛,减少了参数更新的等待时间,并且通过启用层
并行性来增加并发性。根据直接网络参数计算的增量使用对应于当前参数斜率的更新信
息。连续传播通过使每一层能够与其他层同时学习而无需显式同步来实现层并行。因此,沿
着网络深度的并行化能够将更多的计算资源应用于训练。在某些使用场景中,与MBGD技术
相比,连续传播中可用的并行实现了高达1x的挂钟时间改进。连续传播方法还能够避免使
用额外的存储器来存储多个激活矢量的模型参数值。
[0784] 在一些实施方式和/或使用场景中,使用刺激的连续传播来训练神经网络,以执行SGD。在经由CPGD进行训练的一些实施方式中,RCP能够通过重新计算选择的激活来减少保
存在存储器中的激活数量(从而减少存储器占用空间)。在某些情况下,重新计算激活也会
提高权重训练估计的精度。在没有RCP的训练中,每层神经元在一次或多次前向传递期间接
收激活,并保存激活,以重新用于在与前向传递相关联的一次或多次后向传递期间执行的
计算(例如,与前向传递相关联的一次或多次增量、链式和权重更新传递)。在一些情况下
(例如,相对较深的神经网络),在保存激活和相关联的后向传递之间的时间相对较长,并且
保存所有激活比保存少于所有激活使用相对较多的存储器。
[0785] 例如,只有一些神经元层(例如,每偶数层)保存相应的激活,而其他层丢弃相应的激活(例如,每奇数层)。具有保存的激活的层(例如,每个偶数层)使用最近的权重来重新计
算并传输重新计算的激活到丢弃激活的层(例如,每个奇数层)。在某些情况下,重新计算的
激活不同于丢弃的激活,因为最近的权重不同于在前向传递期间可用的权重(例如,在前向
传递和相关联的后向传递之间发生一个或多个权重更新)。在各种实施方式中,选择保存和
丢弃激活的层的数量和类型,以优化减少的存储器使用和增加的计算之间的期望平衡。作
为一个示例,每四层保存激活,所有其他层放弃激活。作为另一示例,选择卷积层来保存激
活,选择其他层来丢弃激活。
[0786] 在各种实施方式和/或使用场景中,具有或没有RCP的SGD、MBGD和CPGD中的任何一个或多个经由以下中的一个或多个来实现:处理元件的结构(例如,如图4所示)、一个或多
个GPU、一个或多个CPU、一个或多个DSP、一个或多个FPGA以及一个或多个ASIC。
[0787] 例如,具有反向传播的SGD可用于(如本文别处所述)训练神经网络。然而,经由梯度下降的学习本质上是连续的,因为每个权重更新都使用在完成通过神经网络的完全前向
传递之后进行的梯度测量的信息。此外,权重更新在通过神经网络的相应后向传递期间进
行(跟随并对应于前向传递),因此,在完成整个相应的后向传递之后发生最后一次权重更
新。
[0788] MBGD通过在小批量上梯度平均,并行处理几个(‘小批量’)激活,实现了比SGD更多的并行性。然而,与SGD相比,顺序更新的速度是不变的,并且与SGD中一样,在所有相应的后
向传递通过神经网络完成之后,完成权重更新。随着并行处理更多激活而增加小批量,梯度
噪声降低。在某些情况下,超过一个点,梯度噪声的降低会导致较差的普遍化。
[0789] CPGD支持在神经网络的所有层中并行处理和更新权重,同时激活在流中通过层传播。因此,在一些实施方式和/或使用场景中,CPGD克服了SGD和MBGD的顺序处理限制。
[0790] RCP经由(重新)计算本来会存储的激活来减少内存使用,并可与SGD、MBGD和CPGD结合使用。
[0791] 管线流程图可用于比较和对比各种SGD、MBGD、CPGD和CPGD与RCP技术。训练技术中的信息流和并发性在管线流程图中是可见的。图26A至图26D从左到右示出了神经网络流的
层的管线流的实施方式,例如,激活从左边进入,层计算流的前向传递传播流入右边。在最
右边的层进行梯度计算,开始层计算的反向传播,包括从右到左的权重更新。时间从上到下
前进。
[0792] 图26A示出了用于SGD的管线流的实施方式。神经网络的层的权重更新在相应的全前向传递和相应的全后向传递通过神经网络的所有层之后完成。下一次前向传递仅在完成
与直接前一次前向传递相对应的权重更新后开始。如图所示,执行第一前向传递2611(从第
一层到最后一层,在图中从左到右示出)。然后,执行第一后向传递2621(从最后一层到第一
层,在图中从右向左示出)。在第一次后向传递2621期间,权重从最后一层到第一层更新。
(第一层的)最后一次权重更新随着第一后向传递2621的完成而完成。然后执行第二前向传
递2612(使用在第一后向传递2621期间更新的权重),接着执行第二后向传递2622,在第二
后向传递2622期间执行权重更新。
[0793] 图26B示出了用于MBGD的管线流的实施方式。用相同的权重处理多个激活。协调安静时间用于同步权重更新。在一些实施方式和/或使用场景中,MBGD处理的特征在于小批量
大小(N)2631、开销2632和更新间隔(U)2633。
[0794] 不同于梯度下降技术(例如,SGD和MBGD),梯度下降技术使用全前向传递和全反向传递通过网络来计算梯度估计,从而导致顺序依赖性,CPGD使用差分结构来用持续梯度生
成的连续模型来代替顺序依赖性。在一些实施方式和/或使用场景中,CPGD通过使神经网络
的每一层能够与层中的其他层同时训练(例如,“学习”)而实现层并行性,而无需显式同步。
因此,沿着神经网络深度的并行化能够将更多的计算资源应用于训练。在各种实施方式和/
或使用场景中,与其他技术相比,CPGD提供了以训练时期表示的可比精度和改进的收敛速
度。
[0795] 图26C示出了用于CPGD的管线流的实施方式。CPGD处理保持流动模型。隐藏的表示和增量在每个时间步长进入每层,权重在每个时间步长更新。CPGD处理是协调的同步操作。
在一些实施方式和/或使用场景中,CPGD处理的特征在于前向传递2651和相应的后向传递
2661,分别表示多个前向传递中的一个和多个相应的后向传递中的一个。在操作中,多个前
向传递的相应前向传递彼此平行操作,多个后向传递的相应后向传递彼此平行操作,并且
多个前向传递和多个后向传递彼此平行操作。权重更新(在后向传递过程中进行)在权重更
新可用时由前向传递和后向传递使用。
[0796] 作为一个具体的示例,前向传递2665开始,随后前向传递2666开始。前向传递2665的至少一部分与前向传递2666的至少一部分并行操作。前向传递2665的相应后向传递的至
少一部分与前向传递2666的至少一部分并行操作。此外,如权重更新使用示例2667所示,相
应的后向传递完成至少一些由前向传递2666使用的权重更新。
[0797] 图26D示出了具有RCP的CPGD的管线流的实施方式。带有RCP的CPGD忽略保存选定的激活,而是重新计算选定的激活。在一些实施方式和/或使用场景中,用更新的权重来执
行重新计算。因此,反向检查点能够减少内存(被示为由在时间上向前穿过保存的隐藏表示
的垂直线覆盖的减少的区域),并减少计算的隐藏表示和相应增量之间的时间差异。
[0798] 作为一个具体的示例,具有RCP处理的CPGD的特征在于前向传递2671和相应的后向传递2681。如激活存储器2685所示,在前向传递期间计算第一激活,并将其存储在层中,
以用于相应的后向传递。激活存储器2685在部分前向传递和后向传递期间占用,并且不可
用于其他用途。重新计算的激活存储2686示出了存储器减少的具体示例。在前向传递期间
计算第二激活,但是丢弃,并且不需要任何存储。在后向传递期间,第二次激活被重新计算
并存储在一个层中,用于后向传递,如重新计算的激活存储2686所示。重新计算的激活存储
器2686在整个前向传递期间未占用,并且可用于其他用途(例如,其他前向传递、其他后向
传递),从而减少所需的内存。
[0799] 更一般地考虑并行化,在一些实施方式和/或使用场景中,并行化计算(例如,神经网络训练)将计算分散在同时操作的单独计算元件上。在模型并行模式中,单独单元使用不
同的模型参数同时评估同一神经网络。在数据并行机制中,不同的工作人员使用相同的形
式模型参数同时评估不同的网络输入。一些扩展技术使用层上的和集群单元中的细粒度数
据并行性。
[0800] 在一些实施方式和/或使用场景中,根据小批量尺寸n,MBGD提高了梯度估计的精度。然而,对小批量尺寸n执行MBGD的计算大约等于对n个步骤执行SGD的计算。在某些情况
下,对于n个步骤,SGD比对于小批量尺寸n的MBGD更有效,大约是n的平方根。因此,更高的并
行性(例如,在MBGD中)和更高的效率(例如,在SGD中)有时是互斥的。
[0801] 在一些实施方式和/或使用场景中,深层神经网络是高维参数化函数,有时表示为有向无环图。反向传播技术有时用循环图来表示。图中的循环是一个反馈迭代。由第一次全
网络评估产生的梯度改变下一次迭代中使用的权重,因为迭代是连续微分系统的离散近
似。离散近似包括具有时变统计量的无偏连续噪声过程。噪声过程提供正则化,以使连续系
统能够模拟在离散时间学习系统中观察到的现象。在离散情况下,正则化由采样过程(例
如,SGD)、学习速率和/或其他显式机制提供。与时间相关的噪声处理使得能够使用擦除参
数空间中局部高频轮廓的学习速率调度。当接近正确的区域时,正则化减少,在某些情况下
导致更好的最终解决方案。
[0802] CPGD在任意前馈神经网络的概念框架中,将所有节点表示为时间的函数,并应用函数组合来制定内部状态和内部状态受到的刺激的表示。因子分解的结果是单独层作为具
有独立局部动力学的系统。二维是网络的深度和参数的时间演变。在通过将网络层映射到
空间上分开的计算元件来实现加速的一些实施方式和/或使用场景中,网络层之间存在延
迟通信。因此,层与层之间的通信存在时间延迟。CPGD的一些实现是考虑时间延迟的同步实
现。
[0803] 在CPGD处理期间,激活矢量和相关联的隐藏表示在激活矢量前向传递期间的不同时间步长与模型参数相结合。不同时间步长下的模型参数与同一时间步长下的模型参数之
间的差异无法通过向前的激活矢量检测到。从概念上讲,就好像连续时间步长的一组固定
参数用来形成一个集合参数状态,然后用于学习。
[0804] 在后向传递(例如,增量传播)期间,可以选择在更新之后使用即时参数(例如,权重),或者检索锚定到何时执行相应前向传递的历史参数。根据即时参数计算的增量使用对
应于当前参数斜率的更新信息。一些实施方式和/或使用场景使用即时参数。一些实施方式
和/或使用场景使用历史参数。
[0805] CPGD的一些实现方式以类似于SGD的顺序使用内存。反向检查点(如本文别处所述)可用于CPGD,例如,减少内存使用。反向检查点的一些实施方式和/或使用场景使用即时
参数(例如,权重)来重新计算激活。反向检查点的一些实施方式和/或使用场景使用历史参
数来重新计算激活。在使用即时参数来重新计算激活的一些实施方式和/或使用场景中,用
于计算前向传播激活和反向传播增量的参数之间的时间差异在对准波前中减小。
[0806] 连续传播技术可用于与小批量处理(流入MBGD)结合。在一些实施方式和/或使用场景中,在紧接着的前一批完成之前开始下一批,概念上类似于异步SGD。管线内的参数不
一致限于不超过一个批处理边界。
[0807] 在一些实施方式和/或使用场景中,使得数据能够流过神经网络并在没有全局同步边界的情况下执行计算,使得能够提取未被提取的学习信息。在一些实施方式和/或使用
场景中,较低的学习率在使用较大批量时占主导地位。在一些实施方式和/或使用场景中,
隐藏的活动和/或增量弧在概念上被解释为单独的矢量或可选的批处理矩阵。批处理矩阵
解释使得能够在GPU、CPU、DSP、FPGA和/或ASIC上直接实现本文所述的技术。
[0808] 图27A至图27E示出了根据SGD、MBGD、CPGD和RCP处理的前向传递和后向传递实施方式的各个方面。在图中,示出了两层神经元,表示例如深层神经网络的一部分的相应层。
在各种实施方式和/或使用场景中,深层神经网络包括数千或更多层以及每层数千或更多
神经元。在各种实施方式和/或使用场景中,第一层是从深层神经网络外部的代理接收用于
训练的激活的输入层。在各种实施方式和/或使用场景中,第二层是输出层,其中,前向传递
完成,后向传递开始。在各种实施方式和/或使用场景中,第一层和第二层是内层。
[0809] 图27A和图27B分别示出了根据SGD、MBGD和CPGD的前向传递和后向传递实施方式,没有RCP。这两层被示为前一层2701和后一层2702。前一层2701包括计算2710和存储2715。
后一层2702包括计算2720和存储2725。计算2710和计算2720是计算资源示例,存储2715和
存储2725是存储资源的示例。
[0810] 图27C至图27E示出了根据SGD、MBGD和CPGD的具有RCP的前向传递和后向传递实施方式。这两层被示为前一层2703和后一层2704。前一层2703包括计算2730和存储2735。后一
层2704包括计算2740和存储2745。计算2730和计算2740是计算资源的示例,存储2735和存
储2745是存储资源的示例。
[0811] 图27A至图27E中相同编号的元件具有相同的结构和操作,尽管计算资源根据不同的输入产生不同的结果,并且存储资源根据存储的不同值存储并随后提供不同的值。可以
设想其他实施方式具有不同的计算资源和/或可用于前向传递和后向传递计算和存储的不
同存储资源。例如,后向传递使用前向传递不使用的转置权重存储。可以设想其他实施方式
具有可用于前向传递和后向传递实现的不同计算和/或存储资源。例如,基于RCP的实施方
式使用额外的计算资源(未示出),而不是用于无RCP的前向传递或后向传递处理。
[0812] 关于图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基本相似或相同。
[0813] 在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是输出层,则完成前向传递,并启动对应于前向传递的后向传递。
[0814] 关于图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基本相似或相同。
[0815] 在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是输入层,则后向传递完成,下一次前
向传递开始。
[0816] 在SGD和MBGD(与CPGD不同)中,下一次前向传递延迟,直到前一次后向传递完成,例如,在W 2717和W 2727已经用于相同的前向传递和相同的相应后向传递之后,分别用W 
2718和W 2728更新W 2717和W 2727。因此,使用来自同一后向传递的权重来执行下一次前
向传递。
[0817] 图27A除了示出SGD和MBGD前向传递处理之外,还示出了CPGD前向传递处理。然而,与SGD和MBGD相比,CPGD的操作是不同的,因为尽快执行权重更新和下一次前向传递,而不
是延迟到上一次后向传递完成。例如,分别用W 2718和W 2728尽快更新W 2717和W 2727。因
此,下一次前向传递可以选择性地访问来自先前迭代的权重,从而选择性地产生不同于SGD
和MBGD在相同条件下产生的激活。
[0818] 更具体地,在前一层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)相
等。在各种实施方式和/或使用场景中,前一层和后一层同时处理以下中的一个:不同的前
向传递、不同的后向传递以及前向传递和不同的后向传递。
[0819] 图27B除了示出SGD和MBGD后向传递处理之外,还示出CPGD后向传递处理。CPGD中后向传递的处理与SGD和MBGD相同。然而,选择的结果(例如,选择的权重)比SGD和MBGD中使
用得更早。例如,由后向传递t‑k‑j产生的W1,t‑k‑j和由后向传递t‑k产生的W1,t‑k比SGD和MBGD
使用得更早,例如,前向传递t。
[0820] 图27C示出了结合RCP的SGD、MBGD和CPGD中任一个的前向传递处理的实施方式。在各种实施方式和/或使用场景中,计算2730和存储2735在结构和/或操作上分别与计算2710
和存储2715基本相似或相同。在各种实施方式和/或使用场景中,计算2740和存储2745在结
构和/或操作上分别与计算2720和存储2725基本相似或相同,除了省略存储在存储2745中
没有对应的激活的存储2725的激活A 2726。
[0821] 在前向传递操作中,相对于前一层2703,根据计算2730中的前向传递处理接收和处理激活A1,t2781,并存储在存储2735中,如参考图27A所述。然而,关于后一层2704,接收激
活A2,t2782,并根据计算2740中的前向传递处理进行处理,但不存储(相反,在后向传递处理
期间根据RCP重新计算)。
[0822] 图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中)以及重新计算的激活(例如,在A 
2729中)。
[0823] 在后向传递操作的第一部分,重新计算未存储在相应前向传递中的激活。在SGD和MBGD场景中,通过根据F 2711处理从A 2716中的前向传递存储的激活和存储在W 2717中的
权重,在先前层2703中制定重新计算的激活,以产生激活A’2,t2784,然后将其存储在后一层
2704的A 2729中。因为SGD和MBGD延迟权重更新和下一次前向传递的开始,直到前向传递和
相应的后向传递完成,所以A’2,t2784与前向传递期间丢弃的值A2,t2782相同。
[0824] 在CPGD场景中,根据与SGD和MBGD场景相同的拓扑来制定重新计算的激活。但是,CPGD会毫不延迟地执行更新,并允许开始下一次前向传递,而不考虑先前后向传递的完成
情况。因此,根据实施方式和/或使用场景,在后向传递时(例如,在W 2717中)存储的权重值
选择性地不同于在相应的前向传递期间存储的权重值。作为一个具体示例,根据图27C,W 
2717在前向传递期间存储W1,t‑k‑j。然而,在后向传递期间,已经发生了额外的权重更新,例
如,对应于m次迭代,并且现在W 2717存储W1,t‑k‑j+m。因此,A’2,t2784选择性地不同于在前向
传递期间丢弃的值A2,t2782。
[0825] 在后向传递操作的第二部分,使用重新计算的激活进行计算。在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。
[0826] 在一些实施方式和/或使用场景中,W 2717不同于W 2718(如图所示),并且在一些实施方式和/或使用场景中,W 2718和W 2717是存储的相同部分(未示出),使得在W 2718中
保存新值,覆盖了在W 2717中先前保存的值。类似地,W 2727不同于W 2728,或者与W 2728
相同。在各种实施方式和/或使用场景中,A2729被不同地实现为比A2726使用更少的存储器
位置和/或在更短的时间内使用相同数量的存储器位置。
[0827] 在各种实施方式和/或使用场景中,激活和/或权重由任何一个或多个标量、矢量、矩阵和高维数据结构来实现和/或表示。例如,A2716、A2726、A2729、W 2717、W 2727、W 2718
和W 2728中的任何一个或多个能够存储一个或多个标量、一个或多个矢量、一个或多个矩
阵以及一个或多个高维数组中的任何一个或多个。
[0828] 在各种实施方式和/或使用场景中,前一层2701和后一层2702的一个或多个元件由相应的PE实现,例如,PE 499的一部分或图4的类似元件。例如,PE 497实现前一层2701,
PE 498实现后一层2702。激活A2,t2782和增量Δ2,t2792经由东耦合器431进行通信。在一些
实施方式和/或使用场景中,前一层2701和后一层2702的一个或多个元件由CPU、GPU、DSP和
FPGA中的一个或多个来实现。
[0829] 在各种实施方式和/或使用场景中,F 2711、F 2721、B 2712和B 2722的元件的全部或任何部分在概念上对应于图2的PE 260上的任务SW的执行指令的全部或任何部分。
[0830] 示例工作负载映射
[0831] 从概念上讲,深度学习加速器400(图4)是可编程计算机结构(例如,参见图5至图8和“处理元件:计算元件和路由器”部分)。例如,每个PE 499元件的计算元件能够执行任务
指令序列(例如,概念上对应于图2的PE 260上的任务SW的执行指令的全部或任何部分),并
且每个PE 499的路由器元件可配置为在PE之间路由小波。可编程计算结构能够以各种方式
将工作负载映射到计算结构上。下面描述的是工作负载到计算结构的示例高级映射,以说
明由计算结构实现的各种技术和机制。
[0832] 工作负载是经由SGD实现的深层神经网络训练。深层神经网络包括多层神经元。工作负载有三个大阶段:前向传递、增量传递和链式传递。前向传递向前传播激活。增量传递
向后传播增量。当在增量传递中生成增量时,链式传递基于增量计算梯度。这三个大阶段的
计算量大致相同。
[0833] 图4示出了大阶段到PE的示例映射。每一层由从计算结构(也称为“放置”)背靠背(例如,在水平维度)分配的PE块来实现。数据移动在前向传递(前向401)期间传播到结构的
末端,然后在增量传递(增量402)和链式传递(链403)期间沿相反方向返回。放置的目的是
减少数据移动,因为前向传递保存增量传递和链式传递要使用的激活。在该示例中,所有PE
在三个大阶段之间以三种方式进行时间共享,每个大阶段使用大约相同的计算量。在某些
情况下,执行传递的整个PE链作为管线运行,使得每一层都是管线级(大约需要相同的时间
来完成),并且小批量的每次激活都填充管线。
[0834] 在一些实施方式和/或使用场景中,在映射到单个层的一组PE内,单层的权重分布在PE上,使得单个神经元映射到多个PE。在某些情况下,将单个神经元分割成多个PE,提供
了负载平衡益处并提供了通信划分益处(例如,参见图17至图20和“神经元涂抹”部分)。
[0835] 从概念上讲,处理如下进行(参见图4的前向401)。激活会沿着水平轴广播到层中。激活由PE接收,并触发查找存储在PE本地的相关权重(对应于映射到PE的神经元)。只广播
非零激活,因此零激活不会浪费计算(激活稀疏性收集的一个示例)。每个PE对输入的激活
进行局部乘法和累积,所有神经元权重产生局部部分和。由于每个神经元的权重分布到多
个PE,因此根据神经元权重分布,部分和在垂直方向上在PE上累积。在累积部分和产生最终
和之后,执行激活功能,并将所有新的非零激活广播到下一层。
[0836] 增量传递(见图4的增量402)和链式传递(见图4的链403)遵循与前向传递相似的数据流。在一些实施方式和/或使用场景中,增量传递和链式传递偏移一层放置,使得激活
存储在与反向使用的权重相同的层中。激活由接收层存储,使得在增量传递和链式传递中,
直接使用激活,而无需额外的通信。除了存储激活之外,还执行权重转置来实现增量传递。
在一些实施方式和/或使用场景中,权重转置是通过复制权重、在更新权重时使用额外的存
储容量和额外的通信来实现的。在一些实施方式和/或使用场景中,权重转置通过在垂直维
度中转置增量广播来实现。
[0837] 图28A示出了矩阵(m)乘以矢量(v)的一般操作。图28B以图28A的样式示出了在一些实施方式中在三个大阶段中使用的内存结构的各种表示(例如,完全连接的神经网络)。
在各种实施方式中,权重(w)和梯度累积(g)数据结构是二维矩阵。在一些实施方式中,前向
部分和(fpsum)和增量部分和(δpsurri)以及前向传递激活(a)是一维矢量。二维矩阵存储
在存储器(例如,图8的内存854)中,因为在一些实施方式和/或使用场景中,二维矩阵相对
较大。在一些实施方式中,一维矢量存储在更高吞吐量的存储器(例如,图8的数据存储848)
中,以在三次传递中的每一次中实现乘法累积矢量操作的使用场景、完整数据路径性能。
[0838] 图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。
[0839] 激活广播线上的输入激活收尾(收尾2912)触发f_rxact:close 2902。结束表示当前波前的所有激活结束。即时PE执行任务的指令,用即时PE的开始列表中的部分和开始部
分和累积环(开始Psums 2916)。任务引用的示例数据结构是fpsum_acc_mem和fpsum_acc_
fab。
[0840] 传入部分和(Prop Psums 2930)触发f_psum:prop 2903。即时PE执行任务的指令,将输入的部分和与即时PE的局部部分和相加,然后将结果转发到环上的下一跳(Prop 
Psums 2931)。如果即时PE是环的末端,则生成最终和。在一些实施方式和/或使用场景中,
执行额外的处理,以防止死锁。任务引用的示例数据结构是fpsum_acc_mem、fpsum_acc_fab
和f_txact_wake。
[0841] 当有排队的激活要传输时,f_txact:tx 2904是自触发的(唤醒2914)。即时PE执行任务的指令,解除激活队列,并在广播线上将激活传输到下一层(激活2921)。当队列中仍有
更多项目时,即时PE重新调度任务(重新调度2915)。当队列为空时,即时PE传输收尾小波,
以关闭波前(结束2922)。
[0842] 激活(传入和传出)和部分和(传入和传出)以及收尾小波,被作为小波(例如,参见图13A至图15B和“小波”部分)而传送。在一些实施方式和/或使用场景中,一个或多个小波
对应于由一个或多个DSD和/或XDSR描述的结构矢量的一个或多个元件。
[0843] 各种状态机的数据结构经由存储在相应DSR中的多个DSD来引用(例如,参见图21A至图24和“矢量和数据结构描述符”部分),如下表所述。
[0844]
[0845]
[0846] 上述示例工作负载映射是针对SGD的。然而,这些技术很容易适用于MBGD和CPGD,无论有无RCP。
[0847] 其他实施方式细节
[0848] 关于图1至图29描述的实施方式和使用场景在概念上是关于包括可编程的例如根据指令处理数据的CE的PE。设想了其他实施方式,其中,一个或多个CE是部分或全部硬连线
的,例如,根据可在没有指令的情况下操作的一个或多个固定电路处理元件来处理数据。作
为具体示例,特定的CE包括实现LSTM单元的全部或一部分的硬件逻辑单元电路。特定的PE
包括在特定PE中的路由器,该路由器可在与其他PE点的结构中操作。一些其他PE类似于或
等同于特定PE,一些其他PE类似于或等同于图4的PE 499。
[0849] 示例实现技术
[0850] 在一些实施方式中,为任何加速的深度学习执行的操作和/或与任何加速的深度学习相关联的结构的所有或任何部分的各种组合;SGD、MBGD、CPGD,无论是否具有RCP,用于
加速的深度学习;用于加速的深度学习的数据结构描述符和结构矢量:加速的深度学习的
神经元涂抹:加速的深度学习的任务同步:数据流触发的加速的深度学习任务:用于加速的
深度学习的控制小波:和/或用于加速的深度学习的小波表示;以及提供所有或部分上述操
作的处理器、微处理器、片上系统、专用集成电路、硬件加速器或其他电路的部分,由与计算
机系统处理兼容的规范来指定。该规范符合各种描述,例如,硬件描述语言、电路描述、网表
描述、掩模描述或布局描述。示例描述包括:Verilog、VHDL、SPICE、SPICE变体,例如,
PSpice、IBIS、LEF、DEF、GDS‑II、OASIS或其他描述。在各种实施方式中,处理包括解释、编
译、模拟和合成的任意组合,以产生、验证或指定适于包含在一个或多个集成电路上的逻辑
和/或电路。根据各种实施方式,每个集成电路与根据各种技术的设计和/或制造兼容。这些
技术包括可编程技术(例如,现场或掩模可编程门阵列集成电路)、半定制技术(例如,完全
或部分基于单元的集成电路)和全定制技术(例如,基本上专用的集成电路)、其任意组合或
与集成电路的设计和/或制造兼容的任何其他技术。
[0851] 在一些实施方式中,通过执行和/或解释一个或多个程序指令,通过解释和/或编译一个或多个源和/或脚本语言语句,或者通过执行通过编译、转化和/或解释在编程和/或
脚本语言语句中表达的信息而产生的二进制指令,来执行由存储有一组指令的计算机可读
介质所描述的所有或部分操作的各种组合。这些语句与任何标准编程或脚本语言(例如,C、
C++、Fortran、Pascal、Ada、Java、VBscript和Shell)兼容。一个或多个程序指令、语言语句
或二进制指令可选地存储在一个或多个计算机可读存储介质元件上。在各种实施方式中,
程序指令的一些、全部或各种部分被实现为一个或多个功能、例程、子例程、在线例程、过
程、宏或其部分。
[0852] 结论
[0853] 在描述中已经做出了某些选择,仅仅是为了便于准备文本和附图,并且除非有相反的指示,否则这些选择本身不应该被解释为传达关于所描述的实施方式的结构或操作的
额外信息。选择的示例包括:用于数字编号的指定的特定组织或分配以及用于识别和引用
实施方式的特征和元件的元件标识符(例如,标注或数字指示等)的特定组织或分配。
[0854] 各种形式的词语“包括”和“包含”特别旨在被理解为描述开放式范围的逻辑集合的抽象,并且除非明确描述(例如,后面跟着词语“在内”),否则并不意味着传达物理包容。
[0855] 尽管为了描述和理解的清楚起见,已经对前述实施方式进行了详细描述,但是本发明不限于所提供的细节。本发明有许多实施方式。所公开的实施方式是示例性的,而不是
限制性的。
[0856] 应当理解,在结构、设置和使用上的许多变化都是可能的,与说明书一致,并且在所发布专利的权利要求的范围内。例如,根据每个组件块中的各种实施方式,互连和功能单
元位宽、时钟速度以及所使用的技术类型是可变的。提供给互连和逻辑的名称仅仅是示例
性的,不应被解释为限制所描述的概念。根据各种实施方式,流程图表和流程图的过程、动
作和功能元件的顺序和排列是可变的。此外,除非特别指出相反,否则指定的数值范围、使
用的最大值和最小值或其他特定规范(例如,文件类型;以及寄存器和缓冲器中的条目或级
的数量)仅仅是所描述的实施方式中的那些,期望跟踪实现技术的改进和变化,并且不应该
被解释为限制。
[0857] 可以使用本领域已知的功能等同技术来代替所描述的技术,以实现各种组件、子系统、操作、功能、例程、子例程、在线例程、过程、宏或其部分。还应当理解,根据更快处理
(促进先前在硬件中的功能迁移到软件中)和更高集成密度(促进先前在软件中的功能迁移
到硬件中)的依赖于实施方式的设计约束和技术趋势,实施方式的许多功能方面可以选择
性地在硬件(例如,一般专用电路)或软件(例如,经由某种方式的编程控制器或处理器)中
实现。各种实施方式中的具体变化包括但不限于:划分上的差异;不同的形状因数和配置;
使用不同的操作系统和其他系统软件;使用不同的接口标准、网络协议或通信链路;以及当
根据特定应用的独特工程和商业约束实现本文描述的概念时预期的其他变化。
[0858] 这些实施方式的详细描述和环境背景远远超出了所描述的实施方式的许多方面的最小实现所需要的。本领域普通技术人员将认识到,一些实施方式省略了公开的组件或
特征,而没有改变其余元件之间的基本协作。因此,应当理解,所公开的许多细节不需要实
现所描述的实施方式的各个方面。就其余元件与现有技术的区别而言,省略的组件和特征
并不限制本文描述的概念。
[0859] 设计中的所有这些变化对于所描述的实施方式所传达的教导来说都不是实质性的变化。还应当理解,本文描述的实施方式对其他计算和网络应用具有广泛的适用性,并且
不限于所描述的实施方式的特定应用或行业。因此,本发明应被解释为包括所有可能的修
改和变化,这些修改和变化包含在已发布专利的权利要求的范围内。