是什么定义了CPU的地址空间?

问题描述

我的困惑是基于这三个想法-

  1. 是2 ^(cpu上可用的所有地址引脚的数量)吗?

  2. 是2 ^(一个特定寄存器的大小)吗?

  3. 它是能够理解地址范围内所有地址的硬件电路吗?那是什么?

我不是在这里询问虚拟地址空间,也不知道它叫什么东西,也许它是包括ram在内的所有物理设备的物理地址空间。 此外,即使我得到正确的答案,我也想问一问,为什么我的cpu拥有2 ^ 39位(512GB)的内存地址空间和64KB + 3 I / O的内存空间。该信息以软件包的形式(用于集成了Lynx Point-m PCH的Intel核心i3-4005U)写在系统的intel文档中。

如果我问错了,欢迎您编辑我的问题。谢谢。

解决方法

CPU的物理地址空间的大小是设计人员任意选择的。高速缓存标签和TLB条目的宽度必须足够宽,因为高速缓存是经过物理标记的(包括大多数CPU(包括所有Intel)在内都是L1d),以及其他处理物理地址的内部事物。 (就像存储缓冲区一样,用于将加载地址与未完成的存储进行匹配。也用于将存储与运行中的代码地址进行匹配。)

所有Haswell客户端CPU都共享相同的核心微体系结构,因此,即使笔记本计算机芯片不需要那么多内核,某些单插槽非Xeon台式机也可能需要。 (我认为这是对的;通过将高速缓存标签的宽度更改1或2位来节省少量空间和/或功耗可能是合理的,但如果Intel这样做的话,则是IDK;我认为他们真的只希望对设计进行一次验证。) / p>

请记住,设备内存(包括VGA等PCIe卡或Xeon Phi计算卡)通常会映射到物理地址空间,以便CPU可以通过加载/存储(将虚拟页面指向物理地址空间的那些区域之后)。 PCIe使用固定宽度的链接并将地址作为消息“数据包”的一部分发送;不需要额外的引脚即可获得更多地址。

DDR3 DRAM控制器的每个通道上都有许多地址线,用于发送行/列地址;可能有可能不使用一个引脚。它与其他DDR版本非常相似。 Wikipedia在DDR4文章中提供了一些信号图:https://en.wikipedia.org/wiki/DDR4_SDRAM#Command_encoding