TWI502501B - 用以控制自動機之內分支度及/或外分支度之展開量化 - Google Patents
用以控制自動機之內分支度及/或外分支度之展開量化 Download PDFInfo
- Publication number
- TWI502501B TWI502501B TW101102988A TW101102988A TWI502501B TW I502501 B TWI502501 B TW I502501B TW 101102988 A TW101102988 A TW 101102988A TW 101102988 A TW101102988 A TW 101102988A TW I502501 B TWI502501 B TW I502501B
- Authority
- TW
- Taiwan
- Prior art keywords
- automaton
- quantization
- computer
- expanding
- branching
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4498—Finite state machines
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Devices For Executing Special Programs (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本專利申請案依據35 U.S.C.章節119(e)主張2011年1月25日申請之題為「UNROLLING QUANTIFICATIONS TO CONTROL IN-DEGREE AND/OR OUT DEGREE OF AUTOMATON,」之美國臨時專利申請案第61/436,051號的優先權之利益,該美國臨時專利申請案之全文以引用方式藉此併入本文中。
有限狀態機(FSM)(亦被稱作有限狀態自動機、自動機或簡稱為狀態機)為狀態、狀態之間的轉變及動作的表示。有限狀態機可用以設計數位邏輯、電腦程式或平行機之映像。有限狀態機為由有限數目個狀態、彼等狀態之間的轉變及輸出組成的行為模型。有限狀態機可表示為一圖,其中該圖之頂點對應於該有限狀態機之狀態,且該圖之邊對應於歸因於至該有限狀態機之一或多個輸入而發生的狀態之間的轉變。有限狀態機亦可具有機率轉變、模糊狀態或其他異事。有限狀態機具有一有限內部記憶體、一輸入特徵及一選用之輸出特徵。具有一輸出之有限狀態機可被稱作有限狀態轉換器。
有限狀態機之應用包括電子設計自動化、通信協定設計、生物學及人工智慧研究,以及用以描述自然語言之文法的語言學。
以下描述及圖式充分地說明使熟習此項技術者能夠實踐
的特定實施例。其他實施例可併有結構、邏輯、電、過程及其他改變。一些實施例之部分及特徵可包括於其他實施例中或可替代其他實施例之部分及特徵。申請專利範圍中所陳述之實施例涵蓋彼等技術方案之所有可用等效物。
本文件尤其描述將原始程式碼轉換成有限狀態機之機器碼實施方案的編譯程式。機器碼可對應於一目標器件,因為該機器碼經組態以在該目標器件上實施藉由原始程式碼描述的功能。在一實例中,該目標器件為平行機,且機器碼包含用於該平行機之映像。在另一實例中,該目標器件包含具有馮諾依曼架構之電腦,且機器碼包含供該電腦中之處理器執行的指令。
在任一種情況下,編譯程式均將原始程式碼轉換成體現藉由該原始程式碼描述之功能的有限狀態機。在編譯原始程式碼之過程中,該編譯程式將原始程式碼轉換成自動機。使用該自動機,該編譯程式可識別並組合原始程式碼中之冗餘,以便最佳化藉由機器碼實施之所得有限狀態機。另外,該編譯程式可考量在形成自動機時該目標器件之態樣或限制,以便減少所得機器碼之複雜性並增加該目標器件之操作效率。
圖1說明實例編譯程式之流程圖100。該編譯程式採用原始程式碼作為輸入且產生機器碼以在目標器件上實施藉由原始程式碼描述之功能。在一實例中,該目標器件包含如下文關於圖5至圖9中所描述之平行機。該平行機包括可設定為複數個狀態中之一者的複數個可程式化元件。用於一
平行機之機器碼包含用於設定該等可程式化元件中之一或多者的狀態的映像。在另一實例中,該目標器件為具有馮諾依曼架構之電腦。該電腦包括耦接至一或多個記憶體器件之一或多個處理器,該一或多個記憶體器件上具有供該一或多個處理器執行之軟體。用於馮諾依曼架構之機器碼包含供該一或多個處理器執行之指令。在下文關於圖15來描述具有馮諾依曼架構之實例電腦。在任一種情況下,該編譯程式藉由將自動機用作中間轉換來產生機器碼。該編譯程式使用一自動機以便尤其最佳化所得FSM且反過來最佳化該機器碼。
在一實例中,原始程式碼描述用於識別一群符號內之符號的型樣之搜尋字串。為了描述該等搜尋字串,該原始程式碼可包括複數個正規表達式(regex)。正規表達式可為用於描述符號搜尋型樣之字串。正規表達式廣泛用在各種電腦領域中,諸如程式設計語言、文字編輯器、網路安全及其他領域。在一實例中,由編譯程式支援之正規表達式包括用於無結構資料之搜尋的搜尋準則。無結構資料可包括以下資料,其為自由形式的且無索引施加於資料內之字。字可包括資料內之任何位元組組合,可列印及不可列印的。在一實例中,編譯程式可支援用於實施正規表達式之多種不同的原始程式碼語言,包括Perl(例如,Perl相容正規表達式(PCRE))、PHP、Java及.NET語言。
返回參看圖1,在區塊102處,編譯程式可剖析原始程式碼以形成有關係連接之運算子的配置。剖析原始程式碼可
產生該原始程式碼之一般表示。在一實例中,該一般表示包含該原始程式碼中的呈被稱為語法樹之樹形圖形式的正規表達式之經編碼表示。本文中所描述之實例將該配置稱為語法樹(亦被稱為「抽象語法樹」),然而,在其他實例中,可使用具體語法樹或其他配置。
由於如上文所提及,編譯程式可支援多種語言之原始程式碼,因此,不管是何種語言,剖析將該原始程式碼轉換成非語言特定表示,例如語法樹。因此,藉由編譯程式進行之其他處理(區塊104、106、108、110)可自一共同輸入結構來起作用,而不管原始程式碼之語言。
該語法樹包括有關係連接之複數個運算子。該語法樹可包括多種不同類型之運算子,其中不同類型之運算子對應於藉由該原始程式碼實施之不同功能。亦即,不同運算子可對應於藉由原始程式碼中之正規表達式實施的不同功能。
在區塊104處,將該語法樹轉換成自動機。一自動機包含一FSM之軟體模型,且可因此分為確定性或非確定性。確定性自動機在給定時間具有單一執行路徑,而非確定性自動機具有多個同時之執行路徑。該自動機包含複數個狀態。為了將語法樹轉換成自動機,將語法樹中之運算子及運算子之間的關係轉換成狀態及狀態之間的轉變。
為了有效地利用目標器件之元件,編譯程式可基於該目標器件之元件的態樣或限制來形成自動機。舉例而言,該等元件可對轉變至或轉變出該自動機中之給定狀態的數目
具有某些限制。在其他實例中,硬性限制可能不存在,但編譯程式可限制轉變至或轉變出一給定狀態之數目,以便簡化編譯程式產生機器碼及/或改良該目標器件上之機器碼的操作效率所需的處理。在下文關於圖3及圖4A至圖4C來提供關於限制轉變至或轉變出一給定狀態之更多細節。
一旦已形成該自動機,在區塊106處,可將該自動機最佳化以尤其減少其複雜性及大小。可尤其藉由組合等效狀態來最佳化該自動機。
在區塊108處,將該自動機轉換成用於一目標器件之機器碼。在一實例中,該機器碼包含用於馮諾依曼架構中之處理器的可執行指令。在此,機器碼可包含可執行程式。
在另一實例中,該機器碼可包含經組態以程式化一平行機中之硬體元件的位元。在此,該機器碼可包含供載入至平行機上的映像。
在區塊110處,該機器碼可藉由編譯程式發佈。在一實例中,可藉由將機器碼儲存至電腦可讀媒體來發佈該機器碼。在另一實例中,可藉由將機器碼發送至另一器件(諸如,用於將機器碼載入至平行機上之載入程式)來發佈該機器碼。在再一實例中,可藉由將機器碼載入至平行機上來發佈該機器碼。在又一實例中,可藉由在顯示器件上顯示機器碼來發佈該機器碼。
在一實例中,該編譯程式可藉由用於具有馮諾依曼架構之電腦之指令來實施。此等指令可使該電腦上之處理器實施該編譯程式之功能。舉例而言,該等指令在藉由該處理
器執行時可使該處理器對可由該處理器存取之原始程式碼執行如區塊102、104、106、108及110中所描述之動作。具有馮諾依曼架構之實例電腦展示於圖15中且在下文描述。
可以原始程式碼描述之一類正規表達式包括一量化。量化在此項技術中為眾所周知的,且用以描述重複型樣。作為一實例,「A(B){n1,n2}C」為一般正規表達式,其中A、B及C為子表達式,且「(B){n1,n2}」包含一量化。如本文中所描述,使用大寫字母來表示正規表達式或正規表達式之一部分(例如,子表達式)。可將雙引號添加到正規表達式或子表達式周圍以避免混淆。因此,描述一表達式之大寫字母可對應於用於多個輸入符號之搜尋字串。舉例而言,表達式「A」可對應於輸入字串「abbc」。
此外,應理解,術語表達式及子表達式在本文中僅用於關係描述(例如,子表達式為表達式之一部分),且術語表達式及子表達式不應限於任何特定長度、語法或字元數目。詳言之,原始程式碼可包括大量字元(包括元字元及搜尋字元),其中整組字元或其任何個別部分可被視為一「表達式」。舉例而言,以下各者中之每一者可被視為一表達式:「a(bb|d?){5,20}c」、「(b){0,10}」、「(b|d)」及「b」。
將一量化以正規表達式表達為「(B){n1,n2}」,其中B為子表達式,且n1及n2為指定允許前述子表達式出現多少次之整數。B在本文中被稱作為重複子表達式,因為B為重
複了由n1及n2指定之次數的子表達式。為了匹配量化「(B){n1,n2}」,必須匹配重複子表達式B n1至n2數目次。舉例而言,正規表達式「(B){5,7)」將要求子表達式B匹配5、6或7次。在正規表達式「A(B){n1,n2}C」中,子表達式A在本文中被稱作為驅動表達式,因為子表達式A在匹配時轉變至一量化。另外,為了繼續重複及遞增針對該量化之計數,必須連續地匹配該量化之重複子表達式。亦即,當一重複子表達式在該量化之給定迴圈期間不匹配時,該量化結束。在一實例中,符號「?」亦對應於量化,其中在「?」之前的符號可識別一次或零次。
圖2說明對應於具有一量化之正規表達式的實例自動機200。自動機200對應於正規表達式「abb?(b|c){1,2}」。自動機200包括一初始狀態202及最終狀態212、204。該等最終狀態212、204在圖2中識別為雙圓。最初啟動初始狀態202並在輸入符號「a」之後即刻使其轉變至狀態206。在輸入符號「b」時,狀態206轉變至狀態208及狀態210。在輸入符號「b」時狀態208轉變至狀態210,且在輸入符號「b」或「c」時,狀態210轉變至狀態212。同樣,在輸入符號「b」或「c」時,自動機200自狀態212轉變至狀態204。狀態212及204被識別為最終狀態,因為狀態212或狀態204之啟動指示自動機200所對應於之正規表達式「abb?(b|c){1,2}」的匹配。
圖3說明用於將語法樹轉換成自動機之方法300的實例。詳言之,方法300說明用於藉由展開一量化運算子(在本文
中亦被簡稱作「量化」)將該量化轉換成自動機的方式。舉例而言,展開一量化可包括用非量化語法來重寫該量化並將該非量化語法轉換成自動機。舉例而言,「(b|c){1,2}」可重寫為「(b|c)(b|c)?」。展開之優點可包括所得自動機為有向非循環圖(DAG),其可較易於在目標器件中實施。
方法300在區塊302處開始,在區塊302處,當一量化之一重複子表達式為可空(nullable)時,將該量化轉換成一不可空形式。若該重複子表達式為不可空,則該方法前進至304而不轉換該量化。當一表達式可藉由一空字串匹配時,該表達式為可空的。舉例而言,表達式(bc|)可藉由輸入符號「bc」或空字串匹配。因此,表達式(bc|)為可空的,因為該表達式可藉由空字串匹配。為了將對應於可空之重複子表達式的量化轉換成具有不可空之重複子表達式的量化,移除該重複子表達式之可空部分。舉例而言,表達式(bc|)變成(bc)。另外,用以匹配該量化之迴圈之數目自{n1,n2}修改成{0,n2}。舉例而言,表達式「AB{n1,n2}C」轉換成「AB'{0,n2}C」,其中B'為B之不可空形式。在一實例中,量化「a(bc|){3,5}d」可轉換成「a(bc){0,5}d」。
在一實例中,在區塊304處,視情況地判定是否將展開該量化。如上文所提及,展開一量化可包括用非量化語法來重寫該量化並將該非量化語法轉換成自動機。該量化之此重寫的結果為藉由通用狀態(例如,狀態機元件)且不藉
由特殊目的狀態(例如,計數器)來實施所得之展開語法。然而,在一些情形中,可希望藉由特殊目的元件(例如,計數器)來實施該量化且因此不展開該量化。在其他情況下,展開該量化。當不展開該量化時,針對該量化,方法300結束。當可至少部分展開該量化時,方法300繼續至區塊306。以下條件指示何時可能藉由一計數器實施且何時一量化不藉由一計數器實施且得以展開的實例。應理解,儘管下文之某些情形描述為可能藉由一計數器實施,但在其他實例中,此等情形可藉由展開來實施。大體上,在需要時,所有量化均可藉由展開來實施。
在判定是否可使用計數器來實施一量化之前,若£(B)包括空字串,則「B{n1,n2}」之量化重寫為「B'{0,n2}」,其中B'為B之非空字串版本,£(B')=£(B)-Φ。舉例而言,「(bc|){10,20}」可重寫為「(bc){0,20}」,因為此等正規表達式接受正好相同之資料。
1.當(n1=0,n2=-1)時,該量化將藉由展開來實施。在此,不需要計數器。
2.當(n1=1,n2=-1)時,該量化將藉由展開來實施。在此,不需要計數器。
3.當(n1>1,n2=-1)時,該量化將分裂成兩個正規表達式B{n1-1}及B+,因為B{n,-1}等於B{n1-1}B+。可接著可能藉由計數器來實施量化B{n1-1},而將藉由展開來實施B+。
4.當(n1=0,n2>0)時,將該量化修改成(B{1,n2})?,因
為(B{1,n2})?等於B{0,n2}。可接著可能藉由計數器來實施不可空B{1,n2}。
5.當(n1>0,n2>0)時,可能藉由計數器將該量化實施為B{n1,n2}。
總言之,在不修改之情況下可能藉由計數器實施之量化可被寫成B{n1,n2},其中B為不可空的,n1>0、n2>0且n1n2。
在區塊306處,展開可與單一數目個迴圈匹配的量化以形成具有複數個連續地連接之重複子表達式的自動機。具有單一數目個迴圈之量化對應於n1等於n2之量化。舉例而言,量化「B{n1}」可展開為「BB...B」,具有B之n1個複本。
在區塊308處,當n1不等於n2時,且當n1等於1且n2大於1時,展開可與多個數目個迴圈匹配的量化。當n1大於1時,將該量化分裂成可與n1-1數目個迴圈匹配的第一量化及可與一個至n2-n1+1數目個迴圈匹配的第二量化。舉例而言,量化B{n1,n2}(其中n1>1、n2>1且n1<n2)可與多個數目個迴圈匹配,詳言之,自n1至n2數目個迴圈。此量化B{n1,n2}可分裂成以下量化:B{n1-1}B{1,n2-n1+1}。第一量化為可與數目等於n1-1之迴圈匹配的重複子表達式B。將此第一量化與一第二量化串接,該第二量化具有可與數目為一個至n2-n1+1個之迴圈匹配的重複子表達式。如306處所述,展開第一量化B{n1-1}。
可基於所得自動機之內分支度(in-degree)及/或外分支度
(out-degree)來展開第二量化B{1,n2-n1+1}。展開一量化可產生具有大內分支度或大外分支度之狀態。在一實例中,內分支度對應於至該自動機之狀態的轉變之數目,且外分支度對應於自該自動機之狀態發生的轉變之數目。因此,可展開該第二量化以控制當將第二量化轉換成自動機時進(內分支度)或出(外分支度)狀態之轉變。舉例而言,可展開該量化以限制每一展開狀態之內分支度使之低於一臨限值數目。舉例而言,限制內分支度可經執行以考量目標器件中之元件的態樣及/或限制。此外,在展開期間限制內分支度可減少編譯程式之後續處理。
在一實例中,當展開量化B{1,n2-n1+1}時,產生自動機,作為內分支度與外分支度之間的權衡。因此,減少內分支度可增加外分支度,且減少外分支度可增加內分支度。在一實例中,為了展開量化B{1,n2-n1+1}之迴圈結構,進行至或自展開狀態之許多轉變以使該自動機接受B串接k次之任何字串,其中1<=k<=n2-n1+1。控制是否進行至或自展開狀態之轉變可用以控制該自動機之內分支度/外分支度。
儘管將方法300描述為對應於單一量化,但可針對一語法樹內之複數個量化而重複方法300,且可接著將所得之單獨自動機連接至較大自動機中。
圖4A說明自動機400之一實例,其中展開表達式AB{1,4}以最小化內分支度。自經展開以最小化內分支度之量化產生的自動機在本文中亦被稱作為散射型樣。表達式
AB{1,4}之散射型樣展開版本直接對應於自動機400所對應於之表達式A((((B?)B)?B)?B)。自動機400包括用於量化B{1,4}之驅動狀態402及複數個展開狀態404-408,包括該量化之第一狀態404及該量化之最後一個狀態408。在一實例中,表達式A及B中之每一者可對應於未展示之較小自動機的多個狀態。為了最小化自動機400之內分支度,將該量化之轉變指派為自第一狀態404至其他展開狀態405-408之外轉變。因此,第一狀態404具有大外分支度(4個外轉變),且所有量化狀態404-408具有小內分支度(1或2個內轉變)。
圖4B說明自動機410之一實例,其中展開表達式AB{1,4}以最小化外分支度。自經展開以最小化外分支度之量化產生的自動機在本文中亦被稱作為合併型樣。表達式AB{1,4}之合併型樣展開版本直接對應於展開表達式AB(B(B(B)?)?)?。自動機408包括與自動機400相同之狀態402、404-408,但在狀態402、404-408之間具有不同轉變。為了最小化自動機410之外分支度,將該量化之轉變指派為至該量化之最後一個狀態408之內轉變。內轉變係來自展開狀態404-407中之每一者。因此,所有量化狀態404-408具有小外分支度(1或2個外轉變),但該量化之最後一個狀態408具有大內分支度(4個內轉變)。
在一實例中,展開具有一量化之一表達式以限制外分支度或內分支度中之一者使之小於一臨限值。在一實例中,為了展開表達式AB{1,n1}以將內分支度限制於一臨限值,
可將數目高達該臨限值的該量化B{1,n1}之轉變指派為至量化B{1,n1}之最後一個狀態的內轉變,且可將其他轉變指派為針對量化B{1,n1}之第一狀態的外轉變。相反,為了展開表達式AB{1,n1}以將外分支度限制於一臨限值,可將數目高達該臨限值的該量化B{1,n1}之轉變指派為至該量化之第一狀態的外轉變,且可將其他轉變指派為針對該量化B{1,n1}之最後一個狀態的外轉變。
圖4C說明自動機412之另一實例,其中展開表達式AB{1,4}以限制任何狀態之內轉變使之小於或等於3。自動機412包括與自動機400及408相同之狀態402、404-408,但在狀態402、404-408之間具有不同轉變。在一實例中,為了限制自動機412之內分支度使之小於或等於三(3)個內轉變,最初將該量化之轉變指派為至該量化B{1,4}之最後一個狀態408的內轉變,直至達到三個之極限為止,且將其他轉變指派為自量化狀態404-408之外轉變。因此,最後一個狀態408以及該量化之其他量化狀態404-407具有等於或低於3之極限的內分支度,且第一狀態404具有為3之外分支度。
在其他實例中,可將表達式之內分支度及外分支度設定為彼此成某一比率(例如,1比1、2比1)。在又一些實例中,可將表達式之內分支度及外分支度設定為彼此成某一比率,直至內轉變或外轉變達到一臨限值為止,且接著可使用另一比率,或可將所有轉變分別指派為內轉變或外轉變。
下文關於圖5至圖15所作之描述與在平行機中實施具有有限之內分支度及/或外分支度之自動機的實例實施例有關。參看圖5至圖9所作之描述與用於實施量化之實例平行機有關,且參看圖10至圖14所作之描述與用以產生機器碼以程式化該平行機以實施該量化的實例編譯程式有關。
圖5說明可用以實施用於分析資料之階層式結構的實例平行機500。平行機500可接收輸入資料並基於該輸入資料提供一輸出。平行機500可包括用於接收輸入資料之資料輸入埠510及用於將輸出提供至另一器件的輸出埠514。資料輸入埠510提供用於將輸入至該平行機500之資料的介面。
平行機500包括複數個可程式化元件,包括通用元件502及特殊目的元件512。通用元件502可包括一或多個輸入504及一或多個輸出506。可將通用元件502程式化為複數個狀態中之一者。通用元件502之狀態判定該等通用元件502將基於給定輸入提供哪一(些)輸出。亦即,通用元件502之狀態判定可程式化元件將基於給定輸入如何起反應。輸入至資料輸入埠510之資料可提供至該複數個通用元件502以使該等通用元件502對其採取行動。通用元件502之實例可包括下文詳細論述之狀態機元件(SME)及一可組態邏輯區塊。在一實例中,SME可設定為一給定狀態以當在資料輸入埠510處接收到一給定輸入時提供某一輸出(例如,高或「1」信號)。當在資料輸入埠510處接收到不
同於該給定輸入之一輸入時,該SME可提供一不同輸出(例如,低或「0」信號)。在一實例中,一可組態邏輯區塊可經設定以基於在資料輸入埠510處接收到之輸入來執行布林邏輯函數(例如,「及」(AND)、「或」(OR)、「或非」(NOR)等)。
平行機500亦可包括一程式設計介面511以將一程式(例如,映像)載入至平行機500上。該映像可程式化(例如,設定)通用元件502之狀態。亦即,該映像可組態通用元件502以按某一方式對給定輸入起反應。舉例而言,一通用元件502可經設定,以當在資料輸入埠510處接收到字元「a」時輸出一高信號。在一些實例中,平行機500可使用一時脈信號來控制通用元件502之操作的時序。在某些實例中,平行機500可包括用於與通用元件502互動及用於執行特殊目的功能之特殊目的元件512(例如,RAM、邏輯閘、計數器、查找表等)。在一些實施例中,在資料輸入埠510處接收到之資料可包括隨時間過去或一齊接收到之一組固定之資料或隨時間過去而接收到之資料串流。可自耦接至平行機500之任何來源接收資料或藉由耦接至平行機500之任何來源產生資料,該任何來源諸如資料庫、感測器、網路等。
平行機500亦包括用於將平行機500之不同元件(例如,通用元件502、資料輸入埠510、輸出埠514、程式設計介面511及特殊目的元件512)選擇性地耦接在一起的複數個可程式化開關508。因此,平行機500包含在該等元件間形
成之可程式化矩陣。在一實例中,一可程式化開關508可將兩個或兩個以上元件選擇性地耦接至彼此,使得一通用元件502之輸入504、資料輸入埠510、程式設計介面511或特殊目的元件512可經由一或多個可程式化開關508而耦接至一通用元件502之輸出506、輸出埠514、程式設計介面511或特殊目的元件512。因此,該等元件之間的信號之投送可藉由設定可程式化開關508來控制。儘管圖5說明一給定元件與一可程式化開關508之間的某一數目之導體(例如,電線),但應理解,在其他實例中,可使用不同數目之導體。而且,儘管圖5說明每一通用元件502個別地耦接至一可程式化開關508,但在其他實例中,多個通用元件502可作為一群組(例如,區塊802,如圖8中所說明)而耦接至一可程式化開關508。在一實例中,資料輸入埠510、資料輸出埠514及/或程式設計介面511可實施為暫存器,以使得至暫存器之寫入將資料提供至各別元件或自各別元件提供資料。
在一實例中,一單一平行機500實施於一實體器件上,然而,在其他實例中,兩個或兩個以上平行機500可實施於單一實體器件(例如,實體晶片)上。在一實例中,多個平行機500中之每一者可包括一不同之資料輸入埠510、一不同之輸出埠514、一不同之程式設計介面511,及一組不同之通用元件502。此外,每一組通用元件502可對其對應輸入資料埠510處之資料起反應(例如,輸出高或低信號)。舉例而言,對應於第一平行機500之第一組通用元件502可
對對應於第一平行機500之第一資料輸入埠510處之資料起反應。對應於第二平行機500之第二組通用元件502可對對應於第二平行機500之第二資料輸入埠510起反應。因此,每一平行機500包括一組通用元件502,其中通用元件502之不同集合可對不同輸入資料起反應。類似地,每一平行機500及每一組對應之通用元件502可提供一不同輸出。在一些實例中,來自第一平行機500之輸出埠514可耦接至第二平行機500之輸入埠510,使得用於第二平行機500之輸入資料可包括來自第一平行機500之輸出資料。
在一實例中,用於載入至平行機500上之映像包含用於在平行機500內設定通用元件502之狀態、程式化可程式化開關508及組態特殊目的元件512的複數個資訊位元。在一實例中,該映像可載入至平行機500上以程式化該平行機500以基於某些輸入而提供所要輸出。輸出埠514可基於通用元件502對資料輸入埠510處之資料所起之反應來提供來自平行機500之輸出。來自輸出埠514之輸出可包括指示一給定型樣之匹配的單一位元、包含指示與複數個型樣之匹配及不匹配之複數個位元的字,及對應於在給定時刻所有或某些通用元件502之狀態的狀態向量。
平行機500之實例用途包括型樣識別(例如,語音識別、影像識別等)、信號處理、成像、電腦視覺、密碼學及其他。在某些實例中,平行機500可包含一有限狀態機(FSM)引擎、一場可程式化閘陣列(FPGA)及其變體。此外,平行機500可為較大器件中之一組件,該較大器件諸如電腦、
尋呼機、蜂巢式電話、個人行事曆、攜帶型音訊播放器、網路器件(例如,路由器、防火牆、交換機或其任何組合)、控制電路、攝影機等。
圖6至圖9說明在本文中被稱作為「FSM引擎600」之平行機的實例。在一實例中,FSM引擎600包含有限狀態機之硬體實施方案。因此,FSM引擎600實施對應於FSM中之複數個狀態的複數個可選擇性地耦接之硬體元件(例如,可程式化元件)。類似於FSM中之狀態,一硬體元件可分析一輸入串流且基於該輸入串流來啟動一下游硬體元件。
FSM引擎600包括複數個可程式化元件,包括通用元件及特殊目的元件。通用元件可經程式化以實施許多不同功能。此等通用元件包括SME 604、605(展示於圖9中),該等SME 604、605階層式組織成列606(展示於圖7及圖8中)及區塊602(展示於圖6及圖7中)。為了在經階層式組織之SME 604、605之間投送信號,使用可程式化開關之階層,該階層包括區塊間開關603(展示於圖6及圖7中)、區塊內開關608(展示於圖7及圖8中)及列內開關612(展示於圖8中)。SME 604、605可對應於藉由FSM引擎600實施的FSM之狀態。如下文所描述,可藉由使用可程式化開關將SME 604、605耦接在一起。因此,可藉由程式化SME 604、605以對應於狀態之功能及藉由將SME 604、605選擇性地耦接在一起以對應於FSM中之狀態之間的轉變來在FSM引擎600上實施FSM。
圖6說明實例FSM引擎600之全圖。FSM引擎600包括複數個區塊602,該等區塊可與可程式化區塊間開關603選擇性地耦接在一起。另外,區塊602可選擇性地耦接至用於接收信號(例如,資料)及將資料提供至區塊602的輸入區塊609(例如,資料輸入埠)。區塊602亦可選擇性地耦接至用於將來自區塊602之信號提供至外部器件(例如,另一FSM引擎600)的輸出區塊613(例如,輸出埠)。FSM引擎600亦可包括用於將程式(例如,映像)載入至FSM引擎600上之程式設計介面611。該映像可程式化(例如,設定)SME 604、605之狀態。亦即,該映像可組態SME 604、605以按某一方式來對輸入區塊609處之給定輸入起反應。舉例而言,一SME 604可經設定,以當在輸入區塊609處接收到字元「a」時輸出一高信號。
在一實例中,輸入區塊609、輸出區塊613及/或程式設計介面611可實施為暫存器,以使得至暫存器之寫入將資料提供至各別元件或自各別元件提供資料。因此,來自儲存於對應於程式設計介面611之暫存器中的映像之位元可載入於SME 604、605上。儘管圖6說明區塊602、輸入區塊609、輸出區塊613及區塊間開關603之間的某一數目之導體(例如,電線、跡線),但應理解,在其他實例中,可使用更少或更多之導體。
圖7說明區塊602之實例。區塊602可包括複數個列606,該等列可與可程式化區塊內開關608選擇性地耦接在一起。另外,列606可藉由區塊間開關603而選擇性地耦接至
另一區塊602內之另一列606。在一實例中,包括緩衝器601以控制去往/來自區塊間開關603之信號的時序。列606包括複數個SME 604、605,該複數個SME 604、605組織成本文中被稱作成對群組(GOT)610的元件對。在一實例中,區塊602包含十六(16)個列606。
圖8說明列606之實例。GOT 610可藉由可程式化列內開關612而選擇性地耦接至其他GOT 610及列606內之任何其他元件624。GOT 610亦可藉由區塊內開關608而耦接至其他列606中之其他GOT 610,或藉由區塊間開關603而耦接至其他區塊602中之其他GOT 610。在一實例中,GOT 610具有第一輸入614及第二輸入616以及一輸出618。第一輸入614耦接至GOT 610之第一SME 604,且第二輸入614耦接至GOT 610之第二SME 604。
在一實例中,列606包括第一複數個列互連導體620及第二複數個列互連導體622。在一實例中,GOT 610之輸入614、616可耦接至一或多個列互連導體620、622,且輸出618可耦接至一個列互連導體620、622。在一實例中,第一複數個列互連導體620可耦接至列606內之每一GOT 610之每一SME 604。第二複數個列互連導體622可耦接至列606內之每一GOT 610之一SME 604,但不可耦接至GOT 610之另一SME 604。在一實例中,該第二複數個列互連導體622之前一半可耦接至一列606內之SME 604的前一半(來自每一GOT 610之一SME 604),且該第二複數個列互連導體622之後一半可耦接至一列606內之SME 604的後一半(來
自每一GOT 610之另一SME 604)。該第二複數個列互連導體622與SME 604、605之間的有限連接性在本文中被稱作「對等性」。
在一實例中,列606亦可包括一特殊目的元件624,諸如計數器、可程式化布林邏輯元件、場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)、可程式化處理器(例如,微處理器)及其他元件。另外,在一實例中,該特殊目的元件624在不同列606中為不同的。舉例而言,一區塊602中之列606中之四個可包括布林邏輯作為特殊目的元件624,且一區塊602中之其他八個列606可包括計數器作為特殊目的元件624。
在一實例中,特殊目的元件624包括一計數器(本文中亦被稱作計數器624)。在一實例中,計數器624包含一12位元可程式化遞減計數器。該12位元可程式化計數器624具有一計數輸入、一重設輸入,及零計數輸出。該計數輸入在被確證時使計數器624之值遞減一。該重設輸入在被確證時使計數器624載入來自相關聯之暫存器的初始值。對於該12位元計數器624,可載入高達12位元之數目作為初始值。當計數器624之值遞減至零(0)時,確證該零計數輸出。計數器624亦具有至少兩種模式,脈衝及保持。當將計數器624設定為脈衝模式時,在計數器624遞減至零時的第一時脈循環期間確證零計數輸出,且在接下來之時脈循環處,即使確證了計數輸入,仍不再確證零計數輸出。此狀態繼續,直至藉由重設輸入被確證而重設計數器624為
止。當將計數器624設定為保持模式時,在計數器624遞減至零時之第一時脈循環期間確證零計數輸出,且在確證了計數輸入時保持為經確證的,直至藉由重設輸入被確證而重設計數器624為止。
圖9說明GOT 610之實例。GOT 610包括第一SME 604及第二SME 605,其具有輸入614、616且具有其耦接至OR閘630之輸出626、628。藉由OR閘630將輸出626、628一起邏輯OR以形成GOT 610.之共同輸出618。在一實例中,第一SME 604及第二SME 605展現對等性,其中第一SME 604之輸入614可耦接至列互連導體622中之一些,且第二SME 605之輸入616可耦接至其他列互連導體622。在一實例中,可藉由設定開關640以將第一SME 604之輸出626耦接至第二SME 605之輸入616來將GOT 610內之兩個SME 604、605級聯。
在一實例中,一狀態機元件604、605包含與偵測線634並聯耦接之複數個記憶體胞632,諸如動態隨機存取記憶體(DRAM)中所常用之彼等記憶體胞。一種此類記憶體胞632包含可設定為一資料狀態之記憶體胞,該資料狀態諸如對應於高或低值(例如,1或0)之狀態。記憶體胞632之輸出耦接至偵測線634,且記憶體胞632之輸入基於資料串流線636上之資料而接收信號。在一實例中,解碼資料串流線636上之輸入以選擇該等記憶體胞632中之一者。選定之記憶體胞632將其所儲存之資料狀態作為輸出提供至偵測線634上。舉例而言,在資料輸入埠609處接收到之資料可
提供至一解碼器(未圖示),且該解碼器可選擇該等資料串流線636中之一者。在一實例中,該解碼器可將一ACSII字元轉換成256位元之1。
因此,當一記憶體胞632設定至高值且該資料串流線636上之資料對應於記憶體胞632時,該記憶體胞632輸出一高信號至偵測線634。當資料串流線636上之資料對應於記憶體胞632且記憶體胞632設定至低值時,記憶體胞632輸出一低信號至偵測線634。在偵測線634上的來自記憶體胞632之輸出藉由一偵測電路638來感測。在一實例中,一輸入線614、616上之信號將各別偵測電路638設定至一作用中或非作用中狀態。當設定至非作用中狀態時,偵測電路638在各別輸出626、628上輸出低信號,而不管各別偵測線634上之信號。當設定至作用中狀態時,當偵測到來自各別SME 604、605之記憶體胞634中之一者的高信號時,偵測電路638在各別輸出線626、628上輸出高信號。當在作用中狀態時,當來自各別SME 604、605之所有記憶體胞634的信號為低時,偵測電路638在各別輸出線626、628上輸出低信號。
在一實例中,SME 604、605包括256個記憶體胞632,且每一記憶體胞632耦接至一不同之資料串流線636。因此,SME 604、605可經程式化以當資料串流線636中之選定的一或多者上面具有高信號時輸出一高信號。舉例而言,SME 604可使第一記憶體胞632(例如,位元0)設定為高且使所有其他記憶體胞632(例如,位元1-255)設定為
低。當各別偵測電路638處於作用中狀態時,當對應於位元0之資料串流線636上面具有高信號時,SME 604在輸出626上輸出一高信號。在其他實例中,SME 604可經設定,以當藉由將適當之記憶體胞632設定至高值而使多個資料串流線636中之一者上面具有高信號時輸出一高信號。
在一實例中,可藉由自相關聯之暫存器讀取位元來將記憶體胞632設定至高值或低值。因此,可藉由將由編譯程式產生之映像儲存至暫存器中且將暫存器中之位元載入至相關聯之記憶體胞632中來程式化SME 604。在一實例中,由該編譯程式產生之映像包括高及低(例如,1及0)位元之二進位映像。該映像可藉由將SME 604、605級聯而程式化FSM引擎600以操作為FSM。舉例而言,可藉由將偵測電路638設定至作用中狀態而將第一SME 604設定至作用中狀態。第一SME 604可經設定,以當對應於位元0之資料串流線636上面具有高信號時輸出一高信號。第二SME 605最初可設定至非作用中狀態,但可經設定以在作用中時當對應於位元1之資料串流線636上面具有高信號時輸出一高信號。可藉由設定第一SME 604之輸出626以耦接至第二SME 605之輸入616來將第一SME 604與第二SME 605級聯。因此,當在對應於位元0之資料串流線636上感測到高信號時,第一SME 604在輸出626上輸出一高信號且將第二SME 605之偵測電路638設定至作用中狀態。當在對應於位元1之資料串流線636上感測到高信號時,第二SME 605在輸出628上輸出一高信號以啟動另一SME 605或用於來自FSM引
擎600之輸出。
圖10說明供編譯程式用以將原始程式碼轉換成經組態以程式化平行機之映像的方法1000之實例。方法1000包括:將該原始程式碼剖析成一語法樹(區塊1002);將該語法樹轉換成一自動機(區塊1004);最佳化該自動機(區塊1006);將該自動機轉換成一接線對照表(區塊1008);將該接線對照表置放於硬體上(區塊1010);對該接線對照表進行路徑選擇(區塊1012);及發佈所得映像(區塊1014)。
在一實例中,該編譯程式包括一應用程式設計介面(API),該API允許軟體開發者產生用於在FSM引擎600上實施FSM之映像。該編譯程式提供用以將一組輸入之正規表達式轉換成經組態以程式化FSM引擎600之映像的方法。該編譯程式可藉由用於具有馮諾依曼架構之電腦之指令來實施。此等指令可使該電腦上之處理器實施該編譯程式之功能。舉例而言,該等指令在藉由該處理器執行時可使該處理器對可由該處理器存取之原始程式碼執行如區塊1002、1004、1006、1008、1010、1012及1014中所描述之動作。具有馮諾依曼架構之實例電腦展示於圖15中且在下文描述。
在區塊1002處,剖析原始程式碼以形成一語法樹。如上文關於圖3所解釋,剖析產生該原始程式碼之一般表示。另外,剖析可考量由FSM引擎600支援及不支援之正規表達式。所支援之正規表達式可轉換成適當機器碼實施方案;然而,不受支援之正規表達式可(例如)產生一錯誤,
或轉換成在功能性上接近於不受支援之正規表達式的受支援之機器碼。
在區塊1004處,將該語法樹轉換成自動機。如上文關於圖3所提及,轉換該語法樹將該語法樹轉換成包含複數個狀態之自動機。在一實例中,可部分基於FSM引擎600之硬體來轉換該自動機。
在一實例中,用於自動機之輸入符號包括字母、數字0-9及其他可列印字元之符號。在一實例中,該等輸入符號藉由位元組值0至255(包括在內)來表示。在一實例中,一自動機可表示為有向圖,其中該圖之節點對應於狀態集合。在一實例中,在輸入符號α時自狀態p
至狀態q
之轉變(亦即,δ(p
,α))藉由自節點p
至節點q
之有向連接展示。
在一實例中,該自動機包含通用狀態以及特殊目的狀態。該等通用狀態及特殊目的狀態對應於藉由一目標器件支援之通用元件及特殊目的元件,編譯程式為該目標器件產生機器碼。不同類型之目標器件可支援不同類型之通用元件以及一或多種不同類型之特殊目的元件。通用元件通常可用以實施廣泛範圍之功能,而特殊目的元件通常可用以實施更窄範圍之功能。然而,在一實例中,一特殊目的元件可在其窄範圍之功能內達成(例如)較大效率。因此,一特殊目的元件可用以(例如)減少在目標器件中實施某些功能所需的機器循環或機器資源。在一些實例中,該目標器件僅支援特殊目的元件,其中支援多種不同類型之特殊目的元件。
在編譯程式產生用於FSM引擎600之機器碼的實例中,通用狀態可對應於SME 604、605,且通用狀態因此在本文中被稱作「SME狀態」。此外,當編譯程式產生用於FSM引擎600之機器碼時,特殊目的狀態可對應於計數器624且因此在本文中被稱作「計數器狀態」。在一實例中,自動機中之SME狀態1:1映射至FSM引擎600中之SME(例如,SME 604、605),不映射至SME的自動機之開始狀態除外。計數器624可能或可能不1:1映射至計數器狀態。
在一實例中,在該自動機中可使用輸入符號範圍外之特殊轉變符號。此等特殊轉變符號可用以(例如)使得能夠使用特殊目的元件224。此外,特殊轉變符號可用以提供在不同於輸入符號之其他者上發生的轉變。舉例而言,一特殊轉變符號可指示當啟用第二狀態及第三狀態時將啟用(例如,轉變至)第一狀態。因此,當啟動第二狀態及第三狀態時啟動第一狀態,且至該第一狀態之轉變並非直接取決於輸入符號。顯著地,指示在啟用第二狀態及第三狀態時將啟用第一狀態的特殊轉變符號可用以將(例如)藉由布林邏輯執行之布林AND函數表示為特殊目的元件224。在一實例中,可使用一特殊轉變符號來指示一計數器狀態已達到零,且因此轉變至一下游狀態。
在一實例中,可使用諸如Glushkov之方法的標準技術中之一者來建構一自動機。在一實例中,該自動機可為無ε之均齊自動機(homogeneous automaton)。下文關於圖3、圖4A至圖4C、圖11A、圖11B、圖12、圖13及圖14提供關
於將語法樹轉換成自動機之額外細節。
在區塊1006處,一旦已將該語法樹轉換成一自動機,便最佳化該自動機。該自動機可經最佳化以尤其減少其複雜性及大小。可藉由組合冗餘狀態來最佳化該自動機。
在區塊1008處,將該經最佳化之自動機轉換成一接線對照表。將該自動機轉換成一接線對照表將該自動機之每一狀態映射至FSM引擎600上之一硬體元件(例如,SME 604、605、特殊目的元件624)之一例項。而且,判定該等例項之間的連接以產生該接線對照表。
在區塊1010處,置放該接線對照表以選擇該目標器件的對應於該接線對照表之每一例項的一特定硬體元件(例如,SME 604、605、特殊目的元件624)。在一實例中,置放基於該FSM引擎600之一般輸入及輸出約束而選擇每一特定硬體元件。
在區塊1012處,對經置放之接線對照表進行路徑選擇以判定可程式化開關(例如,區塊間開關603、區塊內開關608及列內開關612)之設定以便將選定硬體元件耦接在一起以達成接線對照表所描述之連接。在一實例中,該等可程式化開關之設定藉由判定FSM引擎600之將用以連接選定之硬體元件的特定導體及該等可程式化開關之設定來判定。路徑選擇可能要考量比區塊1010處之置放多的在硬體元件之間的連接的特定限制。因此,路徑選擇可調整如由全域置放判定的硬體元件中之一些的位置,以便在給出對FSM引擎600之導體的實際限制的情況下進行適當連接。
一旦對接線對照表進行置放及路徑選擇,便可將所置放及經路徑選擇之接線對照表轉換成用於程式化FSM引擎200之複數個位元。該複數個位元在本文中被稱作映像。
在區塊1014處,藉由編譯程式發佈一映像。該映像包含用於程式化FSM引擎600之特定硬體元件及/或可程式化開關的複數個位元。在該映像包含複數個位元(例如,0及1)之實施例中,該映像可被稱作二進位映像。該等位元可載入至FSM引擎600上以程式化SME 604、605、特殊目的元件624及可程式化開關之狀態,以使得經程式化之FSM引擎600實施具有藉由原始程式碼描述之功能性的FSM。置放(區塊1010)及路徑選擇(區塊1012)可將在FSM引擎600中之特定位置處的特定硬體元件映射至自動機中之特定狀態。因此,該映像中之位元可程式化該等特定硬體元件及/或可程式化開關以實施所要功能。在一實例中,可藉由將機器碼儲存至電腦可讀媒體來發佈該映像。在另一實例中,可藉由在顯示器件上顯示該映像來發佈映像。在又一實例中,可藉由將該映像發送至另一器件(諸如,用於將該映像載入至FSM引擎600上之程式設計器件)來發佈映像。在再一實例中,可藉由將該映像載入至平行機(例如,FSM引擎600)上來發佈映像。
在一實例中,可藉由將來自映像之位元值直接載入至SME 604、605及其他硬體元件624或藉由將映像載入至一或多個暫存器中且接著將來自暫存器之位元值寫入至SME 604、605及其他硬體元件624來將映像載入至FSM引擎600
上。在一實例中,FSM引擎600之硬體元件(例如,SME 604、605、其他元件624、可程式化開關603、608、612)經記憶體映射,以使得一程式設計器件及/或電腦可藉由將映像寫入至一或多個記憶體位址而將映像載入至FSM引擎600上。
返回參看圖3及圖4A至圖4C,當將語法樹轉換成自動機時,可控制一展開量化之內分支度及/或外分支度。在一實例中,基於一臨限值來控制內分支度及/或外分支度。舉例而言,該臨限值可基於平行機500之硬體限制,該編譯程式為平行機500準備一映像。舉例而言,若平行機500之通用元件502可具有最大14個之內轉變,則展開之臨限值可設定為小於或等於14個內轉變。在其他實例中,展開之臨限值可經設定,以使得使用最大內轉變之一部分。舉例而言,對於具有最大為14個之內轉變的通用元件502,臨限值可設定為7個內轉變以考量來自並非在展開之表達式中的表達式之內轉變。
展開可公式化為如以下所描述之一般圖問題。圖11A、圖11B、圖12及圖13說明對下文所論述之問題1的四個解決方案之圖,其中內分支度及外分支度為受控的。不同解決方案提供不同之最大長度,其藉由內分支度及外分支度臨限值來判定。因此,取決於所要內分支度及外分支度,可選擇給定解決方案。自動機之所得內分支度及/或外分支度為給下文所論述之兩個問題選擇哪個解決方案的函數。
問題1
(延長具有內分支度及外分支度約束之路徑)。給
定長度n之一有向路徑及兩個無正負號之整數p>1及q>1。將n+1個頂點表示為v0->v1->v2->...->vn。路徑之開始頂點為v0,且結束頂點為vn。給此路徑添加邊,使得不引入迴圈,且對於任何k,1<=k<=n,存在長度為k的自v0至vn之有向路徑;而且,所有頂點之內分支度必須不大於p,且所有頂點之外分支度必須不大於q。
問題2
(最大化具有內分支度及外分支度約束之路徑)。給定一無限有向路徑及兩個無正負號之整數p>1及q>1。將頂點表示為v0->v1->v2->...。給此路徑添加邊且找出一結束頂點,表示為vm,使得對於任何k,1<=k<=m,存在長度為k的自v0至vm之有向路徑;所有頂點之內分支度必須不大於p,且所有頂點之外分支度必須不大於q。該圖中不允許有迴圈。最佳化目標為最大化所得路徑之長度m。
在一實例中,首先解決問題2。若經最大化之路徑長度m不小於n,則可容易地解決問題1。下文參看圖11至圖13描述之四個解決方案得自關於圖4A至圖4C論述之散射及合併型樣。最大長度取決於p及q之值。
在圖項中,可將散射型樣描述為具有q個頂點之路徑的延長。除了包含原始路徑之邊之外,開始頂點v0驅動所有其他頂點。v0之外分支度為q-1,vq-1為0,且其他頂點v1...vq-2為1。v0之內分支度為0,v1為1,且v2...vq-1為2。對於所有k,1<=k<=q-1,存在長度為k的自v0至vq-1之路徑。
●k=1:v0->vq-1
●k=2:v0->vq-2->vq-1
●k=3:v0->vq-3->vq-2->vq-1
●.....
●k=q-1:v0->v1->v2->...->vq-2->vq-1
同樣,在圖項中,合併型樣可描述為具有p個頂點之路徑。除了包含原始路徑之邊之外,結束頂點vp-1藉由所有其他頂點驅動。vp-1之內分支度為p-1,v0為0,且其他頂點v1...vp-2為1。vp-1之外分支度為0,vp-2為1,且v0...vp-3為2。對於所有k,1<=k<=p-1,存在長度為k的自v0至vp-1之路徑。
●k=1:v0->vp-1
●k=2:v0->v1->vp-1
●k=3:v0->v1->v2->vp-1
●.....
●k=q-1:v0->v1->v2->...->vp-2->vp-1
圖11A說明對上述問題2之第一個解決方案。建構方法如下。串接重複p-1次的長度q-1之散射型樣,且接著在末尾再加多一個頂點v(p-1)(q-1)+1。在串接期間將散射型樣之結束及開始頂點合併成一個頂點,表示為接合頂點。連接自所有接合頂點至最後一個頂點v(p-1)(q-1)+1之邊。事實上,將接合頂點連接至v(p-1)(q-1)+1為對接合頂點應用合併型樣。
現在,頂點vk之外分支度為
頂點vk之內分支度為
對於所有k,1<=k<=q,長度為k的自v0至v(p-1)(q-1)+1之路徑為
1. k=1:v0->v(p-1)(q-1)+1
2. k=2:v0->vq-1->v(p-1)(q-1)+1
3. k=3:v0->vq-2->vq-1->v(p-1)(q-1)+1
4. .....
5. k=q:v0->v1->v2->...->vq-1->v(p-1)(q-1)+1
對於所有k,q+1<=k<=2q-1,長度為k的自v0至v(p-1)(q-1)+1之路徑為
6. k=q+1:v0->v1->v2->...->vq-1->v2q-2->v(p-1)(q-1)+1
7. k=q+2:v0->v1->v2->...->vq-1->v2q-1->v2q-2->v(p-1)(q-1)+1
8. k=q+3:v0->v1->v2->...->vq-1->v2q-2->vq-1->v2q-2->v(p-1)(q-1)+1
9. .....
10. k=2q:v0->v1->v2->...->vq-1->vq->vq+1->...->v2q-2->v(p-1)(q-1)+1
對於其他k,2q+1<=k<=(p-1)(q-1)+1,類似地建構路徑。因此,解決方案1之所達成的最大路徑長度等於(p- 1)(q-1)+1
。
圖11B說明類似於上述第一個解決方案的對問題2之第二個解決方案。在此解決方案中,相對於對問題2之第一個解決方案交換合併型樣及散射型樣之使用。基本上,合併型樣用於子路徑,而散射型樣應用於接合頂點。關於內分支度、外分支度,及各種長度之路徑的細節類似於解決方案1。解決方案1之所達成的最大路徑長度等於(p-1)(q-1)+1
。
圖12說明對問題2之第三個解決方案。此解決方案為將合併型樣應用於子路徑及接合頂點。解決方案1之所達成的最大路徑長度等於p(p-1)+1
。
圖13說明對問題2之第四個解決方案。此解決方案為將散射型樣應用於子路徑及接合頂點。解決方案1之所達成的最大路徑長度等於q(q-1)+1
。
圖14說明對問題1之解決方案。自上述四個解決方案獲得問題1之解決方案為直接的。採用最大長度不小於n(路徑長度)之任何解決方案。假定採用解決方案1且n等於(p-2)(q-1)+1。移除索引大於(p-2)(q-1)+1之頂點,且接著將接合頂點重新連接至v(p-2)(q-1)+1。所得圖為問題1之解決方案。相同之技術適用於問題2之所有四個解決方案。
本文中所描述之方法實例可至少部分為機器或電腦實施的。一些實例可包括編碼有指令之電腦可讀媒體或機器可讀媒體,該等指令可操作以組態一電子器件以執行如上述
實例中所描述之方法。此等方法之一實施方案可包括程式碼,諸如微碼、組合語言程式碼、高級語言程式碼或其類似者。此類程式碼可包括用於執行各種方法之電腦可讀指令。程式碼可形成電腦程式產品之部分。另外,程式碼在執行期間或在其他時間時可有形地儲存於一或多個揮發性或非揮發性電腦可讀媒體上。此等電腦可讀媒體可包括(但不限於)硬碟、可抽取式磁碟、可抽取式光碟(例如,壓縮光碟及數位影音光碟)、磁帶盒、記憶體卡或記憶體棒、隨機存取記憶體(RAM)、唯讀記憶體(ROM)及其類似者。
圖15大體上說明具有馮諾依曼架構之電腦1500的實例。在閱讀及理解了本發明之內容之後,一般熟習此項技術者將理解,在一基於電腦之系統中可自電腦可讀媒體載入軟體程式以使之執行以軟體程式定義之功能的方式。一般熟習此項技術者將進一步理解,可使用各種程式設計語言來產生經設計以實施並執行本文所揭示之方法的一或多個軟體程式。可使用物件導向語言(諸如,Java、C++或一或多種其他語言)以物件導向格式來結構化該等程式。或者,可使用程序語言(諸如,組合語言、C等)以程序導向格式來結構化該等程式。軟體組件可使用一般熟習此項技術者所熟知的許多方案中之任一者來通信,諸如應用程式設計介面或過程間通信技術,包括遠端程序呼叫或其他。各個實施例之教示不限於任何特定程式設計語言或環境。
因此,可實現其他實施例。舉例而言,一製造物件(諸
如,電腦、記憶體系統、磁碟或光碟、某其他儲存器件,或任何類型之電子器件或系統)可包括一或多個處理器1502,該一或多個處理器1502耦接至上面儲存有指令1524(例如,電腦程式指令)之一電腦可讀媒體1522,諸如一記憶體(例如,可抽取式儲存媒體,以及包括電、光或電磁導體之任何記憶體),該等指令在藉由該一或多個處理器1502執行時導致執行相對於上述方法所描述之動作中之任一者。
電腦1500可採取具有處理器1502之電腦系統的形式,該處理器1502直接及/或使用匯流排1508來耦接至許多組件。此等組件可包括主記憶體1504、靜態或非揮發性記憶體1506及大容量儲存器件1516。耦接至處理器1502之其他組件可包括輸出器件1510(諸如,視訊顯示器)、輸入器件1512(諸如,鍵盤)及游標控制器件1514(例如,滑鼠)。用以將處理器1502及其他組件耦接至網路1526之網路介面器件1520亦可耦接至匯流排1508。指令1524可利用許多熟知之傳送協定(例如,HTTP)中之任一者經由網路介面器件1520跨越網路1526來進一步傳輸或接收。耦接至匯流排1508之此等元件中之任一者可不存在,單獨地存在,或以複數形式存在,此取決於待實現之特定實施例。
在一實例中,處理器1502、記憶體1504、1506或儲存器件1516中之一或多者可各自包括指令1524,該等指令1524在執行時可使電腦1500執行本文所描述之方法中之任何一或多者。在替代實施例中,電腦1500操作為單獨器件或可
連接(例如,網路連接)至其他器件。在網路環境中,電腦1500可以伺服器-用戶端網路環境中之伺服器或用戶端器件之能力來操作,或操作為對等(或分散式)網路環境中之對等器件。電腦1500可包括個人電腦(PC)、平板PC、機上盒(STB)、個人數位助理(PDA)、蜂巢式電話、web器具、網路路由器、交換機或橋接器,或能夠執行一組指令(順序的或其他)的任何器件,該組指令指定將由該器件採取之行動。另外,雖然僅說明了單一電腦1500,但術語「電腦」亦應被視為包括個別地或共同地執行一組(或多組)指令以執行本文中所論述之方法中之任何一或多者的器件之任何集合。
電腦1500亦可包括用於使用一或多個通信協定(例如,通用串列匯流排(USB)、IEEE 1394等)與周邊器件通信的輸出控制器1528。輸出控制器1528可(例如)將一映像提供至通信地耦接至電腦1500之程式設計器件1530。程式設計器件1530可經組態以程式化一平行機(例如,平行機500、FSM引擎600)。在其他實例中,程式設計器件1530可與電腦1500整合且耦接至匯流排1508或可經由網路介面器件1520或另一器件與電腦1500通信。
雖然電腦可讀媒體1524展示為單一媒體,但術語「電腦可讀媒體」應被視為包括儲存該一或多組指令1524的單一媒體或多個媒體(例如,集中式或分散式資料庫,或相關聯之快取記憶體及伺服器,及或各種儲存媒體,諸如處理器1502暫存器、記憶體1504、1506及儲存器件1516)。術
語「電腦可讀媒體」亦應被視為包括以下任何媒體,其能夠儲存、編碼或載運供電腦執行之一組指令且使該電腦執行本發明之方法中之任何一或多者,或能夠儲存、編碼或載運供此組指令利用或與此組指令相關聯的資料結構。術語「電腦可讀媒體」因此應被視為包括(但不限於)有形媒體,諸如固態記憶體、光媒體及磁性媒體。
提供摘要以遵照需要摘要的37 C.F.R.章節1.72(b),此將允許讀者確定技術揭示內容之性質及要旨。在理解到摘要將不用以限制或解釋申請專利範圍之範疇或涵義的情況下提交摘要。以下申請專利範圍藉此併入詳細描述中,其中每一請求項依賴於其自身而作為一單獨實施例。
實例1包括一種電腦實施方法,其包括:將一量化轉換成一自動機,其中轉換包括展開該量化以控制該自動機之一內分支度;及將該自動機轉換成對應於一目標器件之機器碼。
實例2包括一種電腦可讀媒體,其包括指令,該等指令在由該電腦執行時使該電腦執行包含以下各者之操作:將一量化轉換成一自動機,其中轉換包括展開該量化以控制該自動機之一外分支度;及將該自動機轉換成對應於一目標器件之機器碼。
實例3包括一種電腦,其包含:一記憶體,其上面儲存有軟體;及一處理器,其通信地耦接至該記憶體。該軟體在由該處理器執行時使該處理器:將一量化轉換成一自動
機,其中轉換包括展開該量化以控制該自動機之一內分支度或一外分支度;及將該自動機轉換成對應於一目標器件之機器碼。
實例4包括一種系統,其包含一電腦,該電腦經組態以:將一量化轉換成一自動機,其中轉換包括展開該量化以控制該自動機之一內分支度或一外分支度;及將該自動機轉換成對應於一目標器件之機器碼。
實例5包括一種電腦實施方法,該方法包含:將一量化轉換成一自動機,其中轉換包括展開該量化以控制該自動機之一外分支度;及將該自動機轉換成對應於一目標器件之機器碼。
實例6包括一種電腦可讀媒體,其包括指令,該等指令在由該電腦執行時使該電腦執行包含以下各者之操作:將一量化轉換成一自動機,其中轉換包括展開該量化以控制該自動機之一內分支度;及將該自動機轉換成對應於一目標器件之機器碼。
在實例7中,實例1至6中任一者之標的可視情況地包括將一表達式剖析成包括該量化之一非語言特定表示。
在實例8中,實例1至7中任一者之標的可視情況地包括,其中將一表達式剖析成一非語言特定表示包含將一正規表達式剖析成一語法樹。
在實例9中,實例1至8中任一者之標的可視情況地包括,其中轉換包括,當該量化之一重複表達式為可空時,將該量化展開為具有該重複表達式之一不可空形式的一量
化,該不可空形式可匹配零次。
在實例10中,實例1至9中任一者之標的可視情況地包括,其中將該自動機轉換成機器碼包含將該自動機轉換成經組態以程式化一平行機之一映像。
在實例11中,實例1至10中任一者之標的可視情況地包括發佈該映像。
在實例12中,實例1至11中任一者之標的可視情況地包括,其中展開該量化以控制該自動機之一內分支度包含根據一內分支度限制來展開該量化。
在實例13中,實例1至12中任一者之標的可視情況地包括,其中該內分支度限制包括對至該自動機之一狀態的轉變之數目的一限制。
在實例14中,實例1至13中任一者之標的可視情況地包括,其中展開該量化以控制該自動機之一內分支度包含基於該目標器件之一內分支度約束來進行展開。
在實例15中,實例1至14中任一者之標的可視情況地包括,其中該量化為一正規表達式。
在實例16中,實例1至15中任一者之標的可視情況地包括,其中展開該量化以控制該自動機之一內分支度包含基於一臨限值來展開該量化以控制該自動機之一內分支度。
在實例17中,實例1至16中任一者之標的可視情況地包括,其中該臨限值係基於該平行機之一硬體限制。
在實例18中,實例1至17中任一者之標的可視情況地包括,其中展開包括限制該自動機之每一狀態的外轉變使之
低於一臨限值數目。
在實例19中,實例1至18中任一者之標的可視情況地包括,其中展開包括最小化該自動機之每一狀態的外轉變。
在實例20中,實例1至19中任一者之標的可視情況地包括,其中轉換包括,當該量化之一重複表達式為可空時,將該量化展開為具有該重複表達式之一不可空形式的一量化,該不可空形式可匹配零次。
在實例21中,實例1至20中任一者之標的可視情況地包括,其中轉換包括,當該量化可與單一數目個迴圈匹配時,展開該量化以形成一自動機,該自動機具有表示數目等於該單一數目的連續地連接之表達式的狀態,其中該等表達式對應於該量化之一重複表達式。
在實例22中,實例1至21中任一者之標的可視情況地包括,其中當該量化可與多個數目個迴圈匹配時,該多個數目個迴圈包括第一數目n1個迴圈及第二數目n2個迴圈,展開該量化包括將該量化分裂成可與n1-1數目個迴圈匹配的一第一量化及可與一個至n2-n1+1數目個迴圈匹配的一第二量化。
在實例23中,實例1至22中任一者之標的可視情況地包括將該映像載入至一平行機上。
在實例24中,實例1至23中任一者之標的可視情況地包括將該映像儲存於一電腦可讀媒體上。
在實例25中,實例1至24中任一者之標的可視情況地包括藉由針對該自動機之外轉變來權衡內轉變來控制內分支
度及外分支度。
在實例26中,實例1至25中任一者之標的可視情況地包括,其中限制每一狀態之該等內轉變使之在展開時低於一臨限值數目。
在實例27中,實例1至26中任一者之標的可視情況地包括,其中限制該內分支度使之與該外分支度成一比率。
在實例28中,實例1至27中任一者之標的可視情況地包括,其中限制該內分支度使之與該外分支度成該比率直至達到該自動機之一狀態的內轉變之一臨限值為止。
在實例29中,實例1至28中任一者之標的可視情況地包括,其中該機器碼包含經組態以程式化一平行機之一映像,且進一步包含一通信地耦接至該電腦且經組態以將該映像載入至一平行機上的器件。
在實例30中,實例1至29中任一者之標的可視情況地包括,其中展開該量化以控制該自動機之一內分支度包含根據一內分支度限制來展開該量化。
在實例31中,實例1至30中任一者之標的可視情況地包括,其中該內分支度限制包括對至該自動機之一狀態的轉變之數目的一限制。
在實例32中,實例1至31中任一者之標的可視情況地包括,其中展開該量化以控制該自動機之一內分支度包含基於該目標器件之一內分支度約束來進行展開。
在實例33中,實例1至32中任一者之標的可視情況地包括,其中展開該量化以控制該自動機之一內分支度包含基
於一臨限值來展開該量化以控制該自動機之一內分支度。
在實例34中,實例1至33中任一者之標的可視情況地包括,其中該臨限值係基於該平行機之一硬體限制。
在實例35中,實例1至34中任一者之標的可視情況地包括將一正規表達式剖析成一語法樹。
在實例36中,實例1至35中任一者之標的可視情況地包括,其中將該自動機轉換成機器碼包含將該自動機轉換成經組態以程式化一平行機之一映像。
在實例37中,實例1至36中任一者之標的可視情況地包括發佈該映像。
在實例38中,實例1至37中任一者之標的可視情況地包括,其中展開該量化以控制該自動機之一外分支度包含根據一外分支度限制來展開該量化。
在實例39中,實例1至38中任一者之標的可視情況地包括,其中該外分支度限制包括對離開該自動機之一狀態的轉變之數目的一限制。
在實例40中,實例1至39中任一者之標的可視情況地包括,其中展開該量化以控制該自動機之一外分支度包含基於該目標器件之一外分支度約束來進行展開。
在實例41中,實例1至40中任一者之標的可視情況地包括,其中展開該量化以控制該自動機之一外分支度包含基於一臨限值來展開該量化以控制該自動機之一外分支度。
在實例42中,實例1至41中任一者之標的可視情況地包括,其中該臨限值係基於該平行機之一硬體限制。
在實例43中,實例1至42中任一者之標的可視情況地包括,其中展開包括限制該自動機之每一狀態的內轉變使之低於一臨限值數目。
在實例44中,實例1至43中任一者之標的可視情況地包括,其中展開包括最小化該自動機之每一狀態的內轉變。
在實例45中,實例1至44中任一者之標的可視情況地包括,其中轉換包括,當該量化之一重複表達式為可空時,將該量化展開為具有該重複表達式之一不可空形式的一量化,該不可空形式可匹配零次。
在實例46中,實例1至45中任一者之標的可視情況地包括,其中轉換包括,當該量化可與單一數目個迴圈匹配時,展開該量化以形成一自動機,該自動機具有表示數目等於該單一數目的連續地連接之表達式的狀態,其中該等表達式對應於該量化之一重複表達式。
在實例47中,實例1至46中任一者之標的可視情況地包括,其中當該量化可與多個數目個迴圈匹配時,該多個數目個迴圈包括第一數目n1個迴圈及第二數目n2個迴圈,展開該量化包括將該量化分裂成可與n1-1數目個迴圈匹配的一第一量化及可與一個至n2-n1+1數目個迴圈匹配的一第二量化。
實例48包括藉由使用實例1至47中任一者之標的產生的一映像來程式化的一平行機。
100‧‧‧流程圖
102‧‧‧剖析
104‧‧‧轉換
106‧‧‧最佳化
108‧‧‧轉換成機器碼
110‧‧‧發佈
200‧‧‧自動機
202‧‧‧初始狀態
204‧‧‧最終狀態
206‧‧‧狀態
208‧‧‧狀態
210‧‧‧狀態
212‧‧‧最終狀態
300‧‧‧方法
302‧‧‧將量化轉換成不可空形式
304‧‧‧判定是否展開量化
306‧‧‧展開匹配單一數目個迴圈之量化
308‧‧‧展開匹配多個數目個迴圈之量化
400‧‧‧自動機
402‧‧‧驅動狀態
404‧‧‧展開狀態
405‧‧‧展開狀態
406‧‧‧展開狀態
407‧‧‧展開狀態
408‧‧‧展開狀態
410‧‧‧自動機
412‧‧‧自動機
500‧‧‧平行機
502‧‧‧通用元件
504‧‧‧輸入
506‧‧‧輸出
508‧‧‧可程式化開關
510‧‧‧資料輸入埠
511‧‧‧程式設計介面
512‧‧‧特殊目的元件
514‧‧‧輸出埠
600‧‧‧FSM引擎
601‧‧‧緩衝器
602‧‧‧區塊
603‧‧‧區塊間開關
604‧‧‧第一SME
605‧‧‧第二SME
606‧‧‧列
608‧‧‧區塊內開關
609‧‧‧資料輸入埠
610‧‧‧成對群組
611‧‧‧程式設計介面
613‧‧‧輸出區塊
614‧‧‧第一輸入
616‧‧‧第二輸入
618‧‧‧輸出
620‧‧‧列互連導體
622‧‧‧列互連導體
624‧‧‧特殊目的元件
626‧‧‧輸出
628‧‧‧輸出
630‧‧‧OR閘
632‧‧‧記憶體胞
634‧‧‧偵測線
636‧‧‧資料串流線
638‧‧‧偵測電路
640‧‧‧開關
1000‧‧‧方法
1002‧‧‧剖析
1004‧‧‧轉換
1006‧‧‧最佳化
1008‧‧‧轉換成接線對照表
1010‧‧‧置放
1012‧‧‧路徑選擇
1014‧‧‧發佈
v0‧‧‧頂點
v1‧‧‧頂點
v2‧‧‧頂點
v3‧‧‧頂點
v4‧‧‧頂點
vp‧‧‧頂點
vp+1‧‧‧頂點
vp+2‧‧‧頂點
vp+3‧‧‧頂點
vp(p-2)‧‧‧頂點
vp(p-2)+1‧‧‧頂點
vp(p-2)+2‧‧‧頂點
vp(p-1)‧‧‧頂點
vp(p-1)+1‧‧‧頂點
v2p-1‧‧‧頂點
v2p‧‧‧頂點
v(p-1)(q-2)+1‧‧‧頂點
v(p-1)(q-2)+2‧‧‧頂點
v(p-1)(q-1)+1‧‧‧頂點
vq-1‧‧‧頂點
vq‧‧‧頂點
vq+1‧‧‧頂點
vq+2‧‧‧頂點
vq+3‧‧‧頂點
vq+4‧‧‧頂點
v2q+1‧‧‧頂點
v2q-2‧‧‧頂點
v(p-2)(q-1)‧‧‧頂點
v(p-2)(q-1)+1‧‧‧頂點
v(p-2)(q-1)+2‧‧‧頂點
v(p-1)(q-1)‧‧‧頂點
v(p-1)(q-1)+1‧‧‧頂點
v(q-2)q+1‧‧‧頂點
v(q-2)q+2‧‧‧頂點
v(q-2)q+3‧‧‧頂點
v(q-1)q+1‧‧‧頂點
v2q-2‧‧‧頂點
1500‧‧‧電腦
1502‧‧‧處理器
1504‧‧‧記憶體
1506‧‧‧記憶體
1508‧‧‧匯流排
1510‧‧‧輸出器件
1512‧‧‧輸入器件
1514‧‧‧游標控制器件
1516‧‧‧儲存器件
1520‧‧‧網路介面器件
1522‧‧‧電腦可讀媒體
1524‧‧‧指令
1526‧‧‧網路
1528‧‧‧輸出控制器
1530‧‧‧程式設計器件
圖1說明根據本發明之各種實施例的用於可使用自動機
將原始程式碼轉換成機器碼之編譯程式的流程圖之實例。
圖2說明根據本發明之各種實施例的由編譯程式所使用之自動機的實例。
圖3說明根據本發明之各種實施例的用於展開一量化之方法的實例。
圖4A至圖4C說明根據本發明之各種實施例的用於展開量化之實例自動機。
圖5說明根據本發明之各種實施例的平行機之實例。
圖6說明根據本發明之各種實施例的實施為有限狀態機引擎的圖5之平行機的實例。
圖7說明根據本發明之各種實施例的圖6之有限狀態機引擎的區塊之實例。
圖8說明根據本發明之各種實施例的圖7之區塊之列的實例。
圖9說明根據本發明之各種實施例的圖8之列之成對群組的實例。
圖10說明根據本發明之各種實施例的供編譯程式用以將正規表達式轉換成經組態以程式化圖5之平行機的映像之方法的實例。
圖11A及圖11B說明根據本發明之各種實施例的對應於量化之自動機的實例圖。
圖12說明根據本發明之各種實施例的對應於量化之自動機的另一實例圖。
圖13說明根據本發明之各種實施例的對應於量化之自動
機的又一實例圖。
圖14說明根據本發明之各種實施例的對應於量化之自動機的再一實例圖。
圖15說明根據本發明之各種實施例的電腦之實例。
400‧‧‧自動機
402‧‧‧驅動狀態
404‧‧‧展開狀態
405‧‧‧展開狀態
406‧‧‧展開狀態
407‧‧‧展開狀態
408‧‧‧展開狀態
Claims (47)
- 一種用於一編譯程式之電腦實施方法,其包含:將一量化轉換成一自動機,其中轉換包括展開該量化以控制該自動機之一內分支度;及將該自動機轉換成對應於一目標器件之機器碼。
- 如請求項1之電腦實施方法,其進一步包含:將一表達式剖析成包括該量化之一非語言特定表示。
- 如請求項2之電腦實施方法,其中將一表達式剖析成一非語言特定表示包含:將一正規表達式剖析成一語法樹。
- 如請求項1之電腦實施方法,其中轉換包括,當該量化之一重複表達式為可空時,將該量化展開為具有該重複表達式之一不可空形式的一量化,該不可空形式可匹配零次。
- 如請求項1之電腦實施方法,其中將該自動機轉換成機器碼包含:將該自動機轉換成經組態以程式化一平行機之一映像。
- 如請求項5之電腦實施方法,其進一步包含:發佈該映像。
- 如請求項1之電腦實施方法,其中展開該量化以控制該自動機之一內分支度包含:根據一內分支度限制來展開該量化。
- 如請求項7之電腦實施方法,其中該內分支度限制包括對至該自動機之一狀態的轉變之數目的一限制。
- 如請求項1之電腦實施方法,其中展開該量化以控制該自動機之一內分支度包含:基於該目標器件之一內分支度約束來進行展開。
- 如請求項1之電腦實施方法,其中該量化為一正規表達式。
- 如請求項1之電腦實施方法,其中展開該量化以控制該自動機之一內分支度包含:基於一臨限值來展開該量化以控制該自動機之一內分支度。
- 如請求項11之電腦實施方法,其中該臨限值係基於該平行機之一硬體限制。
- 一種用於一編譯程式之電腦可讀媒體,該電腦可讀媒體非暫態傳遞信號(transitory propagating signal),該電腦可讀媒體包括指令,該等指令在由該電腦執行時使該電腦執行包含以下各者之操作:將一量化轉換成一自動機,其中轉換包括展開該量化以控制該自動機之一外分支度;及將該自動機轉換成對應於一目標器件之機器碼。
- 如請求項13之電腦可讀媒體,其中展開包括限制該自動機之每一狀態的外轉變使之低於一臨限值數目。
- 如請求項13之電腦可讀媒體,其中展開包括最小化該自動機之每一狀態的外轉變。
- 如請求項13之電腦可讀媒體,其中轉換包括,當該量化之一重複表達式為可空時,將該量化展開為具有該重複表達式之一不可空形式的一量化,該不可空形式可匹配 零次。
- 如請求項13之電腦可讀媒體,其中轉換包括:當該量化可與單一數目個迴圈匹配時,展開該量化以形成一自動機,該自動機具有表示數目等於該單一數目的連續地連接之表達式的狀態,其中該等表達式對應於該量化之一重複表達式。
- 如請求項13之電腦可讀媒體,其中當該量化可與多個數目個迴圈匹配時,該多個數目個迴圈包括第一數目n1個迴圈及第二數目n2個迴圈,展開該量化包括:將該量化分裂成可與n1-1數目個迴圈匹配的一第一量化及可與一個至n2-n1+1數目個迴圈匹配的一第二量化。
- 如請求項13之電腦可讀媒體,其中該等指令使該電腦執行包含以下各者之操作:將該映像載入至一平行機上。
- 如請求項13之電腦可讀媒體,其中該等指令使該電腦執行包含以下各者之操作:將該映像儲存於一電腦可讀媒體上。
- 一種電腦,其包含:一記憶體,其上面儲存有軟體;及一處理器,其通信地耦接至該記憶體,其中該軟體在由該處理器執行時使該處理器:將一量化轉換成一自動機,其中轉換包括展開該量化以控制該自動機之一內分支度或一外分支度;及將該自動機轉換成對應於一目標器件之機器碼。
- 如請求項21之電腦,其中該軟體使該處理器藉由針對該自動機中之外轉變來權衡內轉變來控制該內分支度及該外分支度。
- 如請求項22之電腦,其中限制每一狀態之該等內轉變使之在展開時低於一臨限值數目。
- 如請求項22之電腦,其中限制該內分支度使之與該外分支度成一比率。
- 如請求項24之電腦,其中限制該內分支度使之與該外分支度成該比率,直至達到該自動機之一狀態的內轉變之一臨限值為止。
- 一種用於一編譯程式之系統,其包含:一電腦,其經組態以:將一量化轉換成一自動機,其中轉換包括展開該量化以控制該自動機之一內分支度或一外分支度;及將該自動機轉換成對應於一目標器件之機器碼,其中該機器碼包含經組態以程式化一平行機之一映像;及通信地耦接至該電腦且經組態以將該映像載入至一平行機上的一器件。
- 如請求項26之系統,其中展開該量化以控制該自動機之一內分支度包含:根據一內分支度限制來展開該量化。
- 如請求項27之系統,其中該內分支度限制包括對至該自動機之一狀態的轉變之數目的一限制。
- 如請求項26之系統,其中展開該量化以控制該自動機之一內分支度包含:基於該目標器件之一內分支度約束來 進行展開。
- 如請求項26之系統,其中展開該量化以控制該自動機之一內分支度包含:基於一臨限值來展開該量化以控制該自動機之一內分支度。
- 如請求項30之系統,其中該臨限值係基於該平行機之一硬體限制。
- 一種用於一編譯程式之平行機,該平行機藉由用請求項1之方法產生之一映像程式化。
- 一種用於一編譯程式之電腦實施方法,其包含:將一量化轉換成一自動機,其中轉換包括展開該量化以控制該自動機之一外分支度;及將該自動機轉換成對應於一目標器件之機器碼。
- 如請求項33之電腦實施方法,其進一步包含:將一正規表達式剖析成一語法樹。
- 如請求項33之電腦實施方法,其中將該自動機轉換成機器碼包含:將該自動機轉換成經組態以程式化一平行機之一映像。
- 如請求項35之電腦實施方法,其進一步包含:發佈該映像。
- 如請求項33之電腦實施方法,其中展開該量化以控制該自動機之一外分支度包含:根據一外分支度限制來展開該量化。
- 如請求項37之電腦實施方法,其中該外分支度限制包括:對離開該自動機之一狀態的轉變之數目的一限制。
- 如請求項33之電腦實施方法,其中展開該量化以控制該自動機之一外分支度包含:基於該目標器件之一外分支度約束來進行展開。
- 如請求項33之電腦實施方法,其中展開該量化以控制該自動機之一外分支度包含:基於一臨限值來展開該量化以控制該自動機之一外分支度。
- 如請求項40之電腦實施方法,其中該臨限值係基於該平行機之一硬體限制。
- 一種用於一編譯程式之電腦可讀媒體,該電腦可讀媒體非暫態傳遞信號,該電腦可讀媒體包括指令,該等指令在由該電腦執行時使該電腦執行包含以下各者之操作:將一量化轉換成一自動機,其中轉換包括展開該量化以控制該自動機之一內分支度;及將該自動機轉換成對應於一目標器件之機器碼。
- 如請求項42之電腦可讀媒體,其中展開包括限制該自動機之每一狀態的內轉變使之低於一臨限值數目。
- 如請求項42之電腦可讀媒體,其中展開包括最小化該自動機之每一狀態的內轉變。
- 如請求項42之電腦可讀媒體,其中轉換包括,當該量化之一重複表達式為可空時,將該量化展開為具有該重複表達式之一不可空形式的一量化,該不可空形式可匹配零次。
- 如請求項42之電腦可讀媒體,其中轉換包括:當該量化可與單一數目個迴圈匹配時,展開該量化以 形成一自動機,該自動機具有表示數目等於該單一數目的連續地連接之表達式的狀態,其中該等表達式對應於該量化之一重複表達式。
- 如請求項42之電腦可讀媒體,其中當該量化可與多個數目個迴圈匹配時,該多個數目個迴圈包括第一數目n1個迴圈及第二數目n2個迴圈,展開該量化包括:將該量化分裂成可與n1-1數目個迴圈匹配的一第一量化及可與一個至n2-n1+1數目個迴圈匹配的一第二量化。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161436051P | 2011-01-25 | 2011-01-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201246071A TW201246071A (en) | 2012-11-16 |
TWI502501B true TWI502501B (zh) | 2015-10-01 |
Family
ID=46545131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101102988A TWI502501B (zh) | 2011-01-25 | 2012-01-30 | 用以控制自動機之內分支度及/或外分支度之展開量化 |
Country Status (7)
Country | Link |
---|---|
US (2) | US8726256B2 (zh) |
EP (1) | EP2668577B1 (zh) |
JP (1) | JP5857072B2 (zh) |
KR (1) | KR101607736B1 (zh) |
CN (1) | CN103443767B (zh) |
TW (1) | TWI502501B (zh) |
WO (1) | WO2012103148A2 (zh) |
Families Citing this family (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8209521B2 (en) | 2008-10-18 | 2012-06-26 | Micron Technology, Inc. | Methods of indirect register access including automatic modification of a directly accessible address register |
US8938590B2 (en) | 2008-10-18 | 2015-01-20 | Micron Technology, Inc. | Indirect register access method and system |
US7970964B2 (en) | 2008-11-05 | 2011-06-28 | Micron Technology, Inc. | Methods and systems to accomplish variable width data input |
US7917684B2 (en) | 2008-11-05 | 2011-03-29 | Micron Technology, Inc. | Bus translator |
US8402188B2 (en) | 2008-11-10 | 2013-03-19 | Micron Technology, Inc. | Methods and systems for devices with a self-selecting bus decoder |
US9164945B2 (en) | 2008-12-01 | 2015-10-20 | Micron Technology, Inc. | Devices, systems, and methods to synchronize parallel processing of a single data stream |
US20100138575A1 (en) | 2008-12-01 | 2010-06-03 | Micron Technology, Inc. | Devices, systems, and methods to synchronize simultaneous dma parallel processing of a single data stream by multiple devices |
US9348784B2 (en) | 2008-12-01 | 2016-05-24 | Micron Technology, Inc. | Systems and methods for managing endian mode of a device |
US8140780B2 (en) | 2008-12-31 | 2012-03-20 | Micron Technology, Inc. | Systems, methods, and devices for configuring a device |
US20100174887A1 (en) | 2009-01-07 | 2010-07-08 | Micron Technology Inc. | Buses for Pattern-Recognition Processors |
US8281395B2 (en) | 2009-01-07 | 2012-10-02 | Micron Technology, Inc. | Pattern-recognition processor with matching-data reporting module |
US8214672B2 (en) | 2009-01-07 | 2012-07-03 | Micron Technology, Inc. | Method and systems for power consumption management of a pattern-recognition processor |
US9836555B2 (en) | 2009-06-26 | 2017-12-05 | Micron Technology, Inc. | Methods and devices for saving and/or restoring a state of a pattern-recognition processor |
US9501705B2 (en) * | 2009-12-15 | 2016-11-22 | Micron Technology, Inc. | Methods and apparatuses for reducing power consumption in a pattern recognition processor |
US9323994B2 (en) | 2009-12-15 | 2016-04-26 | Micron Technology, Inc. | Multi-level hierarchical routing matrices for pattern-recognition processors |
US8766666B2 (en) * | 2010-06-10 | 2014-07-01 | Micron Technology, Inc. | Programmable device, hierarchical parallel machines, and methods for providing state information |
US8601013B2 (en) | 2010-06-10 | 2013-12-03 | Micron Technology, Inc. | Analyzing data using a hierarchical structure |
KR101640295B1 (ko) | 2011-01-25 | 2016-07-15 | 마이크론 테크놀로지, 인크. | 정규 표현을 컴파일하기 위한 방법 및 장치 |
JP5857072B2 (ja) * | 2011-01-25 | 2016-02-10 | マイクロン テクノロジー, インク. | オートマトンの入次数および/または出次数を制御するための量化子の展開 |
US8843911B2 (en) | 2011-01-25 | 2014-09-23 | Micron Technology, Inc. | Utilizing special purpose elements to implement a FSM |
US8788991B2 (en) | 2011-01-25 | 2014-07-22 | Micron Technology, Inc. | State grouping for element utilization |
US8593175B2 (en) | 2011-12-15 | 2013-11-26 | Micron Technology, Inc. | Boolean logic in a state machine lattice |
US8648621B2 (en) | 2011-12-15 | 2014-02-11 | Micron Technology, Inc. | Counter operation in a state machine lattice |
US9443156B2 (en) | 2011-12-15 | 2016-09-13 | Micron Technology, Inc. | Methods and systems for data analysis in a state machine |
US8680888B2 (en) | 2011-12-15 | 2014-03-25 | Micron Technologies, Inc. | Methods and systems for routing in a state machine |
US8782624B2 (en) * | 2011-12-15 | 2014-07-15 | Micron Technology, Inc. | Methods and systems for detection in a state machine |
US20130275709A1 (en) | 2012-04-12 | 2013-10-17 | Micron Technology, Inc. | Methods for reading data from a storage buffer including delaying activation of a column select |
US9304968B2 (en) | 2012-07-18 | 2016-04-05 | Micron Technology, Inc. | Methods and devices for programming a state machine engine |
US9235798B2 (en) | 2012-07-18 | 2016-01-12 | Micron Technology, Inc. | Methods and systems for handling data received by a state machine engine |
US9389841B2 (en) | 2012-07-18 | 2016-07-12 | Micron Technology, Inc. | Methods and systems for using state vector data in a state machine engine |
US9524248B2 (en) | 2012-07-18 | 2016-12-20 | Micron Technology, Inc. | Memory management for a hierarchical memory system |
US9075428B2 (en) | 2012-08-31 | 2015-07-07 | Micron Technology, Inc. | Results generation for state machine engines |
US9501131B2 (en) | 2012-08-31 | 2016-11-22 | Micron Technology, Inc. | Methods and systems for power management in a pattern recognition processing system |
US9063532B2 (en) | 2012-08-31 | 2015-06-23 | Micron Technology, Inc. | Instruction insertion in state machine engines |
US9268881B2 (en) | 2012-10-19 | 2016-02-23 | Intel Corporation | Child state pre-fetch in NFAs |
US9747194B2 (en) * | 2012-10-30 | 2017-08-29 | Ebay Inc. | Systems and methods to maintain consistency between software specification and code |
US9117170B2 (en) | 2012-11-19 | 2015-08-25 | Intel Corporation | Complex NFA state matching method that matches input symbols against character classes (CCLs), and compares sequence CCLs in parallel |
US9665664B2 (en) | 2012-11-26 | 2017-05-30 | Intel Corporation | DFA-NFA hybrid |
US9304768B2 (en) | 2012-12-18 | 2016-04-05 | Intel Corporation | Cache prefetch for deterministic finite automaton instructions |
US9251440B2 (en) * | 2012-12-18 | 2016-02-02 | Intel Corporation | Multiple step non-deterministic finite automaton matching |
US9268570B2 (en) | 2013-01-23 | 2016-02-23 | Intel Corporation | DFA compression and execution |
US9703574B2 (en) | 2013-03-15 | 2017-07-11 | Micron Technology, Inc. | Overflow detection and correction in state machine engines |
US9448965B2 (en) | 2013-03-15 | 2016-09-20 | Micron Technology, Inc. | Receiving data streams in parallel and providing a first portion of data to a first state machine engine and a second portion to a second state machine |
US9489215B2 (en) * | 2013-08-01 | 2016-11-08 | Dell Software Inc. | Managing an expression-based DFA construction process |
US10229104B2 (en) | 2013-08-01 | 2019-03-12 | Sonicwall Inc. | Efficient DFA generation for non-matching characters and character classes in regular expressions |
US11366675B2 (en) | 2014-12-30 | 2022-06-21 | Micron Technology, Inc. | Systems and devices for accessing a state machine |
WO2016109570A1 (en) | 2014-12-30 | 2016-07-07 | Micron Technology, Inc | Systems and devices for accessing a state machine |
WO2016109571A1 (en) | 2014-12-30 | 2016-07-07 | Micron Technology, Inc | Devices for time division multiplexing of state machine engine signals |
US10691964B2 (en) | 2015-10-06 | 2020-06-23 | Micron Technology, Inc. | Methods and systems for event reporting |
US10977309B2 (en) | 2015-10-06 | 2021-04-13 | Micron Technology, Inc. | Methods and systems for creating networks |
US10846103B2 (en) | 2015-10-06 | 2020-11-24 | Micron Technology, Inc. | Methods and systems for representing processing resources |
US10146555B2 (en) | 2016-07-21 | 2018-12-04 | Micron Technology, Inc. | Adaptive routing to avoid non-repairable memory and logic defects on automata processor |
US10268602B2 (en) | 2016-09-29 | 2019-04-23 | Micron Technology, Inc. | System and method for individual addressing |
US10019311B2 (en) | 2016-09-29 | 2018-07-10 | Micron Technology, Inc. | Validation of a symbol response memory |
US10592450B2 (en) | 2016-10-20 | 2020-03-17 | Micron Technology, Inc. | Custom compute cores in integrated circuit devices |
US10929764B2 (en) | 2016-10-20 | 2021-02-23 | Micron Technology, Inc. | Boolean satisfiability |
US10481881B2 (en) * | 2017-06-22 | 2019-11-19 | Archeo Futurus, Inc. | Mapping a computer code to wires and gates |
US9996328B1 (en) * | 2017-06-22 | 2018-06-12 | Archeo Futurus, Inc. | Compiling and optimizing a computer code by minimizing a number of states in a finite machine corresponding to the computer code |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080140600A1 (en) * | 2006-12-08 | 2008-06-12 | Pandya Ashish A | Compiler for Programmable Intelligent Search Memory |
US20100131935A1 (en) * | 2007-07-30 | 2010-05-27 | Huawei Technologies Co., Ltd. | System and method for compiling and matching regular expressions |
TW201246081A (en) * | 2011-01-25 | 2012-11-16 | Micron Technology Inc | Method and apparatus for compiling regular expressions |
Family Cites Families (78)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5081608A (en) * | 1988-04-18 | 1992-01-14 | Matsushita Electric Industrial Co., Ltd. | Apparatus for processing record-structured data by inserting replacement data of arbitrary length into selected data fields |
JP3130326B2 (ja) | 1991-03-20 | 2001-01-31 | 富士通株式会社 | 階層ネットワーク構成演算素子 |
US5586266A (en) | 1993-10-15 | 1996-12-17 | International Business Machines Corporation | System and method for adaptive, active monitoring of a serial data stream having a characteristic pattern |
US5537580A (en) | 1994-12-21 | 1996-07-16 | Vlsi Technology, Inc. | Integrated circuit fabrication using state machine extraction from behavioral hardware description language |
US5831853A (en) | 1995-06-07 | 1998-11-03 | Xerox Corporation | Automatic construction of digital controllers/device drivers for electro-mechanical systems using component models |
US5729678A (en) * | 1996-03-04 | 1998-03-17 | Ag Communication Systems Corporation | Bus monitor system |
WO1998021651A1 (en) | 1996-11-14 | 1998-05-22 | Alcatel Usa Sourcing, L.P. | Generic software state machine and method of constructing dynamic objects for an application program |
US5966534A (en) | 1997-06-27 | 1999-10-12 | Cooke; Laurence H. | Method for compiling high level programming languages into an integrated processor with reconfigurable logic |
US6748588B1 (en) | 1999-03-31 | 2004-06-08 | Microsoft Corporation | One-pass greedy-pattern-matching finite-state-machine code generation |
US6262594B1 (en) | 1999-11-05 | 2001-07-17 | Ati International, Srl | Apparatus and method for configurable use of groups of pads of a system on chip |
US6564336B1 (en) * | 1999-12-29 | 2003-05-13 | General Electric Company | Fault tolerant database for picture archiving and communication systems |
US6507903B1 (en) | 2000-06-20 | 2003-01-14 | International Business Machines Corporation | High performance non-blocking parallel storage manager for parallel software executing on coordinates |
US6832378B1 (en) | 2000-06-20 | 2004-12-14 | International Business Machines Corporation | Parallel software processing system |
US7140018B1 (en) | 2000-06-20 | 2006-11-21 | International Business Machines Corporation | Method of using a distinct flow of computational control as a reusable abstract data object |
GB2367917A (en) | 2000-10-12 | 2002-04-17 | Qas Systems Ltd | Retrieving data representing a postal address from a database of postal addresses using a trie structure |
US7020850B2 (en) | 2001-05-02 | 2006-03-28 | The Mathworks, Inc. | Event-based temporal logic |
JP4846924B2 (ja) | 2001-05-31 | 2011-12-28 | キヤノン株式会社 | パターン認識装置 |
US7546354B1 (en) | 2001-07-06 | 2009-06-09 | Emc Corporation | Dynamic network based storage with high availability |
JP2003044184A (ja) | 2001-08-01 | 2003-02-14 | Canon Inc | データ処理装置及び電力制御方法 |
US7170891B2 (en) | 2001-08-30 | 2007-01-30 | Messenger Terabit Networks, Inc. | High speed data classification system |
US20030066050A1 (en) | 2001-09-26 | 2003-04-03 | Wang Douglas W. | Method and system for programming devices using finite state machine descriptions |
US6957371B2 (en) | 2001-12-04 | 2005-10-18 | Intellitech Corporation | Method and apparatus for embedded built-in self-test (BIST) of electronic circuits and systems |
US6785872B2 (en) | 2002-01-22 | 2004-08-31 | Hewlett-Packard Development Company, L.P. | Algorithm-to-hardware system and method for creating a digital circuit |
US20040127207A1 (en) | 2002-09-25 | 2004-07-01 | Interdigital Technology Corporation | Programmable radio interface |
US7124392B2 (en) | 2002-09-27 | 2006-10-17 | Stmicroelectronics, Pvt. Ltd. | Mapping of programmable logic devices |
US7171561B2 (en) | 2002-10-17 | 2007-01-30 | The United States Of America As Represented By The Secretary Of The Air Force | Method and apparatus for detecting and extracting fileprints |
CN1894559A (zh) * | 2003-03-17 | 2007-01-10 | 索尼电子有限公司 | 执行使命引擎的方法和装置 |
JP4620944B2 (ja) | 2003-10-16 | 2011-01-26 | キヤノン株式会社 | 積和演算回路及びその方法 |
US7487542B2 (en) | 2004-01-14 | 2009-02-03 | International Business Machines Corporation | Intrusion detection using a network processor and a parallel pattern detection engine |
US20050268258A1 (en) | 2004-06-01 | 2005-12-01 | Tera Systems, Inc. | Rule-based design consultant and method for integrated circuit design |
US20050283743A1 (en) * | 2004-06-07 | 2005-12-22 | Mulholland Philip J | Method for generating hardware information |
WO2006013428A1 (en) | 2004-07-26 | 2006-02-09 | Nokia Corporation, | System and method for searching for content stored by one or more media servers |
US8135652B2 (en) | 2004-10-29 | 2012-03-13 | Nec Laboratories America, Inc. | Parallel support vector method and apparatus |
EP1669886A1 (fr) * | 2004-12-08 | 2006-06-14 | France Telecom | Construction d'un automate compilant des règles de transcription graphème/phonème pour un phonétiseur |
US7392229B2 (en) | 2005-02-12 | 2008-06-24 | Curtis L. Harris | General purpose set theoretic processor |
US7761851B2 (en) | 2005-05-31 | 2010-07-20 | International Business Machines Corporation | Computer method and system for integrating software development and deployment |
US7805301B2 (en) | 2005-07-01 | 2010-09-28 | Microsoft Corporation | Covariance estimation for pattern recognition |
WO2007055181A1 (ja) | 2005-11-11 | 2007-05-18 | Matsushita Electric Industrial Co., Ltd. | 対話支援装置 |
JP4528728B2 (ja) | 2006-01-31 | 2010-08-18 | 株式会社東芝 | デジタル回路の自動設計装置、自動設計方法、および自動設計プログラム |
US7427871B2 (en) | 2006-06-21 | 2008-09-23 | Element Cxi, Llc | Fault tolerant integrated circuit architecture |
US8065249B1 (en) | 2006-10-13 | 2011-11-22 | Harris Curtis L | GPSTP with enhanced aggregation functionality |
US7774286B1 (en) | 2006-10-24 | 2010-08-10 | Harris Curtis L | GPSTP with multiple thread functionality |
US20080168013A1 (en) | 2006-12-05 | 2008-07-10 | Paul Cadaret | Scalable pattern recognition system |
US8656381B2 (en) | 2006-12-07 | 2014-02-18 | International Business Machines Corporation | Presenting machine instructions in a machine-independent tree form suitable for post-link optimizations |
CN101013452A (zh) * | 2007-02-05 | 2007-08-08 | 江苏大学 | 一种符号化的模型检测方法 |
US8561037B2 (en) | 2007-08-29 | 2013-10-15 | Convey Computer | Compiler for generating an executable comprising instructions for a plurality of different instruction sets |
JP4957500B2 (ja) * | 2007-10-12 | 2012-06-20 | 日本電気株式会社 | 文字列照合回路 |
CN101499065B (zh) * | 2008-02-01 | 2011-11-02 | 华为技术有限公司 | 基于fa的表项压缩方法及装置、表项匹配方法及装置 |
CN101339501B (zh) * | 2008-08-12 | 2012-07-18 | 北京航空航天大学 | 基于有向图的ws-bpel控制环路检测方法 |
WO2010018710A1 (ja) * | 2008-08-13 | 2010-02-18 | 日本電気株式会社 | 有限オートマトン生成装置、パターンマッチング装置、有限オートマトン回路生成方法およびプログラム |
US8095494B2 (en) | 2008-10-16 | 2012-01-10 | International Business Machines Corporation | Rules-based cross-FSM transition triggering |
US8209521B2 (en) | 2008-10-18 | 2012-06-26 | Micron Technology, Inc. | Methods of indirect register access including automatic modification of a directly accessible address register |
US8938590B2 (en) | 2008-10-18 | 2015-01-20 | Micron Technology, Inc. | Indirect register access method and system |
US8805686B2 (en) | 2008-10-31 | 2014-08-12 | Soundbound, Inc. | Melodis crystal decoder method and device for searching an utterance by accessing a dictionary divided among multiple parallel processors |
US7970964B2 (en) | 2008-11-05 | 2011-06-28 | Micron Technology, Inc. | Methods and systems to accomplish variable width data input |
US9639493B2 (en) | 2008-11-05 | 2017-05-02 | Micron Technology, Inc. | Pattern-recognition processor with results buffer |
US7917684B2 (en) | 2008-11-05 | 2011-03-29 | Micron Technology, Inc. | Bus translator |
US20100118425A1 (en) | 2008-11-11 | 2010-05-13 | Menachem Rafaelof | Disturbance rejection in a servo control loop using pressure-based disc mode sensor |
US20100138575A1 (en) | 2008-12-01 | 2010-06-03 | Micron Technology, Inc. | Devices, systems, and methods to synchronize simultaneous dma parallel processing of a single data stream by multiple devices |
US9348784B2 (en) | 2008-12-01 | 2016-05-24 | Micron Technology, Inc. | Systems and methods for managing endian mode of a device |
US10007486B2 (en) | 2008-12-01 | 2018-06-26 | Micron Technology, Inc. | Systems and methods to enable identification of different data sets |
US9164945B2 (en) | 2008-12-01 | 2015-10-20 | Micron Technology, Inc. | Devices, systems, and methods to synchronize parallel processing of a single data stream |
US8140780B2 (en) | 2008-12-31 | 2012-03-20 | Micron Technology, Inc. | Systems, methods, and devices for configuring a device |
TWI395103B (zh) | 2008-12-31 | 2013-05-01 | C Media Electronics Inc | 自動執行訊號處理方法與具有該自動執行功能之裝置 |
US20100174887A1 (en) | 2009-01-07 | 2010-07-08 | Micron Technology Inc. | Buses for Pattern-Recognition Processors |
US8214672B2 (en) | 2009-01-07 | 2012-07-03 | Micron Technology, Inc. | Method and systems for power consumption management of a pattern-recognition processor |
US8281395B2 (en) | 2009-01-07 | 2012-10-02 | Micron Technology, Inc. | Pattern-recognition processor with matching-data reporting module |
US8843523B2 (en) | 2009-01-12 | 2014-09-23 | Micron Technology, Inc. | Devices, systems, and methods for communicating pattern matching results of a parallel pattern search engine |
US20100325633A1 (en) | 2009-06-19 | 2010-12-23 | Microsoft Corporation | Searching Regular Expressions With Virtualized Massively Parallel Programmable Hardware |
US9836555B2 (en) | 2009-06-26 | 2017-12-05 | Micron Technology, Inc. | Methods and devices for saving and/or restoring a state of a pattern-recognition processor |
US9501705B2 (en) | 2009-12-15 | 2016-11-22 | Micron Technology, Inc. | Methods and apparatuses for reducing power consumption in a pattern recognition processor |
US9323994B2 (en) | 2009-12-15 | 2016-04-26 | Micron Technology, Inc. | Multi-level hierarchical routing matrices for pattern-recognition processors |
US8489534B2 (en) | 2009-12-15 | 2013-07-16 | Paul D. Dlugosch | Adaptive content inspection |
US8766666B2 (en) | 2010-06-10 | 2014-07-01 | Micron Technology, Inc. | Programmable device, hierarchical parallel machines, and methods for providing state information |
US8601013B2 (en) | 2010-06-10 | 2013-12-03 | Micron Technology, Inc. | Analyzing data using a hierarchical structure |
US8843911B2 (en) | 2011-01-25 | 2014-09-23 | Micron Technology, Inc. | Utilizing special purpose elements to implement a FSM |
JP5857072B2 (ja) | 2011-01-25 | 2016-02-10 | マイクロン テクノロジー, インク. | オートマトンの入次数および/または出次数を制御するための量化子の展開 |
US8788991B2 (en) | 2011-01-25 | 2014-07-22 | Micron Technology, Inc. | State grouping for element utilization |
-
2012
- 2012-01-24 JP JP2013550671A patent/JP5857072B2/ja active Active
- 2012-01-24 WO PCT/US2012/022441 patent/WO2012103148A2/en active Application Filing
- 2012-01-24 CN CN201280013925.9A patent/CN103443767B/zh active Active
- 2012-01-24 KR KR1020137022037A patent/KR101607736B1/ko active IP Right Grant
- 2012-01-24 US US13/357,505 patent/US8726256B2/en active Active
- 2012-01-24 EP EP12739652.1A patent/EP2668577B1/en active Active
- 2012-01-30 TW TW101102988A patent/TWI502501B/zh active
-
2014
- 2014-04-14 US US14/252,600 patent/US9298437B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080140600A1 (en) * | 2006-12-08 | 2008-06-12 | Pandya Ashish A | Compiler for Programmable Intelligent Search Memory |
US20100131935A1 (en) * | 2007-07-30 | 2010-05-27 | Huawei Technologies Co., Ltd. | System and method for compiling and matching regular expressions |
TW201246081A (en) * | 2011-01-25 | 2012-11-16 | Micron Technology Inc | Method and apparatus for compiling regular expressions |
Also Published As
Publication number | Publication date |
---|---|
KR20140018881A (ko) | 2014-02-13 |
US20140229926A1 (en) | 2014-08-14 |
US8726256B2 (en) | 2014-05-13 |
CN103443767B (zh) | 2016-01-20 |
JP5857072B2 (ja) | 2016-02-10 |
EP2668577A2 (en) | 2013-12-04 |
KR101607736B1 (ko) | 2016-03-30 |
CN103443767A (zh) | 2013-12-11 |
US9298437B2 (en) | 2016-03-29 |
JP2014506693A (ja) | 2014-03-17 |
WO2012103148A3 (en) | 2012-11-15 |
EP2668577A4 (en) | 2015-11-18 |
EP2668577B1 (en) | 2019-08-14 |
TW201246071A (en) | 2012-11-16 |
WO2012103148A2 (en) | 2012-08-02 |
US20120192165A1 (en) | 2012-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI502501B (zh) | 用以控制自動機之內分支度及/或外分支度之展開量化 | |
TWI517036B (zh) | 程式化的平行機與電腦實施方法、電腦可讀媒體、非暫態電腦可讀媒體、用於編譯程式之電腦及系統 | |
TWI506556B (zh) | 用於編譯正規表達式之方法及裝置 | |
TWI512625B (zh) | 程式化平行機及電腦實施方法、電腦可讀媒體、電腦及將原始程式碼轉換為機器碼以程式化一平行機之系統 | |
JP2014506693A5 (zh) | ||
TWI584198B (zh) | 使用階層式結構分析資料 |