首頁 > 軟體

英特爾第11代Rocket Lake與 AMDRyzen 5000處理器核心架構

2021-05-16 17:00:59

在這一點上,所有英特爾處理器產品線都已從Skylake核心體系結構中轉移,以一種或另一種形式採用Sunny Cove。

第11代移動產品陣容充分利用了Willow Cove,但在更成熟的節點上基本上是相同的設計,並且配對了更多的快取。第11代Rocket Lake-S和Ice Lake-SP CPU都利用Sunny Cove,儘管它們位於不同的節點上,但是基本原理還是相同的。

在這篇文章中,我們來看看英特爾的Sunny Cove核心體系結構和AMD最新的Zen 3核心,它們為Ryzen 5000系列提供了強大的支援,並相互比較。

英特爾Sunny Cove與AMD Zen 3前端:獲取,解碼和分支

與之前的產品相比,Zen 3和Sunny Cove都進行了幾項重大更改以提高吞吐量。由於使用了較小的節點,各種指令佇列和流水線更寬,寄存器更密集,並且重新整理了緩衝區以改善OoO執行。

在英特爾方面,與上一代產品相比,前端在很大程度上沒有變化。指令獲取和預解碼(解密指令長度)仍為16位元組寬,每個週期傳送6個宏操作。指令佇列也固定在50個條目(2×25)上,具有融合類似指令的能力。

解碼器是一種四向1:1設計,可以將僅分解為一個微操作的簡單宏操作轉換為微操作。存在附加的1:4複數解碼器,可以將複數宏運算解碼為一到四個微運算。

最後,微碼定序器ROM(MS ROM)用於涉及最複雜指令的翻譯,這些指令可以分解為四個以上的微操作,可能涉及多個分支和迴圈,佔用幾個解碼週期。

儘管仍是帶有64B視窗的8路快取記憶體,但儲存解碼指令的微操作緩衝區已從1.5K(在Skylake上)增長到2K(在Sunny Cove上)。總體而言,前端仍然從解碼器分派五或四條指令,或者從u-op快取記憶體分派六條指令(如果已有翻譯可用)。

AMD的Zen 2和Zen 3在該部門有些不同,主要是在分支預測和解碼器方面。儘管英特爾並未分享有關其核心級預測器的許多細節,但據稱它使用Sunny Cove改善了準確性。另一方面,AMD使用已在Zen 3中更新的TAGE預測器,包括「零氣泡」預測,具有更快的操作快取序列,更低的延遲以及在出現錯誤預測的情況下更快地恢復。

此外,雖然解碼器只是4路x86解碼器,但指令提取和預解碼的寬度幾乎是Intel的Skylake和Sunny Cove核心的兩倍:32位元組和16位元組。相比之下,英特爾的L2頻寬為64位元組/週期,而Zen 3被限制為32位元組/週期。與此相符,Sunny Cove具有更寬的L2 TLB,最多可包含2K條指令,而AMD的Zen 3僅限於512條。L1TLB寬度很可能在64個條目的兩種核心體系結構上都是相同的。

與Sunny Cove相似,Zen 2和Zen 3都具有8路32KB L1I快取,其中Zen 1 3上的L1分支目標緩衝區翻倍為1,024個條目(Zen 2上為512個),L0保持不變為16,而L2 BTB略寬一點,為6.5K (在Zen 2上6K)。AMD使用標準的x86解碼器,該解碼器每個週期可解碼4條宏指令,而微操作快取可提供多達8條快取的指令,使其比標準解碼管線更有效。

大多數現代處理器的u-op快取在大多數情況下的命中率都超過75%。此外,儘管英特爾在預取階段處理指令融合(每個週期使用邏輯/算術指令以及隨後的條件分支進行處理),但AMD在操作快取中進行處理(主要使用分支指令),從而進一步提高其頻寬。

總體而言,前端是否向u-op佇列傳遞4或8條指令,具體取決於快取的指令是否可用或是否需要完整的解碼過程。AMD的Zen 2和3核心具有1:2解碼器,而MS ROM用於分解為兩個以上指令的複雜指令。

在Intel核心的情況下,宏操作佇列,指令解碼佇列和微操作快取記憶體保持在運行在同一物理核心上的不同SMT執行緒之間的分區,而AMD允許微操作快取記憶體,解碼器和MSROM進行操作。在同一位置的SMT執行緒之間競爭性地共享。同樣適用於IDQ和MSROM。

Sunny Cove與Zen 3後端:重新排序,重新命名和執行(和註冊)

10nm工藝的使用(在RKL中使用更大的裸片)使Intel能夠顯著增加OoO緩衝區的寬度,從Skylake的224增加到Sunny Cove的384,使其成為所有x86處理器中最大的,從而大大提高了Sunny Cove的OoO執行力。此外,與Skylake相比,排程程式和寄存器也得到了顯著增強。Sunny Cove的指令排程程式或保留站的大小增加了50%以上,共有160個條目(Skylake中為97個),而Integer寄存器的大小也增加了100到280。FP寄存器的數量也從168適度增加了至224。

AMD的Zen核心在早期與Bulldoze設計類似,將其Integer和Floating-Point流水線分開。這樣,兩個流水線的排程程式佇列是分開的,非常類似於硬體寄存器。儘管在同一節點上,但Integer端對Zen 3的關注度很高,將其排程程式增加到96(從Zen 2上的92)。現在共享ALU和AGU排程程式,每個排程程式的寬度為24個條目。早先,ALU排程程式有四個,總寬度為64,而AGU僅有一個24寬排程程式。

儘管ROB的條目數從224個略微增加到256個,但與英特爾的352個條目的設計仍然相去甚遠。寄存器的情況與此相同,整數寄存器的固定值為192,而英特爾有280個檔案的空間。流水線末端的執行單元數量沒有增加,但是已經進行了改頭換面。INT ALU有三個專用單位,三個用於AGU,一個用於分支單位,一個在ALU和分支單位之間共享。總體而言,AMD仍設法將其Zen 3的Integer吞吐量提高了30%(從Zen 2中的7)提高到10:ALU中的4個,AGU中的3個,分支機構中的一個和Store部門中的兩個。

在OoO設計中,在執行時,一條指令儲存在ROB中,並且當提交該指令時,該值將移動到物理寄存器檔案中。ROB在執行之後但在提交之前儲存指令值,作為一系列資訊(指令類型,標誌,結果寄存器的名稱),並且微體系結構寄存器檔案儲存每個微體系結構寄存器的最新提交值。寄存器別名表(RAT),也稱為「重新命名錶」,將邏輯對映到物理寄存器,指示ROB和物理寄存器之間每個微體系結構寄存器的最新定義的位置。

在浮點端,管道再次擴大,從Zen 3中四個埠擴展到六個埠。排程程式佇列幾乎增加了一倍,從36個增加到64個,而非排程佇列則保持不變,為64個。 ,Zen 3具有令人印象深刻的128寬FP佇列。相反,英特爾的RS限於160,整數和浮點指令之間共享。較大的ROB(大小為352)彌補了這一點。

ADD和MU / MAC已分離,兩個埠專用於F2I(FP到INT寄存器),其中一個也處理儲存。FP總共註冊了160個條目,寬度為256位。有趣的是,載入儲存單元(處理得很好……載入儲存)也是256位寬的,每個週期傳輸32個位元組。相比之下,由於更高的64位元組L1D頻寬,Sunny Cove可以在同一週期上完成128位載入和64位載入。

Zen 3每個週期可以執行三個負載或兩個儲存,而Zen 2可以執行兩個負載和一個儲存。如您所見,頻寬是相同的,但是更加靈活。由於有兩個專用埠和緩衝區寬度,英特爾的Sunny Cove核心可以同時執行兩個負載和兩個儲存。後者的載入和儲存緩衝區分別寬得多,分別為128和72。另一方面,Skylake在載入緩衝區中有72個條目,在儲存緩衝區中有56個條目。Zen 3僅限於44個負載和48個儲存條目。

執行單位

Sunny Cove是第一個支援本機AVX 512執行(不劃分為微操作)的核心,它可以在每個週期執行512位FMA(融合乘和加)或兩個256位FMA。INT吞吐量固定為每個週期四個指令。與移動伺服器不同,伺服器核心每個週期可以執行一個FMA512加上兩個256位FMA。相比之下,AMD的Zen 3可以執行兩個256位MUL / MAC和兩個256位ADD。FMAC需要四個週期,比Zen 2少一個週期。它的INT吞吐量令人印象深刻,每個週期最多10條指令(包括負載和BR)。

要記住的另一個提示是,Sunny Cove的L1D快取記憶體的容量為48KB,而便利的儲存/儲存數量則更多,而Zen 3(如Zen 2)的容量限制為32KB。兩者的L2快取記憶體大小相同,為512KB。

#科技日報#


IT145.com E-mail:sddin#qq.com