subtractions each of which causes the second oper -
and to be fetched from storage.
Block-Concurrent References
For some references, the accesses to all bytes wit1;lin
a group of contiguous storage locations, or a block,
appear to be concurrent to anotherCPU, but the
accesses do not necessarily appear to include more
than a byte at a time toI/O. When a fetch-type
reference is concurrent within a block toCPUs, no
store access by anotherCPU is permitted to the
block during the time that bytes contained in the
block are being fetched.I/O accesses may occur to
the bytes within the block between the fetches.
When a store-type reference is concurrent within a
block toCPUs, no access, either fetch or store, is
permitted to the block during the time that the bytes
within the block are being stored.I/O accesses may
occur to the bytes in the block between the stores.
Consistency Specification
The storage-operand references associated with allS format instructions and all RX format instructions
with the exception of EXECUTE,CONVERT TO DECIMAL, and CONVERT TO BINARY, are
block-concurrent, as observed by allCPUs, if the
operand is addressed on a boundary which is integral
to the size of the operand.
For the instructionsCOMPARE AND SWAP and COMPARE DOUBLE AND SWAP all accesses
to the storage operand appear to be concurrent as
observed by allCPUs. The under-mask instructions COMPARE LOGI CAL CHARACTERS UNDER MASK, INSERT
CHARACTERS UNDER MASK, andSTORE CHARACTERS UNDER MASK, and the instruc
tionsLOAD MULTIPLE and STORE MULTIPLE, access the storage operand in a left-to-right direc
tion,_and (lll bytes accessed within each doubleword to all CPUs to be accessed concurrently.
When destructive overlap does not exist, the oper
ands ofMOVE (MVC) are accessed as follows: • The first operand is accessed in a left-to-right
direction, and all bytes accessed within a dou
bleword appear to allCPUs to be accessed
concurrently.• The second operand is accessed left to right,
and all bytes within a doubleword in the sec
ond operand that are moved into a single dou
bleword in the first operand appear to allCPUs to be fetched concurrently. Thus, if the
first and second operands begin on the same
byte offset within a doubleword, the second
operand appears to be fetched doubleword
concurrent. If the offsets within a doubleword
differ by four, the second operand appears to
be fetched word-concurrent.
Destructive overlap is said to exist when the result
location is used asa source after the result has been
stored, assuming processing to be performed a single
byte at a time.
The operands forMOVE LONG and COMPARE LOGICAL LONG appear to all CPUs to be ac
cessed doubleword-concurrent when both operands
start on doubleword boundaries and are an integral
number of doublewords in length, and, forMOVE LONG, the operands do not overlap.
ForEXCLUSIVE OR (XC), when the first and
second operands coincide, the operands appear to allCPUs to be accessed doubleword-concurrent.
Programming Note
It should be noted that, in the case of XC designat
ing operands which coincide exactly, the bytes with
in the field may appear to be accessed three times,
by two fetches and one store: once as the fetch por
tion of the first operand update, once as the second
operand fetch, and then once as the store portion of
the first-operand update. Each of the three accesses
appears to allCPUs to be doubleword-concurrent,
but the three accesses do not necessarily appear to
occur one immediately after the other.
Relation Between Operand Accesses
Storage-operand fetches associated with one instruc
tion execution precede all storage-operand refer
ences for conceptually subsequent instructions. A
storage-operand store specified by one instruction
precedes all storage-operand stores specified by con
ceptually subsequent instructions, but it does not
necessarily precede storage-operand fetches speci
fied by conceptually subsequent instructions. How
ever, a storage-operand store does precede a con
ceptually subsequent storage-operand fetch to the
same real storage location.
When an instruction has two storage operands
both of which cause fetch references, it is unpredict
able which operand is fetched first, or how much of
one operand is fetched before the other operand is
fetched. When the two operands overlap, the com
mon locations may be fetched independently for
each operand.
When an instruction has two storage operands the
first of which causes a store and the second a fetch
reference, it is unpredictable how much of the sec
ond operand is fetched before the results are stored.
In the case of destructively overlapping operands,
the portion of the second operand which is common
to the first is not necessarily fetched from storage.
Program Execution 27
and to be fetched from storage.
Block-Concurrent References
For some references, the accesses to all bytes wit1;lin
a group of contiguous storage locations, or a block,
appear to be concurrent to another
accesses do not necessarily appear to include more
than a byte at a time to
reference is concurrent within a block to
store access by another
block during the time that bytes contained in the
block are being fetched.
the bytes within the block between the fetches.
When a store-type reference is concurrent within a
block to
permitted to the block during the time that the bytes
within the block are being stored.
occur to the bytes in the block between the stores.
Consistency Specification
The storage-operand references associated with all
with the exception of EXECUTE,
block-concurrent, as observed by all
operand is addressed on a boundary which is integral
to the size of the operand.
For the instructions
to the storage operand appear to be concurrent as
observed by all
CHARACTERS UNDER MASK, and
tions
tion,
When destructive overlap does not exist, the oper
ands of
direction, and all bytes accessed within a dou
bleword appear to all
concurrently.
and all bytes within a doubleword in the sec
ond operand that are moved into a single dou
bleword in the first operand appear to all
first and second operands begin on the same
byte offset within a doubleword, the second
operand appears to be fetched doubleword
concurrent. If the offsets within a doubleword
differ by four, the second operand appears to
be fetched word-concurrent.
Destructive overlap is said to exist when the result
location is used as
stored, assuming processing to be performed a single
byte at a time.
The operands for
cessed doubleword-concurrent when both operands
start on doubleword boundaries and are an integral
number of doublewords in length, and, for
For
second operands coincide, the operands appear to all
Programming Note
It should be noted that, in the case of XC designat
ing operands which coincide exactly, the bytes with
in the field may appear to be accessed three times,
by two fetches and one store: once as the fetch por
tion of the first operand update, once as the second
operand fetch, and then once as the store portion of
the first-operand update. Each of the three accesses
appears to all
but the three accesses do not necessarily appear to
occur one immediately after the other.
Relation Between Operand Accesses
Storage-operand fetches associated with one instruc
tion execution precede all storage-operand refer
ences for conceptually subsequent instructions. A
storage-operand store specified by one instruction
precedes all storage-operand stores specified by con
ceptually subsequent instructions, but it does not
necessarily precede storage-operand fetches speci
fied by conceptually subsequent instructions. How
ever, a storage-operand store does precede a con
ceptually subsequent storage-operand fetch to the
same real storage location.
When an instruction has two storage operands
both of which cause fetch references, it is unpredict
able which operand is fetched first, or how much of
one operand is fetched before the other operand is
fetched. When the two operands overlap, the com
mon locations may be fetched independently for
each operand.
When an instruction has two storage operands the
first of which causes a store and the second a fetch
reference, it is unpredictable how much of the sec
ond operand is fetched before the results are stored.
In the case of destructively overlapping operands,
the portion of the second operand which is common
to the first is not necessarily fetched from storage.
Program Execution 27