chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

sakobpqhz ? 來源:算力基建 ? 作者:算力基建 ? 2022-10-20 14:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

01 引言

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

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

圖1:V1Model交換機(jī)P4編譯器的高級(jí)工作流程

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

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

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

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

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

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

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

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

為什么選擇V1Model: V1Model是開源P4C編譯器前端完全支持的唯一RMT交換機(jī)。此外,主要可編程交換機(jī)硬件供應(yīng)商都支持V1Model架構(gòu)[9,34]。近年來,大量研究工作[35]將V1Model用作其參考硬件架構(gòu)(通過使用商用硬件或BMV2模擬器)。此外,V1Model類似于P4語言版本14中使用的抽象交換機(jī)模型。因此,所有基于P414的研究工作都可以映射到該模型。最后,P4聯(lián)盟正在標(biāo)準(zhǔn)化的最新可編程交換機(jī)架構(gòu)是PSA[16],它也類似于V1Model架構(gòu)。本文中介紹的后端編譯器可以通過少量修改擴(kuò)展到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交換機(jī),盡管存在有效映射,但它可以部分拒絕P4程序(如其他可編程交換機(jī)后端[37])。此外,由于使用了啟發(fā)式,它不能保證計(jì)算映射的最優(yōu)性。最后,后端編譯器僅覆蓋圖1所示的映射階段,而不覆蓋硬件配置生成階段。

02 相關(guān)工作

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

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

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

03 V1Model架構(gòu)

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

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

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

3.1解析器和包頭向量

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

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

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

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

3.2 匹配-動(dòng)作階段

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

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

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

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

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

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

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

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

圖3 RMT流水線上的一個(gè)匹配-動(dòng)作階段

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

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

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

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

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

因?yàn)槠邢?,中間內(nèi)容請(qǐng)參考原文,此處翻譯略。

07 討論

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

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

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

08 結(jié)論

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

—END—

審核編輯 :李倩

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

    關(guān)注

    117

    文章

    3843

    瀏覽量

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

    關(guān)注

    1

    文章

    1672

    瀏覽量

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

    關(guān)注

    2

    文章

    1009

    瀏覽量

    45616

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【汽車行業(yè)指南】超越競(jìng)爭(zhēng)對(duì)手:用統(tǒng)的數(shù)據(jù)管理平臺(tái)Perforce P4,賦汽車軟件創(chuàng)新與安全合規(guī)

    軟件定義汽車的時(shí)代,數(shù)據(jù)管理已成核心競(jìng)爭(zhēng)力。指南指出:領(lǐng)先市場(chǎng)的關(guān)鍵,不是單點(diǎn)工具,而是個(gè)可擴(kuò)展、合規(guī)、高效的數(shù)據(jù)管理底座(如Perforce P4)。歡迎汽車開發(fā)者與管理者下載細(xì)讀。
    的頭像 發(fā)表于 01-16 15:26 ?680次閱讀
    【汽車行業(yè)指南】超越競(jìng)爭(zhēng)對(duì)手:用統(tǒng)<b class='flag-5'>一</b>的數(shù)據(jù)管理平臺(tái)Perforce <b class='flag-5'>P4</b>,賦<b class='flag-5'>能</b>汽車軟件創(chuàng)新與安全合規(guī)

    C語言和C++之間的區(qū)別是什么

    如C++的標(biāo)準(zhǔn)庫(kù)那樣集成度高和功能齊全。 6、編譯器語言特性: C++編譯器通常比C語言編譯器更加復(fù)雜,因?yàn)樗枰幚砀嗟?/div>
    發(fā)表于 12-11 06:23

    開源鴻蒙技術(shù)大會(huì)2025丨編譯器與編程語言分論壇:語言驅(qū)動(dòng)系統(tǒng)創(chuàng)新,編譯生態(tài)繁榮

    在萬物智聯(lián)的時(shí)代背景下,操作系統(tǒng)底層能力的構(gòu)建離不開編程語言編譯器的關(guān)鍵支撐。作為開源鴻蒙生態(tài)的核心技術(shù),語言設(shè)計(jì)與編譯器、虛擬機(jī)實(shí)現(xiàn)的進(jìn)步直接關(guān)系到開發(fā)效率、運(yùn)行性能與系統(tǒng)安全。本
    的頭像 發(fā)表于 11-20 17:24 ?881次閱讀
    開源鴻蒙技術(shù)大會(huì)2025丨<b class='flag-5'>編譯器</b>與編程<b class='flag-5'>語言</b>分論壇:<b class='flag-5'>語言</b>驅(qū)動(dòng)系統(tǒng)創(chuàng)新,<b class='flag-5'>編譯</b>賦<b class='flag-5'>能</b>生態(tài)繁榮

    飛凌嵌入式ElfBoard-Vim編輯之GCC編譯器的安裝

    GCC(GNU Compiler Collection)是由GNU開發(fā)的編程語言編譯器,最初是作為GNU操作系統(tǒng)的編譯器編寫的。GCC是個(gè)編譯器
    發(fā)表于 10-15 08:44

    汽車電子開發(fā)必看:基于Perforce P4實(shí)現(xiàn)ISO 26262合規(guī)認(rèn)證的版本管理解決方案

    目前全球唯通過ISO 26262認(rèn)證的版本控制系統(tǒng)Perforce P4!從代碼管理到審計(jì)追溯,保障研發(fā)的每步都經(jīng)得起嚴(yán)苛審核。龍智正在為更多車企和零部件廠商提供合規(guī)支持,歡迎交流
    的頭像 發(fā)表于 09-09 14:38 ?2244次閱讀
    汽車電子開發(fā)必看:基于Perforce <b class='flag-5'>P4</b>實(shí)現(xiàn)ISO 26262合規(guī)認(rèn)證的版本管理解決方案

    邊緣設(shè)備AI部署:編譯器如何實(shí)現(xiàn)輕量化與高性能?

    、ASIC等)上高效執(zhí)行的機(jī)器代碼。AI編譯器在AI模型的部署和優(yōu)化中扮演著關(guān)鍵角色,能夠顯著提升模型的運(yùn)行效率和性能。 ? AI編譯器的主要功能 ? AI編譯器的主要功能包括模型優(yōu)化、硬件適配、自動(dòng)調(diào)優(yōu)、動(dòng)態(tài)形狀
    的頭像 發(fā)表于 07-06 05:49 ?6581次閱讀

    【版本控制教程】如何使用Unreal Engine 5 + UE源代碼控制(Perforce P4

    項(xiàng)目越大,越需要靠譜的版本控制系統(tǒng)。Perforce P4不僅是Epic官方推薦的源代碼控制工具,更是大廠團(tuán)隊(duì)協(xié)作的核心支持。如何配置P4+UE?手把手教你怎么用↓↓↓
    的頭像 發(fā)表于 06-25 11:22 ?1441次閱讀
    【版本控制教程】如何使用Unreal Engine 5 + UE源代碼控制(Perforce <b class='flag-5'>P4</b>)

    Git vs Perforce P4:版本控制系統(tǒng)選型指南(附適用場(chǎng)景、團(tuán)隊(duì)類型)

    Git適合小團(tuán)隊(duì)靈活開發(fā),而Perforce P4更擅長(zhǎng)管理大型項(xiàng)目與二進(jìn)制資產(chǎn)。但你真的了解它們各自最適合的使用場(chǎng)景嗎?或許不是“非此即彼”,而是“如何共存”,推薦讀!
    的頭像 發(fā)表于 06-19 17:04 ?1367次閱讀
    Git vs Perforce <b class='flag-5'>P4</b>:版本控制系統(tǒng)選型指南(附適用場(chǎng)景、團(tuán)隊(duì)類型)

    兆松科技ZCC編譯器全面支持芯來科技NA系列處理

    近日,兆松科技(武漢)有限公司(以下簡(jiǎn)稱“兆松科技”)宣布正式發(fā)布高性能RISC-V編譯器ZCC 4.0.0版本。
    的頭像 發(fā)表于 06-11 09:56 ?1550次閱讀

    直觀易用的版本控制客戶端:Perforce P4 One簡(jiǎn)介及常見問題解答

    P4 One界面簡(jiǎn)潔、操作直觀,特別適合處理圖像、3D模型、視頻等二進(jìn)制資產(chǎn)的創(chuàng)意團(tuán)隊(duì)。無論是P4老用戶還是新手,都能快速上手,關(guān)鍵是——完全免費(fèi)!
    的頭像 發(fā)表于 06-05 10:12 ?1019次閱讀
    直觀易用的版本控制客戶端:Perforce <b class='flag-5'>P4</b> One簡(jiǎn)介及常見問題解答

    Perforce P4產(chǎn)品簡(jiǎn)介:無限擴(kuò)展+全球協(xié)作+安全管控+工具集成

    P4中文版產(chǎn)品簡(jiǎn)介,由龍智整理,歡迎下載&交流探討。來看看為什么3A游戲、虛擬制片、半導(dǎo)體團(tuán)隊(duì)都在用P4進(jìn)行版本控制。還未用過的小伙伴,也歡迎聯(lián)系免費(fèi)體驗(yàn)!
    的頭像 發(fā)表于 05-30 13:32 ?742次閱讀
    Perforce <b class='flag-5'>P4</b>產(chǎn)品簡(jiǎn)介:無限擴(kuò)展+全球協(xié)作+安全管控+工具集成

    【版本控制】Perforce P4服務(wù)安全配置指南(附常見漏洞、詳細(xì)配置參數(shù))

    安全提示近期,Perforce產(chǎn)品安全團(tuán)隊(duì)發(fā)現(xiàn)部分暴露在公網(wǎng)的P4(原HelixCore)服務(wù)存在潛在的配置風(fēng)險(xiǎn),可能導(dǎo)致源代碼泄露或未經(jīng)授權(quán)的訪問。網(wǎng)絡(luò)安全是Perforce的首要任務(wù)。作為
    的頭像 發(fā)表于 05-21 17:15 ?809次閱讀
    【版本控制】Perforce <b class='flag-5'>P4</b>服務(wù)<b class='flag-5'>器</b>安全配置指南(附常見漏洞、詳細(xì)配置參數(shù))

    RVCT編譯器是否比GNU的編譯器的代碼執(zhí)行速度更快?

    使用FX3S遇到了RVCT編譯器的問題。 1、在SDK的release note中有支持RVCT的描述, 但是在EZ USB Suite的設(shè)置中沒有找到RVCT的選項(xiàng), 請(qǐng)問支持的具體版本
    發(fā)表于 05-08 07:49

    HighTec編譯器全面支持芯馳科技車規(guī)MCU芯片E3650

    近日,HighTec與芯馳科技共同宣布HighTec編譯器套件將全面支持芯馳新代旗艦智控MCU-E3650芯片。此次合作,進(jìn)步豐富了芯馳車芯產(chǎn)品的工具鏈生態(tài),雙方將攜手為客戶提供高
    的頭像 發(fā)表于 04-28 15:20 ?1756次閱讀

    Perforce品牌及產(chǎn)品名更新:涵蓋版本控制Perforce P4(原Helix Core)、靜態(tài)代碼分析Perforce QAC(原Helix QAC)等

    Perforce推出全新P4平臺(tái)及P4 One客戶端!從廣為人知的“P4”到Helix Core到Perforce P4,此次品牌重塑是
    的頭像 發(fā)表于 03-28 15:04 ?1358次閱讀
    Perforce品牌及產(chǎn)品名更新:涵蓋版本控制Perforce <b class='flag-5'>P4</b>(原Helix Core)、靜態(tài)代碼分析Perforce QAC(原Helix QAC)等