国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種ip報(bào)文的硬件分流方法

      文檔序號(hào):7700008閱讀:213來(lái)源:國(guó)知局
      專利名稱:一種ip報(bào)文的硬件分流方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種服務(wù)器網(wǎng)絡(luò)IP報(bào)文傳輸硬件分流方法
      背景技術(shù)
      在高速網(wǎng)絡(luò)接入系統(tǒng)的多路多核服務(wù)器環(huán)境下,為了充分利用每個(gè)處理器核的處理能力, 不同IP報(bào)文流往往被分配到不同的處理器核進(jìn)行處理,每個(gè)處理器核處理運(yùn)行一個(gè)線程處理 數(shù)據(jù)包。
      傳統(tǒng)的做法是,網(wǎng)卡將接收到的所有IP報(bào)文傳送到主存的同一個(gè)區(qū)域,上層軟件有一個(gè)調(diào)度 線程根據(jù)IP報(bào)文頭中的信息將不同的IP報(bào)文流分派到不同的處理器核。傳統(tǒng)的做法中內(nèi)存 數(shù)據(jù)移動(dòng)開(kāi)銷、操作系統(tǒng)切換開(kāi)銷、上層軟件開(kāi)銷非常大,特別是通信負(fù)荷比較重的情況下 系統(tǒng)的性能很差。
      如傳統(tǒng)DMA操作過(guò)程首先有CPU將DMA地址和長(zhǎng)度寫(xiě)到要進(jìn)行DMA的設(shè)備,然后 設(shè)備啟動(dòng)DMA過(guò)程,DMA過(guò)程完成以后設(shè)備向CPU發(fā)出中斷,告知CPU DMA已經(jīng)完成, CPU可以準(zhǔn)備下一次DMA的地址和長(zhǎng)度。
      中斷由于需要在進(jìn)入時(shí)保存CPU現(xiàn)場(chǎng),退出時(shí)恢復(fù)CPU現(xiàn)場(chǎng),比較耗費(fèi)系統(tǒng)資源,因 此在數(shù)據(jù)量非常大,DMA過(guò)程非常頻繁的情況下,中斷成了影響系統(tǒng)性能的瓶頸。

      發(fā)明內(nèi)容
      本發(fā)明的目的是克服傳統(tǒng)分流方法的重負(fù)荷情況下性能差的缺點(diǎn),采用在網(wǎng)卡上硬件實(shí) 現(xiàn)IP報(bào)文分流提高系統(tǒng)性能。本發(fā)明采用方法如下 一種IP報(bào)文網(wǎng)卡硬件分流方法,所述 網(wǎng)卡包括端口數(shù)據(jù)采集模塊、DMA通道調(diào)度模塊、函A通道描述符模塊、分流控制寄存器和 函A引擎,其特征在于,所述方法包括如下步驟
      A、 所述網(wǎng)卡驅(qū)動(dòng)程序根據(jù)當(dāng)前系統(tǒng)中的各個(gè)CPU的負(fù)載通過(guò)分流控制寄存器調(diào)節(jié)每個(gè)線 程處理的IP報(bào)文比例,并為每個(gè)線程提供一套DMA寄存器,所述每個(gè)DMA寄存器包括緩沖區(qū) 起始地址、緩沖區(qū)大小、硬件寫(xiě)指針和軟件讀指針;
      B、 網(wǎng)卡驅(qū)動(dòng)加載時(shí)為每個(gè)線程在內(nèi)存中申請(qǐng)一塊連續(xù)的緩沖區(qū),并將緩沖區(qū)首地址、大 小、緩沖區(qū)讀寫(xiě)指針初始值寫(xiě)到網(wǎng)卡上每個(gè)DMA通道的對(duì)應(yīng)寄存器中,使主內(nèi)存與DMA寄存 器形成映射關(guān)系;
      C、 端口數(shù)據(jù)采集模塊在接受IP報(bào)文的同時(shí),抽取IP報(bào)文頭中的源、目的地址,利用 hash算法算出一個(gè)hash值,然后利用該hash值與對(duì)應(yīng)的DMA寄存器與分流控制寄存器進(jìn)行 運(yùn)算,最終決定每個(gè)IP報(bào)文的線程號(hào),然后將線程號(hào)送到DMA通道調(diào)度模塊;
      D、 DMA通道調(diào)度模塊根據(jù)當(dāng)前報(bào)文的線程號(hào)選擇相應(yīng)的DMA寄存器,通過(guò)比較該DMA寄 存器讀寫(xiě)指針判斷內(nèi)存緩沖區(qū)是否己經(jīng)用完,如果內(nèi)存緩沖區(qū)有空間則啟動(dòng)DMA引擎將該線 程號(hào)對(duì)應(yīng)的報(bào)文寫(xiě)到對(duì)應(yīng)的物理內(nèi)存中,如果沒(méi)有則丟棄該報(bào)文,然后將寄存器寫(xiě)指針增加 相應(yīng)的數(shù)目;E、軟件每個(gè)處理線程在處理完當(dāng)前數(shù)據(jù)后讀網(wǎng)卡寄存器獲取本線程的讀寫(xiě)指針,通過(guò)比 較寄存器讀寫(xiě)指針判斷內(nèi)存緩沖區(qū)是否有待處理的數(shù)據(jù),若有數(shù)據(jù)待處理則從相應(yīng)的緩沖區(qū) 讀出IP報(bào)文進(jìn)行處理,處理完之后寫(xiě)網(wǎng)卡寄存器更新讀指針,重復(fù)此步直到所有的數(shù)據(jù)都處 理完畢。
      本方案的另一優(yōu)選方式所述主機(jī)IP處理線程根據(jù)線程號(hào)直接從內(nèi)存緩沖區(qū)獲取數(shù)據(jù)進(jìn) 行處理。
      本方案的再一優(yōu)選方式所述D步驟中每個(gè)線程提供一個(gè)當(dāng)前待上傳的數(shù)據(jù)總量的信息 給調(diào)試模塊,調(diào)度模塊優(yōu)先調(diào)度當(dāng)前數(shù)據(jù)量最大線程。
      本方案的又一優(yōu)選方式所述D歩驟中報(bào)文所屬線程號(hào)計(jì)算方法是 TiHVUT:分流控制寄存器中與線程i對(duì)應(yīng)的部分。 如果TiHVUT = T(i+1)HVUT,則線程(i+l)將不會(huì)分配流量; 否則,HashValue值e
      的報(bào)文被分配到線程0; Hash值e (TiHVUT, T (i+l) HVUT]的報(bào)文被分配到線程i+l; 本方案的還一優(yōu)選方式所述E步驟中網(wǎng)卡寄存器中待處理數(shù)據(jù)的查詢是由CPU線程直 接執(zhí)行。
      本方法提出査詢方式的DMA完全拋棄中斷,并且采用多通道,充分利用IO總線,能大 大提高系統(tǒng)的DMA性能,利用DMA來(lái)對(duì)應(yīng)內(nèi)容中的虛擬地址,避免調(diào)度線程只在內(nèi)存中 操作,數(shù)據(jù)擁堵的現(xiàn)象,在網(wǎng)卡上硬件實(shí)現(xiàn)IP報(bào)文分流,進(jìn)而提高了系統(tǒng)性能。本方案根據(jù) 所支持的線程數(shù)目將主存緩沖區(qū)進(jìn)行分割,使得每個(gè)線程擁有一個(gè)專用的主存緩沖區(qū),這樣 可以使線程之間資源競(jìng)爭(zhēng)大大減少,通過(guò)寫(xiě)該寄存器來(lái)控制啟動(dòng)的線程數(shù)和每個(gè)線程分流比 例。由于系統(tǒng)存在其他負(fù)載,并不是每個(gè)CPU核的處理IP報(bào)文的能力都是一樣的,所以完全 均勻的分配不一定最好,因此分流控制寄存器提供給軟件接口,由軟件劃分各個(gè)線程分流的 比例,從而達(dá)到系統(tǒng)性能發(fā)揮的最大化。利用本發(fā)明設(shè)計(jì)的網(wǎng)卡可以大大降低內(nèi)存數(shù)據(jù)移動(dòng) 開(kāi)銷、操作系統(tǒng)切換開(kāi)銷和上層軟件開(kāi)銷,明顯改善多路多核服務(wù)器環(huán)境下網(wǎng)絡(luò)接入系統(tǒng)的 性能。


      附圖1網(wǎng)卡與主機(jī)數(shù)據(jù)傳輸示意圖 附圖2 DMA緩沖區(qū)管理示意圖
      具體實(shí)施例方式
      本發(fā)明提出的查詢方式DMA完全拋棄中斷,并且采用多通道,充分利用IO總線,能大 大提高系統(tǒng)的DMA性能,如圖1所示,網(wǎng)卡包括端口數(shù)據(jù)采集模塊、DMA通道調(diào)度模塊、DMA 通道描述符模塊、分流控制寄存器和DMA引擎,通過(guò)以下步驟實(shí)現(xiàn)硬件數(shù)據(jù)傳輸?shù)哪康摹?br> A、網(wǎng)卡驅(qū)動(dòng)程序根據(jù)當(dāng)前系統(tǒng)中的各個(gè)CPU的負(fù)載通過(guò)分流控制寄存器調(diào)節(jié)每個(gè)線程處 理的IP報(bào)文比例,并為每個(gè)線程提供一套DMA寄存器,所述每個(gè)DMA寄存器包括緩沖區(qū)起始 地址、緩沖區(qū)大小、硬件寫(xiě)指針和軟件讀指針;網(wǎng)卡驅(qū)動(dòng)程序根據(jù)需要修改主存緩沖區(qū)的管
      4理機(jī)制,根據(jù)所支持的線程數(shù)目將主存緩沖區(qū)進(jìn)行分割,使得每個(gè)線程擁有一個(gè)專用的主存 緩沖區(qū),這樣可以使線程之間資源競(jìng)爭(zhēng)大大減少,系統(tǒng)加載驅(qū)動(dòng)時(shí)軟件將申請(qǐng)的緩沖區(qū)首地 址和大小寫(xiě)到對(duì)應(yīng)寄存器,并將讀指針寄存器初始化。硬件將寫(xiě)指針初始化為0。
      B、 網(wǎng)卡驅(qū)動(dòng)加載時(shí)為每個(gè)線程在內(nèi)存中申請(qǐng)一塊連續(xù)的緩沖區(qū),并將緩沖區(qū)首地址、大 小、緩沖區(qū)讀寫(xiě)指針初始值寫(xiě)到網(wǎng)卡上每個(gè)DMA通道的對(duì)應(yīng)寄存器中,使主內(nèi)存與DMA寄存 器形成映射關(guān)系;其中申請(qǐng)緩沖區(qū)大小網(wǎng)卡驅(qū)動(dòng)程序根據(jù)主機(jī)內(nèi)存大小和線程數(shù)目來(lái)決定的, 驅(qū)動(dòng)程序由大到小嘗試為每個(gè)線程分配緩沖區(qū),如果分配失敗則減小申請(qǐng)的緩沖區(qū)大小,直 到申請(qǐng)成功。
      C、 端口數(shù)據(jù)采集模塊在接受IP報(bào)文的同時(shí),抽取IP報(bào)文頭中的源、目的地址,利用 hash算法算出一個(gè)hash值,然后利用該hash值與對(duì)應(yīng)的D區(qū)寄存器與分流控制寄存器進(jìn)行 運(yùn)算,最終決定每個(gè)IP報(bào)文的線程號(hào),然后將線程號(hào)送到DMA通道調(diào)度模塊;
      D、 DMA通道調(diào)度模塊根據(jù)當(dāng)前報(bào)文的線程號(hào)選擇相應(yīng)的DMA寄存器,通過(guò)比較該DMA寄 存器讀寫(xiě)指針判斷內(nèi)存緩沖區(qū)是否已經(jīng)用完,如果內(nèi)存緩沖區(qū)有空間則啟動(dòng)DMA引擎將該線 程號(hào)對(duì)應(yīng)的報(bào)文寫(xiě)到對(duì)應(yīng)的物理內(nèi)存中,如果沒(méi)有則丟棄該報(bào)文,然后將寄存器寫(xiě)指針增加 相應(yīng)的數(shù)目;每個(gè)線程提供一個(gè)當(dāng)前待上傳的數(shù)據(jù)總量的信息給調(diào)試模塊,調(diào)度模塊優(yōu)先調(diào) 度當(dāng)前數(shù)據(jù)量最大線程。如圖2所示,其中報(bào)文所屬線程號(hào)計(jì)算方法是TiHVUT:分流控制 寄存器中與線程i對(duì)應(yīng)的部分。
      如果TiHVUT = T(i+1)HVUT,則線程(i+1)將不會(huì)分配流量; 否則,HashValue值G
      的報(bào)文被分配到線程0; Hash值e (TiHVUT, T(i+1)HVUT]的報(bào)文被分配到線程i+1;
      軟件每個(gè)線程通過(guò)査詢本線程對(duì)應(yīng)的讀寫(xiě)指針判斷緩沖區(qū)中是否有待處理數(shù)據(jù)(相等則 為空,沒(méi)有數(shù)據(jù)待處理)和待處理數(shù)據(jù)的內(nèi)存物理地址和大小,然后進(jìn)行數(shù)據(jù)處理,處理完 之后寫(xiě)對(duì)應(yīng)寄存器更新讀指針。當(dāng)某個(gè)線程要啟動(dòng)DMA操作時(shí),首先檢査緩沖區(qū)是否寫(xiě)滿
      (寫(xiě)指針加l等于讀指針)。如果沒(méi)滿則啟動(dòng)DMA過(guò)程,并在DMA完成以后更新寫(xiě)指針, 否則丟棄當(dāng)前待報(bào)文,以免影響后續(xù)數(shù)據(jù)傳輸。
      E、 軟件每個(gè)處理線程在處理完當(dāng)前數(shù)據(jù)后讀網(wǎng)卡寄存器獲取本線程的讀寫(xiě)指針,通過(guò)比 較寄存器讀寫(xiě)指針判斷內(nèi)存緩沖區(qū)是否有待處理的數(shù)據(jù),若有數(shù)據(jù)待處理則從相應(yīng)的緩沖區(qū) 讀出IP報(bào)文進(jìn)行處理,處理完之后寫(xiě)網(wǎng)卡寄存器更新讀指針,重復(fù)此步直到所有的數(shù)據(jù)都處 理完畢;網(wǎng)卡寄存器中待處理數(shù)據(jù)的査詢是由CPU線程直接執(zhí)行。
      本方案中網(wǎng)卡啟動(dòng)多個(gè)接收IP包的線程,與主機(jī)處理IP包的線程一一對(duì)應(yīng),網(wǎng)卡收包 線程直接將接收的IP包寫(xiě)到主機(jī)內(nèi)存的一塊緩沖區(qū)中,主機(jī)處理IP包的線程直接從內(nèi)存緩 沖區(qū)獲取數(shù)據(jù)進(jìn)行處理,這中間的數(shù)據(jù)傳輸不需要CPU參與,可以降低CPU負(fù)載。本發(fā)明 可支持高達(dá)1024甚至4096、 8192個(gè)硬件線程,最佳配置為每個(gè)CPU核對(duì)應(yīng)一個(gè)線程,這樣 每個(gè)線程獨(dú)立工作,互不干擾,系統(tǒng)資源的共享競(jìng)爭(zhēng)最少,能達(dá)到最好性能。
      權(quán)利要求
      1、一種IP報(bào)文網(wǎng)卡硬件分流方法,所述網(wǎng)卡包括端口數(shù)據(jù)采集模塊、DMA通道調(diào)度模塊、DMA通道描述符模塊、分流控制寄存器和DMA引擎,其特征在于,所述方法包括如下步驟A、所述網(wǎng)卡驅(qū)動(dòng)程序根據(jù)當(dāng)前系統(tǒng)中的各個(gè)CPU的負(fù)載通過(guò)分流控制寄存器調(diào)節(jié)每個(gè)線程處理的IP報(bào)文比例,并為每個(gè)線程提供一套DMA寄存器,所述每個(gè)DMA寄存器包括緩沖區(qū)起始地址、緩沖區(qū)大小、硬件寫(xiě)指針和軟件讀指針;B、網(wǎng)卡驅(qū)動(dòng)加載時(shí)為每個(gè)線程在內(nèi)存中申請(qǐng)一塊連續(xù)的緩沖區(qū),并將緩沖區(qū)首地址、大小、緩沖區(qū)讀寫(xiě)指針初始值寫(xiě)到網(wǎng)卡上每個(gè)DMA通道的對(duì)應(yīng)寄存器中,使主內(nèi)存與DMA寄存器形成映射關(guān)系;C、端口數(shù)據(jù)采集模塊在接受IP報(bào)文的同時(shí),抽取IP報(bào)文頭中的源、目的地址,利用hash算法算出一個(gè)hash值,然后利用該hash值與對(duì)應(yīng)的DMA寄存器與分流控制寄存器進(jìn)行運(yùn)算,最終決定每個(gè)IP報(bào)文的線程號(hào),然后將線程號(hào)送到DMA通道調(diào)度模塊;D、DMA通道調(diào)度模塊根據(jù)當(dāng)前報(bào)文的線程號(hào)選擇相應(yīng)的DMA寄存器,通過(guò)比較該DMA寄存器讀寫(xiě)指針判斷內(nèi)存緩沖區(qū)是否已經(jīng)用完,如果內(nèi)存緩沖區(qū)有空間則啟動(dòng)DMA引擎將該線程號(hào)對(duì)應(yīng)的報(bào)文寫(xiě)到對(duì)應(yīng)的物理內(nèi)存中,如果沒(méi)有則丟棄該報(bào)文,然后將寄存器寫(xiě)指針增加相應(yīng)的數(shù)目;E、軟件每個(gè)處理線程在處理完當(dāng)前數(shù)據(jù)后讀網(wǎng)卡寄存器獲取本線程的讀寫(xiě)指針,通過(guò)比較寄存器讀寫(xiě)指針判斷內(nèi)存緩沖區(qū)是否有待處理的數(shù)據(jù),若有數(shù)據(jù)待處理則從相應(yīng)的緩沖區(qū)讀出IP報(bào)文進(jìn)行處理,處理完之后寫(xiě)網(wǎng)卡寄存器更新讀指針,重復(fù)此步直到所有的數(shù)據(jù)都處理完畢。
      2、 如權(quán)利要求1所述的一種IP報(bào)文網(wǎng)卡硬件分流方法,其特征在于,所述主機(jī)IP處理 線程根據(jù)線程號(hào)直接從內(nèi)存緩沖區(qū)獲取數(shù)據(jù)進(jìn)行處理。
      3、 如權(quán)利要求1所述的一種IP報(bào)文網(wǎng)卡硬件分流方法,其特征在于,所述D步驟中每 個(gè)線程提供一個(gè)當(dāng)前待上傳的數(shù)據(jù)總量的信息給調(diào)試模塊,調(diào)度模塊優(yōu)先調(diào)度當(dāng)前數(shù)據(jù)量最 大線程。
      4、 如權(quán)利要求1所述的一種IP報(bào)文網(wǎng)卡硬件分流方法,其特征在于,所述D歩驟中報(bào) 文所屬線程號(hào)計(jì)算方法是TiHVUT:分流控制寄存器中與線程i對(duì)應(yīng)的部分。 如果TiHVUT = T(i+1)HVUT,則線程(i+1)將不會(huì)分配流量; 否則,HashValue值e
      的報(bào)文被分配到線程0; Hash值e (Ti隨,T(i+1)HVUT]的報(bào)文被分配到線程i+1 。
      5、 如權(quán)利要求1所述的一種IP報(bào)文網(wǎng)卡硬件分流方法,其特征在于,所述E步驟中網(wǎng) 卡寄存器中待處理數(shù)據(jù)的查詢是由CPU線程直接執(zhí)行。
      全文摘要
      本發(fā)明涉及一種IP報(bào)文的硬件分流方法,本方案利用網(wǎng)卡硬件對(duì)接收到的IP報(bào)文進(jìn)行分流,網(wǎng)卡在接受IP報(bào)文的同時(shí),抽取IP報(bào)文頭中的源、目的地址,利用Hash算法計(jì)算出該IP報(bào)文所屬的線程,然后DMA通道調(diào)度模塊根據(jù)線程號(hào)啟動(dòng)DMA引擎將報(bào)文送到該線程所屬的主存緩沖區(qū)中,為了支持IP報(bào)文的硬件分流策略,上層軟件使得每個(gè)線程擁有一個(gè)專用的主存緩沖區(qū),網(wǎng)卡啟動(dòng)多個(gè)接收IP包的線程與主機(jī)處理IP包的線程一一對(duì)應(yīng),主機(jī)處理IP包的線程直接從內(nèi)存緩沖區(qū)獲取數(shù)據(jù)進(jìn)行處理,這中間的數(shù)據(jù)傳輸不需要CPU參與,可以降低CPU負(fù)載。本發(fā)明可支持高達(dá)1024甚至4096、8192個(gè)硬件線程,最佳配置為每個(gè)CPU核對(duì)應(yīng)一個(gè)線程,這樣每個(gè)線程獨(dú)立工作,互不干擾,系統(tǒng)資源的共享競(jìng)爭(zhēng)最少,達(dá)到最好性能。
      文檔編號(hào)H04L12/56GK101540727SQ20091008315
      公開(kāi)日2009年9月23日 申請(qǐng)日期2009年5月5日 優(yōu)先權(quán)日2009年5月5日
      發(fā)明者劉新春, 劉朝輝, 李永成, 竇曉光, 賀志強(qiáng) 申請(qǐng)人:曙光信息產(chǎn)業(yè)(北京)有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1