CN115905061B - 数据搬运装置、dma装置、电子设备及数据搬运方法 - Google Patents
数据搬运装置、dma装置、电子设备及数据搬运方法 Download PDFInfo
- Publication number
- CN115905061B CN115905061B CN202310055734.9A CN202310055734A CN115905061B CN 115905061 B CN115905061 B CN 115905061B CN 202310055734 A CN202310055734 A CN 202310055734A CN 115905061 B CN115905061 B CN 115905061B
- Authority
- CN
- China
- Prior art keywords
- source
- descriptor
- data
- module
- read
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 24
- 238000012546 transfer Methods 0.000 title description 7
- 230000015654 memory Effects 0.000 claims description 31
- 238000012545 processing Methods 0.000 abstract description 3
- 230000005540 biological transmission Effects 0.000 description 16
- 230000007246 mechanism Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 102100035964 Gastrokine-2 Human genes 0.000 description 2
- 101001075215 Homo sapiens Gastrokine-2 Proteins 0.000 description 2
- 230000004075 alteration Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Landscapes
- Bus Control (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及数据处理技术领域,提供一种数据搬运装置、DMA装置、电子设备及数据搬运方法,旨在提升数据搬运效率。数据搬运装置包括源描述符读取模块和源数据读取模块;源描述符读取模块被配置为:通过对应的读端口,从该读端口对应的物理存储实体中读取源描述符,并将读取的源描述符发送给源数据读取模块;源数据读取模块被配置为:根据源描述符,通过对应的读端口,从该读端口对应的物理存储实体中读取源数据,并将读取的源数据发送给写数据模块;其中,源描述符读取模块对应的读端口和源数据读取模块对应的读端口是两个不同的读端口,两个读端口各自对应的物理存储实体是两个不同的物理存储实体。
Description
技术领域
本公开涉及数据处理技术领域,尤其涉及一种数据搬运装置、DMA装置、电子设备及数据搬运方法。
背景技术
DMA(direct memory access,直接存储器访问)的链表式传输机制(即Scatter-Gather传输机制)是指:从多个离散地址处读取数据,并将读取的数据写入到多个离散的地址空间中,相当于是将多个离散数据连接起来当作一个连续数据进行传输,CPU不需要针对多个离散数据下发多次命令,有利于减小CPU开销。
在基于链表式传输机制进行数据传输时,涉及的关键技术点包括链表,链表中涉及多个源描述符,每个源描述符分别记录了一个离散数据(即源数据)的起始地址和长度信息。在传输源数据之前,DMA首先通过读端口读取源描述符,再根据源描述符中记录的起始地址和长度信息,通过读端口读取出源数据,最后根据目的描述符将源数据写入到相应的地址空间。
虽然现有的链表式传输机制能将多个离散数据连接起来当作一个连续数据进行传输,可以减小CPU开销,但是现有的链表式传输机制仍需要进一步提升数据传输效率。
发明内容
本公开的目的是提供一种数据搬运装置、DMA装置、电子设备及数据搬运方法,旨在提升数据搬运效率。
根据本公开的一个方面,提供一种数据搬运装置,该装置包括源描述符读取模块和源数据读取模块;
源描述符读取模块被配置为:在获得源描述符地址信息后,根据源描述符地址信息,通过源描述符读取模块对应的读端口,从该读端口对应的物理存储实体中读取源描述符,并将读取的源描述符或源描述符中的源数据地址信息发送给源数据读取模块;
源数据读取模块被配置为:根据源描述符读取模块发送的源描述符或源数据地址信息,通过源数据读取模块对应的读端口,从该读端口对应的物理存储实体中读取源数据,并将读取的源数据发送给写数据模块,以通过写数据模块将该源数据写入相应地址空间;
其中,源描述符读取模块对应的读端口和源数据读取模块对应的读端口是两个不同的读端口,两个读端口各自对应的物理存储实体是两个不同的物理存储实体,源描述符和源描述符对应的源数据分别存储在两个不同的物理存储实体中。
本公开一种可行的实现方式中,源描述符读取模块和源数据读取模块的数量均是N个,N是大于等于2的整数;每个源描述符读取模块和每个源数据读取模块作为一组,每一组中的源描述符读取模块和源数据读取模块对应同一个读端口;每个源描述符和该源描述符对应的源数据分别由不同组的源描述符读取模块和源数据读取模块读取。
本公开一种可行的实现方式中,该装置还包括第一命令解析模块;
第一命令解析模块被配置为:对数据搬运命令进行解析,根据数据搬运命令对应的源描述符所在的物理存储实体,将解析出的源描述符地址信息发送给相应的源描述符读取模块。
本公开一种可行的实现方式中,第一命令解析模块还被配置为:将解析出的目标模块信息发送给相应的源描述符读取模块,目标模块信息是存储有源数据的物理存储实体所对应的源数据读取模块的标识;
每个源描述符读取模块在将源描述符或源数据地址信息发送给源数据读取模块时,具体是根据第一命令解析模块发送的目标模块信息,将源描述符或源数据地址信息发送给相应的源数据读取模块。
本公开一种可行的实现方式中,每个源数据读取模块各自对应一个命令队列和一个描述符队列,每个源数据读取模块的命令队列用于存储第一命令解析模块向该源数据读取模块发送的读数据命令,每个源数据读取模块的描述符队列用于存储源描述符读取模块向该源数据读取模块发送的描述符或源数据地址信息;
每个源数据读取模块还被配置为:从命令队列读取读数据命令,并根据读取的读数据命令,判断在执行该读数据命令时是否需要从描述符队列读取描述符或源数据地址信息。
本公开一种可行的实现方式中,该装置还包括N个目的描述符读取模块和N个写数据模块,每个目的描述符读取模块和一个源描述符读取模块对应同一个读端口,每个写数据模块分别对应不同的写端口,每个写数据模块与每个源数据读取模块一一对应;
每个源数据读取模块在将读取的源数据发送给写数据模块时,具体是将读取的源数据发送给对应的写数据模块;
每个目的描述符读取模块被配置为:在获得目的描述符地址信息后,根据目的描述符地址信息,通过目的描述符读取模块对应的读端口,从该读端口对应的物理存储实体中读取目的描述符,并将读取的目的描述符或目的描述符中的地址信息发送给对应的写数据模块;
每个写数据模块被配置为:根据目的描述符读取模块发送的目的描述符或地址信息,将源数据读取模块发送的源数据写入相应地址空间。
本公开一种可行的实现方式中,装置还包括第二命令解析模块;
第二命令解析模块被配置为:对数据搬运命令进行解析,根据数据搬运命令对应的源描述符和目的描述符各自所在的物理存储实体,将解析出的源描述符地址信息和目的描述符地址信息分别发送给相应的源描述符读取模块和目的描述符读取模块。
本公开一种可行的实现方式中,两个不同的物理存储实体分别是CPU对应的存储器和GPU对应的存储器。
本公开一种可行的实现方式中,该装置还包括描述符搬运模块,描述符搬运模块被配置为:将CPU生成的描述符由CPU对应的存储器搬运至GPU对应的存储器。
根据本公开的另一方面,还提供一种DMA装置,该DMA装置包括上述任一实施例中所述的数据搬运装置。
根据本公开的另一方面,还提供一种电子设备,所述电子设备包括以上所述的DMA装置。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、VR设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等。
根据本公开的另一方面,还提供一种数据搬运方法,该方法应用于CPU,该方法包括:
将源数据的描述符发送给GPU,通过GPU对应的物理存储实体存储描述符;
向数据搬运装置发送数据搬运命令,使数据搬运装置在执行数据搬运命令时,通过一个读端口从GPU对应的物理存储实体中读取描述符,并根据读取的描述符,通过另一个读端口从CPU对应的物理存储实体读取源数据,以及将读取的源数据搬运至GPU对应的物理存储实体。
本公开一种可行的实现方式中,在将源数据的描述符发送给GPU之前,该方法还包括:生成源数据的描述符。
附图说明
图1是本公开一实施例提供的数据搬运装置的结构示意图;
图2是本公开另一实施例提供的数据搬运装置的结构示意图;
图3是本公开另一实施例提供的数据搬运装置的结构示意图;
图4是本公开一实施例提供的数据搬运方法的流程示意图。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
相关技术中,在基于链表式传输机制进行数据传输之前,源DMA首先通过读端口读取源描述符,再根据源描述符中记录的起始地址和长度信息,通过读端口读取出源数据,最后根据目的描述符将源数据写入到相应的地址空间。虽然现有的链表式传输机制能将多个离散数据连接起来当作一个连续数据进行传输,可以减小CPU开销,但是现有的链表式传输机制仍需要进一步提升数据传输效率。
本公开的目的是提供一种数据搬运装置、DMA装置、电子设备及数据搬运方法,旨在提升数据搬运效率。
参考图1,图1是本公开一实施例提供的数据搬运装置的结构示意图。如图1所示,该数据搬运装置包括源描述符读取模块和源数据读取模块。
源描述符读取模块被配置为:在获得源描述符地址信息后,根据源描述符地址信息,通过源描述符读取模块对应的读端口,从该读端口对应的物理存储实体中读取源描述符,并将读取的源描述符或源描述符中的源数据地址信息发送给源数据读取模块。
源数据读取模块被配置为:根据源描述符读取模块发送的源描述符或源数据地址信息,通过源数据读取模块对应的读端口,从该读端口对应的物理存储实体中读取源数据,并将读取的源数据发送给写数据模块,以通过写数据模块将该源数据写入相应地址空间。
其中,源描述符读取模块对应的读端口和源数据读取模块对应的读端口是两个不同的读端口,两个读端口各自对应的物理存储实体是两个不同的物理存储实体,源描述符和源描述符对应的源数据分别存储在两个不同的物理存储实体中。
其中,两个不同的物理存储实体是指需要通过不同的端口才能访问的存储器。换言之,当需要访问物理存储实体A时,需要通过物理存储实体A对应的端口port_A才能访问物理存储实体A,当需要访问物理存储实体B时,需要通过物理存储实体B对应的端口port_B才能访问物理存储实体B。两个物理存储实体在同一时间可以通过各自对应的端口被同时访问,例如一个主设备在通过port_A访问物理存储实体A的同时,另一个主设备可以通过port_B访问物理存储实体B。
在本公开的一些具体实施方式中,源描述符读取模块获得的源描述符地址信息可以是源描述符的起始地址,源描述符读取模块还同时获得源描述符的长度信息,源描述符读取模块根据起始地址和长度信息,通过源描述符读取模块对应的读端口(比如port_read_A),从该读端口对应的物理存储实体(比如物理存储实体A)中读取源描述符。
在本公开的另一些具体实施方式中,源描述符读取模块获得的源描述符地址信息可以是源描述符的起始地址和结尾地址,源描述符读取模块根据起始地址和结尾地址,通过源描述符读取模块对应的端口(比如port_read_A),从该读端口对应的物理存储实体(比如物理存储实体A)中读取源描述符。
在本公开的一些具体实施方式中,源描述符读取模块在读取到源描述符后,可以直接将读取的源描述符发送给源数据读取模块。源数据读取模块接收到源描述符后,从源描述符中解析出所需信息,比如源数据地址信息,然后根据源数据地址信息,通过源数据读取模块对应的读端口(比如port_read_B),从该读端口对应的物理存储实体(比如物理存储实体B)中读取源数据。
在本公开的另一些具体实施方式中,源描述符中记录了源数据的起始地址和长度信息,源描述符读取模块在读取到源描述符后,可以先从读取的源描述符中解析出源数据的起始地址和长度信息,然后将源数据的起始地址和长度信息发送给源数据读取模块。源数据读取模块接收到起始地址和长度信息后,根据起始地址和长度信息,通过源数据读取模块对应的读端口(比如port_read_B),从该读端口对应的物理存储实体(比如物理存储实体B)中读取源数据。
在本公开的另一些具体实施方式中,源描述符中记录了源数据的起始地址和结束地址,源描述符读取模块在读取到源描述符后,可以先从读取的源描述符中解析出源数据的起始地址和结束地址,然后将源数据的起始地址和结束地址发送给源数据读取模块。源数据读取模块接收到起始地址和结束地址后,根据起始地址和结束地址,通过源数据读取模块对应的读端口(比如port_read_B),从该端口对应的物理存储实体(比如物理存储实体B)中读取源数据。
本公开中,通过设置源描述符读取模块和源数据读取模块,两个模块分别对应不同的读端口,也分别对应不同的物理存储实体,并且将源描述符和相应源数据分别存储至两个不同的物理存储实体,源描述符读取模块在通过其对应的读端口从相应物理存储实体(比如物理存储实体A)读取源描述符的同时,源数据读取模块可以通过其对应的读端口从相应物理存储实体(比如物理存储实体B)读取上一个源描述符对应的源数据。或者换言之,源数据读取模块在通过其对应的读端口从相应物理存储实体(比如物理存储实体B)读取源数据的同时,源描述符读取模块可以通过其对应的读端口从相应物理存储实体(比如物理存储实体A)读取下一个源描述符。简言之,本公开提供的数据搬运装置在搬运每个源数据时,可以同时读取当前源描述符和上一个源描述符对应的源数据(或者换言之,可以同时读取当前源描述符对应的源数据和下一个源描述符),从而能有效提升数据搬运效率。
在本公开的一些具体实施方式中,源描述符读取模块和源数据读取模块的数量均是N个,N是大于等于2的整数;每个源描述符读取模块和每个源数据读取模块作为一组,每一组中的源描述符读取模块和源数据读取模块对应同一个读端口;每个源描述符和该源描述符对应的源数据分别由不同组的源描述符读取模块和源数据读取模块读取。
为便于理解,请参考图2,图2是本公开另一实施例提供的数据搬运装置的结构示意图。如图2所示,该数据搬运装置包括第一源描述符读取模块、第二源描述符读取模块、第一源数据读取模块及第二源数据读取模块。其中,第一源描述符读取模块和第一源数据读取模块作为一组,均对应读端口port_read_A。第二源描述符读取模块和第二源数据读取模块作为一组,均对应读端口port_read_B。
对于一个链表涉及的多个源描述符,可以均由第一源描述符读取模块通过port_read_A从相应物理存储实体A读取,并且由第二源数据读取模块通过port_read_B从相应物理存储实体B读取每个源描述符对应的源数据。或者,对于一个链表涉及的多个源描述符,可以均由第二源描述符读取模块通过port_read_B从相应物理存储实体B读取,并且由第一源数据读取模块通过port_read_A从相应物理存储实体A读取每个源描述符对应的源数据。或者,对于一个链表涉及的多个源描述符,其中一部分源描述符由第一源描述符读取模块通过port_read_A从相应物理存储实体A读取,并且由第二源数据读取模块通过port_read_B从相应物理存储实体B读取这部分源描述符对应的源数据;其中另一部分源描述符由第二源描述符读取模块通过port_read_B从相应物理存储实体B读取,并且由第一源数据读取模块通过port_read_A从相应物理存储实体A读取这部分源描述符对应的源数据。
如图2所示,在本公开的一些具体实施方式中,该装置还包括第一命令解析模块。第一命令解析模块被配置为:对数据搬运命令进行解析,根据数据搬运命令对应的源描述符所在的物理存储实体,将解析出的源描述符地址信息发送给相应的源描述符读取模块。
本公开中,第一命令解析模块主要发挥调度作用,第一命令解析模块将解析出的源描述符地址信息发送给相应的源描述符读取模块,相当于是将源描述符读取任务调度给相应的源描述符读取模块。
本公开中,物理存储实体与读端口之间具有对应关系,而读端口与源描述符读取模块之间也具有对应关系,因此物理存储实体与源描述符读取模块之间也存在对应关系。第一命令解析模块可以根据数据搬运命令对应的源描述符所在的物理存储实体,确定出该物理存储实体对应的源描述符读取模块,从而将解析出的源描述符地址信息发送给该源描述符读取模块。
本公开中,每个数据搬运命令分别对应一个源数据的读取,一个链表涉及多个待搬运的源数据,因此会有多个数据搬运命令。在一些具体实施方式中,每个数据搬运命令可以是DMA(或者其他模块或装置)对链表进行解析后针对每个待搬运的源数据所生成的。
在本公开的一些具体实施方式中,每个数据搬运命令的命令结构体中包括物理存储实体标识,该物理存储实体标识所对应的物理存储实体就是存储了相应源描述符的物理存储实体。第一命令解析模块在解析出源描述符地址信息后,根据命令结构体中包括的物理存储实体标识,将源描述符地址信息发送给对应的源描述符读取模块。
在本公开的一些具体实施方式中,第一命令解析模块还被配置为:将解析出的目标模块信息发送给相应的源描述符读取模块,目标模块信息是存储有源数据的物理存储实体所对应的源数据读取模块的标识。
每个源描述符读取模块在将源描述符或源数据地址信息发送给源数据读取模块时,具体是根据第一命令解析模块发送的目标模块信息,将源描述符或源数据地址信息发送给相应的源数据读取模块。
具体实现时,数据搬运命令的命令结构体中至少包括:源描述符地址信息、物理存储实体标识、目标模块信息。第一命令解析模块从数据搬运命令中解析出信息后,根据解析出的物理存储实体标识,将解析出的源描述符地址信息和目标模块信息发送给相应的源描述符读取模块。源描述符读取模块在接收到源描述符地址信息和目标模块信息后,首先根据源描述符地址信息,通过自身对应的读端口从相应物理存储实体读取源描述符,然后根据目标模块信息,将读取的源描述符或源描述符中的源数据地址信息发送给相应的源数据读取模块。
在本公开的一些具体实施方式中,数据搬运命令的命令结构体中至少包括:源描述符地址信息、物理存储实体标识。源描述符中至少记录了目标模块信息,目标模块信息是存储有源数据的物理存储实体所对应的源数据读取模块的标识。第一命令解析模块从数据搬运命令中解析出信息后,根据解析出的物理存储实体标识,将解析出的源描述符地址信息发送给相应的源描述符读取模块。源描述符读取模块在接收到源描述符地址信息后,首先根据源描述符地址信息,通过自身对应的读端口从相应物理存储实体读取源描述符,然后根据读取的源描述符中的目标模块信息,将读取的源描述符或源描述符中的源数据地址信息发送给相应的源数据读取模块。
在本公开的一些具体实施方式中,每个源数据读取模块各自对应一个命令队列和一个描述符队列,每个源数据读取模块的命令队列用于存储第一命令解析模块向该源数据读取模块发送的读数据命令,每个源数据读取模块的描述符队列用于存储源描述符读取模块向该源数据读取模块发送的描述符或源数据地址信息。
每个源数据读取模块还被配置为:从命令队列读取读数据命令,并根据读取的读数据命令,判断在执行该读数据命令时是否需要从描述符队列读取描述符或源数据地址信息。
具体实现时,第一命令解析模块向源数据读取模块发送的读数据命令存在两种,其中一种读数据命令在处理时需要依赖源描述符,根据源描述符从物理存储实体中读取源数据。这种读数据命令是与链表式传输机制相关的命令,第一命令解析模块在接收到数据搬运命令(如前所述,每个数据搬运命令对应链表涉及的一个待搬运的源数据)后,对数据搬运命令进行解析,根据解析出的目标模块信息,向相应的源数据读取模块发送读数据命令,该读数据命令中携带有第一预设标识,第一预设标识用于表示该读数据命令需要依赖源描述符;或者该读数据命令中不携带任何标识,用于表示该读数据命令需要依赖源描述符。
另一种读数据命令在处理时不需要依赖源描述符,而可以直接从物理存储实体中读取源数据,该读数据命令携带有第二预设标识,第二预设标识用于表示该读数据命令不依赖源描述符;或者该读数据命令中不携带任何标识,用于表示该读数据命令不依赖源描述符。
源数据读取模块从命令队列读取出读数据命令后,根据该读数据命令携带的预设标识,或者根据该读数据命令是否携带预设标识,判断出在处理该读数据命令时是否需要依赖源描述符。如果需要依赖源描述符,则在执行该读数据命令时需要从描述符队列读取描述符或源数据地址信息。
在本公开的一些具体实施方式中,数据搬运装置还包括N个目的描述符读取模块和N个写数据模块,每个目的描述符读取模块和一个源描述符读取模块对应同一个读端口,每个写数据模块分别对应不同的写端口,每个写数据模块与每个源数据读取模块一一对应。
每个源数据读取模块在将读取的源数据发送给写数据模块时,具体是将读取的源数据发送给对应的写数据模块。
每个目的描述符读取模块被配置为:在获得目的描述符地址信息后,根据目的描述符地址信息,通过目的描述符读取模块对应的读端口,从该读端口对应的物理存储实体中读取目的描述符,并将读取的目的描述符或目的描述符中的地址信息发送给对应的写数据模块。
每个写数据模块被配置为:根据目的描述符读取模块发送的目的描述符或地址信息,将源数据读取模块发送的源数据写入相应地址空间。
本公开中,由于源数据读取模块和写数据模块一一对应,源数据读取模块将读取的源数据发送给自身对应的写数据模块,因此不同的源数据读取模块之间不会发生抢占同一写数据模块的情况。此外,又由于每个写数据模块分别对应不同的写端口,因此不同的写数据模块之间也不会发生抢占同一写端口的情况。所以,上述具体实施方式中的数据搬运装置可进一步提升数据搬运效率。
在本公开的一些具体实施方式中,数据搬运装置还包括第二命令解析模块;第二命令解析模块被配置为:对数据搬运命令进行解析,根据数据搬运命令对应的源描述符和目的描述符各自所在的物理存储实体,将解析出的源描述符地址信息和目的描述符地址信息分别发送给相应的源描述符读取模块和目的描述符读取模块。
在本公开的一些具体实施方式中,一个数据搬运命令对应的源描述符和目的描述符仅能存储在同一个物理存储实体中。在这些具体实施方式中,每个数据搬运命令的命令结构体中包括物理存储实体标识,该物理存储实体标识所对应的物理存储实体就是存储了相应源描述符和目的描述符的物理存储实体。第二命令解析模块在解析出源描述符地址信息和目的描述符地址信息后,根据命令结构体中包括的物理存储实体标识,将源描述符地址信息和目的描述符地址信息分别发送给对应的源描述符读取模块和目的描述符读取模块,该源描述符读取模块和目的描述符读取模块位于同一组中。
在本公开的另一些具体实施方式中,一个数据搬运命令对应的源描述符和目的描述符可以存储在不同的物理存储实体中。在这些具体实施方式中,每个数据搬运命令的命令结构体中包括第一物理存储实体标识和第二物理存储实体标识,第一物理存储实体标识所对应的物理存储实体就是存储了相应源描述符的物理存储实体,第二物理存储实体标识所对应的物理存储实体就是存储了相应目的描述符的物理存储实体。第二命令解析模块在解析出源描述符地址信息和目的描述符地址信息后,根据命令结构体中包括的第一物理存储实体标识,将源描述符地址信息发送给对应的源描述符读取模块,并根据命令结构体中包括的第二物理存储实体标识,将目的描述符地址信息发送给对应的目的描述符读取模块。
为便于理解本公开,请参考图3,图3是本公开另一实施例提供的数据搬运装置的结构示意图。如图3所示,该数据搬运装置包括第二命令解析模块、第一源描述符读取模块、第二源描述符读取模块、第一目的描述符读取模块、第二目的描述符读取模块、第一源数据读取模块、第二源数据读取模块、第一写数据模块及第二写数据模块。其中,第一源描述符读取模块、第一目的描述符读取模块及第一源数据读取模块作为一组,共用一个读端口port_read_A,第一源数据读取模块对应第一写数据模块,第一写数据模块对应写端口port_write_A。第二源描述符读取模块、第二目的描述符读取模块及第二源数据读取模块作为另一组,共用一个读端口port_read_B,第二源数据读取模块对应第二写数据模块,第二写数据模块对应写端口port_write_B。
如图3所示,数据搬运的过程如下:
第二命令解析模块从其命令队列中读取出一个数据搬运命令后,对该数据搬运命令进行解析,第二命令解析模块根据解析出的信息,分别向第二源描述符读取模块、第二目的描述符读取模块、第一源数据读取模块及第一写数据模块发送相应信息,如图3中的步骤1-1所示。其中,第二命令解析模块发送给第二源描述符读取模块的信息包括源描述符地址信息,还可以包括目标模块信息x1(比如目标模块信息x1可以是第一源数据读取模块的标识信息)。第二命令解析模块发送给第二目的描述符读取模块的信息包括目的描述符地址信息,还可以包括目标模块信息x2(比如目标模块信息x2可以是第一写数据模块的标识信息)。第二命令解析模块发送给第一源数据读取模块的信息包括读数据命令。第二命令解析模块发送给第一写数据模块的信息包括写数据命令。
第二源描述符读取模块从其消息队列中获取到上述源描述符地址信息后,根据该源描述符地址信息,通过读端口port_read_B中的读复用器read_mux访问物理存储实体B,然后通过读解复用器read_demux接收到从物理存储实体B读取的源描述符,如图3中的步骤1-2。
第二源描述符读取模块读回源描述符后,通过组与组之间的描述符传输通道,将读回的源描述符发送给第一源数据读取模块,如图3中的步骤1-3。
第一源数据读取模块从其命令队列中获取到上述读数据命令,并从其描述符队列中获取到上述源描述符,第一源数据读取模块根据该源描述符,通过读端口port_read_A中的读复用器read_mux访问物理存储实体A,然后通过读解复用器read_demux接收到从物理存储实体A读取的源数据,如图3中的步骤1-4。
第一源数据读取模块读回源数据后,将读回的源数据发送给自身对应的第一写数据模块,如图3中的步骤1-5。
第二目的描述符读取模块从其消息队列中获取到上述目的描述符地址信息后,根据该目的描述符地址信息,通过读端口port_read_B中的读复用器read_mux访问物理存储实体B,然后通过读解复用器read_demux接收到从物理存储实体B读取的目的描述符,如图3中的步骤1-6。需要说明的是,步骤1-6可以先于步骤1-2执行,或者步骤1-6也可以与步骤1-3、1-4或1-5同时执行。
第二目的描述符读取模块读回目的描述符后,通过描述符传输通道,将读回的目的描述符发送给第一写数据模块,如图3中的步骤1-7。
第一写数据模块从其命令队列中获取到上述写数据命令,从其源数据队列中获取到上述源数据,并从其描述符队列中获取到上述目的描述符,第一写数据模块根据该目的描述符,通过写端口port_write_A中的写复用器write_mux将源数据写入相应的地址空间,并通过写解复用器write_demux接收到写响应,如图3中的步骤1-8。其中,写入源数据的地址空间可能是物理存储实体A的地址空间,也可能是物理存储实体B的地址空间,还可能是其他物理存储实体的地址空间,本公开对此不做限定。
同样地,第二命令解析模块从其命令队列中读取出下一个数据搬运命令后,对该数据搬运命令进行解析,第二命令解析模块根据解析出的信息,分别向第一源描述符读取模块、第一目的描述符读取模块及第二源数据读取模块发送相应信息,如图3中的步骤2-1所示。其中,第二命令解析模块发送给第一源描述符读取模块的信息包括源描述符地址信息,还可以包括目标模块信息x1(比如目标模块信息x1可以是第二源数据读取模块的标识信息)。第二命令解析模块发送给第一目的描述符读取模块的信息包括目的描述符地址信息,还可以包括目标模块信息x2(比如目标模块信息x2可以是第二写数据模块的标识信息)。第二命令解析模块发送给第二源数据读取模块的信息包括读数据命令。第二命令解析模块发送给第二写数据模块的信息包括写数据命令。
第一源描述符读取模块从其消息队列中获取到上述源描述符地址信息后,根据该源描述符地址信息,通过读端口port_read_A中的读复用器read_mux访问物理存储实体A,然后通过读解复用器read_demux接收到从物理存储实体A读取的源描述符,如图3中的步骤2-2。
第一源描述符读取模块读回源描述符后,通过组与组之间的描述符传输通道,将读回的源描述符发送给第二源数据读取模块,如图3中的步骤2-3。
第二源数据读取模块从其命令队列中获取到上述读数据命令,并从其描述符队列中获取到上述源描述符,第二源数据读取模块根据该源描述符,通过读端口port_read_B中的读复用器read_mux访问物理存储实体B,然后通过读解复用器read_demux接收到从物理存储实体B读取的源数据,如图3中的步骤2-4。
第二源数据读取模块读回源数据后,将读回的源数据发送给自身对应的第二写数据模块,如图3中的步骤2-5。
第一目的描述符读取模块从其消息队列中获取到上述目的描述符地址信息后,根据该目的描述符地址信息,通过读端口port_read_A中的读复用器read_mux访问物理存储实体A,然后通过读解复用器read_demux接收到从物理存储实体A读取的目的描述符,如图3中的步骤2-6。需要说明的是,步骤2-6可以先于步骤2-2执行,或者步骤2-6也可以与步骤2-3、2-4或2-5同时执行。
第一目的描述符读取模块读回目的描述符后,通过描述符传输通道,将读回的目的描述符发送给第二写数据模块,如图3中的步骤2-7。
第二写数据模块从其命令队列中获取到上述写数据命令,从其源数据队列中获取到上述源数据,并从其描述符队列中获取到上述目的描述符,第二写数据模块根据该目的描述符,通过写端口port_write_B中的写复用器write_mux将源数据写入相应的地址空间,并通过写解复用器write_demux接收到写响应,如图3中的步骤2-8。其中,写入源数据的地址空间可能是物理存储实体A的地址空间,也可能是物理存储实体B的地址空间,还可能是其他物理存储实体的地址空间,本公开对此不做限定。
在本公开的一些具体实施方式中,两个不同的物理存储实体分别是CPU对应的存储器和GPU对应的存储器。其中,CPU对应的存储器是指CPU能直接访问的存储器,例如CPU能直接访问的RAM内存或DDR内存。GPU对应的存储器是指GPU能直接访问的存储器,例如GPU能直接访问的GDDR显存。
在本公开的一些具体实施方式中,数据搬运装置还包括描述符搬运模块,描述符搬运模块被配置为:将CPU生成的描述符由CPU对应的存储器搬运至GPU对应的存储器。本公开中,待搬运的源数据可以是用于训练神经网络的样本数据,样本数据需要从CPU对应的存储器搬运至GPU对应的存储器,从而通过GPU对神经网络进行训练。或者,待搬运的源数据也可以是用于图像渲染的模型数据或纹理数据,模型数据或纹理数据需要从CPU对应的存储器搬运至GPU对应的存储器,从而通过GPU进行图像渲染。在搬运源数据之前,需要首先通过描述符搬运模块将多个源数据对应的多个描述符从CPU对应的存储器搬运至GPU对应的存储器。其中,每个源数据对应的描述符包括源描述符和目的描述符。
本公开实施例还提供一种DMA装置,该DMA装置包括上述任一实施例中所述的数据搬运装置。
本公开实施例还提供一种电子设备,该电子设备包括上述DMA装置。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、VR设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机、工作站、服务器等。
基于同一发明构思,本公开实施例还提供一种数据搬运方法,该数据搬运方法应用于CPU。参考图4,图4是本公开一实施例提供的数据搬运方法的流程示意图。如图4所示,该数据搬运方法包括以下步骤:
步骤S410:将源数据的描述符发送给GPU,通过GPU对应的物理存储实体存储描述符。
在本公开的一些具体实施方式中,源数据和源数据的描述符原本均存储在CPU对应的物理存储实体中,例如存储在CPU能直接访问的RAM内存或DDR内存中。在步骤S410中,需要将源数据的源描述符发送给GPU,通过GPU对应的物理存储实体存储源描述符,例如通过GPU能直接访问的GDDR显存存储源描述符。
步骤S420:向数据搬运装置发送数据搬运命令,使数据搬运装置在执行数据搬运命令时,通过一个读端口从GPU对应的物理存储实体中读取描述符,并根据读取的描述符,通过另一个读端口从CPU对应的物理存储实体读取源数据,以及将读取的源数据搬运至GPU对应的物理存储实体。
本公开中,通过将源数据和相应的描述符分别存储在CPU对应的物理存储实体和GPU对应的物理存储实体,使得数据搬运装置在通过一个读端口从GPU对应的物理存储实体中读取描述符的同时,还可以通过另一个读端口从CPU对应的物理存储实体读取上一个源描述符对应的源数据,从而能有效提升数据从CPU搬运至GPU的效率。
在本公开的一些具体实施方式中,在将源数据的描述符发送给GPU之前,该数据搬运方法还包括:生成源数据的描述符。具体实现时,在将源数据的描述符发送给GPU之前,首先根据源数据在CPU对应的物理存储实体中的地址信息,生成源描述符,并根据源数据在GPU对应的物理存储实体中的目的地址,生成目的描述符,然后至少将源描述符发送给GPU,通过GPU对应的物理存储实体存储源描述符。此外,GPU还将源描述符在GPU对应的物理存储实体中的地址信息返回给CPU,使得CPU可以生成携带该地址信息的数据搬运命令。
尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改。
显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。
Claims (12)
1.一种数据搬运装置,所述装置包括源描述符读取模块和源数据读取模块;
所述源描述符读取模块被配置为:在获得源描述符地址信息后,根据所述源描述符地址信息,通过所述源描述符读取模块对应的读端口,从该读端口对应的物理存储实体中读取源描述符,并将读取的源描述符或源描述符中的源数据地址信息发送给所述源数据读取模块;
所述源数据读取模块被配置为:根据所述源描述符读取模块发送的源描述符或源数据地址信息,通过所述源数据读取模块对应的读端口,从该读端口对应的物理存储实体中读取源数据,并将读取的源数据发送给写数据模块,以通过所述写数据模块将该源数据写入相应地址空间;
其中,所述源描述符读取模块对应的读端口和所述源数据读取模块对应的读端口是两个不同的读端口,所述两个读端口各自对应的物理存储实体是两个不同的物理存储实体,所述两个不同的物理存储实体是指需要通过不同的端口才能访问的存储器,所述两个不同的物理存储实体分别是CPU对应的存储器和GPU对应的存储器,所述源描述符和所述源描述符对应的所述源数据分别存储在所述两个不同的物理存储实体中。
2.根据权利要求1所述的装置,所述源描述符读取模块和所述源数据读取模块的数量均是N个,所述N是大于等于2的整数;每个源描述符读取模块和每个源数据读取模块作为一组,每一组中的源描述符读取模块和源数据读取模块对应同一个读端口;每个源描述符和该源描述符对应的源数据分别由不同组的源描述符读取模块和源数据读取模块读取。
3.根据权利要求2所述的装置,所述装置还包括第一命令解析模块;
所述第一命令解析模块被配置为:对数据搬运命令进行解析,根据所述数据搬运命令对应的源描述符所在的物理存储实体,将解析出的源描述符地址信息发送给相应的源描述符读取模块。
4.根据权利要求3所述的装置,所述第一命令解析模块还被配置为:将解析出的目标模块信息发送给相应的源描述符读取模块,所述目标模块信息是存储有源数据的物理存储实体所对应的源数据读取模块的标识;
每个源描述符读取模块在将源描述符或源数据地址信息发送给源数据读取模块时,具体是根据所述第一命令解析模块发送的目标模块信息,将源描述符或源数据地址信息发送给相应的源数据读取模块。
5.根据权利要求3所述的装置,每个源数据读取模块各自对应一个命令队列和一个描述符队列,每个源数据读取模块的命令队列用于存储所述第一命令解析模块向该源数据读取模块发送的读数据命令,每个源数据读取模块的描述符队列用于存储源描述符读取模块向该源数据读取模块发送的描述符或源数据地址信息;
每个源数据读取模块还被配置为:从命令队列读取读数据命令,并根据读取的读数据命令,判断在执行该读数据命令时是否需要从描述符队列读取描述符或源数据地址信息。
6.根据权利要求2所述的装置,所述装置还包括N个目的描述符读取模块和N个写数据模块,每个目的描述符读取模块和一个源描述符读取模块对应同一个读端口,每个写数据模块分别对应不同的写端口,每个写数据模块与每个源数据读取模块一一对应;
每个源数据读取模块在将读取的源数据发送给写数据模块时,具体是将读取的源数据发送给对应的写数据模块;
每个目的描述符读取模块被配置为:在获得目的描述符地址信息后,根据所述目的描述符地址信息,通过所述目的描述符读取模块对应的读端口,从该读端口对应的物理存储实体中读取目的描述符,并将读取的目的描述符或目的描述符中的地址信息发送给对应的写数据模块;
每个写数据模块被配置为:根据目的描述符读取模块发送的目的描述符或地址信息,将源数据读取模块发送的源数据写入相应地址空间。
7.根据权利要求6所述的装置,所述装置还包括第二命令解析模块;
所述第二命令解析模块被配置为:对数据搬运命令进行解析,根据所述数据搬运命令对应的源描述符和目的描述符各自所在的物理存储实体,将解析出的源描述符地址信息和目的描述符地址信息分别发送给相应的源描述符读取模块和目的描述符读取模块。
8.根据权利要求1所述的装置,所述装置还包括描述符搬运模块,所述描述符搬运模块被配置为:将CPU生成的描述符由CPU对应的存储器搬运至GPU对应的存储器。
9.一种DMA装置,所述DMA装置包括权利要求1至8任一项中所述的数据搬运装置。
10.一种电子设备,所述电子设备包括权利要求9所述的DMA装置。
11.一种数据搬运方法,所述方法应用于CPU,所述方法包括:
将源数据的描述符发送给GPU,通过所述GPU对应的物理存储实体存储所述描述符;
向数据搬运装置发送数据搬运命令,使所述数据搬运装置在执行所述数据搬运命令时,通过一个读端口从所述GPU对应的物理存储实体中读取描述符,并根据读取的描述符,通过另一个读端口从所述CPU对应的物理存储实体读取所述源数据,以及将读取的源数据搬运至所述GPU对应的物理存储实体。
12.根据权利要求11所述的数据搬运方法,在将源数据的描述符发送给GPU之前,所述方法还包括:生成所述源数据的描述符。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310055734.9A CN115905061B (zh) | 2023-01-17 | 2023-01-17 | 数据搬运装置、dma装置、电子设备及数据搬运方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310055734.9A CN115905061B (zh) | 2023-01-17 | 2023-01-17 | 数据搬运装置、dma装置、电子设备及数据搬运方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115905061A CN115905061A (zh) | 2023-04-04 |
CN115905061B true CN115905061B (zh) | 2023-05-12 |
Family
ID=85742716
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310055734.9A Active CN115905061B (zh) | 2023-01-17 | 2023-01-17 | 数据搬运装置、dma装置、电子设备及数据搬运方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115905061B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116166605B (zh) * | 2023-04-26 | 2023-07-25 | 太初(无锡)电子科技有限公司 | 数据混合传输方法、装置、dma控制器、介质及系统 |
CN117421267A (zh) * | 2023-10-09 | 2024-01-19 | 中科驭数(北京)科技有限公司 | 数据通道防死锁方法、装置、设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111782154A (zh) * | 2020-07-13 | 2020-10-16 | 北京四季豆信息技术有限公司 | 数据搬移方法、装置及系统 |
CN114691562A (zh) * | 2020-12-29 | 2022-07-01 | 中科寒武纪科技股份有限公司 | 用于dma操作的方法、装置、设备、集成电路芯片和板卡 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100593161C (zh) * | 2008-06-11 | 2010-03-03 | 南京磐能电力科技股份有限公司 | 一种点到多点数据分配dma控制器实现方法 |
CN102841871B (zh) * | 2012-08-10 | 2015-06-17 | 无锡众志和达数据计算股份有限公司 | 基于高速串行总线的DMA结构的pipeline读写方法 |
CN102841870B (zh) * | 2012-08-10 | 2015-04-15 | 无锡众志和达数据计算股份有限公司 | 基于高速串行总线的通用dma结构及预读方法 |
US9053093B1 (en) * | 2013-08-23 | 2015-06-09 | Altera Corporation | Modular direct memory access system |
-
2023
- 2023-01-17 CN CN202310055734.9A patent/CN115905061B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111782154A (zh) * | 2020-07-13 | 2020-10-16 | 北京四季豆信息技术有限公司 | 数据搬移方法、装置及系统 |
CN114691562A (zh) * | 2020-12-29 | 2022-07-01 | 中科寒武纪科技股份有限公司 | 用于dma操作的方法、装置、设备、集成电路芯片和板卡 |
Non-Patent Citations (1)
Title |
---|
集成CPU-GPU架构上的列存储连接优化技术研究;丁祥武 等;计算机科学;第43卷(第11期);265-271 * |
Also Published As
Publication number | Publication date |
---|---|
CN115905061A (zh) | 2023-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115905061B (zh) | 数据搬运装置、dma装置、电子设备及数据搬运方法 | |
US10466966B2 (en) | Systems and methods to enable identification of different data sets | |
US10572414B2 (en) | Methods and systems for devices with self-selecting bus decoder | |
US8260987B2 (en) | Methods and systems to accomplish variable width data input | |
CN114356223B (zh) | 存储器的访问方法及装置、芯片、电子设备 | |
WO2010065292A1 (en) | Devices, systems, and methods to synchronize simultaneous dma parallel processing of a single data stream by multiple devices | |
EP2513840A1 (en) | Methods and apparatuses for reducing power consumption in a pattern recognition processor | |
CN114461541A (zh) | 芯片数据读取方法、写入方法、装置、设备以及存储介质 | |
CN106792070B (zh) | 一种音视频数据dma传输方法及装置 | |
CN117707991B (zh) | 一种数据读写方法、系统、设备及存储介质 | |
CN111949371A (zh) | 一种命令信息传输方法、系统、装置及可读存储介质 | |
US7822040B2 (en) | Method for increasing network transmission efficiency by increasing a data updating rate of a memory | |
CN115904259B (zh) | 非易失性存储器标准NVMe指令的处理方法及相关装置 | |
US20110283068A1 (en) | Memory access apparatus and method | |
CN115587076B (zh) | 数据解压系统、图形处理系统、组件、设备及解压方法 | |
CN115174673B (zh) | 具备低延迟处理器的数据处理装置、数据处理方法及设备 | |
US20230144693A1 (en) | Processing system that increases the memory capacity of a gpgpu | |
US6898684B2 (en) | Control chip with multiple-layer defer queue | |
CN110868344B (zh) | 一种仿真mvb的方法、系统、装置和计算机可读介质 | |
US9990307B1 (en) | Split packet transmission DMA engine | |
KR20210075007A (ko) | 인공지능 프로세서를 위한 캐시 | |
CN114296640B (zh) | 用于加速计算的数据驱动方法、装置、设备和存储介质 | |
CN117854553B (zh) | 一种数据整形电路、方法和芯片 | |
CN117675720B (zh) | 消息报文传输方法、装置、电子设备和存储介质 | |
WO2024017283A1 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240201 Address after: 401135 No. 618 Liangjiang Avenue, Longxing Town, Yubei District, Chongqing Patentee after: Xiangdixian Computing Technology (Chongqing) Co.,Ltd. Country or region after: China Address before: Room 901, 901, floor 9 (09), building 1, yard 5, Anding Road, Chaoyang District, Beijing 100029 Patentee before: Beijing xiangdixian Computing Technology Co.,Ltd. Country or region before: China |
|
TR01 | Transfer of patent right |