首页 > 解决方案 > “64位操作系统”、“基于x64的处理器”与字长有什么关系?

问题描述

我想知道,64 位操作系统和基于 x64 的处理器是否意味着字长(即处理器和物理内存之间的内存传输大小)是 64 位?如果操作系统是 32 位和 x64 处理器怎么办?那么基于 x86 的处理器呢?这两个规范(XX 位操作系统和基于 xXX 的处理器)与硬件中的实际字长有何关系?

标签: operating-system64-bitx86-64cpu-architecture32-bit

解决方案


不,不是那个意思。现代 x86 CPU 具有 64 字节的缓存线,并且可以以任何 2 的幂宽度访问缓存,从 1 字节到 32 字节 SIMD 向量,或者在 AVX512 的 CPU 中为 64 字节。另请参阅每个程序员应该了解的关于内存的知识?

“字长”对于 x86 来说并不是一个真正有意义的术语;它根本不是面向单词的 ISA。

在英特尔文档中,“字”是 16 位,只是为了保持与可追溯到 8086 的文档的一致性。硬件中的总线和寄存器宽度与此无关。


x86-64 在长模式(64 位模式)下运行时具有 64 位整数寄存器。并且支持64位地址。(实际上是 48 位虚拟地址,由于页表格式,取决于硬件,最多 52 位物理地址。 为什么在 64 位中虚拟地址比物理地址(52 位长)短 4 位(48 位长) ? )

自 32 位 Pentium 以来,x86 CPU 已经能够进行 64 位数据传输。 为什么在 x86 上对自然对齐的变量进行整数赋值是原子的?


推荐阅读