Patent Description:
A processing engine, such as a CPU, may have multiple cores, which are capable of executing tasks independently of one another. The cores may be symmetric, where each core is capable of the same level of performance as the others, or asymmetric (also referred to as heterogeneous), where one or more cores are optimized for higher performance than others. Cores may be organized in clusters. In some heterogeneous architectures, one cluster may consist of cores optimized for higher performance than the cores of another cluster. The higher-performance cores generally consume more power than the lower-performance cores. The process of determining on which of multiple cores to execute which of multiple tasks is commonly referred to as task scheduling. Task scheduling may be controlled by a scheduler, which is commonly a part of an operating system kernel.

Task scheduling that attempts to minimize the total amount of energy consumed by all executing tasks may be referred to as energy-aware scheduling ("EAS"). To determine on which core it would be most efficient to execute a task, a scheduler employing EAS may apply an estimate of the processing load that the task would place on each core to a model that relates processing load (i.e., performance) to power. The scheduler then selects the core on which the model indicates that executing the task would minimize total power. Attention is drawn to <CIT> relating to a dynamic scheduler that schedules tasks for a plurality of cores based upon current operating characteristics for the cores. The current operating characteristics include a predicted leakage current for each core based upon an analytical model. Further attention is drawn to <CIT> relating to energy efficiency managed in a multi-cluster system. The system detects an event in which a current operating frequency of an active cluster enters or crosses any of one or more predetermined frequency spots of the active cluster, wherein the active cluster includes one or more first processor cores. When the event is detected, the system performs the following steps: (<NUM>) identifying a target cluster including one or more second processor cores, wherein the each first processor core in the first cluster and each second processor core in the second cluster have different energy efficiency characteristics; (<NUM>) activating at least one second processor core in the second cluster; (<NUM>) determining whether to migrate one or more interrupt requests from the first cluster to the second cluster; and (<NUM>) determining whether to deactivate at least one first processor core of the active cluster based on a performance and power requirement. Additional attention is drawn to <CIT> relating to a multicore processor including cores that can independently execute instructions, each at an independent voltage and frequency. The processor includes a power controller having logic to provide for configurability of power management features of the processor. One such feature enables a core to operate at an independent performance state based on a state of a single power domain indicator present in a control register.

Systems, methods, computer readable mediums, and other embodiments are disclosed for regulator efficiency-aware task scheduling in a computing device.

A method for task scheduling in a computing device includes receiving a task comprising a task performance level indication, identifying candidate processors for execution of the task comprising identifying least-loaded processors of a plurality of processors, and determining a plurality of task scheduling cases. In the method, each task scheduling case represents execution of the task on a respective processor of the candidate processors concurrently with one or more other tasks executing on the plurality of processors. In the method, each processor is supplied by one of a plurality of voltage regulators. The method also includes determining, for each task scheduling case, a regulator input power level of each voltage regulator based on the task performance level indication, the one or more other tasks executing on the processors, and an efficiency level of each voltage regulator. The method further includes determining, for each task scheduling case, a total regulator input power level by summing the regulator input power levels of the voltage regulators. The method still further includes selecting one of the task scheduling cases having a lowest total regulator input power level among the plurality of task scheduling cases. The method yet further includes executing the task on a processor associated with the selected one of the task scheduling cases.

A system for task scheduling in a computing device includes a plurality of processors, a task scheduler, and a plurality of voltage regulators. The task scheduler is configured to receive a task comprising a task performance level indication, identify candidate processors for execution of the task comprising identifying least-loaded processors of the plurality of processors, and determine a plurality of task scheduling cases. In the system, each task scheduling case represents execution of the task on a respective of the candidate processors concurrently with one or more other tasks executing on the processors. In the system, each processor is supplied by one of the voltage regulators. In the system, the task scheduler also is configured to determine, for each task scheduling case, a regulator input power level of each voltage regulator based on the task performance level indication, the one or more other tasks executing on the processors, and an efficiency level of each voltage regulator. In the system, the task scheduler further is configured to determine, for each task scheduling case, a total regulator input power level by summing the regulator input power levels of the voltage regulators. In the system, the task scheduler still further is configured to select one of the task scheduling cases having a lowest total regulator input power level among the plurality of task scheduling cases. In the system, the task scheduler yet further is configured to execute the task on a processor associated with the selected one of the task scheduling cases.

A computer readable medium for task scheduling in a computing device comprises a non-transitory computer-readable medium having instructions stored thereon in computer-executable form. The instructions, when executed by a processing system of the computing device, configure the processing system to perform the above method for task scheduling.

" The word "illustrative" may be used herein synonymously with "exemplary. The term "coupled" may be used herein to mean connected via zero or more intervening elements, in contrast with the term "directly connected," which may be used herein to mean connected via no intervening elements.

A reference to a task executing on a processor means that the software (instructions, data, etc.) represented by the task is executed by a processor retrieving and executing portions of the software from a memory, storing results in a memory, etc., in a manner in accordance with conventional computing principles well understood by one of ordinary skill in the art. In some of the exemplary embodiments described herein, an explicit description of such a memory may be omitted for purposes of clarity.

As illustrated in <FIG>, in an illustrative or exemplary embodiment, a computing device <NUM> may include a processor chip <NUM>. The processor chip <NUM> may be, for example, a CPU (sometimes also referred to as an application processor). The processor chip <NUM> may have multiple cores <NUM>, such as cores 104A, 104B, 104C and 104D. Although in the illustrated embodiment the processor chip <NUM> has four cores <NUM>, in other embodiments such a processor chip may have any other number of cores. The cores 104A and 104B may be organized in a first cluster 106A, and the cores 104C and 104D may be organized in a second cluster 106B. Although in the illustrated embodiment the cores <NUM> are organized in two clusters 106A and 106B, in other embodiments the cores may be organized in any other number of clusters. In some embodiments, the cores 104A and 104B of the first cluster 106A may be configured to sustain a higher processing load or higher performance level (expressed, for example, in millions of instructions per second or "MIPS") than the cores 104C and 104D of the second cluster 106B. As used in this disclosure, the terms "higher performance" and "lower performance" refer to performance levels relative to each other. Nevertheless, in other embodiments all such cores may be capable of sustaining the same maximum processing load.

A first voltage regulator 108A may be configured to supply power to the cores 104A and 104B of the first cluster 106A. Similarly, a second voltage regulator 108B may be configured to supply power to the cores 104C and 104D of the second cluster 106B. In the exemplary embodiments described herein, the term "power" refers an amount of current at a regulated voltage. Although not shown in <FIG> for purposes of clarity, the regulated voltage or voltages may be selected or adjusted by power management circuitry of the computing device <NUM> that provides voltage control signals to the voltage regulators 108A and 108B. As described below in further detail, in some embodiments the voltage regulators 108A and 108B may be different from each other, such as having different efficiencies. Nevertheless, in other embodiments such voltage regulators may be similar to each other, such as having the same efficiencies.

Other elements of the computing device <NUM> in addition to the above-described processor chip <NUM> and voltage regulators 108A and 108B, may include, for example, one or more memories, other processors, input/output systems, data communication busses, power management circuitry, etc. Such other elements are not shown in <FIG> for purposes of clarity.

As illustrated in <FIG>, in another exemplary embodiment a computing device <NUM> may include a processor chip <NUM>. The processor chip <NUM> may be, for example, a CPU or application processor. The processor chip <NUM> may comprise multiple chiplets <NUM>, such as chiplets 204A, 204B, 204C and 204D. Although in the illustrated embodiment the processor chip <NUM> has four chiplets <NUM>, in other embodiments such a processor chip may have any other number of chiplets. Voltage regulators 208A, 208B, 208C and 208D may be configured to supply power to the chiplets 204A, 204B, 204C and 204D, respectively. Other elements of the computing device <NUM> in addition to the above-described processor chip <NUM> and voltage regulators 208A, 208B, 208C and 208D, may include, for example, one or more memories, other processors, input/output systems, data communication busses, etc. Such other elements are not shown in <FIG> for purposes of clarity.

As illustrated in <FIG>, a system <NUM> may include a task scheduler <NUM> and processors <NUM>, such as processors 304A, 304B, 304C and 304D. The processors <NUM> may be an example of the above-described cores <NUM> (<FIG>) or chiplets <NUM> (<FIG>), or any other group of two or more processors. Also, although in the above-described embodiments all of the cores <NUM> are included in a single chip <NUM>, and all of the chiplets <NUM> are included in a single chip <NUM>, in other embodiments such processors may be in separate chips. In the following descriptions, the term "processor" encompasses all such processors that may be contained in one or more chips. Further, although in the illustrated embodiment the system <NUM> has four processors <NUM>, in other embodiments such a system may have any other number of processors.

Voltage regulators may supply power to the processors <NUM> in the manner described above with regard to <FIG>. For example, a first voltage regulator 308A may supply power to the processors 304A and 304B, and a second voltage regulator 308B may supply power to the processors 304C and 304D.

In the embodiment illustrated in <FIG>, the task scheduler <NUM> may correspond to a portion or feature of an operating system (not shown). That is, the task scheduler <NUM> may comprise a portion of a processor, such as any of the processors <NUM> or other processor (not shown), configured by the execution of operating system software, including task scheduling software.

The term "task scheduling" or "scheduling" refers to selecting one of the processors <NUM> on which to execute a task. In an example of operation of the system <NUM>, a first task 306A may be executing on the processor 304A when the scheduler <NUM> receives (e.g., from another portion of the operating system) an indication of an additional or second task 306B to be scheduled. The arrow 310A conceptually indicates that the scheduler <NUM> may have previously (i.e., prior to receipt of the indication of the second task 306B) scheduled the first task 306A to execute on the processor 304A. In response to the indication of the second task 306B, the scheduler <NUM> may select one of the processors <NUM> to execute the second task 306B. As described below, three alternative ways to schedule an additional task, referred to herein as "task scheduling cases," are shown in <FIG>, <FIG> and <FIG>, respectively. Broadly, the additional or second task 306B could potentially be executed on any of the four processors 304A, 304B, 304C and 304D. Nevertheless, in this example a set of candidate processors for executing the second task 306B may be identified or determined in accordance with conventional task scheduling principles. Conventionally, the most task-loaded processor or processors, if any, would be excluded from the set of candidate processors for executing an additional task. That is, the least-loaded processor or processors form the set of candidates. In this example, where the processor 304A is executing the first task 306A while none of the other processors 304B, 304C and 304D are executing any tasks, the processors 304B, 304C and 304D form the set of candidate processors for executing the second task 306B.

For example, as conceptually indicated by the arrow 310B in <FIG>, and based on a method described below, the scheduler <NUM> may schedule the second task 306B to execute on the processor 304B rather than any of the other processors 304A, 304C and 304D. That is, the scheduler <NUM> may select one of the processors <NUM> on which to execute the second task 306B. As described below, the method may base the selection in part on voltage regulator efficiency. Although only two tasks 306A and 306B are shown in <FIG> for purposes of example, any number of tasks may be executing concurrently with each other, distributed among any number of processors.

As illustrated in <FIG>, a method <NUM> for task scheduling in a computing device includes the following. It should be understood that the method <NUM> represents an example or embodiment, and in other embodiments some steps of the method <NUM>, or similar steps or acts, may occur in a different order than in the method <NUM>, or may be omitted. For purposes of example, the method <NUM> is described in relation to one or more of the computing devices <NUM> (<FIG>) or <NUM> (<FIG>) or the system <NUM> (<FIG>). Nevertheless, the method <NUM> or a related method may be applied to other computing devices, systems, etc. Further, the numerical values of currents, voltages, etc., set forth below are provided for purposes of example and may be different in other examples.

As indicated by block <NUM>, an additional task is received. That is, an indication of an additional task to be scheduled is received. The indication comprises an indication of a task performance level. The task performance level relates, for example, to a number of MIPS, or a similar measure of performance, that a processor may need to sustain to execute the task. The additional task is received by, for example, the above-described task scheduler <NUM> (<FIG>).

As indicated by block <NUM>, two or more candidate processors for executing the additional task are identified or determined. The candidate processors are determined by, for example, the task scheduler <NUM>. Conventional methods may be employed for identifying candidate processors, such as identifying the least-loaded processor or processors. Referring to the example described above with regard to <FIG>, in which the additional or second task 306B is received while the processor 304A is executing the first task 306A and none of the other processors 304B, 304C and 304D are executing any tasks, each of the processors 304B, 304C and 304D is a least-loaded processor and a candidate for executing the second task 306B while the first task 306A is concurrently executing on the processor 304A.

As indicated by block <NUM>, two or more task scheduling cases are determined. A task scheduling case in accordance with exemplary embodiments described herein is a representation of a state in which the additional task is executing on a selected one of the (candidate) processors concurrently with one or more other tasks executing among the processors. As indicated by <FIG>, there may be three task scheduling cases. As shown in <FIG>, one of the task scheduling cases may represent the additional or second task 306B executing on the processor 304B while the first task 306A is executing on the processor 304A. As shown in <FIG>, another task scheduling case could represent the second task 306B executing on the processor 304C while the first task 306A is executing on the processor 304A. As shown in <FIG>, still another task scheduling case could represent the second task 306B executing on the processor 304D while the first task 306A is executing on the processor 304A. The number of task scheduling cases that are determined in block <NUM> correspond to the number of candidate processors. In each task scheduling case, a different one of the candidate processors may be considered for executing the additional task. Although <FIG> illustrate a straightforward example in which only one task 306A is executing at the time the scheduler <NUM> receives the additional or second task 306B, there may be other examples of operation in which many tasks are distributed and executing among the various processors <NUM> at the time the scheduler <NUM> receives an additional task to be scheduled.

As indicated by block <NUM>, a regulator input power level of each voltage regulator is determined for each task scheduling case. The term "regulator input" is used in this disclosure to refer to the power source side of a voltage regulator, in contrast with the term "regulator output," which refers to the power sink side of the voltage regulator that the voltage regulator attempts to maintain at a ("regulated") voltage level. An example of a power source is a battery (not shown).

The regulator input power level for a task scheduling case represents the amount of power that the voltage regulator would draw at its input (e.g., from a battery or other power source) under an operating state in which the one or more processors supplied by that voltage regulator are executing the one or more tasks represented by that task scheduling case. To determine the regulator input power level of a voltage regulator for one of the task scheduling cases, the scheduler <NUM> may, for example, utilize one or more look-up tables (not shown), calculations, or a combination of look-up tables and calculations. The regulator input power level for a task scheduling case is based in part on the task performance level indication for the additional task as well as the performance levels or other indications of processor load for any other tasks that may execute on the processor or processors supplied by that regulator under that task scheduling case. Significantly, the regulator input power level is further based in part on regulator efficiency.

The scheduler <NUM> may, for example, utilize a look-up table (not shown) to determine the regulator input power in response to the performance levels or indications of processor load. Such a table may be based in part on regulator efficiency. That is, a relationship between the input power level of a voltage regulator and processor load, as provided by, for example, a table, may take into account the efficiency level of the voltage regulator. Regulator efficiency refers to the percentage of the input power level that the voltage regulator is capable of providing at its output, i.e., regulator output power level. As described above, the voltage regulator output is coupled to one or more processors, while the voltage regulator input may be coupled to a power source, such as a battery.

Referring again to the example shown in <FIG>, the output of the first voltage regulator 308A is coupled to, and thus supplies current to, the processors 304A and 304B, and the output of the second voltage regulator 308B is coupled to, and thus supplies current to, the processors 304C and 304D. In accordance with block <NUM>, the input power level of the first voltage regulator 308A is determined for each task scheduling case, and the input power level of the second voltage regulator 308B is determined for each task scheduling case. An input power level of each of the voltage regulators 308A and 308B is determined for the task scheduling case shown in <FIG>, the task scheduling case shown in <FIG>, and the task scheduling case shown in <FIG>.

For the task scheduling case shown in <FIG>, in which the first task 306A executes on the processor 304A and the additional or second task 306B executes on the processor 304B, the input power level of the voltage regulator 308A may be determined based on the processor load on the processor 304A associated with its execution of the task 306A and the processor load on the processor 304B associated with its execution of the task 306B, taking into account the efficiency of the voltage regulator 308A. For that same case of the first task 306A executing on the processor 304A and the additional or second task 306B executing on the processor 304B, the input power level of the voltage regulator 308B is zero.

For the task scheduling case shown in <FIG>, in which the first task 306A executes on the processor 304A and the additional or second task 306B executes on the processor 304C, the input power level of the voltage regulator 308A may be determined based on the processor load on the processor 304A associated with its execution of the task 306A, as the processor load on the processor 304B, which is not executing any tasks in this case, is zero. For that same case of the first task 306A executing on the processor 304A and the additional or second task 306B executing on the processor 304C, the input power level of the voltage regulator 308B may be determined based on the processor load on the processor 304C associated with its execution of the task 306B, as the processor load on the processor 304D, which is not executing any tasks in this case, is zero.

For the task scheduling case shown in <FIG>, in which the first task 306A executes on the processor 304A and the additional or second task 306B executes on the processor 304D, the input power level of the voltage regulator 308A may be determined based on the processor load on the processor 304A associated with its execution of the task 306A, as the processor load on the processor 304B, which is not executing any tasks in this case, is zero. For that same case of the first task 306A executing on the processor 304A and the additional or second task 306B executing on the processor 304D, the input power level of the voltage regulator 308B may be determined based on the processor load on the processor 304D associated with its execution of the task 306B, as the processor load on the processor 304C, which is not executing any tasks in this case, is zero.

Alternatively, or in addition to utilizing one or more lookup tables, or to produce such look-up tables, a regulator input power level may be determined by first determining a corresponding regulator output power level. Regulator output power level is a percentage of regulator input power level, where the percentage is the voltage regulator's efficiency level at the supply current level (i.e., the current that the voltage regulator is supplying). As described in further detail below, a voltage regulator's efficiency is not constant across the range of current it is capable of supplying. Regulator output power is the sum of the power drawn by the one or more processors that the regulator supplies. Determining regulator input power by first determining regulator output power may be illustrated through the example described above with regard to <FIG>.

In determining regulator output power for the task scheduling case shown in <FIG>, in which the first task 306A executes on the processor 304A and the additional or second task 306B executes on the processor 304B, the processor power level or amount of power required for each processor 304A and 304B to sustain its processing load may first be determined. The scheduler <NUM> may receive a task performance level indication having a value of N (e.g., "N" MIPS, where N is an integer greater than zero), which indicates the processing load that would be contributed by the additional task. The scheduler <NUM> may determine (e.g., using a look-up table) that to sustain a processing load of N MIPS, the processor 304B would require <NUM>. The scheduler <NUM> may in the same manner determine that the processor 304A, in executing the task 306A, requires <NUM>. Alternatively, in some embodiments, such as the embodiment shown in <FIG>, the power drawn by a processor executing a task may be determined using telemetry readings of current and voltage from the voltage regulator supplying that processor.

A voltage regulator output power level is then determined by summing the processor power levels of all processors supplied by that voltage regulator. For example, for the task scheduling case shown in <FIG>, in which the first task 306A executes on the processor 304A and the additional or second task 306B executes on the processor 304B, the scheduler <NUM> determines that the output power of the voltage regulator 308A is <NUM>. 14W = <NUM>. For the task scheduling case shown in <FIG>, the output power of the voltage regulator 308B is zero because no tasks execute on the processors 304C or 304D. The voltage regulator input power level may then be determined by dividing the voltage regulator output power level by the voltage regulator efficiency.

As illustrated in <FIG>, voltage regulator efficiency may be obtained from a model, which may be in the form of a graph <NUM> or a look-up table (not shown). The graph <NUM> comprises a curve <NUM> that relates voltage regulator load current (e.g., in mA) to efficiency (percentage). A voltage regulator load current level may be determined by dividing the voltage regulator output power level by the regulator output voltage level. Although only one curve <NUM> is shown, it should be appreciated that different voltage regulators may have efficiencies modeled by different curves. For purposes of the example shown in <FIG>, the curve <NUM> may describe the efficiencies of both voltage regulators 308A and 308B.

The calculated voltage regulator output power level may, in some embodiments, be adjusted by adding a calculated power supply plane loss. Power supply plane loss is the amount of power dissipated by the metal layer or plane in a circuit board (not shown) that distributes power from a voltage regulator. The power supply plane loss may be expressed as the product of resistance and the square of the regulator output current. The regulator output current may be determined by dividing the voltage regulator output power by the regulator output voltage. The regulator output voltage may be determined in some embodiments by telemetry, i.e., obtaining a measurement from the voltage regulator. For the task scheduling case shown in <FIG>, in which the output power of the voltage regulator 308A is <NUM>. 28W and the measured voltage is, for example,. <NUM> volts (V), the regulator output current is <NUM>. 769V = <NUM> amperes (A). The resistance of a path between a voltage regulator output and a processor may be a predetermined value. In the example described above, in which the output power of the voltage regulator 308A is <NUM>. 28W, and a path between the voltage regulator output and each processor 304A and 304B has a resistance of, for example, <NUM> milliohms, a power supply plane loss of (<NUM>)<NUM>×(. <NUM> may be added to the above-calculated voltage regulator output power of <NUM>. 28W, resulting in an adjusted output power level of the voltage regulator 308A of <NUM>.

Referring again to <FIG>, for the task scheduling case shown in <FIG> the voltage regulator load current is <NUM>. 769V = <NUM>. The curve <NUM> indicates that at a load current level of <NUM>. 69A, the efficiency level of the voltage regulator 308A is <NUM>% or. Therefore, for the task scheduling case shown in <FIG> the input power level of the voltage regulator 308A is <NUM>. <NUM> = <NUM>. Note that for the task scheduling case shown in <FIG> the input power level of the voltage regulator 308B is zero because neither of the processors 304C or 304D are executing any tasks.

Returning to <FIG>, as indicated by block <NUM>, for each task scheduling case, a total regulator input power is determined by summing the input power levels of all voltage regulators. For the task scheduling case shown in <FIG>, in which the input power level of the voltage regulator 308A is <NUM>. 65W, and the input power level of the voltage regulator 308B is zero, the total regulator input power is <NUM>.

The steps described above with regard to blocks <NUM> and <NUM> are performed for each task scheduling case, yielding an input power level of each voltage regulator. The following exemplary calculations are performed for the task scheduling cases shown in <FIG> and <FIG>. Note that in this example the calculations for the task scheduling cases shown in <FIG> and <FIG> are identical to each other, as it is not significant to the calculations whether the additional or second task 306B executes on the processor 304C or the processor 304D.

For the task scheduling cases shown in <FIG> and <FIG>, based on the task performance level for the additional or second task 306B, the scheduler <NUM>, in the same manner described above for the first task scheduling case, determines that the processor 304C or 304D would require <NUM>. 14W to sustain execution of the second task 306B. As there are no other tasks executing on the processors 304C or 304D in this example, the output power level of the voltage regulator 308B is <NUM>.

The output power of the voltage regulator 308B may be modified by adding the power supply plane loss. If the measured output voltage is, for example,. 769V, the output current of the voltage regulator 308B is <NUM>. 769V = <NUM>. If the path resistance is, for example, <NUM> milliohms, then a power supply plane loss of (<NUM>)<NUM>×(. <NUM> may be added to the above-calculated voltage regulator output power of <NUM>. 14W, resulting in a modified output power level of the voltage regulator 308B of <NUM>.

Referring again to <FIG>, for the task scheduling cases shown in <FIG> and <FIG> the voltage regulator load current is <NUM>. 769V = <NUM>. The curve <NUM> indicates that at a load current level of <NUM>. 84A, the efficiency level of the voltage regulator 308B is <NUM>% or. Therefore, for the task scheduling cases shown in <FIG> and <FIG> the input power level of the voltage regulator 308B is <NUM>/. <NUM> = <NUM>. The input power level of the voltage regulator 308A is also <NUM>. 616W because the same conditions apply to both voltage regulators 308A and 308B in this example. That is, each of the voltage regulators 308A and 308B is supplying one processor operating at a similar performance level.

Returning to <FIG>, as indicated by block <NUM>, a total regulator input power for each task scheduling case is determined by summing the input power levels of all voltage regulators. For the task scheduling cases shown in <FIG>, in which the input power level of the voltage regulator 308A is <NUM>. 65W, and the input power level of the voltage regulator 308B is zero, the total regulator input power is <NUM>. For the task scheduling case shown in <FIG>, in which the input power level of the voltage regulator 308A is <NUM>. 616W, and the input power level of the voltage regulator 308B is <NUM>. 616W, the total regulator input power is <NUM>. For the task scheduling case shown in <FIG>, in which the input power level of the voltage regulator 308A is <NUM>. 616W, and the input power level of the voltage regulator 308B is <NUM>. 616W, the total regulator input power is <NUM>.

As indicated by block <NUM>, the task scheduling case having the lowest total regulator input power is selected. In the example described above, the total regulator input power for the task scheduling cases shown in <FIG> and <FIG> are each <NUM>. 23W, while the total regulator input power for the task scheduling case shown in <FIG> is <NUM>. Accordingly, the task scheduler <NUM> selects either the task scheduling case shown in <FIG> or the task scheduling case shown in <FIG>. In an example such as this, in which two or more task scheduling cases equally have the lowest total regulator input power, one may be selected in any manner, such as by a predetermined order or index, randomly, etc..

As indicated by block <NUM>, the additional task is then executed on the processor associated with the selected task scheduling case. In the above-described example, if the task scheduling case shown in <FIG> is selected, the second task 306B is executed on the processor 304C. If the task scheduling case shown in <FIG> is selected, the second task 306B is executed on the processor 304D.

Note that if the regulator power level determination were not based in part on regulator efficiency (i.e., loss), a calculation of total power consumption would produce the same result in each of the three task scheduling cases in the foregoing example. In the task scheduling case shown in <FIG>, the result of calculating total power consumption without taking into account regulator efficiency would be <NUM>. 28W, as it would be determined that <NUM>. 14W is consumed by the processor 304A and <NUM>. 14W is consumed by the processor 304B. In the task scheduling case shown in <FIG>, the result of calculating total power consumption without taking into account regulator efficiency would also be <NUM>. 28W, as it would be determined that <NUM>. 14W is consumed by the processor 304A and <NUM>. 14W is consumed by the processor 304C. In the task scheduling case shown in <FIG>, the result of calculating total power consumption without taking into account regulator efficiency would be <NUM>. 28W, as it would be determined that <NUM>. 14W is consumed by the processor 304A and <NUM>. 14W is consumed by the processor 304D. Based on the results of calculating total power consumption without taking into account regulator efficiency, a conventional task scheduler (not shown) might execute the additional or second task 306B task on the processor 304B, yet the example described above of the method <NUM> reveals that it would be more power-efficient to execute the second task 306B on the processor 304C or 304D than the processor 304B.

As illustrated in <FIG>, a graph <NUM> comprises a first load current-versus-efficiency curve <NUM> for a first voltage regulator and a second load current-versus-efficiency curve <NUM> for a second voltage regulator. The first and second voltage regulators may be, for example, the voltage regulators 108B and 108A (<FIG>), respectively. As described above with regard to <FIG>, the cores 104A and 104B of the first cluster 106A that are supplied by the voltage regulator 108A may be configured to sustain a higher processing load than the cores 104C and 104D of the second cluster 106B that are supplied by the voltage regulator 108B. Accordingly, the voltage regulator 108A may be configured to supply more current at high processing loads than the voltage regulator 108B. For example, the voltage regulator 108A may have a higher phase count, larger inductors, etc., than the voltage regulator 108B. Accordingly, at higher current levels the voltage regulator 108B may be more efficient than the voltage regulator 108A. At some exemplary processing load (i.e., number of MIPS), the current <NUM> drawn by the voltage regulator 108B may be lower than the current <NUM> drawn by the voltage regulator 108A. Disregarding regulator efficiency, a conventional task scheduler may determine that an additional task is to execute on one of the cores 104C and 104D. Nevertheless, at that processing load the efficiency <NUM> of the voltage regulator 108A may be higher than the efficiency <NUM> of the voltage regulator 108B. The task scheduler <NUM>, basing the determination in part on regulator efficiency, may determine that an additional task is to execute on the core 104B.

As illustrated in <FIG>, exemplary embodiments of systems and methods for task scheduling in a computing device may be provided in a portable computing device ("PCD") <NUM>. The PCD <NUM> may be an example of the computing device <NUM> described above with regard to <FIG>.

The PCD <NUM> may include an SoC <NUM>. The SoC <NUM> may include a CPU <NUM>, a GPU <NUM>, a DSP <NUM>, an analog signal processor <NUM>, or other processors. The CPU <NUM> may include multiple cores, such as a first core 704A, a second core 704B, etc., through an Nth core 704N. In some examples of the SoC <NUM>, the CPU <NUM> may be referred to as an application processor.

A display controller <NUM> and a touch-screen controller <NUM> may be coupled to the CPU <NUM>. A touchscreen display <NUM> external to the SoC <NUM> may be coupled to the display controller <NUM> and the touch-screen controller <NUM>. The PCD <NUM> may further include a video decoder <NUM> coupled to the CPU <NUM>. A video amplifier <NUM> may be coupled to the video decoder <NUM> and the touchscreen display <NUM>. A video port <NUM> may be coupled to the video amplifier <NUM>. A universal serial bus ("USB") controller <NUM> may also be coupled to CPU <NUM>, and a USB port <NUM> may be coupled to the USB controller <NUM>. A subscriber identity module ("SIM") card <NUM> may also be coupled to the CPU <NUM>.

One or more memories may be coupled to the CPU <NUM>. The one or more memories may include both volatile and non-volatile memories. Examples of volatile memories include static random access memory ("SRAM") <NUM> and dynamic RAMs ("DRAM"s) <NUM> and <NUM>. Such memories may be external to the SoC <NUM>, such as the DRAM <NUM>, or internal to the SoC <NUM>, such as the DRAM <NUM>. A DRAM controller <NUM> coupled to the CPU <NUM> may control the writing of data to, and reading of data from, the DRAMs <NUM> and <NUM>. In other embodiments, such a DRAM controller may be included within a processor, such as the CPU <NUM>.

A stereo audio CODEC <NUM> may be coupled to the analog signal processor <NUM>. Further, an audio amplifier <NUM> may be coupled to the stereo audio CODEC <NUM>. First and second stereo speakers <NUM> and <NUM>, respectively, may be coupled to the audio amplifier <NUM>. In addition, a microphone amplifier <NUM> may be coupled to the stereo audio CODEC <NUM>, and a microphone <NUM> may be coupled to the microphone amplifier <NUM>. A frequency modulation ("FM") radio tuner <NUM> may be coupled to the stereo audio CODEC <NUM>. An FM antenna <NUM> may be coupled to the FM radio tuner <NUM>. Further, stereo headphones <NUM> may be coupled to the stereo audio CODEC <NUM>. Other devices that may be coupled to the CPU <NUM> include one or more digital (e.g., CCD or CMOS) cameras <NUM>. In addition, a keypad <NUM>, a mono headset with a microphone <NUM>, and a vibrator device <NUM> may be coupled to the analog signal processor <NUM>.

A radio frequency (RF) transceiver or modem <NUM> may be coupled to the analog signal processor <NUM> and CPU <NUM>. An RF switch <NUM> may be coupled to the modem <NUM> and an RF antenna <NUM>.

The SoC <NUM> may have one or more internal or on-chip thermal sensors 770A and may be coupled to one or more external or off-chip thermal sensors 770B. An analog-to-digital converter ("ADC") controller <NUM> may convert voltage drops produced by the thermal sensors 770A and 770B to digital signals. A power supply <NUM> and a power management integrated circuit ("PMIC") <NUM> may supply power to the SoC <NUM>.

Firmware or software may be stored in any of the above-described memories, such as DRAM <NUM> or <NUM>, SRAM <NUM>, etc., or may be stored in a local memory directly accessible by the processor hardware on which the software or firmware executes. Execution of such firmware or software may control aspects of any of the above-described methods or configure aspects any of the above-described systems. Any such memory or other non-transitory storage medium having firmware or software stored therein in computer-readable form for execution by processor hardware may be an example of a "computer-readable medium," as the term is understood in the patent lexicon.

Claim 1:
A method (<NUM>) for task scheduling in a computing device, comprising:
receiving (<NUM>) a task (<NUM>) comprising a task performance level indication;
identifying (<NUM>) candidate processors for execution of the task comprising identifying least-loaded processors of a plurality of processors;
determining (<NUM>) a plurality of task scheduling cases, each task scheduling case representing execution of the task on a respective processor (<NUM>) of the candidate processors concurrently with one or more other tasks executing on the plurality of processors, each processor supplied by a voltage regulator (<NUM>) of a plurality of voltage regulators;
determining (<NUM>, <NUM>), for each task scheduling case, a total regulator input power level of the plurality of voltage regulators;
selecting (<NUM>) one of the task scheduling cases having a lowest total regulator input power level among the plurality of task scheduling cases; and
executing (<NUM>) the task on a processor associated with the selected one of the task scheduling cases,
wherein determining, for each task scheduling case, the total regulator input power level comprises:
determining (<NUM>), for each task scheduling case, a regulator input power level of each of the plurality of voltage regulators based on the task performance level indication, the one or more other tasks executing on the plurality of processors, and an efficiency level of each voltage regulator; and
determining (<NUM>), for each task scheduling case, the total regulator input power level based on the plurality of task scheduling cases by summing the regulator input power levels of the plurality of voltage regulators.