我试图了解LDAPR与LDAR有何不同。这就是参考手册ARM DDI 0487C.a所说的
除了Load-AcquirePC或Store-Release的要求之外,没有订购要求, 通过先执行Store-Release再执行Load-AcquirePC指令来创建。
据此我了解到,如果在STLR
之后是LDAPR
,则两者之间没有排序要求,即LDAPR
可以由CPU调度以执行STLR
完成之前(如果他们访问其他地址)。但是我无法验证这一点。这是我的例子
block1:
LOCK using LDAR
critical section
STLR
block2:
LOCK using LDAPR; can this be scheduled before STLR of block1?
critical section
STLR
我的问题是:
1)可以将block2的锁实现中的LDAPR安排在CPU中block1的STLR之前吗?
2)是否可以保证block2中的LDAPR和同一块中紧随其后的STLR之间的顺序?
3)假设块1和块2中的指令访问不同的存储器位置,块1和块2的执行是否可以重叠?说CPU有足够的资源?