
Volume 1, Part 2: Predication, Control Flow, and Instruction Stream
1:177
Two types of branch-related hints are defined by the Itanium architecture: branch
prediction hints and instruction prefetch hints. Branch prediction hints let the compiler
recommend the resources (if any) that should be used to dynamically predict specific
branches. With prefetch hints, the compiler can indicate the areas of the code that
should be prefetched to reduce demand I-cache misses.
Hints can be specified as completers on branch (
br
) and move to branch register
(abbreviated mov2br in this text since the actual mnemonic is
mov br=xx
). The hints
on branch instructions are the easiest to use since the instruction already exists and the
hint completer just has to be specified. mov2br instructions are used for indirect
branches. The exact interpretation of these hints is implementation specific although
the general behavior of hints is expected to be similar between processor generations.
It is also possible to re-write the hint fields on branches later using a binary rewriting
tools. This can occur statically or at execution time based on profile data without
changing the correctness of the program. This technique allows static hints to be
tailored for usage patterns that may not be fully known at compilation time or when the
binaries are first distributed.
4.5
Hints for Controlling Multi-threading
Some processors support multi-threading; that is, they support the simultaneous
execution of multiple threads (multiple logical processors) through a common set of
execution resources (data paths, functional units, TLBs, etc.). Functionally, each of
these hardware threads fully implements the Itanium architecture; therefore, software
need not be aware of multi-threading nor do anything special to support it. From
performance standpoint, there are a few circumstances where it may be beneficial for
software to provide information about its future resource requirements, which can be
done with the
hint
instruction. Such a hint could allow the processor to optimize
resource allocation among the hardware threads.
Note that, although not all implementations support all types of
hint
instruction, those
that do not support them execute the hint instruction as a nop, and hence there is little
penalty for software to provide these hints.
4.5.1
Wait Loops
Say a thread is waiting for another software thread to complete a task and, during that
time, doesn't expect to need significant processor resources but would like to receive its
fair share of resources once the task is complete. In such a situation, the waiting thread
can communicate this information to the processor as a hint. This encourages the
processor to allocate more processor resources to other threads of execution while this
thread is waiting.
Typically, the completion signal in question is a store, by some other software thread, to
a particular memory location. For example, a software thread may be waiting to acquire
a spinlock and may have little work to do until such time as it is able to acquire the lock.
A store to the spinlock in question may be an indication that the lock is now available
for this software thread to acquire.
Содержание ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS VOLUME 3 REV 2.3
Страница 1: ......
Страница 11: ...x Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 12: ...1 1 Intel Itanium Architecture Software Developer s Manual Rev 2 3 Part I Application Architecture Guide ...
Страница 13: ...1 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 33: ...1 22 Volume 1 Part 1 Introduction to the Intel Itanium Architecture ...
Страница 57: ...1 46 Volume 1 Part 1 Execution Environment ...
Страница 147: ...1 136 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 149: ...1 138 Volume 1 Part 2 About the Optimization Guide ...
Страница 191: ...1 180 Volume 1 Part 2 Predication Control Flow and Instruction Stream ...
Страница 230: ......
Страница 248: ...236 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 249: ...2 1 Intel Itanium Architecture Software Developer s Manual Rev 2 3 Part I System Architecture Guide ...
Страница 250: ...2 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 264: ...2 16 Volume 2 Part 1 Intel Itanium System Environment ...
Страница 380: ...2 132 Volume 2 Part 1 Interruptions ...
Страница 398: ...2 150 Volume 2 Part 1 Register Stack Engine ...
Страница 486: ...2 238 Volume 2 Part 1 IA 32 Interruption Vector Descriptions ...
Страница 749: ...2 501 Intel Itanium Architecture Software Developer s Manual Rev 2 3 Part II System Programmer s Guide ...
Страница 750: ...2 502 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 754: ...2 506 Volume 2 Part 2 About the System Programmer s Guide ...
Страница 796: ...2 548 Volume 2 Part 2 Interruptions and Serialization ...
Страница 808: ...2 560 Volume 2 Part 2 Context Management ...
Страница 842: ...2 594 Volume 2 Part 2 Floating point System Software ...
Страница 850: ...2 602 Volume 2 Part 2 IA 32 Application Support ...
Страница 862: ...2 614 Volume 2 Part 2 External Interrupt Architecture ...
Страница 870: ...2 622 Volume 2 Part 2 Performance Monitoring Support ...
Страница 891: ......
Страница 941: ...3 42 Volume 3 Instruction Reference cmp illegal_operation_fault PR p1 0 PR p2 0 Interruptions Illegal Operation fault ...
Страница 1099: ...3 200 Volume 3 Instruction Reference padd Interruptions Illegal Operation fault ...
Страница 1191: ...3 292 Volume 3 Pseudo Code Functions Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 1295: ...3 396 Volume 3 Resource and Dependency Semantics ...
Страница 1296: ......
Страница 1302: ...402 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 1494: ...4 192 Volume 4 Base IA 32 Instruction Reference FWAIT Wait See entry for WAIT ...
Страница 1564: ...4 262 Volume 4 Base IA 32 Instruction Reference LES Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1565: ...Volume 4 Base IA 32 Instruction Reference 4 263 LFS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1568: ...4 266 Volume 4 Base IA 32 Instruction Reference LGS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1583: ...Volume 4 Base IA 32 Instruction Reference 4 281 LSS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1647: ...Volume 4 Base IA 32 Instruction Reference 4 345 ROL ROR Rotate See entry for RCL RCR ROL ROR ...
Страница 1663: ...Volume 4 Base IA 32 Instruction Reference 4 361 SHL SHR Shift Instructions See entry for SAL SAR SHL SHR ...
Страница 1668: ...4 366 Volume 4 Base IA 32 Instruction Reference SIDT Store Interrupt Descriptor Table Register See entry for SGDT SIDT ...
Страница 1884: ...4 582 Volume 4 IA 32 SSE Instruction Reference ...
Страница 1885: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 Index ...
Страница 1886: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 1898: ...INDEX Index 12 Index for Volumes 1 2 3 and 4 ...