首页 > 后端开发 > C++ > 现代 x86 硬件真的不能存储单个字节吗?

现代 x86 硬件真的不能存储单个字节吗?

Susan Sarandon
发布: 2024-12-31 07:42:14
原创
269 人浏览过

Can Modern x86 Hardware Really Not Store a Single Byte?

现代 x86 硬件无法存储单个字节吗?

与并发模型中普遍持有的信念相反,Stroustrup 声称现代硬件无法存储或加载任何比单词小的东西。然而,现代 x86 处理器允许存储和操作单个字节。这种明显的矛盾促使人们对 Stroustrup 的陈述及其含义进行检查。

Stroustrup 的论证及其解释

Stroustrup 认为,如果没有明确定义的内存模型,并发线程可能会干扰彼此的字节操作操作,可能会导致错误的结果。此论点假设硬件缺乏对原子字节存储的显式支持,并可能导致相邻字节的无意修改。

对 Stroustrup 声明的更细致的解释是,它可能适用于具有特定内部实现的硬件。 CPU 可以使用读取-修改-写入周期来操作高速缓存行内的数据,甚至对于字节大小的操作也是如此。然而,这些内部操作对于程序员来说是透明的,不会影响操作的外部可见性。字节存储保持原子性,不会损坏缓存行中的相邻字节。

性能影响

虽然没有原子字节存储的假设 ISA 确实可能存在,但所有现代 ISA(包括 x86)都提供字节- 大小的加载和存储指令。这些指令在架构上定义为保留相邻字节的完整性,确保正确的程序执行。此外,在具有 L1D 缓存的现代 CPU 上,字节和字的处理在很大程度上相似,因为两者都需要缓存行提取和写回。

结论

Stroustrup 的声明,虽然可能适用于假设的或过时的硬件设计,不能准确反映现代 x86 处理器的行为。这些处理器提供高效的原子字节存储,确保依赖此类操作的软件的正确性。因此,在现代硬件编程的背景下,无需担心字节操作会导致内存损坏。

以上是现代 x86 硬件真的不能存储单个字节吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板