Αρχιτεκτονικές VLIW Στέφανος Καξίρας { , }
Download
Report
Transcript Αρχιτεκτονικές VLIW Στέφανος Καξίρας { , }
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Αρχιτεκτονικές VLIW
Στέφανος Καξίρας
{ [email protected], [email protected] }
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
VLIW Αρχές
ILP (Instruction-Level Parallelism)
Superscalar, OoO: hardware finds it
VLIW: let the Software, COMPILER, find it!
• No need for DYNAMIC EXECUTION
— Register renaming out
— Reservation Stations out
— Reorder Buffer out
— Out-of-order issue out
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
VLIW Αρχές
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
VLIW: Very Long Instruction Word
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
VLIW architetcure
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
VLIW Execution Semantics
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
VLIW Execution Semantics
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
SuperScalar vs. VLIW
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
VLIW execution semantics
UAL: Unit-assumed Latencies
• All latencies eq.
• New instr. issues after previous completes
— Always finds results ready
NUAL: Non-Uniform Assumed Latencies
• Latencies of operations non-unit
• New instr. issues immediately, but ops may
still be in progress
• Instructions must be scheduled when their
results are ready (no interlocks)!
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
VLIW execution semantics
NUAL: Non-Uniform Assumed Latencies
Two models:
• Equals (EQ) Model: Each operation takes
exactly its specified latency. Register values
don’t change until operation completes.
Example: TI C6x
• Less-Than-or-Equals (LEQ): Operations
may take up to their specified latency
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
VLIW execution semantics
Equals (EQ) Model
• Reduces register pressure because source
operands stay around longer.
• Can’t reduce operation latencies and
maintain source code compatibility.
Less-Than-or-Equals (LEQ):
• Destination register contents become
unreliable immediately
• Can reduce operation latencies and
maintain source code compatibility
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Προβλήματα VLIW
Compiler δεμένος με implementation
Scheduler must know operation latencies
Cannot run binaries in another
implementation
Dynamically scheduled VLIW
• Αποσύνδεση operation latencies από τον
compiler
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Dynamically Scheduled VLIW
Compatibility problem: compiler must know
latencies
Schedule with assumed latencies
Delay buffer inserted between FUs and
register file, holds register updates and
presents to the code the “assumed” latencies
not the real latencies (similar to LEQ)
Scoreboard dynamically schedules VLIW
instructions according to dependencies
VERY SIMILAR to OoO but simpler
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Role of COMPILER in VLIW
Find parallelism -- schedule independent
instructions
• Find independent operations to create
VLIW
• Many available registers to reduce false
data dependencies
INCREASE ILP (create parallelism)
• Loop unrolling
• Software Pipelining
• Trace scheduling
• Predication
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Loop Unrolling
Basic Idea: Unroll loops to get loop with fewer
but longer iterations
Pros:
• Creates parallelism -- instructions from
different original iterations can be issued in
parallel
• Latency Tolerance -- can issue instructions
from one iteration while waiting for
instructions from another to complete
• Reduces overhead -- fewer iterations
means fewer compares and branches
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Loop Unrolling
Cons:
• Register pressure -- combining multiple
iterations means more
• live values, potential for register overflow.
REQUIRES MANY ARCHITECTURAL
REGISTERS
• INTEL’s EPIC (ITANIUM) Arch has 128
registers!!!
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Loop Unrolling Example 1
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Loop Unrolling Example 2: no Unroll
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Loop Unrolling example 2: No Unroll
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Loop Unrolling Example 2
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Loop Unrolling Example 2
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Software pipelining
Idea: Transform loop which performs one
iteration at a time into loop which performs
pipelined steps of different iterations.
• Scheduling: Increase time between
dependent instructions
Combines well with loop unrolling
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Software Pipelining
Modulo Scheduling
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Software Pipelining: modulo
scheduling
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Comparison to Superscalar
Loop Unrolling + Software pipelining =
Register Renaming + Multiple branch
prediction (loop branch) + Dynamic
Scheduling
VLIW
OoO SuperScalar
False Data
Dependencies
Many arch.
registers
Register Renaming
Large
Instruction
Window
Latency hiding
Loop Unrolling
Multiple (loop)
branch prediction
Software
Pipelining
Dynamic
Scheduling
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
COMPILER: Reduce CONTROL
dependencies
1 in 5 instructions is a branch
5-op VLIW ? Each VLI contains a branch!
— Unacceptable ...
INCREASE STRAIGHT LINE CODE
• code without branches
2 Techniques in addition to loop unrolling:
• TRACE SCHEDULING
• PREDICATION
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
TRACE SCHEDULING
Parallelism across IF branches vs. LOOP
branches
Compiler Support - Two steps:
Trace Selection
• Find likely sequence of basic blocks (trace)
of (statically predicted) long sequence of
straight-line code
Trace Compaction
• Squeeze trace into few VLIW instructions
• Need bookkeeping code in case prediction
is wrong
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Trace Scheduling
•Similar to branch prediction in SuperScalar OoO
•When things go wrong: execute fix-up code (undo
wrong path). Compiler inserts all necessary code.
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
PREDICATION
Avoid branch prediction by turning branches
into conditionally executed instructions:
if (x) then A = B op C else NOP
• If false, then neither store result nor cause
exception
• Expanded ISA of Alpha, MIPS, PowerPC,
SPARC have conditional move; PA-RISC can
annul any following instruction.
Drawbacks to conditional instructions
• Complex conditions reduce effectiveness;
• Cannot predicate very large blocks
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Predication
Branch Prediction
Predication
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Intel/HP EPIC
Intel/HP IA-64 “Explicitly Parallel Instruction
Computer (EPIC)”
IA-64: instruction set architecture; EPIC is
type
EPIC = 2nd generation VLIW?
Itanium™ is name of first implementation
(2001)
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Intel EPIC VLIW Instructions
IA-64 instructions are encoded in bundles,
which are 128 bits wide.
• Each bundle consists of a 5-bit template
field and 3 instructions, each 41 bits in
length
3 Instructions in 128 bit “groups”; field
determines if instructions dependent or
independent
• Smaller code size than old VLIW, larger
than x86/RISC
• Groups can be linked to show
independence > 3 instr
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Intel EPIC VLIW Instructions
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Itanium
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Instruction group/Bundle
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Intel IA-64 VLIW Instruction groups
Instruction group: a sequence of consecutive
instructions with no register data
dependences
• All the instructions in a group could be
executed in parallel, if sufficient hardware
resources existed and if any dependencies
through memory were preserved
• An instruction group can be arbitrarily long,
but the compiler must explicitly indicate
the boundary between one instruction
group and another by placing a stop
between 2 instructions that belong to
different groups
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Intel IA-64 VLIW Instruction groups
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Itanium (or Itanic as in Titanic)
Highly parallel and deeply pipelined hardware
at 800Mhz (2000)
6-wide, 10-stage pipeline at 800Mhz on 0.18
µ process
Hardware checks dependencies (interlocks =>
binary compatibility over time)
DYNAMICALLY SCHEDULED VLIW
Predicated execution (select 1 out of 64 1-bit
flags) => 40% fewer mispredictions?
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Itanium
IA-64 Registers
The integer registers are configured to help
accelerate procedure calls using a register
stack
8 64-bit Branch registers used to hold branch
destination addresses for indirect branches
64 1-bit predication registers
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
IA-64/Itanium registers
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Itanium
Both the integer and floating point registers
support register rotation for registers 32-128.
Register rotation is designed to ease the task
of allocating of registers in software pipelined
loops
When combined with predication, possible to
avoid the need for unrolling and for separate
prologue and epilogue code for a software
pipelined loop
Makes the SW-pipelining usable for loops with
smaller numbers of iterations
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Itanium
Πανεπιστήμιο Πατρών, Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών
Itanium