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