← Back to Patent Explorer
US5555384A Expired / Lapsed US ⏱️ 0.0 years remaining

Rescheduling conflicting issued instructions by delaying one conflicting instruction into the same pipeline stage as a third non-conflicting instruction

Assignee: ARM Finance Overseas Ltd
•
Filing: 1994-10-18
•
Granted: 1996-09-10
•
Expires: 2014-10-18
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract Methods and apparatus for optimizing the operation of an instruction pipeline in a computer are disclosed. The methods and apparatus function at both the effective beginning and end of the pipeline. At the pipeline's beginning, a Pipeline Controller monitors the availability of data for various floating point operations. Data is read at either a fast or slow rate, depending on its availability, and instructions are allowed to proceed through the pipeline based on this data availability. At the effective end of the pipeline, the Controller monitors all instructions in the pipeline, notes all potential resource conflicts, and resolves these potential conflicts by either the insertion of an appropriate number of HOLD states or the conclusion that no actual resource competition exists.

Inventors

  • 👤 David B. Roberts
  • 👤 George S. Taylor
  • 👤 David M. Parry

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-03 20:06
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/30; G06F9/38; G06F9/3867; G06F9/3871; G06F9/30003; G06F9/30007; G06F9/3001; G06F9/30014; G06F9/30036; G06F9/3824; G06F9/3826; G06F9/3828; G06F9/3836; G06F9/3873; G06F9/3877

Claims Analysis

Total Claims: 25
Claim 1
Independent Claim 222 words
A pipeline controller for a computer system having an instruction pipeline containing a plurality of types of multiple stage issued instructions, having variable execution latencies, and requiring particular computer resources at different stages of execution, the controller comprising: pipeline monitoring means coupled to the instruction pipeline for detecting the types and stages of execution of issued instructions in the pipeline; conflict detector means coupled to the pipeline monitoring means for detecting when two issued instructions in the pipeline will require a given computer resource in a same stage at some future time; and rescheduler means coupled to both the conflict detector means and to the instruction pipeline for rescheduling one of said two issued instructions which will be in the same stage at some future time, said rescheduler means including means for detecting when a third issued instruction will not require said given computer resource in said same stage at some other future time, and means for enabling the rescheduled one of said two issued instructions and said third issued instruction to continue execution such that the rescheduled one of said two issued instructions has exclusive access to said computer resource at said other future time when both said third issued instruction and the rescheduled one of said two issued instructions are in the same stage of execution in the instruction pipeline.
Claim 2
Dependent Claim 222 words
A pipeline controller for a computer system having an instruction pipeline containing a plurality of types of multiple stage issued instructions, having variable execution latencies, and requiring particular computer resources at different stages of execution, the controller comprising: pipeline monitoring means coupled to the instruction pipeline for detecting the types and stages of execution of issued instructions in the pipeline; conflict detector means coupled to the pipeline monitoring means for detecting when two issued instructions in the pipeline will require a given computer resource in a same stage at some future time; and rescheduler means coupled to both the conflict detector means and to the instruction pipeline for rescheduling one of said two issued instructions which will be in the same stage at some future time, said rescheduler means including means for detecting when a third issued instruction will not require said given computer resource in said same stage at some other future time, and means for enabling the rescheduled one of said two issued instructions and said third issued instruction to continue execution such that the rescheduled one of said two issued instructions has exclusive access to said computer resource at said other future time when both said third issued instruction and the rescheduled one of said two issued instructions are in the same stage of execution in the instruction pipeline.
Claim 3
Dependent Claim 24 words
The pipeline controller of claim 1 wherein the rescheduler means inserts `Hold` stages into those instructions which will be in conflict with other instructions.
Claim 4
Dependent Claim 42 words
The invention of claim 1 wherein said computer system provides computer resources required by said instructions; and wherein said conflict detector means includes means for determining whether said at least two instructions will require a same resource when in the same stage.
Claim 5
Dependent Claim 28 words
The invention of claim 3 wherein said same resource comprises a register file to which a write operation will be required by at least one of said instructions.
Claim 6
Independent Claim 204 words
A method for controlling execution of issued instructions in a computer, having an instruction pipeline for receiving a plurality of multi-stage instructions, having variable execution latencies, and a plurality of computer resources, the method comprising the steps of; (a) monitoring each issued instruction in the instruction pipeline; (b) determining what computer resources are needed for each issued instruction and the stages at which the needed resources will be required by each instruction; (c) detecting when two different issued instructions will require one identical resource at a same time; (d) rescheduling one of the two issued instructions so that the identical resource will no longer be required at the same time by the two issued instructions; (e) detecting when a third issued instruction will not require said identical resource during a given stage of said third issued instruction; and (f) enabling the rescheduled one of said two issued instructions and said third issued instruction to continue execution such that the rescheduled one of said two issued instructions has exclusive access to said computer resource at said other future time when both said third issued instruction and the rescheduled one of said two issued instructions are in the same stage of execution in the instruction pipeline.
Claim 7
Independent Claim 204 words
A method for controlling execution of issued instructions in a computer, having an instruction pipeline for receiving a plurality of multi-stage instructions, having variable execution latencies, and a plurality of computer resources, the method comprising the steps of; (a) monitoring each issued instruction in the instruction pipeline; (b) determining what computer resources are needed for each issued instruction and the stages at which the needed resources will be required by each instruction; (c) detecting when two different issued instructions will require one identical resource at a same time; (d) rescheduling one of the two issued instructions so that the identical resource will no longer be required at the same time by the two issued instructions; (e) detecting when a third issued instruction will not require said identical resource during a given stage of said third issued instruction; and (f) enabling the rescheduled one of said two issued instructions and said third issued instruction to continue execution such that the rescheduled one of said two issued instructions has exclusive access to said computer resource at said other future time when both said third issued instruction and the rescheduled one of said two issued instructions are in the same stage of execution in the instruction pipeline.
Claim 8
Dependent Claim 35 words
The method of claim 5 wherein the step of rescheduling comprises maintaining one of said instructions in a "HOLD" state until the two different instructions will not require the identical resource at the same time.
Claim 9
Dependent Claim 60 words
The method of claim 5 wherein said one identical resource is a register file to which a write operation will be required by at least one of said instructions; and wherein said step of detecting includes the step of determining whether both of said two different instructions will require a write operation to said register file at the same time.
Claim 10
Independent Claim 193 words
A method for optimizing the operation of a multi-stage instruction pipeline for receiving multi-stage instructions in a computer having a processor with an internal data path and a memory bus, the instructions in the pipeline requiring different amounts of data, the processor data path having a first data width, and the memory bus having a second, smaller data width, the method comprising the steps of: monitoring the instructions in the pipeline and the processor; monitoring the amount of data required by each instruction; detecting whether the amount of data required by a given instruction can be accommodated by the memory bus in a preset amount of time; ordering the processor to read the data in successive stages of said pipeline over a total time equal to a multiple of the preset amount of time if the memory bus cannot accommodate all of the data required by a given instruction in said preset amount of time, and permitting said given instruction to proceed to a next stage in the instruction pipeline after the first read operation; and allowing a new instruction to enter said pipeline in the stage from which said given instruction proceeded.
Claim 11
Independent Claim 193 words
A method for optimizing the operation of a multi-stage instruction pipeline for receiving multi-stage instructions in a computer having a processor with an internal data path and a memory bus, the instructions in the pipeline requiring different amounts of data, the processor data path having a first data width, and the memory bus having a second, smaller data width, the method comprising the steps of: monitoring the instructions in the pipeline and the processor; monitoring the amount of data required by each instruction; detecting whether the amount of data required by a given instruction can be accommodated by the memory bus in a preset amount of time; ordering the processor to read the data in successive stages of said pipeline over a total time equal to a multiple of the preset amount of time if the memory bus cannot accommodate all of the data required by a given instruction in said preset amount of time, and permitting said given instruction to proceed to a next stage in the instruction pipeline after the first read operation; and allowing a new instruction to enter said pipeline in the stage from which said given instruction proceeded.
Claim 12
Dependent Claim 42 words
The method of claim 8 wherein the processor can use a maximum of 64 bits of data in the preset amount of time and the memory bus can supply a maximum of 32 bits of data in the preset amount of time.
Claim 13
Dependent Claim 15 words
The method of claim 8 wherein the preset amount of time is one machine cycle.
Claim 14
Dependent Claim 214 words
For use in a computer having a processing means, a multi-stage instruction pipeline coupled to the processing means for supplying multi-stage instructions thereto, a memory means for storing data, and a memory bus means for enabling transfer of data between the processing means and said memory means, said processing means having an internal data bus of first data width, said memory bus means having a data width less than said first data width; a controller means for controlling the transfer of data from the memory means to the processing means and for controlling the flow of instructions through the instruction pipeline, said controller means including means for determining the amount of data required by a given instruction, means for determining whether the amount of data required by the given instruction exceeds the data width of said memory bus, means for enabling a sequential read of the amount of data required by the given instruction during successive stages of the given instruction's execution in the pipeline, means for permitting the given instruction to proceed to a next stage in the instruction pipeline prior to the completion of the sequential read of the amount of data; and means for allowing a new instruction to enter said pipeline in the stage from which said given instruction proceeded.
Claim 15
Dependent Claim 214 words
For use in a computer having a processing means, a multi-stage instruction pipeline coupled to the processing means for supplying multi-stage instructions thereto, a memory means for storing data, and a memory bus means for enabling transfer of data between the processing means and said memory means, said processing means having an internal data bus of first data width, said memory bus means having a data width less than said first data width; a controller means for controlling the transfer of data from the memory means to the processing means and for controlling the flow of instructions through the instruction pipeline, said controller means including means for determining the amount of data required by a given instruction, means for determining whether the amount of data required by the given instruction exceeds the data width of said memory bus, means for enabling a sequential read of the amount of data required by the given instruction during successive stages of the given instruction's execution in the pipeline, means for permitting the given instruction to proceed to a next stage in the instruction pipeline prior to the completion of the sequential read of the amount of data; and means for allowing a new instruction to enter said pipeline in the stage from which said given instruction proceeded.
Claim 16
Dependent Claim 22 words
The controller of claim 11 wherein the internal data bus is 64 bits wide and the memory bus is 32 bits wide.
Claim 17
Independent Claim 476 words
A method of varying a progression of instructions through an instruction pipeline having a plurality of stages in a data processing system having a flow path having a plurality of stages, a register file, an input data bus and a plurality of bypass multiplexers interconnecting predetermined data stages in the data flow path and having a known processing cycle, said instructions including a first instruction type requiring operands having a first data width and a second instruction type requiring operands having a second data width wider than said first data width, said method comprising the steps of: A. introducing a first instruction into a given stage in the instruction pipeline; B. determining the type of instruction; C. for an instruction of the first type, proceeding by: (I) making at least one operand required by the instruction of the first type available; (II) determining whether each operand required by the instruction of the first type is available from said register file or from a subsequent stage of the pipeline via one of said plurality of bypass multiplexers; (a) if so, reading each operand required and permitting the instruction to proceed to a next stage in the instruction pipeline for further processing; (b) if not, holding the instruction in the given stage for at least one processing cycle and repeating steps (I) and (II); D. for an instruction of the second type, proceeding by: (III) making at least part of each operand required by the instruction of the second type available, each operand required by the second type of instruction having a first and a second half; (IV) determining whether the first and second halves of each operand are available from said register file or from a subsequent stage of the pipeline via one of said plurality of bypass multiplexers; (c) if so, reading each operand required and permitting the instruction to proceed to the next stage in the instruction pipeline for further processing; (d) if not, determining whether the first half of each operand required is available from said register file or from a subsequent stage of the pipeline via one of said plurality of bypass multiplexers: (i) if so, reading the first half of each operand required and permitting the instruction to proceed to the next stage in the instruction pipeline and proceeding to step (aa); (ii) if not, holding the instruction in the given stage for at least one processing cycle and repeating step (d); (aa) determining whether the second half of each operand required is available from said register file or from a subsequent stage of the pipeline via one of said plurality of bypass multiplexers; (x) if so, reading the second half of each operand required and permitting further processing of the instruction; (y) if not, holding the instruction in the next stage for at least one processing cycle and repeating step (aa).
Claim 18
Independent Claim 476 words
A method of varying a progression of instructions through an instruction pipeline having a plurality of stages in a data processing system having a flow path having a plurality of stages, a register file, an input data bus and a plurality of bypass multiplexers interconnecting predetermined data stages in the data flow path and having a known processing cycle, said instructions including a first instruction type requiring operands having a first data width and a second instruction type requiring operands having a second data width wider than said first data width, said method comprising the steps of: A. introducing a first instruction into a given stage in the instruction pipeline; B. determining the type of instruction; C. for an instruction of the first type, proceeding by: (I) making at least one operand required by the instruction of the first type available; (II) determining whether each operand required by the instruction of the first type is available from said register file or from a subsequent stage of the pipeline via one of said plurality of bypass multiplexers; (a) if so, reading each operand required and permitting the instruction to proceed to a next stage in the instruction pipeline for further processing; (b) if not, holding the instruction in the given stage for at least one processing cycle and repeating steps (I) and (II); D. for an instruction of the second type, proceeding by: (III) making at least part of each operand required by the instruction of the second type available, each operand required by the second type of instruction having a first and a second half; (IV) determining whether the first and second halves of each operand are available from said register file or from a subsequent stage of the pipeline via one of said plurality of bypass multiplexers; (c) if so, reading each operand required and permitting the instruction to proceed to the next stage in the instruction pipeline for further processing; (d) if not, determining whether the first half of each operand required is available from said register file or from a subsequent stage of the pipeline via one of said plurality of bypass multiplexers: (i) if so, reading the first half of each operand required and permitting the instruction to proceed to the next stage in the instruction pipeline and proceeding to step (aa); (ii) if not, holding the instruction in the given stage for at least one processing cycle and repeating step (d); (aa) determining whether the second half of each operand required is available from said register file or from a subsequent stage of the pipeline via one of said plurality of bypass multiplexers; (x) if so, reading the second half of each operand required and permitting further processing of the instruction; (y) if not, holding the instruction in the next stage for at least one processing cycle and repeating step (aa).
Claim 19
Dependent Claim 27 words
The method of claim 13 wherein said first type of instruction is a single precision instruction and said second type of instruction is a double precision instruction.
Claim 20
Dependent Claim 87 words
The invention of claim 13 wherein said first instruction includes a source address for each operand required by said first instruction; wherein the instruction pipeline contains at least one other instruction introduced thereinto before said first instruction, said other instruction including a destination address for data resulting from a processing of said other instruction; and wherein at least one of said steps of determining includes the step of comparing said source address with the destination address to determine availability of each operand required by said first instruction.
Claim 21
Independent Claim 230 words
A method for controlling execution of issued instructions, having variable execution latencies, in a data processing system having an instruction pipeline with a plurality of stages for temporarily holding issued instructions identifying data processing operations, said data processing system having at least one data processing element to which access is required by at least two of said issued instructions, said method comprising the steps of: (a) monitoring the issued instructions in various stages in the pipeline; (b) determining whether two issued instructions in the pipeline will require contemporaneous access to an identical data processing element when each issued instruction is in an identical later stage in the instruction pipeline; (c) temporarily holding one of said two issued instructions in a current stage in the instruction pipeline in response to the determining step (b); (d) detecting another issued instruction which will not require contemporaneous access to said identical data processing element when in said identical later stage in the instruction pipeline; and (e) permitting the held instruction and said other issued instruction to continue execution such that the held issued instruction has exclusive access to said computer resource at said other future time when both the held issued instruction and said other issued instruction are in the same stage of execution in the instruction pipeline to proceed to a next stage in the pipeline in response to the detecting step (d).
Claim 22
Independent Claim 230 words
A method for controlling execution of issued instructions, having variable execution latencies, in a data processing system having an instruction pipeline with a plurality of stages for temporarily holding issued instructions identifying data processing operations, said data processing system having at least one data processing element to which access is required by at least two of said issued instructions, said method comprising the steps of: (a) monitoring the issued instructions in various stages in the pipeline; (b) determining whether two issued instructions in the pipeline will require contemporaneous access to an identical data processing element when each issued instruction is in an identical later stage in the instruction pipeline; (c) temporarily holding one of said two issued instructions in a current stage in the instruction pipeline in response to the determining step (b); (d) detecting another issued instruction which will not require contemporaneous access to said identical data processing element when in said identical later stage in the instruction pipeline; and (e) permitting the held instruction and said other issued instruction to continue execution such that the held issued instruction has exclusive access to said computer resource at said other future time when both the held issued instruction and said other issued instruction are in the same stage of execution in the instruction pipeline to proceed to a next stage in the pipeline in response to the detecting step (d).
Claim 23
Dependent Claim 50 words
The invention of claim 16 wherein said data processing element is a register file; and wherein said step (b) of determining includes the step of determining that said two instructions will require access to the register file during the identical later stage to write information resulting from processing each instruction.
Claim 24
Dependent Claim 34 words
The invention of claim 16 wherein said step (c) of temporarily holding is performed on that one of said two instructions introduced into the instruction pipeline before the other one of said two instructions.
Claim 25
Dependent Claim 17 words
The invention of claim 16 wherein at least some of the said instructions have different operational latencies.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1999-09-10 2000-03-11 2000-09-10 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2003-09-10 2004-03-11 2004-09-10 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2007-09-10 2008-03-11 2008-09-10 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag