现代 x86 硬件不能将单个字节存储到内存中吗?
Stroustrup 在他的书中的陈述指的是假设硬件的潜在行为,而无需明确定义的内存模型。他建议此类硬件可能会实现具有非原子更新的字节存储,从而可能影响相邻字节。
实际的现代硬件行为
但是,现代硬件,包括 x86,其行为方式与 Stroustrup 描述的方式不同:
历史背景
Stroustrup 的声明可能基于早期 Alpha AXP 处理器的行为,该处理器最初不支持字节加载/存储指令。然而,更高版本的 Alpha 和所有现代 CPU 都支持安全高效的字节存储。
硬件实现
现代 CPU 通常使用存储内存段的缓存。在缓存系统中:
异常
虽然现代 CPU 提供原子字节存储,但在某些情况下可能会出现异常:
结论
在实践中,现代硬件支持原子字节存储,使得 Stroustrup 对潜在硬件行为的描述与实际系统不太相关。 C 编译器提供的内存模型保证依赖于现代硬件的可靠行为来确保线程安全。
以上是现代 x86 CPU 真的不能自动地将单个字节存储到内存中吗?的详细内容。更多信息请关注PHP中文网其他相关文章!