CN110955618A - 采用dma实现定时发包的方法及装置 - Google Patents
采用dma实现定时发包的方法及装置 Download PDFInfo
- Publication number
- CN110955618A CN110955618A CN201911171127.9A CN201911171127A CN110955618A CN 110955618 A CN110955618 A CN 110955618A CN 201911171127 A CN201911171127 A CN 201911171127A CN 110955618 A CN110955618 A CN 110955618A
- Authority
- CN
- China
- Prior art keywords
- dma
- message
- descriptor
- sent
- data memory
- 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.)
- Withdrawn
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种采用DMA实现定时发包的方法和装置,所述方法包括:配置描述符,并在系统内存中为每一描述符分配对应的Data Memory,所述Data Memory用于存储待发送报文;使能DMA,每到达预设计时时刻,按DMA指针指向读取对应描述符的待发送报文并发往SwitchCore;在确认DMA指针指向对应的待发送报文已经进入SwitchCore后,使DMA指针按描述符的排列顺序循环指向下一描述符。本发明利用DMA实现定时发包,可有效节省芯片的内存资源,由于不再受限于芯片资源,故可以支持更多的Session;除此之外,由于每个描述符对应的Data Memory的大小可以不同,故该方式能够实现可变长的报文发送,更加灵活;并且在具体实现过程中,DMA控制器可以做到自己归还描述符,无需CPU归还描述符。
Description
技术领域
本发明属于通信设计领域,主要涉及一种采用DMA实现定时发包的方法和装置。
背景技术
交换机的发展技术日趋成熟,在交换机应用过程中,用户需要发送协议报文到相应的场景。
现有技术中,使用芯片内部定时器和指向芯片表项的指针,在定时器单位时间到达时,取出指针当前指向的表项内容,该内容就是待发送的报文;完成当前报文发送任务后,将指针指向芯片下一个表项并等待下一次定时器单位时间到达,重复上述操作。
然而,现有的定时发包方法需要占用大量宝贵的芯片内存资源,同时,能支持的报文session(会话)较少,这里的session表示一次性发送报文的个数,且将报文存储于芯片时,芯片的每一存储位置设置为大小相同,如此,导致发送的报文长度固定,无法满足多种长度报文的发送需求。
发明内容
为解决上述技术问题,本发明的目的在于提供一种采用DMA实现定时发包的方法和装置。
为了实现上述发明目的之一,本发明一实施方式提供一种采用DMA实现定时发包的方法,所述方法包括:配置描述符,并在系统内存中为每一描述符分配对应的DataMemory,所述Data Memory用于存储待发送报文;
使能DMA,每到达预设计时时刻,按DMA指针指向读取对应描述符的待发送报文并发往SwitchCore;
在确认DMA指针指向对应的待发送报文已经进入SwitchCore后,使DMA指针按描述符的排列顺序循环指向下一描述符。
作为本发明一实施方式的进一步改进,所述方法还包括:根据待发送报文的大小配置每一描述符对应的Data Memory的大小。
作为本发明一实施方式的进一步改进,所述方法还包括:配置DMA内部定时器,使能DMA后,通过DMA内部定时器周期性触发DMA操作,以按DMA指针指向读取对应描述符中的待发送报文并发往SwitchCore。
作为本发明一实施方式的进一步改进,DMA操作被触发后,所述方法具体包括:
获取描述符对应的Data Memory地址,将DMA指针调整至Data Memory地址的指向位置,根据获得的Data Memory地址读取Data Memory中对应的待发送报文并发往SwitchCore。
作为本发明一实施方式的进一步改进,所述方法还包括:
配置描述符,并记录描述符的排列顺序;
确认DMA指针指向对应的待发送报文已经进入SwitchCore后,判断当前描述符是否为最后一个描述符,若是,使DMA指针指向第一个描述符,若否,使DMA指针按描述符的排列顺序指向下一描述符。
为了实现上述发明目的之一,本发明一实施方式提供一种采用DMA实现定时发包的装置,所述装置包括:
配置模块,用于配置描述符,并在系统内存中为每一描述符分配对应的DataMemory,所述Data Memory用于存储待发送报文;
读取模块,用于使能DMA,每到达预设计时时刻,按DMA指针指向读取对应描述符的待发送报文并发往SwitchCore;
处理模块,用于在确认DMA指针指向对应的待发送报文已经进入SwitchCore后,使DMA指针按描述符的排列顺序循环指向下一描述符。
作为本发明一实施方式的进一步改进,配置模块还用于:根据待发送报文的大小配置每一描述符对应的Data Memory的大小。
作为本发明一实施方式的进一步改进,配置模块还用于:配置DMA内部定时器;
读取模块还用于:使能DMA后,通过DMA内部定时器周期性触发DMA操作,以按DMA指针指向读取对应描述符中的待发送报文并发往SwitchCore。
作为本发明一实施方式的进一步改进,读取模块DMA操作被触发后具体用于:获取描述符对应的Data Memory地址,将DMA指针调整至Data Memory地址的指向位置,根据获得的Data Memory地址读取Data Memory中对应的待发送报文并发往SwitchCore。
作为本发明一实施方式的进一步改进,配置模块还用于:配置描述符,并记录描述符的排列顺序;
处理模块还用于:确认DMA指针指向对应的待发送报文已经进入SwitchCore后,判断当前描述符是否为最后一个描述符,若是,使DMA指针指向第一个描述符,若否,使DMA指针按描述符的排列顺序指向下一描述符。
与现有技术相比,本发明的有益效果是:本发明的采用DMA实现定时发包的方法和装置,利用DMA实现定时发包,可有效节省芯片的内存资源,由于不再受限于芯片资源,故可以支持更多的Session;除此之外,由于每个描述符对应的Data Memory的大小可以不同,故该方式能够实现可变长的报文发送,更加灵活;并且在具体实现过程中,DMA控制器可以做到自己归还描述符,无需CPU归还描述符。
附图说明
图1是本发明一实施方式提供的采用DMA实现定时发包的方法的流程示意图;
图2是本发明应用图1所示方法进行定时发包的具体示例的结构示意图;
图3是本发明一实施方式提供的采用DMA实现定时发包的装置的模块示意图。
具体实施方式
以下将结合附图所示的具体实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。
如图1所示,本发明一实施方式提供的采用DMA实现定时发包的方法,所述方法包括:
S1、配置描述符,并在系统内存中为每一描述符分配对应的Data Memory,所述Data Memory用于存储待发送报文;
S2、使能DMA,每到达预设计时时刻,按DMA指针指向读取对应描述符的待发送报文并发往SwitchCore;
S3、在确认DMA指针指向对应的待发送报文已经进入SwitchCore后,使DMA指针按描述符的排列顺序循环指向下一描述符。
本发明具体实施方式中,对于步骤S1,根据用户需求为DMA Ring分配描述符,且根据待发送报文的大小配置每一描述符对应的Data Memory的大小。例如:如果需要支持2KSession,则为DMA Ring分配2K个描述符。
需要说明的是,各个描述符调用过程中,循环并顺序调用每一描述符,因此,所有描述符可形成DMA Ring,结合图2所示,为desc表示描述符,n个描述符依次排序,并按照排列次序循环处理,以下内容中还会详细描述。
另外,在本发明具体实施方式中,由于Data Memory为系统内存,因此,每个描述符对应的Data Memory可以由用户具体制定,即,可以依据传递报文的长度,具体配置每一描述符对应的Data Memory的大小。
以上,无论是描述符本身所占用的内存还是描述符对应的Data Memory所占用的内存都是系统内存,无需占用芯片内存,因此,该方法节省了宝贵的芯片内存,并且可以支持更多的Session。
对于步骤S2的DMA的配置,需要配置DMA内部定时器,以使其周期性触发DMA操作。
本发明具体实施方式中,所述方法还包括:配置DMA内部定时器,使能DMA后,通过DMA内部定时器周期性触发DMA操作,以按DMA指针指向读取对应描述符中的待发送报文并发往SwitchCore。
进一步的,DMA操作被触发后,所述方法具体包括:获取描述符对应的Data Memory地址,将DMA指针调整至Data Memory地址的指向位置,根据获得的Data Memory地址读取Data Memory中对应的待发送报文并发往SwitchCore。
具体的,在完成DMA初始化并使能DMA功能后,DMA内部定时器开始工作,每到达定时器单位时间时,DMA开始读取并处理第一个描述符;接续图2所示,假设处理的第一个描述符为desc0,则DMA控制器读取描述符desc0的内容,以获取该描述符对应的Data Memory的地址,本具体示例中,获取到Data Memory0的地址,进一步的,通过Data Memory0的地址取出Data Memory0中事前储存的报文,并发往SwitchCore,在该处,SwitchCore指交换机核心。
当确认自Data Memory中读出的报文进入SwitchCore后,表示当前描述符已经处理完成,此时,需要通过DMA控制器将DMA指针按描述符的排列顺序循环指向下一描述符,并等待DMA内部定时器的下一个定时器单位时间到达时,重复上述步骤以处理当前DMA指针指向的描述符。
进一步的,对于步骤S3,所述方法还包括:配置描述符,并记录描述符的排列顺序;确认DMA指针指向对应的待发送报文已经进入SwitchCore后,判断当前描述符是否为最后一个描述符,若是,使DMA指针指向第一个描述符,若否,使DMA指针按描述符的排列顺序指向下一描述符。
接续上述图2所示示例,当2K个描述符依次全部处理完成后,DMA控制器将内部的指针重新指向描述符0(如图中虚线所示),等DMA内部定时器下一个单位时间到达时,再次从描述符0对应的Data Memory中取出报文,发往SwitchCore,如此便实现了循环发送报文。
可以理解的是,传统的依赖于芯片存储并进行定时发包技术中,CPU往SwitchCore发送报文,需要通过DMA控制器传送,常规的DMA控制器的硬件实现方案是:DMA控制器中有一个寄存器记录当前可使用的描述符数量(初始值由CPU配置),每次定时器单位时间到达后,执行DMA操作时会首先判断有没有可用的描述符,有则执行将报文送往SwitchCore的操作,没有则需要等待,每完成一次报文传送的操作DMA控制器会将可用的描述符数量减去1,所以CPU每次发送报文时都需要确保该描述符对应的上次DMA操作已经完成并将可用描述符的数量加1,这样才能确保DMA操作正常进行;即每次报文发送时,需要DMA控制器减1,CPU加1。而本发明的采用DMA实现定时发包的方法,不需要CPU归还描述符,CPU初始化一定数量的可用描述符后,DMA控制器循环使用这些描述符;这样,有效地减少每次DMA操作中的IO开销,这一点在支持的Session数量较多时将会非常明显。
结合图3所示,本发明一实施方式提供一种采用DMA实现定时发包的装置,所述装置包括:配置模块100、读取模块200以及处理模块300。
配置模块100用于配置描述符,并在系统内存中为每一描述符分配对应的DataMemory,所述Data Memory用于存储待发送报文;读取模块200用于使能DMA,每到达预设计时时刻,按DMA指针指向读取对应描述符的待发送报文并发往SwitchCore;处理模块300用于在确认DMA指针指向对应的待发送报文已经进入SwitchCore后,使DMA指针按描述符的排列顺序循环指向下一描述符。
本发明具体实施方式中,配置模块100还用于:根据用户需求为DMA Ring分配描述符,且根据待发送报文的大小配置每一描述符对应的Data Memory的大小。例如:如果需要支持2K Session,则为DMA Ring分配2K个描述符。
另外,在本发明具体实施方式中,由于Data Memory为系统内存,因此,每个描述符对应的Data Memory可以由用户具体制定,即,可以依据传递报文的长度,具体配置每一描述符对应的Data Memory的大小。
以上,无论是描述符本身所占用的内存还是描述符对应的Data Memory所占用的内存都是系统内存,无需占用芯片内存,因此,该方法节省了宝贵的芯片内存,并且可以支持更多的Session。
本发明较佳实施方式中,配置模块100还用于:配置DMA内部定时器101;读取模块200还用于:使能DMA后,通过DMA内部定时器101周期性触发DMA操作,以按DMA指针指向读取对应描述符中的待发送报文并发往SwitchCore。
进一步的,读取模块200在确认DMA操作被触发后具体用于:获取描述符对应的Data Memory地址,将DMA指针调整至Data Memory地址的指向位置,根据获得的DataMemory地址读取Data Memory中对应的待发送报文并发往SwitchCore。
当确认自Data Memory中读出的报文进入SwitchCore后,表示当前描述符已经处理完成,此时,需要通过DMA控制器将DMA指针按描述符的排列顺序循环指向下一描述符,并等待DMA内部定时器的下一个定时器单位时间到达时,重复上述步骤以处理当前DMA指针指向的描述符。
进一步的,配置模块100还用于:配置描述符,并记录描述符的排列顺序;处理模块300还用于:确认DMA指针指向对应的待发送报文已经进入SwitchCore后,判断当前描述符是否为最后一个描述符,若是,使DMA指针指向第一个描述符,若否,使DMA指针按描述符的排列顺序指向下一描述符。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的模块的具体工作过程,可以参考前述方法实施方式中的对应过程,在此不再赘述。
综上所述,本发明的采用DMA实现定时发包的方法和装置,利用DMA实现定时发包,可有效节省芯片的内存资源,由于不再受限于芯片资源,故可以支持更多的Session;除此之外,由于每个描述符对应的Data Memory的大小可以不同,故该方式能够实现可变长的报文发送,更加灵活;并且在具体实现过程中,DMA控制器可以做到自己归还描述符,无需CPU归还描述符。
以上所描述的系统实施方式仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件是逻辑模块,即可以位于交换机逻辑中的一个模块中,或者也可以分布到交换机的多个数据处理模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施方式方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
Claims (10)
1.一种采用DMA实现定时发包的方法,其特征在于,所述方法包括:
配置描述符,并在系统内存中为每一描述符分配对应的Data Memory,所述DataMemory用于存储待发送报文;
使能DMA,每到达预设计时时刻,按DMA指针指向读取对应描述符的待发送报文并发往SwitchCore;
在确认DMA指针指向对应的待发送报文已经进入SwitchCore后,使DMA指针按描述符的排列顺序循环指向下一描述符。
2.根据权利要求1所述的采用DMA实现定时发包的方法,其特征在于,所述方法还包括:根据待发送报文的大小配置每一描述符对应的Data Memory的大小。
3.根据权利要求1所述的采用DMA实现定时发包的方法,其特征在于,所述方法还包括:配置DMA内部定时器,使能DMA后,通过DMA内部定时器周期性触发DMA操作,以按DMA指针指向读取对应描述符中的待发送报文并发往SwitchCore。
4.根据权利要求3所述的采用DMA实现定时发包的方法,其特征在于,DMA操作被触发后,所述方法具体包括:
获取描述符对应的Data Memory地址,将DMA指针调整至Data Memory地址的指向位置,根据获得的Data Memory地址读取Data Memory中对应的待发送报文并发往SwitchCore。
5.根据权利要求1所述的采用DMA实现定时发包的方法,其特征在于,所述方法还包括:
配置描述符,并记录描述符的排列顺序;
确认DMA指针指向对应的待发送报文已经进入SwitchCore后,判断当前描述符是否为最后一个描述符,若是,使DMA指针指向第一个描述符,若否,使DMA指针按描述符的排列顺序指向下一描述符。
6.一种采用DMA实现定时发包的装置,其特征在于,所述装置包括:
配置模块,用于配置描述符,并在系统内存中为每一描述符分配对应的Data Memory,所述Data Memory用于存储待发送报文;
读取模块,用于使能DMA,每到达预设计时时刻,按DMA指针指向读取对应描述符的待发送报文并发往SwitchCore;
处理模块,用于在确认DMA指针指向对应的待发送报文已经进入SwitchCore后,使DMA指针按描述符的排列顺序循环指向下一描述符。
7.根据权利要求6所述的采用DMA实现定时发包的装置,其特征在于,
配置模块还用于:根据待发送报文的大小配置每一描述符对应的Data Memory的大小。
8.根据权利要求6所述的采用DMA实现定时发包的装置,其特征在于,
配置模块还用于:配置DMA内部定时器;
读取模块还用于:使能DMA后,通过DMA内部定时器周期性触发DMA操作,以按DMA指针指向读取对应描述符中的待发送报文并发往SwitchCore。
9.根据权利要求8所述的采用DMA实现定时发包的装置,其特征在于,
读取模块DMA操作被触发后具体用于:获取描述符对应的Data Memory地址,将DMA指针调整至Data Memory地址的指向位置,根据获得的Data Memory地址读取Data Memory中对应的待发送报文并发往SwitchCore。
10.根据权利要求6所述的采用DMA实现定时发包的装置,其特征在于,
配置模块还用于:配置描述符,并记录描述符的排列顺序;
处理模块还用于:确认DMA指针指向对应的待发送报文已经进入SwitchCore后,判断当前描述符是否为最后一个描述符,若是,使DMA指针指向第一个描述符,若否,使DMA指针按描述符的排列顺序指向下一描述符。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911171127.9A CN110955618A (zh) | 2019-11-26 | 2019-11-26 | 采用dma实现定时发包的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911171127.9A CN110955618A (zh) | 2019-11-26 | 2019-11-26 | 采用dma实现定时发包的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110955618A true CN110955618A (zh) | 2020-04-03 |
Family
ID=69978479
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911171127.9A Withdrawn CN110955618A (zh) | 2019-11-26 | 2019-11-26 | 采用dma实现定时发包的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110955618A (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521179A (zh) * | 2011-11-28 | 2012-06-27 | 曙光信息产业股份有限公司 | 一种dma读操作的实现装置和方法 |
CN103095607A (zh) * | 2013-02-21 | 2013-05-08 | 南京磐能电力科技股份有限公司 | 一种实时优先级以太网控制器实现方法 |
-
2019
- 2019-11-26 CN CN201911171127.9A patent/CN110955618A/zh not_active Withdrawn
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521179A (zh) * | 2011-11-28 | 2012-06-27 | 曙光信息产业股份有限公司 | 一种dma读操作的实现装置和方法 |
CN103095607A (zh) * | 2013-02-21 | 2013-05-08 | 南京磐能电力科技股份有限公司 | 一种实时优先级以太网控制器实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101841470B (zh) | 一种基于Linux的底层数据包的高速捕获方法 | |
US10506020B2 (en) | Data transmission method, and terminal | |
CN104506379B (zh) | 网络数据捕获方法和系统 | |
JP2007233522A (ja) | Dmaデータ転送装置及びdmaデータ転送方法 | |
CN101283338A (zh) | 微控制器和FlexRay通信组件之间的用户接口、FlexRay用户以及用于通过这种接口传输消息的方法 | |
CN109547162B (zh) | 基于两套单向边界的数据通信方法 | |
CN113179327B (zh) | 基于大容量内存的高并发协议栈卸载方法、设备、介质 | |
CN108279927A (zh) | 可调整指令优先级的多通道指令控制方法及系统、控制器 | |
CN108304272B (zh) | 一种数据io请求的处理方法及装置 | |
US7447872B2 (en) | Inter-chip processor control plane communication | |
CN104158764A (zh) | 报文处理方法及装置 | |
CN112181887B (zh) | 数据传输方法及装置 | |
CN101902398B (zh) | 一种收发数据包的方法和系统 | |
CN114706531A (zh) | 数据处理方法、装置、芯片、设备及介质 | |
CN113098955B (zh) | 一种数据传输方法、装置、设备及计算机可读存储介质 | |
CN113691466B (zh) | 一种数据的传输方法、智能网卡、计算设备及存储介质 | |
CN110955618A (zh) | 采用dma实现定时发包的方法及装置 | |
US10095643B2 (en) | Direct memory access control device for at least one computing unit having a working memory | |
CN105357148A (zh) | 避免网络交换芯片输出报文乱序的方法及系统 | |
WO2024001411A1 (zh) | 多线程调度方法及装置 | |
CN107846328B (zh) | 基于并发无锁环形队列的网络速率实时统计方法 | |
CN111651282B (zh) | 报文处理方法、报文处理装置及电子设备 | |
CN107729140B (zh) | 一种并行实现多个eMMC主机接口命令排队功能的装置及方法 | |
WO2021036812A1 (zh) | 报文处理方法、装置和计算机存储介质 | |
CN111258937B (zh) | 一种环式链表dma的传输方法及系统 |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20200403 |