13

对 word size 的定义感到困惑。我读到处理器的字长是它的数据总线宽度。就像一个 8 位处理器有一个 8 位宽的数据总线。我最近读到,虚拟地址空间的最大大小由字长决定,即如果字长为 n 位,则最大虚拟地址空间为 2^n -1。但我一直认为最大虚拟地址空间是由地址总线宽度决定的,即一个 n 位宽的地址总线最多可以寻址 2^n 个字节。那么,什么是真的?

此外,这是否与指针有关,因为 n 位数据总线只能承载 n 位地址。因此,最多可以通过指针访问 2^n 个字节。

4

2 回答 2

14

我首先要说,你的一些困惑可能来自几十年前事情更简单的事实,而你对术语的理解是基于这些更简单的机器。

我对字长的定义感到困惑。我读到处理器的字长是它的数据总线宽度。就像一个 8 位处理器有一个 8 位宽的数据总线。

当然不。数据总线与此完全无关。处理器的字长(从来不是一个精确的术语)最好松散地定义为算术的最大自然大小,通常是机器中寄存器的大小。这通常是数据路径的宽度(与数据总线明显不同)。数据路径就是 ALU 的宽度。字长通常与指针大小相同。

我最近读到虚拟地址空间的最大大小由字长决定,即如果字长为 n 位,则最大虚拟地址空间为 2^n -1。但我一直认为最大虚拟地址空间是由地址总线宽度决定的,即一个 n 位宽的地址总线最多可以寻址 2^n 个字节。那么,什么是真的?

不会。虚拟地址空间的大小仅由页表(和 TLB)的虚拟页号中的位数决定。在当前基于 amd64 的机器上,只有 48 位的虚拟地址可用。高 16 位是第 47 位的符号扩展。在当前的 amd64 机器上,物理地址大小为 52 位。这些物理地址位是在总线上发送的。尽管即使是“公共汽车”一词也确实不正确。几乎所有的链接都是点对点的(DDRx DRAM 是一个例外)并且使用分组格式(报头 + 有效负载)而不是地址线和数据线。

此外,这是否与指针有关,因为 n 位数据总线只能承载 n 位地址。因此,最多可以通过指针访问 2^n 个字节。

许多(几乎所有偶数)具有单独地址总线的机器使用比地址位数更窄的地址总线。这些位被简单地分割并使用多个时钟周期通过总线发送。DDRx DRAM 是另一个例子。

于 2012-07-13T17:20:10.597 回答
3

虚拟地址空间的最大大小由字长决定

这曾经是正确的,但某些扩展是为了绕过这个限制(即物理地址扩展,或 PAE),它启用了诸如 36 位内存地址之类的东西。

除此之外,维基百科将一个词定义为:

特定处理器设计使用的自然数据单元

在几乎所有情况下,这在 32 位系统上是 32 位,在 64 位系统上是 64 位。您仍然会经常在 64 位系统上找到对 32 位字的引用(部分原因是 amd64 是 intel x86 的扩展而不是修订版)。此外,作为现代计算早期的遗留物,您经常会看到 32 位量称为 DWORD 或双字,而 64 位量称为 QWORD 或四字。

这是人们一直在争论的事情。我个人使用 word size == bus width 的定义。

于 2012-07-13T14:37:06.493 回答