多层低功率状态的制作方法

文档序号:20944369发布日期:2020-06-02 19:47阅读:382来源:国知局
多层低功率状态的制作方法

背景技术
:现代计算机系统通常可支持几种功率管理状态。工作系统状态通常描述其中系统完全可用且完全通电的状态。在某些情况下,诸如如果未使用一些或所有系统部件,则通过从工作状态进入较低功率系统状态来减少用于一些或所有部件的功率。附图说明从下文结合附图通过举例的方式进行的描述中可获得更详细的理解,附图中:图1是可实现本公开的一个或多个特征的示例性装置的框图;图2是图1的装置的示出了额外细节的框图;图3是示出了其中可实现本公开的一个或多个特征的示例性片上系统(soc)装置的框图;图4是示出了功率管理状态之间的示例性转换的状态图;图5是示出了基于预计延时的长空闲状态之间的示例性转换的流程图;图6是示出了基于滞后定时器的长空闲状态之间的示例性转换的流程图;图7是示出了用于在功率管理状态之间转换的示例性过程的流程图;并且图8是总结例如功率管理状态的各种进入和退出条件的图表。具体实施方式一种计算机处理装置,其包括耦合到存储器的处理器。处理器包括用于在多种功率管理状态与至少一种功率管理子状态之间转换的电路。多种功率管理状态包括第一功率管理状态、第二功率管理状态和第三功率管理状态。第二功率管理状态包括第一子状态。处理器还包括用于从第一功率管理状态确定是否满足第三功率管理状态的进入条件的电路。如果满足第三功率管理状态的进入条件,则电路进入第三功率管理状态。如果不满足第三功率管理状态的进入条件,则电路确定是否满足第一子状态的进入条件。如果确定满足第一子状态的进入条件,则电路进入第一子状态、启动第一子状态驻留定时器,并且在第一子状态驻留定时器期满之后退出第一子状态、重新进入第一功率管理状态,并且重新确定是否满足第三功率管理状态的进入条件。一种用于计算机处理装置中的功率管理的方法,其包括在多种功率管理状态与至少一种功率管理子状态之间转换。多种功率管理状态包括第一功率管理状态、第二功率管理状态和第三功率管理状态。第二功率管理状态包括第一子状态。从第一功率管理状态确定是否满足第三功率管理状态的进入条件。如果满足第三功率管理状态的进入条件,则进入第三功率管理状态。如果不满足第三功率管理状态的进入条件,则确定是否满足第一子状态的进入条件。如果确定满足第一子状态的进入条件,则进入第一子状态、启动第一子状态驻留定时器,并且在第一子状态驻留定时器期满之后退出第一子状态、重新进入第一功率管理状态,并且重新确定是否满足第三功率管理状态的进入条件。图1是可实现本公开的一个或多个特征的示例性装置100的框图。装置100可包括例如计算机、游戏装置、手持装置、机顶盒、电视、移动电话或平板计算机。装置100包括处理器102、存储器104、存储装置106、一个或多个输入装置108以及一个或多个输出装置110。装置100还可任选地包括输入驱动器112和输出驱动器114。应理解,装置100可包括图1中未示出的额外部件。在各种替代方案中,处理器102包括中央处理单元(cpu)、图形处理单元(gpu)、位于同一管芯上或多个管芯上(例如,使用多芯片模块(mcm))的cpu和gpu,或者一个或多个处理器核心,其中每个处理器核心可为cpu或gpu。在各种替代方案中,存储器104与处理器102位于同一管芯上或者与处理器102分开定位。存储器104包括易失性或非易失性存储器,例如随机存取存储器(ram)、动态ram或高速缓存。存储装置106包括固定或可移除存储装置,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入装置108包括但不限于键盘、小键盘、触摸屏、触摸板、检测器、麦克风、加速度计、陀螺仪、生物识别扫描器或网络连接(例如,用于传输和/或接收无线ieee802信号的无线局域网卡)。输出装置110包括但不限于显示器、扬声器、打印机、触觉反馈装置、一个或多个灯、天线或网络连接(例如,用于传输和/或接收无线ieee802信号的无线局域网卡)。输入驱动器112与处理器102和输入装置108通信,并且允许处理器102从输入装置108接收输入。输出驱动器114与处理器102和输出装置110通信,并且允许处理器102将输出发送到输出装置110。应注意,输入驱动器112和输出驱动器114是可选部件,并且如果输入驱动器112和输出驱动器114不存在,则装置100将以相同方式操作。输出驱动器114包括加速处理装置(“apd”)116,其耦合到显示装置118。apd接受来自处理器102的计算命令和图形渲染命令、处理那些计算和图形渲染命令并且将像素输出提供给显示装置118以供显示。如以下进一步详细描述,apd116包括一个或多个并行处理单元,所述一个或多个并行处理单元根据单指令多数据(“simd”)范例来执行计算。因此,虽然本文将各种功能描述为由apd116执行或与其结合地执行,但是在各种替代方案中,描述为由apd116执行的功能另外或替代地由具有类似能力的未由主机处理器(例如,处理器102)驱动的其他计算装置来执行,并且将图形输出提供给显示装置118。例如,预期到,根据simd范例执行处理任务的任何处理系统可执行本文描述的功能。替代地,预期到,未根据simd范例执行处理任务的计算系统执行本文描述的功能。图2是装置100的框图,示出了与在apd116上执行处理任务有关的额外细节。处理器102在系统存储器104中保持一个或多个控制逻辑模块,以供处理器102执行。控制逻辑模块包括操作系统120、内核模式驱动器122和应用程序126。这些控制逻辑模块控制处理器102和apd116的操作的各种特征。例如,操作系统120直接与硬件通信,并且为在处理器102上执行的其他软件提供与硬件的接口。内核模式驱动器122通过例如向在处理器102上执行的软件(例如,应用程序126)提供应用程序编程接口(“api”)来访问apd116的操作,以访问apd116的各种功能。内核模式驱动器122还包括即时编译器,所述即时编译器编译程序以便由处理apd116的部件(诸如以下进一步详细讨论的simd单元138)来执行。apd116执行用于选定功能的命令和程序,诸如可适用于并行处理的图形操作和非图形操作。apd116可用于执行图形管线操作,诸如像素操作、几何计算,并且基于从处理器102接收的命令将图像渲染到显示装置118。apd116还基于从处理器102接收的命令执行与图形操作不直接相关的计算处理操作,诸如与视频、物理模拟、计算流体动力学或其他任务相关的操作。apd116包括计算单元132,所述计算单元包括一个或多个simd单元138,所述simd单元应处理器102的请求来根据simd范例以并行方式执行操作。simd范例是多个处理元件共享单个程序控制流程单元和程序计数器并且因此执行相同程序但是能够利用不同数据执行所述程序的一种范例。在一个示例中,每个simd单元138包括十六个通道,其中每个通道与simd单元138中的其他通道同时执行相同的指令,但是可用不同的数据执行所述指令。如果并非所有通道都需要执行给定指令,则可通过预测来关闭通道。预测也可用于执行具有不同控制流程的程序。更具体地,对于具有条件分支或其他指令的程序,其中控制流程是基于由单个通道执行的计算,对应于当前未执行的控制流程路径以及不同控制流程路径的串行执行的通道的预测允许任意控制流程。计算单元132中的基本执行单元是工作项。每个工作项表示将要在特定通道中并行执行的程序的单个实例化。工作项可作为单个simd处理单元138上的“波前”同时执行。一个或多个波前包括在“工作组”中,所述工作组包括指定来执行相同程序的工作项的集合。可通过执行构成工作组的每个波前来执行工作组。在替代方案中,波前在单个simd单元138上顺序执行,或者在不同simd单元138上部分或完全并行执行。波前可认为是可在单个simd单元138上同时执行的最大工作项集合。因此,如果从处理器102接收的命令指示特定程序将要并行化到程序无法同时在单个simd单元138上执行的程度,则所述程序被分解成在两个或多个simd单元138上并行化或者在同一simd单元138上串行化(或根据需要并行化和串行化两者)的波前。调度器136执行与在不同计算单元132和simd单元138上调度各种波前相关的操作。由计算单元132提供的并行性适合于图形相关操作,诸如像素值计算、顶点变换和其他图形操作。因此,在一些示例中,接受来自处理器102的图形处理命令的图形管线134向计算单元132提供计算任务以便并行地执行。计算单元132还用于执行与图形不相关或不作为图形管线134的“正常”操作的一部分执行的计算任务(例如,执行以补充为图形管线134的操作而执行的处理的自定义操作)。在处理器102上执行的应用程序126或其他软件将定义这种计算任务的程序传输到apd116以供执行。图3是示出了其中实现本文所讨论的示例的一个或多个特征的示例性片上系统(soc)装置300的框图。soc装置300包括数据组构305、cpu核心复合体310、gpu320、多媒体处理单元(mpu)330、显示界面340、i/o集线器350、时钟、系统和功率管理和安全块360,以及存储器控制器370。数据组构305包括用于在soc装置300的各种部件之间提供通信互连的电路。在各种实现方式中使用任何合适的互连硬件。在一些实现方式中,从物理观点来看,数据组构305在soc装置的中心位置实现,或者分布到跨soc装置的多个集线器并且使用合适的通信介质(例如,总线)互连。从逻辑观点来看,数据组构305位于数据流的中心,并且关于不同块的空闲性的信息被集中(例如,存储)在数据组构305中。在一些实现方式中,所述信息用于确定转换到s0ix状态的适当时间。cpu核心复合体310包括一个或多个合适的cpu核心。复合体中的每个核心都包括私有高速缓存,并且复合体中的所有核心都与共享高速缓存进行通信。在一些实现方式中,soc装置300包括多个cpu核心复合体。gpu320包括任何合适的gpu或gpu硬件的组合。mpu330包括一个或多个合适的mpu,诸如音频协处理器、成像信号处理器、视频编解码器等等。显示界面340包括用于驱动一个或多个显示器的任何合适的硬件。i/o集线器350包括用于将数据组构305与i/o装置380接口连接的任何合适的硬件。在一些实现方式中,i/o装置380包括通用串行总线(usb)、外围部件互连高速(pcie)总线、非易失性存储器主机控制器接口(nvme)总线、串行高级技术附件(sata)总线、千兆位以太网(xgbe)、内部集成电路(i2c)总线、安全数字(sd)接口、通用输入/输出(gpio)连接、传感器融合i/o连接和/或任何其他合适的i/o硬件中的一个或多个。因此,在一些实现方式中,i/o集线器350包括usb主机控制器、pcie根复合体、nvme主机控制器、sata主机控制器、xgbe接口、i2c节点、sd主机、gpio控制器、传感器融合控制器和/或任何其他合适的i/o装置接口。时钟、系统和功率管理和安全块360(也称为系统管理单元(smu))包括硬件和固件,所述硬件和固件用于管理和访问系统配置以及状态寄存器和存储器、生成时钟信号、控制功率轨电压并且为soc装置300施行安全访问和策略。在一些实现方式中,使用系统管理通信网络(未示出)将安全块360与soc装置300的其他块互连。在一些实现方式中,安全块360用于例如使用来自数据组构305的信息来管理进入和退出多层s0ix状态。存储器控制器370包括用于与存储器390接口连接的任何合适的硬件。在一些实现方式中,存储器390是双重数据速率(ddr)存储器。示例性ddr存储器包括ddr3、ddr4、ddr5、lpddr4、lpddr5、gddr5、gddr6等等。在一些示例中,使用如关于图1和图2所示和所述的装置100的一些或所有部件来实现soc装置300。在一些实施方案中,使用soc装置300的一些或所有部件来实现装置100。在一些支持功率管理状态的系统中,完全开启状态称为工作状态。在符合高级配置和功率接口tm(acpi)标准的系统中,从系统角度来看,定义了各种“睡眠”或s状态,诸如s0、s1、s2、s3、s4和s5。完全开启工作状态称为s0状态。虽然s0被称为睡眠状态,但是s0是工作状态,并且系统在s0状态下未“睡眠”。术语工作状态和s0状态在本文中为了方便可互换使用,然而应注意,不管术语如何,本文讨论的原理、技术和装置适用于acpi和非acpi系统两者。在s0状态中,通常,所有子系统都被供电,并且用户可参与所有支持的系统操作,诸如执行指令。如果某些或所有子系统未运行,则除非在某些情况下否则维持s0状态会造成不必要的功率浪费。因此,在一些示例中,如果处于s0状态的系统满足某些进入条件,则它将进入多个功率管理状态中的一种,诸如休眠状态或软关闭状态(如果支持的话)。系统是否从s0状态进入给定的功率管理状态取决于某些进入条件,诸如延时容限。一般而言,处于更深的功率管理状态的系统比处于没有则深的功率管理状态的系统节省更多的能量但是花费更长的时间来恢复到工作状态或s0状态,即产生更大的延时代价。例如,如果操作系统(或者例如soc装置300或处理器102或数据组构305或安全块360)从高速外围部件互连(pcie)或i/o接口接收指示所连接的外围装置的延时容限的延时信息(例如,延时容限报告(ltr)),则将所述容限与从各种可用功率管理状态恢复为s0状态所需的延时进行比较。如果功率管理状态之一满足延时容限,则已满足功率管理状态的延时进入条件。在一些示例中,为了说明起见,假设延时容限是唯一的进入条件,并且假设已满足多于一个功率管理状态的延时容限,则系统将进入更深的功率管理状态以节省更多功率。在acpi系统中,上电暂停(pos)、cpu关闭和睡眠状态分别称为s1状态、s2状态和s3状态,并且为了方便起见,这些术语在本文中可互换使用。s3被认为是比s2更深的功率管理状态,并且以更高的延时代价为代价而节省更多功率。s2被认为是比s1更深的功率管理状态,并且以更高的延时代价为代价而节省更多功率。更深的功率管理状态也可互换地称为低功率管理状态。在acpi系统中,休眠状态和软关闭状态分别称为s4状态和s5状态,并且为了方便起见,这些术语在本文中可互换使用。s5被认为是比s4更深的功率管理状态,并且以更高的延时代价为代价而节省更多功率。在典型的s4状态中,系统将其操作系统状态和存储器内容存储到休眠文件中的非易失性存储装置。这种系统中的主存储器通常包括动态随机存取存储器(dram),其需要定期自刷新。由于存储器状态被保存到非易失性存储装置中的休眠文件,因此dram不再需要自刷新并且可断电。通常,系统的大部分在s4状态下断电,包括静态随机存取存储器(sram)。因此,进入s4状态具有降低功耗的优点。在确定是否进入s4状态时,s4状态的功耗节省与恢复系统的工作操作所需的时间(即,重新进入s0状态的时间,延时代价)相平衡,例如包括为dram和其他部件供电以及从休眠文件恢复存储器内容。在典型的s5状态中,系统不存储其操作系统和存储器状态。s5是比s4更深和更慢的状态。与s4状态一样,s5状态通过关闭dram存储器来节省功率;然而它可更快地进入状态,因为它不需要生成休眠文件。除了其他方面,这些优点通过为dram供电和重新启动用户会话两者来与恢复s0状态所需的时间(即,延时代价)相平衡。除了向功率按钮供电以允许在完全重启之后返回到s0之外,s5类似于机械关闭状态。一些系统还提供低功率空闲状态,系统可从s0状态转换到所述状态。在一些系统中,空闲状态被认为是s0状态的子状态,并且被称为内部状态或s0ix状态(以acpi的说法),并且为了方便起见,这些术语在本文中可互换使用。如同s4状态和s5状态,系统是否从s0状态进入s0ix状态取决于某些进入条件。s0ix状态可包括短空闲状态和长空闲状态。在一些系统中,短空闲状态和长空闲状态分别称为s0i1状态和s0i3状态,并且为了方便起见,这些术语在本文中可互换使用。如同s4和s5,每种s0ix状态包括各种功率管理干预。在s0i1状态下,系统保持很大程度的活动状态。关闭某些子系统或者降低电压以节省功率。例如,在s0i1状态的一些实现方式中,cpu和/或gpu核心(例如,通过一个或多个对应的电压调节器)被进行功率门控或关闭一段时间。在一些实现方式中,某些功率轨仅在s0状态下(即,在所有其他系统功率状态下例如通过一个或多个对应的电压调节器完全关闭;例如s4状态或s5)例如通过电压调节器被供电,并且统称为s0电压域。s0电压域通常一直由s0域电压调节器供电。为了节省功率,s0域电路的某些部分在某些空闲条件下在s0i1状态下被关闭,并且s0域的这些部分被称为开关区域(ono)。然而,在s0功率管理状态下,电路的某些部分没有关闭或电压降低。在电路的某些部分从未在s0状态下关闭或降低电压的情况下,这些部分被称为始终开启区域(aon)。在s0i1状态下,显示器保持打开,从而显示静态页面。在一些实现方式中,使用面板自刷新(psr)模式显示静态页面。除了显示器和数据组构之外,其他装置(诸如存储器控制器)仍保持打开。在一些实现方式中,一些或所有多媒体处理器(例如,音频协处理器、成像信号处理器、视频编解码器等)保持打开。因为大部分系统保持活动,包括主存储器dram,所以系统可进入s0i1状态并且与从s4状态和s5状态相比(例如,在一些实现方式中,为几秒到一分钟以上的数量级)从s0i1状态更快地恢复成s0状态(例如,在某些实现方式中为微秒级)。例如,在典型的处理器速度下,s0i1经常诸如在击键之间发生。例如,由于主存储器dram保持通电,所述优点与功率节省相平衡,所述功率节省不如s4状态和s5状态则显著。在s0i3状态下,系统的活动性低于s0i1状态。例如,在s0i3状态的一些实现方式中,在s0i3状态下供应将要关闭的部件的各种s0功率域电源轨在电压调节器处被门控或关闭。在一些实现方式中,门控s0功率域供电轨是在s3功率状态下在电压调节器处被门控或关闭的相同轨,电压调节器在s3状态下进行管理,并且所有s0域电源被关闭以节省管芯上功率。实质上,s0电压域在s0i3状态下关闭。s0域功率轨用于满足soc中的各种块和/或域(“ip”)的供电需求,并且示例包括vddcr_soc、vddp、vdd18和vdd33轨。例如,在一些实现方式中,vddcr_soc为所有主要的非cpu和/或非gpu系统ip供电,所述供电轨提供固定或可变的供电电压电平以支持cpu、gpu和多媒体处理器功能以及数据传输带宽和活动。在一些实现方式中,vddp是固定电压轨,其提供限定的数字电压以支持需要固定电压供应的ip。vdd18是1.8v电压供应,并且vdd33是3.3v电压供应。不同的i/o应用和规格需要vdd18和vdd33。本文使用vddcr_soc作为示例,以用于描述各种状态的功率门控或降低或频率降低。然而,在各种实现方式中,其他轨或名称也是可能的。关闭各种s0域电源电压调节器以在s0i3状态下节省管芯外功率。存储在由这些电源供电的存储器(例如,sram)中的信息被存储(即“备份”)到其他存储器,诸如主存储器(例如dram)或后备存储库。在一些实现方式中,通用串行总线(usb)在s0i3状态下不主动传输数据并且进入暂停模式。感测usb总线以检测信号来从暂停模式唤醒需要比用于数据传输慢得多的时钟;因此,可关闭提供给usb的时钟信号,从而使usb依赖于其自己的较慢时钟。此外,可关闭或“门控”在s0i3状态下为将要关闭的部件供电的系统的各种其他电压域。由于在s0i3状态下的系统活动少于在s0i1状态下,因此系统使用的功率少于s0i1状态。然而,所述优点被抵消,因为系统无法快速地从s0i3恢复成s0状态,例如由于使断电的功率域回到工作电压从而将备份的信息恢复到其原始存储器(例如,sram)并且重新启动usb数据传输时钟所需的时间。在一些实现方式中,将备份信息恢复到其原始存储器需要os、bios、驱动程序、固件等的参与,从而导致所需时间。为了从s0i1状态进入s0i3状态以产生净功率节省,系统将需要保持在s0i3状态中足够的长时间,以抵消实现从s0i1状态进入s0i3状态以及从s0i3状态返回到s0i1状态或s0状态所涉及的各个步骤所需的功率。系统将需要保持在s0i3状态以产生功率节省期间的最小时间被称为s0i3状态的驻留要求,并且在一些实现方式中是关于s0i1的s0i3状态的进入条件。一些系统还提供另一种形式的长空闲功率管理状态,系统可从s0状态转换到所述状态。这种额外的长空闲功率管理状态在acpi用语中被称为s0i2状态,并且为了方便起见,这些术语可互换使用。在s0i2状态中,可减小诸如s0域电源(例如,vddcr_soc)的各种供电轨的电压,以节省管芯上功率。还减少各种电压调节器以节省管芯外功率。与s0i3状态相反,在这些电压被关闭的情况下,在s0i2中,它们被降低到保持数据状态信息的水平;即,存储在由这些电源供电的存储器(例如,sram)中的信息被保持并且不需要备份。在一些示例中,所述水平被称为保持电压或保持电平。在保持电平下,存储器具有足够的功率来保持存储的信息,但是没有足够的功率来对信息执行正常操作。由于在s0i2状态下系统活动多于在s0i3状态下,因此系统在s0i2状态下使用的功率多于s0i3状态。然而,由于s0i2状态下的系统活动少于s0i1状态,因此系统在s0i2状态下使用的功率少于s0i1状态。例如,由于将调节电压从保持电平上升到正常操作电平所需的时间,系统无法像从s0i1状态那样快速地从s0i2状态恢复成s0状态。因为(除了其他原因之外)系统不需要恢复备份信息或者重新打开s0电压供应,所以处于s0i2状态的系统与从s0i3状态相比需要更少的时间来恢复s0状态。为了从s0i1状态(或另一个状态)进入s0i2状态以产生净功率节省,系统将需要保持在s0i2状态中足够的长时间,以抵消实现从s0i1状态进入s0i2状态以及从s0i2状态返回到s0i1状态所涉及的各个步骤所需的功率。系统将需要保持在s0i2状态以产生功率节省期间的最小时间被称为s0i2状态的驻留要求,并且在一些实现方式中是s0i2状态的进入条件。在一些实现方式中,分层方法应用于功率管理状态处理。在一些示例中,对s0i2的分层方法包括s0i1状态与s0i3状态之间的多于一个子状态。在一些示例中,此类子状态在acpi用语中被称为s0i2.x子状态,并且为了方便起见,这些术语可互换使用。在一些情况下,以这种方式(例如,使用子状态)将低功率状态划分为层具有改善或优化功率节省和恢复时间的优点。如同s0i1、si03、s4和s5,每个s0i2.x子状态包括各种功率管理干预。在一些示例中,s0i2.x子状态包括彼此相似的功率管理干预,绝大部分(或仅仅)在程度上不同。在各种实现方式中,不同的s0i2.x子状态提供不同量的功率节省并且引起不同量的控制复杂性。在示例性s0i2.0子状态中,vddcr_soc从其典型操作电压降低到保持电压。在保持电压下,vddcr_soc向其相关联的存储器(例如,sram)提供足够的功率以保持所保存的信息,但是所述电压低于从sram读取或写入sram所需的电压。在所述示例中,vddcr_soc的典型工作电压被称为vs0(例如,0.7),并且对于s0i2.0子状态,它被降低到称为vs0i2.0(例如,0.6伏)的保持电压。在一些示例中,与vddcr_soc相关联的所有时钟要么被关闭要么被设置为低于称为fs0i2.0(例如,100兆赫)的某个阈值,以便减少由于切换产生的功耗。然而,用于产生参考时钟信号的锁相环路或环路(其可称为cgpll)保持有效。如在s0i2.0子状态中一样,在示例性s0i2.1子状态中,vddcr_soc从其典型操作电压降低到保持电压。如前所述,对于所述示例,vddcr_soc的典型工作电压称为vs0(例如,0.7)。然而,对于s0i2.1,vddcr_soc被降低到称为vs0i2.1(例如,0.5伏)的保持电压。当不期望读取或写入sram时,这假设vs0i2.1伏特也是与vddcr_soc(例如,sram)相关联的存储器的有效保持电压。同样在该示例中,关闭与vddcr_soc相关联的所有时钟,并且关闭产生参考时钟信号(cgpll)的锁相环路以节省额外功率。在一些实现方式中,各种管芯外时钟(诸如用于i/o的那些时钟)从cgpll切换到晶体振荡器或本地环形振荡器(ro)时钟源。从这些示例可看出,当活动时钟和数据切换功率也被削减时,s0i2.1子状态比s0i2.0子状态减少或消除更多的功耗,但是将花费更长的时间来返回到s0状态,除了其他方面这是由于从保持电压转换到sram工作电压所需的较长时间和恢复时钟所需的额外时间。在这些示例中,从电压电平的角度来看,与其他功率管理状态相比,s0i2.x子状态之间的差异主要(或者在一些示例中完全)是程度问题。例如,s0i2.0子状态和s0i2.1子状态都将vddcr_soc降低到保持电压。在所述示例中,所述差异是电压降低的程度。换句话说,s0i2.x子状态主要包括相对于供电电压相同的功率管理干预,它们仅在程度上不同,诸如保持电压的水平。从时钟的角度来看,可认为s0i2.0和s0i2.1不仅是程度不同。在示例性s0i2.0中,时钟频率被设置为fs0i2.0(例如,100兆赫或更低)。与关闭它们相反,以这种方式维持降低速率的时钟允许在一些实现方式中在s0域中发生唤醒事件。s0i2.0中的这种s0域唤醒源的示例是pcie带内唤醒。在pcie带内唤醒中,pcie端点(ep)或根能够模仿由于常规pcie信令引起的唤醒。然而,在s0i2.1中,所有时钟都被关闭。因此,在一些实现方式中,在s0域中不可能进行任何操作(例如,唤醒事件)。在一些实现方式中,使用在s0i2.1子状态期间保持供电的s5域电路来处理s0i2.1子状态中的唤醒事件(并且仅在低于s5的状态期间关闭)。以这种方式提供分层的s0i2.x子状态还提供了允许更精细地校准功率管理状态的可能优点。例如,在一些实现方式中,具有更多数量的s0i2.x子状态(例如,s0i2.2、s0i2.3等)的系统能够支持sram保持电压的更精细差异,并且因此支持延时代价。在一个这种示例中,每个更深的子状态具有在对于sram保持有效的范围内额外降低50或100毫伏的保持电压。原则上,s0i2.x子状态的数量是任意的。然而,越来越多的s0i2.x子状态在复杂性与功耗节省之间产生了增加的折衷。图4是示出了示例性功率管理状态与子状态之间的示例性状态转换400的状态图。从工作s0状态405可能转换到s4状态430、s5状态435或者转换到s0i1子状态410。如本文进一步讨论,进行哪种转换取决于每种状态或子状态的进入条件和驻留要求。从s0i1子状态410,可能转换到s0i2.0或s0i2.1子状态,这也取决于进入条件和驻留要求。对低功率系统状态还是子状态发生状态转换取决于各种进入条件和驻留要求。通常,进入条件和驻留要求的目的是确定状态或子状态是否将满足返回到工作s0状态的延时目标,并且适当地平衡状态或子状态的延时代价与所述状态或子状态的预期功率节省。例如,在一些实现方式中,进入条件用于确定是否从s0i1状态进入s0i2.0子状态或s0i2.1子状态。如果对这两者的延时代价是不可接受的,则将不会对这些子状态进行状态转换。如果s0i2.1的延时代价是可接受的,则状态将转换到s0i2.1,因为它表示比s0i2.0更大的功率节省。更详细地,进出运行时低功率状态或子状态(例如,s0i1、s0i2.0、s0i2.1或s0i3)的转换涉及系统和功率管理单元将要采取的各种动作,并且因此这种转换需要额外的功率。“更深”的备用状态或子状态需要比不太深的状态或子状态更多数量或更多资源密集型的动作(例如,如上所述,关于各种功率管理状态)以便进入。在一些实现方式中,进入更深的备用或睡眠模式的(例如,功率和/或延时的)更高成本通过更高的驻留(即,在所述状态中剩余的时间)来证明,使得低功率模式是功率中性的。在一些实现方式中,进入和退出s0i3状态的时间和功率成本显著大于s0i2.0子状态或s0i2.1子状态。在一个示例中,进入s0i3状态以及从s0i3状态返回仅在5秒或甚至10秒或更长的驻留之后是功率中性的。因此,在示例性情况下,除非系统将保持在s0i3状态超过5秒,否则系统将从s0i1进入s0i2.x子状态(假设满足s0i2.x子状态的延时要求)。在一些实现方式中,分层低功率状态(即,s0i2.x)考虑了预计的延时,从而增加了系统在开始时将转换到最佳状态或子状态的可能性,并且降低了由于输入错误(即,不是功率中性或功率节省)状态或子状态而引起功率代价的可能性。图5是示出了基于预计延时的长空闲状态与子状态之间的示例性转换500的流程图。在步骤505中,转换500从工作状态s0开始。在系统空闲超过s0i1驻留要求的时间的条件510下,系统在步骤515中转换到s0i1状态。除非在步骤520中发生s0i1退出条件,否则系统基于预计的空闲时间来确定是否进入更深的状态或子状态。在一些实现方式中,例如基于s0i1状态中的历史空闲时间或者基于任何其他合适的基础来确定预计的空闲时间。在预计的空闲时间超过s0i3驻留要求的条件525下,系统在步骤530中进入s0i3状态,并且保持在所述状态直到满足s0i3退出条件的条件535为止,在这种情况下系统在步骤505中返回到s0状态。在预计的空闲时间超过s0i2.1驻留要求的条件540下,系统在步骤545中进入s0i2.1子状态,并且保持在所述子状态直到满足s0i2.1退出条件的条件550为止,在这种情况下系统在步骤505中返回到s0状态。在预计的空闲时间超过s0i2.0驻留要求的条件555下,系统在步骤560中进入s0i2.0子状态,并且保持在所述子状态直到满足s0i2.0退出条件的条件565为止,在这种情况下系统在步骤505中返回到s0状态。为了避免过早进入s0i3,在一些实现方式中,使用定时器来延迟s0i3进入。在一些实现方式中,定时器是滞后定时器,其用于通过在满足下一种状态的进入条件之后保持在历史状态来延迟进入下一种状态,并且测试在定时器期满之后是否仍满足进入条件。如果在定时器期满后仍满足条件(或保持满足),则状态将转换。如果在定时器期满后不再满足条件,则所述状态不转变并且定时器被重置。在一些实现方式中,如果定时器被设置为特定水平,则以正功率节省进入s0i3的成功率会增加。在一些实现方式中,在s0i3进入定时器时段期间,系统进入s0i2.x子状态以节省功率。在一些实现方式中,为了防止系统在s0i2.x子状态内循环而不进入s0i3状态,将定时器设置为唤醒源以使系统返回到s0或s1。所述方法可称为“闪烁模式”,以描述在s0i2.x子状态期间发生唤醒事件的位置,以提供最终进入s0i3状态的机会。因此,在一些实现方式中,分层低功率状态(即,s0i2.x)包括滞后定时器,以增加系统在开始时将转换到最佳状态或子状态的可能性,并且降低了由于输入错误(即,不是功率中性或功率节省)状态或子状态而引起功率代价的可能性。图6是示出了基于预计延时的长空闲状态与子状态之间的示例性转换600的流程图。在步骤605中,转换600从工作状态s0开始。在系统空闲超过s0i1驻留要求的时间的条件610下,系统在步骤615中转换到s0i1状态。除非在步骤615期间发生s0i1退出条件(在所述示例中s0i1将在步骤605处退出到s0的位置),否则系统基于进入条件和定时器的组合来确定是进入更深状态还是子状态。在满足进入s0i3状态的进入条件的条件620下,在步骤621处开始定时器(例如,滞后定时器)。在一些实施方案中,代替或者除了定时器之外,系统在进行之前等待来自操作系统的信号(例如,操作系统提示)。在此上下文中,操作系统提示指示如果满足进入条件,则系统应前进到s0i3状态。在定时器期满或者接收到操作系统提示之后,再次检查s0i3的进入条件以确定它们是否仍然满足。在仍然满足条件的条件622下,系统在步骤623中进入s0i3状态,并且保持在所述状态直到满足s0i3退出条件的条件624为止,在这种情况下系统在步骤605中返回到s0状态。在仍未满足条件的条件622下,系统返回到步骤610。在不满足进入s0i3状态的进入条件的条件620下,确定是否满足进入s0i2.1子状态的条件。在满足进入s0i2.1子状态的进入条件的条件630下,在步骤631处开始定时器(例如,滞后定时器)。在定时器期满或者接收到操作系统提示之后,再次检查s0i2.1的进入条件以确定它们是否仍然满足。在仍然满足条件的条件632下,系统在步骤633中进入s0i2.1子状态,并且保持在所述子状态直到满足s0i2.1退出条件的条件634为止,在这种情况下系统在步骤605中返回到s0状态。在仍未满足条件的条件632下,系统返回到步骤610。在不满足进入s0i2.1子状态的进入条件的条件630下,确定是否满足进入s0i2.0子状态的条件。在满足进入s0i2.0子状态的进入条件的条件640下,在步骤641处开始定时器(例如,滞后定时器)。在定时器期满或者接收到操作系统提示之后,再次检查s0i2.0的进入条件以确定它们是否仍然满足。在仍然满足条件的条件642下,系统在步骤643中进入s0i2.0子状态,并且保持在所述子状态直到满足s0i2.0退出条件的条件644为止,在这种情况下系统在步骤605中返回到s0状态。在仍未满足条件的条件642下,系统返回到步骤610。表1比较s0空闲状态和子状态的示例性延时代价和驻留要求:表1s0空闲状态和子状态延时功率中性驻留s0i110us10-20uss0i2.050us50-100uss0i2.1100us100-200uss0i31至500ms1秒-10秒图7是示出了用于基于进入条件在处理器的功率管理状态与子状态之间转换的另一示例性过程700的流程图。在一些实现方式中,状态转换由在处理器上执行的操作系统(os)和硬件单元来管理。在一些示例中,os管理s0状态、s4状态与s5状态之间的转换,并且(例如,系统管理单元(smu)的)硬件和固件管理s0i1状态和s0i2.x状态与子状态之间的转换。s0i1主要由硬件(例如,数据组构和/或smu)控制,s0i2.x子状态主要由固件(例如,smu)控制,并且s0i3主要由固件和软件(例如,smu和os)控制。管理状态转换的各种硬件、固件和软件部件称为状态机制或状态机。在条件705下,状态机制确定是否进入对s0i2.x子状态的进入条件710的评估例程。条件705可例如由处理器上的专用电路或者由预定义的时间间隔来触发。在一些情况下,使用专用电路而不是os条件例如具有在低于os延时阈值的时间段期间促进状态转换的优点;即,在os处理的时间段太短的情况下。此外,os在一些实现方式中不包括关于管理s0ix子状态所必需的底层硬件的规格的所有信息。在确定进入评估例程的条件705下,合适的硬件(例如,smu及其在所述示例中的相关联固件)对进入条件710进行评估。进入条件710仅是示例性的。在一些示例中,进入条件710包括其他步骤或更少步骤,或者步骤以不同顺序或同时执行。在步骤715中,确定对cpu(如果cpu单独在此供应上)或cpu和gpu(如果cpu和gpu共用同一电源)的供电是否关闭。这种情况在图中称为vddoff。在步骤720中,确定系统是否空闲并且屏幕是关闭还是处于显示静态图像的面板自刷新(psr)模式中。在步骤725中,确定pcie是处于l1链路状态还是l1子状态(例如,l1.1、l1.2等等)。在一些示例中,基于读取pcie控制器功率门控状态来获得链路状态。在步骤730中,确定是否没有数据组构客户端正在尝试访问存储器或者是否具有中断等待以及是否所有i/o处于功率管理状态。在此上下文中,数据组构是指包括cpu、gpu和多媒体部件(例如,音频、图像处理单元、视频编解码器、存储器以及包括pcie、usb、sata、nvme等等的i/o)的各种客户端的中心集线器。如果满足所有s0i2.x进入条件710,则确定是否所有pcie块都空闲。在所有pcie块都空闲的条件735下,基于当前的pcie状态确定s0ix子状态。例如,在pcie链路状态是l1的条件740下,系统状态在步骤745中转换到s0i2.0。在pcie链路状态是l1子状态的条件750下并且当延时容限报告(ltr)和其他条件允许时,系统在步骤755中转换到s0i2.1。在pcie装置状态是d3cold的条件760下或者如果链路状态是l2或l3,系统在步骤765中进入对s0i3的进入条件的评估例程。因为进入s0i3需要比进入s0i2相对更大的时间量,所以在一些实现方式中,系统确定进入s0i2.x一段时间而不是立即进入s0i3。在这种情况下,在一些实现方式中,如果满足s0i2.x的进入条件,系统在s0i2.x与s0之间多次循环,直到确定它准备好进入s0i3状态为止。在一些实现方式中,以这种方式确定系统功率管理状态和子状态的进入条件允许系统的最大(或更大或期望量的)可用功率节省,同时允许在延时容限内返回到s0状态而无过冲。以下表2示出了在所述示例中有助于从s0i2.0和s0i2.1子状态退出延时的各种部件。所述比较总体上示出了其中退出延时在不同的功率管理状态与子状态之间不同的示例性方法。以下每个步骤描述了执行来从示例性延时状态退出的示例性操作。应注意,所描述的步骤仅是示例,并且可在各种实现方式中执行不同的步骤、步骤的顺序等等。在所述示例中,对于一些步骤(例如,1、2、5),对于s0i2.0和s0i2.1,对延时贡献的时间量是相同的。在所述示例中,对于其他步骤(例如,3a、4),对于s0i2.1,延时贡献更大。例如,串联电压识别接口(svi2)电压变化在s0i2.1中花费更长的时间(即,tel3a_si2.0<tel3a_si2.1),因为s0i2.1中的电压较低,并且因此花费更长的时间才能斜升至s0电压。执行这些步骤所需的时间也仅是为了示例,并且示出了示例性功率管理状态与对应的更深功率管理状态(在所述示例中,子状态s0i2.0和s0i2.1)之间的总退出延时的相对差异。表2在示例性步骤1中,发生s0i2.x的唤醒源事件(例如,退出l1或l1.2状态的pcie端点请求,或者usb鼠标的移动,或者在usb键盘上键入等),并且所述唤醒源事件被路由到电压调节器控制器(vrc)以确定系统应退出当前的s0i2.x子状态。在示例性步骤2中,vrc将串行代码发送到外部电压调节器(vr),以开始使电压往回斜升(例如,至vs0)。示例性步骤3包括步骤3a以及步骤3b.1、3b.2和3b.3。步骤3的延时贡献是3a延时,或者步骤3b.1、3b.2和3b.3的总和,以较大者为准。在示例性步骤3a中,在vr从vrc接收到电压斜变命令之后,vr以预定义速率(例如,7mv/us)执行电压斜升,直到其达到目标电压为止。在示例性步骤3b.1中,cgpll重新锁定。在一些实现方式中,这是因为在s0i2.1子状态中时钟被关闭,并且因此需要重新锁定时钟生成pll(即,cgpll)以生成期望时钟信号。在示例性步骤3b.2中,在cgpll完全锁定并且电压稳定之前,cgpll输出应是时钟门控的,以避免在系统启动时的不正确的操作。在示例性步骤3b.3中,添加可编程延迟以避免在电压斜变完成之前计时。在一些实现方式中,这具有避免竞争条件的优点,使得时钟和电压都足够稳定以使得消耗装置正常工作。在示例性步骤4中,重新训练lpddr4phy。在所述示例中,lpddr4是双重数据速率存储器类型,phy是此存储器的物理层实现方式,lpddr4phy被按照其规格定期重新训练以便正常运行。在示例性步骤5中,系统在此残断退出到s0状态,显示器显示来自存储器缓冲区的静态信息。同时,数据组构、存储器控制器和ddr存储器处于最低功率门控状态。以这种方式,在显示静态信息的同时,可在比例相当长的时间内门控相当大量的功率。如表2中的示例所示,s0i2.1的总退出延时大于s0i2.0(即,tel_总_si2.1>tel_总_si2.0)。状态转换是否从低功率系统状态或子状态发生到s0工作状态取决于各种退出条件的状态。通常,退出条件的目的是确定系统是否以及何时应转换到s0状态。例如,s0i2.0和s0i2.1子状态具有不同的退出条件。s0i2.0是比s0i2.1更不“深”的低功率子状态,并且具有更多的唤醒源(即,触发器返回到工作状态s0)。适用于s0i2.0但不适用于s0i2.1的唤醒源将不会使系统从s0i2.1子状态返回到s0工作状态。适用于这两个s0i2.x子状态的一个示例性退出条件是pcie信号。换句话说,如果适当的硬件(在所述示例中为smu的电压调节器控制器(vrc))在系统处于子状态s0i2.0或s0i2.1时接收pcie信号,则它启动“唤醒”转换到工作状态s0。对于s0i2.0,pcie能够感测带内唤醒并且将唤醒直接发送到vrc以使电压斜升。对于s0i2.1,这种带内唤醒没有效果。因此,在s0i2.1中,pcie在一些示例中发送边带信号以唤醒系统。所述边带信号对于启动s0i2.0唤醒也是有效的。图8是概述例如状态s0i1、s0i2.0、s0i2.1、s0i3-ms、s4和s5的各种示例性进入和退出条件的图表,其还指示这些状态和子状态的退出时间。示例性进入条件包括空闲、显示开启、长空闲、显示关闭、pciel1子状态、高级配置和功率接口版本6平台扩展插件(acpi6/pep)提示以及os。空闲状态用信号通知系统在给定的时间段内已空闲(即,没有用户交互)。状态显示用信号通知显示器已打开。长空闲状态用信号通知系统已空闲长于空闲状态的一段给定时间。显示器关闭状态用信号通知显示器已关闭。pciel1子状态条件用信号通知pcie处于l1子状态。acpi6/pep提示和/或os条件用信号通知操作系统指示特定功率管理状态的适合性。示例性退出条件包括来自本地高级可编程中断控制器(lapic)定时器、融合控制集线器(fch)定时器、usb、用于s5域的通用io(gpio(s5))、用于s0域的gpio(gpio(s0))、pcie、管芯上wifi、音频协处理器语音唤醒(acp(wov))以及功率按钮的退出信号。应注意,这些进入和退出条件仅是示例性的;任何合适的进入和退出条件都可用于其他实现方式。lapic定时器是驻留在数据组构中的可编程中断控制器。lapic监控每个cpu核心。lapic包括每个cpu的定时器,所述定时器从初始值向下计数到零,并且在达到零时对其对应的cpu产生中断。在一些实现方式中,每个lapic定时器能够被编程来一次或周期性地执行此倒计时。在周期性情况下,定时器每次达到零时都会重新加载初始值。fch定时器驻留在fch中。fch定时器不由vddcr_soc供电,并且因此即使在vddcr_soc被门控或关闭的状态或子状态下也可用于唤醒系统。来自usb装置的由usb主机控制器接收的usb信号也可用于唤醒系统。gpios5是s5域的通用i/o信号,并且可定义用于某些功能。例如,在一些实现方式中,gpios5信号是可定义的,使得当检测到水平,或上升沿,或下降沿时它将用信号通知唤醒。水平和/或边沿是可配置的。gpios0是s0域的通用i/o信号。gpios0可根据gpios5的描述来定义和配置。如果检测到人声并且与关键字匹配,则acp(wov)用信号通知唤醒。针对每种功率管理状态示出的示例性退出时间分别是t退出_s0i1、t退出_s0i2.0、t退出_s0i2.1、t退出_s0i3、t退出_s4和t退出_s5。这些的示例性值是t退出_s0i1=10us、t退出_s0i2.0=50us、t退出_s0i2.1=100us、t退出_s0i3=120ms、t退出_s4=1s(例如,从休眠状态唤醒屏幕的时间),并且t退出_s5>1s(例如,使计算机通电的时间)。应理解,基于本文的公开内容,许多变化是可能的。尽管上面以特定组合描述了特征和元件,但是每个特征或元件可在没有其他特征和元件的情况下单独使用,或者在具有或不具有其他特征和元件的各种组合中使用。所提供的方法可在通用计算机、处理器或处理器核心中实现。通过示例,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(dsp)、多个微处理器、与dsp核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(asic)、现场可编程门阵列(fpga)电路、任何其他类型的集成电路(ic)和/或状态机。可通过使用处理的硬件描述语言(hdl)指令和包括网表的其他中间数据(这种指令能够存储在计算机可读介质上)的结果来配置制造过程来制造这种处理器。这种处理的结果可为掩模件,所述掩模件随后在半导体制造工艺中用于制造实现本公开的特征的处理器。本文提供的方法或流程图可在计算机程序、软件或固件中实现,所述计算机程序、软件或固件并入在非暂时性计算机可读存储介质中,以供通用计算机或处理器来执行。非暂时性计算机可读存储介质的示例包括只读存储器(rom)、随机存取存储器(ram)、寄存器、高速缓存存储器、半导体存储器装置、诸如内部硬盘和可移除磁盘的磁介质、磁光介质以及诸如cd-rom盘和数字多功能磁盘(dvd)的光学介质。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1