On Mon, 26 Nov 2012, zhengchl wrote:

Hi,

in MOESI_CMP_directory-dir.sm line 407, when dir in M or O state receive DMA_WRITE, the dir controller should send DMA_WRITE request to cache in order to get latest data. As the follow code does:

1.    action(f_forwardRequestDirIsRequestor, "\f", desc="Forward
  request to owner") {
2.      peek(requestQueue_in, RequestMsg) {
3.        enqueue(forwardNetwork_out, RequestMsg,
  latency=directory_latency) {
4.          out_msg.Address := address;
5.          out_msg.Type := in_msg.Type;
6.          out_msg.Requestor := machineID;
7.          out_msg.RequestorMachine :=
  machineIDToMachineType(in_msg.Requestor);
8. out_msg.Destination.addNetDest(getDirectoryEntry(in_msg.Address).Owner);
9.          out_msg.Acks := getDirectoryEntry(address).Sharers.count();
10.          if
  (getDirectoryEntry(address).Sharers.isElement(in_msg.Requestor)) {
11.            out_msg.Acks := out_msg.Acks - 1;
12.          }
13.          out_msg.MessageSize := MessageSizeType:Forwarded_Control;
14.        }
15.      }
16.    }

but at line 7, the RequestMachine is set to the machine type of requestor which is DMA instead of directory, and this may caused some error when cache need to determine where to send its response.


While it seems that you have found a bug, unless the receiver makes use of the machine type, things will work out fine.

--
Nilay
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to