I | The cache line is not present in the cache | |||||
UC | The cache line is present only in this cache | |||||
The cache line has not been modified with respect to memory | ||||||
The cache line can be modified without notifying other caches | ||||||
UCE | ||||||
The cache line is present only in this cache | ||||||
The cache line is in a unique state but none of the data bytes are valid | ||||||
The cache line can be modified without notifying other caches | ||||||
UD | ||||||
The cache line is present only in this cache | ||||||
The cache line has been modified with respect to memory | ||||||
The cache line must be written back to next level cache or memory on eviction | ||||||
The cache line can be modified without notifying other caches. | ||||||
In response to a snoop that requests data, the cache line must be: | ||||||
— Returned to Home when requested. | ||||||
— Forwarded directly to the Requester when instructed by the snoop. | ||||||
UDP | ||||||
The cache line is present only in this cache | ||||||
The cache line is unique. Only a part of the cache line is Valid and Dirty | ||||||
The cache line has been modified with respect to memory. | ||||||
When the cache line is evicted, it must be merged with data from next level cache or memory to form the complete Valid cache line | ||||||
The cache line can be modified without notifying other caches. | ||||||
In response to a snoop that requests data, the cache line must | ||||||
Be returned to Home | ||||||
Not forward the cache line directly to the Requester even when instructed by the snoop | ||||||
SC | ||||||
Other caches might have a shared copy of the cache line. | ||||||
The cache line might have been modified with respect to memory | ||||||
It is not the responsibility of this cache to write the cache line back to memory on eviction. | ||||||
The cache line cannot be modified without invalidating any shared copies and obtaining unique ownership of the cache line | ||||||
In response to a snoop that requests data, the cache line: | ||||||
— Is required to not return data if RetToSrc bit is not set. | ||||||
— Can return data if RetToSrc bit is set. | ||||||
— Is forwarded directly to the Requester when instructed by the snoop | ||||||
SD | ||||||
Other caches might have a shared copy of the cache line | ||||||
The cache line has been modified with respect to memory | ||||||
The cache line must be written back to next level cache or memory on eviction | ||||||
The cache line cannot be modified without invalidating any shared copies and obtaining unique ownership of the cache line | ||||||
In response to a snoop that requests data, the cache line must be: | ||||||
Returned to Home when requested | ||||||
Forwarded directly to the Requester when instructed by the snoop | ||||||
Empty cache line ownership | ||||||
An empty cache line is a cache line that is held in a Unique state, so no other copies of the cache line exist, but none of the data bytes are Valid. This cache line state is UCE | ||||||
The following are examples of when empty cache line ownership can occur: | ||||||
• A Requester can deliberately obtain an empty cache line: | ||||||
— Before starting a write, to save system bandwidth, a Requester that expects to write to a cache line can obtain an empty cache line with permission to store, instead of obtaining a Valid copy of the cache line. | ||||||
• A Requester can transition into an empty state: | ||||||
— If the Requester has a copy of the cache line when it requests permission to store, and that copy of the cache line is invalidated before the Requester obtains permission to store, this results in the Requester having an empty cache line with permission to store. |
cache状态梳理
于 2022-04-01 16:20:38 首次发布