You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否存在会表现出load buffering(加载缓冲)的ARMv8处理器?

ARMv8处理器是否存在Load Buffering(LB)行为?

我们先从Load Buffering(LB,加载缓冲)的litmus测试说起,对应的伪代码如下(初始状态:共享变量X = Y = 0):

void thread1() {
    int tmp0 = X;
    Y = 1;
}

void thread2() {
    int tmp1 = Y;
    X = 1;
}

这个测试的核心问题是:是否可能出现tmp0 = tmp1 = 1的结果?要知道,这个结果在任何顺序一致的执行中都是不可能出现的。

ARMv7明确允许这种行为,相关论文的第7部分对LB有清晰解释,还展示了在多款32位ARM设备上观测到该现象的实验结果。

相较于ARMv7,ARMv8简化并强化了内存模型,但官方在线交互式内存模型工具显示它仍然允许LB行为(可通过在左侧面板加载LB.litmus验证)。不过我在所有可访问的ARM设备上都没观测到LB,包括:

  • Apple M3(个人笔记本电脑)
  • Cortex A78/A55(安卓手机)
  • Oracle Cloud Ampere A2
  • AWS Graviton

因此我想知道:是否存在会表现出Load Buffering的ARMv8处理器? 我认为应该存在,否则ARMv8在进行其他内存模型简化时就会直接禁用Load Buffering了。

注:C/C++有其独立的内存规则,本文明确针对ARM ISA层面的内存模型,仅为清晰起见使用C语法编写伪代码。

内容的提问来源于stack exchange,提问作者zbw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 17:42:26