IP Library Granted Patent US 9,323,571
Granted Patent B2
US 9,323,571 · App. 10/774,178 · Granted Apr 26, 2016

Methods for reducing energy consumption of buffered applications using simultaneous multi-threading processor

Inventors: Minerva M. Yeung (Sunnyvale, CA); Yen-Kuang Chen (Sunnyvale, CA)
Assignee: Intel Corporation
G06F9/50G06F1/3203G06F1/324G06F1/3296G06F9/3851G06F9/485G06F9/5011G06F9/5094G06F1/32Y02B60/1217Y02B60/1285Y02B60/142Y02B60/144Y02B60/32
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,323,571
App. No.
10/774,178
Granted
Apr 26, 2016
Kind
B2
Abstract

A state of an application running in a system is monitored. The monitoring of the application states includes monitoring one or more buffers associated with the application. Dispatch of one or more threads in the system is controlled. At least one thread in the system is associated with the application. Resources in the system are managed based at least on the state of the application and the state of the one or more threads in the system.

Claims (34)

1. A method, comprising:

monitoring a state of a multi-threaded application running in a system and a buffer associated with the multi-threaded application, wherein each thread includes one or more activities to be executed by the system;

determining availability of a processor to perform simultaneous multi-threading and the buffer;

coordinating dispatch of threads of the multi-threaded application to increase execution overlap of activities executing in the system based, at least in part, on the availability of the buffer;

dynamically adjusting one or more of a frequency or a voltage applied to the processor based, at least in part, on the availability of the buffer and the coordination of the dispatch of the threads; and

dynamically adjusting the buffer size based, at least in part, on the adjusted voltage or frequency applied to the processor and the coordination of the dispatch of the threads.

2. The method of claim 1 , wherein coordinating dispatch of the threads of the multi-threaded application includes assessing execution readiness of the one or more activities of each thread.

3. The method of claim 2 , wherein coordinating dispatch of the threads of the multi-threaded application includes delaying a ready-to-be-dispatched activity from being dispatched.

4. The method of claim 3 , wherein a first activity is delayed from being dispatched to wait for a second activity to be ready so that both the first and second activities are dispatched together, and wherein the first and second activities are from one or more applications.

5. The method of claim 1 , further comprising

determining the availability of configurable hardware components including an arithmetic logic unit (ALU), and registers in the system, wherein coordinating dispatch of the threads of the multi-threaded application is further based on the availability of the configurable hardware components.

6. The method of claim 5 , wherein adjusting the voltage applied to the processor includes powering on or powering off at least a portion of circuitry in the system.

7. The method of claim 1 , wherein monitoring the buffer associated with the multi-threaded application includes monitoring buffer fullness levels of the buffer.

8. The method of claim 7 , wherein monitoring the buffer fullness levels includes comparing the buffer level with predetermined buffer fullness levels, wherein the predetermined buffer fullness levels include a high level mark and a low level mark.

9. The method of claim 8 , wherein comparing the buffer level includes determining buffer overflow and buffer underflow conditions based, at least in part, on the high level mark and the low level mark.

10. A non-transitory computer readable storage medium containing executable instructions which, when executed in a processing system, causes the processing system to perform a method comprising:

monitoring a state of a multi-threaded application running in the processing system and a buffer associated with the multi-threaded application, wherein each thread includes one or more activities to be executed by the processing system;

determining availability of a processor to perform simultaneous multi-threading and the buffer;

coordinating dispatch of threads of the multi-threaded application to increase execution overlap of activities executing in the system based, at least in part, on the availability of the buffer;

dynamically adjusting one or more of a frequency or a voltage applied to the processor based, at least in part, on the availability of the buffer and the coordination of the dispatch of the threads; and

dynamically adjusting the buffer size based, at least in part, on the adjusted voltage or frequency applied to the processor and the coordination of the dispatch of the threads.

11. The computer readable storage medium of claim 10 , wherein coordinating dispatch of the threads of the multi-threaded application includes delaying a ready-to-be-dispatched activity from being dispatched.

12. The computer readable storage medium of claim 10 ,

wherein monitoring the buffer associated with the multi-threaded application includes monitoring buffer fullness levels of the buffer, and wherein monitoring the buffer fullness levels includes comparing the buffer level with predetermined buffer fullness levels, wherein the predetermined buffer fullness levels include a high level mark and a low level mark.

13. A system, comprising:

a memory to store data and instructions;

a processor coupled to said memory on a bus, said processor operable to perform instructions, said processor to include a bus unit to receive a sequence of instructions from said memory;

an execution unit coupled to said bus unit, said execution unit to execute said sequence of instructions, said sequence of instructions to cause said execution unit to:

monitor a state of a multi-threaded application running in the system and a buffer associated with the multi-threaded application, wherein each thread includes one or more activities to be executed by the system;

determine availability of a processor to perform simultaneous multi-threading and the buffer;

coordinate dispatch of threads of the multi-threaded application to increase execution overlap of activities executing in the system based, at least in part, on the availability of the buffer;

dynamically adjust one or more of a frequency or a voltage applied to the processor based, at least in part, on the availability of the buffer and the coordination of the dispatch of the threads; and

dynamically adjust the buffer size based, at least in part, on the adjusted voltage or frequency applied to the processor and the coordination of the dispatch of the threads.

14. The system of claim 13 , wherein said coordinating dispatch of the threads of the multi-threaded application includes delaying a ready-to-be-dispatched activity from being dispatched.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 9, 2004
From: YEUNG, MINERVA M.; CHEN, YEN-KUANG
To: INTEL CORPORATION
Reel/Frame 015656/0539 →
Continuity (1)
Related Publication 20050188189A1 · Aug 25, 2005