首页 / 专利库 / 电脑零配件 / 计算机系统 / 硬件 / 中央处理器 / 算术逻辑单元 / 具有元数据致动的条件图执行的处理核心

具有元数据致动的条件图执行的处理核心

阅读:126发布:2020-05-11

专利汇可以提供具有元数据致动的条件图执行的处理核心专利检索,专利查询,专利分析的服务。并且公开了一种用于 有向图 的高效执行的处理核心。处理核心包括 存储器 以及储存在存储器中的第一数据片和第二数据片。第一数据片和第二数据片包括连续储存在存储器中的数据元素的第一集合和数据元素的第二集合。处理核心还包括与第一数据片相关地储存在存储器中的元数据。处理核心还包括执行引擎、控制单元和指令。所述指令的执行使用执行引擎、数据元素的第一集合中的第一数据元素和数据元素的第二集合中的第二数据元素。控制单元使用元数据来使指令的执行条件化。所述指令的标准执行生成标准输出。所述指令运算的条件执行生成条件执行输出。,下面是具有元数据致动的条件图执行的处理核心专利的具体信息内容。

1.一种处理核心,包括:
存储器
储存在所述存储器中的第一数据片,其中,所述第一数据片包括连续储存在所述存储器中的数据元素的第一集合;
与所述第一数据片相关地储存在所述存储器中的元数据;
储存在所述存储器中的第二数据片,其中,所述第二数据片包括连续储存在所述存储器中的数据元素的第二集合;
执行引擎;
指令,其中,所述指令的执行使用:(i)所述执行引擎;(ii)所述数据元素的第一集合中的第一数据元素;以及(iii)所述数据元素的第二集合中的第二数据元素;以及控制单元,所述控制单元使用所述元数据来使所述指令的执行条件化;
其中,所述指令的标准执行生成标准输出;
其中,所述指令的条件执行生成条件执行输出;以及
其中所述标准输出不等于所述条件执行输出。
2.根据权利要求1所述的处理核心,其中:
所述元数据储存在所述第一数据片的标头中
所述执行引擎包括硬件乘法器、寄存器的集合和累加器。
3.根据权利要求1所述的处理核心,其中:
所述指令是有向图的标准执行的指令序列的一部分;
所述数据元素的第一集合是所述有向图的有向图数据元素;
所述数据元素的第二集合是所述有向图的有向图数据元素;并且
所述指令的条件执行不如所述指令的标准执行计算密集。
4.根据权利要求3所述的处理核心,其中:
所述有向图代表人工神经网络
所述人工神经网络具有层;并且
所述第一数据片和所述第二数据片比所述层具有更少的数据。
5.根据权利要求4所述的处理核心,还包括:
设置所述第一数据片的数据大小的软件控制器
6.根据权利要求1所述的处理核心,其中:
执行所述指令需要执行算术逻辑运算;
所述元数据包括标志;并且
所述标志指示将有条件地执行所述算术逻辑运算。
7.根据权利要求6所述的处理核心,其中,所述元数据包括:
数据元素的第三集合,其被提供给所述执行引擎以用于所述指令的条件执行。
8.根据权利要求1所述的处理核心,其中:
所述指令的标准执行需要执行算术逻辑运算以产生算术逻辑运算输出;
所述指令的条件执行完全阻止所述算术逻辑运算;并且
所述指令的条件执行提供来自存储器的固定值以用于所述算术逻辑运算输出。
9.根据权利要求1所述的处理核心,其中:
所述指令的标准执行需要执行算术逻辑运算以产生算术逻辑运算输出;
所述指令的条件执行将所述算术逻辑运算的精度级别降低到较低的精度级别;并且所述元数据意味着所述较低的精度级别。
10.根据权利要求1所述的处理核心,还包括:
软件控制器;
其中,所述执行引擎在执行所述指令的第一迭代时产生标准输出;
其中,所述软件控制器基于所述标准输出设置所述元数据;
其中,所述执行引擎在执行所述指令的第二迭代时产生条件执行输出;并且其中,所述第二迭代在所述第一迭代之后。
11.根据权利要求1所述的处理核心,其中:
所述元数据包括所述数据元素的第一集合的幂值、均值和方差、以及近似频谱中的一个。
12.根据权利要求1所述的处理核心,其中:
所述元数据是所述数据元素的第一集合的低分辨率近似。
13.一种用于有向图的条件执行的计算机实现的方法,包括:
将第一数据片储存在存储器中,其中,所述第一数据片包括:(i)片标头;以及(ii)连续储存在所述存储器中的数据元素的第一集合;
将第二数据片储存在所述存储器中,其中,所述第二数据片包括连续储存在所述存储器中的数据元素的第二集合;
获取指令,其中,所述指令的执行需要使用以下来进行的算术逻辑运算:(i)算术逻辑单元;(ii)所述数据元素的第一集合中的第一数据元素;以及(iii)所述数据元素的第二集合中的第二数据元素;以及
使用所述片标头有条件地执行所述算术逻辑运算;
其中,从所述算术逻辑运算的条件执行得到的所述算术逻辑单元的条件执行输出不等于从所述算术逻辑运算的标准执行得到的所述算术逻辑单元的标准输出。
14.根据权利要求13所述的计算机实现的方法,还包括:
仅使用处理器核心的硬件元件的集合来生成所述第一数据片的元数据;以及将所述元数据储存在所述片标头中;
其中,所述条件执行使用所述元数据;并且
其中,所述算术逻辑单元和所述存储器均是所述处理器核心的一部分。
15.根据权利要求13所述的计算机实现的方法,还包括:
使用软件控制器来生成所述第一数据片的元数据;以及
将所述元数据储存在所述片标头中;
其中,所述条件执行使用所述元数据。
16.根据权利要求13所述的计算机实现的方法,其中:
所述指令是用于有向图的标准执行的指令序列的一部分;
所述数据元素的第一集合是所述有向图的有向图数据元素;
所述数据元素的第二集合是所述有向图的有向图数据元素;并且
所述条件执行不如所述标准执行计算密集。
17.根据权利要求16所述的计算机实现的方法,其中:
所述有向图代表人工神经网络;
所述人工神经网络具有层;
所述第一数据片和所述第二数据片比所述层具有更少的数据;并且
所述数据元素的第一集合和所述元素的第二集合均由浮点数据元素构成。
18.根据权利要求17所述的计算机实现的方法,还包括:
使用软件控制器设置所述第一数据片的大小。
19.根据权利要求13所述的计算机实现的方法,其中:
所述片标头包括所述第一数据片的元数据。
20.根据权利要求19所述的计算机实现的方法,其中,使用所述片标头有条件地执行所述算术逻辑运算包括:
确定所述第一数据片的元数据包括标志;以及
响应于确定所述第一数据片的元数据包括标志,使得有条件地执行所述算术逻辑运算。
21.根据权利要求19所述的计算机实现的方法,其中,使用所述片标头有条件地执行所述算术逻辑运算包括:
从所述元数据取得数据元素的第三集合;以及
将来自所述数据元素的第三集合的第三数据元素和来自所述数据元素的第二集合的所述第二数据元素提供给所述算术逻辑单元。
22.根据权利要求19所述的计算机实现的方法,其中,使用所述片标头有条件地执行所述算术逻辑运算包括:
完全阻止所述算术逻辑运算;以及
提供来自存储器的固定值以代替所述条件执行输出。
23.根据权利要求19所述的计算机实现的方法,其中,使用所述片标头有条件地执行所述算术逻辑运算包括:
从所述元数据取得精度指示符;
其中,所述条件执行比所述标准执行具有更低的精度;并且
其中,所述更低的精度由所述精度指示符设置。
24.根据权利要求19所述的计算机实现的方法,还包括:
执行所述算术逻辑运算:(i)使用所述第一数据片;(ii)在有条件地执行所述算术逻辑运算之前;以及
使用软件控制器并在执行所述算术逻辑运算时,生成所述片标头的元数据;
其中,在所述算术逻辑运算的条件执行期间使用所生成的元数据。
25.根据权利要求19所述的计算机实现的方法,其中:
所述元数据包括所述数据元素的第一集合的幂值、均值和方差、以及近似频谱中的一个。
26.根据权利要求19所述的计算机实现的方法,其中:
所述元数据是所述数据元素的第一集合的低分辨率近似。

说明书全文

具有元数据致动的条件图执行的处理核心

[0001] 相关申请的交叉引用
[0002] 本申请要求于2017年4月28日提交的美国临时专利申请第62/491,767号和于2018年4月26日提交的美国专利申请第15/963,315号的权益。

背景技术

[0003] 机器智能系统性能的最近的激增并不是由于革命性的新算法的发展。实际上,当今机器智能应用中使用的核心(core)算法源于半个多世纪前的大量工作。相反,正是对硬件软件的改进才以高效的方式实现了机器智能算法,从而促进了最近的激增。曾经是过于计算密集的而即使在最复杂的计算机上也无法以有用的方式实现实现的算法,现在可以使用专用硬件在单独用户的智能手机上执行。硬件和软件的改进有多种形式。例如,传统上用于处理矢量的图形处理单元已经以高效的方式被重新利用以操纵机器智能过程中使用的数据元素,所述矢量用于渲染计算机图形的多边形。作为另一个示例,已经从头开始设计了某些类别的硬件,以通过使用专用处理元件(诸如脉动阵列)来实现机器智能算法。进一步的进展集中在使用晶体管和存储器元件的集合直接在硬件中模拟传统人工神经网络(ANN)中神经元的行为。无疑,机器智能领域从这些改进中受益。然而,尽管对这些方法存在浓厚的兴趣,但机器智能系统仍然代表着现代计算量最大和能量密集的计算应用之一,并且呈现了对于进一步进展来说是成熟的领域。
[0004] 机器智能应用如此耗费资源的原因是,要运算的数据结构通常非常大,并且必须在每个数据结构上执行的离散原始计算的数量同样很多。传统的ANN接受输入向量,使用输入向量和权重向量的集合进行计算,并产生输出向量。权重向量的集合中的每个权重向量通常被称为网络的层,并且每层的输出充当下一层的输入。在传统网络中,各层是全连接的,这要求输入向量的每个元素都与权重向量的每个元素一起参与计算。因此,所涉及的计算的数量与每层的大小成幂律关系而增加。此外,机器智能算法的这一方面使它们难以并行化,因为每层的计算都取决于先前层的输出。
[0005] 现代ANN使先前段落中提到的问题进一步恶化。现代ANN方法在业界和文献中经常被称为“深度学习”方法。这通常是指涉及大量的层,或者一层的输出与其它层的输入之间关系的复杂性。例如,在现代深度学习ANN中,下游层的输出可以反馈到先前层,从而在整体计算中添加递归元素。层的增加以及与层之间的递归关系相关联的额外复杂性,都增加了实现现代ANN所需的计算资源。
[0006] 图1图示了用于现代机器智能系统的计算的有向图100。有向图100的输入是输入张量(tensor)X。有向图100的输出是输出张量Y。输入可以是图片的编码,诸如猫的图像101。在此示例中,有向图100的执行涉及该图提供关于编码图像包含什么内容的文本猜测(guess)的编码。图输出可以称为由有向图生成的推断,因为机器智能系统可以从图片的编码中有效地推断图片所示出的内容。如此,如果有向图100代表经适当训练的机器智能系统,则使用输入张量X执行图100将产生输出张量Y,该输出张量Y编码了词语“猫”,如图所示。
[0007] 有向图100的边(edge)代表执行该图所必须执行的计算。在此示例中,该图分为两部分——卷积部分102和全连接部分103。卷积部分可以称为卷积神经网络(CNN)。CNN 102的有向图中的顶点(vertice)形成层的集合,该层的集合包括层106、107和108。每个层包括张量的集合,诸如张量109、110和111。全连接部分103的有向图中的顶点也形成层的集合,该层的集合包括层112和113。有向图100中的每个边代表涉及边的原点(origin vertex)的计算。在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的每个边的原点。
[0008] 有向图100的执行涉及许多计算。在图示中,在垂直方向上使用点来指示有向图所涉及的大量重复。此外,有向图100代表相对简单的ANN,因为现代ANN可以包括更多的层,并且在这些层之间具有更复杂的相互关系。尽管未被有向图100图示,但是一层的输出可以循环回作为先前层的输入,以形成通常称为递归神经网络(RNN)。通过具有许多元素,机器智能系统具有高度的灵活性,连同层数以及这些层之间的相互关系的复杂性的增加,使得机器智能系统在将来不太可能降低复杂性。因此,机器智能系统的计算复杂性将来可能会增加而不是减少。发明内容
[0009] 公开了一种用于有向图的高效执行的处理核心。处理核心包括存储器以及储存在存储器中的第一数据片和第二数据片。第一数据片和第二数据片包括连续储存在存储器中的数据元素的第一集合和数据元素的第二集合。处理核心还包括与第一数据片相关地储存在存储器中的元数据。处理核心还包括执行引擎、控制单元和指令。所述指令的执行使用执行引擎、数据元素的第一集合中的第一数据元素和数据元素的第二集合中的第二数据元素。控制单元使用元数据来使指令的执行条件化。指令的标准执行生成标准输出。指令运算的条件执行生成条件执行输出。
[0010] 公开了一种处理核心。处理核心包括存储器。处理核心还包括储存在存储器中的第一数据片。第一数据片包括连续储存在存储器中的数据元素的第一集合。处理核心还包括与第一数据片相关地储存在存储器中的元数据。处理核心还包括储存在存储器中的第二数据片。第二数据片包括连续储存在存储器中的数据元素的第二集合。处理核心还包括执行引擎。处理核心还包括指令。所述指令的执行使用:(i)执行引擎;(ii)数据元素的第一集合中的第一数据元素;以及(iii)数据元素的第二集合中的第二数据元素。处理核心还包括控制单元,控制单元使用元数据来使指令的执行条件化。所述指令的标准执行生成标准输出。所述指令的条件执行生成条件执行输出。标准输出不等于条件执行输出。
[0011] 公开了一种用于有向图的条件执行的计算机实现的方法。方法包括将第一数据片储存在存储器中。第一数据片包括:(i)片标头;以及(ii)连续储存在存储器中的数据元素的第一集合。方法还包括将第二数据片储存在存储器中。第二数据片包括连续储存在存储器中的数据元素的第二集合。方法还包括获取指令。所述指令的执行需要使用以下来进行算术逻辑运算:(i)算术逻辑单元;(ii)数据元素的第一集合中的第一数据元素;以及(iii)数据元素的第二集合中的第二数据元素。方法还包括使用片标头有条件地执行算术逻辑运算。从算术逻辑运算的条件执行得到的算术逻辑单元的条件执行输出不等于从算术逻辑运算的标准执行得到的算术逻辑单元的标准输出。附图说明
[0012] 图1包括根据相关技术的人工神经网络的有向图。
[0013] 图2提供了算术逻辑运算的元数据致动的条件执行的数据流程图
[0014] 图3提供了算术逻辑运算的元数据致动的条件执行的流程图以及可以如何生成该元数据的数据流程图。
[0015] 图4提供了用于执行有向图的指令的元数据致动的条件执行的数据流程图。
[0016] 图5提供了用于执行有向图的指令的元数据致动的条件执行的流程图。
[0017] 图6提供了使用元数据进行条件执行的不同方法的数据流程图。
[0018] 图7包括用于有条件地执行有向图的具体方法的图示。

具体实施方式

[0019] 本文公开的方案允许由处理核心以计算高效的方式进行有向图的条件执行(conditional execution),有向图的条件执行产生与有向图的标准执行基本相同的结果。这些方案包括处理核心和相关联的计算机实现的方法。可以通过单独于构成有向图本身及其输入和输出的数据的数据集合,来致动(actuate)条件执行。所述单独的数据集合可以是元数据。通过执行有向图的条件执行而不是有向图的标准执行而节省的计算资源大于在元数据的生成、维护和利用中消耗的计算资源。同时,有向图的条件执行的执行结果有效地等价于标准执行的结果。处理核心可以在没有任何所述单独的数据的情况下进行有向图的标准执行。然而,由单独的数据致动的有向图的条件执行比标准执行更高效。
[0020] 在某些方法中,构成有向图的数据可以存储在片(tile)中。可以将片视为张量的储存容器,所述张量在执行有向图的指令中使用。从存储器中检索片或至少那些片中的具体数据元素以执行有向图。例如,所述指令可以用于与储存在第一片中的与有向图的边相关联的张量和储存在第二片中的与该边的目标点相关联的张量的卷积。响应于接收到这样的指令,处理核心的内核可以从存储器中检索数据片并将其应用到执行引擎。片的大小可以动态修改,以允许单个处理核心以高效的方式实现变体型有向图。
[0021] 在使用片来储存构成有向图的数据的方案中,用于致动有向图的条件执行的单独的数据可以与片相关地存储。用于使有向图的执行条件化的单独的数据可以储存在片中或单独的数据结构中。例如,单独的数据可以是储存在片的标头(header)中的元数据,而构成有向图本身的数据可以储存在片的主体(body)中。片的主体中的数据可以被称为片的载荷(payload)。作为另一示例,可以将用于致动条件执行的单独的数据作为与所述片中的一个片的标识配对的密钥而储存在单独的数据结构中。单独的数据可以相关地储存在相同的存储器中或不同的存储器上。
[0022] 有向图的条件执行可以包括指令的条件执行。指令的条件执行同样可以包括算术逻辑运算的条件执行。在某些方法中,图的条件执行由代替一个或多个标准算术逻辑运算的一个或多个条件算术逻辑运算来定义。有向图的执行通常涉及旨在实现有向图的边的许多指令。指令可以由处理核心上的执行引擎执行。执行引擎可以包括乘法器、寄存器、加法器、累加器、ALU、浮点单元,以及响应于命令执行指令并响应于输入的集合而产生输出的集合所需的任何其他硬件。
[0023] 相对于图的标准执行中的对应指令,在条件执行中指令可以被简化。例如,可以通过降低乘法的精度或通过使用更基本的格式的相似值来替换数据元素中的一个,来使两个数据元素的乘法条件化和简化。作为另一个示例,可以在条件执行中禁止用于实现指令的运算。此外,可以通过从存储器中提取固定值充当作为原本会从运算的标准执行中得到的输出的替代输出,从而替换这样的运算的输出。第二类方法不仅在减少需要进行的运算的计算复杂度方面提供了益处,而且还通过减少了需要在系统中移动的数据量方面提供了益处。如果完全禁止某个运算,则无需将输入数据从存储器移动到将执行该运算的计算元件。完全禁止运算的结果降低了计算复杂性和存储器带宽要求两者。根据本公开,指令或运算的“条件执行”包括完全禁止指令或运算并提供固定的输出来代替原本会从标准执行得到的输出。
[0024] 相对于由图本身的执行产生的数据,用于致动条件执行的数据可以在各种时间生成。在某些方法中,用于致动条件执行的数据在正在执行有向图时的运行中生成。该数据可以作为该执行的副产物而生成,或者可以通过在正在执行有向图时执行的附加的例程来生成。在其他方法中,用于致动条件执行的数据在第一简化图执行期间生成。无论如何,生成此附加的数据的成本都小于其使用所带来的益处。可以通过硬件或软件来控制生成数据的方式。然而,只使用运行时硬件来生成数据的方法会带来益处。用软件生成数据可能会增加处理核心的指令周期,因此很难实现性能改进级别,该性能改进级别是证明与首先生成数据相关联的附加开支是合理的所需的。
[0025] 相对于用于致动该图的条件执行的数据被生成的时间,用于致动该图的条件执行的数据也可以在各种时间生成。可以在执行有向图的一层期间生成数据,并且然后可以使用该数据来使有向图的下一层的执行条件化。也可以在有向图的一次执行期间生成数据,并且然后可以在该有向图的具有不同输入的后续执行期间使用该数据。考虑有向图的具有输入Y的第一执行,该第一执行需要使用片X作为输入的指令。该第一执行可以生成片X的元数据。随后,片X可以在该有向图的具有输入Z的第二执行期间被用作一指令的输入。可以使用在有向图的第一执行期间生成的元数据,来使该指令的执行条件化。此外,可以在有向图的第一简化执行期间生成数据,或者可以在该第一简化执行所需的具体指令期间生成数据,并且然后可以使用该数据来确定是否应该进行常规执行。例如,可以使用比标准执行更低的精度来执行具体指令,而更低精度的执行可以为该执行所涉及的片生成元数据。然后可以评估元数据以确定是否应该以更高的精度重新执行(replay)相同的指令。
[0026] 实现ANN的有向图的示例在本申请的整个公开中提供了示例性示例,其中条件执行可以导致改进的和更有效的性能。在这种情况下,片的数据元素可以包括ANN的权重值、激活值、输入值、滤波器值或累加值。有向图的执行将因此包括对那些值的许多指令和逻辑算术运算。例如,指令可以涉及权重值与先前层的输出之间的乘法,或者滤波器值与先前层的值之间的卷积。有向图的执行将因此包括在两个张量上进行矩阵乘法或卷积以产生输出张量的指令。
[0027] ANN受益于根据本文的某些公开的条件执行,因为对于任何给定的推论,ANN通常是过度参数化的。这是因为ANN通常经过训练以处理许多不同的潜在输入,但一次只能处理一个输入。例如,ANN可以能够识别输入图像中的多个主题,但是相关联的图的仅一小部分可以以有意义的方式响应任何一个主题。当主题是狗时,图的不同部分可能会对输出做出很大贡献,而当主题是猫时,图的不同部分根本不会做出贡献。结果,对有向图的较低优先级部分的完美精确执行将导致浪费的计算,而该浪费的计算不会以有意义的方式对生成准确的推断做出贡献。通过使“有向图”的执行条件化,只有来自“有向图”的数据中对特定推断很重要的部分才参与高精度执行。将用于致动条件执行的单独的数据放置在与用于标准执行的数据相同的数据结构中的具体方法确保在需要时该数据是可用的。此外,它确保当完成涉及这样的单独的数据相关联的数据的给定执行的结果并测量到其效果时,可以高效地更新这样的单独的数据。
[0028] 图2和图3包括数据流程图200和处理流程图300,其提供了根据本文公开的一些方法的由处理核心进行的有向图的示例条件执行。数据流程图200提供了可以由单个处理核心执行的两个潜在数据流的图示。处理核心包括存储器201、算术逻辑单元202和控制单元203。如本文所使用的术语“算术逻辑单元”不限于仅被配备以进行整数算术的硬件,并且旨在包括可以进行浮点算术的硬件。相同的元件使用相同的附图标记表示。为了避免疑问,数据流程图200图示了在隔开的时间进行的两个不同的算术逻辑运算的数据流,并且存储器
201和算术逻辑单元202的两个实例并非处理核心上的分开的物理实例。存储器201储存用于执行有向图的数据片。如此,方法300包括将第一数据片储存在存储器中的步骤301和将第二数据片储存在存储器中的步骤302。数据片在执行有向图期间使用。
[0029] 与本文公开的方法组合使用的数据片可以是处理核心上的存储器中的连续存储。数据片可以替代地或组合地是存储器的可由单个物理或虚拟地址寻址的部分。数据片可以储存数据元素的集合。数据元素可以是整数变量。数据元素可以是定点或浮点变量。数据元素可以是二进制的真/假或正/负变量。存储器中的数据片在任何给定时间可以在片之间在大小上变化。具体片的大小也可以响应于从控制器接收的命令而在时间上波动。数据片的标头可以包括用于使有向图的执行条件化的元数据。数据片的主体可以包括形成有向图的内容的数据元素。数据片的主体和标头可以连续储存在存储器中,使得可以从单个存储器地址访问有向图的内容和元数据。然而,元数据也可以与片相关地储存在独立访问的单独的数据结构中。数据片的大小可以由软件控制器设置,也可以完全由处理核心上的硬件设置。如此,方法300包括步骤303和304,其涉及设置第一和第二数据片的大小。
[0030] 图2图示了除了主体206之外还具有片标头205的数据片。主体可以包括数据元素的集合。在使用片执行有向图的方法中,数据元素的集合可以是有向图数据元素。如本文所使用的,有向图数据元素是完全执行有向图所需的数据元素。有向图数据元素可以是张量,使得片实质上是张量储存容器。片标头205中的数据可以是单独于有向图数据元素的单独数据,因为片标头205中的数据不是完全执行有向图所需的。片标头中的数据可以是元数据。标头中的单独的数据可以被处理核心用来指示应该有条件地执行利用来自其片主体的数据的运算。替代地或组合地,标头中的单独的数据可以被处理核心用来代替片主体中的数据来有条件地执行运算。为符合与维护单独的数据和实现归因于使用单独的数据的性能的改进相关联的权衡,标头205比载荷206小4倍或更多的方法会带来益处。在具体方法中,标头205比载荷206小7倍。例如,片的总大小为1024字节,标头可以为128字节或更小。在将片和元数据储存在单独的数据结构中的方法中,整体数据结构之间的相似缩放比例会产生相似的益处。
[0031] 在实现ANN的有向图的示例中,有向图数据元素可以是ANN的权重值、激活值、输入值、滤波器值或累加值。在ANN的情况下,在相同处理核心被用于实现具有不同大小的层、滤波器等的不同ANN时,动态调整数据片的大小可能是有益的。在一些方法中,数据片的大小可以由软件控制器设置,也可以由程序员在全局、集合或单个片的基础上进行调整。在ANN的情况下,每个片的大小可以大于单个ANN数据元素(诸如单个神经元的权重值),但通常小于ANN的完整层。如此,片数据的操纵不仅与单个地对元素寻址的执行相比需要更少的地址查找,还由于能够将层分解成独立操纵的碎片(piece)而提供计算效率的改进。例如,片可以充当在ANN中定义了整个层或滤波器的张量的子张量的储存容器。
[0032] 数据片可以用于根据储存在处理核心上的计算机可读非暂时性介质中的指令来执行有向图。指令可以是有向图的标准执行的指令序列的一部分。例如,指令可以是以张量作为输入和输出的复杂的硬件序列。指令可以是这些输入的卷积或矩阵乘法,并产生张量作为输出。以ANN的示例为例,输入可以是ANN的层的权重值的集合和该层的输入值的集合,运算可以是这些值的矩阵乘法,而输出可以是形成到ANN中下一层的输入的一部分的张量。相同的指令可以在不同时间导致给定运算的标准执行或该运算的条件执行。根据本文公开的某些方法,条件执行可以比标准执行更高效。
[0033] 在图2中,指令207以模拟汇编代码表示,并且包括单个运算“Op.”以及至少两个数据元素“X”和“Y”的标识。如此,指令导致执行算术逻辑运算。例如,指令可能使得将算术逻辑运算“Op”的标识传递给算术逻辑单元的控制输入,并将两个数据元素传递给算术逻辑单元的运算元(operand)输入。在所示的情况下,到ALU 202的输入来自数据元素X和Y的集合。数据元素Y的集合可以包括任何数据元素。然而,在某些情况下,将从储存在存储器中的第二片的主体获得数据元素Y的集合。储存指令207的非暂时性介质可以是与储存第一片和第二片的存储器相同的存储器。然而,片和指令也可以储存在处理核心的不同缓存级别上。
[0034] 图3包括从存储器305获取指令的步骤。指令可以是图2的指令207。然后,该指令可以由诸如图3中的处理器控制单元203的处理器控制单元执行。图3图示了如何从步骤305的执行延伸两个单独的数据流路径(例如,标准执行步骤306或条件执行步骤307)。在标准执行期间,处理器控制单元203将引导数据流通过数据流路径208。如图所示,指令207指示的算术逻辑运算的标准执行涉及将来自数据元素X的第一集合中的至少一个数据元素结合来自数据元素Y的第二集合中的至少一个数据元素提供给ALU 202,以生成输出Z。在条件执行期间,控制单元203可以替代地引导数据流通过数据流路径209。如图所示,条件执行产生不同的输出Z'。这是因为传递到ALU 202的数据元素是XM,XM是来自数据元素X的第一集合的数据元素的已基于元数据M更改的版本。元数据可以致动条件执行的各种方式在下面更详细地讨论。特别地,如在图4中更详细地描述的,条件执行可以涉及前面的一个运算或全部运算的集合。
[0035] 用于有向图的条件执行的单独的数据可以在有向图的执行期间生成。在一些方法中,可以在整个有向图的先前执行中的具体运算的先前执行期间生成用于使该相同具体运算的稍后执行条件化的单独的数据。例如,在时间“t”的有向图的第一执行期间使用片X的运算的执行可以生成元数据,该元数据用于使在时间“t+1”的相同有向图的第二执行期间使用片X的运算的执行条件化。在一些方法中,可以在有向图的相同执行中的上游运算的执行期间生成用于使具体运算的稍后执行条件化的单独的数据。例如,为层2运算的输出片生成的元数据可以用于使层3运算的执行条件化,其中层3运算使用该输出片作为输入。先前执行可以是标准执行、条件执行或有向图的简化版本的执行。在一些情况下,单独的数据可以作为这些先前执行的副效用而生成,并且可以被用于对片进行填充以使用附加的信息从本质上“装饰”有向图的片大小的块。如下面更详细描述的,附加的信息可以采取多种形式,并且可以用于引起和/或影响条件执行。图3的其余部分提供了此过程的具体示例。
[0036] 在先前执行期间生成的数据可以被储存,作为那些先前执行中涉及的片的元数据。元数据可以提供关于涉及片的运算对有向图的整体执行的相对重要性的指示。例如,元数据可以是指示具体片具有“高”或“低”优先级的标志。作为另一个示例,元数据可以是数值,该数值指示有向图的给定部分的相对优先级为“示有向以指示高优先级,相对于不同的部分具有“有“部分”的数值以指示中等优先级。然后可以使用优先级值来条件化使用那些具体片进行的任何运算的准确性。在其他方法中,元数据可以是片中数据的近似,或涉及片的运算的结果或涉及片的一组运算的结果的近似。例如,元数据可以包括过去涉及该数据的所有运算的输出的平均值,以便可以在将来提供该平均值,以替代使用片中实际数据进行运算。在某些方法中,先前的执行允许处理核心生成有关有向图的哪些部分在运行时强烈活跃的信息,并修剪掉与有向图的非强烈活跃或对有向图的结果贡献不大的部分有关的计算。例如,可以修剪掉具有指示片为“低”优先级的元数据的片,而对具有“高”优先级的片进行标准执行。
[0037] 流程图300包括生成元数据的步骤308。该元数据可以从算术逻辑运算的输出中得出,如数据流线310所示。该数据可以作为步骤306和307中执行的副产物生成,或者可以通过在正在执行有向图时执行的附加例程生成。可以仅使用处理器核心的一组硬件元件来生成元数据。替代地,可以使用软件控制器来生成元数据。由于元数据是关于有向图的一部分的先前执行的副产物而生成的,因此非常适合提供有关有向图的该部分对有向图的整体执行的重要性的指示。如在步骤309中,可以将在步骤308中生成的元数据储存在片的标头中。替代地,可以将元数据储存在单独的数据结构中。然后,该片随后可以与元数据一起重新使用,该元数据提供了用于致动条件执行的附加的信息。
[0038] 如图所示,通过对涉及片的主体中的数据的运算的标准执行,来生成片的元数据。然而,也可以在涉及片的条件执行期间或在涉及完全单独的片的运算期间,初始地生成或更新元数据。元数据也可以在每次使用相关联的片时连续更新,以较小的频率定期更新,或者元数据可以在具体的有向图被实例化时被设置一次然后被固定,直到由处理核心实例化不同的图或者相关联的片被删除。在某些方法中,元数据也可以由程序员使用软件控制器在整个核心上在全局、集合或单个片的基础上来设置。
[0039] 取决于将如何进行条件执行,单独于有向图数据的数据可以采取变体形式。单独的数据可以致动条件执行,或者指示应该执行条件执行,指示应该执行的特定类的条件执行,或者实际上包含在条件执行期间应该使用的替代有向图数据。例如,元数据可以包括片载荷的幂值、片载荷中的值的均值和方差、幂值与白噪声分布相结合、片的近似频谱、片的重度降采样版本、或片中的值的直方图。在特定示例中,元数据可以是载荷中的数据元素可以使用的浮点指数值的直方图。作为另一示例,元数据可以是指示应该使用该片进行的条件执行的类型的简单标志,或指示该片对于有向图的整体执行的重要性(例如,“低”、“中”或“高”)的标志。然后,单独的系统可以基于该优先级级别来使执行条件化。
[0040] 鉴于以上公开概述的原理以及图2和图3,参考图4-5可以描述更复杂的实现方式。图4包括用于执行有向图的指令的元数据致动的条件执行的数据流程图400。执行引擎401包括n个运算元输入,并且在所示的示例中,接收以多个张量X、Y多个的形式的片402的整个载荷。执行引擎402代表根据本文公开的某些方法的、被处理核心使用来执行指令INST的硬件的复杂组合。例如,执行引擎可以包括乘法器、寄存器、加法器、累加器和其他逻辑,并且可以使用该电路来响应于接收到的控制输入而从输入数据生成输出数据。控制输入可以从控制逻辑403所提供的、处理核心的低级别内核指令中得出。控制逻辑403能够基于对片402的全部或子选择中的元数据的审查,来使指令INST的执行条件化。此外,控制逻辑403可以基于对输出片404中元数据的审查来使指令INST的执行条件化,该元数据在执行指令INST之前被储存,诸如来自指令INST的先前执行。逻辑403执行的功能可以完全以处理核心上的硬件执行。然而,该功能可以由软件控制器来编程。此外,逻辑403的功能可以由软件控制器来编程和执行。
[0041] 流程图500以步骤501、502和503开始,在步骤501、502和503中在存储器中储存多个片。在流程图500中,在单个指令的执行中涉及多于3个的片的集合。流程图继续进行到步骤504,在步骤504中获取指令以用于执行。指令可以包括要在片的集合上进行的任何数量的基本或复杂运算。在步骤505中,评估任何片或所有片的元数据,以确定应该如何执行指令。在某些情况下,通过完全放弃指令从而使过程返回到储存片的步骤,来使指令条件化。然而,流程图也可以进行到步骤506,在步骤506中生成附加的元数据。不论指令该是否被执行,都可以执行步骤506。如果基于步骤505中的评估要执行该指令,则流程图继续进行到步骤507,在步骤507中有条件地执行该指令。在条件执行期间,可以经由步骤506生成和储存元数据。
[0042] 对用于使指令的执行条件化的元数据、以及有条件地执行该指令的方式的分析本质上可能是复杂的。该分析可以涉及对多个片的元数据的评估,而条件执行可以涉及不同层次的条件化。参考图4,由逻辑403进行的步骤505中的评估可以涉及元数据M1、M2和Mn。此外,步骤307中的条件执行可以涉及将n的所有值替换为固定值,将Y的所有值替换为较低精度的数据元素,或者本文其他各处公开的条件执行技术的任意组合。以下伪代码给出了可以如何使执行条件化的进一步的示例。可以根据程序员编写的源代码以允许软件控制器执行条件计算,来执行根据该示例的程序性条件执行,或者可以直接在硬件中实现根据该示例的程序性条件执行。可以在软件级别以下的状态机或微代码中实现伪代码。
[0043] Z=function_compute_Z(X,M1,Y,M2,…n,Mn){
[0044] plan=decide_plan_based_on_metadata(M1,M2,…Mn);
[0045] if(plan==Output_Zeros)Z=0
[0046] else if(plan==Output_Metadata)Z=M1
[0047] else if(plan==Lower_Precision_Compute Z)=convolve_8b(X,Y,…n)[0048] else Z=convolve_16b(X,Y,…n);}
[0049] 上面的伪代码示出了可以如何将算术逻辑单元401和逻辑403用于实现指令INST的细微条件执行。在伪代码中,INST是输入到ALU 401的所有张量的16位卷积。伪代码首先基于元数据确定计划(plan)。基于计划,伪代码将为Z输出零集合,使用来自元数据M1的数据替换Z,对输入进行8位卷积,或进行标准执行。指令INST的条件执行的该程序性说明可能具有任何变体。元数据、输出数据和指令之间的关系可以遵循复杂的函数。如前所述,还可以使用来自输出片Z或系统中任何其他片的元数据来生成计划。
[0050] 如前所述,逻辑403使用的元数据不需要与片402连续储存,并且可以以许多方式生成。例如,可以从INST的先前标准执行或条件执行生成元数据M1前标准和Mo。替代地,可以从生成张量X、Y和n的当前值的先前执行中生成元数据M1元数据。返回到用于实现ANN的有向图的示例,可以在执行ANN的先前层期间生成元数据M1前层期,并且可以在执行ANN的当前层期间生成元数据Mo。这些可能性的任何组合都是可能的,诸如在INST的先前执行期间生成元数据Mo,以及在与先前层关联的指令执行期间生成M1及在与。根据如何致动条件执行的程序性实现,在INST被执行时储存于处理核心中的任何元数据都可用于使INST的执行方式条件化。
[0051] 图6图示了可以将片的元数据M用于致动标准执行208的条件执行的方式。在图6的图中,提供了具体运算的条件执行作为示例,但是相同的概念适用于全部指令的条件执行。在图600中,元数据本身是ALU 202的运算命令“运算命令的储存版本。由于该运算将与标准执行208中使用的运算命令“使用的运不同,因此将导致条件执行产生不同的输出ZC1。因此,元数据本身将被应用于ALU以使执行条件化。在图610中,元数据本身是替代有向图执行数据,其用于代替数据元素X以产生不同的输出ZC2。在图620中,元数据用于在将数据元素应用于ALU之前将数据元素从X更改为XM。例如,XM可以是X的较低精度版本,诸如在X是浮点变量而XM是定点变量的情况下,或者X是16位变量而XM是4位变量的情况下。在另一个示例中,XM可以仅保留X的符号。在另一个示例中,XM可以是基于由M设置的地址从存储器中的另一个位置提取的固定数字。由于XM不等于X,这将导致输出ZC3不等于Z。在图630中,与在600中元数据M作为运算命令本身相反,已经通过储存在M中的数据修改了运算命令。由于Op(M)不等于“不等于“,因此将导致输出ZC4不等于Z。在替代方案中,可以使用储存在M中的数据来确保该运算未被执行。替代地或组合地,储存在M中的数据可以用于替代Z而无需进行该运算。
[0052] 可以许多方式来使有向图的执行所需的指令和运算条件化。通常,可以将计算被条件化的程度设置为跨越“有向图”而变化,并且可以包括与图的该部分的相对优先级对齐的各种渐变。例如,可以像在无条件地执行的有向图中一样计算相对高优先级的区域,而可以将相对低优先级的区域从计算中完全排除。下面讨论的各种条件计算方法可以以各种方式混合使用并分配给各级别的优先级。例如,高、中和低优先级可以与三种完全单独的条件计算方案相关联。作为另一个示例,条件计算方案可以跨越“有向图”而保持恒定,但是可以根据优先级来修改该方案的相对精度。例如,舍入(rounding)或下采样的程度可以与优先级级别成比例地设置,并具有从使用原始值、到使用舍入值、到独立于原始值进行的执行的平滑过渡。如果优先级值是平滑变化的数值,则可以高效地应用这些方法。
[0053] 有向图的实际条件执行可以各种方式进行。条件计算的条件化和形式是单独的概念。基于执行数据,可以将有向图的执行中的各种计算的保真度选择性地降低到不同的级别。例如,计算精度可以从16位降低到8位。作为另一个示例,条件计算可以涉及减少用于代表给定计算的输入或输出的位数。作为另一个示例,可以简化用于代表给定计算的数据元素的数据结构(例如,从8位浮点到4位定点)。在经由直接存储器访问而被带入处理器核心上的数据RAM中之时,数据元素的数据结构格式可以在所有格式之间转换。作为另一个示例,条件计算可以涉及提供来自存储器的固定的预先计算的值来代替执行计算。在一个示例中,该值可以被储存在否则会被涉及到计算中的数据片的标头中。作为另一个示例,可以简化计算的实际算术部分,使得从计算中丢弃了一定数量的LSB。作为另一个示例,可以完全阻止计算,甚至不需要提供掩码(masked)值。在甚至更具体的方法中,可以将计算的输出的替换值向下游与“有向图”的后续阶段相关联地存储。例如,在对指令的输入片中的元数据的审查时,可以确定该指令不需要被执行,并且输出片的预先计算的元数据可以用作该指令的输出。此外,单个计算可以经历条件化以及如上文参考图4和相关联的伪代码所描述的那样以程序性方式被条件化。
[0054] 图7是运算的条件执行可以被执行的方式的图示。在图7的图中,提供了具体运算的条件执行作为示例,但是相同的概念适用于全部指令的条件执行。数据流程图700包括需要被计算以执行有向图的第一计算701。沿着页面向下移动的分支基于相关联的片或运算的优先级值指示各种级别的条件执行,该各种级别的条件执行可以用来代替原始运算。例如,如果计算701对有向图的输出有重大影响,则可以完全执行该计算。但是,如果影响很小,则可以根据702-706所示的替代级别中的一个有条件地执行该计算。
[0055] 计算中涉及的数据元素的元数据可以意味着(imply)应用于给定运算的精度级别。元数据可以包括应该应用的精度级别的直接指示符,也可以包括供程序用来确定应该应用的精度级别的数据。在所示的情况下,元数据为M并且与片707中的数据元素X相关联。优先级级别702可以涉及数据值的轻微舍入以及储存所述值的数据结构所利用的位数的潜在降低。优先级级别703可以涉及仅保留原始值的符号和指数。优先级级别704可以涉及仅保留原始值的符号。另一个优先级级别可以使用较低的精度来近似数据元素,诸如通过使用较低比特近似来替换数据元素。优先级级别705可以涉及使用预定值替换数据元素。优先级级别706可以涉及完全跳过运算并提供预定值来代替该运算的输出。如图所示,条件执行(诸如优先级级别705和706)的值可以储存在片的标头中,并且如果条件执行系统确定片的载荷的优先级非常低,则可以提取该条件执行的值以进行替代。预定值可以是全零、具有一定幂级别的白噪声或全部恒定值。幂级别或恒定值可以在先前运算的执行期间计算,或者使用与有向图的任何执行正交地对片进行评估的单独的过程来计算。优先级级别705和706的具体实现因此代表不同类别的条件执行,因为元数据被注入该执行的数据流中,而不是用作应执行的条件执行的类型的指示。
[0056] 在运行使用数据片的计算之前,处理核心可以检查与片的载荷相关联的单独的数据。单独的数据可以是片的元数据。然后,处理核心可以执行实现计算所需的运算,降低这些运算的精度,或者提供预先计算的近似来代替该运算的标准执行的输出。在上述方法的具体组合中,先前执行使用元数据对数据片加标记,以指示该片具有“高”、“中”或“低”重要性。然后,在随后的条件执行期间,标记为“低”的计算将完全被阻止,而涉及“高”和“中”重要性片的运算的精度将在从4位、8位和16位精度中选择的两个不同的级别之间优化。这样的方法可以潜在地提高性能,使执行给定ANN所需的工作减少2-3倍,同时对于跨ANN的输入空间的任何推断接收相同的输出。
[0057] 尽管已经相对于本发明的具体实施例详细描述了本说明书,但是应当理解,本领域技术人员在理解前述内容之后,可以容易地想到这些实施例的更改、变体和等效物。上面讨论的任何方法步骤都可以由处理器执行,该处理器与储存这些方法步骤的指令的计算机可读非暂时性介质一起运算。计算机可读介质可以是个人用户设备内的存储器或网络可访问存储器。用于实现本文所述系统的权重、累加值、滤波器、输入、输出等的数据结构都可以是四维或五维张量。特别地,储存在片中的数据元素可以储存四维和五维张量的至少部分。本文所述的有向图和有向图的简化版本可以是在存储器中实现的完全不同的结构。尽管本公开中的示例通常针对机器智能系统,但是可以将相同的方法用于涉及有向图的执行的任何计算密集型的应用。尽管本公开中的示例通常针对ANN,但是可以利用相同的方法来增强支持向量机、通用神经形态硬件以及涉及复杂的层的集合的任何深度学习方法的运算。在不脱离本发明的范围的情况下,本领域技术人员可以对本发明进行这些和其他修改和变体,本发明的范围在所附权利要求中更具体地阐述。
高效检索全球专利

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈