Hands-On Pin!
For Computer Architecture and Program Analysis Research
ISCA 2008
Pin Website
Tutorial Schedule
Speaker Bios
Presentation Slides
Call for Participation!
ISCA 2008 Tutorial
Sunday, June 22, 2008
Beijing, China

About Pin.

Pin is a dynamic instrumentation system provided by Intel (http://rogue.colorado.edu/Pin), 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, Itanium and XScale platforms. 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 20,000 times, has been cited in over 200 publications, and has over 250 registered mailing list users.

Tutorial Objective .

The tutorial targets researchers, students, and educators alike, and provides a detailed look at Pin as a mechanism for rapid prototyping. The tutorial is comprised of three 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, and presents advanced mechanisms for reducing runtime overheads. The last component integrates the first two components via a hands-on session allowing users to gain immediate experience in understanding the ease of writing fundamental, as well as advanced Pin tools.


Tutorial Schedule .

Part One: Overview, Key Concepts (50 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: Advanced Features and Applications (60 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. Industry-strength Pin-based tools, such as PinPoints (an execution trace generator) and PinSEL (a system call emulator), are presented to highlight the system's robust and powerful program introspection capabilities.

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 include concepts that will appeal to computer architecture researchers: cache simulation, branch prediction, temperature, power, multi-core simulation. Finally, we include concepts that will appeal to operating systems researchers: multi-process simulation, system call emulation, and the PinOS system which operates below (and is therefore able to observe) the operating system.

[15 minute break]

Part Three: Hands-On Interactive Tutorial (100 min)

The final part of the tutorial progresses from theory to practice, allowing attendees to gain hands-on experience writing, building, and running Pintools. We will guide audience members through the process of extending existing Pintools to achieve specific goals, which will vary from simple profiling tasks to more sophisticated runtime modifications. We will also hear tips and experiences from existing Pin users that we have selected from the Pinheads mailing list. Finally, we will make certain that each attendee learns exactly how and where to go to learn more.

NOTE TO ATTENDEES: Please bring an internet-enabled laptop for the demo.


Presenter Bios .

Kim Hazelwood is an Assistant Professor of Computer Science at the University of Virginia and a faculty consultant for Intel. Her research lies at the interface of compilers and computer architecture, where she focuses on virtual execution environments, their applications, and their implementation. Prior to joining UVa in 2005, Kim held a post-doc position with the Intel Pin team. She has also contributed to several similar projects, including Dynamo, CarbonFire, DELI, DynamoRIO, and Jikes RVM. Kim received her Ph.D. from Harvard University in 2004.

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.