張平
一般來說,人們都很關注處理器的核心數(shù)量,比如四核、八陔等,但是又有誰知道支撐處理器核心數(shù)量、GPU規(guī)模的“幕后精英”呢?最近ARM發(fā)布了全新的CCI-550總線,可以支持更多的處理器核心以及CPU、GPU的完全一致性。
說起ARM,大家的第一反應多半會想到手中智能手機里的處理器。比如雙核心的蘋果A9、八核心的高通驍龍810以及最新?lián)碛惺诵牡穆?lián)發(fā)科Helio X20。在這些處理器中,人們津津樂道的往往是它們的核心數(shù)量、GPU規(guī)模,但是對另外一個決定處理器基本規(guī)格和允許規(guī)模的重要部件——總線,卻沒有太多了解。剛好,前段時間ARM發(fā)布了全新的CCI-550總線,為ARM未來處理器擁有更強性能,更多核心,邁向更廣泛的應用空間埋好了伏筆。下面我們就來了解一下這款全新的總線。
CoreLink,串聯(lián)ARM的大小核心
說起總線很多人會想到PC中的HT總線、DMI總線、PCI-E總線等等。顧名思義,總線就是不同設備間的連接線,它可以使一個系統(tǒng)的不同部分通過一種標準化的通道連接在一起,更好地實現(xiàn)設計所需的功能和目的。
總線可謂是處理器中最重要的部分之一,在移動處理器上自然也不例外。目前在ARM架構的移動處理器中,廣泛使用的是CoreLink CCI-400總線(下簡稱“CCI-400”)。令人驚訝的是,CCI-400的發(fā)布時間竟然是五年前的2010年11月11日。當時CCI-400發(fā)布的主要目的是為了充分發(fā)揮Cortex-A15和Mali-T604的性能,提高系統(tǒng)的吞吐能力和數(shù)據(jù)傳輸能力,降低傳輸瓶頸(雖然Cortex-A75的產(chǎn)品大約在三年后才正式發(fā)布)。為了達到這個目的,CCI-400設計了一個全新的可配置、無閉塞性、低延遲、低功耗的NIC-400網(wǎng)絡,串聯(lián)了處理器內(nèi)部各個重要的部分,并且還加入了細鏈路設計,緩解內(nèi)部布線擁擠。在內(nèi)存方面,CCI-400搭配的DMI-400內(nèi)存控制器支持DDR2、LPDDR2以及DDR3內(nèi)存,可以為處理器提供充足的帶寬。具體到產(chǎn)品來看,CCI-400總線大約從2011年開始逐漸應用到ARM架構的處理器上,從Cortex-A9到Cortex-A15,乃至目前最主流的Cortex-A53和Cortex-A57,甚至最新的Cortex-A72,者隅能看到CCI-400總線的影子。
不過CCI-400雖然經(jīng)典,但在長達五年的時間中,處理器尤其是移動處理器有了高速發(fā)展,使得CCI-400無法支持許多全新的特性。同時CCI-400在很多關鍵特性上的缺失還使得ARM無法進入更高端的服務器處理器市場。因此,ARM決定研發(fā)一款全新的CoreLink總線,使得ARM能夠繼續(xù)在未來保持領先的優(yōu)勢。這個全新的產(chǎn)品,就是接下來要介紹的CCI-550總線。
實際上,在ARM發(fā)布CCI-550總線之前,曾于2015年2月推出了一款CCI-500總線。相較之下,CCI-550基本上繼承了CCI-500的所有特性,并且加入了一些更新的關鍵性功能。因此,本文就不再重復CCI-500的功能,只針對CCI-550進行介紹。
嗅探過濾器——同步數(shù)據(jù)更高效
說起CCI-550的核心改變,怎么也繞不過全新的嗅探過濾器。在提及這部分內(nèi)容之前,我們先來看看在多核心處理器之間的通訊和同步有哪些方式。
如果一個總線上連接了4個對等的處理器內(nèi)核,這就意味著4個處理器內(nèi)核都有能力修改、獲取存儲系統(tǒng)中的數(shù)據(jù)。但是每個處理器又有自己的緩存和關鍵性數(shù)據(jù)表。當某一個處理器修改了內(nèi)存中的數(shù)據(jù)時,別的處理器緩存中如果有對應的數(shù)據(jù),那么也應該修改才能保持同步。這個時候,應該如何讓別的處理器也知道某個數(shù)據(jù)已經(jīng)修改了呢?
有一種方法是這樣的:讓修改數(shù)據(jù)的那個處理器給出廣播說明情況,通知其他處理器即可。簡單來說,如果有四千人,每個人都在做“10+5+3”的算術題,但是有一個人想改成計算“10+6+8”,那么這個人需要拿著小喇叭告訴剩余的三個人——快別算“10+5+3”了,我們算“10+6+8”吧——這樣其他三個人就知道了將自己的題目改成最新的即可。
這種方式叫做廣播,簡單來說是當某個處理器核心每一次更改數(shù)據(jù)時,都會通過總線告訴別的處理器:“我改數(shù)據(jù)了”。然后其他處理器根據(jù)廣播內(nèi)容修改數(shù)據(jù)并保持同步。廣播看起來實現(xiàn)方法很簡單,但問題也不少。因為高速運行的處理器資源本身就很緊張,如果某些處理器老是不停地等待別的處理器發(fā)出的廣播通知,整體效率顯而易見就會降低。再說處理器不斷發(fā)出廣播信息修改數(shù)據(jù),并且無差別地發(fā)給所有處理器(即使某些處理器并不需要這個通知),也會帶來信息的冗余和臃腫。
從應用角度來看,如果處理器核心數(shù)量少于4個,廣播還算一種不錯的解決方法,但是如果處理器核心數(shù)量高于6個甚至8個,廣播效率就很低下了?,F(xiàn)在在很多新的處理器中,核心數(shù)量都提升到了8個甚至10個,尤其是在big.LITTLE架構流行后。這樣一來,廣播就不怎么靠譜了。于是ARM改變了策略,在全新的CCI-550和CCI-500中改用了嗅探過濾器。
什么是嗅探過濾器呢?簡單來說,ARM為多核心處理器增加了一個“通信員”并依靠這個“通信員”傳遞數(shù)據(jù)、同步內(nèi)容。還是上面的例子,當四個人都在計算“10+5+3”的時候,有一千人告訴位于中間的通信員,題目改成計算“10+6+8”了。于是通信員就去挨個問:題目改了,你知道嗎?如果回答的是“知道”,那么通訊員就走了;如果回答的是“不知道”,那么通訊員就告訴他實際內(nèi)容。這樣一來,既提高了效率,又節(jié)約了能耗,還節(jié)省了總線占用,一舉多得。
根據(jù)目前的資料來看,全新的嗅探過濾器能夠同時和所有緩存、核心進行通信,整體延遲更低,擴展性能更強,同時最多還能節(jié)約0.1瓦的能耗。這還不是最重要的,更重要的是它為更多核心的ARM架構處理器鋪平了道路。endprint
核心擴展——支持最多24核心
說到多核心處理器,尤其是服務器級別的低功耗多核心處理器,一直是ARM夢寐以求的市場。服務器市場不僅利潤高,關鍵是ARM目前的架構也很符合其需求。舉例來說,隨著移動計算技術的發(fā)展,很多用戶在移動設備端往往只執(zhí)行輕負載應用,比如郵件收發(fā)、信息推送、短消息互聯(lián)互通等,這些輕負載應用在服務器端并不需要太強大的單核心性能,但是對多任務和多核心要求很高。ARM的處理器相比英特爾的“重型架構”處理器,其單核心性能不夠出色,但是勝在功耗低、核心數(shù)量可以做得很多,剛好契合這一需求。因此ARM一直以來都想打入這個市場。
但是之前的CCI-400總線最多支持2個CPU簇,每個CPU簇最多支持4個CPU核心。這樣一條總線最多支持8個CPU核心,如果要使用更多的CPU核心的話,那么就得布置更多的總線,這樣一來總線之間的互通又成為了問題。但是在CCI-550上,ARM允許一個總線最多支持6個CPU簇,每個CPU簇依舊是4個CPU核心,這樣最多就能支持24個CPU,使得ARM的服務器夢想又前進了一步。
此外,為了配合更多核心的產(chǎn)品,CCI-550最多可搭配六個DMC-500內(nèi)存控制器實現(xiàn)對六通道內(nèi)存的支持,內(nèi)存尋址方面最多支持48bit,完全可以滿足服務器對內(nèi)存容量的需求了。內(nèi)存速度最高支持LPDDR4-4267,兼容LPDDR3-2733,性能方面最高可提升27%,能夠降低25%的CPU平均延遲。其他方面,CCI-550可以支持最多三個系統(tǒng)主界面,六個AC巨端口,基本能滿足未來很長一段時間的需求了。
完全一致性支持——支持GPU和CPU異構計算
CPU和GPU的異構計算在很多場合都被反復提及。雖然從理論上來說,CPU更適合相關性復雜的單線程任務以及邏輯計算,GPU更適合相關性較弱的并行計算,但是如何使這兩種計算模式有機并且高效率地結合在一起,一直都是業(yè)內(nèi)的難題。尤其是AMD在APU上投入了這么多年的精力,目前也沒有帶來特別有效的商業(yè)和應用模式。不過技術終究是在發(fā)展的,在CCI-550中,ARM就為了支持異構計算,加入了對完全一致性的支持。
所謂完全一致性,是指CPU和GPU在存儲數(shù)據(jù)時,數(shù)據(jù)在內(nèi)存中使用完全單一的內(nèi)存地址空間,不需要額外的數(shù)據(jù)管理模塊,也不需要數(shù)據(jù)的拷貝和轉移。傳統(tǒng)的CPU-GPU結構中,CPU有自己的內(nèi)存,GPU有自己的顯存。數(shù)據(jù)在計算時需要從CPU發(fā)包到GPU,GPU計算完成后再發(fā)回數(shù)據(jù),效率較低。但是在全新的完全一致性模式下,CPU和GPU共享相同的內(nèi)存存儲空間,數(shù)據(jù)的拷貝和更改都在一個空間內(nèi)進行,大大提升了效率。
CCI-550對完全一致性的支持,使得ARM可以在HAS、Open CL 2.0等編程模型下有更好的表現(xiàn),并且可以實現(xiàn)對應用的異構加速。不過目前ARM的Mali-T800系列GPU還不支持全部的完全一致性,現(xiàn)在只能支持I/O一致性。ARM預計推出的下一代代號為“Mimir”的GPU就能夠支持完全一致性了,到時候用戶有可能在手機上享受到HAS異構計算的加速效果。
什么時候才能用到CCI-550?
問題來了:什么時候用戶才能享受到CCI-550帶來的變化呢?據(jù)估計,CCI-550應該在2016年底配合全新的工藝在新的處理器中得到應用。具體到實際產(chǎn)品諸如手機、平板電腦上,可能需要等到2017年中期了——也就是說,用戶還得大概等待一年半左右。從目前的情況來看,CCI-550整體技術和設計都比較先進,因此未來很長一段時間,CCI-550應該都將存在于我們的移動設備中。endprint