You are on page 1of 1


Tabic 15.2 Relationship between Instruction Type and Execution Unit Type
Instruction Type D escription Execution Unit Type

A Integer ALU l-tinii or M-unll

I Non-ALU integei l-unii
M Memory M-iiiik

F Floating poiffl ■

B Branch B-unit
L IX Extended l-unii/B-uiiit

Each IA-64 instruction is categorized into one of six types. Table 15.2 lists the
instruction types and the execution unit types on which they may be executed.


This section looks at the key features of the IA-64 architecture that support instruction-
level parallelism. First, WC need to provide an overview of the IA-64 instruction format
and. to support the examples in this section, define the general formal of IA-64
assembly language instructions.

Instruction Format
IA-64 defines a 128-bit bundle that contains three instructions, called syllables, and a
template field (Figure 15.2a). The processor can fetch instructions one or more bundles at
a time: each bundle fetch brings in three instructions. The template field contains
information that indicates which inslructions can be executed in parallel. The
interpretation of the template field is not confined to a single bundle. Rather, the
processor can look at multiple bundles to determine which instructions may be executed
in parallel. For example, the instruction stream may be such that eight instructions can be
executed in parallel. The compiler will reorder instructions so that these eighl
instructions span contiguous bundles and set Ihe template bits so lhat the processor knows
that these eight instructions arc independent.
The bundled instructions do not have to be in the original program order. Further,
because of the flexibility of ihe template field, the compiler can mix independent and
dependent instructions in the same bundle. Unlike some previous VLIW designs. IA-64
does not need to insert null-operation (NOP) instructions to fill in the bundles.
Table 15.3 shows the interpretation of the possible values for (he 5-bil template
field (some values are reserved and not in current use). The template value accomplishes
two purposes: