1996 · 50 citations · 16 references
ComputingComputer EngineeringComputer ScienceCompilersComputer ArchitectureOperating SystemsControl-flow AnalysisData-flow AnalysisInstruction SchedulingInstruction-level ParallelismPerformance Bottleneck AnalysisCode InstrumentationCompiler DesignExecution Time AnalysisParallel ProfilingPerformance ProfilingProfilingProgram OptimizationTransaction Processing
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. 1
16
Susan L. Graham, Peter B. Kessler, Marshall Kirk McKusick · 1982 · 978 citations
Two-level adaptive training branch prediction
Tse-Yu Yeh, Yale N. Patt · 1991 · 569 citations · Full text