发明内容
本发明的目的是,针对上述现有技术存在的问题提供了一种在数据存储转发的队列管理中提高队列管理中出队效率的方法和装置,通过出队控制单元将多个请求读操作一次连续发到外部缓存模块,提高了数据调度的效率和芯片处理速度。
本发明的技术方案如下:
一种提高队列管理中出队效率的装置,包括请求接收单元,外部缓存单元,其中,还包括出队控制单元,及与所述出队控制单元、外部缓存单元和请求接收单元相连接的数据接收和分配单元,所述数据接收和分配单元用于将从所述外部缓存单元读出的不同队列数据分配给各自队列,并更新所述请求接收单元里的队列状态信息;
所述出队控制单元包括:包括:读操作控制模块和队列号缓存模块;
所述读操作控制模块,用于检测调度出的请求准备信号,向所述外部缓存模块发起连续读操作和读地址;
所述队列号缓存模块,用于按所述读操作控制模块处理顺序将各个队 列号缓存在所述队列号缓存模块的先进先出缓存器中,按调度顺序检测下一个队列缓存的准备信号,通过所述读操作控制模块向所述外部缓存单元发起读请求。
所述的装置,其中,还包括信号调度单元,所述信号调度单元,用于接收来自于所述请求接收单元的请求准备信号,调度各请求准备信号,将调度出的请求信号和准备信号送至所述出队控制单元。
所述的装置,其中,所述数据接收和分配单元与所述出队控制单元相连,用于读出缓存队列号,将所述外部缓存单元的返回数据拆分送给各个队列。
所述的装置,其中,所述请求接收单元包括多个队列状态存储单元,每个请求对应一个队列状态存储单元,用于接收来自不同队列出队请求信号和请求调度的队列号。
所述的装置,其中,所述外部缓存单元使用QDR存储器。
一种提高队列管理中出队效率的方法,其中,包括如下步骤:
A、请求接收单元接收多个队列请求信号和请求调度的队列号,处理多个队列请求,将准备信号经调度处理后发送至出队控制单元;
B、所述出队控制单元的读操作控制模块,检测调度出的请求准备信号,向所述外部缓存模块发起连续读操作和读地址;并且所述出队控制单元的队列号缓存模块按所述读操作控制模块处理顺序将各个队列号缓存在所述队列号缓存模块的先进先出缓存器中,按调度顺序检测下一个队列缓存的准备信号,通过所述读操作控制模块向所述外部缓存单元发起读请求;
C、所述外部缓存单元将多个队列的数据连续发送至数据接收和分配单元,所述数据接收和分配单元完成所述数据的接收组合并将该数据分配给 各自对应的队列,并更新所述请求接收单元里的队列状态信息。
所述的方法,其中,所述步骤A和步骤B之间还包括:信号调度单元接收来自于所述请求接收单元的请求准备信号,调度各请求准备信号,将调度出的请求信号和准备信号送至所述出队控制单元。
所述的方法,其中,所述步骤C具体包括:所述数据接收和分配单元读出所述队列号缓存模块的缓存队列号,将所述外部缓存单元返回的读数据拆分送给各个队列,将组合后的数据送给各自的请求并更新所述请求接收单元里的队列状态信息。
本发明所提供的一种提高队列管理中出队效率的方法和装置,由于该装置为每个请求设置一个队列状态存储单元,同时处理多个队列请求,通过连续向外部缓存单元发送读操作的方法,使得缓存单元能一次处理多个队列请求,避免了在只有一套总线的情况下每个请求单独申请读操作,节省了缓存响应时间和读出数据时间。同时由于减少了对缓存单元的握手次数,减轻缓存单元内部仲裁,较大的提高了其工作效率,从而提升芯片处理性能,对在速度要求较高的系统有一定应用价值。
具体实施方式
本发明提供了一种提高队列管理中出队效率的方法和装置,为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。
为了解决队列出队效率低的问题,本发明提供了一种提高队列管理中出队效率的装置用于提高队列管理中的出队效率,其核心思想是:该装置为每个请求设置一个队列状态存储单元,同时处理多个队列请求,通过连续向外部缓存单元发送读操作的方法,使得外部缓存单元能一次处理多个队列请求,避免每个请求都向缓存申请操作,节省了缓存响应时间和读出数据时间,同时由于减少了对外部缓存单元的握手次数,减轻外部缓存单元内部仲裁,较大的提高了其工作效率,从而提升芯片处理性能,对在速度要求较高的系统有一定应用价值。
根据其核心思想,本发明采用了如图3所示的一种提高队列管理中出队效率的装置,该系统包括:请求接收单元201,信号调度单元202,出队控制单元203,外部缓存单元205和数据接收和分配单元204,其中,请求接收单元201与信号调度单元202相连,用于接收来自不同队列出队的请求信号和请求调度的队列号;每种请求对应一个存储单元,用于存储队列状态信息,不同请求信号从不同存储单元中读出该请求队列的状态信息,然后给出准备(ready)信号至信号调度单元102;
信号调度单元202,用于接收来自于请求接收单元201的各路请求准备信号,调度各请求准备信号,将调度出的请求信号和准备信号送至出队控制单元203,其中,如果只有一个准备(ready)信号,则信号调度单元202直接送出该信号给出队控制单元203;如果多个准备(ready)信号同时到达,信号调度单元采用一定调度策略,例如RR轮询调度,优先级等调度策略,调度出一个请求并把其他准备(ready)信号送给出队控制单元203, 如果准备(ready)信号不是同时到达,而是先后到达,那么信号调度单元202将先来的准备(ready)信号调度出去,采用先来先处理的方法送给出队控制单元203;
出队控制单元203分别与信号调度单元202,外部缓存单元205和数据接收和分配单元204相连,用于控制向外部缓存单元205的读控制和存储各个请求的信息,其中,出队控制单元203包括两个部分:连续读操作控制模块和队列缓存模块,见图4所示,本发明中的连续读操作控制模块负责发起多个准备(ready)信号的读请求,而现有技术中出队控制单元仅负责发起一个准备(ready)信号的读请求。具体操作如下:
如果只有一个请求到达信号调度单元202,该请求被信号调度单元202直接送到出队控制单元203,出队控制单元203的连续读控制模块向外部缓存单元205发起该请求对应队列的读操作和第一个读地址,这里假设队列一次读操作要读三个地址,等待外部缓存单元205(QDR)返回响应后,连续读控制模块继续送出剩余两个地址,在最后一个地址处结束读操作。这种情况出队控制单元203只处理了一个请求。
如果有多个请求的ready信号同时到达信号调度单元202,信号调度单元202调度出一路请求,送给出队控制单元203的连续读操作控制模块,用于发起读外部缓存单元205(QDR)的读操作和第一个读地址。把其余的ready信号和队列号送给队列缓存模块缓存。在连续读控制模块接收到读响应后按调度顺序检测队列缓存模块是否有准备(ready)信号,如果有,那么向外部缓存单元205(QDR)的读操作在给出调度出的ready请求队列读地址后,读操作一直延伸,连续送出其余请求的读地址。每一个请求读地址都送出后读操作结束。
本发明从读请求发起到外部缓存单元205(QDR)返回读响应这段时间称为读等待。在读等待这段时间信号调度单元202依然接收调度请求并把相应ready信号送到出队控制单元203。在读等待这段时间到达出队控制单 元202的ready信号都被缓存到队列缓存模块。连续读控制模块在读响应后检测队列缓存模块是否有缓存其他请求,如果有那么向外部缓存单元205(QDR)的读操作给出调度出的ready请求队列读地址后,读操作依然保持,连续送出缓存在队列缓存模块的其他请求的读地址,每一个请求读地址都送出后读操作结束。
综上所述,本发明不仅可以处理同时到达的ready信号,只要在读等待阶段到达的准备(ready)信号都可以一起处理,即调度请求在一定的时间内先后到达都可以一起发起读操作,即一次读操作完成多个调度请求的控制,这样就极大地提高了对外部缓存QDR的读效率。
队列缓存模块,用于按调度处理顺序将各个ready请求和队列号缓存在队列号缓存模块的先进先出缓存器中,按调度顺序检测下一个队列缓存的准备信号,通过读操作控制模块向所述外部缓存单元发起读请求,并且队列号缓存模块与数据接收和分配单元204相连,将缓存的队列号发送给数据接收和分配单元204;
数据接收和分配单元204,与外部缓存单元205,队列号缓存模块和请求接收单元201相连,现有技术该单元仅完成数据接收和组合,本发明中由于多个请求队列的数据是连续回来,所以数据接收和分配单元204除了完成数据接收组合还要将数据分配给各自对应的队列,预先产生读出队控制单元203中缓存队列号的先进先出缓存器的读地址,当数据从外部缓存单元205返回数据后,依次根据从先进先出缓存器中读出的队列号,将这些读数据拆分送给各个队列,同时还要更新请求接收单元201里队列状态信息;
外部缓存单元205,与出队控制单元203和数据接收和分配单元204相连,用于缓存已经入队或者还在入队的队列包描述符信息,本发明读操作控制主要针对QDR这种存储器,入队的队列以一定的方式存放在QDR存储器中,需要调度时从QDR存储器中读出数据给数据接收和分配单元 204。
结合附图6,以两个个端口同时请求为例,具体详细的描述本发明一种实施方式,
步骤1、请求接收单元201接收来自两个队列的请求信号(请求0和请求1)和请求调度的队列号(队列号0和队列号1);2个请求分别从各自存储单元中读出该请求队列的状态信息,然后给出各自的准备(ready)信号(rdy0和rdy1);
步骤2、两个请求的准备(ready)rdy信号进入信号调度单元202,假设本次操作调度出请求0的rdy0。
步骤3a、将请求1的信号及其队列号写到队列缓存模块的先进先出缓存器fifo中;
步骤3、连续读控制模块203检测到调度出的rdy0,发起向外部缓存单元205的读操作和读地址,然后等待缓存QDR模块响应;这里假设队列一个包描述符占用三个外部缓存地址,那么读响应后读操作控制模块给出两个读地址。
步骤3b、连续读控制模块在读响应后检测队列缓存是否有缓存的请求,如果检测到队列1有缓存的信号;当rdy0的第三个地址给出后,读操作一直保持,连续送出rdy1的三个读地址。rdy1最后一个地址处结束此次读操作。
步骤4、数据接收和分配单元接收从外部QDR缓存返回的连续数据,根据缓存队列号信息进行数据接收组合及数据分配,从外部缓存单元205返回的读数据,这些读数据是连续给出,由于每个请求读地址为三个所以回来的数据每三个对应一个队列。前三个数据是被信号调度单元调度出请求0所对应的队列,数据组合后送给请求0。从队列缓存读出缓存队列号,即请求1,余下数据组合后送给请求1的队列,每个队列数据读出来后更新请求接收模块201里队列状态信息,请求结束。
本发明提出了对外部缓存QDR读操作上,将多个请求读操作一次连续发到外部缓存单元,避免了在只有一套总线的情况下每个请求单独申请读操作,节省了缓存响应时间和读出数据时间,减少了对缓存单元的握手次数,减轻缓存单元内部仲裁,提高芯片处理性能。附图2和图5是现有技术和本发明的时序图,结合时序图假设读响应和读数据返回时间是2个时钟,这个时钟跟外部缓存QDR控制器有关,从附图2可以看到现有技术两个队列请求需要发起两次读操作,每次读操作发起第一个地址后都要等待读响应,然后发起其余两个地址,每次读完后等待数据返回,每个请求处理(队列请求处理,向外部缓存单元发起读,从外部缓存单元返回读数据)需要14拍,两个队列处理完需要28个时钟;同样的条件下采用本发明并行处理两个请求只使用20个时钟,两个读请求只发起一次读操作和等待一次读响应,同样只等待一次数据返回,见图5,一次读操作将两个队列请求的地址连续送出,那么两个请求的数据也是连续返回,从两个请求同时处理的话节省8个时钟,从而带来数据处理带宽提高至少1.4倍的。如果多个请求节省的时钟更多,由此可以提高队列管理的处理速度和芯片处理性能。
应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。