首页> 中国专利> 用于外围组件互连快速设备的基于带宽的功率管理

用于外围组件互连快速设备的基于带宽的功率管理

摘要

一种系统包括被配置为提供与链路的接口的接口电路以及控制器。该控制器被配置为:从一个或多个客户端接收一个或多个带宽请求;以及基于一个或多个带宽请求来确定针对链路的链路速度和链路宽度中的至少一项。

著录项

  • 公开/公告号CN113826086A

    专利类型发明专利

  • 公开/公告日2021-12-21

    原文格式PDF

  • 申请/专利权人 高通股份有限公司;

    申请/专利号CN202080036000.0

  • 申请日2020-05-14

  • 分类号G06F13/40(20060101);G06F13/42(20060101);

  • 代理机构72002 永新专利商标代理有限公司;

  • 代理人赵腾飞

  • 地址 美国加利福尼亚

  • 入库时间 2023-06-19 13:46:35

说明书

相关申请的交叉引用

本申请要求享受以下申请的优先权和权益:于2020年5月13日向美国专利商标局提交的非临时专利申请No.15/931,409;于2019年5月22日向美国专利商标局提交的临时专利申请No.62/851,633;以及于2019年5月24日向美国专利商标局提交的临时专利申请No.62/852,925,其中,这些申请的全部内容通过引用方式被并入本文中,如同在下文充分阐述其全部内容一样并且用于所有适用目的。

技术领域

概括而言,本公开内容的各方面涉及外围组件互连快速(PCIe)设备,并且更具体地,本公开内容的各方面涉及管理用于PCIe设备的功率。

背景技术

系统可以包括一个或多个处理器(例如,应用处理器)和外围设备,诸如无线调制解调器、图形处理器、显示器、传感器等。一个或多个处理器可以根据标准(即,协议),使用高速通信链路与外围设备进行通信。一种普遍的标准是外围组件互连快速(PCIe)标准,其支持能够以每秒数千兆比特的速度发送数据的高速链路。

发明内容

下文给出了一种或多种实现的简化概述,以便提供对这样的实现的基本理解。该发明内容不是对所有预期实现的详尽综述,并且既不旨在标识所有实现的关键或重要元素,也不旨在描绘任何或所有实现的范围。其唯一目的是以简化的形式给出一种或多种实现的一些概念,作为稍后给出的更加详细的描述的前序。

一个方面涉及一种系统。该系统包括:被配置为提供与链路的接口的接口电路、以及控制器。该控制器被配置为:从一个或多个客户端接收一个或多个带宽请求;以及基于一个或多个带宽请求来确定针对链路的链路速度和链路宽度中的至少一项。

另一方面涉及一种方法。该方法包括:在控制器中从客户端接收关于链路伙伴与客户端之间的链路上的通信的一个或多个带宽请求。另外,该方法包括:在控制器中基于一个或多个带宽请求来确定针对链路的链路速度和链路宽度中的至少一项;以及利用控制器,基于所确定的针对链路的链路速度和链路宽度中的至少一项来实现客户端中的速度改变。此外,该方法包括:利用控制器在链路上向链路伙伴发送速度改变请求,该请求是基于所确定的针对链路的链路速度和链路宽度中的至少一项的。

为了实现前述和相关目的,一种或多种实现包括下文中充分描述并且在权利要求中具体指出的特征。以下描述和附图详细地阐述了一种或多种实现的某些说明性方面。然而,这些方面指示可以采用各种实现的原理的各种方式中的仅一些方式,并且所描述的实现旨在包括所有这样的方面以及它们的等效物。

附图说明

图1示出了根据本公开内容的某些方面的耦合到端点设备的根复合体的示例。

图2示出了根据本公开内容的各方面的包括主机系统和端点设备系统的系统的示例。

图3示出了根据本公开内容的某些方面的链路的示例性实现。

图4是示出根据本公开内容的某些方面的基于带宽的功率管理方法的示例的呼叫流程图。

图5是示出根据本公开内容的某些方面的基于带宽的功率管理方法的另一示例的呼叫流程图。

图6A示出了根据本公开内容的某些方面的将带宽要求映射到链路速度的查找表的示例。

图6B示出了根据本公开内容的某些方面的将带宽要求映射到链路宽度的查找表的示例。

图6C示出了根据本公开内容的某些方面的将带宽要求映射到链路速度和链路宽度的查找表的示例。

图7是示出根据本公开内容的某些方面的基于带宽的功率管理方法的又一示例的呼叫流程图。

图8是示出根据本公开内容的某些方面的基于带宽的功率管理方法的再一示例的呼叫流程图。

图9示出了根据本公开内容的各方面的用于基于带宽的功率管理的另外的示例性方法的流程图。

具体实施方式

下文结合附图阐述的详细描述旨在作为各种配置的描述,而并非旨在表示可以在其中实施本文所描述的概念的仅有配置。为了提供对各个概念的透彻理解,详细描述包括特定细节。然而,对于本领域技术人员将显而易见的是,可以在没有这些特定细节的情况下实施这些概念。在一些实例中,以框图形式示出了公知的结构和组件,以便避免模糊这样的概念。

本公开内容的各方面提供了使用链路速度和/或链路宽度缩放的基于带宽的PCIe功率管理。下面使用PCIe GEN1到GEN 4的示例讨论了本公开内容的各方面。然而,将明白的是,本公开内容不限于这些示例,并且本公开内容可以用于为PCIe标准的未来实现(例如,GEN5及更高版本)提供功率管理。此外,应注意的是,虽然本公开内容是关于PCIe链路讨论的,但是本领域技术人员将明白,所公开的系统和方法的根本原理可以在其它类型的PCI链路中实现,或者甚至在主机和客户端设备之间的其它物理串行互连中实现。

图1示出了支持PCIe GEN3的系统110的特定示例,该系统110包括PCIe根复合体115(例如,在主机设备上)和PCIe端点设备120,其中根复合体115和端点设备120通过以GEN3速度(能够达到8.0GT/s理论速度)运行的PCIe链路125耦合。在该示例中,链路125以GEN3速度操作,即使在链路125正被可以由GEN2速度或更低速度充分服务的低带宽应用未充分利用时也是如此。与GEN2或更低的速度相比,以GEN3速度操作链路125可能需要将PCIe核心和物理层(PHY)的电源电压保持在较高的电压电平(也被称为电压转角)。因此,对于低带宽应用,将链路125保持在GEN3速度将保持高于所需的电源电压(例如,如框130所示,较高转角处的输入电压130),这将导致更多泄漏和更快的电池耗尽。

当前在PCIe规范中规定的用于管理功率的方法是活动状态功率管理(ASPM),其采用用以基于在根复合体和端点PCIe设备之间的PCIe链路上检测到的链路活动来降低功率的方法。在该方法中,当正在PCIe链路上传输数据时,链路在L0功率状态(即,链路操作状态)下操作。当链路空闲时(例如,在数据突发之间的短时间间隔内),链路可以从L0状态转到较低功率状态(例如,L0s→L1→L1.1/L1.2),以降低功耗。在该示例中,L0s是针对状态L0的低功耗待机,并且L1子状态是针对PCIe链路的最低可能活动低功耗状态。即使该方法降低了在链路级别的功耗,但是该方法不会改变PCIe设备的电压域。因此,当链路以GEN3速度或更高PCIe速度操作时,对于GEN3和更高速度的PCIe代,电压域将保持在较高的电压电平(转角)处。

在当前方法中,以其最大速度运行的PCIe链路即使在低吞吐量业务场景期间也以其最大速度运行。这不仅消耗PCIe控制器和PHY更多的功率,而且还要求与PCIe对接的其它系统(例如但不限于存储器子系统和系统总线接口)以较高的时钟频率运行。

为了解决这一问题,本公开内容的各方面提供了根复合体和端点设备控制器之间的协调功率管理方法,该协调功率管理方法基于一个或多个客户端的带宽要求来实现动态PCIe链路速度和/或链路宽度缩放。以这种方式,在较低带宽用例期间,可以降低PCIe链路操作的GEN速度(例如,从GEN3到GEN2/GEN1),从而允许将电压域降低到较低的电压电平(转角)(例如,用于在低于GEN2或GEN1速度的情况下良好地执行的低吞吐量应用的最低操作电平)。用于较低带宽用例的降低的电压电平(转角)降低了功耗。

通过在低吞吐量数据业务场景期间降低链路速度(例如,GEN速度)和/或链路宽度,本公开内容的各方面给予子系统缩小电压电平(例如,降低满足PCIe链路上的当前吞吐量要求的操作电平)的机会。经缩小的一个或多个电压电平降低了功耗(例如,在持续的低吞吐量业务期间或在空闲用例中减少泄漏电流)。

应注意的是,系统110可以在基于电池的消费方设备(诸如无线设备(例如,移动电话、用户设备(UE)、移动站(MS))内实现。此外,在UE的背景下,PCIe根复合体或主机设备可能是UE内的应用处理器或其它处理器,并且端点设备可以是板载集成电路或客户端,诸如无线调制解调器、片上系统(SOC)或802.11WiFi无线电设备,作为示例。

现在将参照图2讨论可以在其中实现本公开内容的各方面的示例性PCIe系统205。这之后将跟随着对根据本公开内容的各方面的基于带宽的功率管理方法的描述。

系统205包括主机系统210和PCIe端点设备系统250。主机系统210可以集成在第一芯片(例如,片上系统)上,并且端点设备系统250可以集成在第二芯片上。在该示例中,主机系统210和端点设备系统250通过PCIe链路285耦合。

主机系统210包括一个或多个主机客户端214。每个主机客户端214可以在执行软件的处理器上实现,所述软件执行本文所讨论的主机客户端214的功能。对于一个以上的主机客户端214的示例,主机客户端214可以在相同的处理器或不同的处理器上实现。主机系统210还包括主机控制器212,其可以执行在PCIe规范中规定的根复合体功能,如下文进一步讨论的。主机控制器212可以在执行软件的处理器上实现,所述软件执行本文所讨论的主机控制器212的功能。

主机系统210包括PCIe接口电路216、系统总线接口215和系统存储器240。系统总线接口215可以将一个或多个主机客户端214与主机控制器212对接,并且将一个或多个主机客户端214和主机控制器212中的每一者与PCIe接口电路216和系统存储器240对接。PCIe接口电路216向主机系统210提供到PCIe链路285的接口。就此而言,PCIe接口216被配置为在PCIe链路285上向端点设备250发送数据(例如,来自主机客户端214),并且经由PCIe链路285从端点设备250接收数据,如下文进一步讨论的。PCIe接口电路216包括PCIe控制器218、用于PCIe架构的数字PHY接口(PIPE)接口220、物理(PHY)发送(TX)块222、PHY接收(RX)块226和时钟发生器224。PIPE接口220提供PCIe控制器218与PHY TX块222和PHY RX块226之间的并行接口。PCIe控制器218(其可以用硬件来实现)可以被配置为执行在PCIe规范中规定的事务层、数据链路层和控制流功能,如下文进一步讨论的。

主机系统210还包括振荡器(例如,晶体振荡器或“XO”)230,其被配置为生成稳定的参考时钟信号232。在一个示例中,参考时钟信号232可以具有19.2MHz的频率,但不限于此频率。参考时钟信号232被输入到时钟发生器224,时钟发生器224基于参考时钟信号232来生成多个时钟信号,如下文进一步讨论的。就此而言,时钟发生器224可以包括多个锁相环(PLL),其中每个PLL通过将参考时钟信号232的频率相乘来生成多个时钟信号中的相应的时钟信号。

端点设备系统250包括一个或多个设备客户端254。每个设备客户端254可以在执行软件的处理器上实现,所述软件执行本文所讨论的设备客户端254的功能。对于一个以上的设备客户端254的示例,设备客户端254可以在相同的处理器或不同的处理器上实现。端点设备系统250还包括设备控制器252。如下文进一步讨论的,设备控制器252可以被配置为从一个或多个设备客户端接收带宽请求,并且基于带宽请求来确定是否改变链路速度(例如,GEN速度)和/或链路宽度。设备控制器252可以在执行软件的处理器上实现,所述软件执行本文所讨论的设备控制器的功能。

端点设备系统250包括PCIe接口电路260、系统总线接口256和系统存储器274。系统总线接口256可以将一个或多个设备客户端254与设备控制器252对接,并且将一个或多个设备客户端254和设备控制器252中的每一者与PCI接口电路260和系统存储器274对接。PCIe接口电路260向端点设备系统250提供到PCIe链路285的接口。就此而言,PCIe接口电路260被配置为在PCIe链路285上向主机系统210(也被称为主机设备)发送数据(例如,来自设备客户端254),并且经由PCIe链路285从主机系统210接收数据,如下文进一步讨论的。PCIe接口电路260包括PCIe控制器262、PIPE接口264、物理(PHY)发送(TX)块266、PHY接收(RX)块270和时钟发生器268。PIPE接口264提供PCIe控制器262与PHY TX块266和PHY RX块270之间的并行接口。PCIe控制器262(其可以用硬件来实现)可以被配置为执行在PCIe规范中规定的事务层、数据链路层和控制流功能,如下文进一步讨论的。

端点设备系统250还包括振荡器(例如,晶体振荡器)272,其被配置为生成用于系统存储器274的稳定的参考时钟信号273。在图2中的示例中,主机系统210处的时钟生成器224被配置为生成端点(EP)参考时钟信号287,其由PHY RX块226经由差分时钟线288转发给端点设备系统250。在端点设备系统250处,RX PHY块270接收EP参考时钟信号287,并且将EP参考时钟信号278转发给时钟发生器268。EP参考时钟信号287可以具有100MHz的频率,但不限于此频率。时钟发生器268被配置为基于EP参考时钟信号287来生成多个时钟信号,如下文进一步讨论的。就此而言,时钟发生器268可以包括多个PLL,其中每个PLL通过将EP参考时钟信号287的频率相乘来生成多个时钟信号中的相应的时钟信号。

系统205还包括耦合到电池292和/或另一电源的电源管理集成电路(PMIC)290。PMIC 290被配置为将电池292的电压转换为多个电源电压(例如,使用开关稳压器、线性稳压器或其任何组合)。在该示例中,PMIC 290生成用于振荡器230的电压242、用于PCIe控制器218的电压244以及用于PHY块222和226以及时钟发生器224的电压246。电压242、244和246可以是可编程的,其中PMIC 290被配置为根据(例如,来自主机控制器212的)指令来设置电压242、244和246的电压电平(转角)。

PMIC 290还生成用于振荡器272的电压280、用于PCIe控制器262的电压278、用于PHY块266和270以及时钟发生器268的电压276。电压280、278和276可以是可编程的,其中PMIC 290被配置为根据(例如,来自设备控制器252的)指令来设置电压280、278和276的电压电平(转角)。PMIC 290可以在一个或多个芯片上实现。尽管PMIC 290在图2中被示为一个PMIC,但是将明白的是,PMIC 290可以由两个或更多个PMIC实现。例如,PMIC 290可以包括用于生成电压242、244和246的第一PMIC和用于生成电压280、278和276的第二PMIC。在该示例中,第一PMIC和第二PMIC两者可以耦合到电池292。

在操作中,主机系统210上的PCIe接口电路216可以经由PCIe链路285将数据从一个或多个主机客户端214发送给端点设备系统250。可以根据主机控制器212在初始配置期间设置的PCIe映射,将来自一个或多个主机客户端214的数据引导到PCIe接口216。在PCIe接口216处,PCIe控制器218可以对数据执行事务层和数据链路层功能,例如对数据进行分组化、生成要与数据一起发送的纠错码等。PCIe控制器218经由PIPE接口220将经处理的数据输出到PHY TX块222。经处理的数据包括来自一个或多个主机客户端214的数据以及开销数据(例如,分组报头、纠错码等)。在一个示例中,时钟生成器224可以基于参考时钟232来生成用于GEN3的250MHz时钟234,并且将250MHz时钟234输入到PCIe控制器218以对PCIe控制器218的操作计时。在该示例中,PIPE接口220可以包括32比特并行总线,该32比特并行总线在250MHz时钟234的每个周期内并行地将32比特的数据传输到PHY TX块(这转换为大约8GT/s的传输速率)。

PHY TX块222将来自PCIe控制器218的并行数据串行化,并且利用经串行化的数据来驱动链路285。就此而言,PHY TX块222可以包括一个或多个串行器和一个或多个驱动器。时钟发生器224可以基于参考时钟信号232来生成用于一个或多个串行器的高频时钟。

在端点设备系统250处,PHY RX块270经由链路285接收经串行化的数据,并且将所接收的数据反串行化为并行数据。就此而言,PHY RX块270可以包括一个或多个接收器和一个或多个反串行化器。时钟生成器268可以基于EP参考时钟信号287来生成用于一个或多个反串行化器的高频时钟。PHY RX块270经由PIPE接口264将经反串行化的数据传输到PCIe控制器262。PCIe控制器262可以从经反串行化的数据恢复出来自一个或多个主机客户端214的数据,并且将所恢复出的数据转发给一个或多个设备客户端254。

在端点设备系统250上,PCIe接口电路260可以经由链路285将来自一个或多个设备客户端254的数据发送给主机系统250。就此而言,PCIe接口电路260处的PCIe控制器262可以对数据执行事务层和数据链路层功能,例如对数据进行分组化、生成要与数据一起发送的纠错码等。PCIe控制器262经由PIPE接口264将经处理的数据输出到PHY TX块266。经处理的数据包括来自一个或多个设备客户端254的数据以及开销数据(例如,分组报头、纠错码等)。在一个示例中,时钟生成器268可以基于EP参考时钟287来生成用于GEN3的250MHz时钟,并且将250MHz时钟输入到PCIe控制器262以对PCIe控制器262的操作计时。

PHY TX块266将来自PCIe控制器262的并行数据串行化,并且利用经串行化的数据来驱动链路285。就此而言,PHY TX块266可以包括一个或多个串行器和一个或多个驱动器。时钟生成器268可以基于EP参考时钟信号287来生成用于一个或多个串行器的高频时钟。

在主机系统210处,PHY RX块226经由链路285接收经串行化的数据,并且将所接收的数据反串行化为并行数据。就此而言,PHY RX块226可以包括一个或多个接收器和一个或多个反串行化器。时钟发生器224可以基于参考时钟信号232来生成用于一个或多个反串行化器的高频时钟。PHY RX块226经由PIPE接口220将经反串行化的数据传输到PCIe控制器218。PCIe控制器218可以从经反串行化的数据恢复出来自一个或多个设备客户端254的数据,并且将所恢复出的数据转发给一个或多个主机客户端214。

图3示出了根据本公开内容的某些方面的可以在图2的系统中使用的PCIe链路285的示例。在该示例中,链路285包括多个通道310-1到310-n,其中每个通道包括用于将来自主机系统210的数据发送给端点设备系统250的相应的第一差分线312-1到312-n、以及用于将来自端点设备系统250的数据发送给主机系统210的相应的第二差分线315-1到315-n。因此,每个通道310-1到310-n是双向的。差分线312-1到312-n以及315-1到315-n可以利用基板(例如,印刷电路板)上的金属迹线实现,其中主机系统210可以集成在安装在基板上的第一芯片上,并且端点设备集成在安装在基板上的第二芯片上。差分线312-1到312-n以及315-1到315-n也可以利用导线、电缆等实现。在该示例中,当将数据从主机系统210跨越多个通道发送给端点设备系统250时,PHY TX块222可以包括用于在通道之间分割数据的逻辑。类似地,当将数据从端点设备系统250跨越多个通道发送给主机系统210时,PHY TX块266可以包括用于在通道之间分割数据的逻辑。

基于图3中的示例,在图2中所示的PHY TX块222可以被实现为包括用于每条差分线312-1到312-n的驱动器320-1到320-n,并且在图2中所示的PHY RX块270可以被实现为包括用于每条差分线312-1到312-n的接收器340-1到340-n(例如,放大器)。每个驱动器320-1至320-n被配置为利用数据来驱动相应的差分线312-1到312-n,并且每个接收器340-1到340-n被配置为从相应的差分线312-1到312-n接收数据。此外,在图3中,PHY TX块266可以包括用于每条差分线315-1到315-n的驱动器345-1到345-n,并且PHY RX块226可以包括用于每条差分线315-1到315-n的接收器325-1到325-n(例如,放大器)。每个驱动器345-1到345-n被配置为利用数据来驱动相应的差分线315-1到315-n,并且每个接收器325-1到325-n被配置为从相应的差分线315-1到315-n接收数据。

在某些方面中,链路285的宽度是可缩放的。在这些方面中,通过控制活动的通道310-1到310-n的数量来缩放链路285的宽度。活动通道的数量越大,链路285的宽度就越宽;而活动通道的数量越小,链路285的宽度就越小。在一个示例中,主机控制器212可以通过配置PCIe接口电路216和PCI接口电路260经由链路285在其上发送和/或接收数据的通道310-1到310-n的数量来配置链路285的宽度。

在一个示例中,主机系统210可以包括电源开关电路350,其被配置为单独地控制从PMIC 290对驱动器320-1到320-n和接收器325-1到325-n的供电。就此而言,电源开关电路350可以将活动通道的驱动器和接收器耦合到电压246,并且将不活动通道的驱动器和接收器与电压246解耦。在该示例中,不活动通道的驱动器320和接收器325被断电以节省功率。因此,在该示例中,被通电的驱动器和接收器的数量随着链路285的宽度进行缩放。电源开关电路350可以被配置为基于来自主机控制器212的指令来选择性地为驱动器320-1到320-n和接收器325-1到325-n供电,其中主机控制器212指示电源开关电路350将哪些驱动器和接收器通电或断电(例如,基于当前链路宽度)。为了便于说明,在图3中未示出电源开关电路350与驱动器320-1到320-n和接收器325-1到325-n之间的单独的连接或耦合。

类似地,如图2所示的端点设备系统250可以包括电源开关电路360,其被配置为单独地控制从PMIC 290对驱动器340-1到340-n和接收器345-1到345-n的供电。就此而言,电源开关电路360可以将活动通道的驱动器和接收器耦合到电压276,并且将不活动通道的驱动器和接收器与电压276解耦。因此,在该示例中,不活动通道的驱动器和接收器被断电以节省功率。电源开关电路360可以被配置为基于来自设备控制器252的指令来选择性地为驱动器340-1到340-n和接收器345-1到345-n供电,其中,设备控制器252指示电源开关电路360将哪些驱动器和接收器通电或断电(例如,基于当前链路宽度)。为了便于说明,在图3中未示出电源开关电路360与驱动器340-1到340-n和接收器345-1到345-n之间的单独的连接或耦合。

链路285可以支持多个链路速度。例如,链路285可以支持与PCIe标准的不同代(“GEN”)相对应的多个链路速度。就此而言,下面的表1列出了针对GEN1速度、GEN2速度、GEN3速度、GEN4速度和GEN5速度的每通道每方向的示例性传输速度。

表1

表1中的示例性传输速率可以是理论传输速率。针对这些链路速度中的一个或多个链路速度的实际传输速率可能略低于在表1中示出的传输速率。传输速率也可以表达为Gbps。在该示例中,链路速度可以指代每通道每方向的传输速率。

在以上示例中,主机控制器212和设备控制器252可以协商链路速度(例如,GEN速度),并且将PCIe接口电路216和260配置为以经协商的链路速度操作(例如,根据PCIe硬件编程指南)。在该示例中,主机控制器212可以基于当前链路速度(当前GEN速度)来设置电压242、244和246中的一个或多个电压。在一个示例中,主机控制器212可以包括将每个支持的链路速度(例如,每个支持的GEN速度)映射到一个或多个相应的电压电平(转角)的表。在该示例中,主机控制器212可以指示PMIC 290根据被映射到当前链路速度(例如,当前GEN速度)的一个或多个电压电平(转角)来设置由PMIC 290提供的电压242、244和246中的一个或多个电压。用于较低链路速度的电压电平(转角)可能低于用于较高链路速度的电压电平(转角)(例如,由于针对较低链路速度的更宽松的定时要求)。主机控制器212可以直接地或通过直接与PMIC 290进行通信的另一处理器来指示PMIC 290。因此,在该示例中,主机系统210的电压电平(转角)随链路速度(例如,GEN速度)进行缩放。

类似地,设备控制器252可以基于当前链路速度(当前GEN速度)来设置电压280、278和276中的一个或多个电压。在一个示例中,设备控制器252可以包括将每个支持的链路速度(例如,每个支持的GEN速度)映射到一个或多个相应的电压电平(转角)的表。在该示例中,设备控制器252可以指示PMIC 290根据被映射到当前链路速度(例如,当前GEN速度)的一个或多个电压电平(转角)来设置由PMIC 290提供的电压276、278和280中的一个或多个电压。设备控制器252可以直接地或通过直接与PMIC 290进行通信的另一处理器来指示PMIC 290。因此,在该示例中,端点设备系统250的电压电平(转角)随链路速度(例如,GEN速度)进行缩放。

图4示出了根据本公开内容的各方面的使用链路速度缩放的示例性基于带宽的功率管理方法410的呼叫流程图。方法410还可以包括根据另外的方面的链路宽度缩放。在412处,设备控制器252(或者还有端点PCIe软件过程)从一个或多个设备客户端254(或者还有端点PCIe客户端软件过程)接收带宽请求。每个设备客户端254可以基于该客户端的带宽要求来生成相应的带宽请求。每个带宽请求可以具有任何格式。例如,每个带宽请求可以按照Mbps或另一尺度的比特每秒来指示相应的设备客户端254的带宽要求。对于其中端点设备系统250包括多个设备客户端254的示例,设备控制器252可以从多个设备客户端254接收多个带宽请求。在该示例中,设备控制器252可以聚合带宽请求(例如,聚合在带宽请求中指示的带宽要求)。

设备控制器252实现带宽解算器413,带宽解算器413可以是在控制器252或设备控制器252的某个硬件组件或其组合内执行以基于带宽请求(或者对于多个设备客户端254的情况,基于聚合带宽请求)来确定是否改变链路285的当前链路速度的算法过程。带宽解算器413可以实现决策过程414,以确定是否保证针对链路285的速度改变,并且还实行链路速度或链路宽度的缩放。过程414可以作出关于是保证速度改变(对速度的减小或增加的缩放)还是不需要改变的确定。该决策结果由框415示出,其中,如果需要改变,则将关于实行速度改变的消息(例如,416和418)发送给控制器212和设备客户端254(框415中的在该框内示出的虚线上方的一部分)。否则,框415示出当不保证速度改变时,向设备客户端254返回无速度改变消息418(即,框415中的在虚线下方的一部分)。在一个示例中,如果带宽请求(或聚合带宽请求)指示可以由较低链路速度或较低链路宽度充分服务的低带宽要求,则带宽解算器413可以确定将链路速度从当前链路速度降低到较低的链路速度(例如,从GEN3速度改变为GEN2或GEN1速度)。在另一示例中,如果带宽请求(或聚合带宽请求)指示高带宽要求,则带宽解算器413可以确定将链路速度从当前链路速度增加到较高的链路速度(例如,从GEN1或GEN2速度改变为GEN3速度)。如上所述,带宽解算器413可以用由设备控制器252执行的软件、或作为设备控制器252的一部分或与设备控制器252通信的某种硬件逻辑、或其组合来实现。下面提供带宽解算器413的示例性实现。

如果带宽解算器413确定不需要链路速度改变,则设备控制器252可以在418处向一个或多个设备客户端发送用于指示无链路速度改变的指示符。如果带宽解算器确定链路速度改变,则设备控制器252可以在416处向一个或多个设备客户端254发送用于指示链路速度改变的指示符或消息。去往设备客户端254的指示符也可以指示新的链路速度或PCIe生成。

如果带宽解算器413确定链路速度改变,则设备控制器252在420处向主机控制器212发送用于改变链路速度的速度改变请求。请求420可以指示新的链路速度。例如,如果带宽解算器确定从GEN1或GEN2速度改变为GEN3速度,则去往主机控制器212的请求可以指示GEN3速度。设备控制器252可以经由PCIe接口电路260和216以及链路285向主机控制器212发送请求。

根据另外的方面,应注意的是,在如框419处指示的选项中,带宽解算器还可以发起准备用于速度改变(包括放大)的资源(例如,系统或功率资源)。注意的是,关于框419中的过程,如果需要,系统资源或功率资源(包括但不限于稳压器或时钟源)可以针对较高链路速度改变请求被放大。功率或系统资源的这种放大可以是所有先前带宽改变请求的聚合,包括被发送给或正被发送给主机的当前请求以及链路速度改变完成的未决确认。更进一步地注意,该示例仅示出了准备用于未完成的链路速度改变请求的系统或功率资源的一种实现,但不限于此。在将速度改变请求发送给主机(如420处所示)之后,在另一可选方面中,主机控制器212可以被配置为准备用于速度改变(包括用于适应更高的链路速度改变请求的改变)的资源,如框421处所示(例如,准备系统或功率资源,包括但不限于稳压器和/或时钟源)。

另外,响应于用于改变链路速度的请求,主机控制器212可以在422处使用链路速度改变实现器来发起链路速度改变。链路速度改变实现器422可以根据PCIe规范中的PCIe硬件编程指南来处理速度改变,其可以包括针对新链路速度执行链路重新训练和重新配置PCIe接口电路216和260。链路速度改变实现器422可以用由主机控制器212执行的软件、与控制器212相关联或作为控制器212的一部分的硬件、或其组合来实现。

当链路速度改变过程完成时,主机控制器212可以在424处向设备控制器252发送指示速度改变完成的指示符。在426处,如果需要,主机控制器212基于新链路速度来改变或更新电压242、244和246中的一个或多个电压的电压电平(转角)。例如,如果新链路速度较低(例如,从GEN3速度改变为GEN2或GEN1速度),则主机控制器212可以降低电压242、244和246中的一个或多个电压的电压电平(转角)。在另一示例中,如果新链路速度较高(例如,从GEN2或GEN1速度改变为GEN3速度),则主机控制器212可以增加电压242、244和246中的一个或多个电压的电压电平(转角)。如上文所讨论的,主机控制器212可以通过指示PMIC 290基于新链路速度来设置由PMIC 290提供的电压242、244和246中的一个或多个电压的电压电平(转角),来改变电压242、244和246中的一个或多个电压的电压电平(转角)。如果用于新链路速度的电压242、244和246的电压电平与用于先前链路速度的电压电平相同,则设备控制器252可以不管这些电压电平。在426处用于新链路速度的电压缩放可以与由链路速度改变实现器422执行的链路速度改变过程集成(即,电压缩放可以是链路速度改变过程的一部分)。

在428处,响应于来自主机控制器212的速度改变完成指示,设备控制器252可以向一个或多个设备客户端254发送指示符428,该指示符428向一个或多个设备客户端254通知链路速度改变。

在430处,如果需要,设备控制器252基于新链路速度来更新电压276、278和280中的一个或多个电压的电压电平(转角)。例如,如果新链路速度较低(例如,从GEN3速度改变为GEN2或GEN1速度),则设备控制器252可以降低电压276、278和280中的一个或多个电平的电压电平(转角)。在另一示例中,如果新链路速度较高(例如,从GEN2或GEN1速度改变为GEN3速度),则设备控制器252可以增加电压276、278和280中的一个或多个电压的电压电平(角)。如上文所讨论的,设备控制器252可以通过指示PMIC 290基于新链路速度来设置由PMIC 290提供的电压276、278和280中的一个或多个电压的电压电平(转角),来改变电压276、278和280中的一个或多个电压的电压电平(转角)。如果用于新链路速度的电压276、278和280的电压电平与用于先前链路速度的电压电平相同,则设备控制器252可以不管这些电压电平。

因此,对于低带宽用例,示例性功率管理方法410降低链路速度(例如,GEN速度),这给予主机控制器212和设备控制器252缩小系统205的一个或多个电压电平(例如,降低满足链路285上的当前吞吐量要求的操作电平)的机会。经缩小的一个或多个电压电平降低了功耗(例如,在持续的低吞吐量业务期间或在空闲用例中减少泄漏电流)。

在图4所示的示例中,在端点设备侧实现带宽解算器。然而,将明白的是,本公开内容不限于该示例。例如,也可以根据某些方面在主机侧实现带宽解算器。就此而言,图5示出了根据本公开内容的各方面的呼叫流程图,该呼叫流程图示出了其中在主机侧实现带宽解算器的示例性基于带宽的功率管理方法510。

在512处,主机控制器212从一个或多个主机客户端214接收带宽请求。每个主机客户端214可以基于该客户端的带宽要求来生成相应的带宽请求。每个带宽请求可以具有任何格式(例如,按照Mbps或另一尺度的比特每秒来指示相应客户端的带宽要求)。对于其中主机系统210包括多个客户端214的示例,主机控制器212可以从多个客户端214接收多个带宽请求。在该示例中,主机控制器212可以聚合带宽请求(例如,聚合在带宽请求中指示的带宽要求)。

在514处,主机控制器212实现带宽解算器513,以基于带宽请求(或者对于多个主机客户端的情况,基于聚合带宽请求)来确定是否改变链路285的当前链路速度。例如,如果带宽请求(或聚合带宽请求)指示可以以较低链路速度充分服务的低带宽要求,则带宽解算器可以确定将链路速度从当前链路速度降低到较低的链路速度(例如,从GEN3速度改变为GEN2或GEN1速度)。在另一示例中,如果带宽请求(或聚合带宽请求)指示高带宽要求,则带宽解算器可以确定将链路速度从当前链路速度增加到较高的链路速度(例如,从GEN1或GEN2速度改变为GEN3速度)。下面提供了带宽解算器的示例性实现。带宽解算器513可以用由主机控制器212执行的软件来实现、由与主机控制器212相关联的硬件实现、或者由其某种组合实现。

如果带宽解算器513确定不需要链路速度改变,则主机控制器212可以在518处向一个或多个主机客户端发送指示无链路速度改变的指示符。如果带宽解算器确定链路速度改变,则主机控制器212可以在516处向一个或多个主机客户端214发送指示链路速度改变的指示符。该指示符还可以指示新链路速度。如果带宽解算器513确定链路速度改变,则主机控制器212可以在520处向设备控制器252发送链路速度改变请求,其向设备控制器252通知所提议的链路速度改变。该请求可以指示新链路速度。注意的是,在主机控制器212在步骤520中发送消息之后,主机控制器212可以被配置为等待来自设备控制器252的响应。响应于该请求,设备控制器252可以向主机控制器212发送确认(ACK),其指示设备控制器252准备好进行链路速度改变,如在521处所示。如果端点设备不支持新链路速度,则设备控制器524可以向主机控制器212发送否定确认(NACK),其向主机控制器212指示端点设备不支持来自主机控制器212的所提议的链路速度改变请求。如果主机控制器212从设备控制器252接收到NACK,则主机控制器212可以中止链路速度改变。

在替代方案中,还应注意,在接收到消息520之后,设备控制器252可以被配置为针对较高链路速度改变请求发起系统或功率资源(包括但不限于稳压器或时钟源(例如,PMIC290或时钟发生器268))的放大,如框540处所示。另外,在接收到ACK消息521之后,主机控制器212还可以被配置为然后“放大系统或功率资源(例如,PMIC 290或时钟发生器224),以适应较高链路速度改变请求,如框542处所示。

如果带宽解算器513确定改变链路速度,则主机控制器212可以在522处使用链路速度改变实现器来发起链路速度改变。链路速度改变实现器522可以根据PCIe规范中的PCIe硬件编程指南来处理速度改变,这可以包括针对新链路速度执行链路重新训练和重新配置PCIe接口电路216和260。链路速度改变实现器可以用由主机控制器212执行的软件来实现。

当链路速度改变过程完成时,主机控制器212可以在524处向一个或多个主机客户端214发送指示符,该指示符向一个或多个主机客户端214通知链路速度改变。主机控制器212还可以在526处向设备控制器252发送指示速度改变完成的指示符。

在528处,如果需要,主机控制器212基于新链路速度来更新电压242、244和246中的一个或多个电压的电压电平(转角)。例如,如果新链路速度较低(例如,从GEN3速度改变为GEN2或GEN1速度),则主机控制器212可以降低电压242、244和246中的一个或多个电压的电压电平(转角)。在另一示例中,如果新链路速度较高(例如,从GEN2或GEN1速度改变为GEN3速度),则主机控制器212可以增加电压242、244和246中的一个或多个电压的电压电平(转角)。如果用于新链路速度的电压242、244和246的电压电平与用于先前链路速度的电压电平相同,则主机控制器212可以不管这些电压电平。在528处针对新链路速度的电压缩放可以与由链路速度改变实现器522执行的链路速度改变过程集成(即,电压缩放可以是链路速度改变过程的一部分)。

在530处,如果需要,设备控制器252基于新链路速度来更新电压276、278和280中的一个或多个电压的电压电平(转角)。例如,如果新链路速度较低(例如,从GEN3速度改变为GEN2或GEN1速度),则设备控制器252可以降低电压276、278和280中的一个或多个电压的电压电平(转角)。在另一示例中,如果新链路速度较高(例如,从GEN2或GEN1速度改变为GEN3速度),则设备控制器252可以增加电压276、278和280中的一个或多个电压的电压电平(转角)。如果用于新链路速度的电压276、278和280的电压电平与用于先前链路速度的电压电平相同,则设备控制器252可以不管这些电压电平。

带宽解算器513可以以多种方式中的任何一种来实现,以转换来自一个或多个客户端(例如,一个或多个主机客户端、一个或多个设备客户端等)的带宽要求,并且将带宽要求转换为以下链路参数之一:仅PCIe链路速度;仅PCIe链路宽度;以及PCI链路速度和链路宽度。对于多个客户端的情况,带宽要求可以是多个客户端的带宽要求的聚合。带宽解算器还可以考虑诸如突发频率之类的额外参数。上文讨论的图4和5示出了其中带宽解算器将针对一个或多个客户端的带宽要求转换为链路速度的示例。

带宽解算器513可以以多种方式中的任何一种来实现,以将带宽要求转换为链路速度和/或链路宽度。下面讨论带宽解算器的示例性实现。然而,将明白的是,带宽解算器不限于这些示例,并且可以基于系统功率预算扩展到其它实现。

在某些方面中,带宽解算器513可以通过查找表并且使用该表、基于带宽要求确定链路速度和/或链路宽度,来将带宽要求转换为PCIe链路参数。图6A示出了用于将带宽要求(对于多个客户端的情况,为聚合带宽要求)转换为链路速度(例如,GEN速度)的查找表610的示例。在该示例中,表610包括不同的带宽(被标记为“带宽1”到“带宽m”)和用于带宽中的每个带宽的对应的链路速度(被标记为“链路速度1”到“链路速度m”)。带宽可以具有Mbps或另一种格式。因此,表610将每个带宽映射到相应的链路速度。将明白的是,两个或更多个带宽可以映射到相同的链路速度。还将明白的是,表中的每个带宽条目可以是映射到相同链路速度的带宽的范围。

表610可以被预先存储在耦合到带宽解算器的存储器中。当带宽解算器从一个或多个客户端接收到带宽要求时,带宽解算器可以通过在表610中查找映射到该带宽要求的链路速度来将该带宽要求(对于多个客户端的情况,为聚合带宽需求)转换为链路速度。例如,如果带宽要求(对于多个客户端的情况,为聚合带宽需求)对应于表610中的带宽1,则带宽解算器可以将该带宽要求转换为链路速度1。如果表610中的对应链路速度不同于当前链路速度,则设备控制器252或主机控制器212可以发起到来自表610的对应链路速度的链路速度改变,如上文所讨论的。

可以基于针对各种带宽和链路速度场景的、系统205的计算机模拟和/或系统205的功率测量来生成表610。在该示例中,基于模拟结果和/或功率测量而导致针对特定带宽的最低功率的链路速度可以被映射到表610中的带宽。因此,可以基于模拟结果和/或功率测量来填充表610,并且然后将其存储在带宽解算器可访问的存储器中。

图6B示出了用于将带宽要求(对于多个客户端的情况,为聚合带宽要求)转换为链路宽度的查找表620的示例。在该示例中,表620包括不同的带宽(被标记为“带宽1”到“带宽m”)和用于带宽中的每个带宽的对应的链路宽度(被标记为“链路宽度1”到“链路宽度m”)。因此,表620将每个带宽映射到对应的链路宽度。将明白的是,两个或更多个带宽可以映射到相同的链路宽度。还将明白的是,表中的每个带宽条目可以是映射到相同的链路宽度的带宽的范围。在一个示例中,链路宽度可以由链路285中的与链路宽度相对应的活动通道数量来指定。如上文参照图3所讨论的,链路285中的活动通道的数量越大,链路285的宽度就越宽。

在一个示例中,可以针对每个支持的链路速度生成表620,并且将其预先存储在耦合到带宽解算器的存储器中。因此,在该示例中,每个链路速度可以具有对应的表620。在该示例中,带宽解算器可以使用与当前链路速度相对应的表620。

当带宽解算器从一个或多个客户端接收到带宽要求时,带宽解算器可以通过在表620中查找映射到该带宽要求的链路宽度来将该带宽要求(对于多个客户端的情况,为聚合带宽需求)转换为链路宽度。例如,如果带宽要求(对于多个客户端的情况,为聚合带宽需求)对应于表620中的带宽1,则带宽解算器可以将该带宽要求转换为链路宽度1。如果表620中的对应链路宽度不同于当前链路宽度,则设备控制器252或主机212控制器可以发起到来自表620的对应链路宽度的链路宽度改变,如下文进一步讨论的。

可以基于针对各种带宽和链路宽度场景的、系统205的计算机模拟和/或系统205的功率测量来生成表620。在该示例中,基于模拟结果和/或功率测量而导致针对特定带宽的最低功率的链路宽度可以被映射到表620中的带宽。因此,可以基于模拟结果和/或功率测量来填充表620,并且然后将其存储在带宽解算器可访问的存储器中。

对于其中在端点设备侧实现带宽解算器的示例,如果带宽解算器确定链路宽度改变,则设备控制器252可以向主机控制器212发送链路宽度改变请求。作为响应,主机控制器212可以根据PCIe规范中的PCIe硬件编程指南来处理宽度改变,这可以包括针对新链路宽度执行链路重新训练并且重新配置PCIe接口电路216和260。当链路宽度改变完成时,主机控制器212可以通知设备控制器252。

在该示例中,如果链路宽度减小,则主机控制器212可以将PHY TX块222中的驱动器和/或PHY RX块226中的接收器(它们对应于链路285中的由于链路宽度改变而被去激活的通道)断电。如上文所讨论的,主机控制器212可以通过向电源开关电路350发送关闭所选择的驱动器和/或接收器的指令来将所选择的驱动器和/或接收器断电。换句话说,主机控制器212基于新链路宽度来设置由电源开关电路350供电的驱动器和/或接收器的数量。

类似地,设备控制器252可以将PHY TX块266中的驱动器和/或PHY RX块270中的接收器(它们对应于链路285中的由于链路宽度改变而被去激活的通道)断电。如上文所讨论的,主机控制器212可以通过向电源开关电路360发送用于关闭所选择的驱动器和/或接收器的指令来将所选择的驱动器和/或接收器断电。换句话说,设备控制器252基于新链路宽度来设置由电源开关电路360供电的驱动器和/或接收器的数量。因此,与由于链路宽度改变而被去激活的通道相关联的组件可以被断电以节省功率。

对于其中在主机侧实现带宽解算器的示例,如果带宽解算器确定链路宽度改变,则主机控制器212可以根据PCIe规范中的PCIe硬件编程指南来处理宽度改变,这可以包括针对新链路宽度执行链路重新训练并且重新配置PCIe接口电路216和260。主机控制器212还可以向设备控制器252通知链路宽度改变。

在该示例中,如果链路宽度减小,则主机控制器212可以将PHY TX块222中的驱动器和/或PHY RX块226中的接收器(它们对应于链路285中的由于链路宽度改变而被去激活的通道)断电。类似地,设备控制器252可以将PHY TX块266中的驱动器和/或PHY RX块270中的接收器(它们对应于链路285中的由于链路宽度改变而被去激活的通道)断电。

图6C示出了用于将带宽要求转换为链路速度(例如,GEN速度)和链路宽度两者的查找表630的示例。在该示例中,表630包括不同的带宽(被标记为“带宽1”到“带宽m”)以及用于带宽中的每个带宽的对应的链路速度(被标记为“链路速度1”到“链路速度m”)和链路宽度(被标记为“链路宽度1”到“链路宽度m”)。带宽可以具有Mbps或另一种格式。因此,表630将每个带宽映射到对应的链路速度和链路宽度。将明白的是,两个或更多个带宽可以映射到相同的链路速度和/或相同的链路宽度。

表630可以被预先存储在耦合到带宽解算器的存储器中。当带宽解算器从一个或多个客户端接收到带宽要求时,带宽解算器可以通过在表630中查找映射到该带宽要求的链路速度和链路宽度来将该带宽要求(对于多个客户端的情况,为聚合带宽需求)转换为链路速度和链路宽度。如果表630中的对应的链路速度不同于当前链路速度,则设备控制器252或主机控制器212可以发起到来自表630的对应的链路速度的链路速度改变,如上文所讨论的。如果表630中的对应的链路宽度不同于当前宽度速度,则设备控制器252或主机控制器212可以发起到来自表630的对应的链路宽度的链路宽度改变,如上文所讨论的。因此,链路速度可以被改变,链路宽度可以被改变,或者链路速度和链路宽度两者可以被改变。

可以基于针对各种带宽、链路速度和链路宽度场景的、系统205的计算机模拟和/或系统205的功率测量来生成表630。在该示例中,基于模拟结果和/或功率测量而导致针对特定带宽的最低功率的链路速度和链路宽度可以被映射到表630中的带宽。因此,可以基于模拟结果和/或功率测量来填充表630,并且然后将其存储在带宽解算器可访问的存储器中。

在某些方面中,功率预算可以通过改变链路参数针对各种链路配置(例如,各种链路速度和链路宽度)进行实验或模拟来准备,例如但不限于以下各项:L0功耗;L0s功耗;L1功耗;L1ss功耗;L0s进入时间;L1进入时间;L1ss进入时间;L0s退出时延;L1退出时延;以及L1S退出时延。在这些方面中,带宽解算器然后可以选择具有最低功耗的链路速度和链路宽度。

图7示出了根据本公开内容的各方面的使用链路速度缩放的示例性基于带宽的功率管理方法700的另一呼叫流程图。具体地,方法710涉及其中设备客户端254发起速度缩放并且速度改变也由设备侧控制器252与主机控制器212协作完成、处理和/或实现的场景。方法700还可以包括根据另外的方面的链路宽度缩放。

在702处,一个或多个设备客户端254(或者还有端点PCIe客户端软件过程)向设备控制器254(或者还有端点PCIe软件过程)发送带宽请求。每个设备客户端254可以基于客户端的带宽要求来生成相应的带宽请求,并且可以具有任何格式。例如,每个带宽请求可以按照Mbps或另一尺度的比特每秒来指示相应的设备客户端254的带宽要求。作为其中端点设备系统250包括多个设备客户端254的另外的示例,设备控制器252可以从多个设备客户端254接收多个带宽请求。在该示例中,设备控制器252可以聚合带宽请求(例如,聚合在带宽请求中指示的带宽要求)。

设备控制器252实现带宽解算器704,带宽解算器704可以是在设备控制器252或设备控制器252的某个硬件组件或其组合内执行以基于带宽请求(或者对于多个设备客户端254的情况,基于聚合带宽请求)来确定是否改变链路(例如,如图2所示的链路285)的当前链路速度的算法过程。带宽解算器704可以实现决策过程706以确定是否保证针对链路285的速度改变,并且还实行链路速度或链路宽度的缩放。过程706可以作出是保证速度改变(对速度的减小或增加的缩放)还是不需要改变的确定。该决策结果由框708示出,其中,如果需要改变,则可以将关于实行速度改变的消息(例如,可选的消息710和消息712)发送给主机控制器212和设备客户端254(参见例如框708中的在该框内示出的虚线上方的一部分)。否则,框708示出当不保证速度改变时,向设备客户端254返回无速度改变消息714(即,框708中的在虚线下方的一部分)。

在一个示例中,如果带宽请求(或聚合带宽请求)指示可以由较低链路速度或较低链路宽度充分服务的低带宽要求,则带宽解算器704可以确定将链路速度从当前链路速度降低到较低的链路速度(例如,从GEN3速度改变为GEN2或GEN1速度)。在另一示例中,如果带宽请求(或聚合带宽请求)指示高带宽要求,则带宽解算器704可以确定将链路速度从当前链路速度增加到较高的链路速度(例如,从GEN1或GEN2速度改变为GEN3速度)。如上所提到的,带宽解算器704可以用由设备控制器252执行的软件、或作为设备控制器252的一部分或与设备控制器252通信的某种硬件逻辑、或其组合来实现。

如果带宽解算器704确定链路速度改变,则设备控制器252可以在712处通过向一个或多个设备客户端254通知速度改变正在进行来向一个或多个设备客户端254发送指示链路速度改变的指示符或消息。去往设备客户端254的消息712也可以指示新的链路速度或PCIe生成。另外,如果带宽解算器704确定链路速度改变,则设备控制器252可以可选地向主机控制器212发送用于请求链路速度的改变的速度改变请求,如由消息710所示。请求710可以指示新的链路速度。例如,如果带宽解算器确定从GEN1或GEN2速度改变为GEN3速度,则去往主机控制器212的请求可以指示GEN3速度。设备控制器252可以经由PCIe接口电路260和216以及链路285向主机控制器212发送请求。继而,主机控制器212可以准备用于速度改变的电压(例如,电压转角),如在框716处指示的,并且然后将速度改变准备就绪消息718发送回设备控制器252。另外,可以在设备控制器252中实现用于准备用于速度改变的系统或功率资源的过程,如由框719所示。

根据另外的可选方面,应注意的是,在一个选项中,带宽解算器704还可以发起放大。也就是说,如果需要,系统资源或功率资源(包括但不限于稳压器或时钟源)可以针对较高链路速度改变请求被放大。功率或系统资源的这种放大可以是所有先前带宽改变请求的聚合,包括被发送给或正被发送给主机的当前请求以及链路速度改变完成的未决确认。

在带宽解算器704在框708处确定保证速度改变之后,可以在设备控制器252中运行设备链路速度改变实现器720,以在设备控制器252中实现用于一个或多个设备客户端254的速度改变。另外,响应于用于改变链路速度的请求,在一些方面中,设备控制器252可以通过设备速度改变实现器720来发起。设备链路速度改变实现器720可以根据PCIe规范中的PCIe硬件编程指南来处理速度改变,如在框722中所示,这可以包括针对新链路速度执行链路重新训练和重新配置PCIe接口电路216和260。设备链路速度改变实现器720可以用由设备控制器252执行的软件、与控制器252相关联或作为控制器252的一部分的硬件、或其组合来实现。

当设备速度改变过程完成时,设备控制器252可以在724处向客户端设备发送指示速度改变完成的指示符回调消息。在726处,如果需要,设备控制器252基于新设备链路速度来改变或更新电压276、278或280中的一个或多个电压的电压电平(转角)。例如,如果新设备链路速度较低(例如,从GEN3速度改变为GEN2或GEN1速度),则设备控制器252可以降低电压276、278或280中的一个或多个电压的电压电平(转角)。在另一示例中,如果新设备链路速度较高(例如,从GEN2或GEN1速度改变为GEN3速度),则设备控制器252可以增加电压276、278或280中的一个或多个电压的电压电平(转角)。如上文所讨论的,设备控制器252可以通过指示PMIC 290基于新设备链路速度来设置由PMIC 290提供的电压276、278或280中的一个或多个电压的电压电平(转角),来改变电压276、278或280中的一个或多个电压的电压电平(转角)。如果用于新设备链路速度的电压276、278或280的电压电平与用于先前设备链路速度的电压电平相同,则设备控制器252可以不管这些电压电平。在726处用于新链路速度的电压缩放可以与由设备链路速度改变实现器720执行的设备链路速度改变过程集成(即,电压缩放可以是设备链路速度改变过程的一部分)。

在728处,响应于来自主机控制器212的速度改变完成指示,设备控制器252可以向主机控制器212发送消息728,其向主机控制器212通知设备速度改变。在730处,如果需要,主机控制器212基于新链路速度来更新电压242、244或246中的一个或多个电压的电压电平(转角)。例如,如果新链路速度较低(例如,从GEN3速度改变为GEN2或GEN1速度),则主机控制器212可以降低电压242、244或246中的一个或多个电压的电压电平(转角)。在另一示例中,如果新链路速度较高(例如,从GEN2或GEN1速度改变为GEN3速度),则主机控制器212可以增加电压242、244或246中的一个或多个电压的电压电平(转角)。如上文所讨论的,主机控制器212可以通过指示PMIC 290基于新设备链路速度来设置由PMIC290提供的电压242、244或246中的一个或多个电压的电压电平(转角),来改变电压242、244或246中的一个或多个电压的电压电平(转角)。如果用于新设备链路速度的电压242、244或246的电压电平与用于先前链路速度的电压电平相同,则主机控制器212可以不管这些电压电平。

根据另一示例,图8示出了方法800的呼叫流程图,其中主机客户端可以发起带宽改变请求,并且设备控制器完成、实现或实行链路速度改变。在802处,主机控制器212从一个或多个主机客户端214接收带宽请求。每个主机客户端214可以基于主机客户端的带宽要求来生成相应的带宽请求。每个带宽请求可以具有任何格式(例如,以Mbps或另一尺度的比特每秒来指示相应客户端的带宽要求)。对于其中主机系统210包括多个客户端214的示例,主机控制器212可以从多个客户端214接收多个带宽请求。在该示例中,主机控制器212可以聚合带宽请求(例如,聚合在带宽请求中指示的带宽要求)。

主机控制器212实现带宽解算器804,以基于带宽请求(或者对于多个主机客户端的情况,基于聚合带宽请求)来确定是否改变链路285的当前链路速度,如在806处所示。例如,如果带宽请求(或聚合带宽请求)指示可以以较低链路速度充分服务的低带宽要求,则带宽解算器804可以确定将链路速度从当前链路速度降低到较低的链路速度(例如,从GEN3速度改变为GEN2或GEN1速度)。在另一示例中,如果带宽请求(或聚合带宽请求)指示高带宽要求,则带宽解算器804可以确定将链路速度从当前链路速度增加到较高的链路速度(例如,从GEN1或GEN2速度改变为GEN3速度)。下面提供带宽解算器804的示例性实现。带宽解算器804可以用由主机控制器212执行的软件实现、由与主机控制器212相关联的硬件实现、或者由其某种组合实现。

如果带宽解算器804确定不需要链路速度改变,则主机控制器212可以在518处向一个或多个主机客户端发送指示无链路速度改变的指示符。如果带宽解算器确定链路速度改变,则在810处,主机控制器212可以向一个或多个主机客户端214发送指示链路速度改变的指示符。指示符810还可以指示新链路速度。替代地,如果带宽解算器804确定不需要速度改变,则可以向主机客户端214发送消息812以指示无速度改变。

如果带宽解算器804确定链路速度改变,则主机控制器212可以可选地准备用于速度改变的系统资源(例如,准备电压转角或时钟),如在框814处所示。另外,在816处,主机控制器212可以向设备控制器252发送请求所提议的链路速度改变的链路速度改变请求。请求816可以指示新链路速度。作为响应,设备控制器252可以可选地准备用于速度改变的系统资源(例如,电压转角或时钟),如在框818中所示。另外,设备控制器可以被配置为实现设备链路速度改变实现器820。在一个方面中,该设备链路速度改变实现器820可以根据PCIe硬件编程指南来处理速度改变,如在822处所示,这可以包括针对新链路速度执行链路重新训练并且重新配置PCIe接口电路216和260。链路速度改变实现器820可以用由设备控制器252执行的软件、与设备控制器252相关联或耦合到设备控制器252的硬件、或其某种组合来实现。

当链路速度改变过程完成时,设备控制器252可以向主机控制器212发送速度改变完成消息824,以用信号通知链路速度改变的完成。继而,主机控制器212可以用信号向主机客户端214通知调用用于带宽/速度改变请求802的主机客户端延迟回调函数,以用信号通知改变已经完成,如在826处所示。

在828处,如果需要,主机控制器212基于新链路速度来更新电压242、244和246中的一个或多个电压的电压电平(转角)。例如,如果新链路速度较低(例如,从GEN3速度改变为GEN2或GEN1速度),则主机控制器212可以降低电压242、244和246中的一个或多个电压的电压电平(转角)。在另一示例中,如果新链路速度较高(例如,从GEN2或GEN1速度改变为GEN3速度),则主机控制器212可以增加电压242、244和246中的一个或多个电压的电压电平(转角)。如果用于新链路速度的电压242、244和246的电压电平与用于先前链路速度的电压电平相同,则主机控制器212可以不管这些电压电平。在828处用于新链路速度的电压缩放可以与由设备链路速度改变实现器820执行的链路速度改变过程集成(即,电压缩放可以是链路速度改变过程的一部分)。

在830处,如果需要,设备控制器252基于新链路速度来更新电压276、278和280中的一个或多个电压的电压电平(转角)。例如,如果新链路速度较低(例如,从GEN3速度改变为GEN2或GEN1速度),则设备控制器252可以降低电压276、278和280中的一个或多个电压的电压电平(转角)。在另一示例中,如果新链路速度较高(例如,从GEN2或GEN1速度改变为GEN3速度),则设备控制器252可以增加电压276、278和280中的一个或多个电压的电压电平(转角)。如果用于新链路速度的电压276、278和280的电压电平与用于先前链路速度的电压电平相同,则设备控制器252可以不管这些电压电平。

带宽解算器704或804可以以多种方式中的任何一种来实现,以转换来自一个或多个客户端(例如,一个或多个主机客户端、一个或多个设备客户端等)的带宽要求,并且将带宽要求转换为以下链路参数之一:仅PCIe链路速度;仅PCIe链路宽度;以及PCI链路速度和链路宽度。对于多个客户端的情况,带宽要求可以是多个客户端的带宽要求的聚合。带宽解算器704或804还可以考虑诸如突发频率之类的额外参数。上文讨论的图7和8示出了其中带宽解算器将针对一个或多个客户端的带宽要求转换为链路速度的示例。

图9示出了根据本公开内容的各方面的用于针对链路(诸如PCIe链路)的基于带宽的功率管理的方法900的流程图。在某些方面中,方法900实现对链路速度(或带宽)和/或链路宽度中的一项或多项的缩放,例如减少被供电的通道的数量(例如,选择性地将驱动器320或345通电或断电)。

如可以在图9中看出,方法900包括:从客户端(例如,图4和7的示例中的“设备客户端”254或图5和8的示例中的“主机客户端”214)接收关于在链路伙伴(即,客户端的链路伙伴,诸如图4中的设备控制器252或在图5中所示的主机控制器212)与客户端(例如,图4中的254或图5中的214)之间的链路上的通信的一个或多个带宽请求,如在框902中所示。框902的过程可以在一个示例中由设备控制器252实现,或者在执行图5中的过程时由主机控制器212实现。另外,框902的过程可以由在设备控制器252中运行的软件或由在设备控制器252内的或与设备控制器252耦合的硬件实现。

方法900还包括如下的过程:基于一个或多个带宽请求来确定针对链路的链路速度和链路宽度中的至少一项,如在框904中所示。这些确定可以由设备控制器252或在其中运行的软件来实现,或者替代地在与控制器252进行通信或作为其一部分的硬件中实现。在另外的方面中,框904的过程可以通过在图4中所示的带宽解算器413来实现。在另外的方面中,框904的过程可以由在图5中所示的主机控制器212或在其上运行的软件来实现,或者替代在与控制器212进行通信或作为其一部分的硬件中实现。在另外的方面中,框904的过程可以通过在图5中所示的带宽解算器513来实现。

此外,方法900包括:基于所确定的针对链路的链路速度和链路宽度中的至少一项来在客户端(或图5的示例中的主机客户端)中实现速度改变,如在框906中所示。这些过程可以由设备控制器252(或图5的示例中的主机控制器212)或在其中运行的软件来实现,或者替代地由与控制器252进行通信或作为其一部分的某个专用硬件来实现。在另外的方面中,框904的过程可以通过如图4和5所示的在控制器252或212中运行的带宽解算器413或513来实现。另外,框906的过程可以包括与主机链路速度改变实现器422或522的协调和/或通信。

最后,方法900包括:向主机(或在链路上)发送速度改变请求,该请求是基于所确定的针对链路的链路速度和链路宽度中的至少一项的,如在框908中所示。根据某些方面,该过程可以由控制器252或212来实现,以及由如图4和5所示的在控制器252或212中运行的带宽解算器413或513来实现。在一些方面中,在图5的情况下,框908中的发送可以在链路285上或通过诸如接口215之类的接口来实行。此外,应注意的是,框902、904、906和908中的任何一者中的各种过程可以包括使用如图2所示的PCIe接口216或260。

在方法900的另外的方面中,应注意的是,客户端可以包括外围组件互连快速(PCIe)端点设备控制器。此外,PCIe端点设备控制器可以包括PCIe接口电路,其被配置为经由链路向主机发送速度改变请求。在另外的方面中,PCIe控制器可以基于所确定的针对链路的链路速度和链路宽度中的至少一项来实现客户端中的速度改变。

如之前讨论的,方法900中的链路可以是外围组件互连快速(PCIe)链路。此处,应注意的是,虽然本文已经描述了PCIe,但是方法900适用于其它链路。此外,链路速度包括对应于不同PCIe代的多个不同的PCIe链路速度中的一个PCIe链路速度。

方法900中的链路还可以包括多个通道,并且链路宽度对应于多个通道中的活动的数量,如前面关于图3所讨论的。方法900还包括:使用查找表来确定针对链路的链路速度,该查找表将多个带宽中的每个带宽映射到多个链路速度中的相应链路速度。在另外的方面中,方法900可以包括:使用查找表来确定链路宽度,该查找表将多个带宽中的每个带宽映射到多个链路宽度中的相应链路宽度。在其它方面中,方法900可以利用基于传输的速度和宽度的其它算法来确定最佳链路参数(例如,链路速度)。

在其它方面中,方法900包括:通过以下操作来确定针对链路的链路速度:确定针对满足一个或多个带宽请求的多个不同的链路速度中的每个链路速度的功耗,以及确定多个不同的链路速度中的具有最低功耗的一个链路速度。另外,方法900可以包括:通过以下操作来确定针对链路的链路宽度:确定针对满足一个或多个带宽请求的多个不同的链路宽度中的每个链路宽度的功耗,以及确定多个不同的链路宽度中的具有最低功耗的一个链路宽度。

此外,方法900可以包括:向接口电路提供多个电压或时钟中的一个电压或时钟,并且控制器被配置为基于链路速度来设置针对接口电路的一个或多个电压或时钟。在又一方面中,方法900可以包括:链路包括多个通道,每个通道由多个驱动器中的相应驱动器来驱动并且耦合到被配置为选择性地为多个驱动器供电的电源开关电路;以及基于所确定的针对链路的链路宽度来设置多个驱动器中的要由电源开关电路选择性地供电的数量,以改变链路宽度。

将明白的是,本公开内容不限于上文用于描述本公开内容的各方面的示例性术语。例如,带宽也可以被称为吞吐量、数据速率或另一术语。

尽管上文使用PCIe标准的示例讨论了本公开内容的各方面,但是将明白的是,本公开内容不限于该示例,并且可以与其它标准一起使用。

上文讨论的主机客户端214、主机控制器212、设备控制器252和设备客户端254可以各自利用处理器来实现,该处理器被配置为通过执行包括用于执行本文描述的功能的代码的软件来执行所述功能。软件可以被存储在计算机可读存储介质上,诸如RAM、ROM、EEPROM、光盘和/或磁盘。

在本文中使用诸如“第一”、“第二”等命名对元素的任何引用一般不限制那些元素的数量或次序。确切而言,在本文中,使用这些命名作为一种在两个或更多个元素或一个元素的实例之间进行区分的便利方法。因此,对第一元素和第二元素的引用并不意味着仅能够使用两个元素或者第一元素必须在第二元素之前。

在本公开内容内,使用词语“示例性的”来意指“用作示例、实例或说明”。本文中被描述为“示例性的”任何实现或方面不一定被解释为比本公开内容的其它方面优选或者有优势。类似地,术语“方面”并不要求本公开内容的所有方面包括所讨论的特征、优势或操作模式。术语“耦合”在本文中用于指代两个结构之间的直接或间接电耦合或其它通信耦合。此外,术语“大约”意指在所述值的10%内。

为使本领域任何技术人员能够实现或者使用本公开内容,提供了本公开内容的先前描述。对于本领域技术人员来说,对本公开内容的各种修改将是显而易见的,并且在不脱离本公开内容的精神或范围的情况下,本文中定义的总体原理可以被应用于其它变型。因此,本公开内容不限于本文中描述的示例,而是被赋予与本文中公开的原理和新颖特征相一致的最广范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号