关于SMP cpu cache同步的问题请教大虾

发布于 2022-09-16 12:10:56 字数 284 浏览 12 评论 5

首先说一下我对SMP cpu cache同步的理解,如有不对,请大虾指正:当某个cpu将自己cache里的数据写入内存时,其他cpu都被通知到这个情况,如果这些cpu中有某个cpu的cache中有这些数据的备份,则该cpu更新自己的cache。

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

↘紸啶 2022-09-20 04:19:15

关于缓存一致性,建议楼主google一下request for owner。有些文档说的比较详细,当然说的最详细的还是CPU手册。

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

残月升风 2022-09-20 04:19:10

如果俩CPU同时操作cache line里面的不同部分,A CPU操作了以后,改变了内容,会导致B CPU的cache失效,然后B CPU又会重新刷一份,同步一下.

花开柳相依 2022-09-20 04:18:23

在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.

温折酒 2022-09-20 03:43:37

我想了解intel和arm的,能详细讲讲吗?谢谢。

━╋う一瞬間旳綻放 2022-09-19 18:20:56

Intel、AMD、IBM、SUN、ARM的各不相同。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文