利用卸载处理器的上下文切换的制作方法

文档序号:10517837阅读:278来源:国知局
利用卸载处理器的上下文切换的制作方法
【专利摘要】公开了上下文切换高速缓存系统,其可包括:多个卸载处理器,它们被连接到存储器总线,每一个卸载处理器具有带有相关联的高速缓存状态的高速缓存;上下文存储器,其被耦合到卸载处理器;以及调度电路,其配置为用于在卸载处理器中的至少一个卸载处理器与上下文存储器之间引导高速缓存状态的转移。
【专利说明】
利用卸载处理器的上下文切换
技术领域
[0001] 所述实施例涉及计算机系统的确定性的上下文切换,该计算机系统包括具有卸载 处理器的连接存储器总线的模块。
【背景技术】
[0002] 上下文切换(有时称为进程切换或任务切换)是将处理器从对一个进程或线程的 执行切换到对另一进程或线程的执行。在上下文切换期间,将进程的状态(上下文)存储在 存储器中,使得稍后可从该相同点恢复执行。这使得多个进程能够共享单个处理器并支持 多任务操作系统。通常,进程是可并行地运行并可与其父进程共享地址空间(即,存储器位 置的范围)和其他资源的程序的执行或运行实例。上下文一般包括在指定时刻的处理器的 寄存器和程序计数器的内容。操作系统可挂起第一进程的执行并将该进程的上下文存储在 存储器中,而随后从存储器检索第二进程的上下文并在该处理器的寄存器中还原它。在终 止或挂起第二进程之后,可重新加载第一进程的上下文,从而恢复第一进程的执行。
[0003] 然而,上下文切换是计算密集型的。上下文切换可能需要可观的处理器时间,对于 每秒数千次上下文切换中的每一次,其可能是纳秒级的。由于现代处理器能处理数百或数 千个单独的进程,因此,专用于上下文切换的时间可代表系统在处理器时间方面的实质成 本。改进的上下文切换方法和系统可大大地改善总系统性能,并降低对服务器或其他数据 处理系统的硬件和功率要求。

【发明内容】

[0004] 本公开描述了适用于系统中处理器的上下文切换的系统、硬件和方法的诸实施 例。诸实施例可包括多个卸载处理器,每一个卸载处理器都连接到存储器总线,并且相应的 卸载处理器各自具有带有相关联的高速缓存状态的相关联的高速缓存。可通过存储器总线 将低等待时间存储器连接到多个卸载处理器;并且调度电路可用于引导将高速缓存状态从 相应卸载处理器中的至少一个卸载处理器存储到低等待时间存储器中,以及用于稍后在存 储器总线上引导将该高速缓存状态转移到相应卸载处理器中的至少一个卸载处理器。在某 些实施例(包括与使用ARM架构处理器相关联的那些实施例)中,多个卸载处理器可具有用 于以提高的速度来访问高速缓存状态的加速器一致性端口。在其他实施例中,常用模块可 支持卸载处理器、低等待时间存储器和调度电路,并且通过经存储器插槽(socket)调解的 连接来提供对外部网络分组的访问,经存储器插槽调解的连接包括但不限于双列直插存储 器模块(DIMM)插槽。
[0005] 在一些实施例中,相关联的高速缓存状态包括以下中的至少一项:被保存在寄存 器保存区中的处理器寄存器的状态、正在被执行的流水线中的指令、栈指针和程序计数器、 等待由会话执行的预取指令和数据、以及被写入到高速缓存中的数据。该系统还可包括在 多个卸载处理器中的至少一个卸载处理器上运行的操作系统(〇S) AS与调度电路可协作以 建立在高速缓存中物理上连续的会话上下文。在会话初始化后,可将会话颜色、尺寸和起始 物理地址传递到调度器电路,并且存储器分配器用来确定每一个会话的起始地址、高速缓 存中可允许的会话的数量以及对于给定颜色的可发现会话的位置的数量。
[0006] 根据实施例,可将由多个卸载处理器中的一个卸载处理器存储的高速缓存状态转 移到另一卸载处理器。在特定应用中,这可允许调度电路通过以下操作对在存储器总线上 接收到的第一队列中的网络分组的处理排定优先级:停止与多个卸载处理器中的一个卸载 处理器相关联的第一会话;存储相关联的高速缓存状态;以及发起对被保持在第二队列中 的网络分组的处理。
[0007] 实施例还可包括用于多个卸载处理器的上下文切换的方法,每一个卸载处理器具 有带有相关联的高速缓存状态的相关联的高速缓存,并且使用低等待时间存储器,该低等 待时间存储器通过存储器总线被连接到多个卸载处理器。该方法包括:使用调度电路,经由 从相应的卸载处理器中的至少一个卸载处理器进入低等待时间存储器中的批量读取来引 导高速缓存状态的存储,并且任何虚拟和物理存储器位置被对齐。随后,在该存储器总线 上,引导将该高速缓存状态转移到相应的卸载处理器中的至少一个卸载处理器以进行处 理,该转移受调度电路的控制。至于先前所述的结构实施例,常用模块可支持卸载处理器、 低等待时间存储器和调度电路,并且通过DIMM或其他存储器插槽连接来提供对外部网络分 组的访问。
【附图说明】
[0008] 图1-0示出根据实施例的具有上下文切换的系统。
[0009] 图1-1是示出在不具有着色(coloring)的物理索引的高速缓存中的页面冲突的 图。
[0010] 图1-2示出虚拟索引的高速缓存。
[0011] 图1-3示出根据实施例的虚拟/物理对齐的高速缓存。
[0012] 图2-0到2-3示出根据各实施例的处理器模块。
[0013] 图2-4示出常规的双列直插(dual-in-line)存储器模块。
[0014]图2-5描述根据另一实施例的系统。
[0015] 图3示出根据一个实施例的具有存储器总线连接的卸载处理器模块的系统,该模 块具有上下文切换能力。
[0016] 图4是示出根据一个特定实施例的上下文切换操作的流程图。
【具体实施方式】
[0017] 现在将参照多个附图详细描述各实施例。实施例示出用于在被连接到系统存储器 总线的卸载处理器中切换上下文的模块、系统和方法。此类卸载处理器可增加到被连接到 系统存储器总线的任何主机处理器,并且可独立于任何主机处理器对在系统存储器总线上 被转移的数据进行操作。在特定实施例中,卸载处理器可具有对低等待时间存储器的访问 权,该低等待时间存储器可允许对上下文数据的迅速的存储和检索以进行迅速的上下文切 换。在非常特定的实施例中,处理模块可填充用于将直插式(in-1 ine)存储器模块(例如,双 列直插存储器模块(DIMM))连接到系统存储器总线的物理插槽。
[0018] 图1-0示出根据一个实施例的系统100。系统100可包括一个或多个卸载处理器 118、调度器116和上下文存储器120。卸载处理器118可包括协同高速缓存存储器一起操作 的一个或多个处理器核。在上下文切换操作中,可将卸载处理器118的第一处理任务的上下 文存储在上下文存储器120中,并且卸载处理器118随后可进行新处理任务。随后,可将所存 储的上下文从上下文存储器120还原到卸载处理器118,并且卸载处理器118可恢复该第一 处理任务。在特定实施例中,上下文数据的存储与还原可包括在卸载处理器118的高速缓存 与上下文存储器120之间的数据转移。
[0019] 调度器116可基于接收到的处理请求来协调卸载处理器118的上下文切换。相应 地,调度器116可被通知或可访问卸载处理器118的状态以及该卸载处理器118的上下文数 据的位置。上下文数据位置可包括处理器高速缓存中的位置以及上下文存储器120中的位 置。调度器116也可跟踪卸载处理器118的状态,或可用卸载处理器118的状态来更新调度器 116〇
[0020] 从上文中可理解,上下文存储器120可存储卸载处理器118的上下文数据供后续的 检索。上下文存储器120可与卸载处理器的高速缓存存储器分开。在一些实施例中,上下文 存储器120相比系统中的其他存储器可以是低等待时间存储器,以便允许迅速的上下文存 储和检索。在一些实施例中,上下文存储器120可存储除上下文数据之外的数据。
[0021] 在所示的特定实施例中,卸载处理器118、调度器116和上下文存储器120可以是被 连接到存储器总线124的模块122的部分。可在存储器总线124上接收数据和处理任务,用于 由卸载处理器118执行。在一些实施例中,在卸载处理器118与上下文存储器120之间的上下 文数据的转移可发生在存储器总线124上。然而,在其他实施例中,此类转移可发生在模块 122上的不同的数据路径上。
[0022] 仍然参考图1-0,在所示的非常特定的实施例中,方法可进一步包括第二交换机 114、存储器控制器112、主机处理器110、输入/输出(I/O)结构(fabric) 118和第一交换机 106。可将第二交换机114包括在模块122上。图1-0的特定系统100针对网络分组处理调度和 通信量管理,但是可以理解,其他实施例可包括针对其他类型的处理任务的本文中所述的 上下文切换操作或等效操作。
[0023] 在图1-0的特定实施例中,第一交换机106可接收和/或传送来自数据源102的数据 分组104。数据源102可以是分组数据的任何合适的源,包括因特网、网络云、交互或内部数 据中心网、群集计算机、机柜系统、多个或单个的服务器或个人计算机等。数据可以是基于 分组或交换机的,但是在特定实施例中,为了易于处理,一般将非分组数据转换或封装为分 组。数据分组通常具有某些特性,包括传输协议号、源和目的地端口号,或源和目的地(网际 协议)IP地址。数据分组可进一步具有有助于分组分类和管理的相关联的元数据。
[0024] 交换机106可以是虚拟交换机(I/O设备)。交换机106可包括但不限于与外围组件 互连(PCI)兼容的设备和/或PCI快速(PCIe)设备,它们经由PCI或PCIe总线107与主机主板 连接。交换机106可包括网络接口控制器(NIC)、主机总线适配器、聚合网络适配器或交换或 异步传输模式(ATM)网络接口。在一些实施例中,交换机106可采用10虚拟化方案,诸如,用 于使单网络I/O设备表现为多个设备的单根I/O虚拟化(SR-I0V)接口。SR-I0V通过提供物理 控制和虚拟功能两者来许可对各种PCIe硬件功能之间的资源的单独访问。在某些实施例 中,交换机106可支持开放流或类似的软件定义的联网以脱离控制平面进行抽象。第一虚拟 交换机的控制平面执行诸如路由确定、目标节点标识等的功能。
[0025]交换机106能够检查网络分组,并使用其控制平面来创建用于网络分组的合适的 输出端口。基于对网络分组或与这些网络分组相关联的数据流的路由计算,交换机106的转 发平面可将分组转移到输出接口。可将交换机的输出接口与10总线连接,并且在某些实施 例中,交换机106可具有直接地(或经由I/O结构108间接地)将网络分组转移到存储器总线 互联109的能力以供存储器读取或写入操作(直接存储器访问操作)。从功能上而言,对于某 些应用,可基于控制平面功能分派网络分组用于传输到特定的存储器位置。
[0026] 也可将被连接到10结构108和存储器总线互连109的交换机106连接到主机处理器 110。 主机处理器110可包括能提供计算服务的一个或多个主机处理器,其包括供应代理 111。 供应代理111可以是在主机处理器110上运行的操作系统或用户代码的部分。供应代理 111通常初始化由系统100提供的虚拟功能驱动器并与之交互。虚拟功能驱动器可负责提供 其中需要直接存储器寻址(DMA)的存储器空间的虚拟地址。可将映射至物理地址的虚拟地 址分配给每一个设备驱动器。可使用设备模型来创建对主机处理器110的物理设备的仿真 以识别可被创建的多个虚拟功能(VF)中的每一个。可将设备模型复制多次以给予VF驱动器 (与虚拟10设备交互的驱动器)它们正在与物理设备交互的印象。例如,可使用某个设备模 型来仿真VF驱动器可采取动作以连接的网络适配器。设备模型和VF驱动器能以特权模式或 非特权模式运行。关于哪个设备主管/运行对应于设备模型和VF驱动器的代码可能没有限 制。然而,代码可具有创建设备模型和VF驱动器的多个副本的能力以使所述I/O接口的多个 副本能够被创建。在某些实施例中,操作系统还能够创建用于由VF驱动器支持的应用的所 定义的物理地址空间。此外,主机操作系统可将虚拟存储器地址空间分配给应用或供应代 理。供应代理111可与主机操作系统进行调解以创建虚拟地址与可用的物理地址空间的子 集之间的映射。供应代理111可负责创建每一个VF驱动器并将所定义的虚拟地址空间分配 给它。
[0027]也可使用存储器总线109将第二虚拟交换机114连接到存储器控制器112。第二虚 拟交换机114往返于卸载处理器118接收并交换来源于存储器总线109的通信量。通信量可 包括但不限于经过由卸载处理器118支持的处理的、去往由供应代理111创建并分派的虚拟 设备的数据流。第二虚拟交换机的转发平面将分组从存储器总线109传输到卸载处理器 118,或从卸载处理器118往回传输到存储器总线109上。对于某些应用,所描述的系统架构 允许网络分组到卸载处理器118的相对直接的传递,并对主机处理器110具有最小的中断或 没有中断。在基于所定义的仲裁和调度方案进行的向不同的硬件调度器的分配之前,第二 虚拟交换机114能够接收分组并对它们分类。硬件调度器116接收可被分派到流会话的分 组,这些流会话经调度以便在一个或多个分开的会话中进行处理。
[0028]调度器116可控制供由卸载处理器118执行的处理任务,包括对上下文的切换。在 一些实施例中,可由调度器116使用在存储器总线124上接收到的数据内所包括的元数据 (或从此类数据中导出的元数据)来调度/切换卸载处理器118的任务。然而,也构想了经由 存储器总线接收到的命令或标记来对调度器进行的基于命令的控制。
[0029]在图1-0的特定实施例中,可采用调度器116来实现对传入分组的通信量管理。可 将来自某个源的、关于某个通信量类别的、涉及特定应用的或流向某个插槽的分组称为会 话流的部分,并且可使用会话元数据对其分类。会话元数据通常充当准则,通过该准则,可 排定分组的优先级并由此可基于它们的会话元数据来对传入分组重排序。对分组的该重排 序可发生在一个或多个缓冲器中,并可修改这些流的通信量形状。可将基于会话元数据重 排序的会话分组发送到使用仲裁电路(未示出)而被向外仲裁到输出端口的特定的经通信 量管理的队列。仲裁电路可直接将这些分组流馈送到下游分组处理/终止资源。某些实施例 提供线程和队列管理的整合以便增强下游资源通过上述线程处理终止网络数据的吞吐量。
[0030] 仍然参考图1-0,到达调度器116的数据也可以是等待在卸载处理器118处被终止 的分组数据,或者它可以是等待被处理、修改或向外交换的分组数据。调度器116可负责基 于对分组数据的检查来将传入分组隔离为对应的应用会话。调度器116可具有用于分组检 查以及标识相关的分组特性的电路。在一些实施例中,调度器116可将网络栈的部分从由网 络栈处理引起的开销卸载到空闲的卸载处理器118。在特定实施例中,调度器116可实施以 下任何操作:TCP/传输卸载、加密/解密卸载、隔离并重新组装,从而允许卸载处理器直接对 网络分组的有效载荷进行操作。
[0031] 调度器116可进一步具有将属于会话的分组转换为特定的通信量管理队列的能 力。调度器116可控制将多个此类会话中的每一个调度到通用0S中。跨多级(包括通用0S)的 流水线保持会话(stickness of session)可由优化在这些级中的每一级处实施的操作的 调度器116支持。下文中更详细地描述此类操作的特定实施例。
[0032] 虽然调度器116具有任何适当的形式,但是在2010年7月20日向Dalai颁证的美国 专利No. 7,760,715 (下文中称之为' 715专利)中示出了可全部或部分地被用作调度器的调 度电路,通过引用将该美国专利结合在本文中。该'751专利公开了考虑下游执行资源的调 度电路。通过输出端口,将这些队列中的每一个队列中的会话流发送到下游网络元件。 [0033]调度器可采用仲裁电路来调解多个通信量管理输出队列对可用的输出端口的访 问。可通过分组缓冲器将输出端口中的每一个连接到卸载处理器核中的一个。分组缓冲器 可进一步包括头部(header)池和分组体(body)池。头部池可仅包含将由卸载处理器118处 理的分组的头部。有时,如果待处理的分组的尺寸足够小,则该头部池可包含整个分组。可 依赖于在卸载处理器118处实施的操作的性质来将分组转移到头部池或分组体池。对于分 组处理、覆盖、分析、过滤和其他此类应用,仅将分组头部转移到卸载处理器118可能是合适 的。在这种情况下,依赖于对分组头部的处理,可将分组体与分组头部缝接在一起并在出口 接口上转移,或丢弃。对于需要终止分组的应用,可转移整个分组体。卸载处理器可由此接 收这些分组并对它们执行适当的应用会话。
[0034]调度器116可调度卸载处理器118上的不同的会话,从而采取动作来协调此类会 话,以便在上下文切换期间减少开销。调度器116可以不仅以线路速度在传出队列或会话流 之间仲裁,而且还以非常高的速度在被终止的会话之间仲裁。调度器116可管理对卸载处理 器118上的会话进行的排队,并且可负责在0S上调用新应用会话。调度器116可基于通信量 来向0S指示针对新会话的分组是可用的。
[0035]也可向调度器116通知卸载处理器118的执行资源的状态、被运行在执行资源上的 当前会话和分配给它的存储器空间、以及卸载处理器高速缓存中会话上下文的位置。调度 器116可因此使用执行资源的状态来实施通信量管理和仲裁决策。
[0036]在所示实施例中,调度器116可提供操作系统上的线程管理与传入分组的通信量 管理的整合。它可包括跨一系列组件(包括通信量管理队列和卸载处理器118上的处理实 体)的持续通信量流。在卸载处理器118上运行的0S可将诸如处理器循环和存储器之类的执 行资源分配给它当前正在处理的特定队列。该os可进一步为那个特定队列分配线程或一组 线程,使得可由通用处理元件明确地将该特定队列作为单独的实体来处理。使多个会话在 通用(GP)处理资源(例如,卸载处理器资源)上运行,并且使来自特定会话流的每一个处理 数据驻留在调度器116上的队列中会紧密地整合调度器116和GP处理资源。这可带来跨通信 量管理和调度器116和GP处理资源的会话信息之内的持续的元素。
[0037] 在一些实施例中,卸载处理器118的0S可从前一个0S修改而来以减少与在资源之 间的上下文切换相关联的损失和开销。这可进一步由硬件调度器来开发以实施在队列之间 的无缝切换,并因此由执行资源将它们作为不同的会话来执行。
[0038]根据特定实施例,调度器116可实现对传入分组的通信量管理。将来自某个资源 的、关于某种通信量类别的、涉及特定应用的或流向某个插槽的分组称为会话流的部分,并 且使用会话元数据来对它们分类。会话元数据可充当准则,通过该准则来排定分组的优先 级,并由此基于它们的会话元数据来对传入分组重排序。对分组的该重排序可发生在一个 或多个缓冲器中,并可修改这些流的通信量形状。可将基于会话元数据而被重排序的会话 分组发送到使用仲裁电路而被向外仲裁到输出端口的特定的经通信量管理的队列。仲裁电 路可直接将这些分组流馈送到下游分组处理和/或终止资源(例如,卸载处理器)。某些实施 例提供线程和队列管理的整合以便增强下游资源通过上述线程处理终止网络数据的吞吐 量。
[0039]除了实施对传入网络分组(和流)的通信量管理、仲裁和调度之外,调度器116还负 责启用0S卸载处理器118上的被终止会话之间的最小开销的上下文切换。在卸载处理器118 的诸会话上的多个会话之间进行切换能使得以非常高的速度终止多个会话成为可能。在所 示实施例中,通过上下文模块120的操作,迅速的上下文切换可能发生。在特定实施例中,上 下文存储器120可在系统100中提供高效、低等待时间的上下文服务。
[0040] 在所示的特定实施例中,可通过第二交换机114的操作将分组转移到调度器116。 调度器116可对在卸载服务器118上在会话与新会话之间切换以及发起将上下文保存在上 下文存储器120中两者负责。会话的上下文可包括但不限于:被保存在寄存器保存区中的处 理器寄存器的状态、正在被执行的流水线中的指令、栈指针和程序计数器、正等待由会话执 行的预取出的指令和数据、新近被写入到高速缓存中的数据以及可标识在卸载处理器118 上执行的会话的任何其他相关信息。在特定实施例中,可使用会话id、高数缓存中的会话索 引以及起始物理地址来标识会话上下文。
[0041] 如将参照图1-3更详细地描述的那样,可使用转换方案,使得虚拟存储器中连续的 会话页面在卸载处理器118的高速缓存中在物理上是连续的。高速缓存中的会话的该连续 性质可允许会话上下文的批量读取进入上下文存储器中存储的'上下文快照',当操作系统 (0S)将处理器资源往回切换到会话时,可从该'上下文快照'处检索会话上下文。从上下文 存储器120(其可以是低等待时间存储器,并因此比系统的主存储器快数个数量级)中无缝 地取出会话上下文的能力可用于有效地扩展卸载处理器118的L2高速缓存的尺寸。
[0042]在一些实施例中,系统100的0S可在其输入输出存储器管理单元(I0MMU)(未示出) 中实现优化以允许转换后备缓冲器(TLB)(或等效的查找结构)明显地标识每个会话的内 容。此类安排可允许在会话切换出(swi tch out)并转移到在TLB外部的页表高速缓存期间 来明显地标识地址转换。页表高速缓存的使用可允许对TLB尺寸的扩展。同样,考虑到虚拟 存储器中的连续位置在物理存储器中以及物理索引的高速缓存中处于连续的位置处的事 实,显著地减少了标识会话所需的地址转换的数量。
[0043] 在图1-0的特定实施例中,系统100可非常适于提供会话和分组终止服务。在一些 实施例中,可由调度器116执行对网络栈处理的控制。因此,调度器116可充当通信量管理队 列、仲裁电路和网络栈卸载设备。调度器116可代表卸载处理器118来负责处理整个会话和 流管理。在此类安排中,可用涉及直接进入缓冲器的会话的分组来馈送卸载处理器118,卸 载处理器118可从该缓冲器提取分组数据供使用。可优化对网络栈的处理以避免切换到内 核模式来处理网络生成的中断(并且执行中断服务例程)。按此方法,可将系统100优化为无 缝地并且伴随尽可能少的开销来实施会话的上下文切换。
[0044] 仍然参考图1-0,如将理解的那样,可在所述的系统100中使用诸如PCI、光纤信道 之类的多种类型的常规输入/输出总线。总线架构也可基于相关的JEDEC标准,基于DMM数 据传输协议,基于超传输或任何其他高速度、低等待时间互连系统。卸载处理器118可包括: DDR DRAM、RLDRAM、嵌入式DRAM、诸如混合存储器立方(HMC)之类的下一代栈式存储器、闪 存、或其他合适的存储器、分离逻辑或总线管理芯片、诸如现场可编程门阵列(FPGA)之类的 可编程单元、自定义设计的专用集成电路(ASIC)以及基于ARM、ARC、泰思立达(Tensilica)、 MIPS、Strong/ARM或RISC架构的处理器之类的高能效通用处理器。主机处理器110可以是通 用处理器,包括基于英特尔或AMD x86架构、英特尔安腾架构、MIPS架构、SPARC架构等的处 理器。
[0045]如还将理解的那样,可在运行于多个处理核上的多个线程上实现执行像图1-0的 系统所执行处理那样的处理的常规系统。进入多个线程上下文的任务的此类并行化可提供 增加的吞吐量。诸如MIPS之类的处理器架构可包括用于改善每个循环的指令数量的深指令 流水线。此外,运行多线程编程环境的能力导致对现有处理器资源的增强的使用。为了进一 步增加硬件上的并行执行,处理器架构可包括多个处理器核。包括相同类型核的多核架构 (被称为同构核架构)通过使线程或进程跨多个核并行来提供更高的指令吞吐量。然而,在 此类同构核架构中,诸如存储器之类的共享资源在少量的处理器上分摊。在另一些实施例 中,多个卸载处理器或主机处理器可驻留在被连接到单独的机架(rack)单元或刀片 (blade)的模块上,该单独的机架单元或刀片转而驻留在机架或单独的服务器上。可进一步 将这些编组为群集或数据中心,这些群集或数据中心在空间上可位于相同的建筑物中、位 于相同的城市中或甚至位于不同的国家中。可将任何编组等级彼此连接和/或连接到公共 的或私有的云互联网。
[0046] 按此类常规方式,存储器和I/O访问可能导致大量的处理器开销。此外,如本文中 所指出的那样,常规的通用处理单元中的上下文切换可能是计算密集型的。因此,在处理多 个联网应用的联网计算资源中减少上下文切换开销以增加处理器吞吐量是所期望的。常规 服务器负载可能需要复杂的传输、高存储器带宽、极端量的数据带宽(经随机访问的、并行 化的和高度可用的),但经常伴随轻触(1 ight touch)处理:HTML、视频、分组(packet)级服 务、安全和分析。此外,闲置的处理器仍然消耗它们峰值功耗的大于50%。
[0047] 相比之下,在诸如图1-0中所示的实施例之类的实施例或等效方案中,可在创建在 多个卸载处理器118的核上的插槽抽象的背后来处理复杂传输的、数据带宽密集型、面向频 繁的随机访问的"轻触"处理负载。同时,可由主机处理器110的核(例如,x86处理器核)上的 插槽抽象来处理"重触"("heavey touch")的计算密集型负载。此类软件插槽可允许对在轻 触(例如,ARM)与重触(例如,x86)处理器核之间的这些负载进行的自然分区。通过对新的应 用层级插槽的使用,根据诸实施例,可以跨卸载处理器118和主机处理器110来分解服务器 负载。
[0048]为了更好地理解本文所公开的诸实施例的操作,参照图1-1和图1-2描述常规的高 速缓存方案。实现虚拟存储器的现代操作系统负责为进程分配虚拟和物理存储器两者,从 而导致当进程执行并访问虚拟寻址的存储器时发生的虚拟向物理转换。在对用于进程的存 储器进行的管理中,在虚拟地址范围与将由虚拟地址映射的对应的物理地址的分配之间通 常没有协调。这样的缺乏协调可能在进程正在执行时影响处理器高速缓存开销和有效性两 者。
[0049]在常规系统中,处理器为正在执行的每一个进程分配在虚拟存储器中连续的存储 器页面。处理器也在物理存储器分配页面,这些页面不一定是连续的。在两种寻址方案之间 建立转换方案以确保虚拟存储器的抽象由物理存储器页面正确地支持。处理器可采用接近 该处理器驻留的高速缓存块来满足即刻的数据处理需求。可在层次结构(hierarchy)中安 排常规高速缓存。第一级(L1)高速缓存最接近处理器,随后是L2、L3等。L2充当L1的后备,以 此类推。对于由进程的物理地址的部分进行索引的高速缓存,对于超出存储器管理单元 (MMU)页面的尺寸的地址范围,缺乏虚拟和物理地址的分配之间的相互关系导致处理器高 速缓存中的偶然性与低效率效应。这在上下文切换操作期间增加了高速缓存开销并引入了 延迟。
[0050] 在物理寻址的高速缓存中,针对虚拟存储器中下一页面的高速缓存条目可能无法 对应于高速缓存中的下一个连续的页面一一进而使可实现的总体性能降级。例如,在图1-1 中,虚拟存储器130中连续的页面(进程1的页面1和2)在高速缓存中冲突,因为物理存储器 132中它们的物理地址索引到(处理器的)物理索引的高速缓存134的相同位置。也就是说, 处理器高速缓存(即,134)是物理索引的,并且物理存储器132中的页面的地址索引到处理 器高速缓存中的相同页面。此外,当考虑多个进程访问共享高速缓存的效应时,当0S将物理 存储器分配给进程时,通常缺乏对总体高速缓存性能的考虑。这种考虑的缺乏导致不同的 进程跨上下文切换的高速缓存颠簸(thrashing)(例如,图1-1中的进程1和进程2),这可能 不必要地置换(displace)彼此的行,这可能导致在恢复进程后未定数量的高速缓存未命 中/填充,或导致跨上下文切换的增加数量的行写回。
[0051] 如参照图1-2所描述的那样,在其他常规安排中,处理器高速缓存可替代地通过进 程的虚拟地址进行索引。通过使用处理器的虚拟地址的位的区段来访问虚拟索引的高速缓 存。如图1-2中所看到的那样,在虚拟存储器130中连续的页面在虚拟索引的高速缓存136中 将是连续的。只要处理器高速缓存是虚拟索引的,就不需要对将物理存储器132的分配与虚 拟地址的分配进行协调加以关注。当程序扫过虚拟地址范围时,它们将享有在处理器高速 缓存中的空间局部性的益处。此类组相联(set-associative)高速缓存具有对应于索引的 若干条目。映射到给定的高速缓存索引上的给定页面可以在该特定组中的任何地方。考虑 到存在可用于高速缓存条目的若干位置,凭借组关联高速缓存,导致跨上下文切换的高速 缓存颠簸的问题(即,如图1-1中所示)在某种程度上被缓和,因为处理器可承担在尽可能长 的跨度上将使用过的条目保持在高速缓存中。为此,高速缓存采用最近最少使用(least recently used)的算法。这导致缓和了与由操作系统遵循的虚拟寻址方案相关联的问题中 的一些问题,但是对高速缓存的尺寸施加了约束。结果,可能需要较大的多路相联(multiway associative) 高速缓存来确保不使新近使用过的条目失效 / 被清除掉。用于多路组相 联高速缓存的比较器电路要适于并行比较可能是复杂的,这增加了与高速缓存相关联的电 路级复杂性。
[0052]已由一些常规操作系统使用被称为"页面着色"("page coloring")的高速缓存控 制方案来应对因虚拟寻址方案而导致的高速缓存未命中的问题。如果处理器高速缓存是物 理索引的,则将约束操作系统以寻找将不索引到相同颜色的高速缓存中的位置的物理存储 器位置。在此类高速缓存控制方案下,对于每一个虚拟地址,操作系统将不得不评估基于索 引所允许的物理存储器中的那些页面,那些页面在物理索引的高速缓存中散列到该索引。 当导出的索引可能是相同的颜色时,不允许若干物理地址。因此,对于物理索引的高速缓 存,将对虚拟存储器中的每一个页面着色以标识其对应的高速缓存位置,并确定是否将下 一页面分配到物理存储器,并由此到相同颜色的高速缓存位置。将对每一个页面重复该过 程,这可能是繁琐的操作。虽然它改善了高速缓存效率,但是页面着色增加了存储器管理和 转换单元上的开销,因为将不得不标识每一个页面的颜色来防止新近使用过的页面被覆 写。操作系统的复杂度相应地增加,因为它需要在高速缓存中维持前一个虚拟存储器页面 的颜色的指示符。
[0053]虚拟索引的高速缓存的问题在于,尽管存在高速缓存访问等待时间较高的事实, 但是存在别名使用(aliasing)的普遍问题。在别名使用的情况下,映射到物理存储器中的 相同页面的(具有不同索引)的多个虚拟地址(由于这些不同的索引)位于高速缓存中的不 同位置处。页面着色允许虚拟页面和物理页面具有相同的颜色,并因此在高速缓存中占据 相同的组。页面着色使别名(alias)共享相同的超集(superset)位以及到高速缓存中的相 同行的索引。这去除了别名使用的问题。页面着色也对存储器分配施加了约束。当在页面错 误时分配新的物理页面时,存储器管理算法必须从空闲列表中选择具有与虚拟颜色相同颜 色的页面。由于系统有系统地分配虚拟空间,因此不同程序的页面趋于具有相同的颜色,并 且一些物理颜色由此比其他物理颜色更频繁。因此,页面着色可影响页面错误率。此外,一 些物理颜色占主导可能在利用物理地址来访问的第二级高速缓存中的程序之间创造映射 冲突。因此,处理器面临关于上述常规页面着色方案的非常大的问题。虚拟页面中的每一个 页面可能正在占据物理存储器中的不同页面,使得它们占据不同的高速缓存颜色,但是处 理器将需要存储每个以及每一个页面的地址转换。考虑到进程可能是足够大的,并且每一 个进程将包括若干虚拟页面,因此页面着色算法可能变得非常复杂。这还将在TLB端处使其 复杂,因为它将需要为处理器的虚拟存储器的每一个页面标识等效的物理地址。由于上下 文切换趋于使TLB条目失效,因此处理器将需要实施页面移动(walk)并填充TLB条目,并且 这将进一步将非确定性和等待时间添加到例程上下文切换。
[0054]按此方法,在通常可用的常规操作系统中,当恢复进程/线程时,上下文切换导致 高速缓存中的冲突以及TLB未命中。当进程/线程恢复时,随着线程的工作集被往回重新加 载到高速缓存中(即,随着线程在用户空间中恢复并执行指令,这些指令连同应用数据一起 通常将不得不被加载到高速缓存中),存在未定数量的指令和数据高速缓存未命中。在切换 入(switch-in)(即,进程/线程的恢复)时,凭借新线程的页表的基址被写入到为此目的所 预留的寄存器中,可完全或部分地使TLB映射无效。当线程执行时,TLB未命中将(通过硬件 或软件)导致页表移动,其导致TLB填充。这些TLB未命中之中的每一个具有其自身的硬件成 本,包括因异常而导致的流水线停止(例如,当执行页表移动时由存储器访问造成的开销, 以及如果页表不在高速缓存中时相关联的高速缓存未命中/存储器负载)。这些成本依赖于 进程的相继运行之间在处理器中发生了什么,并且因此不是固定成本。此外,这些额外的等 待时间增加了上下文切换的成本并减损了进程的有效执行。如将领会的那样,此类的上述 高速缓存控制方法相对于处理时间、存储器要求或其他操作系统控制的资源是非确定的, 从而减小了操作系统的总体效率。
[0055] 图1-3示出根据实施例的高速缓存控制系统。在该高速缓存控制系统中,会话内容 在物理索引的高速缓存134'中可以是连续的。所述实施例可使用转换方案,使得虚拟存储 器130中连续的会话页面在物理索引的高速缓存134中是物理上连续的。相比于上述非确定 的高速缓存控制方案,至少上下文切换操作的持续时间可以是确定的。在所述实施例中,由 新进程的上下文替换前一进程的上下文涉及从诸如由图1-0的上下文存储器120提供的存 储器之类的外部低等待时间存储器转移新进程上下文。在上下文切换的过程中,可避免对 系统的主存储器的访问(在那里,此类访问可能是延迟密集型的)。从上下文存储器120(其 可以是低等待时间存储器)预取出进程上下文。如果需要另一次上下文切换,则可再次将进 程上下文保存到上下文存储器120。按此方法,实现了确定的上下文切换,因为可依据需要 被实施的循环和操作的数量来定义上下文切换操作。此外,使用低等待时间存储器来存储 上下文数据可提供迅速的上下文切换。
[0056] 图2-0到2-5描述了可包括本文中所描述的上下文切换的模块的硬件实施例的诸 方面。在特定实施例中,此类处理模块可包括DIMM可装载模块。
[0057]图2-0是根据一个实施例的处理模块200的框图。处理模块200可包括物理连接器 202、存储器接口 204、仲裁器逻辑206、卸载处理器208、本地存储器210和控制逻辑212。连接 器202可提供到系统存储器总线的物理连接。这与可经由存储器控制器等访问系统存储器 总线的主机处理器形成对比。在非常特定的实施例中,连接器202可兼容计算系统的双列直 插存储器模块(DIMM)插槽。相应地,可用一个或多个处理模块200或处理模块与DIMM模块的 混合来填充包括多个DIMM插槽的系统。
[0058]存储器接口 204可检测系统存储器总线上的数据转移,并且在适当的情况下,可允 许将写入数据存储在处理模块200中和/或从处理模块200读取出读取数据。此类数据转移 可包括对具有特定网络标识符的分组数据的接收。在一些实施例中,存储器接口204可以是 从属接口(slave interface),因此,数据转移受与处理模块200分开的主设备(master device)控制。在非常特定的实施例中,存储器接口 204可以是用于调整由DMA主设备 (master)发起的系统存储器总线上的DMA转移的直接存储器访问(DMA)从属设备(slave)。 在一些实施例中,DMA主设备可以是与主机处理器不同的设备。在此类配置中,处理模块200 可接收用于处理的数据(例如,DMA写入),并且在不消耗主机处理器资源的情况下向外转移 经处理的数据(例如,DMA读取)。
[0059]仲裁器逻辑206可在处理模块200之内的冲突的数据访问之间进行仲裁。在一些实 施例中,仲裁器逻辑206可在由卸载处理器208进行的访问与在处理器模块200外部的访问 之间进行仲裁。应理解,处理模块200可包括同时对其进行操作的多个位置。应理解,由仲裁 器逻辑206仲裁的访问可包括对由处理器模块200占据的物理系统存储器空间的访问以及 对其他资源(例如,卸载处理器或主机处理器的高速缓存存储器)的访问。相应地,用于仲裁 器逻辑206的仲裁规则可根据应用而变化。在一些实施例中,对于给定的处理器模块200,可 固定此类仲裁规则。在此类情况下,可通过切出不同的处理模块来适应不同的应用。然而, 在替代实施例中,此类仲裁规则可以是可配置的。
[0060]卸载处理器208可包括可对在系统存储器总线上转移的数据进行操作的一个或多 个处理器。在一些实施例中,卸载处理器可运行通用操作系统或诸如Apache(仅作为一个非 常特定的示例)之类的服务器应用,从而允许保存和检索处理器上下文。可由硬件调度器处 理由卸载处理器208执行的计算任务。卸载处理器208可对在处理器模块200上经缓冲的数 据进行操作。附加地或替代地,卸载处理器208可访问被存储在系统存储器空间中其它位置 处的数据。在一些实施例中,卸载处理器208可包括配置成用于存储上下文信息的高速缓存 存储器。卸载处理器208可包括多个核或一个核。
[0061]可将处理器模块200包括在具有主机处理器(未不出)的系统中。在一些实施例中, 卸载处理器208相比于主机处理器可以是不同类型的处理器。在特定实施例中,卸载处理器 208相比主机处理器可消耗更少的功率和/或具有更少的计算功率。在非常特定的实施例 中,卸载处理器208可以是"孱弱的"("wimpy")核处理器,而主机处理器可以是"强健的" ("brawny")核处理器。然而,在替代实施例中,卸载处理器208可具有等于任何主机处理器 的计算功率。在非常特定的实施例中,主机处理器可以是x86型处理器,而卸载处理器208可 包括ARM、ARC、泰思立达(Tens i 1 ica)、MIPS、Strong/ARM或RISC型处理器,仅举数例。
[0062] 本地存储器210可连接到卸载处理器208以启用对上下文信息的存储。相应地,卸 载处理器208可存储当前的上下文信息,并随后切换到新计算任务,之后检索该上下文信息 以恢复先前的任务。在非常特定的实施例中,本地存储器210相对于系统中的其他存储器可 以是低等待时间存储器。在一些实施例中,对上下文信息的存储可包括复制卸载处理器208 的高速缓存。
[0063] 在一些实施例中,本地存储器210中的相同空间可由相同类型的多个卸载处理器 208访问。按此方式,可由不同的卸载处理器恢复由一个卸载处理器存储的上下文。
[0064] 控制逻辑212可控制由卸载处理器执行的处理任务。在一些实施例中,可将控制逻 辑212考虑为硬件调度器,该硬件调度器可被概念化为包括数据评价器214、调度器216和切 换控制器218。数据评价器214可从在系统存储器总线上转移的写入数据中提取"元数据"。 如本文中所使用的那样,"元数据"可以是嵌入在写入数据块的一个或多个预定位置处的任 何信息,该信息指示将对该写入数据块的全部或部分执行的处理和/或指示指示该数据所 属的特定任务/进程(例如,分类数据)。在一些实施例中,元数据可以是指示该写入数据块 的较高层级的组织的数据。仅作为非常特定的实施例,元数据可以是一个或多个网络分组 (其可能或可能不被封装在较高层的分组结构中)的头部信息。
[0065]调度器216(例如,硬件调度器)可对卸载处理器208的计算任务排序。在一些实施 例中,调度器216可生成在接收到供处理的写入数据时持续地被更新的调度。在非常特定的 实施例中,调度器216可基于切换卸载处理器208的上下文的能力来生成此类调度。按此方 法,可在运行时(on thefly)调整模块上计算优先级。在非常特定的实施例中,调度器216可 根据计算任务来将物理地址空间的部分(例如,本地存储器210中的存储器位置)分派给卸 载处理器208。卸载处理器208随后可在此类不同的空间之间切换,在每一次切换之前保存 上下文信息,并在之后当返回到存储器空间时还原上下文信息。
[0066]切换控制器218可控制卸载处理器208的计算操作。在特定实施例中,根据调度器 216,切换控制器218可对卸载处理器208排序以切换上下文。应理解,上下文切换操作可以 是响应于来自切换控制器218的单个命令而执行的"原子"操作。附加地或替代地,切换控制 器218可发布存储当前的上下文信息、重新调用上下文信息等的指令集。
[0067] 在一些实施例中,处理器模块200可包括缓冲器存储器(未示出)。缓冲器存储器可 将接收到的写入数据存储在处理器模块的板上。可在完全不同的存储器设备的集合上实现 缓冲器存储器,或缓冲器存储器可以是以逻辑和/或卸载处理器嵌入的存储器。在后一种情 况下,仲裁器逻辑206可仲裁对缓冲器存储器的访问。在一些实施例中,缓冲器存储器可对 应于系统物理存储器空间的部分。系统存储器空间的其余部分可对应于被连接到相同的系 统存储器总线的其他相似的处理器模块和/或存储器模块。在一些实施例中,缓冲器存储器 可与本地存储器210不同。例如,缓冲器存储器可具有相比本地存储器210更慢的访问时间。 然而,在其他实施例中,可用同样的存储器设备来实现缓冲器存储器和本地存储器。
[0068]在非常特定的实施例中,供处理的写入数据可具有所预期的最大流速率。可将处 理器模块200配置为以此类流速率或以比此类流速率快的速率对此类数据进行操作。按此 方法,主设备(未示出)可在没有覆写"处理中"数据的危险的情况下将数据写入到处理器模 块。
[0069]可将处理器模块200的各种计算元件实现为一个或多个集成电路设备(1C)。应理 解,可在相同或不同的1C中形成图2-0中所示的各种组件。例如,可将控制逻辑212、存储器 接口 214和/或仲裁器逻辑206实现在一个或多个逻辑1C上,而卸载处理器208和本地存储器 210是分开的1C。逻辑1C可以是固定逻辑(例如,专用1C)、可编程逻辑(例如,现场可编程门 阵列,FPGA)或它们的组合。
[0070] 有利的是,相比传统的计算系统,上述硬件和系统可提供改善的计算性能。常规系 统(包括基于x86处理器的那些系统)通常装备不足以处理此类高容量应用。即便在闲置时, x86处理器也使用显著量的功率,并且针对高带宽分组分析或其他高容量处理任务的近于 连续的操作使得处理器能量成本是占主导的价格因素中的一个因素。
[0071] 此外,常规系统可能具有上下文切换的高成本问题,在上下文切换中,需要主机处 理器执行可包括从一个线程切换到另一线程的指令。此类切换可能需要存储并再次调用线 程的上下文。如果此类上下文数据是驻留在主机高速缓存存储器中的,则此类上下文切换 可相对快速地发生。然而,如果此类上下文数据不再位于高速缓存存储器中(即,高速缓存 未命中),则必须从系统存储器中重新调用该数据,这可能导致多个循环的等待时间。在上 下文切换期间连续的高速缓存未命中可能不利地影响系统性能。
[0072]图2-1示出根据一个非常特定的实施例的处理器模块200-1,其能够减少与关联于 许多常规服务器系统的高容量处理或上下文切换相关联的问题。处理器模块200-1可包括 被装载到印刷电路板(PCB)型基板222的IC220-0/UPCB型基板222可包括直插式模块连接 器202,在一个非常特定的实施例中,直插式模块连接器202可以是兼容DMM的连接器。1C 220-1可以是集成多个功能的片上系统(SoC)型设备。在所示的非常特定的实施例中,1C 220-0可包括嵌入式处理器、逻辑和存储器。此类嵌入式处理器可以是本文中所述的卸载处 理器208或其等效物。此类逻辑可以是本文中所述的控制器逻辑212、存储器接口 204和/或 仲裁器逻辑206中的任何一个或它们的等效物。此类存储器可以是本文中所述的本地存储 器210、卸载处理器208的高速缓存处理器或缓冲器存储器中的任何一个或它们的等效物。 逻辑1C 220-1可提供不被包括在1C 220-0中的逻辑功能。
[0073]图2-2示出根据另一非常特定的实施例的处理器模块200-2。处理器模块200-2可 包括被装载到类似图2-1的基板那样的PCB型基板222的1C 220-2、-3、-4、-5。然而,与图2-1 不同,处理器模块功能被分布在单一目的型1C之间。1C 220-2可以是处理器1C,该处理器1C 可以是卸载处理器208JC 220-3可以是存储器1C,该存储器1C可包括本地存储器210、缓冲 器存储器或它们的组合。1C 220-4可以是逻辑1C,该逻辑1C可包括控制逻辑212,并且在一 个非常特定的实施例中可以是FPGAJC 220-5可以是另一逻辑1C,该另一逻辑1C可包括存 储器接口 204和仲裁器逻辑206,并且在一个非常特定的实施例中也可以是FPGA。
[0074]应理解,图2-1/2仅表示各种实现中的两个。可在任何合适数量的IC(包括单SoC型 1C)上分布处理器模块的各种功能。
[0075] 图2-3示出根据非常特定的实施例的处理器模块200-1或200-2的背面。处理器模 块200-3可包括多个存储器1C,一个被示出为220-6,其被装载到类似图2-1的基板那样的 PCB型基板222。应理解,可将各种处理和逻辑组件装载在所示面的反面。可将存储器1C 220-6配置为表示系统的物理存储器空间的部分。存储器1C 220-6可执行以下功能中的任 何一个或全部:独立于其他处理器模块组件而进行操作,从而提供以常规方式访问的系统 存储器;充当缓冲器存储器,从而存储可利用其他处理器模块组件来处理的写入数据;或充 当用于存储处理器上下文信息的本地存储器。
[0076] 图2-4示出常规的DIMM模块(即,它仅提供存储器功能),该模块可连同本文中所述 的处理器模块或它们的等效物来填充存储器总线。
[0077]图2-5示出根据一个实施例的系统230。系统230可包括经由多个可直插式模块插 槽(一个被示出为226)访问的系统存储器总线228。根据实施例,可由本文中所述的处理器 模块200或等效物来占据插槽226中的任何一个或全部。在处理模块200未占据所有的插槽 226的情况下,可由常规的直插式存储器模块224占据可用的插槽。在非常特定的实施例中, 插槽226可以是DIMM插槽。
[0078] 在一些实施例中,处理器模块200可占据一个插槽。然而,在其他实施例中,处理器 模块可占据多个插槽。
[0079] 在一些实施例中,可进一步将系统存储器总线228与一个或多个主机处理器和/或 输入/输出设备(未不出)对接。
[0080] 已描述了根据各实施例的处理器模块,现在将描述根据特定实施例的能够经由存 储器总线与服务器或类似系统对接的卸载处理器模块的操作。
[0081] 图3示出根据实施例的可在卸载处理器中执行上下文切换的系统301。在所示示例 中,系统301可将分组数据传输到位于模块上的一个或多个计算单元(一个被示出为300), 在特定实施例中,这一个或多个计算单元可包括兼容现有存储器模块的连接器。在一些实 施例中,计算单元300可包括本文中的实施例中所描述的处理器模块或等效物。计算单元 300可能能够拦截或以其他方式访问在存储器总线316上发送的分组,并且实施对此类分组 的处理,包括但不限于终止或元数据处理。系统存储器总线316可以是像本文中所描述的那 些或等效物(例如,228)的系统存储器总线。
[0082]仍然参考图3,系统301可包括I/O设备302,该I/O设备302可从外部源接收分组或 其他I/O数据。在一些实施例中,I/O设备302可包括由物理设备生成的、用于从网络或另一 计算机或虚拟机接收分组或其他I/O数据的物理或虚拟功能。在所示非常特定的实施例中, I/O设备302可包括具有输入缓冲器302a(例如,DMA环缓冲器)和I/O虚拟化功能302b的网络 接口卡(NIC)。
[0083]根据诸实施例,I/O设备302可写入描述符,该描述符包括分组的必要的存储器操 作的细节(即,读取/写入、源/目的地)。可(例如,由系统301的操作系统)将虚拟存储器位置 分派给此类描述符。然后,I/O设备302与输入输出存储器管理单元(I0MMU)304通信,该 I0MMU 304可利用I0MMU功能304b来将虚拟地址转换为对应的物理地址。在所示的特定实施 例中,可将转换后备缓冲器(TLB)304a用于此类转换。然后,可经由系统301的存储器控制器 306b利用直接存储器传输(例如,DMA)来执行I/O设备与系统存储器位置之间的虚拟功能读 取或写入数据。可由主机总线312将I/O设备302连接到I0MMU 304。在一个非常特定的实施 例中,主机总线312可以是外围互连(PCI)型总线。可在中央处理单元I/0(CPUI0)306a处将 I0MMU 304连接到主机处理部306。在所示实施例中,此类连接314可支持超传输(HT)协议。 [0084] 在所示实施例中,主机处理部306可包括CPUIO 306a、存储器控制器306b、处理核 306c和对应的供应代理306d。
[0085]在特定实施例中,计算单元300可经由标准直插式模块连接与系统总线316对接, 在非常特定的实施例中,该连接可包括DHM型插槽。在所示实施例中,存储器总线316可以 是DDR3型存储器总线。替代实施例可包括任何合适的系统存储器总线。可由存储器控制器 306b经由存储器总线316将分组数据发送到DMA从属接口 310a。可使DMA从属接口 310a适于 通过存储器总线316接收来自DMA写入的经封装的读取/写入指令。
[0086]硬件调度器(308b/c/d/e/h)可通过根据使用会话元数据的流来对传入分组分类 以执行对这些传入分组的通信量管理。可对分组排队列,以便基于会话优先级在板载 (onboard)存储器(310b/308a/308m)中输出。当硬件调度器确定针对特定会话的分组准备 好由卸载处理器308i来处理时,用信号通知板载存储器以便进行到该会话的上下文切换。 利用该优先级排定方法,相比常规方式可减小上下文切换开销。也就是说,硬件调度器可处 理上下文切换决策并由此优化下游资源(例如,卸载处理器308i)的性能。
[0087]如上所述,在非常特定的实施例中,卸载处理器308i可以是"孱弱核"型处理器。根 据一些实施例,主机处理器306c可以是"强健核"型处理器(例如,x86或能够处理"重触"计 算操作的任何其他处理器)。虽然将I/O设备302配置为响应于传入分组来触发主机处理器 中断,但根据诸实施例,可禁用此类中断,进而减少主机处理器306c的处理开销。在一些非 常特定的实施例中,卸载处理器308i可包括ARM、ARC、泰思立达(Tensilica)、MIPS、Strong/ ARM或能够处理"轻触"操作的任何其他处理器。优选地,卸载处理器可运行用于执行多个会 话的通用操作系统,可优化这些会话以便与硬件调度器联合来减少上下文切换开销。
[0088]仍然参考图3,在操作中,系统301可在网络接口上接收来自外部网络的分组。基于 由I/O设备302采用的分类逻辑和原理,分组去往主机处理器306c或卸载处理器308i。在特 定实施例中,I/O设备302可作为虚拟化NIC进行操作,可将针对特定逻辑网络或去往某个虚 拟MAC(VMAC)地址的分组定向到单独的队列中,并将它们发送到目的地逻辑实体中。此类安 排可将分组转移到不同的实体。在一些实施例中,每一个此类实体可具有虚拟驱动器、该实 体用来与所连接的虚拟网络通信的虚拟设备模型。
[0089] 根据诸实施例,可使用多个设备将通信量重定向到特定的存储器地址。因此,网络 设备中的每一个就像它正在将分组转移到逻辑实体的存储器位置那样进行操作。然而,实 际上,此类分组被转移到可由一个或多个卸载处理器(例如,308i)在其中处理它们的存储 器地址。在特定实施例中,此类转移去往物理存储器地址,从而可从处理中去除逻辑实体, 并且主机处理器可免于此类分组处理。
[0090] 相应地,可将诸实施例概念化为存储器"黑箱",可将特定的网络数据馈送给该存 储器"黑箱"。此类存储器黑箱可处理数据(例如,处理它),并在此类数据被请求时往回进行 响应。
[0091 ]仍然参考图3,根据一些实施例,I/O设备302可从网络或从计算设备接收数据分 组。数据分组可具有某些特性,包括例如,传输协议号、源和目的地端口号,源和目的地IP地 址。数据分组可进一步具有经处理并有助于它们的分类和管理的元数据(308d)。
[0092] I/O设备302可包括但不限于外围组件互连(PCI)和/或PCI快速(PCIe)设备,该PCI 和/或PCIe设备经由PCI或PCIe总线(例如,312)与主机主板连接。I/O设备的示例包括网络 接口控制器(NIC)、主机总线适配器、聚合网络适配器、ATM网络接口等。
[0093]为了提供允许多个逻辑实体访问相同的I/O设备302的抽象方案,可使I/O设备虚 拟化以提供多个虚拟设备,其中的每一个虚拟设备可执行物理I/O设备的功能中的一些功 能。根据实施例的I/O虚拟化程序(例如,302b)可将通信量重定向到不同的存储器位置(并 由此重定向到附连到存储器总线上的模块的不同的卸载处理器)。为了实现这一点,可将1/ 0设备302 (例如,网络卡)划分为若干功能部分;包括支持输入/输出虚拟化(I0V)架构(例 如,单根I0V)的控制功能(CF)和多个虚拟功能(VF)接口。可在专用使用的运行时期间将资 源提供给每一个虚拟功能接口。CF和VF的示例可包括诸如单根I/O虚拟化或多根I/O虚拟化 架构之类的方案下的物理功能和虚拟功能。CF充当建立并管理虚拟资源的物理资源。CF也 能够充当完全成熟的10设备。VF负责提供对虚拟设备的抽象,以便与多个逻辑实体/多个存 储器区域进行通信。
[0094] 能以设备模型、VF驱动器和CF的驱动器来加载运行在主机处理器306c上的操作系 统/管理程序(hypervisor)/虚拟机/用户代码中的任何一个。可使用设备模型来创建对主 机处理器306c的物理设备的仿真以识别所创建的多个VF中的每一个。可将设备模型重复多 次以给予VF驱动器(与虚拟10设备交互的驱动器)它正在与特定类型的物理设备交互的印 象。
[0095]例如,可使用某个设备模块来仿真诸如英特尔?以太网聚合网络适配器(CNA) X540-T2之类的网络适配器,使得I/O设备302相信它正在与此类适配器交互。在此类情况 下,虚拟功能中的每一个可具有支持上述CAN中的功能的能力,即,物理功能中的每一个应 当能够支持此类功能。设备模型和VF驱动器能以特权模式或非特权模式运行。在一些实施 例中,关于何者主管/运行对应于设备模型和VF驱动器的代码可能没有限制。然而,代码具 有创建设备模型和VF驱动器的多个副本的能力,使得能够创建所述I/O接口的多个副本。 [0096]作为在内核中运行的应用/用户级代码的部分的应用或供应代理306d可在运行时 期间创建针对每一个VF的虚拟I/O地址空间,并将物理地址空间的部分分配给它。例如,如 果处理VF驱动器的应用指示它从存储器地址Oxaaaa到Oxffff读取分组或向存储器地址 Oxaaaa到OxfTfT写入分组,则设备驱动器可将I/O描述符写入到具有头指针和尾指针的描 述符队列中,随着队列条目被填充,该头指针和尾指针被动态地改变。数据结构也可以是其 他类型的,包括但不限于环结构302a或散列表。
[0097] VF可从该驱动器指向的地址位置读取数据或将数据写入该地址位置。此外,在完 成了到被分配给驱动器的地址空间的数据转移后,可禁用中断,通常向主机处理器触发该 中断以处理所述网络分组。将特定的I/O空间分配给设备可包括:将所述10空间分配给特定 的被占据的物理存储器空间。
[0098] 在另一实施例中,如果描述符与用于处理传入分组的特定数据结构相关联,则该 描述符可仅包括写入操作。此外,传入数据结构中的条目中的每一个条目的描述符可以是 恒定的,使得将所有的数据写入重定向到特定的存储器位置。在替代实施例中,连续条目的 描述符可指向存储器中的连续条目,以便将传入分组定向到连续的存储器位置。
[0099] 或者,所述操作系统可为支持VF驱动器的应用创建经定义的物理地址空间,并且 将虚拟存储器地址空间分配给应用或供应代理306d,从而创建针对所述虚拟地址与物理地 址空间之间的每一个虚拟功能的映射。可将虚拟存储器地址空间与物理存储器空间之间的 所述映射存储在I0MMU表(例如,TLB 304a)中。执行存储器读取或写入的应用可将虚拟地址 提供给所述虚拟功能,并且主机处理器0S可将物理存储器位置的特定部分分配给此类应 用。
[0100]或者,可将VF配置成生成诸如读取和写入之类的请求,其可以是例如直接存储器 访问(DMA)读取或写入操作的部分。由I0MMU 304将虚拟地址转换为它们对应的物理地址, 并且可将这些物理地址提供给存储器控制器以供访问。也就是说,I0MMU 304可修改由I/O 设备发起的存储器请求以将该请求中的虚拟地址改变为物理地址,并且可将该存储器请求 转发到存储器控制器供存储器访问。可在支持诸如超传输314之类的协议的总线314上转发 该存储器请求。VF可在此类情况下通过将虚拟存储器地址提供给I0MMU 304来实施直接存 储器访问。
[0101 ]或者,如果VF允许,则所述应用可直接将物理地址编码为VF描述符。如果VF不能够 支持主机处理器306c所使用形式的物理地址,则可将具有由VF设备支持的硬件尺寸的孔径 (aperture)编码为描述符,使得向该VF通知该设备的目标硬件地址。可由转换表将被转移 到孔径的数据映射到系统存储器中经定义的物理地址空间。可由处理器执行的软件发起 DMA操作,从而直接或间接地对I /0设备编程以执行DMA操作。
[0102]仍然参考图3,在特定实施例中,可利用一个或多个FPGA来实现计算单元300的诸 部分。在图3的系统中,计算单元300可包括FPGA 310,可在该FPGA 310中形成DMA从属设备 模块310a和仲裁器310f ΑΜΑ从属模块310a可以是适于附连到存储器总线316的任何设备, 该存储器总线316可响应于DMA读取/写入请求。在替代实施例中,DMA从属模块310a可以是 能够在存储器总线316上进行块数据转移的另一接口。DMA从属模块310a能够(当DMA控制器 从'存储器'或从外围设备执行读取时)从该DMA控制器接收数据或(当DMA控制器对DMA从模 块310a执行写入指令时)将数据转移到该DMA控制器。可使DMA从属模块310a接收在存储器 总线上经封装的(例如,按DDR数据传输形式的,诸如分组或数据突发)DMA读取和写入指令、 或可在对应的存储器总线上发送的任何其他格式的DMA读取和写入指令。
[0103] DMA从属模块310a可重构来自存储器R/W分组的DMA读取/写入指令。可使DMA从属 模块310a适于对向DMA主设备的数据读取/数据写入形式的这些指令做出响应,在PCIe总线 的情况下,该DMA主设备可被设置在外围设备中,或者在ISA总线的情况下,该DMA主设备可 以是系统DMA控制器。
[0104] 然后可将由DMA设备310a接收到的I/O数据排成队列以供仲裁。仲裁可包括调度不 同流的分组的过程,使得可基于多个参数来向它们提供对可用带宽的访问。一般而言,仲裁 器310f将资源访问提供给一个或多个请求器。如果多个请求者请求访问,则仲裁器310f可 确定哪个请求器成为访问器,并随后将数据从该访问器传递到资源接口,并且下游资源可 开始对数据的执行。在已完全将数据转移到资源且该资源已完成执行之后,仲裁器310f可 将控制转移到不同的请求器,并且对所有可用的请求器重复该循环。在图3的实施例中,仲 裁器310f可向计算单元300的其他部分(例如,308)通知传入数据。
[0105] 或者,计算单元300可利用2010年10月12日向Dalai颁证的美国专利7,813,283中 所示的仲裁方案,该美国专利的内容通过引用被结合在本文中。在本文中的诸实施例中,可 实现本领域中已知的其他合适的仲裁方案。或者,可使用开放流交换机和开放流控制器来 实现本发明的仲裁方案。
[0106] 在图3的非常特定的实施例中,计算单元300可进一步包括通知/预取电路310c,该 电路310c可响应于DMA从属模块310a且经仲裁器310f仲裁来预取出存储在缓冲器存储器 310b中的数据。此外,仲裁器310f可经由存储器映射的I/O入口路径310e和出口路径310g来 访问计算单元300的其他部分。
[0107]参考图3,硬件调度器可包括用于实现对传入分组的通信量管理的调度电路308b/ η。可将来自某个资源的、关于某种通信量类别的、涉及特定应用的或流向某个插槽的分组 称为会话流的部分,并且可使用会话元数据来对它们分类。可由分类器308e执行此类分类。
[0108] 在一些实施例中,会话元数据308d可充当准则,通过该准则,可排定分组的优先级 并调度分组,并由此可基于它们的会话元数据来对传入分组重排序。对分组的该重排序可 发生在一个或多个缓冲器中,并可修改这些流的通信量形状。为该优先级排定而选择的调 度规则(或通信量管理(TM))可通过以下方式来影响流和微流的通信量形状:延迟(缓冲); 通信量的突发(缓冲和突发);通信量的平滑(缓冲和速率限制的流);丢弃通信量(选择将丢 弃的数据以避免耗尽缓冲器);延迟抖动(临时地将流的单元移位不同的量);以及通过不准 许连接(例如,不能够同时保证现有的服务水平协议(SLA)和附加流的SLA)。
[0109] 根据诸实施例,计算单元300可充当交换机结构的部分,并且可将深度受限的输出 队列提供给通信量管理,由调度电路308b/n调度对这些输出队列的访问。使用调度规则来 管理此类输出队列以提供对传入流的通信量管理。可通过输出端口将这些队列中的每一个 队列中经队列排定的会话流发送到下游网络元件。
[0110]应注意,常规的通信量管理除了符合其与下游元件之间已经具有的SLA协议之外, 不考虑由所述下游元件对数据的处理和管理。 相比之下,根据诸实施例,调度器电路308b/n可将优先级分配给输出队列中的每 一个队列,并且实施对传入分组的重排序,以便在这些队列中维持会话流的持续性。可使用 调度器电路308b/n来控制将这些持续会话中的每一个会话调度到在卸载处理器308i上被 执行的通用操作系统(0S)308j中。如上文所定义的那样,特定会话流的分组可属于特定队 列。调度器电路308b/n可控制对这些队列的优先级排定,使得可仲裁它们以便由位于下游 的通用(GP)处理资源(例如,卸载处理器308i)处理。在下游处理器308i上运行的OS 308j可 将诸如处理器循环和存储器之类的执行资源分配给它当前正在处理的特定队列。该0S 308j可进一步为那个特定队列分配线程或一组线程,使得可由通用处理元件308i明确地将 该特定队列作为单独的实体来处理。可能有在GP处理资源上运行的多个会话且每一个会话 处理来自驻留在由调度器电路建立的队列中的特定会话流的数据的事实紧密地整合调度 器与下游资源(例如,308i)。这可导致跨通信量管理和调度电路和通用处理资源308i的会 话信息的持续性。
[0112]专用计算资源(例如,308i)、存储器空间和会话中的每一个的会话上下文信息可 提供在通用处理器308i处处置、处理和/或终止会话流中的每一个的方法。调度电路308b/n 可利用执行资源的该功能来将会话流排成队列以便调度下游。可向调度器电路308b/n通知 执行资源(例如,308i)的状态、在执行资源上被运行的当前会话、被分配给它的存储器空 间、处理器高速缓存中会话上下文的位置。
[0113]根据实施例,调度器电路308b/n可进一步包括用于将执行资源从一个状态改变到 另一状态的切换电路。调度器电路308b/n可使用此类能力在准备好被切换到下游执行资源 中的队列之间进行仲裁。此外,可优化下游执行资源以减少与资源之间的上下文切换相关 联的损失和开销。可进一步由调度器电路308b/n来利用此以实施在队列之间的无缝切换, 并因此由执行资源将这些会话作为不同的会话来执行。
[0114]根据诸实施例,调度器电路308b/n可在下游处理资源上调度不同的会话,其中,协 调地操作两者来减少上下文切换期间的开销。减少服务和工程计算可用性的等待时间时的 重要因素可以是与网络队列排定同步的硬件上下文切换。在诸实施例中,当由通信量管理 器选择队列时,流水线协调对应的资源(例如,308i)的高速缓存(例如,L2高速缓存)的换入 (swapin),并且将经重新组装的I/O数据转移到执行进程的存储器空间中。在某些情况下, 队列中没有分组是待定(pending)的,但是计算仍然待定以维护先前的分组。一旦该进程在 经交换的数据外部进行存储器引用,调度器电路(308b/n)可使来自I/O设备302的经队列排 定的数据能够继续调度线程。
[0115] 在一些实施例中,为了向不具有数据的进程提供公平的队列排定,可将最大上下 文尺寸假定为经处理的数据。按此方式,可将队列供应为计算资源与网络带宽资源中的较 大者。仅作为一个非常特定的示例,计算资源可以是以800MHz运行的ARM A9处理器,而网络 带宽可以是3Gbps的带宽。考虑到该比率的不平衡性质,诸实施例可利用具有许多并行会话 (使得硬件对会话专用数据的预取出卸载主机处理器负载的大部分)且具有对数据的最少 通用处理的计算。
[0116] 相应地,在一些实施例中,可将调度器电路308b/n概念化为不是以线路速率速度 在传出队列之间仲裁,而是以非常高的速度在被终止的会话之间仲裁。跨多级流水线(包括 通用0S)保持会话可以是优化此类流水线的此类级中的任何级或所有级的调度器电路。
[0117] 或者,可使用2010年7月20日向Dalai颁证的美国专利No.7,760,715中所示的调度 方案,该美国专利通过引用被结合在本文中。当期望对流进行速率限制以防止专用于过度 选择的流的另一资源的下游拥塞或为特定流实施服务合约时,该方案可能是有用的。实施 例可包括允许下游资源(诸如,可无缝地实施的通用0S)的服务合约的仲裁方案。
[0118]仍然参考图3,根据本文中的诸实施例的硬件调度器或等效物可提供基于会话元 数据来将传入分组数据分类为诸会话流。在对这些流仲裁并将在卸载处理器上将它们排定 为不同处理实体的队列之前,它可进一步提供对这些流的通信量管理。
[0119] 在一些实施例中,卸载处理器(例如,308i)可以是通用处理单元,该通用处理单元 能够处理不同应用的分组或传输会话。此类卸载处理器可以是能够执行通用指令的低功率 处理器。卸载处理器可以是任何合适的处理器,包括但不限于,ARM、ARC、泰思立达 (Tensilica)、MIPS、StrongARM或提供本文中所述功能的任何其他处理器。此类卸载处理器 具有在其上运行的通用0S,其中,优化该通用0S以减少与在不同的线程或线程组之间的上 下文切换相关联的损失。
[0120]相比之下,主机处理器上的上下文切换可能是计算密集型进程,其需要寄存器保 存区、高速缓存中的进程上下文以及如果使它们失效或覆写它们时将被恢复的TLB条目。主 机处理系统中的指令高速缓存未命中可能导致流水线停止,而数据高速缓存未命中导致操 作停止,并且此类高速缓存未命中降低处理器效率并增加处理器开销。
[0121] 同样相比之下,在卸载处理器308i上运行的OS 308j与调度器电路308b/n结合可 一起操作来减少在运行于其上的不同的处理实体之间导致的上下文切换开销。诸实施例可 包括调度器电路与卸载处理器308i上的0S之间的协作机制,其中,0S建立将在高速缓存中 是物理上连续的(针对会话堆和栈的物理着色的分配器)会话上下文;随后在会话初始化之 后,将会话颜色、尺寸和起始物理地址传递到调度器电路。在实际的上下文切换期间,调度 器电路可通过使用这些参数来标识会话上下文,并且可发起将这些内容传递到外部低等待 时间存储器(例如,308g)的批量转移。此外,如果旧会话的上下文被保存在本地存储器308g 中,则调度器电路可管理该旧会话的预取出。在特定实施例中,仅作为一个非常特定的实施 例,本地存储器308g可以是低等待时间存储器,诸如,减少等待时间的动态随机存取存储器 (RLDRAM)。因此,在诸实施例中,可明确地在高速缓存中标识会话上下文。
[0122] 在一些实施例中,可限制上下文尺寸以确保快速的切换速度。附加地或替代地,诸 实施例可包括用于将会话上下文向外转移到本地存储器308g的批量转移机制。随后,在往 回到前一会话的上下文切换期间,可检索并预取出存储在本地存储器308g中的高速缓存内 容。可在本地存储器308g中标记和/或标识不同的上下文会话数据,以便进行快速检索。如 上所述,可由不同的卸载处理器重新调用由一个卸载处理器存储的上下文。
[0123] 在图3的非常特定的实施例中,可将多个卸载处理核整合到计算FPGA308中。可由 另一FPGA 310中的仲裁器电路来仲裁多个计算FPGA。计算FPGA(例如,308)与仲裁器FPGA (例如,310)的组合被称为"X頂M"模块或"Xocket DIMM模块"(例如,计算单元300)。在特定 应用中,这些XIMM模块可提供代理在卸载处理器上的多个会话的执行的集成的通信量和线 程管理电路。
[0124] 图3还示出卸载处理器隧道(tunnel)连接308k,以及存储器接口308m和访问单元 3081 (其可以是加速器一致性端口(ACP))。存储器接口 308m可访问缓冲器存储器308a。根据 诸实施例,系统301可包括使用访问(或"监听"("snooping")单元)3081来访问卸载处理器 308i的高速缓存内容。在特定实施例中,被访问的高速缓存可以是L2高速缓存。访问单元 3081可提供端口或其他访问能力,其可将数据从外部的非高速缓存存储器308g加载到卸载 处理器高速缓存,并将卸载处理器308i的高速缓存内容转移到非高速缓存存储器308g。作 为计算元件300的部分,可能有形成存储器308g的若干存储器设备(例如,RAM)。由此,可使 用存储器308g来存储会话的高速缓存内容。存储器308g可包括一个或多个低等待时间存储 器,并且可被概念化为补充和/或扩充可用的L2高速缓存,并延伸会话的一致性域。附加存 储器308g和访问单元3081可减小对于被切换入会话的高速缓存未命中的不利影响,因为可 将会话的上下文取出或预取出到卸载处理器高速缓存中,使得当线程恢复时,该线程的先 前工作集之中的大多数已经存在于高速缓存中。
[0125] 根据一个特定实施例,在会话切换出时,可经由隧道308k将卸载处理器308i的高 速缓存内容转移到存储器308g。然而,在一些实施例中,可将线程的寄存器集合保存到存储 器中,作为切换出的部分,由此,这些寄存器的内容可驻留在高速缓存中。因此,作为切换入 的部分,当预取出会话的内容并将其转移到卸载处理器308i的高速缓存中时,在恢复线程 后,可由内核加载寄存器内容,并且这些加载应当来自高速缓存而不是来自存储器308g。由 此,凭借对会话的高速缓存内容的仔细管理,可大大地减少因寄存器集合保存和还原以及 切换入时的高速缓存未命中而导致的上下文切换的成本,从而消除上下文切换开销的两个 源并减少被切换入的会话恢复有用的处理的等待时间。
[0126] 根据一些实施例,访问(或监听)单元(例如,3081)可具有高速缓存中相关会话上 下文所驻留的所有行的索引。如果跨物理索引的高速缓存中的诸个位置分散会话,则访问 全部这些会话内容可能变得非常繁琐,因为将需要多次地址转换来访问相同会话的多个页 面。相应地,诸实施例可包括页面着色方案,其中在物理索引的高速缓存中的连续位置中建 立会话内容。针对会话数据的存储器分配器可从物理上连续的页面进行分配,使得对会话 的物理地址范围具有控制。在一些实施例中,通过对齐虚拟存储器页面和物理存储器页面 以索引到高速缓存中相同的位置(例如,图1-3)来做到这一点。在替代实施例中,虚拟和物 理存储器页面不一定必须索引物理索引的高速缓存中的相同位置,但是会话的不同页面在 物理存储器中可能是连续的,使得对高速缓存中的起始索引和条目尺寸的知晓足以访问所 有会话数据。此外,组尺寸(set size)等于会话尺寸,使得一旦知晓高速缓存中会话条目的 索引,就可使用该索引、该尺寸以及组颜色来完全地将会话内容从高速缓存向外转移到外 部存储器(例如,308g)。
[0127] 根据诸实施例,在卸载处理器的高速缓存中,可将相同的颜色分派给会话的所有 页面。在特定实施例中,会话的所有页面可开始于所定义颜色的页面边界处。基于高速缓存 中会话的尺寸,可将被分配给某颜色的页面的数量固定。卸载处理器(例如,308i)可用于执 行特定类型的会话,并且可提前通知每一个会话的尺寸。基于此,卸载处理器可在会话边界 处开始新条目。它可类似地在物理存储器中分配索引到高速缓存中的会话边界的页面。可 保存开始于会话边界处的整个高速缓存上下文。在当前所述的实施例中,会话中的多个页 面在物理索引的高速缓存中可以是连续的。会话的多个页面可具有相同的颜色(g卩,它们是 相同组的部分)并且在位置上连续。通过使用从会话的基索引的偏移,会话的诸页面是可访 问的。可将高速缓存安排或分解为作为会话而非页面的不同的组。为了从一个会话移动至 另一会话,存储器分配方案使用相对于用于访问这些会话的索引的最低位的偏移。例如,物 理索引的高速缓存可以是具有512kb尺寸的L2高速缓存。高速缓存可以是8路相联的,在L2 高速缓存中,对于每一个可能的组有八条通路。因此,对于L2中任何一个颜色具有八行,或 者对于L2中的每一个颜色有八个单独的实例。由于会话上下文8Kb的尺寸,在512Kb的L2高 速缓存中将有八个不同的会话区,或伴随这些所选的尺寸有八个会话颜色。
[0128] 根据诸实施例,物理存储器分配器可基于时间上在先的会话的高速缓存条目/主 存储器条目来标识对应于会话的颜色。在特定实施例中,物理存储器分配器可基于用于将 高速缓存条目分派给前一个会话的地址的3位来标识前一个会话的会话。物理存储器分配 器可将新会话分派到主存储器位置(可通过与最近使用过的条目进行的一些比较来确定其 颜色),并且将基于最近最少使用策略来使对应于不同颜色的会话的高速缓存条目被驱逐。 在另一实施例中,卸载处理器可包括多个核。在此类实施例中,可高速缓存条目锁定在外 部,以便由每一个处理器核使用。例如,如果卸载处理器具有两个核,则可在处理器之间划 分高速缓存(即,L2高速缓存)中高速缓存行的给定组,从而使颜色的数量减半。当创建新会 话时,可将会话的颜色、会话的索引和会话尺寸传递到外部调度器。该信息可用于传入会话 流的队列管理。
[0129] 诸实施例也可通过将这些行锁到高速缓存中来准许将共享文本和任何共享数据 与会话数据隔离开。同样,可使用物理存储器分配器和物理着色技术。如果将单独的共享数 据置于高速缓存中,则只要由访问单元(例如,ACP)进行的转移不复制此类行,则将该共享 数据锁到高速缓存中就是可能的。当为会话数据分配存储器时,在映射驻留在高速缓存中 的会话数据时,存储器分配器可知晓物理颜色。
[0130]已描述了适用于高速缓存和上下文切换管理操作的各实施例,现在将描述阐释特 定方面的示例。
[0131] 图4示出根据实施例的系统的减少开销的上下文切换的方法400。在初始化时,可 作出是否需要会话着色的确定(402)。可由0S作出此类确定。如果不需要会话着色(从402为 否),则页面着色可能存在或可能不存在,这依赖于0S的默认选择(424)。
[0132] 如果需要会话着色(从402为是),则0S可初始化存储器分配器(404)。存储器分配 器可采用可将每一个会话条目分配到"会话"边界的高速缓存优化技术。存储器分配器可确 定每个会话的起始地址、高速缓存中可允许的会话数量以及可发现给定颜色的会话的位置 的数量。此类操作可包括确定可用组的数量,该可用组的数量基于高速缓存尺寸、颜色数量 以及会话尺寸(步骤406)。
[0133] 当针对会话的分组到达时,可作出该分组是针对当前会话还是针对不同的会话的 确定(408)。可由0S执行此类动作。如果分组针对不同的会话(从408为是),则可作出该分组 是否来自较早的会话的确定(410)。如果该分组不是来自较早的会话(即,它是新会话),则 可作出是否存在用于该新会话的足够的存储器的确定(418)。如果存在足够空间(从418为 是),则可进行到新会话的切换(422)。此类动作可包括:将新会话分配在会话边界处,并将 当前正在执行的进程的上下文保存到上下文存储器(其可以是外部的低等待时间存储器)。
[0134] 如果没有高速缓存存储器可用于新会话(从418为否)和/或该分组针对较早的会 话(从410为是),则可进行检查来确定旧/新会话的分组是否是相同颜色的(412)。如果它是 不同颜色的(从412为否),则可进行到该会话的切换(步骤414)。此类动作可包括:检索(对 于较早的会话)或创建(对于新会话)任务的高速缓存条目。此外,如果需要,此类动作可包 括根据LRU方案进行的对高速缓存条目的清除。
[0135] 如果旧/新会话的分组是相同颜色的(从412为是),则可作出关于是否可能超出颜 色压力的确定(416)。如果可能超出颜色压力,或某个其他颜色的会话不可用(从416为"是; 或者……"),则可进行到新会话的切换(420)。此类动作可包括:创建高速缓存条目并记住 新会话颜色。如果不会超出颜色压力,但是某个其他颜色的会话是可用的(从416为"否,但 是……"),则方法可继续进行到414。
[0136] 应当领会,在对本发明的诸示例性实施例的上述描述中,为了使本公开流畅从而 辅助对各个发明性方面中的一个或多个的理解,有时将本发明的各特征一起组合在单个实 施例、附图或它们的描述中。然而,不应当将这种公开方法解释为反映要求保护的本发明需 要比每项权利要求中明确记载的更多特征的意图。相反,如所附权利要求反映的那样,发明 性方面在于少于上述所公开的单个实施例的所有特征。因此,将遵循【具体实施方式】的诸权 利要求明确地结合进该【具体实施方式】中,每一项权利要求独立地作为本发明的单独实施例 而存在。
[0137] 也应当理解,可在不存在未专门公开的元件和/或步骤的情况下实践本发明的诸 实施例。也就是说,本发明的发明性特征可以是某元件的消除。
[0138] 相应地,虽然已详细地描述了本文中陈述的特定实施例的各方面,但是,本发明可 受制于各种改变、替换和变更而不背离本发明的精神和范围。
【主权项】
1. 一种上下文切换高速缓存系统,包括: 多个卸载处理器,连接到存储器总线,每一个卸载处理器具有带有相关联的高速缓存 状态的高速缓存, 上下文存储器,耦合到所述卸载处理器,以及 调度电路,配置成用于在所述卸载处理器中的至少一个卸载处理器与所述上下文存储 器之间引导高速缓存状态的转移。2. 如权利要求1所述的系统,其特征在于,所述多个卸载处理器具有用于访问所述多个 卸载处理器的高速缓存状态的加速器一致性端口。3. 如权利要求1所述的系统,其特征在于,所述相关联的高速缓存状态包括从以下各项 的组中选出的至少一项:卸载处理器寄存器的状态、用于由卸载处理器执行的指令、栈指 针、程序计数器、用于由卸载处理器执行的预取出的指令、用于由卸载处理器使用的预取出 的数据以及被写入到卸载处理器的高速缓存中的数据。4. 如权利要求1所述的系统,其特征在于:至少一个卸载处理器配置为用于运行操作系 统(0S);并且所述调度电路配置为用于与所述0S协作,以便将处理会话的上下文设置为在 卸载处理器的高速缓存中是物理上连续的。5. 如权利要求1所述的系统,其特征在于:至少一个卸载处理器配置为用于运行操作系 统(0S);并且所述调度电路配置为用于与所述0S协作,以便将处理会话的上下文设置为在 卸载处理器的高速缓存中是物理上连续的,并且在卸载处理器的高速缓存中设置处理会话 的颜色、尺寸和起始物理地址。6. 如权利要求1所述的系统,其特征在于:至少一个卸载处理器配置为用于运行操作系 统(0S);并且所述调度电路配置为用于与所述0S协作,以便将处理会话的上下文设置为在 卸载处理器的高速缓存中是物理上连续的,并且在卸载处理器的高速缓存中设置处理会话 的颜色、尺寸和起始物理地址、以及高速缓存中所允许的会话的数量、以及在高速缓存中能 发现给定颜色的会话的位置的数量。7. 如权利要求1所述的系统,其特征在于,所述调度电路配置为用于引导一个卸载处理 器的高速缓存状态到另一卸载处理器的高速缓存的转移。8. 如权利要求1所述的系统,其特征在于,所述调度电路配置为用于通过以下操作来对 第一队列中的网络分组的处理排定优先级:停止与所述卸载处理器中的一个卸载处理器相 关联的第一会话;存储卸载处理器的高速缓存状态;以及发起对被保持在第二队列中的网 络分组的处理。9. 如权利要求1所述的系统,其特征在于: 所述相关联的高速缓存状态包括从以下各项的组中选出的至少一项:卸载处理器寄存 器的状态、用于由卸载处理器执行的指令、栈指针、程序计数器、用于由卸载处理器执行的 预取出的指令、用于由卸载处理器使用的预取出的数据以及被写入到卸载处理器的高速缓 存中的数据; 至少一个卸载处理器配置为用于运行操作系统(0S);以及 所述调度电路配置为用于与所述0S协作以将会话上下文设置为在卸载处理器的高速 缓存中是物理上连续的。10. 如权利要求1所述的系统,其特征在于,所述调度电路配置为通过所述存储器总线, 在所述卸载处理器中的至少一个卸载处理器与所述上下文存储器之间引导高速缓存状态 的转移。11. 如权利要求1所述的系统,其特征在于,所述上下文存储器包括至少一个低等待时 间存储器设备。12. -种用于多个卸载处理器的上下文切换的方法,所述多个卸载处理器经耦合以便 在存储器总线上接收数据以进行处理,所述方法包括以下步骤: 通过调度电路的操作,经由从多个卸载处理器中的至少一个卸载处理器进入上下文存 储器的批量读取来引导高速缓存上下文的存储,并且所述高速缓存状态的任何虚拟和物理 存储器位置被对齐,以及 随后,通过所述调度电路的操作,引导将所述高速缓存状态转移到所述卸载处理器中 的至少一个卸载处理器以进行处理。13. 如权利要求12所述的方法,其特征在于,所述批量读取通过加速器一致性端口。14. 如权利要求12所述的方法,其特征在于,所述相关联的高速缓存状态包括以下中的 至少一项:卸载处理器寄存器的状态、用于由卸载处理器执行的指令、栈指针、程序计数器、 用于由卸载处理器执行的预取出的指令、用于由卸载处理器使用的预取出的数据以及被写 入到卸载处理器的高速缓存中的数据。15. 如权利要求12所述的方法,其特征在于,还包括:所述高速缓存状态包括会话上下 文;并且通过运行在卸载处理器上的操作系统(0S)与所述调度电路的协作将所述会话上下 文设置为在卸载处理器的高速缓存中是物理上连续的。16. 如权利要求12所述的方法,其特征在于,还包括:在对处理会话的初始化之后,将会 话颜色、会话尺寸以及所述处理会话的起始物理高速缓存地址传递到所述调度电路。17. 如权利要求12所述的方法,其特征在于,还包括:确定多个处理会话中的每一个处 理会话的起始地址、卸载处理器的高速缓存中所允许的会话的数量以及能发现给定会话颜 色的会话的位置的数量。18. 如权利要求12所述的方法,其特征在于,还包括:将所述卸载处理器中的一个卸载 处理器的高速缓存状态转移到所述卸载处理器中的另一卸载处理器的高速缓存。19. 如权利要求12所述的方法,其特征在于,还包括通过以下操作来对通过所述存储器 总线接收到的第一队列中的网络分组的处理排定优先级:停止与所述卸载处理器中的一个 卸载处理器相关联的第一会话;存储卸载处理器的高速缓存状态;以及发起对被保持在第 二队列中的网络分组的处理。20. 如权利要求12所述的方法,其特征在于,还包括:将由卸载处理器执行的处理的会 话上下文设置为在卸载处理器的高速缓存中是物理上连续的。21. 如权利要求12所述的方法,其特征在于,从所述高速缓存进入所述上下文存储器的 所述批量读取包括:通过所述存储器总线进入低等待时间存储器设备的批量读取。22. -种用于多个卸载处理器的上下文切换的方法,包括以下步骤: 通过存储器总线连接的插槽来接收用于处理的网络分组, 将所述网络分组组织为用于处理的多个会话, 通过由调度电路的操作而将所述卸载处理器中的至少一个卸载处理器的高速缓存状 态读取到上下文存储器中来挂起至少一个会话的处理,并且虚拟存储器位置和物理高速缓 存位置被对齐,以及 随后,通过所述调度电路的操作,引导将所述高速缓存状态转移到所述卸载处理器中 的至少一个卸载处理器以进行处理。23. 如权利要求22所述的方法,其特征在于,所述批量读取通过加速器一致性端口。24. 如权利要求22所述的方法,其特征在于,所述相关联的高速缓存状态包括以下中的 至少一项:卸载处理器寄存器的状态、用于由卸载处理器执行的指令、栈指针、程序计数器、 用于由卸载处理器执行的预取出的指令、用于由卸载处理器使用的预取出的数据以及被写 入到卸载处理器的高速缓存中的数据。24. 如权利要求22所述的方法,其特征在于,还包括: 所述高速缓存状态包括会话上下文;并且 通过运行在卸载处理器上的操作系统(0S)与所述调度电路的协作,将所述会话上下文 设置为在卸载处理器的高速缓存中是物理上连续的。25. 如权利要求22所述的方法,其特征在于,还包括:在对处理会话的初始化之后,将会 话颜色、会话尺寸以及所述处理会话的起始物理高速缓存地址传递到所述调度电路。26. 如权利要求22所述的方法,其特征在于,还包括: 确定多个处理会话中的每一个处理会话的起始地址、卸载处理器的高速缓存中所允许 的会话的数量以及能发现给定会话颜色的会话的位置的数量。27. 如权利要求22所述的方法,其特征在于,还包括:将所述卸载处理器中的一个卸载 处理器的高速缓存状态转移到所述卸载处理器中的另一卸载处理器的高速缓存。28. 如权利要求22所述的方法,其特征在于,还包括通过以下操作来对通过所述存储器 总线接收到的第一队列中的网络分组的处理排定优先级:停止与所述卸载处理器中的一个 卸载处理器相关联的第一会话;存储卸载处理器的高速缓存状态;以及发起对被保持在第 二队列中的网络分组的处理。29. 如权利要求22所述的方法,其特征在于,挂起至少一个会话的处理包括:以抢占式 模式操作以便控制会话执行。30. 如权利要求22所述的方法,其特征在于,接收网络分组包括:在所述存储器总线上, 通过兼容双列直插存储器模块(DIMM)的插槽来接收网络分组。
【文档编号】G06F13/00GK105874441SQ201380074213
【公开日】2016年8月17日
【申请日】2013年6月26日
【发明人】P·达拉尔, S·贝莱尔
【申请人】埃克索科茨股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1