CN118056191A - 具有可配置传输的多平面、多协议存储器交换机构造 - Google Patents
具有可配置传输的多平面、多协议存储器交换机构造 Download PDFInfo
- Publication number
- CN118056191A CN118056191A CN202280055430.6A CN202280055430A CN118056191A CN 118056191 A CN118056191 A CN 118056191A CN 202280055430 A CN202280055430 A CN 202280055430A CN 118056191 A CN118056191 A CN 118056191A
- Authority
- CN
- China
- Prior art keywords
- switch
- data
- memory
- address
- destination
- 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
Links
- 239000004744 fabric Substances 0.000 title description 4
- 238000012546 transfer Methods 0.000 claims abstract description 34
- 238000004891 communication Methods 0.000 claims description 45
- 238000000034 method Methods 0.000 claims description 35
- 230000005540 biological transmission Effects 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 11
- 238000013507 mapping Methods 0.000 claims description 10
- 230000002093 peripheral effect Effects 0.000 claims description 4
- 230000011664 signaling Effects 0.000 claims description 2
- 238000012544 monitoring process Methods 0.000 claims 1
- 230000005641 tunneling Effects 0.000 claims 1
- 239000003795 chemical substances by application Substances 0.000 description 23
- 239000000872 buffer Substances 0.000 description 16
- 230000008569 process Effects 0.000 description 16
- 238000012545 processing Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 11
- 238000004590 computer program Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 8
- 238000011144 upstream manufacturing Methods 0.000 description 7
- 238000001914 filtration Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000006872 improvement Effects 0.000 description 3
- 238000002955 isolation Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 238000013515 script Methods 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000003999 initiator Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000010668 complexation reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- 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/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
公开了一种多平面、多协议存储器交换机系统。在一些实施例中,存储器交换机包括多个交换机端口,该存储器交换机通过多个交换机端口中的一个或多个相应的交换机端口可连接到一个或多个根联合体(RC)设备,并且该存储器交换机通过多个交换机端口中的其他交换机端口集合可连接到端点集合,其中该集合包括零个或多个端点;高速缓存行交换引擎,被配置为在两个端点之间提供数据交换路径,并将一个端点的地址空间映射到另一个端点的地址空间;以及批量数据传送引擎,被配置为促进作为源‑目的地数据流的两个端点之间的数据交换,一个端点被指定为源地址,并且另一个端点被指定为目的地地址。
Description
相关申请的交叉引用
本申请要求2021年6月9日提交的美国临时专利申请No.63/208,618的权益,该美国临时专利申请的全部内容通过引用并入本文。
技术领域
本公开涉及使用内部端点机制支持批量数据传送和快速高速缓存行交换的存储器交换机系统。
背景技术
自人工智能、机器学习、云计算等出现以来,数据量已经急剧增加。该急剧的数据增长要求高速、高带宽、低时延的解决方案(例如服务器)以便无缝数据处理。外围组件互连快速(PCIe)是广泛用于处理大量数据的技术之一。然而,PCIe具有一些缺点,诸如高通信开销、由于小的分组传送大小所致的降低性能、缺乏负载平衡等。计算机快速链路(CXL)构建在第五代PCIe(PCIe 5.0)的物理和电接口之上,其具有建立一致性、简化软件栈并维持与现有标准兼容性的协议。虽然CXL已经演进到改进主机与端点设备的通信,其中根联合体设备(例如,主机)和端点设备是两种主要类型的PCIe设备,但是CXL目前没有解决端点到端点通信。
发明内容
为了解决上述缺点,提供了一种多平面、多协议存储器交换机系统。在一些实施例中,存储器交换机包括多个交换机端口,该存储器交换机通过多个交换机端口中的一个或多个相应的交换机端口可连接到一个或多个根联合体(RC)设备,并且该存储器交换机通过多个交换机端口中的其他交换机端口集合可连接到端点集合,其中该集合包括零个或多个端点;高速缓存行交换引擎,其被配置为在两个端点之间提供数据交换路径,并将一个端点的地址空间映射到另一个端点的地址空间;以及批量数据传送引擎,其被配置为促进作为源-目的地数据流的两个端点之间的数据交换,一个端点被指定为源地址,并且另一个端点被指定为目的地地址。
上述和其他优选特征——包括元件组合和实现的各种新颖细节——现在将参照附图更具体地描述,并在权利要求书中指出。将理解的是,特定的方法和装置仅通过说明的方式并且不是作为限制示出。如本领域技术人员将理解的,可以在各种各样且众多的实施例中采用本文解释的原理和特征。
附图说明
公开的实施例具有优点和特征,所述优点和特征将从具体实施方式、所附权利要求书和所附各图(或附图)更容易地清楚。各图的简要介绍如下。
图1图示了根据一些实施例的示例性现有PCIe系统。
图2图示了根据一些实施例的包括分层的多协议PCIe/CXL存储器交换机架构的示例性系统。
图3图示了根据一些实施例的分层多协议交换机的示例性拓扑和实现。
图4图示了根据一些实施例的交换子系统的组件。
图5图示了根据一些实施例的通过多平面、多协议交换机使用fabQ协议进行批量数据传送的示例性过程。
图6图示了根据一些实施例的用于存储器交换系统中的快速高速缓存行交换的示例性过程。
具体实施方式
各图(图)和以下描述仅通过说明的方式涉及优选实施例。应该注意的是,从下面的讨论中,本文公开的结构和方法的替代实施例将容易地被认为是在不脱离所要求保护内容的原理的情况下可以采用的可行替代方案。
现在将对几个实施例进行详细参考,其示例在附图中图示。注意,只要可行,相似或相同的附图标记可以在各图中使用,并且可以指示相似或相同的功能性。仅为了说明的目的,各图描绘了所公开的系统(或方法)的实施例。本领域的技术人员将从下面的描述中容易地认识到,在不脱离本文描述的原理的情况下,可以采用本文说明的结构和方法的替代实施例。
PCIe是一种高速串行计算机扩展总线标准。它是一种常见的主板接口,用于将计算服务器的中央处理单元(CPU)连接到数据中心中的外围硬件。外围硬件可以是图形卡、硬盘驱动器主机适配器、固态设备(SSD)、以太网网络适配器等。PCIe具有对先前标准的许多改进,包括更高的最大系统总线吞吐量、更少的I/O引脚数、更小的物理占用空间(例如,针对总线设备的更小、更好的性能扩展,以及对先进错误检测和报告机制以及本机热插拔功能性的支持)。
PCIe总线和老式PCI之间的显著差异是总线拓扑。PCI使用共享并行总线架构,其中(一个或多个)PCI主机和设备共享地址、数据和控制线的公共集合。相比之下,PCIe基于点对点拓扑,其中使用单独的串行传输和接收链路将每个端点设备连接到(一个或多个)主机。主机——通常是根联合体(RC)设备——是与CPU和存储器连接的PCIe拓扑的根。端点设备或端点是驻留在拓扑底部的设备,并且实现朝向RC设备的单个上游端口。例如,端点可以是SSD或图形处理单元(GPU)。端点没有与CPU或存储器的连接。由于共享总线拓扑,对PCI总线的访问被仲裁(例如,在多个主设备的情况下)并且在单个方向上一次被限制于一个主设备。另一方面,PCIe总线链路支持任何两个端点设备之间的全双工通信。例如,PCIe 5.0跨单个可变宽度的PCIe接口提供高达每秒32千兆的传送(GT/s)。
由于在CPU和端点设备上可支持有限数量的PCIe接口,因此多端口PCIe交换机通常被并入数据中心服务器设计中,以增加设备之间的PCIe扇出。PCIe交换机通过一个或多个PCIe端口连接到一个或多个RC设备(例如,通常是CPU主机),并通过剩余的PCIe端口连接到附属端点设备。PCIe交换机可以扩展有限数量的PCIe接口,使得对于主机而言更多的PCIe接口可用来支持更多的端点设备。PCIe接口在端点设备之间提供链路级可靠性;然而,在交换PCIe网络中不存在端到端的可靠性协议。
PCIe和以太网具有共性和区别。以太网包含提供高性能串行通信的一系列有线联网技术。基于最近的标准,以太网可以跨数据中心中的局域网(LAN)之上的设备和系统之间的每链路传输高达每秒800千兆位的数据。通过以太网传达的数据流通常被划分成帧或分组,根据开放系统互连(OSI)网络模型,所述帧或分组承载多层通信协议和数据。像PCIe一样,以太网支持点对点链路上的源和目的地之间的全双工通信。以太网上的源和目的地可以经由中间交换机或路由器互连。在网络上交换的以太网分组在大小方面可以从64字节(64B)变化到大的最大传输单元或MTU的值(例如,在一些情况下高达16千字节/KB)。以太网交换机通常不提供可靠性保证。例如,当网络拥塞或损坏发生时,以太网交换机可能丢弃分组。以太网还可以将流控制消息递送到源,并依靠端点源/目的地硬件和软件栈来实现更高层协议上的端到端可靠性。
图1图示了根据一些实施例的示例性现有PCIe系统100。PCIe系统100是用分层树结构构建的标准PCIe系统。在图1中所示的分层树结构中,单个RC 102连接到公共地址域内的多个端点104。PCIe交换机106充当包括RC 102和端点104(例如,端点0-4)的所有PCIe设备之间的透明桥。在一些实施例中,PCIe交换机106还可以支持非透明桥接(NTB),使得多个RC设备可以通过PCIe交换机106中的存储缓冲区(未示出)互连。在这样的情况下,每个RC以及其相关联的端点集合表示不同的PCIe寻址域。PCIe交换机106的NTB存储缓冲区可以促进PCIe设备之间的域间通信。如描绘的,每个PCIe节点或设备可以由三重BDF来标识,其中B标示总线号,D标示设备号,并且F标示功能号。功能号F指示设备中可以独立于该设备的其他功能性而合理使用的任何功能性。例如,GPU卡可以暴露视频组件的功能,并暴露音频组件的单独功能,即使这些组件存在于相同设备上。通常,当在PCIe树中使用设备的多个实例时,功能号F可以标识设备的每个实例。例如,SSD可以暴露128个虚拟功能。128个虚拟功能中的每一个对每个用户而言都表现为虚拟SSD,并且功能号F标识虚拟SSD。
PCIe设备之间的通信基于事务层分组(TLP)。在下游方向或上游方向上,PCIe TLP传送是以单位执行的,其对于整个树可以具有单个最大大小。上游端口是指向RC设备方向的端口,并且通过上游端口到达RC设备的连接是上游的。下游端口是指向远离RC设备的端口,并且通过下游端口到达端点的连接是下游的。TLP的数据有效负载大小不能超过最大有效负载大小(MPS)。例如,PCIe 5.0中的MPS是4KB。由于PCIe设备的有限支持,TLP通常比MPS小得多。通常,分组传输大小的范围从每TLP 32字节到512字节。
PCIe系统面临许多挑战。由于对于传统CPU负载/存储访问的小的TLP传送大小,PCIe系统可能生成高的通信开销和降低的性能。该问题可以用使用固定功能卸载引擎来缓解,诸如主机RC上的数据流式传输加速器(DSA)或端点设备上的类似引擎。然而,使用额外的引擎可能添加对于每个参与PCIe节点的成本、复杂性和面积。
PCIe系统的另一个问题是,没有负载平衡或从CPU到BDF(例如,PCIe节点)的替代路径选择来减少拥塞和性能损失。此外,服务质量(QoS)控制是基本的,并且在大多数服务器系统中未部署。尽管在现代PCIe设备和交换机中支持业务类、虚拟信道和仲裁策略,但多厂商生态系统中的运营挑战限制了高级业务流管理的采用。相反,经由QOS和区分服务的业务工程化已经很好地标准化,并且跨多厂商以太网系统可互操作地部署。
附加地,一旦枚举并配置了树结构,就难以在不干扰其他设备配置的情况下改变PCIe系统中的个体路径。与以太网网络不同,在PCIe系统启动后,PCIe系统中的上游、下游和整个拓扑的标识是固定并且静态的。这阻止了(一个或多个)PCIe网络的动态故障交换和/或供应。
如图1中所描绘,PCIe交换机106可以允许对等通信,例如端点之间的通信。然而,在树拓扑中,上游端口通常支持比下游端口总和低得多的带宽。这可能造成带宽阻塞点。附加地,通过PCIe的对等通信需要特殊处理,并且具有弱的安全特性。
无论是在透明还是非透明桥接模式下操作,PCIe交换机都还受制于增大的故障域大小。透明的PCIe桥隔离了PCIe总线分段,从而提供扩展负载数量的能力。非透明的PCIe桥用于支持多处理器能力。非透明PCIe桥在总线分段之间添加了地址域隔离,并充当发现软件的端点,并且在两个域之间转换地址。当一个PCIe设备失效时,它通常引起交换机/桥上所有设备上的级联故障,无论使用的是透明还是非透明桥接模式。因为加载(例如,存储操作)的发起者通常等待事务完成,所以未能响应TLP的设备可能引起发起者无限期挂死。来自无限期挂死的永久信用损失可能进一步引起级联故障。PCIe系统中经由PCIe交换机互连的设备越多,故障的爆炸半径就越高。
在图1中,系统100将拓扑灵活性放置于端点(虚拟实例)中,并在PCIe交换机106中实施访问控制服务(ACS)。为了寻址PCIe设备,必须启用到系统100的输入/输出(I/O)地址空间或存储器映射地址空间的映射。系统100的固件、设备驱动程序或操作系统可以对基址寄存器(BAR)进行编程,以通过向设备的PCIe控制器写入配置命令来向PCIe设备通知其地址映射。因为所有PCIe设备在系统复位时都处于未配置状态,所以PCIe设备不具有向它们本机分配的地址。因此,系统100的操作系统或设备驱动程序不能使用本机分配的地址与PCIe设备通信,并且交换机不能通过本机分配的地址向/从PCIe设备发送/接收业务。BAR只是可以位于物理存储器空间中的存储器范围,并且不改变PCIe通信模式。PCIe交换机(例如,PCIe交换机106)依赖于BAR的完整编程来知道如何在附接的PCIe对等设备(例如,端点104)之间交换业务。
基于PCIe 5.0,CXL作为高速CPU到设备和CPU到存储器互连的开放标准发布。CXL被设计成加速下一代数据中心服务器的性能。CXL构建于PCIe物理和电气接口之上,其具有在三个关键领域中的协议:I/O、高速缓存和存储器一致性,即CXL.io、CXL.cache和CXL.mem。CXL技术维持CPU存储器空间和附接设备上的存储器之间的存储器一致性,其允许资源共享以得到更高的性能、降低的软件栈复杂性和更低的总体系统成本。
CXL.cache协议定义了主机和设备之间的交互,从而允许附接的CXL设备使用请求-响应方法以非常低的时延高效地高速缓存主机存储器。CXL.mem协议使用加载和存储命令向主CXL设备(通常是主机处理器)提供对附属CXL设备的存储器(例如加速器、动态随机存取存储器(DRAM)、闪存)的访问。该方法可以支持易失性和持久性存储器架构二者。CXL.cache和CXL.mem二者允许直接与CPU高速缓存行交互。根据CXL规范,对于这些事务要求物理地址,这消除了主机到主机的传送,因为这将引起两个独立主机之间的地址解析冲突。CXL还添加了对CPU高速缓存行的低时延直接注入。然而,CXL目前不允许端点之间的对等通信。也就是说,端点之间的所有数据移动/通信都必须通过根联合体来促进,并且通信依赖于根联合体中的全局物理地址空间的维护。PCIe/CXL交换机目前仅作用于增加来自小量CPU通道的扇出。
多平面、多协议PCIe/CXL系统概述
图2图示了根据一些实施例的示例性系统200,其包括分层的多协议PCIe/CXL存储器交换机架构。与图1中的常规PCIe系统100相比,图2的PCIe/CXL交换机202具有优越的拓扑灵活性、可靠性和可配置的传输属性。
PCIe/CXL交换机202提供支持任意拓扑拆分的多端口、多平面构造。图2包括多个PCIe树。对于每个PCIe树,PCIe/CXL交换机202的交换机端口可以连接到(一个或多个)根联合体或者与(一个或多个)根联合体相关联的端点。与图1中的PCIe系统100不同——图1中的PCIe系统100要求分配NTB存储缓冲区以在寻址域之间桥接,图2中的网格可以沿着任意边界被分段以创建PCIe/CXL源和目的地的完全扁平的树。因此,图2中的PCIe/CXL交换机202在附接的节点之间提供可靠的基于分组的传输,包括从主机到主机、主机到端点和端点到端点的有效负载传送。即使当端点与不同的主机RC相关联时,图2中的PCIe/CXL交换机202也可以确保可靠的分组传输。
PCIe/CXL交换机202在设备之间提供PCIe连接性的多个可配置平面:
(i)物理附近设备/组件204之间的低时延(例如<50纳秒)优化的交换路径。例如,设备/组件204可以是用BDF标识并附接到PCIe总线的设备,或者是在其他环境中使用或附接的其他物理组件204(例如,CXL链路)。
(ii)如206中所示的用于任意非邻居通信的单级PCIe/CXL交换树,以及
(iii)如208中所示,通过2级协议不可知信元交换机的缓冲批量传输。
缓冲批量传输为流式传输引擎提供了优化的批量存储器读取/写入,并且可以桥接多个通信协议。通信协议包括但不限于PCIe、CXL、以太网、传输控制协议/互联网协议(TCP/IP)以及OSI模型的层2(数据链路层)、层3(网络层)和层4(传输层)的其他网络协议。
在一些实施例中,可以将(i)的优化交换路径实现为(ii)中完全任意的PCIe/CXL交换机的操作模式。例如,(i)的优化交换路径可以通过使用与调度优化相组合的低时延直接相邻数据路径来实现。低时延直接相邻数据路径可以是(ii)的更大多跳数据路径的组件。调度优化可能优选低时延传送,但是潜在地以中央控制的仲裁和调度为代价。
在每个PCIe树内,每个端点(如下图3中所示)都是彼此的对等体,使得对等分组传送不要求通过根联合体或附加交换机的中间跳。由于同一个PCIe树的端点在没有RC和附加交换机的情况下彼此通信,所以实现了跨所有端点的完全交换和节省工作的带宽。
图2中的当前PCIe/CXL系统200使用内部PCIe/CXL端点机制来提供进入比标准PCIe/CXL系统具有更多功能性的协议的桥接。在一些实施例中,交换机202的内部端点被配置为作为完全PCIe端点对系统200的其余部分可见,并且通过标准协议(例如,BDF、BAR)充当对所有设备的PCIe对等体。内部端点不是电附接到外部接合(pinned)PCIe端口(例如,在交换机202的芯片外部)的标准外部端点。在一些实施例中,一个或多个内部端点被配置为向外部端点暴露用于(i)批量数据传送引擎(fabQ)和(ii)快速高速缓存行交换引擎(fabX)的存储器接口。这使能比先前的PCIe交换机树中可用能力更大的互通信能力。例如,在本PCIe/CXL系统200中使用内部端点允许在树内分解PCIe/CXL设备(例如,以防止共享命运故障模式)、类似于联网设备的QoS感知分类和业务工程化、高级安全策略等。内部PCIe/CXL端点可以使能具有丰富语义上下文的数据流。如204、206和208中所示,内部PCIe/CXL端点也可以应用在任何构造中,以在功能要求内优化系统性能和时延。将参照图3和图4详细描述内部PCI/CXL端点、fabQ和fabX。
多平面、多协议PCIe/CXL系统实现
图3图示了根据一些实施例的分层多协议交换机的示例性拓扑和实现300。如图3中所示,交换机302通过单级PCIe/CXL交换机304或2级缓冲信元交换机306提供多个平面来访问端点存储器区域。每个平面都具有带宽、时延和功能属性的不同组合,系统可以动态选择所述组合来适应所期望的分组传送类型。
在一些实施例中,交换机302可以允许在直接连接路径308(例如,图2中的路径204)或交换路径310(例如,图2中的路径208)上直接对物理系统地址进行纯PCIe/CXL读取和写入。在该情况下,数据传送由PCIe/CXL消息传输和排序规则管控。
替代地,交换机302可以使用fabQ控制来发起通过交换路径312(例如,图2中的路径206)的数据移动。fabQ控制结构暴露在内部端点314的BAR空间中。使用fabQ协议通过在附接的存储器区域之间的交换路径312的数据移动可以采用网络型寻址、通信、安全模型等。
替代地,交换机302也可以通过路径308或者在单级PCIe/CLS交换304的级别上,将直接fabX窗口访问转换成对目的地存储器区域的访问。直接fabX窗口访问在内部端点314的fabX BAR空间内执行,并遵循fabX协议语义。
fabQ和fabX提供的附加间接性可以用于提供超出用标准PCIe或CXL交换机和接口提供的那些的附加性能、隔离、弹性和寻址特性。
在一些实施例中,图3的多层和多协议PCIe/CXL交换机302可以提供独特和安全的通信接口,包括(i)用于使用第一层(例如,308)和第二交换层(例如,312)的快速高速缓存行交换的fabX,以及(2)用于第三层(例如,310)中的批量数据传送的fabQ。
在一些实施例中,交换机302还可以被配置为用传统的存储器地址映射能力(诸如非透明桥(NTB))来补充接口(i)和(ii)。这样,交换机302可以使得分配给NTB的系统存储器能够用作到非系统存储器(例如,不同PCIe层级中的地址)的直通地址映射,从而支持不同PCIe层级中的设备之间的直接PCIe业务。
如图4中所示,在一些实施例中,交换子系统400包括fabX引擎402和fabQ引擎404,以分别实现fabX快速高速缓存行交换和fabQ批量数据传送。交换子系统400可以至少由与一个或多个内部端点314耦合的交换机302形成。交换子系统400也可以划分成fabQ子系统和fabX子系统,这取决于它们分别执行的功能。在图4中,fabQ引擎404包括协议代理406、存储器代理408和缓冲交换路径模块410。在一些实施例中,一个或多个远程交换机或交换子系统(其中各自包括fabX引擎和fabQ引擎)也可以与本地交换子系统400通信,以执行本文描述的功能性。
FabX实现
返回参考图3,交换机302可以使用fabX引擎402实现快速高速缓存行交换。在一些实施例中,fabX引擎402可以将两个PCIe/CXL端点之间的存储器窗口配对。基于该对,fabX引擎402可以通过生成适当的目的地存储器写入,使得一个地址空间中的写入能够别名到另一个地址空间上。两个地址空间之间的别名或映射基于来自内部端点314的BAR窗口。其他地址空间可能潜在地跨PCIe树或甚至网络连接来访问。在一些实施例中,fabX引擎402可以支持记分板模式(例如,动态指令调度和执行)以允许高效的背压和通知能力,这进一步触发远程CPU上的高速缓存行监视器或增强的消息信令中断(MSI-X中断)。
在一些实施例中,当与CXL.cache一起使用时,fabX引擎402可以允许目的地存储器写入被直接注入到接收处理器的高速缓存中。即使写入fabX的源使用除CXL之外的不同协议(例如PCIe),这也是适用的。在一些实施例中,响应于来自源的写入,fabX引擎402可以在目的地处生成CXL存储器写入或使写入无效。FabX引擎402然后可以按需从源存储器或从片上高速缓存中拉取高速缓存行。基于CXL.cache,fabX引擎402可以在高速缓存驱逐时将任何片上高速缓存刷新到目的地DRAM。不需要数据直接I/O(DDIO)。没有有用的数据由于新的数据加载而从高速缓存(例如,目的地DRAM)中被逐出。这样,fabX引擎402不提供高速缓存污染,并且CPU可以在旋转轮询循环中休眠,直到检测到高速缓存更新。作为结果,降低了与在不一致的CPU之间移动低时延高速缓存行相关联的系统复杂性,并且显著改进了主机CPU效率。
在一些实施例中,fabX引擎402可以允许通过网络远程运送数据传送。对于本地fabX移动,fabX引擎402可以将来自源的存储器访问转换成在目的地处的适当存储器访问。FabX引擎402也可以执行存储器访问到远程存储器目的地的转换。在一些实施例中,fabX引擎402可以在网络连接内隧道传输(tunnel)来自源的存储器访问,其中该网络连接被配置为在远程交换机处的预定义目的地存储器空间中终止。例如,fabX引擎402可以执行fabX写入操作。fabX写入可能在源处作为PCIe写入起源于发送CPU到fabX BAR区域。fabX引擎402然后可以通过网络连接将fabX写入隧道传输到远程交换机。远程交换机可以具有与图3中所示的相同形式。远程交换机然后可以使用第二个远程fabX引擎来将事务(例如,fabX写中的数据)变换成对远程CPU的存储器空间的适当CXL写入,连同警告接收CPU的一个或多个适当的通知。
FabQ实现
交换机302可以使用fabQ引擎404实现批量数据传送。FabQ引擎404可以用于在任意本地或远程端点上的两个软件接口之间生成高带宽双向数据流。与标准的PCIe/CXL交换方法相比,fabQ引擎404可以将层2以太网转发语义应用于从PCIe/CXL接口接收的数据,从而扩展了寻址能力并增加了系统或网络内数据流的安全性和弹性。
交换机302通过fabQ机制提供了一种使用以下各项通过PCIe交易操纵信元的方式:
·提交队列连同其安全关联,
·经由分散-聚集列表(SGL)的存储器指针,连同其安全关联,以及
·完成队列。
提交队列是包括要被执行或传送的新条目(例如,指向数据有效负载的指针或数据有效负载)的缓冲区,并且完成队列是用于发布已完成条目的状态的缓冲区。数据或数据有效负载标识包括(一个或多个)报头和数据二者的数据分组的数据部分。SGL是具有相关联控制和大小信息的缓冲区位置列表,其用于示出操作应该如何执行。如图4中所示,本地fabQ子系统包括协议代理406、存储器代理408和缓冲交换路径模块410。
协议代理406处理与传输数据分组相关联的报头。在一些实施例中,协议代理406可以生成与数据分组相关联的转发报头和传输报头,并将生成的报头提供给交换机302。协议代理406也可以接收从交换机302递送的报头。协议代理406可以进一步从具有完成队列的交换机302接收通知更新,并相应地操作。例如,协议代理406可以向源设备通知数据事务已经失败。
存储器代理408通过使用分散-聚集列表来标识传输数据分组的有效负载部分,其中分散-聚集列表指向存储器中的缓冲区。在一些实施例中,存储器代理408可以经由fabX向协议代理406发送分散聚集列表。协议代理406然后可以标识要发送到交换机302的传输数据分组的传输报头中的分散聚集列表。在其他实施例中,存储器代理408可以经由提交队列和完成队列将分散聚集列表直接发送到交换机302。
fabQ协议在本地对等端点之间转发分组的方式在下面解释。在一些实施例中,为交换机302保留连续的地址空间或范围。fabQ交换PCIe/CXL子系统中的每个逻辑流在该保留的连续地址空间中被分配唯一的层2(L2)转发媒体访问控制(MAC)地址。逻辑流可以由特定的源-目的地对来表示。在一些实施例中,该地址范围可以被定大小为将在附接的PCIe/CXL节点的整个交换域中支持的流(例如,源-目的地对)的总数。通常使第一地址(即基址)是可配置的。
在一些实施例中,交换机302可以用以下过程使用fabQ协议来交换数据分组。首先,响应于来自源设备的数据分组,交换机302可以接收与协议代理406生成的数据分组相关联的传输报头。传输报头具有L2转发报头,并且转发报头包括目的地MAC地址(dmac)。交换机302然后可以将分组dmac与L2转发地址的保留连续范围进行比较,以确定dmac地址是否在该范围内。
如果dmac地址在该范围内,则交换机302可以基于dmac地址和转发地址范围来标识目标标识符,并且经由对等fabQ通信将数据分组传输到由目标标识符表示的目的地设备。在一些实施例中,交换机302可以从分组dmac减去基址来确定目标ID。
然而,如果目的地MAC地址在转发地址范围之外,则数据分组没有资格进行对等fabQ传输,并且因此由交换机302作为普通网络分组来处理。交换机302可以将数据分组转发到网络端口进行传输。在一些实施例中,用于转发数据分组的网络端口是以太网网络端口。
通过保留连续的dmac地址范围并使用私有的组织唯一标识符(OUI),交换机320可以用简单的比较器电路替换用于fabQ转发查找的大量的内容可寻址存储器条目。因此,芯片面积和功率显著减小。
在一些实施例中,经由fabQ协议的通信基于2级缓冲交换路径,例如,由缓冲交换路径模块410管理。2级缓冲交换路径允许先进的每分组策略和功能,诸如流跟踪和管理、高效数据流式传输、QoS等。fabQ缓冲信元交换路径可以用于本地PCIe/CXL对等通信,以及去往/来自网络连接。当使用fabQ协议进行外部网络连接时,交换机302的信元交换机306可能需要与其他外部交换机交互,作为数据路径的一部分。基于fabQ,交换机302的信元交换机306可以使能统一的本地/网络协议,用于使用一致的报头转发和分类语义将数据移出接口(例如,以太网或PCIe/CXL)。这产生了比现有方法更大得多的协议效率。这些现有方法使用封装(例如,以太网上的PCIe/CXL)或中间协议(例如,PCIe 5.0)在PCIe/CXL和网络接口域之间桥接。
信元交换机306需要最少的L2转发报头来使用fabQ协议在PCIe/CXL端点之间交换对等分组。然而,应用不需要为每个对等分组调用联网栈。取而代之,应用软件可以请求系统软件为给定的源-目的地对提供单次L2报头。应用软件可以对给定源-目的地对的后续数据分组重复使用相同的L2报头,这降低了对等通信复杂性和时延。例如,第一数据分组与第一转发报头相关联。在接收到第一数据分组之后的第二数据分组时,信元交换机306可以确定是否为第二数据分组生成新的转发报头。如果第二数据分组和第一数据分组来自相同的源设备并且去往相同的目的地设备,则信元交换机306可以将第一转发报头与第二数据分组相关联,而不生成新的转发报头。否则,信元交换机306可以为第二数据分组生成新的L2转发报头。
从应用软件的角度来看,L2转发报头是不透明的令牌,随着端点之间的每个有效负载数据传送,该不透明的令牌被传递到信元交换机306。在其他实施例中,可以使应用软件完全不知道该令牌。例如,网络栈可以预发布报头,并且硬件从预发布的报头和由应用软件生成的数据中导出L2报头。
在一些实施例中,类似于网络分组,信元交换机306还允许对等分组受制于分类和安全过滤。这可以防止未授权的应用软件访问要求隔离的端点。信元交换机306可以使用三元内容可寻址存储器(TCAM)结构实现过滤。TCAM允许匹配多个报头的通配符条目。只有当数据分组与TCAM中的条目匹配时,信元交换机306才可以允许该数据分组。在一些实施例中,软件在连续的组中分配对等目标,使得单个通配符条目可以匹配组中的所有目标流。通过使用分组dmac地址作为过滤机制,信元交换机306可以使用相同的TCAM结构将网络策略和过滤语义直接应用于对等传送。相比之下,在典型的PCIe交换机中,通过限制将哪些物理地址映射到每个进程的虚拟地址空间来实现隔离。
在传统的网络交换机中,网络流被背压,并且基于关于交换机缓冲区占用率的各种度量,使用缓冲区准入控制机制来选择性地丢弃网络分组。然而,如本文所述,可以应用增强的准入控制机制来防止从PCIe/CXL端点调度对等分组和对等体-网络分组二者,直到信元交换机306中的缓冲可用。对于来源于PCIe/CXL端点的任何分组,信元交换机306维护关于哪些流拥塞的精确信息。当流在目的地侧处理中变得阻塞时,信元交换机306可以阻挡对应的源队列,使得不调度数据分组从PCIe/CXL端点设备的存储器中提取。因此,减少了交换机缓冲区将被充分填充以触发准入控制的可能性,并且避免了对其他流的不必要的节流。
与现有的PCIe/CXL交换机不同,交换机302能够将网络可靠性属性应用于在PCIe/CXL端点之间交换的对等分组。例如,在分组损坏的情况下,可以向协议代理406警告出现了问题。协议代理406可以向源设备通知事务失败而不引起系统崩溃或挂死,和/或协议代理406可以禁用对应的对等分组流,直到清除发生。
交换机302还可以提供附加的可靠性机制。该机制可以使能使用对等通信路径从网络分组到目的地PCIe/CXL端点的不成功递送中恢复。在一些实施例中,当入站网络分组遇到错误时,交换机302可以经由修补队列将分组转向到协议代理406。协议代理406可以接收完全的分组,确定并解决该问题,并将该分组重新发送到原始意图的目标队列。当协议代理406中的系统软件重新发送分组时,协议代理406可以使用具有目标流的dmac地址的L2报头来指定最终目标。该L2报头仅用于本地交换目的,并且不递送到目标,也就是说,仅递送原始/修改的分组。该方法允许将修补的分组发送到它们意图的最终目的地,而不必对交换机进行编程来识别通常来源于另一个网络端点的分组。
图5图示了根据一些实施例的使用fabQ协议的批量数据传送的示例性过程500。在一些实施例中,存储器交换机系统包括通信地耦合到多个根联合体设备和端点的至少一个多平面、多协议交换机(例如,交换机302)。如示例性过程500中所示,与一个或多个内部端点连接的至少一个交换机提供fabQ控制。内部端点被配置为帮助实现fabQ控制,并且不是电附接到外部接合PCIe端口的标准外部端点。
在步骤505,接收来自源设备的数据。例如,数据可以描述从一个外部端点到另一个外部端点的访问。在步骤510,例如由协议代理406为数据生成一个或多个报头以形成数据分组。一个或多个报头中的一个(例如,转发报头)包括与数据分组相关联的目的地MAC地址。
在一些实施例中,L2转发地址的连续地址范围被保留给交换机。连续地址范围具有可配置的第一地址/基址。在步骤515,基于分组dmac与保留的连续范围的比较,确定目的地MAC地址(dmac)是否在转发地址的保留范围内。
如果dmac地址在该范围内,则在步骤520标识目标标识符,并且在步骤525经由对等fabQ通信将数据分组传输到由目标标识符表示的目的地设备。在一些实施例中,基于从分组dmac减去基址来确定目标ID。
然而,如果分组dmac在转发地址范围之外,则这意味着数据分组没有资格进行对等fabQ传输。该数据分组将作为正常的网络分组来处理。在步骤530,数据分组被转发到网络端口(例如,以太网网络端口)用于传输。
图6图示了根据一些实施例的用于存储器交换机系统中的快速高速缓存行交换的示例性过程600。在一些实施例中,存储器交换机系统包括通信地耦合到多个根联合体设备和端点的至少一个多平面、多协议交换机(例如,交换机302)。如示例性过程600中所示,与一个或多个内部端点连接的至少一个交换机提供fabX数据交换。内部端点被配置为帮助fabX实现,并且不是电附接到外部接合PCIe端口的标准外部端点。
在步骤605,接收来自源设备的数据有效负载。例如,数据有效负载或数据可以描述从一个外部端点到另一个外部端点的访问。在步骤610,数据有效负载被写入源设备的第一地址空间中。
在步骤615,通过内部端点存储器空间,第一地址空间被映射到目的地设备的第二地址空间。在一些实施例中,内部端点存储器空间可以包括PCIe通信中的内部端点的基址寄存器(BAR)存储器窗口或者CXL通信中的内部端点的CXL存储器窗口。对于本地fabX移动,转换包括将来自源设备的存储器访问直接转换为目的地设备处的适当存储器访问。在一些实施例中,转换还可以包括将存储器访问转换到远程存储器目的地。在一些实施例中,交换机可以与一个或多个内部端点通信,以在网络连接内隧道传输来自源设备的存储器访问,其中网络连接被配置为在远程交换机处的预定义目的地存储器空间中终止。在步骤620,数据有效负载被写入目的地设备的第二地址空间中。
附加考虑
在一些实现中,上述方法的至少一部分可以通过指令来实现,所述指令在执行时使得一个或多个处理设备实行上述过程和功能。这样的指令可以包括,例如,诸如脚本指令的解释指令,或者可执行代码,或者存储在非暂时性计算机可读介质中的其他指令。存储设备830可以通过网络以分布式方式实现,例如作为服务器群或广泛分布的服务器集,或者可以在单个计算设备中实现。
尽管已经描述了示例处理系统,但是本说明书中描述的主题、功能操作和过程的实施例可以在其他类型的数字电子电路系统中、在有形体现的计算机软件或固件中、在包括本说明书中公开的结构以及其结构等同物的计算机硬件中、或者在它们中的一个或多个的组合中实现。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非易失性程序载体上的计算机程序指令的一个或多个模块,用于由数据处理装置执行或控制数据处理装置的操作。替代地或附加地,程序指令可以被编码在人工生成的传播信号上——例如,机器生成的电、光或电磁信号,所述传播信号被生成以编码信息,用于传输到合适的接收器装置,以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基底、随机或串行存取存储器设备,或者它们中的一个或多个的组合。
术语“系统”可以包含用于处理数据的所有种类的装置、设备和机器,其作为示例包括可编程处理器、计算机或多个处理器或计算机。处理系统可以包括专用逻辑电路系统,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,处理系统还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
计算机程序(其也可以被称为或描述为程序、软件、软件应用、模块、软件模块、脚本或代码)可以用任何形式的编程语言来编写,所述编程语言包括编译或解释语言,或者声明性或过程性语言,并且它可以以任何形式来部署,所述任何形式包括作为独立程序或者作为模块、组件、子例程或适合在计算环境中使用的其他单元。计算机程序可以但不需要对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本),存储在专用于所讨论的程序的单个文件中,或者存储在多个协作文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序可以被部署为在一个计算机上或位于一个地点或跨多个地点分布并通过通信网络互连的多个计算机上执行。
本说明书中描述的过程和逻辑流可以由一个或多个可编程计算机来执行,所述一个或多个可编程计算机执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流也可以由专用逻辑电路系统来执行,并且装置也可以被实现为专用逻辑电路系统,所述专用逻辑电路系统例如是FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
作为示例,适合于执行计算机程序的计算机可以包括通用或专用微处理器或二者,或者任何其他种类的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或二者接收指令和数据。计算机通常包括用于执行或实行指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦合到用于存储数据的一个或多个大容量存储设备——例如磁盘、磁光盘或光盘,以从该大容量存储设备接收数据或向其传送数据,或二者兼有。然而,计算机不需要有这样的设备。此外,计算机可以嵌入在另一个设备中,仅举几例,另一个设备例如是移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备(例如,通用串行总线(USB)闪存驱动器)。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,其作为示例包括:半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路来补充或并入其中。
为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实现,该计算机具有用于向用户显示信息的显示设备,例如CRT(阴极射线管)或LCD(液晶显示器)监视器,以及用户可以用来向计算机提供输入的键盘和定点设备,例如鼠标或轨迹球。也可以使用其他种类的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从网络浏览器接收的请求,向用户的用户设备上的网络浏览器发送网页。
本说明书中描述的主题的实施例可以在计算系统中实现,该计算系统包括:后端组件,例如作为数据服务器;或者包括中间件组件,例如应用服务器;或者包括前端组件,例如具有图形用户界面或Web浏览器的客户端计算机,用户可以通过该图形用户界面或Web浏览器与本说明书中描述的主题的实现进行交互;或者包括一个或多个这样的后端、中间件或前端组件的任何组合。该系统的组件可以通过任何形式或介质的数字数据通信(例如通信网络)来互连。通信网络的示例包括局域网(“LAN”)和例如因特网的广域网(“WAN”)。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系是由于在相应的计算机上运行的计算机程序而产生的,并且彼此具有客户端-服务器关系。
虽然本说明书包含许多具体的实现细节,但是这些不应被解释为对可以被要求保护内容的范围的限制,而是被解释为对特定实施例特有的特征的描述。本说明书中在独立实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独或以任何合适的子组合来实现。此外,尽管特征可能在上面被描述为在某些组合中起作用,并且甚至最初被如此要求保护,但是来自所要求保护的组合的一个或多个特征在一些情况下可以从该组合中删除,并且所要求保护的组合可以针对子组合或子组合的变体。
类似地,虽然在附图中以特定的次序描绘了操作,但是这不应该被理解为要求这样的操作以所示的特定次序或顺序次序执行,或者要求所有图示的操作都被执行以实现合期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统组件的分离不应被理解为在所有实施例中都要求这样的分离,并且应该理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或者打包到多个软件产品中。
已经描述了主题的特定实施例。其他实施例在以下权利要求书的范围内。例如,权利要求书中所述的动作可以以不同的次序来执行,并且仍然可以实现合期望的结果。作为一个示例,附图中描绘的过程不一定要求所示的特定次序或顺序次序来实现合期望的结果。在某些实现中,多任务和并行处理可能是有利的。可以提供其他步骤或阶段,或者可以从所描述的过程中消除步骤或阶段。因此,其他实现也在以下权利要求书的范围内。
本文使用的措辞和术语是为了描述的目的,并且不应该被认为是进行限制。
如在说明书和权利要求书中使用的术语“近似”、短语“近似等于”和其他类似短语(例如,“X具有近似Y的值”或“X近似等于Y”)应理解为意指一个值(X)在另一个值(Y)的预定范围内。除非另有指示,否则预定范围可以是正或负20%、10%、5%、3%、1%、0.1%或小于0.1%。
如在说明书和权利要求书中使用的不定冠词“一”和“一个”除非清楚地指示相反的意思,否则应该理解为意指“至少一个”。如在说明书和权利要求书中使用的短语“和/或”应该被理解为意指如此结合的元件的“任一个或二者”,即在一些情况下结合存在并且在其他情况下分离存在的元件。用“和/或”列出的多个元件应该以相同的方式解释,即这样连接的“一个或多个”元件。除了由“和/或”从句具体标识的元件之外,还可以可选地存在其他元件,无论与具体标识的那些元件相关还是无关。因此,作为非限制性示例,,对“A和/或B”的引用当与诸如“包括”的开放式语言结合使用时,在一个实施例中可以仅指代A(可选地包括除B之外的元件);在另一个实施例中可以仅指代B(可选地包括除A之外的元件);在又一实施例中可以指代A和B二者(可选地包括其他元件);等等。
如在说明书和权利要求书中所使用的,“或”应该被理解为具有与如上面定义的“和/或”相同的含义。例如,当分离列表中的项目时,“或”或“和/或”应被解释为包含性的,即包括至少一个,但也包括多于一个的多个元件或元件列表,以及可选地,附加的未列出的项目。仅清楚地指示相反的术语——诸如“……中的仅一个”或“……中的正好一个”或者当在权利要求书中使用时“由……组成”将指代包括多个或元件列表中的正好一个元件。一般而言,术语“或”当在前面带有排他性术语时,诸如“任一个”、“……中的一个”、“……中的仅一个”或“……中的正好一个”,应仅解释为指示排他性替代(即“一个或另一个,但不是二者”)。“基本上由……组成”当在权利要求书中使用时,应具有其在专利法领域中使用的普通含义。
如在说明书和权利要求书中所使用的,关于一个或多个元件的列表,短语“……中的至少一个”应该被理解为意指从元件列表中的任何一个或多个元件中选择的至少一个元件,但是不一定包括元件列表内具体列出的每一个元件中的至少一个,并且不排除元件列表中元件的任何组合。该定义还允许除了在短语“至少一个”所指代的元件列表内具体标识的元件之外,元件可以可选地存在,无论与具体标识的那些元件相关还是无关。因此,作为非限制性示例,“A和B中的至少一个”(或者等效地,“A或B中的至少一个”,或者等效地“A和/或B中的至少一个”)在一个实施例中可以指代至少一个,可选地包括多样一个的A,其中不存在B(并且可选地包括除B之外的元件);在另一个实施例中可以指代至少一个,可选地包括多于一个的B,其中不存在A(并且可选地包括除A之外的元件);在又一个实施例中可以指代至少一个,可选地包括多于一个A,和至少一个,可选地包括多于一个的B(并且可选地包括其他元件);等等。
“包括”、“包含”、“具有”、“包含着”、“涉及”以及其变体的使用意味着包含其后列出的项目和附加项目。
诸如“第一”、“第二”、“第三”等序数术语的使用在权利要求书中,修改权利要求元件本身并不意味着一个权利要求元件相对于另一个权利要求元件的任何优先级、优先顺序或次序,或者方法的动作被执行的时间次序。序数术语仅用作标签,以将具有某一名称的一个权利要求元件与具有相同名称的另一个元件区分开(但是使用序数术语),以区分权利要求元件。
因此,已经描述了本发明的至少一个实施例的几个方面,将领会,本领域技术人员将容易想到各种改变、修改和改进。这样的改变、修改和改进旨在成为本公开的部分,并且旨在处于本发明的精神和范围内。因此,前面的描述和附图仅仅是作为示例。
Claims (20)
1.一种多平面、多协议存储器交换机,包括:
多个交换机端口,所述存储器交换机通过所述多个交换机端口中的一个或多个相应的交换机端口可连接到一个或多个根联合体(RC)设备,并且所述存储器交换机通过所述多个交换机端口中的其他交换机端口集合可连接到端点集合,其中所述集合包括零个或多个端点;
高速缓存行交换引擎,被配置为在两个端点之间提供数据交换路径,并将一个端点的地址空间映射到另一个端点的地址空间;和
批量数据传送引擎,被配置为促进作为源-目的地数据流的两个端点之间的数据交换,一个端点被指定为源地址,并且另一个端点被指定为目的地地址。
2.根据权利要求1所述的存储器交换机,其中,所述批量数据传送引擎与一个或多个内部端点通信,其中所述批量数据传送引擎被配置为:
从源设备接收第一数据;
为所述第一数据生成第一传输报头以形成第一数据分组,所述第一传输报头包括第一转发报头,所述第一转发报头包括目的地媒体访问控制(MAC)地址;
确定包括在第一数据分组的第一转发报头中的目的地MAC地址是否在为存储器交换机保留的转发地址范围内;
响应于目的地MAC地址在转发地址范围内,
基于目的地MAC地址和转发地址范围来标识目标标识符;和
经由对等批量数据传送(fabQ)通信将所述第一数据分组传输到由所述目标标识符表示的目的地设备;和
响应于所述目的地MAC地址在所述转发地址范围之外,将所述第一数据分组转发到网络端口用于传输。
3.根据权利要求2所述的存储器交换机,其中,所述对等fabQ通信使用外围组件互连快速/计算快速链路(PCIe/CXL)通信。
4.根据权利要求2所述的存储器交换机,其中,所述批量数据传送引擎进一步被配置为:
在为存储器交换机保留的连续地址空间中为多个数据流分配转发地址范围,
其中所述连续地址空间的基址是可配置的,并且
其中每个数据流与特定的源和目的地对相关联。
5.根据权利要求4所述的存储器交换机,其中,为了标识所述目标标识符,所述批量数据传送引擎进一步被配置为从所述目的地MAC地址减去所述基址。
6.根据权利要求2所述的存储器交换机,其中,所述批量数据传送引擎进一步被配置为:
在接收第一数据之后接收第二数据;
生成第二数据分组来包括第二数据;
确定是否为第二数据分组生成新的转发报头;和
响应于所述第二数据分组和所述第一数据分组来自相同的源设备并且去往相同的目的地设备,将所述第一转发报头与所述第二数据分组相关联,而不生成新的转发报头。
7.根据权利要求2所述的存储器交换机,其中,响应于经由对等fabQ通信将所述第一数据分组传输到所述目的地设备,所述批量数据传送引擎进一步被配置为:
基于三元内容可寻址存储器(TCAM)对第一数据分组进行分类和过滤,以防止未授权的访问。
8.根据权利要求2所述的存储器交换机,其中,响应于经由对等fabQ通信将所述第一数据分组传输到所述目的地设备,所述批量数据传送引擎进一步被配置为:
将一个或多个网络可靠性属性应用于所述第一数据分组。
9.根据权利要求2所述的存储器交换机,其中,所述一个或多个内部端点被配置成通过存储器交换机的交换机端口连接到存储器交换机的一个或多个端点的PCIe对等体,而所述一个或多个内部端点不电附接到存储器交换机的交换机端口。
10.根据权利要求2所述的存储器交换机,其中,所述对等fabQ通信基于提交队列、分散-聚集列表(SGL)和/或完成队列。
11.根据权利要求2所述的存储器交换机,其中,当目的地MAC地址在转发地址范围之外时,用于转发第一数据分组的网络端口是以太网网络端口。
12.根据权利要求2所述的存储器交换机,其中,所述批量数据传送引擎和所述高速缓存行交换引擎的操作构建在被配置成符合标准的PCIe/CXL交换机的存储器交换机的操作上。
13.根据权利要求1所述的存储器交换机,其中,所述高速缓存行交换引擎进一步被配置为:
从源设备接收数据有效负载;
将数据有效负载写入源设备的第一地址空间中;
将所述第一地址空间映射到目的地设备的第二地址空间,其中通过内部端点存储器空间来执行映射;和
将数据有效负载写入目的地设备的第二地址空间中。
14.根据权利要求13所述的存储器交换机,其中,所述内部端点存储器空间包括PCIe通信中的内部端点的基址寄存器(BAR)存储器窗口或CXL通信中的内部端点的CXL存储器窗口中的至少一个。
15.根据权利要求13所述的存储器交换机,其中,所述高速缓存行交换引擎进一步被配置为经由所述内部端点的BAR存储器窗口将所述源设备的第一地址空间与所述目的地空间的第二地址空间配对。
16.根据权利要求13所述的存储器交换机,其中,为了将所述第一地址空间映射到所述第二地址空间,所述高速缓存行交换引擎进一步被配置为:
执行高速缓存行交换(fabX)写入操作,以将第一地址空间中的数据有效负载写入fabXBAR区域;
从数据有效负载生成数据分组;
通过网络连接将数据分组隧道传输到远程交换机;和
由远程交换机将数据分组传输到目的地设备。
17.根据权利要求13所述的存储器交换机,其中,所述高速缓存行交换引擎进一步被配置为执行高速缓存行监视或增强的消息信令中断中的一个或多个。
18.一种用于交换数据分组的方法,包括:
由高速缓存行交换引擎提供两个端点之间的数据交换路径,并将一个端点的地址空间映射到另一个端点的地址空间,其中一个或多个根联合体(RC)设备通过多个交换机端口中的一个或多个相应的交换机端口连接到存储器交换机,并且端点集合通过所述多个交换机端口中的其他交换机端口集合连接到存储器交换机,其中所述集合包括零个或多个端点;和
通过批量数据传送引擎促进作为源-目的地数据流的两个端点之间的数据交换,一个端点被指定为源地址,并且另一个端点被指定为目的地地址。
19.根据权利要求18所述的方法,其中,为了通过批量数据传送引擎促进数据交换,所述方法包括:
从源设备接收第一数据;
为所述第一数据生成第一传输报头以形成第一数据分组,所述第一传输报头包括第一转发报头,所述第一转发报头包括目的地媒体访问控制(MAC)地址;
确定包括在第一数据分组的第一转发报头中的目的地MAC地址是否在为存储器交换机保留的转发地址范围内;
响应于目的地MAC地址在转发地址范围内,
基于目的地MAC地址和转发地址范围来标识目标标识符;和
经由对等批量数据传送(fabQ)通信将所述第一数据分组传输到由所述目标标识符表示的目的地设备;和
响应于所述目的地MAC地址在所述转发地址范围之外,将所述第一数据分组转发到网络端口用于传输。
20.根据权利要求18所述的方法,其中,为了由高速缓存行交换引擎提供数据交换路径,所述方法包括:
从源设备接收数据有效负载;
将数据有效负载写入源设备的第一地址空间中;
将所述第一地址空间映射到目的地设备的第二地址空间中,其中通过内部端点存储器空间来执行映射;和
将数据有效负载写入目的地设备的第二地址空间中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163208618P | 2021-06-09 | 2021-06-09 | |
US63/208,618 | 2021-06-09 | ||
PCT/US2022/032664 WO2022261200A1 (en) | 2021-06-09 | 2022-06-08 | Multi-plane, multi-protocol memory switch fabric with configurable transport |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118056191A true CN118056191A (zh) | 2024-05-17 |
Family
ID=84390291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280055430.6A Pending CN118056191A (zh) | 2021-06-09 | 2022-06-08 | 具有可配置传输的多平面、多协议存储器交换机构造 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11995017B2 (zh) |
EP (1) | EP4352618A1 (zh) |
CN (1) | CN118056191A (zh) |
WO (1) | WO2022261200A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11947472B2 (en) | 2021-07-18 | 2024-04-02 | Avago Technologies International Sales Pte. Limited | Composable infrastructure enabled by heterogeneous architecture, delivered by CXL based cached switch SoC |
CN117743240B (zh) * | 2024-02-19 | 2024-04-19 | 井芯微电子技术(天津)有限公司 | 一种具备透明和非透明双模式的PCIe桥设备 |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6330623B1 (en) * | 1999-01-08 | 2001-12-11 | Vlsi Technology, Inc. | System and method for maximizing DMA transfers of arbitrarily aligned data |
US6594712B1 (en) * | 2000-10-20 | 2003-07-15 | Banderacom, Inc. | Inifiniband channel adapter for performing direct DMA between PCI bus and inifiniband link |
US6993035B2 (en) * | 2000-12-07 | 2006-01-31 | International Business Machines Corporation | System for routing data packets through a crossbar switch in expansion mode |
US6999436B2 (en) * | 2001-04-16 | 2006-02-14 | Nokia Corporation | Method and apparatus for efficient routing of mobile node packets |
US8966081B1 (en) * | 2002-02-13 | 2015-02-24 | Netapp, Inc. | Method for device security in a heterogeneous storage network environment |
US7200687B2 (en) * | 2003-09-25 | 2007-04-03 | International Business Machines Coporation | Location-based non-uniform allocation of memory resources in memory mapped input/output fabric |
US8949395B2 (en) * | 2004-06-01 | 2015-02-03 | Inmage Systems, Inc. | Systems and methods of event driven recovery management |
US7543096B2 (en) * | 2005-01-20 | 2009-06-02 | Dot Hill Systems Corporation | Safe message transfers on PCI-Express link from RAID controller to receiver-programmable window of partner RAID controller CPU memory |
US20060236063A1 (en) * | 2005-03-30 | 2006-10-19 | Neteffect, Inc. | RDMA enabled I/O adapter performing efficient memory management |
US7469309B1 (en) * | 2005-12-12 | 2008-12-23 | Nvidia Corporation | Peer-to-peer data transfer method and apparatus with request limits |
US7502897B2 (en) * | 2006-06-28 | 2009-03-10 | Intel Corporation | Object based conflict detection in a software transactional memory |
US7853591B1 (en) * | 2006-06-30 | 2010-12-14 | Juniper Networks, Inc. | Protection of database operations |
US8615623B2 (en) * | 2006-08-09 | 2013-12-24 | Nec Corporation | Internet connection switch and internet connection system |
US7813366B2 (en) | 2006-12-19 | 2010-10-12 | International Business Machines Corporation | Migration of a virtual endpoint from one virtual plane to another |
US8090789B1 (en) | 2007-06-28 | 2012-01-03 | Emc Corporation | Method of operating a data storage system having plural data pipes |
US9584446B2 (en) * | 2008-03-18 | 2017-02-28 | Vmware, Inc. | Memory buffer management method and system having multiple receive ring buffers |
JP5598148B2 (ja) * | 2010-08-05 | 2014-10-01 | 富士通株式会社 | スイッチング装置、情報処理装置、及びスイッチング装置の制御方法 |
US8984269B2 (en) * | 2011-02-28 | 2015-03-17 | Red Hat, Inc. | Migrating data among cloud-based storage networks via a data distribution service |
US9652370B2 (en) * | 2013-12-05 | 2017-05-16 | National Instruments Corporation | Address range decomposition |
US9336173B1 (en) * | 2013-12-20 | 2016-05-10 | Microsemi Storage Solutions (U.S.), Inc. | Method and switch for transferring transactions between switch domains |
WO2015100672A1 (zh) | 2013-12-31 | 2015-07-09 | 华为技术有限公司 | 一种扩展PCIe总线域的方法和装置 |
CN103825821B (zh) * | 2014-02-11 | 2017-06-13 | 华为技术有限公司 | 一种报文转发方法以及一种网络接入设备 |
US20150261709A1 (en) | 2014-03-14 | 2015-09-17 | Emilio Billi | Peripheral component interconnect express (pcie) distributed non- transparent bridging designed for scalability,networking and io sharing enabling the creation of complex architectures. |
JP6394062B2 (ja) * | 2014-05-20 | 2018-09-26 | 富士通株式会社 | 情報処理装置およびバス制御方法 |
US9734115B2 (en) * | 2014-11-18 | 2017-08-15 | Industrial Technology Research Institute | Memory mapping method and memory mapping system |
US10067900B2 (en) * | 2015-08-25 | 2018-09-04 | Oracle International Corporation | Virtualized I/O device sharing within a distributed processing node system |
US9940123B1 (en) * | 2015-12-29 | 2018-04-10 | Amazon Technologies, Inc. | Updating device code through a bus |
US10078543B2 (en) * | 2016-05-27 | 2018-09-18 | Oracle International Corporation | Correctable error filtering for input/output subsystem |
US11003614B2 (en) * | 2016-09-06 | 2021-05-11 | Western Digital Technologies, Inc. | Embedding protocol parameters in data streams between host devices and storage devices |
US11025632B2 (en) * | 2018-07-30 | 2021-06-01 | Cisco Technology, Inc. | Serial network communication using intelligent access policies |
GB2576506B (en) * | 2018-08-20 | 2021-06-30 | Advanced Risc Mach Ltd | An apparatus and method for controlling use of bounded pointers |
US10999173B2 (en) * | 2018-11-19 | 2021-05-04 | Cisco Technology, Inc. | Active targeted data plane traffic monitoring for wired networks |
US11038749B2 (en) * | 2018-12-24 | 2021-06-15 | Intel Corporation | Memory resource allocation in an end-point device |
US11184439B2 (en) * | 2019-04-01 | 2021-11-23 | Mellanox Technologies, Ltd. | Communication with accelerator via RDMA-based network adapter |
US11012417B2 (en) * | 2019-04-30 | 2021-05-18 | Centripetal Networks, Inc. | Methods and systems for efficient packet filtering |
US11216404B2 (en) * | 2019-08-05 | 2022-01-04 | Intel Corporation | Mechanism for device interoperability of switches in computer buses |
US20200104275A1 (en) * | 2019-12-02 | 2020-04-02 | Intel Corporation | Shared memory space among devices |
US11392614B2 (en) * | 2020-01-15 | 2022-07-19 | EMC IP Holding Company LLC | Techniques for performing offload copy operations |
US20210373951A1 (en) * | 2020-05-28 | 2021-12-02 | Samsung Electronics Co., Ltd. | Systems and methods for composable coherent devices |
US20200322287A1 (en) * | 2020-06-18 | 2020-10-08 | Intel Corporation | Switch-managed resource allocation and software execution |
US20210117249A1 (en) * | 2020-10-03 | 2021-04-22 | Intel Corporation | Infrastructure processing unit |
-
2022
- 2022-06-08 WO PCT/US2022/032664 patent/WO2022261200A1/en active Application Filing
- 2022-06-08 EP EP22820959.9A patent/EP4352618A1/en active Pending
- 2022-06-08 US US17/835,472 patent/US11995017B2/en active Active
- 2022-06-08 CN CN202280055430.6A patent/CN118056191A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022261200A1 (en) | 2022-12-15 |
EP4352618A1 (en) | 2024-04-17 |
US20220398207A1 (en) | 2022-12-15 |
US11995017B2 (en) | 2024-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10204070B2 (en) | Method, device, system and storage medium for implementing packet transmission in PCIE switching network | |
US20210243247A1 (en) | Service mesh offload to network devices | |
US9450780B2 (en) | Packet processing approach to improve performance and energy efficiency for software routers | |
US8463934B2 (en) | Unified system area network and switch | |
US8806025B2 (en) | Systems and methods for input/output virtualization | |
US9037640B2 (en) | Processing STREAMS messages over a system area network | |
US20150074321A1 (en) | Universal pci express port | |
US10872056B2 (en) | Remote memory access using memory mapped addressing among multiple compute nodes | |
US11995017B2 (en) | Multi-plane, multi-protocol memory switch fabric with configurable transport | |
US7783822B2 (en) | Systems and methods for improving performance of a routable fabric | |
US11637773B2 (en) | Scaled-out transport as connection proxy for device-to-device communications | |
US11321179B1 (en) | Powering-down or rebooting a device in a system fabric | |
US10587507B2 (en) | Routing between software defined networks and physical networks | |
EP2515241B1 (en) | Unified system area network and switch | |
WO2023121785A1 (en) | Packet format adjustment technologies | |
US11343176B2 (en) | Interconnect address based QoS regulation | |
US9282000B1 (en) | Network devices having configurable receive packet queues and related methods |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |