[Next] [Up] [Previous]

Instructions Longer than 32 Bits

Instructions longer than 32 bits, like 17-bit instructions, may only be present in blocks that either begin with the four bits 1111, which is followed by a sequence of fourteen pairs of bits, each of which constitutes a prefix field, associated with each of the 16-bit halves of the remaining 32-bit instruction slots in the block, or which begin with a closely related header type, specivically, the header types shown as V, VI, VIII, IX, X, and XI in the diagram below, or in blocks of other types if they are encapsulated within an instruction bundle in the manner explained in the first page of this section.

This header format is illustrated as the format of type II in the diagram below, which also appeared on the first page of this description of the Concertina II architecture:

Note that in the 32-bit instruction slot the contents of which begin with 1111 appearing in the diagram above, the rightmost prefix field always corresponds to the last 16 bits of the 256-bit block, and so as many of the leftmost prefix fields are unused as there are header instruction slots preceding that instruction slot.

When variable-length code is in use, the contents of the prefix field have the following values:

Normally, when the prefix bits are 10, then the corresponding 16 bits in the block will be the first half of a 32-bit instruction, but they may also be the first 16 bits of an instruction longer than 32 bits.

In this case, the first four bits of the instruction will be 1111, as this bit pattern is unused in 32-bit instructions, having been reserved to indicate the instruction slot with prefix bits, for which purpose it is no longer needed.

The formats of 48-bit instructions are shown below: in these instructions, the leading 1111 is followed by 0 to indicate that the instruction is 48 bits long.

Note that among the memory reference instructions shown in lines 1 through 5, there are memory-to-register operate instructions, which is why a C bit is present, some of which are included in the 32-bit instruction set as supplemental memory-reference instructions of the second kind, and there are memory-to-registers acting on types of data other than the most basic types, some of the load and store instructions among which are included in the 32-bit instruction set as supplemental memory-reference instructions of the first kind.

The formats of 64-bit instructions are shown below: in these instructions, the leading 1111 is followed by 10 to indicate that the instruction is 64 bits long.

In these diagrams, the prefix bits associated with each 16 bits of the instruction are shown raised on the left, followed by the 16 bits of the instruction to which they correspond.

The reason that one bit of the instruction is interposed before the sequence of bits that indicates the length of the instruction is apparent from the diagrams: since that sequence of bits varies in length, having a bit of the instruction precede the sequence allows that bit to be used as the C bit for operate instructions, which indicates whether the instruction is allowed to set the condition codes, and that allows that bit to have the same position for all instructions of this type.

The 80-bit un-indexed three-operand string translate instruction is shown below:

and then the fully-indexed 96-bit translate instruction:


[Next] [Up] [Previous]