【问题标题】:Memory limit for x86 microprocessorsx86 微处理器的内存限制
【发布时间】:2013-02-13 12:54:58
【问题描述】:

我最近从一个在线资源开始学习计算机体系结构课程。我从我拿起的一本书中读到,x86 处理器有 32 条地址线,可以在数据总线上一次读取 4 个字节的数据。现在我了解到 32 条地址线将可寻址内存限制为 40 亿个唯一地址。我难以理解的事实是,如果 CPU 可以在每个周期从这 40 亿个唯一地址中的每一个读取 4 个字节的数据,为什么 x86 系统上的 RAM 限制为 4 GB。不应该是 16 GB(4 乘以 4 GB)吗?有人可以帮我解决这个问题吗?另外,当我谈到 32 位或 64 位微处理器时,32/64 是指 CPU 上的地址线数还是数据线数? (对于我的第一个问题,我可能应该提到我假设的系统没有物理地址扩展。)

【问题讨论】:

  • 因为 4 个字节不是最小的可寻址单元。
  • @Mysticial 我不太明白你的意思。能详细点吗?
  • 好吧,如果我理解正确的话,即使处理器在每个指令周期从数据总线拉入 4 个字节,这 4 个字节中的每一个都属于内存中的 4 个不同地址。只是他们都被拉了进去,一口气。对吗?
  • 这是一个很好的答案stackoverflow.com/questions/2724449/…
  • 如果您的意思是“地址”,那么是的。这就是约定。

标签: x86 memory-model


【解决方案1】:

x86 微处理器是一个广泛的处理器类别,经过数十年的发展,从 8086 发展到今天的 64 位多核 CPU。 x86 处理器的优势之一是它们是backward compatible,这意味着该系列中最新的处理器可以理解 8086 的指令(它们必须在称为Real Mode 的特殊模式下运行)。 8086 有 16 位寄存器和一个 16 位总线到内存和 I/O,它是byte addressable,这意味着程序使用的地址是单个字节的地址。 8086 可以从内存中加载 1 或 2 个字节(称为一个字)。随着时间的推移,较新的 x86 处理器向地址线添加了更多位,并添加了虚拟内存,并添加了更大的words。因此,一个 32 位数据项被称为 double word,一个 64 位数据项被称为 quad word,然后 SSE 出现了,我们有了 128 位 octaword or double quadwordhere's a table of data sizes。较新的 x86 处理器可以访问任何这些大小的数据,事实上最新的有AVX instructions,它有 256 位向量寄存器。从程序的角度来看,寻址内存仍然是通过给出最低地址的字节地址来完成的。

您可以阅读有关 64 位计算的更多信息here。这是一个很好的总结:

无需进一步限定,64 位计算机体系结构通常具有 64 位宽的整数和寻址寄存器,允许直接支持 64 位数据类型和地址。但是,CPU 可能具有与寄存器不同大小的外部数据总线或地址总线,甚至更大(例如,32 位 Pentium 具有 64 位数据总线)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 2013-08-27
    • 2020-02-29
    相关资源
    最近更新 更多