FYI, just to be specific:
if I find (mshr->hasTargets()==false), I assume this is a duplicated response
and discard it in Cache<TagStore>::handleResponse() . This
triggers the following error in the following ticks:
m5.debug: build/ALPHA_SE/mem/cache/miss/mshr.cc:114: void
MSHR::TargetList::clearDownstreamPending(): Assertion `mshr->downstreamPending'
failed.
back trace:
#3 0x000000000063c502 in MSHR::TargetList::clearDownstreamPending
(this=0xe8ab20) at build/ALPHA_SE/mem/cache/miss/mshr.cc:114
#4 0x000000000063c7df in MSHR::markInService (this=0xe88798) at
build/ALPHA_SE/mem/cache/miss/mshr.cc:176
#5 0x000000000063dd05 in MSHRQueue::markInService (this=0xe86c28,
mshr=0xe88798)
at build/ALPHA_SE/mem/cache/miss/mshr_queue.cc:197
#6 0x00000000005c0dbd in BaseCache::markInServiceInternal (this=0xe86bf0,
mshr=0xe88798)
at build/ALPHA_SE/mem/cache/base_cache.hh:178
#7 0x00000000005c0e4b in Cache<LRU>::markInService (this=0xe86bf0,
mshr=0xe88798) at build/ALPHA_SE/mem/cache/cache_impl.hh:216
#8 0x00000000005d66a9 in Cache<LRU>::MemSidePort::sendPacket (this=0xeda370)
at build/ALPHA_SE/mem/cache/cache_impl.hh:1414
#9 0x00000000005d6d34 in Cache<LRU>::MemSidePort::processSendEvent
(this=0xeda370) at build/ALPHA_SE/mem/cache/cache_impl.hh:1453
Thanks!
Jiayuan
From: [EMAIL PROTECTED]
To: m5-users@m5sim.org
Subject: RE: [m5-users] help with broadcast/snoop handling
Date: Sun, 9 Dec 2007 17:44:29 +0000
I have another guess about how M5 manages duplicated responses:
if a broadcast packet find a response in a snoop port, the pkt is tagged
"memInhibit" and responded to the upper level.
Because the pkt is a pointer, memInhibit will be seen by other ports, and they
will no longer respond to that packet.
As a result, there will be no duplicated response. Am I getting the point?
Unfortunately, when modeling the traffic of the interconnection, I have to
duplicate the packets for broadcasting, and there is no guarantee that packets
will probe snoop ports before the dest ports (which was done in
bus::recvTiming). as a result, the memInhibit for one packet won't be seen by
its dulicates, and multiple responses may occur.
In this case, I try to ignore and discard the duplicated packet in
Cache<TagStore>::handleResponse, but this results in other faults.
Do you know any way out of this ?
Thanks!
Jiayuan
From: [EMAIL PROTECTED]
To: m5-users@m5sim.org
Date: Sun, 9 Dec 2007 14:28:43 +0800
Subject: [m5-users] help with broadcast/snoop handling
Hi all,
I'm modeling the interconnection, when modeling the interconnection and
simulate all the routers, I am following the bus that broadcast a packet to all
the snoop ports if dest is broadcast.
However, I came to this during debugging in timing mode with my
interconnection prototype:
m5.debug: build/ALPHA_SE/mem/cache/miss/mshr.hh:211: MSHR::Target*
MSHR::getTarget(): Assertion `hasTargets()' failed.
triggered in Cache::handleResponse at the statement:
cache_impl.hh:707: MSHR::Target *initial_tgt =
mshr->getTarget();
doing a trace reveals that the broadcast request got two requests
(ReadExResp) from two nodes. (an L1 cache's memSidePort receives response first
from a peer L1's memSidePort, and then from the L2's memSidePort).
Is there any clue on top of your head about how this happens? My guess
is the peer's L1 snoops the packet and found a match, so both the peer L1 and
L2
both responsed the request, the second request got missed in the mshr
because the target has already been fulfilled. What do you think?
Thanks!
Jiayuan
Share life as it happens with the new Windows Live. Share now!
_________________________________________________________________
Share life as it happens with the new Windows Live.Download today it's FREE!
http://www.windowslive.com/share.html?ocid=TXT_TAGLM_Wave2_sharelife_112007
_______________________________________________
m5-users mailing list
m5-users@m5sim.org
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users