We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
In ace spec, before master writing cache , it needs do read unique ,clean unique, make unique.
Q1:I am confused with them. Why we need three operations instead of just one operation ?
Q2:In clean unique, another cache in dirty state in other master needs to be written to memory. Why make unique does not need it?
Please explain more about three operations
Thanks a lot !!
Tom T said:Q1:I am confused with them. Why we need three operations instead of just one operation ?
Each of these has a different use case.
ReadUnique is used when the manager wishes to modify part of the cache line and does not have the data. It guarantees that data will be returned in a unique state.
CleanUnique is used when when the wishes to modify part of the cache line and already has the data. This does not return data and so is more efficient if the manager has already allocated line. A CleanUnique will generate a snoop that Cleans the cache line from other managers, which is important as only part of the cache line is being modified, and the manager issuing the CleanUnique might have this line invalidated before it can write to it.
MakeUnique is used when when the wishes to overwrite the entire cache line. This causes an Invalidating snoop (without cleaning) to be sent to all managers, and does not return any data.
Tom T said:Q2:In clean unique, another cache in dirty state in other master needs to be written to memory. Why make unique does not need it?
This relates to its use case for writing an entire cache line.
If the entire cache line will be overwritten, it is more efficient to invalidate all other cache lines instead of cleaning all other cache lines, as all the data will be replaced once the MakeUnique completes.