Purpose
The PROTECTED STREAM directives allow you to manage protected
streams. These streams are protected from being replaced by any
hardware-detected streams.
XL Fortran provides the following 8 protected stream directives:
- The PROTECTED_UNLIMITED_STREAM_SET_GO_FORWARD directive
establishes an unlimited-length protected stream that begins with the cache
line at the specified prefetch variable and fetches from increasing memory
addresses. The PROTECTED_UNLIMITED_STREAM_SET_GO_BACKWARD
directive fetches from decreasing memory addresses.
- The PROTECTED_STREAM_SET_FORWARD directive establishes a
limited-length protected stream that begins with the cache line at the
specified prefetch variable and fetches from increasing memory
addresses. The PROTECTED_STREAM_SET_BACKWARD directive fetches
from decreasing memory addresses.
- The PROTECTED_STREAM_COUNT directive sets the number of cache
lines for the specified limited-length stream.
- The PROTECTED_STREAM_GO directive starts to prefetch all
limited-length streams.
- The PROTECTED_STREAM_STOP directive stops prefetching the
specified protected stream.
- The PROTECTED_STREAM_STOP_ALL directive stops prefetching all
protected streams.
Syntax
The PROTECTED directive can take the following forms:
>>-PROTECTED_UNLIMITED_STREAM_SET_GO_FORWARD--(--prefetch_variable--,--stream_ID--)-><
|
- Note:
- Valid for PowerPC 970 and POWER5(TM).
>>-PROTECTED_UNLIMITED_STREAM_SET_GO_BACKWARD--(--prefetch_variable--,--stream_ID--)-><
|
- Note:
- Valid for PowerPC 970 and POWER5.
>>-PROTECTED_STREAM_SET_FORWARD--(--prefetch_variable--,--stream_ID--)-><
|
- Note:
- Valid for POWER5 only.
>>-PROTECTED_STREAM_SET_BACKWARD--(--prefetch_variable--,--stream_ID--)-><
|
- Note:
- Valid for POWER5 only.
>>-PROTECTED_STREAM_COUNT--(--unit_count--)--------------------><
|
- Note:
- Valid for POWER5 only.
>>-PROTECTED_STREAM_GO-----------------------------------------><
|
- Note:
- Valid for POWER5 only.
>>-PROTECTED_STREAM_STOP--(--stream_ID--)----------------------><
|
- Note:
- Valid for POWER5 only.
>>-PROTECTED_STREAM_STOP_ALL-----------------------------------><
|
- Note:
- Valid for POWER5 only.
- prefetch_variable
- is a variable to be prefetched. The variable must be a data object
with a determinable storage address. The variable can be of any data
type, including intrinsic and derived data types. The variable cannot
be a procedure name, subroutine name, module name, function name, literal
constant, label, zero-sized string, zero-length array, or array with a vector
subscript.
- stream_ID
- is the ID for the prefetched stream. It must be scalar and of type
integer. It can be any number from 0 to 7.
- unit_count
- is the number of cache lines for the limited-length protected
stream. It must be scalar and of type integer. It can be any
number from 0 to 1023. For a stream that is larger than 1024 cache
lines, use the PROTECTED_UNLIMITED_STREAM directives instead of the
PROTECTED_STREAM directives.
Related Information
For information on applying prefetch techniques to loops with a large
iteration count, see the STREAM_UNROLL
directive.
