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