Contemporary processors with wide parallelism and deep pipelines result in complex and intrinsically nonstructured interactions between different architectural features of the processor, the compiler and the application, making it extremely difficult to predict performance variations when changing different processor features. Compiler-Architecture Co-Exploration is required to evaluate the effects of architectural changes (such as connectivity sharing) on the performance of the entire system. These architectural modifications require the specification of detailed resource conflict information (generally represented as Reservation Tables) to the compiler – a task traditionally done manually on a per-operation basis. However, for deep pipelines, with complex resource sharing, and large non-structured instruction sets, manual, per-operation specification is a very tedious and error prone task. Moreover, reflecting the changes to the architecture during exploration in the conflict information requires changes to many Reservation Tables. In this paper we present a technique for automatic generation of Reservation Tables, that is used to drive architectural exploration of a large number of designs. Since the designer is relieved from the burden of manual specification and updating, he can drive fast exploration iterations, and cover a large space of architectures. We briefly outline our automatic Reservation Tables generation approach, and present a set of exploration experiments on a large set of EPIC architectures, for varying connectivity sharing, number of functional units, multicycling units, with varied latency configurations. For each point in the architecture space we evaluate a set of benchmarks from scientific, multimedia and general purpose application domains. Our experiments demonstrate that such a compiler-architecture exploration environment can uncover many interesting and non-intuitive architectural design points, giving the system designer flexibility to perform further system-level tradeoffs.
[1]
Nikil D. Dutt,et al.
A Unified code generation approach using mutation scheduling
,
1994,
Code Generation for Embedded Processors.
[2]
Ed F. Deprettere,et al.
The construction of a retargetable simulator for an architecture template
,
1998,
CODES.
[3]
Nikil D. Dutt,et al.
V-SAT: A visual specification and analysis tool for system-on-chip exploration
,
2001,
J. Syst. Archit..
[4]
Rainer Leupers,et al.
Retargetable Code Generation Based on Structural Processor Description
,
1998,
Des. Autom. Embed. Syst..
[5]
B. Ramakrishna Rau,et al.
Iterative modulo scheduling: an algorithm for software pipelining loops
,
1994,
MICRO 27.
[6]
Srinivas Devadas,et al.
Instruction selection, resource allocation, and scheduling in the AVIV retargetable code generator
,
1998,
Proceedings 1998 Design and Automation Conference. 35th DAC. (Cat. No.98CH36175).
[7]
Steven S. Muchnick,et al.
Advanced Compiler Design and Implementation
,
1997
.
[8]
Maria Freericks,et al.
The nml machine description formalism
,
1991
.
[9]
Vasanth Bala,et al.
A limit study of local memory requirements using value reuse profiles
,
1995,
MICRO 28.
[10]
Peter M. Kogge,et al.
The Architecture of Pipelined Computers
,
1981
.
[11]
Nikil D. Dutt,et al.
EXPRESSION: a language for architecture exploration through compiler/simulator retargetability
,
1999,
Design, Automation and Test in Europe Conference and Exhibition, 1999. Proceedings (Cat. No. PR00078).
[12]
Srinivas Devadas,et al.
ISDL: an instruction set description language for retargetability
,
1997,
DAC.
[13]
Vasanth Bala,et al.
Efficient instruction scheduling using finite state automata
,
1995,
MICRO 1995.