繁体   English   中英

在ARM Cortex-A9 MPCore上存储/加载原子性

[英]Store/load atomicity on ARM Cortex-A9 MPCore

假设在ARM Cortex-A9 MPCore实现上分配和访问32位整数是原子操作并且指定的值与所有内核同步是否安全? C编译器会保证吗?

uint32_t *p;
*p = 4711;

uint32_t *p;
return *p;

是汇编程序中的原子操作?

“原子”和“与所有核心同步”是不同的要求。 市场上的所有ARM内核都以原子方式对内存执行32位操作(也就是说,如果没有其余内容,您永远不会看到“写入”部分的“部分”)。 并非所有这些都是内核之间的缓存一致性,细节(特别是像big.LITTLE这样更奇特的配置)很复杂。

使用您的OS同步原语。 这种复杂性是它们旨在抽象的。

不,这就是strex / ldrex的原因。 在内核中,正常的str和ldr很好,但是为了确保访问其他内核,你必须使用strex / ldrex(并且有一个支持它们的内存系统)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM