CN101303668B - 一种数据转置的方法和系统 - Google Patents
一种数据转置的方法和系统 Download PDFInfo
- Publication number
- CN101303668B CN101303668B CN2008101164338A CN200810116433A CN101303668B CN 101303668 B CN101303668 B CN 101303668B CN 2008101164338 A CN2008101164338 A CN 2008101164338A CN 200810116433 A CN200810116433 A CN 200810116433A CN 101303668 B CN101303668 B CN 101303668B
- Authority
- CN
- China
- Prior art keywords
- transposition
- data
- central area
- hardware
- cache
- 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
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明披露了一种数据转置的方法和系统,包括下述步骤:首先,根据硬件的读写方式将待转置的数据分块,使得各分块数据的横纵长度均与硬件每次连续读写的最小单位相匹配;其次,依次将每块数据读入高速缓存;再次,在高速缓存中完成数据转置;再次,将转置后的数据分块输出到对应位置;最后,监测数据是否处理完毕,若监测结果为否,则返回继续读入,若监测结果为是,则结束运算。本发明由于采用了对待转置的数据进行分块的方法,并使分块的大小与硬件每次连续读写数据的最小长度相匹配,故在不增加或少量增加硬件资源的前提下提高了系统性能。
Description
技术领域
本发明涉及一种计算机中数据转置的方法和系统,尤其是涉及一种大规模数据快速转置的方法和系统。
背景技术
在涉及图像处理、数据格式转换等计算机应用系统中,经常需要对数据进行大量的行操作或列操作。例如,如果将内存中的图像纵向压缩一半,就可能需要将奇数行的数据叠加到偶数行上面并输出叠加数据的一半,这就是典型的行操作,即对每一行数据的处理方式相同;同样,如果将内存中的图像横向压缩一半,就可能需要将奇数列的数据叠加到偶数列上并输出叠加数据的一半,这是典型的列操作。
一般情况下,在程序的编制层面上,行操作和列操作的书写方法相同,但是反映到硬件的运行速度上,行操作的处理速度往往要比列操作快的多,尤其在较低成本的嵌入式系统中此种差异更加明显。究其原因,系由于在某些介质(如SDRAM)上零散分布的数据的单位读写时间大于连续数据的单位读写时间。现行的计算机系统中大都带Cache,但是这个问题可能依然存在,因为Cache的存储基本上是一组数据存储一条,故行处理时Cache的命中率较高,而当要处理的数据分布在多个行时且行数较多时,Cache的命中率将会降低,即列处理的Cache命中率低。
鉴于列操作的效率远低于行操作,故如果要进行列操作,一个可能的办法通过将数据转置90度,借此将速度较慢的列操作转化为速度较快的行操作。但是,数据的转置本身的过程也是行操作与列操作的集合,因此简单的转置也存在速度较慢的问题,现有技术中对此多采用更换较高性能硬件的方式予以解决,但是,该方法并没有从根本上解决数据转置的读写瓶颈问题,并且带来了更高的生产成本。
发明内容
本发明的目的是针对现有技术中存在的上述问题,提出了一种计算机大规模数据快速转置的方法和系统。
本发明的第一方面,提供了一种数据转置的方法,包括下述步骤:首先,根据硬件的读写方式将待转置的数据分块,使得各分块数据的横纵长度均与硬件每次连续读写的最小单位相匹配;其次,依次将每块数据分块读入高速缓存;再次,在高速缓存中完成数据转置;最后,将转置后的数据分块输出到对应位置。
其中,将待转置的数据分块步骤包括:
首先,将待转置的矩形区域划分为中心区域与边缘区域。所述的中心区域是待转置区域的中心部分,为一矩形块,其左上角的横、纵坐标分别由待转置数据区和转置后的数据区的左上角数据点的水平坐标计算决定,其长宽必须为硬件每次连续读写的最小单位C的倍数,且保证中心区域的面积最大;所述的边缘区域是除去所述中心区域后的待转置区域剩余部分,位于待转置区域的四周。
其次,将所述的中心区域划分为多个依次排列的正方形分块,其中每个分块的边长为硬件每次连续读写的最小单位C;同时,将所述的边缘区域划分为多个依次排列的矩形分块,该多个矩形分块与所述的位于中心区域的方形分块对应排列成行或列。
在本发明的第一方面中,可选的是,当中心区域的部分边界与待转置区域的部分边界重合时,则在该位置无边缘区域。
在本发明的第一方面中,可选的是,在将转置后的数据分块输出到对应位置的步骤中还包括下述分布骤:
首先,转置后输出的数据为矩形块,由多个矩形和正方形组成,该多个分块与所述待转置数据的分块一一对应;其次,将转置后的数据分块根据其转置前的位置输出,各分块相对于转置后数据区起点的横、纵坐标分别为其转置前相应的纵、横坐标,且转置后的数据分块的高度与宽度分别为其转置前的宽度与高度。
在本发明的第一方面中,优选的是,系统中的高速缓存为两块,并行完成两个相邻的待转置数据分块的转置运算及输出。
本发明的第二方面,提供了一种数据转置的计算机系统,包括控制模块、常规存储模块和高速缓存模块。该系统有进行大规模的数据转置的需要,待转置数据及转置后输出的数据存储在所述的常规存储模块中,常规存储模块具有读写零散分布数据的速度小于读写连续数据的速度的特性。高速缓存模块是增加的一种物理介质,其特性是对非连续的数据有着较快的读写速度,且容量相对于常规存储模块其一般较小。在上述的系统中,控制模块根据本发明第一方面的方法将数据分割成多个分块,并控制将每一个分块的数据依次调入到高速缓存,完成转置后再将数据写回到常规存储模块。
在本发明的第二方面中,优选的是,系统中的高速缓存模块为两块,并行完成两个相邻的待转置数据分块的转置运算及输出。
在本发明的第二方面中,可选的是,若系统中的控制模块自带Cache,使用该Cache替代所述的高速缓存模块。
本发明由于针对系统固有的硬件性能指标,采用了对待转置的数据进行分块的方法,使得各分块的大小与硬件每次连续读写数据的最小长度相匹配,并以分块为单位进行转置操作,在不增加或少量增加硬件资源的前提下提高了系统性能。
附图说明
下文将参照附图对本发明的具体实施方案进行更详细的举例说明,其中:
图1是本发明的基本步骤流程图;
图2是本发明的分块方法示意图;
图3是本发明的具体实施例二的步骤流程图;
图4是本发明的具体实施例三的步骤流程图。
具体实施方式
图1是本发明的基本步骤流程图。
如图所示,首先在步骤S101中将待转置的数据分块。图2是分块方法示意图,如图所示,待转置数据区域为一个起始坐标为(x0,y0)、长为W、宽为L的矩形区域,要求转置后的数据区域的起始坐标为(x1,y1),该系统的硬件一次较快读取数据的最小长度为C,即每次读取区域为一行中NC(N为非负整数)到NC+C-1的数据,另外,该系统带有一个C*C大小的高速缓存,此缓存能保证对非连续的数据有着较快的读写速度。
根据上述系统固有的条件及转置要求,将待转置区域划分区块。如图2所示,一个起始坐标为(x0,y0),长为W宽为L的矩形区域需要进行转置操作,转置后区域的左上角坐标为(x1,y1)。中心区域要求其左上角的横坐标以及左上角转置后对应位置的横坐标必须是C的倍数,边缘区域位于待转置数据区的四周。具体分块方法如下:左边第一列矩形块的宽度为C-x0%C(其中%为取余数,下同),除去第一列和最后一列,中间的矩形块的宽度均为C,最后一列的宽度是剩余字节的宽度,即为(W-C+x0%C)%C。上面第一行矩形块的高度为C-x1%C,除去第一行和最后一行,中间的矩形块的高度均为C,最后一行的高度为(L-C+x1%C)%C。根据这种分配方式,(x2,y2)点的坐标为(x0+C-x0%C,y0),(x3,y3)点的坐标为(x0+2C-x0%C,y0),(x4,y4)点的坐标为(x0,y0+C-x1%C),(x5,y5)点的坐标为(x0,y0+2C-x1%C)。
在步骤S102中,按照各分块编号的顺序,将其依次读入高速缓存。
在步骤S103中,分块数据在高速缓存中完成转置操作。
在步骤S104中,将转置后的数据输出到对应位置。如图2所示,转置前后相同编号的分块互为转置、相互对应,例如,转置前8号矩形分块与转置后8号矩形分块的行列位置对应互换。而且,转置后的分块的大小与转置前相同编号的分块相同,只是两者的宽高值互换。由上分析可知转置后各关键数据的输出位置,如图2所示,转置后的数据区中(x6,y6)点的坐标为(x1+C-x1%C,y1),(x7,y7)点的坐标为(x1+2C-x1%C,y1),(x8,y8)点的坐标为(x1,y1+C-x0%C),(x9,y9)点的坐标为(x1,y1+2C-x0%C)。
在步骤S 105中,监测数据是否处理完毕,若监测结果为否,则返回步骤S102,若监测结果为是,则进入步骤S106结束运算。
图3是本发明的另一具体实施例的步骤流程图。如图所示,当系统中存在两块C*C大小的高速缓存且存在并行处理的机制时,可以采取以下的处理步骤,以进一步提高数据转置的速度。
首先,在步骤301中将待转置的数据按照上述方法分块;然后进入步骤302,将1号分块数据读入高速缓存1;进入步骤303,在高速缓存1中完成该分块数据转置;进入步骤304,交换高速缓存1和高速缓存2,该交换并不一定搬移其内部存储的数据,仅交换两个缓存的标号即可;进入步骤305,依次将各分块读入高速缓存1;进入步骤3061,在高速缓存中1完成数据转置,本步骤与下述步骤3062系并行操作;进入步骤3062,将高速缓存2的数据输出到对应位置,该输出位置的计算与上述实施例相同,如上所述,本步骤与步骤3061系并行操作;然后进入步骤307,高速缓存1和高速缓存2互换,同理,仅交换缓存的标号即可;进入步骤308,判断各分块数据是否读写完毕,监测结果若为否,则跳转至步骤305继续运行,监测结果若为是,则进入步骤309;在步骤309中,将高速缓存2的数据输出到对应位置;然后进入步骤3010结束运算。
图4是本发明的又一具体实施例的步骤流程图。如图所示,当系统使用的控制模块带有Cache时,如果数据Cache的容量足够大,则可以使用本发明的转置方法加快数据处理速度,提高系统性能。
首先进入步骤S401,将待转置的数据按照上述方法分块;在步骤S402中,依次将各分块数据读入到Cache;在步骤S403中,将Cache中的数据转置;在步骤S404中,将转置后的数据输出到对应位置,该对应位置的计算方法与首例实施例相同;在步骤S405中,监测数据是否处理完毕,若监测结果为否,则返回步骤S402,若监测结果为是,则进入步骤S406结束运算。
应当说明的是,以上描述旨在说明本发明的具体实施方案,不能理解为对本发明的限制,本发明所要求保护的范围仅由权利要求书进行限制。
Claims (7)
1.一种数据转置的方法,其特征在于包括下述步骤:
A.根据硬件的读写方式将待转置的数据分块,使得各分块数据的横纵长度均与硬件每次连续读写的最小单位相匹配,
首先,将所述待转置的数据划分为中心区域和边缘区域,所述的中心区域是待转置区域的中心部分,为一矩形块,其左上角的横、纵坐标分别由待转置数据区、转置后的数据区的左上角数据点的水平坐标计算决定,所述中心区域矩形块的长宽均为硬件每次连续读写的最小单位C的倍数,且保证该中心区域的面积最大;所述的边缘区域是除去所述中心区域后的待转置区域剩余部分,位于待转置区域的四周;
其次,将所述的中心区域划分为多个依次排列的正方形分块,其中每个分块的边长为硬件每次连续读写的最小单位C;同时,将所述的边缘区域划分为多个依次排列的矩形分块,该多个矩形分块与所述的位于中心区域的正方形分块对应排列成行或列;
B.依次将每块数据分块读入高速缓存;
C.在高速缓存中完成数据转置;
D.将转置后的数据分块输出到对应位置。
2.根据权利要求1所述的数据转置的方法,其特征在于,当中心区域的部分边界与待转置区域的部分边界重合时,则在该位置无边缘区域。
3.根据权利要求1所述的数据转置的方法,其特征在于所述的步骤D包括:
D11.所述转置后输出的数据为矩形块,由多个矩形分块和正方形分块组成,该多个分块与所述待转置数据的分块一一对应;
D12.将转置后的数据分块根据其转置前的位置输出,各分块相对于转置后数据区起点的横、纵坐标分别为其转置前相应的纵、横坐标,且转置后的数据分块的高度与宽度分别为其转置前的宽度与高度。
4.根据权利要求1至3中任一所述的数据转置的方法,其特征在于,所述的高速缓存为两块,并行完成两个相邻的待转置数据分块的转置运算及输出。
5.一种计算机系统,包括控制模块、常规存储模块,该系统有进行大规模的数据转置的需要,待转置数据及转置后输出的数据存储在所述的常规存储模块中,其特征在于,该系统还包括高速缓存模块,
所述的控制模块根据硬件的读写方式将待转置的数据沿横纵方向分割成多个分块,使得分块数据的横纵长度均与硬件每次连续读写的最小单位相匹配,包括,首先将所述待转置的数据划分为中心区域和边缘区域,所述的中心区域是待转置数据的中心部分,为一矩形块,其左上角的横、纵坐标分别由待转置数据区、转置后的数据区的左上角数据点的水平坐标计算决定,所述中心区域矩形块的长宽为硬件每次连续读写的最小单位C的倍数,且保证该中心区域的面积最大,所述的边缘区域是除去所述中心区域后的待转置区域剩余部分,位于待转置区域的四周;其次将所述的中心区域划分为多个依次排列的正方形分块,其中每个分块的边长为硬件每次连续读写的最小单位C;同时,将所述的边缘区域划分为多个依次排列的矩形分块,该多个矩形分块与所述的位于中心区域的正方形分块对应排列成行或列;
所述的高速缓存模块以数据分块为单位进行每次的转置操作,并循环完成全部数据的转置操作。
6.根据权利要求5所述的计算机系统,其特征在于,所述的高速缓存模块为两块,在该两块高速缓存模块中并行完成两个相邻的待转置数据分块的转置运算及输出。
7.根据权利要求5所述的计算机系统,其特征在于,所述的控制模块自带Cache,所述的高速缓存模块由该Cache替代。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101164338A CN101303668B (zh) | 2008-07-10 | 2008-07-10 | 一种数据转置的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101164338A CN101303668B (zh) | 2008-07-10 | 2008-07-10 | 一种数据转置的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101303668A CN101303668A (zh) | 2008-11-12 |
CN101303668B true CN101303668B (zh) | 2010-06-16 |
Family
ID=40113582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101164338A Expired - Fee Related CN101303668B (zh) | 2008-07-10 | 2008-07-10 | 一种数据转置的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101303668B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750435A (zh) * | 2015-03-31 | 2015-07-01 | 宁波高新区宁源科技服务有限公司 | 一种待转置二维矩阵的分块线性存储读取方法 |
CN106874219B (zh) * | 2016-12-23 | 2018-11-02 | 深圳云天励飞技术有限公司 | 一种卷积神经网络的数据调度方法、系统及计算机设备 |
CN106843759B (zh) * | 2017-01-17 | 2019-11-12 | 苏州同元软控信息技术有限公司 | 一种基于动态系统结果数据的快速读写方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4918527A (en) * | 1987-12-03 | 1990-04-17 | Etat Francais (Cnet) | Device and method with buffer memory, particularly for line/column matrix transposition of data sequences |
CN1832035A (zh) * | 2005-12-27 | 2006-09-13 | 中国科学院计算技术研究所 | 适合矩阵转置的ddr存储控制器及矩阵行列访问方法 |
CN101093474A (zh) * | 2007-08-13 | 2007-12-26 | 北京天碁科技有限公司 | 利用矢量处理器实现矩阵转置的方法和处理系统 |
-
2008
- 2008-07-10 CN CN2008101164338A patent/CN101303668B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4918527A (en) * | 1987-12-03 | 1990-04-17 | Etat Francais (Cnet) | Device and method with buffer memory, particularly for line/column matrix transposition of data sequences |
CN1832035A (zh) * | 2005-12-27 | 2006-09-13 | 中国科学院计算技术研究所 | 适合矩阵转置的ddr存储控制器及矩阵行列访问方法 |
CN101093474A (zh) * | 2007-08-13 | 2007-12-26 | 北京天碁科技有限公司 | 利用矢量处理器实现矩阵转置的方法和处理系统 |
Non-Patent Citations (1)
Title |
---|
JP特开2005-176129A 2005.06.30 |
Also Published As
Publication number | Publication date |
---|---|
CN101303668A (zh) | 2008-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102362464B (zh) | 内存访问监测方法和装置 | |
CN103229136B (zh) | 磁盘阵列刷盘方法及磁盘阵列刷盘装置 | |
CN102023810B (zh) | 一种写数据的方法、装置以及廉价冗余磁盘阵列 | |
CN101303668B (zh) | 一种数据转置的方法和系统 | |
CN103279309A (zh) | 基于fpga的ddr控制装置及方法 | |
KR20140092135A (ko) | 빅 데이터를 위한 병렬 정렬 방법 및 장치 | |
CN101706760B (zh) | 矩阵转置自动控制电路系统及矩阵转置方法 | |
CN102203718A (zh) | 内存转储处理方法和装置及内存转储系统 | |
CN105718392B (zh) | 细胞阵列文件存储系统及其文件存储设备与文件存储方法 | |
CN101504632A (zh) | 一种dma数据传输方法、系统及一种dma控制器 | |
CN101316240A (zh) | 一种数据读写的方法和装置 | |
CN102804150A (zh) | 数据处理装置、数据处理方法及数据共享系统 | |
CN105373497A (zh) | 基于dsp芯片的矩阵转置装置 | |
CN101996142B (zh) | 一种访问存储器的方法及装置 | |
CN112988621A (zh) | 一种张量数据的数据载入装置及方法 | |
CN105718990B (zh) | 细胞阵列计算系统以及其中细胞之间的通信方法 | |
CN102118304B (zh) | 一种信元交换方法和装置 | |
CN100493000C (zh) | 一种实现多逻辑通道计数的方法和装置 | |
CN1246784C (zh) | 带有可重构通道数dma的数字信号处理器 | |
CN108920097A (zh) | 一种基于交织存储的三维数据处理方法 | |
CN109491926A (zh) | 基于延长写时间的优化非易失性存储器写寿命的内存管理方法 | |
CN101741727B (zh) | 使用三重缓冲来处理数据的方法 | |
CN109271344A (zh) | 基于申威芯片架构并行文件读取的数据预处理方法 | |
CN107291209A (zh) | 细胞阵列计算系统 | |
CN102289424A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100616 Termination date: 20170710 |