免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5422 | 回复: 5
打印 上一主题 下一主题

关于SMP cpu cache同步的问题请教大虾 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-28 09:36 |只看该作者 |倒序浏览
首先说一下我对SMP cpu cache同步的理解,如有不对,请大虾指正:当某个cpu将自己cache里的数据写入内存时,其他cpu都被通知到这个情况,如果这些cpu中有某个cpu的cache中有这些数据的备份,则该cpu更新自己的cache。

如果我以上的认识是正确的的话,那么是不是在释放spinlock时系统都会保证释放自旋锁的cpu会将自己的cache中的数据写入内存,从而使引用该内存的其他cpu也能更新自己的cache?因为我感觉如果不是的话,每个cpu都仅仅使用自己的cache而又不同步,那么spinlock的存在就没有意义。

论坛徽章:
0
2 [报告]
发表于 2010-06-28 09:59 |只看该作者
Intel、AMD、IBM、SUN、ARM的各不相同。

论坛徽章:
0
3 [报告]
发表于 2010-06-28 10:46 |只看该作者
我想了解intel和arm的,能详细讲讲吗?谢谢。

论坛徽章:
0
4 [报告]
发表于 2010-07-01 18:02 |只看该作者
在ULK3里找着答案了。
Multiprocessor systems have a separate hardware cache for every processor, and therefore they need additional hardware circuitry to synchronize the cache contents. As shown in Figure 2-11, each CPU has its own local hardware cache. But now updating becomes more time consuming: whenever a CPU modifies its hardware cache, it must check whether the same data is contained in the other hardware cache; if so, it must notify the other CPU to update it with the proper value. This activity is often called cache snooping . Luckily, all this is done at the hardware level and is of no concern to the kernel.

论坛徽章:
1
射手座
日期:2013-08-21 13:11:46
5 [报告]
发表于 2012-04-03 11:12 |只看该作者
如果俩CPU同时操作cache line里面的不同部分,A CPU操作了以后,改变了内容,会导致B CPU的cache失效,然后B CPU又会重新刷一份,同步一下.

论坛徽章:
0
6 [报告]
发表于 2012-04-16 14:04 |只看该作者
关于缓存一致性,建议楼主google一下request for owner。有些文档说的比较详细,当然说的最详细的还是CPU手册。

缓存一致性在不同的CPU上有不同的实现,不过具体这些实现细节,只要我们不涉及汇编,或者说不涉及MMU,核间通讯或者DMA操作之类的底层实现,基本上不用管。楼主提到的自旋锁其实主要还是原子操作的问题(当然也和缓存一致性有些关系,但是不用考虑的那么底层),建议你看看关心的体系架构的原子操作的实现就明白了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP