read | |||||||
readnosnp | 访问non-snoopable地址,返回对应数据; | ||||||
返回的数据不会存入cache; | |||||||
readonce | 访问snoopable地址,返回对应数据; | ||||||
Data size is a cache line length | |||||||
读回来的数据,不会存入RN的cache中; | |||||||
RN-F, RN-D, RN-I to ICN(HN-F). | |||||||
ReadOnceCleanInvalid | |||||||
访问snoopable地址,返回对应数据; | |||||||
Data size is a cache line length | |||||||
读回来的数据,不会存入RN的cache中; | |||||||
If a Dirty copy is invalidated, it must be written back to memory | |||||||
RN-F, RN-D, RN-I to ICN(HN-F). | |||||||
ReadOnceMakeInvalid | |||||||
访问snoopable地址,返回对应数据; | |||||||
Data size is a cache line length | |||||||
读回来的数据,不会存入RN的cache中; | |||||||
If a Dirty copy is invalidated, it does not need to be written back to memory | |||||||
ReadClean | |||||||
访问snoopable地址,返回对应数据; | |||||||
Data size is a cache line length | |||||||
Data must be provided to the Requester in clean state only | |||||||
UC, or SC | |||||||
RN-F to ICN(HN-F). | |||||||
Figure 5-7 ReadClean with partial data snoop response | |||||||
ReadNotSharedDirty | |||||||
访问snoopable地址,返回对应数据; | |||||||
Data size is a cache line length | |||||||
Requester will accept the data in any valid state except SD | |||||||
UC, UD, SC. | |||||||
就是说,share的数据,不要把dirty传给我; | |||||||
ReadShared | |||||||
访问snoopable地址,返回对应数据; | |||||||
Data size is a cache line length | |||||||
Requester will accept the data in any valid state | |||||||
UC, UD, SC, or SD | |||||||
RN-F to ICN(HN-F) | |||||||
ReadUnique | |||||||
访问snoopable地址,返回对应数据; | |||||||
Data size is a cache line length | |||||||
Data must be provided to the Requester in unique state only: | |||||||
UC, or UD | |||||||
RN-F to ICN(HN-F) | |||||||
All other cached copies must be invalidated. | |||||||
dataless | |||||||
CleanUnique | |||||||
Figure 5-10 CleanUnique with memory update | |||||||
访问snoopable地址,期望将自己的状态变成UC; | |||||||
Any dirty copy of the cache line at a snooped cache must be written back to the next level cache or memory | |||||||
RN-F to ICN(HN-F) | |||||||
makeunique | |||||||
Figure 5-9 MakeUnique without memory update | |||||||
Any dirty copy of the cache line at a snooped cache must be invalidated without carrying out a data transfer | |||||||
RN-F to ICN(HN-F) | |||||||
Data is not included with the completion response | |||||||
Comp Response must be UC; | |||||||
evic | |||||||
Used to indicate that a Clean cache line is no longer cached by an RN | |||||||
Data is not sent for this transaction. | |||||||
The cache line must not remain in the cache | |||||||
— RN-F to ICN(HN-F) | |||||||
StashOnceUnique | |||||||
Request to a Snoopable address region. | |||||||
Request includes the Node ID of another RN and the Request can optionally include the ID of a Logical Processor within that node. | |||||||
It is recommended, but not required, that the other agent is snooped to indicate that it reads the addressed cache line and ensures that it is in a cache state suitable for writing to the cache line | |||||||
The expected Read request is ReadUnique, or CleanUnique | |||||||
• Data is not included with the completion response. | |||||||
— RN-F, RN-D, RN-I to ICN(HN-F). | |||||||
StashOnceShared | |||||||
Request to a Snoopable address region. | |||||||
Request includes the Node ID of another RN and the Request can optionally include the ID of a Logical Processor within that node. | |||||||
It is recommended, but not required, that the other agent is snooped to indicate that it reads the addressed cache line and ensures that it is in a cache state suitable for writing to the cache line | |||||||
The expected Read request is ReadShared or ReadNotSharedDirty. | |||||||
When a valid target is not specified, then the addressed cache line can be fetched to be cached at the request Completer. | |||||||
• Data is not included with the completion response. | |||||||
— RN-F, RN-D, RN-I to ICN(HN-F). | |||||||
Cache maintenance transactions | |||||||
CleanShared | |||||||
Ensures that all cached copies are changed to a Non-dirty state and any Dirty copy is written back to memory. | |||||||
The Resp field value in the completion, indicating cache state, must be ignored by both the Requester and the Home | |||||||
RN-F, RN-D, RN-I to ICN(HN-F, HN-I). | |||||||
ICN(HN-F) to SN-F | |||||||
ICN(HN-I) to SN-I | |||||||
Data is not included with the completion response. | |||||||
CleanSharedPersist | |||||||
The completion response to a CleanSharedPersist request ensures that all cached copies are changed to a Non-dirty state and any Dirty cached copy is written back to the Point of Persistence (PoP) | |||||||
Data is not included with the completion response. | |||||||
The Resp field value in the completion, indicating cache state, must be ignored by both the Requester and the Home | |||||||
RN-F, RN-D, RN-I to ICN(HN-F, HN-I). | |||||||
ICN(HN-F) to SN-F | |||||||
ICN(HN-I) to SN-I | |||||||
CleanInvalid | |||||||
Invalidates all cached copies and any Dirty copy is written to memory | |||||||
Data is not included with the completion response | |||||||
RN-F, RN-D, RN-I to ICN(HN-F, HN-I). | |||||||
ICN(HN-F) to SN-F | |||||||
ICN(HN-I) to SN-I | |||||||
MakeInvalid | |||||||
Invalidates all cached copies and any Dirty copy can be discarded | |||||||
Data is not included with the completion response | |||||||
RN-F, RN-D, RN-I to ICN(HN-F, HN-I). | |||||||
ICN(HN-F) to SN-F | |||||||
ICN(HN-I) to SN-I | |||||||
所有上述的命令,都需满足如下: | |||||||
Sending of xxx to the interconnect from an RN and from the interconnect to an SN is controlled by the BP and BCM interface signals | |||||||
ExpectCompAck must not be asserted in CleanShared, CleanInvalid, MakeInvalid, and CleanSharedPersist transactions for any Requester type | |||||||
A CMO intended for a particular address must not be sent to the interconnect before all previous transactions sent to the same address have completed. | |||||||
Write transactions | |||||||
WriteNoSnpFull | |||||||
Write a full cache line of data to a Non-snoopable address region | |||||||
Data size is a cache line length. | |||||||
All byte enables must be asserted | |||||||
RN-F, RN-D, RN-I to ICN(HN-F, HN-I) | |||||||
ICN(HN-F) to SN-F. | |||||||
ICN(HN-I) to SN-I. | |||||||
WriteNoSnpPtl | |||||||
Write to Non-snoopable address region. | |||||||
Data size is up to a cache line length | |||||||
Byte enables must be asserted for the appropriate byte lanes within the specified data size and deasserted in the rest of the data transfer | |||||||
RN-F, RN-D, RN-I to ICN(HN-F, HN-I) | |||||||
ICN(HN-F) to SN-F. | |||||||
ICN(HN-I) to SN-I. | |||||||
WriteUniqueFull | |||||||
Write to a Snoopable address region | |||||||
Write a full cache line of data to the next-level cache or memory when the cache line is Invalid at the Requester | |||||||
Data size is a cache line length, All byte enables must be asserted | |||||||
RN-F, RN-D, RN-I to ICN(HN-F). | |||||||
WriteUniquePtl | |||||||
Write to a Snoopable address region | |||||||
Write up to a cache line of data to the next-level cache or memory when the cache line is Invalid at the Requester | |||||||
Data size is up to a cache line length | |||||||
RN-F, RN-D, RN-I to ICN(HN-F) | |||||||
WriteUniqueFullStash | |||||||
Write to a Snoopable address region | |||||||
Write a full cache line of data to the next-level cache or memory when the cache line is Invalid at the Requester | |||||||
Also includes a request to the Stash target node to read the addressed cache line | |||||||
The expected Read request is ReadUnique | |||||||
RN-F, RN-D, RN-I to ICN(HN-F) | |||||||
Figure 5-20 WriteUniqueStash with Data Pull | |||||||
WriteUniquePtlStash | |||||||
Data size is up to a cache line length. | |||||||
CopyBack transactions | |||||||
CopyBack transactions are a subclass of Write transactions. | |||||||
CopyBack transactions move coherent data from a cache to the next level cache or memory. | |||||||
CopyBack transactions do not require the snooping of other agents in the system | |||||||
WriteBackFull | |||||||
Write-back a full cache line of Dirty data to the next level cache or memory | |||||||
Data size is a cache line length | |||||||
All byte enables must be asserted. | |||||||
The cache line must not remain in the cache | |||||||
RN-F to ICN(HN-F). | |||||||
Figure 5-14 WriteBackFull returning Data Buffer Identifier | |||||||
WriteBackPtl | |||||||
Write-back up to a cache line of Dirty data to the next level cache or memory | |||||||
Data size is a cache line length | |||||||
All appropriate byte enables, up to all 64, must be asserte | |||||||
The cache line must not remain in the cache | |||||||
RN-F to ICN(HN-F). | |||||||
WriteCleanFull | |||||||
Write-back a full cache line of Dirty data to the next level cache or memory and retain a Clean copy in the cache | |||||||
Data size is a cache line length | |||||||
All byte enables must be asserted. | |||||||
The cache line is expected to be in Clean state at completion of the transaction | |||||||
RN-F to ICN(HN-F) | |||||||
WriteEvictFull | |||||||
Write-back of UniqueClean data to the next-level cache | |||||||
Data size is a cache line length | |||||||
All byte enables must be asserted. | |||||||
The cache line must not remain in the cache | |||||||
he cache line must not propagate(传播) beyond its Snoop domain. | |||||||
除了WriteEvictFull命令,CopyBack操作通常用于更新主存或下游cache,WriteEvictFull单单用于更新下游cache,该命令产生的效果不会超过它的snoop domain | |||||||
Atomic transactions | |||||||
Atomic operation | |||||||
The execution of a function involving multiple data values such that | |||||||
the loading of the original value, the execution of the function, and the storing of the updated value, occurs in an atomic manner | |||||||
no other agent has access to the location during the entire operation | |||||||
Atomic transaction | |||||||
A transaction that is used to pass an atomic operation, along with the data values required for the execution of the atomic operation | |||||||
from one agent in a system to another, so that the atomic operation can be carried out by a different component in the system | |||||||
than the component that requires the operation to be performed | |||||||
AtomicStore | |||||||
Figure 5-17 AtomicStore executed at HN-F | |||||||
Sends a single data value with an address and the atomic operation to be performed | |||||||
The target, an HN or an SN, performs the required operation on the address location specified with the data supplied in the Atomic transaction | |||||||
The target returns a completion response without data. | |||||||
The target returns a completion response without data. | |||||||
— RN-F, RN-D, RN-I to ICN(HN-F, HN-I). | |||||||
— ICN(HN-F) to SN-F. | |||||||
— ICN(HN-I) to SN-I. | |||||||
AtomicLoad | |||||||
Sends a single data value with an address and the atomic operation to be performed | |||||||
The target, an HN or an SN, performs the required operation on the address location specified with the data supplied in the Atomic transaction | |||||||
The target returns the completion response with data. The data value is the original value at the addressed location | |||||||
Data will not be cached at the Requester | |||||||
Communicating node pairs: | |||||||
— RN-F, RN-D, RN-I to ICN(HN-F, HN-I). | |||||||
— ICN(HN-F) to SN-F. | |||||||
— ICN(HN-I) to SN-I. | |||||||
AtomicSwap | |||||||
AtomicCompare | |||||||
Figure 5-15 AtomicLoad, AtomicSwap, or AtomicCompare executed at HN-F | |||||||
DVM transactions | |||||||
DVM Operation. Actions include the passing of messages between components within a distributed virtual memory system | |||||||
— RN-F, RN-D to ICN(MN) | |||||||
prefetch transactions | |||||||
The prefetch target transaction is used to speculatively read data from main memory | |||||||
PrefetchTgt | |||||||
A Request to a shareable memory address, sent from a Request Node directly to a Slave Node | |||||||
• The PrefetchTgt transaction does not include a response. | |||||||
• The request can be used by the Slave Node to fetch the data from off-chip memory and buffer it in anticipation of a subsequent Read request to the same location. | |||||||
• The request does not include a response, therefore the Requester can deallocate the request as soon as the request is sent. | |||||||
• The Transaction ID field is inapplicable and must be set to zero. | |||||||
• The Receiver must not send any response, including RetryAck. | |||||||
• The Receiver is permitted to initiate an internal action or discard the request without any further action. | |||||||
• Data read from off-chip memory using PrefetchTgt must not hold Slave Node resources waiting indefinitely for a future Read request to the same address. | |||||||
RN-F, RN-D, RN-I to SN-F | |||||||
snoop requests | |||||||
The ICN generates a snoop request either in response to a request from an RN or due to an internal cache or snoop filter maintenance operation | |||||||
A snoop transaction, except for SnpDVMOp, operates on the cached data at the RN-F. | |||||||
This specification permits snoops to Non-snoopable address locations. ? DVM? | |||||||
SnpOnceFwd, SnpOnce | |||||||
Snoop request to obtain the latest copy of the cache line, preferably without changing the state of the cache line at the Snoopee | |||||||
• SnpOnceFwd is permitted to be sent only to one RN-F. | |||||||
• Expected not to change cache state. | |||||||
SnpStashUnique | |||||||
Snoop request recommending that the Snoopee obtains a copy of the cache line in a Unique state | |||||||
• Permitted to be sent to only one RN-F | |||||||
• This specification recommends not sending the snoop for a StashOnceUnique request if the cache line is cached in Unique state at the Stash target. | |||||||
•Permitted to send the snoop to the Stash target for WriteUniqueFullStash and WriteUniquePtlStash only if the Snoopee does not have a cached copy of the cache line. | |||||||
• The Snoopee must not return data with the Snoop response. | |||||||
• Permits the Snoop response to include a Data Pull if the value of the DoNotDataPull field is 0b0 in the Snoop request. | |||||||
• If not using Data Pull, then this specification recommends, but it is not required, that the Snoopee uses ReadUnique to prefetch the cache line. | |||||||
• Must not change the cache line state at the Snoopee. | |||||||
SnpStashShared | |||||||
Snoop request recommending that the Snoopee obtains a copy of the cache line in a Shared state | |||||||
• Permitted to be sent to only one RN-F | |||||||
• This specification recommends not sending the snoop if the cache line is cached at the target. | |||||||
• The Snoopee must not return data with the Snoop response. | |||||||
• Permits the Snoop response to include a Data Pull if the value of the DoNotDataPull field is 0b0 in the Snoop request. | |||||||
• If not using Data Pull, then this specification recommends, but it is not required, that the Snoopee uses ReadShared, or ReadSharedNotDirty to prefetch the cache line. | |||||||
• Must not change the cache line state at the Snoopee. | |||||||
Figure 5-21 StashOnceShared with Data Pull | |||||||
SnpCleanFwd, SnpClean | |||||||
Snoop request to obtain a copy of the cache line in Clean state while leaving any cache copy in Shared state | |||||||
• SnpCleanFwd is permitted to be only sent to one RN-F. | |||||||
• Must not leave the cache line in Unique state. | |||||||
SnpCleanFwd | |||||||
• Snoopee must forward the cache line in SC state. | |||||||
• Snoopee must transition to either SD, SC or I state | |||||||
SnpNotSharedDirtyFwd, SnpNotSharedDirty | |||||||
Snoop request to obtain a copy of the cache line in SharedClean state while leaving any cached copy in a Shared state | |||||||
SnpNotSharedDirtyFwd is permitted to be sent only to one RN-F. | |||||||
SnpNotSharedDirtyFwd | |||||||
• Snoopee must forward the cache line in SC state. | |||||||
• Snoopee must transition to SD, SC or I state. | |||||||
SD state transition is not permitted if DoNotGoToSD is asserted. | |||||||
SnpSharedFwd, SnpShared | |||||||
Snoop request to obtain a copy of the cache line in Shared state while leaving any cached copy in Shared state | |||||||
• SnpSharedFwd is permitted to be only sent to one RN-F. | |||||||
• Must not leave the cache line in Unique state. | |||||||
Figure 5-3 Direct Cache Transfer from cache line in UC state | |||||||
SnpUniqueFwd, SnpUnique | |||||||
Snoop request to obtain a copy of the cache line in Unique state while invalidating any cached copies | |||||||
• SnpUniqueFwd is permitted to be sent to only one RN-F. | |||||||
• Must change the cache line to Invalid state | |||||||
SnpUniqueStash | |||||||
Snoop request to invalidate the cached copy at the Snoopee and recommends that the Snoopee obtains a copy of the cache line in Unique state: | |||||||
• Permitted to be sent to only one RN-F. | |||||||
• Snoop response can include data. | |||||||
• Permits the Snoop response to include a Data Pull if the value of the DoNotDataPull field in the Snoop request is 0b0. | |||||||
• If not using Data Pull, then this specification recommends, but it is not required, that the Snoopee uses ReadUnique to prefetch the cache line. | |||||||
SnpCleanShared | |||||||
Snoop request to remove any Dirty copy of the cache line at the Snoopee: | |||||||
• Snoop response can include data. | |||||||
• Must not leave the cache line in a Dirty state. | |||||||
SnpCleanInvalid | |||||||
Snoop request to Invalidate the cache line at the Snoopee and obtain any Dirty copy. Might also be generated by the ICN without a corresponding request | |||||||
• Snoop response can include data. | |||||||
• Must change the cache line to Invalid state. | |||||||
Figure 5-10 CleanUnique with memory update | |||||||
SnpMakeInvalid | |||||||
Snoop request to Invalidate the cache line at the Snoopee and discard any Dirty copy: | |||||||
• Does not return data with the Snoop response, Dirty data is discarded. | |||||||
• Must change the cache line to Invalid state. | |||||||
SnpMakeInvalidStash | |||||||
Snoop request to invalidate the copy of the cache line and recommends that the Snoopee obtains a copy of the cache line in Unique state: | |||||||
• Permitted to be sent to only one RN-F. | |||||||
• Snoopee must not return data with the Snoop response, Dirty data must be discarded. | |||||||
• Permits the Snoop response to include a Data Pull if the value of the DoNotDataPull field in the Snoop request is 0b0. | |||||||
• If not using Data Pull, then this specification recommends, but it is not required, that the Snoopee uses ReadUnique to prefetch the cache line. | |||||||
SnpDVMOp | |||||||
Generated at the ICN, initiated by the DVMOp request: | |||||||
• A single DVMOp request generates two snoop requests. | |||||||
• Returns a single Snoop response for the two snoop requests | |||||||
Table 4-3 Request types and the corresponding snoop requests |
各通道命令解析
于 2022-04-13 11:33:04 首次发布