【正文】
................................ 46 圖 FPGA 關(guān)鍵路徑報(bào)告 ..................................................................................... 46 圖 Design Compiler 綜合流程 ............................................................................ 49 圖 ASIC 綜合 關(guān)鍵路徑報(bào)告 ............................................................................... 51 圖 FPGA 硬件平臺(tái)照片 ..................................................................................... 52 表 微引擎指令集列表 ........................................................................................... 15 表 全 局 Host 寄存器 ............................................................................................. 19 表 兩種方式的測(cè)試激勵(lì)數(shù)量關(guān)系 ....................................................................... 43 表 FPGA 各模塊資源占用情況 ........................................................................... 47 表 吞吐量測(cè)試結(jié)果 ............................................................................................... 52 表 丟包率測(cè)試結(jié)果 ............................................................................................... 52 圖表清單 VIII 緒論 1 第 1章 緒 論 研究背景和意義 當(dāng) 計(jì)算機(jī)網(wǎng)絡(luò)發(fā)展 到高速網(wǎng)絡(luò)技術(shù)階段 , 有了光纖媒介的廣泛使用和傳輸技術(shù)的巨大進(jìn)步 , 人們對(duì)網(wǎng)絡(luò)帶寬的需求也越來越大 ,中間網(wǎng)絡(luò)處理設(shè)備 逐漸成為了網(wǎng)絡(luò)系統(tǒng)的瓶頸 , 因此人們需要處理速度更快的網(wǎng)絡(luò)設(shè)備 。 利用網(wǎng)絡(luò)處理器 開發(fā) 人員 可以實(shí)現(xiàn)快速編程 ,可為客戶 靈活提供所需功能, 使 網(wǎng)絡(luò)系統(tǒng) 具有 高性能和高靈活性。 在網(wǎng)絡(luò)處理器中,微引擎對(duì)數(shù)據(jù)包的處理速度決定著網(wǎng)絡(luò)處理器的整體性能 , 如何有效 降低 微引擎中 關(guān)鍵路徑的 延時(shí) 是 提高 NP 性能的關(guān)鍵 。 然而 長(zhǎng)久以來 在計(jì)算機(jī)和網(wǎng)絡(luò)安全技術(shù) 方面,我國(guó) 的集成電路芯片設(shè)計(jì) 技術(shù) 落后于 歐美 國(guó)家 ,所以導(dǎo)致國(guó)家 大量的 信息安全產(chǎn)業(yè) 無法得到 核心自主研發(fā)芯片 的 支持, 并且使得 信息安全隱患 變得越來越嚴(yán)重。網(wǎng)絡(luò)發(fā)展初期 主要研究構(gòu)建服務(wù)框架和實(shí)現(xiàn)網(wǎng)絡(luò)協(xié)議 , 其 傳輸速率低服務(wù)類型少。 而針對(duì)網(wǎng)絡(luò)協(xié)議進(jìn)行硬件優(yōu)化設(shè)計(jì)的 基于 ASIC的網(wǎng)絡(luò)設(shè)備取得 很大的發(fā)展 ?;?ASIC 的網(wǎng)絡(luò)設(shè)備 的固有缺點(diǎn)是缺乏可編程性, 且 開發(fā)周期較長(zhǎng)成本較大, 因此 限制了其進(jìn)一步發(fā)展 。 2020年 成立了 網(wǎng)絡(luò)處理器論壇 (NPF),致力于推動(dòng) 網(wǎng)絡(luò)處 理器 標(biāo)準(zhǔn) 的兼容和發(fā)展 。 值得一提的是, 華為公司作為中國(guó)和全球領(lǐng)先的通信設(shè)備廠商, 最早 將 網(wǎng)絡(luò)處理器應(yīng)用于商用領(lǐng)域。 本文的主要工作和后面各章節(jié)的內(nèi)容安排如下: 第一章 ,首先對(duì)網(wǎng)絡(luò)處理器課題的研究背景和意義進(jìn)行了闡述,交代了網(wǎng)絡(luò)處理器及微引擎的概念 。 第三章, 對(duì) P1600 網(wǎng)絡(luò)處理器轉(zhuǎn)發(fā)微引擎進(jìn)行的詳細(xì)的設(shè)計(jì),包括專用指令集設(shè)計(jì),微引擎結(jié)構(gòu)設(shè)計(jì)以及四級(jí)流水線的詳細(xì)設(shè)計(jì),最后對(duì)設(shè)計(jì)進(jìn)行了實(shí)現(xiàn)。 電子科學(xué)研究院碩士學(xué)位論文 4 網(wǎng)絡(luò)處理器微引擎研究 5 第 2章 網(wǎng)絡(luò)處理器 微引擎研究 網(wǎng)絡(luò)處理器 及 微引擎分析 網(wǎng)絡(luò)處理器中 通常 集成 了 多個(gè) 微引擎 處理單元 ,它們不 是硬件資源的簡(jiǎn)單堆疊, 而 必須 按照一定 邏輯結(jié)構(gòu) 組 織 才能獲得 高性能 。 缺點(diǎn)是必須注意流水線間的負(fù)載均衡。 其 優(yōu)點(diǎn)是 擴(kuò)展性較好,增加新的處理資源容易; 編程較為簡(jiǎn)易,因?yàn)殚_發(fā)人 員 只需面對(duì) 一個(gè)處理單元, 無需進(jìn)行 任務(wù)劃分。 4 種類型的微引擎 —— Parse、電子科學(xué)研究院碩士學(xué)位論文 6 Search、 Resolve 和 Modify—— 被用于執(zhí)行數(shù)據(jù)包處理的主要任務(wù),即分類、轉(zhuǎn)發(fā)和修改。微引擎性能受益于 類 超標(biāo)量結(jié)構(gòu),微引擎的多個(gè)核在每個(gè)流水段并行運(yùn)行。為數(shù)據(jù)包分配微引擎,在微引擎之間傳遞消息,還有維護(hù)幀的順序,這些對(duì)編程者完全透明且用硬件實(shí)現(xiàn)。每個(gè)微引擎執(zhí)行特定的任務(wù),把它的結(jié)果(如messages、 keys、 headers 和 pointers)傳到下一個(gè)微引擎階段,用于后續(xù)處理。一個(gè)集成的硬件調(diào)度器在每個(gè)流水段自動(dòng)調(diào)度下一個(gè)可用的微引擎給下一個(gè)要處理的數(shù)據(jù)包。解析微引擎采用 72 位專電子科學(xué)研究院碩士學(xué)位論文 8 用指令集, 最多能支持 6K 行微碼指令,其內(nèi)部組織結(jié)構(gòu)如圖 : I n p a r s eO u t p a r s eH W D e c o d e rP a r s e 0 P a r s e nK e y m e m o r y nK e y m e m o r y 0F r a m e m e m o r y 0F r a m eM e m o r y n5 1 21 2 8 1 2 86 46 41 2 86 4 6 41 2 8F r m e m e m r o yR X 5 1 2F r m e m e m r o yT X 5 1 2R F D i n1 6 6 0 7 6I C F D q u e u e E C F D q u e u e6 4 6 46 4 1 6R F D o u t( f r a m e d i s c a r d )S e a r c h 1( 1 6 k e y s p e r f r a m e )8 b i t C A M1 6 b i t C A M3 2 b i t C A Mt e x t C A MC R E GS R A ME x t e r m a l H o s t3 2S t a t i s t i c s B l o c k3 2. . . 圖 解析微引擎組織結(jié)構(gòu) 搜索 微引擎 搜索 (Search)微引擎 (包括 Search1 和 Search2) 完成數(shù)據(jù)包的查找和分類,使用被分析域的組合,如 關(guān)鍵字 ( keys) ,在相關(guān) 路由表 (routing tables)、 分類表(classification tables)和 策略表 (policy tables)中執(zhí)行并行 /流水查找?;?Search1 的結(jié)果和來自 Parse 的消息, Resolve 模塊決定幀的輸出端口和隊(duì)列。 Resolve 還能生成 Search 2 微引擎使用的搜索關(guān)鍵字。 m e s s a g e s f r o m P a r s e1 2 81 2 8 1 2 86 4 1 6R F D o u t( f r a m e d i s c a r d )S e a r c h 2( 8 k e y s p e r f r a m e )E x t e r m a l H o s t3 2S t a t i s t i c s B l o c k3 2. . .1 2 81 2 8H i g h l e a r n e n t r i e s t o s e a r c h 13 2 圖 轉(zhuǎn)發(fā)微引擎組織結(jié)構(gòu) 修改微引擎 修改 (Modify)微引擎修改數(shù)據(jù)包的內(nèi)容,在數(shù)據(jù)包中 的任何地方執(zhí)行改寫 、加或插入操作。一方面 需要盡量的降低每個(gè) 微引擎 的面積和功 耗,從而才能 使 集成多個(gè) 微引擎 的NP 整體仍然滿足約束;另一方面 微引擎 還要根據(jù) 網(wǎng)絡(luò) 業(yè)務(wù)特點(diǎn) ,提供豐富操作和 較 高 頻率, 才能 使 NP 達(dá)到 較好的 處理能力 。其中的 RISC 核 心 既有 簡(jiǎn)單的單 標(biāo)量 流水線 結(jié)構(gòu) ,也有 復(fù)雜的超標(biāo)量 流水線 結(jié)構(gòu) 。 目前 采用 VLIW 架 構(gòu)的 NP 不多, 如 Cisco PXF 等 ,一般應(yīng)用于網(wǎng)絡(luò)邊緣的高性能路由器中 。 微引擎指令 集 架構(gòu) 微引擎的一個(gè) 重要功能是執(zhí)行程序的每條指令,完成程序所要實(shí)現(xiàn)的功能。 每 條 指令可執(zhí)行多個(gè)操作,如 乘法和寫數(shù)據(jù)等操作。 RISC 的這些努力使計(jì)算機(jī)的結(jié)構(gòu)更簡(jiǎn)單合理,運(yùn)算效率更高。針對(duì)本文的設(shè)計(jì),本節(jié)只介紹指令 級(jí) 并行。 在 理想狀況下 各 流水段 處理時(shí)間相等, 從而使 吞吐率 提高到 n 倍 ( n 為流水線的深度),但 在 實(shí)際 中, 處理時(shí)間最長(zhǎng)的流水網(wǎng)絡(luò)處理器微引擎研究 13 段將成為流水線的瓶頸 。因?yàn)橛布Y源 ( 如功能單元、寄存器 和存儲(chǔ)器等 )滿足不了指令重疊執(zhí)行的要求而發(fā)生流水線沖突 。 大 部分?jǐn)?shù)據(jù)沖突可以通過修改相關(guān)寄 存器別名來消除。 ( 2) 超標(biāo)量技術(shù) 超標(biāo)量( Superscaler) 架構(gòu) 是 指 在 處理器 中 有 兩條及兩條 以上的 流水線 , 且每 個(gè) 時(shí)鐘周期可完成 多條 指令 , 其實(shí)質(zhì)是以空間換取時(shí)間 []。 本章小結(jié) 首 先分析了網(wǎng)絡(luò)處理器的微引擎處理單元之間的組織結(jié)構(gòu), 即串行、并行以及混合模式。最后分析了微引擎的并行技術(shù)流水線和超標(biāo)量。 另一方面,網(wǎng)絡(luò) 協(xié)議處理中 存在著 大量的查找比較操作 , 它并 不是按字節(jié)或是字對(duì)齊 的方式而是按位進(jìn)行 處 理 , 因此微引擎 的指令集 設(shè)計(jì)必須 對(duì)位操作有很好的支持。因此 微引擎 指令集中的尋址方式 必須包括 位尋址的機(jī)制。 表 微引擎指令集列表 指令 指令描述 移動(dòng)指令 Mov 按字節(jié)將立即數(shù)或寄存器數(shù)據(jù)移到目的寄存器 MovBits 按位將立即數(shù)或寄存器數(shù)據(jù)移到目的寄存器 Mov4Bits 移動(dòng)任意四位數(shù)據(jù)到目的寄存器 MovMul 根據(jù)優(yōu)先級(jí)編碼寄存器的值, 移動(dòng)八個(gè) 源寄存器 中的一個(gè)到目的寄存器 Get 按字節(jié)把存儲(chǔ)器數(shù)據(jù)移到目的寄存器 電子科學(xué)研究院碩士學(xué)位論文 16 指令 指令描述 PutKey 按字節(jié)把立即數(shù)或寄存器數(shù)據(jù)移到目的存儲(chǔ)器 Copy 按字節(jié)把存儲(chǔ)器數(shù)據(jù)移到目的存儲(chǔ)器 PutHdr 按字節(jié)把立即數(shù)或寄存器數(shù)據(jù)移到 Header 寄存器 PutHdrBits 按位把立即數(shù)或寄存器數(shù)據(jù)移到 Header 寄存器 PutHdr4Bits 移動(dòng)任意四位數(shù)據(jù)到 Header 寄存器 GetRndBits 移動(dòng)任意八位 Result Control 寄存器數(shù)據(jù)到目的寄存器 GetFixBits 移動(dòng)有限制的八位 Result Control 寄存器數(shù)據(jù)到目的寄存器 GetRnd4Bits 移動(dòng)任意四位 Result Control 寄存器數(shù)據(jù)到目的寄存器 分支跳轉(zhuǎn)指令 Jmp 無條件跳轉(zhuǎn) Jstack 間接跳轉(zhuǎn),地址來自 PC_STACK 寄存器 Return 間接跳轉(zhuǎn),地址來自 PC_STACK 寄存器,類同 Jstack Jmul 根據(jù)優(yōu)先級(jí)編碼寄存器的值,地址八選一進(jìn)行跳轉(zhuǎn) Loop 跳轉(zhuǎn)然后 Loop Counter 寄存器遞減 Call 跳轉(zhuǎn)并保存當(dāng)前 PC 值到 PC_STACK 寄存器 Callstack Jstack 并保存當(dāng)前 PC 值到 PC_STACK 寄存器 ALU 指令 And 邏輯與 Xor 邏輯異或 Or 邏輯或 Not 取反 Add 不帶進(jìn)位加法操作 Sub 不帶進(jìn)位減法操作 Addc DST=SRC1+SRC2+Carry Subb DST=SRC1SRC2Carry Decode 將源操作數(shù)對(duì)應(yīng)位置 1 后賦給 DST Encode 取源操作數(shù)最高位數(shù)值 NumOnes 計(jì)算源操作數(shù)中 1 的個(gè)數(shù) 特殊指令 Minterm 預(yù)定義 12 種運(yùn)算,根據(jù)參數(shù)選擇 SetMaxMin 從輸入的序列中選出最大值或最小值及該最值的序列號(hào) Halt 掛起,四種模式分別用于單播、多播、丟棄幀、調(diào)試 Nop 空指令 轉(zhuǎn)發(fā)微引擎的設(shè)計(jì)與實(shí)現(xiàn) 17 微引擎 指令的最高位( 72 位)是偶校驗(yàn)位 ( Even) , 當(dāng)需要復(fù)雜操作時(shí),可以直接由編譯器解析指令完成。指令格式按操作數(shù)劃分可以歸結(jié)為以下幾