具有并行加载-存储的共享便笺式存储器的制作方法

文档序号:31572864发布日期:2022-09-20 22:53阅读:36来源:国知局
具有并行加载-存储的共享便笺式存储器的制作方法
具有并行加载-存储的共享便笺式存储器
1.相关申请的交叉引用
2.本技术要求2020年5月14日提交的美国实用程序申请号15/931,970的权益,该申请要求2020年1月27日提交的美国临时申请号62/966,518的权益,其内容通过引用并入本文。


背景技术:

3.本说明书总体地涉及用于执行神经网络计算的硬件电路的电路。
4.神经网络是使用一层或多层节点来为接收的输入生成输出——例如分类——的机器学习模型。除了输出层之外,一些神经络还包括一个或多个隐藏层。每个隐藏层的输出被用作网络中一个或多个其他层——例如网络的其他隐藏层或输出层——的输入。网络的一些层根据相应参数集的当前值从接收的输入生成输出。一些神经网络是被配置用于图像处理的卷积神经网络(cnn)或被配置用于语音和语言处理的循环神经网络(rnn)。
5.cnn的神经网络层能够具有可以对应于参数或权重的核的相关联的集合。核的相关联的集合被用于通过神经网络层来处理输入(例如,输入批次),以生成该层的对应输出用于计算神经网络推断。输入批次和核的集合能够分别被表示为输入和权重的张量。张量能够对应于多维阵列。实现神经网络的硬件电路包括具有由地址值标识的位置的存储器。存储器位置能够对应于张量的元素,并且张量元素可以使用电路的控制逻辑来遍历或存取。例如,控制逻辑能够确定或计算元素的存储器地址值以加载或存储元素的对应数据值。


技术实现要素:

6.本文档描述了具有改进架构的硬件电路,该改进架构包含被分配用于在电路的多个相应处理器核之间共享的静态随机存取存储器(spam)的资源。更特别地,该电路包括共享存储器,该共享存储器通常能够位于高带宽存储器(hbm)和专用处理器的至少两个处理器核中间。共享存储器包括相对于处理器核的某些计算资源物理地和逻辑地布置的诸如存储器组和寄存器的资源。共享存储器资源的物理和逻辑布置允许在hbm与硬件电路的相应处理器核之间以及单个处理器核的不同资源之间或者两个不同处理器核的相应资源之间的数据通信期间提高速度和吞吐量。
7.本说明书中描述的主题的一个方面能够体现在被配置为实现包括多个神经网络层的神经网络的电路中。该电路包括:第一存储器,该第一存储器被配置为提供数据用于执行计算,以生成神经网络的层的输出;第一处理器核,包括第一向量存储器,该第一向量存储器被配置为存储从第一存储器提供的数据得出的第一向量值;第二处理器核,包括第二向量存储器,该第二向量存储器被配置为存储从第一存储器提供的数据得出的第二向量值;以及共享存储器,所述共享存储器被设置在第一或第二处理器核中的至少一个和第一存储器中间。共享存储器包括:直接存储器存取(dma)数据路径,所述直接存储器存取(dma)数据路径被配置为在共享存储器和第一向量存储器或第二向量存储器之间路由数据通信;以及加载-存储数据路径,所述加载-存储数据路径被配置为在共享存储器和第一处理器核
或第二处理器核的相应向量寄存器之间路由数据通信。
8.这些和其他实施方式能够每一个可选地包括以下特征中的一个或多个。例如,在一些实施方式中,电路包括多个处理器核,第一处理器核和第二处理器核在多个处理器核当中;以及共享存储器包括物理地分布在电路周围的多个存储器资源,以与电路处的多个处理器核中的每一个交换数据通信。
9.在一些实施方式中,共享存储器包括共享存储器控制单元,该共享存储器控制单元被配置为:执行软件指令,该软件指令使多个存储器资源的第一部分充当dma存储器单元,所述dma存储器单元可操作以在第一存储器与第一处理器核和第二处理器核中的每个之间移动数据。多个存储器资源包括资源的第二部分,所述资源的第二部分被配置为:接收沿加载-存储数据路径路由的数据值;以及临时存储数据值持续阈值数量的处理器周期。
10.资源的第二部分能够被配置为:响应于临时存储数据值持续阈值数量的处理器周期,将数据值提供给第一处理器核或第二处理器核的相应向量寄存器。在一些实施方式中,共享存储器包括:软件控制的构架(staging)资源,该软件控制的构架资源由共享存储器的存储器资源的子集形成,该软件控制的构架资源被用于管理从第一存储器到第一处理器核或第二处理器核的相应向量寄存器的数据值的流动。
11.在一些实施方式中,电路包括矩阵计算单元,该矩阵计算单元被配置为执行计算的子集以生成被用于生成神经网络层的输出的累加值。软件控制的构架资源能够被用于管理与从第一存储器到矩阵计算单元的向量阵列对应的数据流动,其中向量阵列是从第一存储器提供的数据值得出的。在一些实施方式中,电路包括与第一存储器通信的向量处理单元;向量处理单元被配置为从在电路处生成的累加值生成激活值的向量;激活值的向量对应于神经网络层的输出。
12.软件控制的构架资源能够是沿着加载-存储数据路径的加载部分的先进先出(fifo)存储器结构;并且fifo存储器结构被配置为在将值向量路由到第一处理器核或第二处理器核的相应向量寄存器之前,临时存储值向量持续阈值数量的处理器周期。在一些实施方式中,共享存储器被配置为充当共享全局存储器空间,所述共享全局存储器空间包括与在多个处理器核中的一个或多个处理器核之间共享的存储器组对应的存储器资源。
13.在一些实施方式中,用于执行计算以生成第一层的输出的数据包括:将通过神经网络的第一层来处理的输入;用于神经网络的第一层的相应的权重的集合;以及指令,所述指令用于使用第一层的相应的权重的集合来处理通过第一层的输入中的一个或多个以生成第一层的输出。
14.本说明书中描述的主题的一个方面能够体现在用于执行计算以使用被配置为实现神经网络的电路来为包括多个神经网络层的神经网络的层生成输出的方法中。该方法包括:从第一存储器提供用于生成神经网络层的输出的数据;以及使用第一处理器核的第一向量存储器将值向量存储在电路的第一处理器核,其中第一向量存储器被配置为存储从第一存储器提供的数据得出的第一向量值。
15.方法进一步包括使用电路中共享存储器的直接存储器存取(dma)数据路径,在共享存储器和第一向量存储器之间路由包括至少第一向量值的数据通信;使用共享存储器的加载-存储数据路径,在共享存储器和第一处理器核的相应向量寄存器之间路由包括第二向量值的数据通信;以及通过矩阵计算单元,使用沿着共享存储器的相应加载-存储数据路
径和dma数据路径并行地路由到矩阵计算单元的相应第一和第二向量值,来生成与神经网络层的输出相对应的累加值。
16.此方面和其他方面的其他实施方式包括对应的系统、装置和计算机程序,被配置为执行方法的动作,被编码在计算机存储设备上。一个或多个计算机的系统能够凭借安装在系统上的软件、固件、硬件或它们的组合来配置,所述软件、固件、硬件或它们的组合在操作中使系统执行动作。一个或多个计算机程序能够凭借具有指令来配置,所述指令在由数据处理装置执行时使该装置执行动作。
17.本说明书中描述的主题能够在特定实施例中实现,以便于实现以下优点中的一个或多个。
18.共享存储器提供了能够在硬件电路的两个或更多个处理器核之间有效共享的存储器构造,以相对于先前方法改进硬件电路处神经网络计算的加速和同时执行。共享存储器能够被构造为具有某些资源基本上驻留于处理器核的外面,以使得移动数据用于直接存储器存取和从共享存储器到处理器核中的加载/存储操作的一些(或全部)线路是共享的。与需要专用线路用于各种数据传输的其他方法相比,这改进了带宽利用和效率。
19.共享存储器包含提供更高峰值性能的加载-存储数据路径,因为它不需要通过向量存储器宏来路由数据以将向量阵列加载/写入到片上向量寄存器的存储器位置。使用共享存储器的改进架构和资源,由于可以被集成在向量寄存器处的额外可用的寄存器端口,针对向量寄存器的加载和存储能够与向量存储器加载和存储并行地执行。
20.电路架构和技术能够被用于将神经网络处理器的共享sram资源集成并有效地构造为单个电路封装。共享sram资源的集成和有效构造允许在不会招致片外通信的惩罚的情况下计算推断,以获得额外的数据值。
21.本说明书中描述的主题的一个或多个实施方式的细节在附图和以下描述中阐述。本主题的其他潜在特征、方面和优点将从描述、附图和权利要求中变得显而易见。
附图说明
22.图1是具有包括示例共享存储器的硬件电路的计算系统的框图。
23.图2是示出了与硬件电路的示例共享存储器通信的示例处理器核的框图。
24.图3是示出了与硬件电路的示例矩阵计算单元通信的示例向量处理器的框图。
25.图4示出了将共享存储器耦合到硬件电路的一个或多个向量处理器的示例线路连接。
26.图5是示出了用于使用图1的共享存储器来加速神经网络计算的示例过程的流程图。
27.不同附图中的相同参考数字和名称指示相同的元件。
具体实施方式
28.本说明书描述了使用相对于先前设计改进的硬件电路架构来实现的硬件电路和数据处理技术。硬件电路能够是专用处理器,诸如神经网络处理器、专用集成电路(asic)或硬件加速器。硬件电路被配置为实现包括多个神经网络层的神经网络。本文档中描述的改进架构和数据处理技术允许表示硬件加速器的电路在加速示例神经网络模型的计算时实
现速度和带宽的增加,包括通过cnn、rnn或其他神经网络类型的层处理输入以生成与神经网络推断对应的输出的计算。
29.该电路通常包括第一存储器、相应的第一和第二处理器核以及共享存储器。第一存储器提供数据以用于执行计算以生成神经网络层的输出。第一和第二处理器核中的每一个能够是张量处理器核,所述张量处理器核被配置为使用从第一存储器提供的数据得出的输入和权重来执行神经网络计算。例如,第一和第二处理器核能够使用分别从第一存储器提供的对应输入张量和权重/参数张量得出的输入向量和权重向量来执行神经网络计算。
30.第一和第二核中的每一个包括被配置为存储被传递到向量存储器的向量值的相应向量存储器。向量值从第一存储器提供的数据中得出,并经由共享存储器被传递到向量存储器。共享存储器通常被设置在第一存储器和处理器核中的至少一个中间。共享存储器包括:i)直接存储器存取(dma)数据路径,所述直接存储器存取(dma)数据路径被配置为在共享存储器与第一和第二核的相应向量存储器之间路由数据,以及ii)加载-存储数据路径,所述加载-存储数据路径被配置为在共享存储器与第一和第二核的相应向量寄存器之间路由数据。dma数据路径和加载-存储数据路径的组合通过提供并行数据路径来允许相对于先前设计增加的带宽,所述并行数据路径能够同时用于向执行神经网络计算的电路的计算阵列提供向量值。
31.图1是包括示例硬件电路101的计算系统100的框图。如上所述,硬件电路101能够表示硬件加速器或一些其他专用处理器。在一些情况下,系统100是用于加速与诸如rnn或cnn这样的人工深度神经网络(dnn)相关联的张量或神经网络计算的示例计算系统。例如,系统100被配置为在示例硬件加速器上实现cnn并将数据值传递到硬件加速器以生成用于计算推断的输出。
32.在一些实施方式中,系统100是片上系统。例如,片上系统能够包括硬件电路101和在本文档中描述为包括在系统100中的一些(或全部)其他组件和设备。
33.硬件电路101可以是配置为加速神经网络模型的执行和/或性能的硬件加速器。例如,神经网络模型的执行可以相对于模型在诸如中央处理单元(cpu)这样的示例通用机器上的执行而被加速。类似地,神经网络模型的性能和执行可以相对于模型在诸如图形处理单元(gpu)这样的不具有本说明书中描述的改进的硬件特征和技术的另一个硬件加速器上的实现而被加速。
34.包括电路101的系统100包括系统存储器102和共享存储器104。系统存储器102能够表示高带宽存储器(“hbm 102”)或与硬件电路101的处理器核105-1、105-2交换数据通信的输入/输出(i/o)设备。数据通信通常能够包括将数据值写入位于特定处理器核105-1、105-2中的向量存储器106、108或者从特定处理器核的向量存储器106、108读取数据。例如,hbm 102可以与处理器核105-1交换数据通信以将输入传递到核并且接收由核的一个或多个计算资源生成的输出。在一些实施方式中,系统存储器102表示不同类型的存储器系统和存储器技术,包括hbm、dram、dimms或非dram技术。
35.数据值能够表示向量元素或向量值的阵列。例如,第一向量阵列能够表示将要通过神经网络层处理的输入批次,而第二向量阵列能够表示该层的权重的集合。相关地,第三向量阵列能够表示与在处理器核105-1处生成的输出对应的累加值的向量,而第四向量阵列能够表示激活值的向量,所述激活值表示在处理器核105-2处生成的输出。
36.hbm 102能够是系统100的动态随机存取存储器(dram)资产。在一些实施方式中,hbm 102是相对于电路101的外部或片外存储器,并且被配置为与系统100的片上向量存储器组(如下所述)交换数据通信。例如,hbm 102能够设置在表示电路101的集成电路管芯之外的物理位置。因此,hbm 102能够相对于在集成电路管芯内所设置的计算资源是远离的或非本地的。可替选地,hbm 102或其资源的一部分能够被设置在代表电路101的集成电路管芯内,使得hbm 102位于电路的计算资源本地或者与电路的计算资源共位。
37.系统100能够包括一个或多个处理器核105-1、105-2。在一些实施方式中,系统100包括多个处理器核105-n,其中n是大于或等于一的整数。在图1以及下文描述的图2和图3的示例中,系统100被示为包括两个处理器核;然而,包括本文描述的硬件电路101的系统100可以具有更多或更少的处理器核。在一些示例中,与共享存储器104相关的包括其存储器资源和不同的数据路径的所描述的技术能够相对于单个处理器核的组件和资源来被共享。通常,处理器核105-n是系统100(或硬件电路101)的分立的、自包含的处理/计算单元。
38.每个处理器核105被配置为独立地执行多层神经网络的一个或多个层所需的计算(例如,神经网络计算)。计算可能需要处理用于机器学习工作负荷的数据或执行工作负荷的特定任务。在处理器核处执行以通过一个或多个神经网络层处理输入的计算可以包括将数据值的第一集合(例如,输入或激活)与数据值的第二集合(例如,权重)相乘。例如,计算能够包括在一个或多个周期上将输入或激活值与权重值相乘,并在多个周期上执行乘积的累加。每个核105通常能够包括用于执行这些计算的矩阵计算单元和可选地向量处理单元。这些单元在下面参考图3进行了更详细地描述。
39.数据值的第一和第二集合中的不同值被存储在硬件电路101的处理器核中的存储器构造的特定存储器位置处。在一些实施方式中,数据值的第一集合中的单独值可以对应于输入张量的相应元素,而数据值的第二集合中的单独值可以对应于权重(或参数)张量的相应元素。例如,层序列中的神经网络层能够处理输入的集合,诸如由层序列中的另一个神经网络层生成的图像像素数据或激活值的输入。
40.输入集合或激活值集合能够表示为一维(1d)或其中多个元素沿着其相应维度的多维张量(例如,2d或3d)。能够将存储数据值的每个存储器位置映射到单维或多维张量的对应元素,并且可以使用电路的控制逻辑遍历或存取张量元素。例如,控制逻辑能够确定或计算映射到元素的存储器地址值以加载或存储元素的对应数据值。
41.硬件电路101具有包括不同存储器构造的专用存储器层级。这些存储器构造中的每一个相对于其他构造具有不同的带宽和时延特性,并且在硬件电路101内的它们的物理位置也可能不同。示例存储器构造包括共享存储器104、向量存储器106、108和向量寄存器110、112。一般而言,存储器构造可操作以存储要在神经网络层被处理的诸如与输入、激活或增益值有关的向量值的数据值,以及由神经网络层响应于通过该层处理输入或激活而生成的输出激活。下面参考图2和图3更详细地描述输出激活的生成和存储以及用于执行这些操作的各种存储器构造。
42.图2是示出了共享存储器104的资源或部分如何布置在硬件电路101处以促进硬件电路的各种组件之间的数据通信的示例的框图200。如上所指示,共享存储器104为系统100的改进的硬件架构和数据处理技术提供了基础。共享存储器104能够表示示例神经网络处理器芯片的片上sram资源。在一些实施方式中,共享存储器104存在于(例如,通常或基本
上)hbm 102和对应的处理器核105-1、105-2的相应向量存储器106、108之间。
43.共享存储器104能够表示芯片或电路101上的共享中心空间。例如,共享存储器104被配置为充当包括与存储器组和寄存器对应的存储器资源的共享全局存储器空间,所述存储器资源在可能存在于系统100中和/或包括在硬件电路101中的多个处理器核中的一个或多个处理器核105-1、105-2之间共享。如下文更详细描述的,共享存储器104被配置为充当软件控制便笺式存储器。在一些实施方式中,共享存储器104的一些(或全部)资源被配置为充当软件控制便笺(构架资源)而不是硬件管理的高速缓存。在其他实施方式中,共享存储器104的一些存储器资源被配置为充当硬件管理的高速缓存或操作,同时共享存储器104的一些存储器资源(例如,资源的剩余部分)被配置为充当软件控制便笺。例如,系统100能够分配允许作为硬件管理的高速缓存操作的资源的一部分,而使用共享存储器104的其余部分作为软件便笺。
44.系统100被配置为向用户暴露至少两个编程接口以利用共享存储器104提供的数据传输功能。第一接口暴露可编程dma数据传输功能和操作,而第二不同的接口暴露可编程加载/存储数据传输功能和操作。这些接口功能中的每一个表示以下更详细地描述的共享存储器104的逻辑属性。
45.如上所述,系统100的存储器构造具有变化的带宽和时延特性。例如,共享存储器104可以具有比hbm 102的dram存取更高的带宽和更低的时延,但比向量存储器106、108的存取更低的带宽和更高的时延。在一些示例中,共享存储器104具有比hbm 102的dram资产更低的数据容量,但比处理器核的相应向量存储器更高的数据容量。一般来说,这些不同的带宽和时延属性代表了标准存储器层级权衡。
46.系统100的存储器构造,特别是共享存储器104,在硬件电路101内它们的物理放置中也可能不同。共享存储器104包括诸如存储器组和寄存器的可以相对于处理器核105-1、105-2的某些计算资源的放置而物理地和逻辑地布置的资源。在此上下文中,共享存储器104的特征通常可以参考它的物理结构和它的逻辑结构来描述。最初将讨论共享存储器104的物理结构,而以下描述它的逻辑结构。
47.关于它的物理结构,共享存储器104的资源可以物理地分布在硬件电路101上。例如,形成共享存储器104的资源的不同子集、部分或节段可以物理地分布在电路101的各种位置,以使不同类型的数据传输操作和处理技术能够在系统100实现。在一些实施方式中,共享存储器104的一部分资源能够驻留在电路101的处理器核内,而另一部分资源能够驻留在电路101的处理器核之外。在图2的示例中,共享存储器104的一部分在处理器核105-1、105-2中的每一个之外以启用在hbm 102的存储器位置和共享存储器104的存储器位置之间移动大数据块的dma操作。
48.再次简要地参考hbm 102,这种类型的系统存储器能够是系统100用来提供和/或与相应处理器核的向量存储器交换高带宽数据的外部存储器结构。在一些实施方式中,hbm 102被配置用于各种直接存储器存取(dma)操作以从电路101的处理器核中的向量存储器的存储器地址位置获取数据或向所述存储器地址位置提供数据。更具体地,涉及hbm 102与向量存储器106、108交换数据的dma操作由示例控制方案和共享存储器104的存储器资源启用。
49.在图2、图3(以下所述)的示例中,共享存储器104包括共享存储器控制单元201
(“控制单元201”)。控制单元201被配置为生成控制信号114,用于控制涉及hbm 102、共享存储器104、向量存储器106、108和向量寄存器110、112中的每一个的存储器存取操作。
50.控制单元201实施跨系统100的不同存储器(例如,hbm 102、共享存储器104、向量存储器106、108和向量寄存器110、112)分布的控制方案。在一些实施方式中,该控制实施方式基于控制单元201与每个存储器的相应控制单元之间的通信而跨不同的存储器分布。例如,控制方案能够基于由控制单元201提供的被这些不同存储器的相应控制单元本地处理的控制信号来跨存储器分布。
51.数据路径的共享能够用于在hbm 102和处理器核105-1、105-2的相应向量存储器之间移动数据。当该情况发生时,系统100使用于给定存储器或数据路径的任何(和所有)需要的控制单元被激活,以管理需要在适当接触点发生的数据切换。控制单元201被配置为执行软件指令并生成使共享存储器104的存储器资源的第一部分充当dma存储器单元的控制信号。
52.资源的第一部分能够由参照处理器核105-1的共享核数据路径204和参照处理器核105-2的共享核数据路径224来表示。该代表性dma存储器单元可操作以基于控制单元201生成的控制信号在hbm 102与第一处理器核105-1和第二处理器核105-2中的每一个之间移动数据。
53.例如,能够生成控制信号以执行dma操作以在:a)使用数据路径202、共享核数据路径204或数据路径206的共享存储器104和向量存储器106的存储器位置之间移动数据块(例如,向量),以及b)使用数据路径222、共享核数据路径224或数据路径226的共享存储器104和向量存储器108的存储器位置之间移动数据块(例如,向量)。在一些实施方式中,共享存储器104可以可替选地被称为共享cmem 104。
54.如本文档中所使用的,cmem通常对应于提供有用的配置作为数据缓冲器和片上sram存储的物理连续存储器(cmem)块。如下文更详细描述的,在系统100中,cmem资源块物理地分布在硬件电路101处并且被布置为用于在可以被配置为硬件加速器或其他类型的专用处理器的处理器核的组件之间共享。共享核数据路径204和224中的每一个都是能够指示在共享数据路径上可能发生的静态争用以用于向量数据在系统中穿过这些点的移动的示例节点。
55.如图2的示例所示,硬件电路101和系统100被配置为包括多个加载-存储数据路径202、206、多个cmem加载数据路径208、214、228、234和多个cmem存储数据路径215、235。硬件电路101和系统100还包括多个共享构架块210、230(如下所述)。在图2的示例中,数据路径202、222中的每一个能够被配置为用于响应于执行dma操作而路由数据(例如,向量或标量值)的数据路径、用于响应于执行cmem加载/存储操作而路由数据的数据路径,或两者。共享存储器104支持的dma操作和数据路径202、206、222和226能够用于参考某些存储器偏移和步幅参数在不同存储器结构之间移动数据。
56.例如,系统100被配置为使用共享存储器104来执行涉及将1兆字节的数据从存储器位置的一个集合移动到存储器位置的另一个集合并且具有偏移0x04的dma操作。共享存储器104和系统100可操作以在执行dma操作时支持各种步幅功能。例如,用于移动1兆字节数据的dma操作能够包括步幅操作以在相对于地址基础在每200千字节处插入地址间隔。
57.在一些实施方式中,步幅操作用于基于期望的读取序列来插入地址间隔,该期望
的读取序列在数据被移动到它的目的地位置之后,将在稍后被执行以读取1兆字节的数据。例如,1兆字节的数据块可以基于步幅操作来被存储,该步幅操作与将如何读取或检索数据以在神经网络的不同层或跨特定神经网络层的不同过滤器或权重集合进行处理相对应。
58.共享存储器104的控制单元201还被配置为使得各种加载-存储操作执行。例如,控制单元201生成控制信号以执行加载-存储操作,所述加载-存储操作在:a)使用数据路径202、共享核数据路径204或数据路径208(用于核105-1处的加载操作)的共享存储器104的存储器位置和共享构架块210的存储器位置之间移动各种数量的数据(例如,向量或向量值),以及b)使用数据路径222、共享核数据路径224或数据路径228(用于核105-2处的加载操作)的共享存储器104的存储器位置和共享构架块230的存储器位置之间移动各种数量的数据(例如,向量或向量值)。
59.类似地,能够生成控制信号以执行加载-存储操作,所述加载-存储操作在:a)使用数据路径202、共享核数据路径204或数据路径215(用于核105-1处的存储操作)的共享存储器104和向量寄存器110的存储器位置之间移动各种数量的数据(例如,向量或向量值),以及b)使用数据路径222、共享核数据路径224或数据路径235(用于核105-2处的存储操作)的共享存储器104和向量寄存器112的存储器位置之间移动各种数量的数据(例如,向量或向量值)。
60.现在参考共享存储器104的逻辑结构,如上所述,系统100被配置为向用户暴露至少两个编程接口以利用共享存储器104提供的数据传输功能。至少一个接口暴露可编程dma功能并且另一个接口暴露可编程cmem加载/存储功能,其中每个都能够表示共享存储器104的逻辑属性。出于加载/存储目的,共享存储器104逻辑地作为并行存储器暴露给向量存储器106、108。以这种方式,每个加载-存储数据路径可操作以提供附加的(或并行的)数据路径,用于将数据块或特定数据块移动通过存储器系统,诸如通过相应处理器核105-1、105-2或电路101的多个核的向量寄存器。例如,可以与dma操作同时对共享存储器104的存储器资源执行加载-存储操作。
61.更特别地,可以执行dma操作以使用dma数据路径206在共享存储器104和向量存储器106的存储器位置之间移动值向量,而与dma操作同时执行加载-存储操作以在共享存储器104和共享构架块210的存储器位置之间移动不同的值向量。类似的同时操作可以使用与处理器核105-1的资源对应的处理器核105-2的资源发生在处理器核105-2(或其他核)中。
62.相对于dma操作,使用共享存储器104的cmem资源执行的加载/存储操作能够表示共享存储器104的高性能功能,或使用共享存储器104的高性能方法。在一些实施方式中,控制单元201被配置为执行软件指令并生成控制信号,该控制信号使共享存储器104的存储器资源的第二部分充当用于执行加载/存储操作的软件控制的构架资源。
63.资源的第二部分能够由参考处理器核105-1的共享构架块210和参考处理器核105-2的共享构架块230表示。因此,共享构架块210、230中的每一个能够表示从共享存储器104的存储器资源的子集形成的软件控制的构架资源(或便笺)。在一些示例中,系统100的软件控制的构架资源被配置为管理从hbm 102到第一处理器核105-1或第二处理器核105-2的相应向量寄存器110或112的向量数据值的流动。
64.共享存储器104及其资源具有可唯一地配置为dma存储器的特性,例如,用于在诸如hbm 102或向量存储器106、108的存储器构造之间移动数据,而且还具有加载/存储存储
器用于将数据直接移动到每个处理器核105-1、105-2上的相应向量寄存器110、112中。共享存储器104的这些可配置方面允许它的资源和寻址被运行在核上的软件以细粒度调度。例如,共享存储器104能够是软件管理(不是硬件管理)的sram资源,其中处理器核的编译器特定地管理其存储器的寻址,包括在共享存储器104的存储器地址位置处可能存在或可能不存在的数据类型。
65.在一些实施方式中,共享存储器104的软件控制的构架资源被配置作为沿着包括cmem存储数据路径215或235的处理器核的加载-存储数据路径的加载部分的先进先出(fifo)存储器结构(例如,共享构架块210或230),用于路由在共享cmem 203或hbm 102处存储的数据。fifo存储器结构被配置为,在将值的集合路由到第一处理器核105-1或第二处理器核105-2的相应向量寄存器110、112之前,临时地存储数据值的集合持续阈值数量的处理器周期。fifo存储器结构用于减轻可能由具有特定加载时延的cmem加载操作导致的寄存器压力和调度复杂性。
66.在一些实施方式中,时钟周期的阈值数量是基于示例高时延(例如,50个周期)的cmem加载操作来确定的,该示例高时延(例如,50个周期)的cmem加载操作可能导致与保留给定寄存器用于全部50个周期相关联的寄存器压力和调度复杂性。为了抵消或减轻关于寄存器压力的担忧,使用共享存储器104的资源在硬件电路100处物理地实例化cmem结果fifo(“crf”)。在图2的示例中,第一crf由处理器核105-1的构架块210表示,而第二crf由构架块230表示。每个crf允许将示例cmem加载操作分成至少两个阶段:i)cmem到crf阶段,其中cmem地址信息被提供,以及ii)crf到寄存器阶段,其中向量寄存器目标被提供。
67.例如,共享构架块210、230中的每一个被配置为接收数据值(例如,标量或向量值)并且临时地存储数据值持续阈值数量的处理器周期。在处理器核105-1中,数据值沿着将构架块210连接到共享存储器104的其他存储器位置的加载数据路径208(和共享核数据路径204)被路由到共享构架块210。在处理器核105-2中,数据值沿着将构架块230连接到共享存储器104的其他存储器位置的加载数据路径228(和共享核数据路径224)被路由到共享构架块230。
68.共享构架块210被配置为响应于临时地存储数据值持续阈值数量的处理器周期而将数据值提供给处理器核105-1的向量寄存器110。同样,共享构架块230被配置为响应于临时地存储数据值持续阈值数量的处理器周期,将数据值提供给处理器核105-2的向量寄存器112。
69.系统100被配置为在相同周期发出多个cmem加载指令。例如,系统100能够发出使用数据路径208(或214)和共享构架块210执行的cmem加载指令,并且在相同周期,对向量存储器106发出使用数据路径212执行的加载。在一些示例中,从软件控制的视角来看,遍历资源210和向量寄存器110之间的数据路径214的cmem加载操作以及遍历向量存储器106和向量寄存器110之间的数据路径212的vmem加载操作每一个能够在相同的周期发出和执行。在一些实施方式中,相对于先前设计,向量寄存器110、112适应于包括允许向量寄存器110、112接收同时加载操作的附加端口。
70.例如,向量寄存器112被配置为包括附加端口,所述附加端口允许寄存器在处理器核105-2处执行的同时加载操作期间从向量存储器108和共享构架块230接收相应的向量有效载荷。在一些示例中,加载到向量寄存器110、112中的每一个的有效载荷的单个数据块基
于在单个加载操作期间可以被移动到向量寄存器110或向量寄存器112的多达128个数据项,涉及128个分立加载。
71.共享存储器104的cmem加载/存储功能性能够提供相对于先前设计更高的峰值性能,因为它不需要通过向量存储器宏来路由数据。例如,加载和存储(沿数据路径215、235)能够部分地由于向量寄存器110、112处的附加可用寄存器端口与向量存储器加载和存储并行执行。
72.在一些实施方式中,系统100包括示例加载-存储接口,该示例加载-存储接口向分片构架块210、230中的每一个中提供并行接口,所述并行接口绕过在通过向量存储器106、108遍历数据路径时可能存在的一些(或全部)带宽限制。此示例加载-存储接口能够有效地提供允许从示例工作负荷中提取附加性能的更高存储器带宽。例如,系统100被配置为使用共享存储器104的资源(例如,软件控制的构架资源)来执行各种加载/存储操作,其中可以执行加载/存储操作以绕过在处理器核处移动数据通过向量存储器。
73.例如,硬件电路101的组件能够与共享存储器104通信以从共享存储器104的存储器组或寄存器文件的单个地址位置读取数据。在一些示例中,存储在存储器中的单个地址的数据被读取,并且该单个数据块可以被移动到位于处理器核内的寄存器文件或构架块中。例如,单个数据块可以从共享cmem 104的地址位置读取,通过共享核数据路径224移动,并且移动到处理器核105-2中的共享构架块230的地址位置以供进一步处理。可以执行该操作以绕过经由向量存储器108将数据移动通过存储器系统,从而节省核105-2处的处理器时钟周期和连接到向量存储器108的数据路径处的带宽。
74.图3是示出与硬件电路101的示例矩阵计算单元通信的示例向量处理器的框图300。更特别地,在一些实施方式中,硬件电路101的示例张量处理器核302-1包括向量处理单元304(“向量处理器304”)和耦合到向量处理器304的矩阵计算单元308。类似地,硬件电路101的另一个张量处理器核302-2包括向量处理器306和耦合到向量处理器306的矩阵计算单元308。
75.通常,硬件电路101被配置为执行计算以生成用于神经网络层的输出。包括在电路101处的矩阵计算单元308和310中的每一个被配置为执行计算的子集以生成用于生成神经网络层的输出的累加值。在一些实施方式中,上述软件控制的构架资源(例如构架块210、230)被配置为管理与从hbm 102到矩阵计算单元308、310中的每一个的向量操作数相对应的数据流动。在一些情况下,操作数是由hbm 102提供的输入和权重。操作数可以基于使用向量处理器304或306的算术逻辑单元(alu)执行的数据操作被构造为向量阵列。
76.在图3的示例中,控制单元201生成控制信号以用于管理操作以从共享存储器104、向量存储器106、108和向量寄存器110、112的存储器位置检索(或读取)多个输入批次和权重的集合。检索的输入和权重可以通过神经网络层来处理,以基于在矩阵计算单元308、310处执行的计算来计算累加值。累加值可以在向量处理器304、306处被处理,以生成与神经网络层的输出相对应的激活值。由控制单元201生成的控制信号被用于将由向量处理器304、306生成的多个输出或输出激活的集合存储(或写入)到hbm 102或硬件电路101的其他存储器位置,以用于在一个或多个其他神经网络层进行处理。
77.图4示出了将共享存储器104耦合到硬件电路101处的相应处理器核302-1、302-2的一个或多个向量处理器304、306的示例有线连接400。有线连接400能够表示施加了某些
物理限制的物理结构,这些物理限制与给定硬件电路处可能可用的有线或数据总线连接的总数对应。例如,共享存储器104的第一cmem资源块402(bank_0)可以经由线路连接404耦合到对应的vpu资源块406。vpu资源406是诸如处理器核302-1中的向量处理器304的示例向量处理单元的存储器资源,例如向量寄存器或向量存储器。类似地,共享存储器104的第二cmem资源块412(bank_1)可以经由线路连接414耦合到对应的vpu资源块416。vpu资源416是诸如处理器核302-2中的向量处理器306的示例向量处理单元的存储器资源,例如,向量寄存器或向量存储器。在一些情况下,当给定的cmem资源块连接到两个独立核上的vpu块时,存在需要分开cmem资源和vpu块的约束。特别地,当cmem资源被配置用于连接到单独的核时,该约束要求cmem和vpu块跨硬件电路的物理空间分开。
78.在一些实施方式中,共享存储器104具有给定大小,并且共享存储器104的资源块和处理器资源必须存在于芯片或电路101的某些物理区域内。涉及在处理器核内或在处理器核之间移动数据的示例操作要求数据能够在阈值数量的处理器周期内遍历硬件电路101处的某一物理距离。由于共享存储器104的资源的一些部分驻留于核105-1、105-2之外,并且实现线路能够是昂贵的,因此移动数据用于dma操作的线路(例如,线路连接404、414)和从共享存储器104的资源到处理器核105的加载/存储操作是共享的。这些线路还可以被用于hbm 102和向量存储器106、108之间的dma操作。该有线连接的共享改进了带宽利用和效率。
79.在一些实施方式中,为了以服从特定工作负荷的方式节省布线,将数据从共享cmem 203路由到处理器核的资源的数据路径能够是将数据从处理器核的资源路由到共享cmem 203的数据路径宽度的2倍。因此,本文档中描述的技术提供了示例硬件布局选项,这些选项将实现共享存储器104的逻辑优势中的复杂性与电路101处的硬件组件的物理放置的有线连接和选项的数量的某些物理约束和限制进行了平衡。
80.图5是示出了用于使用图1的共享存储器来加速神经网络计算的示例过程500的流程图。过程500能够使用上述系统100来实现或执行。过程500的描述可以参考系统100的上述计算资源。过程500的步骤或动作可以通过程序化的固件或软件指令来实现,这些程序化的固件或软件指令可由本文档中描述的设备和资源的一个或多个处理器执行。在一些实施方式中,过程500的步骤与用于执行计算以使用被配置为实现神经网络的硬件电路来生成神经网络层的输出的方法对应。
81.现在参考过程500,数据从系统100的存储器被提供给系统的硬件电路(502)。例如,系统100将来自hbm 102的数据提供给硬件电路101。在一些实施方式中,数据包括用于生成神经网络层的输出的特定的数据值和指令。hbm 102能够表示与硬件电路101的张量处理器核交换数据通信的系统存储器或输入/输出(i/o)设备。例如,hbm 102可以与张量处理器核交换数据通信以将输入传递给张量核并接收由张量核生成的输出。
82.系统100使用第一处理器核的向量存储器将值向量存储在电路的第一处理器核处(504)。例如,系统100能够使用位于张量处理器核105-1中的向量存储器106的存储器地址位置来存储与将在神经网络层处理的输入批次对应的输入向量。向量存储器106被配置为响应于处理器核105-1从由hbm 102提供的输入数据识别或得出第一向量值来存储第一向量值。在一些实施方式中,向量存储器106响应于第一处理器核105确定由第一存储器提供的数据包括被指配存储在向量存储器106中的向量值的子集来存储第一向量值。
83.第一向量值可以直接从表示多维输入张量的数据值的各种元素中的元素集合来使用或得出。如上所述,多维输入张量可以作为输入数据从hbm 102提供。在一些实施方式中,第一向量值表示神经网络层的权重的集合,所述权重的集合是从由hbm 102提供的数据被获取、提取或者以其他方式得出。第一向量值响应于值被路由到包括向量存储器106的向量处理单元304,可以被存储在向量存储器106的存储器位置中。向量处理单元304和向量存储器106的每一个都能够作为处理器核105-1的一部分被包括。
84.由系统存储器提供的数据在电路中的共享存储器和电路的向量存储器之间路由(506)。例如,使用至少共享存储器104的dma数据路径206,将包括第一向量值的数据通信在共享存储器104和处理器核105-1的向量存储器106之间路由。更特别地,包括第一向量值的数据通信最初由hbm 102提供,并且然后使用共享存储器104的资源的第一部分在共享存储器104和向量存储器106之间路由。在一些示例中,第一向量值在向量存储器106和共享存储器104的特定部分(或子部分)之间路由。
85.共享存储器104的资源的第一部分被配置充当dma存储器单元,所述dma存储器单元可操作以执行dma类型操作来将数据加载到向量存储器106的存储器位置中。dma类型操作可以针对资源的第一部分的单独存储器地址位置来被执行,以获得向量值阵列。使用共享存储器104的dma数据路径206将向量值阵列路由到向量存储器106。
86.由系统存储器提供的数据在电路中的共享存储器和电路的相应向量寄存器之间路由(508)。例如,使用至少共享存储器104的加载-存储数据路径208、214,将包括第二向量值的数据通信在共享存储器104和处理器核105-1的向量寄存器110之间路由。更特别地,包括第二向量值的数据通信最初由hbm 102提供,并且然后使用共享存储器104的资源的第二部分在共享存储器104和向量寄存器110之间路由。在一些示例中,第二向量值在向量寄存器112和共享存储器104的特定部分(或子部分)之间路由。
87.在一些实施方式中,共享存储器104的资源的第二部分被配置充当软件控制的构架资源,所述软件控制的构架资源由共享存储器104的存储器资源的子集形成。此软件控制的构架资源被配置为:i)接收沿加载-存储数据路径208路由的数据值(例如,第二向量值);ii)临时地存储第二向量值持续阈值数量的处理器周期;iii)响应于临时地存储向量值持续阈值数量的处理器周期,将第二向量值提供给至少处理器核105-1的相应向量寄存器110。阈值数量能够是软件定义的阈值。例如,阈值数量能够在处理器的示例指令流中调度指令时由软件特别地定义。
88.共享存储器104可操作以将与第二向量值对应的向量值阵列加载到被包括在资源第二部分中的构架资源的存储器位置中。可以针对资源的第二部分的单独存储器地址位置来执行读取操作以获得与第二向量值对应的向量值阵列。使用例如共享存储器104的加载-存储数据路径214将这些向量阵列路由到向量寄存器110。可替选地,可以使用共享存储器104的加载-存储数据路径234将这些向量阵列路由到向量寄存器112。
89.系统100使用向量值的集合生成与神经网络层的输出对应的累加值(510)。例如,硬件电路101包括耦合到处理器核105-1的向量处理单元304的矩阵计算单元308。系统100使矩阵计算单元308使用被路由到矩阵计算单元308的相应的第一和第二向量值来生成多个累加值。在一些实施方式中,第一和第二向量值同时沿着电路的不同数据路径被路由到矩阵计算单元308。例如,能够分别使用加载-存储数据路径214和dma数据路径206将第一向
量值集合和第二向量值集合并行地路由到矩阵计算单元308。
90.本说明书中描述的主题和功能操作的实施例能够在包括在本说明书中公开的结构和它们的结构等效物,或它们中的一个或多个的组合的数字电子电路中、在有形体现的计算机软件或固件中、在计算机硬件中实现。本说明书中描述的主题的实施例能够实现为一个或多个计算机程序,即,编码在有形的非暂时性程序载体上的一个或多个计算机程序指令模块,用于由数据处理装置执行或者控制数据处理装置的操作。
91.可替代地或附加地,程序指令能够被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以对信息进行编码来传输到合适的接收器装置用于由数据处理装置执行。计算机存储介质能够是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备,或者它们中的一个或多个的组合。
92.术语“计算系统”涵盖用于处理数据的所有类型的装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。该装置能够包括专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。除了硬件之外,该装置还能够包括用于所讨论的计算机程序而创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
93.计算机程序(也可以被称为或描述为程序、软件、软件应用、模块、软件模块、脚本或代码)能够以任何形式的编程语言编写,包括编译或解释性语言,或声明性或过程性语言,并且它能够以任何形式部署,包括作为独立程序或作为模块、组件、子程序或其他适用于计算环境的单元。
94.计算机程序可以但不必与文件系统中的文件对应。程序能够存储在包含其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的、在专用于所讨论程序的单个文件中的、或者在诸如存储了一个或多个模块、子程序或部分代码的文件的多个协调文件中的一个或多个脚本。能够部署计算机程序以在位于一个站点或跨多个站点分布并通过通信网络互连的一个计算机或多个计算机上执行。
95.本说明书中描述的过程和逻辑流程能够由一个或多个可编程计算机执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能来实现。过程和逻辑流程也能够由专用逻辑电路来执行,并且装置也能够被实现为专用逻辑电路,所述专用逻辑电路例如是fpga(现场可编程门阵列)、asic(专用集成电路)或gpgpu(通用图形处理单元)。
96.适合于执行计算机程序的计算机包括,例如,能够基于通用或专用微处理器或两者、或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的一些元件是用于施行或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或者被可操作地耦合以从一个或多个用于存储数据的大容量存储设备(例如,磁、磁光盘或光盘)接收数据或向其传输数据或两者。然而,计算机不需要具有这样的设备。此外,计算机能够被嵌入到另一个设备中,例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器或便携式存储设备,例如,通用串行总线(usb)闪存驱动器,仅举几例。
97.适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,包括例如:半导体存储设备,如eprom、eeprom和闪存设备;磁盘,
如内部硬盘或可移动盘;磁光盘;以及cd rom和dvd-rom盘。处理器和存储器能够由专用逻辑电路补充或被包含在专用逻辑电路中。
98.为了提供与用户的交互,本说明书中描述的主题的实施例能够在计算机上实现,所述计算机具有用于向用户显示信息的显示设备——例如lcd(液晶显示)监视器——以及用户能够通过其向计算机提供输入的键盘和定点设备,例如鼠标或轨迹球。也能够使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈能够是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机能够通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从web浏览器收到的请求而将网页发送到用户客户端设备上的web浏览器。
99.本说明书中描述的主题的实施例能够在计算系统中实现,该计算系统包括例如作为数据服务器的后端组件,或者包括例如应用服务器的中间件组件,或者包括例如具有图形用户界面或web浏览器的、用户能够通过其与本说明书中描述的主题的实施方式进行交互的客户端计算机的前端组件,或者一个或多个这样的后端、中间件或前端组件的任何组合。系统的组件能够通过例如通信网络的数字数据通信的任何形式或介质来互连。通信网络的示例包括局域网(“lan”)和广域网(“wan”),例如互联网。
100.计算系统能够包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络进行交互。客户端和服务器的关系通过在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生的。
101.虽然本说明书包含许多特定的实施细节,但这些不应被解释为对任何发明的范围或可能要求保护的内容的限制,而是对可能特定于特定发明的特定实施例的特征的描述。在本说明书中在单独实施例的上下文中描述的某些特征也能够在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也能够在多个实施例中单独地或以任何合适的子组合来实施。此外,尽管特征可能在上面被描述为在某些组合中起作用并且甚至最初如此要求保护,但在一些情况下,来自要求保护的组合的一个或多个特征能够从组合中删除,并且要求保护的组合可以指向子组合或子组合的变体。
102.类似地,虽然在附图中以特定顺序描述了操作,但这不应被理解为要求以所示特定顺序或按依次顺序执行这样的操作,或者执行所有所示操作,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中各种系统模块和组件的分离不应被理解为在所有实施例中都要求这样的分离,并且应当理解的是,所描述的程序组件和系统通常能够被一起集成在单个软件产品中,或者被封装在多个软件产品中。
103.已经描述了本主题的特定实施例。其他实施例在以下权利要求的范围内。例如,权利要求中记载的动作能够以不同的顺序执行并且仍然达到期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或依次顺序来达到期望的结果。在某些实施方式中,多任务和并行处理可能是有利的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1