專利名稱:利用虛擬化的大規(guī)模并行可編程硬件來搜索正則表達(dá)式的制作方法
利用虛擬化的大規(guī)模并行可編程硬件來搜索正則表達(dá)式
背景技術(shù):
正則表達(dá)式搜索是從電子郵件垃圾消息過濾和網(wǎng)絡(luò)入侵檢測(cè)到遺傳研究的范疇中的各種廣泛應(yīng)用的常見的操作。正則表達(dá)式(“reg ex”或“RE”)提供了簡(jiǎn)潔而靈活的用于標(biāo)識(shí)諸如特定字符、字或字符的模式之類的字符串的手段。例如,當(dāng)解析文本文件時(shí)正則表達(dá)式 “*car*” 可以標(biāo)識(shí) “car”、“cartoon”、“vicar” 等等。傳統(tǒng)上,reg ex是使用基于軟件或硬件的搜索解決方案來執(zhí)行的。令人遺憾的是,當(dāng)執(zhí)行大量的復(fù)雜搜索時(shí),這些解決方案會(huì)遇到問題。
量的基本問題。盡管由于它們的執(zhí)行任何數(shù)量的基本上任意復(fù)雜的搜索的靈活性而流行,但是,這些基于處理器的系統(tǒng)的速度隨著搜索的數(shù)量和復(fù)雜性的提高而縮放得差并且不一致。換言之,對(duì)大量的數(shù)據(jù)正文(“語(yǔ)料庫(kù)”)的reg ex搜索變得不切實(shí)際。另一方面,現(xiàn)有的基于硬件的搜索解決方案具有適應(yīng)性的基本問題。雖然這些系統(tǒng)可以對(duì)于可以被映射到它們的搜索具有快速并且一致的性能,但是,現(xiàn)有設(shè)備對(duì)于被支持的搜索的數(shù)量和復(fù)雜性而言在沒有詳細(xì)的專業(yè)知識(shí)和人工干預(yù)的情況下具有嚴(yán)格的限制。換言之,硬件搜索是快速的,但是,是有限制的。如此,強(qiáng)烈地需要向?qū)χT如正則表達(dá)式搜索之類的算法的基于硬件的處理提供類似于軟件的靈活性。
發(fā)明內(nèi)容
提供本發(fā)明內(nèi)容以便以簡(jiǎn)化的形式介紹將在以下具體實(shí)施方式
中進(jìn)一步描述的一些概念。本概述并不旨在標(biāo)識(shí)所要求保護(hù)主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護(hù)主題的范圍。計(jì)算任務(wù)包括,但不僅限于,可以將正則表達(dá)式轉(zhuǎn)換為相對(duì)應(yīng)的邏輯和狀態(tài)方程??梢怨烙?jì)物理資源要求,如執(zhí)行邏輯和狀態(tài)方程需要多少可編程硬件設(shè)備,而無需通過計(jì)算機(jī)輔助設(shè)計(jì)(CAD)工具的迭代試錯(cuò)法。一旦被估計(jì),就可以將計(jì)算任務(wù)分配到組,以便每一個(gè)組都匹配單獨(dú)可用物理資源。例如,一組計(jì)算任務(wù)可以適合在諸如現(xiàn)場(chǎng)可編程門陣列(FPGA)之類的可編程硬件設(shè)備中??梢詫⒖刂坪屯ㄐ胚壿嬏砑拥矫恳粋€(gè)組,并為每一個(gè)組生成硬件定義語(yǔ)言(HDL)文件。還可生成詳述如何跨多個(gè)HDL文件拆分計(jì)算任務(wù),HDL文件的執(zhí)行序列等等的配置規(guī)范??梢詮拿恳?HDL文件生成配置二進(jìn)制。然后,可編程硬件設(shè)備可以執(zhí)行配置二進(jìn)制。用戶界面不讓用戶看到任務(wù)管理、創(chuàng)建配置二進(jìn)制,計(jì)算任務(wù)跨配置二進(jìn)制的分布等等的復(fù)雜性。與可編程硬件的速度和再配置性相結(jié)合的簡(jiǎn)單用戶界面使得正則表達(dá)式搜索的實(shí)際實(shí)現(xiàn)和執(zhí)行對(duì)用戶不可見。代替費(fèi)力的對(duì)可編程硬件的手動(dòng)配置,自動(dòng)化系統(tǒng)為用戶生成配置二進(jìn)制,執(zhí)行它們,并管理結(jié)果的合并。對(duì)于容錯(cuò)的支持以提高可靠性包括重新分配、備用等等。通過分段減輕和優(yōu)先級(jí)排序,可以實(shí)現(xiàn)性能改善。
參考附圖闡述具體實(shí)施方式
。在附圖中,附圖標(biāo)記中最左邊的數(shù)字標(biāo)識(shí)該附圖標(biāo)記首次出現(xiàn)的附圖。在不同附圖中使用相同的附圖標(biāo)記指示相似或相同的項(xiàng)。圖I是示出了適于維護(hù)正則表達(dá)式處理系統(tǒng)的體系結(jié)構(gòu)的選定組件的框圖。
圖2是示出了來自圖I的編譯模塊的選定組件以及可以由編譯模塊生成的配置信息的框圖。圖3是示出了由圖I的體系結(jié)構(gòu)所產(chǎn)生的配置二進(jìn)制的選定組件的框圖。圖4是示出了由圖I的體系結(jié)構(gòu)所產(chǎn)生的配置規(guī)范的選定組件的框圖。圖5是示出了來自圖I的體系結(jié)構(gòu)的可編程硬件系統(tǒng)控制器(PHSC)的選定組件的框圖。圖6是示出了由PHSC對(duì)配置二進(jìn)制的執(zhí)行的流程圖。圖7是示出了由PHSC對(duì)配置二進(jìn)制的執(zhí)行的流程圖,包括對(duì)來自配置二進(jìn)制的狀態(tài)信息的存儲(chǔ)。圖8是示出了用戶與正則表達(dá)式處理系統(tǒng)的交互的流程圖。圖9是示出了基于正則表達(dá)式生成配置信息的流程圖。圖10是示出了對(duì)一組正則表達(dá)式的物理資源要求的估計(jì)的流程圖。圖11是示出了在可編程的硬件上所生成的配置的執(zhí)行的流程圖。圖12是示出了對(duì)正則表達(dá)式的動(dòng)態(tài)修改的流程圖。圖13-15是示出了通過將配置二進(jìn)制重新分配到其余功能可編程硬件設(shè)備來支持容錯(cuò)的流程圖。圖16-18是示出了通過使用備用功能可編程硬件設(shè)備來支持容錯(cuò)的流程圖。圖19是示出了跨配置二進(jìn)制對(duì)正則表達(dá)式的分段減輕的示意圖。圖20是示出了通過對(duì)正則表達(dá)式的一部分以及相對(duì)應(yīng)的配置二進(jìn)制的選擇性的重新編譯(諸如當(dāng)編譯資源有限時(shí))而進(jìn)行的分段減輕的示意圖。圖21是示出了對(duì)正則表達(dá)式的優(yōu)先級(jí)感知的硬件分配,以及將這些正則表達(dá)式打包和調(diào)度到配置二進(jìn)制的示意圖。圖22是示出了通過重新分配配置二進(jìn)制的執(zhí)行來回收空閑的可編程硬件資源的流程圖。圖23-24是示出了配置二進(jìn)制以及其內(nèi)部的正則表達(dá)式的優(yōu)先級(jí)排序的流程圖。圖25是示出了在編譯和執(zhí)行時(shí)由多個(gè)用戶/應(yīng)用程序?qū)φ齽t表達(dá)式的合并的流程圖。圖26是示出了配置二進(jìn)制的延遲的配置分頁(yè)的流程圖。圖27是示出了配置二進(jìn)制子元素(它們可以被組合以創(chuàng)建完整的配置二進(jìn)制)的編譯的流程圖。圖28是示出了正則表達(dá)式的計(jì)算組合的示意圖。圖29是示出了具有重復(fù)的或類似的部分的正則表達(dá)式的超集的示意圖。
具體實(shí)施方式
正則表達(dá)式(“reg ex”或“RE”)提供了簡(jiǎn)潔而靈活的用于標(biāo)識(shí)諸如特定字符、字或字符的模式之類的字符串的手段。例如,當(dāng)解析文本文件時(shí)正則表達(dá)式“*car*”可以標(biāo)識(shí)單詞 “car”、“cartoon”、“vicar” 等等。正則表達(dá)式被廣泛用于許多不同的領(lǐng)域,其范疇涵蓋從主動(dòng)提供的商業(yè)電子郵件(“垃圾消息”)過濾到遺傳研究。例如,電子郵件服務(wù)器可以搜索“mortgage”或“creditcard”或“enhancement”的全部發(fā)生,以確定給定電子郵件是否是垃圾消息。在另一示例中,醫(yī)生可以搜索病人的DNA以發(fā)現(xiàn)指示癌癥的誘因的序列“GGCCCAGCATAGATTACA”。如此,regexs是許多應(yīng)用中的有用的工具。令人 遺憾的是,如上文所描述的,以前的實(shí)現(xiàn)reg exs的方法在軟件中存在低速度或?qū)υ谟布刑幚淼淖兓膔eg exs的有限適應(yīng)性的嚴(yán)重缺點(diǎn)。在本公開中,正則表達(dá)式被自動(dòng)轉(zhuǎn)換為相對(duì)應(yīng)的邏輯和狀態(tài)方程,以便在可編程硬件設(shè)備上執(zhí)行。作為此自動(dòng)轉(zhuǎn)換過程的一部分,可以估計(jì)執(zhí)行每一個(gè)正則表達(dá)式所需的可編程硬件的程度,而無需麻煩的試錯(cuò)法。在一些實(shí)現(xiàn)中,可以使用處于自動(dòng)化控制下的試錯(cuò)法,諸如使用從編譯報(bào)告導(dǎo)出的反饋以及使用實(shí)際資源利用率來修改配置。一旦被估計(jì),就可以將正則表達(dá)式分配到組,以便每一個(gè)組都匹配單個(gè)可編程硬件設(shè)備的物理資源約束。例如,500個(gè)正則表達(dá)式的一個(gè)組可以適合特定FPGA。可以將通信和控制(CC)邏輯添加到每一組,這允許可編程硬件能夠與控制器進(jìn)行通信并管理可編程硬件上的執(zhí)行。可編程硬件可以通過諸如以太網(wǎng)之類的數(shù)據(jù)網(wǎng)絡(luò)、諸如外圍組件互連(PCI)之類的輸入/輸出總線接口,或諸如如HyperTransport聯(lián)盟所描述的HyperTransport 之類的基于中央處理單元總線的接口來與控制器進(jìn)行通信。編譯器為每一組生成硬件定義語(yǔ)言(HDL),包括正則表達(dá)式和CC邏輯。編譯器還可生成詳述正則表達(dá)式跨多個(gè)HDL文件的分布、執(zhí)行序列等等的配置規(guī)范。CAD工具可以從每一 HDL文件生成配置二進(jìn)制。然后,可編程硬件設(shè)備可以執(zhí)行配置二進(jìn)制。在執(zhí)行期間,每一可編程硬件設(shè)備內(nèi)的正則表達(dá)式并行地執(zhí)行,導(dǎo)致顯著的速度增加。例如,適合特定FPGA的上文所提及的500個(gè)正則表達(dá)式的組在FPGA內(nèi)并行地執(zhí)行。不同的組(以配置二進(jìn)制的形式)可以被加載并在可編程硬件設(shè)備上串行地執(zhí)行。這允許通常將超過可編程硬件的可用的容量的正則表達(dá)式搜索得以進(jìn)行。例如,上文所描述的第一組具有500個(gè)正則表達(dá)式,而第二組具有300個(gè)。這800個(gè)正則表達(dá)式對(duì)于單個(gè)可編程硬件設(shè)備來說太大。然而,當(dāng)拆分成兩個(gè)配置二進(jìn)制并串行地執(zhí)行時(shí),單個(gè)可編程硬件設(shè)備可以執(zhí)行全部800個(gè)正則表達(dá)式。用戶界面不讓用戶看到任務(wù)管理、創(chuàng)建配置二進(jìn)制,跨配置二進(jìn)制分布等等的復(fù)雜性。這種簡(jiǎn)單的用戶界面允許利用可編程硬件的速度和再配置性來產(chǎn)生諸如將正則表達(dá)式對(duì)照數(shù)據(jù)語(yǔ)料庫(kù)進(jìn)行比較之類的計(jì)算任務(wù)的執(zhí)行速度的顯著提高。使用可編程硬件來執(zhí)行reg exs提供兩個(gè)優(yōu)點(diǎn)。首先,由于由可編程硬件所提供的并行操作,系統(tǒng)的容量是可編程硬件設(shè)備本身的容量的函數(shù)。如此,基于可編程硬件的解決方案有可能具有恒定的吞吐量,直到需要將另一個(gè)配置二進(jìn)制添加到執(zhí)行序列中。例如,可以適合FPGA的帶有300個(gè)表達(dá)式的集合將與上面的適合該同一個(gè)FPGA的500個(gè)表達(dá)式同時(shí)執(zhí)行。這與軟件解決方案不同,在軟件解決方案中,性能相對(duì)于所希望的搜索的數(shù)量而線性地降低(或更差),以致于500個(gè)表達(dá)式要比300個(gè)表達(dá)式要花更多時(shí)間來評(píng)估。
基于可編程硬件的正則表達(dá)式搜索所提供的第二優(yōu)點(diǎn)是,在可編程硬件上配置的電路提供確定性的性能。如上文所提及的,一組被配置成適合可編程硬件設(shè)備的正則表達(dá)式將在已知時(shí)間內(nèi)執(zhí)行。相比之下,在處理器上運(yùn)行的軟件的吞吐量可以取決于所希望的搜索的性質(zhì)(更復(fù)雜或稍容易)和(具有高命中率的輸入流與帶有低命中率的輸入流)的輸入數(shù)據(jù)的性質(zhì)。另外,諸如高速緩存丟失之類的其他不可預(yù)測(cè)的事件可能會(huì)改變性能。重新分配,備用,等等允許容錯(cuò)。通過利用選擇性的或完整的重新編譯來避免正則表達(dá)式的分段被取消或改變來維護(hù)性能。還可通過打包、調(diào)度,以及執(zhí)行序列化,給正則表達(dá)式分配不同的優(yōu)先級(jí)。說明性體系結(jié)構(gòu) 圖I是示出了適于實(shí)現(xiàn)正則表達(dá)式處理系統(tǒng)102的體系結(jié)構(gòu)的選定組件的框圖100。作為討論,而不作為限制,假設(shè)一家公司希望從他們的電子郵件服務(wù)器中過濾掉通常被稱為“垃圾消息”的主動(dòng)提供的商業(yè)電子郵件。維護(hù)一組結(jié)合了已經(jīng)與垃圾消息相關(guān)聯(lián)的字符串的正則表達(dá)式。例如,短語(yǔ)“抵押速率”和“信用卡”已經(jīng)被確定為表示垃圾電子郵件。系統(tǒng)管理員或垃圾消息實(shí)用程序生成這些短語(yǔ)的正則表達(dá)式。公司服務(wù)器上的電子郵件集合構(gòu)成使用用于刪除潛在垃圾消息的此正則表達(dá)式(reg exs)的列表所過濾的數(shù)據(jù)的語(yǔ)料庫(kù)。在實(shí)踐中,這樣的regexs的列表可以擴(kuò)展到數(shù)千甚至數(shù)百萬(wàn)。在給定當(dāng)前僅限軟件的正則表達(dá)式搜索所需計(jì)算要求的情況下,這會(huì)導(dǎo)致顯著的服務(wù)器負(fù)載,諸如為任務(wù)分配的服務(wù)器、功率、冷卻等等之類的資源要求也會(huì)相對(duì)應(yīng)地增大。在正則表達(dá)式處理系統(tǒng)102內(nèi)可以有被配置成執(zhí)行存儲(chǔ)在存儲(chǔ)器106中的模塊的處理器104。在一些實(shí)現(xiàn)中,處理器104可以是多核處理器,或多個(gè)處理器的集合。正則表達(dá)式處理系統(tǒng)內(nèi)還有存儲(chǔ)器106。存儲(chǔ)器106可以存儲(chǔ)正則表達(dá)式108(1),108(2),….,IOS(R)。如在本申請(qǐng)的圖1-29中所使用的,括號(hào)內(nèi)的字母,如“(R) ”或“P”表示大于零的任何整數(shù)。這些正則表達(dá)式可以是不同的大小和/或復(fù)雜性,如由表示它們的框的不同大小所指示的。在存儲(chǔ)器106內(nèi)還有被配置成接受正則表達(dá)式并傳輸它們以供也在存儲(chǔ)器106中的編譯模塊112進(jìn)行處理的用戶界面110。編譯模塊112被配置成生成適于加載到可編程硬件上并執(zhí)行的配置信息,參考下面的圖2更詳細(xì)地對(duì)其進(jìn)行描述。編譯模塊112與可以存儲(chǔ)在存儲(chǔ)器106中的可編程硬件系統(tǒng)控制器(PHSC) 114進(jìn)行通信。PHSC 114被配置成管理可編程硬件的操作,下面參考圖5更詳細(xì)地對(duì)其進(jìn)行描述。PHSC 114可以作為軟件模塊(如所描繪的)、作為硬件設(shè)備,或作為組合來執(zhí)行。 PHSC 114還被配置成接受存儲(chǔ)器106內(nèi)的語(yǔ)料庫(kù)數(shù)據(jù)116或其他外部數(shù)據(jù)以供處理。在一些實(shí)現(xiàn)中,此語(yǔ)料庫(kù)數(shù)據(jù)可包括對(duì)照其執(zhí)行正則表達(dá)式的信息。例如,要被搜索的電子郵件消息的集合以查找被表示為正則表達(dá)式的垃圾消息短語(yǔ)。PHSC 114與可編程硬件118(1),118(2),…,118 (P)進(jìn)行通信。可編程硬件118可以是現(xiàn)場(chǎng)可編程門陣列(FPGA)、復(fù)雜可編程邏輯器件(CPLD),或其他可重新配置的硬件設(shè)備。可編程硬件118可以是類似的(如來自同一個(gè)制造商的相同型號(hào)的FPGA)或不同的(如來自不同的制造商的FPGA)。在每一可編程硬件118內(nèi)可以有一個(gè)或多個(gè)計(jì)算邏輯塊120(1),120 (2),....,120 (L),它們是正則表達(dá)式108 (I)-(R)的可編程硬件設(shè)備118的物理表示以及任何所需的通信和控制(CC)邏輯。PHSC 114將配置加載到可編程硬件118,而可編程硬件118創(chuàng)建計(jì)算邏輯120。在計(jì)算邏輯120運(yùn)行之后,可編程硬件118中的CC邏輯可以將結(jié)果傳輸?shù)絇HSC 114,然后,PHSC 114可以將結(jié)果122輸出到存儲(chǔ)器106或某個(gè)其他外部數(shù)據(jù)目的地。沒有被包括在配置中供在可編程硬件設(shè)備118上執(zhí)行的正則表達(dá)式108可以在輔助正則表達(dá)式處理模塊124中執(zhí)行。例如,新添加的垃圾消息短語(yǔ)“roofing repair”可以被添加到正則表達(dá)式的列表中,但不被編譯到供硬件執(zhí)行的配置二進(jìn)制中。直到編譯,可以使用輔助正則表達(dá)式處理模塊124來處理此新添加的垃圾消息短語(yǔ)的正則表達(dá)式。輔助正則表達(dá)式處理模塊124可以被存儲(chǔ)在存儲(chǔ)器106中,并與編譯模塊112和PHSC 114進(jìn)行通信。在給定被配置成并行地執(zhí)行正則表 達(dá)式的可編程硬件118的性能優(yōu)點(diǎn)的情況下,可編程硬件118可以超過對(duì)它施加的需求。結(jié)果,可編程硬件118可能未被充分使用。通過動(dòng)態(tài)地重新配置可編程硬件118,可以利用該多余性能來交換虛擬容量。結(jié)果,可以使用較小的可編程硬件設(shè)備?;蛘?,當(dāng)需求增大到可編程硬件的單個(gè)片段不再能包含reg exsIOS(I)-(R)中的全部的程度時(shí),可以拆分reg exs以創(chuàng)建可以串行地加載和運(yùn)行的多個(gè)計(jì)算邏輯120 (I) - (L)。盡管計(jì)算邏輯的串行執(zhí)行在某種程度上較慢,但是,它遠(yuǎn)遠(yuǎn)地超過了當(dāng)加載超過可編程硬件118的容量的計(jì)算邏輯時(shí)可能會(huì)發(fā)生的完全失效。正則表達(dá)式處理系統(tǒng)102還可結(jié)合網(wǎng)絡(luò)接口 126,該網(wǎng)絡(luò)接口 126可以被配置成與諸如服務(wù)器、工作站、網(wǎng)絡(luò)附接的FPGA設(shè)備等等之類的其他設(shè)備進(jìn)行通信。圖2是示出了來自圖I的編譯模塊112的選定的組件的框圖200。諸如通過用戶界面110向編譯模塊112提供正則表達(dá)式108 (I)-(R)。編譯模塊112被配置成將正則表達(dá)式編譯為可由可編程硬件118執(zhí)行的形式。正則表達(dá)式到硬件定義語(yǔ)言(HDL)編譯器202生成正則表達(dá)式108的HDL表示。硬件定義語(yǔ)言(也稱為硬件描述語(yǔ)言)表示被配置成執(zhí)行計(jì)算的數(shù)字邏輯和電子電路的描述。在計(jì)算機(jī)代碼表示算法的情況下,HDL聲明表示實(shí)際電路元件。一個(gè)HDL是由電氣與電子工程師學(xué)會(huì)(IEEE)標(biāo)準(zhǔn)IEEE 1076所描述的超高速集成電路硬件描述語(yǔ)言(VHDL)。另一個(gè)HDL是如IEEE標(biāo)準(zhǔn)1364-2001所描述的Verilog。還有其他HDL可用,也可以使用它們。一旦正則表達(dá)式到HDL編譯器202編譯了 reg exs 108以產(chǎn)生HDL文件,可以基于由編譯所產(chǎn)生的信息來生成配置規(guī)范204(1),204 (2),…,204 (S)。配置規(guī)范包括諸如跨配置二進(jìn)制分布了多少reg exs 108等等之類的細(xì)節(jié),并在下文中參考圖4更詳細(xì)地描述。編譯器202將HDL文件206提供到可編程硬件208的計(jì)算機(jī)輔助設(shè)計(jì)(CAD)工具。此CAD工具208接受HDL文件206,并生成適于由可編程硬件設(shè)備118執(zhí)行的配置二進(jìn)制210(1),210 (2),…,210 (B)。為便于引用,配置規(guī)范204和配置二進(jìn)制210可以被視為配置信息212。在一種實(shí)現(xiàn)中,可以生成與多個(gè)配置二進(jìn)制210(1)-(B)相關(guān)聯(lián)的單個(gè)配置規(guī)范204。在另一種實(shí)現(xiàn)中,可以生成對(duì)應(yīng)于多個(gè)配置二進(jìn)制210(1)-(B)的多個(gè)配置規(guī)范204 (I)-(S) o在一些實(shí)現(xiàn)中,可以有配置信息212(1),212(2),…,212(F)。圖3是示出了由圖I的體系結(jié)構(gòu)所產(chǎn)生的說明性配置二進(jìn)制的選定組件的框圖300。在此圖中,虛線302描繪了可編程硬件118的容量。在配置二進(jìn)制210內(nèi)并在此容量302內(nèi),reg exs可以被表示為二進(jìn)制配置指令304,諸如由編譯模塊112生成的那些二進(jìn)制配置指令。配置二進(jìn)制210內(nèi)還可以包括被配置成允許PHSC 114和可編程硬件設(shè)備118之間的耦合的通信和控制(CC)邏輯306。在一些實(shí)現(xiàn)中,還可在配置二進(jìn)制210內(nèi)提供本地狀態(tài)存儲(chǔ)308。在此圖中,配置二進(jìn)制210 (I)包括 reg exs 108 (I),(2),(6)和 CC 306 (I)。配置二進(jìn)制 210 (2)包括 reg exs 108(3),⑷和 CC 306(2)。配置二進(jìn)制 210 (3)包括 reg ex108 (5)、本地狀態(tài)存儲(chǔ)308 (I)和CC 306 (3)。請(qǐng)注意,描繪的regexs在寬度上有變化,指示其內(nèi)的正則表達(dá)式的大小/復(fù)雜性的變化。如此,reg ex 108(5)是配置二進(jìn)制210(3)內(nèi)的唯一的reg ex,因?yàn)樗蟠蟛糠值目捎玫挠?jì)算邏輯容量。每一配置二進(jìn)制210都可以被配置,以便其內(nèi)的reg exs被設(shè)計(jì)成并行執(zhí)行310。例如,在配置二進(jìn)制210(1)在可編程硬件118中執(zhí)行時(shí),reg exsl08(l), (2),以及(6)并行地執(zhí)行。這種在硬件中并行地執(zhí)行多個(gè)reg exs的能力導(dǎo)致 相對(duì)于串行地在單個(gè)處理器上執(zhí)行的軟件而言速度顯著增加。返回到圖I的示例,與在軟件中執(zhí)行的串行處理不同,由可編程硬件118對(duì)配置二進(jìn)制210(1)的執(zhí)行一次執(zhí)行對(duì)三個(gè)reg exs的搜索。圖4是示出了由圖I的體系結(jié)構(gòu)所產(chǎn)生的配置規(guī)范204的選定組件的框圖400。配置規(guī)范204可包括多個(gè)信息片段??梢源鎯?chǔ)所生成的配置二進(jìn)制的計(jì)數(shù)402 (I)。例如,編譯的正則表達(dá)式產(chǎn)生三個(gè)配置二進(jìn)制。還可存儲(chǔ)配置二進(jìn)制之間的正則表達(dá)式的分布的描述402⑵。例如,這可以指示reg exs 108(1),(2)和(6)在配置二進(jìn)制210(1)內(nèi)??梢园ㄅ渲枚M(jìn)制的執(zhí)行的序列402 (3)。例如,考慮特定正則表達(dá)式的優(yōu)先次序,首先執(zhí)行配置二進(jìn)制210 (I)、接下來是210 (3),然后,210 (2)。下面的圖21更詳細(xì)地討論了優(yōu)先次序。配置規(guī)范204 (I)還可包括哪些被許可的或“合法”的可編程硬件設(shè)備118在正則表達(dá)式處理系統(tǒng)102內(nèi)。例如,在系統(tǒng)內(nèi)當(dāng)前可用的可編程硬件設(shè)備包括來自制造商X的FPGA類型A和B和來自制造商Y的FPGA類型C。配置規(guī)范204 (I)中還可包括其他信息402 (Y),如編譯日期/時(shí)間,應(yīng)用程序標(biāo)識(shí)和/或用戶標(biāo)識(shí)等等。圖5是示出了來自圖I的體系結(jié)構(gòu)的可編程硬件系統(tǒng)控制器(PHSC)的選定組件的框圖500。在此例圖中,PHSC 114接受配置規(guī)范204(1)和相對(duì)應(yīng)的配置二進(jìn)制210(1)-(3),以及語(yǔ)料庫(kù)數(shù)據(jù)116。例如,配置規(guī)范可包括對(duì)應(yīng)于供進(jìn)行垃圾消息搜索的正則表達(dá)式IOS(I)-(R)的表達(dá)式,而語(yǔ)料庫(kù)可包括要檢查其中的垃圾消息的電子郵件存儲(chǔ)。PHSC 114可包括被配置成協(xié)調(diào)PHSC 114的動(dòng)作(包括接收輸入和提供結(jié)果122)的控制模塊502,WHSC 114中還可包括被配置成與可編程硬件設(shè)備118進(jìn)行通信并管理諸如配置二進(jìn)制的加載和卸載,結(jié)果122的傳輸?shù)鹊戎惖娜蝿?wù)的可編程硬件接口模塊504。還可存在配置二進(jìn)制序列化模塊506。配置二進(jìn)制序列化模塊506可以確定用于處理可編程硬件118內(nèi)的配置二進(jìn)制210的執(zhí)行序列508 (在此例圖中利用虛線指示)。例如,執(zhí)行序列508可以是配置二進(jìn)制210 (I)、配置二進(jìn)制210 (2),接下來是配置二進(jìn)制210 (3)。執(zhí)行序列508可以基于來自配置規(guī)范204的配置二進(jìn)制的執(zhí)行的序列402(3)。在一些實(shí)現(xiàn)中,由于優(yōu)先級(jí)的變化,硬件的不可用性,處理負(fù)載,及對(duì)PHSC 114可用的其他因素,執(zhí)行序列508可以不同于執(zhí)行序列402(3)。說明性執(zhí)行圖6是示出了由PHSC 114在可編程硬件118上對(duì)配置二進(jìn)制的執(zhí)行的流程圖600。對(duì)于此示例,假設(shè)有單個(gè)可編程硬件設(shè)備118(1),隨著頁(yè)面向下,時(shí)間增加,如由箭頭602所指示的。Reg exs 108 (I) -(R)被編譯,以形成配置二進(jìn)制210 (I) -(B),這些配置二進(jìn)制210 (I) - (B)在加載到可編程硬件設(shè)備118并配置可編程硬件設(shè)備118之后,變?yōu)橛?jì)算邏輯120。一旦被加載到可編程硬件118(1),計(jì)算邏輯120就并行地運(yùn)行編碼在604內(nèi)的正則表達(dá)式搜索??梢源械?06加載和處理配置二進(jìn)制的序列,一個(gè)配置二進(jìn)制跟在另一個(gè)配置二進(jìn)制之后。例如,在608,PHSC 114中的可編程硬件接口模塊(PHM) 504將配置二進(jìn)制210 (I)加載到可編程硬件118(1)中。一旦被加載,可編程硬件118(1)內(nèi)的電路的所產(chǎn)生的物理布局是計(jì)算邏輯120(1)。計(jì)算邏輯120(1)運(yùn)行,并將結(jié)果傳遞回PHIM 504。在610,PHIM 504將配置二進(jìn)制210(2 )(是PHSC 114的執(zhí)行序列508中的下一個(gè))加載到構(gòu)成計(jì)算邏輯120(2)的可編程硬件118(1)。計(jì)算邏輯120(2)運(yùn)行,并將結(jié)果返回至Ij PHIM 504。在612,PHM 504將配置二進(jìn)制210(3)(是PHSC 114的執(zhí)行序列508中的下一個(gè))加載到構(gòu)成計(jì)算邏輯120(3)的可編程硬件118(1)。計(jì)算邏輯120(3)運(yùn)行,并將結(jié)果返回到PHM 504。這種連續(xù)的對(duì)配置二進(jìn)制的加載和運(yùn)行所產(chǎn)生的計(jì)算邏輯允許可編程硬件的虛擬化,創(chuàng)建虛擬化的計(jì)算結(jié)構(gòu)。例如,代替要求可編程硬件118的單個(gè)片段足夠大以運(yùn)行要處理的所有正則表達(dá)式,reg exs可以被拆分以跨一個(gè)或多個(gè)可編程硬件設(shè)備118執(zhí)行。當(dāng)可用的可編程硬件設(shè)備不足以允許同時(shí)操作時(shí)(例如,當(dāng)reg exs的需求超過可編程硬件設(shè)備的可用容量時(shí)),reg exs可以跨多個(gè)配置二進(jìn)制分布,而配置二進(jìn)制又可以跨有限數(shù)量的可編程硬件118分布,和/或在同一個(gè)可編程硬件118上串行地執(zhí)行。返回到較早的用于垃圾消息搜索的800個(gè)正則表達(dá)式的示例,全部800個(gè)可能不匹配單個(gè)FPGA,但是500個(gè)將匹配。如此,利用500個(gè)正則表達(dá)式創(chuàng)建第一配置二進(jìn)制,而利用其余的300個(gè)正則表達(dá)式創(chuàng)建第二配置二進(jìn)制。在一個(gè)可編程硬件118設(shè)備可用的情況下,加載并運(yùn)行第一配置二進(jìn)制,然后,加載并運(yùn)行第二配置二進(jìn)制。為提高性能和/或基于前面的步驟的結(jié)果而允許一系列配置二進(jìn)制反復(fù)執(zhí)行(即,流水線化),可以存儲(chǔ)狀態(tài)信息。圖7是示出了由PHSC 114對(duì)配置二進(jìn)制的執(zhí)行的流程圖700,帶有對(duì)來自配置二進(jìn)制的狀態(tài)信息的存儲(chǔ)。如上文參考圖6所描述的,隨著頁(yè)面向下,時(shí)間增加,如由箭頭702所指示的。也如上所述,在此示例中,由配置二進(jìn)制所產(chǎn)生的計(jì)算邏輯中表示的正則表達(dá)式并行地運(yùn)行704,而在可編程硬件118(1)的單個(gè)片段上串行地加載和執(zhí)行706多個(gè)配置二進(jìn)制。在708,被附接到計(jì)算邏輯,或在另一種實(shí)現(xiàn)中在計(jì)算邏輯內(nèi)包含的本地存儲(chǔ)器存儲(chǔ)狀態(tài)信息。例如,在附接到計(jì)算邏輯的本地存儲(chǔ)器的一種實(shí)現(xiàn)中,存儲(chǔ)器可以是在可編程硬件設(shè)備的外部,如附接的閃存。對(duì)可以被可編程硬件118(1)直接訪問的存儲(chǔ)器708的使用提高了速度,并消除了通過PHSC 114傳輸和存儲(chǔ)狀態(tài)的必要性。在710,PHIM 504加載配置二進(jìn)制210(1),導(dǎo)致計(jì)算邏輯120(1),該計(jì)算邏輯120(1)運(yùn)行并可以將本地狀態(tài)信息308(1)存儲(chǔ)在本地存儲(chǔ)器708中。在712,PHIM 504加載配置二進(jìn)制210 (2),導(dǎo)致計(jì)算邏輯120 (2),該計(jì)算邏輯120 (2)可以訪問本地狀態(tài)信息308 (I),并從存儲(chǔ)器708讀信息和/或向存儲(chǔ)器708寫信息。在714,PHM 504加載配置二進(jìn)制210 (3),導(dǎo)致計(jì)算邏輯120 (3),該計(jì)算邏輯120 (3)還可訪問本地狀態(tài)信息308 (I),并從存儲(chǔ)器708讀信息和/或向存儲(chǔ)器708寫信息。如此,信息可以在配置二進(jìn)制的執(zhí)行之間持久保存。例如,假設(shè)配置二進(jìn)制210(1)中的reg ex 108(1)是字符串“car”的regex,而配置二進(jìn)制210 (2)中的reg ex 108(3)是字符串“car loan”的reg ex,配置二進(jìn)制210 (3)中的eg ex 108(5)是字符串“car loan refinancing”的reg ex。在這些配置二進(jìn)制的執(zhí)行期間,狀態(tài)信息308(1)可以被保存在存儲(chǔ)器708中,以便配置二進(jìn)制210(3)使用來自配置二進(jìn)制210(2)的結(jié)果,而配置二進(jìn)制210(2)依次又使用來自210(1)的結(jié)果。如此,通過訪問存儲(chǔ)在可被可編程硬件118直接訪問的存儲(chǔ)器中的狀態(tài)信息,提高了處理速度。此夕卜,存儲(chǔ)還可以促進(jìn)拆分太大而超過單個(gè)可編程硬件設(shè)備的容量的reg ex。
對(duì)過程的說明圖8示出了流程圖800,示出了用戶與正則表達(dá)式處理系統(tǒng)102的交互,正則表達(dá)式處理系統(tǒng)102可以,但是不必使用圖1-7所示出的體系結(jié)構(gòu)來實(shí)現(xiàn)。流程800(以及圖9-12中的那些)被示為邏輯流程圖中一組框的集合,這表示可用硬件、軟件或其組合實(shí)現(xiàn)的一系列操作。在軟件的上下文中,各個(gè)框表示在由一個(gè)或多個(gè)處理器執(zhí)行時(shí)執(zhí)行既定操作的計(jì)算機(jī)可執(zhí)行指令。一般而言,計(jì)算機(jī)可執(zhí)行指令包括執(zhí)行特定功能或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。描述操作的次序并不旨在被解釋為限制,并且任意數(shù)量的所描述的框可以按任何次序和/或并行地組合以實(shí)現(xiàn)該過程。出于討論的目的,將在圖1-7的體系結(jié)構(gòu)的上下文中描述過程???02接收正則表達(dá)式列表。例如,垃圾消息搜索條件的列表被表示為正則表達(dá)式。框804基于正則表達(dá)式來生成配置信息。下面參考圖9對(duì)此進(jìn)行了討論。取決于在806框選擇了顯式的或隱式的用戶界面,用戶可以看到不同的界面。當(dāng)在框806中選擇隱式的用戶界面之后,框808在可編程硬件上執(zhí)行所生成的配置信息???10提供來自可編程硬件的結(jié)果。當(dāng)在806選擇顯式的用戶界面之后,框812向用戶呈現(xiàn)配置信息,包括配置規(guī)范204和配置二進(jìn)制210 (I) - (R),供檢查和/或修改。例如,希望手動(dòng)調(diào)整自動(dòng)生成的配置二進(jìn)制的用戶可以選擇顯式的界面。一旦此呈現(xiàn)完成,則流程可以在框808繼續(xù),并如上文所描述的,在可編程硬件上執(zhí)行所生成的配置。不管所選擇的界面如何,此用戶界面提供與可編程硬件的簡(jiǎn)單的交互,而不管regex復(fù)雜性如何。這免除了用戶知道,或者甚至關(guān)心可編程硬件細(xì)節(jié)的必要性。此外,這還跨可編程硬件118的不同的片段提供搜索可移植性。例如,可以編譯reg exs IOS(I)-(R)以跨不同的可編程硬件IlS(I)-(P)執(zhí)行,并隨著它們變得可用于處理,跨它們分布。對(duì)這種界面的使用向用戶隱藏了這種復(fù)雜性。圖9是示出了基于如上文參考圖8所提及的正則表達(dá)式804生成配置信息的流程圖。框902解析正則表達(dá)式列表,并將它們轉(zhuǎn)換為相對(duì)應(yīng)的邏輯和狀態(tài)方程。如上文所描述的,這種轉(zhuǎn)換可以在編譯模塊112內(nèi)發(fā)生。框904估計(jì)每一正則表達(dá)式的物理資源要求。例如,可以估計(jì)reg ex 108(1)以要求可編程硬件118 (I)上的2,000個(gè)計(jì)算元件,同時(shí)可以估計(jì)reg ex 108(5)以要求7,000個(gè)計(jì)算元件???06將正則表達(dá)式分配到組,以便每一個(gè)組都匹配可編程硬件118中的可用物理資源。這種估計(jì)還可包括通信和控制(CC)邏輯以及本地存儲(chǔ)要求。例如,在上面的圖3中,可用的物理資源是可編程硬件的計(jì)算邏輯容量302,而其中一個(gè)組包括reg ex 108(1)、108(2)、108 (6)和 CC 306(1)???08將自定義的通信和控制邏輯添加到每一組中,而框910為每一組生成HDL文件???12生成配置規(guī)范,如配置規(guī)范204 (I)。框914從每一 HDL文件生成配置二進(jìn)制。例如,HDL文件可以導(dǎo)致配置二進(jìn)制210(1)。圖10是示出了對(duì)如上文參考圖9所提及的正則表達(dá)式904的物理資源要求的估計(jì)的流程圖???002將正則表達(dá)式與特定計(jì)算邏輯布局相關(guān)聯(lián)。例如,字符串“home”的正則表達(dá)式可以涉及200個(gè)電路元件的特定布局。這種關(guān)聯(lián)可以通過框1002(1)生成正則表達(dá)式,框1002(2)確定硬件CAD工具如何將reg ex中的術(shù)語(yǔ)轉(zhuǎn)換為邏輯方程,以及框1002(3)確定reg ex的電路要求來作出。例如,樣本正 則表達(dá)式可以被CAD工具轉(zhuǎn)換為邏輯方程,所產(chǎn)生的要求被監(jiān)視。如此,可以構(gòu)建模型,允許基于正則表達(dá)式輸入來對(duì)電路要求進(jìn)行預(yù)測(cè)。一旦作出了關(guān)聯(lián),框1004就標(biāo)識(shí)冗余邏輯,并合并以刪除這些冗余,并構(gòu)成合并的邏輯。例如,多個(gè)正則表達(dá)式可以涉及公共根字符串,或具有其他共同性,當(dāng)在電路中表達(dá)這些共同性時(shí)可能導(dǎo)致冗余電路。可以移除這些冗余,提高效率。下面將參考圖29在超集的上下文中討論這種情況的一種實(shí)現(xiàn)。框1006估計(jì)本地存儲(chǔ)要求,如是否要求本地狀態(tài)存儲(chǔ)308,如果是,要求哪些存儲(chǔ)器資源???008將CAD工具專用的校正因數(shù)應(yīng)用到合并的邏輯和本地存儲(chǔ)要求。例如,特定CAD工具可以以不尋常的方式將由特定reg ex所要求的邏輯方程轉(zhuǎn)換為計(jì)算塊,如此,可以輸入校正因數(shù),以使得對(duì)物理資源的估計(jì)更準(zhǔn)確???010生成估計(jì)的物理資源要求。例如,搜索“credit card”的reg ex可能要求來自制造商X的FPGA類型A上的估計(jì)的一千個(gè)電路元件。與用于確定reg exs是否適合可編程硬件118的物理資源的蠻力試錯(cuò)法相比,這種估計(jì)快得多,更少資源密集,并且要求的人的交互較少或沒有。此外,這種過程還可以輕松地應(yīng)用于帶有變化的容量的多種類型的可編程硬件118,允許快速地將reg exs重新部署到新的硬件上。圖11是示出了所生成的配置信息在如上文參考圖8所提及的可編程的硬件808上的執(zhí)行的流程圖。在一種實(shí)現(xiàn)中,可以由PHSC 114執(zhí)行下面的框???102接收配置信息212和語(yǔ)料庫(kù)數(shù)據(jù)116。例如,配置文件可包括配置二進(jìn)制210,這些配置二進(jìn)制210包括用于垃圾消息搜索的正則表達(dá)式108,而語(yǔ)料庫(kù)數(shù)據(jù)116可以是要被搜索其中的垃圾消息的原始電子郵件???104將來自執(zhí)行序列508的未執(zhí)行的配置二進(jìn)制加載到可編程硬件118中???106將語(yǔ)料庫(kù)116的全部或一部分加載到可編程硬件118中供進(jìn)行處理???108對(duì)照加載的語(yǔ)料庫(kù)數(shù)據(jù)116在可編程硬件118上執(zhí)行計(jì)算邏輯120???110接收來自可編程硬件對(duì)計(jì)算邏輯的執(zhí)行的結(jié)果。當(dāng)語(yǔ)料庫(kù)的附加的部分還有剩余時(shí),框1112將流程返回到框1106,并將語(yǔ)料庫(kù)的另一部分加載到可編程硬件118中供進(jìn)行處理。否則,當(dāng)在框1112沒有語(yǔ)料庫(kù)的附加的部分剩余時(shí),框1114確定在執(zhí)行序列508中是否存在附加的配置二進(jìn)制。當(dāng)在執(zhí)行序列508中還有附加的配置二進(jìn)制剩余時(shí),框1116將執(zhí)行序列遞增到下一個(gè)配置二進(jìn)制,并將流程返回到1104。當(dāng)在執(zhí)行序列508中沒有附加的配置二進(jìn)制剩余時(shí),框1118合并來自對(duì)一個(gè)或多個(gè)配置二進(jìn)制的執(zhí)行的結(jié)果。
圖12是示出了對(duì)正則表達(dá)式的動(dòng)態(tài)修改的流程圖1200。Reg exs可以隨著時(shí)間而變化。例如,長(zhǎng)尾小鸚鵡的銷售中的新風(fēng)尚可能導(dǎo)致“長(zhǎng)尾小鸚鵡”被添加到垃圾消息搜索列表中?;蛘咝碌男庞每I(yè)務(wù)行的添加可能導(dǎo)致“信用卡”從垃圾消息搜索列表中被移除。為便于討論,而不作為限制,對(duì)正則表達(dá)式列表的修改一般可以被視為屬于兩個(gè)類別新正則表達(dá)式的添加或現(xiàn)有正則表達(dá)式的移除。當(dāng)框1202確定將要添加新正則表達(dá)式時(shí),框1204為新正則表達(dá)式生成配置二進(jìn)制。然后,框1206將此配置二進(jìn)制添加到執(zhí)行序列508中ο當(dāng)框1202確定修改是現(xiàn)有正則表達(dá)式的移除時(shí), 框1208將正則表達(dá)式添加到丟棄列表中。在計(jì)算邏輯120在可編程硬件118上執(zhí)行之后,框1210丟棄來自reg exs的結(jié)果。在一些實(shí)現(xiàn)中,這種丟棄可以通過活動(dòng)刪除來進(jìn)行,而在其他實(shí)現(xiàn)中,可以由PHSC 114不報(bào)告來自丟棄的reg ex的結(jié)果來進(jìn)行。盡管繼續(xù)處理丟棄列表上的reg ex可能顯得浪費(fèi),但是,在給定對(duì)每一配置二進(jìn)制內(nèi)的reg exs的并行處理的情況下,實(shí)際上卻十分有效。如上文參考圖6所討論的,并行地執(zhí)行配置二進(jìn)制內(nèi)的reg exSo如此,并行地執(zhí)行許多reg exs并丟棄那些結(jié)果中的一個(gè)比重新編譯整個(gè)配置二進(jìn)制更便宜,直到配置二進(jìn)制變得嚴(yán)重地分段。此外,用戶還可以通過簡(jiǎn)單地從丟棄列表中移除先前丟棄的reg ex并重新啟用它來輕松地恢復(fù)先前丟棄的reg ex,在這樣的情況下,可以避免重新編譯。下面將參考圖19-20更詳細(xì)地討論確定如何以及何時(shí)重新編譯以解決由未使用的/取消的reg exs所產(chǎn)生的分段。框1212用未包括在當(dāng)前配置內(nèi)的附加的正則表達(dá)式結(jié)果來修補(bǔ)可編程硬件118的結(jié)果。當(dāng)某些reg exs在輔助正則表達(dá)式處理模塊124中執(zhí)行時(shí),如那些最近被添加到系統(tǒng)中但是還沒有被編譯入配置二進(jìn)制210以在可編程硬件118上執(zhí)行的reg exs來說,這可能是有用的。框1214可以將諸如在輔助正則表達(dá)式處理模塊124中執(zhí)行的正則表達(dá)式之類的未包括在當(dāng)前配置內(nèi)的正則表達(dá)式添加到當(dāng)前配置中。這些可以被編譯模塊112編譯,以便并入作為執(zhí)行序列508的一部分的配置二進(jìn)制210中???216在生成新的配置二進(jìn)制期間移除在丟棄列表上存在的正則表達(dá)式,如此,清除被丟棄的東西。通過重新分配的容錯(cuò)包括可編程硬件設(shè)備118的設(shè)備可能會(huì)發(fā)生故障。圖13-15是示出了通過將配置二進(jìn)制重新分配到其余功能可編程硬件設(shè)備來支持容錯(cuò)的流程圖1300。在這些圖中,隨著頁(yè)面向下,時(shí)間增加,如由箭頭1302所指示的。從圖13開始,PHIM 504被示為耦合到兩個(gè)可編程硬件設(shè)備118(1)和118(2)。對(duì)于此示例,假設(shè)可編程硬件118(1)和118(2)是二進(jìn)制兼容的1304,S卩,可以在任一可編程硬件中執(zhí)行同一個(gè)配置二進(jìn)制210,而無需重新編譯。還假設(shè)執(zhí)行序列508是用于配置二進(jìn)制210(1)、⑵、(3)、(4)、⑴、⑵、(3)、(4)等等。圖13示出了正常操作1306。在正常操作1306期間,在1308,PHM504將配置二進(jìn)制210 (I)和(2)分別加載到可編程硬件118(1)和118(2)中。所產(chǎn)生的計(jì)算邏輯120(1)和120(2)運(yùn)行,結(jié)果被返回到PHM 504。同樣,在1310,加載并執(zhí)行配置二進(jìn)制210(3)和210(4)。在1312,序列重復(fù),加載配置二進(jìn)制210(1)和(2)供進(jìn)行處理。這演示了虛擬化可編程硬件的通用性只在兩段可編程硬件118(1)-(2)上執(zhí)行四個(gè)配置二進(jìn)制210(1)-(4)。圖14繼續(xù)此流程圖,以演示故障發(fā)生和遷移1402。在1314,配置二進(jìn)制210 (3)已經(jīng)被成功地加載到可編程硬件118(1)中,而嘗試將配置二進(jìn)制210(4)加載到可編程硬件118(2)中,但是,由于不可用而失敗。在基于配置二進(jìn)制210 (3)將結(jié)果從計(jì)算邏輯120 (3)返回到PHM 504之后,在1316,PHM 504將配置二進(jìn)制210 (4)加載到可編程硬件118 (I)供進(jìn)行處理。繼續(xù)流程圖到圖15,示出了防故障操作1502。可編程硬件118(2)保持不可用,而可編程硬件118(1)處理執(zhí)行序列508中列出的配置二進(jìn)制的執(zhí)行。在1318,可編程硬件118(1)加載并執(zhí)行配置二進(jìn)制210(1),S卩,執(zhí)行序列508中的下一個(gè)。在1320,可編程硬件118 (I)加載并執(zhí)行配置二進(jìn)制210 (2),而在1322,加載并執(zhí)行配置二進(jìn)制210 (3),而在1324,加載并執(zhí)行配置二進(jìn)制210(4)。如此,執(zhí)行序列508中存在的列表已經(jīng)被完全執(zhí)行,并可以應(yīng)執(zhí)行序列508的要求而繼續(xù)。盡管由于可編程硬件118 (2)的丟失,執(zhí)行性能降低,但是,對(duì)reg exs 108 (I)-(R)的處理仍能繼續(xù)。由于 配置是虛擬的,因此,這種動(dòng)態(tài)重新分配變得可能。返回到垃圾消息過濾示例,可編程硬件118(2)的故障只是降低了垃圾消息過濾的性能,而不會(huì)導(dǎo)致系統(tǒng)完全失效。在具有多個(gè)可編程硬件118的片段的一些實(shí)現(xiàn)中,配置二進(jìn)制可能分配不足,而造成故障。例如,每一可編程硬件設(shè)備中的執(zhí)行序列可包括可以在故障期間被消耗的空閑占位符。通過備用的容錯(cuò)圖16-18包括示出了通過使用備用功能可編程硬件設(shè)備來支持容錯(cuò)的流程圖1600。如上所述,在這些圖中,隨著頁(yè)面向下,時(shí)間增加,如由箭頭1602所指示的。從圖16開始,PHM 504被示為耦合到兩個(gè)可編程硬件設(shè)備118(1)和118(2)。如上所述,對(duì)于此示例,假設(shè)可編程硬件118(1)和118(2)是二進(jìn)制兼容的1604,S卩,可以在任一可編程硬件中執(zhí)行同一個(gè)配置二進(jìn)制210,而無需重新編譯。還假設(shè)執(zhí)行序列508是用于配置二進(jìn)制210⑴、⑵、(3)、⑷、⑴、⑵、(3)、⑷等等。圖16示出了正常操作1606。在正常操作1606期間,在1608,PHM 504將配置二進(jìn)制210(1)和(2)分別加載到可編程硬件118(1)和(2)中。所產(chǎn)生的計(jì)算邏輯120(1)和
(2)運(yùn)行,結(jié)果被返回到PHIM 504。同樣,在1610,加載并執(zhí)行配置二進(jìn)制210(3)和(4)。在1612,序列重復(fù),加載配置二進(jìn)制210(1)和(2)供進(jìn)行處理。圖17繼續(xù)流程1600,并在1702描繪了故障發(fā)生和備用。在此例圖中,在1614,可編程硬件118(1)成功地加載配置二進(jìn)制210(3),而可編程硬件118(2)變得不可用于加載配置二進(jìn)制210 (4)。在確定可編程硬件118(2)發(fā)生故障之后,PHIM 504可以將配置二進(jìn)制210(4)重定向到已經(jīng)保留的備用可編程硬件設(shè)備118(3)。圖18示出了通過將配置二進(jìn)制重定向到備用可編程硬件來恢復(fù)正常操作1802。在1616,可編程硬件118(1)加載了配置二進(jìn)制210(1),而備用可編程硬件118(3)加載了配置二進(jìn)制210 (4)。在1618,PHM 504如執(zhí)行序列508中指定的那樣繼續(xù)加載和執(zhí)行配置二進(jìn)制。如此,配置二進(jìn)制210 (2)和210 (3)被分別加載到可編程硬件118(1)和118(3)中。在1620,配置二進(jìn)制210 (4)和210 (I)被分別加載到可編程硬件118(1)和118(3),再次開始執(zhí)行序列 508。在可編程硬件118的上下文中的備用提供了多個(gè)優(yōu)點(diǎn)。由于配置二進(jìn)制封裝了完整的配置,因此,它們可以被快速地加載到可編程硬件中和從其中卸載。這與調(diào)出服務(wù)器實(shí)例所需的可操作復(fù)雜性和時(shí)間形成對(duì)比。如此,可以訪問備用可編程硬件,并非??斓貙⑵渫度胧褂谩7侄螠p輕如上文所提及的,隨著時(shí)間的推移,要被處理的正則表達(dá)式的列表也會(huì)改變。在垃圾消息過濾示例中,添加新reg exs,而移除其他reg exs。圖19是示出了跨配置二進(jìn)制對(duì)正則表達(dá)式的分段減輕的示意圖1900。在一種實(shí)現(xiàn)中,可以在PHSC 114內(nèi)執(zhí)行分段減輕。這種隨著時(shí)間的推移的添加和減少導(dǎo)致對(duì)已 經(jīng)被丟棄的那些正則表達(dá)式中的“活的”或仍需要的reg exs的分段。在1902,示出了分段減輕之前的多個(gè)分段的配置二進(jìn)制。在此圖中,交叉陰影線指示未使用的/取消的regex 1904。在此示例中,reg exs108(1),(3),(5),(7),和(9)已經(jīng)被取消。例如,這些可能涉及對(duì)于“信用卡”以及變體的垃圾消息過濾器,由于公司的新的信用卡業(yè)務(wù),它們現(xiàn)在被從垃圾消息列表中移除。Regexs 108(2),(4),(6)和(8)仍在使用中。這使得包含這些reg exs的四個(gè)配置二進(jìn)制210(20)-(23)保持分段,幾個(gè)所希望的reg exs與多個(gè)未使用的reg exs交替。對(duì)這些分段的配置二進(jìn)制的執(zhí)行會(huì)浪費(fèi)可用的可編程硬件資源。如此,需要減輕此分段。在1906,新添加的reg ex 108(10)在輔助reg ex處理模塊124中執(zhí)行。在對(duì)配置二進(jìn)制的下一輪編譯期間,當(dāng)在配置二進(jìn)制內(nèi)有空間可用時(shí),regex 108(10)可以從在處理模塊124中執(zhí)行轉(zhuǎn)移到配置二進(jìn)制210中,以在可編程硬件118上運(yùn)行。在1908,示出了分段減輕之后的配置二進(jìn)制。已經(jīng)丟棄了未使用的regexs,而在1910,仍在使用中的那些reg exs以及reg ex 108 (10)已經(jīng)被編譯到兩個(gè)新配置二進(jìn)制中。在四個(gè)配置二進(jìn)制正在被執(zhí)行而一個(gè)reg ex在軟件中執(zhí)行的情況下,現(xiàn)在的兩個(gè)配置二進(jìn)制執(zhí)行。圖19描繪了對(duì)所有活動(dòng)reg exs 108的完整的重新編譯。然而,就時(shí)間和系統(tǒng)資源角度而言,編譯是昂貴的。在一些實(shí)現(xiàn)中,可能需要有選擇地重新編譯以最小化系統(tǒng)成本,而不太頻繁地執(zhí)行完整的重新編譯。圖20是示出了通過選擇性的重新編譯進(jìn)行的分段減輕的示意圖2000。就是否要有選擇地或完全地重新編譯的確定涉及對(duì)照編譯時(shí)間衡量硬件和軟件的潛在執(zhí)行效率。在2002,示出了分段減輕之前的配置二進(jìn)制210 (30) - (33)。如上所述,用交叉陰影線2004表示未使用的或取消的reg exs。在此示例中,reg exsl08 (I), (3), (5), (7),和(9)已經(jīng)被取消。Reg exs 108(2),108(4),108(6)和108(8)仍在使用中。在2006,新添加的reg ex 108(10)在輔助reg ex處理模塊124中執(zhí)行,同時(shí)等待對(duì)配置二進(jìn)制的下一次編譯。在此例圖中,假設(shè)對(duì)照編譯時(shí)間衡量硬件和軟件的潛在執(zhí)行效率導(dǎo)致用于一種重新編譯的資源可用。檢索在初始編譯期間所生成的資源估計(jì)信息,從最多未使用的空間到最少未使用的空間,排序配置二進(jìn)制。配置二進(jìn)制210(30)具有100%的未使用的空間,配置二進(jìn)制210 (31)具有大約66%的未使用的空間,配置二進(jìn)制210(32)具有大約55%的未使用的空間,而配置二進(jìn)制210(33)具有大約33%的未使用的空間。在一種實(shí)現(xiàn)中,選擇性的重新編譯可能涉及將正在由輔助reg ex處理模塊124執(zhí)行的reg ex 108 (I)移動(dòng)到硬件中,然后,將reg exs移動(dòng)到具有最多的未使用的空間的配置二進(jìn)制中。在此例圖中,選擇配置二進(jìn)制210(30)和(31)用于選擇性的重新編譯,如由虛線2008所指示的。組合活動(dòng)reg exs,直到N個(gè)配置(在此情況下,N = I,因?yàn)橛幸粋€(gè)編譯可用)已經(jīng)被填充。在此例圖中,配置二進(jìn)制210 (30)被丟棄,因?yàn)樗强盏模?010,配置二進(jìn)制210(31)中的reg ex 108⑵與reg exs 108(2)和(10)組合,以產(chǎn)生配置二進(jìn)制210 (34)。在2012,描繪了選擇性的分段遷移之后的結(jié)果,示出了新編譯的配置二進(jìn)制210 (34),和未變的配置二進(jìn)制210 (32)和(33)。這將基于軟件的reg ex的數(shù)量降低到0,將總的硬件配置的數(shù)目從4降到3。如此,已經(jīng)使用了最少的編譯資源,而降低了總的分段。對(duì)任務(wù)的優(yōu)先級(jí)排序,以及資源回收
在一些實(shí)現(xiàn)中,對(duì)任務(wù)進(jìn)行優(yōu)先級(jí)排序可能是有益的。例如,目前的垃圾消息可能主要以“信用卡”廣告為特征,如此,可以給予被設(shè)計(jì)成能查找此短語(yǔ)的reg exs較高的優(yōu)先級(jí),以便快速地移除這些流行的發(fā)生。圖21是示出了對(duì)正則表達(dá)式的優(yōu)先級(jí)感知的硬件分配,以及將那些正則表達(dá)式打包和調(diào)度為配置二進(jìn)制的示意圖2100。在此例圖中,利用白色表示正常優(yōu)先級(jí)reg exs,利用對(duì)角線表示中間優(yōu)先級(jí)reg exs,而最高優(yōu)先級(jí)reg exs是陰影。在2102,示出了用于執(zhí)行的正則表達(dá)式。在這些正則表達(dá)式中,reg exs 108(1),(6),和(8)是最高優(yōu)先級(jí)。Reg ex 108(5)被設(shè)計(jì)為中優(yōu)先級(jí),而其余的108(2),(3),(4),(7),(9),和(10)是正常優(yōu)先級(jí)。在2104,示出了被打包、編譯,以及序列化供執(zhí)行的reg exs。那些具有較高優(yōu)先級(jí)的reg exs被打包在一起,在一些實(shí)現(xiàn)中,可以被設(shè)計(jì)為在更快的可編程硬件設(shè)備118上執(zhí)行,接收?qǐng)?zhí)行序列508中的優(yōu)先級(jí),或被置于執(zhí)行序列508中的多個(gè)點(diǎn),供比較頻繁的執(zhí)行。如圖所示,配置二進(jìn)制210(41)具有足夠的用于全部高優(yōu)先級(jí)reg exs的容量。配置二進(jìn)制210 (42)包括中優(yōu)先級(jí)reg ex 108 (5),還包括正常優(yōu)先級(jí)108 (4),因?yàn)橛蓄~外的容量剩余供使用。在給定它們的較高優(yōu)先級(jí)內(nèi)容的情況下,配置二進(jìn)制210(41)和(42) —起可以被指定為在更快的可編程硬件上執(zhí)行,如2106所示。包括正常優(yōu)先級(jí)reg exs的配置二進(jìn)制210(43)和(44)可以被指定2108用于在較慢的可編程硬件設(shè)備上執(zhí)行??梢赃M(jìn)行配置二進(jìn)制的打包和/或?qū)τ谂渲枚M(jìn)制的執(zhí)行序列的優(yōu)先級(jí)分配,以便首先執(zhí)行某些任務(wù),以使得它們的結(jié)果影響稍后的處理或徹底清除稍后的處理。例如,可以給予查找“zero down home mortgage financing bonanza,,的 reg ex 在 “homemortgage”的reg ex之上的優(yōu)先級(jí),將術(shù)語(yǔ)的組合放置在第一位可以更輕松地標(biāo)識(shí)垃圾消肩、O圖22是示出了通過重新分配配置二進(jìn)制的執(zhí)行來回收空閑的可編程硬件資源的流程圖2200。如上所述,在此例圖中,隨著頁(yè)面向下,時(shí)間增加,如由箭頭2202所指示的。對(duì)于此示例,假設(shè)可編程硬件118(1)和118(2)是二進(jìn)制兼容的2204,S卩,可以在任一可編程硬件中執(zhí)行同一個(gè)配置二進(jìn)制210,而無需重新編譯。還假設(shè)初始執(zhí)行序列508是用于配置二進(jìn)制210⑴、⑵、(3)、⑷、⑴、⑵、(3)、⑷等等。在2206,描繪了正常操作。在2208,PHM 504將配置二進(jìn)制210 (I)和(2)分別加載到可編程硬件118(1)和(2)中。結(jié)果被返回,在2210,PHIM 504將配置二進(jìn)制210 (3)和(4)加載到可編程硬件118(1)和(2)中。此過程可以繼續(xù),繼續(xù)執(zhí)行初始執(zhí)行序列508。
然而,假設(shè)分別基于配置二進(jìn)制210(2)和(4)的計(jì)算邏輯120(2)和(4)是空閑的?;蛟S它們?cè)谟?jì)算邏輯120(1)和(3)之前被暫?;蛲瓿伞<僭O(shè)初始執(zhí)行序列不中斷地繼續(xù),可編程硬件資源將被廢棄,等待這些空閑配置二進(jìn)制或執(zhí)行暫停的配置二進(jìn)制。如此,在此示例中,修改初始執(zhí)行序列以回收資源。在2212,示出了通過仍在活動(dòng)中的那些配置二進(jìn)制的重新分配的此空閑時(shí)間的回收。如此,在2214,PHIM 504將配置二進(jìn)制210(1)和(3)分別加載到可編程硬件118 (I)和(2)中。在2216,可編程硬件118(1)和⑵再次運(yùn)行基于配置二進(jìn)制210 (I)和(3)的計(jì)算邏輯120 (I)和(3)。由于計(jì)算邏輯120(2)和120(4)是空閑的,因此,它們沒有被加載和運(yùn)行。如此,諸如120(1)和(3)之類的仍被指定供運(yùn)行的計(jì)算邏輯可以繼續(xù)執(zhí)行,不會(huì)被空閑的或暫停的計(jì)算邏輯妨礙。 如上文所提及的,當(dāng)特定reg exs比其他的更重要時(shí),可以給予它們更多資源。圖23-24是示出了配置二進(jìn)制以及其內(nèi)部的正則表達(dá)式的優(yōu)先級(jí)排序的流程圖2300。在此例圖中,隨著頁(yè)面向下,時(shí)間增加,如由箭頭2302所指示的。假設(shè)可編程硬件118(1)和(2)是二進(jìn)制兼容的2304。在圖23開始,在2306,描繪了相等優(yōu)先級(jí)操作。在任何計(jì)算邏輯內(nèi)沒有任務(wù)被給予優(yōu)先級(jí)。執(zhí)行序列508是用于配置二進(jìn)制210(1)、⑵、(3)、(4)、⑴、⑵、(3)、(4)等等。在2308,配置二進(jìn)制210 (I)和(2)被分別加載到可編程硬件118 (I)和(2)中供運(yùn)行。在2310,配置二進(jìn)制210 (3)和210 (4)被分別加載到可編程硬件118 (I)和(2)上,供運(yùn)行。繼續(xù)流程到圖24,在2402,配置二進(jìn)制210(1)內(nèi)的reg ex已經(jīng)被給予了高優(yōu)先級(jí),其供執(zhí)行的時(shí)間片的比率已經(jīng)被提高。如此,執(zhí)行序列508被改變?yōu)閳?zhí)行配置二進(jìn)制210(1),(I), (I), (I), (I), (2),(I), (3),(I), (4)。如此,在 2312,配置二進(jìn)制 210 (I)被加載到可編程硬件118(1)和(2)兩者中。在2314,沒有配置二進(jìn)制被加載,因?yàn)閮蓚€(gè)可編程硬件設(shè)備上的計(jì)算邏輯120(1)已經(jīng)存在,計(jì)算邏輯再次運(yùn)行。在2316,計(jì)算邏輯120(1)再次在118(1)上運(yùn)行,而配置二進(jìn)制210(2)被加載到可編程硬件118(2)上,并運(yùn)行。在2318,計(jì)算邏輯120 (I)再次運(yùn)行,而配置二進(jìn)制210 (3)被加載到可編程硬件118(2)上,并在其上運(yùn)行。在2320,計(jì)算邏輯120(1)再次運(yùn)行,而配置二進(jìn)制210(4)被PHM 504加載到可編程硬件118(2)上。如此,在此示例中,配置二進(jìn)制210(1)內(nèi)包含的高優(yōu)先級(jí)reg ex執(zhí)行了 70%的時(shí)間。任務(wù)的合并在正則表達(dá)式處理系統(tǒng)102的操作期間,可以接收來自多個(gè)用戶和/或應(yīng)用程序的reg exs.例如,垃圾消息過濾系統(tǒng)可以接收指示垃圾消息的多個(gè)字符串流,如由用戶或分析軟件所標(biāo)記的那些。圖25是示出了在編譯和/或執(zhí)行時(shí)由多個(gè)用戶/應(yīng)用程序?qū)φ齽t表達(dá)式的合并的流程圖2500。這樣的合并通過最小化對(duì)可編程硬件的重新配置(就時(shí)間和系統(tǒng)資源而言該動(dòng)作相對(duì)來說是昂貴的),提高了速度。在編譯合并期間,在2502,從用戶A接收reg ex 108 (I),而從用戶B接收reg ex108(2)。在2504,編譯模塊112處理這些reg exs,確定它們兩者都可以在同一個(gè)配置二進(jìn)制中運(yùn)行,而在2506,產(chǎn)生包括reg exs 108(1)和(2)的配置二進(jìn)制210 (51)。在2508,在PHSC 114接收來自用戶A和B的輸入。在2510,PHM 504加載配置二進(jìn)制210 (51)供執(zhí)行,而在2512,可編程硬件執(zhí)行配置二進(jìn)制,并將結(jié)果提供回PHIM 504。PHSC 114又將結(jié)果提供回各個(gè)用戶。合并消除了上下文切換的必要性,還有其他優(yōu)點(diǎn)。例如,若沒有合并,需要在用戶A和用戶B之間切換上下文。如此,用戶A的reg ex 108(1)將執(zhí)行,而reg ex108(2)等待。在reg ex 108(1)結(jié)束之后,reg ex 108(2)將執(zhí)行。利用合并,兩者都可以同時(shí)執(zhí)行。在合并期間,維護(hù)了此過程中的安全性,因?yàn)橹挥械讓泳幾g模塊112和PHSC 114才感知這兩個(gè)不同的reg exs同時(shí)執(zhí)行。用戶A和用戶B不會(huì)察覺到合并,它們的相應(yīng)的結(jié)果保持分尚。延遲的配置分頁(yè)
除合并之外,多個(gè)應(yīng)用程序或用戶可以在正則表達(dá)式處理系統(tǒng)102的操作期間共享資源。圖26是示出了配置二進(jìn)制的延遲的配置分頁(yè)以促進(jìn)此共享的流程圖2600。延遲的分頁(yè)允許任務(wù)的延遲,以允許合并這些任務(wù),并最小化對(duì)可編程硬件的重新配置。在此例圖中,隨著頁(yè)面向下,時(shí)間增加,如由箭頭2602所指示的。在2604,PHSC114接收帶有輸入A的reg ex 108 (80),如語(yǔ)料庫(kù)的第一部分。PHSC 114將reg ex傳遞到PHIM 504供在可編程硬件118(2)上執(zhí)行,并將結(jié)果返回到用戶。^ 2606,PHSC 114接收reg ex 108 (81)供進(jìn)行處理。然而,預(yù)期對(duì)regex 108(80)的另外的處理將發(fā)生。結(jié)果,對(duì)reg ex 108(81)的處理被延遲。在2608,再次請(qǐng)求reg ex 108 (80),此時(shí),通過輸入B,如語(yǔ)料庫(kù)的第二部分。由于可編程硬件118(2)已經(jīng)加載了結(jié)合了 reg ex 108(80)的配置210 (80),因此,對(duì)于重新配置沒有延遲,并且處理可以開始。然后,將這些結(jié)果返回到用戶。在2610,reg ex 108(80)已經(jīng)完成,現(xiàn)在可以由可編程硬件118 (2)加載和執(zhí)行被延遲的reg ex 108(81)。然后,可以將這些結(jié)果返回到用戶。如此,在一些實(shí)現(xiàn)中,可以為當(dāng)前沒有加載的配置二進(jìn)制210存儲(chǔ)工作,并相對(duì)于接收它的順序,無次序地執(zhí)行工作。這可以通過最小化配置二進(jìn)制210加載到可編程硬件118的數(shù)量和頻率來提高效率。子二進(jìn)制編譯可以在低于被設(shè)計(jì)成能使用可編程硬件118的整個(gè)配置二進(jìn)制的粒度層次的粒度層次上發(fā)生編譯。某些可重新配置的硬件設(shè)備允許部分動(dòng)態(tài)重新配置,即,以小于整個(gè)設(shè)備的粒度的重新配置。圖27是示出了配置二進(jìn)制子元素(它們可以被組合以創(chuàng)建完整的配置二進(jìn)制)的編譯的流程圖2700。用于可編程硬件208的CAD工具所需的執(zhí)行時(shí)間隨著計(jì)算邏輯120的大小超線性地增大。因此,可以通過將較大的配置二進(jìn)制或HDL文件拆分為較小的片斷,或子元素,并分開地編譯那些較小的片段,來實(shí)現(xiàn)性能優(yōu)勢(shì)。然后,可以將所產(chǎn)生的子元素組合以構(gòu)成完整的計(jì)算邏輯。除更快的CAD工具208編譯時(shí)間之外,由于操縱這些預(yù)先配置的子元素的能力,而并非必須重新編譯整個(gè)配置二進(jìn)制(這是相當(dāng)消耗資源和時(shí)間的),二進(jìn)制將更加容易被整理碎片和重新配置。對(duì)這些子元素的打包可以動(dòng)態(tài)地進(jìn)行(而不是對(duì)于整個(gè)配置靜態(tài)地一次打包)。在此例圖中,由被配置成進(jìn)行子元素編譯的編譯模塊112接收正則表達(dá)式108(1)和108(2)和通信和控制邏輯(CC) 306。HDL編譯器202為每一個(gè)創(chuàng)建HDL文件。如此,編譯 RE 108(1)的 HDL 文件 2702 (I)、RE 108(2)的 HDL 文件 2702 (2),RE 108(3)的 HDL 文件2702(3)。CAD工具208接受這些HDL文件2702 (I)-(3),用于創(chuàng)建子元素。Reg ex 108(1)導(dǎo)致配置二進(jìn)制子元素2704(1),reg ex 108 (2)導(dǎo)致配置二進(jìn)制子元素2704 (2),而CC306導(dǎo)致配置二進(jìn)制子元素2704(3)??梢赃x擇供執(zhí)行的二進(jìn)制子元素,而二進(jìn)制合并模塊2706可以將這些子元素縫合在一起,以產(chǎn)生組合的配置二進(jìn)制2708。然后,可以由可編程硬件118加載和執(zhí)行此組合的配置二進(jìn)制2708。組合計(jì)算和超集可以通過將計(jì)算和超集組合來實(shí) 現(xiàn)附加的性能優(yōu)點(diǎn)。圖28是示出了正則表達(dá)式的計(jì)算組合的示意圖2800??梢越M合類似的或重復(fù)的諸如reg exs之類的計(jì)算。例如,假設(shè)多個(gè)垃圾消息過濾應(yīng)用程序,并且用戶提交reg exs的組供進(jìn)行處理。在這些組內(nèi),可以存在可以被找出和打包供共同執(zhí)行的副本。在2802,示出了用于執(zhí)行的正則表達(dá)式。這些包括2804處的任務(wù)A,包括reg exs108(1)-(6)。在用于執(zhí)行的reg exs中還包括2806處的任務(wù)B,包括reg exs 108(1),⑷,(6), (7), (8)和(9) ο重復(fù)的reg exs利用陰影示出。Regexs 108(1), (4)和(6)在兩個(gè)任務(wù)之間是共同的。在沒有計(jì)算組合的情況下,將需要四個(gè)配置二進(jìn)制來包含全部十二個(gè)reg exso然而,通過計(jì)算組合,此數(shù)字可以縮小為三個(gè)配置二進(jìn)制。在2808,示出了被組合和編譯的reg exs。配置二進(jìn)制210(61)包括reg exs 108(1)、(4)和(6),而配置二進(jìn)制210(62)和210(63)結(jié)合其余的正則表達(dá)式,而沒有重復(fù)。一個(gè)額外的好處是,當(dāng)在任務(wù)A2804和任務(wù)B 2806之間切換時(shí),一個(gè)重新配置是必需的,而并非四個(gè)。圖29是示出了具有重復(fù)的或類似的部分的正則表達(dá)式的超集的示意圖2900。如上所述,利用陰影示出了 reg ex的重復(fù)或類似的部分。在2902,示出了用于執(zhí)行的正則表達(dá)式。Reg exs 108(1), (2)和(3)正在等待執(zhí)行。如這里所示,reg ex 108(2)的一部分類似于reg ex 108(1)。例如,假設(shè)reg exl08 (I)是針對(duì)字符串“home mortgage”的,而reg ex 108(2)是針對(duì)字符串 “refinancing and equity from your home mortgage” 的。如此,108(2)包含類似于108(1)的部分,即用陰影表示的字符串“home mortgage”的部分。在由編譯模塊112進(jìn)行編譯期間,可以組合類似的或相同的部分。在2904,示出了已經(jīng)被打包和編譯的正則表達(dá)式的超集。在配置二進(jìn)制210(71)內(nèi),示出了 reg ex108 (2),以及對(duì)108 (I)、108 (3)和CC 306(1)公共的部分。Reg ex 108(1)沒有被包括在配置二進(jìn)制210(71)中,因?yàn)橄嗤墓ぷ鲗⒂蓃egex 108(2)中的公共部分執(zhí)行。在執(zhí)行之后,PHSC 114可以分出結(jié)果,并將它們提供回來,好像108(1)被分開地在可編程硬件中執(zhí)行。超集允許執(zhí)行所需的計(jì)算資源的減少。超集還通過允許更多等效的正則表達(dá)式利用較少的配置二進(jìn)制來執(zhí)行,降低重新配置的必要性。處理異構(gòu)FPGAS系統(tǒng)102中的可編程硬件118不必是相同的,或者甚至是比特流兼容的。系統(tǒng)102可包括不同大小、速度、分級(jí)、制造商、板載存儲(chǔ)器容量等等的設(shè)備。在存在異構(gòu)硬件的情況下,取決于現(xiàn)有的reg ex分布和設(shè)備工作荷載(某些設(shè)備可以比其他設(shè)備較少地使用),以及reg ex優(yōu)先級(jí),來將可編程硬件設(shè)備118作為目標(biāo)以供使用。
對(duì)目標(biāo)可編程硬件118的選擇將影響多個(gè)因素。這些因素包括基于不同的硬件對(duì)資源要求的估計(jì)的變化。例如,一個(gè)制造商可以使用與另一個(gè)制造商不同的基本邏輯元件,導(dǎo)致在可編程硬件118中如何實(shí)現(xiàn)reg exs的變化。受對(duì)目標(biāo)可編程硬件118的選擇的影響的另一個(gè)因素是打包能力。打包能力反映可編程硬件118的容量。例如,較大的設(shè)備可以比較小的設(shè)備保留更多reg exSo這影響reg ex跨哪里的多個(gè)配置以及如何跨多個(gè)配置來拆分。在確定目標(biāo)可編程硬件期間還可影響用于映射部分reg ex的可行性。例如,在中間數(shù)據(jù)的大小與輸入語(yǔ)料庫(kù)數(shù)據(jù)處于相同大小級(jí)別的某些情況下,板載存儲(chǔ)器可以有益于性能。在這些情況下,對(duì)目標(biāo)可編程硬件的確定可以考慮硬件處理它的可行性。
在給定可以利用不同的命令來控制不同的設(shè)備的情況下,系統(tǒng)控制器的操作也受到目標(biāo)可編程硬件影響。最后,由于目標(biāo)硬件中的差異,影響虛擬化的“可移植性”。例如,就快速地調(diào)整容錯(cuò)而言,諸如在備用或重新分配期間,可以將最初分配給發(fā)生故障的設(shè)備的reg ex遷移到其他比特流兼容的可編程硬件設(shè)備118,無需重新編譯。配置預(yù)取/分頁(yè)當(dāng)多個(gè)應(yīng)用程序或用戶共享同一個(gè)物理平臺(tái)時(shí),可以預(yù)期對(duì)特定配置二進(jìn)制210或子元素的調(diào)用。如此,可以以類似于存儲(chǔ)器預(yù)先獲取和推理性執(zhí)行的方式預(yù)先加載配置二進(jìn)制。與FPGA直接通信如上所述,在一些實(shí)現(xiàn)中,PHSC 114可以處理調(diào)度和往返于用戶的數(shù)據(jù)流。然后,可編程硬件118可以包括處理輸入數(shù)據(jù)重播、輸出數(shù)據(jù)重新排序、重新配置序列化等等的能力。本實(shí)現(xiàn)中的可編程硬件118可以要求附加的外部存儲(chǔ)器來存儲(chǔ)狀態(tài)信息。在另一種實(shí)現(xiàn)中,可編程硬件118本身可以處理最初接收輸入數(shù)據(jù)。在此實(shí)現(xiàn)中,可編程硬件118將接收輸入數(shù)據(jù),并開始利用當(dāng)前加載的計(jì)算邏輯120來執(zhí)行搜索??删幊逃布?18將把輸入數(shù)據(jù)中繼回在軟件中運(yùn)行的PHSC 114的一部分。PHSC 114的此基于軟件的部分將負(fù)責(zé)重播數(shù)據(jù)、重新排序輸出數(shù)據(jù),以及重新配置可編程硬件118。結(jié)論雖然參考此處所呈現(xiàn)的圖形及其他流程圖描述了說明性方法的具體細(xì)節(jié),但是,應(yīng)該理解,取決于情況,圖形所示出的某些動(dòng)作不必按照所描述的順序來執(zhí)行,可被修改,和/或可被完全省略。如本申請(qǐng)所描述,模塊和引擎可以使用軟件、硬件、固件或其組合來實(shí)現(xiàn)。此外,所描述的動(dòng)作和方法可以通過計(jì)算機(jī)、處理器或其他計(jì)算設(shè)備,基于存儲(chǔ)在存儲(chǔ)器上的指令來實(shí)現(xiàn),存儲(chǔ)器包括一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(CRSM)。CRSM可以是可由計(jì)算設(shè)備訪問以實(shí)現(xiàn)存儲(chǔ)在其上的指令的任何可用的物理介質(zhì)。CRSM可以包括,但不僅限于,隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦可編程只讀存儲(chǔ)器(EEPROM)、閃存或其他固態(tài)存儲(chǔ)器技術(shù),光盤只讀存儲(chǔ)器(⑶-ROM)、數(shù)字多功能盤(DVD)或其他光學(xué)存儲(chǔ),磁帶盒、磁帶、磁盤存儲(chǔ)或其他磁存儲(chǔ)設(shè)備,或可以用來存儲(chǔ)所希望的信息并可以被計(jì)算設(shè)備訪問的任何其他介質(zhì)。
權(quán)利要求
1.一種或多種存儲(chǔ)了指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述指令在由處理器執(zhí)行時(shí)使所述處理器執(zhí)行包括下列各項(xiàng)的動(dòng)作 解析正則表達(dá)式的列表并將所述正則表達(dá)式的列表轉(zhuǎn)換為相對(duì)應(yīng)的邏輯和狀態(tài)方程(902); 估計(jì)在可編程硬件設(shè)備上實(shí)現(xiàn)所述邏輯和狀態(tài)方程的物理資源要求(904); 將所述邏輯和狀態(tài)方程分布到組,所述分布基于所述估計(jì)的物理資源要求,其中,每一組的大小被定為當(dāng)與控制和通信邏輯結(jié)合時(shí)適合所述可編程硬件設(shè)備(906);將所述控制和通信邏輯添加到每一組中(908); 為每一組生成硬件定義語(yǔ)言(HDL)文件;以及 從每一 HDL文件來生成配置二進(jìn)制,其中,每一配置二進(jìn)制都被配置成在所述可編程硬件設(shè)備上執(zhí)行。
2.如權(quán)利要求I所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,還包括為一個(gè)或多個(gè)所述組來生成配置規(guī)范(912)。
3.根據(jù)權(quán)利要求I或2中的任何一個(gè)所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,還包括 將所述配置二進(jìn)制加載到所述可編程硬件設(shè)備中以生成計(jì)算邏輯(1104); 將語(yǔ)料庫(kù)的至少一部分加載到所述可編程硬件設(shè)備(1106)中;以及 在所述可編程硬件設(shè)備上針對(duì)所述已加載的語(yǔ)料庫(kù)執(zhí)行所述計(jì)算邏輯(1108)。
4.根據(jù)權(quán)利要求1-3中的任何一個(gè)所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述估計(jì)物理資源要求包括 將特定正則表達(dá)式與所述可編程硬件設(shè)備上的計(jì)算邏輯相關(guān)聯(lián)(1002); 標(biāo)識(shí)所述計(jì)算邏輯內(nèi)的冗余邏輯并將其刪除(1004)以形成合并的邏輯; 估計(jì)所述可編程硬件設(shè)備上的所述合并的邏輯的本地存儲(chǔ)要求(1006);以及 將計(jì)算機(jī)輔助設(shè)計(jì)工具專用的校正因數(shù)應(yīng)用到所述合并的邏輯和本地存儲(chǔ)要求;以及 基于所述估計(jì)的合并的邏輯和本地存儲(chǔ)要求,生成估計(jì)的物理資源要求。
5.根據(jù)權(quán)利要求1-4中的任何一個(gè)所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,還包括 將所述列表中的正則表達(dá)式添加到丟棄列表中(1210);以及 丟棄與所述丟棄列表上的所述正則表達(dá)式相關(guān)聯(lián)的執(zhí)行結(jié)果(1212)。
6.如權(quán)利要求3所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,還包括利用相對(duì)應(yīng)的邏輯和狀態(tài)方程所示的所述正則表達(dá)式列表中未包括的附加的正則表達(dá)式修補(bǔ)執(zhí)行結(jié)果(1214)。
7.如權(quán)利要求3所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,還包括動(dòng)態(tài)地將配置二進(jìn)制的所述加載從不可用的可編程硬件設(shè)備重定向到可用的可編程硬件設(shè)備(1402)。
8.根據(jù)權(quán)利要求1-7中的任何一個(gè)所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,還包括 從所述組中移除與已丟棄的正則表達(dá)式相關(guān)聯(lián)的計(jì)算邏輯;以及 將其余的計(jì)算邏輯和控制和通信邏輯重新分布到一個(gè)或多個(gè)新的組(1908)。
9.根據(jù)權(quán)利要求1-8中的任何一個(gè)所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述配置二進(jìn)制包括多個(gè)配置二進(jìn)制子元素(2700)。
10.一種方法,包括在處理器上生成適于在可編程硬件設(shè)備上執(zhí)行的邏輯和狀態(tài)信息,其中,所述執(zhí)行導(dǎo)致處理多個(gè)任務(wù); 估計(jì)所述可編程硬件設(shè)備處理所述邏輯和狀態(tài)信息所要求的硬件容量;以及基于所述已估計(jì)的硬件容量要求,將所述邏輯和狀態(tài)信息分布到組中,以便每一組的所述邏輯和狀態(tài)信息匹配所述可編程硬件設(shè)備的硬件容量。
11.如權(quán)利要求10所述的方法,其特征在于,進(jìn)一步包括 為每一個(gè)組生成被配置成在所述可編程硬件設(shè)備上執(zhí)行的配置二進(jìn)制;以及 基于所述配置二進(jìn)制,生成配置規(guī)范。
12.根據(jù)權(quán)利要求10-11中的任何一個(gè)所述的方法,其特征在于,還包括 確定所述可編程硬件設(shè)備上的所述組的執(zhí)行優(yōu)先級(jí),其中所述執(zhí)行優(yōu)先級(jí)包括高優(yōu)先級(jí)任務(wù)和低優(yōu)先級(jí)任務(wù);以及 序列化包含高優(yōu)先級(jí)任務(wù)的組在可編程硬件上的執(zhí)行比執(zhí)行較低優(yōu)先級(jí)任務(wù)的可編程硬件更快。
13.根據(jù)權(quán)利要求10-12中的任何一個(gè)所述的方法,其特征在于,還包括 通過優(yōu)先級(jí)來序列化用于在所述可編程硬件設(shè)備上執(zhí)行的任務(wù);以及 在各組之間分布所述任務(wù),以便高優(yōu)先級(jí)任務(wù)被分發(fā)到首先執(zhí)行或比低優(yōu)先級(jí)組更頻繁地執(zhí)行的組中。
14.一種系統(tǒng),包括 處理器; 耦合到所述處理器的存儲(chǔ)器; 存儲(chǔ)在所述存儲(chǔ)器中并被配置成在所述處理器上執(zhí)行的用戶界面; 通過所述用戶界面獲取的并存儲(chǔ)在所述存儲(chǔ)器中的多個(gè)任務(wù); 存儲(chǔ)在存儲(chǔ)器中的并被配置成執(zhí)行下列操作的編譯模塊 將所述多個(gè)任務(wù)的至少一部分轉(zhuǎn)換為相對(duì)應(yīng)的邏輯和狀態(tài)方程; 估計(jì)在可編程硬件設(shè)備上實(shí)現(xiàn)所述邏輯和狀態(tài)方程的物理資源要求; 基于所述估計(jì)的物理資源要求將所述邏輯和狀態(tài)方程分布到組,其中,每一組的大小被定為當(dāng)與控制和通信邏輯結(jié)合時(shí)適合所述可編程硬件設(shè)備;以及對(duì)于每一個(gè)組生成配置二進(jìn)制;以及 可編程硬件系統(tǒng)控制器,所述可編程硬件系統(tǒng)控制器被配置成在所述處理器上執(zhí)行,以管理所述配置以及用于所述可編程硬件設(shè)備的輸入/輸出數(shù)據(jù)編組。
15.如權(quán)利要求14所述的系統(tǒng),其特征在于,由所述用戶界面獲取的并存儲(chǔ)在存儲(chǔ)器中的所述多個(gè)任務(wù)是被配置成針對(duì)數(shù)據(jù)的語(yǔ)料庫(kù)執(zhí)行的正則表達(dá)式。
全文摘要
可以從諸如針對(duì)語(yǔ)料庫(kù)來評(píng)估正則表達(dá)式之類的任務(wù)生成適于在可編程硬件設(shè)備上執(zhí)行的邏輯和狀態(tài)信息??梢怨烙?jì)可編程硬件設(shè)備上的邏輯和狀態(tài)信息的硬件容量要求。一旦被估計(jì),就可以將從多個(gè)任務(wù)生成的多個(gè)邏輯和狀態(tài)信息分配到組,以便每一個(gè)組的邏輯和狀態(tài)信息匹配可編程硬件設(shè)備的硬件容量。每一組內(nèi)的任務(wù)可以被配置成在可編程硬件設(shè)備上并行地執(zhí)行。然后,可以串行地執(zhí)行組,準(zhǔn)許資源的虛擬化。
文檔編號(hào)G06F9/45GK102804170SQ201080028837
公開日2012年11月28日 申請(qǐng)日期2010年6月18日 優(yōu)先權(quán)日2009年6月19日
發(fā)明者K·H·葉古羅, A·福林 申請(qǐng)人:微軟公司