1、为什么arm要加入exclusive指令呢
AMRv8 架构中对于 A64,提供了如下的一些 exclusive 指令,用来支持 exclusive 操作。那为什么,arm 在加入 exclusive 指令呢?加入这个,主要是为了解决多核情况下,锁的竞争问题。在软件层面,对于共享资源的访问,会设定一个锁,只有能拿到这个锁的程序,才能够访问共享资源,而没有拿到锁的程序,就不能访问该共享资源。拿到锁的程序,在访问完毕后,要释放锁,这样,其他的程序,才可以竞争该锁,从而访问共享资源。
2、ARM的exclusive指令是如何工作的
之前,提到了为什么要引入 exclusive 操作。ARM 对于 exclusive 操作,新增了 exclusive 指令。下面以一个例子,来说明下,这个是如何工作的。
以以下代码进行说明,标准的抢锁代码:
3、exclusive monitor有何功能
为了支持 exclusive 操作,硬件会增加 exclusive monitor 来支持。
exclusive monitor 分为 2 类:
local monitor: 实现在 cpu 内部,针对 cacheable 属性地址进行监测
global monitor:实现在 cpu 外部,针对 non-cacheabal 属性和 device 属性地址进行监测