发明内容
针对上述问题,根据本发明的第一方面,提供一种矩阵处理装置,从而能够选择执行多种常见类型的矩阵处理操作。
该矩阵处理装置包括基本运算模块、元素位置移动模块以及数据流时序变换模块,数据流时序变换模块连接在基本运算模块与元素位置移动模块之间。
其中,数据流时序变换模块用于接收不规整的数据矩阵,不规整的数据矩阵包括由基本运算模块传入的基本运算结果矩阵,不规整的数据矩阵的多条向量之间或多组向量之间存在至少一个矩阵元素错位,数据流时序变换模块用于将不规整的数据矩阵变换得到不存在矩阵元素错位的数据矩阵。
除此之外,数据流时序变换模块还用于将外部传入的数据矩阵变换得到均匀延时阶梯数据流矩阵,变换得到的均匀延时阶梯数据流矩阵传输至元素位置移动模块的输入端。
上述均匀延时阶梯数据流矩阵的行向量相对于上一个行向量沿同一方向错位相同个数的矩阵元素,或列向量相对于上一个列向量沿同一方向错位相同个数的矩阵元素;不存在上一个向量时,跳过上述错位处理。
本发明使用数据流时序变换模块,消除不规整的数据矩阵中的矩阵元素错位,从而得到不存在矩阵元素错位的数据矩阵;同时还可以使用数据流时序变换模块,得到均匀延时阶梯数据流矩阵,并发送至元素位置移动模块,进行后续的矩阵处理操作。通过数据流时序变换模块,使多种不同类型的矩阵处理操作均能分别获取/得到对应的数据矩阵,能够满足各个执行部件对于矩阵形态的不同需求。除此之外,本发明有多种不同类型的矩阵处理操作复用同一个元素位置移动模块,提高了硬件资源的利用率,而不需要针对每种不同类型的矩阵处理操作,分别设置多种不同的处理电路,节省总体电路的面积。
优选地,上述数据流时序变换模块包括解码器、数据分配器和数据流时序变换器。解码器与数据分配器相连,解码器与数据分配器还分别与数据流时序变换器相连。
其中,解码器用于解码传入数据流时序变换模块的指令,并向数据流时序变换器发送解码出的指令。该解码器还用于识别解码出的指令所对应的指令类别,并将该类别指令对应的指令类别识别信息发送至数据分配器。
数据分配器用于接收上述指令类别识别信息,并向数据流时序变换器发送对应的数据矩阵,包括不规整的数据矩阵和外部传入的数据矩阵,外部传入的数据矩阵既可以是不规整的数据矩阵,也可以是不存在矩阵元素错位的数据矩阵。
数据流时序变换器基于所接受到的指令类别,执行以下其中一种功能。
数据流时序变换器用于按行或按列统一不规整的数据矩阵中各条向量的时序,以消除不规整的数据矩阵中的矩阵元素错位。
数据流时序变换器还用于设置外部传入的数据矩阵中各条向量的时序,以获取均匀延时阶梯数据流矩阵。均匀延时阶梯数据流矩阵中任意连续两条行向量之间的时序间隔相等,或任意连续两条列向量之间的时序间隔相等。
通过解码器以及数据分配器的配合工作,使数据流时序变换器能够对应获知指令类别,并能够获取该类别指令所对应的数据矩阵,从而能够根据该类别指令的指示,消除不规整的数据矩阵中的矩阵元素错位或产生均匀延时阶梯数据流矩阵。
优选地,上述矩阵处理装置还包括指令延时寄存器和数据延时寄存器,指令延时寄存器和数据延时寄存器分别分为第一级寄存器和第二级寄存器。
第一级指令延时寄存器用于存储矩阵元素位置移动类命令,矩阵元素位置移动类命令包括矩阵转置类命令、矩阵回转类命令和自定义矩阵元素位置移动类命令。
第一级数据延时寄存器用于存储需要执行矩阵元素位置移动操作的数据矩阵。
第二级指令延时寄存器用于存储基本运算类命令和/或自定义矩阵元素位置移动类命令。
第二级数据延时寄存器用于存储不存在矩阵元素错位的基本运算结果矩阵和/或需要执行自定义矩阵元素位置移动操作的数据矩阵。
通过指令延时寄存器和数据延时寄存器暂存指令和数据,以保证数据流时序变换模块或元素位置移动模块在进行其它处理时,其它待处理的指令或数据可以暂存,而不同时传入数据流时序变换模块或元素位置移动模块,避免和其它处理发送冲突,保证了装置的稳定性。
更为优选地,上述矩阵处理装置还包括指令选择器和数据选择器。指令选择器的输入端分别与第一级指令延时寄存器和基本运算模块相连,指令选择器的输出端分别与数据流时序变换模块和数据选择器的输入端相连。数据选择器的输入端还分别与第一级数据延时寄存器和基本运算模块相连,数据选择器的输出端还与数据流时序变换模块相连。
其中,指令选择器用于从接收到的命令中选择命令并输出,前述命令包括矩阵元素位置移动类命令和/或基本运算类命令,前述选择命令包括在接收到的命令中存在至少一条基本运算类命令时,优先将基本运算类命令输出,再处理其它类命令。该指令选择器还用于向数据选择器发送与选择输出的命令相对应的指令类别识别信息,指令选择器还用于向数据流时序变换模块发送选择出的命令。
数据选择器用于接收上述指令类别识别信息,并根据指令类别识别信息从第一级数据延时寄存器和基本运算模块中读取相应的数据矩阵,该数据选择器还用于将读取到的数据矩阵发送至数据流时序变换模块。
通过数据选择器和指令选择器的配合工作,使数据流时序变换模块接收到的命令与接收到的数据矩阵对应,保证了数据流时序变换模块能够准确地对数据矩阵进行相应的处理。同时,通过将数据选择器预设为优选处理基本运算类命令,使得基本运算结果矩阵能够被数据流时序变换模块优先处理,从而使基本运算模块能够进行下一个处理操作,实现基本运算模块的流水化运行。
更为优选地,上述矩阵处理装置还包括解码器和数据发配控制器,解码器与数据发配控制器相连。解码器还分别与第一级指令延时寄存器和基本运算模块相连,数据发配控制器还分别与第一级数据延时寄存器和基本运算模块相连。
其中,解码器用于接收外部传入的矩阵元素位置移动类命令和基本运算类命令,并选择向第一级指令延时寄存器发送矩阵元素位置移动类命令,和/或向基本运算模块发送基本运算类命令。
解码器还用于识别解码出的指令所对应的指令类别,并将该类别指令对应的指令类别识别信息发送至数据发配控制器。数据发配控制器用于根据指令类别识别信息,向基本运算模块或第一级数据延时寄存器发送对应的外部传入的数据矩阵。
通过解码器向数据发配控制器发送指令类别识别信息,使数据发配控制器将该类别指令所对应的数据矩阵发送至对应的部件,保证了各个部件在执行不同类型的指令时,所接收到的数据矩阵与指令是一一对应的。
更为优选地,上述元素位置移动模块包括预处理模块和执行模块。
其中,预处理模块用于接收矩阵转置类命令或矩阵回转类命令并生成数据选择矩阵。数据选择矩阵提供待处理数据矩阵中各个元素在位置移动结果矩阵中的最终位置信息,待处理数据矩阵包括均匀延时阶梯数据流矩阵和不存在矩阵元素错位的数据矩阵。
执行模块用于接收待处理数据矩阵中的元素,并基于数据选择矩阵提供的最终位置信息,重新排列待处理数据矩阵中的元素,形成位置移动结果矩阵。
通过预处理模块接收不同类型的指令,并生成包括不同最终位置信息的数据选择矩阵,从而在执行模块中重新排列待处理数据矩阵中的元素,得到与指令类型对应的位置移动结果矩阵。通过上述过程,使得不同类型的矩阵处理操作可以复用同一个元素位置移动模块,节省了分别设置不同处理模块所需的硬件开销。
更为优选地,上述预处理模块还用于接收指令附属提示数据信息,指令附属提示数据信息包括矩阵转置类命令附属的矩阵大小提示信息,或矩阵回转类命令附属的回转预设值信息。
通过指令附属提示数据信息,使预处理模块生成的数据选择矩阵能够提供与待处理矩阵相互匹配的最终位置信息。除此之外,可以通过自定义指令附属提示数据信息,灵活地生成数据选择矩阵,从而灵活地获取不同大小和/或不同回转位置的位置移动结果矩阵。
更为优选地,上述矩阵处理装置仅对附带有数据有效信息的数据矩阵进行处理,数据有效信息用于标注其对应的数据矩阵为有效数据。
使用数据有效信息,能够在矩阵处理的过程中,灵活地选择是否处理该数据矩阵,能够快速区分出在本发明的装置中无需处理的数据矩阵,简化控制逻辑。通过矩阵处理装置仅对有效数据进行处理操作,降低系统功耗同时提升流水效率。
针对上述问题,根据本发明的第二方面,提供一种矩阵处理方法,从而能够选择执行多种常见的矩阵操作。
提供基本运算模块、数据流时序变换模块和元素位置移动模块。提供基本运算类命令和/或矩阵元素位置移动类命令,矩阵元素位置移动类命令包括矩阵转置类命令、矩阵回转类命令和自定义矩阵元素位置移动类命令。
矩阵处理方法包括:
当执行基本运算类命令、矩阵回转类命令和自定义位置移动类命令时,使用数据流时序变换模块接收不规整的数据矩阵,不规整的数据矩阵包括外部传入的数据矩阵和基本运算模块输出的基本运算结果矩阵,不规整的数据矩阵的多条向量或多组向量之间存在至少一个矩阵元素错位。然后使用数据流时序变换模块将不规整的数据矩阵变换得到不存在矩阵元素错位的数据矩阵。
当执行矩阵转置类命令时,使用数据流时序变换模块接收外部传入的数据矩阵并产生均匀延时阶梯数据流矩阵。均匀延时阶梯数据流矩阵的行向量相对于上一个行向量沿同一方向错位相同个数的矩阵元素,或列向量相对于上一个列向量沿同一方向错位相同个数的矩阵元素。不存在上一个向量时,跳过错位处理。然后将均匀延时阶梯数据流矩阵发送至元素位置移动模块生成位置移动结果矩阵。
上述外部传入的数据矩阵既可以是不规整的数据矩阵,也可以是不存在矩阵元素错位的数据矩阵。
本发明通过数据流时序变换模块,分别执行不同类型的指令,以获取不存在矩阵元素错位的数据矩阵和/或获取均匀延时阶梯数据流矩阵,并将上述矩阵传输至元素位置移动模块,进行后续的矩阵处理,从而可以执行不同类型的矩阵处理操作。
针对上述问题,根据本发明的第三方面,提供一种处理器,该处理器包括上述第一方面所揭示的矩阵处理装置。
针对上述问题,根据本发明的第四方面,提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时,实现上述第二方面所揭示的矩阵处理方法的步骤。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述。显然,所给出的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有付出创造性劳动的前提下所获得的所有其它实施方法,均属于本申请的保护范围。
本申请的说明书和权利要求书及所述附图中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
下面,对本发明涉及的相关实施例进行具体说明。其中,“指令”与“命令”常可被互换使用,“信息”与“信号”也常可被互换使用。
请参见图1,是本发明实施例提供的一种执行矩阵处理方法的流程示意图。
首先,解码器接收指令进行解码,获得指令类别和指令类别识别信息。
若该指令属于基本运算类命令,解码器将该指令发送至基本运算模块。同时,解码器将指令类别识别信息发送至数据发配控制器,数据发配控制器基于该指令类别识别信息,将待进行基本运算操作的数据矩阵发送至基本运算模块。待进行基本运算操作的数据矩阵在一些实施方式中,可以是外部传入的数据矩阵。然后使用基本运算模块生成并输出不规整的基本运算结果矩阵。输出的基本运算结果矩阵发送至数据流时序变换模块,变换得到不存在矩阵元素错位的基本运算结果矩阵。数据流时序变换模块还将不存在矩阵元素错位的基本运算结果矩阵和基本运算类命令发送至元素位置移动模块,得到位置移动结果矩阵。
若该指令属于矩阵转置类命令,解码器将该指令发送至数据流时序变换模块,并将指令类别识别信息发送至数据发配控制器,数据发配控制器基于该指令类别识别信息,将待进行矩阵转置操作的数据矩阵发送至数据流时序变换模块。在一些实施方式中,待进行矩阵转置操作的数据矩阵可以是外部传入的数据矩阵。数据流时序变换模块将待进行矩阵转置操作的数据矩阵变换成均匀延时阶梯数据流矩阵。数据流时序变换模块还将该指令和均匀延时阶梯数据流矩阵发送至元素位置移动模块,元素位置移动模块根据该指令类别,得到对应的位置移动结果矩阵。
若该指令属于矩阵回转类命令,解码器将该指令发送至数据流时序变换模块,并将指令类别识别信息发送至数据发配控制器,数据发配控制器基于该指令类别识别信息,将待进行矩阵回转操作的数据矩阵发送至数据流时序变换模块。在一些实施方式中,待进行矩阵回转操作的数据矩阵可以是外部传入的数据矩阵。数据流时序变换模块将待进行矩阵回转操作的数据矩阵变换成不存在矩阵元素错位的数据矩阵。数据流时序变换模块还将该指令和不存在矩阵元素错位的数据矩阵发送至元素位置移动模块,元素位置移动模块根据该指令类别,得到对应的位置移动结果矩阵。
若该指令属于自定义矩阵元素位置移动类命令,解码器将该指令发送至数据流时序变换模块,并将指令类别识别信息发送至数据发配控制器,数据发配控制器基于该指令类别识别信息,将待进行自定义矩阵元素位置移动操作的数据矩阵发送至数据流时序变换模块。在一些实施方式中,待进行自定义矩阵元素位置移动操作的数据矩阵可以是外部传入的数据矩阵。数据流时序变换模块将待进行自定义矩阵元素位置移动操作的数据矩阵变换成不存在矩阵元素错位的数据矩阵。数据流时序变换模块还将该指令和不存在矩阵元素错位的数据矩阵发送至元素位置移动模块,元素位置移动模块根据该指令类别,得到对应的位置移动结果矩阵。
请参见图2,是本发明实施例提供的一种适用于执行基本运算操作的矩阵处理装置200的结构示意图。
矩阵处理装置200包括解码器210、数据发配控制器220、基本运算模块230、数据流时序变换模块240以及元素位置移动模块250。数据流时序变换模块240连接在基本运算模块230与元素位置移动模块250之间的线路上。
解码器210与数据发配控制器220相连,解码器210和数据发配控制器220还分别与基本运算模块230相连。解码器210用于解码指令,从而获取指令类别和指令类别识别信息。解码器210将解码出的基本运算类命令发送至基本运算模块230,同时还将基本运算类命令对应的指令类别识别信息发送至数据发配控制器220,数据发配控制器220基于该指令类别识别信息,将待进行基本运算操作的数据矩阵发送至基本运算模块230。
基本运算模块230基于该指令,将待进行基本运算操作的数据矩阵进行处理后得到不规整的基本运算结果矩阵,然后将不规整的基本运算结果矩阵和该指令发送至数据流时序变换模块240。
数据流时序变换模块240基于该基本运算类命令,消除上述不规整的基本运算结果矩阵中的矩阵元素错位,然后将不存在矩阵元素错位的基本运算结果矩阵和该指令发送至元素位置移动模块250。
元素位置移动模块250重新排布不存在矩阵元素错位的基本运算结果矩阵中的矩阵元素,得到位置移动结果矩阵。在一些实施方式中,元素位置移动模块包括多个选择单元,选择单元基于最终位置信息,选择输出接收到的矩阵元素,元素位置移动模块以此实现矩阵元素的重新排列。
请参见图3,是本实施例提供的一种基本运算模块的结构示意图。在一种优选的实施方式中,基本运算模块包括两个基础模块,该基础模块能够执行的基本运算类型至少包括大小比较运算和累加运算。其中,大小比较运算包括进行大小比较后输出最大值,或进行大小比较后输出最小值。
两个基础模块依次相连形成多级设置,每个基础模块均能够按照同一组输入向量的排列顺序,分别获取两个矩阵元素。在其它一些实现方式中,基本运算模块可以包括更多或更少的基础模块,每个基础模块可以分别获取多个矩阵元素,而不限于本实施例所示出的两个。具体的,基础模块可获取的矩阵元素数量与基础模块的数量的乘积不小于该输入向量中的元素个数。
基本运算模块支持至少两种运算模式,包括整段运算模式和分段运算模式。
在整段运算模式下,第一级的基础模块[0]对其获得的矩阵元素进行运算,并输出运算结果至第二级基础模块[1],后续级的基础模块(基础模块[1])对上一级的基础模块所传入的运算结果及其自身获得矩阵元素进行运算,得到运算结果,若该基础模块已是获取了矩阵元素的最后一级基础模块,则输出运算结果,作为基本运算结果向量中的其中一位矩阵元素,除该位外,基本运算结果向量的其它位置均被赋值为零。
根据上述过程,请参见图4(A),提供一个不规整的向量A在整段运算模式下,执行累加运算。其中,不规整的向量A的前两个矩阵元素(矩阵元素1和矩阵元素2)与后两个矩阵元素(矩阵元素3和矩阵元素4)存在一个矩阵元素错位。
基本运算模块使用基础模块[0]接收向量A的前两个矩阵元素,基础模块[0]进行累加运算后,获取运算结果3,并将该运算结果传入基础模块[1]。基础模块[1]还接收向量A的后两个矩阵元素,并与运算结果3进行累加运算,得到运算结果10作为基本运算结果向量B的最后一位矩阵元素,除最后一位外,其它位的矩阵元素均被赋值为零,从而得到基本运算结果向量B,基本运算结果向量B的前两个矩阵元素与后两个矩阵元素存在一个矩阵元素错位。
数据流时序变换模块接收基本运算结果向量B,消除该向量中的矩阵元素错位,获得不存在矩阵元素错位的向量C并发送至元素位置移动模块。元素位置移动模块接收数据选择矩阵中的一条向量,该向量包括矩阵元素4,其中,矩阵元素4与向量C中的最后一位矩阵元素(矩阵元素10)对应。在其它一些实施方式中,该数据选择矩阵可以是指令解码得到的,也可以是由外部传入的。
元素位置移动模块基于上述矩阵元素的对应关系,将向量C中的矩阵元素重新排列,获得位置移动结果向量D。
应当注意的是,数据选择矩阵仅是提供最终位置信息,而不能将其理解成数据选择矩阵的各个矩阵元素必须为上述实施例所示例性提及的特定值,亦不能将其理解成数据选择矩阵的各个矩阵元素必须相等。
以上为一个向量在整段运算模式下执行累加运算的过程。对于一个数据矩阵,该矩阵中的每一个向量均经过与上述类似的处理过程,最终形成位置移动结果矩阵。
在分段运算模式下,数据矩阵中的每个向量会被分为多个分段,每个分段都包括结束标志位。每个分段中的矩阵元素进行独立运算,若该分段的矩阵元素被不同的基础模块获取,则处于上级的基础模块会将该分段的部分运算结果传入下一级基础模块,与该基础模块所获取并属于同一分段的矩阵元素进行运算,直至该分段所有的矩阵元素全部参与运算。每个分段的运算结果从各自的结束标志位输出,非结束标志位对应的输出均被赋值为零。
根据上述过程,请参见图4(B),提供一个不规整的向量A,在分段运算模式下,执行比较大小运算获得最小值。将不规整的向量A设置为两个分段,分段的结束标志位分别设置为第一个矩阵元素(矩阵元素1)和最后一个矩阵元素(矩阵元素4)。应当注意的是,以上分段设置仅为示例性描述,在其它的一些实施方式中,结束标志位可在该向量中任意设置。
其中,不规整的向量A的前两个矩阵元素(矩阵元素1和矩阵元素2)与后两个矩阵元素(矩阵元素3和矩阵元素4)存在一个矩阵元素错位。基本运算模块使用基础模块[0]接收不规整的向量A的前两个矩阵元素,其中,矩阵元素1单独属于一个分段,基础模块[0]将其在该分段的结束标志位输出。矩阵元素2数据属于另一个分段,基础模块[0]将其发送至基础模块[1]。基础模块[1]还接收不规整的向量A的后两个矩阵元素,并与矩阵元素2一起执行运算,获得运算结果2,并从该分段的结束标志位输出。经过上述过程,得到基本运算结果向量B,基本运算结果向量B的前两个矩阵元素与后两个矩阵元素存在一个矩阵元素错位。
数据流时序变换模块接收基本运算结果向量B,消除该向量中的矩阵元素错位,获得不存在矩阵元素错位的向量C。
元素位置移动模块接收不存在矩阵元素错位的向量C,在分段运算模式下,元素位置移动模块将该向量保持原样输出,获得位置移动结果向量D。
以上为一个向量在分段运算模式下执行大小比较运算的过程。对于一个数据矩阵,该矩阵中的每一个向量均经过与上述类似的处理过程,最终形成位置移动结果矩阵。
请参见图5,是本发明实施例提供的一种适用于执行矩阵转置操作的矩阵处理装置500的结构示意图。
矩阵处理装置500包括解码器510、数据发配控制器520、数据流时序变换模块540以及元素位置移动模块550。解码器510与数据发配控制器520相连,解码器510和数据发配控制器520还分别与数据流时序变换模块540相连。数据流时序变换模块540与元素位置移动模块550相连,元素位置移动模块550包括预处理模块551和执行模块552,预处理模块551与执行模块552相连。在其它一些实施方式中,预处理模块551和执行模块552之间还可以设置有寄存器和/或具有选择功能的功能部件,例如多路调制器。
解码器510用于解码指令,从而获取指令类别和指令类别识别信息。解码器510将解码出的矩阵转置类命令发送至数据流时序变换模块540,同时还将矩阵转置类命令对应的指令类别识别信息发送至数据发配控制器520,数据发配控制器520将待进行矩阵转置操作的数据矩阵发送至数据流时序变换模块540。
数据流时序变换模块540基于矩阵转置类命令,将待进行矩阵转置操作的数据矩阵变换得到均匀延时阶梯数据流矩阵。均匀延时阶梯数据流矩阵的行向量相对于上一个行向量沿同一方向错位相同个数的矩阵元素;或列向量相对于上一个列向量沿同一方向错位相同个数的矩阵元素;不存在上一个向量时,跳过错位处理。
数据流时序变换模块540将矩阵转置类命令及矩阵大小提示信息发送至预处理模块551,预处理模块551基于矩阵转置类命令及矩阵大小提示信息,生成数据选择矩阵。该数据选择矩阵包括均匀延时阶梯数据流矩阵中各个矩阵元素在位置移动结果矩阵中的最终位置信息。
执行模块552从数据流时序变换模块540接收均匀延时阶梯数据流矩阵,并从预处理模块551获取数据选择矩阵。执行模块552基于该数据选择矩阵所提供的最终位置信息,重新排列均匀延时阶梯数据流矩阵中的矩阵元素,形成位置移动结果矩阵。
根据上述过程,请参见图6,提供一个待进行矩阵转置操作的数据矩阵A,在一些其它的实施方式中,待进行矩阵转置操作的数据矩阵A可以是外部传入的数据矩阵;待进行矩阵转置操作的数据矩阵A既可以是存在至少一个矩阵元素错位的数据矩阵,也可以是不存在矩阵元素错位的数据矩阵。
数据流时序变换模块接收待进行矩阵转置操作的数据矩阵A,变换得到均匀延时阶梯数据流矩阵B。均匀延时阶梯数据流矩阵B两行向量之间存在一个矩阵元素错位。
预处理模块获取矩阵大小提示信息和矩阵转置类命令,生成数据选择矩阵D。数据选择矩阵D包括矩阵元素1、矩阵元素2、矩阵元素3和矩阵元素4。其中,矩阵元素1、2、3、4分别与矩阵元素a、b、c、d一一对应。
执行模块接收均匀延时阶梯数据流矩阵B和数据选择矩阵D,基于上述矩阵元素的对应关系,将均匀延时阶梯数据流矩阵B中的各个矩阵元素重新排列,得到位置移动结果矩阵C。
应当注意的是,数据选择矩阵D仅是提供最终位置信息,而不能将数据选择矩阵D中的各个矩阵元素理解成必须等于上述实施例所提及的特定数值。
请参见图7,是本发明实施例提供的一种适用于执行矩阵回转操作的矩阵处理装置。矩阵处理装置700包括解码器710、数据发配控制器720、数据流时序变换模块740和元素位置移动模块750。
解码器710与数据发配控制器720相连,解码器710与数据发配控制器720还分别与数据流时序变换模块740分别相连。数据流时序变换模块740与元素位置移动模块750相连。元素位置移动模块750包括预处理模块751和执行模块752,预处理模块751与执行模块752相连。
解码器710用于解码指令,从而获取指令类别和指令类别识别信息。解码器710将解码出的矩阵回转类命令发送至数据流时序变换模块740,同时还将矩阵回转类命令对应的指令类别识别信息发送至数据发配控制器720,数据发配控制器720将待进行矩阵回转操作的数据矩阵发送至数据流时序变换模块740。
数据流时序变换模块740基于矩阵回转类命令,将待进行矩阵回转操作的数据矩阵变换得到不存在矩阵元素错位的数据矩阵。
数据流时序变换模块740将矩阵回转类命令及回转预设值信息发送至预处理模块751,预处理模块751基于矩阵回转类命令及回转预设值信息,生成数据选择矩阵,该数据选择矩阵包括不存在矩阵元素错位的数据矩阵中各个矩阵元素在位置移动结果矩阵中的最终位置信息。
执行模块752从数据流时序变换模块740接收不存在矩阵元素错位的数据矩阵,并从预处理模块751获取数据选择矩阵。执行模块752基于该数据选择矩阵,重新排列不存在矩阵元素错位的数据矩阵中的矩阵元素,形成位置移动结果矩阵。
根据上述过程,请参见图8,提供一个待进行矩阵回转操作的向量A,向量A的前两个矩阵元素(矩阵元素a和矩阵元素b)和后两个矩阵元素(矩阵元素c和矩阵元素d)之间存在一个矩阵元素错位。在一些其它的实施方式中,待进行矩阵回转操作的向量也可以是不存在矩阵元素错位的向量。
数据流时序变换模块接收待进行矩阵回转操作的向量A,变换得到不存在矩阵元素错位的向量B。
预处理模块获取回转预设值信息(该回转预设值信息为2)和矩阵回转类命令,生成数据选择矩阵。在其它一些实施方式中,回转预设值信息可以预设为不大于向量A中矩阵元素的个数的任意非负整数。
执行模块接收不存在矩阵元素错位的向量B和数据选择矩阵中的一条向量,该数据选择矩阵中的向量包括矩阵元素1、矩阵元素2、矩阵元素3、矩阵元素4。其中,矩阵元素1、2、3、4分别与向量B中的矩阵元素a、b、c、d一一对应。
执行模块基于上述矩阵元素的对应关系,将向量B中的矩阵元素重新排列,获得位置移动结果向量C。
应当注意的是,数据选择矩阵仅是提供最终位置信息,而不能将数据选择矩阵中的各个矩阵元素理解成必须等于上述实施例所提及的特定数值。
以上为一个向量执行矩阵回转操作的过程。对于一个数据矩阵,该矩阵中的每一个向量均经过与上述类似的处理过程,最终形成位置移动结果矩阵。
请参见图9,是本发明实施例提供的一种用于执行自定义矩阵元素位置移动操作的矩阵处理装置。
矩阵处理装置900包括解码器910、数据发配控制器920、数据流时序变换模块940和元素位置移动模块950。解码器910与数据发配控制器920相连,解码器910与数据发配控制器920分别与数据流时序变换模块940相连。数据流时序变换模块940与元素位置移动模块950相连。
解码器910用于解码指令,从而获取指令类别和指令类别识别信息。解码器910将解码出的自定义矩阵元素位置移动类命令发送至数据流时序变换模块940,同时还将自定义矩阵元素位置移动类命令对应的指令类别识别信息发送至数据发配控制器920,数据发配控制器920将待进行自定义矩阵元素位置移动操作的数据矩阵发送至数据流时序变换模块940。
数据流时序变换模块940基于自定义矩阵元素位置移动类命令,将待进行自定义矩阵元素位置移动操作的数据矩阵变换得到不存在矩阵元素错位的数据矩阵。
数据流时序变换模块940将自定义矩阵元素位置移动类命令和不存在矩阵元素错位的数据矩阵发送至元素位置移动模块950,元素位置移动模块950基于该指令,接收自定义的数据选择矩阵。自定义的数据选择矩阵可由外部输入,也可以是指令解码获得的。自定义的数据选择矩阵包括上述不存在矩阵元素错位的数据矩阵中的矩阵元素在位置移动结果矩阵中的最终位置信息。
根据自定义的数据选择矩阵所提供的最终位置信息,元素位置移动模块950重新排列上述不存在矩阵元素错位的数据矩阵中的矩阵元素,得到位置移动结果矩阵。
根据上述过程,请参见图10,提供一个待进行自定义矩阵元素位置移动操作的向量A,向量A的前两个矩阵元素(矩阵元素a和矩阵元素b)和后两个矩阵元素(矩阵元素c和矩阵元素d)之间存在一个矩阵元素错位。在一些其它的实施方式中,待进行自定义矩阵元素位置移动操作的向量也可以是不存在矩阵元素错位的向量。
数据流时序变换模块接收待进行自定义矩阵元素位置移动操作的向量A,变换得到不存在矩阵元素错位的向量B。
元素位置移动模块接收不存在矩阵元素错位的向量B,并获取自定义的数据选择矩阵中的一条向量。数据选择矩阵中的向量包括矩阵元素1、矩阵元素2、矩阵元素3以及矩阵元素4。其中,矩阵元素1、2、3、4与向量B中的矩阵元素a、b、c、d一一对应。
元素位置移动模块基于上述矩阵元素的对应关系,重新排列向量B中的矩阵元素,获得位置移动结果向量C。需要注意的是,位置移动结果向量C仅是示例性说明,而不是只能获得该位置移动结果向量,根据不同的自定义的数据选择矩阵,可以将向量B中的矩阵元素任意重新排列。应当注意的是,数据选择矩阵仅是提供最终位置信息,而不能将数据选择矩阵中的各个矩阵元素理解成必须等于上述实施例所提及的特定数值。
以上为一个向量执行自定义矩阵元素位置移动操作的过程。对于一个数据矩阵,该矩阵中的每一个向量均经过与上述类似的处理过程,最终形成位置移动结果矩阵。
以上是本发明多种功能的拆解描述,本发明实施例还提供一种多功能的矩阵处理装置,从而能够以一套设计方案完成上述多种不同类型的矩阵处理操作。请参见图11,包括解码器1110、数据发配控制器1120、基本运算模块1130、数据流时序变换模块1140、元素位置移动模块1150、指令选择器1160、数据选择器1170、第一级指令延时寄存器1180、第二级指令延时寄存器1181、第一级数据延时寄存器1190和第二级数据延时寄存器1191。
其中,解码器1110与第一级指令延时寄存器1180、基本运算模块1130以及数据发配控制器1120分别相连。解码器1110用于解码指令,获取指令类别和指令类别识别信息。
若解码出的指令类别为基本运算类命令,则发送至基本运算模块1130,同时发送指令类别识别信息至数据发配控制器1120,数据发配控制器1120将待进行基本运算操作的数据矩阵发送至基本运算模块1130,进行基本运算操作。在一些实施方式中,基本运算类命令包括整段运算模式和分段运算模式提示字段。
若解码出的指令类别为矩阵元素位置移动类命令,则将该命令发送至第一级指令延时寄存器1180;同时,解码器1110发送对应的指令类别识别信息至数据发配控制器1120,数据发配控制器1120基于该指令类别提示信息,将对应的数据矩阵发送至第一级数据延时寄存器1190。
基本运算模块1130执行完基本运算操作后,将基本运算结果矩阵和基本运算类命令输出。指令选择器1160用于从第一级指令延时寄存器1180和基本运算模块1130中选择指令并发送至数据流时序变换模块1140,存在至少一条基本运算类命令时,指令选择器1160优先将基本运算类命令输出,再处理其它类型的指令。指令选择器1160选择命令时,还发送与选择出的命令对应的指令类别识别信息至数据选择器1170,数据选择器1170基于该指令类别识别信息,从基本运算模块1130或第一级数据延时寄存器1190读取对应的数据矩阵,并发送至数据流时序变换模块1140。数据流时序模块1140基于接收到的指令类别,对接收到的数据矩阵进行处理,对数据矩阵的处理过程,在上述实施例中已分别详细阐述,此处不再赘述。
若数据流时序变换模块1140执行的指令是矩阵转置类命令或矩阵回转类命令,则数据流时序变换模块1140将其处理后的数据矩阵发送至元素位置移动模块进行处理,处理过程已在上述实施例详细阐述,此处不再赘述。
若数据流时序变换模块1140执行的指令是基本运算类命令或自定义矩阵元素位置移动命令,则数据流时序变换模块1140将该指令发送至第二级指令延时寄存器1181,并将该指令对应的且经过数据流时序变换模块1140处理的数据矩阵发送至第二级数据延时寄存器1191。等待元素位置移动模块1150完成上一个矩阵的处理操作,再发送至元素位置移动模块1150进行处理,处理过程已在上述实施例详细阐述,此处不再赘述。
为了保证元素位置移动模块一个时段只执行一种矩阵处理操作,本发明实施例还提供另一种元素位置移动模块。请参见图12,元素位置移动模块包括预处理模块、执行模块、多路调制器(Multiplexer)和四个寄存器。上述寄存器按功能进行划分,分别接收不同指令类型所对应的数据选择矩阵。其中,预处理电路与两个寄存器相连,用于向这两个寄存器发送矩阵转置类命令对应的数据选择矩阵和矩阵回转类命令对应的数据选择矩阵。其它两个寄存器分别用于接收自定义矩阵元素位置移动类命令对应的自定义数据选择矩阵和基本运算类命令对应的数据选择矩阵。多路调制器与上述四个寄存器以及执行模块分别相连,并根据传入元素位置移动模块的指令类型,对应从其中一个寄存器中读取相应的数据选择矩阵,并发送至执行模块。
在其它一些实施方式中,可以包括更多或更少的寄存器,以存储不同类型指令所对应的数据选择矩阵。也可以使用其它具有选择功能的结构或部件代替多路调制器,均可视为对本实施例的简单替换。
请参见图13,是本发明实施例提供的一种矩阵处理设备的结构示意图。如图13所示的处理设备1300包括一个或多个处理器1301、通信接口1302和存储器1303。处理器1301、通信接口1302和存储器1303可通过总线方式连接,也可通过无线传输等其他手段实现通信,本发明实施例以通过总线1304连接为例。
其中,处理器1301包括前述实施例所揭示的矩阵处理装置的结构,存储器1303存储有程序代码,该程序代码被处理器1301执行时,实现上述实施例所揭示的矩阵处理方法的步骤。
应当理解,在本发明实施例中,所称处理器1301可以是中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
通信接口1302可以为有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他模块或装置设备进行通信。例如,本申请实施例中通信接口1302具体可用于接收用户输入的输入数据;或者接收外部设备的数据等。
存储器1303可以包括易失性存储器(Volatile Memory),例如随机存取存储器(Random Access Memory,RAM);存储器也可以包括非易失性存储器(Non-VolatileMemory),例如只读存储器(Read-Only Memory,ROM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);存储器还可以包括上述种类的存储器的组合。
需要说明的,图13仅仅是本发明实施例的一种可能的实现方式,实际应用中,处理设备还可以包括更多或更少的部件,这里不作限制。关于本发明实施例中未示出或未描述的内容,可参见前述方法实施例中的相关阐述,这里不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及实施步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的终端设备和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理设备中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。