CN110196771A - 经由时钟请求消息传递协议在cpu管芯上进行功率管理的方法、装置和系统 - Google Patents
经由时钟请求消息传递协议在cpu管芯上进行功率管理的方法、装置和系统 Download PDFInfo
- Publication number
- CN110196771A CN110196771A CN201811516731.6A CN201811516731A CN110196771A CN 110196771 A CN110196771 A CN 110196771A CN 201811516731 A CN201811516731 A CN 201811516731A CN 110196771 A CN110196771 A CN 110196771A
- Authority
- CN
- China
- Prior art keywords
- clock request
- request message
- pch
- state
- clkreq
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/10—Distribution of clock signals, e.g. skew
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/266—Arrangements to supply power to external peripherals either directly from the computer or under computer control, e.g. supply of power through the communication port, computer controlled power-strips
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
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)
- Software Systems (AREA)
- Power Sources (AREA)
Abstract
实施例的各方面涉及用于使用3.3伏GPIO引脚上的时钟请求消息来控制功率管理状态的系统、方法和装置。系统可以包括CPU根端口,其用于将第一时钟请求消息发送到符合PCIe协议的平台控制器集线器(PCH),第一时钟请求消息包括被设置为断言PCH本地的3.3伏通用输入/输出(GPIO)引脚上的时钟请求发送的第一位(CLKREQ TX断言)的第一位;检测到连接的设备是否进入功率管理状态;并且,从CPU根端口向PCH发送第二时钟请求消息,所述第二时钟请求消息包括第一位和第二位,所述第一位被设置为取消断言时钟请求发送(CLKREQ TX取消断言),而所述第二位用于断言3.3伏GPIO引脚上的时钟请求协议(CLKREQ#)。
Description
技术领域
本公开涉及计算系统,并且特别地(但非排他地)涉及用于计算系统的功率管理。
背景技术
平台控制器集线器(PCH)代表一系列微芯片。输入/输出(I/O)功能已在新的中央集线器和中央处理单元(CPU)之间重新分配。某些北桥功能、存储器控制器和快速外围组件互连(PCIe)通道已集成到CPU中,而PCH已接管其余功能。与大多数处理器环境一样,应尽量减少其空闲功率以满足特定要求。在许多情况下,可以有多个高速串行输入/输出(I/O)端口(包括通用串行总线(USB))来容纳。
CPU可以包括PCIe根端口控制器,用于通过根复合体控制互连事务。根复合体代表处理器生成事务请求,而处理器通过本地总线互连。根复合体功能可以实现为分立设备,或者可以与处理器集成。根复合体可以包含多于一个PCIe端口,并且多个交换机设备可以连接到根复合体上的端口或级联。
附图说明
图1是包括多核处理器的示例计算系统的示意图。
图2是根据本公开的实施例的示例计算系统的示意图,该示例计算系统包括耦合到平台控制器集线器的中央处理单元。
图3是根据本公开的实施例的示例无采样时钟请求协议进入条件的泳道图。
图4是根据本公开的实施例的示例无采样时钟请求协议退出条件的泳道图。
图5是根据本公开的实施例的采样时钟请求协议进入条件的泳道图。
图6是根据本公开的实施例的采样时钟请求协议退出条件的泳道图。
图7是根据本公开的实施例的用于L1.1子状态的采样时钟请求协议进入条件的泳道图。
图8是根据本公开的实施例的用于L1.1子状态的采样时钟请求协议退出条件的泳道图。
图9是根据本公开的实施例的用于L1.2子状态的采样时钟请求协议进入条件的泳道图。
图10A-图10B示出了根据本公开实施例的用于L1.2子状态的采样时钟请求协议退出条件的泳道图。
图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中的重排序缓冲区、ILTB 120、加载/存储缓冲区和队列。其他资源,例如通用内部寄存器、页表基址寄存器、低级数据高速缓存和数据TLB 115、执行单元140以及乱序单元135的部分是可能完全共享的。
处理器100通常包括其他资源,其可以是完全共享的、通过分区共享的、或由处理元件/对处理元件专用的。在图1中,示出了具有处理器的说明性逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可以包括或省略这些功能单元中的任何一个,以及包括未示出的任何其他已知功能单元、逻辑或固件。如图所示,核心101包括简化的、代表性的乱序(OOO)处理器核心。但是可以在不同的实施例中使用有序处理器。OOO核心包括用于预测要执行/采用的分支的分支目标缓冲器120和用于存储用于指令的地址转换条目的指令转换缓冲器(I-TLB)120。
核心101还包括解码模块125,其耦合到取指单元120以解码所获取的元件。在一个实施例中,取指逻辑包括分别与线程槽101a、101b相关联的各个定序器。通常,核心101与第一ISA相关联,第一ISA定义/指定在处理器100上能执行的指令。通常作为第一ISA的一部分的机器代码指令包括指令的一部分(称为操作码),其引用/指定要执行的指令或操作。解码逻辑125包括从其操作码识别这些指令并在管线中传递解码的指令以便进行由第一ISA定义的处理的电路。例如,如下面更详细讨论的,在一个实施例中,解码器125包括被设计或适于识别特定指令(例如,事务指令)的逻辑。作为解码器1125识别的结果,架构或核心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)其组合。
在CPU管芯上集成PCIe根端口的缺点是,如果附接的设备无法进入低功耗或空闲状态,则CPU可能无法进入具有VNN移除支持的各种空闲状态(即Cx状态)。阻止CPU根端口支持这些功率节省功能的限制因素包括:1)CPU管芯处缺少3.3V GPIO引脚。(这是PCIe规范要求,CLKREQ#GPIO引脚需要为3.3V。)以及2)PCIe附接设备的参考时钟电源位于平台控制器集线器(PCH)处的集成时钟芯片(ICC)锁相环(PLL)上。实施例的各方面涉及利用CLKREQ#通用输入/输出(GPIO)引脚(例如L1子状态和动态热插拔功率管理)来促进中央处理单元(CPU)PCIe根端口控制器(PEG)以支持功率管理功能。通过在CPU和PCH之间提供用于通信的通信信道和握手CLKREQ#GPIO引脚控制,实施例的各方面可以弥合这两个限制的差距。
时钟请求(CLKREQ)消息传递协议允许在CPU管芯中支持自主功率管理,例如L1子状态。利用CLKREQ消息传递协议,CPU可以进入更深的空闲(Cx)状态并执行VNN移除,以及允许平台进入具有参考时钟门控的各种睡眠状态。CLKREQ#信号是开漏、低电平有效信号,其通过例如PCIe M.2设备附加卡功能驱动为低电平,以请求PCIe参考时钟可用(活动时钟状态)以允许PCIe接口跨互连发送/接收数据。
这里描述的特征可以改善更好的电池寿命并且还可以缩短功率管理退出延迟。
图2是根据本公开的实施例的示例计算系统200的示意图,该示例计算系统200包括耦合到平台控制器集线器PCH SoC 230的中央处理单元(CPU)片上系统(SoC)202。CPUSoC 202可以是包括多个硬件和软件功能块的硬件系统。例如,CPU SoC 202可以包括根端口控制器204。根端口控制器204可以包括第一根端口206a和第二根端口206b,以及取决于实现方式的其他根端口。根端口的数量可以更小或更大,同时仍然在本公开的范围内。
根端口206a或206b(或根端口控制器204)可以发起CLKREQ#消息传递协议,可以终止CLKREQ#消息传递协议,并且可以是用于功率管理的CLKREQ#消息传递协议的消费者。根端口206a和206b可以分别包括结构边带接口280和281。根端口206a和206b可以经由结构边带接口282通过边带路由器(SB路由器)290a和290b耦合到边带桥210。边带桥210是实现用于发送和接收来自PCH SoC 230的CLKREQ#消息传递分组的软件和/或固件的硬件元件。
边带桥210可以与P单元212接合。P单元210是由软件代理管理的硬件代理,例如功率管理(PM)驱动器。P单元210可以管理在CPU SoC 202和PCH SoC 230之间交换的CPU SoC202电力请求和确认信号。PM驱动器可以根据一个或多个电力策略来管理CPU SoC 202的组件之间的电力流动。
边带桥232发送和接收来自CPU SoC 202的CLKREQ#消息传递分组。边带桥232可以耦合到虚拟有线消息(VWM)逻辑258,其可以根据虚拟有线消息协议将有线信号/消息转换为虚拟线消息。VWM逻辑258可以经由多路复用器元件240a耦合到FIA 236中的PCIe CLKREQ控制器238。第二多路复用器元件240b可以耦合到CLKREQ#GPIO 256a和256b,以控制到附接设备270a和270b的信令。多路复用器240b可以从一个或多个CLKREQ#控制协议242接收信息,每个CLKREQ#控制协议242也可以用适当的时钟协议通知ICC 252。CLKREQ#映射寄存器244可以耦合到多路复用器240b以提供CLKREQ#位设置信息以允许FIA 236解析CLKREQ#消息传递信号。通用寄存器260可以耦合到IOSF 285。
集成时钟芯片(ICC)252可以耦合到锁相环(PLL)246,锁相环246耦合到100MHzPLL 250,100MHz PLL 250是向ICC 252提供参考时钟信号的物理层公共通道248的一部分。
边带桥210可以经由功率管理控制器(PMC)232耦合到PCH SoC 230。PMC 232还可以包括边带桥234,以与CPU SoC 202的边带桥210接合。PMC 232可以通过SB路由器292(经由结构边带接口283和285)与灵活IO适配器(FIA)236进行通信。FIA 236可以包括PCIeCLKREQ控制器238。FIA 236可以与集成时钟芯片(ICC)252和CLKREQ#GPIO 256a和256b进行通信。CLKREQ#GPIO 256a和256b可以用作到连接设备270a和270b的IO,并且可以采样CLKREQ#引脚的状态并将线状态驱动到FIA236。ICC 252可以生成到PCIe设备270a和/或270b的参考时钟(REFCLK#)。FIA 236还可以基于下面描述的CLKREQ#消息传递协议与VWM逻辑258通信。FIA 236可以对CPU SoC 202中的正确PCIe根端口执行CLKREQ#引脚复用。
这里描述的CLKREQ#消息协议的各方面使用位于PCH片上系统(SoC)230处的3.3v通用输入/输出(GPIO)引脚(在图2中示为GPIO引脚256a和256b)作为CLKREQ#单向或双向GPIO引脚,用于位于CPU SoC 202处的PCIe根端口206a和206b。CLKREQ#GPIO引脚256a和256b将连接到PCH SoC处的ICC,以便设备可以分别通过CLKREQ#断言/取消断言请求参考时钟供给/门控。断言引脚意味着将其设置为活动状态。取消断言引脚意味着将引脚设置为无效状态。CLKREQ#消息可以在结构边带接口(例如,IOSF 281、282、283)上被转换为CLKREQ#消息协议作为边带消息,并且通过边带桥232和210路由到CPU PCIe根端口206a和206b。CPUPCIe根端口206a和206b可以将CLKREQ#消息用作虚拟CLKREQ#GPIO引脚,以使PCIe链路进入其各自的功率管理状态,例如活动状态L1子状态功率管理状态。下表1显示了与CLKREQ#引脚相关联的功率管理功能。
表1:CPU PCIe根端口支持的功率管理状态
CLKREQ#消息传递协议:
本公开描述了用于支持各种功率管理状态的4种类型的CLKREQ#消息传递协议,如表2所示。那些消息传递协议是“时钟请求采样协议”、“无采样时钟请求协议”、“时钟请求L1.1采样协议”,以及“时钟请求L1.2采样协议”。
表2:CLKREQ#消息传递协议映射到LTSSM状态功率管理支持
时钟请求采样协议被定义用于其中CLKREQ#被用作链接训练状态状态机(LTSSM)208a和208b的输入,例如,使得LTSSM 208a和208b的相应状态可以基于CLKREQ#引脚输入来执行功率管理。
CLKREQ消息格式:
下表显示了CPU到PCH以及PCH到CPU CLKREQ#消息协议消息。例如,表3提供了从CPU SoC 202交换到PCH SoC 230的时钟请求消息。
表3.从CPU到PCH的时钟请求消息
从CPU PCIe根端口206a和206b到PCH PCIe根端口的时钟请求消息用于传送进入功率管理状态的开始,以便PCH FIA知道哪个版本的时钟请求握手在CLKREQ#GPIO引脚上布防。“T power on Scale”和“Power On Wait Timer(上电等待定时器)”用于传送在CLKREQ#断言时PCH FIA计数所需要的上电唤醒延迟。此延迟仅需要L1.2协议,而PCH FIA仅需要在L1.2CLKREQ#样本上布防T Power On定时器。
“CLKREQ TX Control Assert/Deassert”用于关于是否断言或取消断言CLKREQ#GPIO引脚而与PCH FIA通信。由于GPIO引脚是双向控制,并且GPIO引脚是板上弱上拉,通过指示PCH FIA断言CLKREQ#GPIO引脚将阻止设备进入功率管理状态,因为CLKREQ#GPIO引脚被PCH FIA推迟。通过指示PCH FIA将CLKREQ#GPIO引脚取消断言,FIA将GPIO引脚控制为三态模式,因此允许设备在需要时超越以对CLKREQ#引脚取消断言。
“Start/End L1.2Protocol(开始/结束L1.2协议)”、“Start/End L1.1Protocol(开始/结束L1.1协议)”、“Start/End CLKREQ#Sample Protocol(开始/结束CLKREQ#采样协议)”和“Start/End CLKREQ#No Sample Protocol(开始/结束CLKREQ#无采样协议)”用于关于使用哪个协议与PCH FIA进行通信以开始/结束相应的时钟请求消息协议。
表4:从PCH到CPU的时钟请求消息
从PCH到CPU的时钟消息主要用于传送CLKREQ#GPIO引脚状态。状态通过时钟请求消息中的“CLKREQ#RX State Assert_b/Deassert_b”位进行通信。当时钟请求消息响应时,该消息将在该特定时间反映CLKREQ#GPIO引脚。“Wake Allowed(允许唤醒)”位用于表示T上电计数器到期的完成,并且这将仅用于L1.2时钟请求消息协议。“Start/End ProtocolACK”位用作对来自CPU PCIe根端口的开始/结束协议请求的确认响应。
图3是根据本公开的实施例的用于示例无采样时钟请求协议进入条件的泳道图300。无采样时钟请求协议是针对以下用途定义的:其中不需要PCIe根端口LTSSM监视CLKREQ#以执行功率管理。该协议允许PCH ICC监视CLKREQ#引脚,以在设备使CLKREQ#取消断言时关闭设备的PCLK电源。CLKREQ#断言或取消断言将不会传送到CPU PCIe根端口,因为CPU PCIe根端口不需要CLKREQ#引脚来执行功率管理。一个示例用法是当链路处于L23状态时,可以在不监视CLKREQ#消息的情况下打开功率管理功能。这也将允许边带桥空闲,并且从而进入其自身的功率管理状态。
图3示出了无采样时钟请求协议进入处理流程。当PCH FIA从冷启动启动时,PCHFIA将代表CPU PCIe根端口断言CLKREQ#GPIO引脚。这是为了防止在CPU PCIe根端口未准备好接受时钟请求消息时发生不必要的竞争条件。当CPU PCIe根端口首次从冷启动启动时,一旦LTSSM在检测状态下开始活动,CPU PCIe根端口将发送时钟请求消息,将“CLKREQ TXControl Assert/Deassert”(CLKREQ TX控制断言/取消断言)位设置为断言。时钟请求可以经由链接CPU和PCH边带网络的边带链路发送到PCH FIA。由于PCH FIA已经断言CLKREQ#GPIO引脚,从北桥接收时钟请求消息并将“CLKREQ TX Control Assert/Deassert”位设置为断言,用作握手以确认FIA CPU PCIe根端口已准备好接收时钟请求消息。
当系统或附接的设备进入不需要时钟请求采样的功率管理状态时,CPU PCIe根端口将发送时钟请求消息,其中“Start/End CLKREQ#No Sample Protocol”(开始/结束CLKREQ#无采样协议)位设置为断言并将“CLKREQ TX Control Assert/Deassert”位设置为取消断言。接收到消息后PCH FIA可以首先确认时钟请求消息,并将“Start/End ProtocolACK”(开始/结束协议ACK)位设置为断言。然后,PCH FIA将停止将CLKREQ#GPIO引脚的任何状态传送到CPU PCIe根端口,因为CPU PCIe Root端口不需要此类信息来执行功率管理。通过不经由边带桥将消息发送到CPU,边带桥可以执行功率管理,其允许进行平台功率管理。
当PCH FIA接收到“CLKREQ TX Control Assert/Deassert”位设置为取消断言的时钟请求消息时,PCH FIA还可以对CLKREQ#GPIO引脚取消断言。当不需要参考时钟时,CLKREQ#GPIO引脚取消断言允许附接的设备也对CLKREQ#GPIO引脚取消断言。当设备掉线CLKREQ#GPIO引脚时,然后ICC可以关闭对设备的参考时钟,并且因此允许平台进入S0ix状态。
图4是根据本公开的实施例的用于示例无采样时钟请求协议退出条件的泳道图400。由于CPU PCIe根端口不需要依赖CLKREQ#GPIO引脚来唤醒PCIe链路,因此CPU PCIe根端口可以独立于CLKREQ#GPIO引脚唤醒。从低功率管理状态唤醒时,CPU PCIe根端口可以将时钟请求消息(即,符合本文所述协议的消息)发送到PCH FIA,其中“Start/End CLKREQ#NoSample Protocol”位设置为取消断言并且“CLKREQ TX Control Assert/Deassert”位设置为断言。在PCH FIA收到时钟请求消息后,PCH FIA然后可以继续断言CLKREQ#GPIO引脚,并且同时返回时钟请求消息,并将“Start End Protocol ACK”设置为断言。然后,这将终止CPU PCIe根端口与PCH FIA之间的无采样时钟请求协议通信。
图5是根据本公开的实施例的用于采样时钟请求协议进入条件的泳道图500。时钟请求采样协议被定义用于除L1.1和L1.2之外的活动状态功率管理的实施例,或者依赖于CLKREQ#GPIO引脚来执行功率管理的其他状态。在CPU PCIe根端口处于相应低功耗状态(例如L1.0状态)的实例期间启用CLKREQ采样协议特征时,需要CPU PCIe根端口将时钟请求消息发送到PCH FIA,将“Start/End CLKREQ#Sample Protocol”(开始/结束CLKREQ#采样协议)位设置为断言。然后,PCH FIA可以监视CLKREQ#GPIO引脚并将GPIO引脚状态传送回CPUPCIe。
图5示出了用于示例功率管理状态的“CLKREQ采样协议”处理流程,其是针对热插/热拔功率管理支持的检测状态。PCH FIA可以在冷启动期间断言CLKREQ#GPIO,并且CPUPCIe根端口可以发送时钟请求消息,其中当CPU PCIe根端口从冷启动上电时“CLKREQ TXControl Assert/Deassert”位设置为断言。当CPU PCIe根端口达到所需的LTSSM状态时,CPU PCIe根端口可以通过发送设置为断言的“Start/End CLKREQ#Sample Protocol”的时钟请求消息来开始“CLKREQ Sample Protocol”。同时,CPU PCIe根端口可以清除“CLKREQTX Control Assert/Deassert”位以置为取消断言。然后,PCH FIA将以“Start/EndProtocol ACK”(开始/结束协议ACK)位设置为断言的时钟请求消息来响应。PCH FIA可以返回“Start/End Protocol ACK”的时钟请求消息,并且还可以向CPU PCIe根端口返回“CLKREQ#RX State Assert_b/Deassert_b”状态。如果在接收到“CLKREQ#RX StateAssert_b/Deassert_b”期间CLKREQ#GPIO引脚处于取消断言状态,则CPU PCIe根端口可以继续进行IP功率管理。如果CLKREQ#GPIO引脚未处于取消断言状态(例如,由附接的设备取消断言),则PCH FIA可以继续监视CLKREQ#GPIO引脚,并且当CLKREQ#GPIO引脚取消断言时,可以发送另一个时钟请求消息,将“CLKREQ#RX State Assert_b/Deassert_b”取消断言。
图6是根据本公开的实施例的用于采样时钟请求协议退出条件的泳道图600。由于CLKREQ#GPIO引脚用于实现功率管理,因此CLKREQ#断言可用于将CPU PCIe根端口从功率管理状态唤醒。当CLKREQ#GPIO引脚被断言时,则PCH FIA可以通过发送时钟请求消息“CLKREQ#RX State Assert_b/Deassert_b”断言来与CPU PCIe根端口进行通信,同时可以抑制CLKREQ#GPIO引脚断言以防止附接的设备进一步进入低功率管理状态。CPU PCIe根端口在接收到时钟请求消息时,然后可以使链路退出低功率管理状态。然后,CPU PCIe根端口可以用“Start/End CLKREQ#Sample Protocol”取消断言来响应,并且同时可以设置“CLKREQ TX Control Assert/Deassert”断言。在收到结束协议消息后,PCH FIA可以通过将“Start/End Protocol Ack”取消断言返回时钟请求消息来确认收到的消息。
图7是根据本公开的实施例的用于L1.1子状态的采样时钟请求协议进入条件的泳道图700。时钟请求L1.1采样协议用于L1.1功率管理状态,于是CLKREQ#GPIO引脚使用双向控制。这种双向控制允许PCIe根端口经由CLKREQ#GPIO引脚断言来唤醒附接的设备。同时,CLKREQ#GPIO引脚也可以与ICC通信,以关闭设备的参考时钟。
图7示出了L1.1CLKREQ#采样协议进入条件处理流程。当CPU PCIe根端口进入L1.0状态,并且CPU PCIe根端口知道支持L1子状态时,CPU PCIe根端口可以将“Start/EndL1.1Protocol”(开始/结束L1.1协议)位设置为断言且将“CLKREQ TX Control Assert/Deassert”设置为取消断言来向PCH FIA发起时钟请求消息。这将允许PCH FIA切换到L1.1CLKREQ#采样协议控制,并且同时将CLKREQ#GPIO引脚取消断言。在此期间,CPU PCIe根端口仍处于L1.0状态。当附接的PCIe设备准备进入L1.1状态时,PCIe设备将对CLKREQ#GPIO引脚取消断言,而PCH FIA可以检测到CLKREQ#GPIO引脚的无效。然后,PCH FIA可以通过设置“CLKREQ#RX State Assert_b/Deassert_b”取消断言来将GPIO引脚信息转换为时钟请求消息。当CPU PCIe根端口接收到时钟请求消息时,CPU PCIe根端口可以转换到L1.1子状态并执行功率管理。当PCH FIA正在发送时钟请求消息时,ICC也会观察到CLKREQ#GPIO引脚,并且因此如果条件允许,参考时钟可以被门控。
图8是根据本公开的实施例的用于L1.1子状态的采样时钟请求协议退出条件的泳道图。图8示出了L1.1CLKREQ#采样协议的示例退出条件。当附接的PCIe设备打算退出L1.1功率管理状态时,附接的PCIe设备可以断言CLKREQ#GPIO引脚。该GPIO引脚可以触发ICC取消对设备的参考时钟供电的门控。同时,PCH FIA可以通过将“CLKREQ#RX State Assert_b/Deassert_b”设置为断言来将CLKREQ#GPIO引脚转换为时钟请求消息。PCH FIA还可以驱动CLKREQ#GPIO引脚断言,以防止设备重新进入CLKREQ#取消断言功率管理状态。在接收到时钟请求消息时,CPU PCIe根端口可以用“CLKREQ TX Control Assert/Deassert”断言的时钟请求消息进行响应。
该协议还可以处理主机和设备唤醒状态的同时唤醒,从而可以同时发送“CLKREQ#RX State Assert_b/Deassert_b”断言的从PCH到CPU的时钟请求消息以及“CLKREQ TXControl Assert/Deassert”断言的从CPU到PCH的时钟请求消息。当CPU PCIe根端口最终准备退出L1.1功率管理状态时,CPU PCIe根端口将继续发送“Start/End L1.1Protocol”取消断言以及“CLKREQ TX Control Assert/Deassert”断言的时钟请求消息。作为响应,PCHFIA将返回“CLKREQ#RX State Assert_b/Deassert_b”取消断言的时钟请求消息,从而结束L1.1CLKREQ#采样协议。
图9是根据本公开的实施例的用于L1.2子状态的采样时钟请求协议进入条件的泳道图。CLKREQ L1.2采样协议类似于上述CLKREQ L1.1采样协议,但PCIe规范允许关闭TX公共模式。因此,附接的PCIe设备和PCIe根端口需要维护一系列开启和关闭定时器。由此,CLKREQ L1.2采样协议需要另外携带定时器信息以实现功率管理。
当CPU PCIe根端口发现根端口并且附接的设备能够支持L1子状态,并且设备通告延迟容忍要求(LTR)满足L1.2LTR要求时,CPU PCIe根端口每当链路进入L1.0状态时将使端口准备进入L1.2。一旦链路进入L1.0状态,则CPU PCIe根端口将发送“Start/EndL1.2Protocol”断言且同时“CLKREQ TXControl Assert/Deassert”取消断言的时钟请求消息。除了这些信息之外,还需要CPU PCIe根端口在相同的时钟请求消息上发送“Tpower_onScale”以及“Power On Wait Time”,以便当设备触发退出时PCH FIA将具有代表CPU PCIe根端口计算Tpower on的信息。像往常一样,然后PCH FIA将对CLKREQ#GPIO引脚取消断言,而同时用“Start/End Protocol ACK”断言的时钟请求消息进行响应。同时,CLKREQ#GPIO引脚状态在“CLKREQ#RX State Assert_b/Deassert_b”上进行。一旦CLKREQ#GPIO引脚取消断言,PCH FIA就会生成“CLKREQ#RX State Assert_b/Deassert_b”取消断言的GPIO引脚的另一个时钟请求消息以使CPU PCIe根端口进入L1.2状态。
图10是根据本公开的实施例的用于L1.2子状态的采样时钟请求协议退出条件的泳道图。对于L1.2退出,当CLKREQ#GPIO引脚被断言时,然后PCH FIA将发送“CLKREQ#RXState Assert_b/Deassert_b”断言的时钟请求消息。然后,CPU PCIe根端口利用“CLKREQTX Control Assert/Deassert”进行断言的时钟请求消息进行响应,这可用作对CLKREQ#GPIO引脚断言进行采样的确认,并且同时抑制设备降级为低功率管理状态。PCH FIA可以发送时钟请求消息并布防Tpower_on定时器。在Tpower_on定时器到期后,PCH FIA将发送“Wake Allowed”设置为断言的另一个时钟请求消息,作为向CPU PCIe根端口指示,CPUPCIe根端口现在可以退出L1.2,并且继续退出条件。在此期间,CPU PCIe根端口将发送“CLKREQ TXControl Assert/Deassert”取消断言的另一个时钟请求消息,同时监视退出L1.0的rxelecidle退出条件。发送“CLKREQ TX Control Assert/Deassert”取消断言的时钟请求消息的目的是允许设备降级回L1子状态,这是PCIe L1子状态ECN修订版0.7支持的功能的一部分。当CPU PCIe根端口经由rxelecidle取消断言检测到链路唤醒时,然后CPUPCIe根端口将通过发送带有时钟请求消息“Start/End L1.2Protocol”取消断言和“CLKREQTXControl Assert/Deassert”断言来终止时钟请求消息协议。然后,PCH FIA将使用“Start/End Protocol ACK”取消断言的时钟请求消息来进行响应。
一种互连结构架构包括快速外围组件互连(PCI)(PCIe)架构。PCIe的主要目标是使来自不同供应商的组件和设备能够在开放式架构中互操作,跨越多个细分市场;客户端(台式机和移动设备)、服务器(标准和企业)以及嵌入式和通信设备。快速PCI是一种高性能通用I/O互连,其被定义用于各种未来的计算和通信平台。一些PCI属性,例如其使用模型、加载存储架构和软件接口,已通过其修订版进行维护,而先前的并行总线实现已被高度可扩展的完全串行接口所取代。最近的快速PCI版本利用了点对点互连、基于交换机的技术和分组协议的优势,以提供更高水平的性能和功能。快速PCI支持的一些高级功能包括功率管理、服务质量(QoS)、热插拔/热交换支持、数据完整性和错误处理。
参见图11,示出了由互连一组组件的点对点链路组成的结构的实施例。系统1100包括耦合到控制器集线器1115的处理器1105和系统存储器1110。处理器1105包括任何处理元件,例如微处理器、主处理器、嵌入式处理器、协处理器或其他处理器。处理器1105通过前端总线(FSB)1106耦合到控制器集线器1115。在一个实施例中,FSB 1106是如下所述的串行点对点互连。在另一实施例中,链路1106包括符合不同互连标准的串行、差分互连架构。
系统存储器1110包括任何存储器设备,诸如随机存取存储器(RAM)、非易失性(NV)存储器,或系统1100中的设备可访问的其他存储器。系统存储器1110通过存储器接口1116耦合到控制器集线器1115。存储器接口的示例包括双倍数据速率(DDR)存储器接口、双通道DDR存储器接口和动态RAM(DRAM)存储器接口。
在一个实施例中,控制器集线器1115是快速外围组件互连(PCIe或PCIE)互连层级中的根集线器、根复合体或根控制器。控制器集线器1115的示例包括芯片组、存储器控制器集线器(MCH)、北桥、互连控制器集线器(ICH)、南桥和根控制器/集线器。通常,术语芯片组指的是两个物理上分离的控制器集线器,即耦合到互连控制器集线器(ICH)的存储器控制器集线器(MCH)。注意,当前系统通常包括与处理器1105集成的MCH,而控制器1115以与下面描述的类似方式与I/O设备进行通信。在一些实施例中,可选地通过根复合体1115支持对等路由。
这里,控制器集线器1115通过串行链路1119耦合到交换机/桥接器1120。输入/输出模块1117和1121(也可以称为接口/端口1117和1121)包括/实现分层协议栈以提供控制器集线器1115与交换机1120之间的通信。在一个实施例中,多个设备能够耦合到交换机1120。
交换机/网桥1120将来自设备1125的分组/消息从上游(即,向上层级)朝向根复合体路由到控制器集线器1115以及从下游,即从远离根控制器的层级向下从处理器1105或系统存储器1110路由到设备1125。在一个实施例中,交换机1120被称为多个虚拟PCI到PCI桥设备的逻辑组件。设备1125包括要耦合到电子系统的任何内部或外部设备或组件,例如I/O设备、网络接口控制器(NIC)、附加卡、音频处理器、网络处理器、硬盘驱动器、存储设备、CD/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、火线设备、通用串行总线(USB)设备、扫描仪和其他输入/输出设备。通常在PCIe行话中,例如设备,被称为端点。虽然没有具体示出,但是设备1125可以包括PCIe到PCI/PCI-X桥,以支持传统或其他版本的PCI设备。PCIe中的端点设备通常被分类为传统、PCIe或根复合集成端点。
图形加速器1130还通过串行链路1132耦合到控制器集线器1115。在一个实施例中,图形加速器1130耦合到MCH,MCH耦合到ICH。然后,交换机1120以及相应的I/O设备1125耦合到ICH。I/O模块1131和1118还用于实现分层协议栈以在图形加速器1130与控制器集线器1115之间进行通信。类似于上面的MCH讨论,图形控制器或图形加速器1130本身可以集成在处理器1105中。
转到图12,示出了分层协议栈的实施例。分层协议栈1200包括任何形式的分层通信栈,例如快速路径互连(QPI)栈、PCie栈、下一代高性能计算互连栈或其他分层栈。尽管下面参考图11-图14进行的讨论与PCIe堆栈有关,但是相同的概念可以应用于其他互连堆栈。在一个实施例中,协议栈1200是PCIe协议栈,包括事务层1205、链路层1210和物理层1220。接口(例如,图1中的接口1117、1118、1121、1122、1126和1131)可以表示为通信协议栈1200。表示为通信协议栈也可以称为实现/包括协议栈的模块或接口。
快速PCI使用分组在组件之间传递信息。在事务层1205和数据链路层1210中形成分组以将信息从发送组件传送到接收组件。当发送的数据分组流经其他层时,它们被扩展有处理这些层处的数据分组所需的附加信息。在接收侧,发生反向过程,并且分组从其物理层1220表示变换到数据链路层1210表示,并且最终(对于事务层分组)变换为可以由接收设备的事务层1205处理的形式。
事务层
在一个实施例中,事务层1205用于提供设备的处理核心与互连架构(例如,数据链路层1210和物理层1220)之间的接口。在这方面,事务层1205的主要职责是分组(即事务层分组或TLP)的组装和拆装。转换层1205典型地管理TLP的信用基础流控制。PCIe实现分离事务,即具有由时间分隔的请求和响应的事务,允许链路在目标设备收集针对响应的数据时携带其他业务。
此外,PCIe利用基于信用的流控制。在该方案中,设备在事务层1205中通告针对每个接收缓冲器的信用的初始量。在链路的相对端的外部设备,例如图1中的控制器集线器115,计算每个TLP消耗的信用数量。如果事务未超过信用额度,则可以发送事务。在收到响应时,将恢复一定数量的信用。信用方案的一个优点是,如果没有遇到信用额度,信用返还的延迟不会影响性能。
在一个实施例中,四个事务地址空间包括配置地址空间、存储器地址空间、输入/输出地址空间和消息地址空间。存储器空间事务包括用于将数据传送到存储器映射位置或从存储器映射位置传送数据的读请求和写请求中的一个或多个。在一个实施例中,存储器空间事务能够使用两种不同的地址格式,例如短地址格式,例如32位地址,或长地址格式,例如64位地址。配置空间事务用于访问PCIe设备的配置空间。用于配置空间的事务包括读请求和写请求。消息空间事务(或简称消息)被定义为支持PCIe代理之间的带内通信。
因此,在一个实施例中,事务层1205组装分组报头/有效载荷1206。用于当前分组报头/有效载荷的格式可以在PCIe规范网站的PCIe规范中找到。
快速参考图13,示出了PCIe事务描述符的实施例。在一个实施例中,事务描述符1300是用于携带事务信息的机制。在这方面,事务描述符1300支持系统中的事务的标识。其他潜在用途包括跟踪默认事务排序的修改以及事务与信道的关联。
事务描述符1300包括全局标识符字段1302、属性字段1304和信道标识符字段1306。在所示示例中,全局标识符字段1302被描绘为包括本地事务标识符字段1308和源标识符字段1310。在一个实施例中,全局事务标识符1302对于所有未完成的请求是唯一的。
根据一种实现方式,本地事务标识符字段1308是由请求代理生成的字段,并且其对于需要完成该请求代理的所有未完成请求是唯一的。此外,在该示例中,源标识符1310唯一地标识PCIe层级内的请求者代理。因此,与源ID 1310一起,本地事务标识符1308字段提供层次结构域内的事务的全局标识。
属性字段1304指定事务的特征和关系。在这方面,属性字段1304可能用于提供允许修改事务的默认处理的附加信息。在一个实施例中,属性字段1304包括优先级字段1312、保留字段1314、排序字段1316和非窥探字段1318。这里,优先级子字段1312可以由发起者修改以向事务分配优先级。保留属性字段1314被保留用于将来或供应商定义的使用。可以使用保留属性字段来实现使用优先级或安全性属性的可能使用模型。
在该示例中,排序属性字段1316用于提供可选信息,该可选信息传达可以修改默认排序规则的排序类型。根据一个示例实现方式,排序属性“0”表示要应用的默认排序规则,其中排序属性“1”表示放宽排序,其中写入可以在相同方向上传递写入,并且读取完成可以在同一个方向上传递写入。窥探属性字段1318用于确定是否窥探了事务。如图所示,信道ID字段1306标识与事务相关联的信道。
链路层
链路层1210(也称为数据链路层1210)充当事务层1205与物理层1220之间的中间级。在一个实施例中,数据链路层1210的职责是提供用于在链路的两个组件之间交换事务层数据分组(TLP)的可靠机制。数据链路层1210的一侧接受由事务层1205组装的TLP,应用分组序列标识符1211,即标识号或分组号,计算并应用错误检测码,即CRC 1212,并将修改的TLP提交给物理层1220以用于跨物理到外部设备的传输。
物理层
在一个实施例中,物理层1220包括逻辑子块1221和电子块1222,用于物理地将分组发送到外部设备。这里,逻辑子块1221负责物理层1221的“数字”功能。在这方面,逻辑子块包括用于准备用于由物理子块1222发送的传出信息的发送部分,以及用于在将所接收的信息传递到链路层1210之前识别和准备所接收的信息的接收部分。
物理块1222包括发送器和接收器。发送器由逻辑子块1221供应有符号,发送器将符号串行化并发送到外部设备。接收器被供应有来自外部设备的串行符号,并将接收的信号转换为位流。位流被反序列化并供应给逻辑子块1221。在一个实施例中,采用8b/10b传输码,其中发送/接收10位符号。这里,特殊符号用于用帧1223对分组进行帧化。此外,在一个示例中,接收器还提供从传入串行流恢复的符号时钟。
如上所述,尽管参考PCIe协议栈的特定实施例讨论了事务层1205、链路层1210和物理层1220,但是分层协议栈不限于此。实际上,可以包括/实现任何分层协议。作为示例,表示为分层协议的端口/接口包括:(1)用于组装分组的第一层,即事务层;用于对分组进行排序的第二层,即链路层;以及用于发送分组的第三层,即物理层。作为具体示例,使用公共标准接口(CSI)分层协议。
接下来参考图14,示出了PCIe串行点对点结构的实施例。尽管示出了PCIe串行点对点链路的实施例,但是串行点对点链路不限于此,因为它包括用于发送串行数据的任何传输路径。在所示实施例中,基本PCIe链路包括两个低压差分驱动信号对:发送对1406/1411和接收对1412/1407。因此,设备1405包括发送逻辑1406,用于将数据发送到设备1410,以及接收逻辑1407,用于从设备1410接收数据。换句话说,两个发送路径,即路径1416和1417,以及两个接收路径,即路径1418和1419,包含在PCIe链路中。
传输路径指的是用于传输数据的任何路径,例如传输线、铜线、光线、无线通信信道、红外通信链路或其他通信路径。两个设备(例如设备1405和设备1410)之间的连接被称为链路,例如链路415。链路可以支持一个通道-每个通道代表一组差分信号对(一对用于发送,一对用于接收)。为了扩展带宽,链路可以聚合由xN表示的多个通道,其中N是任何支持的链路宽度,例如1、2、4、8、12、16、32、64或更宽。
差分对指的是两条传输路径,例如线路1416和1417,用于发送差分信号。作为示例,当线路1416从低电压电平切换到高电压电平,即上升沿时,线路1417从高逻辑电平驱动到低逻辑电平,即下降沿。差分信号潜在地表现出更好的电特性,例如更好的信号完整性,即交叉耦合、电压过冲/欠冲、振铃等。这允许更好的定时窗口,这使得更快的传输频率成为可能。
转到图15,示出了由包括用于执行指令的执行单元的处理器形成的示例性计算机系统的框图,,其中互连中的一个或多个实现根据本发明的一个实施例的一个或多个特征。系统1500包括诸如处理器1502之类的组件,以根据本发明例如在本文所述的实施例中采用包括用于执行过程数据的算法的逻辑的执行单元。系统1500代表基于可从加利福尼亚州圣克拉拉的英特尔公司获得的PENTIUM IIITM、PENTIUM 4TM、XeonTM、Itanium、XScaleTM和/或StrongARMTM微处理器的处理系统,尽管也可以使用其他系统(包括具有其他微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本系统1500执行可从华盛顿州雷蒙德市的微软公司获得的WINDOWSTM操作系统的版本,但是也可以使用其他操作系统(例如,UNIX和Linux)、嵌入式软件和/或图形用户界面。因此,本发明的实施例不限于硬件电路和软件的任何特定组合。
实施例不限于计算机系统。本发明的替代实施例可以用在其他设备(例如,手持设备和嵌入式应用)中。手持设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)和手持PC。嵌入式应用程序可以包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或可以执行根据至少一个实施例的一个或多个指令的任何其他系统。
在该示出的实施例中,处理器1502包括一个或多个执行单元1508,以实现要执行至少一个指令的算法。可以在单处理器桌面或服务器系统的上下文中描述一个实施例,但是替代实施例可以包括在多处理器系统中。系统1500是“集线器”系统架构的示例。计算机系统1500包括用于处理数据信号的处理器1502。作为一个说明性示例,处理器1502包括复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集组合的处理器或者任何其他处理器设备,例如数字信号处理器。处理器1502耦合到处理器总线1510,处理器总线1510在处理器1502和系统1500中的其他组件之间传输数据信号。系统1500的元件(例如图形加速器1512、存储器控制器集线器1516、存储器1520、I/O控制器集线器1524、无线收发器1526、闪存BIOS1528、网络控制器1534、音频控制器1536、串行扩展端口1538,I/O控制器1540等)执行熟悉本领域技术人员熟知的其传统功能。
在一个实施例中,处理器1502包括1级(L1)内部高速缓冲存储器1504。取决于架构,处理器1502可以具有单个内部高速缓存或多级内部高速缓存。其他实施例包括内部和外部高速缓存的组合,这取决于特定的实现方式和需要。寄存器文件1506用于在各种寄存器中存储不同类型的数据,包括整数寄存器、浮点寄存器、向量寄存器、分组寄存器、影子寄存器、检查点寄存器、状态寄存器和指令指针寄存器。
包括用于执行整数和浮点运算的逻辑的执行单元1508也驻留在处理器1502中。在一个实施例中,处理器1502包括用于存储微代码的微代码(ucode)ROM,其在执行时将执行用于某些宏指令的算法或处理复杂场景。这里,微代码可能是可更新的,以处理处理器1502的逻辑错误/修复。对于一个实施例,执行单元1508包括用于处理封装的指令集1509的逻辑。通过将封装的指令集1509包括在通用处理器1502的指令集中,连同用于执行指令的相关电路,许多多媒体应用使用的操作可以使用通用处理器1502中的封装的数据来执行。因此,通过使用全宽度的处理器的数据总线用于对封装的数据执行操作,更高效地加速和执行许多多媒体应用。这可能消除了在处理器的数据总线上传输较小的数据单元来以一次一个数据元素的方式执行一个或多个操作的需要。
执行单元1508的替代实施例还可以用在微控制器、嵌入式处理器、图形设备、DSP和其他类型的逻辑电路中。系统1500包括存储器1520。存储器1520包括动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储设备。存储器1520存储由将由处理器1502执行的数据信号表示的指令和/或数据。
注意,本发明的任何前述特征或方面可以用在图15中所示的一个或多个互连上。例如,用于耦合处理器1502的内部单元的管芯上互连(ODI)(未示出)实现了上述本发明的一个或多个方面。或者,本发明与处理器总线1510(例如,英特尔快速路径互连(QPI)或其他已知的高性能计算互连),到存储器1520的高带宽存储器路径1518,到图形加速器1512的点对点链路(例如,快速外围组件互连(PCIe)兼容结构)、控制器集线器互连1522、I/O或用于耦合其他所示组件的其他互连(例如USB、PCI、PCIe)相关联。这些组件的一些示例包括音频控制器1536、固件集线器(闪存BIOS)1528、无线收发器1526、数据存储1524、包含用户输入和键盘接口1542的传统I/O控制器1510、诸如通用串行总线(USB)的串行扩展端口1538以及网络控制器1534。数据存储设备1524可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备或其他大容量存储设备。
尽管已经关于有限数量的实施例描述了本发明,但是本领域技术人员将意识到由此产生的许多修改和变化。所附权利要求旨在覆盖落入本发明的真实精神和范围内的所有这些修改和变化。
设计可以经历从创建到模拟到制造的各个阶段。表示设计的数据可以以多种方式表示设计。首先,如在模拟中有用,可以使用硬件描述语言或另一种功能描述语言来表示硬件。另外,可以在设计过程的某些阶段产生具有逻辑和/或晶体管栅极的电路级模型。此外,大多数设计在某个阶段达到表示硬件模型中各种设备的物理放置的数据级别。在使用传统半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上各种特征存在或不存在的数据。在设计的任何表示中,数据可以存储在任何形式的机器可读介质中。存储器或诸如盘的磁或光存储装置可以是机器可读介质,用于存储经由调制或以其他方式生成以发送这样的信息的光波或电波发送的信息。当发送指示或携带代码或设计的电载波时,在执行对电信号的复制、缓冲或重传的程度上,制作新的副本。因此,通信提供商或网络提供商可以将体现本公开的实施例的技术的诸如编码到载波中的信息的制品至少临时存储在有形的、机器可读介质上。
本文所使用的模块是指硬件、软件和/或固件的任意组合。作为示例,模块包括硬件,诸如微控制器,其与存储适于由微控制器执行的代码的非暂时介质相关联。因此,在一个实施例中,对模块的引用是指特别被配置为识别和/或执行要保持在非暂时介质上的代码的硬件。此外,在另一实施例中,模块的使用是指包括代码的非暂时介质,所述代码特别适于由微控制器执行以实施预定操作。并且,如可推断的,在又一实施例中,术语模块(在该示例中)可以是指微控制器和非暂时介质的组合。通常,图示为单独的模块界限通常变化并且可能重叠。例如,第一模块和第二模块可以共享硬件、软件、固件或其组合,同时可能保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括硬件,诸如晶体管、寄存器或其它硬件,如可编程逻辑器件。
在一个实施例中,短语“用于”或“被配置为”的使用是指布置、放在一起、制造、提供以售卖、进口和/或设计用于执行指定或确定的任务的装置、硬件、逻辑或元件。在该示例中,没有进行操作的装置或其元件仍‘被配置为’执行指定任务,前提是其被设计、耦合和/或互连来执行所述指定任务。纯粹作为说明性的示例,逻辑门可以在操作期间提供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是一种用于管理连接设备的电力的方法,该方法包括:从中央处理单元(CPU)根端口向符合快速外围组件互连(PCIe)协议的平台控制器集线器(PCH)发送第一时钟请求消息,所述第一时钟请求消息包括第一位,所述第一位被设置为断言在PCH本地的3.3伏通用输入/输出(GPIO)引脚上的时钟请求发送(CLKREQ TX断言);检测到连接的设备正在进入功率管理状态;以及从所述CPU根端口向所述PCH发送第二时钟请求消息,所述第二时钟请求消息包括第一位和第二位,所述第一位被设置为取消断言所述时钟请求发送(CLKREQ TX取消断言),所述第二位用于断言3.3伏GPIO引脚上的时钟请求协议(CLKREQ#)。
示例2可以包括示例权利要求1的主题,其中所述第二时钟请求消息的所述第二位包括用于不需要时钟请求采样的功率管理状态的断言的时钟请求无采样协议位。
示例3可以包括示例2的主题,并且还可以包括从所述CPU向所述PCH发送第三时钟请求消息,所述第三时钟请求消息包括第一位以及第二位,所述第一位被设置为断言PCH本地的3.3伏通用输入/输出(GPIO)引脚上的时钟请求发送(CLKREQ TX断言),所述第二位用于取消断言时钟请求无采样协议。
示例4可以包括示例1-3中任一个的主题,其中所述第二时钟请求消息的所述第二位包括用于使用时钟请求采样的功率管理状态的断言的时钟请求采样协议位。
示例5可以包括示例4的主题,并且还可以包括,对于取消断言的3.3伏GPIO引脚,执行所连接设备的功率管理。
示例6可以包括示例5的主题,其中,CPU接收时钟请求消息接收状态Assert_b/Deassert_b消息,其指示所述3.3伏GPIO引脚被取消断言。
示例7可以包括示例4的主题,其中,所述功率管理状态包括用于热插拔协议的检测状态。
示例8可以包括示例1-3中任一项的主题,其中所述CPU处于L1.0功率管理状态,并且其中所述第二时钟请求消息的第二位包括用于开始L1.1协议的断言位。
示例9可以包括示例8的主题,并且还可以包括:从PCH接收时钟请求消息;以及从所述L1.0状态进入L1.1状态。
示例10可以包括示例1-3中任一项的主题,并且还可以包括:确定附接的设备支持L1.2功率管理状态;其中第二时钟请求消息的第二位包括Start/End L1.2protocol位设置,所述第二时钟请求消息还包括指示Tpower_on标度的第三位和指示Power On WaitTime位的第四位。
示例11是一种计算系统,包括:中央处理单元(CPU);根端口复合体,其至少部分地在硬件中实现并且符合快速外围组件互连(PCIe)协议,所述根端口复合体位于CPU本地并连接到CPU,所述根端口复合体用于:向符合快速外围组件互连(PCIe)协议的平台控制器集线器(PCH)发送第一时钟请求消息,所述第一时钟请求消息包括被设置为断言所述PCH本地的3.3伏通用输入/输出(GPIO)引脚上的时钟请求发送(CLKREQ TX断言)的第一位;检测到连接的设备进入功率管理状态;以及向所述PCH发送第二时钟请求消息,所述第二时钟请求消息包括设置为第一位以及第二位,所述第一位被设置为取消断言时钟请求发送(CLKREQTX取消断言)而,所述第二位用于断言3.3伏GPIO引脚上的时钟请求协议(CLKREQ#)。
示例12可以包括示例11的主题,其中,所述第二时钟请求消息的第二位包括用于不需要时钟请求采样的功率管理状态的断言的时钟请求无采样协议位。
示例13可以包括示例12的主题,根端口复合体用于从CPU向PCH发送第三时钟请求消息,所述第三时钟请求消息包括第一位和第二位,所述第一位被设置为断言PCH本地的3.3伏通用输入/输出(GPIO)引脚上的时钟请求发送(CLKREQ TX断言),而所述第二位用于取消断言时钟请求无采样协议。
示例14可以包括示例11-13中任一示例的主题,其中,所述第二时钟请求消息的第二位包括用于使用时钟请求采样的功率管理状态的断言的时钟请求采样协议位。
示例15可以包括示例14的主题,所述根端口复合体,用于针对取消断言的3.3伏GPIO引脚,执行所连接设备的功率管理。
示例16可以包括示例15的主题,其中,CPU接收时钟请求消息接收状态Assert_b/Deassert_b消息,该消息指示所述3.3伏GPIO引脚被取消断言。
示例17可以包括示例14的主题,其中所述功率管理状态包括用于热插拔协议的检测状态。
示例18可以包括示例11-13中任一项的主题,其中所述CPU处于L1.0功率管理状态,并且其中所述第二时钟请求消息的第二位包括用于开始L1.1协议的断言的位。
示例19可以包括示例18的主题,根端口复合体用于从PCH接收时钟请求消息;并从L1.0状态进入L1.1状态。
示例20可以包括示例11-13中任一项的主题,根端口复合体用于确定附接的设备支持L1.2功率管理状态;其中所述第二时钟请求消息的第二位包括Start/EndL1.2Protocol位设置,而所述第二时钟请求消息还包括指示Tpower_on标度的第三位和指示Power On Wait Time位的第四位。
示例21是一种符合PCIe协议的平台控制器集线器(PCH),其通过边带网络耦合到根端口复合体,该PCH包括通用输入/输出(GPIO)电路,其包括3.3伏引脚;所述PCH包括用于以下操作的逻辑:使所述GPIO的3.3伏引脚进入断言状态;从中央处理单元(CPU)根端口接收第一时钟请求消息,所述第一时钟请求消息包括被设置为断言PCH本地的3.3伏通用输入/输出(GPIO)引脚上的时钟请求发送(CLKREQ TX断言)的第一位;接收第二时钟请求消息,所述第二时钟请求消息包括第一位和第二位,所述第一位被设置为取消断言时钟请求发送(CLKREQ TX取消断言)而所述第二位用于断言3.3伏GPIO引脚上的时钟请求协议(CLKREQ#);以及使连接的设备进入功率管理状态。
示例22可以包括示例21的主题,PCH包括用于以下操作的逻辑:将确认消息发送到所述CPU根端口;并取消断言所述3.3伏GPIO引脚。
示例23可以包括示例21的主题,PCH包括用于以下操作的逻辑:从所述CPU根端口接收从功率管理状态唤醒的指示;将时钟请求接收的状态消息发送到CPU根端口;以及抑制3.3伏GPIO引脚被断言以防止附接的设备进入功率管理状态;以及向CPU根端口发送时钟请求消息,该时钟请求消息包括被设置为断言所述功率管理状态的位。
示例可以包括示例21的主题,PCH包括用于以下操作的逻辑:从CPU根端口接收指示,所述指示用于使附接的设备进入L1.1功率管理子状态;激活L1.1功率管理协议;取消断言3.3伏GPIO引脚;以及使附接的设备进入L1.1功率管理状态。
示例25可以包括示例21的主题,PCH包括用于以下操作的逻辑:从所述CPU根端口接收指示,所述指示用于使附接的设备进入L1.1功率管理子状态;激活L1.2功率管理协议;取消断言所述3.3伏GPIO引脚;以及使附接的设备进入L1.2功率管理状态。
示例26是由平台控制器集线器(PCH)执行的方法,该方法包括使GPIO的3.3伏引脚进入断言的状态;从中央处理单元(CPU)根端口接收第一时钟请求消息,第一时钟请求消息包括被设置为断言PCH本地的3.3伏通用输入/输出(GPIO)引脚上的时钟请求发送(CLKREQTX断言)的第一位;接收第二时钟请求消息,所述第二时钟请求消息包括第一位和第二位,所述第一位被设置为取消断言所述时钟请求发送(CLKREQ TX取消断言),而所述第二位用于断言3.3伏GPIO引脚上的时钟请求协议(CLKREQ#);并使连接的设备进入功率管理状态。
示例27可以包括示例26的主题,并且还可以包括向CPU根端口发送确认消息;并取消断言3.3伏GPIO引脚。
示例28可以包括示例26的主题,并且还可以包括从CPU根端口接收从功率管理状态唤醒的指示;将时钟请求接收的状态消息发送到CPU根端口;抑制3.3伏GPIO引脚被断言以防止附接的设备进入功率管理状态;并且向CPU根端口发送时钟请求消息,该时钟请求消息包括设置为取消断言功率管理状态的位。
示例29可以包括示例的主题,并且还可以包括从CPU根端口接收使附接的设备进入L1.1功率管理子状态的指示;激活L1.1功率管理协议;取消断言3.3伏GPIO引脚;并使附接的设备进入L1.1功率管理状态。
示例30可以包括示例26的主题,并且还可以包括从CPU根端口接收用于使附接的设备进入L1.1功率管理子状态的指示;激活L1.2功率管理协议;取消断言3.3伏GPIO引脚;并使附接的设备进入L1.2功率管理状态。
示例31是一种有形地体现在非暂时性计算机可读介质上的计算机程序产品,该计算机程序产品包括代码,所述代码在被执行时使得根端口进行以下操作:向符合快速外围组件互连(PCIe)协议的平台控制器集线器(PCH)发送第一时钟请求消息,所述第一时钟请求消息包括被设置为断言所述PCH本地的3.3伏通用输入/输出(GPIO)引脚上的时钟请求发送(CLKREQ TX断言)的第一位;检测到连接的设备进入功率管理状态;以及将第二时钟请求消息发送到所述PCH,所述第二时钟请求消息包括第一位以及第二位,所述第一位被设置为取消断言时钟请求发送(CLKREQ TX取消断言)而所述第二位用于断言3.3伏GPIO引脚上的时钟请求协议(CLKREQ#)。
示例32可以包括示例31的主题,其中,所述第二时钟请求消息的第二位包括用于不需要时钟请求采样的功率管理状态的断言的时钟请求无采样协议位。
示例33可以包括示例32的主题,其中,所述代码在被执行时使得根端口从CPU向PCH发送第三时钟请求消息,所述第三时钟请求消息包括第一位和第二位,所述第一位被设置为断言PCH本地的3.3伏通用输入/输出(GPIO)引脚上的时钟请求发送(CLKREQ TX断言),而所述第二位用于取消断言时钟请求无采样协议。
示例34可以包括示例31的主题,其中,所述第二时钟请求消息的第二位包括用于使用时钟请求采样的功率管理状态的断言的时钟请求采样协议位。
示例35可以包括示例34的主题,其中,代码在被执行时使得根端口用于针对取消断言的3.3伏GPIO引脚,执行所连接设备的功率管理。
示例36可以包括示例35的主题,其中根端口接收时钟请求消息接收状态Assert_b/Deassert_b消息,该消息指示所述3.3伏GPIO引脚被取消断言。
示例37可以包括示例34的主题,其中所述功率管理状态包括用于热插拔协议的检测状态。
示例38可以包括示例31的主题,其中所述CPU处于L1.0功率管理状态,并且其中所述第二时钟请求消息的第二位包括用于开始L1.1协议的断言位。
示例39可以包括示例38的主题,其中,代码在被执行时使得根端口用于从PCH接收时钟请求消息;并从L1.0状态进入L1.1状态。
示例40可以包括示例31的主题,其中,代码在被执行时使得根端口用于确定附接的设备支持L1.2功率管理状态;其中所述第二时钟请求消息的第二位包括Start/EndL1.2protocol位设置,并且所述第二时钟请求消息还包括指示Tpower_on标度的第三位和指示Power On Wait Time位的第四位。
示例41是一种有形地体现在非暂时性计算机可读介质上的计算机程序产品,该计算机程序产品包括代码,所述代码在执行时使得符合快速外围组件互连(PCIe)协议的平台控制器集线器(PCH)执行用于:使所述GPIO的3.3伏引脚进入断言的状态;从中央处理单元(CPU)根端口接收第一时钟请求消息,所述第一时钟请求消息包括被设置为断言PCH本地的3.3伏通用输入/输出(GPIO)引脚上的时钟请求发送(CLKREQ TX断言)的第一位;接收第二时钟请求消息,所述第二时钟请求消息包括第一位和第二位,所述第一位被设置为取消断言时钟请求发送(CLKREQ TX取消断言)而所述第二位用于断言3.3伏GPIO引脚上的时钟请求协议(CLKREQ#);以及使连接的设备进入功率管理状态。
示例42可以包括示例41的主题,代码在被执行时使得PCH用于将确认消息发送到所述CPU根端口;并取消断言所述3.3伏GPIO引脚。
示例43可以包括示例41的主题,代码在被执行时使得PCH用于:从所述CPU根端口接收从功率管理状态的唤醒的指示;将时钟请求接收的状态消息发送到CPU根端口;抑制3.3伏GPIO引脚被断言以防止附接的设备进入功率管理状态;以及向CPU根端口发送时钟请求消息,该时钟请求消息包括被设置为取消断言所述功率管理状态的位。
示例44可以包括示例41的主题,代码在被执行时使PCH用于从CPU根端口接收指示,所述指示用于使附接的设备进入L1.1功率管理子状态;激活L1.1功率管理协议;取消断言3.3伏GPIO引脚;并使附接的设备进入L1.1功率管理状态。
示例45可以包括示例41的主题,代码在被执行时使PCH用于从CPU根端口接收指示,所述指示用于使附接的设备进入L1.1功率管理子状态;激活L1.2功率管理协议;取消断言3.3伏GPIO引脚;并使附接的设备进入L1.2功率管理状态。
Claims (25)
1.一种用于管理连接设备的功率的方法,所述方法包括:
从中央处理单元(CPU)根端口向符合快速外围组件互连(PCIe)协议的平台控制器集线器(PCH)发送第一时钟请求消息,所述第一时钟请求消息包括第一位,所述第一位被设置为断言在所述PCH本地的3.3伏通用输入/输出(GPIO)引脚上的时钟请求发送(CLKREQ TX断言);
检测到连接的设备正在进入功率管理状态;以及
从所述CPU根端口向所述PCH发送第二时钟请求消息,所述第二时钟请求消息包括第一位和第二位,所述第一位被设置为取消断言所述时钟请求发送(CLKREQ TX取消断言),而所述第二位用于断言3.3伏GPIO引脚上的时钟请求协议(CLKREQ#)。
2.如权利要求1所述的方法,其中,所述第二时钟请求消息的所述第二位包括用于不需要时钟请求采样的功率管理状态的断言的时钟请求无采样协议位。
3.如权利要求2所述的方法,还包括:
从所述CPU向所述PCH发送第三时钟请求消息,所述第三时钟请求消息包括第一位以及第二位,所述第一位被设置为断言所述PCH本地的3.3伏通用输入/输出(GPIO)引脚上的时钟请求发送(CLKREQ TX断言)而所述第二位被设置为取消断言所述时钟请求无采样协议。
4.如权利要求1所述的方法,其中,所述第二时钟请求消息的所述第二位包括用于使用时钟请求采样的功率管理状态的断言的时钟请求采样协议位。
5.如权利要求4所述的方法,还包括:针对取消断言的3.3伏GPIO引脚,执行对连接的设备的功率管理。
6.如权利要求5所述的方法,其中,所述CPU接收指示所述3.3伏GPIO引脚被取消断言的时钟请求消息接收状态assert_b/deassert_b消息。
7.如权利要求4所述的方法,其中,所述功率管理状态包括用于热插拔协议的检测状态。
8.如权利要求1所述的方法,其中,所述CPU处于L1.0功率管理状态,并且其中,所述第二时钟请求消息的所述第二位包括用于开始L1.1协议的断言的位。
9.如权利要求8所述的方法,还包括
从所述PCH接收时钟请求消息;以及
从所述L1.0状态进入L1.1状态。
10.如权利要求1所述的方法,还包括:
确定附接的设备支持L1.2功率管理状态;
其中,所述第二时钟请求消息的所述第二位包括开始/结束L1.2协议位设置,并且所述第二时钟请求消息还包括指示Tpower_on标度的第三位和指示上电延迟位的第四位。
11.一种计算系统,包括:
中央处理单元(CPU);
根端口复合体,其至少部分地在硬件中实现并且符合快速外围组件互连(PCIe)协议,所述根端口复合体位于所述CPU本地并且连接到所述CPU,所述根端口复合体用于:
向符合快速外围组件互连(PCIe)协议的平台控制器中心(PCH)发送第一时钟请求消息,所述第一时钟请求消息包括第一位,所述第一位被设置为断言所述PCH本地的3.3伏通用输入/输出(GPIO)引脚上的时钟请求发送(CLKREQ TX断言);
检测到连接的设备正在进入功率管理状态;以及
向所述PCH发送第二时钟请求消息,所述第二时钟请求消息包括第一位和第二位,所述第一位被设置为取消断言所述时钟请求发送(CLKREQ TX取消断言),而所述第二位用于断言3.3伏GPIO引脚上的时钟请求协议(CLKREQ#)。
12.如权利要求11所述的计算系统,其中,所述第二时钟请求消息的所述第二位包括用于不需要时钟请求采样的功率管理状态的断言的时钟请求无采样协议位。
13.如权利要求12所述的计算系统,所述根端口复合体用于:
从所述CPU向所述PCH发送第三时钟请求消息,所述第三时钟请求消息包括第一位和第二位,所述第一位被设置为断言所述PCH本地的3.3伏通用输入/输出(GPIO)引脚上的时钟请求发送(CLKREQ TX断言),而所述第二位被设置为取消断言所述时钟请求无采样协议。
14.如权利要求11所述的计算系统,其中,所述第二时钟请求消息的所述第二位包括用于使用时钟请求采样的功率管理状态的断言的时钟请求采样协议位。
15.如权利要求14所述的计算系统,所述根端口复合体用于针对取消断言的3.3伏GPIO引脚,执行对连接的设备的功率管理。
16.如权利要求15所述的计算系统,其中,所述CPU接收指示所述3.3伏GPIO引脚被取消断言的时钟请求消息接收状态assert_b/deassert_b消息。
17.如权利要求14所述的计算系统,其中,所述功率管理状态包括用于热插拔协议的检测状态。
18.如权利要求11所述的计算系统,其中,所述CPU处于L1.0功率管理状态,并且其中,所述第二时钟请求消息的所述第二位包括用于开始L1.1协议的断言的位。
19.如权利要求18所述的计算系统,所述根端口复合体用于:
从所述PCH接收时钟请求消息;以及
从所述L1.0状态进入L1.1状态。
20.如权利要求11所述的计算系统,所述根端口复合体用于:
确定附接的设备支持L1.2功率管理状态;
其中,所述第二时钟请求消息的所述第二位包括开始/结束L1.2协议位设置,并且所述第二时钟请求消息还包括指示Tpower_on标度的第三位和指示上电延迟位的第四位。
21.一种符合PCIe协议的平台控制器集线器(PCH),其跨边带网络耦合到根端口复合体,所述PCH包括通用输入/输出(GPIO)电路,其包括3.3伏引脚;所述PCH用于:
使所述GPIO的3.3伏引脚进入断言的状态;
从中央处理单元(CPU)根端口接收第一时钟请求消息,所述第一时钟请求消息包括第一位,所述第一位被设置为断言所述PCH本地的3.3伏通用输入/输出(GPIO)引脚上的时钟请求发送(CLKREQ TX断言);
接收第二时钟请求消息,所述第二时钟请求消息包括第一位和第二位,所述第一位被设置为取消断言所述时钟请求发送(CLKREQ TX取消断言)而所述第二位用于断言3.3伏GPIO引脚上的时钟请求协议(CLKREQ#);以及
使连接的设备进入功率管理状态。
22.如权利要求21所述的PCH,所述PCH用于:
向所述CPU根端口发送确认消息;以及
取消断言所述3.3伏GPIO引脚。
23.如权利要求21所述的PCH,所述PCH用于:
从所述CPU根端口接收从功率管理状态唤醒的指示;
将时钟请求接收状态消息发送到所述CPU根端口;以及
抑制所述3.3伏GPIO引脚被断言以防止附接的设备进入功率管理状态;以及
向所述CPU根端口发送时钟请求消息,所述时钟请求消息包括被设置为取消断言所述功率管理状态的位。
24.如权利要求21所述的PCH,所述PCH用于:
从所述CPU根端口接收指示,所述指示用于使附接的设备进入L1.1功率管理子状态;
激活L1.1功率管理协议;
取消断言所述3.3伏GPIO引脚;以及
使所述附接的设备进入L1.1功率管理状态。
25.如权利要求21所述的PCH,所述PCH用于:
从所述CPU根端口接收指示,所述指示用于使附接的设备进入L1.1功率管理子状态;
激活L1.2功率管理协议;
取消断言所述3.3伏GPIO引脚;以及
使所述附接的设备进入L1.2功率管理状态。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/870,629 US11016549B2 (en) | 2018-01-12 | 2018-01-12 | Method, apparatus, and system for power management on a CPU die via clock request messaging protocol |
US15/870,629 | 2018-01-12 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110196771A true CN110196771A (zh) | 2019-09-03 |
Family
ID=65229573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811516731.6A Pending CN110196771A (zh) | 2018-01-12 | 2018-12-12 | 经由时钟请求消息传递协议在cpu管芯上进行功率管理的方法、装置和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11016549B2 (zh) |
CN (1) | CN110196771A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111142653A (zh) * | 2019-12-26 | 2020-05-12 | 江苏芯盛智能科技有限公司 | 一种PCIe设备低功耗控制方法、装置及电子设备 |
CN111724649A (zh) * | 2020-07-22 | 2020-09-29 | 湖南中昱智云物联科技有限公司 | 一种物联网教学实训平台的组件自动识别系统及其应用 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11132319B2 (en) * | 2018-01-12 | 2021-09-28 | Intel Corporation | Timer control for peripheral component interconnect express components implemented with thunderbolt controllers |
TWI748366B (zh) * | 2020-03-09 | 2021-12-01 | 慧榮科技股份有限公司 | 電子裝置及相關的控制方法 |
US11907035B2 (en) * | 2020-05-15 | 2024-02-20 | Intel Corporation | Sideband signaling over existing auxiliary pins of an interface |
US11543996B2 (en) * | 2020-05-20 | 2023-01-03 | Western Digital Technologies, Inc. | Systems and methods for power management in a data storage device |
JP2022134510A (ja) * | 2021-03-03 | 2022-09-15 | キヤノン株式会社 | 通信装置、通信装置の制御方法、プログラム、および記憶媒体 |
US20230324978A1 (en) * | 2022-04-06 | 2023-10-12 | Hewlett-Packard Development Company, L.P. | Power saving feature controls for add-in cards |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9791905B2 (en) * | 2011-10-28 | 2017-10-17 | Intel Corporation | Rate scalable IO interface with zero stand-by power and fast start-up |
US9563256B2 (en) * | 2013-01-04 | 2017-02-07 | Intel Corporation | Processor hiding its power-up latency with activation of a root port and quickly sending a downstream cycle |
US10176132B2 (en) | 2015-12-26 | 2019-01-08 | Intel Corporation | Configuration arbiter for multiple controllers sharing a link interface |
-
2018
- 2018-01-12 US US15/870,629 patent/US11016549B2/en active Active
- 2018-12-12 CN CN201811516731.6A patent/CN110196771A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111142653A (zh) * | 2019-12-26 | 2020-05-12 | 江苏芯盛智能科技有限公司 | 一种PCIe设备低功耗控制方法、装置及电子设备 |
CN111142653B (zh) * | 2019-12-26 | 2022-03-22 | 江苏芯盛智能科技有限公司 | 一种PCIe设备低功耗控制方法、装置及电子设备 |
CN111724649A (zh) * | 2020-07-22 | 2020-09-29 | 湖南中昱智云物联科技有限公司 | 一种物联网教学实训平台的组件自动识别系统及其应用 |
Also Published As
Publication number | Publication date |
---|---|
US11016549B2 (en) | 2021-05-25 |
US20190041936A1 (en) | 2019-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110196771A (zh) | 经由时钟请求消息传递协议在cpu管芯上进行功率管理的方法、装置和系统 | |
CN104487958B (zh) | 高性能互连物理层 | |
CN105793828B (zh) | 具有pci快速增强的系统和方法 | |
CN107077521B (zh) | 片上系统配置元数据 | |
CN109154924B (zh) | 多个上行链路端口设备 | |
CN104951281B (zh) | 用于实现动态无序处理器流水线的方法和装置 | |
CN105765544B (zh) | 多芯片封装链路 | |
JP7339223B2 (ja) | フレキシブルなオンダイファブリックインターフェイス | |
CN105793830A (zh) | 在节点之间共享存储器和i/o服务 | |
CN102934084B (zh) | 用于通过将第一核类型与第二核类型耦合来提高功率性能的装置、方法和系统 | |
CN109213706A (zh) | 用于访问作为存储器的存储设备的系统和方法 | |
CN110366842A (zh) | 可调节的重定时器缓冲器 | |
CN108701023A (zh) | 带内重定时器寄存器访问 | |
CN105378694B (zh) | 用于执行与通用串行总线(usb)装置的管理组件传输协议(mctp)通信的方法、设备和系统 | |
CN109661658A (zh) | 链路物理层接口适配器 | |
CN110036380A (zh) | 用于高速互连中低延迟的双模phy | |
KR101695328B1 (ko) | 모듈러 온-다이 코히어런트 인터커넥트 방법, 장치 및 시스템 | |
CN104932996B (zh) | 用于控制链路接口的未使用硬件的功率消耗的方法、装置和系统 | |
CN105793829A (zh) | 集成组件互连 | |
CN105718390A (zh) | 共享存储器链路中的低功率进入 | |
CN107430569A (zh) | 多芯片封装链路 | |
CN109582998A (zh) | 小巧PCIe端点的根复合体集成端点仿真 | |
CN105793715A (zh) | 互连重定时器增强 | |
CN109614256A (zh) | 现场错误恢复 | |
US20150007189A1 (en) | Service rate redistribution for credit-based arbitration |
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 |