EP0902362A2

Multiple instruction issue computer architecture

Abstract

A system for issuing a family of instructions during a single clock includes a decoder for decoding the family of instructions and logic, responsive to the decode result, for determining whether resource conflicts would occur if the family were issued during one clock. If no resource conflicts occur, an execution unit executes the family regardless of whether dependencies among the instructions in the family exist.

EP0902362A2, drawing sheet 1
Sheet 1 of 26

Term

Term ended

Projected expiry passed 21 May 2010, 16.3 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

13 claims: 6 independent, 7 dependent

  1. 1
    A method, performed by a data processor, of concurrently processing a family of instructions, with the data processor including a decode stage, having resources for decoding multiple instructions in a single clock and for generating microcode corresponding to each decoded instruction and with the data processor including a pipeline for concurrently processing multiple instructions, with the data processor having working registers for storing source operand data required to execute instructions and for storing result operand data resulting from the execution of instructions, said method comprising the steps of:concurrently decoding at least a pair of instructions to generate microcode, corresponding to each instruction, for controlling the pipeline to execute said pair of instructions, with the pair of instructions including a dependent instruction that utilizes source operand data which is result operand data resulting from executing the other instruction in the pair of instructions;concurrently issuing the pair of decoded instructions to said pipeline, with said microcode controlling the pipeline to process the pair of instructions;processing said other instruction in the pair to generate said result data;and bypassing said working registers to provide said result operand data as source operand data for said dependent instruction prior to writing said result operand to said working registers so that said dependent instructions can be processed prior to writing said result data in said working registers.
  2. 3
    A data processor for concurrently processing a family of instructions comprising:a decode stage, having resources for decoding multiple instructions in a single clock and for generating microcode corresponding to each decoded instruction;a pipeline for concurrently processing multiple instructions;working registers for storing source operand data required to execute instructions and for storing result operand data resulting from the execution of instructions;said processor being operable to: decode concurrently at least a pair of instructions to generate microcode, corresponding to each instruction, for controlling the pipeline to execute said pair of instructions, with the pair of instructions including a dependent instruction that utilizes source operand data which is result operand data resulting from executing the other instruction in the pair of instructions;issue concurrently the pair of decoded instructions to said pipeline, with said microcode controlling the pipeline to process the pair of instructions;process said other instruction in the pair to generate said result data;and bypass said working registers to provide said result operand data as source operand data for said dependent instruction prior to writing said result operand to said working registers so that said dependent instructions can be processed prior to writing said result data in said working registers.
  3. 4
    In a data processor, an improved instruction processing system that facilitates processing instructions at a rate of more than one instruction per clock, said system comprising:means for fetching a family of n, n being a predetermined integer, sequential instructions in a program;a pipeline, having a series of pipeline stages, including resources for accepting a family of n instructions at each pipeline stage during a single clock, with said accepted family of the type including multiple nonbranching instructions, with one of said nonbranching instructions being a memory reference type of instruction, so that said pipeline can retire a family of instructions and accept a new family of instructions each clock;a decoder, responsive to a fetched family of instructions, for generating a decode result associated with said fetched family of instructions;means, responsive to said decode result, for issuing said fetched family of instructions during one clock;means, responsive to said decode result, for controlling said pipeline to process said fetched family of instructions and to advance said fetched family through said pipeline stages.
  4. 7
    In a computer system of the type that includes resources, such as registers and an ALU, and an instruction pipeline for sequentially executing the ordered instructions in a program, a system for simultaneously executing a family of consecutive instructions in the program, said system comprising:means for fetching the family of instructions;a decoder, responsive to said fetched instructions, for generating a decode result associated with each fetched instruction, with each decode result including a status field indicating the resources required to execute the fetched instruction associated with the decode result;means, responsive to said status fields associated with said fetched instructions, for creating an indication that said fetched instructions may be simultaneously executed only if said status fields indicate that the execution of said status fields indicate that the execution of said fetched instructions will not cause a resource conflict;and means, responsive to said indication and said decoding result, for generating a family execution decode result;and means, responsive to said family execution decode result, for concurrently issuing the family of instructions.
  5. 10
    In a computer that includes resources such as registers and an ALU and executes a program of sequential instructions selected from a predetermined instruction set, a system for simultaneously executing selected pairs of instructions included in a first subset of the instruction set where, during sequential execution, the second instruction in the selected pair depends on the first instruction in the sense that the execution of the second instruction depends on a result of the execution of the first instruction, said system comprising:means for fetching a given pair of sequential instructions in the program;decoding means for generating a decoding result for each instruction in the fetched pair;means, responsive to said decoding results, for indicating whether said given pair is one of the selected pairs that may be simultaneously executed;a data unit, responsive to said means for indicating and adapted to receive said decoding result, for creating a pair identification if said given fetched pari is one of the selected pairs;and an execution unit, responsive to said identification, for simultaneously executing the given selected pair by eliminating the dependency present during the sequential execution of the given pair.
  6. 13
    In a computer that executes a program of sequential instructions selected from a predetermined instruction set, a method for simultaneously executing selected pairs of instructions where, during sequential execution, the second instruction in the pair depends on the first instruction in the sense that the execution of the second instruction depends on a result of the execution of the first instruction, said method comprising:fetching a given pair of sequential instructions in the program;generating a decoding result for each instruction in the fetched pair;in response to said decoding results, indicating whether said given pair is one of the selected pairs that may be simultaneously executed;in response to said indicating and said decoding result, creating a pair identification if said given fetched pair is one of the selected pairs;and in response to said identification, simultaneously executing the given selected pair by eliminating the dependency present during the sequential execution of the given pair.