專利名稱:一種采用輪詢機(jī)制的高速報文接收方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)數(shù)據(jù)處理領(lǐng)域,具體涉及一種采用輪詢機(jī)制的高速報文接收方法。
背景技術(shù):
在計算機(jī)系統(tǒng)中,中斷是cpu和外設(shè)進(jìn)行交換的最常用的方式,比如,當(dāng)網(wǎng)卡接收 完一個報文后,會發(fā)中斷信號給cpu,cpu收到中斷信號后,會把發(fā)生中斷時的工作現(xiàn)場保 存起來,轉(zhuǎn)到網(wǎng)卡的中斷處理過程中去,啟動下一個報文的接收工作,然后再恢復(fù)發(fā)生中斷 時保存的工作現(xiàn)場,繼續(xù)進(jìn)行收到網(wǎng)卡中斷信號之前的工作。專利號200710178168. 1公開了一種互聯(lián)網(wǎng)旁路監(jiān)測系統(tǒng)的TCP連接管理方法,報 文接接收程采用中斷方式實現(xiàn)軟硬件交互,每次接收完一個報文后,硬件都要發(fā)出中斷信 號通知軟件,軟件才能啟動下一個報文過程。在高速網(wǎng)絡(luò)報文接收網(wǎng)卡上,每秒鐘內(nèi)接收 的報文數(shù)有時高達(dá)幾百萬個,因為每次中斷信號處理都要有一個保存和恢復(fù)工作現(xiàn)場的工 作,所以每接收一個報文都向CPU接收一個中斷,會占用CPU大量的計算時間,降低系統(tǒng)效 率。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種采用輪詢機(jī)制的高速報文接收方法避免高速網(wǎng)絡(luò)上接 收報文的頻繁中斷。一種采用輪詢機(jī)制的高速報文接收方法,采用無中斷軟硬件結(jié)合方式實現(xiàn),步驟 如下A、硬件網(wǎng)卡的PCI控制器向主機(jī)注冊PCI空間,其中定義接收報文相關(guān)的寄存器 地址;B、軟件申請一片物理地址連續(xù)的內(nèi)存,作為接收報文的緩沖區(qū),把緩沖區(qū)的物理 地址和長度寫入PCI空間的對應(yīng)寄存器,并設(shè)置硬件的寫指針和軟件的讀指針為初始值0 ;C、硬件每次從網(wǎng)絡(luò)接收到一個報文后,把報文傳輸?shù)杰浖膱笪木彌_區(qū)中,并根 據(jù)報文長度,修改PCi空間的寫指針;D、軟件循環(huán)收包,每次收包都要查看pci空間寄存器,判斷硬件寫指針是否等于 軟件的讀指針,如果不相等,則說明讀指針和寫指針之間是新的報文,則讀取出來,并移動 讀指針。如果讀指針追上了寫指針,則說明緩沖區(qū)內(nèi)報文已經(jīng)全部讀出,則等待一個時間片 后,進(jìn)行下一次輪詢。本發(fā)明的一種優(yōu)選技術(shù)方案在于所述PCI空間寄存器用來記錄報文緩沖區(qū)地址 和長度,軟件從緩沖區(qū)讀報文的讀指針,網(wǎng)卡向緩沖區(qū)寫報文的寫指針。本發(fā)明采用無中斷的輪詢方式實現(xiàn)高速的報文接收,報文緩沖區(qū)的讀寫指針放入 PCI空間的寄存器中,軟硬件通過直接操作寄存器實現(xiàn)交互,從而避免接收報文的中斷開 銷,提高系統(tǒng)效率。
圖1是本發(fā)明軟硬件實現(xiàn)結(jié)構(gòu)圖
具體實施例方式本發(fā)明是一個軟硬件結(jié)合的系統(tǒng)。軟件負(fù)責(zé)分配接收報文使用的緩沖區(qū),需要在內(nèi)核中申請一整片物理地址連續(xù)的 內(nèi)存,作為接收報文的緩沖區(qū),并去輪詢硬件,查看是否有新的報文到達(dá)。硬件負(fù)責(zé)從網(wǎng)絡(luò)接收報文,并把報文傳輸?shù)街鳈C(jī)內(nèi)存的報文緩沖區(qū)中,通過寫PCI 空間的寄存器,通知軟件有新報文到達(dá)。報文接收相關(guān)的PCI空間寄存器主要有報文緩沖區(qū)地址、長度、軟件從緩沖區(qū)讀 報文的讀指針、硬件向緩沖區(qū)寫報文的寫指針。該發(fā)明接收報文的方法和過程如下(1)硬件網(wǎng)卡的PCI控制器向主機(jī)注冊PCI空間,其中定義接收報文相關(guān)的寄存器 地址,包括報文緩沖區(qū)地址、長度、軟件從緩沖區(qū)讀報文的讀指針、硬件向緩沖區(qū)寫報文的 寫指針。(2)軟件申請報文緩沖區(qū)軟件申請一片物理地址連續(xù)的內(nèi)存,作為接收報文的緩沖區(qū),把緩沖區(qū)的物理地 址和長度寫入PCI空間的對應(yīng)寄存器,并設(shè)置硬件的寫指針和軟件的讀指針為初始值0。(3)硬件接收報文。硬件每次從網(wǎng)絡(luò)接收到一個報文后,把報文傳輸?shù)杰浖膱笪木彌_區(qū)中,并根據(jù) 報文長度,修改PCI空間的寫指針。(4)軟件接收報文。 軟件循環(huán)收包,每次收包都要查看PCI空間寄存器,判斷硬件寫指針是否等于軟 件的讀指針,如果不相等,則說明讀指針和寫指針之間是新的報文,則讀取出來,并移動讀 指針。如果讀指針追上了寫指針,則說明緩沖區(qū)內(nèi)報文已經(jīng)全部讀出,則等待一個時間片 后,進(jìn)行下一次輪詢。
權(quán)利要求
1.一種采用輪詢機(jī)制的高速報文接收方法,其特征在于采用無中斷軟硬件結(jié)合方式 實現(xiàn),步驟如下A、硬件網(wǎng)卡的PCI控制器向主機(jī)注冊PCI空間,其中定義接收報文相關(guān)的寄存器地址;B、軟件申請一片物理地址連續(xù)的內(nèi)存,作為接收報文的緩沖區(qū),把緩沖區(qū)的物理地址 和長度寫入PCI空間的對應(yīng)寄存器,并設(shè)置硬件的寫指針和軟件的讀指針為初始值0 ;C、硬件每次從網(wǎng)絡(luò)接收到一個報文后,把報文傳輸?shù)杰浖膱笪木彌_區(qū)中,并根據(jù)報 文長度,修改Pci空間的寫指針;D、軟件循環(huán)收包,每次收包都要查看pci空間寄存器,判斷硬件寫指針是否等于軟件 的讀指針,如果不相等,則說明讀指針和寫指針之間是新的報文,則讀取出來,并移動讀指 針。如果讀指針追上了寫指針,則說明緩沖區(qū)內(nèi)報文已經(jīng)全部讀出,則等待一個時間片后, 進(jìn)行下一次輪詢。
2.如權(quán)利要求1所述一種采用輪詢機(jī)制的高速報文接收方法,其特征在于所述PCI 空間寄存器用來記錄報文緩沖區(qū)地址和長度,軟件從緩沖區(qū)讀報文的讀指針,網(wǎng)卡向緩沖 區(qū)寫報文的寫指針。
全文摘要
本發(fā)明提供了一種采用輪詢機(jī)制的高速報文接收方法。采用無中斷軟硬件結(jié)合方式實現(xiàn),硬件網(wǎng)卡PCI控制器向主機(jī)注冊PCI空間,軟件申請報文緩沖區(qū),軟件輪詢讀寫指針,讀緩沖區(qū)接收報文,并移動讀指針,硬件接收報文時,寫緩沖區(qū)并移動寫指針。本發(fā)明采用無中斷的輪詢方式實現(xiàn)高速的報文接收,報文緩沖區(qū)的讀寫指針放入PCI空間的寄存器中,軟硬件通過直接操作寄存器實現(xiàn)交互,從而避免接收報文的中斷開銷,提高系統(tǒng)效率。
文檔編號H04L12/56GK102098214SQ201010597760
公開日2011年6月15日 申請日期2010年12月17日 優(yōu)先權(quán)日2010年12月17日
發(fā)明者劉興奎, 劉朝輝, 劉燦, 張英文, 李鋒偉, 李靜 申請人:天津曙光計算機(jī)產(chǎn)業(yè)有限公司