Detailed Pin!
Binary Instrumentation Engine
CGO 2010
Pin Website
Tutorial Schedule
Speaker Bios
Presentation Slides
Call for Participation!
CGO 2010 Tutorial
Sunday, April 25, 2010
Toronto, Canada

About Pin.

Pin is a dynamic instrumentation system provided by Intel (http://www.pintool.org), which allows C/C++ introspection code to be injected at arbitrary places in a running executable. The injected introspection code is used to observe the behavior of the program, and can be used to write a variety of tools, including application profilers, memory leak detectors, and trace generators for the IA32, Intel64 and IA64 (Itanium) platforms, running either Windows or Linux. Pin provides a rich API that abstracts away the underlying instruction set idiosyncrasies and allows context information such as register contents to be passed to the injected code as parameters. Pin automatically saves and restores registers that are overwritten by the injected code so the application continues to execute normally. Pin makes it easy to do studies on complex real-life applications, which makes it a useful tool not only for research, but also for education. Pin has been downloaded over 35,000 times, has been cited in over 600 publications, and has over 550 registered mailing list users.

Tutorial Objective .

The tutorial targets researchers, students, and educators alike, and provides a detailed look at Pin, both how to use Pin and how Pin works. The tutorial is comprised of four learning components. The first component provides a brief insight into the workings of Pin, and introduces its fundamental instrumentation structures and concepts. The second component introduces useful Pin-based tools that are freely available for download, in particular we will look in detail at the memtrace and membuffer tools, which implement the instrumentation basis for algorithms which need to examine memory accesses. The third component will present some of the more advanced Pin APIs, such as signal interception, multi threaded pin tools. along with mechanisms for reducing runtime overhead of pin tools. The final component will present methods for writing optimal Pintools, and outline usages of Pin in Industry and Academia.


Tutorial Schedule .

1:00PM-5:30PM

Part One: Overview, Key Concepts (60 min)

The first part of the tutorial provides an introduction to Pin and its basic API for writing instrumentation tools (Pintools). Simple Pintools are used to motivate and explain Pin's just-in-time and ahead-of-time instrumentation features. In addition, we will familiarize the attendees with the various components that make up a distributed Pin kit.

[15 minute break]

Part Two: Pintools in Detail (60 min)

Pin's largest value comes from its utility in the research community. The tutorial highlights concepts that appeal to language and compiler researchers: memory leak detectors, race condition detectors, and profilers. We will wlakthru the memtrace and membuffer tools. We will include concepts that will appeal to computer architecture researchers: cache simulation, branch prediction, multi-core simulation. Finally, we include concepts that will appeal to operating systems researchers: multi-process simulation, system call emulation.

[15 minute break]

Part Three: Advanced Pin Usage: Advanced Pin APIs (45 min)

We will present some of the more advanced Pin APIs, and show examples of their usage. Some examples of these are: signal interception, instruction re-writing, multi threaded pin tools, controlling the Pin code cache.

[15 minute break]

Part Four: Advanced Pin Usage: Performance and examples of Pin usage in Industry and Academia (45 min)

Many opportunities exist for optimizing your use of Pin. In this part of the tutorial, we focus on various tips and tricks for improving instrumentation performance. We also discuss numerous sample applications of Pin in Industry and Academia


Presenter Bios .

Tevi Devor is a Staff Engineer at Intel and has been working in the Pin project for the last 5 years. Most recently before this, he worked on ia-32el, Intel's dynamic binary translator used for running IA32 applications on IA64 (Itanium) platforms. Tevi received an M.Sc from Queens University, Kignston Canada in 1985, and a B.Sc from University of Toronto in 1984.

Robert Cohn is a Senior Principal Engineer at Intel and is the original developer of Pin. Previously, he was a developer of Spike, a post-link optimizer for the Itanium and Alpha processors. He also added profile-guided optimization to Digital's C compiler for Alpha. Robert received a Ph.D. from Carnegie Mellon in 1992.