CN110399322B - 一种数据传输方法及乒乓dma架构 - Google Patents
一种数据传输方法及乒乓dma架构 Download PDFInfo
- Publication number
- CN110399322B CN110399322B CN201910574765.9A CN201910574765A CN110399322B CN 110399322 B CN110399322 B CN 110399322B CN 201910574765 A CN201910574765 A CN 201910574765A CN 110399322 B CN110399322 B CN 110399322B
- Authority
- CN
- China
- Prior art keywords
- state
- dma
- register
- module
- data
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 51
- 238000000034 method Methods 0.000 title claims abstract description 44
- 230000015654 memory Effects 0.000 claims description 17
- 230000008569 process Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Bus Control (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种数据传输方法及乒乓DMA架构,乒乓DMA架构包括第一DMA模块和第二DMA模块,通过获取初始化后寄存器的当前状态,判断寄存器的当前状态对应的状态类型,基于寄存器确定的状态类型执行状态类型对应的操作,其中,状态类型包括初始化状态、使用第一DMA模块状态和使用第二DMA模块状态,使用第一DMA模块状态指所述第一DMA模块执行上一批次数据传输时的状态,使用第二DMA模块状态是所述第二DMA模块执行上一批次数据传输时的状态。通过上述方法,采用两个DMA模块对数据进行配置,当第一DMA模块处于忙碌时,第二DMA模块对数据也可以对数据进行配置,并根据寄存器不同的状态类型,执行不同的状态类型对应的数据操作,实现提高数据传输效率的目的。
Description
技术领域
本发明涉及数据传输技术领域,更具体地说,涉及一种数据传输方法及乒乓DMA架构。
背景技术
主机HOST和加速板卡FPGA之间的数据传输,是通过DMA架构的形式进行传输。DMA(Direct Memory Access,直接内存存取),将传输数据从一个地址空间传输至另外一个地址空间。
现有技术中,DMA架构中,一组内存直接访问描述符控制模块DMA descriptorcontroller对应一个高速串行计算机拓展总线标准接口pcie,主机HOST通过寄存器读写的方式配置内存之间访问描述符控制模块DMA descriptor controller,传输数据模块transfor data根据传输数据信息,通过高速串行计算机拓展总线标准接口pcie从主机HOST端对传输数据信息进行读取或者写入,执行数据传输操作。
当出现分几次进行数据块的读写操作时,若内存直接访问描述符控制模块DMAdescriptor controller处于忙碌状态,需要等待该内存直接访问描述符控制模块DMAdescriptor controller空闲时,主机HOST才能进行配置内存直接访问描述符控制模块DMAdescriptor controller的操作,从而导致执行效率低下。
发明内容
有鉴于此,本申请提供了一种数据传输方法及乒乓DMA架构,实现
为了实现上述目的,现提出的方案如下:
本发明第一方面公开了一种数据传输方法,其特征在于,应用于乒乓DMA架构,所述乒乓DMA架构包括第一DMA模块和第二DMA模块,所述方法包括:
获取初始化后寄存器的当前状态;
判断所述寄存器的当前状态对应的状态类型,基于所述寄存器确定的状态类型执行所述状态类型对应的操作,其中,所述状态类型包括初始化状态、使用第一DMA模块状态和使用第二DMA模块状态,所述使用第一DMA模块状态是所述第一DMA模块执行上一批次数据传输时的状态,所述使用第二DMA模块状态是所述第二DMA模块执行上一批次数据传输时的状态。
优选的,若判断所述寄存器的当前状态对应的状态类型为所述初始化状态,所述基于所述寄存器确定的状态类型执行所述状态类型对应的操作,包括:
若所述寄存器的当前状态对应的状态类型为所述初始化状态,使所述第一DMA模块配置DMA数据;
将配置后的所述DMA数据进行传输,并将所述寄存器的当前状态对应的状态类型设置为所述使用第一DMA模块状态,其中,所述DMA数据包括DMA读写标志、DMA传输数据长度、DMA源和目的地址。
优选的,若判断所述寄存器的当前状态对应的状态类型为所述使用第一DMA模块状态,所述基于所述寄存器确定的状态类型执行所述状态类型对应的操作,包括:
若所述寄存器的当前状态对应的状态类型为所述使用第一DMA模块状态,使所述第二DMA模块配置所述DMA数据;
将配置后的所述DMA数据进行传输,并将所述寄存器的当前状态对应的状态类型设置为所述使用第二DMA模块状态。
优选的,若判断所述寄存器的当前状态对应的状态类型为所述使用第二DMA模块状态,所述基于所述寄存器确定的状态类型执行所述状态类型对应的操作,包括:
若所述寄存器的当前状态对应的状态类型为所述使用第二DMA模块状态,使所述第一DMA模块配置所述DMA数据;
将配置后的所述DMA数据进行传输,并将所述寄存器的当前状态对应的状态类型设置为所述使用第一DMA模块状态。
本发明第二方面公开了一种乒乓DMA架构,包括:
第一DMA模块,第二DMA模块、寄存器、处理器和数据传输模块;
所述处理器,用于获取初始化后寄存器的当前状态,判断所述寄存器的当前状态对应的状态类型,基于所述寄存器确定的状态类型执行所述状态类型对应的操作,其中,所述状态类型包括初始化状态、使用第一DMA模块状态和使用第二DMA模块状态,所述使用第一DMA模块状态是所述第一DMA模块执行上一批次数据传输时的状态,所述使用第二DMA模块状态是所述第二DMA模块执行上一批次数据传输时的状态。
优选的,包括:
所述第一DMA模块,用于当所述处理器判断所述寄存器的当前状态对应的状态类型为所述初始化状态时,配置DMA数据;
所述数据传输模块,用于将配置后的所述DMA数据进行传输;
所述处理器,用于将所述寄存器的当前状态对应的状态类型设置为所述使用第一DMA模块状态,其中,所述DMA数据包括DMA读写标志、DMA传输数据长度、DMA源和目的地址。
优选的,包括:
所述第二DMA模块,用于当所述处理器判断所述寄存器的当前状态对应的状态类型为所述使用第一DMA模块状态时,配置所述DMA数据;
所述数据传输模块,用于将配置后的所述DMA数据进行传输;
所述处理器,用于将所述寄存器的当前状态对应的状态类型设置为所述使用第二DMA模块状态。
优选的,包括:
所述第一DMA模块,用于当所述处理器判断所述寄存器的当前状态对应的状态类型为所述使用第二DMA模块状态时,配置所述DMA数据;
所述数据传输模块,用于将配置后的所述DMA数据进行传输;
所述处理器,用于将所述寄存器的当前状态对应的状态类型设置为所述使用第一DMA模块状态。
优选的,所述第一DMA模块和所述第二DMA模块包括:
读描述符缓存存储和写描述符缓存存储。
优选的,所述数据传输模块,包括:
内存直接访问写控制单元和内存直接访问读控制单元。
经由上述技术方案可知,通过获取初始化后寄存器的当前状态,判断寄存器的当前状态对应的状态类型,基于寄存器确定的状态类型执行状态类型对应的操作,状态类型包括初始化状态、使用第一DMA模块状态和使用第二DMA模块状态,使用第一DMA模块状态指所述第一DMA模块执行上一批次数据传输时的状态,使用第二DMA模块状态是所述第二DMA模块执行上一批次数据传输时的状态。通过上述方法,采用两个DMA模块对数据进行配置,当第一DMA模块处于忙碌时,第二DMA模块对数据也可以对数据进行配置,并根据寄存器不同的状态类型,执行不同的状态类型对应的数据操作,实现提高数据的传输效率的目的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例公开的一种数据传输方法的流程示意图;
图2为本发明实施例公开的基于寄存器确定的状态类型为初始化状态,执行初始化状态对应的操作的流程示意图;
图3为本发明实施例公开的基于寄存器确定的状态类型为使用第一DMA模块状态,执行使用第一DMA模块状态对应的操作的流程示意图;
图4为本发明实施例公开的基于寄存器确定的状态类型为使用第二DMA模块状态,执行使用第二DMA模块状态对应的操作的流程示意图;
图5为本发明实施例公开的一种乒乓DMA架构的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
由背景技术可知,现有技术中,DMA架构中,一组内存直接访问描述符控制模块DMAdescriptor controller对应一个高速串行计算机拓展总线标准接口pcie,主机HOST通过寄存器读写的方式配置内存之间访问描述符控制模块DMA descriptor controller,传输数据模块transfordata根据传输数据信息,通过高速串行计算机拓展总线标准接口pcie从主机HOST端对传输数据信息进行读取或者写入,执行数据传输操作,当出现分几次进行数据块的读写操作时,若内存直接访问描述符控制模块DMA descriptor controller处于忙碌状态,需要等待该内存直接访问描述符控制模块DMA descriptor controller空闲时,主机HOST才能进行配置内存直接访问描述符控制模块DMA descriptor controller的操作,从而导致执行效率低下。
因此,本发明公开了一种数据传输方法及乒乓DMA架构,以实现根据寄存器不同的状态类型,执行不同的状态类型对应的数据操作,提高数据传输效率的目的。
如图1所示,为本发明实施例公开的一种数据传输方法的流程示意图,具体包括如下步骤:
步骤S101:获取初始化后寄存器的当前状态。
在执行步骤S101的过程中,初始化后的寄存器的数值为00。
需要说明的是,寄存器是高速存储部件,可以用来暂存指令、数据和地址等数据。
在本发明的一种应用场景中,判断是否需要传输一批次的数据,若是,则读取寄存器的数值,若否,则继续等待,直至需要传输一批次的数据时,执行读取该寄存器的数值的操作。
步骤S102:判断所述寄存器的当前状态对应的状态类型。
在执行步骤S102的过程中,通过判断寄存器的数值来确定该寄存器的当前状态,寄存器中不一样的数值对应不一样的状态类型。
需要说明的是,状态类型包括初始化状态、使用第一DMA模块状态和使用第二DMA模块状态。
使用第一DMA模块状态指所述第一DMA模块执行上一批次数据传输时的状态,使用第二DMA模块状态是所述第二DMA模块执行上一批次数据传输时的状态。
步骤S103:若所述寄存器的当前状态对应的状态类型为初始化状态,基于所述寄存器确定的所述初始化状态执行所述初始化状态对应的操作。
在执行步骤S103的过程中,当寄存器的数值为00时,则寄存器的当前状态对应的状态类型为初始化状态。
基于上述步骤S103中涉及到若所述寄存器的当前状态对应的状态类型为初始化状态,基于所述寄存器确定的所述初始化状态执行所述初始化状态对应的操作的过程,参考图2,示出了基于寄存器确定的状态类型为初始化状态,执行初始化状态对应的操作的流程示意图,具体包括如下步骤:
步骤S201:若所述寄存器的当前状态对应的状态类型为所述初始化状态,使所述第一DMA模块配置DMA数据。
在执行步骤S201的过程中,通过第一DMA模块配置DMA数据中的DMA读写标志、DMA传输数据长度、DMA源和目的地址等信息。
需要说明的是,DMA模块用于对内存直接访问的描述符控制模块实施控制。
内存直接访问(Direct Memory Access,DMA)是一种高速的数据传输操作,允许在外部设备和存储器中直接进行读写数据操作。
步骤S202:将配置后的所述DMA数据进行传输,并将所述寄存器的当前状态对应的状态类型设置为所述使用第一DMA模块状态。
在执行步骤S202的过程中,将寄存器的数值设置为01,该寄存器的当前状态对应的状态类型为使用第一DMA模块状态。
需要说明的是,当寄存器的数值为01时,使用第一DMA模块执行上一批次传输数据的操作。
通过步骤S201-步骤S202若所述寄存器的当前状态对应的状态类型为所述初始化状态,使所述第一DMA模块配置DMA数据,将配置后的所述DMA数据进行传输,并将所述寄存器的当前状态对应的状态类型设置为所述使用第一DMA模块状态。
步骤S104:若所述寄存器的当前状态对应的状态类型为使用第一DMA模块状态,基于所述寄存器确定的所述使用第一DMA模块状态执行所述使用第一DMA模块状态对应的操作。
基于上述步骤S104中涉及到若所述寄存器的当前状态对应的状态类型为使用第一DMA模块状态,基于所述寄存器确定的所述使用第一DMA模块状态执行所述使用第一DMA模块状态对应的操作的过程,参考图3,示出了基于寄存器确定的状态类型为使用第一DMA模块状态,执行使用第一DMA模块状态对应的操作的流程示意图,具体包括如下步骤:
步骤S301:若所述寄存器的当前状态对应的状态类型为所述使用第一DMA模块状态,使所述第二DMA模块配置所述DMA数据。
在执行步骤S301的过程中,通过第二DMA模块配置DMA数据中的DMA读写标志、DMA传输数据长度、DMA源和目的地址等信息。
步骤S302:将配置后的所述DMA数据进行传输,并将所述寄存器的当前状态对应的状态类型设置为所述使用第二DMA模块状态。
在执行步骤302的过程中,将寄存器的数值设置为02,该寄存器的当前状态对应的状态类型为使用第二DMA模块状态。
需要说明的是,当寄存器的数值为02时,使用第二DMA模块执行上一批次传输数据的操作。
通过步骤S301-步骤S302若所述寄存器的当前状态对应的状态类型为所述使用第一DMA模块状态,使所述第二DMA模块配置所述DMA数据,将配置后的所述DMA数据进行传输,并将所述寄存器的当前状态对应的状态类型设置为所述使用第二DMA模块状态。
步骤S105:若所述寄存器的当前状态对应的状态类型为使用第二DMA模块状态,基于所述寄存器确定的所述使用第二DMA模块状态执行所述使用第二DMA模块状态对应的操作。
基于上述步骤S105中涉及到若所述寄存器的当前状态对应的状态类型为使用第二DMA模块状态,基于所述寄存器确定的所述使用第二DMA模块状态执行所述使用第二DMA模块状态对应的操作的过程,参考图4,示出了基于寄存器确定的状态类型为使用第二DMA模块状态,执行使用第二DMA模块状态对应的操作的流程示意图,具体包括如下步骤:
步骤S401:若所述寄存器的当前状态对应的状态类型为所述使用第二DMA模块状态,使所述第一DMA模块配置所述DMA数据。
步骤S402:将配置后的所述DMA数据进行传输,并将所述寄存器的当前状态对应的状态类型设置为所述使用第一DMA模块状态。
在执行步骤S402的过程中,将寄存器的数值设置为01时,则改寄存器的当前状态对应的状态类型为使用第一DMA模块状态。
通过步骤S401-步骤S402若所述寄存器的当前状态对应的状态类型为所述使用第二DMA模块状态,使所述第一DMA模块配置所述DMA数据,将配置后的所述DMA数据进行传输,并将所述寄存器的当前状态对应的状态类型设置为所述使用第一DMA模块状态。
基于上述数据传输方法,这里举例进行说明:
场景实施例一:获取初始化后寄存器的当前状态,该寄存器的数值为00,则该寄存器的当前状态对应的状态类型为初始化状态,使第一DMA模块配置DMA数据中的DMA读写标志、DMA传输数据长度、DMA源和目的地址,将配置后的该DMA数据进行传输,并将寄存器的初始化状态设置为使用第一DMA模块状态,即把该寄存器的数值设置为01。
场景实施例二:获取初始化后寄存器的当前状态,该寄存器的数值为01,则该寄存器的当前状态对应的状态类型为使用第一DMA模块状态,使第二DMA模块配置DMA数据中的DMA读写标志、DMA传输数据长度、DMA源和目的地址,将配置后的该DMA数据进行传输,并将寄存器的初始化状态设置为使用第二DMA模块状态,即把该寄存器的数值设置为02。
场景实施例三:获取初始化后寄存器的当前状态,该寄存器的数值为02,则该寄存器的当前状态对应的状态类型为使用第二DMA模块状态,使第一DMA模块配置DMA数据中的DMA读写标志、DMA传输数据长度、DMA源和目的地址,将配置后的该DMA数据进行传输,并将寄存器的初始化状态设置为使用第一DMA模块状态,即把该寄存器的数值设置为01。
本发明实施例公开了一种数据传输方法,通过获取初始化后寄存器的当前状态,判断寄存器的当前状态对应的状态类型,基于寄存器确定的状态类型执行状态类型对应的操作,状态类型包括初始化状态、使用第一DMA模块状态和使用第二DMA模块状态,使用第一DMA模块状态指所述第一DMA模块执行上一批次数据传输时的状态,使用第二DMA模块状态是所述第二DMA模块执行上一批次数据传输时的状态。通过上述方法,采用两个DMA模块对数据进行配置,当第一DMA模块处于忙碌时,第二DMA模块对数据也可以对数据进行配置,并根据寄存器不同的状态类型,执行不同的状态类型对应的数据操作,实现提高数据传输效率的目的。
如图5所示,为本发明实施例公开的一种乒乓DMA架构的结构示意图,该结构示意图500主要包括:
第一DMA模块501,第二DMA模块502、寄存器503、寄存器504、处理器505和数据传输模块506。
所述第一DMA模块501,用于当所述处理器判断所述寄存器的当前状态对应的状态类型为所述初始化状态时,配置DMA数据;当所述处理器判断所述寄存器的当前状态对应的状态类型为所述使用第二DMA模块状态时,配置所述DMA数据。
所述第二DMA模块502,用于当所述处理器判断所述寄存器的当前状态对应的状态类型为所述使用第一DMA模块状态时,配置所述DMA数据。
所述寄存器503,用于存储数据。
需要说明的是,所述寄存器503的功能与所述寄存器504的功能是一致的。
所述处理器505,用于获取初始化后寄存器的当前状态,判断所述寄存器的当前状态对应的状态类型,基于所述寄存器确定的状态类型执行所述状态类型对应的操作;将所述寄存器的当前状态对应的状态类型设置为所述使用第一DMA模块状态;将所述寄存器的当前状态对应的状态类型设置为所述使用第二DMA模块状态;将所述寄存器的当前状态对应的状态类型设置为所述使用第一DMA模块状态。
数据传输模块506,用于用于将配置后的所述DMA数据进行传输。
进一步的,所述第一DMA模块501,包括:
读描述符缓存存储模块507和写描述符缓存存储模块508。
所述读描述符缓存存储模块507,用于存储读描述符。
所述写描述符缓存存储模块508,用于存储写描述符。
进一步的,所述第二DMA模块502,包括:
读描述符缓存存储模块509和写描述符缓存存储模块510。
需要说明的是,所述读描述符缓存存储模块509与所述读描述符缓存存储模块507的功能是一致的,所述写描述符缓存存储模块510与写描述符缓存存储模块508的功能是一致的。
进一步的,所述数据传输模块506,包括:
内存直接访问写控制模块511和内存直接访问读控制模块512。
所述内存直接访问写控制模块511,用于发起内存直接访问的写入操作。
所述内存直接访问读控制模块512,用于发起内存直接访问的读取操作。
需要说明的是,一个PCIE接口对应第一DMA模块和第二DMA模块,形成乒乓架构,当该第一DMA模块工作的时候,该第二DMA模块处于准备状态,该第二DMA模块在准备状态下可配置DMA数据,当该第一DMA模块工作结束时,该第二DMA模块进行工作,该第一DMA模块处于准备状态,该第一DMA在准备状态下可配置DMA数据。
乒乓DMA架构是指有第一和第二两组结构,当第一结构执行第一操作的时候,第二结构可以执行第二操作,当某一时刻到达,第一和第二两组结构进行动作切换,第一结构执行第二操作,第二结构执行第一操作,使得操作不间断,形成连贯。
该乒乓DMA架构500的数据传输的执行过程,如下所示:
Step-1,当FPGA加速板卡上电时,寄存器503为初始化状态,即该寄存器503的数值为00。
Step-2,判断是否需要第一DMA模块501传输一批次数据,若否,则继续等待,直至需要使用该第一DMA模块501传输一批次数据,若是,则进入Step3。
Step-3,读取该寄存器503的数值。
Step-4,判断该寄存器503的数值是否为00,若是,则使用该第一DMA模块501配置DMA数据,将配置后的DMA数据进行传输,并将该寄存器503的数值设置为01,并执行Step-2,若否,则执行Step-5。
Step-5,判断该寄存器503的数值是否为01,若是,则使用该第二DMA模块502配置DMA数据,将配置后的DMA数据进行传输,并将该寄存器503的数值设置为02,并执行Step-2,若否,则执行Step-6。
Step-6,判断该寄存器503的数值是否为02,若是,则使用该第一DMA模块501配置DMA数据,将配置后的DMA数据进行传输,并将该寄存器503的数值设置为01,并执行Step-2,若否,则执行Step-2。
基于Step-1至Step-6形成一种乒乓DMA架构500,执行不间断传输DMA数据的操作。
需要说明的是,该乒乓DMA架构500通过PCIE接口与服务器端的主机HOST相连。
本发明实施例公开了一种乒乓DMA架构,通过获取初始化后寄存器的当前状态,判断寄存器的当前状态对应的状态类型,基于寄存器确定的状态类型执行状态类型对应的操作,通过上述架构,采用两个DMA模块对数据进行配置,当第一DMA模块处于忙碌时,第二DMA模块对数据也可以对数据进行配置,并根据寄存器不同的状态类型,执行不同的状态类型对应的数据操作,实现提高数据传输效率的目的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***或***实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的***及***实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种数据传输方法,其特征在于,应用于乒乓DMA架构,所述乒乓DMA架构包括第一DMA模块和第二DMA模块,所述方法包括:
获取初始化后寄存器的当前状态;
依据预设的对应关系,判断所述寄存器的当前状态对应的状态类型,基于所述寄存器确定的状态类型执行所述状态类型对应的操作,其中,所述状态类型包括初始化状态、使用第一DMA模块状态和使用第二DMA模块状态,所述使用第一DMA模块状态是所述第一DMA模块执行上一批次数据传输时的状态,所述使用第二DMA模块状态是所述第二DMA模块执行上一批次数据传输时的状态,所述对应关系包括寄存器的数值与状态类型的对应关系。
2.根据权利要求1所述的方法,其特征在于,若判断所述寄存器的当前状态对应的状态类型为所述初始化状态,所述基于所述寄存器确定的状态类型执行所述状态类型对应的操作,包括:
若所述寄存器的当前状态对应的状态类型为所述初始化状态,使所述第一DMA模块配置DMA数据;
将配置后的所述DMA数据进行传输,并将所述寄存器的当前状态对应的状态类型设置为所述使用第一DMA模块状态,其中,所述DMA数据包括DMA读写标志、DMA传输数据长度、DMA源和目的地址。
3.根据权利要求1所述的方法,其特征在于,若判断所述寄存器的当前状态对应的状态类型为所述使用第一DMA模块状态,所述基于所述寄存器确定的状态类型执行所述状态类型对应的操作,包括:
若所述寄存器的当前状态对应的状态类型为所述使用第一DMA模块状态,使所述第二DMA模块配置所述DMA数据;
将配置后的所述DMA数据进行传输,并将所述寄存器的当前状态对应的状态类型设置为所述使用第二DMA模块状态。
4.根据权利要求1所述的方法,其特征在于,若判断所述寄存器的当前状态对应的状态类型为所述使用第二DMA模块状态,所述基于所述寄存器确定的状态类型执行所述状态类型对应的操作,包括:
若所述寄存器的当前状态对应的状态类型为所述使用第二DMA模块状态,使所述第一DMA模块配置所述DMA数据;
将配置后的所述DMA数据进行传输,并将所述寄存器的当前状态对应的状态类型设置为所述使用第一DMA模块状态。
5.一种乒乓DMA架构,其特征在于,包括:
第一DMA模块,第二DMA模块、寄存器、处理器和数据传输模块;
所述处理器,用于获取初始化后寄存器的当前状态,依据预设的对应关系,判断所述寄存器的当前状态对应的状态类型,基于所述寄存器确定的状态类型执行所述状态类型对应的操作,其中,所述状态类型包括初始化状态、使用第一DMA模块状态和使用第二DMA模块状态,所述使用第一DMA模块状态是所述第一DMA模块执行上一批次数据传输时的状态,所述使用第二DMA模块状态是所述第二DMA模块执行上一批次数据传输时的状态,所述对应关系包括寄存器的数值与状态类型的对应关系。
6.根据权利要求5所述的乒乓DMA架构,其特征在于,包括:
所述第一DMA模块,用于当所述处理器判断所述寄存器的当前状态对应的状态类型为所述初始化状态时,配置DMA数据;
所述数据传输模块,用于将配置后的所述DMA数据进行传输;
所述处理器,用于将所述寄存器的当前状态对应的状态类型设置为所述使用第一DMA模块状态,其中,所述DMA数据包括DMA读写标志、DMA传输数据长度、DMA源和目的地址。
7.根据权利要求5所述的乒乓DMA架构,其特征在于,包括:
所述第二DMA模块,用于当所述处理器判断所述寄存器的当前状态对应的状态类型为所述使用第一DMA模块状态时,配置所述DMA数据;
所述数据传输模块,用于将配置后的所述DMA数据进行传输;
所述处理器,用于将所述寄存器的当前状态对应的状态类型设置为所述使用第二DMA模块状态。
8.根据权利要求5所述的乒乓DMA架构,其特征在于,包括:
所述第一DMA模块,用于当所述处理器判断所述寄存器的当前状态对应的状态类型为所述使用第二DMA模块状态时,配置所述DMA数据;
所述数据传输模块,用于将配置后的所述DMA数据进行传输;
所述处理器,用于将所述寄存器的当前状态对应的状态类型设置为所述使用第一DMA模块状态。
9.根据权利要求5所述的乒乓DMA架构,其特征在于,所述第一DMA模块和所述第二DMA模块包括:
读描述符缓存存储和写描述符缓存存储。
10.根据权利要求5所述的乒乓DMA架构,其特征在于,所述数据传输模块,包括:
内存直接访问写控制单元和内存直接访问读控制单元。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910574765.9A CN110399322B (zh) | 2019-06-28 | 2019-06-28 | 一种数据传输方法及乒乓dma架构 |
PCT/CN2019/108916 WO2020258566A1 (zh) | 2019-06-28 | 2019-09-29 | 一种数据传输方法及乒乓dma架构 |
US17/595,971 US20220237132A1 (en) | 2019-06-28 | 2019-09-29 | Data transmission method and ping-pong dma architecture |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910574765.9A CN110399322B (zh) | 2019-06-28 | 2019-06-28 | 一种数据传输方法及乒乓dma架构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110399322A CN110399322A (zh) | 2019-11-01 |
CN110399322B true CN110399322B (zh) | 2021-03-09 |
Family
ID=68323603
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910574765.9A Active CN110399322B (zh) | 2019-06-28 | 2019-06-28 | 一种数据传输方法及乒乓dma架构 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220237132A1 (zh) |
CN (1) | CN110399322B (zh) |
WO (1) | WO2020258566A1 (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101025722A (zh) * | 2006-02-22 | 2007-08-29 | 夏普株式会社 | 数据处理装置 |
CN101645052A (zh) * | 2008-08-06 | 2010-02-10 | 中兴通讯股份有限公司 | 一种快速dma乒乓缓存方法 |
CN102693198A (zh) * | 2012-05-12 | 2012-09-26 | 北京忆恒创源科技有限公司 | Dma传输方法及*** |
CN104679690A (zh) * | 2015-01-22 | 2015-06-03 | 中国人民解放军国防科学技术大学 | 用于gpdsp的基于乒乓机制支持数据乱序返回的dma矩阵转置传输方法 |
CN109062826A (zh) * | 2018-08-16 | 2018-12-21 | 算丰科技(北京)有限公司 | 数据传输方法及*** |
CN109815176A (zh) * | 2019-01-14 | 2019-05-28 | 中国科学院上海高等研究院 | 特定dma数据发送方法、接收方法、***及介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101710309B (zh) * | 2009-12-15 | 2011-05-04 | 北京时代民芯科技有限公司 | 一种基于海量数据传输的dma控制器 |
US9569384B2 (en) * | 2013-03-14 | 2017-02-14 | Infineon Technologies Ag | Conditional links for direct memory access controllers |
CN103678204B (zh) * | 2013-12-30 | 2017-02-15 | 龙芯中科技术有限公司 | 处理器及数据处理方法 |
CN104503929B (zh) * | 2014-12-02 | 2017-10-24 | 天津国芯科技有限公司 | 一种采用dma控制器进行字符串处理的装置 |
CN108804356A (zh) * | 2017-04-26 | 2018-11-13 | 上海寒武纪信息科技有限公司 | 数据传输装置及方法 |
CN108958639B (zh) * | 2017-05-19 | 2021-07-06 | 华邦电子股份有限公司 | 快闪存储器存储装置 |
CN108228498B (zh) * | 2017-12-21 | 2020-12-15 | 深圳开阳电子股份有限公司 | 一种dma控制装置和图像处理器 |
CN109766296A (zh) * | 2019-01-08 | 2019-05-17 | 郑州云海信息技术有限公司 | 一种数据处理方法、装置、***和dma控制器 |
-
2019
- 2019-06-28 CN CN201910574765.9A patent/CN110399322B/zh active Active
- 2019-09-29 WO PCT/CN2019/108916 patent/WO2020258566A1/zh active Application Filing
- 2019-09-29 US US17/595,971 patent/US20220237132A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101025722A (zh) * | 2006-02-22 | 2007-08-29 | 夏普株式会社 | 数据处理装置 |
CN101645052A (zh) * | 2008-08-06 | 2010-02-10 | 中兴通讯股份有限公司 | 一种快速dma乒乓缓存方法 |
CN102693198A (zh) * | 2012-05-12 | 2012-09-26 | 北京忆恒创源科技有限公司 | Dma传输方法及*** |
CN104679690A (zh) * | 2015-01-22 | 2015-06-03 | 中国人民解放军国防科学技术大学 | 用于gpdsp的基于乒乓机制支持数据乱序返回的dma矩阵转置传输方法 |
CN109062826A (zh) * | 2018-08-16 | 2018-12-21 | 算丰科技(北京)有限公司 | 数据传输方法及*** |
CN109815176A (zh) * | 2019-01-14 | 2019-05-28 | 中国科学院上海高等研究院 | 特定dma数据发送方法、接收方法、***及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110399322A (zh) | 2019-11-01 |
US20220237132A1 (en) | 2022-07-28 |
WO2020258566A1 (zh) | 2020-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
USRE49875E1 (en) | Memory system having high data transfer efficiency and host controller | |
CN109726163B (zh) | 一种基于spi的通信***、方法、设备和储存介质 | |
KR20140036094A (ko) | 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법 | |
CN114201268B (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
US7747808B2 (en) | USB host controller with memory for transfer descriptors | |
JP2008521080A5 (zh) | ||
EP2835743A1 (en) | I/o device sharing system and i/o device sharing method | |
CN114238184B (zh) | 一种多功能dma的传输方法、装置及存储介质 | |
CN101814011B (zh) | Usb主机控制器以及用于usb主机控制器的控制方法 | |
CN110990310B (zh) | 一种设备端sd控制器、控制方法及电子设备 | |
CN110399322B (zh) | 一种数据传输方法及乒乓dma架构 | |
US8423693B2 (en) | Circuit and method for pipe arbitration using available state information and arbitration | |
US20160314086A1 (en) | Secure digital host controller virtualization | |
CN116340217A (zh) | 数据处理方法及相关装置 | |
US8996772B1 (en) | Host communication device and method with data transfer scheduler | |
CN101976230B (zh) | 通用序列总线传输转译器及输入请求同步传输方法 | |
JP5847013B2 (ja) | 計算機及び計算機における入出力制御方法 | |
JPH11232213A (ja) | 入出力装置におけるデータ転送方式 | |
US8296481B2 (en) | Device and method for improving transfer efficiency of odd number of data blocks | |
CN114416444A (zh) | 一种PCIe板卡固件调试的方法、***、设备和存储介质 | |
CN113127399A (zh) | 一种通用串列汇流排装置以及存取方法 | |
CN118349180A (zh) | 存储器的控制方法和装置、存储介质及电子设备 | |
CN118363901A (zh) | PCIe设备、电子组件及电子设备 | |
JP2012118772A (ja) | バス接続装置、バス接続方法及びバス接続プログラム | |
JP2009169559A (ja) | データ転送装置 |
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 |