32bit cpu: 能用多少内存?

32bit cpu: how much memory can it use?

现在我知道这个问题已经被问过好几次了,但我真的不知道一个 32 位处理器在理论上和实际上可以处理多少内存。 快速提醒一下,我来自土木工程背景,所以我仍在学习计算机科学;而且度量单位对我来说很重要,这实际上是我的问题:

现在我知道你可以通过 2^32(或 64)来计算 cpu 可以使用多少内存,在这种情况下你会得到 4.294.967.296 位。 现在我知道(或者我想我知道)内存以字节为单位,所以为了找出 cpu 可以使用多少字节的内存,我将 4.294.967.296/8 除以 536.870.912 字节。 然后除以 536.870.912/1024 得到 524.288 KB。 然后除以 524.288/1024 得到 512 兆字节。 然后除以 512/1024 得到 0.5 GB,这...不太好。

现在我注意到,如果你一开始不除以 8,你会得到 4 吉比特;所以我的问题是:ram 是以位还是字节为单位测量的。 如果是再见,那么 cpu 地址位和 ram 容量之间的关系是什么?

编辑:嘿,我设法理解了度量单位的工作原理。基本上你有 4.294.967.296 个地址,从 0x00000000 到 0xffffffff,每个地址代表 4 个字节的数据。然后除以 1024 得到 4.194.304 KB、4.096 MB 和 4 GB。抱歉拖了这么久,感谢大家的反馈。

32bit CPU 有 32 位地址寄存器,最多可以寻址 4GB 内存(字节而不是位)。但是也有段寄存器。每个段最多可以有 4GB 内存。 64K 段 * 4GB = 太字节。实际上这不能用任何 OS 来完成,例如Windows7不使用多段,最大4GB。

我曾经在我的机器上安装了 core2 duo Intel 处理器和 2 GB RAM,我安装了另一个 4 GB RAM,但 Windows 无法使用完整添加的 space,所有可用的 RAM 为 2.9 GB。 usable RAM with 32 bit processor

一个记忆是由一些可读写的项目组成的,称为个词
每个项目都有一个唯一的编号,称为 地址

CPU有固定数量的bits/pins表示一个地址
一位可以表示地址0和1。
两位最多代表00,01,10,11.
三位代表......你明白了。

每一位都有两个值,每一位都独立于其他位,所以每增加一位,值的数量就会翻倍(只需取所有旧值并在它们前面放一个 0,这样做再次使用 1,你得到的值是旧值的两倍)。
所以 n 位是 2n 可能的值,2n 可能的 words

如果 CPU 最多有这些位数来表示地址(罪魁祸首:寄存器的大小不必与地址的位数匹配。32 位 CPU 例如可以有 36 位地址)它最多可以访问那么多的内存字数。

一个内存字可以是任何非零大小。从字面上看,任何大小。 包括1位或14位或8位。
标记上最流行的体系结构 x86 使用 1 字节的字(因此使用 32 位地址它可以访问 232 = 4GiB)但这绝不是一般规则.