summaryrefslogtreecommitdiff
path: root/src/mem/protocol/MOESI_SMP_token-msg.sm
blob: 98e27ec028602a9f86ae24e3807950d178c71c07 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/*
 * $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";
}