gpt4 book ai didi

assembly - 在非缓存内存上锁定 CMPXCHG?

转载 作者:行者123 更新时间:2023-12-02 11:06:03 29 4
gpt4 key购买 nike

一个简单的问题:在非缓存内存(即页表中标记为非缓存的页面)上是否可以使用 LOCK CMPXCHG?

最佳答案

The content of this answer closely resembles the content of this Dr Dobbs' article, particularly the "Locking" section, which I consulted to understand the locking on a QuickPath Interconnect (QPI) enabled systems.
As such this post has been marked as a "community wiki".

是的,这是可能的。

8086 没有缓存,但能够 perform atomic operations .
这是由于 FSB 中引入了 #lock 信号而实现的。 。当此信号被置位时,任何代理都无法启动事务 - 只能执行锁定事务(实际上, not even the locking one sometimes ) - 因此 quiescing系统。

随着缓存的引入,对总线锁的需求减少了。处理器可以通过延迟任何 snooping request 来操作其缓存。在锁定期间来自其他代理。
然而,由于向后兼容性,并且 protected 变量可以 span two cache rows 保留了旧总线锁。 。

当 FSB 被放弃而支持 QPI 时(想想集线器架构和多插槽系统的放弃),#lock 信号也被丢弃。

现在,其中一个 QPI 代理被设计为 Quiesce Master (QM)。当处理器需要锁时,它会请求 QM,QM 又通知其他代理(包括 DMA 代理)停止任何 future 的请求。
当每个代理都向 QM 确认后,它会通知锁定请求者系统已锁定。然后执行原子操作,完成后,向 QM 提交解锁请求。最后,QM 将继续通知其他代理再次允许新交易。
这样,锁定整个内存子系统的机制在现代设计中仍然存在并发挥作用。

关于assembly - 在非缓存内存上锁定 CMPXCHG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43834950/

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