对存储器及对等设备的双播PCIe入站写入的制作方法
【技术领域】
[0001] 本发明的领域总体上涉及计算机系统,并且更具体地但是不排他地涉及从PCIe 设备向存储器和对等设备的入站写入的双播。
【背景技术】
[0002] 计算机系统通常使用一个或多个互连来方便系统组件(诸如处理器和存储器之 间)之间的通信。互连和/或扩展接口还可用于支持内置和添加设备,诸如1/〇(输入/输 出)设备和扩展卡等等。许多年来,在引入了个人计算机之后,主要的互连形式是并行总 线。并行总线结构用于内部数据传送和扩展总线,诸如ISA(工业标准架构)、MAC(微通道 架构)、EISA (扩展工业标准架构)以及VESA局部总线。在20世纪90年代早期,英特尔公 司引入了 PCI (外围组件互连)计算机总线。PCI不仅通过增加总线速度而且通过引入使用 共享地址和数据线的自动配置和基于事务的数据传送,改进了早期的总线技术。
[0003] 随着时间流逝,计算机处理器时钟频率以比并行总线时钟频率更快的步伐增加。 结果是,计算机工作负载经常受限于互连瓶颈而不是处理器速度。尽管并行总线支持每个 周期传送大量的数据(例如,PCI-X下的32或甚至64位),其时钟频率受限于定时斜变考 虑因素,导致了实际受限于最大总线速度。为了克服这个问题,开发了高速串行互连。早期 串行互连的示例包括串行ATA、USB(通用串行总线)、火线、以及RapidIO。
[0004] 广泛使用的另一种标准串行互连是快速PCI快速(也称为PCIe),其在2004年在 PCIe I. 0标准下引入。PCIe被设计成用于替换旧的PCI和PCI-X标准同时提供继承支持。 PCIe采用点到点串行链路而不是共享并行总线架构。每个链路支持使用一个或多个通道的 两个PCIe端口之间的点到点通信信道,其中,每个通道包括双向串行链路。使用交叉交换 机架构物理地路由这些通道,这同时支持多个设备之间的通信。其固有优点的结果是,PCIe 已经替换PCI成为当今个人计算机中最流行的互连。PCIe是PCI-SIG(特殊兴趣小组)管 理的行业标准。
[0005] 进来,PCI-SIG添加了 PCIe多播标准规范。在PCI快速?基础规范修订3. 0版 本I. 0的章节6. 14中定义的PCIe多播规范下,PCIe发起设备可使用单个写入事务向多个 PCIe目标进行写入。然而,PCIe多播规范未定义如何并发地使用单个写入事务实现从PCIe 发起设备向系统存储器以及对等PCIe设备的写入。此外,PCIe多播规范为必须被配置成 用于支持这种附加功能的各种PCIe设备增加了复杂性。相比之下,能够以对这种事务中涉 及的实体具有最小影响的方式执行对系统存储器和对等PCIe设备的双播将会是有利的。
[0006] 附图简要描述
[0007] 当结合附图时,前述方面和本发明的许多伴随优势将变得更加容易认识到,正如 通过参照以下详细描述更好地理解到的那样,其中,贯穿各种视图,相同的参考标号指代相 同的部件,除非另外指明:
[0008] 图1是通用PCIe架构的示图;
[0009] 图2是示出PCIe堆栈的各层以及每层的分组(packet)组装/拆分的细节的示 图;
[0010] 图3是示出根据一个实施例的向系统存储器和到PCIe对等设备双播入站存储器 写入事务的组合示意框图和消息流程图;
[0011] 图4示出示例性输入写入事务流的双播;
[0012] 图5是与3DW或4DW存储器请求事务层分组相关联的3DW和4DW存储器请求头部 的不意图;以及
[0013] 图6是示出实现在此公开的实施例的各方面所采用的示例性处理器和平台配置 的所选组件的示意框图。
[0014] 实施方案描述
[0015] 在此描述了用于支持从PCIe设备向存储器和对等PCIe设备的入站写入的双播的 方法和装置的实施例。在以下描述中,列出了许多特定细节以便提供本发明实施例的透彻 理解。然而,本领域普通技术人员将认识到可在没有这些特定细节中的一项或多项的情况 下或者在具有其他方法、组件、材料等等的情况下实践本发明。在其他情况下,未详细地示 出或描述公知的结构、材料、或操作以便避免混淆本发明的各方面。
[0016] 贯穿本说明书对"一个实施例"或"实施例"的引用是指在此结合该实施例所描述 的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,贯穿本说明书,短语"在 一个实施例中"或"在实施例中"在各种地方的出现并非必须全部指代相同的实施例。而 且,特定特征、结构或特性可在一个或多个实施例中以任意适当的方式组合。
[0017] 在此公开的实施例涉及用于支持从PCIe设备向存储器和对等PCIe设备的入站 写入的双播的方法及装置。为了更好地理解实施例的各方面,提供了在图1中示出的通用 PCIe架构的以下简要讨论。
[0018] 在PCIe架构的核心处,PCIe根复合体(RC) 100耦合到处理器102和存储器104。 PCIe RC 100被描绘为包括三个根端口 106-1U06-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 促成。
[0019] 根复合体表示将CPU/存储器子系统连接到IO (输入/输出)的IO层次的根。如 图1所示,根复合体可支持一个或多个PCIe端口。每个接口定义单独的层次域。每个层次 域可由单个端点或包含一个或多个交换机组件和端点的子层次构成。根复合体可任选地支 持层次域之间的对等事务的路由。
[0020] 端点是指一类功能,可以是代表其自身或者代表不同的非PCIe设备(除了 PCI设 备或主机CPU)(例如,PCIe附接图形控制器或PCIe-USB主机控制器)的PCIe事务的请求 者或完成者。端点可被分类为传统、PCIe或者根复合体集成端点。
[0021] PCIe支持使用由用于传输和接收中的每一者的一个或多个通道构成的串行链路 的点到点互连。PCIe链路具有至少一个通道,每个通道表示一组差分信号对(一对用于传 输,一对用于接收)。为了扩展带宽,链路可汇聚标记为xN的多条通道,其中,N可以是所支 持的链路宽度中的任一个。例如,在PCIe 3.0规范下,PCIe链路包括针对xl、x2、x4、x8、 xl2、xl6和x32通道宽度的操作。在硬件初始化期间,在由位于链路的每个末端的两个代 理协商链路宽度和操作频率之后设置每个PCIe链路。
[0022] 图2的示图200示出PCIe分层协议和TLP (事务层分组)组装/拆分的细节。在 PCIe下,以分组化形式在两个PCIe端点或端口之间传送数据,如设备A和设备B所示。如 上所述,PCI e链路包括单通道或多通道点到点互连。而且,在相反的方向上在单向点到点互 连对中配置点到点互连,从而使得每个链路对支持双向通信。传送源自发送者或传输者,并 且由接收者接收。正在发送的数据通过传输(Tx)路径传输并且相应的数据通过接收(Rx) 路径接收。在PCIe设备之间交换的主要两类分组是高级事务层分组(TLP)以及被称为数 据链路层分组(DLLP)的低级链路维护分组。共同地,各种TLP和DLLP使得两个PCIe设备 能够可靠地执行存储器、IO和配置空间事务并且使用消息来发起功率管理事件、生成中断、 报告错误等等。
[0023] PCIe标准的三个低层包括事务层、数据链路层和物理(PHY)层。相应地,设备A和 B各自被描绘为包括事务层(框)204、数据链路层(框)206和物理层(框)208。发起设备 (例如,在本示例中设备A)生成有待发送到接收设备(例如,设备B)的数据210,其然后由 PCIe层分组化并通过链路传输。在PCIe事务的上下文中,发起方被称为请求者,并且接收 方被称为完成者。
[0024] 在事务层,数据被分组化为具有包括头部(HDR)、分组净荷数据(Data)以及摘要 (Digest)的分组格式212的一个或多个分组。在数据链路层,序列号(SeqNum)被添加到分 组的开始,与附到末尾的CRC-起形成分组格式214。通过添加 STP和结