peephole optimization

18
Welcome to my Presentation Topic : Peephole Optimization Samrin Ahmed ID: 011142021

Upload: united-international-university

Post on 23-Jan-2018

249 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: Peephole Optimization

Welcome to my

Presentation

Topic : Peephole Optimization

Samrin Ahmed

ID: 011142021

Page 2: Peephole Optimization

CONTENTS

Functioning of Peephole Optimization & Example

Replacement Rules

Working Flow of Peephole Optimization

Introduction to Peephole Optimization

What is an Optimization

2

Conclusion

References

Page 3: Peephole Optimization

What is Optimization ??

Process of transforming a piece of code to make it more efficient (either in

terms of time or space) without changing its output or side-effects.

Tries to minimize or maximize some attributes of an executable computer

program.

Page 4: Peephole Optimization

Introduction to Peephole

Optimization ??

Optimization performed over a very small set of

instructions in a segment of generated code.

Works by recognizing sets of instructions that can be

replaced by shorter or faster sets of instructions.

Goals:

improve performance

reduce code size

reduce memory footprint

Page 5: Peephole Optimization

Why it’s needed ??

After compilation, the code still has some flaws

Scheduling & allocation really are NP-Complete

Optimizer may not implement every needed transformation

Curing the problem

More work on scheduling and allocation

Implement more optimizations

— or —

Optimize after compilation

Peephole optimization

Link-time optimization

Page 6: Peephole Optimization

Working Flow of Peephole

Optimization

Page 7: Peephole Optimization

Replacement Rules

Common techniques applied in peephole optimization:-

Constant folding

– Evaluate constant sub-expressions in advance.

Strength reduction

– Replace slow operations with faster equivalents.

Null sequences

– Delete useless operations.

Combine operations

– Replace several operations with one equivalent.

Algebraic laws

– Use algebraic laws to simplify or reorder instructions.

Special case instructions

– Use instructions designed for special operand cases.

Address mode operations

– Use address modes to simplify code.

Page 8: Peephole Optimization

Functioning of Peephole

Optimization

Replacing slow instructions with faster ones

Removing redundant code

Removing redundant stack instructions

Page 9: Peephole Optimization

Functioning (Contd…) Replacing slow instructions with faster ones

The following Java byteCode

...

load 1

load 1

mul

...

Can be replaced by

...

load 1

dup

mul

...

Page 10: Peephole Optimization

Functioning (Contd…)

Removing redundant code

Another example is to eliminate redundant load stores.

a = b + c;

d = a + e;

is straightforwardly implemented as

MOV b, R0 # Copy b to the register

ADD c, R0 # Add c to the register, the register is now b+c

MOV R0, a # Copy the register to a

MOV a, R0 # Copy a to the register

ADD e, R0 # Add e to the register, the register is now a+e [(b+c)+e]

MOV R0, d # Copy the register to d

Page 11: Peephole Optimization

Functioning (Contd…)

Removing redundant code

but can be optimized to

MOV b, R0 # Copy b to the register

ADD c, R0 # Add c to the register, which is now b+c (a)

MOV R0, a # Copy the register to a

ADD e, R0 # Add e to the register, which is now b+c+e [(a)+e]

MOV R0, d # Copy the register to d

Page 12: Peephole Optimization

Functioning (Contd…)

Removing redundant stack instructions

PUSH AF

PUSH BC

PUSH DE

PUSH HL

CALL _ADDR1

POP HL

POP DE

POP BC

POP AF

PUSH AF

PUSH BC

PUSH DE

PUSH HL

CALL _ADDR2

POP HL

POP DE

POP BC

POP AF

PUSH AF

PUSH BC

PUSH DE

PUSH HL

CALL _ADDR1

CALL _ADDR2

POP HL

POP DE

POP BC

POP AF

Page 13: Peephole Optimization

Functioning (Contd…)

Source Code:

If ( a<b ) {

a = a + b;

}

Peephole optimization of jumps

Eliminate jumps to jumps

Eliminate jumps after conditional branches

“Adjacent” instructions = “Adjacent in control flow”

IL Code:

PUSH a

PUSH b

CMP a,b

JUMP L1

EXIT

L1:

ADD a,b

Page 14: Peephole Optimization

Other Considerations

Control-flow operations

Can clear simplifier’s window at branch or label

More aggressive approach: combine across branches

Same considerations arise with predication

Physical versus logical windows

Can run optimizer over a logical window

Logical windows (within block) improve effectiveness

Page 15: Peephole Optimization

Conclusion

So…

Peephole optimization remains viable

Post allocation improvements

Cleans up rough edges

Peephole technology works for selection

Description driven matchers

Used in several important systems

All of this will work equally well in binary-to-binary translation

Page 16: Peephole Optimization

References

https://en.wikipedia.org/wiki/Peephole_optimization

http://www.iosrjournals.org/iosr-jce/papers/Vol9-Issue4/N0948086.pdf?id=255

https://class.coursera.org/compilers/lecture/76

https://www.slideshare.net/AnulChaudhary/peephole-optimization-techniques-in-

compiler-design

Page 17: Peephole Optimization

That’s all

Any Question

Page 18: Peephole Optimization