C dCode
O i i iOptimization
P K Singh 1M M M Engg. College, Gorakhpur
Code Optimization and Phases
source front code
intermediate
code code
intermediate
code targetsource
program
front
end
cod...
Optimization
• Code produced by standard algorithms can often be made to run
faster, take less space or both
• These impro...
Criteria for Transformations
• A transformation must preserve the meaning of
a programa program
– Can not change the outpu...
Beyond Optimizing Compilers
• Really improvements can be made at various phases
• Source code:
Algorithmic transformations...
Peephole Optimizations
• A simple technique for locally improving target
code (can also be applied to intermediate code)( ...
Redundant-Instruction Elimination
• Redundant loads and stores:
(1)MOV R0 a(1)MOV R0, a
(2)MOV a, R0
• Unreachable code:
#...
Flow-of-Control Optimizations
• Jumps to jumps, jumps to conditional jumps, and conditional jumps
to jumps are not necessa...
Other Peephole Optimizationsp p
• A few algebraic identities that occur frequently
(such as x := x + 0 or x := x * 1) can ...
Optimizing Intermediate Code
• This phase is generally only included in
optimizing compilersoptimizing compilers
• Offers ...
QuickSort in C
void quicksort(int m, int n) {
int i, j, v, x;
if (n <= m) return;if (n < m) return;
/* Start of partition ...
Partition in Three-Address Code
(1) i := m-1
(2) j := n
(3) 1 4*
(16) t7 := 4*i
(17) t8 := 4*j
(18) 9 [ 8](3) t1 := 4*n
(4...
Partition Flow Graph
P K Singh 13M M M Engg. College, Gorakhpur
Local vs. Global Transformations
• Local transformations involve statements within a
single basic block
• All other transf...
Code Optimizations
• Local/global common subexpression elimination
• Dead code elimination• Dead-code elimination
• Instru...
Loop Optimizations
• Code motion
• Induction variable elimination• Induction variable elimination
• Reduction in strength
...
Code Motion
i := 0
t2 := 4*i
B1:
B2:
i := 0
t1 := n-2
B1:
t :
A[t2] := 0
i := i+1
t2 := 4*i
A[t2] := 0
i := i+1
B2:
t1 := ...
Strength Reduction
i := 0
t1 := n-2
B1: i := 0
t1 := n-2
t2 := 4*i
B1:
t2 := 4*i
A[t2] := 0
i := i+1
B2: A[t2] := 0
i := i...
Reduction Variable Elimination
i 0B1: t1 4*B1:i := 0
t1 := n-2
t2 := 4*i
B1:
B2
t1 := 4*n
t1 := t1-8
t2 := 4*i
B1:
A[t2] :...
Common Subexpressions
• E is a common subexpression if:
– E was previously computed– E was previously computed
– Variables...
Local Common Subexpressionsp
t6 := 4*i
x := a[t6]
7 4*i
t6 := 4*i
[ 6]t7 := 4*i
t8 := 4*j
t9 := a[t8]
a[t7] := t9
x := a[t...
Global Common Subexpressionsp
P K Singh 22M M M Engg. College, Gorakhpur
Copy Propagation
• Assignments of the form f := g are called copy
statements (or copies)
• The idea behind copy propagatio...
Dead-Code Elimination
• Dead code includes code that can never be reached and
code that computes a value that never gets u...
Loop Optimizations (1)
• The running time of a program may be improved if
we do both of the following:we do both of the fo...
Loop Optimizations (2)
• Induction variables: variables that remain in "lock-step"
– For example, in block B3 of previous ...
Loop Optimization Examplep p p
P K Singh 27M M M Engg. College, Gorakhpur
Example
• Given the following code segment, obtain:
The 3AC statements for this computation– The 3AC statements for this c...
Example …contd
• 3AC for the given code segment
(1) prod :=0
(2) i := 1
(3) t1 := 4 * i (9) prod := t6
(4) t2 := a [t1] (1...
Example …contd
2 Basic blocks
(1) prod :=0
(2) i := 1
B1
(3) t1 := 4 * i (9) prod := t6
(4) t2 := a [t1] (10) t7 := i + 1
...
Example …contd
Flow Graph
t1 := 4 * iB2
prod := 0
t1 := 4 i
t2 := a [t1]
t3 := 4 * i
t4 := b [t3]B1
B2
i := 1 t5 := t2 * t...
Implementing a Code Optimizer
• Organization consists of control-flow analysis, then data-
flow analysis, and then transfo...
Upcoming SlideShare
Loading in …5
×

Optimization

365 views

Published on

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
365
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
30
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Optimization

  1. 1. C dCode O i i iOptimization P K Singh 1M M M Engg. College, Gorakhpur
  2. 2. Code Optimization and Phases source front code intermediate code code intermediate code targetsource program front end code optimizer code code generator code target code symbol table P K Singh 2M M M Engg. College, Gorakhpur
  3. 3. Optimization • Code produced by standard algorithms can often be made to run faster, take less space or both • These improvements are achieved through transformations called• These improvements are achieved through transformations called optimization • Compilers that apply these transformations are called optimizing compilerscompilers • It is especially important to optimize frequently executed parts of a program The 90/10 rule– The 90/10 rule – Profiling can be helpful, but compilers do not typically have sample input data – Inner loops tend to be good candidates for optimizationInner loops tend to be good candidates for optimization P K Singh 3M M M Engg. College, Gorakhpur
  4. 4. Criteria for Transformations • A transformation must preserve the meaning of a programa program – Can not change the output produced for any input – Can not introduce an errorCan not introduce an error • Transformations should, on average, speed up programsprograms • Transformations should be worth the effort P K Singh 4M M M Engg. College, Gorakhpur
  5. 5. Beyond Optimizing Compilers • Really improvements can be made at various phases • Source code: Algorithmic transformations can produce spectacular– Algorithmic transformations can produce spectacular improvements – Profiling can be helpful to focus a programmer's attention on important codep • Intermediate code: – Compiler can improve loops, procedure calls, and address calculationscalculations – Typically only optimizing compilers include this phase • Target code: Compilers can use registers efficiently– Compilers can use registers efficiently – Peephole transformation can be applied P K Singh 5M M M Engg. College, Gorakhpur
  6. 6. Peephole Optimizations • A simple technique for locally improving target code (can also be applied to intermediate code)( ) • The peephole is a small, moving window on the target program • Each improvement replaces the instructions of the peephole with a shorter or faster sequence • Each improvement may create opportunities for additional improvements • Repeated passes may be necessary P K Singh 6M M M Engg. College, Gorakhpur
  7. 7. Redundant-Instruction Elimination • Redundant loads and stores: (1)MOV R0 a(1)MOV R0, a (2)MOV a, R0 • Unreachable code: #define debug 0 if (debug) { /* i t d b i i f ti *//* print debugging information */ } P K Singh 7M M M Engg. College, Gorakhpur
  8. 8. Flow-of-Control Optimizations • Jumps to jumps, jumps to conditional jumps, and conditional jumps to jumps are not necessary • Jumps to jumps example:p j p p – The following replacement is valid: goto L1 … goto L2 … – If there are no other jumps to L1 and L1 is preceded by an unconditional L1: goto L2 L1: goto L2 – If there are no other jumps to L1 and L1 is preceded by an unconditional jump, the statement at L1 can be eliminated • Jumps to conditional jumps and conditional jumps to jumps lead to similar transformations P K Singh 8M M M Engg. College, Gorakhpur
  9. 9. Other Peephole Optimizationsp p • A few algebraic identities that occur frequently (such as x := x + 0 or x := x * 1) can be eliminated • Reduction in strength replaces expensive operations with cheaper onesoperations with cheaper ones – Calculating x * x is likely much cheaper than x^2 using an exponentiation routine – It may be cheaper to implement x * 5 as x * 4 + x • Some machines may have hardware instructions to implement certain specific operations efficiently – For example, auto-increment may be cheaper than a straight-For example, auto increment may be cheaper than a straight forward x := x + 1 – Auto-increment and auto-decrement are also useful when pushing into or popping off of a stackp g p pp g P K Singh 9M M M Engg. College, Gorakhpur
  10. 10. Optimizing Intermediate Code • This phase is generally only included in optimizing compilersoptimizing compilers • Offers the following advantages: Operations needed to implement high level constructs– Operations needed to implement high-level constructs are made explicit (i.e. address calculations) – Intermediate code is independent of target machine;p g ; code generator can be replaced for different machine • We are assuming intermediate code uses three- address instructions P K Singh 10M M M Engg. College, Gorakhpur
  11. 11. QuickSort in C void quicksort(int m, int n) { int i, j, v, x; if (n <= m) return;if (n < m) return; /* Start of partition code */ i = m-1; j = n; v =a[n]; while (1) { do i = i+1; while (a[i] < v); do j = j-1; while (a[j] > v); if (i >= j) break;( j) ; x = a[i]; a[i] = a[j]; a[j] = x; } x = a[i]; a[i] = a[n]; a[n] = x; /* E d f titi d *//* End of partition code */ quicksort(m, j); quicksort(i+1, n); } P K Singh 11M M M Engg. College, Gorakhpur
  12. 12. Partition in Three-Address Code (1) i := m-1 (2) j := n (3) 1 4* (16) t7 := 4*i (17) t8 := 4*j (18) 9 [ 8](3) t1 := 4*n (4) v := a[t1] (5) i := i+1 (6) t2 := 4*i (18) t9 := a[t8] (19) a[t7] := t9 (20) t10 := 4*j (21) a[t10] := x( ) (7) t3 := a[t2] (8) if t3 < v goto (5) (9) j := j-1 (10) t4 : 4*j ( ) [ ] (22) goto (5) (23) t11 := 4*i (24) x := a[t11] (25) t12 : 4*i(10) t4 := 4*j (11) t5 := a[t4] (12) if t5 > v goto (9) (13) if i >= j goto (23) (25) t12 := 4*i (26) t13 := 4*n (27) t14 := a[t13] (28) a[t12] := t14 (14) t6 := 4*i (15) x := a[t6] (29) t15 := 4*n (30) a[t15] := x P K Singh 12M M M Engg. College, Gorakhpur
  13. 13. Partition Flow Graph P K Singh 13M M M Engg. College, Gorakhpur
  14. 14. Local vs. Global Transformations • Local transformations involve statements within a single basic block • All other transformations are called global transformations • Local transformations are generally performed first • Many types of transformations can be performed either locally or globally P K Singh 14M M M Engg. College, Gorakhpur
  15. 15. Code Optimizations • Local/global common subexpression elimination • Dead code elimination• Dead-code elimination • Instruction reordering C t t f ldi• Constant folding • Algebraic transformations C i• Copy propagation • Loop optimizations 15P K Singh M M M Engg. College, Gorakhpur
  16. 16. Loop Optimizations • Code motion • Induction variable elimination• Induction variable elimination • Reduction in strength l t• … lots more 16P K Singh M M M Engg. College, Gorakhpur
  17. 17. Code Motion i := 0 t2 := 4*i B1: B2: i := 0 t1 := n-2 B1: t : A[t2] := 0 i := i+1 t2 := 4*i A[t2] := 0 i := i+1 B2: t1 := n-2 if i < t1 goto B2 B3: if i < t1 goto B2B3: Move loop-invariant computations before the loop 17P K Singh M M M Engg. College, Gorakhpur
  18. 18. Strength Reduction i := 0 t1 := n-2 B1: i := 0 t1 := n-2 t2 := 4*i B1: t2 := 4*i A[t2] := 0 i := i+1 B2: A[t2] := 0 i := i+1 t2 := t2+4 B2: if i < t1 goto B2B3: if i < t1 goto B2B3: Replace expensive computations with induction variables 18P K Singh M M M Engg. College, Gorakhpur
  19. 19. Reduction Variable Elimination i 0B1: t1 4*B1:i := 0 t1 := n-2 t2 := 4*i B1: B2 t1 := 4*n t1 := t1-8 t2 := 4*i B1: A[t2] := 0 i := i+1 t2 := t2+4 B2: A[t2] := 0 t2 := t2+4 B2: if i<t1 goto B2B3: if t2<t1 goto B2B3: Replace induction variable in expressions with another 19P K Singh M M M Engg. College, Gorakhpur
  20. 20. Common Subexpressions • E is a common subexpression if: – E was previously computed– E was previously computed – Variables in E have not changed since previous computation • Can avoid recomputing E if previously computed value is still available • Dags are useful to detect common subexpressions P K Singh 20M M M Engg. College, Gorakhpur
  21. 21. Local Common Subexpressionsp t6 := 4*i x := a[t6] 7 4*i t6 := 4*i [ 6]t7 := 4*i t8 := 4*j t9 := a[t8] a[t7] := t9 x := a[t6] t8 := 4*j t9 := a[t8] a[t6] := t9a[t7] := t9 t10 := 4*j a[t10] := x goto B2 a[t6] := t9 a[t8] := x goto B2 goto B2 P K Singh 21M M M Engg. College, Gorakhpur
  22. 22. Global Common Subexpressionsp P K Singh 22M M M Engg. College, Gorakhpur
  23. 23. Copy Propagation • Assignments of the form f := g are called copy statements (or copies) • The idea behind copy propagation is to use g for f whenever possible after such a statement • For example applied to block B5 of the previous• For example, applied to block B5 of the previous flow graph, we obtain: x := t3 [t2] t5a[t2] := t5 a[t4] := t3 goto B2 Copy propagation often turns the copy statement• Copy propagation often turns the copy statement into "dead code" P K Singh 23M M M Engg. College, Gorakhpur
  24. 24. Dead-Code Elimination • Dead code includes code that can never be reached and code that computes a value that never gets used C id if (d b ) i• Consider: if (debug) print … – It can sometimes be deduced at compile time that the value of an expression is constant – Then the constant can be used in place of the expression (constant– Then the constant can be used in place of the expression (constant folding) – Let's assume a previous statement assigns debug := false and value never changes – Then the print statement becomes unreachable and can be eliminated • Consider the example from the previous slide The value of computed by the copy statement never gets used after– The value of x computed by the copy statement never gets used after the copy propagation – The copy statement is now dead code and can be eliminated P K Singh 24M M M Engg. College, Gorakhpur
  25. 25. Loop Optimizations (1) • The running time of a program may be improved if we do both of the following:we do both of the following: – Decrease the number of statements in an inner loop – Increase the number of statements in the outer loopp • Code motion moves code outside of a loop – For example, consider:p , while (i <= limit-2) … – The result of code motion would be: t li it 2t = limit – 2 while (i <= t) … P K Singh 25M M M Engg. College, Gorakhpur
  26. 26. Loop Optimizations (2) • Induction variables: variables that remain in "lock-step" – For example, in block B3 of previous flow graph, j and t4 are induction variablesinduction variables – Induction-variable elimination can sometimes eliminate all but one of a set of induction variables • Reduction in strength replaces a more expensive operationReduction in strength replaces a more expensive operation with a less expensive one – For example, in block B3, t4 decreases by four with every iteration – If initialized correctly, can replace multiplication with subtractiony – Often application of reduction in strength leads to induction-variable elimination • Methods exist to recognize induction variables and apply i t t f ti t ti llappropriate transformations automatically P K Singh 26M M M Engg. College, Gorakhpur
  27. 27. Loop Optimization Examplep p p P K Singh 27M M M Engg. College, Gorakhpur
  28. 28. Example • Given the following code segment, obtain: The 3AC statements for this computation– The 3AC statements for this computation – The basic blocks and the flow graph prod = 0; i = 1;prod 0; i 1; do { prod = prod + a[i] * b[i];prod = prod + a[i] b[i]; i = i + 1; } while ( i <= 20 );} while ( i <= 20 ); P K Singh 28M M M Engg. College, Gorakhpur
  29. 29. Example …contd • 3AC for the given code segment (1) prod :=0 (2) i := 1 (3) t1 := 4 * i (9) prod := t6 (4) t2 := a [t1] (10) t7 := i + 1 (5) t3 := 4 * i (11) i := t7 (6) t4 := b [t3] (12) if i <= 20 goto (3) (7) t5 := t2 * t4(7) t5 := t2 * t4 (8) t6 := prod + t5 P K Singh 29M M M Engg. College, Gorakhpur
  30. 30. Example …contd 2 Basic blocks (1) prod :=0 (2) i := 1 B1 (3) t1 := 4 * i (9) prod := t6 (4) t2 := a [t1] (10) t7 := i + 1 (5) t3 := 4 * i (11) i := t7 (6) t4 := b [t3] (12) if i <= 20 goto (3) (7) t5 := t2 * t4(7) t5 := t2 * t4 (8) t6 := prod + t5 B2 P K Singh 30M M M Engg. College, Gorakhpur B2
  31. 31. Example …contd Flow Graph t1 := 4 * iB2 prod := 0 t1 := 4 i t2 := a [t1] t3 := 4 * i t4 := b [t3]B1 B2 i := 1 t5 := t2 * t4 t6 := prod + t5 prod := t6 t7 := i + 1t7 : i 1 i := t7 if i <= 20 goto B2B1 B2 P K Singh 31M M M Engg. College, Gorakhpur
  32. 32. Implementing a Code Optimizer • Organization consists of control-flow analysis, then data- flow analysis, and then transformations • The code generator is applied to the transformedThe code generator is applied to the transformed intermediate code • Details of code optimization are beyond the scope of this coursecourse P K Singh 32M M M Engg. College, Gorakhpur

×