Cache一致性问题
现代并行机中,为了提高处理器的速度,处理器往往带有Cache。一个数据在整个系统内可能有多份拷贝,这就引发了Cache一致性问题。例如下图中的2个处理器和共享内存构成的系统。初始时刻,处理机P1和P2都将变量X从共享内存装入了私有Cache。这时,两个Cache中和共享内存中的变量X的值是一样的。在程序运行的某一时刻,处理机P1把X的值修改为X',并更新了私有Cache中
的值。此时无论P1采用写直达(write-through),还是写回(write-back)策略,都不会修改P2私有Cache中X的值。这时如果P2需要读取X,则它得到的是过时的值。
Cache一致性问题是指在含有多个Cache的并行系统中,数据的多个副本(因为没有同步更新)而造成的不一致问题。以上的例子是由于多个处理器共享一个可写变量造成的Cache不一致。还有其它原因也会造成Cache一致性问题,比如进程迁移和某些I/O操作等。
|