字大小和数据总线

Avi*_*mar 8 computer-architecture

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

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

Nat*_*ert 9

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

我对字大小的定义感到困惑.我读到处理器的字大小是它的数据总线宽度.像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就是另一个例子.