文档介绍:基于外部共享 Cache 的多处理机 Cache 一致性协议刘广忠(河北工程技术高等专科学校成教处,河北沧州 061001 ) 摘要:基于外部共享 Cache 的多处理机 Cache 一致性协议实现了按需求传送数据的目的, 从而避免了无效数据的盲目传送, 只有处理机在发生读缺失或发现数据已被其他处理机更新, 与自身私有 Cache 数据不一致时, 才通过系统总线传输数据, 变被动数据更新为主动按需更新, 大大减轻了系统总线的传输压力。并且本方法简单易行, 协议算法容易实现, 特别是将维护 Cache 一致性的目录表, 从内存慢表变成 Cache 快表, 减少了处理机因频繁的读缺失造成的系统开销, 提高了处理机工作效率。关键词: 多处理机系统; Cache ; 共享性; 一致性协议; 快表中图法分类号: TP302 文献表示码:A 1 Cache 的一致性问题在个人计算机中, 随着单处理机性能开发到极限, 多处理机系统将成为主流。然而, 在多处理机系统中, Cache 结构带来了新的问题: 如果不同处理机中的进程需要共享某些数据, 那么同一数据就可能有多个副本分别存放在各个 Cache 中,当某个 Cache 中的数据被更新后,而其他 Cache 中的相同数据副本并未作相应修改, 则那些处理机从私有 Cache 中读取的将是“脏”数据, 造成了同一数据多个版本共存的现象。这就是所谓的 Cache 一致性问题。引起数据不一致的原因大致有三种。①共享可写数据引起的不一致。如前所述,同一数据的副本存在于多个 Cache 中, 当某个处理机修改了自己 Cache 中的数据, 而其他 Cache 中相同数据副本并未随之作同样的修改,导致多个 Cache 中数据的不一致。另外,某个 Cache 中的数据被更新后, 在没有写回内存前, 也会造成 Cache 与内存的数据不一致。假如此时恰有一个处理机进程( 假设该处理机的私有 Cache 中无修改数据的拷贝) 需要此数据, 读取内存数据时,就会导致数据错误。②进程迁移引起的不一致。在多处理机系统中,进程可以在处理机中相互迁移。如果某个处理机中的进程修改了私有 Cache 中的数据, 但还没写回内存前, 由于某种原因需要迁移到其他处理机中继续运行,而此时读到的将是“过时”的数据。③输入输出操作引起的数据不一致。假设多个 Cache 中存在内存中同一个数据块的数据拷贝, 当系统启动 I/O 操作时, I/O 处理器(通道或 DMA )就有可能更新内存中的数据,从而导致 Cache 与内存的数据的不一致。 2 传统的解决方法及其引起的问题目前常用的有两种解决 Cache 一致性问题的方法: 监听总线法和目录法。监听总线法是通过总线监听机制实现 Cache 与内存之间的数据一致性,一般采用写无效( Write-Invalidate )和写更新( Write-Update )两种策略。写无效策略的基本思想是当私有 Cache 的某个数据块更新时,同时将其他 Cache 中含有该数据块的数据均置为无效。该策略中数据块的大小对 Cache 的性能影响很大, 如果数据块太大, 当某个处理机正在更新一个数据块而其他多个处理机发生阵发式“读缺失”时,就有可能导致总线的流量大大增加,甚至出现争用总线的现象,影响系统的整体性能, Cache