CN108696461A - 用于智能网络接口卡的共享存储器 - Google Patents

用于智能网络接口卡的共享存储器 Download PDF

Info

Publication number
CN108696461A
CN108696461A CN201810167848.1A CN201810167848A CN108696461A CN 108696461 A CN108696461 A CN 108696461A CN 201810167848 A CN201810167848 A CN 201810167848A CN 108696461 A CN108696461 A CN 108696461A
Authority
CN
China
Prior art keywords
memory
network
core
hfi
storage operation
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
CN201810167848.1A
Other languages
English (en)
Inventor
M.施米索尔
K.多施
F.G.伯纳特
D.R.巴拉甘
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Priority to CN202311526302.8A priority Critical patent/CN117544581A/zh
Publication of CN108696461A publication Critical patent/CN108696461A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/103Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
    • 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
    • G06F13/1663Access to shared memory
    • CCHEMISTRY; METALLURGY
    • C07ORGANIC CHEMISTRY
    • C07FACYCLIC, CARBOCYCLIC OR HETEROCYCLIC COMPOUNDS CONTAINING ELEMENTS OTHER THAN CARBON, HYDROGEN, HALOGEN, OXYGEN, NITROGEN, SULFUR, SELENIUM OR TELLURIUM
    • C07F15/00Compounds containing elements of Groups 8, 9, 10 or 18 of the Periodic Table
    • C07F15/0006Compounds containing elements of Groups 8, 9, 10 or 18 of the Periodic Table compounds of the platinum group
    • C07F15/0033Iridium compounds
    • 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
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/082Associative directories
    • 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
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0822Copy directories
    • 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
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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/1009Address translation using page tables, e.g. page table structures
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4604LAN interconnection over a backbone network, e.g. Internet, Frame Relay
    • H04L12/462LAN interconnection over a bridge based backbone
    • H04L12/4625Single bridge functionality, e.g. connection of two networks over a single bridge
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Chemical & Material Sciences (AREA)
  • Organic Chemistry (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及一种针对用于智能网络接口卡的共享存储器的***和方法。在示例中,公开了一种主机结构接口(HFI),包括:互连接口,用于将所述HFI通信地耦合到互连;网络接口,用于将所述HFI通信地耦合到网络;网络接口逻辑,用于提供所述互连与所述网络之间的通信;协处理器,该协处理器被配置成为所述网络提供卸载功能;存储器;以及缓存代理,该缓存代理被配置成:将所述存储器的区域指定为所述HFI与经由所述互连通信地耦合到所述HFI的核心之间的共享存储器;接收针对所述共享存储器的存储器操作;并且根据所述存储器操作来向所述存储器发出存储器指令。

Description

用于智能网络接口卡的共享存储器
技术领域
本公开一般地涉及云计算的领域,并且更具体地但不排他地涉及一种针对用于智能网络接口卡的共享存储器的***和方法。
背景技术
当代计算实践已经从硬件特定计算转离并转向“网络即设备”。当代网络可以包括托管例如包含在服务器机架中并由管理程序控制的大量通用硬件服务器设备的数据中心。每个硬件设备可以运行虚拟设备的一个或多个实例,诸如工作负载服务器或虚拟桌面。
在一些情况下,虚拟化网络也可以包括网络功能虚拟化(NFV),该网络功能虚拟化(NFV)提供某些网络功能作为虚拟设备。这些功能可以被称为虚拟网络功能(VNF)。过去,由这些VNF提供的功能可能已经由定制硬件服务设备提供。
因此,在当代“云”架构中,可以在虚拟化层中至少部分地提供网络端点和网络基础设施两者。
附图说明
本公开当结合附图阅读时从以下详细描述中被最好地理解。应强调的是,依照行业中的标准实践,各种特征不一定按比例绘制,而仅被用于图示目的。在显式地或隐式地示出比例的情况下,它仅提供一个说明性示例。在其他实施例中,为了讨论的清楚,可以任意地增加或者减小各种特征的尺寸。
图1a是根据本说明书的一个或多个示例的网络的框图。
图1b是根据本说明书的一个或多个示例的网络中的数据中心的所选组件的框图。
图2是根据本说明书的一个或多个示例的最终用户计算设备的所选组件的框图。
图3是根据本说明书的一个或多个示例的服务器的高级框图。
图4a是根据本说明书的一个或多个示例的软件定义网络(SDN)的框图。
图4b是根据本说明书的一个或多个示例的网络功能虚拟化(NFV)的框图。
图5是根据本说明书的一个或多个示例的平台架构的框图。
图6是根据本说明书的一个或多个示例的处理器的框图。
图7是根据本说明书的一个或多个示例的计算架构700的框图。
图8是根据本说明书的一个或多个示例的计算架构的框图。
图9是根据本说明书的一个或多个示例的数据中心的框图。
图10图示了根据本说明书的一个或多个示例的读取流。
图11图示了根据本说明书的一个或多个示例的用于回写的信号流。
图12图示了根据本说明书的一个或多个示例的窥探流。
具体实施方式
以下公开内容提供了用于实现本公开的不同特征的许多不同的实施例或示例。在下面对组件和布置的具体示例进行描述以简化本公开。当然,这些仅仅是示例而不旨在为限制性的。进一步地,本公开可以在各种示例中重复附图标记和/或字母。这种重复是为了简单和清楚的目的,并且本身并不指示所讨论的各种实施例和/或配置之间的关系。不同的实施例可以具有不同的优点,并且没有任何特定优点是任何实施例所一定需要的。
在现代计算中,并且特别是在企业计算中,有时会说“数据中心即机器”。在数据中心中,可以部署大量相同或几乎相同的机架式或刀片服务器,其中每个服务器被视为线路可替换单元。如果特定设备发生故障,则简单地替换它常常比尝试修理它更经济。
在这种现代计算范例中,数据延迟和数据带宽是大大地影响数据中心满足其QoS和SLA要求或目标的能力的关键性能指标。随着许多数据中心资源被卸载到特定大容量设备,这变得更加令人担忧。作为说明性示例,处理器可以具有某个本地缓存,而不是本地DRAM,该本地缓存可以与以接近DRAM速度提供持久性存储器的英特尔®3D交叉点(3DXP)存储器服务器的存储器对接并且写入到该存储器,该存储器可以位于本地,或者位于专用存储器服务器上。类似地,虽然储存器可以是设备本地的,但是也可以将储存器卸载到存储池,诸如RAID、RAIN或其他类似的存储架构。
在这种情况下,各种设备之间的互连变得日益重要。为此,可以提供高速结构(fabric)以通信地耦合各种设备。该结构可以是高速交换结构,诸如英特尔® OmniPath,或者它可以是更传统的网络,诸如高速以太网或无限带宽技术。贯穿本说明书,术语“结构”应该被理解成指代数据中心的各种组件之间的任何适合的结构、互连或总线。
因此,与其中网络接口简单地为不同的机器提供用于与彼此通信的介质的一体化设备相比,在数据中心中结构及其关联的网络接口可以是数据中心“机器”的主要部分。贯穿本说明书,“网络接口”应该被理解成包含将计算资源耦合到结构的任何设备,诸如网络接口卡(NIC)、主机结构接口(HFI)或类似设备。
在现代架构中,网络接口可以与处理器紧密地耦合。事实上,在许多情况下,网络接口作为集成管芯上组件被提供来确保处理器和网络接口实现非常高速的通信以增加带宽并减小延迟。在其他实施例中,可以提供单独的HFI芯片作为处理器核心的***设备。
数据中心架构方面的另一改进是所谓的“智能NIC”,其中协处理器被添加到网络接口以提供一些计算密集和重复性网络功能。在NIC上提供协处理器可以是用于改进NIC的性能并降低总拥有成本(TCO)的有利因素。作为非限制性示例,由协处理器执行的任务可以是加密、IP安全(IPsec)、压缩或某个其他高度重复性任务。
协处理器它本身可以采取从CPU卸载这些重复性任务的专用集成电路(ASIC)、现场可编程门阵列(FPGA)、专用IP块或某个其他紧耦合硬件和/或软件解决方案的形式。如贯穿本说明书所使用的,如应用于NIC的“协处理器”应该被理解成包括从CPU卸载任务的任何专用硬件、软件、固件或那些解决方案的组合。
虽然NIC它本身实现对架构的益处,但是NIC相对于CPU仍然维持***角色。当程序设计员将算法编码到CPU中时,程序设计员仍然敏锐地意识到某些计算过程何时需要跨越NIC的通信。由于程序设计员仍然意识到这一点,所以他可能需要将计算分解成某些非流线化(streamline)的操作,所述操作可以按如发送、接收、握手、轮询、调度、异常处理或类似操作这样的行为来划分。计算操作与通信操作之间的这些严格边界抑制程序的灵活性和性能。如上所述,在数据中心的特定示例中,延迟和带宽是***设计者可能设法优化的性能指标。
因此,扩展NIC的角色使得其操作被流线化成CPU的操作的流程,从而使NIC比由现有架构提供的在逻辑上更靠近CPU是有利的。不是像“发送”和“接收”那样发出网络操作,而是程序设计员可在后台中发生通信的情况下简单地从快速存储器块读取和写入。
为了提高NIC的价值,本说明书提供了可以使计算和通信任务流线化成协作操作而不干扰NIC逻辑的物理布置的架构灵活性的***和方法。在一个示例中,这通过给智能NIC扩增向CPU提供共享存储器空间的附加能力来实现。
具体地,本说明书的NIC在计算节点的***地址空间中提供存储器范围。此范围中的地址被映射到用于NIC的协处理器的DRAM存储器的一部分。NIC协处理器将这些存储器地址暴露给计算主机,使得它们可具有共享访问。
在高层次上,这允许协处理器与CPU之间的直接基于存储器的通信。因此,当算法正在CPU中执行软件时,或者相反地,当协处理器正在提供数据流时,它们可经由共享存储器区域共享那些数据和信号事件。应该注意的是,共享存储器空间实际上被托管在协处理器的DRAM中,使得当计算主机的缓存代理(CA)向共享存储器空间写入或者从共享存储器空间读取时,发生其中读取或写入经由两者之间的互连被传送到共享存储器空间的事务。这可以经由管芯上NIC中的专用通道,或者在其中NIC被从核心卸载的情况下它可以经由PCIe(快速***组件互连)信道。应该注意的是,下图中的示例图示了其中NIC与核心之间的互连为PCIe接口的示例,但是这是非限制性示例。如贯穿本说明书和权利要求书所使用的,互连可以是任何适合的互连,包括管芯上互连。
共享存储器空间的一致性可以由在NIC上提供的缓存代理来管理。当计算主机中的核心向共享地址空间发出存储器操作时,用于核心的缓存代理经由互连向用于协处理器的缓存代理发出请求。NIC上的缓存代理然后可以处理存储器操作。
在CPU架构方面,CPU的本地缓存代理将已对接的NIC看作并当作另一QPI或PCIe代理。因此,在某些实施例中,可以不必对位于核心上的缓存代理或者对核心本身做出改变。相反,PCIe代理通过专用于将一致业务隧道传输(tunnel)到NIC的PCIe通道经由独特的地址范围将存储器访问请求隧道传输到NIC的共享存储器。因此,可以对PCIe接口以及对NIC上的缓存代理做出改变。
当存储器请求到达NIC中的主机PCIe接口时,接口将共享存储器访问请求引导到NIC的协处理器的缓存代理。此缓存代理通信地耦合到管理共享DRAM的存储器控制器。此缓存代理管理共享DRAM内的线路并且控制谁“拥有”这些线路(例如,CPU缓存或协处理器)。缓存代理也管理每个存储器位置的状态,这可以遵循诸如MESI(修改/独占/共享/无效)之类的协议。MESI是在MSI(无独占权的MESI)上改进的已知缓存一致性协议,其基本上减少需要的存储器事务的数量。其他示例可以采用例如MSI、MOSI(修改/拥有/共享/无效)或MOESI(具有独占权的MOSI)。
当发生存储器操作时,缓存代理处理请求并采取适当的动作来维持核心与协处理器之间的一致性。这可以包括例如将线路的所有权授予给CPU、按需窥探、按需从存储器控制器读取数据、将数据与状态一起发送回到所请求的节点或其他类似的操作。
注意在此示例中,为了图示的简单起见,描述了一个缓存代理和一个专用PCIe线路。但是在实践中,被实现的缓存代理和PCIe通道的数量可以通过特定部署的性能、功率和成本考虑来驱动。
注意在一些示例中,可以跨多个NIC联合共享存储器。在这种情况下,可以将***地址解码器(SAD)添加到计算节点的PCIe代理。此SAD让代理将基于NIC的共享DRAM联合到主机存储器空间中以用于无缝访问。PCIe代理将从***中任何地方发起并将特定NIC中的存储器块作为目标的存储器访问路由到该NIC。因此,每个NIC可以访问对等NIC的共享DRAM,并且使用它来协调事件流程并自主地执行通信和通知任务,从而绕过来自CPU的任何干预,该来自CPU的任何干预将需要其他控制路径以用于控制、异常和错误处理。在多个NIC共享存储器的情况下,可以使用散列函数来归属特定存储器操作。
在实施例中,也可以提供位于NIC中并集成到PCIe节点代理中的新颖窥探过滤器和缓存代理方案以优化通信量来在两种类型的代理之间执行一致通信。
注意的是,此架构可以不仅用于在CPU与NIC之间创建一致地址空间,而且可以用于在通过PCIe节点代理连接的不同的NIC之间建立一致地址空间。在这种情况下,可以在不同的NIC之间分割地址空间,并且PCIe节点代理将来自NIC和CPU的请求重新路由到拥有该特定地址空间的对应NIC。这使得能实现其中在多个NIC与多个CPU之间共享存储器地址的新颖使用情况。
现在将更具体地参考附图描述针对用于智能网络接口卡的共享存储器的***和方法。应该注意的是,在所有附图中,可以重复某些附图标记以指示特定设备或块跨越这些图是完全或基本上一致的。然而,这不旨在暗示所公开的各种实施例之间的任何特定关系。在某些示例中,可通过特定附图标记(“小部件10”)来指代元件的类,同时该类的各个种类或示例可以通过带有连字符的标号(“第一特定小部件10-1”和“第二特定小部件10-2”)来指代。
图1a是根据本说明书的一个或多个示例的云服务提供商(CSP) 102的网络100的网络级图。在图1a的示例中,网络100可以被配置成使得一个或多个企业客户端130能够向一个或多个最终用户120提供服务或数据,所述最终用户120可以操作用户设备110以经由外部网络172访问信息或服务。此示例设想了其中云服务提供商102它本身是向企业客户端130提供第三方“网络即服务”(NaaS)的企业的实施例。然而,此示例是非限制性的。在适当的实施例中,企业客户端130和CSP 102也可能是相同的或相关的实体。
企业网络170可以是任何适合的网络或在一个或多个适合的联网协议上操作的一个或多个网络的组合,作为非限制性示例包括例如结构、局域网、内联网、虚拟网、广域网、无线网络、蜂窝网络或因特网(可选地经由代理、虚拟机或其他类似的安全机制访问)。企业网络170也可以包括一个或多个服务器、防火墙、路由器、交换机、安全设备、防病毒服务器或其他有用的网络设备,所述设备在示例中可以被虚拟化在数据中心142内。在此图示中,为了简单企业网络170作为单个网络被示出,但是在一些实施例中,企业网络170可以包括大量网络,诸如连接到互联网的一个或多个企业内联网,并且可以包括多个地理位置中的数据中心。企业网络170也可以经由外部网络172提供对外部网络(诸如因特网)的访问。外部网络172可以类似地是任何适合类型的网络。
数据中心142可以例如作为在多个机架式刀片服务器上的管理程序中运行的虚拟集群或者作为物理服务器的集群被提供。数据中心142可以向一个或多个管理程序中的一个或多个租户提供一个或多个服务器功能、一个或多个VNF或一个或多个“微云”。例如,诸如vCenter之类的虚拟化环境可以提供定义多个“租户”的能力,其中每个租户在功能上与每个其他租户分离,并且每个租户作为单用途微云而操作。每个微云可以用作独特的功能,并且可以包括许多不同风格的多个虚拟机(VM)。在一些实施例中,数据中心142也可以提供多租户,其中可以向多个租户提供功能的单个实例,同时针对每个租户的数据与针对每个其他租户的数据隔离。
也应该注意的是,也可以经由数据中心142提供用户设备(UE) 110的某种功能性。例如,一个微云可以提供允许最终用户120远程登录到远程企业桌面并访问企业应用、工作空间和数据的诸如Citrix工作空间之类的远程桌面管理程序。在那种情况下,UE 110可以是仅运行精简操作***的诸如Google(谷歌)Chromebook 之类的“瘦客户端”,并且仍然给用户120提供对企业资源的有用访问。
被配置为管理控制台140的一个或多个计算设备也可以在企业网络170上操作。管理控制台140可以是用户设备的特例,并且可以提供用于安全管理员150用以定义管理控制台140可以在企业网络170上并跨越客户端设备110和数据中心142实施的企业安全和网络策略的用户接口。在示例中,管理控制台140可以运行服务器类操作***,诸如Linux、Unix或Windows Server。在另一种情况下,管理控制台140可以作为web接口、在桌面类机器上或者经由在数据中心142内提供的VM来提供。
网络100可以跨越企业边界104与外部网络172进行通信。企业边界104可以表示物理、逻辑或其他边界。外部网络172可以包括例如网站、服务器、网络协议和其他基于网络的服务。CSP 102也可以与第三方安全服务提供商190 (诸如McAfee®或另一安全服务企业)签订合同,以向网络100提供安全服务。
企业客户端的目标可以是经由如由CSP 102所托管的数据中心142向最终用户120安全地提供网络服务。为此,CSP 102可以提供某些合同服务质量(QoS)保证和/或服务等级协定(SLA)。QoS可以是资源性能的量度,并且仅举几例可以包括诸如可用性、抖动、比特率、吞吐量、错误率和延迟之类的因素。SLA可以是可以包括QoS因素以及诸如“平均恢复时间”(MTTR)和平均故障间隔时间(MTBF)之类的因素的合同协定。一般而言,SLA可以是与总体体验更相关的更高级协定,然而QoS可以用于测量个别组件的性能。然而,这不应该被理解为暗示QoS度量与SLA度量之间的严格划分。
转向图1b,为了满足合同QoS和SLA要求,CSP 102可以提供一定数量的工作负载集群118。在此示例中,示出了两个工作负载集群118-1和118-2,每个在底架148中提供多达16个机架式服务器146。这些服务器机架可以被并置在单个数据中心中,或者可以位于不同的地理数据中心中。取决于合同协定,一些服务器146可以具体地专用于某些企业客户端或租户,而其他服务器可以被共享。
选择要在数据中心中提供的许多服务器是CSP 102的传统做法。CSP 102可能希望确保存在足够的服务器来处理网络容量,并且随着时间的推移提供预期的设备故障。然而,提供太多的服务器146既在硬件成本方面且在功耗方面可能是昂贵的。因此,理想地,CSP102提供足够的服务器146来为其所有的企业客户端130服务,并且满足合同QoS和SLA基准,但是没有浪费容量。
数据中心142中的各种设备可以经由交换结构彼此连接。“结构”常常被称为且当作单个实体,但是应该理解的是,在一些实施例中,结构是用于可以一起操作来形成该结构的多个设备的高级标签。例如,结构可以包括一个或多个高速路由和/或交换设备174。在一些情况下,交换设备174可以是分层的,其中例如处理工作负载集群118-1的交换机174-1、处理工作负载集群118-2的交换机174-2,以及交换机174-3。这个简单的层级被示出来图示分层交换结构的原理,但应该注意的是,这与现实生活的部署相比可能被显著地简化了。在许多情况下,交换结构174的层级可以是多层面的且涉及更多。常见网络架构包括中心辐射架构和叶脊架构。
结构它本身可以通过仅举几例诸如英特尔® OmniPathTM、TrueScaleTM、超路径互连(UPI) (以前被称作QPI或KTI)、STL、以太网、PCI或PCIe等等之类的任何适合的互连技术来提供。这些中的一些将比其他的更适合于某些类型的部署,并且为即时应用选择适当的结构是普通技术人员的传统做法。
图2是根据本说明书的一个或多个示例的客户端设备200的框图。客户端设备200可以是任何适合的计算设备。在各种实施例中,作为非限制性示例,“计算设备”可以是或者包括计算机、工作站、服务器、大型机、虚拟机(无论被仿真还是在“裸机”管理程序上)、嵌入式计算机、嵌入式控制器、嵌入式传感器、个人数字助理、膝上型计算机、蜂窝电话、IP电话、智能电话、平板电脑、双用平板电脑、计算设备、网络设备、接收器、可穿戴计算机、手持式计算器或用于处理并传递数据的任何其他电子、微电子或微机电设备。任何计算设备都可以被指定为网络上的主机。每个计算设备可以将它本身称为“本地主机”,然而其外部的任何计算设备可以被指定为“远程主机”。在一个特定示例中,客户端设备200是如本文中所描述的被配置用于RDMA (远程直接存储器访问)的虚拟机。
客户端设备200包括连接到存储器220的处理器210,在所述存储器220中存储了用于提供操作***222和客户端代理224的至少软件部分的可执行指令。客户端设备200的其他组件包括储存器250、网络接口260和***设备接口240。此架构仅作为示例被提供,并且旨在为非排他性的和非限制性的。此外,所公开的各个部分仅旨在为逻辑划分,而不一定表示物理上分离的硬件和/或软件组件。某些计算设备例如在单个物理存储器设备中提供主存储器220和储存器250,而在其他情况下,存储器220和/或储存器250在功能上跨越许多物理设备分布,诸如在数据中心存储池或存储器服务器的情况下。在虚拟机或管理程序的情况下,可以以在虚拟化层上运行的软件或固件的形式提供功能的全部或部分以提供所公开的逻辑功能。在其他示例中,诸如网络接口260之类的设备可以仅提供执行其逻辑操作所必需的最小硬件接口,并且可以依靠软件驱动程序来提供附加必要的逻辑。因此,本文中所公开的每个逻辑块广义地旨在包括被配置且可操作用于提供所公开的该块的逻辑操作的一个或多个逻辑元件。
如贯穿本说明书所使用的,“逻辑元件”可以包括硬件(包括例如可编程软件、ASIC或FPGA)、外部硬件(数字、模拟或混合信号)、软件、往复式软件、服务、驱动程序、接口、组件、模块、算法、传感器、组件、固件、微码、可编程逻辑或可协调以实现逻辑操作的对象。此外,一些逻辑元件由上面存储有用于指示处理器执行某个任务的可执行指令的有形非暂时性计算机可读介质来提供。作为非限制性示例,这种非暂时性介质可以包括例如硬盘、固态存储器或磁盘、只读存储器(ROM)、持久性快速存储器(PFM) (例如,英特尔®3D 交叉点)、外部储存器、独立磁盘冗余阵列(RAID)、独立节点冗余阵列(RAIN)、网络附连存储(NAS)、光学存储、磁带驱动器、备份***、云存储或上述的任意组合。这种介质也可以包括被编程到FPGA中或者被编码在ASIC上的硬件或处理器中的指令。
在示例中,处理器210经由存储器总线270-3通信地耦合到存储器220,所述存储器总线270-3作为示例可以例如是直接存储器存取(DMA)总线,但是其他存储器架构是可能的,包括其中存储器220经由***总线270-1或某个其他总线与处理器210进行通信的架构。在数据中心环境中,存储器总线270-3可以是或者可以包括结构。
处理器210可以经由***总线270-1通信地耦合到其他设备。如贯穿本说明书所使用的,“总线”包括任何有线或无线互连线路、网络、连接、结构、捆绑、单条总线、多条总线、交叉开关网络、单级网络、多级网络,或可操作来在计算设备的各部分之间或者在计算设备之间承载数据、信号或电力的其他传导介质。应该注意的是,这些用途仅作为非限制性示例被公开,并且一些实施例可以省略上述总线中的一种或多种,然而其他实施例可以采用附加或不同的总线。
在各种示例中,“处理器”可以包括可操作来执行指令(无论是从存储器加载的还是直接在硬件中实现的)的逻辑元件的任意组合,作为非限制性示例包括微处理器、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、图形处理单元(GPU)、可编程逻辑阵列(PLA)、专用集成电路(ASIC)或虚拟机处理器(VMP)。在某些架构中,可以提供多核心处理器,在此情况下,视情况而定,处理器210可以被当作多核心处理器的仅一个核心,或者可以被当作整个多核心处理器。在一些实施例中,也可以为专门或支持功能提供一个或多个协处理器。
处理器210可以经由总线270-3按照DMA配置连接到存储器220。为了简化本公开,存储器220作为单个逻辑块被公开,但是在物理实施例中,可以包括一个或多个任何适合的易失性或非易失性存储器技术的一个或多个块,包括例如双数据速率随机存取存储器(DDRRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、诸如英特尔®3D交叉点(3DXP)之类的持久性快速存储器(PFM)、缓存、L1或L2存储器、片上存储器、寄存器、闪存、只读存储器(ROM)、光学介质、虚拟存储器区域、磁性或磁带存储器或类似物。可以在本地提供存储器220,或者可以在别处提供存储器220,诸如在具有3DXP存储器服务器的数据中心的情况下。在某些实施例中,存储器220可以包括相对低延迟的易失性主存储器,而储存器250可以包括相对较高延迟的非易失性存储器。然而,存储器220和储存器250不必是物理上分离的设备,并且在一些示例中可以简单地表示功能的逻辑分离。在仅长期存储器是电池支持的RAM或者主存储器作为PFM被提供的情况下,这些线可以是特别模糊的。也应该注意的是,尽管DMA作为非限制性示例被公开,然而DMA不是与本说明书一致的唯一协议,并且其他存储器架构是可用的。
可以提供操作***222,但是它在所有实施例中不是必需的。例如,一些嵌入式***为了速度、效率和资源保存而在“裸机”上操作。然而,在当代***中,甚至极简主义嵌入式***也通常包括某种操作***。在它被提供的情况下,操作***222可以包括任何适当的操作***,诸如Microsoft Windows、Linux、Android、Mac OSX、Apple iOS、Unix或类似操作***。上述的一些可能比另一种更经常用在一种类型的设备上。例如,台式计算机或工程工作站可能更有可能使用Microsoft Windows、Linux、Unix或Mac OSX中的一种。通常为具有较少定制选项的便携式成品设备的便携式计算机可能更有可能运行Microsoft Windows或Mac OSX。移动设备可能更有可能运行Android或iOS。嵌入式设备常常使用嵌入式Linux或诸如VxWorks之类的专用嵌入式操作***(OS)。然而,这些示例不旨在为限制性的。
储存器250可以是存储器220的任何种类,或者可以是单独的非易失性存储器设备。储存器250可以包括一个或多个非暂时性计算机可读介质,作为非限制性示例包括硬盘驱动器、固态驱动器、外部储存器、独立磁盘冗余阵列(RAID)、独立节点冗余阵列(RAIN)、网络附连存储、光学存储、磁带驱动器、备份***、云存储或上述的任何组合。储存器250可以是或者可以在其中包括存储在其他配置中的一个或多个数据库,并且可以包括诸如操作***222之类的操作软件和客户端代理224的软件部分的存储副本。在一些示例中,储存器250可以是包括作为处理器指令或者在ASIC上编码的硬件指令或逻辑的非暂时性计算机可读存储介质。许多其他配置也是可能的,并且旨在被包含在本说明书的广泛范围内。
可以提供网络接口260以将客户端设备200通信地耦合到有线或无线网络。如贯穿本说明书所使用的“网络”可以包括可操作来在计算设备内或之间交换数据或信息的任何通信平台或介质,作为非限制性示例包括以太网、WiFi、结构、特设的本地网络、给计算设备提供用电子交互的能力的互联网架构、计算设备可以使用来执行事务的普通老式电话***(POTS)(其中所述事务可以由人类操作员协助或者其中所述事务可以手动将数据键入到电话或其他适合的电子设备中)、在***中的任何两个节点之间提供通信接口或交换的任何分组数据网(PDN),或任何局域网(LAN)、城域网(MAN)、广域网(WAN)、无线局域网(WLAN)、虚拟专用网(VPN)、内联网,或促进网络或电话环境中的通信的任何其他适当的架构或***。注意在某些实施例中,网络接口260可以是或者可以包括主机结构接口(HFI)。
客户端代理224可以是访问由数据中心提供的功能(诸如搜索服务)的客户端应用。在一个示例中,客户端代理224可操作来执行如本说明书中所描述的计算机实现的方法。客户端代理224可以包括上面存储有可执行指令的一种或多种有形非暂时性计算机可读介质,所述可执行指令可操作来指示处理器提供客户端代理224。客户端代理224也可以包括处理器,其具有指示该处理器执行所期望的方法的对应的存储器指令。如贯穿本说明书所使用的,“引擎”包括可操作用于并被配置成执行引擎的一个或多个方法或功能的类似或不类似种类的一个或多个逻辑元件的任何组合。在一些情况下,客户端代理224可以包括被设计成执行方法或其一部分的专用集成电路,并且也可以包括可操作来指示处理器执行该方法的软件指令。在一些情况下,客户端代理224可以作为“守护程序”进程运行。“守护程序”可以包括无论用硬件、软件、固件还是其任何组合加以实现的可执行指令的系列或任何程序,该守护程序作为后台进程、终止并驻留程序、服务、***扩展、控制面板、引导程序、基本输入/输出***(BIOS)子程序或在没有直接用户交互的情况下操作的任何类似的程序而运行。在某些实施例中,守护程序进程可以在与保护环架构中的环0、1或2相关联的“驱动程序空间”中按提升的特权运行。也应该注意的是,客户端代理224也可以包括其他硬件和软件,作为非限制性示例包括配置文件、注册表条目和交互式或用户模式软件。
在一个示例中,客户端代理224包括存储在非暂时性介质上的可操作来执行根据本说明书的方法的可执行指令。在适当的时间,诸如在引导客户端设备200时,或者在命令来自操作***222或用户120时,处理器210可以从储存器250中检索指令的副本并将它加载到存储器220中。处理器210然后可以迭代地执行客户端代理224的指令以提供所期望的方法。
***设备接口240可以被配置成与连接到客户端设备200但是不一定为客户端设备200的核心架构的一部分的任何辅助设备对接。***设备可以可操作来向客户端设备200提供扩展功能性,并且可以或者可以不完全依赖于客户端设备200。在一些情况下,***设备自身可以是计算设备。作为非限制性示例***设备可以包括诸如显示器、终端、打印机、键盘、鼠标、调制解调器、数据端口(例如,串行、并行、通用串行总线(USB)、火线(Firewire)或类似物)、网络控制器、光学介质、外部储存器、传感器、换能器、致动器、控制器、数据采集总线、相机、麦克风、扬声器或外部存储之类的输入和输出设备。
在一个示例中,***设备包括显示适配器242、音频驱动器244和输入/输出(I/O)驱动器246。显示适配器242可以被配置成提供人类可读视觉输出,诸如命令行接口(CLI)或诸如Microsoft Windows、Apple OSX桌面或基于Unix/Linux“x”Windows***的桌面之类的图形桌面。作为非限制性示例,显示适配器242可以提供采用任何适合的格式的输出,诸如同轴输出、复合视频、分量视频、视频图形阵列(VGA),或诸如数字视频接口(DVI)或高清晰度多媒体接口(HDMI)之类的数字输出。在一些示例中,显示适配器242可以包括硬件图形卡,该硬件图形卡可以具有它自己的存储器和它自己的图形处理单元(GPU)。音频驱动器244可以提供用于可听声音的接口,并且可以在一些示例中包括硬件声卡。作为非限制性示例,可以以模拟(诸如3.5mm立体声插孔)、分量(“RCA”)立体声或者以诸如索尼/飞利浦数字接口格式(S/PDIF)、音频工程协会-3(AES3)、音频工程协会-47(AES47)、HDMI、USB、蓝牙或Wi-Fi音频之类的数字音频格式提供声音输出。注意,在其中客户端设备200是虚拟机的实施例中,可以通过用于访问虚拟机的设备远程地提供***设备。
图3是根据本说明书的一个或多个示例的服务器类设备300的框图。如结合图2所描述的,服务器300可以是任何适合的计算设备。一般而言,除非另外具体地陈述,否则图2的定义和示例可以被认为同样地适用于图3。在本文中单独地描述服务器300以图示在某些实施例中,可以沿着客户端-服务器模型划分逻辑操作,其中客户端设备200提供某些本地化任务,而服务器300提供某些其他集中化任务。
注意的是,图3的服务器300在侧重于功能块的情况下特别地图示了服务器300的经典“冯·诺依曼架构”方面。本文中的其他图(例如,下面的图4a、图4b和图5)可以在更多地侧重于虚拟化方面的情况下图示客户端或服务器设备的其他方面。这些图示的实施例不旨在为相互排斥的或者推断必要的区别。相反,各种视图和图旨在图示这些设备的不同观点和方面。
在特定示例中,服务器设备300可以是如本文中所图示的存储器服务器。
服务器300包括连接到存储器320的处理器310,所述存储器320在其中存储有用于提供操作***322和服务器引擎324的至少软件部分的可执行指令。服务器引擎324可以提供数据中心的功能,诸如搜索服务。服务器300的其他组件包括储存器350和主机结构接口360。如图2中所描述的,每个逻辑块可以通过一个或多个类似或不类似的逻辑元件来提供。
在示例中,处理器310经由存储器总线370-3通信地耦合到存储器320,所述存储器总线370-3可以是例如直接存储器存取(DMA)总线。处理器310可以经由***总线370-1通信地耦合到其他设备。
处理器310可以经由DMA总线370-3按照DMA配置连接到存储器320,或者经由任何其他适合的存储器配置连接到存储器320。如图2中所讨论的,存储器320可以包括任何适合类型的一个或多个逻辑元件。存储器320可以包括持久性快速存储器,诸如3DXP或类似物。
如结合图2的储存器250所描述的,储存器350可以是存储器320的任何种类,或者可以是单独的设备。储存器350可以是或者可以在其中包括存储在其他配置中的一个或多个数据库,并且可以包括诸如操作***322的操作软件和服务器引擎324的软件部分的存储副本。
可以提供主机结构接口(HFI) 360以将服务器300通信地耦合到包括主机结构的有线或无线网络。主机结构可以包括用于通信地耦合云或类似云环境中的节点的交换接口。HFI 360在这里被用作示例,但是可以使用任何其他适合的网络接口(如结合网络接口260所讨论的)。
服务器引擎324是如图2中所描述的引擎,并且在一个示例中,包括可操作来执行如本说明书中所描述的计算机实现的方法的一个或多个逻辑元件。服务器引擎324的软件部分可以作为守护程序进程而运行。
服务器引擎324可以包括上面存储有可执行指令的一个或多个非暂时性计算机可读介质,所述可执行指令可操作来指示处理器提供服务器引擎324。在适当的时间,诸如在引导服务器300时或者在命令来自操作***322或用户120或安全管理员150时,处理器310可以从储存器350中检索服务器引擎324(或其软件部分)的副本并将它加载到存储器320中。处理器310然后可迭代地执行服务器引擎324的指令以提供所期望的方法。
图4a是软件定义网络400的框图。在软件定义网络(SDN)中,数据平面与控制平面分离以实现某些优点。SDN只是一种风格的虚拟化,这里被示出来图示用于网络设置的一个选项。
图4b中所图示的网络功能虚拟化(NFV)是第二非限制性风格的网络虚拟化,常常被当作对SDN的附加或改进,但有时被当作单独的实体。NFV最初被设想为用于为电信服务提供降低的资本支出(Capex)和运营费用(Opex)的方法,所述电信服务严重依靠快速、单用途服务设备。NFV的一个重要特征是用在虚拟化环境内的商用成品(COTS)硬件上运行的虚拟设备替换专有的专用硬件设备。除Capex和Opex节约之外,NFV还提供更敏捷且自适应的网络。随着网络负载改变,可提供(“调高(spun up)”)或者移除(“调低(spun down)”)虚拟网络功能(VNF)以满足网络需求。例如,在高负载时,可以调高更多负载均衡器VNF以将业务分发到更多的工作负载服务器(其本身可以是虚拟机)。在经历更多可疑业务时,可能需要附加防火墙或深度分组检查(DPI)设备。
因为NFV起初是电信特征,所以许多NFV实例侧重于电信。然而,NFV不限于电信服务。在广义上,NFV包括在网络功能虚拟化基础设施(NFVI)内运行的一个或多个VNF。常常,VNF是与工作负载服务器或其他节点分离的内联服务功能(在许多情况下,工作负载类型功能自被虚拟化以来很久了)。可将这些VNF一起链接成服务链,所述服务链可以由虚拟子网络来定义,并且可以包括提供诸如安全、日志记录、计费和类似物之类的幕后工作的一连串网络服务。在一个示例中,传入分组经过服务链中的服务的链,其中一个或多个服务由VNF提供,然而历史上那些功能中的每一个可能已经由物理服务设备中的定制硬件提供。因为可以调高和调低NFV以满足需求,所以可使硬件和其他资源的分配变得更高效。可分配处理资源以满足最大需求,然而使用物理服务设备,设备上的任何未用容量被简单地浪费,并且增加容量以满足需求要求***在物理(昂贵的)定制服务设备。
图4a和图4b的图示可以被认为是更实用的,然而比较起来图1的图示可能更多是网络的高级逻辑布局。然而,应该理解的是,SDN 400 (图4a)、NFVI 404 (图4b)和企业网络100可以是相同的网络,或者可以是单独的网络。
在图4a中,SDN 400可以包括SDN控制器410、多个网络设备430和多个主机设备440。SDN控制器410、网络设备430和主机设备440中的一些或全部可以被具体实现在图1的工作负载集群142内,或者可以以其他方式形成企业网络170的一部分。
SDN 400由SDN控制器410控制。SDN控制器410通信地耦合到多个网络设备430。具体地,ND1 430-1、ND2 430-2和ND5 430-5直接通信地耦合到SDN控制器410。网络设备以及ND3 430-3和ND4 430-4未直接耦合到SDN控制器410,而是相反地经由诸如ND2 430-2和ND5430-5之类的中间设备耦合。
一些网络设备430也直接通信地耦合到主机设备440。具体地,网络设备ND1直接耦合到具有IP地址10.0.0.10和MAC地址FA:16:3:01:61:8的主机A 440-1。网络设备ND2 430-2直接耦合到具有IP地址10.0.0.20和MAC地址FA:16:3:01:63:B3的主机B 440-2。网络设备ND5 430-5直接耦合到具有IP地址10.0.0.30和MAC地址FA:16:3:01:54:83的主机D 440-3。
网络设备430可以被配置成执行各种网络功能,作为非限制性示例诸如负载均衡、防火墙、深度分组检查(DPI)、DNS、防病毒或任何其他适合的网络功能。网络设备430之间以及从网络设备430到主机设备440的互连的特定布置可以通过特定网络配置和需要来确定。因此,图4a的特定配置应该被理解为仅是说明性示例。
每个网络设备430可以具有多个入口和/或出口接口,诸如物理以太网或结构端口。在示例中,每个接口可以具有标签或新名称,诸如P1、P2、P3、P4、P5等。因此,可通过检查在哪一个接口上连接了哪些设备来确定网络布局的某些方面。例如,网络设备ND1 430-1具有用于接收指令并与SDN控制器410进行通信的入口接口。ND1 430-1也具有通信地耦合到主机A 440-1的接口P1。ND1 430-1具有通信耦合到ND2 430-2的接口P2。在ND2 430-2的情况下,它也在它自己的接口P2上耦合到ND1 430-1,并且经由接口P1耦合到主机B 440-2。ND2 430-2分别经由接口P3和P4通信地耦合到中间设备ND3 430-3和ND4 430-4。附加接口定义在整个图中可见。
当业务从一个接口流向另一接口时,可以为业务定义流表。此流表被使用为使得诸如ND2 430-2之类的网络设备在接收到分组之后,可确定接下来要将它发送到哪里。
例如,可以为ND1 430-1至ND4 430-4定义以下流表。
入口I/F 源MAC 目的地Mac 源IP 目的地IP 动作
P1 任何 fa:16:3e:01:54:a3 任何 10.0.0.30 P2
表1. ND1流表。
入口I/F 源MAC 目的地Mac 源IP 目的地IP 动作
P2 任何 fa:16:3e:01:54:a3 任何 10.0.0.30 P4
表2. ND2流表。
入口I/F 源MAC 目的地Mac 源IP 目的地IP 动作
P1 任何 fa:16:3e:01:54:a3 任何 10.0.0.30 P3
表3. ND3流表。
入口I/F 源MAC 目的地Mac 源IP 目的地IP 动作
P3 任何 fa:16:3e:01:54:a3 任何 10.0.0.30 P1
表4. ND4流表。
图4b是根据本说明书的一个或多个示例的网络功能虚拟化(NFV)架构的框图。像SDN一样,NFV是网络虚拟化的子集。因此,代替或者除图4a的网络之外还可以定义如图4b中所图示的网络。换句话说,网络的某些部分可以依靠SDN,然而其他部分(或相同的部分)可以依靠NFV。
在图4b的示例中,NFV协调器(orchestrator)402管理在NFVI 404上运行的许多VNF。NFV需要非平凡的资源管理,诸如在每个VNF的适当数量的实例之间分配非常大的计算资源池、管理VNF之间的连接、确定每个VNF要分配多少个实例以及管理存储器、储存器和网络连接。这可能需要复杂的软件管理,因此需要NFV协调器402。
注意的是,NFV协调器402它本身通常被虚拟化(而不是专用硬件设备)。NFV协调器402可以被集成在现有的SDN***内,其中操作支持***(OSS)管理SDN。这可以与云资源管理***(例如,OpenStack)交互以提供NVF协调。存在用于NFV协调和管理(有时被称为NFVMANO)的许多商业上可用的、成品的、专有的和开源的解决方案。除NFV协调器402之外,NFVMANO也可以包括诸如虚拟化基础设施管理(VIM)和VNF管理器之类的功能。
NFVI 404可以包括使得VNF能够运行的硬件、软件和其他基础设施。这可以包括例如刀片或插槽服务器(包括例如处理器、存储器和储存器)的一个或数个机架、一个或多个数据中心、跨越一个或多个地理位置分布的其他硬件资源、硬件交换机或网络接口。NFVI404也可以包括使得管理程序能够运行并由NFV协调器402管理的软件架构。NFVI 402可以包括NFVI存在点(NFVI-Pops),在NFVI存在点(NFVI-Pops)处运营商部署VNF。
在NFVI 404上运行的是许多虚拟机,其中的每一个在此示例中是提供虚拟服务设备的VNF。作为非限制性和说明性示例,这些包括作为防火墙的VNF 1 410、作为入侵检测***的VNF 2 412、作为负载均衡器的VNF 3 414、作为路由器的VNF 4 416、作为会话边界控制器的VNF 5 418、作为深度分组检查(DPI)服务的VNF 6 420、作为网络地址转换(NAT)模块的VNF 7 422、提供呼叫安全关联的VNF 8 424以及作为被调高以满足增加需求的第二负载均衡器的VNF 9 426。
防火墙410是基于使业务与“防火墙规则”的列表匹配来监视和控制业务(传入和传出两者)的安全设备。防火墙410可以是相对可信(例如,内部)网络与相对不可信网络(例如,互联网)之间的屏障。一旦通信已通过防火墙410的检查,它就可以被转发到网络的其他部分。
入侵检测412监视网络是否有恶意活动或策略违反。事件可以被报告给安全管理员150,或者由安全信息和事件管理(SIEM)***收集和分析。在一些情况下,入侵检测412也可以包括防病毒或防恶意软件扫描器。
负载均衡器414和426可以将业务移交给(farm out)一组基本上相同的工作负载服务器以按照公平方式分配工作。在一个示例中,负载均衡器提供许多业务“桶”并将每个桶指派给工作负载服务器。传入业务基于诸如源IP地址的散列之类的因素被指派给桶。因为散列被假定为分布相当均匀,所以每个工作负载服务器收到合理量的业务。
路由器416在网络或子网络之间转发分组。例如,路由器416可以包括一个或多个入口接口和多个出口接口,其中每个出口接口与资源、子网络、虚拟专用网或其他划分相关联。当业务在入口接口上进入时,路由器416确定它应该去什么目的地,并且将分组路由到适当的出口接口。
会话边界控制器418控制IP语音(VoIP)信令以及媒体流来建立、进行以及终止呼叫。在这个背景下,“会话”指代通信事件(例如,“呼叫”)。“边界”指代网络的两个不同部分之间的界限(与防火墙类似)。
DPI设备420提供深度分组检查,包括不仅检查分组的报头,而且检查分组的内容以便搜索潜在不需要的内容(PUC),诸如协议不相符、恶意软件、病毒、垃圾邮件或入侵。
NAT模块422提供网络地址转换服务以将一个IP地址空间重新映射成另一IP地址空间(例如,将专用子网络内的地址映射到较大互联网上)。
呼叫安全关联424为呼叫或其他会话创建安全关联(参见上面的会话边界控制器418)。维持此安全关联可能是至关重要的,因为如果安全关联被破坏则呼叫可能被丢弃。
图4的图示表明许多VNF已被提供并存在于NFVI 404内。此图不一定图示VNF与较大网络之间的任何关系。
图5图示了根据本说明书的一个或多个示例的计算平台500的组件的框图。在所描绘的实施例中,计算机平台500包括通过网络508耦合在一起的多个平台502和***管理平台506。在其他实施例中,计算机***可以包括任何适合数量的(即,一个或多个)平台。在一些实施例中(例如,当计算机***仅包括单个平台时),***管理平台506的全部或一部分可被包括在平台502上。平台502可以包括具有一个或多个中央处理单元(CPU) 512、存储器514 (其可以包括任何数量的不同模块)、芯片组516、通信接口518和任何其他适合的硬件和/软件的平台逻辑510以执行能够执行与在平台502上运行的应用相关联的工作负载的管理程序520或其他操作***。在一些实施例中,平台502可以充当用于调用这些应用的一个或多个客户***522的主机平台。平台500可以表示任何适合的计算环境,诸如高性能计算环境、数据中心、通信服务提供商基础设施(例如,演进分组核心的一个或多个部分)、存储器内计算环境、交通工具(例如,汽车或飞机)的计算***、物联网环境、工业控制***、其他计算环境或其组合。
在本公开的各种实施例中,累积到多个硬件资源(例如,核心和非核心)的累积应力和/或应力速率被监视并且计算机平台500的实体(例如,***管理平台506、管理程序520或其他操作***)可以指派平台逻辑510的硬件资源以依照应力信息执行工作负载。例如,***管理平台506、管理程序520或其他操作***或CPU 512可以基于应力信息确定要将工作负载调度到上面的一个或多个核心。在一些实施例中,自诊断能力可以与应力监视组合以更准确地确定硬件资源的健康状况。此类实施例可以允许在包括网络功能虚拟化(NFV)、软件定义网络(SDN)或任务关键应用的部署方面优化。例如,可以在VNF(虚拟网络功能)的初始放置期间或者为了从一个平台移植到另一平台查阅应力信息以便改进可靠性和容量利用率。
每个平台502可以包括平台逻辑510。除了使得能实现平台502的功能性的其他逻辑之外,平台逻辑510还包括一个或多个CPU 512、存储器514、一个或多个芯片组516和通信接口518。尽管图示了三个平台,然而计算机平台500可以包括任何适合数量的平台。在各种实施例中,平台502可以驻留在被安装在底架、机架或其他适合的结构中的电路板上,所述底架、机架或其他适合的结构包括通过网络508(其可包括例如机架或背板交换机)耦合在一起的多个平台。
CPU 512可以各自包括任何适合数量的处理器核心和支持逻辑(例如,非核心)。核心可以通过驻留在CPU 612和/或芯片组516上的一个或多个控制器彼此耦合,耦合到存储器514,耦合到至少一个芯片组516和/或耦合到通信接口518。在特定实施例中,CPU 612被具体实现在永久地或可移除地耦合到平台502的插口内。在下面结合图2进一步详细地描述CPU 612。尽管示出了四个CPU,然而平台502可以包括任何适合数量的CPU。
存储器514可以包括任何形式的易失性或非易失性存储器,包括但不限于磁介质(例如,一个或多个磁带驱动器)、光学介质、随机存取存储器(RAM)、只读存储器(ROM)、闪速存储器、可移动介质或者一个或多个任何其他适合的本地或远程存储器组件。存储器514可以被平台502用于短期、中期和/或长期存储。存储器514可以存储由平台逻辑510利用的任何适合的数据或信息,包括嵌入在计算机可读介质中的软件和/或并入在硬件中或者以其他方式存储的编码逻辑(例如,固件)。存储器514可以存储由CPU 512的核心使用的数据。在一些实施例中,存储器514也可以包括用于指令的储存器,所述指令可以由CPU 512的核心或其他处理元件(例如,驻留在芯片组516上的逻辑)执行以提供与平台逻辑510的可管理性引擎526或其他组件相关联的功能性。附加地或替换地,芯片组516可以各自包括可以具有在本文中关于存储器514所描述的任何特性的存储器。存储器514也可以存储由CPU 512或芯片组516上的处理元件所执行的各种计算和确定的结果和/或中间结果。在各种实施例中,存储器514可以包括通过存储器控制器(其可以在CPU 512外部或者与CPU 512集成在一起)耦合到CPU的***存储器的一个或多个模块。在各种实施例中,存储器514的一个或多个特定模块可以专用于特定CPU 612或其他处理设备,或者可以跨越多个CPU 512或其他处理设备被共享。
在各种实施例中,存储器514可以将应力信息(诸如与平台逻辑510的硬件资源相关联的累积应力值)存储在非易失性存储器中,使得当电力丢失时,累积应力值被维持。在特定实施例中,硬件资源可以包括用于存储硬件资源的累积应力值的非易失性存储器(例如,在与特定硬件资源相同的管芯上)。
平台502也可以包括一个或多个芯片组516,所述一个或多个芯片组516包含用于支持CPU 512的操作的任何适合的逻辑。在各种实施例中,芯片组516可以驻留在与CPU 612相同的管芯或封装上或者驻留在一个或多个不同的管芯或封装上。每个芯片组可以支持任何适合数量的CPU 512。芯片组516也可以包括用于将平台逻辑510的其他组件(例如,通信接口518或存储器514)耦合到一个或多个CPU的一个或多个控制器。附加地或替换地,CPU512可以包括集成控制器。例如,通信接口518可以经由驻留在每个CPU上的集成I/O控制器直接耦合到CPU 512。
在所描绘的实施例中,每个芯片组516也包括可管理性引擎526。可管理性引擎526可以包括用于支持芯片组516的操作的任何适合的逻辑。在特定实施例中,可管理性引擎526(其也可以被称为创新引擎)能够从芯片组516、由芯片组516管理的(一个或多个)CPU512和/或存储器514、平台逻辑510的其他组件和/或平台逻辑510的组件之间的各种连接收集实时遥测数据。在各种实施例中,所收集的遥测数据包括本文中所描述的应力信息。
在各种实施例中,可管理性引擎526作为带外异步计算代理而操作,所述带外异步计算代理能够与平台逻辑510的各种元件对接,以在对CPU 512上运行进程没有或有最小破坏的情况下收集遥测数据。例如,可管理性引擎526可以包括芯片组516上的专用处理元件(例如,处理器,控制器或其他逻辑),其提供可管理性引擎526的功能性(例如,通过执行软件指令),从而保存用于与由平台逻辑510执行的工作负载相关联的操作的CPU 512的处理周期。而且用于可管理性引擎526的专用逻辑可以相对于CPU 512异步地操作并且可以在不增加CPU上的负载的情况下聚集遥测数据的至少一些。
可管理性引擎526可以处理它收集的遥测数据(将在本文中提供应力信息的处理的特定示例)。在各种实施例中,可管理性引擎526将它收集的数据和/或其处理的结果报告给计算机***中的其他元件,诸如一个或多个管理程序520或其他操作***和/或***管理软件(其可以在诸如***管理平台506之类的任何适合的逻辑上运行)。在一些实施例中,遥测数据被周期性地更新并报告给这些实体中的一个或多个。在特定实施例中,可以在用于报告遥测数据的正常间隔之前报告诸如已累积过量应力的核心之类的关键事件(例如,可以在检测时立即发送通知)。
在各种实施例中,可管理性引擎526可以包括可配置成设置特定芯片组516将管理哪一个或哪些CPU 512和/或哪些遥测数据将被收集的可编程代码。
芯片组516也各自包括通信接口528。通信接口528可以被用于在芯片组516与一个或多个I/O设备、一个或多个网络508和/或耦合到网络508的一个或多个设备(例如,***管理平台506)之间的信令和/或数据的通信。例如,通信接口528可以用于发送和接收诸如数据分组之类的网络业务。在特定实施例中,通信接口528包括一个或多个物理网络接口控制器(NIC),也被称为网络接口卡或网络适配器。NIC可以包括用于使用诸如以太网(例如,如由IEEE 802.3标准所定义的)、光纤信道、无限带宽技术、Wi-Fi或其他适合的标准之类的任何适合的物理层和数据链路层标准来通信的电子电路。NIC可以包括可以耦合到电缆(例如,以太网电缆)的一个或多个物理端口。NIC可以使得能实现芯片组516的任何适合的元件(例如,可管理性引擎526或交换机530)与耦合到网络508的另一设备之间的通信。在一些实施例中,网络508可以包括具有桥接和/或路由功能的交换机,所述交换机在平台502外部并且可操作来将遍及计算机平台500(例如,在不同平台上)分布的各种NIC彼此耦合。在各种实施例中,NIC可以与芯片组集成在一起(即,可以在与芯片组逻辑的其余部分相同的集成电路或电路板上)或者可以在以机电方式耦合到芯片组的不同集成电路或电路板上。
在特定实施例中,通信接口528可以允许与由可管理性引擎526执行的管理和监视功能相关联的数据(例如,在可管理性引擎526与***管理平台506之间)的通信。在各种实施例中,可管理性引擎526可以利用通信接口528的元件(例如,一个或多个NIC)来报告遥测数据(例如,报告给***管理平台506),以便为与由平台逻辑510执行的工作负载相关联的操作而保留通信接口518的NIC的使用。在一些实施例中,通信接口528也可以允许与平台集成在一起或在平台外部的I/O设备(例如,磁盘驱动器、其他NIC等)与CPU核心进行通信。
交换机530可以耦合到通信接口528的各种端口(例如,由NIC提供),并且可以在这些端口与芯片组516的各种组件(例如,耦合到CPU 512的一个或多个快速***组件互连(PCIe)通道)之间交换数据。交换机530可以是物理或虚拟(即,软件)交换机。
平台逻辑510可以包括附加通信接口518。与通信接口528类似,通信接口518可以被用于在平台逻辑510及一个或多个网络508和耦合到网络508的一个或多个设备之间的信令和/或数据的通信。例如,通信接口518可以用于发送和接收诸如数据分组之类的网络业务。在特定实施例中,通信接口518包括一个或多个物理NIC。这些NIC可以使得能实现平台逻辑510的任何适合的元件(例如,CPU 512或存储器514)与耦合到网络508的另一设备(例如,通过一个或多个网络耦合到网络508的其他平台或远程计算设备的元件)之间的通信。在特定实施例中,通信接口518可以允许在平台外部的设备(例如,磁盘驱动器、其他NIC等)与CPU核心进行通信。在各种实施例中,通信接口518的NIC可以通过I/O控制器(其可以在CPU 512外部或者与CPU 512集成在一起)耦合到CPU。
平台逻辑510可以接收并执行任何适合类型的工作负载。工作负载可以包括利用平台逻辑510的一个或多个资源(诸如一个或多个核心或关联的逻辑)的任何请求。例如,工作负载可以包括使软件组件(诸如I/O设备驱动程序524或客户***522)实例化的请求;处理从虚拟机532或在平台502外部的设备(诸如耦合到网络508的网络节点)接收到的网络分组的请求;执行与客户***522、在平台502上运行的应用、管理程序520或在平台502上运行的其他操作***相关联的进程或线程的请求;或其他适合的处理请求。
在各种实施例中,平台502可以执行任何数量的客户***522。客户***可以包括单个虚拟机(例如,虚拟机532a或532b)或一起操作的多个虚拟机(例如,虚拟网络功能(VNF) 534或服务功能链(SFC) 536)。如所描绘的,各种实施例可以包括存在于相同平台502上的各种类型的客户***522。
虚拟机532可以用它自己的专用硬件来模拟计算机***。虚拟机532可以在管理程序520之上运行客户操作***。平台逻辑510的组件(例如,CPU 512、存储器514、芯片组516和通信接口518)可以被虚拟化,使得对客户操作***而言似乎虚拟机532具有它自己的专用组件。
虚拟机532可以包括由虚拟机用作其网络接口的虚拟化NIC (vNIC)。可以给vNIC指派媒体访问控制(MAC)地址或其他标识符,从而允许多个虚拟机532可在网络中单独地寻址。
在一些实施例中,虚拟机532b可以是半虚拟化的(paravirtualized)。例如,虚拟机532b可以包括增强驱动程序(例如,提供更高性能或者具有到由管理程序520所提供的底层资源或能力的更高带宽接口的驱动程序)。例如,增强驱动程序与默认驱动程序相比可以具有到底层虚拟交换机538的更快接口以获得更高网络性能。
VNF 534可以包括具有可被部署在虚拟化基础设施中的定义接口和行为的功能构建块的软件实施方式。在特定实施例中,VNF 534可以包括共同地提供特定功能性(例如,广域网(WAN)优化、虚拟专用网(VPN)端接、防火墙操作、负载均衡操作、安全功能等)的一个或多个虚拟机532。在平台逻辑510上运行的VNF 534可以提供与通过专用硬件所实现的传统网络组件相同的功能性。例如,VNF 534可以包括用于执行任何适合的NFV工作负载的组件,诸如虚拟化演进分组核心(vEPC)组件、移动性管理实体(MME)、第三代合作伙伴计划(3GPP)控制和数据平面组件等。
SFC 536是作为链组织来执行一系列操作(诸如网络分组处理操作)的一组VNF534。服务功能链可以提供定义在网络中被拼接在一起以创建服务链的网络服务(例如,防火墙、负载均衡器)的有序列表的能力。
管理程序520(也被称为虚拟机监视器)可以包括用于创建并运行客户***522的逻辑。管理程序520可以给由虚拟机运行的客户操作***呈现虚拟操作平台(即,当客户操作***实际上被合并到单个硬件平台上时对虚拟机而言似乎它们在单独的物理节点上运行)并且通过平台逻辑510来管理客户操作***的执行。可以通过在软件中虚拟化或者通过需要最少软件干预的硬件辅助资源或两者来提供管理程序520的服务。各种客户操作***的多个实例可以由管理程序520来管理。每个平台502可以具有管理程序520的单独的实例化。
管理程序520可以是直接在平台逻辑510上运行以控制平台逻辑并管理客户操作***的本地或裸机管理程序。替换地,管理程序520可以是在主机操作***上运行并从主机操作***抽象客户操作***的受托管的管理程序。各种实施例可以包括一个或多个非虚拟化平台502,在此情况下本文中所描述的管理程序520的任何适合的特性或功能可以应用于非虚拟化平台的操作***。
管理程序520可以包括可以向客户***522的虚拟机提供虚拟交换和/或路由功能的虚拟交换机538。虚拟交换机538可以包括逻辑交换结构,该逻辑交换结构将虚拟机532的vNIC彼此耦合、从而创建虚拟网络,通过该虚拟网络虚拟机可以与彼此进行通信。虚拟交换机538也可以经由通信接口518的物理NIC耦合到一个或多个网络(例如,网络508),以便允许在虚拟机532与在平台502外部的一个或多个网络节点(例如,在不同平台502上运行的虚拟机或通过因特网或其他网络耦合到平台502的节点)之间通信。虚拟交换机538可以包括使用平台逻辑510的组件来执行的软件元件。在各种实施例中,管理程序520可以与任何适合的实体(例如,SDN控制器)通信,所述任何适合的实体可以使管理程序520响应于平台502中的变化条件(例如,虚拟机532的添加或删除或者可以被做出来增强平台的性能的优化的标识)而重新配置虚拟交换机538的参数。
管理程序520也可以包括资源分配逻辑544,该资源分配逻辑544可以包括用于基于遥测数据(其可以包括应力信息)来确定平台资源的分配的逻辑。资源分配逻辑544也可以包括用于与平台502的平台逻辑510实体的各种组件进行通信以实现这种优化的逻辑,所述各种组件诸如平台逻辑502的组件。例如,资源分配逻辑544可以指导平台逻辑510的哪些硬件资源将用于基于应力信息来执行工作负载。
任何适合的逻辑可以做出这些优化决定中的一个或多个。例如,***管理平台506;管理程序520或其他操作***的资源分配逻辑544;或者平台502或计算机平台500的其他逻辑,所述其他逻辑可以能够做出此类决定(单独或与平台502的其他元件相结合地)。在特定实施例中,***管理平台506可以与管理程序520进行通信(使用带内或带外通信)以指定为了满足存储在***管理平台处的策略而应该使用的优化。
在各种实施例中,***管理平台506可以从多个平台502接收遥测数据并跨越多个平台502管理工作负载放置。***管理平台506可以与管理程序520进行通信(例如,以带外方式)或者与各种平台502的其他操作***进行通信以实现由***管理平台指导的工作负载放置。
平台逻辑510的元件可以以任何适合的方式耦合在一起。例如,总线可以将任何组件耦合在一起。总线可以包括任何已知互连,诸如多点总线、网状互连、环形互连、点对点互连、串行互连、并行总线、一致(例如,缓存一致)总线、分层协议架构、差分总线或射型收发器逻辑(GTL)总线。
计算机平台500的元件可以以任何适合的方式诸如通过一个或多个网络508耦合在一起。网络508可以是任何适合的网络或使用一个或多个适合的联网协议来操作的一个或多个网络的组合。网络可以表示用于接收和发送通过通信***传播的信息分组的一系列节点、点和互连的通信路径。例如,网络可以包括一个或多个防火墙、路由器、交换机、安全设备、防病毒服务器或其他有用的网络设备。网络提供源和/或主机之间的通信接口,并且可以包括任何局域网(LAN)、无线局域网(WLAN)、城域网(MAN)、内联网、外联网、因特网、广域网(WAN)、虚拟专用网(VPN)、蜂窝网络,或促进网络环境中的通信的任何其他适当的架构或***。网络可包括通过通信介质彼此耦合(且彼此通信)的任何数量的硬件或软件元件。在各种实施例中,客户***522可以通过网络508来与在计算机平台500外部的节点进行通信。
图6图示了依照某些实施例的中央处理单元(CPU) 612的框图。尽管CPU 612描绘了特定配置,然而可以以任何适合的方式布置CPU 612的核心和其他组件。CPU 612可以包括任何处理器或处理设备,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、应用处理器、协处理器、片上***(SOC)或用于执行代码的其他设备。在所描绘的实施例中,CPU 612包括四个处理元件(所描绘的实施例中的核心630),其可以包括不对称处理元件或对称处理元件。然而,CPU 612可以包括可以是对称的或不对称的任何数量的处理元件。
在一个实施例中,处理元件指代用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、进程单元、上下文、上下文单元、逻辑处理器、硬件线程、核心和/或能够保持处理器的状态(诸如执行状态或架构状态)的任何其他元件。换句话说,处理元件在一个实施例中指代能够与代码(诸如软件线程、操作***、应用或其他代码)独立地相关联的任何硬件。物理处理器(或处理器插口)通常指代集成电路,其潜在地包括任何数量的其他处理元件,诸如核心或硬件线程。
核心可以指代位于能够维持独立架构状态的集成电路上的逻辑,其中每个独立地维持的架构状态与至少一些专用执行资源相关联。硬件线程可以指代位于能够维持独立架构状态的集成电路上的任何逻辑,其中独立地维持的架构状态共享对执行资源的访问。如可看到的,当某些资源被共享并且其他资源专用于架构状态时,硬件线程和核心的命名之间的线重叠。通常,核心和硬件线程***作***视为单独的逻辑处理器,其中操作***能够在每个逻辑处理器上单独地对操作进行调度。
物理CPU 612可以包括任何适合数量的核心。在各种实施例中,核心可以包括一个或多个乱序处理器核心或一个或多个有序处理器核心。然而,可以从任何类型的核心(诸如本地核心、软件管理的核心、被适配成执行本地指令集架构(ISA)的核心、被适配成执行翻译的ISA的核心、共同设计的核心或其他已知核心)中单独地选择核心。在异构核心环境(即不对称核心)中,可以利用某种形式的翻译(诸如二进制翻译)来在一个或两个核心上调度或者执行代码。
在所描绘的实施例中,核心630A包括乱序处理器,其具有用于预取进来的指令、执行各种处理(例如,缓存、解码、分支预测等)并将指令/操作向前传递给乱序(OOO)引擎680的前端单元670。OOO引擎680对解码的指令执行进一步处理。
前端670可以包括耦合到预取逻辑以对预取的元素进行解码的解码模块。在一个实施例中,预取逻辑包括与核心630的线程槽相关联的单独的定序器。通常核心630与第一ISA相关联,所述第一ISA定义/指定可在核心630上执行的指令。通常作为第一ISA的一部分的机器代码指令包括该指令的一部分(被称为操作码),其引用/指定要执行的指令或操作。解码模块可以包括从其操作码中识别这些指令并且将经解码的指令传递到流水线上以用于像由第一ISA所定义的那样处理的电路。例如,在一个实施例中,解码器可以包括被设计或者适配成识别特定指令(诸如事务指令)的逻辑。作为由解码器识别的结果,核心630的架构采取特定预定义动作来执行与适当的指令相关联的任务。重要的是注意,可以响应于单个或多个指令来执行本文中所描述的任务、块、操作和方法中的任一个;其中的一些可以是新的或旧的指令。在一个实施例中,核心630的解码器识别相同的ISA(或其子集)。替换地,在异构核心环境中,一个或多个核心(例如,核心630B)的解码器可以识别第二ISA (第一ISA的子集或不同的ISA)。
在所描绘的实施例中,乱序引擎680包括分配单元682以从前端单元670接收可以形式为一个或多个微指令或μops的解码的指令,并且将它们分配给诸如寄存器等之类的适当的资源。接下来,指令被提供给保留站684,其保留资源并对它们进行调度以便在多个执行单元686A-686N中的一个上执行。可以存在各种类型的执行单元,包括例如算术逻辑单元(ALU)、加载并存储单元、矢量处理单元(VPU)、浮点执行单元等。来自这些不同的执行单元的结果被提供给重排序缓冲器(ROB) 688,其取得无序结果并将它们返回到正确的程序顺序。
在所描绘的实施例中,前端单元670和乱序引擎680两者都耦合到存储器层级的不同级。具体地示出的是指令级缓存672,其进而耦合到中级缓存676,其进而耦合到最后级缓存695。在一个实施例中,最后级缓存695被实现在片上(有时被称为非核心)单元690中。非核心690可以与***存储器699进行通信,所述***存储器699在所图示的实施例中是经由嵌入式DRAM (eDRAM)实现的。乱序引擎680内的各种执行单元686同也与中级缓存676通信的第一级缓存674进行通信。附加核心630B-630D也可以耦合到最后级缓存695。
在各种实施例中,非核心690(有时被称为***代理)可以包括不是核心630的一部分的任何适合的逻辑。例如,非核心690可以包括最后级缓存、缓存控制器、耦合到***存储器的管芯上存储器控制器、处理器互连控制器(例如,超路径互连或类似的控制器)、管芯上I/O控制器或其他适合的管芯上逻辑中的一个或多个。
在特定实施例中,非核心690可以在与核心的电压域和/或频率域分离的电压域和/或频率域中。也就是说,非核心690可以由与用于给核心供电的电源电压不同的电源电压供电并且/或者可以在与核心的操作频率不同的频率下操作。
CPU 612也可以包括电源控制单元(PCU) 640。在各种实施例中,PCU 640可以控制施加到每个核心(在每核心基础上)并施加到非核心的电源电压和操作频率。当不执行工作负载时,PCU 640也可以指示核心或非核心进入空闲状态(其中不供应电压和时钟)。
在各种实施例中,PCU 640可以检测硬件资源(诸如核心和非核心)的一个或多个应力特性。应力特性可以包括正被放置在硬件资源上的应力量的指示。作为示例,应力特性可以是施加到硬件资源的电压或频率;在硬件资源处感测到的功率电平、电流电平或电压电平;在硬件资源处感测到的温度;或其他适合的测量结果。在各种实施例中,当在特定时刻感测应力特性时,可以执行特定应力特性的多个测量(例如,在不同位置处)。在各种实施例中,PCU 640可以以任何适合的间隔检测应力特性。
在各种实施例中,PCU 640可以包括执行嵌入式固件以执行与本文中所描述的应力监视相关联的各种操作的微控制器。在一个实施例中,PCU 640在不用执行软件指令的情况下使用硬件来执行本文中所描述的PCU功能中的一些或全部。例如,PCU 640可以包括用于执行PCU的功能的固定和/或可编程逻辑。
在各种实施例中,PCU 640是与核心630分立的组件。在特定实施例中,PCU 640在与由核心630使用的时钟频率不同的时钟频率下运行。在其中PCU是微控制器的一些实施例中,PCU 640根据与由核心630使用的ISA不同的ISA来执行指令。
在各种实施例中,CPU 612也可以包括非易失性存储器650以存储与核心630或非核心690相关联的应力信息(诸如应力特性、增量应力值、累积应力值、应力累积速率或其他应力信息),使得当电力丢失时,应力信息被维持。
图7是根据本说明书的一个或多个示例的计算架构700的框图。在此示例中,提供了处理块702和NIC 704。在这种情况下,处理块702包括多个核心710,具体地为核心710-1、710-2、710-3和710-4。每个核心710包括它自己的缓存代理720。具体地,核心710-1具有缓存代理720-1。核心710-2具有缓存代理720-2。核心710-3具有缓存代理720-3。以及核心710-4具有缓存代理710-4。注意的是,在此示例中包括四个核心和四个缓存代理旨在图示说明操作原理。在实践中,处理块702可以包括具有一个缓存代理的一个核心,或者它可以包括具有许多缓存代理的许多核心。在现代数据中心中,个别节点可以具有多达64至128个核心。
在此示例中,处理块702经由PCIe接口776与NIC 704对接。因此,NIC 704包括主机PCIe接口772。注意的是,PCIe互连在本文中被用作非限制性示例。在其他实施例中,互连可以是任何适合的互连或总线,包括用于管芯上NIC的管芯上互连。因此,主机PCIe接口772可以被更一般地称为互连接口,其可以包括用于通信地耦合到任何适合的互连的接口。
NIC 704还包括NIC逻辑706、协处理器708和NIC存储器714。最后,NIC 704包括网络接口770,其被提供来将NIC 704通信地耦合到网络或结构,诸如英特尔® OmniPath结构或以太网网络。
NIC逻辑706可以包括用于根据已知功能执行网络接口的普通逻辑。这包括转换来自接口772的业务并将该业务引导到网络接口770,并且反之亦然。
类似地,网络接口770在一些实施例中可以是提供到网络或结构的普通互连的简单网络接口。
如上所述,协处理器708提供从核心710卸载某些密集和重复性任务的处理服务。作为非限制性示例,这些可包括安全、压缩、加密或其他重复性任务。协处理器708可以是FPGA、ASIC、具有关联软件的可编程处理器、固件设备或可编程逻辑的某种其他组合。协处理器708被提供有NIC存储器714,该NIC存储器714是协处理器708使用来执行其功能的存储器块。NIC 804包括NIC存储器814,该NIC存储器814包括共享存储器830和专用存储器832两者。
图8是根据本说明书的一个或多个示例的计算架构800的框图。在此示例中,提供了处理块802和NIC 804。处理块802包括核心710-1、710-2、710-3和710-4。这些分别与缓存代理720-1、720-2、720-3和720-4一起操作。在此使用与图7相同的数字来图示在一些实施例中,可能不需要对核心710-1至710-4以及缓存代理720-1至720-4做出架构改变。相反,这些可以简单地被编程或者配置成将某些地址空间映射到共享存储器830。
类似地,NIC 804包括NIC逻辑706、网络接口770和协处理器708。如前那样,在此使用与图7相同的数字来图示在某些实施例中,这些可以与图7的NIC 704中提供的块相同或基本上类似。
在此示例中,NIC存储器814被划分成共享存储器830和专用存储器832。NIC存储器814由缓存代理822管理。
在这种情况下,缓存代理720-1将DRAM的高区域映射到普通DRAM地址空间840。缓存代理720-1将DRAM的较低区域映射到共享存储器830。
作为非限制性示例,在核心710-1上运行的应用(例如,向如在图2中一样的客户端引擎224提供服务的如在图3中一样的服务器引擎324)可以写入到共享存储器830中的存储器位置,并且生成网络或结构请求。可以经由PCIe信道将网络或结构请求发送到NIC 804。主机PCIe接口872然后可以使请求下沉到NIC。
接下来,协处理器708可以处理请求。在此处理期间,可能发生冲突存储器操作,诸如NIC逻辑706设法写入到同一存储器位置。在一些情况下,缓存代理822可以生成窥探以维持缓存一致性,以便解决冲突。
在一个实施例中,一旦发生事务,该事务就可以被复制到共享存储器830中。同时,NIC 804上的应用可以生成将被缓存在主机中的NIC存储器范围作为目标的请求。在这种情况下NIC中的缓存代理可以遵循所实现的一致性协议(MESIF、MESI等)生成对缓存该特定存储器范围的计算元件的窥探。
最后,必要时,请求经由网络接口770被发送到结构。
可以扩展主机PCIe接口872以理解可以使用一个或多个专用虚拟信道或通道来隧道传输到和来自共享存储器830的存储器业务。来自那些通道或信道的业务可以被转发到缓存代理822。缓存代理822处理来自内核心710和来自协处理器708内的请求。注意的是,此架构也可以与多个NIC 804一起工作,所述多个NIC 804可以经由多个PCIe总线776连接。来自其他NIC的请求可以由PCIe节点代理隧道传输到所对应的NIC 804。基于请求,缓存代理822可以生成对本地存储器的读取请求、对协处理器708的窥探或对CPU侧缓存的窥探。
也可以扩展PCIe接口870以包括***地址解码器(SAD) 824,其将给定地址范围映射到每个NIC 804。对等NIC的共享存储器地址可以由NIC 804通过访问特定地址范围来访问。PCIe节点代理可以在地址范围由给定NIC拥有时将请求重新路由到该特定NIC。此架构可以基本上透明地工作,像从核心710角度看那样,每个访问只是对存储器地址的读取或从存储器地址的写入。
在一些实施例中,以及特别是在其中多个缓存代理提供共享NIC存储器的实施例中,SAD 824可以包括将共享存储器830映射到共享DRAM地址范围842中的解码规则。缓存代理720和822经由PCIe总线776将针对这些的请求转发到共享存储器830。有利地,在一些实施例中,处理块802不需要附加架构改变。可以替代地使用缓存代理720中的现有的DRAM解码规则。缓存代理720经由PCIe总线776以QPI或KTI形式在NIC共享DRAM 842的范围内转发存储器请求。
在一些示例中,PCIe总线776可以被扩增有一个或多个专用通道以用于在缓存代理720-1与缓存代理822之间隧道传输存储器请求。这些额外的通道也可以负责将来自协处理器708缓存代理822的请求(诸如窥探)转发到处理块802内的适当的核心710。注意的是,尽管在此示例中图示了一个缓存代理822,然而也可以包括多个缓存代理以增加吞吐量。可以使用地址上的散列函数来决定作为给定地址的归属的缓存代理822。
图9是图示了本说明书的教导的一个示例应用的数据中心900的框图。
在图9的示例中,提供了处理块802,其中处理块802通信地耦合到多个NIC 804,具体地为NIC 804-1、NIC 804-2、NIC 804-3和NIC 804-4。NIC 804-1经由PCIe接口776-1通信地耦合到处理块802,NIC 804-2经由PCIe接口776-2通信地耦合到处理块802,处理块802经由PCIe接口776-3通信地耦合到NIC 804-3,并且处理块802经由PCIe接口776-4通信地耦合到NIC 804-4。
每个NIC 804接收进来的业务。例如,数据中心900可能正在提供搜索服务,使得每个NIC 804接收到大量进来的搜索请求。每个NIC 804也执行业务分析卸载。这使处理块802的CPU或核心免于必须执行业务分析。
NIC 804-1和NIC 804-3两者都包括共享元数据950-1的存储(store),而NIC 804-2和NIC 804-4具有共享元数据950-2的存储。
数据中心900呈现网络密集应用,诸如用于搜索服务的服务器。在这种情况下,除为CPU密集的Web请求服务之外,数据中心900还需要将搜索置于上下文中并且执行和维持业务分析(例如,有多少给定人口统计的用户访问一组给定的对象或服务)。因为NIC 804正在执行业务分析,所以此功能被从CPU卸载,从而释放许多CPU周期。
然而,甚至与NIC 804协调并且在为请求服务和与NIC 804交易发送和接收之间来回切换的任务也可能消耗大量的CPU周期并且可能迫使缓存未命中率上升。因此,数据中心901采用本说明书的共享存储器架构。利用此共享存储器架构,处理块802内的CPU直接经由共享DRAM区域与NIC 804协调。这释放可用于提供更高服务器吞吐量的CPU周期。这也减小处理分组的延迟,因为CPU和NIC 804仅等待真正的依赖关系,而不是等待完成和唤醒。因此,总体上,此架构使计算和通信流线化,并且改进TCO和性能。
图10、图11和图12是图示了根据本说明书的一个或多个示例的信号流的信号流图。在这些流程图中的每一个中,信号可以在核心710、缓存代理720、PCIe代理870、主机PCIe接口872、缓存代理822与共享存储空间830之间传递。
图10图示了根据本说明书的一个或多个示例的读取流(MESI读取所有权(RFO))。在此示例中,RFO可以由在核心710上运行的应用生成。
在此示例中,核心710向缓存代理720发出读取流。缓存代理720然后将PCIe代理指派为读取流的SAD归属。
缓存代理720将读取流发出到PCIe代理870。PCIe代理870将读取流隧道传输到PCIe主机接口872。PCIe主机接口872可以去隧道传输(detunnel)读取流,并且将它发出到缓存代理822。
缓存代理822向共享存储器空间830发出读取指令。共享存储器830然后将数据返回给缓存代理822。
缓存代理822将数据外加读取返回(MESI GOE)发出到PCIe接口872。
PCIe接口872向PCIe代理870发出隧道传输的数据外加GOE。PCIe代理870可以去隧道传输该数据外加GOE,并且将它发出到缓存代理720。最后,缓存代理720将该数据外加GOE发出到核心710。
图11图示了根据本说明书的一个或多个示例的针对回写的信号流。回写(WB)命名约定是通过与核心或最后级缓存(LLC)中的驱逐(eviction)相关来使用的。然而,这也可以包括到存储器的其他类型的回写,诸如刷新流。概念上,此流程可以覆盖数据从核心710中的一个被发送回到共享存储器830。
核心710将回写发出到缓存代理720。缓存代理720使回写归属到PCIe代理。缓存代理720然后将回写发出到PCIe代理870。
PCIe代理870隧道传输回写并向PCIe接口872发出隧道传输的回写。
PCIe接口872去隧道传输回写并将它发出到缓存代理822。缓存代理822然后向共享存储器830发出写入指令。
共享存储器830向缓存代理822发出确认(ACK)。缓存代理822向PCIe接口872发出ACK外加MESI GOI。
PCIe接口872隧道传输ACK外加GOI并将它发出到PCIe代理870。
PCIe代理870去隧道传输ACK外加GOI并将它发出到缓存代理720。最后,缓存代理720将ACK外加GOI发出到核心710。
图12图示了根据本说明书的一个或多个示例的窥探流。
“窥探”缓存是为了缓存一致性而执行总线验证的缓存。当存储器地址或数据被多个缓存共享时,可能有必要确保缓存保持一致。当代理对共享数据做出改变时,改变被向外传播到其他缓存。每个缓存可以采用“总线窥探器”,并且每个总线窥探器监视总线上的每一事务。当发生修改共享数据的事务时,所有窥探器检查以查看它们相应的缓存是否具有共享数据的相同副本。如果缓存具有正确的共享数据,则其窥探器发出用于确保缓存一致性的动作,诸如缓存块的刷新或无效。窥探器也可以视情况而定使缓存块无效。
当由核心访问的给定行当前由协处理器708使用时可能发生窥探。缓存代理822因此可以使行无效并且将数据发送回到核心710。也可以在其中协处理器708请求访问当前正由处理块804中的核心710中的一个使用的行的情况下使用同一流程。在这种情况下,缓存代理822可以使用PCIe隧道传输来向节点的核心发出窥探。
作为示例,核心710向缓存代理720发出RFO。缓存代理720使RFO归属到PCIe代理870。缓存代理720然后将RFO发出到PCIe代理870。PCI代理870隧道传输RFO并将它递送到PCIe接口872。
PCIe接口872去隧道传输RFO并将它发出到缓存代理822。在这种情况下,缓存代理822确定正被访问的行当前由协处理器708使用,并且发出窥探。因此,缓存代理822向共享存储器830发出MESI FWD GO2I。
共享存储器830向缓存代理822发出ACK外加数据。
缓存代理822将数据外加GOE发回到PCIe接口872。
PCIe接口872隧道传输数据外加GOE,并将它发出到PCIe代理870。
PCIe代理870将数据外加GOE发出到缓存代理720。最后,缓存代理720将数据外加GOE发出到核心710。
上文概述了若干实施例的特征,使得本领域的技术人员可以更好地理解本公开的各个方面。本领域的技术人员应该领会的是,他们可以容易地使用本公开作为用于设计或者修改用于执行相同目的和/或实现本文中所介绍的实施例的相同优点的其他过程和结构的基础。本领域的技术人员也应该认识到,此类等效构造不脱离本公开的精神和范围,并且它们可以在不脱离本公开的精神和范围的情况下做出各种改变、替换和变更。
可以在包括中央处理单元(CPU)封装的片上***(SoC)中容易地提供本文中所公开的任何硬件元件的全部或部分。SoC表示将计算机或其他电子***的组件集成到单个芯片中的集成电路(IC)。因此,例如,可以整个地或部分地在SoC中提供客户端设备或服务器设备。SoC可以包含数字、模拟、混合信号和射频功能,所有这些功能都可以在单个芯片基板上提供。其他实施例可以包括多芯片模块(MCM),其中多个芯片位于单个电子封装内并且被配置成通过电子封装彼此紧密地交互。在各种其他实施例中,可以在专用集成电路(ASIC)、现场可编程门阵列(FPGA)和其他半导体芯片中的一个或多个硅核心中实现本文中所公开的计算功能性。
也应注意的是,在某些实施例中,可以省略或者合并一些组件。在一般意义上,图中所描绘的布置在其表示方面可以更合逻辑,而物理架构可以包括这些元件的各种置换、组合和/或混合。必须注意的是,可使用无数可能的设计配置来实现本文中所概述的操作目标。因此,所关联的基础设施具有大量的替代布置、设计选择、设备可能性、硬件配置、软件实施方式和设备选项。
在一般意义上,任何适合地配置的处理器都可执行与数据相关联的任何类型的指令以实现本文中详述的操作。本文中所公开的任何处理器都可以将元件或物品(例如,数据)从一种状态或事物变换到另一状态或事物。在另一示例中,本文中所概述的一些活动可以用固定逻辑或可编程逻辑(例如,由处理器执行的软件和/或计算机指令)来实现,并且本文中所标识的元件可以是某种类型的可编程处理器、可编程数字逻辑(例如,现场可编程门阵列(FPGA)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))、包括数字逻辑、软件、代码、电子指令的ASIC、闪速存储器、光盘、CD-ROM、DVD ROM、磁卡或光学卡、适合于存储电子指令的其他类型的机器可读介质或其任何适合的组合。
在操作中,储存器可以将信息存储在任何适合类型的有形非暂时性存储介质(例如,随机存取存储器(RAM)、只读存储器(ROM)、现场可编程门阵列(FPGA)、可擦除可编程读取只读存储器(EPROM)、电可擦除可编程ROM(EEPROM)等)、软件、硬件(例如,处理器指令或微码)中,或者在适当的情况下并基于特定需要将信息存储在任何其他适合的组件、设备、元件或对象中。此外,能基于特定需要和实施方式在任何数据库、寄存器、表、缓存、队列、控件列表或存储结构中提供被跟踪、发送、接收或者存储在处理器中的信息,所述数据库、寄存器、表、缓存、队列、控件列表或存储结构中的全部可以在任何适合的时间表中被引用。本文中所公开的存储器或储存器元件中的任一个应该酌情被解释为被包含在广义术语“存储器”和“储存器”内。本文中的非暂时性存储介质明确地旨在包括被配置成提供所公开的操作或者使处理器执行所公开的操作的任何非暂时性专用或可编程硬件。
实现本文中所描述的功能性的全部或部分的计算机程序逻辑被以各种形式具体实现,所述各种形式包括但绝不限于源代码形式、计算机可执行形式、机器指令或微码、可编程硬件和各种中间形式(例如,由汇编器、编译器、链接器或***生成的形式)。在示例中,源代码包括用各种编程语言(诸如目标代码、汇编语言)或诸如供各种操作***或操作环境使用的OpenCL、FORTRAN、C、C++、JAVA或HTML之类的高级语言或者用诸如Spice、Verilog和VHDL之类的硬件描述语言实现的一系列计算机程序指令。源代码可以定义并使用各种数据结构和通信消息。源代码可以采用计算机可执行形式(例如,经由解释器),或者源代码可以被转换(例如,经由翻译器、汇编器或编译器)成计算机可执行形式,或者转换为诸如字节代码之类的中间形式。在适当的情况下,可以使用上述中的任一个来构建或者描述适当的分立或集成电路,而无论是顺序的、组合的、状态机还是另外的。
在一个示例实施例中,可以在关联的电子设备的板上实现图的任何数量的电路。板可以是通用电路板,其可保持电子设备的内部电子***的各种部件,并且进一步地,为其他***设备提供连接器。更具体地,板可提供电连接,通过该电连接***的其他组件可以进行电力地通信。任何适合的处理器和存储器都可基于特定配置需求、处理需求和计算设计适合地耦合到板。诸如外部储存器、附加传感器、用于音频/视频显示的控制器和***设备之类的其他组件可以经由电缆作为插件卡附接到板,或者被集成到板本身。在另一示例中,图的电路可以被实现为独立模块(例如,具有被配置成执行特定应用或功能的电路和关联组件的设备),或者作为插件模块被实现到电子设备的专用硬件中。
注意的是,利用本文中所提供的许多示例,可以在两个、三个、四个或更多个电子组件方面对交互进行描述。然而,这仅仅是为了清楚和示例的目的而已经完成的。应该领会的是,可以以任何适合的方式合并或者重新配置***。沿着类似的设计替代方案,这些图的所图示的组件、模块和元件中的任一个都可以按照各种可能的配置被组合,所有这些都在本说明书的广义范围内。在某些情况下,通过仅引用有限数量的电气元件来描述一组给定流程的一个或多个功能性可能是更容易的。应该领会的是,图及其教导的电路易于扩展并且可容纳大量的组件以及更复杂/精密的布置和配置。因此,所提供的示例不应该限制范围或者抑制如可潜在地应用于大量的其他架构的电路的广义教导。
本领域的技术人员可以探知许多其他改变、替换、变化、变更和修改,并且意图是,本公开包含如落入所附权利要求的范围内的所有此类改变、替换、变化、变更和修改。为了协助美国专利商标局(USPTO)以及另外在本申请发布的任何专利的任何读者解释所附权利要求,申请人希望注意本申请人:(a)不旨在任何所附权利要求援引美国法典第35条112节的第六(6)段(AIA之前)或相同节的第(f)段(AIA之后),因为除非在特定权利要求中具体地使用了单词“用于……的装置”或“用于……的步骤”,否则它在其提交日期存在;以及(b)不旨在通过本说明书中的任何陈述以任何未以其他方式明确地反映在所附权利要求中的方式限制本公开。
示例实施方式
公开了主机结构接口(HFI)的示例,其包括:互连接口,用于将所述HFI通信地耦合到互连;网络接口,用于将所述HFI通信地耦合到网络;网络接口逻辑,用于提供所述互连与所述网络之间的通信;协处理器,其被配置成为所述网络提供卸载功能;存储器;以及缓存代理,其被配置成:将所述存储器的区域指定为所述HFI与经由所述互连通信地耦合到所述HFI的核心之间的共享存储器;接收针对所述共享存储器的存储器操作;并且根据所述存储器操作来向所述存储器发出存储器指令。
还公开了一个示例,其中所述存储器操作是从所述核心接收的。
还公开了一个示例,其中所述存储器操作被隧道传输,并且其中所述互连接口将去隧道传输所述存储器操作。
还公开了一个示例,其中所述存储器操作针对所述核心。
还公开了一个示例,其中所述互连接口将隧道传输所述存储器操作。
还公开了一个示例,其中所述存储器操作是存储器读取。
还公开了一个示例,其中所述存储器操作是存储器写入。
还公开了一个示例,其中所述存储器操作由所述协处理器和所述核心中的一个发起,并且其中所述缓存代理被配置成确定所述存储器操作针对由所述协处理器和所述主机中的另一个当前在使用中的存储器行。
还公开了一个示例,其中所述缓存代理将发出窥探以使所述行无效。
还公开了一个示例,其中所述缓存代理实现从由MESI、MOSI、MOESI和MOESIF构成的组中选择的一致性协议。
还公开了一个示例,其中所述互连接口包括用于所述存储器操作的专用信道,其中所述互连接口将直接将业务从所述专用信道路由到所述缓存代理。
还公开了一个示例,其中所述存储器操作包括用于标识所述存储器操作的归属缓存代理的散列。
还公开了缓存代理的示例,其中所述HFI包括与所述核心分离的集成电路。
还公开了一个示例,其中所述核心包括被配置成在所述存储器的共享区域中维持缓存一致性的缓存代理。
还公开了一个示例,其中所述核心包括被配置成在所述存储器的共享区域中维持缓存一致性的缓存代理。
还公开了一种或多种有形非暂时性计算机可读存储介质的示例,在其上编码有指令以用于指示装置:将所述装置通信地耦合到互连;将所述装置通信地耦合到网络;提供网络接口逻辑以提供所述互连与所述网络之间的通信;并且提供缓存代理以:将存储器的区域指定为所述装置与经由所述互连通信地耦合到所述装置的核心之间的共享存储器;接收针对所述共享存储器的存储器操作;并且根据所述存储器操作来向所述存储器发出存储器指令。
还公开了一个示例,其中所述存储器操作针对所述核心。
还公开了一个示例,其中所述互连接口将隧道传输所述存储器操作。
还公开了一个示例,其中所述存储器操作由协处理器和核心中的一个发起,并且其中所述缓存代理被配置成确定所述存储器操作针对由所述协处理器和所述核心中的另一个当前在使用中的存储器行。
还公开了一个示例,其中所述缓存代理将发出窥探以使所述行无效。
还公开了一个示例,其中所述缓存代理实现从由MESI、MOSI、MOESI和MOESIF构成的组中选择的一致性协议。
还公开了一个示例,其中所述存储器操作包括用于标识所述存储器操作的归属缓存代理的散列。
还公开了主机设备的示例,包括:处理器;存储器;以及缓存代理,其被配置成:将所述存储器的区域映射到智能网络接口的共享存储器。
还公开了主机设备的示例,进一步包括:用于提供互连的逻辑;以及用于提供专用信道的逻辑,所述专用信道用于提供主机处理器与智能网络接口的共享存储器之间的通信,所述智能网络接口包括网络接口逻辑、协处理器以及具有共享存储器区域的存储器,其中所述存储器操作针对所述主机。
还公开了主机设备的示例,进一步包括***地址解码器,该***地址解码器被配置成从多个智能网络接口接收存储器操作,并且提供用于归属所述存储器操作的散列。

Claims (25)

1.一种主机结构接口(HFI),包括:
互连接口,用于将所述HFI通信地耦合到互连;
网络接口,用于将所述HFI通信地耦合到网络;
网络接口逻辑,用于提供所述互连与所述网络之间的通信;
协处理器,所述协处理器被配置成为所述网络提供卸载功能;
存储器;以及
缓存代理,所述缓存代理被配置成:
将所述存储器的区域指定为所述HFI与经由所述互连通信地耦合到所述HFI的核心之间的共享存储器;
接收针对所述共享存储器的存储器操作;以及
根据所述存储器操作来向所述存储器发出存储器指令。
2.根据权利要求1所述的HFI,其中所述存储器操作是从所述核心接收的。
3.根据权利要求2所述的HFI,其中所述存储器操作被隧道传输,并且其中所述互连接口将去隧道传输所述存储器操作。
4.根据权利要求1所述的HFI,其中所述存储器操作针对所述核心。
5.根据权利要求4所述的HFI,其中所述互连接口将隧道传输所述存储器操作。
6.根据权利要求1至5中的任一项所述的HFI,其中所述存储器操作是存储器读取。
7.根据权利要求1至5中的任一项所述的HFI,其中所述存储器操作是存储器写入。
8.根据权利要求1至5中的任一项所述的HFI,其中所述存储器操作由所述协处理器和所述核心中的一个发起,并且其中所述缓存代理被配置成确定所述存储器操作针对由所述协处理器和所述核心中的另一个当前在使用中的存储器行。
9.根据权利要求8所述的HFI,其中所述缓存代理将发出窥探以使所述行无效。
10.根据权利要求1至5中的任一项所述的HFI,其中所述缓存代理实现从由MESI、MOSI、MOESI和MOESIF构成的组中选择的一致性协议。
11.根据权利要求1所述的HFI,其中所述互连接口包括用于所述存储器操作的专用信道,其中所述互连接口将直接将业务从所述专用信道路由到所述缓存代理。
12.根据权利要求1至5中的任一项所述的HFI,其中,所述存储器操作包括用于标识所述存储器操作的归属缓存代理的散列。
13.根据权利要求1所述的HFI,其中所述HFI包括与所述核心分离的集成电路。
14.一种集成电路,其包括根据权利要求1所述的HFI和核心,其中所述核心包括被配置成在所述存储器的共享区域中维持缓存一致性的缓存代理。
15.一种多芯片封装,其包括根据权利要求1所述的HFI和核心,其中所述核心包括被配置成在所述存储器的共享区域中维持缓存一致性的缓存代理。
16.一种或多种有形非暂时性计算机可读存储介质,在其上编码有指令以用于指示装置:
将所述装置通信地耦合到互连;
将所述装置通信地耦合到网络;
提供网络接口逻辑以提供所述互连与所述网络之间的通信;并且
提供缓存代理以:
将存储器的区域指定为所述装置与经由所述互连通信地耦合到所述装置的核心之间的共享存储器;
接收针对所述共享存储器的存储器操作;以及
根据所述存储器操作来向所述存储器发出存储器指令。
17.根据权利要求16所述的一种或多种有形非暂时性计算机可读介质,其中所述存储器操作针对所述核心。
18.根据权利要求16所述的一种或多种有形非暂时性计算机可读介质,其中互连接口将隧道传输所述存储器操作。
19.根据权利要求16所述的一种或多种有形非暂时性计算机可读介质,其中所述存储器操作由协处理器和所述核心中的一个发起,并且其中所述缓存代理被配置成确定所述存储器操作针对由所述协处理器和所述核心中的另一个当前在使用中的存储器行。
20.根据权利要求19所述的一种或多种有形非暂时性计算机可读介质,其中所述缓存代理将发出窥探以使所述行无效。
21.根据权利要求19所述的一种或多种有形非暂时性计算机可读介质,其中所述缓存代理实现从由MESI、MOSI、MOESI和MOESIF构成的组中选择的一致性协议。
22.根据权利要求16所述的一种或多种有形非暂时性计算机可读介质,其中所述存储器操作包括用于标识所述存储器操作的归属缓存代理的散列。
23.一种主机设备,包括:
处理器;
存储器;以及
缓存代理,所述缓存代理被配置成:
将所述存储器的区域映射到智能网络接口的共享存储器。
24.根据权利要求23所述的主机设备,还包括:
用于提供互连的逻辑;以及
用于提供专用信道的逻辑,所述专用信道用于提供主机处理器与智能网络接口的共享存储器之间的通信,所述智能网络接口包括网络接口逻辑、协处理器以及具有共享存储器区域的存储器。
25.根据权利要求23所述的主机设备,还包括***地址解码器,所述***地址解码器被配置成从多个智能网络接口接收存储器操作,并且提供用于归属所述存储器操作的散列。
CN201810167848.1A 2017-03-31 2018-02-28 用于智能网络接口卡的共享存储器 Pending CN108696461A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311526302.8A CN117544581A (zh) 2017-03-31 2018-02-28 用于智能网络接口卡的共享存储器

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/475,216 US11157422B2 (en) 2017-03-31 2017-03-31 Shared memory for intelligent network interface cards
US15/475216 2017-03-31

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202311526302.8A Division CN117544581A (zh) 2017-03-31 2018-02-28 用于智能网络接口卡的共享存储器

Publications (1)

Publication Number Publication Date
CN108696461A true CN108696461A (zh) 2018-10-23

Family

ID=61132167

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201810167848.1A Pending CN108696461A (zh) 2017-03-31 2018-02-28 用于智能网络接口卡的共享存储器
CN202311526302.8A Pending CN117544581A (zh) 2017-03-31 2018-02-28 用于智能网络接口卡的共享存储器

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202311526302.8A Pending CN117544581A (zh) 2017-03-31 2018-02-28 用于智能网络接口卡的共享存储器

Country Status (3)

Country Link
US (3) US11157422B2 (zh)
EP (1) EP3382548A1 (zh)
CN (2) CN108696461A (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109377778A (zh) * 2018-11-15 2019-02-22 济南浪潮高新科技投资发展有限公司 一种基于多路rdma和v2x的协同自动驾驶***及方法
CN111641622A (zh) * 2020-05-21 2020-09-08 中国人民解放军国防科技大学 一种融合网络接口卡、报文编码方法及其报文传输方法
CN111666229A (zh) * 2019-03-06 2020-09-15 爱思开海力士有限公司 存储器管理器、数据处理结构和生成地址转换信息的方法
CN111880611A (zh) * 2020-06-19 2020-11-03 深圳宏芯宇电子股份有限公司 用于快速交易的服务器及快速交易数据处理方法
CN112527494A (zh) * 2019-09-19 2021-03-19 富士通株式会社 信息处理设备和方法以及非暂态计算机可读记录介质
CN113360089A (zh) * 2020-03-04 2021-09-07 美光科技公司 用于存储器子***的命令批处理
CN113986146A (zh) * 2021-12-23 2022-01-28 湖南源科创新科技有限公司 轻量级的fc-san共享存储***及共享存储方法
CN114116533A (zh) * 2021-11-29 2022-03-01 海光信息技术股份有限公司 利用共享存储器存储数据的方法
CN114327262A (zh) * 2021-12-10 2022-04-12 山东云海国创云计算装备产业创新中心有限公司 一种用于智能网卡的维护端口映射的方法和装置
CN114761936A (zh) * 2019-12-13 2022-07-15 美光科技公司 具有计算能力的存储器模块
CN115686819A (zh) * 2021-07-23 2023-02-03 慧与发展有限责任合伙企业 用于实施基于网络接口的全归约操作的***和方法

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL238690B (en) 2015-05-07 2019-07-31 Mellanox Technologies Ltd Network-based computational accelerator
US10403352B2 (en) * 2017-02-22 2019-09-03 Micron Technology, Inc. Apparatuses and methods for compute in data path
US11283685B1 (en) * 2017-09-11 2022-03-22 LumaForge Inc. Shared storage systems and methods for collaborative workflows
US11469953B2 (en) 2017-09-27 2022-10-11 Intel Corporation Interworking of legacy appliances in virtualized networks
US11502948B2 (en) 2017-10-16 2022-11-15 Mellanox Technologies, Ltd. Computational accelerator for storage operations
US11005771B2 (en) 2017-10-16 2021-05-11 Mellanox Technologies, Ltd. Computational accelerator for packet payload operations
US11159627B1 (en) * 2017-10-20 2021-10-26 Parallels International Gmbh Seamless remote network redirection
US11750533B2 (en) * 2017-10-24 2023-09-05 Intel Corporation Hardware assisted virtual switch
US10841243B2 (en) 2017-11-08 2020-11-17 Mellanox Technologies, Ltd. NIC with programmable pipeline
US10708240B2 (en) * 2017-12-14 2020-07-07 Mellanox Technologies, Ltd. Offloading communication security operations to a network interface controller
US10824469B2 (en) 2018-11-28 2020-11-03 Mellanox Technologies, Ltd. Reordering avoidance for flows during transition between slow-path handling and fast-path handling
CN111327645B (zh) * 2018-11-28 2023-11-21 鸿合科技股份有限公司 一种共享网络方法及装置、电子设备
CN109586982B (zh) * 2019-01-04 2020-08-21 北京邮电大学 一种功能备份方法及装置
CN109634627B (zh) * 2019-01-23 2022-02-18 郑州云海信息技术有限公司 基于OpenStack平台管理FPGA设备的方法
US11025544B2 (en) * 2019-06-07 2021-06-01 Intel Corporation Network interface for data transport in heterogeneous computing environments
US10795819B1 (en) * 2019-06-26 2020-10-06 Intel Corporation Multi-processor system with configurable cache sub-domains and cross-die memory coherency
US11188377B2 (en) * 2019-10-04 2021-11-30 Arm Limited Writing zero data
IL276538B2 (en) 2020-08-05 2023-08-01 Mellanox Technologies Ltd A cryptographic device for data communication
CN114095153A (zh) 2020-08-05 2022-02-25 迈络思科技有限公司 密码数据通信装置
US11914903B2 (en) 2020-10-12 2024-02-27 Samsung Electronics Co., Ltd. Systems, methods, and devices for accelerators with virtualization and tiered memory
WO2022113332A1 (ja) * 2020-11-30 2022-06-02 日本電信電話株式会社 Nfvシステム
US11645104B2 (en) * 2020-12-22 2023-05-09 Reliance Jio Infocomm Usa, Inc. Intelligent data plane acceleration by offloading to distributed smart network interfaces
US11934333B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Storage protocol emulation in a peripheral device
US11934658B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Enhanced storage protocol emulation in a peripheral device
US11496599B1 (en) 2021-04-29 2022-11-08 Oracle International Corporation Efficient flow management utilizing control packets
US12015562B2 (en) 2021-04-29 2024-06-18 Oracle International Corporation Port addressing via packet header modification
CN115309694A (zh) 2021-05-07 2022-11-08 脸萌有限公司 片上集成电路、数据处理装置和方法
US12015557B2 (en) 2021-07-29 2024-06-18 Oracle International Corportion Efficient flow management utilizing unified logging
US11949604B2 (en) 2021-10-06 2024-04-02 Inernational Business Machines Corporation Integrated network switch operation
CN114285676B (zh) * 2021-11-24 2023-10-20 中科驭数(北京)科技有限公司 智能网卡、智能网卡的网络存储方法和介质
US12007921B2 (en) 2022-11-02 2024-06-11 Mellanox Technologies, Ltd. Programmable user-defined peripheral-bus device implementation using data-plane accelerator (DPA)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6148377A (en) * 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
US6615319B2 (en) * 2000-12-29 2003-09-02 Intel Corporation Distributed mechanism for resolving cache coherence conflicts in a multi-node computer architecture
WO2004025477A2 (en) * 2002-09-16 2004-03-25 Level 5 Networks Limited Network interface and protocol supporting mappings of virtual memory locations at different processing devices
US20090198918A1 (en) * 2008-02-01 2009-08-06 Arimilli Lakshminarayana B Host Fabric Interface (HFI) to Perform Global Shared Memory (GSM) Operations
US7826614B1 (en) * 2003-11-05 2010-11-02 Globalfoundries Inc. Methods and apparatus for passing initialization vector information from software to hardware to perform IPsec encryption operation
US8375184B2 (en) * 2009-11-30 2013-02-12 Intel Corporation Mirroring data between redundant storage controllers of a storage system
US20150127907A1 (en) * 2013-11-04 2015-05-07 Bahaa Fahim Method, apparatus and system for handling cache misses in a processor
US20170024352A1 (en) * 2015-07-21 2017-01-26 BigStream Solutions, Inc. Systems and methods for in-line stream processing of distributed dataflow based computations

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7743197B2 (en) 2006-05-11 2010-06-22 Emulex Design & Manufacturing Corporation System and method for virtualizing PCIe devices
KR100800589B1 (ko) * 2006-12-20 2008-02-04 엘지전자 주식회사 정보 처리 장치 및 그 운용방법
SE534142C2 (sv) * 2009-06-16 2011-05-10 Ikonoskop Ab Förfarande och system för lagring av data
US8918587B2 (en) * 2012-06-13 2014-12-23 International Business Machines Corporation Multilevel cache hierarchy for finding a cache line on a remote node
US9720827B2 (en) * 2014-11-14 2017-08-01 Intel Corporation Providing multiple memory modes for a processor including internal memory
US9489305B2 (en) * 2014-12-16 2016-11-08 Qualcomm Incorporated System and method for managing bandwidth and power consumption through data filtering
US9954799B2 (en) * 2015-05-14 2018-04-24 International Business Machines Corporation Adaptive service chain management
GB2546343A (en) * 2016-01-15 2017-07-19 Stmicroelectronics (Grenoble2) Sas Apparatus and methods implementing dispatch mechanisms for offloading executable functions

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6148377A (en) * 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
US6615319B2 (en) * 2000-12-29 2003-09-02 Intel Corporation Distributed mechanism for resolving cache coherence conflicts in a multi-node computer architecture
WO2004025477A2 (en) * 2002-09-16 2004-03-25 Level 5 Networks Limited Network interface and protocol supporting mappings of virtual memory locations at different processing devices
US7826614B1 (en) * 2003-11-05 2010-11-02 Globalfoundries Inc. Methods and apparatus for passing initialization vector information from software to hardware to perform IPsec encryption operation
US20090198918A1 (en) * 2008-02-01 2009-08-06 Arimilli Lakshminarayana B Host Fabric Interface (HFI) to Perform Global Shared Memory (GSM) Operations
US8375184B2 (en) * 2009-11-30 2013-02-12 Intel Corporation Mirroring data between redundant storage controllers of a storage system
US20150127907A1 (en) * 2013-11-04 2015-05-07 Bahaa Fahim Method, apparatus and system for handling cache misses in a processor
US20170024352A1 (en) * 2015-07-21 2017-01-26 BigStream Solutions, Inc. Systems and methods for in-line stream processing of distributed dataflow based computations

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109377778A (zh) * 2018-11-15 2019-02-22 济南浪潮高新科技投资发展有限公司 一种基于多路rdma和v2x的协同自动驾驶***及方法
CN111666229A (zh) * 2019-03-06 2020-09-15 爱思开海力士有限公司 存储器管理器、数据处理结构和生成地址转换信息的方法
CN111666229B (zh) * 2019-03-06 2023-04-18 爱思开海力士有限公司 存储器管理器、数据处理装置和生成地址转换信息的方法
CN112527494A (zh) * 2019-09-19 2021-03-19 富士通株式会社 信息处理设备和方法以及非暂态计算机可读记录介质
CN114761936A (zh) * 2019-12-13 2022-07-15 美光科技公司 具有计算能力的存储器模块
CN113360089A (zh) * 2020-03-04 2021-09-07 美光科技公司 用于存储器子***的命令批处理
CN111641622A (zh) * 2020-05-21 2020-09-08 中国人民解放军国防科技大学 一种融合网络接口卡、报文编码方法及其报文传输方法
CN111880611A (zh) * 2020-06-19 2020-11-03 深圳宏芯宇电子股份有限公司 用于快速交易的服务器及快速交易数据处理方法
CN115686819A (zh) * 2021-07-23 2023-02-03 慧与发展有限责任合伙企业 用于实施基于网络接口的全归约操作的***和方法
CN114116533A (zh) * 2021-11-29 2022-03-01 海光信息技术股份有限公司 利用共享存储器存储数据的方法
CN114116533B (zh) * 2021-11-29 2023-03-10 海光信息技术股份有限公司 利用共享存储器存储数据的方法
CN114327262A (zh) * 2021-12-10 2022-04-12 山东云海国创云计算装备产业创新中心有限公司 一种用于智能网卡的维护端口映射的方法和装置
CN114327262B (zh) * 2021-12-10 2024-03-08 山东云海国创云计算装备产业创新中心有限公司 一种用于智能网卡的维护端口映射的方法和装置
CN113986146A (zh) * 2021-12-23 2022-01-28 湖南源科创新科技有限公司 轻量级的fc-san共享存储***及共享存储方法

Also Published As

Publication number Publication date
US20240045814A1 (en) 2024-02-08
CN117544581A (zh) 2024-02-09
US20220204542A1 (en) 2022-06-30
US11157422B2 (en) 2021-10-26
US11809338B2 (en) 2023-11-07
US20180285288A1 (en) 2018-10-04
EP3382548A1 (en) 2018-10-03

Similar Documents

Publication Publication Date Title
CN108696461A (zh) 用于智能网络接口卡的共享存储器
US11379342B2 (en) Cache monitoring
CN108459988A (zh) 持续性远程直接存储器存取
US9300592B2 (en) Physical port sharing in a link aggregation group
US11599821B2 (en) Attached accelerator based inference service
CN104335180B (zh) 虚拟化i/o处理延迟的实时测量
US11422863B2 (en) Attached accelerator scaling
US20150263970A1 (en) Take-over of network frame handling in a computing environment
US11178063B2 (en) Remote hardware acceleration
AU2019295631B2 (en) Attached accelerator based inference service
CN111903109A (zh) 可超额预订资源分配
US11005968B2 (en) Fabric support for quality of service
US11327789B2 (en) Merged input/output operations from a plurality of virtual machines
US20230185732A1 (en) Transparent encryption
US20220086226A1 (en) Virtual device portability
DE102021133634A1 (de) Intelligente austauschbare modulare einheit für lokale kühlkreisläufe in einem rechenzentrums-kühlsystem
Fang et al. Future enterprise computing looking into 2020
US11960935B2 (en) Fault-tolerant accelerator based inference service
US20190042456A1 (en) Multibank cache with dynamic cache virtualization
US11347512B1 (en) Substitution through protocol to protocol translation
US20140082258A1 (en) Multi-server aggregated flash storage appliance
US10853129B1 (en) Accelerator based inference service
US11494621B2 (en) Attached accelerator selection and placement
EP4030284A1 (en) Virtual device portability

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination