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