Patents by Inventor David S. Levitan

David S. Levitan has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Publication number: 20100031011
    Abstract: The invention relates to a method and apparatus for controlling the instruction flow in a computer system and more particularly to the predicting of outcome of branch instructions using branch prediction arrays, such as BHTs. In an embodiment, the invention allows concurrent BHT read and write accesses without the need for a multi-ported BHT design, while still providing comparable performance to that of a multi-ported BHT design.
    Type: Application
    Filed: August 4, 2008
    Publication date: February 4, 2010
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Lei Chen, David S. Levitan, David Mui, Robert A. Philhower
  • Patent number: 7657783
    Abstract: A method, apparatus, and computer program product are disclosed for testing a data processing system's ability to recover from cache directory errors. A directory entry is stored into a cache directory. The directory entry includes an address tag and directory parity that is associated with that address tag. A cache entry is stored into a cache that is accessed using the cache directory. The cache entry includes information and cache parity that is associated with that information. The directory parity is altered to imply bad parity. The bad parity implies that the address tag that is associated with this parity is invalid. The information included in the cache entry is altered to be incorrect information. However, although the information is now incorrect, the cache parity continues to imply good parity which implies that the data is good. This good parity implies that the information that is associated with the parity is valid, even though it is not.
    Type: Grant
    Filed: June 6, 2008
    Date of Patent: February 2, 2010
    Assignee: International Business Machines Corporation
    Inventor: David S. Levitan
  • Publication number: 20090198985
    Abstract: In at least one embodiment, a processor includes at least one execution unit that executes instructions and instruction sequencing logic, coupled to the at least one execution unit, that fetches instructions from a memory system for execution by the at least one execution unit. The instruction sequencing logic including a branch target address cache (BTAC) including a plurality of entries for storing branch target address predictions. The BTAC includes index logic that selects an entry to access utilizing a BTAC index based upon at least a set of higher order bits of an instruction address and a set of lower order bits of the instruction address.
    Type: Application
    Filed: February 1, 2008
    Publication date: August 6, 2009
    Inventors: SHELDON B. LEVENSTEIN, David S. Levitan, Lixin Zhang
  • Publication number: 20090198983
    Abstract: A global history vector (GHV) mechanism maintains a folded GHV with higher order entries an an unfolded GHV with lower order entries. When a new entry arrives at the GHV, the GHV mechanism performs an XOR of the oldest unfolded entry in the unfolded GHV with the new entry. The XOR result is then shifted into the folded GHV as the newest folded entry. The oldest folded entry is discarded during the shift in of the newest folded entry. The GHV mechanism thus provides a resulting folded GHV that is current and can be utilized for XORing with an IFAR by performing an XOR operation. Only a single XOR logic is required to perform a single bit XOR operation between the oldest entry and the youngest entry, resulting in reducing the cycle time required to complete the folding operation on a GHV.
    Type: Application
    Filed: January 31, 2008
    Publication date: August 6, 2009
    Inventor: DAVID S. LEVITAN
  • Publication number: 20090198982
    Abstract: In at least one embodiment, a processor includes at least one execution unit that executes instructions and instruction sequencing logic, coupled to the at least one execution unit, that fetches instructions from a memory system for execution by the at least one execution unit. The instruction sequencing logic including branch target address prediction circuitry that stores a branch target address prediction associating a first instruction fetch address with a branch target address to be used as a second instruction fetch address. The branch target address prediction circuitry includes delay logic that, in response to at least a tag portion of a third instruction fetch address matching the first instruction fetch address, delays access to the memory system utilizing the second instruction fetch address if no branch target address prediction was made in an immediately previous cycle of operation.
    Type: Application
    Filed: February 1, 2008
    Publication date: August 6, 2009
    Inventors: DAVID S. LEVITAN, Lixin Zhang
  • Publication number: 20090198981
    Abstract: In at least one embodiment, a processor includes at least one execution unit and instruction sequencing logic that fetches instructions for execution by the execution unit. The instruction sequencing logic includes branch logic that outputs predicted branch target addresses for use as instruction fetch addresses. The branch logic includes a branch target address cache (BTAC) having at least one direct entry providing storage for a direct branch target address prediction associating a first instruction fetch address with a branch target address to be used as a second instruction fetch address immediately after the first instruction fetch address and at least one indirect entry providing storage for an indirect branch target address prediction associating a third instruction fetch address with a branch target address to be used as a fourth instruction fetch address subsequent to both the third instruction fetch address and an intervening fifth instruction fetch address.
    Type: Application
    Filed: February 1, 2008
    Publication date: August 6, 2009
    Inventors: DAVID S. LEVITAN, LIXIN ZHANG
  • Publication number: 20090198962
    Abstract: In at least one embodiment, a processor includes an execution unit and instruction sequencing logic that fetches instructions from a memory system for execution by the execution unit. The instruction sequencing logic includes branch logic that outputs predicted branch target addresses for use as instruction fetch addresses. The branch logic includes a branch target address prediction circuitry concurrently holding a first entry providing storage for a first branch target address prediction associating a first instruction fetch address with a first branch target address to be used as an instruction fetch address and a second entry providing storage for a second branch target address prediction associating the first instruction fetch address with a different second branch target address. The first entry indicates a first instruction address type for the first instruction fetch address, and the second entry indicates a second instruction address type for the first instruction fetch address.
    Type: Application
    Filed: February 1, 2008
    Publication date: August 6, 2009
    Inventors: DAVID S. LEVITAN, LIXIN ZHANG
  • Publication number: 20090049286
    Abstract: A processor includes an execution unit and instruction sequencing logic that fetches instructions from a memory system for execution. The instruction sequencing logic includes branch logic that outputs predicted branch target addresses for use as instruction fetch addresses. The branch logic includes a level one branch target address cache (BTAC) and a level two BTAC each having a respective plurality of entries each associating at least a tag with a predicted branch target address. The branch logic accesses the level one and level two BTACs in parallel with a tag portion of a first instruction fetch address to obtain a first predicted branch target address from the level one BTAC for use as a second instruction fetch address in a first processor clock cycle and a second predicted branch target address from the level two BTAC for use as a third instruction fetch address in a later second processor clock cycle.
    Type: Application
    Filed: August 13, 2007
    Publication date: February 19, 2009
    Inventors: David S. Levitan, William E. Speight, Lixin Zhang
  • Patent number: 7469407
    Abstract: The processing of instructions from multiple threads using a shared dispatch pipeline is controlled by invoking a dispatch flush operation wherein instructions of a selected thread in the shared dispatch pipeline are flushed in response to resource requirements. A first thread in an SMT may be using more processing than corresponds to its priority because its instructions are dominating use of a shared resource. In this case, to rebalance instruction dispatch between the first thread and the second thread, a dispatch flush of instructions of the first thread is issued. Normally the flushed instructions of a thread are refetched and reenter the dispatch pipeline. If the first thread is dominating use of shared resources, hold may be issued following the dispatch flush holding instructions of the first thread until a balanced utilization is realized.
    Type: Grant
    Filed: April 24, 2003
    Date of Patent: December 23, 2008
    Assignee: International Business Machines Corporation
    Inventors: William E. Burky, Richard J. Eickemeyer, Ronald N. Kalla, David S. Levitan, Balaram Sinharoy, John W. Ward, III
  • Publication number: 20080307210
    Abstract: A system and method for optimizing the branch logic of a processor to improve handling of hard to predict indirect branches are provided. The system and method leverage the observation that there will generally be only one move to the count register (mtctr) instruction that will be executed while a branch on count register (bcctr) instruction has been fetched and not executed. With the mechanisms of the illustrative embodiments, fetch logic detects that it has encountered a bcctr instruction that is hard to predict and, in response to this detection, blocks the target fetch from entering the instruction buffer of the processor. At this point, the fetch logic has fetched all the instructions up to and including the bcctr instruction but no target instructions. When the next mtctr instruction is executed, the branch logic of the processor grabs the data and starts fetching using that target address.
    Type: Application
    Filed: June 7, 2007
    Publication date: December 11, 2008
    Inventors: David S. Levitan, Wolfram Sauer
  • Publication number: 20080263325
    Abstract: A microprocessor and system with improved performance and power in simultaneous multithreading (SMT) microprocessor architecture. The microprocessor and system includes a process wherein the processor has the ability to select instructions from one thread or another in any given processor clock cycle. Instructions from each, thread may be assigned selection priorities at multiple decision points in a processor in a given cycle dynamically. The thread priority is based on monitoring performance behavior and activities in the processor. In the exemplary embodiment, the present invention discloses a microprocessor and system for synchronizing thread priorities among multiple decision points throughout the micro-architecture of the microprocessor. This system and method for synchronizing thread priorities allows each thread priority to he in sync and aware of the status of other thread priorities at various decision points within the microprocessor.
    Type: Application
    Filed: April 19, 2007
    Publication date: October 23, 2008
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Prabhakar Kudva, David S. Levitan, Balaram Sinharoy, John D. Wellman
  • Patent number: 7032097
    Abstract: A method and processor for selecting instructions in a prefetch buffer in the event of a miss in an instruction cache with a zero cycle penalty. A first, second and third hash may be performed on an address retrieved from a program counter. The first hashed address may be used to index into the instruction cache. The second hashed address may be used to index into the prefetch buffer. If the value stored in the indexed entry in an effective address array of the instruction cache does not equal the value of the third hash of the address (an instruction cache miss), then the instructions in the indexed entry in the prefetch buffer are selected. In this manner, instructions may be selected in the prefetch buffer in the event of a miss in the instruction cache with a zero cycle penalty.
    Type: Grant
    Filed: April 24, 2003
    Date of Patent: April 18, 2006
    Assignee: International Business Machines Corporation
    Inventors: Gregory W. Alexander, David S. Levitan, Balaram Sinharoy, William J. Starke
  • Publication number: 20040216105
    Abstract: The processing of instructions from multiple threads using a shared dispatch pipeline is controlled by invoking a dispatch flush operation wherein instructions of a selected thread in the shared dispatch pipeline are flushed in response to resource requirements. A first thread in an SMT may be using more processing than corresponds to its priority because its instructions are dominating use of a shared resource. In this case, to rebalance instruction dispatch between the first thread and the second thread, a dispatch flush of instructions of the first thread is issued. Normally the flushed instructions of a thread are refetched and reenter the dispatch pipeline. If the first thread is dominating use of shared resources, hold may be issued following the dispatch flush holding instructions of the first thread until a balanced utilization is realized.
    Type: Application
    Filed: April 24, 2003
    Publication date: October 28, 2004
    Applicant: International Business Machines Corporation
    Inventors: William E. Burky, Richard J. Eickemeyer, Ronald N. Kalla, David S. Levitan, Balaram Sinharoy, John W. Ward
  • Publication number: 20040215921
    Abstract: A method and processor for selecting instructions in a prefetch buffer in the event of a miss in an instruction cache with a zero cycle penalty. A first, second and third hash may be performed on an address retrieved from a program counter. The first hashed address may be used to index into the instruction cache. The second hashed address may be used to index into the prefetch buffer. If the value stored in the indexed entry in an effective address array of the instruction cache does not equal the value of the third hash of the address (an instruction cache miss), then the instructions in the indexed entry in the prefetch buffer are selected. In this manner, instructions may be selected in the prefetch buffer in the event of a miss in the instruction cache with a zero cycle penalty.
    Type: Application
    Filed: April 24, 2003
    Publication date: October 28, 2004
    Applicant: International Business Machines Corporation
    Inventors: Gregory W. Alexander, David S. Levitan, Balaram Sinharoy, William J. Starke
  • Patent number: 5553255
    Abstract: A data processor (12) has a branch prediction unit (28) that predicts conditional branch instructions and a control unit (70) therein that monitors the number of unresolved branch instructions. This control unit selectively allows the data processor to fetch the instructions indicated by the branch prediction unit from an external memory system depending upon the number of unresolved branch instructions. The particular threshold number of unresolved branch instructions is user programmable. The data processor thereby limits its bus accesses to those occasions when it is reasonably sure that it will need the indicated instructions.
    Type: Grant
    Filed: April 27, 1995
    Date of Patent: September 3, 1996
    Assignees: Motorola, Inc., International Business Machines
    Inventors: Danny K. Jain, David S. Levitan, Paul C. Rossbach
  • Patent number: 5465373
    Abstract: A method and system for permitting single cycle instruction dispatch in a superscalar processor system which dispatches multiple instructions simultaneously to a group of execution units for execution and placement of results thereof within specified general purpose registers. Each instruction generally includes at least one source operand and one destination operand. A plurality of intermediate storage buffers are provided and each time an instruction is dispatched to an available execution unit, a particular one of the intermediate storage buffers is assigned to any destination operand within the dispatched instruction, permitting the instruction to be dispatched within a single cycle by eliminating any requirement for determining and selecting the specified general purpose register or a designated alternate general purpose register.
    Type: Grant
    Filed: January 8, 1993
    Date of Patent: November 7, 1995
    Assignee: International Business Machines Corporation
    Inventors: James A. Kahle, Chin-Cheng Kau, David S. Levitan, Aubrey D. Ogden, Ali A. Poursepanj, Paul K.-G. Tu, Donald E. Waldecker
  • Patent number: 5421020
    Abstract: A data processing system for speculatively executing instructions. The data processing system includes a memory for storing instructions at addresses which can be generated by a branch unit in a processor. The processor also has a count register for storing an update value, a dispatch version value and a completion version value. A fetcher connected to the branch unit fetches instructions from memory based upon addresses calculated by the branch unit. The branch unit handles processing of conditional branch instructions. To do so, means for initializing the update value and the dispatch version value for branch control are provided. Further included are means responsive to completion of initialization for copying the update value as the completion version value. The system further includes means responsive to dispatch of a conditional branch instruction for examining the dispatch version value to determine if a branch should be taken and then decrementing the dispatch version value.
    Type: Grant
    Filed: January 8, 1993
    Date of Patent: May 30, 1995
    Assignee: International Business Machines Corporation
    Inventor: David S. Levitan
  • Patent number: 5367703
    Abstract: A method and system for enhanced branch history prediction accuracy in a superscalar processor system by maintaining branch history tables which include a separate branch history for each instruction fetch position within a multi-instruction access. In a superscalar processor system which is capable of accessing multiple instructions simultaneously, a branch history table is established which includes a predictive field for each possible instruction fetch position within a multi-instruction access. Each group of predictive fields is accessed within the branch history table utilizing a portion of the instruction fetch address, such as the low order address bits. A particular predictive field within the group is then selected which corresponds to the position of the branch instruction within the instruction fetch. The content of the selected predictive field is then utilized to predict whether or not a branch is taken for the corresponding branch instruction.
    Type: Grant
    Filed: January 8, 1993
    Date of Patent: November 22, 1994
    Assignee: International Business Machines Corporation
    Inventor: David S. Levitan