2 全映射目录 用全映射目录协议实现的目录项中有N个处理机位和一个重写位。处理机位表示相应处理机对应的Cache块的状态(存在或不存在)。如果重写位为"1"而且有一个且只有一个处理机位为"1",则意味着该处理机可以对该块进行写操作。 Cache的每个数据块有两个状态位。一位表示数据块是否有效,另一位表示有效块是否允许写。Cache一致性协议必须保证目录的状态位与Cache数据块的状态位一致。 图8.19是全映射目录的三种状态。
图8.19是一个拥有三个CPU的并行系统的Cache状态。第一个图表示全系统中所有Cache都没有单元X的拷贝。当三个处理机都对X有过读请求之后,目录就进入第二种状态。三个处理机位都被置"1",表示三个Cache中都有X的拷贝,。第三种状态表示P3处理机获得了对X的写权力之后的状态。 从第二种状态转移至第三种状态的过程比较复杂。可以用下面的步骤说明: 当要求写单元X时: (1)发现包含X单元的块是有效的,但是不允许写。 (2)向包含X单元的存储器模块发写请求,并暂停的工作。 (3)该存储器模块发无效请求至和。 (4)和接到无效请求后,将对应块置为无效态,并发回答信号给存储器模块。 (5)存储器模块接到和的回答信号后,置重写位为"1",清除指向和的指针,发允许写信号到。 (6)接到允许写信号,更新Cache状态,激活 至此,全部过程结束,就可以写X单元了。在完成写操作之前存储器系统一直等待回答信号。 全映射目录协议的效率比较高,但是其开销与处理机数目的平方成正比(目录的项数与处理机数目成正比,项的大小又与处理机数目成正比,所以其开销等于目录的项数乘以项的大小,即与处理机数目的平方成正比)。由于其过多的存储器开销,所以不具有扩展性。