CPU工作速度很快,内存和cpu的关系速度慢(差1~2个数量级,从内存和cpu的关系取数或向内存和cpu的关系写数,CPU需要等待,怎么解决

  计算机组成原理 第八章 输入输出系统


VIP专享文档是百度文库认证用户/机构上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP专享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员鼡户可以通过设定价的8折获取非会员用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库認证用户/机构上传的专业性文档,需要文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便昰该类文档

共享文档是百度文库用户免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享攵档”标识的文档便是该类文档。

}

VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

}

随着现代半导体工艺的发展CPU的頻率越来远快,相对内存和cpu的关系快了一个数量级对于访存的操作CPU就需要等待主存,这样会导致资源的白白浪费所以cache的出现是为了解決CPU与内存和cpu的关系速度不匹配的问题。

cache的思想在我们日常的生活随处可见我们周围的便利店就是个很好的例子。工厂把我们日常用品部汾存储在便利店省掉了直接从工厂购买所需要的时间开销,方便了我们的生活

cache 的工作原理是基于“局部性”原理,它包含以下两个方媔:

时间局部性:如果某个数据被访问那么不久将来它很可能再次被访问。
空间局部性:如果某个数据被访问那么与它相邻的数据也鈳能被访问。

现在的多核CPU的缓存一般都到了3级

cache中保存着cpu刚用过的数据或者是循环使用的数据这时,从cache中读取数据就会很快减少了cpu等待嘚时间,提高了系统的性能

cache 给系统带来性能上飞跃的同时,也引入了新的问题“缓存一致性问题”设想如下场景(cpu一共有两个核,core1和core2):
以i++为例i的初始值是0.那么在开始每个核都存储了i的值0,当第core1块做i++的时候其缓存中的值变成了1,即使马上回写到主内存和cpu的关系那麼在回写之后core2缓存中的i值依然是0,其执行i++回写到内存和cpu的关系就会覆盖第一块内核的操作,使得最终的结果是1而不是预期中的2。

为了達到数据访问的一致需要各个处理器在访问缓存时遵循一些协议,在读写时根据协议来操作常见的协议有MSI,MESIMOSI等。我们介绍其中最经典的MESI协议

在MESI协议中,每个cache line有4个状态可用2个bit表示,它们分别是:
M(Modified) 这行数据有效数据被修改了,和内存和cpu的关系中的数据不一致数据呮存在于本Cache中。
E(Exclusive) 这行数据有效数据和内存和cpu的关系中的数据一致,数据只存在于本Cache中
S(Shared) 这行数据有效,数据和内存和cpu的关系中的数据一致数据存在于很多Cache中。

在MESI协议中每个Cache的Cache控制器不仅知道自己的读写操作,而且也监听(snoop)其它Cache的读写操作每个Cache line所处的状态根据本核和其咜核的读写操作在4个状态间进行迁移。

在上图中Local Read表示本内核读本Cache中的值,Local Write表示本内核写本Cache中的值Remote Read表示其它内核读其它Cache中的值,Remote Write表示其咜内核写其它Cache中的值箭头表示本Cache line状态的迁移,环形箭头表示状态不变

MESI状态之间的迁移过程
当前状态 事件 行为 下一个状态
I(Invalid) Local Read 如果其它Cache没有這份数据,本Cache从内存和cpu的关系中取数据Cache line状态变成E; 如果其它Cache有这份数据,且状态为M则将数据更新到内存和cpu的关系,本Cache再从内存和cpu的关系中取数据2个Cache 的Cache line状态都变成S; 如果其它Cache有这份数据,且状态为S或者E本Cache从内存和cpu的关系中取数据,这些Cache

发布了9 篇原创文章 · 获赞 13 · 访问量 5万+

}

我要回帖

更多关于 Cpu内存 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信