首页 > 解决方案 > 如何找出地址总线宽度有多宽?

问题描述

基本上,我找不到任何地方对此进行了彻底的解释,所以我想也许有人会有解释或我应该在哪里寻找答案的任何方向。

问题是:如果我有一个连接到 16384 位 RAM 的 CPU,数据总线宽度是 16 位,我应该如何找到地址总线的宽度?

或者从另一个角度来看:如果我有一个使用 10 位地址总线和 8 位数据总线连接到 RAM 的 CPU,我的 RAM 有多少位?

我搜索的第一个问题的答案只能得到 2^16 的答案,答案是 65535 ~ 64kB。如果这不正确,我很想听听解释。

标签: architecturecpurambus

解决方案


地址总线宽度决定了 CPU 可以访问多少个地址。它还决定了 RAM 的最大大小。

例如,如果你有一个宽度为 3 的地址总线,你可以2 ^ 3 = 8从内存中访问地址,它们是:

Address0 -> 000
Address1 -> 001
Address2 -> 010
Address3 -> 011
Address4 -> 100
Address5 -> 101
Address6 -> 110
Address7 -> 111

因此,如果您的地址总线宽度为 10,则可以访问2 ^ 10 = 1024地址,这相当于 1 KB 的 RAM 内存。

如果你有一个宽度为 32 的地址总线,你可以访问2 ^ 32 = 4294967296, 地址,大约 4 GB 的 RAM 内存。

这就是您不能在 32 位系统上安装超过 4 GB 内存的原因 - 因为无法寻址额外内存(寄存器具有固定的 32 位大小)。

现在对于您的问题,如果您有一个大小为 的 RAM 内存,16384大约为16KB,您需要一个宽度为 的地址总线log2(16384) = 14,以便对整个空间进行寻址。

您可以查看reddit 线程以获取更多详细信息。


推荐阅读