自适应性矩阵乘法器的系统的制作方法

文档序号:22043092发布日期:2020-08-28 18:22阅读:230来源:国知局
自适应性矩阵乘法器的系统的制作方法

[相关申请的交叉参考]

本申请主张在2019年2月21日提出申请的标题为“用于机器学习/深度学习应用的自适应性矩阵乘法加速器(adaptivematrixmultiplicationacceleratorforml/dlapplications)”的美国临时申请第62/808,729号的优先权及权益,所述美国临时申请的全部内容通过引用并入本文。

根据本公开的实施例的一个或多个方面涉及处理电路,且更具体来说涉及一种用于矩阵乘法的电路。



背景技术:

机器学习应用,尤其是使用深度神经网络的机器学习应用,可能会涉及显著比例的矩阵乘法运算。在一些应用中,矩阵乘法可消耗整个深度神经网络的大多数运行时间。因此,用于高效地对矩阵进行乘法的系统可有助于改善深度神经网络的性能。

[技术问题]

本公开的目的是提供一种可用于对机器学习及深度学习进行加速的自适应性乘法器。



技术实现要素:

根据一些实施例,提供一种自适应性矩阵乘法器的系统,所述系统包括:第一乘法单元;第二乘法单元;存储器加载电路;以及外缓冲器电路,所述第一乘法单元包括第一内缓冲器电路及第二内缓冲器电路,所述第二乘法单元包括第一内缓冲器电路及第二内缓冲器电路,所述存储器加载电路被配置成在突发脉冲存储器访问模式的单个突发脉冲中将来自存储器的数据加载到以下中:所述第一乘法单元的所述第一内缓冲器电路;以及所述第二乘法单元的所述第一内缓冲器电路。

在一些实施例中:所述第一乘法单元包括加法器电路,且所述第一乘法单元被配置成:形成以下两者的第一乘积:所述第一乘法单元的所述第一内缓冲器电路的第一元素,与所述第一乘法单元的所述第二内缓冲器电路的第一元素;将所述第一乘积传送到所述加法器电路;形成以下两者的第二乘积:所述第一乘法单元的所述第一内缓冲器电路的第二元素,与所述第一乘法单元的所述第二内缓冲器电路的第二元素;以及将所述第二乘积传送到所述加法器电路。

在一些实施例中,所述第一乘法单元包括:第一乘法电路,被配置成形成所述第一乘积;以及第二乘法电路,被配置成形成所述第二乘积。

在一些实施例中,所述加法器电路被配置成:形成所述第一乘积与所述第二乘积的第一和,以及将所述第一和发送到所述外缓冲器电路。

在一些实施例中:所述第二乘法单元包括加法器电路,且所述第二乘法单元被配置成:形成以下两者的第三乘积:所述第二乘法单元的所述第一内缓冲器电路的第一元素,与所述第二乘法单元的所述第二内缓冲器电路的第一元素;将所述第三乘积传送到所述第二乘法单元的所述加法器电路;形成以下两者的第四乘积:所述第二乘法单元的所述第一内缓冲器电路的第二元素,与所述第二乘法单元的所述第二内缓冲器电路的第二元素;以及将所述第四乘积传送到所述第二乘法单元的所述加法器电路。

在一些实施例中:所述第二乘法单元的所述加法器电路被配置成:形成所述第三乘积与所述第四乘积的第二和,以及将所述第二和发送到所述外缓冲器电路,且所述外缓冲器电路被配置成将所述第一和与所述第二和相加。

在一些实施例中:所述第一乘法单元包括加法器电路;所述第一乘法单元的所述第一内缓冲器电路包括第一迷你缓冲器及第二迷你缓冲器;所述第一乘法单元的所述第二内缓冲器电路包括第一迷你缓冲器及第二迷你缓冲器;所述第一乘法单元被配置成:形成以下两者的第一乘积:所述第一乘法单元的所述第一内缓冲器电路的所述第一迷你缓冲器的第一元素,与所述第一乘法单元的所述第二内缓冲器电路的所述第一迷你缓冲器的第一元素;将所述第一乘积传送到所述加法器电路;形成以下两者的第二乘积:所述第一乘法单元的所述第一内缓冲器电路的所述第二迷你缓冲器的第一元素,与所述第一乘法单元的所述第二内缓冲器电路的所述第二迷你缓冲器的第一元素;以及将所述第二乘积传送到所述加法器电路。

在一些实施例中:所述第一乘法单元还被配置成:形成以下两者的第三乘积:所述第一乘法单元的所述第一内缓冲器电路的所述第一迷你缓冲器的第二元素,与所述第一乘法单元的所述第二内缓冲器电路的所述第一迷你缓冲器的所述第一元素;将所述第三乘积传送到所述加法器电路;形成以下两者的第四乘积:所述第一乘法单元的所述第一内缓冲器电路的所述第二迷你缓冲器的第二元素,与所述第一乘法单元的所述第二内缓冲器电路的所述第二迷你缓冲器的所述第一元素;以及将所述第四乘积传送到所述加法器电路。

在一些实施例中:所述加法器电路被配置成形成所述第一乘积与所述第二乘积的第一和,且将所述第一和发送到所述外缓冲器电路;且所述外缓冲器电路被配置成将所述第一和存储在所述外缓冲器电路的第一元素中。

在一些实施例中:所述加法器电路还被配置成形成所述第三乘积与所述第四乘积的第二和,且将所述第二和发送到所述外缓冲器电路;且所述外缓冲器电路被配置成将所述第二和存储在所述外缓冲器电路的第二元素中。

在一些实施例中:所述第一乘法单元包括加法器电路;且所述第一乘法单元被配置成:形成以下两者的第一乘积:所述第一乘法单元的所述第一内缓冲器电路的第一元素,与所述第一乘法单元的外缓冲器电路的第一元素;将所述第一乘积传送到所述加法器电路;形成以下两者的第二乘积:所述第一乘法单元的所述第一内缓冲器电路的第二元素,与所述第一乘法单元的所述外缓冲器电路的第二元素;以及将所述第二乘积传送到所述加法器电路。

在一些实施例中,所述加法器电路被配置成:形成所述第一乘积与所述第二乘积的第一和;以及将所述第一和存储在所述第一乘法单元的所述第二内缓冲器电路的第一元素中。

在一些实施例中,所述第一乘法单元包括:第一乘法电路,被配置成形成所述第一乘积;以及第二乘法电路,被配置成形成所述第二乘积。

在一些实施例中,所述系统包括第一实体及第二实体,所述第一实体包括所述第一乘法单元及所述第二乘法单元。

在一些实施例中,所述存储器加载电路被配置成从所述第一实体接收读取请求以及从所述第二实体接收读取请求,且对所述读取请求进行仲裁。

在一些实施例中,所述存储器加载电路被配置成以将矩阵的一部分的元素转置的方式将所述矩阵的所述一部分从存储器加载到所述第一乘法单元的所述第二内缓冲器电路中。

根据一些实施例,提供一种自适应性矩阵乘法器的系统,所述系统包括:第一乘法单元;第二乘法单元;存储器加载电路;存储器存储电路;以及外缓冲器电路,所述第一乘法单元包括:乘法电路;第一内缓冲器电路;第二内缓冲器电路;乘法电路输入多路复用器,具有连接到所述乘法电路的输入的共用端口;乘法电路输出多路复用器,具有连接到所述乘法电路的输出的共用端口;以及第二内缓冲器电路输出多路复用器,具有连接到所述第二内缓冲器电路的输出的共用端口。

在一些实施例中,在所述第一乘法单元的第一状态中,所述乘法电路输入多路复用器被配置成将数据从所述第二内缓冲器电路输出多路复用器路由到所述乘法电路的第一输入;所述乘法电路输出多路复用器被配置成将数据从所述乘法电路的所述输出路由到所述外缓冲器电路;且所述第二内缓冲器电路输出多路复用器被配置成将数据从所述第二内缓冲器电路路由到所述乘法电路输入多路复用器。

在一些实施例中,在所述第一乘法单元的第二状态中,所述乘法电路输入多路复用器被配置成将数据从所述外缓冲器电路路由到所述乘法电路的所述第一输入;所述乘法电路输出多路复用器被配置成将数据从所述乘法电路的所述输出路由到所述第二内缓冲器电路;且所述第二内缓冲器电路输出多路复用器被配置成将数据从所述第二内缓冲器电路路由到所述存储器存储电路。

根据一些实施例,提供一种自适应性矩阵乘法器的系统,所述系统包括:第一乘法单元;第二乘法单元;用于加载来自存储器的数据的构件;以及外缓冲器电路,所述第一乘法单元包括第一内缓冲器电路及第二内缓冲器电路,所述第二乘法单元包括第一内缓冲器电路及第二内缓冲器电路,所述用于加载来自存储器的数据的构件被配置成在突发脉冲存储器访问模式的单个突发脉冲中将来自存储器的数据加载到以下中:所述第一乘法单元的所述第一内缓冲器电路;以及所述第二乘法单元的所述第一内缓冲器电路。

根据一些实施例,提供一种执行乘法的方法,所述方法包括:响应于处理电路的第一寄存器存储第一值,计算第一矩阵与第二矩阵的矩阵乘积,所述第一矩阵是所述矩阵乘积中的第一因数,且所述第二矩阵是所述矩阵乘积中的第二因数;响应于所述第一寄存器存储第二值,计算所述第一矩阵的转置与所述第二矩阵的矩阵乘积,所述第一矩阵的所述转置是所述矩阵乘积中的第一因数,且所述第二矩阵是所述矩阵乘积中的第二因数;响应于所述第一寄存器存储第三值,计算所述第一矩阵与所述第二矩阵的转置的矩阵乘积,所述第一矩阵是所述矩阵乘积中的第一因数,且所述第二矩阵的所述转置是所述矩阵乘积中的第二因数;响应于所述第一寄存器存储第四值,计算所述第一矩阵的所述转置与所述第二矩阵的所述转置的矩阵乘积,所述第一矩阵的所述转置是所述矩阵乘积中的第一因数,且所述第二矩阵的所述转置是所述矩阵乘积中的第二因数;以及响应于所述第一寄存器存储第五值,计算所述第一矩阵与向量的矩阵乘积,所述第一矩阵是所述矩阵乘积中的第一因数,且所述向量是所述矩阵乘积中的第二因数。

根据一些实施例,提供一种执行乘法的方法,所述方法包括:计算存储在第一抽象缓冲器中的第一矩阵与存储在第二抽象缓冲器中的第二矩阵的矩阵乘积;以及将所述矩阵乘积存储在第三抽象缓冲器中,其中:响应于第二寄存器具有第四值:将所述第一抽象缓冲器映射到第一物理缓冲器,将所述第二抽象缓冲器映射到第二物理缓冲器,且将所述第三抽象缓冲器映射到第三物理缓冲器;且响应于所述第二寄存器具有第五值:将所述第一抽象缓冲器映射到所述第一物理缓冲器,将所述第二抽象缓冲器映射到所述第三物理缓冲器,且将所述第三抽象缓冲器映射到所述第二物理缓冲器。

在一些实施例中,所述方法还包括:基于将要相乘的矩阵的尺寸而将所述第四值或所述第五值存储在所述第二寄存器中。

根据一些实施例,提供一种执行乘法的方法,所述方法包括:在突发脉冲模式中将第一矩阵的一部分从存储器读取到处理电路中的第一单元中的第一缓冲器中以及所述处理电路中的第二单元中的第一缓冲器中;将第二矩阵的一部分从存储器读取到处理电路中的所述第一单元的第二缓冲器中以及所述第二单元中的第二缓冲器中;以及计算存储在所述第一单元中的所述第一缓冲器中的元素与存储在所述第二单元中的所述第一缓冲器中的元素的矩阵乘积。

在一些实施例中,所述第一单元位于所述处理电路中的第一实体中,且所述第二单元位于所述处理电路中的第二实体中。

[有益效果]

根据本公开,提供一种自适应性矩阵乘法器(adaptivematrixmultiplier)。因此,可用于对机器学习及深度学习进行加速。

附图说明

参照说明书、权利要求书及附图,将了解及理解本公开的这些以及其他特征及优点,在附图中:

图1a是根据本公开实施例的用于矩阵乘法的电路的方块图。

图1b是根据本公开实施例的用于矩阵乘法的电路的方块图。

图2是根据本公开实施例的矩阵维度图。

图3a是根据本公开实施例的数据排列图。

图3b是根据本公开实施例的数据排列图。

图4a是根据本公开实施例的用于矩阵乘法的电路的一部分的方块图。

图4b是根据本公开实施例的用于矩阵乘法的电路的一部分的方块图。

图4c是根据本公开实施例的用于矩阵乘法的电路的一部分的方块图。

图5a是根据本公开实施例的数据排列图。

图5b是根据本公开实施例的数据排列图。

图6a是根据本公开实施例的数据排列图。

图6b是根据本公开实施例的数据排列图。

图7是根据本公开实施例的数据排列图。

图8a是根据本公开实施例的数据排列图。

图8b是根据本公开实施例的数据排列图。

图9a是根据本公开实施例的用于矩阵乘法的电路的方块图。

图9b是根据本公开实施例的用于矩阵乘法的电路的方块图。

图9c是根据本公开实施例的用于矩阵乘法的电路的方块图。

具体实施方式

以下结合附图所述的详细说明旨在作为对根据本公开所提供的自适应性矩阵乘法器的示例性实施例的说明,而非旨在表示其中可构造或利用本公开的仅有形式。所述说明结合所示出的实施例陈述本公开的特征。然而,应理解,可通过也旨在涵盖于本公开的范围内的不同实施例来实现相同的或等效的功能及结构。如本文中别处所示,相同的元件编号旨在指示相同的元件或特征。

图1a示出根据一些实施例的自适应性矩阵乘法器的示例。图1a所示自适应性矩阵乘法器包括一个实体105,实体105包括四个乘法单元110(被标记为u0到u3)。实体105在以下进一步详细论述。乘法单元110中的每一个包括(例如,八个)乘法器或“乘法电路”405(图4a到图4c所示)的阵列112。乘法单元110中的每一个还包括第一内缓冲器电路115、第二内缓冲器电路120及临时内缓冲器电路125。乘法单元110中的每一个可对可被称为“数据字(dataword)”的计算单元进行操作(例如,处理)。依据应用而定,数据字可为8位的整数(int8)、16位的整数(int16)、32位的整数(int32)、16位的浮点(fp16)或32位的浮点(fp32)。

一些实施例可用于执行矩阵乘法或矩阵与向量的乘法。在一些实施例中,乘法过程可至少部分地由存储在一个或多个寄存器中(例如,存储在寄存器模块180中,将在以下进一步详细论述)的值来控制。应理解,矩阵乘法是不可交换的,因此举例来说,一般来说,矩阵乘积a×b不等于矩阵乘积b×a。一些实施例能够在所述一个或多个寄存器的控制下执行各种乘法,包括计算两个矩阵的乘积、计算一个矩阵与另一矩阵的转置的乘积、两个矩阵的转置的乘积或矩阵与向量的乘积,如以下进一步详细阐述的。

临时内缓冲器电路125连接到外缓冲器电路130,外缓冲器电路130包括累加器135及缓冲器(例如,寄存器的阵列)140。自适应性矩阵乘法器可包括用于第一内缓冲器电路115的第一加载实体模块(或“存储器加载电路”)150、用于第二内缓冲器电路120的第二加载实体模块150及用于外缓冲器电路130的加载单元(或“加载电路”)155。加载实体模块150及加载单元155可通过存储器桥(memorybridge)165来与一个或多个存储器162通信。在一些实施例中,加载实体模块150在突发脉冲模式中从存储器162执行读取操作(即,响应于发送到存储器的单个读取命令,存储器可返回多个数据字)。与其中存储器162中的任何一个响应于读取命令仅发送一个数据字的模式的操作相比,突发脉冲模式的操作可得到显著更高的数据吞吐量。存储器存储电路170(或存储器存储单元)也可通过存储器桥165来与所述一个或多个存储器162通信,且可将计算结果存储在存储器162中。

控制电路175可控制自适应性矩阵乘法器中其他电路的操作;控制电路175可通过寄存器模块180从主机接收命令(并将状态信息返回主机)。

第一内缓冲器电路115及第二内缓冲器电路120中的每一个可包括迷你缓冲器(mini-buffer)的阵列(例如,对于乘法电路的阵列112中的每一乘法电路均具有一个迷你缓冲器)。迷你缓冲器的每一阵列在概念上可被认为形成元素矩阵,矩阵的每一列对应于迷你缓冲器中的一个,且每一行对应于一组元素(每一迷你缓冲器在所述一组元素中有一个元素),与行对应的所有元素均位于相应的迷你缓冲器中的相同位置。举例来说,第一行可对应于每一迷你缓冲器的第一元素。

在操作中,乘法电路的阵列112可形成迷你缓冲器的行的点乘积(dotproduct)。本文中所述的两个等长度的向量的“点乘积”(例如,一个矩阵的行与另一矩阵的列的点乘积)是指向量的元素的逐元素乘积之和。乘法电路的阵列112可形成例如以下两者的点乘积:(i)第一内缓冲器电路115的迷你缓冲器的阵列的第一行与(ii)第二内缓冲器电路120的迷你缓冲器的阵列的第一行,且接着形成以下两者的点乘积:(i)第一内缓冲器电路115的迷你缓冲器的阵列的第二行与(ii)第二内缓冲器电路120的迷你缓冲器的阵列的第一行。以下对使用此种运算来执行矩阵乘法进行更详细地论述。

图1b示出具有两个实体105(每一实体105具有两个乘法单元110)的自适应性矩阵乘法器的示例。可基于自适应性矩阵乘法器的拟定应用以及基于硬件资源对自适应性矩阵乘法器中所包括的实体105的数目及每一实体105的乘法单元110的数目进行选择。自适应性矩阵乘法器中所包括的实体105的数目及每一实体105的乘法单元110的数目可在设计时或者在系统启动时选择,或者可在操作期间实时地改变。在一些实施例中,来自存储器162的数据在具有宽度(例如,128位)的数据总线上被发送到乘法单元110。单元的迷你缓冲器的数目可基于数据总线的宽度对数据字的宽度的比率来选择(例如,等于数据总线的宽度对数据字的宽度的比率)。每一实体的单元的数目可基于存储器总线带宽/速度与计算(乘法)所需的周期的比值来选择(例如,等于存储器总线带宽/速度与计算(乘法)所需的周期的比值),并通过其他微架构因素进行微调。存储器访问操作的粒度是可被称为“分块(tile)”的矩形、正方形或一维阵列。分块可被参数化为“r_tw×c_tw”,其中r_tw是具有介于1、2、4、…、2r范围内的值的分块行宽,其中r是正整数(即,分块行宽可为1、2、…或者等于2的r次幂的其他数目),且c_tw是具有介于1、2、4、…、2c范围内的值的分块列宽(即,分块列宽可为1、2、…或等于2的c次幂的其他数目)。每一分块包含多个字。可基于自适应性矩阵乘法器的拟定应用的要求来选择大小。每一分块在被从存储器提取之后可基于自适应性矩阵乘法器的拟定应用的要求以及基于实施要求而存储在片上存储装置(on-chipstorage)中,例如存储在第一内缓冲器电路115或第二内缓冲器电路120中或者存储在先进先出(first-in-first-out,fifo)存储器或寄存器中。

以矩阵乘法为例,可计算两个分块(即,a与b)的乘积且可形成第三分块c:

[公式1]

c(i,j)=∑pa(i,p)*b(p,j);其中i=0、…、m;j=0、…、n;p=0、…、k

存储器分块a及b可被加载到第一内缓冲器电路115及第二内缓冲器电路120中。如果需要,乘积c可在以分块c的形式发送回存储器162之前存储在临时内缓冲器电路125中。

图2示出两个矩阵被提取到两个片上缓冲器(on-chipbuffer)(例如,被提取到第一内缓冲器电路115及第二内缓冲器电路120)中且所述两个矩阵的乘积被写回到存储器中的示例。作为示例,在一些实施例中,第一分块(“分块a”)的大小是r_tw×c_tw=12×8个字,第二分块(“分块b”)的大小是r_tw×c_tw=8×4个字,且第三分块(“分块c”)的大小是r_tw×c_tw=12×4个字。

第一内缓冲器电路115及第二内缓冲器电路120可具有图2中所示的存储容量,所述存储容量被表示为“条目×宽度”,其中宽度是缓冲器电路中的迷你缓冲器的数目,且条目或深度是每一迷你缓冲器能够存储的条目的数目。在图2所示的示例中,对于第一内缓冲器电路115,条目×宽度是12个条目×8个迷你缓冲器,对于第二内缓冲器电路120,条目×宽度是4个条目×8个迷你缓冲器,且对于外缓冲器电路130,条目×宽度是12个条目×4个迷你缓冲器。迷你缓冲器宽度为1个字,此处以32位的宽度作为示例。为并行处理公式1的乘法,第二内缓冲器电路120可以“转置”形式从存储器的分块b区加载,且在开始进行乘法之前被填充。在一些神经网络应用中,矩阵a可为大的且恒定的,或者很少改变,而矩阵b可明显更小且可频繁改变。关于矩阵b的延迟(latency)可为重要的性能量度,因此,在每一迷你缓冲器中具有大量条目的第二内缓冲器电路120可能用处不大,这是由于使用大量条目可导致高的延迟。在此种系统中,第二内缓冲器电路120的每一迷你缓冲器中的条目的数目可明显比第一内缓冲器电路115的每一迷你缓冲器中的条目的数目小(例如,小2到8倍(例如,小3倍))。

在一些实施例中,每一片上“缓冲器”可依据自适应性矩阵乘法器的拟定应用的要求及微架构要求而为缓冲器、先进先出存储器或寄存器。

参照图3a及图3b,作为示例,加载实体模块150及加载单元155每次可将一个矩阵分块从存储器加载到片上缓冲器,如果需要,则执行矩阵转置,如以下进一步详细论述的。在一些实施例中,加载单元与加载实体的基本功能相似。加载单元可填充一个缓冲器(作为示例,具有8个迷你缓冲器);而当来自存储器的数据是突发脉冲事务(bursttransaction)时,加载实体可同时填充多个缓冲器。存储器存储电路170将外缓冲器电路130的内容存储到存储器的分块c区。在一些实施例中,不需要对被写回到存储器的结果进行转置。另外,当分块没有填充其所被读取到的片上缓冲器时,不需要进行分块数据的填补(padding),这是由于加载实体模块150及加载单元155可通过对未使用的迷你缓冲器的缓冲器使能(bufferenable,be)进行去能(例如,将be位设定成零)来处置部分分块。相似地,存储器存储电路170可通过在将迷你缓冲器数据存储到存储器中时设定“字使能”来处置部分分块。在图3a及图3b中,分块a的大小是12×8个字,分块b的大小是8×4个字,且分块c的大小是12×4个字(如图2中所示)。在图3a及图3b所示的示例中,分块的大小(尺寸m、n及k的含义如图2中所示)是m_tw=12、n_tw=4且k_tw=8,而且数据大小是m=8、n=3且k=5。

举例来说,首先可计算缓冲器a的第一行与缓冲器b的第一行的第一点乘积(第一点乘积具有值90),并将第一点乘积存储在缓冲器c的第一条目中。其次可计算缓冲器a的第一行与缓冲器b的第二行的第二点乘积(第二点乘积具有值100),并将第二点乘积存储在缓冲器c的第二条目中。在其他实施例中,作为替代,其次可计算缓冲器a的第二行与缓冲器b的第一行的点乘积。

乘法c(0,0)=∑ia(0,i)×b(i,0)的示例在图4a中示出。如上所述,每一乘法单元110可包括乘法器(或“乘法电路”405)例如并行运行的fp32乘法器的阵列以及加法器(或“加法器电路”)410。第一内缓冲器电路115可包括迷你缓冲器(例如,8个迷你缓冲器)(各自具有12个条目)的阵列,且第二内缓冲器电路120也可包括迷你缓冲器(例如,8个迷你缓冲器)(各自具有4个条目)的阵列。在图4a所示的示例中,外缓冲器电路130具有四个迷你缓冲器,所述四个迷你缓冲器各自具有12个条目。图4b及图4c分别示出c(0,1)=∑ia(0,i)×b(i,1)及c(1,0)=∑ia(1,i)×b(i,0)的乘法。

加载实体模块150中的每一个可作为突发脉冲事务从存储器提取多个矩阵分块,适当地执行矩阵转置运算(如以下进一步详细论述的),并填充实体105的相关联的片上缓冲器。

图5a及图5b示出矩阵(“矩阵a”)在分块突发脉冲中从存储器加载到具有四个乘法单元110的实体105的乘法单元110中的三个乘法单元110的三个第一内缓冲器电路115中。如图所示,矩阵数据以条带化(stripping)的方式同时加载到所述三个第一内缓冲器电路115中。

图6a及图6b示出将矩阵(“矩阵b”)从存储器(图6a)加载到具有四个乘法单元110的实体105的乘法单元110中的三个乘法单元110的三个第二内缓冲器电路120中。各个矩阵b分块是各自从存储器中单独提取的,这是由于在此示例中,矩阵b“正常地”存储在存储器中(即,未被转置),其中ldb=n(其中ldb=n是指将矩阵b在n维度上加载到存储器中,例如图6a中所示)。在整个矩阵被加载之后,所述三个第二内缓冲器电路120可并行运行(例如,被并行馈送到相应的乘法电路405中)(所述三个第二内缓冲器电路120可被并行填充或者被逐个填充,但并行运行,这是由于所述三个第二内缓冲器电路120已具有所需的数据。没有必要逐个运行)。图6a及图6b中标记的“时期(epoch)”是外环(outerloop)数目。应注意,图1a到图6b是其中一个选项的示例。在一些实施例中,图1a到图6b仅是阐释矩阵乘法器如何工作的示例,且不应被理解为对本公开进行限制。举例来说,元件的数目(例如,实体105的数目及乘法单元110的数目)仅为示例,且如所属领域中的技术人员应理解的,在不同的实施例中可不同。操作时期(外环)也在图7中示出。

图7示出可如何将第一矩阵(a)存储在具有四个乘法单元110的实体105的乘法单元110中的三个乘法单元110的三个第一内缓冲器电路115中、以及可如何将第二矩阵(b)的部分存储在具有四个乘法单元110的实体105的乘法单元110中的三个乘法单元110的三个第二内缓冲器电路120中的示例。乘积可在三个时期内形成,第二矩阵(b)的新的部分在每一时期被加载到所述三个第二内缓冲器电路120中。在图7所示的示例中,存在一个实体,所述一个实体具有四个乘法单元110,在每一个第一内缓冲器电路115中具有八个迷你缓冲器以及在每一个第二内缓冲器电路120中具有八个迷你缓冲器。分块大小为:m_tw=12;n_tw=4;且k_tw=8;且数据大小为m=12;n=10;且k=20。在k维度中具有一个内环(innerloop),且在m维度中具有一个中间环(middleloop);这些内环并行运行,且使用三个时期(外环)来完成图6a及图6b以及图7中所示的矩阵乘法计算c(i,j)=σpa(i,p)*b(p,j)。

参照图8a及图8b,当矩阵在从存储器中被提取的同时被转置时,加载实体模块150及加载单元155二者均可处置矩阵转置。图8a是经转置矩阵的示例且示出矩阵在存储器中的排列,且图8b示出具有四个乘法单元110的实体105的乘法单元110中的三个乘法单元110的三个第二内缓冲器电路120中的矩阵的排列。矩阵分块作为突发脉冲从存储器提取,并被加载到第二内缓冲器电路120中。所述三个第二内缓冲器电路120同时被图8a及图8b中所示的数据突发脉冲填充。

图9a及图9b示出自适应性矩阵乘法器的两种不同配置。在图9a所示的配置(可被称为“选项一”)中,n维度是内环,且在图9b所示的配置(可被称为“选项二”)中,k维度是内环。前者(选项一)在要执行的计算的大小在n维度中是大的时可更高效,而后者(选项二)在要执行的计算的大小在k维度中是大的时可更高效。在一些实施例中,参照图9c(其支持选项一及选项二二者),多路复用器905用于在所述两种配置之间进行选择。每一多路复用器可具有三个端口,包括共用端口910。图9c所示三个多路复用器包括:乘法电路输入多路复用器,具有连接到乘法电路的输入的共用端口910;乘法电路输出多路复用器,具有连接到乘法电路的输出的共用端口910;以及第二内缓冲器电路输出多路复用器,具有连接到第二内缓冲器电路的输出的共用端口910。

在实施选项二的第一状态中,乘法电路输入多路复用器被配置成将数据从第二内缓冲器电路输出多路复用器路由到乘法电路的第一输入,乘法电路输出多路复用器被配置成将数据从乘法电路的输出路由到外缓冲器电路,且第二内缓冲器电路输出多路复用器被配置成将数据从第二内缓冲器电路路由到乘法电路输入多路复用器。

在实施选项一的第二状态中,乘法电路输入多路复用器被配置成将数据从外缓冲器电路路由到乘法电路的第一输入,乘法电路输出多路复用器被配置成将数据从乘法电路的输出路由到第二内缓冲器电路,且第二内缓冲器电路输出多路复用器被配置成将数据从第二内缓冲器电路路由到存储器存储电路。

对所述两种配置中的一种的选择可在设计时进行(例如,可硬连线在制作有自适应性矩阵乘法器的集成电路中),或者可在运行时进行(使用多路复用器,如图9c中所示)。多路复用器可由主机(通过寄存器模块180)控制,或者可在运行时由自适应性矩阵乘法器内的专用控制电路自动控制。

在一些实施例中,自适应性矩阵乘法器或其一些部分是在处理电路中实施。用语“处理电路”在本文中用于意指用于处理数据或数字信号的硬件、固件及软件的任意组合。处理电路硬件可包括例如专用集成电路(applicationspecificintegratedcircuit,asic)、通用或专用中央处理器(centralprocessingunit,cpu)、数字信号处理器(digitalsignalprocessor,dsp)、图形处理器(graphicsprocessingunit,gpu)及可编程逻辑装置(例如现场可编程门阵列(fieldprogrammablegatearray,fpga))。在本文所使用的处理电路中,每一功能由被配置(即,被硬连线)成执行所述功能的硬件执行,或者由被配置成执行存储在非暂时性存储介质中的指令的更通用硬件(例如cpu)执行。处理电路可制作在单个印刷电路板(printedcircuitboard,pcb)上,或者分布在若干互连的pcb上。处理电路可包含其他处理电路;例如,处理电路可包括在pcb上互连的两个处理电路:fpga及cpu。

本文中所述的物项的“一部分”是指所述物项的全部或不到全部。因此,矩阵的一部分可为整个矩阵,或可为不包括矩阵所有元素的矩阵的一部分。矩阵的矩形或正方形部分本身就是矩阵。本文中所述的两个矩阵a与b的“矩阵乘积”(可被写成a×b)是元素为∑pa(i,p)*b(p,j)的矩阵;作为特殊情形,“矩阵乘积”包括矩阵与向量的乘积、以及两个向量的点乘积。本文中所述的“矩阵乘法”是指矩阵乘积的计算。

在一些实施例中,通用乘法器可被配置成通过寄存器设定支持以下矩阵乘法:

(c:=a×b)(其中a及b是矩阵):矩阵-矩阵乘法;

(c:=ta×b)、(c:=a×tb)及(c:=ta×tb)(其中a及b是矩阵且矩阵前面的“t”表示转置运算):转置矩阵乘法;以及

(y:=a×x):作为矩阵-矩阵乘法的特殊情形的矩阵-向量乘法。

通用乘法器还可被配置成由表示不同的a/b/c缓冲器的抽象缓冲器x、缓冲器y及缓冲器o基于所选择的乘法选项来自适应性地选择不同的乘法选项。存储器突发脉冲事务可通过多个单元、多个并行运行的实体来最大化。

应理解,虽然本文中可使用用语“第一”、“第二”、“第三”等来阐述各种元件、组件、区、层及/或区段,然而这些元件、组件、区、层及/或区段不应受这些用语限制。这些用语仅用于将一个元件、组件、区、层或区段与另一元件、组件、区、层或区段区分开。因此,在不背离一些实施例的精神及范围的条件下,本文中所论述的第一元件、第一组件、第一区、第一层或第一区段可被称为第二元件、第二组件、第二区、第二层或第二区段。

本文中所使用的用语仅用于阐述特定实施例,而非旨在限制一些实施例。本文中所使用的用语“基本上(substantially)”、“约(about)”及类似用语用作近似用语而非用作程度用语,且旨在考虑到所属领域中的普通技术人员将认识到的所测量的值或所计算的值的固有偏差。本文中所使用的用语“主要组分(majorcomponent)”指代以比组合物、聚合物或产物中的任何其他单一组分的量大的量存在于所述组合物或产物中的组分。相比之下,用语“主组分(primarycomponent)”指代构成组合物、聚合物或产物的按重量计至少50%或大于50%的组分。本文中所使用的用语“主要部分(majorportion)”在应用于多个项时意指这些项的至少一半。

除非上下文另外清楚地指明,否则本文中所使用的单数形式“一(a及an)”旨在也包括复数形式。应进一步理解,在本说明书中所使用的用语“包括(comprises及/或comprising)”指明所陈述的特征、整数、步骤、操作、元件及/或组件的存在,但并不排除一个或多个其他特征、整数、步骤、操作、元件、组件及/或其群组的存在或添加。本文中所使用的用语“及/或(and/or)”包括相关联列出项中的一个或多个的任意及所有组合。当位于一系列元件之前时,例如“…中的至少一个(atleastoneof)”等表达是修饰整个所述一系列元件而并非修饰所述一系列中的个别元件。此外,在阐述实施例时所使用的“可(may)”指代“本公开的一个或多个实施例”。另外,用语“示例性(exemplary)”旨在指代示例或说明。本文中所使用的用语“使用(use)”、“正使用(using)”、“被使用(used)”可被视为分别与用语“利用(utilize)”、“正利用(utilizing)”、“被利用(utilized)”同义。

应理解,当将元件或层称为“位于”另一元件或层“上”、“连接到”、“耦合到”或“相邻于”另一元件或层时,所述元件或层可直接位于所述另一元件或层上、直接连接到、直接耦合到或直接相邻于所述另一元件或层,或者可存在一个或多个中间元件或层。相比之下,当将元件或层称为“直接位于”另一元件或层“上”、“直接连接到”、“直接耦合到”或“紧邻于”另一元件或层时,则不存在中间元件或层。

本文所叙述的任何数值范围均旨在包括位于所叙述的范围内的同一数值精度的所有子范围。举例来说,“1.0至10.0”的范围旨在包括位于所叙述的最小值1.0与所叙述的最大值10.0之间(且包括所叙述的最小值1.0及所叙述的最大值10.0)的所有子范围,即最小值等于或大于1.0且最大值等于或小于10.0,例如2.4至7.6。本文所叙述的任何最大数值限制均旨在包括其中所包含的所有更低数值限制,且本说明书中所叙述的任何最小数值限制均旨在包括其中所包含的所有更高数值限制。

虽然本文中已具体阐述及示出了自适应性矩阵乘法器的示例性实施例,然而对于所属领域中的技术人员来说,许多修改及变化形式将显而易见。因此,应理解,根据本公开的原理所构造的自适应性矩阵乘法器可以除本文中所具体阐述的方式之外的方式实施。本公开还界定在随附权利要求书及其等效内容中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1