當前位置:
首頁 > 科技 > AMD逆襲的新武器:Zen 2核心詳解

AMD逆襲的新武器:Zen 2核心詳解

來源:本文由公眾號半導體行業觀察(ID:icbank)翻譯自「wikichip」,作者David Schor,謝謝。

AMD逆襲的新武器:Zen 2核心詳解

在過去的一個月里,AMD發布了許多公告。AMD正在準備推出他們的第三代Ryzen台式機處理器。這些處理器將利用AMD最新的微架構Zen 2,採用台積電領先的7nm工藝製造。

我們先來看看核心的微架構改進。

Zen 2

新晶元的核心是Zen 2。這一核心將用於AMD的移動APU、高性能台式機處理器和數據中心晶元。

Zen 2是繼Zen之後的下一個主要微架構。隨著Zen 2的推出,AMD承諾分別基於Cinebench 1T和Spec2006進行13-15%的IPC改進。要了解他們如何能夠提取IPC的收益,我們需要仔細研究基礎微架構的變化。

AMD逆襲的新武器:Zen 2核心詳解

前端

前端的很大一部分已經進行了重新設計。在沒有標識分支的典型情況下,從下一個64B塊的地址開始從第一級高速緩存提取指令。Zen最初提供了一個64 KiB L1緩存。它由4路256組(4 ways of 256 sets)組成。Zen 2對L1進行了大改。關聯性已經變為8路64組(8 ways of 64 sets),緩存大小減半到32 KiB。如果沒有AMD的更多細節,我們很難描述其他變化,更高的關聯性也應該降低未命中率。AMD指出,通過減小指令緩存的大小,並利用該區域來增加一些其他組件,特別是BPU和OC,它們能夠從每單位面積的硅中獲得更好的性能。順便說一下,從組織的角度來看,Zen 2現在和英特爾的Skylake和Sunny Cove是一樣的。值得注意的是,一級指令高速緩存轉換後備緩衝區保持不變。它仍然是完全關聯的64條目深度緩衝區,能夠存儲4 KiB、2 MIB和1 GiB頁面。

高速緩存線保持64位元組,每個周期可以獲取32個位元組。在不太常見的高速緩存未命中的情況下,L1將為包含未命中地址的線生成填充請求。每個周期最多32個位元組可以從共享L2傳輸到指令高速緩存。

AMD逆襲的新武器:Zen 2核心詳解

除了由提取生成的填充請求外,分支預測器和預提取器還可以發出額外的請求。這一點很重要,因為預取器能夠利用空間局部性以避免停頓。這是AMD花了很多努力改進的另一個領域。

AMD逆襲的新武器:Zen 2核心詳解

最好的預測器會贏嗎?

分支預測單元的目標是預測條件分支的下一個地址。換句話說,猜測它是否被佔用了。這裡的基本思想是猜測指令流的路徑,而不是通過停止流水線直到最終知道路徑來浪費周期。然而,這必須明智地進行,因為糟糕的預測會直接導致工作的浪費。當發生分支時,將其存儲在分支目標緩衝區中,以便可以更容易地確定和採用(或不採用)後續分支。諸如Zen之類的現代微處理器通過不僅將最後一個分支的歷史而是最後幾個分支的歷史存儲在全局歷史寄存器(GHR)中,以便提取分支之間的相關性(例如,如果採用較早的分支,則可能也將採用下一個分支),從而進一步實現這一點。

AMD逆襲的新武器:Zen 2核心詳解

Zen上的BTB是一個三級緩存——每個緩存都具有更高的容量,但代價是更長的延遲。Zen 2保持結構不變,但幾乎將第二級和第三級BTB中的條目數量增加了一倍,分別從256和4K增加到512和7K條目。

順便說一句,在Zen中,第一級(L0)BTB中的查找是零延遲查找,而L1和L2 BTB中的後續表查找分別導致一個和四個冒泡。目前還不清楚Zen 2是否改變了這些成本。

Zen採用了一種稱為散列感知器的動態預測器。利用人工智慧的大肆宣傳,營銷人員喜歡將其稱為神經網路預測器。感知器是最簡單的機器學習形式,與其他一些機器學習演算法相比,感知器本身更易於實現硬體。它們往往也比gshare之類的預測器更準確,但它們的實現確實更複雜。Zen上的實際實現尚不清楚,但我們至少可以描述一個簡單的實現是什麼樣子的。當處理器遇到條件分支時,它的地址用於從感知器表中獲取感知器。對於我們來說,感知器只不過是權重向量。這些權重表示歷史分支的結果與預測的分支之間的相關性。例如,考慮以下三種模式:「TTN」、「NTN」和「NNN」。如果這三個模式都導致下一個分支沒被採用,那麼或許我們可以說前兩個分支之間沒有相關性,並為它們分配很小的權重。先前分支的結果是從全局歷史寄存器中獲取的。寄存器中的各個位用作輸入。輸出值是計算出的權重和先前分支歷史的點積。在這種情況下,負輸出可能意味著「不採取」,而其他值可能被預測為「採取」。值得一提的是,分支歷史之外的其他輸入也可以用於推理相關性,儘管不知道是否有現實世界的實現利用了這一想法。Zen的實現可能要複雜得多,或許是對不同類型的歷史進行採樣。儘管如此,它的工作方式仍然是一樣的。

AMD逆襲的新武器:Zen 2核心詳解

鑒於Zen流水線的長度和寬度,錯誤的預測可能導致超過100個槽被刷新。這直接導致性能的損失。Zen 2保留了散列感知器預測器,但增加了第二層新的TAGE預測器。這個預測器是由Andre Seznec在2006年首次提出的,它是對Michaud的PPM類預測器的改進。TAGE預報器贏得了上一屆分支預測(CBP)大賽(2006-2016)的全部四項冠軍。TAGE的理念是,程序中的不同分支需要不同的歷史長度。換句話說,對於某些分支,非常小的歷史記錄效果最好。例如1位預測器:如果某一分支以前採用過,它將再次採用。不同的分支可能依賴於先前的分支,因此需要更長的多位歷史以充分預測它是否將被採用。標記幾何歷史長度(TAGE)預測器由多個全局歷史表組成,這些表使用不同長度的全局歷史寄存器索引,以便涵蓋所有這些情況。寄存器使用的長度形成了幾何級數,因此得名。

AMD逆襲的新武器:Zen 2核心詳解

使用TAGE預測器的想法是,它試圖找出哪個分支的歷史數量最適合哪個分支,將最長的歷史優先於較短的歷史。

AMD逆襲的新武器:Zen 2核心詳解

這種多預測器方案類似於分支目標緩衝區的分層。第一級預測器是感知器,用於快速查找(例如,單周期解析度)。第二級TAGE預測器是一個複雜的預測器,需要很多周期才能完成,因此必須在簡單預測器之上分層。換句話說,L2預測器速度較慢,但更好,因此用於對較快和較不準確預測器的結果進行雙重檢查。如果L2預測器與L1預測器不同,則當TAGE預測器覆蓋感知器預測器時,會發生少量刷新,提取返回並使用L2預測,因為L2預測器被認為是更準確的預測。

除了使用TAGE預測器以外,AMD沒有透露更多的內容。值得指出的是,至少就字面而言,TAGE預測器不再被認為是最好的預測器。之後,Seznec在TAGE預測器上進行了改進,增加了統計校正器(TAGE-SC),後來又增加了循環預測器(TAGE-SC-L)。替代方案包括BATAGE預測器。儘管如此,我們得到的結論是,有更多的機會找到更好的分支預測器,這是一個非常活躍的研究領域。

AMD表示,與之前的感知器相比,新的分支預測單元顯示出的誤預測率目標低30%。因為現代微處理器的精確度高達90%。與在Zen中的實現相比,這種錯誤預測率的大幅降低將直接轉化為更高的IPC。事實上,如此大的改進可以單獨佔據Zen 2聲稱的性能提升的很大一部分。

AMD逆襲的新武器:Zen 2核心詳解

改變現狀

關於AMD的這一代晶元,我們注意到的一件事是現狀的變化。從歷史上看,英特爾在設計最先進、性能最高的預測器方面投入了大量資源。另一方面,AMD往往落後於一個「足夠好」的更保守的預測器。隨著Zen的成功,Zen 2的情況變得有所不同。雖然AMD正在摘取所有唾手可得的成果,但它們現在正直接瞄準英特爾,而英特爾一直擁有無可爭辯的領先優勢。換句話說,AMD似乎對他們目前的核心設計充滿信心,可以騰出更多的資源來解決次要的缺陷。

OC模式改進

Zen 2和Zen一樣,有兩種主要的操作模式:IC(指令緩存)模式和OC(op緩存)模式。對於熟悉英特爾術語的人來說,這些術語類似於英特爾的DSB和MITE路徑。在Zen 2中,IC模式路徑本身基本保持不變,本文不再討論。另一方面,OC模式得到了增強。

當指令被解碼時,它們被存儲在Op緩存中。與L1I緩存一樣,OC也對64位元組的緩存行進行操作。這使你能夠在每個條目中存儲多達8個宏操作(不用說,64b imm/etc將佔用兩個槽)。在Zen中,OC被組織為8路32組(8 ways with 32 sets),這意味著總容量可達2048 MOP。在Zen 2中,AMD將容量翻了一番,達到4096 MOP。據推測,這是通過將組的數量增加一倍來實現的。順便說一下,啟用SMT後,每個線程的容量只有原來的一半。這意味著在Zen 2上,每個線程的有效容量都等於Zen 1的整個OP緩存。

AMD逆襲的新武器:Zen 2核心詳解

一旦在OC模式下操作,流水線將保持在這種模式,直到讀取地址發生未命中為止。在OC模式下,前端的其餘部分為時鐘門控。假設所有其他條件都相同,較大的OC應允許Zen 2保持在OC模式以獲得更長的指令流,從而提高IPC吞吐量,同時降低前端的功耗。與Zen一樣,OC模式能夠在每個周期向後端發送多達8條指令,是IC模式帶寬的兩倍。值得注意的是,由於重新排序緩衝區仍然只能處理每個周期最多6個MOP,因此OP緩存上的更高吞吐量僅有助於確保op隊列保持填充狀態。

AMD逆襲的新武器:Zen 2核心詳解

AMD逆襲的新武器:Zen 2核心詳解

後端

從調度中,宏操作被發送到整數集群或浮點單元。退出控制單元(RCU;在其他設計中也稱為ROB)負責跟蹤所有未完成的操作。在Zen和Zen 2中,RCU都執行完整的宏操作,每個周期最多可以重命名6個MOP,可以退出8個MOP。Zen上的重新排序緩衝區能夠跟蹤正在進行的192個宏操作。這在Zen 2上增加了大約15%,達到了224個。這與Skylake上的重新排序緩衝區大小相同。

AMD逆襲的新武器:Zen 2核心詳解

與Bulldozer一樣,Zen和Zen 2都有三種指令分類類型:FastPath Single、FastPath Double和VectorPath(又名Microcode)。FastPath Single表示一條指令由一個宏操作組成,而FastPath Double表示一條指令由兩個宏操作組成。VectorPath意味著兩個以上的宏操作(例如REP MOV)。當宏操作到達調度器時,在重命名/映射之後,宏操作被分解為微操作。一般來說,自Zen以來,大多數指令都是轉化為FastPath Single密集宏操作。隨著AVX2的變化,這一點看起來更加真實。

AMD逆襲的新武器:Zen 2核心詳解

作者註:自從引入Zen以來,AMD不再努力消除x86指令、宏操作和微操作之間的歧義。此外,再加上充滿錯誤的手冊,這使得正確描述流水線變得極其困難。儘管如此,WikiChip仍然堅持描述儘可能精確的實現模型。

整數

從調度開始,每個周期最多可以將6個MOPS調度到整數執行集群。在這裡,MOP被分解為組成它們的微操作。例如,FastPath Single指令(例如從內存做加法reg,[mem])將被分解為2個微操作:載入和加法。一般來說,μops可以分為ALU和載入/存儲兩種類型。μops將根據其類別發送到適當的調度程序。像Zen一樣,Zen 2有4個ALU調度器。這些調度器現在有兩個更深的條目,這意味著它們可以略微更深地排隊進入無序窗口。理論上,從早期操作數可用性中提取一些額外並行性的可能性很小。載入/存儲μops將在AGU調度程序中排隊。在Zen中,有兩個AGU調度器,每個調度器的深度為14個條目。在Zen 2中,這些調度器被合併成一個包含28個條目的大型調度器。如你所見,儘管他們選擇添加另一個AGU,但條目總數並沒有改變。

AMD逆襲的新武器:Zen 2核心詳解

調度器將μops排隊,同時跟蹤相關性和操作數可用性。一旦準備就緒,就會發送μops以供執行。每個調度器每個周期每個流水線可以發送一個μop。就像在Zen中一樣,有4個ALU。Zen 2引入了另一個AGU,所以現在有3個。我們將在後面的一節中對此進行詳細討論。

AMD逆襲的新武器:Zen 2核心詳解

浮點

從調度開始,每個周期最多可以向浮點單元發送4個MOP。這裡MOP被分解為組成它們的微操作,這些微操作在非調度等待緩衝器處排隊,該緩衝器可以提前啟動存儲器請求。最後,μops在36條目調度隊列中排隊等待執行。大多數浮點集群都沒有改變,包括調度器、它們的大小和執行流水線。此外還有4個執行流水線。

Zen 2最大的變化是流水線的寬度。Zen、Zen+和Zen 2都支持FMA和AVX2。在Zen 2之前,256位指令被解碼為FastPath Double,產生兩個MOP,每個最終都被分解成兩個μop。這不僅消耗了額外的資源,而且意味著256位向量的吞吐量是128位向量的吞吐量的一半。Zen 2拓寬了整個FPU數據路徑。現在每個流水線都是256位寬。這大概意味著所有那些256位指令都將解碼為FastPath Single,生成單個MOP並提高整個有效吞吐量。熟悉英特爾AVX2的人會知道,對於AVX2繁重的工作負載,當處於turbo模式時,由於功耗較高,AVX2偏移將會啟動。Zen 2本身沒有類似的偏移,但你可能會注意到,作為AMD Precision Boost 2的一部分的節流,它控制著溫度和電流,並確保平台功率不會過高。

AMD逆襲的新武器:Zen 2核心詳解

AMD逆襲的新武器:Zen 2核心詳解

值得一提的是,現在兩個FMA單元都是256位寬,每個Zen 2內核的總FLOP是16個雙精度FLOP /周期。這意味著他們已經與Haswell、Broadwell,以及所有英特爾主流客戶端處理器達到了同等水平。但是,Cascade Lake每個周期能夠進行32次雙精度浮點運算。

AMD逆襲的新武器:Zen 2核心詳解

請注意,目前AMD不支持AVX512。然而,AMD擴展整個浮點單元為方便地支持AVX512作為FastPath Double鋪平了道路,就像他們最初對AVX2所做的那樣。雖然並非所有這些都是微不足道的補充,但是期望第一個實現使用較窄的流水線(例如256位)實現並非不合理。就像在Zen和Zen+上實現AVX2一樣,以一半的吞吐量運行。

內存子系統

內存子系統在Zen 2上得到了增強。L2數據TLB現在增加了512個條目,並且通過2M頁面粉碎(2M page smashing)對1G頁面有了新的支持。AMD表示,他們能夠從L2 TLB訪問中節省一些周期。

在整數集群方面,AMD增加了一個新的AGU單元。與其他兩個單元不同的是,這個單元專門用於存儲。換句話說,載入μops可以在AGU0和AGU1上執行,而存儲可以發送到三個單元中的任何一個。

更重要的是,為了適應FPU單元的擴展,數據高速緩存的內存帶寬也增加了一倍。Zen有一個雙埠數據緩存。它能夠執行兩次讀取或每個周期執行一次讀取和一次寫入。以前,兩個埠都是128位的。Zen 2現在能夠執行完整的256位存儲和載入。將帶寬加倍到64位元組將對依賴於AVX2或複製/流任務的一類工作負載產生積極影響。請注意,L2帶寬仍為32B,L3也是如此。

AMD逆襲的新武器:Zen 2核心詳解

AMD逆襲的新武器:Zen 2核心詳解

AMD逆襲的新武器:Zen 2核心詳解

稍微超出核心的話題是三級緩存。L3支持L2緩存的32B/周期帶寬。此緩存是犧牲緩存。它由來自CCX的4個核心中的任何一個的L2犧牲線填充,L2標籤在L3中被複制。在Zen 2中,AMD將L3的大小增加了一倍,達到每個內核16 MiB-4 MiB緩存分片(cache slice)。這對AMD的影響更明顯,原因在於他們的chiplet設計。對於這一點,我們會在未來的文章中討論。

AMD逆襲的新武器:Zen 2核心詳解

**點擊文末閱讀原文,可閱讀英文原文。

*免責聲明:本文由作者原創。文章內容系作者個人觀點,半導體行業觀察轉載僅為了傳達一種不同的觀點,不代表半導體行業觀察對該觀點贊同或支持,如果有任何異議,歡迎聯繫半導體行業觀察。

今天是《半導體行業觀察》為您分享的第2001期內容,歡迎關注

半導體第一垂直媒體

實時 專業 原創 深度

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 半導體行業觀察 的精彩文章:

華晶科技出新招,三大新技術有何看點|半導體行業觀察
美企把持下的EDA產業現狀

TAG:半導體行業觀察 |