Embedded processor designs are increasingly based on generalpurpose processor families, modified and extended in various ways. However, the production of software for embedded processors remains a challenging problem. One promising approach for addressing this problem is self-optimizing software: instead of writing a program, one implements a program generator that produces a large number of program variants, and then determines empirically which variant performs best. The particular aspect of performance that is optimized can be execution time, power consumption, throughout, etc. To prevent a combinatorial explosion in the number of program variants that have to be considered, self-optimizing systems bound the search space by exploiting knowledge of hardware parameters such as the number of registers, the capacity of the L1 cache, etc. For software to be truly selfoptimizing, hardware parameter values relevant for software optimization must be determined automatically. This paper makes the following contributions. • We describe X-Ray – a robust and extensible microbenchmark framework for measuring hardware parameters, in which it is very easy to implement new micro-benchmarks. This is particularly important in the embedded processor context because designers constantly add new features to architectures. • We describe novel algorithms for measuring commonly used hardware parameters and show how they can be implemented in this framework. We evaluate our implementation experimentally on both embedded and desktop architectures, and show that it produces more accurate and complete results than existing tools. ∗This work was supported by NSF grants ACI-9870687, EIA-9972853, ACI-0085969, ACI-0090217, ACI-0103723, and ACI-012140.
[1]
Keshav Pingali,et al.
Automatic measurement of memory hierarchy parameters
,
2005,
SIGMETRICS '05.
[2]
Steven G. Johnson,et al.
The Design and Implementation of FFTW3
,
2005,
Proceedings of the IEEE.
[3]
Gang Ren,et al.
Is Search Really Necessary to Generate High-Performance BLAS?
,
2005,
Proceedings of the IEEE.
[4]
Jack J. Dongarra,et al.
Automated empirical optimizations of software and the ATLAS project
,
2001,
Parallel Comput..
[5]
Carl Staelin,et al.
Mhz: Anatomy of a Micro-benchmark
,
1998,
USENIX Annual Technical Conference.
[6]
R. Saavedra,et al.
Measuring Cache and TLB Performance and Their Effect on Benchmark Run Times USC-CS-93-546
,
1993
.
[7]
Carl Staelin,et al.
lmbench: Portable Tools for Performance Analysis
,
1996,
USENIX Annual Technical Conference.
[8]
Franz Franchetti,et al.
SPIRAL: Code Generation for DSP Transforms
,
2005,
Proceedings of the IEEE.
[9]
David A. Patterson,et al.
Computer Architecture: A Quantitative Approach
,
1969
.
[10]
Yuefan Deng,et al.
New trends in high performance computing
,
2001,
Parallel Computing.
[11]
Alan Jay Smith,et al.
Measuring Cache and TLB Performance and Their Effect on Benchmark Runtimes
,
1995,
IEEE Trans. Computers.