CN100424654C - 一种矩阵数据存取方法及其矩阵数据存储装置 - Google Patents
一种矩阵数据存取方法及其矩阵数据存储装置 Download PDFInfo
- Publication number
- CN100424654C CN100424654C CNB2005100617036A CN200510061703A CN100424654C CN 100424654 C CN100424654 C CN 100424654C CN B2005100617036 A CNB2005100617036 A CN B2005100617036A CN 200510061703 A CN200510061703 A CN 200510061703A CN 100424654 C CN100424654 C CN 100424654C
- Authority
- CN
- China
- Prior art keywords
- data
- address
- row
- access
- physical
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Image Input (AREA)
Abstract
一种矩阵数据存取方法,包括下列步骤:包含有预定的高维矩阵数据存储空间,它经过多级的降维处理转化为多个二维矩阵数据存储空间,每一个二维矩阵数据存储空间再分解成相互逻辑独立的二维子矩阵数据存储空间;数据在高维矩阵数据存储空间中的存放方式:由高维到低维,在每一个二维子矩阵数据存储空间中的存放方式:由左到右,由上到下,按照模存放;将二维子矩阵数据存储空间通过数据存储模式的配置映射到多个物理存储器中,根据配置条件从多个物理存储器的每一个存储器中的相应地址中读取需要存取的二维子矩阵数据存储空间中的数据块的数据。以及提供了一种矩阵数据存储装置。本发明存储效率高、能满足不同类型数据存取的要求。
Description
(一)技术领域
本发明涉及一种矩阵数据存取方法及其矩阵数据存储装置。
(二)背景技术
矢量处理器广泛地被应用在多媒体处理和科学计算等领域,它操作的数据对象多为维数不同、数据类型各异的矩阵数据,所以,实现高效的矩阵数据存取是十分重要。
如中国发明专利95103825.7,专利名称为应用线性变换进行图像处理地并行存储装置,公开了一种使用线性变换进行图像处理地并行存储装置,包括多个地址计算单元、多个存储单元以及奥米伽网络和移位电路单元,所述地址计算单元适于根据存取方式、参考坐标和相应的存储模块的存储模块数来产生每个相应于存储模块中的一个模块的地址;所述的存储单元适于接收每个相应的地址计算单元和读/写信号所产生的地址,并且执行实际数据的存储、输入、输出;所述的奥米伽网络适于接收来自与其相应的存储单元的数据,对该数据产生合适的通路使其产生与一处理器所需逻辑顺序一致的存储模块的实际处理顺序,并通过该产生的通路输出数据,所述的移位电路单元适于根据该存取方式所指示的输入在每个奥米伽网络和数据终端之间产生合适的通路。这种装置是通过在多个存储模块内适当的分配并行存取的数据而获得了高的并行性能。这一类方案实际上就是通过存储模块之间地址空间的冗余作为代价实现并行,对于某一个可存取的诸如水平线、垂直线或方框之类的一定几何形状的图形点子集,实际上在每一个存储模块中都要在有一个与之相应的存储地址空间,存储效率较低,并且存在着无法在一任意的位置上以水平线、垂直线、二维方框方式来存取。虽然这种装置通过将存储模块数增加到可同时存取图像点数目的两倍来克服这一缺陷,然而其代价是再一次增加了存储模块的冗余度,降低了存储效率。
如中国发明专利01139343.2,专利名称是使用存储器的方法、两维数据存取存储器以及操作处理设备,公开了一种使用存储器的方法,该方法包括下列步骤:包含有预定的两维存储空间,它由预定的按照两维方式形成的并沿纵向和横向方向排列的虚拟最小两维存储器空间构成,将所述虚拟最小两维存储器空间的各个地址预先分配给多个物理存储器中按照与所述虚拟最小两维存储器的大小相关的方式确定的每一个存储器内的预定地址;在读取所述两维存储器空间中的数据时,指定所述虚拟最小两维存储器中的读取地址以及,参照指定的读取地址指定预定的读取方向,从而,根据指定的地址和指定的方式从多个物理存储器的每个存储器中的相应的地址中读取所述虚拟最小两维存储器中的数据,在读取数据时,还指定数据的读取存取模式,如数据跨越了参照数据现有范围的边缘,则通过将不包含在参照数据的现有范围内的数据读取地址修改成位于参照数据现有范围的边缘处的预定数据的地址而读取数据。该方法将整个两维存储空间划分成一系列的N×N的两维最小存储空间,且N相对较小,一方面不满足实际应用中所需存储空间大小不定的要求,必然造成存储的不方便和存储空间的冗余;另外地址计算方法限制在两维最小存储空间中,采用一维地址计算方法,编程人员需要将两维坐标偏移换算为一维正偏移,实际应用中,用户所见的一般为两维坐标偏移,且可为正负偏移,所以增加了计算成本,也不方便灵活使用。
(三)发明内容
为了克服已有技术的数据存储方法存储效率不高、不能满足多种数据类型存取的要求的不足,本发明提供一种存储效率高、能满足不同类型数据存取的要求的矩阵数据存取方法及其矩阵数据存储装置。
本发明解决其技术问题所采用的技术方案是:
一种矩阵数据存取方法,该方法包括下列步骤:包含有预定的高维矩阵数据存储空间,它经过多级的降维处理最终可以转化为多个二维矩阵数据存储空间,每一个二维矩阵数据存储空间可以再分解成一系列的相互逻辑独立的二维子矩阵数据存储空间,所述的二维子矩阵为m×n矩阵,m、n为自然数;
数据在所述高维矩阵数据存储空间进行存放时采取由高维到低维的方式,在每一个二维子矩阵数据存储空间中进行存放时采取由左到右,由上到下的顺序,按照模进行存放的方式;
将所述二维子矩阵数据存储空间通过数据存储模式的配置映射到多个物理存储器中,所述数据存储模式的配置内容包括:基地址、数据元素宽度、行跨度、列跨度和数据存储模式;
在存取所述二维子矩阵数据存储空间的数据时,指定需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移;以及,
需要存取的二维子矩阵数据存储空间中的数据块的排列方向;
需要存取的二维子矩阵数据存储空间中的数据块的长度;
从而根据以上条件从多个物理存储器的每一个存储器中的相应地址中读取需要存取的二维子矩阵数据存储空间中的数据块的数据;
在读取数据时,从物理存储器中读出的数据要按照需要经过数据置换以使其满足需要的读取数据顺序;
在存入数据时,数据在送入物理存储器中需要经过数据置换以使其满足物理存储器中需要的存放顺序。
进一步,如所述数据存储模式是行存储模式,在行存储模式下,支持的存取的数据块的排列方向为行排列,每次所能进行存取的最大数据块长度为不超过物理存储器的存储单元总数。
或者,所述数据存储模式是列存储模式,在列存储模式下,支持的存取的数据块的排列方向为列排列,每次所能进行存取的最大数据块长度为不超过物理存储器的存储单元总数。
再或者,所述数据存储模式是行列交错存储模式,在行列交错存储模式下,支持的存取的数据块的排列方向为行排列和列排列;
在行列交错存储模式下,数据进行存取时要进行交错,交错包括下列步骤:
(1)、由独立进行交错的数据单元组成的正方形矩阵区域,所述正方形区域是指在行方向上包含的行跨度的个数等于这个区域所包含的行数,所述包含的行跨度的个数为交错额度,它不超过物理存储器的存储单元总数所包含的行跨度的个数;
(2)、将所述正方形区域中的第一行数据次序保持不变;
(3)、将所述正方形区域中的第二行数据的最后一个行跨度中的数据元素转移到第一个行跨度相应位置中去,而原来的从第一个行跨度到倒数第二个行跨度中的数据元素依次向后转移一个行跨度;
(4)、将所述正方形区域中的第三行数据的倒数第二个行跨度中的数据元素转移到第一个行跨度相应位置中去,最后一个行跨度中的数据元素转移到第二个行跨度相应位置中去,而原来的从第一个行跨度到倒数第三个行跨度中的数据元素依次向后转移两个行跨度;
(5)、依次类推,每进行到下一行,则从行尾移到行首的数据元素增加一个,直到进行到所述正方形区域的最后一行结束。
所述的交错方法还包括:(6)、所述正方形区域进行交错后得出的新的各行可以进行排列组合,经过排列组合产生的每一种结果均可作为本交错方式的结果。依据交错额度和行跨度确定行列交错存储模式的修正表方式如下表1:
表1
上表中,M为交错额度,X表示行跨度xstride,X(M-1)表示行跨度X与(M-1)的乘积,X(M-2)表示行跨度X与(M-2)的乘积,X(M-3)表示行跨度X与(M-3)的乘积,依次类推;
所述正方形区域进行交错后得出的新的各行可以进行排列组合形成新的交错结果,对应的修正表1也进行相同的各行的排列组合。
再进一步,所述需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移,其中偏移量为正数或负数。
更进一步,在行存储模式下,物理地址计算过程为:设基地址为base,需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移分别为x和y,行跨度为xstride,列跨度为ystride;
需要存取的二维子矩阵数据存储空间中的数据块中的各个数据在物理存储器中对应的全局的物理地址zi计算式为(1):
zi=base+(x+i)×xstride+y×ystride (1)
其中,i为各个数据相对于该数据块的首地址的距离,单位为行跨度;
将全局的物理地址zi进行除以N和取N的模的运算后得到每一个存储器单元所需要的物理地址信息,N是指所述物理存储器的模数。
在列存储模式下,物理地址计算过程为:设基地址为base,需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移分别为x和y,行跨度为xstride,列跨度为ystride;
需要存取的二维子矩阵数据存储空间中的数据块中的各个数据在物理存储器中对应的全局的物理地址zi计算式为(2):
zi=base+x×xstride+(y+i)×ystride (2)
其中,i为各个数据相对于该数据块的首地址的距离,单位为列跨度;
将全局的物理地址zi进行除以N和取N的模的运算后得到每一个存储器单元所需要的物理地址信息,N是指所述物理存储器的模数。
在行列交错存储模式下,物理地址计算过程为:设基地址为base,需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移分别为x和y,行跨度为xstride,列跨度为ystride;
行列交错存储模式的交错额度为N,需要存取的二维子矩阵数据存储空间中的数据块的各个数据在物理存储器中对应的物理地址的计算方法包括以下步骤:
(1)、计算未经修正的数据块中各个数据对应的全局物理地址zi:
当需要存取的二维子矩阵数据存储空间中的数据块的排列方向为行排列时,计算式为(1):
zi=base+(x+i)×xstride+y×ystride (1)
当需要存取的二维子矩阵数据存储空间中的数据块的排列方向为列排列时,计算式为(2):
zi=base+x×xstride+(y+i)×ystride (2)
其中i为各个数据相对于该数据块的首地址的距离,单位为行跨度;
(2)、同时计算数据块的各个数据在独立进行数据交错的正方形区域中所在位置的行坐标R(zi)和列坐标C(zi):
当需要存取的二维子矩阵数据存储空间中的数据块的排列方向为行排列时,计算式为(3)、(4):
上式中,%为整除取余计算符号;
当需要存取的二维子矩阵数据存储空间中的数据块的排列方向为列排列时,计算式为(5)、(6):
(3)、按照不同的交错方式得到修正表,依据前面求出的R(zi)和C(zi)得出数据块的各个数据在交错过程中移动的偏移量,利用这个偏移量对zi进行修正,从而得出需要存取的二维子矩阵数据存储空间中的数据块中的各个数据在物理存储器中对应的全局物理地址;
根据各个数据在独立进行交错的数据单元组成的正方形矩阵区域中所处的行坐标和列坐标查表得到修正值,即在物理地址计算单元得到的zi的基础上再加表中查得的修正偏移量就得到了修正后的各个数据所对应的修正后的物理地址z′i。如所述正方形区域进行交错后得出的新的各行可以进行排列组合形成新的交错结果,则对应的修正表1也进行相同的各行的排列组合即可,其修正值相同。
(4)、将全局的物理地址zi进行除以N和取N的模的运算后得到每一个存储器单元所需要的物理地址信息,N是指所述物理存储器的模数。
所述物理存储器由多个位宽为字节的存储器单元并联组成,所述的基地址、数据元素宽度、行跨度、列跨度的数值以字节大小为单位。位宽也可以是双字节或多字节,只要配置的内容的单位与位宽一致即可。
一种用于实现所述的矩阵数据存取方法的矩阵数据存储装置,所述的矩阵数据存储装置的逻辑存储空间包含有预定的高维矩阵数据存储空间,所述高维矩阵数据存储空间经过多级的降维处理最终可以转化为多个二维矩阵数据存储空间,每一个二维矩阵数据存储空间可以再分解成一系列的相互逻辑独立的二维子矩阵数据存储空间,所述的二维子矩阵为m×n矩阵,m、n为自然数;
所述的矩阵数据存储装置包括:
配置寄存器,包括基址寄存器,数据元素字节宽度寄存器,行跨度寄存器,列跨度寄存器,循环存取次数寄存器,循环存取使能寄存器,数据存储模式寄存器;
地址计算单元组,由数量与物理存储器单元相同的地址计算单元组成,每一个地址计算单元具有设定的模块号,所述地址计算单元用于根据配置寄存器中的内容和模块号,按照控制器选择的数据通路,从控制器读取需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移,生成需要存取的二维子矩阵数据存储空间中的数据块的相应位置数据所对应的物理地址;
地址转换模块,用于把地址计算单元组生成的各路物理地址信息来转化成为各个物理存储器单元的地址信息,输送到各个物理存储器单元;同时根据模块号为0的地址计算单元产生的物理地址信息计算需要存取的二维子矩阵数据存储空间中的数据块的首地址所对应的物理存储器单元,并将这一信息输送到数据置换模块;
数据置换模块,用于在读取数据时,按照地址转换模块产生的需要存取的二维子矩阵数据存储空间中的数据块的首地址所对应的物理存储器单元的信息对物理存储器单元组产生的一组数据进行置换,以使其满足需要的读取数据顺序;以及在写数据时,按照地址转换模块产生的需要存取的二维子矩阵数据存储空间中的数据块的首地址所对应的物理存储器单元的信息对送入物理存储器单元组的一组数据进行置换以使其满足物理存储器中需要的存放顺序;
物理存储器单元组,由一组并行的物理存储器单元组成;
控制器,用于从程序存储器中读取指令,并对指令进行解析转化为对配置寄存器的配置信息,或是将从指令中解析出的需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移、需要存取的二维子矩阵数据存储空间中的数据块的排列方向输送到地址计算单元组,同时根据需要存取的二维子矩阵数据存储空间中的数据块的长度决定使能地址计算单元的数量,根据需要存取的二维子矩阵数据存储空间中的数据块的排列方向选择地址计算单元的数据通路,将这些信息也输送到地址计算单元组;
总线,连接多个物理存储器单元组的数据通道。
进一步,所述地址计算单元包括:
物理地址计算单元,用于根据控制器选择的数据通路和模块号,以及由控制器输入的需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移,生成需要存取的二维子矩阵数据存储空间中的数据块的相应位置数据所对应的全局物理地址,所述全局物理地址在行存储模式下将直接输出,在行列交错存储模式下将输入到地址修正单元进行修正后输出;
行坐标计算单元,用于在行列交错存储模式下,根据自身的模块号和需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移,生成需要存取的二维子矩阵数据存储空间中的数据块的相应位置数据在独立进行数据交错的正方形区域中所在的行坐标;
列坐标计算单元,用于在行列交错存储模式下,根据自身的模块号和需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的列偏移,生成需要存取的二维子矩阵数据存储空间中的数据块的相应位置数据在独立进行数据交错的正方形区域中所在的列坐标;
地址修正单元,用于在行列交错存储模式下,根据物理地址计算单元生成的全局物理地址、行坐标计算单元生成的数据在独立进行数据交错的正方形区域中所在的行坐标、列坐标计算单元生成的数据在独立进行数据交错的正方形区域中所在的列坐标进行修正,最终生成修正后的物理地址;
输出数据选择器,用于选择是输出地址修正单元的结果还是直接输出物理地址计算单元的计算结果。
再进一步,所述数据置换模块包括:
数据控制单元,用于接受来自地址转换模块的首字节所在的物理存储器单元模块号,将其转化为对数据选择单元的选择信号,输送给读取数据选择单元或写入数据选择单元;
读取数据选择单元,它由与物理存储器单元数量相同的一组选择器组成,每一个选择器用于从多个物理存储器单元中根据数据控制单元的选择信号选择各个读出数据以便并行输出需要读取的数据块的所有数据;
写入数据选择单元,它由与物理存储器单元数量相同的一组选择器组成,每一个选择器用于根据数据控制单元的选择信号选择要写入各个物理存储器单元中的数据以便向物理存储器单元组并行输出需要写入的数据块的所有数据。
更进一步,所述物理存储器单元是单口存储器或多口存储器。
本发明的有益效果主要表现在:1、对存储空间中单位存储元素进行重新定义,满足实际应用中所需存储空间大小不定的要求;2、存储方便,不会造成存储空间的冗余;3、能满足不同类型数据存取的要求;4、通过对逻辑空间进行有效分配,存储效率高;5、进行统一的交错模式定义,进一步提高存储效率;6、地址计算方法可以采用正负偏移,使用方便、灵活。
(四)附图说明
图1是阐述矩阵存储空间以及矩阵降维方法的图;
图2是阐述二维子矩阵数据存储空间的图;
图3是阐述对于一个8×8矩阵的两种不同的交错结果的图;
图4是阐述对于一个4×4矩阵的两种不同的交错结果的图;
图5是阐述矩阵数据存储装置的详细方框图;
图6是阐述地址计算单元的详细方框图;
图7是阐述一个视频宏块中的亮度信号Y和两个色度信号U、V在矩阵存储空间的存储方式的图;
图8是阐述一个视频宏块中的亮度信号Y和两个色度信号U、V在经过降维处理后的逻辑空间的存储方式的图;
图9是阐述一个视频宏块中的色度信号U在物理存储器中的存储方式的图;
图10是阐述需要存取的二维子矩阵数据存储空间中的按行排列的数据块在逻辑空间与物理空间中的分布的图;
图11是阐述矩阵数据存储装置在行存储模式下进行读取一行数据的过程的图;
图12是阐述H.264标准中需要进行预测的4×4亮度块以及其上边的像素组和左边的像素组的图;
图13是阐述需要预测的亮度块的上边的像素组和左边的像素组在逻辑空间与物理空间中的分布的图;
图14阐述矩阵数据存储装置在行列交错存储模式下进行读取一行数据的过程的图;
图15是阐述矩阵数据存储装置在行列交错存储模式下进行读取一列数据的过程的图。
(五)具体实施方式
下面结合附图对本发明作进一步描述。
实施例1
如图1所示,一种矩阵数据存储方法,包含有预定的高维矩阵数据存储空间1,它经过多级的降维处理最终可以转化为多个二维矩阵数据存储空间2,每一个二维矩阵数据存储空间2可以再分解成一系列的相互逻辑独立的二维子矩阵数据存储空间3。数据在所述高维矩阵数据存储空间1进行存放时采取由高维到低维的方式,在每一个二维子矩阵数据存储空间中进行存放时采取由左到右,由上到下的顺序,按照模进行存放的方式;
将所述二维子矩阵数据存储空间3通过数据存取模式的配置映射到多个物理存储器中,如图2所示,配置的内容包括:基地址、数据元素宽度、行跨度、列跨度和数据存储模式;
在存取所述二维子矩阵数据存储空间3的数据时,指定需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移、需要存取的二维子矩阵数据存储空间中的数据块的排列方向以及需要存取的二维子矩阵数据存储空间中的数据块的长度,从而从多个物理存储器的每一个存储器中的相应地址中读取需要存取的二维子矩阵数据存储空间中的数据块的数据;在读取数据时,从物理存储器中读出的数据要按照需要经过数据置换以使其满足需要的读取数据顺序;在写数据时,数据在送入物理存储器中需要经过数据置换以使其满足物理存储器中需要的存放顺序。
所述数据存储模式包括行存储、列存储和行列交错存储。
在行存储模式下,支持的存取的数据块的排列方向只有行排列,每次所能进行存取的最大数据块长度为不超过物理存储器的存储单元总数。
在列存储模式下,支持的存取的数据块的排列方向为列排列,每次所能进行存取的最大数据块长度为不超过物理存储器的存储单元总数。
在行列交错存储模式下,支持的存取的数据块的排列方向包括行排列和列排列,二者可同时支持。
在行列交错存储模式下,数据进行存取时要进行交错,交错包括下列步骤:
由独立进行交错的数据单元组成的正方形矩阵区域,所述正方形区域是指在行方向上包含的行跨度的个数等于这个区域所包含的行数,所述包含的行跨度的个数又称交错额度,它不能超过物理存储器的存储单元总数所包含的行跨度的个数;将所述正方形区域中的第一行数据次序保持不变;将所述正方形区域中的第二行数据的最后一个行跨度中的数据元素转移到第一个行跨度相应位置中去,而原来的从第一个行跨度到倒数第二个行跨度中的数据元素依次向后转移一个行跨度;将所述正方形区域中的第三行数据的倒数第二个行跨度中的数据元素转移到第一个行跨度相应位置中去,最后一个行跨度中的数据元素转移到第二个行跨度相应位置中去,而原来的从第一个行跨度到倒数第三个行跨度中的数据元素依次向后转移两个行跨度;依次类推,每进行到下一行,则从行尾移到行首的数据元素增加一个,直到进行到所述正方形区域的最后一行结束;以上所述正方形区域进行交错后得出的新的各行可以进行排列组合,经过排列组合产生的每一种结果均可作为本交错方式的结果。
如图3所示,这里描述了对于一个8×8矩阵的两种不同的交错结果,如图4所示,这里描述了对于一个4×4矩阵的两种不同的交错结果。
在行存储模式下,物理地址计算过程为:设基地址为base,需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移分别为x和y,行跨度为xstride,列跨度为ystride;
需要存取的二维子矩阵数据存储空间中的数据块中的各个数据在物理存储器中对应的全局物理地址zi计算式为(1):
zi=base+(x+i)×xstride+y×ystride (1)
其中,i为各个数据相对于该数据块的首地址的距离,单位为行跨度;
将全局的物理地址zi进行除以N和取N的模的运算后得到每一个存储器单元所需要的物理地址信息,N是指所述物理存储器的模数。
在列存储模式下,物理地址计算过程为:设基地址为base,需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移分别为x和y,行跨度为xstride,列跨度为ystride;
需要存取的二维子矩阵数据存储空间中的数据块中的各个数据在物理存储器中对应的全局物理地址zi计算式为(2):
zi=base+x×xstride+(y+i)×ystride (2)
其中,i为各个数据相对于该数据块的首地址的距离,单位为列跨度;
将全局的物理地址zi进行除以N和取N的模的运算后得到每一个存储器单元所需要的物理地址信息,N是指所述物理存储器的模数。
在行列交错存储模式下,物理地址计算过程为:设基地址为base,需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移分别为x和y,行跨度为xstride,列跨度为ystride;
行列交错存储模式的交错额度为N,需要存取的二维子矩阵数据存储空间中的数据块的各个数据在物理存储器中对应的物理地址的计算方法包括以下步骤:
(1)、计算未经修正的数据块中各个数据对应的全局物理地址zi:
当需要存取的二维子矩阵数据存储空间中的数据块的排列方向为行排列时,计算式为(1):
zi=base+(x+i)×xstride+y×ystride (1)
当需要存取的二维子矩阵数据存储空间中的数据块的排列方向为列排列时,计算式为(2):
zi=base+x×xstride+(y+i)×ystride (2)
其中i为各个数据相对于该数据块的首地址的距离,单位为行跨度;
(2)、同时计算数据块的各个数据在独立进行数据交错的正方形区域中所在位置的行坐标R(zi)和列坐标C(zi):
当需要存取的二维子矩阵数据存储空间中的数据块的排列方向为行排列时,计算式为(3)、(4):
当需要存取的二维子矩阵数据存储空间中的数据块的排列方向为列排列时,计算式为(5)、(6):
(3)、按照不同的交错方式得到修正表,依据前面求出的R(zi)和C(zi)得出数据块的各个数据在交错过程中移动的偏移量,利用这个偏移量对zi进行修正,从而得出需要存取的二维子矩阵数据存储空间中的数据块中的各个数据在物理存储器中对应的全局物理地址;
(4)、将全局的物理地址zi进行除以N和取N的模的运算后得到每一个存储器单元所需要的物理地址信息,N是指所述物理存储器的模数。
所述需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移,其中偏移量可以是一个正数,也可以是一个负数,数值以字节大小为单位。
实施例2
一个由多个物理存储器单元并联组成的矩阵数据存储装置,矩阵数据存储装置的逻辑存储空间包含有预定的高维矩阵数据存储空间,所述高维矩阵数据存储空间经过多级的降维处理最终可以转化为多个二维矩阵数据存储空间,每一个二维矩阵数据存储空间可以再分解成一系列的相互逻辑独立的的二维子矩阵数据存储空间。如图5所示,所述矩阵数据存储装置包括:
配置寄存器,包括基址寄存器,数据元素字节宽度寄存器,行跨度寄存器,列跨度寄存器,数据存储模式寄存器,交错额度寄存器。
地址计算单元组,由数量与物理存储器单元相同的地址计算单元组成,每一个地址计算单元具有一个自己的模块号,所述地址计算单元用于根据配置寄存器中的内容和模块号,按照控制器选择的数据通路,从控制器读取需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移,生成需要存取的二维子矩阵数据存储空间中的数据块的相应位置数据所对应的物理地址。
地址转换模块,用于把地址计算单元组生成的各路物理地址信息来转化成为各个物理存储器单元的地址信息,输送到各个物理存储器单元;同时根据模块号为0的地址计算单元产生的物理地址信息计算需要存取的二维子矩阵数据存储空间中的数据块的首地址所对应的物理存储器单元的单元号,并将这一信息输送到数据置换模块。
数据置换模块,用来在读取数据时,按照地址转换模块产生的需要存取的二维子矩阵数据存储空间中的数据块的首地址所对应的物理存储器单元的信息对物理存储器单元组产生的一组数据进行置换,以使其满足需要的读取数据顺序;以及在写数据时,按照地址转换模块产生的需要存取的二维子矩阵数据存储空间中的数据块的首地址所对应的物理存储器单元的信息对送入物理存储器单元组的一组数据进行置换以使其满足物理存储器中需要的存放顺序。
物理存储器单元组,由一组并行的物理存储器单元50~57组成,每一个物理存储器单元的位宽均为字节。
控制器,从程序存储器中读取指令,并对指令进行解析转化为对配置寄存器的配置信息,或是将从指令中解析出的需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移、需要存取的二维子矩阵数据存储空间中的数据块的排列方向输送到地址计算单元组,同时根据需要存取的二维子矩阵数据存储空间中的数据块的长度决定使能地址计算单元的数量,根据需要存取的二维子矩阵数据存储空间中的数据块的排列方向选择地址计算单元的数据通路,将这些信息也输送到地址计算单元组;
总线,连接多个物理存储器单元组的数据通道。
如图6所示,所述地址计算单元包括一个物理地址计算单元,用于根据控制器选择的数据通路和模块号i,所述的模块号i与各个数据相对于该数据块的首地址的距离i取值相同;以及由控制器输入的需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移x和列偏移y,生成需要存取的二维子矩阵数据存储空间中的数据块的相应位置数据所对应的全局物理地址,这个物理地址在行存储模式下将直接输出,在行列交错存储模式下将输入到地址修正单元进行修正;还包括一个行坐标计算单元,用于在行列交错存储模式下,根据自身的模块号i和需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移x,生成需要存取的二维子矩阵数据存储空间中的数据块的相应位置数据在独立进行数据交错的正方形区域中所在的行坐标;还包括一个列坐标计算单元,用于在行列交错存储模式下,根据自身的模块号i和需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的列偏移y,生成需要存取的二维子矩阵数据存储空间中的数据块的相应位置数据在独立进行数据交错的正方形区域中所在的列坐标;还包括一个地址修正单元,用于在行列交错存储模式下,根据物理地址计算单元生成的物理地址、行坐标计算单元生成的数据在独立进行数据交错的正方形区域中所在的行坐标、列坐标计算单元生成的数据在独立进行数据交错的正方形区域中所在的列坐标进行修正,最终生成修正后的物理地址;还包括一个输出数据选择器,用来选择是输出地址修正单元的结果还是直接输出物理地址计算单元的计算结果。
所述数据置换模块包括一个数据控制单元,接受来自地址转换模块的首字节所在的物理存储器单元模块号,将其转化为对数据选择单元的选择信号,输送给读取数据选择单元或者是写入数据选择单元;还包括一个读取数据选择单元,它由与物理存储器单元数量相同的一组选择器组成,每一个选择器用于从多个物理存储器单元中根据数据控制单元的选择信号选择各个读出数据以便并行输出需要读取的数据块的所有数据;还包括一个写入数据选择单元,它由与物理存储器单元数量相同的一组选择器组成,每一个选择器用于根据数据控制单元的选择信号选择要写入各个物理存储器单元中的数据以便向物理存储器单元组并行输出需要写入的数据块的所有数据。
实施例3
本实施例将矩阵数据存取方法应用在视频信号处理中,通常将一帧视频数据分为若干个宏块,每一个独立的宏块由亮度信号Y和两个色度信号U和V按照4∶2∶0的比例组成。其中,亮度信号为一个16×16的矩阵,两个色度信号分别为8×8的矩阵。利用本发明矩阵存储装置可以有效的实现对这种宏块数据进行存储。
将每一个独立宏块看作是一个四维矩阵数据存储空间,其中一维为时间,如图7所示,在沿着时间t轴依次排列着一组相互独立的矩阵数据存储空间1,每一个三维数据空间1由三个相互独立的二维矩阵数据存储空间2组成,每一个二维矩阵数据存储空间2存放着Y、U、V中的一种信息,其中多个Y数据块或者多个U数据块或者多个V数据块可组成一个二维子矩阵数据存储空间。
把这个四维矩阵数据存储空间通过降维处理,转化为多个二维矩阵数据存储空间2组成的一个总二维矩阵数据存储空间,即一个平面逻辑空间,如图8所示,在每个二维矩阵数据存储空间2中存放着Y、U、V中的一种信息。在规划二维矩阵数据存储空间2的空间大小时可以将用来存放Y的二维矩阵数据存储空间的长和宽设计为用来存放U、V的二维矩阵数据存储空间的长和宽的两倍,通过这样的一种方法可以使逻辑空间达到充分的饱和。
在向物理存储器中进行存放时,存放顺序为在逻辑空间的同一个二维子矩阵数据存储空间中,先将第一行的数据从左到右依次存入物理存储器,然后转到下一行的最左端,再按照从左到右的顺序依次存放,如图9所示,以色度信号U的8×8数据块为例,先把所有同一行的U数据块中的第一行的数据按照箭头方向存入物理存储器,然后按照箭头方向存储所有同一行的U数据块中的第二行的数据,依次类推,直到8行数据存储完毕。
第一、行储模式下的矩阵装置的数据存取地址计算
在信号处理的快速傅立叶变换、离散余弦变换等运算中,都会遇到同时取一行数据的运算,下面将以一个从存储器中同时取一行4个数据至寄存器中的例子来说明本矩阵装置在行存储模式下的使用方法。
设行跨度为1,列跨度为16,数据元素宽度为1,需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移分别为3和1,需要存取的二维子矩阵数据存储空间中的数据块的排列方向为行排列,需要存取的二维子矩阵数据存储空间中的数据块的长度为4,则这样一个数据块在逻辑空间中所处的位置如图10a所示。
设物理存储器单元组由8个并行的物理存储器单元50~57组成,设基地址为4,则需要存取的二维子矩阵数据存储空间中的数据块在物理空间所处的位置如图10b所示。
用户在进行数据存取之前需要对矩阵存取装置的配置寄存器进行配置,方式是用户通过指令将配置信息输送到控制器,然后由控制器对指令进行解析用得出的配置信息完成对各个配置寄存器的配置。配置后在下一次配置之前的所有的数据存取都依照本次配置执行。
在这个例子中配置完成后各个配置寄存器值分别为数据存储模式为行存储模式,行跨度寄存器为1,列跨度寄存器为16,数据元素宽度寄存器为1。
然后用户就可以通过指令来完成数据的存取,在本例中,控制器通过对存取指令的解析可以得到需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移分别为4和1,需要存取的二维子矩阵数据存储空间中的数据块的排列方向只可为行排列,需要存取的二维子矩阵数据存储空间中的数据块的长度为4。控制器将以上信息输送到各个地址计算单元进行物理地址的计算,同时生成地址计算单元的数据通路选择信号以控制其计算的进行。
地址计算单元组中的前四个地址计算单元被控制器使能,开始执行物理地址计算操作,如图6所示,地址计算单元得到控制器送来的地址信息和数据通路选择信号参照公式(1)完成以下运算:
物理地址计算单元执行:
z0=4+(3+0)×1+1×16=23
z1=4+(3+1)×1+1×16=24
z2=4+(3+2)×1+1×16=25
z3=4+(3+3)×1+1×16=26
其中下标0~4代表地址计算单元的模块号,每一个物理地址计算单元只执行自己对应模块号的运算。
由于没有进行行列交错,所以行坐标计算单元和列坐标计算单元在这里不进行工作,数据选择器6选通信号为1,将物理地址计算单元的计算结果直接输出。
如图11所示,地址计算单元的计算结果输送到地址转换模块。地址转换模块将计算结果进行除以8和模8的处理,这里的8是指物理存储器单元组由8个并行的物理存储器单元组成,得到下表2:
除以8 | 模8 | 意义 | |
z<sub>0</sub>=23 | 2 | 7 | 输出物理存储器单元7的地址为2的数据 |
z<sub>1</sub>=24 | 3 | 0 | 输出物理存储器单元0的地址为3的数据 |
z<sub>2</sub>=25 | 3 | 1 | 输出物理存储器单元1的地址为3的数据 |
z<sub>3</sub>=26 | 3 | 2 | 输出物理存储器单元2的地址为3的数据 |
表2
如图11所示,地址转换模块将转换结果分别送到相应的物理存储器单元50~57,物理存储器单元根据地址信息输出数据到地址置换模块。
与此同时,地址转换模块将z0所对应的物理存储器单元号7输送到地址置换模块,地址置换模块中的数据控制单元将物理存储器单元号7转化成为对读取数据选择单元的选择器的选择信号送往读取数据选择单元,读取数据选择单元通过这些选择信号将由物理存储单元输入的数据进行转换,将物理存储器单元57的数据调整到输出的第一个字节,如图11所示,然后把读出的一行4个数据同过总线送往寄存器。
至此,这次读数据的操作全部完成。
第二、列存储模式下的矩阵装置的数据存取地址计算
其过程与行存储模式下基本相同,地址计算公式参照(2)。
第三、行列交错存储模式下的矩阵装置的数据存取地址计算
以下以H.264标准中帧内预测中4×4亮度块的预测为例来说明本矩阵装置在行列交错存储模式下的使用方法。
图12显示了需要进行预测的4×4亮度块7以及其上边的像素组8和左边的像素组9,将要被预测的亮度块7可通过像素组8和像素组9中的数据进行预测,这里就需要既要同时存取处于同一行的像素组8又要能同时存取处于同一列的像素组9。使用本发明的矩阵装置可以对这种存取操作进行加速。
设行跨度为1,列跨度为16,数据元素宽度为1,图12中点M相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移分别为3和1,相应地,点A相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移分别为4和1,则这样一个数据块在逻辑空间中所处的位置如图13a所示。
设物理存储器单元组由8个并行的物理存储器单元50~57组成,设基地址为0,则需要存取的二维子矩阵数据存储空间中的数据块在物理空间所处的位置如图13b所示,从图中可以看出,由于在行列交错存储模式下,数据从逻辑空间转换到物理空间中要进行交错,本例中交错额度为8。因此,在图13b中,在逻辑空间中处于同一列的M、I、J、K、L五个像素点已经被错开分布在五个不同的列中。
用户在进行数据存取之前需要对矩阵存取装置的配置寄存器进行配置,方式是用户通过指令将配置信息输送到控制器,然后由控制器对指令进行解析用得出的配置信息完成对各个配置寄存器的配置。配置后在下一次配置之前的所有的数据存取都依照本次配置执行。
在这个例子中配置完成后各个配置寄存器值分别为数据存储模式为行列交错存储模式,行跨度寄存器为1,列跨度寄存器为16,数据元素宽度寄存器为1,交错额度寄存器为8。
然后用户就可以通过指令来完成数据的存取。
首先说明对于像素组8的读取方式,控制器通过对存取指令的解析可以得到需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移分别为4和0,需要存取的二维子矩阵数据存储空间中的数据块的排列方向只可为行排列,需要存取的二维子矩阵数据存储空间中的数据块的长度为8。控制器将以上信息输送到各个地址计算单元进行物理地址的计算,同时生成地址计算单元的数据通路选择信号以控制其计算的进行。
地址计算单元组中的八个地址计算单元均被控制器使能,开始执行物理地址计算操作,如图6所示,地址计算单元得到控制器送来的地址信息和数据通路选择信号完成以下运算:
物理地址计算单元参照公式(1)执行:
z0=0+(4+0)×1+1×16=20
z1=0+(4+1)×1+1×16=21
z2=0+(4+2)×1+1×16=22
z3=0+(4+3)×1+1×16=23
z4=0+(4+4)×1+1×16=24
z5=0+(4+5)×1+1×16=25
z6=0+(4+6)×1+1×16=26
z7=0+(4+7)×1+1×16=27
其中下标0~7代表地址计算单元的模块号,每一个物理地址计算单元只执行自己对应模块号的运算。
行坐标计算单元参照公式(3)执行:
R(z0)=(4+0)%8×1=4
R(z1)=(4+1)%8×1=5
R(z2)=(4+2)%8×1=6
R(z3)=(4+3)%8×1=7
R(z4)=(4+4)%8×1=0
R(z5)=(4+5)%8×1=1
R(z6)=(4+6)%8×1=2
R(z7)=(4+7)%8×1=3
其中下标0~7代表地址计算单元的模块号,每一个行坐标计算单元只执行自己对应模块号的运算。
列坐标计算单元由于需要存取的二维子矩阵数据存储空间中的数据块的排列方向只可为行排列,因此所有的列坐标计算单元同时参照公式(4)执行
C(z)=0%8=1
物理地址计算单元、行坐标计算单元、列坐标计算单元的结果输送到地址修正单元进行地址的修正。表3为在交错额度M为8,行跨度X为1的情况下地址修正单元对物理地址计算单元生成的物理地址进行修正表,表3是表1的一个具体实施例。地址的修正参照表3进行:
表3
例如对于像素B物理地址的修正包括如下步骤:根据像素B在独立进行交错的数据单元组成的正方形矩阵区域中所处的行坐标5和列坐标1查表得到+1,即在物理地址计算单元得到的z1=21的基础上再加1就得到了修正后的像素B所对应的物理地址22。
按照同样的方法,各个地址修正单元分别将修正后的像素A~H的物理地址输送到相应的数据选择器6,如图6所示,数据选择器6选通信号为0,将地址修正单元的结果输出。
如图14所示,地址计算单元的计算结果输送到地址转换模块。地址转换模块将计算结果进行除以8和模8的处理,这里的8是指物理存储器单元组由8个并行的物理存储器单元组成,得到下表4:
除以8 | 模8 | 意义 | |
z<sub>0</sub>=21 | 2 | 5 | 输出物理存储器单元5的地址为2的数据 |
z<sub>1</sub>=22 | 2 | 6 | 输出物理存储器单元6的地址为2的数据 |
z<sub>2</sub>=23 | 2 | 7 | 输出物理存储器单元7的地址为2的数据 |
z<sub>3</sub>=16 | 2 | 0 | 输出物理存储器单元0的地址为2的数据 |
z<sub>4</sub>=25 | 3 | 1 | 输出物理存储器单元1的地址为3的数据 |
z<sub>5</sub>=26 | 3 | 2 | 输出物理存储器单元2的地址为3的数据 |
z<sub>6</sub>=27 | 3 | 3 | 输出物理存储器单元3的地址为3的数据 |
z<sub>7</sub>=28 | 3 | 4 | 输出物理存储器单元4的地址为3的数据 |
表4
如图14所示,地址转换模块将转换结果分别送到相应的物理存储器单元50~57,物理存储器单元根据地址信息输出数据到地址置换模块。
与此同时,地址转换模块将z0所对应的物理存储器单元号5输送到地址置换模块,地址置换模块中的数据控制单元将物理存储器单元号5转化成为对读取数据选择单元的选择器的选择信号送往读取数据选择单元,读取数据选择单元通过这些选择信号将由物理存储单元输入的数据进行转换,将物理存储器单元55的数据调整到输出的第一个字节,如图14所示,然后把读出的一行8个数据同过总线送往寄存器。
再来说明对于像素组8的读取方式,控制器通过对存取指令的解析可以得到需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移分别为3和1,需要存取的二维子矩阵数据存储空间中的数据块的排列方向为列排列,需要存取的二维子矩阵数据存储空间中的数据块的长度为5。控制器将以上信息输送到各个地址计算单元进行物理地址的计算,同时生成地址计算单元的数据通路选择信号以控制其计算的进行。
地址计算单元组中的前五个地址计算单元均被控制器使能,开始执行物理地址计算操作,如图6所示,地址计算单元得到控制器送来的地址信息和数据通路选择信号完成以下运算:
物理地址计算单元参照公式(2)执行:
z0=0+3×1+(1+0)×16=19
z1=0+3×1+(1+1)×16=35
z2=0+3×1+(1+2)×16=51
z3=0+3×1+(1+3)×16=67
z4=0+3×1+(1+4)×16=83
其中下标0~5代表地址计算单元的模块号,每一个物理地址计算单元只执行自己对应模块号的运算。
行坐标计算单元由于需要存取的二维子矩阵数据存储空间中的数据块的排列方向只可为列排列,因此所有的行坐标计算单元同时参照公式(5)执行:
R(z)=(3%8)×1=3
列坐标计算单元参照公式(6)执行:
C(z0)=(1+0)%8=1
C(z1)=(1+1)%8=2
C(z2)=(1+2)%8=3
C(z3)=(1+3)%8=4
C(z4)=(1+4)%8=5
物理地址计算单元、行坐标计算单元、列坐标计算单元的结果输送到地址修正单元进行地址的修正。地址修正参照表3,例如对于像素I物理地址的修正包括如下步骤:根据像素I在独立进行交错的数据单元组成的正方形矩阵区域中所处的行坐标3和列坐标2查表得到+2,即在物理地址计算单元得到的z1=35的基础上再加2就得到了修正后的像素I所对应的物理地址37。
按照同样的方法,各个地址修正单元分别将修正后的像素M、J、K、L的物理地址输送到相应的数据选择器6,如图6所示,数据选择器6选通信号为0,将地址修正单元的结果输出。
如图15所示,地址计算单元的计算结果输送到地址转换模块。地址转换模块将计算结果进行除以8和模8的处理,这里的8是指物理存储器单元组由8个并行的物理存储器单元组成,得到下表5:
除以8 | 模8 | 意义 | |
z<sub>0</sub>=20 | 2 | 4 | 输出物理存储器单元4的地址为2的数据 |
z<sub>1</sub>=37 | 4 | 5 | 输出物理存储器单元5的地址为4的数据 |
z<sub>2</sub>=54 | 6 | 6 | 输出物理存储器单元6的地址为6的数据 |
z<sub>3</sub>=71 | 8 | 7 | 输出物理存储器单元7的地址为8的数据 |
z<sub>4</sub>=80 | 10 | 0 | 输出物理存储器单元0的地址为10的数据 |
表5
如图15所示,地址转换模块将转换结果分别送到相应的物理存储器单元50~57,物理存储器单元根据地址信息输出数据到地址置换模块。
与此同时,地址转换模块将z0所对应的物理存储器单元号4输送到地址置换模块,地址置换模块中的数据控制单元将物理存储器单元号4转化成为对读取数据选择单元的选择器的选择信号送往读取数据选择单元,读取数据选择单元通过这些选择信号将由物理存储单元输入的数据进行转换,将物理存储器单元54的数据调整到输出的第一个字节,如图14所示,然后把读出的一行5个数据同过总线送往寄存器。
至此,这次读数据的操作全部完成。
Claims (14)
1. 一种矩阵数据存取方法,该方法包括下列步骤:
包含有预定的高维矩阵数据存储空间,它经过多级的降维处理最终转化为多个二维矩阵数据存储空间,每一个二维矩阵数据存储空间再分解成一系列的相互逻辑独立的二维子矩阵数据存储空间,所述的二维子矩阵为m×n矩阵,m、n为自然数;
数据在所述高维矩阵数据存储空间进行存放时采取由高维到低维的方式,在每一个二维子矩阵数据存储空间中进行存放时采取由左到右,由上到下的顺序,按照模N的结果进行存放的方式,N是指物理存储器的模数;
将所述二维子矩阵数据存储空间通过数据存储模式的配置映射到多个物理存储器中,所述数据存储模式的配置内容包括:基地址、数据元素宽度、行跨度、列跨度和数据存储模式;
在存取所述二维子矩阵数据存储空间的数据时,指定需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移;以及,
需要存取的二维子矩阵数据存储空间中的数据块的排列方向;
需要存取的二维子矩阵数据存储空间中的数据块的长度;
从而从多个物理存储器的每一个存储器中的相应地址中读取需要存取的二维子矩阵数据存储空间中的数据块的数据;
在读取数据时,从物理存储器中读出的数据按照需要经过数据置换以使其满足需要的读取数据顺序;
在存入数据时,数据在送入物理存储器中需要经过数据置换以使其满足物理存储器中需要的存放顺序。
2. 如权利要求1所述的一种矩阵数据存取方法,其特征在于:所述数据存储模式是行存储模式,在行存储模式下,支持的存取的数据块的排列方向为行排列,每次所能进行存取的数据块长度不超过物理存储器的存储单元总数。
3. 如权利要求1所述的一种矩阵数据存取方法,其特征在于:所述数据存储模式是列存储模式,在列存储模式下,支持的存取的数据块的排列方向为列排列,每次所能进行存取的数据块长度不超过物理存储器的存储单元总数。
4. 如权利要求1所述的一种矩阵数据存取方法,其特征在于:所述数据存储模式是行列交错存储模式,在行列交错存储模式下,支持的存取的数据块的排列方向为行排列和列排列;
在行列交错存储模式下,数据进行存取时要进行交错,交错包括下列步骤:(1)、由独立进行交错的数据单元组成的正方形矩阵区域,所述正方形矩阵区域是指在行方向上包含的行跨度的个数等于这个区域所包含的行数,所述包含的行跨度的个数为交错额度,并且交错额度不超过物理存储器的存储单元总数所包含的行跨度的个数;
(2)、将所述正方形矩阵区域中的第一行数据次序保持不变;
(3)、将所述正方形矩阵区域中的第二行数据的最后一个行跨度中的数据元素转移到第一个行跨度相应位置中去,而原来的从第一个行跨度到倒数第二个行跨度中的数据元素依次向后转移一个行跨度;
(4)、将所述正方形矩阵区域中的第三行数据的倒数第二个行跨度中的数据元素转移到第一个行跨度相应位置中去,最后一个行跨度中的数据元素转移到第二个行跨度相应位置中去,而原来的从第一个行跨度到倒数第三个行跨度中的数据元素依次向后转移两个行跨度;
(5)、依次类推,每进行到下一行,则从行尾移到行首的数据元素增加一个,直到进行到所述正方形矩阵区域的最后一行结束。
5. 如权利要求4所述的一种矩阵数据存取方法,其特征在于:所述的交错方法还包括:
(6)、所述正方形矩阵区域进行交错后得出的新的各行可以进行排列组合,经过排列组合产生的每一种结果均可作为本交错方式的结果。
6. 如权利要求1-5之一所述的一种矩阵数据存取方法,其特征在于:所述需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移的偏移量为正数或负数。
7. 如权利要求4或5所述的一种矩阵数据存取方法,其特征在于:依据交错额度和行跨度确定行列交错存储模式的修正表方式如下表1:
表1
表1中,M为交错额度,X表示行跨度xstride,X(M-1)表示行跨度X与(M-1)的乘积,X(M-2)表示行跨度X与(M-2)的乘积,X(M-3)表示行跨度X与(M-3)的乘积,依次类推;
根据各个数据在独立进行交错的数据单元组成的正方形矩阵区域中所处的行坐标和列坐标查表1得到修正值,然后在物理地址计算单元得到的未修正的物理地址的基础上再加表中查得的修正偏移量就得到了修正后的各个数据所对应的修正后的物理地址,如所述正方形矩阵区域进行交错后得出的新的各行可以进行排列组合形成新的交错结果,则对应的修正表1也进行相同的各行的排列组合即可,其修正值相同。
8. 如权利要求2所述的一种矩阵数据存取方法,其特征在于:
设基地址为base,需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移分别为x和y,行跨度为xstride,列跨度为ystride;
需要存取的二维子矩阵数据存储空间中的数据块中的各个数据在物理存储器中对应的全局物理地址zi计算式为(1):
zi=base+(x+i)×xstride+y×ystride (1)
其中,i为各个数据相对于该数据块的首地址的距离,单位为行跨度;
将全局物理地址zi同时进行除以N和模N的运算后得到每一个存储器单元所需要的物理地址信息,N是指所述物理存储器的模数。
9. 如权利要求3所述的一种矩阵数据存取方法,其特征在于:
设基地址为base,需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移分别为x和y,行跨度为xstride,列跨度为ystride;
需要存取的二维子矩阵数据存储空间中的数据块中的各个数据在物理存储器中对应的全局物理地址zi计算式为(2):
zi=base+x×xstride+(y+i)×ystride (2)
其中,i为各个数据相对于该数据块的首地址的距离,单位为列跨度;
将全局的物理地址zi同时进行除以N和模N的运算后得到每一个存储器单元所需要的物理地址信息,N是指所述物理存储器的模数。
10. 如权利要求7所述的一种矩阵数据存取方法,其特征在于:
设基地址为base,需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移分别为x和y,行跨度为xstride,列跨度为ystride;
行列交错存储模式的交错额度为N,需要存取的二维子矩阵数据存储空间中的数据块的各个数据在物理存储器中对应的物理地址的计算方法包括以下步骤:
1)、计算未经修正的数据块中各个数据对应的全局物理地址zi:
当需要存取的二维子矩阵数据存储空间中的数据块的排列方向为行排列时,计算式为(1):
zi=base+(x+i)×xstride+y×ystride (1)
当需要存取的二维子矩阵数据存储空间中的数据块的排列方向为列排列时,计算式为(2):
zi=base+x×xstride+(y+i)×ystride (2)
其中i为各个数据相对于该数据块的首地址的距离,单位为行跨度;
2)、同时计算数据块的各个数据在独立进行数据交错的正方形区域中所在位置的行坐标R(zi)和列坐标C(zi):
当需要存取的二维子矩阵数据存储空间中的数据块的排列方向为行排列时,计算式为(3)、(4):
当需要存取的二维子矩阵数据存储空间中的数据块的排列方向为列排列时,计算式为(5)、(6):
3)、按照不同的交错方式得到修正表,依据前面求出的R(zi)和C(zi)得出数据块的各个数据在交错过程中移动的偏移量,利用这个偏移量对zi进行修正,从而得出需要存取的二维子矩阵数据存储空间中的数据块中的各个数据在物理存储器中对应的全局物理地址;
4)、将全局的物理地址zi同时进行除以N和模N的运算后得到每一个存储器单元所需要的物理地址信息,N是指所述物理存储器的模数。
11. 如权利要求6所述的一种矩阵数据存取方法,其特征在于:所述物理存储器由多个位宽为字节的存储器单元并联组成,所述的基地址、数据元素宽度、行跨度、列跨度的数值以字节大小为单位。
12. 一种用于实现如权利要求1所述的矩阵数据存取方法的矩阵数据存储装置,其特征在于:
所述的矩阵数据存储装置的逻辑存储空间包含有预定的高维矩阵数据存储空间,所述高维矩阵数据存储空间经过多级的降维处理最终转化为多个二维矩阵数据存储空间,每一个二维矩阵数据存储空间再分解成一系列的相互逻辑独立的二维子矩阵数据存储空间,所述的二维子矩阵为m×n矩阵,m、n为自然数;
所述的矩阵数据存储装置包括:
配置寄存器,包括基址寄存器,数据元素字节宽度寄存器,行跨度寄存器,列跨度寄存器,循环存取次数寄存器,循环存取使能寄存器,数据存储模式寄存器;
地址计算单元组,由数量与物理存储器单元相同的地址计算单元组成,每一个地址计算单元具有设定的模块号,所述地址计算单元用于根据配置寄存器中的内容和模块号,按照控制器选择的数据通路,从控制器读取需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移,生成需要存取的二维子矩阵数据存储空间中的数据块的相应位置数据所对应的物理地址;
地址转换模块,用于把地址计算单元组生成的各路物理地址信息来转化成为各个物理存储器单元的地址信息,输送到各个物理存储器单元;同时根据模块号为0的地址计算单元产生的物理地址信息计算需要存取的二维子矩阵数据存储空间中的数据块的首地址所对应的物理存储器单元,并将这一信息输送到数据置换模块;
数据置换模块,用于在读取数据时,按照地址转换模块产生的需要存取的二维子矩阵数据存储空间中的数据块的首地址所对应的物理存储器单元的信息对物理存储器单元组产生的一组数据进行置换,以使其满足需要的读取数据顺序;以及在写数据时,按照地址转换单元产生的需要存取的二维子矩阵数据存储空间中的数据块的首地址所对应的物理存储器单元的信息对送入物理存储器单元组的一组数据进行置换以使其满足物理存储器中需要的存放顺序;
物理存储器单元组,由一组并行的物理存储器单元组成;
控制器,用于从程序存储器中读取指令,并对指令进行解析转化为对配置寄存器的配置信息,或是将从指令中解析出的需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移、需要存取的二维子矩阵数据存储空间中的数据块的排列方向输送到地址计算单元组,同时根据需要存取的二维子矩阵数据存储空间中的数据块的长度决定使能地址计算单元的数量,根据需要存取的二维子矩阵数据存储空间中的数据块的排列方向选择地址计算单元的数据通路,将这些信息也输送到地址计算单元组;
总线,连接多个物理存储器单元组的数据通道。
13. 如权利要求12所述的矩阵数据存储装置,其特征在于:所述地址计算单元包括:
物理地址计算单元,用于根据控制器选择的数据通路和模块号,以及由控制器输入的需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移和列偏移,生成需要存取的二维子矩阵数据存储空间中的数据块的相应位置数据所对应的全局物理地址,所述全局物理地址在行存储模式下将直接输出,在行列交错存储模式下将输入到地址修正单元进行修正后输出;
行坐标计算单元,用于在行列交错存储模式下,根据自身的模块号和需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的行偏移,生成需要存取的二维子矩阵数据存储空间中的数据块的相应位置数据在独立进行数据交错的正方形矩阵区域中所在的行坐标;
列坐标计算单元,用于在行列交错存储模式下,根据自身的模块号和需要存取的二维子矩阵数据存储空间中的数据块的首地址相对于二维子矩阵数据存储空间的基地址的列偏移,生成需要存取的二维子矩阵数据存储空间中的数据块的相应位置数据在独立进行数据交错的正方形矩阵区域中所在的列坐标;
地址修正单元,用于在行列交错存储模式下,根据物理地址计算单元生成的全局物理地址、行坐标计算单元生成的数据在独立进行数据交错的正方形矩阵区域中所在的行坐标、列坐标计算单元生成的数据在独立进行数据交错的正方形矩阵区域中所在的列坐标进行修正,最终生成修正后的物理地址;
输出数据选择器,用于在行列交错模式下选择的是输出地址修正单元的结果,而在行存储模式和列存储模式下选择的是直接输出物理地址计算单元的计算结果。
14. 如权利要求12或13所述的矩阵数据存储装置,其特征在于:所述数据置换模块包括:
数据控制单元,用于接受来自地址转换模块的首字节所在的物理存储器单元模块号,将其转化为对数据选择单元的选择信号,输送给读取数据选择单元或写入数据选择单元;
读取数据选择单元,它由与物理存储器单元数量相同的一组选择器组成,每一个选择器用于从多个物理存储器单元中根据数据控制单元的选择信号选择各个读出数据以便并行输出需要读取的数据块的所有数据;
写入数据选择单元,它由与物理存储器单元数量相同的一组选择器组成,每一个选择器用于根据数据控制单元的选择信号选择要写入各个物理存储器单元中的数据以便向物理存储器单元组并行输出需要写入的数据块的所有数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100617036A CN100424654C (zh) | 2005-11-25 | 2005-11-25 | 一种矩阵数据存取方法及其矩阵数据存储装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100617036A CN100424654C (zh) | 2005-11-25 | 2005-11-25 | 一种矩阵数据存取方法及其矩阵数据存储装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1971537A CN1971537A (zh) | 2007-05-30 |
CN100424654C true CN100424654C (zh) | 2008-10-08 |
Family
ID=38112370
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100617036A Expired - Fee Related CN100424654C (zh) | 2005-11-25 | 2005-11-25 | 一种矩阵数据存取方法及其矩阵数据存储装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100424654C (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101526920B (zh) * | 2008-12-31 | 2011-04-27 | 北京飞天诚信科技有限公司 | 写入数据的方法及装置 |
CN110704018A (zh) * | 2019-08-26 | 2020-01-17 | 深圳芯英科技有限公司 | 一种数据缓存器及数据处理方法 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101782878B (zh) * | 2009-04-03 | 2011-11-16 | 北京理工大学 | 基于分布式存储器的数据存储方法 |
CN102722341B (zh) * | 2012-05-17 | 2014-12-24 | 杭州中天微系统有限公司 | 存储载入单元投机执行控制装置 |
CN102902729B (zh) * | 2012-09-07 | 2016-03-02 | 大唐移动通信设备有限公司 | 矩阵数据处理方法及装置 |
CN104317792B (zh) * | 2014-08-18 | 2017-12-01 | 南京大学 | 采集的高维数据转换为低维数据的系统及方法 |
CN104156182B (zh) * | 2014-08-29 | 2018-05-29 | 广东威创视讯科技股份有限公司 | 一种基于led屏的校对矩阵的储存方法及装置 |
CN106326144B (zh) * | 2015-06-24 | 2019-08-06 | 龙芯中科技术有限公司 | 基于大页映射的数据读取方法及装置 |
CN108388541B (zh) * | 2016-04-22 | 2020-12-11 | 安徽寒武纪信息科技有限公司 | 卷积运算装置及方法 |
CN107315715B (zh) * | 2016-04-26 | 2020-11-03 | 中科寒武纪科技股份有限公司 | 一种用于执行矩阵加/减运算的装置和方法 |
CN106909320B (zh) * | 2017-02-20 | 2020-01-21 | 北京中科睿芯科技有限公司 | 一种多维数据扩充传输的方法、装置以及系统 |
EP4057148A1 (en) * | 2017-04-27 | 2022-09-14 | Google LLC | Efficient oblivious permutation |
CN107168683B (zh) * | 2017-05-05 | 2020-06-09 | 中国科学院软件研究所 | 申威26010众核cpu上gemm稠密矩阵乘高性能实现方法 |
CN109992541B (zh) * | 2017-12-29 | 2021-09-14 | 深圳云天励飞技术有限公司 | 一种数据搬运方法、计算装置及计算机存储介质 |
CN108984115B (zh) * | 2018-06-14 | 2020-07-28 | 北京理工大学 | 数据并行写入、读取方法、装置及系统 |
CN111858388B (zh) * | 2019-04-24 | 2024-06-18 | 北京京东尚科信息技术有限公司 | 数据存储、内存访问控制的方法、系统、设备和存储介质 |
CN111368023A (zh) * | 2020-03-29 | 2020-07-03 | 北京量子时代智能设备有限公司 | 一种安全的矩阵式文本数据存储表达方法 |
CN113836481B (zh) * | 2020-06-24 | 2024-07-02 | 广州希姆半导体科技有限公司 | 矩阵计算电路、方法、电子设备及计算机可读存储介质 |
CN114219700B (zh) * | 2022-02-23 | 2022-06-03 | 广州匠芯创科技有限公司 | 一种图像处理方法、系统、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5790442A (en) * | 1995-03-14 | 1998-08-04 | International Business Machines Corporation | Method and apparatus for generating low-discrepancy sequence, as well as apparatus and method for calculating multiple integral of function f |
US5872725A (en) * | 1994-12-05 | 1999-02-16 | International Business Machines Corporation | Quasi-random number generation apparatus and method, and multiple integration apparatus and method of function f |
CN1329439A (zh) * | 1997-02-08 | 2002-01-02 | 松下电器产业株式会社 | 产生量化矩阵的方法 |
US20030233195A1 (en) * | 1999-06-23 | 2003-12-18 | Johnson Peter C. | Online database that includes indices representative of a tissue population |
-
2005
- 2005-11-25 CN CNB2005100617036A patent/CN100424654C/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5872725A (en) * | 1994-12-05 | 1999-02-16 | International Business Machines Corporation | Quasi-random number generation apparatus and method, and multiple integration apparatus and method of function f |
US5790442A (en) * | 1995-03-14 | 1998-08-04 | International Business Machines Corporation | Method and apparatus for generating low-discrepancy sequence, as well as apparatus and method for calculating multiple integral of function f |
CN1329439A (zh) * | 1997-02-08 | 2002-01-02 | 松下电器产业株式会社 | 产生量化矩阵的方法 |
US20030233195A1 (en) * | 1999-06-23 | 2003-12-18 | Johnson Peter C. | Online database that includes indices representative of a tissue population |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101526920B (zh) * | 2008-12-31 | 2011-04-27 | 北京飞天诚信科技有限公司 | 写入数据的方法及装置 |
CN110704018A (zh) * | 2019-08-26 | 2020-01-17 | 深圳芯英科技有限公司 | 一种数据缓存器及数据处理方法 |
CN110704018B (zh) * | 2019-08-26 | 2020-11-06 | 深圳芯英科技有限公司 | 一种数据缓存器及数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1971537A (zh) | 2007-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100424654C (zh) | 一种矩阵数据存取方法及其矩阵数据存储装置 | |
US5517666A (en) | Program controlled processor wherein vector distributor and vector coupler operate independently of sequencer | |
CN108416434B (zh) | 针对神经网络的卷积层与全连接层进行加速的电路结构 | |
CN119149885A (zh) | 矩阵的空间局部变换 | |
US4920504A (en) | Display managing arrangement with a display memory divided into a matrix of memory blocks, each serving as a unit for display management | |
CN107679620A (zh) | 人工神经网络处理装置 | |
Lin et al. | Parallel solution of sparse algebraic equations | |
CN103760525A (zh) | 一种补齐式原地矩阵转置方法 | |
CN112559046A (zh) | 数据处理装置及人工智能处理器 | |
CN101454799A (zh) | 用于对图像数据实施基于块和行的处理的集成电路装置 | |
CN110909872B (zh) | 集成电路芯片装置及相关产品 | |
CN113850377B (zh) | 数据处理装置、数据处理方法及相关产品 | |
JPS59132055A (ja) | 多次元平行メモリ | |
CN102340668A (zh) | 一种基于可重构技术的mpeg2亮度插值的实现方法 | |
KR20040022706A (ko) | 연산 장치 및 화상 처리 장치 | |
US5008852A (en) | Parallel accessible memory device | |
EP2024928B1 (en) | Programmable data processing circuit | |
CN115470176A (zh) | 计算装置、利用计算装置实施卷积运算的方法及相关产品 | |
US20230205710A1 (en) | Direct data transfer system | |
US20230205901A1 (en) | Direct data transfer system | |
CN101782878A (zh) | 基于分布式存储器的数据存储方法 | |
CN113900808B (zh) | 一种基于任意多面体非结构网格的mpi并行数据结构 | |
CN115545157A (zh) | 二维卷积计算硬件构架及基于其的流水式二维卷积计算方法 | |
Juskiw et al. | Interactive rendering of volumetric data sets | |
CN113837921B (zh) | 数据处理装置、数据处理方法及相关产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081008 Termination date: 20141125 |
|
EXPY | Termination of patent right or utility model |