EP0912927A1 - Unite de chargement/stockage a indicateurs multiples pour achever des instructions de stockage et de chargement ayant manque la memoire cache - Google Patents
Unite de chargement/stockage a indicateurs multiples pour achever des instructions de stockage et de chargement ayant manque la memoire cacheInfo
- Publication number
- EP0912927A1 EP0912927A1 EP96925348A EP96925348A EP0912927A1 EP 0912927 A1 EP0912927 A1 EP 0912927A1 EP 96925348 A EP96925348 A EP 96925348A EP 96925348 A EP96925348 A EP 96925348A EP 0912927 A1 EP0912927 A1 EP 0912927A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- load
- store
- instruction
- reorder buffer
- instructions
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 239000000872 buffer Substances 0.000 claims abstract description 125
- 230000007246 mechanism Effects 0.000 abstract description 24
- 238000011084 recovery Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 9
- 238000000034 method Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 4
- 238000006073 displacement reaction Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000003292 diminished effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000000758 substrate 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/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
Definitions
- TITLE A LOAD/STORE UNIT WITH MULTIPLE POINTERS FOR COMPLETING STORE AND LOAD-MISS INSTRUCTIONS
- This invention relates to the field of superscalar microprocessors and, more particularly, to branch misprediction recovery and load/store retirement
- clock cycle refers to the interval of time that a superscalar microprocessor requires to complete the various tasks employed within its pipeline (for example, the processing of instructions)
- Branch prediction is the process of speculatively selecting the direction that a branch instruction will select before the branch instruction is executed
- Microprocessors execute instructions sequentially when a first instruction is executed, the second instruction to be executed is the instruction stored in memory adjacent to the first instruction Branch instructions, however may cause the next instruction to be executed to be either the next sequential instruction, or alternatively an instruction which resides in another memory location that is specified by the branch instruction
- the memory location specified by the branch instruction is typically referred to as the "target" of the branch Which of the instructions is selected for execution typically depends on a condition that the branch instruction tests
- An exemplary tested condition is the value stored in a register wherein the branch target is selected if the register contains zero and the next sequential instruction is selected if the register does not contain zero It is noted that some branch instructions do not test a condition Unconditional branches always select the target path and typically no instructions are specifically encoded into the next sequential memory locations
- a misprediction recovery mechanism is a mechanism which causes the corrected fetch address to be fetched from the cache and the associated instructions to be dispatched to the instruction processing pipelines
- the corrected fetch address is the address generated by the branch instruction for locating the next instruction to be executed
- the misprediction recovery mechanism is required to complete in relatively few clock cycles, so that correct instructions are executed soon after the misprediction is determined Typically, the clock cycles between the clock cycle in which the misprediction is discovered and the clock cycle in which the
- Superscalar microprocessors are evolving such that they execute larger and larger numbers of instructions simultaneously However, branch instructions continue 10 occur in programs with the same frequency Therefore, superscalar microprocessors are implementing branch prediction schemes in which multiple branch predictions may be outstanding in a given clock cycle (i e multiple branch paths have been predicted, but have not been validated by the execution of the associated branch) With the possibility of multiple branch instructions executing in a given clock cycle, and therefore multiple mispredictions being detected, the misprediction recovery mechanism becomes more complex However, the importance of the misprediction recovery mechanism completing in relatively few clock cycles is not diminished A misprediction recovery mechanism which requires relatively few clock cycles to complete and that can correctly resolve multiple branch mispredictions is desired
- Out-of-order execution is the process of executing a particular instruction in a clock cycle that is before a clock cycle in which instructions which are before the particular instruction in program order are executed
- An instruction which does not depend on the results generated by the instructions before it in program order need not delay its execution until the instructions before it execute Because the instruction must be executed at some time, performance is advantageously increased by executing the instruction in a pipeline stage that would otherwise be idle in a clock cycle
- the data cache is a high speed memory which is configured to store copies of a main system memory (when employed in a computer system).
- a load or store instruction accesses the data cache, the access is found to be either a "hit" or a "miss". If an access is a hit, then the associated data is currently stored in the data cache. If the access is a miss, the associated data is in main memory.
- Load instructions are allowed to execute out-of-order when reading the data cache. However, when load instructions miss the data cache they are required to execute in order. Otherwise, a load miss may begin a transfer from main memory and then be cancelled. The external bus bandwidth used by the access would then be wasted. Furthermore, the data being transferred may cause a line to be removed from the cache.
- the problems outlined above are in large part solved by a superscalar microprocessor employing a load/store unit and a reorder buffer in accordance with the present invention.
- the load/store unit receives a pair of pointers which identify the oldest outstanding instructions which are not in condition for retirement.
- the load/store unit compares these pointers with the reorder buffer tags of load instructions that miss the data cache and store instructions. A match must be found before the associated instruction accesses the data cache and the main memory system. Because the pointers indicate the oldest outstanding instructions, the pointer-compare mechanism provides an ordering mechanism for load instructions that miss the data cache and store instructions.
- the load/store ordering mechanism advantageously provides ordering with minimal handshaking between the load/store unit and the reorder buffer.
- a pair of pointers are added to the communication signals between the load/store unit and the reorder buffer. Fewer interface signals simplify the design of both the load/store unit and the reorder buffer, but the required functions are provided without a degradation in performance.
- the present invention contemplates a superscalar microprocessor comprising a load/store unit configured to execute load and store instructions.
- the load/store unit is configured to receive a pointer capable of identifying an oldest outstanding instruction.
- Included within the load/store unit is a load/store buffer configured to store pending instructions of the load and store types.
- Figure 1 is a block diagram of a superscalar microprocessor employing functional units, a load/store unit, and a reorder buffer in accordance with the present invention.
- Figure 2 is a partial block diagram of a superscalar microprocessor showing functional units, a load/store unit, and a reorder buffer in more detail.
- Figure 3A is a diagram of one of the functional units shown in Figure 2, depicting elements of an embodiment of the present invention.
- Figure 3B is a diagram of the load/store unit in Figure 2, depicting elements of an embodiment of the present invention.
- Figure 3C is a diagram of a tag routing device used as part of the branch detection and oldest outstanding detection blocks shown in Figure 2.
- Figure 3D is a diagram of a typical reorder buffer entry of an embodiment of the present invention.
- Figure 1 shows a block diagram of a superscalar microprocessor 200 including functional units 212A-212F, a load/store unit 222, and a reorder buffer 216 in accordance with the present invention.
- superscalar microprocessor 200 includes a prefetch predecode unit 202 and a branch prediction unit 220 coupled to an instruction cache 204.
- Instruction alignment unit 206 is coupled between instruction cache 204 and a plurality of decode units 208A-208F (referred to collectively as decode units 208). Each decode unit 208A-208F is coupled to a respective reservation station unit 210A-210F (referred collectively as reservation stations 210), and each reservation station 210A-210F is coupled to a respective functional unit 212A-212F (referred to collectively as functional units 212) Decode units 208, reservation stations 210, and functional units 212 are further coupled to a reorder buffer 216, a register file 218 and a load/store unit 222 A data cache 224 is finally shown coupled to load/store unit 222, and an MROM unit 209 is shown coupled to instruction alignment unit 206
- instruction cache 204 is a high speed cache memory provided to temporarily store instructions prior to their dispatch to decode units 208
- instruction cache 204 is configured to cache up to 32 kilobytes of instruction code organized in lines of 16 bytes each (where each byte consists of 8 bits)
- instruction code is provided to instruction cache 204 by prefetching code from a main memory (not shown) through prefetch/predecode unit 202
- instruction cache 204 could be implemented in a set-associative, a fully-associative, or a direct-mapped configuration
- Prefetch/predecode unit 202 is provided to prefetch instruction code from the main memory for storage within instruction cache 204 In one embodiment, prefetch/predecode unit 202 is configured to burst
- prefetch/predecode unit 202 64-bit wide code from the main memory into instruction cache 204 It is understood that a variety of specific code prefetching techniques and algorithms may be employed by prefetch/predecode unit 202
- prefetch/predecode unit 202 fetches instructions from the main memory, it generates three predecode bits associated with each byte of instruction code a start bit, an end bit, and a "functional" bit
- the predecode bits form tags indicative of the boundaries of each instruction
- the predecode tags may also convey additional information such as whether a given instruction can be decoded directly by decode units 208 or whether the instruction must be executed by invoking a microcode procedure controlled by MROM unit 209, as will be described in greater detail below
- Table 1 indicates one encoding of the predecode tags As indicated within the table, if a given byte is the first byte of an instruction, the start bit for that byte is set If the byte is the last byte of an instruction, the end bit for that byte is set If a particular instruction cannot be directly decoded by the decode units 208, the functional bit associated with the first byte of the instruction is set On the other hand, if the instruction can be directly decoded by the decode units 208, the functional bit associated with the first byte of the instruction is cleared The functional bit for the second byte of a particular instruction is cleared if the opcode is the first byte, and is set if the opcode is the second byte It is noted that in situations where the opcode is the second byte, the first byte is a prefix byte The functional bit values for instruction byte numbers 3-8 indicate whether the byte is a MODRM or an SIB byte, as well as whether the byte contains displacement or immediate data
- certain instructions within the x86 instruction set may be directly decoded by decode units 208. These instructions are referred lo as “fast path” instructions.
- the remaining instructions of the x86 instruction set are referred to as "MROM instructions”.
- MROM instructions are executed by invoking MROM unit 209. When an MROM instruction is encountered, MROM unit 209 parses and serializes the instruction into a subset of defined fast path instructions to effectuate a desired operation.
- a listing of exemplary x86 instructions categorized as fast path instructions as well as a description of the manner of handling both fast path and MROM instructions will be provided further below.
- Instruction alignment unit 206 is provided to channel variable byte length instructions from instruction cache 204 to fixed issue positions formed by decode units 208A-208F. Instruction alignment unit 206 is configured to channel instruction code to designated decode units 208A-208F depending upon the locations of the start bytes of instructions within a line as delineated by instruction cache 204. In one embodiment, the particular decode unit 208A-208F to which a given instruction may be dispatched is dependent upon both the location of the start byte of that instruction as well as the location of the previous instruction's start byte, if any. Instructions starting at certain byte locations may further be restricted for issue to only one predetermined issue position. Specific details follow.
- each of the decode units 208 includes decoding circuitry for decoding the predetermined fast path instructions referred to above.
- each decode unit 208A-208F routes displacement and immediate data to a corresponding reservation station unit 210A-21 OF Output signals from the decode units 208 include bit-encoded execution instructions for the functional units 212 as well as operand address information, immediate data and/or displacement data
- the superscalar microprocessor of Figure 1 supports out of order execution, and thus employs reorder buffer 216 to keep track of the original program sequence for register read and write operations, to implement register renaming, to allow for speculative instruction execution and branch misprediction recovery, and to facilitate precise exceptions
- a temporary storage location within reorder buffer 216 is reserved upon decode of an instruction that involves the update of a register to thereby store speculative register states
- Reorder buffer 216 may be implemented in a first-m- first-out configuration wherein speculative results move to the "bottom" of the buffer as they are validated and written to the register file, thus making room for new entries at the "top" of the buffer
- Other specific configurations of reorder buffer 216 are also possible, as will be described further below If a branch prediction is incorrect, the results of speculatively-executed instructions along the mispredicted path can be invalidated in the buffer before they are written to register file 218
- each reservation station unit 210A-210F is capable of holding instruction information (1 e , bit encoded execution bits as well as operand values, operand tags and/or immediate data) for up to three pending instructions awaiting issue to the corresponding functional unit
- each decode unit 208A-208F is associated with a dedicated reservation station unit 210A-210F
- each reservation station unit 21 OA-21 OF is similarly associated with a dedicated functional unit 212A-212F
- six dedicated "issue positions" are formed by decode units 208, reservation station units 210 and functional units 212 Instructions aligned and dispatched to issue position 0 through decode unit 208 A are passed to reservation station unit 210A and subsequently to functional unit 212 A for execution Similarly, instructions aligned and dispatched to decode unit 208B
- register address information is routed to reorder buffer 216 and register file 218 simultaneously .
- the x86 register file includes eight 32 bit real registers (I e , typically referred to as EAX, EBX, ECX.
- Reorder buffer 216 contains temporary storage locations for results which change the contents of these registers to thereby allow out of order execution
- a temporary storage location of reorder buffer 216 is reserved for each instruction which, upon decode, modifies the contents of one of the real registers Therefore, at various points during execution of a particular program, reorder buffer 216 may have one or more locations which contain the speculatively executed contents of a given register If following decode of a given instruction it is determined that reorder buffer 216 has previous locat ⁇ on(s) assigned to a register used as an operand in the given instruction, the reorder buffer 216 forwards to the corresponding reservation station either 1 ) the value in the most recently assigned location, or 2) a tag for the most recently assigned location if the value has not yet been produced by the functional unit that will eventually execute the previous instruction If the reorder buffer has a location reserved for a given register, the operand value (or tag) is provided from
- Reservation station units 210A-210F are provided to temporarily store instruction information to be speculatively executed by the corresponding functional units 212 A-212F As stated previously, each reservation station unit 210A-210F may store instruction information for up to three pending instructions Each of the six reservation stations 210A-210F contain locations to store bit-encoded execution instructions to be speculatively executed by the corresponding functional unit and the values of operands If a particular operand is not available, a tag for that operand is provided from reorder buffer 216 and is stored within the corresponding reservation station until the result has been generated (i e , by completion of the execution of a previous instruction) It is noted that when an instruction is executed by one of the functional units 212A- 212F, the result of that instruction is passed directly to any reservation station units 210A-210F that are waiting for that result at the same time the result is passed to update reorder buffer 216 (this technique is commonly referred to as "result forwarding") Instructions are issued to functional units for execution after
- each of the functional units 212 is configured to perform integer arithmetic operations of addition and subtraction, as well as shifts, rotates, logical operations, and branch operations It is noted that a floating point unit (not shown) may also be employed to accommodate floating point operations
- Each of the functional units 212 also provides information regarding the execution of conditional branch instructions to the branch prediction unit 220. If a branch prediction was incorrect, branch prediction unit 220 flushes instructions subsequent to the mispredicted branch that have entered the instruction processing pipeline, and causes prefetch/predecode unit 202 to fetch the required instructions from instruction cache 204 or main memory.
- Results produced by functional units 212 are sent to the reorder buffer 216 if a register value is being updated, and to the load/store unit 222 if the contents of a memory location is changed. If the result is to be stored in a register, the reorder buffer 216 stores the result in the location reserved for the value of the register when the instruction was decoded. As stated previously, results are also broadcast to reservation station units 210A-210F where pending instructions may be waiting for the results of previous instruction executions to obtain the required operand values.
- Data cache 224 is a high speed cache memory provided to temporarily store data being transferred between load/store unit 222 and the main memory subsystem.
- data cache 224 has a capacity of storing up to eight kilobytes of data. It is understood that data cache 224 may be implemented in a variety of specific memory configurations, including a set associative configuration.
- load store unit 222 provides an interface between functional units 212A-212F and data cache 224.
- load/store unit 222 is configured with a load/store buffer with sixteen storage locations for data and address information for pending load or store memory operations.
- Functional units 212 arbitrate for access to the load/store unit 222.
- the load/store unit 222 also performs dependency checking for load memory operations against pending store memory operations to ensure that data coherency is maintained.
- FIG. 2 a block diagram depicting functional units 212, reorder buffer 216, and load/store unit 222 is shown.
- Figure 2 details the connections between the depicted units, and shows reorder buffer 216 in more detail as well.
- two functional units 212A and 212F
- Reorder buffer 216 conveys a branch pointer to functional units 212 on a branch pointer bus 250.
- Functional units 212 are also connected to a corrected fetch address bus 251 , which conveys an address to branch prediction unit 220.
- Reorder buffer 216 conveys a pair of oldest pointers (i.e.
- oldest means an instruction in the reorder buffer which does not yet have valid results, but each prior instruction within the reorder buffer does have valid results
- the branch pointer conveyed by reorder buffer 216 on branch pointer bus 250 identifies the oldest branch instruction currently stored within reorder buffer 216
- Functional units 212 compare the branch pointer to the pointer identifying the instruction currently executing If the comparison indicates a match, then the associated functional unit may transfer its corrected fetch address on corrected fetch address bus 251 to branch prediction unit 220
- the functional unit conveys a corrected fetch address if the associated branch instruction was mispredicted by branch prediction unit 220
- the oldest pointers conveyed on oldest pointer buses 255 and 256 identify the oldest instructions that are not in condition for retirement
- Load store unit 222 compares the oldest pointers to the pointers identifying outstanding load miss and store instructions stored within a load/store buffer within load/store unit 222 If the comparison indicates a match, then the corresponding load or store instruction is performed by transferring the associated memory locations into the cache (if necessary), and storing the data associated with store instructions into the data cache or forwarding the data associated with load instructions to the target register
- Branch pointer is generated by reorder buffer 216 using a branch detector circuit 253
- Branch detector circuit 253 scans a certain number of entries storing the oldest instructions in a reorder buffer array 252 In one embodiment, the number of entries scanned is six
- Reorder buffer array 252 is configured to store information pertaining to instructions that are currently outstanding in superscalar microprocessor 200
- a "reorder buffer tag" (which uniquely identifies an instruction withm reorder buffer 216) associated with the oldest branch instruction within the oldest six entries in reorder buffer array 252 is selected by branch detector circuit 253 and conveyed as the branch pointer Therefore, the branch pointer in this embodiment is a reorder buffer tag
- branch detector circuit 253 employs one tag routing device
- the tag routing device will be explained in more detail with respect to Figure 3C, but generally speaking it selects a reorder buffer tag from multiple entries of reorder buffer array 252 dependent on a bit associated with each entry
- the bit identifies the instruction as a branch If the oldest entry is a branch, its associated reorder buffer tag is routed to functional units 212 Similarly, if the second oldest entry is a branch and the oldest entry is not a branch, the second oldest entry's tag is routed to functional units 212, and so on for the four remaining reorder buffer entries being scanned If no branch instruction is found within the entries scanned by branch detector circuit 253, an invalid tag is routed to functional units 212.
- detector circuit 254 scans a certain number of entries storing the oldest instructions within reorder buffer 216.
- the reorder buffer tags associated with the oldest and second oldest instructions that are not in condition for retirement are routed to load/store unit 222 by detector circuit 254. In one implementation, the number of reorder buffer entries scanned is twelve.
- detector circuit 254 contains two tag routing devices, as will be described with respect to Figure 3C.
- the first tag routing device routes a reorder buffer tag similar to the tag routing device of branch detector circuit 253, except that the bit from reorder buffer array 252 used to select the reorder buffer tag indicates that the associated instruction is not in condition for retirement.
- the second tag routing device is configured to route the second oldest reorder buffer tag associated with an instruction that is not in condition for retirement. Therefore, the selection bit provided to the second tag routing device is the logical
- the selection bits are priority encoded by the tag routing device, as will be explained with respect to Figure 3C.
- load store unit 222 is required to return the data associated with a load instruction to the reorder buffer, and is required to indicate to the reorder buffer that a store has been performed. Load instructions that hit in the data cache transfer the associated data to the reorder buffer, and are thereby completed. However, load instructions that miss the data cache (and so cannot return data) as well as store instructions remain in the load/store buffer until their associated reorder buffer tag is indicated on one of the oldest pointers. Then, the load/store unit may select the load miss instruction to transfer data into the data cache from main memory or the store instruction to store data into the data cache. When the load/store unit has performed these actions, it returns the data or indicates that the store is complete (respectively). In a subsequent clock cycle, the oldest pointers will move to the next oldest instructions in reorder buffer 216. Load instructions that miss the data cache and store instructions are therefore executed in order.
- branch pointer bus 250 and oldest outstanding bus 255 are operated such that they convey the same pointer in each clock cycle. Therefore, branch pointer bus 250 and oldest outstanding bus 255 can be combined into a common bus for this embodiment, and branch detector circuit 253 can be eliminated.
- functional units 212 generate valid corrected fetch addresses when executing branch instructions and invalid corrected fetch addresses otherwise. Therefore, if branch pointer bus 250 conveys a non-branch instruction and the pointer matches the pointer identifying an instruction currently being executed, branch prediction unit 220 will receive an invalid corrected fetch address
- Functional units 212 are each configured with a register 300 which stores the reorder buffer tag of the instruction being executed in the current clock cycle Register 300 is connected to a comparator circuit 301 which is also connected to branch pointer bus 250 Therefore, comparator circuit 301 compares the branch pointer conveyed on branch pointer bus 250 to the reorder buffer tag stored in register 300 Because branch pointer bus 250 conveys a valid reorder buffer tag only if the associated instruction is a branch, the comparator output indicates a match in clock cycles where a branch instruction is being executed by the functional unit
- the output of comparator 301 is coupled to the enable of a t ⁇ -state driver circuit 303 T ⁇ - state driver circuit 303 is coupled to a corrected address logic block 302 which is configured to generate a corrected fetch address if the branch instruction being executed is a mispredicted branch, and an invalid address if the branch is predicted correctly or the instruction is not a branch T ⁇ -state driver circuit conveys the address produced
- Branch prediction unit 220 is configured to recognize an invalid address such that corrected fetch addresses are acted upon and invalid addresses are ignored It is noted that functional units 212 report the results of executing a branch instruction to reorder buffer 216, as is the case with other instructions
- a mechanism for branch misprediction recovery may be implemented that requires relatively few clock cycles to complete
- the clock cycle in which a branch is executed and found to be mispredicted is the cycle in which the corrected fetch address is conveyed to branch prediction unit 220
- the corrected fetch address will access the instruction cache and the associated instructions will be dispatched
- the branch misprediction recovery mechanism handles multiple branch predictions by conveying the corrected fetch address associated with the oldest branch instruction
- load/store unit 222 receives oldest pointer buses 255 and 256 from reorder buffer 216, and selects load or store instructions to access data cache 224 In one embodiment, load/store unit 222 selects up to two load/store instructions to access the data cache in each clock cycle
- Load store unit 222 is configured with a load/store buffer 310 which is configured to store information regarding outstanding load and store instructions Included in the information stored within load/store buffer 310 is the reorder buffer tag for each instruction, as indicated in
- a data cache input selection logic block 31 1 receives the comparator outputs as well as the contents of load/store buffer 310 and generates up to two requests for data cache 224 Selection logic block 31 1 does not select a load instruction that has been determined to miss the data cache unless the associated comparator circuits indicate a match with the oldest pointers Similarly, selection logic block 31 1 does not select a store instruction unless the associated comparator circuits indicate a match with the oldest pointers In one embodiment, selection logic block 31 1 employs a priority scheme for selecting instructions to access data cache 224 The highest priority is assigned to a load miss or store instruction with a reorder buffer tag which matches the oldest pointer transferred on oldest pointer bus 255 An intermediate priority is assigned to a load miss or store instruction that has a reorder buffer tag which matches the oldest pointer transferred on oldest pointer bus 256 Lowest priority is assigned to load
- load/store unit 222 By employing load/store unit 222 in a superscalar microprocessor which produces the oldest pointers, load instructions that miss data cache 224 and store instructions are executed in order Neither of the two types of instructions are allowed to access data cache 224 or the main memory subsystem until their reorder buffer tags are conveyed on the oldest pointers, indicating that they are the oldest outstanding instructions that are not in condition for retirement Therefore, each of the instructions prior to the load or store instruction has completed, and the load or store instruction may be executed
- Tag routing device 320 includes a multiplexor 321 which receives reorder buffer tags from reorder buffer array 252 Associated with each reorder buffer tag is a signal conveying a logical one if the tag should be considered for routing by tag routing device 320
- the embodiment shown in Figure 3C is a priority encoded mechanism which selects the oldest tag if its associated signal is a logical one, as indicated by signal line 322 connected to multiplexor 321 The encoding mechanism selects the second oldest tag if its associated signal conveys a logical one and the signal associated with the oldest tag conveys a logical zero
- signal line 323 (which selects the second oldest tag) is generated by AND gate 324 If both the signal associated with the oldest tag and the signal associated with the second oldest tag convey a logical zero and the signal associated with the third oldest tag conveys a logical one, then the third oldest tag is selected Therefore, signal line 325 (which selects the third oldest tag) is generated by AND gate 326 Additional select signals for multiplexor 321 are generated similarly
- Tag entry 330 has four fields a reorder buffer tag field 331 , a branch bit 332, a retire bit 333, and an instruction field 334
- Instruction field 334 contains the instruction for this reorder buffer entry along with other data a particular embodiment of reorder buffer 216 may require
- Reorder buffer tag field 331 stores the reorder buffer tag, and is connected to branch detector circuit 253 and oldest outstanding detector circuit 254 for reorder buffer array entries that are configured to contain the oldest instructions in the array
- Branch bit 332 stores a logical one if the instruction stored in reorder buffer entry is a branch instruction, and a logical zero otherwise
- Branch bit 332 forms one of the select signals for the tag routing device of branch detector circuit 253
- Retire bit 333 stores a logical one when the instruction stored in reorder buffer array entry 330 is in condition for retirement, and a logical zero otherwise
- An inversion of retire bit 333 is used to form one of the select signals
- Load/store unit 222 is configured with a unified load/store buffer in this embodiment
- load/store unit 222 could be configured with multiple load/store buffers, and load and store instructions may be stored in separate buffers in other embodiments
- branch misprediction recovery mechanism requires a clock cycle to complete once the misprediction is discovered, allowing for high performance by minimizing the number of idle clock cycles due to branch misprediction
- the load/store ordering mechanism allows for load/store ordering with a minimal amount of handshaking between units The minimal handshaking lowers the number of interface signals and simplifies the design of the superscalar microprocessor
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
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US1996/011846 WO1998002805A1 (fr) | 1996-07-16 | 1996-07-16 | Unite de chargement/stockage a indicateurs multiples pour achever des instructions de stockage et de chargement ayant manque la memoire cache |
Publications (2)
Publication Number | Publication Date |
---|---|
EP0912927A1 true EP0912927A1 (fr) | 1999-05-06 |
EP0912927B1 EP0912927B1 (fr) | 2000-12-27 |
Family
ID=22255475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP96925348A Expired - Lifetime EP0912927B1 (fr) | 1996-07-16 | 1996-07-16 | Unite de chargement/stockage a indicateurs multiples pour achever des instructions de stockage et de chargement ayant manque la memoire cache |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP0912927B1 (fr) |
JP (1) | JP3717524B2 (fr) |
DE (1) | DE69611388T2 (fr) |
WO (1) | WO1998002805A1 (fr) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7617387B2 (en) * | 2006-09-27 | 2009-11-10 | Qualcomm Incorporated | Methods and system for resolving simultaneous predicted branch instructions |
US10528353B2 (en) | 2016-05-24 | 2020-01-07 | International Business Machines Corporation | Generating a mask vector for determining a processor instruction address using an instruction tag in a multi-slice processor |
US10467008B2 (en) | 2016-05-31 | 2019-11-05 | International Business Machines Corporation | Identifying an effective address (EA) using an interrupt instruction tag (ITAG) in a multi-slice processor |
US10248555B2 (en) | 2016-05-31 | 2019-04-02 | International Business Machines Corporation | Managing an effective address table in a multi-slice processor |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5185871A (en) * | 1989-12-26 | 1993-02-09 | International Business Machines Corporation | Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions |
-
1996
- 1996-07-16 WO PCT/US1996/011846 patent/WO1998002805A1/fr active IP Right Grant
- 1996-07-16 DE DE69611388T patent/DE69611388T2/de not_active Expired - Lifetime
- 1996-07-16 JP JP50596098A patent/JP3717524B2/ja not_active Expired - Fee Related
- 1996-07-16 EP EP96925348A patent/EP0912927B1/fr not_active Expired - Lifetime
Non-Patent Citations (1)
Title |
---|
See references of WO9802805A1 * |
Also Published As
Publication number | Publication date |
---|---|
DE69611388D1 (de) | 2001-02-01 |
WO1998002805A1 (fr) | 1998-01-22 |
EP0912927B1 (fr) | 2000-12-27 |
JP3717524B2 (ja) | 2005-11-16 |
DE69611388T2 (de) | 2001-08-09 |
JP2000515277A (ja) | 2000-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8069336B2 (en) | Transitioning from instruction cache to trace cache on label boundaries | |
US5822575A (en) | Branch prediction storage for storing branch prediction information such that a corresponding tag may be routed with the branch instruction | |
US6339822B1 (en) | Using padded instructions in a block-oriented cache | |
US5845323A (en) | Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time | |
US5761712A (en) | Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array | |
US6012125A (en) | Superscalar microprocessor including a decoded instruction cache configured to receive partially decoded instructions | |
US6189089B1 (en) | Apparatus and method for retiring instructions in excess of the number of accessible write ports | |
JP2001521241A (ja) | 分岐予測を迅速に特定するための命令キャッシュ内のバイト範囲に関連する分岐セレクタ | |
US6493819B1 (en) | Merging narrow register for resolution of data dependencies when updating a portion of a register in a microprocessor | |
US5765016A (en) | Reorder buffer configured to store both speculative and committed register states | |
EP0651331B1 (fr) | Tampon d'écriture pour un microprocesseur superscalaire à pipeline | |
US20070033385A1 (en) | Call return stack way prediction repair | |
JP3794918B2 (ja) | 復帰選択ビットを用いて分岐予測のタイプを分類する分岐予測 | |
EP0912927B1 (fr) | Unite de chargement/stockage a indicateurs multiples pour achever des instructions de stockage et de chargement ayant manque la memoire cache | |
EP0912930B1 (fr) | Unite fonctionnelle avec un pointeur pour la resolution de branchements avec erreur de prediction, et microprocesseur superscalaire comprenant une telle unite | |
KR100417459B1 (ko) | 저장 및 적재 미스 명령들을 완료하기 위한 다수의 포인터들을 갖는 적재/저장 유닛 | |
EP0919027B1 (fr) | Registre d'actualisation retardee pour matrice | |
EP0912925B1 (fr) | Structure de pile d'adresses de retour et microprocesseur superscalaire comportant cette structure | |
WO1998020421A1 (fr) | Structure de prevision de voie | |
EP1015980B1 (fr) | Antememoire de donnees capable d'effectuer des acces memoire dans un seul cycle d'horloge | |
EP0912929B1 (fr) | Structure de prediction d'adresses de donnees et procede permettant de la faire fonctionner | |
EP0912928A1 (fr) | Structure de prediction d'adresses de donnees faisant appel a un procede de prediction par enjambee | |
WO1998020416A1 (fr) | Structure de prediction d'adresse de donnees fondee sur le rythme | |
EP1005675A1 (fr) | Unite memoire de donnees concue pour le stockage de donnees en un seul site d'horloge et procede de fonctionnement de cette unite | |
EP1019831A1 (fr) | Unite de prediction de blocs de memoire et son procede de fonctionnement |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
17P | Request for examination filed |
Effective date: 19990120 |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): DE ES FR GB NL |
|
GRAG | Despatch of communication of intention to grant |
Free format text: ORIGINAL CODE: EPIDOS AGRA |
|
17Q | First examination report despatched |
Effective date: 20000405 |
|
GRAG | Despatch of communication of intention to grant |
Free format text: ORIGINAL CODE: EPIDOS AGRA |
|
GRAH | Despatch of communication of intention to grant a patent |
Free format text: ORIGINAL CODE: EPIDOS IGRA |
|
GRAH | Despatch of communication of intention to grant a patent |
Free format text: ORIGINAL CODE: EPIDOS IGRA |
|
GRAA | (expected) grant |
Free format text: ORIGINAL CODE: 0009210 |
|
AK | Designated contracting states |
Kind code of ref document: B1 Designated state(s): DE ES FR GB NL |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: NL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20001227 Ref country code: ES Free format text: THE PATENT HAS BEEN ANNULLED BY A DECISION OF A NATIONAL AUTHORITY Effective date: 20001227 |
|
REF | Corresponds to: |
Ref document number: 69611388 Country of ref document: DE Date of ref document: 20010201 |
|
ET | Fr: translation filed | ||
NLV1 | Nl: lapsed or annulled due to failure to fulfill the requirements of art. 29p and 29m of the patents act | ||
PLBE | No opposition filed within time limit |
Free format text: ORIGINAL CODE: 0009261 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT |
|
26N | No opposition filed | ||
REG | Reference to a national code |
Ref country code: GB Ref legal event code: IF02 |
|
REG | Reference to a national code |
Ref country code: GB Ref legal event code: 732E Free format text: REGISTERED BETWEEN 20091210 AND 20091216 |
|
REG | Reference to a national code |
Ref country code: FR Ref legal event code: TP |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: GB Payment date: 20100616 Year of fee payment: 15 Ref country code: FR Payment date: 20100813 Year of fee payment: 15 Ref country code: DE Payment date: 20100730 Year of fee payment: 15 |
|
GBPC | Gb: european patent ceased through non-payment of renewal fee |
Effective date: 20110716 |
|
REG | Reference to a national code |
Ref country code: FR Ref legal event code: ST Effective date: 20120330 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: FR Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20110801 Ref country code: DE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20120201 |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R119 Ref document number: 69611388 Country of ref document: DE Effective date: 20120201 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: GB Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20110716 |