IP Library › Granted Patent US 9,459,877
Granted Patent B2
US 9,459,877 · App. 13/723,296 · Granted Oct 4, 2016

Nested speculative regions for a synchronization facility

Inventors: Stephan Diestelhorst (Dresden, DE); Martin Pohlack (Dresden, DE); Michael Hohmuth (Dresden, DE); David Christie (Austin, TX); Luke Yen (Ayer, MA)
Assignee: Advanced Micro Devices, Inc.
G06F9/3842G06F9/3857G06F9/3861G06F9/528
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,459,877
App. No.
13/723,296
Granted
Oct 4, 2016
Kind
B2
Abstract

An apparatus, computer readable medium, and method of performing nested speculative regions are presented. The method includes responding to entering a speculative region by storing link information to an abort handler and responding to a commit command by removing link information from the abort handler. The method may include storing link information to the abort handler associated with the speculative region. When the speculative region is nested, the method may include storing link information to an abort handler associated with a previous speculative region. Removing link information may include removing link information from the abort handler associated with the corresponding speculative region. The method may include restoring link information to the abort handler associated with a previous speculative region. Responding to an abort command may include running the abort handler associated with the aborted speculative region. The method may include running the abort handler of each previous speculative region.

Claims (28)

1. A method of performing an abort of a speculative region of code in nested speculative regions of code, the method comprising:

in response to entering a nested speculative region of code, storing link information to an abort handler associated with a previous speculative region of code, wherein the link information is used by an abort handler associated with the nested speculative region of code to link the abort handler associated with the nested speculative region of code with the abort handler associated with the previous speculative region of code; and

in response to a commit command, removing link information from the abort handler.

2. The method of claim 1 , wherein when the commit command is nested, the method further comprises restoring link information to the abort handler associated with the previous speculative region of code.

3. The method of claim 1 , wherein in response to an abort command, the method further comprises running the abort handler associated with the aborted speculative region of code.

4. The method of claim 3 , wherein the method further comprises for each previous speculative region of code, running an abort handler associated with each previous speculative region of code.

5. The method of claim 3 , wherein running the abort handler associated with the aborted speculative region of code, further comprises:

transferring program control to a location in a saved instruction pointer register.

6. The method of claim 5 , wherein for each previous speculative region of code, running the abort handler of each previous speculative region of code, further comprises:

retrieving a saved instruction pointer from a stack, and running the abort handler of each previous speculative region of code by transferring program control to a second location in the retrieved saved instruction pointer.

7. The method of claim 3 , wherein running the abort handler associated with the aborted speculative region of code, further comprises:

transferring program control to an abort handler pointed to by a current abort handler frame, wherein the current abort handler frame is stored in a thread local memory.

8. The method of claim 1 , further comprising:

accessing memory locations of a working set; and, wherein a second core accessing the memory locations of the working set triggers the abort command.

9. The method of claim 1 , further comprising:

incrementing a nesting level in response to each speculate command and decrementing the nesting level in response to each commit command.

10. The method of claim 1 , wherein in response to entering the speculative region of code, comprises:

allocating memory for an abort handler frame;

storing link information to an abort handler associated with the previous speculative region of code in the abort handler frame;

storing a level in the abort handler frame; and

storing link information to an abort handler associated with the previous speculative region of code in the abort handler frame.

11. The method of claim 10 , wherein in response to an abort command, comprises:

retrieving a current abort handler frame;

if the level of the abort handler frame is not greater than a current nested level, then running the abort handler associated with the aborted speculative region of code by running the abort handler associated with the abort handler frame;

if the aborted speculative region of code is nested, then for each previous speculative region of code, running the abort handler of the previous speculative region of code by setting the current abort handler frame to the next abort handler of the current abort handler frame, and running the abort handler associated with the abort handler frame.

12. The method of claim 1 , wherein storing link information to an abort handler associated with the speculative region of code, further comprises: storing an instruction pointer to a saved instruction pointer register.

13. The method of claim 1 , wherein storing link information to an abort handler associated with the previous speculative region of code, further comprises:

storing an instruction pointer to an abort handler frame created in a stack.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2013
From: DIESTELHORST, STEPHAN; POHLACK, MARTIN T.; HOHMUTH, MICHAEL P.; CHRISTIE, DAVID S.; YEN, LUKE
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 029632/0130 →
Continuity (1)
Related Publication 20140181480A1 · Jun 26, 2014