Allocating Rotating Registers by Scheduling

Allocating Rotating Registers by Scheduling

Allocating Rotating Registers by Scheduling Hongbo Rong Hyunchul Park Cheng Wang Youfeng Wu Intel Labs MICRO-46, Dec. 2013 Memory disambiguation in dynamic compilers • Dynamic languages are increasing popular – JavaScript 88.9% in client-side websites (W3Techs) – PhP 81.5% in sever side (W3Techs) • Huge amount of legacy code – Dynamic binary translator – Optimization scope tends to be small: For a loop, usually a loop iteration • Software pipelining: enlarge the scope – Memory aliases are a bottleneck to performance 2 Memory disambiguation in dynamic compilers (Cont.) • A fundamental component in compilers – Determines if two memory operations are aliased • Approach 1: Alias analysis at compile time – Too expensive or conservative for dynamic compilers – Only simple alias analysis can be done • Approach 2: Alias detection at runtime with hardware support 3 Alias Registers • Enable data speculation – Compiler optimistically assumes the memory operations do not alias with each other, and schedules them out of order – Compiler guards every memory operation with an alias register to catch any alias when the schedule runs 4 Alias Registers • Enable data speculation – Compiler optimistically assumes the memory operations do not alias with each other, and schedules them out of order – Compiler guards every memory operation with an alias register to catch any alias when the schedule runs • Example: 5 Alias Registers • Enable data speculation – Compiler optimistically assumes the memory operations do not alias with each other, and schedules them out of order – Compiler guards every memory operation with an alias register to catch any alias when the schedule runs • Example: Original order LD [w] ST [y] ST [z] 6 Alias Registers • Enable data speculation – Compiler optimistically assumes the memory operations do not alias with each other, and schedules them out of order – Compiler guards every memory operation with an alias register to catch any alias when the schedule runs • Example: Original order After speculation LD [w] ST [y] ST [y] ST [z] Reordered! ST [z] LD [w] 7 Static Alias Registers 8 Static Alias Registers SR0 SR1 SR2 SR3 9 Static Alias Registers set check SR0 SR1 SR2 SR3 10 Static Alias Registers set check SR0 Mem addr Set Check ST x ... SR1 SR1 SR2 SR3 11 Static Alias Registers set check SR0 Mem addr Set Check ST x ... SR1 SR1 x SR2 SR3 12 Static Alias Registers set check SR0 Mem addr Set Check ST x ... SR1 SR1 x SR2 ST y ... SR2 SR3 13 Static Alias Registers set check SR0 Mem addr Set Check ST x ... SR1 SR1 x SR2 y ST y ... SR2 SR3 14 Static Alias Registers set check SR0 Mem addr Set Check ST x ... SR1 SR1 x SR2 y ST y ... SR2 SR3 LD z ... SR1,2 15 Static Alias Registers set check SR0 Mem addr Set Check ST x ... SR1 SR1 x SR2 y ST y ... SR2 SR3 LD z ... SR1,2 16 Static alias registers are not enough • 24 hot loops from SPEC2000, with static alias registers only, loop throughput is far below optimal • Need more scalable hardware 123456789101112131415161718192021222324Loop 0 No. -20 -40 % fom optimal-60 -80 Throughput is 11~106% below optimal -100 -120 Experiments on Transmeta Efficeon with 14 static alias regs 6 Rotating Alias Registers set check RR0 RR1 RR2 RR3 18 Rotating Alias Registers set check RR0 Mem addr Set Check RR1 ST x ... RR1 RR2 RR3 19 Rotating Alias Registers set check RR0 Mem Set Check x addr RR1 ST x ... RR1 RR2 RR3 20 Rotating Alias Registers set check RR0 Mem Set Check x addr RR1 ST x ... RR1 RR2 ST y ... RR2 RR3 21 Rotating Alias Registers set check RR0 Mem Set Check x addr RR1 ST x ... RR1 RR2 y ST y ... RR2 RR3 22 Rotating Alias Registers set check RR0 Mem Set Check x addr RR1 ST x ... RR1 RR2 y ST y ... RR2 RR3 LD z ... RR1 23 Rotating Alias Registers set check RR0 Mem Set Check x addr RR1 ST x ... RR1 RR2 y ST y ... RR2 RR3 LD z ... RR1 24 Rotating Alias Registers set check RR0 Mem Set Check x addr RR1 ST x ... RR1 RR2 y ST y ... RR2 RR3 LD z ... RR1 Unidirectional check 25 Rotating Alias Registers set check • Encode 1 register, check many: scalable RR0 Mem Set Check x addr RR1 ST x ... RR1 RR2 y ST y ... RR2 RR3 LD z ... RR1 Unidirectional check 26 False positives set check RR0 Mem Set Check x addr RR1 ST x ... RR1 RR2 y ST y ... RR2 RR3 LD z ... RR1 27 False positives set check An earlier unrelated OP: ST z ... RR3 RR0 Mem Set Check x addr RR1 ST x ... RR1 RR2 y ST y ... RR2 RR3 zz LD z ... RR1 28 False positives set check An earlier unrelated OP: ST z ... RR3 RR0 Mem Set Check x addr RR1 ST x ... RR1 RR2 y ST y ... RR2 RR3 zz LD z ... RR1 29 False positives set • Avoid by a good allocation check • Resort to static alias registers An earlier unrelated OP: ST z ... RR3 RR0 Mem Set Check x addr RR1 ST x ... RR1 RR2 y ST y ... RR2 RR3 zz LD z ... RR1 30 False positives set • Avoid by a good allocation check • Resort to static alias registers An earlier unrelated OP: ST z ... RR3 RR0 zz RR0 Mem Set Check x addr RR1 ST x ... RR1 RR2 y ST y ... RR2 RR3 LD z ... RR1 31 False positives set • Avoid by a good allocation check • Resort to static alias registers SR0 An earlier unrelated OP: ST z ... RR3 zz RR0 SR0 Mem Set Check x addr RR1 ST x ... RR1 RR2 y ST y ... RR2 RR3 LD z ... RR1 32 Rotating alias registers (Cont.) • Comparison: – ALAT in Itanium does not detect aliases between stores – DeAliaser [Ahn, Duan, Torrellas 2013] can only check all speculative stores • Effective for sequential code [Wang et al. 2012] • A new problem: How to apply them to loops? 9 Software Pipelining • A loop with 3 operations in order a b c 10 Software Pipelining • A loop with 3 operations in order a b c Sequential execution 10 Software Pipelining • A loop with 3 operations in order a b c Sequential execution 0 3 6 9 Time a b c 10 Software Pipelining • A loop with 3 operations in order a b c Sequential execution 0 3 6 9 Time a b c a b c 10 Software Pipelining • A loop with 3 operations in order a b c Sequential execution 0 3 6 9 Time a b c a b c a b c 10 Software Pipelining • A loop with 3 operations in order a b c Sequential execution 0 3 6 9 Time a b c a b c a b c • To speedup – Schedule operations out of order Overlap the execution of iterations 10 Software Pipelining (Cont.) • Software-pipelined execution 0 3 6 9 Time a bc 1st Itr 11 Software Pipelining (Cont.) • Software-pipelined execution 0 3 6 9 Time c b a 1st Itr 11 Software Pipelining (Cont.) • Software-pipelined execution 0 3 6 9 Time c b a 1st Itr c b a 2nd Itr 11 Software Pipelining (Cont.) • Software-pipelined execution 0 3 6 9 Time c b a 1st Itr c b a 2nd Itr c b a 3rd Itr 11 Software Pipelining (Cont.) • Software-pipelined execution 0 3 6 9 Time c b a 1st Itr II=3 c b a 2nd Itr c b a 3rd Itr 11 Software Pipelining (Cont.) • Software-pipelined execution 0 3 6 9 Time c b a 1st Itr II=3 c b a 2nd Itr c b a 3rd Itr •Modulo scheduling •Modulo property 11 Software Pipelining (Cont.) • Software-pipelined execution 0 3 6 9 Time c b a 1st Itr II=3 c b a 2nd Itr c b a 3rd Itr •Modulo scheduling •Modulo property •Dependence constraints 11 Software Pipelining (Cont.) • Software-pipelined execution 0 3 6 9 Time c b a 1st Itr II=3 c b a 2nd Itr c b a 3rd Itr •Modulo scheduling •Modulo property •Dependence constraints •Resource constraints 11 Objective • Given a software-pipelined schedule of a loop, how to allocate rotating alias registers for the memory operations? – Detect ALL aliases – NO false positive – Minimal usage of rotating & static alias registers 12 Rotating Register Allocation ≡ Scheduling ! • It is a software pipelining problem – A register allocation is a modulo schedule of lifetimes – Any existing modulo scheduling algorithm can solve it • Contributions – Framework – A simple algorithm LCP – LCP usually achieves the best allocations in the least time – Generalization: allocation of general-purpose rotating registers is also a software pipelining problem • It derives bin-packing of Rau et al. 1992 13 Software Pipelining Reviewed • Software-pipelined execution 0 3 6 9 Time c b a 1st Itr c b a 2nd Itr c b a 3rd Itr 14 Software Pipelining Reviewed • Software-pipelined execution 0 3 6 9 Time c b a 1st Itr c b a 2nd Itr c b a 3rd Itr Check 14 Software Pipelining Reviewed • Software-pipelined execution 0 3 6 9 Time c b a 1st Itr c b a 2nd Itr c b a 3rd Itr Check 14 Software Pipelining Reviewed • Software-pipelined execution 0 3 6 9 Time c b a 1st Itr c b a 2nd Itr c b a 3rd Itr Check 14 A Register Allocation 0 3 6 9 Time 0 ba 1st Itr 1 c 2 ba 2nd Itr 3 c 4 ba 3rd Itr 5 c Register 15 A Register Allocation 0 3 6 9 Time 0 ba 1st Itr 1 c Check 2 ba 2nd Itr 3 c 4 ba 3rd Itr 5 c Register 15 A Register Allocation 0 3 6 9 Time 0 ba 1st Itr 1 c RegII=2 Check 2 ba 2nd Itr 3 c 4 ba 3rd Itr 5 c Register 15 A Register Allocation 0 3 6 9 Time 0 ba 1st Itr 1 c RegII=2 Check 2 ba 2nd Itr 3 c 4 ba 3rd Itr 5 c Register“Time” 15 A Register Allocation 0 3 6 9 “Resource”Time 0 ba 1st Itr 1 c RegII=2 Check 2 ba 2nd Itr 3 c 4 ba 3rd Itr 5 c Register“Time” 15 A Register Allocation 0 3 6 9 “Resource”Time 0 ba 1st Itr 1 c RegII=2 Check 2 ba 2nd Itr 3 c 4 ba 3rd Itr 5 c Modulo schedule of lifetimes! Register“Time” 15 Problem formulation View Lifetimes as “Operations” Registers as “Time” Time as “Resources” Then the allocation is a modulo schedule: • Modulo property: A constant initiation interval R • Dependence constraints • The ordering requirement between lifetimes • Resource constraints • Two lifetimes in the same16 register cannot overlap in time Unifying Dependence and Resource Constraints 17 LCP (Local Compaction followed by Pacing) 0 3 6 9 Time 0 b a 1 c 2 b a 3 c 4 b a 5 c Register

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    78 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us