in CHI spec B2.7.7
Org:
Must ensure a Clean line, either UC or SC, in a fully coherent cache is:– Not made visible to a Requester using a transaction with SnpAttr = 0 to access that location, if thatlocation has been updated by another transaction with SnpAttr = 0 after the cache line was allocated intothe fully coherent cache.
My question is the below sentence make me confusing.
"if that location has been updated by another transaction with SnpAttr = 0 after the cache line was allocated intothe fully coherent cache."
I try to understand the sentence as below.
Step1 . the cache line was allocated into the fully coherent cache
Step 2. location has been updated by another transaction with SnpAttr = 0
The step 2 is conflict with "Not made visible to a Requester using a transaction with SnpAttr = 0 to access that location"
I think in step 2. the fully coherent cache (SnpAttr=1, I assume it is UC or SC) should not be visible to transaction with SnpAttr = 0 and can't be modified.
does my understanding is correct?
if yes, my suggestion is I modify as below by remove some words.
Must ensure a Clean line, either UC or SC, in a fully coherent cache is:– Not made visible to a Requester using a transaction with SnpAttr = 0 to access that location.
Tony
Tony Ho said:I think in step 2. the fully coherent cache (SnpAttr=1, I assume it is UC or SC) should not be visible to transaction with SnpAttr = 0 and can't be modified. does my understanding is correct?
That isn't quite the right understanding.
A SnpAttr = 0 request is allowed to snoop the coherent cache, it is just not required to. SnpAttr = 1 means the request is required to snoop any RN-Fs that could have the cache line.
If the line has not modified, and is in a Clean state, then it is still the most up to date copy of the data for that location and so can be made visible to a Requester using a transaction with SnpAttr = 0