EP0454984A2

General purpose compounding technique for instruction-level processors.

Abstract

This is a method of compounding two or more instructions from an instruction stream without knowing the starting point or length of each individual instruction. All instructions include one OP Code at a predetermined field location which identifies the instruction and its length. Those instructions which qualify need to have appropriate tags to indicate they are candidates for compounding. In System 370 where instructions are either 2,4 or 6 bytes in length, the field positions for the OP Code are presumed based on an estimated instruction length code. The value of each tag based on a presumed OP Code is recorded, and the instruction length code in the presumed OP Code is used to locate a complete sequence of possible instructions. Once an actual instruction boundary is found, the corresponding correct tag values are used to identify the commencement of a compound instruction, and other incorrectly generated tags are ignored.

EP0454984A2, drawing sheet 1
Sheet 1 of 22

Term

Term ended

Projected expiry passed 20 March 2011, 15.5 years ago.

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

27 claims: 13 independent, 14 dependent

  1. 1
    A method of identifying instruction sequences in a byte stream and tagging at least two instructions for parallel execution, including the following steps:starting a first possible instruction sequence by selecting a presumed first instruction;locating a first instruction length for said presumed first instruction in said first possible instruction sequence;using said first instruction length to locate at least a presumed second instruction;and encoding said presumed first and said at least second instructions to indicate whether they are tagged for parallel execution by a particular computer system configuration.
  2. 5
    The method of one of claims 1 to 4 wherein the byte stream includes instructions having a fixed length.
  3. 6
    The method of one of claims 1 to 5 wherein the byte stream includes instructions having a variable length.
  4. 7
    The method of one of claims 1 to 6 wherein the byte stream includes non-instructions intermixed with instructions.
  5. 8
    The method of one of claims 1 to 7 wherein there are not any instruction boundary reference points in the byte stream.
  6. 9
    The method of one of claims 1 to 8 wherein the byte stream includes non-instructions intermixed with instructions.
  7. 10
    The method of one of claims 1 to 9 wherein the byte stream includes instructions having a variable length.
  8. 11
    The method of one of claims 1 to 10 wherein said encoding step includes encoding said presumed first and second and said at least third instructions to indicate whether they are tagged for parallel execution by a particular computer system configuration.
  9. 12
    The method of one of claims 1 to 11 further including the steps of keeping track of the byte positions associated with said presumed instructions in said first possible instruction sequence;keeping track of the byte positions associated with said presumed instructions in said second possible instruction sequence;and maintaining a separate identifier tag for each of the byte positions associated with said presumed instructions.
  10. 14
    The method of one of claims 1 to 13 wherein an encoding tag identifying the largest number of said as least three presumed instructions capable of parallel execution is maintained for use at instruction execution time.
  11. 15
    A method of pre-processing certain unfetched instructions in a binary instruction stream to identify instructions capable of parallel execution in a particular computer system configuration, including the steps of:generating a first possible sequence of presumed instructions based on their instruction length;comparing each pair of presumed instructions in said first possible sequence to determine their capability of parallel execution;and encoding a control tag associated with each presumed instruction to identify those pair of presumed instructions tagged for parallel execution in the particular computer system configuration.
  12. 22
    The method of one of claims 15 to 21 wherein said comparing step includes comparing groups of two or more presumed instructions.
  13. 24
    A method of processing instructions in an instruction stream having no known instruction boundary reference points, to identify adjacent scalar instructions which are capable of parallel execution in a particular computer configuration, including the steps of:generating different sequences of presumed instructions starting at different possible instruction boundaries;and encoding each presumed instruction with an identifier tag indicating its capability of being executed in parallel with its adjacent instruction.