第九章多处理机内容摘要:

存对应的数据也改为 X`,但是 C2中的对应数据仍然为 X,这时如果 P2读 C2,那么读取的数据将是 X,而非 X`,即与主存对应数据不一致;如果采用“写回 WB(Write Back)”策略,即 P1更新 C1后主存数据不立即更新,而是当该数据从 C1调出时才更新主存数据,那么,主存数据仍然是 X,这就导致了 C1中的数据与主存数据不一致。 多处理机的 Cache一致性问题 P1 P2 X X X 共享 存储器 处理机 高速缓冲 存储器 初始状态 P1 P2 X` X X` 写通过 P1 P2 X` X X 总线 写回 2)进程迁移引起的不一致 假设 P1的 C1保存共享数据 X的拷贝,而 P2的 C2没有该共享数据。 若 P1的进程对 C1中的 X进行了修改,使其变为 X`,且采用“写回”策略,内存中的数据仍然是 X。 由于某种原因,该进程从 P1迁移到 P2上运行,修改的 X`仍在 P1的 C1中, P2上的进程从主存读取数据 X到 C2,即迁移了的进程读取的数据是“过时”了的 X,而非迁移前修改过的 X`。 若 C C2都有共享数据 X的拷贝, P2进程修改了 C2中 X,使其变为 X`,且采用“写通过”策略,使主存中的 X也修改为 X`。 由于某种原因,该进程从 P2迁移到 P1上运行,此时, C1中仍然是 X,而不是修改过的 X`。 P1 P2 X X X 共享 存储器 处理机 调整缓冲 存储器 迁移之前 P1 P2 X X` X` 写通过 P1 P2 X` X X 总线 写回 3) I/O传输引起的不一致 若 C C2都有共享数据 X的拷贝,当 I/O处理机将一个新的数据 X`输入内存时,导致了主存与 Cache之间的数据不一致。 若 C C2都有共享数据 X的拷贝,当 P1运行过程中修改了 X的值,使其变为 X`, P1采用“写回”策略,那么,主存的 X与 C1中的 X`不一致。 这时,若 I/O处理机要求输出,输出的将是主存的 X,而非修改后的 X`。 P1 P2 X X 存储器 处理机 高速缓冲 存储器 P1 P2 X X (写通过) P1 P2 X` X 总线 (写回) X I/O 存储器 X` X` (输入) 存储器 X X (输出) 多处理机的 Cache不一致性解决办法 1)监听协议 (Snoopy Protocol):适用基于总线互连结构的系统。 2)基于目录的协议:适用非总线互连结构的系统。 监听协议 通过总线监听机制实现高速缓冲和共享存储器之间的数据一致性。 策略: Cache与主存之间 :“写通过 WT”和“写回 WB” Cache与 Cache之间 :“写无效 WI(Write Invalidate)”和“写更新WU(Write Update)” 1)“写通过 WT”:改写 Cache时同时改写主存数据。 2)“写回 WB”:改写 Cache时不立即改写主存数据,而是等 Cache数据调出时才改写主存数据。 3)“写无效 WI”:本地 Cache数据改写时,使远程数据块拷贝无效。 4)“写更新 WU”:本地 Cache数据改写时,通过总线把改写的数据块广播到含有该数据块拷贝的所有其它 Cache。 上述 4中策略可组合起来使用,即: “写通过 WT”+“写无效 WI”、“写通过 WT”+“写更新 WU” “写回 WB”+“写无效 WI”、 “写回 WB”+“写更新 WU” P1 P2 X X 共享 存储器 处理机 高速缓冲 存储器 更新之前 P1 P2 X` I 写无效 P1 P2 X` X` 总线 写更新 由于写更新策略在本地 Cache修改时要通过总线将修改过的数据块内容广播给所有含有该数据块拷贝的其它 Cache,增加了总线的负担,所以,一般系统中,很少使用写更新策略,而是采用写无效策略。 基于此,以下只讨论写无效策略的监听协议。 Cache 1)数据块状态 :有效和无效。 有效表示数据块内容正确,无效表示数据块内容已“过时”或不在本地 Cache中。 需要注意的是:有效和无效分别表。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。