Nova Patents
EP0583089A2

Instruction decoder.

Abstract

A super-scalar microprocessor performs operations upon a plurality of instructions at each of its fetch, decode, execute, and write-back stages. To support such operations, the super-scalar microprocessor includes a dispatch arrangement including an instruction cache for fetching blocks of instructions including a plurality of instructions and an instruction decoder which decodes and dispatches the instructions to functional units for execution. The instruction decoder applies a dispatch criteria to selected instructions of each block of instructions and dispatches the selected instructions which satisfy the dispatch criteria. The dispatch criteria includes the requirement that the instructions be dispatched speculatively in order, that supporting operands be available for the execution of the instructions, or tagged values substituted that will be available later, and that the functional units required for executing the instructions be available. The operation of the instruction decoder and the instruction cache is coordinated by a preset protocol which assures that the instructions are dispatched in ascending consecutive order and that blocks of instructions are efficiently fetched for decode and dispatch by the instruction decoder.

EP0583089A2, drawing sheet 1
Sheet 1 of 8

Term

Term ended

Projected expiry passed 20 July 2013, 13.2 years ago.

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

20 claims: 20 independent, 0 dependent

  1. 1
    An instruction decoder for use in a processor of the type including a source of instructions and a plurality of functional units for executing said instructions, said instruction decoder comprising:input means coupled to said source of instructions for receiving a block of said instructions from said source of instructions, said block of instructions containing a plurality of said instructions;decoding means for decoding selected ones of said instructions of said received block of instructions, said decoding means including dispatch control means for applying a dispatch criteria to said selected ones of said instructions of said received block of instructions;and    output means coupled to said functional units and responsive to said dispatch control means for dispatching all of said selected instructions of said received block of instructions satisfying said dispatch criteria in parallel to said functional units.
  2. 2
    An instruction decoder as defined in claim 1 wherein said dispatch control means further includes means for providing a control signal having a first state indicating that all of said selected instructions of said received block of instructions have been dispatched, said control signal being applied to said source of instructions for causing said source of instructions, when said control signal is in said first state, to provide a further block of instructions to said instruction decoder input means.
  3. 3
    An instruction decoder as defined in claim 2 wherein said control signal has a second state indicating that less than all of said selected instructions of said received block of instructions have been dispatched for causing said source of instructions to once again provide said block of instructions to said instruction decoder input means.
  4. 4
    An instruction decoder as defined in claim 3 wherein said source of instructions provides a predicted executed signal accompanying each said instruction provided to said instruction decoder, each said predicted executed signal having a first state or a second state, wherein said selected instructions are those instructions accompanied by a predicted executed signal in said first state, and wherein said instruction decoder is responsive to said predicted executed signals for decoding and applying said dispatch criteria to only those instructions having a predicted executed signal in said first state.
  5. 5
    An instruction decoder as defined in claim 4 wherein said dispatch control means further includes means for providing a set of dispatch status signals, each said dispatch status signal corresponding to a respective given one of said instructions of said received block of instructions, each said dispatch status signal having a first state indicating that its corresponding instruction has been dispatched or a second state indicating that its corresponding instruction has not been dispatched.
  6. 6
    An instruction decoder as defined in claim 5 wherein said dispatch status signals are applied to said source of instructions for causing said source of instructions to set to said second state the predicted executed signals corresponding to the instructions which have been dispatched by said instruction decoder.
  7. 7
    An instruction decoder as defined in claim 6 wherein said plurality of instructions of said received block of instructions are arranged in ascending order and wherein said decoding means scans said block of instructions in said ascending order and begins decoding and applying said dispatch criteria with the first one of said instructions having a predicted executed signal in said first state.
  8. 8
    An instruction decoder as defined in claim 7 wherein said decoding means decodes and said dispatch control means applies said dispatch criteria to said selected instructions until one of said selected instructions fails to satisfy said dispatch criteria.
  9. 9
    An instruction decoder as defined in claim 1 wherein said processor further includes register file means for storing operand data associated with said instructions, said register file means including a plurality of read ports for providing said functional units with said operand data, wherein each said instruction includes predecoded information indicating the number of read ports required for executing said instruction, and wherein said decoding means includes pointer means responsive to said predecoded information to generate read pointers and allocating means responsive to said read pointers for allocating said read ports for said block of instructions.
  10. 10
    An instruction decoder as defined in claim 9 wherein said read ports are fewer in number than potentially required for the execution of said selected instructions of said block of instructions, wherein said allocating means allocates said read ports for said selected instructions until all said read ports are allocated, said allocating means being coupled to said dispatch control means, and wherein said dispatch control means precludes said output means from dispatching those selected instructions for which a required read port is not allocated.
  11. 11
    An instruction decoder as defined in claim 10 wherein said plurality of instructions of said block of instructions are arranged in ascending order and wherein said allocating means allocates said read ports to said selected instructions in said ascending order.
  12. 12
    An instruction decoder as defined in claim 9 wherein said processor further includes buffer means for storing forwarded operands required by said instructions, said decoding means being coupled to said buffer means for providing said buffer means with said read pointers, wherein said buffer means is responsive to said read pointers for determining if its entries contain operand data required for executing said instructions, and wherein said buffer means provides said dispatch control means with status signals indicating for which ones of said selected instructions it can provide required operand data.
  13. 13
    An instruction decoder as defined in claim 12 wherein said dispatch control means is responsive to said status signals for not allocating said register file read ports for those ones of said selected instructions which can be provided with required operand data by said buffer means.
  14. 14
    An instruction decoder as defined in claim 13 wherein said dispatch control means causes said output means to dispatch only those selected instructions which have required allocated read ports or which can be provided with required operand data from said buffer means.
  15. 15
    An instruction decoder as defined in claim 1 wherein each said instruction includes an opcode, wherein said functional units are of different types, and wherein said decoding means includes a type decoder responsive to said opcodes for decoding which type of said functional units is required for executing each said instruction and for providing type signals indicative of the type of functional unit required for executing each said instruction.
  16. 16
    An instruction decoder as defined in claim 15 wherein each said functional unit has a capacity for receiving a finite number of instructions, wherein each said functional unit provides said dispatch control means with a status signal indicating its availability for receiving an instruction, wherein said type decoder is coupled to said dispatch control means for providing said dispatch control means with said type signals, and wherein said dispatch control means precludes said output means from dispatching a selected instruction when said status signals indicate that all functional units of a type required to execute said selected instruction are not available.
  17. 17
    An instruction decoder as defined in claim 16 wherein said plurality of said instructions of said received block of instructions are received by said input means in ascending order and wherein said dispatch control means ceases dispatching instructions of said block of instructions upon precluding a selected one of said instructions from being dispatched.
  18. 18
    An instruction dispatch arrangement for use in a microprocessor of the type including multiple functional units and configured for executing a plurality of instructions during each microprocessor operating cycle, said instruction dispatch arrangement comprising:an instruction source for providing a block of said instructions during each said operating cycle, said block of instructions including a plurality of said instructions, said instruction source also providing a predicted executed bit with selected ones of said instructions of said block of instructions;and    instruction decoder means coupled to said instruction source for applying a dispatch criteria to said selected instructions of said block of instructions and dispatching to said functional units for execution all said selected instructions satisfying said dispatch criteria.
  19. 19
    A microprocessor arranged to execute at least one instruction during each cycle of consecutive operating cycles, said microprocessor comprising:instruction source means for providing a block of instructions during a present one of said operating cycles, said block of instructions including a plurality of said instructions, said instruction source means providing with each said instruction a predicted executed bit, said predicted executed bit being set for selected ones of said instructions;instruction decoder means coupled to said instruction source means for decoding and applying a dispatch criteria to said selected ones of said plurality of said instructions of said block of instructions during said present operating cycle and for dispatching during the next operating cycle immediately following said present operating cycle all said selected instructions satisfying said dispatch criteria;and    a plurality of functional units coupled to said instruction decoder means for receiving said dispatched instructions during said next operating cycle immediately following said present operating cycle for executing said dispatched instructions.
  20. 20
    An instruction dispatch arrangement for use in a microprocessor of the type including multiple functional units and configured for executing a plurality of instructions during each microprocessor operating cycle, said instruction dispatch arrangement comprising:an instruction source for providing a plurality of said instructions during each said operating cycle;and    instruction decoder means coupled to said instruction source for applying a dispatch criteria to said plurality of instructions and dispatching to said functional units all said instructions satisfying said dispatch criteria.
Independent claims20