本文來自微信公眾號:開發(fā)內(nèi)功修煉 (ID:kfngxl),作者:張彥飛 allen
大家好,我是飛哥!
之前有位讀者問我為什么服務(wù)器內(nèi)存上有這么多的顆粒,今天我專門就這個話題成文一篇作為回復(fù)。
各位從事服務(wù)器端開發(fā)的同學(xué)天天都在開發(fā)代碼,代碼都需要內(nèi)存。確實了解一下服務(wù)器內(nèi)存硬件是挺有有必要的。
所以我特地找來了一個服務(wù)器內(nèi)存條來。下圖是一個 32 GB 服務(wù)器內(nèi)存條的正面和反面圖。
可見服務(wù)器內(nèi)存上有很多的黑色顆粒,相比下面的臺式機內(nèi)存顆粒要多很多。
今天我們就專門寫一篇文章來給大家解釋為什么服務(wù)器內(nèi)存中顆粒更多的原因。
原因 1:服務(wù)器內(nèi)存需要 ECC 功能
在開篇所示的內(nèi)存正面有著一串字符串標(biāo)識 32 GB 2R\*4 PC4-2666V-RB2-12-DB1。
在這段標(biāo)識中,第一段的 32 GB,是內(nèi)存的容量大小。第二段后面的 2R*4 我們在《理解內(nèi)存的 Rank、位寬以及內(nèi)存顆粒內(nèi)部結(jié)構(gòu)》一篇文章中也介紹過了,2R:表示該內(nèi)存有 2 個 Rank,*4:表示每個內(nèi)存顆粒的位寬是 4 bit。
不過按照這個位寬參數(shù),每個 Rank 只需要 16 個內(nèi)存顆粒就夠了,2 個 Rank 需要 32 個 Chip 內(nèi)存顆粒就夠了。
而我們上圖中的內(nèi)存正面有 19 個 內(nèi)存顆粒,背面有 18 個內(nèi)存顆粒。19 + 18 = 37 個黑色顆粒。
這是因為服務(wù)器區(qū)別于普通的臺式機電腦,需要 ECC 糾錯功能,以及 RDIMM / LRDIMM 在內(nèi)存顆粒中加入寄存器模塊,使得內(nèi)存的頻率更高(頻率高的內(nèi)存性能就會更好),容量更大。
DRAM 內(nèi)存是一種易失性的存儲,它是不能 100% 保證存儲的數(shù)據(jù)不發(fā)生變化的。一根 8 GB 的內(nèi)存條平均大約每小時會出現(xiàn) 1 - 5 個比特翻轉(zhuǎn)錯誤。
我們個人在辦公的時候,由于內(nèi)存主要都用來處理圖片、視頻等數(shù)據(jù)。即使內(nèi)存出現(xiàn)了比特翻轉(zhuǎn),可能影響的只是一個像素值,沒有太大的影響,也很難感覺出來。
在服務(wù)器應(yīng)用中,處理的一般都是非常重要的計算,可能是一些推薦計算,也可能是一筆訂單交易,對出錯的容忍度是很低的。另外一臺服務(wù)器經(jīng)常是連續(xù)要運行幾個月甚至是幾年。因此總的來說,服務(wù)器對穩(wěn)定性的要求極高,不允許比特翻轉(zhuǎn)錯誤發(fā)生。
ECC 是一種內(nèi)存專用的技術(shù)。它的英文全稱是 “Error Checking and Correcting”,對應(yīng)的中文名稱就叫做“錯誤檢查和糾正”。從它的名稱中我們可以看出,ECC 不但能發(fā)現(xiàn)內(nèi)存中的錯誤,而且還可以進行糾正。
在實現(xiàn)上,ECC 內(nèi)存會板上額外再添加內(nèi)存顆粒來專門負責(zé)檢查錯誤并糾正錯誤。
帶 ECC 功能的內(nèi)存,需要為 CPU 同時提供 72 位的讀寫,其中 64 位是數(shù)據(jù),另外 8 位用于 ECC 校驗。
我們開篇提到的內(nèi)存的顆粒。
位寬是 4,為了提供 8 位的 ECC 校驗數(shù)據(jù),每個 Rank 需要額外 2 個內(nèi)存顆粒來存儲 ECC 數(shù)據(jù)。所以每個 Rank 總共需要 16 + 2 = 18 個內(nèi)存顆粒。
Rank 數(shù)量是 2,所以總共需要 18 * 2 = 36 個內(nèi)存顆粒來存儲用戶數(shù)據(jù)以及校驗位
原因 2:RDIMM 地址信號緩存
上一小節(jié)我們對開篇內(nèi)存計算其包含 ECC 功能后總共需要 36 個內(nèi)存顆粒,而在圖片中我們實際看到有 37 個黑色顆粒。
這個多出來的一個顆粒是做地址等控制信號緩存的。
服務(wù)器一般采用的是 RDIMM(帶寄存器雙列直插模塊)或者 LRDIMM(低負載雙列直插內(nèi)存模塊)。無論是 RDIMM 還是 LRDIMM,都比普通的內(nèi)存要多一個帶寄存器的時鐘驅(qū)動器(RCD)模塊。
RCD 從主機存儲器控制器獲取命令地址總線、控制信號和時鐘信號,然后將這些信號流扇出到 DIMM 上的 DRAM。所有的信號通過 RCD 進入 RDIMM 后都會重新計時和清理。
從開篇的圖中,我們確實也找到了這個模塊。
有了這個模塊的支持,能顯著降低信號干擾,進而大幅提升穩(wěn)定性。這樣單條內(nèi)存的容量可以做到更大一些。
原因 3:LRDIMM 數(shù)據(jù)信號緩存
另外還有就是對于大內(nèi)存的服務(wù)器,可能 RDIMM 提供的單條內(nèi)存容量還不夠,還需要更大。
LRDIMM 相比 RDIMM 在引入寄存緩存器 RCD 的基礎(chǔ)上,又進一步引入了數(shù)據(jù)緩沖器 DB(Data Buffer)。
引入 DB 數(shù)據(jù)緩沖器作用是緩沖來自內(nèi)存控制器或內(nèi)存顆粒的數(shù)據(jù)信號。實現(xiàn)了對地址、控制信號、數(shù)據(jù)的全緩沖。這種內(nèi)存價格更貴,但可以支持更大容量。
如下是一個 LRDIMM 的實物圖。
簡單總結(jié)一下,服務(wù)器內(nèi)存硬件上顆粒數(shù)量更多的原因有 3 個
需要 ECC 功能,需要比普通內(nèi)存多 1/8 的顆粒數(shù)來支持 ECC
需要 RCD 模塊降低地址等控制信號干擾影響,將單條容量做到更大
需要 DB 模塊降低數(shù)據(jù)信號干擾影響,進一步將單條容量提高
想深入了解 RDIMM 和 LRDIMM 原理的話,我推薦大家一個 youtube 上的視頻,我覺得講解的非常清楚。視頻地址:https://www.youtube.com/ watch?app=desktop&v=opR0pARpieg
廣告聲明:文內(nèi)含有的對外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。