RISC-V是一種開放指令集架構(gòu),任何人都可以創(chuàng)建了解RISC-V指令的內(nèi)核,而無需擔(dān)心專利和許可證。SiFive是RISC-V領(lǐng)域的重要參與者,創(chuàng)建了可以授權(quán)給其他公司的定制RISC-V內(nèi)核。
在Hot Chips 2023上,SiFive展示了他們的P870內(nèi)核,旨在提供更高性能,并與ARM的Cortex X2或AMD的Zen 4c相媲美。
●P870核心概覽
高級內(nèi)核設(shè)計P870是SiFive的六核心,具備亂序執(zhí)行功能,具備強大的重排序緩沖區(qū)和指令融合能力,從而具備出色的重排序性能。?P870采用了現(xiàn)代化功能,如分支預(yù)測器解耦、非調(diào)度隊列以及RISC-V的矢量執(zhí)行能力。
從SiFive的流Pipeline來看,P870的誤預(yù)測損失僅為8個周期,相較于ARM、AMD和Intel的現(xiàn)代CPU,這是相當(dāng)短的。如果在Ex階段檢測到錯誤預(yù)測,并且可以從指令緩存重新啟動流水線,那么錯誤預(yù)測懲罰僅為7個周期。
●分支預(yù)測器?
P870的流水線以分支預(yù)測器為起點,用于確定指令的執(zhí)行方向。采用了具有16K表條目的八表TAGE預(yù)測器,通過在一組子預(yù)測器中選擇來進行方向預(yù)測。這種配置可以提供強大的分支預(yù)測性能。
P870的分支預(yù)測過程包括快速零氣泡預(yù)測器生成目標(biāo)地址,然后TAGE預(yù)測器完成其預(yù)測,最后進行間接分支預(yù)測。雖然間接預(yù)測會帶來三個周期的懲罰,但與競爭對手AMD Zen 4相似。
P870還提供了1024個零氣泡預(yù)測器條目,與AMD Zen 3相匹配。其他分支預(yù)測資源也很充足。64 個條目的返回地址堆棧。AMD 的 Zen 系列只有 32 個入口返回堆棧,并且已經(jīng)可以非常高精度地預(yù)測返回。間接預(yù)測器的 2.5K 條目容量也相當(dāng)可觀。Zen 4 有 3072 個條目間接預(yù)測器,而 Zen 3 有 1536 個條目。P870 的間接預(yù)測器正好位于這兩代 Zen 之間。
●指令獲取?
分支預(yù)測器生成獲取地址,P870的前端每個周期可以從64KB指令高速緩存中獲取36字節(jié)的數(shù)據(jù),相當(dāng)于9個RISC-V指令的字節(jié),以供6寬解碼器使用。此外,32條目的iTTLB用于虛擬地址到物理地址的轉(zhuǎn)換。
P870的解碼器可以處理多種指令融合情況,盡管SiFive沒有提供詳細說明。這種指令融合的潛力對于提高性能非常直觀,但需要編譯器的支持。
●執(zhí)行引擎
P870具備大型的后端資源,與ARM Cortex X系列或AMD Zen 4相當(dāng)。這些資源包括重新排序緩沖區(qū)、寄存器文件容量等,盡管加載和存儲隊列略顯不足。iFive選擇了一種執(zhí)行端口布局,與ARM的Cortex X2策略有一些相似之處。他們采用了小型分布式調(diào)度程序,從而產(chǎn)生了大量的執(zhí)行端口。
分布式調(diào)度程序可能很難調(diào)整,因為任何一個調(diào)度隊列填滿都可能導(dǎo)致停滯。為了解決這個問題,SiFive采用了與蘋果Firestorm類似的策略。每個執(zhí)行集群都有一個非調(diào)度隊列,以防止調(diào)度隊列填滿時重命名器停止。
在執(zhí)行單元方面,P870共有六個端口,端口數(shù)量與Cortex X2相匹配,但每個端口都有一個專用的調(diào)度隊列。Cortex X2將兩個端口用于處理分支操作,P870則使其中一個分支端口也能夠處理一般的ALU操作。
●浮點運算
浮點執(zhí)行資源相對于整數(shù)執(zhí)行資源而言較為有限。P870具備兩個浮點管道,每個管道能夠處理最常見的操作。SiFive著重強調(diào)了其浮點加法和乘法的出色性能,僅需2個周期的延遲。與大多數(shù)其他現(xiàn)代CPU不同,SiFive的演示表明P870具備獨立的浮點和矢量寄存器文件。
具備不同數(shù)量的重命名寄存器,并且彼此之間不是倍數(shù)關(guān)系(減少了融合情況的可能性)。浮點和矢量寄存器文件各自可以具備較低的端口數(shù)。供給兩個乘加單元所需的輸入達到了六個,較低的端口數(shù)應(yīng)該能夠?qū)崿F(xiàn)更節(jié)省空間的寄存器文件。
●矢量執(zhí)行
P870支持一對128位寬矢量執(zhí)行管道,這在RISC-V領(lǐng)域是一大進步,P870還引入了針對RISC-V的LMUL功能的獨特機制,稱為向量排序器,用于提高矢量指令的效率。
P870支持矢量執(zhí)行,配備了一對128位寬的管道。這在P870的架構(gòu)中是一個弱點,但在RISC-V世界中仍然是一大進步。與之相比,其他RISC-V芯片,如Ventana的Veyron V1,只具有標(biāo)量FP執(zhí)行能力,根本沒有矢量執(zhí)行能力。一對128位的管道大致與ARM的Neoverse N1和N2上的管道相匹配,并且可以提供可接受的矢量性能。?
P870具有獨特的應(yīng)對機制,針對RISC-V的LMUL特性,稱為矢量順序器。瘋狂的程序員可以將LMUL設(shè)置為大于1的值,使矢量指令尋址連續(xù)的寄存器塊。通常,奇怪的復(fù)雜事情是由解碼器將指令分割成多個微操作來處理的。
但如果LMUL不等于1,這樣做將消耗大量的解碼器和重命名器帶寬。?
如果LMUL > 1,SiFive會在管道中進一步拆分矢量指令。這樣做意味著LMUL = 2的指令將僅消耗一個解碼槽。
在順序器之后,將消耗多個調(diào)度器槽,并根據(jù)需要在多個周期內(nèi)發(fā)出其微操作。對SiFive的管道幻燈片進行了仔細觀察,表明順序器可以在短短一個周期內(nèi)分解矢量操作。
矢量單元在矢量順序器之后放置了自己的寄存器重命名階段,因此在分割矢量操作后分配物理寄存器。與所有新的架構(gòu)功能一樣,我們必須拭目以待,看看RISC-V的LMUL會有多大的用處。
●緩存和內(nèi)存訪問?
P870具有三個用于地址生成的管道,兩個管道可以處理加載或存儲操作,而第三個管道只處理加載操作。這種AGU設(shè)置與Cortex X2、A710和Zen 4上看到的類似。數(shù)據(jù)緩存訪問需要四個周期。有趣的是,地址生成、標(biāo)簽查找和數(shù)據(jù)緩存訪問在三個周期內(nèi)完成。P870額外消耗一個管道階段(Drv)來移動數(shù)據(jù)。我想知道未來的設(shè)計是否會實現(xiàn)3個周期的加載到使用延遲。這應(yīng)該是完全可行的。畢竟,AMD的Athlon系列在古老的工藝節(jié)點上實現(xiàn)了64 KB L1D的3個周期延遲,同時以相似的頻率運行。?
地址翻譯由64個條目的DTLB處理,并由1024個條目的L2 TLB支持。現(xiàn)在的L2 TLB有點小,但ARM的Cortex A710上也有類似大小的L2 TLB。 L1D缺失由共享的、非包含的L2緩存處理。L2緩存是分段的,用于處理來自多個核心的訪問,并具有16個周期的延遲。
英特爾的E-Cores也是以四核簇的方式排列,具有共享的L2緩存,延遲為20個周期。SiFive允許客戶配置L2的大小,但他們以4 MB的L2配置作為示例。為了處理一致性,L2復(fù)合體維護監(jiān)聽過濾器來跟蹤核心私有緩存內(nèi)容,其方案聽起來類似于Cortex A72使用的方案。?
P870的L3緩存在簇之間共享。L3的容量和延遲取決于具體的實現(xiàn),但SiFive在性能估算中使用了一個16 MB的L3配置。
●可靠性特征?
現(xiàn)代CPU都采取各種措施來保護各種緩存和其他結(jié)構(gòu),以提高可靠性。
SiFive的P870-A是P870核心的汽車變種,特別注重錯誤檢測和糾正。除了用于緩存和寄存器文件的標(biāo)準(zhǔn)ECC和奇偶校驗保護集之外,SiFive還實現(xiàn)了高可靠性緩存控制器和互連。
CPU通常在它們的互連中的各種隊列和傳輸鏈路上都具備奇偶校驗或ECC保護。例如,Zen 4的可擴展數(shù)據(jù)端口(Infinity Fabric的接口)具備奇偶校驗保護,UMC(內(nèi)存控制器)前面的隊列具備ECC保護。?
SiFive可以將一對P870核心以鎖步方式運行,以進一步提高可靠性,有點類似于飛機和航天器在多臺計算機上運行冗余計算。隨機位翻轉(zhuǎn)不太可能以相同的方式影響多個核心,因此這種方法通過基本上復(fù)制所有核心結(jié)構(gòu)來顯著提高可靠性,但代價是計算吞吐量較低。這種鎖步操作是可能的,因為每個核心在重置后都以明確定義的狀態(tài)開始,并且此后的操作是確定性的。
●最后
RISC-V雖然起步較晚,但增長迅速。SiFive的P870展示了能力和野心,希望能與ARM競爭并在市場上獲得份額。RISC-V還需要發(fā)展更完善的軟件生態(tài)系統(tǒng)來支持其發(fā)展,這是個挑戰(zhàn)。
SiFive的P870內(nèi)核在性能和功能方面表現(xiàn)出色,為RISC-V生態(tài)系統(tǒng)的進一步壯大奠定了基礎(chǔ)。
編輯:黃飛
?
評論
查看更多