gem5/src/mem/protocol/MOESI_SMP_token-msg.sm

62 lines
2.4 KiB
Text
Raw Normal View History

/*
* $Id: MOESI_token-msg.sm 1.3 04/06/05 22:43:20-00:00 kmoore@cottons.cs.wisc.edu $
*
*/
//int max_tokens();
// CoherenceRequestType
enumeration(CoherenceRequestType, desc="...") {
GETX, desc="Get eXclusive";
GETS, desc="Get Shared";
}
// StarvationType
enumeration(PersistentRequestType, desc="...") {
GETX_PERSISTENT, desc="...";
GETS_PERSISTENT, desc="...";
DEACTIVATE_PERSISTENT, desc="...";
}
// CoherenceResponseType
enumeration(CoherenceResponseType, desc="...") {
DATA_OWNER, desc="Data, with the owner token";
DATA_SHARED, desc="Data, without the owner token";
ACK, desc="ACKnowledgment";
ACK_OWNER, desc="ACKnowledgment, includes the clean owner token";
}
// StarvationMsg
structure(PersistentMsg, desc="...", interface="NetworkMessage") {
Address Address, desc="Physical address for this request";
PersistentRequestType Type, desc="Type of starvation request";
MachineID Requestor, desc="Node who initiated the request";
NetDest Destination, desc="Destination set";
MessageSizeType MessageSize, desc="size category of the message";
}
// RequestMsg
structure(RequestMsg, desc="...", interface="NetworkMessage") {
Address Address, desc="Physical address for this request";
CoherenceRequestType Type, desc="Type of request (GetS, GetX, PutX, etc)";
MachineID Requestor, desc="Node who initiated the request";
NetDest Destination, desc="Multicast destination mask";
MachineType DestMachine, desc="What component receives the data";
MessageSizeType MessageSize, desc="size category of the message";
}
// ResponseMsg
structure(ResponseMsg, desc="...", interface="NetworkMessage") {
Address Address, desc="Physical address for this request";
CoherenceResponseType Type, desc="Type of response (Ack, Data, etc)";
MachineID Sender, desc="Node who sent the data";
MachineType SenderMachine, desc="What component sent the data";
NetDest Destination, desc="Node to whom the data is sent";
MachineType DestMachine, desc="What component receives the data";
int Tokens, desc="Number of tokens being transfered for this line";
DataBlock DataBlk, desc="data for the cache line";
bool Dirty, desc="Is the data dirty (different than memory)?";
MessageSizeType MessageSize, desc="size category of the message";
}