gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:55:19 25 4
gpt4 key购买 nike

我正在使用双 Cortex-A9 系统并且我一直在尝试准确理解为什么自旋锁函数需要使用 DMB。它似乎只要合并存储缓冲区被刷新锁定值应该在解锁核心的 L1 中结束,SCU 应该使另一个内核的 L1 中的值无效或更新。这足以保持一致性和安全锁定吗?和STREX 无论如何都不会跳过合并存储缓冲区,这意味着我们不会甚至需要冲洗?

DMB 似乎是一把钝锤,尤其是因为它默认为系统域,这可能意味着一路写入到主内存,这可能很昂贵。

锁中的 DMB 是否作为司机的解决方法?正确使用 smp_mb?

我目前看到,基于性能计数器,大约 5%我的系统周期在 DMB 引起的停顿中消失。

最佳答案

我发现这些文章可能会回答您的问题:

特别是:

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 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13148421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com