Arm处理器指令集详解
1. 独占访问与处理器特性
在Cortex - M3和M4处理器中,无论地址的可共享属性如何,所有独占访问都使用独占边带信号。而在使用Cortex - M23和Cortex - M33处理器时,如果信号量数据要被多个处理器访问,有两种操作方式:
- 对MPU进行编程,将信号量变量的地址标记为可共享。
- 将ACTLR.EXTEXCLALL设置为1。
需要注意的是,Armv6 - M处理器(如Cortex - M0、Cortex - M0 + 处理器)不支持独占访问。
2. 加载获取 - 存储释放指令
2.1 指令概述
加载获取和存储释放指令是具有内存排序要求的内存访问指令,是Cortex - M处理器家族中的新特性,旨在帮助处理多处理器系统中的数据访问,包括C11标准中引入的原子变量处理。
2.2 内存访问重排序问题
在高性能处理器中,为了提高性能,处理器硬件会对内存访问进行重排序。重排序技术主要有以下两种:
- 数据读取 :处理器可以选择提前执行读取操作,以防止后续使用该数据的处理操作停滞。在长流水线的高性能处理器中,只要内存位置不是外设,读取操作可以在流水线中提前进行推测性启动,且不会违反安全管理,如TrustZone安全扩展的内存分区。
- 数据写入 :处理器可能会实现一个具有多个缓冲区条目的写缓冲区。在这种情况下,写操作可能会延迟并在写缓冲区中停留一段时间,导致后续写操作可能先于它到达内存。
在单处理器系统中,这种内存访问重
超级会员免费看
订阅专栏 解锁全文
72

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



