Hello everybody,
I would like to know why both read and write sets have to be checked
when an L1_GETS request gets the L2 cache
and the block is not present (NP) in there.
The annotation claims that it is for correctness.
Could anybody elaborate on this a bit more?
Why is it not enough to check write filters only?
Thank you very much,
Ricardo
// When L2 doesn't have block, need to send broadcasst to all L1s to
check appropriate filter(s)
transition(NP, L1_GETS, ISS) {
p_profileRequest;
f_profileRequestor;
qq_allocateL2CacheBlock;
ll_clearSharers;
// will mark as exclusive when we get unblocked with success
//nn_addSharer;
i_allocateTBE;
i_setTBEPhysicalAddress;
ss_recordGetSL1ID;
a_issueFetchToMemory;
// for correctness we need to query both read + write filters
*<----*
a_checkL1ReadWriteFiltersExceptRequestor;
*<----*
uu_profileMiss;
jj_popL1RequestQueue;
}
--
Ricardo Quislant del Barrio
PhD Student
Dept. Computer Architecture Ph. +34 95 213 7236
University of Malaga Fax. +34 95 213 2790
ETSI Informatica, C. Teatinos e-mail. quislant@xxxxxx
E-29071 Malaga, Spain
|