打印

高速缓存问题

[复制链接]
1251|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dfsa|  楼主 | 2013-3-30 23:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
当cpu请求一个数据,在高速缓存中找不到这个数据时,就产生了一个高速缓存缺失(未命中)。那么接下来就要到主存储器中找到这个数据所在的块,并把它复制到高速缓存。这样不就算完成任务了吗?但为什么计算机又要把这个数据再从高速缓存写回主存储器,以保持数据的一致性。(主存储器里原来不是早就有这个数据的原始版本吗?两个数据一模一样呀,为什么还要再写回去)

相关帖子

沙发
txcy| | 2013-3-30 23:25 | 只看该作者
可能当数据还在高速缓存中时,主存储器中的这个数据被修改了
或者这个数据在高速缓存中会被修改

使用特权

评论回复
板凳
gxgclg| | 2013-3-30 23:28 | 只看该作者
当CPU写主存储器中的一个数据时,会先在高速缓存中找这个数据所在的地址是否映射在高速缓存中,如果在,就改到高速缓存中,如果不在,就在主存储器中找这个数据所在的块,复制到高速缓冲中,然后改变该值,值改变后,这个数据地址块就置为dirty,表示这个地址的数据已经被修改过了,高速缓冲中的数据与主存储器中的数据不一致了。

当CPU这样就绪访问其他不再高速缓存中的数据时,也这样操作,这样访问着访问着高速缓冲就满了,然后CPU再访问这样的数据时,就把高速缓冲中很久都不用的数据块删掉了。但如果CPU发现这个待删掉的数据块已经dirty了,就得把这个数据块写回到主存储器中。

CPU高速缓冲好像还有超时机制,超过一定时间会把dirty的数据块写回主存储区。

使用特权

评论回复
地板
gxgclg| | 2013-3-30 23:38 | 只看该作者
LS分析的很详细

使用特权

评论回复
5
xsgy123| | 2013-3-30 23:41 | 只看该作者
对这方面不太了解,不过3楼分析的还是很有道理的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

282

主题

2404

帖子

2

粉丝