WO2004111838A2 - Method and data processor for reduced pipeline stalling - Google Patents
Method and data processor for reduced pipeline stalling Download PDFInfo
- Publication number
- WO2004111838A2 WO2004111838A2 PCT/US2004/017092 US2004017092W WO2004111838A2 WO 2004111838 A2 WO2004111838 A2 WO 2004111838A2 US 2004017092 W US2004017092 W US 2004017092W WO 2004111838 A2 WO2004111838 A2 WO 2004111838A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- register
- instruction
- operand
- redirect
- identifier
- 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.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3875—Pipelining a single stage, e.g. superpipelining
Definitions
- the present invention generally relates to data processors, and more particularly to pipelined data processors.
- Pipelining is a technique that breaks down the instruction processing task into smaller, modular sub-tasks each of which can be performed during a particular atomic period of time known as a pipeline cycle. By breaking down the task into these smaller cycles data processors can, for example, be fetching one instruction while executing another and while writing back the results of a third instruction into the register file. Thus even though individual instructions may take several cycles to complete, the overall throughput can approach one instruction per pipeline cycle.
- Modern microprocessors have more sophisticated pipelines than this three-stage example.
- a five-stage pipeline may include fetch, decode, operand access, execute, and writeback stages.
- a particular sequence of instructions may cause what is known as a pipeline dependency.
- One type of pipeline dependency known as an operand dependency, occurs when one instruction cannot be executed until the result of execution of a previous instruction is available. For example, assume the instruction sequence:
- the first register is the destination of the result
- the second and third registers store the input operands. Since R2 is the destination register of the first ADD instruction, the execution of the second ADD instruction depends on the outcome of the first ADD instruction and cannot occur until the results of the first ADD instruction are known.
- the first instruction loads register RO with the contents of memory pointed to by the address stored in register Rl.
- Obviously correct execution of the ADD instruction depends on the new value of register RO being available.
- Mike Johnson et al. in U.S. Patent No. 4,734,852 disclose a method in which a bypass path can be used to forward the results of an earlier memory load operation to a subsequent instruction without having to first write it to the destination register in the register file and then read it from the register file.
- the new register value is available much earlier and the pipeline stall time after a load dependency can be minimized.
- a method for use in a data processor having a pipelined execution unit. Whether a first instruction is one of a class of instructions wherein as a result of execution of the first instruction the contents of an operand register will be stored in a destination register is determined. A second instruction that references the destination register is received before a completion of execution of the first instruction. The second instruction is executed using the contents of the operand register without stalling the second instruction in the pipelined execution unit.
- a data processor includes an issue logic circuit, a register file, a pipelined execution unit, and a redirect logic circuit.
- the issue logic circuit has an output for providing first and second instructions in sequence, each instruction having at least an opcode, a first operand register identifier for a first operand, and a destination register identifier for a destination register.
- the register file has a read port including a read address input and a read data output, and a write port.
- the pipelined execution unit has a first input coupled to the output of the issue logic circuit, a second input coupled to the read data output of the register file, and an output coupled to the write port of the register file.
- the redirect logic circuit has a first input coupled to the output of the issue logic circuit, a second input coupled to the read data output of the register file, and an output coupled to the read address input of the register file for selectively substituting the first operand register identifier of the first instruction for the first operand register identifier of the second instruction.
- FIG. 1 illustrates a block diagram of a pipelined execution unit of a data processor known in the prior art
- FIG. 2 illustrates a block diagram of a pipelined execution unit of a data processor according to the present invention
- FIG. 3 illustrates a partial block diagram and partial logic diagram of the redirect logic circuit of FIG. 2.
- FIG. 1 illustrates a block diagram of a pipelined execution unit 100 of a data processor known in the prior art.
- Execution 100 is a floating point unit having an add unit 120, a multiply unit 130, and a floating point register file 150.
- An issue logic circuit 110 is responsible for issuing instructions to add unit 120 and multiply unit 130.
- instructions such as instruction 112 include an op code field labeled "OP CODE", a first operand register identifier labeled "Rs”, a second operand register identifier labeled "Rt”, and a destination register identifier labeled "Rd".
- the Rt field may be absent or there may be an optional immediate operand field, but these other instructions do not affect the operation of the redirection mechanism to be described below and will not be discussed further.
- Execution unit 100 is a single-issue execution unit, so issue logic 110 issues one instruction per pipeline cycle and provides the instruction to either add unit 120 or multiply unit 130 based on the type of instruction.
- Add unit 120 has three pipeline stages: an align stage 122, an add stage 124, and a normalize stage 126.
- Multiply unit 130 also has three stages: a Booth's encoding stage 132, a multiply array stage 134, and a final add and round stage 136.
- Instructions issued to add unit 120 or multiply unit 130 proceed down their respective pipelines and advance by one stage at the end of each pipeline cycle.
- Input operands are provided to the first stage of the selected unit as follows.
- the Rs and Rt fields of instruction 112 are output by issue logic 110 to both a bypass circuit 140 and register file 150. If there are no operand dependencies, then operands Rs and Rt are returned from register file 150, through bypass circuit 140, onto buses 160 and 170. If there are operand dependencies - A - based on instructions just completing in the last pipeline stages, then they are received by bypass circuit 140 and forwarded to the appropriate operand buses.
- issue logic 110 stalls the issuance of the new instruction until the previous instruction, on which the new instructions depends, completes processing. In this case when the previous instruction that caused the dependency is finally complete, the results pass through bypass circuit 140 onto buses 160 and 170 to allow the stalled new instruction to be issued. In parallel bypass circuit 140 writes the new value to register file 150.
- the align stage of add unit 120 has inputs for receiving the first and second operand values through operand buses 160 and 170, respectively. These values, the OP CODE, the destination register designator Rd, and various other decoded or partially decoded fields advance through the pipeline stages.
- an instruction has been processed through normalize stage 126, it is provided to an input of a bypass circuit 140.
- Bypass circuit 140 is included to provide a path between the results of a previous instruction and the input of a subsequent instruction to save a pipeline cycle that would otherwise be required to write the result into the destination register in register file 150 and subsequently read it out.
- FIG. 2 illustrates a block diagram of a pipelined execution unit 200 of a data processor according to the present invention.
- execution unit 200 is a floating point unit but could be any other type of execution unit such as integer, vector, etc.
- Execution unit 200 is similar to execution unit 100 of FIG. 1 except it includes a redirect logic circuit 210 that, in conjunction with other elements of execution unit 200, prevents a class of instructions that can cause operand dependencies from stalling the pipeline.
- Redirect logic circuit 210 detects several types of instructions that would ordinarily cause register dependencies, and corrects them by substituting register identifiers that provide the correct result.
- the first type of instruction is a register-to-register move instruction followed by another instruction that uses the destination register of the register-to-register move instruction as an operand register. For example, assume the instruction sequence:
- the first instruction signifies a move operation in which the contents of register RO are moved into register Rl
- the second instruction signifies an add operation in which the contents of Rl are added to the contents of R2, the sum of which is placed into register R3.
- this sequence causes a dependency that prevents the ADD instruction from being issued until the results of the MOV instruction are available, either in the register file or in bypass circuit 140.
- Execution unit 200 actually executes the MOV i ⁇ struction using add unit 120 by performing an equivalent add operation that uses the value of zero for the second operand.
- the second instruction would normally need to wait until normalize stage 126 provides the result to bypass circuit 140.
- redirect logic circuit 210 causes the contents of RO to be substituted for the contents of Rl in the ADD instruction and the ADD instruction to be issued immediately, using as a second operand the contents of RO.
- the ADD instruction executes correctly.
- the second type of instruction is an ADD instruction in which one of the operands is equal to zero followed by another instruction that uses the destination register of the add instruction as an operand register. For example, assume the instruction sequence:
- the first ADD instruction signifies an add operation in which the contents of register RO are added to the contents of register Rl and the sum is stored in register R2
- the second ADD instruction signifies an add operation in which the contents of R2 are added to the contents of R3 and the sum is stored in register R4.
- this sequence causes a dependency that prevents the second ADD instruction from being issued until the results of the first ADD instruction are available.
- redirect logic circuit 210 causes the contents of RO (Rl) to be substituted for the contents of R2 in the second ADD instruction and the second ADD instruction to be issued immediately, using as a second operand the contents of RO (Rl).
- the third type of instruction is a multiply instruction in which one of the operands is equal to one followed by another instruction that uses the destination register of the multiply instruction as an operand register. For example, assume the instruction sequence:
- the first instruction signifies a multiply operation in which the contents of register RO are multiplied by the contents of register Rl and the product is stored into register R2
- the second instruction signifies an add operation in which the contents of register R2 are added to the contents of register R3 and placed into register R4.
- this sequence causes a dependency that prevents the ADD instruction from being issued until the results of the MUL instruction are available.
- redirect logic circuit 210 causes the contents of RO (Rl) to be substituted for the contents of R2 in the ADD instruction and the ADD instruction to be issued immediately, using as a second operand the contents of RO (Rl).
- execution unit 200 recognizes these conditions to substitute a register for the register actually referenced and allow the instruction to be issued immediately.
- a data processor using such an execution unit will process a given section of code in less time or, alternatively, impose fewer restrictions on the compiler that issues the instructions.
- Execution unit 200 performs further register substitution to prevent pipeline stalls by recognizing certain other instructions that can be issued by substituting a register for a referenced register and forcing a change in the sign bit of the result. Operands are processed in execution unit 200 in one of two formats. The first format is
- IEEE normal (32-bit) floating point format in which a number is represented by one sign bit, eight exponent bits, and twenty-three fraction bits.
- Rl for the second operand and setting the sign bit of the result to 1 to signify a negative number.
- redirect logic circuit 210 implements a mechanism that changes the value of the sign bit when an operand has been substituted as appropriate.
- Other instructions for which redirect logic circuit 210 changes the value of the sign bit include a subtract instruction in which the minuend (i.e., A in the expression A - B) is zero, and a multiply instruction in which either operand is equal to negative one.
- a subtract instruction in which the subtrahend (i.e., B in the expression A - B) is zero is equivalent to an ADD to zero instruction and in this case redirect logic circuit 210 will substitute the first operand for the destination operand without changing the sign bit.
- a multiply instruction in which one operand is zero will produce a zero result and in this case redirect logic circuit 210 substitutes the zero operand register for the destination register. Note that this list of instructions is not exhaustive. Other instructions unique to the data processor's particular instruction set can be incorporated in the set of instructions that redirect logic circuit 210 is responsive to according to the principles set forth herein.
- Redirect logic circuit 210 includes generally a redirect detect logic circuit 300, a first redirect register 310, a second redirect register 320, a set of comparators 330, and a set of multiplexers 340.
- Redirect logic circuit 300 has an input connected to buses 160 and 170, and an output. The function of redirect logic circuit 300 is to detect those conditions that are suitable for register substitution as described above, and to create an entry in first redirect register 310 to detect a dependency on a successive instruction and cause the appropriate register substitution.
- buses 160 and 170 not only carry the values of operands Rs and Rt retumed from the bypass logic circuit, but also signals decoded by bypass logic circuit 140 to indicate various states of the operands.
- bypass logic circuit 140 includes hardware to detect when the exponent and fraction fields of a number are equal to zero or when the exponent field is equal to a predetermined value used to represent the value of one in that number format. For example, in general a value of zero is represented when both the exponent and fraction fields are zero. However execution unit 200 allows zero to be represented with only the exponent field equal to zero irrespective of the value of the fraction field.
- a value of one is represented by a number having a fraction field of zero and an exponent field having its predetermined value (127 for normal format and 1023 for double precision format). From this information in conjunction with the OP CODE field, redirect logic circuit 300 can detect the add to zero and multiply by one conditions.
- First redirect register 310 has inputs for receiving register designator fields Rs, Rt, and Rd, an input connected to the output of redirect detect logic circuit 300, and an output.
- Second redirect register 320 has an input connected to the output of register 310, and three outputs. Each redirect register has the following fields: a sign bit field labeled "S”, a valid bit field labeled "V”, a register identifier match field labeled "MATCH” and a substitute field labeled "SUBST".
- the output of first redirect register 310 is shifted into second redirect register 320 in synchronism with a clock, not shown, that signals the advancement of the pipeline.
- Each comparator determines whether to substitute the value of an operand register of a previous or second previous instruction for an operand of the current instruction.
- comparator 332 detects whether the destination register identifier Rd of the second previous instruction matches the first operand register identifier Rs of the current instruction.
- Comparator 334 detects whether the destination register identifier Rd of the second previous instruction matches the second operand register identifier Rt of the current instruction.
- Comparator 336 detects whether the destination register identifier Rd of the previous instruction matches the first operand register identifier Rs of the current instruction.
- Comparator 338 detects whether the destination register identifier Rd of the previous instruction matches the second operand register identifier Rt of the current instruction.
- Set of multiplexers 340 include multiplexers 342 and 344.
- Multiplexer 342 has a first input for receiving Rs, a second input connected to the SUBST field of second redirect register 320, a third input connected to the SUBST field of first redirect register 310, control inputs connected to the outputs of comparators 332 and 334, and an output for providing NEW Rs.
- Multiplexer 344 has a first input for receiving Rt, a second input connected to the SUBST field of first redirect register 310, a third input connected to the SUBST field of second redirect register 320, control inputs connected to the outputs of comparators 336 and 338, and an output for providing NEW Rt.
- Multiplexers 342 and 344 include both multiplexing and logic circuitry to select the appropriate inputs to provide as the NEW Rs and NEW Rt values, respectively. If neither redirect register 310 nor 320 has a valid entry, then multiplexers 342 and 344 select Rs and Rt to provide as NEW Rs and NEW Rt, respectively. If only one of redirect register 310 and 320 has a valid entry, then multiplexers 342 and 344 select one of the SUBST values, corresponding to the valid redirect register entry, to provide as NEW Rs and NEW Rt, respectively if one of Rs and Rt match the contents of the corresponding MATCH field.
- redirect registers 310 and 320 have a valid entry, then multiplexers 342 and 344 select the SUBST values, corresponding to the valid redirect register entry, to provide as NEW Rs and NEW Rt, respectively, if Rs and/or Rt match the contents of the corresponding MATCH field. If both redirect registers 310 and 320 have a valid entry and the values of the MATCH fields are the same, then multiplexers 342 and 344 give priority to the instruction most recently issued, i.e., the multiplexer selects the input provided by the SUBST field of redirect register 310.
- normal dependency checking occurs in parallel in a normal dependency checking circuit, not shown, in ISSUE LOGIC circuit 110.
- the pipeline stalling reduction technique described herein operates to override normal dependency checking.
- the normal dependency checking circuit outputs two signals, designated "rs_stall” and “rt_stall”, that detect any dependencies between prior issued but not yet completed instructions and the Rs and Rt operands, respectively, of the current instruction. Additional logic circuitry in REDIRECT LOGIC circuit 210, not shown in FIG. 2 or FIG.
- the pipelined execution unit may have either two stages or more than three stages.
- the instruction need only have one operand identifier.
- the redirect detect logic circuit could examine the operands directly to detect particular conditions such as equal to zero or equal to one in other embodiments in which such information were not available via existing operand buses. While at least one exemplary embodiment has been presented in the foregoing detailed description, it should be appreciated that a vast number of variations exist. It should also be appreciated that the exemplary embodiment or exemplary embodiments are only examples, and are not intended to limit the scope, applicability, or configuration of the invention in any way.
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)
- Executing Machine-Instructions (AREA)
Abstract
Description
Claims
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| DE112004001040T DE112004001040B4 (en) | 2003-06-12 | 2004-06-02 | Method and data processor with reduced operation interruption due to operand dependencies |
| KR1020057023922A KR101183270B1 (en) | 2003-06-12 | 2004-06-02 | Method and data processor with reduced stalling due to operand dependencies |
| JP2006533521A JP4991299B2 (en) | 2003-06-12 | 2004-06-02 | Method for reducing stall due to operand dependency and data processor therefor |
| GB0526204A GB2418508B (en) | 2003-06-12 | 2004-06-02 | Method and data processor with reduced stalling due to operand dependencies |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US10/461,129 US7290121B2 (en) | 2003-06-12 | 2003-06-12 | Method and data processor with reduced stalling due to operand dependencies |
| US10/461,129 | 2003-06-12 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| WO2004111838A2 true WO2004111838A2 (en) | 2004-12-23 |
| WO2004111838A3 WO2004111838A3 (en) | 2005-10-27 |
Family
ID=33511189
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US2004/017092 Ceased WO2004111838A2 (en) | 2003-06-12 | 2004-06-02 | Method and data processor for reduced pipeline stalling |
Country Status (8)
| Country | Link |
|---|---|
| US (1) | US7290121B2 (en) |
| JP (1) | JP4991299B2 (en) |
| KR (1) | KR101183270B1 (en) |
| CN (1) | CN100380317C (en) |
| DE (1) | DE112004001040B4 (en) |
| GB (1) | GB2418508B (en) |
| TW (1) | TWI343543B (en) |
| WO (1) | WO2004111838A2 (en) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE102008045767A1 (en) | 2008-09-04 | 2010-03-11 | Continental Teves Ag & Co. Ohg | Microprocessor with pipeline bubble detector |
Families Citing this family (18)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7328429B2 (en) * | 2003-11-13 | 2008-02-05 | Intel Corporation | Instruction operand tracing for software debug |
| US7272751B2 (en) * | 2004-01-15 | 2007-09-18 | International Business Machines Corporation | Error detection during processor idle cycles |
| US20060095732A1 (en) * | 2004-08-30 | 2006-05-04 | Tran Thang M | Processes, circuits, devices, and systems for scoreboard and other processor improvements |
| US7774582B2 (en) * | 2005-05-26 | 2010-08-10 | Arm Limited | Result bypassing to override a data hazard within a superscalar processor |
| EP2041645B1 (en) * | 2006-07-11 | 2016-12-07 | Freescale Semiconductor, Inc. | Microprocessor and method for register addressing therein |
| US7565513B2 (en) * | 2007-02-28 | 2009-07-21 | Advanced Micro Devices, Inc. | Processor with power saving reconfigurable floating point unit decoding an instruction to single full bit operation or multiple reduced bit operations |
| US8977837B2 (en) * | 2009-05-27 | 2015-03-10 | Arm Limited | Apparatus and method for early issue and recovery for a conditional load instruction having multiple outcomes |
| US8464030B2 (en) * | 2010-04-09 | 2013-06-11 | International Business Machines Corporation | Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits |
| CN104126171B (en) | 2011-12-27 | 2018-08-07 | 英特尔公司 | For writing the systems, devices and methods that mask register generates dependence vector based on two sources |
| US9519944B2 (en) | 2014-09-02 | 2016-12-13 | Apple Inc. | Pipeline dependency resolution |
| US9875107B2 (en) | 2015-01-19 | 2018-01-23 | International Business Machines Corporation | Accelerated execution of execute instruction target |
| CN104915183B (en) * | 2015-06-23 | 2018-10-16 | 北京玉华骢科技股份有限公司 | A kind of feedforward detection circuit of multi-emitting assembly line |
| US10929142B2 (en) | 2019-03-20 | 2021-02-23 | International Business Machines Corporation | Making precise operand-store-compare predictions to avoid false dependencies |
| US11243774B2 (en) | 2019-03-20 | 2022-02-08 | International Business Machines Corporation | Dynamic selection of OSC hazard avoidance mechanism |
| US20210096877A1 (en) * | 2019-09-26 | 2021-04-01 | Advanced Micro Devices, Inc. | Collapsing bubbles in a processing unit pipeline |
| CN111124500B (en) * | 2019-12-12 | 2022-03-08 | 浪潮(北京)电子信息产业有限公司 | Instruction execution method, apparatus, device and storage medium |
| US11714652B2 (en) * | 2021-07-23 | 2023-08-01 | Advanced Micro Devices, Inc. | Zero operand instruction conversion for accelerating sparse computations in a central processing unit pipeline |
| US20250208874A1 (en) * | 2023-12-26 | 2025-06-26 | Arm Limited | Apparatus, system, chip-containing product and non-transitory computer-readable medium |
Family Cites Families (14)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4594655A (en) * | 1983-03-14 | 1986-06-10 | International Business Machines Corporation | (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions |
| US4734852A (en) * | 1985-08-30 | 1988-03-29 | Advanced Micro Devices, Inc. | Mechanism for performing data references to storage in parallel with instruction execution on a reduced instruction-set processor |
| US5128890A (en) * | 1991-05-06 | 1992-07-07 | Motorola, Inc. | Apparatus for performing multiplications with reduced power and a method therefor |
| US5488729A (en) * | 1991-05-15 | 1996-01-30 | Ross Technology, Inc. | Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution |
| GB9112754D0 (en) | 1991-06-13 | 1991-07-31 | Int Computers Ltd | Data processing apparatus |
| JPH06156382A (en) * | 1992-11-28 | 1994-06-03 | Sanshin Ind Co Ltd | Forward/reverse speed shifting device for vessel |
| US5887160A (en) * | 1996-12-10 | 1999-03-23 | Fujitsu Limited | Method and apparatus for communicating integer and floating point data over a shared data path in a single instruction pipeline processor |
| US5838941A (en) * | 1996-12-30 | 1998-11-17 | Intel Corporation | Out-of-order superscalar microprocessor with a renaming device that maps instructions from memory to registers |
| US5893928A (en) | 1997-01-21 | 1999-04-13 | Ford Motor Company | Data movement apparatus and method |
| JP3449186B2 (en) * | 1997-08-19 | 2003-09-22 | 富士通株式会社 | Data processing device having pipeline bypass function |
| US5872986A (en) * | 1997-09-30 | 1999-02-16 | Intel Corporation | Pre-arbitrated bypassing in a speculative execution microprocessor |
| US6112293A (en) * | 1997-11-17 | 2000-08-29 | Advanced Micro Devices, Inc. | Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result |
| US6094716A (en) * | 1998-07-14 | 2000-07-25 | Advanced Micro Devices, Inc. | Register renaming in which moves are accomplished by swapping rename tags |
| US6857060B2 (en) * | 2001-03-30 | 2005-02-15 | Intel Corporation | System, apparatus and method for prioritizing instructions and eliminating useless instructions |
-
2003
- 2003-06-12 US US10/461,129 patent/US7290121B2/en not_active Expired - Lifetime
-
2004
- 2004-06-02 DE DE112004001040T patent/DE112004001040B4/en not_active Expired - Lifetime
- 2004-06-02 WO PCT/US2004/017092 patent/WO2004111838A2/en not_active Ceased
- 2004-06-02 JP JP2006533521A patent/JP4991299B2/en not_active Expired - Lifetime
- 2004-06-02 GB GB0526204A patent/GB2418508B/en not_active Expired - Lifetime
- 2004-06-02 CN CNB200480016227XA patent/CN100380317C/en not_active Expired - Lifetime
- 2004-06-02 KR KR1020057023922A patent/KR101183270B1/en not_active Expired - Lifetime
- 2004-06-04 TW TW093116095A patent/TWI343543B/en not_active IP Right Cessation
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE102008045767A1 (en) | 2008-09-04 | 2010-03-11 | Continental Teves Ag & Co. Ohg | Microprocessor with pipeline bubble detector |
Also Published As
| Publication number | Publication date |
|---|---|
| DE112004001040B4 (en) | 2012-05-31 |
| TWI343543B (en) | 2011-06-11 |
| TW200508967A (en) | 2005-03-01 |
| US7290121B2 (en) | 2007-10-30 |
| CN100380317C (en) | 2008-04-09 |
| GB0526204D0 (en) | 2006-02-01 |
| US20040255099A1 (en) | 2004-12-16 |
| KR101183270B1 (en) | 2012-09-14 |
| GB2418508B (en) | 2007-03-14 |
| JP2007500406A (en) | 2007-01-11 |
| JP4991299B2 (en) | 2012-08-01 |
| CN1806227A (en) | 2006-07-19 |
| KR20060029614A (en) | 2006-04-06 |
| WO2004111838A3 (en) | 2005-10-27 |
| GB2418508A (en) | 2006-03-29 |
| DE112004001040T5 (en) | 2006-06-08 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7290121B2 (en) | Method and data processor with reduced stalling due to operand dependencies | |
| JP2597811B2 (en) | Data processing system | |
| US6862677B1 (en) | System and method for eliminating write back to register using dead field indicator | |
| US6430679B1 (en) | Pre-arbitrated bypasssing in a speculative execution microprocessor | |
| US6085312A (en) | Method and apparatus for handling imprecise exceptions | |
| WO1997024661A1 (en) | Apparatus for concurrent processing of pipelined instructions having register dependencies | |
| US5721945A (en) | Microprocessor configured to detect a DSP call instruction and to direct a DSP to execute a routine corresponding to the DSP call instruction | |
| US7228403B2 (en) | Method for handling 32 bit results for an out-of-order processor with a 64 bit architecture | |
| US8555041B2 (en) | Method for performing a return operation in parallel with setting status flags based on a return value register test | |
| US5778248A (en) | Fast microprocessor stage bypass logic enable | |
| US20040158694A1 (en) | Method and apparatus for hazard detection and management in a pipelined digital processor | |
| US6055628A (en) | Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks | |
| US20230315446A1 (en) | Arithmetic processing apparatus and method for arithmetic processing | |
| GB2375855A (en) | Locking source registers in a pipelined data processing apparatus | |
| US6708267B1 (en) | System and method in a pipelined processor for generating a single cycle pipeline stall | |
| US5778208A (en) | Flexible pipeline for interlock removal | |
| US6983359B2 (en) | Processor and method for pre-fetching out-of-order instructions | |
| US6092184A (en) | Parallel processing of pipelined instructions having register dependencies | |
| US6442678B1 (en) | Method and apparatus for providing data to a processor pipeline | |
| US20070079076A1 (en) | Data processing apparatus and data processing method for performing pipeline processing based on RISC architecture | |
| US20060179286A1 (en) | System and method for processing limited out-of-order execution of floating point loads | |
| EP1050800A1 (en) | A pipelined execution unit | |
| US7991816B2 (en) | Inverting data on result bus to prepare for instruction in the next cycle for high frequency execution units | |
| US8285765B2 (en) | System and method for implementing simplified arithmetic logic unit processing of value-based control dependence sequences | |
| HK1024960A (en) | Method and apparatus for handling imprecise exceptions |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AK | Designated states |
Kind code of ref document: A2 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW |
|
| AL | Designated countries for regional patents |
Kind code of ref document: A2 Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG |
|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
| DPEN | Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed from 20040101) | ||
| WWE | Wipo information: entry into national phase |
Ref document number: 2006533521 Country of ref document: JP Ref document number: 1020057023922 Country of ref document: KR Ref document number: 2004816227X Country of ref document: CN |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 0526204.3 Country of ref document: GB Ref document number: 0526204 Country of ref document: GB |
|
| WWP | Wipo information: published in national office |
Ref document number: 1020057023922 Country of ref document: KR |
|
| RET | De translation (de og part 6b) |
Ref document number: 112004001040 Country of ref document: DE Date of ref document: 20060608 Kind code of ref document: P |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 112004001040 Country of ref document: DE |
|
| 122 | Ep: pct application non-entry in european phase | ||
| REG | Reference to national code |
Ref country code: DE Ref legal event code: 8607 |
|
| WWW | Wipo information: withdrawn in national office |
Ref document number: 0526204.3 Country of ref document: GB |