×

Compiler providing idiom to idiom accelerator

  • US 8,732,683 B2
  • Filed: 02/01/2008
  • Issued: 05/20/2014
  • Est. Priority Date: 02/01/2008
  • Status: Expired due to Fees
First Claim
Patent Images

1. A method, in a compiler, for exposing programming idioms to a programming idiom accelerator, the method comprising:

  • receiving a portion of high level language program code;

    examining a series of instructions in the portion of high level language program code;

    determining whether the series of instructions comprises a recognized programming idiom from a plurality of predetermined programming idioms, wherein the set of predetermined programming idioms correspond to a plurality of programming idiom accelerators and wherein each of the plurality of programming idiom accelerators is a hardware device in the data processing system, wherein the plurality of programming idiom accelerators comprise a wake-and-go engine and a linked list acceleration engine;

    compiling the high level language program code to machine code;

    responsive to a determination that the series of instructions comprises a recognized programming idiom, inserting into the machine code a begin hint instruction that marks a beginning of the recognized programming idiom at a next instruction in the machine code and an end hint instruction that marks an end of the recognized programming idiom, wherein a given programming idiom accelerator that corresponds to the recognized programming idiom is configured to perform a look-ahead operation to examine the machine code being pre-fetched for a thread being executed by a processor and to detect the begin hint instruction, wherein during execution of the machine code by the processor, the given programming idiom accelerator performs at least one action to accelerate execution of the programming idiom, wherein the plurality of programming idiom accelerators are external to the processor;

    detecting, by the wake-and-go engine, the begin hint instruction indicating a thread executing on the processor is waiting for an event that modifies a data value associated with a target address;

    storing, by the wake-and-go engine, the target address in a wake-and-go entry of a content addressable memory in association with a thread identifier of the thread;

    placing the thread in a sleep state; and

    responsive to detecting a write to the target address, using the target address to address the content addressable memory and returning, by the content addressable memory, a storage address of the wake-and-go entry, placing the thread corresponding to the thread identifier in the wake-and-go entry in a non-sleep state, and determining whether the write to the target address is the event for which the thread is waiting.

View all claims
  • 1 Assignment
Timeline View
Assignment View
    ×
    ×