一种矩阵处理装置、方法及处理设备
技术领域
本发明涉及数据处理领域,具体涉及一种矩阵处理装置、矩阵处理方法以及处理设备。
背景技术
当下互联网和物联网的可用数字数据呈指数级增长,这驱动了对高性能数据分析算法的需求。其中,深度神经网络(Deep Neural Network)在目标识别、自动驾驶和无人机导航等领域具有广阔的应用前景。但是深度神经网络需要进行大量重复数据计算,传统处理架构并不能在数据传输和运算上实现平衡且高效运行,尤其在处理大量乘加运算时,海量数据传输、载入、计算给传统的处理架构带来极大负荷。
脉动阵列(Systolic Array)结构是一种由多个处理单元耦合形成的网络,每个重复的处理单元可以独立地进行计算,并将结果传递给周围的处理单元。脉动阵列的结构特性使它能够在消耗较小的内存带宽的基础上实现高的运算吞吐量,这恰好满足了深度神经网络计算的特点需求。
在实际应用需求方面,深度神经网络在模型训练中除了经常需要海量载入矩阵,还经常需要载入经过平面旋转、倒序、转置等相对原矩阵进行了重构处理的矩阵。但在已知的现有技术中,用于矩阵重构的方法步骤繁多,而用于实现重构的装置复杂且操作逻辑繁冗;特别是在已公开的脉动阵列设计中,未能发现有任何方案做到了真正高效便捷地实现矩阵重构。
发明内容
针对上述问题,本发明的目的之一在于提供一种矩阵处理装置,其目的在于以向量为基本单位实现矩阵重构,从而能够高效便捷地实现脉动阵列中的矩阵平面旋转、矩阵转置等一系列以矩阵重构为核心的矩阵处理。
为实现上述目的,根据本发明的第一方面,提供一种矩阵处理装置。该矩阵处理装置包括节点网络,节点网络由多个结构相同的节点单元沿第一预设方向和第二预设方向耦合成二维矩阵的形式。每个节点单元均包括第一寄存器和第二寄存器,第一寄存器沿第一预设方向上的直线耦合成第一寄存器链,第二寄存器沿第二预设方向上的直线耦合成第二寄存器链。矩阵处理装置接收外部传入的输入矩阵,组成输入矩阵的向量个数不多于第二寄存器链的条数,上述向量包括单位元素,组成输入矩阵的向量从外部传入时分别进入对应的第二寄存器链,上述向量沿第一寄存器链或第二寄存器链传输,第一预设方向和第二预设方向正交。
具体的,每个节点单元还包括重构控制器。在每个节点单元中,重构控制器与第一寄存器以及第二寄存器分别相连。重构控制器包括激活状态和未激活状态;重构控制器处于激活状态时,将向量中的所有单位元素逐个从第二寄存器传入第一寄存器,使向量的传递方向从沿第二寄存器链切换到沿第一寄存器链;重构控制器处于未激活状态时,向量的传递方向保持不变。其中,处于激活状态的重构控制器所在的节点单元为重构节点单元,处于未激活状态的重构控制器所在的节点单元为非重构节点单元。
本发明通过处于激活状态的重构控制器,使向量从沿第二寄存器链传输切换到沿第一寄存器链传输,从而在不改变脉动阵列整体结构的前提下,通过改变输入矩阵中各个向量的传输方向从而实现了矩阵的重构。这种以重构控制器为重复控制单元的结构,使得矩阵处理装置布线简单、易于实现。此外,在实现方式上,仅需要将重构控制器置于激活状态,并将输入矩阵流水化输入,即可实现矩阵的流水化处理。
优选地,上述矩阵处理装置还包括译码器,译码器与节点网络相连。节点网络按行逐步读取整个输入矩阵中的每一个行向量,或按列逐步读取整个输入矩阵的每一个列向量。其中,译码器控制节点网络,使得每一个向量进入节点网络的时间差为一个时钟周期,在一个时钟周期内,每个向量最多有一个单位元素进入节点网络。
在译码器的控制下,输入矩阵各个向量的第一个单位元素在输入节点网络时呈阶梯状排布。呈这种构型排布的输入矩阵与呈阶梯状排布的重构节点单元相对应,能够使所有向量中位于矩阵同一行或同一列的单位元素在同一时钟周期完成传输方向改变,使得矩阵处理装置能够无缝衔接下一个同一行或同一列所有单位元素的转向操作;在流水化的单位元素批量转向过程中,高效便捷地实现矩阵重构。这种逻辑简单、操作便捷且基于流水化的矩阵重构或近似的技术,尚未发现有被任何文件公开。
优选地,上述节点单元还包括重构传动器。在每个节点单元中,重构传动器与重构控制器相连;重构传动器沿第二预设方向上的直线相互耦合;节点网络在第一预设方向上的外边缘由节点单元耦合而成,至少一条外边缘中的重构传动器沿第一预设方向上的直线相互耦合。重构传动器接收外部传入的重构控制信号并传递至目标节点单元内的重构传动器,重构控制信号用于将目标节点单元内的重构控制器置于激活状态。
通过重构控制信号,可以自定义重构节点单元的位置,从而可以根据输入矩阵的大小和输入位置灵活配置重构节点单元位置。在进行小矩阵的重构时,可以通过在最优位置部分配置重构节点单元,从而最大程度地减少输入矩阵在节点网络中不必要的流动时间,进而提高矩阵重构的效率。
更为优选地,上述重构传动器还接收外部传入的复位控制信号并传递至目标节点单元内的重构传动器,复位控制信号用于将目标节点单元内处于激活状态的重构控制器还原成未激活状态。
通过复位控制信号,可以将重构节点单元内的重构控制器还原成未激活状态,通过重构控制信号和复位控制信号的配合使用,可以在节点网络中灵活设置/擦除重构节点单元,在脉动阵列的流水化运行中,可以针对不同大小的输入矩阵和输入位置不同的情形灵活切换,提高了矩阵处理装置对于矩阵的处理能力。
更为优选地,上述矩阵处理装置还包括译码器,译码器与沿第一预设方向上的直线相互耦合的重构传动器相连,并向其发送重构控制信号和复位控制信号。译码器仅需与沿第一预设方向上的直线相互耦合的重构传动器相连,然后再通过重构传动器将上述信号传递至目标节点单元内的重构传动器;这种方法简化了布线的复杂度,使用一个信号便能实现对整个节点网络的控制。
优选地,还包括第三预设方向,第三预设方向平分第一预设方向和第二预设方向所成的夹角,且上述三个预设方向位于同一个二维平面内。沿第三预设方向上一条直线排布的多个节点单元内的重构控制器被固化设定为激活状态。
对于通常情况下执行满负载运算与重构的脉动阵列,通过将节点单元内的重构控制器固化为激活状态,可以在矩阵重构的过程中省略设置重构节点单元的过程,可以减少设置重构节点单元所需的硬件开销,同时简化操作逻辑。
优选地,上述矩阵处理装置还包括数据缓存阵列,用于接收传输方向切换过至少一次的输入矩阵,数据缓存阵列与第一寄存器链连接,数据缓存阵列与节点网络的数据交换口设置在第一预设方向上。
在深度神经网络运算中,复用矩阵的需求很常见,使用数据缓存阵列保存传输方向切换过至少一次的输入矩阵,不需要每次都对传入的输入矩阵进行重构,减少了输入矩阵的传输成本和重构成本,避免了多次传入同一矩阵的导致的逻辑冗余,提高了矩阵处理装置的实用性。重构后的矩阵存储在数据缓存阵列中,根据具体的应用需求选择读取方式,即可从数据缓存阵列中选择读取重构后矩阵,包括转置矩阵和平面旋转矩阵。
优选地,上述矩阵处理装置还包括数据存储器,数据存储器与第二寄存器链相连,数据存储器与节点网络的数据交换口设置在第二预设方向上。具体的,数据存储器包括掩码处理单元和数据存储单元,数据存储单元与掩码处理单元相连。
掩码处理单元接收外部传入的掩码矩阵和数据存储单元传入的输入矩阵,掩码矩阵和输入矩阵的行数和列数均相等。掩码处理单元根据掩码矩阵将输入矩阵中的不同单位元素掩盖为零或保持为原值,从而获得掩码后的输入矩阵,数据存储器还将掩码后的输入矩阵传入第二寄存器链。
现有技术中,如果只需要读取输入矩阵中的部分单位元素时,在不改变操作数地址的情况下,只能重新存储一个输入矩阵。本发明通过掩码处理单元和自定义的掩码矩阵,可以灵活的读取输入矩阵中的单位元素,而不需要重新存储一个输入矩阵,同时,该掩码操作不会改变数据存储单元内的输入矩阵。在脉动阵列进行乘加运算时,输入矩阵的零值对应的运算器自动关闭并输出为零,减少运算资源的使用,从而降低系统功耗。
本发明的另一目的在于提供一种矩阵处理方法,其目的在于以向量为基本单位实现矩阵重构,从而能够高效便捷地实现脉动阵列中的矩阵平面旋转、矩阵转置等一系列以矩阵重构为核心的矩阵处理。
为实现上述目的,根据本发明的第二方面,提供一种矩阵处理方法。提供输入矩阵和矩阵处理装置,输入矩阵包括向量,向量包括单位元素。矩阵处理装置包括节点单元,节点单元包括重构控制器;矩阵处理装置还包括平行于第一预设方向的第一寄存器链和平行于第二预设方向的第二寄存器链,第一预设方向和第二预设方向正交;该矩阵处理方法包括:
步骤1:将至少一个节点单元设置为重构节点单元,重构节点单元内的重构控制器被配置为激活状态;
步骤2:将组成输入矩阵的各个向量分别输入各条第二寄存器链;当向量传输至重构节点单元时,重构节点单元内的重构控制器将向量中的单位元素从第二寄存器链逐个传入第一寄存器链,并在第一寄存器链传输。
本发明仅需要将向量传递至重构节点单元,通过重构控制器即可改变向量的传输方向,在脉动阵列中实现矩阵重构。在脉动阵列的流水化运行中,仅需要使用上述矩阵处理方法,将各个输入矩阵流水化的传入矩阵处理装置中,即可实现矩阵的流水化处理,逻辑简单、易于实现。
优选地,节点单元包括重构传动器,上述矩阵处理方法还包括:将重构控制信号输入沿第一预设方向上的直线相互耦合的重构传动器,重构控制信号传递至目标节点单元内的重构传动器,并将目标节点单元内的重构控制器置于激活状态。通过该矩阵处理方法设置重构节点单元,能够根据具体实施场景自定义设置重构节点单元,提高了矩阵处理方法的灵活性和适用范围。
更为优选地,上述矩阵处理方法还包括:将复位控制信号输入上述沿第一预设方向上的直线相互耦合的重构传动器,复位控制信号传递至目标节点单元内的重构传动器,并将目标节点单元内的重构控制器还原成未激活状态。使用复位控制信号和重构控制信号配合,可以重新设置重构节点单元的位置,进一步提高了矩阵处理方法的灵活程度和适用范围。
优选地,提供掩码矩阵和数据存储器,数据存储器包括掩码处理单元,上述掩码矩阵和上述输入矩阵的行数和列数均相等。上述矩阵处理方法还包括:将掩码矩阵和输入矩阵输入掩码处理单元;掩码处理单元根据掩码矩阵将输入矩阵中不同的单位元素掩盖为零或保持原值,从而获得掩码后的输入矩阵;然后数据存储器将掩码后的输入矩阵中的各个向量分别输入各条第二寄存器链。
现有技术中,如果只需要输入矩阵中的部分单位元素时,在不改变操作数地址的情况下,只能重新存储一个输入矩阵。本发明通过掩码处理单元和自定义的掩码矩阵,可以灵活的读取输入矩阵中的单位元素,而不需要重新存储一个输入矩阵,同时,该掩码操作不会改变数据存储器内的输入矩阵,提高了矩阵处理方法对于矩阵的处理能力。在脉动阵列进行乘加运算时,输入矩阵的零值对应的运算器自动关闭并输出为零,减少运算资源的使用,从而降低系统功耗。
本发明的另一目的在于提供一种矩阵处理的处理设备,其目的在于以向量为基本单位实现矩阵重构,从而能够高效便捷地实现脉动阵列中的矩阵平面旋转、矩阵转置等一系列以矩阵重构为核心的矩阵处理。
为实现上述目的,根据本发明的第三方面,提供一种矩阵处理的处理设备。该处理设备包括处理器和存储器,该处理器包括上述第一方面中的任意一种矩阵处理装置,该存储器存储有计算机程序,该计算机程序被该处理器执行时,实现上述第二方面中的任一种矩阵处理方法的步骤。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
图1是本发明实施例提供的一种矩阵处理装置的结构示意图;
图2是本发明实施例提供的一种重构节点单元的分布示意图;
图3是本发明实施例提供的一种节点单元的结构示意图;
图4是本发明实施例提供的另一种节点单元的结构示意图;
图5是本发明实施例提供的一种数据存储器的结构示意图;
图6是本发明实施例提供的另一种矩阵处理装置的结构示意图;
图7是本发明实施例提供的一种矩阵处理方法的流程图;
图8是本发明实施例提供的一种掩码过程示意图;
图9是本发明实施例提供的另一种重构节点单元的分布示意图;
图10是本发明实施例提供的一种矩阵传输过程示意图;
图11是本发明实施例提供的一种节点网络从数据缓存阵列读取矩阵的示意图;
图12是本发明实施例提供的另一种矩阵处理装置的结构示意图;
图13是本发明实施例提供的另一种矩阵处理方法的流程图;
图14是本发明实施例提供的另一种矩阵传输过程示意图;
图15是本发明实施例提供的另一种节点网络从数据缓存阵列读取矩阵的示意图;
图16是本发明实施例提供的另一种矩阵处理装置的结构示意图;
图17是本发明实施例提供的另一种矩阵传输过程示意图;
图18是本发明实施例提供的另一种节点网络从数据缓存阵列读取矩阵的示意图;
图19是本发明实施例中提供的一种矩阵处理的处理设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述。显然,所给出的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有付出创造性劳动的前提下所获得的所有其它实施方法,均属于本申请的保护范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序,或者不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。此外,本申请所提及的“上”、“下”、“左”、“右”、“水平”、“竖直”均为相对方向,而不能将其视为具体实施时的物理限定。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
下面,对本发明所涉及的相关实施例进行具体说明。
图1是本发明实施例提供的一种矩阵处理装置100的结构示意图。矩阵处理装置100包括节点网络120、数据存储器130、译码器140和数据缓存阵列150。其中,节点网络120由节点单元110沿水平方向和竖直方向耦合成二维矩阵形式。每个节点单元110包括第一寄存器111、第二寄存器112和重构控制器113,第一寄存器111沿水平方向上的直线耦合成第一寄存器链;第二寄存器112沿竖直方向上的直线耦合成第二寄存器链;重构控制器113与第一寄存器111以及第二寄存器112分别连接。重构控制器113用于控制单位元素在第一寄存器链和第二寄存器链之间实现跳转。提供一个单位元素,从竖直方向输入第二寄存器链。具体的,重构控制器113处于激活状态时,重构控制器113与第一寄存器111之间的数据通道打开,重构控制器113与第二寄存器112之间的数据通道关闭,从而将单位元素传入第一寄存器111,实现单位元素从沿第二寄存器链传输切换到沿第一寄存器链传输。重构控制器113处于未激活状态时,重构控制器113与第一寄存器111之间的数据通道关闭,重构控制器113与第二寄存器112之间的数据通路打开,从而将单位元素传入第二寄存器112,保持单位元素继续沿第二寄存器链传输。使用类似或相近的结构实现上述功能的,也能作为重构控制器,均可视为对以上实施例的简单修改或替换。上述单位元素的数据类型包括整型、浮点型等,本实施例不对数据类型进行具体限定。
译码器140与数据存储器130以及节点网络120分别相连;数据存储器130与节点网络120在竖直方向上相连,且数据存储器130与节点网络120的数据交换口设置在节点网络120的下端,数据存储器130通过第二寄存器链与节点网络120进行数据交换;数据缓存阵列150与节点网络120在水平方向上相连,且数据缓存阵列150与节点网络120的数据交换口设置在节点网络120的右端,数据缓存阵列150通过第一寄存器链与节点网络120进行数据交换。
上述处于激活状态的重构控制器113所在的节点单元110为重构节点单元;处于未激活状态的重构控制器113所在的节点单元110为非重构节点单元。在本发明中至少提供三种设置重构节点单元的方法。
其一,将水平方向直线和竖直方向直线所成夹角的平分线上的多个节点单元内的重构控制器固化设定为激活状态,被固化设定为激活状态的重构控制器所在的节点单元即为重构节点单元,重构节点单元的个数在实施例中不做具体限定。
请参见图2,以三行三列的节点网络220为例,示出了几种可能的重构节点单元的分布情况。如图2(A)所示,节点网络220对角线上的所有节点单元210内的重构控制器都被固化设定为激活状态。又如图2(B)所示,节点网络220对角线上的两个节点单元210内的重构控制器被固化设定为激活状态,显而易见的是,可以将该对角线上的任意两个节点单元210内的重构控制器固化设定为激活状态。又如图2(C)所示,重构节点单元可以不排布在节点网络220的对角线上,而是排布在与上述对角线平行的一条直线上,显而易见的是,该直线即可以位于上述对角线的左侧,也可以位于上述对角线的右侧。在上述的多种情形中,并不对对角线的方向进行限定,该对角线的方向既可以从左下角向右上角延伸,也可以从右下角向左上角延伸。除此之外,还可以如图2(D)所示,将一个节点单元210内的重构控制器固化设定为激活状态,该节点单元210可以是节点网络220中的任意一个节点单元。
为了便于理解,上述实施列仅给出了三行三列的节点网络220中重构节点单元的分布情况,但在其它一些实施方式中,节点网络220可以包括更多或更少行数,也可以包括更多或更少列数,且每一行节点单元210的数量与每一列节点单元210的数量既可以相等也可以不相等。
其二,可以通过重构控制信号进行重构节点单元的设置。请参见图3,为了实施该方式,节点单元310包括第一寄存器311、第二寄存器312、重构控制器313以及重构传动器314。重构控制器313与第一寄存器311、第二寄存器312以及重构传动器314分别相连。重构传动器314沿竖直方向上的直线相互耦合,节点网络底部的节点单元310中的重构传动器314还沿水平方向上的直线相互耦合,上述节点网络底部的节点单元310中的重构传动器314还与译码器相连。
上述重构控制信号包括第一预设步长数和激活信号。具体的,实施该方式的方法包括:
第一,译码器将重构控制信号传入节点网络底部的节点单元310中的重构传动器314。
第二,重构控制信号传递至目标节点单元。具体的,重构控制信号包括两种传输方式。其一,在节点网络底部的节点单元310内,重构传动器314将第一预设步长数加上或减去单位步长后,将重构控制信号沿水平方向传递至下一重构传动器314,在同一个重构控制信号中,第一预设步长数的变化方式保持一致。其二,重构传动器314还将重构控制信号沿竖直方向传输,在经过与第一预设步长数相同个数的重构传动器314后,到达目标节点单元并停止传输,然后使用激活信号将目标节点单元内的重构控制器313置于激活状态。
在该实施方式中,通常情况下,激活信号被配置为将重构控制器313置于激活状态一个时钟周期,即重构控制器313将一个单位元素从第二寄存器312传入第一寄存器311后,便自动还原为未激活状态。但这仅是本实施例的一种优选方案,根据实际实施,也可以使用激活信号将重构控制器313一直置于激活状态。如果选用上述仅将重构控制器313置于激活状态一个时钟周期的技术方案,需要将重构控制信号和单位元素同时传入同一个节点单元310,且需要保持重构控制信号和单位元素的传输速度一致。
在其它一些实施方式中,节点网络顶部的节点单元310内的重构传动器314沿水平方向上的直线相互耦合,然后可以将重构控制信号传入节点网络顶部的节点单元310中的重构传动器314。重构控制信号的传输逻辑与上述实施方式中的传输逻辑一致,此处不再赘述。
其三,可以通过重构控制信号和复位控制信号进行重构节点单元设置。请参见图4,节点单元410包括第一寄存器411、第二寄存器412、重构控制器413以及重构传动器414。重构控制器413与第一寄存器411、第二寄存器412以及重构传动器414分别相连。重构传动器414沿竖直方向上的直线相互耦合,节点网络顶部的节点单元410中的重构传动器414还沿水平方向上的直线相互耦合,上述节点网络顶部的节点单元410中的重构传动器414还与译码器相连。
译码器向上述节点网络顶部的节点单元410中的重构传动器414发送重构控制信号和复位控制信号。其中,重构控制信号的传输逻辑和上述第二种方法中的传输逻辑一致,此处不再赘述。在该实施方式中,激活信号被配置为将目标节点单元内的重构控制器413一直置于激活状态。
复位控制信号包括第二预设步长数和复位信号。具体的,复位控制信号包括两种传输方式,第一,在节点网络顶部的节点单元410内,重构传动器414将第二预设步长数加上或减去单位步长后,将复位控制信号沿水平方向传递至下一重构传动器414,在同一个复位控制信号中,第二预设步长数的变化方式保持一致。第二,重构传动器414还将复位控制信号沿竖直方向传递,在经过与第二预设步长数相同个数的重构传动器414后,到达目标节点单元并停止传输,然后使用复位信号将目标节点单元内的重构控制器413还原成未激活状态。
在该实施方式中,通常将重构控制信号和复位控制信号传入同一个节点单元410,并保持上述两个预设步长数相等且变化方式一致。但这仅是本实施例的优选方案,在具体实施中,可以根据需要灵活调整。
在一些实施方式中,节点网络底部的节点单元410内的重构传动器414沿水平方向上的直线相互耦合,然后可以将重构控制信号和复位控制信号传入节点网络底部的节点单元410内。重构控制信号和复位控制信号的传输逻辑与上述实施方式的传输逻辑一致,此处不再赘述。
请参见图5,是本实施例提供的一种数据存储器的结构示意图。数据存储器530包括数据存储单元531和掩码处理单元532,数据存储单元531和掩码处理单元532相连。
数据存储单元531接收译码器传入的读取信号,将读取信号所指示的输入矩阵传入掩码处理单元532,同时,译码器还向掩码处理单元532发送掩码矩阵,掩码矩阵包括零值和非零值,且掩码矩阵的行数和列数均与输入矩阵相等。掩码处理单元532根据掩码矩阵,将掩码矩阵零值对应的输入矩阵的单位元素掩盖为零,将掩码矩阵非零值对应的输入矩阵的单位元素保持为原值,从而获得掩码后的输入矩阵。数据存储器530还将掩码后的输入矩阵从掩码处理单元532中传入节点网络。
为了便于理解,下面以矩阵重构中的矩阵转置和矩阵平面旋转为例,给出具体的矩阵处理过程。
示例一:
请参见图6,是本发明实施例提供的矩阵处理装置600的结构示意图。矩阵处理装置600包括节点网络620、数据存储器630、译码器640和数据缓存阵列650。节点网络620由节点单元610沿水平方向和竖直方向耦合成二维矩阵的形式。节点单元610包括第一寄存器、第二寄存器、重构控制器以及重构传动器。重构控制器与第一寄存器、第二寄存器以及重构传动器分别相连;第一寄存器沿水平方向上的直线耦合成第一寄存器链,第二寄存器沿竖直方向上的直线耦合成第二寄存器链;重构传动器沿竖直方向上的直线相互耦合,节点网络620底部的节点单元610中的重构传动器还沿水平方向相互耦合。
译码器640与节点网络620以及数据存储器630分别相连。数据存储器630包括数据存储单元631和掩码处理单元632,数据存储单元631和掩码处理单元632相连;数据存储器630与节点网络620在竖直方向上相连,且数据存储器630与节点网络620的数据交换口设置在节点网络620的下方,数据存储器630与节点网络620通过第二寄存器链进行数据交换。数据缓存阵列650与节点网络620在水平方向上相连,数据缓存阵列650与节点网络620的数据交换口设置在节点网络620的右端,数据缓存阵列650通过第一寄存器链与节点网络620进行数据交换。
提供一个输入矩阵W为
该输入矩阵存储在数据存储单元631中,最终期望或得一个转置矩阵
和平面旋转矩阵
参与深度神经网络的运算,根据需求,设定掩码矩阵K为
请参见图7,是本发明实施例提供的矩阵处理方法的流程图,该方法应用于矩阵处理装置600。具体的,矩阵处理方法包括:
步骤710:译码器640接收指令并进行译码,获得读取信号、掩码矩阵、重构控制信号、复位控制信号。译码器640将读取信号发送至数据存储单元631,数据存储单元631将输入矩阵W传入掩码处理单元632;同时,译码器640将掩码矩阵K传入掩码处理单元632。
请参见图8,掩码处理单元632根据掩码矩阵K,将0对应的输入矩阵W中的单位元素掩盖为零,将1对应的单位元素保持为原值,获得掩码后的输入矩阵。掩码后的输入矩阵经过上下颠倒处理后(记为矩阵Z)发送至节点网络620。
步骤720:请参见图9,译码器640将重构控制信号发送至节点单元(2,1)内的重构传动器。其中,重构控制信号的第一预设步长数为1,变化方式为减去一个单位步长;激活信号被配置为将目标节点单元内的重构控制器一直置于激活状态。
节点单元(2,1)内的重构传动器按照为1的第一预设步长数,将重构控制信号传递至节点单元(1,1),并使用激活信号将其内的重构控制器一直置于激活状态;节点单元(2,1)内的重构传动器还将第一预设步长数减去1后,传入节点单元(2,2),此时,第一预设步长数为0,激活信号将节点单元(2,2)内的重构控制器一直置于激活状态。由此,节点单元(1,1)和节点单元(2,2)被设置为重构节点单元。
步骤730:图10是矩阵Z在节点网络620的传输过程示意图。具体的,请参见图10(A),在周期1时,译码器640控制矩阵Z的第二列向量相对于第一列向量延后一个时钟周期进入节点网络620。
在周期2中,单位元素d进入节点网络620并在第二寄存器链中传输。
在周期3中,单位元素a和单位元素e进入节点网络620并在第二寄存器链中传输;同时,单位元素d传入重构节点单元(1,1),处于激活状态的重构控制器将单位元素d从第二寄存器传入第一寄存器,并沿第一寄存器链传输直至存储在数据缓存阵列650中。类似的,传输至重构节点单元(2,2)内的单位元素e,被处于激活状态的重构控制器从第二寄存器传入第一寄存器,并沿第一寄存器链传输直至存储在数据缓存阵列650中。
在周期4中,单位元素a和单位元素b分别传输至重构节点单元(1,1)和重构节点单元(2,2),处于激活状态的重构控制器将单位元素a和单位元素b分别从第二寄存器传入第一寄存器,并沿第一寄存器链传输直至存储在数据缓存阵列650中。
在周期5和周期6时,已经完成了矩阵Z中所有单位元素传输方向的改变。上述单位元素继续沿水平方向传输,直至存储在数据缓存阵列650中。
步骤740:译码器640将复位控制信号传入节点单元(2,1)内的重构传动器。其中,复位控制信号的第二预设步长数为1,变化方式为减去一个单位步长;复位信号被配置为将目标节点单元内的重构控制器还原为未激活状态。
节点单元(2,1)内的重构传动器按照为1的第二预设步长数,将复位控制信号传递至节点单元(1,1),并使用复位信号将其内的重构控制器还原为未激活状态;节点单元(2,1)内的重构传动器还将第二预设步长数减去1后,传入节点单元(2,2),此时,第二预设步长数为0,复位信号将节点单元(2,2)内的重构控制器还原为未激活状态。由此,节点单元(1,1)和节点单元(2,2)被还原为非重构节点单元。
步骤750:请参见11(A),将数据缓存阵列650中的矩阵按照先进后出的规则读取至节点网络620,即获得预期的转置矩阵
另外,请参见图11(B),将数据缓存阵列650中的矩阵按照先进先出的规则读取至节点网络620,即获得预期的平面旋转矩阵
显而易见的,在上述步骤720中,可以将第一预设步长数设置为0,将第一预设步长数的变化方式设置为加上一个单位步长,然后将重构控制信号传入节点单元(2,2)内的重构传动器并向左传输,也可以将节点单元(1,1)、节点单元(2,2)设置成重构节点单元,从而实现矩阵的重构。在上述步骤740中,还可以将第二预设步长数设置为0,将第二预设步长数的变化方式设置为加上一个单位步长,然后将重构控制信号传入节点单元(2,2)内的重构传动器并向左传输,从而将节点单元(1,1)、节点单元(2,2)还原成非重构节点单元。
显而易见的,在步骤730中,可以使用译码器640控制矩阵Z中的第二列向量相对于前一列向量提前或延后任意个时钟周期进入节点网络620,而不仅是上述实施例所示出的情况。除此之外,还可以将各个向量同时输入节点网络620。上述实施方式均可以实现矩阵的重构。
在上述步骤750中,并不仅限于所示出的先进先出读取规则和先进后出读取规则,而是可以根据实际需求对重构后的矩阵进行读取。
以上所列举的情况只是本实施例中的一部分实现方式,本领域技术人员未付出创造性劳动所获得的其它实现方式,均包括在本申请的包括范围中。
示例二:
请参见图12,是本发明实施例提供的矩阵处理装置1200的结构示意图。矩阵处理装置1200包括节点网络1220、数据存储器1230、译码器1240和数据缓存阵列1250。节点网络1220由节点单元1210沿水平方向和竖直方向耦合成二维矩阵的形式。节点单元1210包括第一寄存器、第二寄存器、重构控制器以及重构传动器。重构控制器与第一寄存器、第二寄存器以及重构传动器分别相连;第一寄存器沿水平方向上的直线耦合成第一寄存器链,第二寄存器沿竖直方向上的直线耦合成第二寄存器链;重构传动器沿竖直方向上的直线相互耦合,节点网络1220顶部的节点单元1210中的重构传动器还沿水平方向相互耦合。
译码器1240与节点网络1220以及数据存储器1230分别相连。数据存储器1230与节点网络1220在竖直方向上相连,且数据存储器1230与节点网络1220的数据交换口设置在节点网络1220的上方,数据存储器1230与节点网络1220通过第二寄存器链进行数据交换。数据缓存阵列1250与节点网络1220在水平方向相连,数据缓存阵列1250与节点网络1220的数据交换口设置在节点网络1220的左端,数据缓存阵列1250通过第一寄存器链与节点网络1220进行数据交换。数据缓存阵列1250与节点网络1220为层叠结构,据此可以理解以下的传输逻辑。
提供一个输入矩阵W为
该输入矩阵存储在数据存储器1230中,最终期望获得一个转置矩阵
和一个平面旋转矩阵
参与深度神经网络的运算。
请参见图13,是本发明实施例提供的矩阵处理方法的流程图,该方法应用于矩阵处理装置1200。具体的,矩阵处理方法包括:
步骤1310:译码器1240接收指令并译码,获得读取信号和重构控制信号。译码器1240发送读取信号至数据存储器1230,数据存储器1230根据读取信号的指示,将输入矩阵W上下颠倒后,发送至节点网络1220。
请参见图14(A),译码器1240对输入矩阵进行预处理,即控制输入矩阵的第二列向量相对于第一列向量提前一个时钟周期进入节点网络1220并沿竖直方向在第二寄存器链中传输。
步骤1320:图14是矩阵在节点网络1220中的传输过程示意图。具体的,在周期2时,单位元素d传入节点网络1220中的节点单元(1,2)并沿竖直方向在第二寄存器链传输,同时,译码器1240向节点单元(1,2)发送重构控制信号,重构控制信号的第一预设步长数为1,变化方式为减去一个单位步长;激活信号被配置为将目标节点单元内的重构控制器置于激活状态一个时钟周期。
在周期3时,节点单元(1,2)内的重构传动器按照为1的第一预设步长数,将重构控制信号传入节点单元(2,2),并使用激活信号将该节点单元内的重构控制器置于激活状态一个时钟周期,同时单位元素d到达该节点单元,处于激活状态的重构控制器将单位元素d从第二寄存器传入第一寄存器,并沿水平方向在第一寄存器链中传输直至存储至数据缓存阵列1250中。同时,节点单元(1,2)内的重构传动器将第一预设步长数减去1后,传入节点单元(1,1),并使用激活信号将该节点单元内的重构控制器置于激活状态一个时钟周期,此时,单位元素c进入节点单元(1,1),处于激活状态的重构控制器将单位元素c从第二寄存器传入第一寄存器,并沿水平方向在第一寄存器链中传输直至存储至数据缓存阵列1250中。与此同时,单位元素b进入节点单元(1,2),译码器1240继续向节点单元(1,2)发送重构控制信号。
周期4时,单位元素a进入节点单元(1,1),且单位元素b传输至节点单元(2,2),周期3传入的重构控制信号将节点单元(1,1)和节点单元(2,2)中的重构控制器置于激活状态一个时钟周期,该重构控制信号的传输逻辑与上述重构控制信号的传输逻辑一致,此处不在赘述。
周期5至周期6,各个单位元素沿水平方向传输直至存储在数据缓存阵列1250中。
步骤1430:请参见图15(A),将数据缓存阵列1250中的矩阵按照先进先出的规则读取至节点网络1220,即获得预期的转置矩阵
另外,请参见图15(B),将数据缓存阵列1250中的矩阵按照先进先后的规则读取至节点网络1220,即获得预期的平面旋转矩阵
除了上述读取规则之外,本实施例还提供一种适用于矩阵流水化处理的读取方法和数据缓存阵列1250。请参见图15(C),该数据缓存阵列1250内的存储空间复制节点单元1210的耦合结构,且每个存储空间与节点单元1210一一对应,提供一个数据读取信号,从存储单位元素a的存储空间开始流动,流动的方向包括向右和向下,当数据读取信号流经存储空间时,该存储空间内存储的数据映射输出至对应的节点单元1210。按照该读取方法,可获得预期的转置矩阵
在本实施例的其它实现方式中,可以使用译码器1240控制矩阵的第二列向量相对于前一列向量延后一个时钟周期进入节点网络1220,同时向节点单元(1,1)发送重构控制信号并向右传输,其中第一预设步长数设置为零,变化方式为加上一个单位步长。以上所列举的情况只是本实施例中一部分实现方式,本领域技术人员未付出创造性劳动所获得的其它实现方式,均可视为对以上实施例的简单修改或替换。
示例三:
请参见图16,是本发明实施例提供的矩阵处理装置1600的结构示意图。矩阵处理装置1600包括节点网络1620、数据存储器1630、译码器1640和数据缓存阵列1650。节点网络1620由节点单元1610沿水平方向和竖直方向耦合成二维矩阵的形式。节点单元1610包括第一寄存器、第二寄存器以及重构控制器。重构控制器与第一寄存器以及第二寄存器分别相连;第一寄存器沿水平方向上的直线耦合成第一寄存器链,第二寄存器沿竖直方向上的直线耦合成第二寄存器链。
译码器1640与节点网络1620以及数据存储器1630分别相连。数据存储器1630与节点网络1620在竖直方向上相连,且数据存储器1630与节点网络1620的数据交换口设置在节点网络1620的上方,数据存储器1630与节点网络1620通过第二寄存器链进行数据交换。数据缓存阵列1650与节点网络1620在水平方向相连,数据缓存阵列1650与节点网络1620的数据交换口设置在节点网络1620的右端,数据缓存阵列1650通过第一寄存器链与节点网络1620进行数据交换。
其中,节点单元(1,1)和节点单元(2,2)内的重构控制器被固化设定为激活状态。
提供一个输入矩阵W为
该输入矩阵存储在数据存储器1630中,最终期望获得一个转置矩阵
和一个平面旋转矩阵
参与深度神经网络的运算。对输入矩阵W进行重构的步骤包括:
译码器1640接收指令并进行译码,获得读取信号。请参见图17(A),译码器1640将读取信号发送至数据存储器1630,数据存储器1630根据读取信号的指示将输入矩阵W上下颠倒后,传入节点网络1620,并沿竖直方向在第二寄存器链中传输。
图17是输入矩阵W在节点网络1620中的传输过程示意图。具体的,在周期2时,单位元素c和单位元素d分别传输至节点单元(1,1)和节点单元(1,2),其中节点单元(1,1)为重构节点单元,该节点单元内处于激活状态的重构控制器将单位元素c从第二寄存器传入第一寄存器并沿水平方向传输,直至存储在数据缓存阵列1650中。
周期3时,单位元素d传输至重构节点单元(2,2),该节点单元内处于激活状态的重构控制器将单位元素d从第二寄存器传入第一寄存器并沿水平方向传输,直至存储在数据缓存阵列1650中。
单位元素a和单位元素b的传输逻辑分别对应单位元素c和单位元素d,此处不在赘述。
请参见图18(A),将数据缓存阵列1650中的矩阵按照先进后出的规则读取至节点网络1620,即获得预期的转置矩阵
另外,请参见图18(B),将数据缓存阵列1650中的矩阵按照先进先出的规则读取至节点网络1620,即获得预期的平面旋转矩阵
在本实施例中,并不仅限于将节点单元(1,1)和节点单元(2,2)内的重构控制器固化设置为激活状态,而是包括多种实施方式。例如,可以将节点单元(1,2)和节点单元(2,1)内的重构控制器固化设置为激活状态,也可以实现矩阵重构。因此,本实施例所示出的仅是一部分实现方式,本领域技术人员未付出创造性劳动所获得的其它实现方式,均包括在本申请的保护范围中。
上述示例一、示例二以及示例三中,为了便于理解,以两行两列或三行三列的输入矩阵进行了举例。显然,可以根据矩阵处理装置中节点网络的节点单元数量,向矩阵处理装置输入M行N列的矩阵。其中,M和N均是不小于1的正整数,M和N既可以相等也可以不相等。
上述所提及的矩阵处理装置100、矩阵处理装置600、矩阵处理装置1200以及矩阵处理装置1600,并不限于上述所示出的实现方式,而是可以包括更多或更少的部件。
请参见图19,是本发明实施例提供的一种矩阵处理的处理设备的结构示意图。其中,处理设备1900包括一个或多个处理器1910、通信接口1920、存储器1930以及数据总线1940。上述处理器1910、通信接口1920和存储器1930可以通过图19示出的数据总线1940相连,也可以通过无线传输等其它方式实现通信。具体的,处理器1910包括前述实施例中所揭示的矩阵处理装置的结构,用于执行存储器1930中存储的程序代码,该程序代码被执行时,实现前述实施例中所揭示的矩阵处理方法的相关功能。
显而易见的是,处理器1910包括中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
通信接口1920可以为有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他模块或装置设备进行通信。例如,本申请实施例中通信接口1920具体可用于接收用户输入的输入数据;或者接收外部设备的数据等。
存储器1930包括易失性存储器(Volatile Memory),例如随机存取存储器(RandomAccess Memory,RAM);存储器也可以包括非易失性存储器(Non-Volatile Memory),例如只读存储器(Read-Only Memory,ROM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);存储器还可以包括上述种类的存储器的组合。
在具体的实现中,并不限于图19所示出的实现方式,而是可以包括更多或更少的部件,本实施例并不进行具体限定。
本领域普通技术人员可以意识到,结合本文中的实施例所揭示的内容,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。