CN115509972A - 实现dma高效收发报文的方法及应用 - Google Patents

实现dma高效收发报文的方法及应用 Download PDF

Info

Publication number
CN115509972A
CN115509972A CN202211250793.3A CN202211250793A CN115509972A CN 115509972 A CN115509972 A CN 115509972A CN 202211250793 A CN202211250793 A CN 202211250793A CN 115509972 A CN115509972 A CN 115509972A
Authority
CN
China
Prior art keywords
address
message
descriptor
dma
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.)
Pending
Application number
CN202211250793.3A
Other languages
English (en)
Inventor
何志川
李磊
贾复山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Centec Communications Co Ltd
Original Assignee
Suzhou Centec Communications Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Centec Communications Co Ltd filed Critical Suzhou Centec Communications Co Ltd
Priority to CN202211250793.3A priority Critical patent/CN115509972A/zh
Publication of CN115509972A publication Critical patent/CN115509972A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

本发明公开了一种实现DMA高效收发报文的方法及应用,收取报文的方法包括以下步骤:CPU为每个DMA通道分配一组地址连续的描述符,并为每个DMA通道分配一个描述符的基地址;CPU划分多个block来存放描述符及其对应的数据地址,并为每个block分配一个数据地址的基地址;DMA控制器从DMA通道获取描述符的基地址和数据地址的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,进行对报文的处理并通知CPU处理;CPU根据所述描述符的索引和描述符的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,进行对报文的处理,完成报文的收取。该方法能够有效减少DMA控制器和CPU交互时对内存的直接访问,可显著提升收发报文的性能。

Description

实现DMA高效收发报文的方法及应用
技术领域
本发明是关于报文收发领域,特别是关于一种实现DMA高效收发报文的方法及应用。
背景技术
DMA控制器和CPU之间的交互使用描述符(Descriptor)进行通信,描述符是一块特定格式的内存。Descriptor以Ring的方式实现,存放在CPU侧的系统Memory里。每个DMA控制器的通道都有各自的DescriptorRing,通过Descriptor中的信息,DMA控制器将报文存放到指定的内存地址,处理完成后通知CPU取数据,CPU再从指定的内存地址中取出报文。发送方向处理类似。
当前Descriptor的格式中必须但不限于包含如下信息:1)donebit:表示DMA控制器已经处理完,可以由CPU来处理;2)size:该描述符所包含的报文的实际长度;3)dataaddress:表示实际报文存放的DDR的内存地址。其中DataAddress是每个描述符单独控制,位宽超过32bit,非常占用描述符的空间,而且DMA控制器和CPU都需要反复去读取描述符来获取该地址。在高速收发报文的场景中,对内存的访问是影响性能的一个关键因素。
目前现有技术在收发报文的时候,都需要DMA控制器和CPU去内存中读取描述符中的地址信息,在一个报文占用一个描述符的情况下,每个报文都需要去访问内存获取该地址信息,影响收发报文性能。
公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。
发明内容
本发明的目的在于提供一种实现DMA高效收发报文的方法及应用,其能够解决DMA控制器和CPU频繁对内存进行直接访问进而影响收发报文性能的问题。
为实现上述目的,本发明的实施例提供了一种实现DMA高效收取报文的方法。所述方法包括:CPU为每个DMA通道分配一组地址连续的描述符,并为每个DMA通道分配一个描述符的基地址;CPU划分多个block来存放描述符及其对应的数据地址,并为每个block分配一个数据地址的基地址;DMA控制器从DMA通道获取描述符的基地址和数据地址的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,进行对报文的搬移并通知CPU处理;以及CPU根据所述描述符的索引和描述符的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,完成报文的收取。
在本发明的一个或多个实施方式中,所述方法还包括:在计算得到具体的描述符地址和数据地址后,DMA控制器将报文搬移到数据地址,回写对应的描述符,通知CPU处理。
在本发明的一个或多个实施方式中,所述方法还包括:CPU收到DMA完成的信号,在计算得到具体描述符的地址和数据的地址后,根据描述符中指定的报文长度,从数据地址中取出报文,对报文进行处理,完成收包。
在本发明的另一个方面当中,提供了一种实现DMA高效收取报文的装置,其包括block模块和报文收取模块。
block模块,用于CPU划分block为单位,存放描述符对应的数据地址;
报文收取模块,用于在DMA控制器收取报文时,DMA控制器从DMA通道获取描述符的基地址和数据地址的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,进行对报文的搬移并通知CPU处理;以及CPU根据所述描述符的索引和描述符的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,完成报文的收取。
在本发明的一个或多个实施方式中,所述报文收取模块还用于:在计算得到具体的描述符地址和数据地址后,DMA控制器将报文搬移到数据地址,回写对应的描述符,通知CPU处理。
在本发明的一个或多个实施方式中,所述报文收取模块还用于:CPU收到DMA完成的信号,在计算得到具体描述符的地址和数据的地址后,根据描述符中指定的报文长度,从数据地址中取出报文,对报文进行处理,完成收包。
本发明的另一方面还提供了一种实现DMA高效发送报文的方法。所述方法包括:CPU为每个DMA通道分配一组地址连续的描述符,并为每个DMA通道分配一个描述符的基地址;CPU划分多个block来存放描述符及其对应的数据地址,并为每个block分配一个数据地址的基地址;CPU从DMA通道获取描述符的基地址和数据地址的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,进行对报文的写入并通知DMA发送报文;以及DMA控制器从DMA通道获取描述符的基地址和数据地址的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,获取待发送的报文数据及长度,完成报文的发送。
在本发明的一个或多个实施方式中,所述方法还包括:在计算得到具体的描述符地址和数据地址后,CPU将报文写入指定的数据地址,并写入发送报文的长度,通知DMA发送报文。
在本发明的另一个方面当中,提供了一种实现DMA高效发送报文的装置,其包括block模块和报文发送模块。
block模块,用于CPU划分block为单位,存放描述符对应的数据地址;
报文发送模块,用于在DMA控制器发送报文时,CPU从DMA通道获取描述符的基地址和数据地址的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,进行对报文的写入并通知DMA发送报文;以及DMA控制器从DMA通道获取描述符的基地址和数据地址的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,获取待发送的报文数据及长度,完成报文的发送。
在本发明的一个或多个实施方式中,所述报文发送模块还用于:在计算得到具体的描述符地址和数据地址后,CPU将报文写入指定的数据地址,并写入发送报文的长度,通知DMA发送报文。
在本发明的另一个方面当中,提供了一种电子设备,包括:至少一个处理器;以及存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如所述的实现DMA高效收取报文的方法或所述的实现DMA高效发送报文的方法。
在本发明的另一个方面当中,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如所述的实现DMA高效收取报文的方法或所述的实现DMA高效发送报文的方法的步骤。
与现有技术相比,根据本发明实施方式的实现DMA高效收发报文的方法,提供了一种对描述符和数据地址进行切片化管理的机制,将数据地址从描述符信息中提取出来,对DMA描述符采用切片后的block为管理单位,按每个切片化block分配一个数据地址基址,同一个block内数据地址通过基址加偏移的方式计算得到,减少了DMA控制器和CPU交互时对内存的直接访问,在高速收发报文的场景中,可显著提升收发报文的性能。
附图说明
图1是根据本发明一实施方式的实现DMA高效收取报文的方法的流程图;
图2是根据本发明一实施方式的实现DMA高效发送报文的方法的流程图;
图3是根据本发明一实施方式的实现DMA高效收发报文的方法的切片化管理示意图;
图4是根据本发明一实施方式的实现DMA高效收取报文的装置的结构图;
图5是根据本发明一实施方式的实现DMA高效发送报文的装置的结构图;
图6是根据本发明一实施方式的实现DMA高效收发报文的计算设备的硬件结构图。
具体实施方式
下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。
以下结合附图,详细说明本发明各实施例提供的技术方案。
实施例1
如图1和图3所示,介绍本发明的一个实施例中实现DMA高效收取报文的方法,该方法包括如下步骤。
在步骤S101中,CPU为每个DMA通道分配一组地址连续的描述符,并为每个DMA通道分配一个描述符的基地址。
DMA,即DirectMemoryAccess,直接内存访问,是一种CPU与外设交互的一种方式。和传统的IO相比,DMA有如下优点:1)一个是传输单位:由单个字节到数据块(而数据块的大小则可以由使用者根据实际需求自己定义);2)数据从设备直接到内存,不经过CPU;3)不通过中断的方式来让CPU干预,省略了保护现场和恢复现场的过程;4)另一个是原来由CPU做的事情由DMAC代替,即从设备直接到内存的过程由DMAC来做,而不再是CPU。
DMA控制器和CPU之间的交互使用描述符(Descriptor)进行通信,描述符是一块特定格式的内存。Descriptor以Ring的方式实现,存放在CPU侧的系统Memory里。每个DMA控制器的通道都有各自的DescriptorRing,通过Descriptor中的信息,DMA控制器将报文存放到指定的内存地址,处理完成后通知CPU取数据,CPU再从指定的内存地址中取出报文。发送方向处理类似。
当前Descriptor的格式中必须但不限于包含如下信息:1)donebit:表示DMA控制器已经处理完,可以由CPU来处理;2)size:该描述符所包含的报文的实际长度;3)dataaddress:表示实际报文存放的DDR的内存地址。其中DataAddress是每个描述符单独控制,位宽超过32bit,非常占用描述符的空间,而且DMA控制器和CPU都需要反复去读取描述符来获取该地址。在高速收发报文的场景中,对内存的访问是影响性能的一个关键因素。
目前现有技术在收发报文的时候,都需要DMA控制器和CPU去内存中读取描述符中的地址信息,在一个报文占用一个描述符的情况下,每个报文都需要去访问内存获取该地址信息,影响收发报文性能。
在本实施例中,CPU分配描述符的地址空间,为每个DMA通道分配一组描述符,且描述符之间地址连续,并为每个DMA通道分配一个描述符的基地址。
在步骤S102中,CPU划分多个block来存放描述符及其对应的数据地址,并为每个block分配一个数据地址的基地址。
对于block(块),磁盘有一个Blocksize的概念,它是磁盘读写数据的最小单位。构建在这样的磁盘上的文件系统也是通过块来管理数据的,文件系统的块通常是磁盘块的整数倍。文件系统的块一般为几千字节,磁盘块一般为512字节。HDFS也有Block的概念,但它的块是一个很大的单元,默认是64MB。像硬盘中的文件系统一样,在HDFS中的文件将会按块大小进行分解,并作为独立的单元进行存储。
在本实施例中,CPU分配数据的地址空间,对描述符进行切片化管理,将描述符分配到不同的block内,每个block分配一组连续的地址空间用于存放数据,同时为每个block分配一个数据地址的基地址。通过步骤S101和步骤S102可以从DMA通道获取描述符的基地址和数据的基地址。
具体的,在对描述符进行切片化管理时,例如以1ksize为单位,划分出相同大小的block,将描述符分配到不同的block内,每个block分配一组连续的地址空间用于存放数据,即每个block用于管理了一组连续的描述符和数据地址。
在步骤S103中,DMA控制器从DMA通道获取描述符的基地址和数据地址的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,进行对报文的搬移并通知CPU处理。
在使用DMA控制器进行传输时,需要开辟一块内存,这块内存存放的就是DMA描述符。在DMA控制器进行工作时,需要程序将DMA描述符的地址设置到DMA硬件描述符地址寄存器中。这样,当使能DMA控制器开始工作后,会读取DMA硬件描述符地址寄存器中的内存地址并读取相应的DMA描述符,根据DMA描述符的所描述的地址和大小进行传输。当完成一个DMA描述符的传输后会根据情况读取下一个DMA描述符。
DMA控制器可以同时进行的传输个数是有限的,每一个传输都需要使用到DMA物理通道。DMA物理通道的数量决定DMA控制器能够同时传输的任务量。在软件上DMA控制器会为外设分配一个DMA虚拟通道,这个虚拟通道是根据DMArequest信号来区分。通常来讲,DMA物理通道是DMA控制器提供的服务,外设通过申请DMA通道,如果申请成功将返回DMA虚拟通道,该DMA虚拟通道绑定了一个DMA物理通道。这样DMA控制器为外设提供了DMA服务,当外设需要传输数据时,对虚拟通道进行操作即可,但本质上的工作由物理通道来完成。
在本实施例中,在计算得到具体的描述符地址和数据地址后,DMA控制器将报文搬移到数据地址,回写对应的描述符,通知CPU处理。
在步骤S104中,CPU根据所述描述符的索引和描述符的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,完成报文的收取。
在本实施例中,CPU收到DMA完成的信号,在计算得到具体描述符的地址和数据的地址后,根据描述符中指定的报文长度,从数据地址中取出报文,对报文进行处理,完成收包。
如图4所示,介绍根据本发明具体实施方式的实现DMA高效收取报文的装置。
在本发明的实施方式中,提供了一种实现DMA高效收取报文的装置,其包括block模块401和报文收取模块402。
block模块401,用于CPU划分block为单位,存放描述符对应的数据地址;
报文收取模块402,用于在DMA控制器收取报文时,CPU从DMA通道获取描述符的基地址和数据地址的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,进行对报文的写入并通知DMA发送报文;以及DMA控制器从DMA通道获取描述符的基地址和数据地址的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,获取待发送的报文数据及长度,完成报文的发送。
报文收取模块402还用于:在计算得到具体的描述符地址和数据地址后,DMA控制器将报文搬移到数据地址,回写对应的描述符,通知CPU处理。
报文收取模块402还用于:CPU收到DMA完成的信号,在计算得到具体描述符的地址和数据的地址后,根据描述符中指定的报文长度,从数据地址中取出报文,对报文进行处理,完成收包。
实施例2
如图2和图3所示,介绍本发明的一个实施例中实现DMA高效发送报文的方法,该方法包括如下步骤。
在步骤S201中,CPU为每个DMA通道分配一组地址连续的描述符,并为每个DMA通道分配一个描述符的基地址。
在本实施例中,CPU分配描述符的地址空间,为每个DMA通道分配一组描述符,且描述符之间地址连续,并为每个DMA通道分配一个描述符的基地址。
在步骤S202中,CPU划分多个block来存放描述符及其对应的数据地址,并为每个block分配一个数据地址的基地址。
在本实施例中,CPU分配数据的地址空间,对描述符进行切片化管理,将描述符分配到不同的block内,每个block分配一组连续的地址空间用于存放数据,同时为每个block分配一个数据地址的基地址。通过步骤S201和步骤S202可以从DMA通道获取描述符的基地址和数据的基地址。
具体的,在对描述符进行切片化管理时,例如以1ksize为单位,划分出相同大小的block,将描述符分配到不同的block内,每个block分配一组连续的地址空间用于存放数据,即每个block用于管理了一组连续的描述符和数据地址。
在步骤S203中,CPU从DMA通道获取描述符的基地址和数据地址的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,进行对报文的写入并通知DMA发送报文。
在本实施例中,在计算得到具体的描述符地址和数据地址后,CPU将报文写入指定的数据地址,并写入发送报文的长度,通知DMA发送报文。
在步骤S204中,DMA控制器从DMA通道获取描述符的基地址和数据地址的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,获取待发送的报文数据及长度,完成报文的发送。
如图5所示,介绍根据本发明具体实施方式的实现DMA高效发送报文的装置。
在本发明的实施方式中,提供了一种实现DMA高效发送报文的装置,其包括block模块501和报文发送模块502。
block模块501,用于CPU划分block为单位,存放描述符对应的数据地址;
报文发送模块502,用于在DMA控制器发送报文时,CPU从DMA通道获取描述符的基地址和数据地址的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,进行对报文的写入并通知DMA发送报文;以及DMA控制器从DMA通道获取描述符的基地址和数据地址的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,获取待发送的报文数据及长度,完成报文的发送。
报文发送模块502还用于:在计算得到具体的描述符地址和数据地址后,CPU将报文写入指定的数据地址,并写入发送报文的长度,通知DMA发送报文。
图6示出了根据本说明书的实施例的用于实现DMA高效收发报文的计算设备60的硬件结构图。如图6所示,计算设备60可以包括至少一个处理器601、存储器602(例如非易失性存储器)、内存603和通信接口604,并且至少一个处理器601、存储器602、内存603和通信接口604经由总线605连接在一起。至少一个处理器601执行在存储器602中存储或编码的至少一个计算机可读指令。
应该理解,在存储器602中存储的计算机可执行指令当执行时使得至少一个处理器601进行本说明书的各个实施例中以上结合图1-6描述的各种操作和功能。
在本说明书的实施例中,计算设备60可以包括但不限于:个人计算机、服务器计算机、工作站、桌面型计算机、膝上型计算机、笔记本计算机、移动计算设备、智能电话、平板计算机、蜂窝电话、个人数字助理(PDA)、手持装置、消息收发设备、可佩戴计算设备、消费电子设备等等。
根据一个实施例,提供了一种比如机器可读介质的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-6描述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
根据本发明实施方式的实现DMA高效收发报文的方法及应用,其提供了一种对描述符和数据地址进行切片化管理的机制,将数据地址从描述符信息中提取出来,对DMA描述符采用切片后的block为管理单位,按每个切片化block分配一个数据地址基址,同一个block内数据地址通过基址加偏移的方式计算得到,减少了DMA控制器和CPU交互时对内存的直接访问,在高速收发报文的场景中,可显著提升收发报文的性能。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。

Claims (9)

1.一种实现DMA高效收取报文的方法,其特征在于,所述方法包括:
CPU为每个DMA通道分配一组地址连续的描述符,并为每个DMA通道分配一个描述符的基地址;
CPU划分多个block来存放描述符及其对应的数据地址,并为每个block分配一个数据地址的基地址;
DMA控制器从DMA通道获取描述符的基地址和数据地址的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,进行对报文的搬移并通知CPU处理;以及
CPU根据所述描述符的索引和描述符的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,完成报文的收取。
2.如权利要求1所述的一种实现DMA高效收取报文的方法,其特征在于,所述方法还包括:
在计算得到具体的描述符地址和数据地址后,DMA控制器将报文搬移到该具体的数据地址,回写对应的描述符,通知CPU处理。
3.如权利要求1所述的一种实现DMA高效收取报文的方法,其特征在于,所述方法还包括:
CPU收到DMA完成的信号,在计算得到具体描述符的地址和数据的地址后,根据描述符中指定的报文长度,从数据地址中取出报文,对报文进行处理,完成收包。
4.一种实现DMA高效发送报文的方法,其特征在于,所述方法包括:
CPU为每个DMA通道分配一组地址连续的描述符,并为每个DMA通道分配一个描述符的基地址;
CPU划分多个block来存放描述符及其对应的数据地址,并为每个block分配一个数据地址的基地址;
CPU从DMA通道获取描述符的基地址和数据地址的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,进行对报文的写入并通知DMA发送报文;以及
DMA控制器从DMA通道获取描述符的基地址和数据地址的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,获取待发送的报文数据及长度,完成报文的发送。
5.如权利要求4所述的一种实现DMA高效发送报文的方法,其特征在于,所述方法还包括:
在计算得到具体的描述符地址和数据地址后,CPU将报文写入指定的数据地址,并写入发送报文的长度,通知DMA发送报文。
6.一种实现DMA高效收取报文的装置,其特征在于,所述装置包括:
block模块,用于CPU划分block为单位,存放描述符对应的数据地址;
报文收取模块,用于在DMA控制器收取报文时,DMA控制器从DMA通道获取描述符的基地址和数据地址的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,进行对报文的搬移并通知CPU处理;以及CPU根据所述描述符的索引和描述符的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,完成报文的收取。
7.一种实现DMA高效发送报文的装置,其特征在于,所述装置包括:
block模块,用于CPU划分block为单位,存放描述符对应的数据地址;
报文发送模块,用于在DMA控制器发送报文时,CPU从DMA通道获取描述符的基地址和数据地址的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,进行对报文的写入并通知DMA发送报文;以及DMA控制器从DMA通道获取描述符的基地址和数据地址的基地址,通过地址的偏移计算出具体的描述符地址及其对应的数据地址,获取待发送的报文数据及长度,完成报文的发送。
8.一种电子设备,其特征在于,包括:
至少一个处理器;以及
存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如权利要求1中所述的实现DMA高效收取报文的方法或权利要求4中所述的实现DMA高效发送报文的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1中所述的实现DMA高效收取报文的方法或权利要求4中所述的实现DMA高效发送报文的方法的步骤。
CN202211250793.3A 2022-10-12 2022-10-12 实现dma高效收发报文的方法及应用 Pending CN115509972A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211250793.3A CN115509972A (zh) 2022-10-12 2022-10-12 实现dma高效收发报文的方法及应用

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211250793.3A CN115509972A (zh) 2022-10-12 2022-10-12 实现dma高效收发报文的方法及应用

Publications (1)

Publication Number Publication Date
CN115509972A true CN115509972A (zh) 2022-12-23

Family

ID=84510982

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211250793.3A Pending CN115509972A (zh) 2022-10-12 2022-10-12 实现dma高效收发报文的方法及应用

Country Status (1)

Country Link
CN (1) CN115509972A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117193669A (zh) * 2023-11-06 2023-12-08 格创通信(浙江)有限公司 一种报文描述符离散存储方法、装置、设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117193669A (zh) * 2023-11-06 2023-12-08 格创通信(浙江)有限公司 一种报文描述符离散存储方法、装置、设备及存储介质
CN117193669B (zh) * 2023-11-06 2024-02-06 格创通信(浙江)有限公司 一种报文描述符离散存储方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN104407933A (zh) 一种数据的备份方法及装置
CN111723030B (zh) 存储器系统及存储器系统的控制方法
CN113992473A (zh) 一种通信方法、装置及电子设备和存储介质
CN103677674A (zh) 一种数据处理方法及装置
CN102724122A (zh) 基于硬件系统的串口可靠传输方法及装置
CN115509972A (zh) 实现dma高效收发报文的方法及应用
CN112214157A (zh) 主机输出输入命令的执行装置及方法及计算机可读取存储介质
CN109857553B (zh) 内存管理方法及装置
CN112256460A (zh) 进程间通信方法、装置、电子设备及计算机可读存储介质
TW202004492A (zh) 電子存放裝置的任務管理方法、主機和存儲裝置
CN113660351A (zh) 数据通信方法、装置、通信终端及计算机可读存储介质
EP3465450B1 (en) Improving throughput in openfabrics environments
CN115470156A (zh) 基于rdma的内存使用方法、系统、电子设备和存储介质
CN110022341B (zh) 一种数据传输方法及相关设备
JP2007026434A (ja) 低性能格納装置のdrm権利オブジェクトを効率的に管理する方法および装置
CN113918356A (zh) 基于cuda数据快速同步方法、装置、计算机设备及存储介质
US9674141B2 (en) Techniques for implementing a secure mailbox in resource-constrained embedded systems
CN103488597A (zh) 一种先进先出缓存器及其读写数据的方法
CN115718711A (zh) 一种dma数据传输的系统和方法
CN105260264A (zh) 一种快照实现方法及快照系统
CN106776393B (zh) 一种无中断的串口数据接收方法和装置
CN113360448B (zh) 数据包处理方法及装置
CN114637574A (zh) 基于半虚拟化设备的数据处理方法、装置和系统
CN103294560A (zh) 跨进程传递字符串的方法及装置
CN110647493B (zh) 一种数据传输方法、处理器和pcie系统

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