- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
多处理器cache一致性研究.doc
多处理器cache一致性研究
孙增亮EI MSI MESI MOESI
一、Cache的一致性问题
2) 进程迁移引起的不一致。在多处理器系统中,进程可以在处理器中相互迁移。如果某个处理器中的进程修改了私有Cache中的数据,但还没写回内存前,由于某种原因需要迁移到其他处理器中继续运行,而此时读到的将是“过时”的数据。
3) 输入输出操作引起的数据不一致。假设多个Cache中存在内存中同一个数据块的数据拷贝,当系统启动I/O操作时,I/O处理器(通道或DMA)就有可能更新内存中的数据,从而导致Cache与内存的数据的不一致。
实现Cache一致性的途径有两大类:一类是软件办法,在程序编译时,通过软件分析,把数据划分为可用Cache和不可用Cache两种。各处理器间公用的可写数据皆属不可用Cache类,不能放入Cache;另一类是硬件办法,在程序运行时,通过硬件来动态地识别出不一致产生的条件并予以及时处理,从而使Cache的使用有很高的效率。并且此办法对程序员和系统软件开发人员是透明的,减轻了软件研制负担,从而普遍被采用。
硬件方法中最有代表性的技术是目录(directory scheme) 和监听Cache协议(snoopy Cache protoco1)。
1目录协议
目录协议中Cache一致性命令不是向所有的Cache广播。而是只发送到拥有指定数据块副本的那些Cache。这就需要在系统中记录下关于每个Cache存放有哪些数据块副本的信息,这些信息记录在目录表内。目录协议的最大特点是通过查找目录表即可知道某共享数据块副本所在的全部Cache。Cache目录的协议,就是当某个处理器的写操作无法为其他的处理器知道时,通过修改目录间接地向其他处理器报告,以便其他处理器采取措施。目录协议的思想是非常简单的,即将所有使用某一数据块的处理器登记在册,每次变动前都要查目录,变动后则修改目录。根据目录存储方法的不同可以将基于Cache目录的协议分为集中式目录协议和分布式目录协议。
2.1.1 集中式目录协议
集中式目录协议是指在主存储器中只用一个目录来标志数据块在各个处理器Cache中存储的情况。
集中式目录协议有几种方案,其中全映射方案就是采用一个集中存储的目录,每个数据块都在目录中建立一个项,目录项中设有与系统处理器个数相同的“存在位”,每个处理机一位。如果该数据块存在于某处理器的Cache中,相应位就置1,反之就置0,此外,在每一项中还设置了一个重写位,如果该位为l,表示该数据块的内容已经被改写过,此时存在位中只能有一位为l,即改写此数据块的那个处理器拥有该块。与目录表相对应,每个Cache中也为每个数据块安排两个控制信息位。一个是有效位(V),表示该数据的有效或无效,只有当V=l时该数据块才可用的。另外一位称为专用位 (P),如P=l,处理器可以直接向该数据块执行写操作,实际上这时的Cache是该数据块唯一正确的Cache拷贝。反之,当P=0时。不允许直接写入。如图1所示,全映射目录协议中各标志位的情况。
图1
2.1.2 分布式目录协议
分布式目录协议又称为链表式目录协议,该协议将目录分散配置到各Cache中,用链表将有关的Cache连接在一起。每个数据块建立一个数据链表,每个链表中只包含拥有该数据块的Cache。于是,存储器中的每个数据块都只有一个指针,指向使用这个数据块的头结点。头结点再指向下一个拥有此数据块的Cache,直到最后一个结点。链表可以是单向也可以是双向,单向链表只要一个指针,双向链表则需要前项指针和后项指针两个指针,如图2所示是分布式目录协议所用双向链表示意图。
图2
2.2监听Cache协议
监听Cache协议适用于由总线互连的多处理器系统。连接在共享总线上的各个Cache控制器时刻监听着总线。随时接收在总线上传播的由各台处理器发出的一致性命令。然后做出相应的动作,以保持共享数据的一致性。其策略有:
写更新法(write--update):若修改了一个数据块,则同时修改系统中该数据块的所有副本。写无效法(write-invalidate):若一台处理器修改了一个数据块。那么系统中该数据块的其他副本全部作废。监听cache协议的实现方案很多。这里介绍三种。
2.2.1 Firefly方法DEC公司开发的Firefly多处理器工作站上。当处理器对本地Cache中某共享块写入时。对有此数据块副本的其它Cache都要作同样的修改。并且要写回主存。
2.2.2 Write-once(一次写法)
此协议采用写无效法。当一台处理器对本地Cache中的某共享数据块写命中时。如果在本次写操作之前,该数据块尚未经过修改,那么同时还要写回主存(这就是write-once的含义)。如果该数据块已经作过修改,则不写回
文档评论(0)