朋友們買電腦玩玩遊戲或者工作往往面臨一個重要的選擇,是買1根16GB的記憶體呢,還是買兩根8GB的記憶體?甚至
有人推薦買4根4GB的記憶體。到底何去何從呢?
做出選擇的根本落腳點無非是效能能否提高,和是否將來有擴充套件性。我們今天就透過實際的例子從這兩方面來了解
一下。
雙通道和四通道
現在的CPU裡面都集成了記憶體控制器。過去的記憶體控制器只有個控制單元,每次只能操作一個
DIMM
後來增加了新的控制單元可以支援同時操作兩個DIMM,這就是我們通常說的Dual Channel(雙通道)
現在更有了Quad Channel,也就是四通道。在兩路伺服器上還有八通道。
通道多了,就可以同時訪問更多的記憶體,記憶體頻寬理論上雙通道可以翻翻,四通道可以達到四倍頻寬!而我們知
道,相對CPU和Cache而言,記憶體的延遲要高一個數量級,很多指令都是阻塞在等待記憶體完成。有了多通道,多內
核訪問記憶體也似乎可以各不干擾,太好了!
理論是好的,但現實使用的時候,卻沒有那麼美好。程式編譯出來要訪問的虛擬記憶體地址是連續的,是有區域性性
的。而我們的記憶體在BIOS初始化的時候物理記憶體也是連續分配的,例如我們有四根4G的DIMM,儘管我們啟動了
四通道,地址分配還是
0~4G => DIMM 0
4~8G => DIMM 1
8~12G => DIMM 2
12~16G => DIMM 3
儘管作業系統可以在虛擬地址到物理地址的轉換上動一下手腳,但程式訪問的區域性性卻沒有根本性的改變。一個例
子是我們程式只申請了1G記憶體,很可能這些記憶體被分配到了一個DIMM上,多通道根本沒有用上!
解決的辦法之一是物理記憶體分配的時候加入Interleave的支援:
也就是把記憶體打散了平均分配在多跟DIMM上,進行交錯,從根本上讓多通道利用起來,也叫做Channel Interleaving(和Rank interleaving不同)。這個是伺服器記憶體控制器上的技術,桌上型電腦也逐漸引入,切記在BIOS中開啟,不開啟多通道的特性就損失大半:
在臺式機上,多通道只有大型程式,在記憶體使用量很大的時候才能有所幫助,對小程式幫助不大。我們來看幾個例子。
單通道VS雙通道
見參考資料1影片,國外玩家用1根8G VS 2根4G雙通道的結果。考慮到很多人不能翻牆,我這裡截幾個片段來大致說明一下結果:
可以看出2根4G雙通道比8G單通道效能高出15%到50%!
單通道 VS 雙通道 VS 四通道
這時四通道有時佔一點優勢,有時差不多,而8G雙通道相對16G單通道來說完全沒有優勢!這和上面的那個結果似乎是相反的,這是為什麼呢?
答案就在記憶體的使用量上,如果記憶體佔用不到後面的DIMM上去,多餘的通道就不會產生多大的價值。
結論
適合自己的才是最好的。如果僅僅上上網,記憶體用量不大,多通道就沒有價值,反倒將來的擴充套件性就很重要,買根8G的記憶體就好。如果玩遊戲,可以考慮買兩根8G記憶體。不建議買4G組成四通道,這樣擴充套件性就完全喪失了。