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

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

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

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

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

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

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

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

01 引言

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

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

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

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

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

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

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

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

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

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

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

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

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

02 相關(guān)工作

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

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

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

03 V1Model架構(gòu)

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

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

圖2 V1Model的流水線結(jié)構(gòu)

3.1解析器和包頭向量

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

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位,以開始識別下一報頭字段。每個解析器單元都設(shè)計為具有最大解析速率(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地址等)。

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

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

每個階段可以存儲所有用于物理MATs的Ac個VLIW指令。每個VLIW命令都為每個報頭字段ALU和外部單元攜帶單獨的指令。數(shù)據(jù)從PHV通過ACBW位寬交叉開關(guān)(ACB)提供給這些處理單元。與匹配交叉開關(guān)(TCB和SCB)類似,該交叉開關(guān)的每一位都由PHV的所有字段驅(qū)動。動作信息(除了動作指令存儲在專用存儲器中)和外部單元使用的有狀態(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架構(gòu)允許字打包,創(chuàng)建多個SRAM塊的打包單元。

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

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

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

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

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

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

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

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

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

07 討論

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

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

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

08 結(jié)論

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

—END—

審核編輯 :李倩

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

    關(guān)注

    115

    文章

    3749

    瀏覽量

    80670
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1608

    瀏覽量

    48979
  • 模擬器
    +關(guān)注

    關(guān)注

    2

    文章

    862

    瀏覽量

    43087

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

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

收藏 人收藏

    評論

    相關(guān)推薦

    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)絡(luò)的不同領(lǐng)域提供廣泛功能,該套件能夠以高達200 Gbps甚至更高的數(shù)據(jù)傳輸速率支持FPGA。這
    的頭像 發(fā)表于 07-25 14:55 ?795次閱讀

    AI編譯器技術(shù)剖析

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

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

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

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

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

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

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

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

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

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

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

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

    Triton編譯器的原理和性能

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

    TVM編譯器的整體架構(gòu)和基本方法

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

    為什么C語言要進行編譯

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

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

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

    請問STC89C51單片機型號是不是沒有沒有P4口的了?

    本人剛剛學(xué)習(xí)單片機,所以在書上看到的單片機是沒有P4口的。但是我在淘寶或者立創(chuàng)商城上找到的都是有P4口的51或52單片機。 我想問問哪位大神是不是現(xiàn)在已經(jīng)沒有那種沒有P4口的STC單片
    發(fā)表于 10-26 06:24