用于可变矩阵的DMA快速转置方法及装置与流程

文档序号:12824669阅读:333来源:国知局
用于可变矩阵的DMA快速转置方法及装置与流程

本发明涉及数据信号处理领域,尤其涉及一种用于可变矩阵的dma快速转置方法及装置。



背景技术:

dma(directionalmemoryaccess,直接内存访问)是数字信号处理器中用于快速数据交换的重要技术,一般数字信号处理经常需要对矩阵进行转置处理,矩阵转置的性能影响到最终的计算性能。相关技术,一般采用dma乒乓流水的方式以进行矩阵转置,具体地,根据固定的行列将矩阵分成固定大小的小矩阵以实现矩阵转置。但是,这样不能适用于不同类型的矩阵转置,同时也不能提高矩阵转置效率。



技术实现要素:

本发明的目的旨在至少在一定程度上解决上述的技术问题之一。

为此,本发明的一个目的在于提出一种用于可变矩阵的dma快速转置方法,该方法适用于多种类型矩阵的dma转置,提高了dma转置的效率。

本发明的第二个目的在于提出一种用于可变矩阵的dma快速转置装置。

为达上述目的,本发明第一方面实施例提出了一种用于可变矩阵的dma快速转置方法,包括以下步骤:获取待转置矩阵大小,并根据预先设定的配置需求将所述待转置矩阵分解成多个待转置小矩阵,并获取每个待转置小矩阵的矩阵信息,其中,所述矩阵信息包括矩阵行数、矩阵列数以及矩阵中每个元素的字节大小;基于直接存储器访问dma,根据所述每个待转置小矩阵的矩阵信息对dma内部的sram分成对应大小的sram块,并通过对应大小的sram块依次对所述每个待转置小矩阵进行转置;当所述每个待转置小矩阵依次被转置后,所述待转置矩阵完成转置。

根据本发明实施例的用于可变矩阵的dma快速转置方法,根据预先设定的配置需求将待转置矩阵分解成多个待转置小矩阵,并获取每个待转置小矩阵的矩阵信息,基于直接存储器访问dma,根据每个待转置小矩阵的矩阵信息对dma内部的sram分成对应大小的sram块,再通过对应大小的sram块依次对每个待转置小矩阵进行转置,当每个待转置小矩阵依次转置后待转置矩阵完成转置,该方法适用于多种类型矩阵的dma转置,提高了dma转置 的效率。

在本发明的一个实施例中,所述根据所述每个待转置小矩阵的矩阵信息分别对所述dma内部的sram分成对应大小的sram块,并通过所述对应大小的sram块依次对所述每个待转置小矩阵进行转置,包括:根据所述每个待转置小矩阵的矩阵信息分别读取所述每个待转置的小矩阵中每行所对应的数据;根据所述每个待转置小矩阵的矩阵信息分配多个sram(staticrandomaccessmemory,静态随机存取存储器)块,并生成写入sram块的地址,并根据所述写入sram块的地址依次将所述每行所对应的数据写入至对应的sram块,其中,所述sram块的个数与所述每个待转置小矩阵的行数一致;当所述每个待转置小矩阵中的所有数据全部写入至对应的sram块时,根据所述每个待转置小矩阵的矩阵信息生成多个读取sram块地址;根据所述多个读取sram块地址依次同时读取所述多个sram块,并依次将同时读取到的数据组成目标矩阵的一行,以完成所述每个待转置小矩阵的转置。

在本发明的一个实施例中,所述的用于可变矩阵的dma快速转置方法,每个所述sram块的大小根据所述每个待转置小矩阵的矩阵信息确定。

在本发明的一个实施例中,所述的用于可变矩阵的dma快速转置方法,其中,所述预先设定的配置需求包括每个待转置小矩阵的矩阵参数,所述矩阵参数包括矩阵行数、矩阵列数以及矩阵中每个元素的字节大小,通过以下参数确定所述预先设定的配置需求:所述dma的多种矩阵转置性能、所述待转置矩阵的类型、和/或所述dma中sram的容量限制。

为达上述目的,本发明第二方面实施例提出了一种用于可变矩阵的dma快速转置装置,包括:分解模块,用于获取待转置矩阵大小,并根据预先设定的配置需求将所述待转置矩阵分解成多个待转置小矩阵,并获取所述每个待转置小矩阵的矩阵信息,其中,所述矩阵信息包括矩阵行数、矩阵列数以及矩阵中每个元素的字节大小;转置模块,用于基于直接存储器访问dma,根据所述每个待转置小矩阵的矩阵信息对dma内部sram分成对应大小的sram块,并通过所述对应大小的sram块依次对所述每个待转置小矩阵进行转置,在所述每个待转置小矩阵依次被转置后,所述待转置矩阵完成转置。

根据本发明实施例的用于可变矩阵的dma快速转置装置,分解模块根据预先设定的配置需求将待转置矩阵分解为待转置小矩阵,转置模块基于直接存储器访问dma,根据预先设定的配置需求中的每个待转置的小矩阵的矩阵信息对dma内部sram分成对应大小的sram块,通过对应大小的sram块依次对每个待转置的小矩阵进行转置,在每个待转置小矩阵依次被转置后待转置矩阵完成转置,该装置适用于多种类型矩阵的dma转置,提高了dma转置的效率。

在本发明的一个实施例中,所述转置模块包括:axi(advancedextensibleinterfac,总线协议)总线控制单元,用于根据所述每个待转置小矩阵的矩阵参数发出对应的axi读写 信号,以分别读取所述每个待转置小矩阵中每行所对应的数据;矩阵控制单元,用于根据所述每个待转置小矩阵的矩阵信息分配多个sram块,并生成写入sram块的地址,并根据所述写入sram块的地址依次将所述每行所对应的数据写入至对应的sram块,其中,所述sram块的个数与所述每个待转置小矩阵的行数一致;所述矩阵控制单元还用于:在所述每个待转置小矩阵中的所有数据全部写入至对应的sram块时,根据所述每个待转置的小矩阵的矩阵信息生成多个读取sram块地址;所述axi总线控制单元还用于:根据所述多个读取sram块地址依次同时读取所述多个sram块,并依次将同时读取到的数据组成目标矩阵的一行,以完成所述每个待转置小矩阵的转置。

在本发明的一个实施例中,所述的用于可变矩阵的dma快速转置装置,每个所述sram块的大小根据所述每个待转置小矩阵的矩阵信息确定。

在本发明的一个实施例中,如权利要求5所述的用于可变矩阵的dma快速转置装置,其中,所述预先设定的配置需求包括每个待转置小矩阵的矩阵参数,所述矩阵参数包括矩阵行数、矩阵列数以及矩阵中每个元素的字节大小,所述分解模块通过以下参数确定所述预先设定的配置需求:所述dma的多种矩阵转置性能、所述待转置矩阵的类型、和/或所述dma中sram的容量限制。

本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中,

图1为根据本发明一个实施例的用于可变矩阵的dma快速转置方法的流程图;

图2为根据本发明一个实施例的待转置的小矩阵进行转置的流程图;

图3根据本发明一个具体实施例的用于可变矩阵的dma快速转置方法的流程图;

图4为根据本发明一个实施例的用于可变矩阵的dma快速转置装置的结构示意图;

图5为根据本发明一个具体实施例的用于可变矩阵的dma快速转置装置的结构示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

下面参考附图描述本发明实施例的用于可变矩阵的dma快速转置方法及装置。

图1为根据本发明一个实施例的用于可变矩阵的dma快速转置方法的流程图。

如图1所示,该用于可变矩阵的dma快速转置方法可以包括:

s11,获取待转置矩阵大小,并根据预先设定的配置需求将待转置矩阵分解成多个待转置小矩阵,并获取每个待转置小矩阵的矩阵信息,其中,矩阵信息包括矩阵行数、矩阵列数以及矩阵中每个元素的字节大小。

需要说明的是,矩阵信息包括矩阵行数、矩阵列数以及矩阵中每个元素的字节大小等,可以理解,这3个参数都是可变参数,可以根据需要对矩阵的行数、矩阵的列数以及矩阵中每个元素的字节大小进行设定,需要进行再次设定时,可以同时对3个矩阵参数进行设定也可以选其中一个到3个不等根据需求进行设定。举例而言,一次转置的最小矩阵m行*n列*abyte(字节),m、n、a都是可配置的,其中m,n的值可以为但不限于4、8、16、32等,a可以为但不限于1、2、4、8等。

其中,通过以下参数可确定预先设定的配置需求:dma的多种矩阵转置性能、待转置矩阵的类型、和/或dma中sram的容量限制。

s12,基于直接存储器访问dma,根据每个待转置小矩阵的矩阵信息参数分别对dma内部的sram分成对应大小的sram块,并通过对应大小的sram块依次对每个待转置的小矩阵进行转置,当每个待转置小矩阵依次被转置后待转置矩阵完成转置。

具体而言,如图2所示,步骤s12可包括如下步骤:

s121,根据每个待转置小矩阵的矩阵信息分别读取每个待转置小矩阵中每行所对应的数据。

s122,根据每个待转置小矩阵的矩阵信息生成多个sram块,并生成写入sram块的地址,并根据写入sram块的地址依次将每行所对应的数据写入至对应的sram块,其中,sram块的个数与每个待转置小矩阵的行数一致。

也就是说,根据可变矩阵信息产生的axi读取数据大小对应小矩阵的一行,并且对应sram块的大小。

s123,当每个待转置小矩阵中的所有数据全部写入至对应的sram块时,根据每个待转置小矩阵的矩阵信息生成多个读取sram块地址。

s124,根据多个读取sram块地址依次同时读取多个sram块,并依次将同时读取到的数据组成目标矩阵的一行,以完成每个待转置小矩阵的转置。

需要说明的是,不同的小矩阵对应的sram块组成方式是不同的,根据可变矩阵信息产生的读取的sram地址具有多个,每次读取多个不同的sram小块。综上,本发明实施例的用于可变矩阵的dma快速转置方法可以根据矩阵信息的不同,写入sram的地址是不同的,sram的组成方式是不同的,针对不同矩阵,对axi总线的读写请求不同。由此,在控制面 积,功耗的同时更加有针对性的提高了性能和效率。

根据本发明实施例的用于可变矩阵的dma快速转置方法,根据预先设定的配置需求将待转置矩阵分解成多个待转置小矩阵,并获取每个待转置小矩阵的矩阵信息,基于直接存储器访问dma,根据每个待转置小矩阵的矩阵信息对dma内部的sram分成对应大小的sram块,再通过对应大小的sram块依次对每个待转置小矩阵进行转置,当每个待转置小矩阵依次转置后待转置矩阵完成转置,该方法适用于多种类型矩阵的dma转置,提高了dma转置的效率。

为了使得本领域技术人员能够更加清楚地了解本发明,下面将结合图3进行详细描述。

举例而言,如图3所示,首先,根据预先设定的配置需求配置小矩阵的传输参数,如小矩阵的矩阵信息(如矩阵行数、矩阵列数以及矩阵中每个元素的字节大小等)(步骤s301)。之后,可根据小矩阵的传输参数配置大矩阵(即待转置矩阵),并启动dma(步骤s302)。之后,基于dma读取已配置的小矩阵的每一行,其中,根据矩阵信息的不同,一次读取小矩阵的一行大小不同(步骤s303)。同时,可计算写入sram的地址,其中,根据矩阵信息的不同,写入sram的地址不同(步骤s304)。之后,dma中的axi总线可根据计算的写入sram的地址将读取已配置的小矩阵的每一行的数据写入对应的sram块中(步骤s305)。当判断该小矩阵读完(步骤s306)之后,可计算读取sram的地址(步骤s307)。dma根据读取sram的地址同时读取多个sram块,并将每次读取到的数据写到目的小矩阵的一行,即将每次读取到的数据作为目的小矩阵的行数据(步骤s308)。当判断小矩阵写完(步骤s309)之后,继续写下一个小矩阵(步骤s310),当检测所有小矩阵写出完毕(步骤s311)时,可判断dma矩阵转置完成(步骤s312)。也就是说,在小矩阵全部写入sram后,矩阵转置时,同时读取多个sram小块,拼成一行目的的小矩阵的数据,通过总线写出。

根据本发明实施例的用于可变矩阵的dma快速转置方法,根据预先设定的配置需求将待转置矩阵分解成多个待转置小矩阵,并获取每个待转置小矩阵的矩阵信息,基于直接存储器访问dma,根据每个待转置小矩阵的矩阵信息对dma内部的sram分成对应大小的sram块,再通过对应大小的sram块依次对每个待转置小矩阵进行转置,当每个待转置小矩阵依次转置后待转置矩阵完成转置,该方法适用于多种类型矩阵的dma转置,提高了dma转置的效率。

与上述几种实施例提供的用于可变矩阵的dma快速转置方法相对应,本发明的一种实施例还提供一种用于可变矩阵的dma快速转置装置,由于本发明实施例提供的用于可变矩阵的dma快速转置装置与上述实施例提供的用于可变矩阵的dma快速转置方法相对应,因此在前述用于可变矩阵的dma快速转置方法的实施方式也适用于本实施例提供的用于可变矩阵的dma快速转置装置,在本实施例中不再详细描述。图4为根据本发明一个实施例的 用于可变矩阵的dma快速转置装置的结构示意图。如图4所示,该装置包括:分解模块10、转置模块20。

其中,分解模块10用于获取待转置矩阵大小,并根据预先设定的配置需求将待转置矩阵分解为待转置小矩阵,并获取每个待转置小矩阵的矩阵信息,其中,矩阵信息包括矩阵行数、矩阵列数以及矩阵中每个元素的字节大小,转置模块20用于基于直接存储器访问dma,根据每个待转置小矩阵的矩阵信息对dma内部的sram分成对应大小的sram块,并通过对应大小的sram块依次对每个待转置小矩阵进行转置,sram模块,用于在小矩阵转置时,根据参数分成相应大小的多个sram块,每个sram块保存小矩阵的一行。不同参数的sram块大小是不同的,在小矩阵写出时,多个sram块同时输出数据,拼成写出小矩阵的一行,在每个待转置小矩阵依次被转置后,待转置矩阵完成转置。

具体而言,转置模块20包括:axi总线控制单元201用于根据每个待转置小矩阵的矩阵信息发出对应的axi读写信号,以分别读取每个待转置小矩阵中每行所对应的数据,矩阵控制单元202用于根据每个待转置小矩阵的矩阵信息分配多个sram块,并生成写入sram块的地址,并根据所述写入sram块的地址依次将每行所对应的数据写入至对应的sram块,其中,sram块的个数与每个待转置小矩阵的行数一致,矩阵控制单元202还用于在每个待转置小矩阵中的所有数据全部写入至对应的sram块时,根据每个待转置小矩阵的矩阵信息生成多个读取sram块地址,axi总线控制单元201还用于根据多个读取sram块地址依次同时读取多个sram块,并依次将同时读取到的数据组成目标矩阵的一行,以完成每个待转置小矩阵的转置。

在本发明的一个实施例中,每个sram块的大小根据每个待转置小矩阵的矩阵信息确定。

在本发明的一个实施例中,分解模块10通过以下参数确定预先设定的配置需求:dma的多种矩阵转置性能、待转置矩阵的类型、和/或dma中sram的容量限制。

根据本发明实施例的用于可变矩阵的dma快速转置装置,分解模块根据预先设定的配置需求将待转置矩阵分解为待转置小矩阵,转置模块基于直接存储器访问dma,根据预先设定的配置需求中的每个待转置的小矩阵的矩阵信息对dma内部sram分成对应大小的sram块,通过对应大小的sram块依次对每个待转置的小矩阵进行转置,在每个待转置小矩阵依次被转置后待转置矩阵完成转置,该装置适用于多种类型矩阵的dma转置,提高了dma转置的效率。

图5为根据本发明一个具体实施例的用于可变矩阵的dma快速转置装置的结构示意图。

其中,有标准axi3协议的总线接口,axi总线控制模块501用来根据矩阵信息发出对应大小的axi读写信号,一组临时存放矩阵数据的sram,一组矩阵控制寄存器502用来 根据矩阵信息计算写入sram的矩阵地址,和读出sram的矩阵地址,在通用dma中增加了矩阵转置功能,使用矩阵转置计算单元,将大矩阵分解为多个小矩阵的转置,每次根据一次转置的最小矩阵m行*n列,矩阵的点数大小abyte,这3个可变的参数,使用标准的axi3总线读取对应大小的数据,产生写入sram的地址,根据可变参数灵活组织多个sram块,将m行写入sram的不同块中。小矩阵全部读入完成后,再根据可变参数产生读sram的地址,每次同时读取多个sram块,组成目的矩阵的一行,最终通过总线写出小矩阵,完成小矩阵的转置,在每个待转置小矩阵依次被转置后待转置矩阵完成转置,该装置适用于多种类型矩阵的dma转置,提高了dma转置的效率

根据本发明实施例的用于可变矩阵的dma快速转置装置,将大矩阵分解为多个小矩阵的转置,使用标准的axi3总线读取对应大小的数据,产生写入sram的地址,根据可变参数灵活组织多个sram块,将m行写入sram的不同块中。小矩阵全部读入完成后,再根据可变参数产生读sram的地址,每次同时读取多个sram块,组成目的矩阵的一行,最终通过总线写出小矩阵,完成小矩阵的转置,在每个待转置小矩阵依次被转置后,待转置矩阵完成转置。

根据本发明实施例的用于可变矩阵的dma快速转置装置,同样可应用乒乓流水进行矩阵转置,乒乓流水是指如果sram的面积大小允许,使用两组相同大小的sram,一组sram在小矩阵通过axi总线写出的时候,使用相同方法对另外一组sram分配对应大小的sram块,进行sram读写地址计算,同时读取axi总线数据写入另外一组sram。当另外一组sram完成写入数据时,这组sram完成写出数据,两组功能互换,这组sram进行下一个小矩阵数据的写入,另外一组进行其中小矩阵数据的写出。

在本发明的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

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