Packet Command Attributes
From gem5
Each packet contains a command, which consists of an a set of attributes. The following table indicates per command type, the type of response required (or InvalidCmd if none), and a set of flags. The contents of this table is based on src/mem/packet.hh (containing all command types) and src/mem/packet.cc (defining attributes per command type).
| Command | response | IsRead | IsWrite | IsUpgrade | IsInvalidate | NeedsExclusive | IsRequest | IsResponse | NeedsResponse | IsSWPrefetch | IsHWPrefetch | IsLlsc | HasData | IsError | IsPrint | IsFlush |
| InvalidCmd | InvalidCmd | |||||||||||||||
| ReadReq | ReadResp | IsRead | IsRequest | NeedsResponse | ||||||||||||
| ReadResp | InvalidCmd | IsRead | IsResponse | HasData | ||||||||||||
| ReadRespWithInvalidate | InvalidCmd | IsRead | IsInvalidate | IsResponse | HasData | |||||||||||
| WriteReq | WriteResp | IsWrite | NeedsExclusive | IsRequest | NeedsResponse | HasData | ||||||||||
| WriteResp | InvalidCmd | IsWrite | NeedsExclusive | IsResponse | ||||||||||||
| Writeback | InvalidCmd | IsWrite | NeedsExclusive | IsRequest | HasData | |||||||||||
| SoftPFReq | SoftPFResp | IsRead | IsRequest | NeedsResponse | IsSWPrefetch | |||||||||||
| HardPFReq | HardPFResp | IsRead | IsRequest | NeedsResponse | IsHWPrefetch | |||||||||||
| SoftPFResp | InvalidCmd | IsRead | IsResponse | IsSWPrefetch | HasData | |||||||||||
| HardPFResp | InvalidCmd | IsRead | IsResponse | IsHWPrefetch | HasData | |||||||||||
| UpgradeReq | UpgradeResp | IsUpgrade | IsInvalidate | NeedsExclusive | IsRequest | NeedsResponse | ||||||||||
| SCUpgradeReq | UpgradeResp | IsUpgrade | IsInvalidate | NeedsExclusive | IsRequest | NeedsResponse | IsLlsc | |||||||||
| UpgradeResp | InvalidCmd | IsUpgrade | NeedsExclusive | IsResponse | ||||||||||||
| SCUpgradeFailReq | UpgradeFailResp | IsInvalidate | NeedsExclusive | IsRequest | NeedsResponse | IsLlsc | ||||||||||
| UpgradeFailResp | InvalidCmd | NeedsExclusive | IsResponse | |||||||||||||
| ReadExReq | ReadExResp | IsRead | IsInvalidate | NeedsExclusive | IsRequest | NeedsResponse | ||||||||||
| ReadExResp | InvalidCmd | IsRead | NeedsExclusive | IsResponse | HasData | |||||||||||
| LoadLockedReq | ReadResp | IsRead | IsRequest | NeedsResponse | IsLlsc | |||||||||||
| StoreCondReq | StoreCondResp | IsWrite | NeedsExclusive | IsRequest | NeedsResponse | IsLlsc | HasData | |||||||||
| StoreCondFailReq | StoreCondResp | IsWrite | NeedsExclusive | IsRequest | NeedsResponse | IsLlsc | HasData | |||||||||
| StoreCondResp | InvalidCmd | IsWrite | NeedsExclusive | IsResponse | IsLlsc | |||||||||||
| SwapReq | SwapResp | IsRead | IsWrite | NeedsExclusive | IsRequest | NeedsResponse | HasData | |||||||||
| SwapResp | InvalidCmd | IsRead | IsWrite | NeedsExclusive | IsResponse | HasData | ||||||||||
| IntReq | MessageResp | IsWrite | IsRequest | NeedsResponse | HasData | |||||||||||
| IntResp | InvalidCmd | IsWrite | IsResponse | |||||||||||||
| NetworkNackError | InvalidCmd | IsResponse | IsError | |||||||||||||
| InvalidDestError | InvalidCmd | IsResponse | IsError | |||||||||||||
| BadAddressError | InvalidCmd | IsResponse | IsError | |||||||||||||
| FunctionalReadError | InvalidCmd | IsRead | IsResponse | IsError | ||||||||||||
| FunctionalWriteError | InvalidCmd | IsWrite | IsResponse | IsError | ||||||||||||
| PrintReq | InvalidCmd | IsRequest | IsPrint | |||||||||||||
| Flush Request | InvalidCmd | NeedsExclusive | IsRequest | IsFlush | ||||||||||||
| Invalidation Request | InvalidCmd | IsInvalidate | NeedsExclusive | IsRequest |