IF4091 Compiler Optimization Techniques Syllabus:

IF4091 Compiler Optimization Techniques Syllabus – Anna University PG Syllabus Regulation 2021

COURSE OBJECTIVES:

 To understand the optimization techniques used in compiler design.
 To be aware of the various computer architectures that support parallelism.
 To become familiar with the theoretical background needed for code optimization.
 To understand the techniques used for identifying parallelism in a sequential program.
 To learn the various optimization algorithms.

UNIT I INTRODUCTION

Language Processors – The Structure of a Compiler – The Evolution of Programming Languages The Science of Building a Compiler – Applications of Compiler Technology Programming Language Basics – The Lexical Analyzer Generator -Parser Generator – Overview of Basic Blocks and Flow Graphs – Optimization of Basic Blocks – Principle Sources of Optimization.

UNIT II INSTRUCTION-LEVEL PARALLELISM

Processor Architectures – Code-Scheduling Constraints – Basic-Block Scheduling –Global Code Scheduling – Advanced code motion techniques – Interaction with Dynamic Schedulers- Software Pipelining.

UNIT III OPTIMISING FOR PARALLELISM AND LOCALITY-THEORY

Basic Concepts – Matrix-Multiply: An Example – Iteration Spaces – Affine Array Indexes – Data Reuse- Array data dependence Analysis.

UNIT IV OPTIMISING FOR PARALLELISM AND LOCALITY – APPLICATION

Finding Synchronisation – Free Parallelism – Synchronisation Between Parallel Loops – Pipelining – Locality Optimizations – Other Uses of Affine Transforms.

UNIT V INTERPROCEDURAL ANALYSIS

Basic Concepts – Need for Interprocedural Analysis – A Logical Representation of Data Flow – A Simple Pointer-Analysis Algorithm – Context Insensitive Interprocedural Analysis – Context Sensitive Pointer-Analysis – Datalog Implementation by Binary Decision Diagrams.

COURSE OUTCOMES:

CO1: Design and implement techniques used for optimization by a compiler.
CO2: Modify the existing architecture that supports parallelism.
CO3: Modify the existing data structures of an open source optimising compiler.
CO4: Design and implement new data structures and algorithms for code optimization.
CO5: Critically analyse different data structures and algorithms used in the building of an optimising compiler.

TOTAL : 45 PERIODS

REFERENCES

1. Alfred V. Aho, Monica S.Lam, Ravi Sethi, Jeffrey D.Ullman, “Compilers: Principles, Techniques and Tools”, Second Edition, Pearson Education,2008.
2. Randy Allen, Ken Kennedy, “Optimizing Compilers for Modern Architectures: A Dependence-based Approach”, Morgan Kaufmann Publishers, 2002.
3. Steven S. Muchnick, “Advanced Compiler Design and Implementation”, Morgan Kaufmann Publishers – Elsevier Science, India, 2007
4. John Hopcroft, Rajeev Motwani, Jeffrey Ullman, “Introduction To Automata Theory Languages, and Computation”, Third Edition, Pearson Education, 2007.
5. Torbengidius Mogensen, “Basics of Compiler Design”, Springer, 2011.
6. Charles N, Ron K Cytron, Richard J LeBlanc Jr., “Crafting a Compiler”, Pearson Education, 2010.