History Table Patents (Class 712/240)
  • Patent number: 7426631
    Abstract: Methods and systems for storing branch information in an address table of a processor are disclosed. A processor of the disclosed embodiments may generally include an instruction fetch unit connected to an instruction cache, a branch execution unit, and an address table being connected to the instruction fetch unit and the branch execution unit. The address table may generally be adapted to store a plurality of entries with each entry of the address table being adapted to store a base address and a base instruction tag. In a further embodiment, the branch execution unit may be adapted to determine the address of a branch instruction having an instruction tag based on the base address and the base instruction tag of an entry of the address table associated with the instruction tag. In some embodiments, the address table may further be adapted to store branch information.
    Type: Grant
    Filed: February 2, 2005
    Date of Patent: September 16, 2008
    Assignee: International Business Machines Corporation
    Inventors: Brian R. Konigsburg, David Stephen Levitan, Wolfram M. Sauer, Samuel Jonathan Thomas
  • Patent number: 7426628
    Abstract: A method for run-time prediction of a next caller of a shared functional unit, wherein the shared functional unit is operable to be called by two or more callers out of a plurality of callers. The shared functional unit and the plurality of callers are operable to execute in parallel on a parallel execution unit. The run-time prediction is used for data flow programs. The run-time prediction detects a calling pattern of the plurality of callers of the shared functional unit and predicts the next caller out of the plurality of callers of the shared functional unit. The run-time prediction then loads state information associated with the next caller out of the plurality of callers.
    Type: Grant
    Filed: March 15, 2004
    Date of Patent: September 16, 2008
    Assignee: National Instruments Corporation
    Inventor: Newton G. Petersen
  • Publication number: 20080215866
    Abstract: An apparatus and a system, as well as a method and article, may operate to predict a branch within a first operating context, such as a user context, using a first strategy; and to predict a branch within a second operating context, such as an operating system context, using a second strategy. In some embodiments, apparatus and systems may comprise one or more first storage locations to store branch history information associated with a first operating context, and one ore more second storage locations to store branch history information associated with a second operating context.
    Type: Application
    Filed: March 11, 2008
    Publication date: September 4, 2008
    Inventors: Lizy K. John, Tao Li
  • Publication number: 20080209190
    Abstract: A branch history value associated with a first branch instruction of a first set of instructions is determined. The branch history value represents a branch history of a program flow prior to the first branch instruction. A first branch prediction of the first branch instruction is determined based on the branch history value of the first branch instruction and a first identifier associated with first branch instruction. A second branch prediction of a second branch instruction of the first set of instructions based on the branch history value associated with the first branch instruction and a second identifier associated with the second branch instruction. The second branch instruction occurs subsequent to the first branch instruction in the program flow. A second set of instructions is fetched at the processing device based on at least one of the first branch prediction and the second branch prediction.
    Type: Application
    Filed: February 28, 2007
    Publication date: August 28, 2008
    Applicant: ADVANCED MICRO DEVICES, INC.
    Inventors: Ravindra N. Bhargava, Brian Raf
  • Patent number: 7418583
    Abstract: A detector detects at least one kind of dependence in address between instructions executed by at least a processor, the detector being adopted to detect a possibility of presence of the at least one kind of dependence, wherein if the at least one kind of dependence is present in fact, then the detector detects a possibility of presence of the at least one kind of dependence, and if the at least one kind of dependence is not present in fact, then the detector may detect a pseudo presence of the at least one kind of dependence. The detector has an execution history storing unit with a plurality of entries and an address converter for converting an address of a memory access instruction into an entry number, where different addresses may be converted into entry numbers that are the same.
    Type: Grant
    Filed: May 11, 2005
    Date of Patent: August 26, 2008
    Assignee: NEC Corporation
    Inventors: Atsufumi Shibayama, Satoshi Matsushita, Sunao Torii, Naoki Nishi
  • Publication number: 20080195850
    Abstract: A method of restoring register mapper states for an out-of-order microprocessor. A processor maps a logical register to a physical register in a map table in response to a first instruction. Instruction sequencing logic records a second speculatively executed instruction as a most recently dispatched instruction in the map table when the second instruction maps the same logical register of the first instruction. The instruction sequencing logic sets an evictor instruction tag (ITAG) of the first instruction in the map table when the second instruction maps a same logical register of the first instruction. The instruction sequencing logic detects mispredicted speculative instructions, determines which instructions in the map table were dispatched prior to the mispredicted speculative instructions, and restores the map table to a state prior to the mispredicted speculative instructions by utilizing the evictor ITAG to restore one or more A bits in the map table data structure.
    Type: Application
    Filed: February 14, 2007
    Publication date: August 14, 2008
    Inventors: Christopher M. Abernathy, Mary D. Brown, Dung Q. Nguyen, Joel A. Silberman
  • Publication number: 20080189533
    Abstract: Systems, methods and apparatuses for the generation of a global history are disclosed. Embodiments of the present invention may provide logic operable to generate a global history and a global history register operable to store a global history. More specifically, in one embodiment the global history logic comprises a set of multiplexers, each set corresponding to one of a set of instructions fetched in a cycle of a microprocessor, the number of multiplexers in each set equal to the number of bits of global history and each multiplexer within a set having a select signal corresponding to the same instruction to which that set of multiplexers corresponds.
    Type: Application
    Filed: February 2, 2007
    Publication date: August 7, 2008
    Inventor: Hiroo Hayashi
  • Patent number: 7409535
    Abstract: An information processing system for branch target prediction is disclosed. The information processing system includes a memory for storing entries, wherein each entry includes a plurality of target addresses representing a history of target addresses for a multi-target branch and logic for reading the memory and identifying a repeated pattern in a plurality of target addresses for a multi-target branch. The information processing system further includes logic for predicting a next target address for the multi-target branch based on the repeated pattern that was identified.
    Type: Grant
    Filed: April 20, 2005
    Date of Patent: August 5, 2008
    Assignee: International Business Machines Corporation
    Inventors: Il Park, Pratap C. Pattnaik, Jong-Deok Choi
  • Publication number: 20080168263
    Abstract: A branch target buffer (BTB) storing a data entry related to a branch instruction is disclosed. The BTB conditionally enables access to the data entry in response to a word line gating circuit associated with a word line in the BTB. The word line gating circuit stores a word line gating value derived from branch history data related to the instruction. Additionally, a branch prediction unit and a processor incorporating the BTB are disclosed, along with methods for operating the BTB.
    Type: Application
    Filed: March 21, 2008
    Publication date: July 10, 2008
    Applicant: Samsung Electronics., Ltd.
    Inventor: Gi Ho Park
  • Patent number: 7380110
    Abstract: An efficient branch prediction structure is described that bifurcates a branch prediction structure into at least two portions where information stored in the second portion is aliased amongst multiple entries of the first portion. In this way, overall storage (and layout area) can be reduced and scaling with a branch prediction structure that includes a (2N)K×1 branch direction entries and a (N/2)K×1 branch prediction qualifier entries is less dramatic than conventional techniques. An efficient branch prediction structure includes entries for branch direction indications and entries for branch prediction qualifier indications. The branch direction indication entries are more numerous than the branch prediction qualifier entries.
    Type: Grant
    Filed: September 11, 2003
    Date of Patent: May 27, 2008
    Assignee: Sun Microsystems, Inc.
    Inventors: Robert D. Nuckolls, Rabin A. Sugumar, Chandra M. R. Thimmannagari
  • Patent number: 7370183
    Abstract: An apparatus and a system, as well as a method and article, may operate to predict a branch within a first operating context, such as a user context, using a first strategy; and to predict a branch within a second operating context, such as an operating system context, using a second strategy. In some embodiments, apparatus and systems may comprise one or more first storage locations to store branch history information associated with a first operating context, and one ore more second storage locations to store branch history information associated with a second operating context.
    Type: Grant
    Filed: April 12, 2004
    Date of Patent: May 6, 2008
    Assignee: Board of Regents, The University of Texas System
    Inventors: Lizy K. John, Tao Li
  • Publication number: 20080082807
    Abstract: In a processor executing instructions in at least a first instruction set execution mode having a first minimum instruction length and a second instruction set execution mode having a smaller, second minimum instruction length, line and counter index addresses are formed that access every counter in a branch history table (BHT), and reduce the number of index address bits that are multiplexed based on the current instruction set execution mode. In one embodiment, counters within a BHT line are arranged and indexed in such a manner that half of the BHT can be powered down for each access in one instruction set execution mode.
    Type: Application
    Filed: September 29, 2006
    Publication date: April 3, 2008
    Inventors: Brian Michael Stempel, Rodney Wayne Smith
  • Patent number: 7350062
    Abstract: An information processing apparatus is capable of speculatively performing an execution, such as a pipeline/superscalar/out-of-order execution and equipped with a branch prediction mechanism (a branch history).
    Type: Grant
    Filed: August 22, 2005
    Date of Patent: March 25, 2008
    Assignee: Fujitsu Limited
    Inventors: Masaki Ukai, Kyoko Tashima, Aiichiro Inoue
  • Publication number: 20080052501
    Abstract: A method, of manipulating a raw branch history (RBH), can include: providing a RBH relevant to a conditional branching instruction in a program; and filtering the RBH to obtain a filtered branch-prediction predicate. A related method, of making a branch prediction, can include: manipulating, as in the above-mentioned method, a RBH relevant to a given conditional branching instruction (CBI) to obtain a corresponding filtered branch-prediction predicate; and predicting a branching direction of the given CBI based upon the corresponding filtered branch-prediction predicate. Such methods operate upon data provided by a memory representing a Branch Register-Dependency Table (Br_RDT) that includes: entries corresponding to registers in a CPU, respectively; each entry in the Br_RDT being indicative of how content of a corresponding register in the CPU is dependent or not upon other ones among the plurality of registers in the CPU.
    Type: Application
    Filed: February 22, 2007
    Publication date: February 28, 2008
    Inventor: Jong Wook Kwak
  • Patent number: 7337271
    Abstract: A memory storage structure includes a memory storage device, and a first meta-structure having a first size and operating at a first speed. The first speed is faster than a second speed for storing meta-information based on information stored in a memory. A second meta-structure is hierarchically associated with the first meta-structure. The second meta-structure has a second size larger than the first size and operates at the second speed such that faster and more accurate prefetching is provided by coaction of the first and second meta-structures. A method is provided to assemble the meta-information in the first meta-structure and copy this information to the second meta-structure, and prefetching the stored information from the second meta-structure to the first meta-structure ahead of its use.
    Type: Grant
    Filed: December 1, 2003
    Date of Patent: February 26, 2008
    Assignee: International Business Machines Corporation
    Inventors: Philip George Emma, Allan Mark Hartstein, Brian R. Prasky, Thomas Roberts Puzak, Moinuddin Khalil Ahmed Qureshi, Vijayalakshmi Srinivasan
  • Patent number: 7320066
    Abstract: A branch history stores execution history information of branch instructions, and predicts presence of a branch instruction and a corresponding branch destination. A first return address stack stores, when an execution of a call instruction of a subroutine is completed, address information of a return destination of a corresponding return instruction. A second return address stack stores, when presence of a call instruction of a subroutine is predicted, address information of a return destination of a corresponding return instruction. An output selecting unit selects, when presence of a return instruction is predicted, if address information is stored in the second return address stack, the address information as a result of the branch prediction with a highest priority, and outputs the address information selected.
    Type: Grant
    Filed: February 25, 2005
    Date of Patent: January 15, 2008
    Assignee: Fujitsu Limited
    Inventor: Megumi Yokoi
  • Publication number: 20070288736
    Abstract: Embodiments of the invention provide a method and apparatus of storing branch prediction information. In one embodiment, the method includes receiving a branch instruction and storing local branch prediction information for the branch instruction including a local predictability value for the local branch prediction information. The method further includes storing global branch prediction information for the branch instruction only if the local predictability value is below a threshold value of predictability.
    Type: Application
    Filed: June 8, 2006
    Publication date: December 13, 2007
    Inventor: David A. Luick
  • Patent number: 7293164
    Abstract: A method, apparatus, and computer instructions for autonomically counting selected branch instructions executed in a processor to improve branch predictions. Counters are provided to count branch instructions that are executed in a processor to collect branch statistics. A set of branch statistics fields is allocated to associate with a branch instruction. When a program is executed, the stored statistics allows the program to look at the branch statistics in the counter to perform branch prediction. Hence, a user may use branch statistics values from the hardware counter to perform analysis on application code.
    Type: Grant
    Filed: January 14, 2004
    Date of Patent: November 6, 2007
    Assignee: International Business Machines Corporation
    Inventors: Jimmie Earl DeWitt, Jr., Frank Eliot Levine, Christopher Michael Richardson, Robert John Urquhart
  • Patent number: 7290255
    Abstract: A method, apparatus, and computer instructions for local program reorganization using branch count per instruction hardware. In a preferred embodiment, a hardware counter is used in the present invention to count the number of times a branch is taken when branch instructions are executed. Branch count statistics generated from the hardware counters are available to a program in order to analyze whether code reorganization is necessary. If reorganization is necessary, the program autonomically reorganizes instructions locally at run time to allow more instructions to be executed prior to taking a branch, so that the number of branches taken is minimized without modifying underlying program code.
    Type: Grant
    Filed: January 14, 2004
    Date of Patent: October 30, 2007
    Assignee: International Business Machines Corporation
    Inventors: Jimmie Earl DeWitt, Jr., Frank Eliot Levine, Christopher Michael Richardson, Robert John Urquhart
  • Patent number: 7278012
    Abstract: A microprocessor includes two branch history tables, and is configured to use a first one of the branch history tables for predicting branch instructions that are hits in a branch target cache, and to use a second one of the branch history tables for predicting branch instructions that are misses in the branch target cache. As such, the first branch history table is configured to have an access speed matched to that of the branch target cache, so that its prediction information is timely available relative to branch target cache hit detection, which may happen early in the microprocessor's instruction pipeline. The second branch history table thus need only be as fast as is required for providing timely prediction information in association with recognizing branch target cache misses as branch instructions, such as at the instruction decode stage(s) of the instruction pipeline.
    Type: Grant
    Filed: June 2, 2005
    Date of Patent: October 2, 2007
    Assignee: QUALCOMM Incorporated
    Inventors: Thomas Andrew Sartorius, Brian Michael Stempel, Jeffrey Todd Bridges, James Norris Dieffenderfer, Rodney Wayne Smith
  • Patent number: 7266676
    Abstract: Methods and apparatus are provided for branch prediction in a digital processor. A method includes providing a branch target buffer having a tag array and a data array, wherein each entry in the tag array provides an index to a corresponding entry in the data array, storing in a selected entry in the tag array information representative of a branch target of a current branch instruction, storing in a corresponding entry in the data array information representative of a branch target of a next branch instruction, and providing the information representative of the branch target of the next branch instruction in response to a match to an entry in the tag array. The information representative of the branch target of the next branch instruction may include a taken branch target address of the next branch instruction and an offset value. The offset value may represent an address of a next sequential instruction following the next branch instruction.
    Type: Grant
    Filed: March 21, 2003
    Date of Patent: September 4, 2007
    Assignee: Analog Devices, Inc.
    Inventors: Thang M. Tran, Ravi Pratap Singh, Deepa Duraiswamy, Srikanth Kannan
  • Patent number: 7237098
    Abstract: A microprocessor for predicting a target address of a return instruction is disclosed. The microprocessor includes a BTAC and a return stack that each makes a prediction of the target address. Typically the return stack is more accurate. However, if the return stack mispredicts, update logic sets an override flag associated with the return instruction in the BTAC. The next time the return instruction is encountered, if the override flag is set, branch control logic branches the microprocessor to the BTAC prediction. Otherwise, the microprocessor branches to the return stack prediction. If the BTAC mispredicts, then the update logic clears the override flag. In one embodiment, the return stack predicts in response to decode of the return instruction. In another embodiment, the return stack predicts in response to the BTAC predicting the return instruction is present in an instruction cache line. Another embodiment includes a second, BTAC-based return stack.
    Type: Grant
    Filed: October 6, 2003
    Date of Patent: June 26, 2007
    Assignee: IP-First, LLC
    Inventors: G. Glenn Henry, Thomas McDonald
  • Patent number: 7234046
    Abstract: A method of predicting and skipping branch instructions for pipelines which need more than one cycle to predict branch direction and branch target addresses in microprocessors and digital signal processors is provided. The address of an instruction executed before the predicted branch is used as an index to enable early branch prediction so that the address of the instruction predicted to be executed immediately after the branch is available earlier, thereby reducing the number of idle or wasted clock cycles. The relative offset in the execution sequence between the previously executed instruction and the predicted branch instruction is determined based on the type of the predicted branch instruction and the cycles required to predict branch execution.
    Type: Grant
    Filed: December 1, 2004
    Date of Patent: June 19, 2007
    Assignee: Faraday Technology Corp.
    Inventor: Hong-Men Su
  • Patent number: 7197630
    Abstract: A method and system for changing the executable status of an operation following a branch misprediction. In one embodiment, a method may include predicting an execution path of a first conditional branch operation stored in an entry of a trace cache, and in response to predicting the execution path, if a first operation stored in the entry of the trace cache is not in the execution path according to the prediction, assigning to the first operation a non-executable status indicative that the first operation is not in the execution path. The method may further include detecting that the prediction is incorrect subsequent to assigning the non-executable status to the first operation and assigning an executable status to the first operation in response to detecting the incorrect prediction, where the executable status is indicative that the first operation is in the execution path.
    Type: Grant
    Filed: April 12, 2004
    Date of Patent: March 27, 2007
    Assignee: Advanced Micro Devices, Inc.
    Inventors: Mitchell Alsup, Benjamin T. Sander
  • Patent number: 7174444
    Abstract: A system and method of early branch prediction in a processor to evaluate, typically before a full branch prediction is made, ways in a branch target buffer to determine if any of said ways corresponds to a valid unconditional branch, and upon such determination, to generate a signal to prevent a read of a next sequential chunk.
    Type: Grant
    Filed: March 31, 2003
    Date of Patent: February 6, 2007
    Assignee: Intel Corporation
    Inventors: Eran Altshuler, Oded Lempel, Robert Valentine, Nicolas Kacevas
  • Patent number: 7165168
    Abstract: A microprocessor with a write queue for a branch target address cache (BTAC) is disclosed. The BTAC is read in parallel with an instruction cache in order to predict a target address of a branch instruction in the accessed cache line. In one embodiment, the BTAC is single-ported; hence, the single port must be shared for reading and writing. When the BTAC needs updating, such as when a branch target address is resolved, the microprocessor stores the branch target address and related information in the write queue. Thus, the write queue potentially enables updating of the BTAC to be delayed until the BTAC is not being read, such as when the instruction cache is idle, a misprediction by the BTAC is being corrected, or a prediction by the BTAC is being overridden. If the write queue becomes full, then it updates the BTAC anyway.
    Type: Grant
    Filed: July 31, 2003
    Date of Patent: January 16, 2007
    Assignee: IP-First, LLC
    Inventor: Thomas McDonald
  • Patent number: 7165169
    Abstract: A branch prediction apparatus having a primary predictor and a secondary predictor that selectively overrides the primary predictor based on the type of branch instruction decoded. A branch target address cache in the primary branch predictor speculatively predicts a branch target address and direction based on an instruction cache fetch address prior to decoding the instruction, and the processor branches to the speculative target address if the speculative direction is predicted taken. Later in the pipeline, decode logic decodes the instruction and determines the branch instruction type, such as whether the branch instruction is a conditional branch, a return instruction, a program counter-relative type branch, an indirect branch, etc. Depending upon the branch type, if the primary and secondary predictions do not match, the processor branches based on the secondary prediction to override the branch taken based on the primary prediction.
    Type: Grant
    Filed: May 4, 2001
    Date of Patent: January 16, 2007
    Assignee: IP-First, LLC
    Inventors: G. Glenn Henry, Thomas C. McDonald
  • Patent number: 7162619
    Abstract: A branch control apparatus in a microprocessor. A register receives a first cache line containing a branch instruction from an instruction cache in response to a fetch address. The fetch address hits in a BTAC that provides a target address of the branch instruction. The BTAC also provides an offset of the instruction following the branch instruction. The instructions following the branch instruction are invalidated based on the offset. Muxing logic packs only the valid instructions into a byte-wide instruction buffer that is directly coupled to instruction format logic. The instruction cache provides a second cache line containing the target instructions to the register in response to the target address. The instructions preceding the target instructions are invalidated based on the lower bits of the target address. The muxing logic packs only the valid target instructions into the instruction buffer immediately adjacent to the branch instruction bytes.
    Type: Grant
    Filed: July 3, 2001
    Date of Patent: January 9, 2007
    Assignee: IP-First, LLC
    Inventors: G. Glenn Henry, Thomas C. McDonald
  • Patent number: 7159102
    Abstract: A branch control memory store branch instructions which are adapted for optimizing performance of programs run on electronic processors. Flexible instruction parameter fields permit a variety of new branch control and branch instruction implementations best suited for a particular computing environment. These instructions also have separate prediction bits, which are used to optimize loading of target instruction buffers in advance of program execution, so that a pipeline within the processor achieves superior performance during actual program execution.
    Type: Grant
    Filed: June 15, 2004
    Date of Patent: January 2, 2007
    Assignee: Renesas Technology Corp.
    Inventors: Naohiko Irie, Tony Lee Werner
  • Patent number: 7143272
    Abstract: Associated with an instruction in a program is a computation history. The computation history represents all objects that affect the result of the instruction, such objects including (but not limited to) registers, memory locations, static values, and instruction program counters. The computation history may be used to make a prediction about a property of the instruction.
    Type: Grant
    Filed: December 27, 2002
    Date of Patent: November 28, 2006
    Assignee: Intel Corporation
    Inventors: Chris B. Wilkerson, Jared W. Stark, Renju Thomas
  • Patent number: 7143273
    Abstract: Toggling between accessing an entry in a global history with a stew created from branch predictions implied by the ordering of instructions within a trace of a trace cache when a trace is read out of a trace cache, and accessing an entry in a global history with repeatable variations of a stew when there is more than branch instruction within a trace within the trace cache and at least a second branch instruction is read out.
    Type: Grant
    Filed: March 31, 2003
    Date of Patent: November 28, 2006
    Assignee: Intel Corporation
    Inventors: John Alan Miller, Slade A. Morgan, Stephan J. Jourdan
  • Patent number: 7139903
    Abstract: A computer system has a processor that has a prediction array that avoids conflicts when the prediction array is accessed twice in once clock cycle to retrieve predictions for two separate conditional branch instructions. The prediction array is included as part of a branch prediction logic circuit that includes a bank control logic coupled to the prediction array. The bank control logic assures the conflict noted above is avoided. The prediction array preferably comprises multiple (e.g., 4) single-ported bank memory elements, each bank comprising multiple predictions. The bank control logic uses information associated with a previously fetched and branch predicted conditional branch instruction to generate a bank number for a current branch instruction. The generated bank number corresponds to one of the banks in the prediction array. The processor preferably fetches two (or more) groups (also called “slots”) of instructions each cycle.
    Type: Grant
    Filed: December 19, 2000
    Date of Patent: November 21, 2006
    Assignee: Hewlett-Packard Development Company, L.P.
    Inventors: Andre C. Seznec, Stephen Felix
  • Patent number: 7136992
    Abstract: A method and apparatus for a loop predictor for predicting the end of a loop is disclosed. In one embodiment, the loop predictor may have a predict counter to hold a predict count representing the expected number of times that a predictor stew value will repeat during the execution of a given loop. The loop predictor may also have one or more running counters to hold a count of the times that the stew value has repeated during the execution of the present loop. When the counter values match the predictor may issue a prediction that the loop will end.
    Type: Grant
    Filed: December 17, 2003
    Date of Patent: November 14, 2006
    Assignee: Intel Corporation
    Inventors: Subramaniam Maiyuran, Peter J. Smith, Stephan Jourdan
  • Patent number: 7134005
    Abstract: A microprocessor caches in a branch target address cache (BTAC), for each of a plurality of previously executed branch instructions: a prediction of whether the branch instruction will be taken and is present in a cache line of instruction bytes provided by an instruction cache in response to a fetch address, a target address of the branch instruction, and a location of an opcode byte of the branch instruction within the cache line. The instruction cache provides the cache line to an instruction buffer and the BTAC provides the prediction, the target address, and the location in response to the fetch address. The microprocessor branches to the target address. A byte in the cache line within the instruction buffer indicated by the location provided by the BTAC is marked. An instruction decoder formats the instruction bytes in the cache line.
    Type: Grant
    Filed: May 4, 2001
    Date of Patent: November 7, 2006
    Assignee: IP-First, LLC
    Inventors: G. Glenn Henry, Thomas C. McDonald, Terry Parks
  • Patent number: 7120784
    Abstract: Branch prediction logic is enhanced to provide a monitoring function for certain conditions which indicate that the use of separate BHTs and predicted target address cache would provide better results for branch prediction. The branch prediction logic responds to the occurrence of the monitored condition by logically splitting the BHTs and count cache so that half of the address space is allocated to a first thread and the second half is allocated to the next thread. Prediction-generated addresses that belong to the first thread are then directed to the half of the array that is allocated to that thread and prediction-generated addresses that belong to the second thread are directed to the next half of the array that is allocated to the second thread. In order to split the array, the highest order bit in the array is utilized to uniquely identify addresses of the first and the second threads.
    Type: Grant
    Filed: April 28, 2003
    Date of Patent: October 10, 2006
    Assignee: International Business Machines Corporation
    Inventors: Gregory William Alexander, Scott Bruce Frommer, David Stephen Levitan, Balaram Sinharoy
  • Patent number: 7117347
    Abstract: A method and apparatus are provided for processing far jump-call branch instructions within a processor in a manner which reduces the number of stalls of the processor pipeline. The processor includes an apparatus, for providing a fallback far jump-call speculative target address that corresponds to a current far jump-call branch instruction. The microprocessor apparatus includes a far jump-call branch target buffer and a fallback speculative target address generator. The far jump-call branch target buffer stores a plurality of code segment bases and offsets corresponding to a plurality of previously executed far jump-call branch instructions, and determines if a hit for the current far jump-call branch instruction is contained therein. The fallback speculative target address generator is coupled to the far jump-call branch target buffer.
    Type: Grant
    Filed: October 22, 2002
    Date of Patent: October 3, 2006
    Assignee: IP-First, LLC
    Inventors: Gerard M. Col, Thomas C. McDonald
  • Patent number: 7093111
    Abstract: A method and system for recovering a global history vector. In the event of a non-branch flush, a tag may be received by a queue configured to store information about branch instructions. The queue may read a copy of the global history vector from an entry indexed by the tag. This copy may be inserted in a global history vector mechanism (“GHV mechanism”) configured to manage the global history vector. If the flush operation is a flush to a group of instructions that contains no branch instructions and the tag does not equal the next-to-write pointer in the queue, then the queue may transmit a command to the GHV mechanism to enter a mode where the GHV mechanism does not update the global history vector until the next branch instruction is fetched.
    Type: Grant
    Filed: July 31, 2003
    Date of Patent: August 15, 2006
    Assignee: International Business Machines Corporation
    Inventors: Scott B. Frommer, Balaram Sinharoy
  • Patent number: 7085920
    Abstract: A branch prediction method including determining branch prediction data indicating a state of branch prediction according to whether a branch is actually made, performing branch prediction according to the branch prediction data, and correcting the branch prediction data according to whether the branch is actually made.
    Type: Grant
    Filed: December 15, 2000
    Date of Patent: August 1, 2006
    Assignee: Fujitsu Limited
    Inventor: Koichi Yoshimi
  • Patent number: 7082520
    Abstract: Improved Branch prediction utilizes both a Branch Target Buffer (BTB) and a Multiple Target Table (MTT) for providing the capability to predict multiple targets for a single branch. A MTT when used in conjunction with a BTB allows for branches which have changing targets to be able to selectively choose the target of choice based on the execution path that was taken that lead to the given branch. The method predicts traget addresses, and between the static and dynamic target address, and upon finding a hit, the target is sent to the instruction cache such that a fetch can begin for the current target address and the target address is sent back to the Branch Target Buffer (BTB) to begin the search for the next branch given the current target predicted address. Upon resolving a branch the dynamic target is placed in MTT for future use.
    Type: Grant
    Filed: May 9, 2002
    Date of Patent: July 25, 2006
    Assignee: International Business Machines Corporation
    Inventors: James J. Bonanno, Brian R. Prasky
  • Patent number: 7069426
    Abstract: An embodiment of the invention is directed to a dynamic branch prediction method in which a first taken/not-taken prediction is provided responsive to an address using a saturating counter branch predictor. A second taken/not-taken prediction responsive to the address resulting in a hit in a local branch history table is provided. In addition, a hit/miss indication for the address is provided. The second prediction is selected for the address if the indication is a hit, and the first prediction is selected if the indication is a miss.
    Type: Grant
    Filed: March 28, 2000
    Date of Patent: June 27, 2006
    Assignee: Intel Corporation
    Inventor: Vincent E. Hummel
  • Patent number: 7055023
    Abstract: An apparatus for branch prediction includes a history register which stores therein history of previous branch instructions, an index generation circuit which generates a first index from an instruction address and the history stored in the history register, a history table which stores therein a portion of the instruction address as a tag and a first value indicative of likelihood of branching in association with the first index, a branch destination buffer which stores therein a branch destination address or predicted branch destination address of an instruction indicated by the instruction address and a second value indicative of likelihood of branching in association with a second index that is at least a portion of the instruction address, and a selection unit which makes a branch prediction by selecting one of the first value and the second value.
    Type: Grant
    Filed: March 6, 2002
    Date of Patent: May 30, 2006
    Assignee: Fujitsu Limited
    Inventors: Shinichiro Tago, Tomohiro Yamana, Yoshimasa Takebe
  • Patent number: 7024545
    Abstract: A processor is configured with a first level branch prediction cache configured to store branch prediction information corresponding to a group of instructions. In addition, a second level branch prediction cache is utilized to store branch prediction information which is evicted from the first level cache. The second level branch prediction cache is configured to store only a subset of the information which is evicted from the first level cache. Branch prediction information which is evicted from the first level cache and not stored in the second level cache is discarded. Upon a miss in the first level cache, a determination is made as to whether the second level cache contains branch prediction information corresponding to the miss. If corresponding branch prediction information is detected in the second level cache, the detected branch prediction information is used to rebuild complete branch prediction information.
    Type: Grant
    Filed: July 24, 2001
    Date of Patent: April 4, 2006
    Assignee: Advanced Micro Devices, Inc.
    Inventors: Gerald D. Zuraski, Jr., James S. Roberts
  • Patent number: 7000096
    Abstract: A method of generating a Global History Vector includes the steps of determining if a selected group of instructions contains a branch instruction. A current Global History Vector is maintained in a shift register when the selected group does not contain a branch instruction. A first value is shifted into the shift register to generate a second vector if the selected group contains a branch instruction which is predicted to be a branch taken. A second value is shifted into the shift register to generate a second vector when the selected group contains a branch instruction and the selected group does not include a branch instruction predicted to be a branch taken.
    Type: Grant
    Filed: August 3, 2000
    Date of Patent: February 14, 2006
    Assignee: International Business Machines Corporation
    Inventor: Balaram Sinharoy
  • Patent number: 6988189
    Abstract: An embodiment of the present invention described and shown in the specification and drawing is a Ternary Content Addressable Memory (TCAM) multi-dimensional multi-way branch selector. The embodiment that is disclosed includes a wide TCAM and a pre-TCAM multi-field multi-mode comparator for coupling to a microprocessor for performing multi-way branching decisions based on multi-dimensional comparisons. It is emphasized that this abstract is provided to comply with the rule requiring an abstract which will allow a searcher or other reader to quickly ascertain the subject matter of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims.
    Type: Grant
    Filed: October 31, 2000
    Date of Patent: January 17, 2006
    Assignee: Altera Corporation
    Inventors: James Michael O'Connor, Edward Funnekotter, Jon Huie
  • Patent number: 6986027
    Abstract: This invention is a method and system for hybrid prediction of load addresses and/or values. The new scheme for value prediction provides prediction based on last values and strides, as well as context prediction, without the use of a sophisticated switching scheme between several predictors. The system collects patterns of deltas of subsequent values instead of the values itself in a first table. Thus, a last value prediction can be achieved by predicting a ‘pattern’ of just one stride equal to zero. A stride predictor uses a pattern of one constant stride. And a certain pattern of values is modeled by recording the pattern of deltas between the values and adding the deltas to the last value. The switching scheme is inherently included in the system itself and operates basically by immediate evaluation of counters in the pattern history table.
    Type: Grant
    Filed: May 24, 2001
    Date of Patent: January 10, 2006
    Assignee: International Business Machines Corporation
    Inventors: Harry Stefan Barowski, Rolf Hilgendorf
  • Patent number: 6978361
    Abstract: In a method for predicting whether a branch will be taken when a computational circuit executes a conditional branch instruction, a branch prediction field is associated with the conditional branch instruction. The branch prediction field includes at least a first state and a different second state. Upon accessing the conditional branch instruction, if the branch prediction field is in the first state the conditional branch instruction is prepared to execute as though the branch will result. If the branch prediction field is in the second state, the conditional branch instruction is prepared to execute as though the branch will not result.
    Type: Grant
    Filed: September 20, 2002
    Date of Patent: December 20, 2005
    Assignee: International Business Machines Corporation
    Inventor: David A. Luick
  • Patent number: 6965983
    Abstract: A pipelined CPU includes a pre-fetch (PF) stage for performing branch prediction, and an instruction fetch (IF) stage for fetching instructions that are to be later processed by an execution (EX) stage. The PF stage has a PF address (PFA) register for storing the address of an instruction being processed by the PF stage, and the IF stage has an IF address (IFA) register for storing the address of an instruction to be fetched for later execution. The CPU also includes address register control (ARC) circuitry for setting the contents of the PFA and the IFA. The ARC accepts branch-prediction results from the PF stage to determine the subsequent contents of the PFA and the IFA. If the PF stage predicts a branch, then the ARC sets the next address of the PFA to be sequentially after a predicted branch address, and simultaneously sets the next address of the IFA to be the predicted branch address.
    Type: Grant
    Filed: February 16, 2003
    Date of Patent: November 15, 2005
    Assignee: Faraday Technology Corp.
    Inventor: Hung-Yu Lin
  • Patent number: 6928537
    Abstract: An apparatus and method are provided for accurately predicting the outcome of branch instructions prior to their execution by a pipeline microprocessor. The apparatus includes a first table, a second table, and selection logic. The first table stores branch histories for a first set of branch instructions where the first set, when executed, exhibits a bias toward a first outcome. The second table stores second branch histories for a second set of branch instructions, where, the second set, when executed, exhibits a bias toward a second outcome. The selection logic is coupled to the first and second tables. The selection logic selects a particular branch history from either of the first or second tables. Thus, a branch prediction is made based upon contents of a branch history that is selected from a table containing branch histories for other branch instructions that exhibit the same outcome tendency as the particular branch instruction, thereby reducing the negative effects of aliasing.
    Type: Grant
    Filed: July 12, 2002
    Date of Patent: August 9, 2005
    Assignee: IP-First, LLC
    Inventors: G. Glenn Henry, Terry Parks
  • Patent number: 6920549
    Abstract: A branch history information write control device in an instruction execution processing apparatus includes a memory unit storing an instruction string, and a branch prediction unit performing a branch prediction of a branch instruction. A control unit in the device controls the memory unit and the branch prediction unit in such a way that writing of branch history information in the branch prediction unit and control over fetching of the instruction string in the memory unit may not occur simultaneously so that no instruction fetch is held. A bypass unit in the device makes the branch history information of the branch instruction a research target of a branch prediction, where said control unit uses a counter to count several clock cycles (several states) to delay, for a period of several clock cycles (several states), the writing of the branch history information and control, beforehand, the fetching of the instruction string.
    Type: Grant
    Filed: March 21, 2000
    Date of Patent: July 19, 2005
    Assignee: Fujitsu Limited
    Inventor: Masaki Ukai
  • Patent number: 6918033
    Abstract: A branch predictor outputs either a predicted conditional branch or an inverted predicted conditional branch as a final branch prediction outcome, in response to a predicted accuracy history signal based on one or more accuracy history bits. According to the accuracy history bit, it is determined whether the branch prediction outcome of the branch predictor is correct. If the predicted conditional branch is correct, the branch predictor outputs the predicted conditional branch, and if the predicted conditional branch is not correct, the branch predictor outputs the inverted predicted conditional branch, in response to the predicted accuracy history signal. For performing this process, the branch prediction appends an accuracy history table and a multiplexer to a conventional branch predictor, so that the branch prediction according to the present invention can reduce the misprediction with relatively simple circuitry and low hardware cost.
    Type: Grant
    Filed: October 20, 2000
    Date of Patent: July 12, 2005
    Assignee: Samsung Electronics Co., Ltd.
    Inventor: Jang-Ho Cho