1

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

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

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

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

我这里不是问虚拟地址空间,不知道叫什么,可能是包括ram在内的所有物理设备的物理地址空间。另外即使我得到一个正确的答案我也想问一下,为什么我的cpu有2^39位(512GB)的内存地址空间和64KB+3的I/O内存空间。此信息写在我的系统的 intel 文档中(intel core i3-4005U with an Integrated lynx point-m PCH)。

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

4

1 回答 1

2

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

所有 Haswell 客户端 CPU 共享相同的核心微架构,因此即使笔记本电脑芯片不需要那么多,一些单插槽非至强台式机也可能需要。(我认为这是真的;通过将缓存标签宽度更改 1 或 2 位来节省少量空间和/或功率可能是合理的,但如果英特尔这样做,IDK ;我认为他们真的只想验证设计一次。)

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

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

于 2020-11-05T10:54:50.663 回答