This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

some question about ACE

Hi all:

I'm reading ACE protocol. I have some questions about such scenario:

two cache masters (master 0/1) and main meomry are connected by Coherent interconnect.

master 0 and master 1 are both SharedClean.

cacheline size : 64bytes.

Q1: if master 1 writes to portion of the shareable cacheline(update the 1st byte of cacheline),

result 1: master 1 will issue CleanUnique and ,  master 1 cache state become UniqueDirty.

result 2 :master 1 cache state become SharedDirty, master 0 cache state will still be SharedClean.

which result will be right?

Q2: if result 2 in Q1 is right and then master 0 updates the 3rd byte of cacheline,  how the 2 masters and interconnect act?

 

Thanks.

Parents
  • Hi ,

    I think in your scenario master 1 will issue a CleanUnique transaction and master 0 will receive a CleanInvalid snoop request.The result is your result 1, with the cache line in master 0's cache becoming invalid.

    M1: SC -> UD

    M0: SC -> I

    The result 2 you describe with master 1 ending up with a different copy of the line in its cache compared to master 0 is not possible: with ACE, all dirty copies of a line in all caches must be the same at all times.

    See also this discussion and this whitepaper.

Reply
  • Hi ,

    I think in your scenario master 1 will issue a CleanUnique transaction and master 0 will receive a CleanInvalid snoop request.The result is your result 1, with the cache line in master 0's cache becoming invalid.

    M1: SC -> UD

    M0: SC -> I

    The result 2 you describe with master 1 ending up with a different copy of the line in its cache compared to master 0 is not possible: with ACE, all dirty copies of a line in all caches must be the same at all times.

    See also this discussion and this whitepaper.

Children