FPGA中實現(xiàn)的硬件流水線是FAST平臺實現(xiàn)分組硬件處理的基礎(chǔ)。FPGA OS為FAST流水線提供了基本的分組收發(fā),高速DMA和查表等服務(wù)。FAST 流水線與FPGA OS的接口定義直接反映了分組硬件處理功能在FPGA OS和FAST流水線中的劃分,也是FAST平臺提供商必須考慮的關(guān)鍵問題。
一、FAST流水線接口定義
FAST流水線與FPGA OS之間定義了6個接口,分別是PIn/POut、CIn/COut,MEI和AUX。如下圖所示。
PIn/POut是流水線接收和發(fā)送分組的接口,CIn/COut分別是流水線接收和發(fā)送流水線控制信息的接口,MEI(Match Engine Interface)是流水線訪問FPGA OS提供的匹配引擎的接口。AUX是FPGA OS為FAST流水線提供時鐘、復(fù)位和時間戳等信息的接口。
各接口信號的詳細(xì)定義如下表所示。其中MEI接口中的信號寬度N1/N2與平臺相關(guān)。Clk時鐘頻率與平臺相關(guān),一般不小于125MHz。所有I/O信號的變化都與CLK同步。
FAST流水線通過Key接口向查表協(xié)處理器提交查表關(guān)鍵字,從FlowID接口接收返回的查表結(jié)果(匹配的地址)。包括是否匹配(match_flag為1表示匹配,0表示未匹配),以及匹配的規(guī)則序號FlowID等。
只要me_ready信號有效,F(xiàn)AST流水線可連續(xù)地向查表協(xié)處理器提交查表請求,查表協(xié)處理器必須保證這些查表結(jié)果按照查表請求提交的順序返回查表結(jié)果。
查表協(xié)處理器中規(guī)則的配置管理方法與具體的平臺相關(guān)。FAST庫在實現(xiàn)時必須對不同的平臺進(jìn)行適配,提供管理這些規(guī)則的API接口。
二、數(shù)據(jù)通路PIn/POut數(shù)據(jù)格式
PIn和POut兩個接口采用相同的分組格式,分組數(shù)據(jù)寬度為134位,其中低128位為報文數(shù)據(jù),高6位為控制信息,每個數(shù)據(jù)分組包括32字節(jié)的metadata和分組數(shù)據(jù),如下圖所示。
分組數(shù)據(jù)的格式為接口收發(fā)的以太網(wǎng)報文格式。其中以太網(wǎng)報文格式中不包含最后的4字節(jié)CRC字段,接收時,F(xiàn)PGA OS負(fù)責(zé)接收時進(jìn)行CRC校驗和剝離,發(fā)送時,F(xiàn)PGA OS會計算分組的CRC字段并附加在報文最后。
數(shù)據(jù)通路的[133:132]位為報文數(shù)據(jù)的頭尾標(biāo)識。01標(biāo)識報文頭部,11標(biāo)識報文中間數(shù)據(jù),10標(biāo)識報文尾部。由于不同報文具有不同長度,因此在報文數(shù)據(jù)最后一拍可能存在一些無效的字節(jié)。數(shù)據(jù)報文的最后一拍的[131:128]位用來標(biāo)識無效字節(jié)的個數(shù)。其中0000表示16個字節(jié)全部有效;0001標(biāo)識最低1個字節(jié)無效,最高15個字節(jié)有效;以此類推,1111表示最低15個字節(jié)無效,最高1個字節(jié)有效。
設(shè)FAST流水線的時鐘頻率為xMhz,因此數(shù)據(jù)通路理論傳輸帶寬為128bit*xMHz。例如當(dāng)x=125時,通路帶寬為16Gbps。
三、控制通路CIn/COut數(shù)據(jù)格式
FAST流水線的控制通路CIn和COut采用相同的消息格式。對FAST流水線模塊的每次讀寫操作都轉(zhuǎn)換成一個128位寬的命令字寫入FAST流水線。命令字的格式如下表所示。與流水線處理分組信息一樣,每個模塊只處理DMID等于本地模塊號的命令字。相應(yīng)的模塊完成讀寫操作后,修改命令字,并將命令字發(fā)送給下游模塊,最后命令字從COut接口輸出。FPGA OS負(fù)責(zé)將軟件讀寫請求轉(zhuǎn)換成FAST流水線的命令字,并將COut輸出的命令字返回給由SMID標(biāo)識的軟件模塊。
顯然,每個硬件模塊內(nèi)部的編址與都是32位,且編址方法與其他模塊無關(guān),由模塊開發(fā)者獨立確定。