今年的hotchip上marvell展示了其基于ARM架構(gòu)的Thunder X3服務(wù)器芯片。Marvell在fabless廠商中應(yīng)該算是鼎鼎大名,從硬盤控制芯片起家至今,已經(jīng)發(fā)展成為包含豐富產(chǎn)品線的綜合性公司。其中ARM處理器產(chǎn)品線,除了這次展示的服務(wù)器芯片Thunder系列外,還包括面向無線通信基站的基帶及智能射頻的Octeon系列,以及低功耗的應(yīng)用級(jí)Armada系列。不過Thunder并非Marvell自家研發(fā),而是在2017年花費(fèi)60億美元收購(gòu)了Cavium獲得。并不為大多數(shù)人所知的是,這并不是Marvell第一次嘗試ARM服務(wù)器的設(shè)計(jì)。
早在2006年,Marvell通過收購(gòu)intel的通信及應(yīng)用處理器業(yè)務(wù)Xscale獲得了ARM指令集的授權(quán),資料源碼和設(shè)計(jì)團(tuán)隊(duì)。在2010年左右Marvell開始著手設(shè)計(jì)基于ARM v8的服務(wù)器芯片,當(dāng)時(shí)的設(shè)計(jì)主要來自原Xscale的美國(guó)團(tuán)隊(duì),上海部門也有部分人員參與。
彼時(shí)是ARM服務(wù)器的第一波熱潮,都對(duì)ARM能夠替換X86報(bào)有很大的期待,研發(fā)也持續(xù)了幾年時(shí)間。不過最后的結(jié)果并不如人意,由于種種原因這款芯片沒有走到tape-out就夭折了,加之當(dāng)時(shí)Marvell深陷和卡耐基梅隆的專利官司,股價(jià)一跌再跌,同時(shí)其他參與ARM服務(wù)器研究的公司也紛紛退出,最終這項(xiàng)充滿不確定和挑戰(zhàn)的項(xiàng)目遺憾的被砍掉,國(guó)外的設(shè)計(jì)團(tuán)隊(duì)也整體轉(zhuǎn)給了ARM,之后ARM cortex A系列的幾款處理器就出自這個(gè)設(shè)計(jì)團(tuán)隊(duì)。
不過Marvell也一直不死心,隨著thunder系列處理器收歸囊中,從thunder X2開始,ARM服務(wù)器似乎開始走運(yùn)了。從新聞上發(fā)布的消息來看,這款處理器銷量不錯(cuò),比如美國(guó)能源部旗下桑迪亞國(guó)家實(shí)驗(yàn)室的超級(jí)計(jì)算機(jī)“Stra”,就使用了145152個(gè)ThunderX2核心;洛斯阿莫斯國(guó)家實(shí)驗(yàn)室和法國(guó)原子能機(jī)構(gòu)CEA的超算系統(tǒng)也是基于Thunder X2打造。
在商用領(lǐng)域,微軟內(nèi)部也正為Azure部署基于ThunderX2 的量產(chǎn)級(jí)服務(wù)器集群,主要針對(duì)Project Olympus平臺(tái),據(jù)說有數(shù)十萬顆至多。如果都落實(shí)下來的話,這樣的規(guī)模對(duì)于初出茅廬的Thunder X2來說是非常好的成果了,也可以證明ARM服務(wù)器的在超算和商用的可行性。
雖然包括Amazon在內(nèi)的幾家公司也在推出相應(yīng)的ARM服務(wù)器芯片,不過其核心仍然是由ARM提供,大多是Neoverse N1內(nèi)核,而Thunder的ARM核心是Marvell自研的,對(duì)于其他的競(jìng)爭(zhēng)者來說還是有很大的差異性。下面就來看看新一代Thunder x3有哪些改進(jìn)。
首先回顧下Thunder X2,這是2016年的產(chǎn)品,基于TSMC 16nm。32核心,單核4線程,頻率2.5GHz,可以boost到3.0GHz。每核心32KB數(shù)據(jù)和指令緩存、256KB二級(jí)緩存,共享32MB三級(jí)緩存。其他的如虛擬化,TrustZone的也基本都支持。
到Thunder X3,可以看到核心從32增加到了60個(gè),同時(shí)還提供了一個(gè)dual die的增強(qiáng)版,可以增加到96個(gè)核心。每個(gè)核心仍然是4個(gè)線程,工藝升級(jí)到TSMC 7nm??梢钥吹絋hunder X3相比X2在同頻下單線程有30%的性能提升,這個(gè)一個(gè)是比較高的數(shù)字。其中dual die的設(shè)計(jì)還是很有特點(diǎn),并不是single die數(shù)目乘2,應(yīng)該是考慮到單芯片的功耗。不過為什么不在單個(gè)die上直接堆疊96個(gè)核心呢,這樣還能避免2個(gè)die一起的互聯(lián)問題,這個(gè)暫時(shí)沒有答案。
Anandtech網(wǎng)站給了一個(gè)很好的數(shù)據(jù)對(duì)比,可以看到對(duì)比amazon和ampere的產(chǎn)品,Thunder X3在核心線程數(shù)和L3 cache容量上遙遙領(lǐng)先,其他的數(shù)據(jù)也都持平,不過PCIe的帶寬上小氣了一些。另外一個(gè)典型的區(qū)別是Thunder系列仍然采用了Ring的結(jié)構(gòu),和同類A型產(chǎn)品包括X86在內(nèi)幾乎都是使用mesh總線的。由于核心數(shù)量較多時(shí),Ring總線訪問的不對(duì)稱時(shí)延會(huì)比較明顯,同時(shí)拓?fù)浣Y(jié)構(gòu)不如mesh能提供更靈活的連接性和更高的帶寬,對(duì)于這個(gè)選擇還是持保留態(tài)度,雖然Thunder X3采用了一個(gè)增強(qiáng)版的swithed 3x Ring。這也許就是96個(gè)核心沒有選擇放在一個(gè)die上而是dual die的原因。
ThunderX3面向服務(wù)器級(jí)別,肯定是和intel,AMD一樣選擇全亂序多發(fā)射的架構(gòu)。其中有幾個(gè)設(shè)計(jì)的特點(diǎn)值得討論。
第一,ThunderX3給出的decode寬度高達(dá)8個(gè),這個(gè)數(shù)字遠(yuǎn)遠(yuǎn)超過其他競(jìng)爭(zhēng)對(duì)手,而issue寬度卻只有4,前寬后窄的比例達(dá)到了2:1。這個(gè)是很奇怪的比例,取值譯碼的高帶寬會(huì)在相當(dāng)程度上被issue的瓶頸所堵住,因此浪費(fèi)了一定的硬件面積。不清楚ThunderX3這樣的設(shè)計(jì)是否有其他原因。
第二,經(jīng)過dispatch,指令會(huì)統(tǒng)一發(fā)送到一個(gè)多大70個(gè)entry的unified Scheduer,也就是通常說的Issue Queue。之前曾經(jīng)分析過ARM和ZEN的issue Queue設(shè)計(jì),都是采用分離式的queue,這樣可以比較好的解決timing問題,同時(shí)能夠保證ALU的single cycle forwarding。ThunderX3這么大的unified Queue,一個(gè)cycle要發(fā)射8條指令到不同的執(zhí)行單元,雖然調(diào)度策略上更優(yōu)一些,但復(fù)雜程度可想而知。
另外應(yīng)該是舍棄了single cycle forwarding的支持,通常來說這個(gè)對(duì)性能的影響是比較大的。希望Marvell之后能夠提供更詳細(xì)的性能對(duì)比。
這個(gè)是我從網(wǎng)站信息上總結(jié)的Thunder X3和Neoverse N1的參數(shù)對(duì)比總結(jié)??梢钥吹匠松线叺?個(gè)主要區(qū)別,其他的參數(shù)差距并不大,也都選擇了比較強(qiáng)的load-store單元,較大的L1和L2 cache size。當(dāng)然這個(gè)對(duì)比不是很公平,畢竟N1是2年前的產(chǎn)品,其下一代應(yīng)該也會(huì)有比較大的提升。之后的幾頁(yè) slides是Thunder X3在各級(jí)流水線上的一些設(shè)計(jì)參數(shù)和細(xì)節(jié),就不仔細(xì)分析,有興趣可以在文末的anandtech網(wǎng)站上查看細(xì)節(jié)。
這里介紹了thunderX3的單核4線程的仲裁方式,主要是在fetch,dispatch,scheduler和retire階段根據(jù)各線程指令的多少和新舊程度進(jìn)行資源的平衡。
這里就是thunderX3所說的switch ring的具體結(jié)構(gòu)了。可以看出其基本結(jié)構(gòu)是一個(gè)雙向雙工的環(huán)路,shared L3 cache被分成若干個(gè)tile和core綁定在一起。有幾個(gè)地方值得注意。
第一,這不是一個(gè)典型的ring,可以看到環(huán)的中間還有個(gè)上下貫通的通路,這個(gè)應(yīng)該是在核心比較多的情況下給在ring上本來比較遠(yuǎn)的節(jié)點(diǎn)提供一個(gè)更快的旁路通路。不過既然已經(jīng)搞的這么復(fù)雜了,為什么不一步到位直接用更合適的mesh?
第二,在60個(gè)核心的規(guī)模上,還在使用snoop協(xié)議,而不是通常效率更高的directory協(xié)議,多核snoop造成的總線擁堵和核內(nèi)干擾應(yīng)該會(huì)很大程度制約其性能發(fā)揮,這個(gè)選擇很值得商榷。
第三,使用exclusive L3,這樣當(dāng)然會(huì)剩一些存儲(chǔ)面積,但卻增加了不必要的L2-L3數(shù)據(jù)訪問,在以性能至上的服務(wù)器芯片,這似乎不是一個(gè)合適的選擇。
總體來看,ThunderX3在眾多采用arm公版設(shè)計(jì)的廠商中,還是努力走出了自己定制化的特點(diǎn)。這個(gè)和華為鯤鵬的策略應(yīng)該是殊途同歸。然而在核心設(shè)計(jì)和互聯(lián)上的一些疑問,可能會(huì)對(duì)其真實(shí)性能發(fā)揮造成阻礙。這個(gè)希望能在后續(xù)詳細(xì)的性能評(píng)測(cè)中得到解釋。
另外服務(wù)器領(lǐng)域的具體應(yīng)用非常龐雜,benchmark并不能提供較真實(shí)的數(shù)據(jù),還是要靠大規(guī)模應(yīng)用后得到實(shí)際的反饋。這一點(diǎn)arm服務(wù)器相比已經(jīng)深耕十幾年的X86來說還有很長(zhǎng)的路要走。不管怎樣,從amazon到marvell,arm服務(wù)器的定制化設(shè)計(jì)總算開了個(gè)頭,期待后邊能出現(xiàn)和x86更精彩的對(duì)決。