scispace - formally typeset
Journal ArticleDOI

Pin: building customized program analysis tools with dynamic instrumentation

Reads0
Chats0
TLDR
The goals are to provide easy-to-use, portable, transparent, and efficient instrumentation, and to illustrate Pin's versatility, two Pintools in daily use to analyze production software are described.
Abstract
Robust and powerful software instrumentation tools are essential for program analysis tasks such as profiling, performance evaluation, and bug detection. To meet this need, we have developed a new instrumentation system called Pin. Our goals are to provide easy-to-use, portable, transparent, and efficient instrumentation. Instrumentation tools (called Pintools) are written in C/C++ using Pin's rich API. Pin follows the model of ATOM, allowing the tool writer to analyze an application at the instruction level without the need for detailed knowledge of the underlying instruction set. The API is designed to be architecture independent whenever possible, making Pintools source compatible across different architectures. However, a Pintool can access architecture-specific details when necessary. Instrumentation with Pin is mostly transparent as the application and Pintool observe the application's original, uninstrumented behavior. Pin uses dynamic compilation to instrument executables while they are running. For efficiency, Pin uses several techniques, including inlining, register re-allocation, liveness analysis, and instruction scheduling to optimize instrumentation. This fully automated approach delivers significantly better instrumentation performance than similar tools. For example, Pin is 3.3x faster than Valgrind and 2x faster than DynamoRIO for basic-block counting. To illustrate Pin's versatility, we describe two Pintools in daily use to analyze production software. Pin is publicly available for Linux platforms on four architectures: IA32 (32-bit x86), EM64T (64-bit x86), Itanium®, and ARM. In the ten months since Pin 2 was released in July 2004, there have been over 3000 downloads from its website.

read more

Content maybe subject to copyright    Report

Citations
More filters
Proceedings ArticleDOI

Rodinia: A benchmark suite for heterogeneous computing

TL;DR: This characterization shows that the Rodinia benchmarks cover a wide range of parallel communication patterns, synchronization techniques and power consumption, and has led to some important architectural insight, such as the growing importance of memory-bandwidth limitations and the consequent importance of data layout.
Proceedings ArticleDOI

Valgrind: a framework for heavyweight dynamic binary instrumentation

TL;DR: Valgrind is described, a DBI framework designed for building heavyweight DBA tools that can be used to build more interesting, heavyweight tools that are difficult or impossible to build with other DBI frameworks such as Pin and DynamoRIO.
Proceedings ArticleDOI

McPAT: an integrated power, area, and timing modeling framework for multicore and manycore architectures

TL;DR: Combining power, area, and timing results of McPAT with performance simulation of PARSEC benchmarks at the 22nm technology node for both common in-order and out-of-order manycore designs shows that when die cost is not taken into account clustering 8 cores together gives the best energy-delay product, whereas when cost is taking into account configuring clusters with 4 cores gives thebest EDA2P and EDAP.

Benchmarking modern multiprocessors

TL;DR: A methodology to design effective benchmark suites is developed and its effectiveness is demonstrated by developing and deploying a benchmark suite for evaluating multiprocessors called PARSEC, which has been adopted by many architecture groups in both research and industry.
Proceedings ArticleDOI

NV-Heaps: making persistent objects fast and safe with next-generation, non-volatile memories

TL;DR: A lightweight, high-performance persistent object system called NV-heaps is implemented that provides transactional semantics while preventing these errors and providing a model for persistence that is easy to use and reason about.
References
More filters

Vulcan Binary transformation in a distributed environment

TL;DR: Vulcan provides both static and dynamic code modification and provides a framework for cross-component analysis and optimization and provides system-level analysis for heterogeneous binaries across instruction sets.
Journal ArticleDOI

A methodology for procedure cloning

TL;DR: In this article, a three-phase algorithm for deciding when to clone a procedure is presented, which aims to avoid unnecessary code growth by considering how the information exposed by cloning will be used during optimization.
Proceedings Article

DIOTA: Dynamic Instrumentation, Optimization and Transformation of Applications

TL;DR: DIOTA, a novel method for instrumenting binaries that ensures that instrumented code is generated on the fly, while the original process is used for data accesses, is described.
Proceedings ArticleDOI

Ispike: a post-link optimizer for the Intel/spl reg/ Itanium/spl reg/ architecture

TL;DR: Ispike improves performance by as much as 40% on the ltanium/spl reg/2 processor, with average improvement of 8.5% and 9.9% over executables generated by the Intel/ spl reg/ Electron compiler and by the Gcc compiler, respectively.
Proceedings ArticleDOI

Hardware support for control transfers in code caches

TL;DR: This work analyzes several key aspects of superblock chaining and finds that a conventional baseline code cache with software jump target prediction results in 14.6% IPC loss against the original binary, and introduces amodified software prediction technique that reduces theIPC loss to 11.4%.