Hello,
I work on GCC for the Institute for System Programming in Russia. Below
is a brief summary of the project aiming at adding support for ia64
speculation to the GCC instruction scheduler. I presented the project at
the last GCC Summit.
This description doesn't have any implementation details, but rather
refers to the summit paper. If needed, I'd be happy to provide longer
summary on the wiki page.
I'll not be able to respond on your comments until next Tuesday.
Regards, Andrey
---
Support for IA-64 speculation
Speculation is one of the features of IA-64 architecture aimed to expose
instruction-level parralelism. Using speculation allows for a compiler
to overcome the dependencies by moving a load through the ambiguous
store or across a branch (with data and control speculation,
respectively). This technique helps to hide the latency of memory loads
and reduce the execution time.
The patch adds support for both data and control speculation to the GCC
instruction scheduler. Implementation issues of the patch are described
in the paper 'Improving GCC instruction scheduler for IA-64', which can
be found in the proceedings of GCC Summit 2005.
Personnel
Maxim Kuvyrkov, Andrey Belevantsev (Institute for System Programming,
Russian Academy of Sciences)
Delivery Date
This project will be ready during the first stage of GCC 4.2.
Benefits
The patch improves SPEC FP on 2% (with -O2, as of May 2005). Aggressive
inlining and loop unrolling help the patch to produce better results on
SPEC INT. Detailed results are given in the abovementioned paper.
Dependencies
None.
Modifications Required
Target-independent parts of the patch modify the scheduler source files.
A new flag and params are added for enabling and controlling speculation
support. Target-dependent part includes new speculative instructions and
pipeline descriptions in the ia64 backend, and ia64.c changes.