多协议I/O互连器流控制的制作方法

文档序号:11590074阅读:170来源:国知局
多协议I/O互连器流控制的制造方法与工艺

本申请是2012年12月20日提交的申请号为201280065150.x的同名专利申请的分案申请。

概括的说,本公开的实施例涉及在计算机装置的多协议i/o互连器中进行多协议隧道化。



背景技术:

常规的计算机平台架构包括用于在计算机平台和连接到平台的外围设备之间实现多种不同类型的i/o的各种主机控制器,并且这些计算机平台通常包括通过协议特定的插座和电线连接到外围设备的协议特定的连接接口。例如,计算机可以包括:通过usb特定的连接接口连接到外围设备的一个或多个usb特定的控制器,通过显示特定的连接接口连接到外围设备的显示特定的控制器(例如,displayport),通pci特定的连接接口连接到外围设备的pci控制器等。

附图说明

将通过在附图中描绘的示例性实施例的方式但不作为限制地来描述本公开的实施例,在附图中,相似的附图标记表示相类似的元件,并且其中:

图1根据本公开的各个实施例描述了包括多协议隧道化i/o互连器的计算机装置。

图2根据本公开的各个实施例描述了包括多协议隧道化i/o互连器的计算机系统。

图3根据本公开的各个实施例描述了多协议隧道化i/o互连器的交换架构。

图4根据本公开的各个实施例描述了用于i/o复合体的多协议互连架构的协议栈。

图5根据本公开的各个实施例描述了用于i/o复合体的多协议互连架构的协议栈的实现。

图6a根据本公开的各个实施例,描述了交换机域的物理拓扑,并且图6b描绘了用于管理图6a的域的生成树的实施例。

图7根据本公开的各个实施例描述了域中的生成树。

图8根据本公开的各个实施例,描述了用于在域中路由配置分组的路由字符串的格式。

图9根据本公开的各个实施例,描述了拓扑id配置寄存器的格式。

图10根据本公开的各个实施例,描述了可以在多个域之间建立的连接。

图11根据本公开的各个实施例,描述了多协议隧道化i/o复合体和互连器。

图12根据本公开的各个实施例,描述了多协议隧道化i/o复合体和互连器。

图13根据本公开的各个实施例,描述了包括与多协议隧道化i/o互连器相连接的多协议隧道化i/o互连器的设备(例如,外围设备)。

图14根据本公开的各个实施例,描述了用于在多协议交换架构上映射displayport流的架构。

图15根据本公开的各个实施例,描述了扫描线的结构和由displayport输入适配器执行的打包。

图16根据本公开的各个实施例,描述了displayport链路训练的链路初始化序列。

图17根据本公开的各个实施例,描述了用于在多协议交换架构上映射hdmi流的架构。

图18根据本公开的各个实施例,描述了视频岛分组格式。

图19根据本公开的各个实施例,描述了数据/控制岛分组格式。

图20根据本公开的各个实施例,描述了基于信用的流控制的总体架构。

图21根据本公开的各个实施例,描述了在接收机处的流控制缓冲器空间。

图22根据本公开的各个实施例,描述了假定8个流控制的路径p1-p8的各个流控制方案。

图23根据本公开的各个实施例,描述了在发射机和接收机处跟踪信息。

图24根据本公开的各个实施例,描述了在发射机和接收机处处理路径信用同步分组。

图25根据本公开的各个实施例,描述了在发射机和接收机处处理链路信用同步分组。

图26是根据本公开的各个实施例的用于配置多协议隧道化i/o互连的方法的流程图。

图27是根据本公开的各个实施例的用于操作包含多协议隧道化i/o互连器的计算机装置的方法的流程图。

图28根据本公开的各个实施例,描述了具有配置成使得装置实施(例如,图23-27的方法中的)多协议隧道化的一些或全部方面的程序指令的制品。

具体实施方式

将使用本领域的技术人员通常使用的术语来描述说明性实施例的各个方面,以向本领域中的其他人传达其工作的本质。但是,对于本领域的技术人员而言显而易见的是,可以仅利用所描述的方面中的一些来实施供替代的实施例。为了解释的目的,给出了具体的数目、材料和配置,以提供对说明性实施例的透彻理解。但是,对于本领域中的技术人员而言显而易见的是,可以在没有这些具体细节的情况下实施供替代的实施例。在其他实例中,省略或简化了公知的特征,以不混淆说明性的实施例。

此外,继而,将以对理解说明性实施例最有帮助的方式将各个操作描述为多个分立的操作;但是,描述的顺序不应被解释为隐含着这些操作一定要依赖于顺序。具体地,这些操作无需以呈现的顺序执行。此外,在本公开的保护范围内的方法可以包括以所描述的方法更多或更少的步骤。

重复地使用了短语“在一些实施例中”。通常该短语不指相同的实施例;但是,其可以指相同的实施例。术语“包括”、“具有”和“包含”是同义,除非上下文指示不是这样。短语“a和/或b”指(a)、(b)、或(a和b)。短语“a/b”指(a)、(b)、或(a和b),与短语“a和/或b”类似。短语“a、b和c中的至少一个”指(a)、(b)、(c)、(a和b)、(a和c)、(b和c)或(a、b和c)。短语“(a)b”指(b)或(a和b),即a是可选的。

图1根据各个实施例描述了包括多协议隧道化i/o互连器108的计算机装置100。在许多实施例中,计算机装置100可以包括一个或多个处理器102。在不同的实施例中,一个或多个处理器102可以包括一个内核或多个内核。在一些实施例中,装置100可以是多处理器系统(未示出),其中,处理器中的每一个具有一个内核或多个内核。

如图1中所示出的,一个或多个处理器102可以通过一个或多个链路(例如,互连、总线、等)操作性地耦合到系统存储器104。系统存储器104可以存储一个或多个处理器100用于操作并执行程序的信息以及操作系统。在不同的实施例中,系统存储器104可以是诸如动态随机存取存储器(dram)的形式之类的任何可用的可读且可写存储器的类型。

在先前实现的计算机装置中,将外围设备连接到计算机系统的i/o链路是协议特定的,其具有允许利用协议特定的电缆将兼容外围设备连接到协议特定的连接器端口的协议特定的连接器端口(即,usb键盘设备将被插入usb端口、路由器设备将被插入lan/以太网端口等)。任何单个连接器端口将被限制在具有兼容的插头和兼容的协议的外围设备。一旦将兼容的外围设备插入连接器端口,将在外围设备和协议特定的控制器之间建立通信链路。

在如图1中示出的实施例中描述的计算机装置中,一个或多个处理器102可以操作性地耦合到i/o复合体106,其可以容纳一个或多个多协议i/o连接器108,该一个或多个多协议i/o互连器108被配置成控制允许一个或多个处理器102与一个或多个i/o外围设备110通信的一个或多个i/o链路。为了提供多协议能力,至少部分地,i/o互连器108可以包括:多协议交换架构114,其被配置成运送多i/o协议。在各个实施例中,多协议交换架构114可以包括多个交叉开关。除了其他设备之外,i/o外围设备110的示例可以包括显示设备、键盘设备、扩展端口、桌上型或移动计算机系统、或路由器。

可以将非协议特定的连接器端口112配置成利用设备110的连接器端口(未示出)耦合到i/o互连器108,允许多个设备类型通过单个物理连接器端口112连接到计算机系统100。此外,设备110和i/o复合体106之间的i/o链路可以被配置成同时运送多个i/o协议(例如,pciusb、displayport、等)。在各个实施例中,连接器端口112可以在两个方向提供链路的全带宽,在端口之间或在上游和下游方向之间不共享带宽。在各个实施例中,i/o互连器108和设备110之间的连接可以支持电连接、光连接或两者都支持。

装置100可以是单独的设备或可以被并入各个系统中,包括但不限于,各种计算和/或消费电子设备/电器,例如桌上型计算设备、移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)、移动电话、智能电话、个人数字助理、服务器、工作站、机顶盒、数字记录器、游戏控制台、数字媒体播放器以及数字照相机。在图2中描绘了示例性系统200的框图。系统200可以包括一个或多个处理器202、系统存储器204、以及i/o复合体206,全部操作性地通过总线115耦合。i/o复合体206可以包括一个或多个多协议i/o互连器208,其每一个包括交换架构214并控制允许一个或多个处理器202与一个或多个i/o外围设备210通信的一个或多个i/o链路。在各个实施例中,系统200可以具有更多或更少的组件、和/或不同的架构。

系统200可以包括:通信接口,其操作性地耦合到总线215,以为系统200提供用于通过一个或多个网络和/或与任何适当的设备通信的接口。通信接口217可以包括任何适当的硬件和/或固件。针对一个实施例的通信接口217可以包括例如网络适配器、无线网络适配器、电话调制解调器、和/或无线调制解调器。对于无线通信,针对一个实施例的通信接口217可以包括:无线网络接口控制器219,其具有一个或多个天线221,以建立并维护与无线网络的一个或多个组件的无线通信链路。系统200可以根据一个或多个无线网络标准和/或协议中的任何一个,与无线网络中的一个或多个组件无线地通信。

系统100可以包括显示设备223,诸如例如阴极射线管(crt)、液晶显示器(lcd)、发光二极管(led)、或其他适当的显示设备之类的,操作性地耦合到总线215,以显示信息。在各个实施例中,显示设备223可以是与系统200互连的外围设备。在这些实施例的各个中,这样的外围显示设备可以通过多协议端口212与i/o复合体206互连。

如本申请中描述的,为了提供能够承载多个i/o协议的i/o互连器,本申请中描述的多个i/o互连器中的一个或多个除了其他方面之外,可以包括包含多个交叉开关的多协议交换架构314,如图3中示出的。多协议交换架构314可以与本申请中描述的其他多协议交换架构类似。通常,交换机316a、316b是包括多个端口320s、320b、322a的设备,其具有将分组从任何输入端口路由到任何输出端口的能力。在各个实施例中,交换机316a、316b可以包括任何数量的端口320s、320b、322a,其各自另外地包括内部控制端口326a、326b。交换机316a、316b各自可以可选地包括时间管理单元330a、330b,以在整个多协议交换架构314中分配和同步时间,如本申请中更全面描述的。

交换机316a可以表示第一类型的交换机,其包括配置成连接到单个光或电链路的空端口320a,而适配器端口322a可以被配置成连接到一个或多个所映射的i/o协议链路。适配器端口322a可以用于将所映射的i/o协议实体连接到多协议交换架构314。如本申请中使用的,术语“适配器”可以用于指可以被内置在交换端口中以将所映射的i/o协议分组封装成在多协议交换架构314上流动的i/o分组的协议适配功能。

交换机316b可以表示第二类型的交换机,其仅包括配置成连接到单个光或电链路的空端口320b(如同空端口320a一样)。

虽然图3中描绘的交换机316a、316b各自包括四个适配器端口322a和四个空端口320a、320b,但是,端口320a、320b、322a的实际数目可以比所示出的数目更少或更多。为了在交换机316a、316b之间提供连接,交换机实现通常最低限度地包括至少一个空端口和至少一个适配器端口、或至少两个空端口。

在各个实施例中,多协议交换架构314可以包括一个或多个第一类型的交换机316a以及一个或多个第二类型的交换机316b。

为了在本公开的保护范围内在交换架构的适配器端口之间实现各种多协议隧道化,可以提供连接管理器(未描绘)。可以以软件、固件将连接管理器实现为i/o复合体内的逻辑单元,作为系统bios的一部分,或实现为运行在包括i/o复合体的计算机装置或系统上的操作系统内的逻辑单元。

在图4中示出了用于i/o复合体的多协议互连架构的示例性协议栈。电及光子层、逻辑子层、传输层以及帧层可以定义i/o复合体的基本多协议互连架构,在其中,物理层包括电、光以及逻辑子层。所映射的协议层可以描述将特定i/o协议映射到多协议互连架构上。

在各个实施例中,并且参考图3和图4,可以利用多协议交换架构314的交换机316a、316b的所有端口320a、320b、322a实现传输层,可以通过所有空端口320a、320b实现物理层,并且适配器端口322a可以实现单个所映射的协议层或帧层。

在图5示出了协议层的示例性实现。在所示出的示例中,使用交换机516a、516b、516c、516d实现两个协议。交换机516a、516b、516c、516d中的每一个包括控制端口526a、526b、526c、526d和时间管理单元530a、530b、530c、530d。

如所示出的,适配器端口522a1、522c实现第一协议层(或帧层)“协议1”,适配器端口522a2、522d实现第二协议层(或帧层)“协议2”。所有端口实现传输层,而由所有空端口520a、520b、520c、520d实现物理层。

这样的话,交换机的端口之间的链路(例如,链路532)可以由在多协议交换架构的适配器端口之间遍历该架构的多个路径有效地共享。在各个实施例中,多协议互连架构可以是面向连接的,使得路径在数据传输发生之前被配置成端对端。该路径可以遍历通过多个协议交换架构的一个或多个链路以及每一跳,可以向该路径分配本地唯一的标识符,该标识符可以在与该路径关联的全部分组的头部中携带。在各个实施例中,在多协议交换架构中可能不记录属于该路径的分组。缓冲器分配(流控制)和服务质量可以以每路径为基础来实现。这样的话,路径可以针对通过多协议交换架构的映射的i/o协议提供虚拟线语义。

在各个实施例中,一些交换机(域)的物理拓扑可以是随意互连的图。图6a示出了交换机1-6的域的物理拓扑的示例。应该注意的是,域是管理概念而不是操作性的。在各个实施例中,如先前描述的,连接管理器可以配置交换架构的域。为了进一步管理的目的,多协议装置可以被配置成创建生成树(例如,通过连接管理器的方式)。图6b示出了创建用于管理图6a的域的示例性生成树,其中,可以将位于生成树顶部的交换机1称为根交换机。应该注意的是,生成树可以包括任何适当数目的层级。在各个实施例中,生成树的最大数目的层级可以是7。

图7示出了在域中生成树的示例。还示出的是针对域中的每一个交换机的唯一的拓扑id的示例性分配。例如,交换机j具有0、4、1、1、2、1、8的拓扑id。在各个实施例中,可以向域中的每一个交换机分配唯一的拓扑id,并且每一拓扑id可以表示在域的生成树中的交换机的位置。在各个实施例中,连接管理器可以在初始化期间完成拓扑id的分配,其中,通过列举可以达到的交换机,可以创建域,并且可以针对每一交换机分配拓扑id。

如图7中所示出的,该域包括7个层级(层级0-6),并且每一个交换机的拓扑id是代表在路径上树的从根交换机到自身的每一层级处的出口端口的的7个端口号的序列。在深度x(其中,在该示例中,x是从0到6)处的交换机的拓扑id可以包含针对层级0至x-1的非0的端口号。在深度x处的端口号可以是0,表示在深度x处的交换机的控制端口。可以将从深度x+1到6的端口号当作“不关心”,并且可以将其设置在0。从而,在所示出的示例中,在根交换机处的控制端口具有0、0、0、0、0、0的拓扑id。

在各个实施例中,对于流向下游(与生成树相关)的配置分组的路由是可以基于目标交换机的拓扑id的。可以在传输层分组头部路由配置分组。在各个实施例中,流向上游的配置分组可能不使用拓扑id,并且其可以仅通过每一交换机的上游端口来转发。典型地,每一配置分组携带在其有效载荷中包含的路由字符串。在图8中示出了路由字符串的示例性格式。如所示出的,路由字符串可以实质上是交换机的拓扑id,针对该交换机发送配置请求,或从其处发起配置响应。当配置消息是流向下游(从连接管理器到交换机)时,可以将路由器字符串的msb比特(cm比特)设置为0,并且如果消息是按照上游方向流动,则将其设置为1。

在各个实施例中,连接管理器可以利用每一交换机在生成树中的拓扑id和其层级来配置每一交换机。也可以利用通过硬件捆绑或其他类似的机制将上游指向域的连接管理器的端口号来配置每一交换机。在各个实施例中,拓扑id、深度(在树中)和面向上游的端口可以是在每一交换机的交换机配置空间中的配置寄存器,上述配置寄存器在枚举期间由连接管理器初始化。在图9中示出了拓扑id配置寄存器的示例性格式。对于所描绘的示例,拓扑id的msb可以是有效标记,其可以在重置时被设置为0,并且在初始化拓扑id时,通过连接管理器设置为1。可以将拓扑id的保留位设置为0。

可以根据一个或多个规则,由交换机的控制端口路由沿树向下流的配置分组。例如,在各个实施例中,可能需要交换机的控制端口从与树中其所配置的层级相对应的路由字符串提取端口。在各个实施例中,如果端口是0,则可能需要控制端口使用该分组。在各个实施例中,如果端口非零,则可能需要控制端口通过与从路由字符串提取的端口相匹配的交换机端口转发该分组。在各个实施例中,沿着生成树向上游流的配置分组可以仅通过所配置的面向上游的端口转发。

在各个实施例中,多个域可以互连。图10示出了可以在多个域之间建立的示例性连接。如所示出的,域1的交换机1-6可以与域2中的交换机a-e互连。

在各个实施例中,可以在连接管理器执行对上电后的拓扑的初始发现时或通过处理热插事件来发现域间链路。当对链路中的交换机的交换机配置空间读取导致发送error(错误)分组时,可以将链路指定为域间链路,上述发送error分组表明该拓扑id字段先前已经被分配。当发现域间链路时,连接管理器可以通知系统软件。用于传送通知的机制可以是实现定义的。

在各个实施例中,传输层可以仅定义通过域间链路连接的域的两个连接管理器之间的、域间配置分组的路由。可以由系统软件控制跨多个域的配置分组的路由。当域是菊花链时,可以沿着到目标域的路径,将从发起域传递的配置分组传送至每一域的连接管理器。中间域的连接管理器可以将配置分组传递至系统软件,该系统软件可以负责通过去往目标域的域间链路中继分组。

对域间request(请求)分组的路由可以是根据一个或多个规则的。例如,在各个实施例中,在发起域上的系统软件可以利用指向域的出口端口的路由字符串来形成request分组,上述域的出口端口连接到分组必须通过其转发的域间链路,并且可以将cm比特设置为0。可能需要基于在域中每一跳处的路由字符串来路由分组,并且通过出口端口在域间链路之间转发。在接收域的入口端口处,控制端口可以将路由字符串重新映射成指向通过其接收分组的入口端口,并且cm比特可以被设置为1。在各个实施例中,然后,如同其他的域内配置分组,可能需要将分组路由到接收域的连接管理器。可能需要由接收域的连接管理器将分组传送至系统软件。

域间response(响应)分组的路由可以遵循上文的相同步骤中的一个或多个。在各个实施例中,构造response分组的系统软件可以在相应的request分组中使用路由字符串,其中,cm比特被设置为0。

在各个实施例中,针对通过多协议交换架构的流,传输层可以使用分层级的、基于信用的流控制方案,以避免或最小化由于拥塞导致的接收缓冲器的溢出。在各个实施例中,流控制方案可以允许接收机实现从每路径专用缓冲器到由多个路径动态共享的缓冲器池的各种缓冲器分配策略。在各个实施例中,可以以每路径为基础关闭流控制。当针对路径关闭流控制时,可能需要向路径提供可以在每一链路处保存至少一个最大尺寸的传输层分组的接收缓冲器。

图11根据各个实施例示出了示例性i/o复合体1106。i/o复合体1106可以类似于图1中的i/o复合体106,其包括配置成与设备1110耦合的i/o互连器1108。可以向设备1110配置一个或多个i/o协议(例如,pciusb、displayport、等)。

在各个实施例中,i/o复合体1106可以被配置成通过i/o互连1108,将设备1110与一个或多个协议特定的控制器1109a、1109b、…1109n相连接,以便以对隧道化的i/o协议的os软件栈透明的方式,通过公共链路对多个i/o协议隧道化。然后,协议特定的控制器1109a、1109b、…1109n可以被配置成与os中相应的协议特定的驱动器通信,以配置设备1110,如同设备1110与协议特定的控制器1109a、1109b、…1109n直接相连似的。

图12示出了配置成以对隧道化的i/o协议的操作系统软件栈透明的方式,通过公共链路对多个i/o协议隧道化的多协议装置(例如,诸如图1中的装置100之类的)的示例性硬件和软件实现。在各个实施例中,多协议装置可以使用多级别热插信令方案来支持以软件透明的方式通过公共互连器对多个i/o协议的隧道化。

对于在图12中示出的实现,当将设备1210插入装置1200的非协议特定的端口1212中时,可以由i/o互连器1208向os中的i/o驱动器(或向嵌入的i/o固件)发送i/o热插指示。然后,可以由os/固件中的i/o驱动器1213处理该热插指示,这使得在i/o互连器1208和设备1210之间建立通信路径。在各个实施例中,建立通信路径可以包括在域中的源适配器和目标适配器之间配置一个或多个路径(在别处更详细描述了)。一旦建立了路径,就可以执行所映射的i/o协议特定的配置,其中,可以由关联的协议特定的控制器1209a、1209b、…1209n向os/固件中相应的协议特定的驱动器1211a、1211b、…1211n发送协议特定的热插指示。然后,协议特定的驱动器1211a、1211b、…1211n可以配置关联的协议特定的控制器1209a、1209b、…1209n,如同设备1210与协议特定的控制器1209a、1209b、…1209n直接连接一样。在该点处,外围设备1210对系统软件是可见的,并且其被配置成由应用使用。

在各个实施例中,可以配置装置1200,使得当从端口1212断开设备1210时,可以发生相反顺序的事件。特别地,协议特定的驱动器1211a、1211b、…1211n可以处理协议特定的拔出事件,并且,然后,在协议特定的处理之后,i/o驱动器1213可以处理i/o拔出事件。

本申请中描述的外围设备(例如,设备110、210、1110或1210)可以是各种类型的设备中的任何一个,如先前记载的。在各个实施例中,外围设备可以是扩展端口(或其他多协议外围设备),利用上述扩展端口,可以利用一个或多个i/o协议,耦合一个或多个其他设备。例如,对于外围设备是扩展端口的实施例,可以将该设备与pci设备和displayport设备同时耦合,其可以通过扩展端口设备与i/o复合体耦合。在另一示例中,外围设备可以是移动的或桌上型计算机系统,并且通过该设备一个或多个其它设备可以与移动的或桌上型计算机系统耦合,并且与i/o复合体耦合。在各个实施例中,通过将设备菊花链在一起来将多个外围设备耦合在一起。

在各个实施例中,外围设备和/或与外围设备耦合在一起的其他设备也可以包括与本申请中描述的i/o互连器108、208、1108、1208中的一个或多个类似的i/o互连器。如图13中示出的,例如,可以将包括多协议互连器1301的设备1310配置成与多协议装置1300互连,其中,多协议互连器1301包括多协议交换架构1303,多协议装置1300也包括多协议互连器1308和交换架构1314。一个或多个其他的外围设备1305a、1305b、…1305n可以通过一个或多个相应的非协议特定的端口1312与i/o互连器1301互连。

如本申请中记载的,i/o复合体的各个实施例和包括i/o复合体的装置可以被配置成以软件透明的方式或基本透明的方式隧道化多个协议穿过多协议互连器。现在将参考图14-19进一步详细描述displayport和隧道化技术的具体示例。

图14示出了用于在本申请中描述的多协议交换架构上映射displayport流的示例性架构。用于映射displayport的架构模型可以是displayport源和displayport宿(sink)之间的虚拟线的架构模型。displayport映射可以充当displayport线缆替代并且,从而,其可以对从源到宿(以及软件栈)的displayport链路是完全透明的。displayport输入适配器可以终止来自源设备的displayport链路,并且将displayport主链路和auz信道传输封装在分组内,并且穿过交换网传输它们。在网络的另一端处,displayport输出适配器可以将视频和aux信道数据解封装,并且重新创建连接到宿设备的displayport链路。热插检测(hpd)指示也可以作为分组来发送。

在各个实施例中,当将displayport链路映射到本申请中描述的多协议交换架构上时,可以将连续的主链路数据流转换成多种类型的i/o分组。图15示出了扫描线的示例性结构以及displayport输入(in)适配器执行的打包。在打包期间,displayport输入适配器可以丢弃全部的填充符号(在活动像素数据的传输单元tu中并且在空白期间),并且displayport输出(out)适配器可以重新创建全部的填充符号。为了使在displayport输出适配器处能够准确地重建该填充,displayport输入适配器可以每一i/o分组包括填充计数字段,该填充计数字段可以如所示出的就在当前的分组之前所丢弃的填充符号的数目。

在各个实施例中,displayport输入适配器可以将aux信道请求打包,并将其作为i/o分组在多协议交换架构中发送,并且displayport输出适配器可以将其在另一端处重放。displayport输出适配器可以将aux信道响应打包,并将其作为i/o分组在多协议交换架构中发送,并可以由displayport输入适配器在另一端重放。

在各个实施例中,displayport输出适配器可以将hpd指示打包,并将其作为i/o分组在多协议交换架构中发送,并且可以由displayport输入适配器在另一端处重放。

可以由图形处理单元(gpu,未描绘)通过aux信道发起displayport链路训练,并且可以以使得在gpu和displayport输入适配器之间的displayport链路以及在displayport输出适配器和显示设备之间的displayport链路能被训练成相同的配置的方式来执行displayport链路训练。在各个实施例中,这可以导致,从gpu的观点来看,对于在多协议交换架构中连接的显示设备和对于本地连接到gpu的显示设备可以以相同的方式来支持显示设备热插拔操作。在图16中示出了示例性的链路初始化序列,其中,在第一次尝试中训练失败,并且displayport输出适配器被强迫选择减少的比特率配置。

在本申请中描述的displayport隧道化架构可以支持在本申请中描述的多协议交换架构上的对优质内容流的透明隧道化。多协议交换架构可以表现为将高带宽数字内容保护(hdcp)发射机直接连接到hdcp接收机的displayport虚拟线。通过多协议交换架构,可以透明地处理hdcp内容保护机制。

图17示出了用于在本申请中描述的多协议交换架构上映射hdmi流的示例性架构。用于隧道化hdmi的架构模型可以是hdmi源和hdmi宿之间的虚拟线的架构模型。hdmi隧道可以充当hdmi线缆替代并且从而对hdmi源和宿(以及对软件栈)可以是透明的。如图28中示出的,hdmi输入适配器可以终止来自源设备的hdmi链路,并且将hdmitmds链路以及ddc信道传输封装在i/o分组内,并将它们在交换架构网络中传输。在网络的另一端,hdmi输出适配器可以对tmds和ddc信道数据解封装,并重新创建连接到宿设备的hdmi链路。也可以将hpd指示作为i/o分组发送。

在各个实施例中,当将hdmi链路映射到本申请中描述的多协议交换架构上时,可以将连续的tmds链路a/v流转换成多种类型的i/o分组。“视频岛分组”(运送像素数据)可以用于在多协议交换架构中从hdmi输入适配器向hdmi输出适配器传输活动像素数据。数据/控制岛分组可以用于从hdmi输入适配器向hdmi输出适配器传输数据和控制字符。分别在图18和19中示出了示例性的视频岛分组和数据/控制岛分组格式。

在各个实施例中,hdmi输入适配器可以充当总线上的代理从设备。hdmi输入适配器可以接收hdmi源发送的ddc交易参数,并使用ddc请求分组,将其通过ddc路径向hdmi输出适配器发送。hdmi输出适配器可以充当总线上的代理主设备,并且发起到hdmi宿的ddc交易。当hdmi宿以数据或确认响应时,hdmi输出适配器可以使用ddc响应分组向hdmi输入适配器发送响应。当hdmi输入适配器接收ddc响应分组时,hdmi输入适配器可以向hdmi源中继交易响应。

在各个实施例中,链路初始化可以包括各个阶段。多协议装置可以被配置(例如,通过基于软件或固件的连接管理器)成识别活动hdmi输入适配器以及hdmi输出适配器,并且可选地,插/拔事件。多协议装置可以被配置成(例如,通过连接管理器)设置或使能在hdmi输入适配器和hdmi输出适配器之间的路径。该源可以使5v信号有效,并且hdmi输入适配器可以将该指示传递至hdmi输出适配器,hdmi输出适配器可以将其转发至宿(除非由于5vo比特已经完成)。该宿可以通过声称hpd来响应。可以向hdmi输入适配器转发该指示,hdmi输入适配器可以将其转发至源。在各个实施例中,hdmi输入适配器可以可选地充当存储中继器并在向源声称hpd之前读取宿。当在hdmi输入适配器处锁定tmds链路时,其可以向hdmi输出适配器发送link_up指示(与hdmi/dvi状态一起),并且可以从该阶段发送tmdslpk分组和tmu时钟同步分组。hdmi输出适配器可以生成tmds时钟,并且当其稳定时,开始驱动tmds业务。

当流式传送优质内容时,多协议装置隧道化hdmi可以使用hdcp来采用内容保护。本申请中描述的hdmi映射架构可以支持在多协议交换架构上对优质内容流进行透明映射。hdmi映射可以表现为将hdcp发射机与hdcp接收机直接连接的hdmi链路。可以透明地处理hdcp内容保护机制。

图20示出了基于信用的流控制的总体架构的示例。在各个实施例中,接收机可以定期地向发射机发送信用准许分组。信用准许分组中的信息可以指示针对该路径当前未被占用的缓冲器空间。假如发射机已经从接收机接收了足够数量的未完成信用,则可以允许发射机在路径上发送传输层分组。

在交换机之间的每一链路1234a、1234b、1234c处,流控制可以在多个级别上操作。在各个实施例中,可以单独地流控制每一路径。当使用动态缓冲器共享时,可以使用链路级别的流控制。

如图21中示出的,可以概念性地将接收机处的流控制缓冲器空间分成两个区域:静态分配给路径的缓冲器池以及由一组路径动态共享的第二缓冲器池。在各个实施例中,可以在专用缓冲器和共享的缓冲器之间灵活地划分总的缓冲器空间。

如由图22示出的,流控制架构的各个实施例可以允许在接收机处的若干缓冲器分配策略。图22示出了假定8个流控制的路径p1-p8的各个流控制方案。利用静态的缓冲器划分,可以将整个缓冲器空间静态地划分成每路径流控制缓冲器。静态划分可以基于所预期的路径的数据速率。当路径的数据速率在本质上受到源的限制时,可以使用静态的缓冲器分配来将针对路径的专用的缓冲器组分配成与其速率限制成比例。

在各个实施例中,在接收机处的整个缓冲器空间可以由在链路处活动的全部路径动态地共享。利用动态的缓冲器共享,接收机可以将整个的缓冲器路径通告为针对每一路径可用的缓冲器。链路级别的流控制方案可以确保当多个流在链路处同时突发业务时,没有分组丢失。当知道不是所有的路径都将在给定的链路处同时进行发送时,该缓冲器分配策略是有用的。

也可以使用共享的缓冲和静态的划分的混合。在这些实施例的各个中,可以向某些路径分配专用缓冲器,并且不允许这些路径访问共享的缓冲器空间。其他的路径不可以使用静态分配并且动态地共享剩余的缓冲器空间。

在图22中所描绘的缓冲分配策略的示例的剩余部分中,可以允许对共享的缓冲器空间的共享进行控制。在该方案中,可以将每一路径限制在其能使用的共享的缓冲器空间的数量中。针对共享缓冲器的所有路径的每路径限制的总和可以比共享的缓冲器空间的总数更大。链路级别的流控制方案可以确保不会出现由于对共享的缓冲器空间的过量预定而导致的分组丢失。该缓冲器分配策略可用于控制在接收机处共享相同的缓冲器空间的路径之间的干扰。

图23示出了在发射机和接收机处跟踪信息的示例。如根据流控制的各个实施例所示出的。如所示出的,发射机可以以每路径为基础跟踪所消耗的路径信用(pcc),其可以是这样一个计数:从路径被初始化时起在该路径上的传输层分组传输所消耗的流控制单元的总数模256。当建立路径时,可以将pcc设置为0,并且当通过该路径发送传输层分组时,将pcc更新为(pcc+1)模256。路径信用限制(pcl)可以包括由接收机所通告的流控制单元的最新的数量。当建立路径时,可以将pcl设置为0,并且当接收到针对该路径的信用准许分组时,可以通过利用在针对该路径的信用准许记录中包含的值重写pcl中的值来进行更新。

在各个实施例中,除了每路径流控制状态,发射机也可以以每链路为基础跟踪流控制信息。所消耗的链路信用(lcc)可以是这样一个计数:从链路被初始化时起在该链路上的传输层分组传输所消耗的流控制单元的总数模256。lcc可以是在链路上的所有pcc计数器的总和。当初始化端口时,可以将lcc设置为0,并且当接收针对该链路的信用准许分组时,可以通过利用在针对该链路的信用准许记录中包含的值重写在链路信用限制(lcl)中的值来进行更新。

在各个实施例中,发射机选通功能可以确定是否已经通告了足够的信用以用于允许在启用了流控制的路径上的队列的头部的传输层分组的传输。如果发射机机没有足够的信用,则可以阻止在路径上传输分组,直到由于所接收的信用准许分组而积累了足够的信用。如所示出的,在各个实施例中,发射机选通功能测试可以只有在(pcl-(pcc+1))模256≤128时、以及如果启用了共享的缓冲的话则在(lcl-(lcc+1))模256≤128)时,才允许在路径上发送传输层分组。

在接收机侧,接收机也可以以每路径为基础跟踪各种信息。例如,接收机可以跟踪所分配的路径信用,其可以是从初始化时起向该路径的发射机分配的流控制单元的总数模256。初始地,可以由连接管理器在建立路径时,根据缓冲器的大小和接收机的策略对所分配的路径信用值进行设置。当启用了共享的缓冲时,当由于传输层分组从路径队列离开,另外的缓冲器空间变得可用时,可以将所分配的路径信用值更新为(所分配的路径信用+1)模256。

在各个实施例中,接收机可以以每链路为基础跟踪各种信息。例如,接收机可以跟踪所分配的链路信用,其可以包含从初始化时起分配用于共享的缓冲的流控制单元的总数模256。初始地,可以由连接管理器在初始化链路时,根据缓冲器的大小和接收机的策略对所分配的链路信用进行设置。当启用了共享的缓冲时,当由于传输层分组从路径队列离开,另外的缓冲器空间变得可用时,可以将所分配的链路信用值更新为(所分配的链路信用+1)模256。

在各个实施例中,接收机可以以每链路为基础跟踪所接收的链路信用,其可以包含从使用共享的缓冲对路径进行初始化时起所接收的流控制单元的总数模256。当初始化链路时,可以将所接收的链路信用值设置为0,并且当启用共享的缓冲时,当接收分组时,可以将所接收的链路信用值更新为(所接收的链路信用+1)模256。

各个实施例可以被配置成维持信用流控制状态在不可靠的链路上的发射机和接收机之间同步。通常,在存在比特错误的情况下,应该正确地维护在链路中跟踪的流控制状态。为了此目的,可以并入健壮性机制,以避免丢失信用准许分组和数据分组。

在各个实施例中,每一信用准许分组包括针对路径和针对链路所分配的信用的最新值。可以从接收机向发射机周期性地发送信用准许分组。该信用准许分组的周期性传输可以提供健壮性,以避免由于比特错误所导致的信用准许分组丢失。当由于比特错误丢失信用准许分组时,下一个成功接收的信用准许分组可以正确地调整发射机中信用限制计数器的值。

当由于比特错误丢失数据分组时,针对路径的所分配的路径信用计数器不能由接收机调整。此外,如果启用了共享缓冲,则也不可以调整针对路径的所分配的链路信用计数器。因为发射机已经增加了所消耗的路径信用(pcc)计数器,以及如果可以适用的话,所消耗的链路信用计数器,则流控制可能不同步。为了重新建立同步,并且在存在丢失数据分组的情况下维持健壮性,可以由发射机向接收机周期性地发送信用同步分组。路径信用同步分组可以调整接收机处的所分配的路径信用计数器的值,以补偿针对所丢失的数据分组所消耗的信用单元。链路信用同步分组可以调整接收机处的所分配的链路信用计数器的值,以对使用共享缓冲的路径补偿针对所丢失的数据分组而消耗的信用单元。

图24示出了在发射机和接收机处处理路径信用同步分组的示例。在各个实施例中,发射机可以以某一时间间隔将路径信用同步分组插入到每一流控制路径的数据流中。例如,发射机可以每10秒将路径信用同步分组插入到每一流控制路径的数据流中。在各个实施例中,路径信用同步分组可能不是流控制的,从而可以被插入到发射机处路径的队列的头部处,如图所示。发射机可以包括在将路径信用同步分组插入到发射机处路径的队列的头部处时,对所消耗的路径信用计数器拍下的快照。

在接收机处,当接收到路径信用同步分组时,接收机可以将路径信用同步分组插入路径的队列的尾部。当路径信用同步分组被接收机消耗(移出队列)时,可以将所分配的路径信用计数器更新为(所消耗的路径信用+i)模256,其中,i是针对该路径的、所分配的路径信用计数器的初始值。在各个实施例中,在接收机处正确接收的每一路径信用同步分组可以调整所分配的路径信用计数器的值,以补偿从接收到先前的路径信用同步分组起,已经出现的所有的数据分组丢弃。

图25示出了在发射机和接收机处处理链路信用同步分组的示例。在各个实施例中,发射机可以以某一时间间隔将链路信用分组插入到每一流控制路径的数据流中。例如,发射机可以每10秒将链路信用分组插入到每一流控制路径的数据流中。如所示出的,在各个实施例中,链路信用同步分组可能不是流控制的,从而,可以将其插入到等待发送的共享缓冲器路径的所有分组的前面。发射机可以包括在插入链路信用同步分组以进行传输时,对所消耗的链路信用计数器拍下的快照。

在接收机处,接收机可以将所分配的链路信用计数器更新为(所分配的链路信用+[(所消耗的链路信用-所接收的链路信用)模256])模256。在更新了所分配的链路信用计数器之后,接收机可以将所接收的链路信用计数器更新为所消耗的链路信用值。

在各个实施例中,在接收机处正确接收的每一链路信用同步分组可以调整所分配的链路信用计数器的值,以补偿从接收到先前的链路信用同步分组起,已经在使用共享的缓冲的路径上出现的所有数据分组丢弃。

图26是根据本公开的各个实施例,用于配置多协议隧道化i/o互连的示例性方法2600的流程图。如由框2602-2610所描绘的,方法2600可以包括一个或多个功能、操作、或动作。

方法2600的处理可以以框2602开始,识别多协议互连的交换架构的多个交换机。

方法2600可以继续进行到框2604,创建多个交换机的生成树表示。

方法2600可以继续进行到框2606,向生成树的多个交换机中的交换机分配唯一的标识(id)。在各个实施例中,上述id可以表示生成树中交换机的相对位置。

方法2600可以继续进行到框2608,将(生成树中的)交换机的id和深度存储到每一交换机的一个或多个寄存器中。

方法2600可以继续进行到框2610,至少部分地基于其相应的id,将配置分组路由通过生成树到交换机。

图27根据本公开的各个实施例描绘了用于操作包括多协议隧道化i/o互连器的计算机装置的示例性方法。如由框2702-2722所描绘的,方法2700可以包括一个或多个功能、操作或动作。

用于方法2700的处理可以以框2702开始,确定是否已经将外围设备插入包括多协议隧道化i/o互连器的计算机装置的非协议特定的端口中。插可以指外围设备与非协议特定的端口直接耦合、和/或目标外围设备被直接耦合到与非协议特定的端口直接耦合的某一其他外围设备。在后一个实施例中,一个或多个其他外围设备可以操作性地安排在目标外围设备和非协议特定的端口之间。如果尚未插入外围设备,则框2702中的处理可以重复。在各个实施例中,可以将计算机装置配置成发布指示外围设备何时已经插入(例如,热插)的中断信号。

用于方法2700的处理可以继续进行到框2704,确定是否已经接收到数据分组。如果尚未接收到数据分组则可以重复框2704中的处理。在各个实施例中,可以从外围设备或从计算机装置内接收数据分组。在各个实施例中,计算机装置内的数据分组可以由多协议隧道化i/o互连器从计算机装置的协议特定的控制器(“主机协议特定的控制器”)接收。

用于方法2700的处理可以继续进行到框2706,确定数据分组是从外围设备接收的还是从主机协议特定的控制器接收的。如果尚未接收到数据分组,则框2706中的处理可以重复。

如果数据分组是从外围设备接收的,则用于方法2700的处理可以继续进行到框2708,将第一协议的分组封装到配置成路由通过i/o互连器的交换架构的第一传输层分组。在各个实施例中,也可以将与第一协议不同的第二协议的分组封装到用于路由通过交换架构的第二传输层分组。

用于方法2700的处理可以继续进行到框2710,将第一和第二传输层分组同时路由通过i/o互连器的交换架构。

用于方法2700的处理可以继续进行到框2712,解封装传输层分组。在各个实施例中,可以在交换架构的交换机的适配器端口执行解封装。

用于方法2700的处理可以继续进行到框2714,将解封装的分组路由到计算机装置的不同的主机协议特定的控制器。

如果数据分组是从外围设备接收的,则用于方法2700的处理可以从框2706进行到框2716,将第一协议的分组封装到被配置成路由通过i/o互连器的交换架构的第一传输层分组。在各个实施例中,也可以将与第一协议不同的第二协议的分组封装到用于路由通过交换架构的第二传输层分组。

用于方法2700的处理可以继续进行到框2718,将第一和第二传输层分组同时路由通过i/o互连器的交换架构。

用于方法2700的处理可以继续进行到框2720,解封装传输层分组。在各个实施例中,可以在交换架构的交换机的适配器端口执行解封装。

用于方法2700的处理可以继续进行到框2722,经由计算机装置的非协议特定的端口将解封装的分组路由到外围设备。

在各个实施例中,可以使用制品来实现本申请中公开的一个或多个方法。图28描述了制品2800的示例。如所示出的,制品2800可以包括计算机可读的非暂时性存储介质2802以及存储介质2802。存储介质2802可以包括被配置成使装置根据本公开的实施例实施多协议隧道化的一些或全部方面的程序指令2804。

存储介质2802可以代表本领域已知的较宽范围的持久存储介质,包括但不限于闪存、光盘或磁盘。具体地,程序指令2804可以响应于其由装置的执行,使装置能够执行本申请中描述的各个操作。例如,存储介质2802可以包括:程序指令2804,其被配置成使装置例如根据本公开的实施例,实施图23-27的方法的多协议隧道化的一些或全部方面。

虽然本申请中已经描述了各种示例性方法、装置、系统和制品,但是本公开的覆盖范围不受限于此。相反,本公开覆盖了完全落入所附权利要求书(字面上或在等同原则下)的范围内的所有方法、装置和制品。例如,虽然上文公开了示例性系统除了其他组件之外,包括在硬件上执行的软件或固件,但是,应该注意的是,这样的系统仅仅是说明性的,并且其不应被认为是限制性的。具体地,可以预期的是,所公开的硬件、软件、和/或固件组件中的任何一个或全部可以排他地以硬件、排他地以软件、排他地以固件或以硬件、软件和/或固件的某一组合来实现。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1