TWI517036B - 程式化的平行機與電腦實施方法、電腦可讀媒體、非暫態電腦可讀媒體、用於編譯程式之電腦及系統 - Google Patents

程式化的平行機與電腦實施方法、電腦可讀媒體、非暫態電腦可讀媒體、用於編譯程式之電腦及系統 Download PDF

Info

Publication number
TWI517036B
TWI517036B TW101102956A TW101102956A TWI517036B TW I517036 B TWI517036 B TW I517036B TW 101102956 A TW101102956 A TW 101102956A TW 101102956 A TW101102956 A TW 101102956A TW I517036 B TWI517036 B TW I517036B
Authority
TW
Taiwan
Prior art keywords
state
component
computer
quantization
counter
Prior art date
Application number
TW101102956A
Other languages
English (en)
Other versions
TW201237748A (en
Inventor
許郡君
保羅 葛蘭汀尼
Original Assignee
美光科技公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美光科技公司 filed Critical 美光科技公司
Publication of TW201237748A publication Critical patent/TW201237748A/zh
Application granted granted Critical
Publication of TWI517036B publication Critical patent/TWI517036B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4498Finite 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)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Description

程式化的平行機與電腦實施方法、電腦可讀媒體、非暫態電腦可讀媒體、用於編譯程式之電腦及系統
本專利申請案依據35 U.S.C.章節119(e)主張2011年1月25日申請之題為「UTILIZING SPECIAL PURPOSE ELEMENTS TO IMPLEMENT A FSM」之美國臨時專利申請案第61/436,022號的優先權之利益,該美國臨時專利申請案之全文以引用方式併入本文中。
有限狀態機(FSM)(亦被稱作有限狀態自動機、自動機或簡稱為狀態機)為狀態、狀態之間的轉變及動作的表示。有限狀態機可用以設計數位邏輯、電腦程式或平行機之映像。有限狀態機為由有限數目個狀態、彼等狀態之間的轉變及輸出組成的行為模型。有限狀態機可表示為一圖,其中該圖之頂點對應於FSM之狀態,且該圖之邊對應於歸因於至該有限狀態機之一或多個輸入而發生的狀態之間的轉變。有限狀態機亦可具有機率轉變、模糊狀態或其他異事。有限狀態機可充當具有一輸入特徵及一選用之輸出特徵的有限內部記憶體。具有一輸出之有限狀態機可被稱作有限狀態轉換器。
有限狀態機之應用包括電子設計自動化、通信協定設計、生物學及人工智慧研究,以及用以描述自然語言之文法的語言學。
以下描述及圖式充分地說明使熟習此項技術者能夠實踐的特定實施例。其他實施例可併有結構、邏輯、電、過程 及其他改變。一些實施例之部分及特徵可包括於其他實施例中或可替代其他實施例之部分及特徵。申請專利範圍中所陳述之實施例涵蓋彼等技術方案之所有可用等效物。
本文件尤其描述將原始程式碼轉換成有限狀態機之機器碼實施方案的編譯程式。機器碼可對應於一目標器件,因為該機器碼經組態以在該目標器件上實施藉由原始程式碼描述的功能。在一實例中,該目標器件為平行機,且機器碼包含用於該平行機之映像。在另一實例中,該目標器件包含具有馮紐曼架構之電腦,且機器碼包含供該電腦中之處理器執行的指令。
在任一種情況下,編譯程式均可將原始程式碼編譯成機器碼,該機器碼實施體現藉由該原始程式碼描述之功能的有限狀態機。在編譯原始程式碼之過程中,該編譯程式將原始程式碼轉換成自動機。使用該自動機,該編譯程式可識別並組合原始程式碼中之冗餘,以便最佳化藉由機器碼實施之所得有限狀態機。另外,該編譯程式可識別該自動機之部分並將該等部分映射至對應於該目標器件之元件。當目標器件為平行機時,該等元件可包含該平行機之硬體元件。當目標器件為具有馮紐曼架構之電腦時,該等元件可包含供處理器執行之指令。在映射期間,可將有限狀態機之某些部分映射至特定(例如,特殊目的)元件以便(例如)改良所得機器碼之效能。
圖1說明實例有限狀態機(FSM)100。有限狀態機100對應於用於將容器中之水位維持在1/4與3/4滿之間的方法。在 狀態102處,啟動泵以減少容器中之水位。當水位掉落至1/4滿以下時,FSM 100轉變至狀態104,在狀態104下,對泵撤銷啟動。在處於狀態104時,當水位超過3/4滿時,FSM 100往回轉變至狀態104,在狀態104下,重新啟動泵。至FSM 100之輸入為容器中之水位,且輸出為泵開/關信號。
FSM可分成兩類,確定性及非確定性的。確定性FSM在給定時間具有單一執行路徑,而非確定性FSM具有多個同時之執行路徑。具有N個狀態之非確定性FSM通常可轉換成具有最壞情況2至N個狀態的確定性FSM。然而,自非確定性至確定性FSM之此指數狀態展開通常使非確定性FSM成為具有有限機器資源及時間的最實際之實施方案。
FSM 100為確定性FSM之實例,且此確定性FSM 100可為較大非確定性FSM的一部分。舉例而言,圖2說明有一部分係由確定性FSM 100組成的非確定性FSM 200。FSM 200將管壓力之監視添加至水位維持FSM 100。在FSM 200中,管壓力係在泵運作時監視,且若管壓力在固定時段內過負荷,則泵停止。在FSM 200中,當在管在狀態102下啟動時管壓力過負荷時,FSM 200轉變至狀態106,在狀態106下開啟一計時器。另外,當管過負荷時,狀態102轉變至自身以使泵維持於「開」狀態。因此,在FSM 200中之此位置處,狀態102(即,「泵開」狀態)及狀態106(即,「計時器開」狀態)同時為作用中的。由於狀態102及106可同時為作用中的,因此存在多個執行路徑,且FSM 200因此 為非確定性的。當管中之壓力不再過負荷時,FSM 200自狀態106轉變至狀態102。而且,當計時器期滿時,FSM 200自狀態102及狀態106轉變至狀態104以將泵設定為「關」狀態。
圖3說明實例編譯程式之流程圖300。該編譯程式採用原始程式碼301作為輸入且產生機器碼309以在目標器件上實施藉由原始程式碼301描述之功能。在一實例中,該目標器件包含如下文關於圖5至圖9中所描述之平行機。該平行機包括可設定為複數個狀態中之一者的複數個可程式化元件。用於一平行機之機器碼包含用於設定該等可程式化元件中之一或多者的狀態的映像。在另一實例中,該目標器件為具有馮紐曼架構之電腦。該電腦包括耦接至一或多個記憶體器件之一或多個處理器,該一或多個記憶體器件上具有供該一或多個處理器執行之軟體。用於馮紐曼架構之機器碼包含供該一或多個處理器執行之指令。在下文關於圖15來描述具有馮紐曼架構之實例電腦。在任一種情況下,該編譯程式藉由將自動機用作中間轉換來產生機器碼。該編譯程式使用一自動機以便尤其最佳化所得FSM且反過來最佳化該機器碼。
在一實例中,原始程式碼描述用於識別一群符號內之符號的型樣之搜尋字串。為了描述該等搜尋字串,該原始程式碼可包括複數個正規表達式(regex)。正規表達式可為用於描述符號搜尋型樣之字串。正規表達式廣泛用在各種電腦領域中,諸如程式設計語言、文字編輯器、網路安全及 其他領域。在一實例中,由編譯程式支援之正規表達式包括用於無結構資料之搜尋的搜尋準則。無結構資料可包括以下資料,其為自由形式的且無索引施加於資料內之字。字可包括資料內之任何位元組組合,可列印及不可列印的。在一實例中,編譯程式可支援用於實施正規表達式之多種不同的原始程式碼語言,包括Perl(例如,Perl相容正規表達式(PCRE))、PHP、Java及.NET語言。
返回參看圖3,在區塊302處,編譯程式可剖析原始程式碼301以形成有關係連接之運算子的配置。剖析原始程式碼301可產生該原始程式碼301之一般表示。在一實例中,該一般表示包含該原始程式碼301中的呈被稱為語法樹303之樹形圖形式的正規表達式之經編碼表示。本文中所描述之實例將該配置稱為語法樹303(亦被稱為「抽象語法樹」),然而,在其他實例中,可使用具體語法樹303或其他配置。
由於如上文所提及,編譯程式可支援多種語言之原始程式碼301,因此,不管是何種語言,剖析將該原始程式碼301轉換成非語言特定表示,例如語法樹303。因此,藉由編譯程式進行之其他處理(區塊304、306、308、310)可自一共同輸入結構來起作用,而不管原始程式碼301之語言。
該語法樹303包括有關係連接之複數個運算子。該語法樹303可包括多種不同類型之運算子,其中不同類型之運算子對應於藉由該原始程式碼301實施之不同功能。亦即,不同運算子可對應於藉由原始程式碼301中之正規表達式實施的不同功能。
在區塊304處,將該語法樹303轉換成自動機305。一自動機305包含一FSM之軟體模型,且可因此分為確定性或非確定性。確定性自動機305在給定時間具有單一執行路徑,而非確定性自動機305具有多個同時之執行路徑。該自動機305包含複數個狀態。為了將語法樹303轉換成自動機305,將語法樹303中之運算子及運算子之間的關係轉換成狀態及狀態之間的轉變。
在一實例中,該自動機包含通用狀態及特殊目的狀態。該等通用狀態及特殊目的狀態對應於藉由一目標器件支援之通用元件及特殊目的元件,編譯程式為該目標器件產生機器碼。不同類型之目標器件可支援不同類型之通用元件以及一或多種不同類型之特殊目的元件。通用元件通常可用以實施廣泛範圍之功能,而特殊目的元件通常可用以實施更窄範圍之功能。然而,在一實例中,一特殊目的元件可在其窄範圍之適用性內達成(例如)較大效率。因此,一特殊目的元件可用以(例如)減少在目標器件中實施某些功能所需的機器循環或機器資源。在一些實例中,該目標器件僅支援特殊目的元件,其中支援多種不同類型之特殊目的元件。
目標器件之類型可很大程度上控制該目標器件所支援之元件的類型。在一實例中,該目標器件為具有馮紐曼架構之電腦,且所支援之元件包括對應於該電腦之處理器的指令集。該指令集可包括諸如加法、減法、讀取及寫入之通用指令以及諸如記憶體之較大區塊的多重儲存及移動的專門指令。在另一實例中,該目標器件為如下文關於圖5 至圖9中所描述之平行機。由該平行機支援之元件包括該平行機之硬體元件。該等硬體組件可包括諸如狀態機元件之通用元件以及諸如計數器之特殊目的元件。在一些實例中,尤其係平行機實例,該目標器件可支援與相對較少數目個特殊目的元件相比數目較大之通用元件。因此,在一些實例中,將藉由通用元件來實施大多數功能,而藉由特殊目的元件來實施較少之選定功能。
為了有效地利用該目標器件之元件,該編譯程式使用該自動機中之特殊目的狀態來轉換該語法樹之適當部分,該等適當部分對應於藉由該目標器件支援之特殊目的元件。該語法樹的不使用特殊目的狀態轉換之部分可轉換成對應於藉由該目標器件支援之通用元件的通用狀態。該編譯程式可分析該語法樹以判定哪些部分可使用特殊目的狀態來轉換且哪些部分應轉換成通用狀態。在一些實例中,自動機之大部分轉換成一或多個通用狀態,而使用一或多個特殊目的狀態來轉換較小百分數。
舉例而言,使用特殊目的狀態轉換該自動機之一些部分可減少狀態之數目及/或簡化該自動機,且因此簡化藉由該機器碼實施之FSM。舉例而言,該語法樹之某些部分在使用通用狀態而不用任何特殊目的狀態來轉換時可導致大數目之狀態。為了減少狀態之數目,可使用一或多個特殊目的狀態可能結合一或多個通用狀態來轉換此等相同部分。小數目之特殊目的狀態可能夠代替大數目之通用狀態。由於通用狀態之數目通常對應於所得機器碼所使用之 通用元件的數目,因此減少通用狀態之數目可歸因於使用較少之通用元件而減少複雜性並增加所得機器碼之效率。
在任一種情況下,該編譯程式將語法樹中之某些部分轉換成某些類型之狀態,且將該語法樹中之其他部分轉換成其他類型之狀態。由於狀態之類型對應於藉由該目標器件支援之元件的類型,因此該轉換可具有將藉由該原始程式碼實施之某些功能映射至藉由該平行機支援之特定類型的元件的作用。在目標器件為具有馮紐曼架構之電腦的實例中,原始程式碼中之某些功能可映射至藉由該馮紐曼電腦支援之指令集的特定類型之指令。在目標器件為平行機之實例中,原始程式碼之某些功能可映射至通用元件,諸如狀態機元件,且其他功能可映射至特殊目的元件,諸如計數器。下文關於圖4提供關於將語法樹轉換成自動機之額外細節。
一旦已形成該自動機305,在區塊306處,可將該自動機305最佳化以尤其減少其複雜性及大小。可尤其藉由組合等效狀態來最佳化該自動機305。
在區塊308處,將該經最佳化之自動機307轉換成用於一目標器件之機器碼309。在區塊304處,將該自動機305之每一部分轉換成如所映射的對應於該目標器件之元件的機器碼309。在一實例中,該機器碼309包含用於馮紐曼架構中之處理器的可執行指令。在此,機器碼309可包含可執行程式。在另一實例中,該機器碼309可包含用於平行機中之硬體元件的程式化的位元。在此,該機器碼309可包含供載入至平行機上的映像。
在區塊310處,該機器碼309可藉由編譯程式發佈。在一實例中,可藉由將機器碼309儲存至電腦可讀媒體來發佈該機器碼309。在另一實例中,可藉由將機器碼309發送至另一器件(諸如,用於將機器碼309載入至平行機上之程式設計器件)來發佈該機器碼309。在再一實例中,可藉由將機器碼309載入至平行機上來發佈該機器碼309。在又一實例中,可藉由在顯示器件上顯示機器碼309來發佈該機器碼309。
在一實例中,該編譯程式可藉由用於具有馮紐曼架構之電腦之指令來實施。此等指令可使該電腦上之處理器實施該編譯程式之功能。舉例而言,該等指令在藉由該處理器執行時可使該處理器對可由該處理器存取之原始程式碼301執行如區塊302、304、306、308及310中所描述之動作。具有馮紐曼架構之實例電腦展示於圖15中且在下文描述。
圖4說明用於將一配置(諸如,語法樹)轉換成自動機之方法400,其中使用特殊目的狀態來轉換該語法樹之某些部分。為了利用自動機內之特殊目的狀態,在區塊402處,編譯程式首先識別該語法樹之對應於藉由該目標器件支援之特殊目的元件的部分。舉例而言,在平行機中,通常可能在需要時藉由通用狀態來實施整個語法樹。此係因為通用狀態可以某些方式組合以實施藉由該平行機支援之所有功能。然而,如上文所提及,特殊目的元件意欲僅實施某些功能。因此,編譯程式識別該語法樹中之可藉由特殊目的元件實施或可藉由特殊目的元件有效實施的運算 子。如下文所描述,可接著使用特殊目的狀態來轉換語法樹之此等運算子及周圍部分。
在一實例中,基於該語法樹中之運算子的功能來識別該語法樹之對應於特殊目的狀態的部分。事實上,藉由編譯程式識別之運算子的功能性可對應於該目標器件之特殊目的元件意欲實施的特定功能性。在一實例中,當該目標器件支援作為特殊目的元件之計數器時,該編譯程式可將該語法樹中之量化識別為對應於特殊目的元件。關於圖5至圖14提供關於量化及計數器之更多細節。
在區塊404處,一旦已將一部分識別為對應於一特殊目的元件,便可進一步分析所識別之部分以判定其是否滿足某些條件以便被映射至一特殊目的元件。在一實例中,該條件包括對應於所識別部分之自動機是否為確定性的。亦即,該條件對應於,不管有一部分為所識別部分的較大自動機(例如,基於整個語法樹形成之自動機)是否為確定性的,所識別部分在轉換成通用狀態之自動機時是否為確定性的。若對應於所識別部分之自動機為確定性的,則在區塊406處,使用一或多個特殊目的狀態來轉換該所識別部分。若該自動機並非確定性的,則在區塊408處,使用一或多個通用狀態而不使用任何特殊目的狀態來轉換所識別部分。在其他實例中,該自動機可在所識別部分為確定性時使用第一類型之特殊目的狀態來轉換所識別部分且在所識別部分並非確定性時使用另一類型之特殊目的狀態來轉換所識別部分。在又一些其他實例中,可使用其他條件來 判定在轉換該語法樹之所識別部分時將使用哪類型之狀態。
在一實例中,為了在區塊404處判定語法樹之所識別部分是否為確定性的,編譯程式可判定所識別部分在轉換成自動機時是否在給定時間僅具有一個作用中狀態。此可藉由(例如)找出是否存在干擾到所識別部分之任何條件來判定。舉例而言,在所識別部分為量化時,編譯程式可分析該自動機以判定該自動機是否滿足「無重入」條件或「無首碼」條件。在下文關於圖10至圖14提供關於無重入及無首碼干擾條件的額外細節。
使用此等確定性,可將語法樹中之每一運算子轉換成一自動機之一或多個狀態。一些運算子可如上文所描述藉由識別藉由該等運算子所實施之特定功能及在適當時使用該自動機中之一或多個特殊目的狀態來轉換彼等功能來加以轉換。不使用一或多個特殊目的狀態轉換之運算子可藉由預設為一或多個通用狀態而加以轉換。舉例而言,可分析該語法樹以識別所有適用運算子並將該等運算子映射至平行機中之計數器。一旦所有適用運算子已映射至一或多個計數器,便可將剩餘運算子映射至一或多個狀態機元件。在其他實例中,藉由識別對應於特定部分之一或多個特定元件來映射該語法樹之所有部分。
實例實施例
下文關於圖5至圖15所作之描述與使用平行機中之特殊目的元件實施FSM之實例實施例有關。在一實例中,該平 行機之特殊目的元件包括計數器。該等計數器意欲實施原始程式碼中之量化。參看圖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亦可包括用於將程式(例如,映像)載入至平行機500上之程式設計介面511。該映像可程式化(例如,設定)通用元件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之輸出資料。
在一實例中,用於載入至平行機100上之映像包含用於在平行機100內設定可程式化元件102之狀態、程式化可程式化開關108及組態特殊目的元件112的複數個資訊位元。在一實例中,該映像可載入至平行機100上以程式化該平行機100以基於某些輸入而提供所要輸出。輸出埠114可基於可程式化元件102對在資料輸入埠110處之資料所起之反應來提供來自平行機100之輸出。來自輸出埠114之輸出可包括指示一給定型樣之匹配的單一位元、包含指示與複數個型樣之匹配及不匹配之複數個位元的字、包含指示複數個作用中及非作用中狀態之複數個位元的字,及對應於在給定時刻所有或某些可程式化元件102之狀態的狀態向量。
平行機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說明供編譯程式用以將原始程式碼1001轉換成經組態以程式化平行機之映像的方法1000之實例。方法1000包括:將該原始程式碼1001剖析成一語法樹1003(區塊1002);將該語法樹1003轉換成一自動機1005(區塊1004);最佳化該自動機1005(區塊1006);將該經最佳化之自動機1007轉換成一接線對照表1009(區塊1008);將該接線對照表1009置放於硬體上(區塊1010);對該接線對照表1009進行路徑選擇(區塊1012);及發佈所得映像(區塊1014)。
在一實例中,該編譯程式包括一應用程式設計介面(API),該API允許軟體開發者產生用於在FSM引擎600上實施FSM之映像。該編譯程式提供用以將該原始程式碼中之一組輸入之正規表達式轉換成經組態以程式化FSM引擎600之映像的方法。該編譯程式可藉由用於具有馮紐曼架構之電腦之指令來實施。此等指令可使該電腦上之處理器實施該編譯程式之功能。舉例而言,該等指令在藉由該處理器執行時可使該處理器對可由該處理器存取之原始程式碼1001執行如區塊1002、1004、1006、1008、1010、1012及1014中所描述之動作。具有馮紐曼架構之實例電腦展示於圖15中且在下文描述。
在區塊1002處,剖析正規表達式以形成一語法樹1003。如上文關於圖3所解釋,剖析產生該原始程式碼1001之一般表示。另外,剖析可考量由FSM引擎600支援及不支援之正規表達式。所支援之正規表達式可轉換成適當機器碼實施方案;然而,不受支援之正規表達式可(例如)產生一 錯誤,或轉換成在功能性上接近於不受支援之正規表達式的受支援之機器碼。
在區塊1004處,將該語法樹1003轉換成自動機1005。如上文關於圖3所提及,轉換該語法樹1003將該語法樹1003轉換成包含複數個狀態之自動機1005。在一實例中,可部分基於FSM引擎600之硬體來轉換該自動機1005。
在一實例中,用於自動機之輸入符號包括字母、數字0-9及其他可列印字元之符號。在一實例中,該等輸入符號藉由位元組值0至255(包括在內)來表示。在一實例中,一自動機可表示為有向圖,其中該圖之節點對應於狀態集合。在一實例中,被一自動機接受(例如,匹配)之資料為在按順序地輸入至該自動機中時將達到最終狀態的所有可能資料之集合。被該自動機接受之資料中的每一符號沿自開始狀態至一或多個最終狀態之路徑而行。被一正規表達式接受之資料為匹配該正規表達式之所有可能字元字串之集合。給定正規表達式「R」,將「R」被接受之資料表示為£(R)。
在一實例中,該自動機包含通用狀態以及特殊目的狀態。在編譯程式產生用於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)。下文關於圖4、圖11、圖12、圖13A、圖13B及圖14提供關於將語法樹轉換成自動機之額外細節。
在區塊1006處,一旦已將該語法樹1003轉換成一自動機1005,便最佳化該自動機1005。該自動機1005可經最佳化以尤其減少其複雜性及大小。可藉由組合冗餘狀態來最佳化該自動機1005。
在區塊1008處,將該經最佳化之自動機1007轉換成一接 線對照表1009。將該自動機轉換成一接線對照表1009將該自動機之每一狀態映射至FSM引擎600上之一硬體元件(例如,SME 604、605、特殊目的元件624)之一例項。而且,判定該等例項之間的連接以產生該接線對照表1009。
在區塊1010處,置放該接線對照表1009以針對該接線對照表1009之每一例項選擇該目標器件之一特定硬體元件(例如,SME 604、605、特殊目的元件624)。在一實例中,置放基於該FSM引擎600之一般輸入及輸出約束而選擇每一特定硬體元件。
在區塊1012處,對經置放之接線對照表1009進行路徑選擇以判定可程式化開關(例如,區塊間開關603、區塊內開關608及列內開關612)之設定以便將選定硬體元件耦接在一起以達成接線對照表1009所描述之連接。在一實例中,該等可程式化開關之設定藉由判定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上。
如上文所論述,圖4詳述用於將語法樹轉換成自動機之 方法400。以下描述提供用於在目標器件為平行機(例如,FSM引擎600)時將語法樹轉換成自動機的額外細節。
可以原始程式碼描述之一類正規表達式包括一量化。量化在此項技術中為眾所周知的,且用以描述重複型樣。作為一實例,「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在匹配時轉變至一量化。另外,為了繼續重複及遞增針對該量化之計數,必須連續地匹配該量化之重複子表達式。亦即,當一重複子表達式在該量化之給定迴圈期間不匹配時,該量化結束。在一實例中,符號「?」亦對應於量化,其中在「?」之前的符號可識別一次或零次。
當目標器件為FSM引擎600時,方法400可識別某些量化並將該等量化映射至FSM引擎600上之計數器624。藉由計數器624實施某些量化可導致優於藉由狀態機元件604、605實施量化的效率。因此,可簡化針對FSM引擎600之自動機及所得映像。舉例而言,實施量化之語法樹之部分可需要大量SME 604、605來實施。然而,在一實例中,此等量化中之一些可使用計數器624來實施,計數器624具有比SME 604、605所需要之狀態少的狀態。
在區塊402處,編譯程式識別語法樹之對應於可能藉由FSM引擎600中之計數器624實施的量化之部分。若該語法樹之部分不對應於一量化,則方法400前進至區塊408,在區塊408處,將該部分轉換成用於藉由SME 604、605實施之通用狀態。若該語法樹之部分確實對應於一量化,則進一步分析該量化以判定是否可藉由計數器624來實施所識別之部分。
在作出是否可能藉由計數器624來實施一量化之判定之 前,若£(B)包括空字串,則「B{n1,n2}」之量化重寫為「B'{0,n2}」,其中B'為B之非空字串版本,£(B')=£(B)-Φ。舉例而言,「(bc|){10,20}」可重寫為「(bc){0,20}」,因為此等正規表達式接受正好相同之資料。接著,對於一給定之量化B{n1,n2},根據以下條件,該量化可能藉由一計數器來實施(方法前進至區塊404)或者藉由SME來實施且無計數器(方法前進至區塊408):
1)當(n1=0,n2=-1)時,將以SME 604、605來實施該量化且無計數器624(區塊408)。在此,不需要計數器624。
2)當(n1=1,n2=-1)時,將以SME 604、605來實施該量化且無計數器624(區塊408)。在此,不需要計數器624。
3)當(n1>1,n2=-1)時,該量化將分裂成兩個正規表達式B{n1-1}及B+,因為B{n,-1}等於B{n1-1}B+。可接著可能藉由計數器來實施量化B{n1-1}(區塊404),而將以SME 604、605來實施B+且無計數器624(區塊408)。對於B+,不需要計數器624。
4)當(n1=0,n2>0)時,將該量化修改成(B{1,n2})?,因為(B{1,n2})?等於B{0,n2}。可接著可能藉由計數器624來實施不可空B{1,n2}(區塊404)。
5)當(n1>0,n2>0)時,可能藉由計數器624將該量化實施為B{n1,n2}(區塊404)。
總言之,在不修改之情況下可能藉由計數器624實施(區塊404)之量化可被寫成B{n1,n2},其中B為不可空的,n1>0、n2>0且n1n2。
在區塊404處,一旦編譯程式已識別了可能藉由計數器624實施之量化,該編譯程式便判定語法樹之對應於經識別部分的一部分是否為確定性的。當該經識別部分為確定性時,可藉由一或多個計數器624來實施該經識別部分,且方法400前進至區塊406,在區塊406處,將該經識別部分轉換成一或多個計數器狀態以及一或多個SME狀態。當該經識別部分為非確定性時,不使用計數器624來實施該經識別部分,且方法400前進至區塊408,在區塊408處,將該經識別部分轉換成一或多個SME狀態。
大體上,區塊406及區塊408對應於用以將量化轉換成自動機的兩種方式。在區塊406處,使用一或多個計數器狀態來轉換該量化,可能結合一或多個SME狀態以將該量化實施為一迴圈。在區塊408處,藉由「展開」該量化來轉換該量化,其包括使用SME狀態且無計數器狀態。展開包含藉由非量化語法來重寫該量化。舉例而言,正規表達式「(b|c){1,2}」可展開為「(b|c)(b|c)?」。展開之優點包括(1)所得自動機為有向非循環圖(DAG)且可易於分析及實施,及(2)所得自動機可藉由通用元件(尤其係狀態機元件)而非特殊目的元件來實施。然而,用以實施展開量化之通用狀態且因此狀態機元件之數目與n1及n2成線性關係。因此,當n1或n2為大數目時,狀態之數目可為大的。詳言之,現實資源為有限的,因此,在一些實例中,此展開技術僅用於有限類別之量化。
然而,當目標器件具有經設計以實施計數功能之特殊目 的元件(諸如,計數器624)時,在某些情況下可避免展開。此方法之優點為在自動機中需要重複表達式之較少複本,且複本之數目獨立於n1及n2。因此,可節省顯著資源。舉例而言,可使用一或多個計數器624來藉由用重複表達式及該一或多個計數器624產生一迴圈來實施量化。每當重複表達式匹配,計數器624便可遞增(或遞減)。可接著重新啟動該(等)重複表達式以搜尋另一匹配。當計數器624已遞增(或遞減)了等於該量化所規定之次數時,計數器624可在該量化之後啟動該(等)狀態。因此,可藉由較少SME 604、605來實施該量化,因為再用了用以實施重複表達式之SME。然而,歸因於整個自動機(例如,對應於整個語法樹)之平行性(亦即,可同時處於作用中之多個狀態),在一些實例中,計數器624可僅用於對應於整個自動機之確定性部分的量化。
圖11說明轉換成自動機1100之正規表達式的實例,該自動機1100使用特殊目的計數器狀態1102來實施量化。自動機1100對應於正規表達式「A(B){n1,n1}C」,其中該量化之兩個計數值(例如,n1、n2)為相等的。由於該等計數值中之兩者為相等的,因此使用單一計數器624來實施該量化。如圖11中所展示,自動機1100可表示為有向圖,其中該圖之節點對應於一組狀態。
正規表達式「A(B){n1,n1}C」轉換成若干SME狀態1104、1106、1110、1108及計數器狀態1102。SME狀態1104、1106、1108、1110對應於子表達式「A」、「B」及 「C」。SME狀態1104、1106、1110、1108可藉由SME 604、605來實施,而計數器狀態1102可藉由計數器624來實施。當在FSM引擎600上實施自動機1110時,對應於計數器狀態1102之計數器624最初載入有值n1且經設定以在計數器624中之值達到零時確證零計數輸出。當n1等於n2時,計數器624可經設定至停止0及脈衝輸出模式,其意謂一旦計數器624之值達到零,計數器624便確證其輸出,且計數器624將維持於零且不發出任何信號直至重設計數器624為止。
自動機1100在狀態1104處開始且在匹配子表達式「A」後即轉變至狀態1106。當處於狀態1106處,每當子表達式「B」匹配,便啟動計數器狀態1102之IN埠,且計數器狀態1102遞減一。另外,每當子表達式「B」匹配,狀態1106便啟動其自身以及啟動狀態1110。當計數器狀態1102達到零時,啟動輸出,且自動機1100將接著搜尋子表達式「C」。在接下來之循環中,將出現兩種情形:第一種情形在「~B」匹配時出現。當「~B」匹配時,重設計數器狀態1102且將其值往回設定至n1。因此,下次子表達式「A」匹配,過程便自狀態1104開始。在第二種情形中,狀態1106之自迴圈仍在作用中,且在子表達式「B」匹配時繼續觸發計數器1102之IN埠。由於計數器狀態1102係在脈衝模式下組態,因此儘管狀態1102之自迴圈仍處於作用中,但計數器狀態1106將不會再次啟動其輸出。
子表達式「B」之否定版本在本文中亦被稱作「~B」。 在一實例中,子表達式「B」之否定版本用以啟動計數器狀態1102之重設埠。此係因為,由於「B」係量化「(B){n1,n1}」之重複表達式,因此當在輸入處接收到不同於B之任一者(例如,「B」之否定版本)(一旦已啟動了狀態1106),則該量化結束且因此重設計數器。因此,一旦啟動了狀態1110,便重設計數器狀態1102,且當子表達式「B」之否定版本匹配時,該量化不匹配。在一實例中,使用標準自動機理論來否定重複表達式。
儘管當n1等於n2時,說明並描述單一計數器狀態624實施一量化,但應認識到,多個計數器624可級聯以考量比藉由單一計數器624支援之數目大的數目。
圖12說明轉換成自動機1200之正規表達式的另一實例,該自動機1200使用複數個特殊目的計數器狀態1202、1204來實施具有量化之正規表達式。自動機1200對應於正規表達式「A(B){n1,n2}C」,其中n1小於n2。使用兩個計數器狀態1202、1204,因為在量化「(B){n1,n2}」中n1小於n2。計數器狀態1202、1204經組態至停止0及保持模式,其意謂,當計數器狀態1202、1204達到零時,計數器狀態1202、1204啟動其輸出,且在重設計數器狀態1202、1204之前,計數器狀態1202、1204維持於零且每當啟動IN埠便保持啟動其輸出。在此實例中,自計數器狀態1202至計數器狀態1204之潛時佔用兩個循環。
計數器狀態1202最初設定至n1,且計數器狀態1204最初設定至n2。當子表達式「A」匹配時,該自動機自狀態 1206轉變至狀態1208。一旦啟動了狀態1208,每當子表達式「B」匹配,便啟動計數器狀態1202及計數器狀態1204之IN埠。因此,計數器狀態1202及計數器狀態1204遞減一。當計數器狀態1202達到零時,啟動其輸出,且自動機1200接著搜尋子表達式「C」之匹配且啟動狀態1210。一旦子表達式「B」已匹配了n1次,計數器狀態1204之值便為n2-n1。稍後,每當子表達式「B」匹配,便啟動計數器狀態1202之IN埠,且計數器狀態1202之值維持於零,且仍啟動其輸出。同時,計數器狀態1204繼續遞減。當子表達式「B」匹配了n2次時,計數器狀態1204亦達到零,且啟動其輸出,此驅動計數器狀態1202之重設埠。由於計數器狀態1204至計數器狀態1202之潛時為兩個循環,因此計數器狀態1202繼續啟動其輸出至狀態1210。在下一個循環中,自計數器狀態1204之輸出重設計數器狀態1202,且不自計數器狀態1202確證輸出。在接下來之循環中,將出現兩種情形。在第一種情形中,「~B」匹配。計數器狀態1202及計數器狀態1204均藉由狀態1212重設,且其值分別設定為n1及n2。因此,下次狀態1206為作用中且下次子表達式「A」匹配時,啟動狀態1208,且計數器狀態1202、1204再次遞減。在第二種情形中,狀態1208之自迴圈維持於啟動,且啟動計數器狀態1202、1204 IN埠。由於計數器狀態1204繼續啟動其輸出,因此計數器狀態1202繼續重設,且只要狀態1208之自迴圈處於作用中便不啟動其輸出。
另外,在狀態1208處於作用中時子表達式「B」之匹配啟動了狀態1212。一旦狀態1212啟動且「~B」匹配,則重設計數器狀態1202、1204,且不匹配該量化。使用子表達式「B」之否定版本,因為「B」為量化「(B){n1,n2}」之重複表達式。因此,可重複地匹配在狀態1208下之表達式「B」自n1至n2次。儘管說明並描述了單一計數器分別實施下(例如,n1)及上(例如,n2)臨限值,但應認識到,如熟習此項技術者所知,多個計數器可級聯以考量比藉由單一計數器支援之數目大的數目。
在使用計數器狀態轉換量化之前,在區塊404處,編譯程式判定對應於該量化之自動機是否為確定性的。在一實例中,當表達式滿足下文所論述之無首碼、無重入條件時,該自動機為確定性的。亦即,為了使量化映射至計數器624,該量化應滿足如下文所論述之無首碼及無重入條件。
參考圖12之自動機1200,無重入條件要求自狀態1206至狀態1208之邊不可啟動,而計數器狀態1202處於作用中(例如,當計數器狀態1202正在計數時)。亦即,判定在已處理該量化時是否可匹配該量化之驅動表達式。匹配驅動表達式意謂,緊跟在該量化之前的狀態將轉變至對應於該量化之狀態。因此,將「重入」該量化,而計數器狀態仍處理一重複表達式。由於在FSM引擎600之此實例中,計數器624在任何給定時間時可僅實施單一迴圈,因此在迴圈已經處理時轉變至一量化可使計數器624在給定迴圈期 間不準確地計數。
圖13A及圖13B說明自動機1300及1314,可用以進一步解釋無重入條件。圖13A說明對應於語法樹中之一量化的實例自動機1300,其中編譯程式可進行分析以判定對應於該量化之自動機是否為確定性的。
自動機1300對應於正規表達式「abb?(b|c){1,2}」且包括開始狀態1302及最終狀態1312、1304。該等最終狀態在圖13A中識別為雙圓。最初啟動開始狀態1302並在輸入符號「a」之後即刻使其轉變至狀態1306。在輸入符號「b」時,狀態1306轉變至狀態1308及狀態1310。在輸入符號「b」時狀態1308轉變至狀態1310,且在輸入符號「b」或「c」時,狀態1310轉變至狀態1312。在輸入符號「b」或「c」時,自動機1300自狀態1312轉變至狀態1304。
自動機1300包含正規表達式「abb?(b|c){1,2}」之自動機,將檢查該正規表達式是否符合無重入條件。自動機1314包含自自動機1300之正規表達式「abb?(b|c){1,2}」導出之正規表達式SS(「abb?」,「(b|c){2}」)的自動機。SS(M,N)被定義為自M、N導出之正規表達式。導出步驟包括:1)串接M及N,結果表示為「MN」。2)建構「MN」之自動機,表示為A(MN)。3)如下地修改A(MN):a)使A(MN)之開始狀態驅動所有其他狀態,及b)使對應於「N」之所有狀態為最終狀態。最後,4)將經修改之自動機的正規表達式表示為SS(M,N)。SS(M,N)之被接受資料由自「MN」之任何狀態開始且在N之任何狀態處結束的子 字串組成。
無重入條件可定義如下。給出具有量化「AB{n1,n2}C」之正規表達式,無重入條件需要£(SS(A,B{n1,n2})∩ £(A)=Ø。換言之,一旦子表達式「A」匹配且計數器狀態1202開始計數,則為了滿足無重入條件,將不再次啟動自狀態1206至狀態1208之邊,直至進行「B{n1,n2}」(匹配或失敗)為止。舉例而言,「abb」£(「abb?」)∩ £(SS(「abb?」,「(b|c){2}」),且因此藉由計數器624將不會正確地實施「abb?(b|c){1,2}」。
現在參看圖14,將參考自動機1400來解釋無首碼條件。無首碼條件規定£(B)之任何字串不應為£(B)之另一字串的首碼,此將保證B不會使計數器計數多於一次。換言之,當一量化之第一重複子表達式為該量化之第二重複子表達式之首碼時,該量化不實施為(且因此轉換為)計數器624。正式之陳述為:對於所有li,lj £(B),li≠lj,吾人要求{li.*}∩{lj.*}=Ø。
舉例而言,正規表達式「a(b|bc){3}」不滿足無首碼條件。因此,將不使用計數器狀態來轉換正規表達式「a(b|bc){3}」,且因此不藉由計數器624來實施。實情為,不藉由任何計數器狀態來將正規表達式「a(b|bc){3}」轉換成通用狀態。
若藉由計數器624來實施正規表達式「a(b|bc){3}」,則將錯誤地匹配輸入「abbc」。舉例而言,自動機1400為使用計數器狀態1412對正規表達式「a(b|bc){3}」之假設轉 換的結果。如下文所描述,此轉換導致計數器狀態1412之不正確執行。最初啟動狀態1402,且在輸入「a」處,狀態1402啟動狀態1404。在狀態1404啟動之情況下,在輸入「b」處,狀態1404啟動狀態1406、1408且再啟動自身,即狀態1404。而且,在輸入「b」處,狀態1404啟動計數器1412之IN埠,其中計數器狀態1412之初始值處於3且接著減少至2。在狀態1404、1406及1408啟動之情況下,在另一輸入「b」處藉由狀態1404再次啟動計數器狀態1412之IN埠,且計數器狀態1412中之值減少至1。此時,啟動狀態1404、1406及1408。接著,輸入值「c」使計數器狀態1412之IN埠藉由狀態1408啟動以將計數器1412中之值減少至0。在計數器1412中之值處於零之情況下,啟動輸出,且啟動狀態1414,此指示一匹配。然而,此匹配為一錯誤肯定,因為在序列「abbc」不滿足正規表達式「a(b|bc){3}」時,輸入「abbc」已造成一匹配。因此,正規表達式「a(b|bc){3}」不滿足無首碼條件,且不應使用計數器狀態來轉換且不應藉由計數器624來實施。
若在區塊404處,該量化滿足無首碼條件及無重入條件,則在區塊406處使用特殊目的計數器狀態來轉換該量化。可如上文關於圖12及圖13所描述般轉換該量化。然而,若該量化不滿足無首碼或無重入條件,則在區塊408處藉由展開該量化且將該量化轉換成通用狀態且無計數器狀態624來轉換該量化。因此,藉由SME 604、605且無計數器624來實施該量化。
本文中所描述之方法實例可至少部分為機器或電腦實施的。一些實例可包括編碼有指令之電腦可讀媒體或機器可讀媒體,該等指令可操作以組態一電子器件以執行如上述實例中所描述之方法。此等方法之一實施方案可包括程式碼,諸如微碼、組合語言程式碼、高級語言程式碼或其類似者。此類程式碼可包括用於執行各種方法之電腦可讀指令。程式碼可形成電腦程式產品之部分。另外,程式碼在執行期間或在其他時間時可有形地儲存於一或多個揮發性或非揮發性電腦可讀媒體上。此等電腦可讀媒體可包括(但不限於)硬碟、可抽取式磁碟、可抽取式光碟(例如,壓縮光碟及數位影音光碟)、磁帶盒、記憶體卡或記憶體棒、隨機存取記憶體(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中,實例1至4中任一者之標的可視情況地包 括,其中該機器碼包含用於一平行機之一映像。
在實例6中,實例1至5中任一者之標的可視情況地包括,其中該組元件包括供在一處理器上執行之一組指令,且其中該特殊目的元件包括一特殊目的指令。
在實例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至13中任一者之標的可視情況地包括,其中該記憶體胞包含一揮發性記憶體胞。
在實例16中,實例1至15中任一者之標的可視情況地包括進一步包含發佈該機器碼。
在實例17中,實例1至16中任一者之標的可視情況地包括,其中發佈該機器碼包括將該機器碼載入至一平行機上。
在實例18中,實例1至17中任一者之標的可視情況地包括,其中發佈該機器碼包括將該機器碼儲存於一電腦可讀媒體上。
在實例19中,實例1至18中任一者之標的可視情況地包括,其中該等指令使該電腦執行包含以下各者之操作:將 原始程式碼轉換成該配置;及發佈該機器碼。
在實例20中,實例1至19中任一者之標的可視情況地包括,其中判定該部分是否滿足將被映射至一特殊目的元件之一條件包含判定該部分是否為確定性的。
在實例21中,實例1至20中任一者之標的可視情況地包括,其中識別該配置之一部分包括識別一量化;且其中判定該部分是否為確定性的包括判定在處理該量化時是否可匹配該量化之一驅動表達式。
在實例22中,實例1至21中任一者之標的可視情況地包括,其中識別該配置之一部分包括識別一量化;且其中判定該部分是否為確定性的包括判定該量化之一重複表達式是否為該量化之另一重複表達式之一首碼。
在實例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中任一者之標的產生的一映像來程式化的一平行機。
100‧‧‧有限狀態機(FSM)
102‧‧‧狀態
104‧‧‧狀態
106‧‧‧狀態
200‧‧‧有限狀態機(FSM)
500‧‧‧平行機
502‧‧‧通用元件
504‧‧‧輸入
506‧‧‧輸出
508‧‧‧可程式化開關
510‧‧‧資料輸入埠
511‧‧‧程式設計介面
512‧‧‧特殊目的元件
514‧‧‧輸出埠
600‧‧‧FSM引擎
601‧‧‧緩衝器
602‧‧‧區塊
603‧‧‧區塊間開關
604‧‧‧第一SME
605‧‧‧第二SME
606‧‧‧列
608‧‧‧區塊內開關
609‧‧‧輸入區塊
610‧‧‧成對群組
611‧‧‧程式設計介面
612‧‧‧可程式化列內開關
613‧‧‧輸出區塊
614‧‧‧第一輸入
616‧‧‧第二輸入
618‧‧‧輸出
620‧‧‧第一複數個列互連導體
622‧‧‧第二複數個列互連導體
624‧‧‧特殊目的元件
626‧‧‧輸出
628‧‧‧輸出
630‧‧‧OR閘
632‧‧‧記憶體胞
634‧‧‧偵測線
636‧‧‧資料串流線
638‧‧‧偵測電路
640‧‧‧開關
1100‧‧‧自動機
1102‧‧‧特殊目的計數器狀態
1104‧‧‧SME狀態
1106‧‧‧SME狀態
1108‧‧‧SME狀態
1110‧‧‧SME狀態
1200‧‧‧自動機
1202‧‧‧特殊目的計數器狀態
1204‧‧‧特殊目的計數器狀態
1206‧‧‧狀態
1208‧‧‧狀態
1210‧‧‧狀態
1212‧‧‧狀態
1300‧‧‧自動機
1302‧‧‧開始狀態
1304‧‧‧最終狀態
1306‧‧‧狀態
1308‧‧‧狀態
1310‧‧‧狀態
1312‧‧‧最終狀態
1314‧‧‧自動機
1400‧‧‧自動機
1402‧‧‧狀態
1404‧‧‧狀態
1406‧‧‧狀態
1408‧‧‧狀態
1412‧‧‧計數器狀態
1414‧‧‧狀態
1500‧‧‧電腦
1502‧‧‧處理器
1504‧‧‧主記憶體
1506‧‧‧靜態或非揮發性記憶體
1508‧‧‧匯流排
1510‧‧‧輸出器件
1512‧‧‧輸入器件
1514‧‧‧游標控制器件
1516‧‧‧大容量儲存器件
1520‧‧‧網路介面器件
1522‧‧‧電腦可讀媒體
1524‧‧‧指令
1526‧‧‧網路
1528‧‧‧輸出控制器
1530‧‧‧程式設計器件
圖1說明根據本發明之各種實施例的確定性有限狀態機之實例。
圖2說明根據本發明之各種實施例的非確定性有限狀態機之實例。
圖3說明根據本發明之各種實施例的供編譯程式用以將原始程式碼轉換成機器碼的方法之實例。
圖4說明根據本發明之各種實施例的用於將語法樹轉換成自動機的方法。
圖5說明根據本發明之各種實施例的平行機之實例。
圖6說明根據本發明之各種實施例的實施為有限狀態機引擎的圖5之平行機的實例。
圖7說明根據本發明之各種實施例的圖6之有限狀態機引擎的區塊之實例。
圖8說明根據本發明之各種實施例的圖7之區塊之列的實例。
圖9說明根據本發明之各種實施例的圖8之列之成對群組的實例。
圖10說明根據本發明之各種實施例的供編譯程式用以將原始程式碼轉換成經組態以程式化圖5之平行機的映像之方法的實例。
圖11說明根據本發明之各種實施例的具有特殊目的計數 器狀態的實例自動機。
圖12說明根據本發明之各種實施例的具有特殊目的計數器狀態的另一實例自動機。
圖13A及圖13B說明根據本發明之各種實施例的實例自動機。
圖14說明根據本發明之各種實施例的具有不滿足無首碼條件之量化的正規表達式之實例自動機。
圖15說明根據本發明之各種實施例的具有馮紐曼(Von Neumann)架構的電腦之實例。

Claims (39)

  1. 一種電腦實施方法,該方法用於產生對應於包括複數個通用元件及一特殊目的元件之一組元件的機器碼,該特殊目的元件為藉由該複數個通用元件所執行的一功能所實施之一單一元件,該方法包含:判定有關係連接之運算子的一配置中之一部分是否滿足將被映射至該特殊目的元件的一條件;若該部分滿足該條件,則將該部分映射至該特殊目的元件,且若該部分不滿足該條件,則將該部分映射至該複數個通用元件之一或多個通用元件,該映射包括將該配置轉換成包含複數個狀態之一自動機,其中若被映射至該特殊目的元件,則使用對應該特殊目的元件的一特殊目的狀態來轉換該部分,且若未被映射至該特殊目的元件,則將該部分轉換成一通用狀態;及藉由將該自動機轉換成機器碼以將有關係連接之運算子的該配置轉換成機器碼。
  2. 如請求項1之電腦實施方法,其中該機器碼包含用於一平行機之一映像。
  3. 如請求項1之電腦實施方法,其中判定有關係連接之運算子的該配置中之該部分是否滿足將被映射至該特殊目的元件的該條件包含:識別該等有關係連接之運算子中的可使用該特殊目的元件來實施的一運算子。
  4. 如請求項1之電腦實施方法,其中將該配置轉換成一自動機包含:將該配置中之該等運算子中之每一者轉換成 該複數個狀態中之一或多者。
  5. 如請求項1之電腦實施方法,其中若該部分不滿足該條件,則使用該通用狀態且不使用對應於該特殊目的元件之該特殊目的狀態來轉換該部分,其中該通用狀態對應於該通用元件。
  6. 如請求項1之電腦實施方法,其中該部分包含一第一部分,且其中若該配置之一第二部分並未被識別為對應於該特殊目的元件,則使用該通用狀態且不使用對應於該特殊目的元件之該特殊目的狀態來轉換該第二部分,其中該通用狀態對應於該通用元件。
  7. 如請求項1之電腦實施方法,其中該組元件包括一平行機之一組硬體元件,其中該通用元件包含一可程式化元件且其中該特殊目的元件包括一計數器。
  8. 如請求項7之電腦實施方法,其中該可程式化元件包含一狀態機元件。
  9. 如請求項8之電腦實施方法,其中該狀態機元件包括一記憶體胞。
  10. 如請求項9之電腦實施方法,其中該記憶體胞包含一揮發性記憶體胞。
  11. 如請求項1之電腦實施方法,其進一步包含:發佈該機器碼。
  12. 如請求項11之電腦實施方法,其中發佈該機器碼包括:將該機器碼載入至一平行機上。
  13. 如請求項11之電腦實施方法,其中發佈該機器碼包括: 將該機器碼儲存於一電腦可讀媒體上。
  14. 一種非暫態電腦可讀媒體,其包括指令,該等指令在由該電腦執行時使一電腦執行包含以下各者之操作:識別有關係連接之運算子的一配置中的對應於一目標器件之一特殊目的元件的一部分,該特殊目的元件為藉由該目標器件之複數個通用元件所執行的一功能所實施之一單一元件,該目標器件亦包括至少一通用元件;判定該部分是否滿足將被映射至該特殊目的元件之一條件;將該配置轉換成包含複數個狀態之一自動機,其中若該部分滿足該條件,則使用對應於該特殊目的元件之一特殊目的狀態來轉換該部分,且若該部分未滿足該條件,則將該部分轉換成一通用狀態;及將該自動機轉換成機器碼。
  15. 如請求項14之電腦可讀媒體,其中該等指令使該電腦執行包含以下各者之操作:將原始程式碼轉換成該配置;及發佈該機器碼。
  16. 如請求項14之電腦可讀媒體,其中判定該部分是否滿足將被映射至該特殊目的元件之一條件包含:判定該部分是否為確定性的。
  17. 如請求項16之電腦可讀媒體,其中識別該配置之該部分包括:識別一量化;且 其中判定該部分是否為確定性的包括判定在處理該量化時是否可匹配該量化之一驅動表達式。
  18. 如請求項16之電腦可讀媒體,其中識別該配置之該部分包括:識別一量化;且其中判定該部分是否為確定性的包括判定該量化之一重複表達式是否為該量化之另一重複表達式之一首碼。
  19. 如請求項16之電腦可讀媒體,其中識別該配置中之該部分包括識別一量化。
  20. 如請求項19之電腦可讀媒體,其中判定該部分是否為確定性的包括:判定在處理該量化時是否可匹配該量化之一驅動表達式;及判定該量化之一重複表達式是否為該量化之另一重複表達式之一首碼。
  21. 如請求項20之電腦可讀媒體,其中該特殊目的元件包括在該自動機中具有一對應計數器狀態的一計數器,且該通用元件包括在該自動機中具有一對應狀態機元件狀態之一狀態機元件。
  22. 如請求項21之電腦可讀媒體,其中當該部分對應於該量化且該部分為確定性時,將該部分實施為一迴圈,該迴圈包含該量化之一重複表達式及一計數器狀態,其中該計數器狀態經組態以對該重複表達式匹配之一次數計數,且其中在該重複表達式匹配了藉由該量化指定之一第一次數時該計數器狀態啟動一下游狀態。
  23. 如請求項22之電腦可讀媒體,其中該迴圈藉由與該重複 表達式之一否定版本的一匹配而退出。
  24. 如請求項22之電腦可讀媒體,其中當該量化可與單一數目個迴圈匹配時,組態該重複表達式以確證該計數器狀態之一計數輸入;組態該重複表達式之一否定版本以重設該計數器狀態;及組態該計數器狀態以在該計數輸入已確證了等於迴圈之數目的一第二次數但未重設該計數器狀態時確證一輸出。
  25. 如請求項22之電腦可讀媒體,其中當該量化可與多個數目個迴圈匹配時,組態該重複表達式以確證一第一計數器狀態之一計數輸入及一第二計數器狀態之一計數輸入;組態該重複表達式以確證該第一計數器狀態之一重設輸入及該第二計數器狀態之一重設輸入;組態該第一計數器狀態以在該第一計數器狀態之該計數輸入已確證了等於該多個數目個迴圈之一低臨限值的一第三次數但未重設該第一計數器狀態時確證一輸出;及組態該第二計數器狀態以在該第二計數器狀態之該計數輸入已確證了等於該多個數目個迴圈之一高臨限值的一第四次數但未重設該第二計數器狀態時確證該第二計數器狀態之一輸出,其中該第二計數器狀態之該輸出經 組態以確證該第一計數器狀態之該重設輸入。
  26. 一種用於一編譯程式之電腦,其包含:一記憶體,其上面儲存有軟體;及一處理器,其通信地耦接至該記憶體,其中該軟體在由該處理器執行時使該處理器:藉由剖析該複數個正規表達以形成一語法樹以及將該語法樹轉換成一自動機以將正規表達式編譯成用於一目標器件之程式碼,其中該目標器件支援一第一類型之元件及至少一其他類型之元件;其中編譯包括經由對應該第一類型之元件的該自動機中的一第一狀態將對應於該第一類型之元件的一第一正規表達式映射至該第一類型之元件;且其中編譯包括經由對應該至少一其他類型之元件的該自動機中的一第二狀態將不對應於該第一類型之元件的一第二正規表達式映射至該至少一其他類型之元件。
  27. 如請求項26之電腦,其中該目標器件包含一平行機,且該第一類型之元件為一第一類型之硬體元件,且該至少一其他類型之元件包括一第二類型之硬體元件。
  28. 如請求項27之電腦,其中該第二類型之硬體元件可接收一輸入串流並根據該輸入串流提供一輸出;且其中該第一類型之硬體元件不接收該輸入串流且根據來自該目標器件之其他元件的輸入而提供一輸出。
  29. 如請求項28之電腦,其中該第一類型之元件為一計數器 且該第二類型之元件為一狀態機元件。
  30. 如請求項26之電腦,其中該軟體使該處理器:判定一正規表達式是否為對應於該第一類型之元件的一類型;及當該正規表達式並非對應於該第一類型之元件的一類型時,將該正規表達式映射至該至少一其他類型之元件。
  31. 如請求項30之電腦,其中判定一正規表達式是否為對應於該第一類型之元件的一類型包括:判定該正規表達式是否為一量化;及當該正規表達式並非一量化時,將該正規表達式映射至該至少一其他類型之元件。
  32. 如請求項31之電腦,其中該軟體使該處理器:判定該量化是否為確定性的;當該量化為確定性的時,將該正規表達式映射至該第一類型之元件;及當該量化並非確定性的時,將該正規表達式映射至該至少一其他類型之元件。
  33. 如請求項32之電腦,其中判定該量化是否為確定性的包括判定在處理該量化時是否可匹配該量化之一驅動表達式,及該量化之一重複表達式是否為該量化之另一重複表達式之一首碼。
  34. 如請求項26之電腦,其中編譯包括:將該自動機轉換成一接線對照表; 置放該接線對照表之例項;及對該接線對照表之該等例項之間的連接進行路徑選擇。
  35. 如請求項34之電腦,其中該等正規表達式包含用於搜尋無結構資料之準則。
  36. 一種用於一編譯程式之系統,其包含:一電腦,其經組態以:識別有關係連接之運算子的一配置中的對應於一目標器件之一特殊目的元件的一部分,該特殊目的元件為藉由該目標器件之複數個通用元件所執行的一功能所實施之一單一元件,該目標器件亦包括至少一通用元件;判定該部分是否滿足將被映射至該特殊目的元件之一條件;將該配置轉換成包含複數個互連狀態之一自動機,其中若該部分滿足該條件,則將該部分轉換成對應於該特殊目的元件之一特殊目的狀態,且若該部分未滿足該條件,則將該部分轉換成一通用狀態;及將該自動機轉換成機器碼;及用於程式化一平行機之一器件,該器件經組態以將該機器碼載入至該平行機上。
  37. 如請求項36之系統,其中判定該部分是否滿足將被映射至一特殊目的元件之一條件包含:判定該部分是否為確定性的。
  38. 如請求項36之系統,其中識別該配置之一部分包括:識別一量化;且其中判定該部分是否為確定性的包括判定在處理該量化時是否可匹配該量化之一驅動表達式,及該量化之一重複表達式是否為該量化之另一重複表達式之一首碼。
  39. 一種藉由使用請求項1之方法產生之一映像程式化的平行機。
TW101102956A 2011-01-25 2012-01-30 程式化的平行機與電腦實施方法、電腦可讀媒體、非暫態電腦可讀媒體、用於編譯程式之電腦及系統 TWI517036B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US201161436022P 2011-01-25 2011-01-25

Publications (2)

Publication Number Publication Date
TW201237748A TW201237748A (en) 2012-09-16
TWI517036B true TWI517036B (zh) 2016-01-11

Family

ID=46545130

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101102956A TWI517036B (zh) 2011-01-25 2012-01-30 程式化的平行機與電腦實施方法、電腦可讀媒體、非暫態電腦可讀媒體、用於編譯程式之電腦及系統

Country Status (7)

Country Link
US (3) US8843911B2 (zh)
EP (1) EP2668574B1 (zh)
JP (1) JP5848778B2 (zh)
KR (1) KR101606622B1 (zh)
CN (1) CN103547999B (zh)
TW (1) TWI517036B (zh)
WO (1) WO2012103146A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9792097B2 (en) 2011-01-25 2017-10-17 Micron Technology, Inc. Method and apparatus for compiling regular expressions
US9916145B2 (en) 2011-01-25 2018-03-13 Micron Technology, Inc. Utilizing special purpose elements to implement a FSM
US11488378B2 (en) 2010-06-10 2022-11-01 Micron Technology, Inc. Analyzing data using a hierarchical structure

Families Citing this family (52)

* Cited by examiner, † Cited by third party
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
US9348784B2 (en) 2008-12-01 2016-05-24 Micron Technology, Inc. Systems and methods for managing endian mode of a device
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
US8140780B2 (en) 2008-12-31 2012-03-20 Micron Technology, Inc. Systems, methods, and devices for configuring a device
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
US20100174887A1 (en) 2009-01-07 2010-07-08 Micron Technology Inc. Buses for Pattern-Recognition Processors
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
WO2012103151A2 (en) 2011-01-25 2012-08-02 Micron Technology, Inc. State grouping for element utilization
EP2668577B1 (en) 2011-01-25 2019-08-14 Micron Technology, INC. Unrolling quantifications to control in-degree and/or out degree of automaton
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
US8648621B2 (en) 2011-12-15 2014-02-11 Micron Technology, Inc. Counter operation in a state machine lattice
US8593175B2 (en) 2011-12-15 2013-11-26 Micron Technology, Inc. Boolean logic in a state machine lattice
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
US9501131B2 (en) 2012-08-31 2016-11-22 Micron Technology, Inc. Methods and systems for power management in a pattern recognition processing system
US9075428B2 (en) 2012-08-31 2015-07-07 Micron Technology, Inc. Results generation for state machine engines
US9063532B2 (en) * 2012-08-31 2015-06-23 Micron Technology, Inc. Instruction insertion in state machine engines
GB2511072A (en) * 2013-02-22 2014-08-27 Ibm Non-deterministic finite state machine module for use in a regular expression matching system
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
US11366675B2 (en) 2014-12-30 2022-06-21 Micron Technology, Inc. Systems and devices for accessing a state machine
US10430210B2 (en) 2014-12-30 2019-10-01 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
TWI547822B (zh) * 2015-07-06 2016-09-01 緯創資通股份有限公司 資料處理方法及系統
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
JP6896759B2 (ja) * 2016-03-23 2021-06-30 フォグホーン システムズ, インコーポレイテッドFoghorn Systems, Inc. リアルタイムデータフロープログラミングにおけるパターン駆動型反応の合成
US10146555B2 (en) 2016-07-21 2018-12-04 Micron Technology, Inc. Adaptive routing to avoid non-repairable memory and logic defects on automata processor
US10019311B2 (en) 2016-09-29 2018-07-10 Micron Technology, Inc. Validation of a symbol response memory
US10268602B2 (en) 2016-09-29 2019-04-23 Micron Technology, Inc. System and method for individual addressing
US10929764B2 (en) 2016-10-20 2021-02-23 Micron Technology, Inc. Boolean satisfiability
US10592450B2 (en) 2016-10-20 2020-03-17 Micron Technology, Inc. Custom compute cores in integrated circuit devices
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
US10481881B2 (en) * 2017-06-22 2019-11-19 Archeo Futurus, Inc. Mapping a computer code to wires and gates
KR101997012B1 (ko) * 2018-12-18 2019-07-05 한국과학기술정보연구원 오토마타 상태 복잡도에 기초한 프로그램의 리소스 예측 방법 및 이를 적용한 장치
CN109753713B (zh) * 2018-12-28 2023-06-02 中国人民解放军国防科技大学 基于内部实体状态转移的数字电路功能建模方法及系统
US11948855B1 (en) * 2019-09-27 2024-04-02 Rockwell Collins, Inc. Integrated circuit (IC) package with cantilever multi-chip module (MCM) heat spreader
KR20230042986A (ko) * 2021-09-23 2023-03-30 연세대학교 산학협력단 글루시코프 오토마타 생성과 하이브리드 매칭을 활용한 정규 표현식 엔진에 관한 오토마타 처리 장치 및 방법

Family Cites Families (89)

* Cited by examiner, † Cited by third party
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
KR20000068979A (ko) 1996-11-14 2000-11-25 존스 웨인 에이. 어플리케이션 프로그램을 위한 다이나믹 오브젝트를 구성하는 범용 소프트웨어 상태 머신 및 방법
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
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
US6832378B1 (en) 2000-06-20 2004-12-14 International Business Machines Corporation Parallel software processing system
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
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
US7464254B2 (en) 2003-01-09 2008-12-09 Cisco Technology, Inc. Programmable processor apparatus integrating dedicated search registers and dedicated state machine registers with associated execution hardware to support rapid application of rulesets to data
CN1894559A (zh) 2003-03-17 2007-01-10 索尼电子有限公司 执行使命引擎的方法和装置
ATE542176T1 (de) 2003-10-16 2012-02-15 Canon Kk Betriebsschaltung und betriebssteuerverfahren dafür
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
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
US20070112701A1 (en) 2005-08-15 2007-05-17 Microsoft Corporation Optimization of cascaded classifiers
CN101099147B (zh) 2005-11-11 2010-05-19 松下电器产业株式会社 对话支持装置
JP4528728B2 (ja) 2006-01-31 2010-08-18 株式会社東芝 デジタル回路の自動設計装置、自動設計方法、および自動設計プログラム
US7427871B2 (en) 2006-06-21 2008-09-23 Element Cxi, Llc Fault tolerant integrated circuit architecture
US7809723B2 (en) 2006-06-26 2010-10-05 Microsoft Corporation Distributed hierarchical text classification framework
CN1877531A (zh) 2006-06-30 2006-12-13 浙江大学 一种嵌入式编译体系扫描器的实现方法
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
US7962428B2 (en) 2006-11-30 2011-06-14 Siemens Medical Solutions Usa, Inc. System and method for joint optimization of cascaded classifiers for computer aided detection
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
US7912808B2 (en) 2006-12-08 2011-03-22 Pandya Ashish A 100Gbps security and search architecture using programmable intelligent search memory that uses a power down mode
CN101013452A (zh) 2007-02-05 2007-08-08 江苏大学 一种符号化的模型检测方法
US7693806B2 (en) 2007-06-21 2010-04-06 Microsoft Corporation Classification using a cascade approach
CN101360088B (zh) * 2007-07-30 2011-09-14 华为技术有限公司 正则表达式编译、匹配系统及编译、匹配方法
US8561037B2 (en) 2007-08-29 2013-10-15 Convey Computer Compiler for generating an executable comprising instructions for a plurality of different instruction sets
CN101201836B (zh) 2007-09-04 2010-04-14 浙江大学 基于带记忆确定有限自动机的正则表达式匹配加速方法
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控制环路检测方法
JP5321589B2 (ja) * 2008-08-13 2013-10-23 日本電気株式会社 有限オートマトン生成装置、パターンマッチング装置、有限オートマトン回路生成方法およびプログラム
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
US7917684B2 (en) 2008-11-05 2011-03-29 Micron Technology, Inc. Bus translator
US9639493B2 (en) 2008-11-05 2017-05-02 Micron Technology, Inc. Pattern-recognition processor with results buffer
US7970964B2 (en) 2008-11-05 2011-06-28 Micron Technology, Inc. Methods and systems to accomplish variable width data input
US20100118425A1 (en) 2008-11-11 2010-05-13 Menachem Rafaelof Disturbance rejection in a servo control loop using pressure-based disc mode sensor
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
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
TWI395103B (zh) 2008-12-31 2013-05-01 C Media Electronics Inc 自動執行訊號處理方法與具有該自動執行功能之裝置
US8140780B2 (en) 2008-12-31 2012-03-20 Micron Technology, Inc. Systems, methods, and devices for configuring a device
US8214672B2 (en) 2009-01-07 2012-07-03 Micron Technology, Inc. Method and systems for power consumption management of a pattern-recognition processor
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
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
EP2482911B1 (en) 2009-09-29 2022-08-17 Edwards Lifesciences Corporation Devices for delivering an endocardial device
US8489534B2 (en) 2009-12-15 2013-07-16 Paul D. Dlugosch Adaptive content inspection
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
WO2012103146A2 (en) 2011-01-25 2012-08-02 Micron Technology, Inc. Utilizing special purpose elements to implement a fsm
KR101640295B1 (ko) 2011-01-25 2016-07-15 마이크론 테크놀로지, 인크. 정규 표현을 컴파일하기 위한 방법 및 장치
WO2012103151A2 (en) 2011-01-25 2012-08-02 Micron Technology, Inc. State grouping for element utilization
EP2668577B1 (en) 2011-01-25 2019-08-14 Micron Technology, INC. Unrolling quantifications to control in-degree and/or out degree of automaton

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11488378B2 (en) 2010-06-10 2022-11-01 Micron Technology, Inc. Analyzing data using a hierarchical structure
US9792097B2 (en) 2011-01-25 2017-10-17 Micron Technology, Inc. Method and apparatus for compiling regular expressions
US9916145B2 (en) 2011-01-25 2018-03-13 Micron Technology, Inc. Utilizing special purpose elements to implement a FSM
US10089086B2 (en) 2011-01-25 2018-10-02 Micron Technologies, Inc. Method and apparatus for compiling regular expressions

Also Published As

Publication number Publication date
US20160170728A1 (en) 2016-06-16
WO2012103146A3 (en) 2012-11-15
EP2668574A2 (en) 2013-12-04
JP2014506692A (ja) 2014-03-17
EP2668574A4 (en) 2014-06-25
US8843911B2 (en) 2014-09-23
US9471290B2 (en) 2016-10-18
US20120192164A1 (en) 2012-07-26
KR20140006911A (ko) 2014-01-16
CN103547999A (zh) 2014-01-29
TW201237748A (en) 2012-09-16
EP2668574B1 (en) 2021-11-24
CN103547999B (zh) 2017-05-17
US9916145B2 (en) 2018-03-13
JP5848778B2 (ja) 2016-01-27
US20140380288A1 (en) 2014-12-25
KR101606622B1 (ko) 2016-03-25
WO2012103146A2 (en) 2012-08-02

Similar Documents

Publication Publication Date Title
TWI517036B (zh) 程式化的平行機與電腦實施方法、電腦可讀媒體、非暫態電腦可讀媒體、用於編譯程式之電腦及系統
TWI506556B (zh) 用於編譯正規表達式之方法及裝置
TWI502501B (zh) 用以控制自動機之內分支度及/或外分支度之展開量化
JP5763784B2 (ja) 要素利用のための状態のグループ化
JP2014506693A5 (zh)