內存控制器

內存控制器

內存控制器是計算機系統內部控制內存並且通過內存控制器使內存與CPU之間交換數據的重要組成部分。內存控制器決定了計算機系統所能使用的最大內存容量、內存BANK數、內存類型和速度、內存顆粒數據深度和數據寬度等等重要參數,也就是說決定了計算機系統的內存性能,從而也對計算機系統的整體性能產生較大影響。

分類


隨著計算機技術發展,內存控制器分為傳統型和整合型兩種。

傳統型

傳統計算機系統其內存控制器位於主板晶元組北橋晶元內部,CPU要與內存進行數據交換,需要經過“CPU--北橋--內存--北橋--CPU”5個步驟,在該模式下數據經由多級傳輸,數據延遲顯然比較大從而影響計算機系統整體性能;

整合型

集成內存控制器,就是在CPU的基板上內置一個內存控制器,先說說沒有內存控制器時系統是如何工作的。26個數據A~Z,要傳送到CPU,這時候CPU就向北橋發出指令(因為內存控制器是集成在北橋上,所以說要經過北橋),內存通過內存控制器接受到了指令,這個指令就是把內存上b單元的A~Z數據傳送到CPU,內存這個時候開始取數據,也就是平常所說的定址。當內存找到了這個數據,而這26個數據每個數據為500MB,所有數據總和就約為12GB,假設內存為雙通道R2 800,數據傳輸率就為800MHZ乘以128BIT除以8比特每位元組=12GB每秒,通過分析,認為只需一秒就能傳送到CPU,此時的數據在一秒的時間內只傳送到了北橋,內存控制器在北橋,在北橋的數據如何傳送到CPU呢,這就要通過FSB前端匯流排了,假設FSB的頻率為800MHZ,那麼數據傳輸率就為800MHZ乘以64BIT除以8比特每秒=6.4GB每秒,從北橋到CPU要2秒,所以數據傳送到CPU的總時間為3秒,接下來再來看看CPU集成內存控制器的時候系統是如何工作的;數據從內存傳輸到控制器后,同樣為1秒,所不同的是這個時候不用再通過慢吞吞的前端匯流排了,CPU直接從內存控制器讀取數據就行了,因為內存控制器在CPU的門口,打個比方,一件東西在你門口的時候,大家就可以直接拿了,就是這個原理,算了一下,集成內存控制器的CPU讀取12GB的數據是才用了1秒的時間,所以大大節省了運算時間,也充分發揮了CPU的性能。
最後總結一下:CPU沒有內存控制器時,數據以內存控制器---北橋----CPU的方式傳輸;有內存控制器時,數據以內存控制器------CPU的方式傳輸,一步到位。

工作原理


CPU內部整合內存控制器的優點,就是可以有效控制內存控制器工作在與CPU核心同樣的頻率上,而且由於內存與CPU之間的數據交換無需經過北橋,可以有效降低傳輸延遲。打個比方,這就如同將貨物倉庫直接搬到了加工車間旁邊,大大減少原材料和製成品在貨物倉庫與加工車間之間往返運輸所需要的時間,極大地提高了生產效率。這樣一來系統的整體性能也得到了提升。

內存頻率

和CPU一樣,內存也有自己的工作頻率,頻率以MHz為單位內存主頻越高在一定程度上代表著內存所能達到的速度越快。內存主頻決定著該內存最高能在什麼樣的頻率正常工作。最為主流的內存類型為DDR3和DDR4,作為DDR2的替代者,DDR3內存頻率已經達到了1600MHz,而DDR4的內存頻率則為2133MHz。

內存容量

內存的容量不但是影響內存價格的因素,同時也是影響到整機系統性能的因素。過去Windows XP平台,512M的內存還是主流,1GB已經是大容量;64位系統開始普及,Windows Vista、Windows 7、Windows10越來越多人使用,沒有2GB左右的內存都不一定能保證操作的流暢度。單根內存的容量主要有1GB、2GB、4GB,最高已經達到單根8GB和單根16GB。

工作電壓

內存正常工作所需要的電壓值,不同類型的內存電壓也不同,但各自均有自己的規格,超出其規格,容易造成內存損壞。DDR2內存的工作電壓一般在1.8V左右,而DDR3內存則在1.5V或1.35V左右。為了超頻,內存需要工作在高於標準的電壓值下,具體到每種品牌、每種型號的內存,則要看廠家了。只要在允許的範圍內浮動,略微提高內存電壓,有利於內存超頻,但是同時發熱量大大增加,因此有損壞硬體的風險。

時序參數

tCL : CAS Latency Control(tCL)
一般我們在查閱內存的時序參數時,如“8-8-8-24”這一類的數字序列,上述數字序列分別對應的參數是“CL-tRCD-tRP-tRAS”。這個第一個“8”就是第1個參數,即CL參數。
CAS Latency Control(也被描述為tCL、CL、CAS Latency Time、CAS Timing Delay),CAS latency是“內存讀寫操作前列地址控制器的潛伏時間”。CAS控制從接受一個指令到執行指令之間的時間。因為CAS主要控制十六進位的地址,或者說是內存矩陣中的列地址,所以它是最為重要的參數,在穩定的前提下應該儘可能設低。
內存是根據行和列定址的,當請求觸發后,最初是tRAS(Activeto Precharge Delay),預充電后,內存才真正開始初始化RAS。一旦tRAS激活后,RAS(Row Address Strobe )開始進行需要數據的定址。首先是行地址,然後初始化tRCD,周期結束,接著通過CAS訪問所需數據的精確十六進位地址。期間從CAS開始到CAS結束就是CAS延遲。所以CAS是找到數據的最後一個步驟,也是內存參數中最重要的。
這個參數控制內存接收到一條數據讀取指令后要等待多少個時鐘周期才實際執行該指令。同時該參數也決定了在一次內存突發傳送過程中完成第一部分傳送所需要的時鐘周期數。這個參數越小,則內存的速度越快。必須注意部分內存不能運行在較低的延遲,可能會丟失數據。而且提高延遲能使內存運行在更高的頻率,所以需要對內存超頻時,應該試著提高CAS延遲。
該參數對內存性能的影響最大,在保證系統穩定性的前提下,CAS值越低,則會導致更快的內存讀寫操作。
tRCD : RAS to CAS Delay
該值就是“8-8-8-24”內存時序參數中的第2個參數,即第2個“8”。RAS to CAS Delay(也被描述為:tRCD、RAS to CAS Delay、Active to CMD),表示"行定址到列定址延遲時間",數值越小,性能越好。對內存進行讀、寫或刷新操作時,需要在這兩種脈衝信號之間插入延遲時鐘周期。在JEDEC規範中,它是排在第二的參數,降低此延時,可以提高系統性能。如果你的內存的超頻性能不佳,則可將此值設為內存的默認值或嘗試提高tRCD值。
tRP : Row Precharge Timing(tRP)
該值就是“8-8-8-24”內存時序參數中的第3個參數,即第3個“8”。Row Precharge Timing (也被描述為:tRP、RAS Precharge、Precharge to active),表示"內存行地址控制器預充電時間",預充電參數越小則內存讀寫速度就越快。tRP用來設定在另一行能被激活之前,RAS需要的充電時間。
tRAS : Min RAS Active Timing
該值就是該值就是“8-8-8-24”內存時序參數中的最後一個參數,即“24”。Min RAS Active Time (也被描述為:tRAS、Active to Precharge Delay、Row Active Time、Precharge Wait State、Row Active Delay、Row Precharge Delay、RAS Active Time),表示“內存行有效至預充電的最短周期”,調整這個參數需要結合具體情況而定,一般我們最好設在24~30之間。這個參數要根據實際情況而定,並不是說越大或越小就越好。
如果tRAS的周期太長,系統會因為無謂的等待而降低性能。降低tRAS周期,則會導致已被激活的行地址會更早的進入非激活狀態。如果tRAS的周期太短,則可能因缺乏足夠的時間而無法完成數據的突發傳輸,這樣會引發丟失數據或損壞數據。該值一般設定為CAS latency + tRCD + 2個時鐘周期。
對於大多數人來說,內存這個小硬體選好容量和頻率,然後插上主板用上就行了,對它的很多小參數完全不在意。所以,行業廠商也會提供比較傻瓜式的讀取內存SPD晶元的參數信息,自動設置各項小參,簡單好用;更有簡單的超頻設置——XMP技術,讓普通用戶也能簡單地享受超頻增值的樂趣。

發展過程


發展方向

把內存控制器整合到CPU內部顯然是今後的發展方向,而且其技術也一定越來越完善。
AMD的在K8系列CPU及其之後的產品(包括Socket 754/939/940等介面的各種處理器),CPU的內部則整合了內存控制器,CPU和內存之間的數據交換過程簡化為“CPU--內存--CPU”三個步驟,省略兩個步驟,和傳統的內存控制器方案相比顯然具有更低的數據延遲,有助於提高計算機系統的整體性能。
Intel在最新的酷睿i5酷睿i7系列CPU中,也引入了整合內存控制器的方案。

發展歷程

Intel在45納米Penryn系列之後推出全新微架構,代號Nehalem,屆時將看到多項全新技術,其中整合的內存控制器無疑非常吸引人。AMD一直在自身的處理器內集成內存控制器,因而取得了很好的內存性能,但也導致每次內存規格升級都必須更新處理器介面;相反,Intel堅持把內存控制器放在北橋晶元里,同時對處理器本身的調整更多地依賴於緩存容量的增減。雖然Intel曾經列舉了多項理由,表示不集成內存控制器好處多多,但隨著形勢的發展變化,Intel自然也不會一條路走到黑,到了下一代新架構。內存控制器就將與圖形核心一起走入Intel處理器的內部。顯然,Intel所做的不僅僅是簡單集成。Nehalem架構下的原生四核心處理器Bloomfield將具備三通道DDR3內存控制器,支持DDR3-1600規格,可提供38.4GB/s的巨大帶寬,相比雙通道20GB/s左右幾乎翻了一番,同時內建的圖形核心也能因此獲得更好的性能表現,尤其是在3D遊戲里。不過,Nehalem下的雙核心處理器還會只配備雙通道內存控制器,以拉開市場差距。

運算


以AMD CPU為例:Socket 939時代CPU主頻與倍頻直接相除就是CPU內存控制器所支持的內存頻率.
到了DDR2時代的AM2處理器,雖然核心方面同樣內置了DDR2的內存控制器,但與過去的Socket 939介面不同的是,它所支持的內存頻率被更新至DDR2-800的水平。CPU主頻再也不能與CPU的倍頻直接相除,而是除以倍頻數二分之一后的整數(不能被整除取整數部分再加1).以4600+和4800+ CPU為例:
即內存運行頻率=(CPU主頻÷倍頻/2)×2
X2 4800+ ,主頻為2.5GHz,倍頻為12.5。所以內存的除頻數為7,此時內存運行的頻率 =(2500M÷7)×2=714M
X2 4600+主頻為2.4GHz,倍頻為12 . 所以內存的除頻數為6,此時內存運行的頻率 = (2400M÷6)×2=800M
4600+完美的支持DDR2-800
簡單的來說就是,如果CPU的主頻倘若不能被400整除的話,就說明該AM2處理器在默認的頻率下無法運行在DDR2-800的模式下。

控制器


CPU內存集成內存控制器優點CPU內存集成內存控制器有很多優點 比較突出的是三點:
第一CPU內部整合內存控制器
傳統的計算機系統的內存控制器位於主板晶元組的北橋晶元內部,CPU是要和內存進行數據交換,是需要經過“CPU--北橋--內存--北橋--CPU”五個步驟,在此模式中數據經由多級傳輸,數據延遲顯然較大從而影響計算機系統的整體性能;而AMD的K8系列CPU(包括Socket754/939/940等介面各種處理器)內部則整合內存控制器,CPU與內存之間的數據交換過程就簡化成“CPU--內存--CPU”3個步驟,省略了2個步驟,與傳統內存控制器方案相比顯然具有更低數據延遲,這有助提高計算機系統的整體性能。
第二內存控制器同頻於CPU頻工作
CPU內部集成內存控制器可以使內存控制器同頻於CPU頻工作(CPU工作頻率一般都在2G以上) ,而北橋的內存控制器一般就要大大低於CPU工作頻率,系統延時就更加少。
第三CPU內部集成內存控制器
CPU內部集成內存控制器,由於內存數據不經過北橋有效的降低了北橋的工作壓力,為北橋減低可負擔。
CPU內部集成內存控制器是K8 ,CPU的一大設計亮點,雖然在總體性能上酷睿遠遠超過K8,但是在內存性能上酷睿相對於K8來說還是望塵莫及。
整合內存控制器的特徵
CPU內部整合內存控制器的優點,是可以有效控制內存控制器工作在和CPU核心同樣的頻率上,而且因為內存與CPU之間的數據交換無需經過北橋,能有效降低傳輸延遲。打個比方,這就如同將貨物倉庫直接搬到加工車間旁邊,大大減少原材料和製成品在貨物倉庫和加工車間之間往返運輸所需要的時間,極大地提高生產效率。這樣一來系統的整體性能也得到提升。
CPU內部整合內存控制器最大缺點,就是對內存適應性比較差,靈活性比較差,只能使用特定類型內存,而且對內存的容量與速度也有限制,要支持新類型的內存、一定更新CPU內部整合的內存控制器,也就是說一定更換新的CPU;比如AMD的K8系列CPU、就只能支持DDR,而不能支持更高速DDR2。而傳統方案的內存控制器因為位於主板晶元組的北橋晶元內部,就沒有這方面問題,只需要更換主板,甚至不更換主板也可以使用不同類型的內存,比如IntelPentium 4系列CPU,假如原來配的是不支持DDR2的主板,那麼只要更換一塊支持DDR2的主板就可以使用DDR2,如果配的是同時支持DDR和DDR2主板,則不必更換主板就可以直接使用DDR2。
通常,對於整個PC系統來說,我們往往只關注於CPU的主頻、系統前端匯流排的頻率、內存的工作頻率和它們之間的匯流排帶寬等,但是內存延遲對系統性能的影響也相當大。
那麼,什麼是內存延遲呢?通俗來講,系統要對某些數據進行操作時,會由CPU發出指令,存儲在硬碟里的數據將傳送到內存里,由內存轉送給CPU。但是通常內存控制器是集成在主板晶元組的北橋晶元內,數據經由多級傳輸,往往會產生一定延遲。因而CPU發出指令后並不能及時獲得數據,對其並進行處理。內存延遲對系統性能有著重要的影響,內存系統的總體延遲大約為120~150ns,在這段時間內CPU所能做的只有等待。因而,儘可能的降低內存延遲無疑對系統性能的提升有著莫大的幫助。傳統的處理器要和內存進行數據交換,需要經過“CPU-北橋-DIMM-北橋-CPU”。而處理器內核整合內存控制器,進程就會簡化為“CPU-DIMM-CPU”,省略了兩個步驟。
這恐怕是AMD64位處理器在32位應用環境下也能表現出強勁性能的主要原因之一。打個比方,這就如同將貨物倉庫直接搬至加工車間旁邊,大大減少了原材料/製成品在貨物倉庫和加工車間之間往返運輸所需時間,極大地提高了生產效率。這樣一來系統的整體性能也得到了提升。在實際測試中,Athlon 64等待內存數據的時鐘周期比Athlon XP減少了30~40%,帶來系統整體性能的提升高達25~30%。
整合內存控制器雖然可以達到高寬頻和低延遲,但是其升級換代不就成了一個大問題嗎?通常,如果一種新的內存標準推出,晶元組廠商可以直接開發支持新內存的晶元組來支持。而內存控制器整合到處理器核心中,就造成升級的困難,因為改一下支持內存的規格就需要改內核。但就情況來看,這個疑慮似乎可以打消了。
發展方向:
將內存控制器整合到CPU內部顯然是今後的發展方向,而且其技術也會越來越完善。以後Intel也推出整合內存控制器的CPU的產品。

優缺點


優點

1.CPU內部整合內存控制器的優點,就是可以有效控制內存控制器工作在與CPU核心同樣的頻率上,而且由於內存與CPU之間的數據交換無需經過北橋,可以有效降低傳輸延遲。這就如同將貨物倉庫直接搬到了加工車間旁邊,大大減少了原材料和製成品在貨物倉庫和加工車間之間往返運輸所需要的時間,極大地提高了生產效率。這樣一來系統的整體性能也得到了提升。
2.減輕北橋晶元的負擔,由於CPU與內存的數據交換量在整個電腦數據交換中所佔的比例較大,所以整合之後北橋晶元的工作量極大第減少,進而可以為SATA、PCI-E等其它數據交換通道提供更高效的支持。

缺點

CPU內部整合內存控制器的最大缺點,就是對內存的適應性比較差,靈活性比較差,只能使用特定類型的內存,而且對內存的容量和速度也有限制,要支持新類型的內存就必須更新CPU內部整合的內存控制器,也就是說必須更換新的CPU;例如AMD的K8系列CPU就只能支持DDR,而不能支持更高速的DDR2。而傳統方案的內存控制器由於位於主板晶元組的北橋晶元內部,就沒有這方面的問題,只需要更換主板,甚至不更換主板也能使用不同類型的內存,例如Intel Pentium4系列CPU,如果原來配的是不支持DDR2的主板,那麼只要更換一塊支持DDR2的主板就能使用DDR2,如果配的是同時支持DDR和DDR2的主板,則不必更換主板就能直接使用DDR2。

總結


許多應用程序擁有更為複雜的讀取模式(幾乎是隨機地,特別是當cache hit不可預測的時候),並且沒有有效地利用帶寬。典型的這類應用程序就是業務處理軟體,即使擁有如亂序執行(out of order execution)這樣的CPU特性,也會受內存延遲的限制。這樣CPU必須得等到運算所需數據被除數裝載完成才能執行指令(無論這些數據來自CPU cache還是主內存系統)。當前低段系統的內存延遲大約是120-150ns,而CPU速度則達到了3GHz以上,一次單獨的內存請求可能會浪費200-300次CPU循環。即使在緩存命中率(cache hit rate)達到99%的情況下,CPU也可能會花50%的時間來等待內存請求的結束- 比如因為內存延遲的緣故。
可以看到Opteron整合的內存控制器,它的延遲,與晶元組支持雙通道DDR內存控制器的延遲相比來說,是要低很多的。英特爾也按照計劃的那樣在處理器內部整合內存控制器,這樣導致北橋晶元將變得不那麼重要。但改變了處理器訪問主存的方式,有助於提高帶寬、降低內存延時和提升處理器性能。
傳統的計算機系統其內存控制器位於主板晶元組的北橋晶元內部,CPU要和內存進行數據交換,需要經過“CPU--北橋--內存--北橋--CPU”五個步驟,在此模式下數據經由多級傳輸,數據延遲顯然比較大從而影響計算機系統的整體性能;而AMD的K8系列CPU(包括Socket 754/939/940等介面的各種處理器)內部則整合了內存控制器,CPU與內存之間的數據交換過程就簡化為“CPU--內存--CPU”三個步驟,省略了兩個步驟,與傳統的內存控制器方案相比顯然具有更低的數據延遲,這有助於提高計算機系統的整體性能。