3

昨天,我在思考为什么操作系统不能使用整个 64 位进行寻址?我发现了另一个有趣的事情。让我们以英特尔酷睿 2 双核处理器为例。

英特尔酷睿 2 双核处理器 E8000 和 E7000 系列的“4.2 字母信号参考” - 数据表我知道它有 36 条地址线和 64 条数据线。数据手册将地址线称为 A[35:3],将数据线称为 D[63:0]。

这究竟意味着什么?这是我从上面的理解(几乎没有未回答的问题):

  1. 因为,有 36 条地址线。总可寻址内存为 2^36=64GB,每个物理内存位置(字节)由 36 位数字寻址。
  2. 因为,没有提到 A[2:0]。这意味着 MMU(更具体的分页单元)在将虚拟地址转换为物理地址(在地址表的帮助下)之后,它只在地址线 A[35:3] 上放置了 33 个最高有效位。RAM 发送所有 8 个可能的字节(具有 3 个 LSB,A[2:0]),即。对于这 8 个字节范围内的任何请求。RAM 发送相同的 8 字节数据。正确的?我想这样做是为了提高效率。
  3. 接下来发生什么?我的意思是 MMU 需要 1 个字节的数据,但 RAM 发送了 8 个字节。它将如何处理?
  4. 自英特尔启用 PAE 以来,此地址总线宽度是否为 36 位?
  5. 我无法在新的处理器数据表(英特尔® 酷睿™ i7 处理器至尊版)中找到地址总线和数据总线宽度。:( 帮我!
4

2 回答 2

2

芯片的字节使能 (BE) 引脚指定 8 字节块中的哪些位实际上是相关的。

要访问地址 0x1,您将 A[35:3] 上的所有零设置为 BE[1](我可能将 BE 的引脚号和极性弄错了,但这个想法仍然是正确的)。

要访问字节 0x3:0x0,您将所有零放在 A[35:3] 上并设置 BE[3:0]。

这应该回答问题 1、2 和 3。

关于问题 4,实际上是 PAE 允许您使用 36 位地址。在后来的处理器中,同样可以通过 64 位模式分页来实现。

没办法 5...

于 2010-07-12T06:15:37.350 回答
0

大约 5:Core i7 架构使用 3 个(片上)内存控制器(每个通道一个控制器),每个通道的宽度为 64 位。

但是当然你不能在哪里使用 3*64 位,因为 SSE 单元与 128 位线连接到 L1 缓存(当然是两条 64 位 Chache 线)。

三个 Channel 只对同时快速预取不同地址有用。

但是在 GPR 上,你只能使用 64 位(因为它是 64 位架构)。

地址空间也应该是 36 位,因为如果你永远无法连接这么多内存,你需要其他位做什么。

于 2010-07-14T13:30:32.917 回答