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