计算机中的什么决定了内存地址可容纳多少内存?

Tim*_*Tim 5 memory

在我的笔记中,我发现了以下来源不明的引述:

字节寻址的32 位计算机可以寻址 2^32 = 4,294,967,296 字节的内存,或 4 吉比字节 (GiB)。

具有 32 位地址总线的系统可以寻址 2^32 (4,294,967,296) 个内存位置。如果每个内存地址持有一个字节,则可寻址内存空间为 4 GB。

在计算机中确定内存地址拥有多少内存是什么,即计算机是字节寻址、字寻址还是 xxxx 寻址?是 RAM 本身、CPU 还是其他东西?

注意:我的问题与编程无关。我认为这与编程的角度不同,其中对象的地址持有的内存量取决于其数据类型(int、float 等)。

谢谢!

use*_*411 8

不涉及技术细节(无论如何我都会弄错),计算机硬件本身的设计和构建使每个地址都指向一个字节,或 2 个字节,或 4 个字节,或其他任何内容。操作系统在这件事上别无选择;它必须被写入以符合硬件设计。

大多数(可能是所有)今天运行的计算机都是字节寻址的,一个字节是 8 位。过去的设计有所不同。

地址中的位数决定了地址的数量。存储在地址中的位数由设计指定;将有一个引脚和一条线来携带数据。将这些数字相乘以获得可以存储的最大位数。

回答您的实际问题:是 RAM 本身 - 是的,CPU - 是的,还是其他 - 是的,主板和芯片组。所有这些都必须设计为协同工作,并且它们都必须就字节大小和寻址达成一致。


Law*_*ceC 6

在过去,处理器有引脚,其中一些用于与内存通信。

您有 A 引脚,用于指定地址,和 D 引脚,用于读取或写入数据。80 年代早期的典型 8 位处理器具有引脚 D0 到 D7 和 A0 到 A15。这意味着它可以寻址多达 2^16 个 8 位(D0 到 D7)字节的内存,或 64K。16 位 CPU 将有 16 条 D 线(例如m68k),而 32 位 CPU(如Pentium)将有32条 D 线。

有可能是 16 位架构和 8 位外部总线,或 32 位架构和 16 位外部总线 - 有多种因素决定 CPU 的“位”,数据宽度是只是其中之一。内部架构可能仍然不同。

查看引脚排列(尽管 CPU 不再有“引脚”,但电路板上有引脚,而 CPU 现在有“引脚”),例如 Core i7 之类的最新产品 - 情况发生了变化。我不确定像 DDR0_DQ[63] 这样的东西是什么意思 - 由于缓存、NUMA 和多核 CPU,今天 CPU 和内存之间的关系很复杂。

所以它是 CPU 架构和它使用的物理内存接口的组合决定了这一点。