国产精品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>

      字符串匹配的方法、設(shè)備和異構(gòu)計(jì)算系統(tǒng)的制作方法

      文檔序號(hào):9646568閱讀:514來(lái)源:國(guó)知局
      字符串匹配的方法、設(shè)備和異構(gòu)計(jì)算系統(tǒng)的制作方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明實(shí)施例涉及通信技術(shù),尤其涉及一種字符串匹配的方法、設(shè)備和異構(gòu)計(jì)算系統(tǒng)。
      【背景技術(shù)】
      [0002]多模式字符串匹配算法廣泛應(yīng)用在以字符串模式匹配為基礎(chǔ)的網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)(Network Intrus1n Detect1n System,簡(jiǎn)稱 NIDS)、深度包檢測(cè)(Deep packetinspect1n,簡(jiǎn)稱DPI)等系統(tǒng)中。模式匹配的目的是在目標(biāo)串中找出與模式串相同的子串,多模式匹配就是在目標(biāo)串中一次匹配多個(gè)模式串。NIDS系統(tǒng)通過(guò)多模式匹配算法能夠檢測(cè)出網(wǎng)絡(luò)數(shù)據(jù)包中的入侵?jǐn)?shù)據(jù)包,然后,對(duì)入侵?jǐn)?shù)據(jù)包采取主動(dòng)反應(yīng)或發(fā)出警報(bào)。多模式字符串匹配占用了整個(gè)NIDS系統(tǒng)大部分的中央處理器(Central Processing Unit,簡(jiǎn)稱CPU)處理時(shí)間。例如在Snort中,多模式字符串匹配占用的CPU處理時(shí)間達(dá)到70%以上,多模式字符串匹配的速度成了整個(gè)系統(tǒng)處理速度的瓶頸,所以需要提高多模式字符串匹配引擎的匹配速度,以應(yīng)付更大的網(wǎng)絡(luò)流量的處理。并行化是對(duì)字符串匹配進(jìn)行加速的常用方法,通過(guò)并行化可以充分利用多核CPU的多個(gè)核心,從而提高字符串匹配的速度,但是CPU的處理能力有限,無(wú)法滿足字符串匹配的速度要求。
      [0003]為了進(jìn)一步提高字符串匹配的速度,現(xiàn)有技術(shù)中,利用圖形處理器(GraphicsProcessing Unit,簡(jiǎn)稱GPU)分擔(dān)一部分字符串匹配任務(wù),CPU和GPU協(xié)同工作稱為異構(gòu)計(jì)算,GPU由數(shù)以千計(jì)的更小、更高效的核心組成,這些核心專為同時(shí)處理多個(gè)任務(wù)而設(shè)計(jì),因此,GPU也具有很強(qiáng)的運(yùn)算能力。圖1為現(xiàn)有技術(shù)中異構(gòu)計(jì)算環(huán)境下字符串模式匹配的流程示意圖,如圖1所示,首先,CPU對(duì)模式串集合進(jìn)行預(yù)處理,然后,將被匹配的目標(biāo)字符串分段,GPU的每個(gè)GPU核匹配一段目標(biāo)字符串,GPU將處理結(jié)果發(fā)送給CPU,CPU分析與處理最終匹配結(jié)果。上述方式中,GPU的核被劃分為多個(gè)計(jì)算單元,每個(gè)計(jì)算單元包括多個(gè)處理單元,每個(gè)處理單元即一個(gè)GPU的核心。計(jì)算單元內(nèi)部采用單指令多數(shù)據(jù)(Singleinstruct1n, multiple data,簡(jiǎn)稱SIMD)方式,使得計(jì)算單元內(nèi)部的多個(gè)處理單元在同一時(shí)刻執(zhí)行相同的指令處理不同的數(shù)據(jù)?,F(xiàn)有的多模式字符串匹配算法中,當(dāng)處理單元判斷自動(dòng)機(jī)的當(dāng)前狀態(tài)為匹配態(tài)時(shí),處理單元還需要存儲(chǔ)匹配串的當(dāng)前位置、當(dāng)前狀態(tài)的編號(hào)等信息,而當(dāng)處理單元判斷自動(dòng)機(jī)的當(dāng)前狀態(tài)為非匹配態(tài)時(shí),處理單元不再執(zhí)行存儲(chǔ)匹配串的當(dāng)前位置、當(dāng)前狀態(tài)的編號(hào)等后續(xù)操作,由于在匹配態(tài)下處理單元要執(zhí)行很多額外的操作,所以匹配態(tài)的執(zhí)行時(shí)間遠(yuǎn)大于非匹配態(tài)的執(zhí)行時(shí)間。因此,當(dāng)計(jì)算單元內(nèi)的一個(gè)處理單元執(zhí)行匹配態(tài)時(shí),而該計(jì)算單元內(nèi)的其他處理單元執(zhí)行非匹配態(tài)時(shí),其他處理單元需要等待該處理單元執(zhí)行完匹配態(tài)后,才能跳轉(zhuǎn)到下一個(gè)狀態(tài),使得GPU的匹配速度低。

      【發(fā)明內(nèi)容】

      [0004]本發(fā)明實(shí)施例提供一種字符串匹配的方法、設(shè)備和異構(gòu)計(jì)算系統(tǒng),以提高GPU核的匹配效率。
      [0005]本發(fā)明第一方面提供一種字符串匹配的方法,所述方法應(yīng)用于異構(gòu)計(jì)算系統(tǒng)中,所述異構(gòu)計(jì)算系統(tǒng)包括:中央處理單元CPU和圖形處理器GPU,所述GPU包括多個(gè)計(jì)算單元,所述多個(gè)計(jì)算單元中的每個(gè)計(jì)算單元包括多個(gè)GPU核,所述多個(gè)計(jì)算單元之間并行對(duì)數(shù)據(jù)進(jìn)行處理,所述每個(gè)計(jì)算單元內(nèi)部的多個(gè)GPU核之間并行對(duì)數(shù)據(jù)進(jìn)行處理,所述方法包括:
      [0006]所述計(jì)算單元中的每個(gè)GPU核分別獲取對(duì)應(yīng)的待匹配的子字符串,并將所述待匹配的子字符串輸入自動(dòng)機(jī)中進(jìn)行第一匹配,其中,所述自動(dòng)機(jī)是根據(jù)多個(gè)模式串預(yù)先生成的,所述自動(dòng)機(jī)的每一個(gè)節(jié)點(diǎn)對(duì)應(yīng)一個(gè)狀態(tài),在所述第一匹配的匹配過(guò)程中,所述計(jì)算單元中的每個(gè)GPU核在所述自動(dòng)機(jī)的當(dāng)前狀態(tài)時(shí),若沒(méi)有匹配到模式串,則直接跳轉(zhuǎn)到所述自動(dòng)機(jī)的下一個(gè)狀態(tài)進(jìn)行匹配;
      [0007]所述計(jì)算單元中的每個(gè)GPU核將第一匹配的結(jié)果發(fā)送給所述CPU,以使所述CPU根據(jù)所述計(jì)算單元中的每個(gè)GPU核的第一匹配的結(jié)果,對(duì)所述計(jì)算單元中的每個(gè)GPU核對(duì)應(yīng)的待匹配的子字符串進(jìn)行第二匹配。
      [0008]結(jié)合本發(fā)明第一方面,在本發(fā)明第一方面的第一種可能的實(shí)現(xiàn)方式中,所述每個(gè)GPU核的第一匹配的結(jié)果為所述每個(gè)GPU核對(duì)應(yīng)的待匹配的子字符串的匹配標(biāo)志位的值,所述匹配標(biāo)志位用于指示是否需要對(duì)對(duì)應(yīng)的待匹配的子字符串進(jìn)行所述第二匹配;
      [0009]相應(yīng)地,所述方法還包括:
      [0010]所述計(jì)算單元中的每個(gè)GPU核根據(jù)第一匹配的結(jié)果分別更新對(duì)應(yīng)的待匹配的子字符串的匹配標(biāo)志位的值;
      [0011]所述計(jì)算單元中的每個(gè)GPU核將第一匹配的結(jié)果發(fā)送給所述CPU,包括
      [0012]所述計(jì)算單元中的每個(gè)GPU核將對(duì)應(yīng)的待匹配的子字符串的匹配標(biāo)志位的值發(fā)送給所述CPU。
      [0013]結(jié)合本發(fā)明第一方面的第一種可能的實(shí)現(xiàn)方式,在本發(fā)明第一方面的第二種可能的實(shí)現(xiàn)方式中,所述計(jì)算單元中的每個(gè)GPU核根據(jù)第一匹配的結(jié)果分別更新對(duì)應(yīng)的待匹配的子字符串的匹配標(biāo)志位的值,包括:
      [0014]若所述計(jì)算單元中的第一 GPU核對(duì)應(yīng)的待匹配的子字符串匹配到了所述多個(gè)模式串中的至少一個(gè)模式串,則所述第一 GPU核將對(duì)應(yīng)的待匹配的子字符串的匹配標(biāo)志位的值更新為需要進(jìn)行所述第二匹配,其中,所述第一 GPU核為所述計(jì)算單元中的任意一個(gè)GPU核;
      [0015]若所述第一 GPU核對(duì)應(yīng)的待匹配的子字符串沒(méi)有匹配到所述多個(gè)模式串中任意一個(gè)模式串,則所述第一 GPU核將對(duì)應(yīng)的待匹配的子字符串的匹配標(biāo)志的值為更新為不需要進(jìn)行所述第二匹配。
      [0016]結(jié)合本發(fā)明第一方面的第一種可能的實(shí)現(xiàn)方式,在本發(fā)明第一方面的第三種可能的實(shí)現(xiàn)方式中,所述計(jì)算單元中的每個(gè)GPU核將對(duì)應(yīng)的待匹配的子字符串的匹配標(biāo)志位的值發(fā)送給所述CPU,包括:
      [0017]所述計(jì)算單元中的每個(gè)GPU核將對(duì)應(yīng)的待匹配的子字符串的匹配標(biāo)志位的值從自己的私有內(nèi)存寫入所述計(jì)算單元的本地內(nèi)存中;
      [0018]所述計(jì)算單元將每個(gè)GPU核對(duì)應(yīng)的待匹配的子字符串的匹配標(biāo)志位的值從所述本地內(nèi)存寫入所述GPU的全局內(nèi)存中,以使所述CPU從所述GPU的全局內(nèi)存中將所述計(jì)算單元中的每個(gè)GPU核對(duì)應(yīng)的待匹配的子字符串的匹配標(biāo)志位的值讀取到所述CPU的內(nèi)存中。
      [0019]結(jié)合本發(fā)明第一方面以及本發(fā)明第一方面的第一種至第三種可能的實(shí)現(xiàn)方式,在本發(fā)明第一方面的第四種可能的實(shí)現(xiàn)方式中,所述計(jì)算單元中的每個(gè)GPU核分別獲取對(duì)應(yīng)的待匹配的子字符串之前,所述方法還包括:
      [0020]所述計(jì)算單元中的每個(gè)GPU核分別從所述GPU的全局內(nèi)存中讀取所述自動(dòng)機(jī),其中,所述自動(dòng)機(jī)是所述CPU根據(jù)所述多個(gè)模式串生成并存儲(chǔ)到所述GPU的全局內(nèi)存中的。
      [0021]結(jié)合本發(fā)明第一方面以及本發(fā)明第一方面的第一種至第三種可能的實(shí)現(xiàn)方式,在本發(fā)明第一方面的第五種可能的實(shí)現(xiàn)方式中,所述計(jì)算單元中的每個(gè)GPU核分別獲取對(duì)應(yīng)的待匹配的子字符串,包括:
      [0022]所述計(jì)算單元中的每個(gè)GPU核分別從所述GPU的全局內(nèi)存中將對(duì)應(yīng)的待匹配的子字符串讀取到自己的私有內(nèi)存中。
      [0023]本發(fā)明第二方面提供一種字符串匹配的方法,所述方法應(yīng)用于異構(gòu)計(jì)算系統(tǒng)中,所述異構(gòu)計(jì)算系統(tǒng)包括:中央處理單元CPU和具有多個(gè)核的圖形處理器GPU,所述GPU的多個(gè)核被劃分成多個(gè)計(jì)算單元,所述多個(gè)計(jì)算單元中的每個(gè)計(jì)算單元包括多個(gè)GPU核,所述多個(gè)計(jì)算單元之間并行對(duì)數(shù)據(jù)進(jìn)行處理,所述每個(gè)計(jì)算單元內(nèi)部的多個(gè)GPU核之間并行對(duì)數(shù)據(jù)進(jìn)行處理,所述方法包括:
      [0024]所述CPU接收所述計(jì)算單元中的每個(gè)GPU核發(fā)送的第一匹配的結(jié)果,其中,所述每個(gè)GPU核發(fā)送的第一匹配的結(jié)果是所述每個(gè)GPU核根據(jù)獲取的待匹配的子字符串和自動(dòng)機(jī)中進(jìn)行第一匹配得到的,其中,所述自動(dòng)機(jī)是根據(jù)多個(gè)模式串預(yù)先生成的,所述自動(dòng)機(jī)的每一個(gè)節(jié)點(diǎn)對(duì)應(yīng)一個(gè)狀態(tài),在所述第一匹配的匹配過(guò)程中,所述計(jì)算單元中的每個(gè)GPU核在所述自動(dòng)機(jī)的當(dāng)前狀態(tài)時(shí),若沒(méi)有匹配到模式串,則直接跳轉(zhuǎn)到所述自動(dòng)機(jī)的下一個(gè)狀態(tài)進(jìn)行匹配;
      [0025]所述CPU根據(jù)所述每個(gè)GPU核的第一匹配的結(jié)果,確定是否對(duì)所述計(jì)算單元中的第一 GPU核對(duì)應(yīng)的待匹配的子字符串進(jìn)行第二匹配,所述第一 GPU核為所述計(jì)算單元中的任意一個(gè)GPU核;
      [0026]若所述CPU確定對(duì)所述第一 GPU核對(duì)應(yīng)的待匹配的子字符串進(jìn)行第二匹配,則所述CPU將所述第一 GPU核對(duì)應(yīng)的待匹配的子字符串輸入所述自動(dòng)機(jī)進(jìn)行第二匹配,并記錄所述第一 GPU核對(duì)應(yīng)的待匹配的子字符串的匹配信息。
      [0027]結(jié)合本發(fā)明第二方面,在本發(fā)明第二方面的第一種可能的實(shí)現(xiàn)方式中,所述每個(gè)GPU核發(fā)送的第一匹配的結(jié)果為所述每個(gè)GPU核對(duì)應(yīng)的待匹配的子字符串的匹配標(biāo)志位的值,其中,所述匹配標(biāo)志位用于指示是否需要對(duì)對(duì)應(yīng)的待匹配的子字符串進(jìn)行所述第二匹配;
      [0028]所述CPU根據(jù)所述計(jì)算單元中的每個(gè)GPU核的第一匹配的結(jié)果,確定是否對(duì)所述計(jì)算單元中的第一 GPU核對(duì)應(yīng)的待匹配的子字符串進(jìn)行第二匹配,包括:
      [0029]所述CPU判斷所述第一 GPU核對(duì)應(yīng)的待匹配的子字符串的匹配標(biāo)志位的值是否指示對(duì)所述第一 GPU核對(duì)應(yīng)的待匹配的子字符串進(jìn)行所述第二匹配;
      [0030]若所述第一 GPU核對(duì)應(yīng)的待匹配的子字符串的匹配標(biāo)志位的值指示對(duì)所述第一GPU核對(duì)應(yīng)的待匹配的子字符串進(jìn)行所述第二匹配,則所述CPU確定對(duì)所述第一 GPU核對(duì)應(yīng)的待匹配的子字符串進(jìn)行所述第二匹配。
      [0031]結(jié)合本發(fā)明第二方面,在本發(fā)明第二方面的第二種可能的實(shí)現(xiàn)方式中,所述方法還包括:
      [0032]所述CPU接收待匹配的目標(biāo)字符串,將所述目標(biāo)字符串發(fā)送到所述GPU的全局內(nèi)存中;
      [0033]所述CPU按照分段規(guī)則將所述目標(biāo)字符串劃分成多個(gè)待匹配的子字符串,所述多個(gè)待匹配的子字符串中每一個(gè)待匹配的子字符串由所述計(jì)算單元中的一個(gè)GPU核處理。
      [0034]結(jié)合本發(fā)明第二方面以及本發(fā)明第二方面的第一種和第二種可能的實(shí)現(xiàn)方式,在本發(fā)明第二方面的第三種可能的實(shí)現(xiàn)方式中,所述方法還包括:
      [0035]所述CPU根據(jù)所述多個(gè)模式串生成所述自動(dòng)機(jī),并將所述自動(dòng)機(jī)發(fā)送到所述GPU的全局內(nèi)存中。
      [0036]結(jié)合本發(fā)明第二方面以及本發(fā)明第二方面的第一種和第二種可能的實(shí)現(xiàn)方式,在本發(fā)明第二方面的第四種可能的實(shí)現(xiàn)方式中,所述第一 GPU核對(duì)應(yīng)的待匹配的子字符串的匹配信息包括:所述第一 GPU核對(duì)應(yīng)的待匹配的子字符串匹配到的模式串的標(biāo)識(shí)、所述第一 GPU核對(duì)應(yīng)的待匹配的子字符串匹配到的模式串在所述第一 GPU核對(duì)應(yīng)的待匹配的子字符串中的位置信息。
      [0037]本發(fā)明第三方面提供一種圖形處理器GPU,所述GPU應(yīng)用于異構(gòu)計(jì)算系統(tǒng)中,所述異構(gòu)計(jì)算系統(tǒng)包括:中央處理單元CPU和所述GPU,所述GPU包括多個(gè)計(jì)算單元,所述多個(gè)計(jì)算單元中的每個(gè)計(jì)算單元包括多個(gè)GPU核,所述多個(gè)計(jì)算單元之間并行對(duì)數(shù)據(jù)進(jìn)行處理,所述每個(gè)計(jì)算單元內(nèi)部的多個(gè)GPU核之間并行對(duì)數(shù)據(jù)進(jìn)行處理,所述計(jì)算單元中的每個(gè)GPU核包括:
      [0038]獲取模塊,用于獲取所述GPU核對(duì)應(yīng)的待匹配的
      當(dāng)前第1頁(yè)1 2 3 4 5 6 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1