首页 / 专利库 / 资料储存系统 / 高速缓冲存储器 / 具有数据关联自适应舍入的处理核心

具有数据关联自适应舍入的处理核心

阅读:633发布:2020-05-08

专利汇可以提供具有数据关联自适应舍入的处理核心专利检索,专利查询,专利分析的服务。并且本文公开了具有数据关联自适应舍入的处理核心和关联方法。一个公开的处理核心包括:配置为使用输入的定向图数据生成定向图数据的单元的值的 算术逻辑单元 集群,耦合至 阈值 寄存器和数据寄存器的比较器,配置为当定向图数据的单元的值被加载到数据寄存器中时、将阈值加载到阈值寄存器中的核心 控制器 ,和舍入 电路 。该舍入电路被配置为从该算数逻辑单元集群接收定向图数据的单元的值,并基于来自比较器的比较器输出,有条件地舍入所述定向图数据的单元的值。,下面是具有数据关联自适应舍入的处理核心专利的具体信息内容。

1.一种处理核心,包括:
处理集群,被配置为使用输入的定向图数据,生成定向图数据的单元的值;
核心控制器,被配置为当定向图数据的单元的值被加载到数据寄存器中时,将阈值加载到阈值寄存器中;和
比较器,其耦合到所述阈值寄存器和所述数据寄存器,并且被配置为基于以下生成比较器输出:(i)该阈值寄存器中的阈值;(ii)该数据寄存器中的定向图数据的单元的值;和舍入电路:(i)被配置为从处理集群接收定向图数据的单元的值;(ii)被配置为基于来自比较器的比较器输出,有条件地舍入所述定向图数据的单元的值。
2.根据权利要求1所述的处理核心,还包括:
用于外部控制器的控制连接;并且
其中该核心控制器被配置为:(i)从该控制连接接收以编程方式选择的阈值;(ii)存储所述以编程方式选择的阈值作为阈值。
3.根据权利要求2所述的处理核心,其中所述核心控制器被配置为:
从该控制连接接收所述以编程方式选择的阈值和所述定向图数据的单元之间的以编程方式选择的关联;和
当将所述定向图数据的单元的值加载到数据寄存器中时,使用以编程方式选择的关联以将阈值加载到阈值寄存器中。
4.根据权利要求1所述的处理核心,其中:
所述定向图数据的单元是向量;
该值是该向量中的条目集合中的一个条目;
该舍入电路被配置为使用向量中的条目集合来计算阈值;和
该核心控制器被配置为指示该舍入电路计算阈值。
5.根据权利要求4所述的处理核心,还包括:
用于外部控制器的控制连接;
其中该核心控制器被配置为从该控制连接接收以编程方式选择的阈值;和其中该核心控制器配置为指示该舍入电路使用以编程方式选择的阈值来计算阈值。
6.根据权利要求1所述的处理核心,其中:
所述定向图数据的单元是具有条目集合的向量;
所述条目作为浮点数存储在该处理核心中;和
该值是所述条目集合中的一个条目的指数。
7.根据权利要求1所述的处理核心,还包括:
高速缓冲存储器连接;
外部控制器连接;
其中该核心控制器被配置为从该外部控制器连接接收命令;
其中该命令包括用于定向图数据的单元的标识符、输入的定向图数据的集合、以及用于内核的内核标识符;和
其中所述核心控制器被配置为一旦接收到所述命令,就从所述高速缓冲存储器连接检索所述定向图数据的单元和所述内核。
8.根据权利要求7所述的处理核心,其中:
该核心控制器被配置为一旦接收到命令就检索阈值。
9.如权利要求1所述的处理核心,还包括:
压缩电路,可操作地耦合到该舍入电路的输出,并被配置为对定向图数据的单元执行游程长度压缩;和
其中该舍入电路基于来自比较器的比较器输出,将定向图数据的单元的值舍入为零。
10.根据权利要求1所述的处理核心,还包括:
元数据发生器电路,可操作地耦合到该舍入电路的输出,并被配置为当定向图数据的单元中的所有值均为零时,生成零标记;和
其中该舍入电路基于来自比较器的比较器输出,将定向图的单元的值舍入为零。
11.一种方法,包括:
在处理核心中,将阈值与定向图数据的单元相关联,所述定向图数据来自定向图;
使用处理核心运行定向图;
在运行定向图并使用处理核心中的处理集群的同时,生成定向图数据的单元的值;
生成定向图数据的单元的值和阈值的比较;和
基于该比较并使用处理核心中的舍入电路,对所述定向图数据的单元的值进行有条件地舍入。
12.根据权利要求11所述的方法,还包括:
从外部控制器接收该处理核心上的阈值;
从外部控制器接收定向图数据的单元与阈值之间的关联;和
其中在处理核心中,根据从外部控制器接收到的关联,来进行关联。
13.根据权利要求11所述的方法,还包括:
使用压缩电路,并且在舍入电路已经舍入定向图数据的单元的值之后,对定向图数据的单元进行压缩;和
其中该压缩电路使用游程长度编码。
14.根据权利要求11所述的方法,还包括:
当定向图数据的单元中的所有值均为零时,使用可操作地耦合到处理集群的输出的元数据发生器电路来生成零标记;和
其中该舍入电路将值舍入为零。
15.根据权利要求11所述的方法,还包括:
使用用于定向图的输入数据的集合来训练回归分类器,以确定用于定向图的阈值的集合;
从外部控制器接收处理核心上的阈值集合;和
其中所述阈值集合包括阈值。
16.根据权利要求11所述的方法,还包括:
使用来自定向图数据的单元的值的集合,来计算阈值;
其中定向图数据的单元是向量;和
其中所述值的集合是向量中的条目集合。
17.根据权利要求11所述的方法,其中:
所述定向图数据的单元是具有条目集合的向量;
所述条目作为浮点数存储在该处理核心中;
该值是所述条目集合中的一个条目的指数;和
所述比较的生成包括评估条目的指数。
18.一种处理核心,包括:
用于根据关联对阈值和定向图数据的单元进行关联的部件;
用于使用输入的定向图数据生成定向图数据的单元的值的部件;
用于利用所述关联生成阈值和定向图数据的单元的值的比较的部件;和
用于基于该比较对定向图数据的单元的值进行有条件地舍入的部件。
19.根据权利要求18所述的处理核心,还包括:
用于在已经对定向图数据的单元的值进行有条件地舍入之后、压缩定向图数据的单元的部件;和
其中所述用于压缩的部件使用游程长度编码。
20.根据权利要求18所述的处理核心,还包括:
用于在已经对定向图数据的单元的值进行有条件地舍入之后、为定向图数据的单元生成零标记的部件;
其中所述用于有条件地舍入的部件将值舍入为零。
21.根据权利要求18所述的处理核心,还包括:
用于使用向量中的条目集合来生成阈值的部件;
其中所述定向图数据的单元是向量;和
该值是向量中的条目集合中的一个条目。
22.根据权利要求18所述的处理核心,其中:
所述定向图数据的单元是具有条目集合的向量;
所述条目作为浮点数存储在处理核心中;
该值是条目集合中一个条目的指数。

说明书全文

具有数据关联自适应舍入的处理核心

[0001] 相关申请的交叉引用
[0002] 本申请要求于2018年9月28日提交的美国临时专利申请号62/738,286的权益,出于所有目的将其全部内容通过引用合并于此。

技术领域

[0003] 本公开涉及具有数据关联自适应舍入的处理核心。

背景技术

[0004] 机器智能系统的性能的最近激增不是由于革命性的新算法的发展。事实上,当今机器智能应用中使用的核心算法源于当今半个多世纪的历史(bodyof work)。取而代之的是,其已经成为助长了最近激增的、以有效的方式实现机器智能算法的、硬件软件的改进。曾经过于计算密集使得即使最复杂的计算机也无法以有用的方式实现的算法现在可以在单个用户的智能电话上使用专用硬件运行。硬件和软件的改进采取各种形式。例如,传统上用来处理用于渲染计算机图形多边形的向量的图形处理单元已经以有效方式改换用途,以操纵机器智能处理中使用的数据元素。作为另一示例,已经通过使用专用处理元素(例如脉动阵列)从头开始设计了某些类别的硬件,以实现机器智能算法。进一步的进展已集中在使用晶体管和存储元件的集合,直接在硬件中模仿(mimic)传统人工神经网络(ANN)中神经元的行为。毫无疑问,机器智能领域从这些改进中受益匪浅。然而,尽管人们对这些方案有着浓厚的兴趣,但是机器智能系统仍然代表着现代计算量和能源密集度最高的计算应用之一,并且呈现为进一步发展做好准备的领域。
[0005] 机器智能应用如此资源匮乏的原因是,要对其进行操作的数据结构通常非常大,并且必须在每个数据结构上运行的离散原始计算的数量同样很多。传统的ANN采用输入向量,使用输入向量和权重向量的集合进行计算,然后产生输出向量。权重向量的集合中的每个权重向量通常被称为网络的一层,并且每一层的输出充当下一层的输入。在传统网络中,各层是完全连接的,这要求输入向量的每个元素都与权重向量的每个元素一起参与计算。因此,所参与的计算数量与每层的大小随幂律关系而增加。此外,机器智能算法的这一方面使它们难以并行化,因为每一层的计算都取决于先前层的输出。
[0006] 现代ANN使前段中提到的问题更加恶化。现代ANN方案在业界和文献中经常被称为“深度学习”方案。这通常是指涉及的层数很多,或者一层的输出与其他层的输入之间的关系的复杂度。例如,在现代深度学习ANN中,下游层的输出可以反馈到前一层,从而在总体计算中添加递归元素。层的增加、以及与层之间的递归关系相关联的额外复杂度两者都增加了实现现代ANN所需的计算资源。
[0007] 图1图示了用于现代机器智能系统的计算的定向图(directed graph)100。定向图100的输入是输入张量X。定向图100的输出是输出张量Y。输入可以是画面的编码,例如猫
101的图像。在此示例中,定向图100的运行涉及这样的图,该图提供关于文本猜测的编码,该文本猜测关于所编码的图像的内容包含什么。图形输出可以称为由定向图生成的推断,因为机器智能系统正根据画面的编码有效地推断画面示出了什么内容。这样,如果定向图
10代表训练有素的机器智能系统,则具有输入张量X的图100的运行将产生输出张量Y,该输出张量Y如图所示编码单词“猫”。
[0008] 定向图100的边缘代表运行该图必须进行的计算。在此示例中,该图分为两部分-卷积部分102和完全连接部分103。卷积部分可以称为卷积神经网络(CNN)。CNN 102的定向图中的顶点形成层的集合,其包括层106、107和108。每个层包括张量集,例如张量109、110和111。定向图中的完全连接部分103的顶点还形成包括层112和113的层的集合。定向图100中的每个边缘代表涉及边缘的起源顶点的计算。在CNN 102中,计算是起源顶点与过滤器之间的卷积。CNN 102中的每个边缘都与一个不同的过滤器F11、Fn1、F12、Fn2等关联。如图所示,过滤器F12和张量109经受完全卷积,以生成张量111的一个元素。过滤器F12在张量109“周围滑动”,直到在过滤器和起源顶点之间已经进行了卷积运算为止。在其他方案中,将过滤器F12和张量109的一部分相乘以生成张量111的一个元素,并使用全卷以积生成张量111的多个元素。在完全连接部分103中,计算是权重集合与来自先前层的值之间的乘积。在完全连接部分103中,每个边缘与将在计算中使用的唯一权重值相关联。例如,边缘114代表权重wn与输入值115之间的乘积。元素116的值是涉及层112的所有元素的相同运算的集合、与唯一对应于导致元素116的每个边缘的起源顶点的权重值的集合之和。
[0009] 定向图100的运行涉及许多计算。在图示中,在垂直方向上使用点来指示定向图所涉及的大重复程度。此外,定向图100代表相对简单的ANN,因为现代ANN可以包括更多的层,并且在这些层之间具有更复杂的相互关系。尽管定向图100未示出,但是一层的输出可以循环回作为前一层的输入,以形成通常称为递归神经网络(RNN)的内容。通过具有众多元素使得机器智能系统具有的高度灵活性、连同层的数目及其相互关系的复杂度的增加,使得机器智能系统将来不太可能降低复杂度。因此,机器智能系统的计算复杂度将来可能增加而不是降低。发明内容
[0010] 本文公开了具有数据关联自适应舍入的处理核心和关联方法。本文公开的某些处理核心可以有益地应用于定向图的运行。本文公开的某些处理核心可以有利地应用于人工神经网络(ANN)的运行,在该人工神经网络中,响应于对ANN的输入而生成推断。在特定实施例中,在其他条件相同的情况下,数据关联舍入的使用提高了计算效率,并降低了与使用处理核心从ANN生成推断相关联的功耗。数据关联舍入的使用可以允许所生成的推断保持与在没有舍入的情况下生成的推断的保真度,同时降低处理核心的功耗和计算资源消耗。
[0011] 本文公开的某些处理核心特别可修改以与需要精确运行的稀疏定向图一起使用。备用定向图的示例是用于实例化ANN的示例,其中大多数计算都涉及零或接近零的数据值,这些数据值不会对从ANN生成的推断产生明显影响。但是,在这样的ANN中舍入所有接近零的值将不会导致准确的运行,因为某些接近零的数据值可能会对ANN生成的推断产生决定性影响。因此,通常不足以应用通用规则(blanket rule),在该规则中,所有接近零的数据值都被强制为零,以减轻从ANN生成推断的计算复杂度,因为该方案将导致生成不保持与适当推断的足够保真度的近似值。取而代之,可以以与定向图的基础数据相关联的图案(pattern)应用舍入,从而在保持所生成的推断的准确性的同时,将计算资源和功率资源消耗到最小程度。
[0012] 图2图示了单个定向图200,其从两个不同的相应输入201和202生成单独的推断210和220。如图所示,定向图200在两种情况下均按需要执行,并响应于猫的画面生成推断“猫”和响应于狗的画面生成推断“狗”。在两种情况下,定向图被不同地加亮。该加亮反映了以下事实:基于提供的输入,单个定向图将在不同地点具有高激活级别。通过定向图的加亮路径说明了在运行该图期间计算出的最重要的值。如图所示,第二层的输出包括在两次运行中均具有重要的推断-决定性(dispositive)激活的张量230和在两次运行中均具有不太重要的激活的张量231。因此,被配置为允许运行定向图200的处理核心必须注意保持生成张量230的值的计算的准确性,但是可能能够使生成张量231的计算的准确性放松,同时在两种情况下仍然能够生成正确的推断。这样,与作为张量231的定向图数据相比,不同级别的舍入可以与作为张量230的定向图数据相关联。
[0013] 本文公开的某些处理核心通过将阈值与定向图数据相关联、并使用相关联的阈值对涉及该定向图数据的计算进行舍入,来应用数据关联舍入。处理核心可以以多种方式将阈值和定向图数据相关联,这将在下面的详细公开中通过具体示例进行描述。如本文所使用的,用于实例化、运行和修改定向图的所有数据可以被称为“定向图数据”。在ANN的特定情况下,定向图数据可以包括特定的激活、权重、偏差、或从网络得出推断或对网络进行训练所需的任何中间结果。如本文中所使用的,与定向图数据的关联是指这样的定向图中的数据结构,其与定向图的任何给定执行期间该数据结构所保持的实际值相反。在本文公开的特定处理核心中,可以经由使用存储在处理核心和/或在处理核心可以随机访问的高速缓冲存储器中的数据,将阈值与定向图数据“关联”。处理核心可以存储阈值集合,该阈值集合中的每个阈值与定向图数据的不同单元相关联。这些阈值可以经由外部控制器以编程方式设置。处理核心还可以存储值的集合,用于在处理核心的的运算内部计算阈值,其中,所述值的集合中的每个值与定向图数据的不同单元相关联。这些值可以经由外部控制器以编程方式设置。
[0014] 在处理核心运行定向图以从ANN生成推断的特定情况下,可以配置处理核心,使得ANN的权重和/或过滤器存储在处理核心上的寄存器中,和/或通过随机存储器访问可用于处理核心的高速缓冲存储器。与同一示例保持一致,处理核心可以被配置为在处理核心上的寄存器中和/或在同一高速缓冲存储器中存储支持关联并在需要时应用阈值所必需的数据。在特定实施例中,可以经由外部控制器以编程方式将阈值和关联提供到内部存储器地点或高速缓冲存储器。
[0015] 在本发明的特定实施例中,提供了一种处理核心。该处理核心包括处理集群,被配置为使用输入的定向图数据,生成定向图数据的单元的值。该处理核心还包括核心控制器,被配置为当定向图数据的单元的值被加载到数据寄存器中时,将阈值加载到阈值寄存器中。该处理核心还包括比较器,其耦合到所述阈值寄存器和所述数据寄存器,并且被配置为基于以下生成比较器输出:(i)该阈值寄存器中的阈值;(ii)该数据寄存器中的定向图数据的单元的值。该处理核心还包括舍入电路:(i)被配置为从处理集群接收定向图数据的单元的值;(ii)被配置为基于来自比较器的比较器输出,有条件地舍入所述定向图数据的单元的值。
[0016] 在本发明的特定实施例中,提供了一种方法。该方法包括:在处理核心中,将阈值与定向图数据的单元相关联。所述定向图数据来自定向图。该方法还包括使用处理核心运行定向图。该方法还包括在运行定向图并使用处理核心中的处理集群的同时,生成定向图数据的单元的值。该方法还包括生成定向图数据的单元的值和阈值的比较。该方法还包括基于该比较并使用处理核心中的舍入电路,对所述定向图数据的单元的值进行有条件地舍入。
[0017] 在本发明的特定实施例中,提供了一种处理核心。该处理核心包括:用于根据关联对阈值和定向图数据的单元进行关联的部件,用于使用输入的定向图数据生成定向图数据的单元的值的部件,用于利用所述关联生成阈值和定向图数据的单元的值的比较的部件,和用于基于该比较对定向图数据的单元的值进行有条件地舍入的部件。附图说明
[0018] 图1图示了根据相关技术的人工神经网络的定向图。
[0019] 图2图示了根据相关技术的从两个不同的输入生成两个不同的推断的人工神经网络的定向图。
[0020] 图3是根据本发明的特定实施例的处理核心的框图
[0021] 图4是根据本发明的特定实施例的用于使用处理核心运行定向图的方法的流程图
[0022] 图5是用于使用定向图数据和阈值之间的关联来实现图4中公开的特定方法的功能框图。
[0023] 图6是用于使用输入的定向图数据和阈值之间的关联来实现图4中公开的特定方法的功能框图。
[0024] 图7是用于使用输入的定向图数据、和用来使用该相同定向图数据来计算阈值的值之间的关联来实现图4中公开的特定方法的功能框图。
[0025] 图8是用于使用输入的定向图数据和阈值之间的关联来实现图4中公开的特定方法的功能框图。
[0026] 图9是根据本发明的特定实施例的连接到外部控制器和高速缓冲存储器的处理核心的框图。
[0027] 图10是根据本发明的特定实施例的在主要数据路径中具有集成压缩和解压缩系统的处理核心的框图。
[0028] 图11是根据本发明的特定实施例的在主要数据路径中具有集成元数据发生器的处理核心的框图。

具体实施方式

[0029] 在本节中,提供了与根据以上发明内容的具有数据关联自适应舍入的处理核心相关联的特定方法和系统。本节中公开的方法和系统是本发明的非限制性实施例,仅出于说明目的而提供,并且不应该用来限制本发明的全部范围。
[0030] 图3中的处理核心300可用于描述本发明的特定实施例的操作。处理核心包括核心控制器301、控制连接302、以及至少两个存储器连接303和304。存储器可以是外部高速缓冲存储器,使得存储器连接是高速缓冲存储器连接。控制器可以是外部控制器,使得控制连接是外部控制器连接。核心控制器301可以经由控制连接302接收指令。这些指令可以包括输入数据和内核的标识。例如,在响应于输入数据的集合“input_1”并具有第一层权重“weight_layer_1”的ANN运行期间,控制连接可以接收以下形式的指令:{conv,input_1,weights_layer_1}。提供到定向图的输入的输入数据在本文中可以称为输入定向图数据,其中输入数据的集合“input_1”是包括具有特定值的定向图数据的多个条目的输入定向图数据的集合。然后用于卷积运算“conv”的内核可以由核心控制器从外部存储器访问,并用来形成处理核心的指令线程305。此处的“conv”是指input_1和weights_layer_1之间的卷积,并用作将运行卷积运算的内核的内核标识符。该指令可以在存储器中包含input_1和weights_layer_1的地址,或者其也可以包含值本身。指令因此可以涉及到ANN的输入数据和包括网络的第一层数据之间的卷积。然后可以使用线程305来管理处理核心的主要数据路径306以运行该卷积。在该示例中,线程305将导致值output_layer_1由主要数据路径306生成并存储在高速缓冲存储器中。
[0031] 处理核心的主要数据路径306可以涉及从存储器连接303取出数据,将其加载到处理集群308的源存储器307中,进行处理,以及将输出存储在目的存储器中。源存储器307和目的存储器309可以是与处理集集群成的寄存器。从中检索输入数据并存储输出数据的存储器可以是相同的存储器,并且可以是适合于随机访问的外部高速缓冲存储器。处理集群308可以包括处理核心的主要计算单元。这样的计算单元的示例包括算术逻辑单元(ALU)和其他逻辑。如本文所使用的,术语“ALU”是指在定点数据元素上运算的电路块以及在浮点数据元素上运算的浮点单元(FPU)。与先前段落中的示例保持一致,可以从存储器中检索input_1和weights_layer_1的值,并且可以根据指令线程305将这些向量的分量值提供到处理集群308。核心控制器301和主要数据路径306的电路块之间的连接可以涉及将配置数据提供到每个块的配置寄存器、提供用于计算的指令、以及将元数据往返于核心控制器301路由,这将在下面描述。然后可以将input_1和weight_layer_1的卷积的输出(我们可以称为output_layer_1)存储在存储器中。
[0032] 处理核心300包括舍入块310,该舍入块310位于主要数据路径306上的处理集群308的下游。舍入块310可以被配置为舍入来自目的存储器309的特定值。可以根据数据关联舍入方案进行舍入。可以将这些值舍入为零。这些值也可以舍入到最接近的整数、一、负一、或者将简化进一步的下游计算同时将数据路径的保真度维持在可接受程度的任何其他值或值集。在实例化ANN的定向图的上下文中,将保真度维持在“可接受程度”涉及确保与禁用数据关联舍入时相同的推断由ANN生成。在本发明的特定实施例中,在定向图的一层运行期间生成的值的子集将被舍入到零,以简化在定向图的后续层的运行中涉及的进一步计算。
[0033] 在本发明的特定实施例中,舍入块,例如舍入块310,可以包括舍入电路。舍入电路可以包括比较器和基于由比较器产生的比较的舍入值。比较可以是布尔值,并且如果布尔值为真,则可以将值舍入为零。舍入块可以将阈值和值应用于比较器以生成比较。舍入块可以基于该比较,来对提供到比较器的值进行舍入。在本发明的特定实施例中,舍入块所利用的特定阈值可以与正在评估的数据相关联。与上面处理核心对于指令{conv,input_1,weights_layer_1}运行线程的示例保持一致,阈值可以与input_1数据结构或weights_layer_1数据结构相关联,并且可以应用于舍入块,以确定是否在将output_layer_1存储在存储器中之前,应对output_layer_1中的值进行舍入。处理核心管理的关联可能与数据结构本身有关,而与数据结构中的值无关。换句话说,每当将输入数据提供到由处理核心实例化的给定定向图时,可以将相同的关联阈值应用于舍入块,这与每当将特定值提供到处理核心时相反。
[0034] 在本发明的特定实施例中,定向图数据和阈值之间的关联可以采取多种形式。关联可以在定向图数据的不同单元之间。例如,单个阈值可以关联于保存单个数据值的数据结构、包含向量或其他张量内的相关数据值的集合的数据结构、多维数据结构的单个平面、整个张量、用来保存定向图数据的一个或多个元素的数据瓦片、定向图的整个层、或整个图。关联也可以在不同类型的定向图数据之间。例如,单个阈值可以关联于到图的输入数据、定向图的边缘或节点、或定向图的输出。在用于实例化ANN的定向图的示例中,关联可以用于累积值、权重值,过滤器值、偏差值、输出值、输入值、或在从网络生成推断期间使用或产生的任何其他数据结构。从下面的示例中可以清楚的是,阈值和数据结构之间的关联可以是在对该计算的输出进行使用阈值的舍入的同时、与该计算的操作数的关联,或者其可以直接是该计算的输出之间的关联。换句话说,关联可以促使处理核心应用给定阈值,以对使用数据结构的任何计算的输出进行舍入,或者对在推断期间产生该数据结构的值的任何计算的输出进行舍入。
[0035] 在本发明的特定实施例中,可以以各种方式将阈值提供到处理核心。例如,可以通过外部控制器以编程方式将阈值提供到处理核心。一旦设置,该阈值可以称为以编程方式选择的阈值。外部控制器和处理核心可以被配置为允许在要在处理核心中编译和实现的人类可读源代码的级别处,指定数据结构和阈值之间的关联作为以编程方式选择的关联。同样,它们可以配置为允许在要在处理核心中编译和实现的人类可读源代码的级别处,规定阈值的值、或用于导出这些值的方程式,作为以编程方式选择的阈值。外部控制器可以是RISC控制器,能够接收规定关联和阈值的PC命令。外部控制器还可以以应将阈值与之关联的数据的标识的形式提供关联。或者,外部控制器可以将阈值存储在存储器中已由处理核心分配的地点,以与定向图数据的给定单元关联,使得该关联是处理器的固有特征,并且该关联在将数据值加载到该特定地址时由外部控制器设置。这些阈值可以存储在处理核心板上的核心控制器的存储器中,例如核心控制器301,或者存储在处理核心可用的外部高速缓冲存储器中。该外部高速缓冲存储器可以是随机存取存储器。所述阈值也可以连同它们关联的数据结构一起存储在元数据报头中。由此,处理核心可以被配置为获得阈值,作为从数据结构获得值的常规过程的一部分,并进行一些附加修改以负责(account for)从结构的报头访问阈值。例如,与input_data_1相关联的数据结构可以包括报头,并且可以将要应用于其中使用input_data_1的任何计算的阈值存储在该报头中。这样,每当从存储器中调用(recalled)input_data_1时,也将检索所需阈值,因为它位于用于从存储器中标识和调用所需值的数据报头中。
[0036] 阈值可以采用各种形式。阈值可以是固定数字,他们经由外部控制器以编程方式配置。例如,外部控制器可以将阈值设置为“100”,并且与该阈值相关联的任何低于“100”的值都可以舍入。还可以基于定向图数据结构中的数据值,来自适应地导出阈值。在这些情况下,可以经由外部控制器以编程方式配置用于导出阈值的方程式。例如,外部控制器可以设置值“60”,并且处理核心将基于将阈值设置为数据值的集合的最大值的60%的设计,根据一系列方程式在内部导出阈值。替代地,或组合地,这些方程式的全部或一部分可以在舍入模块上以硬件配置。例如,可以通过一系列逻辑来评估从核心计算块的目的存储器提供的值集,以产生该值集的平均值,以用作阈值或用于计算阈值。舍入块可以包括不同系列的逻辑门,这些逻辑门可以根据关联以编程方式应用于不同的数据结构。
[0037] 在本发明的特定实施例中,阈值可以被自适应地导出以舍入相对于定向图数据的相同单元中的其他值而言相对无关紧要的值。例如,可以导出阈值,作为给定数据结构中的数据值集合中的最大值的以编程方式定义的分数(例如,在运行ANN期间产生的累积值的向量中的最大值的1/4)。当将这些方案应用于ANN的运行时,它们可能会表现出某些优势,因为某些数据结构中的较大值将主导(dominate)较小值在生成推断中的作用。用于导出阈值的方程式可能更复杂,并且可能涉及查找给定数据结构中的最大值、众数、均值、中值、或最小值。这些方程式还可以涉及确定数据值的标准偏差、分析这些值的直方图、以及对数据值进行复杂的统计分析。用于导出阈值并进行这些间歇分析的方程式可以以编程方式定义、与处理核心可访问的内核相关联、和/或在处理核心的舍入模块中以硬件直接实现。
[0038] 在本发明的特定实施例中,阈值可以被自适应地导出为舍入值,该值相对于定向图数据的不同单元中的其他值而言相对无关紧要。定向图数据的这些不同单元之间的关系也可以以编程方式定义,如用于从中导出阈值的方程式那样。例如,可以将来自CNN的第二层的输出中的值的阈值设置为用于计算CNN的第二层的输出的平均过滤器值的1/2。
[0039] 在本发明的特定实施例中,可以参考与其绝对逻辑值相对的数据值的特定方面,来提供阈值。根据这些实施例的方案在进行阈值和数据值之间的比较的效率方面表现出某些益处。例如,在其中将数据值存储为浮点数的方案中,可以参考浮点数的指数值来提供或导出阈值。这样,阈值可以是诸如“8”的设置值,并且该比较将涉及整数值“8”与存储在浮点数的指数位中的值之间的基本比较运算。这种方案的好处是系统不需要分析整个数据值,而实际上可以完全忽略它。例如,不需要分析浮点数的尾数。同时,指数提供了有关不同数据值可能对定向图的运行产生相对影响的良好信息源,使得在某些应用中,按指数舍入可以达到保持定向图的运行的保真度的好处,同时还最小化运行的计算资源消耗。
[0040] 数据和阈值之间的关联可以在计算期间以各种方式应用。例如,核心控制器可以将阈值存储在指令线程中,并且在从处理集群的目的存储器传送关联的数据值时,将阈值应用于舍入块的配置寄存器。从这个意义上讲,关联是通过指令线程精心安排(orchestrated)的主要数据路径的时序来应用的。在这些方案中,可以将阈值作为数据值存储在指令线程中,并且当将要应用阈值的数据值传送到比较器的替代输入时,可以将阈值以未修改的形式从线程控制器提供到舍入块中的比较器。作为另一示例,阈值可以针对整个数据结构或其子集存储在存储器中。数据结构可以包括定向图数据的一部分。然后,在从FPU集群输出中移走数据之前,一个或多个阈值可以由核心控制器块进行预编程,并保持稳定直到数据移动完成为止。核心控制器可以为进行的所有数学结果编程一个阈值,或者可以为每个数据结构或其子集更新阈值。
[0041] 在本发明的特定实施例中,可以在主要数据路径中的各个点处进行舍入。如图3所示,在从计算集群获得值之后,立即在舍入块310中进行舍入。作为选择,可以应用类似的方案,以在将值提供到主要计算集群之前(而不是如图3所示那样之后)对值进行舍入。但是,如下所述,某些益处归于(accrueto)这样的方案,其中值在存储之前舍入,这与以未舍入的形式存储并然后在调用它们以供以后使用时舍入相对。
[0042] 可以选择适当的阈值和关联以改进处理核心的效率,同时将定向图的运行精度保持在“可接受的级别”。可以通过向定向图馈送输入数据的集合,在处理核心被配置为运行定向图之后,确定适当的阈值和关联,所述输入数据的集合用应由定向图生成的适当推断来标记。训练数据可用于通过使用监督机器学习方案来修改阈值。可以使用已知的监督学习技术,来选择或求解阈值和关联,用于使用任何种类的迭代评估。例如,训练数据可以用于训练回归分类器,该回归分类器将被训练以确定用于定向图的阈值集合。与难以获得大量带标签的输入数据的某些应用相反,处理核心可以通过停用舍入块的舍入操作来生成自己的训练数据。可以使用外部控制器提供的命令,将处理核心置于此状态。然后,可以为该核心馈送一系列输入数据,从定向图的运行导出“正确”输出。然后可以将输入和导出的输出进行组合以形成训练数据集。然后,所获得的训练数据可用于设置阈值和关联。作为选择,处理核心可以在原地生成其训练数据,因为当要求处理核心运行新的输入数据时,处理核心的状态在舍入激活和停用之间连续切换(即,可以在处理核心操作中并且舍入特征关闭的同时,收获标记的训练数据)。
[0043] 图4提供了用于在处理核心上运行定向图的方法的集合的流程图400。该流程图具有将阈值与定向图数据的单元相关联的步骤401。该步骤由ANN的权重层“layer_1_weight”的标识与固定值0.8之间的数据链路说明。如上所述,值0.8可以是阈值本身或者可以是以后用于导出阈值的值。该步骤可以借助于用于关联的部件来进行,所述部件包括外部控制器、高速缓冲存储器和处理核心上的核心控制器。
[0044] 流程图继续运行定向图的步骤402。步骤402可以涉及运行与整个定向图的运行有关的单个指令。如图所示,该指令可以用于定向图的输入与定向图中的权重层之间的单个卷积运算。该流程图继续到步骤403,其中使用定向图数据的单元生成值。步骤403本质上可以是步骤402的子步骤,使得其作为指令运行的一部分进行。在这种情况下,定向图数据的两个单元是“input”和“layer_1_weight”,并且该运算涉及该定向图数据的值的卷积,以产生“layer_1_output”的值。步骤403可以通过用于使用从高速缓冲存储器获得的操作数在核心控制器的控制下生成值的部件来进行,诸如处理核心的主要计算集群。
[0045] 流程图继续到步骤404,在步骤404中生成比较值。该步骤可以涉及将步骤403的输出和阈值传递到比较器的输入,以对该比较器的输出进行比较。在处理核心中,这可以涉及将定向图数据的传递传递到数据寄存器410,以及将阈值的传递传递给阈值寄存器411。可以将数据临时保存在这些寄存器中,直到在访问那些寄存器的情况下使用比较器412运行该比较的时间为止。该定时可以由处理核心的控制器(例如核心控制器301)进行,以确保在任何给定时间提供的比较器输出413与处理核心的舍入电路(例如舍入块310中的舍入电路)为了潜在舍入运算当前保存的数据有关。如图所示,该阈值与步骤403中使用的操作数相关联,并且相关联的阈值被传递到比较器以用于与步骤403中的操作的输出进行比较。然而,如前所述,阈值可能已经与步骤403为其生成值的输出数据结构相关联。无论如何,在将相关联的阈值提供到比较器的同时,将在步骤403中生成的定向图数据的单元的值提供到比较器。步骤404可以由用于生成比较的部件(例如比较器)和控制元件的集合(包括处理核心的核心控制器)来执行,所述控制元件协调所需的值向其的传递。在特定方案中,提供到比较器的定向图数据的单元是步骤403的操作数或输出的一部分。例如,定向图数据的单元可以是在步骤403中使用或生成的定点数据值的指数。
[0046] 流程图包含可选步骤405,其中计算阈值。可以基于在步骤403中使用或生成的数据值和预存储的值,来计算阈值。上面描述了该方案的变体。另外,所示的值0.8可能不是固定值,而是可以是不取决于步骤403的运行的方程式或算法,如步骤405那样。如前所述,阈值可以从处理单元的当前或最近动作中不涉及的数据结构中的值导出。这样,步骤405可以独立地馈入步骤404,与从步骤403链接到步骤404相反。可以使用数据结构中的条目集合来生成阈值。步骤405可以通过用于生成阈值的部件来执行,例如,一系列逻辑门,所述逻辑门耦合到以上提到的处理核心的处理集群的目的存储器和/或外部控制器和高速缓冲存储器。
[0047] 流程图继续到步骤406,其中基于在步骤404中生成的比较对值进行有条件地舍入。舍入可以由舍入电路块进行,该舍入电路块被配置为提供舍入值代替原始值。舍入电路可以在处理核心的主数据管道中,如图3所示。用于舍入的部件可以包括舍入块,例如舍入块310,并从硬件存储器中检索值,修改接收到的值,或将特定电路节点接地或电源,以运行舍入操作,其中该块的输入是作为输入来自步骤403的值以及作为控制信号来自步骤404的比较。
[0048] 图5-8是提供在图4中启用和公开的特定方法的示例的功能框图。框图500图示了在输入定向图数据“Z”的单元和阈值“TH”之间形成的关联501。Z和TH的关联和值可以在框图500所示的流程之前全部可用。关联501可以采用本文公开的任何形式,并且可以使用本文公开的任何方案来创建。处理核心的控制器可以利用关联501来确保TH的值在阈值寄存器502中可用,同时Z的值在数据寄存器503中可用。然后可以使用舍入块505中的比较器504来比较这两个值。比较器504的比较器输出510然后可以用于控制舍入块505中的舍入电路506的操作。结果,使用计算单元507产生的、涉及值X和Y的计算乘积将基于预存储的关联
501和值TH有条件地舍入。因此,使用关联501,使得只要计算用于关联的数据结构的值,就应用阈值。再次参考图3,舍入块505可以代替舍入块310工作,计算单元507可以用作处理集群308的一部分,并且输入数据寄存器508和509可以是源存储器307的一部分。
[0049] 图6是用于使用输入的定向图数据和阈值之间的关联、来实现图4中公开的特定方法的功能框图。框图600图示了在输入的定向图数据“X”的单元和阈值“TH”之间形成的关联601。X和TH的关联和值都可以在框图600所示的流程之前全部获得。关联601可以采用本文公开的任何形式,并且可以使用本文公开的任何方案来创建。处理核心的控制器可以利用关联601来确保TH的值在阈值寄存器502中可用,同时Z的值在数据寄存器503中可用。因此,关联601与关联501不同地使用在于,只要将输入的定向图数据X用作计算的输入并用于对该计算的输出进行舍入,就应用阈值。虽然在这一点上有所不同,图5和6的相似之处在于没有独立地计算阈值(即,在框图500和600中未利用图4中的计算阈值的可选步骤405)。相反,图7和8图示了其中需要步骤405来计算阈值的方案。
[0050] 图7是用于使用输入的定向图数据和用于计算阈值的值之间的关联、来实现图4中公开的特定方法的功能框图。框图700图示了在输入定向图数据“X”的单元和值“V”之间形成的关联701。框图700包括图4中的步骤405的运行,因为阈值不是预先存储的值。取而代之,如图所示,用于数据结构V的值被加载到寄存器703中,并由计算块702连同用于数据结构Z的值一起使用以计算用于数据结构TH的阈值。计算块702的形式将取决于计算阈值的特定方式。例如,该计算可以涉及数据结构Z中的值的直方图或更基本的计算,例如将数据结构Z中的最大值分成两半,并且将设置计算块702的复杂度以适应该计算。然后,将由计算块702计算出的计算值存储在阈值寄存器502中。然后,使用类似于图5和6的方案,使用TH的值用于有条件地舍入数据结构Z的值。X和V的关联和值都可以在框图700所示的流程之前全部获得。关联701可以采用本文公开的任何形式,并且可以使用本文公开的任何方案来创建。
处理核心的控制器可以利用关联701来确保TH的计算值在阈值寄存器502中可用,同时Z的值在数据寄存器503中可用。因此,关联701用于确保使用基于输出数据Z的值的定制舍入值用于对输出数据进行舍入,其中通过与输入数据X相关联的值来设置定制舍入,该值用于计算数据结构Z的值。在本发明的其他实施例中,关联701可以取而代之地已经在数据结构Z和数据结构V之间,而该流程图在其他方面将与图7所示的相同。
[0051] 图8是用于使用输入的定向图数据和阈值之间的关联、来实现图4中公开的特定方法的功能框图。框图800利用如图7那样的在输入定向图数据的单元“X”和值“V”之间形成的相同关联701。此外,可以以与图7相同的方式修改图8,使得关联可能已经在数据结构Z和数据结构V之间,而该流程图在其他方面与图8所示的相同。框图800包含图4中的步骤405的执行,因为阈值不是预先存储的值。取而代之,如图所示,用于数据结构V的值被加载到寄存器703中,并且连同用于数据结构X的值一起被计算块801使用以计算用于数据结构TH的阈值。
这与图7中的方案的不同之处在于,计算的输入数据用于计算阈值,这与输出数据相反。计算块801的形式将取决于如计算块702的示例中那样计算阈值的特定方式。然后将计算出的值存储在阈值寄存器502中。然后使用TH的值,以使用类似于图5和6的方案对数据结构Z的值进行有条件地舍入。X和V的关联和值都可以在框图700所示的流程之前全部获得。处理核心的控制器可以利用关联701来确保TH的计算值在阈值寄存器502中可用,同时Z的值在数据寄存器503中可用。因此,关联701用于确保使用基于定向图数据X的单元的值的定制舍入值对输出数据进行舍入。
[0052] 图9提供了处理核心300的框图,该处理核心300连接到外部存储器900,并且可以从外部控制器901接收控制输入。在这种配置中,处理核心可以通过访问存储器900中的外部控制器901将命令加载到其中的已知地点,来接收命令输入。外部存储器900可以存储由处理核心运行的定向图数据连同用于进行该运行的内核、此处公开的关联和阈值、以及处理核心的操作所需的其他数据。在所示的情况下,外部存储器900是L1高速缓冲存储器,并且外部控制器901是精简指令集(RISC)控制器。然而,其他种类的存储器和控制器可以起到与所示组件相同的目的。诸如外部控制器901之类的外部控制器可以运行本文所公开的需要外部控制器的任何方法步骤。诸如存储器900之类的存储器可以涉及本文所公开的需要外部存储器的任何方法步骤。更高级别的PC控制器可以具有到外部控制器901的连接、和到核心控制器301的可选定向连接。可以在多个处理核心之间共享存储器900,所述多个处理核心协作以并行运行定向图。
[0053] 图9还示出了流程图步骤902,该流程图步骤902可以是图4中步骤401的先行步骤。流程图步骤902涉及迭代机器学习技术,用于训练处理核心300优化定向图的运行所需的阈值和关联。可以通过上述PC控制器与控制器901和存储器900相结合来进行训练。训练可以涉及将测试输入提供到控制器901、以及对要在存储器900和配置寄存器和处理核心300上的其他存储地点中存储的阈值和关联进行最终编程。
[0054] 图10示出了处理核心1000,其在主要数据路径中包括解压缩1002和压缩1001块。解压缩和压缩块可以限制通过运行定向图而消耗的处理和存储带宽资源的数量。解压缩和压缩块可以包括用于压缩二进制数据的压缩电路和解压缩电路,或以定向图数据值的规模运行压缩。在稀疏定向图的情况下,在运行压缩和解压缩方面,减少需要在系统中移动的数据结构的大小可以提供显著利润(gains)以及相对低的开销成本。特别地,压缩块1001可以利用游程长度样式的编码,该编码将相同值的长串改变为代表该值的符号和代表游程长度的符号(即,“00000000”可以被压缩为“80”表示8个连续的零)。这样的操作可以称为游程长度压缩。以游程长度编码为跟踪的游程选择的值可以有利地设置为舍入电路将这些值舍入到的值。例如,如果压缩系统使用“0”游程长度编码,则舍入电路将配置为将接近零的值舍入为0,并有利于将似乎对定向图的运行没有决定性影响的定向图数据结构的值也舍入为零。压缩块1001还可以被配置为对多个值的游程长度进行编码,其中,基于舍入块舍入到哪些值,来选择所述多个值。
[0055] 该流程图还包括流程图步骤1003,该步骤可以在图4的步骤406之后运行。上面已经刚描述了以此顺序运行该步骤的好处,因为舍入将增加游程长度并增强压缩效率。步骤1003可以通过诸如图10中的压缩块1001之类的用于压缩的部件来进行。压缩块1001可以包括非稀疏值计数器、在检测到稀疏值时将计数器复位的复位电路、以及用于在复位计数器时存储计数器的输出的寄存器。电路元件可以被配置为对连续的非稀疏值的最大数进行计数,以测量给定大小的增量(deltas)。例如,寄存器可以被配置为存储,计数器可以被配置为计数,并且复位电路可以被配置为在检测到稀疏值的X比特价值(worth)时自动复位。具体而言,增量可能比X小两个稀疏值的幂。
[0056] 图11图示了处理核心1100,该处理核心1100在主要数据路径306中包括元数据生成块1101。元数据生成块1101可以评估主要计算集群的输出,并生成反映该输出中的值的元数据。元数据生成块1101可以是元数据发生器电路,其使用顺序逻辑和所存储的用于比较的值,来评估舍入块的输出。元数据发生器电路可以包括用于从处理核心控制器接收命令或其他配置信息的配置寄存器。然后,元数据可以与将使用核心控制器存储该输出的数据结构和/或其中存储输出的数据结构的报头相关联。特别地,元数据生成块1101可以生成舍入块或其他电路所使用的数据,以导出用于定向图数据的单元的适当阈值。例如,如前所述,可以基于数据结构中值的直方图或标准偏差来生成阈值,并且这种信息可以由元数据生成块1101产生。作为选择,或组合地,元数据生成块可以生成指示来自计算集群的输出数据如何稀疏的数据。例如,如果数据结构中的所有值均为零,则元数据生成块1101可以生成与该数据结构相关联的零标记。然后可以在稍后的时间使用该标记,来抑制使用数据结构的计算,其中所有值均为零的事实是决定性的。这样,将元数据生成块1101连接到主要数据路径中的舍入块的输出产生显著的好处,因为它将生成更多的零标记,并进一步增加使用处理核心运行定向图的效率。
[0057] 该流程图还包括流程图步骤1102,其可以在图4的步骤406之后运行。上面已经刚描述了按该顺序运行该步骤的好处,因为基于稀疏性或重复性,舍入可以增加零标记或其他元数据的数量,然后其用来增加使用关联的数据结构的计算的效率。步骤1102可以通过用于生成零标记的部件来运行,例如图11中的元数据发生器块1101。元数据发生器块1101可以包括比较器、逻辑门和输出寄存器。比较器可以针对固定值(例如零),来评估来自舍入块的值集。如果评估的来自舍入块的值集为零,则逻辑门可以生成零标记。然后,输出寄存器可以潜在地连同多个其他零标记一起保存零标记,使得最终可以读取零标记并将其与比较器评估的数据相关联。
[0058] 尽管已经针对本发明的特定实施例详细描述了本说明书,但是应当理解,本领域技术人员在理解前述内容之后,可以容易地想到对这些实施例的变更、变型和等效。尽管本公开中的示例通常针对运行卷积指令的处理核心,但是可以利用相同的方案来简化包括乘积和计算在内的任何复合计算或复合逻辑运算的运行。在不脱离本发明的范围的情况下,本领域技术人员可以对本发明进行这些和其他修改和变型,本发明的范围在所附权利要求中更具体地阐明。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈