Next: The s.reply field
Up: Memory system message data
Previous: The s.type field
The req_type field can take on several values, some of which are
currently reserved for future expansion. The types that are actually
supported in RSIM are split into the following categories:
- Those seen only at the processors and caches
- System transaction requests
- Replies
- Coherence actions
- Replacement messages
The names and functions of some of these field values resemble those
used in the UltraSPARC-II [25].
req_type values used only at the processors and caches:
The names of the req_type values used only at the processors
and caches are largely self-explanatory: READ, WRITE, RMW,
L1WRITE_PREFETCH, L1READ_PREFETCH, L2WRITE_PREFETCH,
and L2READ_PREFETCH. (The prefetch requests represent the type of
prefetch to issue and the level of cache to which to bring the line).
req_type values that specify system transaction requests:
System transaction requests are REQUESTs seen beyond the
caches (i.e. at the busses and directory). These request have
the following req_type values and demand the stated actions:
- READ_SH
- Reads a cache line without demanding ownership. Issued for
read misses and shared (read) prefetches.
- READ_OWN
- Reads a cache line and demands ownership. Issued for
write misses, read-modify-write misses, and exclusive (write) prefetches.
- UPGRADE
- Demands ownership for a cache line (without reading the line).
Issued for writes, read-modify-writes, or exclusive prefetches that are to
lines that hit in the cache, but are held in shared state.
req_type values that indicate replies:
Each of the request types discussed above receives a REPLY from the
module at which it is serviced. The following values of req_type
indicate such replies.
- REPLY_SH
- Brings a line to cache in shared state. Valid response
to READ_SH.
- REPLY_EXCL
- Brings a line to cache in exclusive state. Valid
response to READ_SH
, READ_OWN, or UPGRADE
- REPLY_UPGRADE
- Acknowledges ownership of a cache line. Valid
response to UPGRADE.
- REPLY_EXCLDY
- Brings a line to cache in modified (exclusive dirty)
state. Valid response to READ_OWN, or UPGRADE
req_type values that specify coherence actions:
In response to one of the system transaction requests described above and
based on the current
sharing status of the line,
the directory may send coherence messages with any of the following
req_type values to bring the line to an acceptable state: (These
messages may have an s.type of either COHE or COHE_REPLY.)
- COPYBACK
- Transitions a line from exclusive or modified state
to shared state. Invoked for READ_SH if held elsewhere with
ownership. Involves a cache-to-cache transfer to the requester and either an
acknowledgment (if exclusive state) or a copyback (if modified) to
the directory.
- COPYBACK_INVL
- Transitions a line from exclusive or modified
state to invalid state. Invoked for READ_OWN if held elsewhere
with ownership. Involves a cache-to-cache transfer to the requester
and an acknowledgment to the directory.
- INVL
- Transitions a line from shared to invalid state. Invoked
for READ_OWN or UPGRADE if held elsewhere in shared
state. Involves only acknowledgment to directory.
req_type values for replacement messages:
Replacement messages are sent when a line in exclusive or modified
state is evicted from the cache due to an incoming reply. These
messages are sent with an s.type of COHE_REPLY and
with one of the following req_type values:
- WRB
- Indicates a replacement from the modified state, and sends the
updated line to the directory and memory module
- REPL
- Indicates a replacement from the exclusive state, and informs
the directory of the replacement
The RSIM caches do not
inform the directory of replacements from shared state.
Next: The s.reply field
Up: Memory system message data
Previous: The s.type field
Vijay Sadananda Pai
Thu Aug 7 14:18:56 CDT 1997