处理器在访问共享资源时,必须对临界区进行同步,即保证同一时间内,只有一个对临界区的访问者。当共享资源为一内存地址时,原子操作是对该类型共享资源同步访问的最佳方式。随着应用的日益复杂和SMP的广泛使用,处理器都开始提供硬件同步原语以支持原子地更新内存地址。CISC处理器比如IA32,可以提供单独的多种原子指令完成复杂的原子操作,由处理器保证读-修改-写回过程的原子性。而RISC则不同,由于除Load和Store的所有操作都必须在寄存器中完成,如何保证从装载内存地址到寄存器,到修改寄存器中的值,再到将寄存器中的值写回内存中可以原子性的完成,便成为了处理器设计的关键。从ARMv6架构开始,ARM处理器提供了Exclusive accesses同步原语,包含两条指令:
LDREX
STREX

在处理共享资源时,同步操作至关重要,确保同一时间只有一个访问者。ARM体系结构,尤其是从ARMv6开始,通过Exclusive accesses同步原语支持原子操作。这些原语包括加载、修改和写回内存地址的原子过程,以应对复杂应用和SMP环境的需求。与IA32等CISC处理器不同,RISC架构如ARM需要在寄存器中完成所有中间步骤并保证其原子性。
最低0.47元/天 解锁文章
3296

被折叠的 条评论
为什么被折叠?



