7

本质上,4Gb 是如何变成 4GB 的?如果内存正在寻址Bytes,那么可能性不应该是 2 (32/8)吗?

4

3 回答 3

8

这取决于您如何处理数据。

如果使用 32 位来寻址每个,则可以寻址 2个 32位或 4Gb = 512MB。如果您像大多数当前架构一样寻址字节,它将为您提供 4GB。

但是,如果您寻址更大的块,您将需要更少的位来寻址 4GB。例如,如果您寻址每个 512 字节的块(2 个9字节),您可以使用 23 位寻址 4GB。FAT16使用 16 位来寻址(最大)64KB 簇,因此可以寻址最大 4GB 卷。Java Compressed Oops中也使用了相同的方法,您可以使用 32 位引用寻址 32GB 内存。

一些较旧的架构甚至使用字可寻址存储器而不是像现在大多数那样使用字节。具有大于八位字节的最小可寻址单元的现代架构主要存在于 DSP 中。还有一些具有位寻址内存的架构,例如 Intel 8051

于 2014-09-13T07:33:16.693 回答
3

大多数现代计算机都是字节可寻址的,每个地址标识一个 8 位字节的存储空间。太大而无法存储在单个字节中的数据可能会驻留在多个字节中,占用一系列连续的地址。

存在字可寻址计算机,其中最小的可寻址存储单元正是处理器的字。例如,Data General Nova 小型机,德州仪器 TMS9900 和 National Semiconductor IMP-16 微型计算机使用 16 位字,还有许多 36 位大型机(例如 PDP-10)使用 18 位字寻址,不是字节寻址,提供 2个 18个 36 位字的地址空间,大约 1 兆字节的存储空间。

内存寻址的效率取决于用于地址的总线的位大小——使用的位越多,计算机可用的地址就越多。例如,具有 20 位地址总线(例如 Intel 8086)的 8 位字节可寻址机器可以寻址 2 20 (1,048,576) 个内存位置,或 1 MiB 内存,而 32 位总线(例如 Intel 80386 ) 地址 2 32 (4,294,967,296) 个位置,或 4 GiB 地址空间。

于 2014-09-13T08:10:59.783 回答
1

芯片上的电气接口由(非常简化的)地址线(例如 32 条地址线)和数据线(例如 8 根用于从 RAM 读取数据的线,8 根用于向 RAM 写入数据的线)组成. 在这种情况下,您有 2 32 个8 位字,因此您可以寻址 2 32 *8 位数据。

如果您有一个字宽为 16 位的 RAM(比 8 位更可能),您将能够使用相同数量的地址位寻址两倍的 RAM。在现代系统上,您不能真正“读取一个字节”,而是 CPU 从 RAM 中获取整个高速缓存行,然后只返回您要求的字节。

于 2014-09-13T07:45:29.087 回答