计算方法和装置与流程

文档序号:30222168发布日期:2022-05-31 22:43阅读:82来源:国知局
计算方法和装置与流程
计算方法和装置
1.本技术要求于2020年11月24日在韩国知识产权局提交的第10-2020-0158952号韩国专利申请的权益,该韩国专利申请的全部公开内容出于所有目的通过引用包含于此。
技术领域
2.以下描述涉及一种具有数据共享的计算方法和装置。


背景技术:

3.深度学习技术可以用于使用大量的训练数据来训练神经网络(例如,具有多个层的神经网络,每个层由多个处理节点组成)。为了提高神经网络的推断的准确性,大量训练数据可以被利用。作为非限制性示例,训练数据可以包括图像、声音或文本信息。
4.卷积神经网络(cnn)可以例如通过执行卷积运算来提高图像分类和识别的准确性。然而,这样的基于cnn的模型的执行会使用大量的计算资源。另外,随着用于训练这样的基于cnn的模型的训练数据的量的增加,利用的资源也会增加。


技术实现要素:

5.提供本发明内容来以简化的形式介绍下面在具体实施方式中进一步描述的构思的选择。本发明内容不意图确定要求权利的主题的关键特征或必要特征,也不意图用于帮助确定要求权利的主题的范围。
6.在一个总体方面,一种处理器实现的方法包括:由加载器根据加载顺序按加载单位加载存储在存储器中的输入特征图的输入数据;由缓冲器控制器将加载的输入数据存储在根据加载顺序旋转地分配的地址的重用缓冲器中;以及由多个发送器中的每个发送器将存储在重用缓冲器中的输入数据之中的与相应的卷积运算的每个输出数据对应的相应的输入数据发送到执行器,其中,发送的相应的输入数据的部分彼此重叠。
7.通过存储加载的输入数据,发送的相应的输入数据的发送的输入数据的一部分可以被存储在重用缓冲器中,并且发送的输入数据的另一部分可以通过存储在重用缓冲器中的相同数据的空间共享和/或时间共享来获得。
8.相应的输入数据可以不冗余地存储在重用存储器中。
9.关于可以包括在加载的输入数据中的先前输入数据和当前输入数据,响应于分配给先前输入数据的地址是重用缓冲器的最后地址,将被分配给当前输入数据的地址可以是重用缓冲器的第一地址。
10.所述加载的步骤可以包括:加载与输出数据对应的将被执行卷积运算的输入数据之中的除了与在先前时钟中加载的输入数据重叠的输入数据之外的其余输入数据。
11.所述多个发送器可以包括第一发送器和第二发送器,其中,在先前时钟中,第一发送器可以对应于第一输出数据,第二发送器可以对应于与第一输出数据相邻的第二输出数据,并且加载的第一输入数据、第二输入数据、第三输入数据、第四输入数据、第五输入数据和第六输入数据可以分别被存储在重用缓冲器的第一地址、第二地址、第三地址、第四地
址、第五地址和第六地址中。在当前时钟中,第一发送器可以对应于第三输出数据,第二发送器可以对应于与第三输出数据相邻的第四输出数据,并且所述加载的步骤可以包括:加载与第三输出数据和第四输出数据对应的第五输入数据、第六输入数据、第七输入数据、第八输入数据、第九输入数据和第十输入数据之中的除了与在先前时钟中加载的输入数据重叠的第五输入数据和第六输入数据之外的其余输入数据。
12.所述方法还可以包括:冲刷分配给在先前时钟中加载的输入数据之中的除了与对应于输出数据的将被执行卷积运算的输入数据重叠的输入数据之外的其余输入数据的地址。
13.所述多个发送器可以包括第一发送器和第二发送器,其中,在先前时钟中,第一发送器可以对应于第一输出数据,第二发送器可以对应于与第一输出数据相邻的第二输出数据,并且加载的第一输入数据、第二输入数据、第三输入数据、第四输入数据、第五输入数据和第六输入数据可以分别被存储在重用缓冲器的第一地址、第二地址、第三地址、第四地址、第五地址和第六地址中。在当前时钟中,第一发送器可以对应于第三输出数据,第二发送器可以对应于与第三输出数据相邻的第四输出数据,并且冲刷分配给作为其余输入数据的第一输入数据、第二输入数据、第三输入数据和第四输入数据的地址,而不冲刷分配给与对应于第三输出数据和第四输出数据的输入数据重叠的第五输入数据和第六输入数据的地址。
14.所述多个发送器可以包括第一发送器和第二发送器,其中,第一发送器可以对应于第一输出数据,第二发送器可以对应于与第一输出数据相邻的第二输出数据,第一输入数据、第二输入数据、第三输入数据、第四输入数据、第五输入数据和第六输入数据可以分别存储在重用缓冲器的第一地址、第二地址、第三地址、第四地址、第五地址和第六地址中,并且所述发送的步骤可以包括:由第一发送器将第一输入数据、第二输入数据、第三输入数据和第四输入数据发送到执行器以执行第一卷积运算,以及由第二发送器将第三输入数据、第四输入数据、第五输入数据和第六输入数据发送到执行器以执行第二卷积运算。
15.所述方法还可以包括:由包括执行器的神经处理器单元(npu)或神经加速器执行相应的输入数据与对应的卷积权重的相应的卷积运算,以生成输出图的相应的输出。
16.重用缓冲器可以包括第一重用缓冲器和第二重用缓冲器,并且所述存储的步骤可以包括:由缓冲器控制器根据加载顺序将第一重用缓冲器的地址或第二重用缓冲器的地址旋转地分配给加载的输入数据。
17.在一个总体方面,示例包括一种存储指令的非暂时性计算机可读存储介质,所述指令在由处理器执行时,配置处理器执行在此描述的处理或方法的任何处理或方法或者在此描述的处理和方法的组合。
18.在一个总体方面,一种处理器实现的提取器的方法,所述提取器包括第一重用缓冲器和第二重用缓冲器,所述方法包括:由提取器的加载器根据加载顺序按加载单位加载存储在存储器中的输入特征图的输入数据;由提取器的缓冲器控制器根据加载顺序将第一重用缓冲器的地址或第二重用缓冲器的地址旋转地分配给加载的输入数据,并将加载的输入数据存储在分配的地址中;以及由多个发送器中的每个发送器将存储在第一重用缓冲器或第二重用缓冲器中的输入数据之中的与相应的卷积运算的输出数据对应的相应的输入数据发送到执行器,其中,发送的相应的输入数据的部分重叠。
19.通过存储加载的输入数据,发送的相应的输入数据的一部分可以被存储在第一重用缓冲器或第二重用缓冲器中,并且发送的相应的数据的另一部分可以通过存储在第一重用缓冲器或第二重用缓冲器中的相同数据的空间共享和/或时间共享来获得。
20.与相应的卷积运算的输出数据中的每个对应的相应的输入数据可以不冗余地存储在第一重用存储器或第二重用存储器中。
21.关于包括在加载的输入数据中的先前输入数据和当前输入数据,响应于分配给先前输入数据的地址是第一重用缓冲器的最后地址,将被分配给当前输入数据的地址可以是第一重用缓冲器的第一地址,并且响应于分配给先前输入数据的地址是第二重用缓冲器的最后地址,将被分配给当前输入数据的地址可以是第二重用缓冲器的第一地址。
22.关于包括在加载的输入数据中的先前输入数据和当前输入数据,响应于分配给先前输入数据的地址是第一重用缓冲器的最后地址,将被分配给当前输入数据的地址可以是第二重用缓冲器的第一地址,并且响应于分配给先前输入数据的地址是第二重用缓冲器的最后地址,将被分配给当前输入数据的地址可以是第一重用缓冲器的第一地址。
23.所述加载的步骤可以包括:加载与输出数据对应的将被执行卷积运算的输入数据之中的除了与在先前时钟中加载的输入数据重叠的输入数据之外的其余输入数据。
24.所述方法还可以包括:冲刷分配给在先前时钟中加载的输入数据之中的除了与对应于输出数据的将被执行卷积运算的输入数据重叠的输入数据之外的其余输入数据的地址。
25.在一个总体方面,一种计算装置包括加载器、多个发送器、缓冲器控制器、重用缓冲器,其中,加载器被配置为根据加载顺序按加载单位加载存储在存储器中的输入特征图的输入数据,缓冲器控制器被配置为将加载的输入数据存储在根据加载顺序旋转地分配的地址的重用缓冲器中,所述多个发送器中的每个发送器被配置为将存储在重用缓冲器中的输入数据之中的与相应的卷积运算的每个输出数据对应的相应的输入数据发送到执行器,并且发送的相应的输入数据的部分重叠。
26.关于包括在加载的输入数据中的先前输入数据和当前输入数据,响应于分配给先前输入数据的地址是重用缓冲器的最后地址,将被分配给当前输入数据的地址可以是重用缓冲器的第一地址。
27.加载器可以被配置为:加载在与输出数据对应的将被执行卷积运算的输入数据之中的除了与在先前时钟中加载的输入数据重叠的输入数据之外的其余输入数据。
28.所述多个发送器可以包括第一发送器和第二发送器,其中,在先前时钟中,第一发送器可以对应于第一输出数据,第二发送器可以对应于与第一输出数据相邻的第二输出数据,并且加载的第一输入数据、第二输入数据、第三输入数据、第四输入数据、第五输入数据和第六输入数据可以分别被存储在重用缓冲器的第一地址、第二地址、第三地址、第四地址、第五地址和第六地址中。在当前时钟中,第一发送器可以对应于第三输出数据,第二发送器可以对应于与第三输出数据相邻的第四输出数据,并且加载器可以被配置为:加载与第三输出数据和第四输出数据对应的将被执行卷积运算的第五输入数据、第六输入数据、第七输入数据、第八输入数据、第九输入数据和第十输入数据之中的除了与在先前时钟中加载的输入数据重叠的第五输入数据和第六输入数据之外的其余输入数据。
29.缓冲器控制器可以被配置为:冲刷分配给在先前时钟中加载的输入数据之中的除
了与对应于输出数据的将被执行卷积运算的输入数据重叠的输入数据之外的其余输入数据的地址。
30.所述多个发送器可以包括第一发送器和第二发送器,其中,在先前时钟中,第一发送器可以对应于第一输出数据,第二发送器可以对应于与第一输出数据相邻的第二输出数据,并且加载的第一输入数据、第二输入数据、第三输入数据、第四输入数据、第五输入数据和第六输入数据可以分别被存储在重用缓冲器的第一地址、第二地址、第三地址、第四地址、第五地址和第六地址中。在当前时钟中,第一发送器可以对应于第三输出数据,第二发送器可以对应于与第三输出数据相邻的第四输出数据,并且加载器可以被配置为:冲刷分配给作为其余输入数据的第一输入数据、第二输入数据、第三输入数据和第四输入数据的地址,而不冲刷分配给在先前时钟中加载的输入数据之中的除了与对应于第三输出数据和第四输出数据的将被执行卷积运算的的输入数据重叠的第五输入数据和第六输入数据的地址。
31.所述多个发送器可以包括第一发送器和第二发送器,其中,第一发送器可以对应于第一输出数据,第二发送器可以对应于与第一输出数据相邻的第二输出数据,第一输入数据、第二输入数据、第三输入数据、第四输入数据、第五输入数据和第六输入数据可以分别存储在重用缓冲器的第一地址、第二地址、第三地址、第四地址、第五地址和第六地址中。第一发送器可以被配置为将第一输入数据、第二输入数据、第三输入数据和第四输入数据发送到执行器,并且第二发送器可以被配置为将第三输入数据、第四输入数据、第五输入数据和第六输入数据发送到执行器。
32.在一个总体方面,一种计算装置包括加载器、多个发送器、缓冲器控制器以及多个重用缓冲器,其中,所述多个重用缓冲器包括第一重用缓冲器和第二重用缓冲器,加载器被配置为根据加载顺序按加载单位加载存储在存储器中的输入特征图的输入数据,缓冲器控制器被配置为根据加载顺序将第一重用缓冲器的地址或第二重用缓冲器的地址旋转地分配给加载的输入数据,并将加载的输入数据存储在分配的地址中,所述多个发送器中的每个发送器被配置为将存储在第一重用缓冲器或第二重用缓冲器中的输入数据之中的与相应的卷积运算的输出数据对应的相应的输入数据发送到执行器,并且发送的相应的输入数据的部分重叠。
33.关于包括在加载的输入数据中的先前输入数据和当前输入数据,响应于分配给先前输入数据的地址是第一重用缓冲器的最后地址,将被分配给当前输入数据的地址可以是第一重用缓冲器的第一地址,并且响应于分配给先前输入数据的地址是第二重用缓冲器的最后地址,将被分配给当前输入数据的地址可以是第二重用缓冲器的第一地址。
34.关于包括在加载的输入数据中的先前输入数据和当前输入数据,响应于分配给先前输入数据的地址是第一重用缓冲器的最后地址,将被分配给当前输入数据的地址可以是第二重用缓冲器的第一地址,并且响应于分配给先前输入数据的地址是第二重用缓冲器的最后地址,将被分配给当前输入数据的地址可以是第一重用缓冲器的第一地址。
35.加载器可以被配置为:加载在与输出数据对应的将被执行卷积运算的输入数据之中的除了与在先前时钟中加载的输入数据重叠的输入数据之外的其余输入数据。
36.缓冲器控制器可以被配置为:冲刷分配给在先前时钟中加载的输入数据之中的除了与对应于输出数据的将被执行卷积运算的输入数据重叠的输入数据之外的其余输入数
据的地址。
37.在一个总体方面,一种计算装置包括存储器、提取器、缓冲器控制器、执行器以及存储装置,其中,提取器包括加载器、多个发送器以及重用缓冲器,其中,加载器被配置为根据加载顺序按加载单位加载存储在存储器中的输入特征图的输入数据,缓冲器控制器被配置为根据加载顺序将重用缓冲器的地址旋转地分配给加载的输入数据,并将加载的输入数据存储在分配的地址中,所述多个发送器中的每个发送器被配置为将存储在重用缓冲器中的输入数据之中的与相应的卷积运算的每个输出数据对应的相应的输入数据发送到执行器,并且发送的相应的输入数据的部分重叠。
38.执行器可以被配置为:执行针对从所述多个发送器中的每个发送器接收的相应的输入数据的卷积运算;输出与所述多个发送器中的每个发送器对应的输出数据;以及将输出数据存储在存储装置中。
39.在一个总体方面,一种处理器实现的计算装置的方法包括:根据加载顺序按加载单位加载存储在计算装置外部的存储器中的输入特征图的输入数据;根据基于加载顺序分配的地址将加载的输入数据存储在计算装置的重用缓冲器中;以及将存储在重用缓冲器中的输入数据之中的与相应的卷积运算的每个输出数据对应的相应的输入数据发送到执行器,其中,发送的相应的输入数据的一部分可以相对于重用存储器中的所述部分的单次存储在空间上和/或时间上被共享。
40.相应的输入数据可以不冗余地存储在重用存储器中。
41.所述方法还可以包括:由包括执行器的神经处理器单元(npu)或神经加速器执行相应的输入数据与对应的卷积权重的相应的卷积运算,以生成输出图的相应的输出,并将输出图存储到计算装置外部的输出存储器。
42.计算装置可以是npu或神经加速器。
43.在根据加载顺序分配的地址中,基于分配给存储到重用缓冲器的前一加载的输入数据的地址是重用缓冲器的最后地址,将被分配给当前输入数据的地址可以是重用缓冲器的第一地址。
44.通过时间共享,发送的相应的输入数据的其他部分可以是在先前加载的用于一个或多个其他卷积运算的输入数据的先前存储中存储在重用缓冲器中的相同的输入数据,其中,与相应的卷积运算的输出数据中的每个输出数据对应的相应的输入数据可以包括在输入特征图的输入数据的加载中加载的其余数据。
45.所述方法还可以包括:冲刷分配给在先前时钟中加载的输入数据之中的除了发送的相应的输入数据的所述部分和发送的相应的输入数据的所述其他部分之外的先前的其余输入数据的地址。
46.根据以下具体实施方式、附图和权利要求,其他特征和方面将是清楚的。
附图说明
47.图1是示出在使用提取器的卷积运算中的示例数据共享的示图。
48.图2是示出在卷积运算中的示例数据共享的流程图。
49.图3是示出在卷积运算中的示例数据共享的流程图。
50.图4至图5是示出示例卷积运算的示图。
51.图6是示出示例提取器的示图。
52.图7是示出示例计算装置的示图。
53.在整个附图和具体实施方式中,除非另有描述或提供,否则相同的附图参考标号将被理解为指代相同或相似的元件、特征和结构。附图可能未按比例,并且为了清楚、说明和方便,附图中的元件的相对大小、比例和描绘可能被夸大。
具体实施方式
54.提供以下具体实施方式以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在理解本技术的公开之后,在此描述的方法、设备和/或系统的各种改变、修改和等同物将是清楚的。例如,在此描述的操作的顺序仅仅是示例,并且不限于在此阐述的操作的顺序,而是除了必须以特定顺序发生的操作之外,可以如在理解本技术的公开之后将是清楚的那样改变。此外,为了更清楚和简明,可以省略在理解本技术的公开之后已知的特征的一些描述。
55.在此描述的特征可以以不同的形式实现,并且将不被解释为限于在此描述的示例。相反,提供在此描述的示例仅仅是为了示出在理解本技术的公开之后将是清楚的实现在此描述的方法、设备和/或系统的许多可行方式中的一些方式。
56.尽管术语“第一”或“第二”用于解释各种组件,但是组件不限于这些术语。这些术语应仅用于将一个组件与另一组件区分开。例如,在根据本公开的构思的权利范围内,“第一”组件可以被称为“第二”组件,或类似地,“第二”组件可以被称为“第一”组件。
57.将理解的是,当组件被称为“连接到”另一组件时,该组件可以直接连接或结合到所述另一组件,或者可以存在中间组件。
58.如在此所使用的,除非上下文另外清楚地指示,否则单数形式意图也包括复数形式。还应理解的是,术语“包括”和/或“包含”当在本说明书中使用时,说明存在所陈述的特征、整体、操作、元件、组件或它们的组合,但不排除存在或添加一个或多个其他特征、整体、操作、元件、组件和/或它们的组。在此关于示例或实施例使用术语“可以”(例如,关于示例或实施例可以包括或实现什么)表示存在包括或实现这样的特征的至少一个示例或实施例,而所有示例不限于此。
59.除非在此另有定义,否则在此使用的所有术语(包括技术术语或科学术语)具有与示例所属领域的普通技术人员基于对本技术的公开的理解通常理解的含义相同的含义。还将理解的是,除非在此明确地如此定义,否则术语(诸如,在通用词典中定义的那些术语)应被解释为具有与它们在相关领域的上下文和本技术的公开中的含义一致的含义,并且将不以理想化或过于形式化的含义来解释。
60.图1是示出在使用提取器(fetcher)的卷积运算中的示例数据共享的示图。
61.在示例实施例中,神经处理器(npu)并行地处理多个数据。npu是可以包括例如针对矩阵运算或卷积运算的并行处理而优化的硬件的处理装置,并且可以表现出比通用处理器(诸如,中央处理器(cpu))高的操作速度。
62.因此,npu可以执行从存储器提取数据、分析提取的数据并且计算分析后的数据的处理。这里,提取器100可以执行从存储器提取数据并共享提取的数据。提取器100也可以被称为提取单元(fu)。
63.提取器100可以执行存储器访问以提取存储在存储器中的数据,并且可以包括一个或多个示出的加载器110。相反,当多个加载器在典型的提取器中被使用以处理大量数据时,所需的存储器带宽会增大,这会导致存储器瓶颈现象。
64.在一个或多个实施例中,计算装置可以通过由提取器100重用数据来减少存储器访问计数。提取器100可以与多个处理元件(pe)(例如,npu的多个处理元件(pe))共享存储器带宽资源,从而减少典型的提取器的这种存储器瓶颈现象的出现。
65.为此,提取器100可以包括加载器110、多个发送器141和142至143、缓冲器控制器120以及重用缓冲器130。重用缓冲器130可以是其中存储由加载器110读取的输入数据的空间。输入数据可以包括输入特征图101。如上所述,例如,加载器110还表示一个或多个加载器110。另外,虽然输入数据被称为输入特征图101,但是在各种示例中,输入特征图101表示(一个或多个)输入图像信息中的每个以及这样的输入图像信息的处理(诸如,通过一个或多个先前的神经网络层的输入图像信息的处理)中的每个。
66.缓冲器控制器120可以计算用于写入加载的输入数据的地址,然后在计算的地址处写入加载的输入数据。缓冲器控制器120还可以冲刷(flush)先前分配的地址。缓冲器控制器120可以基于加载计数器、加载单元、重用缓冲器130的大小和将被共享的数据的总数来计算重用缓冲器130的分配的地址。缓冲器控制器120还可以基于每个发送器的发送计数器来计算用于冲刷的地址。
67.发送器141和142至143将存储在重用缓冲器130中的输入数据发送到执行器。例如,发送器141、142和143可以从重用缓冲器130提取与相应的卷积运算的每个输出数据对应的输入数据,并将提取的输入数据发送到执行器。发送器141、142和143中的每个可以发送用于输出数据的输入数据,同时逐一地增加发送计数器。发送器141、142和143中的每个对应于每个输出数据。例如,输出数据可以包括输出特征图102。将由发送器读取的缓冲器的地址可以被预先计算。重用缓冲器的将被发送的输入数据的地址可基于发送计数器来计算。由发送器141、142和143提取的数据可以彼此重叠。发送器141、142和143可以共享存储在重用缓冲器130中的数据。
68.执行器可以并行地执行卷积运算。例如,在n个发送器的示例中,执行器可以对从n个发送器输入的输入数据并行地执行卷积运算。执行器也可以被称为执行单元。输出数据可以被存储在存储器或其他存储装置中,或者被另外输出。例如,执行单元可以包括硬件乘法和累加(mac)处理元件(pe)配置。作为非限制性示例,执行单元可以是神经网络加速器或npu,或者可以表示并行处理器,该并行处理器诸如通过执行存储在计算机可读记录介质中的指令被配置为:基于接收到由发送器141至143发送的数据以及一个或多个卷积权重来执行卷积运算。作为非限制性示例,图7以执行器720示出了这样的执行单元,其中,执行器720可以是这样的npu或神经网络加速器。在另一示例中,提取器100和执行器720被包括在与npu、神经网络加速器或其他计算装置相同的计算设备中。
69.因此,提取器100可以通过重用缓冲器130重用数据。例如,提取器100可以在空间上或时间上重用存储在重用缓冲器130中的数据。存储在重用缓冲器130中的数据可以由共享数据的多个发送器在空间上重用。重用缓冲器130的共享数据可以被统称为共享区域131。当先前加载的用于另一卷积运算数据与当前卷积运算的数据重叠时,重叠的数据可以从先前加载被保持,以用于当前卷积运算中的时间重用(共享)。
70.加载器110加载存储在存储器中的输入特征图101的输入数据,具体地,加载器110可以例如根据加载顺序按加载单位来加载输入数据。加载器110可以在考虑到数据共享的情况下加载在卷积运算中使用的输入数据,例如,使得输入数据的加载过程针对多个卷积运算不冗余地加载数据,所述多个卷积运算由不同发送器在与同一时钟对应的相同时间内空间地执行,和/或由(一个或多个)发送器在与不同时钟对应的不同时间时间的执行。加载器110可以从存储器加载输入数据,同时逐一增加加载计数器。加载计数器可以用于计算重用缓冲器的地址。输入特征图101可以或已经通过预先训练的神经网络获取,或者如上所述,输入特征图101可以是(例如,一个或多个通道的)拍摄的图像。预训练的神经网络可以通过从输入图像提取(一个或多个)特征来生成输入特征图101,并将输入特征图101存储在存储器中。这里,加载单位可以是一次加载的输入数据的总数。例如,加载单位可以在大小上小于重用缓冲器130。加载单位可以对应于时钟。例如,加载器110可以在第一时钟期间或响应于第一时钟按加载单位来加载数据,然后在第二时钟期间或响应于第二时钟按加载单位来加载后续数据。
71.加载顺序可以是选择性地确定要加载的数据的顺序。例如,可以以在从左上到右下的竖直方向上的优先级来确定加载顺序。例如,如果卷积权重是2
×
2,则输入特征图101的对应的输入数据可以因此基于卷积权重的大小以对应输入数据的左上、左下、右上和右下的顺序被加载。然而,由于各种示例包括以各种顺序或交替顺序加载的数据,因此该加载顺序仅仅是示例。
72.缓冲器控制器120可以冲刷分配给先前加载的输入数据(例如,在先前时钟中加载的、与先前卷积运算对应的、不再与对应于将要执行的当前卷积运算和未来卷积运算的输入数据重叠的输入数据)中的一些的地址。当冲刷地址时,缓冲器控制器120可以冲刷将被分配的地址之中的最小地址之前的地址。通过这种方式,可以确保将被分配给新加载的数据的地址,同时保持或维持在下一时钟中将被重用的先前加载的数据。在此,重叠的数据是指先前加载的用于先前卷积运算或其他卷积运算的将在当前或稍后的卷积运算中被重用的数据,或者是指不需要在当前时钟中被加载的用于当前卷积运算的数据,因为该数据已经从先前卷积运算或其他卷积运算的使用中被保留。例如,可以使用新加载的数据以及还与先前卷积运算或其他卷积运算对应的重叠的数据来执行当前卷积运算。
73.因此,加载器110可以加载将被执行卷积运算以生成对应的输出数据的输入数据之中的除了将与在先前时钟中加载的输入数据重叠的输入数据之外的输入数据。因此,先前加载的重叠输入数据可以重用于当前时钟的卷积运算。这样,数据可以在不同的处理时间或不同的时钟之间时间上地共享。
74.缓冲器控制器120将加载的输入数据存储在重用缓冲器130中的可以根据加载顺序旋转地分配的地址中。关于包括在加载的输入数据中的先前输入数据和当前输入数据,当分配给先前输入数据的地址是重用缓冲器130的最后地址时,将分配给当前输入数据的地址可以是重用缓冲器130的第一地址。
75.在一个示例中,多个发送器141、142和143可以各自对应于卷积运算的相应的输出数据。例如,一个发送器可以将用于一个输出数据的一个或多个输入数据发送到执行器。例如,多个发送器141、142和143可以将存储在一个重用缓冲器130中的所有输入数据之中的对应的输入数据发送到执行器,所述对应的输入数据将被施加卷积权重,并且作为将卷积
权重施加到发送的对应的输入数据的结果,对应的输出数据被生成。以此方式,多个发送器可以在同一时钟期间或响应于同一时钟在空间上共享存储在重用缓冲器130中的同一输入数据。
76.例如,卷积运算的卷积权重的大小可以是2
×
2,并且提取器100可以包括第一发送器和第二发送器。卷积运算的输出可以是输出特征图。输出特征图可以包括第一输出数据和与第一输出数据相邻的第二输出数据。第一发送器可以对应于第一输出数据(即,第一发送器用于发送与第一卷积运算对应的数据以生成第一输出数据)。第二发送器可以对应于与第一输出数据相邻的第二输出数据(即,第二发送器用于发送与第二卷积运算对应的数据以生成第二输出数据)。第一输出数据可以对应于第一输入数据、第二输入数据、第三输入数据和第四输入数据(例如,第一卷积运算可以将2
×
2卷积权重施加到收集的第一输入数据、第二输入数据、第三输入数据和第四输入数据,以生成第一输出数据)。第二输出数据可以对应于第三输入数据、第四输入数据、第五输入数据和第六输入数据(例如,第二卷积运算可以将2
×
2卷积权重施加到收集的第三输入数据、第四输入数据、第五输入数据和第六输入数据,以生成第二输出数据)。
77.当加载单位为六时,在第一时钟中,加载器110可以加载包括在输入特征图中的示出的(索引的)第一输入数据(“0”)、第二输入数据(“1”)、第三输入数据(“3”)、第四输入数据(“4”)、第五输入数据(“6”)和第六输入数据(“7”)。缓冲器控制器120可以将第一输入数据、第二输入数据、第三输入数据、第四输入数据、第五输入数据和第六输入数据分别存储在重用缓冲器130的第一地址、第二地址、第三地址、第四地址、第五地址和第六地址中。
78.第一发送器可以将第一输入数据、第二输入数据、第三输入数据和第四输入数据发送到执行器。第二发送器可以将第三输入数据、第四输入数据、第五输入数据和第六输入数据发送到执行器。这里,第三输入数据和第四输入数据可以是由加载器110一次性加载并一次性存储在重用缓冲器130中的数据。这样,第三输入数据和第四输入数据可以被视为重叠数据,因此,可以由第一发送器和第二发送器共享。
79.在第二时钟中,第一发送器可以对应于第三输出数据,并且第二发送器可以对应于与第三输出数据相邻的第四输出数据。第三输出数据可以对应于示出的(索引的)第五输入数据(“6”)、第六输入数据(“7”)、第七输入数据(“9”)和第八输入数据(“10”)(例如,第三卷积运算可以将卷积权重施加到收集的第五输入数据、第六输入数据、第七输入数据和第八输入数据,以生成第三输出数据)。第四输出数据可以对应于示出的(索引的)第七输入数据(“9”)、第八输入数据(“10”)、第九输入数据(“12”)和第十输入数据(“13”)(例如,第四卷积运算可以将卷积权重施加到收集的第七输入数据、第八输入数据、第九输入数据和第十输入数据,以生成第四输出数据)。
80.在第二时钟中,缓冲器控制器120还可以冲刷其余输入数据(例如,在先前时钟中加载的除了与对应于第三输出数据和第四输出数据的当前时钟的数据重叠的第五输入数据和第六输入数据之外的数据)的地址。例如,在当前第二时钟中,缓冲器控制器120可以冲刷分配给第一输入数据、第二输入数据、第三输入数据和第四输入数据的地址,但不冲刷分配给第五输入数据和第六输入数据的地址。作为另一示例,由于第二输入数据和第四输入数据可以在稍后的时钟中执行的与稍后生成的输出数据对应的卷积中被重用,因此缓冲器控制器120可以仅冲刷分配给第一输入数据和第三输入数据的地址。缓冲器控制器120可以
在加载新输入数据之前执行地址的冲刷,在加载新输入数据之后执行地址的冲刷,或基于重用缓冲器130的情况以各种顺序冲刷和加载。
81.在未来时钟中,在输出特征图102中,第一发送器可以对应于下一输出行的第一输出数据,并且第二发送器可以对应于与下一输出行的第一输出数据相邻的下一输出行的第二输出数据。这里,下一输出行的第一输出数据可以对应于示出的第二输入数据(“1”)、后续的第二输入数据(“2”)、第四输入数据(“4”)和后续的第四输入数据(“5”)(例如,示出来自上述第一时钟的第二输入数据和第四输入数据的重用)。相邻的下一输出行的第二输出数据可以对应于示出的第四输入数据(“4”)、后续的第四输入数据(“5”)、第六输入数据(“7”)和后续的第六输入数据(“8”)(例如,示出第四输入数据和第六输入数据的重用)。在该未来时钟示例中,由于输入(“0”)、(“3”)、(“9”)、(“12”)和(“15”)不会与任何后续时钟的输出特征图102的该下一输出行或其余输出行的对应的输入重叠,因此缓冲器控制器120还可以冲刷或先前已经冲刷与示出的输入(“0”)、(“3”)、(“9”)、(“12”)和(“15”)对应的地址。
82.作为以上讨论的替代方案,在该未来时钟或先前时钟中,与第二输入数据、第四输入数据和第六输入数据对应的地址也可以或已经被冲刷,因此,在该未来时钟中,第二输入数据(“1”)、后续第二输入数据(“2”)、第四输入数据(“4”)、后续第四输入数据(“5”)、第六输入数据(“7”)和后续第六输入数据(“8”)中的每个可以以六个输入为加载单位(例如,以描述的加载顺序中的任何加载顺序)被加载。
83.在另一示例中,提取器100可以包括加载器110、多个发送器141至143、缓冲器控制器120和多个重用缓冲器130。提取器100可以包括n个发送器和m个重用缓冲器(例如,其中,m《n)。例如,多个重用缓冲器可以包括第一重用缓冲器和第二重用缓冲器。存储在至少一个重用缓冲器中的数据可以由多个发送器在同一时钟中和/或跨越多个时钟共享。
84.因此,如上所述,加载器110可以根据加载顺序按加载单位加载存储在存储器中的输入特征图101的输入数据。缓冲器控制器120可以根据加载顺序将第一重用缓冲器或第二重用缓冲器的地址旋转地分配给加载的输入数据,并将加载的输入数据存储在分配的地址中。
85.多个发送器中的每个可以将存储在第一重用缓冲器或第二重用缓冲器中的输入数据之中的与相应的卷积运算的输出数据对应的输入数据发送到执行器。由多个发送器发送的输入数据的部分可以彼此重叠(例如,由多个发送器中的每个发送的所有相应的数据中的一些数据可以包括相同的单个加载的输入数据)。
86.在一个示例中,示例性的第一重用缓冲器和第二重用缓冲器可以形成单个地址系统。缓冲器控制器可以根据基于加载顺序加载的输入数据旋转地分配第一重用缓冲器和第二重用缓冲器的地址。关于包括在加载的输入数据中的先前输入数据和当前输入数据,当分配给先前输入数据的地址是第一重用缓冲器的最后地址时,将被分配给当前输入数据的地址可以是第一重用缓冲器的第一地址。当分配给先前输入数据的地址是第二重用缓冲器的最后地址时,将被分配给当前输入数据的地址可以是第二重用缓冲器的第一地址。
87.在另一示例中,第一重用缓冲器和第二重用缓冲器可以具有相应的旋转地址系统。关于包括在加载的输入数据中的先前输入数据和当前输入数据,当分配给先前输入数据的地址是第一重用缓冲器的最后地址时,将被分配给当前输入数据的地址可以是第二重用缓冲器的第一地址。当分配给先前输入数据的地址是第二重用缓冲器的最后地址时,将
被分配给当前输入数据的地址可以是第一重用缓冲器的第一地址。
88.缓冲器控制器可以冲刷分配给在先前时钟中加载的输入数据之中的除了与输出数据对应的将被执行卷积运算的输入数据重叠的输入数据之外的其余输入数据的地址。然后,加载器可以加载与输出数据对应的将被执行卷积运算的输入数据之中的除了先前时钟加载的重叠的输入数据之外的其余输入数据。
89.图2是示出在卷积运算中的示例数据共享的流程图。
90.在操作201中,加载器根据加载顺序按加载单位加载存储在存储器中的输入特征图的输入数据。例如,预先训练的神经网络可以接收拍摄的图像并输出输入特征图。输入特征图可以存储在存储器中。可选择地,加载器根据加载顺序按加载单位加载存储在存储器中的拍摄的图像的输入数据。
91.在操作203中,缓冲器控制器将加载的输入数据存储在重用缓冲器的根据加载顺序旋转地分配的地址中。缓冲器控制器可以计算用于存储输入数据的地址。当分配给先前输入数据的地址是重用缓冲器的最后地址时,将被分配给当前输入数据的地址可以是重用缓冲器的第一地址。
92.在操作205中,多个发送器中的每个将存储在重用缓冲器中的输入数据之中的与相应的卷积运算的每个输出数据对应的输入数据发送到执行器。这里,由于由多个发送器发送的输入数据的部分彼此重叠,因此多个发送器可以共享重用缓冲器的输入数据。
93.图3是示出在卷积运算中的数据共享的示例的流程图。
94.图3的操作可以在一个时间单位内执行。例如,一个时间单位可以包括一个时钟(例如,一个时钟周期)。在执行所有操作之后,如果满足操作307的条件,则图3的操作可以被重复。
95.在操作301中,缓冲器控制器可以确定(指示)重用缓冲器是否已满。在操作309中,当重用缓冲器已满时,缓冲器控制器可以冲刷将不被重用的输入数据(例如,将不与用于后续卷积运算的输入数据重叠的先前加载的数据)。换句话说,缓冲器控制器可以冲刷重用缓冲器中的分配给在先前时钟中加载的输入数据之中的除了与输出数据对应的将被执行卷积运算的输入数据重叠的输入数据之外的其余输入数据的地址。
96.在操作303中,当重用缓冲器未满或冲刷已经被执行时,加载器从存储器加载输入数据,并且重用缓冲器可以存储加载的输入数据。缓冲器控制器可以基于将执行哪个卷积运算而确定(或指示)重用缓冲器中的加载的输入数据中的哪个输入数据对应于哪个输出数据。加载器可以根据加载顺序按加载单位加载输入数据。
97.在操作305中,多个发送器中的每个可以从重用缓冲器提取至少一个需要的输入数据,并将提取的输入数据发送到执行器。由发送器中的每个发送的输入数据可以是冗余的,因此,多个发送器中的两个或更多个可以共享存储在重用缓冲器中的输入数据。例如,两个或更多个发送器可以共享存储在重用缓冲器中的一些相同的输入数据和存储在重用缓冲器中的分别不同的输入数据。执行器可以例如基于对应的输入数据和卷积权重来执行相应的卷积运算。
98.在操作307中,可以确定卷积运算是否将继续执行。当卷积运算继续时,可以再次执行操作301。当没有卷积运算将继续被执行时,图3的处理可以终止。
99.图4至图5是示出示例卷积运算的示图。
100.图4和图5使用发送器的数量为四并且卷积权重410的大小为2
×
2的示例来示出发送器如何基于同时计算的输出像素的位置来共享输入数据的示例。图4示出了在第一时钟中执行的卷积运算。卷积权重410对应于输入特征图420的2
×
2的每个面积。图5示出了在下一第二时钟中的存储或发送。
101.在该示例中,输入特征图420可以具有7
×
7的大小。特征值可以针对输入特征图420的每个像素被存储。例如,可以从预先训练的神经网络根据输入图像获取输入特征图420。0与48之间的标识号(或索引)可以被分配以标识(或索引)输入特征图420的每个像素或像素值。为了描述的简洁,图4示出了输入特征图420的从0到9的标识号,而省略了从10到48的标识号。
102.缓冲器控制器可以确定(指示)用于输出特征图440的标识的(或索引的)输出数据0至输出数据3的卷积运算的输入数据。缓冲器控制器可以将输入数据0至输入数据3确定为对应于输出数据0(例如,输出数据0作为确定的输入数据0至输入数据3与卷积权重410之间的卷积运算的结果)。类似地,缓冲器控制器可以将输入数据2至输入数据5确定为对应于输出数据1,可以将输入数据4至输入数据7确定为对应于输出数据2,并且可以将输入数据6至输入数据9确定为输出数据3。
103.加载器可以从存储器加载存储在存储器中的输入特征图420中的相应的输入数据。例如,加载器可以基于加载单位“十”来加载输入数据0至输入数据9。加载器还可以例如针对每次将卷积权重410施加到对应的输入数据按左上、左下、右上和右下的顺序加载输入数据。例如,加载器可以针对卷积权重410的施加来加载输入数据0、输入数据1、输入数据2和输入数据3,来生成输出数据0,并且由于加载的输入数据2和3将在施加卷积权重410以生成输出数据1时被共享,因此加载器可以针对将卷积权重410施加到输入数据2至5来加载输入数据4和输入数据5,以生成输出数据1。
104.缓冲器控制器可以计算将被分配给与输出数据对应的将被执行卷积运算的输入数据的地址。例如,缓冲器控制器可以将加载的输入数据存储在根据加载顺序旋转地分配的地址中。重用缓冲器450可以具有20的大小。当重用缓冲器未满时,第一存储空间的地址可以被分配。因此,在以上示例中,重用缓冲器450可以至少存储输入数据0至输入数据9。
105.第一发送器431、第二发送器432、第三发送器433和第四发送器434可以分别对应于输出特征图440的输出数据0至输出数据3。例如,第一发送器431可以将用于输出数据0的卷积运算的多个输入数据(例如,输入数据0至3)发送到执行器。第二发送器432可以将用于输出数据1的卷积运算的多个输入数据(例如,输入数据2至5)发送到执行器。第三发送器433可以将用于输出数据2的卷积运算的多个输入数据(例如,输入数据4至7)发送到执行器。第四发送器434可以将用于输出数据3的卷积运算的多个输入数据(例如,输入数据6至9)发送到执行器。第一发送器431、第二发送器432、第三发送器433和第四发送器434可以共享重叠的加载的输入数据(例如,输入数据2至7)。
106.执行器可以对输入数据0至输入数据3与卷积权重410执行卷积运算,从而生成输出数据0。执行器可以对输入数据2至输入数据5与卷积权重410执行卷积运算,从而生成输出数据1。执行器可以对输入数据4至输入数据7与卷积权重410执行卷积运算,从而生成输出数据2。执行器可以对输入数据6至输入数据9与卷积权重410执行卷积运算,从而生成输出数据3。
107.图5示出了在第二时钟中执行的卷积运算。图5示出了输入特征图520的从8到19的标识号(或索引),注意的是,为了描述的简洁,(以上描述的)从0到7的标识号(或索引)和从20到48的标识号(或索引)被省略。
108.缓冲器控制器可以确定(或指示)用于每个卷积运算的对应的输入数据,以生成输出特征图540的标识的(或索引的)输出数据0至输出数据3。缓冲器控制器可以将输入数据8至输入数据11确定(或指示)为对应于输出数据0(例如,输出数据0作为确定的输入数据8至11与卷积权重410之间的卷积运算的结果)。类似地,缓冲器控制器可以将输入数据10至输入数据13确定为对应于输出数据1。缓冲器控制器可以将输入数据14至输入数据17确定为对应于输出数据2。缓冲器控制器可以将输入数据16至输入数据19确定为对应于输出数据3。
109.加载器可以从存储器加载存储在存储器中的输入特征图520中的相应的输入数据。例如,加载器可以基于加载单位“十”来加载输入数据10至输入数据19。加载器还可以例如针对每次将卷积权重410施加到对应的输入数据按左上、左下、右上和右下的顺序加载输入数据。例如,加载器可以加载输入数据10和输入数据11,以用于卷积权重410与重用的(先前在图4中的时钟1中加载的)先前加载的输入数据8至9和当前加载的输入数据10至11之间的卷积运算,以生成输出数据0。类似地,由于加载的输入数据10和11将在卷积权重410的下一次施加中被共享以生成输出数据1,因此加载器可以加载输入数据12和输入数据13,以将卷积权重410施加到输入数据10至13以生成输出数据1。加载计数可以通过时间共享(例如,跨不同时钟共享加载的数据)被减少。
110.在跨不同时钟的这样的共享加载的数据的另一示例中,其中,(除了输入数据8和9在第一时钟中的先前加载之外)重用缓冲器550是与重用缓冲器450相同的重用缓冲器,并且输入数据1、3和5(与图5的输入数据14、16和18对应)的加载也已经在第一时钟中执行并存储在重用缓冲器550中,加载器仍可以例如针对每次将卷积权重410施加到对应的输入数据按以左上、左下、右上和右下的顺序加载其他非重用输入数据。例如,考虑到输入数据16和18(如相对于图4的第一时钟中的输入数据3和5)已经在第一时钟中被加载,加载器可以针对卷积权重410的施加仅加载输入数据15和输入数据17以生成输出数据2,并且考虑到输入数据17已经在第二时钟中在用于生成输出数据2的输入数据的紧接着的前一加载中被加载,加载器可以针对卷积权重410的施加仅加载输入数据19以生成输出数据3。
111.可选择地,输入数据14、16和18可以在第二时钟中再次被加载。例如,缓冲器控制器可以计算将被分配给与输出数据对应的要将被执行卷积运算的输入数据的地址,并且可以将存储输入数据10至输入数据19存储到重用缓冲器550。输入数据8和输入数据9可以是在第一时钟中已经存储的数据。
112.第一发送器431、第二发送器432、第三发送器433和第四发送器434可以分别对应于输出特征图540的输出数据0至输出数据3。例如,第一发送器431可以将用于输出数据0的卷积运算的多个输入数据(例如,输入数据8至11)发送到执行器。第二发送器432可以将用于输出数据1的卷积运算的多个输入数据(例如,输入数据10至13)发送到执行器。第三发送器433可以将用于输出数据2的卷积运算的多个输入数据(例如,输入数据14至17)发送到执行器。第四发送器434可以将用于输出数据3的卷积运算的多个输入数据(例如,输入数据16至19)发送到执行器。如上所述,第一发送器431和第二发送器432共享输入数据10和输入数
据11。同样地,第三发送器433和第四发送器434共享输入数据16和输入数据17。
113.执行器可以对输入数据8至输入数据11与卷积权重410执行卷积运算,从而输出输出数据0。执行器可以对输入数据10至输入数据13与卷积权重410执行卷积运算,从而输出输出数据1。执行器可以对输入数据14至输入数据17与卷积权重410执行卷积运算,从而输出输出数据2。执行器可以对输入数据16至输入数据19与卷积权重410执行卷积运算,从而输出输出数据3。当执行所有卷积运算以生成整个输出特征图时,可以认为输入特征图和卷积权重410的卷积完成。当存在多个输入通道时,则当在输入特征图的每个通道与内核的每个相应的通道(卷积权重410)之间的所有卷积运算被执行时,可以认为整个输出特征图完成。当存在多个内核时,每个内核具有取决于输入特征图的通道的数量的一个或更多个通道,输出特征图的多个对应的通道中的每个可以分别利用上述共享重叠的输入来生成,其中,输入的重叠发生在不同的卷积运算中。
114.图6是示出示例提取器的示图。
115.提取器100包括加载器110、多个发送器141、142和143、缓冲器控制器120以及重用缓冲器130。作为非限制性示例,提取器100可以对应于图1的提取器100。
116.加载器110根据加载顺序按加载单位加载存储在存储器中的输入特征图的输入数据。加载器110可以加载将被执行卷积运算以生成对应的输出数据的输入数据之中的除了与在先前时钟中加载的输入数据重叠的输入数据之外的其余输入数据。
117.缓冲器控制器120可以冲刷分配给在先前时钟中加载的输入数据之中的除了与对应于输出数据的将被执行卷积运算的输入数据重叠的输入数据之外的其余输入数据的地址。例如,如果关于已经被加载的任何输入数据,当前或未来将不执行进一步的卷积运算(例如,在这样的数据将不被重用或不是重叠数据的情况下),则已经被加载的这些输入数据的地址可以被冲刷。
118.缓冲器控制器120可以将加载的输入数据存储在重用缓冲器130中的例如根据加载顺序旋转地分配的地址中。关于在重用缓冲器130中的先前输入数据,当分配给先前输入数据的地址是重用缓冲器130的最后地址时,将被分配给当前输入数据的地址可以是重用缓冲器130的第一地址,并且缓冲器控制器120可以将当前输入数据存储在重用缓冲器130中的新分配的地址中。
119.多个发送器141、142和143中的每个将存储在重用缓冲器130中的输入数据之中的与卷积运算的每个输出数据对应的输入数据发送到执行器。由多个发送器141、142和143发送的输入数据的部分彼此重叠。例如,第一发送器141可以发送与用于第一输出数据的卷积权重的卷积运算对应的第一多个输入数据,而第二发送器142可以发送与用于另一特定输出数据的卷积权重的卷积运算对应的第二多个输入数据(包括第一多个输入数据中的一些),这示出重用缓冲器130在同一时钟中的空间重用。
120.例如,在卷积权重的示例大小为2
×
2的情况下,重用缓冲器130可由提取器100的多个发送器中的第一发送器141和第二发送器142在空间上重用。第一发送器141可以对应于第一输出数据。第二发送器142可以对应于与第一输出数据相邻的第二输出数据。第一输入数据、第二输入数据、第三输入数据、第四输入数据、第五输入数据和第六输入数据可以分别存储在重用缓冲器130的第一地址、第二地址、第三地址、第四地址、第五地址和第六地址中。作为示例,输入特征图可以对应于图4的输入特征图420(例如,其中,第一输入数据至
第六输入数据分别被标识/索引为输入数据“0”至输入数据“5”)。关于图6,第一发送器141可以将第一输入数据、第二输入数据、第三输入数据和第四输入数据发送到执行器,以用于第一输入数据、第二输入数据、第三输入数据和第四输入数据与2
×
2卷积权重之间的卷积运算。第二发送器142可以将第三输入数据、第四输入数据、第五输入数据和第六输入数据发送到执行器。在此示例中,第一发送器141和第二发送器142可以在示例第一时钟中发送它们相应的输入数据。
121.作为另一示例,在卷积权重的示例大小为2
×
2的情况下,重用缓冲器130可以由提取器100的多个发送器中的第一发送器141和第二发送器142在时间上重用。如上所述,在先前时钟中(例如,在以上第一时钟中),第一发送器141可以对应于第一输出数据,并且第二发送器142可以对应于与第一输出数据相邻的第二输出数据,并且加载的第一输入数据、第二输入数据、第三输入数据、第四输入数据、第五输入数据和第六输入数据可以分别存储在重用缓冲器130的第一地址、第二地址、第三地址、第四地址、第五地址和第六地址中。在当前(或第二)时钟中,第一发送器141可以对应于第三输出数据,并且第二发送器142可以对应于与第三输出数据相邻的第四输出数据。在与第三输出数据和第四输出数据对应的将被执行相应的卷积运算的第五输入数据、第六输入数据、第七输入数据、第八输入数据、第九输入数据和第十输入数据之中,加载器110可以加载除了与在先前时钟中加载的输入数据重叠的第五输入数据和第六输入数据之外的其余输入数据,即,加载器可以仅加载第七输入数据、第八输入数据、第九输入数据和第十输入数据。
122.在当前时钟中,第一发送器141可以对应于第三输出数据,并且第二发送器142可以对应于与第三输出数据相邻的第四输出数据。缓冲器控制器120可以冲刷分配给在先前时钟中加载的输入数据之中的除了与对应于第三输出数据和第四输出数据的将被执行相应的卷积运算的输入数据重叠的第五输入数据和第六输入数据之外的第一输入数据、第二输入数据、第三输入数据和第四输入数据的地址。在另一示例中,由于在卷积运算的步幅为1且卷积权重为2
×
2的示例中,存储在重用缓冲器130中的第二输入数据和第四输入数据可以在稍后的时钟中被使用,因此加载器110可以冲刷分配给第一输入数据和第三输入数据的地址并且不冲刷分配给第二输入数据和第四输入数据的地址。例如,在将卷积权重施加到第一输入数据至第四输入数据的前一时钟中,第一输入数据可以是左上输入,第二输入数据可以是左下输入,第三输入数据可以是右上输入,并且第四输入数据可以是与卷积权重对应的右下输入。然而,在稍后的时钟期间,卷积权重可以被施加到稍后的输入数据,根据卷积运算的步幅“1”向下移位一行,因此,由于第二输入数据和第四输入数据现在可以被认为是该当前卷积运算中的左上输入和右上输入,所以卷积权重可以被施加到它们(以及相应的当前稍后的时钟加载的输入数据)。
123.在另一示例中,提取器包括加载器110、多个发送器141、142和143、缓冲器控制器120以及多个重用缓冲器。多个重用缓冲器可以包括第一重用缓冲器和第二重用缓冲器。
124.加载器110根据加载顺序按加载单位加载存储在存储器中的输入特征图的输入数据。作为一个示例,关于包括在加载的输入数据中的先前输入数据和当前输入数据,当分配给先前输入数据的地址是第一重用缓冲器的最后地址时,将被分配给当前输入数据的地址可以是第一重用缓冲器的第一地址。当分配给先前输入数据的地址是第二重用缓冲器的最后地址时,将被分配给当前输入数据的地址可以是第二重用缓冲器的第一地址。作为另一
示例,关于包括在加载的输入数据中的先前输入数据和当前输入数据,当分配给先前输入数据的地址是第一重用缓冲器的最后地址时,将被分配给当前输入数据的地址可以是第二重用缓冲器的第一地址。当分配给先前输入数据的地址是第二重用缓冲器的最后地址时,将被分配给当前输入数据的地址可以是第一重用缓冲器的第一地址。
125.缓冲器控制器120可以冲刷分配给在(一个或多个)先前时钟中加载的输入数据之中的除了与对应于输出数据的将被执行卷积运算的输入数据重叠的输入数据之外的其余输入数据的地址。加载器110可以加载与输出数据对应的将被执行卷积运算的输入数据之中的除了与在先前时钟中加载的输入数据重叠的输入数据之外的其余输入数据。
126.缓冲器控制器120可以根据加载顺序将第一重用缓冲器或第二重用缓冲器的地址旋转地分配给加载的输入数据,并将加载的输入数据存储在分配的地址中。
127.多个发送器141、142和143中的每个将存储在第一重用缓冲器或第二重用缓冲器中的输入数据之中的与相应的卷积运算的输出数据对应的输入数据发送到执行器。由多个发送器141、142和143发送的输入数据的部分彼此重叠。
128.图7是示出示例计算装置的示图。
129.计算装置包括存储器710、提取器100、加载器110、缓冲器控制器120、执行器720和存储装置730。作为非限制性的相应示例,存储器710可以对应于图1的输入特征图101或在此描述的表示输入特征图或卷积权重的任何存储器,存储装置730可以对应于图1的输出特征图102或在此描述的表示输出数据的任何存储器,提取器100、加载器110、缓冲器控制器120、重用缓冲器130以及第一发送器至第(n-1)发送器中的每个可以对应于图1和图6中的一者或两者中的提取器100、加载器110、缓冲器控制器120、重用缓冲器130以及第一发送器到第(n-1)发送器,或者在此描述的提取器、加载器、缓冲器控制器、重用缓冲器和发送器中的任何一个。另外,虽然关于输出特征图描述了存储装置730,并且关于输入特征图描述了存储器710,但是输出特征图可以例如成为下一神经网络层的输入特征图,因此,当计算装置执行下一神经网络层时,存储装置730可以对应于存储器710。
130.提取器100包括加载器110、多个发送器141和142至143、重用缓冲器130以及缓冲器控制器120。
131.加载器110根据加载顺序按加载单位加载存储在存储器710中的输入特征图的输入数据。
132.缓冲器控制器120根据加载顺序将重用缓冲器130的地址旋转地分配给加载的输入数据,并将加载的输入数据存储在分配的地址中。
133.多个发送器141至143中的每个将存储在重用缓冲器130中的输入数据之中的与卷积运算的每个输出数据对应的输入数据发送到执行器720。由多个发送器141、142和143发送的输入数据的部分可以彼此重叠(例如,不执行这种重叠的输入数据的至少一些相应的多次加载)。
134.执行器720对从多个发送器141、142和143中的每个接收的输入数据执行卷积运算,输出与多个发送器中的每个对应的输出数据,并将输出数据存储在存储装置730中。
135.图1至图7的存储器、提取器、加载器、缓冲器控制器、重用缓冲器、发送器、执行器和存储装置由硬件组件实现。可以用于执行本技术中描述的操作的硬件组件的示例在适当的情况下包括控制器、传感器、生成器、驱动器、存储器、比较器、脉动阵列、算术逻辑单元、
加法器、减法器、乘法器、除法器、积分器以及被配置为执行本技术中描述的操作的任何其他电子组件。在其他示例中,执行本技术中描述的操作的一个或多个硬件组件由计算硬件实现(例如,由一个或多个处理器或计算机(例如,作为非限制性示例,与一个或多个脉动阵列协作)实现)。处理器或计算机可以由一个或多个处理元件(诸如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器或者被配置为以定义的方式响应并执行指令以实现期望结果的任何其他装置或装置的组合)实现。在一个示例中,处理器或计算机包括或连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可以执行指令或软件(诸如,操作系统(os)和在os上运行的一个或多个软件应用),以执行本技术中描述的操作。硬件组件还可以响应于指令或软件的执行而访问、操纵、处理、创建和存储数据。为了简单,可以在本技术中描述的示例的描述中使用单数术语“处理器”或“计算机”,但是在其他示例中,可以使用多个处理器或计算机,或者处理器或计算机可以包括多个处理元件,或多种类型的处理元件,或两者。例如,单个硬件组件或两个或更多个硬件组件可以由单个处理器、或两个或更多个处理器、或处理器和控制器来实现。一个或多个硬件组件可以由一个或多个处理器或者处理器和控制器实现,并且一个或多个其他硬件组件可以由一个或多个其他处理器或者另外的处理器和另外的控制器实现。一个或多个处理器或者处理器和控制器可以实现单个硬件组件或者两个或更多个硬件组件。硬件组件可以具有不同的处理配置中的任何一个或多个,不同的处理配置的示例包括单个处理器、独立处理器、并行处理器、单指令单数据(sisd)多处理、单指令多数据(simd)多处理、多指令单数据(misd)多处理和多指令多数据(mimd)多处理。
136.执行本技术中描述的操作的图1至图7的方法由计算硬件(例如,由一个或多个处理器或计算机)执行,计算硬件被如上所述地实现为执行指令或软件,以执行本技术中描述的由所述方法执行的操作。例如,单个操作或者两个或更多个操作可以由单个处理器、或两个或更多个处理器、或处理器和控制器执行。一个或多个操作可以由一个或多个处理器或者处理器和控制器执行,并且一个或多个其他操作可以由一个或多个其他处理器或者另外的处理器和另外的控制器执行。一个或多个处理器或者处理器和控制器可以执行单个操作或者两个或更多个操作。
137.用于控制计算硬件(例如,作为非限制性示例的一个或多个处理器或计算机以及与一个或多个处理器或计算机组合的一个或多个脉动阵列)以实现硬件组件并执行如上所述的方法的指令或软件可以被编写为计算机程序、代码段、指令或它们的任何组合,用于单独地或共同地指示或配置一个或多个处理器或计算机作为机器或专用计算机操作,以执行由如上所述的硬件组件和方法执行的操作。在一个示例中,指令或软件包括由一个或多个处理器或计算机直接执行的机器代码(诸如,由编译器产生的机器代码)。在另一示例中,指令或软件包括由一个或多个处理器或计算机使用解释器执行的更高级代码。可以基于附图中示出的框图和流程图以及在此使用的对应的描述使用任何编程语言来编写指令或软件,附图中示出的框图和流程图以及在此使用的对应的描述公开了用于执行由如上所述的硬件组件和方法执行的操作的算法。
138.用于控制计算硬件(例如,一个或多个处理器或计算机以及与一个或多个处理器或计算机组合的一个或多个脉动阵列)以实现硬件组件并执行如上所述的方法的指令或软
件、以及任何相关的数据、数据文件和数据结构可以被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中,或者被记录、存储或固定在一个或多个非暂时性计算机可读存储介质上。非暂时性计算机可读存储介质的示例包括只读存储器(rom)、随机存取可编程只读存储器(prom)、电可擦除可编程只读存储器(eeprom)、随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、闪存、非易失性存储器、cd-rom、cd-r、cd+r、cd-rw、cd+rw、dvd-rom、dvd-r、dvd+r、dvd-rw、dvd+rw、dvd-ram、bd-rom、bd-r、bd-r lth、bd-re、蓝光或光盘存储器、硬盘驱动器(hdd)、固态驱动器(ssd)、卡型存储器(诸如,多媒体卡或微型卡(例如,安全数字(sd)或极限数字(xd)))、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及被配置为以非暂时性方式存储指令或软件以及任何相关的数据、数据文件和数据结构并向一个或多个处理器或计算机提供指令或软件以及任何相关的数据、数据文件和数据结构,使得一个或多个处理器或计算机可以执行指令的任何其他装置。在一个示例中,指令或软件以及任何相关的数据、数据文件和数据结构分布在联网的计算机系统上,使得指令和软件以及任何相关的数据、数据文件和数据结构由一个或多个处理器或计算机以分布的方式存储、访问和执行。
139.虽然本公开包括具体示例,但是在理解本技术的公开之后将清楚的是,在不脱离权利要求及其等同物的精神和范围的情况下,可以在这些示例中进行形式和细节上的各种改变。在此描述的示例将仅以描述性的含义考虑,而不用于限制的目的。每个示例中的特征或方面的描述将被认为适用于其他示例中的类似特征或方面。如果描述的技术以不同的顺序执行,和/或如果描述的系统、架构、装置或电路中的组件以不同的方式组合,和/或由其他组件或其等同物替换或补充,则合适的结果可以被实现。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1