1:178
Volume 1, Part 2: Predication, Control Flow, and Instruction Stream
This scenario can be hinted to the processor by executing an advanced load (
ld.a
or
ld.sa
) to the address that this software thread is waiting on, and then by executing a
hint @pause
instruction (in a subsequent instruction group). This encourages the
processor to devote more resources to other threads, yet if an entry is invalidated from
this thread's ALAT, normal processor resource allocation is resumed for this thread.
Resource allocation within the processor eventually reverts to a fair allocation, so
there's no need for software to hint that it is no longer in a wait loop. Conversely, while
software is in such a wait loop, it would be best to re-execute the
hint @pause
as part
of that loop, to continue to assert the hint for as long as that thread is waiting.
Note that if there is some high likelihood that the ALAT may contain a large number of
valid entries upon entering into a wait loop, there may be some advantage to removing
these (e.g., with an
invala
instruction) prior to executing the advanced load to the
address to be waited on. This may reduce the restoration of resource allocation to this
thread in cases where ALAT entries get invalidated other than the one for the address
being waited on, hence providing more processor resources to other threads.
4.5.2
Idle Loops
Another situation where a software thread expects not to need significant processor
resources for the next little while is when the software thread is executing an OS-kernel
idle loop. It can provide this information to the processor also by executing a
hint
@pause
instruction. This encourages the processor to allocate more processor resources
to other threads of execution for the next while.
Resource allocation within the processor eventually reverts to a fair allocation, so
there's no need for software to hint that it is no longer in an idle loop. Conversely, while
software is in such an idle loop, it would be best to re-execute the
hint @pause
as part
of that loop, to continue to assert the hint for as long as that thread is idle.
Note that if there is some high likelihood that the ALAT may contain a large number of
valid entries upon entering into an idle loop, there may be some advantage to removing
these (e.g., with an
invala
instruction) prior to entering the idle loop. This may reduce
the restoration of resource allocation to this thread in cases where these ALAT entries
get invalidated, hence providing more processor resources to other threads.
4.5.3
Critical Sections
The opposite case exists if software expects that, given extra resources for the next
period of time, overall system performance and throughput would be optimized. For
example, this software thread may be about to acquire a highly contested spinlock and
enter a critical section of code, and expeditious progress through that critical section
and the resultant speedy release of the spinlock may disproportionately benefit overall
system performance and throughput.
This scenario can be hinted to the processor by executing a
hint @priority
instruction.
This encourages the processor to devote more processor resources to this thread (at
the expense of other threads) for some period of time.
Summary of Contents for ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS VOLUME 3 REV 2.3
Page 1: ......
Page 11: ...x Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 13: ...1 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 33: ...1 22 Volume 1 Part 1 Introduction to the Intel Itanium Architecture ...
Page 57: ...1 46 Volume 1 Part 1 Execution Environment ...
Page 147: ...1 136 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 149: ...1 138 Volume 1 Part 2 About the Optimization Guide ...
Page 191: ...1 180 Volume 1 Part 2 Predication Control Flow and Instruction Stream ...
Page 230: ......
Page 248: ...236 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 250: ...2 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 264: ...2 16 Volume 2 Part 1 Intel Itanium System Environment ...
Page 380: ...2 132 Volume 2 Part 1 Interruptions ...
Page 398: ...2 150 Volume 2 Part 1 Register Stack Engine ...
Page 486: ...2 238 Volume 2 Part 1 IA 32 Interruption Vector Descriptions ...
Page 750: ...2 502 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 754: ...2 506 Volume 2 Part 2 About the System Programmer s Guide ...
Page 796: ...2 548 Volume 2 Part 2 Interruptions and Serialization ...
Page 808: ...2 560 Volume 2 Part 2 Context Management ...
Page 842: ...2 594 Volume 2 Part 2 Floating point System Software ...
Page 850: ...2 602 Volume 2 Part 2 IA 32 Application Support ...
Page 862: ...2 614 Volume 2 Part 2 External Interrupt Architecture ...
Page 870: ...2 622 Volume 2 Part 2 Performance Monitoring Support ...
Page 891: ......
Page 1099: ...3 200 Volume 3 Instruction Reference padd Interruptions Illegal Operation fault ...
Page 1295: ...3 396 Volume 3 Resource and Dependency Semantics ...
Page 1296: ......
Page 1302: ...402 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 1494: ...4 192 Volume 4 Base IA 32 Instruction Reference FWAIT Wait See entry for WAIT ...
Page 1647: ...Volume 4 Base IA 32 Instruction Reference 4 345 ROL ROR Rotate See entry for RCL RCR ROL ROR ...
Page 1884: ...4 582 Volume 4 IA 32 SSE Instruction Reference ...
Page 1885: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 Index ...
Page 1886: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 1898: ...INDEX Index 12 Index for Volumes 1 2 3 and 4 ...