如果monitor为Exclusive Access状态,其它非exclusive的同PA地址的store access执行了,那么monitor是否跳回Open Access状态,是IMPLEMENTATION DEFINE的,不管这个store access是本PE,还是其它observer。
3. Exclusive访问Shareable memory locations
shareable memory地址指的是这部分空间它的shareability attribute是或者被认为是Inner shareable或outer shareable的。
shareable memory空间的exclusive access访问,除了受到local monitor的检查,也要受到global monitor的检查。local monitor顾名思义就是监测observer内部的access,对其它PE或observer的access是不关心的。这就需要global monitor来一同把关exclusive access是否可以成功。
global monitor也是在看到有load-exclusive访问的时候,把对应的PA标记为Exclusive Access,它用于决定后续的该PE的store-exclusive对该PA操作是否可以成功。另外,其它PE如果对该PA成功地执行了store-exclusive,那么所有其它PE对该PA的标记都会被清掉,变成Open Access状态。对于每个PE,architecture只要求global monitor支持1个marked address就行了。
global monitor可以位于PE内部,也可以位于memory interface上作为二级monitor。如果某个模块可以同时具有global monitor和local monitor的功能,那么就相当于这个模块将global monitor和local monitor合在一起了。
如果一笔write操作是由无法产生exclusive或其它atomic机制的非PE类型observers=引起的,它对Arm PEs的local monitor和global monitor的影响是IMPLEMENTATION DEFINED的。
load exclusive
对于1个PE来说,对shareable memory空间执行load exclusive指令有两方面影响:
load exclusive对应PA的块会被标记为Exclusive access
同一个PE之前对其它PA的exclusive access状态的标记会被清掉,也就是说global monitor对1个PE只支持记录1个outstanding的exclusive access。
1个PE的load exclusive指令对任何其它PE都不应该有影响。
store exclusive
store exclusive会根据具体情况来更新memory。如下:
在一个sharead memory系统中,global monitor对每个能产生exclusive操作的observer都需要实现1个单独的exclusive状态机。这些单独的状态机除了受自己observer的影响,也会被其它observer影响。
当1个PE的global monitor状态从Exclusive access变到Open access时,需要生成1个event并保存在该PE的event register中。这个event register是被WFE机制使用的。
global monitor的对PE(n)的状态机跳转如下:
4. Context switch support
Exception return会清除掉local monitor,使它回到Open Access状态。因此,在大多数情况下,在context switch时,并不需要执行CLREX指令。context switch并不是application层面的操作,是OS等high EL级别进行的操作。
原作者:谷公子的备忘录