0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

能否打造一款不是最優(yōu)的但也能支持P4語言的編譯器呢?

sakobpqhz ? 來源:算力基建 ? 作者:算力基建 ? 2022-10-20 14:00 ? 次閱讀

隨著P4語言正逐漸成為可編程交換機事實上的可編程語言標準,越來越多的人希望打造屬于自己的支持P4語言的可編程交換機或智能網(wǎng)卡或DPU,因此支持P4語言的編譯器的開發(fā)至關重要。P4編譯器負責如何將邏輯查找表映射到物理表,同時要滿足程序中的數(shù)據(jù)和控制依賴關系,這里面涉及到數(shù)學的最優(yōu)化問題。拋開最優(yōu)化問題不談,能否打造一款不是最優(yōu)的但也能支持P4語言的編譯器呢?打造編譯器的過程中會遇到什么問題呢?有沒有可以參考的開源資源?或許2022年8月26日arvix網(wǎng)站上的一篇文章會告訴你答案。本文將該文的部分內(nèi)容進行了翻譯。

P4語言已成為編程基于可重構匹配動作表的可編程交換機的主要選擇。V1Model架構是匹配動作架構最廣泛可用的實現(xiàn)。P4聯(lián)盟開發(fā)的開源編譯器前端可以執(zhí)行語法分析,并導出使用最新版本的P4(也稱為P416)編寫的程序的硬件獨立表示。但是還需要后端編譯器將此硬件表示映射到V1Model交換機的硬件資源。然而,沒有開源后端編譯器可用于檢查P416程序在V1Model交換機上的可實現(xiàn)性。不同硬件供應商提供的專有工具完成上述映射過程。但是,它們是封閉源代碼,我們看不到內(nèi)部的映射機制。這抑制了針對可重構匹配動作表架構的新映射算法和創(chuàng)新指令集的實驗。此外,專用后端編譯器成本高昂,并附帶各種保密協(xié)議。這些因素對可編程交換機相關研究提出了嚴峻挑戰(zhàn)。在這項工作中,我們?yōu)榛赩1Model架構的可編程交換機提供了一個開源P416后端編譯器。它使用基于啟發(fā)式的映射算法將P416程序映射到V1Model交換機的硬件資源上。它允許開發(fā)人員快速原型化不同的映射算法。它還提供了P416程序的各種資源使用統(tǒng)計信息,從而能夠在多個P416方案之間進行比較。

bac4730a-5037-11ed-a3b6-dac502259ad0.png

01 引言

RMT體系結構和P4語言:近年來,基于可重構匹配動作表(RMT)[1]體系結構的可編程交換機越來越流行,并得到了廣泛部署。P4語言已經(jīng)成為對這些交換機進行編程的事實上的標準語言。自引入[2]以來,P4編程語言經(jīng)歷了幾次架構變化。其最新版本(版本16[3],也稱為P416)是該語言最初版本(P414[4])的主要重新設計。它被設計為支持具有不同架構的各種目標交換機(即,軟件交換機[5]、smartNIC[6]、eBPF[7]、FPGA[8]、RMT[9]、dRMT[10]等)進行分組處理。

bbd87e8a-5037-11ed-a3b6-dac502259ad0.png

圖1:V1Model交換機P4編譯器的高級工作流程

基于RMT架構[1]的交換機被設計為多級流水線,其中包含可重新配置的解析器、多個匹配動作階段、逆解析器和一些其他固定模塊(例如,數(shù)據(jù)包復制引擎和流量管理器等[1、9、11])。P4提供了描述這些交換機架構和運行時行為的語言結構。交換機的體系結構描述包括流水線的高層結構、功能和接口。硬件支持的功能作為單獨的目標特定庫提供。它們都由硬件供應商提供。數(shù)據(jù)平面程序開發(fā)人員使用目標特定庫和P4核心庫來描述RMT交換機作為P4程序的運行時行為。

RMT交換機的P4編譯器:P4語言本質上與目標硬件無關,只提供高級命令式結構來表達各種數(shù)據(jù)包處理架構的數(shù)據(jù)包處理邏輯。因此,P4程序和RMT架構的組件之間沒有直接映射。將給定P4程序轉換為目標交換機執(zhí)行的特定可執(zhí)行程序(二級制的硬件配置),P4編譯器就是十分必要的。P4編譯器(圖1)通常由三個主要組件組成[12]:a)負責語法分析的獨立于目標的前端,驗證目標無關約束(例如,P4所需的無環(huán)控制流),并將P4程序轉換為目標無關中間表示(IR),表示一系列邏輯匹配動作表之間的控制流。b) 用于獨立于體系結構的優(yōu)化的中間端[13],以及c)基于目標硬件的后端編譯器,負責生成可被目標硬件執(zhí)行的可執(zhí)行程序。它需要資源分配機制(圖1中的后端編譯器映射階段)來將IR組件映射到目標硬件資源上。它計算P4程序的報頭字段到RMT硬件的包報頭向量(PHV)映射、包報頭解析器狀態(tài)機(在IR中表示為解析圖)到RMT軟件的狀態(tài)表映射以及P4程序控制流(表示為邏輯匹配動作表的圖)到RM硬件的物理匹配動作表映射。這些映射需要符合目標相關約束(即,報頭向量容量、縱橫寬度、匹配動作表維度等)。如果P4程序可以成功地映射到目標硬件上;以可執(zhí)行硬件配置二進制文件的形式從映射(圖1中的后端編譯器配置生成階段)生成相應的硬件配置。該可執(zhí)行配置由控制平面加載到目標硬件中,并由目標硬件執(zhí)行。

RMT交換機的開源P4編譯器:P4C[14]是P4語言的參考編譯器。它由P4語言聯(lián)盟開發(fā),并遵循圖1所示的工作流程[12,14]。它支持兩種不同的基于RMT架構的交換機:a)廣泛稱為V1Model架構的simple_switch模型[15]和b)P4語言協(xié)會開發(fā)的便攜式交換機架構(PSA)[16](尚未完全實現(xiàn))。然而,P4C沒有為這兩種體系結構的實際目標硬件提供任何后端編譯器。P4C前端+中端將中間表示作為獨立于硬件的JSON文件發(fā)送,參考軟件交換實現(xiàn)(BMV2[17])在各自硬件架構的CPU仿真上執(zhí)行它們。它沒有考慮實際目標交換機中存在的實際硬件資源限制。因此,P4C不能決定給定P4程序在這些RMT交換機的特定實例上的可實現(xiàn)性。除了P4C,文獻中還提供了其他幾種用于基于RMT架構的交換機的開源編譯器。然而,其中一些[18]與P4語言的舊版本(P414[4])一起使用,這在架構上與P4的當前版本(P416[3])不同。其他一些工作側重于不同的分組處理語言(例如,Domino[19,20])、不同的架構(drmt[10])或不同的硬件平臺(例如,F(xiàn)PGA[8])。因此,研究人員需要使用專有后端編譯器[21]來決定是否可以使用RMT交換機實現(xiàn)P4程序。然而,這些系統(tǒng)是封閉源代碼的,價格昂貴,并且通常附帶額外的保密協(xié)議[9]。

為什么選擇開源后端編譯器:后端編譯器負責將P4程序映射到目標硬件,在P4生態(tài)系統(tǒng)中起著至關重要的作用。它負責測量RMT管道中P4項目的資源消耗??删幊探粨Q機包含有限的硬件資源。因此,具有實現(xiàn)特定任務所需的最少硬件資源的P4程序更具資源效率。近年來,大量研究工作使用了BMV2[17]模擬器,將P4C編譯器作為其目標平臺,該模擬器缺乏能夠考慮目標硬件中存在的實際資源約束的后端編譯器。沒有這樣的后端編譯器,研究人員無法測量其方案的資源需求,也無法比較多個方案的資源使用效率。在最壞情況下,如果沒有后端編譯器,這些P4程序不能被實現(xiàn)為P4硬件。因此,這些P4程序是否可以通過現(xiàn)實生活中的RMT交換機直接執(zhí)行,這一點值得商榷。

后端編譯器需要解決幾個計算上難以解決的問題[18,22],以找到P4程序到目標硬件的映射。優(yōu)化算法通常需要很長時間才能完成[18,22]。隨著網(wǎng)絡內(nèi)計算[23]范式的不斷興起,各種研究工作[24–28]也將重點放在數(shù)據(jù)平面中的不同網(wǎng)絡功能的開發(fā)上。在這些情況下,研究人員不需要安裝具有各種功能的成熟交換機所需的大型P4程序。當數(shù)據(jù)平面程序員需要將如此大的P4程序適配到目標硬件中時,最佳映射算法是很重要的。另一方面,使用基于啟發(fā)式算法的開源后端編譯器可以為研究人員提供關于使用目標硬件實現(xiàn)較小P4程序的快速決策。

后端編譯器使用的映射算法對P4程序的資源(TCAM/SRAM存儲、ALU數(shù)量、縱橫寬度等)要求以及目標交換機中的可用資源非常敏感[18]。P4程序的資源需求可以在運行時改變(例如,IPv4轉發(fā)表的大小增加),這可能使先前計算的映射無效。隨著網(wǎng)絡虛擬化[29]和網(wǎng)絡即服務[30]范式的快速擴散,按需網(wǎng)絡功能部署的需求也在快速增長。它需要在短時間內(nèi)快速自動部署定制的數(shù)據(jù)平面算法。因此,開發(fā)更快、更有效的啟發(fā)式/近似映射算法具有重大意義。使用封閉源代碼后端編譯器,研究人員無法嘗試不同的映射算法。除此之外,在RMT體系結構中開發(fā)支持復雜指令的硬件單元(P4語言中的extern[3])越來越受到關注[31–33]。

沒有開源后端編譯器,研究人員無法將新開發(fā)的外部程序集成到P4程序中并測試其有效性。從頭開始獨立開發(fā)后端編譯器需要各種與映射計算無關的常見和重復任務(即IR解析、使用圖形數(shù)據(jù)結構表示解析的IR、建模硬件資源等)。開源后端編譯器可以讓研究人員專注于開發(fā)高效的映射算法,而不是專注于重復的任務。

受這些因素的啟發(fā),在這項工作中,我們?yōu)榛赩1Model[15]架構的RMT交換機設計了一個開源P4后端編譯器(僅映射階段)。據(jù)我們所知,它是第一個基于RMT架構的可編程交換機的開源P416后端編譯器。后端編譯器需要兩個輸入:a)V1Model交換機中可用資源的規(guī)范,以及b)P4C前端生成的P4程序的中間表示(IR)。由于P4C不提供任何接口來指定V1Model交換機的硬件資源,我們開發(fā)了基于JSON格式的硬件規(guī)范語言(HSL)(第3.3節(jié))來表示V1Model交換機的硬件資源規(guī)范。在討論了第2節(jié)中的相關工作之后,我們在第3節(jié)中簡要討論了V1Model架構以及HSL(第3.3節(jié))。然后,我們介紹了P4C編譯器前端提供的IR結構(第4節(jié))。該后端使用各種現(xiàn)有的基于啟發(fā)式的算法來分配V1Model交換機中的流水線資源并計算IR到硬件資源的映射。據(jù)我們所知,這是文獻中第一個考慮P4程序中使用有狀態(tài)內(nèi)存產(chǎn)生的約束及其對映射決策的影響的方案我們在第5節(jié)中討論了映射過程的細節(jié)。一旦找到映射,計算硬件配置二進制文件需要將映射直接轉換為硬件指令代碼。由于這項工作不專注于在V1Model switch的任何特定實例上執(zhí)行P4程序,因此我們將硬件配置二進制生成留給未來的工作。我們在第6節(jié)中討論了后端編譯器的實現(xiàn)和評估,并在第5節(jié)中總結了本文。

為什么選擇V1Model: V1Model是開源P4C編譯器前端完全支持的唯一RMT交換機。此外,主要可編程交換機硬件供應商都支持V1Model架構[9,34]。近年來,大量研究工作[35]將V1Model用作其參考硬件架構(通過使用商用硬件或BMV2模擬器)。此外,V1Model類似于P4語言版本14中使用的抽象交換機模型。因此,所有基于P414的研究工作都可以映射到該模型。最后,P4聯(lián)盟正在標準化的最新可編程交換機架構是PSA[16],它也類似于V1Model架構。本文中介紹的后端編譯器可以通過少量修改擴展到PSA體系結構。由于這些原因,V1Model是大量研究工作的代表性硬件架構,我們選擇為該架構構建后端編譯器。

后端編譯器不做什么:本文中介紹的后端編譯器僅支持V1Model架構和P4語言(P416)結構的子集,它們涵蓋了廣泛的用例。系統(tǒng)支持的P4結構的完整列表,見[36]。專有硬件可以具有用于數(shù)據(jù)包處理的特殊指令(如extern[3]),并且它們的系統(tǒng)中也可以具有附加約束。我們的后端編譯器不是任何專有系統(tǒng)的完全替代品。它使用啟發(fā)式算法將P4程序映射到V1Model交換機,盡管存在有效映射,但它可以部分拒絕P4程序(如其他可編程交換機后端[37])。此外,由于使用了啟發(fā)式,它不能保證計算映射的最優(yōu)性。最后,后端編譯器僅覆蓋圖1所示的映射階段,而不覆蓋硬件配置生成階段。

02 相關工作

在[2]中,作者介紹了一種基于RMT架構的抽象交換轉發(fā)模型,并提出了P4編程語言,以與協(xié)議無關的方式對交換機進行編程。作者還介紹了兩級P4語言編譯器的高級結構。雖然這項工作簡要地討論了解析器和TDG映射問題,但缺少一個完整的后端編譯器開源系統(tǒng)。在[38]中,作者解決了將數(shù)據(jù)包解析邏輯映射到基于CAM的硬件的問題。然而,它的主要重點是合成解析器硬件電路。因此,它不能直接用于P416后端編譯器。在[18]中,作者討論了將RMT交換機的邏輯匹配動作表映射到物理匹配動作表的計算復雜性。他們提出了一種基于整數(shù)線性規(guī)劃的方法(用于最優(yōu)解)以及一些基于啟發(fā)式的映射計算方法

該系統(tǒng)是一個開源項目。然而,它不能支持P4程序中的狀態(tài)存儲器,這是網(wǎng)絡內(nèi)計算范式的關鍵要求。上面提到的所有工作都是為了支持P4語言的初始版本(又稱P414[4]),并且沒有一個提供完整的后端編譯器。此外,最新版本的P4語言(又稱P416)在架構上與P414不同。因此,這些工作不能直接用于編譯P416程序

P4語言聯(lián)盟開發(fā)的P416語言的參考編譯器是P4C[14]。其前端可以為各種目標體系結構(包括RMT體系結構)編譯P416程序。它通過基于CPU的仿真為兩個RMT架構交換機提供后端支持:V1Model[15]和PSA[16]。這些仿真后端在CPU上執(zhí)行P4程序的中間表示。它沒有規(guī)定對RMT交換機的硬件資源進行建模。在決定P416程序是否可以映射到真實的目標硬件時,無法考慮硬件資源限制約束。在[8]中,作者為基于FPGA的平臺提供了一個開源P416后端編譯器。然而,該系統(tǒng)的基本塊與RMT體系結構中使用的物理匹配動作表不同。這里,基本塊可以執(zhí)行匹配和分支指令;并且基于它們的結果,可以執(zhí)行一些動作。因此,與原始RMT架構相比,它在每個節(jié)點中提供了更靈活的匹配動作能力。 RMT體系結構的文獻中幾乎沒有其他開源編譯器編譯器[37,39]。然而,它們[37]要么不支持P416中編寫的程序作為輸入,要么是為基于非RMT架構的硬件平臺設計的[39]。除了這些開源系統(tǒng),還存在一些能夠支持RMT交換機的P416語言的專有后端編譯器[21,40]。然而,它們本質上是封閉源代碼,不提供對其內(nèi)部機制的訪問。

03 V1Model架構

V1Model是可重構匹配動作(RMT)體系結構的一個實例。其分組處理流水線(圖2)由多個布置在多個階段中的組件組成。本節(jié)描述其組件、不同資源類型的規(guī)范以及它們?nèi)绾翁幚頂?shù)據(jù)包。最后,在第3.3節(jié)中,我們提出了一種硬件規(guī)范語言來表示V1Model交換機的資源。

bc1211a4-5037-11ed-a3b6-dac502259ad0.png

圖2 V1Model的流水線結構

3.1解析器和包頭向量

在V1Model架構中,傳入數(shù)據(jù)包首先通過基于TCAM的[38]可編程解析器(圖3),該解析器執(zhí)行以狀態(tài)機形式提供的解析邏輯(由后端編譯器轉換為狀態(tài)表)。解析器包含兩個主要構建塊:

a)報頭識別單元:它包含一個PB位寬的緩沖區(qū),用于在數(shù)據(jù)包中查找并在每個周期識別最多H個包頭。它還包含一個TCAM,能夠存儲PTL條目以實現(xiàn)狀態(tài)表。每個TCAM條目包含當前解析狀態(tài)的信息和要匹配的頭字段的值(作為位序列)。在每個周期,可以在TCAM中查找最大f TC查找字段值(每個字段具有最大查找寬度f TW b)和當前狀態(tài)。TCAM條目為PTW b寬,用于存儲查找字段值和當前狀態(tài)值。每個條目還包含指向RAM單元的指針,用于存儲下一個解析狀態(tài)和要由提取單元提取的報頭字段的位置。

b) 提取單元:在TCAM中匹配數(shù)據(jù)包后,存儲在SRAM的匹配索引單元中的信息被加載到提取單元中。該單元可以提取最大PEW位寬數(shù)據(jù)作為報頭字段,并將其存儲在字段緩沖器中。在每個循環(huán)中,提取幾個報頭字段,并將下一個解析狀態(tài)饋送到報頭識別單元,以便在下一個循環(huán)中在TCAM中進行匹配。報頭識別單元可以向前移動到分組中的最大PMA位,以開始識別下一報頭字段。每個解析器單元都設計為具有最大解析速率(PRate)吞吐量。V1Model交換機可以并行部署多個解析器單元,以實現(xiàn)更高的數(shù)據(jù)包解析速率。

完成解析后,所有提取的報頭字段從字段緩沖器發(fā)送到分組報頭向量(PHV)。PHV可以存儲不同類型的字段;類型i的所有f iC報頭字段均為f iW位寬(i=1至F)。PHV中的多個字段可以合并在一起以形成更大的標題字段。除了解析的頭字段之外,PHV還存儲硬件特定元數(shù)據(jù)(即入口端口、時間戳等)。PHV通過寬首部總線傳遞到流水線中的后續(xù)組件(圖2的N個匹配動作階段)。

3.2 匹配-動作階段

經(jīng)過解析之后,PHV通過N個匹配動作階段進行入口階段處理。每個階段(圖3)包含T個TW位寬的TCAM塊單元,每個TCAM塊能夠存儲TL條目。它還包含S個SW位寬SRAM塊,每個塊都能夠存儲SL條目。TCAM塊用于實現(xiàn)三元/范圍/前綴/精確匹配的物理匹配動作表(MAT)。一小部分SRAM塊(SM塊)用于實現(xiàn)基于哈希表(使用HSK-way-Cuckoo哈希表[41,42])的物理匹配動作表以進行精確匹配,其余用于存儲其他信息(即動作參數(shù)、下一個MAT地址等)。

這些較小的物理匹配動作表可以獨立運行,也可以分組在一起,以匹配階段中更寬的標題字段??珉A段的MATs可以合并以實現(xiàn)更長的表。頭字段分別通過兩個交叉開關TCB(TCBW位寬)和SCB(SCBW位寬度)從PHV提供給基于TCAM和SRAM的物理MA。對于MATs中的每個條目,有一個相應的指針指向相應的動作信息(動作參數(shù),動作指令,地址和下一個MAT地址等)。

在MATs中找到匹配時,從存儲器加載相應的動作信息。每個匹配動作階段包含用于PHV的每個字段的獨立算術邏輯單元(ALU),用于并行計算。兩個或多個單元可以組合在一起,以在較大的字段上執(zhí)行計算。除了每個報頭字段ALU單元外,在每個匹配操作階段,還可以使用固定數(shù)量的外部單元(散列、計數(shù)器、寄存器、計量器等)進行特殊操作(即散列計算、計數(shù)、存儲/加載狀態(tài)等)。

每個階段可以存儲所有用于物理MATs的Ac個VLIW指令。每個VLIW命令都為每個報頭字段ALU和外部單元攜帶單獨的指令。數(shù)據(jù)從PHV通過ACBW位寬交叉開關(ACB)提供給這些處理單元。與匹配交叉開關(TCB和SCB)類似,該交叉開關的每一位都由PHV的所有字段驅動。動作信息(除了動作指令存儲在專用存儲器中)和外部單元使用的有狀態(tài)存儲器被分配在可用SRAM塊(分別為SA塊和SS SRAM塊)的單獨塊中。

每一級包含MP內(nèi)存端口(每一個MBW位寬),能夠在一個時鐘周期內(nèi)從/讀寫到SRAM單元。這些端口用于從SRAM塊讀取/寫入數(shù)據(jù),以獲得精確的MATs、動作存儲器和狀態(tài)存儲器。每個基于TCAM的MAT都可以存儲固定數(shù)量的匹配條目(最大容量)。另一方面,基于SRAM的MAT可以存儲可變數(shù)量的條目,因為相同的SRAM塊被分配用于存儲匹配條目、動作條目和有狀態(tài)存儲器。

用于精確匹配MAT、動作存儲器和有狀態(tài)存儲器的總SRAM塊(可用總S塊中的SM、SA和SS)的數(shù)量取決于第5.3節(jié)的邏輯到物理MAT映射算法。為了優(yōu)化SRAM使用,RMT架構允許字打包,創(chuàng)建多個SRAM塊的打包單元。

多個條目(匹配、操作或有狀態(tài)內(nèi)存條目)可以存儲在一個單元中,以減少SRAM浪費。這種可變打包格式不會影響匹配性能,匹配單元可以將數(shù)據(jù)包與存儲在同一SRAM塊中的多個字進行匹配。

bc4cdae6-5037-11ed-a3b6-dac502259ad0.png

圖3 RMT流水線上的一個匹配-動作階段

數(shù)據(jù)包復制引擎和流量管理器(PRE&TM):完成入口階段處理后,數(shù)據(jù)包被提交到出口端口的隊列。PRE&TM是一個不可編程的組件,負責處理端口隊列中的數(shù)據(jù)包生命周期,調(diào)度數(shù)據(jù)包,并在必要時復制數(shù)據(jù)包。除了這些,還有兩個用于計算和驗證數(shù)據(jù)包校驗和的固定功能組件。由于它們是固定的功能塊,我們不討論它們的細節(jié)。

輸出階段:一旦從出口端口的隊列中取出數(shù)據(jù)包,它將進行出口階段處理。出口級類似于入口級,并共享相同的物理組件進行處理。后端編譯器在入口線程和出口線程之間分配資源,使它們不會妨礙彼此的數(shù)據(jù)包處理活動

逆解析器:出口階段處理完成后,數(shù)據(jù)包通過逆解析器塊。它重新組合來自分組報頭向量字段的數(shù)據(jù)和有效載荷。則分組最終通過輸出信道傳播。

3.3 V1Model硬件規(guī)范語言

后端編譯器需要有關V1Model交換機可用資源的信息。然而,公開可用的P4C編譯器不提供任何接口來對其進行建模。包頭向量、可編程解析器和匹配動作階段是V1Model架構中的主要可編程組件。我們開發(fā)了一種基于JSON格式的硬件規(guī)范語言(HSL),用于指定基于V1Model架構的交換機的可編程組件中的可用資源。該語言允許指定PHV中可以容納多少標題字段,以及這些字段的位寬。類似地,它允許指定可編程解析器中使用的各種硬件資源的維度(第3.1節(jié))。它還允許指定匹配操作階段的數(shù)量和每個階段中的資源數(shù)量,如第3.2節(jié)所述。附錄B顯示了V1Model交換機的示例硬件規(guī)范。

因為篇幅有限,中間內(nèi)容請參考原文,此處翻譯略。

07 討論

局限:我們的后端編譯器支持大多數(shù)P4語言結構,涵蓋廣泛的用例。然而,它仍然不支持可變長度的頭解析和操作中的直接有狀態(tài)內(nèi)存訪問。通過仔細設計P4程序,可以避免這兩種情況。除此之外,它不支持P4語言中可用的原子事務機制。我們正在努力支持這些P4語言功能。

擴展V1Model體系結構:PSA[16]或Tofino[47]是V1Model架構的擴展,其中架構支持不同的外部。這些架構可以在一個原子指令中組合多個更簡單的指令,以實現(xiàn)復雜的功能。例如,Tofino交換機[9]中可用的寄存器extern可以執(zhí)行四路分支指令。它可以在一對寄存器(間接有狀態(tài)內(nèi)存)上執(zhí)行兩個if-else對和讀-修改-寫操作。然而,要在P4程序中使用它們(或任何新的外部),P4C編譯器前端需要支持它們。之后,這些外部可以在我們的后端編譯器中得到支持,只需對P4程序的計算映射進行少量修改。

編寫新的映射算法:我們的后端編譯器以模塊化的方式設計。在解析P4程序的中間表示之后,它將預處理信息(頭信息、解析圖、TDG)存儲在各種方便的數(shù)據(jù)結構(哈希表、圖等)中。除此之外,它還以各種方便的數(shù)據(jù)結構(哈希表、數(shù)組等)存儲V1Model交換機中的資源。作為一個開源項目,研究人員可以重用這些處理過的信息來編寫用于頭映射、解析圖映射和TDG映射的新算法。關于源代碼組織的詳細討論參見[36]。

08 結論

P4程序的可實現(xiàn)性給出快速決策。我們相信,這個開源后端編譯器可以作為一個經(jīng)濟高效的平臺,用于分析現(xiàn)實世界V1Model交換機中P4(版本16)程序的可實現(xiàn)性和資源消耗。它允許研究人員作為一個開源平臺來試驗不同的映射算法。通過支持各種外部單元,它可以擴展到支持V1Model架構的其他派生。這可以為可編程交換機研究人員提供一個開放平臺,用于試驗不同的映射算法和V1Model交換機的不同變體。

—END—

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 程序
    +關注

    關注

    116

    文章

    3754

    瀏覽量

    80735
  • 編譯器
    +關注

    關注

    1

    文章

    1616

    瀏覽量

    49009
  • 模擬器
    +關注

    關注

    2

    文章

    862

    瀏覽量

    43117

原文標題:【開源】手把手教你寫支持RMT架構的P4語言后端編譯器!

文章出處:【微信號:算力基建,微信公眾號:算力基建】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    鞍山163.18平米戶外P4條柵屏安裝完工

    近期,我公司在鞍山成功完成了項特殊項目——163.18㎡戶外P4條柵屏的安裝,這項目的圓滿完成,不僅展示了我們的技術實力,更體現(xiàn)了我們對品質及細節(jié)的追求。鞍山P4戶外LED條柵屏安
    的頭像 發(fā)表于 09-04 15:14 ?171次閱讀
    鞍山163.18平米戶外<b class='flag-5'>P4</b>條柵屏安裝完工

    XTR111只是一款支持三線制的4-20ma變送器芯片嗎?能否支持二線制?

    XTR117, XTR106, XTR101, XTR105, XTR112, XTR108, XTR116, XTR115XTR111只是一款支持三線制的4-20ma變送器芯片嗎?能否
    發(fā)表于 08-02 08:15

    P4 Suite for FPGA面市 P4 Suite for FPGA主要功能解析

    ? ? ? ? ? 基本簡介 P4 Suite for FPGA是一款 綜合性工具套件, 可在數(shù)字網(wǎng)絡的不同領域提供廣泛功能,該套件能夠以高達200 Gbps甚至更高的數(shù)據(jù)傳輸速率支持FPGA。這
    的頭像 發(fā)表于 07-25 14:55 ?842次閱讀

    AI編譯器技術剖析

    隨著人工智能技術的飛速發(fā)展,AI編譯器作為種新興的編譯技術逐漸進入人們的視野。AI編譯器不僅具備傳統(tǒng)編譯器的功能,如將高級
    的頭像 發(fā)表于 07-17 18:28 ?1395次閱讀

    人工智能編譯器與傳統(tǒng)編譯器的區(qū)別

    人工智能編譯器(AI編譯器)與傳統(tǒng)編譯器在多個方面存在顯著的差異。這些差異主要體現(xiàn)在設計目標、功能特性、優(yōu)化策略、適用范圍以及技術復雜性等方面。以下是對兩者區(qū)別的詳細探討,旨在全面解析其內(nèi)在差異。
    的頭像 發(fā)表于 07-17 18:19 ?1595次閱讀

    Meta發(fā)布基于Code Llama的LLM編譯器

    近日,科技巨頭Meta在其X平臺上正式宣布推出了一款革命性的LLM編譯器,這模型家族基于Meta Code Llama構建,并融合了先進的代碼優(yōu)化和編譯器功能。LLM
    的頭像 發(fā)表于 06-29 17:54 ?1424次閱讀

    SEGGER編譯器優(yōu)化和安全技術介紹 支持最新C和C++語言

    SEGGER編譯器是專門為ARM和RISC-V微控制設計的優(yōu)化C/C++編譯器。它建立在強大的Clang前端上,支持最新的C和C++語言
    的頭像 發(fā)表于 06-04 15:31 ?1346次閱讀
    SEGGER<b class='flag-5'>編譯器</b>優(yōu)化和安全技術介紹 <b class='flag-5'>支持</b>最新C和C++<b class='flag-5'>語言</b>

    C語言:嵌入式開發(fā)中的關鍵編譯器角色

    嵌入式程序開發(fā)跟硬件密切相關,需要使用C語言來讀寫底層寄存、存取數(shù)據(jù)、控制硬件等,C語言和硬件之間由編譯器來聯(lián)系,些C標準不
    發(fā)表于 04-26 14:53 ?504次閱讀
    C<b class='flag-5'>語言</b>:嵌入式開發(fā)中的關鍵<b class='flag-5'>編譯器</b>角色

    STM32CubeMX生成FreeRTOS的MDK工程不支持AC6編譯器嗎?

    使用STM32CubeMX生成FreeRTOS的MDK工程,選擇AC5編譯器可以編譯成功,選擇AC6編譯器有很多錯誤,是STM32CubeMX生成FreeRTOS的MDK工程還不支持A
    發(fā)表于 03-06 08:24

    使用P4和Vivado工具簡化數(shù)據(jù)包處理設計

    電子發(fā)燒友網(wǎng)站提供《使用P4和Vivado工具簡化數(shù)據(jù)包處理設計.pdf》資料免費下載
    發(fā)表于 01-26 17:49 ?0次下載
    使用<b class='flag-5'>P4</b>和Vivado工具簡化數(shù)據(jù)包處理設計

    【飛騰派4G版免費試用】仙女姐姐的嵌入式實驗室之三~配置PhyGCC飛騰編譯器

    ,是一款 Linux下深度適配飛騰CPU的高性能編譯器,以二進制包形式發(fā)布,支持AArch64架構 獲取PhyGCC PhyGCC編譯器并沒有
    發(fā)表于 12-16 19:12

    Triton編譯器的原理和性能

    Triton是種用于編寫高效自定義深度學習原語的語言編譯器。Triton的目的是提供個開源環(huán)境,以比CUDA更高的生產(chǎn)力編寫快速代碼,但也
    的頭像 發(fā)表于 12-16 11:22 ?2629次閱讀
    Triton<b class='flag-5'>編譯器</b>的原理和性能

    TVM編譯器的整體架構和基本方法

    有將近兩個月沒有學習些新東西,更新下博客了。直在忙公司的個項目,是做一款支持LSTM和R
    的頭像 發(fā)表于 11-30 09:36 ?2208次閱讀
    TVM<b class='flag-5'>編譯器</b>的整體架構和基本方法

    為什么C語言要進行編譯

    為什么我們編寫的C語言要進行編譯?什么是編譯編譯時發(fā)生了什么? 機器無法理解我們編寫的C語言,而編譯
    的頭像 發(fā)表于 11-24 15:47 ?1198次閱讀
    為什么C<b class='flag-5'>語言</b>要進行<b class='flag-5'>編譯</b>

    編譯器的優(yōu)化選項

    個程序首先要保證正確性,在保證正確性的基礎上,性能也是個重要的考量。要編寫高性能的程序,第,必須選擇合適的算法和數(shù)據(jù)結構;第二,應該編寫編譯器能夠有效優(yōu)化以轉換成高效可執(zhí)行代碼的
    的頭像 發(fā)表于 11-24 15:37 ?834次閱讀
    <b class='flag-5'>編譯器</b>的優(yōu)化選項