CPU 里的内存排序:强弱模型并不像你以为的那样
来源: fgiesen.wordpress.com — 2026-08-25
概述
Fabian Giesen(ryg)澄清一个常见的误解:强内存序架构(如 x86、SPARC)与弱内存序架构(如 ARM、RISC-V)的差别,并不在于强序机器真的对每一次内存访问都严格遵守内存模型。实际上几乎所有 CPU(包括较大的顺序执行设计)都「乐观地」实现内存排序:假设绝大多数访问无竞争,只保留足够元数据事后发现排序违规,一旦检测到冲突就回滚并重试。强弱模型的真正区别,是发生竞争时机器报告冲突并重试的概率,以及需要为在途内存操作维护多少元数据。
核心要点
- 核心误区是假设 CPU真的为每次访问遵守内存模型
- 实际大多是「信任但验证」的乐观实现
- 只有在访问发生竞争(contention)时才回滚重试
- 强弱序的真正差异是冲突被报告并重试的概率
金句
它们承诺表现得像是遵守了内存模型,而「表现得像」与「确实如此」之间有天壤之别。
👍 0
👎 0
返回 Lobsters 首页