D4.7.1 MakeUnique
A MakeUnique transaction is used in a region of memory that is Shareable with other masters. The MakeUnique transaction ensures that: • The cache line can be held in a Unique state. This permits the master to carry out a store operation to the cache line, but the transaction does not obtain a copy of the data for the master. • All other copies of the cache line are removed. | 当前master的cache为unique,但是不从其他master拷贝数据过来,就是其他master的数据会被丢弃,所以后面必须跟的是整个cacheline的write。 |
A MakeUnique transaction must be used only by an initiating master that is carrying out a full cache line store operation. | 后面必须跟的是整个cacheline的write。 |
The transaction response requirements are: • The IsShared response must be deasserted indicating that the cache line is unique. • The PassDirty response must be deasserted | shared 和 dirty都必须为0 |
The expected cache line state changes for a MakeUnique transaction are different from all other transactions because a MakeUnique transaction must be coupled to a full cache line store operation. |
D4.7.2 MakeInvalid
A MakeInvalid transaction is used to ensure that there are no cached copies of a main memory location. | 使所有的cache都invalid |
If the master carrying out the cache maintenance operation holds the cache line in a Valid state, then the master must invalidate the cache line, so that the cache line is in the Invalid state before it issues a MakeInvalid transaction. | 执行此操作的master必须首先使自己的cache为invalid状态,然后才能执行此操作。 有个疑问:其他的dirty-cache该如何相应此操作,是直接丢弃cache中的内容,还是先将其写回主存? 目前感觉是直接丢弃 |
总结:
MakeUnique | 将所有其他cache直接设为invalid,后面必须跟整行cache的写操作。 |
MakeInvalid | 将所有cache置位invalid状态 |