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