AMBA-CHI协议详解(二十三)
AMBA-CHI协议详解(一)- Introduction
AMBA-CHI协议详解(二)- Channel fields / Read transactions
AMBA-CHI协议详解(三)- Write transactions
AMBA-CHI协议详解(四)- Other transactions
AMBA-CHI协议详解(五)- Transaction identifier fields
AMBA-CHI协议详解(六)- Transaction identifier field flows
AMBA-CHI协议详解(七)- Ordering
AMBA-CHI协议详解(八)- Address, Control, and Data
AMBA-CHI协议详解(九)- Data transfer
AMBA-CHI协议详解(十)- Retry
AMBA-CHI协议详解(十一)- Network Layer
AMBA-CHI协议详解(十二)- Cache line states
AMBA-CHI协议详解(十三)- Read transactions and Cache line states
AMBA-CHI协议详解(十四)- Dataless transactions
AMBA-CHI协议详解(十五)- Write transactions
AMBA-CHI协议详解(十六)- Combined Write/Atomic transactions
AMBA-CHI协议详解(十七)- Snoop request types
AMBA-CHI协议详解(十八)- Response types
AMBA-CHI协议详解(十九)- Cache state transitions at a Requester
AMBA-CHI协议详解(二十)- Cache state transitions at a Snoopee
AMBA-CHI协议详解(二十一)- Hazard conditions
文章目录
- 5.2 Dataless transaction flows
- 5.2.1 Dataless transaction without memory update
- 5.2.2 Dataless transaction with memory update
- 5.2.3 Persistent CMO with snoop and separate Comp and Persist
- 5.2.4 Evict transaction
5.2 Dataless transaction flows
本节给出了无数据事务的互连协议流的示例。
5.2.1 Dataless transaction without memory update
下图显示MakeUnique 事务。
图无内存更新的 MakeUnique事务流的步骤如下:
- RN-F0 向 HN-F 发送 MakeUnique 请求。
- HN-F 向 RN-F1 和 RN-F2 发送 SnpMakeInvalid 请求。RN-F1 的缓存行状态从 UC 转变为 I。
- RN-F1 和 RN-F2 向 HN-F 返回 SnpResp_I。
- HN-F 向 RN-F0 发送 Comp_UC。RN-F0 的缓存行状态从 I 转变为 UD。
- RN-F0 向 HN-F 发出 CompAck 响应以指示事务完成。
5.2.2 Dataless transaction with memory update
下图是一个 CleanUnique 事务示例。
图中CleanUnique与内存更新事务流程的步骤如下:
- RN-F0向HN-F发送CleanUnique请求。
- HN-F向RN-F1和RN-F2发送SnpCleanInvalid请求。RN-F1缓存行状态从SD转换为I。
- RN-F1向HN-F返回SnpRespData_I_PD。HN-F向SN-F发送WriteNoSnp。
- RN-F2向HN-F返回SnpResp_I。HN-F现在可以向RN-F0发送Comp_UC。RN-F0缓存行状态从SC转换为UC。与此同时,SN-F向HN-F返回CompDBIDResp。HN-F随后向SN-F发送NCBWrData。
- RN-F0 向 HN-F 发出 CompAck 响应以指示事务完成。
5.2.3 Persistent CMO with snoop and separate Comp and Persist
在这个CleanSharedPersistSep事务流程的例子中,持久性点(PoP,Point of Persistence)位于SN-F。
CleanSharedPersistSep事务流程的步骤如下:
- RN-F0向HN-F发送CleanSharedPersistSep请求。
- HN-F向RN-F1发送SnpCleanShared请求。
- RN-F1向HN-F发送SnpResp_SC。
- HN-F向RN-F0发送Comp_SC。
- HN-F在完成所有被窥探的脏数据的writing back后,将CleanSharedPersistSep发送给SN-F(如果有的话)。(如果在窥探后有任何脏数据返回给HN-F,HN-F需要先完成将这些数据写回SN-F。 只有在此之后,HN-F才能向SN-F发出CleanSharedPersistSep请求。)
- SN-F向HN-F返回Comp响应。SN-F直接向RN-F0发送Persist响应,以指示请求已到达PoP,并且来自同一位置的任何先前写入的数据已推送到PoP。
5.2.4 Evict transaction
下图显示了驱逐事务的流程。
Evict请求是一个提示。 HN-F可以在不更新Snoop Filter或SnoopDirectory的情况下给出Comp响应。
- RN-F0缓存行状态从UC转换为I,并向HN-F发送Evict请求。HN-F接收并分配该请求。
- HN-F返回Comp_I响应并释放该请求。 RN-F0释放该请求。
请求者的缓存状态必须在发送Evict消息之前更改为Invalid。