IP Library Granted Patent US 8,340,952
Granted Patent B2
US 8,340,952 · App. 12/403,156 · Granted Dec 25, 2012

Power estimation method and device therefor

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 8,340,952
App. No.
12/403,156
Granted
Dec 25, 2012
Kind
B2
Abstract

A set of instructions executable at an integrated circuit is partitioned into multiple instruction blocks. A first and second instruction block are executed multiple times, including a first execution and a second execution. The first execution of the first instruction block is associated with a first set of executions, and the first execution of the second instruction block is associated with a second set of executions. A first amount of energy consumption representative of a member of the first set of executions is determined, and a second amount of energy consumption representative of a member of the second set of executions is determined. The first amount of energy is assigned to each member of the first set, and the second amount of energy is assigned to each member of the second set, and used to determine a total amount of energy consumption associated with execution of the set of instructions.

Claims (59)

1. A method comprising:

partitioning a set of instructions executable at an integrated circuit into a plurality of instruction blocks, wherein each instruction of the set of instructions is a member of exactly one instruction block, each instruction block includes at least two instructions, and the last instruction included at each instruction block is a non-sequential instruction;

simulating, at a computer, execution of the set of instructions at a first software representation of the integrated circuit, wherein during execution of the set of instructions a first instruction block is executed a plurality of times, including a corresponding first execution and second execution, and a second instruction block is executed a plurality of times including a corresponding first execution and second execution, the simulating further to determine a value representing a record of a state of design attributes of the integrated circuit during each execution;

associating the first execution of the first instruction block with a first set of executions based on the determined value;

associating the second execution of the first instruction block with a second set of executions based on the determined value;

determining, using a second software representation of the integrated circuit, a first amount of energy consumption that is representative of a member of the first set of executions;

determining, using the second software representation, a second amount of energy consumption that is representative of a member of the second set of executions;

assigning the first amount of energy consumption to each member of the first set of executions;

assigning the second amount of energy consumption to each member of the second set of executions; and

determining a total amount of energy consumption associated with execution of the set of instructions, the total amount of energy consumption based on energy consumed by a plurality of sets of executions including the first set and the second set of executions, wherein each member of the first set of executions contributes the assigned first amount of energy consumption to the total amount of energy consumption, and each member of the second set of executions contributes the assigned second amount of energy consumption to the total amount of energy consumption.

2. The method of claim 1 further comprising:

associating the first execution of the second instruction block with a third set of executions based on the determined value.

3. The method of claim 1 further comprising:

associating the second execution of the second instruction block with a third set of executions based on the determined value.

4. The method of claim 2 , further comprising associating all executions of the second instruction block with the third set of executions based on the determined value.

5. The method of claim 1 ,

wherein associating the first execution of the first instruction block with the first set of executions is based on the determined value stored at a register included at the first design representation of the integrated circuit.

6. The method of claim 5 further comprising:

associating the first execution of the first instruction block with the first set of executions in response to a first bit of the register having a first logic value, and associating the second execution of the first instruction block with the second set of executions in response to the first bit having a second logic value.

7. The method of claim 1 , wherein

associating the first execution of the first instruction block with the first set of executions is based on the determined value stored at a cache memory.

8. The method of claim 1 , wherein

associating the first execution of the first instruction block with the first set of executions is based on the determined value stored at a memory stack.

9. The method of claim 1 , wherein

partitioning further comprises partitioning each instruction block of the plurality of instructions blocks include only one non-sequential instruction.

10. The method of claim 1 , wherein

determining the first amount of energy consumption that is representative of the member of the first set of executions includes simulating the operation of the first execution of the first instruction block, wherein the energy consumption that is representative of the member of the first set of executions is based on the simulation of the first execution of the first instruction block.

11. The method of claim 10 , wherein

an energy consumption that is representative of the member of the first set of executions is based only upon the simulation of the first execution of the first instruction block.

12. The method of claim 10 , wherein

the first software representation includes a register-transfer-level representation of the integrated circuit and the second software representation includes a gate level or transistor level representation of the integrated circuit.

13. A device comprising:

a memory;

a partition module coupled to the memory to receive a set of instructions executable at an integrated circuit, and to partition the set of instruction into a plurality of instruction blocks, wherein each instruction of the set of instructions is a member of exactly one instruction block, each instruction block includes at least two instructions, and the last instruction included at each instruction block is a non-sequential instruction;

a simulation module coupled to the memory and to the partition module to simulate execution of the set of instructions at a first software representation of the integrated circuit, wherein during execution of the set of instructions a first instruction block is to be executed a plurality of times, including a corresponding first execution and second execution, and a second instruction block is to be executed a plurality of times, including a corresponding first execution and second execution, the simulating further to determine a value representing a record of a state of design attributes of the integrated circuit during each execution;

a classification module coupled to the memory and to the simulation module to associate the first execution of the first instruction block with a first set of executions, and to associate the second execution of the first instruction block with a second set of executions, the associating based on the determined value;

an energy characterization module coupled to the memory and to the classification module to determine a first amount of energy consumption that is representative of a member of the first set of executions, and to determine a second amount of energy consumption representative of a member of the second set of executions, the energy characterization module to simulate operation of a second software representation of the integrated circuit;

an assignment module coupled to the memory and to the energy characterization module to assign the first amount of energy consumption to each member of the first set of executions, and to assign the second amount of energy consumption to each member of the second set of executions; and

an analysis module coupled to the memory and to the assignment module to determine a total amount of energy consumption associated with execution of the set of instructions, the total amount of energy consumption based on energy consumed by a plurality of sets of executions including the first set and the second set of executions, wherein each member of the first set of executions contributes the assigned first amount of energy consumption to the total amount of energy consumption, and each member of the second set of executions contributes the assigned second amount of energy consumption to the total amount of energy consumption.

14. The device of claim 13 wherein the classification module is to further associate the first execution of the second instruction block with a third set of executions based on the determined value.

15. The device of claim 13 , wherein:

the classification module is to further associate the first execution of the second instruction block with a third set of executions;

the energy characterization module is to further determine a third amount of energy consumption representative of a member of the third set of executions;

the assignment module is to further assign the third amount of energy consumption to each member of the third set of executions; and

the analysis module wherein each member of the third set of executions contributes the third amount of energy consumption to the total amount of energy consumption.

16. A non-transitory computer readable medium embodying a software program, the software program comprising executable instructions configured to manipulate at least one processor to:

partition a set of instructions executable at an integrated circuit into a plurality of instruction blocks, wherein each instruction of the set of instructions is a member of exactly one instruction block, each instruction block includes at least two instructions, and the last instruction included at each instruction block is a non-sequential instruction;

simulate execution of the set of instructions at a first software representation of the integrated circuit, wherein during execution of the set of instructions a first instruction block of the plurality of instruction blocks is executed a plurality of times, including a corresponding first execution and second execution, and a second instruction block of the plurality of instruction blocks is executed a plurality of times, including a corresponding first execution and second execution, the simulating further to determine a value representing a record of a state of design attributes of the integrated circuit during each execution;

associate the first execution of the first instruction block with a first set of executions based on the determined value;

associate the first execution of the second instruction block with a second set of executions based on the determined value;

determine, using a second software representation of the integrated circuit a first amount of energy consumption that is representative of a member of the first set of executions;

determine, using the second software representation of the integrated circuit, a second amount of energy consumption that is representative of a member of the second set of executions;

assign the first amount of energy consumption to each member of the first set of executions;

assign the second amount of energy consumption to each member of the second set of executions; and

determine a total amount of energy consumption associated with execution of the set of instructions, the total amount of energy consumption based on energy consumed by a plurality of sets of executions including the first set and the second set of executions, wherein each member of the first set of executions contributes the assigned first amount of energy consumption to the total amount of energy consumption, and each member of the second set of executions contributes the assigned second amount of energy consumption to the total amount of energy consumption.

17. The computer readable medium of claim 16 , the software program is further configured to manipulate the at least one processor to:

associate the first execution of the first instruction block with the first set of executions based on the determined value stored at a register included at the first software representation of the integrated circuit.

18. The computer readable medium of claim 1 ,, wherein the software program is further configured to manipulate the at least one processor to:

associate the first execution of the first instruction block with the first set of executions in response to a first bit of the register having a first logic value, and associating the second execution of the first instruction block with the second set of executions in response to the first bit of the register having a second logic value.

Assignments (27)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Dec 10, 2019
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 053547/0421 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042985 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042762 FRAME 0145. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051145/0184 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051030/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0387 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050745/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO. FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536. ASSIGNOR(S) HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS.. Recorded Feb 20, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SHENZHEN XINGUODU TECHNOLOGY CO., LTD.
Reel/Frame 048734/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042762/0145 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042985/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Feb 1, 2017
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 041703/0536 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040652 FRAME: 0241. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Jan 5, 2017
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 041260/0850 →
MERGER Recorded Nov 8, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 040652/0241 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12092129 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Jul 14, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039361/0212 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
SECURITY AGREEMENT SUPPLEMENT Recorded Mar 7, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 038017/0058 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 13, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037518/0292 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 12, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037486/0517 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037354/0793 →
SECURITY AGREEMENT Recorded Nov 6, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 031591/0266 →
SECURITY AGREEMENT Recorded Jun 18, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030633/0424 →
SECURITY AGREEMENT Recorded May 19, 2009
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A.
Reel/Frame 022703/0405 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 12, 2009
From: SHARMA, PUNEET; HOLT, JAMES C.; KHOURI, KAMAL S.; AL SUKHNI, HASSAN
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 022387/0057 →