IP Library Patent Application 12391248
Patent Application
App. No. 12/391,248

Commit Groups for Strand-Based Computing

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 None
App. No.
12/391,248
Abstract

Strand-based computing hardware and dynamically optimizing strandware are included in a high performance microprocessor system. The system operates in real time automatically and unobservably to parallelize single-threaded software into parallel strands for execution by cores implemented in a multi-core and/or multi-threaded microprocessor of the system. The system organizes native instructions of the strands into commit groups. With respect to each commit group, results are either atomically committed or entirely discarded. A hierarchical two-level rollback mechanism enables rolling back at a granularity of a single one of the commit groups, or alternatively rollback at a granularity of an entire strand. The system operates to respond to local events (e.g. branch misprediction) via rollback of commit groups, and to global events (e.g. strand-level mis-speculation) via rollback of strands. Rolling back of commit groups of a particular strand only affects commit groups of the particular strand, leaving other strands unaffected.

Claims (65)

1 . A method, comprising:

dynamically constructing a strand-organized-thread-portion of at least one of one or more threads, wherein the strand-organized-thread-portion of the at least one strand-organized thread comprises a respective plurality of strand images, wherein each strand image is enabled to comprise a plurality of commit groups, wherein each commit group is enabled to comprise a plurality of operations;

simultaneously executing an intra-thread plurality of strands corresponding to the plurality of strand images of the at least one strand-organized-thread-portion; and

operating strand-state associated with each executing strand of the plurality of strands, wherein each strand-state is enabled to comprise at least a strand-wide version of user visible state, and wherein each strand-state is further enabled to comprise a respective commit-group-specific version of user visible state for each executing commit group of the commit groups.

2 . The method of claim 1 , wherein at least some of the strand images are enabled to overlap and at least other of the strand images are enabled to be disjoint.

3 . The method of claim 1 , wherein at least some of the commit groups are enabled to overlap and at least other of the commit groups are enabled to be disjoint.

4 . The method of claim 1 , wherein for at least one of the executing strands, each commit group operation comprises a VLIW bundle.

5 . The method of claim 1 , wherein for at least one of the executing strands, each commit group operation comprises a basic block.

6 . The method of claim 5 , wherein at least some of the basic blocks comprise one or more macro instructions.

7 . The method of claim 5 , wherein at least some of the basic blocks comprise one or more uops.

8 . The method of claim 1 , wherein for at least one of the executing strands, a plurality of the commit groups of the executing strand are enabled to be simultaneously in a state of at least partial execution without commitment.

9 . The method of claim 1 , wherein for at least one of the executing strands, uops from different commit groups are enabled to be statically intermingled for simultaneous execution.

10 . The method of claim 1 , wherein for at least one of the executing strands, uops from different commit groups are enabled to be simultaneously executed via out-of-order processing.

11 . The method of claim 1 , further comprising:

updating at least in part the strand-wide version of user visible state based on the commit-group-specific version of user visible state corresponding to a commit group of the commit groups transitioning from executing to committed.

12 . The method of claim 11 , further comprising:

selectively discarding from each strand-state the commit-group-specific version of user visible state corresponding to each commit group of the commit groups transitioning from executing to aborted.

13 . The method of claim 12 , further comprising:

wherein the updating is atomic with respect to all operations of each committed group; and

wherein the discarding is atomic with respect to all operations of each aborted group.

14 . The method of claim 1 , further comprising:

strand-state storage dedicated to storing the strand-state; and

logic coupled to the strand-state storage and enabled to perform hardware-assisted management of each of the versions of user visible state.

15 . The method of claim 1 , wherein each commit-group-specific version of user visible state is a speculative version, and if the corresponding executing commit group becomes aborted, the commit-group-specific speculative version of user visible state enables rollback of the aborted commit group, and wherein the strand-wide version of user visible state of the same strand is unaffected by the rollback of the aborted commit group.

16 . The method of claim 15 , further comprising:

wherein with respect to the same strand, the strand-state enables rollback of each of the commit groups that is younger than the aborted commit group; and

wherein with respect to the same strand, the commit groups that are older than the aborted commit group are unaffected by the rollback of the aborted commit group.

17 . The method of claim 15 , further comprising:

wherein the plurality of strands comprises an architectural strand and one or more speculative strands;

wherein in the strand-state for the architectural strand, the strand-wide version of user visible state is architectural state; and

wherein in the strand-state for each of the speculative strands, the strand-wide version of user visible state is a speculative version, and if the corresponding speculative strand becomes aborted, the strand-wide speculative version of user visible state enables rollback of the aborted speculative strand, and wherein the architectural state is unaffected by the rollback of the aborted speculative strand.

18 . The method of claim 17 , further comprising:

wherein when the aborted commit group is aborted under a predefined set of circumstances, the strand-state enables rollback of each speculative strand that is younger than the strand of the aborted commit group.

19 . The method of claim 18 , further comprising:

wherein the predefined set of circumstances is a first predefined set of circumstances; and

wherein when the aborted commit group is aborted under a second predefined set of circumstances, strands other than the strand of the aborted commit group are unaffected by the rollback of the aborted commit group.

20 . The method of claim 17 , further comprising:

wherein the strand-state enables rollback of each of the corresponding speculative strands that is younger than the aborted speculative strand; and

wherein the speculative strands that are older than the aborted speculative strand are unaffected by the rollback of the aborted speculative strand.

21 . The method of claim 1 , wherein the user visible state of each strand-state is all of the architectural machine state that is subject to speculation via the associated executing strand.

22 . The method of claim 1 , wherein the user visible state of each strand-state is a subset of the architectural machine state that is subject to speculation via the associated executing strand.

23 . A computer system, comprising:

strand construction means for dynamically constructing a strand-organized-thread-portion of at least one of one or more threads, wherein the strand-organized-thread-portion of the at least one strand-organized thread comprises a respective plurality of strand images, wherein each strand image is enabled to comprise a plurality of commit groups, wherein each commit group is enabled to comprise a plurality of operations;

execution means for enabling simultaneous execution of an intra-thread plurality of strands corresponding to the plurality of strand images of the at least one strand-organized-thread-portion; and

strand state means for operating strand-state associated with each executing strand of the plurality of strands, wherein each strand-state is enabled to comprise a strand-wide version of user visible state, and wherein each strand-state is further enabled to comprise a respective commit-group-specific version of user visible state for each executing commit group of the commit groups.

24 . The computer system of claim 23 , wherein each commit-group-specific version of user visible state comprises a plurality of commit buffer entries, and a respective one of the commit buffer entries is allocated for each user-visible register modified by one of the commit group operations.

25 . The computer system of claim 23 , wherein for at least one of the executing strands, a plurality of the commit groups of the executing strand are enabled to be simultaneously in a state of at least partial execution without commitment.

26 . The computer system of claim 23 , further comprising:

commitment means for updating at least in part the strand-wide version of user visible state based on the commit-group-specific version of user visible state corresponding to a commit group of the commit groups transitioning from executing to committed; and

rollback means for selectively discarding from each strand-state the commit-group-specific version of user visible state corresponding to each commit group of the commit groups transitioning from executing to aborted.

27 . The computer system of claim 26 , further comprising:

wherein the updating of the commitment means is atomic with respect to all operations of each committed group; and

wherein the discarding of the rollback means is atomic with respect to all operations of each aborted group.

28 . The computer system of claim 27 , wherein each commit-group-specific version of user visible state is a speculative version, and if the corresponding executing commit group becomes aborted, the commit-group-specific speculative version of user visible state enables rollback of the aborted commit group, and wherein the strand-wide version of user visible state of the same strand is unaffected by the rollback of the aborted commit group.

29 . The computer system of claim 28 , further comprising:

wherein the plurality of strands comprises an architectural strand and one or more speculative strands;

wherein in the strand-state for the architectural strand, the strand-wide version of user visible state is architectural state; and

wherein in the strand-state for each of the speculative strands, the strand-wide version of user visible state is a speculative version, and if the corresponding speculative strand becomes aborted, the strand-wide speculative version of user visible state enables rollback of the aborted speculative strand, and wherein the architectural state is unaffected by the rollback of the aborted speculative strand.

30 . The computer system of claim 29 , further comprising:

wherein when the aborted commit group is aborted under a predefined set of circumstances, the strand-state enables rollback of each speculative strand that is younger than the strand of the aborted commit group.

31 . The computer system of claim 30 , further comprising:

wherein the predefined set of circumstances is a first predefined set of circumstances; and

wherein when the aborted commit group is aborted under a second predefined set of circumstances, strands other than the strand of the aborted commit group are unaffected by the rollback of the aborted commit group.

32 . The computer system of claim 23 , wherein the user visible state of each strand-state is all of the architectural machine state that is subject to speculation via the associated executing strand.

33 . The computer system of claim 23 , wherein the user visible state of each strand-state is a subset of the architectural machine state that is subject to speculation via the associated executing strand.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 27, 2010
From: YOURST, MATT T
To: STRANDERA CORPORATION
Reel/Frame 024901/0276 →