数据出队的方法及装置的制作方法

文档序号:7701220阅读:155来源:国知局
专利名称:数据出队的方法及装置的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种数据调度出队技术。
背景技术
在通信芯片中,经常需要处理大量的队列,相应的队列数据通常存放在 单独的片外存储器中,并以采用链表的数据结构进行管理。其中,链表的控
制信息可以单独存放在访问速度较快的SSRAM (同步静态存储器)中,队列 数据则可以存放于容量较大且可并行操作的SDRAM (同步动态存储器)中。
队列数据的结构可以采用头尾指针(header, tail)作为主要信息进行管 理。在对数据进行出队操作的过程中可以包括
(1) 接收出队命令,相应的出队命令可以为指示将一个或多个报文出 队,相应的总的出队数据量可以为credit个字节;
(2) 读取头指针header所指的链表单元,并采用读出的所述链表单元中 的下个链表单元地址nxLpd—ptr更新头指针header;
(3) 从credit个字节中减去读出的链表单元中的信息info中的数据长度, 若剩余的字节数creditX),则仍存在需要出队的数据,即需要重复执行步骤
(2),直到剩余字节credi^二0时,完成出队操作。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题 在上述处理过程中,只有读出了队列头所指的链表单元的下一指针,才
可以开始对下一个链表单元的节点对应的数据进行出队,这种前后操作顺序
的依赖性导致出队性能受到限制,降低了出队效率。

发明内容
本发明的实施例提供了 一种数据出队的方法及装置,以有效提高出队的 效率,改善数据出队处理性能。
一种凄t据出队的方法,包括 获取各个队列中的报文的存储地址;
根据各个队列中的报文的存储地址,由多个出队处理引擎并行对各个队 列中的报文进行出队操作。
一种数据出队的装置,包括
信息获取单元,用于获取各个队列中的报文的存储地址; 多引擎出队操作单元,用于根据所述信息获取单元获取的各个队列中的 ^^文的存储地址,由多个出队处理引擎并行对各个队列中的报文进行出队操作。
由上述本发明的实施例提供的技术方案可以看出,其通过多出队处理引 擎的方式同时并行地对待出队的多个报文进行出队处理,从而可以有效提高 数据调度出队的效率,改善数据调度出队的性能。


为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所 需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发 明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前 提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的处理过程示意图2A为本发明实施例提供的装置结构示意图一;
图2B为本发明实施例才是供的装置结构示意图二;
图3为本发明实施例中应用的多链表数据结构示意6图4为本发明实施例提供的装置结构示意图三。
具体实施例方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行 清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而 不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做 出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中,在接收到出队命令后,可以获取各个队列中的报文的 存储地址,并根据各个队列中的报文的存储地址,由多个出队处理引擎并行 对各个队列中的报文进行出队操作,其中,相应的各个出队处理引擎可以各 自独立的对报文执行相应的出队操作,即多个出队处理引擎可以同时对多个 报文执行相应的出队操作,相应的报文的存储地址则可以为报文首的存储地 址,也可以为报文首的存储地址和报文尾的存储地址。
进一步地,为了能够实现多队列高速率的出队处理,本发明实施例提供
的数据出队的实现方案中,如图1所示,具体可以包括以下步骤
步骤1,接收到出队命令,该出队命令中包含出队数据量信息,该出队数 据量信息指示了根据该出队命令需要执行出队操作的出队数据量;
步骤2,为需要出队的^l艮文分配对应的出队处理引擎,确定各个出队处理 引擎各自需要执行出队操作的数据量;
具体地,在接收到所述出队命令后,则可以在多个出队处理引擎中为当 前需要出队的报文选择分配对应的出队处理引擎,并将从出队命令中获取的 出队数据量减去已经分配出队处理引擎的报文的数据量,同时,还将该已经 分配出队处理引擎的报文的数据量作为相应报文对应的出队处理引擎需要执 行出队操作的数据量;
在上述将从出队命令中获取的出队数据量减去已经分配出队处理引擎的报文的数据量的过程中,根据相减后的结果,还需要确定是否继续其他需要
出队的才艮文分配对应的出队处理引擎,具体的处理方式可以包括
(1 )若相减后的值大于零,则表示可以继续进行出队处理,并继续为下 一个需要出队的报文分配对应的出队处理引擎,直到相减后的值小于或等于 零时,停止本次出队操作过程中的出队处理引擎的分配,即不再继续为未出 队的报文分配对应的出队处理引擎;
(2)若相减后的值小于零,则在接收到下一个出队命令后,可以从下一 个接收到的出队命令携带的新的出队数据量中扣除所述小于零的绝对值,并 将扣除后的结果作为接收到的出队命令的更新后的出队数据量。即当相应的 相减后的值小于零时,则需要对下次收到的出队命令中包含的新的出队数据 量进行更新,以扣除之前出队操作过程中已经提前出队的数据量;
在为当前需要出队的报文选择分配对应的出队处理引擎的过程中,具体 可以根据预先设置的规则在多个出队处理引擎中选择一个出队处理引擎作为 当前需要出队的报文的出队处理引擎;相应的预先设置的规则可以为随机选 择的方式选择出队处理引擎,或者,也可以为依次选择的方式选择出队处理 引擎,或者也可以为其他任意设定的选择方式选择出队处理引擎。
步骤3,将各个出队处理引擎各自需要执行出队操作的数据量传送给相应 的出队处理引擎;
例如,可以将需要出队的报文的数据量作为需要执行出队操作的数据量 传送给为该^JL分配的出队处理引擎;
在为当前需要出队的报文分配对应的出队处理引擎后,对于队列首报文 (即队列中的队首报文),除将各个出队处理引擎各自需要执行出队操作的 数据量传送给为其分配的出队处理引擎外,还可以将在出队命令中携带相应 的队列首报文的存储地址传送给为其分配的出队处理引擎;而对于非队列首 报文,则可以不必在出队命令中携带相应的报文的存储地址(即无需将非队列首报文的存储地址(即队列首报文首的存储地址)传送给为其分配的出队 处理引擎),此时,出队处理引擎可以根据之前获得的相应的队列首报文的 存储地址来计算确定相应的非队列首报文的存储地址(即非队列首报文首的 存储地址)。当然,对于非队列首报文,也可以在出队命令中携带相应的报 文的存储地址(即报文首的存储地址),并可以将非队列首报文的存储地址 传送给为其分配的出队处理引擎,此时,出队处理引擎便可以直接获得相应 的报文的存储地址。
步骤4,所述多个出队处理引擎根据获得的报文的存储地址(即报文首的 存储地址),以及各自需要执行出队操作的数据量,对各个队列中的报文进
行的出队操作,以实现相应的出队操作;
进一步地,在该步骤中,各个出队处理引擎可以根据获得的其自身需要 执行出队操作的数据量,从相应的报文的存储地址(即报文首的存储地址) 开始执行相应的出队操作,直到出队的数据量达到其自身需要执行出队操作 的数据量时停止执行出队操作;
相应的出队处理引擎具体通过计算的方式获得的该报文的存储地址,也 可以通过接收外部传递来的报文的地址信息的方式获得相应的才艮文存储地 址,或者,也可以通过其他方式获得相应的报文的存储地址;
其中,在执行出队操作时,可以根据报文所在的地址依次执行出队操 作,也可以打乱顺序,不是依次出队。
在该步骤中,多个出队处理引擎采用了各自独立的并行对报文执行相应 的出队操作的出队处理方式,从而可以有效提高出队操作的效率。
再者,为了能够实现多队列高速率的出队处理,本发明实施例提供的数 据出队的实现方案中,也可以包括以下过程
(1 )接收到出队命令,该出队命令中包含需要执行出队操作的各个队列 中的报文的存储地址;
9相应的报文的存储地址具体可以包括报文首的存储地址和报文尾的存 储地址,以便于确定报文的首尾位置;
(2) 为需要出队的报文分配对应的出队处理引擎,并将各个队列中的报 文的存储地址传送给相应的出队处理引擎;
(3) 多个出队处理引擎根据获得的报文的存储地址,对各个队列中的报 文进行的出队操作,以实现相应的出P人操作。
本发明实施例中,在通过相应的上述步骤4或上述过程(3)完成对一个 报文或队列的出队处理后,还可以释放该报文或队列占用的出队处理引擎, 以便于其他报文或队列的出队处理操作过程中可以占用该出队处理引擎。例 如,在对各个报文进行出队操作时,可以由为同 一报文分配的出队处理引擎 对该报文包含的多个信元进行出队处理,即由该报文对应的出队处理引擎连 续地优先对该报文包含的多个信元进行出队操作,此时,在该报文的所有信 元的出队处理操作完成后,便可以释放为该报文分配的出队处理引擎。
综上所述,本发明实施例中,针对多报文的出队操作提出一套多引擎的 出队处理的方案,从而可以有效地利用片外存储器的访问带宽,充分提高系 统的出队处理性能。
本发明实施例还提供了 一种数据出队的装置,其具体实现结构如图2A和 图2B所示,可以包括以下处理单元
信息获取单元201,用于获取各个队列中的报文的存储地址,以便于出队 操作过程中可以获知相应的报文的位置;
多引擎出队操作单元202,用于通过上述信息获取单元201获取的各个队 列中的报文的存储地址,由多个出队处理引擎并行对各个队列中的报文进行 出队操作,相应的报文的存储地址可以为报文首的存储地址,也可以为报文 首的存储地址和报文尾的存储地址,相应的各个出队处理引擎可以各自独立 的对报文执行相应的出队操作,使得多个出队处理引擎可以同时对多个报文执行相应的出队操作;即由多个出队处理引擎采用了各自独立的并行对报文 执行相应的出队操作的出队处理方式,从而可以有效提高出队操作的效率。
进一步地,该装置还可以包括引擎分配处理单元203和出队管理单元 204,其中
引擎分配处理单元203,用于为当前需要出队的报文分配对应的出队处理 引擎,以便于多引擎出队操作单元202可以通过为各报文分配的出队处理引擎 并行对各个报文进行出队操作;该单元还将从接收到的出队命令中获取的该 报文的存储地址传送给为其分配的出队处理引擎,以便于所述信息获取单元 201可以获得相应的报文的存储地址,或者,将该报文的数据量作为需要执行 出队操作的数据量传送给为该报文分配的出队处理引擎,以便通过相应的出 队处理引擎对该报文进行出队处理;
其中,在该引擎分配处理单元203为当前需要出队的报文分配对应的出队 处理引擎的过程中,具体可以根据预先设置的规则在多个出队处理引擎中选 择一个出队处理引擎作为当前需要出队的报文的出队处理引擎;相应的预先 设置的规则可以为随机选择的方式选择出队处理引擎,或者,也可以为依次 选择的方式选择出队处理引擎,或者,也可以为其他任意设定的选4奪方式选 择出队处理引擎,等等;
在该引擎分配处理单元203将报文的存储地址传送给出队处理引擎的过程 中,相应的报文的存储地址具体可以包括报文首的存储地址和报文尾的存 储地址,相应的报文的存储地址可以从接收到的出队命令获得。而在该引擎 分配处理单元203将该报文的数据量作为需要执行出队操作的数据量传送给为 该报文分配的出队处理引擎的过程中,也可以将队列首:R文的存储地址传送 给为该报文分配的出队处理引擎,其中,相应的队列首报文的存储地址具体 可以从接收到的出队命令中获得,例如,对于队列首报文(即队列中的队首 报文),还可以在出队命令中携带队列首报文的存储地址;对于非队列首报文,则可以不必在出队命令中携带相应的报文的存储地址,此时,出队处理
储地址;当然,对于非队列首报文,也可以在出队命令中携带相应的报文的
存储地址(此时,只需要报文首的存储地址即可),此时,出队处理引擎便 可以直接获得相应的报文的存储地址,进而确定相应的才艮文的存储位置。
出队管理单元204,用于将从出队命令中获取的出队数据量减去已经分配 出队处理引擎的报文的数据量后,若相减后的值大于零,则通知上述引擎分 配处理单元203继续为下一个需要出队的报文分配对应的出队处理引擎,直到 相减后的值小于或等于零,则该出队管理单元204不再通知上述引擎分配处理 单元203继续为下一个未出队的报文继续分配相应的出队处理引擎。
在该装置进行出队处理过程中,相应的出队管理单元204获得的相减后的 值可能小于零,此时,在该装置还可以包括出队数据量更新单元205,用于在

后,从接收到的新的出队命令携带的新的出队数据量中扣除所述小于零的绝 对值,并将扣除后的结果作为接收到的出队命令的更新后的出队数据量,以 实现对下一次收到的出队命令中的新的出队数据量的更新操作。
进一步地,该装置还可以包括引擎释放单元206,用于在多引擎出队操作 单元202完成对一个报文或队列的出队处理后,释放该报文或队列占用的出队 处理引擎。假设,该多引擎出队操作单元202具体可以采用为同一报文分配的 出队处理引擎对该报文包含的多个信元进行出队处理,则相应的引擎释放单 元206可以在所述出队操作单元针对该报文的所有信元的出队处理操作完成 后,释放为该报文分配的相应的出队处理引擎,以便于其他报文可以占用该 出队处理引擎。
可见,上述装置实施例具体通过多出队处理引擎的方式同时对待出队的 多个报文进行出队处理,从而可以有效提高数据调度出队的效率,改善数据
上述出队管理单元204获得的相减后的值小于零时,在接收到新的出队命今'调度出队的性能。
为便于对本发明实施例的理解,下面将以多重链表的队列管理方式为 例,结合相应的附图对本发明实施例的具体应用进行详细的说明。
多重链表的队列管理结构可以如图3所示,其中,第1层次的链表单元称
作PD (Packet Descriptor,报文描述符),第2层次的链表单元称作CD (Cell Descriptor,报文的信元描述符),若是单重链表,则链表中只有 PD,而没有CD。队列以头尾指针(header, tail)表示的队列数据结构。
基于多重链表的队列,本发明实施例提供了相应的多引擎的并行出队的 处理装置,如图4所示,在该装置中,从调度模块scheduler moduler接收出队 命令(或称出队请求),相应的多重链表管理的待出队的报文(或称数据) 保存于SDRAM (同步动态随机存取存储器)中。
仍如图4所示,该装置的具体实现结构可以包括 (1 )引擎緩存eng—mem、引擎管理free—eng和引擎控制eng^trl,其 中具体由引擎管理free—eng负责管理引擎緩存eng一mem中保存的多个出队 处理引擎,并为各个待出队的报文分配对应的引擎,以管理各个引擎的应 用,即用于实现图2B所示装置中的引擎分配单元203的功能;以及由引擎控 制eng—ctrl实现有效引擎发射eng—req,发送相应的读链表数据(即以链表方 式保存的报文)的命令,以实现链表数据的出队处理,即实现多引擎出队操 作单元202的功能。
相应的引擎管理free一eng还可以实现图2B所示装置中的引擎释放单元 206的功能。
(2)引擎竟争仲裁器arb1,第一队列等待缓冲qinfo一buff和第二队列等 待緩冲qpt^fifo,以及派生引擎緩冲forLfifo等,其中
引擎竟争仲裁器arb1与引擎管理什66_6叩连接,用于对第一队列等待緩 冲qinfoJ)uff和第二队列等待緩冲qpbLfifo,以及派生引擎緩冲fork一fifo传送来的出队通知进行按照预定的优先级(即各个出队通知的处理优先级)进行处 理,为其选择对应的引擎,例如,为优先级高的出队通知优先选#^目应的引擎。
其中,派生引擎緩冲forl^fifo传送来的出队通知为针对下一个报文的出队 通知,而第 一队列等待緩冲qinfo—buff和第二队列等待緩沖qpb一fifo共同联合 传送来的出队通知为针对新的出队命令的出队通知,且派生引擎緩冲fork一fifo 传送来的出队通知的优先级更高。
(3)链表处理模块lnk—proc和竟争仲裁器arbO,其中
链表处理模块lnk一proc用于实现图2B所示装置中的出队管理单元204的功 能,以及出队数据量更新单元205的功能;且相应的链表处理模块lnLproc还 通过向引擎竟争仲裁器arb1发送命令的方式控制多引擎出队操作单元202采用 为同一报文分配的出队处理引擎对该报文包含的多个信元进行出队处理;进 一步地,该控制过程中传递的命令在到达引擎竟争仲裁器arb1后,相应的优 先级高于派生引擎緩冲fork一fifo传送给引擎竟争仲裁器arb1的出队通知;
竟争仲裁器arbO用于对接收到的链表处理模块lnk一proc发来的信息及调度 模块scheduler moduler发来的出队命令进行处理,且相应的链表处理模块 Ink—proc发来的信息的处理优先级高于调度模块scheduler moduler发来的出 队命令的优先级。在图4中,相应的xoff req from QM是表示qpbLfifo满,对竟 争仲裁器arbO反压,以使竟争仲裁器arbO不响应调度模块scheduler moduler 发送来的新的出队请求,即为保证不发生溢出,故需要对调度模块scheduler moduler发送来的新出队请求进行反压。
基于图4所示的装置,相应的多引擎并行出队处理机制的执行过程具体可 以包括以下步骤
步骤1,从调度模块scheduler moduler发来的携带总的出队数据量credit 的出队命令deq—req (或称出队请求),并以低优先级在竟争仲裁器priorityarb0作检查,在没有出队充值请求,即没有新的出队命令发来的出队数据量 credit时,才丸行以下处理
(1) 若该队列号是第一次出队(即非工作working状态),则直接将出 卩人命令戶斤4夷带的credit ( c_new,即#斤的credit) ,口qinfo—buf的剩余credit
(c_old,即原credit,可以为大于0或小于等于0)合并Credit—sum;
其中,若合并相加后的creditX),则表示可以竟争新的出队引擎,即令 deq—req命令进入qbp—fifo,且将第 一队列等待緩冲qinfoj)uf中的剩余credit
(c_old)清O,并标记该队列为出队工作状态,即标记为working状态;否 则,若合并后的credit〈-0,则将该合并后的credit写入第一队列等待緩冲qinfo buf,等待出现后续的出队充值请求时,对其进行处理;
(2) 若该队列号对应的队列已是出队状态(即工作working状态),则 直才妄将携带credit (c_new)和qinfoj)uf的剩余credit ( c_old )合并起来通过 fifo_wr_ctrl写入到第二队列等待緩冲qinfo_buf中,并等待后继的充值
(precharge)操作;
相应的,图3中的credit一bp部分用于计算每个队列等待分配出队引擎的总 的credit量。为避免其溢出,也需要对调度模块scheduler moduler送来的新出 队请求进行反压。
步骤2,进入第二队列等待緩冲qpb一fifo的deqj"eq命令以最低优先级在亏l 擎竟争仲裁器priority arb1作4企查,以竟争获得相应的出队引擎;
具体地,若当前在引擎竟争仲裁器priority arb1处,没有派生引擎緩冲 fork_fifo的下 一 个PD请求nxt_pd—req请求,也没有直接从链表处理模块 Ink—proc传递过来的下一个CD请求nxt—cd—req,则在引擎管理(free—eng ) 有空闲的引擎的情况下,qpb—fifo的deqj"eq命令便会获得一个出队引擎,以 便于通过该出队引擎进行后续的出队操作。
步骤3,将获得出队引擎的出队命令所带的出队信息记入引擎緩存
15eng—mem,根据出队命令有效性规则,在出队引擎中选择一个有效的引擎作 为该出队命令的出队引擎,向片外SRAM直接发出读操作命令;
其中,出队命令的有效性规则是指符合有效出队条件的检查,例如,可 以才全查下一级来的反压,其中,未被下一级反压的队列的出队命令为有效, 相应的队列数据才可以出队。
步骤4,经过若千个时钟周期,SRAM返回链表处理模块lnk—proc的读数 据,即PD链表单元或CD链表单元的地址信息,链表处理模块lnk—proc将对读 回的链表单元数据进行处理;
相应的处理具体可以包括完整性检查(如ECC等),nxt_cd_ptr、 nxt—pd—ptr提取等。
对于正确的PD或CD数据,链表处理模块lnLproc将其返回给最初发出队 命令的调度模块作为PD或CD响应,同时还需要继续遍历链表后继的链表单元 以进行后续的才艮文出队处理,具体可以执行下述处理
(一) 对于nxt—ccLptr区分有效(!=NULL)和无效(==NULL )两种情 况,分别采用以下处理方式
对于nx^cd—ptr有效的情况,则表示当前出队的报文的各信元尚未出队完 成,则生成nxt一ccLreq,并将生成的nxt一cd—req作为最高优先级的命令在引 擎竟争仲裁器priority arb1获得引擎緩存eng—mem的更新权,以令原出队引擎 采用新的CD地址访问该报文的下一个CD数据,并执行步骤5;
对于nxt一cd—ptr无效的情况,则表示当前出队的报文的各个信元已经完成 出队操作,此时,可以由引擎管理free—eng释放所占用的出队引擎资源,以 便于其他报文可以应用相应的出队引擎完成相应的报文数据的出队操作;
(二) 在链表处理模块lnl^proc中,还将出队引擎携带的当前的credit减 去已经分配引擎的PD中报文长度,在当前的credit減去已经分配引擎的PD中 报文长度后,根据相应的剩佘credit是否大于零采用不同的处理,其中;(1 )若还有剩余credit,即credit大于O,则表示出队操作未完成,也可 以用nxt—pd—ptr!二NULL来表示,此时,可以用nxt—pd—ptr作为下一PD的地址 结合剩余的credit值对下 一 个报文进行出队操作,相应的剩余credit和 nxt_pd—req等信息将会緩存在派生引擎緩冲fork一fifo中,相应的派生引擎緩冲 fork—fifo的深度可以与系统的引擎数相同;相应的派生引擎緩冲fork—fifo输出 的nxt一pd—req在引擎竟争仲裁器priority arb1以第二优先级(仅低于链表处理 模块lnk—proc发来的nxt—cd—req)竟争引擎,在成功后以获得分配的引擎后, 继续对下一报文执行出队操作,直到剩余credit耗尽或者nxUxLptF-NULL (无效)时进入下面过程(2)描述的处理状态,从而保证了先下发的credit 将以相对较快的速度获得出队引擎,及时完成出P人操作。 (2)若剩余credit为0或者是负值(即赤字态)时,贝寸
如果nxLpcLptr为有效,则表示队列中的数据还没有出队完成,此时,可 以以高优先级发prechacrgejeq到竟争仲裁器priority arb0,以获得第一队列 等待緩冲qinfo一buff的访问权,从而将相应的当前剩余credit的信息及相应的 nxt—pcLptr保存于第一队列等待緩冲qinfojDuff,等待新的充值操作;之后, 接收新的出队命令并获得新的credit,直到credit大于0后再次进入qpb—fifo竟 争相应的用于出队操作的引擎;
如果nxt一pd一ptr为无效,且重新从出队命令获得新的PD指针即获得有效 的nxt—pd—ptr时,再次进入qpbLfifo去竟争出队引擎。
步骤5,对于步骤4中的nxtpd一ptr有效(!-NULL)的情况,则可以产生 下一CD出队的请求命令nx^ccLreq,并发送给引擎竟争仲裁器priority arb1, 且引擎竟争仲裁器priority arb1将产生的nxLcd—req作为最高优先级采用该报 文对应的引擎对下一CD进行出队处理,从而使得已经获得出队引擎的队列中 的某报文能够以最快的速率完成报文PD、 CD链表单元的出队处理,以保证先 获得出队引擎的队列中的报文能够以最快的速度将CD链表单元出队。
17在上述处理过程中,相应的引擎緩存eng—mem可以但不限于采用寄存器 实现,且在出队处理过程中,仅需要通过少量的几个引擎(如4-8个引擎) 实现多个队列出队便可以完全弥补SSRAM的访问延迟造成的间隙。另夕卜,相 应的引擎緩存eng—mem也可以采用通常ASIC (专用集成电路)结构的RA (寄存器阵列)或FPGA (现场可编程门阵列)结构的distribute ram (分布式 随机存储器)实现,这样可以使得相应的实现资源代价较小。
而且,上述描述的硬件逻辑实现队列处理的系统中,仅以多链表的数据 管理模式为例进行说明,同样,本发明实施例还可以应用于单链表或的数据 结构或者以其他方式管理的数据结构中的数据出队处理,如以图的遍历的方 式管理的数据结构等。
综上所述,本发明实施例中,具体通过引入多引擎并行处理的概念,使 得原来单流程的出队处理因为访问片外SSRAM的多个周期延迟造成的带宽浪 费的问题,在多队列的应用场景下获得解决。
在上述实现方案中,还采用竟争仲裁器priority arbO和引擎竟争仲裁器 priority arb1的固定优先级的特性,保证了先到的出队命令先得到相应的出队 处理,使得在前级调度器保证的情况下,能够保证几个引擎在大量的队列之 间提供相对公平的服务。
本发明实施例不仅可以应用于单链表或多链表形式的数据结构中,还可 以应用于图的遍历过程中,具体实现过程与上述描述的处理过程类似,故在 》匕不再详细描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流 程,是可以通过数字逻辑的硬件电路来完成,所述的数字逻辑的硬件电路可 以为ASIC芯片电路,也可以为FPGA电路,该电路工作时可包括如上述各方 法的实施例的流程。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于 一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施
例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或卩逭才几存《诸"i己忆体(Random Access Memory, RAM)等。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不 局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可 轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明 的保护范围应该以权利要求的保护范围为准。
权利要求
1、一种数据出队的方法,其特征在于,包括获取各个队列中的报文的存储地址;根据各个队列中的报文的存储地址,由多个出队处理引擎并行对各个队列中的报文进行出队操作。
2、 根据权利要求1所述的方法,其特征在于,在由多个出队处理引擎并 行对各个队列中的才艮文进行出队操作前,该方法还包括为当前需要出队的队列中的报文分配对应的出队处理引擎,并将从接收或者,为当前需要出队的队列中的报文分配对应的出队处理引擎,并将该报文 的数据量作为需要执行出队操作的数据量传送给所述出队处理引擎;还将从 接收到的出队命令中获取的出队数据量减去已经分配出队处理引擎的报文的 数据量后,若相减后的值大于零,则继续为下一个需要出队的报文分配对应 的出队处理引擎,直到相减后的值小于或等于零。
3、 根据权利要求2所述的方法,其特征在于,该方法还包括 若所述相减后的值小于零,则在接收到新的出队命令后,从接收到的出队命令携带的新的出队数据量中扣除所述小于零的绝对值,直到将扣除后大 于零的结果作为接收到的出队命令的更新后的出队数据量。
4、 根据权利要求2所述的方法,其特征在于,该方法还包括 通过优先级仲裁器优先保证当前接收到的出队命令中的需要出队的各个队列中的出队数据量信息优先被分配对应的出队处理引擎;通过优先级仲裁器优先保证已经分配到出队处理引擎的报文被该出队处 理51擎优先执行出P人操作。
5、 根据权利要求1至4任一项所述的方法,其特征在于,该方法还包括 在完成对一个报文或队列的出队处理后,释放该报文或队列占用的出队处理引擎。
6、 根据权利要求1至4任一项所述的方法,其特征在于,所述对各个队列 中的报文进行出队操作的步骤具体包括由为同一报文分配的出队处理引擎对该报文包含的多个信元进行出队处 理,并在该报文的所有信元的出队处理操作完成后,释放为该报文分配的所 述出队处理引擎。
7、 一种数据出队的装置,其特征在于,包括 信息获取单元,用于获取各个队列中的报文的存储地址;多引擎出队操作单元,用于根据所述信息获取单元获取的各个队列中的 报文的存储地址,由多个出队处理引擎并行对各个队列中的报文进行出队操 作。
8、 根据权利要求7所述的装置,其特征在于,该装置还包括引擎分配处理单元,用于为当前需要出队的队列中的报文分配对应的出其分配的出队处理引擎,或者,将该报文的数据量作为需要执行出队操作的 数据量传送给为该报文分配的出队处理引擎;出队管理单元,用于在所述引擎分配处理单元将从所述出队命令中获取 的出队数据量减去已经分配出队处理引擎的报文的数据量后,若相减后的值 大于零,则通知所述引擎分配处理单元在可用的出队处理引擎中继续为下一 个需要出队的报文分配对应的出队处理引擎。
9、 根据权利要求8所述的装置,其特征在于,该装置还包括出队数据量更新单元,用于在所述出队管理单元获得的相减后的值小于 零时,在接收到新的出队命令后,从接收到的出队命令携带的新的出队数据量中扣除所述小于零的绝对值,并将扣除后的结果作为接收到的出队命令的 更新后的出队数据量。
10、 根据权利要求8所述的装置,其特征在于,该装置还包括 第一优先级仲裁器,用于优先保证当前接收到的出队命令中的需要出队的各个队列中的出队数据量信息优先被分配对应的出队处理引擎;第二优先级仲裁器,用于优先保证已经分配到出队处理引擎的报文被该 出队处理引擎优先执行出队操作。
11、 根据权利要求7至10任一项所述的装置,其特征在于,该装置还包括 引擎释放单元,用于在所述出队操作单元完成对一个报文或队列的出队处理 后,释放该报文或队列占用的出队处理引擎。
12、 根据权利要求11所述的装置,其特征在于,所述多引擎出队操作单 元具体采用为同 一报文分配的出队处理引擎对该报文包含的多个信元进行出 队处理,且所述引擎释放单元具体用于在所述出队操作单元针对该报文的所 有信元的出队处理操作完成后,释放为该报文分配的所述出队处理引擎。
全文摘要
一种数据出队的方法及装置,其主要包括获取各个队列中的报文的存储地址,并根据各个队列中的报文的存储地址,由多个出队处理引擎并行对各个队列中的报文进行出队操作。本发明实施例通过多出队处理引擎执行出队处理的方式同时对多个队列的报文进行出队处理,从而可以有效提高数据调度出队的效率,改善数据调度出队的性能。
文档编号H04L12/56GK101594302SQ20091008807
公开日2009年12月2日 申请日期2009年7月1日 优先权日2009年7月1日
发明者卞云峰, 晖 吕, 段有杰, 柏 程, 罗海燕 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1