Legal claims defining the scope of protection, as filed with the USPTO.
1. A method comprising: individually monitoring execution of each a plurality of tasks by a processor system; calculating a progress error for each task during its execution, the progress error being equal to a differential between work completed by the task and work to be completed by the task and/or between a work completion rate for the task and a work to be completed rate for the task; identifying, based on the calculated progress errors, tasks requiring adjustment of performance resources; and adjusting performance resources of the processor system allocated to at least one identified task while such identified task continues to execute; wherein adjusting the performance resources comprise one or more of: adjusting a clock rate of at least one processor in the processor system executing the corresponding task; adjusting an amount of cache and/or buffers to be utilized by the corresponding task; or adjusting an amount of input/output (I/O) bandwidth to be utilized by the corresponding task; wherein the progress error is equal to (qt/Qi)*We−Wc, wherein qt is elapsed time since the task started executing, Qi is an expected time to complete the task, We is a value corresponding to work to be completed by the task, and Wc is a value corresponding to work completed by the task.
2. A method as in claim 1 , wherein each task is selected from a group comprising: a single task, a group of tasks, a thread, a group of threads, a single state machine, a group of state machines, a single virtual machine, and a group of virtual machines.
3. A method as in claim 1 , wherein the processor comprises a system selected from a group comprising: a single processor, a multi-processor, a processor system supporting simultaneous multi-threading, a multi-core processor.
4. A method as in claim 1 , wherein at least one task has an associated execution priority and an execution deadline, and wherein the performance resources of the processor system are adjusted using the calculated progress error to enable each identified task to be completed by its corresponding execution deadline and according to its corresponding execution priority.
5. A method as in claim 1 , wherein the performance resources are adjusted on a task-by-task basis.
6. A method as in claim 1 , wherein each task has an associated performance profile that is used, by a scheduler module, to establish the execution priority and the execution deadline for the task.
7. A method as in claim 6 , wherein the associated performance profile specifies at least one performance parameter.
8. A method as in claim 7 , wherein the performance parameter is a cache occupancy quota specifying an initial maximum and/or minimum amount of buffers to be used by the task, wherein the cache occupancy quota is dynamically adjusted during execution of the task using the calculated progress error.
9. A method as in claim 8 , wherein the cache occupancy quota is dynamically adjusted based on progress error for the task.
10. A method as in claim 8 , wherein the performance parameter specifies initial bandwidth requirements for the execution of the task, wherein the bandwidth requirements are dynamically adjusted during execution of the task.
11. A method as in claim 1 , further comprising: determining a processor clock demand rate required by each task; and computing an aggregate clock demand rate based on the determined processor clock demand rate for all tasks; wherein the processor system clock rate is adjusted to accommodate the aggregate clock demand rate.
12. A method as in claim 11 , wherein the processor system clock rate is adjusted to the aggregate clock demand rate plus an overhead demand rate.
13. A method as in claim 11 , wherein determining a processor clock demand rate is a product of a current processor system clock rate with expected execution time for completion of the task divided within a time interval.
14. A method as in claim 11 , wherein the processor clock demand rate for each task is updated based on progress errors affecting the performance of the task, wherein the aggregate clock demand rate is updated based on the updated processor clock demand rate for each task.
15. A method as in claim 14 , wherein the updating of the processor clock demand rate for each task or the aggregate clock demand rate uses at least one adaptation function to dampen or enhance rapid rate changes.
16. A method as in claim 11 , wherein a processor clock rate for each task is added to the aggregate clock demand rate when the task is ready-to-run.
17. A method as in claim 11 , wherein the aggregate clock demand rate is calculated over a period of time such that, at times, the processor system clock rate is higher than the aggregate clock demand rate, and at other times, the processor system clock rate is lower than the aggregate clock demand rate.
18. A method as in claim 11 , wherein the processor system comprises at least two processors, and wherein the aggregate clock demand rate is determined for each of the at least two processors and is based on the processor demand rate for tasks executing using the corresponding processor, and wherein the clock rate for each of the at least two processors are adjusted separately and accordingly.
19. A method as in claim 1 , wherein each task is allocated physical memory, and wherein the method further comprises: enabling at least one task to utilize at least one virtual memory address space, the at least one virtual memory address space being mapped to at least a portion of the physical memory.
20. A method comprising: monitoring execution of a plurality of tasks by a processor system to determine at least one monitored value for each of the tasks, the at least one monitored value characterizing at least one factor affecting performance of the corresponding task by the processor system, each task having an associated task performance profile that specifies at least one performance parameter including an execution deadline; and comparing, for each of the tasks, the corresponding monitored value with the corresponding at least one performance parameter specified in the associated task performance profile; determining, for each of the tasks based on the comparing, whether performance resources utilized for the execution of the task should be adjusted or whether performance resources utilized for the execution of the task should be maintained in order to meet the corresponding execution deadline; and adjusting performance resources by modifying a processor clock rate for each of the tasks while such tasks continue to execute for which it was determined that performance resources allocated to such task should be adjusted and maintaining performance resources for each of the tasks for which it was determined that performance resources allocated to the task should be maintained; wherein: the at least one monitored value comprises a progress error, the progress error is equal to (qt/Qi)*We−Wc, qt is elapsed time since the task started executing, Qi is an expected time to complete the task, We is a value corresponding to work to be completed by the task, and Wc is a value corresponding to work completed by the task.
21. A method as in claim 20 , wherein the monitored value characterizes an amount of work completed by the task.
22. A method as in claim 21 , wherein the amount of work completed by the task is derived from at least one of: an amount of data transferred when executing the task, a number of processor instructions completed when executing the task, processor cycles, and execution time.
23. A method as in claim 20 , further comprising: determining, for each task, a current program state for the task; wherein the associated task performance profile specifies two or more program states having different performance parameters, and wherein the monitored value is compared to the performance parameter for the current program state.
24. A method as in claim 20 , further comprising: modifying at least one performance profile of a task being executed so that a corresponding performance parameter is changed; wherein the monitored value is compared to the changed performance parameter.
25. A method as in claim 20 , further comprising: determining a processor clock demand rate required by each task; computing an aggregate clock demand rate based on the determined processor clock demand rate for all tasks; and adjusting a processor system clock to accommodate the aggregate clock demand rate.
26. A method as in claim 25 , further comprising: dynamically adjusting a processor clock demand rate required by a particular task based on a difference between an expected and completed work rate and at least one progress limiting rate.
27. A method as in claim 26 , wherein the processor clock demand rate required by each task is based on an expected time of completion of the corresponding task.
28. A method as in claim 27 , further comprising: reducing the processor system clock rate to a level that does not affect the expected time of completion of the tasks.
29. A method as in claim 26 , further comprising: reducing the processor system clock rate in either of a sleep or idle state until such time that the aggregate clock demand is greater than zero.
30. A method as in claim 26 , wherein the processor system clock rate fluctuates above and below the aggregate clock demand rate during a period of time provided that an average processor system clock rate during the period of time is above or equal to the aggregate clock demand rate.
31. A method as in claim 20 , wherein the performance profile further specifies an occupancy quota influencing an amount of cache and/or buffers a task can utilize.
32. A method as in claim 31 , wherein the occupancy quota is dynamically adjusted based on a difference between an expected or completed work rate and at least one progress limiting rate.
33. A method as in claim 20 , wherein utilization of bandwidth by an input/output subsystem of the processor system is controlled so that performance requirements of each task are met.
34. A method as in claim 33 , wherein an amount of bandwidth utilized is dynamically adjusted based on a difference between an expected and completed work rate and at least one progress limiting rate.
35. A processor system comprising: at least one processor; a plurality of buffers; a scheduler module to schedule a plurality of tasks to be executed by the at least one processor; a metering module to individually monitor execution of each of the plurality of tasks including progress errors and to identify tasks that require additional processing resources in order to meet corresponding pre-defined execution deadlines, the progress error being equal to a differential between work completed by a corresponding task and work to be completed by the task and/or between a work completion rate for the task and a work to be completed rate for the task; an adaptive clock manager module to selectively adjust a clock rate of the at least one processor when executing a task; a cache occupancy manager module to selectively adjust a maximum amount of cache and/or buffers to be utilized by a task during its execution; and an input/output bandwidth manager module to selectively adjust a maximum amount of input/output (I/O) bandwidth to be utilized by a task; wherein the progress error is equal to (qt/Qi)*We−Wc, wherein qt is elapsed time since the task started executing, Qi is an expected time to complete the task, We is a value corresponding to work to be completed by the task, and Wc is a value corresponding to work completed by the task.
36. A method as in claim 19 , wherein a total size of virtual memory address space for all tasks is larger than a total of physical memory allocated to all tasks.
37. A method comprising: individually monitoring execution of each of a plurality of tasks by a processor system comprising memory; calculating a progress error for each task during its execution, wherein the progress error is equal to (qt/Qi)*We−Wc, wherein qt is elapsed time since the task started executing, Qi is an expected time to complete the task, We is a value corresponding to work to be completed by the task, and Wc is a value corresponding to work completed by the task; identifying, based on the calculated progress error, tasks requiring adjustment of performance resources; and adjusting, based on the identifying, performance resources of the processor system allocated to at least one identified task while it continues to execute; wherein adjusting the performance resources comprise one or more of: adjusting a clock rate of at least one processor in the processor system executing the corresponding task; adjusting an amount of cache and/or buffers to be utilized by the corresponding task; or adjusting an amount of input/output (I/O) bandwidth to be utilized by the corresponding task.
38. A method as in claim 1 , wherein the work completed is based on one or more of: a number of processor cycles, an amount of data transference, or instructions completed by the corresponding task.
39. A system as in claim 35 , wherein the work completed is based on one or more of: a number of processor cycles, an amount of data transference, or instructions completed by the corresponding task.
Unknown
July 15, 2014
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.