基于软件的并行处理中的包有序调度的方法

文档序号:8548063阅读:815来源:国知局
基于软件的并行处理中的包有序调度的方法
【专利说明】基于软件的并行处理中的包有序调度的方法
[0001]相关申请案交叉申请
[0002]本申请要求于2012年12月28日递交的发明名称为“基于软件的并行处理中的包有序调度的方法(Methods for Packet Scheduling with Order in Software-BasedParallel Processing) ”的第13/730,319号美国专利在先申请优先权,该在先申请的内容以引入的方式并入本文。
技术领域
[0003]本发明涉及通信网络,以及在特定实施例中,涉及基于软件的并行处理中的包有序调度的方法。
【背景技术】
[0004]多核处理器是集成了两个或多个独立运行的处理单元或“内核”的单个计算部件(例如,中央处理单元(CPU))。内核是用于读取和执行软件指令的部件,例如,添加或移动数据的指令。多核处理器可同时运行或执行多个指令(即,并行处理),因此提高了在计算机中执行应用的整体速度。通常,多核被集成到单个集成电路中。多核处理器早已普遍运用于服务器、台式计算机和笔记本电脑中,但最近才应用于路由器、交换机和负责在互联网上传输数据包的其它网络节点中。然而,路由器和类似设备的要求和目的与服务器等的要求和目的不同,这对并行处理提出了额外的挑战。

【发明内容】

[0005]在一个实施例中,本发明包括一种在网络单元中由第一内核实现并行处理的方法,包括:若入口队列未被其它内核锁定,锁定所述入口队列;当所述入口队列被其它内核锁定时,从多个任务队列的第一子集中搜索未锁定的任务队列,其中,所述第一子集与所述多个任务队列的第二子集不同,且第二内核从所述第二子集开始搜索未锁定的任务队列;当任务队列的第一默认子集中的所有任务队列均被锁定,且所述入口队列也被锁定时,从所述多个任务队列的剩余队列中搜索未锁定的任务队列。
[0006]在另一个实施例中,本发明包括一种并行处理的网络单元,包括:多个内核和与所述多个内核耦合的存储器,其中,所述存储器包括多个入口队列、多个任务队列,以及顺序队列,其中:所有内核均可访问任意入口队列、任务队列以及顺序队列;通过配置内核使得:当一个内核或内核子集锁定所述入口队列时,其它内核搜索未锁定的任务队列,其中,每个内核与任务队列的子集关联,并从所述子集开始搜索未锁定的任务队列,而且针对至少两个内核的子集是不同的。
[0007]在另一个实施例中,本发明包括一种网络单元中的可由多核内核执行的计算机程序产品,所述计算机程序产品包括存储在非瞬时性计算机可读存储介质中的计算机可执行指令,所述计算机可执行指令由所述内核执行时,使得所述网络单元进行如下操作:若入口队列未被其它内核锁定,第一内核锁定所述入口队列;当所述入口队列被其它内核锁定时,其它可用的第一内核从多个任务队列的第一默认子集中搜索未锁定的任务队列,其中,所述第一子集与所述多个任务队列的第二默认子集不同,且第二内核从所述第二默认子集开始搜索未锁定的任务队列;当任务队列的第一默认子集中的所有任务队列均被锁定,且所述入口队列也被锁定时,所述第一内核从所述多个任务队列的剩余队列中搜索未锁定的任务队列。
[0008]以下结合附图和权利要求对以上以及其他特征做更清晰明了的详细描述。
【附图说明】
[0009]为了更透彻地理解本发明,现参阅结合附图和【具体实施方式】而描述的以下简要说明,其中的相同参考标号表不相同部分。
[0010]图1为网络单元的公开的实施例示意图,所述网络单元可以是通过网络传送和处理数据的任何设备;
[0011]图2为公开的实施例提供的在多核处理器中进行并行处理的系统示意图;
[0012]图3A和3B示出了公开的实施例提供的在多核处理器中进行并行处理的方法流程图;
[0013]图4示出了适合实现此处公开的部件的一个或多个实施例的典型和通用的网络部件。
【具体实施方式】
[0014]首先应理解,尽管下文提供一项或多项实施例的说明性实施方案,但所公开的系统和/或方法可使用任何数目的技术来实施,无论该技术是当前已知还是存在的。本发明决不应限于下文所说明的说明性实施方案、附图和技术,包括本文所说明并描述的示例性设计和实施方案,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。
[0015]对于现在的CPU,一个CPU中可有2至32个内核。然而,产业继续推进实现在一个CPU上配有更多内核。随着多核中央处理单元(CPUs)在产业中的应用,并行处理普遍存在于服务器/计算市场中,且在实现包调度和处理的路由器/交换机中也越来越普遍。然而,由于可能存在大量的内存共享和缓存线问题,现有的包调度器要么使用为少量内核(其性能有限)设计的集中式模型,要么依赖硬件。很多现有的并行处理方法关注集中式模型或分布式模型。通常,分布式模型可随处理单元(例如,CPU/内核)的数量伸缩。然而,需为包和事务处理等任务保持顺序。根据阿姆达尔定律,在并行处理中实施任务执行的顺序可能具有很大的挑战性,尤其是在分布式模型中。大多数(若非所有)已有的方案会导致序列化执行,且可能导致性能差。
[0016]公开的方法、装置和系统是当保持任务顺序和提供较佳的性能(例如,15兆包/秒(Mpps))时,将任务基本上均等地分配给处理单元。为了避免内核之间对资源的竞争,并在实质上最大化数据处理系统中所有内核的利用率,公开的系统提供了指示处理器如何选择待执行的功能的规则。所有内核都可以锁定并轮询来自入口队列的任务,但在给定的时间点只有一个内核可锁定入口队列。当入口队列被一个内核锁定时,其它内核可转向对多个任务队列中的一个任务队列进行锁定和轮询。任意内核可锁定和轮询任意任务队列。然而,可为每个内核分配任务队列的一个不同子集,以开始搜索未锁定的任务队列。这可能会减少内核之间的竞争。尽管可能仍会发生竞争,但与其它方法相比,内核之间的竞争率会低得多且是可控制的。如果内核的指定任务队列子集中的所有任务队列被其它内核锁定,则内核可试图从剩下的任务队列寻找到未锁定的任务队列,因此保证了内核不会空闲,且本质上对处理资源进行了最优化。如果所有的任务队列均被锁定(即使有可能,这也很少发生),内核可再次重复检查相同的入口队列/任务队列。
[0017]图1为网络单元100的实施例示意图,所述网络单元100可以是通过网络传送和处理数据的任何设备。所述网络单元100可包括与接收器(Rx) 112耦合的一个或多个入端口或单元110,其中,所述接收器112用于从其它网络部件接收信号和帧/数据。所述网络单元100可包括逻辑单元120,用于确定向哪些网络部件发送数据。可以使用硬件、软件或二者结合实现所述逻辑单元120。所述逻辑单元120可包括多个中央处理单元(CPUs)或内核122 (此处也可称为“处理器”)。所述多个内核122可包括多个单独的芯片,或者可包括配有多个内核的单个芯片。所述逻辑单元120还可包括包调度器124、入口队列126、任务队列127和顺序队列128。可以使用硬件、软件或二者结合实现所述包调度器124。为了减少所述内核122之间的竞争,可动态改变所述包调度器124,以改变所述内核122访问所述入口队列126、所述任务队列127和所述顺序队列128的方式。当两个或多个内核124试图锁定/更新同一个数据结构时,内核122之间会出现竞争。内核122之间的竞争可能大幅降低所述网络单元100的性能。所述入口队列126可包括多个入口包。所述任务队列127可包括多个任务队列,其中,每个任务队列与O到多个不同任务对应。所述顺序队列128可包括任务,其中所述任务可按照其在所述顺序队列128中的出现顺序进行处理。在存储器或数据存储器中,每个所述入口队列126、每个所述任务队列127以及顺序队列128可包括先进先出(FIFO)的数据结构。所述网络单元100还可包括与发射器(Tx) 132耦合的一个或多个出端口或单元130,其中,所述发射器132用于向其它网络部件传输信号、数据包以及帧/数据。所述网络单元100的部件可按照图1所示进行部署,或者可根据其它实施例进行配置。
[0018
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1