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