cpu-architecture - 如果 2³² 位 = 40 亿位而不是字节,32 位如何寻址 4GB?

标签 cpu-architecture memory-address addressing

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

最佳答案

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

如果您使用 32 位来寻址每个 ,您可以寻址 232 位或 4Gb = 512MB。如果您的地址是 字节 像大多数当前的架构一样,它会给你 4GB。

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

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

关于cpu-architecture - 如果 2³² 位 = 40 亿位而不是字节,32 位如何寻址 4GB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25820886/

相关文章:

c++ - 如何获取kernel32.dll!BaseThreadStartThunk的内存地址?

assembly - 将基于索引模式转换为间接寻址模式(x86 汇编)

x86 - 什么存储器用于存储复位向量?

Java:直接 IntBuffer 的大小限制?

system - 架构和微架构

multiprocessing - 在多处理器系统中禁用中断的过程是什么?

operating-system - 什么是 "Logical CPU Core"

javascript - 如何找到 WebAssembly 缓冲区的地址并将其返回给 Javascript?

assembly - 为什么 Ice Lake 没有像 tremont 那样的 MOVDIRx?他们已经有更好的了吗?

c++ - 获取文字的地址,而不是 `constexpr`