Hi Will,

I am not exactly sure about what your final goal is. I am assuming that you 
want a coherent cacheable write issued by L1 (typically caused by a write back) 
to bypass L2 and directly hit L3. I am pretty confident saying that bypassing a 
single cache level in gem5's classic cache system is not possible. The fact 
that, by definition of a cache hierarchy, there is no port connections between 
L1 and L3 but only between L1 and L2 and between L2 and L3, is a first reason 
for this being impossible. An access is either cacheable and will hit as high 
as possible in the hierarchy, or non cacheable and will traverse the entire 
cache hierarchy to reach the targeted device. 

However, if such behavior is really what you want, you could implement it 
yourself in at least two ways. You can either
(1) add an extra port to make L1 able to communicate directly with L3 through 
the regular protocol or
(2) flag requests targeted at L3 in such a way that L2 forwards them directly.
I would probably go for (2) not to disturb the cache hierarchy structure too 
much.

Anyway, both approaches will have subtle consequences on cache coherence which 
you must handle. To be specific, what happens if L2 has a valid cacheline and 
L1 wants to directly write this line to L3 for some reason? L2 will no longer 
be valid so L3 must snoop-invalidate it. But this is not the way a cache 
"hierarchy" usually works. If you really want to experiment with exotic caching 
and coherence mechanisms, you will likely be more comfortable using Ruby.

Best,
Gabriel
_______________________________________________
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to