一种查找引擎实时系统内数据传输的方法和系统的制作方法

文档序号:6598225阅读:147来源:国知局
专利名称:一种查找引擎实时系统内数据传输的方法和系统的制作方法
技术领域
本发明涉及计算机领域的实时操作系统,尤其是指一种查找引擎实时系统内数据
传输的方法和系统。
背景技术
实时操作系统(Real Time Operating System,RTOS)是保证在一定时间限制内完 成特定功能的操作系统,其主要特点是中央处理器(Central ProcessingUnit,CPU)需要在 规定的时间内完成某种操作。随着实时操作系统的广泛应用,所需要处理的业务类型也不 断增加,通常情况下,CPU需要在规定的时间内完成和外部设备进行数据交互的任务,而这 些数据交互任务具有如下的特点1、一次的数据传输数量小;2、需要保证实时传输;3、传 输的执行时间不确定;4、需要频繁的数据传递;5、传输可靠性要求较高。
查找引擎(Search Engine)是路由器、三层交换机等设备的重要功能模块,主要完 成路由查找、数据包分类等操作的硬件加速。由于路由表项存在实时更新的特点,因此查找 引擎通常采用前述的实时操作系统实现。 目前,高带宽的查找引擎通常使用三元内容寻址内存(Ternary ContentAddressable Memory, TCAM) 。 TCAM能够支持精确匹配、最长前缀匹配和任意位匹 配,还能在一次存储访问周期内返回结果,而采用其他技术一般需要多次存储访问才能返 回结果。因此,利用TCAM的查找引擎较其他采用同类技术的查找引擎具备明显的优势。但 是,受到当前工艺水平的限制,TCAM的查找速度很难再大幅度提高,同时容量也很难做到很 大,并且价格昂贵、功耗很大。 现在,由于网络容量的不断扩大导致路由表项增大、路由震荡等原因,因此,通过 实时操作系统实现的查找引擎中,CPU需要对外挂了 TCAM的协处理器进行大量的路由表项 更新等各种操作,使得CPU与协处理器之间需要频繁执行请求命令并返回执行结果,造成 路由表项更新效率低下、CPU占用率高等问题,同时,低数据量的频繁交互也对接口带宽造 成浪费,无法保证系统的稳定性和可靠性。

发明内容
有鉴于此,本发明的主要目的在于提供一种查找引擎实时系统内数据传输的方法 和系统,提高接口的传输效率,释放CPU的处理压力,避免频繁的命令交互占用过多的CPU 资源。 为达到上述目的,本发明的技术方案是这样实现的 本发明提供了一种查找引擎实时系统内数据传输的方法,所述方法包括
CPU接收并存储请求命令; 将所述请求命令封装并发送请求命令包到协处理器中的缓存; 协处理器读取所述请求命令包,并解析出请求命令执行相应操作; 协处理器将执行结果写入缓存,等待全部执行后使用封装所述执行结果并返回结
4果数据包; CPU解析所述结果数据包,校验执行结果后清除对应完成的请求命令,等待下一个 请求命令。 其中,所述CPU解析结果数据包校验执行结果后,还包括 当所述执行结果对应的请求命令被丢弃或者请求命令执行错误时,重发所述请求 命令。 其中,所述CPU存储请求命令步骤中,具体包括 所述CPU将请求命令缓存到外部存储器中。其中,当所述CPU管理多个外挂查找 引擎时,根据所述请求命令的目的查找引擎不同,将所述请求命令缓存到对应的外部存储 器中。
其中,所述协处理器将执行结果写入缓存步骤中,具体包括 当多个CPU管理同一个所述协处理器时,所述协处理器设置多个内部缓存对应不 同的CPU,用来分别存储对应不同CPU发送过来的所述请求命令包的所述执行结果。
其中,将所述请求命令封装的方法,具体包括 封装原则是选择同种类型的请求命令;和/或类型相似的请求命令;和/或数据 量小而且需要频繁的数据传输的请求命令封装在一起; 封装的请求命令包,具体包括数据包起始字段、设备号字段、包长度字段、命令类 型字段、命令长度字段、命令数据字段、校验字段和数据包结束字段。 其中,所述返回结果数据包的方法,具体包括通过中断方式或查询方式返回所述 结果数据包。 本发明还提供了一种查找引擎实时系统内数据传输的系统,所述系统包括CPU 模块和协处理器模块,其中, 所述CPU模块,用于接收并存储请求命令,将请求命令封装成请求命令包并发送 给所述协处理器模块,当结果数据包返回后,解析结果数据包校验执行结果后清除对应完 成的请求命令,等待下一个请求命令; 所述协处理器模块,用于读取所述请求命令包,并解析出所述请求命令执行相应
操作;将执行结果写入缓存,等待全部执行后,将执行结果封装成所述结果数据包并返回。
其中,所述CPU模块包括请求命令分类及控制子模块、请求命令封装子模块、结
果解析子模块和结果分析及重传子模块,其中, 所述请求命令分类及控制子模块,用于接收并储存业务层发送来的请求命令,符 合封装条件后根据封装原则将所述请求命令分类发送给所述请求命令封装子模块进行封 装; 所述请求命令封装子模块,用于接收所述请求命令分类及控制子模块发送来的所 述请求命令,进行封装,并发送给所述协处理器; 所述结果解析子模块,用于解析返回的所述结果数据包,将解析出的所述执行结 果传递给所述结果分析及重传子模块; 所述结果分析及重传子模块,用于校验所述执行结果,返回所述请求命令分类及 控制子模块清除对应完成的请求命令,等待下一个请求命令。 其中,所述协处理模块还包括协处理器请求命令解析子模块、请求命令执行子模块、协处理器结果封装子模块, 所述协处理器请求命令解析子模块,用于解析出请求命令包中的所述请求命令, 并将所述请求命令传递给所述请求命令执行子模块; 所述请求命令执行子模块,用于执行所述请求命令并将执行结果传递给所述协处 理器结果封装子模块; 所述协处理器结果封装子模块,用于封装所述请求命令执行子模块传递来的所述 执行结果,并向CPU模块返回结果数据包。 其中,所述结果分析及重传子模块在校验中,还用于 当所述执行结果对应的请求命令被丢弃或者所述请求命令的执行结果错误时,返 回所述请求命令封装子模块重发所述请求命令。
其中,所述请求命令分类及控制子模块储存请求命令,具体包括 所述请求命令分类及控制子模块缓存请求命令,其中,当一个CPU模块管理多个
外挂查找引擎时,根据请求命令的目的查找引擎不同,将请求命令缓存到对应的不同缓存中。 其中,所述协处理器结果封装子模块在封装前还需要缓存所述执行结果,具体包 括 当多个CPU模块管理同一个协处理器时,协处理器结果封装子模块设置多个内部 缓存对应不同的CPU,用来分别存储对应不同CPU发送过来的所述请求命令包的所述执行结果。 本发明所提供的提高查找引擎数据传输效率的方法和系统,根据请求命令或执行 结果的类型和传输需要,将请求命令或执行结果进行封装,以数据包的形式进行传输,可以 增加每次总线传输的信息量,在不改变TCAM的前提下,提高接口的传输效率,同时在规定 的时间内减少请求命令的执行频率或者增加查询间隔,大幅度的减少执行结果返回时中断 或查询的频率,释放CPU的处理压力,避免CPU资源过多的被占用,保证CPU系统的稳定和 可靠运行。


图1为查找引擎实时系统的结构示意图; 图2为本发明提高查找引擎数据传输效率的方法流程示意图; 图3为本发明中CPU和查找引擎之间的更新指令封装的请求命令包结构示意图; 图4a为本发明中一种DEV_ID译码的构造示意图; 图4b为本发明中一种CMD_TYPE译码的构造示意图; 图5为本发明提高查找引擎数据传输效率的系统结构示意图; 图6为本发明提高查找引擎数据传输效率的系统的详细结构图。
具体实施例方式
为了更好的理解本发明,先介绍一下查找引擎实时系统,如图1所示查找引擎通 常包括CPU 11、外部存储器12、桥片13、协处理器14和TCAM 15。 CPU ll,用于系统的控制和管理。CPU中通常还包括10控制器、内部cache等部分。CPU可以根据程序执行时每条指令的要求,向存储器、运算器、输入输出设备发出控制信号,控制计算机各个部分的运行。在本发明中主要负责路由计算、查找引擎更新以及系统控制管理等功能。内部cache配置使得CPU信息存取信息的速度得到提高;10控制器是CPU11与外部设备通讯的接口。 外部存储器12,是为了弥补CPU 11内存容量不足和长期存储信息而设的存储装置,通常用于存储业务层发送来的请求命令等。 桥片13,又称高速外部互联总线(PCI-E/PCI),用于连接CPU 11和协处理器14。在一个或多个CPU 11外挂一个或多个协处理器14的情况下,需要通过桥片13建立各个CPU11和各个协处理器14之间点对点的通讯方式。 协处理器14,用于与CPU ll—起使用来执行运算。协处理器14的功能是在硬件中实现替代几种软件的指令。通过将多种代码指令作为单一指令,减少了代码指令的数目,以及在硬件中直接实现指令的方式,实现代码加速。在本发明中协处理器14通过外挂TCAM,完成IP报文的转发处理。通常情况下所述协处理器14可以通过网络处理器、可编程逻辑门阵列(Field ProgrammingGate Array,FPGA),以及其他专用集成电路(A卯licationSpecific IntegratedCircuits, ASIC)来实现。
TCAM 15,用于实现查找引擎功能。 本发明的基本思想是在上述架构中,首先CPU接收并存储请求命令;将请求命令封装为请求命令包并发送到协处理器中的缓存;协处理器读取请求命令包,并解析出请求命令执行相应操作;将执行结果写入缓存,等待全部执行后封装执行结果为结果数据包并返回;CPU解析结果数据包校验执行结果后清除对应完成的请求命令,等待下一个请求命令。 下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。 图2为本发明一种提高查找引擎数据传输效率的方法流程示意图,如图2所示,本
发明包括以下步骤 步骤201, CPU接收并存储请求命令; 具体的,CPU接收由业务层发送过来的请求命令,并将请求命令缓存到外部存储器中。其中,当该CPU管理多个外挂查找引擎时,根据请求命令的目的不同查找引擎不同,将请求命令缓存到对应的外部存储器中。所述的请求命令可以是CPU和查找引擎之间的更新指令。 步骤202,封装请求命令; 具体的,当定时器溢出或达到固定的请求命令数目时,针对请求命令进行封装操作。如果请求命令之间间隔时间过长,采用等待固定数目封装的方式,会导致请求不能及时执行,对相应业务或功能造成影响。因此采用定时器或固定数目封装的方式进行封装。具体的,当请求命令密集时,采用达到固定数目的请求命令时封装,所述的固定数目根据不同的应用场合,综合请求命令发起频率、请求命令包长度、中断处理效率和协处理器内部资源等因素后选定;而在请求命令稀疏时,采用等待固定时间封装,所述的固定时间可以根据需要具体设定,如1微秒或者1毫秒。请求命令的封装原则是根据实际情况,尽量选择同种类型的请求命令或者类型相似的请求命令封装在一起,这样可以使封装更加简单;还可以将数据量小而且需要频繁的数据传输的请求命令封装在一起,如需要频繁的中断通知CPU进
7行处理,或者CPU需要频繁的查询方式来读取协处理器数据的请求命令封装在一起。采用等待固定时间并根据上述封装原则对请求命令进行封装,可以在规定的时间内减少请求命令的执行频率或者增加查询间隔。 具体的,请求命令封装方式,如图3所示为CPU和查找引擎之间的更新指令封装的请求命令包结构示意图,每个请求命令包,由以下字段构成 SOP 301 :数据包起始字段,表示一个数据包的起始,SOP字段可以是一个固定的32位的无符号整数或者一个累加的数据包序列描述符,用以标识一个数据包在存储区中和上一个数据包之间的边界; DEV_ID 302 :设备号字段,描述当前的数据包的目的地址,图4a列出了一种可能的DEV_ID译码,例如,0表示该数据包的目的地址是CPUO, 4表示该数据包的目的地址是系统中的第一个查找引擎; PKT_LEN 303 :包长度字段,描述当前数据包的总长度,协处理器可以根据该字段来解析请求命令; CMD_TYPE 304 :命令类型字段,描述当前数据包的命令类型,图4b列出了一种可能的CMDJTPE译码,0表示查找引擎读命令,1表示查找引擎写寄存器命令,2表示查找引擎写数据命令,3表示查找引擎查找命令,4表示查找引擎删除命令,5表示协处理器读寄存器命令,6表示协处理器写寄存器命令,7表示协处理器读数据命令,8表示协处理器写数据命令…… CMD_LEN 305 :命令长度字段,描述当前命令长度,请求命令封装时针对等长的请求命令进行封装可以降低封装和解析的难度,实际封装时也可以针对不等长的命令进行;
CMD_DATA 306 :命令数据字段,描述填充进行封装的数据包,针对不等长的请求命令进行填充,按照相同长度进行发送,即不同请求命令包长度相同,可以大大降低协处理器侧命令解析的代价; CRC 307 :校验字段,用于对封装的请求命令包进行校验,针对高可靠性的接口数据传输CRC(Cyclic Redundancy Check)非常有必要,下面列出一种可能的CRC32多项式 EOP 308 :数据包结束字段,表示一个数据包的结束,E0P字段可以是一个固定的32位的无符号整数或者一个累加的数据包序列描述符,用于标识一个数据包在存储区中和
下一个数据包之间的边界。 步骤203 ,发送请求命令包; 具体的,由于封装后的数据量比较大,因此可以利用直接存储器访问(DirectMemory Access, DMA)控制器进行传输,CPU首先对DMA控制器进行初始化,并向10控制器发出操作命令,然后,当CPU执行完当前的传输后即刻挂起或只执行内部操作,由DMA控制器获得外部互联总线控制权后,输出读写命令直接传送数据,使CPU的效率大为提高,同时提高了总线带宽的利用率。发送的请求命令包,最好先进行CRC校验,以保证数据的完整性。所述请求命令包发送到协处理器的内部缓存中,当多个CPU管理同一个协处理器时,协处理器需要设置多个内部缓存对应不同的CPU,用来分别存储不同CPU发送过来的请求命令包。 步骤204,协处理器读取请求命令包、解析出请求命令;
具体的,协处理器从内部缓存中读出请求命令包,并检查请求命令包的CRC字段,
在校验出错时,需要通知CPU重传,以保证系统的可靠性。协处理器内部的命令解析可以由
硬件实现,当使用网络处理器时,可利用网络处理器中的微码部分实现。 步骤205,协处理器执行请求命令,并将执行结果写入对应缓存; 具体的,协处理器按照顺序执行请求命令,并将执行结果写入步骤203中所述的
对应不同CPU的缓存中。 步骤206,等待所有命令执行完,将所有执行结果进行封装,并返回结果数据包;
具体的,等待所有命令执行完,将所有执行结果按照步骤202中描述的封装方法进行封装。协处理器内部的封装可以由硬件实现,当使用网络处理器时,可利用网络处理器中的微码部分实现。返回结果数据包的方法可以是通过中断方式或查询方式以及其他现有方法。 当通过中断方式返回结果数据包时,协处理器向CPU发出结果准备好返回中断,CPU接到返回中断后读取结果数据包。其中,协处理器发出的结果准备好返回中断最好占用CPU固定的中断引脚,如果采用多级中断,即与系统多个中断复用一个中断引脚,则需要读取多级中断寄存器判断中断类型,会影响中断的处理效率。 当通过查询方式返回结果数据包时,协处理器置结果准备好标志,CPU则采用固定时间间隔查询协处理器的结果准备好标志,查询到结果准备好标志后读取结果数据包,并清除结果准备好标志。其中,时间间隔的选取可以根据封装的返回结果数据包的数量以及路由表项更新频率等因素综合选取。通过定时器来实现,在CPU发送请求命令包时启用定时器,在结果数据包返回后没有新的请求命令包发送时关闭定时器,这样可以更好的降低CPU的利用率。 步骤207, CPU读取结果数据包并进行解析,判断是否有请求命令被丢弃,当有请
求命令被丢弃时,执行步骤208 ;当请求命令被正常执行,则执行步骤209 ; 其中,以N(N为1、2、3……的自然数)个请求命令被封装为例,协处理器同样会返
回N个执行结果。每个执行结果反馈了对应的请求命令是否被正确执行的情况,CPU需要
检查每个执行结果,当出现没有执行结果的情况时,说明所对应的请求命令被丢弃,或者执
行结果出现错误时,都需要重新发送请求命令。为了保证系统的性能,可以将重新发送的请
求命令送入下一个封装进程,与业务层发送来的新的请求命令一起封装并发送。 步骤208,返回步骤202重发被丢弃的请求命令; 步骤209,将执行结果返回给业务层或直接丢弃并返回步骤201清除正确执行的请求命令并等待新的请求命令。 图5为本发明提高查找引擎数据传输效率的系统结构示意图,该系统包括CPU模块51和协处理器模块52,其中, CPU模块51,用于接收并存储请求命令,将请求命令封装为请求命令包并发送给协处理器模块52,当结果数据包返回后,解析结果数据包校验执行结果后清除对应完成的请求命令,等待下一个请求命令; 协处理器模块52,用于读取请求命令包,并解析出请求命令执行相应操作;将执行结果写入缓存,等待全部执行后封装执行结果为结果数据包并返回。 图6为本发明提高查找引擎数据传输效率的系统的详细结构图,该系统包括请求命令分类及控制子模块601、请求命令封装子模块602、协处理器请求命令解析子模块603、请求命令执行子模块604、协处理器结果封装子模块605、结果解析子模块606和结果分析及重传子模块607,其中, 请求命令分类及控制子模块601 ,位于CPU模块51中,用于接收并储存业务层发送来的请求命令,符合封装条件后根据封装原则将请求命令分类发送给请求命令封装子模块602进行封装; 具体的,请求命令分类及控制子模块601接收由业务层发送过来的请求命令,并将请求命令缓存。其中,当一个CPU管理多个外挂查找引擎时,根据请求命令的目的不同查找引擎不同,将请求命令缓存到对应的不同缓存中。所述的请求命令可以是CPU和查找引擎之间的更新指令。当定时器溢出或达到固定的请求命令数目时,则符合进行封装的条件,可以将请求命令发送给请求命令封装子模块602进行封装。如果请求命令之间间隔时间过长,采用等待固定数目封装的方式,会导致请求不能及时执行,对相应业务或功能造成影响。因此采用定时器或固定数目封装的方式进行封装。具体的,当请求命令密集时,采用达到固定数目的请求命令时封装,所述的固定数目根据不同的应用场合,综合请求命令发起频率、请求命令包长度、中断处理效率和协处理器内部资源等因素后选定;而在请求命令稀疏时,采用等待固定时间封装,所述的固定时间可以根据需要具体设定,如1微秒或者1毫秒。请求命令的所述封装原则是根据实际情况,尽量选择同种类型的请求命令或者类型相似的请求命令封装在一起,这样可以使封装更加简单;还可以将数据量小而且需要频繁的数据传输的请求命令封装在一起,如需要频繁的中断通知CPU进行处理,或者CPU需要频繁的查询方式来读取协处理器数据的请求命令封装在一起。采用等待固定时间并根据上述封装原则对请求命令进行封装,可以在规定的时间内减少请求命令的执行频率或者增加查询间隔。 请求命令封装子模块602,位于CPU模块51中,用于接收请求命令分类及控制子模块601发送来的请求命令,进行封装,并发送给协处理器请求命令解析子模块603 ;
具体的,请求命令封装方式,如图3所示为CPU和查找引擎之间的更新指令封装的请求命令包结构示意图,每个请求命令包,由以下字段构成 SOP 301 :数据包起始字段,表示一个数据包的起始,SOP字段可以是一个固定的32位的无符号整数或者一个累加的数据包序列描述符,用以标识一个数据包在存储区中和上一个数据包之间的边界; DEV_ID 302 :设备号字段,描述当前的数据包的目的地址,图4a列出了一种可能的DEV_ID译码,例如,0表示该数据包的目的地址是CPUO, 4表示该数据包的目的地址是系统中的第一个查找引擎; PKT_LEN 303 :包长度字段,描述当前数据包的总长度,协处理器可以根据该字段来解析请求命令; CMDJTPE 304 :命令类型字段,描述当前数据包的命令类型,图4b列出了一种可能的CMDJTPE译码,0表示查找引擎读命令,1表示查找引擎写寄存器命令,2表示查找引擎写数据命令,3表示查找引擎查找命令,4表示查找引擎删除命令,5表示协处理器读寄存器命令,6表示协处理器写寄存器命令,7表示协处理器读数据命令,8表示协处理器写数据命令……
10
CMD_LEN 305 :命令长度字段,描述当前命令长度,请求命令封装时针对等长的请求命令进行封装可以降低封装和解析的难度,实际封装时也可以针对不等长的命令进行;
CMD_DATA 306 :命令数据字段,描述填充进行封装的数据包,针对不等长的请求命令进行填充,按照相同长度进行发送,即不同请求命令包长度相同,可以大大降低协处理器侧命令解析的代价; CRC 307 :校验字段,用于对封装的请求命令包进行校验,针对高可靠性的接口数据传输CRC(Cyclic Redundancy Check)非常有必要,下面列出一种可能的CRC32多项式 EOP 308 :数据包结束字段,表示一个数据包的结束,EOP字段可以是一个固定的32位的无符号整数或者一个累加的数据包序列描述符,用于标识一个数据包在存储区中和下一个数据包之间的边界。 在所述发送过程中,由于封装后的数据量比较大,因此可以利用DMA控制器进行传输,CPU首先对DMA控制器进行初始化,并向10控制器发出操作命令,然后,当CPU执行完当前的传输后即刻挂起或只执行内部操作,由DMA控制器获得外部互联总线控制权后,输出读写命令直接传送数据,使CPU的效率大为提高,同时提高了总线带宽的利用率。发送的请求命令包,最好先进行CRC校验,以保证数据的完整性。所述请求命令包发送到协处理器请求命令解析子模块603的内部缓存中,当多个CPU管理同一个协处理器时,协处理器请求命令解析子模块603需要设置多个内部缓存对应不同的CPU,用来分别存储不同CPU发送过来的请求命令包。 协处理器请求命令解析子模块603,位于协处理器模块52中,用于解析请求命令包中的请求命令,并将请求命令传递给请求命令执行子模块604 ; 具体的,协处理器请求命令解析子模块603从内部缓存中读出请求命令包,并检查请求命令包的CRC字段,在校验出错时,需要通知CPU重传,以保证系统的可靠性。协处理器请求命令解析子模块603内部的命令解析可以由硬件实现,当使用网络处理器时,可利用网络处理器中的微码部分实现。 请求命令执行子模块604,位于协处理器模块52中,用于执行请求命令并将执行结果传递给协处理器结果封装子模块605 ; 具体的,请求命令执行子模块604,按照顺序执行请求命令,并将执行结果写入协处理器结果封装子模块605内的缓存中,当多个CPU管理同一个协处理器时,协处理器结果封装子模块605需要设置多个内部缓存对应不同的CPU,用来分别存储对应不同CPU发送过来的请求命令包的执行结果。当请求命令是针对路由表项更新时,请求命令执行模块完成路由表项的更新的操作。 协处理器结果封装子模块605,位于协处理器模块52中,用于封装请求命令执行子模块604传递来的执行结果,并返回结果数据包; 具体的,等待所有命令执行完,将所有执行结果按照请求命令封装子模块602中描述的相同的封装方法进行封装。协处理器结果封装子模块605内部的封装可以由硬件实现,当使用网络处理器时,可利用网络处理器中的微码部分实现。返回结果数据包的方法可以是通过中断方式或查询方式以及其他现有方法。 结果解析子模块606,位于CPU模块51中,用于解析返回的结果数据包,将解析出
11的执行结果传递给结果分析及重传子模块607 ; 具体的,根据请求命令封装子模块602封装的请求命令数,解析出各请求命令的
执行结果,将解析出的执行结果传递给结果分析及重传子模块607. 结果分析及重传子模块607,位于CPU模块51中,用于校验执行结果。 具体的,判断是否有请求命令被丢弃或执行错误,当有请求命令被丢弃或执行错
误时,返回请求命令封装子模块602重发被丢弃或执行错误的请求命令;当请求命令被正
常执行,则将执行结果返回业务层或直接丢弃并返回请求命令分类及控制子模块601清除
正确执行的请求命令并等待新的请求命令。 其中,以N(N为1、2、3……的自然数)个请求命令被封装为例,结果解析子模块606应该解析出N个执行结果。每个执行结果反馈了对应的请求命令是否被正确执行的情况,结果分析及重传子模块607检查每个执行结果,当出现没有执行结果的情况时,说明所对应的请求命令被丢弃,或者执行结果出现错误时,都需要重新发送请求命令。为了保证系统的性能,可以将重新发送的请求命令送入下一个封装进程,与业务层发送来的新的请求命令一起封装并发送。 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
一种查找引擎实时系统内数据传输的方法,其特征在于,所述方法包括CPU接收并存储请求命令;将所述请求命令封装并发送请求命令包到协处理器中的缓存;协处理器读取所述请求命令包,并解析出请求命令执行相应操作;协处理器将执行结果写入缓存,等待全部执行后使用封装所述执行结果并返回结果数据包;CPU解析所述结果数据包,校验执行结果后清除对应完成的请求命令,等待下一个请求命令。
2. 根据权利要求1所述的方法,其特征在于,所述CPU解析结果数据包校验执行结果 后,还包括当所述执行结果对应的请求命令被丢弃或者请求命令执行错误时,重发所述请求命令。
3. 根据权利要求1或2所述的方法,其特征在于,所述CPU存储请求命令步骤中,具体 包括所述CPU将请求命令缓存到外部存储器中;其中,当所述CPU管理多个外挂查找引擎 时,根据所述请求命令的目的查找引擎不同,将所述请求命令缓存到对应的外部存储器中。
4. 根据权利要求1或2所述的方法,其特征在于,所述协处理器将执行结果写入缓存步 骤中,具体包括当多个CPU管理同一个所述协处理器时,所述协处理器设置多个内部缓存对应不同的 CPU,用来分别存储对应不同CPU发送过来的所述请求命令包的所述执行结果。
5. 根据权利要求1或2所述的方法,其特征在于,将所述请求命令封装的方法,具体包括封装原则是选择同种类型的请求命令;和/或类型相似的请求命令;和/或数据量小 而且需要频繁的数据传输的请求命令封装在一起;封装的请求命令包,具体包括数据包起始字段、设备号字段、包长度字段、命令类型字 段、命令长度字段、命令数据字段、校验字段和数据包结束字段。
6. 根据权利要求1或2所述的方法,其特征在于,所述返回结果数据包的方法,具体包 括通过中断方式或查询方式返回所述结果数据包。
7. —种查找引擎实时系统内数据传输的系统,其特征在于,所述系统包括CPU模块和 协处理器模块,其中,所述CPU模块,用于接收并存储请求命令,将请求命令封装成请求命令包并发送给所 述协处理器模块,当结果数据包返回后,解析结果数据包校验执行结果后清除对应完成的 请求命令,等待下一个请求命令;所述协处理器模块,用于读取所述请求命令包,并解析出所述请求命令执行相应操作; 将执行结果写入缓存,等待全部执行后,将执行结果封装成所述结果数据包并返回。
8. 根据权利要求7所述的系统,其特征在于,所述CPU模块包括请求命令分类及控制 子模块、请求命令封装子模块、结果解析子模块和结果分析及重传子模块,其中,所述请求命令分类及控制子模块,用于接收并储存业务层发送来的请求命令,符合封 装条件后根据封装原则将所述请求命令分类发送给所述请求命令封装子模块进行封装;所述请求命令封装子模块,用于接收所述请求命令分类及控制子模块发送来的所述请 求命令,进行封装,并发送给所述协处理器;所述结果解析子模块,用于解析返回的所述结果数据包,将解析出的所述执行结果传 递给所述结果分析及重传子模块;所述结果分析及重传子模块,用于校验所述执行结果,返回所述请求命令分类及控制 子模块清除对应完成的请求命令,等待下一个请求命令。
9. 根据权利要求7或8所述的系统,其特征在于,所述协处理模块还包括协处理器请 求命令解析子模块、请求命令执行子模块、协处理器结果封装子模块,所述协处理器请求命令解析子模块,用于解析出请求命令包中的所述请求命令,并将 所述请求命令传递给所述请求命令执行子模块;所述请求命令执行子模块,用于执行所述请求命令并将执行结果传递给所述协处理器 结果封装子模块;所述协处理器结果封装子模块,用于封装所述请求命令执行子模块传递来的所述执行 结果,并向CPU模块返回结果数据包。
10. 根据权利要求8所述的系统,其特征在于,所述结果分析及重传子模块在校验中, 还用于当所述执行结果对应的请求命令被丢弃或者所述请求命令的执行结果错误时,返回所 述请求命令封装子模块重发所述请求命令。
11. 根据权利要求8或10所述的系统,其特征在于,所述请求命令分类及控制子模块储 存请求命令,具体包括所述请求命令分类及控制子模块缓存请求命令,其中,当一个CPU模块管理多个外挂 查找引擎时,根据请求命令的目的查找引擎不同,将请求命令缓存到对应的不同缓存中。
12. 根据权利要求9所述的系统,其特征在于,所述协处理器结果封装子模块在封装前 还需要缓存所述执行结果,具体包括当多个CPU模块管理同一个协处理器时,协处理器结果封装子模块设置多个内部缓存 对应不同的CPU,用来分别存储对应不同CPU发送过来的所述请求命令包的所述执行结果。
全文摘要
本发明公开了一种查找引擎实时系统内数据传输的方法,具体包括CPU接收并存储请求命令;将请求命令封装并发送请求命令包到协处理器中的缓存;协处理器读取请求命令包,并解析出请求命令执行相应操作;将执行结果写入缓存,等待全部执行后封装执行结果并返回结果数据包;CPU解析结果数据包校验执行结果后清除对应完成的请求命令,等待下一个请求命令;本发明还公开了一种查找引擎实时系统内数据传输的系统,基于本发明的方法和系统,可以提高传输的效率、避免CPU资源过多的被占用,保证CPU系统的稳定和可靠运行。
文档编号G06F15/163GK101777037SQ201010110829
公开日2010年7月14日 申请日期2010年2月3日 优先权日2010年2月3日
发明者李彧, 王志忠, 缪众林, 钱晓东 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1