CN105706058B - 用于支持网络环境中高效的分组处理模型和用于分组处理的优化的缓冲区利用的***和方法 - Google Patents
用于支持网络环境中高效的分组处理模型和用于分组处理的优化的缓冲区利用的***和方法 Download PDFInfo
- Publication number
- CN105706058B CN105706058B CN201480060333.1A CN201480060333A CN105706058B CN 105706058 B CN105706058 B CN 105706058B CN 201480060333 A CN201480060333 A CN 201480060333A CN 105706058 B CN105706058 B CN 105706058B
- Authority
- CN
- China
- Prior art keywords
- dma
- thread
- resource
- packet
- software
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种***和方法能够支持网络环境中的高效分组处理。该***可以包括直接存储器存取(DMA)资源池,其包括一个或多个DMA资源。此外,该***可以使用存储器中的多个分组缓冲区,其中每个所述DMA资源可以指向存储器中的分组缓冲区链。这里,分组缓冲区链可以基于链表数据结构和/或线性数组数据结构中的任一种来实现。此外,每个所述DMA资源允许分组处理线程利用预先分配的线程密钥访问分组缓冲区链。
Description
版权声明:
本专利文档公开内容的一部分包含受版权保护的材料。版权拥有者不反对任何人对专利文档或专利公开内容按照在专利商标局的专利文件或记录中出现那样进行的传真复制,但是除此之外在任何情况下都保留所有版权。
技术领域
本发明一般而言涉及计算机***,并且具体而言,涉及用于中间件和应用执行的工程***。
背景技术
随着引入更大的云计算体系架构,与传统的网络和存储相关联的性能和管理瓶颈已变成重要的问题。工程***,诸如Oracle工程***,可以提供卓越的处理速度、明显更快的部署、用于深入分析的即时视觉效果、以及可管理的大数据能力。这是本发明的实施例旨在解决的大致领域。
发明内容
本文所描述的是能够支持网络环境中高效的分组处理的***和方法。该***可以包括线程调度引擎,其操作来向多个软件线程中的每个软件线程分配线程密钥。此外,该***可以包括可用来处理网络环境中的分组的直接存储器存取(DMA)资源池。此外,每个所述软件线程操作来通过呈现所分配的线程密钥请求对DMA资源池中的DMA资源的访问,并且单个软件线程被允许利用同一线程密钥访问多个DMA资源。
本文所描述的是能够支持网络环境中高效的分组处理的***和方法。该***可以包括直接存储器存取(DMA)资源池,其包括一个或多个DMA资源。此外,该***可以使用存储器中的多个分组缓冲区,其中每个所述DMA资源可以指向存储器中的分组缓冲区链。这里,分组缓冲区链可以基于链表数据结构和/或线性数组数据结构中的任一种来实现。此外,每个所述DMA资源允许分组处理线程利用预先分配的线程密钥访问分组缓冲区链。
附图说明
图1示出了根据本发明的实施例的、支持网络环境中的高性能联网设备的示图。
图2示出了根据本发明的实施例的、支持联网设备中的高效分组处理模型的示图。
图3示出了根据本发明的实施例的、支持联网设备中的分组处理模型的示图。
图4图示了根据本发明的实施例的、用于支持网络环境中的高效分组处理的示例性流程图。
图5示出了根据本发明的实施例的、支持联网设备中分组处理的高效缓冲区利用的示图。
图6示出了根据本发明的实施例的、在联网设备中利用缓冲区链用于分组处理的示图。
图7示出了根据本发明的实施例的、在联网设备中利用一个或多个缓冲区链表用于分组处理的示图。
图8示出了根据本发明的实施例的、在联网设备中利用一个或多个线性数组用于支持分组处理的示图。
图9示出了根据本发明的实施例的、在联网设备中利用链表和线性数组的混合来支持灵活的分组处理的示图。
图10图示了根据本发明的实施例的、用于支持联网设备中分组处理的高效缓冲区利用的示例性流程图。
具体实施方式
本发明是作为例子而不是作为限制在附图中说明的,并且在附图中,相同的标号指示相似的元件。应当指出,在本公开内容中对“一个”或“一种”或“一些”实施例的引用不一定指同一实施例,并且这种引用意味着至少一个。
如以下本发明的描述使用无限带(InfiniBand)(IB)网络交换机作为用于高性能联网设备的例子。对本领域技术人员来说,将很显然,可以使用其它类型的高性能联网设备,而没有限制。
本文所描述的是能够支持网络环境中的多线程直接存储器存取(DMA)处理的***和方法。根据本发明的实施例,该***使得DMA处理是灵活的并且占用低的存储器空间。
高性能联网设备
图1示出了根据本发明的实施例的、支持网络环境中的高性能联网设备的示图。如在图1中所示,高性能联网设备101,诸如网络交换机,可以在网络架构102中使用来引导网络环境100中的分组流。
根据本发明的实施例,可以在联网设备101中使用嵌入式处理器,例如DMA引擎110,用于处理分组,诸如分组121-124(例如,包括控制分组和数据分组两者)。这里,这些分组121-124的发送和接收可以在联网设备101的网络端口111-112处发生。
如在图1中所示,联网设备101可以支持虚拟化架构。***允许虚拟化应用108在利用一个或多个主机计算机103-104支持的一个或多个虚拟机(VM)105-107上运行。
此外,当联网设备101支持虚拟化架构时,用于处理控制分组121-124的吞吐量要求可根据不同虚拟化应用108的要求相应地变化。如在图1中所示,网络架构102可以使用联网设备101来引导来自各个主机103-104/VM 105-107的多个分组流。
为了支持虚拟化应用108,来自各个VM 105-107的这些不同的控制分组流可以被映射到联网设备101中的硬件资源用于分组处理。根据本发明的实施例,嵌入式处理器,诸如DMA引擎110,可以执行不同类型的分组处理,并且可以运行大量的软件线程(或工作队列)。
与在传统的网络接口卡(NIC)上运行的、可具有实质性CPU能力和***存储器的DMA引擎不同,嵌入式***可能具有有限的CPU能力和***存储器。因此,将软件线程映射到嵌入式***中的硬件资源会引起显著的软件性能折扣。例如,这些性能折扣会以软件线程锁定开销、分组缓冲区管理、以及其它的形式出现,这会进一步减少可用的CPU能力。
根据本发明的实施例,***可以提供用于支持网络环境100中的高效分组处理模型的框架。这个框架可以将大量的软件线程映射到一组有限的硬件DMA处理线程,而无需锁定和线程竞争。此外,该***可以优化联网设备101中分组处理的缓冲区利用。
分组处理模型
图2示出了根据本发明的实施例的、支持联网设备中的高效分组处理的示图。如在图2中所示,硬件可以提供空闲DMA资源池210,其包含一个或多个DMA资源211-213。
根据本发明的实施例,DMA资源211-213可以表示DMA描述符、缓冲区管理和用于数据移动的DMA引擎。例如,DMA资源211-213可以绑定到表示其上可以发生分组传输的物理介质的一个或多个DMA引擎220。
如在图2中所示,***可以提供高效的分组处理模型200,其可以将大量的软件线程202映射到一组有限的硬件DMA处理线程201。根据需要,DMA资源211-213可以按需分配给各种软件线程221-229。此外,DMA资源211-213可以动态地被软件线程221-229放弃。
例如,DMA资源211-213可以根据每个DMA引擎可以维持的数据速率来分配。这里,DMA资源211-213的分配可以不依赖于在给定DMA引擎上工作的软件线程的数量。这是因为流量处理可以在多个软件线程当中分散,并且每个这些软件线程可以只在工作处理时间期间是活动的。
图3示出了根据本发明的实施例的、支持联网设备中的高效分组处理模型的示图。如在图3中所示,可以使用线程调度引擎,诸如线程调度器310,将不同的线程密钥(例如,key0 311至key9 319)分配给联网设备300中的每个软件线程301-309。这里,线程调度器310可以基于标准的实时O/S或定制的O/S来构建。
根据本发明的实施例,当软件线程需要执行网络数据传输时,软件线程可以通过向DMA资源呈现分配的线程密钥来请求对DMA资源的访问。如在图3中所示,每个软件线程301-309可以向用来为不同的软件线程301-309分配DMA资源的资源管理器330呈现线程密钥。
例如,具有线程ID Thid0的软件线程301可以使用分配的线程密钥,key0 311,来从DMA资源池320中分配DMA资源。此外,具有线程ID Thid1的软件线程302可以使用分配的线程密钥key1 312,来从DMA资源池320中分配DMA资源。同样,具有线程ID Thid9的软件线程309可以使用分配的线程密钥,key9 319,来从DMA资源池320中分配DMA资源。
如果在DMA资源池320中的任何DMA资源是空闲的,则可用的DMA资源可以分配给做出请求的软件线程。例如,分配的DMA资源可以被映射到与做出请求的软件线程相关联的分配的线程密钥。另一方面,如果DMA资源已经被分配给另一个软件线程,则可以防止(或拒绝)做出请求的软件线程访问该DMA资源。此外,***可以为做出请求的软件线程设置适当的状态。此外,如果所有的DMA资源都在使用,则做出请求的软件线程可能必须等待,直到DMA资源池320中的某个DMA资源空闲。
根据本发明的实施例,利用分配的线程密钥,做出请求的软件线程还可以在资源已被分配给软件线程之后,按其所需配置DMA资源。例如,做出请求的软件线程可以设置描述符属性(例如,利用链表,而不是环形结构)。
此外,如果需要,则单个软件线程可以做出对多个DMA资源的请求。***可以基于同一分配的线程密钥将空闲池320中可用的多个DMA资源321-323分配给做出请求的软件线程。此外,软件线程可以决定它是否希望一旦这些DMA资源321-323被分配时,维持该多个分配的资源之间的排序。例如,如果需要排序,则软件线程可以给硬件提供相关性列表。
根据本发明的实施例,***允许多个线程并发地访问DMA资源321-323(包括分组缓冲区)。通过允许每个线程具有不同的线程密钥,***可以从网络架构发送和接收分组,而无需实现互斥锁或信号装置(semaphore)。
根据本发明的实施例,线程密钥空间可以被配置为包括大量的条目,以便支持大量可能的软件线程。因此,***可以将大量的软件线程映射到一组有限的硬件资源。
图4示出了根据本发明的实施例的、用于支持网络环境中的高效分组处理的示例性流程图。如在图4中所示,在步骤401,***可以提供线程调度引擎,其中所述线程调度引擎操作来向多个软件线程中的每个软件线程分配线程密钥。此外,在步骤402,***可以提供操作来处理网络环境中的分组的直接存储器存取(DMA)资源池。然后,在步骤403,每个所述软件线程操作来通过呈现所分配的线程密钥请求对DMA资源池中的DMA资源的访问。
用于分组处理的高效缓冲区利用
图5示出了根据本发明的实施例的、支持联网设备中用于分组处理的高效缓冲区利用的示图。如在图5中所示,DMA资源池520中的DMA资源521-523可以与一个或多个缓冲区链531-533相关联,其中每个缓冲区链可以包含联网设备500中不同数量的分组缓冲区。
根据本发明的实施例,当DMA资源被初始化时,DMA资源可以指向空的容器,该容器可以用于包含分组缓冲区。此外,其中放置各个分组缓冲区的存储器中的缓冲区链531-533可以以链表或线性数组任一种的形式。不同于固定环形结构,缓冲区链531-533的尺寸可以增长(受存储器限制)。此外,利用缓冲区链531-533,***允许对排队结构的多线程访问。
如在图5中所示,软件线程501-509可以通过呈现预先分配的线程密钥(诸如key0511至key9 519)做出访问缓冲区链531-533中的分组缓冲区的请求。例如,软件线程501可以利用预先分配的线程密钥key0 501来访问缓冲区链531中的分组缓冲区。此外,软件线程502可以利用预先分配的线程密钥key1 512来访问缓冲区链532中的分组缓冲区。
此外,如果分组处理软件线程需要处理多于一组的缓冲区链(例如,在第一组分组处理队列完成之前调度第二组分组处理队列的情况下),做出请求的软件线程可以获取和使用出自同一硬件DMA资源池520的另一个DMA资源。如在图5中所示,软件线程501可以利用同一预先分配的线程密钥key0 501来请求访问缓冲区链533中的分组缓冲区。
此外,如果在多个分组处理过程中需要排序,则***可以设置资源相关性编号作为配置的一部分。如果相关性列表被设置,则硬件处理器可以序列化分组处理。否则,***可以以任意的方式处理分组。
此外,如果特定的任务需要被硬件线程潜在地并行处理并且还需要结果按顺序发出,则***可以将任务分派给具有相关性属性集的DMA引擎。因此,***可以流水线工作并且如果有空闲的CPU时间可用的话,可以利用该空闲的CPU时间,连同按需分配DMA资源。
根据本发明的实施例,由于每个软件线程501-509被预先分配有线程密钥(诸如key0 511至key9 519),因此***可以设置多个线程并发访问不同缓冲区链531-533中的分组缓冲区,而无需实现互斥锁或信号装置。这对于从网络架构发送和接收分组两者都会是正确的。此外,当独立的流被发送时,上述方案允许分组或者串行或者并行分批流水到硬件。
图6示出了根据本发明的实施例的、在联网设备中利用用于分组处理的缓冲区链的示图。如在图6中所示,可以使用资源管理器610将多个软件线程601-609映射到联网设备600中的空闲池620中不同的DMA资源。
在空闲池620中的每个DMA资源可以与资源ID相关联,诸如RID0 621、RID3 622和RIDN 623。此外,每个DMA资源可以维护可用来访问不同的缓冲区链的线程密钥,和/或可用来分配和管理不同缓冲区链的线程ID。
例如,软件线程0 601(具有线程密钥key0)可以向资源管理器610呈现线程密钥(key0),以便请求分配DMA资源。资源管理器610又可以将该线程密钥(key0)提供给可用的DMA资源,例如RID0 621。此外,如果线程601需要更多的硬件资源,则资源管理器610可以将线程密钥(key0)提供给另一个可用的DMA资源,例如RIDN 623。
然后,资源管理器610可以将DMA资源的状态和所有相关的资源号(例如RID0 621和RIDN 623)提供回给软件线程601。因此,软件线程0 601可以访问缓冲区链631-633和637-639两者,并且可以在完成分组处理之后,解除相关DMA资源的分配。
类似地,软件线程1 602(具有线程密钥key1)可以向资源管理器610呈现线程密钥(key1),以便请求分配DMA资源。资源管理器610又可以将该线程密钥key1提供给可用的DMA资源,例如RID1 622。因此,软件线程0 601可以访问缓冲区链634-636。
图7示出了根据本发明的实施例的、在联网设备中利用一个或多个缓冲区链表用于分组处理的示图。如在图7中所示,联网设备700中的空闲DMA资源池710可以维护一个或多个DMA资源,其中每个DMA资源可以与若干个不同的属性相关联,诸如RID、Order、HeadAddr和HeadLen。这里,RID属性可以包含分配给缓冲区链的资源编号,并且Order属性可以指示特定的缓冲区链被配置为在另一个缓冲区链之后被处理。
如在图7中所示,***可以使用链表数据结构来实现用于保持各种分组的缓冲区链。例如,具有资源号1的DMA资源可以指向分组缓冲区的链表,其开始于具有头部地址h1的分组缓冲区711。这里,分组缓冲区711与描述符并置。在链表内,分组缓冲区711可以指向下一个分组缓冲区712并且分组缓冲区712可以指向下一个分组缓冲区713(分组缓冲区712和分组缓冲区713中的每一个也与描述符并置)。
此外,具有资源号2的DMA资源可以指向分组缓冲区的链表,它开始于具有头部地址h2的分组缓冲区714。这里,分组缓冲区714与描述符并置并且可以指向另一个分组缓冲区715。
此外,访问具有资源号1的DMA资源的软件线程可以做出访问附加硬件资源的请求。例如,软件线程可以访问具有资源号32的DMA资源,其指向开始于具有头部地址h32的分组缓冲区716的分组缓冲区链表。类似地,分组缓冲区716与描述符并置并且可以指向链表中的其它分组缓冲区717和718。
还如图7中所示,***可以通过为具有资源号32的DMA资源把Order值设置为1(如示出为从分组缓冲区713指向分组缓冲区716的箭头720)强制硬件在处理分组缓冲区716-718之前处理分组缓冲区711-713。
根据本发明的实施例,利用基于链表的方案,***可以提供存储器中有限的占用空间,这在嵌入式***的情况下会是有利的。例如,用于Linux环境的分组缓冲区链表的实现可以是直接的,因为分组的Linux实现是基于链表的。因此,***可以直接将Linux环境中分组的链表转换为存储器中分组缓冲区的硬件链表。
此外,实现可以独立于OS。例如,***可以在任何通用的OS、定制的OS,或嵌入式RTOS上实现。
图8示出了根据本发明的实施例的、在联网设备中利用一个或多个线性数组用于支持分组处理的示图。如在图8中所示,联网设备800中的空闲DMA资源池810可以维护一个或多个DMA资源。此外,每个DMA资源可以与若干个不同的属性相关联,诸如RID、Order、HeadAddr和HeadLen。这里,RID属性可以包含分配给缓冲区链的资源号,并且Order属性可以指示特定的缓冲区链被配置为在另一个缓冲区链之后被处理。
根据本发明的实施例,***可以使用描述符线性数组来实现用于保持各种分组的缓冲区链。此外,描述符线性数组中的每个描述符可以指向单独的分组缓冲区,并且***可以从不同的分组描述符到达每个分组缓冲区。
如在图8中所示,具有资源号1的DMA资源可以指向具有头部地址h2的描述符线性数组811。此外,具有资源号2的DMA资源可以指向具有头部地址h3的描述符线性数组812。这里,描述符线性数组811-812不与分组缓冲区并置。
此外,***允许分组缓冲区根据预先配置的次序进行处理。例如,***可以为具有资源号3的DMA资源把Order值设置为2,以便迫使硬件引擎在与描述符线性数组812相关联的分组缓冲区之前处理与描述符线性数组811相关联的分组缓冲区(如示出为从描述符线性数组811指向描述符线性数组812的箭头820)。
根据本发明的实施例,***可以一次处理多个分组,而无需在序列中单独地处理每个分组。因此,利用描述符线性数组,***可以提供低等待时间,这例如作为高速缓存高效方案会是有利的。
图9示出了根据本发明的实施例的、在联网设备中利用链表和线性数组的混合来支持灵活的分组处理的示图。如在图9中所示,联网设备900中的空闲DMA资源池910可以维护一个或多个DMA资源。此外,每个DMA资源可以与若干个不同的属性相关联,诸如RID、Order、HeadAddr、HeadLen和Array/Linked。这里,RID属性可以包含分配给缓冲区链的资源编号,并且Order属性可以指示特定的缓冲区链被配置为在另一个缓冲区链之后被处理。
根据本发明的实施例,在空闲池910中的不同DMA资源可以与不同类型的缓冲区链相关联。
例如,具有资源号2的DMA资源可以指向具有头部地址h2的描述符线性数组911,其中每个描述符可以指向分组。类似地,具有资源号32的DMA资源可以指向具有头部地址h2的描述符线性数组912,其中每个描述符可以指向分组。
此外,与资源号1相关联的DMA资源可以指向分组缓冲区链表,其开始于具有头部地址h1的分组缓冲区913。在链表数据结构内,与描述符并置的分组缓冲区913可以指向另一个分组缓冲区915。类似地,与资源号32相关联的DMA资源可以指向开始于具有头部地址h32的分组缓冲区917的分组缓冲区链表。此外,与描述符并置的分组缓冲区917可以指向链表数据结构中的其它分组缓冲区918和919。
此外,***允许分组缓冲区根据预先配置的次序进行处理(如示为从描述符线性数组911指向描述符线性数组912的箭头921,以及从分组缓冲区915指向分组缓冲区917的箭头922)。
根据本发明的实施例,***可以动态地确定哪种类型的缓冲区链可以被分配为用于做出请求的软件线程。这种确定可以基于存储器使用和特定分组处理线程的等待时间要求的平衡。例如,如果特定的分组处理线程对存储器使用更敏感,则***可以分配基于链表的缓冲区链。否则,当特定的分组处理线程对等待时间更敏感时,***可以分配基于线性数组的缓冲区链。
图10示出了根据本发明的实施例的、用于在联网设备中支持用于分组处理的高效缓冲区利用的示例性流程图。如在图10中所示,在步骤1001,***可以提供网络设备上的存储器中的多个分组缓冲区。此外,在步骤1002,***可以提供直接存储器存取(DMA)资源池,其中所述DMA资源池包括一个或多个DMA资源,其中所述DMA资源池中的每个所述DMA资源指向存储器中的分组缓冲区链。然后,在步骤1003,每个所述DMA资源允许分组处理线程利用预先分配给分组处理线程的线程密钥来访问存储器中的分组缓冲区链。
本发明的实施例包括用于支持网络设备中的高效分组处理的***,包括:在网络设备上的存储器中的多个分组缓冲区;直接存储器存取(DMA)资源池,其中所述DMA资源池包括一个或多个DMA资源,其中所述DMA资源池中的每个所述DMA资源指向存储器中的分组缓冲区链;以及其中每个所述DMA资源允许分组处理线程利用预先分配给分组处理线程的线程密钥来访问存储器中的分组缓冲区链。
如以上所提供的***,其中所述分组处理线程操作来利用同一预先分配的线程密钥访问存储器中的多个分组缓冲区链。
如以上所提供的***,其中所述分组处理线程操作来在所述多个分组缓冲区链中设置用于处理分组的相关性列表。
如以上所提供的***,其中多个分组处理线程操作来并发地访问存储器中的不同分组缓冲区链。
如以上所提供的***,其中至少一个DMA资源指向分组缓冲区链表。
如以上所提供的***,其中在链表中的每个分组缓冲区与描述符并置。
如以上所提供的***,其中至少一个DMA资源指向描述符线性数组。
如以上所提供的***,其中描述符线性数组中的每个描述符指向分组缓冲区。
如以上所提供的***,其中所述多个分组缓冲区基于链表和线性数组的混合进行组织。
如以上所提供的***,其中所述DMA资源池操作来动态地确定分组处理线程是应该基于链表还是应该基于线性数组访问缓冲链。
本发明的实施例包括用于支持网络环境中的高效分组处理的方法,包括:提供网络设备上的存储器中的多个分组缓冲区;提供直接存储器存取(DMA)资源池,其中所述DMA资源池包括一个或多个DMA资源,其中所述DMA资源池中的每个所述DMA资源指向存储器中的分组缓冲区链;以及经由每个所述DMA资源允许分组处理线程利用预先分配给分组处理线程的线程密钥访问存储器中的分组缓冲区链。
如以上所提供的方法,还包括允许所述分组处理线程利用同一预先分配的线程密钥访问存储器中的多个分组缓冲区链。
如以上所提供的方法,还包括允许所述分组处理线程在所述多个分组缓冲区链中设置用于处理分组的相关性列表。
如以上所提供的方法,还包括允许多个分组处理线程并发地访问存储器中的不同分组缓冲区链。
如以上所提供的方法,还包括允许至少一个DMA资源指向分组缓冲区链表。
如以上所提供的方法,还包括允许链表中的每个分组缓冲区与描述符并置。
如以上所提供的方法,还包括允许至少一个DMA资源指向描述符线性数组。
如以上所提供的方法,还包括允许描述符线性数组中的每个描述符指向分组缓冲区。
如以上所提供的方法,还包括基于链表和线性数组的混合组织所述多个分组缓冲区,并且动态地确定分组处理线程是应该基于链表还是应该基于线性数组访问缓冲区链。
本发明的实施例包括具有指令存储在其上的非临时性计算机可读存储介质,当指令被执行时,使得***执行步骤,包括:提供网络设备上的存储器中的多个分组缓冲区;提供直接存储器存取(DMA)资源池,其中所述DMA资源池包括一个或多个DMA资源,其中所述DMA资源池中的每个所述DMA资源指向存储器中的分组缓冲区链;以及经由每个所述DMA资源允许分组处理线程利用预先分配给分组处理线程的线程密钥访问存储器中的分组缓冲区链。
本发明的许多特征可以在硬件、软件、固件或其组合中、利用硬件、软件、固件或其组合、或者在硬件、软件、固件或其组合的帮助下执行。因此,本发明的特征可以利用(例如,包括一个或多个处理器的)处理***来实现。
本发明的特征可以在计算机程序产品中、利用计算机程序产品、或者在计算机程序产品的帮助下执行,其中计算机程序产品是具有其上/其中存储有可用来编程处理***以执行本文所呈现的任何特征的指令的存储介质或计算机可读介质。存储介质可以包括,但不限于,任何类型的盘,包括软盘、光盘、DVD、CD-ROM、微驱动器、以及磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪光存储器设备、磁或光卡、纳米***(包括分子存储器IC)、或适于存储指令和/或数据的任何类型的媒体或设备。
存储在任何一种机器可读介质中,本发明的特征可以被结合到软件和/或固件中,用于控制处理***的硬件,并且用于使处理***能够利用本发明的结果与其它机制交互。这种软件或固件可以包括,但不限于,应用代码、设备驱动程序、操作***和执行环境/容器。
本发明的特征也可以利用例如诸如专用集成电路(ASIC)的硬件部件在硬件中实现。硬件状态机的实现使得执行本文所描述的功能对相关领域的技术人员将是显而易见的。
此外,本发明可以方便地利用一个或多个常规的通用或专用数字计算机、计算设备、机器或微处理器来实现,其中包括一个或多个处理器、存储器和/或根据本公开内容的教导编程的计算机可读存储介质。适当的软件编码可以容易地由熟练的程序员基于本公开内容的教导来准备,如对软件领域的技术人员将显而易见的。
虽然以上已经描述了本发明的各种实施例,但是应该理解,它们已作为例子而不是限制给出。对相关领域的技术人员来说,将很显然,在不背离本发明的精神和范围的情况下,其中可以做出各种形式和细节上的变化。
本发明已经借助说明具体功能及其关系的执行的功能构建块进行了描述。这些功能构建块的边界在本文中通常是为了方便描述而任意定义的。可以定义可替代的边界,只要具体的功能及其关系被适当地执行。任何这种可替代的边界因此在本发明的范围和精神之内。
本发明的以上描述是为了说明和描述的目的提供。它不是穷尽的或者要把本发明限定到所公开的精确形式。本发明的广度和范围不应该由任何上述示例性实施例来限制。许多修改和变化对本领域技术人员来说将显而易见。修改和变化包括所公开特征的任何相关组合。实施例的选择与描述是为了最好地解释本发明的原理及其实践应用,从而使本领域其他技术人员能够理解本发明用于各种实施例并且可以进行适于预期特定用途的各种修改。本发明的范围要由以下权利要求及其等价物来定义。
Claims (36)
1.一种用于在网络环境中支持高效分组处理的***,包括:
一个或多个微处理器;
多个直接存储器存取DMA引擎,用于处理网络环境中的分组;
DMA资源池,与多个DMA引擎相关联;
线程调度引擎,其运行在所述一个或多个微处理器上;
多个软件线程,其中所述线程调度引擎操作来向所述多个软件线程中的每个软件线程分配线程密钥;
资源管理器,其从所述DMA资源池向所述每个软件线程分配可用的DMA资源;以及
其中所述每个软件线程操作来通过呈现被分配给所述每个软件线程的线程密钥来请求对DMA资源池中被分配给所述每个软件线程的DMA资源的访问。
2.如权利要求1所述的***,其中:
分组是由虚拟架构产生的控制分组。
3.如权利要求1所述的***,其中:
DMA资源取决于以下中的至少一个来分配:等待时间要求和每个所述DMA引擎需要维持的数据速率。
4.如权利要求1至3中任何一项所述的***,其中:
所述线程调度引擎是基于操作***(OS)构建的线程调度器。
5.如权利要求1所述的***,其中:
如果另一个软件线程已被分配给DMA资源,则对该DMA资源的访问被拒绝。
6.如权利要求5所述的***,其中:
如果所有的DMA资源都在使用,则做出请求的软件线程被置于等待。
7.如权利要求1至3中任何一项所述的***,其中:
允许单个软件线程访问多个DMA资源。
8.如权利要求7所述的***,其中:
单个软件线程操作来确定多个DMA资源之间的次序。
9.一种用于在网络环境中支持高效分组处理的方法,包括:
提供用于处理网络环境中的分组的多个直接存储器存取DMA引擎;
提供与多个DMA引擎相关联的DMA资源池;
提供在一个或多个微处理器上运行的线程调度引擎;
使用所述线程调度引擎来向多个软件线程中的每个软件线程分配线程密钥;
使用资源管理器从所述DMA资源池向所述每个软件线程分配可用的DMA资源;以及
允许所述每个软件线程通过呈现被分配给所述每个软件线程的线程密钥来请求访问DMA资源池中被分配给所述每个软件线程的DMA资源。
10.如权利要求9所述的方法,其中
分组是由虚拟架构产生的控制分组。
11.如权利要求9所述的方法,还包括:
取决于每个所述DMA引擎需要维持的数据速率来分配DMA资源。
12.如权利要求9至11中任何一项所述的方法,
其中所述线程调度引擎是基于操作***(OS)构建的线程调度器。
13.如权利要求9所述的方法,还包括:
如果另一个软件线程已被分配给DMA资源,则拒绝对该DMA资源的访问。
14.如权利要求13所述的方法,还包括:
如果所有的DMA资源都在使用,则将做出请求的软件线程置于等待。
15.如权利要求9至11中任何一项所述的方法,还包括:
允许单个软件线程访问多个DMA资源,以及
确定所述多个DMA资源之间的次序。
16.一种其上存储有指令的非临时性机器可读存储介质,指令在被计算机***执行时,使得计算机***执行如权利要求9至15中任何一项所述的方法。
17.一种用于在网络设备中支持高效分组处理的***,包括:
所述网络设备上的存储器中的多个分组缓冲区;
直接存储器存取DMA资源池,其中所述DMA资源池包括一个或多个DMA资源,其中所述DMA资源池中的每个所述DMA资源指向存储器中的分组缓冲区链;
在网络主机上操作的线程调度引擎,所述线程调度引擎在软件线程中的每个软件线程请求访问所述一个或多个DMA资源之前向多个软件线程中的每个软件线程预先分配不同的线程密钥;以及
资源管理器,分配由软件线程使用的DMA资源;
其中来自所述多个软件线程的分组处理线程通过向资源管理器呈现该分组处理线程被预先分配的线程密钥来请求访问DMA资源;
其中资源管理器将所分配的DMA资源映射到与分组处理线程相关联的预先分配的线程密钥;以及
其中所分配的DMA资源使得分组处理线程能够使用被预先分配给该软件线程的线程密钥来访问存储器中的特定分组缓冲区链。
18.如权利要求17所述的***,其中:
所述分组处理线程操作来利用同一预先分配的线程密钥访问存储器中的多个分组缓冲区链。
19.如权利要求18所述的***,其中:
所述分组处理线程操作来在所述多个分组缓冲区链中设置用于处理分组的相关性列表。
20.如权利要求17至19中任何一项所述的***,其中:
多个分组处理线程操作来并发地访问存储器中的不同的分组缓冲区链。
21.如权利要求17至19中任何一项所述的***,其中:
至少一个DMA资源指向分组缓冲区链表。
22.如权利要求21所述的***,其中:
链表中的每个分组缓冲区与描述符并置。
23.如权利要求17至19中任何一项所述的***,其中:
至少一个DMA资源指向描述符线性数组。
24.如权利要求23所述的***,其中:
描述符线性数组中的每个描述符指向分组缓冲区。
25.如权利要求17至19中任何一项所述的***,其中:
所述多个分组缓冲区基于链表和线性数组的混合进行组织。
26.如权利要求25所述的***,其中:
所述DMA资源池操作来动态地确定分组处理线程是应该基于链表还是应该基于线性数组访问缓冲区链。
27.一种用于在网络环境中支持高效分组处理的方法,包括:
提供网络设备上的存储器中的多个分组缓冲区;
提供直接存储器存取DMA资源池,其中所述DMA资源池包括一个或多个DMA资源,其中所述DMA资源池中的每个所述DMA资源指向存储器中的分组缓冲区链;以及
由在网络主机上操作的线程调度引擎在软件线程中的每个软件线程请求访问一个或多个DMA资源之前,向多个软件线程中的每个软件线程预先分配不同的线程密钥;
在资源管理器处从来自多个软件线程的分组处理线程接收访问DMA资源的请求,该请求是通过所述分组处理线程向资源管理器呈现该分组处理线程被预先分配的线程密钥来实现的;
由资源管理器从一个或多个DMA资源中向分组处理线程分配DMA资源,包括将所分配的DMA资源映射到与分组处理线程相关联的预先分配的线程密钥;以及
允许分组处理线程经由该分组处理线程被分配的DMA资源以使用被预先分配给该软件线程的线程密钥来访问存储器中的特定分组缓冲区链。
28.如权利要求27所述的方法,还包括:
允许所述分组处理线程利用同一预先分配的线程密钥来访问存储器中的多个分组缓冲区链。
29.如权利要求28所述的方法,还包括:
允许所述分组处理线程在所述多个分组缓冲区链中设置用于处理分组的相关性列表。
30.如权利要求27至29中任何一项所述的方法,还包括:
允许多个分组处理线程并发地访问存储器中的不同分组缓冲区链。
31.如权利要求27至29中任何一项所述的方法,其中
至少一个DMA资源指向分组缓冲区链表。
32.如权利要求31所述的方法,其中
链表中的每个分组缓冲区与描述符并置。
33.如权利要求27至29中任何一项所述的方法,其中
至少一个DMA资源指向描述符线性数组。
34.如权利要求33所述的方法,其中
描述符线性数组中的每个描述符指向分组缓冲区。
35.如权利要求27至29中任何一项所述的方法,其中
基于链表和线性数组的混合组织所述多个分组缓冲区,以及
动态地确定分组处理线程是应该基于链表还是应该基于线性数组访问缓冲区链。
36.一种其上存储有指令的非临时性机器可读存储介质,指令在被执行时,使得计算机***执行如权利要求9至15以及27至35中任何一项所述的方法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/072,566 | 2013-11-05 | ||
US14/072,566 US9489327B2 (en) | 2013-11-05 | 2013-11-05 | System and method for supporting an efficient packet processing model in a network environment |
US14/072,597 | 2013-11-05 | ||
US14/072,597 US9858241B2 (en) | 2013-11-05 | 2013-11-05 | System and method for supporting optimized buffer utilization for packet processing in a networking device |
PCT/US2014/059749 WO2015069408A1 (en) | 2013-11-05 | 2014-10-08 | System and method for supporting efficient packet processing model and optimized buffer utilization for packet processing in a network environment |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105706058A CN105706058A (zh) | 2016-06-22 |
CN105706058B true CN105706058B (zh) | 2019-09-20 |
Family
ID=52144830
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480060333.1A Active CN105706058B (zh) | 2013-11-05 | 2014-10-08 | 用于支持网络环境中高效的分组处理模型和用于分组处理的优化的缓冲区利用的***和方法 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP3066568B1 (zh) |
CN (1) | CN105706058B (zh) |
WO (1) | WO2015069408A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107124271B (zh) * | 2017-04-28 | 2020-12-04 | 成都梆梆信息技术咨询服务有限公司 | 一种数据加密、解密方法和设备 |
US11847074B2 (en) | 2020-11-02 | 2023-12-19 | Honeywell International Inc. | Input/output device operational modes for a system with memory pools |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1352773A (zh) * | 1999-02-22 | 2002-06-05 | 因芬尼昂技术股份公司 | 帮助直接存储器访问的方法和装置 |
CN1643499A (zh) * | 1999-12-28 | 2005-07-20 | 英特尔公司 | 在多线程网络处理器中的线程信令 |
CN101540727A (zh) * | 2009-05-05 | 2009-09-23 | 曙光信息产业(北京)有限公司 | 一种ip报文的硬件分流方法 |
US7761617B2 (en) * | 2004-10-11 | 2010-07-20 | Texas Instruments Incorporated | Multi-threaded DMA |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6058460A (en) * | 1996-06-28 | 2000-05-02 | Sun Microsystems, Inc. | Memory allocation in a multithreaded environment |
US6661794B1 (en) * | 1999-12-29 | 2003-12-09 | Intel Corporation | Method and apparatus for gigabit packet assignment for multithreaded packet processing |
TW583547B (en) * | 2000-06-23 | 2004-04-11 | Agere Syst Guardian Corp | Linked-list memory-access control for a concentrator |
US20060218556A1 (en) * | 2001-09-28 | 2006-09-28 | Nemirovsky Mario D | Mechanism for managing resource locking in a multi-threaded environment |
US6981110B1 (en) * | 2001-10-23 | 2005-12-27 | Stephen Waller Melvin | Hardware enforced virtual sequentiality |
US20050018601A1 (en) * | 2002-06-18 | 2005-01-27 | Suresh Kalkunte | Traffic management |
US20040151170A1 (en) * | 2003-01-31 | 2004-08-05 | Manu Gulati | Management of received data within host device using linked lists |
GB2425681A (en) * | 2005-04-27 | 2006-11-01 | 3Com Corporaton | Access control by Dynamic Host Configuration Protocol snooping |
US7490214B2 (en) * | 2006-06-12 | 2009-02-10 | Sun Microsystems, Inc. | Relocating data from a source page to a target page by marking transaction table entries valid or invalid based on mappings to virtual pages in kernel virtual memory address space |
US7877524B1 (en) * | 2007-11-23 | 2011-01-25 | Pmc-Sierra Us, Inc. | Logical address direct memory access with multiple concurrent physical ports and internal switching |
US8032669B2 (en) * | 2008-01-20 | 2011-10-04 | Oracle America, Inc. | Universal DMA (direct memory access) architecture |
US8478996B2 (en) * | 2009-12-21 | 2013-07-02 | International Business Machines Corporation | Secure Kerberized access of encrypted file system |
US8874838B2 (en) * | 2009-12-28 | 2014-10-28 | Juniper Networks, Inc. | Providing dynamic databases for a TCAM |
US8719543B2 (en) * | 2009-12-29 | 2014-05-06 | Advanced Micro Devices, Inc. | Systems and methods implementing non-shared page tables for sharing memory resources managed by a main operating system with accelerator devices |
US8913613B2 (en) * | 2011-02-16 | 2014-12-16 | Oracle International Corporation | Method and system for classification and management of inter-blade network traffic in a blade server |
KR101966712B1 (ko) * | 2011-03-25 | 2019-04-09 | 인텔 코포레이션 | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트 |
US8484392B2 (en) * | 2011-05-31 | 2013-07-09 | Oracle International Corporation | Method and system for infiniband host channel adaptor quality of service |
US8578069B2 (en) * | 2012-04-04 | 2013-11-05 | International Business Machines Corporation | Prefetching for a shared direct memory access (DMA) engine |
-
2014
- 2014-10-08 EP EP14816457.7A patent/EP3066568B1/en active Active
- 2014-10-08 CN CN201480060333.1A patent/CN105706058B/zh active Active
- 2014-10-08 WO PCT/US2014/059749 patent/WO2015069408A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1352773A (zh) * | 1999-02-22 | 2002-06-05 | 因芬尼昂技术股份公司 | 帮助直接存储器访问的方法和装置 |
CN1643499A (zh) * | 1999-12-28 | 2005-07-20 | 英特尔公司 | 在多线程网络处理器中的线程信令 |
US7761617B2 (en) * | 2004-10-11 | 2010-07-20 | Texas Instruments Incorporated | Multi-threaded DMA |
CN101540727A (zh) * | 2009-05-05 | 2009-09-23 | 曙光信息产业(北京)有限公司 | 一种ip报文的硬件分流方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2015069408A1 (en) | 2015-05-14 |
EP3066568A1 (en) | 2016-09-14 |
EP3066568B1 (en) | 2019-09-11 |
CN105706058A (zh) | 2016-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101160565B (zh) | 无操作***干预情况下调度os隔离定序器上的线程的机制 | |
US9858241B2 (en) | System and method for supporting optimized buffer utilization for packet processing in a networking device | |
US10599484B2 (en) | Weighted stealing of resources | |
US9135077B2 (en) | GPU compute optimization via wavefront reforming | |
KR101786767B1 (ko) | 유저 모드로부터 그래픽 처리 디스패치 | |
KR20120054027A (ko) | 프로세서들에 걸쳐 데이터-병렬 쓰레드들을 지닌 프로세싱 로직을 매핑하는 방법 | |
WO2006059543A1 (ja) | スケジューリング方法、スケジューリング装置およびマルチプロセッサシステム | |
TW200912738A (en) | Multiple-core processor with hierarchical microcode store | |
KR102338849B1 (ko) | 실시간 운영 체제에서 스택 메모리 관리를 제공하는 방법 및 시스템 | |
CN111176829B (zh) | 虚拟化处理***中的物理功能和虚拟功能的灵活资源分配 | |
CN107003965A (zh) | 向用户级应用传递中断 | |
CN109388338A (zh) | 云计算环境中的基于NVMe的存储***的混合框架 | |
Zhou et al. | Task mapping in heterogeneous embedded systems for fast completion time | |
CN110045988A (zh) | 具有共享前端单元的处理核 | |
CN109783012A (zh) | 基于闪存的储存器及其控制器 | |
CN106445631A (zh) | 一种布署虚拟机的方法、***以及物理服务器 | |
CN105706058B (zh) | 用于支持网络环境中高效的分组处理模型和用于分组处理的优化的缓冲区利用的***和方法 | |
KR20150056373A (ko) | 순차적 수행 방식의 멀티스레드 프로세싱 장치 및 방법 | |
KR101791182B1 (ko) | 컴퓨터 시스템 인터럽트 핸들링 | |
US20150212859A1 (en) | Graphics processing unit controller, host system, and methods | |
CN103294449A (zh) | 发散操作的预调度重演 | |
CN103197918A (zh) | 多通道时间片组 | |
Vo et al. | HyperFlow: A Heterogeneous Dataflow Architecture. | |
CN101889265B (zh) | 内核处理器分组 | |
Peng et al. | A throughput-oriented nvme storage virtualization with workload-aware management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |