WO2004068337A1 - 情報処理装置 - Google Patents
情報処理装置 Download PDFInfo
- Publication number
- WO2004068337A1 WO2004068337A1 PCT/JP2003/000901 JP0300901W WO2004068337A1 WO 2004068337 A1 WO2004068337 A1 WO 2004068337A1 JP 0300901 W JP0300901 W JP 0300901W WO 2004068337 A1 WO2004068337 A1 WO 2004068337A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- information
- bhr
- branch
- instruction
- taken
- Prior art date
Links
- 230000010365 information processing Effects 0.000 claims description 55
- 238000000034 method Methods 0.000 claims description 19
- 206010016531 fetishism Diseases 0.000 claims description 2
- 238000003672 processing method Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 25
- 101001076430 Homo sapiens Interleukin-13 Proteins 0.000 description 18
- 102100026011 Interleukin-13 Human genes 0.000 description 18
- 230000008859 change Effects 0.000 description 9
- 239000000872 buffer Substances 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 241000428533 Rhis Species 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
Definitions
- the present invention relates to a technology for an information processing device that performs pipeline processing, and more particularly to a technology for pipeline control in branch prediction.
- branch prediction is performed in the information processing device.
- branch prediction methods there is a method of recording a branch history and predicting whether to branch based on the history.
- This method is based on a branch history called BHT (Branch History Table).
- BHT Branch History Table
- the branch strength is determined by referring to the storage area where the predicted branch information is recorded, and the branch prediction is performed.
- FPC address at the time of instruction fetch
- BHR Brain History Register
- BHR information the value in the global history register
- FIG. 1 is an explanatory diagram of branch prediction by a method using a branch history.
- BHT 1 is a table for recording a tag (not shown) based on the fetched address store BHR information and 2-bit branch prediction information based on whether or not a branch was performed in the address branch information corresponding to the tag. It is.
- BHR2 consists of multiple bits (5 bits in the figure) that record the history of what branch prediction was performed for the most recently executed (5 in the figure) branch instructions. Register.
- the information processing device When performing branch prediction, the information processing device generates a tag from the fetched program counter value (FPC) and the BHR information in BHR 2 at that time, searches BHT 1 using this tag, and searches for BHT 1 from BHT 1. Branch prediction is performed from the read branch prediction information.
- FPC fetched program counter value
- the BHT 1 stores four of the strongly predicted not-taken information, Strongly Not-Taken, Weakly Not-Taken, Strongly Taken, and Weakly Taken.
- the branch prediction information read from the BHT 1 is Strongly Not-Taken or Weakly Not-Taken, it is predicted as Not-Taken, and when it is Strongly Taken or Weakly Taken, it is predicted as Taken.
- the branch prediction information in the BHT 1 is sequentially updated based on the result of whether or not the branch was actually taken. In the following description, a branch instruction is called Taken when the branch is taken or predicted to be taken, and Not-Taken when the branch is not taken or predicted not taken.
- BHR 2 shifts left by 1 bit, Is set to the least significant bit. For example, 1 is set when a branch (Taken) is predicted, and 0 is set when a non-branch (Not-Taken) is predicted. In the following description, 1 shift is set when the least significant bit of the BHR is set to 1 and 0 shi ⁇ t is set when 0 is set and shifted.
- branch prediction method that advances processing while predicting whether or not a branch is taken in a branch instruction at the time of instruction fetch is applied to the pipeline, if a branch prediction is missed, the current processing is applied to each slot in the pipeline. A so-called pipeline bubble with unrelated stages occurs, and performance is greatly reduced.
- branch prediction a penalty for performance due to a prediction error is large, so it is important to improve prediction accuracy in order to improve performance. In order to improve the prediction system, it is also important how to reproduce the state before branch prediction when branch prediction is removed.
- the above publication discloses a configuration having two execution pipelines, one for executing an instruction before a branch instruction and the other for executing an instruction after a branch instruction. If the branch prediction is removed, the state can be restored by switching the pipeline.
- Japanese Patent Application Laid-Open No. 2001-243609 discloses that the state transition of the branch prediction information is different from the actual branch operation.
- a method of bypassing the state transition of the branch prediction to the branch prediction state of the same branch instruction on the pipeline is disclosed.
- a search from BHT 1 to predict a branch and then the next fetch are performed in one cycle. Easy control of updating FPC and BHR information Met.
- an information processing device configured to search for BHT 2 and perform branch prediction based on the instruction fetch address (FPC) and the value in BHR 1 performs a certain cycle after starting the instruction fetch.
- a control structure that performs branch prediction later may be used. If the branch prediction is missed, it is necessary to return immediately after the missed branch instruction and refetch the information. For that purpose, the information on the branch instruction is stored in the branch instruction reservation station, and the branch error is stored. When is determined, the information stored in the reservation station is used to return to the state at the time the branch instruction was fetched, and the flashing is performed again.
- the BHR information is also updated in each pipeline 1 / and returned to the value at the time when the branch instruction was fetched, but if the pipeline is deep and the fetch takes several cycles, the BHR information Cannot restore all the state of the pipeline at the time of fetching.
- BHR information restoration processing such as restoring BHR information using the BHR information at the time of occurrence of a branch prediction error Processing is performed.
- the information processing apparatus is premised on an information processing apparatus requiring a plurality of cycles for branch prediction control, and includes a branch history information storage unit and a BHR reconstruction unit.
- the branch history information storage means stores branch history information for the instruction that has been fetched.
- the BHR reconstructing unit and the instruction are branch instructions and the branch prediction for the branch instruction is missed, the BHR information used for branch prediction is restored using the branch history information stored in the branch history information storage unit. .
- the branch history information may be configured to include information based on the BHR information for the plurality of cycles, for example, BHR information used for branch prediction of the fetched instruction and difference information from other BHR information.
- accurate branch prediction control can be realized with a simple configuration and control.
- FIG. 1 is an explanatory diagram of branch prediction by a method using a branch history.
- FIG. 2 is a block diagram illustrating a configuration of a part related to branch prediction of the information processing apparatus according to the present embodiment.
- FIG. 3 is an explanatory diagram illustrating the principle of restoring the BHR information at the time of a prediction error in the information processing apparatus of the present embodiment.
- FIG. 4 is a diagram illustrating an example of a change in BHR information in the information processing apparatus according to the present embodiment when all branch predictions are correct.
- FIG. 5 is a diagram illustrating a change example of the BHR information in the information processing apparatus according to the present embodiment when the branch instruction predicted as Not-Take is actually Taken.
- FIG. 6 (a) is an explanatory diagram of s1ot and carry showing a case where a carry does not occur, and FIG. 6 (b) represents a case where a carry occurs.
- FIG. 7 shows a case where the predicted value was Taken and the actual value was Not-Taken.
- FIG. 14 is a diagram illustrating an example of a change in BHR information in a case where the information is changed;
- FIG. 8 is a diagram showing an example of a change in the BHR information when a carry occurs when a predicted result is a take and a not-taken is actually performed.
- FIG. 9 is a block diagram showing a configuration example of a BHR and a peripheral portion thereof.
- FIG. 10 is a diagram showing a schematic configuration of a BHR reconfiguration unit.
- FIG. 11 is a diagram showing the configuration of the BHR reconstruction unit in more detail.
- FIG. 12 is a diagram illustrating an example of the operation of updating the BHR information in the information processing apparatus according to the present embodiment when the branch prediction is correct.
- FIG. 13 is a diagram illustrating an example of the operation of updating the BHR information in the information processing apparatus according to the present embodiment when a branch prediction error occurs.
- FIG. 2 is a block diagram illustrating a configuration of a part related to branch prediction of the information processing apparatus according to the present embodiment. '
- the information processing apparatus in this embodiment includes BHR 11, BHT 12, brhis (branch history) 13, primary instruction cache 14, branch prediction control unit 15, instruction decode unit 17, branch instruction dedicated Station station 18, BHR reconstruction section 19, Integer instruction dedicated reservation station 20, Floating point arithmetic dedicated reservation station 21, LOAD / S TORE instruction dedicated reservation station 22, An integer arithmetic unit 23, a floating-point arithmetic unit 24, and a primary data cache 25 are provided.
- BHR 11 is a global history register, and is "1" if Taken is the take instruction or "Not-Taken” in the most recently executed multiple branch instructions (10 branch instructions in this embodiment). Is a 10-bit register that holds the branch history recorded as '0'.
- HR 11 has a configuration for storing a plurality of BHR information.
- the BHT 12 is a table that records a tag (not shown) generated from a fetched address or the like, and 2-bit branch prediction information based on whether or not a branch was actually made in the address corresponding to the tag. In the present embodiment, it is assumed that the BHT 12 has a configuration of a 2-bit X 16 k address.
- the brhisl 3 is a table having information on branch instructions executed in the past. Whether or not the instruction code of the referenced address is a branch instruction, and in the case of a branch instruction, the target address and what attribute the branch instruction has, etc. Information is recorded.
- the brhis 13 stores the tag generated from the address, and the tag generated from the fetch address compares the tag with the tag in the brhis 13 (T ag Match), and hits from the brhisi 3
- the branch prediction control unit 15 determines that the fetched instruction code is a branch instruction.
- the primary instruction cache 14 is a primary instruction cache memory, and the instruction decode unit 17 reads an instruction code to be decoded from the primary instruction cache 14.
- the branch prediction control unit 15 is responsible for branch prediction processing, and checks whether or not the instruction referenced by the FPC is a branch instruction from the result of Tag mating with the brhisl 3 by the FPC, and at the same time, the FPC and the Based on the branch prediction information read from the BHT 12 based on the BHR information in the BHR 11, the branch prediction whether the branch instruction is “Taken” or “Not-Taken” is performed.
- the BHR information in the BHR 11 is updated based on the result of the branch prediction.
- the instruction F etch control unit 16 generates a fetch address based on a branch prediction result by the branch prediction control unit 15 and the like. Using this fetch address, the BHT 12, brhis 13 and primary instruction Cache 14 is referenced.
- the instruction decode unit 17 reads the fetched instruction code from the primary instruction cache 14, decodes the instruction code, and converts the fetched instruction into an integer instruction based on the result. It is allocated to one of the dedicated reservation station 20, the floating point calculation dedicated reservation station 21, and the LOADZSTORE instruction dedicated reservation station 22.
- the branch instruction-dedicated reservation station 18 monitors the condition code register indicating various conditions serving as branch conditions for the conditional branch instruction, and the result of the branch prediction performed by the branch prediction control unit 15 is missed. Judgment is made as to whether or not a branch history information for restoring the BHR information is notified to the instruction F etch control unit 16 and the BHR reconfiguration unit 19 via the restoration path 26 together with the notification of the prediction error. send.
- the BHR reconfiguration unit 19 Upon receiving the notification of the prediction error from the branch instruction dedicated reservation station 18, the BHR reconfiguration unit 19 returns the BHR information to the state at the time when the branch instruction with the incorrect prediction was fetched, based on the branch history information. Details of the operation of the BHR reconstruction unit 19 will be described later.
- the reservation station for exclusive use of integer instruction 20 and the reservation station for exclusive use of floating point operation 21 are reservation stations for integer operation instructions and floating point operation instructions, respectively, and store the instructions distributed by the instruction decoding unit 17. After the recombination of the order, etc., it is sent to the integer arithmetic unit 23 or the floating point arithmetic unit 24.
- the LOADZSTORE instruction dedicated reservation station 22 is a reservation station for the LOADZSTORE instruction to the memory, and accesses the primary data cache 25 based on the instruction flowed by the instruction decoding unit 17.
- the integer operation unit 23 is an operation unit that processes an integer operation instruction
- the floating point operation unit 24 is an operation unit that executes and processes a floating point operation instruction.
- the primary data cache 25 is a primary data cache memory
- the reservation station 22 dedicated to the LOAD / STORE instruction accesses the primary data cache 25 in response to the LOAD / STORE instruction.
- the instruction code read from the primary instruction cache 14. is decoded by the instruction decode unit 17 based on the fetch address (FPC) indicated by the instruction F etch control unit 16. Further, the branch prediction control unit 15 refers to the BHT 12 and the brhis 13 using the BHR information in the BHR 11 at that time and the FPC, and performs branch prediction.
- the BHR information used for branch prediction is transferred to the instruction decoding unit 17 and the branch instruction dedicated reservation station 18 as branch history information along with the progress of the pipeline stage, along with the difference information. Then, the branch instruction dedicated reservation station 18 determines that the branch is mispredicted, and when refetching, the branch instruction dedicated reservation station 18 sends the corresponding branch history information to the BHR reconstruction unit 19. On the basis of the branch history information, the BHR reconstructing section 19 restores the BHR information to a state where prediction has been accurately performed for the branch instruction.
- FIG. 3 is an explanatory diagram illustrating the principle of restoring the BHR information at the time of a prediction error in the information processing apparatus of the present embodiment.
- the branch history information indicating the BHR information when the instruction of the pipeline is fetched is stored in the branch prediction control unit 15. Then, the instructions are transferred to the instruction F etch control unit 16, instruction decoding unit 17, and branch instruction dedicated reservation station 18.
- the branch instruction-dedicated reservation station 18 stores branch history information of a plurality of instructions. If the branch instruction-dedicated reservation station 18 determines that a branch is mispredicted, the branch instruction is branched. The history information is sent to the BHR reconfiguration unit 19 together with the notification of the branch error.
- the BHR reconstructing unit 19 restores the BHR information for n cycles based on the branch history information and returns it to the BHR 11, and at the time of refetching, performs branch prediction based on the restored BHR information. Be done.
- the value of n is required for the pipeline configuration and instruction fetch. Determined based on the number of stages and the like.
- branch history information Various types are conceivable. For example, a configuration in which all BHR information for n cycles after fetching an instruction code is used as branch history information is conceivable. Alternatively, as shown in FIG. 3 (b), a configuration is conceivable in which the BHR information at the time of fetching and the difference information between the BHR information and the BHR information for n cycles thereafter are used as branch history information.
- the information processing apparatus in the present embodiment has a pipeline structure having the following three stages in the instruction fetch portion.
- the BHT 12, b rhis l 3, and the primary instruction cache 14 are searched.
- TagMateh of brhis13 is performed, and branch prediction by BHT12 is performed based on the TagMatch information.
- the BHT 12 is referred to using the ⁇ information at the ⁇ stage, and the result of the branch prediction is determined at the U stage three cycles later. Therefore, the BHR 11 has a configuration in which BHR information (BHR0, BHR1, BHR2) for three cycles and difference information thereof are stored.
- Unconditional branch instruction predicts Taken, and there is a conditional branch in the previous s] ot — 0 shiift
- the BHR 11 Since the dependency of the BHR information between the pipelines becomes complicated, the BHR 11 stores the BHR information for three cycles (BHR0, BHR1, BHR2) and stores the BHR information used at the time of fetching into the BHR0. —> BHR 1-> BHR 2—> BH R0 and update and use. Also, the BHR information to be used is indicated by a pointer, and this pointer is incremented each time fetching is performed.
- the BHR 11 has the following difference information BHR0_REST0RE, BHR_RESTORE, and BHR2_REST0RE with respect to the three BHR information.
- BHR information is updated, the difference information is also updated.
- Each difference information is 2-bit information and has the following meaning.
- BHRO is determined by performing 1 shift on BHR2.
- FIG. 4 is a diagram illustrating an example of a change in BHR information in the information processing device according to the present embodiment.
- the figure shows an example in which all branch predictions are correct.
- instructions I1, 12 and I3 are branch instructions, and the respective branch prediction results are Not-Taken, Not-Taken and Taken.
- the three instructions (not shown) fetched before instruction I1 are not branch instructions, and the BHR information was not updated by these instructions.
- Instructions I 6, 17 and I 8 are sequentially executed from the branch destination of branch instruction I 3.
- the BHR information for instructions I 6, 17 and I 8 is the BHR information for instruction I 3 Based on (BHR 1: 000 1), this is obtained by shifting the predicted result (Take n) of instruction I 3 by 1 shift.
- the cycle using BHR information The cycle in which the branch prediction result and the branch prediction result are determined is different. Even if the branch prediction result is Taken, the BHR information can be accurately restored.
- the BHR information used at the time of fetching is transmitted from the instruction Fetch control unit 16 to the instruction decoding unit 17 together with other information necessary at the time of refetching such as difference information.
- Determining the state of the condition code register referenced by the branch instruction determines whether or not the branch instruction will actually branch.
- the branch instruction dedicated reservation station 18 determines from the condition code register whether the predicted branch direction matches the actual branch direction.
- the refetch request and the refetch start address, branch history information, etc. are sent to the instruction Fetch controller 16.
- the branch history information is used to restore the BHR information at the time of fetch.
- FIG. 5 is a diagram illustrating a change example of the BHR information in the information processing apparatus according to the present embodiment when the branch instruction predicted as Not-Take is actually Taken.
- the instruction I1 fetched in the A stage in cycle 1 is subjected to branch prediction by the U stage in cycle 3.
- the instructions I 2 and I 3 are processed as they are without being discarded.
- the branch instruction dedicated reservation station 18 reconfigures the instruction F etch control unit 16 and the BHR.
- the BHR reconstructing unit 19 informs the branch 19 of the branch prediction mistake, and the BHR reconstructing unit 19 restores the predicted I / O STaken as the predicted BHR information from the branch history information, and obtains the branch destination instruction I 4, Fetish of 15 and 16 Generate BHR information to be used for the switch.
- the BHR information of instruction I 4 is the BHR information used in instruction I 1 (BHRO: 0
- the BHR information (BHR 1: 001 0) used in the instruction I2 is restored, and the BHR information (BHR information (IHR) used in the instruction I3 is used from the BHR information used in the instruction I2 and the difference information.
- BHR 2: 0010) is restored.
- the position at which refetching is started differs depending on whether or not a carrier occurs.
- FIG. 6 is an explanatory diagram of a slot and a carrier.
- FIG. 6A shows a case where no carry occurs
- FIG. 6B shows a case where a carry occurs.
- instruction I5 is an instruction whose branch prediction predicts Taken and is actually Not-Taken. In this case, no carry occurs, and instructions I1 to 18 are refetched. You.
- the instruction I8 is an instruction whose branch prediction is predicted as Taken and is actually Not-Taken. In this case, a carry occurs, and the instructions I9 to I following the instruction I8 are executed. 16 is refetched. In the case of a delayed branch instruction, the instruction before the delay amount, and in the case of FIG. 8B, the instructions I7 and I6, the branch prediction was predicted to be Taken and was actually Not-Taken. Carriage occurs at the time of instruction.
- FIG. 5 is a diagram showing an example of a change in BHR information in a case where a predicted occurrence of a take and a not-taken actually occur, and no carrier occurs.
- the figure shows an example in which a branch instruction I1 predicts Taken and is actually Not-Taken.
- the branch instruction dedicated reservation station 18 executes the instruction F etch control unit 16 And notifies the BHR reconfiguration unit 19 of the branch prediction error and causes the re-fetch from the instruction I1. If no carry occurs, the BHR information used in instruction I1 is restored as shown in the shaded area in the figure, so if the reservation instruction dedicated to branch instruction 18 determines that the prediction is incorrect, the BHR is reconstructed.
- FIG. 8 is a diagram illustrating an example of a change in the BHR information when a call occurs, in the case where a take is predicted and actually a not-taken.
- branch instruction dedicated reservation station 18 When the branch condition of the instruction I1 is determined and the branch prediction is determined from the condition of the condition code register, it is determined that the branch instruction dedicated reservation station 18 has the instruction F etch control unit 16 and the BHR reconstruction unit. 19 Notifies the branch misprediction, and causes instruction 2 to re-fetch.
- the BHR reconfiguration unit 19 sets the BHR information BHR0: 0001 used for the instruction I1 in the branch history information and the difference information P_REIFCH.
- FIG. 9 is a block diagram showing a configuration example of the BHR 11 and its peripheral portion.
- the figure shows the related parts of the BHR 11 and the branch prediction control unit 15 and the instruction F etch control unit 16, and includes the BHR information storage registers 31-1 to 31-3 and the arithmetic units 32-1 to 32- 3 and the difference information storage registers 33-1 to 33-3 are in the BHR 11 of FIG. 2, the instruction F etch control unit 36 is the instruction F, the part related to the BHR of the etch control unit 16, and the other parts are the branch prediction control. Parts related to BHR in Part 15 and BHT 38 correspond to BHT12.
- BHR information storage registers 31-1 to 31-3 store three pieces of BHR information, BHRO, BHR1, and BHR2.
- the difference information storage registers 33-1 to 33-3 are 2-bit registers for storing the above-mentioned difference information BHR0_RESTORE, BHR1-RESTORE, and BHR2_REST0RE. These values are used to store the BHR information in the BHR information storage register 31. It is obtained by the arithmetic unit 32 using the value.
- BHR information BHR information storage register 31- 1 ⁇ 31_3 is, BHR0 during instruction Fuetchi, BHR 1 N BHR 2, BHR 0, - - ⁇ and used sequentially.
- the counter 34 stores the latest value among BHR 0, BHR 1 and BHR 2, that is, the latest BHR information is stored in which of the current BHR information storage registers 31-1 to 31-3. This is a power counter that indicates whether the BHR information has been updated and changes to BHR 0—> BHR 1—>BHR2—> BHR0 every time the BHR information is updated.
- the counter 35 indicates which of BHR0, BHR1, and BHR2 is to be used for the next fetch, and changes from BHR0 to BHR1 to BHR2 to BHR0 each time a fetch is performed. .
- the update circuit 37 When the BHR information is updated, the update circuit 37 generates updated BHR information from the latest BHR information, and sends it to the corresponding BHR information storage register 31. Also, the selector 39 is a BHR information storage register 31— :! Select the one that stores the latest BHR information indicated by the counter 34 out of 31 to 3 and keep The contents are output to the BHR update circuit 37.
- Selector 40 is the BHR information storage register 31; Select the one that stores the BHR information to be used for the font indicated by the counter 35 from among 31 to 3. BHT 38 is referenced using this BHR information.
- the IBR BHR 361 in the instruction F etch control unit 36 is sent to the reservation instruction dedicated reservation station 18 via the instruction decode unit 17 and the instruction F etch control unit 36 ibr—bhr.
- a buffer for storing information which holds BHR information used for referring to the BHT 38 and difference information from other BHR information.
- the ibr_bhr information is P_REFIDCH_BHR indicating the BHR information used to refer to the BHT 12 when the branch instruction was fetched, and the difference information between the BHR information and the other two BHR information P— REIFCH— BHR— RESTORE P— REIFCH JBHR—This is composed of REST0RE2 and P_REIFCH_BHR_REST0RE3.
- the relationship between P_REFIDCH_BHR and difference information is as follows: P__RE IFCH_BHR—REST0RE1 indicates the difference between P_REFIDCHJBHR and the next BHR information, and P—REIFCH_BHR_REST0RE1 indicates the difference information between the next BHR information and the next BHR information.
- P_REFIDCH_BHR is for BHR 1
- P_REIFCH_BHR—REST 0 RE1 has BHR2—RESTORE that indicates the difference between BHR 1 and B HR2
- P-REIFCH-B HR_REST0RE2 has BHR 2 and BHR0.
- BHR0_REST0RE indicating the difference is obtained.
- P_REIFCH_BHR_REST0RE3 is used only when a carry has occurred, and has a fixed value ('01').
- the buffer 363—1 to 363—3 buffer the value of the counter 34, and indicate the BHR information storage register 31 that stores the BHR information used to reference the BHT 38 in the A stage. Are held up to the T, U, and M stages by the buffers 363-1 to 363-3, and when the M stage is selected, the selector 362 selects the BHR0 to BHR2 in the BHR information storage register 31 and its difference information. Instruct. The instruction is fetched, and the BHR information used for referring to the BHT 38 is selected by the selector 362 together with the difference information when the instruction reaches the M stage, and is stored in the IBR BHR 361.
- the ibr_bhr information in the IBR BHR 361 is sent to the branch instruction dedicated reservation station 18 via the instruction decode unit 17.
- branch instruction dedicated reservation station 18 determines that the instruction is a branch prediction error
- branch history information including ibr_bhr information is sent to the BHR reconfiguration unit 19 together with the notification of the branch prediction error, and the BHR reconfiguration unit In 19, the BHR information is restored based on the branch history information.
- FIG. 10 is a diagram showing a schematic configuration of the BHR reconfiguration unit 19.
- the reconfiguration unit 19 includes a branch error type determination circuit 41 and a BHR restoration multiplexer 42.
- the branch miss type determination circuit 41 indicates the type of a branch instruction (conditional branch Z unconditional branch, etc.) and the type of prediction miss (branch direction prediction error / branch address error, etc.) sent together with the branch history information.
- the type of the branch miss is determined from the branch instruction type information, and is notified to the BHR restoration multiplexer 42.
- the BHR restoration multiplexer 42 restores the BHR information from the BHR information and the difference information in the branch history information according to the type notified from the branch error type determination circuit 41.
- FIG. 11 is a diagram showing the configuration of the 8: 1 reconstructing unit 19 in more detail.
- Branch instruction type information input to the branch miss type determination circuit 41 (b) In a, p-tiar_ma "tch, p-pred- taken, p_taken, p-aiways, p-has-not-taken, and p-lar One carry power.
- p—tiar—match is information indicating whether the target address to which the branch was taken was as expected.
- P _pred_taken the branch prediction for the branch instruction is information indicating whether or not it was Taken.
- p—taken is information indicating whether the branch instruction was actually taken.
- p_always indicates whether the branch instruction is an unconditional branch instruction It is information indicating whether or not.
- p-has-not-taken is information indicating whether there is a Not-Taken branch instruction before the branch instruction in the same s1ot as the branch instruction.
- p_iar_carry is 1-bit information indicating whether a carry occurs during refetching.
- the branch miss type determination circuit 41 determines the type of the branch miss by using (1) Taken prediction for a conditional branch, which is actually Not_Taken, and (2) the same for an unconditional branch. There is an instruction predicted as Not-Taken in (3) The same condition in an unconditional branch. There is no instruction predicted as Not-Taken before the instruction in s1ot. (4) Not-Taken prediction in a conditional branch. In actuality, carry occurs in the case of Taken, and (5) Carry does not actually occur in the case of Taken in Not_Taken prediction in the conditional branch. The determination as to whether the type is the above is made by the following logical expression.
- '& means AND
- T means OR
- p_taken-miss means ( ⁇ p__ti ar-match & p- pred-taken & p one taken)
- the BHR restoration multiplexer 4 2 has a 10-bit P—REFIDCH—BHR indicating the BHR information used for branch prediction of the instruction, a 2-bit difference information P_REIFCH—BHR—REST0R El, P_REIFCH—BHR—REST0RE2, and P—REIFCH_BHR_REST0RE3. Based on the determination result, the BHR information is restored to the type from the branch error type determination circuit 41.
- the BHR restoration multiplexer 42 transmits P_REFIDCH—BHR (b) by the shifter 4 21.
- the BHR information P_REFIDCH_BHR0 (A), P_REFIDCH_BHR1 (B) and P_REFIDCH_BHR2 (C) restored through the buffers 51, 52, 53 are output.
- the value obtained by shifting the output of the shifter 422 by 0 by the shifter 425 is selected by the selector 426, and the value is transmitted through the buffer 51, 52, and 53.
- P-REFIDCH_BHR0 (A) N P_REFIDCH—BHR1 (B) and P_REFIDCH_BHR2 (C) are output.
- the output of shifter 422 is selected by selector 426 and the restored BHR information P_REFIDCH—BHRO (A), P_REFIDCH—BHR1 (B), and P_REFIDCH—BHR2 ( C) is output.
- the selector 427 selects P_REFIDCH_BHR (b) and restores the BHR information (BHR 0) as P_REFIDCH—BHRO (d).
- BHR information restored by selecting the output of shifter 421 with selector 428 BHR 1
- BHR information restored by selecting the output of shifter 422 with selector 429 BHR2 (f).
- the output of shifter 421 is selected by selector 427 and output as P—REFIDCH_BHR0 (d), and the output of shifter 422 is selected by selector 428 and output Output as REFIDCH — BHRO (e), select the output of shifter 423 with selector 429, and output as P — REFIDCH_BHR2 (f).
- the BHR reconstructor 19 uses the branch history information to R0, BHR 1 s Restore BHR 2.
- the following describes the case where the prediction is Not Taken and the actual case is Taken, the case where the prediction is Taken, and the case where the actual case is Not Taken.
- mispredicted branch instruction is a conditional branch instruction (corresponds to type (1) in Figure 11)
- the difference information P—RE IFCH_BHR—REST0RE1 [1: 0] and P_REIFCH_BHR_REST0RE2 [1: 0] are applied in order to the BHR information PJEFIDCH_BHR [9: 0] used to refer to the BHT, followed by one shift.
- Let the generated BHR be BHR 0, BHR 1, BHR2.
- mispredicted branch instruction is an unconditional branch instruction (corresponding to types (2) and (3) in Figure 11)
- refetching starts from the instruction following the mispredicted branch instruction.
- FIG. 12 and FIG. 13 are diagrams illustrating an example of the operation of updating the BHR information in the information processing apparatus according to the present embodiment.
- Figure 12 shows the case where the branch prediction was correct.
- (1) it is assumed that fetch was started by refetching, and as a result of branch prediction, Not-Taken was predicted in the U stage.
- BHR2 is updated by 0 sh i ⁇ t to update BHR0
- the difference information BHRO—RESTORE is rewritten to '10'.
- BHR 0, which is the BHR information used in (1)
- difference information BHR1_REST0RE and BHR2_REST0RE are provided as ibr-bhr information at the same timing as when the instruction code arrives from the primary instruction cache 14 from the primary instruction cache 14 from the instruction F control unit 16. It is sent to the decoding unit 17.
- the next address of (1) is fetched in (2).
- BHR 1 which is the BHR information used in (2).
- BHR information BHR1 and the difference information BHR2-RESTORE and BHRO-RESTORE used in (2) are sent from the instruction F etch control unit 16 to the instruction decode unit 17 as ibr_bhr information.
- the instruction (5) at the branch destination is footed based on the result of the branch prediction in (2).
- the BHR2 used in (2) is used for 1 sift.
- FIG. 13 shows an example of the operation of updating the BHR information when a branch prediction error occurs.
- processing is performed in the same way as in Fig. 12 until the result of branch prediction is found. If it is found that the Taken prediction of (2) is out of the condition code condition register, re-fetching is performed from (3) 'at the actual branch destination.
- the BHR information is restored from BHR 0 from P_REIFCH—BHR in the ibr_bhr information sent to the instruction decoding unit 17 in (2), and P—REIFCH_BHR—RESTORE 1 (BHR1—RESTORE) is applied to this.
- P—REIFCH_BHR—REST0RE2 BH RO—RESTORE
- restore PHR0 by applying P-REIFCH-BHR_REST0RE1 (BHR1_REST0RE) to P-REIFCH-BHR and apply P-REIFCH-BHR_REST0RE2 (BHRO-RESTORE) to BHR Restore 1 and apply P_REIFCH_BHR—REST0RE3 (fixed value) to this to restore BHR 2.
- P-REIFCH-BHR_REST0RE1 BHR1_REST0RE
- P-REIFCH-BHR_REST0RE2 BHRO-RESTORE
- the information processing apparatus of the present embodiment can accurately restore the BHR information even if a branch prediction error occurs. Therefore, accurate branch prediction cannot be realized. You. Also, BHR information can be restored without using complicated circuit configurations and controls.
- BHR information is obtained by performing branch prediction in the information processing apparatus and based on the branch history for the branch prediction result.
- the present invention is not applied only to such BHR information, but other forms, such as BHR information, are used in a method of performing branch prediction at compile time and embedding the result in an instruction code.
- the present invention can be applied to the case where the count for the predicted content is performed.
- accurate branch prediction control can be performed even for an information processing device that takes a deep pipeline structure with a higher clock rate and requires several cycles for branch prediction control. Accuracy can be improved.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本発明による情報処理装置では、フェッチした命令に対する分岐ヒストリ情報を記憶しておく。そして分岐予測をミスしたとき、記憶しておいたこの分岐ヒストリ情報を用いて、分岐予測に用いられるBHR情報を復元する。これにより、分岐予測ミスが生じても正確にBHR情報を復元することが出来る。よって予測精度を向上することができる。
Description
明細書 情報処理装置 技術分野
本発明はパイプライン処理を行なう情報処理装置についての技術に関し、 更 に詳しくは分岐予測におけるパイプライン制御についての技術に関する。 背景技術
半導体テクノロジの進歩と共に高集積化、 高クロック化が進んでいるマイク 口プロセサに代表される情報処理装置では、 近年、 命令の実行処理速度を上げ る為に、 1つの命令を実行する際に行われる処理を複数のステージに分け、 各 ステージの処理機構を独立して並列動作させることにより処理の高速化を図る パイプライン技術が用いられている。 また多くの情報処理装置では、 このよう なパイプラインを複数備えるスーパスカラとよばれる手法が採用されており、 複数のパイプラインで投機的に命令が実行されている。
パイプライン処理を行なう場合、 いくつもの命令を流れ作業的に同時に実行 するので、 分岐命令でメモリ内の別の部分に分岐してしまうと、 処理を開始し ている後続の命令を全て破棄しなくてはならず、 処理効率が低下する。 これを 防ぐための手法として、 情報処理装置では分岐予測が行われる。 分岐予測では
、 分岐命令が分岐するかどうかを予測し、 分岐しそうな場合は分岐先の命令を パイプラインに流しこむ。
この分岐予測の手法の一つとして、 分岐の履歴を記録しておき、 この履歴に 基づいて分岐するかどうかを予測する方式がある。
この方式では、 B H T (Branch History Table)と呼ばれる分岐履歴に基づい
た分岐予測情報を記録した記憶領域を参照して分岐の強度を判断し、 分岐予測 を行なう。 この時 BHTを検索するタグとしては、 命令フェッチ時のアドレス (以下 F PCという)、 及びグローバルヒストリ レジスタ (以下 BHR(Branch History Register)という) 内の値 (以下 BHR情報という) の組み合わせを 使用する方式が一般的である。
図 1は、 分岐履歴を用いた方法による分岐予測の説明図である。
同図において、 BHT 1はフェッチされたァドレス屋 BHR情報に基づく不 図示のタグと、 そのタグに対応するァドレスの分岐情報において分岐が行われ たかどうかに基づいた 2bitの分岐予測情報を記録するテーブルである。 また BHR2は、 直近に実行された複数 (同図の場合 5つ) の分岐命令において、 どのような分岐予測が行われたかを示す履歴を記録する複数ビット (同図の場 合 5ビット) 構成のレジスタである。
分岐予測を行なう際、 情報処理装置内では、 フュツチされたプロダラムカゥ ンタ値 (FPC) とその時の BHR 2内の BHR情報からタグを生成し、 この タグを用いて BHT 1を検索して BHT 1から読み出した分岐予測情報から分 岐予測を行なう。
BHT 1には、 分岐予測情報として Strongly Not- Taken、 Weakly Not-Taken 、 Strongly Taken及び Weakly Takenの 4つのいずれかが記憶されている。 そし て、 BHT 1から読み出された分岐予測情報が、 Strongly Not- Takenまたは We akly Not- Takenの時は Not-Takenと予測され、 Strongly Taken又は Weakly Take nの時は Takenと予測される。 尚この B HT 1内の分岐予測情報は、 実際に分岐 が行われたかどうかの結果に基づいて順次更新されてゆく。 尚以下の説明では 、 分岐命令において、 分岐を行なう若しくは行なうと予測する場合は Taken, 分岐を行なわない若しくは行なわないと予測する場合は Not - Takenという。 また分岐予測の結果が求まると、 B H R 2では 1ビット左シフトされ、 予測
の結果が最下位のビットにセットされる。 例えば分岐 (Taken) と予測した場 合には 1力 非分岐 (Not-Taken)を予測した場合には 0がセットされる。 尚以 下の説明で B H Rの最下位ビットに 1がセットされてシフトされる場合を 1 s h i f t、 0がセットされてシフトされる場合を 0 s h i ί tという。
分岐命令において分岐が行われるかどうかを命令フェッチ時に予測しながら 処理を先に進める分岐予測の手法をパイプラインに適用した場合、 分岐予測を ミスした時には、 パイプラインの各スロットに現在の処理に関与しないステー ジが生じるいわゆるパイプラインバブルが生じ、 性能が大幅に低下する。 分岐予測では、 予測ミスによる性能に対するペナルティが大きいため、 性能 向上のためには、 予測精度を高めることが重要となる。 また予測制度を高める 為には、 分岐予測を外した場合に分岐予測前の状態を如何に再現するかも重要 になる。
分岐予測に対する技術としては、 様々な提案が成されているが、 例えば特開 平 6 — 3 0 1 5 3 4号公報 (情報処理装置) に開示された手法がある。
上記公報には、 分岐命令より前の命令を実行するパイプラインと分岐命令後 の命令を先行実行するパイプラインとを 2つの実行パイプラインを持つ構成が 開示されている。 そして分岐予測を外した場合は、 パイプラインを切り替える ことによつて状態を元に戻すことができる。
また分岐履歴を用いたものに対するものとして、 特開 2 0 0 1— 2 4 3 0 6 9号公報 (分岐予測装置及び分岐予測方法) には、 分岐予測情報の状態遷移が 実際の分岐動作とはずれるのに対処する為、 分岐予測の状態遷移をパイプライ ン上の同一分岐命令の分岐予測状態にバイパスする手法が開示されている。 分岐履歴を用いた方法では、 従来、 パイプラインの浅い構造の情報処理装置 においては、 B H T 1を検索して分岐予測を行ってから、 次のフェッチを行な うまでが 1サイクル内で行われるため、 F P C、 B H R情報の更新制御が容易
であった。 しかし近年、 動作クロックの高周波化によって性能を向上させるこ とが一般的になっており、 そのためにパイプラインを深くする制御構造が用レヽ られるようになっている。 そのため、 このような情報処理装置では、 命令フエ ツチ時の分岐予測が、 数サイクルに渡って行われるようになる。
またパイプラインが深い場合、 命令フェッチアドレス (F P C ) と B H R 1 内の値によって、 B H T 2を検索して分岐予測を行なう構成の情報処理装置で は、 命令フェッチを開始してからある一定のサイクル後に分岐予測を行なう制 御構造となる場合がある。 そして、 分岐予測をミスすると、 ミスした分岐命令 の直後に戻って再フェッチする必要があるが、 その為に分岐命令用のリザべ一 シヨンステーションに分岐命令に関する情報を格納しておき、 分岐ミスが確定 するとリザべーションステーションに格納された情報を用いて、 その分岐命令 をフェッチしたときの状態に戻してフヱツチをやり直す。
この時 B H R情報についても、 各パイプラインで更新制御を行な 1/、分岐命令 をフェッチした時点での値に戻すことになるが、 パイプラインが深く、 フェツ チが数サイクルにわたる場合、 B H R情報についてはフェッチした時点のパイ プラインの状態をすベて復元することはできず、 例えば B H R情報の復元処理 として、 分岐予測ミスが発生した時の B H R情報をそのまま用いて B H R情報 を復元する等の処理が行われる。
しかしこの場合には、 分岐命令をフエッチした時点の B H R情報が正確に復 元されるわけではないので、 分岐予測の精度が低下してしまうという問題があ る。 発明の開示
本発明による情報処理装置は、 分岐予測制御に複数サイクル要する情報処理 装置を前提とし、 分岐ヒストリ情報記憶手段及び B H R再構成手段を備える。
分岐ヒス トリ情報記憶手段は、 フ ツチした命令に対する分岐ヒス トリ情報 を記憶する。
B H R再構成手段と前記命令が分岐命令で、 該分岐命令に対する分岐予測を ミスしたとき、 前記分岐ヒストリ情報記憶手段に記憶された分岐ヒストリ情報 を用いて、 分岐予測に用いられる B H R情報を復元する。
これにより分岐予測ミスが生じても正確に B H R情報を復元することが出来 る。 よって予測精度を向上することができる。
また分岐ヒストリ情報を、 前記複数サイクル分の B H R情報に基づいた情報、 例えば前記フェッチした命令の分岐予測に用いられた B H R情報及ぴ他の B H R情報との差分情報を含む構成とすることにより、 また簡易な構成や制御によ つて正確な分岐予測制御を実現することが出来る。 図面の簡単な説明
図 1は、 分岐履歴を用いた方法による分岐予測の説明図である。
図 2は、 本実施例における情報処理装置の分岐予測に関する部分の構成を示 すブロック図である。
図 3は、 本実施例の情報処理装置における、 予測ミス時の B H R情報の復元 の原理を示す説明図である。
図 4は、 分岐予測が全て正しかった場合の本実施例における情報処理装置で の B H R情報の変化例を示す図である。
図 5は、 Not- Takenと予測した分岐命令が実際には Takenだった場合の本実施 例における情報処理装置での B H R情報の変化例を示す図である。
図 6 ( a ) はキャリーが発生しない場合、 図 6 ( b )はキャリーが発生する場 合を示した s 1 o t及びキャリーの説明図である。
図 7は、 Takenと予測して実際には Not - Takenだった場合で、 キヤリ一が発生
しなレ、場合の B H R情報の変化例を示す図である。
図 8は、 Takenと予測して実際には Not- Takenだった場合で、 キャリーが発生 する場合の B H R情報の変化例を示す図である。
図 9は、 BHR及びそのの周辺部分の構成例を示すプロック図である。
図 10は、 BHR再構成部の概略構成を示す図である。
図 1 1は、 BHR再構成部の構成をより詳細に示す図である。
図 12は、 分岐予測が正しかった場合の本実施例における情報処理装置での BHR情報の更新動作例を示す図である。
図 1 3は、 分岐予測ミスをした場合の本実施例における情報処理装置での B HR情報の更新動作例を示す図である。 発明を実施するための最良の形態
図 2は、 本実施例における情報処理装置の分岐予測に関する部分の構成を示 すブロック図である。 '
同図において、 本実施例における情報処理装置は、 BHR 1 1、 BHT 1 2 、 b r h i s (branch history) 13、 1次命令キャッシュ 14、 分岐予測制 御部 15、 命令デコード部 17、 分岐命令専用リザべーションステーシヨン 1 8、 BHR再構成部 1 9、 整数命令専用リザべーシヨンステーション 20、 浮 動小数点演算専用リザべーションステーション 21、 LOAD/S TORE命 令専用リザべーシヨンステーション 22、 整数演算器 23、 浮動小数点演算器 24及び 1次データキヤッシュ 25を備えている。
BHR 1 1は、 グローバルヒストリ レジスタで、 直近に実行された複数の分 岐命令 (本実施例の場合、 分岐命令 10個分) において、 Takenだった場合は '1'、 Not- Takenだった場合は '0' として記録された分岐履歴を保持する 1 0ビッ トのレジスタである。 また本実施例における情報処理装置では、 この B
HR 1 1が複数の BHR情報を記憶する構成を持つ。
BHT 1 2は、 フエツチされたァドレス等から生成される不図示のタグと、 そのタグに対応するァドレスにおいて実際に分岐が行われたかどうかに基づく 2ビットの分岐予測情報を記録するテーブルである。 本実施例では、 BHT 1 2は、 2ビット X 1 6 kアドレスの構成をもつものとする。 b r h i s l 3は 、 過去に実行された分岐命令についての情報を持つテーブルで、 参照されたァ ドレスの命令コードが分岐命令かどうか、 分岐命令の場合そのターゲットアド レスやどんな属性の分岐命令か等の情報が記録されている。 b r h i s 13は 、 アドレスから生成された T a gを記憶しており、 フェッチアドレスから生成 される T a gが b r h i s 1 3内の T a gとを比較し (T a g Ma t c h) 、 ヒットして b r h i s i 3から情報が読み出されると、 分岐予測制御部 1 5 はフェッチされた命令コードが分岐命令だと判断する。 1次命令キャッシュ 1 4は、 1次の命令キャッシュメモリで命令デコ一ド部 1 7はこの 1次命令キヤ ッシュ 14からデコードする命令コードを読み出す。
分岐予測制御部 1 5は、 分岐予測処理を司るもので、 FPCによる b r h i s l 3との T a g Ma t e hの結果から F P Cによって参照される命令が分 岐命令かどうかを調べ、 また同時に F P Cとその時の BHR 1 1内の BHR情 報によって BHT 1 2から読み出された分岐予測情報に基づいて分岐命令が Ta kenか Not-Takenかの分岐予測を行なう。 またその分岐予測の結果に基づいて、 BHR 1 1内の BHR情報を更新する。
命令 F e t c h制御部 1 6は、 分岐予測制御部 1 5による分岐予測結果等に 基づいてフェツチアドレスを生成するもので、 このフェツチアドレスを用いて 、 BHT 1 2、 b r h i s 13及ぴ一次命令キャッシュ 14が参照される。 命 令デコード部 1 7は、 フェッチされた命令コードを一次命令キャッシュ 14か ら読み出してデコードし、 その結果に基づいてフェッチされた命令を整数命令
専用リザべーションステーシヨン 20、 浮動小数点演算専用リザべーションス テーション 21及び LOADZSTORE命令専用リザべーションステーショ ン 22のいずれかに振り分ける。 分岐命令専用リザべーシヨンステーション 1 8は、 条件分岐命令の分岐条件となる各種状態を示すコンディションコードレ ジスタを監視して、 分岐予測制御部 1 5によって行われた分岐予測の結果がミ スしたかどうかを判断し、 ミスした場合には復元パス 26を介して予測ミスの 通知と共に BHR情報を復元するための分岐ヒストリ情報を命令 F e t c h制 御部 16及び B HR再構成部 1 9に送る。
BHR再構成部 19は、 分岐命令専用リザべーシヨンステーション 18から 予測ミスの通知を受けると分岐ヒストリ情報に基づいて、 BHR情報を予測を ミスした分岐命令がフェッチされた時の状態に戻す。 この BHR再構成部 1 9 の動作についての詳細は後述する。
整数命令専用リザべーションステーシヨン 20及び浮動小数点演算専用リザ ベーションステーション 21は、 それぞれ整数演算命令及び浮動小数点演算命 令用のリザべ一シヨンステーションで、 命令デコード部 17によって振り分け られた命令を蓄え、 順番の組換え等を行った後整数演算器 23若しくは浮動小 数点演算器 24に送出する。 また LOADZSTORE命令専用リザべーショ ンステーション 22は、 メモリへの LOADZSTORE命令用のリザべーシ ヨンステーションで、 命令デコード部 17によって流し込まれた命令に基づい て 1次データキャッシュ 25にアクセスする。
整数演算器 23は、 整数演算命令を処理する演算器、 浮動小数点演算器 24 は、 浮動小数点演算命令を実行処理する演算器である。 1次データキャッシュ 25は、 1次のデータキャッシュメモリで、 LOAD/STORE命令専用リ ザべーションステーション 22は、 LOAD/S TOR E命令に対してこの 1 次データキャッシュ 25に対してアクセスする。
命令 F e t c h制御部 16によって示されたフェッチ時のァドレス (FPC ) に基づいて、 一次命令キャッシュ 14.から読み出された命令コードは命令デ コード部 1 7によってデコードされる。 また分岐予測制御部 15ではその時の BHR 1 1内の BHR情報と F P Cを用いて BHT 1 2及ぴ b r h i s 1 3を 参照し、 分岐予測を行う。 そして分岐予測に用いた BHR情報は、 パイプライ ンのステージの進行と共に、 その差分情報等と共に分岐ヒストリ情報として命 令デコード部 1 7、 分岐命令専用リザべーシヨンステーション 18と転送され てゆく。 そして分岐命令専用リザべーシヨンステーション 1 8において、 分岐 予測ミスと判断され、 再フェッチを行なう際には、 分岐命令専用リザべーショ ンステーション 18は対応する分岐ヒストリ情報を BHR再構成部 19に送り 、 BHR再構成部 1 9はこの分岐ヒストリ情報に基づいて、 の分岐命令に対 レて正確に予測が行われた状態に BHR情報を復元する。
図 3は、 本実施例の情報処理装置における、 予測ミス時の B H R情報の復元 の原理を示す説明図である。
本実施例の情報処理装置では、 図 3 (a)に示すように、 各パイプライン毎に そのパイプラインの命令がフェッチされた時の BHR情報を示す分岐ヒストリ 情報が、 分岐予測制御部 1 5から、 命令 F e t c h制御部 1 6、 命令デコード 部 17、 分岐命令専用リザべーシヨンステーション 18と転送されてゆく。 分 岐命令専用リザべーシヨンステーション 18には、 複数の命令の分岐ヒストリ 情報が保持されており、 分岐命令専用リザべーションステーシヨン 18で分岐 予測ミスと判断されると、 その分岐命令の分岐ヒストリ情報が分岐ミスの通知 と共に BHR再構成部 19に送られる。 そして BHR再構成部 1 9では、 この 分岐ヒストリ情報に基づいて nサイクル分の BHR情報を復元して BHR 1 1 に戻し、 再フェッチの時には、 この復元された BHR情報に基づいて分岐予測 が行われる。 尚この nの値は、 パイプラインの構成や、 命令フェッチに要する
ステージ数等に基づいて決まる。
分岐ヒストリ情報としては、 様々なものが考えられるが、 例えば命令コード をフェッチしてから nサイクル分全ての BHR情報を分岐ヒストリ情報として 持つ構成が考えられる。 或いは、 図 3 (b)のようにフェッチした時の BHR情 報及びこの B H R情報とその後の nサイクル分の B H R情報との差分情報を分 岐ヒストリ.情報として持つ構成が考えられる。
図 3 ( b )に示した差分情報を持つ構成の場合、 ハードウエア資源を節約でき るので、 以下の例ではこの構成を用レ、た例を示す。
本実施例における情報処理装置は、 命令フェッチ部分において以下のような 3つのステージを持つパイプライン構造を備えるものとする。
Aステージで、 BHT 1 2、 b r h i s l 3、 一次命令キャッシュ 14を検 索する。
Tステージで、 b r h i s 1 3、 BHT 1 2の読み出しを行なう。
Uステージで、 b r h i s 1 3の T a g Ma t e hを行ない T a g Ma t c h情報に基づき、 B H T 12による分岐予測を行なう。
このように、 本実施例でのパイプラインでは、 Αステージで ΒΗΤ情報を用 いて BHT 12を参照し、 3サイクル後の Uステージで分岐予測の結果が確定 する。 よって BHR 1 1は、 3サイクル分の BHR情報 (BHR0、 BHR 1 、 BHR 2) 及びその差分情報を記憶する構成を持つ。
また BHR情報の更新条件としては様々なものが考えられるが、 今回の例で は次のような条件で更新されるものとする。
(1) 条件分岐命令で Takenと予測→1 s h i f t
(2) 条件分岐命令で Not- Takenと予測→0 s h i f t
(3) 分岐命令がない (b r h i s l 3にヒットしなレ、) →そのまま
(4) 非条件分岐命令で T a k e nと予測し、 前の s 1 o tに条件分岐命令が
ない場合→そのまま (s 1 o tについては後述する)
(5) 非条件分岐命令で T a k e nと予測し、 前の s 】 o tに条件分岐がある 場合— 0 s h i f t
各パイプライン間の BHR情報の依存関係が複雑になるため、 BHR 1 1は 、 3サイクル分の BHR情報 (BHR0、 BHR 1, BHR 2) を記憶し、 フ エッチ時に使用する BHR情報を BHR 0— >BHR 1一 >BHR 2— >BH R0と巡回させて更新し、 使用する。 また使用する BHR情報をポインタで示 し、 フェッチする毎にこのポインタをインクリメントさせる。
また、 BHR 1 1は 3つの BHR情報に対して以下のような互いの差分情報 BHR0_REST0RE、 BHRし RESTORE及び BHR2_REST0REを持ち、 BHR情報の更新時に はその差分情報も更新される。
BHR0_REST0RE[1: 0]: BHR2 [9: 0]→BHR0 [9: 0]の差分情報
BHR1— RESTORE [1: 0]: BHR0 [9: 0]→BHR1 [9: 0]の差分情報
BHR2_REST0RE[1: 0]: BHR1 [9: 0]→BHR2 [9: 0]の差分情報
各差分情報は 2ビットの情報で、 以下のような意味を持つ。
'11, : lshift
'01, : Oshift
'χθ' : 変更なし (Xは任意)
例えば BHR0— RESTOREが '11' の時は、 BHROは、 BHR 2を 1 s h i f t することによって求まる。
まず分岐予測結果が正しかった場合の BHR情報の更新動作を説明する。 上記した本実施例のパイプラインの構成の場合、 B H R情報を使って B H T 12を参照してから分岐予測結果が確定するまで 2サイクルかかる為に、 分岐 予測の結果が確定する 2サイクル前の BHR情報を使って BHT 1 2の検索を 行なうこととなる。 そして、 分岐予測の結果が Takenだった場合、 次の分岐先
ァドレスのフェッチを開始する時に 2サイクルのバブルが発生する。 また Not- Taken予測時には、 フェッチ時に参照に用いた BHR情報のみが更新され、 分 岐時、 及び再フヱッチ時には全ての B H R情報が同時に更新される。
図 4は、 本実施例における情報処理装置での B HR情報の変化例を示す図で ある。 同図は、 分岐予測が全て正しかった場合を例として示している。 尚同図 において命令 I 1、 1 2、 I 3は分岐命令で、 それぞれの分岐予測結果が Not - Taken, Not-Taken, Takenであったものとする。 また命令 I 1より前にフェツ チされた不図示の 3命令は分岐命令でなく、 これらの命令によっては B H R情 報は更新されなかったものとする。
図 4において、 まず周期 1で分岐命令 I 1がフェッチされ、 この分岐命令 I 1が BHR0の値 0001による BHT 1 2の参照結果から、 周期 3で Not - Ta kenと予測されたとする。 この間、 周期 2で分岐命令 1 2、 周期 3で分岐命令 I 3がフェッチされ、 また BHR 1の値 0001と BHR2の値 0001を用 いて BHT 12が参照される。
分岐予測の結果が Not- Takenの時には、 再フェッチの必要はないので命令 I 1及び I 2の予測結果が確定してもそのまま継続される。 しかし、 Taken予測 の時は、 分岐先の命令をフェッチしなければならないので、 再フェッチが行わ れ以降の命令が無効となり、 パイプラインバブルが生じる。 同図の場合、 命令 I 3に対する分岐予測結果が、 周期 4で Takenと確定し、 続く命令 I 4、 I 5 部分がパイプラインバブルとなる。
そして、 分岐命令 I 3の分岐先から命令 I 6、 1 7、 I 8が順にフユツチさ れるが、 この時命令 I 6、 1 7、 I 8に対する BHR情報は、 命令 I 3に対す る BHR情報 (BHR 1 : 000 1) を元にして、 命令 I 3の予測結果 (Take n) からこれを 1 s h i f tして求める。
このように本実例における情報処理装置では、 B H R情報を用いるサイクル
と分岐予測結果が確定するサイクルが異なっており、 分岐予測の結果が Taken となっても B H R情報を正確に復元することが出来る。
次に、 分岐予測をミスした場合の動作について説明する。
フェッチ時に用いられた B H R情報は、 差分情報等再フヱツチ時に必要とな る他の情報と共に、 命令 F e t c h制御部 1 6から命令デコード部 1 7を経て
、 分岐命令専用リザべーシヨンステーション.1 8へ送られる。
分岐命令が参照するコンディションコードレジスタの状態が確定することに よって、 分岐命令で実際に分岐が行われるかどうかが決まる。 分岐命令専用リ ザべーションステーション 1 8は、 コンディションコードレジスタの状態から 分岐予測による分岐方向と実際の分岐方向が一致したかどうかの判断を行ない
、 一致しなかった場合は、 再フェッチ要求と共に、 再フェッチ開始アドレス、 分岐ヒストリ情報等を命令 F e t c h制御部 1 6へ送る。 このうち分岐ヒスト リ情報は、 フェッチ時の B H R情報を復元するのに使用される。
図 5は、 Not- Takenと予測した分岐命令が実際には Takenだった場合の本実施 例における情報処理装置での B H R情報の変化例を示す図である。
図 5において、 命令 I 1は Not-Takenと予測されていたが、 コンディション コードレジスタの状態から実際は Takenであつたとする。
周期 1の Aステージでフェッチされた命令 I 1は、 周期 3の Uステージまで に分岐予測が行われる。 本例では、 Not-Takenと予測しているので、 命令 I 2 、 I 3は破棄されずそのまま処理されてゆく。
命令 I 1の分岐条件が確定し、 コンディションコードレジスタの状態から分 岐予測をミスしたのが分かると、 分岐命令専用リザべーションステーション 1 8は、 命令 F e t c h制御部 1 6及び B H R再構成部 1 9に分岐予測ミスを通 知し、 B H R再構成部 1 9では、 分岐ヒス トリ情報から命令 I 1力 STakenと予 測したような B H R情報を復元して、 分岐先の命令 I 4、 1 5、 1 6のフェツ
チに用いる BHR情報を生成する。
命令 I 4の BHR情報は、 命令 I 1で用いられた BHR情報 (BHRO : 0
001) と差分情報から命令 I 2で用いられた BHR情報 (BHR 1 : 001 0) を復元し、 この命令 I 2で用いられた BHR情報と差分情報から命令 I 3 で用いられた BHR情報 (BHR 2 : 0010) を復元する。 そしてこの命令
1 3で用いられた BHR情報に対して、 命令 I 1で Takenと予測されたかのよ うに 1 s h i ί tを行ない、 命令 I 4、 1 5、 I 6に用いる BHR情報を生成 する。 図 5では、 命令 I 1で用いられた BHR情報 (BHR0 : 000 1) に 対して差分情報 P_REIFCH— BHR_REST0RE1=BHR1一 REST0RE= 0 1を適用して BH R 1 : 0010を復元し、 これに差分情報 (P_REIFCH_BHR_REST0RE2=BHR2— RE ST0RE= 00を適用して BHR 2 : 0010を復元する。 そしてこの BHR2 : 0010に対して、 1 s h i f tして、 命令 I 4、 1 5、 I 6に用いる BHR 情報 BHRO : 0101、 BHR 1 : 0101、 BHR 2 : 0101が生成さ れる。 尚 P_REIFCH_BHR_REST0RE1及び P_REIFCH_BHR_REST0RE2については後述す る。
次に Takenと予測した分岐命令が実際には Not-Takenだった場合における B H R情報の復元について説明する。
Takenと予測して実際には Not- Takenだった場合は、 キヤリ一が発生する場合 と発生しない場合とで再フェッチを開始する位置が異なる。
本実施例の情報処理装置では、 命令コードを特定の数づっ同時にフ ツチす る。 予測の対象となった分岐命令がこのフェッチ単位の最後の命令 (対象とな つている分岐命令が遅延分岐命令の場合には、 遅延分前にずれた命令) である とき、 キャリーが発生し、 再フェッチを開始する位置がずれる。 従って、 BH R情報の復元処理もキャリーが発生する場合としない場合とで、 場合分けする 必要がある。
図 6は、 s l o t及ぴキヤリ一の説明図である。 本実施例の情報処理装置は 、 s 1 o t単位で命令コードを同時にフェッチする。 図 6の例では 1 s l o t =8としており、 同図(a)は、 キャリーが発生しない場合、 同図(b)はキヤリ 一が発生する場合を示している。
図 6 ( a )では、 命令 I 5が分岐予測が Takenと予測して実際には Not- Takenだ つた命令で、 この場合にはキャリーは発生せず、 命令 I 1〜 1 8が再フェッチ される。
また同図(b)では、 命令 I 8が分岐予測が Takenと予測して実際には Not-Tak enだった命令で、 この場合はキャリーが発生し、 命令 I 8に続く命令 I 9〜 I 16が再フェッチされる。 尚遅延分岐命令の場合には、 その遅延の大きさ分前 の命令、 同図(b)の場合命令 I 7や I 6が、 分岐予測が Takenと予測して実際 には Not-Takenだった命令の時にキヤリ一が発生する。
図 Ίは、 Takenと予測して実際には Not- Takenだった場合で、 キヤリ一が発生 しなレ、場合の B H R情報の変化例を示す図である。
同図は、 分岐命令 I 1で Takenと予測して実際には Not- Takenだった場合を例 として示している。
命令 I 1の分岐条件が確定し、 コンディションコードレジスタの状態から分 岐予測をミスし、 実際は Not- Takenだつたのが分かると、 分岐命令専用リザべ ーシヨンステーション 18は、 命令 F e t c h制御部 16及び BHR再構成部 19に分岐予測ミスを通知し、 命令 I 1の部分から再フェッチを行なわせる。 キャリーが発生しない場合、 同図の網かけ部分に示したように命令 I 1で用 いられた BHR情報から復元するので、 分岐命令専用リザべーシヨンステーシ ヨン 18が予測ミスと判断すると B HR再構成部 19では、 分岐ヒストリ情報 内の命令 I 1で用いられた BHR情報 BHR 0 : 0001に差分情報 P— REIFCH _BHR_REST0RE1= '01, を用いて命令 I 2で用いられた B H R情報 B H R 1 :
0010を復元し、 これに差分情報 P_REIFCH— BHR— REST0RE2= '00, を適用し て命令 I 3で用いられた BHR情報 BHR 1 : 0010を復元する。 そして命 令 I 1の位置から再フェッチが行われまた命令 I 1は Taken予測なので、 命令 I 3で用いられた BHR情報 BHR 1 : 0010に対して 1 s h i ί tして Β HR情報 0101を求め、 これを命令 14、 1 5、 1 6で用いられる BHR情 報 BHR0、 BHR 1及び BHR 2にする。
図 8は、 Takenと予測して実際には Not- Takenだった場合で、 キヤリ一が発生 する場合の B H R情報の変化例を示す図である。
命令 I 1の分岐条件が確定し、 コンディションコードレジスタの状態から分 岐予測をミスしたのが分かると、 分岐命令専用リザべーシヨンステーション 1 8は、 命令 F e t c h制御部 16及び B H R再構成部 1 9に分岐予測ミスを通 知し、 命令 2の部分から再フユツチを行なわせる。
キャリーが発生する場合、 同図で網かけで示した命令 I 2、 I 3、 I 4で用 いられた BHR情報を復元する。 分岐命令専用リザべーションステーション 1 8が予測ミスの通知を受けると、 B HR再構成部 1 9では、 分岐ヒストリ情報 内の命令 I 1で用 ヽられた B H R情報 BHR0 : 0001と差分情報 P_REIFCH _BHR_REST0RE1= '10' を用いて命令 I 2で用いられた B H R情報 B H R 1 : 0010を復元し、 これに差分情報 P_REIFCH— BHR_REST0RE2= '00, を適用し て命令 I 3で用いられた BHR情報 BHR 1 : 0010を復元する。
そして命令 I 3で用いられた BHR情報 BHR 1 : 001 0に対して Taken 予測なので 1 s h i f tして BHR情報 0101を求め、 これを命令 I 4、 I 5、 I 6で用いる BHR情報とする。 ただし、 命令 I 4の BHR情報は、 命令 I 1が Not- Takenだったので命令 I 3で用いられた B H R情報 B H R 1 : 00 10に差分情報 P— REIFCH— BHR— REST0RE1- '01' (固定値)を適用して B HR 0 : 0100となる。
図 9は、 BHR 1 1及びそのの周辺部分の構成例を示すブロック図である。 同図は、 BHR 1 1及ぴ分岐予測制御部 1 5と命令 F e t c h制御部 16の 関連部分を示しており、 BHR情報記憶レジスタ 31— 1〜31— 3、 演算器 32— 1〜 32— 3及び差分情報記憶レジスタ 33— 1〜 33— 3が図 2の B HR 1 1に、 命令 F e t c h制御部 36が命令 F e t c h制御部 16の BHR との関連部分、 他の部分が分岐予測制御部 1 5の BHRとの関連部分、 及ぴ B HT 38が BHT 1 2に対応する。
同図において BHR情報記憶レジスタ 31— 1〜3 1— 3は、 BHRO、 B HR 1及び BHR 2の 3つの BHR情報を記憶する。 また差分情報記憶レジス タ 33— 1〜 33— 3は、 上記した差分情報 BHR0_RESTORE、 BHR1— RESTORE及び BHR2_REST0REを記憶する 2ビッ トのレジスタで、 これらの値は B H R情報記憶 レジスタ 31内の BHR情報の値を用いて演算器 32によって求められる。 B H R情報記憶レジスタ 31— 1〜31_3内の BHR情報は、 命令フエッチ時 に BHR0、 BHR 1 N BHR 2、 BHR 0, - - ■ と順番に用いられる。 カウンタ 34は、 BHR 0、 B HR 1及び B H R 2の中で、 どれが最新の値 力、 すなわち、 現在 BHR情報記憶レジスタ 31—1〜31—3のうちどのレ ジスタに最新の B H R情報が格納されているかを示す力ゥンタで、 B H R情報 が更新される度に BHR 0— >BHR 1— >BHR2— >BHR0と変化する 。 カウンタ 35は、 次に BHR0、 BHR 1及び BHR 2のどれを用いてフエ ツチするかを示すカウンタで、 フェッチが行われる度に BHR 0 _>BHR 1 ->BHR 2->BHR 0と変化する。
8«[1 更新回路37は、 BHR情報が更新される際、 最新の BHR情報から 更新された BHR情報を生成し、 これを対応する BHR情報記憶レジスタ 3 1 に送る。 またセレクタ 39は BHR情報記憶レジスタ 31—:!〜 31— 3のう ちカウンタ 34が示す最新の BHR情報を記憶しているものを選択し、 保持内
容を BHR更新回路 37に出力する。
セレクタ 40は、 BHR情報記憶レジスタ 31—;!〜 31— 3のうちカウン タ 35が示すフヱツチに用いる BHR情報を記憶しているものを選択する。 こ の BHR情報が用いられて BHT 38は参照される。
命令 F e t c h制御部 36内の I BR B HR 36 1は、 命令 F e t c h制 御部 36力ゝら、 命令デコード部 1 7を介して分岐命令専用リザべーシヨンステ ーシヨン 1 8に送られる ibr— bhr情報を格納するバッファで、 BHT 38の参 照に用いた B H R情報及び他の B H R情報との差分情報を保持する。
ibr_bhr情報は、 分岐命令をフェッチした際、 BHT 12の参照に用いられ た B H R情報を示す P_REFIDCH_BHR及びその B H R情報と他の 2つの B H R情 報との差分情報 P— REIFCH— BHR— RESTORE P— REIFCH JBHR—REST0RE2及び P_REIFCH _BHR_REST0RE3から構成されてレヽる。 P_REFIDCH_BHRと差分情報の関係は、 P__RE IFCH_BHR— REST0RE1が P_REFIDCHJBHRと次の B H R情報との差分を示し、 P— REIF CH_BHR_REST0RE 1が次の B H R情報とその次の BHR情報との差分情報を示す 。 例えば P_REFIDCH_BHRが B H R 1対するものであった時、 P_REIFCH_BHR— REST 0RE1には B HR 1と B HR 2との差分を示す BHR2— RESTOREがなり、 P一 REIFCH一 B HR_REST0RE2には BHR 2と BHR0との差分を示す BHR0_REST0REがなる。 尚 P _REIFCH_BHR_REST0RE3は、 キャリーが発生した場合にのみ用いられるもので、 固定値 ('01') となっている。
ノ ッファ 363— 1〜 363— 3は、 カウンタ 34の値をバッファリングす るもので、 Aステージで BHT38の参照に用いられた BHR情報が格納され ている BHR情報記憶レジスタ 3 1を示すカウンタ値は、 バッファ 363— 1 〜363— 3によって、 T、 U、 Mステージまで保持され、 Mステージの時セ レクタ 362に BHR情報記憶レジスタ 3 1内の BHR0〜BHR 2とその差 分情報の選択を指示する。
命令がフェッチされ、 BHT 38の参照に用いられた BHR情報は、 その命 令が Mステージに達するとセレクタ 362によつて差分情報と共に選択され、 I BR BHR 36 1に格納される。 I BR B H R 36 1内の ibr_bhr情報 は、 命令デコード部 1 7を介して分岐命令専用リザべーションステーション 1 8に送られる。 分岐命令専用リザべーシヨンステーション 1 8で、 その命令が 分岐予測ミスと判断されると ibr_bhr情報を含む分岐ヒストリ情報が分岐予測 ミスの通知と共に BHR再構成部 19に送られ、 BHR再構成部 1 9では、 分 岐ヒストリ情報を元に BHR情報を復元する。
図 10は、 B H R再構成部 1 9の概略構成を示す図である。
8^[ 再構成部1 9は、 分岐ミス種別判定回路 41と BHR復元マルチプレ クサ 42から構成される。
分岐ミス種別判定回路 41は、 分岐ヒストリ情報と共に送られてくる分岐命 令の種類 (条件分岐 Z非条件分岐等) や予測ミスの種類 (分岐方向の予測ミス /分岐ァドレスのミス等) を示す分岐命令種別情報から分岐ミスの種別を判別 し、 BHR復元マルチプレクサ 42に通知する。 BHR復元マルチプレクサ 4 2は、 分岐ミス種別判定回路 41から通知された種別に応じて分岐ヒストリ情 報内の B H R情報や差分情報から B H R情報を復元する。
図 11は、 8«:1再構成部1 9の構成をより詳細に示す図である。
分岐ミス種別判定回路 41に入力される分岐命令種別情報 (b) aには、 p— tiar_ma"tch、 p一 pred— taken、 p_taken、 p一 aiways、 p—has— not— taken及び p— lar一 carry力 あな。
p— tiar— matchは、 分岐先であるターゲットアドレスが予測どおりだつたかど うかを示す情報である。 P_pred_takenは、 分岐命令に対する分岐予測が Taken だったかどうかを示す情報である。 p— takenは、 分岐命令が実際には Takenだつ たかどうかを示す情報である。 p_alwaysは、 その分岐命令が無条件分岐命令か
どうかを示す情報である。 p一 has— not— takenは、 その分岐命令と同じ s 1 o t 内のその分岐命令より前に Not-Takenだつた分岐命令があるかどうかを示す情 報である。 p_iar_carryは、 再フェッチの際キャリーが発生するかどうかを示 す 1ビットの情報である。
分岐ミス種別判定回路 4 1は、 これらの情報から分岐ミスの種別を、 (1)条 件分岐で Taken予測で実際は Not_Taken、 (2)非条件分岐で同一 s 1 o t内でそ の命令より前に Not- Takenと予測した命令がある、 (3)非条件分岐で同一 s 1 o t内でその命令より前に Not- Takenと予測した命令がない、 (4)条件分岐で Not- Taken予測で実際は Takenの場合でキヤリ一が発生する、 (5)条件分岐で Not_Tak en予測で実際は Takenの場合でキャリーが発生しない、 の 5つに判別する。 上記種別かどうかの判定は、 以下の論理式によって行われる。 尚下記式で ' &, は AN D、 T は O R、 '~' は否定を意味し、 また p_taken— missは (~p__ti ar—match&p— pred—taken&p一 taken) |、 p_pred_taken&p_taken ヽ p一 taken一 miss は p_pred_taken& p— takenを表す。
(1) p一 taken一 miss & ~p_always
(2) p一 taken— miss &p— always & p一 has— not— taken
(3) p— taken— miss &p— always& ~p— has— not一 taken
(4) p— taken— miss &~p_ iar_carry
(5) p— taken— miss & p—iar一 carry
B H R復元マルチプレクサ 4 2は、 その命令の分岐予測に用いた B H R情報 を示す 1 0ビットの P— REFIDCH— BHR、 2ビットの差分情報 P_REIFCH— BHR— REST0R El、 P_REIFCH— BHR— REST0RE2及び P— REIFCH_BHR_REST0RE3を用い、 分岐ミス種別 判定回路 4 1からの種別に判定結果に基づいて、 B H R情報を復元する。
分岐ミス種別判定回路 4 1から分岐ミスが種別 (1 ) と通知された時は、 B H R復元マルチプレクサ 4 2は、 P_REFIDCH— BHR ( b ) をシフタ 4 2 1によつ
て P— REIFCH_BHR— REST0RE1 (c) に基づいてシフトし、 これをシフタ 422に よって P_REIFCH— BHR_REST0RE2 (d) に基づいてシフトした値を、 シフタ 42 4で 1 s h i f tした値をセレクタ 426で選択し、 バッファ 5 1、 52、 5 3を介して復元された BHR情報 P_REFIDCH_BHR0 (A)、 P_REFIDCH_BHR1 (B ) 及び P_REFIDCH_BHR2 (C) を出力する。 分岐ミス種別判定回路 41から分岐 ミスが種別 (2) と通知された時は、 シフタ 422の出力をシフタ 425で 0 s h i f tした値をセレクタ 426で選択し、 ノ ッファ 51、 52、 53を介 して復元された BHR情報 P-REFIDCH_BHR0 (A)N P_REFIDCH— BHR1 (B) 及び P _REFIDCH_BHR2 (C) を出力する。 また分岐ミスが種別 (3) と通知された時 は、 シフタ 422の出力をセレクタ 426で選択して復元された BHR情報 P_ REFIDCH— BHRO (A)、 P_REFIDCH— BHR1 (B) 及び P_REFIDCH— BHR2 (C) を出力 する。
分岐ミス種別判定回路 41から分岐ミスが種別 (4) と通知された時は、 セ レクタ 427で P_REFIDCH_BHR (b) を選択して復元された B H R情報 (BH R 0) P_REFIDCH— BHRO (d) として出力し、 セレクタ 428でシフタ 421の 出力を選択して復元された BHR情報 (BHR 1) P_REFIDCH— BHRO (e) とし て出力し、 セレクタ 429でシフタ 422の出力を選択して復元された BHR 情報 (BHR2) P_REFIDCH_BHR2 (f ) として出力する。 また分岐ミスが種別 (5) と通知された時は、 セレクタ 427でシフタ 421の出力を選択して P— REFIDCH_BHR0 (d) として出力し、 セレクタ 428でシフタ 422の出力を選 択して P-REFIDCH— BHRO (e) として出力し、 セレクタ 429でシフタ 423の 出力を選択して P— REFIDCH_BHR2 ( f ) として出力する。
次に分岐ミスによる再フヱッチ時の B H R情報の復元の仕方について説明す る。
再フェッチ時には、 分岐ヒス トリ情報を用いて BHR再構成部 1 9が、 BH
R0、 BHR 1 s BHR 2を復元する。 以下に予測が Not Taken, 実際が Taken の時と予測が Takenの時と、 実際が Not Takenの時とに場合分けして説明する。
(1) Not Takenと予測し実際は Takenだった場合、 及び Taken予測で実際も Taken だったが分岐先ァドレスが誤っていた場合
この場合、 予測ミスした分岐命令の分岐先から再フ ツチを開始する。
(1 - 1)予測ミスした分岐命令が条件分岐命令の場合 (図 1 1の種別 (1) に該 当)
B HTを参照するのに用いた B HR情報 PJEFIDCH_BHR[9:0]に差分情報 P— RE IFCH_BHR— REST0RE1 [1:0]、 P_REIFCH_BHR_REST0RE2 [1: 0]を順に適用し、 さらに 1 s h i f tを行って生成した BHRを BHR 0、 BHR 1、 BHR2とする 。 また差分情報 BHR0_REST0RE、 BHR1一 RESTORE, BHR2_REST0REへは '00, を書き 込む。
(1 - 2)予測ミスした分岐命令が非条件分岐命令の場合 (図 1 1の種別 (2)、 ( 3) に該当)
P_REFIDCH_BHR [9: 0]に P_REIFCH_BHR_REST0RE1 [1:0]、 P_REIFCH_BHR— RESTORE 2[1:0] を順に適用する。 そして p— has一 not— takenが真のとき (s 1 o t内にそ の分岐命令より前に Not- Takenだった分岐命令がある場合) 0 s h i f tした 後そのまま生成した BHRを BHR 0、 BHR 1、 BHR 2とし、 has— not_ta kenが真で無い場合はそのまま生成した BHRを BHR 0、 BHR 1、 BHR 2とする。 また差分情報 BHRO— REST0RE、 BHR1— RESTORE, BHR2— RESTOREへは '00 ' を書き込む。
(2) Takenと予測し実際は Not Takenだつた場合
この場合、 予測ミスした分岐命令の次の命令から再フェッチ開始する。
(2 - 1)予測ミスした分岐命令がフェッチ単位の最後の命令ではなく、 キャリー が発生しない場合 (図 1 1の種別 (4) に該当)
P— REIFCH— 81«[9:0]を8«[1 (その分岐命令が用いていた B H R (BHR 0/1/2)) へ、 P— REIFCH— BHR [9: 0]に P_REIFCH— BHR_REST0RE1 [1:0]を適用し た値を BHR (X+ 1) (X= 2のときは X+ 1 =0) へ、 その BHR (X + 1) に PJREIFCH— BHR— REST0RE2[1:0]を適用した値を BHR (X+ 2) (X= 1 のとき X+ 2 = 0、 X=2のとき X+ 2= l) へそれぞれ書き込む。 また差分 情報 BHR0_REST0RE、 BHR1— REST0RE、 BHR2— RESTOREへは '00, を書き込む。
(2-2)予測ミスした分岐命令ァドレスがフェッチ単位の最後であり、 キャリー が発生する場合 (図 1 1の種別 (5) に該当)
P_REIFCH_BHR[9:0]に P_REIFCH— BHR_REST0RE1 [1 :0]を適用した値を B H R X (その分岐命令が用いていた BHR (BHR 0/1/2)) へ、 P_REIFCH_BHR[ 9:0]に P— REIFCH_BHR_REST0RE2[1:0]を適用した値を BHR (X+ 1) (X= 2 のときは X+1 = 0) へ、 その BHR (X+ 1) に P—REIFCH— BHR一 REST0RE3[1: 0]を適用した値を BHR2へそれぞれ書き込む。 また差分情報 BHR0_REST0RE、 BHR1 — REST0RE、 BHR2— RESTOREへは '00' を書き込む。
図 12及び図 13は、 本実施例における情報処理装置での B H R情報の更新 動作例を示す図である。
図 1 2は分岐予測が正しかった場合を示しており、 (1) で再フェッチによ り、 フェッチを開始し分岐予測の結果、 Uステージで Not- Takenと予測したと 'する。 この予測結果に基づいて最新の BHR情報である BHR 2を 0 s h i ί tして BHR 0を更新し、 また差分情報 BHRO— RESTOREを '10' に書き換える 。 そして、 (1) で用いた BHR情報である BHR 0と差分情報 BHR1_REST0RE 及び BHR2_REST0REは、 ibr— bhr情報として命令 F e t c h制御部 1 6から一次 命令キャッシュ 14から命令コードが届くのと同じタイミングで命令デコード 部 17へ送られる。
またこの間 (2) で (1) の次のアドレスをフェッチし、 この命令は Taken
と予測したとする。 Taken予測の場合には、 (2) で用いた B H R情報である B HR 1を元に 3つ全部の BHR情報を書き換える。 また (2) で用いた BHR 情報である B H R 1と差分情報 BHR2— RESTORE及び BHRO— RESTOREが、 ibr_bhr情 報として命令 F e t c h制御部 16から命令デコード部 17へ送られる。
(2) で Takenと予測するまでの間、 (3)、 (4) がフェッチされるが、 これ らは (2) 力 STaken予測となった時点で破棄され、 B H R情報の更新や ibr_bhr 情報の登録は行われない。
(2) の分岐予測の結果に基づいて分岐先の命令 (5) がフ ツチされる。 この (5) のフェッチには、 (2) で用いられた BHR 2を 1 s h i f tした ものが用いられる。
図 1 3は分岐予測ミスをした場合の BHR情報の更新動作例を示している。 図 1 3では、 (1)、 (2) では分岐予測の結果が判明するまでは、 図 1 2の 時と同様に処理が行われる。 コンディションコードレジスタの状態から (2) の Taken予測が外れたことが判明すると、 実際の分岐先の (3)' から再フヱッ チを行なう。
この時 BHR情報は、 (2)で命令デコード部 1 7に送られた ibr_bhr情報内 の P_REIFCH— BHRから B H R 0を復元し、 これに P—REIFCH_BHR— RESTORE 1 (BHR1— R ESTORE)を適用して B H R 1を復元し、 更にこれに P— REIFCH_BHR— REST0RE2 (BH RO— RESTORE) を適用して B HR 2を復元する。 尚キャリーが発生する場合には 、 P— REIFCH— BHRに P— REIFCH— BHR_REST0RE1 (BHR1_REST0RE)を適用して B H R 0 を復元し、 これに P— REIFCH— BHR_REST0RE2 (BHRO— RESTORE) を適用して BHR 1を復元し、 更にこれに P_REIFCH_BHR— REST0RE3 (固定値) を適用して BHR 2を復元する。
このように、 本実施例の情報処理装置では、 分岐予測ミスが生じても正確に BHR情報を復元することが出来る。 その為、 精度の高い分岐予測を実現でい
る。 また複雑な回路構成や制御を用いなくても B H R情報の復元を実現するこ とが出来る。
尚本実施例の情報処理装置では、 図 1に示したように B H R情報は、 情報処 理装置内で分岐予測を行い、 この分岐予測結果に対する分岐履歴に基づいたも のを用いているが、 本発明はこのような B H R情報のみに適用されるものでは なく、 他の形式のもの、 例えば B H R情報が、 コンパイル時に分岐予測を行つ て命令コードにその結果を埋め込む方式において、 この埋め込まれた予測内容 に対するカウントを行ったものに対しても適用することが出来る。 産業上の利用可能性
本発明に拠れば、 高クロック化に伴って深い Pipeline構造をとり、 分岐予 測制御に数サイクル要するような情報処理装置であっても、 正確な分岐予測制 御を行うことができるため、 予測精度を向上することができる。
また制御や構成の簡易さを保ちながら正確な分岐予測制御を実現することが 出来 。
Claims
1 . 分岐予測制御に複数サイクル要する情報処理装置において、
フェッチした命令に対する分岐ヒストリ情報を記憶する分岐ヒストリ情報記 憶手段と、
前記命令が分岐命令で、 該分岐命令に対する分岐予測をミスしたとき、 前記 分岐ヒストリ情報記憶手段に記憶された分岐ヒストリ情報を用いて、 分岐予測 に用いられる B H R情報を復元する B H R再構成手段と、
を備えることを特徴とする情報処理装置。
2 - 前記分岐ヒストリ情報は、 前記複数サイクル分の B H R情報に基づいた情 報を含むことを特徴とする請求項 1に記載の情報処理装置。
3 . 前記分岐ヒストリ情報は、 前記フェッチした命令の分岐予測に用いられた B H R情報及び他の B H R情報との差分情報を含むことを特徴とする請求項 2 に記載の情報処理装置。
4 . 前記分岐予測制御に 3サイクル要し、 分岐ヒス トリ情報は、 フェッチした 命令の分岐予測に用いられた第 1の B H R情報、 該第 1の B H R情報の次に用 いられた第 2の B H R情報と該第 1の B H R情報の差分を示す第 1の差分情報 、 前記第 2の B H R情報の次に用いられた第 3の B H R情報と前記第 2の B H R情報の差分を示す第 2の差分情報を含むことを特徴とする請求項 4に記載の 情報処理装置
5 . 条件分岐に対して Takenと予測し実際は Not- Takenだった時、 前記 B H R再
構成手段は、 前記分岐ヒストリ情報内の前記第 1の B HR情報に前記第 1の差 分情報及び第 2の差分情報を適用して求めて B HR情報を復元後の前記第 1の BHR情報、 前記第 2の B H R情報及び前記第 3の B H R情報とすることを特 徴とする請求項 4に記載の情報処理装置。
6. 非条件分岐に対して同一 s 1 o t内でその命令より前に Not- Takenと予測 した命令がある時、 前記 BHR再構成手段は、 前記分岐ヒス トリ情報内の前記 第 1の B HR情報に前記第 1の差分情報及び第 2の差分情報を適用し、 更に 1 s h i f tして求めた BHR情報を復元後の前記第 1の BHR情報、 前記第 2 の B H R情報及び前記第 3の B H R情報とすることを特徴とする請求項 4に記 載の情報処理装置。
7. 非条件分岐に対して同一 s 1 o t内でその命令より前に Not- Takenと予測 した命令がない時、 前記 BHR再構成手段は、 前記分岐ヒストリ情報内の前記 第 1の B HR情報に前記第 1の差分情報及び第 2の差分情報を適用し、 更に 0 s h i f tして求めた BHR情報を復元後の前記第 1の BHR情報、 前記第 2 の B H R情報及び前記第 3の B H R情報とすることを特徴とする請求項 4に記 載の情報処理装置。
8. 条件分岐に対して Not- Takenと予測し実際は Takenの場合でキャリーが発生 する時、 前記 BHR再構成手段は、 前記分岐ヒス トリ情報內の第 1の BHR情 報を復元後の第 1の B H R情報、 前記分岐ヒストリ情報内の第 1の B H R情報 に対して前記第 1の差分情報を適用して求めた B HR情報を復元後の第 2の B HR情報、 前記分岐ヒストリ情報内の第 1の BHR情報に対して前記第 1の差 分情報及び第 2の差分情報を適用して求めた B HR情報を復元後の第 3の B H
R情報とすることを特徴とする請求項 4に記載の情報処理装置。
9. 条件分岐に対して Not-Takenと予測し実際は Takenの場合でキャリーが発生 しない時、 前記 BHR再構成手段は、 前記分岐ヒス トリ情報内の第 1の BHR 情報に対して前記第 1の差分情報を適用して求めた B HR情報を復元後の第 1 の BHR情報、 前記分岐ヒス トリ情報内の第 1の BHR情報に対して前記第 1 の差分情報及び第 2の差分情報を適用して求めた B HR情報を復元後の第 2の BHR情報、 前記分岐ヒストリ情報内の第 1の BHR情報に対して前記第 1の 差分情報、 第 2の差分情報及び固有値の第 3の差分情報を適用して求めた B H R情報を復元後の第 3の B H R情報とすることを特徴とする請求項 4に記載の 情報処理装置。
10. 前記 BHR情報を前記複数サイクル分記憶する BHR情報記憶手段を更 に備え、 前記 BHR情報を更新する際、 前記 BHR情報記憶手段内の複数の B HR情報を順番に更新することを特徴とする請求項 1に記載の情報処理装置。
1 1. 前記 BHR情報記憶手段内の複数の BHR情報の差分情報を記憶する差 分情報記憶手段を更に備え、 前記差分情報は前記 B H R情報記憶手段内の B H R情報が更新される際に共に更新されることを特徴とする請求項 10に記載の 情報処理装置。
12. 前記 B H R再構成手段は、 前記分岐ヒス トリ情報から分岐予測ミスの種 別を判別し、 該種別に基づいて前記 BHR情報を復元することを特徴とする請 求項 1に記載の情報処理装置。
1 3. 前記 BHR再構成手段は、 前記分岐ヒストリ情報から前記分岐予測ミス 力 条件分岐に対して Takenと予測で実際は Not - Taken、 非条件分岐に対して同 一 s 1 o t内でその命令より前に Not- Takenと予測した命令がある、 非条件分 岐に対して同一 s 1 o t内でその命令より前に Not - Takenと予測した命令がな い、 条件分岐に対して Not - Takenと予測し実際は Takenの場合でキヤリ一が発生 する、 及び条件分岐に対して Not- Takenと予測し実際は Takenの場合でキャリー が発生しない、 の 5つの種別に対応するかどうかを判別することを特徴とする 請求項 1 2記載の情報処理装置。
14. フェッチした分岐命令の分岐予測を行う為の分岐予測情報をフェツチア ドレスに対応させて記憶するテーブルを更に備え、 前記 BHR情報は、 前記テ 一ブルを参照する際に用いられることを特徴とする請求項 1に記載の情報処理 装置。
1 5. 前記分岐予測制御に 3サイクル要し、 前記 BHR情報を 3つ記憶する B HR情報記憶手段を更に備えることを特徴とする請求項 1に記載の情報処理装 置。
1 6. 分岐予測制御に複数サイクル要する情報処理装置で用いられる分岐予測 制御装置であって、
フェッチした命令に対する分岐ヒストリ情報を記憶する分岐ヒストリ情報記 憶手段と、
前記命令が分岐命令で、 該分岐命令に対する分岐予測をミスしたとき、 前記 分岐ヒストリ情報記憶手段に記憶された分岐ヒス トリ情報を用いて、 分岐予測 に用いられる BHR情報を復元する BHR再構成手段と、
を備えることを特徴とする分岐予測制御装置。
17. 分岐予測制御に複数サイクル要する情報処理装置で用いられ、 分岐予測 ミスの際、 分岐予測に用いられる BHR情報を復元する B H R再構成装置であ つて、
分岐予測ミスの通知と共に分岐予測ミスした命令に対する分岐ヒストリ情報 を受け取る手段と、
前記命令が分岐命令で、 該分岐命令に対する分岐予測をミスしたとき、 前記 分岐ヒス トリ情報記憶手段に記憶された分岐ヒス トリ情報を用いて、 分岐予測 に用いられる BHR情報を復元する手段と、
を備えることを特徴とする BHR再構成装置。
18. 分岐予測制御に複数サイクル要する情報処理装置で用いられ、 分岐予測 ミスの際、 分岐予測に用いられる BHR情報を復元する B H R情報復元方法で あって、
フェツチした命令に対する分岐ヒストリ情報を記憶し、
前記命令が分岐命令で、 該分岐命令に対する分岐予測をミスしたとき、 記憶 した分岐ヒストリ情報を用いて、 分岐予測に用いられる BHR情報を復元する ことを特徴とする分岐予測制御装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004567534A JP3802038B2 (ja) | 2003-01-30 | 2003-01-30 | 情報処理装置 |
PCT/JP2003/000901 WO2004068337A1 (ja) | 2003-01-30 | 2003-01-30 | 情報処理装置 |
US11/071,306 US7647488B2 (en) | 2003-01-30 | 2005-03-04 | Information processing device with branch history restoration |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2003/000901 WO2004068337A1 (ja) | 2003-01-30 | 2003-01-30 | 情報処理装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/071,306 Continuation US7647488B2 (en) | 2003-01-30 | 2005-03-04 | Information processing device with branch history restoration |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2004068337A1 true WO2004068337A1 (ja) | 2004-08-12 |
Family
ID=32800820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2003/000901 WO2004068337A1 (ja) | 2003-01-30 | 2003-01-30 | 情報処理装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7647488B2 (ja) |
JP (1) | JP3802038B2 (ja) |
WO (1) | WO2004068337A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009037302A (ja) * | 2007-07-31 | 2009-02-19 | Nec Corp | 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム |
WO2012127666A1 (ja) * | 2011-03-23 | 2012-09-27 | 富士通株式会社 | 演算処理装置、情報処理装置及び演算処理方法 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7707398B2 (en) * | 2007-11-13 | 2010-04-27 | Applied Micro Circuits Corporation | System and method for speculative global history prediction updating |
US9032191B2 (en) | 2012-01-23 | 2015-05-12 | International Business Machines Corporation | Virtualization support for branch prediction logic enable / disable at hypervisor and guest operating system levels |
US8935694B2 (en) | 2012-01-23 | 2015-01-13 | International Business Machines Corporation | System and method for selectively saving and restoring state of branch prediction logic through separate hypervisor-mode and guest-mode and/or user-mode instructions |
US9535701B2 (en) | 2014-01-29 | 2017-01-03 | Telefonaktiebolaget Lm Ericsson (Publ) | Efficient use of branch delay slots and branch prediction in pipelined computer architectures |
US9430245B2 (en) * | 2014-03-28 | 2016-08-30 | Telefonaktiebolaget Lm Ericsson (Publ) | Efficient branch predictor history recovery in pipelined computer architectures employing branch prediction and branch delay slots of variable size |
US9639370B1 (en) * | 2015-12-15 | 2017-05-02 | International Business Machines Corporation | Software instructed dynamic branch history pattern adjustment |
US20220129763A1 (en) * | 2020-10-23 | 2022-04-28 | Intel Corporation | High confidence multiple branch offset predictor |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06301534A (ja) | 1993-04-19 | 1994-10-28 | Oki Electric Ind Co Ltd | 情報処理装置 |
US5644742A (en) * | 1995-02-14 | 1997-07-01 | Hal Computer Systems, Inc. | Processor structure and method for a time-out checkpoint |
US5887152A (en) * | 1995-04-12 | 1999-03-23 | Advanced Micro Devices, Inc. | Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions |
US5915110A (en) * | 1996-07-26 | 1999-06-22 | Advanced Micro Devices, Inc. | Branch misprediction recovery in a reorder buffer having a future file |
US6256729B1 (en) * | 1998-01-09 | 2001-07-03 | Sun Microsystems, Inc. | Method and apparatus for resolving multiple branches |
US6546481B1 (en) * | 1999-11-05 | 2003-04-08 | Ip - First Llc | Split history tables for branch prediction |
US6560696B1 (en) * | 1999-12-29 | 2003-05-06 | Intel Corporation | Return register stack target predictor |
JP3502592B2 (ja) * | 2000-03-02 | 2004-03-02 | 株式会社東芝 | 分岐予測装置 |
US6519730B1 (en) * | 2000-03-16 | 2003-02-11 | Fujitsu Limited | Computer and error recovery method for the same |
US6948054B2 (en) * | 2000-11-29 | 2005-09-20 | Lsi Logic Corporation | Simple branch prediction and misprediction recovery method |
US8285976B2 (en) * | 2000-12-28 | 2012-10-09 | Micron Technology, Inc. | Method and apparatus for predicting branches using a meta predictor |
JP4027620B2 (ja) | 2001-06-20 | 2007-12-26 | 富士通株式会社 | 分岐予測装置、プロセッサ、及び分岐予測方法 |
US6898699B2 (en) * | 2001-12-21 | 2005-05-24 | Intel Corporation | Return address stack including speculative return address buffer with back pointers |
-
2003
- 2003-01-30 WO PCT/JP2003/000901 patent/WO2004068337A1/ja active Application Filing
- 2003-01-30 JP JP2004567534A patent/JP3802038B2/ja not_active Expired - Fee Related
-
2005
- 2005-03-04 US US11/071,306 patent/US7647488B2/en not_active Expired - Fee Related
Non-Patent Citations (2)
Title |
---|
K. Skadron, M. Martonosi, D.W. Clark, "Speculative Updates of Local and Global Branch History: A Quantative Analysis", Journal of Instruction-Level Parallelism, Vol. 2, (2000 January), (http://www.jilp.org/vol2) * |
S. Jourdan, J. Stark, T.-H. Tsing, and Y.N. Patt, "Recovery Requirements of Branch Prediction Storage Structures in the Presence of Mispredicted-Path Executon", International Journal of Parallel Programming, Vol. 25, No. 5, (1997), pages 363 - 383 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009037302A (ja) * | 2007-07-31 | 2009-02-19 | Nec Corp | 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム |
US8892852B2 (en) | 2007-07-31 | 2014-11-18 | Nec Corporation | Branch prediction device and method that breaks accessing a pattern history table into multiple pipeline stages |
WO2012127666A1 (ja) * | 2011-03-23 | 2012-09-27 | 富士通株式会社 | 演算処理装置、情報処理装置及び演算処理方法 |
JPWO2012127666A1 (ja) * | 2011-03-23 | 2014-07-24 | 富士通株式会社 | 演算処理装置、情報処理装置及び演算処理方法 |
Also Published As
Publication number | Publication date |
---|---|
JP3802038B2 (ja) | 2006-07-26 |
JPWO2004068337A1 (ja) | 2006-05-25 |
US20050149710A1 (en) | 2005-07-07 |
US7647488B2 (en) | 2010-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101459536B1 (ko) | 사전 통지 기법들을 사용하여 프로그램의 순차적 흐름을 변경하기 위한 방법들 및 장치 | |
JP3565504B2 (ja) | プロセッサにおける分岐予測方法及びプロセッサ | |
JP5313279B2 (ja) | 非アラインドメモリアクセス予測 | |
US6898699B2 (en) | Return address stack including speculative return address buffer with back pointers | |
US9367471B2 (en) | Fetch width predictor | |
KR100234648B1 (ko) | 프로세서내 인스트럭션 실행 방법 및 시스템과 데이타 처리 시스템 | |
JP3397081B2 (ja) | 複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を推測的に実行するためのプロセッサ、データ処理システム及び方法 | |
EP2069915B1 (en) | Methods and system for resolving simultaneous predicted branch instructions | |
JP5231403B2 (ja) | スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ | |
JP2009048633A (ja) | 分岐先アドレス・キャッシュを備えたプロセッサおよびデータを処理する方法 | |
US7647488B2 (en) | Information processing device with branch history restoration | |
JP2000132390A (ja) | プロセッサ及び分岐予測器 | |
KR20090089358A (ko) | 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법 | |
EP1974254B1 (en) | Early conditional selection of an operand | |
US7865705B2 (en) | Branch target address cache including address type tag bit | |
US9489204B2 (en) | Method and apparatus for precalculating a direct branch partial target address during a misprediction correction process | |
US7472264B2 (en) | Predicting a jump target based on a program counter and state information for a process | |
US5913050A (en) | Method and apparatus for providing address-size backward compatibility in a processor using segmented memory | |
KR100331199B1 (ko) | 병행 생성된 복수의 페치 어드레스 중 하나를 선택하여 메모리요구를 형성하는 명령 페치 방법 및 프로세서 | |
JP4728877B2 (ja) | マイクロプロセッサおよびパイプライン制御方法 | |
US20060112262A1 (en) | Branch prediction of unconditionally executed branch instructions | |
JP2006228257A (ja) | 命令制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A1 Designated state(s): JP US |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2004567534 Country of ref document: JP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 11071306 Country of ref document: US |