• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于FPGA的SR-IOV技術(shù)研究與實(shí)現(xiàn)*

      2019-10-09 05:23:16任繼奎葉云峰
      通信技術(shù) 2019年9期
      關(guān)鍵詞:寄存器中斷分流

      任繼奎,林 山,葉云峰

      (中國電子科技集團(tuán)公司第三十研究所,四川 成都 610041)

      0 引 言

      單根I/O虛擬化(Single Root I/O Virtualization,SR-IOV)是由PCI-SIG制定的輸入輸出(Input Output,I/O)虛擬化標(biāo)準(zhǔn)[1],通過利用直接I/O技術(shù),消除了額外數(shù)據(jù)包復(fù)制帶來的性能開銷,實(shí)現(xiàn)了接近物理機(jī)的I/O性能,有利于提升虛擬云計(jì)算平臺(tái)的性能,因此SR-IOV正逐步在虛擬云計(jì)算平臺(tái)流行起來。

      SR-IOV的核心思想是:在設(shè)備支持的前提下,將一個(gè)設(shè)備劃分為一個(gè)物理功能單元(Physical Function,PF)和多個(gè)虛擬功能單元(Virtual Function,VF),每個(gè)虛擬功能單元都可以作為一個(gè)輕量級(jí)的I/O設(shè)備供虛擬機(jī)使用,這樣一個(gè)設(shè)備就可以同時(shí)被分配給多個(gè)虛擬機(jī),解決了因設(shè)備數(shù)量限制給虛擬化系統(tǒng)帶來的可擴(kuò)展性差的問題[2]。

      本文研究的虛擬化設(shè)備基于FPGA實(shí)現(xiàn),選取的FPGA型號(hào)為:Intel Arria 10。該芯片可支持4個(gè)PF和2048個(gè)VF,本文實(shí)現(xiàn)了1個(gè)PF和64個(gè)VF的數(shù)據(jù)通信功能。

      1 設(shè)計(jì)實(shí)現(xiàn)

      1.1 接口設(shè)計(jì)

      虛擬化PCI Express(PCIE)接口采用模塊化設(shè)計(jì),并采用多通道進(jìn)行數(shù)據(jù)處理,對(duì)VF數(shù)據(jù)進(jìn)行隔離,如圖1所示。其中PCIE(SR-IOV)為支持虛擬化的PCIE硬核,DMA0-DMA8為9個(gè)直接存儲(chǔ)訪問(Direct Memory Access,DMA)傳輸通道,通過多通道將數(shù)據(jù)進(jìn)行分流處理,以達(dá)到較高的性能,同時(shí)實(shí)現(xiàn)了VF數(shù)據(jù)的隔離。數(shù)據(jù)接口采用接口時(shí)鐘(250 MHz),內(nèi)部數(shù)據(jù)處理采用系統(tǒng)時(shí)鐘,兩個(gè)時(shí)鐘域間采用異步FIFO(First-in first-out)進(jìn)行時(shí)鐘域的轉(zhuǎn)換處理。

      圖1 PCIE接口設(shè)計(jì)框圖

      PCIE接口功能模塊說明:

      VF分流:接收PCIE數(shù)據(jù),并根據(jù)VF號(hào)進(jìn)行數(shù)據(jù)分流,將數(shù)據(jù)轉(zhuǎn)發(fā)給不同的DMA處理單元進(jìn)行處理。

      VF合流:將各DMA處理單元的數(shù)據(jù)進(jìn)行合并轉(zhuǎn)發(fā)。

      鏈路分流:將PCIE數(shù)據(jù)幀按傳輸層協(xié)議(ransaction Layer Protocol,TLP)類型分為請(qǐng)求幀和完成幀,請(qǐng)求幀進(jìn)入寄存器讀寫操作處理;完成幀進(jìn)入完成幀分流處理。

      完成幀分流:通過PCIE數(shù)據(jù)幀頭TAG字段,將數(shù)據(jù)分為基本描述符(Basic Descriptor)完成幀和數(shù)據(jù)完成幀。BD完成幀將進(jìn)入BD緩存FIFO;數(shù)據(jù)完成幀進(jìn)入數(shù)據(jù)組包與分流處理。

      組包與分流:根據(jù)數(shù)據(jù)包TAG序號(hào)和完成地址將業(yè)務(wù)數(shù)據(jù)進(jìn)行組包并按數(shù)據(jù)類型進(jìn)行數(shù)據(jù)分流。

      存儲(chǔ)器讀寫:將PCIE存儲(chǔ)器讀寫請(qǐng)求轉(zhuǎn)換為寄存器操作,當(dāng)為寄存器寫時(shí),將數(shù)據(jù)寫入FPGA內(nèi)部相應(yīng)地址;當(dāng)為寄存器讀時(shí),通過寄存器接口讀取相應(yīng)數(shù)據(jù)后封裝為讀完成幀。

      寄存器處理與統(tǒng)計(jì):完成寄存器讀寫地址譯碼和狀態(tài)統(tǒng)計(jì)。

      數(shù)據(jù)請(qǐng)求:根據(jù)BD完成幀信息,產(chǎn)生數(shù)據(jù)讀取幀。BD信息包括數(shù)據(jù)地址和長度等。

      BD請(qǐng)求:輪詢BD指針RAM,根據(jù)指針信息判斷是否有數(shù)據(jù)需要讀取,如果有數(shù)據(jù)需要讀取則發(fā)送BD讀取幀。

      業(yè)務(wù)合流:將多路數(shù)據(jù)合并。

      數(shù)據(jù)發(fā)送:根據(jù)數(shù)據(jù)回寫地址、數(shù)據(jù)長度和PCIE最大寫長度,將數(shù)據(jù)封裝為多個(gè)寄存器寫TLP進(jìn)行發(fā)送。當(dāng)數(shù)據(jù)發(fā)送完成后,寫數(shù)據(jù)傳輸完成標(biāo)記。

      中斷產(chǎn)生:根據(jù)數(shù)據(jù)傳輸完成標(biāo)記和中斷控制信息,產(chǎn)生相應(yīng)中斷。

      鏈路復(fù)接:將多路數(shù)據(jù)進(jìn)行復(fù)接。

      BD_RAM:存儲(chǔ)BD指針信息。

      BD_FIFO:BD信息存儲(chǔ)。

      MSI-X表:中斷信息表。

      64_2_256:將數(shù)據(jù)位寬為64位的數(shù)據(jù)轉(zhuǎn)換為256位的數(shù)據(jù)。

      256_2_64:將數(shù)據(jù)位寬為256位的數(shù)據(jù)轉(zhuǎn)換為64位的數(shù)據(jù)。

      1.2 數(shù)據(jù)交互流程

      宿主機(jī)(虛擬機(jī))與FPGA通過BD表進(jìn)行數(shù)據(jù)信息交互。當(dāng)有數(shù)據(jù)需要交互時(shí),宿主機(jī)(虛擬機(jī))通過尾指針(Tail值)通知FPGA進(jìn)行數(shù)據(jù)讀取,在處理完成后,F(xiàn)PGA通過回寫地址進(jìn)行數(shù)據(jù)回寫。主機(jī)處理流程如圖2所示。

      圖2 驅(qū)動(dòng)處理流程圖

      流程說明:

      初始化:通知FPGA所使用的BD表大小和基地址等;

      準(zhǔn)備BD表信息:包括數(shù)據(jù)地址和長度等;

      BD鏈?zhǔn)欠裼锌臻e:檢查是否可以發(fā)送;

      寫FPGA端Tail值:通知FPGA數(shù)據(jù)準(zhǔn)備好;

      等待中斷回應(yīng):每個(gè)VF一個(gè)中斷;

      數(shù)據(jù)接收:檢查數(shù)據(jù)回寫標(biāo)記,處理數(shù)據(jù)并釋放BD空間。

      FPGA端采用并行處理,分為請(qǐng)求BD、請(qǐng)求數(shù)據(jù)和數(shù)據(jù)發(fā)送3部分,其處理流程如圖3所示。

      流程說明:

      (1)請(qǐng)求BD

      1)判斷Tail和Head值是否相等;

      2)判斷是否可以存儲(chǔ)BD;

      3)發(fā)送請(qǐng)求并更新Head值。

      (2)請(qǐng)求數(shù)據(jù)

      1)判斷BD_FIFO是否為空,空則沒有數(shù)據(jù),非空則進(jìn)行處理;

      2)判斷是否有存儲(chǔ)空間,如果有則進(jìn)行數(shù)據(jù)請(qǐng)求;

      3)等待數(shù)據(jù)返回并對(duì)數(shù)據(jù)進(jìn)行組包。

      圖3 FPGA處理流程圖

      (3)數(shù)據(jù)發(fā)送

      1)判斷是否有數(shù)據(jù)需要發(fā)送,如果有則進(jìn)行分片發(fā)送;

      2)寫數(shù)據(jù)已處理標(biāo)記;3)產(chǎn)生相應(yīng)的中斷。

      1.3 中斷處理

      由于傳統(tǒng)中斷和消息中斷(Message Signal Interrupt,MSI)有中斷個(gè)數(shù)的限制,且VF只支持MSI-X中斷,因此虛擬PCIE卡采用MSI-X中斷,每個(gè)VF一個(gè)中斷。初始化時(shí),驅(qū)動(dòng)需要將中斷地址和數(shù)據(jù)內(nèi)容寫入FPGA內(nèi)部MSI-X表。FPGA在獲取到中斷源信息后,根據(jù)MSI-X表內(nèi)容和中斷控制信息進(jìn)行中斷產(chǎn)生,如圖4所示。

      由于通信數(shù)據(jù)量非常大,如果每個(gè)數(shù)據(jù)都產(chǎn)生一個(gè)中斷,主機(jī)將花費(fèi)大量的資源進(jìn)行中斷處理,無法進(jìn)行快速的數(shù)據(jù)傳輸處理,因此,采用中斷匯聚[3]和中斷屏蔽進(jìn)行中斷優(yōu)化處理。

      中斷匯聚的方法有2種,一種是采用頻率控制,如1μs產(chǎn)生一個(gè)中斷;另外一種是采用數(shù)據(jù)包個(gè)數(shù)進(jìn)行中斷控制,當(dāng)達(dá)到某個(gè)設(shè)定值時(shí)產(chǎn)生中斷。

      頻率控制雖然減少了中斷數(shù)量但無法平衡大包和小包數(shù)據(jù)傳輸?shù)臅r(shí)間差,當(dāng)進(jìn)行小包傳輸時(shí),需要更高的中斷頻率才能達(dá)到最大速率,而大包則需要更低的頻率。

      圖4 中斷產(chǎn)生示意圖

      本接口模型采用數(shù)據(jù)包個(gè)數(shù)進(jìn)行中斷的控制,同時(shí)設(shè)置了中斷控制寄存器和中斷屏蔽寄存器。驅(qū)動(dòng)可通過中斷控制寄存器對(duì)數(shù)據(jù)包個(gè)數(shù)和數(shù)據(jù)空閑時(shí)間進(jìn)行動(dòng)態(tài)調(diào)節(jié)。當(dāng)數(shù)據(jù)包個(gè)數(shù)未達(dá)到設(shè)置的閥值但空閑時(shí)間達(dá)到設(shè)置的閥值時(shí),F(xiàn)PGA也會(huì)發(fā)起中斷。當(dāng)驅(qū)動(dòng)進(jìn)入中斷后還可通過中斷屏蔽寄存器對(duì)中斷進(jìn)行屏蔽,當(dāng)驅(qū)動(dòng)處理完成后,再打開中斷屏蔽。

      2 試驗(yàn)與分析

      本接口模塊在設(shè)計(jì)仿真完成后,進(jìn)行了實(shí)物測(cè)試。測(cè)試時(shí),宿主機(jī)型號(hào)為:DELL T7610。在使能8個(gè)VF的狀態(tài)下,同時(shí)對(duì)1個(gè)PF和8個(gè)虛擬設(shè)備進(jìn)行收發(fā)包測(cè)試,測(cè)試結(jié)果如表1所示。

      表1 測(cè)試結(jié)果 Gbit/s

      經(jīng)過測(cè)試表明,該接口模型不僅實(shí)現(xiàn)了數(shù)據(jù)的高速交互,同時(shí)還平衡了各個(gè)虛擬設(shè)備間的帶寬分配。當(dāng)數(shù)據(jù)長度越長時(shí),交互效率越高,接口性能越好。

      3 結(jié) 語

      本文在對(duì)SR-IOV進(jìn)行理論研究的基礎(chǔ)上,設(shè)計(jì)實(shí)現(xiàn)了一種基于FPGA的虛擬化設(shè)備的數(shù)據(jù)交互模型,解決了云計(jì)算平臺(tái)與虛擬設(shè)備間數(shù)據(jù)交互的需求。在設(shè)計(jì)實(shí)現(xiàn)時(shí),對(duì)模塊劃分、數(shù)據(jù)交換流程和中斷處理進(jìn)行了詳細(xì)介紹。在該設(shè)計(jì)中,根據(jù)VF號(hào)對(duì)設(shè)備進(jìn)行了多通道處理,減少了不同設(shè)備間的影響;同時(shí)采用模塊化設(shè)計(jì)方式,降低了設(shè)計(jì)成本與難度,提升了數(shù)據(jù)交互能力。實(shí)驗(yàn)與分析表明,本文設(shè)計(jì)實(shí)現(xiàn)的數(shù)據(jù)交互模型能夠提供高達(dá)35 Gbit/s的有效通信帶寬。當(dāng)數(shù)據(jù)長度越長,性能越高。同時(shí)該交互模型也平衡各個(gè)虛擬設(shè)備間的帶寬分配??蓱?yīng)用于云加密卡等多種虛擬設(shè)備中。

      猜你喜歡
      寄存器中斷分流
      涉罪未成年人分流與觀護(hù)制度比較及完善
      Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
      NSA架構(gòu)分流模式
      跟蹤導(dǎo)練(二)(5)
      千里移防,衛(wèi)勤保障不中斷
      解放軍健康(2017年5期)2017-08-01 06:27:44
      分簇結(jié)構(gòu)向量寄存器分配策略研究*
      基于MEC的LTE本地分流技術(shù)
      肝膽胰外科手術(shù)與動(dòng)、靜脈自然分流
      AT89C51與中斷有關(guān)的寄存器功能表解
      FPGA內(nèi)嵌PowerPC的中斷響應(yīng)分析
      林芝县| 三江| 历史| 永顺县| 洪雅县| 镇雄县| 乐平市| 宜春市| 吉林省| 巴里| 卓资县| 宿松县| 灯塔市| 吴桥县| 安龙县| 台前县| 米林县| 临朐县| 旺苍县| 左云县| 新乡县| 托克托县| 屯留县| 高碑店市| 金寨县| 开封县| 翁源县| 乌恰县| 岢岚县| 嘉祥县| 肇州县| 湟中县| 乳山市| 庐江县| 灵川县| 阳信县| 阿坝县| 巴楚县| 广丰县| 嵩明县| 大丰市|