Programming Itanium-based Systems: Developing High Performance Applications for Intel's New Architecture

In Chapter 2, you learned that the Itanium processor provides a large number of registers. This is one important asset that contributes to the high level of software performance achieved by the architecture. Chapter 4 introduced the importance of and the use of upward and downward code motion to improve parallelism and performance. This chapter examines the role of the Itanium processor s advanced architectural features (such as speculation, predication, parallel compares, and software pipelining), and how they further enable the compiler to increase parallel execution of instructions and improve application performance.
You are now familiar with how the compiler prepares the instructions of an application program for parallel execution by the Itanium processor. The compiler not only produces the code for the application, it also distinguishes between independent and dependent instructions in the instruction stream, uses upward and downward code motion to reorder the instruction stream for efficient processing, and packs the instruction code in bundles based on templates for parallel processing. These are not the only things that the compiler does to prepare applications for execution by the Itanium processor.
There are other critical steps for the code generator of the compiler in selecting the right code. The architecture of the Itanium processor offers many new features to increase performance. Another important step is concerned with the use of architectural features like predication, speculation, parallel compares, and software pipelining. These capabilities in the architecture make explicit parallelism useful. They are designed simply to allow the compiler to produce...