History Table Patents (Class 712/240)
  • Patent number: 9152425
    Abstract: Embodiments of the disclosure include mitigating instruction prediction latency with independently filtered instruction prediction presence predictors coupled to the processor pipeline. The prediction presence predictor includes a plurality of presence predictors configured to each receive an instruction address in parallel and to generate an unfiltered indication of an associated instruction prediction. The prediction presence predictor includes a plurality of dynamic filters that are each coupled to one of the plurality of presence predictors. Each dynamic filter is configured to block the unfiltered indications based on a performance of the presence predictor it is coupled to. The prediction presence predictor further including stall determination logic coupled to the plurality of dynamic filters.
    Type: Grant
    Filed: December 10, 2013
    Date of Patent: October 6, 2015
    Assignee: International Business Machines Corporation
    Inventors: James J. Bonanno, Brian R. Prasky, Anthony Saporito, Chung-Lung K. Shum
  • Patent number: 9152424
    Abstract: Embodiments of the disclosure include mitigating instruction prediction latency with independently filtered instruction prediction presence predictors coupled to the processor pipeline. The prediction presence predictor includes a plurality of presence predictors configured to each receive an instruction address in parallel and to generate an unfiltered indication of an associated instruction prediction. The prediction presence predictor includes a plurality of dynamic filters that are each coupled to one of the plurality of presence predictors. Each dynamic filter is configured to block the unfiltered indications based on a performance of the presence predictor it is coupled to. The prediction presence predictor further including stall determination logic coupled to the plurality of dynamic filters.
    Type: Grant
    Filed: June 14, 2012
    Date of Patent: October 6, 2015
    Assignee: International Business Machines Corporation
    Inventors: James J. Bonanno, Brian R. Prasky, Anthony Saporito, Chung-Lung K. Shum
  • Patent number: 9146739
    Abstract: Embodiments relate to branch prediction preloading. An aspect includes a system for branch prediction preloading. The system includes an instruction cache and branch target buffer (BTB) coupled to a processing circuit, the processing circuit configured to perform a method. The method includes fetching a plurality of instructions in an instruction stream from the instruction cache, and decoding a branch prediction preload instruction in the instruction stream. An address of a predicted branch instruction is determined based on the branch prediction preload instruction. A predicted target address is determined based on the branch prediction preload instruction. A mask field is identified in the branch prediction preload instruction, and a branch instruction length is determined based on the mask field.
    Type: Grant
    Filed: June 14, 2012
    Date of Patent: September 29, 2015
    Assignee: International Business Machines Corporation
    Inventors: James J. Bonanno, Marcel Mitran, Brian R. Prasky, Joran Siu, Timothy J. Slegel, Alexander Vasilevskiy
  • Patent number: 9141388
    Abstract: A digital system includes a processor core and a cache control unit. The processor core can be coupled to a first memory containing data and a second memory with a faster speed than the first memory, and is configured to execute a segment of instructions having at least one instruction accessing the data from the second memory using a base register. The cache control unit is configured to be coupled to the first memory, the second memory, and the processor core to fill the data from the first memory to the second memory before the processor core executes the instruction accessing the data, and is further configured to examine the segment of instructions to extract instruction information containing at least data access instruction information and last register updating instruction information and to create a track corresponding to the segment of instructions based on the extracted instruction information.
    Type: Grant
    Filed: July 13, 2012
    Date of Patent: September 22, 2015
    Assignee: SHANGHAI XIN HAO MICRO ELECTRONICS CO., LTD.
    Inventors: Kenneth Chenghao Lin, Haoqi Ren
  • Patent number: 9141553
    Abstract: A digital system is provided for high-performance cache systems. The digital system includes a processor core and a cache control unit. The processor core is capable of being coupled to a first memory containing executable instructions and a second memory with a faster speed than the first memory. Further, the processor core is configured to execute one or more instructions of the executable instructions from the second memory. The cache control unit is configured to be couple to the first memory, the second memory, and the processor core to fill at least the one or more instructions from the first memory to the second memory before the processor core executes the one or more instructions.
    Type: Grant
    Filed: July 29, 2014
    Date of Patent: September 22, 2015
    Assignee: SHANGHAI XIN HAO MICRO ELECTRONICS CO. LTD.
    Inventors: Kenneth Chenghao Lin, Haoqi Ren
  • Patent number: 9135012
    Abstract: Embodiments relate to instruction filtering. An aspect includes a system for instruction filtering. The system includes memory configured to store instructions accessible by a processor, and the processor includes a tracking array and a tracked instruction logic block. The processor is configured to perform a method including detecting a tracked instruction in an instruction stream, and storing an instruction address of the tracked instruction in the tracking array based on detecting and executing the tracked instruction. The method also includes accessing the tracking array based on an address of instruction data of a subsequently fetched instruction to locate the instruction address of the tracked instruction in the tracking array as an indication of the tracked instruction. Instruction text of the subsequently fetched instruction is marked to indicate previous execution based on the tracking array. An action of the tracked instruction logic block is prevented based on the marked instruction text.
    Type: Grant
    Filed: June 14, 2012
    Date of Patent: September 15, 2015
    Assignee: International Business Machines Corporation
    Inventors: James J. Bonanno, Adam B. Collura, Ulrich Mayer, Brian R. Prasky, Anthony Saporito, Chung-Lung K. Shum
  • Patent number: 9116686
    Abstract: A method for suppressing prediction of a backward branch instruction used in a vector partitioning loop includes detecting the first backward branch instruction that occurs after a predicate generating instruction. The predicate generating instruction generates a predicate vector that is dependent upon a dependency vector where each element of the dependency vector indicates whether a data dependency exists between elements of a vector instruction. The method also includes receiving an indication of a prediction accuracy of a prediction of the backward branch instruction. If the prediction accuracy does not satisfy a threshold value, the prediction of the backward branch instruction is suppressed until the dependency vector on which the predicate-generating instruction depends is available.
    Type: Grant
    Filed: April 2, 2012
    Date of Patent: August 25, 2015
    Assignee: Apple Inc.
    Inventor: Jeffry E. Gonion
  • Patent number: 9110683
    Abstract: While fetching the instructions from a loop in program code, a processor calculates a number of times that a backward-branching instruction at the end of the loop will actually be taken when the fetched instructions are executed. Upon determining that the backward-branching instruction has been predicted taken more than the number of times that the branch instruction will actually be taken, the processor immediately commences a mispredict operation for the branch instruction, which comprises: (1) flushing fetched instructions from the loop that will not be executed from the processor, and (2) commencing fetching instructions from an instruction following the branch instruction.
    Type: Grant
    Filed: March 7, 2012
    Date of Patent: August 18, 2015
    Assignee: APPLE INC.
    Inventor: Jeffry E. Gonion
  • Patent number: 9092618
    Abstract: A method for making secure execution of a computer program includes a set of at least one instruction, characterized in that it includes: a first step which consists in calculating and storing, prior to execution of the computer program, a first signature representing the expected execution of the set of instructions; a second step which consists in calculating and storing, during execution of the set of instructions, a second signature representing the execution of the set of instructions; and a step which consists in detecting an anomaly of execution of the set of instructions from the first and second signatures.
    Type: Grant
    Filed: December 10, 2003
    Date of Patent: July 28, 2015
    Assignee: OBERTHUR TECHNOLOGIES
    Inventors: Jean-Bernard Fischer, Paul Dischamp
  • Patent number: 9032174
    Abstract: A processor determines whether a first program is under execution when a second program is executed, and changes a setting of a memory management unit based on access prohibition information so that a fault occurs when the second program makes an access to a memory when the first program is under execution. Then, the processor determines whether an access from the second program to a memory area used by the first program is permitted based on memory restriction information when the fault occurs while the first program and the second program are under execution, and changes the setting of the memory management unit so that the fault does not occur when the access to the memory area is permitted.
    Type: Grant
    Filed: February 11, 2013
    Date of Patent: May 12, 2015
    Assignee: Fujitsu Limited
    Inventor: Naoki Nishiguchi
  • Patent number: 9032191
    Abstract: A hypervisor and one or more guest operating systems resident in a data processing system and hosted by the hypervisor are configured to selectively enable or disable branch prediction logic through separate hypervisor-mode and guest-mode instructions. By doing so, different branch prediction strategies may be employed for different operating systems and user applications hosted thereby to provide finer grained optimization of the branch prediction logic for different operating scenarios.
    Type: Grant
    Filed: January 23, 2012
    Date of Patent: May 12, 2015
    Assignee: International Business Machines Corporation
    Inventors: Adam J. Muff, Paul E. Schardt, Robert A. Shearer, Matthew R. Tubbs
  • Patent number: 8990545
    Abstract: This is a program analysis technique using a branch history table (BHT). Upon start of a program, a plurality of flags, each corresponding to an instruction of the program, are initialized to a disabled state and an initial state of a BHT is stored. Upon execution of a branch instruction, if a branch has not been taken, a value of history information of a corresponding entry of the BHT is decremented. If the branch has been taken, the value of the history information of the corresponding entry is incremented and whether a corresponding flag is enabled or disabled is determined. If the corresponding flag is disabled, the flag is enabled. Upon termination of the program, a differential history information value of each entry is obtained from the stored initial state and a final state of the BHT. A final state of each flag is obtained.
    Type: Grant
    Filed: December 21, 2011
    Date of Patent: March 24, 2015
    Assignee: International Business Machines Corporation
    Inventor: Kenta Nakamura
  • Patent number: 8977816
    Abstract: A cache and disk management method is provided. In the cache and disk management method, a command to delete all valid data stored in a cache, or specific data corresponding to a part of the valid data may be transmitted to a plurality of member disks. That is, all of the valid data or the specific data may exist in the cache only, and may be deleted from the plurality of member disks. Accordingly, the plurality of member disks may secure more space, an internal copy overhead may be reduced, and more particularly, solid state disks may achieve better performance.
    Type: Grant
    Filed: December 23, 2009
    Date of Patent: March 10, 2015
    Assignee: OCZ Storage Solutions Inc.
    Inventor: Soo Gil Jeong
  • Patent number: 8972706
    Abstract: A data processing system and computer program product for processing instructions. The instructions are processed by a processor unit while using a first table in a plurality of tables to predict a set of instructions needed by the processor unit after processing of a conditional instruction. An identification is formed that a rate of success in correctly predicting the set of instructions when using the first table is less than a threshold number. A sequence of the instructions being processed by the processor unit is searched for an instruction that matches a marker in a set of markers for identifying when to use the plurality of tables. An identification that the instruction that matches the marker is formed. A second table from the plurality of tables referenced by the marker is identified. The second table is used in place of the first table.
    Type: Grant
    Filed: May 26, 2011
    Date of Patent: March 3, 2015
    Assignee: International Business Machines Corporation
    Inventors: Wen-Tzer T. Chen, Diane G. Flemming, William A. Maron, Mysore S. Srinivas, David B. Whitworth
  • Publication number: 20150052339
    Abstract: When predicting that branch is established as a result of performing branch prediction of a branch instruction based on pieces of branch information on branch instructions included in entries read from branch histories stored in a storing unit which stores, in each way, the branch history including a first index being part of an instruction address and a second index being a value obtained by an arithmetic operation using part of the instruction address, a branch predicting unit outputs a predicted branch destination address, and when a prediction failure of the predicted branch destination address obtained is detected, a branch history updating unit sets updated information of the branch information to update the branch history, and when the prediction failure is detected and the updated information is set in the branch information, registers the branch information in the branch history stored in the storing unit, by using the second index.
    Type: Application
    Filed: July 25, 2014
    Publication date: February 19, 2015
    Inventor: Takashi Suzuki
  • Publication number: 20150052338
    Abstract: An arithmetic processing device includes: first prediction units which output branch prediction information of a fetched conditional branch instruction based on past branch history information of conditional branch instructions; a second prediction unit which stores a branch taken consecutive number of times and a branch not-taken consecutive number of times to a pattern information storage unit, and outputs branch prediction information of a fetched conditional branch instruction based on the past branch taken consecutive number of times or branch not-taken consecutive number of times stored; selecting units which selectively output the branch prediction information output from the first prediction units or the second prediction unit; and a selector which outputs a next instruction address of the conditional branch instruction or a branch target address of the conditional branch instruction to an instruction fetch unit in accordance with the branch prediction information output by the selecting units.
    Type: Application
    Filed: June 30, 2014
    Publication date: February 19, 2015
    Inventors: Kotaro Kuwahara, Takashi Suzuki
  • Patent number: 8959320
    Abstract: A system and method for efficient branch prediction. A processor includes two branch predictors. A first branch predictor generates branch prediction data, such as a branch direction and a branch target address. The second branch predictor generates branch prediction data at a later time and with higher prediction accuracy. Control logic may determine whether the branch prediction data from each of the first and the second branch predictors match. If a mismatch occurs, the first predictor may be trained with the branch prediction data generated by the second branch predictor. A stored indication of hysteresis may indicate a given branch instruction exhibits a frequently alternating pattern regarding its branch direction. Such behavior may lead to consistent branch mispredictions due to the training is unable to keep up with the changing branch direction. When such a condition is determined to occur, the control logic may prevent training of the first predictor.
    Type: Grant
    Filed: December 7, 2011
    Date of Patent: February 17, 2015
    Assignee: Apple Inc.
    Inventors: Andrew J. Beaumont-Smith, Ramesh B. Gunna
  • Publication number: 20150046691
    Abstract: This disclosure includes a method for performing branch prediction by a processor having an instruction pipeline. The processor speculatively updates a global history register having fetch group history and branch history, fetches a fetch group of instructions, and assigns a global history vector to the instructions. The processor predicts any branches in the fetch group using the global history vector and a predictor, and evaluates whether the fetch group contains a predicted taken branch. If the fetch group contains a predicted taken branch, the processor flushes subsequently fetched instructions in the pipeline following the predicted taken branch, repairs the global history register to the global history vector, and updates the global history register based on branch prediction information. If the fetch group does not contain a predicted taken branch, the processor updates the global history register with a branch history value for each branch in the fetch group.
    Type: Application
    Filed: November 8, 2013
    Publication date: February 12, 2015
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Timothy H. Heil, Andrew D. Hilton
  • Patent number: 8943298
    Abstract: Methods and apparatus for restoring a meta predictor system upon detecting a branch or binary misprediction, are disclosed. An example apparatus may include a base misprediction history register to store a set of misprediction history values each indicating whether a previous branch prediction taken by a previous branch instruction was predicted correctly or incorrectly. The apparatus may comprise a meta predictor to detect a branch misprediction of a current branch prediction based at least in part on an output of the base misprediction history register. The meta predictor may restore the base misprediction history register based on the detecting of the branch misprediction. Additional apparatus, systems, and methods are disclosed.
    Type: Grant
    Filed: October 28, 2013
    Date of Patent: January 27, 2015
    Assignee: Micron Technology, Inc.
    Inventors: Stephan Jourdan, Adi Yoaz, Mattan Erez, Ronny Ronen
  • Patent number: 8943301
    Abstract: Methods 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: May 5, 2011
    Date of Patent: January 27, 2015
    Assignee: International Business Machines Corporation
    Inventors: Brian R. Konigsburg, David Stephen Levitan, Wolfram M. Sauer, Samuel Jonathan Thomas
  • Publication number: 20140380027
    Abstract: A processing device implementing an elapsed cycle timer in last branch records (LBRs) is disclosed. A processing device of the disclosure includes a last branch record (LBR) counter to iterate with each cycle of the processing device and an LBR structure communicably coupled to the LBR counter. The LBR structure comprises a plurality of LBR entries. Furthermore, an LBR entry of the plurality of LBR entries comprises an address instruction pointer (IP) of a branch instruction executed by the processing device, an address IP of a target of the branch instruction, and an elapsed time field that stores a value of the LBR counter when the LBR entry is created.
    Type: Application
    Filed: June 20, 2013
    Publication date: December 25, 2014
    Inventors: Ahmad Yasin, Michael W. Chynoweth, Ofer Levy, Jason W. Brandt, Angela Schmid
  • Patent number: 8904155
    Abstract: In response to a property of a conditional branch instruction associated with a loop, such as a property indicating that the branch is a loop-ending branch, a count of the number of iterations of the loop is maintained, and a multi-bit value indicative of the loop iteration count is stored in a Branch History Register (BHR). In one embodiment, the multi-bit value may comprise the actual loop count, in which case the number of bits is variable. In another embodiment, the number of bits is fixed (e.g., two) and loop iteration counts are mapped to one of a fixed number of multi-bit values (e.g., four) by comparison to thresholds. Separate iteration counts may be maintained for nested loops, and a multi-bit value stored in the BHR may indicate a loop iteration count of only an inner loop, only the outer loop, or both.
    Type: Grant
    Filed: March 17, 2006
    Date of Patent: December 2, 2014
    Assignee: QUALCOMM Incorporated
    Inventors: James Norris Dieffenderfer, Bohuslav Rychlik
  • Patent number: 8892852
    Abstract: A branch prediction device capable of preventing degradation of branch prediction accuracy and a delay in processing speed is provided. The branch prediction device includes a branch prediction information accumulation processing section which stores branch prediction groups in which a plurality of pieces of branch prediction information are grouped, and performs accumulation-processing of the branch prediction information. The branch prediction device further includes a pipeline access control section which performs processing, upon request, by pipeline processing, including first selection control processing for selection-controlling at least one branch prediction group from the branch prediction groups, and second selection control processing for selection-controlling one or a plurality of pieces of branch prediction information from the branch prediction group, and controls an access to the branch prediction information accumulation processing section.
    Type: Grant
    Filed: July 23, 2008
    Date of Patent: November 18, 2014
    Assignee: NEC Corporation
    Inventor: Yasuo Ishii
  • Patent number: 8874884
    Abstract: A method includes executing a branch instruction and determining if a branch is taken. The method further includes evaluating a number of instructions associated with the branch instruction. Upon determining that the branch is taken, the method includes selectively writing an entry into a branch target buffer that corresponds to the taken branch responsive to determining that the number of instructions is less than a threshold.
    Type: Grant
    Filed: November 4, 2011
    Date of Patent: October 28, 2014
    Assignee: QUALCOMM Incorporated
    Inventors: Suresh K. Venkumahanti, Lucian Codrescu, Suman Mamidi
  • Patent number: 8862861
    Abstract: Techniques are disclosed relating to a processor that is configured to execute control transfer instructions (CTIs). In some embodiments, the processor includes a mechanism that suppresses results of mispredicted younger CTIs on a speculative execution path. This mechanism permits the branch predictor to maintain its fidelity, and eliminates spurious flushes of the pipeline. In one embodiment, a misprediction bit is be used to indicate that a misprediction has occurred, and younger CTIs than the CTI that was mispredicted are suppressed. In some embodiments, the processor may be configured to execute instruction streams from multiple threads. Each thread may include a misprediction indication. CTIs in each thread may execute in program order with respect to other CTIs of the thread, while instructions other than CTIs may execute out of program order.
    Type: Grant
    Filed: September 8, 2011
    Date of Patent: October 14, 2014
    Assignee: Oracle International Corporation
    Inventors: Christopher H. Olson, Manish K. Shah
  • Publication number: 20140250289
    Abstract: Improved branch target buffers (BTBs) and methods of processing data in a microprocessor with a pipeline are provided. According to various embodiments, a BTB is provided that includes a non-return buffer, a return buffer, and a multiplexer. The non-return buffer is designed to store a multiple of non-return entries. Each non-return entry corresponds to a non-return type instruction. The return buffer is designed to store a plurality of return entries that each correspond to a return type instruction. Additionally, the return buffer may generate a control signal. The multiplexer also generates a control signal and outputs either data from the non-return buffer or data from a return prediction stack (RPS). Whether the multiplexer returns data from the non-return buffer or the RPS depends on the control signal.
    Type: Application
    Filed: March 1, 2013
    Publication date: September 4, 2014
    Applicant: MIPS Technologies, Inc.
    Inventors: Parthiv POTA, Sanjay PATEL
  • Publication number: 20140229720
    Abstract: A method and circuit arrangement maintain power usage prediction information for one or more functional units in branch prediction logic for a processing unit such that the power consumption of a functional unit may be selectively reduced in association with the execution of branch instructions when it is predicted that the functional unit will be idle subsequent to the execution of such branch instructions.
    Type: Application
    Filed: February 8, 2013
    Publication date: August 14, 2014
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Mark J. Hickey, Adam J. Muff, Matthew R. Tubbs, Charles D. Wait
  • Publication number: 20140229721
    Abstract: A processor includes an execution pipeline having one or more execution units to execution the instructions and a branch prediction unit coupled to the execution units. The branch prediction unit includes a branch history table to store prior branch predictions, a branch predictor, in response to a conditional branch instruction, to predict a branch target address of the conditional branch instruction based on the branch history table, and address match logic to compare the predicted branch target address with an address of a next instruction executed immediately following the conditional branch instruction. The address match logic is to cause the execution pipeline to be flushed if the predicted branch target address does not match the address of the next instruction to be executed.
    Type: Application
    Filed: March 30, 2012
    Publication date: August 14, 2014
    Inventors: Andrew T. Forsyth, Renju Thomas, Jean-Luc Duprat
  • Patent number: 8782382
    Abstract: In one embodiment, a processor includes an execution unit and at least one last branch record (LBR) register to store address information of a branch taken during program execution. This register may further store a transaction indicator to indicate whether the branch was taken during a transactional memory (TM) transaction. This register may further store an abort indicator to indicate whether the branch was caused by a transaction abort. Other embodiments are described and claimed.
    Type: Grant
    Filed: March 6, 2013
    Date of Patent: July 15, 2014
    Assignee: Intel Corporation
    Inventors: Ravi Rajwar, Peter Lachner, Laura A. Knauth, Konrad K. Lai
  • Patent number: 8782384
    Abstract: A system and method for efficient improvement of branch prediction in a microprocessor with negligible impact on die-area, power consumption, and clock cycle period. It is determined if a program counter (PC) register contains a polymorphic indirect unconditional branch (PIUB) instruction. One determination may be searching a table with a portion or all of a PC of past PIUB instructions. If a hit occurs in this table, the global shift register (GSR) is updated by shifting a portion of the branch target address into the GSR, rather than updating the GSR with a taken/not-taken prediction bit. The stored value in the GSR is input into a hashing function along with the PC in order to index prediction tables such as a pattern history table (PHT), a branch target buffer (BTB), an indirect target array, or other. The updated value due to the PIUB instruction improves the accuracy of the prediction tables.
    Type: Grant
    Filed: December 20, 2007
    Date of Patent: July 15, 2014
    Assignee: Advanced Micro Devices, Inc.
    Inventors: David Suggs, Ravindra N. Bhargava
  • Patent number: 8751776
    Abstract: A branch target address table is provided for each branch instruction having a plurality of branch targets. Each branch target address table stores a history of a plurality of branch target addresses determined in the past by executing a corresponding branch instruction. A branch target prediction unit predicts a predicted branch target address with respect to a branch instruction with reference to the history of branch target addresses stored in the branch target address table corresponding to the branch instruction. The predicted branch target address obtained as a result of the prediction is stored, for example, in a predicted branch target address storage unit in association with the branch instruction, and is referenced by an instruction fetch control unit at the time of prefetching a branch target instruction.
    Type: Grant
    Filed: June 10, 2013
    Date of Patent: June 10, 2014
    Assignee: Fujitsu Limited
    Inventor: Megumi Ukai
  • Publication number: 20140156979
    Abstract: A method for processing instructions. The instructions are processed by a processor unit while using a first table in a plurality of tables to predict a set of instructions needed by the processor unit after processing of a conditional instruction. An identification is formed that a rate of success in correctly predicting the set of instructions when using the first table is less than a threshold number. A sequence of the instructions being processed by the processor unit is searched for an instruction that matches a marker in a set of markers for identifying when to use the plurality of tables. An identification that the instruction that matches the marker is formed. A second table from the plurality of tables referenced by the marker is identified. The second table is used in place of the first table.
    Type: Application
    Filed: February 7, 2014
    Publication date: June 5, 2014
    Applicant: International Business Machines Corporation
    Inventors: Wen-Tzer T. Chen, Diane G. Flemming, William A. Maron, Mysore Sathyanarayana Srinivas, David Blair Whitworth
  • Publication number: 20140156978
    Abstract: A processor includes an instruction pipeline for executing instructions including a branching instruction, a counter for counting times that the branching instruction is taken, a register for storing a global branch history as a function of a value of the counter, and a branch prediction unit for predicting branching based on the global branch history.
    Type: Application
    Filed: November 30, 2012
    Publication date: June 5, 2014
    Inventors: Muawya M. AL-OTOOM, Paul CAPRIOLI, Jeffrey J. COOK
  • Patent number: 8745362
    Abstract: A processor resource manager assigns a branch history resource to a first execution mode. The branch history resource is utilized for predicting a branch direction of a branch instruction. Next, the resource manager logs a number of branch mispredictions that occur while the processor executes a second execution mode. The resource manager, in turn, reassigns the branch history resource to the second execution mode based upon the number of branch mispredictions.
    Type: Grant
    Filed: June 25, 2010
    Date of Patent: June 3, 2014
    Assignee: International Business Machines Corporation
    Inventors: Robert H. Bell, Jr., Wen-Tzer Thomas Chen
  • Patent number: 8694973
    Abstract: Methods and systems for executing a code stream of non-native binary code on a computing system are disclosed. One method includes parsing the code stream to detect a plurality of elements including one or more branch destinations, and traversing the code stream to detect a plurality of non-native operators. The method also includes executing a pattern matching algorithm against the plurality of non-native operators to find combinations of two or more non-native operators that do not span across a detected branch destination and that correspond to one or more target operators executable by the computing system. The method further includes generating a second code stream executable on the computing system including the one or more target operators.
    Type: Grant
    Filed: September 27, 2011
    Date of Patent: April 8, 2014
    Assignee: Unisys Corporation
    Inventor: Andrew Ward Beale
  • Publication number: 20140089647
    Abstract: In an embodiment, a processor may be configured to fetch N instruction bytes from an instruction cache (a “fetch group”), even if the fetch group crosses a cache line boundary. A branch predictor may be configured to produce branch predictions for up to M branches in the fetch group, where M is a maximum number of branches that may be included in the fetch group. In an embodiment, a branch direction predictor may be updated responsive to a misprediction and also responsive to the branch prediction being within a threshold of transitioning between predictions. To avoid a lookup to determine if the threshold update is to be performed, the branch predictor may detect the threshold update during prediction, and may transmit an indication with the branch.
    Type: Application
    Filed: September 24, 2012
    Publication date: March 27, 2014
    Inventors: Ian D. Kountanis, Gerard R. Williams, III, James B. Keller
  • Publication number: 20140082339
    Abstract: Embodiments relate to global weak pattern history table (PHT) filtering. An aspect includes receiving a search address associated with a branch prediction, and receiving a prediction strength indicator and a tag from a PHT. Based on determining that the tag matches the search address and the prediction strength indicator is weak, an accuracy counter is compared to a comparison threshold to determine whether a PHT direction prediction from the PHT is more likely accurate than a branch history table (BHT) direction prediction from a BHT. The PHT direction prediction is selected as a direction prediction based on determining that the accuracy counter indicates that the PHT direction prediction is more likely accurate than the BHT direction prediction. The BHT direction prediction is selected as the direction prediction based on determining that the accuracy counter indicates that the BHT direction prediction is more likely accurate than the PHT direction prediction.
    Type: Application
    Filed: November 25, 2013
    Publication date: March 20, 2014
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: James J. Bonanno, Brian R. Prasky
  • Publication number: 20140075167
    Abstract: A branch history table cache is a write cache that stores values of branch history counters written to a branch history table. An update to a branch history table counter is reflected in both the branch history table cache and the branch history table. Before a branch history table counter is updated, a check is made to see if the branch history table counter is in the cache. If not, the branch history table counter is updated based on a value of the branch history table counter that was saved during fetch of the branch history table counter. If, however, the branch history table counter value is in the cache, the value in the cache is used to update the branch history table counter. All branches that use the branch history table counter update the correct counter value, improving processor performance by providing more accurate predictions of branches taken.
    Type: Application
    Filed: September 13, 2012
    Publication date: March 13, 2014
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Timothy H. Heil, Brent F. Hilgart, Andrew D. Hilton
  • Publication number: 20140075166
    Abstract: Swapping branch direction history(ies) in response to a branch prediction table swap instruction(s), and related systems and methods are disclosed. In one embodiment, a branch history management circuit is configured to process a branch prediction table swap instruction. In response to the branch prediction table swap instruction, the branch history management circuit is configured to swap a prior branch direction history set assigned to a current software code region from cache memory, into a branch prediction table (BPT) for use in branch prediction. The current branch direction history set is swapped out of the BPT and stored in cache memory to avoid being overwritten. In this manner, branch direction history sets assigned to particular software code regions are used for branch prediction when processing the particular software code regions. Therefore, branch prediction accuracy and instruction processing throughput of an instruction processing system are increased.
    Type: Application
    Filed: September 12, 2012
    Publication date: March 13, 2014
    Applicant: QUALCOMM INCORPORATED
    Inventor: John William Haskins, JR.
  • Publication number: 20140075168
    Abstract: A method for outputting reliably predictable instruction sequences. The method includes tracking repetitive hits to determine a set of frequently hit instruction sequences for a microprocessor, and out of that set, identifying a branch instruction having a series of subsequent frequently executed branch instructions that form a reliably predictable instruction sequence. The reliably predictable instruction sequence is stored into a buffer. On a subsequent hit to the branch instruction, the reliably predictable instruction sequence is output from the buffer.
    Type: Application
    Filed: October 12, 2011
    Publication date: March 13, 2014
    Applicant: SOFT MACHINES, INC.
    Inventor: Mohammad Abdallah
  • Patent number: 8671269
    Abstract: A method and apparatus are provided for increasing the accuracy of a branch predictor. A branch prediction table provides a first instance of a branch prediction value associated with an instruction being speculatively executed a first time; and provides a second instance of the branch prediction value associated with the instruction being speculatively executed a second rime. The first instance of the branch prediction value may be subsequently revised after the instruction associated with the first instance of the branch prediction value is retired. Information regarding whether that branch instruction was accurately predicted may then be used to update the branch prediction table and the second instance of the branch prediction value.
    Type: Grant
    Filed: November 16, 2010
    Date of Patent: March 11, 2014
    Assignee: Advanced Micro Devices, Inc.
    Inventors: James David Dundas, Nikhil Gupta, Marvin Denman
  • Publication number: 20140052972
    Abstract: Methods and apparatus for restoring a meta predictor system upon detecting a branch or binary misprediction, are disclosed. An example apparatus may include a base misprediction history register to store a set of misprediction history values each indicating whether a previous branch prediction taken by a previous branch instruction was predicted correctly or incorrectly. The apparatus may comprise a meta predictor to detect a branch misprediction of a current branch prediction based at least in part on an output of the base misprediction history register. The meta predictor may restore the base misprediction history register based on the detecting of the branch misprediction. Additional apparatus, systems, and methods are disclosed.
    Type: Application
    Filed: October 28, 2013
    Publication date: February 20, 2014
    Applicant: Micron Technology, Inc.
    Inventors: Stephan Jourdan, Adi Yoaz, Mattan Erez, Ronny Ronen
  • Patent number: 8645714
    Abstract: A branch target address cache (BTAC) caches history information associated with branch and switch key instructions previously executed by a microprocessor. The history information includes a target address and an identifier (index into a register file) for identifying key values associated with each of the previous branch and switch key instructions. A fetch unit receives from the BTAC a prediction that the fetch unit fetched a previous branch and switch key instruction and receives the target address and identifier associated with the fetched branch and switch key instruction. The fetch unit also fetches encrypted instruction data at the associated target address and decrypts (via XOR) the fetched encrypted instruction data based on the key values identified by the identifier, in response to receiving the prediction. If the BTAC predicts correctly, a pipeline flush normally associated with the branch and switch key instruction is avoided.
    Type: Grant
    Filed: April 21, 2011
    Date of Patent: February 4, 2014
    Assignee: VIA Technologies, Inc.
    Inventors: G. Glenn Henry, Terry Parks, Brent Bean, Thomas A. Crispin
  • Publication number: 20140019738
    Abstract: A multicore processor system includes plural CPUs; branch prediction memories respectively disposed for the CPUs; and a shared branch prediction memory that stores branch prediction information records respectively corresponding to threads executed by the CPUs. A first CPU among the CPUs is configured to set the branch prediction information record corresponding to a first thread among the threads executed by the first CPU, from the shared branch prediction memory to the branch prediction memory corresponding to the first CPU.
    Type: Application
    Filed: September 17, 2013
    Publication date: January 16, 2014
    Applicant: FUJITSU LIMITED
    Inventors: Akihito KATAOKA, Atsuhiro SUGA
  • Publication number: 20130332715
    Abstract: Embodiments relate to global weak pattern history table (PHT) filtering. An aspect includes receiving a search address associated with a branch prediction, and receiving a prediction strength indicator and a tag from a PHT. Based on determining that the tag matches the search address and the prediction strength indicator is weak, an accuracy counter is compared to a comparison threshold to determine whether a PHT direction prediction from the PHT is more likely accurate than a branch history table (BHT) direction prediction from a BHT. The PHT direction prediction is selected as a direction prediction based on determining that the accuracy counter indicates that the PHT direction prediction is more likely accurate than the BHT direction prediction. The BHT direction prediction is selected as the direction prediction based on determining that the accuracy counter indicates that the BHT direction prediction is more likely accurate than the PHT direction prediction.
    Type: Application
    Filed: June 11, 2012
    Publication date: December 12, 2013
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: James J. Bonanno, Brian R. Prasky
  • Publication number: 20130332716
    Abstract: Embodiments relate to using a branch target buffer preload table. An aspect includes receiving a search request to locate branch prediction information associated with a branch instruction. Searching is performed for an entry corresponding to the search request in a branch target buffer and a branch target buffer preload table in parallel. Based on locating a matching entry in the branch target buffer preload table corresponding to the search request and failing to locate the matching entry in the branch target buffer, a victim entry is selected to overwrite in the branch target buffer. Branch prediction information of the matching entry is received from the branch target buffer preload table at the branch target buffer. The victim entry in the branch target buffer is overwritten with the branch prediction information of the matching entry.
    Type: Application
    Filed: June 11, 2012
    Publication date: December 12, 2013
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: James J. Bonanno, Ulrich Mayer, Brian R. Prasky
  • Patent number: 8595474
    Abstract: An information processor includes a first recording unit which stores first information indicating correspondence between an instruction address and a branch destination address of a most recent branch instruction, a computation of the most recent branch instruction having been completed and a branch for the most recent branch prediction having been taken, a second recording unit which stores a second information indicating correspondence between an instruction address and a branch destination address of each of past branch instructions including the most recent branch instruction, computations of the past branch instructions having been completed and branches for the past branch instructions having been taken, and a control unit which makes a branch prediction based on the first information or the second information, and stops supply of a clock to the second recording unit and makes a branch prediction based on the first information when an instruction sequence enters a loop.
    Type: Grant
    Filed: May 14, 2010
    Date of Patent: November 26, 2013
    Assignee: Fujitsu Limited
    Inventor: Takashi Suzuki
  • Publication number: 20130311760
    Abstract: The disclosure relates to predicting simple and polymorphic branch instructions. An embodiment of the disclosure detects that a program instruction is a branch instruction, determines whether a program counter for the branch instruction is stored in a program counter filter, and, if the program counter is stored in the program counter filter, prevents the program counter from being stored in a first level predictor.
    Type: Application
    Filed: May 16, 2012
    Publication date: November 21, 2013
    Applicant: QUALCOMM INCORPORATED
    Inventors: Kulin N. Kothari, Michael William Morrow, James Norris Dieffenderfer, Michael Scott McIlvaine, Brian Michael Stempel, Daren Eugene Streett
  • Patent number: 8572358
    Abstract: Methods and apparatus for restoring a meta predictor system upon detecting a branch or binary misprediction, are disclosed. An example apparatus may include a base misprediction history register to store a set of misprediction history values each indicating whether a previous branch prediction taken by a previous branch instruction was predicted correctly or incorrectly. The apparatus may comprise a meta predictor to detect a branch misprediction of a current branch prediction based at least in part on an output of the base misprediction history register. The meta predictor may restore the base misprediction history register based on the detecting of the branch misprediction. Additional apparatus, systems, and methods are disclosed.
    Type: Grant
    Filed: October 8, 2012
    Date of Patent: October 29, 2013
    Assignee: Micron Technology, Inc.
    Inventors: Ronny Ronen, Mattan Erez, Stephan Jourdan, Adi Yoaz
  • Publication number: 20130283023
    Abstract: Systems and methods for branch prediction, including predicting evaluation of a producer instruction such as a compare instruction, by encoding a prediction field in the producer instruction, and predicting evaluation of the producer instruction by using the encoded prediction field. A consumer instruction such as a conditional branch instruction predicated on the producer instruction can be speculatively executed based on the predicted evaluation of the producer instruction. The producer instruction is executed in an execution pipeline to determine an actual evaluation of the producer instruction, and the prediction field is updated, if necessary, based on the actual evaluation and the predicted evaluation. The producer instruction can be updated in memory with the updated prediction field.
    Type: Application
    Filed: April 18, 2012
    Publication date: October 24, 2013
    Applicant: QUALCOMM INCORPORATED
    Inventors: Charles Joseph Tabony, Lucian Codrescu, Suresh K. Venkumahanti