operating-system - “64位操作系统”、“基于x64的处理器”与字长有什么关系?
问题描述
我想知道,64 位操作系统和基于 x64 的处理器是否意味着字长(即处理器和物理内存之间的内存传输大小)是 64 位?如果操作系统是 32 位和 x64 处理器怎么办?那么基于 x86 的处理器呢?这两个规范(XX 位操作系统和基于 xXX 的处理器)与硬件中的实际字长有何关系?
解决方案
不,不是那个意思。现代 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 上对自然对齐的变量进行整数赋值是原子的?
推荐阅读
- python - 安装包时出现 Conda 和 Anaconda 错误 (pythonOCC)
- javascript - 任何人都可以解释如何在这个功能组件中使用目标属性
- java - 在适配器的多个 TextView 中显示字符串
- python - 为特定国家生成随机坐标
- javascript - 如何使用自定义字母表生成 GUID,其行为类似于 MD5 哈希(在 JavaScript 中)?
- primefaces - primefaces 8升级后输入数字组件不起作用
- php - 选择输入 TYPO3 v9 Symfony 命令
- flask-migrate - 如何使用烧瓶迁移创建 mssql VIEW 模型?
- linux - 如何在 Linux 系统中仅列出目录内的所有软链接
- laravel - Laravel 无法验证创建的用户登录