![如果 32 位微处理器具有 24 位地址空间,为什么最大地址数(2^24)的答案以字节而不是位为单位给出?](https://linux22.com/image/1465105/%E5%A6%82%E6%9E%9C%2032%20%E4%BD%8D%E5%BE%AE%E5%A4%84%E7%90%86%E5%99%A8%E5%85%B7%E6%9C%89%2024%20%E4%BD%8D%E5%9C%B0%E5%9D%80%E7%A9%BA%E9%97%B4%EF%BC%8C%E4%B8%BA%E4%BB%80%E4%B9%88%E6%9C%80%E5%A4%A7%E5%9C%B0%E5%9D%80%E6%95%B0%EF%BC%882%5E24%EF%BC%89%E7%9A%84%E7%AD%94%E6%A1%88%E4%BB%A5%E5%AD%97%E8%8A%82%E8%80%8C%E4%B8%8D%E6%98%AF%E4%BD%8D%E4%B8%BA%E5%8D%95%E4%BD%8D%E7%BB%99%E5%87%BA%EF%BC%9F.png)
我正在做家庭作业,似乎我所有的同学和各种在线资源都说 2^24 位的简单计算结果是 ~16,000,000 字节而不是位。这是为什么?我的理解是答案应该是 ~16,000,000 位,这将转换为 ~2,000,000 字节,因为 1 字节是 8 位。
答案1
正如@DragonLord 所说,这是因为你不能地址单独的位;每个地址指向一个字节的开头,所有操作都使用至少一个字节为单位。
类似地,如果机器是字寻址的(就像过去的一些机器一样),那么它的内存大小也将以类似的方式表示:
PDP-8 的基本配置是主存储器有 4,096 个 12 位字
答案2
采用字节寻址而不是位寻址的另一个原因是,它还可以立即增加可存储和访问的数据量。它还可以提高整体内存带宽,因为数据总是以多个字节块的形式从内存中提取,而不是逐位提取。如果您知道执行任何有用操作所需的最小有用块是一个字节,那么一次访问一个位的内存效率很低。
即使在计算机拥有少量内存和低地址线数的时代,一次提取一个字节的能力也会提高性能,并且能够访问 16 兆字节意味着可以编写比只能访问 16 兆位(2 兆字节)内存时大得多的程序。