TWI512625B - 程式化平行機及電腦實施方法、電腦可讀媒體、電腦及將原始程式碼轉換為機器碼以程式化一平行機之系統 - Google Patents

程式化平行機及電腦實施方法、電腦可讀媒體、電腦及將原始程式碼轉換為機器碼以程式化一平行機之系統 Download PDF

Info

Publication number
TWI512625B
TWI512625B TW101102989A TW101102989A TWI512625B TW I512625 B TWI512625 B TW I512625B TW 101102989 A TW101102989 A TW 101102989A TW 101102989 A TW101102989 A TW 101102989A TW I512625 B TWI512625 B TW I512625B
Authority
TW
Taiwan
Prior art keywords
state
automaton
states
comparison table
instance
Prior art date
Application number
TW101102989A
Other languages
English (en)
Other versions
TW201239765A (en
Inventor
Junjuan Xu
Paul Glendenning
Original Assignee
Micron Technology Inc
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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of TW201239765A publication Critical patent/TW201239765A/zh
Application granted granted Critical
Publication of TWI512625B publication Critical patent/TWI512625B/zh

Links

Classifications

    • 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/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/31Design entry, e.g. editors specifically adapted for circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/323Translation or migration, e.g. logic to logic, hardware description language [HDL] translation or netlist translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Devices For Executing Special Programs (AREA)
  • Logic Circuits (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)

Description

程式化平行機及電腦實施方法、電腦可讀媒體、電腦及將原始程式碼轉換為機器碼以程式化一平行機之系統
本專利申請案依據35 U.S.C.章節119(e)主張2011年1月25日申請之題為「STATE GROUPING FOR ELEMENT UTILIZATION,」之美國臨時專利申請案第61/436,075號的優先權之利益,該美國臨時專利申請案之全文以引用方式藉此併入本文中。
用於一平行機之編譯程式將原始程式碼轉換成用於組態(例如,程式化)該平行機之機器碼(例如,映像)。該機器碼可在該平行機上實施一有限狀態機。將原始程式碼轉換成機器碼之過程的一個階段包括形成一接線對照表。一接線對照表描述該平行機之硬體元件之例項之間的連接性。該接線對照表可描述該等硬體元件之間的連接,使得該等硬體元件實施該原始程式碼之功能性。
以下描述及圖式充分地說明使熟習此項技術者能夠實踐的特定實施例。其他實施例可併有結構、邏輯、電、過程及其他改變。一些實施例之部分及特徵可包括於其他實施例中或可替代其他實施例之部分及特徵。申請專利範圍中所陳述之實施例涵蓋彼等技術方案之所有可用等效物。
本文件尤其描述基於平行機之實體設計產生一接線對照表的編譯程式。在一實例中,該平行機之實體設計可包括該平行機之狀態機元件之間的連接性限制。舉例而言,該平行機中之狀態機元件可分組成共用一共同輸出之對。因 此,該編譯程式可基於一實體設計產生一接線對照表,在該實體設計中,SME對共用一共同輸出。
圖1說明實例平行機100。平行機100可接收輸入資料並基於該輸入資料提供一輸出。平行機100可包括用於接收輸入資料之資料輸入埠110及用於將輸出提供至另一器件的輸出埠114。資料輸入埠110提供用於將輸入至該平行機100之資料的介面。
平行機100包括複數個可程式化元件,包括通用元件102及特殊目的元件112。通用元件102可包括一或多個輸入104及一或多個輸出106。可將通用元件102程式化為複數個狀態中之一者。通用元件102之狀態判定該等通用元件102將基於給定輸入提供哪一(些)輸出。亦即,通用元件102之狀態判定可程式化元件將基於給定輸入如何起反應。輸入至資料輸入埠110之資料可提供至該複數個通用元件102以使該等通用元件102對其採取行動。通用元件102之實例可包括下文詳細論述之狀態機元件(SME)及一可組態邏輯區塊。在一實例中,SME可設定為一給定狀態以當在資料輸入埠110處接收到一給定輸入時提供某一輸出(例如,高或「1」信號)。當在資料輸入埠110處接收到不同於該給定輸入之一輸入時,該SME可提供一不同輸出(例如,低或「0」信號)。在一實例中,一可組態邏輯區塊可經設定以基於在資料輸入埠110處接收到之輸入來執行布林邏輯函數(例如,「及(AND)」、「或(OR)」、「或非(NOR)」等)。
平行機100亦可包括一程式設計介面111以將一程式(例如,映像)載入至平行機100上。該映像可程式化(例如,設定)通用元件102之狀態。亦即,該映像可組態通用元件102以按某一方式對給定輸入起反應。舉例而言,一通用元件102可經設定,以當在資料輸入埠110處接收到字元「a」時輸出一高信號。在一些實例中,平行機100可使用一時脈信號來控制通用元件102之操作的時序。在某些實例中,平行機100可包括用於與通用元件102互動及用於執行特殊目的功能之特殊目的元件112(例如,RAM、邏輯閘、計數器、查找表等)。在一些實施例中,在資料輸入埠110處接收到之資料可包括隨時間過去或一齊接收到之一組固定之資料或隨時間過去而接收到之資料串流。資料可自耦接至平行機100之任何來源接收或藉由耦接至平行機100之任何來源產生,該任何來源諸如資料庫、感測器、網路等。
平行機100亦包括用於將平行機100之不同元件(例如,通用元件102、資料輸入埠110、輸出埠114、程式設計介面111及特殊目的元件112)選擇性地耦接在一起的複數個可程式化開關108。因此,平行機100包含在該等元件間形成之可程式化矩陣。在一實例中,一可程式化開關108可將兩個或兩個以上元件選擇性地耦接至彼此,使得一通用元件102之輸入104、資料輸入埠110、程式設計介面111或特殊目的元件112可經由一或多個可程式化開關108而耦接至一通用元件102之輸出106、輸出埠114、程式設計介面 111或特殊目的元件112。因此,該等元件之間的信號之投送可藉由設定可程式化開關108來控制。儘管圖1說明一給定元件與一可程式化開關108之間的某一數目之導體(例如,電線),但應理解,在其他實例中,可使用不同數目之導體。而且,儘管圖1說明每一通用元件102個別地耦接至一可程式化開關108,但在其他實例中,多個通用元件102可作為一群組(例如,區塊802,如圖8中所說明)而耦接至一可程式化開關108。在一實例中,資料輸入埠110、資料輸出埠114及/或程式設計介面111可實施為暫存器,以使得至暫存器之寫入將資料提供至各別元件或自各別元件提供資料。
在一實例中,一單一平行機100實施於一實體器件上,然而,在其他實例中,兩個或兩個以上平行機100可實施於單一實體器件(例如,實體晶片)上。在一實例中,多個平行機100中之每一者可包括一不同之資料輸入埠110、一不同之輸出埠114、一不同之程式設計介面111,及一組不同之通用元件102。此外,每一組通用元件102可對其對應輸入資料埠110處之資料起反應(例如,輸出高或低信號)。舉例而言,對應於第一平行機100之第一組通用元件102可對對應於第一平行機100之第一資料輸入埠110處之資料起反應。對應於第二平行機100之第二組通用元件102可對對應於第二平行機100之第二資料輸入埠110起反應。因此,每一平行機100包括一組通用元件102,其中通用元件102之不同集合可對不同輸入資料起反應。類似地,每一平行 機100及每一組對應之通用元件102可提供一不同輸出。在一些實例中,來自第一平行機100之輸出埠114可耦接至第二平行機100之輸入埠110,使得用於第二平行機100之輸入資料可包括來自第一平行機100之輸出資料。
在一實例中,用於載入至平行機100上之映像包含用於在平行機100內設定通用元件102之狀態、程式化可程式化開關108及組態特殊目的元件112的複數個資訊位元。在一實例中,該映像可載入至平行機100上以程式化該平行機100以基於某些輸入而提供所要輸出。輸出埠114可基於通用元件102對資料輸入埠110處之資料所起之反應來提供來自平行機100之輸出。來自輸出埠114之輸出可包括指示一給定型樣之匹配的單一位元、包含指示與複數個型樣之匹配及不匹配之複數個位元的字,及對應於在給定時刻所有或某些通用元件102之狀態的狀態向量。
平行機100之實例用途包括型樣識別(例如,語音識別、影像識別等)、信號處理、成像、電腦視覺、密碼學及其他。在某些實例中,平行機100可包含一有限狀態機(FSM)引擎、一場可程式化閘陣列(FPGA)及其變體。此外,平行機100可為較大器件中之一組件,該較大器件諸如電腦、尋呼機、蜂巢式電話、個人行事曆、攜帶型音訊播放器、網路器件(例如,路由器、防火牆、交換機或其任何組合)、控制電路、攝影機等。
圖2至圖5說明實施為有限狀態機(FSM)引擎200之另一平行機。在一實例中,FSM引擎200包含有限狀態機之硬體 實施方案。因此,FSM引擎200實施對應於FSM中之複數個狀態的複數個可選擇性地耦接之硬體元件(例如,可程式化元件)。類似於FSM中之狀態,一硬體元件可分析一輸入串流且基於該輸入串流來啟動一下游硬體元件。
FSM引擎200包括複數個可程式化元件,包括通用元件及特殊目的元件。通用元件可經程式化以實施許多不同功能。此等通用元件包括SME 204、205(展示於圖5中),該等SME 204、205階層式組織成列206(展示於圖3及圖4中)及區塊202(展示於圖2及圖3中)。為了在經階層式組織之SME 204、205之間投送信號,使用可程式化開關之階層,該階層包括區塊間開關203(展示於圖2及圖3中)、區塊內開關208(展示於圖3及圖4中)及列內開關212(展示於圖4中)。SME 204、205可對應於藉由FSM引擎200實施的FSM之狀態。如下文所描述,可藉由使用可程式化開關將SME 204、205耦接在一起。因此,可藉由程式化SME 204、205以對應於狀態之功能及藉由將SME 204、205選擇性地耦接在一起以對應於FSM中之狀態之間的轉變來在FSM引擎200上實施FSM。
圖2說明實例FSM引擎200之全圖。FSM引擎200包括複數個區塊202,該等區塊可與可程式化區塊間開關203選擇性地耦接在一起。另外,區塊202可選擇性地耦接至用於接收信號(例如,資料)及將資料提供至區塊202的輸入區塊209(例如,資料輸入埠)。區塊202亦可選擇性地耦接至用於將來自區塊202之信號提供至外部器件(例如,另一FSM 引擎200)的輸出區塊213(例如,輸出埠)。FSM引擎200亦可包括用於將程式(例如,映像)載入至FSM引擎200上之程式設計介面211。該映像可程式化(例如,設定)SME 204、205之狀態。亦即,該映像可組態SME 204、205以按某一方式來對輸入區塊209處之給定輸入起反應。舉例而言,一SME 204可經設定,以當在輸入區塊209處接收到字元「a」時輸出一高信號。
在一實例中,輸入區塊209、輸出區塊213及/或程式設計介面211可實施為暫存器,以使得至暫存器之寫入將資料提供至各別元件或自各別元件提供資料。因此,來自儲存於對應於程式設計介面211之暫存器中的映像之位元可載入於SME 204、205上。儘管圖2說明區塊202、輸入區塊209、輸出區塊213及區塊間開關203之間的某一數目之導體(例如,電線、跡線),但應理解,在其他實例中,可使用更少或更多之導體。
圖3說明區塊202之實例。區塊202可包括複數個列206,該等列可與可程式化區塊內開關208選擇性地耦接在一起。另外,列206可藉由區塊間開關203而選擇性地耦接至另一區塊202內之另一列206。在一實例中,包括緩衝器201以控制去往/來自區塊間開關203之信號的時序。列206包括複數個SME 204、205,該複數個SME 204、205組織成本文中被稱作成對群組(group of two;GOT)210的元件對。在一實例中,區塊202包含十六(16)個列206。
圖4說明列206之實例。GOT 210可藉由可程式化列內開 關212而選擇性地耦接至其他GOT 210及列206內之任何其他元件224。GOT 210亦可藉由區塊內開關208而耦接至其他列206中之其他GOT 210,或藉由區塊間開關203而耦接至其他區塊202中之其他GOT 210。在一實例中,GOT 210具有第一輸入214及第二輸入216以及一輸出218。第一輸入214耦接至GOT 210之第一SME 204,且第二輸入214耦接至GOT 210之第二SME 204。
在一實例中,列206包括第一複數個列互連導體220及第二複數個列互連導體222。在一實例中,GOT 210之輸入214、216可耦接至一或多個列互連導體220、222,且輸出218可耦接至一個列互連導體220、222。在一實例中,第一複數個列互連導體220可耦接至列206內之每一GOT 210之每一SME 204。第二複數個列互連導體222可耦接至列206內之每一GOT 210之一SME 204,但不可耦接至GOT 210之另一SME 204。在一實例中,該第二複數個列互連導體222之前一半可耦接至一列206內之SME 204的前一半(來自每一GOT 210之一SME 204),且該第二複數個列互連導體222之後一半可耦接至一列206內之SME 204的後一半(來自每一GOT 210之另一SME 204)。該第二複數個列互連導體222與SME 204、205之間的有限連接性在本文中被稱作「對等性」。
在一實例中,列206亦可包括一特殊目的元件224,諸如計數器、可程式化布林邏輯元件、場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)、可程式化處理器(例 如,微處理器)及其他元件。另外,在一實例中,該特殊目的元件224在不同列206中為不同的。舉例而言,一區塊202中之列206中之四個可包括布林邏輯作為特殊目的元件224,且一區塊202中之其他八個列206可包括計數器作為特殊目的元件224。
在一實例中,特殊目的元件224包括一計數器(本文中亦被稱作計數器224)。在一實例中,計數器224包含一12位元可程式化遞減計數器。該12位元可程式化計數器224具有一計數輸入、一重設輸入,及零計數輸出。該計數輸入在被確證時使計數器224之值遞減一。該重設輸入在被確證時使計數器224載入來自相關聯之暫存器的初始值。對於該12位元計數器224,可載入高達12位元之數目作為初始值。當計數器224之值遞減至零(0)時,確證該零計數輸出。計數器224亦具有至少兩種模式,脈衝及保持。當將計數器224設定為脈衝模式時,在計數器224遞減至零時的第一時脈循環期間確證零計數輸出,且在接下來之時脈循環處,即使確證了計數輸入,仍不再確證零計數輸出。此狀態繼續,直至藉由重設輸入被確證而重設計數器224為止。當將計數器224設定為保持模式時,在計數器224遞減至零時之第一時脈循環期間確證零計數輸出,且在確證了計數輸入時保持為經確證的,直至藉由重設輸入被確證而重設計數器224為止。
圖5說明GOT 210之實例。GOT 210包括第一SME 204及第二SME 205,其具有輸入214、216且具有其耦接至OR閘 230及3比1多工器242之輸出226、228。該3比1多工器242可經設定以將GOT 210之輸出218耦接至第一SME 204、第二SME 205或OR閘230。可使用OR閘230將輸出226、228耦接在一起以形成GOT 210之共同輸出218。在一實例中,如上文所論述,第一SME 204及第二SME 205展現對等性,其中第一SME 204之輸入214可耦接至列互連導體222中之一些,且第二SME 205之輸入216可耦接至其他列互連導體222。在一實例中,可藉由設定開關240中之任一者或兩者來使GOT 210內之兩個SME 204、205級聯及/或迴圈回至其自身。可藉由將SME 204、205之輸出226、228耦接至另一SME 204、205之輸入214、216而使SME 204、205級聯。可藉由將輸出226、228耦接至其自身之輸入214、216而使SME 204、205迴圈回至其自身。因此,第一SME 204之輸出226可不耦接至第一SME 204之輸入214及第二SME 205之輸入216中之任一者,或可耦接至該等輸入中之一者或兩者。
在一實例中,一狀態機元件204、205包含與偵測線234並聯耦接之複數個記憶體胞232,諸如動態隨機存取記憶體(DRAM)中所常用之彼等記憶體胞。一種此類記憶體胞232包含可設定為一資料狀態之記憶體胞,該資料狀態諸如對應於高或低值(例如,1或0)之狀態。記憶體胞232之輸出耦接至偵測線234,且記憶體胞232之輸入基於資料串流線236上之資料而接收信號。在一實例中,解碼資料串流線236上之輸入以選擇該等記憶體胞232中之一者。選定之 記憶體胞232將其所儲存之資料狀態作為輸出提供至偵測線234上。舉例而言,在資料輸入埠209處接收到之資料可提供至一解碼器(未圖示),且該解碼器可選擇該等資料串流線236中之一者。在一實例中,該解碼器可將一ACSII字元轉換成256位元之1。
因此,當一記憶體胞232設定至高值且該資料串流線236上之資料對應於記憶體胞232時,該記憶體胞232輸出一高信號至偵測線234。當資料串流線236上之資料對應於記憶體胞232且記憶體胞232設定至低值時,記憶體胞232輸出一低信號至偵測線234。在偵測線234上的來自記憶體胞232之輸出藉由一偵測電路238來感測。在一實例中,一輸入線214、216上之信號將各別偵測電路238設定至一作用中或非作用中狀態。當設定至非作用中狀態時,偵測電路238在各別輸出226、228上輸出低信號,而不管各別偵測線234上之信號。當設定至作用中狀態時,當偵測到來自各別SME 204、205之記憶體胞234中之一者的高信號時,偵測電路238在各別輸出線226、228上輸出高信號。當在作用中狀態時,當來自各別SME 204、205之所有記憶體胞234的信號為低時,偵測電路238在各別輸出線226、228上輸出低信號。
在一實例中,SME 204、205包括256個記憶體胞232,且每一記憶體胞232耦接至一不同之資料串流線236。因此,SME 204、205可經程式化以當資料串流線236中之選定的一或多者上面具有高信號時輸出一高信號。舉例而 言,SME 204可使第一記憶體胞232(例如,位元0)設定為高且使所有其他記憶體胞232(例如,位元1-255)設定為低。當各別偵測電路238處於作用中狀態時,當對應於位元0之資料串流線236上面具有高信號時,SME 204在輸出226上輸出一高信號。在其他實例中,SME 204可經設定,以當藉由將適當之記憶體胞232設定至高值而使多個資料串流線236中之一者上面具有高信號時輸出一高信號。
在一實例中,可藉由自相關聯之暫存器讀取位元來將記憶體胞232設定至高值或低值。因此,可藉由將由編譯程式產生之映像儲存至暫存器中且將暫存器中之位元載入至相關聯之記憶體胞232中來程式化SME 204。在一實例中,由該編譯程式產生之映像包括高及低(例如,1及0)位元之二進位映像。該映像可藉由將SME 204、205級聯而程式化FSM引擎200以操作為FSM。舉例而言,可藉由將偵測電路238設定至作用中狀態而將第一SME 204設定至作用中狀態。第一SME 204可經設定,以當對應於位元0之資料串流線236上面具有高信號時輸出一高信號。第二SME 205最初可設定至非作用中狀態,但可經設定以在作用中時當對應於位元1之資料串流線236上面具有高信號時輸出一高信號。可藉由設定第一SME 204之輸出226以耦接至第二SME 205之輸入216來將第一SME 204與第二SME 205級聯。因此,當在對應於位元0之資料串流線236上感測到高信號時,第一SME 204在輸出226上輸出一高信號且將第二SME 205之偵測電路238設定至作用中狀態。當在對應於位元1 之資料串流線236上感測到高信號時,第二SME 205在輸出228上輸出一高信號以啟動另一SME 205或用於來自FSM引擎200之輸出。
圖6說明供編譯程式用以將原始程式碼轉換成經組態以程式化平行機之映像的方法600之實例。方法600包括:將該原始程式碼剖析成一語法樹(區塊602);將該語法樹轉換成一自動機(區塊604);最佳化該自動機(區塊606);將該自動機轉換成一接線對照表(區塊608);將該接線對照表置放於硬體上(區塊610);對該接線對照表進行路徑選擇(區塊612);及發佈所得映像(區塊614)。
在一實例中,該編譯程式包括一應用程式設計介面(API),該API允許軟體開發者產生用於在FSM引擎600上實施FSM之映像。該編譯程式提供用以將該原始程式碼中之一組輸入之正規表達式轉換成經組態以程式化FSM引擎600之映像的方法。該編譯程式可藉由用於具有馮諾依曼架構之電腦之指令來實施。此等指令可使該電腦上之處理器實施該編譯程式之功能。舉例而言,該等指令在藉由該處理器執行時可使該處理器對可由該處理器存取之原始程式碼執行如區塊602、604、606、608、610、612及614中所描述之動作。具有馮諾依曼架構之實例電腦展示於圖9中且在下文描述。
在一實例中,原始程式碼描述用於識別一群符號內之符號的型樣之搜尋字串。為了描述該等搜尋字串,該原始程式碼可包括複數個正規表達式(regex)。正規表達式可為用 於描述符號搜尋型樣之字串。正規表達式廣泛用在各種電腦領域中,諸如程式設計語言、文字編輯器、網路安全及其他領域。在一實例中,由編譯程式支援之正規表達式包括用於無結構資料之搜尋的搜尋準則。無結構資料可包括以下資料,其為自由形式的且無索引施加於資料內之字。字可包括資料內之任何位元組組合,可列印及不可列印的。在一實例中,編譯程式可支援用於實施正規表達式之多種不同的原始程式碼語言,包括Perl(例如,Perl相容正規表達式(PCRE))、PHP、Java及.NET語言。
返回參看圖6,在區塊602處,編譯程式可剖析原始程式碼以形成有關係連接之運算子的配置,其中不同類型之運算子對應於藉由原始程式碼實施之不同功能(例如,藉由原始程式碼中之正規表達式實施的不同功能)。剖析原始程式碼可產生該原始程式碼之一般表示。在一實例中,該一般表示包含該原始程式碼中的呈被稱為語法樹之樹形圖形式的正規表達式之經編碼表示。本文中所描述之實例將該配置稱為語法樹(亦被稱為「抽象語法樹」)。然而,在其他實例中,可使用具體語法樹或其他配置。
由於如上文所提及,編譯程式可支援多種語言之原始程式碼,因此,不管是何種語言,剖析將該原始程式碼轉換成非語言特定表示,例如語法樹。因此,藉由編譯程式進行之其他處理(區塊604、606、608、610)可自一共同輸入結構來起作用,而不管原始程式碼之語言。
如上所述,該語法樹包括有關係連接之複數個運算子。 語法樹可包括多種不同類型之運算子。亦即,不同運算子可對應於藉由原始程式碼中之正規表達式實施的不同功能。
在區塊604處,將該語法樹轉換成自動機。自動機(亦被稱作有限狀態自動機、有限狀態機(FSM)或簡稱為狀態機)為狀態、狀態之間的轉變及動作的表示,且可分為確定性或非確定性的。確定性自動機在給定時間具有單一執行路徑,而非確定性自動機具有多個同時之執行路徑。該自動機包含複數個狀態。為了將語法樹轉換成自動機,將語法樹中之運算子及運算子之間的關係轉換成狀態及狀態之間的轉變。在一實例中,可部分基於FSM引擎200之硬體來轉換該自動機。
在一實例中,用於自動機之輸入符號包括字母、數字0-9及其他可列印字元之符號。在一實例中,該等輸入符號藉由位元組值0至255(包括在內)來表示。在一實例中,一自動機可表示為有向圖,其中該圖之節點對應於狀態集合。在一實例中,在輸入符號α時自狀態p 至狀態q 之轉變(亦即,δ (p ,α ))藉由自節點p 至節點q 之有向連接展示。在一實例中,被一自動機接受(例如,匹配)之語言為在按順序地輸入至該自動機中時將達到最終狀態的所有可能字元字串之集合。被該自動機接受之語言中的每一字串沿自開始狀態至一或多個最終狀態之路徑而行。
在一實例中,在該自動機中可使用輸入符號範圍外之特殊轉變符號。此等特殊轉變符號可用以(例如)使得能夠使 用特殊目的元件224。此外,特殊轉變符號可用以提供在不同於輸入符號之其他者上發生的轉變。舉例而言,一特殊轉變符號可指示當啟用第二狀態及第三狀態時將啟用(例如,轉變至)第一狀態。因此,當啟動第二狀態及第三狀態時啟動第一狀態,且至該第一狀態之轉變並非直接取決於輸入符號。顯著地,指示在啟用第二狀態及第三狀態時將啟用第一狀態的特殊轉變符號可用以將(例如)藉由布林邏輯執行之布林AND函數表示為特殊目的元件224。在一實例中,可使用一特殊轉變符號來指示一計數器狀態已達到零,且因此轉變至一下游狀態。
在一實例中,該自動機包含通用狀態以及特殊目的狀態。該等通用狀態及特殊目的狀態對應於藉由一目標器件支援之通用元件及特殊目的元件,編譯程式為該目標器件產生機器碼。不同類型之目標器件可支援不同類型之通用元件以及一或多種不同類型之特殊目的元件。通用元件通常可用以實施廣泛範圍之功能,而特殊目的元件通常可用以實施更窄範圍之功能。然而,在一實例中,一特殊目的元件可在其窄範圍之功能內達成(例如)較大效率。因此,一特殊目的元件可用以(例如)減少在目標器件中實施某些功能所需的機器循環或機器資源。在一些實例中,該目標器件僅支援特殊目的元件,其中支援多種不同類型之特殊目的元件。
在編譯程式產生用於FSM引擎200之機器碼的實例中,通用狀態可對應於SME 204、205,且通用狀態因此在本文 中被稱作「SME狀態」。此外,當編譯程式產生用於FSM引擎200之機器碼時,特殊目的狀態之一實例可對應於計數器224且因此在本文中被稱作「計數器狀態」。特殊目的狀態之另一實例可對應於一邏輯元件(例如,可程式化邏輯、布林邏輯)且因此在本文中被稱作「邏輯狀態」。在一實例中,自動機中之SME狀態1:1映射至FSM引擎200中之SME(例如,SME 204、205),不映射至SME的自動機之開始狀態除外。特殊目的元件224可或可不1:1映射至特殊目的狀態。
在一實例中,可使用諸如Glushkov之方法的標準技術中之一者來建構一自動機。在一實例中,該自動機可為無ε之均齊自動機(homogeneous automaton)。一均齊自動機為對一般自動機定義之限制。該限制要求進入一狀態之所有轉變必須發生在同一(些)輸入符號上。均齊自動機滿足以下條件:對於任何兩個狀態,q1 及q2 ,若rδ(q1 )∩δ(q2 ),則表示S1 ={a | aΣ,rδ(q1 ,a)}、S2 ={a | aΣ,rδ(q2 ,a)}。S1 為允許q1 轉變至r之符號的集合;且S2 為允許q2 轉變至r之符號的集合。在此,S1 =S2 ,亦即,若狀態q1 及狀態q2 均轉變至狀態r,則均齊限制為轉變必須發生在同一(些)符號上。
圖7A及圖7B說明自語法樹產生之實例自動機。圖7A說明均齊自動機700,且圖7B說明非均齊自動機702。
均齊自動機700在開始狀態704處開始,開始狀態704在輸入符號「a」時轉變至狀態706。在輸入符號「b」時狀 態706轉變至狀態708,且在輸入符號「b」時,狀態708轉變至狀態710。在輸入符號「c」時,狀態710轉變至狀態712。狀態712在輸入符號「b」時轉變至狀態710,且在輸入符號「d」時轉變至狀態714。狀態714為最終狀態且藉由雙圓來識別為最終狀態。在一實例中,最終狀態可為重要的,因為最終狀態之啟動指示對應於該自動機之正規表達式的匹配。自動機700為均齊自動機,因為一給定狀態之所有內轉變(例如,至狀態之轉變)發生在同一(些)符號上。顯著地,狀態710具有兩個內轉變(自狀態708及狀態712),且該兩個內轉變均發生在同一符號「b」上。
非均齊自動機702包括與均齊自動機700相同之狀態704、706、708、710、712及714,然而,狀態712在輸入符號「e」時轉變至狀態710。因此,自動機702為非均齊的,因為狀態710在兩個不同符號時具有內轉變;符號「b」時自狀態708且符號「e」時自狀態712。
在區塊606處,在建構了自動機之後,最佳化該自動機以尤其減少其複雜性及大小。可藉由組合冗餘狀態來最佳化該自動機。
在區塊608處,將該自動機轉換成一接線對照表。將該自動機轉換成一接線對照表將該自動機之狀態映射至FSM引擎200之一硬體元件(例如,SME 204、205、GOT 210、特殊目的元件224)的例項,且判定該等例項之間的連接。在一實例中,該接線對照表包含複數個例項,每一例項對應於(例如,表示)FSM引擎200之一硬體元件。每一例項可 具有用於連接至另一例項之一或多個連接點(本文中亦被稱作「埠」)。該接線對照表亦包含該等例項之埠之間的複數個連接,該複數個連接對應於(例如,表示)用以耦接對應於該等例項之硬體元件的導體。在一實例中,該接線對照表包含對應於不同類型之硬體元件的不同類型之例項。舉例而言,該接線對照表可包括對應於通用硬體元件之通用例項及對應於特殊目的硬體元件之特殊目的例項。作為一實例,通用狀態可轉換成通用例項,且特殊目的狀態可轉換成特殊目的例項。在一實例中,該等通用例項可包括用於一SME 204、205之一SME例項及用於包含一群SME之硬體元件的一SME群組例項。在一實例中,該SME群組例項包括對應於GOT 210之GOT例項;然而,在其他實例中,該SME群組例項可對應於包含一群三個或三個以上SME之硬體元件。特殊目的例項可包括用於計數器224之計數器例項及用於邏輯元件224之邏輯例項。由於一GOT 210包括兩個SME 204、205,因此一GOT例項含有兩個SME例項。
為產生接線對照表,將自動機中之狀態轉換成接線對照表中之例項,除了開始狀態不具有對應例項之外。將SME狀態轉換成GOT例項,且將計數器狀態轉換成計數器例項。另外,針對自對應於第一例項之狀態至對應於第二例項之狀態的轉變產生自第一例項至第二例項之對應連接。由於FSM引擎200中之SME 204、205分組至被稱作GOT 210之對中,因此編譯程式可將SME狀態分組至GOT例項 中之對中。歸因於GOT 210之實體設計,並非所有SME例項可一起成對以形成GOT 210。因此,編譯程式判定可將哪些SME狀態一起映射在GOT 210中,且接著基於該判定將SME狀態成對至GOT例項中。
如圖5中所示,一GOT 210具有對SME 204、205之輸出限制。詳言之,GOT 210具有由兩個SME 204、205共用之單一輸出218。因此,一GOT 210中之每一SME 204、205不可獨立地驅動輸出218。此輸出限制限制了在一GOT例項中哪些SME狀態可一起成對。顯著地,驅動(例如,轉變至、啟動)外部SME狀態(例如,對應於GOT例項外之SME的SME狀態)之不同集合的兩個SME狀態在一GOT例項中不可一起成對。然而,此限制不限制該兩個SME狀態是否驅動彼此或自迴圈,因為一GOT 210可在內部藉由開關240提供此功能性。儘管將FSM引擎200描述為具有對應於SME 204、205之某一實體設計,但在其他實例中,SME 204、205可具有其他實體設計。舉例而言,SME 204、205可一起分組到SME 204、205之三個或三個以上集合中。另外,在一些實例中,可存在對至SME 204、205之輸入214、216的限制,對來自SME 204、205之輸出226、228可具有或不具有限制。
然而,在任一種情況下,編譯程式基於FSM引擎200之實體設計來判定哪些SME狀態可一起分組。因此,對於GOT例項,編譯程式基於GOT 210中之SME 204、205之輸出限制來判定哪些SME狀態可一起成對。在一實例中,存 在五種情形,其中兩個SME狀態可基於GOT 210之實體設計而一起成對以形成GOT 210。
在第一SME狀態及第二SME狀態可在GOT 210中一起成對時的第一種情形出現在第一SME狀態或第二SME狀態皆非最終狀態時,及出現在第一SME狀態及第二SME狀態中之一者不驅動不同於第一SME狀態或第二SME狀態之任何狀態時。作為一實例,當第一狀態轉變至第二狀態時,認為該第一狀態驅動該第二狀態。當此第一種情形出現時,至多第一SME狀態及第二SME狀態中之一者驅動一(些)外部狀態。因此,第一SME狀態及第二SME狀態可一起成對,而不受GOT 210之輸出限制影響。然而,歸因於GOT 210在內部將SME 204、205耦接至彼此的能力,允許第一SME狀態及第二SME狀態驅動彼此及自迴圈以驅動自身。在自動機項中,當q1 或q2 皆非最終狀態,且δ(q1 )-{q1 ,q2 }為空時,或當δ(q2 )-{q1 ,q2 }為空時,第一SME狀態(對應於狀態q1 )及第二SME狀態(對應於狀態q2 )可一起成對。
在第一SME狀態及第二SME狀態可在GOT 210中一起成對時的第二種情形出現在第一或第二SME狀態皆非自動機中之最終狀態時,及出現在第一SME狀態及第二SME狀態驅動相同之外部狀態時。如本文中所使用,外部狀態對應於GOT例項外部之狀態,例如,不管GOT例項中之第一SME狀態及第二SME狀態是否驅動彼此或自迴圈。再次,GOT 210之輸出限制不影響第一SME狀態及第二SME狀 態,因為第一SME狀態及第二SME狀態驅動相同之外部狀態。而且,歸因於GOT 210在內部將SME 204、205耦接至彼此的能力,對驅動相同狀態之限制不包括第一狀態及第二狀態是否驅動彼此或自迴圈。使用自動機項,當q1 或q2 皆非最終狀態,且δ(q1 )-{q1 ,q2 }=δ(q2 )-{q1 ,q2 }時,第一SME狀態(對應於狀態q1 )及第二SME狀態(對應於狀態q2 )可一起成對。
第一SME狀態及第二SME狀態可在GOT 210中一起成對的第三及第四種情形出現在第一SME狀態及第二SME狀態中之一者為最終狀態且第一SME狀態及第二SME狀態中之另一者並不驅動任一外部狀態時。亦即,當q1 為最終狀態且δ(q2 )-{q1 ,q2 }為空時,或當q2 對應於最終狀態且δ(q1 )-{q1 ,q2 }為空時,第一SME狀態(對應於狀態q1 )及第二SME狀態(對應於狀態q2 )可一起成對。由於最終狀態輸出與正規表達式匹配之指示,因此對應於最終狀態之SME狀態應能夠獨立使用GOT 210之輸出218以便指示該匹配。因此,不允許GOT 210中之另一SME狀態使用輸出218。
在第一SME狀態及第二SME狀態可在GOT 210中一起成對時的第五種情形出現在第一SME狀態及第二SME狀態均對應於一自動機中之最終狀態且第一SME狀態及第二SME狀態均驅動相同之外部狀態時。使用自動機項,當q1 及q2 均為最終狀態,且δ(q1 )-{q1 ,q2 }=δ(q2 )-{q1 ,q2 }時,第一狀態(對應於狀態q1 )及第二SME狀態(對應於狀態q2 )可一起成對。
一旦編譯程式判定一或多個SME狀態是否可一起成對,編譯程式便將該等SME狀態成對為GOT例項。在一實例中,編譯程式按SME狀態被判定為能夠成對以形成GOT例項的次序來將SME狀態成對為GOT例項。亦即,一旦兩個特定SME狀態被判定為能夠一起成對,此兩個SME狀態便可成對為一GOT例項。一旦兩個SME狀態已成對以形成GOT例項,此等成對之SME狀態不可用於與其他SME狀態成對。此過程可繼續,直至不再有任何SME狀態留待成對為止。
在一實例中,編譯程式使用圖論來判定哪些SME一起成對為GOT例項。由於僅某些SME可一起成對,因此一些SME成對可導致其他SME必須在其自身之GOT例項中實施,以致GOT例項中之其他SME位置未用且因此被浪費。可使用圖論來藉由減少接線對照表之GOT例項中之未用SME例項的數目來最佳化GOT 210中之SME利用(例如,減少未用SME之數目)。為了使用圖論,編譯程式首先根據上文所論述之FSM引擎200之實體設計來判定SME狀態之間的所有可能成對。編譯程式接著產生一圖,其中該圖之頂點對應於SME狀態,且該圖之邊對應於SME狀態之可能成對。亦即,若判定兩個SME狀態能夠在一GOT例項中一起成對,則用一條邊連接兩個對應之頂點。因此,該圖含有SME狀態之所有可能成對。
編譯程式可接著找出該圖之匹配頂點以識別哪些SME狀態在一GOT 210中一起成對。亦即,編譯程式識別邊(且因 此識別頂點對),使得該圖之匹配頂點之間的兩條邊不會共用一個共同頂點。在一實例中,編譯程式可找出該圖之最大匹配。在另一實例中,編譯程式可找出該圖之最大匹配。最大匹配為含有最大之可能數目的邊的匹配。可存在許多最大匹配。可以多項式時間來解決找出一般圖之最大匹配的問題。
一旦已識別了所有匹配頂點(例如,作為最大匹配),則將對應於匹配頂點之每一對SME狀態映射至一GOT例項。將對應於未匹配頂點之SME狀態映射至其自身之GOT例項。亦即,將對應於未匹配頂點之SME狀態映射至GOT例項中之SME位置中之一者中,且GOT例項中之其他SME位置未用。因此,給定接線對照表N及其匹配頂點M之對應集合,所使用之N的GOT例項之數目等於|Q|-1-|M|,其中Q為自動機之狀態集合,且「-1」係因為在此實例中自動機之開始狀態並不對應於SME狀態。
在一實例中,接線對照表N係使用最少數目之GOT例項由G之最大匹配M來建構。此可藉由以下事例證明:若存在使用更少數目之GOT例項的另一接線對照表N',則將該對應匹配表示為M'。由於N'之GOT例項之數目等於|Q|-1-|M'|,因此吾人得到|M|<|M'|。此與M為最大匹配之事實衝突。因此,接線對照表N使用最少數目之GOT例項。
一旦SME狀態成對為GOT例項,便根據自動機中之狀態之間的轉變來連接GOT例項、計數器例項及邏輯例項。由於每一GOT 210具有單一輸出,因此接線對照表中之每一 GOT例項具有單一輸出埠以供連接至其他例項。因此,若第一GOT例項中之任一SME狀態驅動第二GOT例項中之一SME狀態,則第一GOT例項之輸出埠耦接至第二GOT例項之輸入。
圖8A及圖8B說明自圖7A之均齊自動機700產生之實例接線對照表800、802。SME例項806、808、810、812及814對應於自動機700中之狀態706、708、710、712及714。如上文所論述,該自動機之開始狀態704不對應於一例項。
接線對照表800為非最佳接線對照表之一實例。接線對照表800使用四個GOT例項816,同時留下三個SME例項818未用。然而,接線對照表802為使用圖論識別最大匹配而產生之最佳接線對照表的實例。接線對照表802使用三個GOT例項816且具有單一未用SME例項818。在接線對照表802中,可藉由GOT例項內部之連接(例如,經由開關240)將例項810連接至例項812。
在區塊610處,一旦已產生接線對照表,便置放該接線對照表以針對該接線對照表之每一例項選擇該目標器件之一特定硬體元件(例如,SME 204、205、其他元件224)。根據本發明之一實施例,置放基於針對硬體元件之一般輸入及輸出約束來選擇硬體元件。
在區塊612處,對經全域置放之接線對照表進行路徑選擇以判定可程式化開關(例如,區塊間開關203、區塊內開關208及列內開關212)之設定以便將選定硬體元件耦接在一起以達成接線對照表所描述之連接。在一實例中,該等 可程式化開關之設定藉由判定FSM引擎200之將用以連接選定之硬體元件的特定導體及該等可程式化開關之設定來判定。路徑選擇可調整在置放期間針對接線對照表例項中之一些選擇的特定硬體元件,諸如以便耦接硬體元件,給定FSM引擎200上之導體及/或開關的實體設計。
一旦對接線對照表進行置放及路徑選擇,便可將所置放及經路徑選擇之接線對照表轉換成用於程式化FSM引擎200之複數個位元。該複數個位元在本文中被稱作映像。
在區塊614處,藉由編譯程式發佈一映像。該映像包含用於程式化FSM引擎200之特定硬體元件及/或可程式化開關的複數個位元。在該映像包含複數個位元(例如,0及1)之實施例中,該映像可被稱作二進位映像。該等位元可載入至FSM引擎200上以程式化SME 204、205、特殊目的元件224及可程式化開關之狀態,以使得經程式化之FSM引擎200實施具有藉由原始程式碼描述之功能性的FSM。置放(區塊610)及路徑選擇(區塊612)可將在FSM引擎200中之特定位置處的特定硬體元件映射至自動機中之特定狀態。因此,該映像中之位元可程式化該等特定硬體元件及/或可程式化開關以實施所要功能。在一實例中,可藉由將機器碼儲存至電腦可讀媒體來發佈該映像。在另一實例中,可藉由在顯示器件上顯示該映像來發佈映像。在又一實例中,可藉由將該映像發送至另一器件(諸如,用於將該映像載入至FSM引擎200上之程式設計器件)來發佈映像。在再一實例中,可藉由將該映像載入至平行機(例如,FSM 引擎200)上來發佈映像。
在一實例中,可藉由將來自映像之位元值直接載入至SME 204、205及其他硬體元件224或藉由將映像載入至一或多個暫存器中且接著將來自暫存器之位元值寫入至SME 204、205及其他硬體元件224來將映像載入至FSM引擎200上。在一實例中,可程式化開關(例如,區塊間開關203、區塊內開關208及列內開關212)之狀態。在一實例中,FSM引擎200之硬體元件(例如,SME 204、205、其他元件224、可程式化開關203、208、212)經記憶體映射,以使得一程式設計器件及/或電腦可藉由將映像寫入至一或多個記憶體位址而將映像載入至FSM引擎200上。
本文中所描述之方法實例可至少部分為機器或電腦實施的。一些實例可包括編碼有指令之電腦可讀媒體或機器可讀媒體,該等指令可操作以組態一電子器件以執行如上述實例中所描述之方法。此等方法之一實施方案可包括程式碼,諸如微碼、組合語言程式碼、高級語言程式碼或其類似者。此類程式碼可包括用於執行各種方法之電腦可讀指令。程式碼可形成電腦程式產品之部分。另外,程式碼在執行期間或在其他時間時可有形地儲存於一或多個揮發性或非揮發性電腦可讀媒體上。此等電腦可讀媒體可包括(但不限於)硬碟、可抽取式磁碟、可抽取式光碟(例如,壓縮光碟及數位影音光碟)、磁帶盒、記憶體卡或記憶體棒、隨機存取記憶體(RAM)、唯讀記憶體(ROM)及其類似者。
圖9大體上說明具有馮諾依曼架構之電腦900的實例。在閱讀及理解了本發明之內容之後,一般熟習此項技術者將理解,在一基於電腦之系統中可自電腦可讀媒體載入軟體程式以使之執行以軟體程式定義之功能的方式。一般熟習此項技術者將進一步理解,可使用各種程式設計語言來產生經設計以實施並執行本文所揭示之方法的一或多個軟體程式。可使用物件導向語言(諸如,Java、C++或一或多種其他語言)以物件導向格式來結構化該等程式。或者,可使用程序語言(諸如,組合語言、C等)以程序導向格式來結構化該等程式。軟體組件可使用一般熟習此項技術者所熟知的許多方案中之任一者來通信,諸如應用程式設計介面或過程間通信技術,包括遠端程序呼叫或其他。各個實施例之教示不限於任何特定程式設計語言或環境。
因此,可實現其他實施例。舉例而言,一製造物件(諸如,電腦、記憶體系統、磁碟或光碟、某其他儲存器件,或任何類型之電子器件或系統)可包括一或多個處理器902,該一或多個處理器902耦接至上面儲存有指令924(例如,電腦程式指令)之一電腦可讀媒體922,諸如一記憶體(例如,可抽取式儲存媒體,以及包括電、光或電磁導體之任何記憶體),該等指令在藉由該一或多個處理器902執行時導致執行相對於上述方法所描述之動作中之任一者。
電腦900可採取具有處理器902之電腦系統的形式,該處理器908直接及/或使用匯流排908來耦接至許多組件。此等組件可包括主記憶體904、靜態或非揮發性記憶體906及 大容量儲存器件916。耦接至處理器902之其他組件可包括輸出器件910(諸如,視訊顯示器)、輸入器件912(諸如,鍵盤)及游標控制器件914(例如,滑鼠)。用以將處理器902及其他組件耦接至網路926之網路介面器件920亦可耦接至匯流排908。指令924可利用許多熟知之傳送協定(例如,HTTP)中之任一者經由網路介面器件920跨越網路926來進一步傳輸或接收。耦接至匯流排908之此等元件中之任一者可不存在,單獨地存在,或以複數形式存在,此取決於待實現之特定實施例。
在一實例中,處理器902、記憶體904、906或儲存器件916中之一或多者可各自包括指令924,該等指令924在執行時可使電腦900執行本文所描述之方法中之任何一或多者。在替代實施例中,電腦900操作為單獨器件或可連接(例如,網路連接)至其他器件。在網路環境中,電腦900可以伺服器-用戶端網路環境中之伺服器或用戶端器件之能力來操作,或操作為對等(或分散式)網路環境中之對等器件。電腦900可包括個人電腦(PC)、平板PC、機上盒(STB)、個人數位助理(PDA)、蜂巢式電話、web器具、網路路由器、交換機或橋接器,或能夠執行一組指令(順序的或其他)的任何器件,該組指令指定將由該器件採取之行動。另外,雖然僅說明了單一電腦900,但術語「電腦」亦應被視為包括個別地或共同地執行一組(或多組)指令以執行本文中所論述之方法中之任何一或多者的器件之任何集合。
電腦900亦可包括用於使用一或多個通信協定(例如,通用串列匯流排(USB)、IEEE 1394等)與周邊器件通信的輸出控制器928。輸出控制器928可(例如)將一映像提供至通信地耦接至電腦900之程式設計器件930。程式設計器件930可經組態以程式化一平行機(例如,平行機100、FSM引擎200)。在其他實例中,程式設計器件930可與電腦900整合且耦接至匯流排908或可經由網路介面器件920或另一器件與電腦900通信。
雖然電腦可讀媒體924展示為單一媒體,但術語「電腦可讀媒體」應被視為包括儲存該一或多組指令924的單一媒體或多個媒體(例如,集中式或分散式資料庫,或相關聯之快取記憶體及伺服器,及或各種儲存媒體,諸如處理器902暫存器、記憶體904、906及儲存器件916)。術語「電腦可讀媒體」亦應被視為包括以下任何媒體,其能夠儲存、編碼或載運供電腦執行之一組指令且使該電腦執行本發明之方法中之任何一或多者,或能夠儲存、編碼或載運供此組指令利用或與此組指令相關聯的資料結構。術語「電腦可讀媒體」因此應被視為包括(但不限於)有形媒體,諸如固態記憶體、光媒體及磁性媒體。
提供摘要以遵照需要摘要的37 C.F.R.章節1.72(b),此將允許讀者確定技術揭示內容之性質及要旨。在理解到摘要將不用以限制或解釋申請專利範圍之範疇或涵義的情況下提交摘要。以下申請專利範圍藉此併入詳細描述中,其中每一請求項依賴於其自身而作為一單獨實施例。
實例實施例
實例1包括一種電腦實施方法,其用於自原始程式碼產生經組態以程式化一平行機之一映像。該方法包括:將原始程式碼轉換成包含複數個互連狀態之一自動機;將該自動機轉換成一接線對照表,該接線對照表包含對應於該自動機之狀態的例項,其中該等例項對應於該平行機之硬體元件,其中將該自動機轉換成一接線對照表包括基於該平行機之一實體設計來對狀態一起分組;及將該接線對照表轉換成該映像。
實例2包括一種電腦可讀媒體,其包括指令,該等指令在由該電腦執行時使該電腦執行操作。該等操作包括:將原始程式碼轉換成包含複數個互連狀態之一自動機;將該自動機轉換成一接線對照表,該接線對照表包含對應於該自動機之狀態的例項,其中該等例項對應於該平行機之硬體元件,其中將該自動機轉換成一接線對照表包括基於該平行機之一實體設計來對狀態一起分組;及將該接線對照表轉換成該映像。
實例3包括一種電腦,其包括:一記憶體,其上面儲存有軟體;及一處理器,其通信地耦接至該記憶體。其中該軟體在由該處理器執行時使該處理器:將原始程式碼轉換成包含複數個互連狀態之一自動機;將該自動機轉換成一接線對照表,該接線對照表包含對應於該自動機之狀態的例項,其中該等例項對應於該平行機之硬體元件,其中該等例項包括複數個第一例項及含有兩個或兩個以上第一例 項之一群組例項,其中將該自動機轉換成一接線對照表包括基於許多未用之第一例項來將狀態一起分組在一群組例項中;及將該接線對照表轉換成該映像。
實例4包括一種系統,其包括一電腦,該電腦經組態以:將原始程式碼轉換成包含複數個互連狀態之一自動機;將該自動機轉換成一接線對照表,該接線對照表包含對應於該自動機之狀態的例項,其中該等例項對應於該平行機之硬體元件,其中該等例項包括複數個第一例項及含有兩個或兩個以上第一例項之一群組例項,其中將該自動機轉換成一接線對照表包括基於許多未用之第一例項來將狀態一起分組在一群組例項中;及將該接線對照表轉換成該映像。該系統亦包括經組態以將該映像載入至一平行機上的一器件。
在實例5中,實例1至4中任一者之標的可視情況地包括,其中該等例項包括對應於一狀態機元件(SME)硬體元件之一SME例項及對應於包含一群SME之一硬體元件的一SME群組例項,且其中分組包括將狀態分組至一SME群組例項中。
在實例6中,實例1至5中任一者之標的可視情況地包括,其中該實體設計包括包含一群SME之該硬體元件的一實體設計。
在實例7中,實例1至6中任一者之標的可視情況地包括,其中該實體設計包括對包含一群SME之該硬體元件中之該等SME的一輸入或輸出限制中之一者。
在實例8中,實例1至7中任一者之標的可視情況地包括,其中該實體設計包括包含一群SME之該硬體元件中之該等SME共用一輸出的一限制。
在實例9中,實例1至8中任一者之標的可視情況地包括,其中一SME群組例項包括一含有兩個SME例項之成對群組(GOT)例項,且其中該實體設計包括每一GOT中之該等SME耦接至一共同輸出。
在實例10中,實例1至9中任一者之標的可視情況地包括,其中將該自動機轉換成一接線對照表包含:判定該等狀態中之哪些可一起分組在一GOT例項中;及基於該判定來使該等狀態成對。
在實例11中,實例1至10中任一者之標的可視情況地包括,其中當一第一狀態或一第二狀態皆非該自動機之一最終狀態,且該第一狀態及該第二狀態中之一者不驅動不同於該第一狀態或該第二狀態之任何狀態時,該第一狀態及該第二狀態可在一GOT例項中一起成對。
在實例12中,實例1至11中任一者之標的可視情況地包括,其中當一第一狀態或一第二狀態皆非該自動機之一最終狀態,且該第一狀態及該第二狀態均驅動相同之外部狀態時,該第一狀態及該第二狀態可在一GOT例項中一起成對。
在實例13中,實例1至12中任一者之標的可視情況地包括,其中當一第一狀態及一第二狀態中之一者為該自動機之一最終狀態,且該第一狀態及該第二狀態中之另一者不 驅動任何外部狀態時,該第一狀態及該第二狀態可在一GOT例項中一起成對。
在實例14中,實例1至13中任一者之標的可視情況地包括,其中當一第一狀態及一第二狀態均為該自動機之最終狀態,且該第一狀態及該第二狀態均驅動相同之外部狀態時,該第一狀態及該第二狀態可在一GOT例項中一起成對。
在實例15中,實例1至14中任一者之標的可視情況地包括,其中判定該等狀態中之哪些可一起分組在一GOT例項中包含使用圖論來判定該等狀態中之哪些可一起分組在一GOT例項中。
在實例16中,實例1至15中任一者之標的可視情況地包括,其中使用圖論來判定該等狀態中之哪些可一起分組在一GOT例項中包含使用圖論識別一最大匹配來判定該等狀態中之哪些可一起分組在一GOT例項中。
在實例17中,實例1至16中任一者之標的可視情況地包括發佈該映像。
在實例18中,實例1至17中任一者之標的可視情況地包括,其中該等例項包含通用例項及特殊目的例項,其中該等通用例項對應於該自動機之通用狀態,且該等特殊目的例項對應於該自動機之特殊目的狀態。
在實例19中,實例1至18中任一者之標的可視情況地包括,其中對應於該等通用例項之該等硬體元件包括一狀態機元件(SME)及一成對群組(GOT),且其中對應於該等特 殊目的例項之該等硬體元件包括計數器及邏輯元件。
在實例20中,實例1至19中任一者之標的可視情況地包括,其中該自動機為一均齊自動機。
在實例21中,實例1至20中任一者之標的可視情況地包括,其中將該自動機轉換成一接線對照表包含將該自動機之該等狀態中之每一者映射至對應於該等硬體元件之一例項及判定該等例項之間的連接性。
在實例22中,實例1至21中任一者之標的可視情況地包括,其中該接線對照表進一步包含表示該等硬體元件之間的導體的該等例項之間的複數個連接。
在實例23中,實例1至22中任一者之標的可視情況地包括,其中將該自動機轉換成一接線對照表包含將該自動機轉換成包含例項之一接線對照表,該等例項對應於該自動機的除了一開始狀態之外的狀態。
在實例24中,實例1至23中任一者之標的可視情況地包括判定對應於該接線對照表之例項的該等硬體元件在該平行機中的位置。
在實例25中,實例1至24中任一者之標的可視情況地包括,其中對狀態一起分組包括基於包含一群通用元件之一硬體元件的一實體設計來對狀態一起分組。
在實例26中,實例1至25中任一者之標的可視情況地包括判定將使用該平行機之哪些導體來連接該等硬體元件;及判定該平行機之可程式化開關的設定,其中該等可程式化開關經組態以選擇性地將該等硬體元件耦接在一起。
在實例27中,實例1至26中任一者之標的可視情況地包括,其中該群組例項包括一成對群組(GOT)例項,且其中分組狀態包括根據成對之狀態驅動哪些狀態來使狀態成對。
在實例28中,實例1至27中任一者之標的可視情況地包括,其中基於許多未用之第一例項將狀態分組在一群組例項中包括:基於以下條件判定一第一狀態與一第二狀態是否可成對:該第一狀態或該第二狀態皆非該自動機中之最終狀態,且該第一狀態及該第二狀態中之一者不驅動不同於該第一狀態或該第二狀態之任何狀態;該第一狀態或該第二狀態皆非該自動機中之最終狀態,且該第一狀態及該第二狀態均驅動相同之外部狀態;該第一狀態或該第二狀態中之任一者為一最終狀態,且並非一最終狀態的該第一狀態或該第二狀態不驅動除了該第一狀態或該第二狀態之外的任何狀態;及該第一狀態及該第二狀態均為最終狀態,且該第一狀態及該第二狀態均驅動相同之外部狀態。
在實例29中,實例1至28中任一者之標的可視情況地包括,其中將該自動機轉換成一接線對照表包括:將該等狀態模型化為一圖,其中該圖之頂點對應於狀態,且該圖之邊對應於該等狀態之可能成對;判定該圖之匹配頂點;及使對應於該等匹配頂點之狀態成對。
在實例30中,實例1至29中任一者之標的可視情況地包括,其中將該自動機轉換成一接線對照表包括:判定該圖之一最大匹配。
在實例31中,實例1至30中任一者之標的可視情況地包括,其中將該自動機轉換成一接線對照表包括:使對應於一匹配頂點之每一組狀態成對;及將對應於一未匹配頂點之每一狀態映射至一GOT例項,其中該GOT例項中之一SME例項將為未用的。
在實例32中,實例1至31中任一者之標的可視情況地包括,其中對狀態一起分組包括:根據成對之狀態驅動哪些狀態來使狀態成對。
在實例33中,實例1至32中任一者之標的可視情況地包括,其中基於許多未用之第一例項將狀態一起分組在一群組例項中包括:基於以下條件判定一第一狀態與一第二狀態是否可成對:該第一狀態或該第二狀態皆非該自動機中之最終狀態,且該第一狀態及該第二狀態中之一者不驅動不同於該第一狀態或該第二狀態之任何狀態;該第一狀態或該第二狀態皆非該自動機中之最終狀態,且該第一狀態及該第二狀態均驅動相同之外部狀態;該第一狀態或該第二狀態中之任一者為一最終狀態,且並非一最終狀態的該第一狀態或該第二狀態不驅動除了該第一狀態或該第二狀態之外的任何狀態;及該第一狀態及該第二狀態均為最終狀態,且該第一狀態及該第二狀態均驅動相同之外部狀態。
在實例34中,實例1至33中任一者之標的可視情況地包括,其中基於許多未用之第一例項將狀態一起分組在一群組例項中包括:將該等狀態模型化為一圖,其中該圖之頂 點對應於狀態,且該圖之邊對應於該等狀態之可能成對;判定該圖之匹配頂點;及使對應於該等匹配頂點之狀態成對。
在實例35中,實例1至34中任一者之標的可視情況地包括,其中基於許多未用之第一例項將狀態一起分組在一群組例項中:判定該圖之一最大匹配。
在實例36中,實例1至35中任一者之標的可視情況地包括,其中基於許多未用之第一例項將狀態一起分組在一群組例項中包括:使對應於一匹配頂點之每一組狀態成對;及將對應於一未匹配頂點之每一狀態映射至一GOT例項,其中該GOT例項中之一SME例項將為未用的。
在實例37中,實例1至36中任一者之標的可視情況地包括,其中器件經組態以將每一對狀態實施為該平行機中之兩個硬體元件之一群組。
實例38包括藉由用實例1至37中任一者之過程產生的一映像來程式化的一平行機。
100‧‧‧平行機
102‧‧‧通用元件
104‧‧‧輸入
106‧‧‧輸出
108‧‧‧可程式化開關
110‧‧‧資料輸入埠
111‧‧‧程式設計介面
112‧‧‧特殊目的元件
114‧‧‧輸出埠
200‧‧‧有限狀態機(FSM)引擎
201‧‧‧緩衝器
202‧‧‧區塊
203‧‧‧區塊間開關
204‧‧‧狀態機元件
205‧‧‧狀態機元件
206‧‧‧列
208‧‧‧區塊內開關
209‧‧‧輸入區塊
210‧‧‧成對群組(GOT)
211‧‧‧程式設計介面
212‧‧‧列內開關
213‧‧‧輸出區塊
214‧‧‧第一輸入
216‧‧‧第二輸入
218‧‧‧輸出
220‧‧‧第一複數個列互連導體
222‧‧‧第二複數個列互連導體
224‧‧‧特殊目的元件
226‧‧‧輸出
228‧‧‧輸出
230‧‧‧OR閘
232‧‧‧記憶體胞
234‧‧‧偵測線
236‧‧‧資料串流線
238‧‧‧偵測電路
240‧‧‧開關
242‧‧‧3比1多工器
700‧‧‧均齊自動機
702‧‧‧非均齊自動機
704‧‧‧開始狀態
706‧‧‧狀態
708‧‧‧狀態
710‧‧‧狀態
712‧‧‧狀態
714‧‧‧狀態
800‧‧‧接線對照表
802‧‧‧接線對照表
806‧‧‧SME例項
808‧‧‧SME例項
810‧‧‧SME例項
812‧‧‧SME例項
814‧‧‧SME例項
816‧‧‧GOT例項
818‧‧‧SME例項
900‧‧‧電腦
902‧‧‧處理器
904‧‧‧主記憶體
906‧‧‧靜態或非揮發性記憶體
908‧‧‧匯流排
910‧‧‧輸出器件
912‧‧‧輸入器件
914‧‧‧游標控制器件
916‧‧‧大容量儲存器件
920‧‧‧網路介面器件
922‧‧‧電腦可讀媒體
924‧‧‧指令
926‧‧‧網路
928‧‧‧輸出控制器
930‧‧‧程式設計器件
圖1說明根據本發明之各種實施例的平行機之實例。
圖2說明根據本發明之各種實施例的實施為有限狀態機引擎的圖1之平行機的實例。
圖3說明根據本發明之各種實施例的圖2之有限狀態機引擎的區塊之實例。
圖4說明根據本發明之各種實施例的圖3之區塊之列的實例。
圖5說明根據本發明之各種實施例的圖4之列之成對群組的實例。
圖6說明根據本發明之各種實施例的供編譯程式用以將原始程式碼轉換成經組態以程式化圖1之平行機的映像之方法的實例。
圖7A及圖7B說明根據本發明之各種實施例的實例自動機。
圖8A及圖8B說明根據本發明之各種實施例的實例接線對照表。
圖9說明根據本發明之各種實施例的用於執行圖6之編譯程式的實例電腦。

Claims (38)

  1. 一種電腦實施方法,其用於自原始程式碼產生經組態以程式化一平行機之一映像,該平行機包含複數個硬體元件,該複數個硬體元件可被程式化為複數個狀態,該方法包含:將一未編譯可執行軟體應用程式的原始程式碼轉換成包含複數個互連狀態之一自動機;將該自動機轉換成一接線對照表,該接線對照表包含對應於該自動機之狀態的例項,其中該等例項對應於該平行機之該複數個硬體元件,其中將該自動機轉換成一接線對照表包括基於該平行機之一實體設計來對該自動機的狀態一起分組;及將該接線對照表轉換成該映像,該映像包含經編譯的二進位資料以程式化該平行機以對應該接線對照表的該等例項,使得當該映像被載入至平行機時,該經編譯的二進位資料被配置以程式化該平行機以提供被該未編譯可執行軟體應用程式的原始程式碼所指定的功能性。
  2. 如請求項1之方法,其中該接線對照表之該等例項包括對應於一狀態機元件(SME)硬體元件之一SME例項及對應於包含一群SME之一硬體元件的一SME群組例項,且其中對該自動機的狀態一起分組包括將該自動機的狀態分組至一SME群組例項中。
  3. 如請求項2之方法,其中用來對該自動機的狀態一起分組的該實體設計包括包含一群SME之該硬體元件的一實體 設計。
  4. 如請求項3之方法,其中用來對該自動機的狀態一起分組的該實體設計包括對包含一群SME之該硬體元件中之該等SME的一輸入或輸出限制中之一者。
  5. 如請求項4之方法,其中用來對該自動機的狀態一起分組的該實體設計包括包含一群SME之該硬體元件中的該等SME共用一輸出的一限制。
  6. 如請求項2之方法,其中一SME群組例項包括一含有兩個SME例項之成對群組(GOT)例項,且其中用來對該自動機的狀態一起分組的該實體設計包括每一GOT中之該等SME耦接至一共同輸出的一限制。
  7. 如請求項6之方法,其中將該自動機轉換成一接線對照表包含:判定該自動機的該等狀態中之哪些可一起分組在一GOT例項中;及基於該判定使該自動機的該等狀態成對。
  8. 如請求項7之方法,其中當該自動機的一第一狀態或一第二狀態皆非該自動機之一最終狀態,且該自動機的該第一狀態及該第二狀態中之一者不驅動不同於該自動機的該第一狀態或該第二狀態之任何狀態時,該自動機的該第一狀態及該第二狀態可在一GOT例項中一起成對。
  9. 如請求項7之方法,其中當該自動機的一第一狀態或一第二狀態皆非該自動機之一最終狀態,且該自動機的該第一狀態及該第二狀態均驅動相同之外部狀態時,該自 動機的該第一狀態及該第二狀態可在一GOT例項中一起成對。
  10. 如請求項7之方法,其中當該自動機的一第一狀態及一第二狀態中之一者為該自動機之一最終狀態,且該自動機的該第一狀態及該第二狀態中之另一者不驅動任何外部狀態時,該自動機的該第一狀態及該第二狀態可在一GOT例項中一起成對。
  11. 如請求項7之方法,其中當該自動機的一第一狀態及一第二狀態均為該自動機之最終狀態,且該自動機的該第一狀態及該第二狀態均驅動相同之外部狀態時,該自動機的該第一狀態及該第二狀態可在一GOT例項中一起成對。
  12. 如請求項7之方法,其中判定該自動機的該等狀態中之哪些可一起分組在一GOT例項中包含:使用圖論來判定該自動機的該等狀態中之哪些可一起分組在一GOT例項中。
  13. 如請求項12之方法,其中使用圖論來判定該自動機的該等狀態中之哪些可一起分組在一GOT例項中包含:使用圖論識別一最大匹配來判定該自動機的該等狀態中之哪些可一起分組在一GOT例項中。
  14. 如請求項1之方法,其進一步包含:發佈該映像。
  15. 如請求項1之方法,其中該接線對照表之該等例項包含通用例項及特殊目的例項,其中該等通用例項對應於該 自動機之通用狀態,且該等特殊目的例項對應於該自動機之特殊目的狀態。
  16. 如請求項15之方法,其中對應於該等通用例項之該等硬體元件包括一狀態機元件(SME)及一成對群組(GOT),且其中對應於該等特殊目的例項之該等硬體元件包括計數器及邏輯元件。
  17. 一種電腦可讀媒體,該電腦可讀媒體非暫態傳遞信號(transitory propagating signal),且該電腦可讀媒體包括若干指令,該等指令在由該電腦執行時使該電腦執行包含以下各者之操作:將一未編譯可執行軟體應用程式的原始程式碼轉換成包含複數個互連狀態之一自動機;將該自動機轉換成一接線對照表,該接線對照表包含對應於該自動機之狀態的例項,其中該等例項對應於一平行機之複數個硬體元件,該複數個硬體元件可被程式化為複數個狀態,其中將該自動機轉換成一接線對照表包括基於該平行機之一實體設計來對該自動機的狀態一起分組;及將該接線對照表轉換成該映像,該映像包含經編譯的二進位資料以程式化該平行機以對應該接線對照表的該等例項,使得當該映像被載入至平行機時,該經編譯的二進位資料被配置以程式化該平行機以提供被該未編譯可執行軟體應用程式的原始程式碼所指定的功能性。
  18. 如請求項17之電腦可讀媒體,其中該自動機為一均齊自 動機。
  19. 如請求項17之電腦可讀媒體,其中將該自動機轉換成一接線對照表包含:將該自動機之該等狀態中之每一者映射至對應於該等硬體元件之一例項及判定該等例項之間的連接性。
  20. 如請求項17之電腦可讀媒體,其中該接線對照表進一步包含表示該等硬體元件之間的導體的該等例項之間的複數個連接。
  21. 如請求項17之電腦可讀媒體,其中將該自動機轉換成一接線對照表包含:將該自動機轉換成包含例項之一接線對照表,該等例項對應於該自動機的除了一開始狀態之外的狀態。
  22. 如請求項17之電腦可讀媒體,其中該等指令使該電腦執行包含以下各者之操作:判定對應於該接線對照表之該等例項的該等硬體元件在該平行機中的位置。
  23. 如請求項22之電腦可讀媒體,其中對該自動機的狀態一起分組包括:基於包含一群通用元件之一硬體元件的一實體設計來對該自動機的狀態一起分組。
  24. 如請求項22之電腦可讀媒體,其中該等指令使該電腦執行包含以下各者之操作:判定將使用該平行機之哪些導體來連接該等硬體元件;及判定該平行機之可程式化開關的設定,其中該等可程 式化開關經組態以選擇性地將該等硬體元件耦接在一起。
  25. 一種電腦,其包含:一記憶體,其上面儲存有軟體;及一處理器,其通信地耦接至該記憶體,其中該軟體在由該處理器執行時使該處理器:將一未編譯可執行軟體應用程式的原始程式碼轉換成包含複數個互連狀態之一自動機;將該自動機轉換成一接線對照表,該接線對照表包含對應於該自動機之狀態的例項,其中該等例項對應於該平行機之複數個硬體元件,該複數個硬體元件可被程式化為複數個狀態,其中該等例項包括複數個第一例項及含有兩個或兩個以上第一例項之一群組例項,其中將該自動機轉換成一接線對照表的操作包括基於許多未用之第一例項來將該自動機的狀態一起分組在一群組例項中的操作;及將該接線對照表轉換成一映像,該映像包含經編譯的二進位資料以程式化該平行機以對應該接線對照表的該等例項,使得當該映像被載入至平行機時,該經編譯的二進位資料被配置以程式化該平行機以提供被該未編譯可執行軟體應用程式的原始程式碼所指定的功能性。
  26. 如請求項25之電腦,其中該群組例項包括一成對群組(GOT)例項,且其中將該自動機的狀態分組的操作包括 根據成對之狀態驅動哪些狀態來使該自動機的狀態成對的操作。
  27. 如請求項26之電腦,其中基於許多未用之第一例項將該自動機的狀態分組在一群組例項中的操作包括以下操作:基於以下條件判定該自動機的一第一狀態與一第二狀態是否可成對:該第一狀態或該第二狀態皆非該自動機中之最終狀態,且該第一狀態及該第二狀態中之一者不驅動不同於該第一狀態或該第二狀態之任何狀態;該第一狀態或該第二狀態皆非該自動機中之最終狀態,且該第一狀態及該第二狀態均驅動相同之外部狀態;該第一狀態或該第二狀態中之任一者為一最終狀態,且並非一最終狀態的該第一狀態或該第二狀態不驅動除了該第一狀態或該第二狀態之外的任何狀態;及該第一狀態及該第二狀態均為最終狀態,且該第一狀態及該第二狀態均驅動相同之外部狀態。
  28. 如請求項25之電腦,其中將該自動機轉換成一接線對照表的操作包括以下操作:將該自動機的該等狀態模型化為一圖,其中該圖之頂點對應於狀態,且該圖之邊對應於該自動機的該等狀態之可能成對;判定該圖之匹配頂點;及 使對應於該等匹配頂點之該自動機的狀態成對。
  29. 如請求項28之電腦,其中將該自動機轉換成一接線對照表的操作包括:判定該圖之一最大匹配。
  30. 如請求項29之電腦,其中將該自動機轉換成一接線對照表的操作包括以下操作:使對應於一匹配頂點之每一組該自動機的狀態成對;及將對應於一未匹配頂點之每一該自動機的狀態映射至一GOT例項,其中該GOT例項中之一SME例項將為未用的。
  31. 一種系統,其包含:一電腦,其經組態以:將一未編譯可執行軟體應用程式的原始程式碼轉換成包含複數個互連狀態之一自動機;將該自動機轉換成一接線對照表,該接線對照表包含對應於該自動機之狀態的例項,其中該等例項對應於該平行機之複數個硬體元件,該複數個硬體元件可被程式化為複數個狀態,其中該等例項包括複數個第一例項及含有兩個或兩個以上第一例項之一群組例項,其中將該自動機轉換成一接線對照表的操作包括基於許多未用之第一例項來將該自動機的狀態一起分組在一群組例項中的操作;及將該接線對照表轉換成一映像,該映像包含經編譯的二進位資料以程式化該平行機以對應該接線對照表 的該等例項,使得當該映像被載入至平行機時,該經編譯的二進位資料被配置以程式化該平行機以提供被該未編譯可執行軟體應用程式的原始程式碼所指定的功能性;及一器件,其經組態以將該映像載入至一平行機上。
  32. 如請求項31之系統,其中對狀態一起分組的操作包括以下操作:根據成對之狀態驅動哪些狀態來使該自動機的狀態成對。
  33. 如請求項31之系統,其中基於許多未用之第一例項將該自動機的狀態一起分組在一群組例項中的操作包括以下操作:基於以下條件判定該自動機的一第一狀態與該自動機的一第二狀態是否可成對:該第一狀態或該第二狀態皆非該自動機中之最終狀態,且該第一狀態及該第二狀態中之一者不驅動不同於該第一狀態或該第二狀態之任何狀態;該第一狀態或該第二狀態皆非該自動機中之最終狀態,且該第一狀態及該第二狀態均驅動相同之外部狀態;該第一狀態或該第二狀態中之任一者為一最終狀態,且並非一最終狀態的該第一狀態或該第二狀態不驅動除了該第一狀態或該第二狀態之外的任何狀態;及該第一狀態及該第二狀態均為最終狀態,且該第一 狀態及該第二狀態均驅動相同之外部狀態。
  34. 如請求項31之系統,其中基於許多未用之第一例項將該自動機的狀態一起分組在一群組例項中的操作包括以下操作:將該等狀態模型化為一圖,其中該圖之頂點對應於狀態,且該圖之邊對應於該等狀態之可能成對;判定該圖之匹配頂點;及使對應於該等匹配頂點之狀態成對。
  35. 如請求項34之系統,其中基於許多未用之第一例項將該自動機的狀態一起分組在一群組例項中的操作包括以下操作:判定該圖之一最大匹配。
  36. 如請求項35之系統,其中基於許多未用之第一例項將該自動機的狀態一起分組在一群組例項中的操作包括以下操作:使對應於一匹配頂點之每一組該自動機的狀態成對;及將對應於一未匹配頂點之每一該自動機的狀態映射至一GOT例項,其中該GOT例項中之一SME例項將為未用的。
  37. 如請求項31之系統,其中該器件經組態以將每一對該自動機的狀態實施為該平行機中之兩個硬體元件之一群組(GOT)。
  38. 一種包含藉由用請求項1之方法產生之一映像程式化的複數個硬體元件的平行機。
TW101102989A 2011-01-25 2012-01-30 程式化平行機及電腦實施方法、電腦可讀媒體、電腦及將原始程式碼轉換為機器碼以程式化一平行機之系統 TWI512625B (zh)

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
TW201239765A TW201239765A (en) 2012-10-01
TWI512625B true TWI512625B (zh) 2015-12-11

Family

ID=46545132

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101102989A TWI512625B (zh) 2011-01-25 2012-01-30 程式化平行機及電腦實施方法、電腦可讀媒體、電腦及將原始程式碼轉換為機器碼以程式化一平行機之系統

Country Status (7)

Country Link
US (2) US8788991B2 (zh)
EP (1) EP2668576B1 (zh)
JP (1) JP5763784B2 (zh)
KR (1) KR101551045B1 (zh)
CN (1) CN103430148B (zh)
TW (1) TWI512625B (zh)
WO (1) WO2012103151A2 (zh)

Families Citing this family (51)

* 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
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
US9164945B2 (en) 2008-12-01 2015-10-20 Micron Technology, Inc. Devices, systems, and methods to synchronize parallel processing of a single data stream
US8140780B2 (en) 2008-12-31 2012-03-20 Micron Technology, Inc. Systems, methods, and devices for configuring a device
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
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
US8601013B2 (en) 2010-06-10 2013-12-03 Micron Technology, Inc. Analyzing data using a hierarchical structure
KR101640295B1 (ko) 2011-01-25 2016-07-15 마이크론 테크놀로지, 인크. 정규 표현을 컴파일하기 위한 방법 및 장치
US8788991B2 (en) 2011-01-25 2014-07-22 Micron Technology, Inc. State grouping for element utilization
US8843911B2 (en) 2011-01-25 2014-09-23 Micron Technology, Inc. Utilizing special purpose elements to implement a FSM
JP5857072B2 (ja) 2011-01-25 2016-02-10 マイクロン テクノロジー, インク. オートマトンの入次数および/または出次数を制御するための量化子の展開
US8593175B2 (en) 2011-12-15 2013-11-26 Micron Technology, Inc. Boolean logic in a state machine lattice
US8648621B2 (en) 2011-12-15 2014-02-11 Micron Technology, Inc. Counter operation in a state machine lattice
US9443156B2 (en) * 2011-12-15 2016-09-13 Micron Technology, Inc. Methods and systems for data analysis in a state machine
US8680888B2 (en) 2011-12-15 2014-03-25 Micron Technologies, Inc. Methods and systems for routing in a state machine
US8782624B2 (en) * 2011-12-15 2014-07-15 Micron Technology, Inc. Methods and systems for detection in a state machine
US20130275709A1 (en) 2012-04-12 2013-10-17 Micron Technology, Inc. Methods for reading data from a storage buffer including delaying activation of a column select
US9524248B2 (en) 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
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
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
US9501131B2 (en) 2012-08-31 2016-11-22 Micron Technology, Inc. Methods and systems for power management in a pattern recognition processing system
GB2511072A (en) * 2013-02-22 2014-08-27 Ibm Non-deterministic finite state machine module for use in a regular expression matching system
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
US9703574B2 (en) 2013-03-15 2017-07-11 Micron Technology, Inc. Overflow detection and correction in state machine engines
US11366675B2 (en) 2014-12-30 2022-06-21 Micron Technology, Inc. Systems and devices for accessing a state machine
WO2016109570A1 (en) 2014-12-30 2016-07-07 Micron Technology, Inc Systems and devices for accessing a state machine
WO2016109571A1 (en) 2014-12-30 2016-07-07 Micron Technology, Inc Devices for time division multiplexing of state machine engine signals
US10846103B2 (en) 2015-10-06 2020-11-24 Micron Technology, Inc. Methods and systems for representing processing resources
US10977309B2 (en) 2015-10-06 2021-04-13 Micron Technology, Inc. Methods and systems for creating networks
US10691964B2 (en) 2015-10-06 2020-06-23 Micron Technology, Inc. Methods and systems for event reporting
US10146555B2 (en) 2016-07-21 2018-12-04 Micron Technology, Inc. Adaptive routing to avoid non-repairable memory and logic defects on automata processor
US10268602B2 (en) 2016-09-29 2019-04-23 Micron Technology, Inc. System and method for individual addressing
US10019311B2 (en) 2016-09-29 2018-07-10 Micron Technology, Inc. Validation of a symbol response memory
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
US10481881B2 (en) * 2017-06-22 2019-11-19 Archeo Futurus, Inc. Mapping a computer code to wires and gates
US9996328B1 (en) * 2017-06-22 2018-06-12 Archeo Futurus, Inc. Compiling and optimizing a computer code by minimizing a number of states in a finite machine corresponding to the computer code
DE102018100423A1 (de) * 2018-01-10 2019-07-11 Dspace Digital Signal Processing And Control Engineering Gmbh Inkrementelles Generieren einer FPGA Implementierung mit Graphen-basierter Ähnlichkeitssuche
TWI755112B (zh) * 2020-10-23 2022-02-11 財團法人工業技術研究院 電腦程式碼之優化方法、優化系統及應用其之電子裝置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784298A (en) * 1993-10-15 1998-07-21 International Business Machines Corporation Apparatus and method for using finite state machines (FSMs) to monitor a serial data stream for characteristic patterns
TW401558B (en) * 1996-11-14 2000-08-11 Dsc Telecom Lp Generic software state machine system and method of constructing dynamic objects for an application program
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

Family Cites Families (73)

* 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 富士通株式会社 階層ネットワーク構成演算素子
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
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
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
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
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 索尼电子有限公司 执行使命引擎的方法和装置
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
WO2007055181A1 (ja) 2005-11-11 2007-05-18 Matsushita Electric Industrial Co., Ltd. 対話支援装置
US8065249B1 (en) 2006-10-13 2011-11-22 Harris Curtis L GPSTP with enhanced aggregation functionality
US7774286B1 (en) 2006-10-24 2010-08-10 Harris Curtis L GPSTP with multiple thread functionality
US20080168013A1 (en) 2006-12-05 2008-07-10 Paul Cadaret Scalable pattern recognition system
US8656381B2 (en) 2006-12-07 2014-02-18 International Business Machines Corporation Presenting machine instructions in a machine-independent tree form suitable for post-link optimizations
US8055601B2 (en) 2006-12-08 2011-11-08 Pandya Ashish A Compiler for compiling content search rules comprising a regular expression using a programmable intelligent search memory (PRISM) and vectors
CN101013452A (zh) 2007-02-05 2007-08-08 江苏大学 一种符号化的模型检测方法
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
JP4957500B2 (ja) 2007-10-12 2012-06-20 日本電気株式会社 文字列照合回路
CN101499065B (zh) 2008-02-01 2011-11-02 华为技术有限公司 基于fa的表项压缩方法及装置、表项匹配方法及装置
CN101339501B (zh) 2008-08-12 2012-07-18 北京航空航天大学 基于有向图的ws-bpel控制环路检测方法
WO2010018710A1 (ja) 2008-08-13 2010-02-18 日本電気株式会社 有限オートマトン生成装置、パターンマッチング装置、有限オートマトン回路生成方法およびプログラム
US8095494B2 (en) 2008-10-16 2012-01-10 International Business Machines Corporation Rules-based cross-FSM transition triggering
US8209521B2 (en) 2008-10-18 2012-06-26 Micron Technology, Inc. Methods of indirect register access including automatic modification of a directly accessible address register
US8938590B2 (en) 2008-10-18 2015-01-20 Micron Technology, Inc. Indirect register access method and system
US8805686B2 (en) 2008-10-31 2014-08-12 Soundbound, Inc. Melodis crystal decoder method and device for searching an utterance by accessing a dictionary divided among multiple parallel processors
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
US7917684B2 (en) 2008-11-05 2011-03-29 Micron Technology, Inc. Bus translator
US20100118425A1 (en) 2008-11-11 2010-05-13 Menachem Rafaelof Disturbance rejection in a servo control loop using pressure-based disc mode sensor
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
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
US8214672B2 (en) 2009-01-07 2012-07-03 Micron Technology, Inc. Method and systems for power consumption management of a pattern-recognition processor
US8281395B2 (en) 2009-01-07 2012-10-02 Micron Technology, Inc. Pattern-recognition processor with matching-data reporting module
US20100174887A1 (en) 2009-01-07 2010-07-08 Micron Technology Inc. Buses for Pattern-Recognition Processors
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
US9323994B2 (en) 2009-12-15 2016-04-26 Micron Technology, Inc. Multi-level hierarchical routing matrices for pattern-recognition processors
US8489534B2 (en) 2009-12-15 2013-07-16 Paul D. Dlugosch Adaptive content inspection
US9501705B2 (en) 2009-12-15 2016-11-22 Micron Technology, Inc. Methods and apparatuses for reducing power consumption in a pattern recognition processor
US8766666B2 (en) 2010-06-10 2014-07-01 Micron Technology, Inc. Programmable device, hierarchical parallel machines, and methods for providing state information
US8601013B2 (en) 2010-06-10 2013-12-03 Micron Technology, Inc. Analyzing data using a hierarchical structure
US8843911B2 (en) 2011-01-25 2014-09-23 Micron Technology, Inc. Utilizing special purpose elements to implement a FSM
US8788991B2 (en) 2011-01-25 2014-07-22 Micron Technology, Inc. State grouping for element utilization
KR101640295B1 (ko) 2011-01-25 2016-07-15 마이크론 테크놀로지, 인크. 정규 표현을 컴파일하기 위한 방법 및 장치
JP5857072B2 (ja) 2011-01-25 2016-02-10 マイクロン テクノロジー, インク. オートマトンの入次数および/または出次数を制御するための量化子の展開

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784298A (en) * 1993-10-15 1998-07-21 International Business Machines Corporation Apparatus and method for using finite state machines (FSMs) to monitor a serial data stream for characteristic patterns
TW401558B (en) * 1996-11-14 2000-08-11 Dsc Telecom Lp Generic software state machine system and method of constructing dynamic objects for an application program
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

Also Published As

Publication number Publication date
EP2668576A4 (en) 2016-05-18
EP2668576B1 (en) 2024-04-24
EP2668576A2 (en) 2013-12-04
WO2012103151A3 (en) 2012-11-15
US8788991B2 (en) 2014-07-22
CN103430148A (zh) 2013-12-04
WO2012103151A2 (en) 2012-08-02
US20120192166A1 (en) 2012-07-26
US20150046889A1 (en) 2015-02-12
JP5763784B2 (ja) 2015-08-12
KR101551045B1 (ko) 2015-09-07
US9104828B2 (en) 2015-08-11
CN103430148B (zh) 2016-09-28
TW201239765A (en) 2012-10-01
KR20140005258A (ko) 2014-01-14
JP2014508996A (ja) 2014-04-10

Similar Documents

Publication Publication Date Title
TWI512625B (zh) 程式化平行機及電腦實施方法、電腦可讀媒體、電腦及將原始程式碼轉換為機器碼以程式化一平行機之系統
US10089086B2 (en) Method and apparatus for compiling regular expressions
TWI517036B (zh) 程式化的平行機與電腦實施方法、電腦可讀媒體、非暫態電腦可讀媒體、用於編譯程式之電腦及系統
TWI502501B (zh) 用以控制自動機之內分支度及/或外分支度之展開量化
JP6154824B2 (ja) ステートマシンラチスにおけるブール型論理
JP2014506693A5 (zh)