0% found this document useful (0 votes)
24 views24 pages

SPCC Code Optimazation 1

The document discusses code optimization as a program transformation technique aimed at improving resource consumption and execution speed. It categorizes optimization into machine-independent and machine-dependent types, detailing various techniques such as local optimization, global optimization, and peephole optimization. Specific methods like constant folding, dead code elimination, and loop unrolling are highlighted as effective strategies for enhancing code efficiency.

Uploaded by

htdf627
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views24 pages

SPCC Code Optimazation 1

The document discusses code optimization as a program transformation technique aimed at improving resource consumption and execution speed. It categorizes optimization into machine-independent and machine-dependent types, detailing various techniques such as local optimization, global optimization, and peephole optimization. Specific methods like constant folding, dead code elimination, and loop unrolling are highlighted as effective strategies for enhancing code efficiency.

Uploaded by

htdf627
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 24

System Programming and Compiler

construction (SPCC)
MODULE NO. 6
SYNTHESIS PHASE
TOPIC NAME
CODE OPTIMIZATION

Mrs. Prajakta S. Khelkar


13/04/20
Optimization is a program transformation technique,
which tries to improve the code by making it consume
less resources (i.e. CPU, Memory) and deliver high
speed.
 The quality of the object program is generally
measured by its size (for small computation) or its
running time (for large computation).
 It is theoretically impassible for a compiler to produce
the best possible object program for every source
program under any reasonable cast function.
 The accurate term for “code optimization” is ”code
improvement”.

13/04/20
The Principal Sources Of Optimization
 The code optimization techniques consist of detecting
patterns in the program and replacing these patterns by
equivalent but more efficient construct.
 Patterns may be local or global and replacement strategy
may be machine dependent or machine dependent.

13/04/20
Optimization can be categorized broadly into two types
 Machine Independent Optimization – This code optimization
phase attempts to improve the intermediate code to get a better
target code as the output. The part of the intermediate code which is
transformed here does not involve any CPU registers or absolute
memory locations. do { Item = 10;
item = 10; do
{
value = value + item ; value = value + item ;
} while(value<100); } while(value<100);
 Machine Dependent Optimization – Machine-dependent
optimization is done after the target code has been generated and
when the code is transformed according to the target machine
architecture. It involves CPU registers and may have absolute
memory references rather than relative references. Machine-
dependent optimizers put efforts to take maximum advantage of the
memory hierarchy.
13/04/20
Intermediat Code
Font end Target code
e code generation

Programmer apply transformation in Use register


should use select
loop, procedure appropriate
efficient call, address inst do
algorithm calculator peephole opt

13/04/20
Classification/Techniques of Optimization

1) Local optimization-Apply on Basic Block


2) Global optimization –Apply on across the Basic
Block/Data Flow Block
3) Peep-hole optimization-Apply on across the boundaries

13/04/20
1. Local optimization Technique

Local code optimization performs optimize local to a


function definition. Therefore it is also called Function
preserving transformation. It has following types
1) Compiler time
A) constant folding
B)constant propagation
2) Algebraic simplification /Re-association
3) Operator strength reduction
4) Dead code elimination
5) Copy propagation

13/04/20
1 . Compile Time Evaluation
Shifting of computation from run time to compile time

a) Constant folding

area=(22.0/7.0)*r*r → area=3.14*r*r

a) Constant propagation

pi=3.14
area=pi*r*r → area=3.14*r*r

13/04/20
2) Algebraic simplification /Re-association

Some statement can be deleted while some can be


simplified
Ex: x=x+0
x=x*1
x=x*0

13/04/20
3) Operator strength reduction

Replacement of an operator with less expensive one


multiplication /division operator can be replaced by
addition /shift operator. It usually occurs in address
calculation of array reference
Ex:
r1=r2*2 ---→ r1=r1+r2
r1=r2/2 ---→ r1=r1>>1

13/04/20
4) Dead code elimination

Dead code is a portion of the program which will not be


executed in any path of the program

Dead code elimination :


c=a*b //After elimination :
x=a c=a*b
till till
d=a*b+4 d=a*b+4

13/04/20
5) Copy propagation

It is same as constant propagation but generalized to non


constant value.
before removing

temp2=temp1
temp3=temp2*temp1

After removing

temp3=temp1*temp1

13/04/20
2. Global optimization(Apply on global
box)/Loop Optimization

1. Code motion /code movement


2. Induction variable
3. Loop invariant method
4. Loop unrolling
5. Loop fusion/loop faming

13/04/20
1) Code Motion
✓ There are two basic goals of code movement: To reduce the size of the
code. To reduce the frequency of execution of code
a = 200;
while(a>0)
{
b = x + y;
if (a % b == 0}
printf(“%d”, a);
}

//This code can be further optimized as


a = 200;
b = x + y;
while(a>0)
{
if (a % b == 0}
printf(“%d”, a);
}
13/04/20
2) Induction Variable and Strength Reduction :
• An induction variable is used in loop for the
following kind of assignment i = i + constant.
• Strength reduction means replacing the high
strength operator by the low strength.

i = 1; //After Reduction
i=1
while (i<10)
t=4
{ {
while( t<40)
y = i * 4; y = t;
t = t + 4;
}
}

13/04/20
3)Loop invariant method

Loop invariant optimization can be obtained by moving some


amount of code outside the loop and placing it just before
entering in the loop.
This method is also called code motion.
Example: N=max-1;
While(i<=N)
while(i<=max-1) {
sum=sum+a[i];
{
}
sum=sum+a[i];
}

13/04/20
4)Loop unrolling

 In this method number of jumps and test can be reduced by writing the
code two times. loop overhead can be reduced by reducing no. of
iteration and placing no. of code in loop.

int i=1; int i=1;


while(i<=100)
while(i<=100)
{ {
A[i]=b[i]; A[i]=b[i];
i++; i++;
} A[i]=b[i];
i++;
}

13/04/20
5)Loop fusion/loop faming

In loop fusion method several loop are merged


one loop.

Example: for i=1 to n do


for j=1 to m do
A[i,j]=10
Can be written as

for i=1,j=1 to n*m do

13/04/20
3. Peephole optimization
Peephole optimization is a simple and effective technique for locally
improving target code. This technique is applied to improve the
performance of the target program by examining the short sequence of
target instructions and replacing these instructions by shorter or faster
sequence.

Characteristics /Technique of Peephole Optimization

1.Elimination of redundant instruction


2.Removal of unreachable code
3. Flow control optimal
4. Algebraic simplification/strength reduction
5. Use of machine idioms
13/04/20
1.Elimination of redundant instruction

Redundant instruction elimination.


• Especially the redundant loads and stores can be eliminated in this type
of transformations.
• Example :
MOV R0,x MOV
x,R0
• We can eliminate the second instruction since x is already in
R0. But if (MOV x, RO) is a label statement then we cannot
remove it

13/04/20
2.Removal of unreachable code

13/04/20
3. Flow control optimal

13/04/20
4. Algebraic simplification/strength reduction

13/04/20
5. Use of machine idioms

13/04/20

You might also like