CN114661409A - 处理数据分组以进行逻辑和虚拟交换机加速的方法和设备 - Google Patents

处理数据分组以进行逻辑和虚拟交换机加速的方法和设备 Download PDF

Info

Publication number
CN114661409A
CN114661409A CN202111367267.0A CN202111367267A CN114661409A CN 114661409 A CN114661409 A CN 114661409A CN 202111367267 A CN202111367267 A CN 202111367267A CN 114661409 A CN114661409 A CN 114661409A
Authority
CN
China
Prior art keywords
packet
memory
data packet
outbound
data packets
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
CN202111367267.0A
Other languages
English (en)
Inventor
A·蒂亚加图鲁
V·戈帕尔
T·罗斯
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
Publication of CN114661409A publication Critical patent/CN114661409A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/252Store and forward routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3018Input queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3027Output queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (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)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请涉及处理数据分组以进行逻辑和虚拟交换机加速的方法和设备。公开了在存储器中为逻辑和虚拟交换机加速处理数据分组的方法、设备、系统和制品。示例存储器包括:用于存储来自网络的入站数据分组的输入分组缓冲区;用于存储经由网络传输的出站数据分组的输出分组缓冲区;以及可编程逻辑,用于:从输入分组缓冲区读取入站数据分组;处理入站数据分组以确定出站数据分组;以及向输出分组缓冲区输出出站数据分组。

Description

处理数据分组以进行逻辑和虚拟交换机加速的方法和设备
技术领域
本发明一般涉及处理装置,并且更具体地,涉及处理数据分组以在存储器中进行逻辑和虚拟交换机加速的方法、系统、制品和设备。
背景技术
处理系统可以包括操作系统以使用处理系统的处理核心执行应用程序或虚拟机的指令。处理系统可进一步包括通信硬件(例如,网络接口控制器(NIC)),以将处理系统连接到计算机网络。通信硬件基于来自在处理单元上运行的应用程序的指令促进数据的发送和/或接收。
发明内容
本发明的实施例提供一种存储器电路系统,用于在存储器中交换数据分组,存储器电路系统包括:用于存储来自网络的入站数据分组的输入分组缓冲区;用于存储要经由网络传输的出站数据分组的输出分组缓冲区;以及可编程逻辑,用于:从输入分组缓冲区读取入站数据分组;处理入站数据分组以确定出站数据分组;以及向输出分组缓冲区输出出站数据分组。
本发明的实施例还提供至少一种计算机可读存储介质,包括计算机可读指令,在执行时,计算机可读指令使存储器中的可编程逻辑至少:实施由操作系统指定的分组处理协议;从输入缓冲区读取入站数据分组,入站数据分组来自网络;基于分组处理协议处理入站数据分组以确定出站数据分组;以及向输出缓冲区输出出站数据分组以使出站数据分组经由网络传输。
本发明的实施例还提供一种在存储器中交换数据分组的方法,方法包括:从输入分组缓冲区读取入站数据分组,入站数据分组来自网络;用存储器的可编程逻辑处理入站数据分组以确定出站数据分组;以及向输出分组缓冲区输出出站数据分组。
本发明的实施例还提供一种处理数据分组以在存储器中进行逻辑和虚拟交换机加速的存储器,存储器包括:用于存储来自网络的入站数据分组的第一装置;用于存储要经由网络传输的出站数据分组的第二装置;以及用于基于由来自操作系统的指令配置的协议处理入站数据分组以确定出站数据分组的装置,用于处理以从第一装置访问入站数据分组并向第二装置输出出站数据分组。
附图说明
图1是包括示例基础结构处理单元的计算系统的示例实施方式的框图。
图2是结合本文中公开的示例描述的处理系统的示例实施方式的框图。
图3是图1的示例系统存储器和示例交换机加速逻辑的示例实施方式的框图。
图4是图1的示例系统存储器、示例交换机加速逻辑和示例操作系统/管理程序的示例实施方式的额外框图。
图5至图6示出了代表可被执行以实施图2至图4的示例交换机加速逻辑和示例操作系统/管理程序的示例机器可读指令的流程图。
图7是被构造成执行图5至图6的指令以实施图2至图4的示例交换机加速逻辑和示例操作系统/管理程序的示例处理器平台的框图。
附图不按比例绘制。一般来说,相同的附图标记将遍及(多个)图和所附的书面描述用于指代相同或相似的部分。
当识别可单独提及的多个要素或部件时,在本文中使用描述符“第一”、“第二”、“第三”等。除非另有规定或基于其使用情境的理解,否则此类描述符并不旨在赋予优先权或在时间上的排序的任何含义,而只是作为用于单独提及多个要素或部件的标签,以便于理解所公开的示例。在一些示例中,描述符“第一”可以用来指代详细描述中的要素,而同一要素在权利要求中可以用不同的描述符,诸如“第二”或“第三”来指代。在此类情况下,应该理解此类描述符仅仅是为了便于提及多个要素或部件而使用。
具体实施方式
处理系统是包括一个或多个处理单元(例如,中央处理单元(CPU)、图形处理单元(GPU)等)的电子电路系统,该处理单元执行构成程序或工作负载的指令。处理单元可以包括一个或多个处理器核心,以经由操作系统(OS)或管理程序,基于来自应用程序的指令,通过访问来自主存储器的数据来执行指令。OS/管理程序是系统软件,其基于一组指令管理处理单元的硬件(例如,NIC、PHY、存储器等)。处理单元可进一步包括存储器和/或以其他方式与存储器通信。处理单元可以(例如,经由输入/输出(I/O))访问和存储与OS/管理程序的指令对应的来自存储器/在存储器中的数据。处理单元可进一步包括网络接口控制器(NIC)以经由网络接收和/或发送数据。
传统计算系统的硬件部件依靠应用程序和/或OS/管理程序的可编程软件来对由此类硬件部件获得和/或在此类硬件部件中存储的任何数据执行功能和/或逻辑。因此,即使是小的逻辑任务也需要I/O带宽和CPU/GPU/核心处理器资源来执行。为了减少I/O带宽并将CPU/GPU/核心从执行此类任务释放,可以利用包括可编程逻辑的增强型硬件部件来代替CPU和/或GPU执行计算任务。在一些示例中,在硬件部件中实施的可编程逻辑可能是有限的,但足以执行任务以消除执行任务所需的I/O和/或CPU/GPU资源。此类增强型硬件(在本文中称为基础结构处理单元(IPU))对应于包括一些可编程逻辑以执行特别任务的硬件部件,诸如存储器、NIC等。
IPU可以是智能NIC的增强版、存储器的增强版,和/或任何硬件部件的高级版。智能NIC是一种NIC,其通过向传统NIC添加功能(例如,虚拟交换机卸载、存储卸载、压缩、密码术、虚拟化等)来提供可编程的高性能联网能力。一些智能NIC提供卸载能力如安全(例如密钥存储)和其他虚拟化服务,以减少OS/虚拟机管理器(VMM)(例如管理程序)的整体开销。IPU通过输送以下装置来进一步增强智能NIC的功能:(a)高效的高性能软件可编程多核CPU/GPU,以用于支持基础结构服务如管理(例如遥测)、服务网格卸载和分发安全服务,(b)灵活和可编程的加速引擎(例如一组丰富的灵活和可编程的加速引擎,其为人工智能(AI)/机器学习、安全、远程通信、存储等卸载和改进应用性能,以及(c)基于流的接口,用于附接了xPU的高性能数据移动——外围部件互连快递(PCLe)和计算快递链接(CXL)(例如,主机和目标)、以太网和其他新兴能力。下面结合图1进一步描述IPU。
在虚拟交换和逻辑交换环境中,在NIC、智能NIC或IPU处获得的来自装置的数据被处理和/或操纵(例如,调整报头、减少生存时间(TTL)计数等)并传输到装置或网络中的另一个装置。在传统系统中,对于每个接收到的数据分组,CPU/GPU必须使用I/O访问来自存储器的数据、执行任务,并使用I/O将数据存储回存储器中。尽管获得、处理和存储单个数据分组所需的I/O带宽和CPU/GPU资源的量可能很小,但如果接收到的分组数量很高,则处理大量分组所需的I/O带宽和CPU/GPU资源的量也很高。因此,I/O和CPU/GPU可能没有带宽来执行其他任务。
本文中公开的示例利用系统的硬件部件中的逻辑(例如,存储器中加速)以用于交换和分组处理。以这种方式,在硬件(例如,存储器)中实施的逻辑可以处理/操纵传入的数据分组,并为NIC和/或IPU存储被操纵的数据分组,以在不使用处理系统的核心的情况下传输。例如,代替系统的CPU/GPU/核心访问、处理和存储每个入站数据分组,OS/管理程序240对硬件部件(例如系统存储器、NIC、IPU等)中实施的可编程逻辑进行编程,以执行入站数据的访问、处理和存储。以这种方式,本文中公开的示例减少了CPU/GPU处理资源的使用,并减少了传统的交换和/或分组处理技术的I/O带宽。
图1是包括示例IPU 102的示例计算系统100。IPU 102可以是其中加速器曾经直接连接到CPU(或GPU、其他处理单元等)的控制点。因此,使用IPU 102允许特别的功能/操作在不使用CPU/GPU的情况下发生,由此减少整体基础结构和数据移动负担。此外,使用IPU 102进一步有助于在IPU 102的控制点角色中提供云解决方案提供商(CSP)和租户之间更好的隔离。因为IPU 102是高度分布的,所以IPU 102可以为最终用户的数据和服务提供保护,还可以提供证明保护没有被折衷的可审计核算。
在图1的示例计算系统100中,示例IPU 102中的一个或多个可以执行本来可以由OS或访客OS(例如,安装在不同于主机操作系统的任一虚拟机(VM)上的软件)执行的任务。例如,资源管理、装置虚拟化、事件和使用记录、服务网格(路由、NAT、负载平衡)、可靠传送方案和/或虚拟交换机(vSwitch)可以由一个或多个IPU 102上的加速器和处理器执行。示例IPU 102中的一个或多个可以执行驱动程序以与主机系统上的OS或访客OS以及其他处理单元(xPU)或存储装置接合。
图1的示例IPU 102可以包括安全资源管理器、卸载电路系统、网络接口控制器、安全、信任根、资源组成、时间戳管理器、存储器、存储设备、处理器和/或加速器,用它们实施,和/或访问它们。
计算构造可以提供到本地主机或装置(例如,服务器、装置(例如,xPU))的连接。与本地主机或装置或智能NIC或另一个IPU的连接可以使用以下中的一个或多个来提供:外围部件互连快递(PCIe)、ARM AXI、
Figure BDA0003361110030000051
快速路径互连(QPI)、
Figure BDA0003361110030000052
超路径互连(UPI)、
Figure BDA0003361110030000053
片上系统构造(IOSF)、全路径、以太网、计算快递链接(CXL)、超传输、NVLink、高级微控制器总线架构(AMBA)互连、OpenCAPI、Z世代、CCIX、无限构造(IF)等。主机连接的各种实施例提供对称的存储器和高速缓存,以实现CPU、XPU和IPU之间的对等操作(例如,经由CXL.cache和CXL.mem)。
介质接口可以提供到远程智能NIC或另一个IPU或服务的连接。连接可以通过任何类型的网络介质(例如,有线或无线)和使用任何协议(例如,以太网、无线带宽、光纤通道、ATM等)提供。
在一些示例中,IPU 102可以是系统(例如,服务器的机架或数据中心)的根,并且可以管理IPU 102中和/或IPU 102外的计算资源(例如,CPU、GPU、XPU、存储设备、存储器等),代替作为管理图1的IPU 102中的一个或多个的主要部件的服务器/CPU/GPU。
在一些示例中,图1的IPU 102可以提供协调,以基于可用资源(例如,服务和装置)并通过考虑服务水平协议和延迟来决定在哪里执行工作负载,以确定是否从本地主机或从远程主机或池化资源分配资源(例如,CPU、GPU、XPU、存储设备、存储器)。当IPU 102中的一个被选择来执行工作负载时,安全资源管理器可以将工作卸载到CPU、GPU、xPU或其他装置,并且IPU 102可以加速分布式运行时间的连接,减少延迟,CPU、GPU并提高可靠性。例如,IPU102中的一个的安全资源管理器可以运行服务网格,以决定什么资源来执行工作负载,并提供L7(应用层)和远程过程调用(RPC)流量以完全绕过内核,使得用户空间应用程序可以直接与IPU 102通信(例如,IPU 102和应用程序可以共享存储器空间)。服务网格可以是可配置的、低延迟的基础结构层,其被设计成使用应用编程接口(API)(例如,通过RPC)处置应用微服务之间的通信。服务网格可以在容器化应用基础结构服务之间提供快速、可靠和安全的通信。服务网格可以提供包括服务发现、负载平衡、加密、可观察性、可追踪性、认证和授权以及支持断路器模式的关键能力。
通信可以通过图1的IPU 102中的一个或多个的介质接口通过介质转到NIC/智能NIC(用于跨节点通信)或环回到同一主机上的本地服务。通过IPU 102中的一个的介质接口到另一个IPU 102的通信然后可以使用通过本地IPU交换的xPU之间的共享存储器支持传送。使用IPU到IPU通信可以通过基于服务水平目标(SLO)的消息和工作处理的进入安排来减少延迟和抖动。例如,对于需要响应的数据库应用程序的请求,IPU 102中的一个可以优先处理,以最小化请求应用程序的停顿。IPU 102可以安排发布事件的优先级消息请求来执行SQL查询数据库,并且IPU 102可以构建发布SQL查询的微服务,并且查询被发送到适当的装置或服务。
图1的IPU 102中的一个或多个可以被动态地选择,以在包括节点中的IPU、xPU、CPU、GPU、存储设备、存储器和其他装置的可组合基础结构中运行给定的工作负载(例如,微服务)。
图2是示例处理系统200的示例实施方式的框图。图2的示例处理系统200包括(多个)示例核心202、示例OS/管理程序204、示例系统存储器206、示例输入/输出(I/O)208以及示例NIC/IPU 210/102。示例系统存储器206包括示例交换机加速逻辑207。尽管示例交换机加速逻辑207在示例系统存储器206中实施,但交换机加速逻辑207可以作为示例NIC/IPU210/102的一部分实施。示例NIC 210可以是传统NIC、智能NIC、图1的IPU 102等。
图2的示例处理系统200是任何类型的处理单元(例如,CPU、GPU、加速处理单元(APU)、通用GPU(GPGPU)等)。例如,处理系统200可以是嵌入式系统、现场可编程门阵列、共享存储器控制器、片上网络、联网系统,和/或包括硬件(例如,基于半导体的)处理器,存储器和/或高速缓存的任何其他电路系统。示例处理系统200利用处理器资源(例如,(多个)示例处理器核心202的逻辑电路系统)来执行指令以实施示例OS/管理程序204。图2的(多个)示例处理器核心202执行来自示例OS/管理程序204的指令(例如,工作负载)(例如,通过读取和/或写入数据)。处理系统200可以使得(多个)核心202中的一个或多个能够执行指令。
图2的示例OS/管理程序204是软件系统,其可以表现出一个或多个计算阶段以执行一个或多个任务。OS/管理程序204可以实施来自应用程序或虚拟机的指令。示例OS/管理程序204使用(多个)核心202的资源来执行指令,以执行一个或多个任务。如上所述,传统处理系统要求OS/管理程序204使用(多个)核心202来处理虚拟或逻辑交换协议中的入站数据分组。在此类传统示例中,OS/管理程序204使用(多个)核心202从系统存储器206使用示例I/O 208访问数据分组,由此使用CPU/GPU资源和I/O带宽来获得数据分组、处理数据分组,并将经处理的数据分组(在本文中也称为出站数据分组)存储回系统存储器206以传输出去。然而,图1的示例IPU 207和/或示例IPU 102在示例系统存储器206处执行此类任务,以节约I/O带宽和CPU/GPU资源。下面结合图4进一步描述示例OS/管理程序204。
图2的示例系统存储器206存储从示例NIC/IPU 210/102获得的数据。示例系统存储器206包括和/或以其他方式结合了示例交换机加速逻辑207。因为示例系统存储器206包括示例交换机加速逻辑207,所以示例系统存储器206是基于IPU的存储器,并且可以被称为一类IPU。尽管存储器206在本文中被示为系统存储器206,但更一般来说,存储器206可以对应于根据本发明的教导实施的任何存储器电路系统,以包括交换机加速逻辑207和相关联要素,以处理用于逻辑和虚拟交换机加速的数据分组。
图2的示例交换机加速逻辑207是在示例系统存储器206中实施的逻辑,以处理来自示例NIC/IPU 210/102的存储在示例系统存储器206中的数据分组。例如,交换机加速逻辑207可以通过替换和/或调整数据分组的报头、减少数据分组的生存时间(TTL)值等来处理获得的数据分组。示例交换机加速逻辑207包括接口以从示例OS/管理程序204获得关于如何实施交换机加速的指令。例如,OS/管理程序204可以传输关于用于存储获得的数据分组的存储器地址位置(例如队列缓冲区)的指令、用于处理和/或操纵获得的数据分组的逻辑,和/或关于用于存储被操纵的数据分组的存储器地址位置(例如队列缓冲区)的指令。以这种方式,示例NIC 210/IPU 102可以访问被操纵的数据分组,并经由网络连接(例如,以太网、Wi-Fi、蜂窝电话等)传输到装置。下面结合图3和图4进一步描述示例系统存储器206和/或示例交换机加速逻辑207。
图2的示例I/O 208是OS/管理程序204和存储器206之间的通信部件。I/O 208允许OS/管理程序204访问和/或存储来自示例系统存储器206/在示例系统存储器206中的数据。
图2的示例NIC/IPU 210/102是硬件和/或包括基于来自OS/管理程序204的指令安排数据传输的可编程逻辑的硬件。在一些示例中,NIC 210从系统存储器206拉出和/或读取数据以用于传输,并将数据存储在各种队列中(例如,对应于流量类别)。NIC 102可以是传统NIC、智能NIC或IPU 102。当示例NIC/IPU 210/102是智能NIC或IPU时,NIC/IPU 210、102包括可编程逻辑以执行特别操作、任务和/或功能,而不使用示例OS 204、I/O 208和/或(多个)核心202。例如,NIC/IPU 210/102可以包括示例交换机加速逻辑207,以访问获得的数据分组、操纵获得的数据分组,并存储被操纵的数据分组以用于后续传输。在此种示例中,NIC/IPU 210/102可以从示例系统存储器206访问数据分组并存储操纵的数据分组。在一些示例中,交换机加速逻辑207可以在NIC/IPU 210/102中实施,并且交换机加速逻辑207可以在示例NIC/IPU 210/102的本地存储器中的数据分组上操作。以这种方式,交换机加速可以在NIC/IPU 210/102处的数据分组上发生,而无需将数据分组存储在系统存储器206中。
图3是图2的基于IPU的系统存储器206的示例实施方式的框图。图3的示例的基于IPU的系统存储器206包括图2的示例交换机加速逻辑207。图3的示例的基于IPU系统存储器进一步包括示例存储器列(rank)302、304,以及示例存储器芯片306、308、310。示例存储器芯片306包括示例存储器单元312。示例交换机加速逻辑207包括示例部件接口313、示例目的地存储器地址发生器314和示例可编程逻辑316。尽管图3的系统存储器206被实施为动态随机访问存储器(DRAM),但系统存储器206可以由任何其他类型的存储器实施。
图3的示例系统存储器206被划分为两个列302、304。存储器列302、304是使用系统存储器206的存储器芯片306、308、310中的一些或全部创建的数据的块或区域。在一些示例中,存储器列302、304是连接到同一芯片选择的一组DRAM芯片,其可以同时被访问。然而,系统存储器206可以包括任何数量的列和/或芯片。每个芯片306、308、310等可以进一步被划分为一个或多个体(bank)。示例芯片306包括保留作为分组缓冲区的示例存储器单元312(例如,保留用于存储接收的分组或等待网络传输的分组的存储空间)。存储器单元312的存储器单元可以由通过行标识符和列标识符定义的存储器地址来识别。存储器单元312在逻辑上被分割,以保持输入和输出端口的队列中的数据分组用于传输(例如,NIC/IPU 210/102的输入和输出端口)。当NIC/IPU 210/102获得新的分组时,NIC/IPU 210/102将获得的数据分组存储在示例存储器单元312中。当NIC/IPU 210/102准备好传输数据分组时,NIC/IPU 210/102从存储器单元312拉出数据。
图3的示例部件接口313与OS/管理程序204接合,以接收关于如何对示例地址发生器314和可编程逻辑316进行编程和/或以其他方式实施它们的指令。例如,部件接口313可以接收转发/交换表信息以实施目的地地址发生器314。此外,部件接口313可以获得关于如何处理和/或操纵获得的数据分组的指令,作为虚拟交换和/或逻辑交换例程的一部分。以这种方式,OS/管理程序204仅发送一条指令以允许交换机加速逻辑207执行分组处理,由此释放CPU/GPU资源和/或I/O带宽用于其他操作。
图3的示例地址发生器314在获得数据分组时在示例存储器单元312的输入(也被称为入站)缓冲区队列中拉出和/或读取数据分组。因为地址发生器314从存储器单元312获得数据分组,所以地址发生器314知道与获得的数据分组的存储位置对应的存储器地址和/或缓冲区队列标识符。在一些示例中,可编程逻辑316从输入缓冲区获得新的数据分组,并将数据分组与数据分组被存储的存储器地址位置(或输入缓冲区队列的其他标识符)一起传输到地址发生器314。在一些示例中,地址发生器314和可编程逻辑316同时轮询和/或读取来自输入缓冲区的数据。示例地址发生器314可以将数据传递(例如,传输)到示例可编程逻辑316,并且可以在可编程逻辑316处理数据分组之后生成用于存储数据分组的地址(例如,对应于缓冲区队列)。示例地址发生器314可以是或包括转发/交换表、一个或多个交换机和/或多路复用器,以基于数据分组从哪里获得的存储器地址(例如,对应于输入到输出缓冲区映射的表)和/或基于允许NIC/IPU 210/102知道在经处理的数据准备好发送时从哪里拉出数据的任何协议,来选择目的地存储器地址。在示例可编程逻辑316处理数据分组之后,示例地址发生器314向对应于确定的目的地地址(例如,和/或输出(也称为出站)分组缓冲区和/或队列)的存储器单元312的驱动程序输出控制信号,以确保来自可编程逻辑316的被操纵的数据存储在目的地地址。
示例可编程逻辑316访问由NIC/IPU 210/102获得并存储在存储器单元312中的数据分组,并且根据预定的协议、操作和/或功能(例如,在部件接口313处从OS/管理程序204获得)等或其任何组合处理数据单元。尽管一些加速协议仅包括替换报头和/或减小数据分组的TTL值的二进制操作,但示例可编程逻辑316可以基于来自OS/管理程序204的指令执行任何类型的操纵。
图4是图2的示例的基于IPU的系统存储器206的示例实施方式与图2的示例OS/管理程序204和NIC/IPU 210结合的额外框图。图4包括图3的加速逻辑207的示例部件接口313、示例存储器地址发生器314和示例可编程逻辑316。图4进一步包括示例虚拟机、容器和/或应用程序400、402、示例NIC 404、示例输入分组缓冲区412和示例输出分组缓冲区414。示例分组缓冲区412、414是图3的存储器单元312的专用区段。示例OS/管理程序204包括示例VM/容器/应用程序接口406、示例可编程逻辑发生器408和示例部件接口410。
示例VM 400、402知道存储器中的交换机实施方式。在一些示例中,对应于存储器中的交换的数据可以在系统存储器206之间传输(例如,直接或经由OS/管理程序204)。此外,示例VM 400、402可以将信息传递到示例系统存储器206以根据本文中公开的示例进行处理(例如,经由存储器206将信息从VM 400传递到VM 402)。
图4的示例OS/管理程序204包括示例VM/容器/应用程序接口406,以从对应于如何实施示例加速逻辑207的示例VM/容器/应用程序400、402获得逻辑和/或虚拟交换机实施方式细节。逻辑和/或虚拟交换机实施方式细节可以包括输入端口(例如,将在系统存储器206中存储入站数据分组的输入分组缓冲区412)、输出端口(例如,将存储经处理的数据分组的输出分组缓冲区414)、输入到输出缓冲区映射(例如,用于在示例地址发生器314的转发表中实施)以及分组处理信息(例如,对应于如何处理数据分组的功能、操作和/或指令)。
图4的示例可编程逻辑指令发生器408将逻辑和/或虚拟交换机实施方式细节转换为实施方式指令,以对示例存储器地址发生器314和示例加速逻辑207的示例可编程逻辑316进行编程。示例可编程逻辑指令发生器408经由示例部件接口410将实施方式指令传输到示例加速逻辑207。
示例输入缓冲区412对应于图3的专用于输入数据分组的一组存储器单元312。输入缓冲区(例如,输入队列)对应于端口号和/或其他标识符。输入缓冲区412可以是最大传输单元(MTU)对准的,使得输入数据的报头可以被可编程逻辑314拦截和解释。示例可编程逻辑316可以对分组执行报头解释动作,并且示例存储器地址发生器314可以基于存储器地址发生器314的转发表为经处理的分组生成输出端口地址。转发表可以是查找表,其基于入站分组的存储位置、出站数据分组将被传输到的位置等来确定出站数据分组的存储位置。在一些示例中,读取和写入也与高速缓存线宽度对准。在一些此类示例中,地址和有效负载划分遵循高速缓存线的对准。在示例加速逻辑207从输入队列312获得并处理输入数据后,示例加速逻辑207基于由示例地址发生器314生成的地址信息和/或输出分组缓冲区信息将经处理的数据存储到输出缓冲区中的一个中。可以包括数据转移控制器,以确保一旦向分组缓冲区写入的数据完成(例如,以完整分组的形式),从帧边界和报头中的总分组大小值估计,分组/帧级别的数据副本准备好被处理。在输入缓冲区412处的完整分组触发了分组处理以及进入输出分组缓冲区414的分组副本。在一些示例中,输出分组缓冲区414对应于不同的传输位置和/或可对应于输入分组缓冲区412。因此,示例地址发生器314可以基于经处理的数据分组将被传输到的位置和/或对应的入站分组(例如,在处理之前的出站分组)被存储的输入分组缓冲区412的位置,选择输出分组缓冲区414中的一个来存储经处理的数据分组。
逻辑和虚拟交换机协议的存储器加速可以在不同级别应用。在一些示例中,连接到加速逻辑207的NIC(例如NIC 210、404)可以实施从一个端口到另一个端口的分组转发,而不需要CPU/GPU和/或系统存储器206之外的其他软件的帮助,以将分组从NIC的一个端口转发到另一个端口。在一些示例中,基于IPU的存储器系统206的内核模块可以实施控制平面功能(例如,建立转发表、处置异常、缓冲区控制和流量控制,例如,当输出分组缓冲区414全满时)。在一些示例中,示例加速逻辑207是用户空间服务管理器,它有助于用协调器使虚拟和逻辑交换机控制平面协作,以在全球范围内实施软件定义的联网原理(例如,建立逻辑分布式交换机)。在一些示例中,线程和进程可以实施示例加速逻辑207。在此类示例中,线程和过程可以异步地读取/写入到缓冲区队列412、414,以防止争夺。线程将轮询各自的队列,并且如果在输出端口队列轮询的特别周期期间没有发现分组,那么该分组将在后续的轮询周期期间被拉出。输出端口线程知道,分组不可被读取,直到完整分组被写入/呈现在输出分组缓冲区414中。
在一些示例中,输入分组缓冲区412是用于存储来自网络的入站数据分组的第一装置,输出分组缓冲区414是用于存储将经由网络传输的出站数据分组的第二装置,可编程逻辑316是用于基于由来自操作系统的指令配置的协议处理入站数据分组以确定出站数据分组的装置,该处理装置用于访问来自第一装置的入站数据分组,并将出站数据分组输出到第二装置,地址发生器314是用于确定出站数据分组将被存储在多个输出分组缓冲区中的第一个中的第二装置,其用于确定向驱动程序输出控制信号以使出站数据分组被存储在输出分组缓冲区中的第一个中,并且接口313是用于从操作系统获得指令的装置,该指令对应于转发表和/或对可编程逻辑316进行编程。
尽管在图3和图4中示出实施示例OS/管理程序204和示例加速逻辑207的示例方式,但是图3和/或图4中示出的要素、过程和/或装置中的一个或多个可以被组合、划分、重新布置、省略、消除和/或以任何其他方式实施。此外,图1、图2和/或图4的示例部件接口313、示例存储器地址发生器314、示例可编程逻辑316、示例VM/容器/应用程序接口406、示例可编程逻辑发生器408和示例部件接口410,和/或更一般地,示例处理系统100可以通过硬件、软件、固件和/或硬件、软件和/或固件的任何组合来实施。因此,例如,图3和/或图4的示例部件接口313、示例存储器地址发生器314、示例可编程逻辑316、示例VM/容器/应用程序接口406、示例可编程逻辑发生器408和示例部件接口410中的任一个,和/或更一般来说,示例OS/管理程序204和示例加速逻辑207可以由一个或多个模拟或数字电路、逻辑电路、可编程处理器、可编程控制器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、可编程逻辑器件(PLD)和/或现场可编程逻辑器件(FPLD)实施。当阅读本专利的设备或系统权利要求中的任一个以涵盖纯粹的软件和/或固件实施方式时,图3和/或图4的示例部件接口313、示例存储器地址发生器314、示例可编程逻辑316、示例VM/容器/应用程序接口406、示例可编程逻辑发生器408和示例部件接口410中的至少一个,和/或更一般来说,示例OS/管理程序204和示例加速逻辑207据此明确定义为包括非暂时性计算机可读存储装置或存储盘,诸如存储器、数字多功能光盘(DVD)、紧凑光盘(CD)、蓝光光盘等,其包括软件和/或固件。此外,除了图3和图4所示的那些要素、过程和/或装置之外或代替那些要素、过程和/或装置,示例OS/管理程序204和示例加速逻辑207可以包括一个或多个要素、过程和/或装置,和/或可以包括一个以上的任何或所有所示的要素、过程和装置。如本文中所用,短语“通信”,包括其变体,涵盖直接通信和/或通过一个或多个中间部件的间接通信,并且不需要直接的物理(例如,有线)通信和/或持续通信,而是另外包括在定期间隔、预定间隔、非定期间隔和/或一次性事件下的选择性通信。
代表用于实施图7的示例处理系统700的示例硬件逻辑、机器可读指令、硬件实施的状态机和/或其任何组合的流程图在图5至图6中示出。机器可读指令可以是一个或多个可执行程序或可执行程序的(多个)部分,用于由计算机处理器执行,诸如下面结合图7讨论的示例处理器平台700中所示的处理器712。(多个)程序可以体现在非临时性计算机可读存储介质上存储的软件中,该介质诸如CD-ROM、软盘、硬盘驱动器、DVD、蓝光光盘或与处理器712相关联的存储器,但全部(多个)程序和/或其部分可以可替代地由处理器712以外的装置执行和/或体现在固件或专用硬件中。此外,尽管参考图5至图6所示的流程图描述了(多个)示例程序,但可以可替代地使用实施图7的示例处理系统700的许多其他方法。例如,各框的执行顺序可以改变,和/或所描述的框中的一些可以改变、取消或组合。此外或可替代地,任何或所有的框可以由一个或多个硬件电路(例如,分立和/或集成的模拟和/或数字电路系统、FPGA、ASIC、比较器、运算放大器(运放)、逻辑电路等)实施,其被构造成在不执行软件或固件的情况下执行对应操作。
本文中描述的机器可读指令可以以压缩格式、加密格式、碎片格式、编译格式、可执行格式、打包格式等中的一种或多种存储。如本文中描述的机器可读指令可以存储为数据(例如,指令的部分、代码、代码的表示等),可以利用该数据来创建、制造和/或产生机器可执行指令。例如,机器可读指令可被分割并存储在一个或多个存储装置和/或计算装置(例如,服务器)上。机器可读指令可能需要安装、修改、适配、更新、组合、补充、配置、解密、解压、解包、分发、重新分配、编译等中的一项或多项,以便使其可被计算装置和/或其他机器直接读取、解释和/或执行。例如,机器可读指令可以存储在多个部分中,这些部分被单独压缩、加密并存储在不同的计算装置上,其中这些部分在解密、解压和组合时形成一组可执行指令,其实施诸如本文中描述的程序。
在另一个示例中,机器可读指令可被存储在其可被计算机读取的状态中,但是需要添加库(例如,动态链接库(DLL))、软件开发套件(SDK)、应用编程接口(API)等,以便在特别计算装置或其他装置上执行指令。在另一个示例中,在机器可读指令和/或(多个)对应程序可以全部或部分执行之前,机器可读指令可能需要被配置(例如,存储的设置、输入数据、记录的网络地址等)。因此,所公开的机器可读指令和/或(多个)对应程序旨在涵盖此类机器可读指令和/或(多个)程序,而不考虑机器可读指令和/或(多个)程序在存储或以其他方式静止或传送时的特别格式或状态。
本文中描述的机器可读指令可以通过任何过去、现在或未来的指令语言、脚本语言、编程语言等表示。例如,机器可读指令可以使用以下语言中的任一种表示:C、C++、Java、C#、Perl、Python、JavaScript、超文本标记语言(HTML)、结构化查询语言(SQL)、Swift等。
如上所述,图5至图6的示例过程可以使用存储在非暂时性计算机和/或机器可读介质上的可执行指令(例如,计算机和/或机器可读指令)来实施,该介质诸如硬盘驱动器、闪存、只读存储器、紧凑光盘、数字多功能光盘、高速缓存、随机访问存储器和/或任何其他存储装置或存储盘,其中信息在任何持续时间(例如,延长的时间段、永久、短暂、暂时缓冲和/或高速缓存信息)存储。如本文中所用,术语非暂时性计算机可读介质被明确定义为包括任何类型的计算机可读存储装置和/或存储盘,并排除传播信号和排除传输介质。
“包括”和“包含”(以及其所有形式和时态)在本文中用作开放式术语。因此,每当权利要求采用任何形式的“包括”或“包含”(例如,包括、包含、具有等)作为序言或在任何种类的权利要求叙述内,应理解额外的要素、术语等可以存在而不落在对应的权利要求或叙述的范围之外。如本文中所用,当短语“至少”在例如权利要求的序言中用作过渡术语时,它是开放式的,其方式与术语“包括”和“包含”的开放式相同。术语“和/或”在例如以形式诸如A、B和/或C使用时,是指A、B、C的任何组合或子集,诸如(1)仅A,(2)仅B,(3)仅C,(4)A与B,(5)A与C,(6)B与C,以及(7)A与B及与C。如本文中在描述结构、部件、项目、物体和/或事物的上下文中所用,短语“A和B中的至少一个”意指包括以下中的任一个的实施方式:(1)至少一个A,(2)至少一个B,以及(3)至少一个A和至少一个B。类似地,如本文中在描述结构、部件、项目、物体和/或事物的上下文中所用,短语“A或B中的至少一个”意指包括以下中的任一个的实施方式:(1)至少一个A,(2)至少一个B,以及(3)至少一个A和至少一个B。如本文中在描述过程、指令、动作、活动和/或步骤的执行或实行的上下文中所用,短语“A和B中的至少一个”意指包括以下中的任一个的实施方式:(1)至少一个A,(2)至少一个B,以及(3)至少一个A和至少一个B。类似地,如本文中在描述过程、指令、动作、活动和/或步骤的执行或实行的上下文中所用,短语“A或B中的至少一个”意指包括以下中的任一个的实施方式:(1)至少一个A,(2)至少一个B,以及(3)至少一个A和至少一个B。
如本文中所用,单数引用(例如,“一”、“第一”、“第二”等)并不排除多个。如本文中所用的术语“一”实体,是指该实体的一个或多个。术语“一”、“一个或多个”和“至少一个”在本文中可以互换使用。此外,尽管单独列出,但多个装置、要素或方法动作可由例如单个单元或处理器实施。此外,尽管单独特征可被包括在不同的示例或权利要求中,但这些可能被组合,而且被包括在不同的示例或权利要求中并不意味着特征的组合不是可行的和/或有利的。
图5示出了代表示例机器可读指令500的流程图,该示例机器可读指令可被执行以实施示例应用程序104(图2和/或4)以在硬件中设置逻辑和虚拟交换机加速。尽管图5的流程图结合示例处理系统200来描述,但可以利用其他(多个)类型的(多个)处理单元来代替。
在框502,示例可编程逻辑发生器408确定示例VM/容器/应用程序接口406已从虚拟机、容器和/或应用程序接口406获得实施方式细节。如上所述,实施方式细节可以包括输入端口(例如,将在系统存储器206中存储入站数据分组的输入分组缓冲区412)、输出端口(例如,将存储经处理的数据分组的输出分组缓冲区414)、输入到输出缓冲区映射,和/或分组处理信息(例如,对应于如何处理数据分组的功能、操作和/或指令)。
如果示例可编程逻辑发生器408确定示例VM/容器/应用程序接口406没有获得实施方式细节(框502:否),那么控制结束。如果示例可编程逻辑发生器408确定示例VM/容器/应用程序接口406已获得实施方式细节(框502:是),则示例可编程逻辑发生器408将实施方式细节转换为实施方式指令(框504),该实施方式指令可由示例加速逻辑207用于编程和/或配置存储器地址发生器314和/或可编程逻辑316,以基于实施方式细节执行虚拟交换和/或逻辑交换。
在框506,示例可编程逻辑发生器408定义将被保留用于输入数据和输出数据的存储器单元312的输入和输出端口(例如,输入分组缓冲区412和输出分组缓冲区414)。示例可编程逻辑发生器408可以基于协议、用户和/或制造商偏好,和/或基于来自应用程序、VM等的指令来定义端口。在框508,示例可编程逻辑发生器408使用示例部件接口410将实施方式指令和定义的端口传输到示例的基于IPU的系统存储器206和/或到示例NIC/IPU 210/102。基于IPU的系统存储器206的示例加速逻辑207使用实施方式指令对目的地地址发生器314和/或可编程逻辑316进行编程,并且NIC/IPU 210/102可以使用定义的端口来知道在哪里存储输入数据和/或访问示例系统存储器206中/来自示例系统存储器206的输出数据。
图6示出了代表示例机器可读指令600的流程图,该示例机器可读指令可被执行以实施示例加速逻辑207(图2和图/或3)以在硬件中实施逻辑和虚拟交换机加速。尽管图6的流程图结合示例处理系统200来描述,但可以利用其他(多个)类型的(多个)处理单元来代替。例如,指令600可以与在NIC/IPU 210/102中对本地存储器和/或系统存储器206中的数据实施的加速逻辑207结合使用。
在框602,示例部件接口313确定是否已从OS/管理程序204获得实施方式指令。如果示例部件接口313确定没有从OS/管理程序204获得实施方式指令(框602:否),则控制结束。如果示例部件接口313确定没有从OS/管理程序204获得实施方式指令(框602:是),则示例可编程逻辑316对逻辑进行编程以实施在实施方式指令中定义的功能、操作等,并且示例存储器地址发生器314基于实施方式指令实施转发表,该转发表定义了经处理的数据分组的存储位置(框604)。
在框606,示例存储器地址发生器314和/或示例可编程逻辑316确定数据分组是否已进入输入缓冲区队列412。例如,存储器地址发生器314、可编程逻辑316或另一装置可以读取和/或轮询输入缓冲区412的条目,以识别新数据是否已存储在示例输入缓冲区412中。如果示例存储器地址发生器314和/或示例可编程逻辑316确定数据分组没有进入输入缓冲区(框606:否),则控制继续到框616,如下面进一步描述。如果示例存储器地址发生器314和/或示例可编程逻辑316确定数据分组已进入输入缓冲区(框606:是),则示例存储器地址发生器314确定用于在处理后要存储的数据分组的存储器地址位置(框608)。存储器地址发生器314可以基于在示例存储器地址发生器314中实施的转发表(例如,基于实施方式指令)来确定目的存储器地址位置。
在框610,示例可编程逻辑316基于实施方式指令处理数据分组。例如,实施方式指令可以阐述可编程逻辑316对数据分组执行的功能或操作(例如,重写或调整数据分组的报头,使TTL计数器减量等)。在框612,示例存储器地址控制器将一个或多个控制信号输出到对应于存储器单元312的驱动程序,以使由示例可编程逻辑316输出的数据存储在对应于由存储器地址发生器314确定的存储器地址位置的输出分组缓冲区中。同时,可编程逻辑316输出经处理的数据分组,由此使经处理的数据分组存储在对应于输出分组缓冲区414的确定的存储器地址位置。
在框614,示例部件接口313确定后续数据分组是否已进入输入缓冲区队列412。如果示例部件接口313确定后续数据分组已进入输入缓冲区队列412(框614:是),则控制返回到框608以处理后续数据分组。如果示例部件接口313确定后续数据分组没有进入输入缓冲区队列412(框614:否),则示例部件接口313确定本地和/或虚拟交换机实施方式协议是否完成(框616)。例如,该协议可以基于来自示例OS/管理程序204的指令而完成。如果示例部件接口313确定本地和/或虚拟交换机实施方式协议未完成(框616:否),则控制返回到框606。如果示例部件接口313确定本地和/或虚拟交换机实施方式协议完成(框616:是),则控制结束。
图7是被构造成执行图5和图6的指令以实施图3和图4的加速逻辑207和/或示例OS/管理程序204的部件的示例处理器平台700的框图。处理器平台700可以是例如服务器、个人计算机、工作站、自学习机器(例如,神经网络)、移动装置(例如,手机、智能电话、平板计算机诸如iPadTM),或任何其他类型的计算装置。
所示示例的处理器平台700包括处理器712。所示示例的处理器712是硬件。例如,处理器712可以由一个或多个集成电路、逻辑电路、微处理器、GPU、DSP或来自任何所期望系列或制造商的控制器实施。硬件处理器可以是基于半导体(例如,基于硅)的装置。在该示例中,处理器712实施图3和/或图4的示例部件接口313、示例存储器地址发生器314、示例可编程逻辑316、示例VM/容器/应用程序接口406、示例可编程逻辑发生器408和示例部件接口410。
所示示例的处理器712包括本地存储器713(例如,高速缓存)。所示示例的处理器712经由总线718与包括易失性存储器714和非易失性存储器716的主存储器通信。易失性存储器714可以由同步动态随机访问存储器(SDRAM)、动态随机访问存储器(DRAM)、
Figure BDA0003361110030000191
动态随机访问存储器
Figure BDA0003361110030000192
和/或任何其他类型的随机访问存储器装置来实施。非易失性存储器716可以由闪存和/或任何其他所期望类型的存储器装置实施。对主存储器714、716的访问由存储器控制器控制。
所示示例的处理器平台700还包括接口电路720。接口电路720可以由任何类型的接口标准实施,诸如以太网接口、通用串行总线(USB)、
Figure BDA0003361110030000193
接口、近场通信(NFC)接口和/或PCI express接口。
在所示示例中,一个或多个输入装置722连接到接口电路720。(多个)输入装置722允许用户将数据和/或命令输入到处理器712中。(多个)输入装置可以通过例如音频传感器、麦克风、照相机(静态或视频)、键盘、按钮、鼠标、触摸屏、轨迹板、轨迹球、等点鼠标(isopoint)和/或语音识别系统实施。
一个或多个输出装置724也连接到所示示例的接口电路720。输出装置724可以通过例如显示装置(例如,发光二极管(LED)、有机发光二极管(OLED)、液晶显示器(LCD)、阴极射线管显示器(CRT)、原位开关(IPS)显示器、触摸屏等)、触觉输出装置、打印机和/或扬声器实施。因此,所示示例的接口电路720通常包括图形驱动卡、图形驱动芯片和/或图形驱动处理器。
所示示例的接口电路720还包括通信装置,例如发射器、接收器、收发器、调制解调器、住宅网关、无线接入点和/或网络接口,以促进经由网络726与外部机器(例如,任何种类的计算装置)交换数据。该通信可以经由例如以太网连接、数字订户线(DSL)连接、电话线连接、同轴电缆系统、卫星系统、现场线无线系统、蜂窝电话系统等。
所示示例的处理器平台700还包括用于存储软件和/或数据的一个或多个大容量存储装置728。此类大容量存储装置728的示例包括软盘驱动器、硬盘驱动器、紧凑光盘驱动器、蓝光光盘驱动器、独立磁盘冗余阵列(RAID)系统和数字多功能光盘(DVD)驱动器。在一些示例中,示例本地存储器713、示例易失性存储器714、示例非易失性存储器715和/或示例大容量存储器728中的任一个可以实施示例系统存储器206。
图5至图6的机器可执行指令732可以存储在大容量存储装置728中、易失性存储器714中、非易失性存储器716中和/或可移除的非暂时性计算机可读存储介质如CD或DVD上。
本文中公开了处理数据分组以在存储器中进行逻辑和虚拟交换机加速的示例方法、设备、系统和制品。进一步的示例及其组合包括以下内容。
示例1包括用于在存储器中交换数据分组的存储器电路系统,该存储器电路系统包括:用于存储来自网络的入站数据分组的输入分组缓冲区、用于存储要经由网络传输的出站数据分组的输出分组缓冲区,以及可编程逻辑,其用于:从输入分组缓冲区读取入站数据分组、处理入站数据分组以确定出站数据分组,以及向输出分组缓冲区输出出站数据分组。
示例2包括示例1的存储器电路系统,其中输出分组缓冲区是多个输出分组缓冲区中的第一个,并且进一步包括地址发生器,以基于查找表确定出站数据分组要被存储在多个输出分组缓冲区中的第一个中,并且向驱动程序输出控制信号以使出站数据分组被存储在输出分组缓冲区中的第一个处。
示例3包括示例1至2的存储器电路系统,其中地址发生器基于转发表确定出站数据分组要被存储在输出分组缓冲区中。
示例4包括示例1至3的存储器电路系统,进一步包括部件接口以获得与转发表的实施方式对应的指令。
示例5包括示例1至4的存储器电路系统,进一步包括部件接口以从操作系统获得指令,以对可编程逻辑进行编程以根据协议处理入站数据分组。
示例6包括示例1至5的存储器电路系统,其中可编程逻辑在不调用中央处理单元的资源的情况下处理入站数据分组。
示例7包括示例1至6的存储器电路系统,进一步包括存储器单元,输入分组缓冲区包括第一组存储器单元,并且输出分组缓冲区包括第二组存储器单元。
示例8包括至少一种计算机可读存储介质,其包括计算机可读指令,该指令在执行时使存储器中的可编程逻辑至少:实施由操作系统指定的分组处理协议,从输入缓冲区读取入站数据分组,该入站数据分组来自网络,基于分组处理协议处理入站数据分组以确定出站数据分组,并向输出缓冲区输出出站数据分组以使出站数据分组经由网络传输。
示例9包括示例8的至少一种计算机可读存储介质,其中指令使可编程逻辑基于查找表确定出站数据分组要被存储在多个输出分组缓冲区中的第一个中,并且向驱动程序输出控制信号以使出站数据分组被存储在输出分组缓冲区中的第一个处。
示例10包括示例8至9的至少一种计算机可读存储介质,其中指令使可编程逻辑基于转发表确定出站数据分组要被存储在输出缓冲区中。
示例11包括示例8至10的至少一种计算机可读存储介质,其中指令使可编程逻辑从操作系统获得对应于转发表的数据。
示例12包括示例8至11的至少一种计算机可读存储介质,其中指令使可编程逻辑在不调用中央处理单元的资源的情况下处理入站数据分组。
示例13包括示例8至12的至少一种计算机可读存储介质,其中输入缓冲区包括第一组存储器单元,并且出站数据分组包括第二组存储器单元。
示例14包括一种在存储器中交换数据分组的方法,该方法包括:从输入分组缓冲区读取入站数据分组,该入站数据分组来自网络,用存储器的可编程逻辑处理入站数据分组以确定出站数据分组,以及向输出分组缓冲区输出出站数据分组。
示例15包括示例14的方法,进一步包括基于查找表确定出站数据分组要被存储在多个输出分组缓冲区中的第一个中,并且向驱动程序输出控制信号以使出站数据分组被存储在输出分组缓冲区中的第一个处。
示例16包括示例14至15的方法,进一步包括基于转发表确定出站数据分组要被存储在输出分组缓冲区中。
示例17包括示例14至16的方法,进一步包括获得对应于转发表的指令。
示例18包括示例14至17的方法,进一步包括从操作系统获得指令以对可编程逻辑进行编程以根据协议处理入站数据分组。
示例19包括示例14至18的方法,其中入站数据分组的处理在不调用中央处理单元的资源的情况下执行。
示例20包括示例15至19的方法,其中输入分组缓冲区包括第一组存储器单元,并且输出分组缓冲区包括第二组存储器单元。
示例21包括一种在存储器中处理用于逻辑和虚拟交换机加速的数据分组的存储器,该存储器包括用于存储来自网络的入站数据分组的第一装置、用于存储要经由网络传输的出站数据分组的第二装置,以及用于基于由来自操作系统的指令配置的协议处理入站数据分组以确定出站数据分组的装置,该装置用于处理以从第一装置访问入站数据分组并向第二装置输出出站数据分组。
示例22包括示例21的存储器,进一步包括用于确定出站数据分组要被存储在多个输出分组缓冲区中的第一个中的第二装置,该装置用于处理以向驱动程序输出控制信号以使出站数据分组被存储在输出分组缓冲区中的第一个处。
示例23包括示例21至22的存储器,其中用于确定的第二装置基于转发表确定出站数据分组要被存储在用于存储的第二装置中。
示例24包括示例21至23的存储器,进一步包括用于获得对应于转发表的指令的装置。
示例25包括示例21至24的存储器,进一步包括用于从操作系统获得指令的装置,该指令对用于处理以使用处理协议对入站数据分组进行编程的装置进行编程。
示例26包括示例21至25的存储器,其中用于处理的装置在不使用中央处理单元的资源的情况下处理入站数据分组。
示例27包括示例21至16的存储器,进一步包括存储器单元,第一装置包括第一组存储器单元,并且第二装置包括第二组存储器单元。
从上述内容将理解,本文中已公开了示例方法、设备和制品,以处理数据分组用于存储器中的逻辑和虚拟交换机加速。所公开的方法、设备和制品在存储器中使用可编程逻辑来处理用于逻辑和/或虚拟交换协议的数据分组,而不是让OS从存储器和处理器获得数据。以这种方式,节约了CPU/GPU资源和I/O带宽,以释放操作系统执行其他任务。因此,方法、设备和制品相应地针对计算机功能的一个或多个改进。
尽管本文中已公开了某些示例方法、设备和制品,但本专利的覆盖范围不限于此。相反,本专利覆盖公平地落入本专利的权利要求的范围内的所有方法、设备和制品。

Claims (25)

1.一种存储器电路系统,用于在存储器中交换数据分组,所述存储器电路系统包括:
用于存储来自网络的入站数据分组的输入分组缓冲区;
用于存储要经由所述网络传输的出站数据分组的输出分组缓冲区;以及
可编程逻辑,用于:
从所述输入分组缓冲区读取所述入站数据分组;
处理所述入站数据分组以确定所述出站数据分组;以及
向所述输出分组缓冲区输出所述出站数据分组。
2.根据权利要求1所述的存储器电路系统,其中所述输出分组缓冲区是多个输出分组缓冲区中的第一输出分组缓冲区,并且进一步包括地址发生器以:
基于查找表确定所述出站数据分组要被存储在所述多个输出分组缓冲区中的所述第一输出分组缓冲区中;以及
向驱动程序输出控制信号以使所述出站数据分组被存储在所述输出分组缓冲区中的所述第一输出分组缓冲区处。
3.根据权利要求2所述的存储器电路系统,其中所述地址发生器基于转发表确定所述出站数据分组要被存储在所述输出分组缓冲区中。
4.根据权利要求3所述的存储器电路系统,进一步包括部件接口以获得与所述转发表的实施方式对应的指令。
5.根据权利要求1至3中任一项所述的存储器电路系统,进一步包括部件接口以从操作系统获得指令,以对所述可编程逻辑进行编程以根据协议处理所述入站数据分组。
6.根据权利要求1至3中任一项所述的存储器电路系统,其中所述可编程逻辑在不调用中央处理单元的资源的情况下处理所述入站数据分组。
7.根据权利要求1至3中任一项所述的存储器电路系统,进一步包括存储器单元,所述输入分组缓冲区包括所述存储器单元的第一组,并且所述输出分组缓冲区包括所述存储器单元的第二组。
8.至少一种计算机可读存储介质,包括计算机可读指令,在执行时,所述计算机可读指令使存储器中的可编程逻辑至少:
实施由操作系统指定的分组处理协议;
从输入缓冲区读取入站数据分组,所述入站数据分组来自网络;
基于所述分组处理协议处理所述入站数据分组以确定出站数据分组;以及
向输出缓冲区输出所述出站数据分组以使所述出站数据分组经由所述网络传输。
9.根据权利要求8所述的至少一种计算机可读存储介质,其中所述指令使所述可编程逻辑:
基于查找表确定所述出站数据分组要被存储在多个输出分组缓冲区中的第一输出分组缓冲区中;以及
向驱动程序输出控制信号以使所述出站数据分组被存储在所述输出分组缓冲区中的所述第一输出分组缓冲区处。
10.根据权利要求9所述的至少一种计算机可读存储介质,其中所述指令使所述可编程逻辑基于转发表确定所述出站数据分组要被存储在所述输出缓冲区中。
11.根据权利要求10所述的至少一种计算机可读存储介质,其中所述指令使所述可编程逻辑从所述操作系统获得对应于所述转发表的数据。
12.根据权利要求8至12中任一项所述的至少一种计算机可读存储介质,其中所述指令使所述可编程逻辑在不调用中央处理单元的资源的情况下处理所述入站数据分组。
13.根据权利要求8至12中任一项所述的至少一种计算机可读存储介质,其中所述输入缓冲区包括存储器单元的第一组,并且所述出站数据分组包括所述存储器单元的第二组。
14.一种在存储器中交换数据分组的方法,所述方法包括:
从输入分组缓冲区读取入站数据分组,所述入站数据分组来自网络;
用所述存储器的可编程逻辑处理所述入站数据分组以确定出站数据分组;以及
向输出分组缓冲区输出所述出站数据分组。
15.根据权利要求14所述的方法,进一步包括:
基于查找表确定所述出站数据分组要被存储在所述多个输出分组缓冲区中的第一输出分组缓冲区中;以及
向驱动程序输出控制信号以使所述出站数据分组被存储在所述输出分组缓冲区中的所述第一输出分组缓冲区处。
16.根据权利要求15所述的方法,进一步包括基于转发表确定所述出站数据分组要被存储在所述输出分组缓冲区中。
17.根据权利要求16所述的方法,进一步包括获得对应于所述转发表的指令。
18.根据权利要求14至17中任一项所述的方法,进一步包括从操作系统获得指令以对所述可编程逻辑进行编程以根据协议处理所述入站数据分组。
19.根据权利要求14至17中任一项所述的方法,其中所述入站数据分组的处理在不调用中央处理单元的资源的情况下执行。
20.根据权利要求14至17中任一项所述的方法,其中所述输入分组缓冲区包括存储器单元的第一组,并且所述输出分组缓冲区包括所述存储器单元的第二组。
21.一种处理数据分组以在存储器中进行逻辑和虚拟交换机加速的存储器,所述存储器包括:
用于存储来自网络的入站数据分组的第一装置;
用于存储要经由所述网络传输的出站数据分组的第二装置;以及
用于基于由来自操作系统的指令配置的协议处理所述入站数据分组以确定所述出站数据分组的装置,用于处理以从所述第一装置访问所述入站数据分组并向所述第二装置输出所述出站数据分组。
22.根据权利要求21所述的存储器,进一步包括用于确定所述出站数据分组要被存储在多个输出分组缓冲区中的第一输出分组缓冲区中的第二装置,用于处理以向驱动程序输出控制信号以使所述出站数据分组被存储在所述输出分组缓冲区中的所述第一输出分组缓冲区处。
23.根据权利要求22所述的存储器,其中用于确定的第二装置基于转发表确定所述出站数据分组要被存储在用于存储的第二装置中。
24.根据权利要求23所述的存储器,进一步包括用于获得对应于所述转发表的指令的装置。
25.根据权利要求21至24中任一项所述的存储器,进一步包括用于从所述操作系统获得指令的装置,以对用于处理以使用处理协议对所述入站数据分组进行编程的装置进行编程。
CN202111367267.0A 2020-12-23 2021-11-18 处理数据分组以进行逻辑和虚拟交换机加速的方法和设备 Pending CN114661409A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/133,194 US20210149707A1 (en) 2020-12-23 2020-12-23 Methods and apparatus to process data packets for logical and virtual switch acceleration in memory
US17/133,194 2020-12-23

Publications (1)

Publication Number Publication Date
CN114661409A true CN114661409A (zh) 2022-06-24

Family

ID=75909980

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111367267.0A Pending CN114661409A (zh) 2020-12-23 2021-11-18 处理数据分组以进行逻辑和虚拟交换机加速的方法和设备

Country Status (3)

Country Link
US (1) US20210149707A1 (zh)
EP (1) EP4020933A1 (zh)
CN (1) CN114661409A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116723058A (zh) * 2023-08-10 2023-09-08 井芯微电子技术(天津)有限公司 网络攻击检测和防护方法和装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10237171B2 (en) * 2016-09-20 2019-03-19 Intel Corporation Efficient QoS support for software packet processing on general purpose servers
US11489791B2 (en) * 2018-10-31 2022-11-01 Intel Corporation Virtual switch scaling for networking applications

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116723058A (zh) * 2023-08-10 2023-09-08 井芯微电子技术(天津)有限公司 网络攻击检测和防护方法和装置
CN116723058B (zh) * 2023-08-10 2023-12-01 井芯微电子技术(天津)有限公司 网络攻击检测和防护方法和装置

Also Published As

Publication number Publication date
US20210149707A1 (en) 2021-05-20
EP4020933A1 (en) 2022-06-29

Similar Documents

Publication Publication Date Title
US11249779B2 (en) Accelerator interconnect assignments for virtual environments
US11372802B2 (en) Virtual RDMA switching for containerized applications
US20220286399A1 (en) Hardware queue scheduling for multi-core computing environments
Jeong et al. {mTCP}: a Highly Scalable User-level {TCP} Stack for Multicore Systems
US9665921B2 (en) Adaptive OpenGL 3D graphics in virtual desktop infrastructure
US7996569B2 (en) Method and system for zero copy in a virtualized network environment
US11321256B2 (en) Persistent kernel for graphics processing unit direct memory access network packet processing
US11178063B2 (en) Remote hardware acceleration
US10754686B2 (en) Method and electronic device for application migration
US11863469B2 (en) Utilizing coherently attached interfaces in a network stack framework
US20210281618A1 (en) System, apparatus, and method for streaming input/output data
US20230100935A1 (en) Microservice deployments using accelerators
CN116583831A (zh) 向操作系统注册自定义原子操作
CN114661409A (zh) 处理数据分组以进行逻辑和虚拟交换机加速的方法和设备
US9992238B2 (en) Proxy based data transfer utilizing direct memory access
Zhang et al. Fastudp: a highly scalable user-level udp framework in multi-core systems for fast packet i/o
US11151074B2 (en) Methods and apparatus to implement multiple inference compute engines
US11093405B1 (en) Shared mid-level data cache
US20230153153A1 (en) Task processing method and apparatus
Jung et al. Virtualizing GPU direct packet I/O on commodity Ethernet to accelerate GPU-NFV
Zhu et al. Deploying User-space {TCP} at Cloud Scale with {LUNA}
US11036643B1 (en) Mid-level instruction cache
WO2023184513A1 (en) Reconfigurable packet direct memory access to support multiple descriptor ring specifications
WO2023219554A1 (en) Igcc: a remote virtualization architecture for distributed gpu resources over the internet

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