4 GB 怎么会等于 32 位内存地址?

4 GB 怎么会等于 32 位内存地址?

请原谅我问出这个问题,太天真了。

4 GB 怎么会等于 32 位内存地址呢?如果我没记错的话,4GB * 1024 * 1024 * 1024 = 4,294,697,296 字节内存单元。那么,既然 1 字节 = 8 位,那么我们为什么不将其乘以 8 以将其转换为位呢?

答案1

因为逐位寻址内存没有任何实际意义。一次请求一个字节的内存比逐位请求要快得多,也更有效率。

CPU 处理数据的内部操作时间以纳秒为单位。选择内存地址、等待该地址的数据出现在总线上以及随后可用所需的时间长达微秒(慢了几个数量级)。

假设你需要 8 倍的延迟才能获得一个完整的字节可用的如果您使用位寻址,则会导致不合理的额外工作量和数据获取延迟。在等待数据位到达的过程中,您的程序实际上处于停滞状态。

通过使用更大的基本单位(字节),我们将数据访问时间缩短了不到一个数量级,并一次传输更多有用的数据。

这本来可能是选择使用字节进行内存寻址的最初原因。

为了简单起见,我们仍然使用字节寻址,它仍然是一个非常有用的小数据块,但现代内存现在以突发方式传输更大的数据块以保持性能,因为我们已经超越了传输单个字节“高效”的程度。

相关内容