公开/公告号CN101140549A
专利类型发明专利
公开/公告日2008-03-12
原文格式PDF
申请/专利权人 中兴通讯股份有限公司;
申请/专利号CN200610127505.X
发明设计人 陈拥兵;
申请日2006-09-07
分类号G06F13/24;H04L12/56;
代理机构北京中博世达专利商标代理有限公司;
代理人申健
地址 518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦6层法律部
入库时间 2023-12-17 19:54:11
法律状态公告日
法律状态信息
法律状态
2016-11-09
未缴年费专利权终止 IPC(主分类):G06F13/24 授权公告日:20100512 终止日期:20150907 申请日:20060907
专利权的终止
2010-05-12
授权
授权
2008-05-07
实质审查的生效
实质审查的生效
2008-03-12
公开
公开
技术领域
本发明涉及网络处理器应用技术,特别涉及核心处理器与微引擎的上报、下发及内存控制通信方法。
背景技术
随着通信技术的发展,网络处理器的应用越来越广泛。网络处理器是用来完成网络数据报文转发功能的器件,通常由多个独立的微引擎和一个核心处理器组成。多个独立的微引擎用来完成网络数据包的接收、处理,存储和转发;而核心处理器主要用来对转发表项进行配置,对微引擎的转发流程进行控制,以及对某些特定的控制报文进行处理。在实际应用中,通常由微引擎从网络接口上收到报文,进行判断,如果是转发的报文,根据核心处理器的一些配置,进行转发,如果是需要核心处理器处理的报文,则将数据包送核心处理器处理。如果核心处理器有需要发送到接口的报文,则也是将数据包送微引擎,由微引擎进行实际的发送。另外,核心处理器还对微引擎的处理流程进行控制,如开启或关闭某些特定的处理流程,这些控制通常是采用共享内存的方法来实现的。
因此,核心处理器如何与微引擎之间通信,即微引擎如何从核心处理器获得需要发送的报文进行发送,如何获得核心处理器的控制信息会直接影响到微引擎的处理效率。
如图1所示,现在的技术实现方法包括以下三个过程:
微引擎上送核心处理器数据包:微引擎从接口接收数据包,分配BD(包描述单元),分析处理;发现是需要送核心处理器处理的数据包,将数据包的BD写入与核心处理器通信的环形队列;核心处理器起动扫描任务,不停的扫描微引擎与核心处理器的通信的环形队列,如果发现有数据包,则从环形队列中读出处理,如果没有,则跳过,进行下一次扫描。
核心处理器下送微引擎的数据包:核心处理器如果需要向接口发送数据包,则使用与微引擎相同的描述包的结构将数据包整理好,将数据包的BD写入与微引擎通信的环形队列,微引擎用一个单独的线程不停地扫描核心处理器与微引擎通信的环形队列,如果发现有数据包,则微引擎从环形队列中读出处理,如果没有,则跳过,进行下一次扫描。
核心处理器对微引擎的功能控制:核心处理器控制微引擎的功能处理流程是通过共享内存的方法,核心处理器与微引擎共享的某块内存,该内存中定义了具体的微引擎的功能处理流程。如果需要改变微引擎的某个处理功能,修改用于表示微引擎处理流程的共享内存的值。微引擎在处理每个数据包时,都读取该共享内存,根据共享内存的值,判断该数据包的处理流程。
上面的方法中,在数据包的通信中,无论是核心处理器还是微引擎,都需要不停的扫描通信的环形队列。而在实际的使用中,需要送核心处理器处理以及核心处理器下送的报文是很少的。这样就对网络处理器的资源造成了浪费,影响了网络处理器的处理能力。另外,核心处理器对微引擎的功能流程的控制所用的共享内存,微引擎在每个数据包时都需要读,微引擎对外存的读写是非常耗费微引擎的处理能力的。而且,这些流程控制的更改频率相对数据包来说是非常低的。所以,这种方法也严重影响了网络处理器的处理能力。
发明内容
为了克服现有技术的缺陷和不足,本发明的目的在于提供一种能够降低网络处理器的资源浪费,并提高其处理能力的核心处理器与微引擎的上报、下发及内存控制通信方法。
为了达到上述目的,本发明一种核心处理器与微引擎的上报通信方法,包括以下步骤:
(A1)当微引擎上报核心处理器数据包时,微引擎向核心处理器发送中断信号;
(A2)核心处理器收到该中断信号后,对该数据包进行接收。
作为本发明的进一步改进,所述的步骤(A1)具体为:
(A11)微引擎从接口收到数据包,微引擎判断该数据包是否需要上送到核心处理器,如果判断结果为是,则进入步骤(A12);如果判断结果为否,则步骤结束;
(A12)微引擎将数据包及对应的包描述单元放到微引擎与核心处理器间的环形队列中,并向核心处理器发送中断信号。
作为本发明的进一步改进,所述的步骤(A2)具体为:
(A21)核心处理器收到该中断信号后,在微引擎与核心处理器间的环形队列中读取数据包及包描述单元。
本发明一种核心处理器与微引擎间的下发通信方法,包括以下步骤:
(B1)当核心处理器向微引擎下发数据包时,核心处理器向微引擎发送信号量;
(B2)微引擎收到该信号量后,对该数据包进行接收。
作为本发明的进一步改进,所述的步骤(B1)具体为:
(B11)当核心处理器需要向微引擎下发数据包时,核心处理器将数据包及对应的包描述单元发送到微引擎与核心处理器间的环形队列中;
(B12)核心处理器向微引擎中处理下送数据包的微引擎线程发送信号量。
作为本发明的进一步改进,所述的步骤(B2)具体为:
(B21)微引擎中处理下送数据包的微引擎线程收到信号量后,从在微引擎与核心处理器间的环形队列中读取数据包及包描述单元。
本发明一种核心处理器与微引擎间的内存控制通信方法,包括以下步骤:
(C1)当核心处理器改变微引擎的处理功能时,核心处理器向微引擎发送信号量;
(C2)微引擎收到该信号量后,获取该处理功能。
作为本发明的进一步改进,所述的步骤(C1)具体为:
(C11)当核心处理器改变微引擎的处理功能时,核心处理器修改与微引擎共享的用于表示微引擎处理流程的共享内存;
(C12)核心处理器向微引擎中用于读取微引擎处理流程内存的微引擎线程发送信号量。
作为本发明的进一步改进,所述的步骤(C2)具体为:
(C21)微引擎线程检测核心处理器是否发送有信号量,如果有,则进入步骤(C22);如果没有,则步骤结束;
(C22)微引擎线程从用于表示微引擎处理流程的共享内存中读取修改后的新值,并将该新值发送到预先分配的局部存储单元中。
采用上述的方法后,由于在需要上报、下发及内存控制时,通过发送信号量或是中断信号来告知核心处理器或微引擎,与现有技术相比,不需要核心处理器或微引擎不停的扫描环形队列,避免为了获得对端的信息必须循环监测的过程,也避免了因为循环检测所引起的资源浪费,从而提高了网络处理器的处理性能。
附图说明
图1为现有技术中核心处理器与微引擎的通信示意图;
图2为本发明中核心处理器与微引擎的通信示意图。
具体实施方式
网络处理器中核心处理器与微引擎之间的通信方法,采用微引擎与核心处理器之间的中断和信号量的机制。微引擎在上送数据报文时,同时发送中断给核心处理器,核心处理器收到中断后进行相应的处理;核心处理器在下送报文或者需要更改微引擎处理功能流程时,同时发送信号量给对应的微引擎线程,微引擎线程收到信号量后进行相应的处理。方法包括微引擎上送核心处理器数据报文,核心处理器下送微引擎数据报文,以及核心处理器通过共享内存控制微引擎功能处理流程。
微引擎上送核心处理器数据报文的处理过程为:微引擎从接口接收数据包,分配BD,分析处理;发现是需要送核心处理器处理的数据包,将数据包的BD写入与核心处理器通信的环形队列,同时向核心处理器发送一个中断信号。核心处理器在收到中断信号后,去读取微引擎与核心处理器的环形队列,从中读取数据包,进行处理,直到将环形队列中的所有数据包都处理完。
核心处理器下送微引擎数据包处理过程为:微引擎不单独分配线程处理核心处理器下送报文,而是在某个引擎的一个线程安排一段代码执行处理下送数据报文,且处理过程是由核心处理器通过信号量进行触发。即核心处理器有需要下送的数据包,则使用与微引擎相同的描述包的结构将数据包整理好,将数据包的BD写入与微引擎通信的环形队列,同时通过发送信号量的方法通知处理下送数据包的线程。处理下送数据包的线程收到信号量后,读取核心处理器与微引擎之间的通信环形队列,从中读出数据包,进行发送处理,直到将所有的数据包都发送完成。
核心处理器控制微引擎功能处理流程为:微引擎安排一个线程监测核心处理器发送的信号量,如果没有核心处理器发送的信号量,则直接跳过,进行正常的数据包处理。如果监测到核心处理器发送的信号量,则读取用于控制功能处理流程的共享内存,将结果保存的局部存储单元(引擎内部线程共享该存储单元)中,供其它线程使用。核心处理器在需要更改微引擎的功能处理流程时,更新共享内存,同时向用于专门读取控制功能处理流程共享内存的线程发送信号量。
下面结合附图对本发明的具体实施方式作进一步详细说明。
本发明采用微引擎与核心处理器之间的中断和信号量的机制,在需要对端处理时发送中断或者信号量,对端收到中断或信号量后进行相应的处理,包括微引擎上送核心处理器数据报文的处理,核心处理器下送微引擎数据包处理,核心处理器控制微引擎功能处理。
如图2所示,微引擎上送核心处理器数据报文的处理过程包括:
2a,微引擎从接口收到数据包;
2b,判断是需要上送核心处理器的数据包,将数据包及对应的BD放到微引擎与核心处理器的环形队列中;
2c,微引擎向核心处理器发送中断信号;
2d,核心处理器在收到中断信号后起动收包流程,从环形队列中读取数据包,进行处理,直到将环形队列中的所有数据包读出,结束接收处理。
本发明所述的方法中,核心处理器下送微引擎数据包处理过程包括:
2e,核心处理器有需要发送到微引擎的数据包,将数据包组织好,将数据包及对应的BD写入核心处理器与微引擎通信的环形队列中;
2f,核心处理器向微引擎中包含处理下送数据包的微引擎线程发送信号量。
2g,包含处理下送数据包的微引擎线程收到信号量后,从环形队列中读取数据包。
2h,微引擎将数据包发送到接口。
其中,处理下送数据包的微引擎线程不单独分配,而是与其它线程相同,只是通过线程号增加下送报文处理流程。在没有下送报文时,其处理流程同其它线程,只是在有下送报文时,处理下送报文。
本发明所述的方法中,核心处理器控制微引擎功能处理流程的处理过程包括:
2i,核心处理器需要改变微引擎的功能处理流程,根据修改的功能,修改与微引擎共享的用于表示微引擎处理流程的共享内存;
2j,核心处理器向微引擎中包含读取微引擎处理流程内存的微引擎线程发送信号量;
2k,微引擎中相关线程收到信号量后,从用于表示微引擎处理流程的共享内存中读取新值,并将新值放到事先分配的局部存储单元中,进行后续处理。其它的处理线程直接从局部存储单元中读取控制功能值。
这里的用于处理读取控制微引擎处理流程内存的线程是每个引擎指定一个,而不是微引擎中所有的线程都去读内存。读取控制微引擎处理流程内存操作使用线程号隔开。
应当指出的是,本发明方法对本领域普通技术人员来说,可以根据本发明的技术方案及其有益效果进行改变或替换,而在不违背本发明精神和主旨的所有改变或替换都应涵盖于本发明权利要求书的保护范围之内。
机译: 装有条形码图像进行通信的系统核心控制处理器的方法,装置和可穿戴部件
机译: 装有条形码图像进行通信的系统核心控制处理器的方法,装置和可穿戴部件
机译: 内存访问方法,内存控制器和处理器核心