Hi Arteen,

If you are not tied to the MESI_three_level protocol, then, as Gautam said, you 
might want to switch to a different protocol that already supports the shared 
state in the system level cache. CHI is the most advanced and configurable 
protocol in that respect but others might do as well like MOESI_CMP_Directory.

If you must stick to MESI_three_level, then you will have to modify at least 
the directory to add a shared state that you transition to when sending read 
only data as a result of a GETS and there is only sharers (or no sharer at 
all). You will also have to modify the L2 to forward clean data as shared 
instead of exclusive. Several other modifications will be required along the 
way to issue the correct snoops, respond appropriately, etc.

I am probably still overlooking several subtleties that will show up along the 
way, though. Overall, you are trying to change a pretty fundamental design 
aspect of the MESI protocol which is always assuming dirty data in caches from 
directory perspective. This enables certain silent transitions in the caches 
(typically, exclusive to modified) that will not be allowed in case the 
directory is in the shared state.

If you still want to give it an attempt, you should use the ruby_mem_test.py 
coherency test configuration script together with the ProtocolTrace debug flag 
and possibly the Ruby debug flag for lower level issues.

Regards,

Gabriel
_______________________________________________
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org

Reply via email to