IP Library Granted Patent US 9,690,360
Granted Patent B2
US 9,690,360 · App. 14/998,273 · Granted Jun 27, 2017

Technologies for discontinuous execution by energy harvesting devices

Inventor: Sara S. Baghsorkhi (San Jose, CA)
Assignee: Intel Corporation
G06F1/329G06F8/4432G06F11/1474G06F2201/805G06F2201/85
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,690,360
App. No.
14/998,273
Granted
Jun 27, 2017
Kind
B2
Abstract

Technologies for discontinuous execution include a compiler computing device and one or more target computing devices. The compiler computing device converts a computer program into a sequence of atomic transactions and coalesces the transactions to generate additional sequences of transactions. The compiler computing device generates an executable program including two or more sequences of transactions having different granularity. A target computing device selects an active sequence of transactions from the executable program based on the granularity of the sequence and a confidence level. The confidence level is indicative of available energy produced by an energy harvesting unit of the target computing device. The target computing device increases the confidence level in response to successfully committing transactions from the active sequence of transactions into non-volatile memory. In response to a power failure, the target computing device resets the confidence level and resumes executing the transactions. Other embodiments are described and claimed.

Claims (68)

1. A computing device for compiling code for a target device, the computing device comprising:

a compiler analysis module to (i) convert a computer program into a first sequence of transactions and (ii) coalesce the first sequence of transactions to generate a second sequence of transactions, wherein the second sequence of transactions has a granularity that is more coarse than a granularity of the first sequence of transactions; and

a code generation module to generate an executable program for the target device, wherein the executable program includes the first sequence of transactions and the second sequence of transactions, and wherein the executable program selects between the first sequence of transactions and the second sequence of transactions at runtime based on available energy.

2. The computing device of claim 1 , wherein to convert the computer program into the first sequence of transactions comprises to statically analyze the computer program to identify a sequence of basic blocks, wherein each transaction of the first sequence of transactions comprises a basic block.

3. The computing device of claim 1 , further comprising a profiler module, wherein:

the compiler analysis module is further to coalesce the first sequence of transactions to generate a third sequence of transactions, wherein the third sequence of transactions has a granularity that is more coarse than the granularity of the first sequence of transactions and that is different from the granularity of the second sequence of transactions;

the profiler module is to collect an energy profile in relation to the target device for each of the first sequence of transactions, the second sequence of transactions, and the third sequence of transactions, wherein the energy profile is indicative of energy consumed by the target device to execute a transaction of the corresponding sequence of transactions;

the code generation module is to select a sequence of transactions from the second sequence of transactions and the third sequence of transactions based on the energy profiles; and

to generate the executable program for the target device wherein the executable program includes the first sequence of transactions and the second sequence of transactions comprises to generate the executable program for the target device in response to selection of the second sequence of transactions.

4. The computing device of claim 3 , wherein:

the profiler module is further to collect an available energy profile in relation to the target device; and

to select the sequence of transactions from the second sequence of transactions and the third sequence of transactions further comprises to select the sequence of transactions from the second sequence of transactions and the third sequence of transactions based on the available energy profile.

5. One or more non-transitory, machine readable storage media comprising a plurality of instructions that in response to being executed cause a computing device to:

convert a computer program into a first sequence of transactions;

coalesce the first sequence of transactions to generate a second sequence of transactions, wherein the second sequence of transactions has a granularity that is more coarse than a granularity of the first sequence of transactions; and

generate an executable program for the target device including the first sequence of transactions and the second sequence of transactions, wherein the executable program selects between the first sequence of transactions and the second sequence of transactions at runtime based on available energy.

6. The one or more non-transitory, machine readable storage media of claim 5 , wherein to convert the computer program into the first sequence of transactions comprises to statically analyze the computer program to identify a sequence of basic blocks, wherein each transaction of the first sequence of transactions comprises a basic block.

7. The one or more non-transitory, machine readable storage media of claim 5 , further comprising a plurality of instructions that in response to being executed cause the computing device to:

coalesce the first sequence of transactions to generate a third sequence of transactions, wherein the third sequence of transactions has a granularity that is more coarse than the granularity of the first sequence of transactions and that is different from the granularity of the second sequence of transactions;

collect an energy profile in relation to the target device for each of the first sequence of transactions, the second sequence of transactions, and the third sequence of transactions, wherein the energy profile is indicative of energy consumed by the target device to execute a transaction of the corresponding sequence of transactions; and

select a sequence of transactions from the second sequence of transactions and the third sequence of transactions based on the energy profiles;

wherein to generate the executable program for the target device including the first sequence of transactions and the second sequence of transactions comprises to generate the executable program for the target device in response to selecting the second sequence of transactions.

8. The one or more non-transitory, machine readable storage media of claim 7 , further comprising a plurality of instructions that in response to being executed cause the computing device to:

collect an available energy profile in relation to the target device;

wherein to select the sequence of transactions from the second sequence of transactions and the third sequence of transactions further comprises to select the sequence of transactions from the second sequence of transactions and the third sequence of transactions based on the available energy profile.

9. A target computing device for consistent code execution, the target computing device comprising:

a power management module to initialize a confidence level to a minimum value, wherein the confidence level is indicative of available energy produced by an energy harvesting unit of the target computing device; and

a code execution module to (i) select an active sequence of transactions from an executable program based on a granularity of the active sequence of transactions and the confidence value, wherein the executable program includes a plurality of sequences of transactions, and wherein each sequence of transactions of the plurality of transactions has a different granularity, and (ii) execute a transaction of the active sequence of transactions in response to selection of the active sequence of transactions;

wherein the power management module is further to (i) attempt to commit the transaction of the active sequence of transactions in response to execution of the transaction, (ii) determine whether the transaction of the active sequence of transactions has successfully committed in response to an attempt to commit the transaction, and (iii) increase the confidence level in response to a determination that the transaction of the active sequence of transactions has successfully committed.

10. The target computing device of claim 9 , further comprising a recovery module to recover execution of the executable program in response to a determination that the transaction of the active sequence of transactions has not successfully committed.

11. The target computing device of claim 10 , wherein to recover execution of the executable program comprises to reset the confidence value to the minimum value in response to the determination that the transaction of the active sequence of transactions has not successfully committed.

12. The target computing device of claim 9 , wherein to execute the transaction of the active sequence of transactions comprises to log changes made to a non-volatile memory of the target computing device in a non-volatile memory log stored in the non-volatile memory.

13. The target computing device of claim 12 , wherein to execute the transaction of the active sequence of transactions further comprises to log changes made to a volatile memory of the target computing device in a volatile memory log stored in the non-volatile memory.

14. The target computing device of claim 13 , wherein to attempt to commit the transaction of the active sequence of transactions comprises to:

update a commit status flag stored in the non-volatile memory to in-progress in response to an attempt to commit the transaction;

copy changes from the volatile memory log to a shadow volatile memory copy stored in the non-volatile memory in response to an update of the commit status flag to in-progress; and

update the commit status flag to complete in response to a copying of the changes from the volatile memory log to the shadow volatile memory copy.

15. The target computing device of claim 14 , further comprising a recovery module to recover execution of the executable program in response to a determination that the transaction of the active sequence of transactions has not successfully committed, wherein to recover execution of the executable program comprises to:

determine whether the commit status flag is in-progress;

restore the non-volatile memory based on the non-volatile memory log in response to a determination that the commit status flag is not in-progress;

restore the volatile memory based on the volatile memory shadow copy; and

reset the confidence level to the minimum value in response to restoration of the volatile memory.

16. The target computing device of claim 15 , wherein to recover execution of the executable program further comprises to:

restart execution of the transaction of the active sequence of transactions in response to the determination that the commit status flag is not in-progress; and

restart an attempt to commit the transaction of the active sequence of transactions in response to a determination that the commit status flag is in-progress.

17. One or more non-transitory, machine readable storage media comprising a plurality of instructions that in response to being executed cause a target computing device to:

initialize a confidence level to a minimum value, wherein the confidence level is indicative of available energy produced by an energy harvesting unit of the target computing device;

select an active sequence of transactions from an executable program based on a granularity of the active sequence of transactions and the confidence value, wherein the executable program includes a plurality of sequences of transactions, and wherein each sequence of transactions of the plurality of transactions has a different granularity;

execute a transaction of the active sequence of transactions in response to selecting the active sequence of transactions;

attempt to commit the transaction of the active sequence of transactions in response to executing the transaction;

determine whether the transaction of the active sequence of transactions has successfully committed in response to attempting to commit the transaction; and

increase the confidence level in response to determining that the transaction of the active sequence of transactions has successfully committed.

18. The one or more non-transitory, machine readable storage media of claim 17 , further comprising a plurality of instructions that in response to being executed cause the target computing device to recover execution of the executable program in response to determining that the transaction of the active sequence of transactions has not successfully committed.

19. The one or more non-transitory, machine readable storage media of claim 17 , wherein to recover execution of the executable program comprising to reset the confidence value to the minimum value in response to determining that the transaction of the active sequence of transactions has not successfully committed.

20. The one or more non-transitory, machine readable storage media of claim 17 , wherein to execute the transaction of the active sequence of transactions comprises to log changes made to a non-volatile memory of the target computing device in a non-volatile memory log stored in the non-volatile memory.

21. The one or more non-transitory, machine readable storage media of claim 20 , wherein to execute the transaction of the active sequence of transactions further comprises to log changes made to a volatile memory of the target computing device in a volatile memory log stored in the non-volatile memory.

22. The one or more non-transitory, machine readable storage media of claim 21 , wherein to attempt to commit the transaction of the active sequence of transactions comprises to:

update a commit status flag stored in the non-volatile memory to in-progress in response to attempting to commit the transaction;

copy changes from the volatile memory log to a shadow volatile memory copy stored in the non-volatile memory in response to updating the commit status flag to in-progress; and

update the commit status flag to complete in response to copying the changes from the volatile memory log to the shadow volatile memory copy.

23. The one or more non-transitory, machine readable storage media of claim 22 , further comprising a plurality of instructions that in response to being executed cause the target computing device to recover execution of the executable program in response to determining that the transaction of the active sequence of transactions has not successfully committed, wherein to recover execution of the executable program comprises to:

determine whether the commit status flag is in-progress;

restore the non-volatile memory based on the non-volatile memory log in response to determining that the commit status flag is not in-progress;

restore the volatile memory based on the volatile memory shadow copy; and

reset the confidence level to the minimum value in response to restoring the volatile memory.

24. The one or more non-transitory, machine readable storage media of claim 23 , wherein to recover execution of the executable program further comprises to:

restart executing the transaction of the active sequence of transactions in response to determining that the commit status flag is not in-progress; and

restart attempting to commit the transaction of the active sequence of transactions in response to determining that the commit status flag is in-progress.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 9, 2016
From: BAGHSORKHI, SARA S.
To: INTEL CORPORATION
Reel/Frame 037932/0001 →
Continuity (2)
Provisional Application 62204815 · Aug 13, 2015
Related Publication 20170045927A1 · Feb 16, 2017