如何使用时钟频率高于 MMU 支持的 RAM 模块?

如何使用时钟频率高于 MMU 支持的 RAM 模块?

我记得很多年前,英特尔终于将内存管理单元从北桥移到了较新的奔腾和酷睿架构中的处理器本身。当我组装一台较早的 PC 时,我给英特尔打电话询问我应该使用哪种内存。代表向我解释说,内存的最大数据速率受处理器内部的内存管理单元限制(必须是 1333 Mhz 或类似的值)。

这很有道理,让我确信,如果没有一些硬件或电压黑客攻击导致严重不稳定,就不可能超过 CPU 指定的最大 RAM 速度。现在,当我浏览类似pcpartpicker人们展示他们最新的计算机配置时,几乎每个人似乎都在对他们的 RAM 进行超频。

我不明白的是,如果硅片被设计为以一定的数据速率工作,它是如何设法同步 RAM IO 的。我在网上查阅了许多关于内存超频的博客文章和教程。它们都充斥着一页又一页的轶事和观点。它们都没有涉及处理器中 DRAM 和 MMU 之间的通信协议的技术细节,以及改变 DRAM 的位时钟速率究竟会对其产生怎样的影响。

所以我想问一下,内存超频的电子原理是什么?它究竟是如何工作的?如何使用工作时钟频率高于 MMU 支持的时钟频率的 RAM 模块?

答案1

这似乎是一个超大规模集成(VLSI)设计问题。

当英特尔设计内存控制器的逻辑时,他们会为软件工具提供时序约束或逻辑速度的下限。这些工具会生成满足时序要求的电路和布局最坏的情况Synopsis Design Compiler 是一种常用的工具,可以完成这一任务。这些工具将代码转换为晶体管逻辑(综合),将晶体管布置在理论芯片上(放置),并将晶体管连接在一起(布线)。完成这些任务后,该工具将通过运行静态时序分析来检查其设计的“良好”程度。它将测量电路的每个部分将其输入的变化传播到其输出的变化所需的时间。这必须比时钟周期快,否则当前周期的计算将无法在下一个周期开始之前完成。当逻辑太慢时,处理器会通过将不正确/不完整的结果从一个时钟周期保存到下一个时钟周期而迅速损坏自身。静态分析可确保这种情况不会发生。它将为每个电路提出最坏的情况,并在时序约束不满足时强制重新设计。当英特尔表示内存控制器的最大速度为 1333Mhz 时,他们的意思是内存控制器将至少以这个频率运行,这是有保证的。

超频之所以有效,是因为我们改变了静态分析计算中的因素。在某种程度上,我们可以通过加快时钟速度而不改变任何因素来实现超频。我们正在利用任何可用的时间裕度:开销、误差幅度,以及针对已经比时钟周期快得多的电路部分。如果我们幸运的话,我们的工作量永远不会遇到“最坏情况”。仅仅通过提高时钟速度,我们无法走得太远。当您设置 XMP 配置文件时,您可能会注意到,内存控制器的电压也会增加。这将改变电路中逻辑的性能。更高的电压会通过推动更多电流通过电路中的任何电阻来减少晶体管改变状态所需的时间。通过增加电压,我们可以支持更快的内存。这通常适用于比英特尔指定的所谓“最大值”更快的几层内存。

对于内存而言,主板也非常重要。如果您查看内存插槽附近的主板,您会注意到所有电线都是卷曲的。这是因为电线的长度必须相同。如果电线长度不同,则每个时钟周期每根电线上的数据会混淆。DIMM 或内存控制器会从相邻的时钟周期获取位。如果您以 DRR4 3800Mhz 运行内存,则电线上传输的脉冲仅相隔 4 厘米。这就是为什么检查主板制造商的最大内存频率也很重要的原因。电线长度的公差必须非常严格,以支持极高的内存速度。

答案2

关于术语的一点说明,“MMU”一词通常是指系统中处理从虚拟地址到“物理”地址映射的部分。在现代系统中,这通常与 CPU 核心紧密耦合,而在多核处理器中,每个核心都有一个单独的 MMU。实际上与内存芯片/模块通信的部分称为“内存控制器”。

现代计算机设计有多个时钟和电源域,并具有在这些时钟域之间传递信号的特殊逻辑。这是为了进行电源管理,以及允许以不同的速度销售同一处理器设计的不同版本。内存控制器可能会有自己的时钟域,以将内存总线的速度与处理器内部组件的速度分离。

如果以更高的速度运行内存,则 CPU 的内存控制器部分将超频。与系统的任何部分一样,内存控制器的最大可实现速度并不是某个严格定义的数字,而是取决于一系列因素,包括 PCB 走线长度、总线负载(使用一“级”内存芯片比使用四级内存芯片运行速度更快)、工作电压、工作温度等。英特尔在进行设计和测试时必须保守,因为他们需要高产量、高可靠性的产品。

在大多数情况下,你可以将速度提高一点,特别是如果你稍微增加电压(增加更多电压会使逻辑更快),但不能保证可靠运行。如果你遇到可靠性问题,那么英特尔只会告诉你将时钟频率调低到支持的水平。

相关内容