Accurate and practical profile-driven compilation using the profile buffer

  • Authors:
  • Thomas M. Conte;Kishore N. Menezes;Mary Ann Hirsch

  • Affiliations:
  • Department of Electrical and Computer Engineering, North Carolina State University, Raleigh, North Carolina;Department of Electrical and Computer Engineering, North Carolina State University, Raleigh, North Carolina;Department of Electrical and Computer Engineering, North Carolina State University, Raleigh, North Carolina

  • Venue:
  • Proceedings of the 29th annual ACM/IEEE international symposium on Microarchitecture
  • Year:
  • 1996

Quantified Score

Hi-index 0.00

Visualization

Abstract

Profiling is a technique of gathering program statistics in order to aid program optimization. In particular, it is an essential component of compiler optimization for the extraction of instruction-level parallelism. Code instrumentation has been the most popular method of profiling. However, real-time, interactive, and transaction processing applications suffer from the high execution-time overhead imposed by software instrumentation. This paper suggests the use of hardware dedicated to the task of profiling. The hardware proposed consists of a set of counters, the profile buffer. A profile collection method that combines the use of hardware, the compiler and operating system support is described. Three methods for profile buffer indexing, address-mapping, selective indexing, and compiler indexing are presented that allow this approach to produce accurate profiling information with very little execution slowdown. The profile information obtained is applied to a prominent compiler optimization, namely superblock scheduling. The resulting instruction-level parallelism approaches that obtained through the use of perfect profile information.