Peephole Optimization

samrinriya 11,950 views 18 slides Apr 12, 2017
Slide 1
Slide 1 of 18
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18

About This Presentation

An important topic for Compiler Course.


Slide Content

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

Contents Functioning of Peephole Optimization & Example Replacement Rules Working Flow of Peephole Optimization Introduction to Peephole Optimization What is an Optimization 2 Conclusion References

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.

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

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

Working Flow of 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.

Functioning of Peephole Optimization Replacing slow instructions with faster ones Removing redundant code Removing redundant stack instructions

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 ...

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

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

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

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 

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

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

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

That’s all Any Question
Tags