CN114328315A - 基于dma的数据预处理方法、dma部件及芯片结构 - Google Patents
基于dma的数据预处理方法、dma部件及芯片结构 Download PDFInfo
- Publication number
- CN114328315A CN114328315A CN202111387441.8A CN202111387441A CN114328315A CN 114328315 A CN114328315 A CN 114328315A CN 202111387441 A CN202111387441 A CN 202111387441A CN 114328315 A CN114328315 A CN 114328315A
- Authority
- CN
- China
- Prior art keywords
- data
- read
- dma
- matrix
- address
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000007781 pre-processing Methods 0.000 title claims abstract description 54
- 230000015654 memory Effects 0.000 claims abstract description 126
- 239000000872 buffer Substances 0.000 claims abstract description 46
- 238000013500 data storage Methods 0.000 claims abstract description 44
- 230000008569 process Effects 0.000 claims abstract description 23
- 239000011159 matrix material Substances 0.000 claims description 137
- 230000017105 transposition Effects 0.000 claims description 18
- 230000008859 change Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 14
- 238000012546 transfer Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例提供一种基于DMA的数据预处理方法、DMA部件及芯片结构,属于计算机技术领域。所述方法包括:针对待处理数据,确定DMA的接口参数,其中所述接口参数包括所述待处理数据的属性信息、输入基地址和输出基地址;根据属性信息和输入基地址,确定DMA从读出存储器中读取待处理数据的若干读地址,使得DMA根据不同读地址读取相应数据;针对每一读地址,将对应读取的数据独立存放于一缓冲区;从各个缓冲区中读取所存放的数据进行拼接;以及将所拼接的数据写入输出基地址所指示的写入存储器的对应数据存储地址。本发明方案可以在DMA搬运数据的过程中完成数据形式改变,不再占用处理器资源,部件利用率更高,性能更优,且效率更高。
Description
技术领域
本发明涉及计算机技术领域,具体地涉及一种基于DMA的数据预处理方法、DMA部件及芯片结构。
背景技术
DMA(Direct Memory Access,直接存储器访问)传输是将数据从一个地址空间复制到另一个地址空间,从而提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。其中,利用DMA所进行的外设和存储器之间或者存储器和存储器之间的数据传输过程通常也称为DMA所执行的数据搬运。
本申请发明人在实现本发明的过程中发现,在一些较为复杂的数据传输中,例如图1所示的矩阵转置,可能会涉及多次数据搬运。举例而言,图2是现有的计算机技术利用DMA进行矩阵转置操作的过程示意图。如图2所示,该过程包括:
1)DMA将矩阵数据从存储器搬运至SPM(Scratch-Pad Memory,片上存储器)或者Cache(高速缓冲存储器)中;
2)处理器通过LD(Load,加载)指令将数据加载到处理器中,并通过ST(Store,存储)指令为数据分配地址,将数据写回SPM或者Cache中;以及
3)通过DMA将矩阵数据从SPM或者Cache中搬运到外设以对矩阵进行运算或者搬运以写回前述存储器中。
可知,该过程涉及两次数据搬运才完成矩阵转置,数据搬运所占比重大,且处理器需要参与数据预处理(矩阵转置的数据读/写等),使得整个处理器的部件利用率、性能都较为低下。
发明内容
本发明实施例的目的是提供一种基于DMA的数据预处理方法、DMA部件及芯片结构,用于至少部分地解决上述技术问题。
为了实现上述目的,本发明实施例提供一种基于DMA的数据预处理方法,包括:针对待处理数据,确定所述DMA的接口参数,其中所述接口参数包括:所述待处理数据的属性信息;输入基地址,指示所述待处理数据在读出存储器中的数据存储地址;以及输出基地址,指示所述待处理数据经所述DMA搬运至写入存储器中的数据存储地址;根据所述属性信息和所述输入基地址,确定所述DMA从所述读出存储器中读取所述待处理数据的若干读地址,使得所述DMA根据不同读地址从所述读出存储器中读取相应数据;针对每一读地址,将对应读取的数据独立存放于一缓冲区;从各个所述缓冲区中读取所存放的数据进行拼接;以及将所拼接的数据写入所述输出基地址所指示的所述写入存储器的对应数据存储地址。
可选地,确定所述DMA的接口参数包括:获取人工预配置的接口参数;或者利用应用所述DMA的计算机系统的信息配置单元对该DMA进行接口配置,以生成对应的接口参数。
可选地,所述待处理数据为矩阵形式,且所述属性信息包括矩阵宽度和矩阵高度。其中,所述确定所述DMA从所述读出存储器中读取所述待处理数据的若干读地址包括:将所述输入基地址作为所述矩阵的第一个数据在所述读出存储器中的数据存储地址;根据所述矩阵宽度和所述输入基地址计算出所述矩阵的每一行的首个数据在所述读出存储器中的数据存储地址,或者根据所述矩阵高度和所述输入基地址计算出所述矩阵的每一列的首个数据在所述读出存储器中的数据存储地址;以及将所计算出的数据存储地址作为所述读地址。
可选地,所述DMA根据不同读地址从所述读出存储器中读取相应数据包括:针对每一读地址,对应读取矩阵中的一行数据或者一列数据,其中所述矩阵高度或所述矩阵宽度被配置为对应限定所读取的矩阵行数或矩阵列数。
可选地,从各个所述缓冲区中读取所存放的数据进行拼接包括:根据数据预处理需求从各个所述缓冲区中读取相应数据进行拼接,以使得拼接后的数据符合该数据预处理需求,其中所述数据预处理需求包括进行矩阵转置。
可选地,针对每一读地址,所述DMA并行地从所述读出存储器读取相应数据,且并行地将所读取的数据存放于相应缓冲区。
可选地,所述写入存储器为SPM或者Cache。
另一方面,本发明实施例还提供一种DMA部件,包括:读地址区,其存放有指示从读出存储器读取待处理数据的读地址,其中所述读地址基于所述待处理数据的属性信息和输入基地址而被确定,其中所述输入基地址用于指示所述待处理数据在所述读出存储器中的数据存储地址;读取接口,用于根据所述读地址区的不同读地址,从所述读出存储器中读取相应数据;缓冲区,其数量与读地址数量相同,且每一缓冲区用于独立存放所述读取接口针对每一读地址对应读取的数据;拼接单元,用于从各个所述缓冲区中读取所存放的数据进行拼接;以及写入接口,用于将所拼接的数据写入输出基地址指示的写入存储器的对应数据存储地址,其中所述输出基地址用于指示所述待处理数据经所述DMA部件搬运至所述写入存储器中的数据存储地址。
可选地,所述待处理数据为矩阵形式,且所述属性信息包括矩阵宽度和矩阵高度。其中,所述读地址基于以下步骤被确定:将所述输入基地址作为所述矩阵的第一个数据在所述读出存储器中的数据存储地址;根据所述矩阵宽度和所述输入基地址计算出所述矩阵的每一行的首个数据在所述读出存储器中的数据存储地址,或者根据所述矩阵高度和所述输入基地址计算出所述矩阵的每一列的首个数据在所述读出存储器中的数据存储地址;以及将所计算出的数据存储地址作为所述读地址。
可选地,所述读取接口根据所述读地址区的不同读地址从所述读出存储器中读取相应数据包括:针对每一读地址,对应读取矩阵中的一行数据或者一列数据,其中所述矩阵高度或所述矩阵宽度被配置为对应限定所读取的矩阵行数或矩阵列数。
可选地,所述拼接单元从各个所述缓冲区中读取所存放的数据进行拼接包括:根据数据预处理需求从各个所述缓冲区中读取相应数据进行拼接,以使得拼接后的数据符合该数据预处理需求,其中所述数据预处理需求包括进行矩阵转置。
可选地,针对每一读地址,所述读取接口并行地从所述读出存储器读取相应数据,且并行地将所读取的数据存放于相应缓冲区。
另一方面,本发明实施例还提供一种芯片结构,包括:读出存储器;写入存储器;以及上述任意所述的DMA部件,用于从所述读出存储器中读取待处理数据,并对所述待处理数据进行预处理,以及将经过所述预处理的数据写入所述写入存储器。
另一方面,本发明实施例还提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令用于使得机器执行上述任意的基于DMA的数据预处理方法。
通过上述技术方案,本发明实施例方案可以在DMA搬运数据的过程中完成了对于数据的读取、拼接和写入,并且可在这一过程中改变数据形式,从而不再占用处理器资源来进行数据预处理,部件利用率更高,性能更优,且效率更高。
本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施例,但并不构成对本发明实施例的限制。在附图中:
图1是矩阵转置示意图。
图2是现有的计算机技术利用DMA进行矩阵转置操作的过程示意图;
图3是本发明实施例的基于DMA的数据预处理方法的流程示意图;
图4是本发明另一实施例的DMA部件的结构示意图;
图5是本发明另一实施例的芯片结构的示意图;
图6是本发明实施例的应用例一的矩阵预处理的流程图;以及
图7是本发明实施例的应用例二的矩阵转置的流程图。
附图标记说明
410 读地址区 420 读取接口
430 缓冲区 440 拼接单元
450 写入接口
具体实施方式
以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。
图3是本发明实施例的基于DMA的数据预处理方法的流程示意图。如图3所示,所述基于DMA的数据预处理方法包括:
步骤S310,针对待处理数据,确定所述DMA的接口参数。
其中,所述接口参数包括:所述待处理数据的属性信息;输入基地址,指示所述待处理数据在读出存储器中的数据存储地址;以及输出基地址,指示所述待处理数据经所述DMA搬运至写入存储器中的数据存储地址。
举例而言,当所述待处理数据为矩阵时,所述属性信息可以包括矩阵宽度和矩阵高度;或者,当所述待处理数据为链表时,所述属性信息可以包括链表长度。另外,关于输入基地址和输出基地址,其主要用于分别指示读出存储器和写入存储器中的数据存储地址,而下文还将结合示例进行具体说明,故在此则不再赘述。
另外,在本发明实施例中,该步骤S310确定所述DMA的接口参数的方法可以包括:获取人工预配置的接口参数,比如利用程序员配置接口参数;或者利用应用所述DMA的计算机系统的信息配置单元对该DMA进行接口配置,以生成对应的接口参数,其中所述信息配置单元例如是编译器、操作系统、微控制器等。
步骤S320,根据所述属性信息和所述输入基地址,确定所述DMA从所述读出存储器中读取所述待处理数据的若干读地址,使得所述DMA根据不同读地址从所述读出存储器中读取相应数据。
其中,所述输入基地址通常只有一个地址,用于指示待处理数据中的首个数据的存储地址,而读地址则是指能够指示出所需读取的所有数据的存储地址。
同样以矩阵为例,该步骤S320中确定若干读地址可优选为包括以下步骤:将所述输入基地址作为所述矩阵的第一个数据在所述读出存储器中的数据存储地址;根据所述矩阵宽度和所述输入基地址计算出所述矩阵的每一行的首个数据在所述读出存储器中的数据存储地址,或者根据所述矩阵高度和所述输入基地址计算出所述矩阵的每一列的首个数据在所述读出存储器中的数据存储地址;以及将所计算出的数据存储地址作为所述读地址。
进一步地,承接于上段关于矩阵的示例,在步骤S320中,所述DMA根据不同读地址从所述读出存储器中读取相应数据可以包括:针对每一读地址,对应读取矩阵中的一行数据或者一列数据,其中所述矩阵高度或所述矩阵宽度被配置为对应限定所读取的矩阵行数或矩阵列数。
需说明的是,下文将会结合示例具体说明如何确定矩阵的读地址,在此则先不进行赘述。
步骤S330,针对每一读地址,将对应读取的数据独立存放于一缓冲区。
以每一读地址可对应读取矩阵的一行数据为例,读取的每一行数据存放一个缓冲区,若存在n行数据,才对应有n个缓冲区用于存放。
步骤S340,从各个所述缓冲区中读取所存放的数据进行拼接。
优选地,根据数据预处理需求从各个所述缓冲区中读取相应数据进行拼接,以使得拼接后的数据符合该数据预处理需求,其中所述数据预处理需求例如包括进行矩阵转置,如此则根据矩阵转置要求来读取相应数据并完成拼接。可理解的,本发明实施例也适用于其他的数据预处理需求,例如得到由指定数据形成的矩阵等。
步骤S350,将所拼接的数据写入所述输出基地址所指示的所述写入存储器的对应数据存储地址。
举例而言,所述写入存储器为SPM或者Cache,如此使得本发明实施例方法可面向使用Cache和/或SPM的计算机系统。
对于上述步骤S310至步骤S350,优选针对每一读地址,所述DMA并行地从所述读出存储器读取相应数据,且并行地将所读取的数据存放于相应缓冲区。举例而言,针对矩阵,读取其每一行数据是并行进行的,且将读取的每一行数据存放入缓冲区的过程也是并行进行的,这相对于常规的读/写串型设计,控制逻辑更为简单,在完成并行读写之后,只需要在步骤S340的拼接过程中进行简单的同步操作就能保证数据按预处理需求完成拼接。
综上,本发明实施例的基于DMA的数据预处理方法可以在DMA搬运数据的过程中完成对于数据的读取、拼接和写入,并且可在这一过程中改变数据形式,从而不再占用处理器资源来进行数据预处理,使得整体的部件利用率更高;并且,本发明实施例方法的控制逻辑相对简单,相对于图2的现有技术,减少了数据搬运次数,性能更优、效率更高。
图4是本发明另一实施例的DMA部件的结构示意图。如图4所示,所述DMA部件包括:读地址区410,其存放有指示从读出存储器读取待处理数据的读地址,其中所述读地址基于所述待处理数据的属性信息和输入基地址而被确定,其中所述输入基地址用于指示所述待处理数据在读出存储器中的数据存储地址;读取接口420,用于根据所述读地址区的不同读地址,从所述读出存储器中读取相应数据;缓冲区430,其数量与读地址数量相同,且每一缓冲区用于独立存放所述读取接口针对每一读地址对应读取的数据;拼接单元440,用于从各个所述缓冲区中读取所存放的数据进行拼接;以及写入接口450,用于将所拼接的数据写入输出基地址指示的写入存储器的对应数据存储地址,其中所述输出基地址用于指示所述待处理数据经所述DMA部件搬运至所述写入存储器中的数据存储地址。
在优选的实施例中,所述待处理数据为矩阵形式,且所述属性信息包括矩阵宽度和矩阵高度。其中,对于矩阵形式,所述读地址基于以下步骤被确定:将所述输入基地址作为所述矩阵的第一个数据在所述读出存储器中的数据存储地址;根据所述矩阵宽度和所述输入基地址计算出所述矩阵的每一行的首个数据在所述读出存储器中的数据存储地址,或者根据所述矩阵高度和所述输入基地址计算出所述矩阵的每一列的首个数据在所述读出存储器中的数据存储地址;以及将所计算出的数据存储地址作为所述读地址。
在更为优选的实施例中,所述读取接口420根据所述读地址区410的不同读地址从所述读出存储器中读取相应数据包括:针对每一读地址,对应读取矩阵中的一行数据或者一列数据,其中所述矩阵高度或所述矩阵宽度被配置为对应限定所读取的矩阵行数或矩阵列数。
在优选的实施例中,所述拼接单元440从各个所述缓冲区中读取所存放的数据进行拼接包括:根据数据预处理需求从各个所述缓冲区中读取相应数据进行拼接,以使得拼接后的数据符合该数据预处理需求,其中所述数据预处理需求包括进行矩阵转置。
在优选的实施例中,针对每一读地址,所述读取接口420并行地从所述读出存储器读取相应数据,且并行地将所读取的数据存放于相应缓冲区。
其中,关于该实施例的DMA部件的更多实施细节及效果可参考上述关于基于DMA的数据预处理方法的实施例,在此则不再进行赘述。
在图4所示出的DMA部件的基础上,本发明另一实施例还提供一种芯片结构,该芯片结构如图5所示,包括:读出存储器;写入存储器;以及上述实施例的DMA部件,用于从所述读出存储器中读取待处理数据,并对所述待处理数据进行预处理,以及将经过所述预处理的数据写入所述写入存储器。
优选地,所述写入存储器为SPM或者Cache。另外,本发明实施例不限定读出存储器的类型,其可以是任意适用于计算机系统的存储器。
优选地,该芯片结构可以是任何使用DMA部件的计算机系统的功能芯片,包括但不限于计算机系统的处理器。
其中,关于该实施例的芯片结构的更多实施细节及效果也可参考上述关于基于DMA的数据预处理方法的实施例,在此则不再进行赘述。
下面将通过两个应用例来更为清楚地介绍本发明实施例的基于DMA的数据预处理方法的具体实施细节及效果。
应用例一
图6是本发明实施例的应用例一的矩阵预处理的流程图。在计算机系统中,矩阵是用来描述图像和图像空间变换,在计算机图形学、人工智能算法中应用广泛,但矩阵涉及的各种运算较为复杂,在应用如图2所示出的现有技术进行处理时,DMA往往涉及多次数据搬运,且处理器也必须要参与运算。据此,应用例一利用本发明实施例的数据预处理方法在实现在DMA的数据搬运过程完成矩阵运算。
该应用例一中,要求将待处理数据从存储器(即读出存储器)搬运到SPM/Cache(即写入存储器),并在搬运过程中实现所要求的矩阵运算。如图6所示,该应用例一的方法具体包括以下步骤:
1)针对待处理的矩阵,配置DMA的接口参数包括矩阵的宽(x_slice)、高(y_slice)、输入基地址(input_base_addr)、输出基地址(output_base_addr)。
其中,input_base_addr为矩阵第一个数据在存储器中的存储地址,output_base_addr为矩阵搬运至SPM的地址或者Cache的位置。需说明的是,假设在所有存储器中矩阵都是按照行优先顺序存储,而列优先顺序存储与之同理,将不再赘述。2)根据接口参数input_base_addr和x_slice,计算出矩阵的每一行的首个数据在存储器中的地址。
即,计算出DMA读存储的地址(即上下文中涉及的读地址),如图中示出的addr[0]—addr[y_slice-1]。
3)DMA并行地从y_slice个存储地址从存储器中读取矩阵的每行数据,并放入写缓冲区中。
4)根据矩阵运算要求,从写缓冲区中读取数据进行拼接。
具体地,可根据矩阵运算要求,编制相适配的拼接算法,以选择出所需数据来拼接成所需的新矩阵或其他数据格式。举例而言,依次从addr[0]—addr[y_slice-1]个缓冲区中的读取一个数据进行拼接,以完成矩阵转置。需说明的是,应用例二还将介绍矩阵转置的具体实施细节,在此则不再进行赘述。
5)将所拼接的数据依次放入output_base_addr所示的SPM地址或者caceh位置。
通过上述步骤,应用例一实现了在DMA传输数据过程中实现矩阵运算操作,相当于为DMA增加了一种新的用于矩阵运算的工作模式,从而不再占用处理器资源进行矩阵运算,能大幅度减少该类矩阵运算的时间,提高计算机系统对矩阵运算的性能。
应用例二
应用例二在应用例一的基础上,以具体的矩阵为例,描述利用本发明实施例方法实现矩阵转置的过程。图7是本发明实施例的应用例二的矩阵转置的流程图,其承接于应用例一,从而相关参数的定义与应用例一相一致。
如图7所示,应用例二涉及3×3的矩阵进行转置的过程,矩阵的宽和高都为3,所以x_slice和y_slice参数的值为3。假设矩阵在存储中存储的基地址input_base_addr为0x1000,写入SPM或Cache的地址output_base_addr为0x2000。据此,矩阵转置的实现可包括以下步骤:
1)根据input_base_addr和x_slice可以计算三个读地址,分别为0x1000、0x1003、0x1006。
2)DMA从这三个地址并行读取数据,存放至写缓冲区中,缓冲区1中的数据为1、2、3,缓冲区2中的数据为4、5、6,缓冲区3中的数据为7、8、9。
3)分别从三个缓冲区中读取一个数据,进行拼接之后写入SPM/Cache中,第一次拼接的数据为1、4、7,第二次拼接的数据为2、5、8,第三次拼接的数据为3、6、9。
据此,写入SPM/Cache中的矩阵即为原始矩阵转置之后的矩阵,应用例二在DMA搬运数据的过程中完成此矩阵转置过程,控制逻辑简单,且效率更高。
本发明实施例还提供一种机器可读存储介质,其上存储有程序,该程序被处理器执行时实现所述基于DMA的数据预处理方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述基于DMA的数据预处理方法。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现所述基于DMA的数据预处理方法。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化所述基于DMA的数据预处理方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (14)
1.一种基于直接存储器访问DMA的数据预处理方法,其特征在于,所述基于DMA的数据预处理方法包括:
针对待处理数据,确定所述DMA的接口参数,其中所述接口参数包括:所述待处理数据的属性信息;输入基地址,指示所述待处理数据在读出存储器中的数据存储地址;以及输出基地址,指示所述待处理数据经所述DMA搬运至写入存储器中的数据存储地址;
根据所述属性信息和所述输入基地址,确定所述DMA从所述读出存储器中读取所述待处理数据的若干读地址,使得所述DMA根据不同读地址从所述读出存储器中读取相应数据;
针对每一读地址,将对应读取的数据独立存放于一缓冲区;
从各个所述缓冲区中读取所存放的数据进行拼接;以及
将所拼接的数据写入所述输出基地址所指示的所述写入存储器的对应数据存储地址。
2.根据权利要求1所述的基于DMA的数据预处理方法,其特征在于,确定所述DMA的接口参数包括:
获取人工预配置的接口参数;或者
利用应用所述DMA的计算机系统的信息配置单元对该DMA进行接口配置,以生成对应的接口参数。
3.根据权利要求1所述的基于DMA的数据预处理方法,其特征在于,所述待处理数据为矩阵形式,且所述属性信息包括矩阵宽度和矩阵高度;
其中,所述确定所述DMA从所述读出存储器中读取所述待处理数据的若干读地址包括:
将所述输入基地址作为所述矩阵的第一个数据在所述读出存储器中的数据存储地址;
根据所述矩阵宽度和所述输入基地址计算出所述矩阵的每一行的首个数据在所述读出存储器中的数据存储地址,或者根据所述矩阵高度和所述输入基地址计算出所述矩阵的每一列的首个数据在所述读出存储器中的数据存储地址;以及
将所计算出的数据存储地址作为所述读地址。
4.根据权利要求3所述的基于DMA的数据预处理方法,其特征在于,所述DMA根据不同读地址从所述读出存储器中读取相应数据包括:
针对每一读地址,对应读取矩阵中的一行数据或者一列数据,其中所述矩阵高度或所述矩阵宽度被配置为对应限定所读取的矩阵行数或矩阵列数。
5.根据权利要求1至4中任意一项所述的基于DMA的数据预处理方法,其特征在于,从各个所述缓冲区中读取所存放的数据进行拼接包括:
根据数据预处理需求从各个所述缓冲区中读取相应数据进行拼接,以使得拼接后的数据符合该数据预处理需求,其中所述数据预处理需求包括进行矩阵转置。
6.根据权利要求1至4中任意一项所述的基于DMA的数据预处理方法,其特征在于,针对每一读地址,所述DMA并行地从所述读出存储器读取相应数据,且并行地将所读取的数据存放于相应缓冲区。
7.根据权利要求1所述的基于DMA的数据预处理方法,其特征在于,所述写入存储器为片上存储器SPM或者高速缓冲存储器Cache。
8.一种DMA部件,其特征在于,所述DMA部件包括:
读地址区,其存放有指示从读出存储器读取待处理数据的读地址,其中所述读地址基于所述待处理数据的属性信息和输入基地址而被确定,其中所述输入基地址用于指示所述待处理数据在所述读出存储器中的数据存储地址;
读取接口,用于根据所述读地址区的不同读地址,从所述读出存储器中读取相应数据;
缓冲区,其数量与读地址数量相同,且每一缓冲区用于独立存放所述读取接口针对每一读地址对应读取的数据;
拼接单元,用于从各个所述缓冲区中读取所存放的数据进行拼接;以及
写入接口,用于将所拼接的数据写入输出基地址指示的写入存储器的对应数据存储地址,其中所述输出基地址用于指示所述待处理数据经所述DMA部件搬运至所述写入存储器中的数据存储地址。
9.根据权利要求8所述的DMA部件,其特征在于,所述待处理数据为矩阵形式,且所述属性信息包括矩阵宽度和矩阵高度;
其中,所述读地址基于以下步骤被确定:
将所述输入基地址作为所述矩阵的第一个数据在所述读出存储器中的数据存储地址;
根据所述矩阵宽度和所述输入基地址计算出所述矩阵的每一行的首个数据在所述读出存储器中的数据存储地址,或者根据所述矩阵高度和所述输入基地址计算出所述矩阵的每一列的首个数据在所述读出存储器中的数据存储地址;以及
将所计算出的数据存储地址作为所述读地址。
10.根据权利要求9所述的DMA部件,其特征在于,所述读取接口根据所述读地址区的不同读地址从所述读出存储器中读取相应数据包括:
针对每一读地址,对应读取矩阵中的一行数据或者一列数据,其中所述矩阵高度或所述矩阵宽度被配置为对应限定所读取的矩阵行数或矩阵列数。
11.根据权利要求8至10中任意一项所述的基于DMA部件,其特征在于,所述拼接单元从各个所述缓冲区中读取所存放的数据进行拼接包括:
根据数据预处理需求从各个所述缓冲区中读取相应数据进行拼接,以使得拼接后的数据符合该数据预处理需求,其中所述数据预处理需求包括进行矩阵转置。
12.根据权利要求8至10中任意一项所述的DMA部件,其特征在于,针对每一读地址,所述读取接口并行地从所述读出存储器读取相应数据,且并行地将所读取的数据存放于相应缓冲区。
13.一种芯片结构,其特征在于,所述芯片结构包括:
读出存储器;
写入存储器;以及
权利要求8至12中任意一项所述的DMA部件,用于从所述读出存储器中读取待处理数据,并对所述待处理数据进行预处理,以及将经过所述预处理的数据写入所述写入存储器。
14.一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令用于使得机器执行权利要求1至7中任意一项所述的基于DMA的数据预处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111387441.8A CN114328315A (zh) | 2021-11-22 | 2021-11-22 | 基于dma的数据预处理方法、dma部件及芯片结构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111387441.8A CN114328315A (zh) | 2021-11-22 | 2021-11-22 | 基于dma的数据预处理方法、dma部件及芯片结构 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114328315A true CN114328315A (zh) | 2022-04-12 |
Family
ID=81046463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111387441.8A Pending CN114328315A (zh) | 2021-11-22 | 2021-11-22 | 基于dma的数据预处理方法、dma部件及芯片结构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114328315A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116340214A (zh) * | 2023-02-28 | 2023-06-27 | 中科驭数(北京)科技有限公司 | 缓存数据存读方法、装置、设备和介质 |
CN116627357A (zh) * | 2023-07-21 | 2023-08-22 | 美智纵横科技有限责任公司 | 数据处理方法、深度学习模型的部署方法、装置及芯片 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706760A (zh) * | 2009-10-20 | 2010-05-12 | 北京龙芯中科技术服务中心有限公司 | 矩阵转置自动控制电路系统及矩阵转置方法 |
CN103760525A (zh) * | 2014-01-06 | 2014-04-30 | 合肥工业大学 | 一种补齐式原地矩阵转置方法 |
CN106933756A (zh) * | 2015-12-31 | 2017-07-07 | 北京国睿中数科技股份有限公司 | 用于可变矩阵的dma快速转置方法及装置 |
CN109074334A (zh) * | 2017-12-29 | 2018-12-21 | 深圳市大疆创新科技有限公司 | 数据处理方法、设备、dma控制器及计算机可读存储介质 |
CN110390075A (zh) * | 2019-07-19 | 2019-10-29 | 广东省新一代通信与网络创新研究院 | 矩阵预处理方法、装置、终端及可读存储介质 |
CN112506567A (zh) * | 2020-11-27 | 2021-03-16 | 海光信息技术股份有限公司 | 数据读取方法和数据读取电路 |
-
2021
- 2021-11-22 CN CN202111387441.8A patent/CN114328315A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706760A (zh) * | 2009-10-20 | 2010-05-12 | 北京龙芯中科技术服务中心有限公司 | 矩阵转置自动控制电路系统及矩阵转置方法 |
CN103760525A (zh) * | 2014-01-06 | 2014-04-30 | 合肥工业大学 | 一种补齐式原地矩阵转置方法 |
CN106933756A (zh) * | 2015-12-31 | 2017-07-07 | 北京国睿中数科技股份有限公司 | 用于可变矩阵的dma快速转置方法及装置 |
CN109074334A (zh) * | 2017-12-29 | 2018-12-21 | 深圳市大疆创新科技有限公司 | 数据处理方法、设备、dma控制器及计算机可读存储介质 |
CN110390075A (zh) * | 2019-07-19 | 2019-10-29 | 广东省新一代通信与网络创新研究院 | 矩阵预处理方法、装置、终端及可读存储介质 |
CN112506567A (zh) * | 2020-11-27 | 2021-03-16 | 海光信息技术股份有限公司 | 数据读取方法和数据读取电路 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116340214A (zh) * | 2023-02-28 | 2023-06-27 | 中科驭数(北京)科技有限公司 | 缓存数据存读方法、装置、设备和介质 |
CN116340214B (zh) * | 2023-02-28 | 2024-01-02 | 中科驭数(北京)科技有限公司 | 缓存数据存读方法、装置、设备和介质 |
CN116627357A (zh) * | 2023-07-21 | 2023-08-22 | 美智纵横科技有限责任公司 | 数据处理方法、深度学习模型的部署方法、装置及芯片 |
CN116627357B (zh) * | 2023-07-21 | 2023-09-29 | 美智纵横科技有限责任公司 | 数据处理方法、深度学习模型的部署方法、装置及芯片 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110008009B (zh) | 在运行时绑定常量以提高资源利用率 | |
US20220147795A1 (en) | Neural network tiling method, prediction method, and related apparatus | |
CN114328315A (zh) | 基于dma的数据预处理方法、dma部件及芯片结构 | |
KR20200129843A (ko) | 연산 회로를 포함하는 메모리 장치, 이를 제어하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 | |
US20110082952A1 (en) | Multi-reader multi-writer circular buffer memory | |
CN111028360A (zh) | 一种3d图像处理中数据读写方法及系统、存储介质及终端 | |
CN114942831A (zh) | 处理器、芯片、电子设备及数据处理方法 | |
KR101703984B1 (ko) | 메모리 처리 방법, 및 메모리 처리 시스템 | |
CN112435157B (zh) | 包括不同类型的存储器装置的图形处理系统及其操作方法 | |
CN104216684A (zh) | 一种多核并行系统及其数据处理方法 | |
CN107451070B (zh) | 一种数据的处理方法和服务器 | |
CN117271136A (zh) | 数据处理方法、装置、设备和存储介质 | |
US8041903B2 (en) | Processor and method for controlling memory | |
US20220188380A1 (en) | Data processing method and apparatus applied to graphics processing unit, and electronic device | |
KR102471553B1 (ko) | 컴퓨팅 기기에 의해 수행되는 방법, 장치, 기기 및 컴퓨터 판독가능 저장 매체 | |
CN113052291B (zh) | 数据处理方法和装置 | |
CN113052292B (zh) | 卷积神经网络技术方法、装置及计算机可读存储介质 | |
KR20150086718A (ko) | 메모리를 이용하여 파이프라인이 데이터를 처리하는 방법 및 장치 | |
KR101540300B1 (ko) | 캐시 메모리를 이용한 이미지 워핑 시스템 및 그 방법 | |
JP7061742B2 (ja) | プロセッサ装置 | |
CN116303135B (zh) | 任务数据的装载方法、装置和计算机设备 | |
US9552302B2 (en) | Data processing apparatus, data processing method and program recording medium | |
CN115858444B (zh) | 用于通用计算的数据访问方法、装置和系统 | |
CN118314002A (zh) | 张量处理方法、设备、存储介质和程序产品 | |
CN116680082A (zh) | 一种图训练数据的高效加载方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |