final code generation and code optimization

28
Final Code Generation and Code Optimization

Upload: myra-buchanan

Post on 03-Jan-2016

49 views

Category:

Documents


2 download

DESCRIPTION

Final Code Generation and Code Optimization. for ( i=0; i < N; i++) { base = &a[0]; crt = *(base + i); }. base = &a[0]; for ( i=0; i < N; i++) { crt = *(base + i); }. original code. optimized code. tmp = &a[0]+offset ; e1 = *( tmp +i); e2 = *( tmp +j);. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Final Code Generation and   Code Optimization

Final Code Generation and Code Optimization

Page 2: Final Code Generation and   Code Optimization
Page 3: Final Code Generation and   Code Optimization
Page 4: Final Code Generation and   Code Optimization
Page 5: Final Code Generation and   Code Optimization
Page 6: Final Code Generation and   Code Optimization
Page 7: Final Code Generation and   Code Optimization

for ( i=0; i < N; i++) { base = &a[0]; crt = *(base + i);}

base = &a[0];for ( i=0; i < N; i++) { crt = *(base + i);}

original code optimized code

Page 8: Final Code Generation and   Code Optimization

e1 = *(&a[0]+offset +i);e2 = *(&a[0]+offset +j);

tmp = &a[0]+offset; e1 = *(tmp +i);e2 = *(tmp +j);

original code optimized code

Page 9: Final Code Generation and   Code Optimization

y = …x = y;b = x / 2;

y = …b = y / 2;

original code optimized code

Page 10: Final Code Generation and   Code Optimization

if (1) x = y;else x = z;

x = y;

original code optimized code

Page 11: Final Code Generation and   Code Optimization
Page 12: Final Code Generation and   Code Optimization
Page 13: Final Code Generation and   Code Optimization
Page 14: Final Code Generation and   Code Optimization
Page 15: Final Code Generation and   Code Optimization
Page 16: Final Code Generation and   Code Optimization
Page 17: Final Code Generation and   Code Optimization
Page 18: Final Code Generation and   Code Optimization
Page 19: Final Code Generation and   Code Optimization
Page 20: Final Code Generation and   Code Optimization

Exercise: at which points are these variables live ?

prod,i,t1,t2,t3,t4,t5,t6,t7

Page 21: Final Code Generation and   Code Optimization
Page 22: Final Code Generation and   Code Optimization

• Rationale– A value in a register can be accessed much more

efficiently than one in memory, so we should try to keep (frequently used) values in registers…

– …but CPUs have a very limited number of registers

• Techniques– Local register allocation– Global register allocation

Page 23: Final Code Generation and   Code Optimization
Page 24: Final Code Generation and   Code Optimization
Page 25: Final Code Generation and   Code Optimization

read A

D = A+1read BD = D+B

D = A+1read CD = D+C

print A,D

AA

BB CC

DD

Register Interference Graphnodes: symbolic registersedges: if nodes are simultaneously live R1R1 R2R2 R3R3

k-coloring, where k is the number of registers

Page 26: Final Code Generation and   Code Optimization

AA

BB CC

DD

R1R1 R2R2 R3R3

AA

DD

{empty graph}

AA

DD

{empty graph}

AA

BB CC

DD

R1

R2

R1

R2

R3R3

Page 27: Final Code Generation and   Code Optimization
Page 28: Final Code Generation and   Code Optimization