Visiting Professor David Kaeli gives the Master CANS Seminar "Profiling and Optimization"

Date: 
Monday, 27 June 2011

DATES:
July 4th : 11:00 to 14:00 room C6-E106
July 5th : 11:00 to 14:00 room C6-E106
July 6th : 11:00 to 14:00 room C6-E106
July 7th : 11:00 to 14:00 room C6-E106
July 8th : 11:00 to 14:00 room C6-E106
July 11th : 09:00 to 12:00 room C6-E106
July 12th : 09:00 to 12:00 room C6-E106
July 13th : 08:00 to 14:00 room D6-003
July 14th : 09:00 to 12:00 room C6-E106

Overview:
This PhD-level course will discuss how to capture program static and dynamic characteristics of program execution using both hardware and software techniques. The course will also discuss how to utilize these characteristics in the areas of architectural modeling, program optimization, binary translation, power modeling, software fault recovery, security, software testing, and runtime monitoring. This year’s course will also focus on issues of security, and will run experiments on X86 and embedded processors. The subjects that will be covered in the course include:
a.) A historical perspective of profiling and instrumentation
b.) Instrumentation

  • Hardware techniques
    • Performance counters
    • ICE and pods
    • Trace arrays
    • Bus analyzers
    • LLATTs
  • Software techniques
    • source modifications
    • object modifications
    • executable modifications
    • emulators

c.) Applications

  • Performance
    • Hardware/architecture
    • Software
  • Recovery
    • Trace buffers
    • Dumps
  • Security
    • Anti-virus scanning
    • Trojan horses
    • Spam filtering
  • Testing
    • Clear-box testing
  • Power modeling
    • Instruction-based modeling
  • Monitoring
  • JITs/Binary Translators

d.) Optimization

  • Static
  • Dynamic

e.) Selected topics

  • Hot-cold code layout
  • Heap layout
  • Cloning and Specialization
  • Aspect-oriented programming/profiling
  • Power/energy efficiency
  • Anti-virus studies
  • Def-use testing
  • Cachability

f.) software/hardware interface - how does software interface to hardware
g.) program debugging and testing - tools and strategies

Course Details
Homework:
There will be one lab assignment that will ask you to run an experiment on a profiling
system. You will have the choice of using either the Pin toolset or the ATOM toolset.
The goal is to use a tool to obtain interesting runtime information about a program. We
will spend portions of 1-2 classes learning Pin during an online tutorial on computer
systems at UPC.

Paper Review:
You need to submit a review of a selected paper during the course. The review will
consist of a 1-page summary of the material presented in the selected paper, followed
by 2-3 pages of critical opinion of the material presented. Your review should
rigorously address the following questions:

  1. What is the problem being studied?
  2. Is this an important problem?
  3. What are the main points or results presented?
  4. What quantitative methods were used in this paper? Were these the best methods to be used?
  5. What did you learn from this paper?
  6. Compare this paper to similar papers on the subject? (you should find and read one or two related papers, and use them to compare to this paper)

In the last class, you will be asked to stand up and discuss your paper review with the class.

Grading:
Homework: 40%
Paper review: 40%
Class discussion: 20%
Tutorial participation: 10%

Topics to be covered:

Class 1a: Introduction
Course overview
Definitions of common terminology
Historical perspective
Issues with profiling: overhead, completeness and correctness

Class 1b: Tools
Papers – ATOM, Simics, Pin, Liberty, DCPI
Review of tools and techniques
Hardware Tools, Performance Counters

Class 2: Workload Characteristics
Papers – OO-Calder, Values, Uhlig, AS/400
Instruction Profiling, Memory Profiling, VisualDSP++

Class 3: Sampling Technology, AOP
Papers – Profile-Me, Trace Stitching,
Sampling theory
Sampled workloads during simulation
Incomplete profiles
Pin Tutorial

Class 4: Profile-guided Compilation
Papers – PLDI97, WMPI01, PLTO, IOICS03
Program graphs (PCG, TRG)
Code layout, Data layout
Instruction layout
Pin Tutorial

Class 5: Static Optimization
Papers – Ball/Larus, Static Branch Prediction
Code Layout

Class 6: Static/DynamicOptimization
Papers – Shade, Spike, FX!32
Overhead
Optimization techniques

Class 7: Dynamic Optimization
Papers – Dynamo, JITs, replay

Class 8: Translation, Software Testing
Papers – Dixie, UQBT, Def-Use, Dataflow

Class 9: Power Profiling, Security
Paper Review Discussion