Instruction Format
Home Up

 

Pipeline
EPIC
Instruction Format
Instruction Sequencing
Operating Environments
Predication
Compares
Speculation
Branching
Register Rotation
Other

Four execution units are available for each instruction. These consist of:

  1. I-Unit, an integer execution unit
  2. M-Unit, a memory execution unit
  3. F-Unit, a floating point execution unit
  4. B-Unit, a branch execution unit

Additionally, instructions are categorized by type. This allows for a mapping of the relationship between instruction types and the units they execute on:

Instruction
Type
Description Execution
Unit Type
A Integer ALU I-Unit or M-Unit
I Non-ALU Integer     I-Unit
M Memory M-Unit
F Floating Point F-Unit
B Branch B-Unit
L+X Extended I-Unit

Source: IA-64 Application ISA Guide 1.0 [3]

Tuples of 41-bit instructions are packaged with a 5-bit template (see EPIC) into a 128-bit bundle as shown below:
127                       87 86                         46 45                           5 4               0
Instruction Slot 2 Instruction Slot 1 Instruction Slot 0 Template
<==    41    ==> <==    41    ==> <==    41    ==> <=  5  =>

The 5-bit template allows for the theoretical encoding of 32 cases of parallel/serial execution on a combination of execution units, but currently only 24 are defined. Interestingly, all bundles must be organized to execute in parallel with the exception of I-Unit and M-Unit combinations (an I-Unit execution followed by and I-Unit and an M-Unit, or an M-Unit followed by and I-Unit and an M-Unit).

The following table, extracted from [3] details the possible template values:

Template Slot 0 Slot 1 Slot 2
00 M-unit I-unit I-unit
01 M-unit I-unit I-unit  
02 M-unit I-unit   I-unit
03 M-unit I-unit   I-unit  
04 M-unit L-unit X-unit
05 M-unit L-unit X-unit  
06  
07  
08 M-unit M-unit I-unit
09 M-unit M-unit I-unit  
0A  M-unit   M-unit I-unit
0B   M-unit       M-unit   I-unit  
0C M-unit F-unit I-unit
0D M-unit F-unit  I-unit    
0E M-unit M-unit F-unit
0F M-unit M-unit  F-unit    
10 M-unit I-unit B-unit
11 M-unit I-unit B-unit  
12 M-unit B-unit B-unit
13 M-unit B-unit B-unit  
14  
15  
16 B-unit B-unit B-unit
17 B-unit B-unit B-unit  
18 M-unit M-unit B-unit
19 M-unit M-unit B-unit  
1A  
1B  
1C M-unit F-unit B-unit
1D M-unit F-unit B-unit  
1E  
1F