计算机组成原理cache论文缓存一致性的解决方案大学论文.docx

上传人:b****1 文档编号:2401706 上传时间:2023-05-03 格式:DOCX 页数:15 大小:22.37KB
下载 相关 举报
计算机组成原理cache论文缓存一致性的解决方案大学论文.docx_第1页
第1页 / 共15页
计算机组成原理cache论文缓存一致性的解决方案大学论文.docx_第2页
第2页 / 共15页
计算机组成原理cache论文缓存一致性的解决方案大学论文.docx_第3页
第3页 / 共15页
计算机组成原理cache论文缓存一致性的解决方案大学论文.docx_第4页
第4页 / 共15页
计算机组成原理cache论文缓存一致性的解决方案大学论文.docx_第5页
第5页 / 共15页
计算机组成原理cache论文缓存一致性的解决方案大学论文.docx_第6页
第6页 / 共15页
计算机组成原理cache论文缓存一致性的解决方案大学论文.docx_第7页
第7页 / 共15页
计算机组成原理cache论文缓存一致性的解决方案大学论文.docx_第8页
第8页 / 共15页
计算机组成原理cache论文缓存一致性的解决方案大学论文.docx_第9页
第9页 / 共15页
计算机组成原理cache论文缓存一致性的解决方案大学论文.docx_第10页
第10页 / 共15页
计算机组成原理cache论文缓存一致性的解决方案大学论文.docx_第11页
第11页 / 共15页
计算机组成原理cache论文缓存一致性的解决方案大学论文.docx_第12页
第12页 / 共15页
计算机组成原理cache论文缓存一致性的解决方案大学论文.docx_第13页
第13页 / 共15页
计算机组成原理cache论文缓存一致性的解决方案大学论文.docx_第14页
第14页 / 共15页
计算机组成原理cache论文缓存一致性的解决方案大学论文.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

计算机组成原理cache论文缓存一致性的解决方案大学论文.docx

《计算机组成原理cache论文缓存一致性的解决方案大学论文.docx》由会员分享,可在线阅读,更多相关《计算机组成原理cache论文缓存一致性的解决方案大学论文.docx(15页珍藏版)》请在冰点文库上搜索。

计算机组成原理cache论文缓存一致性的解决方案大学论文.docx

计算机组成原理cache论文缓存一致性的解决方案大学论文

缓存一致性的解决方案

摘要:

随着计算机技术的飞速发展,CPU时计算机组成的核心部分,提高CPU的性能一直是一个很重要的课题,所以CPU从单核提高到多核,但是总会有一些技术上的难题需要解决,这其中,Cache的一致性问题的解决就推动计算机多核的发展,解决一致性人们提出了一些协议,这其中比较好的解决方案是MESI协议,MESI协议通过监视机制,实时监视总系的事务,当修改某一缓存时,通过通知其它同样持有同一内容的缓存来保持缓存的一致性。

这一协议是目前比较好的解决缓存一致性问题的解决方案,本篇文章就这一经典协议做了分析与总结。

关键词:

缓存一致性窥探协议

引言

现代的CPU上,大部分都需要通过缓存来进行内存访问,由于物理架构的原因,CPU没有管脚直接连到内存,所以CPU的读/写(以及取指令)单元正常情况下不能进行直接内存访问。

相反,CPU和一级缓存通讯,而一级缓存才能和内存通讯。

而现在又大多有了二级缓存,甚至三级缓存。

缓存是分段(line)的,即下文要用的“缓存段”(cacheline),当我们提到”缓存段”的时候,就是指一段和缓存大小对齐的内存,而不关心里面的内容是否真正被缓存进去。

当CPU看到一条读内存指令时,它会把内存地址传递给一级数据缓存,一级数据缓存会检查它是否有这个内存地址对应的缓存段,没有的话,它会把对应的缓存段加载进来。

如果进行的是读操作,这就很简单,所有级别的缓存都遵循以下规律:

在任意时刻,任意级别缓存中的缓存段的内容,等同于它关联内存中的内容。

如果进行写操作,情况就会变得复杂些,一般分为两种基本的写模式:

直写(write-through)和回写(write-back)。

直写简单一点:

透过缓存,直接把数据写到下一级内存中,如果对应的段被缓存了,就更新缓存中的内容,同样遵循前面的定律:

缓存中的段永远和它关联内存的内容匹配。

回写相对复杂一些,回写模式下不会立即把数据传递给下一级,而是仅仅修改本级缓存中的内容,并将其标记为“脏段”,“脏段”会在触发回写,就是将缓存段中的内容传递给下一级,然后脏段又变干净了,即当一个脏段被丢弃了,总是要进行一次回写,在回写模式中,去掉了“任意时刻”这个修饰词,而是以相对弱化的条件代替它:

缓存段干净时,缓存段的内容和内存一致;缓存段是脏段时,缓存段中的内容最终要回写到内存中,也就是说可以允许关联内存不和缓存内容同步,但最终要同步。

问题由来

在计算机中,Cache的出现是为了CPU访问内存的速度,只有一个CPU时,不会出现必将难处理的情况,但是有多个CPU时,会出现一个难解决的问题:

Cache的一致性如何保证。

具体情况是,多组缓存会共同持有一块内存的内容,如果某一缓存修改了这块内存的内容,那么其它缓存中就不知道这个情况,就会造成缓存的不一致问题,想要解决问题,如果让多个CPU公用一个缓存,每当有指令时,让这些CPU一个一个执行指令,所以每次只有一个CPU在执行指令,虽然这样可以解决缓存不一致问题,但这样会太浪费时间,效率太低,

问题的根源在于有多组缓存,而上面的方法是一组缓存,所以如果将多组缓存看成一组缓存,

看似很难实现,但这确实是可行的,为了实现这样的想法,缓存一致性协议就应运而生了,

这个协议就是能够保证缓存内容的一致性,使多核的效率很大地提高。

缓存一致性协议又有好几种,目前多数计算机都采用的使“窥探(snooping)”协议,这就是本文的主要讲的协议。

“窥探”机制

窥探一种是缓存中的窥探器监视总线事务的机制,它的目标是为了处理好缓存一致性的问题,这个机制是Ravishankar和Goodman在1983年提出的。

当一个特定的数据被多个缓存共享时,并且有一个处理器要修改这个共享数据,那么必须要通知其它拥有这个数据拷贝的缓存。

否则,就会违背缓存一致性。

这个数据更改通知就可以通过监视总线来完成。

所有的监视器监视总线上的每个事务,如果总线上有一个修改共享缓存块事务,相应的监视器就会确保缓存的一致性。

所谓的修改也就是在上面有提到两种写模式,在直写模式下,没有问题,因为写操作一执行,它的效果是立即显现的,不会有停留。

但是如果存在回写模式,就会出现问题,因为有可能在写指令执行过后很久,才会触发回写,数据被写回内存中去(这是由于回写机制决定的)——在这段时间内,就可能会出现其它处理器的缓存也去写这块内存,这样就情况就变得不好处理。

在回写模型中,如果仅仅把写操作信息通知给其它处理器是不够的,由于回写机制会有时间延迟,所以我们还要做的是,在修改之前就要通知其它处理器,这样就可以避免其它处理器也去写这块内存。

具体想法有了,人们就提出来解决这个问题的目前最有效的方案,就是MESI协议(Modified、Exclusive、Shared、Invalid)。

MESI协议

MESI是四种缓存状态英文首字母的缩写,并且规定多核体统中的cacheline都只处于这四种状态。

∙已修改(Modified)缓存段,表明cacheline对应的memory仅在一个Cache中被缓存了,而且其在Cache中的缓存与在内存中的值也是不一致的!

∙独占(Exclusive)缓存段,表明cacheline对应的memory仅在一个Cache中被缓存了,并且其在缓存中的内容与内存中的内容一致。

∙共享(Shared)缓存段,表明cacheline对应的memory在多个Cache中被缓存了,并且所有缓存中的内容与在内存中的内容一致。

∙失效(Invalid)缓存段,表明当前缓存段无效。

操作

状态的转换基于两个激发。

第一个激发是:

处理器本身发出读或写请求,当一个CPU在Cache中有一个缓存段,并且CPU需要从这个缓存段中读或写。

第二个激发是:

来自于其它处理器,没有该缓存段或者在本Cache里已经更新数据,而在其它处理器中的Cache还没有更新。

总线请求被“窥探器”一直窥探着。

写操作:

如果cacheline是M或E状态,那么它只能被写。

也即在这两种状态下,处理器是独占cacheline的,所以不会有任何冲突。

如果是S状态,必须先发送Requerst-For-Ownership让其它Cache中关联到同一内存地址的cacheline变为I状态后才能被写。

读操作:

一个缓存中有M状态的cacheline,必须“窥探”所有内存关联Cache的读操作,并且监听到读操作后,可以使读操作延迟,然后写回主存并将该cacheline置为S状态。

若是E状态的cacheline,同样“窥探”所有内存关联Cache的读操作,并在监听到读操作后将其状态有E置为S状态。

一个缓存中有S状态的cacheline,必须监听来自其它缓存的弃用或申请主权广播,在收到广播后弃用该cacheline,置其于I状态。

ReadForOwnership是一个缓存一致性里组合一个读和一个丢弃的广播的操作。

该操作是一个处理器尝试写一个处于S或I状态的cacheline,这个操作引起所有其它缓存置这样的cacheline于状态I,一个这个操作是独占的,它给缓存带来数据并丢弃其它所有的cacheline。

结论

本文就为解决缓存一致性的MESI协议进行了分析,通过MESI协议能够很好地处理多核情况下缓存一致性的问题,是比较好的解决方式,是值得程序员们深入理解的一套协议。

PaperPass检测报告简明打印版

比对结果(相似度):

26.13%

编号:

VIP20161028213615649

标题:

计算机组成原理cache论文

长度:

2611字符(不计空格)

句子数:

83句

时间:

2016-10-2821:

36:

15

对比库:

学术期刊、学位论文、会议论文、互联网资源

相似资源列表:

1.相似度:

11.86%篇名:

《Cache中被缓存了,并且所有缓存中的内容与在内存中的内容一致。

2.相似度:

88.89%篇名:

《MESI协议》

3.相似度:

6.25%篇名:

《MESI是四种缓存状态英文首字母的缩写,并且规定多核体统中的cacheline都只处于这四种状态。

4.相似度:

15.52%篇名:

《ReadForOwnership是一个缓存一致性里组合一个读和一个丢弃的》

5.相似度:

47.89%篇名:

《U没有管脚直接连到内存,所以CPU的读/写(以及取指令)单元正常情况下不能进》

6.相似度:

11.27%篇名:

《ache的读操作,并且监听到读操作后,可以使读操作延迟,然后写回主存并将该cacheline置为S状态。

7.相似度:

34.29%篇名:

《e-through)和回写(write-back)。

8.相似度:

43.42%篇名:

《—在这段时间内,就可能会出现其它处理器的缓存也去写这块内存,这样就情况就变得》

9.相似度:

16.67%篇名:

《“窥探”机制》

10.相似度:

15.38%篇名:

《一个缓存中有S状态的cacheline,必须来自其它缓存的监听弃用或申请主》

11.相似度:

18.42%篇名:

《不好处理。

在回写模型中,如果仅仅把写操作信息通知给其它处理器是不够的,由于回》

12.相似度:

19.64%篇名:

《个修改共享缓存块事务,相应的监视器就会确保缓存的一致性。

13.相似度:

18.42%篇名:

《中的内容,并将其标记为“脏段”,“脏段”会在触发回写,就是将缓存段中的内容传》

14.相似度:

26.15%篇名:

《仅在一个Cache中被缓存了,并且其在缓存中的内容与内存中的内容一致。

15.相似度:

12.12%篇名:

《仅在一个Cache中被缓存了,而且其在Cache中的缓存与在内存中的值也是不一致的!

16.相似度:

15.79%篇名:

《令执行过后很久,才会触发回写,数据被写回内存中去(这是由于回写机制决定的)—》

17.相似度:

17.81%篇名:

《以每次只有一个CPU在执行指令,虽然这样可以解决缓存不一致问题,但这样会太浪费时间,效率太低,》

18.相似度:

8.70%篇名:

《会出现必将难处理的情况,但是有多个CPU时,会出现一个难解决的问题:

Cache的一致性如何保证。

19.相似度:

29.63%篇名:

《共享(Shared)缓存段,表明cacheline对应的memory在多个》

20.相似度:

48.28%篇名:

《关键词:

缓存一致性窥探协议》

21.相似度:

13.16%篇名:

《具体情况是,多组缓存会共同持有一块内存的内容,如果某一缓存修改了这块内存的内》

22.相似度:

14.06%篇名:

《写操作:

如果cacheline是M或E状态,那么它只能被写。

也即在这两种状》

23.相似度:

10.53%篇名:

《写机制会有时间延迟,所以我们还要做的是,在修改之前就要通知其它处理器,这样就》

24.相似度:

23.53%篇名:

《决一致性人们提出了一些协议,这其中比较好的解决方案是MESI协议,MESI协》

25.相似度:

3.77%篇名:

《前最有效的方案,就是MESI协议(Modified、Exclusive、Shared、Invalid)。

26.相似度:

21.05%篇名:

《可以避免其它处理器也去写这块内存。

具体想法有了,人们就提出来解决这个问题的目》

27.相似度:

10.53%篇名:

《回写模式中,去掉了“任意时刻”这个修饰词,而是以相对弱化的条件代替它:

缓存段》

28.相似度:

13.16%篇名:

《回写相对复杂一些,回写模式下不会立即把数据传递给下一级,而是仅仅修改本级缓存》

29.相似度:

15.79%篇名:

《在上面有提到两种写模式,在直写模式下,没有问题,因为写操作一执行,它的效果是》

30.相似度:

12.31%篇名:

《在计算机中,Cache的出现是为了CPU访问内存的速度,只有一个CPU时,不》

31.相似度:

39.53%篇名:

《失效(Invalid)缓存段,表明当前缓存段无效。

32.相似度:

15.71%篇名:

《如果让多个CPU公用一个缓存,每当有指令时,让这些CPU一个一个执行指令,所》

33.相似度:

33.33%篇名:

《如果进行写操作,情况就会变得复杂些,一般分为两种基本的写模式:

直写(writ》

34.相似度:

7.89%篇名:

《如果进行的是读操作,这就很简单,所有级别的缓存都遵循以下规律:

在任意时刻,任》

35.相似度:

16.13%篇名:

《存中,也就是说可以允许关联内存不和缓存内容同步,但最终要同步。

36.相似度:

13.16%篇名:

《容,那么其它缓存中就不知道这个情况,就会造成缓存的不一致问题,想要解决问题,》

37.相似度:

38.46%篇名:

《已修改(Modified)缓存段,表明cacheline对应的memory》

38.相似度:

34.21%篇名:

《干净时,缓存段的内容和内存一致;缓存段是脏段时,缓存段中的内容最终要回写到内》

39.相似度:

31.25%篇名:

《广播的操作。

该操作是一个处理器尝试写一个处于S或I状态的cacheline》

40.相似度:

14.47%篇名:

《当一个特定的数据被多个缓存共享时,并且有一个处理器要修改这个共享数据,那么必》

41.相似度:

100.00%篇名:

《必须先发送Requerst-For-Ownership让其它Cache中关联》

42.相似度:

27.69%篇名:

《态下,处理器是独占cacheline的,所以不会有任何冲突。

如果是S状态,》

43.相似度:

18.75%篇名:

《总线请求被“窥探器”一直窥探着。

44.相似度:

59.26%篇名:

《意级别缓存中的缓存段的内容,等同于它关联内存中的内容。

45.相似度:

60.53%篇名:

《我们提到”缓存段”的时候,就是指一段和缓存大小对齐的内存,而不关心里面的内容》

46.相似度:

65.79%篇名:

《据缓存,一级数据缓存会检查它是否有这个内存地址对应的缓存段,没有的话,它会把对应的缓存段加载进来。

47.相似度:

40.00%篇名:

《摘要:

随着计算机技术的飞速发展,CPU时计算机组成的核心部分,提高CPU的性》

48.相似度:

43.84%篇名:

《是否真正被缓存进去。

当CPU看到一条读内存指令时,它会把内存地址传递给一级数》

49.相似度:

20.37%篇名:

《是独占的,它给缓存带来数据并丢弃所有其它的cacheline。

50.相似度:

39.47%篇名:

《更新缓存中的内容,同样遵循前面的定律:

缓存中的段永远和它关联内存的内容匹配。

51.相似度:

16.18%篇名:

《本文就为解决缓存一致性的MESI协议进行了分析,通过MESI协议能够很好地处》

52.相似度:

3.92%篇名:

《权广播,在收到广播后弃用该cacheline,置其于I状态。

53.相似度:

10.81%篇名:

《段,并且CPU需要从这个缓存段中读或写。

54.相似度:

16.67%篇名:

《状态的转换基于两个激发。

55.相似度:

37.25%篇名:

《独占(Exclusive)缓存段,表明cacheline对应的memory》

56.相似度:

21.13%篇名:

《现代的CPU上,大部分都需要通过缓存来进行内存访问,由于物理架构的原因,CP》

57.相似度:

21.05%篇名:

《理多核情况下缓存一致性的问题,是比较好的解决方式,是值得程序员们深入理解的一套协议。

58.相似度:

32.89%篇名:

《直写简单一点:

透过缓存,直接把数据写到下一级内存中,如果对应的段被缓存了,就》

59.相似度:

28.95%篇名:

《看似很难实现,但这确实是可行的,为了实现这样的想法,缓存一致性协议就应运而生了,》

60.相似度:

17.11%篇名:

《知就可以通过监视总线来完成。

所有的监视器监视总线上的每个事务,如果总线上有一》

61.相似度:

7.89%篇名:

《窥探一种是缓存中的窥探器监视总线事务的机制,它的目标是为了处理好缓存一致性的》

62.相似度:

10.53%篇名:

《立即显现的,不会有停留。

但是如果存在回写模式,就会出现问题,因为有可能在写指》

63.相似度:

17.65%篇名:

《第一个激发是:

处理器本身发出读或写请求,当一个CPU在Cache中有一个缓存》

64.相似度:

7.04%篇名:

《第二个激发是:

来自于其它处理器,没有该缓存段或者在本Cache里已经更新数据》

65.相似度:

17.65%篇名:

《缓存一致性协议又有好几种,目前多数计算机都采用的使“窥探(snooping)”协议,这就是本文的主要讲的协议。

66.相似度:

17.74%篇名:

《缓存是分段(line)的,即下文要用的“缓存段”(cacheline),当》

67.相似度:

16.44%篇名:

《能一直是一个很重要的课题,所以CPU从单核提高到多核,但是总会有一些技术上的》

68.相似度:

18.33%篇名:

《若是E状态的cacheline,同样“窥探”所有内存关联Cache的读操作》

69.相似度:

38.89%篇名:

《行直接内存访问。

相反,CPU和一级缓存通讯,而一级缓存才能和内存通讯。

而现在又大多有了二级缓存,甚至三级缓存。

70.相似度:

10.53%篇名:

《议通过监视机制,实时监视总系的事务,当修改某一缓存时,通过通知其它同样持有同一内容的缓存来保持缓存的一致性。

71.相似度:

10.94%篇名:

《读操作:

一个缓存中有M状态的cacheline,必须“窥探”所有内存关联C》

72.相似度:

18.42%篇名:

《这一协议是目前比较好的解决缓存一致性问题的解决方案,本篇文章就这一经典协议做了分析与总结。

73.相似度:

20.97%篇名:

《这个协议就是能够保证缓存内容的一致性,使多核的效率很大地提高。

74.相似度:

21.05%篇名:

《递给下一级,然后脏段又变干净了,即当一个脏段被丢弃了,总是要进行一次回写,在》

75.相似度:

15.79%篇名:

《问题的根源在于有多组缓存,而上面的方法是一组缓存,所以如果将多组缓存看成一组缓存,》

76.相似度:

21.15%篇名:

《问题,这个机制是Ravishankar和Goodman在1983年提出的。

77.相似度:

22.54%篇名:

《难题需要解决,这其中,Cache的一致性问题的解决就推动计算机多核的发展,解》

78.相似度:

15.79%篇名:

《须要通知其它拥有这个数据拷贝的缓存。

否则,就会违背缓存一致性。

这个数据更改通》

79.相似度:

19.05%篇名:

《,并在监听到读操作后将其状态有E置为S状态。

80.相似度:

32.43%篇名:

《,而在其它处理器中的Cache还没有更新。

81.相似度:

15.38%篇名:

《,这个操作引起所有其它缓存置这样的cacheline于状态I,一个这个操作》

全文简明报告:

缓存一致性的解决方案

摘要:

随着计算机技术的飞速发展,CPU时计算机组成的核心部分,提高CPU的性能一直是一个很重要的课题,所以CPU从单核提高到多核,但是总会有一些技术上的难题需要解决,这其中,Cache的一致性问题的解决就推动计算机多核的发展,解决一致性人们提出了一些协议,这其中比较好的解决方案是MESI协议,MESI协议通过监视机制,实时监视总系的事务,当修改某一缓存时,通过通知其它同样持有同一内容的缓存来保持缓存的一致性。

这一协议是目前比较好的解决缓存一致性问题的解决方案,本篇文章就这一经典协议做了分析与总结。

关键词:

缓存一致性窥探协议

引言

现代的CPU上,大部分都需要通过缓存来进行内存访问,由于物理架构的原因,CPU没有管脚直接连到内存,所以CPU的读/写(以及取指令)单元正常情况下不能进行直接内存访问。

相反,CPU和一级缓存通讯,而一级缓存才能和内存通讯。

而现在又大多有了二级缓存,甚至三级缓存。

缓存是分段(line)的,即下文要用的“缓存段”(cacheline),当我们提到”缓存段”的时候,就是指一段和缓存大小对齐的内存,而不关心里面的内容是否真正被缓存进去。

当CPU看到一条读内存指令时,它会把内存地址传递给一级数据缓存,一级数据缓存会检查它是否有这个内存地址对应的缓存段,没有的话,它会把对应的缓存段加载进来。

如果进行的是读操作,这就很简单,所有级别的缓存都遵循以下规律:

在任意时刻,任意级别缓存中的缓存段的内容,等同于它关联内存中的内容。

如果进行写操作,情况就会变得复杂些,一般分为两种基本的写模式:

直写(write-through)和回写(write-back)。

直写简单一点:

透过缓存,直接把数据写到下一级内存中,如果对应的段被缓存了,就更新缓存中的内容,同样遵循前面的定律:

缓存中的段永远和它关联内存的内容匹配。

回写相对复杂一些,回写模式下不会立即把数据传递给下一级,而是仅仅修改本级缓存中的内容,并将其标记为“脏段”,“脏段”会在触发回写,就是将缓存段中的内容传递给下一级,然后脏段又变干净了,即当一个脏段被丢弃了,总是要进行一次回写,在回写模式中,去掉了“任意时刻”这个修饰词,而是以相对弱化的条件代替它:

缓存段干净时,缓存段的内容和内存一致;缓存段是脏段时,缓存段中的内容最终要回写到内存中,也就是说可以允许关联内存不和缓存内容同步,但最终要同步。

问题由来

在计算机中,Cache的出现是为了CPU访问内存的速度,只有一个CPU时,不会出现必将难处理的情况,但是有多个CPU时,会出现一个难解决的问题:

Cache的一致性如何保证。

具体情况是,多组缓存会共同持有一块内存的内容,如果某一缓存修改了这块内存的内容,那么其它缓存中就不知道这个情况,就会造成缓存的不一致问题,想要解决问题,如果让多个CPU公用一个缓存,每当有指令时,让这些CPU一个一个执行指令,所以每次只有一个CPU在执行指令,虽然这样可以解决缓存不一致问题,但这样会太浪费时间,效率太低,

问题的根源在于有多组缓存,而上面的方法是一组缓存,所以如果将多组缓存看成一组缓存,

看似很难实现,但这确实是可行的,为了实现这样的想法,缓存一致性协议就应运而生了,

这个协议就是能够保证缓存内容的一致性,使多核的效率很大地提高。

缓存一致性协议又有好几种,目前多数计算机都采用的使“窥探(snooping)”协议,这就是本文的主要讲的协议。

“窥探”机制

窥探一种是缓存中的窥探器监视总线事务的机制,它的目标是为了处理好缓存一致性的问题,这个机制是Ravishankar和Goodman在1983年提出的。

当一个特定的数据被多个缓存共享时,并且有一个处理器要修改这个共享数据,那么必须要通知其它拥有这个数据拷贝的缓存。

否则,就会违背缓存一致性。

这个数据更改通知就可以通过监视总线来完成。

所有的监视器监视总线上的每个事务,如果总线上有一个修改共享缓存块事务,相应的监视器就会确保缓存的一致性。

在上面有提到两种写模式,在直写模式下,没有问题,因为写操作一执行,它的效果是立即显现的,不会有停留。

但是如果存在回写模式,就会出现问题,因为有可能在写指令执行过后很久,才会触发回写,数据被写回内存中去(这是由于回写机制决定的)——在这段时间内,就可能会出现其它处理器的缓存也去写这块内存,这样就情况就变得不好处理。

在回写模型中,如果仅仅把写操作信息通知给其它处理器是不够的,由于回写机制会有时间延迟,所以我们还要做的是,在修改之前就要通知其它处理器,这样就可以避免其它处理器也去写这块内存。

具体想法有了,人们就提出来解决这个问题的目前最有效的方案,就是MESI协议(Modified、Exclusive、Shared、Invalid)。

MESI协议

MESI是四种缓存状态英文首字母的缩写,并且规定多核体统中的cacheline都只处于这四种状态。

∙已修改(Modified)缓存段,表明cacheline对应的memory仅在一个Cache中被缓存了,而且其在Cache中的缓存与在内存中的值也是

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2