一种报文处理方法、装置及电子设备与流程

未命名 09-19 阅读:96 评论:0


1.本发明是关于网络通信技术领域,特别是关于一种报文处理方法及实现该报文处理方法的装置和电子设备。


背景技术:

2.现有网络交换技术中,通常采用cpu(中央处理器)和dma控制器(dma ctl)协同实现报文的发送,两者之间通过描述符进行通信。在具体实施时时,如图1所示,通过如下步骤实现报文的发送:步骤一,cpu将待发送的报文和描述符写入到内存中;步骤二,cpu对描述符寄存器进行写操作,以告知dma控制器描述符和报文已准备好;步骤三,dma控制器访问内存,以获取描述符,并根据该描述符从内存中获取相应的报文并转发。在上述过程中,步骤一需先于步骤二完成,才能确保报文传输的准确性。
3.为了实现步骤一能够先于步骤二完成,从软件层面而言,需要确保实现步骤一和步骤二的软件代码逻辑顺序,即需将步骤一对应的代码置于步骤二对应的代码之前。从硬件层面而言,需要写内存的操作要先于写描述符寄存器的操作。否则,若写描述符寄存器的操作比写内存的操作先生效,即报文还未写入内存,描述符寄存器就已经被更新,这时dma控制器从内存读取到的描述符和报文是无效的,将出现传输错误。这里写描述符寄存器的操作比写内存的操作先生效的原因包括:
4.(1)存在高速缓存:如图2所示,cpu在写内存时会先将描述符和报文写入高速缓存中,高速缓存中的数据会在合适的时机更新到内存里,在这期间可能写描述符寄存器已经完成;
5.(2)代码编译时编译器对指令进行了重排:如图3所示,编译是编译器将代码翻译成cpu可识别的机器指令的过程。这个阶段,编译器会进行优化,包括对指令进行重排。虽然步骤一对应的代码置于步骤二对应的代码之前,但经过编译,代码翻译成cpu指令之后,步骤二的指令排在了步骤一的指令前面,导致步骤二先执行。
6.为了能够使写内存的操作先于写描述符寄存器的操作完成,目前采用内存屏障技术来实现。这里的内存屏障技术指的是在步骤一和步骤二之间增加一条内存屏障指令来保证cpu执完步骤一之后再执行步骤二,如图4所示。原因在于内存屏障一方面能够防止指令重排,从指令顺序上保证步骤一的代码先于步骤二的代码执行,另一方面还能够强制将高速缓存里的数据更新到内存里,即内存屏障前面的代码如果有写内存的操作,将会强制将高速缓存里的数据更新到内存里。
7.虽然内存屏障技术能够使写内存的操作先于写描述符寄存器的操作完成,但也存在如下缺陷:
8.(1)实现过程复杂:不同架构的cpu有不同的内存屏障指令,要求代码编写人员熟悉不同架构cpu的指令集,同时增加了维护难度,降低了软件的可移植性;
9.(2)降低软件性能:内存屏障对代码性能的影响体现在指令流水线上,其会阻隔cpu的指令流水线。如图5所示,在未加内存屏障前,cpu可以单个时钟周期内并发执行多条
指令,而增加内存屏障后,cpu只能一个接一个地执行,即则先执行前一指令,再执行后一指令。并且,cpu执行完前一指令后会强制将高速缓存里的数据更新到内存中,之后才执行下一指令,这导致cpu执行效率严重下降,如原来5个时钟周期可以完成的指令,在增加内存屏障后需要9个时钟周期完成。
10.公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。


技术实现要素:

11.本发明的目的在于提供一种报文处理方法,其能够确保cpu写入内存的报文和dma控制器实际从内存中读取并发送的报文一致,确保报文传输的准确性,避免采用内存屏障技术所带来的一些问题。
12.本发明的目的还在于提供一种报文处理装置,能够实现报文处理方法,能够确保cpu写入内存的报文和dma控制器实际从内存中读取并发送的报文一致,确保报文传输的准确性,避免采用内存屏障技术所带来的一些问题。
13.本发明的目的还在于提供一种电子设备,包括报文处理装置,能够确保cpu写入内存的报文和dma控制器实际从内存中读取并发送的报文一致,确保报文传输的准确性,避免采用内存屏障技术所带来的一些问题。
14.为实现上述目的,本发明的实施例提供了一种报文处理方法,所述报文处理方法包括:
15.cpu将报文和描述符写入内存,所述描述符包括报文信息位和用于标识描述符是否有效的标志位,且所述描述符在cpu写内存时有效;
16.cpu更新描述符寄存器;
17.dma控制器判断描述符寄存器是否已更新,并在已更新时从内存中获取描述符;
18.dma控制器判断所述描述符是否有效,并在有效时根据所述报文信息位从所述内存中获取报文并转发。
19.在本发明的一个或多个实施方式中,所述cpu更新描述寄存器包括:
20.cpu将可用描述符个数写入描述符寄存器。
21.在本发明的一个或多个实施方式中,所述判断描述符寄存器是否已更新包括:
22.判断描述符寄存器中数据是否发生变动;
23.响应于发生变动,确定描述符寄存器已更新。
24.在本发明的一个或多个实施方式中,所述dma控制器判断所述描述符是否有效包括:
25.判断所述标志位的值;
26.响应于标志位为第一预设值,确定描述符有效,响应于标志位为第二预设,确定描述符无效。
27.在本发明的一个或多个实施方式中,所述报文信息包括报文在内存中的地址及报文的长度。
28.在本发明的一个或多个实施方式中,所述报文处理方法还包括:
29.响应于描述符无效,判断描述符寄存器是否已更新,并在已更新时从内存中获取
描述符。
30.在本发明的一个或多个实施方式中,所述描述符在cpu写内存时有效包括:
31.在cpu写内存时将标志位置为第一预设值。
32.本发明的实施例提供了一种报文处理装置,包括:
33.cpu,用于将报文和描述符写入内存,并更新描述符寄存器;
34.dma控制器,用于判断描述符寄存器是否已更新,并在已更新时从内存中获取描述符,进一步判断所述描述符是否有效,并在有效时根据所述报文信息位从所述内存中获取报文并转发。
35.在本发明的一个或多个实施方式中,所述dma控制器包括:
36.判断模块,用于判断描述符寄存器是否已更新;
37.预取模块,用于在判断模块判断描述符寄存器已更新时从从内存中获取描述符;
38.检查模块,用于判断所述描述符是否有效;
39.报文读取模块,用于在检查模块判断所述描述符有效时根据所述报文信息位从所述内存中获取报文;
40.报文发送模块,用于对获取的报文进行转发。
41.本发明的实施例提供了一种电子设备,包括上述所述的报文处理装置
42.与现有技术相比,本发明通过对描述符进行改进,以在描述符中添加可标识描述符是否有效的标志位,并在报文转发过程中,使cpu对标志位进行赋值并使dma控制器读取标志位,以确定描述符的有效性,使dma控制器均能够读取到正确的报文和描述符,进而确保cpu写入内存的报文和dma控制器实际从内存中读取并发送的报文一致,确保报文传输的准确定,避免采用内存屏障技术所带来的一些问题。
附图说明
43.图1是现有技术中cpu和dma控制器协同实现报文传输的示意图;
44.图2是高速缓存对cpu和dma控制器协同实现报文传输影响示意图;
45.图3是代码编译时编译器对指令进行重排示意图;
46.图4是采用内存屏障技术后代码编译时编译器对指令编译示意图;
47.图5是采用内存屏障技术降低cpu处理性能示意图;
48.图6是根据本发明一实施方式的报文处理方法流程图;
49.图7是根据本发明一实施方式的cpu处理流程图;
50.图8是根据本发明一实施方式的dma控制器处理流程图;
51.图9根据本发明一实施方式的报文处理装置结构示意图。
具体实施方式
52.下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
53.除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。
54.如图6所示,根据本发明优选实施方式的报文处理方法,能够确保cpu写入内存的报文和dma控制器实际从内存中读取并发送的报文一致,确保报文传输的准确性,避免采用内存屏障技术所带来的一些问题。
55.具体地,结合图6至图8所示,图6示出了报文处理方法流程图,图7示出了cpu处理流程图,图8示出了dma控制器处理流程图。报文处理方法包括如下步骤:
56.步骤s1,cpu将报文和对应的描述符写入内存,所述描述符包括报文信息位和用于标识描述符是否有效的标志位,且所述描述符在cpu写内存时有效;
57.具体地,在报文传输过程中,cpu将接收到的报文和对应的描述符写入到内存中。实施时,cpu通过总线将接收到的报文和对应的描述符写入到内存中。这里的描述符包括报文信息位和标志位,报文信息位用于记录报文信息,包括但不限于报文在内存中的地址、报文的长度;标志位用于标识描述符是否有效。报文信息位包括记录报文在内存中地址的信息位及记录报文长度的信息位。每个描述符可记录一个报文在内存中的地址、报文的长度等信息。当cpu写内存时,通过配置标志位使描述符处于有效状态。默认情况下,描述符处于无效状态。
58.本实施例中,标志位具有第一预设值和第二预设值。当标志位为第一预设值时,表示描述符为有效;当标志位为第二预设值时,表示描述符为无效。在cpu写内存时,可将标志位配置为第一预设值,这里的第一预设值和第二预设值可根据实际需求进行设置,如第一预设值为1,第二预设值为0,或者第一预设值为0,第二预设值为1。
59.步骤s2,cpu更新描述符寄存器;
60.具体地,描述符寄存器用于记录可用描述个数。cpu在将报文和对应的描述符写入内存后,可通过对描述符寄存器进行写操作,以更新描述符寄存器。在具体实施时,cpu可通过寄存器访问接口对描述符寄存器进行写操作。这里的写操作指的是cpu对描述符寄存器中的数据进行更新,以使描述符寄存器可记录当前可用的描述符个数。cpu通过对描述符寄存器进行更新,可通知dma控制器报文和描述符已准备好。
61.步骤s3,dma控制器判断描述符寄存器是否已更新,并在更新时从内存中获取描述符。
62.具体地,dma控制器对描述符寄存器检测,以判断描述符寄存器是否已更新。在具体实施时,dma控制器可通过检测描述符寄存器中数据是否发生变动,以确定描述符寄存器是否已更新。当确定描述符寄存器中数据发生了变动时,则确定描述符寄存器已更新。当确定描述符寄存器中数据未发生变动时,则确定描述符寄存器还未更新。
63.进一步地,当确定描述符寄存器已更新后,表明报文和描述符已准备好,此时dma控制器从内存中读取描述符。
64.步骤s4,dma控制器判断所述描述符是否有效,并在有效时根据所述报文信息位从所述内存中获取报文并转发。
65.具体地,当dma控制器从内存中读取描述符后,进一步通过描述符中的标志位判断描述符是否有效。在具体实施时,依据标志位的值判断描述符是否有效。当标志位为第一预设值时,表示描述符为有效;当标志位为第二预设值时,表示描述符为无效。
66.进一步地,当dma控制器确定描述符有效时,根据所述描述符从内存中获取相应报文并转发。在具体实施时,dma控制器根据描述符中报文信息位确定报文存放在内存中的地
址、报文长度等信息,并依据这些信息可获取到相应的报文。当获取到相应报文后,将报文转发至网卡或者交换芯片,网卡或者交换芯片进一步将报文转发至网络中。当dma控制器确定描述符无效时,返回执行步骤s3,即dma控制器判断描述符寄存器是否已更新,并在更新时从内存中获取描述符。
67.本发明通过对描述符进行改进,以在描述符中添加可标识描述符是否有效的标志位,并在报文转发过程中,使cpu对标志位进行赋值并使dma控制器读取标志位,以确定描述符的有效性,使得步骤s1和步骤s1无论哪个操作先生效,dma控制器均能够读取到正确的报文和描述符,进而确保cpu写入内存的报文和dma控制器实际从内存中读取并发送的报文一致,确保报文传输的准确定,避免采用内存屏障技术所带来的一些问题。
68.如图9所示,根据本发明优选实施方式的一种报文处理装置,能够实现上述的报文处理方法,能够确保cpu写入内存的报文和dma控制器实际从内存中读取并发送的报文一致,确保报文传输的准确性,避免采用内存屏障技术所带来的一些问题。
69.具体地,报文处理装置包括cpu和dma控制器。其中,
70.cpu,用于将报文和对应的描述符写入内存,并更新描述符寄存器,所述描述符包括报文信息位和用于标识描述符是否有效的标志位,且所述描述符在cpu写内存时有效;
71.dma控制器,用于判断描述符寄存器是否已更新,并在更新时从内存中获取描述符,进一步判断所述描述符是否有效,并在有效时根据所述报文信息从所述内存中获取报文并转发。
72.cpu和dma控制器如何实现相应的功能,具体详见上述,在此不再一一赘述。
73.如图9所示,dma控制器包括判断模块、预取模块、检查模块、报文读取模块和报文发送模块。其中,判断模块用于判断描述符寄存器是否已更新;预取模块用于在判断模块判断描述符寄存器已更新时从内存中获取描述符;检查模块用于判断所述描述符是否有效;报文读取模块用于在检查模块判断所述描述符有效时从所述报文信息位从所述内存中获取报文;报文发送模块用于对获取的报文进行转发。
74.具体实施时,在报文传输过程中,cpu将接收到的报文和对应的描述符写入到内存中。cpu在将报文和对应的描述符写入内存后,可通过对描述符寄存器进行写操作,以更新描述符寄存器。dma控制器通过判断模块判断描述符寄存器是否已更新。当确定描述符寄存器已更新后,表明报文和描述符已准备好,此时dma控制器通过预取模块从内存中读取描述符。当dma控制器从内存中读取描述符后,检查模块进一步通过描述符中的标志位判断描述符是否有效。当确定描述符有效时,报文读取模块根据所述描述符从内存中获取相应报文,并通过报文发送模块进行报文的转发。
75.本发明还揭示了一种电子设备,包括上述所述的报文处理装置,能够实现上述的报文处理方法,能够确保cpu写入内存的报文和dma控制器实际从内存中读取并发送的报文一致,确保报文传输的准确性,避免采用内存屏障技术所带来的一些问题。
76.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
77.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
78.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
79.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
80.前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。

技术特征:
1.一种报文处理方法,其特征在于,所述报文处理方法包括:cpu将报文和描述符写入内存,所述描述符包括用于记录报文信息的报文信息位和用于标识描述符是否有效的标志位,且所述描述符在cpu写内存时有效;cpu更新描述符寄存器;dma控制器判断描述符寄存器是否已更新,并在已更新时从内存中获取描述符;dma控制器判断所述描述符是否有效,并在有效时根据所述报文信息位从所述内存中获取报文并转发。2.如权利要求1所述的报文处理方法,其特征在于,所述cpu更新描述寄存器包括:cpu将可用描述符个数写入描述符寄存器。3.如权利要求1所述的报文处理方法,其特征在于,所述判断描述符寄存器是否已更新包括:判断描述符寄存器中数据是否发生变动;响应于发生变动,确定描述符寄存器已更新。4.如权利要求1所述的报文处理方法,其特征在于,所述dma控制器判断所述描述符是否有效包括:判断所述标志位的值;响应于标志位为第一预设值,确定描述符有效,响应于标志位为第二预设,确定描述符无效。5.如权利要求1所述的报文处理方法,其特征在于,所述报文信息包括报文在内存中的地址及报文的长度。6.如权利要求1所述的报文处理方法,其特征在于,所述报文处理方法还包括:响应于描述符无效,判断描述符寄存器是否已更新,并在已更新时从内存中获取描述符。7.如权利要求4所述的报文处理方法,其特征在于,所述描述符在cpu写内存时有效包括:在cpu写内存时将标志位置为第一预设值。8.一种实现权利要求1~7任意一项所述报文处理方法的报文处理装置,其特征在于,包括:cpu,用于将报文和描述符写入内存,并更新描述符寄存器;dma控制器,用于判断描述符寄存器是否已更新,并在已更新时从内存中获取描述符,进一步判断所述描述符是否有效,并在有效时根据所述报文信息位从所述内存中获取报文并转发。9.如权利要求8所述的报文处理装置,其特征在于,所述dma控制器包括:判断模块,用于判断描述符寄存器是否已更新;预取模块,用于在判断模块判断描述符寄存器已更新时从内存中获取描述符;检查模块,用于判断所述描述符是否有效;报文读取模块,用于在检查模块判断所述描述符有效时根据所述报文信息位从所述内存中获取报文;报文发送模块,用于对获取的报文进行转发。
10.一种电子设备,其特征在于,包括权利要求8~9任意一项所述的报文处理装置。

技术总结
本发明公开了一种报文处理方法、装置及电子设备,属于网络通信技术领域。方法包括CPU将报文和描述符写入内存并更新描述符寄存器;DMA控制器判断描述符寄存器是否已更新,并在已更新时从内存中获取描述符,进一步判断描述符是否有效,并在有效时根据报文信息位从内存中获取报文并转发。本发明能够确保CPU写入内存的报文和DMA控制器实际从内存中读取并发送的报文一致,确保报文传输的准确性,避免采用内存屏障技术所带来的一些问题。内存屏障技术所带来的一些问题。内存屏障技术所带来的一些问题。


技术研发人员:何志川 李磊 秦欢 贾复山 孙文瀚
受保护的技术使用者:苏州盛科通信股份有限公司
技术研发日:2023.07.14
技术公布日:2023/9/14
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐