Branch Target Buffer Patents (Class 712/238)
-
Publication number: 20100031010Abstract: A data processing system and method are provided for allocating an entry in a branch target buffer (BTB). The method comprises: receiving a branch instruction to be executed in a data processor; determining that the BTB does not include an entry corresponding to the branch instruction; identifying an entry in the BTB for allocation, the identified entry in the BTB comprising a target identifier and a first prediction value for a previously received branch instruction; determining whether to allocate the branch instruction to the identified entry in the BTB based on a comparison of the first prediction value to a second prediction value, wherein the second prediction value is generated from a branch history table (BHT); and allocating the branch instruction to the identified entry if the second prediction value indicates a more strongly taken prediction than the first prediction value.Type: ApplicationFiled: July 29, 2008Publication date: February 4, 2010Inventors: William C. Moyer, Jeffrey W. Scott
-
Publication number: 20100017586Abstract: 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: ApplicationFiled: June 23, 2009Publication date: January 21, 2010Inventors: Anatoly Gelman, Russell Lawrence Schnapp
-
Publication number: 20100011198Abstract: A computing system includes a microprocessor that receives values for configuring operating modes thereof. A device driver monitors which software applications currently running on the microprocessor are in a predetermined list and responsively dynamically writes the values to the microprocessor to configure its operating modes. Examples of the operating modes the device driver may configure relate to the following: data prefetching; branch prediction; instruction cache eviction; instruction execution suspension; sizes of cache memories, reorder buffer, store/load/fill queues; hashing algorithms related to data forwarding and branch target address cache indexing; number of instruction translation, formatting, and issuing per clock cycle; load delay mechanism; speculative page tablewalks; instruction merging; out-of-order execution extent; caching of non-temporal hinted data; and serial or parallel access of an L2 cache and processor bus in response to an instruction cache miss.Type: ApplicationFiled: July 10, 2008Publication date: January 14, 2010Applicant: VIA Technologies, Inc.Inventors: Rodney E. Hooker, Colin Eddy, G. Glenn Henry
-
Patent number: 7640422Abstract: A technique for reducing lookups to a branch target address cache (BTAC) is disclosed. In this technique, a branch target address is retrieved from the BTAC in response to a miss in looking up an instruction address in an instruction cache (I-cache). The branch target address is associated with the instruction address. The branch target address retrieved from the BTAC is stored in the I-cache. With this disclosed technique, subsequent instruction addresses are looked up in the I-cache, nonparallel to the BTAC, thus saving power by reducing needless BTAC lookups.Type: GrantFiled: August 16, 2006Date of Patent: December 29, 2009Assignee: QUALCOMM IncorporatedInventor: Michael William Morrow
-
Publication number: 20090249048Abstract: A data processing system includes a branch target buffer (BTB) including a plurality of entries, each entry comprising a tag portion and a long branch indicator. The system also includes segment target address storage circuitry which stores a plurality of segment target addresses, index storage circuitry which stores a plurality of indices for indexing into the segment target address storage circuitry, and control circuitry which receives an instruction address and determines whether the instruction address matches a valid entry in the BTB. When the instruction address matches a valid entry in the BTB and the long branch indicator of the valid entry indicates a long branch, the index storage circuitry provides a selected index of the plurality of indices selected by the received instruction address. In response to the selected index, the segment target address storage circuitry provides a selected segment target address as a higher order target address portion.Type: ApplicationFiled: March 28, 2008Publication date: October 1, 2009Inventors: Sergio Schuler, Stephen R. Shannon, Michael D. Snyder
-
Publication number: 20090249049Abstract: A method for precisely counting guest branch instructions in a virtualized computer system is described. In one embodiment, guest instructions execute in a direct execution mode of the virtualized computer system. The direct execution mode operates at a first privilege level having a lower privilege than a second privilege level. A branch count of previously executed first privilege level branch instructions is maintained as instructions execute. Execution of a first privilege level branch instruction caused by a control transfer to the direct execution mode is detected. Responsive to the detection, a guest branch instruction count is determined based on the first privilege level branch count.Type: ApplicationFiled: March 31, 2008Publication date: October 1, 2009Applicant: VMWARE, INC.Inventors: Boris Weissman, Vyacheslav V. Malyugin, Petr Vandrovec, Ganesh Venkitachalam, Min Xu
-
Publication number: 20090235052Abstract: A data processing device is provided using pipeline architecture to reduce a time loss due to a branch without causing an increase in circuit scale. The data processing device uses pipeline control. The data processing device includes an instruction queue in which a plurality of instruction codes can be fetched, a fetch address operation circuit which calculates a fetch address, a fetch circuit which fetches an instruction code based on the fetch address, and a branch information setting circuit which decodes a branch setting instruction, stores a branch address in a branch address storage register, and stores a branch target address in a branch target address storage register. The fetch address operation circuit compares either a previous fetch address or an expected next fetch address with a value stored in the branch address storage register, and determines a next fetch address to be output, based on the comparison result.Type: ApplicationFiled: April 2, 2009Publication date: September 17, 2009Applicant: SEIKO EPSON CORPORATIONInventor: Makoto Kudo
-
Publication number: 20090222648Abstract: A system and method provides branch target buffer (BTB) allocation. When a branch instruction is received, a branch target address that corresponds to the branch instruction is determined. A determination is made whether the branch target address is presently stored in a branch target buffer (BTB). When the branch target address is not presently stored in the branch target buffer, an entry in the branch target buffer is identified to receive the branch target address. A value in a field within the identified entry in the branch target buffer, such as a postponement flag (PF), is used to selectively override a replacement decision defined by predetermined branch target buffer allocation criteria. In one form, if a branch is taken, the identified entry is replaced with the branch target address in response to determining that the value in the field within the identified entry has a predetermined value.Type: ApplicationFiled: February 29, 2008Publication date: September 3, 2009Inventors: William C. Moyer, Jeffrey W. Scott
-
Publication number: 20090222645Abstract: A method and data processing system allocates entries in a branch target buffer (BTB). Instructions are fetched from a plurality of instructions and one of the plurality of instructions is determined to be a branch instruction. A corresponding branch target address is determined. A determination is made whether the branch target address is stored in a branch target buffer (BTB). When the branch target address is not stored in the branch target buffer, an entry in the branch target buffer is identified for allocation to receive the branch target address based upon stored metrics such as data processing cycle saving information and branch prediction state. In one form the stored metrics are stored in predetermined fields of the entries of the BTB.Type: ApplicationFiled: February 29, 2008Publication date: September 3, 2009Inventors: William C. Moyer, Jeffrey W Scott
-
Patent number: 7577827Abstract: A data processor that addresses instructions as groups of commands which may contain more than one branch command, such as VLIW instructions that contain several commands for parallel execution. The processor selects an expected taken branch command from the branch commands in a group. The processor also selects a tentative target for the expected taken branch command and tentatively redirects control flow to a further group of commands identified by the tentative target. The processor contains an associative target memory for storing targets of previously executed branch commands. Targets are retrieved with an associative address that identifies a command in the group, the tentative target being selected on the basis of a match between the associative address associated with the tentative target and an indication of the expected taken command.Type: GrantFiled: February 28, 2001Date of Patent: August 18, 2009Assignee: NXP B.V.Inventor: Jan Hoogerbrugge
-
Publication number: 20090198981Abstract: In at least one embodiment, a processor includes at least one execution unit and instruction sequencing logic that fetches instructions for execution by the execution unit. The instruction sequencing logic includes branch logic that outputs predicted branch target addresses for use as instruction fetch addresses. The branch logic includes a branch target address cache (BTAC) having at least one direct entry providing storage for a direct branch target address prediction associating a first instruction fetch address with a branch target address to be used as a second instruction fetch address immediately after the first instruction fetch address and at least one indirect entry providing storage for an indirect branch target address prediction associating a third instruction fetch address with a branch target address to be used as a fourth instruction fetch address subsequent to both the third instruction fetch address and an intervening fifth instruction fetch address.Type: ApplicationFiled: February 1, 2008Publication date: August 6, 2009Inventors: DAVID S. LEVITAN, LIXIN ZHANG
-
Publication number: 20090177875Abstract: A branch target buffer (BTB) receives, from a processor, a current fetch group address which corresponds to a current fetch group including a plurality of instructions. In response to the current fetch group address resulting in a group hit in the BTB, the BTB provides to the processor a branch target address corresponding to a branch instruction within the current fetch group which is indicated by a control field as valid and predicted taken. The BTB generates the branch target address using an unshared lower order target portion, corresponding to the branch instruction and located within the entry of the BTB which caused the group hit, and one of a shared higher order target portion located within the entry of the BTB which caused the group hit or a higher order portion of the current fetch group address based on a value of the control field.Type: ApplicationFiled: January 3, 2008Publication date: July 9, 2009Inventors: William C. Moyer, Jeffrey W. Scott
-
Patent number: 7552314Abstract: 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: GrantFiled: October 17, 2005Date of Patent: June 23, 2009Assignee: STMicroelectronics, Inc.Inventors: Anatoly Gelman, Russell Schnapp
-
Patent number: 7546445Abstract: 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: GrantFiled: May 16, 2003Date of Patent: June 9, 2009Assignee: Fujitsu LimitedInventors: Shinichiro Tago, Tomohiro Yamana, Yoshimasa Takebe
-
Publication number: 20090119493Abstract: A method and computer program product for logging non-deterministic events of a virtual machine executing a sequence guest instructions, the method including tracking an execution point in the sequence of executing guest instructions, the tracking of the execution point including determining a branch count of executed branch instructions; and detecting an occurrence of a non-deterministic event directed to the virtual machine during execution of the sequence of guest instructions, and recording information which includes an identifier of a current execution point, wherein the identifier includes the branch count.Type: ApplicationFiled: March 27, 2008Publication date: May 7, 2009Applicant: VMWARE, INC.Inventors: Ganesh Venkitachalam, Michael Nelson, Boris Weissman, Min Xu, Vyacheslav V. Malyugin
-
Publication number: 20090106540Abstract: An apparatus for modifying instructions of a machine readable program according to remanipulation rules includes a remanipulation unit, which is configured to identify a manipulated instruction and to remanipulate the manipulated instruction according the remanipulation rules. The apparatus further includes a processor unit configured to process a predetermined instruction set, wherein the predetermined instruction set includes manipulated instructions and remanipulated instructions.Type: ApplicationFiled: October 18, 2007Publication date: April 23, 2009Applicant: Infineon Technologies AGInventor: Josef Haid
-
Patent number: 7523298Abstract: A polymorphic branch predictor and method includes a plurality of branch prediction methods. The methods are selectively enabled to perform branch prediction. A selection mechanism is configured to select one or more of the branch prediction methods in accordance with a dynamic setting to optimize performance of the branch predictor during operation in accordance with a current task.Type: GrantFiled: May 4, 2006Date of Patent: April 21, 2009Assignee: International Business Machines CorporationInventor: Michael Gschwind
-
Patent number: 7519777Abstract: Methods, systems and computer program products for concomitant pair per-fetching. Exemplary embodiments include a method for concomitant pair prefetching, the method including detecting a stride pattern, detecting an indirect access pattern to define an access window, prefetching candidates within the defined access window, wherein the prefetching comprises obtaining prefetch addresses from a history table, updating a miss stream window, selecting a candidate of a concomitant pair from the miss stream window, producing an index from the candidate pair, accessing an aging filter, updating the history table and selecting another concomitant pair candidate from the miss stream window.Type: GrantFiled: June 11, 2008Date of Patent: April 14, 2009Assignee: International Business Machines CorporationInventors: Kattamuri Ekanadham, Il Park, Pratap C. Pattnaik
-
Patent number: 7519798Abstract: A method, system and branch predictor for branch prediction. The system includes a processor core for executing instructions, a branch target buffer for fetching a branch address, and a branch predictor for first predicting a branch of a current instruction address and indicating to the processor core when to fetch the branch address from the branch target buffer. A branch predictor, including a branch prediction table for storing a plurality of branch prediction values of previous branch instructions, and a controller for selecting one of the plurality of branch prediction values and outputting the selected one of the plurality of branch prediction values to a processor core, the selected one of the plurality of branch prediction values indicating to the processor core when to fetch a branch address from a branch target buffer.Type: GrantFiled: August 19, 2004Date of Patent: April 14, 2009Assignee: Samsung Electronics Co., Ltd.Inventor: Sung-Woo Chung
-
Patent number: 7509472Abstract: Address translation for instruction fetching can be obviated for sequences of instruction instances that reside on a same page. Obviating address translation reduces power consumption and increases pipeline efficiency since accessing of an address translation buffer can be avoided. Certain events, such as branch mis-predictions and exceptions, can be designated as page boundary crossing events. In addition, carry over at a particular bit position when computing a branch target or a next instruction instance fetch target can also be designated as a page boundary crossing event. An address translation buffer is accessed to translate an address representation of a first instruction instance. However, until a page boundary crossing event occurs, the address representations of subsequent instruction instances are not translated. Instead, the translated portion of the address representation for the first instruction instance is recycled for the subsequent instruction instances.Type: GrantFiled: February 1, 2006Date of Patent: March 24, 2009Assignee: Sun Microsystems, Inc.Inventors: Paul Caprioli, Shailender Chaudhry
-
Patent number: 7493447Abstract: Methods and related computer program products, systems, and devices for using a NAND flash as a program ROM are disclosed.Type: GrantFiled: May 3, 2006Date of Patent: February 17, 2009Assignee: Nuvoton Technology CorporationInventor: Yi-Hsien Chuang
-
Patent number: 7493600Abstract: A method for verifying a branch prediction mechanism and an accessible recording medium for storing a verification program are provided. The method is used for verifying the branch prediction mechanism, such as a branch target buffer (BTB), in a processor. The method comprises providing and executing a verification program in the processor. The verification program comprises at least one branch instruction, which determines whether to use a recursive call and execute the verification program according to a given condition.Type: GrantFiled: October 29, 2004Date of Patent: February 17, 2009Assignee: Faraday Technology Corp.Inventor: Cheng-Yen Huang
-
Publication number: 20090037708Abstract: A system for predicting multiple targets for a single branch includes: a branch target buffer that includes a previous next address for an instruction and that receives an indirect instruction address to provide a first branch target prediction; a first branch table for capturing local past target information of an indirect branch in an encoded form; a second branch table which is a correlation table for storing potential branch targets based on a local branch history and which provides a second branch target prediction when the first branch target prediction is not successful; an exclusion predictor for inhibiting updates of inefficient entries; and a multiplexer to select the predicted target as output.Type: ApplicationFiled: October 6, 2008Publication date: February 5, 2009Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATIONInventors: Il Park, Mauricio J. Serrano, Jong-Deok Choi
-
Patent number: 7484042Abstract: A data processing system includes at least first and second coherency domains each containing at least one processing unit, an interconnect fabric coupling the first and second coherency domains, and a cache memory within the first coherency domain. The cache memory comprises a data array, a cache directory of contents of the data array, and a cache controller including a prefetch predictor. The prefetch predictor determines a predicted scope of broadcast on the interconnect fabric for a first prefetch operation having a first target address based upon a scope of a previous second prefetch operation having a different second target address. The cache controller issues the first prefetch operation on the interconnect fabric with the predicted scope.Type: GrantFiled: August 18, 2006Date of Patent: January 27, 2009Assignee: International Business Machines CorporationInventors: Benjiman L. Goodman, William J. Starke, Jeffrey A. Stuecheli
-
Patent number: 7471574Abstract: A branch target buffer (BTB) storing a data entry related to a branch instruction is disclosed. The BTB conditionally enables access to the data entry in response to a word line gating circuit associated with a word line in the BTB. The word line gating circuit stores a word line gating value derived from branch history data related to the instruction. Additionally, a branch prediction unit and a processor incorporating the BTB are disclosed, along with methods for operating the BTB.Type: GrantFiled: March 16, 2005Date of Patent: December 30, 2008Assignee: Samsung Electronics Co., Ltd.Inventor: Gi Ho Park
-
Publication number: 20080288760Abstract: An information processing system for branch target prediction includes: a first memory for storing entries for multi-target branch, wherein each entry includes a plurality of target addresses representing a history of target addresses for each single branch in the multi-target branch, and wherein said first memory stores an entry for the branch only if the branch is a multi-target branch; hardware logic for reading the memory and identifying a repeated pattern in each of the plurality of target addresses for the multi-target branch; logic for predicting a next target address for the multi-target branch based on the repeated pattern that was identified, using a pattern matching algorithm; and a second memory for storing information regarding whether a branch is a multi-target branch; wherein the logic for reading and the logic for predicting are executed only if the branch is the multi-target branch.Type: ApplicationFiled: July 31, 2008Publication date: November 20, 2008Applicant: International Business Machines CorporationInventors: Il Park, Pratap C. Pattnaik, Jong-Deok Choi
-
Patent number: 7447882Abstract: A branch target buffer is provided which maintains its entries across context switches within a virtually addressed system. Branch mispredictions are detected for individual entries within the branch target buffer and those individual entries are invalidated.Type: GrantFiled: April 20, 2005Date of Patent: November 4, 2008Assignee: ARM LimitedInventor: Matthew Paul Elwood
-
Patent number: 7447883Abstract: A data processing system includes an instruction fetching circuit 2, an instruction queue 4 and further processing circuits 6. A branch target cache, which maybe a branch target address cache 8, a branch target instruction cache 10 or both, is used to store branch target addresses or blocks of instructions starting at the branch target respectively. A control circuit 12 is responsive to the contents of the instruction queue 4 when a branch instruction is encountered to determine whether or not storage resources within the branch target cache 8, 10 should be allocated to that branch instruction. Storage resources within the branch target cache 8, 10 will be allocated when the number of program instructions within the instruction queue is below a threshold number and/or the estimated execution time of the program instructions is below a threshold time.Type: GrantFiled: August 10, 2006Date of Patent: November 4, 2008Assignee: ARM LimitedInventors: Vladimir Vasekin, Stuart David Biles, Andrew Christopher Rose, Wilco Dijkstra
-
Patent number: 7447881Abstract: A branch prediction apparatus has a configuration such that a predicted branch target address and an offset are obtained by referring to a branch history, an instruction fetch address and the offset are added to obtain a branch instruction address, the branch instruction address is subtracted from the predicted branch target address to obtain a predicted displacement, and this predicted displacement is compared with a displacement cut-out from an instruction by an instruction decoder, to judge whether the predicted branch target address is correct or not.Type: GrantFiled: January 9, 2003Date of Patent: November 4, 2008Assignee: Fujitsu LimitedInventor: Masaki Ukai
-
Patent number: 7447885Abstract: A branch prediction mechanism includes a history value register storing a history value which is used to address into a history buffer from which a plurality of prediction values are read and stored into a prediction value store. The one or more prediction values to be used with a potential branch instruction are selected from the prediction values store using a multiplexer switched by a branch predicting portion of a fetch address. The history buffer is only read when the history value changes whereas the prediction values store is read each time a potential branch instruction is identified requiting a prediction value to be associated with it. The reduced duty cycle of the history buffer saves power.Type: GrantFiled: April 20, 2005Date of Patent: November 4, 2008Assignee: ARM LimitedInventor: Matthew Paul Elwood
-
Patent number: 7437543Abstract: A method and processor for reducing the fetch time of target instructions of a predicted taken branch instruction. Each entry in a buffer, referred to herein as a “branch target buffer”, may store an address of a branch instruction predicted taken and the instructions beginning at the target address of the branch instruction predicted taken. When an instruction is fetched from the instruction cache, a particular entry in the branch target buffer is indexed using particular bits of the fetched instruction. The address of the branch instruction in the indexed entry is compared with the address of the instruction fetched from the instruction cache. If there is a match, then the instructions beginning at the target address of that branch instruction are dispatched directly behind the branch instruction. In this manner, the fetch time of target instructions of a predicted taken branch instruction is reduced.Type: GrantFiled: April 19, 2005Date of Patent: October 14, 2008Assignee: International Business Machines CorporationInventors: Richard William Doing, Brett Olsson, Kenichi Tsuchiya
-
Patent number: 7434037Abstract: An information processing system includes a branch target buffer (BTB) comprising the last next address for the instruction and for receiving an indirect instruction address and providing a BTB predicted target; and next branch target table (NBTT) for storing potential branch targets based on a history of the branch and for providing an NBTT when the a BTB predicted target is not successful. In another embodiment a system comprising a plurality of branch prediction resources dynamically predicts the best resource appropriate for a branch. The method includes predicting a target branch for an indirect instruction address using a resource chosen among the plurality of branch prediction resources; and selectively inhibiting updates of the branch prediction resources whose prediction accuracy does not meet a threshold.Type: GrantFiled: April 7, 2006Date of Patent: October 7, 2008Assignee: International Business Machines CorporationInventors: Il Park, Mauricio J. Serrano, Jong-Deok Choi
-
Publication number: 20080201564Abstract: An object of the present invention is to achieve fast data processing. A unit (FF) is included for selecting whether a central processing unit (CPU) performs instruction reading in units of 16 bits (a first word length) or in units of 32 bits (a second word length). Depending on whether instruction reading is performed in units of 16 bits or 32 bits, increment values (+2 and +4) by which a program counter (PC) is incremented are switched. Data reading or writing is performed in units of a given data length irrespective of the selecting unit. When the CPU issues a request for instruction reading in units of 16 bits or 32 bits or for data reading or writing, a bus control unit performs reading or writing a predetermined number of times according to a bus width designated for a resource located at an address specified in the request. The bus control unit causes the CPU to wait until an instruction of 16 or 32 bits long (read data) requested by the CPU gets ready.Type: ApplicationFiled: April 17, 2008Publication date: August 21, 2008Inventors: Naoki Mitsuishi, Shinichi Shibahara, Takahiro Okubo
-
Patent number: 7409535Abstract: An information processing system for branch target prediction is disclosed. The information processing system includes a memory for storing entries, wherein each entry includes a plurality of target addresses representing a history of target addresses for a multi-target branch and logic for reading the memory and identifying a repeated pattern in a plurality of target addresses for a multi-target branch. The information processing system further includes logic for predicting a next target address for the multi-target branch based on the repeated pattern that was identified.Type: GrantFiled: April 20, 2005Date of Patent: August 5, 2008Assignee: International Business Machines CorporationInventors: Il Park, Pratap C. Pattnaik, Jong-Deok Choi
-
Publication number: 20080183986Abstract: A data processing system 2 includes a data store 14 having storage locations storing entries which can be used for a variety of purposes, such as operand value prediction, branch prediction, etc. An entry profile store 16 stores profile data in respect of more candidate entries than there are storage locations within the data store 14. The profile data is used to determine replacement policy for entries within the data store 14. The profile data 16 can include hash values used to determine whether or not predictions associated with candidate entries were or were not correct without having to store the full predictions within the profile data.Type: ApplicationFiled: January 18, 2008Publication date: July 31, 2008Applicant: ARM LimitedInventors: Sami Yehia, Marios Kleanthous
-
Patent number: 7398377Abstract: 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: GrantFiled: November 1, 2004Date of Patent: July 8, 2008Assignee: IP-First, LLCInventors: Thomas C. McDonald, Terry Parks
-
Publication number: 20080148028Abstract: A data processing apparatus is disclosed that comprises: a processor for processing a stream of decoded instructions; a prefetch unit for fetching instructions within a stream of instructions from a memory prior to sending said stream of instructions to said processor; branch prediction logic operable to predict a behaviour of a branch instruction; a branch target cache for storing predetermined information about branch operations executed by said processor, said predetermined information comprising: identification data for an instruction specifying a branch operation and data relating to whether said branch is taken or not; wherein said data processing apparatus is operable to access said branch target cache and to determine if there is data corresponding to instructions within said stream of instructions stored within said branch target cache and if there is to output said data; said data processing apparatus further comprising: a data store operable to store data indicative of a behaviour of a branch instrType: ApplicationFiled: December 19, 2006Publication date: June 19, 2008Inventors: Gilles Eric Grandou, Stephane Eric Sebastien Brochier, Louis-Marie Vincent Mouton
-
Publication number: 20080126771Abstract: An instruction cache (I-Cache) for a processor is configured to include a Branch Target Extension associated with each Instruction Sector. When an Instruction Sector is fetched, the Branch Target Extension is simultaneously fetched. If the Instruction Sector has a branch instruction that is predicted taken, then the branch target address in the branch extension is used to access the next Instruction Sector. In other embodiments, each Instruction Sector has a plurality of Branch Target Extensions each corresponding to a potential branch instruction in an Instruction Sector. In this case, the Branch Target Extensions are partitioned into an instruction index field for locating branch instruction in the Instruction Sector, a local predictor field for predicted taken status and a target address field for the branch target address. The least significant bits of the instruction fetch address are compared to the instruction indexes to determine a particular Branch Target Extension to use.Type: ApplicationFiled: July 25, 2006Publication date: May 29, 2008Inventors: Lei Chen, Zhigang Hu, Lixin Zhang
-
Publication number: 20080082843Abstract: A processor has a fetch unit and a branch execution unit. The fetch unit has a branch predictor. The branch predictor has a branch target buffer and a branch direction predictor. A wake value is a number of instruction fetches that is predicted to be performed after a fetch of a branch. Thus, for a first branch, for example, a first wake number is predicted. A low power mode of the branch predictor is enabled for a duration of the first wake value in response to hit in the branch target buffer in which the hit is in response to the first branch.Type: ApplicationFiled: September 28, 2006Publication date: April 3, 2008Inventors: Sergio Schuler, Michael D. Snyder, Leick D. Robinson, David M. Thompson
-
Patent number: 7350062Abstract: An information processing apparatus is capable of speculatively performing an execution, such as a pipeline/superscalar/out-of-order execution and equipped with a branch prediction mechanism (a branch history).Type: GrantFiled: August 22, 2005Date of Patent: March 25, 2008Assignee: Fujitsu LimitedInventors: Masaki Ukai, Kyoko Tashima, Aiichiro Inoue
-
Patent number: 7350037Abstract: A signal processing device has a program memory for storing program code transferred from an external source under the control of an access control unit having an address counter. The transferred program code is executed by a computational unit having a program counter. The access control unit controls the transfer of the program code according to the values of both the address counter and the program counter, thereby enabling the computational unit to start executing the program code before the entire program has been transferred. Program initialization can therefore be completed quickly, and the program can promptly begin producing audible or visible results.Type: GrantFiled: February 5, 2004Date of Patent: March 25, 2008Assignee: Oki Electric Industry Co., Ltd.Inventors: Fumihiro Wajima, Hiroki Goko
-
Patent number: 7346737Abstract: A cache system has a branch target address cache, including a storage unit for storing branch target address cache (BTAC) access bits each corresponding to cache lines of an instruction cache. The BTAC access bits represent a presence of a branch instruction on the next cache line of a cache line corresponding to the instruction cache. The BTAC is selectively accessed in accordance with values of the BTAC access bits corresponding to I'th (I is a positive integer) cache lines presently accessed in the instruction cache.Type: GrantFiled: April 26, 2005Date of Patent: March 18, 2008Assignee: Samsung Electronics Co., Ltd.Inventor: Hoi-Jin Lee
-
Patent number: 7343481Abstract: A data processing system incorporates an instruction prefetch unit 8 including a static branch predictor 12. A static branch prediction cache 30, 32, 34 is provided for storing a most recently encountered static branch prediction such that a subsequent request to fetch the already encountered branch instruction can be identified before the opcode for that branch instruction is returned. The cached static branch prediction can thus redirect the prefetching to the branch target address sooner than the static predictor 12.Type: GrantFiled: March 19, 2003Date of Patent: March 11, 2008Assignee: ARM LimitedInventor: David James Williamson
-
Publication number: 20080052499Abstract: Hardware and/or software countermeasures are provided to reduce or eliminate vulnerabilities due to the observable and/or predictable states and state transitions of microprocessor components such as instruction cache, data cache, branch prediction unit(s), branch target buffer(s) and other components. For example, for branch prediction units, various hardware and/or software countermeasures are provided to reduce vulnerabilities in the branch prediction unit (BPU) and to protect against the security vulnerabilities due the observable and/or predictable states and state transitions during BPU operations.Type: ApplicationFiled: July 9, 2007Publication date: February 28, 2008Inventor: Cetin Kaya Koc
-
Patent number: 7337271Abstract: A memory storage structure includes a memory storage device, and a first meta-structure having a first size and operating at a first speed. The first speed is faster than a second speed for storing meta-information based on information stored in a memory. A second meta-structure is hierarchically associated with the first meta-structure. The second meta-structure has a second size larger than the first size and operates at the second speed such that faster and more accurate prefetching is provided by coaction of the first and second meta-structures. A method is provided to assemble the meta-information in the first meta-structure and copy this information to the second meta-structure, and prefetching the stored information from the second meta-structure to the first meta-structure ahead of its use.Type: GrantFiled: December 1, 2003Date of Patent: February 26, 2008Assignee: International Business Machines CorporationInventors: Philip George Emma, Allan Mark Hartstein, Brian R. Prasky, Thomas Roberts Puzak, Moinuddin Khalil Ahmed Qureshi, Vijayalakshmi Srinivasan
-
Publication number: 20080046702Abstract: A technique for reducing lookups to a branch target address cache (BTAC) is disclosed. In this technique, a branch target address is retrieved from the BTAC in response to a miss in looking up an instruction address in an instruction cache (I-cache). The branch target address is associated with the instruction address. The branch target address retrieved from the BTAC is stored in the I-cache. With this disclosed technique, subsequent instruction addresses are looked up in the I-cache, nonparallel to the BTAC, thus saving power by reducing needless BTAC lookups.Type: ApplicationFiled: August 16, 2006Publication date: February 21, 2008Inventor: Michael William Morrow
-
Publication number: 20080040592Abstract: A data processing system includes an instruction fetching circuit 2, an instruction queue 4 and further processing circuits 6. A branch target cache, which maybe a branch target address cache 8, a branch target instruction cache 10 or both, is used to store branch target addresses or blocks of instructions starting at the branch target respectively. A control circuit 12 is responsive to the contents of the instruction queue 4 when a branch instruction is encountered to determine whether or not storage resources within the branch target cache 8, 10 should be allocated to that branch instruction. Storage resources within the branch target cache 8, 10 will be allocated when the number of program instructions within the instruction queue is below a threshold number and/or the estimated execution time of the program instructions is below a threshold time.Type: ApplicationFiled: August 10, 2006Publication date: February 14, 2008Applicant: ARM LIMITEDInventors: Vladimir Vasekin, Stuart David Biles, Andrew Christopher Rose, Wilco Dijkstra
-
Publication number: 20080040590Abstract: Information is processed in a data processing system having a branch target buffer (BTB). In one form, an instruction is received and decoded. A determination is made whether the instruction is a taken branch instruction based on a condition code value set by one of a logical operation, an arithmetic operation or a comparison result of the execution of another instruction or execution of the instruction. An instruction specifier associated with the taken branch instruction is used to determine whether to allocate an entry of the branch target buffer for storing a branch target of the taken branch instruction. In one form the instruction specifier is a field of the instruction. Depending upon the value of the branch target buffer allocation specifier, the instruction fetch unit will not allocate an entry in the branch target buffer for unconditional branch instructions.Type: ApplicationFiled: August 11, 2006Publication date: February 14, 2008Inventors: Lea Hwang Lee, William C. Moyer
-
Publication number: 20080040591Abstract: A method of profiling each of a plurality of branch instructions to determine when allocation of an entry in a branch target buffer should occur if the branch is taken. Various factors are used in the determination. In one form, each of the plurality of branch instructions is analyzed to determine a count value of how many times a branch instruction, when executed, is taken during a timeframe. Based upon said analyzing, an instruction field within each of the plurality of branch instructions is set to a value that controls whether allocation of an entry of a branch target buffer should occur when such branch instruction is taken. Other factors, such as determining how long each branch instruction will likely remain in the branch target buffer prior to being replaced, may be used.Type: ApplicationFiled: August 11, 2006Publication date: February 14, 2008Inventors: William C. Moyer, Lea Hwang Lee
-
Patent number: 7328332Abstract: A processor (1700) including a pipeline (1710, 1740) having a fetch pipeline (1710) with branch prediction circuitry (1840) to supply respective predicted taken target addresses for branch instructions, an execution pipeline (1740) with a branch execution circuit (1870), and storage elements (in 1860) and control logic (2350) operable to establish a first-in-first-out (FIFO) circuit (1860) with a write pointer WP1 and a read pointer RP1. The control logic (2350) is responsive to the branch prediction circuitry (1840) to write a predicted taken target address to a storage element (in 1860) identified by the write pointer (WP1) and the predicted taken target address remains stationary therein. The FIFO circuit (1860) bypasses a plurality of pipestages between the branch prediction circuitry (1840) and the branch execution circuit (1870). The control logic (2350) is operable to read a predicted taken target address (PTTPCA) from a storage element (in 1860) identified by the read pointer RP1.Type: GrantFiled: August 24, 2005Date of Patent: February 5, 2008Assignee: Texas Instruments IncorporatedInventor: Thang Tran