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
文章目录
- 4.1 Cache line states
- 4.1.1 Empty cache line ownership
- 4.1.2 Ownership of cache line with partial Dirty data
- 4.2 Request types
4.1 Cache line states
协议节点访问cache line时需要采取的操作取决于cache line的状态。协议定义了以下cache line状态:
I:Invalid
● Cache line不存在于cache中。
UC:Unique Clean
● Cache line只存在于此cache中。
● 相对于内存,cache line没有被修改。
● 可以在不通知其他cache的情况下修改cache line。(因为Cache line只存在于此cache中)
● 在响应请求的Snoop时,允许(但不要求)cache line行为:
— 有要求时返回Home
— 当snoop指示时(fwd),直接转发给Requester。
UCE:Unique Clean Empty
● Cache line只存在于此cache中。
● Cache line处于Unique状态,但所有数据字节都无效。
● 可以在不通知其他cache的情况下修改cache line。
● 在响应请求的Snoop时,cache line不能为:
— 即使被要求,也不能返回Home
— 即使是在snoop的指示的情况下,也不能直接转发给Requester。
UD:Unique Dirty
● Cache line只存在于此cache中。
● 相对于内存,cache line已被修改。
● 在evict时必须将cache line写回下一级缓存或内存。
● 可以在不通知其他cache的情况下修改cache line。
● 在响应请求的Snoop时,cache line:
— 必须在被要求时返还至Home。
— snoop指示时,期待将数据直接转发给Requester。
UDP:Unique Dirty Partial
● Cache line只存在于此cache中。
● Cache line是Unique的。cache line可能有部分有效的字节。
● 相对于内存,cache line已被修改。
● 当cache line被evict时,必须将其与下一级缓存或内存中的数据合并,以形成完整的有效cache line。
● 可以在不通知其他cache的情况下修改cache line。
● 为了响应请求的Snoop,cache line必须:
— 返回至Home
— 即使被指示,不直接转发给Requester。
SC :Shared Clean
● 其他缓存可能具有cache line的共享副本。
● 相对于内存,cache line可能被修改。(可能,因为不知道副本有无被修改)
● 该Cache不负责在evict时将cache line写回内存。
● 如果不使任何共享副本无效并获得Cache的唯一所有权,则无法修改cache line。
● 在响应请求的Snoop时,Cache line:
— 如果未设置RetToSrc位,则要求不返回数据。
— 如果设置了RetToSrc位,则期待返回数据。
— 当窥探者指示时,期待将数据直接转发给请求者。
SD :Shared Clean
● 其他缓存可能具有cache line的共享副本。
● 相对于内存,cache line已被修改。
● 在evict时必须将cache line写回下一级缓存或内存。
● 如果不使任何共享副本无效并获得Cache的唯一所有权,则无法修改cache line。
● 在响应请求的Snoop时,Cache line:
— 必须在被要求时归还。
— 当窥探者指示时,期待将直接转发给请求者。
4.1.1 Empty cache line ownership
Empty cache line是指处于Unique状态的cache line,以防止存在该cache line的其他副本。
Empty cache line中没有有效的数据字节。cache line状态为UCE或UDP。
以下是Empty cache line所有权可能发生的示例:
● Requester可以在开始写操作之前获取空cache line,以节省系统带宽。
期望写入cache line的Requester可以获得具有存储权限的空cache line,而不是获得cache line的有效副本。
● 如果Requester在请求存储权限时拥有cache line的副本,则Requester可以转换为空状态。在Requester获得存储权限之前,该cache line的副本无效。在请求完成时,这将导致Requester拥有一个具有存储权限的空缓存行。
4.1.2 Ownership of cache line with partial Dirty data
一旦获得了没有数据的cache line的所有权,Requester就被允许(但不是必须)将数据存储到cache line。如果Requester修改了部分cache line,cache line将保持partially Unique Dirty。缓存线状态为UDP
4.2 Request types
协议请求分为以下几类:
● 对于读请求事务,向Requester提供一个数据响应。
● 对于Dataless请求事务,不向Requester提供任何数据响应。
● 对于写请求事务,数据来自Requester。
● 对于组合写请求事务,数据来自Requester,并执行缓存维护操作。
● 对于原子请求事务,数据来自Requester,并以某些请求类型向Requester提供数据响应。
● 对于Stash请求事务,可以在系统内搬移数据以提高性能。
● 其他请求事务:
— 不涉及系统中的任何数据移动。
— 可用于协助DVM维护。
下一节继续。