CN112306928A - 一种面向流传输的直接内存访问方法以及dma控制器 - Google Patents

一种面向流传输的直接内存访问方法以及dma控制器 Download PDF

Info

Publication number
CN112306928A
CN112306928A CN202011301969.4A CN202011301969A CN112306928A CN 112306928 A CN112306928 A CN 112306928A CN 202011301969 A CN202011301969 A CN 202011301969A CN 112306928 A CN112306928 A CN 112306928A
Authority
CN
China
Prior art keywords
frame
dma controller
descriptor
transmitted
tlp
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
Application number
CN202011301969.4A
Other languages
English (en)
Other versions
CN112306928B (zh
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.)
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Original Assignee
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center 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 Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd filed Critical Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority to CN202011301969.4A priority Critical patent/CN112306928B/zh
Publication of CN112306928A publication Critical patent/CN112306928A/zh
Application granted granted Critical
Publication of CN112306928B publication Critical patent/CN112306928B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F13/30Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal with priority control

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控制器,该方法包括:对获取到的待传输数据帧进行缓存;生成所述待传输数据帧对应的描述符,其中,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息;将所述待传输数据帧和所述描述符封装成第一TLP帧,并将所述第一TLP帧传输至宿端的第二预设DMA控制器,以便所述第二预设DMA控制器对所述第一TLP帧进行解析和存储。由此可见,本申请中源端的第一预设DMA控制器在获取到待传输数据帧之后,由自身生成对应的描述符,然后将描述符随同待传输数据帧一起发送给宿端的第二预设DMA控制器,这样节约了获取描述符的时间消耗,减少了时延,提高了访问效率。

Description

一种面向流传输的直接内存访问方法以及DMA控制器
技术领域
本申请涉及计算机技术领域,特别涉及一种面向流传输的直接内存访问方法以及DMA控制器。
背景技术
在现有的DMA(Direct Memory Access,直接内存访问)操作过程中,CPU(centralprocessing unit,中央处理器)配置DMA控制器,DMA控制器发起总线的读写操作,将数据从源端搬移到宿端。DMA控制器作为从设备接受CPU的配置和管理,同时,DMA控制器也是主设备,能够直接发起总线操作,完成数据读写。CPU配置DMA控制器和IO(Input/Output,输入输出)接口设备,IO接口设备发出DMA请求,DMA控制器响应,完成数据读写。数据传输过程不需要CPU的参与,从而释放了CPU的运算资源。
在PCIe的***中,CPU作为RC(Requester Completion)设备,通过PCIe的交换设备与IO接口所在的EP(Endpoint,终端)设备连接,实现IO接口数据访问内存的DMA控制器一般也位于EP设备中。如果IO接口为以太网之类的流传输接口,则DMA的工作过程如下:
CPU在内存中创建以太网帧收发的数据缓存队列,并创建数据缓存队列的描述符缓存区,配置DMA控制描述符缓存区地址指向创建好的描述符缓存区。以太网MAC(MediaAccess Control,介质访问控制)模块在收到MAC帧后,向DMA控制器申请C2H(Card toHost)的描述符,DMA控制器发出读请求,从***缓存中读取C2H的描述符,再分配给DMA控制器实现传输C2H的以太网帧的功能。
上述传输过程中,要实现MAC帧的传输首先需要获取描述符,而描述符队列和DMA控制器处于PCIe总线的两端,读取过程需要频繁地进行PCIe总线操作,从而增加传输时延,虽然描述符可以提前读取,但是在数据突发的时候,描述符缓存队列有限,仍会出现需要等待描述符读取的情况,从而带来时延和时延抖动的增加。因此,如何进行直接内存访问以减少时延是本领域技术人员要解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种面向流传输的直接内存访问方法以及DMA控制器,能够减少时延,提高访问效率。其具体方案如下:
第一方面,本申请公开了一种面向流传输的直接内存访问方法,应用于源端的第一预设DMA控制器,包括:
对获取到的待传输数据帧进行缓存;
生成所述待传输数据帧对应的描述符,其中,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息;
将所述待传输数据帧和所述描述符封装成第一TLP帧,并将所述第一TLP帧传输至宿端的第二预设DMA控制器,以便所述第二预设DMA控制器对所述第一TLP帧进行解析和存储。
可选地,所述面向流传输的直接内存访问方法,还包括:
向所述第二预设DMA控制器发送读描述状态请求帧;
接收所述第二预设DMA控制器在接收到所述读描述状态请求帧后返回的第二TLP帧,并对所述第二TLP帧进行解析,其中,所述第二TLP帧包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息。
可选地,所述对所述第二TLP帧进行解析之后,还包括:
根据解析结果生成新的描述符资源,并释放所述第一预设DMA控制器中的数据帧缓存空间,以便利用所述新的描述符资源生成描述符。
第二方面,本申请公开了一种面向流传输的直接内存访问方法,应用于宿端的第二预设DMA控制器,包括:
接收源端的第一预设DMA控制器发送的第一TLP帧,并对所述第一TLP帧进行解析,其中,所述第一TPL帧为所述第一预设DMA控制器在获取到待传输数据帧之后,生成所述待传输数据帧对应的描述符,并对所述待传输数据帧和所述描述符进行封装得到,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息;
对解析得到所述待传输数据帧和所述描述符进行存储。
可选地,所述面向流传输的直接内存访问方法,还包括:
接收所述第一预设DMA控制器发送的读描述状态请求帧;
根据所述读描述状态请求帧向所述第一预设DMA控制器发送第二TLP帧,其中,所述第二TLP帧包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息,处理完成的数据帧的描述符的状态信息存储在预设的描述符状态信息模块中。
第三方面,本申请公开了一种源端的第一预设DMA控制器,包括:
数据帧缓存模块,用于对获取到的待传输数据帧进行缓存;
描述符生成模块,用于生成所述待传输数据帧对应的描述符,其中,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息;
TLP帧生成和发送控制模块,用于将所述待传输数据帧和所述描述符封装成第一TLP帧,并将所述第一TLP帧传输至宿端的第二预设DMA控制器,以便所述第二预设DMA控制器对所述第一TLP帧进行解析和存储。
可选地,所述TLP帧生成和发送控制模块,还用于:
向所述第二预设DMA控制器发送读描述状态请求帧;
相应地,所述第一预设DMA控制器,还包括:
第一TLP帧解析模块,用于接收所述第二预设DMA控制器在接收到所述读描述状态请求帧后返回的第二TLP帧,并对所述第二TLP帧进行解析,其中,所述第二TLP帧包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息。
可选地,所述第一预设DMA控制器,还包括:
描述符队列状态维护模块,用于根据解析结果生成新的描述符资源,并释放所述第一预设DMA控制器中的数据帧缓存空间,以便所述描述符生成模块利用所述新的描述符资源生成描述符。
第四方面,本申请公开了一种宿端的第二预设DMA控制器,包括:
第二TLP帧解析模块,用于接收源端的第一预设DMA控制器发送的第一TLP帧,并对所述第一TLP帧进行解析,其中,所述第一TPL帧为所述第一预设DMA控制器在获取到待传输数据帧之后,生成所述待传输数据帧对应的描述符,并对所述待传输数据帧和所述描述符进行封装得到,所述描述符包括所述待传输数据帧对应的原地址、目的地址以及长度信息;
数据缓存队列,用于对解析得到所述待传输数据帧进行存储;
描述符缓存队列,用于对解析得到所述描述符进行存储。
可选地,所述第二TLP帧解析模块,还用于:
接收所述第一预设DMA控制器发送的读描述状态请求帧;
相应地,所述第二预设DMA控制器,还包括:
TLP帧发送模块,用于根据所述读描述状态请求帧向所述第一预设DMA控制器发送第二TLP帧,其中,所述第二TLP帧包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息;
描述符状态信息模块,用于存储处理完成的数据帧的描述符的状态信息。
可见,本申请先由源端的第一预设DMA控制器对获取到的待传输数据帧进行缓存,并生成所述待传输数据帧对应的描述符,其中,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息,然后便可以将所述待传输数据帧和所述描述符封装成第一TLP帧,并将所述第一TLP帧传输至宿端的第二预设DMA控制器,以便所述第二预设DMA控制器对所述第一TLP帧进行解析和存储。由此可见,本申请中源端的第一预设DMA控制器在获取到待传输数据帧之后,由自身生成对应的描述符,然后将描述符随同待传输数据帧一起发送给宿端的第二预设DMA控制器,这样节约了获取描述符的时间消耗,减少了时延,提高了访问效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种面向流传输的直接内存访问方法流程图;
图2为本申请公开的一种具体的***结构框图;
图3为本申请公开的一种面向流传输的直接内存访问方法流程图;
图4为本申请公开的一种驱动程序的安装过程图;
图5为本申请公开的一种源端的第一预设DMA控制器结构示意图;
图6为本申请公开的一种具体的源端的第一预设DMA控制器结构示意图;
图7为本申请公开的一种宿端的第二预设DMA控制器结构示意图;
图8为本申请公开的一种具体的宿端的第二预设DMA控制器设备结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,在直接内存访问的传输过程中,要实现MAC帧的传输首先需要获取描述符,而描述符缓存队列和DMA控制器处于PCIe总线的两端,读取过程需要频繁地进行PCIe总线操作,从而增加传输时延,虽然描述符可以提前读取,但是在数据突发的时候,描述符缓存队列有限,仍会出现需要等待描述符读取的情况,从而带来时延和时延抖动的增加。有鉴于此,本申请提出了一种面向流数据的直接内存访问方法,能够减少时延,提高访问效率。
参见图1所示,本申请实施例公开了一种面向流传输的直接内存访问方法,应用于源端的第一预设DMA控制器,该方法包括:
步骤S11:对获取到的待传输数据帧进行缓存。
在具体的实施过程中,所述源端可以是外设,也可以是CPU,相应地,宿端可以是外设,也可以是CPU。外设和CPU中都包括第一预设DMA控制器和第二预设DMA控制器。其中,所述第一预设DMA控制器主要负责当前设备作为源端时的直接内存访问操作,所述第二预设DMA控制器主要负责当前设备作为宿端时的直接内存访问操作。
参见图2所示,为***结构框图。其中,CPU和外设(Device)均中包括第一预设DMA控制器DMAC-src,和第二预设DMA控制器DMAC-snk,其中,第一预设DMA控制器DMAC-src与PCIe硬核模块之间通过RQ/RC(Requester Request/Requester Completion)总线接口相连接,第二预设DMA控制器DMAC-snk与PCIe硬核模块之间通过CQ/CC(Completer Request/Completer Completion)总线接口相连接。且RQ/RC总线接口和CQ/CC总线接口均符合AXIS规范(Advanced eXtensible Interface Stream)。CQ/CC与第二预设DMA控制器DMAC-snk连接,为从接口,响应源端的读写指令,RQ/RC与第一预设DMA控制器DMAC-src连接,为主接口,可以发起读写指令。对于CPU侧来说,DMAC可以存在CPU芯片内部,使用***主存储器作为DMAC的缓存空间。对于外设来说,DMAC开辟的缓存空间有限,可以直接实现在芯片内部,当然也可以实现在芯片外部,获得更大的缓存空间。CPU和外设之间通过PCIe总线连接,在外设中第一预设DMA控制器DMAC-src和二预设DMA控制器DMAC-snk还通过AXIS连接了MAC模块。这样每个设备都有自身用于发送数据的第一预设DMA控制器,也有自身用于接收数据的第二预设DMA控制器,使得收发方向结构完全独立且对称。
在实际应用中,当源端的第一预设DMA控制器获取到待传输数据帧时,先对所述待传输数据帧进行存储,以便在进行后续的操作之后,一起发送数据给宿端。
步骤S12:生成所述待传输数据帧对应的描述符,其中,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息。
可以理解的是,在对所述待传输数据帧进行存储之后,还需要生成所述待传输数据帧对应的描述符。也即,生成所述待传输数据帧的源地址、目的地址以及长度信息等,所述长度信息表示所述待传输数据帧中的数据长度。
步骤S13:将所述待传输数据帧和所述描述符封装成第一TLP帧,并将所述第一TLP帧传输至宿端的第二预设DMA控制器,以便所述第二预设DMA控制器对所述第一TLP帧进行解析和存储。
生成所述描述符之后,还需要将所述待传输数据帧和所述描述符封装成第一TLP(Transaction Layer Packet,事务层包)帧,并将所述第一TLP帧传输至宿端的第二预设DMA控制器,以便所述第二预设DMA控制器对所述第一TLP帧进行解析和存储。其中,所述第一TLP帧的数量可以大于或等于1,也即,所述待传输数据帧可以被拆分,形成多个片段,然后将各个片段封装成对应的第一TLP帧,传输给宿端的第二预设DMA控制器。
还需要向所述第二预设DMA控制器发送读描述状态请求帧;接收所述第二预设DMA控制器在接收到所述读描述状态请求帧后返回的第二TLP帧,并对所述第二TLP帧进行解析,其中,所述第二TLP帧包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息。其中,所述描述符的状态信息表明处理完成的数据帧的描述符。具体的,可以在数据帧处理完成之后,将处理完成的数据帧对应的描述符去掉部分信息,留下能够标识所述描述符的信息作为所述描述符的状态信息,也可以直接将描述符作为自身的描述符的状态信息。
也即,由所述源端的第一预设DMA控制器主动向所述宿端的第二预设DMA控制器发送读描述状态请求帧,接收所述第二预设DMA控制器在接收到所述读描述状态请求帧后返回的第二TLP帧,并对所述第二TLP帧进行解析之后,便可以由源端主动读取宿端的描述符队列的使用情况,使得占用的带宽开销受控可调。
读描述符状态请求帧的发送频率可由用户自行选定,最快每发送一帧的数据帧都伴随一个读描述符状态请求帧,最慢可在描述符或数据缓存空间即将使用完之前发送,获得响应后确保及时更新描述符队列的状态,有新的描述符分配给下一个到来的MAC帧。
在所述对所述第二TLP帧进行解析之后,还包括:根据解析结果生成新的描述符资源,并释放所述第一预设DMA控制器中的数据帧缓存空间,以便利用所述新的描述符资源生成描述符。也即,可以根据对所述第二TLP帧进行解析之后,便可以根据解析结果生成新的描述符资源,并释放所述第一DMA控制器中的存储所述待传输数据帧的数据帧缓存空间,以便用释放的数据帧缓存空间缓存新的待传输数据帧,以及在接收到新的待传输数据帧时,利用所述新的描述符资源生成对应的新的描述符。对所述第二TLP帧进行解析可以确定出所述宿端的第二预设DMA控制器已处理完成的数据帧的信息,然后便可以将第二预设DMA控制器已处理完成的接收数据帧存储地址作为新的可用地址,以便生成新的描述符时,将新的可用地址作为目的地址。
对于所述源端为外设时,所述第一预设DMA控制器获取到的待传输数据帧时,可以是从MAC模块过来的以太网帧,这样首先对待传输数据帧进行缓存,该缓存过程主要是为了适配RQ接口和AXIS接口的帧速率差异,便于传输位宽的对齐,因此缓存深度很小,对时延影响小。
如果宿端支持多优先级队列,可根据配置或用户设置选择其中一个优先级队列作为目的队列。
可见,本申请先由源端的第一预设DMA控制器对获取到的待传输数据帧进行缓存,并生成所述待传输数据帧对应的描述符,其中,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息,然后便可以将所述待传输数据帧和所述描述符封装成第一TLP帧,并将所述第一TLP帧传输至宿端的第二预设DMA控制器,以便所述第二预设DMA控制器对所述第一TLP帧进行解析和存储。由此可见,本申请中源端的第一预设DMA控制器在获取到待传输数据帧之后,由自身生成对应的描述符,然后将描述符随同待传输数据帧一起发送给宿端的第二预设DMA控制器,这样节约了获取描述符的时间消耗,减少了时延,提高了访问效率。
参见图3所示,本申请实施例公开了一种面向流传输的直接内存访问方法,应用于宿端的第二预设DMA控制器,该方法包括:
步骤S21:接收源端的第一预设DMA控制器发送的第一TLP帧,并对所述第一TLP帧进行解析,其中,所述第一TPL帧为所述第一预设DMA控制器在获取到待传输数据帧之后,生成所述待传输数据帧对应的描述符,并对所述待传输数据帧和所述描述符进行封装得到,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息。
步骤S22:对解析得到所述待传输数据帧和所述描述符进行存储。
源端的第一预设DMA控制器在获取到待传输数据帧之后,生成待传输数据帧对应的描述符,然后将所述待传输数据帧和所述描述符封装成第一TLP帧,然后将所述第一TLP帧传输给宿端的第二预设DMA控制器,对于宿端的第二预设DMA控制器来说,便需要接收源端的第一预设DMA控制器发送的所述第一TLP帧,并对所述第一TLP帧进行解析,也即解析出所述待传输数据帧和所述描述符,并对解析得到所述待传输数据帧和所述描述符进行存储。
还需要接收所述第一预设DMA控制器发送的读描述状态请求帧;根据所述读描述状态请求帧向所述第一预设DMA控制器发送第二TLP帧,其中,所述第二TLP帧包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息,处理完成的数据帧的描述符的状态信息存储在预设的描述符状态信息模块中。在接收到所述源端的第一预设DMA控制器发送的读描述状态请求时,便需要向所述第一预设DMA控制器发送包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息的第二TLP帧。
这样由源端负责描述符的生成以及数据的传输等处理,宿端相对于源端来说呈现若干数据缓存空间,便于操作***进行管理与实现不同设备的兼容。
在实际应用中,需要先安装驱动程序以实现前述的面向流数据的直接内存访问方法,驱动程序的安装过程如图4所示。驱动程序安装开始后,探测到外设存在DMA功能,即开始读取外设宿端缓存区的参数,包括:数据缓存队列数量、相应的存储区大小以及起始地址,描述符缓存队列的大小以及起始地址,描述符状态队列中的起始地址。并基于该参数初始化CPU的第一预设DMA控制器(DMAC)配置。然后CPU创建自己的宿端缓存区,并将参数配置给外设源端的第一预设DMA控制器(DMAC),待外设的第一预设DMA控制器初始化完成,驱动程序即安装完毕。应用程序运行时,CPU的接收端(C2H方向),始终轮询DMAC控制器的描述符缓存队列,一旦收到新的描述符,即可开始新的数据帧的处理过程。源端DMAC的处理过程始终由数据触发,不需要CPU的参与。为了降低数据传输的时延,使用轮询代替中断是一种有效办法,且现代CPU都是多核处理,多线程并行处理收到的数据帧是提高数据吞吐量的一种办法。CPU的发送端(H2C方向),CPU准备好数据后,直接更新描述符的状态,触发DMAC进行数据帧的发送。
参见图5所示,本申请实施例公开了一种源端的第一预设DMA控制器,包括:
数据帧缓存模块11,用于对获取到的待传输数据帧进行缓存;
描述符生成模块12,用于生成所述待传输数据帧对应的描述符,其中,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息;
TLP帧生成和发送控制模块13,用于将所述待传输数据帧和所述描述符封装成第一TLP帧,并将所述第一TLP帧传输至宿端的第二预设DMA控制器,以便所述第二预设DMA控制器对所述第一TLP帧进行解析和存储。
可见,本申请先由源端的第一预设DMA控制器对获取到的待传输数据帧进行缓存,并生成所述待传输数据帧对应的描述符,其中,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息,然后便可以将所述待传输数据帧和所述描述符封装成第一TLP帧,并将所述第一TLP帧传输至宿端的第二预设DMA控制器,以便所述第二预设DMA控制器对所述第一TLP帧进行解析和存储。由此可见,本申请中源端的第一预设DMA控制器在获取到待传输数据帧之后,由自身生成对应的描述符,然后将描述符随同待传输数据帧一起发送给宿端的第二预设DMA控制器,这样节约了获取描述符的时间消耗,减少了时延,提高了访问效率。
在一些具体的实施例中,所述TLP帧生成和发送控制模块,还用于:
向所述第二预设DMA控制器发送读描述状态请求帧;
相应地,所述第一预设DMA控制器,还包括:
第一TLP帧解析模块,用于接收所述第二预设DMA控制器在接收到所述读描述状态请求帧后返回的第二TLP帧,并对所述第二TLP帧进行解析,其中,所述第二TLP帧包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息。
在一些具体的实施例中,所述第一预设DMA控制器,还包括:
描述符队列状态维护模块,用于根据解析结果生成新的描述符资源,并释放所述第一预设DMA控制器中的数据帧缓存空间,以便利用所述新的描述符资源生成描述符。
当所述源端为外设时,所述第一预设DMA控制器的结构示意图如图6所示,数据帧缓存模块,用于对获取到的待传输数据帧进行缓存;描述符生成模块,用于生成所述待传输数据帧对应的描述符,其中,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息;TLP帧生成和发送控制模块,用于将所述待传输数据帧和所述描述符封装成第一TLP帧,并将所述第一TLP帧通过RQ接口传输至宿端的第二预设DMA控制器,以便所述第二预设DMA控制器对所述第一TLP帧进行解析和存储。TLP帧生成和发送控制模块,还可以向所述第二预设DMA控制器发送读描述状态请求帧。相应的,TLP帧解析模块,用于接收所述第二预设DMA控制器在接收到所述读描述状态请求帧后返回的第二TLP帧,并对所述第二TLP帧进行解析,描述符队列状态维护模块,用于根据解析结果生成新的描述符资源,并释放所述第一预设DMA控制器中的数据帧缓存空间,以便利用所述新的描述符资源生成描述符。数据帧缓存队列还可以通过AXIS接口连接MAC模块。
当所述源端为CPU时,由于要收发的数据都在内存中,不需要MAC模块和相关的接口。发送过程由CPU准备好数据后,直接更新描述符,并通知DMAC使用即可,所以不需要上述图6中的AXIS接口。
当所述源端为外设时,为进一步提高处理效率,以上各个模块可以通过硬件实现。
参见图7所示,本申请实施例公开了一种宿端的第二预设DMA控制器,包括:
第二TLP帧解析模块21,用于接收源端的第一预设DMA控制器发送的第一TLP帧,并对所述第一TLP帧进行解析,其中,所述第一TPL帧为所述第一预设DMA控制器在获取到待传输数据帧之后,生成所述待传输数据帧对应的描述符,并对所述待传输数据帧和所述描述符进行封装得到,所述描述符包括所述待传输数据帧对应的原地址、目的地址以及长度信息;
数据缓存队列22,用于对解析得到所述待传输数据帧进行存储;
描述符缓存队列23,用于对解析得到所述描述符进行存储。
在一些具体的实施过程中,所述第二TLP帧解析模块,还用于:接收所述第一预设DMA控制器发送的读描述状态请求帧;相应地,所述第二预设DMA控制器,还包括:TLP帧发送模块,用于根据所述读描述状态请求帧向所述第一预设DMA控制器发送第二TLP帧,其中,所述第二TLP帧包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息;描述符状态信息模块,用于存储处理完成的数据帧的描述符的状态信息。
当所述源端为外设时,所述第一预设DMA控制器的结构示意图如图8所示,TLP帧解析模块,用于通过CQ接口接收源端的第一预设DMA控制器发送的第一TLP帧,并对所述第一TLP帧进行解析,其中,所述第一TPL帧为所述第一预设DMA控制器在获取到待传输数据帧之后,生成所述待传输数据帧对应的描述符,并对所述待传输数据帧和所述描述符进行封装得到,所述描述符包括所述待传输数据帧对应的原地址、目的地址以及长度信息;数据缓存队列,用于对解析得到所述待传输数据帧进行存储;描述符缓存队列,用于对解析得到所述描述符进行存储。所述TLP帧解析模块,还用于:接收所述第一预设DMA控制器发送的读描述状态请求帧;相应地,所述第二预设DMA控制器,还包括:TLP帧发送模块,用于通过CC接口根据所述读描述状态请求帧向所述第一预设DMA控制器发送第二TLP帧,其中,所述第二TLP帧包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息;描述符状态信息模块,用于存储处理完成的数据帧的描述符的状态信息。以及数据帧调度模块,将接收到的数据帧通过AXIS接口发送出去。
当所述源端为CPU时,由于要收发的数据都在内存中,不需要MAC模块和相关的接口。接收过程由CPU监测DMAC管理的描述符缓存队列,发现有新的描述符到达,即可开始数据帧的处理,所以不需要上述图8中的AXIS接口。
当所述源端为外设时,为进一步提高处理效率,以上各个模块可以通过硬件实现。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得一系列包含其他要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种面向流传输的直接内存访问方法以及DMA控制器进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种面向流传输的直接内存访问方法,其特征在于,应用于源端的第一预设DMA控制器,包括
对获取到的待传输数据帧进行缓存;
生成所述待传输数据帧对应的描述符,其中,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息;
将所述待传输数据帧和所述描述符封装成第一TLP帧,并将所述第一TLP帧传输至宿端的第二预设DMA控制器,以便所述第二预设DMA控制器对所述第一TLP帧进行解析和存储。
2.根据权利要求1所述的面向流传输的直接内存访问方法,其特征在于,还包括:
向所述第二预设DMA控制器发送读描述状态请求帧;
接收所述第二预设DMA控制器在接收到所述读描述状态请求帧后返回的第二TLP帧,并对所述第二TLP帧进行解析,其中,所述第二TLP帧包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息。
3.根据权利要求2所述的面向流传输的直接内存访问方法,其特征在于,所述对所述第二TLP帧进行解析之后,还包括:
根据解析结果生成新的描述符资源,并释放所述第一预设DMA控制器中的数据帧缓存空间,以便利用所述新的描述符资源生成描述符。
4.一种面向流传输的直接内存访问方法,其特征在于,应用于宿端的第二预设DMA控制器,包括:
接收源端的第一预设DMA控制器发送的第一TLP帧,并对所述第一TLP帧进行解析,其中,所述第一TPL帧为所述第一预设DMA控制器在获取到待传输数据帧之后,生成所述待传输数据帧对应的描述符,并对所述待传输数据帧和所述描述符进行封装得到,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息;
对解析得到所述待传输数据帧和所述描述符进行存储。
5.根据权利要求4所述的面向流传输的直接内存访问方法,其特征在于,还包括:
接收所述第一预设DMA控制器发送的读描述状态请求帧;
根据所述读描述状态请求帧向所述第一预设DMA控制器发送第二TLP帧,其中,所述第二TLP帧包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息,处理完成的数据帧的描述符的状态信息存储在预设的描述符状态信息模块中。
6.一种源端的第一预设DMA控制器,其特征在于,包括:
数据帧缓存模块,用于对获取到的待传输数据帧进行缓存;
描述符生成模块,用于生成所述待传输数据帧对应的描述符,其中,所述描述符包括所述待传输数据帧对应的源地址、目的地址以及长度信息;
TLP帧生成和发送控制模块,用于将所述待传输数据帧和所述描述符封装成第一TLP帧,并将所述第一TLP帧传输至宿端的第二预设DMA控制器,以便所述第二预设DMA控制器对所述第一TLP帧进行解析和存储。
7.根据权利要求6所述的第一预设DMA控制器,其特征在于,所述TLP帧生成和发送控制模块,还用于:
向所述第二预设DMA控制器发送读描述状态请求帧;
相应地,所述第一预设DMA控制器,还包括:
第一TLP帧解析模块,用于接收所述第二预设DMA控制器在接收到所述读描述状态请求帧后返回的第二TLP帧,并对所述第二TLP帧进行解析,其中,所述第二TLP帧包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息。
8.根据权利要求7所述的第一预设DMA控制器,其特征在于,所述第一预设DMA控制器,还包括:
描述符队列状态维护模块,用于根据解析结果生成新的描述符资源,并释放所述第一预设DMA控制器中的数据帧缓存空间,以便所述描述符生成模块利用所述新的描述符资源生成描述符。
9.一种宿端的第二预设DMA控制器,其特征在于,包括:
第二TLP帧解析模块,用于接收源端的第一预设DMA控制器发送的第一TLP帧,并对所述第一TLP帧进行解析,其中,所述第一TPL帧为所述第一预设DMA控制器在获取到待传输数据帧之后,生成所述待传输数据帧对应的描述符,并对所述待传输数据帧和所述描述符进行封装得到,所述描述符包括所述待传输数据帧对应的原地址、目的地址以及长度信息;
数据缓存队列,用于对解析得到所述待传输数据帧进行存储;
描述符缓存队列,用于对解析得到所述描述符进行存储。
10.根据权利要求9所述的第二预设DMA控制器,其特征在于,所述第二TLP帧解析模块,还用于:
接收所述第一预设DMA控制器发送的读描述状态请求帧;
相应地,所述第二预设DMA控制器,还包括:
TLP帧发送模块,用于根据所述读描述状态请求帧向所述第一预设DMA控制器发送第二TLP帧,其中,所述第二TLP帧包括所述第二预设DMA控制器处理完成的数据帧的描述符的状态信息;
描述符状态信息模块,用于存储处理完成的数据帧的描述符的状态信息。
CN202011301969.4A 2020-11-19 2020-11-19 一种面向流传输的直接内存访问方法以及dma控制器 Active CN112306928B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011301969.4A CN112306928B (zh) 2020-11-19 2020-11-19 一种面向流传输的直接内存访问方法以及dma控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011301969.4A CN112306928B (zh) 2020-11-19 2020-11-19 一种面向流传输的直接内存访问方法以及dma控制器

Publications (2)

Publication Number Publication Date
CN112306928A true CN112306928A (zh) 2021-02-02
CN112306928B CN112306928B (zh) 2023-02-28

Family

ID=74335087

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011301969.4A Active CN112306928B (zh) 2020-11-19 2020-11-19 一种面向流传输的直接内存访问方法以及dma控制器

Country Status (1)

Country Link
CN (1) CN112306928B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113037604A (zh) * 2021-03-16 2021-06-25 西安微电子技术研究所 一种基于两级描述符表征的以太网控制***
CN113986791A (zh) * 2021-09-13 2022-01-28 西安电子科技大学 一种智能网卡快速dma设计方法、***、设备及终端
CN114116556A (zh) * 2021-10-29 2022-03-01 山东云海国创云计算装备产业创新中心有限公司 一种动态分配队列缓存的方法、***、存储介质及设备
CN114564420A (zh) * 2022-01-19 2022-05-31 中国电子科技集团公司第十研究所 多核处理器共享并行总线的方法
CN114661442A (zh) * 2021-05-08 2022-06-24 支付宝(杭州)信息技术有限公司 处理方法及装置、处理器、电子设备及存储介质
CN117411842A (zh) * 2023-12-13 2024-01-16 苏州元脑智能科技有限公司 事件抑制方法、装置、设备、异构平台及存储介质
CN117807001A (zh) * 2024-02-29 2024-04-02 山东云海国创云计算装备产业创新中心有限公司 一种基于dma/直接内存访问的任务处理方法及装置
CN117807002A (zh) * 2024-03-01 2024-04-02 山东云海国创云计算装备产业创新中心有限公司 基于直接存储器访问通道的负载均衡方法、装置及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060174027A1 (en) * 2005-01-31 2006-08-03 Samsung Electronics Co., Ltd Method and apparatus for transmission queue in communication system
US20070006025A1 (en) * 2005-06-30 2007-01-04 Akihiro Onozuka Sending device, receiving device, communication control device, communication system, and communication control method
CN105610730A (zh) * 2014-11-19 2016-05-25 中兴通讯股份有限公司 Cpu与网络设备之间的消息交互方法及***
CN109471816A (zh) * 2018-11-06 2019-03-15 西安微电子技术研究所 一种基于描述符的pcie总线dma控制器及数据传输控制方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060174027A1 (en) * 2005-01-31 2006-08-03 Samsung Electronics Co., Ltd Method and apparatus for transmission queue in communication system
US20070006025A1 (en) * 2005-06-30 2007-01-04 Akihiro Onozuka Sending device, receiving device, communication control device, communication system, and communication control method
CN105610730A (zh) * 2014-11-19 2016-05-25 中兴通讯股份有限公司 Cpu与网络设备之间的消息交互方法及***
CN109471816A (zh) * 2018-11-06 2019-03-15 西安微电子技术研究所 一种基于描述符的pcie总线dma控制器及数据传输控制方法

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113037604A (zh) * 2021-03-16 2021-06-25 西安微电子技术研究所 一种基于两级描述符表征的以太网控制***
CN114661442A (zh) * 2021-05-08 2022-06-24 支付宝(杭州)信息技术有限公司 处理方法及装置、处理器、电子设备及存储介质
CN113986791B (zh) * 2021-09-13 2024-02-02 西安电子科技大学 一种智能网卡快速dma设计方法、***、设备及终端
CN113986791A (zh) * 2021-09-13 2022-01-28 西安电子科技大学 一种智能网卡快速dma设计方法、***、设备及终端
CN114116556A (zh) * 2021-10-29 2022-03-01 山东云海国创云计算装备产业创新中心有限公司 一种动态分配队列缓存的方法、***、存储介质及设备
CN114564420A (zh) * 2022-01-19 2022-05-31 中国电子科技集团公司第十研究所 多核处理器共享并行总线的方法
CN114564420B (zh) * 2022-01-19 2023-08-18 中国电子科技集团公司第十研究所 多核处理器共享并行总线的方法
CN117411842A (zh) * 2023-12-13 2024-01-16 苏州元脑智能科技有限公司 事件抑制方法、装置、设备、异构平台及存储介质
CN117411842B (zh) * 2023-12-13 2024-02-27 苏州元脑智能科技有限公司 事件抑制方法、装置、设备、异构平台及存储介质
CN117807001A (zh) * 2024-02-29 2024-04-02 山东云海国创云计算装备产业创新中心有限公司 一种基于dma/直接内存访问的任务处理方法及装置
CN117807001B (zh) * 2024-02-29 2024-05-24 山东云海国创云计算装备产业创新中心有限公司 一种基于dma/直接内存访问的任务处理方法及装置
CN117807002A (zh) * 2024-03-01 2024-04-02 山东云海国创云计算装备产业创新中心有限公司 基于直接存储器访问通道的负载均衡方法、装置及介质
CN117807002B (zh) * 2024-03-01 2024-05-24 山东云海国创云计算装备产业创新中心有限公司 基于直接存储器访问通道的负载均衡方法、装置及介质

Also Published As

Publication number Publication date
CN112306928B (zh) 2023-02-28

Similar Documents

Publication Publication Date Title
CN112306928B (zh) 一种面向流传输的直接内存访问方法以及dma控制器
JP6833644B2 (ja) 転送装置、転送方法及びプログラム
US9348789B2 (en) Computer system and network interface supporting class of service queues
WO2018076793A1 (zh) 一种NVMe数据读写方法及NVMe设备
US9009373B2 (en) Method for implementing audio transmission and mobile terminal
US5768618A (en) Method for performing sequence of actions in device connected to computer in response to specified values being written into snooped sub portions of address space
US6735662B1 (en) Method and apparatus for improving bus efficiency given an array of frames to transmit
US7894480B1 (en) Computer system and network interface with hardware based rule checking for embedded firewall
US9479464B1 (en) Computer system and network interface with hardware based packet filtering and classification
US20120221792A1 (en) Opportunistic block transmission with time constraints
US7849214B2 (en) Packet receiving hardware apparatus for TCP offload engine and receiving system and method using the same
WO2006121739A2 (en) Simulating multiple virtual channels in switched fabric networks for chipsets which support only one channel
CN112650558B (zh) 数据处理方法、装置、可读介质和电子设备
US20190007339A1 (en) Method and device for managing stateful application on server
KR20130107618A (ko) Usb 디바이스 장치의 데이터를 클라이언트 단말을 통해 서버로 전송하는 데이터 처리 방법 및 클라이언트 단말
WO2004019165A2 (en) Method and system for tcp/ip using generic buffers for non-posting tcp applications
CN113961494A (zh) 一种pcie总线与axi总线的桥接***
CN113141321A (zh) 一种基于边缘计算的数据传输方法及电子设备
JP2022121525A (ja) 処理装置、処理方法及びプログラム
CN112306693B (zh) 数据包的处理方法和设备
CN117555836A (zh) 一种数据处理装置、***及电子设备
CN115904259B (zh) 非易失性存储器标准NVMe指令的处理方法及相关装置
US8004991B1 (en) Method and system for processing network information
US8775616B2 (en) Diagnostic tool for broadband networks
US20170147517A1 (en) Direct memory access system using available descriptor mechanism and/or pre-fetch mechanism and associated direct memory access method

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