、点对点互连、串行互连、并行总线、相干(例如,高速缓存相干)总线、分层协议体系结 构、差分总线及GTL总线。
[0030] 存储器175可专用于处理器100或者与系统中的其它装置共享。存储器175的类 型的常见示例包括DRAM、SRAM、非易失性存储器(NV存储器)和其它已知存储装置。注意, 装置180包括图形加速器、耦合到存储器控制器中心的处理器或卡、耦合到I/O控制器中心 的数据存储区、无线收发器、闪存装置、音频控制器、网络控制器或其它已知装置。
[0031] 然而,近来,随着更多的逻辑和装置集成在单个晶片上,如S0C,这些装置每个可 包含在处理器100上。例如,在一个实施例中,存储器控制器中心是在与处理器100相同的 封装和/或晶片上。此处,核110的一部分(核上(on-core)部分)包括用于与诸如存储器 175或图形装置180等其它装置连接的一个或更多个控制器。包括用于与此类装置连接的 互连和控制器的配置经常称为核上(on-core)(或非核心(un-core)配置)。例如,芯片上 接口 110包括用于芯片上通信的环形互连和用于芯片外通信的高速串行点对点链路105。 然而,在S0C环境中,诸如网络接口、协处理器、存储器175、图形处理器180及任何其它已知 计算机装置/接口等甚至更多装置可集成在单个晶片或集成电路上,以提供带有高功能性 和低功耗的小形状(small form factor)。
[0032] 在一个实施例中,处理器100能够执行编译、转换和/或优化应用代码176的编译 器、优化和/或转换器代码177以支持本文中所述设备和方法或与其连接。编译器经常包括 程序或程序集以将源文本/代码转换成目标文本/代码。通常,通过编译器的程序/应用数 据的编译在多个阶段和通过完成,以将高级编程语言变换成低级机器或汇编语言代码。然 而,单通编译器可仍用于简单的编译。编译器可利用任何已知的编译技术,并执行任何已知 的编译器操作,如词汇分析、预处理、解析、语义分析、代码生成、代码变换及代码优化。
[0033] 更大的编译器经常包括多个阶段,但这些阶段通常包括在两个一般阶段内:(1) 前端,即通常可发生合成处理、语义处理及一些变换/优化之处,以及(2)后端,即通常发生 分析、变换、优化和代码生成之处。一些编译器涉及中间端,这示出了在编译器的前端与后 端之间划界(delineation)的模糊性。因此,对编译器的插入、关联、生成或其它操作的引 用可在任何上述阶段或通过中及编译器的任何其它已知阶段或通过中发生。作为说明性示 例,编译器可能在编译器的一次或多次通过中插入操作、调用、函数等,如在编译的前端阶 段调用/操作的插入和随后在变换阶段期间调用/操作到更低级代码的变换。注意,在动 态编译期间,编译器代码或动态优化代码可插入此类操作/调用以及为在运行时期间的执 行优化代码。作为特定的说明性示例,可在运行时期间动态优化二进制代码(已经编译的代 码)。此处,程序代码可包括动态优化代码、二进制代码或其组合。
[0034] 类似于编译器,诸如二进制转换器等转换器静态或动态转换代码以优化和/或 转换代码。因此,对代码的执行、应用代码、程序代码或其它软件环境的引用可指:(1)编 译器程序、优化代码编译器或转换器动态或静态执行,以编译程序代码,维护软件结构 (structure),执行其它操作,优化代码或者转换代码;(2)诸如已优化/编译的应用代码等 包括操作/调用的主程序代码的执行;(3)诸如库等与主程序代码相关联的其它程序代码 的执行,以维护软件结构(structure),执行其它软件有关的操作,或者优化代码;或者(4) 其组合。
[0035] 管理控制器是许多计算机系统,特别是服务器计算机中的常见组件。分布式 管理任务组(DMTF)已定义了称为管理组件传输协议(MCTP),要通过外设组件快速互连 (PCIe?)链路传递的协议。此协议促进了在平台中两个或更多个管理控制器之间和在管理 控制器与平台中受管理装置之间的通信。
[0036] 由DMTF定义的第二协议是网络控制器边带接口(NC-SI),它定义使用MCTP携带到 具NC-SI/MCTP能力的网络控制器以允许边带连网到管理控制器的通信协议的有效负载和 命令。这些协议MCTP和NC-SI用于建立到网络控制器的边带连接。但管理控制器与根据 其它协议进行通信的装置不兼容。
[0037] 在各种实施例中,为支持在管理控制器与通用串行总线(USB)装置之间的通信, 一种技术用于隔离选择的USB端点,并且使用PCIe?供应商定义的消息(VDM)向和从这些 USB端点隧穿USB分组。此外,可通过USB协议映射MCTP消息以在USB装置中具MCTP能力 的端点与管理控制器之间提供端对端MCTP协议。虽然不同的消息格式和封装可用于实现 此功能性,但为便于解释,本文中描述了一种示例格式。
[0038] USB规范未提供MCTP的等效物,并且还未提供对MCTP的支持。管理USB装置的 USB主机控制器一般是PCIe ?装置,并且根据本文中的实施例,也可配置成具MCTP能力,至 少表现在它可以能够传递USB分组内嵌入的MCTP分组。这样,MCTP可用于通过USB主机 控制器将USB分组从管理控制器隧穿到USB装置端点。
[0039] 在各种实施例中,管理控制器可以是独立组件,如集成电路(1C)或诸如处理器等 另一 1C的集成组件,例如,SoC。诸如包括管理信号、控制和状态信号等边带通信的管理通 信可经诸如PCIe ?通信等另一协议的一个或更多个隧穿的通信和/或USB通信内MCTP数 据的隧穿来传递。实施例可还提供用于隔离USB装置的一个或更多个端点(或整个USSB装 置)(至少暂时和可能永久性)和诸如SoC等主机处理器,以允许向主机处理器保持隐藏在 端点与管理控制器之间的私有通信。
[0040] 为实现所有此功能性,VDM可在从管理控制器到端点的下游方向生成和传递,且反 之亦然。这些VDM消息可包括各种信息,包括识别在VDM消息上要执行的动作的隧穿信息。 另外,提供数据流协议以允许在管理控制器与端点之间的所需通信。
[0041] 现在参照图2,图中所示是根据本发明的一实施例的系统的框图。如图2所示,系 统200可以是任何类型的计算装置,例如,范围涉及服务器计算机到诸如智能电话、平板计 算机、Ultrabook?计算机等的便携式计算装置。如图所示,系统200包括在各种实施例中 可以是多核处理器或其它类型的SoC的主机处理器210。要理解的是,此类SoC可包括许多 不同类型的组件和功能性,如上所述。主机处理器210经结构215与系统的另外电路进行 通信,在一实施例中,结构215可提供用于适当地经相干和非相干互连耦合主机处理器210 到系统的其它组件的通信协议。
[0042] 作为示例组件,系统200包括管理控制器220。在图2的实施例中,管理控制器 (MC) 220包括VDM逻辑225,其细节将在下面进一步描述。通常,管理控制器220可执行用 于系统的管理控制活动,包括监视系统的各种传感器的状态,如环境传感器,例如温度和其 它传感器,经远程通信路径执行管理通信,例如,经千兆比特以太网网络接口控制器(NIC) 240和其它组件。
[0043] 仍参照图2, USB主机控制器230是允许各种USB装置耦合到系统的集线器装置。 要注意的是,此类装置可永久性固定在系统内,或者能够轻松安装和从系统卸下,如熟悉的 拇指驱动器、USB鼠标、键盘等等。在图2所示特定实施例中,USB主机控制器230包括过滤 逻辑235。过滤逻辑235可用于隔离一个或更多个USB装置(和/或其中的端点)和在主机 处理器210上执行的主机操作系统(0S),或者向在主机处理器210上执行的主机操作系统 (0S)隐藏一个或更多个USB装置(和/或其中的端点),同时,允许此类隐藏装置可由管理控 制器220访问。为有助于装置和/或端点从主机处理器的此类过滤,过滤逻辑235可与耦 合到逻辑的过滤列表238进行通信。如下面将进一步描述的一样,此过滤列表可基于从管 理控制器收到的信息填充,以至少在包括于此过滤列表上的持续时间内识别要受控制以保 持向主机0S隐藏的一组装置和/或端点。
[0044] 如在图2中还看到的一样,主机控制器230还包括对应VDM逻辑234,该逻辑可配 置成接收来自管理控制器220的进入VDM,并且将包括USB隧道VDM报头的报头中的信息解 码,以识别隧道消息的类型,并且采取如下关于图3和4的数据流所述的适当动作。虽然示 为包括单独的逻辑,但要理解的是,主机控制器230可通常包括硬件、软件、固件及通常称 为逻辑的其通信,以允许处理和传递在管理控制器220与一个或更多个USB装置内的某些 端点之间基于MCTP的信息。
[0045] 多个USB装置可经USB总线250耦合到USB主机控制器230。在所示实施例中, USB装置包括网络控制器260和多功能USB装置270,网络控制器260可以是例如用于3G 或4G无线网络的无线接口。作为一个此类示例,多功能装置270可以是包括多个逻辑装置 275a-275n的组合键盘/鼠标控制器。每个这些装置可耦合到对应端口 272a-272n。虽然 在图2的实施例中在此高级别示出,但要理解的是,本发明的范围在此方面并无限制。
[0046] 转过来参照管理控制器220,在一实施例中,可经管理控制器的VDM生成器/接 收逻辑235执行通过PCIe ? VDM的USB隧穿。在一实施例中,此VDM称为"USB隧道VDM", 并且用于与USB主机控制器交互。此交互可以几种方式实现。在一种方式中,在USB装置 中的目标端点与MCTP不兼容时(或者甚至在装置具MCTP能力的情况下),通信可经在此VDM 内封装的USB分组。在另一方式中,在目标端点与MCTP兼容时,VDM逻辑225可生成本身 封装在USB分组内的MCTP分组,而USB分组又封装在VDM中。
[0047] 根据本发明的一实施例的VDM的结构如图3中所示。如在图3中看到的一样,分 组300允许通过PCIe ?链路隧穿USB分组数据(本身可包括封装的MCTP分组)。在图3的 实施例中,分组300包括PCIe? VDM报头310和PCIe? VDM数据部分320。分组报头310 包括PCIe ?介质特定报头312和USB隧道VDM报头314。通常,PCIe ?特定报头312包括常 规PCIe ?报头信息,并且USB隧道VDM报头314包括要用于USB通信目的的隧道特定信息。 具体而言,此USB隧道VDM报头314包括指示在生成的VDM的类型的隧道消息类型。下面 进一步描述示例VDM类型。在隧道VDM报头314中也存在允许识别报头版本、要生成的令 牌的类型和寻址信息的另外信息。
[0048] 在图3的实施例中,VDM的字段如下面表1中定义。
[0049] 轰1
VDM的"隧道消息类型"字段又指定在VDM上要执行的动作,并且如表2中所示,包括基 于编码要执行的动作的多个类型。
[0050] ^2
在一实施例中,在接收USB_TUNNEL_OUT_REQUEST时,USB主机控制器从USB隧道VDM报 头提取PID、ADDR和ENDP,并且生成带有指定的PID、ADDR和ENDP的3B或6B令牌(取决于 E比特)以便传递到导向端点。在传递令牌后,USB主机控制器使用PCIe?VDM有效负载生 成DATAO分组。从装置传递的握手分组作为USB_TUNNEL_HANDSHAKEVDM被隧穿回管理控 制器。
[0051]图4中示出用于包括从管理控制器传递到主机控制器的数据,从管理控制器到 主机控制器的下游通信的数据流状态机。传递的数据的示例包括网络分组、要写入拇指驱 动器的文件的内容等。如图4中看到的一样,方法400可执行以在各种组件之间提供数据 流通信。具体而言,