IP Library Granted Patent US 8,694,974
Granted Patent B2
US 8,694,974 · App. 12/432,635 · Granted Apr 8, 2014

Load-checking atomic section

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,694,974
App. No.
12/432,635
Granted
Apr 8, 2014
Kind
B2
Abstract

A compiled program has an advanced-load instruction and a load-checking atomic section. The load-checking atomic section follows the advanced-load instruction in the compiled program. The advanced-load instruction, when executed, loads a value from a shared memory address. The load-checking atomic section includes a check instruction for checking the validity of the shared memory address.

Claims (27)

1. A method comprising steps of executing a compiled program having a loading atomic section including a non-advanced-load instruction stored on a non-transitory computer-readable storage media, the steps comprising:

executing an advanced-load instruction that, accesses a shared memory address and loads a value therefrom, said advanced-load instruction corresponding to said non-advanced-load instruction;

executing a load-checking atomic section including a check instruction that performs the steps of:

checks whether or not said advanced-load instruction loaded a correct value when said advanced-load instruction was executed by determining whether the shared memory address accessed by the advanced-load instruction, when it was executed, was valid or invalid, wherein the shared memory address is represented by a respective entry in an advanced-load address table, and

in the event the shared memory address is determined to have been invalid, calling for said non-advanced-load instruction to be executed, said load-checking atomic section following said advanced-load instruction in said compiled program, said loading atomic section not including said check instruction.

2. A method as recited in claim 1 further comprising executing said advanced-load instruction so as to cause said shared memory address to be represented by a respective entry in said advanced-load address table.

3. A method as recited in claim 2 wherein said compiled program includes:

a first thread including said load-checking atomic section and said advanced-load instruction; and

a second thread including a second atomic section and store instruction to said shared memory address.

4. A method as recited in claim 3 further comprising executing said store instruction while said shared memory address is represented in said advanced-load address table by said respective entry so as to cause said entry to be marked invalid.

5. A method as recited in claim 4 further comprising executing said check instruction so as to determine whether or not said entry is invalid, said check instruction calling a recovery routine including said non-advanced-load instruction in response to a determination that said shared memory address is invalid.

6. A method as recited in claim 2 further comprising executing said check instruction so as to remove said entry from said advanced-load address table.

7. A system comprising non-transitory computer-readable storage media encoded with a program including:

an advanced-load instruction that, when executed, loads a value from a shared memory address; and

a load-checking atomic section including a check instruction that, when executed,

checks whether or not said advanced-load instruction loaded a correct value when said advanced-load instruction was executed by determining whether the shared memory address accessed by the advanced-load instruction, when it was executed was valid or invalid, wherein the shared memory address is represented by a respective entry in an advanced-load address table, and

in the event that the shared memory address is determined to have been invalid, calling for a non-advanced-load-instruction to be executed, said load-checking atomic section not including said advanced-load instruction.

8. A system as recited in claim 7 wherein said program is a compiler that converts a first program having first a non-load-checking atomic section including said non-advanced-load instruction into a second program in which said advanced-load instruction precedes said load-checking atomic section.

9. A system as recited in claim 8 including at least one processor for executing said compiler.

10. A system as recited in claim 8 wherein, if, when said check instruction is executed, said shared memory address is determined to be invalid, said check instruction calls for a second non-advanced-load instruction to be executed.

11. A system as recited in claim 7 wherein said check instruction, when executed, causes said shared memory address to be removed from said advanced load-address table.

12. A system as recited in claim 11 further comprising a first processor core for executing said program, said first processor core including said advanced-load address table for storing said shared memory address associated with said advanced-load instruction upon execution of said advanced-load instruction.

13. A system as recited in claim 12 further comprising:

a second processor core for executing a store instruction; and

a coherency function for marking said shared memory address in said advanced-load address table invalid a case in which a store-to address of said store instruction matches said shared memory address while said advanced-load instruction is represented in said advanced-load address table.

14. A system as recited in claim 12 wherein, if, when said check instruction is executed by said first processor core, said shared memory address is determined to be invalid, said check instruction calls for said non-advanced-load instruction to be executed.

15. A system as recited in claim 12 wherein said check instruction, when executed, causes said shared memory address to be removed from said advanced-load address table so that said shared memory address is no longer represented in said advanced-load address table.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 18, 2021
From: OT PATENT ESCROW, LLC
To: VALTRUS INNOVATIONS LIMITED
Reel/Frame 058897/0262 →
PATENT ASSIGNMENT, SECURITY INTEREST, AND LIEN AGREEMENT Recorded Jan 26, 2021
From: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP; HEWLETT PACKARD ENTERPRISE COMPANY
To: OT PATENT ESCROW, LLC
Reel/Frame 055269/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 9, 2015
From: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 037079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2009
From: KRISHNASWAMY, ARVIND
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 022653/0884 →