【问题标题】:How does 32-bit address 4GB if 2³² bits = 4 Billion bits not Bytes?如果 2³² 位 = 40 亿位而不是字节,32 位如何寻址 4GB?
【发布时间】:2014-11-07 09:02:06
【问题描述】:

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

【问题讨论】:

  • 令人困惑的问题(可能有错字:23 应该是 32)。阅读有关计算机体系结构的更多信息。最常见的处理器是寻址字节,而不是位。
  • "2^32" 是(表示)一个数字没有隐含单位;这是任意添加的,是这里的核心混淆。试试别的……“2^32 甜瓜味冰淇淋”,​​好吃!
  • 40 亿个地址中的每一个实际上都寻址一个字节。如果要访问单个位,则需要读取整个字节,使用 AND/OR/XOR 执行一些bit twiddling,然后写回整个包含字节。

标签: cpu-architecture memory-address addressing


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-31
        • 2013-03-25
        • 1970-01-01
        • 2015-02-26
        • 1970-01-01
        • 1970-01-01
        • 2012-01-07
        相关资源
        最近更新 更多