需要对处理器的地址线进行更多说明

时间:2010-07-11 19:20:03

标签: assembly x86 computer-architecture

昨天,当我在思考Why can’t OS use entire 64-bits for addressing?时,我发现了另一个有趣的事情。让我们以英特尔酷睿2双核处理器为例。

来自Intel Core 2 Duo Processor E8000 and E7000 Series - Datasheet的“4.2字母信号参考”我发现它有36条地址线& 64条数据线。数据表将地址行称为A [35:3],将数据行称为D [63:0]。

这究竟是什么意思?这是我从上面的理解(几个未解答的问题):

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

2 个答案:

答案 0 :(得分: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 ...

答案 1 :(得分:0)

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

当然你不能使用3 * 64位,因为SSE单元用128位线连接到L1缓存(当然是两个64位Chache线)

这三个频道仅适用于同时快速预取不同的地址。

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

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