CPU片內總線結構差異對遊戲性能的影響

最近一段時間遊戲大作頻發,先是《使命召喚:戰區》火爆全球,緊隨其後的《騎馬與砍殺2》也在一片叫好聲中登頂Steam單週銷量榜首。熱門遊戲自然少不了大量的測試,細心的玩家就會發現,在這些測試中,英特爾的CPU性能表現都要遠優於AMD的Ryzen系列,特別是同樣核心規模的時候,這種優勢就愈發的明顯。

CPU片內總線結構差異對遊戲性能的影響


CPU片內總線結構差異對遊戲性能的影響


為什麼英特爾的處理器要比AMD的更適合玩遊戲呢?除去在主頻上的優勢之外,很重要的一點就是英特爾在CPU本身的架構上,要比AMD的Zen / Zen2架構,更適合應對遊戲這種包含大量複雜邏輯的運算形式,這其中涉及到的很重要的一個部分,就是CPU內部的“片內總線”。

片內總線負責連接CPU芯片內部的各個模塊,包括CPU核心以及顯示核心、內存控制器等輔助模塊。作為各模塊數據交換的途徑,片內總線的效率,會對CPU性能有著顯著的影響,甚至可以說片內總線的結構,決定著一顆CPU最合適的應用場景。片內總線的結構通常包括星形、線形、樹形、環狀(Ring)、網狀(Mesh)以及全連接這幾種。其中星形就是早期單核心CPU的主要結構,Core作為中央節點,其他模塊都和它鏈接。進入多核時代後,星形結構就不再適用了。線形和樹形同樣不適合,因此目前能見到的片內總線方案,主要就是Ring、Mesh和全連接這三種方式。

CPU片內總線結構差異對遊戲性能的影響


全連接的方式,從結構上來說很理想,因為CPU內部每一個核心節點都能直連另外任意節點,信息傳遞效率最高,延遲也最低。但是全連接的複雜度會隨著核心數量的增加而大幅提升的,比如4核心需要6條內部通路,而8核心就需要28條,16核心就需要120條。如此複雜的線路在設計和製造都是災難性的,因此目前只有AMD在Zen架構上,採用了縮水版的全連接方式。

所謂縮水,就是Zen/Zen2架構,實際上只做了4核心的全連接,這樣只需要6條互聯通路,在複雜度上還算可以承受。那麼Ryzen和ThreadRipper那麼多核心數量是怎麼來的呢?那就要說到“膠水”(Multi-Chip-Module)技術了。

CPU片內總線結構差異對遊戲性能的影響


在Zen架構中,AMD把這4個全連接的核心成為一個CCX(CPU Complex)模塊,2個這樣的CCX通過IF互聯總線連接,組成了一個芯片(一級膠水)。在Zen2架構中,AMD將這樣一個芯片稱作CCD(Core Chiplet Die),然後再通過組合多個CCD與I/O模塊(cIOD),組成一顆完整的Ryzen 3000系列CPU(二級膠水)。

經過兩次膠水之後,全連接方式的優勢就被完全抵消了,因為在跨CCX進行數據交換要通過IF總線,跨CCD溝通甚至要通過銅電路,由此帶來的延遲將變得非常誇張。同時,也正是因此,Ryzen系列處理器非常依賴Windows操作系統的調用機制,AMD也多次與微軟合作希望通過打補丁的方式讓Windows10系統在進行線程跳轉時,儘可能地在CCX內部完成,以此來降低延遲帶來的性能損失,然而收效甚微。


CPU片內總線結構差異對遊戲性能的影響


既然膠水結構有這麼大的劣勢,為什麼AMD還堅持使用這樣的結構呢?原因很簡單——省錢。通過使用這種模塊化的結構,縮小了單一芯片的規模,AMD能夠更好的控制芯片製造的良品率,畢竟用兩個8核心CCD“粘”成一個3950X的難度遠小於造一個完整的16核心的芯片,而且萬一CCD裡面壞了兩個核心還能封包成3600X繼續賣。同時,在頻率和計算效率受限的情況下,AMD也是不得不靠膠水技術來堆核心數量,以換取市場上的一席之地。

自己有工廠生產CPU芯片的英特爾,在片內總線的選擇上,更偏向對效率的追求。所以針對不同的應用場景使用了不同的結構。比如在MSDT平臺上,因為核心數量相對少,大多數家用級用戶很少需要去應對大規模併發數據運算的情況,因此選擇了延遲控制更好的環形總線(RingBus)。

CPU片內總線結構差異對遊戲性能的影響


所謂RingBus就是通過一個環路(實際上包括順時針和逆時針兩個同心環)將所有的核心以及其他模塊串在一起,核心(或模塊)與總線連接的地方被稱為Ring Stop。如此一來,核心之間的數據交互結構距離都不會超過Ring Stop的一半(因為Ring是雙向的),保證了數據交換的延遲儘可能低且穩定。同時,再增加核心的時候,也不會增加互聯的複雜度,只需要增加一個新的Ring Stop即可。

當然RingBus也不是萬能的,當核心數量超過12個的時候,會因為RingBus過長而導致平均延遲增大到不可接受的地步。為此英特爾在需要更多核心的HEDT平臺上,引入了網狀(Mesh)結構。相比於Ring結構,Mesh解決了規模擴增的靈活性,因為在Mesh結構中加入新的節點,並不會導致延遲像Ring結構那樣線性的增加。實際上Mesh針對早期HEDT平臺所使用的2-Ring結構,還降低了內部核心數據交換延遲以及RAM和I/O的訪問延遲。不過HEDT平臺並不是我們這篇文章的重點,所以這裡就不展開了。

實際的測試結果顯然比理論更直觀:

CPU片內總線結構差異對遊戲性能的影響


採用Ring結構的Core i9-9900K在延遲方面大幅優於同樣8C/16T的Ryzen 7 3800X,而對於採用雙CCD進行片上膠水的Ryzen 9 3950X更是遙遙領先。而在遊戲過程中,CPU本身就需要頻繁的對內存進行讀寫操作,這就將Ring結構的優勢充分發揮了出來。即使對於騎砍2這樣的大規模集團作戰的遊戲來說,理論上應該能夠很好的發揮多核心的優勢,但是因為Zen2架構的內核互聯延遲太高,因此在我們開篇的測試數據中,16C32T的3950X反而被Core i9-9900K遠遠甩開。

考慮到無論是英特爾還是AMD,目前的微架構都將至少還要延續2代產品,因此可以肯定地說,在未來一段時間內,如果要為打遊戲而裝電腦,英特爾處理器還是最靠譜的選擇。



分享到:


相關文章: