利用卸载处理器的调度和通信量管理的制作方法

文档序号:13767770阅读:116来源:国知局
所描述的诸实施例涉及计算机系统的调度和通信量管理服务,该服务可由具有卸载处理器的存储器总线连接的模块提供。
背景技术
:对网络分组流的高效管理和处理对高性能联网计算系统是关键的。依赖于硬件配置、进程流和数据流,网络分组流可能是高度可变的,并且数据处理需求跨越可从数秒到数小时范围内变化的若干数量级的时间尺度变化。可由系统使网络服务中的实质性改善成为可能,该系统可灵活地处理数据流,识别或表征数据流中的模式,并且改善对数据流的路由和处理决策。这对于使用分组切换通信的联网计算机环境是尤其重要的。例如,由于网络安全所需的分组检查,通常在数据流中造成延迟。可在分组的头部处或分组的有效载荷处引导此类分组检查,并且此类分组检查可包括处理器内容匹配、行为异常检测、“黑”或“白”名单比较等。其他高分组处理应用可包括加密/解密、服务质量受控的分组重组、流式传感器数据或者视频或音频处理。没有作为复杂数据流系统的部分而到达的用于调度分组处理的高效机制的情况下,用户可能在网络系统响应中遭遇不可接受的延迟。支持能够处理复杂数据流的流的分组交换结构的通常可用的通信量管理电路常包括深度受限的输出队列,由调度电路仲裁对这些深度受限的输出队列的访问。使用调度规则来管理输入队列以提供对传入数据流的通信量管理。调度器可分配或标识数据流优先级,并且将输出端口提供给这些数据流中的每一个数据流。如果多个数据流竞争同一个输出端口,则可提供对这些输出端口中的每一个输出端口的时间多路复用访问;或者,在多个数据流被向外发送到输出端口前,可由仲裁电路仲裁的多个数据流对输出端口的竞争。然而,通信量管理电路通常具有对信息的有限访问或不具有对信息的访问,该信息关于下游存储器或处理元件对数据的处理和管理。例如,基于优先级的分配,如果可在缓冲器中动态地对传入分组重排序,则可改善数据流的性能,从而有助于在这些队列中维持会话流的持续性。为此类分组处理优先级排定或通信量管理(TM)所选择的调度规则可通过以下方式来影响流和微流的通信量形状:延迟(缓冲)、通信量的突发(缓冲和突发)、通信量的平滑(缓冲以及限制流速率)、丢弃通信量(选择数据来丢弃以避免耗尽缓冲器)、或延迟抖动(临时地使流的单元移位不同量)。技术实现要素:本公开描述了适于充当用于分组处理系统的调度系统的系统、硬件和方法的诸实施例。该系统包括分类电路,该分类电路被连接到存储器总线,并且该分类电路配置成用于对网络分组进行分类。该分类电路可将经分类的网络分组置于第一组多个输入/输出队列中。调度电路可对从分类电路接收到的、通过第一组多个输入/输出队列的网络分组重排序,并且可将经重排序的网络分组置于第二组多个输入/输出队列中。仲裁电路将从调度电路接收到的、通过第二组多个输入/输出队列的网络分组引导到多个输出端口。多个卸载处理器(每一个卸载处理器都被连接到多个输出端口中的一个输出端口)分别被配置成用于修改网络分组。在某些实施例中,存储器总线支持直接存储器访问,并且多个卸载处理器可将经修改的分组往回引导到该存储器总线。此外,分类电路可基于会话元数据来对网络分组分类。在另一些实施例中,调度电路可基于相应的多个卸载处理器的可用性来引导网络分组;根据会话优先级来对网络分组重排序;发起针对多个卸载处理器的上下文切换;将网络分组转移到所定义的通信量管理队列中;校验多个卸载处理器中的每一个卸载处理器来确定相应的网络分组处理是否完成;或者以抢占式模式进行操作来控制会话执行。另一实施例是用于调度分组处理的方法,该方法包括:基于会话元数据对网络分组分类,并且将经分类的网络分组置于第一组多个输入/输出队列中的步骤,其中,使用具有所定义的存储器传输协议的存储器总线来将分组传输到分类电路。可将使用调度电路对从第一组多个输入/输出队列接收到的经重排序的网络分组置于第二组多个输入/输出队列中,其中,仲裁电路将从调度电路接收到的、通过第二组多个输入/输出队列的网络分组引导到多个输出端口中。可使用多个卸载处理器来修改这些网络分组,每一个卸载处理器分别被连接到多个输出端口中的一个输出端口,且相应的卸载处理器能够将经修改的分组往回引导到存储器总线。所描述的另一实施例包括用于调度用于网络分组处理的服务的存储器总线连接的模块。该模块包括存储器总线连接和调度电路,该调度电路用于对从存储器总线连接接收到的网络分组重排序,并且用于将经重排序的网络分组置于多个输入/输出队列中。多个卸载处理器被连接到存储器总线连接,每一个卸载处理器都能够修改被置于多个输入/输出队列中的网络分组。存储器总线连接可兼容存储器总线插槽,并且在某些实施例中,存储器总线连接可被形成为适合双列直插存储器(DIMM)插槽。附图说明图1-0示出根据实施例的通信量管理和调度器系统。图1-1示出根据实施例的调度过程。图1-2示出根据实施例的支持多个调度电路和仲裁电路的模块。图2-0到2-3示出根据各实施例的处理器模块。图2-4示出常规的双列直插(dual-in-line)存储器模块。图2-5示出根据另一实施例的系统。图3示出可被包括在诸实施例中的存储器总线连接的卸载处理器的一个特定实现。图4示出根据实施例的调度过程的示例性流程图。具体实施方式现在将参照多个附图详细描述本发明的各实施例。诸实施例示出用于在分组处理系统中调度分组流的处理系统和方法。可由连接到系统的存储器总线的卸载模块或凭借使用该卸载模块来执行此类调度。此类卸载处理器可增加到被连接到系统存储器总线的任何主机处理器,并且,在一些实施例中,此类卸载处理器可独立于任何主机处理器来处理在系统存储器总线上被转移的分组。在非常特定的实施例中,处理模块可填充用于将直插式(in-line)存储器模块(例如,DIMM)连接到系统存储器总线的物理插槽。图1-0是用于提供调度和通信量管理服务的系统100的图。系统100可包括交换机106、主机处理器部108/110、存储器控制器112以及卸载处理器部116/116/118。在所示的特定实施例中,主机处理器部可包括交换机106、交换结构108、主机处理器110以及被连接到存储器控制器112的总线互连109。此外,卸载处理部可与存储器控制器112通信,并且可包括交换机114、调度器116和卸载处理器118。在操作中,交换机106可接收和/或传送来自数据源102的数据分组104。数据源102可以是分组数据的任何合适的源,包括因特网、网络云、交互或内部数据中心网、群集计算机、机柜系统、多个或单个的服务器或个人计算机等。数据可以是基于分组或交换机的,但是在特定实施例中,为了易于处理,一般将非分组数据转换或封装为分组。数据分组通常具有某些特性,包括传输协议号、源和目的地端口号,或源和目的地(网际协议)IP地址。数据分组可进一步具有有助于分组分类和管理的相关联的元数据。交换机106可以是虚拟交换机(I/O设备)。交换机106可包括但不限于兼容外围组件互连(PCI)的设备和/或PCI快速(PCIe)设备,它们经由PCI或PCIe总线107与主机主板连接。交换机106可包括网络接口控制器(NIC)、主机总线适配器、聚合网络适配器或交换或异步传输模式(ATM)网络接口。在一些实施例中,交换机106可采用IO虚拟化方案,诸如,用于使单网络I/O设备表现为多个设备的单根I/O虚拟化(SR-IOV)接口。SR-IOV通过提供物理控制和虚拟功能两者来许可对各种PCIe硬件功能之间的资源的单独访问。在某些实施例中,交换机106可支持开放流或类似的软件定义的联网以脱离控制平面进行抽象。第一虚拟交换机的控制平面执行诸如路由确定、目标节点标识等的功能。交换机106能够检查网络分组,并使用其控制平面来创建用于网络分组的合适的输出端口。基于对网络分组或与这些网络分组相关联的数据流的路由计算,交换机106的转发平面可将分组转移到输出接口。可将交换机的输出接口与IO总线连接,并且在某些实施例中,交换机106可具有直接地(或经由I/O结构108间接地)将网络分组转移到存储器总线互联109的能力以供存储器读取或写入操作(直接存储器访问操作)。从功能上而言,对于某些应用,可基于控制平面功能分派网络分组用于传输到特定的存储器位置。也可将被连接到IO结构108和存储器总线互连109的交换机106连接到主机处理器110。主机处理器110可包括能提供计算服务的一个或多个主机处理器,其包括供应代理111。供应代理111可以是在主机处理器110上运行的操作系统或用户代码的部分。供应代理111通常初始化由系统100提供的虚拟功能驱动器并与之交互。虚拟功能驱动器可负责提供其中需要直接存储器寻址(DMA)的存储器空间的虚拟地址。可将映射至物理地址的虚拟地址分配给每一个设备驱动器。可使用设备模型来创建对主机处理器110的物理设备的仿真以识别可被创建的多个虚拟功能(VF)中的每一个。可将设备模型复制多次以给予VF驱动器(与虚拟IO设备交互的驱动器)它们正在与物理设备交互的印象。例如,可使用某个设备模型来仿真VF驱动器可采取动作以连接的网络适配器。设备模型和VF驱动器能以特权模式或非特权模式运行。关于哪个设备主管/运行对应于设备模型和VF驱动器的代码可能没有限制。然而,代码可具有创建设备模型和VF驱动器的多个副本的能力以使所述I/O接口的多个副本能够被创建。在某些实施例中,操作系统还能够创建用于由VF驱动器支持的应用的所定义的物理地址空间。此外,主机操作系统可将虚拟存储器地址空间分配给应用或供应代理。供应代理111可与主机操作系统进行调解以创建虚拟地址与可用的物理地址空间的子集之间的映射。供应代理111可负责创建每一个VF驱动器并将所定义的虚拟地址空间分配给它。通过此类存储器映射的操作,可将数据(例如,分组数据)从交换机106传送到卸载处理器部114/116/118。也可由存储器总线109将第二交换机114连接到存储器控制器112。第二交换机114可以是虚拟交换机,并且可往返于卸载处理器118接收并交换发源于存储器总线109的通信量。通信量可包括但不限于经过由卸载处理器118支持的处理的、去往由供应代理111创建并分派的虚拟设备的数据流。第二交换机114的转发平面将分组从存储器总线109传输到卸载处理器118,或从卸载处理器118往回传输到存储器总线109上。对于某些应用,所描述的系统架构可允许网络分组到卸载处理器118的相对直接的传递,并对主机处理器110具有最小的中断或没有中断。在基于所定义的仲裁和调度方案进行的向不同的硬件调度器的分配之前,第二交换机114能够接收分组并对它们分类。硬件调度器116接收可被分派到流会话的分组,这些流会话经调度以便由卸载处理器118在一个或多个分开的会话中进行处理。在特定实施例中,可采用调度器116来实现对传入分组的通信量管理。可将来自某个资源的、关于某种通信量类别的、涉及特定应用的或流向某个插槽的分组称为会话流的部分,并且可使用会话元数据来对它们分类。会话元数据通常充当准则,通过该准则,可排定分组的优先级并由此可基于它们的会话元数据来对传入分组重排序。对分组的该重排序可发生在一个或多个缓冲器中,并可修改这些流的通信量形状。可将基于会话元数据重排序的会话分组发送到使用仲裁电路(未示出)而被向外仲裁到输出端口的特定的经通信量管理的队列。仲裁电路可直接将这些分组流馈送到下游分组处理/终止资源。某些实施例提供线程和队列管理的整合以便增强下游资源通过所述线程处理终止网络数据的吞吐量。如将理解的那样,可在本文中所描述的系统实施例中使用多种类型的常规输入/输出总线,诸如,PCI、光纤信道。总线架构也可基于相关的JEDEC标准,基于DIMM数据传输协议,基于超传输或任何其他合适的高速度、低等待时间互连系统。卸载处理器118可包括:双倍数据速率(DDR)动态随机存取存储器(DRAM)、低等待时间DRAM(RLDRAM)、嵌入式DRAM、诸如混合存储器立方(HMC)之类的下一代栈式存储器、闪存、或其他合适的存储器、分离逻辑或总线管理芯片、诸如现场可编程门阵列(FPGA)之类的可编程单元、自定义设计的专用集成电路(ASIC)以及基于ARM、ARC、泰思立达(Tensilica)、MIPS、Strong/ARM或RISC架构的处理器之类的高能效通用处理器。主机处理器110可包括通用处理器,该通用处理器包括基于英特尔或AMDx86架构、英特尔安腾架构、MIPS架构、SPARC架构等的处理器。图1-1示出硬件调度的数据流方法140的一个实施例,该方法140适用于结合像图1-0的实施例那样的实施例进行的操作。如流程图140中所看到的那样,硬件调度器可通过基于会话对分组进行分离来管理通信量(141)。在一些实施例中,通过分组的元数据来标识会话。可对会话排定优先级并将会话排成队列(142),并且可使用在一个或多个卸载处理器上运行的通用操作系统(OS)来控制当前会话的执行(143)。硬件调度器可使用OS的当前状态以在针对存储器资源的竞争进程之间作出调度决策和仲裁,OS的当前状态包括会话编号、会话状态、来自OS的关于处理资源或将来的调度要求的反馈等。如果满足某些条件,则硬件调度器可发起上下文切换,在上下文切换中,当前会话使得它的状态被存储在存储器中,并且开始新会话或返回到新会话(145)。图1-2示出硬件调度器150(即,调度电路)的一个实施例。硬件调度器150可包括输入端口152/152’、分类电路154、输入队列(一个被示出为156)、调度电路158/158’、输出队列(一个被示出为160)、仲裁电路162和输出端口164/164’。被连接到硬件调度器的可以是普通的分组状态寄存器166/166’、分组缓冲器168/168’、一个或多个高速缓存存储器端口170(在一个特定实施例中,它可以是加速器一致性端口ACP)以及低等待时间存储器172。应理解,虽然图1-2示出具有两个输入端口和两个输出端口的架构,但是替代实施例可包括一个输入端口和一个输出端口,或可包括多于两个的此类端口。硬件调度器150可从仲裁器电路(未示出)接收分组,该仲裁器电路被连接到若干此类硬件调度器。硬件调度器150可在一个或多个输入端口152/152’处接收此类数据。硬件调度器150可采用分类电路154,该分类电路154可检查传入分组,并且基于这些分组中存在的元数据来将这些分组分类为不同的传入队列。分类电路154可检查不同的分组头部,并且可使用间隔匹配电路来实施对传入分组的分离。在2007年8月4日向Dalal颁证的美国专利7,760,715(后文中称为‘715专利)中描述了一个合适的间隔匹配电路。然而,可采用任何其他合适的分类方案来执行分类电路。可将硬件调度器150与分组状态寄存器166/166’连接,以便与卸载处理器(未示出)通信。可由硬件调度器150和在卸载处理器上运行的OS两者操作寄存器166/166’。也可将硬件调度器与分组缓冲器168/168’连接,以便存储会话的传出分组或处理到卸载处理器OS/由卸载处理器OS处理。下文中给出对可被包括在诸实施例中的分组状态寄存器和分组缓冲器的详细解释。硬件调度器150可使用端口170以在卸载处理器的高速缓存中访问与当前正在卸载处理器OS上运行的会话有关的数据,并且在切换到不同会话的上下文切换期间使用批量转移将该数据向外转移。硬件调度器150可使用高速缓存转移来减少与会话相关联的开销。硬件调度器150也可使用低等待时间存储器172来存储来自高速缓存的与会话相关的信息,以用于该会话的后续访问。如上所述,硬件调度器150可具有多于一个的输入端口152/152’。进入硬件调度器的数据可以是等待在卸载处理器处被终止的分组数据,或者可以是等待被处理、被修改或被切换出的分组数据。硬件调度器150可负责基于对分组数据的检查来将传入分组隔离为对应的应用会话。硬件调度器150能够进行分组检查并标识有关的分组特性。硬件调度器150可将网络栈的部分从由此类网络栈处理引起的开销卸载到空闲的卸载处理器。硬件调度器150可实施TCP/传输卸载、加密/解密卸载、分离和重组等中的任何一项,由此允许卸载处理器直接使用网络分组的有效载荷。在一些实施例中,硬件调度器150可进一步具有将属于会话的分组转移到特定的通信量管理队列(例如,156)的能力,以便进行队列的调度(158)以及向输出队列的转移(160)。可使用硬件调度器150来控制将这些持续会话中的每一个会话调度到通用OS中。跨多级(包括通用OS)的流水线保持会话(sticknessofsession)可由调度器电路150强调,该调度器电路在这些级中的每一级处实施优化(如下文中更详细描述的那样)。例如,硬件调度器150可考虑下游执行资源。可通过输出端口将这些队列中的每一个队列中经队列排定的会话流发送到下游网络元件。在‘715专利中示出此类调度的一个特定实现,该‘715专利通过引用被整体结合在本文中。仍然参考图1-2,硬件调度器150可采用仲裁电路162来仲裁或以其他方式控制多个通信量管理输出队列对可用的输出端口的访问。可通过分组缓冲器168/168’将输出端口中的每一个连接到卸载处理器核中的一个。分组缓冲器168/168’可进一步包括头部(header)池和分组体(body)池。头部池可仅包含将由卸载处理器处理的分组的头部。有时,如果待处理的分组的尺寸足够小,则该头部池可包含整个分组。可依赖于在卸载处理器处实施的操作的性质来将分组转移到头部池/分组体池。对于分组处理、覆盖、分析、过滤和其他此类应用,仅将分组头部转移到卸载处理器可能是合适的。在这种情况下,依赖于对分组头部的处理,可将分组体与分组头部缝接在一起并在出口接口上转移,或丢弃。对于需要终止分组的应用,可转移整个分组体。卸载处理器核可接收分组并对它们执行合适的应用会话,以便执行所述分组的内容。硬件调度器150可在下游处理器上调度不同的会话,其中,协作地操作两者来减少上下文切换期间的开销。可将硬件调度器150理解为不仅以线路速度在传出队列或会话流之间仲裁,而且还以非常高的速度在被终止的会话之间仲裁。硬件调度器150可管理对卸载处理器上的会话进行的排队。调度电路158/158’可负责将每一个会话流排队到OS中,作为不同的OS处理实体。调度电路158/158’可负责在OS上导致新应用会话的执行。调度电路158/158’可基于由它实施的通信量管理来向OS指示新会话的分组是可用的。也可向硬件调度器150通知卸载处理器上的执行资源的状态、被运行在执行资源上的当前会话、分配给它的存储器空间、以及处理器高速缓存中会话上下文的位置。它可使用执行资源的状态来实施通信量管理和仲裁决策。硬件调度器150可提供操作系统上的线程管理与传入分组的通信量管理的整合。它可包括跨一系列组件(包括通信量管理队列和卸载处理器上的处理实体)的持续通信量流。在下游(例如,卸载)处理器上运行的OS可将诸如处理器循环和存储器之类的执行资源分配给它当前正在处理的特定队列。该OS可进一步为那个特定队列分配线程或一组线程,使得可由通用处理元件明确地将该特定队列作为单独的实体来处理。具有运行于通用(GP)处理资源上的多个会话,并且每一个会话处理来自驻留在硬件调度器上的队列中的特定会话流的数据的事实可紧密地整合硬件调度器和下游资源。这可带来跨通信量管理和调度电路和通用处理资源的会话信息之内的持续的元素。此外,可修改卸载OS以减少与资源之间的上下文切换相关联的损失和开销。这可进一步由硬件调度器来开发以实施在队列之间的无缝切换,并因此由执行资源将它们作为不同的会话来执行。实际上,在一些实施例中,可采用硬件调度器来实现对传入分组的通信量管理。可将来自某个资源的、关于某种通信量类别的、涉及特定应用的或流向某个插槽的分组称为会话流的部分,并且使用会话元数据来对它们分类。会话元数据通常充当准则,通过该准则来排定分组的优先级,并由此基于它们的会话元数据来对传入分组重排序。对分组的该重排序可发生在一个或多个缓冲器中,并可修改这些流的通信量形状。可将基于会话元数据而被重排序的会话分组发送到使用仲裁电路而被向外仲裁到输出端口的特定的经通信量管理的队列。仲裁电路(例如,162)可直接将这些分组流馈送到下游分组处理/终止资源。某些实施例提供线程和队列管理的整合以便增强下游资源通过所述线程处理终止网络数据的吞吐量。相应地,硬件调度器可执行以下功能中的任何功能:a)硬件调度器负责实施对传入网络分组(和流)的通信量管理、仲裁和调度;b)硬件调度器负责对卸载OS的网络栈的部分进行卸载,使得可保持卸载OS免于栈级处理,并且资源免于实施对应用会话的执行;c)硬件调度器负责基于分组元数据对分组进行的分类,并且被分类成不同会话的分组在输出通信量队列中被排成队列,这些输出通信量队列被发送到卸载OS;d)硬件调度器负责与卸载OS上的被终止的会话之间的最小开销的上下文切换协作;硬件调度器确保能够以尽可能小的开销来切换卸载OS上的多个会话(在卸载会话上的多个会话之间进行切换的能力使得以非常高的速度终止多个会话是可能的,从而提供了被终止会话的分组处理速度);d)硬件调度器负责将每一个会话流排队列到OS中作为不同的OS处理实体;e)硬件调度器负责在OS上导致新应用会话的执行,该硬件调度器可基于由它实施的通信量管理来向OS指示新会话的分组是可用的;f)向硬件调度器通知卸载处理器上的执行资源的状态、被运行在执行资源上的当前会话和分配给它的存储器空间、以及处理器高速缓存中会话上下文的位置。硬件调度器可使用执行资源的状态来实施通信量管理和仲裁决策。硬件调度器可提供操作系统上的线程管理与传入分组的通信量管理的整合。它可包括跨一系列组件(包括通信量管理队列和卸载处理器上的处理实体)的持续通信量流。如将理解的那样,可以在运行于多个处理核上的多个线程上实现上述处理任务中的许多处理任务。进入多个线程上下文的任务此类并行化可提供增加的吞吐量。诸如MIPS之类的处理器架构可包括用于改善每个循环的指令数量的深指令流水线。此外,运行多线程编程环境的能力导致对现有处理器资源的增强的使用。为了进一步增加硬件上的并行执行,处理器架构可包括多个处理器核。包括相同类型核的多核架构(被称为同构核架构)通过使线程或进程跨多个核并行化来提供更高的指令吞吐量。然而,在此类同构核架构中,诸如存储器之类的共享资源在少量的处理器上分摊。在另一些实施例中,多个卸载处理器或主机处理器可驻留在被连接到单独的机架(rack)单元或刀片(blade)的模块上,该单独的机架单元或刀片转而驻留在机架或单独的服务器上。可进一步将这些编组为群集或数据中心,这些群集或数据中心在空间上可位于相同的建筑物中、位于相同的城市中或甚至位于不同的国家中。可将任何编组等级彼此连接和/或连接到公共的或私有的云互联网。存储器和I/O访问可能导致大量的处理器开销。此外,常规的通用处理单元中的上下文切换可能是计算密集型的。因此,在处理多个联网应用的联网计算资源中减少上下文切换开销以增加处理器吞吐量是所期望的。常规服务器负载可能需要复杂的传输、高存储器带宽、极端量的数据带宽(经随机访问的、并行化的和高度可用的),但经常伴随轻触(lighttouch)处理:HTML、视频、分组(packet)级服务、安全和分析。此外,闲置的处理器仍然消耗它们峰值功耗的大于50%。相比之下,根据本文中的诸实施例,可在创建在多个卸载处理器核上的插槽抽象的背后来处理复杂传输的、数据带宽密集型、面向频繁的随机访问的“轻”触处理负载。同时,可由主机处理器核(例如,x86处理器核)上的插槽抽象来处理“重”触(“heavey”touch)的计算密集型负载。此类软件插槽可允许对ARM处理器核与x86处理器核之间的这些负载的自然分区。通过对新的应用层级插槽的使用,根据诸实施例,可以跨卸载处理核和主机处理核来分解服务器负载。图2-0到2-5描述了用于使用处理模块来提供调度和通信量管理服务的硬件实施例和方法的诸方面。在特定实施例中,此类处理模块可包括用于支持卸载处理的DIMM可装载模块。图2-0是根据一个实施例的处理模块200的框图。处理模块200可包括物理连接器202、存储器接口204、仲裁器逻辑206、卸载处理器208、本地存储器210和控制逻辑212。连接器202可提供到系统存储器总线的物理连接。这与可经由存储器控制器等访问系统存储器总线的主机处理器形成对比。在非常特定的实施例中,连接器202可兼容计算系统的双列直插存储器模块(DIMM)插槽。相应地,可用一个或多个处理模块200或处理模块与DIMM模块的混合来填充包括多个DIMM插槽的系统。存储器接口204可检测系统存储器总线上的数据转移,并且在适当的的情况下,可允许将写入数据存储在处理模块200中和/或从处理模块200读取出读取数据。此类数据转移可包括对具有特定网络标识符的分组数据的接收。在一些实施例中,存储器接口204可以是从属接口(slaveinterface),因此,数据转移受与处理模块200分开的主设备(masterdevice)控制。在非常特定的实施例中,存储器接口204可以是用于适应由DMA主设备(master)发起的系统存储器总线上的DMA转移的直接存储器访问(DMA)从属设备(slave)。在一些实施例中,DMA主设备可以是与主机处理器不同的设备。在此类配置中,处理模块200可接收用于处理的数据(例如,DMA写入),并且在不消耗主机处理器资源的情况下向外转移经处理的数据(例如,DMA读取)。存储器接口204可检测系统存储器总线上的数据转移,并且在适当的的情况下,可允许将写入数据存储在处理模块200中和/或从处理模块200读取出读取数据。在一些实施例中,存储器接口204可以是从属接口,因此,数据转移受与处理模块分开的主设备控制。在非常特定的实施例中,存储器接口204可以是用于适应由DMA主设备(master)发起的系统存储器上的DMA转移的直接存储器访问(DMA)从属设备(slave)。在一些实施例中,DMA主设备可以是与主机处理器不同的设备。在此类配置中,处理模块200可接收用于处理的数据(例如,DMA写入),并且在不消耗主机处理器资源的情况下向外转移经处理的数据(例如,DMA读取)。仲裁器逻辑206可在处理模块200之内的冲突的数据访问之间进行仲裁。在一些实施例中,仲裁器逻辑206可在由卸载处理器208进行的访问与在处理器模块200外部的访问之间进行仲裁。应理解,处理模块200可包括同时对其进行操作的多个位置。应理解,由仲裁器逻辑206仲裁的访问可包括对由处理器模块200占据的物理系统存储器空间的访问以及对其他资源(例如,卸载处理器或主机处理器的高速缓存存储器)的访问。相应地,用于仲裁器逻辑206的仲裁规则可根据应用而变化。在一些实施例中,对于给定的处理器模块200,可固定此类仲裁规则。在此类情况下,可通过切出不同的处理模块来适应不同的应用。然而,在替代实施例中,此类仲裁规则可以是可配置的。卸载处理器208可包括可对在系统存储器总线上转移的数据进行操作的一个或多个处理器。在一些实施例中,卸载处理器可运行通用操作系统或诸如Apache(仅作为一个非常特定的示例)之类的服务器应用,从而允许保存和检索处理器上下文。可由硬件调度器处理由卸载处理器208执行的计算任务。卸载处理器208可对在处理器模块200上经缓冲的数据进行操作。附加地或替代地,卸载处理器208可访问被存储在系统存储器空间中别处的数据。在一些实施例中,卸载处理器208可包括配置成用于存储上下文信息的高速缓存存储器。卸载处理器208可包括多个核或一个核。可将处理器模块200包括在具有主机处理器(未示出)的系统中。在一些实施例中,卸载处理器208相比于主机处理器可以是不同类型的处理器。在特定实施例中,卸载处理器208相比主机处理器可消耗更少的功率和/或具有更少的计算功率。在非常特定的实施例中,卸载处理器208可以是“孱弱的”(“wimpy”)核处理器,而主机处理器可以是“强健的”(“brawny”)核处理器。然而,在替代实施例中,卸载处理器208可具有等于任何主机处理器的计算功率。在非常特定的实施例中,主机处理器可以是x86型处理器,而卸载处理器208可包括ARM、ARC、泰思立达(Tensilica)、MIPS、Strong/ARM或RISC型处理器,仅举数例。本地存储器210可连接到卸载处理器208以启用对上下文信息的存储。相应地,卸载处理器208可存储当前的上下文信息,并随后切换到新计算任务,之后检索该上下文信息以恢复先前的任务。在非常特定的实施例中,本地存储器210相对于系统中的其他存储器可以是低等待时间存储器。在一些实施例中,对上下文信息的存储可包括复制卸载处理器208的高速缓存。在一些实施例中,本地存储器210中的相同空间可由相同类型的多个卸载处理器208访问。按此方式,可由不同的卸载处理器恢复由一个卸载处理器存储的上下文。控制逻辑212可控制由卸载处理器执行的处理任务。在一些实施例中,可将控制逻辑212考虑为硬件调度器,该硬件调度器可被概念化为包括数据评价器214、调度器216和切换控制器218。数据评价器214可从在系统存储器总线上转移的写入数据中提取“元数据”。如本文中所使用的那样,“元数据”可以是嵌入在写入数据块的一个或多个预定位置处的任何信息,该信息指示将对该写入数据块的全部或部分执行的处理和/或指示指示该数据所属于特定任务/进程(例如,分类数据)。在一些实施例中,元数据可以是指示该写入数据块的较高层级的组织的数据。仅作为非常特定的实施例,元数据可以是一个或多个网络分组(其可能或可能不被封装在较高层的分组结构中)的头部信息。调度器216(例如,硬件调度器)可对卸载处理器208的计算任务排序。在一些实施例中,调度器216可生成在接收到供处理的写入数据时持续地被更新的调度。在非常特定的实施例中,调度器216可基于切换卸载处理器208的上下文的能力来生成此类调度。按此方法,可在运行时(onthefly)调整模块上计算优先级。在非常特定的实施例中,调度器216可根据计算任务来将物理地址空间的部分(例如,本地存储器210中的存储器位置)分派给卸载处理器208。卸载处理器208随后可在此类不同的空间之间切换,在每一次切换之前保存上下文信息,并在之后当返回到存储器空间时还原上下文信息。切换控制器218可控制卸载处理器208的计算操作。在特定实施例中,根据调度器216,切换控制器218可对卸载处理器208排序以切换上下文。应理解,上下文切换操作可以是响应于来自切换控制器218的单个命令而执行的“原子”操作。附加地或替代地,切换控制器218可发布存储当前的上下文信息、重新调用上下文信息等的指令集。在一些实施例中,处理器模块200可包括缓冲器存储器(未示出)。缓冲器存储器可将接收到的写入数据存储在处理器模块的板上。可在完全不同的存储器设备的集合上实现缓冲器存储器,或缓冲器存储器可以是以逻辑和/或卸载处理器嵌入的存储器。在后一种情况下,仲裁器逻辑206可仲裁对缓冲器存储器的访问。在一些实施例中,缓冲器存储器可对应于系统物理存储器空间的部分。系统存储器空间的其余部分可对应于被连接到相同的系统存储器总线的其他相似的处理器模块和/或存储器模块。在一些实施例中,缓冲器存储器可与本地存储器210不同。例如,缓冲器存储器可具有相比本地存储器210更慢的访问时间。然而,在其他实施例中,可用同样的存储器设备来实现缓冲器存储器和本地存储器。在非常特定的实施例中,供处理的写入数据可具有所预期的最大流速率。可将处理器模块200配置为以此类流速率或以比此类流速率快的速率对此类数据进行操作。按此方法,主设备(未示出)可在没有覆写“处理中”数据的危险的情况下将数据写入到处理器模块。可将处理器模块200的各种计算元件实现为一个或多个集成电路设备(IC)。应理解,可在相同或不同的IC中形成图2-0中所示的各种组件。例如,可将控制逻辑212、存储器接口214和/或仲裁器逻辑206实现在一个或多个逻辑IC上,而卸载处理器208和本地存储器210是分开的IC。逻辑IC可以是固定逻辑(例如,专用IC)、可编程逻辑(例如,现场可编程门阵列,FPGA)或它们的组合。有利的是,相比传统的计算系统,上述硬件和系统可提供改善的计算性能。常规系统(包括基于x86处理器的那些系统)通常装备不足以处理此类高容量应用。即便在闲置时,x86处理器也使用显著量的功率,并且针对高带宽分组分析或其他高容量处理任务的近于连续的操作使得处理器能量成本是占主导的价格因素中的一个因素。此外,常规系统可能具有上下文切换的高成本问题,在上下文切换中,需要主机处理器执行可包括从一个线程切换到另一线程的指令。此类切换可能需要存储并再次调用线程的上下文。如果此类上下文数据是驻留在主机高速缓存存储器中的,则此类上下文切换可相对快速地发生。然而,如果此类上下文数据不再位于高速缓存存储器中(即,高速缓存未命中),则必须从系统存储器中重新调用该数据,这可能导致多个循环的等待时间。在上下文切换期间连续的高速缓存未命中可能不利地影响系统性能。图2-1示出根据一个非常特定的实施例的处理器模块200-1,其能够减少与关联于许多常规服务器系统的高容量处理或上下文切换相关联的问题。处理器模块200-1可包括被装载到印刷电路板(PCB)型基板222的IC220-0/1。PCB型基板222可包括直插式模块连接器202,在一个非常特定的实施例中,直插式模块连接器202可以是兼容DIMM的连接器。IC220-0可以是集成多个功能的片上系统(SoC)型设备。在所示的非常特定的实施例中,IC220-0可包括嵌入式处理器、逻辑和存储器。此类嵌入式处理器可以是本文中所述的卸载处理器208或其等效物。此类逻辑可以是本文中所述的控制器逻辑212、存储器接口204和/或仲裁器逻辑206中的任何一个或它们的等效物。此类存储器可以是本文中所述的本地存储器210、卸载处理器208的高速缓存处理器或缓冲器存储器中的任何一个或它们的等效物。逻辑IC220-1可提供不被包括在IC220-0中的逻辑功能。图2-2示出根据另一非常特定的实施例的处理器模块200-2。处理器模块200-2可包括被装载到类似图2-1的基板那样的PCB型基板222的IC220-2、-3、-4、-5。然而,与图2-1不同,处理器模块功能被分布在单一目的型IC之间。IC220-2可以是处理器IC,该处理器IC可以是卸载处理器208。IC220-3可以是存储器IC,该存储器IC可包括本地存储器210、缓冲器存储器或它们的组合。IC220-4可以是逻辑IC,该逻辑IC可包括控制逻辑212,并且在一个非常特定的实施例中可以是FPGA。IC220-5可以是另一逻辑IC,该另一逻辑IC可包括存储器接口204和仲裁器逻辑206,并且在一个非常特定的实施例中也可以是FPGA。应理解,图2-1/2仅表示各种实现中的两个。可在任何合适数量的IC(包括单SoC型IC)上分布处理器模块的各种功能。图2-3示出根据非常特定的实施例的处理器模块200-1或200-2的背面。处理器模块200-3可包括多个存储器IC,一个被示出为220-6,其被装载到类似图2-1的基板那样的PCB型基板222。应理解,可将各种处理和逻辑组件装载在所示面的反面。可将存储器IC220-6配置为表示系统的物理存储器空间的部分。存储器IC220-6可执行以下功能中的任何一个或全部:独立于其他处理器模块组件而进行操作,从而提供以常规方式访问的系统存储器;充当缓冲器存储器,从而存储可利用其他处理器模块组件来处理的写入数据;或充当用于存储处理器上下文信息的本地存储器。图2-4示出常规的DIMM模块(即,它仅提供存储器功能),该模块可连同本文中所述的处理器模块或它们的等效物来填充存储器总线。图2-5示出根据一个实施例的系统230。系统230可包括经由多个可直插式模块插槽(一个被示出为226)访问的系统存储器总线228。根据诸实施例,可由本文中所述的处理器模块200或等效物来占据插槽226中的任何一个或全部。在处理模块200未占据所有的插槽226的情况下,可由常规的直插式存储器模块224占据可用的插槽。在非常特定的实施例中,插槽226可以是DIMM插槽。在一些实施例中,处理器模块200可占据一个插槽。然而,在其他实施例中,处理器模块可占据多个插槽。在一些实施例中,可进一步将系统存储器总线228与一个或多个主机处理器和/或输入/输出设备(未示出)对接。已描述了根据各实施例的处理器模块,现在将描述根据特定实施例的能够经由存储器总线与服务器或类似系统对接的卸载处理器模块的操作。图3示出根据另一实施例的系统301。系统301可将需要网络覆盖服务的分组数据传输到位于模块上的一个或多个计算单元(一个被示出为300),在特定实施例中,这一个或多个计算单元可包括兼容现有存储器模块的连接器。在一些实施例中,计算单元300可包括本文中的实施例中所描述的处理器模块或等效物。计算单元300可能能够拦截或以其他方式访问在存储器总线316上发送的分组,并且实施对此类分组的处理,包括但不限于终止或元数据处理。系统存储器总线316可以是像本文中所描述的那些或等效物(例如,228)的系统存储器总线。仍然参考图3,系统301可包括I/O设备302,该I/O设备302可从外部源接收分组或其他I/O数据。在一些实施例中,I/O设备302可包括由物理设备生成的、用于从网络或另一计算机或虚拟机接收分组或其他I/O数据的物理或虚拟功能。在所示非常特定的实施例中,I/O设备302可包括具有输入缓冲器302a(例如,DMA环缓冲器)和I/O虚拟化功能302b的网络接口卡(NIC)。根据诸实施例,I/O设备302可写入描述符,该描述符包括分组的必要的存储器操作的细节(即,读取/写入、源/目的地)。可(例如,由系统301的操作系统)将虚拟存储器位置分派给此类描述符。然后,I/O设备302与输入输出存储器管理单元(IOMMU)304通信,该IOMMU304可利用IOMMU功能304b来将虚拟地址转换为对应的物理地址。在所示的特定实施例中,可将转换后备缓冲器(TLB)304a用于此类转换。然后,可经由系统301的存储器控制器306b利用直接存储器传输(例如,DMA)来执行I/O设备与系统存储器位置之间的虚拟功能读取或写入数据。可由主机总线312将I/O设备302连接到IOMMU304。在一个非常特定的实施例中,主机总线312可以是外围互连(PCI)型总线。可在中央处理单元I/O(CPUIO)306a处将IOMMU304连接到主机处理部306。在所示实施例中,此类连接314可支持超传输(HT)协议。在所示实施例中,主机处理部306可包括CPUIO306a、存储器控制器306b、处理核306c和对应的供应代理306d。在特定实施例中,计算单元300可经由标准直插式模块连接与系统总线316对接,在非常特定的实施例中,该连接可包括DIMM型插槽。在所示实施例中,存储器总线316可以是DDR3型存储器总线。替代实施例可包括任何合适的系统存储器总线。可由存储器控制器306b经由存储器总线316将分组数据发送到DMA从属接口310a。可使DMA从属接口310a适于通过存储器总线316接收来自DMA写入的经封装的读取/写入指令。硬件调度器(308b/c/d/e/h)可通过根据使用会话元数据的流来对传入分组分类以执行对这些传入分组的通信量管理。可对分组排队列,以便基于会话优先级在板载(onboard)存储器(310b/308a/308m)中输出。当硬件调度器确定针对特定会话的分组准备好由卸载处理器308i来处理时,用信号通知板载存储器以便进行到该会话的上下文切换。利用该优先级排定方法,相比常规方式可减小上下文切换开销。也就是说,硬件调度器可处理上下文切换决策并由此优化下游资源(例如,卸载处理器308i)的性能。如上所述,在非常特定的实施例中,卸载处理器308i可以是“孱弱核”型处理器。根据一些实施例,主机处理器306c可以是“强健核”型处理器(例如,x86或能够处理“重触”计算操作的任何其他处理器)。虽然将I/O设备302配置为响应于传入分组来触发主机处理器中断,但根据诸实施例,可禁用此类中断,进而减少主机处理器306c的处理开销。在一些非常特定的实施例中,卸载处理器308i可包括ARM、ARC、泰思立达(Tensilica)、MIPS、Strong/ARM或能够处理“轻触”操作的任何其他处理器。优选地,卸载处理器可运行用于执行多个会话的通用操作系统,可优化这些会话以便与硬件调度器联合来减少上下文切换开销。仍然参考图3,在操作中,系统301可在网络接口上接收来自外部网络的分组。基于由I/O设备302采用的分类逻辑和原理,分组去往主机处理器306c或卸载处理器308i。在特定实施例中,I/O设备302可作为虚拟化NIC进行操作,可将针对特定逻辑网络或去往某个虚拟MAC(VMAC)地址的分组定向到单独的队列中,并将它们发送到目的地逻辑实体中。此类安排可将分组转移到不同的实体。在一些实施例中,每一个此类实体可具有虚拟驱动器、该实体用来与所连接的虚拟网络通信的虚拟设备模型。根据诸实施例,可使用多个设备将通信量重定向到特定的存储器地址。因此,网络设备中的每一个就像它正在将分组转移到逻辑实体的存储器位置那样进行操作。然而,实际上,此类分组被转移到可由一个或多个卸载处理器(例如,308i)在其中处理它们的存储器地址。在特定实施例中,此类转移去往物理存储器地址,从而可从处理中去除逻辑实体,并且主机处理器可免于此类分组处理。相应地,可将诸实施例概念化为存储器“黑箱”,可将特定的网络数据馈送给该存储器“黑箱”。此类存储器黑箱可处理数据(例如,处理它),并在此类数据被请求时往回进行响应。仍然参考图3,根据一些实施例,I/O设备302可从网络或从计算设备接收数据分组。数据分组可具有某些特性,包括例如,传输协议号、源和目的地端口号,源和目的地IP地址。数据分组可进一步具有经处理并有助于它们的分类和管理的元数据(308d)。I/O设备302可包括但不限于外围组件互连(PCI)和/或PCI快速(PCIe)设备,该PCI和/或PCIe设备经由PCI或PCIe总线(例如,312)与主机主板连接。I/O设备的示例包括网络接口控制器(NIC)、主机总线适配器、聚合网络适配器、ATM网络接口等。为了提供允许多个逻辑实体访问相同的I/O设备302的抽象方案,可使I/O设备虚拟化以提供多个虚拟设备,其中的每一个虚拟设备可执行物理I/O设备的功能中的一些功能。根据实施例的I/O虚拟化程序(例如,302b)可将通信量重定向到不同的存储器位置(并由此重定向到附连到存储器总线上的模块的不同的卸载处理器)。为了实现这一点,可将I/O设备302(例如,网络卡)划分为若干功能部分;包括支持输入/输出虚拟化(IOV)架构(例如,单根IOV)的控制功能(CF)和多个虚拟功能(VF)接口。可在专用使用的运行时期间将资源提供给每一个虚拟功能接口。CF和VF的示例可包括诸如单根I/O虚拟化或多根I/O虚拟化架构之类的方案下的物理功能和虚拟功能。CF充当建立并管理虚拟资源的物理资源。CF也能够充当完全成熟的IO设备。VF负责提供对虚拟设备的抽象,以便与多个逻辑实体/多个存储器区域进行通信。能以设备模型、VF驱动器和CF的驱动器来加载运行在主机处理器306c上的操作系统/管理程序(hypervisor)/虚拟机/用户代码中的任何一个。可使用设备模型来创建对主机处理器306c的物理设备的仿真以识别所创建的多个VF中的每一个。可将设备模型重复多次以给予VF驱动器(与虚拟IO设备交互的驱动器)它正在与特定类型的物理设备交互的印象。例如,可使用某个设备模块来仿真诸如英特尔以太网聚合网络适配器(CNA)X540-T2之类的网络适配器,使得I/O设备302相信它正在与此类适配器交互。在此类情况下,虚拟功能中的每一个可具有支持上述CAN中的功能的能力,即,物理功能中的每一个应当能够支持此类功能。设备模型和VF驱动器能以特权模式或非特权模式运行。在一些实施例中,关于何者主管/运行对应于设备模型和VF驱动器的代码可能没有限制。然而,代码具有创建设备模型和VF驱动器的多个副本的能力,使得能够创建所述I/O接口的多个副本。作为在内核中运行的应用/用户级代码的部分的应用或供应代理306d可在运行时期间创建针对每一个VF的虚拟I/O地址空间,并将物理地址空间的部分分配给它。例如,如果处理VF驱动器的应用指示它从存储器地址0xaaaa到0xffff读取分组或向存储器地址0xaaaa到0xffff写入分组,则设备驱动器可将I/O描述符写入到具有头指针和尾指针的描述符队列中,随着队列条目被填充,该头指针和尾指针被动态地改变。数据结构也可以是其他类型的,包括但不限于环结构302a或散列表。VF可从该驱动器指向的地址位置读取数据或将数据写入该地址位置。此外,在完成了到被分配给驱动器的地址空间的数据转移后,可禁用中断,通常向主机处理器触发该中断以处理所述网络分组。将特定的I/O空间分配给设备可包括:将所述IO空间分配给特定的被占据的物理存储器空间。在另一实施例中,如果描述符与用于处理传入分组的特定数据结构相关联,则该描述符可仅包括写入操作。此外,传入数据结构中的条目中的每一个条目的描述符可以是恒定的,使得将所有的数据写入重定向到特定的存储器位置。在替代实施例中,连续条目的描述符可指向存储器中的连续条目,以便将传入分组定向到连续的存储器位置。或者,所述操作系统可为支持VF驱动器的应用创建经定义的物理地址空间,并且将虚拟存储器地址空间分配给应用或供应代理306d,从而创建针对所述虚拟地址与物理地址空间之间的每一个虚拟功能的映射。可将虚拟存储器地址空间与物理存储器空间之间的所述映射存储在IOMMU表(例如,TLB304a)中。执行存储器读取或写入的应用可将虚拟地址提供给所述虚拟功能,并且主机处理器OS可将物理存储器位置的特定部分分配给此类应用。或者,可将VF配置成生成诸如读取和写入之类的请求,其可以是例如直接存储器访问(DMA)读取或写入操作的部分。由IOMMU304将虚拟地址转换为它们对应的物理地址,并且可将这些物理地址提供给存储器控制器以供访问。也就是说,IOMMU304可修改由I/O设备发起的存储器请求以将该请求中的虚拟地址改变为物理地址,并且可将该存储器请求转发到存储器控制器供存储器访问。可在支持诸如超传输314之类的协议的总线314上转发该存储器请求。VF可在此类情况下通过将虚拟存储器地址提供给IOMMU304来实施直接存储器访问。或者,如果VF允许,则所述应用可直接将物理地址编码为VF描述符。如果VF不能够支持主机处理器306c所使用形式的物理地址,则可将具有由VF设备支持的硬件尺寸的孔径(aperture)编码为描述符,使得向该VF通知该设备的目标硬件地址。可由转换表将被转移到孔径的数据映射到系统存储器中经定义的物理地址空间。可由处理器执行的软件发起DMA操作,从而直接或间接地对I/O设备编程以执行DMA操作。仍然参考图3,在特定实施例中,可利用一个或多个FPGA来实现计算单元300的诸部分。在图3的系统中,计算单元300可包括FPGA310,可在该FPGA310中形成DMA从属设备模块310a和仲裁器310f。DMA从属模块310a可以是适于附连到存储器总线316的任何设备,该存储器总线316可响应于DMA读取/写入请求。在替代实施例中,DMA从属模块310a可以是能够在存储器总线316上进行块数据转移的另一接口。DMA从属模块310a能够(当DMA控制器从‘存储器’或从外围设备执行读取时)从该DMA控制器接收数据或(当DMA控制器对DMA从属模块310a执行写入指令时)将数据转移到该DMA控制器。可使DMA从属模块310a接收在存储器总线上经封装的(例如,按DDR数据传输形式的,诸如分组或数据突发)DMA读取和写入指令、或可在对应的存储器总线上发送的任何其他格式的DMA读取和写入指令。DMA从属模块310a可重构来自存储器R/W分组的DMA读取/写入指令。可使DMA从属模块310a适于对向DMA主设备的数据读取/数据写入形式的这些指令做出响应,在PCIe总线的情况下,该DMA主设备可被设置在外围设备中,或者在ISA总线的情况下,该DMA主设备可以是系统DMA控制器。然后可将由DMA设备310a接收到的I/O数据排成队列以供仲裁。仲裁可包括调度不同流的分组的过程,使得可基于多个参数来向它们提供对可用带宽的访问。一般而言,仲裁器310f将资源访问提供给一个或多个请求器。如果多个请求者请求访问,则仲裁器310f可确定哪个请求器成为访问器,并随后将数据从该访问器传递到资源接口,并且下游资源可开始对数据的执行。在已完全将数据转移到资源且该资源已完成执行之后,仲裁器310f可将控制转移到不同的请求器,并且对所有可用的请求器重复该循环。在图3的实施例中,仲裁器310f可向计算单元300的其他部分(例如,308)通知传入数据。或者,计算单元300可利用2010年10月12日向Dalal颁证的美国专利7,813,283中所示的仲裁方案,该美国专利的内容通过引用被结合在本文中。在本文中的诸实施例中,可实现本领域中已知的其他合适的仲裁方案。或者,可使用开放流交换机和开放流控制器来实现本发明的仲裁方案。在图3的非常特定的实施例中,计算单元300可进一步包括通知/预取电路310c,该电路310c可响应于DMA从属模块310a且经仲裁器310f仲裁来预取出存储在缓冲器存储器310b中的数据。此外,仲裁器310f可经由存储器映射的I/O入口路径310e和出口路径310g来访问计算单元300的其他部分。参考图3,硬件调度器可包括用于实现对传入分组的通信量管理的调度电路308b/n。可将来自某个资源的、关于某种通信量类别的、涉及特定应用的或流向某个插槽的分组称为会话流的部分,并且可使用会话元数据来对它们分类。可由分类器308e执行此类分类。在一些实施例中,会话元数据308d可充当准则,通过该准则,可排定分组的优先级并调度分组,并由此可基于它们的会话元数据来对传入分组重排序。对分组的该重排序可发生在一个或多个缓冲器中,并可修改这些流的通信量形状。为该优先级排定而选择的调度规则(或通信量管理(TM))可通过以下方式来影响流和微流的通信量形状:延迟(缓冲);通信量的突发(缓冲和突发);通信量的平滑(缓冲和速率限制的流);丢弃通信量(选择将丢弃的数据以避免耗尽缓冲器);延迟抖动(临时地将流的单元移位不同的量);以及通过不准许连接(例如,不能够同时保证现有的服务水平协议(SLA)和附加流的SLA)。根据诸实施例,计算单元300可充当交换机结构的部分,并且可将深度受限的输出队列提供给通信量管理,由调度电路308b/n调度对这些输出队列的访问。使用调度规则来管理此类输出队列以提供对传入流的通信量管理。可通过输出端口将这些队列中的每一个队列中经队列排定的会话流发送到下游网络元件。应注意,常规的通信量管理除了满足其与下游元件之间已经具有的SLA协议之外,不考虑由所述下游元件对数据的处理和管理。相比之下,根据诸实施例,调度器电路308b/n可将优先级分配给输出队列中的每一个队列,并且实施对传入分组的重排序,以便在这些队列中维持会话流的持续性。可使用调度器电路308b/n来控制将这些持续会话中的每一个会话调度到在卸载处理器308i上被执行的通用操作系统(OS)308j中。如上文所定义的那样,特定会话流的分组可属于特定队列。调度器电路308b/n可控制对这些队列的优先级排定,使得可仲裁它们以便由位于下游的通用(GP)处理资源(例如,卸载处理器308i)处理。在下游处理器308i上运行的OS308j可将诸如处理器循环和存储器之类的执行资源分配给它当前正在处理的特定队列。该OS308j可进一步为那个特定队列分配线程或一组线程,使得可由通用处理元件308i明确地将该特定队列作为单独的实体来处理。可能有在GP处理资源上运行的多个会话且每一个会话处理来自驻留在由调度器电路建立的队列中的特定会话流的数据的事实紧密地整合调度器与下游资源(例如,308i)。这可导致跨通信量管理和调度电路和通用处理资源308i的会话信息的持续性。专用计算资源(例如,308i)、存储器空间和会话中的每一个的会话上下文信息可提供在通用处理器308i处处置、处理和/或终止会话流中的每一个的方法。调度电路308b/n可利用执行资源的该功能来将会话流排成队列以便调度下游。可向调度器电路308b/n通知执行资源(例如,308i)的状态、在执行资源上被运行的当前会话、被分配给它的存储器空间、处理器高速缓存中会话上下文的位置。根据诸实施例,调度器电路308b/n可进一步包括用于将执行资源从一个状态改变到另一状态的切换电路。调度器电路308b/n可使用此类能力在准备好被切换到下游执行资源中的队列之间进行仲裁。此外,可优化下游执行资源以减少与资源之间的上下文切换相关联的损失和开销。可进一步由调度器电路308b/n来利用此以实施在队列之间的无缝切换,并因此由执行资源将这些会话作为不同的会话来执行。根据诸实施例,调度器电路308b/n可在下游处理资源上调度不同的会话,其中,协作地操作两者来减少上下文切换期间的开销。减少服务和工程计算可用性的等待时间时的重要因素可以是与网络队列排定同步的硬件上下文切换。在诸实施例中,当由通信量管理器选择队列时,流水线协调对应的资源(例如,308i)的高速缓存(例如,L2高速缓存)的换入(swapin),并且将经重新组装的I/O数据转移到执行进程的存储器空间中。在某些情况下,队列中没有分组是待定(pending)的,但是计算仍然待定以维护先前的分组。一旦该进程在经交换的数据外部进行存储器引用,调度器电路(308b/n)可使来自I/O设备302的经队列排定的数据能够继续调度线程。在一些实施例中,为了向不具有数据的进程提供公平的队列排定,可将最大上下文尺寸假定为经处理的数据。按此方式,可将队列供应为计算资源与网络带宽资源中的较大者。仅作为一个非常特定的示例,计算资源可以是以800MHz运行的ARMA9处理器,而网络带宽可以是3Gbps的带宽。考虑到该比率的不平衡性质,诸实施例可利用具有许多并行会话(使得硬件对会话专用数据的预取出卸载主机处理器负载的大部分)且具有对数据的最少通用处理的计算。相应地,在一些实施例中,可将调度器电路308b/n概念化为不是以线路速率速度在传出队列之间仲裁,而是以非常高的速度在被终止的会话之间仲裁。跨多级流水线(包括通用OS)保持会话可以是优化此类流水线的此类级中的任何级或所有级的调度器电路。或者,可使用2010年7月20日向Dalal颁证的美国专利No.7,760,715中所示的调度方案,该美国专利通过引用被结合在本文中。当期望对流进行速率限制以防止专用于过度选择的流的另一资源的下游拥塞或为特定流实施服务合约时,该方案可能是有用的。诸实施例可包括允许下游资源(诸如,可无缝地实施的通用OS)的服务合约的仲裁方案。仍然参考图3,根据本文中的诸实施例的硬件调度器或等效物可提供基于会话元数据来将传入分组数据分类为诸会话流。在对这些流仲裁并将在卸载处理器上将它们排定为不同处理实体的队列之前,它可进一步提供对这些流的通信量管理。在一些实施例中,卸载处理器(例如,308i)可以是通用处理单元,该通用处理单元能够处理不同应用的分组或传输会话。此类卸载处理器可以是能够执行通用指令的低功率处理器。卸载处理器可以是任何合适的处理器,包括但不限于,ARM、ARC、泰思立达(Tensilica)、MIPS、StrongARM或提供本文中所述功能的任何其他处理器。此类卸载处理器具有在其上运行的通用OS,其中,优化该通用OS以减少与在不同的线程或线程组之间的上下文切换相关联的损失。相比之下,主机处理器上的上下文切换可能是计算密集型进程,其需要寄存器保存区、高速缓存中的进程上下文以及如果使它们失效或覆写它们时将被恢复的TLB条目。主机处理系统中的指令高速缓存未命中可能导致流水线停止,而数据高速缓存未命中导致操作停止,并且此类高速缓存未命中减小处理器效率并增加处理器开销。相比之下,在卸载处理器308i上运行的OS308j与调度器电路308b/n结合可一起操作来减少在运行于其上的不同的处理实体之间导致的上下文切换开销。诸实施例可包括调度器电路与卸载处理器308i上的OS之间的协作机制,其中,OS建立将在高速缓存中是物理上连续的(针对会话堆和栈的物理着色的分配器)会话上下文;随后在会话初始化之后,将会话颜色、尺寸和起始物理地址传递到调度器电路。在实际的上下文切换期间,调度器电路可通过使用这些参数来标识会话上下文,并且可发起将这些内容传递到外部低等待时间存储器(例如,308g)的批量转移。此外,如果旧会话的上下文被保存在本地存储器308g中,则调度器电路可管理该旧会话的预取出。在特定实施例中,仅作为一个非常特定的实施例,本地存储器308g可以是低等待时间存储器,诸如,减少等待时间的动态随机存取存储器(RLDRAM)。因此,在诸实施例中,可明确地在高速缓存中标识会话上下文。在一些实施例中,可限制上下文尺寸以确保快速的切换速度。附加地或替代地,诸实施例可包括用于将会话上下文向外转移到本地存储器308g的批量转移机制。随后,在往回到前一会话的上下文切换期间,可检索并预取出存储在本地存储器308g中的高速缓存内容。可在本地存储器308g中标记和/或标识不同的上下文会话数据,以便进行快速检索。如上所述,可由不同的卸载处理器重新调用由一个卸载处理器存储的上下文。在图3的非常特定的实施例中,可将多个卸载处理核整合到计算FPGA308中。可由另一FPGA310中的仲裁器电路来仲裁多个计算FPGA。计算FPGA(例如,308)与仲裁器FPGA(例如,310)的组合被称为“XIMM”模块或“XocketDIMM模块”(例如,计算单元300)。在特定应用中,这些XIMM模块可提供代理在卸载处理器上的多个会话的执行的集成的通信量和线程管理电路。图3也示出卸载处理器隧道(tunnel)连接308k,以及存储器接口308m和端口308l(其可以是加速器一致性端口(ACP))。存储器接口308m可访问缓冲器存储器308a。已描述了适用于硬件调度和通信量管理操作的各实施例,现在将描述阐释特定方面的示例。图4示出根据非常特定的实施例的用于访问卸载处理资源的调度过程400的示例实施例。在一些实施例中,调度器(例如,硬件调度器)可将调度过程实现为通信量管理方案以满足卸载处理器的要求,并且能以抢占式模式操作调度器。在抢占式模式中,调度器可负责控制在OS上对会话的执行。调度器可决定何时从执行中去除当前会话以及何时导致另一会话被执行。会话可包括卸载处理器上的线程或线程组。依赖于多个参数,硬件调度器可作出上下文切换决策,多个参数包括诸如当前会话(无论它被停止或正在运行或正等待分组)的特性之类的此类因素、被分配给会话的执行资源的量以及诸如被分配给当前会话的时间之类的因素。当分组到达硬件调度器时,并且基于满足上述准则中的任何准则,如果分组针对不同的会话,则调度器可决定进行上下文切换。如图4中所看到的那样,方法400可等待分组或其他数据(402)。可由监视器缓冲器、队列或文件接收传入分组。一旦已接收到分组或服务水平规范(SLS),可能存在用于确保满足其他条件的校验(406)。如果分组/数据已到达(并且任选地,满足如上所述的其他条件)(从406为是),则确定分组会话状态(408)。如果分组是当前会话的部分(从408为是),可将针对当前会话的对分组进行排队(412),并且可作为当前会话的部分来处理分组(410)。在一些实施例中,这可包括:硬件调度器将分组进行排队,并且将它发送到卸载处理器以供处理。如果分组不是当前会话的部分(从408为否),则可确定分组是否针对前一个会话(414)。如果分组不是来自前一个会话(从414为否),则可确定是否存在用于新会话的足够的存储器(416)。如果存在足够的存储器(从416为是),则当卸载处理器就绪(428)时,可进行上下文数据到处理器的高速缓存存储器的转移(430)。一旦此类转移完成,则会话可运行(410)。如果分组来自前一个会话(从414为是)或不存在用于新会话的足够的存储器(从416为否),则可确定前一个会话或新会话是否是相同颜色的(418)。如果情况不是这样的,则可进行向前一个会话或新会话的切换(420)。可对最近最少使用(LRU)高速缓存实体进行清除,并且可检索前一个会话上下文,或可创建新会话上下文。可将可被保留的新颜色分派给该经检索的/新会话的分组。在一些实施例中,这可包括:将被存储在低等待时间存储器中的上下文数据读取到卸载处理器的高速缓存中。如果先前的/新会话是相同颜色的(从418为是),则可进行校验来确定是否可能超出颜色压力(422)。如果这不是可能的,但是另一颜色是可用的(从422为“否,其他颜色可用”),则可进行到前一个会话或新会话的切换(即,420)。如果颜色压力可被排除,或者虽然颜色压力不可被排除,但没有其他颜色是可用的(“是/否,其他颜色不可用”),则可对相同颜色的LRU高速缓存实体进行清除,并且可检索前一个会话上下文,或可创建新会话上下文(424)。这些分组将保留它们被分配到的颜色。同样,在一些实施例中,这可包括:将被存储在低等待时间存储器中的上下文数据读取到卸载处理器的高速缓存中。在上下文切换的情况下(420/424),可初始化新会话(426)。当卸载处理器就绪(428)时,可进行上下文数据到处理器的高速缓存存储器的转移(430)。一旦此类转移完成,则会话可运行(410)。仍然参考图4,当卸载处理器正在处理分组时(410),存在周期性的校验来看该分组是否已完成处理(432),并且在如果处理没有被完成的情况下(从432为“否,使分组出列”)返回。如果完成了分组(从432为是),则硬件调度器可向它的输出队列查找更多分组(434)。如果存在更多分组(从434为是)并且卸载处理器准备好接收这些分组(从436为是),则可将这些分组转移到卸载处理器。在一些实施例中,卸载处理器一触发“准备好处理”消息,就将分组排队到卸载处理器中。在卸载处理器完成处理这些分组后,整个循环能以硬件调度器校验分组属于哪个会话等开始来重复。如果卸载处理器没有准备好分组(从436为否)并且该卸载处理器正在等待速率限制(438),则硬件调度器可校验来看是否存在其他可用的分组。如果队列中没有更多的分组,则硬件调度器可进入等待模式,从而等待速率限制,直到更多分组到达为止。因此,硬件调度器迅速并高效地工作以管理并提供去往下游资源的分组。如所示出的那样,可由来自不同会话的分组的到来抢占会话,从而导致按如上所述方式来处理新分组(406)。应当领会,在对本发明的诸示例性实施例的上述描述中,为了使本公开流畅从而辅助对各个发明性方面中的一个或多个的理解,有时将本发明的各特征一起组合在单个实施例、附图或它们的描述中。然而,不应当将这种公开方法解释为反映要求保护的本发明需要比每项权利要求中明确记载的更多特征的意图。相反,如所附权利要求反映的那样,发明性方面在于少于上述所公开的单个实施例的所有特征。因此,将遵循具体实施方式的诸权利要求明确地结合进该具体实施方式中,每一项权利要求独立地作为本发明的单独实施例而存在。也应当理解,可在不存在未专门公开的元件和/或步骤的情况下实践本发明的诸实施例。也就是说,本发明的发明性特征可以是某元件的消除。相应地,虽然已详细地描述了本文中陈述的特定实施例的各方面,但是,本发明可受制于各种改变、替换和变更而不背离本发明的精神和范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1