linux– 自旋锁真的需要DMB吗?

linux– 自旋锁真的需要DMB吗?,第1张

概述我正在使用双Cortex-A9系统,我一直在努力了解为什么自旋锁功能需要使用DMB.它似乎只要合并存储缓冲区刷新了锁定值应该在解锁核心的L1上结束并且SCU应该要么使另一个核心的L1中的值无效,要么更新.这足以保持一致性和安全锁定吗?和STREX不会跳过合并存储缓冲区,这意味着我们没有甚至需要冲洗?DMB似乎是一种生硬的锤子,特别是因为它默认为系统域,这可能

我正在使用双Cortex-A9系统,我一直在努力
了解为什么自旋锁功能需要使用DMB.它似乎
只要合并存储缓冲区刷新了锁定值
应该在解锁核心的L1上结束并且SCU应该
要么使另一个核心的L1中的值无效,要么更新.
这足以保持一致性和安全锁定吗?和
STREX不会跳过合并存储缓冲区,这意味着我们没有
甚至需要冲洗?

DMB似乎是一种生硬的锤子,特别是因为它
默认为系统域,这可能意味着一直写入
主内存,这可能是昂贵的.

锁定中的DMB是否为驱动程序的解决方法
正确使用smp_mb?

我目前看到,基于性能指标,约占5%
我的系统周期在由DMB引起的停顿中消失.最佳答案我发现这些文章可能会回答你的问题:

> Locks,SWPs and two Smoking Barriers
> Locks,SWPs and two Smoking Barriers (Part 2)

特别是:

You will note the Data Memory barrIEr (DMB) instruction that is issued once the lock has been acquired. The DMB guarantees that all memory accesses before the memory barrIEr will be observed by all of the other cpus in the system before all memory accesses made after the memory barrIEr. This makes more sense if you consIDer that once a lock has been acquired,a program will then access the data structure(s) locked by the lock. The DMB in the lock function above ensures that accesses to the locked data structure are observed after accesses to the lock.

总结

以上是内存溢出为你收集整理的linux – 自旋锁真的需要DMB吗?全部内容,希望文章能够帮你解决linux – 自旋锁真的需要DMB吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:http://outofmemory.cn/yw/1047459.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存