计算机系统一上电,处理器就开始了对存储器的访问,随着对存储器一次次的读写操作,Cache或主存储器的内容跟着发生变化。为了保证各级存储器之间数据的一致性,Pentium系统采取了一系列的措施,由L2
Cache控制器、NCA("不能高速缓存访问")逻辑以及Pentium处理器之中的Cache控制部件共同管理Cache控制信号和Cache行目录中的MESI状态。下面着重分析在单处理器系统中,不同阶段、不同条件的存储器访问过程,以及为维护数据一致性发生的Cache控制信号和MESI状态的变化。 系统复位以后,Pentium内部的L1 Cache 和 L2 Cache的数据均为无效状态,标志为I(Invalid)。初始化期间当CPU访问L1 Cache 和 L2 Cache时就会发生不命中,转向系统存储器。处理器从主存读取一行数据,将它们同时放在L1 Cache 和 L2 Cache当中。由于系统中不会存在其它处理器和L2 Cache 也包含同一主存行的副本,对于L2和与它相关联的处理器来说,这一行数据是独占的,因此L2 Cache的状态位被置为E(Exclusive)。当一行数据第一次装入内部Cache(此处就是L1 Cache)时,它的MESI状态取决于L2 Cache的结构,在图5-10中,L2 Cache为Look-through结构,这种结构允许多个总线主并发操作,所以必须将数据存储在一个标记为S(Shared)的共享状态行中。由于当前L2中相应行的状态为E,L2 Cache控制器驱动WB/WT#为低电平,指示L1将数据写到对应的行时,把状态标记为S。 |