CN115396250A - 具有一致事务排序的多插槽网络接口控制器 - Google Patents
具有一致事务排序的多插槽网络接口控制器 Download PDFInfo
- Publication number
- CN115396250A CN115396250A CN202210458084.8A CN202210458084A CN115396250A CN 115396250 A CN115396250 A CN 115396250A CN 202210458084 A CN202210458084 A CN 202210458084A CN 115396250 A CN115396250 A CN 115396250A
- Authority
- CN
- China
- Prior art keywords
- nic
- memory
- bus
- host
- writing
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 claims abstract description 214
- 238000012545 processing Methods 0.000 claims abstract description 82
- 230000002093 peripheral effect Effects 0.000 claims abstract description 50
- 238000004891 communication Methods 0.000 claims abstract description 16
- 238000000034 method Methods 0.000 claims description 35
- 239000000872 buffer Substances 0.000 claims description 22
- 230000004044 response Effects 0.000 claims description 18
- 230000000977 initiatory effect Effects 0.000 claims description 8
- 238000002955 isolation Methods 0.000 claims description 3
- 238000010200 validation analysis Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 12
- 238000001152 differential interference contrast microscopy Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 6
- 238000013519 translation Methods 0.000 description 5
- 238000013507 mapping Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40006—Architecture of a communication node
- H04L12/40032—Details regarding a bus interface enhancer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4604—LAN interconnection over a backbone network, e.g. Internet, Frame Relay
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/28—DMA
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Bus Control (AREA)
- Multi Processors (AREA)
Abstract
本发明涉及具有一致事务排序的多插槽网络接口控制器。计算装置包括主机,该主机包括至少第一和第二主机总线接口。网络总线控制器(NIC)包括:网络端口,用于连接到分组通信网络;以及第一和第二NIC总线接口,其分别通过第一和第二***组件总线与第一和第二主机总线接口通信。分组处理逻辑响应于通过网络端口接收的分组,在直接存储器访问(DMA)事务的序列中通过第一和第二NIC总线接口同时将数据写入主机存储器,并且在写入任何给定DMA事务中的数据后,针对给定DMA事务将完成报告写入主机存储器,同时验证只有在给定DMA事务中的所有数据已经被写入主机存储器后完成报告才可用于CPU。
Description
相关申请的交叉引用
本申请要求于2021年5月9日提交的美国临时专利申请63/186,124的权益,该申请通过引用并入本文。
技术领域
本发明总体上涉及分组网络通信,并且尤其涉及用于链接多个处理器以通过分组通信网络进行通信的设备和方法。
背景技术
网络接口控制器(NIC)通常包括用于连接到分组网络的一个或更多个端口和用于连接到一个或更多个主机处理器的***组件总线的至少一个总线接口。在现代的高速NIC中,端口可以包括高速以太网或无线带宽端口,例如,当一个或更多个总线接口包含***组件快速互连(PCIe)端点时。(在无线带宽网络的环境中,此类NIC也可称为主机通道适配器,或HCA。)
一些NIC有多个总线接口,其可以连接到不同的各自的主机或在一些情况下,连接到同一个主机。后者的配置例如在与具有NUMA(非统一存储器访问)架构的主机进行接口时是有用的。这样的计算机包括多个互连的处理节点(也称为“插槽”),其中每个节点包括中央处理单元(CPU),有一个或更多个处理核心和本地存储器。每个CPU可以访问它自身的本地存储器和属于其他CPU的非本地存储器,但本地存储访问远远快于非本地访问。有多个总线接口的NIC可以被配置和连接以使每个NUMA节点有它自身的总线接口,且NIC因此能够直接加载数据到生成或使用数据的CPU的本地存储器或直接从该CPU的本地存储器读取数据。
作为具有多个总线接口的NIC的示例,美国专利10,387,358描述了一种多PCIe插槽NIC操作***接口,其公开内容通过引用并入本文。多插槽网络接口设备的多个PCIe端点附接到主机,用于交换入口流量和出口流量。该主机的操作***包括具有多个网络接口的绑定/组合模块。所述绑定/组合模块被配置为给出口流量选择端点之一。网络接口设备具有硬件绑定模块,其被配置为将入口流量引导到端点中的指定端点。
发明内容
下面描述的本发明的实施例提供了改进的网络接口设备和用于这些设备的操作的方法。
因此,根据本发明的一个实施例,提供了计算装置,该计算装置包括主机,主机包括至少一个中央处理单元(CPU)、主机存储器以及至少第一主机总线接口和第二主机总线接口,所述第一主机总线接口和第二主机总线接口分别用于连接到至少第一***组件总线和第二***组件总线。网络接口控制器(NIC)包括:用于连接到分组通信网络的网络端口;以及第一NIC总线接口和第二NIC总线接口,被配置为分别通过所述第一***组件总线和第二***组件总线与所述第一主机总线接口和第二主机总线接口通信。分组处理逻辑耦合在网络端口与第一NIC总线接口和第二NIC总线接口之间并且被配置为:响应于通过所述网络端口接收的分组,在直接存储器访问(DMA)事务的序列中通过所述第一NIC总线接口和第二NIC总线接口同时将数据写入所述主机存储器;以及在写入所述序列中的任何给定DMA事务中的数据后,针对所述给定DMA事务将完成报告写入所述主机存储器,同时验证仅在所述给定DMA事务中的所有数据已经被写入所述主机存储器后所述完成报告才可用于所述CPU。
在一些实施例中,所述分组处理逻辑被配置为:在多个不同的工作队列中接收包含分组的消息;将每个所述工作队列与相应的完成队列相关联;以及将所述完成报告写入相应的完成队列。在一个实施例中,所述分组处理逻辑被配置为将每个工作队列与所述NIC总线接口中的相应的、预选的一个相关联,使得由每个工作队列中接收到的所述消息调用的DMA事务通过所述NIC总线接口中的相关联的一个被执行。对于每个工作队列,所述分组处理逻辑被配置为在写入所述给定DMA事务中的数据后,通过所述NIC总线接口中的相同预选的一个将所述完成报告写入相应的完成队列。
在另一个实施例中,所述分组处理逻辑被配置为:通过经由所述第一NIC总线接口和第二NIC总线接口写入数据来执行由在至少一个所述工作队列中接收的所述消息调用的所述DMA事务;以及在写入所述数据之后,将关于所述DMA事务的完成报告通过所述第一NIC总线接口和第二NIC总线接口写入所述主机存储器中的相应的第一完成缓冲区和第二完成缓冲区。在所述主机上运行的驱动程序被配置为从所述第一完成缓冲区和第二完成缓冲区读取所述完成报告,并且将所述完成报告安排到单个完成队列中。
在又一个实施例中,所述分组处理逻辑被配置为:通过经由所述第一NIC总线接口写入第一数据和经由所述第二NIC总线接口写入第二数据来执行由在给定工作队列中接收的所述消息调用的所述DMA事务;以及在写入所述第一数据和第二数据后,将关于所述DMA事务的完成报告通过所述第一NIC总线接口和第二NIC总线接口写入,同时使所述主机存储器中的相应的第一完成计数器值和第二完成计数器值增加。在所述主机上运行的驱动程序被配置为在确认在与所述给定工作队列相关联的相应完成队列中的所述完成报告时应用所述计数器值。
在一些实施例中,所述主机包括多个非统一存储器访问(NUMA)节点,包括第一NUMA节点和第二NUMA节点,其分别包括所述第一主机总线接口和第二主机总线接口,其中所述主机存储器包括分别布置在所述第一NUMA节点和第二NUMA节点中的第一本地存储器和第二本地存储器。在所公开的实施例中,所述分组处理逻辑被配置为:接收在所述第一本地存储器和第二本地存储器的相应第一部分和第二部分上延伸的存储器区域的定义,并且接收关于适用于所述第一本地存储器和第二本地存储器两者的存储器区域的存储器映射;以及在通过所述第一NIC总线接口和第二NIC总线接口二者写入所述DMA事务中的数据时将所述存储器映射应用于所述第一本地存储器和第二本地存储器的相应第一部分和第二部分。
在一个实施例中,所述DMA事务包括分别通过所述第一NIC总线接口和第二NIC总线接口执行的至少第一原子读-修改-写操作和第二原子读-修改-写操作,并且所述分组处理逻辑被配置为:在执行所述第一原子读-修改-写操作后,通过所述第一NIC总线接口执行隔离读取操作;以及仅在完成所述隔离读取操作后才启动所述第二原子读-修改-写操作的执行。
附加或替代地,所述DMA事务包括通过所述第一NIC总线接口执行的存储器区域无效操作,并且所述分组处理逻辑被配置为:在执行所述存储器区域无效操作后,通过所述第一NIC总线接口执行隔离读取操作;以及仅在完成所述隔离读取操作后才通过所述第二NIC总线接口启动进一步的DMA事务。
根据本发明的实施例,还提供了一种包括主机的计算装置,主机包括多个非统一存储器访问(NUMA)节点,包括至少第一NUMA节点和第二NUMA节点,其分别包括第一中央处理单元(CPU)和第二中央处理单元、第一本地存储器和第二本地存储器以及第一主机总线接口和第二主机总线接口,所述第一主机总线接口和第二主机总线接口用于分别连接到第一***组件总线和第二***组件总线。网络接口控制器(NIC)包括:用于连接到分组通信网络的网络端口;以及第一NIC总线接口和第二NIC总线接口,其被配置为分别通过所述第一***组件总线和第二***组件总线与所述第一主机总线接口和第二主机总线接口通信。分组处理逻辑耦合在网络端口与所述第一NIC总线接口和第二NIC总线接口之间并且被配置为:接收在所述第一本地存储器和第二本地存储器的相应第一部分和第二部分上延伸的存储器区域的定义,并且接收关于适用于所述第一本地存储器和第二本地存储器两者的存储器区域的存储器映射;以及响应于通过所述网络端口接收的分组,在直接存储器访问(DMA)事务的序列中通过所述第一NIC总线接口和第二NIC总线接口二者将数据写入所述存储器区域时将所述存储器映射应用于所述第一本地存储器和第二本地存储器的相应第一部分和第二部分。
在所公开的实施例中,存储器区域包括多个页面,包括映射到所述第一本地存储器的相应第一部分的一个或更多个第一页面和映射到所述第二本地存储器的相应第二部分的一个或更多个第二页面。
附加地或可替代地,主机处理器包括在所述第一NUMA节点和第二NUMA节点之间的处理器间总线,并且所述分组处理逻辑被配置为通过所述第一NIC总线接口和所述处理器间总线将所述DMA事务的序列中的数据的至少一部分写入所述第二本地存储器。此外,附加地或可替代地,所述分组处理逻辑被配置为选择所述第一NIC总线接口和第二NIC总线接口中的一个以在所述序列中的每个所述DMA事务中使用,以便平衡所述第一***组件总线和第二***组件总线之间的通信负载。
根据本发明的一个实施例,还提供了一种用于计算的方法,包括连接网络接口控制器(NIC)以通过至少第一***组件总线和第二***组件总线与主机通信,所述主机具有中央处理单元(CPU)和主机存储器。通过所述NIC的网络端口从网络接收分组。响应于通过所述网络端口接收的所述分组,在直接存储器访问(DMA)事务的序列中通过所述第一总线和第二总线两者将数据同时从所述NIC写入所述主机存储器。在写入所述序列中的任何给定DMA事务中的数据后,通过所述第一总线和第二总线中的一个将关于所述给定DMA事务的完成报告从所述NIC写入所述主机存储器,同时验证仅在所述给定DMA事务中的所有数据都已被写入所述主机存储器后所述完成报告才可用于所述CPU。
根据本发明的一个实施例,进一步提供了一种用于计算的方法,包括连接网络接口控制器(NIC)以通过至少第一***组件总线和第二***组件总线分别与主机的至少第一和第二非统一存储器访问(NUMA)节点通信,所述第一和第二NUMA节点分别包括第一中央处理单元(CPU)和第二中央处理单元以及第一本地存储器和第二本地存储器。所述NIC接收在所述第一本地存储器和第二本地存储器的相应第一部分和第二部分上延伸的存储器区域的定义以及关于适用于所述第一本地存储器和第二本地存储器两者的存储器区域的存储器映射。通过所述NIC的网络端口接收来自网络的分组。响应于通过所述网络端口接收的所述分组,在直接存储器访问(DMA)事务的序列中通过所述第一***组件总线和第二***组件总线二者将数据写入所述存储器区域时将所述存储器映射应用于所述第一本地存储器和第二本地存储器的相应第一部分和第二部分。
附图说明
结合附图,从以下实施例的详细描述中将更充分地理解本发明,其中:
图1是根据本发明的一个实施例示意性地图示出包括具有多个总线接口的NIC的主机的框图;
图2是根据本发明的一个实施例示意性地图示出具有多个总线接口的NIC中的分组处理逻辑的操作的框图;
图3是根据本发明的另一个实施例示意性地图示出具有多个总线接口的NIC中的分组处理逻辑的操作的框图;
图4是根据本发明的又一个实施例示意性图示出主机和具有多个总线接口的NIC的操作的框图;
图5是根据本发明的另一实施例示意性地图示出用于在具有多个总线接口的NIC中处理原子操作的方法的梯形图;和
图6是根据本发明另一实施例示意性地图示出用于在具有多个总线接口的NIC中处理存储器区域无效的方法的梯形图。
具体实施方式
概述
当具有多个总线接口的NIC与主机相连接时,即使在所有的总线接口被连接到同一个网络端口时,每个总线接口也将对主机硬件都显示为一个单独的物理设备。这种复杂的硬件配置会给程序员带来严峻的挑战,并且造成难以利用NIC的全部可用带宽。因此,希望的是,在主机上运行的NIC驱动程序将NIC呈现为单个逻辑设备,将每个网络端口的单个实例暴露给软件,而不管在给定通信中实际使用的物理总线接口。然后,主机操作***将为每个端口分配一个单一的网络地址,以供在主机上运行的应用程序使用,同时使NIC处理逻辑和驱动程序能够在对主机存储器执行直接存储器访问(DMA)操作时优化对可用总线接口资源的使用。
当具有单个总线接口的NIC执行DMA操作时,主机***组件总线(例如PCIe总线)的固有排序规则确保事务以正确的顺序执行。例如,如果NIC通过总线将数据写入主机存储器,然后通过总线写入完成通知以通知主机处理器该数据已准备好使用,则总线的排序规则将确保主机处理器在数据写入实际完成之前不会收到完成通知。另一方面,当NIC同时使用多个总线接口时,完成通知将在数据写入经由另一个总线接口完成之前经由一个总线接口到达主机处理器是可能的,导致主机处理器读取不正确数据。
在此描述的本发明的实施例提供使这种具有多个总线接口的NIC能够维持DMA事务的正确排序的技术,同时自动优化总线资源的使用并将其自身作为单一、一致的网络接口设备呈现给主机应用软件。在本说明书的上下文和权利要求中,“DMA事务”是指完整的DMA输入/输出(I/O)操作,例如指定范围的数据从主机存储器读取或写入主机存储器的操作。DMA事务通常是响应工作请求执行的,例如来自本地或远程请求者的读取或写入请求,其指定要传输的数据范围。I/O设备(例如NIC)通过在总线上执行数据传输或数据传输序列来执行工作请求。本实施例提供了可以在NIC硬件和驱动软件中实现的技术,并确保使用NIC的资源的应用程序将按照正确的顺序接收数据和通知,例如完成报告,尽管在传输数据和通知中使用了多条总线。
本实施例在包括主机和NIC的计算装置中实现。主机包括至少一个中央处理单元(CPU)、主机存储器和至少两个用于连接到对应***组件总线的主机总线接口。NIC包括:网络端口(或多个端口),用于连接到分组通信网络;以及至少两个NIC总线接口,其通过对应的***组件总线与主机总线接口进行通信。响应于通过网络端口接收到的分组,NIC中的分组处理逻辑在DMA事务序列中通过两个NIC总线接口同时将数据写入主机存储器。
在一些实施例中,在写序列中的任何给定DMA事务中的数据之后,分组处理逻辑针对给定DMA事务将完成报告写入主机存储器,同时验证该完成报告将仅在给定DMA事务中的所有数据都已写入主机存储器之后可用于CPU。通常,分组处理逻辑在多个不同的工作队列中接收消息,并且将每个工作队列与相应的完成队列相关联,它向完成队列写入相应的完成报告。(此上下文中的每个“消息”都包含单一分组或分组序列。)
在一个实施例中,通过将每个工作队列与NIC的相应预选总线接口相关联来确保DMA事务和完成报告的正确排序,使得由在每个工作队列中接收的消息调用的DMA事务通过相关联的总线接口来执行。在写入任何给定的DMA事务中的数据后,分组处理逻辑然后通过该同一个NIC总线接口将完成报告写入相应的完成队列。因此,***组件总线的事务排序规则将确保仅在数据传输完成后才交付完成报告。
在其他实施例中,分组处理逻辑可以通过多个NIC总线接口执行由给定工作队列中的消息调用的DMA事务,例如以促进总线之间的负载平衡。在一个这样的实施例中,为了确保DMA事务和完成报告的正确排序,分组处理逻辑通过每条总线将完成报告写入主机存储器中的对应完成缓冲区。在主机上运行的驱动程序按正确顺序读取和排列单个完成队列中的完成报告。可替代地或附加地,每次分组处理逻辑将完成报告写入主机存储器时,其就使主机存储器中的每条总线的相应完成计数器值增加。驱动程序将这些计数器值应用于验证完成报告,然后再将它们可用于主机应用程序软件。
本文描述的一些实施例是特别针对于提高向由NIC通过多个相应总线服务的NUMA节点传送数据的效率。例如,在执行任何给定的工作队列中的远程DMA(RDMA)操作时,NIC通常使用针对分配给工作队列的主机存储器中的存储器区域定义的存储器映射。通常来说,存储器区域被定义在单个物理存储器中,并且所述映射应用于单个***组件总线。然而,在NUMA应用程序中,为给定工作队列将数据写入和读取到两个或更多个NUMA节点的本地存储器是能有用的。
为了在本发明的实施例中解决这种需要,NIC中的分组处理电路接收并使用在两个或更多个不同NUMA节点的本地存储器的相应部分上延伸的存储器区域的定义。换言之,给定存储器区域中的一个或更多个页面被映射到一个本地存储器的一部分,而存储器区域中的另一个或更多个页面被映射到另一个本地存储器的一部分。分组处理电路通过连接到每个NUMA节点的总线接口将存储器映射应用于DMA事务序列中的写数据到存储器区域,存储器区域的各个部分被映射到每个NUMA节点。
这种布置使NIC能够在多个NUMA节点和总线上使用相同的存储器转换表,从而提高NIC在分布和执行DMA事务方面的效率。例如,分组处理逻辑可以选择要在每个DMA事务中使用的NIC总线接口,以平衡总线之间的通信负载。尽管NIC通常会通过总线向每个NUMA节点中的本地存储器写入数据和从每个NUMA节点中的本地存储器读取数据(所述总线与该NUMA节点连接),但在某些情况下,NIC可以通过连接到给定NUMA节点的总线写数据,并且该数据然后通过节点之间的处理器间总线被传输到不同NUMA节点中的目的地。
下文描述的实施例主要涉及具有NUMA架构的主机,并提供可应用于优化可用总线带宽的使用同时保持在此上下文中的适当事务排序的技术。然而,本发明的原理决不限于NUMA架构,并且还可以应用于具有连接到同一个存储器控制器的多个总线接口的NIC的其他应用中。例如,当NIC的一个或更多个网络接口端口具有比单个总线接口所能提供的更高的带宽时,这种布置在提高主机的数据通信速度方面是有利的。所有这些替代应用和实施例都被认为在本发明的范围内。
***描述
图1是根据本发明的实施例的示意性地图示出包括具有多个总线接口42、44的NIC28的主机20的框图。主机包括两个NUMA节点22、24,每个包括相应的中央处理单元(CPU)32和本地存储器34。(为了简单起见,计算机20的主机存储器被示为包括本地存储器34。在实践中,主机存储器通常包括主存储器和高速缓存存储器,并且也可以包括其他物理存储器(其在附图中未示出)。)NUMA节点22和24由处理器间总线36互连。根复合体(RC)40用作主机总线接口,用于连接到各个***组件总线38,例如PCIe总线。尽管该示例中的主机20包括两个NUMA节点,但是如下所示的特征可以类似地在包括三个或更多个NUMA节点的主机中实现,其中NUMA节点中的两个或更多个具有各自的主机总线接口。
NIC 28包括网络端口48,或者可以是多个网络端口(图中未示出),用于连接到分组通信网络26。例如,网络26可以包括以太网或无限带宽交换结构,并且端口48包括用于连接到网络的合适的物理层(PHY)和媒体访问控制(MAC)接口电路。NIC 28通过网络26向其他网络节点发送分组和从其他网络节点接收分组,例如远程主机30。NIC总线接口42、44例如包括PCIe接口逻辑,并且通过相应总线38与相应根复合体40通信。
分组处理逻辑46耦合在网络端口48和NIC总线接口42、44之间。响应于通过网络端口48接收的分组,分组处理逻辑46在直接存储器访问(DMA)事务序列中通过两个NIC总线接口42、44同时地将数据写入存储器34。在其他DMA事务中,分组处理逻辑46从存储器34读取数据,并经由网络端口48发送分组中的数据。通常,分组处理逻辑46包括数字逻辑电路,其可以是硬连线或可编程的并且被配置为执行本文描述的功能。附加地或替代地,分组处理逻辑46可以包括一个或更多个可编程处理器,其以软件被编程以执行这些功能中的至少一些。
为管理和维护DMA传输之间的顺序,分组处理逻辑46将用于与主机20交互的对象划分为DMA对象54、56和非DMA对象58。本实施例中的DMA对象被划分为多个组,被示为DMA对象54和DMA对象56,并且每个组与相应的NIC总线接口42、44相关联。通常,调用DMA向存储器34写入和从存储器34读取操作的对象(诸如工作队列和完成队列)被分类和分组为DMA对象54、56,而可用于支持DMA操作的辅助对象(例如存储器区域和保护域)则被分类为非DMA对象58。在下文进一步描述了这些分类在维护事务排序时的应用。
在一些实施例中,每个DMA对象54、56具有指示与其相关联的总线接口42、44的显式属性。在主机20上运行的应用软件在选择它与NIC 28交互所通过的DMA对象和总线接口时使用此属性。然而,这种方法给应用程序程序员增加了负担,并且不允许总线之间的自动负载平衡。
因此,在图示实施例中,在主机20上运行的驱动程序软件,在本文中指的是驱动程序50,将虚拟NIC(VNIC)接口暴露给应用程序软件,利用对应于物理端口48的单个虚拟端口52。驱动程序50管理在总线接口42和44之间的DMA对象54和56的分布,同时确保正确的排序。该分布可以在一方面考虑局部性(即,在NUMA节点22或24中,为给定的DMA对象,将总线接口42、44的选择与目标存储器34的位置匹配)并且在另一方面考虑总线38之间的负载平衡。这些特征通常对应用程序程序员是透明的,并且应用软件与由NIC硬件提供的总线接口的数量无关。
维护DMA写入和完成报告的顺序
如上所述,在支持具有多个总线接口的NIC(例如NIC 28)的高效DMA操作中的挑战之一是确保由NIC通过总线38传输的信息以正确的顺序到达CPU 32。作为具体示例,在任何给定DMA事务中写入数据之后,本实施例中的分组处理逻辑46针对给定DMA事务将完成报告写入主机存储器,同时验证完成报告将仅在给定DMA事务中的所有数据都已写入主机存储器之后才可用于CPU。本发明的实施例提供了可用于此目的的多种技术,如下图所示。
图2是根据本发明实施例的示意性地图示出NIC 28中的分组处理逻辑46的操作的框图。该图具体地图示出分别与总线接口42和44相关联的DMA对象54和56的分组以及非DMA对象58。在本实施例中,DMA对象的分组用于通过确保由给定组中的DMA对象执行的所有DMA操作是通过同一个总线接口按顺序执行的,来维护合适的DMA事务的排序,即,所有DMA对象54仅通过总线接口42将数据写入存储器34,而所有DMA对象56仅通过总线接口44写入数据。
DMA对象54和56包括工作队列(在图中标识为队列对(QP)60)以及完成队列(CQ)62。每个QP 60与一个给定的CQ 62相关联,并且多个QP可以与相同的CQ相关联。本实施例中的CQ 62被分类为从属对象,这意味着它们被分配到和与它们所关联的QP 60相同的分组中。因此,与QP1和QP3相关联的CQ4与对象54分组,而CQ 62连同其相关联的QP2和QP8与对象56分组。每个CQ 62与给定的事件队列(EQ)64相关联,并且每个事件队列与消息信号中断(MSIX)队列66相关联。(这些关联也可以是一对一或多对一的。)因此,EQ 64和MSIX队列66也被分类为从属对象,并且因此被分配给与其父QP 60相同的DMA对象的组。
另一方面,非DMA对象58,例如存储器区域(MR)68和保护域(PD)70,不调用DMA操作,因此不需要与特定的总线接口42或44相关联。
DMA对象和非DMA对象的这些图示并不意味着穷举,并且由分组处理逻辑46使用的其他对象可以根据需要类似地分组。例如,共享接收队列通常会被归类为DMA对象,而可靠的数据报域或端对端环境将被归类为非DMA对象。
在图2所示的示例中,NIC 28通过端口48在定向到QP3的消息中接收分组72。分组处理逻辑46查找有关适用的存储器区域(MR6)和保护域(PD3)的上下文信息,然后执行DMA写操作(W1)以通过总线接口42将分组数据写入存储器34。在分组72所属的消息中的所有数据已被写到总线接口42后,分组处理逻辑将执行第二次DMA写操作(W2)以将完成报告(被称为完成队列元素,或CQE)写入CQ4。然后,总线38上的事务排序规则将确保W1在W2之前完成,使得CQE被写入存储器34并且CQE因此只有在所有消息数据都已写入存储器之后才可用于节点22(图1)中的CPU 32。
以类似的方式,在将写操作W2发送到总线接口42之后,分组处理逻辑46然后将在DMA写操作W3中将一个事件写到适当的偶数队列64(EQ2)。最后,分组处理逻辑46在DMA写操作W4中将中断写到MSIX队列66(MSIX-1)。相同的总线事务排序自始至终都适用。
图3是根据本发明的另一个实施例示意性地图示出NIC 28中的分组处理逻辑46的操作的框图。该实施例解决了可能出现的问题,例如,当应用软件创建许多QP时,它们都共享相同的CQ。如果在这种情况下严格遵循图2中所示的模型,问题中的所有QP都必须分配给同一组DMA对象,因此将使用相同的主机总线接口,从而引起在NIC 28和主机20之间的接口中的瓶颈。
为了解决这个问题并在总线接口42和44之间实现更有效的负载平衡,驱动程序50(图1)在DMA对象组54和56之间分布由应用软件创建的QP 60,并为这两组创建各自的CQ 62(分别标记为CQ4和CQ7)。分组处理逻辑46分别通过总线42和44将CQ4和CQ7中的CQE写入节点22和节点24上的本地存储器34中的相应完成缓冲区74。驱动程序50从缓冲区74中读取CQE并将CQE安排在单个完成队列76(在图3中标识为虚拟CQ3)中。因此,NIC 28能够利用两个主机总线的带宽,而缓冲区74和虚拟完成队列76的使用确保了CQE仅在对应的DMA写事务已实际完成之后才对应用软件可用。相同的方法可以应用于事件和中断。
图4是根据本发明又一实施例的示意性地图示出主机20和NIC 28的操作的框图。该实施例解决了在某些情况下为了通过总线接口42和44二者对于单个QP 80(在图4中标记为QP3)执行DMA事务所产生的需要。这种需要可能出现在例如主机20接收到单个QP上的大量传入数据时,带宽可能大于单个总线接口的容量。
在这种情况下,分组处理逻辑46通过经由总线接口42和44两者写入数据来执行由在QP3上接收的消息调用的DMA事务。例如,分组处理逻辑46可以在选择哪个总线接口要用于每个DMA事务时应用循环或其他合适的负载平衡策略。在通过给定的总线接口写入给定的DMA事务中的数据之后,分组处理逻辑46然后将关于该DMA事务的CQE写到CQ 94。每次分组处理逻辑46通过总线接口42或44之一写CQE时,它还经由两个总线接口使完成计数器90和92的值增加。该CQE包含对应的计数器值。
驱动程序50在验证CQ 94中的CQE时读取并应用计数器90和92的值。具体地,在使CQE可用于应用软件之前,驱动程序50验证对于写CQE所通过的总线的完成计数器90或92的值等于或大于记录在CQE中的计数器值。计数器值的这种使用确保了在将CQE写入CQ 94之前启动的所有DMA写操作实际上已经完成。
共享存储器区域
在如图4所示的实施例中,单个存储器区域82(标记的MR4)被定义以供QP3使用,不管为特定DMA写操作所选择的总线接口是42还是44。MR4定义了将由分组处理逻辑46在由传入RDMA消息指定的虚拟地址范围和存储器34中的物理地址之间应用的转换。在本实施例中,MR4指定了映射88,其分别包括NUMA节点22和24的本地存储器34中的缓冲区84和86。
分组处理逻辑28响应于从网络接收的分组,在将DMA事务中的数据通过总线接口42和44二者写入缓冲区84和86时应用映射88。对于MR4中的每一页,转换表指示该页是被映射到缓冲区84还是缓冲区86,并因此使分组处理逻辑能够为每次传输选择最佳的总线来使用。这类的示例存储器转换表在下面表I中示出:
表I-示例存储器转换表
页面索引 | 总线0地址 | 总线1地址 | 本地总线# |
0 | 0x… | 0x… | 0 |
1 | 0x… | 0x… | 0 |
2 | 0x… | 0x… | 1 |
3 | 0x… | 0x… | 1 |
在该表中,存储器区域82的前两页位于NUMA节点22的本地存储器34中,而后两页位于NUMA节点24的本地存储器中。在大多数情况下,分组处理逻辑46将选择直接连接到缓冲区84或86所在的对应NUMA节点22或24的总线。然而,在某些情况下,例如为了改善负载平衡,分组处理逻辑46可以将目的地为缓冲区86的数据通过总线接口38写入NUMA节点22,然后NUMA节点22通过处理器间总线36将数据传输到其目的地。
DMA操作的隔离
在一些实施例中,NIC 28通过总线38执行原子DMA读-修改-写操作。在此类事务中,分组处理逻辑46从存储器34中的指定地址读取值,根据预定义指令修改该值,然后将值写回至相同的地址。当NIC 28只能通过单个总线访问主机存储器时,总线上的事务排序规则确保了后续DMA操作将仅在原子操作已经完成后才能访问指定地址。然而,在主机20(图1和4)的情况下,可能的是,在通过总线之一在第一QP上执行的第一原子操作已完成将新值写入给定地址之前,通过另一条总线在另一QP上执行的后续原子事务的读取阶段将访问相同地址。在这种情况下,后续的原子操作将读取存储在该地址处的旧值,从而产生错误的结果。
为了防止这类错误,在分组处理逻辑46通过总线接口42和44之一执行原子读-修改-写操作之后,分组处理逻辑通过同一总线接口执行隔离读取操作。分组处理逻辑46将仅在已完成隔离读取操作之后启动针对相同地址的后续原子读-修改-写操作。为了隔离读取操作的目的,驱动程序50分配存储器地址用作这些操作的目标,并通过接口42和44二者映射这个地址用于DMA访问。在原子操作之后的隔离读取操作的完成保证了该原子操作的写阶段在下一个原子操作的读取阶段能发生之前已经完成。
图5是根据本发明的另一实施例的示意性地图示出用于使用隔离读取操作来处理NIC 28中的原子操作的方法的梯形图。在通过总线38之一(图中标记为总线1)执行的初始原子操作100中,NIC 28针对存储器34中的地址发出读取命令102。然后NIC 28从具有值x的地址接收数据104并且发出写命令106以将修改后的数据值y写回该地址。然后,NIC 28通过总线1启动隔离读取操作108,包括读取命令110和响应112。根据PCIe排序规则,隔离读取操作108将所有先前的写操作刷新到存储器,这意味着NIC 28将仅在所有先前的写操作(包括写命令106)都已完成之后才接收到响应112。
只有在隔离读取操作108中接收到响应112之后,NIC 28才会在总线2上启动第二个原子操作114,其目标是与原子操作100相同的地址。在操作114中,NIC 28从存储器34中的地址读取(正确的)值y(其是原子操作100的目标),然后将修改后的值z写回该地址。原子操作114之后类似地是总线2上的隔离读取操作116。每个原子操作只有在相应的隔离读取操作完成后才会退出。
隔离读取操作108和116可由NIC 28在其执行的每个原子操作100、114之后立即启动。然而,当多个原子操作通过同一总线连续执行时,这种方法可能增加不必要的延迟,因为在这种情况下不需要隔离读取来确保正确的事务排序。因此,在替代的实施例中,NIC 28仅在另一总线上接收到执行针对相同地址的后续原子操作的请求时才在总线38之一上的给定原子操作之后启动隔离读取操作。(如果多个原子操作针对不同的地址,则可以在多个总线上同时进行多个原子操作而无需发出隔离读取操作。)
在处理存储器区域失效操作时可能会出现类似的问题。一旦存储器区域已失效,对应的存储器缓冲区就会被释放并且可能被覆盖。通过给定总线发出的无效命令会将所有先前的写命令刷新到存储器,这意味着在无效后总线上将不再保留更多数据要写入相关缓冲区。然而,当NIC 28通过多条总线连接到主机存储器34时,一条总线上的较早写命令在已经通过另一条总线完成缓冲区的存储器无效操作之后仍可以将数据写入给定缓冲区。
图6是根据本发明的另一实施例示意性地图示出用于处理具有多个总线接口42、44的NIC 28中的存储器区域无效的方法的梯形图。本实施例还利用了隔离读取操作。在所描绘的场景中,NIC 28接收到指向给定存储器区域(MR1)的第一个RDMA写请求120,并因此发出通过总线1将数据写入存储器34中的对应缓冲区的DMA写命令122。然后NIC 28接收到指向MR1的第二个RDMA写请求124,并发出DMA写命令126以通过总线2写入数据。在图示的示例中,命令126在命令122之前执行,例如由于总线1上的流量。
NIC 28现在接收到无效指令128,例如以发送-和-无效分组的形式,如本领域已知的,指示NIC使MR1无效。响应于指令128,NIC 28使MR1无效,但在发送无效完成报告之前,NIC 28通过通过总线1发送隔离读取命令130来启动隔离读取操作。对应的隔离读取响应132向NIC 28指示所有先前的写命令已经从总线1刷新。在接收到隔离读取响应132之后,NIC 28通过总线2发送无效完成报告134,以指示对应的存储键(RKey1)不再有效。
存储器注销和本地失效的处理类似:在使相应的存储器区域失效后,NIC 28在生成完成报告之前发出隔离读取。
上述实施例展示了可用于解决具有多个主机总线接口的NIC的操作中的问题的多种不同技术。尽管描述了所有这些技术,但是为了清楚和具体起见,参考上面所示出和描述的主机20和NIC 28的体系结构,这些技术的原理可以经适当的变更应用于其他种类的多插槽架构。上述技术可以在同一主机中一起使用,或者,可替代地,可以仅应用这些技术的子集。所有这样的替代实现和应用都被认为在本发明的范围内。
因此应当理解,上述实施例是作为示例引用的,且本发明不限于上文已经具体示出和描述的内容。相反,本发明的范围包括上文描述的各种特征的组合和子组合,以及本领域技术人员在阅读上述描述后会想到并且在现有技术中未公开的变化和修改。
Claims (28)
1.一种计算装置,包括:
主机,包括至少一个中央处理单元CPU、主机存储器以及至少第一主机总线接口和第二主机总线接口,所述第一主机总线接口和第二主机总线接口分别用于连接到至少第一***组件总线和第二***组件总线;以及
网络接口控制器NIC,包括:
网络端口,用于连接到分组通信网络;
第一NIC总线接口和第二NIC总线接口,被配置为分别通过所述第一***组件总线和第二***组件总线与所述第一主机总线接口和第二主机总线接口通信;以及
分组处理逻辑,其耦合在所述网络端口与所述第一NIC总线接口和第二NIC总线接口之间并且被配置为:响应于通过所述网络端口接收的分组,在直接存储器访问DMA事务的序列中通过所述第一NIC总线接口和第二NIC总线接口同时将数据写入所述主机存储器;以及在写入所述序列中的任何给定DMA事务中的数据后,针对所述给定DMA事务将完成报告写入所述主机存储器,同时验证仅在所述给定DMA事务中的所有数据已经被写入所述主机存储器后所述完成报告才可用于所述CPU。
2.根据权利要求1所述的装置,其中所述分组处理逻辑被配置为:在多个不同的工作队列中接收包含分组的消息;将每个所述工作队列与相应的完成队列相关联;以及将所述完成报告写入相应的完成队列。
3.根据权利要求2所述的装置,其中所述分组处理逻辑被配置为将每个工作队列与所述NIC总线接口中的相应的、预选的一个NIC总线接口相关联,使得由每个工作队列中接收到的所述消息调用的DMA事务通过所述NIC总线接口中的相关联的一个而被执行,并且
其中对于每个工作队列,所述分组处理逻辑被配置为在写入所述给定DMA事务中的数据后,通过所述NIC总线接口中的相同预选的一个将所述完成报告写入相应的完成队列。
4.根据权利要求2所述的装置,其中所述分组处理逻辑被配置为:通过经由所述第一NIC总线接口和第二NIC总线接口写入数据来执行由在至少一个所述工作队列中接收的所述消息调用的所述DMA事务;以及在写入所述数据之后,将关于所述DMA事务的完成报告通过所述第一NIC总线接口和第二NIC总线接口写入到所述主机存储器中的相应的第一完成缓冲区和第二完成缓冲区,并且
其中在所述主机上运行的驱动程序被配置为从所述第一完成缓冲区和第二完成缓冲区读取所述完成报告,并且将所述完成报告安排到单个完成队列中。
5.根据权利要求2所述的装置,其中所述分组处理逻辑被配置为:通过经由所述第一NIC总线接口写入第一数据和经由所述第二NIC总线接口写入第二数据来执行由在给定工作队列中接收的所述消息调用的所述DMA事务;以及在写入所述第一数据和第二数据后,将关于所述DMA事务的完成报告通过所述第一NIC总线接口和第二NIC总线接口写入,同时使所述主机存储器中的相应的第一完成计数器值和第二完成计数器值增加,并且
其中在所述主机上运行的驱动程序被配置为在确认在与所述给定工作队列相关联的相应完成队列中的所述完成报告时应用所述计数器值。
6.根据权利要求1所述的装置,其中所述主机包括多个非统一存储器访问NUMA节点,包括第一NUMA节点和第二NUMA节点,其分别包括所述第一主机总线接口和第二主机总线接口,其中所述主机存储器包括分别设置在所述第一NUMA节点和第二NUMA节点中的第一本地存储器和第二本地存储器。
7.根据权利要求6所述的装置,其中所述分组处理逻辑被配置为:接收在所述第一本地存储器和第二本地存储器的相应第一部分和第二部分上延伸的存储器区域的定义,并且接收关于适用于所述第一本地存储器和第二本地存储器两者的存储器区域的存储器映射;以及在通过所述第一NIC总线接口和第二NIC总线接口二者写入所述DMA事务中的数据时,将所述存储器映射应用于所述第一本地存储器和第二本地存储器的相应第一部分和第二部分。
8.根据权利要求1所述的装置,其中所述DMA事务包括分别通过所述第一NIC总线接口和第二NIC总线接口执行的至少第一原子读-修改-写操作和第二原子读-修改-写操作,并且
其中所述分组处理逻辑被配置为:在执行所述第一原子读-修改-写操作后,通过所述第一NIC总线接口执行隔离读取操作;以及仅在完成所述隔离读取操作后才启动所述第二原子读-修改-写操作的执行。
9.根据权利要求1所述的装置,其中所述DMA事务包括通过所述第一NIC总线接口执行的存储器区域无效操作,并且
其中所述分组处理逻辑被配置为:在执行所述存储器区域无效操作后,通过所述第一NIC总线接口执行隔离读取操作;以及仅在完成所述隔离读取操作后才通过所述第二NIC总线接口启动进一步的DMA事务。
10.一种计算装置,包括:
主机,包括多个非统一存储器访问NUMA节点,包括至少第一NUMA节点和第二NUMA节点,其分别包括第一中央处理单元CPU和第二中央处理单元、第一本地存储器和第二本地存储器以及第一主机总线接口和第二主机总线接口,所述第一主机总线接口和第二主机总线接口用于分别连接到第一***组件总线和第二***组件总线;以及
网络接口控制器NIC,包括:
网络端口,用于连接到分组通信网络;
第一NIC总线接口和第二NIC总线接口,其被配置为分别通过所述第一***组件总线和第二***组件总线与所述第一主机总线接口和第二主机总线接口通信;以及
分组处理逻辑,其耦合在所述网络端口与所述第一NIC总线接口和第二NIC总线接口之间并且被配置为:接收在所述第一本地存储器和第二本地存储器的相应第一部分和第二部分上延伸的存储器区域的定义,并且接收关于适用于所述第一本地存储器和第二本地存储器两者的存储器区域的存储器映射;以及响应于通过所述网络端口接收的分组,在直接存储器访问DMA事务的序列中通过所述第一NIC总线接口和第二NIC总线接口二者将数据写入所述存储器区域时,将所述存储器映射应用于所述第一本地存储器和第二本地存储器的相应第一部分和第二部分。
11.根据权利要求10所述的装置,其中所述存储器区域包括多个页面,包括映射到所述第一本地存储器的相应第一部分的一个或更多个第一页面和映射到所述第二本地存储器的相应第二部分的一个或更多个第二页面。
12.根据权利要求10所述的装置,其中所述主机处理器包括在所述第一NUMA节点和第二NUMA节点之间的处理器间总线,并且其中所述分组处理逻辑被配置为通过所述第一NIC总线接口和所述处理器间总线将所述DMA事务的序列中的数据的至少一部分写入所述第二本地存储器。
13.根据权利要求10所述的装置,其中所述分组处理逻辑被配置为选择所述第一NIC总线接口和第二NIC总线接口中的一个以在所述序列中的每个所述DMA事务中使用,以便平衡所述第一***组件总线和第二***组件总线之间的通信负载。
14.根据权利要求10所述的装置,其中所述DMA事务包括通过所述第一NIC总线接口执行的存储器区域无效操作,并且
其中所述分组处理逻辑被配置为:在执行所述存储器区域无效操作之后,通过所述第一NIC总线接口执行隔离读取操作;以及仅在完成所述隔离读取操作后才通过所述第二NIC总线接口启动进一步的DMA事务。
15.一种用于计算的方法,包括:
连接网络接口控制器NIC以通过至少第一***组件总线和第二***组件总线与主机通信,所述主机具有中央处理单元CPU和主机存储器;
通过所述NIC的网络端口从网络接收分组;
响应于通过所述网络端口接收的所述分组,在直接存储器访问DMA事务的序列中通过所述第一总线和第二总线两者将数据同时从所述NIC写入所述主机存储器;以及
在写入所述序列中的任何给定DMA事务中的数据后,通过所述第一总线和第二总线中的一个将关于所述给定DMA事务的完成报告从所述NIC写入所述主机存储器,同时验证仅在所述给定DMA事务中的所有数据都已被写入所述主机存储器后所述完成报告才可用于所述CPU。
16.根据权利要求15所述的方法,其中接收所述分组包括在多个不同的工作队列中接收包含所述分组的消息,并且
其中写入所述完成报告包括使每一个所述工作队列与相应的完成队列相关联,并且将所述完成报告写入所述相应的完成队列。
17.根据权利要求16所述的方法,其中写入所述数据包括将每个工作队列与所述***组件总线中的相应的、预选的一个***组件总线相关联,使得由在每个工作队列中接收的所述消息调用的所述DMA事务通过所述***组件总线中的相关联的一个而被执行,并且
其中写入所述完成报告包括,对每一个工作队列,在写入所述给定DMA事务中的数据后,通过所述***组件总线中的相同的预选的一个将所述完成报告写入相应的完成队列。
18.根据权利要求16所述的方法,其中写入所述数据包括通过所述第一***组件总线和第二***组件总线写入数据来执行由在至少一个所述工作队列中接收的所述消息调用的所述DMA事务,并且
其中写入所述完成报告包括:在写入所述数据之后,将通过所述第一***组件总线和第二***组件总线执行的关于所述DMA事务的完成报告写入到所述主机存储器中的相应第一完成缓冲区和第二完成缓冲区,并且
其中验证仅在所述给定DMA事务中的所有数据都已被写入所述主机存储器后所述完成报告才可用于所述CPU包括:使用在所述主机上运行的驱动程序从所述第一完成缓冲区和第二完成缓冲区读取所述完成报告;以及将所述完成报告安排在单个完成队列中。
19.根据权利要求16所述的方法,其中写入所述数据包括:通过经由所述第一***组件总线写入第一数据和经由所述第二***组件总线写入第二数据,来执行由在给定工作队列中接收的所述消息调用的所述DMA事务,并且
其中写入所述完成报告包括:在写入所述第一数据和第二数据后,将关于所述DMA事务的完成报告通过所述第一***组件总线和第二***组件总线写入,同时使所述主机存储器中的相应的第一完成计数器值和第二完成计数器值增加,并且
其中验证仅在所述给定DMA事务中的所有数据都已被写入所述主机存储器后所述完成报告才可用于所述CPU包括:在确认在与所述给定工作队列相关联的相应完成队列中的所述完成报告时应用所述计数器值。
20.根据权利要求15所述的方法,其中所述主机包括多个非统一存储器访问NUMA节点,包括第一NUMA节点和第二NUMA节点,其分别包括所述第一主机总线接口和第二主机总线接口,其中所述主机存储器包括分别设置在所述第一NUMA节点和第二NUMA节点中的第一本地存储器和第二本地存储器。
21.根据权利要求20所述的方法,包括:在所述NIC中接收在所述第一本地存储器和第二本地存储器的相应第一部分和第二部分上延伸的存储器区域的定义以及关于适用于所述第一本地存储器和第二本地存储器两者的存储器区域的存储器映射,并且
写入所述数据包括:在通过所述第一NIC总线接口和第二NIC总线接口二者写入所述DMA事务中的数据时,将所述存储器映射应用于所述第一本地存储器和第二本地存储器的相应第一部分和第二部分。
22.根据权利要求15所述的方法,其中所述DMA事务包括分别通过所述第一***组件总线和第二***组件总线执行的至少第一原子读-修改-写操作和第二原子读-修改-写操作,并且
其中所述方法包括:在执行所述第一原子读-修改-写操作后,通过所述第一***组件总线执行隔离读取操作;并且仅在完成所述隔离读取操作后才启动所述第二原子读-修改-写操作的执行。
23.根据权利要求15所述的方法,其中所述DMA事务包括通过所述第一***组件总线执行的存储器区域无效操作,并且
其中所述方法包括:在执行所述存储器区域无效操作后,通过所述第一NIC总线接口执行隔离读取操作;以及仅在完成所述隔离读取操作后才通过所述第二***组件总线启动进一步的DMA事务。
24.一种用于计算的方法,包括:
连接网络接口控制器NIC以通过至少第一***组件总线和第二***组件总线分别与主机的至少第一和第二非统一存储器访问NUMA节点通信,所述第一和第二NUMA节点分别包括第一中央处理单元CPU和第二中央处理单元以及第一本地存储器和第二本地存储器;
在所述NIC中接收在所述第一本地存储器和第二本地存储器的相应第一部分和第二部分上延伸的存储器区域的定义以及关于适用于所述第一本地存储器和第二本地存储器两者的存储器区域的存储器映射;
通过所述NIC的网络端口接收来自网络的分组;以及
响应于通过所述网络端口接收的所述分组,在直接存储器访问DMA事务的序列中通过所述第一***组件总线和第二***组件总线二者将数据写入所述存储器区域时,将所述存储器映射应用于所述第一本地存储器和第二本地存储器的相应第一部分和第二部分。
25.根据权利要求24所述的方法,其中所述存储器区域包括多个页面,包括映射到所述第一本地存储器的相应第一部分的一个或更多个第一页面和映射到所述第二本地存储器的相应第二部分的一个或更多个第二页面。
26.根据权利要求24所述的方法,其中所述主机处理器包括在所述第一NUMA节点和第二NUMA节点之间的处理器间总线,并且其中写入数据包括通过所述第一***组件总线和所述处理器间总线将所述DMA事务的序列中的数据的至少一部分写入所述第二本地存储器。
27.根据权利要求24所述的方法,其中写入所述数据包括选择所述第一NIC总线接口和第二NIC总线接口中的一个以在所述序列中的每个所述DMA事务中使用,以便平衡所述第一***组件总线和第二***组件总线之间的通信负载。
28.根据权利要求24所述的方法,其中所述DMA事务包括通过所述第一NIC总线接口执行的存储器区域无效操作,并且
其中所述方法包括:在执行所述存储器区域无效操作之后,通过所述第一***组件总线执行隔离读取操作;以及仅在完成所述隔离读取操作后才通过所述第二***组件总线启动进一步的DMA事务。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163186124P | 2021-05-09 | 2021-05-09 | |
US63/186,124 | 2021-05-09 | ||
US17/503,392 US11620245B2 (en) | 2021-05-09 | 2021-10-18 | Multi-socket network interface controller with consistent transaction ordering |
US17/503,392 | 2021-10-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115396250A true CN115396250A (zh) | 2022-11-25 |
CN115396250B CN115396250B (zh) | 2024-07-12 |
Family
ID=83692303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210458084.8A Active CN115396250B (zh) | 2021-05-09 | 2022-04-27 | 具有一致事务排序的多插槽网络接口控制器 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11620245B2 (zh) |
CN (1) | CN115396250B (zh) |
DE (1) | DE102022204514A1 (zh) |
Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1578308A (zh) * | 2003-07-18 | 2005-02-09 | 微软公司 | 在多nic rdma激活设备中的状态迁移 |
CN101421791A (zh) * | 2005-02-03 | 2009-04-29 | Level5网络有限公司 | 用于主机和***设备之间通信的队列深度管理 |
US20090172301A1 (en) * | 2003-12-05 | 2009-07-02 | Ebersole Dwayne E | Intelligent network interface card (nic) optimizations |
US20100070677A1 (en) * | 2008-09-15 | 2010-03-18 | Vmware, Inc. | System and Method for Reducing Communication Overhead Between Network Interface Controllers and Virtual Machines |
US20110246724A1 (en) * | 2010-03-31 | 2011-10-06 | Marathe Virendra J | System and Method for Providing Locale-Based Optimizations In a Transactional Memory |
US20130262614A1 (en) * | 2011-09-29 | 2013-10-03 | Vadim Makhervaks | Writing message to controller memory space |
US20130315237A1 (en) * | 2012-05-28 | 2013-11-28 | Mellanox Technologies Ltd. | Prioritized Handling of Incoming Packets by a Network Interface Controller |
US20140181454A1 (en) * | 2012-12-20 | 2014-06-26 | Oracle International Corporation | Method and system for efficient memory region deallocation |
CN104050023A (zh) * | 2013-03-14 | 2014-09-17 | 英特尔公司 | 用于实现事务存储器的***和方法 |
US20150067229A1 (en) * | 2013-08-30 | 2015-03-05 | Patrick Connor | Numa node peripheral switch |
US20160070598A1 (en) * | 2014-09-05 | 2016-03-10 | Telefonaktiebolaget L M Ericsson (Publ) | Transparent Non-Uniform Memory Access (NUMA) Awareness |
CN105704098A (zh) * | 2014-11-26 | 2016-06-22 | 杭州华为数字技术有限公司 | 一种虚拟化网络的数据传输方法,节点控制器及*** |
US20170364279A1 (en) * | 2016-06-15 | 2017-12-21 | Vmware, Inc. | Systems and methods for non-uniform memory access aligned i/o for virtual machines |
US20180232334A1 (en) * | 2017-02-13 | 2018-08-16 | Mellanox Technologies, Ltd. | Multi-PCIe Socket NIC OS Interface |
CN109076029A (zh) * | 2016-03-31 | 2018-12-21 | 英特尔公司 | 用于网络i/o访问的技术 |
CN109117386A (zh) * | 2018-07-12 | 2019-01-01 | 中国科学院计算技术研究所 | 一种网络远程读写二级存储的***及方法 |
CN112054963A (zh) * | 2019-06-07 | 2020-12-08 | 英特尔公司 | 用于异构计算环境中的数据传输的网络接口 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5761448A (en) | 1996-08-30 | 1998-06-02 | Ncr Corporation | Physical-to-logical bus mapping scheme for computer systems having multiple PCI bus configuration |
US6658448B1 (en) | 1999-10-21 | 2003-12-02 | Unisys Corporation | System and method for assigning processes to specific CPU's to increase scalability and performance of operating systems |
JP2004526218A (ja) | 2000-08-24 | 2004-08-26 | ボルテール アドバンスト データ セキュリティ リミテッド | 相互接続されたファブリックにおける高度にスケーラブルで高速のコンテンツ・ベース・フィルタリング及び負荷均衡化システム及び方法 |
US7467243B2 (en) | 2002-10-08 | 2008-12-16 | Rmi Corporation | Advanced processor with scheme for optimal packet flow in a multi-processor system on a chip |
US7849232B2 (en) | 2006-02-17 | 2010-12-07 | Intel-Ne, Inc. | Method and apparatus for using a single multi-function adapter with different operating systems |
US7991839B2 (en) | 2006-12-19 | 2011-08-02 | International Business Machines Corporation | Communication between host systems using a socket connection and shared memories |
US7925795B2 (en) | 2007-04-30 | 2011-04-12 | Broadcom Corporation | Method and system for configuring a plurality of network interfaces that share a physical interface |
US7783822B2 (en) | 2007-07-25 | 2010-08-24 | Hewlett-Packard Development Company, L.P. | Systems and methods for improving performance of a routable fabric |
US8171230B2 (en) | 2007-12-03 | 2012-05-01 | International Business Machines Corporation | PCI express address translation services invalidation synchronization with TCE invalidation |
US8625427B1 (en) | 2009-09-03 | 2014-01-07 | Brocade Communications Systems, Inc. | Multi-path switching with edge-to-edge flow control |
US20140129741A1 (en) | 2012-11-07 | 2014-05-08 | Mellanox Technologies Ltd. | Pci-express device serving multiple hosts |
US9842075B1 (en) | 2014-09-12 | 2017-12-12 | Amazon Technologies, Inc. | Presenting multiple endpoints from an enhanced PCI express endpoint device |
US10642780B2 (en) | 2016-03-07 | 2020-05-05 | Mellanox Technologies, Ltd. | Atomic access to object pool over RDMA transport network |
US10503684B2 (en) | 2016-07-01 | 2019-12-10 | Intel Corporation | Multiple uplink port devices |
US10303635B2 (en) | 2017-09-12 | 2019-05-28 | Mellanox Technologies, Ltd. | Remote host management using socket-direct network interface controllers |
US10515066B2 (en) | 2017-09-27 | 2019-12-24 | Mellanox Technologies, Ltd. | Atomic updates of versioned data structures |
US10318312B2 (en) | 2017-09-28 | 2019-06-11 | Mellanox Technologies, Ltd. | Support of Option-ROM in socket-direct network adapters |
US11055104B2 (en) | 2019-10-23 | 2021-07-06 | Mellanox Technologies, Ltd. | Network-adapter configuration using option-ROM in multi-CPU devices |
-
2021
- 2021-10-18 US US17/503,392 patent/US11620245B2/en active Active
-
2022
- 2022-04-27 CN CN202210458084.8A patent/CN115396250B/zh active Active
- 2022-05-09 DE DE102022204514.9A patent/DE102022204514A1/de active Pending
-
2023
- 2023-02-27 US US18/174,668 patent/US20230214341A1/en active Pending
Patent Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1578308A (zh) * | 2003-07-18 | 2005-02-09 | 微软公司 | 在多nic rdma激活设备中的状态迁移 |
US20090172301A1 (en) * | 2003-12-05 | 2009-07-02 | Ebersole Dwayne E | Intelligent network interface card (nic) optimizations |
CN101421791A (zh) * | 2005-02-03 | 2009-04-29 | Level5网络有限公司 | 用于主机和***设备之间通信的队列深度管理 |
US20100070677A1 (en) * | 2008-09-15 | 2010-03-18 | Vmware, Inc. | System and Method for Reducing Communication Overhead Between Network Interface Controllers and Virtual Machines |
US20110246724A1 (en) * | 2010-03-31 | 2011-10-06 | Marathe Virendra J | System and Method for Providing Locale-Based Optimizations In a Transactional Memory |
US20130262614A1 (en) * | 2011-09-29 | 2013-10-03 | Vadim Makhervaks | Writing message to controller memory space |
US20130315237A1 (en) * | 2012-05-28 | 2013-11-28 | Mellanox Technologies Ltd. | Prioritized Handling of Incoming Packets by a Network Interface Controller |
US20140181454A1 (en) * | 2012-12-20 | 2014-06-26 | Oracle International Corporation | Method and system for efficient memory region deallocation |
CN104050023A (zh) * | 2013-03-14 | 2014-09-17 | 英特尔公司 | 用于实现事务存储器的***和方法 |
US20150067229A1 (en) * | 2013-08-30 | 2015-03-05 | Patrick Connor | Numa node peripheral switch |
CN104426814A (zh) * | 2013-08-30 | 2015-03-18 | 英特尔公司 | Numa节点***交换机 |
US20160070598A1 (en) * | 2014-09-05 | 2016-03-10 | Telefonaktiebolaget L M Ericsson (Publ) | Transparent Non-Uniform Memory Access (NUMA) Awareness |
CN105704098A (zh) * | 2014-11-26 | 2016-06-22 | 杭州华为数字技术有限公司 | 一种虚拟化网络的数据传输方法,节点控制器及*** |
CN109076029A (zh) * | 2016-03-31 | 2018-12-21 | 英特尔公司 | 用于网络i/o访问的技术 |
US20170364279A1 (en) * | 2016-06-15 | 2017-12-21 | Vmware, Inc. | Systems and methods for non-uniform memory access aligned i/o for virtual machines |
US20180232334A1 (en) * | 2017-02-13 | 2018-08-16 | Mellanox Technologies, Ltd. | Multi-PCIe Socket NIC OS Interface |
CN109117386A (zh) * | 2018-07-12 | 2019-01-01 | 中国科学院计算技术研究所 | 一种网络远程读写二级存储的***及方法 |
CN112054963A (zh) * | 2019-06-07 | 2020-12-08 | 英特尔公司 | 用于异构计算环境中的数据传输的网络接口 |
Non-Patent Citations (3)
Title |
---|
JUNSHENG TAN; FUZONG WANG: "Optimizing virtual machines scheduling on high performance network NUMA systems", 《2017 3RD IEEE INTERNATIONAL CONFERENCE ON COMPUTER AND COMMUNICATIONS (ICCC)》, 26 March 2018 (2018-03-26) * |
杨自芬;: "基于AQM的网络拥塞控制研究", 科技信息, no. 27, 20 September 2008 (2008-09-20) * |
王睿伯;卢锡城;卢凯;王绍刚;: "面向CC-NUMA体系结构的事务内存冲突规避方法", 计算机学报, no. 04 * |
Also Published As
Publication number | Publication date |
---|---|
US20220358063A1 (en) | 2022-11-10 |
CN115396250B (zh) | 2024-07-12 |
US11620245B2 (en) | 2023-04-04 |
US20230214341A1 (en) | 2023-07-06 |
DE102022204514A1 (de) | 2022-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10713074B2 (en) | Method, apparatus, and system for accessing storage device | |
US10331600B1 (en) | Virtual I/O queuing | |
CN107995129B (zh) | 一种nfv报文转发方法和装置 | |
US10007443B1 (en) | Host to device I/O flow | |
TWI239187B (en) | System and method for managing and validating remote keys which correspond to outstanding data transactions | |
US7761617B2 (en) | Multi-threaded DMA | |
CN104871493B (zh) | 用于高性能计算网络中的通信信道故障切换的方法和设备 | |
US8312187B2 (en) | Input/output device including a mechanism for transaction layer packet processing in multiple processor systems | |
EP1645967A1 (en) | Multi-channel DMA with shared FIFO buffer | |
US20130024595A1 (en) | Pci express switch with logical device capability | |
US20060288129A1 (en) | DMA descriptor queue read and cache write pointer arrangement | |
US10846254B2 (en) | Management controller including virtual USB host controller | |
US20060195848A1 (en) | System and method of virtual resource modification on a physical adapter that supports virtual resources | |
CN101425966A (zh) | 片上网络以及使用片上网络进行数据处理的方法 | |
US7809068B2 (en) | Integrated circuit capable of independently operating a plurality of communication channels | |
JP2020113137A (ja) | ストレージ装置 | |
US9684613B2 (en) | Methods and systems for reducing spurious interrupts in a data storage system | |
US9189166B2 (en) | Multi-host SATA controller | |
WO2023174146A1 (zh) | 卸载卡命名空间管理、输入输出请求处理***和方法 | |
TWI649658B (zh) | 用於分散式虛擬化之設備、系統、控制器及方法 | |
US10817446B1 (en) | Optimized multiport NVMe controller for multipath input/output applications | |
TW200407712A (en) | Configurable multi-port multi-protocol network interface to support packet processing | |
US9047264B2 (en) | Low pin count controller | |
CN115396250B (zh) | 具有一致事务排序的多插槽网络接口控制器 | |
US8996772B1 (en) | Host communication device and method with data transfer scheduler |
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 | ||
GR01 | Patent grant |