如果你曾經(jīng)和服務(wù)器廠商打過交道,就會發(fā)現(xiàn)他們對于內(nèi)存容量的渴求是極其貪婪的。是啊,電信、證券、量化這些不差錢的主顧在嘗試了內(nèi)存數(shù)據(jù)庫百倍速度的高潮后,已經(jīng)不能夠回頭了。畢竟0.01秒的響應(yīng)提升,就意味著白花花的銀子。當(dāng)這個壓力傳導(dǎo)給提供機器的服務(wù)器廠商的時候,他們的內(nèi)心一定是甜蜜又伴隨著一絲酸楚的。24TB這個數(shù)字,框定了利潤的上限,這是更多的金錢所不能突破的。
這帶來一個根本性的問題,單機服務(wù)器最大內(nèi)存的極限是怎么確定的?它的制約因素有哪些?為了簡化討論范圍,我們限定在占據(jù)服務(wù)器市場98%以上的X86服務(wù)器,并假設(shè)不受成本的約束。我們從CPU內(nèi)核和操作系統(tǒng)、以及存儲子系統(tǒng)兩方面來尋找答案。
CPU內(nèi)核和操作系統(tǒng)
操作系統(tǒng)和CPU內(nèi)核都支持64位地址空間,它能夠訪問的地址空間是
2^64=16384 PB
好大的空間,似乎永遠(yuǎn)也用不完。是不是這個是內(nèi)存容量的極限呢?實際上即使在CPU內(nèi)核中還有一個因子,限制了CPU和操作系統(tǒng)的尋址空間,那就是bitwidth。它決定了頁表轉(zhuǎn)換的地址長度,它現(xiàn)在最大是48位(我印象里),它可以從寄存器里面讀出來,越新和服務(wù)器CPU,這個值越大。那么新的地址空間最大是多少呢?
2^48=256 TB
256TB,小了不少,是不是這就是內(nèi)存容量的極限了呢?實際上并不是。
內(nèi)存子系統(tǒng)
現(xiàn)代計算機系統(tǒng)的內(nèi)存都由CPU內(nèi)置的內(nèi)存控制器來管理,為了尋找內(nèi)存的極限,我們把目光投入到志強中的戰(zhàn)斗機,E7服務(wù)器上。E7面向?qū)Ω呖煽啃院透呖?a href="http://www.niubm.net/tags/332/">擴(kuò)展性需求強烈的用戶,當(dāng)然價格也十分感人。高可靠性說的是RAS,高可擴(kuò)展性是說可以擴(kuò)展為4路,8路,甚至16路服務(wù)器。所謂n路,通俗的說就是有n個物理CPU。
16路服務(wù)器十分十分罕見,部分原因在于從8路擴(kuò)展為16路后,保證cache一致性所發(fā)的snoop包會降低性能,在某些情況下得不償失。我們這里就略過。8路服務(wù)器作為主流最高端服務(wù)器,它的內(nèi)存最大能夠達(dá)到多少呢?
我們先來看一下它的內(nèi)存子系統(tǒng):
E7 CPU后面并不直接插內(nèi)存條DIMM,這點和E5不一樣。內(nèi)存條插在一個叫做SMB(Scalable Memory Buffer)的芯片后面。每個SMB支持兩個Channel,每個Channel后面可以插3根DIMM(圖里是兩個,實際可插三個)。SMB和CPU直接通過一種叫做SMI Link(Scalable Memory Interconnect)的總線連接,一個CPU可以連接四個SMB。