Hi,

First, *their is no downstream cache relative to HN* and that’s by definition 
of HN. The table you linked to is the table for the CHI_Cache SLICC component 
which is the only component of the CHI model (aside from the CHI SLICC memory 
interface which merely is an implementation detail). A HN can be thought as the 
last layer before memory, aka the guy who shall not be snooped, aka the guy who 
can talk to SN-F. Other than that, the HN is yet another coherent cache.

Now the architecture: a cache (which includes the HN) is in charge of 
maintaining coherency in the domain composed of “ itself + its upstream 
caches”. For instance an L2 is in charge of maintaining coherency with its 
upstream L1s. On the other hand, a downstream cache **D** sees a given upstream 
cache **C** and the other caches above **C** as a single RN-F (a single cache). 
As a result, the HN will only snoop the last level of caches which are in turn 
responsible for snooping their own upstream caches, if need be.

Another way of describing it:

1. You are a cache that get a coherent request from an upstream cache.

2. If you have the data cached in the correct state, respond immediately and 
register the requester in your snoop filter (see the R\* states).

3. If you don’t have the data in the correct state but another upstream cache 
has that data in the correct state, snoop it and respond to requester. Update 
your snoop filter accordingly.

4. If the data is nowhere to be seen in the required state, request it to the 
downstream node…

   * … *Sending a coherent request to downstream cache if you are not a HN*


   * … *Or sending a NC request to memory interface (SN-F) if you are a HN*

Point 4. really is where HN and non-HN caches differ.

---

Having said that, I must admit that I can’ t find that description explicitly 
in the CHI spec. In the CHI spec, there is only RN-F, ICN and SN involved in 
the coherent transactions. HN is not even explicitly mentioned on these 
figures. My interpretation is that, considering the definition of HN (“Home 
Node. Node located within the interconnect that receives protocol transactions 
from Request Nodes, completes the required Coherency action, and returns a 
Response.”), a cache must behave as a RN-F with respect to its downstream 
caches and as a HN with respect to its upstream caches. As such, HN could be 
more of a logical agent implemented by the ICN than an actual physical node.

If anyone can cast some light on the distinction between ICN and HN that seem 
to be used interchangeably in many parts of the spec, you are very welcome :)

Best,

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

Reply via email to