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