内存地址通常以位为单位有多长

问题描述 投票:0回答:2

我对老师讲的很多术语感到困惑,例如

word
byte addressing
memory location

我的印象是对于

32-bit processor
来说, 它最多可以寻址
2^32 bits
,即
4.29 X 10^9 bits (NOT BYTES)

我现在的想法是:

memory
就像每个
array
中的
buckets
1 byte length

当我们说

byte addressing
(我猜这是最常见的)时,每个
char
都是
1 byte
并且从第一个存储桶中检索(例如)。 对于
int
,下一个
4 bytes
放在
little-endian ordering
中以计算
Integer
值。

所以每个记忆,我把它看成,

8 bits
1 byte
,最多可以放弃
2^8 locations
,这远远小于
cpu
所能解决的。

我这里有一些非常基本的误解,如果一些专家可以用简单的术语解释一下,未来的CS专业学生可以永远进入。

我已经阅读了各种页面,包括on word,这里的

unit of address resolution
被给出为
8b
代表
ARM
,这让我更加困惑。

memory byte cpu-word cpu-architecture processor
2个回答
28
投票

(对于典型的 32 位处理器,如问题中所述)- 处理器使用 32 位来存储地址。使用 32 位,您可以存储 2^32 个不同的数字,范围从 0 到 2^32 - 1。“字节寻址”意味着内存中的每个字节都是可单独寻址的,即有一个地址 x 指向该特定的地址字节。由于可以将 2^32 个不同的数字放入 32 位地址中,因此我们最多可以寻址 2^32 字节,即 4 GB。

听起来关键的误解是“字节寻址”的含义。这仅意味着每个单独的字节都有自己的地址。地址本身仍然由多个字节组成(在本例中为 4 个字节,因为四个 8 位字节放在一起并解释为单个 32 位数字)。

我的印象是,对于 32 位处理器,它最多可以寻址 2^32 位,即 4.29 X 10^9 位(不是字节)。

通常情况并非如此——位级寻址非常罕见。字节寻址更为常见。不过,您可以设计出以这种方式工作的CPU。在这种情况下,正如您所说,您最多可以寻址 2^32 位 = 2^29 字节(512 MiB)。


-1
投票

对于一位,您将有 0 或 1,对于两位,您将有 00、01、10、11。对于 8 位,您将有 2^8,即 256 个地址值。地址和数据是单独的术语。地址是位置,数据是该位置中的内容。数据宽度(内容)是您可以在一个存储单元地址中存储多少位。(就像一间有卧室的公寓一样 - 每栋公寓在建筑物中有两间卧室)而数据深度(地址)是您将拥有多少个地址(在一栋建筑中,您将拥有#1 至#1400 等多少套公寓)。 CPU 寄存器中的一位可以引用内存中的单个字节,就像单元号中的一个数字可以引用一个单元一样。 SIMM 模块 RAM 具有 32 位数据宽度,而 DIMM 模块具有 64 位数据宽度。意思是在 DIMM 的一个内存地址中,存储 64 位数据。两条线可以复用多少个地址(两位处理),可以制作 4 个地址。 (如果是 DIMM 模块,每个地址可以容纳 64 位)。 32位处理方式,32条线,2^32地址选项。尽管如此,64 位处理具有 64 位寄存器和 64 位内部总线(线路),http://www.tech-faq.com/address-bus.html,地址总线最大为 44 位。表示 Intel Super Server CPU Itanium 2 可以实现 2^44 最大寻址。

© www.soinside.com 2019 - 2024. All rights reserved.