Intel ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS MANUAL VOLUME 1 REV 2.3 Manual page 7

Hide thumbs Also See for ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS MANUAL VOLUME 1 REV 2.3:
Table of Contents

Advertisement

3.5.2
3.5.3
3.5.4
3.5.5
3.5.6
3.6
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:162
4
Predication, Control Flow, and Instruction Stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:163
4.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:163
4.2
Predication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:163
4.2.1
4.2.2
4.2.3
4.2.4
4.2.5
4.3
Control Flow Optimizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:171
4.3.1
4.3.2
4.3.3
4.3.4
4.4
Branch and Prefetch Hints. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:176
4.5
Hints for Controlling Multi-threading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:177
4.5.1
4.5.2
4.5.3
4.6
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:179
5
Software Pipelining and Loop Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:181
5.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:181
5.2
Loop Terminology and Basic Loop Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:181
5.3
Optimization of Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:181
5.3.1
5.3.2
5.4
Loop Support Features in the Intel
5.4.1
5.4.2
5.4.3
5.4.4
5.5
Optimization of Loops in the Intel
5.5.1
5.5.2
5.5.3
5.5.4
5.5.5
5.5.6
5.5.7
5.5.8
5.5.9
5.6
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:204
6
Floating-point Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:205
6.1
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:205
6.2
FP Application Performance Limiters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:205
6.2.1
6.2.2
6.2.3
6.2.4
6.3
Floating-point Features in the Intel
6.3.1
6.3.2
vi
Data Interference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:158
Optimizing Code Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:158
Using Post-increment Loads and Stores . . . . . . . . . . . . . . . . . . . . . . . . . 1:159
Loop Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:160
Minimizing Check Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:161
Performance Costs of Branches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:163
Predication in the Intel
Optimizing Program Performance Using Predication . . . . . . . . . . . . . . . 1:165
Predication Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:168
Guidelines for Removing Branches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:171
Reducing Critical Path with Parallel Compares . . . . . . . . . . . . . . . . . . . . 1:172
Reducing Critical Path with Multiway Branches . . . . . . . . . . . . . . . . . . . 1:173
Selecting Multiple Values for One Variable or Register with Predication 1:174
Improving Instruction Stream Fetching . . . . . . . . . . . . . . . . . . . . . . . . . . 1:175
Wait Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:177
Idle Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:178
Critical Sections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:178
Loop Unrolling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:182
Software Pipelining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:183
Register Rotation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:185
Note on Initializing Rotating Predicates. . . . . . . . . . . . . . . . . . . . . . . . . . 1:186
Software-pipelined Loop Branches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:186
Terminology Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:189
While Loops. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:190
Loops with Predicated Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:192
Multiple-exit Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:193
Software Pipelining Considerations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:195
Software Pipelining and Advanced Loads . . . . . . . . . . . . . . . . . . . . . . . . 1:196
Loop Unrolling Prior to Software Pipelining . . . . . . . . . . . . . . . . . . . . . . . 1:198
Implementing Reductions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:200
Explicit Prolog and Epilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:201
Redundant Load Elimination in Loops. . . . . . . . . . . . . . . . . . . . . . . . . . . 1:204
Execution Latency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:205
Execution Bandwidth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:206
Memory Latency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:206
Memory Bandwidth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:207
Large and Wide Floating-point Register Set . . . . . . . . . . . . . . . . . . . . . . 1:207
Multiply-Add Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1:210
®
®
Itanium
Architecture . . . . . . . . . . . . . . . . . . . . 1:164
®
®
Itanium
Architecture . . . . . . . . . . . . . . . . . . . 1:184
®
®
Itanium
Architecture . . . . . . . . . . . . . . . . . . . . 1:190
®
®
Itanium
Architecture . . . . . . . . . . . . . . . . . . . 1:207
®
®

Advertisement

Table of Contents
loading

This manual is also suitable for:

Itanium architecture 2.3

Table of Contents