具有高效工作排队的处理器的制造方法

文档序号:6497136阅读:219来源:国知局
具有高效工作排队的处理器的制造方法
【专利摘要】提交至协处理器的工作进入通过多个输入队列之一,用于提供不同服务质量等级。响应于网络服务处理器中缺乏处理资源,内存中链表存储该网络服务处理器有待执行的工作。响应于该网络服务处理器中的处理资源的可获得性,将该工作从这些内存中链表移回至该网络服务处理器。
【专利说明】具有高效工作排队的处理器
[0001]相关申请的交叉引用
[0002]本申请是于2011年10月17日提交的美国13/274,767号申请的继续申请。
[0003]上述一个或多个申请的整体教导通过引用结合于此。
【背景技术】
[0004]在大多数操作系统中,输入队列用于处理资源的操作系统调度和分配中。输入队列通常包括一个有待执行的工作集并且经常进行以下处理:清除从队列的头端传出的工作并向队列的尾端添加任何传入工作。取决于操作系统,可以使用各种技术处理输入队列中存储的工作。例如,可以使用多种技术,如先来先服务、循环调度、优先级调度和自定义调度等。无论操作系统所使用的排队和调度技术如何,当有待执行的工作在队列中等待执行时,会发生排队延迟。

【发明内容】

[0005]根据某些实施例,网络服务处理器包括执行包括多个数据包处理操作的工作的多个网络服务处理器元件和多个内存中链表。每个单独的数据包处理操作可以定义一份工作。响应于这些网络服务处理器元件中缺乏处理资源,这些内存中链表存储该网络服务处理器元件有待执行的工作。响应于该网络服务处理器元件中的处理资源的可获得性,将该工作从这些内存中链表移回至这些网络服务处理器元件。
[0006]在一些实施例中,这些内存中链表可以形成在网络服务处理器内存的独立于对该有待执行的工作进行描述和处理的多个部分的一部分内。这些内存中链表可以包括一个动态随机存取内存。该有待执行的工作可以存储在一个内存中链表的输入队列中。该网络服务处理器可以维持指向这些内存中链表中的多个可用存储位置的多个指针。该有待执行的工作可以存储在一个指针指示的一个可用存储位置处。该网络服务处理器将该有待执行的工作存储在该可用存储位置的输入队列的尾部。该网络服务处理器可以用该指针对指向该输入队列的尾部的一个第二指针进行更新。
[0007]在某些实施例中,响应于该网络服务处理器中的处理资源的可获得性,该网络服务处理器可以从一个可用的存储位置检索该有待执行的工作。该网络服务处理器可以从该可用的存储位置的输入队列头部检索该有待执行的工作。当检索到该有待执行的工作时,该网络服务处理器可以释放该指针。该网络服务处理器可以用从所检索到的工作获得的一个新指针对指向该输入队列的头部的一个第二指针进行更新。
[0008]在一些实施例中,该网络服务处理器可以在一个空闲池分配器中维持指向这些内存中链表内的多个可用存储位置的多个指针。该空闲池分配器可以被维持在一个动态随机存取内存中。响应于该网络服务处理器中缺乏处理资源,该网络服务处理器可以从该空闲池分配器获得一个指向这些内存中链表内的一个可用存储位置的指针。
[0009]在某些实施例中,在被存储在一个内存中链表之前,该网络服务处理器有待执行的工作可以被封装到一个预先确定大小的缓冲区内。当被从这些内存中链表移回到该网络服务处理器时,该网络服务处理器有待执行的工作可以被解封装到多个单独的数据包。
[0010]在一些实施例中,该网络服务处理器可以针对每份工作维持一个工作队列条目。该网络服务处理器可以维持指向这些内存中链表中的可用存储空间的预先确定数量的指针。这些预先确定数量的指针可以是该网络服务处理器维持的工作队列条目的总数量的一个子集。
【专利附图】

【附图说明】
[0011]根据本发明的示例性实施例的以下更具体的说明,上述内容将是明显的,如在这些附图中所展示的,其中贯穿这些不同的视图的相同的参照字符是指相同的部分。这些图不一定是按比例绘制,而是着重展示本发明的实施例。
[0012]图1是一个网络服务处理器的框图。
[0013]图2A为调度/同步及顺序(SSO)模块的图示。
[0014]图2B为调度/同步及顺序(SSO)模块的内部架构的图示。
[0015]图3展示了对工作队列指针的格式要求。
[0016]图4为可以与本发明一起使用的工作队列条目缓冲区的图示。
[0017]图5为本发明的一个实施例的高级图示。
【具体实施方式】
[0018]以下是对本发明的示例性实施例的说明。
[0019]在详细说明本发明的示例实施例之前,下面紧接着描述了一种可以在其中执行这些实施例的示例网络安全处理器,以帮助读者理解本发明的创造性特征。
[0020]图1是一个框图,展示了一个网络服务处理器100。该网络服务处理器100使用至少一个处理器内核120提供高应用性能。下述网络服务处理器100的各元件在下文共同作为“网络服务处理器元件”或“处理器元件”而被引用。
[0021]该网络服务处理器100处理在所接收的数据包中封装的开放系统互联网络L2-L7层协议。如本领域技术人员所熟知的,开放系统互联(OSI)参考模型定义了七层网络协议层(L1-7)。物理层(LI)表示将一台设备连接到一个传输媒介的实际接口,包括电气接口及物理接口。数据链路层(L2)执行数据组帧。网络层(L3)将数据格式化为数据包。传输层(L4)处理端到端的传输。会话层(L5)管理设备之间的通信,例如,无论通信是半双工的还是全双工的。表现层(L6)管理数据格式化及表现,例如,语法、控制代码、特殊图形及字符集。应用层(L7)允许多个用户之间的通信,例如,文件传送及电子邮件。
[0022]网络服务处理器100可以为上层网络协议(例如,L4-L7)调度和排列工作(数据包处理操作),并且允许在接收到的待执行的数据包中进行上层网络协议的处理,以便以线速转发数据包。线速是在传输和接收数据的网络上传送数据的速率。通过处理这些协议来以线速转发这些数据包,该网络服务处理器不会降低网络数据传送速率。
[0023]多个接口单元122接收到一个数据包以进行处理。PCIe接口 124也可以接收一个数据包。这些接口单元122通过检查所接收到的数据包中包括的L2网络协议报头中的各种字段来执行所接收到的数据包的预处理,并且然后将该数据包转发到一个数据包输入单元126。至少一个接口单元122a可以从多个X附接单元接口(XAUI)、精简X附接单元接口(RXAUI)、或系列千兆媒体独立接口(SGMII)接收数据包。至少一个接口单元122b可以从一个茵特拉肯接口(ILK)接收连接。
[0024]该数据包输入单元126执行所接收的数据包中包括的网络协议头(例如L3及L4头)的进一步的预处理。该预处理包括对于TCP/用户数据报协议(UDP) (L3网络协议)的校验和检查。
[0025]一个空闲池分配器128维持多个指针池,以释放2级高速缓存内存130及外部DRAM108中的内存。该数据包输入单元126使用这些指针池中的一个来将所接收到的数据包数据存储在2级高速缓存内存130或外部DRAM108中,并且使用这些指针池中的另一个来为这些处理器内核120分配工作队列条目。
[0026]数据包输入单元126然后将数据包数据写入2级高速缓存130或外部DRAM108中的缓冲区中。优选地,该数据包数据被以便于在这些处理器内核120中的至少一个中执行的高层软件的格式写入这些缓冲区中。因此,促进了高级网络协议的进一步处理。
[0027]网络服务处理器100还可包括一个或多个特定用途协处理器。当包括在内时,这些协处理器将一些处理从这些内核120中分流,由此使得该网络服务处理器能够实现高通量数据包处理。例如,提供了一个压缩/解压缩协处理器132,专用于执行所接收到的数据包的压缩及解压缩。协处理单元的其他实施例包括RAID/De-Dup单元162,这加快了磁盘存储应用程序的数据分块及数据复制处理。
[0028]另一个协处理器是超级有限自动机(HFA)单元160,该单元包括多个专用HFA线程引擎,这些引擎被适配成用于加快防病毒、入侵检测系统及其他内容处理应用程序所必需的模式和/或特征匹配。使用一个HFA单元160,模式和/或特征匹配得到加快,例如被以超过每秒万兆比特的倍数的速率执行。该HFA单元160在一些实施例中可包括确定型有限自动机(DFA)、非确定型有限自动机(NFA)、或HFA算法单元中的任一个。
[0029]一个I/O接口 136管理整体协议及仲裁并且提供一致的I/O划分。该I/O接口136包括一个I/O桥138及一个获取及添加单元140。该I/O桥包括两个桥,一个I/O数据包桥(IOBP) 138a及一个I/O总线桥(IOBN) 138b。该I/O数据包桥138a被配置成用于管理整体协议及仲裁并且提供主要与数据包输入及输出相一致的I/O划分。I/O总线桥138b被配置成用于管理整体协议及仲裁并且提供主要与该I/O总线相一致的I/O划分。该获取及添加单元140中的寄存器用来维持那些用于通过一个数据包输出单元146转发已处理的数据包的输出队列的长度。该I/O桥138包括多个缓冲队列,用于存储有待在一个一致内存互联(CMI) 144、一个I/O总线142、该数据包输入单元126及该数据包输出单元146之间传送的信息。
[0030]各种各样的I/O接口(M10)116可包括多个辅助接口,如通用I/0(GP10)、闪存、IEEE802 二线管理接口(MDIO)、串行管理中断(SMI)、通用异步收发两用机(UART)、精简千兆比特媒体独立接口(RGMII)、媒体独立接口(MII)、二线串行接口(TWSI)及其他串行接□。
[0031]网络服务提供者100还可包括一个支持MIPS EJTAG标准的联合测试行动组(“JTAG”)接口 123。根据JTAG及MIPS EJTAG标准,该网络服务提供者100内的多个内核将各自具有一个内部测试访问端口( “TAP”)控制器。这允许对该网络服务提供者100的多核调试支持。[0032]一个调度/同步及顺序(SSO)模块148为这些处理器内核120排列并调度工作。通过将一个工作队列条目加入到一个队列来排列工作。例如,该数据包输入单元126为每次数据包的到来添加一个工作队列条目。一个定时器单元150用来为这些处理器内核120
调度工作。
[0033]处理器内核120从SSO模块148请求工作。SSO模块148为这些处理器内核120的其中之一选择(即,调度)工作,并且将一个指针返回到该工作队列条目以向该处理器内核120描述该项工作。
[0034]处理器内核120依次包括指令高速缓存152、I级数据高速缓存154、及加密加速156。在一个实施例中,该网络服务处理器100包括32个超标量精简指令集计算机(RISC)型处理器内核120。在一些实施例中,这些超标量RISC型处理器内核120各自包括MIPS643版处理器内核的一个扩展。在一个实施例中,这些超标量RISC型处理器内核120各自包括一个cnMIPS II处理器内核。
[0035]2级高速缓存内存130及外部DRAM108被所有的处理器内核120及I/O协处理器设备共享。每个处理器内核120由该CMI144偶联到该2级高速缓存内存130。该CMI144是用于这些处理器内核100、该I/O接口 136和该2级高速缓存内存130及控制器之间的所有内存及I/O事务的通信信道。在一个实施例中,该CMI144可扩展到32个处理器内核120,通过完全写入支持完全一致的-1级数据高速缓存154。优选地,该CMI144被高度缓冲了区分I/O优先级的能力。该CMI偶联到一个轨迹控制单元164,该轨迹控制单元被配置成用于捕获总线请求,这样软件随后可以读取该请求并且在该CMI上生成事件顺序的轨迹。
[0036]2级高速缓存内存控制器131维持内存参考一致性。它针对每个填写请求返回一个块的最新副本,无论该块是存储在2级高速缓存内存130中、在外部DRAM108中、还是在“飞行中”。它还针对每个处理器内核120中的数据高速缓存154存储了这些标签的复制本。它将高速缓存-块-存储请求的地址与这些数据-高速缓存标签比较,并且每当一个存储指令通过该I/O接口 136来自另一个处理器内核或来自一个I/O组件时使一个数据-高速缓存标签对于一个处理器内核120无效(两个副本)。
[0037]在一些实施例中,多个DRAM控制器133支持高达128千兆字节的DRAM。在一个实施例中,该多个DRAM控制器包括四个DRAM控制器,这些DRAM控制器各自支持32千兆字节的DRAM。优选地,每个DRAM控制器133支持到DRAM108的一个64比特接口。此外,DRAM控制器133可以支持优选的协议,如DDR-1II协议。
[0038]在这些处理器内核120处理一个数据包后,数据包输出单元146从2级高速缓存内存130、108中读取该数据包数据,执行L4网络协议后处理(例如,生成一个TCP/UDP校验和),通过这些接口单元122或PCIe接口 124转发该数据包并且释放该数据包使用的L2高速缓存内存130/DRAM108。
[0039]这些DRAM控制器133管理发向/来自该DRAM108的飞行中事务(负载/存储)。在一些实施例中,这些DRAM控制器133包括四个DRAM控制器,该DRAM108包括四个DRAM内存,并且每个DRAM控制器连接到一个DRAM内存。DFA单元160在一个旁路高速缓存访问路径135上直接偶联到这些DRAM控制器133。该旁路高速缓存访问路径135允许该HFA单元不使用2级高速缓存内存130而直接从DRAM内存108读取,这可以提高HFA操作的效率。[0040]图2A为调度/同步及顺序(SSO)模块148的图示。调度/同步及顺序(SSO)模块148起到协处理器的作用,该协处理器提供多种重要的功能,如工作排队、工作调度/去调度、以及工作的排序和同步。
[0041]每份工作由一个相关联的工作队列条目进行描述,该工作队列条目可以由或者硬件单元(即,图1中所示的网络服务处理器100的片上单元)或内核软件(即,由这些片上单元执行的指令)创建。例如,在一些实施例中,集中式数据包输入硬件创建一个工作队列条目并针对每个数据包到来而提交工作。进一步地,内核软件可以创建工作队列条目并根据需要提交工作。
[0042]这些协处理器(参照图1早前描述的)可以提供不同等级的服务质量(QOS)。确切地,可以使用多个输入工作队列并且可以使用不同的默认值和优先级将传入的数据包分类到该多个输入工作队列之一中。进一步地,为了提供所希望的服务质量,可以在被缓冲和提交给内核之前丢弃某些输入数据包。例如,随机早期丢弃(RED)算法或阈值算法来决定何时或是否丢弃输入数据包。针对不同的服务质量等级,可以不同地对此丢弃机制进行配置。
[0043]通过将一个工作条目加入到一个队列来对每份工作进行排队。取决于所希望的服务质量,可以使用不同的优先级来输出存储在队列中的工作。例如,可以使用排队方案,如静态优先级和加权循环。
[0044]每份工作经常流经图2A中所示的状态210、220、230。确切地,每份工作首先在输入队列210中,进入飞行220、并且最后不被调度或完成230。在任何给定时间,由于一份工作可以被调度至一个具体的处理器内核120,调度项目的数量受到处理器内核的数量的限制。正在执行未调度工作或已经完成其调度工作而还没有请求新工作的处理器内核可以被认为是一个未调度内核。调度工作是SSO飞行工作220的一个子集。任何内核可以在任何点225处对已调度的项目进行去调度。任何去调度的工作保持在飞行状态下并且稍后被重新调度。
[0045]尽管SSO单元148大小有限,SSO单元148通过维持L2/DRAM(内存中)链表和当需要时溢流到L2/DRAM来维持一个无限输入工作排队的外观。确切地,在没有处理空间的情况下,SSO单元148将这些输入队列条目添加到网络服务处理器100维持的一个L2/DRAM列表。如果当添加工作时在SSO单元148中空间可用,SSO单元148立即内部地缓冲该工作并避免内存列表的开销。如果SSO单元148将工作放在内存列表内,空间一变得可用,其稍后自动地按照原始添加该工作的顺序将该工作从L2/DRAM移到SSO单元148内。
[0046]如上所述,SSO单元148通过向队列添加工作队列条目来对每份工作进行排队。L2/DRAM中的此工作队列条目是对每份工作进行描述的主描述符。当向队列添加工作队列条目时或当将工作从内存输入队列210移到SSO单元148中的SSO条目时,SSO单元148可以读取/写入到包含该工作队列条目的L2/DRAM位置。
[0047]典型地,SSO单元148只需要维持指向该工作队列条目的一个工作队列指针(WQP) 300 (稍后在图2B和图3中示出)。该工作队列指针可以是指向合法工作队列条目的L2/DRAM内的64比特对齐指针。当一个内核可用于处理新工作时,SSO单元148存储该WQP并使用此指针。确切地,当网络服务处理器100的处理器元件针对现有工作队列结构添加输入队列条目210 (图2A中所示的ADDWQ指令),SSO单元148读到包含被指向的工作队列条目的L2/DRAM位置。
[0048]图2B为调度/同步及顺序(SSO)单元148的内部架构的图示。出于说明目的,示出了五个假设内核,然而,本发明的示例实施例可以利用不同数量的内核。
[0049]如以上解释的,SSO单元148条目可以在输入队列210中、在飞行状态220下、附接到未调度状态221下的内核上、或在空闲列表222内。SSO单元148的每个条目至少包含以下信息:
[0050]一个指向L2/DRAM (WQP)中的工作队列条目的指针300
[0051]当前标签301和标签类型
[0052]当前组(稍后在图3中示出)
[0053]将该条目链接到不同列表上的指针209
[0054]在图2B中所示的示例中,SSO单元148架构包括多个输入队列210。每个输入队列包括一个内存列表和一个单元中列表。当SSO单元148向该单元内添加新工作时,其分配一个内部SSO单元条目233并用所需信息填写条目233。一旦内部SSO条目233被分配给一份工作,该工作保 持在SSO单元148内,同时其在输入队列210内或在飞行状态220下,直到其完成或不被调度。那个点后,SSO条目233不能溢流到L2/DRAM。内核操作仅引起SSO条目233附接到具体的内核/从其分离,并且在多个列表之间移动。
[0055]一旦SSO单元148加载了一份工作,其不再读取或写入L2/DRAM中的工作队列条目位置。仅当工作在输入队列210中时才使用L2/DRAM中的工作队列条目,但当该工作在SSO单元148内时,绝不使用。当工作队列指针在SSO单元148内时,SSO单元148在所有点处都携带着该工作队列指针,因为该工作队列指针间接地对需要执行的实际工作进行描述。
[0056]将飞行中的条目220组织在先进先出(FIFO)顺序列表224中,其中一个FIFO条目与每个唯一飞行中的标签和标签类型值组合相关联。当该SSO硬件或者从输入队列210调度工作或从未调度221内核状态切换时,工作进入FIFO列表224。
[0057]可以对SSO单元148中的内核进行调度以对未调度状态221下的飞行中的条目220和或自由状态222下的附接SSO条目233进行处理。
[0058]图3展示了对工作队列指针300的格式要求。用“Q0S”、“Grp”、“TT”和“Tag”标记的字段指示分别对应于每份工作的服务质量、组、标签类型、以及标签。该SSO硬件仅读取QOS、Grp、TT字段以及如被用于硬件ADDWQ情况的SSO软件适当设置的这些字段。如以上注意到的,当一个内核可用于对工作进行处理时,该SSO硬件存储工作队列指针300并将指针300发送至该工作。
[0059]图4为可以与本发明一起使用的工作队列条目缓冲区的图示。如上所述,提交至协处理器的工作进入通过输入队列210 (图2A中所示)并被相关联工作队列条目(WQE)描述。这些输入工作排队可以任意大。
[0060]在一些实施例中,可以用指向空L2闻速缓存行的指针的空闲列表对该网络服务处理器进行初始化。高速缓存行可以被安排在具有预先确定大小的包(bundle)内。例如,
在一个实施例中,该软件用多个S + 48 + roundup (?空闲指针对硬件进行初始化,其
中与应用程序可以使用的工作队列条目一样多N。[0061]这些空闲指针中的一些指针可以作为片上寄存器被存储并且起到内存中链表的头指针和尾指针的作用。其他指针可以存储在L2/DRAM中的空闲页面分配器池(图1中所示的FPA128)内。
[0062]当初始化时,用于给定输入队列的内存中链表是空的,并且每个输入队列的头指针和尾指针相同。如果片上空间可用,该硬件立即内部地缓冲该工作并避免该内存中链表的开销。在片上没有空间可用的情况下,SSO单元148将工作引导至内存中链表。确切地,如果片上空间不可用,SSO单元148从FPA128(图1)预获取一个空闲指针并将该工作队列
条目(例如,WQE0、WQE1......)插入到一个内部缓冲区中,同时按照队列条目(例如,WQE0、
WQEl......)对连续的传入工作项进行封装(压缩)直到具有足够数量的工作队列条目来
形成用于存储在L2/DRAM高速缓存行中的比特封装包。SSO单元148将比特封装包410、420、430(加上该空闲指针)存储到该输入队列链表的尾部处的L2/DRAM。为了更快速的检索,SSO单元148可以选择仅将比特封装包410、420、430存储到L2。一旦存储了比特封装包410、420、430,用该空闲指针对包410、420、430的尾指针440进行更新。外部输入队列中保持的条目形成工作队列条目包410、420、430的链表。在某些实施例中,可以针对每个服务等级包括至少一个外部输入队列。在一个实施例中(图4中所示),每个工作队列条目包可以包含比特封装到一个256字节的内存块中的26个工作队列条目。
[0063]一旦片上处理空间可用,该硬件自动地从L2/DRAM移回该工作以便按照原始添加该工作的顺序进行处理。确切地,该硬件从该L2/DRAM中的输入队列链表的头指针450读取比特封装包410、420、430并同时解封装和解压缩包410、420、430。一旦解封装了该包,SSO单元148就将头指针450释放到FPA128 (图1所示)并用从该解封装包410、420、430检索的下一个指针对头指针450进行更新。
[0064]图5为本发明的一个实施例的高级图示。如图5中所示,网络服务处理器100包括执行包括数据包处理操作的工作的多个独立处理器内核120和多个内存中链表501,这些内存中链表被安排成用于响应于该处理器内核中缺乏处理资源而存储处理器内核120有待执行的工作。响应于处理内核中的处理资源的可获得性,将工作从内存中链表501移回至处理器内核120。这些内存中链表501可以形成在处理器内核内存120的独立于对该有待执行的工作进行描述和处理的多个部分的一部分内。
[0065]该有待执行的工作存储在一个内存中链表501的一个输入队列(未不出)中。内存中链表501可以存储在动态随机存取内存(DRAM) 108内或L2高速缓存130内。
[0066]如之前解释的,网络服务处理器100维持多个指针,这些指针通过空闲池分配器单元128分配、指向内存中链表501中的多个可用的存储位置。如果处理空间不可用,处理器100从FPA128预获取一个空闲指针并将一个工作队列条目插入到一个内部缓冲区(未示出)。处理器100同时封装多个连续的工作队列条目,直到预先确定大小的工作队列条目的封装包具有足够的工作队列条目。一旦形成,该封装包存储在L2高速缓存130 (或DRAM108)中的内存中链表501的尾部处。一旦存储了该封装包,用该空闲指针对该包的尾指针进行更新。
[0067]一旦处理资源变得可获得,网络服务处理器100就从内存中链表501的头部检索有待执行的工作并释放指向所检索到的工作的指针。也用从所检索到的工作获得的新指针对指向内存中链表501的头部的指针进行更新。[0068]虽然本发明参考其示例性的实施例已经进行了具体显示和描述,本领域的技术人员应当理解的是,在不偏离由所附权利要求书所包括的本发明的范围下,可以在其中做出在形式和细节方面的多种改变。
【权利要求】
1.一种网络服务处理器,包括: 多个网络服务处理器元件,这些元件执行包括多个数据包处理操作的工作;以及 多个内存中链表,被安排成用于响应于该网络服务处理器中缺乏处理资源而存储这些网络服务处理器元件有待执行的工作,并且响应于该网络服务处理器中的处理资源的可获得性,将该工作从这些内存中链表移回至该网络服务处理器。
2.如权利要求1所述的网络服务处理器,其中,这些内存中链表可以形成在网络服务处理器内存的独立于对该有待执行的工作进行描述和处理的多个部分的一个部分内。
3.如权利要求1所述的网络服务处理器,其中,该有待执行的工作存储在一个内存中链表的一个输入队列中。
4.如权利要求1所述的网络服务处理器,其中,这些内存中链表包括动态随机存取内存。
5.如权利要求1所述的网络服务处理器,其中,该网络服务处理器可以维持指向这些内存中链表中的多个可用存储位置的多个指针。
6.如权利要求5所述的网络服务处理器,其中,该网络服务处理器将该有待执行的工作存储在一个指针指示的一个可用存储位置。
7.如权利要求6所述的网络服务处理器,其中,该网络服务处理器将该有待执行的工作存储在该可用存储位置的一个输入队列的尾部。
8.如权利要求7所述的网络服务处理器,其中,该网络服务处理器可以用该指针对指向该输入队列的尾部的一个第二指针进行更新。
9.如权利要求5所述的网络服务处理器,其中,响应于该网络服务处理器中的处理资源的可获得性,该网络服务处理器从一个可用的存储位置检索该有待执行的工作。
10.如权利要求9所述的网络服务处理器,其中,该网络服务处理器从该可用存储位置的一个输入队列的头部检索该有待执行的工作。
11.如权利要求10所述的网络服务处理器,其中,当检索到该有待执行的工作时,该网络服务处理器释放该指针。
12.如权利要求10所述的网络服务处理器,其中,该网络服务处理器用从所检索到的工作获得的一个新指针对指向该输入队列的头部的一个第二指针进行更新。
13.如权利要求1所述的网络服务处理器,其中,该网络服务处理器可以在一个空闲池分配器中维持指向这些内存中链表内的可用存储位置的多个指针。
14.如权利要求13所述的网络服务处理器,其中,该空闲池分配器被维持在一个动态随机存取内存中。
15.如权利要求13所述的网络服务处理器,其中,响应于该网络服务处理器中缺乏处理资源,该网络服务处理器可以从该空闲池分配器获得一个指向这些内存中链表内的一个可用存储位置的指针。
16.如权利要求1所述的网络服务处理器,其中,在被存储在一个内存中链表之前,该网络服务处理器有待执行的工作可以被封装到一个预先确定大小的缓冲区内。
17.如权利要求1所述的网络服务处理器,其中,当被从这些内存中链表移回到该网络服务处理器时,该网络服务处理器有待执行的工作可以被解封装到多个单独的数据包。
18.如权利要求1所述的网络服务处理器,其中,每个单独的数据包处理操作限定一份工作。
19.如权 利要求18所述的网络服务处理器,其中,该网络服务处理器针对每份工作维持一个工作队列条目。
20.如权利要求19所述的网络服务处理器,其中,该网络服务处理器维持指向这些内存中链表中的可用存储空间的预先确定数量的指针,这些预先确定数量的指针是该网络服务处理器维持的工作队列条目的总数量的一个子集。
21.—种方法,包括: 响应于一个网络服务处理器中缺乏处理资源而维持多个内存中链表,这些内存中链表被安排成用于存储该网络服务处理器有待执行的工作;以及 响应于该网络服务处理器中的处理资源的可获得性,将该网络服务处理器有待执行的工作从这些内存中链表移回至该网络服务处理器。
22.如权利要求21所述的方法,进一步包括在网络服务处理器内存的独立于对该有待执行的工作进行描述和处理的多个部分的一个部分内形成这些内存中链表。
23.如权利要求21所述的方法,进一步包括将该有待执行的工作存储在一个内存中链表的一个输入队列中。
24.如权利要求21所述的方法,其中,这些内存中链表包括动态随机存取内存。
25.如权利要求21所述的方法,进一步包括在该网络服务处理器中维持指向这些内存中链表中的多个可用存储位置的多个指针。
26.如权利要求21所述的方法,进一步包括将该有待执行的工作存储在一个指针指示的一个可用存储位置处。
27.如权利要求26所述的方法,进一步包括将该有待执行的工作存储在该可用存储位置的一个输入队列的尾部。
28.如权利要求27所述的方法,进一步包括用该指针对指向该输入队列的尾部的一个第二指针进行更新。
29.如权利要求25所述的方法,进一步包括响应于该网络服务处理器中的处理资源的可获得性,从一个可用的存储位置检索该有待执行的工作。
30.如权利要求29所述的方法,进一步包括从该可用存储位置的一个输入队列的头部检索该有待执行的工作。
31.如权利要求30所述的方法,进一步包括当检索到该有待执行的工作时,释放该指针。
32.如权利要求30所述的方法,进一步包括用从所检索到的工作获得的一个新指针对指向该输入队列的头部的一个第二指针进行更新。
33.如权利要求21所述的方法,进一步包括在一个空闲池分配器中维持指向这些内存中链表中的可用存储位置的多个指针。
34.如权利要求33述的方法,进一步包括在一个动态随机存取内存中维持该空闲池分配器。
35.如权利要求33述的方法,进一步包括响应于该网络服务处理器中缺乏处理资源而从该空闲池分配器获得一个指向这些内存中链表内的一个可用存储位置的指针。
36.如权利要求21述的方法,进一步包括在被存储在一个内存中链表之前,将该有待执行的工作封装到一个预先确定大小的缓冲区内。
37.如权利要求21述的方法,进一步包括当被从这些内存中链表移回到该网络服务处理器时,将该有待执行的工作解封装到多个单独的数据包。
38.如权利要求21所述的方法,其中,每个单独的数据包处理操作限定一份工作。
39.如权利要求38所述的方法,进一步包括针对每份工作维持一个工作队列条目。
40.如权利要求39所述的方法,进一步包括维持指向这些内存中链表中的可用存储空间的预先确定数量的指针,这些预先确定数量的指针是该网络服务处理器维持的工作队列条目的总数量的一个子集。
【文档编号】G06F9/50GK103946803SQ201280056472
【公开日】2014年7月23日 申请日期:2012年9月19日 优先权日:2011年10月17日
【发明者】R·E·凯斯勒, A·马赫施瓦利, R·桑祖恩 申请人:凯为公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1