专利名称:基于网络处理器的流相关控制信息高速缓冲存储器的利记博彩app
技术领域:
本发明是一种用于对数据包处理中的控制信息进行缓存的机构,可以应用于互联网络中的高速并且复杂的报文处理,属于计算机技术领域。
背景技术:
网络处理器属于专用处理器的一种,通常应用于灵活高速的数据包处理。它结合了ASIC和通用CPU的优势,具有能够缩短路由器开发周期和延长网络设备生存期的优点。一些厂商已经陆续推出了各类网络处理器产品。为了达到预期的目的,这些产品通常采用了很多方兴未艾的新技术。比如,最为常见的做法就是将多个处理单元集成在同一个网络处理器上,并且使用针对网络应用进行了优化的专用指令集。另外一个经常采用的技术是将功能比较固定的操作用协处理器或专用硬件来完成,以减少软件的开销,大幅度地提升性能。由于网络处理器需要处理大量的数据包,因此数据包的移动通常由专用的硬件完成。当处理开始进行的时候,所需要的数据包字段通常是已经保存在专用寄存器堆中的,因此我们认为对数据包字段的访问是不存在访问延迟的。但是,网络应用所需要的控制信息,比如流量统计信息、流的状态信息等,由于所占据的空间较大,一般是保存在片外存储器件中的。即便有些网络处理器使用较为高速的SRAM作为控制信息存储器,但是由多处理单元而导致的排队使得访问延迟与处理周期相比仍然非常可观,在某些网络处理器产品中甚至达到数百倍。因此,控制信息的访问延迟隐藏仍然是网络处理器中比较关键的技术。
多线程是网络处理器广泛采用的一种延迟隐藏技术。但是,目前许多复杂的网络应用使得数据包之间的并行性逐渐减弱,即后面的数据包的处理依赖于前面数据包处理的结果。这一现象在流统计、流量监测等基于流的应用中更为显著。如果把数据包不加区别地分配给网络处理器中的各个线程,就会导致复杂的同步;假如把相互之间存在依赖性的数据包分配给同一线程,又会大大降低数据包之间的并行性,尤其是在网络处理器使用较为广泛但是数据包之间并行性较低的边缘级链路中,网络处理器的性能会迅速地恶化[1]。此外,多线程还存在对存储器带宽要求较高的缺点。
Dionisios等人为网络处理器设计了一种智能化的IO系统,其数据包处理所需要的控制信息被直接写入网络处理器处理单元的寄存器堆中[2]。这种方法需要使用较为昂贵的SRAM作为网络处理器外部的控制信息存储器,所支持的数据量以及并发流的数目都很小,不能实现复杂的网络应用。
Huan Liu.A Trace Driven Study of Packet Level Parallelism.Proceedings of IEEEInternational Conference on Communications 2002,Vol.4,2002,pp.2191-2195. D.N.Pnevmatikatos,I.Sourdis and K.Vlachos.An Efficient,Low-Cost I/O Subsystemfor Network Processors.IEEE Design and Test of Computers,Vol.20,No.4,July/August 2003,pp.56-64.
发明内容
本发明的目的在于,设计一种网络处理器控制信息访问延迟隐藏的机制,使它既能够使用DRAM等大容量低成本的存储器件来完成较为复杂的功能,又可以减少对网络处理器存储器带宽的占用,同时还能兼顾网络处理器对于性能确定性的需求。
对于大多数网络应用来说,属于同一个流的数据包共享同样的数据信息,如流的状态信息、统计信息以及路由查找的结果等,称为流相关控制信息。本发明就是为流相关控制信息专门设计的高速缓冲存储器,称为Flow-Cache。高速缓冲存储器的使用,使得网络处理器可以采用DRAM等大容量低成本的存储器件作为网络处理器的控制信息存储器;并且当刚处理过的流再次出现时,无需重复地读入数据,节省了存储器带宽。
网络应用通常以流分类开始,然后根据流分类的结果采取相应的处理。而流分类由于其复杂性一般是由协处理器来完成的。假如我们将流相关控制信息限制在一个数据块中(以牺牲少量的编程灵活性为代价),那么,在其他需要处理单元来完成的操作开始之前,该区域的起始地址就可以作为流分类的结果而获得。通过设置适当的硬件使得数据包的处理和流相关控制信息的预取流水进行,就可以保证在处理单元开始对数据包进行操作的时候,所需要的流相关控制信息已经保存在Flow-Cache之中了,从而在Flow-Cache中不会发生缺失。
本发明的特征在于,分配给流相关控制信息的地址空间划分为相同大小的块,每个流对应于一个块,用来保存该流的控制信息,属于该流的所有数据包共享该块中的信息;Flow-Cache设置了两个称为BankA和Bank B的工作栈,每个工作栈中的缓存数据也组织为块的形式;每个数据包所对应的块只位于Bank A和Bank B两个工作栈中的一个,在处理单元在使用一个工作栈中的流相关控制信息进行处理的时候,另外一个工作栈通过流分类器提供的预取地址为下一个数据包读入相关的流相关控制信息;整个处理流程为当数据包被网络处理器接收时,先由流分类器进行流分类,然后将所获得的流相关控制信息的起始地址送到Flow-Cache的数据移动控制器;数据移动控制器检查该流相关控制信息是否已经保存在Flow-Cache的Bank A和Bank B两个工作栈的某一个中,如果没有,则Flow-Cache中目前未被处理单元使用的那个工作栈中相应的块被选为被替换的块,如果被替换的块曾经被处理单元修改,则先将被修改的内容写回控制信息存储器;然后将所需要的流相关控制信息从控制信息存储器中读出;当所需要的流相关控制信息被写入到Flow-Cache后,处理单元切换到该工作栈,对数据包进行处理;Flow-Cache的输入信号包括来自处理核心的读操作请求信号PEFC_RD、来自处理核心的写操作请求信号PEFC_WR、来自处理核心的控制信息地址线PEFC_AD、来自处理核心的数据PEFC_DI、来自处理核心的状态信号PE_SWCH,来自流分类器的流相关控制信息预取地址线CL_ADDR、来自流分类器的流相关控制信息预取请求信号CL_RQ,来自存储器及I/O总线接口的数据MSFC_DI以及来自存储器及I/O总线接口的确认信号MSFC_ACK;Flow-Cache的输出信号包括送往处理核心的数据FCPE_DO、送往处理核心的确认信号FCPE_ACK,送往存储器及I/O总线接口的读操作请求信号FCMS_RD、送往存储器及I/O总线接口的写操作请求信号FCMS_WR、送往存储器及I/O总线接口的地址线FCMS_AD和送往存储器及I/O总线接口的数据FCMS_DO;假设网络处理器以字节寻址,每个块包含N=2s个字节,且地址宽度为t+s位,则控制信息预取地址只需要该地址的高t位;设每个工作栈均保存M=2r个块,则t位的控制信息预取地址中的低r位就称为index部分,控制信息预取地址的高t-r位称为a_tag部分;所述的工作栈Bank A和Bank B各自含有a、地址标签空间Tag RAM A和Tag RAM B,其中的数据称为地址标签b_tag地址标签空间Tag RAM A的输入信号包括地址信号输入端与来自流分类器的流相关控制信息预取地址线CL_ADDR的index部分相连,数据输入端与CL_ADDR的a_tag部分相连,读写控制输入端为来自多路选择器3-A1的TagA_WR;地址标签空间Tag RAM A的输出信号为TagA_DO;地址标签空间Tag RAM B的输入信号包括地址信号输入端与来自流分类器的流相关控制信息预取地址线CL_ADDR的index部分相连,数据输入端与CL_ADDR的a_tag部分相连,读写控制输入端为来自多路选择器3-B1的TagB_WR;地址标签空间Tag RAM B的输出信号为TagB_DO;b、数据空间Data RAM A和Data RAM B数据空间Data RAM A的输入信号包括地址信号输入端与来自多路选择器3-A6的DATA_AD的低r+s位相连,数据输入端与来自多路选择器3-A5的DATA_DI相连,读写控制输入端为来自多路选择器3-A7的DATA_WR;数据空间Data RAM A的输出信号为DATA_DO;数据空间Data RAM B的输入信号包括地址信号输入端与来自多路选择器3-B6的DATB_AD的低r+s位相连,数据输入端与来自多路选择器3-B5的DATB_DI相连,读写控制输入端为来自多路选择器3-B7的DATB_WR;数据空间Data RAM B的输出信号为DATB_DO;c、修改状态空间Dirty RAM A和Dirty RAM B,分别为数据空间Data RAM A和Data RAMB中的块设置若干修改标志位,称为D;这里以每个块设置一个标志位为例,并且标志位为“1”表示已经被修改过,标志位为“0”表示尚未被修改过修改状态空间Dirty RAM A的输入信号包括地址信号输入端与来自多路选择器3-A4的DTYA_AD的index部分相连,数据输入端与来自多路选择器3-A3的DTYA_DI相连,读写控制输入端为来自多路选择器3-A2的DTYA_WR;修改状态空间Data RAM A的输出信号为DTYA_DO;修改状态空间Dirty RAM B的输入信号包括地址信号输入端与来自多路选择器3-B4的DTYB_AD的index部分相连,数据输入端与来自多路选择器3-B3的DTYB_DI相连,读写控制输入端为来自多路选择器3-B2的DTYB_WR;修改状态空间Data RAM B的输出信号为DTYB_DO;所述的数据移动控制器,含有a、标签比较器3-1,设有来自流分类器的流相关控制信息预取地址线CL_ADDR中的a_tag部分、和地址标签空间Tag RAM A的输出数据线TagA_DO,作为其两个输入端;当两个输入端的数据完全一致时,该标签比较器3-1输出为“真”,表示所需的流相关控制信息已经保存在工作栈Bank A中;b、标签比较器3-2,设有来自流分类器的流相关控制信息预取地址线CL_ADDR中的a_tag部分、和地址标签空间Tag RAM B的输出数据线TagB_DO,作为其两个输入端;当两个输入端的数据完全一致时,该标签比较器3-2输出为“真”,表示所需的流相关控制信息已经保存在工作栈Bank B中;c、栈切换控制器3-3,用来控制两个工作栈的状态,即是为当前正在被处理的数据包向处理核心提供流相关控制信息,还是为下一个将要被处理的数据包从网络处理器外部的控制信息存储器中读取相关的流相关控制信息;该栈切换控制器3-3设有两个寄存器RC,即3-3-I,和RN,即3-3-II,分别用来保存当前正在被处理核心使用的工作栈号和下一个数据包的处理所需使用的工作栈号;栈切换控制器3-3的输入信号包括标签比较器3-1和标签比较器3-2的输出信号,来自处理核心的状态信号PE_SWCH和由有限状态机3-4送往栈切换控制器3-3的地址评估信号FSM_EVL;输出信号包括Bank A选择信号SEL A和Bank B选择信号SEL_B;当SEL_A为“真”时,表示工作栈Bank A目前正在被处理核心使用;当SEL_B为“真”时,表示工作栈Bank B目前正在被处理核心使用;因此,在任何时刻,SEL_A和SEL_B互为相反;当由有限状态机3-4送往栈切换控制器3-3的地址评估信号FSM_EVL变为有效时,表示下一个数据包的处理所需的流相关控制信息的起始地址已经由流分类器送达Flow-Cache,需要对该流相关控制信息是否已经保存在Flow-Cache中进行判断;此时,如果标签比较器3-1和标签比较器3-2的输出均为“假”,则表示流相关控制信息在Flow-Cache中还不存在,因此需要将RN,即3-3-II的内容变为当前未被处理核心使用的那个工作栈的栈号,表示在该工作栈中即将进行数据的移动,并且当处理核心开始处理下一个数据包时,会使用该工作栈;如果标签比较器3-1输出为“真”,表示流相关控制信息已经保存在工作栈Bank A中,需要将RN,即3-3-II的内容置为Bank A的工作栈号;如果标签比较器3-2输出为“真”,表示流相关控制信息已经保存在工作栈Bank B中,则RN,即3-3-II的内容需要置为Bank B的工作栈号;标签比较器3-1和标签比较器3-2的输出均为“真”是一种非法状态,是不可能出现的;当来自处理核心的状态信号PE_SWCH变为有效后,表示处理核心结束了对当前数据包的处理,开始转入对下一个数据包的处理;此时,需要将寄存器RN,即3-3-II的内容写入寄存器RC,即3-3-I;如果寄存器RC,即3-3-I中记录的是Bank A的工作栈号,则Bank A选择信号SEL A输出为“真”,Bank B选择信号SEL_B输出为“假”;如果寄存器RC,即3-3-I中记录的是Bank B的工作栈号,则Bank B选择信号SEL_B输出为“真”,Bank A选择信号SEL A输出为“假”;d、或非门3-4-O,两个输入端与标签比较器3-1和标签比较器3-2的输出端相连,输出为MISS信号;如果标签比较器3-1和标签比较器3-2的输出均为“假”,则表示流相关控制信息在Flow-Cache中还不存在,输出信号MISS变为“真”;标签比较器3-1和标签比较器3-2中任何一个的输出为“真”,则表示流相关控制信息已经存在于Flow-Cache中,输出信号MISS变为“假”;标签比较器3-1和标签比较器3-2的输出均为“真”是一种非法状态,是不可能出现的;e、有限状态机3-4,负责完成下一个数据包处理所需的流相关信息读取和被替换信息的写回操作;有限状态机3-4的输入信号包括来自流分类器的流相关控制信息预取请求信号CL_RQ、来自存储器及I/O总线接口的确认信号MSFC_ACK、由多路选择器3-M4输出的DIRTY信号、由多路选择器3-M1输出的Tag_DO信号、来自流分类器的流相关控制信息预取地址线CL_ADDR的index部分、或非门3-4-O输出的MISS信号;输出信号包括送往栈切换控制器3-3的地址评估信号FSM EVL、送往存储器及I/O总线接口的地址线FCMS_AD、送往存储器及I/O总线接口的读操作请求信号FCMS_RD、送往存储器及I/O总线接口的写操作请求信号FCMS_WR、送往多路选择器3-A2和多路选择器3-B2的DTY_WR信号、送往多路选择器3-A7和多路选择器3-B7的DAT_WR信号、送往多路选择器3-A1和多路选择器3-B1的Tag_WR信号;该状态机假设工作栈内所有的RAM,其读写控制输入端变为“1”时,为写操作请求,变为“0”时,为读操作请求;并且在地址信号变为有效后的一个周期,数据输出变为有效;有限状态机3-4的状态转换流程如下I、空闲状态4-1如果来自流分类器的流相关控制信息预取请求信号CL_RQ变为有效,说明有新的数据包接受了流分类操作,需要对流相关控制信息是否已经保存在Flow-Cache中进行判断,进入判定状态;否则,维持空闲状态;II、判定状态4-2此时地址标签空间Tag RAM A和Tag RAM B中的数据均已经读出,标签比较器3-1和标签比较器3-2的输出结果变为有效;将输出信号FSM_EVL置为有效,指示栈切换控制器3-3进行工作;如果MISS信号为“假”,返回空闲状态;如果MISS信号为“真”,并且DIRTY信号为“1”,表示被替换块的内容被处理核心修改过,需要写回网络处理器外的控制信息存储器;将Tag_DO输出为FCMS_AD信号的高t-r位,将FCMS_AD信号的低s位置为零,将来自流分类器的流相关控制信息预取地址线CL_ADDR的index部分作为FCMS_AD信号的index部分输出,进入写回状态;如果MISS信号为“真”,并且DIRTY信号为“0”,则直接将新的流相关控制信息读入Flow-Cache;将来自流分类器的流相关控制信息预取地址线CL_ADDR作为FCMS_AD信号的高t位输出,进入读取状态;III、写回状态4-3将DAT_WR保持为读请求状态;通过送往存储器及I/O总线接口的写操作请求信号FCMS_WR发起写操作请求;当来自存储器及I/O总线接口的确认信号MSFC_ACK返回为有效时,如果工作栈中的被替换块中还存在尚未写回的数据,则将输出信号FCMS_AD的内容设置为指向下一个需要被写回的数据的地址,通常情况下,数据总线的宽度为32位,当网络处理器以字节寻址时,将输出信号FCMS_AD的值加4即可,然后通过送往存储器及I/O总线接口的写操作请求信号FCMS WR再次发起写操作请求;重复该过程直到被替换块内所有的数据均已写回,撤销写操作请求,进入读取状态;IV、读取状态4-4通过送往存储器及I/O总线接口的读操作请求信号FCMS_RD发起读操作请求;当来自存储器及I/O总线接口的确认信号MSFC_ACK返回为有效时,将DAT_WR置为写请求;如果新的流相关控制信息尚未全部从网络处理器外的控制信息存储器中读出,则将FCMS_AD的内容指向下一个需要被读取的数据的地址,通常情况下,数据总线的宽度为32位,当网络处理器以字节寻址时,将FCMS_AD的内容加4即可,然后通过送往存储器及I/O总线接口的读操作请求信号FCMS_RD发起读操作请求;重复该过程直到新的流相关控制信息均已读出并写入Flow-Cache,撤销读操作请求;将Tag_WR和DTY_WR置为写请求并维持一个周期,以保证新的地址标签信息和新的修改状态信息写入相应的工作栈,进入空闲状态;f、应答器3-5,输入信号来自处理核心的读操作请求信号PEFC_RD、来自处理核心的写操作请求信号PEFC_WR,输出信号为送往处理核心的确认信号FCPE_ACK;在PEFC_RD或者PEFC_WR信号变为有效的一个周期后,FCPE_ACK信号变为有效并维持一个周期,表示数据已经从Flow-Cache读出或者写入;g、18个多路选择器,所有的多路选择器均在选择控制端为“真”时,选通第一输入端的数据作为输出;当选择控制端为“假”时,选通第二输入端的数据作为输出;I、多路选择器3-A1,设有来自有限状态机3-4的Tag_WR作为第一输入端和“0”作为第二输入端,SEL_B作为选择控制端;输出端与地址标签空间Tag RAM A的读写控制输入端TagA_WR相连;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机3-4的控制;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,由于处理核心不使用地址标签空间Tag RAM A,因此,TagA_WR的输出为“0”;II、多路选择器3-B1,设有来自有限状态机3-4的Tag_WR作为第一输入端和“0”作为第二输入端,SEL_A作为选择控制端;输出端与地址标签空间Tag RAM B的读写控制输入端TagB_WR相连当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机3-4的控制;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B;由于处理核心不使用地址标签空间Tag RAM B,因此,TagB_WR的输出为“0”;III、多路选择器3-A2,设有来自处理核心的写操作请求信号PEFC_WR作为第一输入端,来自有限状态机3-4的DTY_WR作为第二输入端;SEL_A作为选择控制端;输出端与修改状态空间Dirty RAM A的读写控制输入端DTYA_WR相连;当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,当处理核心进行写操作的时候,需要将修改状态空间Dirty RAM A的标志位置为“1”,即接受PEFC_WR的控制;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机3-4,即DTY_WR的控制,当有新的流相关控制信息从控制信息存储器中读出时,将修改状态空间Dirty RAM A的标志位清零;IV、多路选择器3-B2,设有来自处理核心的写操作请求信号PEFC_WR作为第一输入端,来自有限状态机3-4的DTY_WR作为第二输入端,SEL_B作为选择控制端;输出端与修改状态空间Dirty RAM B的读写控制输入端DTYB_WR相连;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,当处理核心进行写操作的时候,需要将修改状态空间Dirty RAM B的标志位置为“1”,即接受PEFC_WR的控制;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机3-4,即DTY_WR的控制,当有新的流相关控制信息从控制信息存储器中读出时,将修改状态空间Dirty RAM B的标志位清零;V、多路选择器3-A3,设有“1”作为第一输入端和“0”作为第二输入端,SEL_A作为选择控制端;输出端与修改状态空间Dirty RAM A的数据输入端DTYA_DI相连;当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,当处理核心进行写操作的时候,需要将修改状态空间Dirty RAM A的标志位置为“1”;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,当有新的流相关控制信息从控制信息存储器中读出并写入工作栈Bank A时,将修改状态空间Dirty RAM A的标志位清零;VI、多路选择器3-B3,设有“1”作为第一输入端和“0”作为第二输入端,SEL_B作为选择控制端;输出端与修改状态空间Dirty RAM B的数据输入端DTYB_DI相连;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank_B,当处理核心进行写操作的时候,需要将修改状态空间Dirty RAM B的标志位置为“1”;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,当有新的流相关控制信息从控制信息存储器中读出并写入工作栈Bank B时,将修改状态空间Dirty RAM B的标志位清零;VII、多路选择器3-A4,设有来自处理核心的控制信息地址线PEFC_AD作为第一输入端和来自有限状态机3-4的FCMS_AD作为第二输入端,SEL_A作为选择控制端;输出端与修改状态空间Dirty RAM A的地址信号输入端DTYA_AD相连;当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,当处理核心进行写操作的时候,需要使用来自处理核心的地址;当SEL_A为“假”时,表示处理核心正在使用工作栈BankB,工作栈Bank A接受有限状态机3-4的控制;VIII、多路选择器3-B4,设有来自处理核心的控制信息地址线PEFC_AD作为第一输入端和来自有限状态机3-4的FCMS_AD作为第二输入端,SEL_B作为选择控制端;输出端与修改状态空间Dirty RAM B的地址信号输入端DTYB_AD相连;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,当处理核心进行写操作的时候,需要使用来自处理核心的地址;当SEL_B为“假”时,表示处理核心正在使用工作栈BankA,工作栈Bank B接受有限状态机3-4的控制;IX、多路选择器3-A5,设有来自处理核心的数据PEFC_DI作为第一输入端和来自存储器及I/O总线接口的数据MSFC_DI作为第二输入端,SEL_A作为选择控制端;输出端与数据空间Data RAM A的数据输入端DATA_DI相连;当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,当处理核心进行写操作的时候,需要将来自处理核心的数据PEFC_DI写入数据空间Data RAM A;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,当有新的流相关控制信息从控制信息存储器中读出时,需要写入工作栈Bank A的数据空间Data RAM A中;X、多路选择器3-B5,设有来自处理核心的数据PEFC_DI作为第一输入端和来自存储器及I/O总线接口的数据MSFC_DI作为第二输入端,SEL_B作为选择控制端;输出端与数据空间Data RAM B的数据输入端DATB_DI相连;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,当处理核心进行写操作的时候,需要将来自处理核心的数据PEFC_DI写入数据空间Data RAM B;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,当有新的流相关控制信息从控制信息存储器中读出时,需要写入工作栈Bank B的数据空间Data RAM B中;XI、多路选择器3-A6,设有来自处理核心的控制信息地址线PEFC_AD作为第一输入端和来自有限状态机3-4的FCMS_AD作为第二输入端,SEL_A作为选择控制端;输出端与数据空间Data RAM A的地址信号输入端DATA_AD相连;当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,当处理核心进行写操作的时候,需要使用来自处理核心的地址PEFC_AD;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机3-4的控制;XII、多路选择器3-B6,设有来自处理核心的控制信息地址线PEFC_AD作为第一输入端和来自有限状态机3-4的FCMS_AD作为第二输入端,SEL_B作为选择控制端;输出端与数据空间Data RAM B的地址信号输入端DATB_AD相连;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,当处理核心进行写操作的时候,需要使用来自处理核心的地址PEFC_AD;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机3-4的控制;XIII、多路选择器3-A7,设有来自处理核心的写操作请求信号PEFC_WR作为第一输入端和来自有限状态机3-4的DAT_WR作为第二输入端,SEL_A作为选择控制端;输出端与数据空间Data RAM A的读写控制输入端DATA_WR相连;当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,需要由处理核心对数据空间Data RAM A的读写进行控制;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机3-4的读写控制;XIV、多路选择器3-B7,设有来自处理核心的写操作请求信号PEFC_WR作为第一输入端和来自有限状态机3-4的DAT_WR作为第二输入端,SEL_B作为选择控制端;输出端与数据空间Data RAM B的读写控制输入端DATB_WR相连;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank_B,需要由处理核心对数据空间Data RAM B的读写进行控制;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机3-4的读写控制;XV、多路选择器3-M1,设有地址标签空间Tag RAM A的输出TagA_DO作为第一输入端和地址标签空间Tag RAM B的输出TagB_DO作为第二输入端,SEL_B作为选择控制端;输出端为Tag_DO,是有限状态机3-4的一个输入信号;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机3-4的控制,并提供地址标签的内容;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机3-4的控制,并提供地址标签的内容;XVI、多路选择器3-M2,设有数据空间Data RAM A的输出DATA_DO作为第一输入端和数据空间Data RAM B的输出DATB_DO作为第二输入端,SEL_B作为选择控制端;输出端为FCMS_DO,是由Flow-Cache送往存储器及I/O总线接口的数据;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机3-4的控制,并向存储器及I/O总线接口提供需要写回控制信息存储器的数据;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机3-4的控制,并向存储器及I/O总线接口提供需要写回控制信息存储器的数据;XVII、多路选择器3-M3,设有数据空间Data RAM A的输出DATA_DO作为第一输入端和数据空间Data RAM B的输出DATB_DO作为第二输入端,SEL_A作为选择控制端;输出端为送往处理核心的数据FCPE_DO;当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,由工作栈Bank A为处理核心提供需要的数据;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,由工作栈Bank B为处理核心提供需要的数据;XVIII、多路选择器3-M4,设有修改状态空间Dirty RAM A的输出DTYA_DO作为第一输入端和修改状态空间Dirty RAM B的输出DTYB_DO作为第二输入端,SEL_B作为选择控制端;输出端为DIRTY,是有限状态机3-4的一个输入信号;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机3-4的控制,并提供数据空间的修改状态;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机3-4的控制,并提供数据空间的修改状态。
本发明充分利用了流相关控制信息访问模式空间局部性好的特点,处理过程中不缺失的设计增加了网络处理时间的确定性,可以比传统cache更好地满足网络处理器对于实时性的需求。而流水线式的设计又利用了网络处理各部分操作之间的并行性,使得实际可用的工作周期增加到一倍以上,极大地提高了网络处理器的灵活性。在合适的系统配置下,只要适当调整块的大小,Flow-Cache还可以在保证合适的灵活性的前提下,满足最坏情况下(即最小包连续到达)的线速处理。下表列出了处理单元工作频率200MHz,存储器总线位宽为32位,控制信息存储器所使用的DDR SDRAM的工作周期为7.5纳秒、延迟为8个周期的情况下,对于不同速率的链路以及不同的最小包长,Flow-Cache所支持的块的大小。注意到为了硬件设计的方便,块的大小应该是2的幂次,因此实际的块的大小会比理论上可以支持的大小少一些。表中的访问比例表示块的大小与处理单元实际可以进行的操作时间中最多可以访问的字节数的比值。由于网络处理更多地是进行计算和对数据包字段以及数据包相关数据的访问,对流相关控制信息的访问只占很小一部分。因此,Flow-Cache的设计足以满足绝大多数网络应用的需要。如果一定要增加块的大小,可以通过选用带宽更高的存储器件来实现。
图1网络处理器系统结构。
图2Flow-Cache的输入信号、输出信号和主要构成模块。
图3Flow-Cache系统结构。
图4Flow-Cache中有限状态机的状态转换图。
具体实施例方式
本发明为基于网络处理器的流相关控制信息高速缓冲存储器,称为Flow-Cache。其应用的位置如图1所示。为了说明方便起见,图1只表示了单处理单元的网络处理器结构。处理单元由执行运算的处理核心和提供控制信息的Flow-Cache构成。除处理单元外,该网络处理器中还有一组协处理器和若干硬件功能单元,用于完成流分类、校验和计算以及流量管理等功能。数据包在位于片外的数据包缓冲存储器中的存储与移动由输入/输出接口、以及数据包缓存控制器完成。处理所需要的数据包字段也由数据包缓存控制器提取并送入处理单元中。处理单元可以访问的存储空间由片内的Scratch Pad和片外的控制信息存储器构成。其中,Scratch Pad通常用于关键数据的保存,处理单元可能通过互联机构或者存储器及I/O总线直接访问;而片外控制信息存储器一般由低速大容量的SDRAM等器件构成,用于保存路由表等大型数据结构。由于控制信息存储器的访问延迟与处理单元工作周期差距较大,处理单元不能直接访问控制信息存储器,必须通过Flow-Cache来进行。
Flow-Cache的输入信号、输出信号和主要构成模块如图2所示,Flow-Cache与处理核心、流分类器和存储器及I/O总线接口进行交互。Flow-Cache的基本部分由两个工作栈Bank A和Bank B以及数据移动控制器构成,可以在满足处理核心访问需求的同时进行控制信息存储器进行读写。处理核心对数据包的操作是连续进行的,由于每个数据包所对应的流相关控制信息只位于其中一个工作栈中,另外一个不对处理核心提供数据的工作栈在需要的时候为下一个数据包读入相应的流相关控制信息。为了存储管理的方便,把分配给流相关控制信息的地址空间划分为相同大小的块(block)。每个流都对应于一个块,流相关控制信息就保存在这个块中。每个工作栈中的数据缓存也组织为块的形式。由于在处理核心的工作过程中不会发生缺失,Flow-Cache中的地址比较机构只用来检查尚未被处理的包的相应信息是否已经存在于某个工作栈之中。
流分类器与处理单元是并行工作的,当处理单元对某个数据包进行操作的时候,流分类器就可以为新达到的包进行分类。整个数据包的处理流程为当新到达的数据包被网络处理器接收时,先由流分类器进行流分类,然后将所获得的流相关控制信息的起始地址送到Flow-Cache的数据移动控制器;数据移动控制器检查该流相关控制信息是否已经保存在Flow-Cache的Bank A和Bank B两个工作栈中的某一个了,如果没有的话,则Flow-Cache目前未被处理核心使用的那个工作栈中相应的块选为被替换的块,如果它曾经被处理核心修改,则将该块的内容写回控制信息存储器;然后将新的流相关控制信息从控制信息存储器中读出,并替换该块的内容;当需要的流相关控制信息被写入到Flow-Cache后,处理核心可以就切换到该工作栈,对数据包进行处理。
Flow-Cache的输入信号包括来自处理核心的读操作请求信号PEFC_RD、来自处理核心的写操作请求信号PEFC_WR、来自处理核心的控制信息地址线PEFC_AD、来自处理核心的数据PEFC_DI、来自处理核心的状态信号PE_SWCH,来自流分类器的流相关控制信息预取地址线CL_ADDR、来自流分类器的流相关控制信息预取请求信号CL_RQ,来自存储器及I/O总线接口的数据MSFC_DI以及来自存储器及I/O总线接口的确认信号MSFC_ACK;Flow-Cache的输出信号包括送往处理核心的数据FCPE_DO、送往处理核心的确认信号FCPE_ACK,送往存储器及I/O总线接口的读操作请求信号FCMS_RD、送往存储器及I/O总线接口的写操作请求信号FCMS_WR、送往存储器及I/O总线接口的地址线FCMS_AD和送往存储器及I/O总线接口的数据FCMS_DO。
Flow-Cache的系统结构如图3所示。假设网络处理器以字节寻址,每个块包含N=2s个字节,且地址宽度为t+s位,则控制信息预取地址只需要该地址的高t位;设每个工作栈均保存M=2r个块,则t位的控制信息预取地址中的低r位就称为index部分,控制信息预取地址的高t-r位称为a_tag部分;所述的工作栈Bank A和Bank B各自含有a、地址标签空间Tag RAM A和Tag RAM B,其中的数据称为地址标签b_tag地址标签空间Tag RAM A的输入信号包括地址信号输入端与来自流分类器的流相关控制信息预取地址线CL_ADDR的index部分相连,数据输入端与CL_ADDR的a_tag部分相连,读写控制输入端为来自多路选择器3-A1的TagA_WR;地址标签空间Tag RAM A的输出信号为TagA_DO;地址标签空间Tag RAM B的输入信号包括地址信号输入端与来自流分类器的流相关控制信息预取地址线CL_ADDR的index部分相连,数据输入端与CL_ADDR的a_tag部分相连,读写控制输入端为来自多路选择器3-B1的TagB_WR;地址标签空间Tag RAM B的输出信号为TagB_DO;
b、数据空间Data RAM A和Data RAM B数据空间Data RAM A的输入信号包括地址信号输入端与来自多路选择器3-A6的DATA AD的低r-s位相连,数据输入端与来自多路选择器3-A5的DATA_DI相连,读写控制输入端为来自多路选择器3-A7的DATA_WR;数据空间Data RAM A的输出信号为DATA_DO;数据空间Data RAM B的输入信号包括地址信号输入端与来自多路选择器3-B6的DATB AD的低t-s位相连,数据输入端与来自多路选择器3-B5的DATB_DI相连,读写控制输入端为来自多路选择器3-B7的DATB_WR;数据空间Data RAM B的输出信号为DATB_DO;c、修改状态空间Dirty RAM A和Dirty RAM B,分别为数据空间Data RAM A和Data RAMB中的块设置若干修改标志位,称为D;这里以每个块设置一个标志位为例,并且标志位为“1”表示已经被修改过,标志位为“0”表示尚未被修改过修改状态空间Dirty RAM A的输入信号包括地址信号输入端与来自多路选择器3-A4的DTYA_AD的index部分相连,数据输入端与来自多路选择器3-A3的DTYA_DI相连,读写控制输入端为来自多路选择器3-A2的DTYA_WR;修改状态空间Data RAM A的输出信号为DTYA_DO;修改状态空间Dirty RAM B的输入信号包括地址信号输入端与来自多路选择器3-B4的DTYB_AD的index部分相连,数据输入端与来自多路选择器3-B3的DTYB_DI相连,读写控制输入端为来自多路选择器3-B2的DTYB_WR;修改状态空间Data RAM B的输出信号为DTYB_DO;所述的数据移动控制器,含有a、标签比较器3-1,设有来自流分类器的流相关控制信息预取地址线CL_ADDR中的a_tag部分、和地址标签空间Tag RAM A的输出数据线TagA_DO,作为其两个输入端;当两个输入端的数据完全一致时,该标签比较器3-1输出为“真”,表示所需的流相关控制信息已经保存在工作栈BankA中;b、标签比较器3-2,设有来自流分类器的流相关控制信息预取地址线CL_ADDR中的a_tag部分、和地址标签空间Tag RAM B的输出数据线TagB_DO,作为其两个输入端;当两个输入端的数据完全一致时,该标签比较器3-2输出为“真”,表示所需的流相关控制信息已经保存在工作栈Bank_B中;c、栈切换控制器3-3,用来控制两个工作栈的状态,即是为当前正在被处理的数据包向处理核心提供流相关控制信息,还是为下一个将要被处理的数据包从网络处理器外部的控制信息存储器中读取相关的流相关控制信息;该栈切换控制器3-3设有两个寄存器RC,即3-3-I,和RN,即3-3-II,分别用来保存当前正在被处理核心使用的工作栈号和下一个数据包的处理所需使用的工作栈号;栈切换控制器3-3的输入信号包括标签比较器3-1和标签比较器3-2的输出信号,来自处理核心的状态信号PE_SWCH和由有限状态机3-4送往栈切换控制器3-3的地址评估信号FSM_EVL;输出信号包括Bank A选择信号SEL_A和Bank B选择信号SEL_B;当SEL_A为“真”时,表示工作栈Bank A目前正在被处理核心使用;当SEL_B为“真”时,表示工作栈Bank B目前正在被处理核心使用;因此,在任何时刻,SEL_A和SEL_B互为相反;当由有限状态机3-4送往栈切换控制器3-3的地址评估信号FSM_EVL变为有效时,表示下一个数据包的处理所需的流相关控制信息的起始地址已经由流分类器送达Flow-Cache,需要对该流相关控制信息是否已经保存在Flow-Cache中进行判断;此时,如果标签比较器3-1和标签比较器3-2的输出均为“假”,则表示流相关控制信息在Flow-Cache中还不存在,因此需要将RN,即3-3-II的内容变为当前未被处理核心使用的那个工作栈的栈号,表示在该工作栈中即将进行数据的移动,并且当处理核心开始处理下一个数据包时,会使用该工作栈;如果标签比较器3-1输出为“真”,表示流相关控制信息已经保存在工作栈Bank A中,需要将RN,即3-3-II的内容置为Bank A的工作栈号;如果标签比较器3-2输出为“真”,表示流相关控制信息已经保存在工作栈Bank B中,则RN,即3-3-II的内容需要置为Bank B的工作栈号;标签比较器3-1和标签比较器3-2的输出均为“真”是一种非法状态,是不可能出现的;当来自处理核心的状态信号PE_SWCH变为有效后,表示处理核心结束了对当前数据包的处理,开始转入对下一个数据包的处理;此时,需要将寄存器RN,即3-3-II的内容写入寄存器RC,即3-3-I;如果寄存器RC,即3-3-I中记录的是Bank A的工作栈号,则Bank A选择信号SEL_A输出为“真”,Bank B选择信号SEL_B输出为“假”;如果寄存器RC,即3-3-I中记录的是Bank B的工作栈号,则Bank B选择信号SEL_B输出为“真”,Bank A选择信号SEL_A输出为“假”;d、或非门3-4-O,两个输入端与标签比较器3-1和标签比较器3-2的输出端相连,输出为MISS信号;如果标签比较器3-1和标签比较器3-2的输出均为“假”,则表示流相关控制信息在Flow-Cache中还不存在,输出信号MISS变为“真”;标签比较器3-1和标签比较器3-2中任何一个的输出为“真”,则表示流相关控制信息已经存在于Flow-Cache中,输出信号MISS变为“假”;标签比较器3-1和标签比较器3-2的输出均为“真”是一种非法状态,是不可能出现的;e、有限状态机3-4,负责完成下一个数据包处理所需的流相关信息读取和被替换信息的写回操作;有限状态机3-4的输入信号包括来自流分类器的流相关控制信息预取请求信号CL_RQ、来自存储器及I/O总线接口的确认信号MSFC_ACK、由多路选择器3-M4输出的DIRTY信号、由多路选择器3-M1输出的Tag_DO信号、来自流分类器的流相关控制信息预取地址线CL_ADDR的index部分、或非门3-4-O输出的MISS信号;输出信号包括送往栈切换控制器3-3的地址评估信号FSM EVL、送往存储器及I/O总线接口的地址线FCMS_AD、送往存储器及I/O总线接口的读操作请求信号FCMS_RD、送往存储器及I/O总线接口的写操作请求信号FCMS_WR、送往多路选择器3-A2和多路选择器3-B2的DTY_WR信号、送往多路选择器3-A7和多路选择器3-B7的DAT_WR信号、送往多路选择器3-A1和多路选择器3-B1的Tag_WR信号;该状态机假设工作栈内所有的RAM,其读写控制输入端变为“1”时,为写操作请求,变为“0”时,为读操作请求;并且在地址信号变为有效后的一个周期,数据输出变为有效;有限状态机3-4的状态转换图如图4所示,其流程如下I、空闲状态4-1如果来自流分类器的流相关控制信息预取请求信号CL_RQ变为有效,说明有新的数据包接受了流分类操作,需要对流相关控制信息是否已经保存在Flow-Cache中进行判断,进入判定状态;否则,维持空闲状态;II、判定状态4-2此时地址标签空间Tag RAM A和Tag RAM B中的数据均已经读出,标签比较器3-1和标签比较器3-2的输出结果变为有效;将输出信号FSM_EVL置为有效,指示栈切换控制器3-3进行工作;如果MISS信号为“假”,返回空闲状态;如果MISS信号为“真”,并且DIRTY信号为“1”,表示被替换块的内容被处理核心修改过,需要写回网络处理器外的控制信息存储器;将Tag_DO输出为FCMS_AD信号的高t-r位,将FCMS_AD信号的低s位置为零,将来自流分类器的流相关控制信息预取地址线CL_ADDR的index部分作为FCMS_AD信号的index部分输出,进入写回状态;如果MISS信号为“真”,并且DIRTY信号为“0”,则直接将新的流相关控制信息读入Flow-Cache;将来自流分类器的流相关控制信息预取地址线CL_ADDR作为FCMS_AD信号的高t位输出,进入读取状态;III、写回状态4-3将DAT_WR保持为读请求状态;
通过送往存储器及I/O总线接口的写操作请求信号FCMS WR发起写操作请求;当来自存储器及I/O总线接口的确认信号MSFC_ACK返回为有效时,如果工作栈中的被替换块中还存在尚未写回的数据,则将输出信号FCMS_AD的内容设置为指向下一个需要被写回的数据的地址,通常情况下,数据总线的宽度为32位,当网络处理器以字节寻址时,将输出信号FCMS_AD的值加4即可,然后通过送往存储器及I/O总线接口的写操作请求信号FCMS_WR再次发起写操作请求;重复该过程直到被替换块内所有的数据均已写回,撤销写操作请求,进入读取状态;IV、读取状态4-4通过送往存储器及I/O总线接口的读操作请求信号FCMS_RD发起读操作请求;当来自存储器及I/O总线接口的确认信号MSFC_ACK返回为有效时,将DAT_WR置为写请求;如果新的流相关控制信息尚未全部从网络处理器外的控制信息存储器中读出,则将FCMS_AD的内容指向下一个需要被读取的数据的地址,通常情况下,数据总线的宽度为32位,当网络处理器以字节寻址时,将FCMS_AD的内容加4即可,然后通过送往存储器及I/O总线接口的读操作请求信号FCMS_RD发起读操作请求;重复该过程直到新的流相关控制信息均已读出并写入Flow-Cache,撤销读操作请求;将Tag_WR和DTY_WR置为写请求并维持一个周期,以保证新的地址标签信息和新的修改状态信息写入相应的工作栈,进入空闲状态;f、应答器3-5,输入信号来自处理核心的读操作请求信号PEFC_RD、来自处理核心的写操作请求信号PEFC_WR,输出信号为送往处理核心的确认信号FCPE_ACK;在PEFC_RD或者PEFC_WR信号变为有效的一个周期后,FCPE_ACK信号变为有效并维持一个周期,表示数据已经从Flow-Cache读出或者写入;g、18个多路选择器,所有的多路选择器均在选择控制端为“真”时,选通第一输入端的数据作为输出;当选择控制端为“假”时,选通第二输入端的数据作为输出;I、多路选择器3-A1,设有来自有限状态机3-4的Tag_WR作为第一输入端和“0”作为第二输入端,SEL_B作为选择控制端;输出端与地址标签空间Tag RAM A的读写控制输入端TagA_WR相连;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机3-4的控制;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,由于处理核心不使用地址标签空间Tag RAM A,因此,TagA_WR的输出为“0”;II、多路选择器3-B1,设有来自有限状态机3-4的Tag_WR作为第一输入端和“0”作为第二输入端,SEL_A作为选择控制端;输出端与地址标签空间Tag RAM B的读写控制输入端TagB_WR相连当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机3-4的控制;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B;由于处理核心不使用地址标签空间Tag RAM B,因此,TagB_WR的输出为“0”;III、多路选择器3-A2,设有来自处理核心的写操作请求信号PEFC_WR作为第一输入端,来自有限状态机3-4的DTY_WR作为第二输入端;SEL_A作为选择控制端;输出端与修改状态空间Dirty RAM A的读写控制输入端DTYA_WR相连;当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,当处理核心进行写操作的时候,需要将修改状态空间Dirty RAM A的标志位置为“1”,即接受PEFC_WR的控制;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机3-4,即DTY_WR的控制,当有新的流相关控制信息从控制信息存储器中读出时,将修改状态空间Dirty RAM A的标志位清零;IV、多路选择器3-B2,设有来自处理核心的写操作请求信号PEFC_WR作为第一输入端,来自有限状态机3-4的DTY_WR作为第二输入端,SEL_B作为选择控制端;输出端与修改状态空间Dirty RAM B的读写控制输入端DTYB_WR相连;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,当处理核心进行写操作的时候,需要将修改状态空间Dirty RAM B的标志位置为“1”,即接受PEFC_WR的控制;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机3-4,即DTY_WR的控制,当有新的流相关控制信息从控制信息存储器中读出时,将修改状态空间Dirty RAM B的标志位清零;V、多路选择器3-A3,设有“1”作为第一输入端和“0”作为第二输入端,SEL_A作为选择控制端;输出端与修改状态空间Dirty RAM A的数据输入端DTYA_DI相连;当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,当处理核心进行写操作的时候,需要将修改状态空间Dirty RAM A的标志位置为“1”;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,当有新的流相关控制信息从控制信息存储器中读出并写入工作栈Bank A时,将修改状态空间Dirty RAM A的标志位清零;VI、多路选择器3-B3,设有“1”作为第一输入端和“0”作为第二输入端,SEL_B作为选择控制端;输出端与修改状态空间Dirty RAM B的数据输入端DTYB_DI相连;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,当处理核心进行写操作的时候,需要将修改状态空间Dirty RAM B的标志位置为“1”;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,当有新的流相关控制信息从控制信息存储器中读出并写入工作栈Bank B时,将修改状态空间Dirty RAM B的标志位清零;VII、多路选择器3-A4,设有来自处理核心的控制信息地址线PEFC_AD作为第一输入端和来自有限状态机3-4的FCMS_AD作为第二输入端,SEL_A作为选择控制端;输出端与修改状态空间Dirty RAM A的地址信号输入端DTYA_AD相连;当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,当处理核心进行写操作的时候,需要使用来自处理核心的地址;当SEL_A为“假”时,表示处理核心正在使用工作栈BankB,工作栈Bank A接受有限状态机3-4的控制;VIII、多路选择器3-B4,设有来自处理核心的控制信息地址线PEFC_AD作为第一输入端和来自有限状态机3-4的FCMS_AD作为第二输入端,SEL_B作为选择控制端;输出端与修改状态空间Dirty RAM B的地址信号输入端DTYB_AD相连;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,当处理核心进行写操作的时候,需要使用来自处理核心的地址;当SEL_B为“假”时,表示处理核心正在使用工作栈BankA,工作栈Bank B接受有限状态机3-4的控制;IX、多路选择器3-A5,设有来自处理核心的数据PEFC_DI作为第一输入端和来自存储器及I/O总线接口的数据MSFC_DI作为第二输入端,SEL_A作为选择控制端;输出端与数据空间Data RAM A的数据输入端DATA_DI相连;当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,当处理核心进行写操作的时候,需要将来自处理核心的数据PEFC_DI写入数据空间Data RAM A;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,当有新的流相关控制信息从控制信息存储器中读出时,需要写入工作栈Bank A的数据空间Data RAM A中;X、多路选择器3-B5,设有来自处理核心的数据PEFC_DI作为第一输入端和来自存储器及I/O总线接口的数据MSFC_DI作为第二输入端,SEL_B作为选择控制端;输出端与数据空间Data RAM B的数据输入端DATB_DI相连;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,当处理核心进行写操作的时候,需要将来自处理核心的数据PEFC_DI写入数据空间Data RAM B;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,当有新的流相关控制信息从控制信息存储器中读出时,需要写入工作栈Bank B的数据空间Data RAM B中;XI、多路选择器3-A6,设有来自处理核心的控制信息地址线PEFC_AD作为第一输入端和来自有限状态机3-4的FCMS_AD作为第二输入端,SEL_A作为选择控制端;输出端与数据空间Data RAM A的地址信号输入端DATA_AD相连;
当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,当处理核心进行写操作的时候,需要使用来自处理核心的地址PEFC_AD;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机3-4的控制;XII、多路选择器3-B6,设有来自处理核心的控制信息地址线PEFC_AD作为第一输入端和来自有限状态机3-4的FCMS_AD作为第二输入端,SEL_B作为选择控制端;输出端与数据空间Data RAM B的地址信号输入端DATB_AD相连;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,当处理核心进行写操作的时候,需要使用来自处理核心的地址PEFC_AD;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机3-4的控制;XIII、多路选择器3-A7,设有来自处理核心的写操作请求信号PEFC_WR作为第一输入端和来自有限状态机3-4的DAT_WR作为第二输入端,SEL_A作为选择控制端;输出端与数据空间Data RAM A的读写控制输入端DATA_WR相连;当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,需要由处理核心对数据空间Data RAM A的读写进行控制;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机3-4的读写控制;XIV、多路选择器3-B7,设有来自处理核心的写操作请求信号PEFC_WR作为第一输入端和来自有限状态机3-4的DAT_WR作为第二输入端,SEL_B作为选择控制端;输出端与数据空间Data RAM B的读写控制输入端DATB_WR相连;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,需要由处理核心对数据空间Data RAM B的读写进行控制;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机3-4的读写控制;XV、多路选择器3-M1,设有地址标签空间Tag RAM A的输出TagA_DO作为第一输入端和地址标签空间Tag RAM B的输出TagB_DO作为第二输入端,SEL_B作为选择控制端;输出端为Tag_DO,是有限状态机3-4的一个输入信号;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机3-4的控制,并提供地址标签的内容;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机3-4的控制,并提供地址标签的内容;XVI、多路选择器3-M2,设有数据空间Data RAM A的输出DATA_DO作为第一输入端和数据空间Data RAM B的输出DATB_DO作为第二输入端,SEL_B作为选择控制端;输出端为FCMS_DO,是由Flow-Cache送往存储器及I/O总线接口的数据;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机3-4的控制,并向存储器及I/O总线接口提供需要写回控制信息存储器的数据;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机3-4的控制,并向存储器及I/O总线接口提供需要写回控制信息存储器的数据;XVII、多路选择器3-M3,设有数据空间Data RAMA的输出DATA_DO作为第一输入端和数据空间Data RAM B的输出DATB_DO作为第二输入端,SEL_A作为选择控制端;输出端为送往处理核心的数据FCPE_DO;当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,由工作栈Bank A为处理核心提供需要的数据;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,由工作栈Bank B为处理核心提供需要的数据;XVIII、多路选择器3-M4,设有修改状态空间Dirty RAM A的输出DTYA_DO作为第一输入端和修改状态空间Dirty RAM B的输出DTYB_DO作为第二输入端,SEL_B作为选择控制端;输出端为DIRTY,是有限状态机3-4的一个输入信号;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机3-4的控制,并提供数据空间的修改状态;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机3-4的控制,并提供数据空间的修改状态。
权利要求
1.基于网络处理器的流相关控制信息高速缓冲存储器,即Flow-Cache,其特征在于,分配给流相关控制信息的地址空间划分为相同大小的块,每个流对应于一个块,用来保存该流的控制信息,属于该流的所有数据包共享该块中的信息;Flow-Cache设置了两个称为BankA和Bank B的工作栈,每个工作栈中的缓存数据也组织为块的形式;每个数据包所对应的块只位于Bank A和Bank B两个工作栈中的一个,在处理单元在使用一个工作栈中的流相关控制信息进行处理的时候,另外一个工作栈通过流分类器提供的预取地址为下一个数据包读入相关的流相关控制信息;整个处理流程为当数据包被网络处理器接收时,先由流分类器进行流分类,然后将所获得的流相关控制信息的起始地址送到Flow-Cache的数据移动控制器;数据移动控制器检查该流相关控制信息是否已经保存在Flow-Cache的Bank A和Bank B两个工作栈的某一个中,如果没有,则Flow-Cache中目前未被处理单元使用的那个工作栈中相应的块被选为被替换的块,如果被替换的块曾经被处理单元修改,则先将被修改的内容写回控制信息存储器;然后将所需要的流相关控制信息从控制信息存储器中读出;当所需要的流相关控制信息被写入到Flow-Cache后,处理单元切换到该工作栈,对数据包进行处理;Flow-Cache的输入信号包括来自处理核心的读操作请求信号PEFC_RD、来自处理核心的写操作请求信号PEFC_WR、来自处理核心的控制信息地址线PEFC_AD、来自处理核心的数据PEFC_DI、来自处理核心的状态信号PE_SWCH,来自流分类器的流相关控制信息预取地址线CL_ADDR、来自流分类器的流相关控制信息预取请求信号CL_RQ,来自存储器及I/O总线接口的数据MSFC_DI以及来自存储器及I/O总线接口的确认信号MSFC_ACK;Flow-Cache的输出信号包括送往处理核心的数据FCPE_DO、送往处理核心的确认信号FCPE_ACK,送往存储器及I/O总线接口的读操作请求信号FCMS_RD、送往存储器及I/O总线接口的写操作请求信号FCMS_WR、送往存储器及I/O总线接口的地址线FCMS_AD和送往存储器及I/O总线接口的数据FCMS_DO;假设网络处理器以字节寻址,每个块包含N=2s个字节,且地址宽度为t+s位,则控制信息预取地址只需要该地址的高t位;设每个工作栈均保存M=2r个块,则t位的控制信息预取地址中的低r位就称为index部分,控制信息预取地址的高t-r位称为a_tag部分;所述的工作栈Bank A和Bank B各自含有a、地址标签空间Tag RAM A和Tag RAM B,其中的数据称为地址标签b_tag地址标签空间Tag RAM A的输入信号包括地址信号输入端与来自流分类器的流相关控制信息预取地址线CL_ADDR的index部分相连,数据输入端与CL_ADDR的a_tag部分相连,读写控制输入端为来自多路选择器(3-A1)的TagA_WR;地址标签空间Tag RAM A的输出信号为TagA_DO;地址标签空间Tag RAM B的输入信号包括地址信号输入端与来自流分类器的流相关控制信息预取地址线CL_ADDR的index部分相连,数据输入端与CL_ADDR的a_tag部分相连,读写控制输入端为来自多路选择器(3-B1)的TagB_WR;地址标签空间Tag RAM B的输出信号为TagB_DO;b、数据空间Data RAM A和Data RAM B数据空间Data RAM A的输入信号包括地址信号输入端与来自多路选择器(3-A6)的DATA_AD的低r+s位相连,数据输入端与来自多路选择器(3-A5)的DATA_DI相连,读写控制输入端为来自多路选择器(3-A7)的DATA_WR;数据空间Data RAM A的输出信号为DATA_DO;数据空间Data RAM B的输入信号包括地址信号输入端与来自多路选择器(3-B6)的DATB_AD的低r+s位相连,数据输入端与来自多路选择器(3-B5)的DATB_DI相连,读写控制输入端为来自多路选择器(3-B7)的DATB_WR;数据空间Data RAM B的输出信号为DATB_DO;c、修改状态空间Dirty RAM A和Dirty RAM B,分别为数据空间Data RAM A和DataRAM B中的块设置若干修改标志位,称为D;这里以每个块设置一个标志位为例,并且标志位为“1”表示已经被修改过,标志位为“0”表示尚未被修改过修改状态空间Dirty RAM A的输入信号包括地址信号输入端与来自多路选择器(3-A4)的DTYA_AD的index部分相连,数据输入端与来自多路选择器(3-A3)的DTYA_DI相连,读写控制输入端为来自多路选择器(3-A2)的DTYA_WR;修改状态空间Data RAM A的输出信号为DTYA_DO;修改状态空间Dirty RAM B的输入信号包括地址信号输入端与来自多路选择器(3-B4)的DTYB_AD的index部分相连,数据输入端与来自多路选择器(3-B3)的DTYB_DI相连,读写控制输入端为来自多路选择器(3-B2)的DTYB_WR;修改状态空间Data RAM B的输出信号为DTYB_DO;所述的数据移动控制器,含有a、标签比较器(3-1),设有来自流分类器的流相关控制信息预取地址线CL_ADDR中的a_tag部分、和地址标签空间Tag RAM A的输出数据线TagA_DO,作为其两个输入端;当两个输入端的数据完全一致时,该标签比较器(3-1)输出为“真”,表示所需的流相关控制信息已经保存在工作栈Bank A中;b、标签比较器(3-2),设有来自流分类器的流相关控制信息预取地址线CL_ADDR中的a_tag部分、和地址标签空间Tag RAM B的输出数据线TagB_DO,作为其两个输入端;当两个输入端的数据完全一致时,该标签比较器(3-2)输出为“真”,表示所需的流相关控制信息已经保存在工作栈Bank B中;c、栈切换控制器(3-3),用来控制两个工作栈的状态,即是为当前正在被处理的数据包向处理核心提供流相关控制信息,还是为下一个将要被处理的数据包从网络处理器外部的控制信息存储器中读取相关的流相关控制信息;该栈切换控制器(3-3)设有两个寄存器RC(3-3-I)和RN(3-3-II),分别用来保存当前正在被处理核心使用的工作栈号和下一个数据包的处理所需使用的工作栈号;栈切换控制器(3-3)的输入信号包括标签比较器(3-1)和标签比较器(3-2)的输出信号,来自处理核心的状态信号PE_SWCH和由有限状态机(3-4)送往栈切换控制器(3-3)的地址评估信号FSM_EVL;输出信号包括Bank A选择信号SEL_A和Bank B选择信号SEL_B;当SEL_A为“真”时,表示工作栈Bank A目前正在被处理核心使用;当SEL_B为“真”时,表示工作栈Bank B目前正在被处理核心使用;因此,在任何时刻,SEL_A和SEL_B互为相反;当由有限状态机(3-4)送往栈切换控制器(3-3)的地址评估信号FSM_EVL变为有效时,表示下一个数据包的处理所需的流相关控制信息的起始地址已经由流分类器送达Flow-Cache,需要对该流相关控制信息是否已经保存在Flow-Cache中进行判断;此时,如果标签比较器(3-1)和标签比较器(3-2)的输出均为“假”,则表示流相关控制信息在Flow-Cache中还不存在,因此需要将RN(3-3-II)的内容变为当前未被处理核心使用的那个工作栈的栈号,表示在该工作栈中即将进行数据的移动,并且当处理核心开始处理下一个数据包时,会使用该工作栈;如果标签比较器(3-1)输出为“真”,表示流相关控制信息已经保存在工作栈Bank A中,需要将RN(3-3-II)的内容置为Bank A的工作栈号;如果标签比较器(3-2)输出为“真”,表示流相关控制信息已经保存在工作栈Bank B中,则RN(3-3-II)的内容需要置为Bank B的工作栈号;标签比较器(3-1)和标签比较器(3-2)的输出均为“真”是一种非法状态,是不可能出现的;当来自处理核心的状态信号PE_SWCH变为有效后,表示处理核心结束了对当前数据包的处理,开始转入对下一个数据包的处理;此时,需要将寄存器RN(3-3-II)的内容写入寄存器RC(3-3-I);如果寄存器RC(3-3-I)中记录的是Bank A的工作栈号,则Bank A选择信号SEL_A输出为“真”,Bank B选择信号SEL_B输出为“假”;如果寄存器RC(3-3-I)中记录的是Bank B的工作栈号,则Bank B选择信号SEL_B输出为“真”,Bank A选择信号SEL_A输出为“假”;d、或非门(3-4-O),两个输入端与标签比较器(3-1)和标签比较器(3-2)的输出端相连,输出为MISS信号;如果标签比较器(3-1)和标签比较器(3-2)的输出均为“假”,则表示流相关控制信息在Flow-Cache中还不存在,输出信号MISS变为“真”;标签比较器(3-1)和标签比较器(3-2)中任何一个的输出为“真”,则表示流相关控制信息已经存在于Flow-Cache中,输出信号MISS变为“假”;标签比较器(3-1)和标签比较器(3-2)的输出均为“真”是一种非法状态,是不可能出现的;e、有限状态机(3-4),负责完成下一个数据包处理所需的流相关信息读取和被替换信息的写回操作;有限状态机(3-4)的输入信号包括来自流分类器的流相关控制信息预取请求信号CL_RQ、来自存储器及I/O总线接口的确认信号MSFC_ACK、由多路选择器(3-M4)输出的DIRTY信号、由多路选择器(3-M1)输出的Tag_DO信号、来自流分类器的流相关控制信息预取地址线CL_ADDR的index部分、或非门(3-4-O)输出的MISS信号;输出信号包括送往栈切换控制器(3-3)的地址评估信号FSM_EVL、送往存储器及I/O总线接口的地址线FCMS_AD、送往存储器及I/O总线接口的读操作请求信号FCMS_RD、送往存储器及I/O总线接口的写操作请求信号FCMS_WR、送往多路选择器(3-A2)和多路选择器(3-B2)的DTY_WR信号、送往多路选择器(3-A7)和多路选择器(3-B7)的DAT_WR信号、送往多路选择器(3-A1)和多路选择器(3-B1)的Tag_WR信号;该状态机假设工作栈内所有的RAM,其读写控制输入端变为“1”时,为写操作请求,变为“0”时,为读操作请求;并且在地址信号变为有效后的一个周期,数据输出变为有效;有限状态机(3-4)的状态转换流程如下I、空闲状态(4-1)如果来自流分类器的流相关控制信息预取请求信号CL_RQ变为有效,说明有新的数据包接受了流分类操作,需要对流相关控制信息是否已经保存在Flow-Cache中进行判断,进入判定状态;否则,维持空闲状态;II、判定状态(4-2)此时地址标签空间Tag RAM A和Tag RAM B中的数据均已经读出,标签比较器(3-1)和标签比较器(3-2)的输出结果变为有效;将输出信号FSM_EVL置为有效,指示栈切换控制器(3-3)进行工作;如果MISS信号为“假”,返回空闲状态;如果MISS信号为“真”,并且DIRTY信号为“1”,表示被替换块的内容被处理核心修改过,需要写回网络处理器外的控制信息存储器;将Tag_DO输出为FCMS_AD信号的高t-r位,将FCMS_AD信号的低s位置为零,将来自流分类器的流相关控制信息预取地址线CL_ADDR的index部分作为FCMS_AD信号的index部分输出,进入写回状态;如果MISS信号为“真”,并且DIRTY信号为“0”,则直接将新的流相关控制信息读入Flow-Cache;将来自流分类器的流相关控制信息预取地址线CL_ADDR作为FCMS_AD信号的高t位输出,进入读取状态;III、写回状态(4-3)将DAT_WR保持为读请求状态;通过送往存储器及I/O总线接口的写操作请求信号FCMS_WR发起写操作请求;当来自存储器及I/O总线接口的确认信号MSFC_ACK返回为有效时,如果工作栈中的被替换块中还存在尚未写回的数据,则将输出信号FCMS_AD的内容设置为指向下一个需要被写回的数据的地址,通常情况下,数据总线的宽度为32位,当网络处理器以字节寻址时,将输出信号FCMS_AD的值加4即可,然后通过送往存储器及I/O总线接口的写操作请求信号FCMS_WR再次发起写操作请求;重复该过程直到被替换块内所有的数据均已写回,撤销写操作请求,进入读取状态;IV、读取状态(4-4)通过送往存储器及I/O总线接口的读操作请求信号FCMS_RD发起读操作请求;当来自存储器及I/O总线接口的确认信号MSFC_ACK返回为有效时,将DAT_WR置为写请求;如果新的流相关控制信息尚未全部从网络处理器外的控制信息存储器中读出,则将FCMS_AD的内容指向下一个需要被读取的数据的地址,通常情况下,数据总线的宽度为32位,当网络处理器以字节寻址时,将FCMS_AD的内容加4即可,然后通过送往存储器及I/O总线接口的读操作请求信号FCMS_RD发起读操作请求;重复该过程直到新的流相关控制信息均已读出并写入Flow-Cache,撤销读操作请求;将Tag_WR和DTY_WR置为写请求并维持一个周期,以保证新的地址标签信息和新的修改状态信息写入相应的工作栈,进入空闲状态;f、应答器(3-5),输入信号来自处理核心的读操作请求信号PEFC_RD、来自处理核心的写操作请求信号PEFC_WR,输出信号为送往处理核心的确认信号FCPE_ACK;在PEFC_RD或者PEFC_WR信号变为有效的一个周期后,FCPE_ACK信号变为有效并维持一个周期,表示数据已经从Flow-Cache读出或者写入;g、18个多路选择器,所有的多路选择器均在选择控制端为“真”时,选通第一输入端的数据作为输出;当选择控制端为“假”时,选通第二输入端的数据作为输出;I、多路选择器(3-A1),设有来自有限状态机(3-4)的Tag_WR作为第一输入端和“0”作为第二输入端,SEL_B作为选择控制端;输出端与地址标签空间Tag RAMA的读写控制输入端TagA_WR相连;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机(3-4)的控制;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,由于处理核心不使用地址标签空间Tag RAM A,因此,TagA_WR的输出为“0”;II、多路选择器(3-B1),设有来自有限状态机(3-4)的Tag_WR作为第一输入端和“0”作为第二输入端,SEL_A作为选择控制端;输出端与地址标签空间Tag RAM B的读写控制输入端TagB_WR相连当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机(3-4)的控制;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B;由于处理核心不使用地址标签空间Tag RAM B,因此,TagB_WR的输出为“0”;III、多路选择器(3-A2),设有来自处理核心的写操作请求信号PEFC_WR作为第一输入端,来自有限状态机(3-4)的DTY_WR作为第二输入端;SEL_A作为选择控制端;输出端与修改状态空间Dirty RAM A的读写控制输入端DTYA_WR相连;当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,当处理核心进行写操作的时候,需要将修改状态空间Dirty RAM A的标志位置为“1”,即接受PEFC_WR的控制;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机(3-4),即DTY_WR的控制,当有新的流相关控制信息从控制信息存储器中读出时,将修改状态空间Dirty RAM A的标志位清零;IV、多路选择器(3-B2),设有来自处理核心的写操作请求信号PEFC_WR作为第一输入端,来自有限状态机(3-4)的DTY_WR作为第二输入端,SEL_B作为选择控制端;输出端与修改状态空间Dirty RAM B的读写控制输入端DTYB_WR相连;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,当处理核心进行写操作的时候,需要将修改状态空间Dirty RAM B的标志位置为“1”,即接受PEFC_WR的控制;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机(3-4),即DTY_WR的控制,当有新的流相关控制信息从控制信息存储器中读出时,将修改状态空间Dirty RAM B的标志位清零;V、多路选择器(3-A3),设有“1”作为第一输入端和“0”作为第二输入端,SEL_A作为选择控制端;输出端与修改状态空间Dirty RAM A的数据输入端DTYA_DI相连;当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,当处理核心进行写操作的时候,需要将修改状态空间Dirty RAM A的标志位置为“1”;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,当有新的流相关控制信息从控制信息存储器中读出并写入工作栈Bank A时,将修改状态空间Dirty RAM A的标志位清零;VI、多路选择器(3-B3),设有“1”作为第一输入端和“0”作为第二输入端,SEL_B作为选择控制端;输出端与修改状态空间Dirty RAM B的数据输入端DTYB_DI相连;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,当处理核心进行写操作的时候,需要将修改状态空间Dirty RAM B的标志位置为“1”;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,当有新的流相关控制信息从控制信息存储器中读出并写入工作栈Bank B时,将修改状态空间Dirty RAM B的标志位清零;VII、多路选择器(3-A4),设有来自处理核心的控制信息地址线PEFC_AD作为第一输入端和来自有限状态机(3-4)的FCMS_AD作为第二输入端,SEL_A作为选择控制端;输出端与修改状态空间Dirty RAM A的地址信号输入端DTYA_AD相连;当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,当处理核心进行写操作的时候,需要使用来自处理核心的地址;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机(3-4)的控制;VIII、多路选择器(3-B4),设有来自处理核心的控制信息地址线PEFC_AD作为第一输入端和来自有限状态机(3-4)的FCMS_AD作为第二输入端,SEL_B作为选择控制端;输出端与修改状态空间Dirty RAM B的地址信号输入端DTYB_AD相连;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,当处理核心进行写操作的时候,需要使用来自处理核心的地址;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机(3-4)的控制;IX、多路选择器(3-A5),设有来自处理核心的数据PEFC_DI作为第一输入端和来自存储器及I/O总线接口的数据MSFC_DI作为第二输入端,SEL_A作为选择控制端;输出端与数据空间Data RAM A的数据输入端DATA_DI相连;当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,当处理核心进行写操作的时候,需要将来自处理核心的数据PEFC_DI写入数据空间Data RAM A;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,当有新的流相关控制信息从控制信息存储器中读出时,需要写入工作栈Bank A的数据空间Data RAM A中;X、多路选择器(3-B5),设有来自处理核心的数据PEFC_DI作为第一输入端和来自存储器及I/O总线接口的数据MSFC_DI作为第二输入端,SEL_B作为选择控制端;输出端与数据空间Data RAM B的数据输入端DATB_DI相连;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,当处理核心进行写操作的时候,需要将来自处理核心的数据PEFC_DI写入数据空间Data RAM B;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,当有新的流相关控制信息从控制信息存储器中读出时,需要写入工作栈Bank B的数据空间Data RAM B中;XI、多路选择器(3-A6),设有来自处理核心的控制信息地址线PEFC_AD作为第一输入端和来自有限状态机(3-4)的FCMS_AD作为第二输入端,SEL_A作为选择控制端;输出端与数据空间Data RAM A的地址信号输入端DATA_AD相连;当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,当处理核心进行写操作的时候,需要使用来自处理核心的地址PEFC_AD;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机(3-4)的控制;XII、多路选择器(3-B6),设有来自处理核心的控制信息地址线PEFC_AD作为第一输入端和来自有限状态机(3-4)的FCMS_AD作为第二输入端,SEL_B作为选择控制端;输出端与数据空间Data RAM B的地址信号输入端DATB_AD相连;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,当处理核心进行写操作的时候,需要使用来自处理核心的地址PEFC_AD;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机(3-4)的控制;XIII、多路选择器(3-A7),设有来自处理核心的写操作请求信号PEFC_WR作为第一输入端和来自有限状态机(3-4)的DAT_WR作为第二输入端,SEL_A作为选择控制端;输出端与数据空间Data RAM A的读写控制输入端DATA_WR相连;当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,需要由处理核心对数据空间Data RAM A的读写进行控制;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机(3-4)的读写控制;XIV、多路选择器(3-B7),设有来自处理核心的写操作请求信号PEFC_WR作为第一输入端和来自有限状态机(3-4)的DAT_WR作为第二输入端,SEL_B作为选择控制端;输出端与数据空间Data RAM B的读写控制输入端DATB_WR相连;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,需要由处理核心对数据空间Data RAM B的读写进行控制;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机(3-4)的读写控制;XV、多路选择器(3-M1),设有地址标签空间Tag RAM A的输出TagA_DO作为第一输入端和地址标签空间Tag RAM B的输出TagB_DO作为第二输入端,SEL_B作为选择控制端;输出端为Tag_DO,是有限状态机(3-4)的一个输入信号;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机(3-4)的控制,并提供地址标签的内容;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机(3-4)的控制,并提供地址标签的内容;XVI、多路选择器(3-M2),设有数据空间Data RAM A的输出DATA_DO作为第一输入端和数据空间Data RAM B的输出DATB_DO作为第二输入端,SEL_B作为选择控制端;输出端为FCMS_DO,是由Flow-Cache送往存储器及I/O总线接口的数据;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机(3-4)的控制,并向存储器及I/O总线接口提供需要写回控制信息存储器的数据;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机(3-4)的控制,并向存储器及I/O总线接口提供需要写回控制信息存储器的数据;XVII、多路选择器(3-M3),设有数据空间Data RAM A的输出DATA_DO作为第一输入端和数据空间Data RAM B的输出DATB_DO作为第二输入端,SEL_A作为选择控制端;输出端为送往处理核心的数据FCPE_DO;当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,由工作栈Bank A为处理核心提供需要的数据;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,由工作栈Bank B为处理核心提供需要的数据;XVIII、多路选择器(3-M4),设有修改状态空间Dirty RAM A的输出DTYA_DO作为第一输入端和修改状态空间Dirty RAM B的输出DTYB_DO作为第二输入端,SEL_B作为选择控制端;输出端为DIRTY,是有限状态机(3-4)的一个输入信号;当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机(3-4)的控制,并提供数据空间的修改状态;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机(3-4)的控制,并提供数据空间的修改状态。
全文摘要
基于网络处理器的流相关控制信息高速缓冲存储器属于计算机技术领域,其特征在于地址空间被划分为相同大小的块,每个流对应于一个块,用来保存该流的控制信息;Flow-Cache设置了两个称为Bank A和Bank B的工作栈,工作栈中的缓存数据也组织为块的形式;在处理单元在使用一个工作栈中的流相关控制信息进行处理的时候,另外一个工作栈通过流分类器提供的预取地址为下一个数据包读入相关的流相关控制信息;如果流相关控制信息被处理单元修改,当发生替换时,需要将被修改的部分写回控制信息存储器。本发明能使用SDRAM等大容量低成本的存储器件来完成较为复杂的网络功能,减少对网络处理器存储器带宽的占用,并兼顾网络处理器对于性能确定性的需求。
文档编号H04L12/56GK1812378SQ20061001142
公开日2006年8月2日 申请日期2006年3月3日 优先权日2006年3月3日
发明者刘祯, 刘斌 申请人:清华大学