内存运行频率是由谁决定的?

存储 存储软件
重金买来的DDR4 4700内存为什么只能运行在2400Mhz?为什么CPU标称最大支持2400,却有很多主板号称支持高达3300的内存,难道内存控制器不是在CPU里面吗?如果CPU最大支持2400, 主板号称支持3300,我买的内存条号称支持4700,最终内存工作频率是多少呢?

重金买来的DDR4 4700内存为什么只能运行在2400Mhz?为什么CPU标称***支持2400,却有很多主板号称支持高达3300的内存,难道内存控制器不是在CPU里面吗?如果CPU***支持2400, 主板号称支持3300,我买的内存条号称支持4700,最终内存工作频率是多少呢?

这么多令人困扰但又十分有趣的问题!我相信大多数电脑玩家,包括很多老鸟都不能很笃定的回答这些个层层深入的问题。在假装镇定的胡乱回答后如果被追问为什么,好像只有尿遁一条路了。

作为最合适回答这个问题的BIOS/UEFI从业者,我们需要带领大家了解Intel/AMD和硬件提供商(包括主板和内存厂商)在产业链中扮演的角色。知道了这些,自然围绕内存的小伙伴们谁主导谁的问题就会水落石出了。

我的内存谁做主?

众所周知,现在内存控制器都被整合在CPU内部:

 

通过查询Intel官网(Intel® Product Specifications),我们就会发现即使***的八代i7 8650 CPU,它所标称的支持主频也不高(8700稍高些):

 

而市场上的很多主板却号称支持更高的内存频率:

 

而内存标称的支持频率更高:

 

将这个支持4000的内存,插在支持3200的主板上,配上仅仅***2400的i7 CPU,***到底内存工作在哪个频率呢?要回答这个看似矛盾的问题,我们的要从围绕内存的硬件厂商合作关系说起。

业态

一款CPU标称支持的内存频率是由硬件和软件两方面所决定的。硬件的限制自不待言,软件在这里却扮演更重要的角色。这里的软件就是指BIOS里面的内存初始化参考代码(MRC,Memory Reference Code)。它一般由CPU厂商(Intel/AMD)开发,并经过大量测试。MRC在运行的时候会读取内存条上SPD(serial presence detect)的信息:

 

内存运行频率是由谁决定的?

 

内存条上的SPD rom

SPD的读取方式是通过SMBus,一种I2C总线的扩展。SMbus的地址在很多Intel的平台上是A0、A2、A4和A6(四根DIMM的情况)。详细SMBus的内容我们今后再单独介绍,本文就不再赘述了。

SPD里面记录了DIMM的厂商的ID,型号等等信息,这就是为什么MRC会知道内存是哪家厂商生产的。MRC后来会通过BIOS的其他部分将该信息通过SMBIOS表信息告诉操作系统,这样大家才能在系统信息里面看到内存型号。不法经销商有时会通过刷新SPD内容欺骗MRC,进而欺骗消费者。

SPD里面还记录了内存重要的时序信息。关于时序等信息,请参考我的知乎文章和参考资料1(注意1中缺乏DDR4的内容)。我们也可以用Rw-everything软件来查看SPD的内容。下面就是我的台式机DIMM0 (A0)的SPD信息:

 

从中除了看到我还在用DDR3(没钱升级)这个屌丝信息之外,还有内存型号和rank等等信息。重要的是SPD包含几组时序信息,包括该DIMM在标准电压下支持的各个频率对应的***时序要求。

MRC会根据该信息,结合CPU当时对各个频率的支持程度(会逐渐提高),进行内存的Training,***得到一个能保证稳定工作的***频率。这就是最终内存工作频率。CPU厂商在发布MRC的时候,只会保证支持该CPU确定支持的标称***频率,在第八代i7那个例子中,就是2400了。于此同时还会公布一个兼容性列表,指导相关小伙伴。

看起来似乎没有主板厂商什么事了,其实不尽然。CPU厂商会给主板等厂商一个硬件设计参考文档,里面详细规定了各种线路的长度,距离等等信息。这样才能保证这种高速信号的信号完整性,这其中就包括了内存的总线。主板厂商必须遵循该文档,作为***要求,才能支持CPU标称的内存频率,如果要做的更好,必须优化线路,来保证更高频率的信号完整性。

于此同时,一些主板厂商还会与BIOS提供商一起工作,增加标准电压之外的选项,还可以单独调节各种时序,进行超频。在我们主板那个例子中,3300频率以上该主板也能够支持。

综合来看,CPU标称的是MRC承诺支持的***频率,主板标称该主板可以达到的***频率,而内存列出来该内存可以工作的所有频率。在我们这个例子中,如果用户不改动主板的BIOS选项,结果就是这三个值得最小那个,即2400,是最终工作频率。

那么我们买这么好的主板,这么贵的内存是不是一种浪费呢?小伙伴没就不能更快的吃鸡了吗?当然不是了。

超频和XMP

我们从前文可以判断出来,2400这个频率是最保守的频率,该频率经过CPU厂商、内存厂商和主板厂商三方反复验证,一定可以稳定工作,不会因为内存工作不稳定而死机或者丢失数据。对于2400之上的内存,CPU厂商并不做保证。

如果主板标称超过CPU***支持频率,主板往往会提供超频选项,供激进的玩家挑战更快的内存速度。但玩家在挑战更高频率的时候,往往不得不在BIOS里面反复调整各种时序,并进行烤机来验证稳定性。不经过严格烤机的玩家经历了:更快->兴奋->更更快->更兴奋->更更更快->立刻死机->回退->偶尔死机->放弃,后往往对超频失去兴趣。而长时间的烤机也十分枯燥。

Intel感受到了这种市场的需求,在2007年9月推出XMP内存认证标准。Intel测试后会对内存厂商的XMP信息予以认证,并公布在官方网站上。解决了大部分超频的烦恼。

其他

超频对游戏的体验影响大吗?这是另一有趣的问题,我在参考资料2中列出了一篇有意思的文章,有兴趣的读者可以参考一二。

结论

相信通过本文,读者已经十分清楚围绕内存的各个部件的关系。授人以鱼不如授人以渔,希望通过这篇/这些篇文章,让大家不但知其然还知其所以然。***大家可以一起思考几个有趣的问题:

1. 为什么只有X86的CPU有这么麻烦的MRC,ARM体系的内存初始化却非常的简单?

2. 为什么用同样的CPU,有的主板支持DDR3,有的主板却支持DDR4?

参考资料:

[1]: Serial presence detect

[2]: Gaming on DDR4 Memory: 2133 vs 2666/3200MHz & 8GB vs 16GB

责任编辑:武晓燕 来源: 今日头条
相关推荐

2018-09-18 10:19:11

存储硬件内存

2019-09-27 10:02:21

SREDevOps运维

2009-05-07 13:02:08

Nehalemintel双核

2015-01-16 13:40:06

2015-12-28 16:38:54

机械革命

2018-02-10 08:59:19

物联网IoT硬件

2018-05-11 15:13:59

2019-07-04 15:57:16

内存频率DDR4

2017-09-10 22:45:16

物联网云计算阿里巴巴

2024-09-09 09:41:03

内存溢出golang开发者

2012-09-27 11:40:07

IntelWin8微软

2021-08-19 11:04:32

互联网技术网络加速网络协议

2022-01-20 16:50:50

手机智能手机屏幕

2010-03-09 09:10:47

IBM eX5VMware

2010-06-04 15:30:44

Linux 查看内存

2019-02-28 14:04:28

内存固定分配存储

2020-07-28 08:10:33

Linux内存虚拟

2019-07-10 05:08:05

CPU内存分页管理

2018-12-06 12:58:50

CPU内存模块

2022-03-15 13:09:05

JavaScript编程语言代码
点赞
收藏

51CTO技术栈公众号