DDRC中的write exclusive
为了在硬件层面支持读写互斥,就需要判断一个地址是否已被其他处理器或核心修改,在 ARM 处理器中包含了被称为 Exclusive Monitor 的状态机来维护内存的互斥状态,从而保证读写一致性。
状态机的起始状态为 Open,对于某地址的 Load-Exclusive 读操作会将读取的地址标记为 Exclusive 状态;在对同一地址进行 Store-Exclusive 写操作会先检查 Monitor 是否处于 Exclusive 状态,若处于该状态则将内容写入,并将状态置为 Open,如果在写入前发现 Monitor 已经处于 Open 状态,说明有其他处理器或核心已经写入内容,本次写入失败。
简言之,Load-Exclusive 读指令将读取的地址标记为 Exclusive,Store-Exclusive 执行只能写入状态为 Exclusive 的地址,并在成功后将地址重新标记为 Open,通过这种方式即可保证多读单写,即保证了读取效率,又防止了多写带来的一致性问题。
文本源自:
1.iOS汇编教程(七)ARM Exclusive - 互斥锁与读写一致性的底层实现原理
2.exclusive access monitor的实现
3.2.AMBA·AXI独家访问解惑