Hi,

I am running into a problem in which a message from the Network is sent to
the supposedly unused MessageBuffers in the MOESI_CMP_directory Protocol.

The message buffers that I am referring to, are the foo/goo buffers in
*-L1cache.sm.

I know there is a recent patch that removes these from the code because they
are unused, but I am using a slightly older changeset of M5 before that
patch was applied.

http://reviews.gem5.org/r/490/

Specifically, I am running into the assert(false) failure.

  in_port(goo_in, RequestMsg, goo) {
    if (goo_in.isReady()) {
      peek(goo_in, RequestMsg) {
        assert(false);
      }
    }
  }


Looking at that patch, all it does was remove those instances of the port. I
tried commenting them out manually, but then I get an error of a virtual net
not being connected.

panic: Ordering property of fromNet node 3 j 1 has not been set
 @ cycle 2453317927500
[enqueue:build/ALPHA_FS_MOESI_CMP_directory/mem/ruby/buffers/MessageBuffer.cc,
line 170]


I double checked to make sure that the virtual network #s did not change,
and they did not.

In debugging with the ProtocolTrace flag, the last thing that appears, is a
message that is enqueued on the "forwardFromDir" message buffer in *-dir.sm.
(I have made some changes to the coherence protocol, in terms of
transitions/new states, but did not add any new message buffers).

 I am not quite sure how/when these virtual networks are connected, just as
long as I enqueue/dequeue the message from the correct buffer.

Therefore, my question(s) are,

1) how does the network know which buffer to enqueue messages from the
network when there are multiple network="from" buffers, because then I can
figure out why the goo message buffer is being used.

2) If a message buffer is full, does the message get enqueued on another
buffer going in the same direction (e.g. to L1 cache)?

Thanks.

Malek
_______________________________________________
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to