每功能下行端口控制的制作方法

文档序号:10617866阅读:359来源:国知局
每功能下行端口控制的制作方法
【专利摘要】每功能下行端口控制(Per?Function Downstream Port Containment,pF?DPC)是快捷外围部件互连标准(Peripheral Component Interconnect express,PCIe)中的下行端口控制(Downstream Port Containment,DPC)的扩展。pF?DPC将非致命错误限制在端点设备的特定功能而不将PCIe端口与所述端点设备之间的链路去激活。用于pF?DPC的PCIe端口可滤除(例如,丢弃)携带路由标识符(routing identifier,RID)和/或分配给受非致命错误影响的功能的地址的包,同时通过对应链路继续转发携带与剩余可运作功能关联的RID/地址的包。
【专利说明】
每功能下行端口控制
[0001 ]相关申请案交叉申请
[0002] 本申请要求2014年2月5日由Wesley Shao和Lin Muhui递交的发明名称为"每功能 下行端口控制(Per-Function Downstream Port Containment)"的第14/173,643号美国非 临时专利申请案的在先申请优先权,该在先申请的全部内容以引入的方式并入本文本中。
技术领域
[0003] 本发明大体上涉及快捷外围部件互连标准(Peripheral Component Interconnect Express,PCIe)总线,以及在具体实施例中,涉及每功能下行端口控制 (downstream port containment,DPC)〇
【背景技术】
[0004] 外围部件互连标准(Peripheral Component Interconnect,PCI)总线是用于附接 计算机中的硬件设备的本地计算机总线。PCI总线支持处理器总线的功能。连接到总线的设 备,在处理器看来,是直接连接到了处理器总线,并会被分配处理器的地址空间中的地址。 附接的设备可以采取以下形式中的任一者:能安装到母板本身上的集成电路或能安装在卡 槽中的扩展卡。快捷PCKPCI Express,PCIe)是原PCI总线标准的高速扩展,并且对总线设 备进行了众多改进,包括更高的最大系统总线吞吐量、更少的管脚数、更小的物理足迹和更 好的性能扩展。

【发明内容】

[0005] 本发明的描述每功能下行端口控制的实施例大体上实现了技术优势。
[0006] 根据一项实施例,提供了一种用于每功能下行端口控制的方法。在本示例中,所述 方法包括在快捷外围部件互连标准(Peripheral Component Interconnect,PCI) (PCI Express,PCIe)接口上接收读或写请求。所述读或写请求包括与端点设备的第一功能关联 的第一路由标识符(routing identifier,RID)。所述方法还包括:检测所述端点设备的所 述第一功能的非致命错误,通过在地址表中搜索与所述第一RID关联的条目来确定分配给 所述端点设备的所述第一功能的第一地址范围,以及滤除携带所述第一RID或所述第一地 址范围内的地址的包而不将所述PCIe接口与所述端点设备之间的链路去激活。还提供了一 种用于执行所述方法的装置。
[0007] 根据另一项实施例,提供了一种快捷外围部件互连标准(Peripheral Component Interconnect Express,PCIe)交换结构。在本示例中,所述PCIe结构包括上行PCIe接口和 耦合在所述上行PCIe接口与端点设备之间的下行PCIe接口。所述下行PCIe接口用于接收包 括与所述端点设备的第一功能关联的第一路由标识符(routing identifier,RID)的读或 写请求。所述下行PCIe接口还用于:检测所述端点设备的所述第一功能的非致命错误,通过 在地址表中搜索与所述第一RID关联的条目来确定分配给所述端点设备的所述第一功能的 一个或多个地址范围,以及滤除携带所述第一RID或所述一个或多个地址范围内的地址的 包而不将所述PCIe接口与所述端点设备之间的链路去激活。
[0008] 根据又一项实施例,提供了另一种用于每功能下行端口控制的方法。在本示例中, 所述方法包括在外围部件互连标准(Peripheral Component Interconnect,PCI)接口上接 收读或写请求。所述读或写请求包括分配给端点设备的第一功能的第一地址。所述方法还 包括:检测所述端点设备的所述第一功能的非致命错误,通过在地址表中搜索与所述第一 地址关联的条目来确定分配给所述端点设备的所述第一功能的第一路由标识符(routing identifier,RID),以及滤除携带所述第一RID的包而不将所述PCIe接口与所述端点设备之 间的链路去激活。还提供了一种用于执行所述方法的装置。
[0009] 根据又一项实施例,提供了另一种快捷外围部件互连标准(P e r i ph e r a 1 Component Interconnect Express,PCIe)交换结构。在本不例中,所述PCIe交换结构包括 上行PCIe接口和耦合在所述上行PCIe接口与端点设备之间的下行PCIe接口。所述下行PCIe 接口用于:接收携带分配给端点设备的第一功能的第一地址的读或写请求,检测所述端点 设备的所述第一功能的非致命错误,通过在地址表中搜索与所述第一地址关联的条目来确 定分配给所述端点设备的所述第一功能的第一路由标识符(routing identifier,RID),以 及滤除携带所述第一 RID的包而不将所述PCIe接口与所述端点设备之间的链路去激活。
【附图说明】
[0010] 为了更完整地理解本发明及其优点,现在参考下文结合附图进行的描述,其中:
[0011] 图1示出了一实施例PCIe网络的图;
[0012]图2示出了一实施例PCIe架构的图;
[0013]图3A至图3B示出了另一实施例PCIe网络的图;
[0014]图4示出了一请求头格式的图;
[0015]图5示出了另一请求头格式的图;
[0016]图6不出了完成头格式的图;
[0017]图7示出了一错误消息格式的图;
[0018] 图8示出了用于进行执行每功能DPC的一实施例方法的流程图;
[0019] 图9示出了用于进行执行每功能DPC的另一实施例方法的流程图;以及
[0020] 图10示出了一实施例通信设备的方框图。
[0021]除非另有指示,否则不同图中的对应标号和符号通常指代对应部分。绘制各图是 为了清楚地说明实施例的相关方面,因此未必是按比例绘制的。
【具体实施方式】
[0022]下文将详细论述本发明实施例的制作和使用。应了解,本文所揭示的概念可以在 多种具体环境中实施,且所论述的具体实施例仅作为说明而不限制权利要求书的范围。进 一步的,应理解,可在不脱离由所附权利要求书界定的本发明的精神和范围的情况下,对本 文做出各种改变、替代和更改。
[0023]下行端口控制(Downstream Port Containment,DPC)是PCIe标准的建议扩展,设 计用于自动禁止发生非致命(或致命)错误后的链路以便防止可能扩散的数据损坏以及在 软件支持时启动错误恢复。因此,DPC的工作原理为:在检测到与端点设备提供的功能关联 的错误时禁止与该端点设备关联的链路。然而,端点设备可提供多个功能,且在一些实例 中,非致命错误可能不会影响端点设备提供的所有功能。在这类实例中,可能不需要完全关 闭/禁止PCIe端口与端点设备之间的链路,因为这样做可能会阻止CPU接入端点设备提供的 剩余可运作功能。另外,如果受影响的功能是交换机的上行端口,那么完全禁止PCIe交换机 上行端口与其上行设备(根端口或另一交换机的下行端口)之间链路可能导致禁用链路下 的整个子结构,包括交换机和其所有端口以及下行设备,都变得不可访问。
[0024] 本发明的各方面提供了一种每功能DPC(per-Function DPC,pF-DPC),其是DPC的 扩展,PF-DPC将非致命错误限制在端点设备的特定功能而不禁止PCIe端口与端点设备之间 的链路。更具体地,用于pF-DPC的PC I e端口可滤除(例如,丢弃)携带路由标识符(rout ing identifier,RID)和/或分配给受非致命错误影响的功能的地址的包,同时通过对应链路继 续转发携带与剩余可运作功能关联的RID/地址的包。在一些实施例中,利用RID转发和地址 转发两者的PCIe结构中的PCIe端口可建立并维护将RID与分配给端点功能的地址和/或地 址范围关联的地址表。PCIe端口可使用这些表确定与遇到错误的端点功能关联的地址或 RID,从而允许PCIe端口在执行pF-DPC时提供全面滤除。这些和其它方面将在下文详细描 述。
[0025] 图 1 不出了PCIe网络 100,其包括中央处理器(central processing unit,CPU) 101,用于通过PCIe交换结构110访问多个端点设备160、170、180XPU 101可为任意主机系 统处理器,而端点设备160至180可包括用于提供功能供CPU 101使用的任意设备,包括用户 接口(例如,屏幕、键盘等)、外部存储(例如,磁盘等)等。PCIe交换结构110是用于根据快捷 PCI 3.0或其衍生物等快捷PCI标准操作的高速互连总线。图2更详细地示出了PCIe架构,图 2示出了PCIe网络200,CPU 201通过PCIe网络200经由PCIe交换结构210访问多个端点设备 260至270。如图所示,PCIe交换结构210包括根联合体212和交换机214。根联合体212可通过 本地总线耦合到CPU 201,并可用于替CPU 201生成事务请求。尽管根联合体212描述为分立 设备,但在一些实施例中,根联合体212可集成在CPU 201的板上。根联合体212包括根端口 220,其可为耦合到CPU 201的快捷PCI端口。在一些实施例中,根联合体212包括不止一个 PCIe端口。交换机214包括耦合到根端口 220的上行端口 230和分别耦合到端点260、270的下 行端口 240、250。
[0026] 端点设备可提供多个功能,本文中称为端点功能。可为每个端点功能分配唯一的 RID和不重叠地址的若干范围。图3A示出了PCIe网络300,其包括通过下行端口 340、350连接 到端点设备360、370的上行端口 330。如图所示,端点设备360、370是多功能设备,端点设备 360包括功能362、364、366,端点设备370包括功能372、374、376 JCIe网络300可支持基于 RID的路由和基于地址的路由。下行端口340分配有第一RID(RIDl),功能362分配有第二RID (RID2)和地址200至299,功能364分配有第三RID(RID3)和300至399,功能366分配有第四 RID(RID4)和地址400至499,下行端口 350分配有第五RID(RID5),功能372分配有第六RID (RID6)和地址600至699,功能374分配有第七RID(RID7)和地址700至799,功能376分配有第 八 RID(RID8)和地址800 至899。
[0027] 偶然的非致命错误一般仅影响端点设备的单个端点功能。图3B示出了下行端口 340检测到功能364中的非致命错误的实例。下行端口340用于每功能DPC,因此滤除去往功 能364的包而不禁止链路346。更具体地,下行端口 340用于滤除携带RID3或地址300至399的 范围中的地址,同时通过链路346继续传送携带RID2/RID4或范围200至299/400至499内地 址的包。在一些实施例中,可在入口和出口两个方向滤除包。
[0028]以下是下行端口 340如何能够启动每功能DPC的示例。下行端口 340从上行端口接 收携带RID3或范围300至399中地址的读或写请求,然后在记分板表中创建条目以便跟踪请 求的状态。下行端口340然后通过链路346转发请求并等待响应。在转发请求后,下行端口 340可通过各种方式检测功能364的错误。在一个示例中,超时时间在接收完成包之前到期。 在另一个示例中,下行端口340接收包括完成中止(completion abort,CA)状态或不支持请 求(unsupported request,UR)状态的错误消息或完成包。在各实施例中,完成包包括与转 发的读或写请求关联的标识符(例如,标记字段)。这个标识符可用于通过查询记分板表以 确定与标识符关联的条目来确定先前转发的请求包中携带的RID或地址。或者,错误消息或 完成包可直接携带RID3和/或范围300至399中的地址。在确定功能364已发生非致命错误之 后,下行端口 340可向上行端口 330发送携带RID1的合成错误消息或完成包以避免上行端口 330中的超时。在本示例中,下行端口 340可为PCIe交换机下行端口或根端口。在一些实施例 中,当合成的错误消息携带与下行端口关联的RID时,上行端口 330可忽略合成的错误消息 并继续上行转发错误消息。这样,仅需在下行端口中执行每功能DPC滤除。或者,上行端口 330可与下行端口 340并行执行每功能DPC,在这种情况下,滤除操作分布/重复于整个PCIe 结构中。这可改进冗余和/或提供每功能DPC支持,不管使用的下行端口部件。
[0029]请求包可以携带端点功能的RID或地址。图4示出了携带端点功能的地址(例如,内 存的64位寻址)的请求头格式400,如可包括在读或写请求中的。如图所示,请求头格式400 指定分配给端点功能的一个或多个地址/地址范围以及请求设备(例如,根联合体、端点等) 的请求者ID。图5示出了携带端点功能的RID的请求头格式500,如可能会包括在读或写请求 中的。
[0030] 非致命错误可以通过接收携带完成中止(completion abort,CA)或不支持请求 (unsupported request,UR)状态的错误消息或完成包来检测出。图6示出了完成头格式 600。如图所示,完成头格式600包括完成者ID、请求者ID、完成状态和标记字段。完成包用于 要求完成的非发送请求,例如,读请求。完成状态字段可携带CA或UR状态。标记字段匹配开 放请求,完成者ID(Completer ID)字段确定原始请求的目标。图7示出了错误消息格式700。 如图所示,错误消息可包括请求者IDICIe错误消息用于在处理内存写等没有完成的发送 请求时报告错误。错误消息的请求者IDUequester ID)字段匹配生成该消息的设备或位于 该设备上行的下行端口。
[0031]本发明的各方面提供了一种用于执行每功能DPC的方法。图8示出了用于执行每功 能DPC的的方法800,如可由下行PCIe端口执行的。如图所示,方法800开始于步骤810,在步 骤810中,PCIe端口接收携带RID的读或写请求。然后,方法800前进到步骤820,在步骤820 中,PCIe端口通过与该RID关联的链路转发该读或写请求。随后,方法800前进到步骤830,在 步骤830中,PCIe端口通过该链路接收错误消息或完成包。该错误消息或完成包指示与该 RID关联的功能发生了非致命错误。接着,方法800前进到步骤840,在步骤840中,PCI e端口 通过在地址表中搜索对应于该RID的条目来确定分配给该功能的地址。每个条目可将该RID 与分配给该功能的地址或地址范围关联。然后,方法800前进到步骤850,在步骤850中,PCIe 端口滤除携带该RID或分配给该功能的地址的包而不将该链路去激活。
[0032]在一些实施例中,用于执行每功能DPC的技术包括将地址映射到RID。图9示出了用 于执行每功能DPC的方法900,如可由PCIe端口执行的。如图所示,方法900开始于步骤910, 在步骤910中,PCI e端口接收携带地址的读或写请求。然后,方法900前进到步骤920,在步骤 920中,PCIe端口通过与功能关联的链路转发该读或写请求。随后,方法900前进到步骤930, 在步骤930中,PCIe通过该链路接收错误消息或完成包。该错误消息或完成包指示与该地址 关联的功能发生了非致命错误。接着,方法900前进到步骤940,在步骤940中,PCI e端口通过 在地址表中搜索对应于该地址的条目来确定分配给该功能的RID。随后,方法900前进到步 骤950,在步骤950中,PCIe端口通过在地址表中搜索对应于确定的RID的条目来确定分配给 该功能的剩余地址。然后,方法900前进到步骤960,在步骤960中,PCIe端口滤除携带分配给 该功能的RID或地址的包而不将该链路去激活。
[0033] 在一些实施例中,PCIe事务可包括发送事务(例如,MemWr)和非发送事务(例如, Cfg、I0、MemRd等)两者。在各实施例中,PCIe错误可包括可校正的错误和不可校正的错误。 不可校正的错误可以是致命的或非致命的。DPC可为由不可校正的错误触发的可选能力。当 DPC被触发时,整个链路被禁止,必要的完成被合成,不接受其它上行和下行事务层包。有利 地,DPC提供停止了由其它TLP造成的错误的更稳健和标准化的错误遏制,通过合成完成来 减少超时,以及使用详细的头日志来隔绝将由软件处理的错误,从而提高错误恢复的可能 性。然而,一旦链路被禁止,整个子层都会受影响,把代价高昂且可能难处理的恢复强加给 子层中的所有设备,会对PCIe结构产生不利。这个问题在单根输入输出虚拟化(single root input output virtualization,SR_IOV)设备中更严重,这些SR-I0V设备可具有几十 (或甚至数百)个PCIe功能。
[0034]本发明的各方面为基于ID的路由和基于地址的路由提供了每功能DPGPCIe RID 可为包括总线号、设备号和功能号的路由ID(〈Bus#XDev#>〈Func#>)。
[0035]每功能DPC可由非致命错误触发,可包括事务导向方法,该方法可以可靠地确定端 点功能RID和/或地址。非致命错误可以出现在各种情况中,例如,中毒的TLP、完成超时、完 成者中止、非预期的完成、端到端循环冗余检查(end-to-end cyclic redundancy check, ECRC)错误、不支持的请求、接入控制服务(access control service,ACS)违规、组播 (mUlticaSt,MC)受阻TLP错误、原子出口受阻错误、TLP前缀受阻错误以及其它。非致命消息 可以来自端点设备或来自下行端口。
[0036]下行请求可以包括与端点功能关联的地址或RID。到端点设备的流可在记分板上 记录为开放事务。端点设备可使用指示状态的完成包和/或错误消息作为响应。指示错误状 态的完成包可标记有端点功能RID以确定已被阻止进一步访问(逻辑链路断开)的PCIe功 能。
[0037] 指示错误状态的完成包可标记有下行端口 RID或端点功能RID。完成包可包括与记 分板表中的端点RID关联的匹配完成标记或包括可匹配到地址表中的端点功能RID的端点 功能地址。
[0038]非致命错误消息通常可流向根联合体,可以包括端点功能RID或下行端口 RID。非 致命错误消息可标记有端点功能RID以确定已被阻止进一步访问(逻辑链路断开)的PCIe功 能。当下行端口已为受错误影响的功能启动每功能DPC时,非致命错误消息可标记有下行端 口 RID。因此,接收携带下行端口 RID的非致命错误消息的PCIe端口可忽略非致命错误消息。
[0039] 上行部件(根联合体、根端口和交换机)可在PCIe结构枚举期间侦听PCIe配置空间 访问并且发现下行交换机端口(相对于端点)的RID,因为指示设备是端点还是交换机端口 的设备类型寄存器位于众所周知的地址处。侦听的结果可以存储在实施PF-DPC的上行部件 内的地址表中。
[0040] 记分板可由用于每功能DPC的PCIe端口来管理。这些记分板在一些方面可与现有 根联合体/端口中发现的那些类似,可用于记录未完成的事务以便匹配完成。记分板的输入 可以是标记输出、RID或地址。以下表1示出了记分板的示例。
[0041] 表1
[0042]
[0043] 地址表可由用于每功能DPC的PCIe端口来管理。地址表可用于记录地址范围(例 如,BAR)、表项所属的PCIe功能的RID,以及设备是端点还是交换机端口。可为SR-I0V虚拟功 能单独维护地址表。可以为遗留功能、SR-I0V物理功能(physical function,PF)和虚拟功 能(virtual function,VF)维护不同数目的BAR或地址范围。可以通过在PCIe结构枚举期间 进行侦听来获知遗留功能和SR-I0V物理功能的BAR/地址范围。更具体地,操作系统可通过 访问结构的配置空间寄存器来枚举PCIe结构。访问作为配置事务(ID路由)出现在PCIe链路 上。如果下行端口遇到下行流动的这类事务,其可以检查包并且确定BAR是否正在被访问和 配置,因为非VF设备(遗留和PF设备)的BAR位于众所周知的地址处。因此,下行端口硬件可 以通过"侦听"自己建立完整的地址地图。在枚举时,可以由软件对VF的BAR/地址范围进行 编程。以下表2示出了为遗留或物理功能维护的地址表的示例,以下表3示出了为虚拟功能 维护的地址表的示例。
[0044] 表 2
[0045]
[0046] 表 3
[0047]
[0048] 每功能DPC可在下行端口中实施,因此物理上靠近错误源,比用于限制在根联合体 的功能层级控制的技术可更有效。
[0049]在各实施例中,具有pF-DPC能力的下行端口可用于:记录状态寄存器中端点功能 的RID和/或地址,停止涉及有问题的设备/功能的任何业务(两个方向),滤除标记有端点 RID的新请求/完成,通过在地址表中查找条目来滤除具有与该端点RID匹配的地址的新请 求,以及中断软件以报告故障事件。软件可以用于处理错误条件和/或清除错误状态。然后, 下行端口硬件可以用于允许再次访问设备/功能。PCIe端口与提供受错误影响的功能的端 点设备之间的链路在整个每功能DPC恢复过程中可保持活动。
[0050] 在一项实施例中,下行端口可接收携带地址的PCIe读请求,并且在VF内存空间寄 存器中创建条目。与地址关联的设备/功能可能已遇到故障并可能没有在超时之前作出响 应。下行端口可具有PF-DPC能力,并可在接收到请求事务时打开新记分板条目并记录目标 地址。如果在超时时间到期之前未收到完成,那么pF-DPC端口可声明超时,并可使用记分板 中的目标地址在地址表中查找条目以及确定该地址已被分配给哪个VF^F-DPC端口可根据 以下公式确定故障 VF的 RID: VF_RID= (Target_Addr-BAR_Base)/BAR_Size*VF_Stride+ lstVF_0ffset。然后,pF-DPC端口可滤除被标记VF的RID的新请求/完成,滤除具有与该RID 匹配的地址的新请求,以及在状态寄存器中记录VF_RID并且通过中断将故障报告给软件。
[0051] 图10示出了设备1000的实施例的方框图,设备1000可等同于以上所述的一个或多 个设备。设备1000可包括处理器1004、存储器1006和多个接口 1010、1012、1014,它们可(或 可不)如图10所示排列。处理器1004可为能够执行计算和/或其它与处理有关的任务的任意 部件,存储器1006可为能够为处理器1004存储程序和/或指令的任意部件。接口 1010、1012 和1014可为允许设备1000向或从PCIe接口传送数据或控制信息的任意部件或部件的集合。 [0052]尽管进行了详细的描述,但应理解,可在不脱离由所附权利要求书界定的本发明 的精神和范围的情况下,对本文做出各种改变、替代和更改。此外,本发明的范围不希望限 于本文中所描述的特定实施例,所属领域的一般技术人员将从本发明中容易了解到,过程、 机器、制造工艺、物质成分、构件、方法或步骤(包括目前存在的或以后将开发的)可执行与 本文所述对应实施例大致相同的功能或实现与本文所述对应实施例大致相同的效果。相应 地,所附权利要求范围包括这些流程、机器、制造、物质组分、构件、方法及步骤。
【主权项】
1. 一种用于每功能下行端口控制的方法,其特征在于,所述方法包括: 在快捷外围部件互连标准(Peripheral Component Interconnect,PCI) (PCI Express,PCIe)接口上接收读或写请求,所述读或写请求包括与端点设备的第一功能关联 的第一路由标识符(routing identifier,RID); 检测所述端点设备的所述第一功能的非致命错误; 通过在地址表中搜索与所述第一 RID关联的条目来确定分配给所述端点设备的所述第 一功能的第一地址范围;以及 滤除携带所述第一 RID或所述第一地址范围内的地址的包而不将所述PCIe接口与所述 端点设备之间的链路去激活。2. 根据权利要求1所述的方法,其特征在于,所述条目中的每一个将所述第一 RID与分 配给所述端点设备的所述第一功能的所述第一地址范围中的地址关联。3. 根据权利要求1或权利要求2所述的方法,其特征在于,确定分配给所述端点设备的 所述第一功能的所述第一地址范围包括: 在所述地址表中确定与所述第一 RID关联的一个或多个地址范围。4. 根据权利要求3所述的方法,其特征在于,还包括: 在接收所述读或写请求之前将所述条目写入所述地址表中。5. 根据权利要求4所述的方法,其特征在于,将所述条目写入所述地址表中包括: 侦听传送给所述端点设备的所述第一功能的配置空间访问包以确定与所述第一 RID关 联的设备类型以及确定与所述第一 RID关联的一个或多个地址或地址范围。6. 根据权利要求1至5中任一权利要求所述的方法,其特征在于,所述端点设备包括第 二功能,所述第二功能在所述端点设备的所述第一功能发生所述非致命错误之后保持运 作,所述第二功能分配有第二地址集合,所述第二地址集合与分配给所述第一功能的所述 第一地址范围不同。7. 根据权利要求6所述的方法,其特征在于,滤除携带所述第一地址范围的包而不将所 述PCIe接口与所述端点设备之间的链路去激活包括: 在所述PCI e接口处接收第一业务流和第二业务流,所述第一业务流携带所述第一地址 范围中的一个或多个地址,所述第二业务流携带所述第二地址集合中的一个或多个地址; 以及 通过所述链路转发所述第二业务流而不通过所述链路转发所述第一业务流。8. 根据权利要求7所述的方法,其特征在于,还包括: 丢弃所述第一业务流;以及 向所述第一业务流的发送方发送指示完成中止(completion abort,CA)状态或不支持 请求(unsupported request,·)状态的错误消息或合成完成包,其中,所述错误消息或完 成包携带与所述PCIe接口关联的第二RID。9. 根据权利要求1至8中任一权利要求所述的方法,其特征在于,检测所述端点设备的 所述第一功能的所述非致命错误包括: 接收与所述读或写请求关联的错误消息,其中,所述错误消息包括所述第一RID。10. 根据权利要求1至8中任一权利要求所述的方法,其特征在于,检测所述端点设备的 所述第一功能的所述非致命错误包括: 接收包括标记字段的完成包,所述标记字段标识所述读或写请求,其中,所述完成包包 括所述第一RID和完成中止(completion abort,CA)状态或不支持请求(unsupported request,UR)状态。11. 根据权利要求1所述的方法,其特征在于,所述PCIe接口耦合到用于执行每功能下 行端口控制的PCIe下行端口,所述方法还包括: 接收包括完成中止(compl et ion abort,CA)状态或不支持请求(unsupported request,UR)状态的错误消息或完成包;以及 当所述错误消息或所述完成包指示分配给所述PCIe下行端口的下行RID时,忽略所述 错误消息或所述完成包。12. 一种快捷外围部件互连标准(Peripheral Component Interconnect Express, PCIe)交换结构,其特征在于,包括: 上行PCIe接口;以及 耦合在所述上行PCIe接口与端点设备之间的下行PCIe接口,其中,所述下行PCIe接口 用于执行权利要求1至11中的任一权利要求。13. -种用于每功能下行端口控制的方法,其特征在于,所述方法包括: 在外围部件互连标准(Peripheral Component Interconnect,PCI)接口上接收读或写 请求,所述读或写请求包括分配给端点设备的第一功能的第一地址; 检测所述端点设备的所述第一功能的非致命错误; 通过在地址表中搜索与所述第一地址关联的条目来确定分配给所述端点设备的所述 第一功能的第一路由标识符(routing identifier,RID);以及 滤除携带所述第一 RID的包而不将所述PCIe接口与所述端点设备之间的链路去激活。14. 根据权利要求13所述的方法,其特征在于,还包括: 通过在所述地址表中搜索与所述第一 RID关联的条目来确定分配给所述端点设备的所 述第一功能的一个或多个地址范围;以及 滤除携带所述一个或多个地址范围内的地址的包而不将所述PCIe接口与所述端点设 备之间的链路去激活。15. 根据权利要求13或权利要求14所述的方法,其特征在于,所述条目将所述第一RID 与所述第一地址关联,以及所述第一地址在分配给所述端点设备的所述第一功能的第一地 址范围中。16. 根据权利要求15所述的方法,其特征在于,所述端点设备包括第二功能,所述第二 功能在所述端点设备的所述第一功能发生所述非致命错误之后保持运作,所述第二功能分 配有与所述第一地址范围不同的第二地址范围。17. 根据权利要求16所述的方法,其特征在于,还包括: 在所述PCIe接口处接收第一业务流和第二业务流,所述第一业务流携带所述第一地址 范围内的一个或多个地址,所述第二业务流携带所述第二地址范围内的一个或多个地址; 以及 通过所述链路向所述端点设备转发所述第二业务流而不通过所述链路转发所述第一 业务流。18. 根据权利要求13所述的方法,其特征在于,检测所述端点设备的所述第一功能的所 述非致命错误包括: 接收包括RID字段的第一错误消息,所述RID字段标识所述第一功能或下行端口。19. 根据权利要求13所述的方法,其特征在于,检测所述端点设备的所述第一功能的所 述非致命错误包括: 接收包括字段的完成包,所述字段标识所述读或写请求,其中,所述完成包包括完成中 止(completion abort,CA)状态或不支持请求(unsupported request,UR)状态。20. 一种快捷外围部件互连标准(Peripheral Component Interconnect Express, PCI e)交换结构,其特征在于,包括: 上行PCIe接口;以及 耦合在所述上行PCIe接口与端点设备之间的下行PCIe接口,其中,所述下行PCIe接口 用于执行权利要求13至19中的任一权利要求。21. -种计算机程序产品,其特征在于,包括存储程序的计算机可读存储介质,所述程 序包括执行以下操作的指令: 在快捷外围部件互连标准(Peripheral Component Interconnect,PCI) (PCI Express,PCIe)接口上接收读或写请求,所述读或写请求包括与端点设备的第一功能关联 的第一路由标识符(routing identifier,RID); 检测所述端点设备的所述第一功能的非致命错误; 通过在地址表中搜索与所述第一 RID关联的条目来确定分配给所述端点设备的所述第 一功能的第一地址范围;以及 滤除携带所述第一 RID或所述第一地址范围内的地址的包而不将所述PCIe接口与所述 端点设备之间的链路去激活。22. 根据权利要求21所述的计算机程序产品,其特征在于,所述条目中的每一个将所述 第一 RID与分配给所述的端点设备的所述第一功能的所述第一地址范围中的地址关联。23. 根据权利要求21或权利要求22所述的计算机程序产品,其特征在于,所述确定分配 给所述端点设备的所述第一功能的所述第一地址范围的指令包括执行以下操作的指令: 在所述地址表中确定与所述第一 RID关联的一个或多个地址范围。
【文档编号】G06F13/00GK105980998SQ201580007347
【公开日】2016年9月28日
【申请日】2015年2月4日
【发明人】卫斯理·邵, 林沐晖
【申请人】华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1