- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 Cache Coherence;6.1 Cache Coherence问题; 6.1.2 多个Cache不一致的原因
1.共享可写数据的不一致性(sharing of writable data); 2.进程迁移的不一致性;上图中:
右图为:包含共享变量x的进程原来在P1上运行,并对x进行了修改(但采取写回策略,所以暂时没有修改Memory),由于某种原因迁移到P2,修改过的x’仍在P1的Cache中,P2运行时从Memory中得到x,这个x其实是“过时”的,所以造成了不一致。
中间图为:P2中运行的进程对x进行了修改,采取写通过策略,所以把Memory中的x也修改为x’,由于某种原因该进程迁移到P1,但P1的Cache中仍为x,所以造成不一致。; 3. I/O操作(绕过Cache的I/O操作);上图中:
中间图为:当I/O处理机将一个新的数据x’写入主存储器时,绕过采用写通过策略的cache,则C1和共享存储器之间产生了不一致。
右图为:直接从主存储器输出数据时(绕过Cache),采用写回策略的高速缓存产生不一致性。; 6.1.3 两种设计Cache一致性协议策略
1.写无效(write invalidate)
任一处理器写它的私有Cache时,它都使所有其它的Cache中的副本失效。
对Write-through,它也更新memory中的副本(最终是一个Cache中的副本和memory中的副本是有效的)。
对Write-back,它使memory中的副本也失效(最终只有一个Cache中的副本是有效的)。;2.写更新(write update)
任一处理器写它的私有Cache时,它都立即更新所有其它的Cache中的副本。
对Write-through,它也更新主存储器中的副本。
对Write-back,对存储器中副本的更新延迟到这个Cache被置换的时刻。;3. 示意图
下图表示数据块x在共享存储器和三台处理机的Cache中的副本一致的情形。; 下图表示P1进行写无效操作后的情形。
写通过:;写回:; 下图表示P1进行写更新操作后的情形(写通过)。;4.写无效的问题
主要开销在两个方面:
(1)作废各Cache副本的开销;
(2)由作废引起缺失造成的开销,即处理机需要访问已经作废的数据时将引起Cache的缺失。
; 后果:
如果一个处理机经常对某个块连续写,且各处理处理机间对共享块的竞争较小,这时写无效策略维护一致性的开销是很小的。如发生严重竞争,即处理机之间对某个地址的共享数据竞争,将产生较多的作废,引起更多的作废缺失。结果是共享数据在各Cache间倒来倒去,产生颠簸现象,当缓存块比较大时,这种颠簸现象更为严重。;5. 写更新的问题
由于更新时,所有的副本均需要更新,开销很大。;6.2 监听总线协议(Snoopy protocol); 6.2.1 写一次(write-once)协议
写无效监听一致性协议,将写通过和写回策略结合。
为了减少总线流量,高速缓存块的第一次写用写通过方法,产生一份正确的主存储器副本,并使其它的Cache中的副本无效,之后就采用写回方法更新Cache与主存储器。; 1. 一致性协议的内容
(1)Cache可能出现的状态集合
(2)共享主存的状态
(3)为维护一致性而引起的状态转换。; 2. 每份Cache中的副本可能出现的四种状态
(1)有效(valid state):与主存储器副本一致的Cache副本,即该副本未经修改,所以这个Cache副本不是唯一的副本。
(2)保留(reserved state):这一Cache副本是第一次修改,并用写通过方法写入主存,所以这一Cache副本和主存储器副本一致。; (3)重写(dirty state):Cache副本不止一次被修改过,由于不再采用写通过方法,所以这个Cache副本是唯一的副本。与存储器和其它的Cache副本都不一致。主存储器中的副本也是无效的。
(4)无效(invalid state)与存储器或其它的Cache副本不一致,或在Cache中找不到。; 3. 局部命令(Local commands)
(1)P-Read:本地处理机读自己的Cache副本。
(2)P-Write:本地处理机写自己的Cache副本。; 4. 一致性命令
(1)Read-blk:从另一Cache读一份有效的副本。
(2)Write-inv:在写命中时在总线上广播一个无效命令。
文档评论(0)