The Intel IA-64 compiler code generator
- 1 January 2000
- journal article
- Published by Institute of Electrical and Electronics Engineers (IEEE) in IEEE Micro
- Vol. 20 (5) , 44-53
- https://doi.org/10.1109/40.877949
Abstract
In planning the new EPIC (Explicitly Parallel Instruction Computing) architecture, Intel designers wanted to exploit the high level of instruction-level parallelism (ILP) found in application code. To accomplish this goal, they incorporated a powerful set of features such as control and data speculation, predication, register rotation, loop branches, and a large register file. By using these features, the compiler plays a crucial role in achieving the overall performance of an IA-64 platform. This paper describes the electron code generator (ECG), the component of Intel's IA-64 production compiler that maximizes the benefits of these features. The ECG consists of multiple phases. The first phase, translation, converts the optimizer's intermediate representation (ILO) of the program into the ECG IR. Predicate region formation, if conversion, and compare generation occur in the predication phase. The ECG contains two schedulers: the software pipeliner for targeted cyclic regions and the global code scheduler for all remaining regions. Both schedulers make use of control and data speculation. The software pipeliner also uses rotating registers, predication, and loop branches to generate efficient schedules for integer as well as floating-point loops.Keywords
This publication has 12 references indexed in Scilit:
- Characterizing the impact of predicated execution on branch predictionPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2005
- Effective Compiler Support For Predicated Execution Using The HyperblockPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2005
- Wavefront scheduling: path based data representation and scheduling of subgraphsPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2003
- Parallelization of loops with exits on pipelined architecturesPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2002
- Improvements to graph coloring register allocationACM Transactions on Programming Languages and Systems, 1994
- Iterative modulo schedulingPublished by Association for Computing Machinery (ACM) ,1994
- Sentinel scheduling for VLIW and superscalar processorsPublished by Association for Computing Machinery (ACM) ,1992
- Code duplicationPublished by Association for Computing Machinery (ACM) ,1991
- Software pipelining: an effective scheduling technique for VLIW machinesPublished by Association for Computing Machinery (ACM) ,1988
- Register allocation & spilling via graph coloringPublished by Association for Computing Machinery (ACM) ,1982