一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

异构处理器之间的任务转移方法与流程

2022-07-24 01:14:02 来源:中国专利 TAG:

异构处理器之间的任务转移方法
1.相关申请的交叉引用
2.本技术要求2019年12月10日提交的第16/709,404号美国非临时专利申请的权益,所述美国非临时专利申请的内容特此通过引用并入本文。


背景技术:

3.传统计算机系统依赖于操作系统级别和其他更高级别的软件决策来在系统内的不同处理器之间移动任务。这些传统解决方案就性能低效和额外功耗而言导致了大量开销。通过使用更细粒度的跟踪和决策在不同处理器之间移动任务,能优化单位功耗性能。
附图说明
4.可以从结合附图以举例的方式给出的以下描述中获得更详细的理解,在附图中:
5.图1是其中可以实现本公开的一个或多个特征的示例性装置的框图;
6.图2是图1的装置的框图,示出了另外的细节;
7.图3是描绘用于有效地为输入任务提供服务的系统的示例的框图;
8.图4是描绘用于有效地为输入任务提供服务的系统的另一示例的框图;
9.图5是描绘用于有效地为输入任务提供服务的系统的另一示例的框图;
10.图6是描绘将任务从第一处理器重新定位到第二处理器的示例方法的流程图;
11.图7是描绘将任务从第一处理器重新定位到第二处理器的另一示例方法的流程图;以及
12.图8是描绘将一个或多个任务从第一处理器重新定位到第二处理器的另一示例方法的流程图。
具体实施方式
13.如下文进一步详细描述,通过在不同处理器之间及时移动任务来实现在运行时以细粒度规模优化每瓦性能。在一个示例中,第一处理器是功率相对较低且功率效率较高的处理器,而第二处理器是功率相对较高且功率效率较低的处理器。另外或替代地,功率相对较低的处理器可以被视为功耗较低的处理器,而功率相对较高的处理器可以被视为功耗较高的处理器。在另一示例中,第一处理器和第二处理器是异构的,即中央处理单元(cpu)和图形处理单元(gpu)。通过识别适用条件并将任务从次优处理器重新定位到更优处理器,提高单位功耗量性能并增强整体处理性能。
14.在一个示例中,一种用于将计算机实现的任务从功率相对较低的处理器重新定位到功率相对较高的处理器的方法包括监视与由功率相对较低的处理器执行任务相关联的一个或多个度量。所述方法还包括将一个或多个度量中的至少一个度量与阈值进行比较。所述方法还包括选择性地将任务重新定位到功率相对较高的处理器并基于比较在功率相对较高的处理器上执行任务。
15.在另一示例中,至少一个度量包括功率相对较低的处理器的核心利用率度量。在
另一示例中,核心利用率度量包括功率较低的处理器以最大速度运行的持续时间的指示,并且阈值是持续时间阈值的指示。在功率较低的处理器以最大速度运行的持续时间的指示大于持续时间阈值的条件下,将任务重新定位到功率相对较高的处理器。
16.在另一示例中,至少一个度量包括与功率相对较低的处理器相关联的存储器利用率度量。在另一示例中,存储器利用率度量包括存储器在最大存储器性能状态下操作的持续时间的指示,并且阈值是持续时间阈值的指示。在功率较低的处理器以最大速度运行的持续时间的指示大于持续时间阈值的条件下,将任务重新定位到功率相对较高的处理器。
17.在另一示例中,一个或多个度量中的至少一个度量包括直接存储器存取(dma)数据速率。
18.在另一示例中,一种用于将计算机实现的任务从功率相对较高的处理器重新定位到功率相对较低的处理器的方法包括监视与由功率相对较高的处理器执行任务相关联的一个或多个度量。所述方法还包括将一个或多个度量中的至少一个度量与阈值进行比较,并且选择性地将任务重新定位到功率相对较低的处理器并基于所述比较在功率相对较低的处理器上执行任务。
19.在另一示例中,至少一个度量包括持续时间的指示,在所述持续时间期间使用功率相对较高的处理器的单个核心并且阈值是持续时间阈值的指示。在使用功率相对较高的处理器的单个核心的持续时间的指示小于持续时间阈值的条件下,将任务重新定位到功率相对较低的处理器。
20.在另一示例中,至少一个度量包括功率相对较高的处理器的核心利用率度量。功率相对较高的处理器的核心利用率度量包括一段时间间隔内的平均利用率,并且阈值是利用率阈值的指示。在一段时间间隔内的平均利用率低于利用率阈值的条件下,将任务重新定位到功率相对较低的处理器。
21.在另一示例中,功率相对较高的处理器的核心利用率度量包括空闲状态平均驻留,并且阈值是空闲状态阈值的指示,在空闲状态平均驻留大于空闲状态阈值的条件下将任务重新定位到功率相对较低的处理器。
22.在另一示例中,至少一个度量包括与功率相对较低的处理器相关联的存储器利用率度量,并且阈值是存储器利用率阈值。在存储器利用率度量小于存储器利用率阈值的情况下,将任务重新定位到功率相对较低的处理器。
23.在另一示例中,将任务从第一处理器重新定位到第二处理器的方法包括将第一处理器置于空闲状态或停止状态。所述方法还包括将第一处理器的架构状态保存在第一存储器位置中并且将架构状态复制到第二存储器位置。所述方法还包括将中断重新定向到第二处理器并由第二处理器从第二存储器位置恢复架构状态。所述方法还包括由第二处理器提取中断服务例程(isr)地址;由第二处理器使用isr地址服务isr;以及在第一处理器保持在空闲状态或停止状态时由第二处理器执行一个或多个后续任务。
24.在另一示例中,第一存储器位置与第一处理器相关联并且第二存储器位置与第二处理器相关联。在另一示例中,架构状态包括一个或多个寄存器设置和一个或多个标志设置。在另一示例中,所述方法还包括调整架构状态。在另一示例中,停止第一处理器的传入中断,直到将架构状态复制到第二存储器位置之后,以便可以将中断重新定向到第二处理器。
25.在另一示例中,从本地高级编程中断控制器(lapic)提取isr地址。
26.在另一示例中,第一处理器是功率相对较高的处理器,而第二处理器是功率相对较低的处理器。所述方法还包括确定未充分利用功率相对较高的处理器并且基于所述确定将一个或多个任务重新定位到第二处理器。
27.在另一示例中,第一处理器是功率相对较低的处理器,而第二处理器是功率相对较高的处理器。所述方法还包括确定过度利用功率相对较低的处理器并且基于所述确定将一个或多个任务重新定位到第二处理器。
28.图1是可以实现本公开的一个或多个特征的示例装置100的框图。装置100可以包括例如计算机、游戏装置、手持式装置、机顶盒、电视机、移动电话或平板计算机。装置100包括处理器102、存储器104、存储装置106、一个或多个输入装置108以及一个或多个输出装置110。装置100还可以任选地包括输入驱动器112和输出驱动器114。应理解,装置100可以包括图1中未示出的附加组件。
29.在各种替代方案中,处理器102包括中央处理单元(cpu)、图形处理单元(gpu)、位于同一管芯上的cpu和gpu,或者一个或多个处理器核心,其中每个处理器核心可以是cpu或gpu。在各种替代方案中,存储器104与处理器102位于同一管芯上,或者与处理器102分开定位。存储器104包括易失性或非易失性存储器,例如随机存取存储器(ram)、动态ram或高速缓存。
30.存储装置106包括固定或可移动存储装置,例如硬盘驱动器、固态驱动器、光盘或快闪驱动器。输入装置108包括但不限于键盘、小键盘、触摸屏、触摸板、检测器、麦克风、加速计、陀螺仪、生物特征扫描仪或网络连接(例如,用于传输和/或接收无线ieee 802信号的无线局域网卡)。输出装置110包括但不限于显示器、扬声器、打印机、触觉反馈装置、一个或多个灯、天线或网络连接(例如,用于传输和/或接收无线ieee 802信号的无线局域网卡)。
31.输入驱动器112与处理器102和输入装置108通信,并且允许处理器102接收来自输入装置108的输入。输出驱动器114与处理器102和输出装置110通信,并且允许处理器102将输出发送到输出装置110。应注意,输入驱动器112和输出驱动器114是任选组件,并且装置100在不存在输入驱动器112和输出驱动器114的情况下将以相同方式操作。输出驱动器114包括耦合至显示装置118的加速处理装置(“apd”)116。apd 116从处理器102接受计算命令和图形渲染命令,处理那些计算命令和图形渲染命令,并将像素输出提供给显示装置118以进行显示。如下面进一步详细描述,apd 116包括一个或多个并行处理单元,以根据单指令多数据(“simd”)范例执行计算。因此,虽然本文中将各种功能描述为由apd 116执行或与其结合来执行,但是在各种替代方案中,被描述为由apd 116执行的功能另外地或替代地由具有类似能力的其他计算装置执行,所述其他计算装置不由主机处理器(例如,处理器102)驱动并且向显示装置118提供图形输出。例如,预期根据simd范例执行处理任务的任何处理系统可以执行本文所描述的功能。替代地,预期不根据simd范例执行处理任务的计算系统执行本文所描述的功能。
32.图2是装置100的框图,示出了与在apd 116上执行处理任务有关的另外的细节。处理器102在系统存储器104中维持一个或多个控制逻辑模块,以供处理器102执行。控制逻辑模块包括操作系统120、内核模式驱动器122和应用程序126。这些控制逻辑模块控制处理器102和apd 116的操作的各种特征。例如,操作系统120直接与硬件通信,并且为在处理器102
上执行的其他软件提供到硬件的接口。内核模式驱动器122通过例如向在处理器102上执行以访问apd 116的各种功能的软件(例如,应用程序126)提供应用程序编程接口(“api”)来控制apd 116的操作。内核模式驱动器122还包括即时编译器,所述即时编译器编译程序以供apd 116的处理组件(例如在下面进一步详细论述的simd单元138)执行。
33.apd 116执行选定功能的命令和程序,例如可以适合于进行并行处理的图形操作和非图形操作。apd 116可以用于基于从处理器102接收的命令执行图形流水线操作,例如像素操作、几何计算,以及将图像渲染到显示装置118。apd 116还基于从处理器102接收的命令来执行与图形操作不直接相关的计算处理操作,例如与视频、物理模拟、计算流体动力学或其他任务相关的操作。
34.apd 116包括计算单元132,所述计算单元包括一个或多个simd单元138,所述simd单元根据simd范例按照处理器102的请求以并行方式执行操作。simd范例是这样一种范例:多个处理元件共享单个程序控制流单元和程序计数器,并且因此执行相同的程序,但是能够用不同的数据执行所述程序。在一个示例中,每个simd单元138包括十六个通道,其中每个通道与simd单元138中的其他通道同时执行同一指令,但是可以用不同的数据执行所述指令。如果并非所有通道都需要执行给定指令,则可以利用断言关闭通道。断言也可以用于执行具有发散控制流的程序。更具体地,对于具有条件分支或其他指令的程序,其中控制流是基于由单个通道执行的计算,与当前未执行的控制流路径相对应的通道的断言以及对不同控制流路径的串行执行允许任意控制流。
35.计算单元132中的基本执行单元是工作项。每个工作项表示将在特定通道中并行执行的程序的单个实例。可以在单个simd处理单元138上将工作项同时作为“波前”执行。将一个或多个波前包括在“工作组”中,所述工作组包括被指定为执行同一程序的工作项集合。可以通过执行构成工作组的波前中的每一者来执行工作组。在替代方案中,波前在单个simd单元138上循序执行,或者在不同的simd单元138上部分地或完全地并行执行。波前可以被视为可以在单个simd单元138上同时地执行的最大工作项集合。因此,如果从处理器102接收到的命令指示特定程序将被并行化到所述程序不能同时在单个simd单元138上执行的程度,则所述程序被分解成在两个或更多个simd单元138上并行化的或在同一simd单元138上串行化的(或根据需要并行化和串行化的)波前。调度器136执行与在不同计算单元132和simd单元138上调度各种波前相关的操作。
36.由计算单元132提供的并行性适合于与图形有关的操作,例如像素值计算、顶点变换和其他图形操作。因此,在一些实例中,从处理器102接受图形处理命令的图形流水线134将计算任务提供给计算单元132以并行执行。
37.计算单元132还用于执行与图形无关或不作为图形流水线134的“正常”操作的一部分执行的计算任务(例如,执行自定义操作以补充为图形流水线134的操作执行的处理)。在处理器102上执行的应用程序126或其他软件将定义这种计算任务的程序传输给apd 116以供执行。
38.图3是描绘用于有效地为输入任务提供服务的系统300的示例的框图。输入310代表需要服务的一个或多个任务,例如中断。为了有效地为任务提供服务,最好只涉及减少功耗量所必需的那些资源。如图3所描绘,将输入310馈送到第一滤波器级320。第一滤波器级320是初始服务级,例如通用输入/输出(gpio)级。在此示例中,gpio级可能不支持x86指令
集。在输入310可以由gpio级服务的条件下,如330中所示的所有剩余滤波器级和最高功率复合体340保持断电或处于低功率状态。在一个示例中,中断不需要使用x86指令。因此,仅gpio需要通电以服务于中断,并且系统300的其余组件保持空闲。在这种情况下,将后续滤波器级和最高功率复合体保持在低功率或断电状态可通过避免不必要的功耗来提高性能效率。
39.在输入310无法由第一滤波器级320服务的情况下,将输入310传递到后续滤波器级,例如图3中描绘的第二滤波器级330。在一个示例中,第二滤波器级是一个小型或微型处理器。在此示例中,小型或微型处理器使用x86指令集。例如,这种小型或微型处理器可以为需要x86指令的中断服务例程(isr)任务提供服务,可以执行恢复任务,例如恢复与装置配置寄存器相关联的架构状态,恢复装置恢复其执行或操作系统执行所需的微架构状态,并且可以执行通用低每周期指令(ipc)任务。在另一示例中,小型或微型处理器可以预热最后一级高速缓存。在此示例中,小型或微型处理器将代码和/或数据提取到小型或微型处理器与大型处理器之间的共享高速缓存中,以便在执行切换到大型处理器时避免需求缺失。在将isr传递给小型或微型处理器的条件下,将gpio级置于空闲、停止或断电状态。与例如来自最高功率复合体340的功率较高处理器(例如,大核心)相比,小型或微型处理器是功率较低处理器。在一个示例中,操作系统或内核没有觉察到小型或微型处理器。例如,与以上关于第一滤波器级320所描述类似,任何后续滤波器级和最高功率复合体340保持在低功率或断电状态,从而降低功耗并提高每单位功率性能。
40.如图3中的示例所描绘,系统300包括第二到n滤波器级330,其中n是大于或等于2的任何整数。因此,类似于如上所述,输入310通过滤波器级,直到合适的滤波器级可以为输入310提供服务。同样,此滤波器级层次结构使后续滤波器级和最高功率复合体340能够保持在低功率或断电状态。此外,一旦将滤波器级确定为适合于为任务提供服务,则将先前和后续的级置于空闲、停止、断电等状态。尽管图3描绘第一滤波器级320和第二到n滤波器级330,但是可以实现任何数量的滤波器级,包括无滤波器级。另外或替代地,每个滤波器级可以是多核复合体的不同核心。
41.如图3中的示例中所描绘,如果先前的滤波器级都不合适,则最高功率复合体340为输入340提供服务。在一个示例中,最高功率复合体340是一个或多个大型中央处理单元(cpu)核心,其比例如小型或微型处理器的功率相对更高。在一个示例中,最高功率复合体340是用于为更长任务和更高ipc任务提供服务的cpu核心的复合体。因此,在输入310是更长或更高ipc任务的情况下,将输入310向下传递到最高功率复合体340以供服务,并且将滤波器级320以及第二到n滤波器级置于断电、低功率、停止等状态。
42.图4是描绘用于有效地为输入任务提供服务的系统400的另一示例的框图。输入/输出(io)域/传感器430向gpio/初始服务级440提供一个或多个输入信号。在一个示例中,io域/传感器430提供任何形式的信号或任务,或者提供与应由片上系统(soc)410中包括的一个或多个组件服务的任务相关联的信号。在一个示例中,如图4中所描绘的gpio/初始服务级440不支持x86指令集。在来自io域/传感器430的输入可以由gpio/初始服务级440服务的条件下,包括小型处理器450、核心复合体460、结构/本地高级编程中断控制器(lapic)定时器473和主存储器474的结构420保持断电或处于低功率状态。例如,中断不需要使用x86指令并且gpio/初始服务级440为中断提供服务,同时结构420和其中包括的组件保持断电
或处于低功率状态。gpio/初始服务级440还接收来自常开定时器471的输入并与本地存储器472介接。gpio/初始服务级440可以是例如小型高级精简指令集计算机(risc)机器(arm
tm
)核心、小型微控制器、微定序器、小型硬件机器,或在性能效率方面也可能很高的其他低功耗装置。当gpio/初始服务级440能够为传入任务/中断提供服务并且结构420和其中包括的组件保持断电或处于低功率状态时,通过避免不必要的功耗来提高性能效率。
43.如图4中的示例中所描绘,系统400包括结构420,所述结构尤其包括小型/微型处理器450。在一个示例中,小型/微型处理器450比gpio/初始服务级440的功率相对更高。在来自io域/传感器430的任务或中断无法由gpio/初始服务级440服务的情况下,小型/微型处理器450被唤醒并且任务或中断被传递到小型/微型处理器450。小型/微型处理器450例如可以是较大核心复合体(例如核心复合体460)的一个核心。在另一示例中,小型/微型处理器450也可以是单独的管芯上微控制器。在一个示例中,小型/微型处理器使用x86指令集。在一个示例中,小型/微型处理器为需要x86指令的isr任务提供服务,执行恢复任务,并执行低每周期指令(ipc)任务。在一个示例中,与例如来自核心复合体460的功率较高的处理器相比,小型/微型处理器450是功率较低的处理器。在另一示例中,操作系统或内核没有察觉到小型/微型处理器450。小型/微型处理器450接收来自结构/lapic定时器473的输入,并且小型/微型处理器450还与主存储器474介接。当小型/微型处理器450为例如中断提供服务时,结构420通电,但核心复合体460保持在关闭状态或低功率状态,从而降低功耗并提高单位功耗性能。
44.如图4中的示例中所描绘,如果gpio/初始服务级440和小型/微型处理器450无法这样做,则核心复合体460为例如中断提供服务。在一个示例中,核心复合体460是一个或多个中央处理单元(cpu)核心,其比例如小型或微型处理器具有相对较高功率和/或相对较高功耗。核心复合体460的一个或多个cpu核心可以被视为“大”核心。在一个示例中,核心复合体460是用于为更长任务和更高ipc任务提供服务的cpu核心的复合体。因此,在输入任务是更长或更高ipc任务(例如os任务)的条件下,核心复合体460被唤醒,从而为输入任务提供服务。
45.图5是描绘用于有效地为输入任务提供服务的系统500的另一示例的框图。系统500包括例如接收任务或中断的gpio/初始服务级510。gpio/初始服务级510耦合至一个或多个小型/微型处理器520。在gpio/初始服务状态510无法为接收到的任务或中断提供服务的条件下,一个或多个小型处理器520与结构580一起被唤醒。一个或多个小型/微型处理器520、一个或多个大型处理器530、gpu 540、io 550、全局存储器互连(gmi)560和一个或多个存储器控制器570耦合至结构580。在一个示例中,结构包括传输层和多个桥以将一个或多个小型/微型处理器520、一个或多个大型处理器530、gpu 540、io 550、gmi 560和一个或多个存储器控制器570连接到传输层。
46.在一个或多个小型/微型处理器520无法为接收到的任务或中断提供服务的条件下,一个或多个大型处理器530连同结构580一起被唤醒,从而为任务或中断提供服务。
47.图6是描绘将任务从第一处理器重新定位到第二处理器的示例方法600的流程图。在一个示例中,第一处理器是功率相对较低的处理器,而第二处理器是功率相对较高的处理器。方法600包括在步骤610处,监视与功率相对较低的处理器执行任务相关联的一个或多个度量。
48.一个或多个度量包括例如功率相对较低的处理器的核心利用率度量。在一个示例中,核心利用率度量是对功率相对较低和/或功耗相对较低的处理器以最大速度运行多少的量度。例如,此量度可以指示在某个时间段内,功率相对较低和/或功耗相对较低的处理器以最大速度或接近最大速度运行的时间百分比。在另一示例中,核心利用率度量是在某一时间间隔内,功率相对较低和/或功耗相对较低的处理器的核心驻留处于活动状态的时间百分比。一个或多个度量还可以包括例如存储器利用率度量。在一个示例中,存储器利用率度量是功率相对较低的处理器使用多少存储器的量度。在一个示例中,此量度指示在某一时间段内,存储器以最大性能状态(有时称为p状态)运行的时间百分比。一个或多个度量还可以包括例如直接存储器存取(dma)进度指示。在一个示例中,dma进度指示是某一时间段内的数据速率。在又一示例中,一个或多个度量可以包括中断到达率和/或未决中断的计数。在此示例中,每个度量的较大数目指示从更小或更少中间处理器切换到更大和/或更多最高功率复合体的紧迫性。
49.如图6中所示,方法600进一步包括在步骤620处,将一个或多个度量中的至少一个度量与阈值进行比较。在其中一个或多个度量包括核心利用率度量的示例中,将核心利用率度量,或更具体地,以最大速度运行的功率相对较低的处理器的指示与核心利用率度量进行比较。例如,功率相对较低的处理器在50%的时间以最大速度运行并且阈值是40%。在另一示例中,一个或多个度量包括存储器利用率度量并且阈值是存储器利用率阈值。在此示例中,存储器在70%的时间处于最大性能状态并且存储器利用率阈值是80%。在又一示例中,一个或多个利用率度量包括dma数据速率指示并且阈值是数据速率阈值。例如,dma数据速率指示指示每秒10兆字节并且阈值是每秒12兆字节。
50.如图6中所示,方法600进一步包括在步骤630处,基于在步骤620中执行的比较,将任务重新定位到功率相对较高的处理器。在一个示例中,在核心利用率度量大于其相关联阈值的条件下,系统确定过度利用功率相对较低的处理器并且将任务重新定位到功率相对较高的处理器。在核心利用率度量低于阈值的条件下,不会重新定位任务。在另一示例中,在存储器利用率度量大于其相关联阈值的条件下,系统确定过度利用功率相对较低的处理器并且将任务重新定位到功率相对较高的处理器。在存储器利用率度量低于阈值的条件下,不会重新定位任务。在又一个示例中,在dma进度速率低于其相关联阈值的条件下,系统确定过度利用功率相对较低的处理器并且无法在处理任务时取得足够的进度。因此,将任务重新定位到功率相对较高的处理器。在dma进度速率高于其相关联阈值的情况下,不会重新定位任务。
51.如图6中所示,方法600进一步包括在步骤640处,基于比较在功率相对较高的处理器上执行任务。从逻辑上讲,将在任务所在的处理器上执行任务。因此,如果将任务重新定位到功率相对较高的处理器,则功率相对较高的处理器执行任务。另外,功率相对较低的任务断电或以其他方式置于低功率状态。如果任务没有进行重新定位,则任务保留在功率相对较低的处理器上并由功率相对较低的处理器执行。
52.基于除了上面公开的那些指示之外的其他指示,可以将任务从功率相对较低的处理器移动到功率相对较高的处理器。在一个示例中,isr将控制返回到os。在此示例中,在功率相对较低的处理器上执行os是不太优选的。因此,将os任务的执行转换到功率相对较高的处理器。另外,功率相对较低的处理器断电或以其他方式置于低功率状态。在另一个示例
中,机器检查架构(mca)事件需要更适合在功率相对较低的处理器上运行的软件堆栈。mca事件可以包括例如事务错误、数据错误或奇偶校验错误。在另一个示例中,将涉及需要os的系统级管理的任何事件移动到功率相对较高的处理器以供执行。同样,功率相对较低的处理器断电或以其他方式置于低功率状态。
53.图7是描绘将任务从第一处理器重新定位到第二处理器的另一示例方法700的流程图。在一个示例中,第一处理器是功率相对较高的处理器,而第二处理器是功率相对较低的处理器。方法700包括在步骤710处,监视与功率相对较高的处理器执行任务相关联的一个或多个度量。
54.一个或多个度量可以包括例如核心利用率度量、存储器利用率度量或例如以上关于图6描述的那些的dma进度度量。一个或多个度量还可以包括例如在某一持续时间内使用多少单个功率相对较高的核心的指示。例如,系统包括多个功率相对较高的处理器核心,它们可以等效地各自被视为功率相对较高的处理器。在一个示例中,跟踪多个核心中仅一个核心的利用率的量度。在此示例中,此量度并不特定于相同的单个核心,而是一次跟踪单个核心的利用率,其中使用中的特定核心可能会发生变化。对于其中一个或多个度量包括核心利用率度量的示例,核心利用率度量可以指示功率相对较大的处理器的平均空闲状态驻留。例如,平均空闲状态驻留指示功率相对较高的处理器在某一时间间隔内处于特定空闲状态(例如c状态)的频率,或指示其中功率相对较高的处理器在所述时间间隔内驻留的平均空闲状态(例如c状态)。应认识到,c状态是高级配置和电源接口(acpi)空闲状态。
55.如图7中所示,方法700进一步包括在步骤720处,将一个或多个度量中的至少一个度量与阈值进行比较。在其中一个或多个度量包括在某一持续时间内使用多少单个功率相对较高核心的指示的示例中,在单个核心的使用超过阈值百分比的条件下,系统决定不需要功率相对较高的处理器,并且将任务重新定位到功率相对较低的处理器且使功率相对较高的处理器断电。
56.如图7中所示,方法700进一步包括在步骤730处,基于在步骤720中执行的比较,将任务重新定位到功率相对较低的处理器。在一个示例中,在功率相对较高的处理器平均在70%的时间空闲并且阈值是50%的时间的条件下,则将任务重新定位到功率相对较低的处理器。
57.如图7中所示,方法700进一步包括在步骤740处,基于比较在功率相对较低的处理器上执行任务。从逻辑上讲,将在任务所在的处理器上执行任务。因此,如果将任务重新定位到功率相对较低的处理器,则功率相对较低的处理器继续执行任务。如果任务没有进行重新定位,则任务保留在功率相对较高的处理器上并由功率相对较高的处理器执行。
58.图8是描绘将一个或多个任务从第一处理器重新定位到第二处理器的另一示例方法800的流程图。在一个示例中,第一处理器是功率相对较高的处理器,而第二处理器是功率相对较低的处理器。在另一示例中,第一处理器是功率相对较低的处理器,而第二处理器是功率相对较高的处理器。在又一示例中,两个处理器是异构的,例如cpu和gpu。
59.方法800包括在步骤810处,确定应将第一处理器置于空闲状态或停止状态。根据上面提供的描述来确定应将第一处理器置于空闲状态或停止状态。例如,第一处理器是功率相对较低的处理器,而第二处理器是功率相对较高的处理器。此外,在此示例中,第一处理器的核心利用率超过其相关联阈值。因此,确定应将一个或多个任务重新定位到功率相
对较高的处理器。在一个示例中,功率相对较低的处理器是小型、迷你或微型核心。步骤810还可以包括在第一处理器仍在执行时为第二处理器启动通电过程。第二处理器的通电过程可以包括例如使电压轨上升、修复存储器、熔丝输送和核心状态初始化。以这种方式,第二处理器可以准备好恢复架构状态,使得将执行切换到第二处理器而不会断电。方法800还包括在步骤815处,将第一处理器置于空闲状态或停止状态。在一个示例中,为了停止功率相对较低的处理器,实现微架构方法。在另一个示例中,作为将功率相对较低的处理器置于停止状态的一部分,首先确定引退所有微操作数,换句话说,没有未完成的指令,没有未完成的存储器请求,没有剩余的内部指令流,并且没有正在进行的指令。在一些示例中,预期功率相对较低的处理器响应对其高速缓存子系统的传入探测,而不会使功率相对较低的处理器脱离停止状态。在一些示例中,应阻止中断进入功率相对较低的处理器,因此在边界处等待。
60.在另一示例中,第一处理器是功率相对较高的处理器,而第二处理器是功率相对较低的处理器。在一个示例中,相关联阈值越高,则功率相对较高的处理器确定为平均处于空闲状态。因此,确定应将一个或多个任务重新定位到功率相对较低的处理器并且将功率相对较高的处理器例如置于c状态。应注意,如上所述,这种重新定位可以例如在gpio/初始服务级与小型/微型处理器之间,或者这种重新定位可以在小型/微型处理器与大型处理器之间。
61.方法800还包括在步骤820处,将第一处理器的架构状态保存在第一存储器位置中。在一个示例中,架构状态是一个或多个寄存器和一个或多个标志的组合。在一些示例中,第一存储器位置与第一处理器相关联。在另一个示例中,方法800包括每次开始步骤815以使其与步骤810重叠,并且在步骤820也结束时结束,以避免与完成步骤815相关联的任何延迟。
62.方法800还包括在步骤830处,将架构状态从第一存储器地址复制到第二存储器地址。在一些示例中,第二存储器地址与第二处理器相关联。在一些示例中,针对第二处理器调整架构状态。任选地,在步骤840处,执行此调整,以便将调整后的架构状态应用于第二处理器。在步骤850处,所述方法还包括从第二存储器地址恢复第二处理器上的架构状态。在另一示例中,用于如在步骤830中复制架构状态和如在步骤850中恢复架构状态的存储器是专用静态随机存取存储器(sram)。在又一示例中,代替在步骤830和850中使用存储器,寄存器总线可以桥接在第一处理器与第二处理器之间,使得架构状态在处理器之间直接移动。在步骤860处,将传入中断重新定向到第二处理器。尽管步骤860在图8中被描绘为在步骤850之后,但是停止在完成步骤850之前的任何点接收到的任何传入中断,使得在步骤860处,将中断重新定向到第二处理器。在步骤870处,由第二处理器提取传入中断的isr地址并且为中断提供服务。在完成为中断提供服务之后,在步骤880处,在第二处理器上恢复正常执行。
63.尽管在上面提供的一些示例中,描述功率相对较低的处理器和功率相对较高的处理器,但是可以使用任何两个或更多个异构处理器。例如,将来自cpu核心的任务重新定位到gpu核心,或反之亦然。
64.应理解,基于本文的公开内容,许多变型是可能的。虽然上面以特定的组合描述特征和要素,但是每个特征或要素可以单独使用而无需其他特征和要素,或者以具有或不具
有其他特征和要素的各种组合使用。
65.图中所示和/或本文所描述的各种功能单元(包括但不限于处理器102、输入驱动器112、输入装置108、输出驱动器114、输出装置110、加速处理装置116、调度器136、图形处理流水线134、计算单元132和simd单元138)可以被实现为通用计算机、处理器或处理器核心,或者被实现为程序、软件或固件,存储在非暂时性计算机可读介质或另一种介质中,可由通用计算机、处理器或处理器核心执行。所提供的方法可以在通用计算机、处理器或处理器核心中实现。合适的处理器包括例如通用处理器、专用处理器、常规处理器、数字信号处理器(dsp)、多个微处理器、与dsp核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(asic)、现场可编程门阵列(fpga)电路、任何其他类型的集成电路(ic)和/或状态机。可以通过使用处理后的硬件描述语言(hdl)指令的结果和包括网表的其他中间数据(此类指令能够存储在计算机可读介质上)配置制造工艺来制造这种处理器。此种处理的结果可以是掩模作品,然后在半导体制造过程中使用所述掩模作品来制造实现本公开的特征的处理器。
66.本文提供的方法或流程图可以在并入非暂时性计算机可读存储介质的计算机程序、软件或固件中实现,以便由通用计算机或处理器执行。非暂时性计算机可读存储介质的示例包括只读存储器(rom)、随机存取存储器(ram)、寄存器、高速缓存存储器、半导体存储器装置、磁性介质(例如内部硬盘和可移除磁盘)、磁光介质、以及光学介质(例如cd-rom盘和数字多功能盘(dvd))。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献