內存運行頻率是由誰決定的?
重金買來的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