首页> 中国专利> 用于执行神经网络模型的存储器架构中的数据布局有意识处理

用于执行神经网络模型的存储器架构中的数据布局有意识处理

摘要

本公开涉及用于执行神经网络模型的支持存储器中处理(PIM)的设备。该支持PIM的设备包括存储块组件,该存储块组件包括第一存储块阵列;与所述第一存储块阵列相邻的第二存储块阵列;与所述第一存储块阵列和所述第二存储块阵列相关联的多个第一数据链路,其中所述多个第一数据链路中的每个数据链路通信地连接分别来自所述第一存储块阵列和第二存储块阵列的两个相应的存储块;和,通信地连接到所述多个第一数据链路的第二数据链路,来自所述第一存储块阵列的第一存储块的数据可经由所述多个第一数据链路和所述第二数据链路传输到所述第二存储块阵列的第二存储块。

著录项

  • 公开/公告号CN112906877A

    专利类型发明专利

  • 公开/公告日2021-06-04

    原文格式PDF

  • 申请/专利权人 阿里巴巴集团控股有限公司;

    申请/专利号CN202011305314.4

  • 发明设计人 周铭轩;张伟丰;陈国洋;

    申请日2020-11-19

  • 分类号G06N3/063(20060101);

  • 代理机构11644 北京清源汇知识产权代理事务所(特殊普通合伙);

  • 代理人冯德魁;张艳梅

  • 地址 英属开曼群岛大开曼资本大厦一座四层847号邮箱

  • 入库时间 2023-06-19 11:14:36

说明书

背景技术

机器学习已广泛用于自然语言处理、语音识别、图像分类等各个领域。在机器学习中,神经网络模型一直在不断增加,并且变得越来越复杂。随着神经网络模型(尤其是深度神经网络(DNN)模型)变得庞大而复杂,具有数百个层和数百万个权重,执行神经网络模型不仅计算量大,而且占用大量存储器。因为常规的冯·诺依曼体系结构具有单独的处理单元和存储单元,所以当在常规的冯·诺依曼体系结构上处理神经网络模型时,在处理单元和存储单元之间会发生大量数据传输,这成为处理神经网络模型的瓶颈。

使得能够在存储单元中执行计算的存储器中处理(Processing In Memory,PIM)技术已经出现,其通过减少处理单元与存储单元之间的数据移动来解决此类问题。但是,适合于在PIM架构上执行神经网络模型的数据或处理器对齐对于减少存储器单元内部不必要的数据移动,提高存储器利用率并提高整体性能非常重要。

发明内容

本公开的实施例提供了用于执行神经网络模型的支持存储器中处理(PIM)的设备。该支持PIM的设备包括存储块组件,该存储块组件包括第一存储块阵列;与所述第一存储块阵列相邻的第二存储块阵列;与所述第一存储块阵列和所述第二存储块阵列相关联的多个第一数据链路,其中所述多个第一数据链路中的每个数据链路通信地连接分别来自所述第一存储块阵列和第二存储块阵列的两个相应的存储块;和,通信地连接到所述多个第一数据链路的第二数据链路,来自所述第一存储块阵列的第一存储块的数据可经由所述多个第一数据链路和所述第二数据链路传输到所述第二存储块阵列的第二存储块。

本公开的实施例还提供一种用于在包括存储器块组件的支持PIM的设备上执行神经网络模型的方法,该方法包括:在存储块组件中的第一存储块阵列的第一存储块上处理神经网络模型的第一操作;经由将所述存储块组件中的所述第一存储块和第二存储块通信地连接的数据链路,将输出数据从存储块组件中的所述第一存储块传输到第二存储块阵列的所述第二存储块;和基于所述输出数据在所述第二存储块上处理神经网络模型的第二操作。

本公开的实施例还提供了一种非暂时性计算机可读存储介质,其存储指令集,该指令集可由支持存储器中处理(PIM)的终端中的至少一个处理器执行以使该终端执行以下方法:在存储块组件中的第一存储块阵列的第一存储块上处理神经网络模型的第一操作;经由将所述存储块组件中的所述第一存储块和第二存储块通信连接的数据链路,将输出数据从存储块组件中的所述第一存储块传输到第二存储块阵列的所述第二存储块;和基于所述输出数据在所述第二存储块上处理神经网络模型的第二操作。

本公开的实施例还提供了一种终端,包括:主机单元;和支持存储器中处理(PIM)的设备,所述支持存储器中处理的设备通信连接到所述主机单元,所述支持存储器中处理(PIM)的设备包括:存储块组件,所述存储块组件包括:第一存储块阵列;与所述第一存储块阵列相邻的第二存储块阵列;与所述第一存储块阵列和所述第二存储块阵列相关联的多个第一数据链路,其中所述多个第一数据链路中的每个数据链路可通信地连接分别来自所述第一存储块阵列和第二存储块阵列的两个相应的存储块;和通信地连接到所述多个第一数据链路的第二数据链路,其中来自所述第一存储块阵列的第一存储块的数据可经由所述多个第一数据链路和第二数据链路传输到所述第二存储块阵列的第二存储块。

所公开的实施例的附加特征和优点将在以下描述中部分地阐述,并且部分地将从描述中变得显而易见,或者可以通过实施例的实施而获知。公开的实施例的特征和优点可以通过权利要求中阐述的要素和组合来实现和获得。

应当理解,前面的一般描述和下面的详细描述都仅仅是示例性和说明性的,并且不限制所要求保护的公开实施例。

附图说明

图1示出了与本公开的实施例一致的示例性存储器中处理块配置。

图2A示出了与本公开的实施例一致的示例性神经网络加速器架构。

图2B示出了与本公开的实施例一致的并入了神经网络加速器架构的示例性云系统的示意图。

图3示出了与本公开的实施例一致的示例性存储区块(tile)配置。

图4示出了与本公开的实施例一致的在存储区块中的示例性存储块组件。

图5A示出了与本公开的实施例一致的用于记录数据传输的示例性数据传输表。

图5B示出了与本公开的实施例一致的用于记录存储块状态的示例性块表。

图5C示出了与本公开的实施例一致的用于存储块的示例性状态转变周期。

图6A示出了与本公开的实施例一致的神经网络模型的示例。

图6B示出了与本公开的实施例一致的用于执行图6A的神经网络模型的存储块组件中的示例性节点映射。

图6C示出了与本公开的实施例一致的在执行图6A的神经网络模型期间存储块组件中的存储块的状态转变。

图7示出了与本公开的实施例一致的用于在图2A的神经网络加速器架构上训练神经网络模型的示例性流程图。

具体实施方式

现在将详细参考示例性实施例,其示例在附图中示出。以下描述参考附图,其中除非另外表示,否则不同附图中的相同数字表示相同或相似的元件。在示例性实施例的以下描述中阐述的实施方式并不代表与本发明一致的所有实施方式。相反,它们仅是与如所附权利要求中所述的与本发明有关的方面一致的装置和方法的示例。

图1示出了与本公开的实施例一致的示例性存储器中处理(PIM)块配置。PIM块100包括存储单元阵列110、块控制器120、块行驱动器131和块列驱动器132。尽管将使用ReRAM(电阻式随机存取存储器)作为示例来示出一些实施例,但是应当理解,可以基于包括DRAM(动态随机存取存储器)、SRAM(静态随机存取存储器)、ReRAM等的各种存储技术来实现根据本公开实施例的PIM块100。

存储单元阵列110可以包括m个行r

块行驱动器131和块列驱动器132可以向诸如m个行r

块控制器120可以包括用于存储指令的指令寄存器。在一些实施例中,指令可以包括以下指令:块行驱动器131或块列驱动器132何时向对应的列或行提供信号,将要提供哪些信号等等。块控制器120可以将寄存器中存储的指令解码为由块行驱动器131或块列驱动器132使用的信号。

PIM块100可以进一步包括行感测放大器141或列感测放大器142,用于从存储单元读出数据或将数据存储到存储单元中。在一些实施例中,行感测放大器141和列感测放大器142可以存储用于缓存的数据。在一些实施例中,PIM块100可以进一步包括DAC 151(数模转换器)或ADC 152(模数转换器),以在模拟域和数字域之间转换输入信号或输出数据。在本公开的一些实施例中,因为可以直接对存储单元中存储的值执行PIM块100中的计算,而无需读出值或不使用任何感测放大器,可以省略行感测放大器141或列读感测大器142。

根据本公开的实施例,PIM块100通过使用存储器作为多个SIMD(单指令,多数据)处理单元来实现并行计算。PIM块100可以支持包括整数和浮点值的按位运算、加、减、乘、除的计算运算。例如,在图1的存储单元阵列110中,第一列c

在一些实施例中,一个矢量可以存储在多个列中,以表示元素的n位值。例如,其元素具有2位值的一个向量可以被存储在两列存储单元中。在一些实施例中,当向量的长度超过构成存储块的存储单元阵列110的行数时,可以将向量存储在多个存储块中。多个存储块可以被配置为并行计算不同的向量段。尽管在实施例中PIM架构执行计算操作而不使用除存储单元之外的算术逻辑,但是本公开还可应用于包括用于在PIM架构中执行算术运算的算术逻辑的PIM架构。

PIM体系结构可以用于处理神经网络模型,以解决处理单元和存储单元之间的数据移动开销。如前所示,还可以将计算操作(例如加法,乘法等)作为PIM体系结构中的按列矢量计算来执行,重要的是在处理存储器中的此类操作之前正确对齐数据,以减少存储器中不必要的数据移动,并最大程度地利用PIM体系结构的计算能力。所公开的实施例提供了一种PIM加速器架构,该PIM加速器架构在处理神经网络模型时能够进行有效的数据对齐。所公开的实施例提供了一种数据布局意识的PIM加速器架构,用于提高神经网络模型的执行效率。

图2A示出了与本公开的实施例一致的示例性神经网络加速器架构200。在本公开的上下文中,神经网络加速器也可以被称为机器学习加速器或深度学习加速器。在一些实施例中,加速器体系结构200可以被称为神经网络处理单元(NPU)架构200。如图2A所示,加速器架构200可以包括PIM加速器210,接口212等。应当理解,PIM加速器210可以基于所传送的数据来执行算法操作。

PIM加速器210可以包括一个或更多个存储区块2024。在一些实施例中,存储区块2024可以包括用于数据存储和计算的多个存储块。存储器块可以被配置为对所传达的数据执行一个或更多个操作(例如,乘法、加法、乘累加等)。在一些实施例中,包括在存储区块2024中的每个存储块可以具有与图1所示的PIM块100相同的配置。由于PIM加速器210的分层设计,所以PIM加速器210可以提供通用性和可伸缩性。PIM加速器210可以包括任何数量的存储区块2024,并且每个存储区块2024可以具有任何数量的存储块。

接口221(例如PCIe接口)用作(通常是)芯片间总线,在PIM加速器210和主机单元220之间提供通信。芯片间总线将PIM加速器210与其他设备(例如片外存储器或外围设备)连接。在一些实施例中,加速器体系结构200还可包括协助在主机存储器221和PIM加速器210之间传送数据的DMA单元(未示出)。另外,DMA单元可协助在多个加速器之间传送数据。DMA单元可以允许片外设备访问片内和片外存储器,而不会引起主机CPU中断。因此,DMA单元还可以生成存储器地址并启动存储器读或写周期。DMA单元还可以包含一个或更多个处理器可以读写的几个硬件寄存器,包括存储器地址寄存器,字节计数寄存器,一个或更多个控制寄存器以及其他类型的寄存器。这些寄存器可以指定源、目的地、传输方向(从输入/输出(I/O)设备读取或写入I/O设备)、传输单元的大小、和/或一次突发传输的字节数中的某些组合。应当理解,加速器架构200可以包括第二DMA单元,其可以用于在其他加速器架构之间传输数据,以允许多个加速器架构直接通信而不涉及主机CPU。

尽管图2A的加速器架构200被解释为包括具有存储器块(例如,图1的PIM存储器块100)的PIM加速器210,但是应当理解,所公开的实施例可以应用于加速某些应用(例如深度学习)的支持算术运算的任何类型的存储器块。

加速器架构200也可以与主机单元220通信。主机单元220可以是一个或更多个处理单元(例如X86中央处理单元)。在一些实施例中,PIM加速器210可以被认为是主机单元220的协处理器。

如图2A所示,主机单元220可以与主机存储器221相关联。在一些实施例中,主机存储器221可以是与主机单元220相关联的集成存储器或外部存储器。主机存储器221可以是本地或全局存储器。在一些实施例中,主机存储器221可以包括主机磁盘,该主机磁盘是被配置为为主机单元220提供附加存储器的外部存储器。主机存储器221可以是双倍数据速率同步动态随机存取存储器(例如,DDR SDRAM)等。与用作高级缓存的PIM加速器210的片上存储器相比,主机存储器221可配置为以较低的访问速度存储大量数据。可以将存储在主机存储器221中的数据传送到PIM加速器210,以用于执行神经网络模型。

在一些实施例中,具有主机单元220和主机存储器221的主机系统可以包括编译器(未示出)。编译器是一种程序或计算机软件,用于将以一种编程语言编写的计算机代码转换为指令以创建可执行程序。在机器学习应用程序中,编译器可以执行各种操作,例如,预处理、词法分析、解析、语义分析、输入程序到中间表示的转换、代码优化和代码生成或其组合。

在一些实施例中,编译器可以将一个或更多个命令推送到主机单元220。基于这些命令,主机单元220可以将任意数量的任务分配给一个或更多个存储器区块(例如,存储器区块2024)或处理元件。一些命令可以指示DMA单元将指令和数据从主机存储器(例如,图2A的主机存储器221)加载到加速器(例如,图2A的PIM加速器210)中。指令可以被加载到分配有相应任务的每个存储区块(例如,图2A的存储区块2024),并且一个或更多个存储区块可以处理这些指令。

应当理解,前几个指令可以指示将来自主机存储器221的数据加载/存储到存储区块的一个或更多个本地存储器中。然后,每个存储区块可以启动指令流水线,该指令流水线包括从本地存储器中获取指令(例如,经由获取单元)、解码指令(例如,经由指令解码器)以及生成本地存储器地址(例如,对应于操作数)、读取源数据、执行或加载/存储操作,然后写回结果。

图2B示出了与本公开的实施例一致的并入了神经网络加速器架构的示例性云系统的示意图。如图2B所示,云系统230可以具有提供人工智能(AI)功能的云服务,并且可以包括多个计算服务器(例如232和234)。在一些实施例中,计算服务器232可以例如并入图2A的神经网络加速器架构200。为了简化和清楚起见,以简化的方式在图2B中示出神经网络加速器架构200。

在神经网络加速器架构200的帮助下,云系统230可以提供图像识别、面部识别、翻译、3D建模等扩展的AI功能。应当理解,神经网络加速器架构200可以以其他形式部署到计算设备。例如,神经网络加速器架构200也可以被集成在计算设备中,例如智能电话、平板电脑和可穿戴设备。

图3示出了与本公开的实施例一致的示例性存储区块配置。存储器区块300可包括存储器块组件310、控制器320、行驱动器331、列驱动器332和全局缓冲器340。

存储块组件310可以包括以与本公开的实施例一致的二维网格布置的多个存储块,这将参照图4进行详细说明。

控制器320可以经由行驱动器331、列驱动器332和全局缓冲器340向存储块组件310中的每个存储块提供命令。行驱动器331连接到存储块组件310中存储块的每一行,和列驱动器332连接到存储块组件310中的存储块的每一列。在一些实施例中,每个存储块中包括的块控制器(例如,图1中的块控制器120)可以被配置为经由行驱动器331或列驱动器332来接收命令,并向块行驱动器(例如,图1中的块行驱动器131)和块列驱动器(例如,图1中的块列驱动器132)发出信号以在存储器中执行相应的操作。根据本公开的实施例,存储块可以通过使用存储块组件310的存储块中的块控制器来独立地执行不同的操作,因此可以执行块级并行处理。块控制器可以在相应的存储块中按行和按列排列的存储单元之间有效地传输数据。

在一些实施例中,全局缓冲器340可以用于在存储块组件310中的存储块之间传输数据。例如,当在存储块组件310中将数据从一个存储块传输到另一存储块时,控制器320可以使用全局缓冲器340。根据本公开的一些实施例,全局缓冲器340可以被存储块组件310中的所有存储块共享。全局缓冲器340可以被配置为存储用于每个存储块的命令以处理在处理神经网络模型中所分配的任务。在一些实施例中,控制器320被配置为经由行驱动器331和列驱动器332将存储在全局缓冲器340中的命令发送到相应的存储块。在一些实施例中,可以从主机单元(例如,图2A的主机单元220)传送这样的命令。全局缓冲器340可以被配置为存储和发送用于处理分配给存储块的任务的数据。在一些实施例中,可以从主机单元(例如,图2A的主机单元220)或存储块组件310中的其他存储块传送存储在全局缓冲器340中并从全局缓冲器340发送的数据。在一些实施例中,控制器320被配置为将存储块组件310中的存储块中的数据存储到全局缓冲器340中。在一些实施例中,控制器320可以在一个周期中将存储块组件310中的一个存储块的整个行的数据接收并存储到全局缓冲器340中。类似地,控制器320可以在一个周期中将整个行的数据从全局缓冲器340发送到另一存储块。

现在参考图4,图4示出了与本公开的实施例一致的在存储区块300中的示例性存储块组件310。存储器块组件310可以包括多个存储器块410、多个开关420和多个选择器430。

根据本公开的实施例,可以将用于在PIM架构中处理神经网络模型的操作转换为存储器中按列向量计算。存储器中按列向量计算,某个神经网络层或神经网络操作的输出数据可以作为一组按列向量存储在存储块410中。存储块组件310可以被配置为支持或便于按列向量计算,以便在执行神经网络模型时最小化存储块组件310内不必要的数据移动并最大化存储利用率。在一些实施例中,存储块组件310中的多个存储块410可以互连以便于存储块之间的数据移动,这使得存储块组件310对于处理矢量计算是合适且有效的。多个存储块410可以布置在2D网格中。在一些实施例中,可以在存储块组件310中以M行和N列来布置多个存储块410,其中M和N是大于1的自然数。每个存储块410可以位于每个行和列的交点处。尽管图4作为示例示出了12个存储块410_11至410_34以3行和4列布置,但是应当理解,存储块组件310可以具有任何数量的存储块并且可以以任何方式布置。在一些实施例中,每个存储块410可以是PIM块(例如,图1的PIM块100)。在一些实施例中,存储块410是用于执行各种存储器中操作的基本计算单元。

根据本公开的实施例,行数据链路451互连多个存储块410中的同一行中的两个相邻存储块。如图4所示,在第一行中相邻放置的第一存储块410_11和第二存储块410_12通过行数据链路451_1连接,并且在第二行中相邻放置的第五存储块410_21和第六存储块410_22通过行数据链路451_2连接。类似地,同一行中的两个相邻存储块可以通过它们自己的行数据链路互连。

根据本公开的实施例,存储块组件310还可以包括列数据链路,该列数据链路连接位于多个存储块410中的两个相邻的存储块列之间的多个数据链路。如图4所示,两个列数据链路452_1和452_2连接位于存储块410_11至410_31的第一列与存储块410_12至410_32的第二列之间的三个行数据链路451_1至451_3。在一些实施例中,经由存储块的两个相邻列之间的列数据链路452和行数据链路451,存储块的两个相邻列中的一个存储块列可以与另一存储块列共享数据。例如,列数据链路452_1或452_2通过与行数据链路451_1至451_3协作,使存储块410_11至410_31的第一列能够与存储块410_12至410_31的整个第二列共享数据。

根据本公开的实施例,可以为每个行数据链路451提供开关420。例如,可以为行数据链路451_1提供第一开关420_1和第二开关420_2,以及为行数据链接451_2提供第三开关420_3和第四开关420_4。在一些实施例中,每个开关420被配置为打开或关闭去往/来自相邻存储块到同一行中的开关420去往/来自相应数据链路451的数据路径。例如,当第一开关420_1被接通时。从第一存储块410_11到行数据链接451_1的数据路径是打开的。在该示例中,可以通过行数据链路451_1、451_2和451_3以及列数据链路452_1和452_2来传输来自第一存储块410_11的数据。在同一示例中,当第二开关420_2被接通时,从行数据链路451_1到第二存储块410_12的数据路径打开。在该示例中,通过行数据链路451_1、451_2和451_3以及列数据链路452_1和452_2共享的数据可以被传送到第二存储块410_12。

根据本公开的一些实施例,为同一列中的多个开关提供选择器430。例如,为第一列的开关420_1、420_3和420_5提供选择器430_1,为第二列的开关420_2、420_4和420_6提供选择器430_2。在一些实施例中,选择器430可以被配置为在对应列中的多个开关之中选择要接通的开关。例如,选择器430_1可以被配置为在第一列中的多个开关420_1、420_3和420_5中选择开关以导通,并且选择器430_2可以被配置为在第二列的多个开关420_2、420_4和420_6中选择开关以导通。

当需要将来自第一存储块410_11的数据传输到第十存储块410_32时,选择器430_1可以选择第一开关420_1接通,选择器430_2可以选择第六开关420_6接通。在该示例中,从第一存储块410到行数据链路451_1的数据路径通过导通第一开关420_1而打开,并且来自第一存储块410_11的数据可通过两个列数据链路452_1和452_2以及行数据链路451_1、451_2和451_3经由第二列的存储块410_12、410_22和410_32访问。因为仅第六开关420_6被选择为导通,并且因此从行数据链路451_3到第十存储块410_32的数据路径被断开,所以来自第一存储块410的数据可以被传送到第十存储块410_32。

根据本公开的一些实施例,可以支持一个存储块到多个存储块的数据传输。控制从行数据链路451到相邻存储块410的数据路径的选择器430可以一次选择一个以上的开关(例如,在一个周期中)以将数据传输到多个存储块410。例如,在上面的示例中,选择器430_2可以选择第二开关420_2和第六开关420_6在同一周期中将数据从第一存储块410_11传输到两个存储块410_12和410_32。在本公开中,将说明在一个周期中选择一个开关的实施例。在这些实施例中,可以在多个周期内执行从一个存储块到许多存储块的数据传输(也称为“一对多”数据传输)。例如,在以上示例中,选择器430_2可以在第一周期中选择第二开关420_2,并且在第二周期中选择第六开关420_6,而选择器430_1在第一周期和第二周期中选择第一开关420_1,以将数据从第一存储块410_11传输到两个存储块410_12和410_32。

根据一些实施例,当将数据从一个存储块传输到另一存储块时,存储在传输存储块的存储单元的一列中的值可以存储在接收存储块的存储单元的一行中。例如,当数据从第一存储块410_11传输到第十存储块410_32时,可以将存储在第一存储块410_11存储单元(例如,存储输出矢量的存储单元的列)的一列中的值存储在第十存储块410_32中的存储单元的一行。在一些实施例中,可以在一个周期中将来自存储块(例如410_11)中的存储单元的整个列的数据传输到一个或更多个相邻的存储块(例如410_12和410_32)。在一些实施例中,传输等待时间可以取决于向量中每个元素的大小。

如上所述,可以将用于在PIM体系结构中处理神经网络模型的操作转换为存储器中的按列矢量计算。存储器中按列向量计算,某个神经网络层或神经网络操作的输出数据可以作为一组按列向量存储在存储器块中。根据本公开的一些实施例,全局缓冲器340可以适合于传输存储在存储单元的一行中的数据,并且当存储在存储单元一行中的整个数据在一个周期中移动时可以显示最佳性能。通过全局缓冲器340传输逐列向量可能需要针对向量的每个元素顺序传输。通过与所有存储块410共享的全局缓冲器340移动数据可能导致严重的冲突,这可能会降低系统吞吐量。根据本公开的实施例,经由数据链路451和452,可以在不使用全局缓冲器340的情况下执行相邻存储块之间的数据传输,这改善了相邻存储块之间的数据传输性能以及在执行PIM加速器210上的神经网络模型时的整体吞吐量。

根据本公开的实施例,存储块组件310可以进一步包括用于在非相邻存储块410之间传输数据的传输缓冲器440。在一些实施例中,可以将传输缓冲器440提供给存储块的列。例如,可以将第一传输缓冲器440_1提供给存储块410_11、410_21和410_31的第一列,可以将第二传输缓冲器440_2提供给存储块410_12、410_22和410_32的第二列,可以将第三缓冲器440_3提供给存储块410_12、410_23和410_33的第三列,并且可以将第四传输缓冲器440_4提供给存储块410_14、410_24和410_34的第四列。与存储块相似,行数据链路451_4在两个相邻的传输缓冲器440_1和440_2之间延伸,并且两个列数据链路452_1和452_2在存储块的第一列与存储块的第二列之间延伸至行数据链路451_4。在一些实施例中,传输缓冲器440可以仅具有行缓冲器以将数据存储在存储器单元的一行中。当需要将数据从第一列中的第一存储块410_11传输到第三列中的第三存储块410_13时,在第一周期中选择器430_1可以选择第一开关420_1接通,选择器430_2可以选择第八开关420_8接通。在该第一周期中,来自第一存储块410_11的数据可以被存储在第二传输缓冲器440_2的行缓冲器中。在第二周期中,选择器430_3可以选择第15个开关420_15来接通,选择器430_4可以选择第10个开关420_10来接通,然后将存储在第二传输缓冲器440_2中的数据传输到第三存储块410_13中。

虽然图4示出了第一传输缓冲器440_1和第四传输缓冲器440_4以及第七开关420_7和第24开关420_24,但是在一些实施例中可以省略那些元件,因为第一传输缓冲器440_1不提供要传输的数据并且第四传输缓冲器440_4不成为数据传输的最终目的地。根据本公开的实施例,经由传输缓冲器440,可以在不使用全局缓冲器340的情况下执行非相邻存储块之间的数据传输,这还提高了非相邻存储块之间的数据传输性能以及在PIM加速器210上执行神经网络时的整体吞吐量。根据本公开的一些实施例,非相邻存储块之间的数据传输可以花费H个周期,其中H是两个非相邻存储块之间的列差。例如,当数据从第一列中的第一存储块410_11传输到第三列中的第三存储块410_13时,数据传输可能需要2个周期(例如,第一个周期从第一存储块410_11到第二传输缓冲器440_2和第二周期从第二传输缓冲器440_2到第三存储块410_13)。当由于数据大小而导致从第一存储块410_11到第二传输缓冲器440_2以及从第二传输缓冲器440_2到第三存储块410_13的每次传输需要C个周期时,数据传输总共可以花费H*C个周期。

在一些实施例中,可以在数据块组件310中通过行和列数据链路451和452或传输缓冲器440在一个方向上传输数据。例如,在图4的存储器块组件310中,可以在图4的数据块组件310中通过行和列数据链路451和452或传输缓冲器440将数据从左侧传送到右侧(即,从第一列到第二列的方向)。当数据需要在其他方向上传输时,例如从右侧到左侧的方向或与列方向平行的方向,可以经由全局缓冲器340来执行这种数据传输。例如,当将数据从一个存储块(例如410_11)移动到与该一个存储块位于同一列中的另一存储块(410_21)时,控制器320可以被配置为经由全局缓冲器340执行数据传输。当将数据从一个存储块(例如410_12)移动到另一存储块(例如410_11)时,控制器320可以被配置为经由全局缓冲器340执行这种数据传输。尽管在实施例中已经解释了在图4的存储块组件310中数据从左侧传输到右侧,但是应当理解,可以实现本公开的实施例,使得可以沿任何其他方向传送数据。

根据本公开的实施例,神经网络模型可以被映射到多个存储块410,并且存储块可以以流水线方式处理对应的任务,例如训练或推理,以最大化系统吞吐量。在一些实施例中,图3的存储区块300可包括指令存储器350,该指令存储器350被配置为以流水线方式在存储器块组件310中存储用于执行神经网络模型的指令。指令存储器350可以在存储器块组件310中存储计算或存储器块之间的数据移动的指令。控制器320可以被配置为访问指令存储器350以检索存储在指令存储器350中的指令。

指令存储器350可以被配置为具有分配给每个存储块的单独的指令段。在一些实施例中,可以将分配给相应存储块410的指令段划分为多个部分,例如,包括RECEIVE部分,COMPUTE部分和SEND部分的三个部分。RECEIVE部分可以存储加载数据的指令,该数据用于分配给相应存储块410的处理任务。可以从其他存储块410,传输缓冲器440,全局缓冲器340或主机单元220传输数据。例如,关于数据传输自哪个源位置的指令可以存储在RECEIVE部分中。COMPUTE部分可以存储用于执行神经网络模型的与计算相关的操作的指令。例如,可以将关于执行哪些计算操作的指令存储在COMPUTE部分中。SEND部分可以存储将输出数据传输到其他存储块410、传输缓冲器440、全局缓冲器340或主机单元220的指令。例如,关于输出数据被传输到哪个目的地位置的指令可以存储在SEND部分中。在一些实施例中,编译器可以基于存储器块组件310中的存储器布局和数据布局机制来确定相应指令的操作数的源地址和目的地址。

根据本公开的实施例,存储区块300可以进一步包括一个或更多个控制表。在一些实施例中,存储区块300可以包括数据传输表,用于在存储区块300中记录数据传输。图5A示出了与本公开的实施例一致的用于在存储区块300中记录数据传输的示例性数据传输表360。数据传输表360可以被配置为记录存储块之间的数据传输。在一些实施例中,数据传输表360可以被配置为记录待定数据传输。如图5A所示,数据传输表360可以具有多个字段,例如,包括源字段(Src),目的地字段(Dst)和缓冲器字段(Bfr)。源字段可以包括指示发送数据的存储块的信息,而目的地字段可以包括指示接收数据的存储块的信息。缓冲器字段可以包括指示当前将数据放置在哪个缓冲器(例如,传输缓冲器440或全局缓冲器340)中的信息。控制器320可以在运行时调度指令,以参考存储在数据传输表360中的信息来执行神经网络模型。根据本公开的一些实施例,存储块410可以在一次中执行计算或数据传输中之一,并且在一个周期内可传输的数据大小受到限制,一次数据传输可能需要多个周期才能完成。

在一些实施例中,存储区块300可以包括块表,用于指示相应的存储块处于哪个状态。图5B示出了与本公开的实施例一致的用于记录存储块状态的示例性块表370。如图5B所示,块表370可以具有存储相应存储块的当前状态的状态字段(State)。根据本公开的一些实施例,在神经网络模型的执行期间,存储块410可具有状态之一,例如,包括空闲状态(I),计算状态(C)和就绪状态(R)。参照示出存储块410的示例性状态转变周期的图5C,将说明存储块的状态。如图5C所示,一旦存储块410接收到用于执行特定计算操作的所有数据,则存储块410的状态从空闲状态(I)改变为计算状态(C)。一旦存储块410完成了计算操作,存储块410的状态就从计算状态(C)改变为就绪状态(R)。一旦存储块410完成将输出数据发送到目的地位置,则存储块410的状态从就绪状态(R)改变为空闲状态(I)。

根据本公开的一些实施例,可以在神经网络模型的执行期间重复状态转变周期。在一些实施例中,当目标存储器已满时,可以暂停数据传输。例如,当数据被传输到传输缓冲器440并且传输缓冲器440已满或没有空间用于额外的数据传输时,可以暂停调度的数据传输,直到传输缓冲器440被清空为止。在一些实施例中,图5B的块表370可以包括记录接收到的数据的大小或传输数据的大小的字段。在一些实施例中,可以通过计算传输数据的迭代次数来记录接收到的数据的大小。例如,当固定或限制在一个周期内可传输的数据大小并且要传输的数据大于在一个周期内可传输的数据大小时,可以将要传输的数据分割为较小的部分,每个部分具有等于或小于一个周期内可传输的数据大小。然后,分割的较小部分可以在多个循环中从一个位置转移到另一位置。因此,在一些实施例中,对传输数据的迭代次数进行计数可以用于确定所传输的数据的大小。如图5B所示,块表370可以具有记录接收数据的迭代次数的字段(#Rec)和记录发送数据的迭代次数的字段(#Send)。

回到参考图3,控制器320可以被配置为通过协调存储块组件310中的用于神经网络模型流水线执行的硬件组件来调度指令(例如,存储在存储器350中)。根据本公开的一些实施例,控制器320可以被配置为解码指令,调度指令以及更新控制表(例如,数据传输表360和块表370)。在运行时间期间,控制器320可以定期检查控制表(例如,数据传输表360或块表370),以确定每个存储块410的下一步。例如,控制器320可以通过参考数据传输表360或块表370,确定存储块410将在下一个周期进入哪个状态(例如,空闲状态(I),计算状态(C)或就绪状态(R))。在检查了下一步之后,控制器320可以通过参考指令存储器350调度相应于存储块410的下一步的指令。控制器320可以被配置为根据调度来更新数据传输表360或块表370。根据本公开的一些实施例,控制器320可以被配置为使用全局缓冲器340来管理数据通信。在一些实施例中,控制器320可以被配置为管理去往/来自主机单元220或主机存储器221的数据通信。

如上所述,控制器320可以例如基于存储在指令存储器350,数据传输表360或块表370中的信息,调度存储块组件310中的存储块410的计算和存储块组件310中的数据传送。根据本公开的实施例,控制器320可以调度存储块组件310中的存储块的计算和数据传输,以便以流水线方式执行神经网络模型。下面将参照图6A至图6C说明用于在图3的存储区块300上以流水线方式执行神经网络模型的示例。

图6A示出了与本公开的实施例一致的神经网络模型的示例。在机器学习或深度学习中,神经网络模型可以由计算图或数据结构图形表示,该计算图或数据结构包括组织为有向无环图(DAG)的节点和边。节点表示变量或计算操作,而边表示从一个节点到另一节点的数据或张量流。表示计算操作的节点可以消耗沿输入边缘流入该节点的输入数据,而由计算操作产生的输出数据可以沿输出边缘从该节点流出。典型的机器学习或深度学习模型可能具有成千上万甚至数百万个变量和计算操作。

如图所示,如图6A所示,计算图包括多个节点n1至n5以及连接所述多个节点n1至n5中的两个节点的边。图6A所示的计算图可以是某个神经网络模型的一部分。应该注意的是,图6A的计算图仅是说明性的而非限制性的,因此,本公开的实施例可以应用于具有任意数量的节点和边缘的计算图。第二节点n2和第三节点n3接收第一节点n1的输出数据。第二节点n2的输出数据被提供给第四节点n4作为输入数据。第四节点n4的输出数据被提供给第五节点n5作为输入数据。第三节点n3的输出数据被提供给第五节点n5作为输入数据。在一些实施例中,节点n1至n5可以表示对应的计算操作。边可以表示由相应边连接的两个节点之间的相关性。即,仅在边起点处的节点的处理完成之后,才可以处理边终点处的节点。例如,仅在第三节点n3和第四节点n4被处理并且第三和第四节点n3和n4的输出数据被提供给第五节点n5之后,才可以处理第五节点n5。

根据本公开的实施例,基于节点n1至n5之间的数据相关性,可以认为图6A的计算图具有四个计算层。例如,第一节点n1可以构成第一层,因为第二和第三节点n2和n3接收第一节点n1的输出数据,所以,第二和第三节点n2和n3可以构成第二层。类似地,第四节点n4可以构成第三层,第五节点n5可以构成第四层。在一些实施例中,第二节点n2可以构成第二层,第三节点n3和第四节点n4可以构成第三层。

图6B示出了与本公开的实施例一致的在存储块组件310中的用于执行图6A的神经网络模型的节点映射的示例。图6B示出了图4所示的存储块组件310的一部分,图4所示的存储组件310包括八个布置成两行四列的存储块410_11至410_24,以及四个传输缓冲器440_1至440_4。在图6B中,为简单起见省略了其余的存储块和数据链路。如关于图4所解释的,可以在存储块组件310中的一个方向上,例如从左到右方向,传输数据。

在该示例中,通过考虑存储块之间的数据移动和节点相关性,将图6A的计算图映射在图6B的存储器块组件310中的存储器块上。如图6B所示,可以将第一节点n1分配给第一列中的第一存储块410_11,该第一列是存储块组件310中的最左列,因为第一节点n1不从分配给节点n2至n5的其他存储块接收数据。第二节点n2和第三节点n3在第二列中分配给第二存储块410_12和第六存储块410_22,因为第二节点n2和第三节点n3从第一节点n1接收输出数据,该输出数据在第一列中分配给第一存储块410_11。类似地,第四节点n4和第五节点n5分别被分配给第三列和第四列中的第三存储块410_13和第四存储块410_14。

图6C示出了与本公开的实施例一致的在存储块组件310中执行图6A的神经网络模型期间存储块的状态转换。在处理神经网络模型的运行时间期间,块存储器的状态会定期更新到块表370中。根据本公开的一些实施例,控制器320检查块表370,并将来自具有就绪状态R的存储块410的信息添加到数据传输表360。添加到数据传输表360的信息可以包括要传输的数据的源位置和目的地位置和可用于传输数据的缓冲器信息。根据本公开的实施例,控制器320可以通过使用数据传输表360和块表370来调度存储器块组件310中的神经网络模型的流水线处理,这可以最大化存储器利用率并提高系统的整体吞吐量。

图6C示出了在运行时间期间用于以流水线方式执行图6A的计算图的存储块和传输缓冲器的状态变化作为示例。如图6C所示,在第一时间段t1期间,第一存储块410_11执行其分配的计算(假定用于处理分配的计算的数据全部被检索到),例如,第一时间段t1第一节点n1的计算和第一存储块410_11的状态可以表示为计算状态C。由于只有在将第一节点n1的输出数据提供给相应的存储块(例如410_12和410_22)之后,才能处理所有其他节点n2至n5的计算,因此其他存储块410_12、410_22、410_13和410_14的状态在第一时间段t1期间,被表示为空闲状态I。

在如图6A的第二时间段t2所示,在第一存储块410_11完成对第一节点n1的计算之后,第一存储块410_11完成对第一节点n1的计算,第一存储块410_11的状态可以改变为就绪状态R,其指示数据准备好传输。在第二时间段t2中,其他存储块410_12、410_22、410_13和410_14保持空闲状态I。在第二时间段t2中,从第一存储块410_11产生的输出数据可以被传送到分别分配给第二节点n2和第三节点n3的第二存储块410_12和第六存储块410_22。在一些实施例中,控制器320可以更新用于记录第二时间段t2的待定数据传输的数据传输表360。在图6A中,箭头用于指示从箭头的起点到箭头的终点的数据传输。因为输出数据被传输到与第一存储块410_11相邻的列(例如,第二列)中的两个存储块410_12和410_22,所以可以使用数据链路(例如,行数据链路451_1和451_2以及列数据链路452_1)并接通开关(例如,图4的第一开关420_1,第二开关420_2和第四开关420_4)来传输输出数据,而不使用传输缓冲器440或全局缓冲器340。在一些实施例中,当在第一存储块410_11和第二存储块410_12直接的数据传输完成之后,可以在第一存储块410_11和第六存储块410_22之间进行数据传输。在一些其他实施例中,可以同时执行在第一存储块410_11和第二存储块410_12之间的数据传输以及在第一存储块410_11和第六存储块410_22之间的数据传输。

从第一存储块410_11到第二存储块410_12和第六存储块410_22的数据传输完成后,第二存储块410_12和第六存储块410_22可以开始使用接收自第一存储块410_11的数据处理第二节点n2和第三节点n3的分配计算。在一些实施例中,一旦相应的传输完成,控制器320还可以更新数据传输表360以去除用于从第一存储块410_11到第二存储块410_12和第六存储块410_22的数据传输的条目。在第三时间段t3,第二存储块410_12和第六存储块410_22可具有计算状态C,其余存储块具有空闲状态I。在一些实施例中,第一存储块410_11可接收输入数据以在随后的处理中处理分配的计算,而在第三时间段t3期间,第一存储块410_11处于空闲状态I。

如图6A中的第四时间段t4所示,在第二存储块410_12和第六存储块410_22完成它们对第二节点n2和第三节点n3的分配计算之后,第二存储块410_12和第六存储块410_22的状态可以改变为就绪状态R。在第四时间段t4中,第三存储块以及第四存储块410_13和410_14保持空闲状态I。在第四时间段t4期间,如箭头所指示的,从第二存储块410_12产生的输出数据可以被传送到第三存储块410_13。根据本公开的实施例,当将从第二存储器块410_12产生的输出数据传送到第三存储器块410_13时,不会同时传送从第六存储器块410_22产生的输出数据,因为这两个数据传送使用第二列存储块和第三列存储块之间相同的数据链路,而第六存储块410_22产生的输出数据不同于第二存储块410_12产生的输出数据。在该示例中,在第二存储块410_12与第三存储块410_13之间的数据传输完成之后,可以开始第六存储块410_22与第四存储块410_14之间的数据传输(在第五时间段t5)。在一些其他实施例中,在第六存储块410_22与第四存储块410_14之间的数据传输完成之后,可以执行第二存储块410_12与第三存储块410_13之间的数据传输。同时,第一存储块410_11可以在第四时间段t4期间执行其分配的计算。

在第五时间段t5,第三存储块410_13可以使用从第二存储块410_12接收的数据来处理其对第四节点n4的分配计算。第六存储块410_22和第四存储块410_14之间的数据传输可以在第五时间段t5开始。因为第六存储块410_22和第四存储块410_14不彼此相邻放置,所以它们之间的数据传输可以通过使用传输缓冲器440来执行。在第五时间段t5,可以使用数据链路(例如,图4的存储块的第二列和第三列之间的行数据链路451和列数据链路452)并接通开关(例如,图4的第11个开关420_11和第16个开关420_16),将从第六存储块410_22生成的输出数据传输到第三传输缓冲器440_3。图6C在最后一栏中示出了在第五时间段t5中正在使用第三传输缓冲器440_3。同时,第二存储块以及第四存储块410_12和410_14可以处于空闲状态I,并且第一存储块410_11可以处于就绪状态R。在第五时间段t5,第一存储块410_11中在第四时间段t4期间生成的输出数据可以被传送到第二存储块410_12,为简单起见其在图6C中未示出。

在第三存储块410_13完成其计算之后,第三存储块410_13可以在第六时间段t6中进入就绪状态R。在第六时间段t6,第二存储块410_12、第六存储块410_22和第四存储块410_14可以处于空闲状态I。在第六时间段t6,可以使用数据链路(例如,在图4的存储块的第三列和第四列之间)而不使用传输缓冲器440,将来自第三存储块410_13的输出数据传输到第四存储块410_14,其在图6C中用箭头表示。在第六时间段t6,第一存储块410_11在第四时间段t4生成的输出数据也可以被传输到第六存储块410_22,因为第一存储块410-11和第六存储块410_22之间的数据传输可以使用不同于从第三存储块410_13和第四存储块410_14之间数据传输的数据链路(例如,在图4中的存储块的第一列和第二列之间)来执行。传输来链接。根据本公开的实施例,第一存储块410_11在第四时间段t4中生成的输出数据不能在第五时间段t5被传送到第六存储块410_22,因为第六存储块410_22正在将其输出数据发送到其他目的地,而存储块410在一次要么执行计算要么执行数据传输。

如图6C的第七时间段t7所示,在数据传输完成之后,第三存储块410_13的状态变为空闲状态I。在第七时间段t7,第四存储块410_14保持空闲状态I,并且由于第四存储块410_14尚未接收到第六存储块410_22生成的输出数据而无法开始处理其分配的计算。在第七时间段t7,已经在第五时间段t5从第六存储块410_22传输的存储在第三传输缓冲器440_3中的数据被传输到第四存储块410_14。同时,第二存储块410_12和第六存储块410_22可以执行其分配的计算,因为第二存储块410_12和第六存储块410_22分别在第五和第六时间段t5和t6从第一存储块410_11接收了数据。在一些实施例中,第一存储块410_11可以处于空闲状态I并且接收要在下一周期中使用的输入数据。

在第八时间段t8中,第四存储块410_14可以执行其对第五节点n5的分配计算,因为第四存储块410_14在第六时间段t6已经接收了来自第六存储块410_22的输入以及在第五时间段t5和第七时间段t7中已经接收到第三存储块410_13的输入。与第四时间段t4相似,在第八时间段t8中,第二存储块410_12和第六存储块410_22可以处于就绪状态R,第三存储块410_13可以处于空闲状态I。在第八时间段t8中,第二存储块410_12生成的输出数据可以被转移到第三存储块410_13中。第一存储块410_11可以在第八时间段t8执行其分配的计算。

应当理解,图6C的时间段t1至t8可以具有不同的时间长度,这取决于计算的处理时间,要传输的数据大小,可以在一个周期内传输的数据大小等。例如,如果要传输的数据大于在一个周期可传输的数据大小,则第二时间段t2可以对应于多个发送操作周期。类似地,用于不同计算的处理时间可以不同,因此用于处理第一节点n1的计算的第一时间段t1可以与用于处理第二节点n2的计算和第三节点n3的计算的第三时间段t3不同。如图1图6A至图6C所示,可以基于存储块组件310的布局和控制表(例如,数据传输表360和块表370)在存储区块300中以流水线方式有效地执行神经网络模型。根据本公开的实施例,可以最大化存储区块300的存储利用率,并且还可以提高整体系统效率。

图7示出了与本公开的实施例一致的用于在图2A的神经网络加速器架构上训练神经网络模型的示例性流程图。神经网络加速器架构(例如,图2A中的神经网络加速器架构200)可以用于根据本公开的一些实施例训练神经网络模型。

在步骤S710,可以准备用于执行神经网络模型的输入数据。在一些实施例中,主机单元(例如,图2A的主机单元220)可以将输入数据卸载到存储区块(例如,图3的存储区块300)。在一些实施例中,主机单元可以经由接口(例如,图2A的接口)将用于神经网络模型的输入数据分批卸载到多个存储块。在一些实施例中,主机单元可以为一个或更多个存储区块的每一个准备不同的权重值。

在步骤S720,与本公开的实施例一致,一个或更多个存储块可以基于所接收的输入数据来执行神经网络模型。在一些实施例中,一个或更多个存储区块(例如,图3的存储区块300)可以基于一组不同的权重值同时执行神经网络模型。在一些实施例中,每个存储区块可以在前馈过程中执行神经网络模型。

在步骤S730,在神经网络模型的执行完成之后,可以收集来自一个或更多个存储区块的执行结果。在一些实施例中,可以通过接口(例如,图2A的接口212)将执行结果发送到主机单元,并且主机单元可以确定每个执行结果的输出误差。在一些实施例中,主机单元可以具有针对相应的神经网络模型的正确执行结果的信息。主机单元可以从一个或更多个存储区块确定执行结果的平均错误。

在步骤S740,可以基于在步骤S730所确定的误差来更新神经网络模型的权重值。根据本公开的实施例,所确定的误差可以是来自一个或更多个存储器区块的执行结果的平均误差。在一些实施例中,主机单元可以将平均误差发送到一个或更多个存储器区块。一个或更多个存储区块可以以反向传播的方式执行神经网络模型,以根据平均误差确定权重值。

在一些实施例中,用于训练神经网络模型的图7可以重复进行,直到满足特定条件为止。例如,完成图7的训练过程的条件线可以是在步骤S730确定的平均误差小于一阈值。在一些实施例中,用于完成图7的训练的条件可以是图7的步骤的迭代数大于一阈值。根据本公开的实施例,多个存储区块可以用于训练神经网络模型,并且可以提高训练精度。

根据本公开的实施例,神经网络加速器架构可以用于推理过程。在一些实施例中,主机单元可以将相同的权重集合发送到多个区块,并且多个区块可以基于具有不同的输入值的相同的权重集合并行地执行推理过程。通过将多个区块用于同一神经网络模型,根据本公开的实施例,可以提高推断的吞吐量。

本公开的实施例可以提供一种数据布局有意识PIM体系结构,该架构实现灵活的数据布局转换并支持用于执行神经网络模型的有效数据移动模式。本公开的实施例使得能够经由具有以2D网状拓扑布置的互连存储块以及数据链路和开关的存储区块设计来在存储块之间进行有效的数据传输。本公开的实施例还使得能够经由传输缓冲器和控制表以流水线方式进行计算和数据传输。根据本公开的实施例,可以获得跨存储块的数据布局,并且因此神经网络模型可以灵活地映射到PIM加速器架构,这提高了存储器利用率和并行计算。

可以使用以下权利要求进一步描述实施例:

1.一种用于执行神经网络模型的支持存储器中处理(PIM)的设备,包括:

存储块组件,包括:

第一存储块阵列;

与所述第一存储块阵列相邻的第二存储块阵列;

与所述第一存储块阵列和所述第二存储块阵列相关联的多个第一数据链路,其中所述多个第一数据链路中的每个数据链路通信地连接分别来自所述第一存储块阵列和第二存储块阵列的两个相应的存储块;和

通信地连接到所述多个第一数据链路的第二数据链路,

其中来自所述第一存储块阵列的第一存储块的数据可经由所述多个第一数据链路和所述第二数据链路传输到所述第二存储块阵列的第二存储块。

2.根据条款1所述的支持PIM的设备,其中,所述存储块组件还包括:

第一开关,所述第一开关被配置为控制接通或关断从所述第一存储块到与所述第一存储块通信连接的多个第一数据链路中的一第一数据链路的数据路径;和

第二开关,所述第二开关被配置为控制接通或关断从与所述第二存储块通信连接的多个第一数据链路中的一第一数据链路到所述第二存储块的数据路径。

3.根据条款2所述的支持PIM的设备,其中,所述存储块组件还包括:

第一选择器,所述第一选择器被配置为选择所述第一开关以接通从所述第一存储块到与所述第一存储块通信连接的所述第一数据链路的数据路径;和

第二选择器,所述第二选择器被配置为选择所述第二开关以接通从与所述第二存储块通信连接的第一数据链路到所述第二存储块的数据路径。

4.根据条款1至3中的任一项所述的支持PIM的设备,其中,每个存储块包括以多行和多列布置的存储单元阵列。

5.根据条款1-4中的任一项所述的支持PIM的设备,其中,所述多个第一数据链路和所述第二数据链路被配置为在一个周期内将存储在所述第一存储器块中的一列存储器单元中的数据传送到所述第二存储块中的一行存储单元中。

6.根据条款1所述的支持PIM的设备,其中,所述存储块组件还包括:

与所述第二存储块阵列相邻的第三存储块阵列;

与所述第二存储块阵列和所述第三存储块阵列相关联的多个第三数据链路,其中所述多个第三数据链路中的每个数据链路通信地连接至分别来自所述第二存储块阵列和所述第三存储块阵列的两个相应的存储块;

可通信地连接到所述多个第三数据链路的第四数据链路;和

与所述第二数据链路和所述第四数据链路通信连接的传输缓冲器,

其中来自所述第一存储块阵列的所述第一存储块的数据可通过传输缓冲器传输到所述第三存储块阵列的第三存储块。

7.根据条款6所述的支持PIM的设备,其中,所述存储块组件还包括:

第一缓冲器数据链路,所述第一缓冲器数据链路配置为通信地连接所述第二数据链路和所述传输缓冲器;和

第二缓冲器数据链路,所述第二缓冲器数据链路配置为通信地连接所述第四数据链路和所述传输缓冲器。

8.根据条款7所述的支持PIM的设备,其中,所述存储块组件还包括:

第一开关,所述第一开关被配置为控制接通或关断从所述第一存储块到与所述第一存储块通信连接的多个第一数据链路中的一第一数据链路的数据路径;

第二开关,所述第二开关被配置为控制接通或关断从所述第一缓冲器数据链路到所述传输缓冲器的数据路径;

第三开关,所述第三开关被配置为控制接通或关断从所述传输缓冲器到所述第二缓冲器数据链路的数据路径;和

第四开关,所述第四开关被配置为控制接通或关断从与所述第三存储块通信连接的多个第三数据链路中的一第三数据链路到所述第三存储块的数据路径。

9.根据条款8所述的支持PIM的设备,其中,所述存储块组件还包括:

第一选择器,所述第一选择器被配置为选择所述第一开关以接通从所述第一存储块到与所述第一存储块通信连接的所述第一数据链路的数据路径;

第二选择器,所述第二选择器被配置为选择所述第二开关以接通从所述第一缓冲器数据链路到所述传输缓冲器的数据路径;

第三选择器,所述第三选择器被配置为选择所述第三开关以接通从所述传输缓冲器到第二缓冲器数据链路的数据路径,以及

第四选择器,所述第四选择器被配置为选择所述第四开关以接通从与所述第三存储块通信连接的第三数据链路到所述第三存储块的数据路径。

10.根据条款6-9中的任一项所述的支持PIM的设备,其中,每个存储块包括以多行和多列布置的存储单元阵列。

11.根据条款6-10中的任一项所述的支持PIM的设备,其中,所述多个第一数据链路、所述第二数据链路和所述第一缓冲器数据链路被配置在一个周期内将存储在所述第一存储块的存储单元的列中的数据传送到所述传输缓冲器中的存储单元的行中。

12.根据条款11所述的支持PIM的设备,其中所述第二缓冲器数据链路、所述第四数据链路和所述多个第三数据链路被配置为在另一个周期中将存储在所述传输缓冲器中的存储单元的行中的数据传送至所述第三存储块中的存储单元的行中。

13.根据条款1-12中任一项所述的支持PIM的设备,还包括:块表,所述块表用于记录所述存储块组件中每个存储块的状态,

其中,所述状态包括:计算状态,所述计算状态指示相应的存储块正在执行分配的操作;就绪状态,所述就绪状态指示相应的存储块具有准备好传输的数据;空闲状态,所述空闲状态指示相应的存储器准备好接收数据。

14.根据条款1-13中任一条款所述的支持PIM的设备,还包括数据传输表,所述数据传输表用于将待定数据传输记录在存储块组件中,

其中,数据传输表包括指示发送数据的存储块的源字段和指示接收数据的存储块的目的地字段。

15.根据条款14所述的支持PIM的设备,其中,所述数据传输表还包括指示数据所驻留的缓冲器的缓冲器字段。

16.根据条款1至15中任一项所述的支持PIM的设备,还包括控制器,该控制器被配置为向所述存储块组件提供命令,以在所述第一存储块上执行所述神经网络模型的第一操作和在第二存储块上执行所述神经网络模型的第二操作,所述第二操作使用来自执行第一操作的输出数据作为输入。

17.一种用于在包括存储器块组件的支持PIM的设备上执行神经网络模型的方法,该方法包括:

在存储块组件中的第一存储块阵列的第一存储块上处理神经网络模型的第一操作;

经由将所述存储块组件中的所述第一存储块和第二存储块通信连接的数据链路,将输出数据从存储块组件中的所述第一存储块传输到第二存储块阵列的所述第二存储块;和

基于所述输出数据在所述第二存储块上处理神经网络模型的第二操作。

18.根据条款17的方法,还包括:

将所述输出数据从所述第一存储块传输到所述第二存储块阵列的第三存储块;和

基于所述输出数据在所述第三存储块上处理神经网络模型的第三操作,

其中,将输出数据从所述第一存储块传输到所述第三存储块是在将输出数据从所述第一存储块传输到所述第二存储块的期间或之后进行的。

19.根据条款17的方法,其中传输输出数据包括:

将所述输出数据从所述第一存储块传输到所述存储块组件中的传输缓冲器;和

将所述输出数据从所述传输缓冲器传输到所述第二存储块,

其中,所述传输缓冲器与所述第一存储块和第二存储块通信连接。

20.根据条款17-19中的任一项所述的方法,其中,传输输出数据包括:

将存储在所述第一存储块的存储单元的列中的输出数据传输到所述第二存储块的存储单元的行中。

21.根据条款17-20中的任一项所述的方法,其中,取决于所述输出数据的大小,在一个或更多个周期中执行传输输出数据。

22.根据条款17-21中任一项所述的方法,还包括:

在块表中记录所述存储块组件中每个存储块的状态,

其中,所述状态包括:计算状态,所述计算状态指示相应的存储块正在执行分配的操作;就绪状态,所述就绪状态指示相应的存储块具有准备好传输的数据;空闲状态,所述空闲状态指示相应的存储器准备好接收数据。

23.条款17-22中任一项的方法,还包括:

将所述存储块组件中待处理的数据传输记录在数据传输表中,

其中,所述数据传输表包括指示发送数据的存储块的源字段和指示接收所述数据的存储块的目的地字段。

24.一种非暂时性计算机可读存储介质,其存储指令集,该指令集可由支持存储器中处理(PIM)的终端中的至少一个处理器执行以使该终端执行以下方法:

在存储块组件中的第一存储块阵列的第一存储块上处理神经网络模型的第一操作;

经由将所述存储块组件中的所述第一存储块和第二存储块通信连接的数据链路,将输出数据从存储块组件中的所述第一存储块传输到第二存储块阵列的所述第二存储块;和

基于所述输出数据在所述第二存储块上处理神经网络模型的第二操作。

25.根据条款24所述的计算机可读介质,其中所述指令集可由所述终端的至少一个处理器执行以使所述终端进一步执行:

将所述输出数据从所述第一存储块传输到所述第二存储块阵列的第三存储块;和

基于所述输出数据在所述第三存储块上处理神经网络模型的第三操作,

其中,将输出数据从所述第一存储块传输到所述第三存储块是在将所述输出数据从所述第一存储块传输到所述第二存储块期间或之后进行的。

26.根据条款24所述的计算机可读介质,其中,所述指令集可由所述终端的至少一个处理器执行以使所述终端进一步执行:

将所述输出数据从所述第一存储块传输到所述存储块组件中的传输缓冲器;和

将所述输出数据从所述传输缓冲器传输到所述第二个存储块,

其中,所述传输缓冲器与所述第一存储块和第二存储块通信连接。

27.根据条款24-26中任一项所述的计算机可读介质,其中,传输输出数据包括:

将存储在所述第一存储块的存储单元的列中的输出数据传输到所述第二存储块的存储单元的行中。

28.根据条款24-27中任一项的计算机可读介质,其中取决于输出数据的大小,在一个或更多个周期中执行传输输出数据。

29.根据条款24-28中任一项所述的计算机可读介质,其中,所述指令集可由所述终端的至少一个处理器执行以使所述终端进一步执行:

在块表中记录所述存储块组合中每个存储块的状态,

其中,所述状态包括:计算状态,所述计算状态指示相应的存储块正在执行分配的操作;就绪状态,所述就绪状态指示相应的存储块具有准备好传输的数据;空闲状态,所述空闲状态指示相应的存储器准备好接收数据。

30.根据条款24-29中任一项所述的计算机可读介质,其中,所述指令集可由所述终端的至少一个处理器执行以使所述终端进一步执行:

将所述存储块组件中待处理的数据传输记录在数据传输表中,

其中,数据传输表包括指示发送数据的存储块的源字段和指示接收数据的存储块的目的地字段。

31.一种终端,包括:

主机单元;和

支持存储器中处理(PIM)的设备,所述支持存储器中处理的设备通信连接到所述主机单元,所述支持存储器中处理(PIM)的设备包括:

存储块组件,包括:

第一存储块阵列;

与所述第一存储块阵列相邻的第二存储块阵列;

与所述第一存储块阵列和所述第二存储块阵列相关联的多个第一数据链路,其中所述多个第一数据链路中的每个数据链路可通信地连接分别来自所述第一存储块阵列和第二存储块阵列的两个相应的存储块;和

通信地连接到所述多个第一数据链路的第二数据链路,

其中来自所述第一存储块阵列的第一存储块的数据可经由所述多个第一数据链路和第二数据链路传输到所述第二存储块阵列的第二存储块。

本文的实施例包括数据库系统、方法和有形的非暂时性计算机可读介质。该方法可以例如由至少一个从有形的非暂时性计算机可读存储介质接收指令的处理器执行。类似地,与本公开一致的系统可以包括至少一个处理器和存储器,并且该存储器可以是有形的非暂时性计算机可读存储介质。如本文所使用的,有形的非暂时性计算机可读存储介质是指可以在其上存储可由至少一个处理器读取的信息或数据的任何类型的物理存储器。示例包括随机存取存储器(RAM)、只读存储器(ROM)、易失性存储器、非易失性存储器、硬盘驱动器、CD ROM、DVD、闪存驱动器、磁盘、寄存器、高速缓存和任何其他已知的物理存储介质。诸如“存储器”和“计算机可读存储介质”之类的单数术语还可以指代多个结构,诸如多个存储器或计算机可读存储介质。如本文所提及的,除非另有说明,否则“存储器”可以包括任何类型的计算机可读存储介质。一种计算机可读存储介质可以存储用于由至少一个处理器执行的指令,包括用于使处理器执行与本文的实施例一致的步骤或阶段的指令。另外,可以利用一个或更多个计算机可读存储介质实施由计算机实现的方法。术语“非暂时性计算机可读存储介质”应理解为包括有形物品、并且排除载波和瞬态信号。

如本文所用,除非另有明确说明,否则术语“或”涵盖所有可能的组合,除非不可行。例如,如果声明数据库可以包括A或B,则除非另有明确说明或不可行,否则数据库可以包括A,或B,或A和B。作为第二个示例,如果声明a数据库可能包含A,B或C,则除非另有明确说明或不可行,否则数据库可能包含A,或B,或C,或A和B,或A和C,或B和C,或A和B和C。

在前述说明书中,已经参照可随实施方式而变化的许多具体细节描述了实施方式。可以对所描述的实施例进行某些修改和改变。考虑到本文公开的发明的说明书和实践,其他实施例对于本领域技术人员而言是显而易见的。说明书和实施例仅被认为是示例性的,本发明的真实范围和精神由所附权利要求书指示。附图中所示的步骤顺序旨在仅用于说明性目的,并不旨在限于任何特定的步骤顺序。这样,本领域技术人员可以理解,在实现相同方法的同时,可以以不同顺序执行这些步骤。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号