用于使能利用simd寄存器的位并行寬串匹配的技術的制作方法
【技術領域】
[0001]本文所述的實施例一般涉及使能在位并行匹配中SIMD寄存器的全寬度的高效使用。
【背景技術】
[0002]串匹配算法廣泛用于網(wǎng)絡安全、加密、商業(yè)分析、腳本和標記語言的處理、搜索引擎的領域中,并且用作軟件編譯器和解釋器的組件。作為其普遍使用的結(jié)果,眾多情形下的可用計算能力的相當大比例致力于執(zhí)行這些算法。
[0003]在串匹配算法中,搜索一個較大的串,為的是在其中另一個較小的串的出現(xiàn)。被搜索的較大的串經(jīng)常被稱為“序列”,而較小的串(為了其出現(xiàn)而搜索較大的串)經(jīng)常被稱為“型式(pattern)”。這兩個串都可以由字符、表示諸如DNA序列元素之類的信息的符號或各種類型的數(shù)據(jù)中的任一個組成。本質(zhì)上,串是數(shù)據(jù)元素的一維陣列,一個數(shù)據(jù)元素用于陣列中的每個位置。用于陣列中每個元素的可能值的集合經(jīng)常被稱為“字母表(alphabet)”。
[0004]隨著時間的推移,已經(jīng)設計出串匹配算法的許多變型。在較新近的變型之中是位并行串匹配算法,所述算法采用位值和位掩碼(bitmask)來表示在型式和/或序列中每個位置處特定數(shù)據(jù)值的出現(xiàn)。這些位并行變型中的許多實現(xiàn)相當大的效率,其中型式的長度(即組成型式的一維陣列中的位置的數(shù)量)小于或等于處理器的一個或多個寄存器中位的數(shù)量。在型式的長度大于處理器的寄存器中位的數(shù)量的情況下仍然可以使用這些位并行變型,但是這導致需要在存儲器中創(chuàng)建數(shù)據(jù)結(jié)構(gòu),以提供更寬的處理器寄存器的等效物。
[0005]具有32位或64位寬度的寄存器的處理器久已常見,并且由于許多目的而采用高效地適應位并行串匹配算法的現(xiàn)今足夠?qū)挼募拇嫫?。此外,處理器架?gòu)中的新近進展已經(jīng)使得能夠引進具有128位、256位和512位寄存器的處理器,因而潛在地以相當大的效率而適應日益更大的型式。然而,考慮到數(shù)值數(shù)據(jù)的典型片段往往需要不多于64位來被表示,更大寬度的寄存器傾向于被細分為64位寬度或更少的兩個或更多個分道(lane),以使得能夠并排保持多個數(shù)據(jù)值。這樣的處理器的指令集還利用這樣的指令被擴充:所述指令使得能夠并行地同時執(zhí)行那些并排的值上的按位邏輯、算術和其它指令。這樣的寄存器和指令往往分別被稱為“矢量寄存器”和“矢量指令”。此外,實現(xiàn)具有矢量指令的矢量寄存器的處理器架構(gòu)被稱為SMD (單指令多數(shù)據(jù))架構(gòu)。
[0006]細分這樣的寬寄存器的方式和實現(xiàn)支持其使用的指令集的方式的一個副產(chǎn)物是僅僅為位的移位操作提供支持的傾向,其中在這些寄存器之一內(nèi)的分道的一端或兩端處的位值丟失。這一個實現(xiàn)細節(jié)在支持更長的型式中呈現(xiàn)對于使用這樣的非常寬的寄存器的全寬度的阻礙。是關于這些和其它考慮而需要本文所述的實施例的。
【附圖說明】
[0007]圖1圖示在設備之間的交互的實施例的方面。
[0008]圖2圖示圖1的實施例的變型的方面。
[0009]圖3圖示圖1的實施例中的串匹配的概念方面。
[0010]圖4a_c圖示圖3的概念方面的進一步的細節(jié)。
[0011]圖5a_b圖示圖1的實施例中的串匹配的按位實現(xiàn)的方面。
[0012]圖6a_e圖示圖5a_b的實現(xiàn)的另外的方面。
[0013]圖7圖示圖1的實施例的一部分的框圖。
[0014]圖8圖示第一邏輯流的實施例。
[0015]圖9圖示第二邏輯流的實施例。
[0016]圖10圖示處理架構(gòu)的實施例。
【具體實施方式】
[0017]各種實施例一般目的在于增強位并行串匹配算法來克服SIMD架構(gòu)的矢量寄存器的位的移位限制,以使得能夠在那些寄存器的情況下使用這樣的算法。更具體地,位并行串匹配算法被增強以利用矢量指令來克服位的移位操作中的分道到分道限制,其中在用于一個或多個寬的位掩碼的矢量寄存器的分道之間不進位(carry)位值。
[0018]這樣的矢量寄存器可以用來存儲由各種位并行串匹配算法采用的、在那些算法的執(zhí)行期間頻繁被進行位的移位的類型的測試位掩碼。如將更詳細地描述的,克服進位位值丟失的技術可以包括:通過按位操作將MSB位的位置處的位值的拷貝保存為矢量掩碼(vector mask)中的矢量值,作為標量值而對矢量值進行位的移位。現(xiàn)在經(jīng)移位的矢量值然后用于控制充當位進位掩碼的另一個矢量寄存器的LSB位的填充,并且在已經(jīng)對測試位掩碼進行了位的移位以還原以其它方式缺失的位值之后,位進位掩碼與存儲了測試位掩碼的矢量寄存器進行“或”運算。
[0019]這樣的矢量寄存器的初始化可能需要首先選擇性地填充在其中存儲測試位掩碼的矢量寄存器的分道,并且然后將其中存儲測試位掩碼的那些分道中的最高有效的一個分道位移位到右邊以調(diào)整填充值(被預想為全1,但可以是不同的填充值)的總體長度,以匹配測試位掩碼型式的位長度。不同的位并行串匹配算法用不同程度的頻率來移位和/或重新初始化測試位掩碼型式。然而,二者足夠頻繁地發(fā)生,以使得位并行匹配算法的執(zhí)行的效率可以通過使用本文所述的技術而顯著增強。
[0020]一般參照本文所用的記號和命名法,可以在計算機或計算機網(wǎng)絡上執(zhí)行的程序過程的方面呈現(xiàn)隨后的【具體實施方式】的部分。這些過程性描述和表示由本領域技術人員用來將其工作的實質(zhì)最有效地傳達給本領域其他技術人員。過程在這里并且一般被設想為導致期望的結(jié)果的操作的自相一致序列。這些操作是需要物理量的物理操縱的那些操作。通常,雖然不是必要地,這些量采取能夠被存儲、傳遞、組合、比較和以其它方式操縱的電學、磁性或光學信號的形式。主要由于常見使用的原因,將這些信號稱為位、值、元素、符號、字符、項、數(shù)字等等有時證明是方便的。然而,應當注意的是:所有這些和類似的術語將與適當?shù)奈锢砹肯嚓P聯(lián),并且僅僅是應用于那些量的方便的標簽。
[0021]此外,經(jīng)常在通常與由人類操作員執(zhí)行的智力操作相關聯(lián)的術語(諸如添加或比較)中提及這些操縱。然而,在形成一個或多個實施例的部分的本文所述的任何操作中,沒有任何這樣的人類操作員能力是必要的,或在大多數(shù)情況下是合期望的。相反,這些操作是機器操作。用于執(zhí)行各種實施例的操作的有用機器包括如由存儲在內(nèi)的根據(jù)本文教導所編寫的計算機程序而被選擇性地激活或配置的通用數(shù)字計算機,和/或包括為了所需目的而特別地構(gòu)造的裝置。各種實施例還涉及用于執(zhí)行這些操作的裝置或系統(tǒng)。這些裝置可以為了所需目的而被特別地構(gòu)造,或者可以合并通用計算機。用于各種各樣的這些機器的所需結(jié)構(gòu)將從給出的描述中顯現(xiàn)。
[0022]現(xiàn)在對附圖作出參考,其中同樣的參考標號貫穿全文用于指代同樣的元件。在下面的描述中,為了解釋的目的,闡述許多具體細節(jié),以便提供對其的透徹理解。然而,可以實踐新穎的實施例而沒有這些具體細節(jié)可以是顯而易見的。在其它實例中,以框圖形式示出公知的結(jié)構(gòu)和設備,以使得便于其描述。意圖是覆蓋權利要求的范圍內(nèi)的所有修改、等同物和替代方案。
[0023]圖1和2 —起描繪在串匹配系統(tǒng)1000的兩個可能的變型的計算設備之間的交互的方面的框圖。每個變型包括一個或多個搜索設備100和交互設備300,搜索設備100利用SIMD架構(gòu)的矢量寄存器而執(zhí)行位并行串匹配,交互設備300可以為搜索設備100所執(zhí)行的串匹配提供型式和/或序列。這些計算設備100和300中的每一個可以是各種類型的計算設備中的任一個,包括而不限于:臺式計算機系統(tǒng)、數(shù)據(jù)錄入終端、膝上型計算機、上網(wǎng)本計算機、超級本計算機、平板計算機、手持式個人數(shù)據(jù)助理、智能電話、數(shù)碼相機、移動設備、合并到服裝中的身體佩帶的計算設備、集成到車輛中的計算設備、服務器、服務器集群、服務器農(nóng)場等。
[0024]如針對兩個變型所描繪的,這些計算設備100和300可以交換信號,其傳送包括用于位并行匹配操作的執(zhí)行的序列和/或型式的數(shù)據(jù)和/或包括這樣的操作的結(jié)果的指示的數(shù)據(jù)。然而,這些計算設備中的一個或多個可以交換其它不同的和完全無關的數(shù)據(jù)。在各種實施例中,網(wǎng)絡999可以是可能限于在單個建筑物或其它相對有限的區(qū)域內(nèi)擴展的單個網(wǎng)絡、可能擴展相當大距離的連接的網(wǎng)絡的組合,和/或可以包括因特網(wǎng)。因而,網(wǎng)絡999可以基于可以通過其而交換信號的各種通信技術(或其組合)中的任一個,包括而不限于:采用電學和/或光學傳導的線纜敷設的有線技術,以及采用紅外、射頻或其它形式的無線傳輸?shù)臒o線技術。還應當注意的是:可以替代地在這些計算設備中的兩個多個之間經(jīng)由可移除存儲裝置(例如基于FLASH (閃速)存儲器技術的固態(tài)存儲裝置、光盤介質(zhì)等)交換這樣的數(shù)據(jù)。
[0025]在圖1的變型的各種實施例中,搜索設備100合并處理器元件150、存儲裝置160、控制裝置120、顯示器180和將搜索設備100耦合到網(wǎng)絡999的接口 190中的一個或多個。存儲裝置160存儲控制例程140、序列531、型式532和結(jié)果數(shù)據(jù)539中的一個或多個。在圖2的變型的各種實施例中,搜索設備100另外合并控制器200,控制器200本身合并處理器元件250和存儲裝置260。存儲裝置160存儲控制例程140,并且存儲裝置260存儲控制例程240、序列531、型式532和結(jié)果數(shù)據(jù)539中的一個或多個。
[0026]在圖2的變型中,預想的是:控制器200和與處理器150和存儲裝置160完全分離的處理器元件200和存儲裝置260的合并可以被視為合期望的,以提供第二和完全分離的操作環(huán)境。換句話說,處理器元件250和存儲裝置260定義與至少由處理器元件150和存儲裝置160定義的操作環(huán)境基本上分離的操作環(huán)境的部分??刂破?00內(nèi)的該分離的操作環(huán)境使得能夠在大大降低的被可以由處理器元件150執(zhí)行的其它不太值得信任的軟件損害的風險的情況下執(zhí)行位并行串匹配算法。這可以被視為是重要的,其中位并行匹配算法由處理器元件250執(zhí)行,作為加密、驗證或其它安全功能的部分。存儲裝置260內(nèi)序列531、型式532和結(jié)果數(shù)據(jù)539中的一個或多個的存儲幫助進一步確保這些中沒有一個通過被變更以擊敗安全措施或出于某種其它目的而遭損害。
[0027]在各種實施例中,交互設備300合并處理器元件350、存儲裝置360、控制裝置320、顯示器380和將交互設備300耦合到網(wǎng)絡999的接口 390中的一個或多個。存儲裝置360存儲控制例程340、序列531、型式532和結(jié)果數(shù)據(jù)539中的一個或多個。序列531和型式532各自可以是各種類型的數(shù)據(jù)中任一個的至少一部分,這取決于搜索設備100執(zhí)行位并行串匹配所為的目的。結(jié)果數(shù)據(jù)539包括是否在序列531內(nèi)和/或在序列531內(nèi)的(一個或多個)什么位置處發(fā)現(xiàn)型式532的指示。
[0028]在包括交互設備300的圖1和圖2 二者的變型的實施例中,交互設備300可以向搜索設備100提供序列531和型式532中的一個或兩個,作為用于執(zhí)行位并行串匹配的輸入??商娲鼗蛄硗?,在這樣的操作的執(zhí)行之后,交互設備300可以從搜索設備100接收結(jié)果數(shù)據(jù)539。數(shù)據(jù)531、532和/或539的這些片段的交換可以通過網(wǎng)絡999。這樣的交換可以由采用由控制裝置320和顯示器380組成的用戶接口的交互設備300的操作者產(chǎn)生,以指示對于信息的所期望的搜索,使得型式532可以表示由該操作者指定的搜索項??商娲兀@樣的交換可以由認證過程產(chǎn)生,使得序列531和/或型式532中的一個或另一個可以各自是公共或私有密鑰、將用密鑰數(shù)字簽名的消息、通過使用密鑰而對消息簽名所創(chuàng)建的數(shù)字簽名等的至少一部分。如加密和數(shù)字簽名驗證領域的技術人員將容易地認識到:串匹配經(jīng)常用于執(zhí)行這樣的安全功能。
[0029]可替代地,以及在包括或不包括交互設備300的圖1和2 二者的變型的實施例中,搜索設備100可以經(jīng)由搜索設備100的操作者對控制裝置120的操作而接收序列531和型式532中的一個或兩個。此外,搜索設備100可以在顯示器180上視覺呈現(xiàn)位并行串匹配的結(jié)果的指示。序列531和型式532中的一個或二者的這樣的供應和/或結(jié)果數(shù)據(jù)539的這樣的呈現(xiàn)可以起于在可能需要供應密碼、指紋掃描、面部的圖像捕獲或其它安全相關的數(shù)據(jù)(其變成用于位并行串匹配的序列531或型式532之一)的過程中搜索設備100的操作者登錄到搜索設備100中。
[0030]更具體地轉(zhuǎn)向圖1的變型,在執(zhí)行控制例程140中,使得處理器元件150執(zhí)行位并行串匹配。在這樣做中,處理器元件150采用被劃分成分道的處理器元件150的至少一個矢量寄存器,并且處理器元件150的矢量指令集包括一個或多個位移位指令,其中不越過相鄰分道之間而進位位??刂评?40合并指令,所述指令在由處理器元件150執(zhí)行時使得處理器元件150克服該位進位缺乏,如將被更詳細地解釋的。
[0031]更具體地轉(zhuǎn)向圖2的變型,在執(zhí)行控制例程140中,處理器元件150可以為執(zhí)行位并行串匹配