CN113703951B - 一种处理dma的方法、装置、及计算机可读存储介质 - Google Patents
一种处理dma的方法、装置、及计算机可读存储介质 Download PDFInfo
- Publication number
- CN113703951B CN113703951B CN202111251475.4A CN202111251475A CN113703951B CN 113703951 B CN113703951 B CN 113703951B CN 202111251475 A CN202111251475 A CN 202111251475A CN 113703951 B CN113703951 B CN 113703951B
- Authority
- CN
- China
- Prior art keywords
- dma
- task
- descriptor
- processing
- preset condition
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 131
- 238000000034 method Methods 0.000 title claims abstract description 91
- 230000008569 process Effects 0.000 claims abstract description 38
- 238000004590 computer program Methods 0.000 claims description 13
- 230000001960 triggered effect Effects 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 claims description 6
- 239000002699 waste material Substances 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 6
- 230000001133 acceleration Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000012958 reprocessing Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
本申请公开了一种处理DMA的方法、装置、及计算机可读存储介质,涉及计算机技术领域,其通过获取用于处理DMA的DMA任务,并获取任务的状态信息,根据任务包含的阶段判断状态信息是否满足描述符DMA队列的第一预设条件和/或是否满足数据DMA队列的第二预设条件,其中,描述符DMA队列用于处理任务的第一阶段,数据DMA队列用于处理任务的第二阶段,判断出是否对任务进行下一步处理。由此可见,此方法,通过将处理DMA的两个阶段同时进行,若其中一个阶段不符合条件,则对下一个任务进行处理,另外一个阶段继续执行,此方法有效的避免了在等待第一个阶段返回数据的过程中,会出现DMA通道的空闲导致带宽浪费的问题产生。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种处理DMA的方法、装置、及计算机可读存储介质。
背景技术
随着大数据、人工智能的兴起、传统的中央处理器(central processing unit,CPU)的运算能力已经无法满足需求,各种类型的运算加速设备被大量使用在计算机系统中,用来卸载CPU在数据平面所执行的处理,将CPU资源集中于控制平面,以此来避免CPU成为系统的瓶颈。在包含硬件加速的系统中,源数据和处理后的数据一般放在主机内存中,这样方便主机端CPU的存取。运算加速设备通过告诉串行计算机扩展总线标准(PeripheralComponent Interconnect Express,PCIe)直接存储器访问(Direct Memory Access,DMA)从主机端内存读取源数据放入硬件缓存并进行运算,运算的结果也暂存在硬件缓存中,然后通过PCIe DMA将它写入到主机内存;最后,硬件通过中断或者向主机内存写应答帧的方式通知CPU,CPU从主机内存中直接读取运算结果。而一次典型的PCIe DMA过程,需要分为至少两个阶段,第一个阶段,加速设备通过PCIe DMA从主机端获取描述符链表并保存在硬件缓存中;第二个阶段,解析描述符链表得到数据地址,然后通过PCIe DMA从该地址获取数据。
由于传统的DMA控制器,在等待第一个阶段返回数据的过程中,会出现DMA通道的空闲会导致带宽的浪费的问题产生。
鉴于上述技术,寻求一种高效的实现DMA的方法,是本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种处理DMA的方法、装置、及计算机可读存储介质。
为解决上述技术问题,本申请提供一种处理DMA的方法,包括:
接收用于处理DMA的任务,并获取所述任务的状态信息;
根据所述任务包含的阶段判断所述状态信息是否满足描述符DMA队列的第一预设条件和/或是否满足数据DMA队列的第二预设条件;其中,所述描述符DMA队列用于处理所述任务的第一阶段,所述数据DMA队列用于处理所述任务的第二阶段;
若所述任务满足所述第一预设条件,则控制所述描述符DMA队列处理所述任务的第一阶段;
若所述任务满足所述第二预设条件,则控制所述数据DMA队列处理所述任务的第二阶段;
在处理所述第一阶段或所述第二阶段之后,更新所述任务的所述状态信息;并将不满足所述第一预设条件或不满足所述第二预设条件的所述状态信息对应的阶段的任务作为新的任务继续执行上述步骤。
优选地,所述获取所述任务的状态信息包括:
设置所述任务编号,所述编号与所述任务对应;
将所述编号分别写入所述数据DMA队列和所述描述符DMA队列;
通过所述编号获取所述状态信息。
优选地,所述状态信息包含QoS信息、状态标志、数据信息、描述符信息;
所述QoS信息包含所述任务的优先级、带宽配额,所述状态标志包括所述数据DMA和所述描述符DMA,所述数据信息包括当前页地址、当前页偏移、流控配额、剩余总大小,所述描述符信息包括当前页地址、当前页偏移、描述符缓存、剩余条目数。
优选地,所述第一预设条件为描述符缓存中包含下一页地址条目,且所述任务的优先级在所述描述符DMA队列中最高,且所述带宽配额和所述流控配额不为0;
所述第二预设条件为所述数据DMA包含所述描述符信息,且所述任务的优先级在所述数据DMA队列中最高,且所述带宽配额和所述流控配额不为0。
优选地,所述控制描述符DMA队列处理所述任务的第一阶段包括:
判断所述带宽配额和所述流控配额是否为0;
若是,将所述第一阶段的任务作为新的任务进入到所述根据所述任务包含的阶段判断所述状态信息是否满足描述符DMA队列的第一预设条件和/或是否满足所述数据DMA队列的第二预设条件的步骤;
若否,计算DMA参数,所述DMA参数包含DMA传输大小、当前页剩余、起始地址;
向PCIe发送读DMA的请求,并判断所述剩余总大小是否为0;
若所述剩余总大小为0,设置所述描述符DMA为完成状态;
若所述剩余总大小不为0,返回所述判断所述带宽配额和所述流控配额是否为0的步骤;
所述控制数据DMA队列处理所述任务的第二阶段包括:
判断所述带宽配额和所述流控配额是否为0;
若是,将所述第二阶段的任务作为新的任务进入到所述根据所述任务包含的阶段判断所述状态信息是否满足描述符DMA队列的第一预设条件和/或是否满足所述数据DMA队列的第二预设条件的步骤;
若否,计算DMA参数,所述DMA参数包含DMA传输大小、当前页剩余、起始地址;
向PCIe发送读DMA的请求,并判断所述剩余总大小是否为0;
若所述剩余总大小为0,设置所述数据DMA为完成状态;
若所述剩余总大小不为0,返回所述判断所述带宽配额和所述流控配额是否为0的步骤。
优选地,在所述设置描述符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为本申请实施例提供的一种处理DMA的方法的流程图;
图2为本申请实施例提供的一种DMA控制器的结构图;
图3为本申请实施例提供的另一种处理DMA的方法的流程图;
图4为本申请实施例提供的一种处理DMA的装置的结构图;
图5为本申请另一实施例提供的处理DMA的装置的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
本申请的核心是提供一种处理DMA的方法、装置、及计算机可读存储介质。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。
图1为本申请实施例提供的一种处理DMA的方法的流程图,如图1所示,处理DMA的方法包括:
S10:接收用于处理DMA的任务,并获取任务的状态信息。
S11:根据任务包含的阶段判断状态信息是否满足描述符DMA队列的第一预设条件,若是进入S13步骤,若否,返回S11步骤。
S12:根据任务包含的阶段判断状态信息是否满足数据DMA队列的第二预设条件,若是,进入S14步骤,若否,返回S12步骤。
S13:控制描述符DMA队列处理任务的第一阶段。
S14:控制数据DMA队列处理任务的第二阶段。
S15:更新任务的状态信息。
可以理解的是,DMA作为一种不经过CPU而直接访问内存的结束,它可以使CPU从数据拷贝这种简单但繁重的处理中释放出来,去执行更为复杂的运算,而运算加速设备通常采用板卡的形式插入计算机中,通过PCIe总线与CPU连接,这样可以获得较高的数据带宽和较大的灵活性。但是一次典型的PCIe DMA过程需要分为两个阶段,且第二个阶段的操作需要用到第一个阶段的信息,这就导致无法并行执行两个阶段 ,因此如何利用第二阶段等待第一阶段时的时间是本申请的关键,对于S10来说,接收用于处理DMA的任务,并根据任务获取任务的状态信息,值得说明的是,状态信息是可以指任务QoS信息,数据信息,描述符信息,任务优先级的高低,对状态信息的具体不作限定,图2为本申请实施例提供的DMA控制器的结构图,如图2所示,当任务被接收后,放在任务队列里,任务解析器通过任务队列的任务获取任务的状态信息,并存储于任务上下文信息存储单元中,其中任务上下文信息存储单元用来存储任务以及任务所包含的状态信息,任务上下文存储单元的数量为多个,每一个任务对应一个任务上下文存储单元,其中多个任务上下文存储单元可以同时进行处理。而候选队列1、数据DMA过滤器、工作队列1和数据DMA处理器在本申请中一起称为数据DMA队列,而候选队列2、描述符DMA过滤器、工作队列2和描述符DMA处理器在本申请中一起被称为描述符DMA队列,通过队列对数据DMA和描述符DMA进行处理。
另外,在S11步骤和S12步骤所提到的阶段是指任务的处理进度,一次典型的PCIeDMA过程需要分为两个阶段,首先判断出任务执行到第几阶段,若执行到第一阶段,则判断状态信息是否满足描述符DMA队列的第一预设条件并判断状态信息是否满足数据DMA队列的第二预设条件,若为第二阶段,则直接判断状态信息是否满足数据DMA队列的第二预设条件即可,此时第一阶段在进行别的任务处理。此外,如步骤S11和步骤S12所说,当状态信息满足第一预设条件则进入S13步骤,若不满足则返回S11步骤,当状态信息满足第二预设条件则进入S14步骤,若不满足则返回S12步骤,值得说明的是,返回S11步骤和返回S12步骤是为了等待另一阶段的处理进行完成,对任务的状态信息进行更新之后,可以满足第一预设条件或第二预设条件,从而继续处理,而不是放弃任务,也不是将此阶段空闲,继续对下一个任务进行处理,当被返回的任务状态信息更新后,符合条件之后可以继续处理。可以理解的是,本实施例提供的PCIe DMA过程的两个阶段,可以两个阶段处理两个不同的任务,具体的为,处理任务A的第一阶段,由于第二阶段需要用到第一阶段的信息,因此无法同时对任务A的第二阶段进行处理,所以此时第二阶段处理的为任务B的第二阶段。
此外,对于S13步骤和S14步骤来说,控制描述符DMA队列处理任务的第一阶段,控制数据DMA队列处理任务的第二阶段,值得说明的是,描述符DMA队列和数据DMA队列可能处理的是两个任务的不同阶段,也可能是一个任务的两个阶段。此外,当处理完任务的第一阶段或第二阶段后对任务的状态信息进行更新,对状态更新的内容不作限定,可以为第一阶段完成后,更新第二阶段所需要用到的信息,使第二阶段正常进行。也可以为第一阶段或第二阶段处理后对完成程度进行更新。
由此可见,本实施例所提供的处理DMA的方法,通过获取用于处理DMA的DMA任务,并获取任务的状态信息,根据任务包含的阶段判断状态信息是否满足描述符DMA队列的第一预设条件和/或是否满足数据DMA队列的第二预设条件,其中,描述符DMA队列用于处理任务的第一阶段,数据DMA队列用于处理任务的第二阶段,判断出是否对任务进行下一步处理。由此可见,此方法,通过将处理DMA的两个阶段同时进行,若其中一个阶段不符合条件,则对下一个任务进行处理,另外一个阶段继续执行,此方法有效的避免了在等待第一个阶段返回数据的过程中,会出现DMA通道的空闲导致带宽浪费的问题产生。
在上述实施例的基础上,对如何获取任务的状态信息进行限定,获取任务状态信息的三个步骤如下:
设置任务编号,编号与任务对应。
将编号分别写入数据DMA队列和描述符DMA队列。
通过编号获取任务的状态信息。
可以理解的是,通过对任务进行编号,将编号分别写入数据DMA队列和描述符DMA队列,可以通过编号查询到任务的状态信息,值得注意的是,对编号的具体形式不作限定,可以为英文字母,可以为阿拉伯数字或其结合组成的编号。如图2所示,任务和任务的状态信息被存储于任务上下文信息存储单元,在具体实施中,将任务或者任务信息发送至队列会引起队列拥堵,且实现复杂,空闲资源队列记录当前空闲的任务上下文信息存储单元的编号,当DMA控制器复位时,此队列会被初始化为满状态,编号依次开始,从N1到Nn,而编号与任务进行对应,通过编号可以查询到任务的状态信息,可以理解的是,编号相当于身份证号,可以通过身份证号查询到此人的信息。
在具体实施例中,通过将编号分别写入数据DMA队列和描述符DMA队列,通过编号查询到的状态信息判定当前任务是否符合第一预设条件和第二预设条件,值得注意的是,一个任务上下文信息存储单元对应一个DMA任务,它决定了处理DMA的最大并发任务数。值得说明的是,本实施例提供的通过编号查询任务的状态信息仅仅是一种优选的实施例,可以根据实际情况对其做出选择。
由此可见,本实施例提供的处理DMA的方法,通过设置任务的编号,将任务的编号发送至数据DMA队列和描述符DMA队列,通过编号查询对应任务的状态信息,且状态信息由任务上下文信息存储单元存储,一个存储单元对应一个DMA任务,决定了处理DMA的最大并发任务数。此方法,通过编号对任务的状态信息进行查询,可以节省队列中的空间,并且通过上下文存储单元存储任务的状态信息,可以保留任务的中间状态,支持了任务的挂起和恢复。
在上述实施例的基础上,对状态信息进行限定,需要说明的是,本实施例仅仅是作为一种优选的实施例,可以根据具体情况对状态信息的具体内容进行选择,其中任务的状态信息包含服务质量(Quality of Service,QoS)信息、状态标志、数据信息、描述符信息四个寄存器组合相关逻辑,且QoS信息包含任务的优先级信息、带宽配额,带宽配额可以用来动态的记录当前任务剩余的配额,而描述符信息还包含当前页地址、当前页偏移、剩余条目数和描述符缓存。其中描述符DMA队列可以根据描述符缓存的大小、各种配额剩余值将一个任务拆分为多次完成,每一次任务执行时,根据当前页地址和偏移等参数执行DMA操作,当DMA数据返回时,内部逻辑将数据写入描述符缓存,并更新当前页地址、页偏移和剩余条目数。
此外,数据信息与描述符信息类似,数据信息同样包括当前页地址、当前页偏移、剩余总大小、流控配额,数据DMA队列通过当前页地址、页偏移和剩余总大小 等信息记录当前任务的中间状态。流控配额用来记录当前数据目的端剩余的空间大小。另外,状态标志包括数据DMA和 描述符DMA,当描述符DMA和数据DMA完成时,可以更新对应的状态标志,更好的将任务的进度进行反馈。
由此可见,本实施例提供的状态信息包括QoS信息、状态标志、数据信息和描述符系信息,其中四个信息对应的都有自己的子信息,可以通过任务阶段的完成,对任务的状态信息进行更新,也可以通过对状态信息的设置,使存储单元保存任务执行的所有中间状态,使描述符DMA和数据DMA操作可以分多次执行,并且支持任务之间的切换,此方法有效的提高了设备操作数据DMA和描述符DMA时的效率,避免了浪费通道的问题。
在上述实施例的基础上,对数据DMA队列和描述符DMA队列的第一预设条件和第二预设条件进行限定,此外,这个预设条件相当于对任务进行一个过滤,将不满足条件的信息放在一边,等待信息更新并满足条件时进行处理。
第一预设条件为描述符缓存中包含下一页地址条目,且任务的优先级在描述符DMA队列中最高,且带宽配额和流控配额不为0,第二预设条件与第一预设条记类似,第一预设条件为数据DMA包含描述符信息,且任务的优先级在数据DMA队列中最高,且带宽配额和流控配额不为0。当满足第一预设条件或第二预设条件时,会通过数据DMA队列或描述符DMA队列进行数据DMA处理或描述符DMA处理,不满足第一或第二条件时会将任务作为一个新的任务重新处理,等待状态信息的更新,在更新之前会对下一个任务进行处理。值得说明的是,本实施例所提供的第一预设条件和第二预设条件仅仅作为一种优选的实施例出现,可以根据具体的情况对第一预设条件和第二预设条件进行限定。
由此可见,此方法通过将任务区分为两个阶段,且通过第一预设条件和第二预设条件判断当前任务是否可以执行第一阶段和第二阶段,有效的避免了此任务不能被处理,但已经开始处理导致设备做无用功的情况出现,有效的提高了处理DMA的效率。
在具体实施例中,对DMA任务第一阶段的处理通过控制描述符DMA队列处理任务的第一阶段的任务包括:
判断带宽配额和流控配额是否为0;
若是,将第一阶段的任务作为新的任务进入到根据任务包含的阶段判断状态信息是否满足描述符DMA队列的第一预设条件和/或是否满足数据DMA队列的第二预设条件的步骤;
若否,计算DMA参数,DMA参数包含DMA传输大小、当前页剩余、起始地址;
向PCIe发送读DMA的请求,并判断剩余总大小是否为0;
若剩余总大小为0,设置描述符DMA为完成状态;
若剩余总大小不为0,返回判断带宽配额和流控配额是否为0的步骤;
对DMA任务第二阶段的处理通过控制数据DMA队列处理任务的第二阶段包括:
判断带宽配额和流控配额是否为0;
若是,将第二阶段的任务作为新的任务进入到根据任务包含的阶段判断状态信息是否满足描述符DMA队列的第一预设条件和/或是否满足数据DMA队列的第二预设条件的步骤;
若否,计算DMA参数,DMA参数包含DMA传输大小、当前页剩余、起始地址;
向PCIe发送读DMA的请求,并判断剩余总大小是否为0;
若剩余总大小为0,设置数据DMA为完成状态;
若剩余总大小不为0,返回判断带宽配额和流控配额是否为0的步骤。
值得注意的是,本实施例仅仅提供对第一阶段和第二阶段的处理仅仅作为一种优选的实施方案,可以根据具体情况对第一阶段和第二阶段的处理进行限定,第一阶段的处理,如图2所示,候选队列2、描述符DMA过滤器、工作队列2和描述符DMA处理器合称为描述符DMA队列,当任务满足第一预设条件时,描述符DMA过滤器将任务对应的存储单元编号写入工作队列2,当工作队列2不为空时,描述符DMA处理器读取存储单元编号,通过编号获取任务的状态信息,通过判断当前任务的带宽配额和流控配额是否为0,若是0则返回候选队列2,否则计算DMA的相关参数,其中DMA的相关参数包括当前页偏移、当前页地址、当前页剩余和起始地址。并通过总线访问PCIe执行一次DMA过程,当DMA过程被PCIe接收后,处理器将更新任务的状态信息,若不接收,则根据带宽配额和流控配额判断是否执行下一次操作,判断当前任务是完全结束还是阶段性结束,如果是完全结束则配额为0,且剩余条目数为0时,为描述符DMA的状态标志设置成完成状态,若为阶段性结束,将任务的编号写回候选队列2,等待下一次执行。
第二阶段的处理与第一阶段类似,候选队列1、数据DMA过滤器、工作队列1和数据DMA处理器合称为数据DMA队列,当任务满足第二预设条件时,数据DMA过滤器将任务对应的存储单元编号写入工作队列1,当工作队列1不为空时,数据DMA处理器读取存储单元编号,通过编号获取任务的状态信息,通过判断当前任务的带宽配额和流控配额是否为0,若是0则返回候选队列1,否则计算DMA的相关参数,其中DMA的相关参数包括当前页偏移、当前页地址、当前页剩余和起始地址。并通过总线访问PCIe执行一次DMA过程,当DMA过程被PCIe接收后,处理器将更新任务的状态信息,若不接收,则根据带宽配额和流控配额判断是否执行下一次操作,判断当前任务是完全结束还是阶段性结束,如果是完全结束则配额为0,且剩余总大小为0时,为数据DMA的状态标志设置成完成状态,若为阶段性结束,将任务的编号写回候选队列1,等待下一次执行。
由此可见,本实施例提供的第一阶段和第二阶段处理的具体过程,通过判断带宽配额和流控配额是否为0,得出是否继续下一步骤的结论,若不为0,则计算DMA的相关参数,并通过总线访问PCIe执行一次DMA过程,当DMA过程被接收后,将会更新任务的状态信息,且也可以判断出当前阶段的任务是完全结束还是阶段性结束,若为阶段性结束,则将任务返回候选队列等待下一次执行,若为完全结束,则设置数据DMA或描述符DMA的状态标志为完成状态。有效的,提高了处理DMA的效率,可以将任务划分为多个步骤进行,可以挂起任务,避免了第二阶段等待第一阶段信息返回时通道浪费的情况发生。
在具体实施中,在为数据DMA的状态标志或描述符DMA的状态标志设置成完成状态并不能完全得出当前任务是否完全结束的结论,只能得出某一阶段的任务已经完成,因此为了避免这种情况的发生,在上述步骤的基础上,额外增加了两个步骤,图3为本申请实施例提供的另一种处理DMA的方法的流程图,如图3所示,除了步骤S15以外还包括:
S16:判断数据DMA的状态标志或描述符DMA的状态标志是否为完成状态,若是进入S17步骤。
S17:向调用方发出应答信号。
S18:回收数据DMA的状态标志为完成状态和描述符DMA的状态标志为完成状态的任务的编号。
值得说明的是,S16步骤中提到的判断数据DMA的状态标志或描述符DMA的状态标志是指在任意一个阶段完成处理后判断另一阶段是否也是完成状态,具体的为任务A分为a,b两个阶段,当a完成后判断b是否也是完成,同样的当b完成后判断a是否完成,若二者均为完成状态则向调用方发出应答信号,最后将数据DMA的状态标志和描述符DMA的状态标志均为完成状态的任务的编号回收,以便于编号循环利用。
由此可见,此方法通过判断任务的两个阶段是否均为完成状态,若是,想调用方发出应答信号,并且将数据DMA的状态标志和描述符DMA的状态标志均为完成状态的任务的编号回收,可以使编号循环利用。由此可见,此方法,若两个阶段都为完成状态,对调用方发出应答信号,增加了与调用方的交互性,将编号回收,提高了编号的循环利用性,提高了设备的效率。
在上述实施例中,对于处理DMA的方法进行了详细描述,本申请还提供处理DMA的装置对应的实施例。需要说明的是,本申请从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
上文详细描述了处理DMA的方法对应的各个实施例,在此基础上,本申请还公开与上述方法对应的处理DMA的装置。图4为本申请实施例提供的一种处理DMA的装置的结构图。如图4所示,任务调度的装置包括:
获取模块15,用于接收用于处理DMA的任务,并获取任务的状态信息;
判断模块16,用于根据任务包含的阶段判断状态信息是否满足描述符DMA队列的第一预设条件和/或是否满足数据DMA队列的第二预设条件;其中,描述符DMA队列用于处理任务的第一阶段,数据DMA队列用于处理任务的第二阶段,若满足第一预设条件,则触发第一处理模块17,若满足第二预设条件,则触发第二处理模块18,若不满足第一预设条件或第二预设条件,则触发执行模块19;
第一处理模块17,用于控制描述符DMA队列处理任务的第一阶段;
第二处理模块18,用于控制数据DMA队列处理任务的第二阶段;
执行模块19,用于将不满足第一预设条件或不满足第二预设条件的状态信息对应的阶段的任务作为新的任务继续触发上述模块以进行处理。
图5为本申请另一实施例提供的处理DMA装置的结构图,如图5所示,处理DMA的装置包括:
存储器20,用于存储计算机程序;
处理器21,用于执行计算机程序时实现如上述实施例中所提到的处理DMA的方法的步骤。
本实施例提供的处理DMA的装置可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的处理DMA的方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括Windows、Unix、Linux等。数据203可以包括但不限于处理DMA的方法的数据等。
在一些实施例中,处理DMA的装置还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
本领域技术人员可以理解,图5中示出的结构并不构成对处理DMA的装置的限定,可以包括比图示更多或更少的组件。
最后,本申请还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本申请所提供的处理DMA的方法进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (9)
1.一种处理DMA的方法,其特征在于,包括:
接收用于处理DMA的任务,并获取所述任务的状态信息;
根据所述任务包含的阶段判断所述状态信息是否满足描述符DMA队列的第一预设条件和/或是否满足数据DMA队列的第二预设条件;其中,所述描述符DMA队列用于处理所述任务的第一阶段,所述数据DMA队列用于处理所述任务的第二阶段;
若所述任务满足所述第一预设条件,则控制所述描述符DMA队列处理所述任务的第一阶段;
若所述任务满足所述第二预设条件,则控制所述数据DMA队列处理所述任务的第二阶段;
在处理所述第一阶段或所述第二阶段之后,更新所述任务的所述状态信息;并将不满足所述第一预设条件或不满足所述第二预设条件的所述状态信息对应的阶段的任务作为新的任务,并返回所述接收用于处理DMA的任务,并获取所述任务的状态信息的步骤;
其中,所述第一预设条件为描述符缓存中包含下一页地址条目,且所述任务的优先级在所述描述符DMA队列中最高,且带宽配额和流控配额不为0;
所述第二预设条件为所述数据DMA包含描述符信息,且所述任务的优先级在所述数据DMA队列中最高,且所述带宽配额和所述流控配额不为0。
2.根据权利要求1所述的处理DMA的方法,其特征在于,所述获取所述任务的状态信息包括:
设置所述任务编号,所述编号与所述任务对应;
将所述编号分别写入所述数据DMA队列和所述描述符DMA队列;
通过所述编号获取所述状态信息。
3.根据权利要求2所述的处理DMA的方法,其特征在于,所述状态信息包含QoS信息、状态标志、数据信息、所述描述符信息;
所述QoS信息包含所述任务的优先级、所述带宽配额,所述状态标志包括所述数据DMA和所述描述符DMA,所述数据信息包括当前页地址、当前页偏移、所述流控配额、剩余总大小,所述描述符信息包括当前页地址、当前页偏移、描述符缓存、剩余条目数。
4.根据权利要求3所述的处理DMA的方法,其特征在于,所述控制所述描述符DMA队列处理所述任务的第一阶段包括:
判断所述带宽配额和所述流控配额是否为0;
若是,将所述第一阶段的任务作为新的任务进入到所述根据所述任务包含的阶段判断所述状态信息是否满足描述符DMA队列的第一预设条件和/或是否满足所述数据DMA队列的第二预设条件的步骤;
若否,计算DMA参数,所述DMA参数包含DMA传输大小、当前页剩余、起始地址;
向PCIe发送读DMA的请求,并判断所述剩余总大小是否为0;
若所述剩余总大小为0,设置所述描述符DMA为完成状态;
若所述剩余总大小不为0,返回所述判断所述带宽配额和所述流控配额是否为0的步骤;
所述控制所述数据DMA队列处理所述任务的第二阶段包括:
判断所述带宽配额和所述流控配额是否为0;
若是,将所述第二阶段的任务作为新的任务进入到所述根据所述任务包含的阶段判断所述状态信息是否满足描述符DMA队列的第一预设条件和/或是否满足所述数据DMA队列的第二预设条件的步骤;
若否,计算DMA参数,所述DMA参数包含DMA传输大小、当前页剩余、起始地址;
向PCIe发送读DMA的请求,并判断所述剩余总大小是否为0;
若所述剩余总大小为0,设置所述数据DMA为完成状态;
若所述剩余总大小不为0,返回所述判断所述带宽配额和所述流控配额是否为0的步骤。
5.根据权利要求4所述的处理DMA的方法,其特征在于,在所述设置所述描述符DMA为完成状态或所述设置所述数据DMA为完成状态之后还包括:
判断所述数据DMA的所述状态标志或所述描述符DMA的所述状态标志是否为完成状态;
若是,向调用方发出应答信号。
6.根据权利要求5所述的处理DMA的方法,其特征在于,在所述通过总线向调用方发出应答信号之后还包括:
回收所述数据DMA的状态标志为完成状态和所述描述符DMA的状态标志为完成状态的所述任务的所述编号。
7.一种处理DMA的装置,其特征在于,包括:
获取模块,用于接收用于处理DMA的任务,并获取所述任务的状态信息;
判断模块,用于根据所述任务包含的阶段判断所述状态信息是否满足描述符DMA队列的第一预设条件和/或是否满足数据DMA队列的第二预设条件;其中,所述描述符DMA队列用于处理所述任务的第一阶段,所述数据DMA队列用于处理所述任务的第二阶段,若满足所述第一预设条件,则触发第一处理模块,若满足所述第二预设条件,则触发第二处理模块,若不满足所述第一预设条件或所述第二预设条件,则触发执行模块;
所述第一处理模块,用于控制所述描述符DMA队列处理所述任务的第一阶段;
所述第二处理模块,用于控制所述数据DMA队列处理所述任务的第二阶段;
所述执行模块,用于将不满足所述第一预设条件或不满足所述第二预设条件的所述状态信息对应的阶段的任务作为新的任务返回所述接收用于处理DMA的任务,并获取所述任务的状态信息的步骤;
其中,所述第一预设条件为描述符缓存中包含下一页地址条目,且所述任务的优先级在所述描述符DMA队列中最高,且带宽配额和流控配额不为0;
所述第二预设条件为所述数据DMA包含描述符信息,且所述任务的优先级在所述数据DMA队列中最高,且所述带宽配额和所述流控配额不为0。
8.一种处理DMA的装置,其特征在于,包括存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述的处理DMA的方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的处理DMA的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111251475.4A CN113703951B (zh) | 2021-10-27 | 2021-10-27 | 一种处理dma的方法、装置、及计算机可读存储介质 |
PCT/CN2022/090272 WO2023071125A1 (zh) | 2021-10-27 | 2022-04-29 | 一种处理dma的方法、装置、及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111251475.4A CN113703951B (zh) | 2021-10-27 | 2021-10-27 | 一种处理dma的方法、装置、及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113703951A CN113703951A (zh) | 2021-11-26 |
CN113703951B true CN113703951B (zh) | 2022-02-18 |
Family
ID=78646963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111251475.4A Active CN113703951B (zh) | 2021-10-27 | 2021-10-27 | 一种处理dma的方法、装置、及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113703951B (zh) |
WO (1) | WO2023071125A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113703951B (zh) * | 2021-10-27 | 2022-02-18 | 苏州浪潮智能科技有限公司 | 一种处理dma的方法、装置、及计算机可读存储介质 |
CN114936223A (zh) * | 2022-05-27 | 2022-08-23 | 阿里云计算有限公司 | 数据处理方法、装置、设备和存储介质 |
CN116860335B (zh) * | 2023-09-01 | 2023-11-17 | 北京大禹智芯科技有限公司 | 一种直接内存访问驱动系统实现流水化操作的方法 |
CN117807002B (zh) * | 2024-03-01 | 2024-05-24 | 山东云海国创云计算装备产业创新中心有限公司 | 基于直接存储器访问通道的负载均衡方法、装置及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100064069A1 (en) * | 2005-06-30 | 2010-03-11 | Freescale Semiconductor, Inc. | Device and method for controlling multiple dma tasks |
CN109766296A (zh) * | 2019-01-08 | 2019-05-17 | 郑州云海信息技术有限公司 | 一种数据处理方法、装置、系统和dma控制器 |
CN111813713A (zh) * | 2020-09-08 | 2020-10-23 | 苏州浪潮智能科技有限公司 | 数据加速运算处理方法、装置及计算机可读存储介质 |
CN113342721A (zh) * | 2021-07-06 | 2021-09-03 | 无锡众星微系统技术有限公司 | 存储控制器dma设计方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5803000B2 (ja) * | 2011-03-17 | 2015-11-04 | 株式会社Pfu | Dma装置、情報処理装置、及びデータ転送方法 |
CN107066407A (zh) * | 2016-11-28 | 2017-08-18 | 天津光电通信技术有限公司 | 一种基于PCIe总线的主从交互式通信平台及方法 |
CN108090018A (zh) * | 2017-10-26 | 2018-05-29 | 深圳市风云实业有限公司 | 数据交换方法及系统 |
EP4049143A4 (en) * | 2019-10-25 | 2024-02-21 | Gigaio Networks Inc | METHODS AND APPARATUS FOR DMA ENGINE DESCRIPTORS FOR HIGH-SPEED DATA SYSTEMS |
CN112948124B (zh) * | 2021-03-26 | 2023-09-22 | 浪潮电子信息产业股份有限公司 | 一种加速任务处理方法、装置、设备及可读存储介质 |
CN113703951B (zh) * | 2021-10-27 | 2022-02-18 | 苏州浪潮智能科技有限公司 | 一种处理dma的方法、装置、及计算机可读存储介质 |
-
2021
- 2021-10-27 CN CN202111251475.4A patent/CN113703951B/zh active Active
-
2022
- 2022-04-29 WO PCT/CN2022/090272 patent/WO2023071125A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100064069A1 (en) * | 2005-06-30 | 2010-03-11 | Freescale Semiconductor, Inc. | Device and method for controlling multiple dma tasks |
CN109766296A (zh) * | 2019-01-08 | 2019-05-17 | 郑州云海信息技术有限公司 | 一种数据处理方法、装置、系统和dma控制器 |
CN111813713A (zh) * | 2020-09-08 | 2020-10-23 | 苏州浪潮智能科技有限公司 | 数据加速运算处理方法、装置及计算机可读存储介质 |
CN113342721A (zh) * | 2021-07-06 | 2021-09-03 | 无锡众星微系统技术有限公司 | 存储控制器dma设计方法 |
Non-Patent Citations (1)
Title |
---|
"嵌入式操作系统驱动体系的设计和实现";郝丽芳;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;20111030;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113703951A (zh) | 2021-11-26 |
WO2023071125A1 (zh) | 2023-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113703951B (zh) | 一种处理dma的方法、装置、及计算机可读存储介质 | |
US11531625B2 (en) | Memory management method and apparatus | |
CN110427256B (zh) | 基于优先级的作业调度优化方法、设备、存储介质及装置 | |
CN109634718B (zh) | 云平台创建镜像的方法及系统 | |
CN113704301B (zh) | 异构计算平台的数据处理方法、装置、系统、设备及介质 | |
CN113366457A (zh) | 处理输入/输出存储指令 | |
CN114513545B (zh) | 请求处理方法、装置、设备及介质 | |
CN113366438A (zh) | 处理输入/输出存储指令 | |
CN113254223B (zh) | 一种系统重启后的资源分配方法、系统及相关组件 | |
CN115033393B (zh) | 批量请求下发的优先排队处理方法、装置、服务器及介质 | |
CN111310638A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN115981893A (zh) | 消息队列任务处理方法、装置、服务器及存储介质 | |
CN115629711A (zh) | 一种packet包写对齐方法、系统、装置及介质 | |
CN111562983B (zh) | 内存优化方法、装置、电子设备及存储介质 | |
CN112001837B (zh) | Cdvs多进程驱动方法、装置、电子设备及存储介质 | |
CN110688223B (zh) | 数据处理方法及相关产品 | |
CN113806055A (zh) | 一种轻量级任务调度方法、系统、装置及存储介质 | |
US9619277B2 (en) | Computer with plurality of processors sharing process queue, and process dispatch processing method | |
CN113407489A (zh) | 一种数据导入方法、装置、设备及计算机可读存储介质 | |
CN109656708B (zh) | Android的动画播放限制方法、存储介质、电子设备及系统 | |
CN112181640A (zh) | 一种任务处理方法及装置 | |
CN110955644A (zh) | 一种存储系统的io控制方法、装置、设备及存储介质 | |
CN111143078B (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN113094170B (zh) | 一种5g通信虚拟化网元的内存总线分配方法和终端 | |
US11112999B2 (en) | Optimizing I/O latency by software stack latency reduction in a cooperative thread processing model |
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 |