Branch Target Buffer Patents (Class 712/238)
  • 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: 20070294518
    Abstract: A system for determining the target address of a branch instruction is disclosed. The system includes: a branch target buffer (BTB), containing at least an entry storing the target address of the branch instruction, the entry being indexed according to a program counter (PC) value of an instruction prior to the branch instruction; a PC register, containing a PC value of a current instruction; and a comparator, coupled to the PC register and the BTB, for comparing the PC value of the current instruction with an output of the BTB corresponding to a previous instruction.
    Type: Application
    Filed: June 14, 2006
    Publication date: December 20, 2007
    Inventor: Shen-Chang Wang
  • Publication number: 20070277024
    Abstract: An embodiment generally pertains to a method of secure address handling in a processor. The method includes detecting an instruction that implicitly designates a target address and retrieving an encoded location associated with the target address. The method also includes decoding the encoded location to determine the target address. Another embodiment generally relates to detecting an instruction having an operand designating an encoded target address and determining a location of a target instruction associated with the target address. The method also includes determining a location of a subsequent instruction and encoding the location of the subsequent instruction. The method further includes storing the encoded location of the subsequent instruction.
    Type: Application
    Filed: May 25, 2006
    Publication date: November 29, 2007
    Inventor: Ulrich Drepper
  • 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: 7234025
    Abstract: A microprocessor that executes a repeat prefetch instruction (REP PREFETCH). The REP PREFETCH prefetches multiple cache lines, wherein the number of cache lines is specifiable in the instruction. The instruction is specified by the Pentium III PREFETCH opcode preceded by the REP string instruction prefix. The programmer specifies the count of cache lines to be prefetched in the ECX register, similarly to the repeat count of a REP string instruction. The effective address of the first cache line is specified similar to the conventional PREFETCH instruction. The REP PREFETCH instruction stops if the address of the current prefetch cache line misses in the TLB, or if the current processor level changes. Additionally, a line is prefetched only if the number of free response buffers is above a programmable threshold. The prefetches are performed at a lower priority than other activities needing access to the cache or TLB.
    Type: Grant
    Filed: November 3, 2004
    Date of Patent: June 19, 2007
    Assignee: IP-First, LLC
    Inventor: Rodney E. Hooker
  • Patent number: 7185186
    Abstract: An apparatus for avoiding a deadlock condition in a microprocessor with a speculative branch target address cache (BTAC) that predicts a target address of a branch instruction contained in a cache line output by an instruction cache in response to a fetch address is disclosed. The BTAC incorrectly predicts the branch instruction is wholly contained in the cache line; consequently, the microprocessor fetches from the target address without fetching the next sequential cache line containing the rest of the instruction. An instruction formatter detects the instruction is only partially contained in the cache line and waits for the next cache line. However, the formatter receives no more cache lines because the target address misses in the cache and the missing cache line is not fetched from memory because the processor does not generate speculative instruction fetches. To avoid deadlocking, the apparatus invalidates the BTAC target address and retries.
    Type: Grant
    Filed: July 31, 2003
    Date of Patent: February 27, 2007
    Assignee: IP-First, LLC
    Inventor: Thomas McDonald
  • 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: 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: 7152154
    Abstract: An apparatus for invalidating redundant entries in an N-way set associative branch target address cache (BTAC) for the same branch instruction is disclosed. An index portion of an instruction cache fetch address is applied to the BTAC to select a set of N ways therein. Control logic detects a condition in which more than one of the N ways of the selected set has a valid tag that matches the tag portion of the fetch address. A flag is set to indicate the occurrence of the condition, and the fetch address is stored in a register. The control logic subsequently invalidates all but one of the N ways having a valid tag that matches the fetch address tag.
    Type: Grant
    Filed: July 31, 2003
    Date of Patent: December 19, 2006
    Assignee: IP-First, LLC.
    Inventor: Thomas McDonald
  • 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: 7134124
    Abstract: Each processor comprises a register for storing start address of a forked child thread and a comparator for detecting that the value of its own program counter is coincident with the start address stored in this register. Each processor sends a thread stop notice to a thread controller when the value of its own program counter is coincident with the start address of the forked child thread and ends the execution of a parent thread when receiving a thread end permission from the thread controller.
    Type: Grant
    Filed: June 20, 2002
    Date of Patent: November 7, 2006
    Assignee: Nec Corporation
    Inventors: Taku Ohsawa, Satoshi Matsushita
  • Patent number: 7124287
    Abstract: Disclosed is a method and apparatus providing the capability to create a dynamic associative branch target buffer (BTB). A dynamically based associative BTB allows for either an increase number of entries and/or a reduction in area over current based static based BTBs while up to retaining the same confidence level of prediction accuracy.
    Type: Grant
    Filed: May 12, 2003
    Date of Patent: October 17, 2006
    Assignee: International Business Machines Corporation
    Inventors: Brian R. Prasky, Moinuddin K. A. Qureshi
  • 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: 7107437
    Abstract: A method and apparatus are provided for improving the performance of branch prediction using a combination of a speculative branch target buffer (SBTB) and an architectural branch target buffer (ABTB). According to one embodiment, speculative branch data is maintained for in-flight branches (i.e., those that have been fetched but not yet retired). A branch entry is speculatively allocated in a line of the SBTB after decoding an instruction containing a branch, such as a conditional branch, a return from a subroutine, a call to a subroutine, or an unconditional branch. Subsequently, the branch data associated with the branch entry is speculatively updated after branch prediction has been completed for the branch. Finally, the branch data is corrected after the branch has been executed. According to another embodiment, a novel branch prediction circuit includes both a speculative branch target buffer (SBTB) cache and an architectural branch target buffer (ABTB) cache.
    Type: Grant
    Filed: June 30, 2000
    Date of Patent: September 12, 2006
    Assignee: Intel Corporation
    Inventor: Kiran A. Padwekar
  • Patent number: 7096348
    Abstract: A method (200) and apparatus (100) for allocating entries in a branch target buffer (BTB) (144) in a pipelined data processing system includes: sequentially fetching instructions; determining that one of the instructions is a branch instruction (210, 215, 220); decoding the branch instruction to determine a branch target address; determining if the branch target address can be obtained without causing a stall condition in the pipelined data processing system; and selectively allocating an entry of the BTB (144) based on the determination. In one embodiment, an entry of the BTB (144) is allocated if the branch instruction is not loaded into a predetermined slot (S1) of a prefetch buffer (102) and no other stall condition will occur. The method (200) and apparatus (100) combine the advantages of using a BTB (144) and branch lookahead to reduce stall conditions in the data processing system.
    Type: Grant
    Filed: December 15, 2003
    Date of Patent: August 22, 2006
    Assignee: Freescale Semiconductor, Inc.
    Inventors: William C. Moyer, Jeffrey W. Scott
  • Patent number: 7093074
    Abstract: A storage control device, and method, the storage control device including storers, such as buffers, which store data and a storage controller. The storage controller, in response to a data issue request identifying an issue order, selects one of the storers. Data is output that corresponds to a particular address in the selected storer. The storage control method includes providing a data issue request identifying an issue order, and comparing identifications of storers, with the identification in the data issue request. The method further includes selecting a storer and outputting data from the selected storer that corresponds to an address.
    Type: Grant
    Filed: July 18, 2002
    Date of Patent: August 15, 2006
    Assignee: Fujitsu Limited
    Inventor: Iwao Yamazaki
  • 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: 7062640
    Abstract: A filtering system for instruction segments determines whether a new instruction segment satisfies a predetermined filtering condition prior to storage. If the instruction segment fails the filtering condition, the new instruction segment is not stored. Various filtering conditions are available; but all filtering conditions test to determine whether it is more likely than not that a new instruction segment will be reused by the execution unit in the future.
    Type: Grant
    Filed: December 14, 2000
    Date of Patent: June 13, 2006
    Assignee: Intel Corporation
    Inventors: Stephan J. Jourdan, Alan Miller, Glenn Hinton
  • Patent number: 7047400
    Abstract: An Instruction Pointer (IP) signal is received comprising an IP tag field and an IP set field. A plurality of entries corresponding to the IP set field are read, each of the entries comprising an entry tag, an entry bank, and entry data. Each entry tag and entry bank is then compared with the IP tag and each of the plurality of banks. In one embodiment, the IP tag is concatenated with a number representing one of the plurality of banks and compared to the entry tag and entry bank. Separate comparisons may then be performed for each of the other banks.
    Type: Grant
    Filed: May 20, 2004
    Date of Patent: May 16, 2006
    Assignee: Intel Corporation
    Inventor: Nicolas I. Kacevas
  • Patent number: 7039718
    Abstract: A multiprocess computer system comprises at least two processes (P1, P2, . . . Pi, . . . PN) connected by a network. Each process is executed by a piece of hardware equipped with an operating system. A process comprises at least a library software layer by which this operating system can access the programs for the activation of the communications protocols associated with the inputs/outputs; an intermediate layer comprising an inter-process communications process associated with a communications channel; a multiplexer encapsulated in the library multiplexing the communications channel of a process Pi with the communications channels of the other processes P1, P2, . . . PN, the communications channel between two processes Pi, Pk being activated by the multiplexers of the two processes, upon a request by one of them. It can be used especially for extensive communications among various computer processes through standard inputs/outputs.
    Type: Grant
    Filed: August 31, 2001
    Date of Patent: May 2, 2006
    Assignee: Airsys ATM S.A.
    Inventor: Marc Vertes
  • Patent number: 6983356
    Abstract: A method of prefetching from a memory device includes determining a prefetch buffer hit rate (PBHR) and a memory bandwidth utilization (MBU) rate. Prefetches are inserted aggressively if the memory bandwidth utilization (MBU) rate is above a MBU threshold level and the prefetch buffer hit rate (PBHR) is above a PBHR threshold level. Prefetches are inserted conservatively if the memory bandwidth utilization (MBU) rate is above the MBU threshold level and the prefetch buffer hit rate (PBHR) is below the PBHR threshold level.
    Type: Grant
    Filed: December 19, 2002
    Date of Patent: January 3, 2006
    Assignee: Intel Corporation
    Inventors: Hemant G. Rotithor, Randy B. Osborne, Donald W. McCauley
  • Patent number: 6970997
    Abstract: When a processor executes a memory operation instruction by means of data dependence speculative execution, a speculative execution result history table which stores history information concerning success/failure results of the speculative execution of memory operation instructions of the past is referred to and thereby whether the speculative execution will succeed or fail is predicted. In the prediction, the target address of the memory operation instruction is converted by a hash function circuit into an entry number of the speculative execution result history table (allowing the existence of aliases), and an entry of the table designated by the entry number is referred to. If the prediction is “success”, the memory operation instruction is executed in out-of-order execution speculatively (with regard to data dependence relationship between the instructions).
    Type: Grant
    Filed: May 22, 2002
    Date of Patent: November 29, 2005
    Assignee: NEC Corporation
    Inventors: Atsufumi Shibayama, Satoshi Matsushita, Sunao Torii, Naoki Nishi
  • Patent number: 6957327
    Abstract: The invention provides a method and apparatus for branch prediction in a processor. A fetch-block branch target buffer is used in an early stage of pipeline processing before the instruction is decoded, which stores information about a control transfer instruction for a “block” of instruction memory. The block of instruction memory is represented by a block entry in the fetch-block branch target buffer. The block entry represents one recorded control-transfer instruction (such as a branch instruction) and a set of sequentially preceding instructions, up to a fixed maximum length N. Indexing into the fetch-block branch target buffer yields an answer whether the block entry represents memory that contains a previously executed a control-transfer instruction, a length value representing the amount of memory that contains the instructions represented by the block, and an indicator for the type of control-transfer instruction that terminates the block, its target and outcome.
    Type: Grant
    Filed: October 28, 1999
    Date of Patent: October 18, 2005
    Assignee: STMicroelectronics, Inc.
    Inventors: Anatoly Gelman, Russell Schnapp
  • 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: 6915412
    Abstract: A high-performance, superscalar-based computer system with out-of-order instruction execution for enhanced resource utilization and performance throughput. The computer system fetches a plurality of fixed length instructions with a specified, sequential program order (in-order). The computer system includes an instruction execution unit including a register file, a plurality of functional units, and an instruction control unit for examining the instructions and scheduling the instructions for out-of-order execution by the functional units. The register file includes a set of temporary data registers that are utilized by the instruction execution control unit to receive data results generated by the functional units. The data results of each executed instruction are stored in the temporary data registers until all prior instructions have been executed, thereby retiring the executed instruction in-order.
    Type: Grant
    Filed: October 30, 2002
    Date of Patent: July 5, 2005
    Assignee: Seiko Epson Corporation
    Inventors: Le Trong Nguyen, Derek J. Lentz, Yoshiyuki Miyayama, Sanjiv Garg, Yasuaki Hagiwara, Johannes Wang, Te-Li Lau, Sze-Shun Wang, Quang H. Trang
  • Patent number: 6912650
    Abstract: An instruction control apparatus, and method, used with a device including a cache memory, a lower memory, an instruction fetch device issuing an instruction fetch request for a target of a first branch instruction to the cache memory, and an instruction control device processing a instruction sequence stored in the cache memory. The apparatus and method pre-prefetch a target instruction sequence for a target of a second branch instruction. A predetermined instruction sequence based on a past history is preliminarily transferred from the lower memory to the cache memory when the target instruction sequence for the target of the first branch instruction is not in the cache memory.
    Type: Grant
    Filed: February 27, 2001
    Date of Patent: June 28, 2005
    Assignee: Fujitsu Limited
    Inventors: Masaki Ukai, Aiichiro Inoue
  • Patent number: 6898699
    Abstract: An apparatus for storing predicted return addresses of instructions being executed by a pipelined processor, the apparatus includes a two part return address buffer that includes a speculative return address buffer and a committed return address buffer, both of which having multiple entries that may include predicted return addresses that have been pushed onto the return buffer.
    Type: Grant
    Filed: December 21, 2001
    Date of Patent: May 24, 2005
    Assignee: Intel Corporation
    Inventors: Stephan J. Jourdan, John Alan Miller, Namratha Jaisimha
  • Patent number: 6895498
    Abstract: An apparatus and method in a pipelined microprocessor for replacing one of two target addresses in a branch target address cache (BTAC) line. If only one of the two entries is invalid, the invalid entry is replaced. If both entries are valid, the least recently used entry is replaced. If both entries are invalid, the entry is replaced corresponding to the side of the BTAC, indicated by a global status register, not last written to with an invalid entry. In one embodiment, the global status is updated only if a side is written when both entries are invalid. In another embodiment, the BTAC stores N entries per line, where N is greater than 1. The status register maintains information for determining which of the N sides is least recently written. The least recently written side is chosen for replacement.
    Type: Grant
    Filed: May 4, 2001
    Date of Patent: May 17, 2005
    Assignee: IP-First, LLC
    Inventors: Thomas C. McDonald, Terry Parks
  • Publication number: 20040230780
    Abstract: Disclosed is a method and apparatus providing the capability to create a dynamic associative branch target buffer (BTB). A dynamically based associative BTB allows for either an increase number of entries and/or a reduction in area over current based static based BTBs while up to retaining the same confidence level of prediction accuracy.
    Type: Application
    Filed: May 12, 2003
    Publication date: November 18, 2004
    Applicant: International Business Machines Corporation
    Inventors: Brian R. Prasky, Moinuddin K. A. Qureshi
  • Patent number: 6813763
    Abstract: The branch prediction characteristics of a computer for executing a program are recognized, a binary program matched to the characteristics is constituted.
    Type: Grant
    Filed: November 22, 2000
    Date of Patent: November 2, 2004
    Assignee: Fujitsu Limited
    Inventors: Satoshi Takahashi, Hajime Okuda, Kazutaka Aizawa
  • Publication number: 20040215943
    Abstract: An Instruction Pointer (IP) signal is received comprising an IP tag field and an IP set field. A plurality of entries corresponding to the IP set field are read, each of the entries comprising an entry tag, an entry bank, and entry data. Each entry tag and entry bank is then compared with the IP tag and each of the plurality of banks. In one embodiment, the IP tag is concatenated with a number representing one of the plurality of banks and compared to the entry tag and entry bank. Separate comparisons may then be performed for each of the other banks.
    Type: Application
    Filed: May 20, 2004
    Publication date: October 28, 2004
    Inventor: Nicolas I. Kacevas
  • Publication number: 20040193856
    Abstract: An instruction prefetch apparatus includes a branch target buffer (BTB), a presbyopic target buffer (PTB) and a prefetch stream buffer (PSB). The BTB includes records that map branch addresses to branch target addresses, and the PTB includes records that map branch target addresses to subsequent branch target addresses. When a branch instruction is encountered, the BTB can predict the dynamically adjacent subsequent block entry location as the branch target address in the record that also includes the branch instruction address. The PTB can predict multiple subsequent blocks by mapping the branch target address to subsequent dynamic blocks. The PSB holds instructions prefetched from subsequent blocks predicted by the PTB.
    Type: Application
    Filed: April 2, 2004
    Publication date: September 30, 2004
    Applicant: Intel Corporation
    Inventors: Hong Wang, Ralph Kling, Edward T. Grochowski, Kalpana Ramakrishnan
  • Publication number: 20040193843
    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: Application
    Filed: March 31, 2003
    Publication date: September 30, 2004
    Inventors: Eran Altshuler, Oded Lempel, Robert Valentine, Nicolas Kacevas
  • Publication number: 20040172524
    Abstract: The present invention relates to a method, processor and compiler for predicting a branch target of a program. A hint operation is provided in the program to hint the branch prediction about upcoming indirect branches. A table of branch targets of indirect branches can be used to improve prediction accuracy of indirect branches. The branch target is determined on the basis of a key information derived from the hint operation.
    Type: Application
    Filed: December 23, 2003
    Publication date: September 2, 2004
    Inventor: Jan Hoogerbrugge
  • Patent number: 6772325
    Abstract: A processor is disclosed utilizing improved branch control and branch instructions for optimizing performance of programs run on such 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 optize 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: October 1, 1999
    Date of Patent: August 3, 2004
    Assignee: Hitachi, Ltd.
    Inventors: Naohiko Irie, Tony Lee Werner
  • Publication number: 20040139292
    Abstract: An apparatus for avoiding a deadlock condition in a microprocessor with a speculative branch target address cache (BTAC) that predicts a target address of a branch instruction contained in a cache line output by an instruction cache in response to a fetch address is disclosed. The BTAC incorrectly predicts the branch instruction is wholly contained in the cache line; consequently, the microprocessor fetches from the target address without fetching the next sequential cache line containing the rest of the instruction. An instruction formatter detects the instruction is only partially contained in the cache line and waits for the next cache line. However, the formatter receives no more cache lines because the target address misses in the cache and the missing cache line is not fetched from memory because the processor does not generate speculative instruction fetches. To avoid deadlocking, the apparatus invalidates the BTAC target address and retries.
    Type: Application
    Filed: July 31, 2003
    Publication date: July 15, 2004
    Applicant: IP-First, LLC.
    Inventor: Thomas McDonald
  • Publication number: 20040139281
    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: Application
    Filed: July 31, 2003
    Publication date: July 15, 2004
    Applicant: IP-First, LLC.
    Inventor: Thomas McDonald
  • Patent number: 6757815
    Abstract: An Instruction Pointer (IP) signal is received comprising an IP tag field and an IP set field. A plurality of entries corresponding to the IP set field are read, each of the entries comprising an entry tag, an entry bank, and entry data. Each entry tag and entry bank is then compared with the IP tag and each of the plurality of banks. In one embodiment, the IP tag is concatenated with a number representing one of the plurality of banks and compared to the entry tag and entry bank. Separate comparisons may then be performed for each of the other banks.
    Type: Grant
    Filed: December 23, 1999
    Date of Patent: June 29, 2004
    Assignee: Intel Corporation
    Inventor: Nicolas I. Kacevas
  • Patent number: 6701426
    Abstract: A multiple instruction set processor and method dynamically activates one of a plurality of branch prediction processes depending upon which one of a multiple instruction set is operational. Shared branch history table structures are used and are indexed differently depending upon which instruction set is operational. The apparatus and method also allows switching between instruction set index generators for each of the plurality of instruction sets. Accordingly, different indexes to branch prediction data are used depending upon which of the plurality of instruction sets is operational. Shared memory may be used to contain branch prediction table data for instructions from each of the plurality of instruction sets in response to selection of an instruction set. Shared memory is also used to contain branch target buffer data for instructions from each of the plurality of instruction sets in response to selection of one of the instruction sets.
    Type: Grant
    Filed: October 19, 1999
    Date of Patent: March 2, 2004
    Assignee: ATI International Srl
    Inventors: Greg L. Ries, Ronak S. Patel, Korbin S. Van Dyke, Niteen Patkar, T. R. Ramesh
  • Publication number: 20030226003
    Abstract: In correspondence with an address of a branch instruction, a branch target address Apb, a valid bit V as branch history information, and delay slot information POS on the last position of delay slot instructions are stored in a branch target buffer 241. A branch prediction circuit 23 outputs hit information H/M as to whether or not an input address Ao is coincident with the branch instruction address, the valid bit which is also a branch prediction bit, the information POS, and the branch target address Apb. When a prediction error signal ERR is inactive, the address selection circuit 22 selectively outputs the output of an incrementer 21 and the branch target address Apb, based on the hit information H/M, the delay slot information POS, and the valid bit V.
    Type: Application
    Filed: May 16, 2003
    Publication date: December 4, 2003
    Applicant: Fujitsu Limited
    Inventors: Shinichiro Tago, Tomohiro Yamana, Yoshimasa Takebe
  • Patent number: 6651162
    Abstract: A method of prefetching addresses includes the step of accessing a stored instruction using a current address. During the access using the current address, a target address is accessed in a branch target address cache. A stored instruction associated with the target address accessed from the branch target address cache is prefetched and the branch target address is indexed with selected bits from the address accessed from the branch target address cache.
    Type: Grant
    Filed: November 4, 1999
    Date of Patent: November 18, 2003
    Assignee: International Business Machines Corporation
    Inventors: David Stephen Levitan, Shashank Nemawarkar, Balaram Sinharoy, William John Starke
  • Publication number: 20030212882
    Abstract: Disclosed is a method and apparatus providing the capability to predict multiple targets for a single branch. A Multiple Target Table (MTT) when used in conjunction with a Branch Target Buffer (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.
    Type: Application
    Filed: May 9, 2002
    Publication date: November 13, 2003
    Applicant: International Business Machines Corporation
    Inventors: James J. Bonanno, Brian R. Prasky
  • Patent number: 6647491
    Abstract: The inventive mechanism provides fast profiling and effective trace selection. The inventive mechanism partitions the work between hardware and software. The hardware automatically detects which code is executed very frequently, e.g. which code is hot code. The hardware also maintains the branch history information. When the hardware determines that a section or block of code is hot code, the hardware sends a signal to the software. The software then forms the trace from the hot code, and uses the branch history information in making branch predictions.
    Type: Grant
    Filed: October 1, 2001
    Date of Patent: November 11, 2003
    Assignee: Hewlett-Packard Development Company, L.P.
    Inventors: Wei C. Hsu, Manuel Benitez
  • Patent number: 6640297
    Abstract: The speed of processing of a sequence of indirect branch instructions in a pipelined processor is increased by overlapping the latencies in the sequence of indirect branch instructions. The architecture of a digital processor is modified to include a link pipe system that allows the sequence of branch addresses required by the indirect branches to be written to a single location within the processor, and to be read from a single location in the processor. The link pipe system contains a plurality of registers (3, 5 & 7) for storage of respective branch target addresses. Each WRITE of a branch address is automatically directed (9) to individual registers within the link pipe system for storing the respective branch addresses; and each READ of a branch address is automatically directed (11) to the register containing the earliest WRITE of an address that was not previously read by the processor, whereby branch target addresses are retrieved on a “first in, first out” basis.
    Type: Grant
    Filed: June 19, 2000
    Date of Patent: October 28, 2003
    Assignee: Transmeta Corporation
    Inventors: John Banning, Brett Coon, Eric Hao
  • Patent number: 6609194
    Abstract: A branch target address prediction mechanism is provided. A branch target buffer (BTB) is employed to predict target address only of indirect branch instructions. Return addresses are predicted from a call/return stack and PC-relative branch instructions are predicted by directly calculating the target address using a program counter-relative displacement specified in the instruction. Because the BTB only stores indirect branch instruction target addresses, the likelihood of aliasing collisions in the BTB is greatly reduced, thereby increasing the prediction accuracy of the BTB.
    Type: Grant
    Filed: November 12, 1999
    Date of Patent: August 19, 2003
    Assignee: IP-First, LLC
    Inventors: G. Glenn Henry, Terry Parks
  • Patent number: 6601161
    Abstract: A system and method for predicting a branch target for a current instruction in a microprocessor, the system comprising a cache storing indirect branch instructions and a path register. The path register is updated on certain branches by an XOR operation on the path register and the branch instruction, followed by the addition of one or more bits to the register. The cache is indexed by performing an operation on a portion of the current instruction address and the path register; the entry returned, if any, may be used to predict the target of the current instruction.
    Type: Grant
    Filed: December 30, 1998
    Date of Patent: July 29, 2003
    Assignee: Intel Corporation
    Inventors: Lihu Rappoport, Ronny Ronen, Nicolas Kacevas, Oded Lempel
  • Publication number: 20030126418
    Abstract: A system and method of managing processor instructions provides enhanced performance. The system and method provide for decoding a first instruction into a plurality of operations with a decoder. A first copy of the operations is passed from the decoder to a build engine associated with a trace cache. The system and method further provide for passing a second copy of the operation from the decoder directly to a back end allocation module such that the operations bypass the build engine and the allocation module is in a decoder reading state.
    Type: Application
    Filed: January 2, 2002
    Publication date: July 3, 2003
    Inventors: John Alan Miller, Stephan J. Jourdan