我不明白内存寻址中的一些东西

时间:2012-02-04 09:32:25

标签: memory-management x86 x86-16

我有一个非常简单(n00b)的问题。

  

20位外部地址总线提供1 MB物理地址空间(2 ^ 20   = 1,048,576)。(维基百科)

为什么1 MByte?

2^20 = 1,048,576 bit = 1Mbit = 128KByte not 1MB

我误解了一些事情。

3 个答案:

答案 0 :(得分:5)

如果您有20位,则最多可以解决2^20。这是您的范围,而不是位数。

即。如果你有8位,你的范围最多为255(无符号)而不是2 ^ 8位。

因此,对于20位,您可以寻址最多2 ^ 20个字节,即1MB

即。使用20位,您可以表示从0到2^20 = 1,048,576的地址。即你可以参考最多1MB的内存。

答案 1 :(得分:2)

1 << 20个地址,即1,048,576个字节可寻址。因此,1 MB的物理地址空间。

答案 2 :(得分:2)

因为存储器的最小可寻址单元(通常 - 某些架构具有小的可寻址存储器)是字节,而不是位。也就是说,每个地址都指一个字节,而不是一个字节。

为什么,你问?几乎不需要直接访问各个位 - 如果需要,您仍然可以加载周围的字节并使用位掩码和移位来获取该位。增加每个地址的位数使您可以使用相同的地址范围寻址更多内存。

请注意,严格来说,一个字节 不是8位,尽管它现在无处不在。但无论字节大小如何,您都要将位分组在一起以便能够处理更大量的数据。