用于支持网络环境中高效的分组处理模型和用于分组处理的优化的缓冲区利用的系统和方法_3

文档序号:9925291阅读:来源:国知局
h2的描述符线性数组811。此外,具有资源号2的DMA资源可以指向具有头部地址h3的描述符线性数组812。这里,描述符线性数组811-812不与分组缓冲区并置。
[0065]此外,系统允许分组缓冲区根据预先配置的次序进行处理。例如,系统可以为具有资源号3的DMA资源把Order值设置为2,以便迫使硬件引擎在与描述符线性数组812相关联的分组缓冲区之前处理与描述符线性数组811相关联的分组缓冲区(如示出为从描述符线性数组811指向描述符线性数组812的箭头820)。
[0066]根据本发明的实施例,系统可以一次处理多个分组,而无需在序列中单独地处理每个分组。因此,利用描述符线性数组,系统可以提供低等待时间,这例如作为高速缓存高效方案会是有利的。
[0067]图9示出了根据本发明的实施例的、在联网设备中利用链表和线性数组的混合来支持灵活的分组处理的示图。如在图9中所示,联网设备900中的空闲DMA资源池910可以维护一个或多个DMA资源。此外,每个DMA资源可以与若干个不同的属性相关联,诸如RID、Order、HeadAddr、HeadLen和Array/Linked。这里,RID属性可以包含分配给缓冲区链的资源编号,并且Order属性可以指示特定的缓冲区链被配置为在另一个缓冲区链之后被处理。
[0068]根据本发明的实施例,在空闲池910中的不同DMA资源可以与不同类型的缓冲区链相关联。
[0069]例如,具有资源号2的DMA资源可以指向具有头部地址h2的描述符线性数组911,其中每个描述符可以指向分组。类似地,具有资源号32的DMA资源可以指向具有头部地址h2的描述符线性数组912,其中每个描述符可以指向分组。
[0070]此外,与资源号I相关联的DMA资源可以指向分组缓冲区链表,其开始于具有头部地址hi的分组缓冲区913。在链表数据结构内,与描述符并置的分组缓冲区913可以指向另一个分组缓冲区915。类似地,与资源号32相关联的DMA资源可以指向开始于具有头部地址h32的分组缓冲区917的分组缓冲区链表。此外,与描述符并置的分组缓冲区917可以指向链表数据结构中的其它分组缓冲区918和919。
[0071]此外,系统允许分组缓冲区根据预先配置的次序进行处理(如示为从描述符线性数组911指向描述符线性数组912的箭头921,以及从分组缓冲区915指向分组缓冲区917的箭头922)。
[0072]根据本发明的实施例,系统可以动态地确定哪种类型的缓冲区链可以被分配为用于做出请求的软件线程。这种确定可以基于存储器使用和特定分组处理线程的等待时间要求的平衡。例如,如果特定的分组处理线程对存储器使用更敏感,则系统可以分配基于链表的缓冲区链。否则,当特定的分组处理线程对等待时间更敏感时,系统可以分配基于线性数组的缓冲区链。
[0073]图10示出了根据本发明的实施例的、用于在联网设备中支持用于分组处理的高效缓冲区利用的示例性流程图。如在图10中所示,在步骤1001,系统可以提供网络设备上的存储器中的多个分组缓冲区。此外,在步骤1002,系统可以提供直接存储器存取(DMA)资源池,其中所述DMA资源池包括一个或多个DMA资源,其中所述DMA资源池中的每个所述DMA资源指向存储器中的分组缓冲区链。然后,在步骤1003,每个所述DMA资源允许分组处理线程利用预先分配给分组处理线程的线程密钥来访问存储器中的分组缓冲区链。
[0074]本发明的实施例包括用于支持网络设备中的高效分组处理的系统,包括:在网络设备上的存储器中的多个分组缓冲区;直接存储器存取(DMA)资源池,其中所述DMA资源池包括一个或多个DMA资源,其中所述DMA资源池中的每个所述DMA资源指向存储器中的分组缓冲区链;以及其中每个所述DMA资源允许分组处理线程利用预先分配给分组处理线程的线程密钥来访问存储器中的分组缓冲区链。
[0075]如以上所提供的系统,其中所述分组处理线程操作来利用同一预先分配的线程密钥访问存储器中的多个分组缓冲区链。
[0076]如以上所提供的系统,其中所述分组处理线程操作来在所述多个分组缓冲区链中设置用于处理分组的相关性列表。
[0077]如以上所提供的系统,其中多个分组处理线程操作来并发地访问存储器中的不同分组缓冲区链。
[0078]如以上所提供的系统,其中至少一个DMA资源指向分组缓冲区链表。
[0079]如以上所提供的系统,其中在链表中的每个分组缓冲区与描述符并置。
[0080]如以上所提供的系统,其中至少一个DMA资源指向描述符线性数组。
[0081]如以上所提供的系统,其中描述符线性数组中的每个描述符指向分组缓冲区。
[0082]如以上所提供的系统,其中所述多个分组缓冲区基于链表和线性数组的混合进行组织。
[0083]如以上所提供的系统,其中所述DMA资源池操作来动态地确定分组处理线程是应该基于链表还是应该基于线性数组访问缓冲链。
[0084]本发明的实施例包括用于支持网络环境中的高效分组处理的方法,包括:提供网络设备上的存储器中的多个分组缓冲区;提供直接存储器存取(DMA)资源池,其中所述DMA资源池包括一个或多个DMA资源,其中所述DMA资源池中的每个所述DMA资源指向存储器中的分组缓冲区链;以及经由每个所述DMA资源允许分组处理线程利用预先分配给分组处理线程的线程密钥访问存储器中的分组缓冲区链。
[0085]如以上所提供的方法,还包括允许所述分组处理线程利用同一预先分配的线程密钥访问存储器中的多个分组缓冲区链。
[0086]如以上所提供的方法,还包括允许所述分组处理线程在所述多个分组缓冲区链中设置用于处理分组的相关性列表。
[0087]如以上所提供的方法,还包括允许多个分组处理线程并发地访问存储器中的不同分组缓冲区链。
[0088]如以上所提供的方法,还包括允许至少一个DMA资源指向分组缓冲区链表。
[0089]如以上所提供的方法,还包括允许链表中的每个分组缓冲区与描述符并置。
[0090]如以上所提供的方法,还包括允许至少一个DMA资源指向描述符线性数组。
[0091]如以上所提供的方法,还包括允许描述符线性数组中的每个描述符指向分组缓冲区。
[0092]如以上所提供的方法,还包括基于链表和线性数组的混合组织所述多个分组缓冲区,并且动态地确定分组处理线程是应该基于链表还是应该基于线性数组访问缓冲区链。
[0093]本发明的实施例包括具有指令存储在其上的非临时性计算机可读存储介质,当指令被执行时,使得系统执行步骤,包括:提供网络设备上的存储器中的多个分组缓冲区;提供直接存储器存取(DMA)资源池,其中所述DMA资源池包括一个或多个DMA资源,其中所述DMA资源池中的每个所述DMA资源指向存储器中的分组缓冲区链;以及经由每个所述DMA资源允许分组处理线程利用预先分配给分组处理线程的线程密钥访问存储器中的分组缓冲区链。
[0094]本发明的许多特征可以在硬件、软件、固件或其组合中、利用硬件、软件、固件或其组合、或者在硬件、软件、固件或其组合的帮助下执行。因此,本发明的特征可以利用(例如,包括一个或多个处理器的)处理系统来实现。
[0095]本发明的特征可以在计算机程序产品中、利用计算机程序产品、或者在计算机程序产品的帮助下执行,其中计算机程序产品是具有其上/其中存储有可用来编程处理系统以执行本文所呈现的任何特征的指令的存储介质或计算机可读介质。存储介质可以包括,但不限于,任何类型的盘,包括软盘、光盘、DVD、CD-R0M、微驱动器、以及磁光盘、R0M、RAM、EPR0M、EEPR0M、DRAM、VRAM、闪光存储器设备、磁或光卡、纳米系统(包括分子存储器1C)、或适于存储指令和/或数据的任何类型的媒体或设备。
[0096]存储在任何一种机器可读介质中,本发明的特征可以被结合到软件和/或固件中,用于控制处理系统的硬件,并且用于使处理系统能够利用本发明的结果与其它机制交互。这种软件或固件可以包括,但不限于,应用代码、设备驱动程序、操作系统和执行环境/容器。
[0097]本发明的特征也可以利用例如诸如专用集成电路(ASIC)的硬件部件在硬件中实现。硬件状态机的实现使得执行本文所描述的功能对相关领域的技术人员将是显而易见的。
[0098]此外,本发明可以方便地利用一个或多个常规的通用或专用数字计算机、计算设备、机器或微处理器来实现,其中包括一个或多个处理器、存储器和/或根据本公开内容的教导编程的计算机可读存储介质。适当的软件编码可以容易地由熟练的程序员基于本公开内容的教导来准备,如对软件领域的技术人员将显而易见的。
[0099]虽然以上已经描述了本发明的各种实施例,但是应该理解,它们已作为例子而不是限制给出。对相关领域的技术人员来说,将很显然,在不背离本发明的精神和范围的情况下,其中可以做出各种形式和细节上的变化。
[0100]本发明已经借助说明具体功能及其关系的执行的功能构建块进行了描述。这些功能构建块的边界在本文中
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1