CN104641360B - 对存储器及对等设备的双播PCIe入站写入 - Google Patents
对存储器及对等设备的双播PCIe入站写入 Download PDFInfo
- Publication number
- CN104641360B CN104641360B CN201380048928.0A CN201380048928A CN104641360B CN 104641360 B CN104641360 B CN 104641360B CN 201380048928 A CN201380048928 A CN 201380048928A CN 104641360 B CN104641360 B CN 104641360B
- Authority
- CN
- China
- Prior art keywords
- pcie
- output
- address
- input
- peripheral assembly
- 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.)
- Active
Links
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/4027—Coupling between buses using bus bridges
- G06F13/404—Coupling between buses using bus bridges with address mapping
-
- 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
-
- 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
Abstract
用于支持从PCIe设备向存储器和对等PCIe设备的入站系统存储器写入的双播的方法及装置。在PCIe根复合体处接收来自第一PCIe的入站系统存储器写入请求并且检查存储器地址以便确定其是否落入为双播操作定义的地址窗口内。如果是,从入站系统存储器写入请求生成IO写入请求并将其发送到与地址窗口相关的第二PCIe设备。在并行操作期间,原始入站系统存储器写入请求被转发到被配置成用于接收这种写入请求的系统代理。
Description
技术领域
本发明的领域总体上涉及计算机系统,并且更具体地但是不排他地涉及从PCIe设备向存储器和对等设备的入站写入的双播。
背景技术
计算机系统通常使用一个或多个互连来方便系统组件(诸如处理器和存储器之间)之间的通信。互连和/或扩展接口还可用于支持内置和添加设备,诸如I/O(输入/输出)设备和扩展卡等等。许多年来,在引入了个人计算机之后,主要的互连形式是并行总线。并行总线结构用于内部数据传送和扩展总线,诸如ISA(工业标准架构)、MAC(微通道架构)、EISA(扩展工业标准架构)以及VESA局部总线。在20世纪90年代早期,英特尔公司引入了PCI(外围组件互连)计算机总线。PCI不仅通过增加总线速度而且通过引入使用共享地址和数据线的自动配置和基于事务的数据传送,改进了早期的总线技术。
随着时间流逝,计算机处理器时钟频率以比并行总线时钟频率更快的步伐增加。结果是,计算机工作负载经常受限于互连瓶颈而不是处理器速度。尽管并行总线支持每个周期传送大量的数据(例如,PCI-X下的32或甚至64位),其时钟频率受限于定时斜变考虑因素,导致了实际受限于最大总线速度。为了克服这个问题,开发了高速串行互连。早期串行互连的示例包括串行ATA、USB(通用串行总线)、火线、以及RapidIO。
广泛使用的另一种标准串行互连是快速PCI快速(也称为PCIe),其在2004年在PCIe 1.0标准下引入。PCIe被设计成用于替换旧的PCI和PCI-X标准同时提供继承支持。PCIe采用点到点串行链路而不是共享并行总线架构。每个链路支持使用一个或多个通道的两个PCIe端口之间的点到点通信信道,其中,每个通道包括双向串行链路。使用交叉交换机架构物理地路由这些通道,这同时支持多个设备之间的通信。其固有优点的结果是,PCIe已经替换PCI成为当今个人计算机中最流行的互连。PCIe是PCI-SIG(特殊兴趣小组)管理的行业标准。
进来,PCI-SIG添加了PCIe多播标准规范。在PCI基础规范修订3.0版本1.0的章节6.14中定义的PCIe多播规范下,PCIe发起设备可使用单个写入事务向多个PCIe目标进行写入。然而,PCIe多播规范未定义如何并发地使用单个写入事务实现从PCIe发起设备向系统存储器以及对等PCIe设备的写入。此外,PCIe多播规范为必须被配置成用于支持这种附加功能的各种PCIe设备增加了复杂性。相比之下,能够以对这种事务中涉及的实体具有最小影响的方式执行对系统存储器和对等PCIe设备的双播将会是有利的。
附图简要描述
当结合附图时,前述方面和本发明的许多伴随优势将变得更加容易认识到,正如通过参照以下详细描述更好地理解到的那样,其中,贯穿各种视图,相同的参考标号指代相同的部件,除非另外指明:
图1是通用PCIe架构的示图;
图2是示出PCIe堆栈的各层以及每层的分组(packet)组装/拆分的细节的示图;
图3是示出根据一个实施例的向系统存储器和到PCIe对等设备双播入站存储器写入事务的组合示意框图和消息流程图;
图4示出示例性输入写入事务流的双播;
图5是与3DW或4DW存储器请求事务层分组相关联的3DW和4DW存储器请求头部的示意图;以及
图6是示出实现在此公开的实施例的各方面所采用的示例性处理器和平台配置的所选组件的示意框图。
实施方案描述
在此描述了用于支持从PCIe设备向存储器和对等PCIe设备的入站写入的双播的方法和装置的实施例。在以下描述中,列出了许多特定细节以便提供本发明实施例的透彻理解。然而,本领域普通技术人员将认识到可在没有这些特定细节中的一项或多项的情况下或者在具有其他方法、组件、材料等等的情况下实践本发明。在其他情况下,未详细地示出或描述公知的结构、材料、或操作以便避免混淆本发明的各方面。
贯穿本说明书对“一个实施例”或“实施例”的引用是指在此结合该实施例所描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,贯穿本说明书,短语“在一个实施例中”或“在实施例中”在各种地方的出现并非必须全部指代相同的实施例。而且,特定特征、结构或特性可在一个或多个实施例中以任意适当的方式组合。
在此公开的实施例涉及用于支持从PCIe设备向存储器和对等PCIe设备的入站写入的双播的方法及装置。为了更好地理解实施例的各方面,提供了在图1中示出的通用PCIe架构的以下简要讨论。
在PCIe架构的核心处,PCIe根复合体(RC)100耦合到处理器102和存储器104。PCIeRC 100被描绘为包括三个根端口106-1、106-2以及106-3。根端口106-1经由PCIe链路110和PCIe端口112连接到PCIe端点108。根端口106-2连接到PCIe到PCI/PCI-X网桥114,该网桥114用作PCIe和多个PCI/PCI-X设备116之间的接口。根端口106-3经由PCIe链路118和PCIe端口120连接到交换机116。交换机116被描绘为连接到一对传统端点122和124以及一对PCIe端点126和128。这些连接由PCIe链路130、132、134和136以及端口138、140、142、144、146、148、150和152促成。
根复合体表示将CPU/存储器子系统连接到IO(输入/输出)的IO层次的根。如图1所示,根复合体可支持一个或多个PCIe端口。每个接口定义单独的层次域。每个层次域可由单个端点或包含一个或多个交换机组件和端点的子层次构成。根复合体可任选地支持层次域之间的对等事务的路由。
端点是指一类功能,可以是代表其自身或者代表不同的非PCIe设备(除了PCI设备或主机CPU)(例如,PCIe附接图形控制器或PCIe-USB主机控制器)的PCIe事务的请求者或完成者。端点可被分类为传统、PCIe或者根复合体集成端点。
PCIe支持使用由用于传输和接收中的每一者的一个或多个通道构成的串行链路的点到点互连。PCIe链路具有至少一个通道,每个通道表示一组差分信号对(一对用于传输,一对用于接收)。为了扩展带宽,链路可汇聚标记为xN的多条通道,其中,N可以是所支持的链路宽度中的任一个。例如,在PCIe 3.0规范下,PCIe链路包括针对x1、x2、x4、x8、xl2、xl6和x32通道宽度的操作。在硬件初始化期间,在由位于链路的每个末端的两个代理协商链路宽度和操作频率之后设置每个PCIe链路。
图2的示图200示出PCIe分层协议和TLP(事务层分组)组装/拆分的细节。在PCIe下,以分组化形式在两个PCIe端点或端口之间传送数据,如设备A和设备B所示。如上所述,PCIe链路包括单通道或多通道点到点互连。而且,在相反的方向上在单向点到点互连对中配置点到点互连,从而使得每个链路对支持双向通信。传送源自发送者或传输者,并且由接收者接收。正在发送的数据通过传输(Tx)路径传输并且相应的数据通过接收(Rx)路径接收。在PCIe设备之间交换的主要两类分组是高级事务层分组(TLP)以及被称为数据链路层分组(DLLP)的低级链路维护分组。共同地,各种TLP和DLLP使得两个PCIe设备能够可靠地执行存储器、IO和配置空间事务并且使用消息来发起功率管理事件、生成中断、报告错误等等。
PCIe标准的三个低层包括事务层、数据链路层和物理(PHY)层。相应地,设备A和B各自被描绘为包括事务层(框)204、数据链路层(框)206和物理层(框)208。发起设备(例如,在本示例中设备A)生成有待发送到接收设备(例如,设备B)的数据210,其然后由PCIe层分组化并通过链路传输。在PCIe事务的上下文中,发起方被称为请求者,并且接收方被称为完成者。
在事务层,数据被分组化为具有包括头部(HDR)、分组净荷数据(Data)以及摘要(Digest)的分组格式212的一个或多个分组。在数据链路层,序列号(SeqNum)被添加到分组的开始,与附到末尾的CRC一起形成分组格式214。通过添加STP和结束(End)控制(K)字符以便形成分组格式216,在物理层进一步扩充分组格式。然后使用反向顺序通过链路发送分组以供接收器(设备B)处理,最终产生原始数据210。
图3示出根据一个实施例的入站存储器写入的双播的示例性实现方式。经由PCIe根复合体302内的PCIe双播逻辑块300实现用于支持双播的核心功能。PCIe根复合体被描绘为包括两个根端口304和306,对应的PCIe设备308和310(也被标记为并被称为PCIe设备1和2)在通信中经由PCIe链路1和2链接到这两个根端口304和306。图3的图示进一步包括系统代理312和系统存储器314。
PCIe设备308生成包括包含PCIe头部318的入站(系统)存储器写入和包含两条高速缓存行的数据320的事务层分组(TLP)316。经由PCIe链路1将TLP 316从PCIe设备308转发到PCIe根复合体302,其中,在根端口304处对其进行接收并将其转发到PCIe双播逻辑块300。响应于接收到TLP 316,PCIe双播逻辑块300检查分组的PCIe头部318并且基于类型(Type)字段(参见图5中TLP头部字段的更多细节)中的相应的值将其标识为对处理器的入站写入。
在此处公开的实施例的各方面下,用于执行被寻址为相应的地址窗口(即,地址范围)内的系统存储器地址的选择性PCIe入站存储器写入的双播的操作由PCIe双播逻辑块300促成。在一个实施例中,双播写入地址映射322用于确定:a)双播操作是否是可应用的;b)如果是,什么PCIe设备对应于双播(对等)目标设备;以及c)如何实现地址转换。如所示,双播入站写入地址映射322包括包含对应的地址窗口324的多个地址范围。通常,可使用全地址(意指例如为每个地址定义范围的全32位或者全64位地址)、使用基地址并结合地址偏移、或者使用指定并导出地址窗口所采用的另一种方案,明确地定义地址范围。例如,双播入站写入地址映射322所示出的示例映射采用基地址加从基地址偏移的地址范围。在一个实施例中,每个偏移地址范围具有固定尺寸,并且偏移地址范围简单地是固定尺寸的整数倍的倍数。例如,双播入站写入地址映射322中的顶部两个地址范围具有尺寸1000并且是数字上相邻的。如最后的范围n000-n999所描绘的,这些地址范围可简单地由整数n定义。为了导出地址范围,整数n与标称地址窗口尺寸相乘。而且,相同的整数n可定义地址窗口所应用的相应的PCIe对等设备,但这并非要求,因为可明确地定义地址窗口和PCIe对等设备之间的映射。除了固定尺寸的地址窗口之外,还可实现可变尺寸地址窗口。
在图3的所示示例中,PCIe头部316包括地址字段数据(未示出),该地址字段数据指示包括数据320的高速缓存行的起始地址在基地址+2000-2999的范围内。这导致对双播入站写入地址映射322的地址“命中”并且因此将执行入站存储器写入的双播。在地址未落入为PCIe对等设备定义的双播地址窗口内的情况下,写入存储器事务以常规方式被处理为单播事务。
根据一个实施例,入站存储器写入的双播生成与入站存储器写入相对应的原始TLP的副本,其具有指定寻址为与命中地址相关联的PCIe对等设备的IO写入事务的头部。这在图3中被示出为TLP 316a,其中,‘a’被添加到TLP 316以便指示两个分组之间的相似性。注意,TLP 316和TLP316a不是完全相同的,因为完全相同的分组将具有完全相同的头部并且因此将被路由到同一目的地(如由头部地址信息所定义)。相反,TLP 316a的分组头部318a的可应用字段中的数据被改变,从而使得TLP 316a被路由到由双播入站写入地址映射322所定义的适当的PCIe设备。
返回双播入站写入地址映射322,针对PCIe分组头部的映射指示其与具有在基地址+2000-2999范围内的起始地址的入站存储器写入相对应,这将PCIe目标设备标识为设备2(即,PCIe设备310)。相应地,生成PCIe头部318a中的数据以便将IO写入请求映射到PCIe设备310。
在一个实施例中,32位地址空间用于PCIe IO设备,而64位地址空间用于系统存储器。相应地,采用一种机制来将64位存储器地址(与起始高速缓存行地址相对应)转换为将被映射到可应用的目标PCIe对等设备内的存储器的32位地址。在一个实施例中,基地址和偏移地址范围被配置为使得PCIe目标设备的地址窗口与系统存储器内的相应的存储器地址所使用的偏移匹配。例如,平台的操作系统通常为在系统引导期间枚举的多个PCIe设备中的每一个分配平台的系统存储器的部分。为给定PCIe设备的存储器分配的尺寸将取决于PCIe设备的具体类型,其中为某些类型的设备分配比其他类型的设备更大的块。
在图5中示出这种寻址方案的示例。图示中的上TLP头部(4DW头部500)示出64位存储器请求头部的字段的细节,其采用四个双字(4DW)。图示中的下TLP头部(3DW头部502)示出32位存储器请求头部的字段的细节,其采用三个双字(3DW)。类似的3DW寻址方案用于PCIe IO请求,其中存储器请求和IO请求之间的差异由类型字段中的值定义。在一个实施例中,在4DW头部500的字节8开始的地址[63:32]字段中指定的地址指定入站存储器写入请求的基地址。同时,4DW头部500和3DW头部502的地址[31:2]字段中指定的地址完全相同并且分别为目标PCIe对等设备定义存储器写入的偏移地址和IO写入的32位地址。
返回图3,结合确定可应用的地址和目标PCIe设备,用于生成双播TLP的操作由PCIe双播逻辑块300执行。原始TLP 316是入站存储器写入,并且相应地,该TLP被以常规方式处理(从用于促成这种事务的平台组件的立场出发)。相应地,原始TLP 316(或TLP 316的副本)被从PCIe双播逻辑块300转发到系统代理312。系统代理312表示用于将来自PCIe设备的使用PCIe协议通过PCI互连发送的入站存储器写入转换为可应用的协议(如果需要的话)以便支持相应的系统存储器写入事务的系统存储器代理和/或其他系统实体。
依据具体的平台和/或CPU(即,处理器)架构,可以或可以不直接使用PCIe访问系统存储器。例如,某些架构支持直接存储器接口(DMI)协议,其采用PCIe,但是可在PCIe根复合体和进而与处理与系统存储器的交互以便支持存储器事务的存储器控制器的DMI代理之间使用中间传输协议。更常见的是另一种类型的互连和/或协议用于处理存储器事务,诸如以下结合图6描述的架构。为存储器事务使用不同协议的重要原因是需要支持一致性。因此,在现代处理器架构中,使用一致协议(诸如公司的快速路径(QPI))。甚至可存在其中通过PCIe互连接线实现一致协议(诸如QPI)的实现方式。在任何这些情况下,在某一点,TLP需要被重新格式化以便支持除PCIe之外的协议从而促成存储器事务完成。相应地,尽管为了简单和清晰目的在图3中被描绘为单个块,系统代理312表示PCIe根复合体302和系统存储器314之间的用于执行此功能的单个接口和/或代理或其组合。
对于为存储器事务采用不同于PCIe的协议的架构而言,TLP 316的头部和净荷数据根据存储器事务协议被重新格式化以便形成包括存储器事务头部328的存储器事务分组326。同时,事务净荷数据(例如,包括两个高速缓存行的数据320)保持不变。PCIe双播操作的第一半的净结果是源自PCIe设备(308)的入站存储器写入TLP(316)的净荷数据(例如,高速缓存行数据)在TLP的PCIe头部(318)所定义的地址处写入系统存储器。
PCIe双播操作的第二半用于生成目标为PCIe对等设备的具有复制数据的TLP,对等设备在本示例中是PCIe设备310。相应地,PCIe双播逻辑块300生成具有包含从双播入站写入地址映射322导出的重映射地址的PCIe头部318a的TLP 316a,该地址映射在为PCIe设备2(即,PCIe设备310)定义的地址窗口内。TLP 316a然后通过根端口306经由PCIe链路2路由到PCIe设备310,并且以用于处理IO写入TLP的常规方式在PCIe设备310处被处理。如所描绘的,结果是包括原始高速缓存行数据的数据320被写入PCIe设备310中的设备存储器330的适当部分。
图4示出包括被以类似于以上针对TLP 316所述的方式处理的两个TLP 400和402的输入写入事务的示例。TLP 400包括PCIe头部HDR1以及包括高速缓存行CL1A和CL1B的数据,而TLP 402包括PCIe头部HDR2以及包括高速缓存行CL2A和CL2B的数据。当在PCIe双播逻辑块300处接收并处理TLP 400时,具有包括高速缓存行CL1A和CL1B的数据的TLP400的副本(或简单地原始TLP 400实例)被转发到系统代理312,该系统代理促成任何可应用的重新格式化以便生成存储器写入事务从而将高速缓存行CL1A和CL1B在HDR1中指定的存储器地址处写入系统存储器314。并发地(即,在基本上同一时间帧内),具有被映射到PCIe设备310的地址的经修改的头部HDR1a以及具有包括高速缓存行CL1A和CL1B的数据的第二TLP从TLP400生成并经由根端口306和PCIe链路2发送到PCIe设备310。为TLP 402执行类似的处理,如所示,除了在可应用的头部是HDR2和HRDR2a以及可应用的高速缓存行数据是CL2A和CL2B的情况下。而且,可在用于写入多个高速缓存行或系统存储器块的典型的输入写入事务流中为后续TLP实现类似的处理。
总体上,可在各种类型的平台架构和/或处理器内在PCIe根复合体内实现PCIe双播逻辑块322。历史上,PCIe根复合体被包括在位于CPU外部的IO芯片组内。然而,如今的处理器架构通常包括片上系统(SoC)架构,包括管芯上逻辑和用于实现PCIe根复合体和相应的接口和代理的电路。在图6中示出包括实现包括PCIe双播逻辑块322的PCIe根复合体302的SoC处理器的平台架构的示例。
平台架构600描绘包括处理器核602(标记为核0-核7)的8核处理器601,其经由环形互连610上的节点608耦合到对应的高速缓存盒(标记为Cbo 0-7,也被称为CBOX)以及末级高速缓存(LLC)606(标记为LLC0-LLC7)。QPI代理612、集成输入/输出(IIO)块614以及本地代理(home agent)616也经由相应的节点连接到环形互连610。本地代理616耦合到用于经由一个或多个存储器信道620访问系统存储器314的存储器控制器618。QPI代理612被描绘为耦合到一对QPI链路622和624,允许处理器601能够经由QPI与其他平台组件(未示出)通信。
通常,处理器801的组件经由各种类型的互连而相互连接,为了方便,其被描绘为双箭头。如上所述,在一个实施例中,处理器801采用环形互连810。可选地,处理器核和相关的组件及代理可经由互连结构(例如,2D网格互连)连接。互连可包括点到点互连(例如,QPI、PCIe、英特尔片上系统结构(IOSF)、开放核协议(OCP)等等)以及总线和其他类型的互连结构。
SoC处理器内的IIO块被配置成用于执行与由常规北桥/南桥平台架构内的IO芯片或芯片组执行的那些类似的IO接口操作。然而,不是由经由外部互连耦合到处理器的分离芯片或芯片组执行这些功能,它们现在由嵌入在处理器封装(即,SoC)本身上的电路和逻辑实现。除其他优点之外,这支持可与常规的外部互连一起可供使用的高得多的带宽。
在图6中为IIO块614描绘了所选择的功能块。这些功能块包括包含耦合到DMI x4链路630的端口628的DMI代理和接口626。IIO块包括耦合到包括PCIe双播根逻辑块300的PCIe根复合体302的PCIe代理631以及PCIe根端口630、632和634。PCIe根端口630为PCIe x8链路636提供接口。PCIe根端口632和634为PCIe x16链路638和640提供PCIe接口,这些链路分别连接到PCIe设备646和648上的PCIe端口642和644。
在平台架构600下,按以下方式处理目的地为系统存储器314内的高速缓存行的入站存储器写入。入站存储器写入在PCIe根端口630、632或634之一处被接收为TLP并且被转发到PCIe双播逻辑块300。响应于确定TLP为被寻址到具有系统存储器312的地址空间内的地址的高速缓存行的入站存储器写入,用于对系统存储器314内的高速缓存行进行写入的QPI一致存储器写入事务由PCI代理321生成并且被放置在环610上,该事务在该环上被路由到本地代理616。本地代理616包含高速缓存映射信息,该高速缓存映射信息标识具有映射到系统存储器314的地址空间的地址的每个高速缓存行的当前高速缓存级和高速缓存,从而使得传入存储器写入数据被写入适当的位置。例如,高速缓存行的有效副本可位于系统存储器内或者可被高速缓存在LLC中或与核相关联的LI或L2高速缓存中。除本地代理616之外,处理器601还可采用其他高速缓存代理(未在图6中示出)来促成高速缓存一致性操作。相应地,高速缓存行的有效副本和状态的位置将由本地代理616和/或其他代理使用与QPI相对应的可应用的一致性消息(诸如存储器监听消息)确定。净结果是高速缓存行的有效副本得到更新,并且如果高速缓存行的更新导致经修改的高速缓存行,经修改的高速缓存行的副本将被写入系统存储器。
如上所述,用于促成向存储器的入站写入的双播的大部分功能由PCIe双播逻辑块300实现。通常,将使用与集成电路或SoC(诸如处理器601)内的PCIe根复合体功能块等等相对应的嵌入式逻辑实现这种功能。用于将逻辑嵌入在处理器等等上的功能块中的技术在处理器领域中是公知的,并且相应地,未在此提供附加细节。
在各实施例下,第一和第二PCIe设备(即,入站系统存储器写入的发源设备和双播写入请求的接收设备)可包括采用存储器映射IO空间所针对的设备。例如,这些设备可包括一对网络接口控制器(NIC)、存储控制器或Infiniband主机适配器。
在此公开的PCIe双播的实施例提供显著优于现有技术的优点。具体的,该技术减少了入站PCIe带宽。在PCIe双播方法下,单个存储器写入被接收为入站事务并且根复合体将该写入数据复制到两个位置:原始目的地(存储器)和对等设备。在当前方法下,PCIe设备将必须复制写入数据两次,使带宽翻倍。例如,使用双播的设备将需要5GB/s的PCIe带宽,而常规方法将需要l0GB/s。
尽管已经参照具体实现方式描述了某些实施例,其他实现方式根据某些实施例是可能的。此外,在附图中示出和/或在此描述的元素或其他特征的安排和/或顺序无需以所示出和描述的特定方式安排。许多其他安排根据某些实施例是可能的。双播技术还对PCIe设备透明,意味着该技术可在不扩充现有PCIe设备或其设备驱动器的情况下实现(PCIe根复合体也无需被扩充来支持双播)。这与已提出的PCIe多播技术形成鲜明对比,这种技术要求修改PCIe设备和驱动器中的一个或多个。
在此处附图中,在某些情况下,元素可各自具有相同的参考标号或不同的参考标号,以便指示所表示的元素可类似和/或不同。然而,元素可足够灵活以便具有不同的实现方式并且与在此示出或描述的某些或所有架构一起工作。在附图中示出的各个元素可相同或不同。将哪一个称为第一元素以及将哪一个称为第二元素是任意的。
在描述和权利要求书中,可使用术语“耦合”和“连接”及其衍生词。应当理解的是这些术语不旨在作为彼此的同义词。而是,在具体实施例中,“连接”可用于指示两个或更多个元素与彼此直接物理或电接触。“耦合”可意指两个或更多个元素直接物理或电接触。然而,“耦合”还可意指两个或更多个元素可不彼此直接接触但是可仍彼此合作或交互。
算法在此并且通常被认为是导致所期望的结果的动作或操作的自洽序列。这些包括物理量的物理操纵。通常,尽管不必需,这些量采取能够被存储、传输、组合、比较、以及以其他方式操纵的电信号或磁信号的形式。已经证明方便的是有时主要出于常见用途的原因,将这些信号称为位、值、元素、符号、字符、项目、编号等等。然而,应当理解的是所有这些和类似的项目有待与适当的物理量相关联并且仅仅是适用于那些量的方便标签。
某些实施例可在硬件、固件和软件之一或其组合中实现。某些实施例还可被实现为存储在机器可读介质上的指令,这些指令可由计算平台读取并执行以便执行在此描述的操作。机器可读介质可包括用于存储或传输机器(例如,计算机)可读形式的信息的任何机制。例如,机器可读介质可包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光学存储介质;闪存设备等等。
实施例是本发明的实现方式或示例。本说明书中对“实施例”、“一个实施例”、“某些实施例”、或“其他实施例”的引用是指在此结合该实施例所描述的特定特征、结构或特性包括在本发明的至少某些实施例但无需所有实施例中。各种出现“实施例”、“一个实施例”或“某些实施例”无需全部指代相同的实施例。
不是所有在此描述和示出的组件、特征、结构、特性等等需要被包括在一个或多个特定实施例中。如果说明书陈述例如组件、特征、结构、或特性“可”、“可能”、“能够”或“可以”被包括,不要求包括该特定特征、结构、或特性。如果说明书或权利要求书提到“一个”或“一”元素,这不意味着仅存在一个这种元素。如果说明书或权利要求书提到“附加”元素,这不排除存在多于一个这种附加元素。
包括在摘要中描述的内容的本发明的所示出实施例的以上描述不旨在是排他性的或者将本发明限制为所公开的精确形式。尽管在此为了示意性的目的描述了本发明的特定实施例和示例,在本发明的范围内,各种等效修改是可能的,正如本领域普通技术人员将认识到的那样。
可鉴于以上细节描述对本发明做出这些修改。在以下权利要求书中所使用的术语不应被解释为将本发明限制到在说明书和附图中公开的特定实施例。而是,本发明的范围全部由以下权利要求书确定,应当根据权利要求解释的确定条文对其进行解释。
Claims (27)
1.一种用于通信的方法,包括:
从第一快速外围组件互连PCIe外围输入/输出IO设备接收入站系统存储器写入请求;以及
通过使用PCIe根复合体并基于所述入站系统存储器写入请求为第二快速外围组件互连PCIe外围IO设备生成输入/输出IO写入请求,来向系统存储器和所述第二快速外围组件互连PCIe外围输入输出IO设备中的每一个双播与所述入站系统存储器写入请求相对应的写入请求,
其中所述输入输出IO写入请求被配置成在被所述第二快速外围组件互连PCIe外围输入输出IO设备接收时使所述第二快速外围组件互连PCIe外围输入输出IO设备将所述输入输出IO写入请求中包含的数据写入所述第二快速外围组件互连PCIe外围输入输出IO设备上的存储器,以及
其中所述快速外围组件互连PCIe根复合体是包含所述第一和第二快速外围组件互连PCIe外围输入输出IO设备的输入输出IO层次的根。
2.如权利要求1所述的方法,进一步包括:
将所述入站系统存储器写入请求或其副本之一转发到被配置成用于从快速外围组件互连PCIe外围输入输出IO设备接收入站系统存储器写入请求的代理。
3.如权利要求2所述的方法,进一步包括:
将与所述入站系统存储器写入请求相对应的地址转换为与所述第二快速外围组件互连PCIe外围输入输出IO设备的输入输出IO写入请求相对应的地址。
4.如权利要求2所述的方法,进一步包括定义实现入站系统存储器写入请求的双播所针对的地址窗口,每个地址窗口包括系统存储器地址范围,对于所述系统存储器地址范围,具有在所述范围内的地址的入站系统存储器写入请求要被双播到与所述地址窗口相关联的快速外围组件互连PCIe外围输入输出IO设备。
5.如权利要求4所述的方法,其中,至少一个地址窗口由地址偏移和从所述地址偏移偏离的地址范围定义,所述方法进一步包括:
检查所述入站系统存储器写入请求的地址信息;
确定与所述地址信息相对应的偏移;
确定从所述地址偏离的地址;以及
应用所确定的地址作为所述输入输出IO写入请求的地址。
6.如权利要求5所述的方法,其中,所述入站系统存储器写入请求包括第一地址字段和第二地址字段,并且所述偏移在所述第一地址字段中定义。
7.如权利要求2-6中任一项所述的方法,其中,所述入站系统存储器写入请求包括与第一高速缓存行相对应的数据以及标识所述第一高速缓存行的系统存储器地址的64位地址,并且其中,所述输入输出IO写入请求包括标识要将与所述第一高速缓存行相对应的数据写入所述第二快速外围组件互连PCIe外围输入输出IO设备所采用的地址的32位地址。
8.如先前权利要求1-6中任一项所述的方法,进一步包括采用快速外围组件互连PCIe根复合体中的逻辑单元以便促成入站系统存储器写入请求的双播。
9.如先前权利要求1-6中任一项所述的方法,其中,所述第一和第二快速外围组件互连PCIe外围输入输出IO设备中的每一个是对等设备。
10.如先前权利要求1-6中任一项所述的方法,其中,所述第一和第二快速外围组件互连PCIe外围输入输出IO设备中的每一个包括网络接口控制器NIC。
11.如权利要求1-6中任一项所述的方法,其中,所述第一和第二快速外围组件互连PCIe外围输入输出IO设备中的每一个包括存储控制器。
12.如权利要求1-6中任一项所述的方法,其中,所述第一和第二快速外围组件互连PCIe外围输入输出IO设备中的每一个包括Infiniband主机总线适配器。
13.一种用于通信的设备,包括逻辑单元,所述逻辑单元被配置成用于:
从第一快速外围组件互连PCIe外围输入输出IO设备接收入站系统存储器写入请求;以及
通过使用快速外围组件互连PCIe根复合体并基于所述入站系统存储器写入请求为第二快速外围组件互连PCIe外围输入输出IO设备生成输入/输出IO写入请求,来向系统存储器和所述第二快速外围组件互连PCIe外围输入输出IO设备中的每一个双播与所述入站系统存储器写入请求相对应的写入请求,
其中所述输入输出IO写入请求被配置成在被所述第二快速外围组件互连PCIe外围输入输出IO设备接收时使所述第二快速外围组件互连PCIe外围输入输出IO设备将所述输入输出IO写入请求中包含的数据写入所述第二快速外围组件互连PCIe外围输入输出IO设备上的存储器,以及
其中所述快速外围组件互连PCIe根复合体是包含所述第一和第二快速外围组件互连PCIe外围输入输出IO设备的输入输出IO层次的根,
其中所述第一和第二快速外围组件互连PCIe外围输入输出IO设备是对等设备。
14.如权利要求13所述的设备,进一步包括逻辑单元,所述逻辑单元被配置成用于:
将所述入站系统存储器写入请求或其副本之一转发到被配置成用于从快速外围组件互连PCIe外围输入输出IO设备接收入站系统存储器写入请求的代理。
15.如权利要求13所述的设备,进一步包括逻辑单元,所述逻辑单元被配置成用于:
将与所述入站系统存储器写入请求相对应的地址转换为与所述第二快速外围组件互连PCIe外围输入输出IO设备的输入输出IO写入请求相对应的地址。
16.如权利要求13所述的设备,其中,所述设备包括处理器。
17.如权利要求13所述的设备,其中,所述设备包括快速外围组件互连PCIe根复合体。
18.一种用于通信的系统,包括:
处理器;
快速外围组件互连PCIe根复合体,可操作地耦合至所述处理器并包括第一和第二快速外围组件互连PCIe根端口;
系统存储器,操作地耦合到所述处理器;以及
第一和第二快速外围组件互连PCIe外围输入/输出IO设备,分别操作地耦合到所述第一和第二快速外围组件互连PCIe根端口且各自包括设备存储器;
其中,所述处理器包括双播逻辑单元,所述双播逻辑单元被配置成用于从所述第一快速外围组件互连PCIe外围输入输出IO设备接收入站系统存储器写入请求以及向所述系统存储器和所述第二快速外围组件互连PCIe外围输入输出IO设备中的每一个双播与所述入站系统存储器写入请求相对应的写入请求,其中对所述第二快速外围组件互连PCIe外围输入输出IO设备的输入输出IO写入请求被配置成使所述第二快速外围组件互连PCIe外围输入输出IO设备将数据写入其设备存储器,并且其中所述快速外围组件互连PCIe根复合体是包含所述第一和第二快速外围组件互连PCIe外围输入输出IO设备的输入输出IO层次的根。
19.如权利要求18所述的系统,其中,所述处理器包括快速外围组件互连PCIe根复合体,其中所述双播逻辑单元在所述快速外围组件互连PCIe根复合体中实现。
20.如权利要求18或19所述的系统,其中,所述双播逻辑单元被进一步配置成用于:
基于所述入站系统存储器写入请求为所述第二快速外围组件互连PCIe外围输入输出IO设备生成输入/输出IO写入请求;以及
将所述入站系统存储器写入请求或其副本之一转发到所述处理器内的被配置成用于从快速外围组件互连PCIe外围输入输出IO设备接收入站系统存储器写入请求的代理。
21.如权利要求20所述的系统,其中,所述双播逻辑单元被进一步配置成用于将与所述入站系统存储器写入请求相对应的地址转换为与所述第二快速外围组件互连PCIe外围输入输出IO设备的输入输出IO写入请求相对应的地址。
22.如权利要求18-19中任一项所述的系统,其中,所述处理器进一步包括定义实现入站系统存储器写入请求的双播所针对的地址窗口的映射信息,每个地址窗口包括系统存储器地址范围,对于所述系统存储器地址范围,具有所述范围内的地址的入站系统存储器写入请求被双播到与所述地址窗口相关联的快速外围组件互连PCIe外围输入输出IO设备。
23.如权利要求22所述的系统,其中,至少一个地址窗口由地址偏移和从所述地址偏移偏离的地址范围定义,并且所述双播逻辑单元被进一步配置成用于:
检查所述入站系统存储器写入请求的地址信息;
确定与所述地址信息相对应的偏移;
确定从所述地址偏离的地址;以及
应用所确定的地址作为所述输入输出IO写入请求的地址。
24.如权利要求20所述的系统,其中,所述入站系统存储器写入请求包括与第一高速缓存行相对应的数据以及标识所述第一高速缓存行的系统存储器地址的64位地址,并且其中,所述输入输出IO写入请求包括标识要将与所述第一高速缓存行相对应的数据写入所述第二快速外围组件互连PCIe外围输入输出IO设备所采用的地址的32位地址。
25.如权利要求18-19中任一项所述的系统,其中,所述第一和第二快速外围组件互连PCIe设备中的每一个包括网络接口控制器NIC。
26.一种计算机实现的系统,包括用于执行如权利要求1-12中的任一项所述的方法的装置。
27.一种计算机可读存储介质,其上存储有指令,所述指令响应于被执行而导致计算设备执行如权利要求1-12中的任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/656,134 US9189441B2 (en) | 2012-10-19 | 2012-10-19 | Dual casting PCIE inbound writes to memory and peer devices |
US13/656,134 | 2012-10-19 | ||
PCT/US2013/046108 WO2014062247A1 (en) | 2012-10-19 | 2013-06-17 | Dual casting pcie inbound writes to memory and peer devices |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104641360A CN104641360A (zh) | 2015-05-20 |
CN104641360B true CN104641360B (zh) | 2018-10-26 |
Family
ID=50486402
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380048928.0A Active CN104641360B (zh) | 2012-10-19 | 2013-06-17 | 对存储器及对等设备的双播PCIe入站写入 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9189441B2 (zh) |
CN (1) | CN104641360B (zh) |
DE (1) | DE112013005044B4 (zh) |
WO (1) | WO2014062247A1 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9189441B2 (en) | 2012-10-19 | 2015-11-17 | Intel Corporation | Dual casting PCIE inbound writes to memory and peer devices |
US9135200B2 (en) | 2013-06-28 | 2015-09-15 | Futurewei Technologies, Inc. | System and method for extended peripheral component interconnect express fabrics |
US10684973B2 (en) | 2013-08-30 | 2020-06-16 | Intel Corporation | NUMA node peripheral switch |
US9558148B2 (en) * | 2014-04-30 | 2017-01-31 | Intel Corporation | Method to optimize network data flows within a constrained system |
US9378103B2 (en) * | 2014-05-19 | 2016-06-28 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Coordination techniques for redundant array of independent disks storage controllers |
US9824041B2 (en) | 2014-12-08 | 2017-11-21 | Datadirect Networks, Inc. | Dual access memory mapped data structure memory |
US9710421B2 (en) * | 2014-12-12 | 2017-07-18 | Intel Corporation | Peripheral component interconnect express (PCIe) card having multiple PCIe connectors |
KR102219759B1 (ko) | 2015-01-09 | 2021-02-25 | 삼성전자주식회사 | 저장 장치, 그것을 포함하는 데이터 저장 시스템 및 그것의 동작 방법 |
US9842082B2 (en) | 2015-02-27 | 2017-12-12 | Intel Corporation | Dynamically updating logical identifiers of cores of a processor |
JP2016206951A (ja) * | 2015-04-22 | 2016-12-08 | 富士通株式会社 | 電子装置及び電子装置の制御方法 |
US20160371222A1 (en) * | 2015-06-22 | 2016-12-22 | Qualcomm Incorporated | COHERENCY DRIVEN ENHANCEMENTS TO A PERIPHERAL COMPONENT INTERCONNECT (PCI) EXPRESS (PCIe) TRANSACTION LAYER |
KR20170048114A (ko) * | 2015-10-26 | 2017-05-08 | 삼성전자주식회사 | 저장 장치 및 저장 장치에 의해 기록 명령이 수행되는 방법 |
US9996273B1 (en) | 2016-06-30 | 2018-06-12 | EMC IP Holding Company LLC | Storage system with data durability signaling for directly-addressable storage devices |
US9996291B1 (en) * | 2016-07-29 | 2018-06-12 | EMC IP Holding Company LLC | Storage system with solid-state storage device having enhanced write bandwidth operating mode |
CN111897751A (zh) * | 2017-01-26 | 2020-11-06 | 华为技术有限公司 | 一种数据传输的方法、装置、设备和系统 |
US10423563B2 (en) * | 2017-10-13 | 2019-09-24 | International Business Machines Corporation | Memory access broker system with application-controlled early write acknowledgment support and identification of failed early write acknowledgment requests to guarantee in-order execution of memory requests of applications |
CN110377221A (zh) * | 2018-04-13 | 2019-10-25 | 北京忆恒创源科技有限公司 | 双端口固态存储设备及其数据处理方法 |
US10585827B1 (en) | 2019-02-05 | 2020-03-10 | Liqid Inc. | PCIe fabric enabled peer-to-peer communications |
US11126554B2 (en) * | 2019-03-22 | 2021-09-21 | Intel Corporation | Prefetching write permissions into address translation cache |
US20200328879A1 (en) * | 2019-08-13 | 2020-10-15 | Intel Corporation | Secure communications over computer buses |
US11176063B2 (en) * | 2019-11-01 | 2021-11-16 | EMC IP Holding Company LLC | Optimized use of processor memory for I/O operations |
US20210255973A1 (en) * | 2020-12-17 | 2021-08-19 | Intel Corporation | Stream routing and ide enhancements for pcie |
US11537313B1 (en) * | 2021-08-11 | 2022-12-27 | EMC IP Holding Company LLC | Dual cast mirroring from host devices |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102486759A (zh) * | 2010-12-03 | 2012-06-06 | 国际商业机器公司 | 用于为多道pci高速io互连提供线缆冗余和故障转移的方法和装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7657692B2 (en) | 1999-08-04 | 2010-02-02 | Super Talent Electronics, Inc. | High-level bridge from PCIE to extended USB |
US20020161907A1 (en) * | 2001-04-25 | 2002-10-31 | Avery Moon | Adaptive multi-protocol communications system |
US7668165B2 (en) | 2004-03-31 | 2010-02-23 | Intel Corporation | Hardware-based multi-threading for packet processing |
US7487284B2 (en) | 2006-07-28 | 2009-02-03 | Intel Corporation | Transaction flow and ordering for a packet processing engine, located within an input-output hub |
US8271604B2 (en) | 2006-12-19 | 2012-09-18 | International Business Machines Corporation | Initializing shared memories for sharing endpoints across a plurality of root complexes |
JP2012507783A (ja) * | 2008-10-30 | 2012-03-29 | エルエスアイ コーポレーション | ストレージコントローラのデータ再配分 |
US8386750B2 (en) * | 2008-10-31 | 2013-02-26 | Cray Inc. | Multiprocessor system having processors with different address widths and method for operating the same |
US20110238909A1 (en) | 2010-03-29 | 2011-09-29 | Pankaj Kumar | Multicasting Write Requests To Multiple Storage Controllers |
WO2011141956A1 (en) * | 2010-05-11 | 2011-11-17 | Hitachi, Ltd. | Storage device and method of controlling storage device |
US8589723B2 (en) | 2010-12-22 | 2013-11-19 | Intel Corporation | Method and apparatus to provide a high availability solid state drive |
JP5833756B2 (ja) * | 2012-03-23 | 2015-12-16 | 株式会社日立製作所 | 二重化共有メモリアクセス方法と二重化共有メモリアクセス方法を用いたストレージ装置 |
US9280504B2 (en) * | 2012-08-24 | 2016-03-08 | Intel Corporation | Methods and apparatus for sharing a network interface controller |
US9189441B2 (en) | 2012-10-19 | 2015-11-17 | Intel Corporation | Dual casting PCIE inbound writes to memory and peer devices |
-
2012
- 2012-10-19 US US13/656,134 patent/US9189441B2/en not_active Expired - Fee Related
-
2013
- 2013-06-17 CN CN201380048928.0A patent/CN104641360B/zh active Active
- 2013-06-17 WO PCT/US2013/046108 patent/WO2014062247A1/en active Application Filing
- 2013-06-17 DE DE112013005044.7T patent/DE112013005044B4/de active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102486759A (zh) * | 2010-12-03 | 2012-06-06 | 国际商业机器公司 | 用于为多道pci高速io互连提供线缆冗余和故障转移的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
DE112013005044B4 (de) | 2023-08-03 |
US20140115223A1 (en) | 2014-04-24 |
WO2014062247A1 (en) | 2014-04-24 |
US9189441B2 (en) | 2015-11-17 |
CN104641360A (zh) | 2015-05-20 |
DE112013005044T5 (de) | 2015-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104641360B (zh) | 对存储器及对等设备的双播PCIe入站写入 | |
US11726939B2 (en) | Flex bus protocol negotiation and enabling sequence | |
KR101689998B1 (ko) | 고성능 인터커넥트 링크 계층 | |
CN106257434B (zh) | 一种基于增强型外设互连协议总线的数据传输方法及装置 | |
US11954055B2 (en) | Mapping high-speed, point-to-point interface channels to packet virtual channels | |
US9025495B1 (en) | Flexible routing engine for a PCI express switch and method of use | |
US8904079B2 (en) | Tunneling platform management messages through inter-processor interconnects | |
US10664422B1 (en) | Transparent port aggregation in multi-chip transport protocols | |
CN109416677A (zh) | 支持用于一组公共互连连接器的多种互连协议的技术 | |
CN110489365A (zh) | 交换设备、外围部件互连高速系统及其初始化方法 | |
US7277975B2 (en) | Methods and apparatuses for decoupling a request from one or more solicited responses | |
WO2010138230A2 (en) | Method and apparatus for enabling id based streams over pci express | |
US9678891B2 (en) | Efficient search key controller with standard bus interface, external memory interface, and interlaken lookaside interface | |
US11924313B2 (en) | Multiple protocol header processing | |
US11966345B2 (en) | Network credit return mechanisms | |
US11797311B2 (en) | Asynchronous pipeline merging using long vector arbitration | |
US9594706B2 (en) | Island-based network flow processor with efficient search key processing | |
BR112016011256B1 (pt) | Método de processamento de dados desalinhados, meio legível por máquina, sistema e dispositivo informático | |
CN113168388A (zh) | 总线上的存储器请求链接 | |
US20160012148A1 (en) | Efficient search key processing method | |
US10970155B1 (en) | Error reporting when reading data | |
CN109885508A (zh) | 高速外设组件互连标准总线系统及其数据传输方法、装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |