Hi all,

I am making a system consisting of multiple CPU clusters using
MESI_Three_Level.
Since the MESI three level enable users to make multiple clusters, and each
cluster can have multiple L2 caches, I just thought that L1 caches within
the cluster can only access the L2 cache in the same cluster.
If r/w request from L1 cache cannot be satisfied by L2 cache in the same
cluster, I thought that the request is sent to the directory controller and
directory controller forwards it to other cluster which has the requested
cached block. (Two level directory structure, L2 directory works within the
cluster, directory controller works between the clusters)

However, I noticed that directory and L2 cache controller of MESI_Two_Level
were re-used in MESI_Three_Level. Since L2 cache in MESI two level is
global shared cache with directory function, it seems that directory
controller just sends FETCH request to memory controller when it receives
GETS or GETX from the L2 cache.

I wonder if the directory controller does not support forwarding requests
to other cluster, how cache coherene is maintained in MESI three level
protocol.

My guess is L2 cache is not private to a given cluster (cluster has meaning
at all), but it can be accessed by all L1 caches in the system. (maybe this
is reason why L1 cache is also connected to Ruby network). Thus, requests
from L1 cache are routed to the L2 cache, which is responsible for the
requested blocks, and it handles the request directly or forwards it to
proper L1 sharers or the L1 owner.

Is my understanding right? If it is, I am also curious how requests from L1
are routed to a proper L2 cache. (Each L2 has its own address range?)


Thanks,

Daecheol.
_______________________________________________
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