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.

--
Chuanlei Zheng

Department of Computer Science and Technology
Nanjing University

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

Reply via email to