CN111797040A - 多个协议层封装互连的虚拟链路状态 - Google Patents

多个协议层封装互连的虚拟链路状态 Download PDF

Info

Publication number
CN111797040A
CN111797040A CN202010134763.0A CN202010134763A CN111797040A CN 111797040 A CN111797040 A CN 111797040A CN 202010134763 A CN202010134763 A CN 202010134763A CN 111797040 A CN111797040 A CN 111797040A
Authority
CN
China
Prior art keywords
link state
virtual link
state
link
protocol
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.)
Pending
Application number
CN202010134763.0A
Other languages
English (en)
Inventor
J·T·霍
T·L·宋
M·韦格
S·W·林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN111797040A publication Critical patent/CN111797040A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/4031Coupling between buses using bus bridges with arbitration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/387Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4208Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4265Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Communication Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

系统、方法和设备可以包括:第一管芯,其包括第一仲裁和多路复用逻辑;与第一互连协议相关联的第一协议栈,以及与第二互连协议相关联的第二协议栈。第二管芯包括第二仲裁和多路复用逻辑。多通道链路将第一管芯连接到第二管芯。第二仲裁和多路复用逻辑可以将请求发送到第一仲裁和多路复用逻辑以改变与第一协议栈相关联的第一虚拟链路状态。第一仲裁和多路复用逻辑可以从多通道链路上接收来自第一管芯的请求,该请求指示用于改变第一虚拟链路状态的请求;确定第一互连协议已准备好改变物理链路状态;以及在维持第二虚拟链路状态的同时,根据接收到的请求来改变第一虚拟链路状态。

Description

多个协议层封装互连的虚拟链路状态
背景技术
互连可用于提供系统内不同设备之间的通信,使用某种类型的互连机制。用于计算机系统中的设备之间的通信互连的一种典型的通信协议是快速外围组件互连(快速PCITM(PCIeTM))通信协议。该通信协议是加载/存储输入/输出(I/O)互连系统的一个示例。设备之间的通信通常根据此协议以很高的速度串行执行。
设备可以跨各种数量的数据链路连接,每个数据链路包括多个数据通道。上游设备和下游设备在初始化时进行链路训练,以优化跨各种链路和通道的数据传输。
附图说明
图1示出了包括多核处理器的计算系统的框图的实施例。
图2是根据本公开的实施例的互连两个管芯的示例R-链路的示意图。
图3是根据本公开的实施例的多芯片封装链路(MCPL)的简化框图。
图4是根据本公开的实施例的使用逻辑PHY接口(LPIF)与多个协议的上层逻辑接合的多芯片封装链路(MCPL)的简化框图。
图5是示出了根据本公开的实施例的示出物理链路状态机和虚拟链路状态机的示例位置的多芯片封装链路(MCPL)的示意图。
图6是根据本公开的实施例的示例物理层分组(PLP)格式的示意图。
图7是示出了根据本公开的实施例的用于将虚拟和物理链路状态从活动状态改变为空闲状态的示例消息流的泳道图。
图8A-图8C是示出了根据本公开的实施例的示出消息流路径的多芯片封装链路(MCPL)的示意图。
图9示出了包括互连架构的计算系统的实施例。
图10示出了包括分层堆栈的互连架构的实施例。
图11示出了在互连架构内要生成或接收的请求或分组的实施例。
图12示出了用于互连架构的发射器和接收机对的实施例。
图13示出了包括处理器的计算系统的框图的另一实施例。
图14示出了包括多个处理器插槽的计算系统的框的实施例。
图15是示出了示例链路训练状态机的图。
具体实施方式
在以下描述中,阐述了许多特定细节,例如特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、具体的处理器流水线级和操作等,以便提供对本公开的透彻理解。然而,对于本领域的技术人员将显而易见的是,不需要采用这些具体细节来实践本公开。在其他实例中,众所周知的组件或方法,例如特定和替代的处理器架构、所描述算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现,代码中特定算法的表达、特定的掉电和门控技术/逻辑以及计算机系统的其他特定的操作细节为了避免不必要地使本公开不清楚,没有详细描述。
尽管以下实施例可以参考诸如在计算平台或微处理器中的特定集成电路中的能量节省和能量效率来描述,但是其他实施例可应用于其他类型的集成电路和逻辑设备。本文描述的实施例的类似技术和教导可以应用于也可以受益于更好的能量效率和能量节省的其他类型的电路或半导体器件。例如,公开的实施例不限于桌面型计算机系统或UltrabooksTM。并且还可以用在其他设备中,例如手持设备、平板计算机,其他轻薄笔记本计算机、片上系统(SOC)设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)和手持PC。嵌入式应用通常包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或可以执行下面介绍的功能和操作的任何其他系统。此外,本文所述的装置、方法和系统不限于物理计算设备,而是还可以涉及用于节能和效率的软件优化。如在下面的描述中将显而易见的,本文描述的方法、装置和系统的实施例(无论是参考硬件,固件,软件还是它们的组合)对于平衡性能的“绿色技术”未来至关重要。
随着计算系统的发展,其中的组件变得越来越复杂。结果,用于在组件之间耦合和通信的互连架构的复杂度也在增加,以确保满足带宽要求以实现最佳的组件操作。此外,不同的细分市场需要互连架构的不同方面,以满足市场的需求。例如,服务器需要更高的性能,而移动生态系统有时可以牺牲整体性能来节省功耗。然而,大多数结构的唯一目的是提供最大可能的性能并最大程度地节省功率。以下,讨论了许多互连,其将潜在地受益于本文描述的本公开的方面。
参考图1,描绘了包括多核处理器的计算系统的框图的实施例。处理器100包括任何处理器或处理设备,例如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协处理器、片上系统(SOC)或执行代码的其他设备。在一个实施例中,处理器100包括至少两个核-核101和102,其可以包括非对称核或对称核(示出的实施例)。然而,处理器100可以包括可以是对称或不对称的任何数量的处理元件。
在一个实施例中,处理元件是指支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或能够维持处理器状态(例如,执行状态或架构状态)的任何其他元件。换句话说,在一个实施例中,处理元件是指能够独立地与诸如软件线程、操作系统、应用或其他代码之类的代码相关联的任何硬件。物理处理器(或处理器插槽)通常是指集成电路,该集成电路可能包括任意数量的其他处理元件,例如核或硬件线程。
核通常是指位于能够维持独立架构状态的集成电路上的逻辑,其中每个独立维持的架构状态与至少一些专用执行资源相关联。与核相反,硬件线程通常是指位于集成电路上的、能够维持独立架构状态的任何逻辑,其中,独立维护的架构状态共享对执行资源的访问。可以看出,当某些资源被共享而其他资源专用于架构状态时,硬件线程与核的命名法之间的界线重叠。然而,操作系统经常将核和硬件线程视为单独的逻辑处理器,其中操作系统能够单独调度每个逻辑处理器上的操作。
如图1所示,物理处理器100包括两个核,即核101和102。这里,核101和102被认为是对称核,即具有相同配置、功能单元和/或逻辑的核。在另一个实施例中,核101包括乱序处理器核,而核102包括有序处理器核。但是,可以从任何类型的核中分别选择核101和102,所述任何类型的核例如本机核、软件管理的核、适合于执行本机指令集架构(ISA)的核,适合于执行转换后的指令集架构(ISA)的核、共同设计的核或其他已知的核。在异构核环境(即,非对称核)中,某种形式的转换(例如二进制转换)可用于在一个或两个核上调度或执行代码。为了进一步讨论,下面进一步详细描述在核101中示出的功能单元,因为核102中的单元在所示实施例中以类似的方式操作。
如图所示,核101包括两个硬件线程101a和101b,它们也可以称为硬件线程槽101a和101b。因此,在一个实施例中,诸如操作系统的软件实体潜在地将处理器100视为四个单独的处理器,即,四个逻辑处理器或能够同时执行四个软件线程的处理元件。如上所述,第一线程与架构状态寄存器101a相关联,第二线程与架构状态寄存器101b相关联,第三线程可以与架构状态寄存器102a相关联,而第四线程可以与架构状态寄存器102b相关联。这里,如上所述,每个架构状态寄存器(101a、101b、102a和102b)可以被称为处理元件、线程槽或线程单元。如图所示,架构状态寄存器101a被复制到架构状态寄存器101b中,因此能够为逻辑处理器101a和逻辑处理器101b存储各个架构状态/上下文。在核101中,还可以为线程101a和101b复制其他较小的资源,例如分配器和重命名器块130中的指令指针和重命名逻辑。可以通过分区来共享一些资源,例如重排序/引退单元135中的重排序缓冲器、ILTB120、加载/存储缓冲器和队列。其他资源(例如通用内部寄存器、页表基址寄存器、低级数据高速缓存和数据TLB 115、执行单元140和乱序单元135的某些部分)可能完全共享。
处理器100通常包括其他资源,这些资源可以被完全共享,通过分区共享,或由处理元件专用/专用于处理元件。在图1中,示出了具有处理器的说明性逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可以包括或省略这些功能单元中的任何一个,以及包括任何其他未示出的已知功能单元、逻辑或固件。如图所示,核101包括简化的、代表性的乱序(OOO)处理器核。但是在不同的实施例中可以使用有序处理器。OOO核包括:分支目标缓冲器120,用于预测要执行/采用的分支;以及指令转换缓冲器(I-TLB)120,用于存储指令的地址转换条目。
核101还包括耦合到获取单元120以解码获取的元素的解码模块125。在一个实施例中,获取逻辑包括分别与线程槽101a、101b相关联的各个定序器。通常,核101与第一ISA关联,该第一ISA定义/指定可在处理器100上执行的指令。作为第一ISA一部分的机器代码指令通常包括该指令的一部分(称为操作码),该指令引用/指定要执行的指令或操作。解码逻辑125包括电路,该电路从它们的操作码中识别这些指令,并将已解码的指令传递到流水线中,以进行第一ISA定义的处理。例如,如下面在下面更详细讨论的,在一个实施例中,解码器125包括被设计或适于识别诸如事务指令之类的特定指令的逻辑。作为解码器125的识别的结果,架构或核101采取特定的、预定义动作来执行与适当指令相关联的任务。重要的是要注意,这里描述的任何任务、块、操作和方法都可以响应于单个或多个指令来执行;其中一些可能是新指令或旧指令。注意,在一个实施例中,解码器126识别相同的ISA(或其子集)。备选地,在异构核环境中,解码器126识别第二ISA(第一ISA的子集或不同的ISA)。
在一个示例中,分配器和重命名器块130包括分配器,以保留诸如寄存器文件之类的资源以存储指令处理结果。然而,线程101a和101b潜在地能够乱序执行,其中分配器和重命名器块130还保留其他资源,例如重排序缓冲器以跟踪指令结果。单元130还可以包括寄存器重命名器,以将程序/指令参考寄存器重命名为处理器100内部的其他寄存器。重排序/引退单元135包括诸如上述重排序缓冲器、加载缓冲器和存储缓冲器之类的组件,以支持乱序执行,然后按顺序引退乱序执行的指令。
在一个实施例中,调度器和执行单元块140包括调度器单元,用于调度执行单元上的指令/操作。例如,在具有可用浮点执行单元的执行单元的端口上调度浮点指令。还包括与执行单元关联的寄存器文件,以存储信息指令处理结果。示例性执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元和其他已知的执行单元。
低级数据高速缓存和数据转换缓冲器(D-TLB)150耦合到执行单元140。数据高速缓存将存储最近使用/操作的元素(例如数据操作数),这些元素可能保持在存储器一致性状态中。D-TLB将存储最近的虚拟/线性到物理地址的转换。作为特定示例,处理器可以包括页表结构,以将物理存储器分成多个虚拟页。
这里,核101和102共享对更高级别或进一步高速缓存的访问,例如与片上接口110关联的二级高速缓存。注意,更高级别或进一步指的是增加或降低与执行单元的距离。在一个实施例中,较高级高速缓存是最后级数据高速缓存-处理器100上的存储器层级中的最后级高速缓存-诸如二或三级数据高速缓存。然而,高级高速缓存不受限制,因为它可以与指令高速缓存相关联或包括指令高速缓存。相反,可以在解码器125之后耦合跟踪高速缓存(一种指令高速缓存),以存储最近解码的轨迹。在此,指令潜在地指代宏指令(即,由解码器识别的通用指令),其可以被解码为多个微指令(微操作)。
在所描绘的配置中,处理器100还包括片上接口模块110。从历史上看,下面将更详细描述的存储器控制器已被包括在处理器100外部的计算系统中。在此情况下,片上接口11用于与处理器100外部的设备进行通信,所述处理器100外部的设备例如系统存储器175,芯片组(通常包括连接到存储器175的存储器控制器集线器和连接外围设备的I/O控制器集线器)、存储器控制器集线器、北桥或其他集成电路。并且在这种情况下,总线105可以包括任何已知的互连,例如多点总线、点对点互连、串行互连、并行总线、相干(例如,高速缓存相干)总线、分层协议架构、差分总线和GTL总线。
存储器175可以专用于处理器100或与系统中的其他设备共享。存储器175的类型的常见示例包括DRAM、SRAM、非易失性存储器(NV存储器)和其他已知的存储设备。注意,设备180可以包括耦合到存储器控制器集线器的图形加速器、处理器或卡、耦合到I/O控制器集线器的数据存储、无线收发器、闪存设备、音频控制器、网络控制器或其他已知的设备。
然而,近来,随着更多的逻辑和设备被集成在诸如SOC之类的单个管芯上,这些设备中的每一个都可以被并入处理器100中。例如,在一个实施例中,存储器控制器集线器位于与处理器100同一封装和/或管芯上。这里,核的一部分(核上的部分)110包括一个或多个控制器,用于与其他设备(例如存储器175或图形设备180)接合。该配置包括互连,并且与此类设备接合的控制器通常称为核上(或非核配置)。作为示例,片上接口110包括用于片上通信的环形互连和用于片外通信的高速串行点对点链路105。但是,在SOC环境中,甚至更多的设备(例如网络接口、协处理器、存储器175、图形处理器180和任何其他已知的计算机设备/接口)可以集成在单个管芯或集成电路上,以向小规模因子提供高功能以及低功耗。
在一个实施例中,处理器100能够执行编译器、优化和/或转换器代码177,以编译、转换和/或优化应用代码176,以支持本文描述的装置和方法或与其接合。编译器通常包括程序或一组程序,以将源文本/代码转换为目标文本/代码。通常,使用编译器对程序/应用代码进行编译是分多个阶段以及遍进行的,以将高层编程语言代码转换为低级机器或汇编语言代码。但是,单遍编译器仍可用于简单编译。编译器可以利用任何已知的编译技术并执行任何已知的编译器操作,例如词法分析、预处理、解析、语义分析、代码生成、代码转换和代码优化。
较大的编译器通常包含多个阶段,但大多数情况下,这些阶段包含在两个通用阶段中:(1)前端,即通常在其中可以进行句法处理、语义处理以及某些转换/优化的地方,以及(2)后端,即通常进行分析、转换、优化和代码生成。一些编译器引用中间语言,该中间语言说明了编译器的前端和后端之间的轮廓模糊。结果,对编译器的插入、关联、生成或其他操作的引用可以发生在编译器的任何上述阶段或过程以及任何其他已知阶段或过程中。作为说明性示例,编译器可能在一个或多个编译阶段插入操作、调用、函数等,例如在编译的前端阶段插入调用/操作,然后在转换阶段期间将调用/操作转换为低级代码。注意,在动态编译期间,编译器代码或动态优化代码可能会插入此类操作/调用,并优化代码以在运行时期间执行。作为特定的说明性示例,可以在运行时期间动态地优化二进制代码(已编译的代码)。在此,程序代码可以包括动态优化代码、二进制代码或其组合。
类似于编译器,诸如二进制转换器的转换器静态地或动态地转换代码以优化和/或转换代码。因此,对代码、应用代码、程序代码或其他软件环境的执行的引用可以指:(1)执行编译器程序、优化代码优化器或动态或静态转换器以编译程序代码,维护软件结构,执行其他操作,优化代码或转换代码;(2)执行包括操作/调用的主程序代码,例如已优化/编译的应用代码;(3)执行与主程序代码相关联的其他程序代码(例如库),以维护软件结构,执行其他软件相关的操作或优化代码;或(4)其组合。
随着工艺技术的发展变得越来越复杂,多芯片封装(MCP)技术变得越来越普遍,多芯片封装(MCP)技术将多个较小管芯的集合相互连接。这些较小的管芯中的多个协议层可以进行时间多路复用,并使用单个封装上的互连(例如Rosetta-链路(或R-链路)技术)相互连接。通常,协议链路层可以控制其自己的链路状态。但是,通过相同的封装上互连隧道传输的这些多个协议层可能彼此不可知,这在控制链路状态的这些多个协议层之间产生了竞争。本公开描述了解决多个协议层之间的竞争的系统、方法和装置。
本公开描述了一种用于虚拟化共享相同的封装上互连的每个协议层的链路状态的方法。链路状态的虚拟化使协议层(软件和硬件)看起来都好像拥有链路状态的所有权一样。
随着管芯到管芯互连技术的广泛采用,从电源效率和易用性的角度来看,不仅能够在互连上通过隧道传输多个协议,而且具有用于虚拟化每个协议链路状态的方法的能力将是有益的。
图2是根据本公开的实施例的互连两个管芯的示例R-链路的示意图。转到图2,示出了简化框图200,其表示包括多芯片封装链路(MCPL)的示例实现的系统的至少一部分。可以使用将第一设备202(例如,包括一个或多个子组件的第一管芯)与第二设备222(例如,包括一个或多个子组件的第二管芯)连接起来的物理电连接(例如,实现为通道的导线)来实现MCPL。更多其他子组件)。在图200的高级表示中示出的特定示例中,所有信号(在信道240、242中)可以是单向的,并且可以提供通道以使数据信号具有上游和下游数据传输。
在一个示例实现中,MCPL可以提供物理层(PHY),其包括电MCPL PHY 208、228和实现MCPL逻辑PHY 212、232的可执行逻辑。电或物理PHY 208、228可以提供物理连接,可以在设备202、222之间通过该物理连接传递数据。可以与物理PHY 208、228结合实现信号调节组件和逻辑,以建立链路的高数据速率和信道配置能力,这在某些应用中可能涉及紧密聚集的物理连接,长度大约为45mm或更长。逻辑PHY 212、232可以包括用于促进时钟、链路状态管理(例如,用于链路层204、206、224、226)以及用于在MCPL上进行通信的潜在多个、不同协议之间的协议多路复用的逻辑。
在一个示例实现中,物理PHY 208、228可以包括针对每个信道(例如240、242)的一组数据通道,可以在其上发送带内数据。在该特定示例中,在上游和下游信道240、242中的每一个中提供50个数据通道,但是在布局和功率约束、期望的应用,设备约束等所允许的情况下,可以使用任何其他数量的通道。每个信道还可以包括用于该信道的选通信号或时钟信号的一个或多个专用通道,用于该信道的有效信号的一个或多个专用通道,用于流信号的一个或多个专用通道,以及用于链路状态机管理或边带信号的一个或多个专用通道。物理PHY还可以包括边带链路244,在一些示例中,该边带链路244可以是双向低频控制信号链路,用于协调状态转换和MCPL连接设备202、222的其他属性以及其他示例。
如上所述,使用MCPL的实现可以支持多种协议。实际上,可以在每个设备202、222处提供多个独立的事务层和链路层204、206、224、226。例如,每个设备202、222可以支持和利用两个或更多个协议,例如PCI、PCIe、QPI、英特尔片内互连(IDI)等。IDI是一种一致性协议,用于在片上使用以在核、最后一级缓存(LLC)、存储器、图形和IO控制器之间进行通信。还可以支持其他协议,包括以太网协议、Infiniband协议和其他基于PCIe结构的协议。逻辑PHY和物理PHY的组合还可以用作管芯到管芯的互连,以将一个管芯上的SerDes PHY(PCIe、以太网、Infiniband或其他高速SerDes)连接到在其它管芯上实现的上层,以及其他示例。
逻辑PHY 212、232可以支持MCPL上这些多个协议之间的多路复用。例如,专用流通道可用于声明编码的流信号,该编码的流信号标识哪个协议将应用于在通道的数据通道上基本同时发送的数据。此外,逻辑PHY 212、232可以用于协商各种协议可以支持或请求的各种类型的链路状态转换。在某些实例中,可以使用通过信道专用LSM_SB通道发送的LSM_SB信号,与边带链路244一起使用,以通信和协商设备202、222之间的链路状态转换。此外,链路训练、错误检测、偏斜检测、解扰以及传统互连的其他功能,可以使用逻辑PHY 212、232来部分地替换或控制。例如,通过每个信道中一个或多个专用有效信号通道发送的有效信号可用于发信号通知链路活动、检测偏斜、链路错误以及其他示例。在图2的特定示例中,每信道提供多个有效通道。例如,信道内的数据通道可以被捆绑或聚集(物理和/或逻辑上),并且可以为每个群集提供有效通道。此外,在某些情况下,还可以提供多个选通通道,还可以为信道中多个数据通道群集中的每个群集提供专用的选通信号,以及其他示例。
如上所述,逻辑PHY 212、232可用于协商和管理在由MCPL连接的设备之间发送的链路控制信号。在一些实现中,逻辑PHY 212、232可以包括链路层分组(LLP)生成逻辑214、234,其可以用于通过MCPL(即,在频带内)发送链路层控制消息。可以在信道的数据通道上发送这样的消息,其中流通道识别出该数据是链路层到链路层消息传递,例如链路层控制数据,以及其他示例。使用LLP模块214、234启用的链路层消息可以分别帮助协商和执行链路层状态转换、功率管理、环回、禁用、重新居中、加扰以及设备202、222的链路层204、206、224、226之间的其他链路层功能。
每个设备202、222可以分别包括仲裁和多路复用逻辑(ARB/MUX)210、230。ARB/MUX210、230可用于在管芯支持的不同协议之间进行仲裁。ARB/MUX 210、230是在R-链路互连上执行多个协议的仲裁和多路复用的逻辑。
转到图3,示出了简化框图300,其示出了示例MCPL的示例逻辑PHY。物理PHY 302可以连接到包含逻辑PHY 304和支持MCPL的链路层的其他逻辑的管芯。在该示例中,管芯可以进一步包括在MCPL上支持多个不同协议的逻辑。例如,在图3的示例中,可以提供PCIe逻辑306以及管芯内互连(IDI)逻辑308,使得管芯可以在连接两个管芯的同一MCPL上使用PCIe或IDI进行通信,其中可能还有许多其他示例,包括其中在MCPL上支持PCIe和IDI以外的两个以上的协议的示例。管芯之间支持的各种协议可以提供不同级别的服务和特征。
逻辑PHY 304可包括链路状态机(LSM)管理逻辑310,用于协商与管芯的上层逻辑的请求(例如,通过PCIe或IDI接收到的)相关的链路状态转换。逻辑PHY 304可以进一步包括一些实现方式的链路测试和调试逻辑(例如312)。如上所述,示例MCPL可以支持通过MCPL在管芯之间发送的控制信号,以促进MCPL的协议不可知、高性能和功率效率特征(以及其他示例特征)。例如,逻辑PHY 310可以结合在专用数据通道上的数据发送和接收而支持有效信号、流信号和LSM边带信号的生成和发送,以及接收和处理,如上述示例中所述。
在一些实现中,多路复用(例如314)和解多路复用(例如316)逻辑可以包含在逻辑PHY 310中,或者可以以其他方式访问逻辑PHY310。例如,多路复用逻辑(例如314)可以用于标识要发送到MCPL上的数据(例如,体现为数据分组、消息等)。多路复用逻辑314可以识别管理数据的协议,并生成被编码以识别该协议的流信号。例如,在一个示例实现中,流信号可以被编码为两个十六进制符号的字节(例如,IDI:FFh;PCIe:F0h;LLP:AAh;边带:55h;等等),并且可以在由所标识的协议控制的数据的相同窗口(例如,字节时间段窗口)期间被发送。类似地,可以采用解多路复用逻辑316来解释进入的流信号以对流信号进行解码,并且识别将应用于在数据通道上与流信号同时接收的数据的协议。然后,解多路复用逻辑316可以应用(或确保)特定于协议的链路层处理,并使数据由相对应的协议逻辑(例如,PCIe逻辑306或IDI逻辑308)来处理。
逻辑PHY 310还可以包括可用于处理各种链路控制功能的链路层分组逻辑318,其中各种链路控制功能包括功率管理任务、环回、禁用、重新居中、加扰等。LLP逻辑318可以促进通过MCLP链路层-链路层消息以及其他功能。还可以通过在专用流信号通道上发送的流信号来标识与LLP信令相对应的数据,该流信号被编码以识别数据通道LLP数据。多路复用和解多路复用逻辑(例如314、316)也可以用于生成和解释与LLP业务相对应的流信号,以及使这种业务由适当的管芯逻辑(例如LLP逻辑318)来处理。同样,MCLP的某些实现可以包括专用边带(例如,边带320和支持逻辑),例如异步和/或低频边带信道,以及其他示例。
逻辑PHY逻辑304还可以包括链路状态机管理逻辑,该链路状态机管理逻辑可以在专用LSM边带通道上生成和接收(和使用)链路状态管理消息传输。例如,LSM边带通道可用于执行握手以推进链路训练状态、退出功率管理状态(例如,L1状态),以及其他潜在示例。LSM边带信号可以是异步信号,因为它与链路的数据、有效和流信号不对齐,而是与信令状态转换相对应,并在通过链路连接的两个管芯或芯片之间对齐链路状态机,以及其他示例。在一些示例中,提供专用的LSM边带通道可以允许消除模拟前端(AFE)的传统的静噪和接收检测电路,以及其他示例优势。
转向图4,示出了简化框图400,其示出了用于实现MCPL的逻辑的另一种表示。例如,逻辑PHY 304被提供有定义的逻辑PHY接口(LPIF)404,多个不同协议406、408、410、412(例如,PCIe,IDI,QPI等)中的任何一个和信令模式(例如,边带)通过该逻辑PHY接口404可以与示例MCPL的物理层接合。在一些实现中,还可以将多路复用和仲裁逻辑402提供为与逻辑PHY 310分离的层。在一个示例中,可以将LPIF 404提供为该ARB/MUX逻辑402的任一侧上的接口。逻辑PHY 310可以通过另一接口与物理PHY(例如,MCPL PHY的模拟前端(AFE)302)接合。
LPIF可以从上层(例如406、408、410、412)提取PHY(逻辑和电/模拟),使得可以在对上层透明的LPIF下实现完全不同的PHY。这可以帮助促进设计中的模块化和重复使用,因为当底层信令技术PHY更新时,上层可以维持完整,以及其他示例。此外,LPIF可以定义多个信号,以实现多路复用/解多路复用、LSM管理、错误检测和处理以及逻辑PHY的其他功能。例如,表1总结了可以针对示例LPIF定义的信号的至少一部分:
表1:针对示例LPIF定义的信号的非穷举列表
Figure BDA0002396929530000121
Figure BDA0002396929530000131
如表1所示,在一些实现中,可以通过AlignReq/AlignAck握手来提供对齐机制。例如,当物理层进入恢复状态时,某些协议可能会丢失分组成帧。分组的对齐可以被校正,例如以保证链路层对成帧的正确识别。
可以针对MCPL上的信号定义各种容错能力。例如,可以针对有效、流、LSM边带、低频边带、链路层分组和其他类型的信号定义容错。通过MCPL的专用数据通道发送的分组、消息和其他数据的容错能力可以基于管理数据的特定协议。在一些实现中,可以提供错误检测和处理机制,诸如循环冗余校验(CRC)、重试缓冲器以及其他潜在示例。作为示例,对于通过MCPL发送的PCIe数据分组,可将32位CRC用于PCIe事务层数据分组(TLP)(保证传送(例如,通过重播机制)),而16位CRC可用于PCIe链路层数据分组(可以设计为有损的(例如,未应用重放的地方))。此外,对于PCIe成帧标记,可以针对标记标识符定义特定的汉明距离(例如,四(4)的汉明距离),除其他示例外,还可以使用奇偶校验和4位CRC。另一方面,对于IDI分组,可以使用16位CRC。
在一些实现中,可以针对链路层分组(LLP)定义容错,包括要求有效信号从低到高(即,从0到1)转换(例如,以帮助确保比特和符号锁)。此外,在一个示例中,可以定义特定数量的连续、相同的LLP发送,并且可以预期对每个请求的响应,其中请求者可以在响应超时后重试,以及可以用作确定MCPL上LLP数据中的故障的基础的其他定义特征。在进一步的示例中,可以例如通过在整个时间段窗口或符号上扩展有效信号(例如,通过对于八个UI维持高的有效信号)来为有效信号提供容错。另外,可以通过维持用于对流信号的值进行编码的汉明距离来防止流信号中的错误或故障,以及其他示例。
逻辑PHY的实现可以包括错误检测、错误报告和错误处理逻辑。在一些实现中,示例MCPL的逻辑PHY可以包括用于检测PHY层去帧错误(例如,在有效和流通道上)、边带错误(例如,与LSM状态转换有关)、LLP中的错误(例如,这对于LSM状态转换至关重要)的逻辑,以及其他示例。可以将某些错误检测/解决方案委派给上层逻辑,例如适合检测PCIe特定错误的PCIe逻辑,以及其他示例。
在对错误进行去成帧的情况下,可以通过错误处理逻辑来提供一种或多种机制。可以基于所涉及的协议来处理去成帧错误。例如,在一些实现中,可以将错误通知链路层以触发重试。去成帧还会导致逻辑PHY去成帧的重新对齐。此外,还可以执行逻辑PHY的重新居中并可以重新获得符号/窗口锁定,以及其他技术。在一些示例中,居中可以包括PHY将接收机时钟相位移动到最佳点以检测输入数据。在这种情况下,“最佳”可以指噪声和时钟抖动的裕度最大的位置。重新居中可以包括简化的居中功能,例如,当PHY从低功耗状态唤醒时执行,以及其他示例。
其他类型的错误可能涉及其他错误处理技术。例如,可以通过对应状态(例如,LSM的)的超时机制来捕获在边带中检测到的错误。可以记录该错误,然后可以将链路状态机转换为“重置”。LSM可以维持复位,直到从软件收到重启命令为止。在另一示例中,可以用超时机制来处理诸如链路控制分组错误之类的LLP错误,该超时机制可以在未接收到对LLP序列的确认的情况下重新启动LLP序列。
图5是示出了根据本公开的实施例的示出物理链路状态机和虚拟链路状态机的示例位置的多芯片封装链路(MCPL)500的示意图。MCPL 500与图2-图4中所示的结构相似或可以具有相似的功能。设备(或管芯)1 202可以包括另外两个互连协议组件元素,例如IDI事务和链路层硬件和软件204以及PCIe事务和链路层硬件和软件206。设备1 202可以包括由R-链路PHY 208表示的物理PHY 208,由R-链路逻辑PHY 212表示的逻辑PHY和ARB/MUX 210。
设备(或管芯)2 222可以包括另外两个互连协议组件元素,例如IDI事务和链路层硬件和软件224和PCIe事务和链路层硬件和软件226。设备1 222可以包括由R-链路PHY 228表示的物理PHY 228,由R-链路逻辑PHY232表示的逻辑PHY和ARB/MUX 230。
图5示出了R-链路堆栈中的物理链路状态机(P-LSM)508、528和虚拟链路状态机(V-LSM)的位置。每个管芯可以有自己的一组P-LSM和V-LSM,它们是相对管芯的镜像版本。P-LSM控制实际的物理链路状态,它位于R-链路逻辑PHY中。每个协议层都可以通过V-LSM虚拟化自己的链路状态。在图5中,V-LSM#0 502、522分别虚拟化ARB-MUX协议层210、230的链路状态;V-LSM#1 504、524分别虚拟化IDI协议层204、224的链路状态;而V-LSM#2 506和526对PCIe协议层206、226的链路状态进行虚拟化。下面列出了可以虚拟化的链路状态的示例:
1)重置
2)有效(L0)
3)空闲(L1)
4)睡眠(L2)
5)重新训练/恢复
6)禁用
7)链路重置
8)链路错误
通过虚拟化链路状态,本公开促进协议层彼此不可知。这样,协议层的硬件或软件驱动器就可以控制自己的链路状态,就好像它们专有地拥有链路一样。由于V-LSM无需理解共享/多路复用链路的概念,因此可以降低硬件/软件的采用复杂性。此外,通过具有V-LSM,协议层可以进入彼此独立的空闲状态(从而启用电源管理特征)。表2示出了本公开解决方案允许协议层#2最早在Seq#3之前进入“空闲”状态。另一方面,表3示出了没有虚拟化的链路状态转换如何仅允许协议层#2在Seq#7进入“空闲”状态(即,在所有协议层都准备好进入“空闲”状态之后)。这表明从功率效率的角度来看,本发明提供了明显的益处。
表2:每个协议层链路状态将如何基于此公开解决方案的示例
Figure BDA0002396929530000161
表3:没有虚拟化的情况下每个协议层链路状态的示例
Figure BDA0002396929530000162
链路状态机未虚拟化,因此每一列均反映实际的P-LSM状态。如果没有虚拟化,则尽管要求改变链路状态,但仍针对每个LSM维持物理链路状态。
图6是根据本公开的实施例的示例物理层分组(PLP)600格式的示意图。链路状态机的虚拟化是通过使每个管芯的V-LSM使用“物理层数据分组”(PLP)通过封装上的互连相互通信来实现的。R-链路PLP被定义为一个双字(1DW)数据分组,该双字数据分组源自一个物理层(例如逻辑PHY或ARB-MUX),并终止于相对的物理层。图6示出了用于PLP的通用1DW结构/格式。用于R-链路V-LSM虚拟化的PLP称为LPIF_STATE_CONTROLPLP。字节1、字节2和字节3的具体定义如下表4和表5所示。
表4.R-链路物理层数据分组的字节1定义
Figure BDA0002396929530000171
表5.R-链路LPIF_STATE_CONTROL PLP的字节2和字节3定义
Figure BDA0002396929530000172
Figure BDA0002396929530000181
LPIF_STATE_CONTROL PLP用作两个管芯上匹配V-LSM之间的完整握手,以传达虚拟链路状态的请求和状况。V-LSM可以发送LPIF_STATE_CONTROL请求(也称为STATE_REQ)PLP,以传达其进入特定虚拟链路状态的意图。一旦准备好进入请求的虚拟化状态,PLP的接收者就可以使用LPIF_STATE_CONTROL状况(也称为STATE_STS)PLP进行响应。
图7是示出根据本公开的实施例的用于将虚拟和物理链路状态从活动状态改变为空闲状态的示例消息流的泳道图。图7示出了关于V-LSM如何进入IDLE_L1状态的示例流程,尽管可以以类似(尽管不一定相同)的方式执行其他状态改变。图8A-图8C是示出根据本公开的实施例的示出消息流路径的多芯片封装链路(MCPL)的示意图。参照图7和图8A-图8C可以一起使用,以更好地描绘两个管芯之间的消息流。
每个管芯支持的每个协议的每个管芯的ARB/MUX都可以维持虚拟链路状态。每个管芯的ARB/MUX可以提供各种功能,包括维持虚拟链路状态并且基于请求来改变虚拟链路状态。
I)首先,针对IDLE_L1状态进入的管芯2V-LSM#2请求:
1a)针对IDLE_L1状态进入的管芯2协议2请求,并且1b)管芯2的ARB/MUX通过到管芯1的链路发送STATE_REQ PLP IDLE_L1。1c)管芯1V-LSM#2接收PLP,并且针对IDLE_L1进入准备协议2。
II)管芯1V-LSM#2确认IDLE_L1状态进入:
2a)管芯1协议2通知V-LSM#2它已准备好IDLE_L1进入(例如,在完成任何未决事务之后)。2b)管芯1V-LSM#2通过链路向管芯2发送STATE_STS PLP IDLE_L1。2c)管芯2V-LSM#2通知协议#2IDLE_L1状态进入完成。
III)首先,针对IDLE_L1状态进入的管芯2V-LSM#1请求:
3a)针对IDLE_L1状态进入的管芯2协议#1请求,并且3b)通过链路发送到管芯1的STATE_REQ PLP IDLE_L1。3c)管芯1V-LSM#1接收PLP并为IDLE_L1进入准备协议#1。
IV)管芯1V-LSM#1确认IDLE_L1状态进入:
4a)管芯1协议#1通知V-LSM#1其准备好IDLE_L1进入(例如,在完成任何未决事务之后)。4b)管芯1V-LSM#1通过链路向管芯2发送STATE_STS PLP IDLE_L1。4c)管芯2V-LSM#1通知协议#1IDLE_L1状态进入完成。
V)针对IDLE_L1状态进入的管芯2V-LSM#0请求:
5a)针对IDLE_L1状态进入的管芯2ARB-MUX请求,并且5b)通过链路向管芯1发送STATE_REQ PLP IDLE_L1。5c)管芯1V-LSM#0接收PLP,并针对IDLE_L1进入准备ARB-MUX。
VI)管芯1V-LSM#0确认IDLE_L1状态进入:
6a)管芯1ARB-MUX通知V-LSM#0它已准备好IDLE_L1进入。6b)管芯1V-LSM#0通过链路向管芯2发送STATE_STS PLP IDLE_L1。6c)管芯2V-LSM#0通知ARB-MUX IDLE_L1状态进入完成。
除了用于虚拟化之外,这些PLP握手还允许协议层(例如,相干协议)进入虚拟化的链路状态,而无需在协议层侧进行更高级别的握手。例如,一致性协议层可以纯粹基于其本地协议的空闲状态来请求IDLE_L1链路状态进入。两个管芯上的V-LSM可以用作两个管芯上的协议栈的设备,以进入其IDLE_L1链路状态。值得注意的是,一开始,P-LSM指示为L0状态,到消息传递结束时,P-LSM处于L1状态。
以上附图描述了简化的流程,其中一个管芯是V-LSM请求的主设备,而另一个管芯始终是从设备。本文所述的系统、方法、设备和计算机程序产品可以被镜像;或适用于每个管芯都可以扮演双重角色(即主设备以及从设备二者)的实现。
参照图9,示出了由互连一组组件的点对点链路组成的结构的实施例。系统900包括处理器905和耦合到控制器集线器915的系统存储器910。处理器905包括任何处理元件,例如微处理器、主处理器、嵌入式处理器、协处理器或其他处理器。处理器905通过前端总线(FSB)906耦合到控制器集线器915。在一个实施例中,FSB 906是如下所述的串行点对点互连。在另一个实施例中,链路906包括符合不同互连标准的串行、差分互连架构。
系统存储器910包括任何存储器设备,例如随机存取存储器(RAM)、非易失性(NV)存储器或系统900中的设备可访问的其他存储器。系统存储器910通过存储器接口916耦合到控制器集线器915。存储器接口的示例包括双倍数据速率(DDR)存储器接口、双通道DDR存储器接口和动态RAM(DRAM)存储器接口。
在一个实施例中,控制器集线器915是快速外围组件互连(PCIe或PCIE)互连层次结构中的根集线器、根联合体或根控制器。控制器集线器915的示例包括芯片组、存储器控制器集线器(MCH)、北桥、互连控制器集线器(ICH)、南桥和根控制器/集线器。术语芯片组通常是指两个物理上分离的控制器集线器,即耦合到互连控制器集线器(ICH)的存储控制器集线器(MCH)。注意,当前系统通常包括与处理器905集成的MCH,而控制器915将以如下所述的类似方式与I/O设备通信。在一些实施例中,可选地通过根联合体915来支持对等路由。
这里,控制器集线器915通过串行链路919耦合到交换机/桥920。输入/输出模块917和921(也可以称为接口/端口917和921)包括/实现分层协议栈,以在控制器集线器915和交换机920之间提供通信。在一个实施例中,多个设备能够耦合到交换机920。
交换机/网桥920将来自设备925的分组/消息从上游(即,朝着根联合体的层次结构向上)路由到控制器中心915,而从处理器905或系统存储器910向下游(即,远离根控制器的层次结构)路由到设备925。在一个实施例中,开关920被称为多个虚拟PCI-PCI桥接设备的逻辑组件。设备925包括要耦合到电子系统的任何内部或外部设备或组件,例如I/O设备、网络接口控制器(NIC)、附加卡、音频处理器、网络处理器、硬件驱动器、存储设备、CD/DVDROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、火线设备、通用串行总线(USB)设备、扫描仪和其他输入/输出设备。在PCIe本地设备(例如设备)中,通常将其称为端点。尽管未具体示出,但是设备925可以包括PCIe到PCI/PCI-X桥以支持传统的或其他版本的PCI设备。PCIe中的端点设备通常被分类为传统、PCIe或根复合集成端点。
图形加速器930也通过串行链路932耦合到控制器集线器915。在一个实施例中,图形加速器930耦合到MCH,该MCH耦合到ICH。然后将开关920以及相应的I/O设备925耦合到ICH。I/O模块931和918还用于实现分层协议堆栈,以在图形加速器930和控制器集线器915之间进行通信。类似于上面讨论的MCH,图形控制器或图形加速器930本身可以集成在处理器905中。
转向图10,示出了分层协议栈的实施例。分层协议栈1000包括任何形式的分层通信栈,例如快速路径互连(QPI)栈、PCie栈、下一代高性能计算互连栈或其他分层栈。尽管下面参考图9至图12的讨论与PCIe堆栈有关,但是相同的概念可以应用于其他互连堆栈。在一个实施例中,协议栈1000是PCIe协议栈,其包括事务层1005、链路层1010和物理层1020。接口,诸如图1中的接口917、918、921、922、926和931可以被表示为通信协议栈1000。被表示为通信协议栈也可以被称为实现/包括协议栈的模块或接口。
快速PCI使用分组在组件之间传递信息。分组形成在事务层1005和数据链路层1010中,以将信息从发送组件携带到接收组件。当发送的分组流经其他层时,它们会以处理这些层的分组所需的附加信息进行扩展。在接收侧,发生相反的过程,并且分组从其物理层1020表示转换为数据链路层1010表示,并且最后(对于事务层分组)转换为可以由接收设备的事务层1005处理的形式。
事务层
在一个实施例中,事务层1005将在设备的处理核与互连架构(例如,数据链路层1010和物理层1020)之间提供接口。就这一点而言,事务层1005的主要职责是分组(即事务层分组或TLP)的组装和拆卸。转换层1005通常管理用于TLP的信用流控制。PCIe实现拆分的事务,即请求和响应按时间分隔的事务,允许链路在目标设备收集针对响应的数据的同时承载其他业务。
另外,PCIe利用基于信用的流控制。在该方案中,设备为事务层1005中的每个接收缓冲器通告初始信用额度。在链路的相对端的外部设备,例如图1中的控制器集线器115,计算每个TLP消耗的信用数。如果事务不超过信用额度,则可以传输事务。收到响应后,将恢复信用额度。信用计划的优点是,只要不遇到信用额度,信用回报的延迟就不会影响性能。
在一个实施例中,四个事务处理地址空间包括配置地址空间、存储器地址空间、输入/输出地址空间和消息地址空间。存储器空间事务包括读取请求和写入请求中的一个或多个,以向/从存储器映射的位置传输数据。在一个实施例中,存储器空间事务能够使用两种不同的地址格式,例如,短地址格式(例如32位地址)或长地址格式(例如64位地址)。配置空间事务用于访问PCIe设备的配置空间。对配置空间的事务包括读取请求和写入请求。消息空间事务(或简称为消息)被定义为支持PCIe代理之间的带内通信。
因此,在一个实施例中,事务层1005组装分组报头/有效载荷1006。当前分组报头/有效载荷的格式可以在PCIe规范网站上的PCIe规范中找到。
快速参考图11,示出了PCIe事务描述符的实施例。在一个实施例中,事务描述符1100是用于携带事务信息的机制。在这方面,事务描述符1100支持系统中事务的识别。其他潜在用途包括跟踪默认事务顺序的修改以及事务与信道的关联。
事务描述符1100包括全局标识符字段1102、属性字段1104和信道标识符字段1106。在所示的示例中,描绘了全局标识符字段1102,其包括本地事务标识符字段1108和源标识符字段1110。在一个实施例中,全局事务标识符1102对于所有未完成的请求是唯一的。
根据一种实现,本地事务标识符字段1108是由请求代理生成的字段,并且对于要求该请求代理完成的所有未完成请求来说是唯一的。此外,在该示例中,源标识符1110唯一地标识PCIe层次结构内的请求者代理。因此,本地事务标识符1108字段与源ID 1110一起提供了层次结构域内的事务的全局标识。
属性字段1104指定事务的特征和关系。在这方面,属性字段1104潜在地用于提供允许修改事务的默认处理的附加信息。在一个实施例中,属性字段1104包括优先级字段1112、保留字段1114、排序字段1116和非窥探字段1118。这里,优先级子字段1112可以由发起者修改以向事务分配优先级。保留属性字段1114保留以供将来使用或供应商定义的用法。使用优先级或安全性属性的可能的使用模型可以使用保留的属性字段来实现。
在该示例中,排序属性字段1116用于提供可选信息,该可选信息传达可以修改默认排序规则的排序类型。根据一个示例实现,排序属性“0”表示要应用默认排序规则,其中排序属性“1”表示宽松排序,其中写入可以沿相同方向传递写入,并且读取完成可以以相同的方向传递写入。窥探属性字段1118用于确定是否窥探事务。如图所示,频道ID字段1106标识与事务相关联的信道。
链路层
链路层1010,也称为数据链路层1010,充当事务层1005和物理层1020之间的中间阶段。在一个实施例中,数据链路层1010的职责是提供一种交换链路中两个组件之间的事务层分组(TLP)的可靠的机制。数据链路层1010的一侧接受由事务层1005组装的TLP,应用分组序列标识符1011(即标识号或分组号),计算并应用错误检测码(即CRC 1012),并将修改后的TLP提交给物理层1020,用于跨物理设备传输到外部设备。
物理层
在一个实施例中,物理层1020包括逻辑子块1021和电子块1022,以将分组物理地发送到外部设备。在此,逻辑子块1021负责物理层1021的“数字”功能。在这一点上,逻辑子块包括准备用于物理子块1022发送的传出信息的发送部分和在将接收到的信息传递给链路层1010之前,识别和准备接收的信息的接收机部分。
物理块1022包括发射机和接收机。逻辑子块1021向发射机提供符号,发射机将其序列化并发送到外部设备。从外部设备向接收机提供序列化符号,并将接收到的信号转换为比特流。比特流被反序列化并且被提供给逻辑子块1021。在一个实施例中,采用8b/10b传输码,其中十比特符号被发送/接收。此处,特殊符号用于以帧1023构成分组。此外,在一个示例中,接收机还提供从传入串行流中恢复的符号时钟。
如上所述,尽管参考PCIe协议栈的特定实施例讨论了事务层1005、链路层1010和物理层1020,但是分层协议栈不限于此。实际上,可以包括/实现任何分层协议。作为示例,表示为分层协议的端口/接口包括:(1)组装分组的第一层,即事务层;对分组进行排序的第二层,即链路层;以及传输分组的层的第三层,即物理层。作为特定示例,使用了通用标准接口(CSI)分层协议。
接下来参考图12,示出了PCIe串行点对点结构的实施例。尽管示出了PCIe串行点对点链路的实施例,但是串行点对点链路不受限于此,因为其包括用于传输串行数据的任何传输路径。在所示实施例中,基本PCIe链路包括两个、低压、差分驱动信号对:发送对1206/1211和接收对1212/1207。因此,设备1205包括用于将数据发送到设备1210的传输逻辑1206和用于从设备1210接收数据的接收逻辑1207。换句话说,两条发送路径,即路径1216和1217,以及两条接收路径,即路径1218和1219,包含在PCIe链路中。
传输路径是指用于传输数据的任何路径,例如传输线、铜线、光线、无线通信信道、红外通信链路或其他通信路径。两个设备(例如设备1205和设备1210)之间的连接称为链路(例如链路415)。链路可以支持一个通道-每个通道代表一组差分信号对(一对用于传输,一对用于接收)。为了扩展带宽,链路可以聚合由xN表示的多个通道,其中N是任何受支持的链路宽度,例如1、2、4、8、12、16、32、64或更宽。
差分对是指两条传输路径,例如线路416和417,用于发送差分信号。例如,当线416从低电压电平切换到高电压电平,即上升沿时,线417从高逻辑电平驱动到低逻辑电平,即下降沿。差分信号潜在地表现出更好的电特性,例如更好的信号完整性,即交叉耦合、电压过冲/下冲、振铃等。这允许更好的定时窗口,从而实现更快的传输频率。
转向图13,示出了由处理器形成的示例性计算机系统的框图,该处理器包括用于执行指令的执行单元,其中,根据本公开的一个实施例,一个或多个互连实现一个或多个特征。系统1300包括根据本公开的组件,例如处理器1302,其采用包括逻辑的执行单元来执行用于过程数据的算法,例如在本文所述的实施例中。系统1300代表基于可从加利福尼亚州圣克拉拉的英特尔公司获得的PENTIUM IIITM、PENTIUM 4TM、XeonTM、Itanium、XScaleTM和/或StrongARMTM微处理器的处理系统,但是可以使用其他系统(包括具有其他微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,示例系统1300执行可从华盛顿州雷德蒙德的微软公司获得的WINDOWSTM操作系统的版本,但是也可以使用其他操作系统(例如,UNIX和Linux),嵌入式软件和/或图形用户界面。因此,本公开的实施例不限于硬件电路和软件的任何特定组合。
实施例不限于计算机系统。本公开的替代实施例可以用在其他设备中,例如手持设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)和手持式PC。嵌入式应用程序可以包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或可以执行根据至少一个实施例的一个或多个指令的任何其他系统。
在该示出的实施例中,处理器1302包括一个或多个执行单元1308,以实现将执行至少一个指令的算法。可以在单处理器台式机或服务器系统的上下文中描述一个实施例,但是替代实施例可以包括在多处理器系统中。系统1300是“集线器”系统架构的示例。计算机系统1300包括处理器1302以处理数据信号。作为一个说明性示例,处理器1302包括复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集组合的处理器,或者例如,任何其他处理器设备,例如数字信号处理器。处理器1302耦合到处理器总线1310,该处理器总线1310在处理器1302与系统1300中的其他组件之间传输数据信号。系统1300的元件(例如,图形加速器1312、存储器控制器集线器1316、存储器1320、I/O控制器集线器1324、无线收发器1326、闪存BIOS 1328、网络控制器1334、音频控制器1336、串行扩展端口1338、I/O控制器1340等)执行本领域的技术人员所熟知的常规功能。
在一个实施例中,处理器1302包括一级(L1)内部高速缓冲存储器1304。取决于架构,处理器1302可以具有单个内部高速缓冲存储器或多级内部高速缓冲存储器。其他实施例包括取决于特定实现和需求的内部和外部高速缓存两者的组合。寄存器文件1306用于将各种类型的数据存储在各种寄存器中,包括整数寄存器、浮点寄存器、向量寄存器、存储体寄存器、影子寄存器、检查点寄存器、状态寄存器和指令指针寄存器。
执行单元1308,包括执行整数和浮点运算的逻辑,也位于处理器1302中。在一个实施例中,处理器1302包括微码(ucode)ROM,用于存储微码,当执行时,该微码将执行某些宏指令或处理复杂场景的算法。此处,微码可能是可更新的,以处理处理器1302的逻辑错误/修复。对于一个实施例,执行单元1308包括用于处理封装的指令集1309的逻辑。通过将封装的指令集1309包括在通用处理器的指令集中1302,连同与执行指令的相关联的电路,可以使用通用处理器1302中的封装数据来执行许多多媒体应用所使用的操作。因此,通过使用用于对封装的数据执行操作处理器的数据总线的全宽度来加速和更有效地执行许多多媒体应用。这潜在地消除了在处理器的数据总线上传输较小数据单位来执行一个或多个操作(一次一个数据元素)的需要。
执行单元1308的替代实施例也可以用在微控制器、嵌入式处理器、图形设备、DSP和其他类型的逻辑电路中。系统1300包括存储器1320。存储器1320包括动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储设备。存储器1320存储将由处理器1302执行的数据信号表示的指令和/或数据。
注意,本公开的任何前述特征或方面可以在图13所示的一个或多个互连上使用。例如,用于耦合处理器1302的内部单元的管芯上互连(ODI)(未示出)实现了上述公开的一个或多个方面。或本公开与如下相关联:处理器总线1310(例如,英特尔快速路径互连(QPI)或其他已知的高性能计算互连)、到存储器1320的高带宽存储器路径1318、到图形加速器1312的点对点链路(例如,快速外围组件互连(PCIe)兼容结构)、控制器集线器互连1322、I/O或用于耦合其他所示组件的其他互连(例如USB、PCI、PCIe)。这样的组件的一些示例包括音频控制器1336、固件集线器(闪存BIOS)1328、无线收发器1326、数据存储1324、包含用户输入和键盘接口1342的传统I/O控制器1310、串行扩展端口1338(例如通用串行总线(USB)和网络控制器1334。数据存储设备1324可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备或其他大容量存储设备。
现在参考图14,示出了根据本公开的实施例的第二系统1400的框图。如图14所示,多处理器系统1400是点对点互连系统,并且包括经由点对点互连1450耦合的第一处理器1470和第二处理器1480。处理器1470和1480中的每一个可以是处理器的某些版本。在一个实施例中,1452和1454是串行、点对点相干互连结构(例如英特尔的快速路径互连(QPI)架构)的一部分。结果,可以在QPI架构内实现本公开。
虽然仅示出了两个处理器1470、1480,但是应当理解,本公开的范围不限于此。在其他实施例中,在给定处理器中可以存在一个或多个附加处理器。
示出了分别包括集成存储器控制器单元1472和1482的处理器1470和1480。处理器1470还包括作为其总线控制器单元的一部分的点对点(P-P)接口1476和1478;类似地,第二处理器1480包括P-P接口1486和1488。处理器1470、1480可以使用P-P接口电路1478、1488经由点对点(P-P)接口1450交换信息。如图14所示,IMC 1472和1482将处理器耦合到相应的存储器,即存储器1432和存储器1434,其可以是本地附接到相应处理器的主存储器的一部分。
处理器1470、1480各自使用点对点接口电路1476、1494、1486、1498,通过单独的P-P接口1452、1454与芯片组1490交换信息。芯片组1490还经由沿着高性能图形互连1439的接口电路1492与高性能图形电路1438交换信息。
共享高速缓存(未示出)可以包括在一个处理器中或两个处理器之外;还可以通过P-P互连与处理器连接,使得如果将处理器置于低功耗模式,则可以将一个或两个处理器的本地缓存信息存储在共享缓存中。
芯片组1490可以通过接口1496耦合到第一总线1416。在一个实施例中,第一总线1416可以是外围组件互连(PCI)总线,或诸如快速PCI总线或另一第三代I/O互连总线的总线,尽管本公开的范围不限于此。
如图14所示,各种I/O设备1414连同将第一总线1416耦合到第二总线1420的总线桥1418耦合到第一总线1416。在一个实施例中,第二总线1420包括低引脚数(LPC)总线。在一个实施例中,各种设备耦合到第二总线1420,包括,例如,键盘和/或鼠标1422、通信设备1427和存储单元1428,例如磁盘驱动器或其他大容量存储设备,其通常包括指令/代码和数据1430。此外,示出了音频I/O 1424耦合到第二总线1420。注意,其他架构是可能的,其中所包括的组件和互连架构是变化的。例如,代替图14的点对点架构,系统可以实现多分支总线或其他这样的架构。
转向图15的图1500,示出了示例链路训练状态机,例如PCIe链路训练和状况状态机(LTSSM)。对于利用根据特定协议的PHY来支持多个替代协议(即,在PHY之上运行)的系统,可以定义有序集,该有序集将在与链路的两个或多个设备之间与链路的训练相关地进行通信。例如,可以发送训练集(TS)有序集(OS)。在利用PCIe作为PHY协议的实现中,除了其他示例性有序集之外,TS有序集可以包括TS1和TS2有序集。在链路训练期间发送的有序集和训练序列可以基于特定的链路训练状态,其中各种链路训练状态用于完成相对应的链路训练活动和目标。
在一个示例中,例如图15中所示,链路训练状态机1600可以包括如下状态,诸如复位状态,检测状态(例如,以检测远端终端(例如,另一设备连接至通道)),轮询状态(例如,以建立符号锁定和配置通道极性)配置(或“配置”)状态(例如,将连接的物理通道配置为具有特定通道宽度、通道编号等的链路、执行通道到通道的去歪斜和其他链路配置活动),环回状态(例如,执行测试、故障隔离、均衡和其他任务)、恢复状态(例如,用于改变操作的数据速率、重新建立位锁定、符号锁定或块对齐、执行通道到通道偏斜等),这些状态可用于使链路进入活动链路状态(例如L0)。在一个示例中,可以定义特定的一个或多个链路训练状态中发送的训练序列以适应特定设备的支持的协议中的特定一个协议的协商。例如,特定训练状态可以是进入活动链路状态之前的训练状态,或者可以是数据速率可以被提升(例如,超出所支持的协议中的至少一个所支持的速率)的训练状态,例如,如下PCIe状态,其中,数据速率从Gen1速度转换为Gen3或更高速度,以及其他示例。例如,在图15所示的示例实现中,可以利用和扩展配置状态(例如1505)以允许与在训练状态中本机定义的链路训练活动(例如,通道宽度确定、通道编号、偏斜校正、均衡等)并行地协商多个协议中的特定一个协议。例如,可以为训练状态定义特定的训练序列,并且可以扩展这些训练序列以允许信息被传递(例如,在一个或多个字段或有序集合的符号中)以识别链路上的每个设备是否支持多个协议(例如,除了物理层的协议栈之外的至少一个协议栈和相对应的链路训练状态机),标识每个设备支持的特定协议,并同意在特定PHY上采用的一个或多个协议(例如,通过(通过在链路上(在上游和下游两个方向上)传输这些训练序列来完成的握手)。
在一个示例中,PCIe物理层可以用于支持多种不同的协议。因此,PCIe LTSSM中的特定训练状态可以用于链路上的设备之间的协议的协商。如上所述,即使在链路以最低支持的数据速率(例如,PCIe Gen 1数据速率)训练到活动状态(例如,L0)之前,也可能发生协议确定。在一示例中,可以使用PCIe Config状态。实际上,可以在链路宽度协商之后并且(至少部分地)与在Config状态期间执行的通道编号并行地使用修改的PCIe训练集(例如,TS1和TS2)来使用PCIe LTSSM来协商协议。
尽管已经针对有限数量的实施例描述了本公开,但是本领域技术人员将意识到由此做出的许多修改和变化。意图是,所附权利要求覆盖落入本公开的真实精神和范围内的所有这样的修改和变化。
设计可能会经历从创建到仿真再到制造的各个阶段。表示设计的数据可以多种方式表示设计。首先,如在仿真中有用的,可以使用硬件描述语言或另一种功能描述语言来表示硬件。另外,可以在设计过程的某些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段都达到了表示硬件模型中各种设备的物理放置的数据级别。在使用传统的半导体制造技术的情况下,表示硬件模型的数据可以是规定用于制造集成电路的掩模的不同掩模层上各种特征的存在或不存在的数据。在设计的任何表示中,数据可以以任何形式的机器可读介质存储。存储器或诸如磁盘的磁或光存储器可以是机器可读介质,用于存储经由光波或电波传输的信息,该光波或电波经调制或以其他方式生成以传输此类信息。当发送指示或携带代码或设计的电载波时,只要执行复制、缓冲或重新传输电信号的程度,就可以进行新的复制。因此,通信提供商或网络提供商可以至少暂时地在有形的、机器可读介质上存储体现本公开的实施例的技术的物品,诸如编码为载波的信息。
如本文所使用的模块是指硬件、软件和/或固件的任何组合。作为示例,模块包括与非暂时性介质相关联的硬件,例如微控制器,以存储适于由微控制器执行的代码。因此,在一个实施例中,对模块的引用指的是专门配置为识别和/或执行要保存在非暂时性介质上的代码的硬件。此外,在另一实施例中,模块的使用是指包括代码的非暂时性介质,该代码特别适于由微控制器执行以执行预定操作。并且可以推断,在又一个实施例中,术语模块(在该示例中)可以指代微控制器和非暂时性介质的组合。通常,被示为单独的模块边界通常会发生变化并可能重叠。例如,第一和第二模块可以共享硬件、软件、固件或其组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语“逻辑”的使用包括诸如晶体管、寄存器的硬件,或诸如可编程逻辑器件的其他硬件。
在一个实施例中,短语“至”或“配置为”的使用是指安排、组合、制造、提供销售、进口和/或设计用于执行指定或确定的任务的装置、硬件、逻辑或元件。在该示例中,如果被设计、耦合和/或互连以执行所述指定任务,则仍在未操作的装置或其元件仍被“配置为”执行指定任务。仅作为说明性示例,逻辑门可以在操作期间提供0或1。但是“向时钟提供使能信号的逻辑门配置为”并不包括可能提供1或0的每个潜在逻辑门。相反,该逻辑门以某种方式耦合,即在操作期间1或0输出为启用时钟。再次注意,术语“配置为”的使用不需要操作,而是专注于装置、硬件和/或元素的潜在状态,其中当装置、硬件和/或元件正在运行时,在潜在状态下,装置、硬件和/或元素被设计为执行特定任务。
此外,在一个实施例中,短语“能够/用于”和/或“可操作”的使用是指某些装置、逻辑、硬件和/或元件,其被设计为能够使用特定方式的装置、逻辑、硬件和/或元件。如上所述,在一个实施例中,“用于”、“能够”或“可操作”是指装置、逻辑、硬件和/或元件的潜在状态,其中该装置、逻辑、硬件和/或元件为不能运行,而是以允许以指定方式使用装置的方式进行设计。
如本文所使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,使用逻辑级别、逻辑值或逻辑的值也称为1和0,它们仅表示二进制逻辑状态。例如,1表示逻辑高电平,而0表示逻辑低电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元可能能够保存单个逻辑值或多个逻辑值。但是,已经使用了计算机系统中值的其他表示形式。例如,十进制数字十也可以表示为二进制值1010和十六进制字母A。因此,该值包括能够在计算机系统中保存的信息的任何表示表示。
此外,状态可以由值或值的一部分表示。作为示例,第一值,例如逻辑1,可以表示默认或初始状态,而第二值,例如逻辑0,可以表示非默认状态。另外,在一个实施例中,术语“重置”和“设置”分别是指默认值和更新后的值或状态。例如,默认值可能包括高逻辑值,即重置,而更新值可能包括低逻辑值,即置位。注意,值的任何组合可以用于表示任何数量的状态。
上述方法、硬件、软件、固件或代码的实施例可以通过存储在可由处理元件执行的机器可访问、机器可读、计算机可访问或计算机可读介质上的指令或代码来实现。非暂时性机器可访问/可读介质包括以诸如计算机或电子系统之类的机器可读的形式提供(即,存储和/或发送)信息的任何机制。例如,非暂时性机器可访问介质包括随机存取存储器(RAM),例如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪存设备;电存储设备;光学存储设备;声学存储设备;其他形式的存储设备,用于保存从瞬态(传播)信号(例如,载波、红外信号、数字信号)接收的信息;等等,这将与可以从中接收信息的非暂时性介质区分开。
用于对逻辑进行编程以执行本公开的实施例的指令可以存储在系统中的存储器内,例如DRAM、高速缓存、闪存或其他存储器。此外,指令可以经由网络或通过其他计算机可读介质来分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,但不仅限于软盘、光盘、压缩盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、磁卡或光卡、闪存或有形的机器可读存储,用于通过电、光、声或传播信号的其他形式(例如,载波、红外信号、数字信号等)通过互联网传输信息。因此,计算机可读介质包括适合于以机器(例如,计算机)可读形式存储或传输电子指令或信息的任何类型的有形机器可读介质。
在整个说明书中,对“一个实施例”或“实施例”的引用是指结合该实施例描述的特定特征、结构或特性包括在本公开的至少一个实施例中。因此,在整个说明书中各处出现的短语“在一个实施例中”或“在实施例中”不一定都指的是同一实施例。此外,在一个或多个实施例中,可以以任何合适的方式组合特定的特征、结构或特性。
在前述说明书中,已经参考特定示例性实施例给出了详细描述。然而,将显而易见的是,在不脱离如所附权利要求书中阐述的本公开的更广泛的精神和范围的情况下,可以对其进行各种修改和改变。因此,说明书和附图应被认为是说明性的而不是限制性的。此外,实施例和其他示例性语言的前述使用不一定指相同的实施例或相同的示例,而是可以指不同且有区别的实施例以及潜在地相同的实施例。
该系统、方法和装置可以包括以下示例之一或组合:
示例1,一种装置,包括硬件处理器;与多通道链路接合的端口;以及仲裁逻辑,其至少部分以硬件实现。仲裁逻辑维持与第一互连协议相关联的第一虚拟链路状态;维持与第二互连协议相关联的第二虚拟链路状态;从多通道链路接收指示请求的物理层分组,所述请求用于改变第一虚拟链路状态的状态;确定第一互连协议已准备好改变物理链路状态;以及在维持第二虚拟链路状态的同时,根据物理层分组改变第一虚拟链路状态。
示例2可以包括示例1的主题,该仲裁逻辑用于在多通道链路上传输指示第一协议已经改变第一虚拟链路状态的物理层分组。
示例3可以包括示例1-2中任何一个的主题,该仲裁逻辑用于从多通道链路上接收指示请求的物理层分组,所述请求用于改变第二虚拟链路状态的状态;确定第二互连协议已准备好改变第二虚拟链路状态;以及在维持第三虚拟链路状态的同时,根据物理层分组改变第二虚拟链路状态。
示例4可以包括示例3的主题,该仲裁逻辑用于在多通道链路上传输指示第二协议已经改变第二虚拟链路状态的物理层分组。
示例5可以包括示例1-4中任何一个的主题,仲裁逻辑用于维持与仲裁逻辑相关联的第三虚拟链路状态;从多通道链路上接收指示请求的物理层分组,所述请求用于改变第三虚拟链路状态的状态;确定仲裁逻辑已准备好改变第三虚拟链路状态;以及根据所述物理层分组,改变所述第三虚拟链路状态。
示例6可以包括示例5的主题,该仲裁逻辑用于在多通道链路上传输指示该仲裁逻辑已经改变第三虚拟链路状态的物理层分组。
示例7可以包括示例1-6中任何一个的主题,该装置维持多通道链路的物理链路状态;并在改变每个虚拟链路状态后改变物理链路状态。
示例8可以包括示例1-7中的任何一个的主题,其中,仲裁逻辑包括仲裁和多路复用电路。
示例9可以包括示例1-8中任一项的主题,其中,互连协议之一包括基于快速外围组件互连(PCIe)协议的协议。
示例10可以包括示例1-9中任何一个的主题,其中多通道链路包括基于Rosetta链路互连的链路。
示例11是一种由仲裁逻辑执行的方法,该方法包括:在物理层分组上接收用于改变第一虚拟链路状态的指示,该第一虚拟链路状态与第一互连协议相关联;确定第一互连协议已准备好改变与第一虚拟链路状态相关联的物理链路状态;在维持与第二互连协议相关联的第二虚拟链路状态的同时,改变第一虚拟链路状态;以及跨多通道链路发送用于指示对第一链路状态的改变的物理层分组。
示例12可以包括示例11的主题,还包括:在第一物理层分组上接收用于改变第二虚拟链路状态的指示,该第二虚拟链路状态与第二互连协议相关联;确定第二互连协议已准备好改变与第二虚拟链路状态相关联的物理链路状态;改变第二虚拟链路状态;并在所述多通道链路上发送指示对第二链路状态的改变的第二物理层分组。
示例13可以包括示例11-12中的任何一个的主题,还包括:在物理层分组上接收用于改变第三虚拟链路状态的指示,该第三虚拟链路状态与仲裁逻辑相关联;确定仲裁逻辑已准备好改变与第三虚拟链路状态相关联的物理链路状态;改变第三虚拟链路状态;跨多通道链路发送指示对第三链路状态的改变的物理层分组;并改变与多通道链路相关联的物理链路状态。
示例14可以包括示例13的主题,还包括基于对第一、第二和第三虚拟链路状态的改变来改变多通道链路的物理链路状态。
示例15可以包括11-14中任一项的主题,其中第一或第二互连协议之一包括基于快速外围组件互连(PCIe)协议的协议。
示例16可以包括示例11-15中的任何一个的主题,其中第一物理层分组包括状态请求消息,并且其中第二物理层分组包括状态状况消息。
示例17可以包括示例11-16中任一项的主题,其中,多通道链路包括连接多芯片设备的两个管芯的链路。
示例18是一种系统,其包括:第一管芯,其包括第一仲裁和多路复用逻辑;与第一互连协议相关联的第一协议栈;以及与第二互连协议相关联的第二协议栈。该系统还包括第二管芯,该第二管芯包括第二仲裁和多路复用逻辑;以及将第一管芯连接到第二管芯的多通道链路。第二仲裁和多路复用逻辑将请求发送到第一仲裁和多路复用逻辑以改变与第一协议栈相关联的第一虚拟链路状态。第一仲裁和多路复用逻辑将从多通道链路上接收来自第一管芯的请求,该请求指示用于改变第一虚拟链路状态的请求;确定第一互连协议已准备好改变物理链路状态;以及在维持第二虚拟链路状态的同时,根据接收到的请求改变第一虚拟链路状态。
示例19可以包括示例18的主题,第一仲裁和多路复用逻辑用于在多通道链路上发送指示第一虚拟链路状态中的改变的物理层分组。
示例20可以包括示例18-19中任一项的主题,第二仲裁和多路复用逻辑用于接收指示第一虚拟链路状态中的改变的物理层分组,并确定在第二管芯处的与第一协议栈相关联的第一虚拟链路状态已准备好改变物理链路状态;并在第二管芯处改变针对第一协议栈的第一虚拟链路状态。
示例21可以包括示例18-20中任何一个的主题,第一仲裁和多路复用逻辑用于从多通道链路上接收指示请求的物理层分组,所述请求用于改变第二虚拟链路状态;确定第二互连协议已准备好改变物理链路状态;并且在维持第三虚拟链路状态的同时,根据物理层分组改变第二虚拟链路状态。
示例22可以包括示例21的主题,第一仲裁和多路复用逻辑用于在多通道链路上传输指示第二协议已改变第二虚拟链路状态的物理层分组。
示例23可以包括18-22中任一项的主题,第一仲裁和多路复用逻辑用于维持与第一仲裁和多路复用逻辑相关联的第三虚拟链路状态;从多通道链路上接收指示请求的物理层分组,所述请求用于改变第三虚拟链路状态的状态;确定第一仲裁和多路复用逻辑已准备好改变物理链路状态;以及根据所述物理层分组,改变所述第三虚拟链路状态。
示例24可以包括示例23的主题,第一仲裁和多路复用逻辑用于在多通道链路上传输指示第一仲裁和多路复用逻辑已经改变第三虚拟链路状态的物理层分组。
示例25可以包括示例18-24中的任一个的主题,其中,第一协议栈包括用于基于快速外围组件互连(PCIe)的协议的事务层和链路层协议。
示例26,一种包括代码的机器可读介质,该代码在被执行时使机器接收物理层分组上的用于改变第一虚拟链路状态的指示,该第一虚拟链路状态与第一互连协议相关联;确定第一互连协议已准备好改变与第一虚拟链路状态相关联的物理链路状态;在维持与第二互连协议相关联的第二虚拟链路状态的同时,改变第一虚拟链路状态;以及跨多通道链路发送指示对第一链路状态的改变的物理层分组。
示例27可以包括示例26的主题,还包括:接收第一物理层分组上的用于改变第二虚拟链路状态的指示,该第二虚拟链路状态与第二互连协议相关联;确定第二互连协议已准备好改变与第二虚拟链路状态相关联的物理链路状态;改变第二虚拟链路状态;并在所述多通道链路上发送指示对第二链路状态的改变的第二物理层分组。
示例28可以包括示例26-27中的任何一个的主题,还包括:接收在物理层分组的用于改变第三虚拟链路状态的指示,该第三虚拟链路状态与仲裁逻辑相关联;确定仲裁逻辑已准备好改变与第三虚拟链路状态相关联的物理链路状态;改变第三虚拟链路状态;跨多通道链路发送指示对第三链路状态的改变的物理层分组;并改变与多通道链路相关联的物理链路状态。
示例29可以包括示例28的主题,还包括基于对第一,第二和第三虚拟链路状态的改变来改变多通道链路的物理链路状态。
示例30可以包括26-29中任一项的主题,其中第一或第二互连协议之一包括基于快速外围组件互连(PCIe)协议的协议。
示例31可以包括示例26-30中的任何一个的主题,其中第一物理层分组包括状态请求消息,并且其中第二物理层分组包括状态状况消息。
示例32可以包括示例26-31中的任何一个的主题,其中,多通道链路包括连接多芯片设备的两个管芯的链路。
示例33是一种装置,包括用于维持与第一互连协议相关联的第一虚拟链路状态的单元;用于维持与第二互连协议相关联的第二虚拟链路状态的单元;用于从多通道链路上接收指示请求的物理层分组的单元,所述请求用于改变第一虚拟链路状态的状态;用于确定第一互连协议已准备好改变物理链路状态的单元;以及用于在维持第二虚拟链路状态的同时,根据物理层分组改变第一虚拟链路状态的单元。

Claims (25)

1.一种装置,包括:
硬件处理器;
用于与多通道链路接合的端口;以及
至少部分地以硬件实现的仲裁逻辑,所述仲裁逻辑用于:
维持与第一互连协议相关联的第一虚拟链路状态;
维持与第二互连协议相关联的第二虚拟链路状态;
从所述多通道链路上接收指示请求的物理层分组,所述请求用于改变所述第一虚拟链路状态的状态;
确定所述第一互连协议已准备好改变物理链路状态;以及
在维持所述第二虚拟链路状态的同时,根据所述物理层分组来改变所述第一虚拟链路状态。
2.根据权利要求1所述的装置,所述仲裁逻辑用于在所述多通道链路上发送指示所述第一协议已改变所述第一虚拟链路状态的物理层分组。
3.根据权利要求1所述的装置,所述仲裁逻辑用于:
从所述多通道链路上接收指示请求的物理层分组,所述请求用于改变所述第二虚拟链路状态的状态;
确定所述第二互连协议已准备好改变所述第二虚拟链路状态;以及
在维持第三虚拟链路状态的同时,根据所述物理层分组来改变所述第二虚拟链路状态。
4.根据权利要求3所述的装置,所述仲裁逻辑用于在所述多通道链路上发送指示所述第二协议已改变所述第二虚拟链路状态的物理层分组。
5.根据权利要求3所述的装置,所述仲裁逻辑用于:
维持与所述仲裁逻辑相关联的第三虚拟链路状态;
从所述多通道链路上接收指示请求的物理层分组,所述请求用于改变所述第三虚拟链路状态的状态;
确定所述仲裁逻辑已准备好改变所述第三虚拟链路状态;以及
根据所述物理层分组来改变所述第三虚拟链路状态。
6.根据权利要求5所述的装置,所述仲裁逻辑用于在所述多通道链路上发送指示所述仲裁逻辑已改变所述第三虚拟链路状态的物理层分组。
7.根据权利要求1所述的装置,所述装置用于维持所述多通道链路的物理链路状态;以及用于在每个虚拟链路状态已经被改变后改变所述物理链路状态。
8.根据权利要求1所述的装置,其中,所述仲裁逻辑包括仲裁和多路复用电路。
9.根据权利要求1所述的装置,其中,所述互连协议中的一个包括基于快速外围组件互连(PCIe)协议的协议。
10.根据权利要求1所述的装置,其中,所述多通道链路包括基于Rosetta链路互连的链路。
11.一种由仲裁逻辑执行的方法,所述方法包括:
接收物理层分组上的用于改变第一虚拟链路状态的指示,所述第一虚拟链路状态与第一互连协议相关联;
确定所述第一互连协议已准备好改变与所述第一虚拟链路状态相关联的物理链路状态;
在维持与第二互连协议相关联的第二虚拟链路状态的同时,改变所述第一虚拟链路状态;以及
跨所述多路链路发送指示对第一链路状态的改变的物理层分组。
12.根据权利要求11所述的方法,还包括:
接收第一物理层分组上的用于改变所述第二虚拟链路状态的指示,所述第二虚拟链路状态与所述第二互连协议相关联;
确定所述第二互连协议已准备好改变与所述第二虚拟链路状态相关联的物理链路状态;
改变所述第二虚拟链路状态;以及
在所述多通道链路上发送指示对所述第二链路状态的改变的第二物理层分组。
13.根据权利要求12所述的方法,还包括:
接收物理层分组上的用于改变第三虚拟链路状态的指示,所述第三虚拟链路状态与仲裁逻辑相关联;
确定所述仲裁逻辑已准备好改变与所述第三虚拟链路状态相关联的物理链路状态;
改变所述第三虚拟链路状态;
跨所述多通道链路发送指示对所述第三链路状态的改变的物理层分组;以及
改变与所述多通道链路相关联的物理链路状态。
14.根据权利要求13所述的方法,还包括基于对所述第一虚拟链路状态、所述第二虚拟链路状态和所述第三虚拟链路状态的改变来改变所述多通道链路的物理链路状态。
15.根据权利要求11所述的方法,其中,所述第一互连协议或所述第二互连协议中的一个包括基于快速外围组件互连(PCIe)协议的协议。
16.根据权利要求11所述的方法,其中,所述第一物理层分组包括状态请求消息,并且其中,所述第二物理层分组包括状态状况消息。
17.根据权利要求11所述的方法,其中,所述多通道链路包括连接多芯片设备的两个管芯的链路。
18.一种系统,包括:
第一管芯,包括:
第一仲裁和多路复用逻辑,
与第一互连协议相关联的第一协议栈,以及
与第二互连协议相关联的第二协议栈;
第二管芯,包括第二仲裁和多路复用逻辑;以及
将所述第一管芯连接到所述第二管芯的多通道链路;
所述第二仲裁和多路复用逻辑用于将请求发送到所述第一仲裁和多路复用逻辑以改变与所述第一协议栈相关联的第一虚拟链路状态;
所述第一仲裁和多路复用逻辑用于:
从所述多通道链路上接收来自所述第一管芯的请求,所述请求指示用于改变所述第一虚拟链路状态的请求;
确定所述第一互连协议已准备好改变物理链路状态;以及
在维持第二虚拟链路状态的同时,根据接收到的请求来改变所述第一虚拟链路状态。
19.根据权利要求18所述的系统,所述第一仲裁和多路复用逻辑用于在所述多通道链路上发送指示所述第一虚拟链路状态中的改变的物理层分组。
20.根据权利要求19所述的系统,所述第二仲裁和多路复用逻辑用于接收指示所述第一虚拟链路状态中的改变的所述物理层分组,并且用于:
确定在所述第二管芯处与第一协议栈相关联的第一虚拟链路状态已准备好改变物理链路状态;以及
在所述第二管芯处改变针对所述第一协议栈的第一虚拟链路状态。
21.根据权利要求18所述的系统,所述第一仲裁和多路复用逻辑用于:
从所述多通道链路上接收指示请求的物理层分组,所述请求用于改变所述第二虚拟链路状态的状态;
确定所述第二互连协议已准备好改变物理链路状态;以及
在维持所述第三虚拟链路状态的同时,根据所述物理层分组来改变所述第二虚拟链路状态。
22.根据权利要求21所述的系统,所述第一仲裁和多路复用逻辑用于在所述多通道链路上发送指示所述第二协议已改变所述第二虚拟链路状态的物理层分组。
23.根据权利要求21所述的系统,所述第一仲裁和多路复用逻辑用于:
维持与所述第一仲裁和多路复用逻辑相关联的第三虚拟链路状态;
从所述多通道互连上接收指示请求的物理层分组,所述请求用于改变所述第三虚拟链路状态的状态;
确定所述第一仲裁和多路复用逻辑已准备好改变物理链路状态;以及
根据所述物理层分组来改变所述第三虚拟链路状态。
24.根据权利要求23所述的系统,所述第一仲裁和多路复用逻辑用于在所述多通道链路上发送指示所述第一仲裁和多路复用逻辑已改变所述第三虚拟链路状态的物理层分组。
25.根据权利要求18所述的系统,其中,所述第一协议栈包括用于基于快速外围组件互连(PCIe)的协议的事务层和链路层协议。
CN202010134763.0A 2019-04-02 2020-03-02 多个协议层封装互连的虚拟链路状态 Pending CN111797040A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/373,472 2019-04-02
US16/373,472 US10776302B2 (en) 2019-04-02 2019-04-02 Virtualized link states of multiple protocol layer package interconnects

Publications (1)

Publication Number Publication Date
CN111797040A true CN111797040A (zh) 2020-10-20

Family

ID=67298173

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010134763.0A Pending CN111797040A (zh) 2019-04-02 2020-03-02 多个协议层封装互连的虚拟链路状态

Country Status (3)

Country Link
US (3) US10776302B2 (zh)
EP (2) EP4216066A3 (zh)
CN (1) CN111797040A (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10784986B2 (en) 2017-02-28 2020-09-22 Intel Corporation Forward error correction mechanism for peripheral component interconnect-express (PCI-e)
US10771189B2 (en) 2018-12-18 2020-09-08 Intel Corporation Forward error correction mechanism for data transmission across multi-lane links
US11637657B2 (en) 2019-02-15 2023-04-25 Intel Corporation Low-latency forward error correction for high-speed serial links
US11249837B2 (en) 2019-03-01 2022-02-15 Intel Corporation Flit-based parallel-forward error correction and parity
US10776302B2 (en) * 2019-04-02 2020-09-15 Intel Corporation Virtualized link states of multiple protocol layer package interconnects
US11296994B2 (en) 2019-05-13 2022-04-05 Intel Corporation Ordered sets for high-speed interconnects
US11442876B2 (en) * 2019-05-30 2022-09-13 Intel Corporation System, apparatus and method for synchronizing multiple virtual link states over a package interconnect
US11740958B2 (en) * 2019-11-27 2023-08-29 Intel Corporation Multi-protocol support on common physical layer
TWI738222B (zh) * 2020-02-24 2021-09-01 群聯電子股份有限公司 記憶體儲存裝置與其管理方法
CN112732631A (zh) * 2020-12-25 2021-04-30 南京蓝洋智能科技有限公司 一种小芯片间的数据传输方法
CN115794731B (zh) * 2023-01-29 2023-07-04 北京超摩科技有限公司 一种用于芯粒间多通道数据链路传输的解耦控制方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9344336B2 (en) * 2013-10-15 2016-05-17 Dell Products L.P. System and method for managing virtual link state
US9921768B2 (en) 2014-12-18 2018-03-20 Intel Corporation Low power entry in a shared memory link
US10152446B2 (en) 2016-10-01 2018-12-11 Intel Corporation Link-physical layer interface adapter
US11204867B2 (en) * 2017-09-29 2021-12-21 Intel Corporation PCIe controller with extensions to provide coherent memory mapping between accelerator memory and host memory
US10776302B2 (en) * 2019-04-02 2020-09-15 Intel Corporation Virtualized link states of multiple protocol layer package interconnects

Also Published As

Publication number Publication date
US11308018B2 (en) 2022-04-19
US20220350769A1 (en) 2022-11-03
EP3719660A1 (en) 2020-10-07
US20190227972A1 (en) 2019-07-25
US20200409899A1 (en) 2020-12-31
US10776302B2 (en) 2020-09-15
US11663154B2 (en) 2023-05-30
EP4216066A3 (en) 2023-11-01
EP4216066A2 (en) 2023-07-26

Similar Documents

Publication Publication Date Title
US11663154B2 (en) Virtualized link states of multiple protocol layer package interconnects
CN109661658B (zh) 链路物理层接口适配器
US20220012189A1 (en) Sharing memory and i/o services between nodes
US11657015B2 (en) Multiple uplink port devices
CN110036380B (zh) 用于高速互连中低延迟的双模phy
JP6251806B2 (ja) 装置、方法、プログラム、システム、およびコンピュータ可読ストレージ媒体
CN108701023B (zh) 用于带内重定时器寄存器访问的装置和系统
CN108052463B (zh) 多芯片封装链路
US20190005176A1 (en) Systems and methods for accessing storage-as-memory
US20220414046A1 (en) Systems, methods, and devices for dynamic high speed lane direction switching for asymmetrical interfaces
CN109844725B (zh) 点对点互连中的非对称通道
CN109643297B (zh) 电压调制的控制通路
CN110659239A (zh) 在多通路链路中动态地协商不对称链路宽度
US10817454B2 (en) Dynamic lane access switching between PCIe root spaces
US11704275B2 (en) Dynamic presentation of interconnect protocol capability structures
JP6552581B2 (ja) 装置、方法、およびシステム
JP2019192287A (ja) 装置、方法、プログラム、システム、およびコンピュータ可読ストレージ媒体

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination