CCIX——ordering

1. Multi-copy atomicity

包含两个方面,写操作序列化 和 读操作一致性

①写操作serialized

所有RN观察到的写操作的顺序必须一致(比如coreA 和 coreB都对地址X进行写操作,无论AB谁先发起写操作,按照多副本原子性的要求,其它core看到的对A和B的写操作的顺序都是确定的,不会出现有的core认为是A先写,有的core是B先写的情况)

② 读操作一致性

在所有RN都观察到某个写操作之前,对该位置的操作不会返回写操作的值,这确保了读操作获取到的数据是已经被所有RN确认过的最新值(coreA 对内存地址 X 进行写操作后,在core B 和其他所有core都确认并观察到 A 的这个写操作之前,任何core对 X 的读操作都不会返回 A 写入的新值。只有当所有core都感知到 A 的写操作后,读操作才会返回新值,这样就避免了读取到未完全同步的写数据,保证了数据在读操作时的一致性)

在CCIX协议中,如果两个cacheline addr 和 ns属性相同,则认为是相同的地址

2. Comp resp and ordering

为了保证一个transaction相对于后续的transaction的顺序,使用comp/compdata来保序

对于来自给定src到同一个target 标记为devnR的请求,无需等待上一个请求的comp,就必须保序。

3.CompAck

  • 对于RN发出的请求和其它RN发起请求所引发的snp,它们之间的相对顺序通过使用CompAck来进行控制。
  • 使用compack确保在请求者事务之后排序的snp req,一定会在该事务响应之后被接收,保证了事务处理的有序性,避免因顺序混乱导致的数据不一致等问题。

也就是 HN在向相同地址发送后续snp请求之前,需要等待 上笔请求的CompAck

 ReadUnique、ReadClean、ReadNotSharedDirty、ReadShared、CleanUnique 和 MakeUnique 这些事务包含 CompAck。在处理这些特定类型的事务时,CompAck 是必不可少的。

你可能感兴趣的:(硬件工程)