CN112416826A - 专用计算芯片、dma数据传输系统及方法 - Google Patents
专用计算芯片、dma数据传输系统及方法 Download PDFInfo
- Publication number
- CN112416826A CN112416826A CN202011316625.0A CN202011316625A CN112416826A CN 112416826 A CN112416826 A CN 112416826A CN 202011316625 A CN202011316625 A CN 202011316625A CN 112416826 A CN112416826 A CN 112416826A
- Authority
- CN
- China
- Prior art keywords
- dma
- queue
- ring buffer
- engine
- command packet
- 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.)
- Granted
Links
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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明提供一种专用计算芯片、DMA数据传输系统及方法,其中专用计算芯片包括:至少两个DMA引擎和负载均衡控制器,各DMA引擎用于执行DMA队列环形缓冲区中的命令包,实现系统内存和设备内存之间的数据拷贝,负载均衡控制器用于计算各DMA引擎的负载值,该负载值反映各DMA引擎的忙闲状态。基于本发明的专用计算芯片的DMA数据传输系统能够充分利用DMA资源,尽量让各DMA引擎并行工作,提高数据的传输性能。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种专用计算芯片、DMA数据传输系统及方法。
背景技术
在高性能计算过程中,参与运算的数据需要从CPU端的系统内存拷贝到计算芯片端的设备内存上,运算完毕还需要再将运算结果从设备内存拷贝到系统内存,这就涉及到CPU端和计算芯片端之间数据的拷贝问题。在高性能专用计算中,CPU端需要调用直接内存存取(Direct Memory Access,DMA)方法,CPU端与计算芯片端之间数据拷贝主要是通过计算芯片内的DMA引擎将计算的输入数据从系统内存传输到设备内存,计算完成后,DMA引擎再把输出数据传输回系统内存。一个计算芯片中可以有多个DMA引擎。目前的传输方法一般为:CPU端轮流在多个DMA引擎上创建DMA队列发包,即当GPU内部有2个DMA引擎时,第一个DMA队列在DMA0引擎上创建,第二个DMA队列在DMA1引擎上创建,第三个DMA队列在DMA0引擎上创建,第四个DMA队列在DMA1引擎上创建,依此类推。接着,CPU端将DMA命令包写到DMA队列的环形缓冲区,然后通知计算芯片中的DMA引擎执行数据拷贝。
由此可以看出,现有技术容易出现多个DMA引擎负载不均衡的问题,例如,当DMA0引擎上每个队列中的命令包的个数比较少,拷贝的数据量也比较少,而DMA1引擎上每个队列中的命令包的个数多,拷贝的数据量较大,若仍然在负载量大的DMA1上创建队列发包,则会导致发出的命令包迟迟得不到执行,甚至会被阻塞,此时整个拷贝时间就会延长,这种DMA引擎的负载不均衡会降低数据的传输效率。
发明内容
为解决上述问题,本发明提供了一种专用计算芯片、DMA数据传输系统及方法,能够提高数据的DMA传输效率。
第一方面,本发明提供一种专用计算芯片,包括:
至少两个直接内存存取DMA引擎和负载均衡控制器,各所述DMA引擎用于执行DMA队列环形缓冲区中的命令包,实现系统内存和设备内存之间的数据拷贝,所述负载均衡控制器用于计算各所述DMA引擎的负载值,所述负载值反映各所述DMA引擎的忙闲状态。
可选地,所述负载均衡控制器,用于根据DMA队列环形缓冲区中命令包的个数、命令包传输的数据量大小、特殊命令的权重以及DMA引擎的执行状况,计算各所述DMA引擎的负载值。
可选地,所述特殊命令包括:
semaphore wait/signal命令,所述semaphore wait/signal命令用于实现模块间的同步;
poll register命令,所述poll register命令用于轮询系统寄存器总线管理器SRBM寄存器空间;
poll memory命令,所述poll memory命令用于轮询内存空间。
可选地,所述专用计算芯片还包括:
计算单元,用于对输入的数据进行计算,并得到输出数据。
可选地,所述专用计算芯片为图像处理器GPU芯片。
第二方面,本发明提供一种DMA数据传输系统,包括:第一方面所提供的专用计算芯片,以及通用CPU芯片,
所述通用CPU芯片包括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数据传输系统还包括:
系统内存,用于存储所述通用CPU芯片使用的数据;
设备内存,用于存储所述专用计算芯片使用的数据。
第三方面,本发明提供一种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引擎的负载值,CPU端通过读取负载均衡控制器计算出的负载值获得负载值最小的DMA引擎,并在该DMA引擎上创建DMA队列,接着发命令包,让负载值最小的DMA引擎来执行。这样能够充分利用DMA资源,尽量让各DMA引擎并行工作,提高数据的传输性能,进而提高计算任务的性能。
附图说明
图1为本发明一实施例提供的专用计算芯片的结构示意图;
图2为本发明一实施例提供的DMA数据传输系统的结构示意图;
图3为本发明一实施例提供的通用CPU芯片的内部结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了本发明实施例提供的一种专用计算芯片的结构示意图。如图1所示,本发明实施例提供了一种专用计算芯片10,包括:至少两个直接内存存取DMA引擎,图1中作为示例只示出了两个DMA引擎,DMA引擎11和DMA引擎12,专用计算芯片10还包括负载均衡控制器13,连接于通信总线14上。本实施例中,DMA引擎11和12用于执行DMA队列环形缓冲区中的命令包,实现系统内存和设备内存之间数据的拷贝,负载均衡控制器13用于计算DMA引擎11和12的负载值,计算出的负载值可以反映各DMA引擎的忙闲状态。
作为一种实施方式,负载均衡控制器13根据不同负载因子对DMA引擎忙闲状态的影响程度来设计。DMA引擎的主要功能是数据拷贝,因此,影响DMA引擎忙闲状态的负载因子主要包括:DMA队列环形缓冲区中命令包的个数以及命令包传输的数据量大小,这两个因素对DMA引擎负载影响最大。其次,一些特殊命令也会影响DMA引擎负载。例如semaphorewait/signal命令,此命令的功能主要是完成模块间的同步,在执行过程中需要等待。又例如,poll register命令,此命令会轮询系统寄存器总线管理器(SRBM)寄存器空间;以及poll memory命令,此命令会轮询内存空间,因配置的不同,可能会反复轮询和比较值,比较耗时。根据这三类命令的特征来分配权重,负载均衡控制器13计算每个DMA引擎的负载值,计算出的负载值可以反映每个DMA引擎的忙闲状态。
可以看出,本实施例提供的一种专用计算芯片,在总线上增加了负载均衡控制器,可以计算每个DMA引擎的负载值,从而对每个DMA引擎的忙闲状态有一个清楚的认知。
另外说明的是,本发明实施例的专用计算芯片10可以是一种图像处理器GPU芯片。参考图1,专用计算芯片10还包括计算单元15,计算单元15用于对输入的数据进行计算,并得到输出数据。
基于上述实施例提供的专用计算芯片,本发明实施例提供一种DMA数据传输系统,如图2所示,该DMA数据传输系统包括:专用计算芯片10、通用CPU芯片20、系统内存30和设备内存40,
专用计算芯片10包括:至少两个DMA引擎,为简便只示出了DMA引擎11和DMA引擎12,专用计算芯片10还包括负载均衡控制器13,连接于通信总线14上。本实施例中,DMA引擎11和12用于执行DMA队列环形缓冲区中的命令包,实现系统内存和设备内存之间数据的拷贝,负载均衡控制器13用于计算DMA引擎11和12的负载值,计算出的负载值可以反映各DMA引擎的忙闲状态。
参考图3,通用CPU芯片20包括DMA传输控制装置21,该DMA传输控制装置21进一步可以包括:
DMA引擎确定模块211,用于读取负载均衡控制器13计算得到的各DMA引擎的负载值,确定负载值最小的DMA引擎;
队列创建模块212,用于在系统内存上分配环形缓冲区、分配存放读指针值的地址空间以及分配存放写指针值的地址空间,然后在DMA引擎上创建DMA队列,并将环形缓冲区的地址和大小、存放读指针值的地址以及存放写指针值的地址写入DMA引擎的DMA队列相关寄存器,其中所述DMA引擎为负载值最小的DMA引擎;
写模块213,用于向DMA环形缓冲区写入命令包;
相对地,专用计算芯片10上的负载值最小的DMA引擎用于执行DMA队列环形缓冲区中的命令包,实现系统内存和设备内存之间数据的拷贝。
系统内存30用于存储通用CPU芯片20使用的数据;设备内存40用于存储专用计算芯片10使用的数据。设备内存40可以是HBM(High Bandwidth Memory,高带宽存储器)。
进一步地,通用CPU芯片20建立DMA队列环形缓冲区以及读、写指针,在DMA引擎上创建DMA队列,DMA队列包括:DMA队列环形缓冲区,读指针,写指针。每个DMA队列对应指定的DMA引擎,由指定的DMA引擎执行DMA队列环形缓冲区中的命令包,实现数据拷贝。写模块213向DMA队列环形缓冲区写入命令包具体包括:写模块213读DMA队列的读指针,判断DMA队列环形缓冲区是否不为满,若DMA队列环形缓冲区不满,则向DMA队列环形缓冲区中写入命令包,并更新DMA队列的写指针;若DMA队列环形缓冲区满,则通知负载值最小的DMA引擎执行命令包及更新DMA队列的读指针,并在负载值最小的DMA引擎执行命令包的过程中轮询DMA队列的读指针,当DMA队列环形缓冲区不满时,继续向DMA队列环形缓冲区写入命令包,并更新DMA队列的写指针。
相对地,专用计算芯片10上的负载值最小的DMA引擎执行该引擎上的DMA队列环形缓冲区中的命令包,实现数据系统内存和设备内存之间的数据拷贝,具体包括:查询DMA队列的写指针,并比较读指针,判断DMA队列环形缓冲区是否为空,若DMA队列环形缓冲区不空,则从DMA队列环形缓冲区读取命令包,并执行命令包;若DMA队列环形缓冲区空,则DMA引擎停止执行命令包,处于空闲状态。
本发明实施例提供的DMA数据传输系统,在计算芯片内部总线上接一个DMA负载均衡控制器,该控制器计算每个DMA引擎的负载值,CPU端通过读取负载均衡控制器计算出的负载值获得负载值最小的DMA引擎,并在该DMA引擎上创建DMA队列,接着发命令包,让负载值最小的DMA引擎来执行。这样能够充分利用DMA资源,尽量让各DMA引擎并行工作,保持负载均衡,提高数据的传输性能,进而提高计算任务的性能。
以上面实施例提供的DMA数据传输系统为硬件基础,本发明实施例提供一种DMA数据传输方法,该方法包括:
步骤301,DMA引擎确定模块读取负载均衡控制器计算得到的各DMA引擎的负载值,确定负载值最小的DMA引擎。
步骤302,队列创建模块在系统内存上分配环形缓冲区、分配存放读指针值的地址空间以及分配存放写指针值的地址空间,然后在DMA引擎上创建DMA队列,并将环形缓冲区的地址和大小、存放读指针值的地址以及存放写指针值的地址写入DMA引擎的DMA队列相关寄存器,其中所述DMA引擎为负载值最小的DMA引擎。
首先在系统内存分配环形缓冲区,写指针地址和读指针地址,写指针指向CPU可写命令包的位置,读指针指向GPU可读命令包的位置,命令包中包含待拷贝数据的源地址,目标地址,以及待拷贝的数据量,读指针由GPU端更新,写指针由CPU端更新。然后在DMA引擎上创建DMA队列,在系统内存上创建的环形缓冲区与DMA队列对应。CPU端将环形缓冲区的地址及大小和读/写指针地址写到DMA引擎的与DMA队列相关的寄存器中,这样DMA引擎就知道DMA队列对应的环形缓冲区的地址及大小和读/写指针地址了。
步骤303,写模块向DMA队列环形缓冲区写入命令包,以及同步进行地,专用计算芯片上的负载值最小的DMA引擎读取DMA队列环形缓冲区中的命令包,执行命令包,更新读指针,实现系统内存到设备内存的数据拷贝。
作为一种实施方式,写模块向DMA队列环形缓冲区写入命令包具体包括:写模块读DMA队列的读指针,判断DMA队列环形缓冲区是否不为满,若DMA队列环形缓冲区不满,则向DMA队列环形缓冲区中写入命令包,并更新写指针;若DMA队列环形缓冲区满,则通知负载值最小的DMA引擎执行命令包及更新读指针,并在负载值最小的DMA引擎执行命令包的过程中轮询DMA队列的读指针,当DMA队列环形缓冲区不满时,继续向DMA队列环形缓冲区写入命令包,并更新DMA队列的写指针。
相对地,专用计算芯片10上的负载值最小的DMA引擎执行该引擎上的DMA队列环形缓冲区中的命令包,实现数据系统内存和设备内存之间的数据拷贝,具体包括:查询DMA队列的写指针,并比较读指针,判断DMA队列环形缓冲区是否为空,若DMA队列环形缓冲区不空,则从DMA队列环形缓冲区读取命令包,执行命令包;若DMA队列环形缓冲区空,则DMA引擎停止执行命令包,处于空闲状态。
本发明实施例提供的DMA数据传输方法,在计算芯片内部总线上接一个DMA负载均衡控制器,该控制器计算每个DMA引擎的负载值,CPU端通过读取负载均衡控制器计算出的负载值获得负载值最小的DMA引擎,并在该DMA引擎上创建DMA队列,接着发命令包,让负载值最小的DMA引擎来执行。这样能够充分利用DMA资源,尽量让各DMA引擎并行工作,保持负载均衡,提高数据的传输性能,进而提高计算任务的性能。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (10)
1.一种专用计算芯片,其特征在于,包括:
至少两个直接内存存取DMA引擎和负载均衡控制器,各所述DMA引擎用于执行DMA队列环形缓冲区中的命令包,实现系统内存和设备内存之间的数据拷贝,所述负载均衡控制器用于计算各所述DMA引擎的负载值,所述负载值反映各所述DMA引擎的忙闲状态。
2.根据权利要求1所述的专用计算芯片,其特征在于,所述负载均衡控制器,用于根据DMA队列环形缓冲区中命令包的个数、命令包传输的数据量大小、特殊命令的权重以及DMA引擎的执行状况,计算各所述DMA引擎的负载值。
3.根据权利要求2所述的专用计算芯片,其特征在于,所述特殊命令包括:
semaphore wait/signal命令,所述semaphore wait/signal命令用于实现模块间的同步;
poll register命令,所述poll register命令用于轮询系统寄存器总线管理器SRBM寄存器空间;
poll memory命令,所述poll memory命令用于轮询内存空间。
4.根据权利要求1所述的专用计算芯片,其特征在于,所述专用计算芯片还包括:
计算单元,用于对输入的数据进行计算,并得到输出数据。
5.根据权利要求1所述的专用计算芯片,其特征在于,所述专用计算芯片为图像处理器GPU芯片。
6.一种DMA数据传输系统,其特征在于,包括:如权利要求1至5任一项所述的专用计算芯片,以及通用CPU芯片,所述通用CPU芯片包括DMA传输控制装置,所述DMA传输控制装置进一步包括:
DMA引擎确定模块,用于读取所述负载均衡控制器计算得到的各DMA引擎的负载值,确定负载值最小的DMA引擎;
队列创建模块,用于在系统内存上分配环形缓冲区、分配存放读指针值的地址空间以及分配存放写指针值的地址空间,然后在DMA引擎上创建DMA队列,并将环形缓冲区的地址和大小、存放读指针值的地址以及存放写指针值的地址写入DMA引擎的DMA队列相关寄存器,其中所述DMA引擎为负载值最小的DMA引擎;
写模块,用于向DMA队列环形缓冲区写入命令包;
相对地,所述专用计算芯片上的所述负载值最小的DMA引擎用于执行DMA队列环形缓冲区中的命令包,实现系统内存与设备内存之间的数据拷贝。
7.根据权利要求6所述的DMA数据传输系统,其特征在于,所述写模块用于读所述DMA队列的读指针,判断所述DMA队列环形缓冲区是否不为满,若所述DMA队列环形缓冲区不满,则向所述DMA队列环形缓冲区中写入命令包,并更新所述DMA队列的写指针;若所述DMA队列环形缓冲区满,则通知负载值最小的DMA引擎去读DMA队列环形缓冲区中存放的命令包、执行命令包及更新所述DMA队列的读指针,并在所述负载值最小的DMA引擎执行命令包的过程中轮询DMA队列的读指针,当所述DMA队列环形缓冲区不满时,继续向所述DMA队列环形缓冲区写入命令包,并更新所述DMA队列的写指针;
相对地,所述专用计算芯片上的所述负载值最小的DMA引擎用于查询所述DMA队列的写指针,并比较读指针,判断所述DMA队列环形缓冲区是否为空,若所述DMA队列环形缓冲区不空,则从所述DMA队列环形缓冲区读取命令包,并执行命令包,实现系统内存与设备内存之间的数据拷贝;若所述DMA队列环形缓冲区空,则DMA引擎停止执行命令包,处于空闲状态。
8.根据权利要求6所述的DMA数据传输系统,其特征在于,还包括:
系统内存,用于存储所述通用CPU芯片使用的数据;
设备内存,用于存储所述专用计算芯片使用的数据。
9.一种DMA数据传输方法,其特征在于,采用如权利要求6所述的DMA数据传输系统来实现,所述方法包括:
DMA引擎确定模块读取所述负载均衡控制器计算得到的各DMA引擎的负载值,确定负载值最小的DMA引擎;
队列创建模块在系统内存上分配环形缓冲区、分配存放读指针值的地址空间以及分配存放写指针值的地址空间,然后在DMA引擎上创建DMA队列,并将环形缓冲区的地址和大小、存放读指针值的地址以及存放写指针值的地址写入DMA引擎的DMA队列相关寄存器,其中所述DMA引擎为负载值最小的DMA引擎;
写模块向所述DMA队列环形缓冲区写入命令包,以及所述专用计算芯片上的所述负载值最小的DMA引擎执行DMA队列环形缓冲区中的命令包,实现系统内存与设备内存之间的数据拷贝。
10.根据权利要求9所述的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引擎停止执行命令包,处于空闲状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011316625.0A CN112416826B (zh) | 2020-11-20 | 2020-11-20 | 专用计算芯片、dma数据传输系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011316625.0A CN112416826B (zh) | 2020-11-20 | 2020-11-20 | 专用计算芯片、dma数据传输系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112416826A true CN112416826A (zh) | 2021-02-26 |
CN112416826B CN112416826B (zh) | 2023-09-22 |
Family
ID=74777195
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011316625.0A Active CN112416826B (zh) | 2020-11-20 | 2020-11-20 | 专用计算芯片、dma数据传输系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112416826B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114138702A (zh) * | 2022-01-29 | 2022-03-04 | 阿里云计算有限公司 | 计算系统、pci设备管理器及其初始化方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6301639B1 (en) * | 1999-07-26 | 2001-10-09 | International Business Machines Corporation | Method and system for ordering priority commands on a commodity disk drive |
US20040199916A1 (en) * | 1998-04-03 | 2004-10-07 | Alexander Joffe | Systems and methods for multi-tasking, resource sharing, and execution of computer instructions |
JP2006285738A (ja) * | 2005-04-01 | 2006-10-19 | Canon Inc | 複合機のソフトウェア起動方式 |
TW201324360A (zh) * | 2011-12-08 | 2013-06-16 | Chunghwa Telecom Co Ltd | 交付背景執行包覆模組 |
CN104714836A (zh) * | 2013-12-12 | 2015-06-17 | 国际商业机器公司 | 用于聚结内存事务的方法和系统 |
CN107193767A (zh) * | 2017-05-25 | 2017-09-22 | 北京计算机技术及应用研究所 | 一种双控制器存储系统缓存镜像的数据传输系统 |
CN109144742A (zh) * | 2017-06-15 | 2019-01-04 | 北京忆芯科技有限公司 | 通过队列交换信息的方法和处理队列的系统 |
CN111240813A (zh) * | 2018-11-29 | 2020-06-05 | 杭州嘉楠耘智信息科技有限公司 | 一种dma调度方法、装置和计算机可读存储介质 |
-
2020
- 2020-11-20 CN CN202011316625.0A patent/CN112416826B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040199916A1 (en) * | 1998-04-03 | 2004-10-07 | Alexander Joffe | Systems and methods for multi-tasking, resource sharing, and execution of computer instructions |
US6301639B1 (en) * | 1999-07-26 | 2001-10-09 | International Business Machines Corporation | Method and system for ordering priority commands on a commodity disk drive |
JP2006285738A (ja) * | 2005-04-01 | 2006-10-19 | Canon Inc | 複合機のソフトウェア起動方式 |
TW201324360A (zh) * | 2011-12-08 | 2013-06-16 | Chunghwa Telecom Co Ltd | 交付背景執行包覆模組 |
CN104714836A (zh) * | 2013-12-12 | 2015-06-17 | 国际商业机器公司 | 用于聚结内存事务的方法和系统 |
CN107193767A (zh) * | 2017-05-25 | 2017-09-22 | 北京计算机技术及应用研究所 | 一种双控制器存储系统缓存镜像的数据传输系统 |
CN109144742A (zh) * | 2017-06-15 | 2019-01-04 | 北京忆芯科技有限公司 | 通过队列交换信息的方法和处理队列的系统 |
CN111240813A (zh) * | 2018-11-29 | 2020-06-05 | 杭州嘉楠耘智信息科技有限公司 | 一种dma调度方法、装置和计算机可读存储介质 |
Non-Patent Citations (2)
Title |
---|
HYONG-YOUB KIM等: ""Exploiting task-level concurrency in a programmable network interface"", 《ACM SIGPLAN NOTICES》 * |
汪高翔等: ""一种改进的LVS动态负载均衡方案"", 《第十九届全国青年通信学术年会》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114138702A (zh) * | 2022-01-29 | 2022-03-04 | 阿里云计算有限公司 | 计算系统、pci设备管理器及其初始化方法 |
CN114138702B (zh) * | 2022-01-29 | 2022-06-14 | 阿里云计算有限公司 | 计算系统、pci设备管理器及其初始化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112416826B (zh) | 2023-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7953915B2 (en) | Interrupt dispatching method in multi-core environment and multi-core processor | |
US20190361708A1 (en) | Embedded scheduling of hardware resources for hardware acceleration | |
US8239873B2 (en) | Speedy event processing | |
US9454401B2 (en) | Resource allocation method and apparatus of GPU | |
US20120297216A1 (en) | Dynamically selecting active polling or timed waits | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
US20240054059A1 (en) | Test Method and Multi-Processor SOC Chip | |
US10545890B2 (en) | Information processing device, information processing method, and program | |
US9547576B2 (en) | Multi-core processor system and control method | |
CN112416826B (zh) | 专用计算芯片、dma数据传输系统及方法 | |
CN116089477B (zh) | 分布式训练方法及系统 | |
CN115934625B (zh) | 一种用于远程直接内存访问的敲门铃方法、设备及介质 | |
CN111159124B (zh) | Linux内核文件系统异步写缓存方法、装置及介质 | |
WO2018144405A1 (en) | Systems and methods for client-side throttling after server handling in a trusted client component | |
CN109992539B (zh) | 双主机协同工作装置 | |
CN109522102B (zh) | 一种基于i/o调度的多任务外存模式图处理方法 | |
CN112949847B (zh) | 神经网络算法加速系统、调度系统及调度方法 | |
CN114371920A (zh) | 一种基于图形处理器加速优化的网络功能虚拟化系统 | |
CN113238869A (zh) | 一种计算加速方法、设备和系统及存储介质 | |
CN117312202B (zh) | 片上系统和用于片上系统的数据传输方法 | |
US20230359490A1 (en) | Device, system and method for scheduling job requests | |
CN116881191B (zh) | 数据处理方法、装置、设备及存储介质 | |
US7111301B1 (en) | Request and completion queue load balancing | |
JP6698353B2 (ja) | 情報処理装置、dma転送制御方法およびdma転送制御プログラム | |
WO2021245758A1 (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 |