CN100396059C - 分裂式网络处理器控制信息高速缓冲存储器 - Google Patents
分裂式网络处理器控制信息高速缓冲存储器 Download PDFInfo
- Publication number
- CN100396059C CN100396059C CNB2006100114258A CN200610011425A CN100396059C CN 100396059 C CN100396059 C CN 100396059C CN B2006100114258 A CNB2006100114258 A CN B2006100114258A CN 200610011425 A CN200610011425 A CN 200610011425A CN 100396059 C CN100396059 C CN 100396059C
- Authority
- CN
- China
- Prior art keywords
- data
- signal
- cache memory
- processing unit
- 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.)
- Expired - Fee Related
Links
- 230000015654 memory Effects 0.000 title claims abstract description 653
- 238000012545 processing Methods 0.000 claims abstract description 309
- 230000001419 dependent effect Effects 0.000 claims description 192
- 238000000034 method Methods 0.000 claims description 27
- 230000008569 process Effects 0.000 claims description 24
- 230000004048 modification Effects 0.000 claims description 21
- 238000012986 modification Methods 0.000 claims description 21
- 238000012790 confirmation Methods 0.000 claims description 18
- 238000011156 evaluation Methods 0.000 claims description 9
- 239000012467 final product Substances 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 4
- 241001672694 Citrus reticulata Species 0.000 claims description 3
- 230000008878 coupling Effects 0.000 claims description 3
- 238000010168 coupling process Methods 0.000 claims description 3
- 238000005859 coupling reaction Methods 0.000 claims description 3
- 238000003860 storage Methods 0.000 abstract description 12
- 238000005516 engineering process Methods 0.000 abstract description 9
- 230000002596 correlated effect Effects 0.000 abstract 7
- 230000014759 maintenance of location Effects 0.000 abstract 1
- 238000013461 design Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 239000000047 product Substances 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 2
- 241000412176 Sevenia Species 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
- 230000003245 working effect Effects 0.000 description 1
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
分裂式网络处理器控制信息高速缓冲存储器属于计算机技术领域,其特征在于:含有区分应用相关数据或流相关数据的地址识别器、用来缓存应用相关数据的App-Cache、用来缓存流相关数据的Flow-Cache以及对来自App-Cache和Flow-Cache的控制信息存储器访问请求进行调度的存储器调度器;Flow-Cache中设有两个工作栈,以便处理单元在使用一个工作栈中的流相关数据对数据包进行处理的同时,另外一个工作栈能在需要的时候使用来自流分类器的控制信息预期地址,为下一个数据包读入相关的流相关数据;如果流相关数据被处理单元修改,当发生替换时,被修改的部分需要写回控制信息存储器。本发明既能提高网络处理器中高速缓冲存储器的效率,又能兼顾网络处理器对于性能确定性的需求。
Description
技术领域
本发明是一种用于对报文处理中的控制信息进行缓存的机构,可以应用于互联网络中的高速并且复杂的报文处理,属于计算机技术领域。
背景技术
网络处理器属于专用处理器的一种,通常应用于灵活高速的数据包处理。它结合了ASIC和通用CPU的优势,具有能够缩短路由器开发周期和延长网络设备生存期的优点。一些厂商已经陆续推出了各类网络处理器产品。为了达到预期的目的,这些产品通常采用了很多方兴未艾的新技术。比如,最为常见的做法就是将多个处理单元集成在同一个网络处理器上,并且使用针对网络应用进行了优化的专用指令集。另外一个经常采用的技术是将功能比较固定的操作用协处理器或专用硬件来完成,以减少软件的开销,大幅度地提升性能。
由于网络处理器需要处理大量的数据包,因此数据包的移动通常由专用的硬件完成。当处理开始进行的时候,所需要的数据包字段通常是已经保存在专用寄存器堆中的,因此我们认为对数据包字段的访问是不存在访问延迟的。但是,网络应用所需要的控制信息,比如路由表、流分类规则库和流量统计信息等,由于所占据的空间较大,一般是保存在片外存储器件中的。即便有些网络处理器使用较为高速的SRAM作为控制信息存储器,但是由多处理单元而导致的排队使得访问延迟与处理周期相比仍然非常可观,在某些网络处理器产品中甚至达到数百倍。因此,控制信息的访问延迟隐藏仍然是网络处理器中比较关键的技术。
多线程是网络处理器广泛采用的一种延迟隐藏技术。它虽然可以较好地利用网络处理并行性的特点,但是编程模型复杂,对存储器带宽要求较高。目前越来越多的厂商开始采用易于制造并且易于编程的高速缓冲存储器,即cache,来解决这一问题。但是由于网络处理不同于一般的应用,传统的cache机构在实际的网络处理中往往效率低下。很多网络处理器中都具有采用软件控制的高速片上存储器,也称为便笺式存储器(Scratch Pad)。但是这类器件由于容量很小并且缺乏硬件支持,不利于大型数据结构的使用和管理,只能作为延迟隐藏技术的有益补充。
现有的cache设计大多针对通用处理器,所面向的应用尤以科学计算为主。例如,SallyA.McKee等人所设计的流存储控制器(Stream Memory Controller)主要面对矩阵运算等具有固定访问模式的应用[1]。而Antonio Gonzalez等人的二元数据高速缓冲存储器(Dual Data Cache)则只是简单地将数据按照有无较强的空间局部性进行区分[2]。网络应用的显著特点是它不具备比较有规律的访问模式,不同类型的数据所表现出来的局部性可能大不不同。此外,传统的cache仅仅注重平均性能的提升,并且以恶化的最坏性能为代价。对于网络处理器来说,线速转发的需求使得它更注重性能的可预测性以及最坏情况下的性能保证。因此,依照普通应用所设计的cache显然无法在网络处理器中取得比较理想的效果。
[1]Sally A.McKee,William A.Wulf,James H.Aylor,Robert H.Klenke,Maximo H.Salinas,Sung I.Hong,and Dee A.B.Weikle.Dynamic Access Ordering for Streamed Computations.IEEE Transactions on Computers,vol.49,no.11,pp.1255-1271,November 2000.
[2]Antonio Gonzalez,Carlos Aliagas,and Mateo Valero.A Data Cache with MultipleCaching Strategies Tuned to Different Types of Locality.Proceedings of the 1995 InternationalConference on Supercomputering(ICS’95),pp.338-347,Barcelona,Spain,1995.
发明内容
本发明的目的在于提高网络处理器中高速缓冲存储器的效率,使得它既能够很好地发挥作为延迟掩藏技术的功用,同时又能兼顾网络处理器对于性能确定性的需求。
本发明的思路在于,对网络处理器中不同类型的控制信息设计专用的高速缓冲存储器。网络处理中所遇到的控制信息通常可以分为三类:
(1)数据包相关数据。这类信息为单个数据包所独有,通常包括网络处理所产生的中间结果以及临时变量等。它们占控制信息访问的大多数,并且所占据的空间非常小,一般情况下只有几百个字节,因此使用Scratch Pad就可以解决它们的访问问题。
(2)流相关数据。这类信息在基于流的应用中,比如QoS控制、复杂式计费和流量监测等,是非常重要的一类数据。它们被同一个流中的所有数据包所共享。例如,一个TCP的连接记录表可能会为每个流记录它的连接标志、序列号、窗口大小以及确认情况等。每个流所使用的数据一般不是很多,但由于路由器所处理的流的数目都非常庞大,因此这类数据的总量往往比较大。
(3)应用相关数据。这类信息通常包括全局变量以及用于辅助完成某类应用的数据结构,它们为所有的数据包所共享。全局变量所占据空间少,并且使用频繁,因此与数据包相关数据一样,可以将它们存储在Scratch Pad中。而用于完成某类操作所需要的数据占用的空间一般是比较多的,比如一个中等规模的路由表可能就含有百万条以上的表项。
流相关数据和应用相关数据中用于辅助完成某类应用的数据结构需要储存在片外大容量存储器,如DRAM中,而访问它们也会带来比较大的延迟。网络处理器中通常采用的cache对这两类数据不加区分地缓存,而忽略了它们在访问模式上的差别。
本发明为流相关数据和应用相关数据分别设置了相应的子高速缓冲存储器(或称为subcache),对应地称之为流相关数据高速缓冲存储器和应用相关数据高速缓冲存储器。同时注意到这两类数据的访问模式具有很大不同,因此可以对这两个子高速缓冲存储器设置不同的结构,以充分发挥各自的优势。具体来说,应用相关数据的访问模式不固定,依赖于算法的具体实现。比如,由于具有相同前缀的目的IP地址会访问前缀trie树中的同一节点,因此基于trie的路由查找算法会比基于哈希表的查找算法表现出更强的时间局部性。另一方面,基于trie的路由查找算法的空间局部性又会大大低于线性查找算法。因此,应用相关数据高速缓冲存储器应该与传统cache具有相似的结构,以更好地突出灵活性的特点,增强网络处理器适合使用的范围。而流相关数据在单个数据包处理过程中表现出较强的空间局部性,时间局部性仅出现在属于同一个流的数据包被接收的情况下。因此,我们可以给流相关数据高速缓冲存储器设置更长的字长(cache line),从而充分地利用其较强的空间局部性。此外,网络应用通常以流分类开始,然后根据流分类的结果采取相应的处理。而流分类由于其复杂性一般是由协处理器来完成的。假如我们将流相关数据限制在一个连续的区域中(以牺牲少量的编程灵活性为代价),那么,在其他需要处理单元来完成的操作开始之前,该区域的起始地址就可以作为流分类的结果而获得。通过设置适当的硬件使得数据包的处理和流相关数据的预取流水进行,就可以保证在处理单元开始对数据包进行操作的时候,所需要的流相关数据已经保存在流相关数据高速缓冲存储器之中了,从而使得在流相关数据高速缓冲存储器中不会发生缺失,进而保证网络处理所需要的确定性性能。
本发明的特征在于含有:地址识别器、应用相关数据高速缓冲存储器、流相关数据高速缓冲存储器以及存储器调度器,其中:
(1)地址识别器,用来判断处理单元在对数据包进行操作的过程中所发出的控制信息访问请求的地址,是属于流相关数据所在的空间、还是应用相关数据所在的空间,并根据判定的结果,将访问请求送入对应的高速缓冲存储器;
该地址识别器的输入信号包括:来自处理单元的控制信息地址线PE_ADDR、来自处理单元的控制信息访问请求信号PE_RQ、应用相关数据高速缓冲存储器的数据信号AC_DOUT、流相关数据高速缓冲存储器的数据信号FC_DOUT、应用相关数据高速缓冲存储器的确认信号AC_ACK和流相关数据高速缓冲存储器的确认信号FC_ACK;该地址识别器的输出信号包括:送往应用相关数据高速缓冲存储器的访问请求信号AC_RQ、送往流相关数据高速缓冲存储器的访问请求信号FC_RQ、送到处理单元的数据PE_DIN和送到处理单元的确认信号PE_ACK;
该地址识别器含有:
第一范围寄存器2-A1和第二范围寄存器2-A2,分别用来保存划分给应用相关数据的地址空间的上下边界;
第一比较器2-1,其第一数据输入端与第一范围寄存器2-A1的数据输出端相连,第二数据输入端与来自处理单元的控制信息地址线PE_ADDR相连;当第二数据输入端的输入小于第一范围寄存器2-A1中保存的内容时,第一比较器2-1输出为“真”;
第二比较器2-2,其第一数据输入端与第二范围寄存器2-A2的数据输出端相连,第二数据输入端与来自处理单元的控制信息地址线PE_ADDR相连;当第二数据输入端的输入大于等于第二范围寄存器2-A2中保存的内容时,第二比较器2-2输出为“真”;
第十一范围寄存器2-F1和第十二范围寄存器2-F2,分别用来保存划分给流相关数据的地址空间的上下边界;
第三比较器2-3,其第一数据输入端与第十一范围寄存器2-F1的数据输出端相连,第二数据输入端与来自处理单元的控制信息地址线PE_ADDR相连;当第二数据输入端的输入小于第十一范围寄存器2-F1中保存的内容时,第三比较器2-3输出为“真”;
第四比较器2-4,其第一数据输入端与第十二范围寄存器2-F2的数据输出端相连,第二数据输入端与来自处理单元的控制信息地址线PE_ADDR相连;当第二数据输入端的输入大于等于第十二范围寄存器2-F2中保存的内容时,第四比较器2-4输出为“真”;
第一与门2-I,两个数据输入端分别与第一比较器2-1、第二比较器2-2的输出端相连;当第一比较器2-1、第二比较器2-2的输出均为“真”时,第一与门2-I的输出信号Match_A变为有效;
第二与门2-II,两个数据输入端分别与第三比较器2-3、第四比较器2-4的输出端相连;当第三比较器2-3、第四比较器2-4的输出均为“真”时,第二与门2-II的输出信号Match_F变为有效;
第一三态门2-T1,设有Match_A作为输出控制端,来自处理单元的控制信息访问请求信号PE_RQ作为输入端;当Match_A信号有效时,第二三态门2-T1选通,把来自处理单元的控制信息访问请求信号PE_RQ作为送往应用相关数据高速缓冲存储器的访问请求信号AC_RQ输出到应用相关数据高速缓冲存储器;PE_RQ信号实际上由读操作请求信号PE_RD和写操作请求信号PE_WR构成,相应的AC_RQ也分为送往应用相关数据高速缓冲存储器的读操作请求信号AC_RD和送往应用相关数据高速缓冲存储器的写操作请求信号AC_WR;
第二三态门2-T2,设有Match_F作为输出控制端,来自处理单元的控制信息访问请求信号PE_RQ作为输入端;当Match_F信号有效时,第二三态门2-T2选通,把来自处理单元的控制信息访问请求信号PE_RQ作为送往流相关数据高速缓冲存储器的访问请求信号FC_RQ输出到流相关数据高速缓冲存储器;PE_RQ信号实际上由读操作请求信号PE_RD和写操作请求信号PE_WR构成,相应的FC_RQ也分为送往流相关数据高速缓冲存储器的读操作请求信号FC_RD和送往流相关数据高速缓冲存储器的写操作请求信号FC_WR;
第十九多路选择器2-M1,设有Match_A和Match_F信号作为选择控制端,应用相关数据高速缓冲存储器的数据信号AC_DOUT和流相关数据高速缓冲存储器的数据信号FC_DOUT作为两个输入端;当Match_A信号有效时,第十九多路选择器2-M1将应用相关数据高速缓冲存储器的数据信号AC_DOUT作为送到处理单元的数据PE_DIN而输出,当Match_F信号有效时,第十九多路选择器2-M1将流相关数据高速缓冲存储器的数据信号FC_DOUT作为送到处理单元的数据PE_DIN而输出,当Match_A信号和Match_F信号均无效时,第十九多路选择器2-M1输出为高阻状态,而Match_A信号和Match_F信号均有效是一个非法状态,不可能出现该情况;
第二十多路选择器2-M2,设有Match_A和Match_F信号作为选择控制端,应用相关数据高速缓冲存储器的确认信号AC_ACK和流相关数据高速缓冲存储器的确认信号FC_ACK作为两个输入端;当Match_A信号有效时,多路选择器2-M2将应用相关数据高速缓冲存储器的确认信号AC_ACK作为送到处理单元的确认信号PE_ACK而输出,当Match_F信号有效时,第二十多路选择器2-M2将流相关数据高速缓冲存储器的确认信号FC_ACK作为送到处理单元的确认信号PE_ACK而输出,当Match_A信号和Match_F信号均无效时,第二十多路选择器2-M2输出为高阻状态,而Match_A信号和Match_F信号均有效是一个非法状态,不可能出现该情况;
(2)应用相关数据高速缓冲存储器,用于缓存那些被所有数据包所共享的数据;应用相关数据高速缓冲存储器存储的内容分为三类:被缓存的数据(data)、表示数据是否有效的标志位(v)、以及用来判定数据是否已经在应用相关数据高速缓冲存储器中存在的地址标签(tag);
应用相关数据高速缓冲存储器的输入信号包括:来自处理单元的控制信息地址线PE_ADDR、来自处理单元的数据PE_DOUT、送往应用相关数据高速缓冲存储器的访问请求信号AC_RQ、由存储器调度器送到应用相关数据高速缓冲存储器的数据ACMS_DI和由存储器调度器送到应用相关数据高速缓冲存储器的确认信号ACMS_ACK;应用相关数据高速缓冲存储器的输出信号包括:应用相关数据高速缓冲存储器的数据信号AC_DOUT、应用相关数据高速缓冲存储器的确认信号AC_ACK、由应用相关数据高速缓冲存储器送往存储器调度器的访问请求信号ACMS_RQ、由应用相关数据高速缓冲存储器送往存储器调度器的地址线AC_ADDR和由应用相关数据高速缓冲存储器送往存储器调度器的数据线ACMS_DO;
当送往应用相关数据高速缓冲存储器的访问请求信号AC_RQ有效时,如果来自处理单元的控制信息地址线信息PE_ADDR与相应缓存单元中保存的地址标签tag一致且缓存数据有效,则匹配成功;此时,当为读操作时,应用相关数据高速缓冲存储器相应缓存单元中保存的数据data作为应用相关数据高速缓冲存储器的数据信号AC_DOUT通过地址识别器的第十九多路选择器2-M1送入处理单元;当为写操作时,来自处理单元的数据PE_DOUT被写入相应缓存单元,并根据应用相关数据高速缓冲存储器设定的写策略决定是否需要写回位于网络处理器外的控制信息存储器;如果是写通策略,则将由应用相关数据高速缓冲存储器送往存储器调度器的访问请求信号ACMS_RQ置为有效,并将相应的地址和数据信息放置到由应用相关数据高速缓冲存储器送往存储器调度器的地址线AC_ADDR和由应用相关数据高速缓冲存储器送往存储器调度器的数据线ACMS_DO上;当由存储器调度器送到应用相关数据高速缓冲存储器的确认信号ACMS_ACK变为有效时,完成本次操作;
如果匹配不成功,当为读操作时,则需要从位于网络处理器外的控制信息存储器中读取所需的数据信息;将由应用相关数据高速缓冲存储器送往存储器调度器的访问请求信号ACMS_RQ置为有效,并将相应的地址信息放置到由应用相关数据高速缓冲存储器送往存储器调度器的地址线AC_ADDR上,当由存储器调度器送到应用相关数据高速缓冲存储器的确认信号ACMS_ACK变为有效时,将由存储器调度器送到应用相关数据高速缓冲存储器的数据ACMS_DI作为应用相关数据高速缓冲存储器的数据信号AC_DOUT提供给处理单元并写回应用相关数据高速缓冲存储器相应的缓存单元;当为写操作时,除了需要将来自处理单元的数据PE_DOUT写回位于网络处理器外的控制信息存储器中外,还需要根据应用相关数据高速缓冲存储器设定的写缺失策略,决定是否需要将来自处理单元的数据PE_DOUT写回应用相关数据高速缓冲存储器相应的缓存单元;当发生替换时,如果应用相关数据高速缓冲存储器的写策略为写回策略,还需要将被替换的数据中被修改的部分写回控制信息存储器;
(3)流相关数据高速缓冲存储器,用于缓存那些仅被属于同一个流的数据包所共享的数据;为了能够在满足处理单元访问需求的同时,对控制信息存储器进行读写,流相关数据高速缓冲存储器设置了两个称为Bank A和Bank B的工作栈;分配给流相关数据的地址空间划分为相同大小的块,每个流对应于一个块,流相关数据信息就保存在这个块中;每个工作栈中的缓存数据也组织为块的形式,即cache line的大小与块是一致的;每个数据包所对应的流相关数据只位于Bank A和Bank B两个工作栈中的一个,在数据包被处理单元处理之前由流相关数据高速缓冲存储器中的数据移动控制器读入流相关数据高速缓冲存储器,另外一个不对处理单元提供数据的工作栈在需要的时候为下一个数据包读入相应的流相关数据;整个数据包的处理流程为:当数据包被网络处理器接收时,先由流分类器进行流分类,然后将所获得的流相关数据的起始地址送到流相关数据高速缓冲存储器的数据移动控制器;数据移动控制器检查该流相关数据是否已经保存在流相关数据高速缓冲存储器的Bank A和Bank B两个工作栈的某一个中,如果没有,则流相关数据高速缓冲存储器目前未被处理单元使用的那个工作栈中相应的块被选为被替换的块,如果曾经被处理单元修改,则先将该块中被修改的内容写回控制信息存储器;然后将所需要的流相关数据从控制信息存储器中读出,并替换该块的内容;当所需要的流相关数据被写入到流相关数据高速缓冲存储器后,处理单元切换到该工作栈,对数据包进行处理;
流相关数据高速缓冲存储器的输入信号包括:来自处理单元的控制信息地址线PE_ADDR、来自处理单元的数据PE_DOUT、来自处理单元的状态信号PE_SWCH、来自流分类器的流相关数据预取地址线CL_ADDR、来自流分类器的流相关数据预取请求信号CL_RQ、送往流相关数据高速缓冲存储器的访问请求信号FC_RQ、由存储器调度器送到流相关数据高速缓冲存储器的数据FCMS_DI和由存储器调度器送到流相关数据高速缓冲存储器的确认信号FCMS_ACK;输出信号包括:流相关数据高速缓冲存储器的数据信号FC_DOUT、流相关数据高速缓冲存储器的确认信号FC_ACK、由流相关数据高速缓冲存储器送往存储器调度器的访问请求信号FCMS_RQ、由流相关数据高速缓冲存储器送往存储器调度器的地址线FC_ADDR和由流相关数据高速缓冲存储器送往存储器调度器的数据线FCMS_DO;
设网络处理器以字节寻址,每个块包含N=2s个字节,且地址宽度为t+s位,则控制信息预取地址只需要该地址的高t位;设每个工作栈均保存M=2r个块,则t位的控制信息预取地址中的低r位就称为index部分,控制信息预取地址的高t-r位称为a_tag部分;所述的工作栈Bank A含有:
a、第一地址标签空间Tag RAM A,其中的数据称为第一地址标签b_tag:
第一地址标签空间Tag RAM A的输入信号包括:地址信号输入端与来自流分类器的流相关数据预取地址线CL_ADDR的index部分相连,数据输入端与来自流分类器的流相关数据预取地址线CL_ADDR的a_tag部分相连,读写控制输入端为来自第一多路选择器(3-A1)的TagA_WR;第一地址标签空间Tag RAM A的输出信号为TagA_DO;
b、第一数据空间Data RAM A:
第一数据空间Data RAM A的输入信号包括:地址信号输入端与来自第六多路选择器(3-A6)的DATA_AD的低r+s位相连,数据输入端与来自第五多路选择器(3-A5)的DATA_DI相连,读写控制输入端为来自第七多路选择器(3-A7)的DATA_WR;第一数据空间Data RAM A的输出信号为DATA_DO;
c、第一修改状态空间Dirty RAM A,为第一数据空间Data RAM A中的块设置若干修改标志位,称为第一D;块的标志位为“1”表示已经被修改过,标志位为“0”表示尚未被修改过:
第一修改状态空间Dirty RAM A的输入信号包括:地址信号输入端与来自第四多路选择器(3-A4)的DTYA_AD的index部分相连,数据输入端与来自第三多路选择器(3-A3)的DTYA_DI相连,读写控制输入端为来自第二多路选择器(3-A2)的DTYA_WR;第一修改状态空间Dirty RAMA的输出信号为DTYA_DO;
所述的工作栈BankB含有:
a、第二地址标签空间Tag RAM B,其中的数据称为第二地址标签b_tag:
第二地址标签空间Tag RAM B的输入信号包括:地址信号输入端与来自流分类器的流相关数据预取地址线CL_ADDR的index部分相连,数据输入端与来自流分类器的流相关数据预取地址线CL_ADDR的a_tag部分相连,读写控制输入端为来自第八多路选择器(3-B1)的TagB_WR;第二地址标签空间Tag RAM B的输出信号为TagB_DO;
b、第二数据空间Data RAM B:
第二数据空间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 B,为第二数据空间Data RAM B中的块设置若干修改标志位,称为第二D;块的标志位为“1”表示已经被修改过,标志位为“0”表示尚未被修改过:
第二修改状态空间Dirty RAM B的输入信号包括:地址信号输入端与来自第十一多路选择器(3-B4)的DTYB_AD的index部分相连,数据输入端与来自第十多路选择器(3-B3)的DTYB_DI相连,读写控制输入端为来自第九多路选择器(3-B2)的DTYB_WR;第二修改状态空间Dirty 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变为有效时,表示下一个数据包的处理所需的流相关数据的起始地址已经由流分类器送达流相关数据高速缓冲存储器,需要对该流相关数据是否已经保存在流相关数据高速缓冲存储器中进行判断;此时,如果第一标签比较器3-1和第二标签比较器3-2的输出均为“假”,则表示流相关数据在流相关数据高速缓冲存储器中还不存在,因此需要将R,即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-I)的内容写入寄存器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输出为“真”,BankA选择信号SEL_A输出为“假”;
d、或非门3-4-O,两个输入端与第一标签比较器3-1和第二标签比较器3-2的输出端相连,输出为MISS信号;如果第一标签比较器3-1和第二标签比较器3-2的输出均为“假”,则表示流相关数据在流相关数据高速缓冲存储器中还不存在,输出信号MISS变为“真”;第一标签比较器3-1和第二标签比较器3-2中任何一个的输出为“真”,则表示流相关数据已经存在于流相关数据高速缓冲存储器中,输出信号MISS变为“假”;第一标签比较器3-1和第二标签比较器3-2的输出均为“真”是一种非法状态,是不可能出现的;
e、有限状态机3-4,负责完成下一个数据包处理所需的流相关信息读取和被替换信息的写回操作;
有限状态机3-4的输入信号包括:来自流分类器的流相关数据预取请求信号CL_RQ、由存储器调度器送到流相关数据高速缓冲存储器的确认信号FCMS_ACK、由第十八多路选择器3-M4输出的DIRTY信号、由第十五多路选择器3-M1输出的Tag_DO信号、来自流分类器的流相关数据预取地址线CL_ADDR的index部分、或非门3-4-O输出的MISS信号;输出信号包括:送往栈切换控制器3-3的地址评估信号FSM_EVL、送往存储器调度器的地址线FC_ADDR、送往存储器调度器的访问请求信号FCMS_RQ、送往第二多路选择器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变为有效,说明有新的数据包接受了流分类操作,需要对流相关数据是否已经保存在流相关数据高速缓冲存储器中进行判断,进入判定状态;否则,维持空闲状态;
II、判定状态4-2
此时第一地址标签空间Tag RAM A和第二地址标签空间Tag RAM B中的数据均已经读出,第一标签比较器3-1和第二标签比较器3-2的输出结果变为有效;将输出信号FSM_EVL置为有效,指示栈切换控制器3-3进行工作;
如果MISS信号为“假”,返回空闲状态;
如果MISS信号为“真”,并且DIRTY信号为“1”,表示被替换块的内容被处理单元修改过,需要写回网络处理器外的控制信息存储器;将Tag_DO输出为FC_ADDR信号的高t-r位,将FC_ADDR信号的低s位置为零,将来自流分类器的流相关数据预取地址线CL_ADDR的index部分作为FC_ADDR信号的index部分输出,进入写回状态;
如果MISS信号为“真”,并且DIRTY信号为“0”,则直接将新的流相关数据读入流相关数据高速缓冲存储器;将来自流分类器的流相关数据预取地址线CL_ADDR作为FC_ADDR信号的高t位输出,进入读取状态;
III、写回状态4-3
将DAT_WR保持为读请求状态;
通过送往存储器调度器的访问请求信号FCMS_RQ发起写操作请求;
当由存储器调度器送到流相关数据高速缓冲存储器的确认信号FCMS_ACK返回为有效时,如果工作栈中的被替换块中还存在尚未写回的数据,则将输出信号FC_ADDR的内容设置为指向下一个需要被写回的数据的地址,数据总线的宽度为32位,当网络处理器以字节寻址时,将输出信号FC_ADDR的值加4即可,然后通过送往存储器调度器的访问请求信号FCMS_RQ再次发起写操作请求;重复该过程直到被替换块内所有的数据均已写回,撤销写操作请求,进入读取状态;
IV、读取状态4-4
通过送往存储器调度器的访问请求信号FCMS_RQ发起读操作请求;
当由存储器调度器送到流相关数据高速缓冲存储器的确认信号FCMS_ACK返回为有效时,将DAT_WR置为写请求;
如果新的流相关数据尚未全部从网络处理器外的控制信息存储器中读出,则将FC_ADDR的内容指向下一个需要被读取的数据的地址,数据总线的宽度为32位,当网络处理器以字节寻址时,将FC_ADDR的内容加4即可,然后通过送往存储器调度器的访问请求信号FCMS_RQ发起读操作请求;重复该过程直到新的流相关数据均已读出并写入流相关数据高速缓冲存储器,撤销读操作请求;
将Tag_WR和DTY_WR置为写请求并维持一个周期,以保证新的地址标签信息和新的修改状态信息写入相应的工作栈,进入空闲状态;
f、应答器3-5,输入信号为流相关数据高速缓冲存储器访问请求信号FC_RQ,输出信号为应用相关数据高速缓冲存储器的确认信号FC_ACK;
在FC_RQ信号变为有效的一个周期后,FC_ACK信号变为有效并维持一个周期,表示数据已经从流相关数据高速缓冲存储器读出或者写入;
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 RAMB的读写控制输入端TagB_WR相连;
当SEL_A为“真”时,表示处理单元正在使用工作栈Bank A,工作栈Bank B接受有限状态机3-4的控制;当SEL_A为“假”时,表示处理单元正在使用工作栈Bank B;由于处理单元不使用第二地址标签空间Tag RAM B,因此,TagB_WR的输出为“0”;
III、第二多路选择器3-A2,设有由处理单元送往流相关数据高速缓冲存储器的写操作请求信号FC_WR作为第一输入端,来自有限状态机3-4的DTY_WR作为第二输入端;SEL_A作为选择控制端;输出端与第一修改状态空间Dirty RAM A的读写控制输入端DTYA_WR相连;
当SEL_A为“真”时,表示处理单元正在使用工作栈Bank A,当处理单元进行写操作的时候,需要将第一修改状态空间Dirty RAM A的标志位置为“1”,即接受FC_WR的控制;当SEL_A为“假”时,表示处理单元正在使用工作栈Bank B,工作栈Bank A接受有限状态机3-4,即DTY_WR的控制,当有新的流相关数据从控制信息存储器中读出时,将第一修改状态空间Dirty RAM A的标志位清零;
IV、第九多路选择器3-B2,设有由处理单元送往流相关数据高速缓冲存储器的写操作请求信号FC_WR作为第一输入端,来自有限状态机3-4的DTY_WR作为第二输入端,SEL_B作为选择控制端;输出端与第二修改状态空间Dirty RAM B的读写控制输入端DTYB_WR相连;
当SEL_B为“真”时,表示处理单元正在使用工作栈Bank B,当处理单元进行写操作的时候,需要将第二修改状态空间Dirty RAM B的标志位置为“1”,即接受FC_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,设有来自处理单元的控制信息地址线PE_ADDR作为第一输入端和来自有限状态机3-4的FC_ADDR作为第二输入端,SEL_A作为选择控制端;输出端与第一修改状态空间Dirty RAM A的地址信号输入端DTYA_AD相连;
当SEL_A为“真”时,表示处理单元正在使用工作栈Bank A,当处理单元进行写操作的时候,需要使用来自处理单元的地址;当SEL_A为“假”时,表示处理单元正在使用工作栈Bank B,工作栈Bank A接受有限状态机3-4的控制;
VIII、第十一多路选择器3-B4,设有来自处理单元的控制信息地址线PE_ADDR作为第一输入端和来自有限状态机3-4的FC_ADDR作为第二输入端,SEL_B作为选择控制端;输出端与第二修改状态空间Dirty RAM B的地址信号输入端DTYB_AD相连;
当SEL_B为“真”时,表示处理单元正在使用工作栈Bank B,当处理单元进行写操作的时候,需要使用来自处理单元的地址;当SEL_B为“假”时,表示处理单元正在使用工作栈Bank A,工作栈Bank B接受有限状态机3-4的控制;
IX、第五多路选择器3-A5,设有来自处理单元的数据PE_DOUT作为第一输入端和由存储器调度器送到流相关数据高速缓冲存储器的数据FCMS_DI作为第二输入端,SEL_A作为选择控制端;输出端与第一数据空间Data RAM A的数据输入端DATA_DI相连;
当SEL_A为“真”时,表示处理单元正在使用工作栈Bank A,当处理单元进行写操作的时候,需要将来自处理单元的数据PE_DOUT写入第一数据空间Data RAM A;当SEL_A为“假”时,表示处理单元正在使用工作栈Bank B,当有新的流相关数据从控制信息存储器中读出时,需要写入工作栈Bank A的第一数据空间Data RAM A中;
X、第十二多路选择器3-B5,设有来自处理单元的数据PE_DOUT作为第一输入端和由存储器调度器送到流相关数据高速缓冲存储器的数据FCMS_DI作为第二输入端,SEL_B作为选择控制端;输出端与第一数据空间Data RAM B的数据输入端DATB_DI相连;
当SEL_B为“真”时,表示处理单元正在使用工作栈Bank B,当处理单元进行写操作的时候,需要将来自处理单元的数据PE_DOUT写入第一数据空间Data RAM B;当SEL_B为“假”时,表示处理单元正在使用工作栈Bank A,当有新的流相关数据从控制信息存储器中读出时,需要写入工作栈Bank B的第二数据空间Data RAM B中;
XI、第六多路选择器3-A6,设有来自处理单元的控制信息地址线PE_ADDR作为第一输入端和来自有限状态机3-4的FC_ADDR作为第二输入端,SEL_A作为选择控制端;输出端与第一数据空间Data RAM A的地址信号输入端DATA_AD相连;
当SEL_A为“真”时,表示处理单元正在使用工作栈Bank A,当处理单元进行写操作的时候,需要使用来自处理单元的地址PE_ADDR;当SEL_A为“假”时,表示处理单元正在使用工作栈Bank B,工作栈Bank A接受有限状态机3-4的控制;
XII、第十三多路选择器3-B6,设有来自处理单元的控制信息地址线PE_ADDR作为第一输入端和来自有限状态机3-4的FC_ADDR作为第二输入端,SEL_B作为选择控制端;输出端与第二数据空间Data RAM B的地址信号输入端DATB_AD相连;
当SEL_B为“真”时,表示处理单元正在使用工作栈Bank B,当处理单元进行写操作的时候,需要使用来自处理单元的地址PE_ADDR;当SEL_B为“假”时,表示处理单元正在使用工作栈Bank A,工作栈Bank B接受有限状态机3-4的控制;
XIII、第七多路选择器3-A7,设有由处理单元送往流相关数据高速缓冲存储器的写操作请求信号FC_WR作为第一输入端和来自有限状态机3-4的DA_TWR作为第二输入端,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,设有由处理单元送往流相关数据高速缓冲存储器的写操作请求信号FC_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,是由流相关数据高速缓冲存储器送往存储器调度器的数据;
当SEL_B为“真”时,表示处理单元正在使用工作栈Bank B,工作栈Bank A接受有限状态机3-4的控制,并向存储器调度器提供需要写回控制信息存储器的数据;当SEL_B为“假”时,表示处理单元正在使用工作栈Bank A,工作栈Bank B接受有限状态机3-4的控制,并向存储器调度器提供需要写回控制信息存储器的数据;
XVII、第十七多路选择器3-M3,设有第一数据空间Data RAM A的输出DATA_DO作为第一输入端和第二数据空间Data RAM B的输出DATB_DO作为第二输入端,SEL_A作为选择控制端;输出端为FC_DOUT,是流相关数据高速缓冲存储器提供给处理单元的数据信号;
当SEL_A为“真”时,表示处理单元正在使用工作栈Bank A,由工作栈Bank A为处理单元提供需要的数据;当SEL_A为“假”时,表示处理单元正在使用工作栈BankB,由工作栈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的控制,并提供数据空间的修改状态;
(4)存储器调度器的输入信号包括:由应用相关数据高速缓冲存储器送往存储器调度器的地址线AC_ADDR、由应用相关数据高速缓冲存储器送往存储器调度器的数据线ACMS_DO、由应用相关数据高速缓冲存储器送往存储器调度器的访问请求信号ACMS_RQ,由流相关数据高速缓冲存储器送往存储器调度器的地址线FC_ADDR、由流相关数据高速缓冲存储器送往存储器调度器的数据线FCMS_DO、由流相关数据高速缓冲存储器送往存储器调度器的访问请求信号FCMS_RQ,来自控制信息存储器及I/O总线的确认信号ACK、来自控制信息存储器及I/O总线的数据输入信号DIN;输出信号包括:由存储器调度器送到应用相关数据高速缓冲存储器的确认信号ACMS_ACK、由存储器调度器送到流相关数据高速缓冲存储器的确认信号FCMS_ACK,由存储器调度器送到应用相关数据高速缓冲存储器的数据ACMS_DI、由存储器调度器送到流相关数据高速缓冲存储器的数据FCMS_DI,以及送往控制信息存储器及I/O总线的地址信号ADDR、送往控制信息存储器及I/O总线的数据信号DOUT、送往控制信息存储器及I/O总线的访问请求信号RQ;
存储器调度器接收并调度来自应用相关数据高速缓冲存储器和流相关数据高速缓冲存储器的控制信息存储器读写请求,将这些请求进行排序后,转换为控制信息存储器及I/O总线需要的信号形式发送到总线上;存储器调度器所遵守的优先级原则如下:读写请求中的写操作请求需要先保存在存储器调度器中与应用相关数据高速缓冲存储器和流相关数据高速缓冲存储器对应的FIFO中,即来自流相关数据高速缓冲存储器的写请求送入用WRFF表示的流相关数据高速缓冲存储器的第二写操作请求FIFO存储器2-W2,来自应用相关数据高速缓冲存储器的写请求送入用WRFA表示的应用相关数据高速缓冲存储器的第一写操作请求FIFO存储器2-W1;读请求则不需要先进行缓存;对于同时发出的同类请求,应用相关数据高速缓冲存储器的读请求比流相关数据高速缓冲存储器的读请求优先级要高,而应用相关数据高速缓冲存储器的写请求的优先级比流相关数据高速缓冲存储器的写请求要低;
对于读操作,存储器调度器需要等到读请求已经发送到控制信息存储器及I/O总线上,并且控制信息存储器及I/O总线也通过ACK信号进行了确认后,才向应用相关数据高速缓冲存储器返回确认信号ACMS_ACK、或者向流相关数据高速缓冲存储器返回确认信号FCMS_ACK;对于写操作,只要写操作请求已经保存入相应的FIFO,则向应用相关数据高速缓冲存储器返回确认信号ACMS_ACK、或者向流相关数据高速缓冲存储器返回确认信号FCMS_ACK;如果FIFO此时已满,无法写入,则要等到FIFO内的写操作请求被处理完毕一部分,FIFO内有多余空间供新的写操作请求写入后,才能向应用相关数据高速缓冲存储器返回确认信号ACMS_ACK、或者向流相关数据高速缓冲存储器返回确认信号FCMS_ACK。
本发明的优势在于,它能够减少cache中由于冲突而导致的缺失,从而大大提高cache的整体效率。这是因为,应用相关数据所占据的空间比单个流所需要的流相关数据要大很多。如果我们不加区分地将它们保存在同一个cache中,那些较少使用的流的流相关信息就会减少应用相关数据在cache中实际可使用的空间。这样就会造成高速缓冲存储器污染(cachepollution),从而增加冲突的可能。而分裂式的高速缓冲存储器中可以将流相关数据高速缓冲存储器设计得较小,从而增加应用相关数据高速缓冲存储器的可用空间,流相关数据高速缓冲存储器本身的设计可以保证不发生缺失,因此,冲突的概率被降到很小。
本发明另外一个优势在于,流相关数据高速缓冲存储器的长字长,充分利用了流相关数据访问模式空间局部性好的特点,处理过程中不缺失的设计增加了网络处理时间的确定性,可以比传统cache更好地满足网络处理器对于实时性的需求。而流水线式的设计又利用了网络处理各部分操作之间的并行性,使得实际可用的工作周期增加到一倍以上,极大地提高了网络处理器的灵活性。在合适的系统配置下,只要适当调整块的大小,流相关数据高速缓冲存储器还可以在保证合适的灵活性的前提下,满足最坏情况下(即最小包连续到达)的线速处理。下表列出了处理单元工作频率200MHz,存储器总线位宽为32位,控制信息存储器所使用的DDR SDRAM的工作周期为7.5纳秒、延迟为8个周期的情况下,对于不同速率的链路以及不同的最小包长,流相关数据高速缓冲存储器所支持的块的大小。注意到为了硬件设计的方便,块的大小应该是2的幂次,因此实际的块的大小会比理论上可以支持的大小少一些。表中的访问比例表示块的大小与处理单元实际可以进行的操作时间中最多可以访问的字节数的比值。由于网络处理更多地是进行计算和对数据包字段以及数据包相关数据的访问,对流相关数据的访问只占很小一部分。因此,流相关数据高速缓冲存储器的设计足以满足绝大多数网络应用的需要。如果一定要增加块的大小,可以通过选用带宽更高的存储器件来实现。
附图说明
图1网络处理器系统结构。
图2分裂式控制信息高速缓冲存储器系统结构。
图3流相关数据高速缓冲存储器系统结构。
图4流相关数据高速缓冲存储器中有限状态机的状态转换图。
具体实施方式
本发明称为分裂式网络处理器控制信息高速缓冲存储器(Split Control Cache,简称SCC)。其应用的位置如图1所示。为了说明方便起见,图1只表示了单处理单元的网络处理器结构。处理单元由执行运算的处理核心和提供控制信息的SCC构成。除处理单元外,该网络处理器中还有一组协处理器和若干硬件功能单元,用于完成流分类、校验和计算以及流量管理等功能。数据包在位于片外的数据包缓冲存储器中的存储与移动由输入/输出接口、以及数据包缓存控制器完成。处理所需要的数据包字段也由数据包缓存控制器提取并送入处理单元中。处理单元可以访问的存储空间由片内的Scratch Pad和片外的控制信息存储器构成。其中,ScratchPad通常用于关键数据的保存,处理单元可能通过互联机构或者控制信息存储器及I/O总线直接访问;而片外控制信息存储器一般由低速大容量的SDRAM等器件构成,用于保存路由表等大型数据结构。由于控制信息存储器的访问延迟与处理单元工作周期差距较大,处理单元不能直接访问控制信息存储器,必须通过分裂式控制信息高速缓冲存储器来进行。
整个分裂式控制信息高速缓冲存储器的硬件结构如图2所示,包括地址识别器、用来保存流相关数据的流相关数据高速缓冲存储器、用来保存应用相关数据的应用相关数据高速缓冲存储器、以及存储器调度器。各部分的主要结构和功能说明如下:
1.地址识别器
处理单元区别流相关数据和应用相关数据的方法有很多种,在本发明中使用的是地址空间区分法,即采用一个地址识别器来确定应该使用哪一个子高速缓冲存储器。我们把分配给流相关数据和应用相关数据的地址空间划分为两个各自连续但是不相重叠的区域,并用两对范围存储器记录其边界。第十一范围寄存器2-F1和第十二范围寄存器2-F2,依次保存划分给流相关数据的地址空间的上下边界;第一范围寄存器2-A1和第二范围寄存器2-A2,则依次保存划分给应用相关数据的地址空间的上下边界。这四个寄存器的值可以在系统初始化的时候予以设定,也可以在工作过程中根据程序的需要进行修改。
每当处理核心发出一个控制信息访问请求时,该控制信息所在的存储单元地址将同时与这四个寄存器进行比较,以确定该数据位于哪个空间之中。用来判断处理核心在对数据包进行操作的过程中所发出的控制信息访问请求的地址,是属于流相关数据所在的空间、还是应用相关数据所在的空间,并根据判定的结果,将访问请求送入对应的高速缓冲存储器;
该地址识别器的输入信号包括:来自处理核心的控制信息地址线PE_ADDR、来自处理核心的控制信息访问请求信号PE_RQ、应用相关数据高速缓冲存储器的数据信号AC_DOUT、流相关数据高速缓冲存储器的数据信号FC_DOUT、应用相关数据高速缓冲存储器的确认信号AC_ACK和流相关数据高速缓冲存储器的确认信号FC_ACK;该地址识别器的输出信号包括:送往应用相关数据高速缓冲存储器的访问请求信号AC_RQ、送往流相关数据高速缓冲存储器的访问请求信号FC_RQ、送到处理核心的数据PE_DIN和送到处理核心的确认信号PE_ACK;
该地址识别器含有:
第一范围寄存器2-A1和第二范围寄存器2-A2,分别用来保存划分给应用相关数据的地址空间的上下边界;
第一比较器2-1,其第一数据输入端与第一范围寄存器2-A1的数据输出端相连,第二数据输入端与来自处理核心的控制信息地址线PE_ADDR相连;当第二数据输入端的输入小于第一范围寄存器2-A1中保存的内容时,第一比较器2-1输出为“真”;
第二比较器2-2,其第一数据输入端与第二范围寄存器2-A2的数据输出端相连,第二数据输入端与来自处理核心的控制信息地址线PE_ADDR相连;当第二数据输入端的输入大于等于第二范围寄存器2-A2中保存的内容时,第二比较器2-2输出为“真”;
第十一范围寄存器2-F1和第十二范围寄存器2-F2,分别用来保存划分给流相关数据的地址空间的上下边界;
第三比较器2-3,其第一数据输入端与第十一范围寄存器2-F1的数据输出端相连,第二数据输入端与来自处理核心的控制信息地址线PE_ADDR相连;当第二数据输入端的输入小于第十一范围寄存器2-F1中保存的内容时,第三比较器2-3输出为“真”;
第四比较器2-4,其第一数据输入端与第十二范围寄存器2-F2的数据输出端相连,第二数据输入端与来自处理核心的控制信息地址线PE_ADDR相连;当第二数据输入端的输入大于等于第十二范围寄存器2-F2中保存的内容时,第四比较器2-4输出为“真”;
第一与门2-I,两个数据输入端分别与第一比较器2-1、第二比较器2-2的输出端相连;当第一比较器2-1、第二比较器2-2的输出均为“真”时,第一与门2-I的输出信号Match_A变为有效;
第二与门2-II,两个数据输入端分别与第三比较器2-3、第四比较器2-4的输出端相连;当第三比较器2-3、第四比较器2-4的输出均为“真”时,第二与门2-II的输出信号Match_F变为有效;
第一三态门2-T1,设有Match_A作为输出控制端,来自处理核心的控制信息访问请求信号PE_RQ作为输入端;当Match_A信号有效时,第一三态门2-T1选通,把来自处理核心的控制信息访问请求信号PE_RQ作为送往应用相关数据高速缓冲存储器的访问请求信号AC_RQ输出到应用相关数据高速缓冲存储器;PE_RQ信号实际上由读操作请求信号PE_RD和写操作请求信号PE_WR构成,相应的AC_RQ也分为送往应用相关数据高速缓冲存储器的读操作请求信号AC_RD和送往应用相关数据高速缓冲存储器的写操作请求信号AC_WR;
第二三态门2-T2,设有Match_F作为输出控制端,来自处理核心的控制信息访问请求信号PE_RQ作为输入端;当Match_F信号有效时,第二三态门2-T2选通,把来自处理核心的控制信息访问请求信号PE_RQ作为送往流相关数据高速缓冲存储器的访问请求信号FC_RQ输出到流相关数据高速缓冲存储器;PE_RQ信号实际上由读操作请求信号PE_RD和写操作请求信号PE_WR构成,相应的FC_RQ也分为送往流相关数据高速缓冲存储器的读操作清求信号FC_RD和送往流相关数据高速缓冲存储器的写操作请求信号FC_WR;
第一十九多路选择器2-M1,设有Match_A和Match_F信号作为选择控制端,应用相关数据高速缓冲存储器的数据信号AC_DOUT和流相关数据高速缓冲存储器的数据信号FC_DOUT作为两个输入端;当Match_A信号有效时,第十九多路选择器2-M1将应用相关数据高速缓冲存储器的数据信号AC_DOUT作为送到处理核心的数据PE_DIN而输出,当Match_F信号有效时,第十九多路选择器2-M1将流相关数据高速缓冲存储器的数据信号FC_DOUT作为送到处理核心的数据PE_DIN而输出,当Match_A信号和Match_F信号均无效时,第十九多路选择器2-M1输出为高阻状态,而Match_A信号和Match_F信号均有效是一个非法状态,不可能出现该情况;
第二十多路选择器2-M2,设有Match_A和Match_F信号作为选择控制端,应用相关数据高速缓冲存储器的确认信号AC_ACK和流相关数据高速缓冲存储器的确认信号FC_ACK作为两个输入端;当Match_A信号有效时,第二十多路选择器2-M2将应用相关数据高速缓冲存储器的确认信号AC_ACK作为送到处理核心的确认信号PE_ACK而输出,当Match_F信号有效时,第二十多路选择器2-M2将流相关数据高速缓冲存储器的确认信号FC_ACK作为送到处理核心的确认信号PE_ACK而输出,当Match_A信号和Match_F信号均无效时,第二十多路选择器2-M2输出为高阻状态,而Match_A信号和Match_F信号均有效是一个非法状态,不可能出现该情况。
2.应用相关数据高速缓冲存储器
该子高速缓冲存储器的结构与传统cache的结构是一样的,用应用相关数据高速缓冲存储器表示,用于缓存那些被所有数据包所共享的数据;应用相关数据高速缓冲存储器存储的内容分为三类:被缓存的数据(data)、表示数据是否有效的标志位(v)、以及用来判定数据是否已经在应用相关数据高速缓冲存储器中存在的地址标签(tag);
应用相关数据高速缓冲存储器的输入信号包括:来自处理核心的控制信息地址线PE_ADDR、来自处理核心的数据PE_DOUT、送往应用相关数据高速缓冲存储器的访问请求信号AC_RQ、由存储器调度器送到应用相关数据高速缓冲存储器的数据ACMS_DI和由存储器调度器送到应用相关数据高速缓冲存储器的确认信号ACMS_ACK;应用相关数据高速缓冲存储器的输出信号包括:应用相关数据高速缓冲存储器的数据信号AC_DOUT、应用相关数据高速缓冲存储器的确认信号AC_ACK、由应用相关数据高速缓冲存储器送往存储器调度器的访问请求信号ACMS_RQ、由应用相关数据高速缓冲存储器送往存储器调度器的地址线AC_ADDR和由应用相关数据高速缓冲存储器送往存储器调度器的数据线ACMS_DO;
当送往应用相关数据高速缓冲存储器的访问请求信号AC_RQ有效时,如果来自处理核心的控制信息地址线信息PE_ADDR与相应缓存单元中保存的地址标签tag一致且缓存数据有效,则匹配成功;此时,当为读操作时,应用相关数据高速缓冲存储器相应缓存单元中保存的数据data作为应用相关数据高速缓冲存储器的数据信号AC_DOUT通过地址识别器的第十九多路选择器2-M1送入处理核心;当为写操作时,来自处理核心的数据PE_DOUT被写入相应缓存单元,并根据应用相关数据高速缓冲存储器设定的写策略决定是否需要写回位于网络处理器外的控制信息存储器;如果是写通策略,则将由应用相关数据高速缓冲存储器送往存储器调度器的访问请求信号ACMS_RQ置为有效,并将相应的地址和数据信息放置到由应用相关数据高速缓冲存储器送往存储器调度器的地址线AC_ADDR和由应用相关数据高速缓冲存储器送往存储器调度器的数据线ACMS_DO上;当由存储器调度器送到应用相关数据高速缓冲存储器的确认信号ACMS_ACK变为有效时,完成本次操作;
如果匹配不成功,当为读操作时,则需要从位于网络处理器外的控制信息存储器中读取所需的数据信息;将由应用相关数据高速缓冲存储器送往存储器调度器的访问请求信号ACMS_RQ置为有效,并将相应的地址信息放置到由应用相关数据高速缓冲存储器送往存储器调度器的地址线AC_ADDR上,当由存储器调度器送到应用相关数据高速缓冲存储器的确认信号ACMS_ACK变为有效时,将由存储器调度器送到应用相关数据高速缓冲存储器的数据ACMS_DI作为应用相关数据高速缓冲存储器的数据信号AC_DOUT提供给处理核心并写回应用相关数据高速缓冲存储器相应的缓存单元;当为写操作时,除了需要将来自处理核心的数据PE_DOUT写回位于网络处理器外的控制信息存储器中外,还需要根据应用相关数据高速缓冲存储器设定的写缺失策略,决定是否需要将来自处理核心的数据PE_DOUT写回应用相关数据高速缓冲存储器相应的缓存单元;当发生替换时,如果应用相关数据高速缓冲存储器的写策略为写回策略,还需要将被替换的数据中被修改的部分写回控制信息存储器。
3.流相关数据高速缓冲存储器
该子高速缓冲存储器的基本部分由两个工作栈Bank A和Bank B以及数据移动控制器构成,可以在满足处理核心访问需求的同时进行控制信息存储器进行读写。流相关数据高速缓冲存储器的硬件结构如图3所示。处理核心对数据包的操作是连续进行的,但由于每个数据包所对应的流相关数据只位于其中一个工作栈中,因此另外一个不对处理核心提供数据的工作栈就可以在需要的时候为下一个数据包读入相应的流相关数据。为了存储管理的方便,我们把分配给流相关数据的地址空间划分为相同大小的块(block)。每个流都对应于一个块,流相关数据信息就保存在这个块中。每个工作栈中的数据缓存也组织为块的形式,即cache line的大小与块是一致的。
由于在处理核心的工作过程中不会发生缺失,流相关数据高速缓冲存储器中的地址比较机构只用来检查尚未被处理的包的相应信息是否已经存在于某个工作栈之中了。
流分类器与处理单元是并行工作的,当处理单元对某个数据包进行操作的时候,流分类器就可以为新达到的包进行分类。整个数据包的处理流程为:当新到达的数据包被网络处理器接收时,先由流分类器进行流分类,然后将所获得的流相关数据的起始地址送到流相关数据高速缓冲存储器的数据移动控制器;数据移动控制器检查该流相关数据是否已经保存在流相关数据高速缓冲存储器的Bank A和Bank B两个工作栈中的某一个了,如果没有的话,则流相关数据高速缓冲存储器目前未被处理核心使用的那个工作栈中相应的块选为被替换的块,如果它曾经被处理核心修改,则将该块的内容写回控制信息存储器;然后将新的流相关数据从控制信息存储器中读出,并替换该块的内容;当需要的流相关数据被写入到流相关数据高速缓冲存储器后,处理核心可以就切换到该工作栈,对数据包进行处理。
流相关数据高速缓冲存储器的输入信号包括:来自处理核心的控制信息地址线PE_ADDR、来自处理核心的数据PE_DOUT、来自处理核心的状态信号PE_SWCH、来自流分类器的流相关数据预取地址线CL_ADDR、来自流分类器的流相关数据预取请求信号CL_RQ、送往流相关数据高速缓冲存储器的访问请求信号FC_RQ、由存储器调度器送到流相关数据高速缓冲存储器的数据FCMS_DI和由存储器调度器送到流相关数据高速缓冲存储器的确认信号FCMS_ACK;输出信号包括:流相关数据高速缓冲存储器的数据信号FC_DOUT、流相关数据高速缓冲存储器的确认信号FC_ACK、由流相关数据高速缓冲存储器送往存储器调度器的访问请求信号FCMS_RQ、由流相关数据高速缓冲存储器送往存储器调度器的地址线FC_ADDR和由流相关数据高速缓冲存储器送往存储器调度器的数据线FCMS_DO;
设网络处理器以字节寻址,每个块包含N=2s个字节,且地址宽度为t+s位,则控制信息预取地址只需要该地址的高t位;设每个工作栈均保存M=2r个块,则t位的控制信息预取地址中的低r位就称为index部分,控制信息预取地址的高t-r位称为a_tag部分;
所述的工作栈Bank A含有:
a、第一地址标签空间Tag RAM A,其中的数据称为第一地址标签b_tag:
第一地址标签空间Tag RAM A的输入信号包括:地址信号输入端与来自流分类器的流相关数据预取地址线CL_ADDR的index部分相连,数据输入端与来自流分类器的流相关数据预取地址线CL_ADDR的a_tag部分相连,读写控制输入端为来自第一多路选择器(3-A1)的TagA_WR;第一地址标签空间Tag RAM A的输出信号为TagA_DO;
b、第一数据空间Data RAM A:
第一数据空间Data RAM A的输入信号包括:地址信号输入端与来自第六多路选择器(3-A6)的DATA_AD的低r+s位相连,数据输入端与来自第五多路选择器(3-A5)的DATA_DI相连,读写控制输入端为来自第七多路选择器(3-A7)的DATA_WR;第一数据空间Data RAM A的输出信号为DATA_DO;
c、第一修改状态空间Dirty RAM A,为第一数据空间Data RAM A中的块设置若干修改标志位,称为第一D;块的标志位为“1”表示已经被修改过,标志位为“0”表示尚未被修改过:
第一修改状态空间Dirty RAM A的输入信号包括:地址信号输入端与来自第四多路选择器(3-A4)的DTYA_AD的index部分相连,数据输入端与来自第三多路选择器(3-A3)的DTYA_DI相连,读写控制输入端为来自第二多路选择器(3-A2)的DTYA_WR;第一修改状态空间Dirty RAM A的输出信号为DTYA_DO;
所述的工作栈BankB含有:
a、第二地址标签空间Tag RAM B,其中的数据称为第二地址标签b_tag:
第二地址标签空间Tag RAM B的输入信号包括:地址信号输入端与来自流分类器的流相关数据预取地址线CL_ADDR的index部分相连,数据输入端与来自流分类器的流相关数据预取地址线CL_ADDR的a_tag部分相连,读写控制输入端为来自第八多路选择器(3-B1)的TagB_WR;第二地址标签空间Tag RAM B的输出信号为TagB_DO;
b、第二数据空间Data RAM B:
第二数据空间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 B,为第二数据空间Data RAM B中的块设置若干修改标志位,称为第二D;块的标志位为“1”表示已经被修改过,标志位为“0”表示尚未被修改过:
第二修改状态空间Dirty RAM B的输入信号包括:地址信号输入端与来自第十一多路选择器(3-B4)的DTYB_AD的index部分相连,数据输入端与来自第十多路选择器(3-B3)的DTYB_DI相连,读写控制输入端为来自第九多路选择器(3-B2)的DTYB_WR;第二修改状态空间Dirty 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变为有效时,表示下一个数据包的处理所需的流相关数据的起始地址已经由流分类器送达流相关数据高速缓冲存储器,需要对该流相关数据是否已经保存在流相关数据高速缓冲存储器中进行判断;此时,如果第一标签比较器3-1和第二标签比较器3-2的输出均为“假”,则表示流相关数据在流相关数据高速缓冲存储器中还不存在,因此需要将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输出为“真”,BankA选择信号SEL_A输出为“假”;
d、或非门3-4-O,两个输入端与第一标签比较器3-1和第二第二标签比较器3-2的输出端相连,输出为MISS信号;如果第一标签比较器3-1和第二标签比较器3-2的输出均为“假”,则表示流相关数据在流相关数据高速缓冲存储器中还不存在,输出信号MISS变为“真”;第一标签比较器3-1和第二标签比较器3-2中任何一个的输出为“真”,则表示流相关数据已经存在于流相关数据高速缓冲存储器中,输出信号MISS变为“假”;第一标签比较器3-1和第二标签比较器3-2的输出均为“真”是一种非法状态,是不可能出现的;
e、有限状态机3-4,负责完成下一个数据包处理所需的流相关信息读取和被替换信息的写回操作;
有限状态机3-4的输入信号包括:来自流分类器的流相关数据预取请求信号CL_RQ、由存储器调度器送到流相关数据高速缓冲存储器的确认信号FCMS_ACK、由第十八多路选择器3-M4输出的DIRTY信号、由第十五多路选择器3-M1输出的Tag_DO信号、来自流分类器的流相关数据预取地址线CL_ADDR的index部分、或非门3-4-O输出的MISS信号;输出信号包括:送往栈切换控制器3-3的地址评估信号FSM_EVL、送往存储器调度器的地址线FC_ADDR、送往存储器调度器的访问请求信号FCMS_RQ、送往第二多路选择器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变为有效,说明有新的数据包接受了流分类操作,需要对流相关数据是否已经保存在流相关数据高速缓冲存储器中进行判断,进入判定状态;否则,维持空闲状态;
II、判定状态4-2
此时第一地址标签空间Tag RAM A和第二地址标签空间Tag RAM B中的数据均已经读出,第一标签比较器3-1和第二标签比较器3-2的输出结果可以被使用;将输出信号FSM_EVL置为有效,指示栈切换控制器3-3进行工作;
如果MISS信号为“假”,返回空闲状态;
如果MISS信号为“真”,并且DIRTY信号为“1”,表示被替换块的内容被处理核心修改过,需要写回网络处理器外的控制信息存储器;将Tag_DO输出为FC_ADDR信号的高t-r位,将FC_ADDR信号的低s位置为零,将来自流分类器的流相关数据预取地址线CL_ADDR的index部分作为FC_ADDR信号的index部分输出,进入写回状态;
如果MISS信号为“真”,并且DIRTY信号为“0”,则可以直接将新的流相关数据读入流相关数据高速缓冲存储器;将来自流分类器的流相关数据预取地址线CL_ADDR作为FC_ADDR信号的高t位输出,进入读取状态;
III、写回状态4-3
将DAT_WR保持为读请求状态;
通过送往存储器调度器的访问请求信号FCMS_RQ发起写操作请求;
当由存储器调度器送到流相关数据高速缓冲存储器的确认信号FCMS_ACK返回为有效时,如果工作栈中的被替换块中还存在尚未写回的数据,则将输出信号FC_ADDR的内容设置为指向下一个需要被写回的数据的地址,一次写操作可以写回32位的数据,当网络处理器以字节寻址时,将输出信号FC_ADDR的值加4即可,然后通过送往存储器调度器的访问请求信号FCMS_RQ再次发起写操作请求;重复该过程直到被替换块内所有的数据均已写回,撤销写操作请求,进入读取状态;
IV、读取状态4-4
通过送往存储器调度器的访问请求信号FCMS_RQ发起读操作请求;
当由存储器调度器送到流相关数据高速缓冲存储器的确认信号FCMS_ACK返回为有效时,将DAT_WR置为写请求;
如果新的流相关数据尚未全部从网络处理器外的控制信息存储器中读出,则将FC_ADDR的内容指向下一个需要被读取的数据的地址,一次读操作请求可以读出32位的数据,当网络处理器以字节寻址时,将FC_ADDR的内容加4即可,然后通过送往存储器调度器的访问请求信号FCMS_RQ发起读操作请求;重复该过程直到新的流相关数据均已读出并写入流相关数据高速缓冲存储器,撤销读操作请求;
将Tag_WR和DTY_WR置为写请求并维持一个周期,以保证新的地址标签信息和新的修改状态信息可以写入相应的工作栈,进入空闲状态;
f、应答器3-5,输入信号为流相关数据高速缓冲存储器访问请求信号FC_RQ,输出信号为应用相关数据高速缓冲存储器的确认信号FC_ACK;
在FC_RQ信号变为有效的一个周期后,FC_ACK信号变为有效并维持一个周期,表示数据已经从流相关数据高速缓冲存储器读出或者写入;
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为“假”时,表示处理核心正在使用工作栈BankA,由于处理核心不使用第一地址标签空间Tag RAM A,因此,TagA_WR的输出为“0”;
II、第八多路选择器3-B1,设有来自有限状态机3-4的Tag_WR作为第一输入端和“0”作为第二输入端,SEL_A作为选择控制端;输出端与第二地址标签空间Tag RAMB的读写控制输入端TagB_WR相连;
当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B可以接受有限状态机3-4的控制;当SEL_A为“假”时,表示处理核心正在使用工作栈BankB;由于处理核心不使用第二地址标签空间Tag RAM B,因此,TagB_WR的输出为“0”;
III、第二多路选择器3-A2,设有由处理核心送往流相关数据高速缓冲存储器的写操作请求信号FC_WR作为第一输入端,来自有限状态机3-4的DTY_WR作为第二输入端;SEL_A作为选择控制端;输出端与第一修改状态空间Dirty RAM A的读写控制输入端DTYA_WR相连;
当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,当处理核心进行写操作的时候,需要将第一修改状态空间Dirty RAM A的标志位置为“1”,即接受FC_WR的控制;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A可以接受有限状态机3-4,即DTY_WR的控制,当有新的流相关数据从控制信息存储器中读出时,将第一修改状态空间Dirty RAM A的标志位清零;
IV、第九多路选择器3-B2,设有由处理核心送往流相关数据高速缓冲存储器的写操作请求信号FC_WR作为第一输入端,来自有限状态机3-4的DTY_WR作为第二输入端,SEL_B作为选择控制端;输出端与第二修改状态空间Dirty RAM B的读写控制输入端DTYB_WR相连;
当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,当处理核心进行写操作的时候,需要将第二修改状态空间Dirty RAM B的标志位置为“1”,即接受FC_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,设有来自处理核心的控制信息地址线PE_ADDR作为第一输入端和来自有限状态机3-4的FC_ADDR作为第二输入端,SEL_A作为选择控制端;输出端与第一修改状态空间Dirty RAM A的地址信号输入端DTYA_AD相连;
当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,当处理核心进行写操作的时候,需要使用来自处理核心的地址;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机3-4的控制;
VIII、第十一多路选择器3-B4,设有来自处理核心的控制信息地址线PE_ADDR作为第一输入端和来自有限状态机3-4的FC_ADDR作为第二输入端,SEL_B作为选择控制端;输出端与第二修改状态空间Dirty RAM B的地址信号输入端DTYB_AD相连;
当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,当处理核心进行写操作的时候,需要使用来自处理核心的地址;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机3-4的控制;
IX、第五多路选择器3-A5,设有来自处理核心的数据PE_DOUT作为第一输入端和由存储器调度器送到流相关数据高速缓冲存储器的数据FCMS_DI作为第二输入端,SEL_A作为选择控制端;输出端与第一数据空间Data RAM A的数据输入端DATA_DI相连;
当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,当处理核心进行写操作的时候,需要将来自处理核心的数据PE_DOUT写入第一数据空间Data RAM A;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,当有新的流相关数据从控制信息存储器中读出时,需要写入工作栈Bank A的第一数据空间Data RAM A中;
X、第十二多路选择器3-B5,设有来自处理核心的数据PE_DOUT作为第一输入端和由存储器调度器送到流相关数据高速缓冲存储器的数据FCMS_DI作为第二输入端,SEL_B作为选择控制端;输出端与第二数据空间Data RAM B的数据输入端DATB_DI相连;
当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,当处理核心进行写操作的时候,需要将来自处理核心的数据PE_DOUT写入第二数据空间Data RAM B;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,当有新的流相关数据从控制信息存储器中读出时,需要写入工作栈Bank B的第二数据空间Data RAM B中;
XI、第六多路选择器3-A6,设有来自处理核心的控制信息地址线PE_ADDR作为第一输入端和来自有限状态机3-4的FC_ADDR作为第二输入端,SEL_A作为选择控制端;输出端与第一数据空间Data RAM A的地址信号输入端DATA_AD相连;
当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,当处理核心进行写操作的时候,需要使用来自处理核心的地址PE_ADDR;当SEL_A为“假”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机3-4的控制;
XII、第十三多路选择器3-B6,设有来自处理核心的控制信息地址线PE_ADDR作为第一输入端和来自有限状态机3-4的FC_ADDR作为第二输入端,SEL_B作为选择控制端;输出端与第二数据空间Data RAM B的地址信号输入端DATB_AD相连;
当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,当处理核心进行写操作的时候,需要使用来自处理核心的地址PE_ADDR;当SEL_B为“假,,时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机3-4的控制;
XIII、第七多路选择器3-A7,设有由处理核心送往流相关数据高速缓冲存储器的写操作请求信号FC_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,设有由处理核心送往流相关数据高速缓冲存储器的写操作请求信号FC_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,是由流相关数据高速缓冲存储器送往存储器调度器的数据;
当SEL_B为“真”时,表示处理核心正在使用工作栈Bank B,工作栈Bank A接受有限状态机3-4的控制,并向存储器调度器提供需要写回控制信息存储器的数据;当SEL_B为“假”时,表示处理核心正在使用工作栈Bank A,工作栈Bank B接受有限状态机3-4的控制,并向存储器调度器提供需要写回控制信息存储器的数据;
XVII、第十七多路选择器3-M3,设有第一数据空间Data RAM A的输出DATA_DO作为第一输入端和第二数据空间Data RAM B的输出DATB_DO作为第二输入端,SEL_A作为选择控制端;输出端为FC_DOUT,是流相关数据高速缓冲存储器提供给处理核心的数据信号;
当SEL_A为“真”时,表示处理核心正在使用工作栈Bank A,由工作栈Bank A为处理核心提供需要的数据;当SEL_A为“假”时,表示处理核心正在使用工作栈BankB,由工作栈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的控制,并提供数据空间的修改状态。
4.存储器调度器
该模块将从两个子高速缓冲存储器中发出的访存请求进行排队和调度,在保证数据访问的正确性和优先级的基础上,提高对DRAM器件的访问效率。存储器调度器的输入信号包括:由应用相关数据高速缓冲存储器送往存储器调度器的地址线AC_ADDR、由应用相关数据高速缓冲存储器送往存储器调度器的数据线ACMS_DO、由应用相关数据高速缓冲存储器送往存储器调度器的访问请求信号ACMS_RQ,由流相关数据高速缓冲存储器送往存储器调度器的地址线FC_ADDR、由流相关数据高速缓冲存储器送往存储器调度器的数据线FCMS_DO、由流相关数据高速缓冲存储器送往存储器调度器的访问请求信号FCMS_RQ,来自控制信息存储器及I/O总线的确认信号ACK、来自控制信息存储器及I/O总线的数据输入信号DIN;输出信号包括:由存储器调度器送到应用相关数据高速缓冲存储器的确认信号ACMS_ACK、由存储器调度器送到流相关数据高速缓冲存储器的确认信号FCMS_ACK,由存储器调度器送到应用相关数据高速缓冲存储器的数据ACMS_DI、由存储器调度器送到流相关数据高速缓冲存储器的数据FCMS_DI,以及送往控制信息存储器及I/O总线的地址信号ADDR、送往控制信息存储器及I/O总线的数据信号DOUT、送往控制信息存储器及I/O总线的访问请求信号RQ。
存储器调度器接收并调度来自应用相关数据高速缓冲存储器和流相关数据高速缓冲存储器的控制信息存储器读写请求,将这些请求进行排序后,转换为控制信息存储器及I/O总线需要的信号形式发送到总线上;存储器调度器所遵守的优先级原则如下:读写请求中的写操作请求需要先保存在存储器调度器中与应用相关数据高速缓冲存储器和流相关数据高速缓冲存储器对应的FIFO中,即来自流相关数据高速缓冲存储器的写请求送入用WRFF表示的流相关数据高速缓冲存储器的第二写操作请求FIFO存储器2-W2,来自应用相关数据高速缓冲存储器的写请求送入用WRFA表示的应用相关数据高速缓冲存储器的第一写操作请求FIFO存储器2-W1;读请求则不需要先进行缓存;对于同时发出的同类请求,应用相关数据高速缓冲存储器的读请求比流相关数据高速缓冲存储器的读请求优先级要高,而应用相关数据高速缓冲存储器的写请求的优先级比流相关数据高速缓冲存储器的写请求要低。
对于读操作,存储器调度器需要等到读请求已经发送到控制信息存储器及I/O总线上,并且控制信息存储器及I/O总线也通过ACK信号进行了确认后,才向应用相关数据高速缓冲存储器返回确认信号ACMS_ACK、或者向流相关数据高速缓冲存储器返回确认信号FCMS_ACK;对于写操作,只要写操作请求已经保存入相应的FIFO,则向应用相关数据高速缓冲存储器返回确认信号ACMS_ACK、或者向流相关数据高速缓冲存储器返回确认信号FCMS_ACK;如果FIFO此时已满,无法写入,则要等到FIFO内的写操作请求被处理完毕一部分,FIFO内有多余空间可供新的写操作请求写入后,才能向应用相关数据高速缓冲存储器返回确认信号ACMS_ACK、或者向流相关数据高速缓冲存储器返回确认信号FCMS_ACK。
本发明仅限定了处理单元对不同地址空间的使用方式,并未限制数据的划分方式。通过流相关数据高速缓冲存储器访问的地址空间(即第十一范围存储器2-F1和第十二范围存储器2-F2所限定区域),对于一个数据包来说,只有特定的区域可以供它使用(即分配给该数据包所在的流的块);而通过应用相关数据高速缓冲存储器访问的地址空间(即第一范围存储器2-A1和第二范围存储器2-A2所限定区域),则可以供所有的数据包使用。某一控制信息具体应该分配在哪个区域是由它在数据包之间共享的情况决定的,并且完全由程序员来决定。在实际使用中,还可以根据本发明的这一特点进行优化。比如,路由查找的结果对于同一个流内的所有包都是一样的,那么这些结果可以跟流相关数据一起保存在流相关数据高速缓冲存储器中。此时,只有当一个新的流到达或者路由表发生了变化时才需要进行路由查找的操作。
Claims (1)
1.分裂式网络处理器控制信息高速缓冲存储器,其特征在于含有:地址识别器、应用相关数据高速缓冲存储器、流相关数据高速缓冲存储器以及存储器调度器,其中:
(1)地址识别器,用来判断处理单元在对数据包进行操作的过程中所发出的控制信息访问请求的地址,是属于流相关数据所在的空间、还是应用相关数据所在的空间,并根据判定的结果,将访问请求送入对应的高速缓冲存储器;
该地址识别器的输入信号包括:来自处理单元的控制信息地址线PE_ADDR、来自处理单元的控制信息访问请求信号PE_RQ、应用相关数据高速缓冲存储器的数据信号AC_DOUT、流相关数据高速缓冲存储器的数据信号FC_DOUT、应用相关数据高速缓冲存储器的确认信号AC_ACK和流相关数据高速缓冲存储器的确认信号FC_ACK;该地址识别器的输出信号包括:送往应用相关数据高速缓冲存储器的访问请求信号AC_RQ、送往流相关数据高速缓冲存储器的访问请求信号FC_RQ、送到处理单元的数据PE_DIN和送到处理单元的确认信号PE_ACK;
该地址识别器含有:
第一范围寄存器(2-A1)和第二范围寄存器(2-A2),分别用来保存划分给应用相关数据的地址空间的上下边界;
第一比较器(2-1),其第一数据输入端与第一范围寄存器(2-A1)的数据输出端相连,第二数据输入端与来自处理单元的控制信息地址线PE_ADDR相连;当第二数据输入端的输入小于第一范围寄存器(2-A1)中保存的内容时,第一比较器(2-1)输出为“真”;
第二比较器(2-2),其第一数据输入端与第二范围寄存器(2-A2)的数据输出端相连,第二数据输入端与来自处理单元的控制信息地址线PE_ADDR相连;当第二数据输入端的输入大于等于第二范围寄存器(2-A2)中保存的内容时,第二比较器(2-2)输出为“真”;
第十一范围寄存器(2-F1)和第十二范围寄存器(2-F2),分别用来保存划分给流相关数据的地址空间的上下边界;
第三比较器(2-3),其第一数据输入端与第十一范围寄存器(2-F1)的数据输出端相连,第二数据输入端与来自处理单元的控制信息地址线PE_ADDR相连;当第二数据输入端的输入小于第十一范围寄存器(2-F1)中保存的内容时,第三比较器(2-3)输出为“真”;
第四比较器(2-4),其第一数据输入端与第十二范围寄存器(2-F2)的数据输出端相连,第二数据输入端与来自处理单元的控制信息地址线PE_ADDR相连;当第二数据输入端的输入大于等于第十二范围寄存器(2-F2)中保存的内容时,第四比较器(2-4)输出为“真”;
第一与门(2-I),两个数据输入端分别与第一比较器(2-1)、第二比较器(2-2)的输出端相连;当第一比较器(2-1)、第二比较器(2-2)的输出均为“真”时,第一与门(2-I)的输出信号Match_A变为有效;
第二与门(2-II),两个数据输入端分别与第三比较器(2-3)、第四比较器(2-4)的输出端相连;当第三比较器(2-3)、第四比较器(2-4)的输出均为“真”时,第二与门(2-II)的输出信号Match_F变为有效;
第一三态门(2-T1),设有Match_A作为输出控制端,来自处理单元的控制信息访问请求信号PE_RQ作为输入端;当Match_A信号有效时,第一三态门(2-T1)选通,把来自处理单元的控制信息访问请求信号PE_RQ作为送往应用相关数据高速缓冲存储器的访问请求信号AC_RQ输出到应用相关数据高速缓冲存储器;PE_RQ信号实际上由读操作请求信号PE_RD和写操作请求信号PE_WR构成,相应的AC_RQ也分为送往应用相关数据高速缓冲存储器的读操作请求信号AC_RD和送往应用相关数据高速缓冲存储器的写操作请求信号AC_WR;
第二三态门(2-T2),设有Match_F作为输出控制端,来自处理单元的控制信息访问请求信号PE_RQ作为输入端;当Match_F信号有效时,第二三态门(2-T2)选通,把来自处理单元的控制信息访问请求信号PE_RQ作为送往流相关数据高速缓冲存储器的访问请求信号FC_RQ输出到流相关数据高速缓冲存储器;PE_RQ信号实际上由读操作请求信号PE_RD和写操作请求信号PE_WR构成,相应的FC_RQ也分为送往流相关数据高速缓冲存储器的读操作请求信号FC_RD和送往流相关数据高速缓冲存储器的写操作请求信号FC_WR;
第十九多路选择器(2-M1),设有Match_A和Match_F信号作为选择控制端,应用相关数据高速缓冲存储器的数据信号AC_DOUT和流相关数据高速缓冲存储器的数据信号FC_DOUT作为两个输入端;当Match_A信号有效时,第十九多路选择器(2-M1)将应用相关数据高速缓冲存储器的数据信号AC_DOUT作为送到处理单元的数据PE_DIN而输出,当Match_F信号有效时,第十九多路选择器(2-M1)将流相关数据高速缓冲存储器的数据信号FC_DOUT作为送到处理单元的数据PE_DIN而输出,当Match_A信号和Match_F信号均无效时,第十九多路选择器(2-M1)输出为高阻状态,而Match_A信号和Match_F信号均有效是一个非法状态,不可能出现该情况;
第二十多路选择器(2-M2),设有Match_A和Match_F信号作为选择控制端,应用相关数据高速缓冲存储器的确认信号AC_ACK和流相关数据高速缓冲存储器的确认信号FC_ACK作为两个输入端;当Match_A信号有效时,第二十多路选择器(2-M2)将应用相关数据高速缓冲存储器的确认信号AC_ACK作为送到处理单元的确认信号PE_ACK而输出,当Match_F信号有效时,第二十多路选择器(2-M2)将流相关数据高速缓冲存储器的确认信号FC_ACK作为送到处理单元的确认信号PE_ACK而输出,当Match_A信号和Match_F信号均无效时,第二十多路选择器(2-M2)输出为高阻状态,而Match_A信号和Match_F信号均有效是一个非法状态,不可能出现该情况;
(2)应用相关数据高速缓冲存储器,用于缓存那些被所有数据包所共享的数据;应用相关数据高速缓冲存储器存储的内容分为三类:被缓存的数据(data)、表示数据是否有效的标志位(v)、以及用来判定数据是否已经在应用相关数据高速缓冲存储器中存在的地址标签(tag);
应用相关数据高速缓冲存储器的输入信号包括:来自处理单元的控制信息地址线PE_ADDR、来自处理单元的数据PE_DOUT、送往应用相关数据高速缓冲存储器的访问请求信号AC_RQ、由存储器调度器送到应用相关数据高速缓冲存储器的数据ACMS_DI和由存储器调度器送到应用相关数据高速缓冲存储器的确认信号ACMS_ACK;应用相关数据高速缓冲存储器的输出信号包括:应用相关数据高速缓冲存储器的数据信号AC_DOUT、应用相关数据高速缓冲存储器的确认信号AC_ACK、由应用相关数据高速缓冲存储器送往存储器调度器的访问请求信号ACMS_RQ、由应用相关数据高速缓冲存储器送往存储器调度器的地址线AC_ADDR和由应用相关数据高速缓冲存储器送往存储器调度器的数据线ACMS_DO;
当送往应用相关数据高速缓冲存储器的访问请求信号AC_RQ有效时,如果来自处理单元的控制信息地址线信息PE_ADDR与相应缓存单元中保存的地址标签tag一致且缓存数据有效,则匹配成功;此时,当为读操作时,应用相关数据高速缓冲存储器相应缓存单元中保存的数据data作为应用相关数据高速缓冲存储器的数据信号AC_DOUT通过地址识别器的第十九多路选择器(2-M1)送入处理单元;当为写操作时,来自处理单元的数据PE_DOUT被写入相应缓存单元,并根据应用相关数据高速缓冲存储器设定的写策略决定是否需要写回位于网络处理器外的控制信息存储器;如果是写通策略,则将由应用相关数据高速缓冲存储器送往存储器调度器的访问请求信号ACMS_RQ置为有效,并将相应的地址和数据信息放置到由应用相关数据高速缓冲存储器送往存储器调度器的地址线AC_ADDR和由应用相关数据高速缓冲存储器送往存储器调度器的数据线ACMS_DO上;当由存储器调度器送到应用相关数据高速缓冲存储器的确认信号ACMS_ACK变为有效时,完成本次操作;
如果匹配不成功,当为读操作时,则需要从位于网络处理器外的控制信息存储器中读取所需的数据信息;将由应用相关数据高速缓冲存储器送往存储器调度器的访问请求信号ACMS_RQ置为有效,并将相应的地址信息放置到由应用相关数据高速缓冲存储器送往存储器调度器的地址线AC_ADDR上,当由存储器调度器送到应用相关数据高速缓冲存储器的确认信号ACMS_ACK变为有效时,将由存储器调度器送到应用相关数据高速缓冲存储器的数据ACMS_DI作为应用相关数据高速缓冲存储器的数据信号AC_DOUT提供给处理单元并写回应用相关数据高速缓冲存储器相应的缓存单元;当为写操作时,除了需要将来自处理单元的数据PE_DOUT写回位于网络处理器外的控制信息存储器中外,还需要根据应用相关数据高速缓冲存储器设定的写缺失策略,决定是否需要将来自处理单元的数据PE_DOUT写回应用相关数据高速缓冲存储器相应的缓存单元;当发生替换时,如果应用相关数据高速缓冲存储器的写策略为写回策略,还需要将被替换的数据中被修改的部分写回控制信息存储器;
(3)流相关数据高速缓冲存储器,用于缓存那些仅被属于同一个流的数据包所共享的数据;为了能够在满足处理单元访问需求的同时,对控制信息存储器进行读写,流相关数据高速缓冲存储器设置了两个称为Bank A和Bank B的工作栈;分配给流相关数据的地址空间划分为相同大小的块,每个流对应于一个块,流相关数据信息就保存在这个块中;每个工作栈中的缓存数据也组织为块的形式,即cache line的大小与块是一致的;每个数据包所对应的流相关数据只位于Bank A和Bank B两个工作栈中的一个,在数据包被处理单元处理之前由流相关数据高速缓冲存储器中的数据移动控制器读入流相关数据高速缓冲存储器,另外一个不对处理单元提供数据的工作栈在需要的时候为下一个数据包读入相应的流相关数据;整个数据包的处理流程为:当数据包被网络处理器接收时,先由流分类器进行流分类,然后将所获得的流相关数据的起始地址送到流相关数据高速缓冲存储器的数据移动控制器;数据移动控制器检查该流相关数据是否已经保存在流相关数据高速缓冲存储器的Bank A和Bank B两个工作栈的某一个中,如果没有,则流相关数据高速缓冲存储器目前未被处理单元使用的那个工作栈中相应的块被选为被替换的块,如果曾经被处理单元修改,则先将该块中被修改的内容写回控制信息存储器;然后将所需要的流相关数据从控制信息存储器中读出,并替换该块的内容;当所需要的流相关数据被写入到流相关数据高速缓冲存储器后,处理单元切换到该工作栈,对数据包进行处理;
流相关数据高速缓冲存储器的输入信号包括:来自处理单元的控制信息地址线PE_ADDR、来自处理单元的数据PE_DOUT、来自处理单元的状态信号PE_SWCH、来自流分类器的流相关数据预取地址线CL_ADDR、来自流分类器的流相关数据预取请求信号CL_RQ、送往流相关数据高速缓冲存储器的访问请求信号FC_RQ、由存储器调度器送到流相关数据高速缓冲存储器的数据FCMS_DI和由存储器调度器送到流相关数据高速缓冲存储器的确认信号FCMS_ACK;输出信号包括:流相关数据高速缓冲存储器的数据信号FC_DOUT、流相关数据高速缓冲存储器的确认信号FC_ACK、由流相关数据高速缓冲存储器送往存储器调度器的访问请求信号FCMS_RQ、由流相关数据高速缓冲存储器送往存储器调度器的地址线FC_ADDR和由流相关数据高速缓冲存储器送往存储器调度器的数据线FCMS_DO;
设网络处理器以字节寻址,每个块包含N=2s个字节,且地址宽度为t+s位,则控制信息预取地址只需要该地址的高t位;设每个工作栈均保存M=2r个块,则t位的控制信息预取地址中的低r位就称为index部分,控制信息预取地址的高t-r位称为a_tag部分;
所述的工作栈Bank A含有:
a、第一地址标签空间Tag RAM A,其中的数据称为第一地址标签b_tag:
第一地址标签空间Tag RAM A的输入信号包括:地址信号输入端与来自流分类器的流相关数据预取地址线CL_ADDR的index部分相连,数据输入端与来自流分类器的流相关数据预取地址线CL_ADDR的a_tag部分相连,读写控制输入端为来自第一多路选择器(3-A1)的TagA_WR;第一地址标签空间Tag RAM A的输出信号为TagA_DO;
b、第一数据空间Data RAM A:
第一数据空间Data RAM A的输入信号包括:地址信号输入端与来自第六多路选择器(3-A6)的DATA_AD的低r+s位相连,数据输入端与来自第五多路选择器(3-A5)的DATA_DI相连,读写控制输入端为来自第七多路选择器(3-A7)的DATA_WR;第一数据空间Data RAM A的输出信号为DATA_DO;
c、第一修改状态空间Dirty RAM A,为第一数据空间Data RAM A中的块设置若干修改标志位,称为第一D;块的标志位为“1”表示已经被修改过,标志位为“0”表示尚未被修改过:
第一修改状态空间Dirty RAM A的输入信号包括:地址信号输入端与来自第四多路选择器(3-A4)的DTYA_AD的index部分相连,数据输入端与来自第三多路选择器(3-A3)的DTYA_DI相连,读写控制输入端为来自第二多路选择器(3-A2)的DTYA_WR;第一修改状态空间Dirty RAM A的输出信号为DTYA_DO;
所述的工作栈BankB含有:
a、第二地址标签空间Tag RAM B,其中的数据称为第二地址标签b_tag:
第二地址标签空间Tag RAM B的输入信号包括:地址信号输入端与来自流分类器的流相关数据预取地址线CL_ADDR的index部分相连,数据输入端与来自流分类器的流相关数据预取地址线CL_ADDR的a_tag部分相连,读写控制输入端为来自第八多路选择器(3-B1)的TagB_WR;第二地址标签空间Tag RAM B的输出信号为TagB_DO;
b、第二数据空间Data RAM B:
第二数据空间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 B,为第二数据空间Data RAM B中的块设置若干修改标志位,称为第二D;块的标志位为“1”表示已经被修改过,标志位为“0”表示尚未被修改过:
第二修改状态空间Dirty RAM B的输入信号包括:地址信号输入端与来自第十一多路选择器(3-B4)的DTYB_AD的index部分相连,数据输入端与来自第十多路选择器(3-B3)的DTYB_DI相连,读写控制输入端为来自第九多路选择器(3-B2)的DTYB_WR;第二修改状态空间Dirty 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和BankB选择信号SEL_B;当SEL_A为“真”时,表示工作栈Bank A目前正在被处理单元使用;当SEL_B为“真”时,表示工作栈Bank B目前正在被处理单元使用;因此,在任何时刻,SEL_A和SEL_B互为相反;
当由有限状态机(3-4)送往栈切换控制器(3-3)的地址评估信号FSM_EVL变为有效时,表示下一个数据包的处理所需的流相关数据的起始地址已经由流分类器送达流相关数据高速缓冲存储器,需要对该流相关数据是否已经保存在流相关数据高速缓冲存储器中进行判断;此时,如果第一标签比较器(3-1)和第二标签比较器(3-2)的输出均为“假”,则表示流相关数据在流相关数据高速缓冲存储器中还不存在,因此需要将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-1);如果寄存器RC(3-3-I)中记录的是BankA的工作栈号,则BankA选择信号SEL_A输出为“真”,Bank B选择信号SEL_B输出为“假”;如果寄存器RC(3-3-I)中记录的是Bank B的工作栈号,则Bank B选择信号SEL_B输出为“真”,BankA选择信号SEL_A输出为“假”;
d、或非门(3-4-O),两个输入端与第一标签比较器(3-1)和第二标签比较器(3-2)的输出端相连,输出为MISS信号;如果第一标签比较器(3-1)和第二标签比较器(3-2)的输出均为“假”,则表示流相关数据在流相关数据高速缓冲存储器中还不存在,输出信号MISS变为“真”;第一标签比较器(3-1)和第二标签比较器(3-2)中任何一个的输出为“真”,则表示流相关数据已经存在于流相关数据高速缓冲存储器中,输出信号MISS变为“假”;第一标签比较器(3-1)和第二标签比较器(3-2)的输出均为“真”是一种非法状态,是不可能出现的;
e、有限状态机(3-4),负责完成下一个数据包处理所需的流相关信息读取和被替换信息的写回操作;
有限状态机(3-4)的输入信号包括:来自流分类器的流相关数据预取请求信号CL_RQ、由存储器调度器送到流相关数据高速缓冲存储器的确认信号FCMS_ACK、由第十八多路选择器(3-M4)输出的DIRTY信号、由第十五多路选择器(3-M1)输出的Tag_DO信号、来自流分类器的流相关数据预取地址线CL_ADDR的index部分、或非门(3-4-O)输出的MISS信号;输出信号包括:送往栈切换控制器(3-3)的地址评估信号FSM_EVL、送往存储器调度器的地址线FC_ADDR、送往存储器调度器的访问请求信号FCMS_RQ、送往第二多路选择器(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变为有效,说明有新的数据包接受了流分类操作,需要对流相关数据是否已经保存在流相关数据高速缓冲存储器中进行判断,进入判定状态;否则,维持空闲状态;
II、判定状态(4-2)
此时第一地址标签空间Tag RAM A和第二地址标签空间Tag RAM B中的数据均已经读出,第一标签比较器(3-1)和第二标签比较器(3-2)的输出结果变为有效;将输出信号FSM_EVL置为有效,指示栈切换控制器(3-3)进行工作;
如果MISS信号为“假”,返回空闲状态;
如果MISS信号为“真”,并且DIRTY信号为“1”,表示被替换块的内容被处理单元修改过,需要写回网络处理器外的控制信息存储器;将Tag_DO输出为FC_ADDR信号的高t-r位,将FC_ADDR信号的低s位置为零,将来自流分类器的流相关数据预取地址线CL_ADDR的index部分作为FC_ADDR信号的index部分输出,进入写回状态;
如果MISS信号为“真”,并且DIRTY信号为“0”,则直接将新的流相关数据读入流相关数据高速缓冲存储器;将来自流分类器的流相关数据预取地址线CL_ADDR作为FC_ADDR信号的高t位输出,进入读取状态;
III、写回状态(4-3)
将DAT_WR保持为读请求状态;
通过送往存储器调度器的访问请求信号FCMS_RQ发起写操作请求;
当由存储器调度器送到流相关数据高速缓冲存储器的确认信号FCMS_ACK返回为有效时,如果工作栈中的被替换块中还存在尚未写回的数据,则将输出信号FC_ADDR的内容设置为指向下一个需要被写回的数据的地址,数据总线的宽度为32位,当网络处理器以字节寻址时,将输出信号FC_ADDR的值加4即可,然后通过送往存储器调度器的访问请求信号FCMS_RQ再次发起写操作请求;重复该过程直到被替换块内所有的数据均已写回,撤销写操作请求,进入读取状态;
IV、读取状态(4-4)
通过送往存储器调度器的访问请求信号FCMS_RQ发起读操作请求;
当由存储器调度器送到流相关数据高速缓冲存储器的确认信号FCMS_ACK返回为有效时,将DAT_WR置为写请求;
如果新的流相关数据尚未全部从网络处理器外的控制信息存储器中读出,则将FC_ADDR的内容指向下一个需要被读取的数据的地址,数据总线的宽度为32位,当网络处理器以字节寻址时,将FC_ADDR的内容加4即可,然后通过送往存储器调度器的访问请求信号FCMS_RQ发起读操作请求;重复该过程直到新的流相关数据均已读出并写入流相关数据高速缓冲存储器,撤销读操作请求;
将Tag_WR和DTY_WR置为写请求并维持一个周期,以保证新的地址标签信息和新的修改状态信息写入相应的工作栈,进入空闲状态;
f、应答器(3-5),输入信号为流相关数据高速缓冲存储器访问请求信号FC_RQ,输出信号为应用相关数据高速缓冲存储器的确认信号FC_ACK;
在FC_RQ信号变为有效的一个周期后,FC_ACK信号变为有效并维持一个周期,表示数据已经从流相关数据高速缓冲存储器读出或者写入;
g、18个多路选择器,所有的多路选择器均在选择控制端为“真”时,选通第一输入端的数据作为输出;当选择控制端为“假”时,选通第二输入端的数据作为输出;
I、第一多路选择器(3-A1),设有来自有限状态机(3-4)的Tag_WR作为第一输入端和“0”作为第二输入端,SEL_B作为选择控制端;输出端与第一地址标签空间TagRAM A的读写控制输入端TagA_WR相连;
当SEL_B为“真”时,表示处理单元正在使用工作栈Bank B,工作栈BankA接受有限状态机(3-4)的控制;当SEL_B为“假”时,表示处理单元正在使用工作栈BankA,由于处理单元不使用第一地址标签空间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为“假”时,表示处理单元正在使用工作栈BankB;由于处理单元不使用第二地址标签空间Tag RAM B,因此,TagB_WR的输出为“0”;
III、第二多路选择器(3-A2),设有由处理单元送往流相关数据高速缓冲存储器的写操作请求信号FC_WR作为第一输入端,来自有限状态机(3-4)的DTY_WR作为第二输入端;SEL_A作为选择控制端;输出端与第一修改状态空间Dirty RAM A的读写控制输入端DTYA_WR相连;
当SEL_A为“真”时,表示处理单元正在使用工作栈Bank A,当处理单元进行写操作的时候,需要将第一修改状态空间Dirty RAM A的标志位置为“1”,即接受FC_WR的控制;当SEL_A为“假”时,表示处理单元正在使用工作栈Bank B,工作栈BankA接受有限状态机(3-4),即DTY_WR的控制,当有新的流相关数据从控制信息存储器中读出时,将第一修改状态空间Dirty RAM A的标志位清零;
IV、第九多路选择器(3-B2),设有由处理单元送往流相关数据高速缓冲存储器的写操作请求信号FC_WR作为第一输入端,来自有限状态机(3-4)的DTY_WR作为第二输入端,SEL_B作为选择控制端;输出端与第二修改状态空间Dirty RAM B的读写控制输入端DTYB_WR相连;
当SEL_B为“真”时,表示处理单元正在使用工作栈Bank B,当处理单元进行写操作的时候,需要将第二修改状态空间Dirty RAM B的标志位置为“1”,即接受FC_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),设有来自处理单元的控制信息地址线PE_ADDR作为第一输入端和来自有限状态机(3-4)的FC_ADDR作为第二输入端,SEL_A作为选择控制端;输出端与第一修改状态空间Dirty RAM A的地址信号输入端DTYA_AD相连;
当SEL_A为“真”时,表示处理单元正在使用工作栈Bank A,当处理单元进行写操作的时候,需要使用来自处理单元的地址;当SEL_A为“假”时,表示处理单元正在使用工作栈Bank B,工作栈Bank A接受有限状态机(3-4)的控制;
VIII、第十一多路选择器(3-B4),设有来自处理单元的控制信息地址线PE_ADDR作为第一输入端和来自有限状态机(3-4)的FC_ADDR作为第二输入端,SEL_B作为选择控制端;输出端与第二修改状态空间Dirty RAM B的地址信号输入端DTYB_AD相连;
当SEL_B为“真”时,表示处理单元正在使用工作栈Bank B,当处理单元进行写操作的时候,需要使用来自处理单元的地址;当SEL_B为“假”时,表示处理单元正在使用工作栈Bank A,工作栈Bank B接受有限状态机(3-4)的控制;
IX、第五多路选择器(3-A5),设有来自处理单元的数据PE_DOUT作为第一输入端和由存储器调度器送到流相关数据高速缓冲存储器的数据FCMS_DI作为第二输入端,SEL_A作为选择控制端;输出端与第一数据空间Data RAM A的数据输入端DATA_DI相连;
当SEL_A为“真”时,表示处理单元正在使用工作栈Bank A,当处理单元进行写操作的时候,需要将来自处理单元的数据PE_DOUT写入第一数据空间Data RAM A;当SEL_A为“假”时,表示处理单元正在使用工作栈Bank B,当有新的流相关数据从控制信息存储器中读出时,需要写入工作栈Bank A的第一数据空间Data RAM A中;
X、第十二多路选择器(3-B5),设有来自处理单元的数据PE_DOUT作为第一输入端和由存储器调度器送到流相关数据高速缓冲存储器的数据FCMS_DI作为第二输入端,SEL_B作为选择控制端;输出端与第二数据空间Data RAM B的数据输入端DATB_DI相连;
当SEL_B为“真”时,表示处理单元正在使用工作栈Bank B,当处理单元进行写操作的时候,需要将来自处理单元的数据PE_DOUT写入第二数据空间Data RAM B;当SEL_B为“假”时,表示处理单元正在使用工作栈Bank A,当有新的流相关数据从控制信息存储器中读出时,需要写入工作栈BankB的第二数据空间Data RAM B中;
XI、第六多路选择器(3-A6),设有来自处理单元的控制信息地址线PE_ADDR作为第一输入端和来自有限状态机(3-4)的FC_ADDR作为第二输入端,SEL_A作为选择控制端;输出端与第一数据空间Data RAM A的地址信号输入端DATA_AD相连;
当SEL_A为“真”时,表示处理单元正在使用工作栈Bank A,当处理单元进行写操作的时候,需要使用来自处理单元的地址PE_ADDR;当SEL_A为“假”时,表示处理单元正在使用工作栈Bank B,工作栈Bank A接受有限状态机(3-4)的控制;
XII、第十三多路选择器(3-B6),设有来自处理单元的控制信息地址线PE_ADDR作为第一输入端和来自有限状态机(3-4)的FC_ADDR作为第二输入端,SEL_B作为选择控制端;输出端与第二数据空间Data RAM B的地址信号输入端DATB_AD相连;
当SEL_B为“真”时,表示处理单元正在使用工作栈Bank B,当处理单元进行写操作的时候,需要使用来自处理单元的地址PE_ADDR;当SEL_B为“假”时,表示处理单元正在使用工作栈Bank A,工作栈Bank B接受有限状态机(3-4)的控制;
XIII、第七多路选择器(3-A7),设有由处理单元送往流相关数据高速缓冲存储器的写操作请求信号FC_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),设有由处理单元送往流相关数据高速缓冲存储器的写操作请求信号FC_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,是由流相关数据高速缓冲存储器送往存储器调度器的数据;
当SEL_B为“真”时,表示处理单元正在使用工作栈Bank B,工作栈Bank A接受有限状态机(3-4)的控制,并向存储器调度器提供需要写回控制信息存储器的数据;当SEL_B为“假”时,表示处理单元正在使用工作栈Bank A,工作栈Bank B接受有限状态机(3-4)的控制,并向存储器调度器提供需要写回控制信息存储器的数据;
XVII、第十七多路选择器(3-M3),设有第一数据空间Data RAM A的输出DATA_DO作为第一输入端和第二数据空间Data RAM B的输出DATB_DO作为第二输入端,SEL_A作为选择控制端;输出端为FC_DOUT,是流相关数据高速缓冲存储器提供给处理单元的数据信号;
当SEL_A为“真”时,表示处理单元正在使用工作栈Bank A,由工作栈Bank A为处理单元提供需要的数据;当SEL_A为“假”时,表示处理单元正在使用工作栈BankB,由工作栈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)的控制,并提供数据空间的修改状态;
(4)存储器调度器的输入信号包括:由应用相关数据高速缓冲存储器送往存储器调度器的地址线AC_ADDR、由应用相关数据高速缓冲存储器送往存储器调度器的数据线ACMS_DO、由应用相关数据高速缓冲存储器送往存储器调度器的访问请求信号ACMS_RQ,由流相关数据高速缓冲存储器送往存储器调度器的地址线FC_ADDR、由流相关数据高速缓冲存储器送往存储器调度器的数据线FCMS_DO、由流相关数据高速缓冲存储器送往存储器调度器的访问请求信号FCMS_RQ,来自控制信息存储器及I/O总线的确认信号ACK、来自控制信息存储器及I/O总线的数据输入信号DIN;输出信号包括:由存储器调度器送到应用相关数据高速缓冲存储器的确认信号ACMS_ACK、由存储器调度器送到流相关数据高速缓冲存储器的确认信号FCMS_ACK,由存储器调度器送到应用相关数据高速缓冲存储器的数据ACMS_DI、由存储器调度器送到流相关数据高速缓冲存储器的数据FCMS_DI,以及送往控制信息存储器及I/O总线的地址信号ADDR、送往控制信息存储器及I/O总线的数据信号DOUT、送往控制信息存储器及I/O总线的访问请求信号RQ;
存储器调度器接收并调度来自应用相关数据高速缓冲存储器和流相关数据高速缓冲存储器的控制信息存储器读写请求,将这些请求进行排序后,转换为控制信息存储器及I/O总线需要的信号形式发送到总线上;存储器调度器所遵守的优先级原则如下:读写请求中的写操作请求需要先保存在存储器调度器中与应用相关数据高速缓冲存储器和流相关数据高速缓冲存储器对应的FIFO中,即来自流相关数据高速缓冲存储器的写请求送入用WRFF表示的流相关数据高速缓冲存储器的第二写操作请求FIFO存储器(2-W2),来自应用相关数据高速缓冲存储器的写请求送入用WRFA表示的应用相关数据高速缓冲存储器的第一写操作请求FIFO存储器(2-W1);读请求则不需要先进行缓存;对于同时发出的同类请求,应用相关数据高速缓冲存储器的读请求比流相关数据高速缓冲存储器的读请求优先级要高,而应用相关数据高速缓冲存储器的写请求的优先级比流相关数据高速缓冲存储器的写请求要低;
对于读操作,存储器调度器需要等到读请求已经发送到控制信息存储器及I/O总线上,并且控制信息存储器及I/O总线也通过ACK信号进行了确认后,才向应用相关数据高速缓冲存储器返回确认信号ACMS_ACK、或者向流相关数据高速缓冲存储器返回确认信号FCMS_ACK;对于写操作,只要写操作请求已经保存入相应的FIFO,则向应用相关数据高速缓冲存储器返回确认信号ACMS_ACK、或者向流相关数据高速缓冲存储器返回确认信号FCMS_ACK;如果FIFO此时已满,无法写入,则要等到FIFO内的写操作请求被处理完毕一部分,FIFO内有多余空间供新的写操作请求写入后,才能向应用相关数据高速缓冲存储器返回确认信号ACMS_ACK、或者向流相关数据高速缓冲存储器返回确认信号FCMS_ACK。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100114258A CN100396059C (zh) | 2006-03-03 | 2006-03-03 | 分裂式网络处理器控制信息高速缓冲存储器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100114258A CN100396059C (zh) | 2006-03-03 | 2006-03-03 | 分裂式网络处理器控制信息高速缓冲存储器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1812379A CN1812379A (zh) | 2006-08-02 |
CN100396059C true CN100396059C (zh) | 2008-06-18 |
Family
ID=36845072
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100114258A Expired - Fee Related CN100396059C (zh) | 2006-03-03 | 2006-03-03 | 分裂式网络处理器控制信息高速缓冲存储器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100396059C (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015085470A1 (zh) * | 2013-12-09 | 2015-06-18 | 华为技术有限公司 | 一种业务路由的方法和装置 |
CN107277060B (zh) * | 2017-08-08 | 2020-05-26 | 苏州浪潮智能科技有限公司 | 一种数据包处理的方法及装置 |
CN112468379B (zh) * | 2020-11-03 | 2022-06-28 | 中国航空工业集团公司西安航空计算技术研究所 | 一种节点平等权限的通信总线 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1473300A (zh) * | 2000-09-29 | 2004-02-04 | 智能网络存储接口系统和装置 | |
US20040148473A1 (en) * | 2003-01-27 | 2004-07-29 | Hughes William A. | Method and apparatus for injecting write data into a cache |
CN1679004A (zh) * | 2002-07-04 | 2005-10-05 | 索尼株式会社 | 高速缓存设备、高速缓存数据管理方法和计算机程序 |
-
2006
- 2006-03-03 CN CNB2006100114258A patent/CN100396059C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1473300A (zh) * | 2000-09-29 | 2004-02-04 | 智能网络存储接口系统和装置 | |
CN1679004A (zh) * | 2002-07-04 | 2005-10-05 | 索尼株式会社 | 高速缓存设备、高速缓存数据管理方法和计算机程序 |
US20040148473A1 (en) * | 2003-01-27 | 2004-07-29 | Hughes William A. | Method and apparatus for injecting write data into a cache |
Also Published As
Publication number | Publication date |
---|---|
CN1812379A (zh) | 2006-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106909515B (zh) | 面向混合主存的多核共享末级缓存管理方法及装置 | |
CN100354796C (zh) | 使用多存储体存储器设备中的标记寄存器的方法 | |
CN101673188B (zh) | 一种固态硬盘的数据存取方法 | |
CN103324585B (zh) | 分级缓存的处理器中的协作预取处理 | |
CN107391398B (zh) | 一种闪存缓存区的管理方法及系统 | |
CN105095116A (zh) | 缓存替换的方法、缓存控制器和处理器 | |
CN101252536B (zh) | 路由器多队列数据包缓存管理与输出队列调度系统 | |
CN1307561C (zh) | 不同高速缓存级上具有关联集重叠同余组的多级高速缓存 | |
CN110888600B (zh) | 一种面向nand闪存的缓冲区管理方法 | |
CN103069400A (zh) | 具有可动态调整的移除度量的组合写入缓冲器 | |
CN101571835B (zh) | 基于程序的需求来改变Cache组相联度的实现方法 | |
CN110795363B (zh) | 一种存储介质的热页预测方法和页面调度方法 | |
CN103914398B (zh) | 用以管理具有实体地址空间的存储器使用率的方法及装置 | |
CN1742264A (zh) | 缓冲写入和存储页面控制 | |
CN110532200B (zh) | 一种基于混合内存架构的内存系统 | |
CN103246613A (zh) | 缓存装置及用于缓存装置的缓存数据获取方法 | |
CN109144411A (zh) | 数据中心混合磁盘阵列及其数据动态迁移策略 | |
CN102043593B (zh) | 一种基于Region的磁盘外置cache管理方法 | |
CN102681946A (zh) | 内存访问方法和装置 | |
CN100377117C (zh) | 用于虚实地址变换及读写高速缓冲存储器的方法及装置 | |
CN1303050A (zh) | 用于网络处理器的动态随机存取存储器数据存储和移动 | |
CN100396059C (zh) | 分裂式网络处理器控制信息高速缓冲存储器 | |
CN100440854C (zh) | 一种网络处理器的数据包接收接口部件及其存储管理方法 | |
CN111580754A (zh) | 一种写友好的闪存固态盘缓存管理方法 | |
CN101751245B (zh) | 基于访存历史学习的处理器Cache写失效处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080618 Termination date: 20160303 |
|
CF01 | Termination of patent right due to non-payment of annual fee |