
1-5
Integer Unit
1
PRELIMINARY
1.2.3 Pipeline Selection
In most cases, instructions are processed in
either pipeline and without pairing constraints
on the instructions. However, certain instruc-
tions are processed only in the X pipeline:
Branch instructions
Floating point instructions
Exclusive instructions
Branch and floating point instructions may be
paired with a second instruction in the Y pipe-
line.
Exclusive Instructions cannot be paired with
instructions in the Y pipeline. These instruc-
tions typically require multiple memory
accesses. Although exclusive instructions may
not be paired, hardware from both pipelines is
used to accelerate instruction completion.
Listed below are the M II CPU exclusive
instruction types:
Protected mode segment loads
Special register accesses
(Control, Debug, and Test Registers)
String instructions
Multiply and divide
I/O port accesses
Push all (PUSHA) and pop all (POPA)
Intersegment jumps, calls, and returns
1.2.4 Data Dependency
Solutions
When two instructions that are executing in
parallel require access to the same data or
register, one of the following types of data
dependencies may occur:
Read-After-Write (RAW)
Write-After-Read (WAR)
Write-After-Write (WAW)
Data dependencies typically force serialized
execution of instructions. However, the M II
CPU implements three mechanisms that allow
parallel execution of instructions containing
data dependencies:
Register Renaming
Data Forwarding
Data Bypassing
The following sections provide detailed exam-
ples of these mechanisms.
1.2.4.1
Register Renaming
The M II CPU contains 32 physical general
purpose registers. Each of the 32 registers in
the register file can be temporarily assigned as
one of the general purpose registers defined by
the x86 architecture (EAX, EBX, ECX, EDX,
ESI, EDI, EBP, and ESP). For each register
write operation a new physical register is
selected to allow previous data to be retained
temporarily. Register renaming effectively
removes all WAW and WAR dependencies.
The programmer does not have to consider
register renaming as register renaming is
completely transparent to both the operating
system and application software.