问答题 在多处理机系统中,各个核心私有的cache会引起各个私有cache之间以及私有cache与共享主存之间的cache一致性问题。请举例说明有哪些具体原因可能会导致cache一致性问题?
【正确答案】正确答案:出现cache一致性问题的原因主要有三个:共享数据写操作、进程迁移和I/O传输。(1)共享数据写操作引起的不一致。例如,两台处理机P 1 和P 2 分别将共享存储器M中的某个数据X拷贝至私有cache C 1 和C 2 中后(如图9.4(a)所示),若处理机P 1 把私有cache C 1 中的X的值改写为X',就会产生数据不一致问题:若处理机P 1 采用写直达策略,则共享主存中的数据也将变为X',但C 2 中还是X;若处理机P 1 采用写回策略,则C 1 中的数据被改写,但共享主存中还是X。 (2)进程迁移引起的数据不一致。例如,处理机P 1 将共享主存M中的某个数据X拷贝至私有cathe C 1 后(如图9.5(a)所示),若处理机P 1 把私有cache C 1 中的X的值改写为X',且P 1 采用写回策略,则修改过的X'仍在处理机P 1 的私有cathe C 1 中。当由于某种原因处理机P 1 上运行的进程被迁移到处理机P 2 上运行,则该进程运行时将从主存读取数据,此时将得到X,而这个X是“过时”的(如图9.5(b)所示),故会产生数据不一致问题。 采用写直达策略也可能导致因进程迁移引起的数据不一致。例如,两台处理机P 1 和P 2 分别将共享存储器M中的某个数据X拷贝至私有cache C 1 和C 2 中后,若处理机P 2 把私有cache C 2 中的X的值改写为X',若处理机P 2 采用写直达策略,则共享主存中的数据也将变为X',但处理机P 1 的私有cache C 1 中仍然是X(如图9.5(c)所示)。 (3)I/O传输所造成的数据不一致:这是因为I/O操作往往不经过cache而直接改写共享主存。例如,两台处理机P 1 和P 2 分别将共享存储器M中某个数据X拷贝至私有cache C 1 和C 2 中后(如图9.6(a)所示),当I/O操作将一个新的数据X'直接写入共享主存时(如图9.6(b)所示),就导致了共享主存和私有cache之间的数据不一致。 另一种由I/O传输所造成的数据不一致的情况是:两台处理机P 1 和P 2 分别将共享存储器M中的某个数据X拷贝至私有cache C 1 和C 2 中后,若处理机P 1 把私有cache C 1 中的X的值改写为X',且处理机P 1 采用写回策略,当I/O操作从共享主存读取X时(如图9.6(c)所示),显然这个X是“过时”的。
【答案解析】