一种补齐式原地矩阵转置方法

文档序号:6215360阅读:275来源:国知局
一种补齐式原地矩阵转置方法
【专利摘要】本发明公开了一种补齐式原地矩阵转置方法,将二维矩阵A以行数和列数较小的一方作为边长将二维矩阵划分成数个方阵,将不够划分为方阵的部分补齐成为一个方阵,补齐部分不含数据;以K*K的矩阵将方阵再分割,将沿对角线和非对角线的所有K*K矩阵读入随机存储器模块RAM中进行转置处理,将以上经过转置处理得到二维矩阵按顺序从SDRAM读取输出,得到最终转置后的矩阵。本发明的有益效果是适于矩阵行列数中较小者为2的幂次方正整数倍的矩阵的转置,可有效提高SDRAM类存储器的利用效率,提升大矩阵转置类数字信号的处理性能。
【专利说明】一种补齐式原地矩阵转置方法
【技术领域】
[0001]本发明属于数字信号处理【技术领域】,涉及一种补齐式原地矩阵转置方法。
【背景技术】
[0002]大矩阵转置运算在数据密集类应用中十分常见,以合成孔径雷达(SAR)成像系统为例,在成像处理器中,数据进入方位压缩以前是按照距离向的顺序排列的,而数据的方位向压缩是在与距离向垂直的方向上进行,所以在两个处理过程之间必须执行矩阵转置。对于数据量非常大的数字信号处理应用而言,使用随机存储器RAM、静态随机存储器SRAM作为转置存储器件有容量有限、成本过高等缺点,因此,常采用大容量第二代双倍数据率同步动态随机存取存储器(DDR2、SDRAM)或第三代双倍数据率同步动态随机存取存储器(DDR3、SDRAM)作为转置存储器。
[0003]申请号为201010174342.7的发明公开了一种《矩阵转置的方法》,其原理是将矩阵划分成小块,使用适量寄存器进行转置。其不足之处在于,虽然相比传统寄存器提高了矩阵转置的执行速度,但是需要开辟额外存储空间,当矩阵规模较大时,降低了存储资源的利用效率。申请号为200910236075.9的发明公开了《矩阵转置自动控制电路系统及矩阵转置方法》,其不足之处在于,该方法同样需要开辟额外矩阵存储空间,无法实现原地转置;此夕卜,该装置配置信息来源于处理核或DMA,通过配置总线进行配置,存在较多的硬件开销。申请号为2012105538360.9的发明专利公开了一种《合成孔径雷达成像系统的矩阵转置方法及转置装置》,与硕士论文《SAR实时成像处理机采集和转置模块的设计与实现》提出的分块映射转置算法,其原理是将DDR2/DDR3存储器分成多个存储块且每个存储块的大小相同,每一个存储块用来存储一个距离向的图像数据,不同距离向的数据分别存储在不同段的地址空间内。这种分配存储空间使得每一列方位向数据在各个分块中的位置相同。每读一个方位向的数据仅需将各个分块的同一位置的数据读出即可。分块映射转置存储算法一次行激活操作可以读取多个数据,实现行写行读的快速操作。其不足之处在于,由于算法本身存在每个时钟周期突发传输取出的数据只有一位有效的弊端,因此导致数据的有效率较低。申请号为201110122834.6的发明专利公开了一种《基于FPGA的SAR成像信号处理数据转置方法》,提出一种分块矩阵转置算法,将矩阵数据分割成对称模式矩阵、对称非对角模式矩阵、非对称非对角模式矩阵,将三种模式矩阵分别进行分块矩阵。其不足之处在于,一是虽然可以实现矩阵内方阵数据的原地转置,但是对矩阵行列相差悬殊可以划分多个方阵的大矩阵没有给出切实可行的技术方案;二是对矩阵内方阵数据依次分块转置,每次只转置一个分块,转置效率仍有提升空间。

【发明内容】

[0004]本发明的目的在于提供一种补齐式原地矩阵转置方法,解决了现有技术中矩阵存储空间利用率不高、转置效率有待提升、尤其是对矩阵行列相差悬殊的的大矩阵转置不够完善的问题。[0005]本发明所采用的技术方案是按照以下步骤进行:
[0006]步骤1:将需要转置的数据连续存入同步动态随机存储器SDRAM中映射成二维矩阵A (L*W),L代表矩阵的行数,W代表矩阵的列数,其中较小的为2的幂次方的正整数倍;
[0007]步骤2:以二维矩阵A中行数和列数较小的一方作为边长将二维矩阵A划分成数个方阵,将不够划分为方阵的部分补齐成为一个完整的方阵,补齐部分不含数据;将每个方阵再分割为K*K的矩阵,K是L、W中最小数的约数;
[0008]步骤3:Κ*Κ的矩阵分为不含补齐部分的矩阵和含有补齐部分的矩阵两种:
[0009]a将沿对角线的所有Κ*Κ矩阵读入随机存储器模块RAM中进行转置处理,转置后的矩阵输出到SDRAM中覆盖原矩阵;
[0010]b将非沿对角线的所有K*K矩阵读入随机存储器模块RAM中进行转置处理,转置后的矩阵输出到SDRAM中以对角线为对称轴覆盖相对称的矩阵;
[0011]对所有方阵进行以上步骤3的操作;
[0012]步骤4:将步骤三中得到的二维矩阵从SDRAM中读取输出,完成整个转置过程。
[0013]本发明的特点还在于步骤3中对Κ*Κ的矩阵读入随机存储器模块RAM中进行转置处理的过程为若每两个Κ*Κ矩阵均不含补齐部分,则先将两个矩阵从SDRAM读取,存入 RAM 中,然后按照 0,K,2Κ…K (K-1),1,(Κ+1),(2Κ+1)...(K (Κ-1)+1)...(Κ-1),(2Κ-1)...(K2-1)的次序,先跳读 RAM 前 Κ*Κ 数据,再按照 K2,(Κ2+Κ),(Κ2+2Κ)…(Κ2+Κ(Κ-1)),(K2+l),(Κ2+ (Κ+1)), (Κ2+2Κ+1)…(Κ2+Κ (Κ-1)+1)…(Κ2+Κ-1),(Κ2+2Κ-1)…(Κ2+Κ2-1)的次序跳读;步骤3中对Κ*Κ的矩阵读入随机存储器模块RAM中进行转置处理的过程,是指每两个Κ*Κ矩阵中仅其中一个含有补齐和非补齐部分,设两个矩阵不含补齐部分分别为C(M,N)和D(R,S),其中M、N、R、S均小于等于K的正整数,则先将C(M,N)和D(R,S)从SDRAM中读取,存入RAM中,然后按照 0,N, 2N—N(M-l), I, (N+l), (2N+1)…(N(M-1)+1)…(N-1),(2N-1)…(N*M_1)的次序,先跳读前 M*N 数据,再按照 M*N,(M*N+S), (M*N+2S)...(M*N+S (R-1)),
[0014](M*N+l), (M*N+(S + 1)),(M*N+(2S+1))...(M*N+(S(R_1)+1))...(M*N+ (S-1)),(M*N+ (2S-1))...(M*N+ (S*R_1))的次序,跳读 RAM 后 R*S 数据;若两个 K*K 矩阵中的任意一个只含有补齐部分,则该只含补齐部分的矩阵无需转置;步骤4中将转置后的二维矩阵A从SDRAM中读取的过程为若原始二维矩阵A的列数小于行数时,读取转置后的数据时先读第一个方阵的第一行,后读第二个方阵的第一行.....直到读到补齐方阵的第一行,仅读有数据的位置,然后读第一个方阵的第二行,后读第二个方阵的第二行….依次操作,直到读完整个矩阵的数据;若原始矩阵A的列数W大于行数L时,读取转置后的数据先读第一个方阵的第一行作为转置后矩阵的第一行,再读第一个方阵的第二行作为转置后矩阵的第二行,直至读到第一个方阵的最后一行,之后以此方式读取每一个方阵的数据,当读取补齐方阵的数据,只读取到有效数据所在的行。
[0015]本发明的另一个目的是提供一种用于补齐式原地矩阵转置方法中的装置,包括控制逻辑模块,控制逻辑模块分别连接读SDRAM地址产生模块、写SDRAM地址产生模块和转置RAM模块,转置RAM模块分别连接数据输入FIFO模块和数据输出FIFO模块。读SDRAM地址产生模块包括读地址产生状态机、块内行计数器、块内列计数器、块行坐标计数器、块列坐标计数器、方阵计数器、存入数据个数计数器、跨地址数的计数器、读SDRAM行数的选择器、读SDRAM列数的选择器、以及行列拼接得SDRAM读地址,其中当转置操作可以进行后,读地址状态机进行启动,同时块内行计数器、块内列计数器产生特定块内的行和列地址;根据读地址状态机所处的状态来计数所在块的行坐标及列坐标、所操作方阵的个数,并且需要寄存此次存入数据的个数及跨地址数;根据目前所处方阵数、块行坐标、块列坐标、块内行坐标、块内列坐标计算SDRAM读地址。写SDRAM地址产生模块包括写地址产生状态机、块内行计数器、块内列计数器、块行坐标计数器、块列坐标计数器、方阵计数器、写SDRAM行数的选择器、写SDRAM列数的选择器、以及行列拼接得SDRAM写地址,其中当此过程开始后,写地址状态机启动,同时块内行计数器、块内列计数器产生特定块内的行和列地址;根据写地址状态机所处的状态来计数所在块的行坐标及列坐标、所操作方阵的个数;根据目前所处方阵数、块行坐标、块列坐标、块内行坐标、块内列坐标计算SDRAM写地址。转置RAM模块包括地址产生状态机、每次置基地址后跳读个数的计数器、每次需重置的基地址的计数器、转置RAM读写地址的产生,其中每个小块的数据首先依次存到转置RAM中,当存储完成后,根据地址产生状态机和当时基地址的计数、置基地址后跳读的个数确定RAM的读地址。
[0016]本发明的有益效果是转置效率高,基于SDRAM存储器设计,适于任意矩阵规模大小的转置,可有效提高SDRAM类存储器的利用效率,提升大矩阵转置类数字信号的处理性倉泛。
【专利附图】

【附图说明】
[0017]图1转置前矩阵的分块图;
[0018]图2转置后矩阵图;
[0019]图3基于SDRAM的数据分块转置方法的硬件实现图;
[0020]图4读SDRAM地址产生 模块硬件实现图;
[0021 ] 图5读SDRAM地址产生状态机;
[0022]图6转置RAM模块硬件实现;
[0023]图7随机存储地址产生状态机;
[0024]图8写SDRAM地址产生模块硬件实现图。
【具体实施方式】
[0025]下面结合附图和【具体实施方式】对本发明进行详细说明。
[0026]如图1所示,按照以下步骤进行,步骤1:将批量需要转置的数据连续存入同步动态随机存储器SDRAM中,将数据映射成二维矩阵A (L*W),L代表矩阵的行数,W代表矩阵的列数,其中较小的为2的幂次方的正整数倍'K.比较二维矩阵的行数和列数,以行数和列数较小的一方作为边长将二维矩阵划分成数个方阵,将不够划分为方阵的部分补齐成为一个方阵;B.以K*K的矩阵将上一步的方阵再分割,分割成沿对角线模式矩阵和非沿对角线模式的矩阵,K为正整数,K必须是L、W中最小数的约数;
[0027]步骤2:对每个方阵,首先将沿对角线模式的不含补齐部分的所有Κ*Κ矩阵进行转置处理,利用地址跳变每隔K个地址读出随机存储器即RAM中的数据,其中的每隔K个地址读出RAM单元数据,是指先读零地址的数据,然后读K地址的数据,接着读2Κ地址的数据,一直读到Κ*(Κ-1)地址后,跳变到地址1,后读Κ+1地址…,依次循环直到读出Κ*Κ-1地址的数据,将读出的数据依次按行重新存入其数据来源的矩阵,完成此Κ*Κ单位块矩阵的转置;其次将非沿对角线模式不含补齐部分的矩阵进行转置处理,每次以对角线为对称轴读取对称的两个矩阵,同步骤2,每个矩阵都利用地址跳变每隔K个地址读出RAM中的数据,将读出的数据依次按行重新存入对称的矩阵中,实现转置效果;
[0028]步骤3:K*K的矩阵分为不含补齐部分的矩阵和含有补齐部分的矩阵两种:
[0029]a将沿对角线的所有Κ*Κ矩阵读入随机存储器模块RAM中进行转置处理,转置后的矩阵输出到SDRAM中覆盖原矩阵;
[0030]b将非沿对角线的所有K*K矩阵读入随机存储器模块RAM中进行转置处理,转置后的矩阵输出到SDRAM中以对角线为对称轴覆盖相对称的矩阵;
[0031]对所有方阵进行以上步骤3的操作;
[0032]步骤4:将步骤三中得到的二维矩阵从SDRAM中读取输出,完成整个转置过程。步骤3中对Κ*Κ的矩阵读入随机存储器模块RAM中进行转置处理的过程为若每两个Κ*Κ矩阵均不含补齐部分,则先将两个矩阵从SDRAM读取,存入RAM中,然后按照0,K,2Κ…K (K-1),I,(Κ+1), (2Κ+1)...(K (K-1)+1)...(K-1),(2Κ-1)…(K2-1)的次序,先跳读 RAM 前 Κ*Κ 数据,再按照 K2,(Κ2+Κ), (Κ2+2Κ)…(K2+K(K-1)),(K2+l), (Κ2+(Κ+1)), (Κ2+2Κ+1)…(Κ2+Κ(Κ-1)+1)…(K2+K-l),(Κ2+2Κ-1)…(Κ2+Κ2-1)的次序,跳读RAM后K*K数据;步骤3中对Κ*Κ的矩阵读入随机存储器模块RAM中进行转置处理的过程,是指若每两个Κ*Κ矩阵中仅其中一个含有补齐和非补齐部分,设两个矩阵不含补齐部分分别为C(M,N)和D(R,S),其中M、N、R、S均小于等于K的正整数,则先将C (M, N)和D (R, S)从SDRAM中读取,存入RAM中,然后按照0,N, 2化..N(M-1), I, (N+l), (2N+1)…(N(M-1)+1)…(N-l),(2N-1)…(N*M_1)的次序,先跳读前 M*N数据,再按照
[0033]M*N, (M*N+S),(M*N+2S)…(M*N+S (R-1)),(M*N+1),(M*N+ (S+l)),(M*N+ (2S+1))...(M*N+(S(R-1)+1))…(M*N+(S-1) ),(M*N+(2S-1))...(M*N+(S*R_1))的次序,跳读 RAM后 R*S数据;步骤3中对K*K的矩阵读入随机存储器模块RAM中进行转置处理的过程,是指若两个Κ*Κ矩阵中的任意一个只含有补齐部分,则该只含补齐部分的矩阵无需转置;步骤4中将转置后的二维矩阵A从SDRAM中读取的过程为若原始二维矩阵A的列数小于行数时,读取转置后的数据时先读第一个方阵的第一行,后读第二个方阵的第一行…..直到读到补齐方阵的第一行,仅读有数据的位置,然后读第一个方阵的第二行,后读第二个方阵的第二行….依次操作,直到读完整个矩阵的数据;若原始矩阵A的列数W大于行数L时,读取转置后的数据先读第一个方阵的第一行作为转置后矩阵的第一行,再读第一个方阵的第二行作为转置后矩阵的第二行,直至读到第一个方阵的最后一行,之后以此方式读取每一个方阵的数据,当读取补齐方阵的数据,只读取到有效数据所在的行。
[0034]本发明提供的转置装置如图3所示包括控制逻辑模块1,控制逻辑模块I分别连接读SDRAM地址产生模块2、写SDRAM地址产生模块3和转置RAM模块4,转置RAM模块4分别连接数据输入FIFO模块5和数据输出FIFO模块6。其中数据通路为=SDRAM外置存储器输出数据到数据输入FIFO模块5,然后输入到转置RAM模块4中,输入进去时为顺序写,输出时跳读;转置RAM模块4中输出数据到数据输出FIFO模块6中写入到SDRAM中;控制逻辑模块I通路包括读SDRAM地址产生模块2、读SDRAM端口信号、输入FIFO的读写标志位、转置RAM的读写地址控制、转置RAM的读写标志位、输出FIFO的读写标志位、写SDRAM地址产生模块3、写SDRAM端口信号;[0035]读SDRAM地址产生模块2如图4所示包括读地址产生状态机、块内行计数器、块内列计数器、块行坐标计数器、块列坐标计数器、方阵计数器、存入数据个数计数器、跨地址数的计数器、读SDRAM行数的选择器、读SDRAM列数的选择器、以及行列拼接得SDRAM读地址。其中读地址产生状态机控制整个转置流程的进行,块内行计数器寄存读取此块的块内的行位置,块内列计数器寄存读取此块的块内的列位置,块行坐标计数器寄存读取此块的所在的行位置,块列坐标计数器寄存读取此块的所在的列位置,方阵计数器寄存此时转置的方阵数,存入数据个数计数器寄存两个沿对角线模式或两个非沿对角线模式矩阵中有效数据的个数;跨地址数的计数器寄存此时的块有效数据的列数,即为转置RAM模块4跨地址读取的计数;读SDRAM行数的选择器选择读取的SDRAM行,当处于两个矩阵的第一个矩阵时根据行、列坐标计算所读的行,当处于两个矩阵中的第二个矩阵时,将行、列坐标数互换,计算第二个矩阵所读的行;读SDRAM列数的选择器如读SDRAM行数的选择器原理相同;最后根据行列拼接得到SDRAM读地址。读SDRAM地址产生状态机如图5所示,包括六个状态:初始状态、沿对角线模式矩阵的每两个矩阵转置操作中的读出第一个矩阵状态(沿线第一个矩阵状态)、沿对角线模式矩阵的每两个矩阵转置操作中的读出第二个矩阵状态(沿线第二个矩阵状态)、非沿对角线模式矩阵的每两个对称矩阵转置操作中的读出第一个矩阵状态(非沿线第一个矩阵状态)、非沿对角线模式矩阵的每两个对称矩阵转置操作中的读出对称矩阵状态(非沿线第二个矩阵状态)、等待矩阵块转置完成状态。首先状态机复位置初始状态,当条件I即初始化完成且数据已经存入完毕,下一状态转到沿线第一个矩阵状态;如不满足则一直停留在初始状态;当目前状态为沿线第一个矩阵状态,当条件2即如果此沿对角线模式矩阵小块为补齐处所在的小块,最后一个有效数据读完,下一状态转到等待矩阵块转置完成状态;当条件3即第一个小块的数据读完,下一状态转到沿线第二个矩阵状态;若条件2或3都不满足,下一状态仍为沿线第一个矩阵状态;当目前状态为沿线第二个矩阵状态时,当条件4即如果此沿对角线模式矩阵小块为补齐处所在的小块,最后一个有效数据读完,或者第二个小块的数据读完,下一状态转到等待矩阵块转置完成状态;如果条件4不满足,下一状态仍为沿线第二个矩阵状态;当目前状态为等待矩阵块转置完成状态,当条件5即所有小块转置完成,下一状态转到初始状态;当条件6即上一个转置小块操作已经完成而且目前所处的方阵的沿对角线模式矩阵已经转置完成,下一状态转到非沿线第一个矩阵状态;当条件7即上一个转置小块操作已经完成而且目前所处的方阵的沿对角线模式矩阵还尚未完成,下一状态转到沿线第一个矩阵状态;当条件5、6或7都不满足时,下一状态仍为等待矩阵块转置完成状态;当目前状态为非沿线第一个矩阵状态时,当条件8即如果此沿对角线模式矩阵小块为补齐处所在的小块,最后一个有效数据读完,或者此小块所对称的小块处数据为补齐的矩阵即数据为空,下一状态转到等待矩阵块转置完成状态;当条件9即第一个小块的数据读完,下一状态转到非沿线第二个矩阵状态;若条件8、9都不满足,下一状态仍为非沿线第一个矩阵状态;当目前状态为非沿线第二个矩阵状态时,当条件10即如果此沿对角线模式矩阵小块为补齐处所在的小块,最后一个有效数据读完,或者第二个小块的数据读完,下一状态转到等待矩阵块转置完成状态;若条件10不满足,下一状态仍为非沿线第二个矩阵状态。
[0036]如图6所示,转置RAM模块4包括地址产生状态机、每次置基地址后跳读个数的计数器、每次需重置的基地址的计数器、转置RAM读写地址的产生。地址产生状态机控制整个转置RAM读写流程;每次置基地址后跳读个数的计数器,寄存此时已经跳读读取的个数?’每次需重置的基地址的计数器,寄存需要重置的基地址;转置RAM读写地址的产生,根据上述三个单元的结果定位转置RAM的地址。转置RAM模块4实现数据的顺序写入与跳变读出功能,其中包括一个随机存储地址产生状态机,如图7所示,包括五个状态:初始状态、顺序写入状态、地址置零状态、跳变读出状态1、跳变读出状态2。各个状态的转换如图7所示,状态机复位置为初始状态,当条件I即读FIFO的读有效,下一状态转到顺序写入状态;若条件I不满足,下一状态仍为初始状态;当目前状态为顺序写入状态时,当条件2即当地址等于这一小块需要存入的数据时,下一状态转到地址置零状态;若条件2不满足,下一状态仍为顺序写入状态;当目前状态为地址置零状态时,下一时钟周期状态跳变为跳变读出状态I ;当目前状态为跳变读出状态I时,当条件3即需要存入大于一个小块的数据,此时地址已达到一个小块的数据时,下一状态转到跳变读出状态2 ;当条件4即存入不多于一个小块的数据,此时地址已是最后一个数据,下一状态转到初始状态;当条件3、4均不满足时,下一状态仍为跳变读出状态I ;当目前状态为跳变读出状态2时,当条件5即当大于一个小块的数据已经存入完成,下一状态转到初始状态;若条件5不满足时,下一状态仍为跳变读出状态2。
[0037]如图8所示,写SDRAM地址产生模块3与读SDRAM地址产生模块2相对应,各个模块的功能与前述读SDRAM地址产生模块2内的小模块功能相同。状态机包括七个状态:初始状态、沿对角线模式矩阵的每两个矩阵转置操作中的写第一个矩阵状态(沿线第一个矩阵状态)、沿对角线模式矩阵的每两个矩阵转置操作中的读出第二个矩阵状态(沿线第二个矩阵状态)、非沿对角线模式矩阵的每两个对称矩阵转置操作中的读出第一个矩阵状态(非沿线第一个矩阵状态)、非沿对角线模式矩阵的每两个对称矩阵转置操作中的读出对称矩阵状态(非沿线第二个矩阵状态)、等待这一阶段操作开始状态1、等待这一阶段操作开始状态2。首先状态机复位置初始状态,当条件I即这一阶段开始信号为真,下一状态转到沿线第一个矩阵状态;如不满足则一直停留在初始状态;当目前状态为沿线第一个矩阵状态,当条件2即如果此沿对角线模式矩阵小块为补齐处所在的小块,最后一个有效数据写完,下一状态转到等待这一阶段操作`开始状态I ;当条件3即第一个小块的数据写完,下一状态转到沿线第二个矩阵状态;若条件2或3都不满足,下一状态仍为沿线第一个矩阵状态;当目前状态为沿线第二个矩阵状态时,当条件4即如果此沿对角线模式矩阵小块为补齐处所在的小块,最后一个有效数据写完,或者第二个小块的数据写完,下一状态转到等待这一阶段操作开始状态I ;如果条件4不满足,下一状态仍为沿线第二个矩阵状态;当目前状态为等待这一阶段操作开始状态I时,下一个时钟周期变为等待这一阶段操作开始状态2 ;
[0038]当目前状态为等待这一阶段操作开始状态2,当条件5即所有小块转置完成,下一状态转到初始状态;当条件6即这一阶段开始而且目前所处的方阵的沿对角线模式矩阵已经转置完成,下一状态转到非沿线第一个矩阵状态;当条件7即这一阶段已经开始而且目前所处的方阵的沿对角线模式矩阵还尚未完成,下一状态转到沿线第一个矩阵状态;当条件5、6或7都不满足时,下一状态仍为等待这一阶段操作开始状态2 ;当目前状态为非沿线第一个矩阵状态时,当条件8即如果此沿对角线模式矩阵小块为补齐处所在的小块,最后一个有效数据写完;或者此小块所对称的小块处数据为补齐的矩阵,即数据为空,下一状态转到等待这一阶段操作开始状态I ;当条件9即第一个小块的数据写完,下一状态转到非沿线第二个矩阵状态;若条件8、9都不满足,下一状态仍为非沿线第一个矩阵状态;当目前状态为非沿线第二个矩阵状态时,当条件10即如果此沿对角线模式矩阵小块为补齐处所在的小块,最后一个有效数据写完,或者第二个小块的数据写完,下一状态转到等待这一阶段操作开始状态I ;若条件10不满足,下一状态仍为非沿线第二个矩阵状态。
[0039]本发明支持原地转置且适用于矩阵行列相差悬殊的情况。提出一种补齐式原地转置方法,并基于硬件实现此转置方法,使得转置装置的存储器使用效率更高,从而满足数字信号处理中存储器资源高效利用的要求。
[0040]本发明的有益效果量化分析如下:
[0041]存储效率分析:
[0042]当矩阵规模为L*W时,假设较小的数为W,本发明在矩阵存储器中需要开辟的包含原矩阵在内的存储空间为:([L/W]+1)*W*W存储空间([]为取整函数)。
[0043]令L分别为160、544、1312、3232,W为64 ;得出转置空间对比,如表1所示的非原地转置算法和本发明的算法的转置空间对比。
[0044]表1
【权利要求】
1.一种补齐式原地矩阵转置方法,其特征在于包括如下步骤: 步骤1:将需要转置的数据连续存入同步动态随机存储器SDRAM中映射成二维矩阵A(L*W),L代表矩阵的行数,W代表矩阵的列数,其中较小的为2的幂次方的正整数倍; 步骤2:以二维矩阵A中行数和列数较小的一方作为边长将二维矩阵A划分成数个方阵,将不够划分为方阵的部分补齐成为一个完整的方阵,补齐部分不含数据;将每个方阵再分割为K*K的矩阵,K是L、W中最小数的约数; 步骤3:Κ*Κ的矩阵分为不含补齐部分的矩阵和含有补齐部分的矩阵两种:a将沿对角线的所有K*K矩阵按照每次两个的方式读入随机存储器模块RAM中进行转置处理,转置后的矩阵输出到SDRAM中覆盖原矩阵; b将非沿对角线的所有K*K矩阵按照每次处理两个以对角线为对称轴矩阵的方式读入随机存储器模块RAM中进行转置处理,转置后的矩阵输出到SDRAM中以对角线为对称轴覆盖相对称的矩阵;对所有方阵进行以上步骤3的操作; 步骤4:将步骤3中得到 的二维矩阵从SDRAM中读取输出,完成整个转置过程。
2.按照权利要求1所述一种补齐式原地矩阵转置方法,其特征在于:所述步骤3中对Κ*Κ的矩阵读入随机存储器模块RAM中进行转置处理的过程为若每两个Κ*Κ矩阵均不含补齐部分,则先将两个矩阵从SDRAM读取,存入RAM中,然后按照O,K,2Κ…K(K-1),1,(Κ+1), (2Κ+1)...(K (K-1)+1)…(K-1),(2Κ-1)…(K2-1)的次序,先跳读 RAM 前 Κ*Κ 数据,再按照 K2,(Κ2+Κ), (Κ2+2Κ)…(K2+K(K-1)),(K2+l), (Κ2+(Κ+1)), (Κ2+2Κ+1)…(Κ2+Κ(K-1)+1)...(K2+K-l), (Κ2+2Κ-1)…(Κ2+Κ2-1)的次序,跳读 RAM 后 Κ*Κ 数据。
3.按照权利要求1所述一种补齐式原地矩阵转置方法,其特征在于:所述步骤3中对Κ*Κ的矩阵读入随机存储器模块RAM中进行转置处理的过程,是指若每两个Κ*Κ矩阵中仅其中一个含有补齐和非补齐部分,设两个矩阵不含补齐部分分别为C (Μ,N)和D(R,S),其中Μ、N、R、S均小于等于K的正整数,则先将C(M,N)和D(R,S)从SDRAM中读取,存入RAM中,然后按照0,N,2N…N(M-1),1,(N+l), (2N+1)…(N(M-1)+1)...(N-1),(2N-1)…(N*M_1)的次序,先跳读前 M*N 数据,再按照 M*N,(M*N+S),(M*N+2S)...(M*N+S (R-1)), (M*N+1), (M*N+(S+1)),(M*N+(2S+1))...(M*N+(S(R-1)+1))…(M*N+(S_1)),(M*N+(2S-1))...(M*N+(S*R_1))的次序,跳读RAM后R*S数据。
4.按照权利要求1所述一种补齐式原地矩阵转置方法,其特征在于:所述步骤3中对K*K的矩阵读入随机存储器模块RAM中进行转置处理的过程,是指两个K*K矩阵中的任意一个只含有补齐部分,则该只含补齐部分的矩阵无需转置。
5.按照权利要求1所述一种补齐式原地矩阵转置方法,其特征在于:所述步骤4中将转置后的二维矩阵A从SDRAM中读取的过程为若原始二维矩阵A的列数小于行数时,读取转置后的数据时先读第一个方阵的第一行,后读第二个方阵的第一行,直到读到补齐方阵的第一行,仅读有数据的位置,然后读第一个方阵的第二行,后读第二个方阵的第二行,依次操作,直到读完整个矩阵的数据;若原始矩阵A的列数W大于行数L时,读取转置后的数据先读第一个方阵的第一行作为转置后矩阵的第一行,再读第一个方阵的第二行作为转置后矩阵的第二行,直至读到第一个方阵的最后一行,之后以此方式读取每一个方阵的数据,当读取补齐方阵的数据,只读取到有效数据所在的行。
6.用于权利要求1所述一种补齐式原地矩阵转置方法中的装置,其特征在于:包括控制逻辑模块(I ),控制逻辑模块(I)分别连接读SDRAM地址产生模块(2)、写SDRAM地址产生模块(3 )和转置RAM模块(4 ),转置RAM模块(4 )分别连接数据输入FIFO模块(5 )和数据输出FIFO模块(6)。
7.按照权利要求6所述的装置,其特征在于:所述读SDRAM地址产生模块(2)包括读地址产生状态机、块内行计数器、块内列计数器、块行坐标计数器、块列坐标计数器、方阵计数器、存入数据个数计数器、跨地址数的计数器、读SDRAM行数的选择器、读SDRAM列数的选择器、以及行列拼接得SDRAM读地址,其中当转置操作可以进行后,读地址状态机进行启动,同时块内行计数器、块内列计数器产生特定块内的行和列地址;根据读地址状态机所处的状态来计数所在块的行坐标及列坐标、所操作方阵的个数,并且需要寄存此次存入数据的个数及跨地址数;根据目前所处方阵数、块行坐标、块列坐标、块内行坐标、块内列坐标计算SDRAM读地址。
8.按照权利要求6所述的装置,其特征在于:所述写SDRAM地址产生模块(3)包括写地址产生状态机、块内行计数器、块内列计数器、块行坐标计数器、块列坐标计数器、方阵计数器、写SDRAM行数的选择器、写SDRAM列数的选择器、以及行列拼接得SDRAM写地址,其中当此过程开始后,写地址状态机启动,同时块内行计数器、块内列计数器产生特定块内的行和列地址;根据写地址状态机所处的状态来计数所在块的行坐标及列坐标、所操作方阵的个数;根据目前所处方阵数、块行坐标、块列坐标、块内行坐标、块内列坐标计算SDRAM写地址。
9.根据权利要求6所述的装置,其特征在于:所述转置RAM模块包括地址产生状态机、每次置基地址后跳读个数的计数器、每次需重置的基地址的计数器、转置RAM读写地址的产生,其中每个小块的数据首先依次存到转置RAM中,当存储完成后,根据地址产生状态机和当时基地址的计数、置基地址后跳读`的个数确定RAM的读地址。
【文档编号】G01S13/90GK103760525SQ201410005244
【公开日】2014年4月30日 申请日期:2014年1月6日 优先权日:2014年1月6日
【发明者】杜高明, 张多利, 宋宇鲲, 王莉莉, 尹勇生, 王晓蕾, 贾靖华 申请人:合肥工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1