发明名称 分裂式网络处理器控制信息高速缓冲存储器
摘要 分裂式网络处理器控制信息高速缓冲存储器属于计算机技术领域,其特征在于:含有区分应用相关数据或流相关数据的地址识别器、用来缓存应用相关数据的App-Cache、用来缓存流相关数据的Flow-Cache以及对来自App-Cache和Flow-Cache的控制信息存储器访问请求进行调度的存储器调度器;Flow-Cache中设有两个工作栈,以便处理单元在使用一个工作栈中的流相关数据对数据包进行处理的同时,另外一个工作栈能在需要的时候使用来自流分类器的控制信息预期地址,为下一个数据包读入相关的流相关数据;如果流相关数据被处理单元修改,当发生替换时,被修改的部分需要写回控制信息存储器。本发明既能提高网络处理器中高速缓冲存储器的效率,又能兼顾网络处理器对于性能确定性的需求。
申请公布号 CN1812379A 申请公布日期 2006.08.02
申请号 CN200610011425.8 申请日期 2006.03.03
申请人 清华大学 发明人 刘祯;刘斌
分类号 H04L12/56(2006.01) 主分类号 H04L12/56(2006.01)
代理机构 代理人
主权项 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)应用相关数据高速缓冲存储器,用App-Cache表示,用于缓存那些被所有数据包所共享的数据;App-Cache由三类存储器件构成:用来缓存数据的data、表示数据是否有效的v、以及用来判定数据是否已经在App-Cache中存在的地址标签tag;App-Cache的输入信号包括:来自处理单元的控制信息地址线PE_ADDR、来自处理单元的数据PE_DOUT、送往应用相关数据高速缓冲存储器的访问请求信号AC_RQ、由存储器调度器送到App-Cache的数据ACMS_DI和由存储器调度器送到App-Cache的确认信号ACMS_ACK;App-Cache的输出信号包括:应用相关数据高速缓冲存储器的数据信号AC_DOUT、应用相关数据高速缓冲存储器的确认信号AC_ACK、由App-Cache送往存储器调度器的访问请求信号ACMS_RQ、由App-Cache送往存储器调度器的地址线AC_ADDR和由App-Cache送往存储器调度器的数据线ACMS_DO;当送往应用相关数据高速缓冲存储器的访问请求信号AC_RQ有效时,如果来自处理单元的控制信息地址线信息PE_ADDR与相应缓存单元中保存的地址标签tag一致且缓存数据有效,则匹配成功;此时,当为读操作时,App-Cache相应缓存单元中保存的数据data作为应用相关数据高速缓冲存储器的数据信号AC_DOUT通过地址识别器的多路选择器(2-M1)送入处理单元;当为写操作时,来自处理单元的数据PE_DOUT被写入相应缓存单元,并根据App-Cache设定的写策略决定是否需要写回位于网络处理器外的控制信息存储器;如果是写通策略,则将由App-Cache送往存储器调度器的访问请求信号ACMS_RQ置为有效,并将相应的地址和数据信息放置到由App-Cache送往存储器调度器的地址线AC_ADDR和由App-Cache送往存储器调度器的数据线ACMS_DO上;当由存储器调度器送到App-Cache的确认信号ACMS_ACK变为有效时,完成本次操作;如果匹配不成功,当为读操作时,则需要从位于网络处理器外的控制信息存储器中读取所需的数据信息;将由App-Cache送往存储器调度器的访问请求信号ACMS_RQ置为有效,并将相应的地址信息放置到由App-Cache送往存储器调度器的地址线AC_ADDR上,当由存储器调度器送到App-Cache的确认信号ACMS_ACK变为有效时,将由存储器调度器送到App-Cache的数据ACMS_DI作为应用相关数据高速缓冲存储器的数据信号AC_DOUT提供给处理单元并写回App-Cache相应的缓存单元;当为写操作时,除了需要将来自处理单元的数据PE_DOUT写回位于网络处理器外的控制信息存储器中外,还需要根据App-Cache设定的写缺失策略,决定是否需要将来自处理单元的数据PE_DOUT写回App-Cache相应的缓存单元;当发生替换时,如果App-Cache的写策略为写回策略,还需要将被替换的数据中被修改的部分写回控制信息存储器;(3)流相关数据高速缓冲存储器,用Flow-Cache表示,用于缓存那些仅被属于同一个流的数据包所共享的数据;为了能够在满足处理单元访问需求的同时,对控制信息存储器进行读写,Flow-Cache设置了两个称为Bank A和Bank B的工作栈;分配给流相关数据的地址空间划分为相同大小的块,每个流对应于一个块,流相关数据信息就保存在这个块中;每个工作栈中的缓存数据也组织为块的形式,即cache line的大小与块是一致的;每个数据包所对应的流相关数据只位于Bank A和Bank B两个工作栈中的一个,在数据包被处理单元处理之前由Flow-Cache中的数据移动控制器读入Flow-Cache,另外一个不对处理单元提供数据的工作栈在需要的时候为下一个数据包读入相应的流相关数据;整个数据包的处理流程为:当数据包被网络处理器接收时,先由流分类器进行流分类,然后将所获得的流相关数据的起始地址送到Flow-Cache的数据移动控制器;数据移动控制器检查该流相关数据是否已经保存在Flow-Cache的Bank A和Bank B两个工作栈的某一个中,如果没有,则Flow-Cache目前未被处理单元使用的那个工作栈中相应的块被选为被替换的块,如果曾经被处理单元修改,则先将该块中被修改的内容写回控制信息存储器;然后将所需要的流相关数据从控制信息存储器中读出,并替换该块的内容;当所需要的流相关数据被写入到Flow-Cache后,处理单元切换到该工作栈,对数据包进行处理;Flow-Cache的输入信号包括:来自处理单元的的控制信息地址线PE_ADDR、来自处理单元的数据PE_DOUT、来自处理单元的状态信号PE_SWCH、来自流分类器的流相关数据预取地址线CL_ADDR、来自流分类器的流相关数据预取请求信号CL_RQ、送往流相关数据高速缓冲存储器的访问请求信号FC_RQ、由存储器调度器送到Flow-Cache的数据FCMS_DI和由存储器调度器送到Flow-Cache的确认信号FCMS_ACK;输出信号包括:流相关数据高速缓冲存储器的数据信号FC_DOUT、流相关数据高速缓冲存储器的确认信号FC_ACK、由Flow-Cache送往存储器调度器的访问请求信号FCMS_RQ、由Flow-Cache送往存储器调度器的地址线FC_ADDR和由Flow-Cache送往存储器调度器的数据线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的输出信号为DAT_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的工作栈号,则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)的输出均为“假”,则表示流相关数据在Flow-Cache中还不存在,输出信号MISS变为“真”;标签比较器(3-1)和标签比较器(3-2)中任何一个的输出为“真”,则表示流相关数据已经存在于Flow-Cache中,输出信号MISS变为“假”;标签比较器(3-1)和标签比较器(3-2)的输出均为“真”是一种非法状态,是不可能出现的;e、有限状态机(3-4),负责完成下一个数据包处理所需的流相关信息读取和被替换信息的写回操作;有限状态机(3-4)的输入信号包括:来自流分类器的流相关数据预取请求信号CL_RQ、由存储器调度器送到Flow-Cache的确认信号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变为有效,说明有新的数据包接受了流分类操作,需要对流相关数据是否已经保存在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输出为FC_ADDR信号的高t-r位,将FC_ADDR信号的低s位置为零,将来自流分类器的流相关数据预取地址线CL_ADDR的index部分作为FC_ADDR信号的index部分输出,进入写回状态;如果MISS信号为“真”,并且DIRTY信号为“0”,则直接将新的流相关数据读入Flow-Cache;将来自流分类器的流相关数据预取地址线CL_ADDR作为FC_ADDR信号的高t位输出,进入读取状态;III、写回状态(4-3)将DAT_WR保持为读请求状态;通过送往存储器调度器的访问请求信号FCMS_RQ发起写操作请求;当由存储器调度器送到Flow-Cache的确认信号FCMS_ACK返回为有效时,如果工作栈中的被替换块中还存在尚未写回的数据,则将输出信号FC_ADDR的内容设置为指向下一个需要被写回的数据的地址,通常情况下,数据总线的宽度为32位,当网络处理器以字节寻址时,将输出信号FC_ADDR的值加4即可,然后通过送往存储器调度器的访问请求信号FCMS_RQ再次发起写操作请求;重复该过程直到被替换块内所有的数据均已写回,撤销写操作请求,进入读取状态;IV、读取状态(4-4)通过送往存储器调度器的访问请求信号FCMS_RQ发起读操作请求;当由存储器调度器送到Flow-Cache的确认信号FCMS_ACK返回为有效时,将DAT_WR置为写请求;如果新的流相关数据尚未全部从网络处理器外的控制信息存储器中读出,则将FC_ADDR的内容指向下一个需要被读取的数据的地址,通常情况下,数据总线的宽度为32位,当网络处理器以字节寻址时,将FC_ADDR的内容加4即可,然后通过送往存储器调度器的访问请求信号FCMS_RQ发起读操作请求;重复该过程直到新的流相关数据均已读出并写入Flow-Cache,撤销读操作请求;将Tag_WR和DTY_WR置为写请求并维持一个周期,以保证新的地址标签信息和新的修改状态信息写入相应的工作栈,进入空闲状态;f、应答器(3-5),输入信号为流相关数据高速缓冲存储器访问请求信号FC_RQ,输出信号为应用相关数据高速缓冲存储器的确认信号FC_ACK;在FC_RQ信号变为有效的一个周期后,FC_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为“假”时,表示处理单元正在使用工作栈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),设有由处理单元送往Flow-Cache的写操作请求信号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),设有由处理单元送往Flow-Cache的写操作请求信号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作为第一输入端和由存储器调度器送到Flow-Cache的数据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作为第一输入端和由存储器调度器送到Flow-Cache的数据FCMS_DI作为第二输入端,SEL_B作为选择控制端;输出端与数据空间Data RAM B的数据输入端DATBDI相连;当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),设有由处理单元送往Flow-Cache的写操作请求信号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),设有由处理单元送往Flow-Cache的写操作请求信号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,是由Flow-Cache送往存储器调度器的数据;当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,是Flow-Cache提供给处理单元的数据信号;当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)存储器调度器的输入信号包括:由App-Cache送往存储器调度器的地址线AC_ADDR、由App-Cache送往存储器调度器的数据线ACMS_DO、由App-Cache送往存储器调度器的访问请求信号ACMS_RQ,由Flow-Cache送往存储器调度器的地址线FC_ADDR、由Flow-Cache送往存储器调度器的数据线FCMS_DO、由Flow-Cache送往存储器调度器的访问请求信号FCMS_RQ,来自存储器及I/O总线的确认信号ACK、来自存储器及I/O总线的数据输入信号DIN;输出信号包括:由存储器调度器送到App-Cache的确认信号ACMS_ACK、由存储器调度器送到Flow-Cache的确认信号FCMS_ACK,由存储器调度器送到App-Cache的数据ACMS_DI、由存储器调度器送到Flow-Cache的数据FCMS_DI,以及送往存储器及I/O总线的地址信号ADDR、送往存储器及I/O总线的数据信号DOUT、送往存储器及I/O总线的访问请求信号RQ;存储器调度器接收并调度来自App_Cache和Flow_Cache的控制信息存储器读写请求,将这些请求进行排序后,转换为存储器及I/O总线需要的信号形式发送到总线上;存储器调度器所遵守的优先级原则如下:读写请求中的写操作请求需要先保存在存储器调度器中与App_Cache和Flow_Cache对应的FIFO中,即来自Flow-Cache的写请求送入用WRFF表示的Flow-Cache的写操作请求FIFO存储器(2-W2),来自App-Cache的写请求送入用WRFA表示的App-Cache的写操作请求FIFO存储器(2-W1);读请求则不需要先进行缓存;对于同时发出的同类请求,App-Cache的读请求比Flow-Cache的读请求优先级要高,而App-Cache的写请求的优先级比Flow-Cache的写请求要低;对于读操作,存储器调度器需要等到读请求已经发送到存储器及I/O总线上,并且存储器及I/O总线也通过ACK信号进行了确认后,才向App-Cache返回确认信号ACMS_ACK、或者向Flow-Cache返回确认信号FCMS_ACK;对于写操作,只要写操作请求已经保存入相应的FIFO,则向App-Cache返回确认信号ACMS_ACK、或者向Flow-Cache返回确认信号FCMS_ACK;如果FIFO此时已满,无法写入,则要等到FIFO内的写操作请求被处理完毕一部分,FIFO内有多余空间供新的写操作请求写入后,才能向App-Cache返回确认信号ACMS_ACK、或者向Flow-Cache返回确认信号FCMS_ACK。
地址 100084北京市北京100084-82信箱