利用專用元件實(shí)施有限狀態(tài)的制造方法
【專利摘要】本發(fā)明描述用于編譯程序的設(shè)備、系統(tǒng)和方法。一種此類編譯程序產(chǎn)生對(duì)應(yīng)于包含通用元件和專用元件的一組元件的機(jī)器碼。所述編譯程序識(shí)別有關(guān)系連接的運(yùn)算符的布置中的對(duì)應(yīng)于專用元件的一部分。所述編譯程序還確定所述部分是否滿足將被映射到所述專用元件的條件。所述編譯程序還將所述布置轉(zhuǎn)換成包括多個(gè)狀態(tài)的自動(dòng)機(jī),其中如果所述部分滿足所述條件,那么使用對(duì)應(yīng)于所述專用元件的專用狀態(tài)來(lái)轉(zhuǎn)換所述部分。所述編譯程序還將所述自動(dòng)機(jī)轉(zhuǎn)換成機(jī)器碼。本發(fā)明揭示額外設(shè)備、系統(tǒng)和方法。
【專利說(shuō)明】利用專用元件實(shí)施有限狀態(tài)機(jī)
[0001]優(yōu)先權(quán)主張
[0002]本專利申請(qǐng)案主張2011年I月25日申請(qǐng)的標(biāo)題為“利用專用元件實(shí)施有限狀態(tài)機(jī)(UTILIZING SPECIAL PURPOSE ELEMENTS TO IMPLEMENT A FSM) ”的第 61/436,022 號(hào)美國(guó)臨時(shí)專利申請(qǐng)案的優(yōu)先權(quán)權(quán)益,所述美國(guó)臨時(shí)專利申請(qǐng)案的全文特此以引用方式并入本文中。
【技術(shù)領(lǐng)域】【背景技術(shù)】
[0003]有限狀態(tài)機(jī)(FSM)(也被稱作有限狀態(tài)自動(dòng)機(jī)、自動(dòng)機(jī)或簡(jiǎn)稱為狀態(tài)機(jī))為狀態(tài)、狀態(tài)之間的轉(zhuǎn)變和動(dòng)作的表示。有限狀態(tài)機(jī)可用以設(shè)計(jì)數(shù)字邏輯、計(jì)算機(jī)程序或平行機(jī)的映像。有限狀態(tài)機(jī)為由有限數(shù)目個(gè)狀態(tài)、那些狀態(tài)之間的轉(zhuǎn)變和輸出組成的行為模型。有限狀態(tài)機(jī)可表示為一圖,其中所述圖的頂點(diǎn)對(duì)應(yīng)于FSM的狀態(tài),且所述圖的邊對(duì)應(yīng)于歸因于到所述有限狀態(tài)機(jī)的一個(gè)或一個(gè)以上輸入而發(fā)生的狀態(tài)之間的轉(zhuǎn)變。有限狀態(tài)機(jī)還可具有概率轉(zhuǎn)變、模糊狀態(tài)或其它異事。有限狀態(tài)機(jī)可充當(dāng)具有輸入特征和任選的輸出特征的有限內(nèi)部存儲(chǔ)器。具有輸出的有限狀態(tài)機(jī)可被稱作有限狀態(tài)轉(zhuǎn)換器。
[0004]有限狀態(tài)機(jī)的應(yīng)用包含電子設(shè)計(jì)自動(dòng)化、通信協(xié)議設(shè)計(jì)、生物學(xué)和人工智能研究,以及用以描述自然語(yǔ)言的文法的語(yǔ)言學(xué)。
【發(fā)明內(nèi)容】
【專利附圖】
【附圖說(shuō)明】
[0005]圖1說(shuō)明根據(jù)本發(fā)明的各種實(shí)施例的確定性有限狀態(tài)機(jī)的實(shí)例。
[0006]圖2說(shuō)明根據(jù)本發(fā)明的各種實(shí)施例的非確定性有限狀態(tài)機(jī)的實(shí)例。
[0007]圖3說(shuō)明根據(jù)本發(fā)明的各種實(shí)施例的供編譯程序用以將源碼轉(zhuǎn)換成機(jī)器碼的方法的實(shí)例。
[0008]圖4說(shuō)明根據(jù)本發(fā)明的各種實(shí)施例的用于將語(yǔ)法樹(shù)轉(zhuǎn)換成自動(dòng)機(jī)的方法。
[0009]圖5說(shuō)明根據(jù)本發(fā)明的各種實(shí)施例的平行機(jī)的實(shí)例。
[0010]圖6說(shuō)明根據(jù)本發(fā)明的各種實(shí)施例的實(shí)施為有限狀態(tài)機(jī)引擎的圖5的平行機(jī)的實(shí)例。
[0011]圖7說(shuō)明根據(jù)本發(fā)明的各種實(shí)施例的圖6的有限狀態(tài)機(jī)引擎的方框的實(shí)例。
[0012]圖8說(shuō)明根據(jù)本發(fā)明的各種實(shí)施例的圖7的方框的行的實(shí)例。
[0013]圖9說(shuō)明根據(jù)本發(fā)明的各種實(shí)施例的圖8的行的成對(duì)群組的實(shí)例。
[0014]圖10說(shuō)明根據(jù)本發(fā)明的各種實(shí)施例的供編譯程序用以將源碼轉(zhuǎn)換成經(jīng)配置以對(duì)圖5的平行機(jī)編程的映像的方法的實(shí)例。
[0015]圖11說(shuō)明根據(jù)本發(fā)明的各種實(shí)施例的具有專用計(jì)數(shù)器狀態(tài)的實(shí)例自動(dòng)機(jī)。[0016]圖12說(shuō)明根據(jù)本發(fā)明的各種實(shí)施例的具有專用計(jì)數(shù)器狀態(tài)的另一實(shí)例自動(dòng)機(jī)。
[0017]圖13A和13B說(shuō)明根據(jù)本發(fā)明的各種實(shí)施例的實(shí)例自動(dòng)機(jī)。
[0018]圖14說(shuō)明根據(jù)本發(fā)明的各種實(shí)施例的具有不滿足無(wú)前綴條件的量化的正規(guī)表達(dá)式的實(shí)例自動(dòng)機(jī)。
[0019]圖15說(shuō)明根據(jù)本發(fā)明的各種實(shí)施例的具有馮諾依曼(Von Nuemann)架構(gòu)的計(jì)算機(jī)的實(shí)例。
【具體實(shí)施方式】
[0020]以下描述和圖式充分地說(shuō)明特定實(shí)施例以使所屬領(lǐng)域的技術(shù)人員能夠?qū)嵺`所述實(shí)施例。其它實(shí)施例可并有結(jié)構(gòu)、邏輯、電、過(guò)程和其它改變。一些實(shí)施例的部分和特征可包含在其它實(shí)施例的部分和特征中或可替代其它實(shí)施例的部分和特征。權(quán)利要求書中所陳述的實(shí)施例涵蓋那些權(quán)利要求的所有可用等效物。
[0021]本文獻(xiàn)尤其描述將源碼轉(zhuǎn)換成有限狀態(tài)機(jī)的機(jī)器碼實(shí)施方案的編譯程序。機(jī)器碼可對(duì)應(yīng)于目標(biāo)裝置,因?yàn)樗鰴C(jī)器碼經(jīng)配置以在所述目標(biāo)裝置上實(shí)施通過(guò)源碼描述的功能。在一實(shí)例中,所述目標(biāo)裝置為平行機(jī),且機(jī)器碼包括用于所述平行機(jī)的映像。在另一實(shí)例中,所述目標(biāo)裝置包括具有馮諾依曼架構(gòu)的計(jì)算機(jī),且機(jī)器碼包括供所述計(jì)算機(jī)中的處理器執(zhí)行的指令。
[0022]在任何情況下,編譯程序均可將源碼編譯成機(jī)器碼,所述機(jī)器碼實(shí)施體現(xiàn)通過(guò)所述源碼描述的功能的有限狀態(tài)機(jī)。在編譯源碼的過(guò)程中,所述編譯程序?qū)⒃创a轉(zhuǎn)換成自動(dòng)機(jī)。使用所述自動(dòng)機(jī),所述編譯程序可識(shí)別并組合源碼中的冗余,以便優(yōu)化通過(guò)機(jī)器碼實(shí)施的所得有限狀態(tài)機(jī)。另外,所述編譯程序可識(shí)別所述自動(dòng)機(jī)的部分并將所述部分映射到對(duì)應(yīng)于目標(biāo)裝置的元件。當(dāng)目標(biāo)裝置為平行機(jī)時(shí),所述元件可包括所述平行機(jī)的硬件元件。當(dāng)目標(biāo)裝置為具有馮諾依曼架構(gòu)的計(jì)算機(jī)時(shí),所述元件可包括供處理器執(zhí)行的指令。在映射期間,可將有限狀態(tài)機(jī)的某些部分映射到特定(例如,專用)元件以便(例如)改進(jìn)所得機(jī)器碼的性能。
[0023]圖1說(shuō)明實(shí)例有限狀態(tài)機(jī)(FSM) 100。有限狀態(tài)機(jī)100對(duì)應(yīng)于用于將容器中的水位維持在1/4與3/4滿之間的方法。在狀態(tài)102處,激活泵以減少容器中的水位。當(dāng)水位掉落到1/4滿以下時(shí),F(xiàn)SM100轉(zhuǎn)變到狀態(tài)104,在狀態(tài)104下,對(duì)泵去活。在處于狀態(tài)104時(shí),當(dāng)水位超過(guò)3/4滿時(shí),F(xiàn)SM100轉(zhuǎn)變回到狀態(tài)104,在狀態(tài)104下,重新激活泵。到FSM100的輸入為容器中的水位,且輸出為泵開(kāi)/關(guān)信號(hào)。
[0024]FSM可分成兩類:確定性和非確定性的。確定性FSM在給定時(shí)間具有單一執(zhí)行路徑,而非確定性FSM具有多個(gè)同時(shí)的執(zhí)行路徑。具有N個(gè)狀態(tài)的非確定性FSM通常可轉(zhuǎn)換成具有最壞情況2到N個(gè)狀態(tài)的確定性FSM。然而,從非確定性到確定性FSM的此指數(shù)狀態(tài)展開(kāi)通常使非確定性FSM成為具有有限機(jī)器資源和時(shí)間的最實(shí)際的實(shí)施方案。
[0025]FSM100為確定性FSM的實(shí)例,且此確定性FSM100可為較大非確定性FSM的一部分。舉例來(lái)說(shuō),圖2說(shuō)明有一部分是由確定性FSM100組成的非確定性FSM200。FSM200將管壓力的監(jiān)視添加到水位維持FSM100。在FSM200中,在泵運(yùn)作時(shí)監(jiān)視管壓力,且如果管壓力在固定時(shí)間周期內(nèi)過(guò)負(fù)荷,那么停止泵。在FSM200中,當(dāng)管在狀態(tài)102下激活時(shí)管壓力過(guò)負(fù)荷時(shí),F(xiàn)SM200轉(zhuǎn)變到狀態(tài)106,在狀態(tài)106下開(kāi)啟計(jì)時(shí)器。另外,當(dāng)管過(guò)負(fù)荷時(shí),狀態(tài)102轉(zhuǎn)變到自身以使泵維持于“開(kāi)”狀態(tài)。因此,在FSM200中的此位置處,狀態(tài)102( “泵開(kāi)”狀態(tài))和狀態(tài)106 ( “計(jì)時(shí)器開(kāi)”狀態(tài))兩者同時(shí)在作用中。由于狀態(tài)102和106可同時(shí)在作用中,因此存在多個(gè)執(zhí)行路徑,且FSM200因此為非確定性的。當(dāng)管中的壓力不再過(guò)負(fù)荷時(shí),F(xiàn)SM200從狀態(tài)106轉(zhuǎn)變到狀態(tài)102。而且,當(dāng)計(jì)時(shí)器期滿時(shí),F(xiàn)SM200從狀態(tài)102和狀態(tài)106兩者轉(zhuǎn)變到狀態(tài)104以將泵設(shè)定為“關(guān)”狀態(tài)。
[0026]圖3說(shuō)明實(shí)例編譯程序的流程圖300。所述編譯程序采用源碼作為輸入且產(chǎn)生機(jī)器碼以在目標(biāo)裝置上實(shí)施通過(guò)源碼描述的功能。在一個(gè)實(shí)例中,所述目標(biāo)裝置包括如下文關(guān)于圖5到9中所描述的平行機(jī)。所述平行機(jī)包含可設(shè)定為多個(gè)狀態(tài)中的一者的多個(gè)可編程元件。用于平行機(jī)的機(jī)器碼包括用于設(shè)定所述可編程元件中的一者或一者以上的狀態(tài)的映像。在另一實(shí)例中,所述目標(biāo)裝置為具有馮諾依曼架構(gòu)的計(jì)算機(jī)。所述計(jì)算機(jī)包含耦合到一個(gè)或一個(gè)以上存儲(chǔ)器裝置的一個(gè)或一個(gè)以上處理器,所述一個(gè)或一個(gè)以上存儲(chǔ)器裝置上具有供所述一個(gè)或一個(gè)以上處理器執(zhí)行的軟件。用于馮諾依曼架構(gòu)的機(jī)器碼包括供所述一個(gè)或一個(gè)以上處理器執(zhí)行的指令。在下文關(guān)于圖15來(lái)描述具有馮諾依曼架構(gòu)的實(shí)例計(jì)算機(jī)。在任何情況下,所述編譯程序通過(guò)將自動(dòng)機(jī)用作中間轉(zhuǎn)換來(lái)產(chǎn)生機(jī)器碼。所述編譯程序使用自動(dòng)機(jī)以便尤其優(yōu)化所得FSM且又優(yōu)化所述機(jī)器碼。
[0027]在實(shí)例中,源碼描述用于識(shí)別一群符號(hào)內(nèi)的符號(hào)的樣式的搜索字符串。為了描述所述搜索字符串,所述源碼可包含多個(gè)正規(guī)表達(dá)式(regex)。正規(guī)表達(dá)式可為用于描述符號(hào)搜索樣式的字符串。正規(guī)表達(dá)式廣泛用在各種計(jì)算機(jī)領(lǐng)域中,例如編程語(yǔ)言、文字編輯器、網(wǎng)絡(luò)安全和其它領(lǐng)域。在實(shí)例中,由編譯程序支持的正規(guī)表達(dá)式包含用于無(wú)結(jié)構(gòu)數(shù)據(jù)的搜索的搜索準(zhǔn)則。無(wú)結(jié)構(gòu)數(shù)據(jù)可包含以下數(shù)據(jù),其為自由形式的且無(wú)索引施加于數(shù)據(jù)內(nèi)的字。字可包含數(shù)據(jù)內(nèi)的任何字節(jié)組合,可打印和不可打印的。在實(shí)例中,編譯程序可支持用于實(shí)施正規(guī)表達(dá)式的多種不同的源碼語(yǔ)言,包含Perl (例如,Perl兼容正規(guī)表達(dá)式(PCRE))、PHP、Java 和.NET 語(yǔ)言。
[0028]返回參看圖3,在方框302處,編譯程序可剖析源碼以形成有關(guān)系連接的運(yùn)算符的布置。剖析源碼可產(chǎn)生所述源碼的一股表示。在實(shí)例中,所述一股表示包括所述源碼中的呈被稱為語(yǔ)法樹(shù)的樹(shù)形圖形式的正規(guī)表達(dá)式的經(jīng)編碼表示。本文中所描述的實(shí)例將所述布置稱為語(yǔ)法樹(shù)(也被稱為“抽象語(yǔ)法樹(shù)”),然而,在其它實(shí)例中,可使用具體語(yǔ)法樹(shù)或其它布置。
[0029]由于如上文所提及,編譯程序可支持多種語(yǔ)言的源碼,因此,不管是何種語(yǔ)言,剖析將所述源碼轉(zhuǎn)換成非語(yǔ)言特定表示,例如語(yǔ)法樹(shù)。因此,通過(guò)編譯程序進(jìn)行的進(jìn)一步處理(方框304、306、308、310)可從共同輸入結(jié)構(gòu)來(lái)起作用,而不管源碼的語(yǔ)言。
[0030]所述語(yǔ)法樹(shù)包含有關(guān)系連接的多個(gè)運(yùn)算符。所述語(yǔ)法樹(shù)可包含多個(gè)不同類型的運(yùn)算符,其中不同類型的運(yùn)算符對(duì)應(yīng)于通過(guò)源碼實(shí)施的不同功能。即,不同運(yùn)算符可對(duì)應(yīng)于通過(guò)源碼中的正規(guī)表達(dá)式實(shí)施的不同功能。
[0031]在方框304處,將所述語(yǔ)法樹(shù)轉(zhuǎn)換成自動(dòng)機(jī)。自動(dòng)機(jī)包括FSM的軟件模型,且可因此分為確定性或非確定性。確定性自動(dòng)機(jī)在給定時(shí)間具有單一執(zhí)行路徑,而非確定性自動(dòng)機(jī)具有多個(gè)同時(shí)的執(zhí)行路徑。所述自動(dòng)機(jī)包括多個(gè)狀態(tài)。為了將語(yǔ)法樹(shù)轉(zhuǎn)換成自動(dòng)機(jī),將語(yǔ)法樹(shù)中的運(yùn)算符和運(yùn)算符之間的關(guān)系轉(zhuǎn)換成狀態(tài)和狀態(tài)之間的轉(zhuǎn)變。
[0032]在實(shí)例中,自動(dòng)機(jī)包括通用狀態(tài)和專用狀態(tài)。所述通用狀態(tài)和專用狀態(tài)對(duì)應(yīng)于通過(guò)目標(biāo)裝置支持的通用元件和專用元件,編譯程序?yàn)樗瞿繕?biāo)裝置產(chǎn)生機(jī)器碼。不同類型的目標(biāo)裝置可支持不同類型的通用元件以及一個(gè)或一個(gè)以上不同類型的專用元件。通用元件通??捎靡詫?shí)施廣泛范圍的功能,而專用元件通??捎靡詫?shí)施更窄范圍的功能。然而,在實(shí)例中,專用元件可在其窄范圍的適用性內(nèi)實(shí)現(xiàn)(例如)較大效率。因此,專用元件可用以(例如)減少在目標(biāo)裝置中實(shí)施某些功能所需的機(jī)器循環(huán)或機(jī)器資源。在一些實(shí)例中,目標(biāo)裝置僅支持專用元件,其中支持多個(gè)不同類型的專用元件。
[0033]目標(biāo)裝置的類型可很大程度上控制所述目標(biāo)裝置所支持的元件的類型。在一個(gè)實(shí)例中,所述目標(biāo)裝置為具有馮諾依曼架構(gòu)的計(jì)算機(jī),且所支持的元件包含對(duì)應(yīng)于所述計(jì)算機(jī)的處理器的指令集。指令集可包含例如加法、減法、讀取和寫入等通用指令以及例如存儲(chǔ)器的較大塊的多重存儲(chǔ)和移動(dòng)等專門指令。在另一實(shí)例中,目標(biāo)裝置為如下文關(guān)于圖5到9中所描述的平行機(jī)。由平行機(jī)支持的元件包含所述平行機(jī)的硬件元件。硬件組件可包含例如狀態(tài)機(jī)元件等通用元件以及例如計(jì)數(shù)器等專用元件。在一些實(shí)例中,尤其是平行機(jī)實(shí)例,目標(biāo)裝置可支持與相對(duì)較少數(shù)目個(gè)專用元件相比數(shù)目較大的通用元件。因此,在一些實(shí)例中,將用通用元件來(lái)實(shí)施大多數(shù)功能,而用專用元件來(lái)實(shí)施較少的選定功能。
[0034]為了有效地利用目標(biāo)裝置的元件,所述編譯程序使用自動(dòng)機(jī)中的對(duì)應(yīng)于目標(biāo)裝置支持的專用元件的專用狀態(tài)來(lái)轉(zhuǎn)換語(yǔ)法樹(shù)的適當(dāng)部分。所述語(yǔ)法樹(shù)的不使用專用狀態(tài)轉(zhuǎn)換的部分可轉(zhuǎn)換成對(duì)應(yīng)于目標(biāo)裝置支持的通用元件的通用狀態(tài)。所述編譯程序可分析所述語(yǔ)法樹(shù)以確定哪些部分可使用專用狀態(tài)來(lái)轉(zhuǎn)換且哪些部分應(yīng)轉(zhuǎn)換成通用狀態(tài)。在一些實(shí)例中,自動(dòng)機(jī)的大部分轉(zhuǎn)換成一個(gè)或一個(gè)以上通用狀態(tài),而使用一個(gè)或一個(gè)以上專用狀態(tài)來(lái)轉(zhuǎn)換較小百分比。
[0035]舉例來(lái)說(shuō),使用專用狀態(tài)轉(zhuǎn)換自動(dòng)機(jī)的一些部分可減少狀態(tài)的數(shù)目和/或簡(jiǎn)化自動(dòng)機(jī),且因此簡(jiǎn)化通過(guò)所述機(jī)器碼實(shí)施的FSM。舉例來(lái)說(shuō),所述語(yǔ)法樹(shù)的某些部分在使用通用狀態(tài)而不用任何專用狀態(tài)來(lái)轉(zhuǎn)換時(shí)可導(dǎo)致大數(shù)目的狀態(tài)。為了減少狀態(tài)的數(shù)目,可使用一個(gè)或一個(gè)以上專用狀態(tài)可能結(jié)合一個(gè)或一個(gè)以上通用狀態(tài)來(lái)轉(zhuǎn)換這些相同部分。小數(shù)目的專用狀態(tài)可能夠代替大數(shù)目的通用狀態(tài)。由于通用狀態(tài)的數(shù)目通常對(duì)應(yīng)于所得機(jī)器碼所使用的通用元件的數(shù)目,因此減少通用狀態(tài)的數(shù)目可歸因于使用較少的通用元件而減少?gòu)?fù)雜性并增加所得機(jī)器碼的效率。
[0036]在任何情況下,所述編譯程序?qū)⒄Z(yǔ)法樹(shù)中的某些部分轉(zhuǎn)換成某些類型的狀態(tài),且將所述語(yǔ)法樹(shù)中的其它部分轉(zhuǎn)換成其它類型的狀態(tài)。由于狀態(tài)的類型對(duì)應(yīng)于目標(biāo)裝置支持的元件的類型,因此所述轉(zhuǎn)換可具有將由所述源碼實(shí)施的某些功能映射到由所述平行機(jī)支持的特定類型的元件的作用。在目標(biāo)裝置為具有馮諾依曼架構(gòu)的計(jì)算機(jī)的實(shí)例中,源碼中的某些功能可映射到由馮諾依曼計(jì)算機(jī)支持的指令集的特定類型的指令。在目標(biāo)裝置為平行機(jī)的實(shí)例中,源碼的某些功能可映射到通用元件,例如狀態(tài)機(jī)元件,且其它功能可映射到專用元件,例如計(jì)數(shù)器。下文關(guān)于圖4提供關(guān)于將語(yǔ)法樹(shù)轉(zhuǎn)換成自動(dòng)機(jī)的額外細(xì)節(jié)。
[0037]一旦已形成自動(dòng)機(jī),在方框306處,可將所述自動(dòng)機(jī)優(yōu)化以尤其減少其復(fù)雜性和大小。可尤其通過(guò)組合等效狀態(tài)來(lái)優(yōu)化所述自動(dòng)機(jī)。
[0038]在方框308處,將所述自動(dòng)機(jī)轉(zhuǎn)換成用于目標(biāo)裝置的機(jī)器碼。在方框304處,將所述自動(dòng)機(jī)的每一部分轉(zhuǎn)換成如所映射的對(duì)應(yīng)于所述目標(biāo)裝置的元件的機(jī)器碼。在一個(gè)實(shí)例中,所述機(jī)器碼包括用于馮諾依曼架構(gòu)中的處理器的可執(zhí)行指令。在此,機(jī)器碼可包括可執(zhí)行程序。在另一實(shí)例中,機(jī)器碼可包括用于平行機(jī)中的硬件元件的編程的位。在此,所述機(jī)器碼可包括供加載到平行機(jī)上的映像。
[0039]在方框310處,所述機(jī)器碼可通過(guò)編譯程序發(fā)布。在實(shí)例中,可通過(guò)將機(jī)器碼保存到計(jì)算機(jī)可讀媒體來(lái)發(fā)布所述機(jī)器碼。在另一實(shí)例中,可通過(guò)將機(jī)器碼發(fā)送到另一裝置(例如,用于將機(jī)器碼加載到平行機(jī)上的編程裝置)來(lái)發(fā)布所述機(jī)器碼。在再一實(shí)例中,可通過(guò)將機(jī)器碼加載到平行機(jī)上來(lái)發(fā)布所述機(jī)器碼。在又一實(shí)例中,可通過(guò)在顯示裝置上顯示機(jī)器碼來(lái)發(fā)布所述機(jī)器碼。
[0040]在實(shí)例中,所述編譯程序可由用于具有馮諾依曼架構(gòu)的計(jì)算機(jī)的指令來(lái)實(shí)施。這些指令可致使所述計(jì)算機(jī)上的處理器實(shí)施所述編譯程序的功能。舉例來(lái)說(shuō),所述指令在由所述處理器執(zhí)行時(shí)可致使所述處理器對(duì)可由所述處理器存取的源碼執(zhí)行如方框302、304、306、308和310中所描述的動(dòng)作。具有馮諾依曼架構(gòu)的實(shí)例計(jì)算機(jī)展示于圖15中且在下文描述。
[0041]圖4說(shuō)明用于將布置(例如,語(yǔ)法樹(shù))轉(zhuǎn)換成自動(dòng)機(jī)的方法400,其中使用專用狀態(tài)來(lái)轉(zhuǎn)換所述語(yǔ)法樹(shù)的某些部分。為了利用自動(dòng)機(jī)內(nèi)的專用狀態(tài),在方框402處,編譯程序首先識(shí)別所述語(yǔ)法樹(shù)的對(duì)應(yīng)于目標(biāo)裝置支持的專用元件的部分。舉例來(lái)說(shuō),在平行機(jī)中,通??赡茉谛枰獣r(shí)借助通用狀態(tài)來(lái)實(shí)施整個(gè)語(yǔ)法樹(shù)。這是因?yàn)橥ㄓ脿顟B(tài)可以某些方式組合以實(shí)施所述平行機(jī)支持的所有功能。然而,如上文所提及,專用元件希望僅實(shí)施某些功能。因此,編譯程序識(shí)別所述語(yǔ)法樹(shù)中的可由專用元件實(shí)施或可由專用元件有效實(shí)施的運(yùn)算符。如下文所描述,可接著使用專用狀態(tài)來(lái)轉(zhuǎn)換語(yǔ)法樹(shù)的這些運(yùn)算符和周圍部分。
[0042]在實(shí)例中,基于所述語(yǔ)法樹(shù)中的運(yùn)算符的功能來(lái)識(shí)別所述語(yǔ)法樹(shù)的對(duì)應(yīng)于專用狀態(tài)的部分。事實(shí)上,通過(guò)編譯程序識(shí)別的運(yùn)算符的功能性可對(duì)應(yīng)于所述目標(biāo)裝置的專用元件希望實(shí)施的特定功能性。在實(shí)例中,當(dāng)所述目標(biāo)裝置支持作為專用元件的計(jì)數(shù)器時(shí),所述編譯程序可將所述語(yǔ)法樹(shù)中的量化識(shí)別為對(duì)應(yīng)于專用元件。關(guān)于圖5到14提供關(guān)于量化和計(jì)數(shù)器的更多細(xì)節(jié)。
[0043]在方框404處,一旦已將一部分識(shí)別為對(duì)應(yīng)于專用元件,便可進(jìn)一步分析所識(shí)別的部分以確定其是否滿足某些條件以便被映射到專用元件。在實(shí)例中,所述條件包含對(duì)應(yīng)于所識(shí)別部分的自動(dòng)機(jī)是否為確定性的。即,所述條件對(duì)應(yīng)于,不管有一部分為所識(shí)別部分的較大自動(dòng)機(jī)(例如,基于整個(gè)語(yǔ)法樹(shù)形成的自動(dòng)機(jī))是否為確定性的,所識(shí)別部分在轉(zhuǎn)換成通用狀態(tài)的自動(dòng)機(jī)時(shí)是否為確定性的。如果對(duì)應(yīng)于所識(shí)別部分的自動(dòng)機(jī)為確定性的,那么在方框406處,使用一個(gè)或一個(gè)以上專用狀態(tài)來(lái)轉(zhuǎn)換所述所識(shí)別部分。如果所述自動(dòng)機(jī)并非確定性的,那么在方框408處,使用一個(gè)或一個(gè)以上通用狀態(tài)而不用任何專用狀態(tài)來(lái)轉(zhuǎn)換所識(shí)別部分。在其它實(shí)例中,所述自動(dòng)機(jī)可在所識(shí)別能力為確定性時(shí)使用第一類型的專用狀態(tài)來(lái)轉(zhuǎn)換所識(shí)別部分且在所識(shí)別部分并非確定性時(shí)使用另一類型的專用狀態(tài)來(lái)轉(zhuǎn)換所識(shí)別部分。在又其它實(shí)例中,可使用其它條件來(lái)確定在轉(zhuǎn)換所述語(yǔ)法樹(shù)的所識(shí)別部分時(shí)將使用哪類型的狀態(tài)。
[0044]在實(shí)例中,為了在方框404處確定語(yǔ)法樹(shù)的所識(shí)別部分是否為確定性的,編譯程序可確定所識(shí)別部分在轉(zhuǎn)換成自動(dòng)機(jī)時(shí)是否在給定時(shí)間僅具有一個(gè)作用中狀態(tài)。此可通過(guò)(例如)找出是否存在干擾到所識(shí)別部分的任何條件來(lái)確定。舉例來(lái)說(shuō),在所識(shí)別部分為量化時(shí),編譯程序可分析所述自動(dòng)機(jī)以確定所述自動(dòng)機(jī)是否滿足“無(wú)重入”條件或“無(wú)前綴”條件。在下文關(guān)于圖10到14提供關(guān)于無(wú)重入和無(wú)前綴干擾條件的額外細(xì)節(jié)。
[0045]使用這些確定性,可將語(yǔ)法樹(shù)中的每一運(yùn)算符轉(zhuǎn)換成自動(dòng)機(jī)的一個(gè)或一個(gè)以上狀態(tài)。一些運(yùn)算符可通過(guò)識(shí)別由所述運(yùn)算符所實(shí)施的特定功能和在適當(dāng)時(shí)使用所述自動(dòng)機(jī)中的一個(gè)或一個(gè)以上專用狀態(tài)來(lái)轉(zhuǎn)換那些功能來(lái)如上文所描述進(jìn)行轉(zhuǎn)換。不使用一個(gè)或一個(gè)以上專用狀態(tài)轉(zhuǎn)換的運(yùn)算符可默認(rèn)地轉(zhuǎn)換為一個(gè)或一個(gè)以上通用狀態(tài)。舉例來(lái)說(shuō),可分析所述語(yǔ)法樹(shù)以識(shí)別所有適用運(yùn)算符并將所述運(yùn)算符映射到平行機(jī)中的計(jì)數(shù)器。一旦所有適用運(yùn)算符已映射到一個(gè)或一個(gè)以上計(jì)數(shù)器,便可將剩余運(yùn)算符映射到一個(gè)或一個(gè)以上狀態(tài)機(jī)元件。在其它實(shí)例中,通過(guò)識(shí)別對(duì)應(yīng)于特定部分的一個(gè)或一個(gè)以上特定元件來(lái)映射所述語(yǔ)法樹(shù)的所有部分。
[0046]實(shí)例實(shí)施例
[0047]下文關(guān)于圖5到15所作的描述與使用平行機(jī)中的專用元件實(shí)施FSM的實(shí)例實(shí)施例有關(guān)。在實(shí)例中,所述平行機(jī)的專用元件包含計(jì)數(shù)器。所述計(jì)數(shù)器希望實(shí)施源碼中的量化。參看圖5到9所作的描述與實(shí)例平行機(jī)有關(guān),且關(guān)于圖10到14所作的描述描述了用以產(chǎn)生機(jī)器碼以對(duì)所述平行機(jī)編程的編譯程序。
[0048]圖5說(shuō)明可用以實(shí)施用于分析數(shù)據(jù)的階層式結(jié)構(gòu)的實(shí)例平行機(jī)500。平行機(jī)500可接收輸入數(shù)據(jù)并基于所述輸入數(shù)據(jù)提供輸出。平行機(jī)500可包含用于接收輸入數(shù)據(jù)的數(shù)據(jù)輸入端口 510和用于將輸出提供到另一裝置的輸出端口 514。數(shù)據(jù)輸入端口 510提供用于將輸入到所述平行機(jī)500的數(shù)據(jù)的接口。
[0049]平行機(jī)500包含多個(gè)可編程元件,包含通用元件502和專用元件512。通用元件502可包含一個(gè)或一個(gè)以上輸入504和一個(gè)或一個(gè)以上輸出506??蓪⑼ㄓ迷?02編程到多個(gè)狀態(tài)中的一者中。通用元件502的狀態(tài)確定所述通用元件502將基于給定輸入提供哪一(些)輸出。即,通用元件502的狀態(tài)確定可編程元件將基于給定輸入如何起反應(yīng)。輸入到數(shù)據(jù)輸入端口 510的數(shù)據(jù)可提供到所述多個(gè)通用元件502以致使所述通用元件502對(duì)其采取行動(dòng)。通用元件502的實(shí)例可包含下文詳細(xì)論述的狀態(tài)機(jī)元件(SME)和可配置邏輯塊。在實(shí)例中,SME可設(shè)定為給定狀態(tài)以當(dāng)在數(shù)據(jù)輸入端口 510處接收到給定輸入時(shí)提供某一輸出(例如,高或“I”信號(hào))。當(dāng)在數(shù)據(jù)輸入端口 510處接收到不同于給定輸入的輸入時(shí),SME可提供不同輸出(例如,低或“O”信號(hào))。在實(shí)例中,可配置邏輯塊可經(jīng)設(shè)定以基于在數(shù)據(jù)輸入端口 510處接收到的輸入來(lái)執(zhí)行布林邏輯函數(shù)(例如,“和”(AND)、“或”(0R)、“或非” (NOR)等)。
[0050]平行機(jī)500還可包含用于將程序(例如,映像)加載到平行機(jī)500上的編程接口511。所述映像可編程(例如,設(shè)定)通用元件502的狀態(tài)。即,所述映像可配置通用元件502以按某一方式來(lái)對(duì)給定輸入起反應(yīng)。舉例來(lái)說(shuō),通用元件502可經(jīng)設(shè)定,以當(dāng)在數(shù)據(jù)輸入端口 510處接收到字符‘a(chǎn)’時(shí)輸出高信號(hào)。在一些實(shí)例中,平行機(jī)500可使用時(shí)鐘信號(hào)來(lái)控制通用元件502的操作的時(shí)序。在某些實(shí)例中,平行機(jī)500可包含用于與通用元件502交互和用于執(zhí)行專用功能的專用元件512(例如,RAM、邏輯門、計(jì)數(shù)器、查找表等)。在一些實(shí)施例中,在數(shù)據(jù)輸入端口 510處接收到的數(shù)據(jù)可包含隨時(shí)間過(guò)去或一齊接收到的一組固定的數(shù)據(jù)或隨時(shí)間過(guò)去而接收到的數(shù)據(jù)流??蓮鸟詈系狡叫袡C(jī)500的任何源接收數(shù)據(jù)或通過(guò)耦合到平行機(jī)500的任何源產(chǎn)生數(shù)據(jù),所述任何源例如數(shù)據(jù)庫(kù)、傳感器、網(wǎng)絡(luò)等。
[0051]平行機(jī)500還包含用于將平行機(jī)500的不同元件(例如,通用元件502、數(shù)據(jù)輸入端口 510、輸出端口 514、編程接口 511和專用元件512)選擇性地耦合在一起的多個(gè)可編程開(kāi)關(guān)508。因此,平行機(jī)500包括在所述元件間形成的可編程矩陣。在實(shí)例中,可編程開(kāi)關(guān)508可將兩個(gè)或兩個(gè)以上元件選擇性地耦合到彼此,使得通用元件502的輸入504、數(shù)據(jù)輸入端口 510、編程接口 511或?qū)S迷?12可經(jīng)由一個(gè)或一個(gè)以上可編程開(kāi)關(guān)508而耦合到通用元件502的輸出506、輸出端口 514、編程接口 511或?qū)S迷?12。因此,所述元件之間的信號(hào)的投送可通過(guò)設(shè)定可編程開(kāi)關(guān)508來(lái)控制。盡管圖5說(shuō)明給定元件與可編程開(kāi)關(guān)508之間的某一數(shù)目的導(dǎo)體(例如,電線),但應(yīng)理解,在其它實(shí)例中,可使用不同數(shù)目的導(dǎo)體。而且,盡管圖5說(shuō)明每一通用元件502個(gè)別地耦合到可編程開(kāi)關(guān)508,但在其它實(shí)例中,多個(gè)通用元件502可作為群組(例如,塊802,如圖8中所說(shuō)明)而耦合到可編程開(kāi)關(guān)508。在實(shí)例中,數(shù)據(jù)輸入端口 510、數(shù)據(jù)輸出端口 514和/或編程接口 511可實(shí)施為寄存器,以使得到寄存器的寫入將數(shù)據(jù)提供到相應(yīng)元件或從相應(yīng)元件提供數(shù)據(jù)。
[0052]在實(shí)例中,單一平行機(jī)500實(shí)施于物理裝置上,然而,在其它實(shí)例中,兩個(gè)或兩個(gè)以上平行機(jī)500可實(shí)施于單一物理裝置(例如,物理芯片)上。在實(shí)例中,多個(gè)平行機(jī)500中的每一者可包含不同的數(shù)據(jù)輸入端口 510、不同的輸出端口 514、不同的編程接口 511,和一組不同的通用元件502。此外,每一組通用元件502可對(duì)其對(duì)應(yīng)輸入數(shù)據(jù)端口 510處的數(shù)據(jù)起反應(yīng)(例如,輸出高或低信號(hào))。舉例來(lái)說(shuō),對(duì)應(yīng)于第一平行機(jī)500的第一組通用元件502可對(duì)對(duì)應(yīng)于第一平行機(jī)500的第一數(shù)據(jù)輸入端口 510處的數(shù)據(jù)起反應(yīng)。對(duì)應(yīng)于第二平行機(jī)500的第二組通用元件502可對(duì)對(duì)應(yīng)于第二平行機(jī)500的第二數(shù)據(jù)輸入端口 510起反應(yīng)。因此,每一平行機(jī)500包含一組通用元件502,其中不同組的通用元件502可對(duì)不同輸入數(shù)據(jù)起反應(yīng)。類似地,每一平行機(jī)500和每一組對(duì)應(yīng)的通用元件502可提供不同輸出。在一些實(shí)例中,來(lái)自第一平行機(jī)500的輸出端口 514可耦合到第二平行機(jī)500的輸入端口510,使得用于第二平行機(jī)500的輸入數(shù)據(jù)可包含來(lái)自第一平行機(jī)500的輸出數(shù)據(jù)。
[0053]在實(shí)例中,用于加載到平行機(jī)100上的映像包括用于在平行機(jī)100內(nèi)設(shè)定可編程元件102的狀態(tài)、編程可編程開(kāi)關(guān)108和配置專用元件112的多個(gè)信息位。在實(shí)例中,所述映像可加載到平行機(jī)100上以編程所述平行機(jī)100以基于某些輸入而提供所要輸出。輸出端口 114可基于可編程元件102對(duì)在數(shù)據(jù)輸入端口 110處的數(shù)據(jù)所起的反應(yīng)來(lái)提供來(lái)自平行機(jī)100的輸出。來(lái)自輸出端口 114的輸出可包含指示給定樣式的匹配的單一位、包括指示與多個(gè)樣式的匹配和不匹配的多個(gè)位的字、包括指示多個(gè)作用中和非作用中狀態(tài)的多個(gè)位的字,和對(duì)應(yīng)于在給定時(shí)刻所有或某些可編程元件102的狀態(tài)的狀態(tài)向量。
[0054]平行機(jī)500的實(shí)例用途包含樣式辨識(shí)(例如,語(yǔ)音辨識(shí)、圖像辨識(shí)等)、信號(hào)處理、成像、計(jì)算機(jī)視覺(jué)、密碼學(xué)和其它。在某些實(shí)例中,平行機(jī)500可包括有限狀態(tài)機(jī)(FSM)引擎、現(xiàn)場(chǎng)可編程門陣列(FPGA)和其變體。此外,平行機(jī)500可為較大裝置中的組件,所述較大裝置例如計(jì)算機(jī)、尋呼機(jī)、蜂窩式電話、個(gè)人記事本、便攜式音頻播放器、網(wǎng)絡(luò)裝置(例如,路由器、防火墻、交換機(jī)或其任何組合)、控制電路、相機(jī)等。
[0055]圖6到9說(shuō)明在本文中被稱作“FSM引擎600”的平行機(jī)的實(shí)例。在實(shí)例中,F(xiàn)SM引擎600包括有限狀態(tài)機(jī)的硬件實(shí)施方案。因此,F(xiàn)SM引擎600實(shí)施對(duì)應(yīng)于FSM中的多個(gè)狀態(tài)的多個(gè)可選擇性地耦合的硬件元件(例如,可編程元件)。類似于FSM中的狀態(tài),硬件元件可分析輸入流且基于所述輸入流來(lái)激活下游硬件元件。
[0056]FSM引擎600包含多個(gè)可編程元件,包含通用元件和專用元件。通用元件可經(jīng)編程以實(shí)施許多不同功能。這些通用元件包含SME604、605 (展示于圖9中),所述SME604、605階層式組織成行606 (展示于圖7和8中)和塊602 (展示于圖6和7中)。為了在經(jīng)階層式組織的SME604、605之間投送信號(hào),使用可編程開(kāi)關(guān)的階層,所述階層包含塊間開(kāi)關(guān)603 (展示于圖6和7中)、塊內(nèi)開(kāi)關(guān)608 (展示于圖7和8中)和行內(nèi)開(kāi)關(guān)612 (展示于圖8中)。SME604、605可對(duì)應(yīng)于由FSM引擎600實(shí)施的FSM的狀態(tài)。如下文所描述,可通過(guò)使用可編程開(kāi)關(guān)將SME604、605耦合在一起。因此,可通過(guò)編程SME604、605以對(duì)應(yīng)于狀態(tài)的功能和通過(guò)將SME604、605選擇性地耦合在一起以對(duì)應(yīng)于FSM中的狀態(tài)之間的轉(zhuǎn)變來(lái)在FSM引擎600上實(shí)施FSM。
[0057]圖6說(shuō)明實(shí)例FSM引擎600的全圖。FSM引擎600包含多個(gè)塊602,所述塊可與可編程塊間開(kāi)關(guān)603選擇性地耦合在一起。另外,塊602可選擇性地耦合到用于接收信號(hào)(例如,數(shù)據(jù))和將數(shù)據(jù)提供到塊602的輸入塊609(例如,數(shù)據(jù)輸入端口)。塊602還可選擇性地耦合到用于將來(lái)自塊602的信號(hào)提供到外部裝置(例如,另一 FSM引擎600)的輸出塊613 (例如,輸出端口)。FSM引擎600還可包含用于將程序(例如,映像)加載到FSM引擎600上的編程接口 611。所述映像可編程(例如,設(shè)定)SME604、605的狀態(tài)。S卩,所述映像可配置SME604、605以按某一方式來(lái)對(duì)輸入塊609處的給定輸入起反應(yīng)。舉例來(lái)說(shuō),SME604可經(jīng)設(shè)定,以當(dāng)在輸入塊609處接收到字符‘a(chǎn)’時(shí)輸出高信號(hào)。
[0058]在實(shí)例中,輸入塊609、輸出塊613和/或編程接口 611可實(shí)施為寄存器,以使得到寄存器的寫入將數(shù)據(jù)提供到相應(yīng)元件或從相應(yīng)元件提供數(shù)據(jù)。因此,來(lái)自存儲(chǔ)于對(duì)應(yīng)于編程接口 611的寄存器中的映像的位可加載于SME604、605上。盡管圖6說(shuō)明塊602、輸入塊609、輸出塊613和塊間開(kāi)關(guān)603之間的某一數(shù)目的導(dǎo)體(例如,電線、跡線),但應(yīng)理解,在其它實(shí)例中,可使用更少或更多的導(dǎo)體。
[0059]圖7說(shuō)明塊602的實(shí)例。塊602可包含多個(gè)行606,所述行可與可編程塊內(nèi)開(kāi)關(guān)608選擇性地耦合在一起。另外,行606可通過(guò)塊間開(kāi)關(guān)603而選擇性地耦合到另一塊602內(nèi)的另一行606。在實(shí)例中,包含緩沖器601以控制去往/來(lái)自塊間開(kāi)關(guān)603的信號(hào)的時(shí)序。行606包含多個(gè)SME604、605,所述多個(gè)SME604、605組織成本文中被稱作成對(duì)群組(GOT) 610的元件對(duì)。在實(shí)例中,塊602包括十六(16)行606。
[0060]圖8說(shuō)明行606的實(shí)例。G0T610可通過(guò)可編程行內(nèi)開(kāi)關(guān)612而選擇性地耦合到其它G0T610和行606內(nèi)的任何其它元件624。G0T610還可借助塊內(nèi)開(kāi)關(guān)608而耦合到其它行606中的其它G0T610,或借助塊間開(kāi)關(guān)603而耦合到其它塊602中的其它G0T610。在實(shí)例中,G0T610具有第一輸入614和第二輸入616以及輸出618。第一輸入614耦合到G0T610的第一 SME604,且第二輸入614耦合到G0T610的第二 SME604。
[0061]在實(shí)例中,行606包含第一多個(gè)行互連導(dǎo)體620和第二多個(gè)行互連導(dǎo)體622。在實(shí)例中,G0T610的輸入614、616可耦合到一個(gè)或一個(gè)以上行互連導(dǎo)體620、622,且輸出618可耦合到一個(gè)行互連導(dǎo)體620、622。在實(shí)例中,第一多個(gè)行互連導(dǎo)體620可耦合到行606內(nèi)的每一 G0T610的每一 SME604。第二多個(gè)行互連導(dǎo)體622可耦合到行606內(nèi)的每一 G0T610的一個(gè)SME604,但不可耦合到G0T610的另一 SME604。在實(shí)例中,所述第二多個(gè)行互連導(dǎo)體622的前一半可耦合到行606內(nèi)的SME604的前一半(來(lái)自每一 G0T610的一個(gè)SME604),且所述第二多個(gè)行互連導(dǎo)體622的后一半可稱合到行606內(nèi)的SME604的后一半(來(lái)自每一G0T610的另一 SME604)。所述第二多個(gè)行互連導(dǎo)體622與SME604、605之間的有限連接性在本文中被稱作“對(duì)等性”。
[0062]在實(shí)例中,行606還可包含專用元件624,例如計(jì)數(shù)器、可編程布林邏輯元件、現(xiàn)場(chǎng)可編程門陣列(FPGA)、專用集成電路(ASIC)、可編程處理器(例如,微處理器)和其它元件。另外,在實(shí)例中,所述專用元件624在不同行606中為不同的。舉例來(lái)說(shuō),塊602中的行606中的四個(gè)可包含布林邏輯作為專用元件624,且塊602中的其它八個(gè)行606可包含計(jì)數(shù)器作為專用元件624。
[0063]在實(shí)例中,專用元件624包含計(jì)數(shù)器(本文中也被稱作計(jì)數(shù)器624)。在實(shí)例中,計(jì)數(shù)器624包括12位可編程遞減計(jì)數(shù)器。所述12位可編程計(jì)數(shù)器624具有計(jì)數(shù)輸入、復(fù)位輸入,和零計(jì)數(shù)輸出。所述計(jì)數(shù)輸入在被斷言時(shí)使計(jì)數(shù)器624的值遞減一。所述復(fù)位輸入在被斷言時(shí)致使計(jì)數(shù)器624加載來(lái)自相關(guān)聯(lián)的寄存器的初始值。對(duì)于所述12位計(jì)數(shù)器624,可加載高達(dá)12位的數(shù)作為初始值。當(dāng)計(jì)數(shù)器624的值遞減到零(O)時(shí),斷言所述零計(jì)數(shù)輸出。計(jì)數(shù)器624還具有至少兩種模式,脈沖和保持。當(dāng)將計(jì)數(shù)器624設(shè)定為脈沖模式時(shí),在計(jì)數(shù)器624遞減到零時(shí)的第一時(shí)鐘循環(huán)期間斷言零計(jì)數(shù)輸出,且在接下來(lái)的時(shí)鐘循環(huán)處,即使斷言了計(jì)數(shù)輸入,仍不再斷言零計(jì)數(shù)輸出。此狀態(tài)繼續(xù),直到通過(guò)復(fù)位輸入被斷言而復(fù)位計(jì)數(shù)器624為止。當(dāng)將計(jì)數(shù)器624設(shè)定為保持模式時(shí),在計(jì)數(shù)器624遞減到零時(shí)的第一時(shí)鐘循環(huán)期間斷言零計(jì)數(shù)輸出,且在斷言了計(jì)數(shù)輸入時(shí)保持為經(jīng)斷言的,直到通過(guò)復(fù)位輸入被斷言而復(fù)位計(jì)數(shù)器624為止。
[0064]圖9說(shuō)明G0T610的實(shí)例。G0T610包含第一 SME604和第二 SME605,其具有輸入614,616且具有其耦合到OR門630的輸出626、628。用OR門630對(duì)輸出626、628 —起進(jìn)行邏輯OR運(yùn)算以形成G0T610的共同輸出618。在實(shí)例中,第一 SME604和第二 SME605展現(xiàn)對(duì)等性,其中第一 SME604的輸入614可耦合到行互連導(dǎo)體622中的一些,且第二 SME605的輸入616可耦合到其它行互連導(dǎo)體622。在實(shí)例中,可通過(guò)設(shè)定開(kāi)關(guān)640以將第一 SME604的輸出626耦合到第二 SME605的輸入616來(lái)將G0T610內(nèi)的兩個(gè)SME604、605級(jí)聯(lián)。
[0065]在實(shí)例中,狀態(tài)機(jī)元件604、605包括與檢測(cè)線634并聯(lián)耦合的多個(gè)存儲(chǔ)器單元632,例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)中所常用的那些存儲(chǔ)器單元。一種此類存儲(chǔ)器單元632包括可設(shè)定為數(shù)據(jù)狀態(tài)的存儲(chǔ)器單元,所述數(shù)據(jù)狀態(tài)例如對(duì)應(yīng)于高或低值(例如,I或O)的狀態(tài)。存儲(chǔ)器單元632的輸出耦合到檢測(cè)線634,且存儲(chǔ)器單元632的輸入基于數(shù)據(jù)流線636上的數(shù)據(jù)而接收信號(hào)。在實(shí)例中,解碼數(shù)據(jù)流線636上的輸入以選擇所述存儲(chǔ)器單元632中的一者。選定的存儲(chǔ)器單元632將其所存儲(chǔ)的數(shù)據(jù)狀態(tài)作為輸出提供到檢測(cè)線634上。舉例來(lái)說(shuō),在數(shù)據(jù)輸入端口 609處接收到的數(shù)據(jù)可提供到解碼器(未圖示),且所述解碼器可選擇所述數(shù)據(jù)流線636中的一者。在實(shí)例中,所述解碼器可將ACSII字符轉(zhuǎn)換成256位的I。
[0066]因此,當(dāng)存儲(chǔ)器單元632設(shè)定為高值且數(shù)據(jù)流線636上的數(shù)據(jù)對(duì)應(yīng)于存儲(chǔ)器單元632時(shí),所述存儲(chǔ)器單元632輸出高信號(hào)到檢測(cè)線634。當(dāng)數(shù)據(jù)流線636上的數(shù)據(jù)對(duì)應(yīng)于存儲(chǔ)器單元632且存儲(chǔ)器單元632設(shè)定為低值時(shí),存儲(chǔ)器單元632輸出低信號(hào)到檢測(cè)線634。在檢測(cè)線634上的來(lái)自存儲(chǔ)器單元632的輸出通過(guò)檢測(cè)電路638來(lái)感測(cè)。在實(shí)例中,輸入線614、616上的信號(hào)將相應(yīng)檢測(cè)電路638設(shè)定為作用中或非作用中狀態(tài)。當(dāng)設(shè)定為非作用中狀態(tài)時(shí),檢測(cè)電路638在相應(yīng)輸出626、628上輸出低信號(hào),而不管相應(yīng)檢測(cè)線634上的信號(hào)。當(dāng)設(shè)定為作用中狀態(tài)時(shí),當(dāng)檢測(cè)到來(lái)自相應(yīng)SME604、605的存儲(chǔ)器單元634中的一者的高信號(hào)時(shí),檢測(cè)電路638在相應(yīng)輸出線626、628上輸出高信號(hào)。當(dāng)在作用中狀態(tài)時(shí),當(dāng)來(lái)自相應(yīng)SME604、605的所有存儲(chǔ)器單元634的信號(hào)為低時(shí),檢測(cè)電路638在相應(yīng)輸出線626、628上輸出低信號(hào)。
[0067]在實(shí)例中,SME604、605包含256個(gè)存儲(chǔ)器單元632,且每一存儲(chǔ)器單元632耦合到不同的數(shù)據(jù)流線636。因此,SME604、605可經(jīng)編程以當(dāng)數(shù)據(jù)流線636中的選定的一者或一者以上上面具有高信號(hào)時(shí)輸出高信號(hào)。舉例來(lái)說(shuō),SME604可使第一存儲(chǔ)器單元632(例如,位O)設(shè)定為高且使所有其它存儲(chǔ)器單元632 (例如,位I到255)設(shè)定為低。當(dāng)相應(yīng)檢測(cè)電路638處于作用中狀態(tài)時(shí),當(dāng)對(duì)應(yīng)于位O的數(shù)據(jù)流線636上面具有高信號(hào)時(shí),SME604在輸出626上輸出高信號(hào)。在其它實(shí)例中,SME604可經(jīng)設(shè)定,以當(dāng)通過(guò)將適當(dāng)?shù)拇鎯?chǔ)器單元632設(shè)定為高值而使多個(gè)數(shù)據(jù)流線636中的一者上面具有高信號(hào)時(shí)輸出高信號(hào)。
[0068]在實(shí)例中,可通過(guò)從相關(guān)聯(lián)的寄存器讀取位來(lái)將存儲(chǔ)器單元632設(shè)定為高值或低值。因此,可通過(guò)將由編譯程序產(chǎn)生的映像存儲(chǔ)到寄存器中且將寄存器中的位加載到相關(guān)聯(lián)的存儲(chǔ)器單元632中來(lái)編程SME604。在實(shí)例中,由所述編譯程序產(chǎn)生的映像包含高和低(例如,I和O)位的二進(jìn)制映像。所述映像可通過(guò)將SME604、605級(jí)聯(lián)而編程FSM引擎600以作為FSM而操作。舉例來(lái)說(shuō),可通過(guò)將檢測(cè)電路638設(shè)定為作用中狀態(tài)而將第一 SME604設(shè)定為作用中狀態(tài)。第一 SME604可經(jīng)設(shè)定,以當(dāng)對(duì)應(yīng)于位O的數(shù)據(jù)流線636上面具有高信號(hào)時(shí)輸出高信號(hào)。第二 SME605最初可設(shè)定為非作用中狀態(tài),但可經(jīng)設(shè)定以在作用中時(shí)當(dāng)對(duì)應(yīng)于位I的數(shù)據(jù)流線636上面具有高信號(hào)時(shí)輸出高信號(hào)。可通過(guò)設(shè)定第一 SME604的輸出626以耦合到第二 SME605的輸入616來(lái)將第一 SME604與第二 SME605級(jí)聯(lián)。因此,當(dāng)在對(duì)應(yīng)于位O的數(shù)據(jù)流線636上感測(cè)到高信號(hào)時(shí),第一 SME604在輸出626上輸出高信號(hào)且將第二 SME605的檢測(cè)電路638設(shè)定為作用中狀態(tài)。當(dāng)在對(duì)應(yīng)于位I的數(shù)據(jù)流線636上感測(cè)到高信號(hào)時(shí),第二 SME605在輸出628上輸出高信號(hào)以激活另一 SME605或用于來(lái)自FSM引擎600的輸出。
[0069]圖10說(shuō)明供編譯程序用以將源碼轉(zhuǎn)換成經(jīng)配置以編程平行機(jī)的映像的方法1000的實(shí)例。方法1000包含:將所述源碼剖析成語(yǔ)法樹(shù)(方框1002);將所述語(yǔ)法樹(shù)轉(zhuǎn)換成自動(dòng)機(jī)(方框1004);優(yōu)化所述自動(dòng)機(jī)(方框1006);將所述自動(dòng)機(jī)轉(zhuǎn)換成連線表(方框1008);將所述連線表放置于硬件上(方框1010);對(duì)所述連線表進(jìn)行路由(方框1012);和發(fā)布所得映像(方框1014)。
[0070]在實(shí)例中,所述編譯程序包含應(yīng)用編程接口(API),所述API允許軟件開(kāi)發(fā)者產(chǎn)生用于在FSM引擎600上實(shí)施FSM的映像。所述編譯程序提供用以將所述源碼中的一組輸入的正規(guī)表達(dá)式轉(zhuǎn)換成經(jīng)配置以編程FSM引擎600的映像的方法。所述編譯程序可通過(guò)用于具有馮諾依曼架構(gòu)的計(jì)算機(jī)的指令來(lái)實(shí)施。這些指令可致使所述計(jì)算機(jī)上的處理器實(shí)施所述編譯程序的功能。舉例來(lái)說(shuō),所述指令在由所述處理器執(zhí)行時(shí)可致使所述處理器對(duì)可由所述處理器存取的源碼執(zhí)行如方框1002、1004、1006、1008、1010、1012和1014中所描述的動(dòng)作。具有馮諾依曼架構(gòu)的實(shí)例計(jì)算機(jī)展示于圖15中且在下文描述。
[0071]在方框1002處,剖析正規(guī)表達(dá)式以形成語(yǔ)法樹(shù)。如上文關(guān)于圖3所解釋,剖析產(chǎn)生所述源碼的一股表示。另外,剖析可考量由FSM引擎600支持和不支持的正規(guī)表達(dá)式。所支持的正規(guī)表達(dá)式可轉(zhuǎn)換成適當(dāng)機(jī)器碼實(shí)施方案;然而,不受支持的正規(guī)表達(dá)式可(例如)產(chǎn)生錯(cuò)誤,或轉(zhuǎn)換成在功能性上接近于不受支持的正規(guī)表達(dá)式的受支持的機(jī)器碼。[0072]在方框1004處,將所述語(yǔ)法樹(shù)轉(zhuǎn)換成自動(dòng)機(jī)。如上文關(guān)于圖3所提及,轉(zhuǎn)換所述語(yǔ)法樹(shù)將所述語(yǔ)法樹(shù)轉(zhuǎn)換成包括多個(gè)狀態(tài)的自動(dòng)機(jī)。在實(shí)例中,可部分基于FSM引擎600的硬件來(lái)轉(zhuǎn)換所述自動(dòng)機(jī)。
[0073]在實(shí)例中,用于自動(dòng)機(jī)的輸入符號(hào)包含字母、數(shù)字O到9和其它可打印字符的符號(hào)。在實(shí)例中,所述輸入符號(hào)通過(guò)字節(jié)值O到255 (包含在內(nèi))來(lái)表示。在實(shí)例中,自動(dòng)機(jī)可表示為有向圖,其中所述圖的節(jié)點(diǎn)對(duì)應(yīng)于狀態(tài)集合。在實(shí)例中,被自動(dòng)機(jī)接受(例如,匹配)的數(shù)據(jù)為在按順序地輸入到所述自動(dòng)機(jī)中時(shí)將達(dá)到最終狀態(tài)的所有可能數(shù)據(jù)的集合。被所述自動(dòng)機(jī)接受的數(shù)據(jù)中的每一符號(hào)沿從開(kāi)始狀態(tài)到一個(gè)或一個(gè)以上最終狀態(tài)的路徑而行。被正規(guī)表達(dá)式接受的數(shù)據(jù)為匹配所述正規(guī)表達(dá)式的所有可能字符串的集合。給定正規(guī)表達(dá)式“R”,將“R”被接受的數(shù)據(jù)表示為£ (R)。
[0074]在實(shí)例中,所述自動(dòng)機(jī)包括通用狀態(tài)以及專用狀態(tài)。在編譯程序產(chǎn)生用于FSM引擎600的機(jī)器碼的實(shí)例中,通用狀態(tài)可對(duì)應(yīng)于SME604、605,且通用狀態(tài)因此在本文中被稱作“SME狀態(tài)”。此外,當(dāng)編譯程序產(chǎn)生用于FSM引擎600的機(jī)器碼時(shí),專用狀態(tài)可對(duì)應(yīng)于計(jì)數(shù)器624且因此在本文中被稱作“計(jì)數(shù)器狀態(tài)”。在實(shí)例中,自動(dòng)機(jī)中的SME狀態(tài)1:1映射到FSM引擎600中的SME(例如,SME604、605),不映射到SME的自動(dòng)機(jī)的開(kāi)始狀態(tài)除外。計(jì)數(shù)器624可能或可能不1:1映射到計(jì)數(shù)器狀態(tài)。
[0075]在實(shí)例中,在所述自動(dòng)機(jī)中可使用輸入符號(hào)范圍外的特殊轉(zhuǎn)變符號(hào)。這些特殊轉(zhuǎn)變符號(hào)可用以(例如)使得能夠使用專用元件224。此外,特殊轉(zhuǎn)變符號(hào)可用以提供在不同于輸入符號(hào)的一些事物上發(fā)生的轉(zhuǎn)變。舉例來(lái)說(shuō),特殊轉(zhuǎn)變符號(hào)可指示當(dāng)啟用第二狀態(tài)和第三狀態(tài)時(shí)將啟用(例如,轉(zhuǎn)變到)第一狀態(tài)。因此,當(dāng)激活第二狀態(tài)和第三狀態(tài)時(shí)激活第一狀態(tài),且到所述第一狀態(tài)的轉(zhuǎn)變并非直接取決于輸入符號(hào)。顯著地,指示在啟用第二狀態(tài)和第三狀態(tài)時(shí)將啟用第一狀態(tài)的特殊轉(zhuǎn)變符 號(hào)可用以將(例如)通過(guò)布林邏輯執(zhí)行的布林AND函數(shù)表示為專用元件224。在實(shí)例中,可使用特殊轉(zhuǎn)變符號(hào)來(lái)指示計(jì)數(shù)器狀態(tài)已達(dá)到零,且因此轉(zhuǎn)變到下游狀態(tài)。
[0076]在實(shí)例中,可使用例如葛魯許柯夫(Glushkov)的方法等標(biāo)準(zhǔn)技術(shù)中的一者來(lái)構(gòu)造自動(dòng)機(jī)。在實(shí)例中,所述自動(dòng)機(jī)可為無(wú)ε的同構(gòu)自動(dòng)機(jī)(homogeneous automaton)。下文關(guān)于圖4、11、12、13A、13B和14提供關(guān)于將語(yǔ)法樹(shù)轉(zhuǎn)換成自動(dòng)機(jī)的額外細(xì)節(jié)。
[0077]在方框1006處,一旦已將所述語(yǔ)法樹(shù)轉(zhuǎn)換成自動(dòng)機(jī),便優(yōu)化所述自動(dòng)機(jī)。所述自動(dòng)機(jī)可經(jīng)優(yōu)化以尤其減少其復(fù)雜性和大小??赏ㄟ^(guò)組合冗余狀態(tài)來(lái)優(yōu)化所述自動(dòng)機(jī)。
[0078]在方框1008處,將所述經(jīng)優(yōu)化的自動(dòng)機(jī)轉(zhuǎn)換成連線表。將所述自動(dòng)機(jī)轉(zhuǎn)換成連線表將所述自動(dòng)機(jī)的每一狀態(tài)映射到FSM引擎600上的硬件元件(例如,SME604、605、專用元件624)的個(gè)例。而且,確定所述個(gè)例之間的連接以產(chǎn)生所述連線表。
[0079]在方框1010處,放置所述連線表以針對(duì)所述連線表的每一個(gè)例選擇所述目標(biāo)裝置的特定硬件元件(例如,SME604、605、專用元件624)。在實(shí)例中,放置基于所述FSM引擎600的一股輸入和輸出約束而選擇每一特定硬件元件。
[0080]在方框1012處,對(duì)經(jīng)放置的連線表進(jìn)行路由以確定可編程開(kāi)關(guān)(例如,塊間開(kāi)關(guān)603、塊內(nèi)開(kāi)關(guān)608和行內(nèi)開(kāi)關(guān)612)的設(shè)定以便將選定硬件元件耦合在一起以實(shí)現(xiàn)連線表所描述的連接。在實(shí)例中,通過(guò)確定FSM引擎600的將用以連接選定的硬件元件的特定導(dǎo)體和所述可編程開(kāi)關(guān)的設(shè)定來(lái)確定所述可編程開(kāi)關(guān)的設(shè)定。路由可能要考量比方框1010處的放置多的在硬件元件之間的連接的特定限制。因此,路由可調(diào)整如由全局放置確定的硬件元件中的一些的位置,以便在給出對(duì)FSM引擎600的導(dǎo)體的實(shí)際限制的情況下進(jìn)行適當(dāng)連接。
[0081]一旦對(duì)連線表進(jìn)行放置和路由,便可將所放置和經(jīng)路由的連線表轉(zhuǎn)換成用于編程FSM引擎200的多個(gè)位。所述多個(gè)位在本文中被稱作映像。
[0082]在方框1014處,通過(guò)編譯程序發(fā)布映像。所述映像包括用于編程FSM引擎600的特定硬件元件和/或可編程開(kāi)關(guān)的多個(gè)位。在所述映像包括多個(gè)位(例如,O和I)的實(shí)施例中,所述映像可被稱作二進(jìn)制映像。所述位可加載到FSM引擎600上以編程SME604、605、專用元件624和可編程開(kāi)關(guān)的狀態(tài),以使得經(jīng)編程的FSM引擎600實(shí)施具有由源碼描述的功能性的FSM。放置(方框1010)和路由(方框1012)可將在FSM引擎600中的特定位置處的特定硬件元件映射到自動(dòng)機(jī)中的特定狀態(tài)。因此,所述映像中的位可編程所述特定硬件元件和/或可編程開(kāi)關(guān)以實(shí)施所要功能。在實(shí)例中,可通過(guò)將機(jī)器碼保存到計(jì)算機(jī)可讀媒體來(lái)發(fā)布所述映像。在另一實(shí)例中,可通過(guò)在顯示裝置上顯示所述映像來(lái)發(fā)布映像。在又一實(shí)例中,可通過(guò)將所述映像發(fā)送到另一裝置(例如,用于將所述映像加載到FSM引擎600上的編程裝置)來(lái)發(fā)布映像。在再一實(shí)例中,可通過(guò)將所述映像加載到平行機(jī)(例如,F(xiàn)SM引擎600)上來(lái)發(fā)布映像。
[0083]在實(shí)例中,可通過(guò)將來(lái)自映像的位值直接加載到SME604、605和其它硬件元件624或通過(guò)將映像加載到一個(gè)或一個(gè)以上寄存器中且接著將來(lái)自寄存器的位值寫入到SME604、605和其它硬件元件624來(lái)將映像加載到FSM引擎600上。在實(shí)例中,F(xiàn)SM引擎600的硬件元件(例如,SME604、605、其它元件624、可編程開(kāi)關(guān)603、608、612)經(jīng)存儲(chǔ)器映射,以使得計(jì)算機(jī)(例如,耦合到所述計(jì)算機(jī)或與所述計(jì)算機(jī)成一體的編程裝置)可通過(guò)將映像寫入到一個(gè)或一個(gè)以上存儲(chǔ)器地址而將映像加載到FSM引擎600上。
[0084]如上文所論述, 圖 4詳述用于將語(yǔ)法樹(shù)轉(zhuǎn)換成自動(dòng)機(jī)的方法400。以下描述提供用于在目標(biāo)裝置為平行機(jī)(例如,F(xiàn)SM引擎600)時(shí)將語(yǔ)法樹(shù)轉(zhuǎn)換成自動(dòng)機(jī)的額外細(xì)節(jié)。
[0085]可以源碼描述的一類正規(guī)表達(dá)式包含量化。量化在此項(xiàng)技術(shù)中為眾所周知的,且用以描述重復(fù)樣式。作為實(shí)例,“A(B) {nl, n2}C”為一股正規(guī)表達(dá)式,其中A、B和C為子表達(dá)式,且“(B) {nl, n2}”包括量化。如本文中所描述,使用大寫字母來(lái)表示正規(guī)表達(dá)式或正規(guī)表達(dá)式的一部分(例如,子表達(dá)式)??蓪㈦p引號(hào)添加到正規(guī)表達(dá)式或子表達(dá)式周圍以避免混淆。因此,描述表達(dá)式的大寫字母可對(duì)應(yīng)于用于多個(gè)輸入符號(hào)的搜索字符串。舉例來(lái)說(shuō),表達(dá)式“A”可對(duì)應(yīng)于輸入字符串‘a(chǎn)bbc’。
[0086]此外,應(yīng)理解,術(shù)語(yǔ)表達(dá)式和子表達(dá)式在本文中僅用于關(guān)系描述(例如,子表達(dá)式為表達(dá)式的一部分),且術(shù)語(yǔ)表達(dá)式和子表達(dá)式不應(yīng)限于任何特定長(zhǎng)度、語(yǔ)法或字符數(shù)目。明確地說(shuō),源碼可包含大量字符(包含元字符和搜索字符),其中整組字符或其任何個(gè)別部分可被視為“表達(dá)式”。舉例來(lái)說(shuō),以下各者中的每一者可被視為表達(dá)式:“a(bb|d? ){5,20} C”、“ (b) {0,10} ”、“ (b I d),,和 “b”。
[0087]將量化以正規(guī)表達(dá)式表達(dá)為“(B) {nl,n2} ”,其中B為子表達(dá)式,且nl和n2為指定允許前述子表達(dá)式出現(xiàn)多少次的整數(shù)。B在本文中被稱作重復(fù)子表達(dá)式,因?yàn)锽為重復(fù)了由nl和n2指定的次數(shù)的子表達(dá)式。為了匹配量化“(B) {nl,n2} ”,必須匹配重復(fù)子表達(dá)式B nl到n2次。舉例來(lái)說(shuō),正規(guī)表達(dá)式“(B) {5,7) ”將要求子表達(dá)式B匹配5、6或7次。在正規(guī)表達(dá)式“A(B) {nl,n2}C”中,子表達(dá)式A在本文中被稱作驅(qū)動(dòng)表達(dá)式,因?yàn)樽颖磉_(dá)式A在匹配時(shí)轉(zhuǎn)變?yōu)榱炕?。另外,為了繼續(xù)重復(fù)和遞增針對(duì)所述量化的計(jì)數(shù),必須連續(xù)地匹配所述量化的重復(fù)子表達(dá)式。即,當(dāng)重復(fù)子表達(dá)式在所述量化的給定循環(huán)期間不匹配時(shí),所述量化結(jié)束。在實(shí)例中,符號(hào)“?”也對(duì)應(yīng)于量化,其中在“? ”之前的符號(hào)可識(shí)別一次或零次。
[0088]當(dāng)目標(biāo)裝置為FSM引擎600時(shí),方法400可識(shí)別某些量化并將所述量化映射到FSM引擎600上的計(jì)數(shù)器624。用計(jì)數(shù)器624實(shí)施某些量化可導(dǎo)致優(yōu)于用狀態(tài)機(jī)元件604、605實(shí)施量化的效率。因此,可簡(jiǎn)化針對(duì)FSM引擎600的自動(dòng)機(jī)和所得映像。舉例來(lái)說(shuō),實(shí)施量化的語(yǔ)法樹(shù)的部分可需要大量SME604、605來(lái)實(shí)施。然而,在實(shí)例中,這些量化中的一些可使用計(jì)數(shù)器624來(lái)實(shí)施,計(jì)數(shù)器624具有比SME604、605將需要的狀態(tài)少的狀態(tài)。
[0089]在方框402處,編譯程序識(shí)別語(yǔ)法樹(shù)的對(duì)應(yīng)于用FSM引擎600中的計(jì)數(shù)器624的可能的實(shí)施方案的量化的部分 。如果所述語(yǔ)法樹(shù)的部分不對(duì)應(yīng)于量化,那么方法400前進(jìn)到方框408,在方框408處,將所述部分轉(zhuǎn)換成用于用SME604、605的實(shí)施方案的通用狀態(tài)。如果所述語(yǔ)法樹(shù)的部分確實(shí)對(duì)應(yīng)于量化,那么進(jìn)一步分析所述量化以確定是否可用計(jì)數(shù)器624來(lái)實(shí)施所識(shí)別的部分。
[0090]在做出是否可能用計(jì)數(shù)器624來(lái)實(shí)施量化的確定之前,如果£ (B)包含空字符串,那么“B{nl,n2}”的量化重寫為“B' {0,n2}”,其中B'為B的非空字符串版本,£ (B')=£ (B) -Φ。舉例來(lái)說(shuō),“ (bcl) {10,20} ”可重寫為“ (be) {O, 20} ”,因?yàn)檫@些正規(guī)表達(dá)式接受正好相同的數(shù)據(jù)。接著,對(duì)于給定的量化B{nl,n2},根據(jù)以下條件,所述量化可能用計(jì)數(shù)器來(lái)實(shí)施(方法前進(jìn)到方框404)或者用SME來(lái)實(shí)施且無(wú)計(jì)數(shù)器(方法前進(jìn)到方框408):
[0091].I)當(dāng)(nl = O, n2 = -1)時(shí),將借助SME604、605來(lái)實(shí)施所述量化且無(wú)計(jì)數(shù)器624 (方框408)。在此,不需要計(jì)數(shù)器624。
[0092].2)當(dāng)(nl = 1,n2 = -1)時(shí),將借助SME604、605來(lái)實(shí)施所述量化且無(wú)計(jì)數(shù)器624 (方框408)。在此,不需要計(jì)數(shù)器624。
[0093].3)當(dāng)(nl > 1,η2 = -1)時(shí),所述量化將分裂成兩個(gè)正規(guī)表達(dá)式B {nl_l}和B+,因?yàn)锽{n,-1}等于B{nl-1}B+??山又赡苡糜?jì)數(shù)器來(lái)實(shí)施量化B {nl_l}(方框404),而將借助SME604、605來(lái)實(shí)施B+且無(wú)計(jì)數(shù)器624 (方框408)。對(duì)于B+,不需要計(jì)數(shù)器624。
[0094].4)當(dāng)(ηI = 0,η2 > O)時(shí),將所述量化修改成(Β{1, η2}) ?,因?yàn)?Β{1, η2}) ?等于Β{0,η2}??山又赡苡糜?jì)數(shù)器624來(lái)實(shí)施不可空Β{1,η2}(方框404)。
[0095].5)當(dāng)(nl > 0,η2 > O)時(shí),可能用計(jì)數(shù)器624將所述量化實(shí)施為B {ηI,η2}(方框404)。
[0096]總之,在不修改的情況下可能可用計(jì)數(shù)器624實(shí)施(方框404)的量化可被寫成B{nl,η2},其中B為不可空的,nl > O、η2 > O且nl≤n2。
[0097]在方框404處,一旦編譯程序已識(shí)別了可能可用計(jì)數(shù)器624實(shí)施的量化,所述編譯程序便確定語(yǔ)法樹(shù)的對(duì)應(yīng)于經(jīng)識(shí)別部分的一部分是否為確定性的。當(dāng)所述經(jīng)識(shí)別部分為確定性時(shí),可用一個(gè)或一個(gè)以上計(jì)數(shù)器624來(lái)實(shí)施所述經(jīng)識(shí)別部分,且方法400前進(jìn)到方框406,在方框406處,將所述經(jīng)識(shí)別部分轉(zhuǎn)換成一個(gè)或一個(gè)以上計(jì)數(shù)器狀態(tài)以及一個(gè)或一個(gè)以上SME狀態(tài)。當(dāng)所述經(jīng)識(shí)別部分為非確定性時(shí),不使用計(jì)數(shù)器624來(lái)實(shí)施所述經(jīng)識(shí)別部分,且方法400前進(jìn)到方框408,在方框408處,將所述經(jīng)識(shí)別部分轉(zhuǎn)換成一個(gè)或一個(gè)以上SME狀態(tài)。[0098]大體上,方框406和方框408對(duì)應(yīng)于用以將量化轉(zhuǎn)換成自動(dòng)機(jī)的兩種方式。在方框406處,使用一個(gè)或一個(gè)以上計(jì)數(shù)器狀態(tài)來(lái)轉(zhuǎn)換所述量化,可能結(jié)合一個(gè)或一個(gè)以上SME狀態(tài)以將所述量化實(shí)施為循環(huán)。在方框408處,通過(guò)“展開(kāi)”所述量化來(lái)轉(zhuǎn)換所述量化,其包含使用SME狀態(tài)且無(wú)計(jì)數(shù)器狀態(tài)。展開(kāi)包括用非量化語(yǔ)法來(lái)重寫所述量化。舉例來(lái)說(shuō),正規(guī)表達(dá)式“(b|c) {1,2}”可展開(kāi)為“(b|c) (b|c) ? ”。展開(kāi)的優(yōu)點(diǎn)包含(I)所得自動(dòng)機(jī)為有向非循環(huán)圖(DAG)且可易于分析和實(shí)施,和(2)所得自動(dòng)機(jī)可用通用元件(尤其是狀態(tài)機(jī)元件)而非專用元件來(lái)實(shí)施。然而,用以實(shí)施展開(kāi)量化的通用狀態(tài)且因此狀態(tài)機(jī)元件的數(shù)目與nl和n2成線性關(guān)系。因此,當(dāng)nl或n2為大數(shù)目時(shí),狀態(tài)的數(shù)目可為大的。明確地說(shuō),真實(shí)資源為有限的,因此,在一些實(shí)例中,此展開(kāi)技術(shù)僅用于有限類別的量化。
[0099]然而,當(dāng)目標(biāo)裝置具有經(jīng)設(shè)計(jì)以實(shí)施計(jì)數(shù)功能的專用元件(例如,計(jì)數(shù)器624)時(shí),在某些情況下可避免展開(kāi)。此方法的優(yōu)點(diǎn)為在自動(dòng)機(jī)中需要重復(fù)表達(dá)式的較少副本,且副本的數(shù)目獨(dú)立于nl和n2。因此,可節(jié)省顯著資源。舉例來(lái)說(shuō),可使用一個(gè)或一個(gè)以上計(jì)數(shù)器624以通過(guò)用重復(fù)表達(dá)式和一個(gè)或一個(gè)以上計(jì)數(shù)器624產(chǎn)生循環(huán)來(lái)實(shí)施量化。每當(dāng)重復(fù)表達(dá)式匹配時(shí),計(jì)數(shù)器624便可遞增(或遞減)。可接著重新激活所述重復(fù)表達(dá)式以搜索另一匹配。當(dāng)計(jì)數(shù)器624已遞增(或遞減)了等于所述量化所規(guī)定的次數(shù)時(shí),計(jì)數(shù)器624可在所述量化之后激活所述狀態(tài)。因此,可用較少SME604、605來(lái)實(shí)施所述量化,因?yàn)樵儆昧擞靡詫?shí)施重復(fù)表達(dá)式的SME。然而,歸因于整個(gè)自動(dòng)機(jī)(例如,對(duì)應(yīng)于整個(gè)語(yǔ)法樹(shù))的平行性(即,可同時(shí)處于作用中的多個(gè)狀態(tài)),在一些實(shí)例中,計(jì)數(shù)器624可僅用于對(duì)應(yīng)于整個(gè)自動(dòng)機(jī)的確定性部分的量化。
[0100] 圖11說(shuō)明轉(zhuǎn)換成自動(dòng)機(jī)1100的正規(guī)表達(dá)式的實(shí)例,所述自動(dòng)機(jī)1100使用專用計(jì)數(shù)器狀態(tài)1102來(lái)實(shí)施量化。自動(dòng)機(jī)1100對(duì)應(yīng)于正規(guī)表達(dá)式“A⑶{nl,nl}C”,其中所述量化的兩個(gè)計(jì)數(shù)值(例如,nl、n2)相等。由于所述計(jì)數(shù)值中的兩者相等,因此使用單一計(jì)數(shù)器624來(lái)實(shí)施所述量化。如圖11中所展示,自動(dòng)機(jī)1100可表示為有向圖,其中所述圖的節(jié)點(diǎn)對(duì)應(yīng)于一組狀態(tài)。
[0101]正規(guī)表達(dá)式“A(B) {nl, nl}C”轉(zhuǎn)換成若干SME狀態(tài)1104、1106、1110、1108和計(jì)數(shù)器狀態(tài)1102。SME狀態(tài)1104、1106、1108、1110對(duì)應(yīng)于子表達(dá)式和“C”。SME狀態(tài)1104、1106、1110、1108可用SME604、605來(lái)實(shí)施,而計(jì)數(shù)器狀態(tài)1102可用計(jì)數(shù)器624來(lái)實(shí)施。當(dāng)在FSM引擎600上實(shí)施自動(dòng)機(jī)1110時(shí),對(duì)應(yīng)于計(jì)數(shù)器狀態(tài)1102的計(jì)數(shù)器624最初加載有值nl且經(jīng)設(shè)定以在計(jì)數(shù)器624中的值達(dá)到零時(shí)斷言零計(jì)數(shù)輸出。當(dāng)nl等于n2時(shí),計(jì)數(shù)器624可經(jīng)設(shè)定為停止O和脈沖輸出模式,其意味一旦計(jì)數(shù)器624的值達(dá)到零,計(jì)數(shù)器624便將斷言其輸出,且計(jì)數(shù)器624將維持于零且不發(fā)出任何信號(hào)直到復(fù)位計(jì)數(shù)器624為止。
[0102]自動(dòng)機(jī)1100在狀態(tài)1104處開(kāi)始且在匹配子表達(dá)式“A”后即刻轉(zhuǎn)變到狀態(tài)1106。當(dāng)處于狀態(tài)1106處,每當(dāng)子表達(dá)式“B”匹配時(shí),便激活計(jì)數(shù)器狀態(tài)1102的IN端口,且計(jì)數(shù)器狀態(tài)1102遞減一。另外,每當(dāng)子表達(dá)式“B”匹配時(shí),狀態(tài)1106便激活其自身以及激活狀態(tài)1110。當(dāng)計(jì)數(shù)器狀態(tài)1102達(dá)到零時(shí),激活輸出,且自動(dòng)機(jī)1100將接著搜索子表達(dá)式“C”。在接下來(lái)的循環(huán)中,將出現(xiàn)兩種情形:第一種情形在“~B”匹配時(shí)出現(xiàn)。當(dāng)“~B”匹配時(shí),復(fù)位計(jì)數(shù)器狀態(tài)1102且將其值設(shè)定回到nl。因此,下次子表達(dá)式“A”匹配時(shí),過(guò)程便從狀態(tài)1104開(kāi)始。在第二種情形中,狀態(tài)1106的自循環(huán)仍在作用中,且在子表達(dá)式“B”匹配時(shí)繼續(xù)觸發(fā)計(jì)數(shù)器1102的IN端口。由于計(jì)數(shù)器狀態(tài)1102是在脈沖模式下配置,因此盡管狀態(tài)1106的自循環(huán)仍處于作用中,但計(jì)數(shù)器狀態(tài)1102將不會(huì)再次激活其輸出。
[0103]子表達(dá)式“B”的否定版本在本文中也被稱作“?B”。在實(shí)例中,子表達(dá)式“B”的否定版本用以激活計(jì)數(shù)器狀態(tài)1102的復(fù)位端口。這是因?yàn)?,由于“B”是量化“⑶{nl,nl} ”的重復(fù)表達(dá)式,因此當(dāng)在輸入處接收到不同于B的任一者(例如,“B”的否定版本)時(shí)(一旦已激活了狀態(tài)1106),那么所述量化結(jié)束且因此復(fù)位計(jì)數(shù)器。因此,一旦激活了狀態(tài)1110,便復(fù)位計(jì)數(shù)器狀態(tài)1102,且當(dāng)子表達(dá)式“B”的否定版本匹配時(shí),所述量化不匹配。在實(shí)例中,使用標(biāo)準(zhǔn)自動(dòng)機(jī)理論來(lái)否定重復(fù)表達(dá)式。
[0104]盡管當(dāng)nl等于n2時(shí),說(shuō)明并描述單一計(jì)數(shù)器狀態(tài)624實(shí)施量化,但應(yīng)認(rèn)識(shí)到,多個(gè)計(jì)數(shù)器624可級(jí)聯(lián)以考量比單一計(jì)數(shù)器624支持的數(shù)目大的數(shù)目。
[0105]圖12說(shuō)明轉(zhuǎn)換成自動(dòng)機(jī)1200的正規(guī)表達(dá)式的另一實(shí)例,所述自動(dòng)機(jī)1200使用多個(gè)專用計(jì)數(shù)器狀態(tài)1202、1204來(lái)實(shí)施具有量化的正規(guī)表達(dá)式。自動(dòng)機(jī)1200對(duì)應(yīng)于正規(guī)表達(dá)式“A(B) {nl,n2}C”,其中nl小于n2。使用兩個(gè)計(jì)數(shù)器狀態(tài)1202、1204,因?yàn)樵诹炕?B){nl, n2}”中nl小于n2。計(jì)數(shù)器狀態(tài)1202、1204經(jīng)配置到停止O和保持模式,其意味,當(dāng)計(jì)數(shù)器狀態(tài)1202、1204達(dá)到零時(shí),計(jì)數(shù)器狀態(tài)1202、1204激活其輸出,且在復(fù)位計(jì)數(shù)器狀態(tài)1202、1204之前,計(jì)數(shù)器狀態(tài)1202、1204維持于零且每當(dāng)激活I(lǐng)N端口時(shí)便保持激活其輸出。在此實(shí)例中,從計(jì)數(shù)器狀態(tài)1202到計(jì)數(shù)器狀態(tài)1204的延時(shí)占用兩個(gè)循環(huán)。
[0106]計(jì)數(shù)器狀態(tài)1202最初設(shè)定為nl,且計(jì)數(shù)器狀態(tài)1204最初設(shè)定為n2。當(dāng)子表達(dá)式“A”匹配時(shí),所述自動(dòng)機(jī)從狀態(tài)1206轉(zhuǎn)變到狀態(tài)1208。一旦激活了狀態(tài)1208,每當(dāng)子表達(dá)式“B”匹配時(shí),便激活計(jì)數(shù)器狀態(tài)1202和計(jì)數(shù)器狀態(tài)1204兩者的IN端口。因此,計(jì)數(shù)器狀態(tài)1202和計(jì)數(shù)器狀態(tài)1204兩者遞減一。當(dāng)計(jì)數(shù)器狀態(tài)1202達(dá)到零時(shí),激活其輸出,且自動(dòng)機(jī)1200接著搜索子表達(dá)式“C”的匹配且激活狀態(tài)1210。一旦子表達(dá)式“B”已匹配了nl次,計(jì)數(shù)器狀態(tài)1204的值便為n2-nl。稍后,每當(dāng)子表達(dá)式“B”匹配時(shí),便激活計(jì)數(shù)器狀態(tài)1202的IN端口,且計(jì)數(shù)器狀態(tài)1202的值維持于零,且仍激活其輸出。同時(shí),計(jì)數(shù)器狀態(tài)1204繼續(xù)遞減。當(dāng)子表達(dá)式“B”匹配了 n2次時(shí),計(jì)數(shù)器狀態(tài)1204也達(dá)到零,且激活其輸出,此驅(qū)動(dòng)計(jì)數(shù)器狀態(tài)1202的復(fù)位端口。由于計(jì)數(shù)器狀態(tài)1204到計(jì)數(shù)器狀態(tài)1202的延時(shí)為兩個(gè)循環(huán),因此計(jì)數(shù)器狀態(tài)1202繼續(xù)激活其輸出到狀態(tài)1210。在下一個(gè)循環(huán)中,從計(jì)數(shù)器狀態(tài)1204的輸出復(fù)位計(jì)數(shù)器狀態(tài)1202,且不從計(jì)數(shù)器狀態(tài)1202斷言輸出。在接下來(lái)的循環(huán)中,將出現(xiàn)兩種情形。在第一種情形中,“?B”匹配。計(jì)數(shù)器狀態(tài)1202和計(jì)數(shù)器狀態(tài)1204兩者均通過(guò)狀態(tài)1212復(fù)位,且其值分別設(shè)定為nl和n2。因此,下次狀態(tài)1206為作用中且下次子表達(dá)式“A”匹配時(shí),激活狀態(tài)1208,且計(jì)數(shù)器狀態(tài)1202、1204再次遞減。在第二種情形中,狀態(tài)1208的自循環(huán)維持激活,且激活計(jì)數(shù)器狀態(tài)1202、1204兩者的IN端口。由于計(jì)數(shù)器狀態(tài)1204繼續(xù)激活其輸出,因此計(jì)數(shù)器狀態(tài)1202繼續(xù)復(fù)位,且只要狀態(tài)1208的自循環(huán)處于作用中便不激活其輸出。
[0107]另外,在狀態(tài)1208處于作用中時(shí)子表達(dá)式“B”的匹配激活了狀態(tài)1212。一旦狀態(tài)1212激活且“?B”匹配,便復(fù)位計(jì)數(shù)器狀態(tài)1202、1204,且不匹配所述量化。使用子表達(dá)式“B”的否定版本,因?yàn)椤癇”為量化“⑶{nl,n2}”的重復(fù)表達(dá)式。因此,可重復(fù)地匹配在狀態(tài)1208下的表達(dá)式‘B’從nl到n2次。盡管說(shuō)明并描述了單一計(jì)數(shù)器分別實(shí)施下(例如,nl)和上(例如,n2)閾值,但應(yīng)認(rèn)識(shí)到,如所屬領(lǐng)域的技術(shù)人員所知,多個(gè)計(jì)數(shù)器可級(jí)聯(lián)以考量比單一計(jì)數(shù)器支持的數(shù)目大的數(shù)目。
[0108]在使用計(jì)數(shù)器狀態(tài)轉(zhuǎn)換量化之前,在方框404處,編譯程序確定對(duì)應(yīng)于所述量化的自動(dòng)機(jī)是否為確定性的。在實(shí)例中,當(dāng)表達(dá)式滿足下文所論述的無(wú)前綴、無(wú)重入條件兩者時(shí),所述自動(dòng)機(jī)為確定性的。即,為了使量化映射到計(jì)數(shù)器624,所述量化應(yīng)滿足如下文所論述的無(wú)前綴和無(wú)重入條件。
[0109]參考圖12的自動(dòng)機(jī)1200,無(wú)重入條件要求從狀態(tài)1206到狀態(tài)1208的邊不可激活,而計(jì)數(shù)器狀態(tài)1202處于作用中(例如,當(dāng)計(jì)數(shù)器狀態(tài)1202正在計(jì)數(shù)時(shí))。即,確定在已處理所述量化時(shí)是否可匹配所述量化的驅(qū)動(dòng)表達(dá)式。匹配驅(qū)動(dòng)表達(dá)式意味,緊跟在所述量化之前的狀態(tài)將轉(zhuǎn)變到對(duì)應(yīng)于所述量化的狀態(tài)。因此,將“重入”所述量化,而計(jì)數(shù)器狀態(tài)仍處理重復(fù)表達(dá)式。由于在FSM引擎600的此實(shí)例中,計(jì)數(shù)器624在任何給定時(shí)間時(shí)可僅實(shí)施單一循環(huán),因此在循環(huán)已經(jīng)處理時(shí)轉(zhuǎn)變到量化可致使計(jì)數(shù)器624在給定循環(huán)期間不正確地計(jì)數(shù)。
[0110]圖13A和13B說(shuō)明自動(dòng)機(jī)1500和1314,可用以進(jìn)一步解釋無(wú)重入條件。圖13A說(shuō)明對(duì)應(yīng)于語(yǔ)法樹(shù)中的量化的實(shí)例自動(dòng)機(jī)1500,其中編譯程序可進(jìn)行分析以確定對(duì)應(yīng)于所述量化的自動(dòng)機(jī)是否為確定性的。
[0111]自動(dòng)機(jī)1500對(duì)應(yīng)于正規(guī)表達(dá)式“abb ? (b | c) {1,2} ”且包含開(kāi)始狀態(tài)1502和最終狀態(tài)1312、1504。所述最終狀態(tài)在圖13A中識(shí)別為雙圓。最初激活開(kāi)始狀態(tài)1502并在輸入符號(hào)‘a(chǎn)’后即刻使其轉(zhuǎn)變到狀態(tài)1506。在輸入符號(hào)‘b’時(shí),狀態(tài)1506轉(zhuǎn)變到狀態(tài)1308和狀態(tài)1310兩者。在輸入符號(hào)‘b’時(shí)狀態(tài)1308轉(zhuǎn)變到狀態(tài)1310,且在輸入符號(hào)‘b’或‘C,時(shí),狀態(tài)1310轉(zhuǎn)變到狀態(tài)1312。在輸入符號(hào)‘b’或‘C,時(shí),自動(dòng)機(jī)1300從狀態(tài)1312轉(zhuǎn)變到狀態(tài)1304。
[0112]自動(dòng)機(jī)1300包括正規(guī)表達(dá)式“abb ? (b | c) {1,2} ”的自動(dòng)機(jī),將檢查所述正規(guī)表達(dá)式是否符合無(wú)重入條件。 自動(dòng)機(jī)1314包括從自動(dòng)機(jī)1300的正規(guī)表達(dá)式“abb ? (b | c){1,2}”導(dǎo)出的正規(guī)表達(dá)式55( “abb ? ”、“(b|c)⑵”)的自動(dòng)機(jī)。SS (M, N)被定義為從M、N導(dǎo)出的正規(guī)表達(dá)式。導(dǎo)出步驟包含:1)串接M和N,結(jié)果表示為“麗”。2)構(gòu)造“麗”的自動(dòng)機(jī),表示為A(MN)。3)如下地修改A (MN):a)使A (MN)的開(kāi)始狀態(tài)驅(qū)動(dòng)所有其它狀態(tài),和b)使對(duì)應(yīng)于“N”的所有狀態(tài)為最終狀態(tài)。最后,4)將經(jīng)修改的自動(dòng)機(jī)的正規(guī)表達(dá)式表示為SS (M,N)。SS (M,N)的被接受數(shù)據(jù)由從“MN”的任何狀態(tài)開(kāi)始且在N的任何狀態(tài)處結(jié)束的子字符串組成。
[0113]無(wú)重入條件可定義如下。給出具有量化“八8{111,112}(:”的正規(guī)表達(dá)式,無(wú)重入條件需要£(SS(A.Β{η!.η2}) Π £(Α)=0。換句話說(shuō),一旦子表達(dá)式“Α”匹配且計(jì)數(shù)器狀態(tài)1202開(kāi)始計(jì)數(shù),那么為了滿足無(wú)重入條件,將不再次激活從狀態(tài)1206到狀態(tài)1208的邊,直到進(jìn)行“B{nl,n2}”(匹配或失敗)為止。舉例來(lái)說(shuō),用計(jì)數(shù)器624將不會(huì)正確地實(shí)施“abb” e£ ( “abb ?,,) Π £ (SS( “abb ? ”,“(blc) {2} ”),和因此 “abb ? (b | c) {1,2} ”。
[0114]現(xiàn)在參看圖14,將參考自動(dòng)機(jī)1400來(lái)解釋無(wú)前綴條件。無(wú)前綴條件規(guī)定£ (B)的任何字符串不應(yīng)為£ (B)的另一字符串的前綴,此將保證B不會(huì)致使計(jì)數(shù)器計(jì)數(shù)多于一次。換句話說(shuō),當(dāng)量化的第一重復(fù)子表達(dá)式為所述量化的第二重復(fù)子表達(dá)式的前綴時(shí),所述量化不實(shí)施為(且因此轉(zhuǎn)換為)計(jì)數(shù)器624。正式的陳述為:對(duì)于所有Ii, Ij e £ (B),Ii關(guān)Ij,要求(丨,1叩」夕}=0。[0115]舉例來(lái)說(shuō),正規(guī)表達(dá)式“a (b I be) {3}”不滿足無(wú)前綴條件。因此,將不使用計(jì)數(shù)器狀態(tài)來(lái)轉(zhuǎn)換正規(guī)表達(dá)式“a (b I be) {3}”,且因此將不用計(jì)數(shù)器624來(lái)實(shí)施。實(shí)情為,將不用任何計(jì)數(shù)器狀態(tài)來(lái)將正規(guī)表達(dá)式“a (b I be) {3} ”轉(zhuǎn)換成通用狀態(tài)。
[0116]如果用計(jì)數(shù)器624來(lái)實(shí)施正規(guī)表達(dá)式“a(b |bc) {3} ”,那么將錯(cuò)誤地匹配輸入“abbc”。舉例來(lái)說(shuō),自動(dòng)機(jī)1400為使用計(jì)數(shù)器狀態(tài)1412對(duì)正規(guī)表達(dá)式“a(b | be) {3} ”的假設(shè)轉(zhuǎn)換的結(jié)果。如下文所描述,此轉(zhuǎn)換導(dǎo)致計(jì)數(shù)器狀態(tài)1412的不正確執(zhí)行。最初激活狀態(tài)1402,且在輸入“a”處,狀態(tài)1402激活狀態(tài)1404。在狀態(tài)1404激活的情況下,在輸入“b”處,狀態(tài)1404激活狀態(tài)1406、1408且再激活自身,即狀態(tài)1404。而且,在輸入“b”處,狀態(tài)1404激活計(jì)數(shù)器1412的IN端口,其中計(jì)數(shù)器狀態(tài)1412的初始值處于3且接著減少到2。在狀態(tài)1404、1406和1408激活的情況下,在另一輸入“b”處通過(guò)狀態(tài)1404再次激活計(jì)數(shù)器狀態(tài)1412的IN端口,且計(jì)數(shù)器狀態(tài)1412中的值減少到I。此時(shí),激活狀態(tài)1404、1406和1408。接著,輸入值“c”致使計(jì)數(shù)器狀態(tài)1412的IN端口通過(guò)狀態(tài)1408激活以將計(jì)數(shù)器1412中的值減少到O。在計(jì)數(shù)器1412中的值處于零的情況下,激活輸出,且激活狀態(tài)1414,此指示匹配。然而,此匹配為錯(cuò)誤肯定,因?yàn)樵谛蛄小癮bbc”不滿足正規(guī)表達(dá)式“a(b|bc){3}”時(shí),輸入“abbc”已造成匹配。因此,正規(guī)表達(dá)式“a (b I be) {3} ”不滿足無(wú)前綴條件,且不應(yīng)使用計(jì)數(shù)器狀態(tài)來(lái)轉(zhuǎn)換且不應(yīng)用計(jì)數(shù)器624來(lái)實(shí)施。
[0117]如果在方框404處,所述量化滿足無(wú)前綴條件和無(wú)重入條件兩者,那么在方框406處使用專用計(jì)數(shù)器狀態(tài)來(lái)轉(zhuǎn)換所述量化??扇缟衔年P(guān)于圖12和13所描述股轉(zhuǎn)換所述量化。然而,如果所述量化不滿足無(wú)前綴或無(wú)重入條件,那么在方框408處通過(guò)展開(kāi)所述量化且將所述量化轉(zhuǎn)換成通用狀態(tài)且無(wú)計(jì)數(shù)器狀態(tài)624來(lái)轉(zhuǎn)換所述量化。因此,用SME604、605而不是計(jì)數(shù)器624來(lái)實(shí)施所述量化。
[0118]本文中所描述的方法實(shí)例可至少部分為機(jī)器或計(jì)算機(jī)實(shí)施的。一些實(shí)例可包含編碼有指令的計(jì)算機(jī)可讀媒體或機(jī)器可讀媒體,所述指令可操作以配置電子裝置以執(zhí)行如上述實(shí)例中所描述的方法。這些方法的實(shí)施方案可包含碼,例如微碼、組合語(yǔ)言碼、高級(jí)語(yǔ)言碼等。此類碼可包含用于執(zhí)行各種方法的計(jì)算機(jī)可讀指令。碼可形成計(jì)算機(jī)程序產(chǎn)品的部分。另外,碼在執(zhí)行期間或在其它時(shí)間時(shí)可有形地存儲(chǔ)于一個(gè)或一個(gè)以上易失性或非易失性計(jì)算機(jī)可讀媒體上。這些計(jì)算機(jī)可讀媒體可包含(但不限于)硬盤、可裝卸式磁盤、可裝卸式光盤(例如,壓縮光盤和數(shù)字視頻光盤)、磁帶盒、存儲(chǔ)卡或存儲(chǔ)條、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)等。
[0119]圖15大體上說(shuō)明具有馮諾依曼架構(gòu)的計(jì)算機(jī)1500的實(shí)例。在閱讀和理解了本發(fā)明的內(nèi)容之后,所屬領(lǐng)域的技術(shù)人員將理解在基于計(jì)算機(jī)的系統(tǒng)中可從計(jì)算機(jī)可讀媒體啟動(dòng)軟件程序以使其執(zhí)行以軟件程序定義的功能的方式。所屬領(lǐng)域的技術(shù)人員將進(jìn)一步理解,可使用各種編程語(yǔ)言來(lái)產(chǎn)生經(jīng)設(shè)計(jì)以實(shí)施并執(zhí)行本文所揭示的方法的一個(gè)或一個(gè)以上軟件程序??墒褂脤?duì)象導(dǎo)向語(yǔ)言(例如,Java、C++或一種或一種以上其它語(yǔ)言)以對(duì)象導(dǎo)向格式來(lái)結(jié)構(gòu)化所述程序?;蛘?,可使用程序語(yǔ)言(例如,組合語(yǔ)言、C等)以程序?qū)蚋袷絹?lái)結(jié)構(gòu)化所述程序。軟件組件可使用所屬領(lǐng)域的技術(shù)人員所眾所周知的許多方案中的任一者來(lái)通信,例如應(yīng)用編程接口或過(guò)程間通信技術(shù),包含遠(yuǎn)程程序呼叫或其它。各個(gè)實(shí)施例的教示不限于任何特定編程語(yǔ)言或環(huán)境。
[0120]因此,可實(shí)現(xiàn)其它實(shí)施例。舉例來(lái)說(shuō),制造物件(例如,計(jì)算機(jī)、存儲(chǔ)器系統(tǒng)、磁盤或光盤、某一其它存儲(chǔ)裝置,或任何類型的電子裝置或系統(tǒng))可包含一個(gè)或一個(gè)以上處理器1502,所述一個(gè)或一個(gè)以上處理器1502耦合到上面存儲(chǔ)有指令1524(例如,計(jì)算機(jī)程序指令)的計(jì)算機(jī)可讀媒體1522,例如存儲(chǔ)器(例如,可裝卸式存儲(chǔ)媒體,以及包含電、光或電磁導(dǎo)體的任何存儲(chǔ)器),所述指令在由所述一個(gè)或一個(gè)以上處理器1502執(zhí)行時(shí)導(dǎo)致執(zhí)行相對(duì)于上述方法所描述的動(dòng)作中的任一者。
[0121]計(jì)算機(jī)1500可采取具有處理器1502的計(jì)算機(jī)系統(tǒng)的形式,所述處理器1502直接和/或使用總線1508而耦合到許多組件。這些組件可包含主存儲(chǔ)器1504、靜態(tài)或非易失性存儲(chǔ)器1506和大容量存儲(chǔ)裝置1516。耦合到處理器1502的其它組件可包含輸出裝置1510(例如,視頻顯示器)、輸入裝置1512(例如,鍵盤)和光標(biāo)控制裝置1514(例如,鼠標(biāo))。用以將處理器1502和其它組件耦合到網(wǎng)絡(luò)1526的網(wǎng)絡(luò)接口裝置1520還可耦合到總線1508。指令1524可利用許多眾所周知的傳送協(xié)議(例如,HTTP)中的任一者經(jīng)由網(wǎng)絡(luò)接口裝置1520跨越網(wǎng)絡(luò)1526來(lái)進(jìn)一步發(fā)射或接收。耦合到總線1508的這些元件中的任一者可不存在,單獨(dú)地存在,或以復(fù)數(shù)形式存在,這取決于待實(shí)現(xiàn)的特定實(shí)施例。
[0122]在實(shí)例中,處理器1502、存儲(chǔ)器1504、1506或存儲(chǔ)裝置1516中的一者或一者以上可各自包含指令1524,所述指令1524在執(zhí)行時(shí)可致使計(jì)算機(jī)1500執(zhí)行本文所描述的方法中的任何一者或一者以上。在替代實(shí)施例中,計(jì)算機(jī)1500操作為單獨(dú)裝置或可連接(例如,聯(lián)網(wǎng))到其它裝置。在聯(lián)網(wǎng)環(huán)境中,計(jì)算機(jī)1500可以服務(wù)器一客戶端網(wǎng)絡(luò)環(huán)境中的服務(wù)器或客戶端裝置的能力來(lái)操作,或操作為對(duì)等(或分散式)網(wǎng)絡(luò)環(huán)境中的對(duì)等裝置。計(jì)算機(jī)1500可包含個(gè)人計(jì)算機(jī)(PC)、平板PC、機(jī)頂盒(STB)、個(gè)人數(shù)字助理(PDA)、蜂窩式電話、web器具、網(wǎng)絡(luò)路由器、交換機(jī)或橋接器,或能夠執(zhí)行指令集(順序的或其它)的任何裝置,所述指令集指定將由所述裝置采取的行動(dòng)。另外,雖然僅說(shuō)明了單一計(jì)算機(jī)1500,但術(shù)語(yǔ)“計(jì)算機(jī)”還應(yīng)被視為包含個(gè)別地或共同地執(zhí)行一(或多個(gè))指令集以執(zhí)行本文中所論述的方法中的任何一者或一者以上的裝置的任何集合。
[0123]計(jì)算機(jī)1500還可包含用于使用一個(gè)或一個(gè)以上通信協(xié)議(例如,通用串行總線(USB)、IEEE1394等)與外圍裝置通信的輸出控制器1528。輸出控制器1528可(例如)將映像提供到通信地耦合到計(jì)算機(jī)1500的編程裝置1530。編程裝置1530可經(jīng)配置以編程平行機(jī)(例如,平行機(jī)500、FSM引擎600)。在其它實(shí)例中,編程裝置1530可與計(jì)算機(jī)1500集成且耦合到總線1508或可經(jīng)由網(wǎng)絡(luò)接口裝置1520或另一裝置與計(jì)算機(jī)1500通信。
[0124]雖然計(jì)算機(jī)可讀媒體1524展示為單一媒體,但術(shù)語(yǔ)“計(jì)算機(jī)可讀媒體”應(yīng)被視為包含存儲(chǔ)所述一個(gè)或一個(gè)以上指令集1524的單一媒體或多個(gè)媒體(例如,集中式或分散式數(shù)據(jù)庫(kù),或相關(guān)聯(lián)的高速緩沖存儲(chǔ)器和服務(wù)器,和或各種存儲(chǔ)媒體,例如處理器1502寄存器、存儲(chǔ)器1504、1506和存儲(chǔ)裝置1516)。術(shù)語(yǔ)“計(jì)算機(jī)可讀媒體”還應(yīng)被視為包含以下任何媒體,其能夠存儲(chǔ)、編碼或載運(yùn)供計(jì)算機(jī)執(zhí)行的指令集且致使所述計(jì)算機(jī)執(zhí)行本發(fā)明的方法中的任何一者或一者以上,或能夠存儲(chǔ)、編碼或載運(yùn)供此指令集利用或與此指令集相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)。術(shù)語(yǔ)“計(jì)算機(jī)可讀媒體”因此應(yīng)被視為包含(但不限于)有形媒體,例如固態(tài)存儲(chǔ)器、光媒體和磁性媒體。
[0125]提供摘要以遵照需要摘要的37C.F.R.章節(jié)1.72 (b),此將允許讀者確定技術(shù)揭示內(nèi)容的性質(zhì)和要旨。在理解到摘要將不用以限制或解釋權(quán)利要求書的范圍或涵義的情況下提交摘要。所附權(quán)利要求書特此并入詳細(xì)描述中,其中每一權(quán)利要求依賴于其自身而作為單獨(dú)實(shí)施例。
[0126]實(shí)例實(shí)施例
[0127]實(shí)例I包含一種計(jì)算機(jī)實(shí)施方法,所述方法用于產(chǎn)生對(duì)應(yīng)于包含通用元件和專用元件的一組元件的機(jī)器碼,所述方法包括:確定有關(guān)系連接的運(yùn)算符的布置中的一部分是否滿足將被映射到專用元件的條件;如果所述部分滿足所述條件,那么將所述部分映射到專用元件;和將有關(guān)系連接的運(yùn)算符的所述布置轉(zhuǎn)換成機(jī)器碼。
[0128]實(shí)例2包含一種計(jì)算機(jī)可讀媒體,其包含指令,所述指令在由計(jì)算機(jī)執(zhí)行時(shí)致使所述計(jì)算機(jī)執(zhí)行包括以下各者的操作:識(shí)別有關(guān)系連接的運(yùn)算符的布置中的對(duì)應(yīng)于目標(biāo)裝置的專用元件的一部分,其中所述目標(biāo)裝置還包含通用元件;確定所述部分是否滿足將被映射到所述專用元件的條件;將所述布置轉(zhuǎn)換成包括多個(gè)狀態(tài)的自動(dòng)機(jī),其中如果所述部分滿足所述條件,那么使用對(duì)應(yīng)于所述專用元件的專用狀態(tài)來(lái)轉(zhuǎn)換所述部分;和將所述自動(dòng)機(jī)轉(zhuǎn)換成機(jī)器碼。
[0129]實(shí)例3包含一種計(jì)算機(jī),其包括:存儲(chǔ)器,其上面存儲(chǔ)有軟件;和處理器,其通信地耦合到所述存儲(chǔ)器,其中所述軟件在通過(guò)所述處理器執(zhí)行時(shí)致使所述處理器將正規(guī)表達(dá)式編譯成用于目標(biāo)裝置的碼,其中所述目標(biāo)裝置支持第一類型的元件和至少一種其它類型的元件;其中編譯包含將對(duì)應(yīng)于所述第一類型的元件的第一正規(guī)表達(dá)式映射到所述第一類型的元件;且其中編譯包含將不對(duì)應(yīng)于所述第一類型的元件的第二正規(guī)表達(dá)式映射到所述至少一種其它類型的元件。
[0130]實(shí)例4包含一種系統(tǒng),其包括計(jì)算機(jī),所述計(jì)算機(jī)經(jīng)配置以識(shí)別有關(guān)系連接的運(yùn)算符的布置中的對(duì)應(yīng)于目標(biāo)裝置的專用元件的一部分,其中所述目標(biāo)裝置還包含通用元件;確定所述部分是否滿足將被映射到所述專用元件的條件;將所述布置轉(zhuǎn)換成包括多個(gè)互連狀態(tài)的自動(dòng)機(jī),其中如果第一部分滿足所述條件,那么將所述部分轉(zhuǎn)換成對(duì)應(yīng)于所述專用元件的專用狀態(tài);和將所述自動(dòng)機(jī)轉(zhuǎn)換成機(jī)器碼;和所述系統(tǒng)包括用于編程平行機(jī)的裝置,所述裝置經(jīng)配置以將所述機(jī)器碼加載到所述平行機(jī)上。
[0131]在實(shí)例5中,實(shí)例I到4中任一者的標(biāo)的可任選地包含,其中所述機(jī)器碼包括用于平行機(jī)的映像。
[0132]在實(shí)例6中,實(shí)例I到5中任一者的標(biāo)的可任選地包含,其中所述組元件包含供在處理器上執(zhí)行的指令集,且其中所述專用元件包含專用指令。
[0133]在實(shí)例7中,實(shí)例I到6中任一者的標(biāo)的可任選地包含識(shí)別有關(guān)系連接的運(yùn)算符的所述布置中的對(duì)應(yīng)于專用元件的一部分,其中確定一部分是否滿足條件,確定經(jīng)識(shí)別的所述部分是否滿足條件;其中映射包含將所述布置轉(zhuǎn)換成包括多個(gè)狀態(tài)的自動(dòng)機(jī),其中如果所述部分滿足所述條件,那么使用對(duì)應(yīng)于所述專用元件的專用狀態(tài)來(lái)轉(zhuǎn)換所述部分;且其中轉(zhuǎn)換所述布置包含將所述自動(dòng)機(jī)轉(zhuǎn)換成機(jī)器碼。
[0134]在實(shí)例8中,實(shí)例I到7中任一者的標(biāo)的可任選地包含,其中識(shí)別所述布置中的對(duì)應(yīng)于專用元件的一部分包括識(shí)別所述有關(guān)系連接的運(yùn)算符中的可使用所述專用元件實(shí)施的運(yùn)算符。
[0135]在實(shí)例9中,實(shí)例I到8中任一者的標(biāo)的可任選地包含,其中將所述布置轉(zhuǎn)換成自動(dòng)機(jī)包括將所述布置中的運(yùn)算符中的每一者轉(zhuǎn)換成所述多個(gè)狀態(tài)中的一者或一者以上。
[0136]在實(shí)例10中,實(shí)例I到9中任一者的標(biāo)的可任選地包含,其中如果所述部分不滿足所述條件,那么使用通用狀態(tài)且不使用對(duì)應(yīng)于專用元件的專用狀態(tài)來(lái)轉(zhuǎn)換所述部分,其中所述通用狀態(tài)對(duì)應(yīng)于所述通用元件。
[0137]在實(shí)例11中,實(shí)例I到10中任一者的標(biāo)的可任選地包含,其中所述部分包括第一部分,且其中如果所述布置的第二部分并未被識(shí)別為對(duì)應(yīng)于專用元件,那么使用通用狀態(tài)且不使用對(duì)應(yīng)于專用元件的專用狀態(tài)來(lái)轉(zhuǎn)換所述第二部分,其中所述通用狀態(tài)對(duì)應(yīng)于通用元件。
[0138]在實(shí)例12中,實(shí)例I到11中任一者的標(biāo)的可任選地包含,其中所述組元件包含平行機(jī)的一組硬件元件,其中所述通用元件包括可編程元件且其中所述專用元件包含計(jì)數(shù)器。
[0139]在實(shí)例13中,實(shí)例I到12中任一者的標(biāo)的可任選地包含,其中所述可編程元件包括狀態(tài)機(jī)元件。
[0140]在實(shí)例14中,實(shí)例I到13中任一者的標(biāo)的可任選地包含,其中所述狀態(tài)機(jī)元件包含存儲(chǔ)器單元。
[0141]在實(shí)例15中,實(shí)例I到13中任一者的標(biāo)的可任選地包含,其中所述存儲(chǔ)器單元包括易失性存儲(chǔ)器單元。
[0142]在實(shí)例16中,實(shí)例I到15中任一者的標(biāo)的可任選地包含進(jìn)一步包括發(fā)布所述機(jī)器碼。
[0143]在實(shí)例17中,實(shí)例I到16中任一者的標(biāo)的可任選地包含,其中發(fā)布所述機(jī)器碼包含將所述機(jī)器碼加載到平行機(jī)上。
[0144]在實(shí)例18中,實(shí)例I到17中任一者的標(biāo)的可任選地包含,其中發(fā)布所述機(jī)器碼包含將所述機(jī)器碼存儲(chǔ)于計(jì)算機(jī)可讀媒體上。
[0145]在實(shí)例19中,實(shí)例I到18中任一者的標(biāo)的可任選地包含,其中所述指令致使所述計(jì)算機(jī)執(zhí)行包括以下各者的操作:將源碼轉(zhuǎn)換成所述布置;和發(fā)布所述機(jī)器碼。
[0146]在實(shí)例20中,實(shí)例I到19中任一者的標(biāo)的可任選地包含,其中確定所述部分是否滿足將被映射到專用元件的條件包括確定所述部分是否為確定性的。
[0147]在實(shí)例21中,實(shí)例I到20中任一者的標(biāo)的可任選地包含,其中識(shí)別所述布置的一部分包含識(shí)別量化;且其中確定所述部分是否為確定性的包含確定在處理所述量化時(shí)是否可匹配所述量化的驅(qū)動(dòng)表達(dá)式。
[0148]在實(shí)例22中,實(shí)例I到21中任一者的標(biāo)的可任選地包含,其中識(shí)別所述布置的一部分包含識(shí)別量化;且其中確定所述部分是否為確定性的包含確定所述量化的重復(fù)表達(dá)式是否為所述量化的另一重復(fù)表達(dá)式的前綴。
[0149]在實(shí)例23中,實(shí)例I到22中任一者的標(biāo)的可任選地包含,其中識(shí)別所述布置中的一部分包含識(shí)別量化。
[0150]在實(shí)例24中,實(shí)例I到23中任一者的標(biāo)的可任選地包含,其中確定所述部分是否為確定性的包含確定在處理所述量化時(shí)是否可匹配所述量化的驅(qū)動(dòng)表達(dá)式,且確定所述量化的重復(fù)表達(dá)式是否為所述量化的另一重復(fù)表達(dá)式的前綴。
[0151]在實(shí)例25中,實(shí)例I到24中任一者的標(biāo)的可任選地包含,其中所述專用元件包含在所述自動(dòng)機(jī)中具有對(duì)應(yīng)計(jì)數(shù)器狀態(tài)的計(jì)數(shù)器,且所述通用元件包含在所述自動(dòng)機(jī)中具有對(duì)應(yīng)狀態(tài)機(jī)元件狀態(tài)的狀態(tài)機(jī)元件。[0152]在實(shí)例26中,實(shí)例I到25中任一者的標(biāo)的可任選地包含,其中當(dāng)所述部分對(duì)應(yīng)于量化且所述部分為確定性時(shí),將所述部分實(shí)施為循環(huán),所述循環(huán)包括所述量化的重復(fù)表達(dá)式和計(jì)數(shù)器狀態(tài),其中所述計(jì)數(shù)器狀態(tài)經(jīng)配置以對(duì)所述重復(fù)表達(dá)式匹配的次數(shù)計(jì)數(shù),且其中在所述重復(fù)表達(dá)式匹配了通過(guò)所述量化指定的次數(shù)時(shí)所述計(jì)數(shù)器狀態(tài)激活下游狀態(tài)。
[0153]在實(shí)例27中,實(shí)例I到26中任一者的標(biāo)的可任選地包含,其中所述循環(huán)通過(guò)與所述重復(fù)表達(dá)式的否定版本的匹配而退出。
[0154]在實(shí)例28中,實(shí)例I到27中任一者的標(biāo)的可任選地包含,其中當(dāng)所述量化可與單一數(shù)目個(gè)循環(huán)匹配時(shí),配置所述重復(fù)表達(dá)式以斷言所述計(jì)數(shù)器狀態(tài)的計(jì)數(shù)輸入;配置所述重復(fù)表達(dá)式的否定版本以復(fù)位所述計(jì)數(shù)器狀態(tài);和配置所述計(jì)數(shù)器狀態(tài)以在所述計(jì)數(shù)輸入已斷言了等于循環(huán)的數(shù)目的次數(shù)但未復(fù)位所述計(jì)數(shù)器狀態(tài)時(shí)斷言輸出。
[0155]在實(shí)例29中,實(shí)例I到28中任一者的標(biāo)的可任選地包含,其中當(dāng)所述量化可與多個(gè)數(shù)目個(gè)循環(huán)匹配時(shí),配置所述重復(fù)表達(dá)式以斷言第一計(jì)數(shù)器狀態(tài)的計(jì)數(shù)輸入和第二計(jì)數(shù)器狀態(tài)的計(jì)數(shù)輸入;配置所述重復(fù)表達(dá)式以斷言所述第一計(jì)數(shù)器狀態(tài)的復(fù)位輸入和所述第二計(jì)數(shù)器狀態(tài)的復(fù)位輸入;配置所述第一計(jì)數(shù)器狀態(tài)以在所述第一計(jì)數(shù)器狀態(tài)的所述計(jì)數(shù)輸入已斷言了等于所述多個(gè)數(shù)目個(gè)循環(huán)的低閾值的次數(shù)但未復(fù)位所述第一計(jì)數(shù)器狀態(tài)時(shí)斷言輸出;和配置所述第二計(jì)數(shù)器狀態(tài)以在所述第二計(jì)數(shù)器狀態(tài)的計(jì)數(shù)輸入已斷言了等于所述多個(gè)數(shù)目個(gè)循環(huán)的高閾值的次數(shù)但未復(fù)位所述第二計(jì)數(shù)器狀態(tài)時(shí)斷言所述第二計(jì)數(shù)器狀態(tài)的輸出,其中所述第二計(jì)數(shù)器狀態(tài)的輸出經(jīng)配置以斷言所述第一計(jì)數(shù)器狀態(tài)的復(fù)位輸入。
[0156]在實(shí)例30中,實(shí)例I到29中任一者的標(biāo)的可任選地包含,其中所述目標(biāo)裝置包括平行機(jī),且所述第一類型的元件為第一類型的硬件元件,且所述至少一個(gè)其它類型的元件包含第二類型的硬件元件。
[0157]在實(shí)例31中,實(shí)例I到30中任一者的標(biāo)的可任選地包含,其中所述第二類型的硬件元件可接收輸入流且根據(jù)所述輸入流而提供輸出;且其中所述第一類型的硬件元件不接收所述輸入流且根據(jù)來(lái)自所述目標(biāo)裝置的其它元件的輸入而提供輸出。
[0158]在實(shí)例32中,實(shí)例I到31中任一者的標(biāo)的可任選地包含,其中所述第一類型的元件為計(jì)數(shù)器且所述第二類型的元件為狀態(tài)機(jī)元件。
[0159]在實(shí)例33中,實(shí)例I到32中任一者的標(biāo)的可任選地包含確定正規(guī)表達(dá)式是否為對(duì)應(yīng)于所述第一類型的元件的類型;且當(dāng)所述正規(guī)表達(dá)式并非對(duì)應(yīng)于所述第一類型的元件的類型時(shí),將所述正規(guī)表達(dá)式映射到所述至少一種其它類型的元件。
[0160]在實(shí)例34中,實(shí)例I到33中任一者的標(biāo)的可任選地包含,其中確定正規(guī)表達(dá)式是否為對(duì)應(yīng)于所述第一類型的元件的類型包含確定所述正規(guī)表達(dá)式是否為量化;且當(dāng)所述正規(guī)表達(dá)式并非量化時(shí),將所述正規(guī)表達(dá)式映射到所述至少一種其它類型的元件。
[0161]在實(shí)例35中,實(shí)例I到34中任一者的標(biāo)的可任選地包含確定所述量化是否為確定性的;當(dāng)所述量化為確定性時(shí),將所述正規(guī)表達(dá)式映射到所述第一類型的元件;和當(dāng)所述量化并非確定性時(shí),將所述正規(guī)表達(dá)式映射到所述至少一種其它類型的元件。
[0162]在實(shí)例36中,實(shí)例I到35中任一者的標(biāo)的可任選地包含,其中確定所述量化是否為確定性的包含確定在處理所述量化時(shí)是否可匹配所述量化的驅(qū)動(dòng)表達(dá)式,且所述量化的重復(fù)表達(dá)式是否為所述量化的另一重復(fù)表達(dá)式的前綴。[0163]在實(shí)例37中,實(shí)例I到36中任一者的標(biāo)的可任選地包含,其中編譯包含剖析所述正規(guī)表達(dá)式以形成語(yǔ)法樹(shù);將所述語(yǔ)法樹(shù)轉(zhuǎn)換成自動(dòng)機(jī);將所述自動(dòng)機(jī)轉(zhuǎn)換成連線表;放置所述連線表的個(gè)例;和對(duì)所述連線表的個(gè)例之間的連接進(jìn)行路由。
[0164]在實(shí)例38中,實(shí)例I到37中任一者的標(biāo)的可任選地包含,其中所述正規(guī)表達(dá)式包括用于搜索無(wú)結(jié)構(gòu)數(shù)據(jù)的準(zhǔn)則。
[0165]在實(shí)例39中,實(shí)例I到38中任一者的標(biāo)的可任選地包含,其中確定所述部分是否滿足將被映射到專用元件的條件包括確定所述部分是否為確定性的。
[0166]在實(shí)例40中,實(shí)例I到39中任一者的標(biāo)的可任選地包含,其中識(shí)別所述布置的一部分包含識(shí)別量化;且其中確定所述部分是否為確定性的包含確定在處理所述量化時(shí)是否可匹配所述量化的驅(qū)動(dòng)表達(dá)式,和所述量化的重復(fù)表達(dá)式是否為所述量化的另一重復(fù)表達(dá)式的前綴。
[0167]實(shí)例41包含通過(guò)使用權(quán)利要求1到40中任一者的標(biāo)的產(chǎn)生的映像來(lái)編程的平行機(jī)。
【權(quán)利要求】
1.一種計(jì)算機(jī)實(shí)施方法,所述方法用于產(chǎn)生對(duì)應(yīng)于包含通用元件和專用元件的一組元件的機(jī)器碼,所述方法包括: 確定有關(guān)系連接的運(yùn)算符的布置中的一部分是否滿足將被映射到專用元件的條件; 如果所述部分滿足所述條件,那么將所述部分映射到專用元件;和 將有關(guān)系連接的運(yùn)算符的所述布置轉(zhuǎn)換成機(jī)器碼。
2.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)施方法,其中所述機(jī)器碼包括用于平行機(jī)的映像。
3.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)施方法,其中所述組元件包含供在處理器上執(zhí)行的指令集,且其中所述專用元件包含專用指令。
4.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)施方法,其包括: 識(shí)別有關(guān)系連接的運(yùn)算符的所述布置中的對(duì)應(yīng)于專用元件的一部分,其中確定一部分是否滿足條件,確定經(jīng)識(shí)別的所述部分是否滿足條件; 其中映射包含將所述布置轉(zhuǎn)換成包括多個(gè)狀態(tài)的自動(dòng)機(jī),其中如果所述部分滿足所述條件,那么使用對(duì)應(yīng)于所述專用元件的專用狀態(tài)來(lái)轉(zhuǎn)換所述部分;且 其中轉(zhuǎn)換所述布置包含將所述自動(dòng)機(jī)轉(zhuǎn)換成機(jī)器碼。
5.根據(jù)權(quán)利要求4所述的計(jì)算機(jī)實(shí)施方法,其中識(shí)別所述布置中的對(duì)應(yīng)于專用元件的一部分包括:識(shí)別所述有關(guān)系連接的運(yùn)算符中的可使用所述專用元件來(lái)實(shí)施的運(yùn)算符。
6.根據(jù)權(quán)利要求4所述的計(jì)算機(jī)實(shí)施方法,其中將所述布置轉(zhuǎn)換成自動(dòng)機(jī)包括:將所述布置中的所述運(yùn)算符中的每一者轉(zhuǎn)換成所述多個(gè)狀態(tài)中的一者或一者以上。
7.根據(jù)權(quán)利要求4所述的計(jì)算機(jī)實(shí)施方法,其中如果所述部分不滿足所述條件,那么使用通用狀態(tài)且不使用對(duì)應(yīng)于專用元件的專用狀態(tài)來(lái)轉(zhuǎn)換所述部分,其中所述通用狀態(tài)對(duì)應(yīng)于所述通用元件。
8.根據(jù)權(quán)利要求4所述的計(jì)算機(jī)實(shí)施方法,其中所述部分包括第一部分,且其中如果所述布置的第二部分并未被識(shí)別為對(duì)應(yīng)于專用元件,那么使用通用狀態(tài)且不使用對(duì)應(yīng)于專用元件的專用狀態(tài)來(lái)轉(zhuǎn)換所述第二部分,其中所述通用狀態(tài)對(duì)應(yīng)于通用元件。
9.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)施方法,其中所述組元件包含平行機(jī)的一組硬件元件,其中所述通用元件包括可編程元件且其中所述專用元件包含計(jì)數(shù)器。
10.根據(jù)權(quán)利要求9所述的計(jì)算機(jī)實(shí)施方法,其中所述可編程元件包括狀態(tài)機(jī)元件。
11.根據(jù)權(quán)利要求10所述的計(jì)算機(jī)實(shí)施方法,其中所述狀態(tài)機(jī)元件包含存儲(chǔ)器單元。
12.根據(jù)權(quán)利要求11所述的計(jì)算機(jī)實(shí)施方法,其中所述存儲(chǔ)器單元包括易失性存儲(chǔ)器單元。
13.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)施方法,其進(jìn)一步包括: 發(fā)布所述機(jī)器碼。
14.根據(jù)權(quán)利要求13所述的計(jì)算機(jī)實(shí)施方法,其中發(fā)布所述機(jī)器碼包含:將所述機(jī)器碼加載到平行機(jī)上。
15.根據(jù)權(quán)利要求13所述的計(jì)算機(jī)實(shí)施方法,其中發(fā)布所述機(jī)器碼包含:將所述機(jī)器碼存儲(chǔ)于計(jì)算機(jī)可讀媒體上。
16.一種計(jì)算機(jī)可讀媒體,其包含指令,所述指令在由計(jì)算機(jī)執(zhí)行時(shí)致使所述計(jì)算機(jī)執(zhí)行包括以下各者的操作: 識(shí)別有關(guān)系連接的運(yùn)算符的布置中的對(duì)應(yīng)于目標(biāo)裝置的專用元件的一部分,其中所述目標(biāo)裝置還包含通用元件; 確定所述部分是否滿足將被映射到所述專用元件的條件; 將所述布置轉(zhuǎn)換成包括多個(gè)狀態(tài)的自動(dòng)機(jī),其中如果所述部分滿足所述條件,那么使用對(duì)應(yīng)于所述專用元件的專用狀態(tài)來(lái)轉(zhuǎn)換所述部分;和 將所述自動(dòng)機(jī)轉(zhuǎn)換成機(jī)器碼。
17.根據(jù)權(quán)利要求16所述的計(jì)算機(jī)可讀媒體,其中所述指令致使所述計(jì)算機(jī)執(zhí)行包括以下各者的操作: 將源碼轉(zhuǎn)換成所述布置;和 發(fā)布所述機(jī)器碼。
18.根據(jù)權(quán)利要求16所述的計(jì)算機(jī)可讀媒體,其中確定所述部分是否滿足將被映射到專用元件的條件包括:確定所述部分是否為確定性的。
19.根據(jù)權(quán)利要求18所述的計(jì)算機(jī)可讀媒體,其中識(shí)別所述布置的一部分包含: 識(shí)別量化;且 其中確定所述部分是否為確定性的包含確定在處理所述量化時(shí)是否可匹配所述量化的驅(qū)動(dòng)表達(dá)式。
20.根據(jù)權(quán)利要求18所述的計(jì)算機(jī)可讀媒體,其中識(shí)別所述布置的一部分包含: 識(shí)別量化;且· 其中確定所述部分是否為確定性的包含確定所述量化的重復(fù)表達(dá)式是否為所述量化的另一重復(fù)表達(dá)式的前綴。
21.根據(jù)權(quán)利要求18所述的計(jì)算機(jī)可讀媒體,其中識(shí)別所述布置中的一部分包含識(shí)別量化。
22.根據(jù)權(quán)利要求21所述的計(jì)算機(jī)可讀媒體,其中確定所述部分是否為確定性的包含:確定在處理所述量化時(shí)是否可匹配所述量化的驅(qū)動(dòng)表達(dá)式;和確定所述量化的重復(fù)表達(dá)式是否為所述量化的另一重復(fù)表達(dá)式的前綴。
23.根據(jù)權(quán)利要求22所述的計(jì)算機(jī)可讀媒體,其中所述專用元件包含在所述自動(dòng)機(jī)中具有對(duì)應(yīng)計(jì)數(shù)器狀態(tài)的計(jì)數(shù)器,且所述通用元件包含在所述自動(dòng)機(jī)中具有對(duì)應(yīng)狀態(tài)機(jī)元件狀態(tài)的狀態(tài)機(jī)元件。
24.根據(jù)權(quán)利要求23所述的計(jì)算機(jī)可讀媒體,其中當(dāng)所述部分對(duì)應(yīng)于量化且所述部分為確定性時(shí),將所述部分實(shí)施為循環(huán),所述循環(huán)包括所述量化的重復(fù)表達(dá)式和計(jì)數(shù)器狀態(tài),其中所述計(jì)數(shù)器狀態(tài)經(jīng)配置以對(duì)所述重復(fù)表達(dá)式匹配的次數(shù)計(jì)數(shù),且其中在所述重復(fù)表達(dá)式匹配了通過(guò)所述量化指定的次數(shù)時(shí)所述計(jì)數(shù)器狀態(tài)激活下游狀態(tài)。
25.根據(jù)權(quán)利要求24所述的計(jì)算機(jī)可讀媒體,其中所述循環(huán)通過(guò)與所述重復(fù)表達(dá)式的否定版本的匹配而退出。
26.根據(jù)權(quán)利要求24所述的計(jì)算機(jī)可讀媒體,其中當(dāng)所述量化可與單一數(shù)目個(gè)循環(huán)匹配時(shí), 配置所述重復(fù)表達(dá)式以斷言所述計(jì)數(shù)器狀態(tài)的計(jì)數(shù)輸入; 配置所述重復(fù)表達(dá)式的否定版本以復(fù)位所述計(jì)數(shù)器狀態(tài);和 配置所述計(jì)數(shù)器狀態(tài)以在所述計(jì)數(shù)輸入已斷言了等于循環(huán)的所述數(shù)目的次數(shù)但未復(fù)位所述計(jì)數(shù)器狀態(tài)時(shí)斷言輸出。
27.根據(jù)權(quán)利要求24所述的計(jì)算機(jī)可讀媒體,其中當(dāng)所述量化可與多個(gè)數(shù)目個(gè)循環(huán)匹配時(shí), 配置所述重復(fù)表達(dá)式以斷言第一計(jì)數(shù)器狀態(tài)的計(jì)數(shù)輸入和第二計(jì)數(shù)器狀態(tài)的計(jì)數(shù)輸A ; 配置所述重復(fù)表達(dá)式以斷言所述第一計(jì)數(shù)器狀態(tài)的復(fù)位輸入和所述第二計(jì)數(shù)器狀態(tài)的復(fù)位輸入; 配置所述第一計(jì)數(shù)器狀態(tài)以在所述第一計(jì)數(shù)器狀態(tài)的所述計(jì)數(shù)輸入已斷言了等于所述多個(gè)數(shù)目個(gè)循環(huán)的低閾值的次數(shù)但未復(fù)位所述第一計(jì)數(shù)器狀態(tài)時(shí)斷言輸出;和 配置所述第二計(jì)數(shù)器狀態(tài)以在所述第二計(jì)數(shù)器狀態(tài)的所述計(jì)數(shù)輸入已斷言了等于所述多個(gè)數(shù)目個(gè)循環(huán)的高閾值的次數(shù)但未復(fù)位所述第二計(jì)數(shù)器狀態(tài)時(shí)斷言所述第二計(jì)數(shù)器狀態(tài)的輸出,其中所述第二計(jì)數(shù)器狀態(tài)的所述輸出經(jīng)配置以斷言所述第一計(jì)數(shù)器狀態(tài)的所述復(fù)位輸入。
28.一種計(jì)算機(jī),其包括: 存儲(chǔ)器,其上面存儲(chǔ)有 軟件;和 處理器,其通信地耦合到所述存儲(chǔ)器,其中所述軟件在由所述處理器執(zhí)行時(shí)致使所述處理器: 將正規(guī)表達(dá)式編譯成用于目標(biāo)裝置的碼,其中所述目標(biāo)裝置支持第一類型的元件和至少一種其它類型的元件; 其中編譯包含將對(duì)應(yīng)于所述第一類型的元件的第一正規(guī)表達(dá)式映射到所述第一類型的元件;且 其中編譯包含將不對(duì)應(yīng)于所述第一類型的元件的第二正規(guī)表達(dá)式映射到所述至少一種其它類型的元件。
29.根據(jù)權(quán)利要求28所述的計(jì)算機(jī),其中所述目標(biāo)裝置包括平行機(jī),且所述第一類型的元件為第一類型的硬件元件,且所述至少一種其它類型的元件包含第二類型的硬件元件。
30.根據(jù)權(quán)利要求29所述的計(jì)算機(jī),其中所述第二類型的硬件元件可接收輸入流并根據(jù)所述輸入流提供輸出;且 其中所述第一類型的硬件元件不接收所述輸入流且根據(jù)來(lái)自所述目標(biāo)裝置的其它元件的輸入而提供輸出。
31.根據(jù)權(quán)利要求30所述的計(jì)算機(jī),其中所述第一類型的元件為計(jì)數(shù)器且所述第二類型的元件為狀態(tài)機(jī)元件。
32.根據(jù)權(quán)利要求28所述的計(jì)算機(jī),其中所述軟件致使所述處理器: 確定正規(guī)表達(dá)式是否為對(duì)應(yīng)于所述第一類型的元件的類型;和 當(dāng)所述正規(guī)表達(dá)式并非對(duì)應(yīng)于所述第一類型的元件的類型時(shí),將所述正規(guī)表達(dá)式映射到所述至少一種其它類型的元件。
33.根據(jù)權(quán)利要求32所述的計(jì)算機(jī),其中確定正規(guī)表達(dá)式是否為對(duì)應(yīng)于所述第一類型的元件的類型包含: 確定所述正規(guī)表達(dá)式是否為量化;和 當(dāng)所述正規(guī)表達(dá)式并非量化時(shí),將所述正規(guī)表達(dá)式映射到所述至少一種其它類型的元件。
34.根據(jù)權(quán)利要求33所述的計(jì)算機(jī),其中所述軟件致使所述處理器: 確定所述量化是否為確定性的; 當(dāng)所述量化為確定性的時(shí),將所述正規(guī)表達(dá)式映射到所述第一類型的元件;和 當(dāng)所述量化并非確定性的時(shí),將所述正規(guī)表達(dá)式映射到所述至少一種其它類型的元件。
35.根據(jù)權(quán)利要求34所述的計(jì)算機(jī),其中確定所述量化是否為確定性的包含確定在處理所述量化時(shí)是否可匹配所述量化的驅(qū)動(dòng)表達(dá)式,和所述量化的重復(fù)表達(dá)式是否為所述量化的另一重復(fù)表達(dá)式的前綴。
36.根據(jù)權(quán)利要求28所述的計(jì)算機(jī),其中編譯包含: 剖析所述正規(guī)表達(dá)式以形成語(yǔ)法樹(shù); 將所述語(yǔ)法樹(shù)轉(zhuǎn)換成自動(dòng)機(jī); 將所述自動(dòng)機(jī)轉(zhuǎn)換成連線表; 放置所述連線表的個(gè)例;和 對(duì)所述連線表的所述個(gè)例之間的連接進(jìn)行路由。
37.根據(jù)權(quán)利要求36所述的計(jì)算機(jī),其中所述正規(guī)表達(dá)式包括用于搜索無(wú)結(jié)構(gòu)數(shù)據(jù)的準(zhǔn)則。
38.一種系統(tǒng),其包括: 計(jì)算機(jī),其經(jīng)配置以: 識(shí)別有關(guān)系連接的運(yùn)算符的布置中的對(duì)應(yīng)于目標(biāo)裝置的專用元件的一部分,其中所述目標(biāo)裝置還包含通用元件; 確定所述部分是否滿足將被映射到所述專用元件的條件; 將所述布置轉(zhuǎn)換成包括多個(gè)互連狀態(tài)的自動(dòng)機(jī),其中如果第一部分滿足所述條件,那么將所述部分轉(zhuǎn)換成對(duì)應(yīng)于所述專用元件的專用狀態(tài);和將所述自動(dòng)機(jī)轉(zhuǎn)換成機(jī)器碼;和 用于編程平行機(jī)的裝置,所述裝置經(jīng)配置以將所述機(jī)器碼加載到所述平行機(jī)上。
39.根據(jù)權(quán)利要求38所述的系統(tǒng),其中確定所述部分是否滿足將被映射到專用元件的條件包括:確定所述部分是否為確定性的。
40.根據(jù)權(quán)利要求38所述的系統(tǒng),其中識(shí)別所述布置的一部分包含: 識(shí)別量化;且 其中確定所述部分是否為確定性的包含確定在處理所述量化時(shí)是否可匹配所述量化的驅(qū)動(dòng)表達(dá)式,和所述量化的重復(fù)表達(dá)式是否為所述量化的另一重復(fù)表達(dá)式的前綴。
41.一種通過(guò)使用根據(jù)權(quán)利要求1所述的過(guò)程產(chǎn)生的映像編程的平行機(jī)。
【文檔編號(hào)】G06F9/45GK103547999SQ201280013886
【公開(kāi)日】2014年1月29日 申請(qǐng)日期:2012年1月24日 優(yōu)先權(quán)日:2011年1月25日
【發(fā)明者】許郡娟, 保羅·格倫迪寧 申請(qǐng)人:美光科技公司