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
_______________________________________________
m5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users

Reply via email to