Hi all,

I'm trying to develop my own coherence protocol that supports multiple
outstanding requests.

My questions are as follows:
1. With a cache line at address A marked 'AccessPermission:Busy' in the
directory, no copies in the hierarchy, and no related messages in
buffers—typically seen during a cold miss awaiting a main memory
response—can we anticipate functional access during syscall emulation?
2. If yes, should such a functional access be successful in a correctly
implemented protocol?
3. If not, might there be a safeguard mechanism I'm overlooking that
prevents this scenario?

Thanks for your help!
---

Here are more details that you might need:

There's a directory in my protocol that functions similarly to
MESI_Two_Level-dir.sm
<https://github.com/gem5/gem5/blob/stable/src/mem/ruby/protocol/MESI_Two_Level-dir.sm>
when it comes to fetching data from its memory port (requestToMemory),
where a cache line goes through the transition of I (Read_Write) -> IM
(Busy) -> M (Maybe_Stale).

I'm encountering a scenario where a functional access is sent to Ruby when
the cache line is in IM state, after the request is sent to the main memory
and before the main memory sends back the response. This way, the
functional access will fail because the line is in a busy state (IM) but
nothing is found in the message buffer - and it causes a fatal error.

I tried directly constructing a functional access at similar timing using
MESI_Two_Level, the same fatal error happens, where such  a functional
access would fail.

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

Reply via email to