朱玉龙-YL
2023.09.28 05:25

【芝能智芯——SiFive 的 P870 內核】

●執行引擎

P870 具備大型的後端資源,與 ARM Cortex X 系列或 AMD Zen 4 相當。這些資源包括重新排序緩衝區、寄存器文件容量等,儘管加載和存儲隊列略顯不足。iFive 選擇了一種執行端口布局,與 ARM 的 Cortex X2 策略有一些相似之處。他們採用了小型分佈式調度程序,從而產生了大量的執行端口。

分佈式調度程序可能很難調整,因為任何一個調度隊列填滿都可能導致停滯。為了解決這個問題,SiFive 採用了與蘋果 Firestorm 類似的策略。每個執行集羣都有一個非調度隊列,以防止調度隊列填滿時重命名器停止。

在執行單元方面,P870 共有六個端口,端口數量與 Cortex X2 相匹配,但每個端口都有一個專用的調度隊列。Cortex X2 將兩個端口用於處理分支操作,P870 則使其中一個分支端口也能夠處理一般的 ALU 操作。

●浮點運算

浮點執行資源相對於整數執行資源而言較為有限。P870 具備兩個浮點管道,每個管道能夠處理最常見的操作。SiFive 着重強調了其浮點加法和乘法的出色性能,僅需 2 個週期的延遲。與大多數其他現代 CPU 不同,SiFive 的演示表明 P870 具備獨立的浮點和矢量寄存器文件。

具備不同數量的重命名寄存器,並且彼此之間不是倍數關係(減少了融合情況的可能性)。浮點和矢量寄存器文件各自可以具備較低的端口數。供給兩個乘加單元所需的輸入達到了六個,較低的端口數應該能夠實現更節省空間的寄存器文件。

●矢量執行

P870 支持一對 128 位寬矢量執行管道,這在 RISC-V 領域是一大進步,P870 還引入了針對 RISC-V 的 LMUL 功能的獨特機制,稱為向量排序器,用於提高矢量指令的效率。

P870 支持矢量執行,配備了一對 128 位寬的管道。這在 P870 的架構中是一個弱點,但在 RISC-V 世界中仍然是一大進步。與之相比,其他 RISC-V 芯片,如 Ventana 的 Veyron V1,只具有標量 FP 執行能力,根本沒有矢量執行能力。一對 128 位的管道大致與 ARM 的 Neoverse N1 和 N2 上的管道相匹配,並且可以提供可接受的矢量性能。

P870 具有獨特的應對機制,針對 RISC-V 的 LMUL 特性,稱為矢量順序器。瘋狂的程序員可以將 LMUL 設置為大於 1 的值,使矢量指令尋址連續的寄存器塊。通常,奇怪的複雜事情是由解碼器將指令分割成多個微操作來處理的。

但如果 LMUL 不等於 1,這樣做將消耗大量的解碼器和重命名器帶寬。

如果 LMUL > 1,SiFive 會在管道中進一步拆分矢量指令。這樣做意味着 LMUL = 2 的指令將僅消耗一個解碼槽。

在順序器之後,將消耗多個調度器槽,並根據需要在多個週期內發出其微操作。對 SiFive 的管道幻燈片進行了仔細觀察,表明順序器可以在短短一個週期內分解矢量操作。

矢量單元在矢量順序器之後放置了自己的寄存器重命名階段,因此在分割矢量操作後分配物理寄存器。與所有新的架構功能一樣,我們必須拭目以待,看看 RISC-V 的 LMUL 會有多大的用處。

●緩存和內存訪問

P870 具有三個用於地址生成的管道,兩個管道可以處理加載或存儲操作,而第三個管道只處理加載操作。這種 AGU 設置與 Cortex X2、A710 和 Zen 4 上看到的類似。數據緩存訪問需要四個週期。有趣的是,地址生成、標籤查找和數據緩存訪問在三個週期內完成。P870 額外消耗一個管道階段(Drv)來移動數據。我想知道未來的設計是否會實現 3 個週期的加載到使用延遲。這應該是完全可行的。畢竟,AMD 的 Athlon 系列在古老的工藝節點上實現了 64 KB L1D 的 3 個週期延遲,同時以相似的頻率運行。

地址翻譯由 64 個條目的 DTLB 處理,並由 1024 個條目的 L2 TLB 支持。現在的 L2 TLB 有點小,但 ARM 的 Cortex A710 上也有類似大小的 L2 TLB。 L1D 缺失由共享的、非包含的 L2 緩存處理。L2 緩存是分段的,用於處理來自多個核心的訪問,並具有 16 個週期的延遲。

英特爾的 E-Cores 也是以四核簇的方式排列,具有共享的 L2 緩存,延遲為 20 個週期。SiFive 允許客户配置 L2 的大小,但他們以 4 MB 的 L2 配置作為示例。為了處理一致性,L2 複合體維護監聽過濾器來跟蹤核心私有緩存內容,其方案聽起來類似於 Cortex A72 使用的方案。

P870 的 L3 緩存在簇之間共享。L3 的容量和延遲取決於具體的實現,但 SiFive 在性能估算中使用了一個 16 MB 的 L3 配置。

●可靠性特徵

現代 CPU 都採取各種措施來保護各種緩存和其他結構,以提高可靠性。

SiFive 的 P870-A 是 P870 核心的汽車變種,特別注重錯誤檢測和糾正。除了用於緩存和寄存器文件的標準 ECC 和奇偶校驗保護集之外,SiFive 還實現了高可靠性緩存控制器和互連。

CPU 通常在它們的互連中的各種隊列和傳輸鏈路上都具備奇偶校驗或 ECC 保護。例如,Zen 4 的可擴展數據端口(Infinity Fabric 的接口)具備奇偶校驗保護,UMC(內存控制器)前面的隊列具備 ECC 保護。

圖片

SiFive 可以將一對 P870 核心以鎖步方式運行,以進一步提高可靠性,有點類似於飛機和航天器在多台計算機上運行冗餘計算。隨機位翻轉不太可能以相同的方式影響多個核心,因此這種方法通過基本上覆制所有核心結構來顯着提高可靠性,但代價是計算吞吐量較低。這種鎖步操作是可能的,因為每個核心在重置後都以明確定義的狀態開始,並且此後的操作是確定性的。

●最後

RISC-V 雖然起步較晚,但增長迅速。SiFive 的 P870 展示了能力和野心,希望能與 ARM 競爭並在市場上獲得份額。RISC-V 還需要發展更完善的軟件生態系統來支持其發展,這是個挑戰。

SiFive 的 P870 內核在性能和功能方面表現出色,為 RISC-V 生態系統的進一步壯大奠定了基礎。

本文版權歸屬原作者/機構所有。

當前內容僅代表作者觀點,與本平台立場無關。內容僅供投資者參考,亦不構成任何投資建議。如對本平台提供的內容服務有任何疑問或建議,請聯絡我們。