如果发生 Read Hit ,命中的 Cache Block 一 定处于 Valid , Reserved 或者 Dirty 状 态。 Read Hit 不会改变 该 Cache Block 的状态。 如果发生 Read Miss , 则该 Cache Block 的当前 状态或者是 Invalid 或者 不在本地 Cache 中。此 时 Cache Controller 会产 生一个总线读 BR ,从其 他处理器的 Cache 获得 所需的数据,该数据会 同时存在于主存储器 中。此时将 Cache Block 状态将迁移为 Valid ,表 示此时 Cache Block 中的 数据和主存储器一致, 并且其他处理器的 Cache 可能拥有该数据 的副本。
如果发生 Write Hit ,则根据该写操作是第 一次还是后续写,将状 态分别迁移到 Reserved 或者 Dirty 状态。如果是 第一次写操作,进行 Write-Through 操作的同 时也会产生总线写 BW ,以保证本地 Cache 中 的数据是除主存储器之 外唯一的副本。如果发 生 Write Miss ,则该 Cache Block 的当前状态 或者是 Invalid 或者不在 本地 Cache 中,这次写 操作一定是第一次写, 因此将迁移为 Reserved 。
TOMASULO 算法
LIRS 算法