EP0454985A2

Scalable compound instruction set machine architecture.

Abstract

Described is a scalable compound instruction set machine and method which provides for processing a set of instructions or program to be executed by a computer to determine statically which instructions may be combined into compound instructions which are executed in parallel by a scalar machine. Such processing looks for classes of instructions that can be executed in parallel without data-dependent or hardware-dependent interlocks. Without regard to their original sequence the individual instructions are combined with one or more other individual instructions to form a compound instruction which eliminates interlocks. Control information is appended to identify information relevant to the execution of the compound instructions. The result is a stream of scalar instructions compounded or grouped together before instruction decode time so that they are already flagged and identified for selective simultaneous parallel execution by execution units. The compounding does not change the object code results and existing programs realize performance improvements while maintaining compatibility with previously implemented systems for which the original set of instructions was provided.

EP0454985A2, drawing sheet 1
Sheet 1 of 25

Term

Term ended

Projected expiry passed 20 March 2011, 15.5 years ago.

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

22 claims: 13 independent, 9 dependent

  1. 1
    A method of obtaining parallel execution of existing instructions in a particular configuration of a data processing system, including:allocating certain of the existing instructions into multiple categories;comparing the categories of adjacent existing instructions in an instruction stream to determine whether the adjacent existing instructions are capable of parallel execution in the particular configuration of a data processing system, and identifying with a compounding indicator those adjacent existing instructions which are determined by said comparing step to be capable of parallel execution.
  2. 4
    The method of one of claims 1 to 3 wherein said allocating step includes allocating certain instructions into at least two different non-overlapping categories such that said comparing step causes said identifying step to identify with a compounding indicator at least two adjacent existing instructions from said at least two categories, respectively, for parallel execution.
  3. 5
    The method of one of claims 1 to 4 wherein said identifying step includes leaving the object code of the existing instructions in its original form for execution singly or for execution in parallel with another instruction.
  4. 6
    The method of one of claims 1 to 5 wherein said allocating step includes taking into account data dependent interlocks between instructions as well as the existence of related interlock collapsing functional units in the particular configuration of the data processing system.
  5. 7
    The method of one of claims 1 6 wherein said allocating step includes taking into account hardware dependent interlocks between instructions as well as the existence of related interlock collapsing functional units in the particular configuration of the data processing system.
  6. 8
    The method of one of claims 1 to 7 wherein said comparing step includes comparing a first existing instruction with a second adjacent following instruction for possible compounding with each other, and then comparing the second instruction with a third adjacent following instruction for possible compounding with each other, to identify multiple compound instructions identified by multiple compound indicators, respectively.
  7. 10
    The method of one of claims 1 to 9 wherein said comparing step to determine whether the adjacent existing instructions are capable of parallel execution is based on hardware utilization rather than on opcode description.
  8. 11
    A system for processing a sequence of instructions taken from an existing set of machine instructions in order to prepare the sequence for parallel execution by a particular computer configuration, including:a set of rules based on the particular computer configuration indicating certain machine instructions which are capable of parallel execution with other machine instructions;and compounding means for pre-processing prior to instruction fetch a binary instruction stream containing a sequence of existing instructions, said compounding means having access to said set of rules for identifying adjacent instructions capable of parallel execution in the particular computer configuration and for producing a compounded sequence of instructions having a control field identifying individual adjacent instructions capable of parallel execution and which together form a compound instruction.
  9. 14
    The system of one of claims 11 to 13 wherein said compounding means is capable of producing a compounded sequence of instructions having a control field identifying pairs of adjacent instructions capable of parallel execution.
  10. 16
    The system of one of claims 11 to 15, wherein said control field comprises at least one identifier bit associated with each compound instruction.
  11. 18
    The system of one of claims 11 to 17, wherein said control field comprises at least one identifier bit associated with each individual instruction forming a compound instruction.
  12. 20
    The system of one of claims 11 to 19 wherein said set of rules is based on hardware utilization rather than on opcode description.
  13. 21
    A system for generating an instruction stream for parallel execution in a particular computer configuration, comprising:a list of existing scalar instructions grouped into multiple categories based on the capability of the same or different categories of instructions to be executed in parallel in the particular computer configuration;pre-processing means for receiving an input of scalar instructions as part of a binary byte stream, and for determining from said list which adjacent scalar instructions are candidates for parallel execution in the particular computer configuration;and compounding means for creating a tag associated with certain of said scalar instructions in the instruction stream indicating which adjacent scalar instructions are part of a compound instruction capable of parallel execution and which scalar instructions in the instruction stream are not capable of parallel execution in the particular computer configuration.