IP Library Granted Patent US 7,823,141
Granted Patent B1
US 7,823,141 · App. 11/240,963 · Granted Oct 26, 2010

Using a concurrent partial inspector loop with speculative parallelism

Assignee: Oracle America, Inc.
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 7,823,141
App. No.
11/240,963
Granted
Oct 26, 2010
Kind
B1
Abstract

A method for executing a loop in an application that includes executing iterations in a first segment of the loop by a base thread, logging memory transactions that occur during execution of iterations in the first segment by a co-inspector thread to obtain a co-inspector log, executing iterations in a second segment of the loop by a co-thread to obtain temporary results, logging memory transactions that occur during execution of iterations in the second segment to obtain a co-thread log, and comparing the co-inspector log and the co-thread log to determine whether a thread interdependency exists.

Claims (44)

1. A method for executing a loop in an application comprising:

executing iterations in a first segment of the loop by a base thread;

logging memory transactions that occur during execution of iterations in the first segment by a co-inspector thread to obtain a co-inspector log;

executing iterations in a second segment of the loop by a co-thread to obtain temporary results;

logging memory transactions that occur during execution of iterations in the second segment to obtain a co-thread log;

identifying a thread interdependency by comparing the co-inspector log and the co-thread log;

determining, after executing iterations in the first segment, a location of the thread interdependency in the second segment;

committing temporary results up to the location; and

re-starting execution of the second segment at the location by the base thread.

2. The method of claim 1 , wherein the thread interdependency is associated with an indeterminable variable.

3. The method of claim 1 , wherein logging the memory transactions by the co-thread comprises:

executing a subset of instructions associated with an indeterminable variable in the first segment; and

logging memory transactions associated with the indeterminable variable.

4. The method of claim 1 , wherein the loop comprises a plurality of instrumented code instructions.

5. The method of claim 4 , wherein the plurality of instrumented code instructions enable logging of indeterminable variables in the loop.

6. The method of claim 1 , wherein the base thread, the co-inspector thread, and the co-thread execute in parallel.

7. The method of claim 1 , wherein comparing the co-inspector log and the co-thread log occurs after the co-inspector thread completes logging a portion of the first segment.

8. The method of claim 1 , wherein comparing the co-inspector log and the co-thread log occurs after the base thread completes logging a portion of the first segment.

9. A computer system for executing a loop comprising:

a processor; and

a memory operatively connected to the processor and storing a plurality of instructions comprising functionality to:

execute iterations in a first segment of the loop by a base thread;

log memory transactions that occur during execution of iterations in the first segment by a co-inspector thread to obtain a co-inspector log;

execute iterations in a second segment of the loop by a co-thread to obtain temporary results;

log memory transactions that occur during execution of iterations in the second segment to obtain a co-thread log;

identify a thread interdependency by comparing the co-inspector log and the co-thread log;

determine, after executing iterations in the first segment, a location of the thread interdependency in the second segment;

commit temporary results up to the location; and

re-start execution of the second segment at the location by the base thread.

10. The computer system of claim 9 , wherein the plurality of instructions further comprise functionality to:

commit results of the execution of the base thread.

11. The computer system of claim 9 , wherein the base thread, the co-inspector thread, and the co-thread execute in parallel.

12. A distributed computer system for executing a loop in an application comprising:

a first processor;

a second processor; and

a memory operatively connected to the first processor and the second processor and comprising software instructions for causing the distributed computer system to perform a method of:

executing, on the first processor, iterations in a first segment of the loop by a base thread;

logging memory transactions that occur during execution of iterations in the first segment by a co-inspector thread to obtain a co-inspector log;

executing, on the second processor, iterations in a second segment of the loop by a co-thread to obtain temporary results;

logging memory transactions that occur during execution of iterations in the second segment to obtain a co-thread log;

identifying a thread interdependency by comparing the co-inspector log and the co-thread log;

determining, after executing iterations in the first segment, a location of the thread interdependency in the second segment;

committing temporary results up to the location; and

re-starting execution of the second segment at the location by the base thread.

Assignments (3)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037306/0530 →
RECORD TO CORRECT THE 2ND CONVEYING PARTY'S NAME, PREVIOUSLY RECORDED AT REEL 017056, FRAME 0135. Recorded Mar 14, 2006
From: GUSTAFSON, PHYLLIS E.; PALECZNY, MICHAEL H.; VICK, CHRISTOPHER A.; MANCZAK, OLAF; FREEMAN, JAY R.; WU, YUGUANG
To: SUN MICROSYSTEMS, INC.
Reel/Frame 017686/0942 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 30, 2005
From: GUSTAFSON, PHYLLIS E.; PALEXZNY, MICHAEL G.; VICK, CHRISTOPHER A.; MANCZAK, OLAF; FREEMAN, JAY R.; WU, YUGUANG
To: SUN MICROSYSTEMS, INC.
Reel/Frame 017056/0135 →