CN105765910A - 利用卸载处理器的调度和通信量管理 - Google Patents

利用卸载处理器的调度和通信量管理 Download PDF

Info

Publication number
CN105765910A
CN105765910A CN201380074204.3A CN201380074204A CN105765910A CN 105765910 A CN105765910 A CN 105765910A CN 201380074204 A CN201380074204 A CN 201380074204A CN 105765910 A CN105765910 A CN 105765910A
Authority
CN
China
Prior art keywords
processor
network packet
packet
circuit
unloading
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.)
Pending
Application number
CN201380074204.3A
Other languages
English (en)
Inventor
P·达拉尔
S·贝莱尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
XOCKETS IP LLC
Original Assignee
XOCKETS IP LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by XOCKETS IP LLC filed Critical XOCKETS IP LLC
Publication of CN105765910A publication Critical patent/CN105765910A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • G06F13/285Halt processor DMA
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/56Queue scheduling implementing delay-aware scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/624Altering the ordering of packets in an individual queue
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6295Queue scheduling characterised by scheduling criteria using multiple queues, one for each individual QoS, connection, flow or priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/10Mapping addresses of different types
    • H04L61/103Mapping addresses of different types across network layers, e.g. resolution of network layer into physical layer addresses or address resolution protocol [ARP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2592Translation of Internet protocol [IP] addresses using tunnelling or encapsulation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/60Types of network addresses
    • H04L2101/686Types of network addresses using dual-stack hosts, e.g. in Internet protocol version 4 [IPv4]/Internet protocol version 6 [IPv6] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/40Constructional details, e.g. power supply, mechanical construction or backplane
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Bus Control (AREA)

Abstract

公开了用于分组处理系统的调度系统,并且该调度系统可包括:分类电路,其被连接到存储器总线,并且可配置成用于对网络分组进行分类,从而将经分类的网络分组置于第一组多个输入/输出队列中;调度电路,其用于对从分类电路接收到的、通过第一组多个输入/输出队列的网络分组重排序,并且用于将经重排序的网络分组置于第二组多个输入/输出队列中;仲裁电路,其用于将从调度电路接收到的、通过第二组多个输入/输出队列的网络分组引导到多个输出端口,以及多个卸载处理器,每一个卸载处理器耦合到多个输出端口中的至少一个输出端口,这多个卸载处理器配置成用于修改网络分组。

Description

利用卸载处理器的调度和通信量管理
技术领域
所描述的诸实施例涉及计算机系统的调度和通信量管理服务,该服务可由具有卸载处理器的存储器总线连接的模块提供。
背景技术
对网络分组流的高效管理和处理对高性能联网计算系统是关键的。依赖于硬件配置、进程流和数据流,网络分组流可能是高度可变的,并且数据处理需求跨越可从数秒到数小时范围内变化的若干数量级的时间尺度变化。可由系统使网络服务中的实质性改善成为可能,该系统可灵活地处理数据流,识别或表征数据流中的模式,并且改善对数据流的路由和处理决策。这对于使用分组切换通信的联网计算机环境是尤其重要的。例如,由于网络安全所需的分组检查,通常在数据流中造成延迟。可在分组的头部处或分组的有效载荷处引导此类分组检查,并且此类分组检查可包括处理器内容匹配、行为异常检测、“黑”或“白”名单比较等。其他高分组处理应用可包括加密/解密、服务质量受控的分组重组、流式传感器数据或者视频或音频处理。没有作为复杂数据流系统的部分而到达的用于调度分组处理的高效机制的情况下,用户可能在网络系统响应中遭遇不可接受的延迟。
支持能够处理复杂数据流的流的分组交换结构的通常可用的通信量管理电路常包括深度受限的输出队列,由调度电路仲裁对这些深度受限的输出队列的访问。使用调度规则来管理输入队列以提供对传入数据流的通信量管理。调度器可分配或标识数据流优先级,并且将输出端口提供给这些数据流中的每一个数据流。如果多个数据流竞争同一个输出端口,则可提供对这些输出端口中的每一个输出端口的时间多路复用访问;或者,在多个数据流被向外发送到输出端口前,可由仲裁电路仲裁的多个数据流对输出端口的竞争。然而,通信量管理电路通常具有对信息的有限访问或不具有对信息的访问,该信息关于下游存储器或处理元件对数据的处理和管理。例如,基于优先级的分配,如果可在缓冲器中动态地对传入分组重排序,则可改善数据流的性能,从而有助于在这些队列中维持会话流的持续性。为此类分组处理优先级排定或通信量管理(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)。
应当领会,在对本发明的诸示例性实施例的上述描述中,为了使本公开流畅从而辅助对各个发明性方面中的一个或多个的理解,有时将本发明的各特征一起组合在单个实施例、附图或它们的描述中。然而,不应当将这种公开方法解释为反映要求保护的本发明需要比每项权利要求中明确记载的更多特征的意图。相反,如所附权利要求反映的那样,发明性方面在于少于上述所公开的单个实施例的所有特征。因此,将遵循具体实施方式的诸权利要求明确地结合进该具体实施方式中,每一项权利要求独立地作为本发明的单独实施例而存在。
也应当理解,可在不存在未专门公开的元件和/或步骤的情况下实践本发明的诸实施例。也就是说,本发明的发明性特征可以是某元件的消除。
相应地,虽然已详细地描述了本文中陈述的特定实施例的各方面,但是,本发明可受制于各种改变、替换和变更而不背离本发明的精神和范围。

Claims (25)

1.一种用于分组处理系统的调度系统,所述调度系统包括:
分类电路,所述分类电路被连接到存储器总线,并且可配置为用于对网络分组进行分类,从而将经分类的网络分组置于第一组多个输入/输出队列中,
调度电路,所述调度电路用于对从所述分类电路接收到的、通过所述第一组多个输入/输出队列的网络分组重排序,并且用于将经重排序的网络分组置于第二组多个输入/输出队列中,
仲裁电路,所述仲裁电路用于将从所述调度电路接收到的、通过所述第二组多个输入/输出队列的网络分组引导到多个输出端口,以及
多个卸载处理器,每一个卸载处理器耦合到所述多个输出端口中的至少一个输出端口,所述多个卸载处理器配置成用于修改网络分组。
2.如权利要求1所述的系统,其特征在于,所述存储器总线支持直接存储器访问,并且所述多个卸载处理器能将经修改的分组往回引导到所述存储器总线。
3.如权利要求1所述的系统,其特征在于,所述分类电路配置成用于基于会话元数据来对网络分组分类。
4.如权利要求1所述的系统,其特征在于,所述调度电路配置成用于基于相应的多个卸载处理器的可用性来引导网络分组。
5.如权利要求1所述的系统,其特征在于,所述调度电路配置成用于根据会话优先级来对网络分组重排序。
6.如权利要求1所述的系统,其特征在于,所述调度电路配置成用于发起针对所述多个卸载处理器中的至少一个卸载处理器的上下文切换。
7.如权利要求1所述的系统,其特征在于,所述调度电路配置成用于将网络分组转移到所定义的通信量管理队列中。
8.如权利要求1所述的系统,其特征在于,所述调度电路配置成用于确定针对所述多个卸载处理器中的每一个卸载处理器的网络分组处理何时完成。
9.如权利要求1所述的系统,其特征在于,所述调度电路配置成用于以抢占式模式进行操作来控制会话执行。
10.一种用于调度分组处理的方法,包括以下步骤:
基于会话元数据对网络分组分类,并且将经分类的网络分组置于第一组多个输入/输出队列中,并且使用具有所定义的存储器传输协议的存储器总线来将网络分组传输到分类电路,
使用调度电路对从所述第一组多个输入/输出队列接收到的网络分组重排序,并且将经重排序的网络分组置于第二组多个输入/输出队列中,
使用仲裁电路将从所述调度电路接收到的、通过所述第二组多个输入/输出队列的网络分组引导到多个输出端口,以及
使用多个卸载处理器来修改网络分组,每一个卸载处理器耦合到所述多个输出端口中的至少一个输出端口,所述卸载处理器配置成将经修改的网络分组往回引导到所述存储器总线。
11.如权利要求10所述的方法,其特征在于,对网络分组的引导基于所述多个卸载处理器的可用性。
12.如权利要求10所述的方法,其特征在于,根据网络分组的会话优先级来进行对网络分组的重排序。
13.如权利要求10所述的方法,其特征在于,还包括:通过所述调度电路的操作来发起针对所述多个卸载处理器中的至少一个卸载处理器的上下文切换。
14.如权利要求10所述的方法,其特征在于,还包括:通过所述调度电路的操作来将网络分组转移到所定义的通信量管理队列中。
15.如权利要求10所述的方法,其特征在于,还包括:通过所述调度电路的操作来确定针对所述多个卸载处理器中的每一个卸载处理器的分组处理何时完成。
16.如权利要求10所述的方法,其特征在于,还包括:通过所述调度电路的操作来抢占当前的网络分组处理会话。
17.一种用于调度用于网络分组处理的服务的存储器总线连接的模块,所述模块包括:
存储器总线连接,
调度电路,所述调度电路配置成用于对从所述存储器总线连接接收到的网络分组重排序,并且用于将经重排序的网络分组置于多个输入/输出队列中,以及
多个卸载处理器,所述多个卸载处理器被连接到所述存储器总线连接,每一个卸载处理器配置成用于修改所述多个输入/输出队列中的网络分组。
18.如权利要求17所述的模块,其特征在于,所述调度电路配置成用于基于相应的多个卸载处理器的可用性来引导网络分组。
19.如权利要求17所述的模块,其特征在于,所述调度电路配置成用于根据网络分组的会话优先级来对网络分组重排序。
20.如权利要求17所述的模块,其特征在于,所述调度电路配置成用于发起针对所述多个卸载处理器中的至少一个卸载处理器的上下文切换。
21.如权利要求17所述的模块,其特征在于,所述调度电路配置成用于将网络分组转移到所定义的通信量管理队列中。
22.如权利要求17所述的模块,其特征在于,所述调度电路配置成用于确定针对所述多个卸载处理器中的每一个卸载处理器的网络分组处理何时完成。
23.如权利要求17所述的模块,其特征在于,所述调度电路配置成用于以抢占式模式进行操作来控制会话执行。
24.如权利要求17所述的模块,其特征在于,所述存储器总线连接兼容存储器总线插槽。
25.如权利要求17所述的模块,其特征在于,所述存储器总线连接兼容双列直插存储器模块(DIMM)插槽。
CN201380074204.3A 2013-01-17 2013-06-22 利用卸载处理器的调度和通信量管理 Pending CN105765910A (zh)

Applications Claiming Priority (19)

Application Number Priority Date Filing Date Title
US201361753907P 2013-01-17 2013-01-17
US201361753895P 2013-01-17 2013-01-17
US201361753910P 2013-01-17 2013-01-17
US201361753904P 2013-01-17 2013-01-17
US201361753906P 2013-01-17 2013-01-17
US201361753892P 2013-01-17 2013-01-17
US201361753903P 2013-01-17 2013-01-17
US201361753899P 2013-01-17 2013-01-17
US201361753901P 2013-01-17 2013-01-17
US61/753,904 2013-01-17
US61/753,892 2013-01-17
US61/753,910 2013-01-17
US61/753,895 2013-01-17
US61/753,903 2013-01-17
US61/753,906 2013-01-17
US61/753,907 2013-01-17
US61/753,899 2013-01-17
US61/753,901 2013-01-17
PCT/US2013/047205 WO2014113061A2 (en) 2013-01-17 2013-06-22 Scheduling and traffic management with offload processors

Publications (1)

Publication Number Publication Date
CN105765910A true CN105765910A (zh) 2016-07-13

Family

ID=51165034

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201380074204.3A Pending CN105765910A (zh) 2013-01-17 2013-06-22 利用卸载处理器的调度和通信量管理
CN201380074213.2A Pending CN105874441A (zh) 2013-01-17 2013-06-26 利用卸载处理器的上下文切换

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201380074213.2A Pending CN105874441A (zh) 2013-01-17 2013-06-26 利用卸载处理器的上下文切换

Country Status (6)

Country Link
US (25) US20140201409A1 (zh)
EP (3) EP2946296A4 (zh)
JP (2) JP2016503933A (zh)
KR (3) KR20160037827A (zh)
CN (2) CN105765910A (zh)
WO (6) WO2014113055A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109313580A (zh) * 2016-07-22 2019-02-05 英特尔公司 用于托架架构的技术
CN109358953A (zh) * 2018-09-20 2019-02-19 中南大学 一种微云中的多任务应用卸载方法
CN110181928A (zh) * 2019-07-09 2019-08-30 苏州微影激光技术有限公司 一种丝网印刷版的制版装置及制版方法
JP2020184690A (ja) * 2019-05-08 2020-11-12 富士通株式会社 パケット分類プログラム、パケット分類方法、および、情報処理装置
CN114726929A (zh) * 2021-01-06 2022-07-08 迈络思科技有限公司 网络适配器中的连接管理

Families Citing this family (140)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7490325B2 (en) 2004-03-13 2009-02-10 Cluster Resources, Inc. System and method for providing intelligent pre-staging of data in a compute environment
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US8271980B2 (en) 2004-11-08 2012-09-18 Adaptive Computing Enterprises, Inc. System and method of providing system jobs within a compute environment
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
EP1866767B1 (en) 2005-03-16 2018-04-18 III Holdings 12, LLC Automatic workload transfer to an on-demand center
CA2603577A1 (en) 2005-04-07 2006-10-12 Cluster Resources, Inc. On-demand access to compute resources
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US9432298B1 (en) * 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
CN103377161A (zh) * 2012-04-24 2013-10-30 鸿富锦精密工业(深圳)有限公司 主板及应用于该主板的数据处理方法
US9258276B2 (en) 2012-05-22 2016-02-09 Xockets, Inc. Efficient packet handling, redirection, and inspection using offload processors
US20130318269A1 (en) 2012-05-22 2013-11-28 Xockets IP, LLC Processing structured and unstructured data using offload processors
US11132277B2 (en) * 2012-12-28 2021-09-28 Iii Holdings 2, Llc System and method for continuous low-overhead monitoring of distributed applications running on a cluster of data processing nodes
KR20160037827A (ko) 2013-01-17 2016-04-06 엑소케츠 인코포레이티드 시스템 메모리로의 연결을 위한 오프로드 프로세서 모듈들
US9569223B2 (en) * 2013-02-13 2017-02-14 Red Hat Israel, Ltd. Mixed shared/non-shared memory transport for virtual machines
US9317444B2 (en) 2013-03-15 2016-04-19 Vmware, Inc. Latency reduction for direct memory access operations involving address translation
US9288163B2 (en) * 2013-03-15 2016-03-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Low-latency packet receive method for networking devices
US10084718B1 (en) 2013-03-15 2018-09-25 Google Llc Bi-Connected hierarchical data center network based on multi-ported network interface controllers (NICs)
US9462088B2 (en) * 2013-04-02 2016-10-04 Cisco Technology, Inc. Offload operations for overlay networks
US9606842B2 (en) * 2013-05-08 2017-03-28 National Science Foundation Resource and core scaling for improving performance of power-constrained multi-core processors
US9143403B2 (en) * 2013-06-19 2015-09-22 Hewlett-Packard Development Company, L.P. Autonomous metric tracking and adjustment
US9331868B2 (en) 2013-10-15 2016-05-03 At&T Intellectual Property I, L.P. Method of bus virtualization in computing machine intercommunications
CN105612499B (zh) * 2013-10-29 2018-11-13 华中科技大学 混合高速缓存管理
US9454394B2 (en) * 2013-11-22 2016-09-27 Red Hat Israel, Ltd. Hypervisor dynamically assigned input/output resources for virtual devices
US10254987B2 (en) * 2013-12-12 2019-04-09 Samsung Electronics Co., Ltd. Disaggregated memory appliance having a management processor that accepts request from a plurality of hosts for management, configuration and provisioning of memory
KR101572689B1 (ko) * 2014-01-06 2015-11-27 (주)구름네트웍스 네트워크 인터페이스 가상화 장치 및 방법
US9705798B1 (en) * 2014-01-07 2017-07-11 Google Inc. Systems and methods for routing data through data centers using an indirect generalized hypercube network
JP2015143945A (ja) * 2014-01-31 2015-08-06 富士通株式会社 ストレージ制御装置、ストレージ装置および制御プログラム
CN103905337B (zh) * 2014-03-31 2018-01-23 华为技术有限公司 一种网络资源的处理装置、方法和系统
US9467389B2 (en) 2014-04-28 2016-10-11 International Business Machines Corporation Handling large frames in a virtualized fibre channel over ethernet (FCoE) data forwarder
US9491031B2 (en) * 2014-05-06 2016-11-08 At&T Intellectual Property I, L.P. Devices, methods, and computer readable storage devices for collecting information and sharing information associated with session flows between communication devices and servers
US9742881B2 (en) * 2014-06-30 2017-08-22 Nicira, Inc. Network virtualization using just-in-time distributed capability for classification encoding
US10127783B2 (en) 2014-07-07 2018-11-13 Google Llc Method and device for processing motion events
US9082018B1 (en) * 2014-09-30 2015-07-14 Google Inc. Method and system for retroactively changing a display characteristic of event indicators on an event timeline
US9501915B1 (en) 2014-07-07 2016-11-22 Google Inc. Systems and methods for analyzing a video stream
US10140827B2 (en) 2014-07-07 2018-11-27 Google Llc Method and system for processing motion event notifications
US9354794B2 (en) 2014-07-07 2016-05-31 Google Inc. Method and system for performing client-side zooming of a remote video feed
US9449229B1 (en) 2014-07-07 2016-09-20 Google Inc. Systems and methods for categorizing motion event candidates
US9892079B2 (en) * 2014-07-25 2018-02-13 Rajiv Ganth Unified converged network, storage and compute system
WO2016013024A1 (en) * 2014-07-25 2016-01-28 StorNetware Systems Pvt. Ltd. Unified converged network, storage and computer system
US10261817B2 (en) * 2014-07-29 2019-04-16 Nxp Usa, Inc. System on a chip and method for a controller supported virtual machine monitor
US9922000B2 (en) * 2014-08-25 2018-03-20 Marvell World Trade Ltd. Packet buffer with dynamic bypass
US10313683B2 (en) * 2014-08-30 2019-06-04 Apple Inc. Video encoder with context switching
US9703951B2 (en) 2014-09-30 2017-07-11 Amazon Technologies, Inc. Allocation of shared system resources
USD782495S1 (en) 2014-10-07 2017-03-28 Google Inc. Display screen or portion thereof with graphical user interface
US9378363B1 (en) 2014-10-08 2016-06-28 Amazon Technologies, Inc. Noise injected virtual timer
US9754103B1 (en) 2014-10-08 2017-09-05 Amazon Technologies, Inc. Micro-architecturally delayed timer
DE102014221726A1 (de) * 2014-10-24 2016-04-28 Continental Teves Ag & Co. Ohg Verfahren zum Handhaben einer empfangenen Fahrzeug-zu-X-Nachricht in einem Fahrzeug, Fahrzeug-zu-X-Kommunikationsmodul und Speichermedium
US9864636B1 (en) * 2014-12-10 2018-01-09 Amazon Technologies, Inc. Allocating processor resources based on a service-level agreement
US9491112B1 (en) 2014-12-10 2016-11-08 Amazon Technologies, Inc. Allocating processor resources based on a task identifier
US20160188529A1 (en) * 2014-12-25 2016-06-30 Intel Corporation Guaranteed quality of service in system-on-a-chip uncore fabric
US20160197834A1 (en) * 2015-01-02 2016-07-07 Siegfried Luft Architecture and method for traffic engineering between diverse cloud providers
US9952979B1 (en) * 2015-01-14 2018-04-24 Cavium, Inc. Methods and systems for direct memory access operations
CN106326140B (zh) * 2015-06-30 2020-06-02 华为技术有限公司 数据拷贝方法、直接内存访问控制器及计算机系统
US10310998B2 (en) 2015-06-30 2019-06-04 Microsoft Technology Licensing, Llc Direct memory access with filtering
KR102402672B1 (ko) * 2015-09-01 2022-05-26 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템에서 연산들을 처리하는 방법
US9491765B1 (en) * 2015-09-21 2016-11-08 Dell Products L.P. Beam forming communication system
US20170142234A1 (en) * 2015-11-13 2017-05-18 Microsoft Technology Licensing, Llc Scalable addressing mechanism for virtual machines
US10817456B2 (en) 2015-11-18 2020-10-27 Oracle International Corporation Separation of control and data plane functions in SoC virtualized I/O device
US10853303B2 (en) 2015-11-18 2020-12-01 Oracle International Corporation Separation of control and data plane functions in SoC virtualized I/O device
US10031801B2 (en) 2015-12-01 2018-07-24 Microsoft Technology Licensing, Llc Configurable reliability for memory devices
US10048977B2 (en) * 2015-12-22 2018-08-14 Intel Corporation Methods and apparatus for multi-stage VM virtual network function and virtual service function chain acceleration for NFV and needs-based hardware acceleration
US10445271B2 (en) 2016-01-04 2019-10-15 Intel Corporation Multi-core communication acceleration using hardware queue device
US9985890B2 (en) 2016-03-14 2018-05-29 International Business Machines Corporation Identifying a local congestion control algorithm of a virtual machine
US10802998B2 (en) * 2016-03-29 2020-10-13 Intel Corporation Technologies for processor core soft-offlining
CN108885566B (zh) * 2016-03-31 2022-10-28 日本电气株式会社 网络系统中的控制方法、控制设备以及服务器
US10045252B2 (en) * 2016-06-02 2018-08-07 International Business Machines Corporation Virtual switch-based congestion control for multiple TCP flows
US11671382B2 (en) 2016-06-17 2023-06-06 Intel Corporation Technologies for coordinating access to data packets in a memory
KR102548599B1 (ko) 2016-06-17 2023-06-29 삼성전자주식회사 버퍼메모리를 포함하는 메모리 장치 및 이를 포함하는 메모리 모듈
US10341264B2 (en) 2016-06-30 2019-07-02 Intel Corporation Technologies for scalable packet reception and transmission
US10148576B2 (en) * 2016-07-28 2018-12-04 Fortinet, Inc. Network processing unit (NPU) integrated layer 2 network device for layer 3 offloading
US10277636B2 (en) 2016-09-08 2019-04-30 Macnica Americas, Inc. FPGA offload module and processes for seamless frame-level switching of media streams in real-time
US10552212B2 (en) * 2016-11-28 2020-02-04 Arm Limited Data processing
US20180150256A1 (en) 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
US10715424B2 (en) 2016-12-06 2020-07-14 Microsoft Technology Licensing, Llc Network traffic management with queues affinitized to one or more cores
US10826841B2 (en) * 2016-12-06 2020-11-03 Microsoft Technology Licensing, Llc Modification of queue affinity to cores based on utilization
US10554554B2 (en) * 2016-12-06 2020-02-04 Microsoft Technology Licensing, Llc Hybrid network processing load distribution in computing systems
CN106656711B (zh) * 2016-12-26 2019-06-18 中核控制系统工程有限公司 一种令牌总线时隙预定义方法
US11853244B2 (en) * 2017-01-26 2023-12-26 Wisconsin Alumni Research Foundation Reconfigurable computer accelerator providing stream processor and dataflow processor
US10949427B2 (en) 2017-01-31 2021-03-16 Microsoft Technology Licensing, Llc Stream data processing on multiple application timelines
JP6859755B2 (ja) * 2017-03-02 2021-04-14 富士通株式会社 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
CN110731070A (zh) 2017-03-29 2020-01-24 芬基波尔有限责任公司 通过多个交替数据路径进行分组喷射的无阻塞的任意到任意数据中心网络
US10257033B2 (en) * 2017-04-12 2019-04-09 Cisco Technology, Inc. Virtualized network functions and service chaining in serverless computing infrastructure
US20180330288A1 (en) * 2017-05-15 2018-11-15 Alteryx, Inc. Method of data aggregation for cache optimization and efficient processing
US10331445B2 (en) * 2017-05-24 2019-06-25 Microsoft Technology Licensing, Llc Multifunction vector processor circuits
US20180341494A1 (en) * 2017-05-26 2018-11-29 Intel Corporation Accelerating network security monitoring
US10990291B2 (en) * 2017-06-12 2021-04-27 Dell Products, L.P. Software assist memory module hardware architecture
US10838902B2 (en) 2017-06-23 2020-11-17 Facebook, Inc. Apparatus, system, and method for performing hardware acceleration via expansion cards
CN109213268A (zh) * 2017-07-04 2019-01-15 佛山市顺德区顺达电脑厂有限公司 服务器机柜系统及其讯号传输频率调整方法
CN110915173B (zh) * 2017-07-10 2022-04-29 芬基波尔有限责任公司 用于计算节点和存储节点的数据处理单元
CN117348976A (zh) 2017-07-10 2024-01-05 微软技术许可有限责任公司 用于流处理的数据处理单元
CN109426556B (zh) * 2017-08-31 2021-06-04 大唐移动通信设备有限公司 一种进程调度方法和装置
CN107741867B (zh) * 2017-09-30 2020-03-10 Oppo广东移动通信有限公司 应用程序管理方法、装置、存储介质及电子设备
US10592164B2 (en) 2017-11-14 2020-03-17 International Business Machines Corporation Portions of configuration state registers in-memory
US10496437B2 (en) * 2017-11-14 2019-12-03 International Business Machines Corporation Context switch by changing memory pointers
US20190171601A1 (en) * 2017-12-03 2019-06-06 Intel Corporation Mechanisms for fpga chaining and unified fpga views to composed system hosts
US10810064B2 (en) * 2018-04-27 2020-10-20 Nasdaq Technology Ab Publish-subscribe framework for application execution
US10812315B2 (en) 2018-06-07 2020-10-20 Cisco Technology, Inc. Cross-domain network assurance
KR102665410B1 (ko) 2018-07-30 2024-05-13 삼성전자주식회사 메모리 장치의 내부 프로세싱 동작 방법
US10795612B2 (en) * 2018-07-31 2020-10-06 EMC IP Holding Company LLC Offload processing using storage device slots
US10862805B1 (en) 2018-07-31 2020-12-08 Juniper Networks, Inc. Intelligent offloading of services for a network device
US10649927B2 (en) * 2018-08-20 2020-05-12 Intel Corporation Dual in-line memory module (DIMM) programmable accelerator card
TWI821373B (zh) 2018-08-23 2023-11-11 美商阿爾克斯股份有限公司 網路運算環境中的第一跳轉閘道的冗餘機制系統
US10979542B2 (en) * 2018-08-28 2021-04-13 Vmware, Inc. Flow cache support for crypto operations and offload
US10705762B2 (en) 2018-08-30 2020-07-07 Micron Technology, Inc. Forward caching application programming interface systems and methods
US10942824B2 (en) 2018-10-08 2021-03-09 Hewlett Packard Enterprise Development Lp Programming model and framework for providing resilient parallel tasks
US11204819B2 (en) 2018-12-21 2021-12-21 Samsung Electronics Co., Ltd. System and method for offloading application functions to a device
US10606775B1 (en) 2018-12-28 2020-03-31 Micron Technology, Inc. Computing tile
US11003539B2 (en) * 2019-01-15 2021-05-11 EMC IP Holding Company LLC Offload processing using a storage slot
CN109714217A (zh) * 2019-02-28 2019-05-03 苏州浪潮智能科技有限公司 一种机柜以及机柜间通信方法
US10929310B2 (en) 2019-03-01 2021-02-23 Cisco Technology, Inc. Adaptive address translation caches
US11374880B2 (en) * 2019-06-17 2022-06-28 Cyxtera Data Centers, Inc. Automated deployment of internet connectivity to rack switches in a data center
US11374879B2 (en) * 2019-06-17 2022-06-28 Cyxtera Data Centers, Inc. Network configuration of top-of-rack switches across multiple racks in a data center
WO2021050951A1 (en) * 2019-09-11 2021-03-18 Intel Corporation Hardware queue scheduling for multi-core computing environments
US11275111B2 (en) 2019-09-20 2022-03-15 Micron Technology, Inc. Plurality of edge through-silicon vias and related systems, methods, and devices
US11671483B2 (en) * 2019-10-30 2023-06-06 Telefonaktiebolaget Lm Ericsson (Publ) In-band protocol-based in-network computation offload framework
US11232049B2 (en) 2019-12-13 2022-01-25 Micron Technology, Inc. Memory module with computation capability
US11934330B2 (en) * 2020-05-08 2024-03-19 Intel Corporation Memory allocation for distributed processing devices
US11962518B2 (en) 2020-06-02 2024-04-16 VMware LLC Hardware acceleration techniques using flow selection
FR3113346A1 (fr) * 2020-08-10 2022-02-11 Orange Procédé de traitement d’un service de transport de données
JP7508962B2 (ja) * 2020-09-15 2024-07-02 富士通株式会社 半導体装置及び転送方法
US11736566B2 (en) 2020-09-28 2023-08-22 Vmware, Inc. Using a NIC as a network accelerator to allow VM access to an external storage via a PF module, bus, and VF module
US11792134B2 (en) 2020-09-28 2023-10-17 Vmware, Inc. Configuring PNIC to perform flow processing offload using virtual port identifiers
US11636053B2 (en) 2020-09-28 2023-04-25 Vmware, Inc. Emulating a local storage by accessing an external storage through a shared port of a NIC
US11593278B2 (en) 2020-09-28 2023-02-28 Vmware, Inc. Using machine executing on a NIC to access a third party storage not supported by a NIC or host
US12021759B2 (en) * 2020-09-28 2024-06-25 VMware LLC Packet processing with hardware offload units
US11875172B2 (en) 2020-09-28 2024-01-16 VMware LLC Bare metal computer for booting copies of VM images on multiple computing devices using a smart NIC
US11418597B2 (en) * 2020-10-08 2022-08-16 Toyota Motor Engineering & Manufacturing North America, Inc. System and method for value-anticipating task offloading
US11301410B1 (en) * 2020-12-13 2022-04-12 Advanced Mciro Devices, Inc. Tags for request packets on a network communication link
WO2022139795A1 (en) * 2020-12-21 2022-06-30 Google Llc Preemption in a machine learning hardware accelerator
CN115033122A (zh) * 2021-03-03 2022-09-09 华为技术有限公司 电子设备的屏幕控制方法、可读介质和电子设备
US11822675B2 (en) * 2021-06-24 2023-11-21 International Business Machines Corporation Securing customer data and internal register data during hardware checkstops in a multi-tenant environment
US12105647B2 (en) * 2021-08-30 2024-10-01 EMC IP Holding Company LLC Asynchronous reservation of storage volumes with persistent storage of reservation data
US11863376B2 (en) 2021-12-22 2024-01-02 Vmware, Inc. Smart NIC leader election
US11995024B2 (en) 2021-12-22 2024-05-28 VMware LLC State sharing between smart NICs
US20230221874A1 (en) * 2022-01-12 2023-07-13 Vmware, Inc. Method of efficiently receiving files over a network with a receive file command
US11899594B2 (en) 2022-06-21 2024-02-13 VMware LLC Maintenance of data message classification cache on smart NIC
US11928367B2 (en) 2022-06-21 2024-03-12 VMware LLC Logical memory addressing for network devices
US11928062B2 (en) 2022-06-21 2024-03-12 VMware LLC Accelerating data message classification with smart NICs
US20220327061A1 (en) * 2022-06-23 2022-10-13 Daniel Christian Biederman Packet processing device to determine memory to store data in a server architecture and computing system including same
US20240248855A1 (en) * 2023-01-19 2024-07-25 SambaNova Systems, Inc. Method and apparatus for selecting data access method in a heterogeneous processing system with multiple processors

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6157955A (en) * 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
US20040202319A1 (en) * 2003-04-12 2004-10-14 Hussain Muhammad Raghib Apparatus and method for allocating resources within a security processor
CN1836245A (zh) * 2003-08-13 2006-09-20 感测网络公司 用于高吞吐量基于签名的网络应用的集成电路设备和方法
US20110202679A1 (en) * 2006-06-16 2011-08-18 Bittorrent, Inc. Classification and Verification of Static File Transfer Protocols
US20130003556A1 (en) * 2011-06-28 2013-01-03 Xelerated Ab Scheduling packets in a packet-processing pipeline

Family Cites Families (241)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62214464A (ja) * 1986-03-17 1987-09-21 Hitachi Ltd データ処理システム
JP2514954B2 (ja) * 1987-03-13 1996-07-10 三菱電機株式会社 Icカ−ド
EP0422310A1 (en) * 1989-10-10 1991-04-17 International Business Machines Corporation Distributed mechanism for the fast scheduling of shared objects
US5237662A (en) 1991-06-27 1993-08-17 Digital Equipment Corporation System and method with a procedure oriented input/output mechanism
US5247675A (en) 1991-08-09 1993-09-21 International Business Machines Corporation Preemptive and non-preemptive scheduling and execution of program threads in a multitasking operating system
US5577213A (en) 1994-06-03 1996-11-19 At&T Global Information Solutions Company Multi-device adapter card for computer
US5913028A (en) * 1995-10-06 1999-06-15 Xpoint Technologies, Inc. Client/server data traffic delivery system and method
US6179489B1 (en) * 1997-04-04 2001-01-30 Texas Instruments Incorporated Devices, methods, systems and software products for coordination of computer main microprocessor and second microprocessor coupled thereto
US5923887A (en) * 1996-05-20 1999-07-13 Advanced Micro Devices, Inc. Interrupt request that defines resource usage
US6085307A (en) 1996-11-27 2000-07-04 Vlsi Technology, Inc. Multiple native instruction set master/slave processor arrangement and method thereof
US6791947B2 (en) * 1996-12-16 2004-09-14 Juniper Networks In-line packet processing
US5930256A (en) * 1997-03-28 1999-07-27 Xerox Corporation Self-arbitrating crossbar switch
US6374330B1 (en) * 1997-04-14 2002-04-16 International Business Machines Corporation Cache-coherency protocol with upstream undefined state
US5870350A (en) 1997-05-21 1999-02-09 International Business Machines Corporation High performance, high bandwidth memory bus architecture utilizing SDRAMs
US6128642A (en) * 1997-07-22 2000-10-03 At&T Corporation Load balancing based on queue length, in a network of processor stations
US6092146A (en) 1997-07-31 2000-07-18 Ibm Dynamically configurable memory adapter using electronic presence detects
US7565461B2 (en) * 1997-12-17 2009-07-21 Src Computers, Inc. Switch/network adapter port coupling a reconfigurable processing element to one or more microprocessors for use with interleaved memory controllers
US20060117274A1 (en) 1998-08-31 2006-06-01 Tseng Ping-Sheng Behavior processor system and method
US6370622B1 (en) * 1998-11-20 2002-04-09 Massachusetts Institute Of Technology Method and apparatus for curious and column caching
US6446163B1 (en) * 1999-01-04 2002-09-03 International Business Machines Corporation Memory card with signal processing element
US20020107990A1 (en) * 2000-03-03 2002-08-08 Surgient Networks, Inc. Network connected computing system including network switch
US6625685B1 (en) 2000-09-20 2003-09-23 Broadcom Corporation Memory controller with programmable configuration
US7120155B2 (en) 2000-10-03 2006-10-10 Broadcom Corporation Switch having virtual shared memory
US6665495B1 (en) * 2000-10-27 2003-12-16 Yotta Networks, Inc. Non-blocking, scalable optical router architecture and method for routing optical traffic
US20020107971A1 (en) * 2000-11-07 2002-08-08 Bailey Brian W. Network transport accelerator
US7274706B1 (en) * 2001-04-24 2007-09-25 Syrus Ziai Methods and systems for processing network data
JP2002324363A (ja) * 2001-04-25 2002-11-08 Ricoh Co Ltd 情報記録再生装置
TWI240864B (en) 2001-06-13 2005-10-01 Hitachi Ltd Memory device
WO2003034227A2 (en) * 2001-10-12 2003-04-24 Koninklijke Philips Electronics N.V. Apparatus and method for reading or writing user data
US20030078749A1 (en) * 2001-10-18 2003-04-24 Hans Eberle Memory module with integrated radio transmitter
US6889294B1 (en) * 2001-10-29 2005-05-03 Lsi Logic Corporation Virtual shared volume via proxy data transfer
AU2003217370A1 (en) * 2002-02-08 2003-09-02 Bermai, Inc. Medium access control in a wireless network
US6751113B2 (en) 2002-03-07 2004-06-15 Netlist, Inc. Arrangement of integrated circuits in a memory module
US7472205B2 (en) 2002-04-24 2008-12-30 Nec Corporation Communication control apparatus which has descriptor cache controller that builds list of descriptors
US7415723B2 (en) * 2002-06-11 2008-08-19 Pandya Ashish A Distributed network security system and a hardware processor therefor
US7730077B2 (en) 2002-09-18 2010-06-01 Netezza Corporation Intelligent storage device controller
US7454749B2 (en) 2002-11-12 2008-11-18 Engineered Intelligence Corporation Scalable parallel processing on shared memory computers
US20040133720A1 (en) * 2002-12-31 2004-07-08 Steven Slupsky Embeddable single board computer
JP2004220070A (ja) * 2003-01-09 2004-08-05 Japan Science & Technology Agency コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体
US7089412B2 (en) 2003-01-17 2006-08-08 Wintec Industries, Inc. Adaptive memory module
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US7421694B2 (en) * 2003-02-18 2008-09-02 Microsoft Corporation Systems and methods for enhancing performance of a coprocessor
US7155379B2 (en) 2003-02-25 2006-12-26 Microsoft Corporation Simulation of a PCI device's memory-mapped I/O registers
US7657933B2 (en) * 2003-04-12 2010-02-02 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processing architecture using multiple groups
US6794896B1 (en) * 2003-04-21 2004-09-21 Xilinx, Inc. Method and apparatus for multithreading
US7661014B2 (en) * 2003-04-23 2010-02-09 Dot Hill Systems Corporation Network storage appliance with integrated server and redundant storage controllers
US6982892B2 (en) 2003-05-08 2006-01-03 Micron Technology, Inc. Apparatus and methods for a physical layout of simultaneously sub-accessible memory modules
US8560627B2 (en) * 2003-05-23 2013-10-15 Alcatel Lucent Virtual switch for use in fibre channel applications
US20050038946A1 (en) 2003-08-12 2005-02-17 Tadpole Computer, Inc. System and method using a high speed interface in a system having co-processors
US8776050B2 (en) 2003-08-20 2014-07-08 Oracle International Corporation Distributed virtual machine monitor for managing multiple virtual resources across multiple physical nodes
US20050078708A1 (en) * 2003-10-14 2005-04-14 International Business Machines Corporation Formatting packet headers in a communications adapter
US7787471B2 (en) * 2003-11-10 2010-08-31 Broadcom Corporation Field processor for a network device
US7493621B2 (en) * 2003-12-18 2009-02-17 International Business Machines Corporation Context switch data prefetching in multithreaded computer
US7657706B2 (en) 2003-12-18 2010-02-02 Cisco Technology, Inc. High speed memory and input/output processor subsystem for efficiently allocating and using high-speed memory and slower-speed memory
US7558890B1 (en) * 2003-12-19 2009-07-07 Applied Micro Circuits Corporation Instruction set for programmable queuing
US7213126B1 (en) * 2004-01-12 2007-05-01 Advanced Micro Devices, Inc. Method and processor including logic for storing traces within a trace cache
US20050018495A1 (en) 2004-01-29 2005-01-27 Netlist, Inc. Arrangement of integrated circuits in a memory module
US7286436B2 (en) 2004-03-05 2007-10-23 Netlist, Inc. High-density memory module utilizing low-density memory components
US7532537B2 (en) 2004-03-05 2009-05-12 Netlist, Inc. Memory module with a circuit providing load isolation and memory domain translation
US7916574B1 (en) 2004-03-05 2011-03-29 Netlist, Inc. Circuit providing load isolation and memory domain translation for memory module
US7289386B2 (en) 2004-03-05 2007-10-30 Netlist, Inc. Memory module decoder
US7668165B2 (en) 2004-03-31 2010-02-23 Intel Corporation Hardware-based multi-threading for packet processing
US7254036B2 (en) 2004-04-09 2007-08-07 Netlist, Inc. High density memory module using stacked printed circuit boards
US7502474B2 (en) * 2004-05-06 2009-03-10 Advanced Micro Devices, Inc. Network interface with security association data prefetch for high speed offloaded security processing
US7480611B2 (en) 2004-05-13 2009-01-20 International Business Machines Corporation Method and apparatus to increase the usable memory capacity of a logic simulation hardware emulator/accelerator
US7945705B1 (en) * 2004-05-25 2011-05-17 Chelsio Communications, Inc. Method for using a protocol language to avoid separate channels for control messages involving encapsulated payload data messages
US7436845B1 (en) * 2004-06-08 2008-10-14 Sun Microsystems, Inc. Input and output buffering
US20060004965A1 (en) 2004-06-30 2006-01-05 Tu Steven J Direct processor cache access within a system having a coherent multi-processor protocol
US7930422B2 (en) * 2004-07-14 2011-04-19 International Business Machines Corporation Apparatus and method for supporting memory management in an offload of network protocol processing
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
US7895431B2 (en) * 2004-09-10 2011-02-22 Cavium Networks, Inc. Packet queuing, scheduling and ordering
US7305574B2 (en) 2004-10-29 2007-12-04 International Business Machines Corporation System, method and storage medium for bus calibration in a memory subsystem
KR100666169B1 (ko) 2004-12-17 2007-01-09 삼성전자주식회사 플래쉬 메모리 데이터 저장장치
US8010682B2 (en) * 2004-12-28 2011-08-30 International Business Machines Corporation Early coherency indication for return data in shared memory architecture
US8281031B2 (en) * 2005-01-28 2012-10-02 Standard Microsystems Corporation High speed ethernet MAC and PHY apparatus with a filter based ethernet packet router with priority queuing and single or multiple transport stream interfaces
US8072887B1 (en) * 2005-02-07 2011-12-06 Extreme Networks, Inc. Methods, systems, and computer program products for controlling enqueuing of packets in an aggregated queue including a plurality of virtual queues using backpressure messages from downstream queues
US20060215649A1 (en) * 2005-03-08 2006-09-28 Chris Morrall Network address converting apparatus using SSW tree
JP2008537265A (ja) 2005-04-21 2008-09-11 ヴァイオリン メモリー インコーポレイテッド 相互接続システム
JP4322232B2 (ja) * 2005-06-14 2009-08-26 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
US8244971B2 (en) 2006-07-31 2012-08-14 Google Inc. Memory circuit system and method
US8438328B2 (en) 2008-02-21 2013-05-07 Google Inc. Emulation of abstracted DIMMs using abstracted DRAMs
WO2007006146A1 (en) 2005-07-12 2007-01-18 Advancedio Systems Inc. System and method of offloading protocol functions
US20070016906A1 (en) * 2005-07-18 2007-01-18 Mistletoe Technologies, Inc. Efficient hardware allocation of processes to processors
US7543131B2 (en) * 2005-08-12 2009-06-02 Advanced Micro Devices, Inc. Controlling an I/O MMU
US7500083B2 (en) * 2005-08-15 2009-03-03 Silicon Informatics Accelerated processing with scheduling to configured coprocessor for molecular data type by service and control coprocessor upon analysis of software code
US7442050B1 (en) 2005-08-29 2008-10-28 Netlist, Inc. Circuit card with flexible connection for memory module with heat spreader
US7650557B2 (en) 2005-09-19 2010-01-19 Network Appliance, Inc. Memory scrubbing of expanded memory
US7620746B2 (en) * 2005-09-29 2009-11-17 Apple Inc. Functional DMA performing operation on DMA data and writing result of operation
US8862783B2 (en) * 2005-10-25 2014-10-14 Broadbus Technologies, Inc. Methods and system to offload data processing tasks
US7899864B2 (en) 2005-11-01 2011-03-01 Microsoft Corporation Multi-user terminal services accelerator
US7773630B2 (en) * 2005-11-12 2010-08-10 Liquid Computing Corportation High performance memory based communications interface
US8225297B2 (en) * 2005-12-07 2012-07-17 Microsoft Corporation Cache metadata identifiers for isolation and sharing
US7904688B1 (en) 2005-12-21 2011-03-08 Trend Micro Inc Memory management unit for field programmable gate array boards
US20070150671A1 (en) * 2005-12-23 2007-06-28 Boston Circuits, Inc. Supporting macro memory instructions
EP1977635A2 (en) 2006-01-13 2008-10-08 Sun Microsystems, Inc. Modular blade server
US7619893B1 (en) 2006-02-17 2009-11-17 Netlist, Inc. Heat spreader for electronic modules
US20070226745A1 (en) 2006-02-28 2007-09-27 International Business Machines Corporation Method and system for processing a service request
JP2007233903A (ja) * 2006-03-03 2007-09-13 Hitachi Ltd 記憶制御装置及び記憶制御装置のデータ回復方法
US7421552B2 (en) 2006-03-17 2008-09-02 Emc Corporation Techniques for managing data within a data storage system utilizing a flash-based memory vault
US7434002B1 (en) 2006-04-24 2008-10-07 Vmware, Inc. Utilizing cache information to manage memory access and cache utilization
JP2007299279A (ja) * 2006-05-01 2007-11-15 Toshiba Corp 演算装置、プロセッサシステム、及び映像処理装置
US8869147B2 (en) * 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US7716411B2 (en) 2006-06-07 2010-05-11 Microsoft Corporation Hybrid memory device with single interface
US8948166B2 (en) 2006-06-14 2015-02-03 Hewlett-Packard Development Company, Lp. System of implementing switch devices in a server system
US7636800B2 (en) 2006-06-27 2009-12-22 International Business Machines Corporation Method and system for memory address translation and pinning
US8599716B2 (en) * 2006-06-30 2013-12-03 Cisco Technolgy, Inc. Method and system to configure quality of service in a network
US7291032B1 (en) * 2006-07-05 2007-11-06 International Business Machines Corporation Connector for adjacent devices
KR100823734B1 (ko) * 2006-07-07 2008-04-21 한국전자통신연구원 iSCSI를 위한 데이터 가속 장치 및 이를 이용한iSCSI 저장 시스템
US7624118B2 (en) 2006-07-26 2009-11-24 Microsoft Corporation Data processing over very large databases
US7760715B1 (en) 2006-08-04 2010-07-20 Parin B. Dalal Circuit and method for rate-limiting a scheduler
US8116320B2 (en) * 2006-08-07 2012-02-14 Adc Telecommunications, Inc. Mapping external port using virtual local area network
US20080082750A1 (en) 2006-09-28 2008-04-03 Okin Kenneth A Methods of communicating to, memory modules in a memory channel
US8074022B2 (en) 2006-09-28 2011-12-06 Virident Systems, Inc. Programmable heterogeneous memory controllers for main memory with different memory modules
US8943245B2 (en) 2006-09-28 2015-01-27 Virident Systems, Inc. Non-volatile type memory modules for main memory
US8806116B2 (en) * 2008-02-12 2014-08-12 Virident Systems, Inc. Memory modules for two-dimensional main memory
US8189328B2 (en) 2006-10-23 2012-05-29 Virident Systems, Inc. Methods and apparatus of dual inline memory modules for flash memory
WO2008055270A2 (en) 2006-11-04 2008-05-08 Virident Systems, Inc. Writing to asymmetric memory
US8447957B1 (en) * 2006-11-14 2013-05-21 Xilinx, Inc. Coprocessor interface architecture and methods of operating the same
US8149834B1 (en) * 2007-01-25 2012-04-03 World Wide Packets, Inc. Forwarding a packet to a port from which the packet is received and transmitting modified, duplicated packets on a single port
US20080222351A1 (en) * 2007-03-07 2008-09-11 Aprius Inc. High-speed optical connection between central processing unit and remotely located random access memory
US20080229049A1 (en) 2007-03-16 2008-09-18 Ashwini Kumar Nanda Processor card for blade server and process.
CN101702947B (zh) 2007-04-12 2017-02-15 拉姆伯斯公司 具有点对点请求互连的存储器系统、存储器控制器及方法
US8935406B1 (en) * 2007-04-16 2015-01-13 Chelsio Communications, Inc. Network adaptor configured for connection establishment offload
US20080271030A1 (en) * 2007-04-30 2008-10-30 Dan Herington Kernel-Based Workload Management
US8904098B2 (en) 2007-06-01 2014-12-02 Netlist, Inc. Redundant backup using non-volatile memory
US8301833B1 (en) 2007-06-01 2012-10-30 Netlist, Inc. Non-volatile memory module
US8874831B2 (en) 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
US8347005B2 (en) 2007-07-31 2013-01-01 Hewlett-Packard Development Company, L.P. Memory controller with multi-protocol interface
US7743196B2 (en) * 2007-08-15 2010-06-22 Agere Systems Inc. Interface with multiple packet preemption based on start indicators of different types
US9141670B2 (en) 2007-08-27 2015-09-22 Teradata Us, Inc. Methods and systems for hardware acceleration of streamed database operations and queries based on multiple hardware accelerators
US7840748B2 (en) 2007-08-31 2010-11-23 International Business Machines Corporation Buffered memory module with multiple memory device data interface ports supporting double the memory capacity
JP5059524B2 (ja) * 2007-09-05 2012-10-24 ルネサスエレクトロニクス株式会社 メモリ制御回路、半導体集積回路、不揮発性メモリのベリファイ方法
US8503465B2 (en) * 2007-09-17 2013-08-06 Qualcomm Incorporated Priority scheduling and admission control in a communication network
US7949683B2 (en) 2007-11-27 2011-05-24 Cavium Networks, Inc. Method and apparatus for traversing a compressed deterministic finite automata (DFA) graph
US20090158276A1 (en) * 2007-12-12 2009-06-18 Eric Lawrence Barsness Dynamic distribution of nodes on a multi-node computer system
US8862706B2 (en) * 2007-12-14 2014-10-14 Nant Holdings Ip, Llc Hybrid transport—application network fabric apparatus
US8990799B1 (en) * 2008-01-30 2015-03-24 Emc Corporation Direct memory access through virtual switch in device driver
US20090249330A1 (en) * 2008-03-31 2009-10-01 Abercrombie David K Method and apparatus for hypervisor security code
JP5186982B2 (ja) 2008-04-02 2013-04-24 富士通株式会社 データ管理方法及びスイッチ装置
US20110235260A1 (en) 2008-04-09 2011-09-29 Apacer Technology Inc. Dram module with solid state disk
US8516185B2 (en) 2009-07-16 2013-08-20 Netlist, Inc. System and method utilizing distributed byte-wise buffers on a memory module
US8417870B2 (en) 2009-07-16 2013-04-09 Netlist, Inc. System and method of increasing addressable memory space on a memory board
US8154901B1 (en) 2008-04-14 2012-04-10 Netlist, Inc. Circuit providing load isolation and noise reduction
US8001434B1 (en) 2008-04-14 2011-08-16 Netlist, Inc. Memory board with self-testing capability
CN102037689B (zh) 2008-05-22 2014-04-09 诺基亚西门子通信公司 用于通信系统设备、系统及方法的自适应调度器
TWI469055B (zh) * 2008-06-27 2015-01-11 Realtek Semiconductor Corp 網路工作卸載裝置與方法
US8190699B2 (en) 2008-07-28 2012-05-29 Crossfield Technology LLC System and method of multi-path data communications
US20100031235A1 (en) 2008-08-01 2010-02-04 Modular Mining Systems, Inc. Resource Double Lookup Framework
US20100032820A1 (en) * 2008-08-06 2010-02-11 Michael Bruennert Stacked Memory Module
US7886103B2 (en) * 2008-09-08 2011-02-08 Cisco Technology, Inc. Input-output module, processing platform and method for extending a memory interface for input-output operations
US8452934B2 (en) * 2008-12-16 2013-05-28 Sandisk Technologies Inc. Controlled data access to non-volatile memory
US7930519B2 (en) * 2008-12-17 2011-04-19 Advanced Micro Devices, Inc. Processor with coprocessor interfacing functional unit for forwarding result from coprocessor to retirement unit
GB2466289A (en) * 2008-12-18 2010-06-23 Veda Technology Ltd Executing a service application on a cluster by registering a class and storing subscription information of generated objects at an interconnect
US7870309B2 (en) * 2008-12-23 2011-01-11 International Business Machines Corporation Multithreaded programmable direct memory access engine
US8054832B1 (en) 2008-12-30 2011-11-08 Juniper Networks, Inc. Methods and apparatus for routing between virtual resources based on a routing location policy
GB2466984B (en) * 2009-01-16 2011-07-27 Imagination Tech Ltd Multi-threaded data processing system
US8352710B2 (en) * 2009-01-19 2013-01-08 International Business Machines Corporation Off-loading of processing from a processor blade to storage blades
US20100183033A1 (en) 2009-01-20 2010-07-22 Nokia Corporation Method and apparatus for encapsulation of scalable media
US8498349B2 (en) 2009-03-11 2013-07-30 Texas Instruments Incorporated Demodulation and decoding for frequency modulation (FM) receivers with radio data system (RDS) or radio broadcast data system (RBDS)
US8949838B2 (en) * 2009-04-27 2015-02-03 Lsi Corporation Multi-threaded processing with hardware accelerators
US8869150B2 (en) * 2010-05-18 2014-10-21 Lsi Corporation Local messaging in a scheduling hierarchy in a traffic manager of a network processor
US8009682B2 (en) * 2009-05-05 2011-08-30 Citrix Systems, Inc. Systems and methods for packet steering in a multi-core architecture
US8264903B1 (en) 2009-05-05 2012-09-11 Netlist, Inc. Systems and methods for refreshing a memory module
US8489837B1 (en) 2009-06-12 2013-07-16 Netlist, Inc. Systems and methods for handshaking with a memory module
US8892783B2 (en) * 2009-06-22 2014-11-18 Citrix Systems, Inc. Systems and methods for initialization and link management of NICS in a multi-core environment
US8205057B2 (en) * 2009-06-30 2012-06-19 Texas Instruments Incorporated Method and system for integrated pipeline write hazard handling using memory attributes
US9128632B2 (en) 2009-07-16 2015-09-08 Netlist, Inc. Memory module with distributed data buffers and method of operation
US9535849B2 (en) 2009-07-24 2017-01-03 Advanced Micro Devices, Inc. IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect
US8085801B2 (en) * 2009-08-08 2011-12-27 Hewlett-Packard Development Company, L.P. Resource arbitration
US20110035540A1 (en) 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
US8479216B2 (en) * 2009-08-18 2013-07-02 International Business Machines Corporation Method for decentralized load distribution in an event-driven system using localized migration between physically connected nodes and load exchange protocol preventing simultaneous migration of plurality of tasks to or from a same node
US8848513B2 (en) 2009-09-02 2014-09-30 Qualcomm Incorporated Seamless overlay connectivity using multi-homed overlay neighborhoods
US9876735B2 (en) * 2009-10-30 2018-01-23 Iii Holdings 2, Llc Performance and power optimized computer system architectures and methods leveraging power optimized tree fabric interconnect
US20110083175A1 (en) * 2009-10-06 2011-04-07 Sonus Networks, Inc. Methods and Apparatuses for Policing and Prioritizing of Data Services
US8442048B2 (en) * 2009-11-04 2013-05-14 Juniper Networks, Inc. Methods and apparatus for configuring a virtual network switch
WO2011070940A1 (ja) * 2009-12-08 2011-06-16 日本電気株式会社 帯域制御装置、帯域制御方法、及び無線ネットワークシステム
US9389895B2 (en) 2009-12-17 2016-07-12 Microsoft Technology Licensing, Llc Virtual storage target offload techniques
US9390035B2 (en) 2009-12-21 2016-07-12 Sanmina-Sci Corporation Method and apparatus for supporting storage modules in standard memory and/or hybrid memory bus architectures
US8743877B2 (en) * 2009-12-21 2014-06-03 Steven L. Pope Header processing engine
US8473695B2 (en) * 2011-03-31 2013-06-25 Mosys, Inc. Memory system including variable write command scheduling
US8489789B2 (en) * 2010-02-05 2013-07-16 Advanced Micro Devices, Inc. Interrupt virtualization
US20110208900A1 (en) * 2010-02-23 2011-08-25 Ocz Technology Group, Inc. Methods and systems utilizing nonvolatile memory in a computer system main memory
EP2363812B1 (en) 2010-03-04 2018-02-28 Karlsruher Institut für Technologie Reconfigurable processor architecture
CN102906696A (zh) 2010-03-26 2013-01-30 维尔图尔梅特里克斯公司 计算机系统的细粒性能资源管理
CN101794271B (zh) * 2010-03-31 2012-05-23 华为技术有限公司 多核内存一致性的实现方法和装置
JP5336423B2 (ja) * 2010-05-14 2013-11-06 パナソニック株式会社 計算機システム
WO2011150346A2 (en) 2010-05-28 2011-12-01 Laurich Lawrence A Accelerator system for use with secure data storage
US8631271B2 (en) 2010-06-24 2014-01-14 International Business Machines Corporation Heterogeneous recovery in a redundant memory system
US9118591B2 (en) 2010-07-30 2015-08-25 Broadcom Corporation Distributed switch domain of heterogeneous components
WO2012026877A1 (en) * 2010-08-23 2012-03-01 Empire Technology Development Llc Context switching
TW201214082A (en) * 2010-09-17 2012-04-01 Hon Hai Prec Ind Co Ltd Mother board
CN103229155B (zh) 2010-09-24 2016-11-09 德克萨斯存储系统股份有限公司 高速内存系统
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US8483046B2 (en) 2010-09-29 2013-07-09 International Business Machines Corporation Virtual switch interconnect for hybrid enterprise servers
WO2012061633A2 (en) 2010-11-03 2012-05-10 Netlist, Inc. Method and apparatus for optimizing driver load in a memory package
US8405668B2 (en) * 2010-11-19 2013-03-26 Apple Inc. Streaming translation in display pipe
US8996644B2 (en) * 2010-12-09 2015-03-31 Solarflare Communications, Inc. Encapsulated accelerator
US8566831B2 (en) * 2011-01-26 2013-10-22 International Business Machines Corporation Execution of work units in a heterogeneous computing environment
WO2012109677A2 (en) * 2011-02-11 2012-08-16 Fusion-Io, Inc. Apparatus, system, and method for managing operations for data storage media
US20120239874A1 (en) 2011-03-02 2012-09-20 Netlist, Inc. Method and system for resolving interoperability of multiple types of dual in-line memory modules
US8885334B1 (en) * 2011-03-10 2014-11-11 Xilinx, Inc. Computing system with network attached processors
US8774213B2 (en) 2011-03-30 2014-07-08 Amazon Technologies, Inc. Frameworks and interfaces for offload device-based packet processing
US8825900B1 (en) * 2011-04-05 2014-09-02 Nicira, Inc. Method and apparatus for stateless transport layer tunneling
US8930647B1 (en) 2011-04-06 2015-01-06 P4tents1, LLC Multiple class memory systems
US20140032795A1 (en) 2011-04-13 2014-01-30 Hewlett-Packard Development Company, L.P. Input/output processing
US8547825B2 (en) * 2011-07-07 2013-10-01 International Business Machines Corporation Switch fabric management
US20130019057A1 (en) 2011-07-15 2013-01-17 Violin Memory, Inc. Flash disk array and controller
KR20140064788A (ko) 2011-07-25 2014-05-28 서버지, 아이엔씨. 저전력 컴퓨터 시스템을 구축하기 위한 방법 및 시스템
KR101989586B1 (ko) * 2011-08-10 2019-06-14 마벨 월드 트레이드 리미티드 이더넷 네트워크들에 대한 보안 검출을 이용하는 지능형 phy
US8767463B2 (en) 2011-08-11 2014-07-01 Smart Modular Technologies, Inc. Non-volatile dynamic random access memory system with non-delay-lock-loop mechanism and method of operation thereof
US9021146B2 (en) * 2011-08-30 2015-04-28 Apple Inc. High priority command queue for peripheral component
US9223618B2 (en) * 2011-09-20 2015-12-29 Intel Corporation Multi-threaded queuing system for pattern matching
US9094333B1 (en) * 2011-10-26 2015-07-28 Qlogic, Corporation Systems and methods for sending and receiving information via a network device
US8966457B2 (en) * 2011-11-15 2015-02-24 Global Supercomputing Corporation Method and system for converting a single-threaded software program into an application-specific supercomputer
US9424188B2 (en) 2011-11-23 2016-08-23 Smart Modular Technologies, Inc. Non-volatile memory packaging system with caching and method of operation thereof
WO2013079988A1 (en) * 2011-11-28 2013-06-06 Freescale Semiconductor, Inc. Integrated circuit device, asymmetric multi-core processing module, electronic device and method of managing execution of computer program code therefor
US10203881B2 (en) * 2011-12-19 2019-02-12 Apple Inc. Optimized execution of interleaved write operations in solid state drives
US9443279B2 (en) * 2011-12-26 2016-09-13 Intel Corporation Direct link synchronization communication between co-processors
US9170947B2 (en) * 2011-12-29 2015-10-27 Intel Corporation Recovering from data errors using implicit redundancy
US9542437B2 (en) 2012-01-06 2017-01-10 Sap Se Layout-driven data selection and reporting
US8918634B2 (en) 2012-02-21 2014-12-23 International Business Machines Corporation Network node with network-attached stateless security offload device employing out-of-band processing
JP5565425B2 (ja) * 2012-02-29 2014-08-06 富士通株式会社 演算装置、情報処理装置および演算方法
WO2013128494A1 (en) 2012-03-02 2013-09-06 Hitachi, Ltd. Storage system and data transfer control method
US20130254457A1 (en) * 2012-03-21 2013-09-26 Lsi Corporation Methods and structure for rapid offloading of cached data in a volatile cache memory of a storage controller to a nonvolatile memory
US9513845B2 (en) 2012-03-30 2016-12-06 Violin Memory Inc. Memory module virtualization
US10019371B2 (en) 2012-04-27 2018-07-10 Hewlett Packard Enterprise Development Lp Data caching using local and remote memory
US20130318269A1 (en) 2012-05-22 2013-11-28 Xockets IP, LLC Processing structured and unstructured data using offload processors
US9258276B2 (en) 2012-05-22 2016-02-09 Xockets, Inc. Efficient packet handling, redirection, and inspection using offload processors
WO2013180691A1 (en) * 2012-05-29 2013-12-05 Intel Corporation Peer-to-peer interrupt signaling between devices coupled via interconnects
US20130347103A1 (en) * 2012-06-21 2013-12-26 Mark Veteikis Packet capture for error tracking
US20140089609A1 (en) * 2012-09-26 2014-03-27 Advanced Micro Devices, Inc. Interposer having embedded memory controller circuitry
US9170968B2 (en) * 2012-09-27 2015-10-27 Intel Corporation Device, system and method of multi-channel processing
US20140101370A1 (en) * 2012-10-08 2014-04-10 HGST Netherlands B.V. Apparatus and method for low power low latency high capacity storage class memory
US9268716B2 (en) * 2012-10-19 2016-02-23 Yahoo! Inc. Writing data from hadoop to off grid storage
US20140157287A1 (en) * 2012-11-30 2014-06-05 Advanced Micro Devices, Inc Optimized Context Switching for Long-Running Processes
US9654406B2 (en) * 2012-12-26 2017-05-16 Realtek Singapore Pte Ltd Communication traffic processing architectures and methods
US9378161B1 (en) 2013-01-17 2016-06-28 Xockets, Inc. Full bandwidth packet handling with server systems including offload processors
US10031820B2 (en) 2013-01-17 2018-07-24 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Mirroring high performance and high availablity applications across server computers
KR20160037827A (ko) 2013-01-17 2016-04-06 엑소케츠 인코포레이티드 시스템 메모리로의 연결을 위한 오프로드 프로세서 모듈들
US10372551B2 (en) 2013-03-15 2019-08-06 Netlist, Inc. Hybrid memory system with configurable error thresholds and failure analysis capability
US9792154B2 (en) 2015-04-17 2017-10-17 Microsoft Technology Licensing, Llc Data processing system having a hardware acceleration plane and a software plane

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6157955A (en) * 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
US20040202319A1 (en) * 2003-04-12 2004-10-14 Hussain Muhammad Raghib Apparatus and method for allocating resources within a security processor
CN1836245A (zh) * 2003-08-13 2006-09-20 感测网络公司 用于高吞吐量基于签名的网络应用的集成电路设备和方法
US20110202679A1 (en) * 2006-06-16 2011-08-18 Bittorrent, Inc. Classification and Verification of Static File Transfer Protocols
US20130003556A1 (en) * 2011-06-28 2013-01-03 Xelerated Ab Scheduling packets in a packet-processing pipeline

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109313580A (zh) * 2016-07-22 2019-02-05 英特尔公司 用于托架架构的技术
CN109313580B (zh) * 2016-07-22 2023-11-03 英特尔公司 用于托架架构的技术
CN109358953A (zh) * 2018-09-20 2019-02-19 中南大学 一种微云中的多任务应用卸载方法
CN109358953B (zh) * 2018-09-20 2020-09-08 中南大学 一种微云中的多任务应用卸载方法
JP2020184690A (ja) * 2019-05-08 2020-11-12 富士通株式会社 パケット分類プログラム、パケット分類方法、および、情報処理装置
CN110181928A (zh) * 2019-07-09 2019-08-30 苏州微影激光技术有限公司 一种丝网印刷版的制版装置及制版方法
CN114726929A (zh) * 2021-01-06 2022-07-08 迈络思科技有限公司 网络适配器中的连接管理

Also Published As

Publication number Publication date
US20140201390A1 (en) 2014-07-17
US9460031B1 (en) 2016-10-04
US9436640B1 (en) 2016-09-06
US20140201304A1 (en) 2014-07-17
US10649924B2 (en) 2020-05-12
WO2014113062A3 (en) 2015-06-25
WO2014113062A2 (en) 2014-07-24
US20140198799A1 (en) 2014-07-17
US20140201417A1 (en) 2014-07-17
WO2014113056A1 (en) 2014-07-24
US20170237703A1 (en) 2017-08-17
KR20160037827A (ko) 2016-04-06
KR20160040439A (ko) 2016-04-14
EP2946298A4 (en) 2016-11-16
KR20160037828A (ko) 2016-04-06
US20140201404A1 (en) 2014-07-17
US20140201305A1 (en) 2014-07-17
US20140201309A1 (en) 2014-07-17
US20140198653A1 (en) 2014-07-17
US20140201761A1 (en) 2014-07-17
US20140201416A1 (en) 2014-07-17
US9250954B2 (en) 2016-02-02
WO2014113063A1 (en) 2014-07-24
US20140201408A1 (en) 2014-07-17
US9436638B1 (en) 2016-09-06
WO2014113055A1 (en) 2014-07-24
JP2016503933A (ja) 2016-02-08
US20140201461A1 (en) 2014-07-17
EP2946298A1 (en) 2015-11-25
US20140201310A1 (en) 2014-07-17
US20140201402A1 (en) 2014-07-17
US9348638B2 (en) 2016-05-24
EP2946296A4 (en) 2016-11-16
WO2014113059A1 (en) 2014-07-24
WO2014113061A3 (en) 2015-06-18
WO2014113061A2 (en) 2014-07-24
US20140201303A1 (en) 2014-07-17
US20140201409A1 (en) 2014-07-17
JP2016503934A (ja) 2016-02-08
US9288101B1 (en) 2016-03-15
EP2946528A2 (en) 2015-11-25
CN105874441A (zh) 2016-08-17
US20140198803A1 (en) 2014-07-17
EP2946296A1 (en) 2015-11-25
US20140198652A1 (en) 2014-07-17
EP2946528A4 (en) 2016-08-24
US20140201453A1 (en) 2014-07-17
US9436639B1 (en) 2016-09-06

Similar Documents

Publication Publication Date Title
CN105765910A (zh) 利用卸载处理器的调度和通信量管理
US10212092B2 (en) Architectures and methods for processing data in parallel using offload processing modules insertable into servers
US9378161B1 (en) Full bandwidth packet handling with server systems including offload processors

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20160713

WD01 Invention patent application deemed withdrawn after publication