加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-13 19:15:40 所属栏目:Linux 来源:网络整理
导读:我正在使用双Cortex-A9系统,我一直在努力 了解为什么自旋锁功能需要使用DMB.它似乎 只要合并存储缓冲区刷新了锁定值 应该在解锁核心的L1上结束并且SCU应该 要么使另一个核心的L1中的值无效,要么更新. 这足以保持一致性和安全锁定吗?和 STREX不会跳过合并存

我正在使用双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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读