next up previous contents
Next: The s.reply field Up: Memory system message data Previous: The s.type field

The req_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:

  1. Those seen only at the processors and caches
  2. System transaction requests
  3. Replies
  4. Coherence actions
  5. 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_SHgif, READ_OWN, or UPGRADEgif
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 UPGRADEgif

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 up previous contents
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