TWI526935B - 可程式化裝置、階層平行機器、用於提供狀態資訊之方法 - Google Patents

可程式化裝置、階層平行機器、用於提供狀態資訊之方法 Download PDF

Info

Publication number
TWI526935B
TWI526935B TW100120419A TW100120419A TWI526935B TW I526935 B TWI526935 B TW I526935B TW 100120419 A TW100120419 A TW 100120419A TW 100120419 A TW100120419 A TW 100120419A TW I526935 B TWI526935 B TW I526935B
Authority
TW
Taiwan
Prior art keywords
parallel machine
programmable
machine
output
input
Prior art date
Application number
TW100120419A
Other languages
English (en)
Other versions
TW201211897A (en
Inventor
保羅 德魯高奇
Original Assignee
美光科技公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美光科技公司 filed Critical 美光科技公司
Publication of TW201211897A publication Critical patent/TW201211897A/zh
Application granted granted Critical
Publication of TWI526935B publication Critical patent/TWI526935B/zh

Links

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17362Indirect interconnection networks hierarchical topologies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17312Routing techniques specific to parallel machines, e.g. wormhole, store and forward, shortest path problem congestion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven
    • G06F15/825Dataflow computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Image Processing (AREA)
  • Logic Circuits (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)
  • Multi Processors (AREA)

Description

可程式化裝置、階層平行機器、用於提供狀態資訊之方法
本專利申請案根據35 U.S.C.第119(e)條主張Dlugosch等人於2010年6月10日提出申請之題目為「SYSTEM AND METHOD FOR TRANSFERRING STATE BETWEEN FINITE STATE MACHINES」之序列號為61/353,551之美國臨時專利申請案(代理人檔案號碼303.B43PRV)之優先權權益,該申請案以全文引用方式併入本文中。
一可程式化裝置之一項實例係一平行機器。平行機器包括(例如)有限狀態機(FSM)引擎及場可程式化閘陣列(FPGA)。一FSM係一狀態表示、在狀態與動作之間轉變。有限狀態機可以有向流程圖之形式表達。其等可用以解決(例如)工程學、型樣辨識、生物學及人工智慧中之問題。
以下說明及圖式充分圖解說明特定實施例以使熟習此項技術者能夠實踐該等特定實施例。其他實施例可併入有結構、邏輯、電、處理程序及其他改變。某些實施例之各部分及特徵可包括於其他實施例之彼等部分及特徵中或替代其他實施例之彼等部分及特徵。
除其他之外此文件亦闡述一階層平行機器(諸如一階層有限狀態機(HFSM)引擎)及相關方法。圖1中展示一種此類階層平行機器10。每一階層平行機器10包括兩個或兩個以上平行機器,諸如兩個或兩個以上有限狀態機(FSM)引擎12。每一有限狀態機引擎12係在一輸入匯流排16上接收資 料(例如,一資料串流)並對該資料做出反應且依據該所接收之資料提供(例如,產生)一輸出之一裝置。
每一有限狀態機引擎12可任意複雜。在一項實施例(諸如圖1中所展示)中,有限狀態機引擎12經級聯,其中有限狀態機引擎12中之至少一者之一輸出(例如,狀態)整體或部分地提供(例如,傳遞)至在該級聯中之下游之有限狀態機引擎12中之一或多者。在一實例中,該級聯中之最後有限狀態機引擎產生一結果,該結果可提供於一輸出匯流排(諸如結果匯流排20)上。在一項實施例中,可(諸如)藉由使用程式化匯流排14(例如)載入(例如,儲存)一程式(例如,一影像)至一有限狀態機引擎12上來經由一各別程式化匯流排14程式化有限狀態機引擎12中之每一者。
在某些實施例中,減少藉助階層平行機器10處理資料所需要之時間可頗重要。藉助階層平行機器10處理資料之時間可至少部分地受限於在有限狀態機引擎12之間所傳遞之資料(例如,狀態資訊,諸如一狀態向量)量。在某些此等實施例中,有限狀態機引擎12以一階層組態連接,且有限狀態引擎12之間的介面可經設計以接近即時操作。除其他之外此文件亦闡述此等考量因素且建議一種用於實體實施一階層平行機器組(諸如一階層FSM引擎12組)之一般方法。
在一項實例性實施例中,實施一階層型樣辨識處理器(HPRP)30,如圖2中所展示。一型樣辨識處理器係接收資料(例如,一符號序列)並在辨識出(例如,偵測到)一(若干個)所關注序列時產生提供某一類型之通知之一輸出之一 裝置。在一簡單情形中,一單個輸入符號串流在一輸入匯流排36上提供至HPRP 30。HPRP 30經程式化以經由(若干個)程式化匯流排34偵測一特定輸入符號序列或若干個特定輸入符號序列。結果(所偵測到之序列)產生並可提供於結果匯流排40上。圖2中展示HPRP 30之邏輯介面(程式化介面34及資料輸入36)。
在所展示之實施例中,HPRP 30可包括程式化為型樣辨識處理器(PRP)32之兩個或兩個以上有限狀態機引擎。每一PRP 32係能夠偵測一各別資料串流(諸如輸入匯流排36或輸入匯流排42上之一資料串流)中之一(若干個)符號序列之一裝置。舉例而言,每一PRP 32可能夠匹配一各別資料串流中之一各別型樣。在所圖解說明之實施例中,第二PRP 32接收第一PRP 32之一輸出(提供於輸出匯流排38上)作為其輸入並產生一結果於結果匯流排40上。在一項實施例中,可經由一各別程式化匯流排34來程式化PRP 32中之每一者。下文參照圖15至圖18來闡述一實例性PRP 32(亦稱作一「內容檢查處理器」)。在某些實例中,使用一有限狀態機(FSM)引擎或一場可程式化閘陣列(FPGA)或其變化形式或一平行機器之另一實施方案來實施HPRP 30。
階層平行機器10及HPRP 30之兩層級(例如,級)階層允許兩個獨立程式基於相同資料串流而操作。兩層級階層可類似於建模為不同區之人類大腦中之視覺辨識。在此模型下,該等區係實際上不同的型樣辨識處理器,每一型樣辨識處理器執行一類似計算功能(偵測一資料串流中之一符號序列) 但使用不同程式(例如,簽章)。藉由將多個平行機器連接在一起,可獲得關於資料串流之更深知悉。
舉例而言,該階層之一第一層級(諸如由第一FSM引擎12或第一PRP 32實施之一者)可直接對一原始資料串流(raw data stream)執行處理。亦即,第一FSM 12或PRP 32可分別依據輸入匯流排16或輸入匯流排36上之原始資料串流而產生一輸出資料串流(例如,原始資料串流中之一匹配或若干個匹配之一指示)。如圖1中所展示,一第二層級(諸如由第二FSM引擎12或第二PRP 32實施之一者)處理來自該第一層級之一輸出資料串流。舉例而言,第二FSM引擎12自第一FSM引擎12接收一輸出資料串流(提供於輸出匯流排18上)且第二FSM引擎12處理第一FSM引擎12之一輸出資料串流。因此,第二FSM引擎12不接收原始資料串流作為一輸入,而是接收第一FSM引擎12所產生之一輸出資料串流。可藉助一第一影像程式化第二FSM引擎12以偵測第一FSM引擎12所產生之輸出資料串流中之一(若干個)序列。第二FSM引擎12可耦合至一單獨程式化介面(例如,藉由一程式化匯流排14)以用於接收一第二影像。
在一實例中,HPRP 30可經程式化以實施一型樣辨識功能。舉例而言,由HPRP 30實施之一FSM可經組態以辨識輸入至HPRP 30之一資料串流中之一或多個資料序列(例如,簽章)。當第一PRP 32辨識出(例如,匹配)該資料串流中之一所關注序列時,可在輸出匯流排38上提供指示彼辨識之一輸出資料串流。在一實例中,該型樣辨識可欲辨識一串符號(例如,ASCII字元)以(例如)識別網路資料中之惡意軟體或其他資訊。
此輸出資料串流(例如,一輸出字組(output word)、偵測狀態等)可自一第一PRP 32之輸出匯流排38饋送至另一PRP 32之一輸入匯流排42,如圖2中所展示。兩個PRP 32之此串列連接提供將關於一經壓縮字組中之過去事件之資訊自一第一PRP 32提供至一第二PRP 32之一手段。此資訊提供實際上可係已被第一PRP 32辨識出之複雜事件(例如,資料串流序列)之一概要。
如上所述,在某些實施例中減少在PRP之層級之間傳遞輸出所需要之時間可頗重要。在某些此類實施例中,PRP 32之間的介面可經設計以支援HPRP 30之每一層級之即時操作。舉例而言,此文件闡述此等考量因素且建議一種用於實體實施一HPRP 30之一般方法。
此文件除其他之外亦闡述用於使用一階層結構處理資料之方法及設備。該階層結構可包含複數個層級(例如,層),其中每一層級處理(例如,對......執行一分析)資料並提供一輸出(例如,基於該分析)。來自該階層結構中之較低層級之輸出可作為輸入提供至較高層級。以此方式,較低層級可執行更基本/基礎分析,而一較高層級可使用來自一或多個較低層級之輸出來執行更複雜分析。在一實例中,該階層結構執行型樣辨識。
在一實例中,藉助以一級聯方式耦合在一起之複數個有限狀態機引擎來實施該階層結構。舉例而言,一第一有限狀態機引擎與第二有限狀態機引擎可串列耦合以使得該第二有限狀態機引擎自該第一有限狀態機引擎接收一輸出作為一輸入。任一數目個有限狀態機引擎可在此階層結構中耦合在一起。
除了使用一階層結構處理資料之外,此文件亦闡述用於使用來自一個有限狀態機引擎之輸出來修改另一有限狀態機引擎所執行之處理之方法及設備。使用上文所述之有限狀態機引擎實例,實施一較高處理層級之第二有限狀態機引擎可提供回饋資訊至實施一較低處理層級之第一有限狀態機引擎。該回饋資訊可由該第一有限狀態機引擎使用來以類似於在一生物大腦中學習之一方式修改(例如,更新)處理。
圖3圖解說明可用以實施一有限狀態機引擎或一型樣辨識處理器之一實例性平行機器100。平行機器100可接收輸入資料並基於該輸入資料提供一輸出。平行機器100可包括一資料輸入埠110以用於接收輸入資料及一輸出埠114以用於提供一輸出至另一裝置。資料輸入埠110提供一介面以用於將資料輸入至平行機器100。
平行機器100包括複數個可程式化元件,包括通用元件102及專用元件112。一通用元件102可包括一或多個輸入104及一或多個輸出106。一通用元件102可被程式化至複數個狀態中之一者中。通用元件102之狀態判定通用元件102將基於一(若干個)既定輸入提供何種輸出。亦即,通用元件102之狀態判定可程式化元件將對一既定輸入如何做出反應(例如,回應)。至資料輸入埠110之資料輸入可提供至複數個通用元件102以致使通用元件102對其採取行動。一通用元件102之實例可包括(例如)一狀態機元件(SME)(如下文詳細論述)、一計數器及/或一可組態邏輯區塊以及其他可程式化元件。在一實例中,當在資料輸入埠110處接收到一既定輸入時一SME可經程式化(例如,設定)以提供某一輸出(例如,一高信號或「1」信號)。當在資料輸入埠110處接收到除該既定輸入之外的一輸入時,該SME可提供一不同輸出(例如,一低信號或「0」信號)。在一實例中,一可組態邏輯區塊可經設定以基於在資料輸入埠110處所接收之輸入來執行一布林邏輯函式(「及(AND)」、「或(OR)」、「非或(NOR)」等)。本文稍後論述一計數器之一實例。一專用元件112可包括記憶體(例如,RAM)、邏輯閘、計數器、查詢表、場可程式化閘陣列(FPGA)及其他硬體元件。一專用元件112可與通用元件102互動且執行專用功能。
平行機器100亦可包括一程式化介面111以用於將一程式(例如,一影像)載入至平行機器100上。該影像可程式化(例如,設定)通用元件102之狀態。亦即,該影像可組態通用元件102以便以某一方式對一既定輸入做出反應。舉例而言,一通用元件102可經設定以在資料輸入埠110處接收到字元‘a’時輸出一高信號。在某些實例中,平行機器100可使用一時脈信號以用於控制通用元件102之操作之計時。在某些實施例中,在資料輸入埠110處所接收之資料可包括隨時間或同時一起接收之一固定資料組或隨時間接收之一資料串流。該資料可係自耦合至平行機器100之任一源(諸如資料庫、感測器、網路等)接收或由其產生。
平行機器100亦包括複數個可程式化交換器108以用於選擇性地將平行機器100之不同元件(例如,通用元件102、資料輸入埠110、輸出埠114、程式化介面111及專用元件112)耦合在一起。因此,平行機器100包含形成於該等元件當中之一可程式化矩陣。在一實例中,一可程式化交換器108可選擇性地將兩個或兩個以上元件彼此耦合在一起以使得一通用元件102之一輸入104、資料輸入埠110、一程式化介面111或專用元件112可透過一或多個可程式化交換器108耦合至一通用元件102之一輸出106、輸出埠114、一程式化介面111或專用元件112。因此,可藉由設定可程式化交換器108來控制信號在該等元件之間的路由。雖然圖3圖解說明一既定元件與一可程式化交換器108之間的某一數目個導體(例如,導線),但應理解,在其他實例中可使用不同數目個導體。而且,雖然圖3圖解說明個別地耦合至一可程式化交換器108之每一通用元件102,但在其他實例中,多個通用元件102可作為一群組(例如,圖15中所圖解說明之一區塊802)耦合至一可程式化交換器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上之一影像包含複數個資訊位元以用於設定通用元件102之狀態、程式化可程式化交換器108及組態平行機器100內之專用元件112。在一實例中,該影像可載入至平行機器100上以程式化平行機器100以基於某些輸入提供一期望輸出。輸出埠114可基於通用元件102對在輸入埠110處所接收之資料之反應而提供來自平行機器100之輸出。來自輸出埠114之一輸出可包括指示一既定型樣之一匹配之一單個位元、包含指示匹配及不匹配複數個型樣之複數個位元之一字組及對應於所有或某些通用元件102及專用元件112之狀態之一輸出向量。
平行機器100之實例性用途包括型樣辨識(例如,語音辨識、影像辨識等)、信號處理、成像、電腦視覺、密碼編譯及其他。在某些實例中,平行機器100可包含一有限狀態機(FSM)引擎、一場可程式化閘陣列(FPGA)及其變化形式。此外,平行機器100可係一較大裝置(諸如一電腦、傳呼機、蜂巢式電話、個人記事本、可攜式音訊播放器、網路裝置(例如,路由器、防火牆、交換器或其任一組合)、控制電路、相機等)中之一組件。
一平行機器(例如,一FSM引擎、PRP或諸如此類)可實施一(若干個)狀態機。一狀態機可表示為一有向圖。圖4展示一簡單狀態機圖150,其表示在字‘DOG’中所找到之字元序列。狀態152係狀態機圖150之輸入狀態。狀態154係一中間狀態。在圖4中,最終狀態156(有時亦稱作終端狀態)係由圍繞‘G’狀態之虛線邊界識別。在一般情形中,當到達最終狀態時,透過某一機制指示一匹配條件。此匹配條件可由來自一平行機器100(例如,FSM引擎12、PRP 32)之一明確信號表示,或其可編碼為二進制字組並儲存於一記憶體暫存器中。
在理論上不存在對一狀態機之大小之限制。在一般情形中,一PRP或FSM引擎可針對該PRP或FSM引擎可偵測到之每一特定符號序列實施一單獨狀態機。可在期望之情形下在狀態機上執行最佳化以便消除冗餘(共同路徑),(諸如)以將狀態機組合成一較大實施方案或最小化一特定狀態機實施方案之大小。此等最佳化可減小狀態機實施方案及因此(例如)實施狀態機之一狀態機引擎之彙總大小。一旦完成此最佳化,便可實施一單個大狀態機。
圖5展示一較大狀態機圖形200。在一般情形中,一狀態機實施方案可具有向前之複雜連接及向後之複雜連接兩者。在圖5中所展示之實例中,一個輸入狀態202饋送兩個中間狀態204。在此等狀態機中,可存在諸多最終狀態208及諸多其他中間狀態204。
一狀態機中之每一狀態具有指示該狀態是否活動之一瞬時狀況。僅活動狀態可對一輸入符號做出反應。在一項實施例中,當在輸入匯流排36上接收到一輸入符號時,該狀態機中之每一活動狀態將分析彼符號以判定是否應產生一啟動信號。此啟動信號將用以啟動序列中之下一狀態。舉例而言,當第一節點204係活動且接收到字元‘b’作為輸入資料時,指定字元‘b’之一第一狀態204將在輸入字元‘b’上啟動藉由一轉變206連接至第一狀態204之一第二狀態204。
在圖形200中,輸入狀態202可首先被啟動且可在輸入資料匹配來自輸入節點202之一轉變206時啟動一下游狀態204。隨著接收到輸入資料可以此方式啟動整個圖形200中之狀態204、208。一經啟動最終狀態208對應於輸入資料之 一所關注序列之一匹配。因此,啟動一最終狀態208指示已在輸入資料處接收到一所關注序列。在實施一型樣辨識功能之一有限狀態機引擎(例如一平行機器100)之上下文中,啟動一最終狀態208可指示已在輸入資料上偵測到一所關注特定型樣。
在一實例中,每一中間狀態204及最終狀態208可對應於有限狀態機引擎(例如一平行機器100)中之一通用元件102。每一轉變206可對應於通用元件102之間的連接。因此,轉變至(例如,具有連接至......之一轉變206))另一中間狀態204或一最終狀態208之一中間狀態204對應於可耦合至另一通用元件102之一通用元件102。在某些特殊情形中,開始狀態202可不一定具有一對應通用元件102。
當一有限狀態機引擎(例如一平行機器100)經程式化以實施一FSM時,通用元件102中之每一者可處於一活動或不活動狀態中。一不活動通用元件102不對輸入介面110處之資料串流做出反應。一活動通用元件102可對輸入介面110處之資料串流做出反應,且可在輸入資料串流匹配通用元件102之設定時啟動一下游通用元件102。當一通用元件102對應於一最終狀態208時,通用元件102可耦合至輸出埠114以提供與一外部裝置之一匹配之一指示,該外部裝置在某些情形中可係另一有限狀態機引擎(例如一平行機器100)。
經由程式化介面111載入至有限狀態機引擎(例如一平行機器100)上之一影像可組態通用元件102及通用元件102之間的連接,以便基於對輸入介面110處之資料串流之回應而透過啟動下游狀態來實施一期望FSM。在一實例中,一通用元件102保持活動達一單個資料循環(例如,一單個字元、一組字元、一單個時脈循環)且然後切換至不活動,除非被一上游通用元件102重新啟動。
可認為一最終狀態208儲存一經壓縮之過去事件歷史。舉例而言,啟動一最終狀態208所需要之輸入資料之一或多個序列可由彼最終狀態208之啟動表示。在一實例中,一最終狀態208所提供之輸出係二進制的,亦即該輸出指示是否已匹配一所關注對應序列。在一FSM中,最終狀態208對中間狀態204之比率可相當小。換言之,雖然在該FSM中可存在一高複雜度,但比較而言該FSM之輸出可小。
不管一FSM引擎實施一單個經組合(經最佳化)狀態機還是實施諸多獨立狀態機,皆存在一狀態向量之概念。一狀態向量係在所實施之狀態機中之個別狀態與向量內之個別數位(例如,位元)位置之間具有一對一對應關係之一維向量。亦即,狀態機中之每一狀態與狀態向量中之一數位有關。在圖4之情形中,狀態向量係3位元寬(其中一個位元指示狀態152、154及156中之每一者之狀態)。在圖5之情形中,狀態向量係74位元寬。狀態機可任意複雜且因此理論上對機器之總大小不施加任何限制。因此,狀態向量可無限長。
然而,為了在平行機器中實施實際狀態機,通常對狀態機之大小施加某一有限限制。不嚴格定義此限制且可基於用以實施狀態機之平行機器之特性而判定此限制。
圖6中展示另一HFSM 400。在圖6中所展示之HFSM 400中,三個有限狀態機引擎402使用其全部各別狀態向量數位之全部或一部分提供關於其各別狀態之資訊至一個有限狀態機引擎404。在所展示之實例中,每一狀態機引擎(402、404)經由其各別程式化介面(PROG)被程式化。在其他實施例中,來自FSM引擎402中之每一者之資料用以程式化FSM引擎404。在某些此類實施例中,FSM引擎404經設計以適用於自FSM引擎402接收之狀態資訊。
圖7中展示一更複雜的HFSM 500。在圖7之HFSM 500中,多個FSM引擎502、504、506、508連接在一起,其中FSM引擎502透過匯流排510提供(例如,饋送)狀態資訊至FSM引擎504,FSM引擎504透過匯流排512饋送狀態資訊至FSM引擎506,且FSM引擎506透過匯流排514饋送狀態資訊至FSM引擎508。多個FSM層級502至508之此連接允許階層之每一層級實施不同狀態機。在某些實例性HFSM中,階層之每一層級對不同類型之型樣敏感。在此等實例性HFSM中,如在HFSM 500中,階層層級之此分離允許HFSM實施低層級辨識,該低層級辨識傳遞穿過階層之各個層級以達成較高層級辨識。在一項實例中,在HFSM 500之一結果匯流排516上提供一結果,諸如,例如一特定型樣(例如,一片語)之識別。在其他實例中,該結果係來自FSM引擎502、504、506及508中之一或多者之狀態位元之一組合。
如圖7中所展示,一種用於以一階層方式連接個別FSM引擎之方法係連接一個FSM引擎之輸出至階層中之下一較高層級FSM引擎之輸入。應理解,可實施一HFSM 500,其中來自一個層級之狀態資訊提供(例如,向前或向後饋送)至階層中之任一其他層級。舉例而言,來自FSM引擎502之狀態資訊可發送至FSM引擎506,而來自FSM引擎508之狀態資訊可回饋至FSM引擎502。籠統而言,來自一或多個FSM引擎之狀態資訊可提供至其他FSM引擎中之一或多者(例如,全部),不管那一種組態被認為係必需的。
圖7中所展示之實例對應於經寫入語言之一視覺識別。隨著處理進行至階層之較高層級,對資料串流之累積知悉相應增長。在所展示之實施例中,每一層級處之FSM引擎(FSM引擎502、504、506及508)經級聯以實現階層辨識能力。階層之每一連續層級可實施應用於先前層級之輸出之新規則(型樣簽章)。以此方式,可基於對極基本的基元資訊之偵測來識別高度詳細之物件。
舉例而言,至層級1(例如,第一FSM引擎502)之原始資料輸入串流(raw data input stream)可包含一影像之像素資訊(例如,不管一既定位元係黑色/白色還是接通/關斷)。FSM引擎502可經程式化以辨識(例如,識別)該等位元所形成之基元型樣。在一項實例中,FSM引擎502經組態以識別毗鄰位元之一群組何時形成垂直線、水平線、弧等。此等型樣中之每一者可由來自FSM引擎502之一單獨輸出位元(或信號)識別。舉例而言,當FSM引擎502辨識出含至少3個位元之一垂直線時,一高信號(例如,邏輯1)可在一輸出字組之一第一位元上發送至FSM引擎504。當FSM引擎502識別出含至少3個位元之一水平線時,一高信號可在一輸出字組之一第二位元上發送至FSM引擎504。
FSM引擎504同時可經程式化以識別由來自FSM引擎502之輸出510形成之型樣。舉例而言,FSM引擎504可經程式化以識別FSM引擎502所識別之基元型樣(線、弧等)之組合所形成之型樣。舉例而言,FSM引擎504可經程式化以識別一水平線與一垂直線何時交叉從而形成字母「t」。如上文所提及,使用FSM引擎504所實施之HFSM 500對來自FSM引擎502之輸出做出反應。因此藉由識別來自FSM引擎502之輸出位元中之型樣來識別基元型樣之組合。
來自FSM引擎504之輸出512然後輸入至FSM引擎506中,FSM引擎506可自FSM引擎504所識別之字母之組合識別字。然後第四層級(FSM引擎508)可識別FSM引擎506所識別之字所形成之片語。因此,較高層級可經程式化以識別較低層級輸出中之型樣。另外,較低層級可經程式化以識別構成在較高層級中所識別之型樣(回饋至較低層級)之分量。
對字母之視覺識別用作一實例。然而本文所述之階層方法及系統可應用於其他資料。舉例而言,對對應於聲音之資料之階層處理可自層級1處之音素之組合識別音節及自層級2處之音節之組合識別字。在其他實例中,階層處理可應用於自身係以一階層方式構建之機器資料。
當實施一HPRP或HFSM(諸如HFSM 500)時,可遇到之一個問題係輸入資料與輸出資料之間的不對稱關係。當被實施之狀態機變得足夠大時,此不對稱加劇。對於所處理之每一輸入符號而言,一FSM引擎之狀態向量可回應於該輸入符號而改變。在一項實施例中,每一FSM包括(例如)多達2至16次冪(64 K)狀態。若每一狀態在狀態向量中具有一對應數位,則狀態向量將係64 K位元長。可難以在FSM引擎之間傳遞彼長度之向量。接下來將闡述減小輸入資料之大小與輸出資料之大小之間的此不對稱之方法。
在一項實施例中,在一匯流排上於FSM引擎之間發送資料。一N位元寬之匯流排可在64 Kb/N循環中傳遞一64 Kb狀態向量。在其他實施例中,該狀態向量經壓縮以使得僅向量中回應於一輸入符號而改變之數位傳播至其他FSM引擎。舉例而言,每一匯流排循環可包括一數位在於先前符號循環中已改變之狀態向量中之位置。在此情形中,該輸出可稱作一差向量。
在又另一實施例中,每一FSM引擎經設計以僅發送來自狀態向量之數位之一子組至其他FSM引擎。在一種此類實施例中,每一FSM引擎經程式化以使得傳遞至其他FSM引擎之唯一狀態資訊係最終狀態之狀態資訊。在一般情形中,最終狀態之數目小於狀態之總數目。(例如)一PRP 32中最終狀態對總狀態之比率係相依於在PRP中所實施之狀態機。舉例而言,比率可高(1:5)或相當低(1:10,000)。
在最終狀態對總狀態之比率係1:10且狀態向量係64 Kb之一實際實例中,此意味著一輸出向量將係64 Kb/10或6,554個位元。在此實例中,PRP之每一輸入循環(8個位元符號)將產生6,554個位元之一對應輸出向量。
對於前進之實例而言,吾人將使用其中ASCII字元集係輸入(符號)語言之一實例。在此情形中,每一輸入符號係由一8位元二進制字組表示。在替代實施例中,諸如在每一輸入符號係一N位元二進制字組之情形下可使用其他符號。
舉例而言,在一項實施例中,發送至(諸如)圖2中所繪示之一HPRP 30中之第二層級PRP 32之輸出向量可僅表示第一層級PRP 32之最終狀態。在另一實例中,在(諸如)圖7中所繪示之一HFSM 500中,FSM引擎504可產生表示其最終狀態之一輸出向量並在輸出匯流排514上將該輸出向量發送至FSM引擎506。在一種此類實例中,輸出匯流排514係一8位元寬匯流排。使用自先前實例所引用之8:6,554比率,提供(例如,傳送)輸出向量之6,554個位元所需要之循環之數目將係6,554/8或820個循環。亦即,階層之每一連續層級將需要820個輸入循環來處理來自先前層級之輸出字組。此效應線性地漣波穿過階層,使得每一連續狀態將需要820個輸入循環來解析其輸入字組。在此情形中,在既定比率下,PRP之一6層級階層將需要4,100(5x820)個輸入循環以允許輸入符號漣波穿過直至在最高層級處產生一結果為止。此等數目僅用作一實例。若最終狀態對總狀態之比率增加,則漣波時間將增加。同樣,若階層之層級之數目增加,則漣波時間將隨著每一連續層級線性增加。
基於上文所使用之實例,若干個數量級之一延遲(相對於輸入循環)係可能的供一HFSM或HPRP產生一結果。此類型之延遲可在即時應用中不可接受。如上所述,可藉由(例如)增加匯流排之大小來減小傳送狀態資訊所需要之循環之數目。亦可減少匯流排循環時間以減少傳送狀態資訊所需要之時間。此外,如上所述,可發送僅識別由於最後的符號而改變之狀態向量之數位之一差向量。亦可使用其他無損壓縮機制。
接下來論述減小此延遲之其他方法,諸如實施輸入與輸出之間的一1:1關係。
在一HFSM(諸如HFSM 500)中獲得輸入與輸出之間的一1:1關係之一種方法係使輸入匯流排518與輸出匯流排510在大小(寬度)上相等。輸出匯流排510之寬度可由HFSM 500自身判定。舉例而言,輸出匯流排510之大小可由狀態機引擎502中之最終狀態之數目判定。一般而言,一FSM引擎經程式化以同時辨識諸多不同型樣。此等型樣中之每一者可實施為一個別狀態機。以此方式,一FSM引擎可實施一組狀態機,其全部並行運行。
圖8以圖解方式展示單個FSM引擎內全部並行運行之狀態機532之一群組530之一實例。在圖8中,展示8個狀態機532。實際上,一FSM引擎可實施成千上萬個個別狀態機。
步驟1:狀態機輸出之彙總(最終狀態)
如圖9中所展示,每一個別狀態機532可具有一或多個最終狀態208。雖然可存在若干個最終狀態208,但一特定狀態機532之最終狀態中之任一者具有相同或一相關含義。換言之,若到達一狀態機532之最終狀態208中之任一者,則認為該狀態機具有一匹配。實際上,此意指可(諸如)藉由使用一「或」閘540將對應於一單個狀態機532之最終狀態208之可程式化元件之輸出耦合在一起而彙總(例如,在一起進行「或」運算)該等最終狀態以提供如圖9中所展示之一單個輸出542。在圖9中所展示之實例中,狀態機532將三個最終狀態208在一起進行「或」運算。可理解,可適用其他邏輯來彙總最終狀態208。
在一項實例中,一旦每一狀態機532之最終狀態208已經彙總(例如,經「或」運算),則結果分組(例如,收集)成含N個狀態機532之邏輯群組,其中N等於各別輸入符號語言中之數位之數目。在其中一第一層級之輸入符號語言包含8位元輸入字組之一實例中,8個個別狀態機輸出542可經彙總以提供被提供至階層之下一層級之輸入符號546中之一者。在圖7中,舉例而言,僅階層之第一層級接收與一標準語言(ASCII或其他)相關之輸入符號。則在彼實例中,FSM引擎502可產生在一輸出匯流排510上提供至FSM引擎504之一8位元輸出向量。階層之後續層級接收具有先前層級所判定之含義之輸入符號。
一旦狀態機已經分組(諸如8個一組之若干個組),則正規化輸入向量及輸出向量之第一層級已完成。使用來自本發明中所使用之實例之數目,用103個8位元字組來表示820個最終狀態。此等8位元字組中之每一者編碼8個個別狀態機532之最終狀態之狀況。記住在此8位元輸出向量中所編碼之最終狀態之總數目可遠大於8個。此乃因對同一狀態機532中之最終狀態208所執行之「或」運算函式可將8個以上狀態在一起進行「或」運算。
在一項實施例中,每一FSM引擎包括一N位元寬之輸入埠及一N位元寬之輸出埠。在一項實施例中,來自每一層級之狀態資訊(例如,以一輸出向量之形式,諸如一狀態向量之全部或一部分,或一差向量)透過一N位元匯流排散佈至下一FSM引擎。舉例而言,FSM引擎502使用N位元輸出匯流排510將狀態資訊散佈至FSM引擎504。在一項實施例中將相同N位元輸出向量提供(例如,散佈)至FSM引擎504中之每一狀態機。在另一實施例中,FSM引擎504中之可程式化元件分組成群組(例如,區塊)且FSM引擎502之輸出埠將一N位元字組序列寫入至FSM引擎504且以一預定義方式(諸如順序地)將字組序列散佈至FSM引擎504中之狀態機元件區塊。此一方法允許額外狀態資訊散佈至FSM引擎504,但需要額外匯流排循環來傳送完整的狀態資訊。
在一項實施例中,藉由發送包括另一FSM引擎之一指示之位址資訊及該FSM引擎內之群組之位址而將一個可程式化元件群組之狀態資訊發送至該FSM引擎中之一可程式化元件群組。彼資訊可在(例如)圖7中之匯流排510上散佈。
步驟2:PRP上之輸入匯流排之數目之擴充
一FSM 12或一PRP 32之一項實施方案具有廣播一輸入符號至在PRP中所實施之全部狀態機532之一單個串流輸入。然而,FSM 12及PRP 32之定義可延伸至實施一個以上串流輸入(分別係16個及36個)。在先前所引用之實例中,獨立串流輸入之總數目將等於103。舉例而言,為了完整地實施,一HPRP則將需要103個8位元輸入或用於每一PRP 32之820個位元之一輸入匯流排。
在一項實施例中,在一可程式化元件(諸如狀態機元件(SME))陣列560上實施FSM 12及PRP 32。在一項實例中,每一SME係在一同質二維陣列560中。此陣列560可細分成個別區,其中每一區具有其自己的專用串流輸入(分別係16個及36個)。圖11展示SME元件之此二維陣列560。舉例而言,圖11細分成一SME群組562陣列560,其中每一SME群組562可對應於有限狀態機引擎800中之一區塊802。整個陣列560可包括(例如)16x16個SME群組(總共256個群組),其中每一群組562包括128個含兩個SME之群組(GOT)(例如,其中每一群組562包括16個GOT列,諸如圖16中所圖解說明之列806)。
在某些實施例中,每一GOT列含有8個GOT,一(若干個)額外可程式化元件(例如,布林邏輯或一計數器)且可提供兩個輸出至輸出匯流排18、38。若跨越FSM 12及PRP 32使用全部可用輸出,則此一陣列可具有(例如)多達8192個位元以驅動至下一層級PRP 32。
當諸如圖7中所展示而建構一HFSM 500時,兩個不同半導體裝置(諸如FSM引擎502及504)中之二維SME群組562陣列可連接在一起。存在將兩個半導體裝置連接在一起之各種手段。舉例而言,當I/O計數變得足夠高時,可利用晶粒至晶粒互連。在一項實例性實施方案中,如圖12中所展示,一HPRP 570中之256個SME群組562中之每一者可具有一晶粒之底部上之一8位元介面(例如,輸入匯流排36、42)及該晶粒之頂部上之一8位元介面(例如,輸出匯流排38、40)。當將此等介面置於預定義位置中時,PRP(PRP1)582之一個層級可直接堆疊於一較低層級PRP(PRP0)580之頂部上,其中輸入及輸出介面自然地對準並使用互連件(例如,穿矽通孔)連接在一起,諸如互連件574。
此對準有效地形成一SME行之概念(由輸入路徑572、輸出路徑578以及互連件574及576定義),其中該行之每一層級表示含於同一晶粒上之一SME群組。繼續使用先前所論述之實例性數目,在每一PRP層級(580、582及584)上,一SME群組562可由在先前層級上實施之多達8個狀態機驅動。來自先前層級之該8個狀態機可任意複雜,一直至SME群組562所施加之限制。圖12展示三層級HPRP之一實例(邊緣視圖),其中突出展示SME行中之一者。在每一層級中,SME之一分組將來自彼層級之狀態資訊(例如,一經編碼之8位元字組)提供至下一較高層級。
總而言之,當以此方式組態時,一HPRP可提供具有PRP階層之每一層級之僅一個輸入時脈循環之延遲之實質瞬時結果。因輸入字組(word)與輸出字組之不對稱而引起之問題得以解決且整個階層可與串流輸入572同步操作。
在某些實施例中,來自一個FSM引擎12之狀態資訊發送至一個以上其他FSM引擎12。圖6中展示此一實施例。參照圖12中所圖解說明之HPRP 570闡述此一實施例,舉例而言,來自PRP 580之狀態資訊可發送至PRP 584。在一種此類實施例中,互連件576及574形成傳輸狀態資訊至行中之區塊中之任一者之一匯流排。舉例而言,互連件574及576可包含一或多個穿通孔互連件,且可提供於每一行中以用於傳遞狀態資訊至非毗鄰PRP。在一種此類實施例中,堆疊中之每一PRP連接至該等穿通孔並自該等穿通孔接收資訊。在另一實施例中,在製造製程期間PRP之輸入根據需要選擇性地連接至穿通孔。
在其他實施例中,來自一個SME群組之狀態資訊散佈至同一PRP 32中之毗鄰區塊,且透過彼等區塊散佈至其他PRP 32(例如,在同一區塊行中)。
在一項實施例中,來自一或多個PRP 32之狀態資訊或自彼狀態資訊導出之資訊用以重新程式化階層中之其他PRP 32。圖13圖解說明四層級階層之一實例,其使用回饋來重新程式化該階層之部分。一般而言,可基於來自一較高或較低層級有限狀態機引擎之一輸出或基於其自己的輸出來重新程式化一既定PRP 32(例如,第一有限狀態機引擎602)。因此,第一有限狀態機引擎602可改變以適用於在運行時間期間改變條件。在一實例中,回饋可供較低層級基於較高層級進行學習(被重新程式化)。將有限狀態機引擎602用作一實例,回饋可係在程式化介面602B處接收且可係用於有限狀態機引擎602之一新的或經更新程式之形式。在一實例中,該經更新程式可重新程式化某些或全部有限狀態機引擎602。
藉助四個有限狀態機引擎602、604、606、608來實施圖13中之四層級階層600,該四個有限狀態機引擎中之每一者具有一輸入埠602A、604A、606A、608A、一程式化介面602B、604B、606C、608B及一輸出埠602C、604C、606C、608C。第一有限狀態機引擎602實施階層600之第一層級且提供一輸出至實施階層600之第二層級之第二有限狀態機引擎604。第三及第四有限狀態機引擎606、608同樣實施階層600之第三及第四層級。在一實例中,基於關於第一有限狀態機引擎602所接收之輸入資料對階層600之分析而將來自第四有限狀態機引擎608之輸出作為階層600之一輸出發送至一外部裝置。因此,來自第四有限狀態機引擎608之輸出對應於階層600之集體輸出。在其他實例中,來自有限狀態機引擎602、604或606中之其他有限狀態機引擎之輸出可對應於階層600之集體輸出。
來自第二、第三及第四有限狀態機引擎604、606、608之輸出可各自回饋至下面層級處之有限狀態機引擎602、604、606之程式化介面602B、604B、606B。舉例而言,來自第四有限狀態機引擎608之輸出回饋至第三有限狀態機引擎606之程式化介面606B中。因此可基於來自第四有限狀態機引擎608之輸出而重新程式化第三有限狀態機引擎606。因此,第三有限狀態機引擎606可在運行時間期間 修改其程式。可分別基於來自第二及第三有限狀態機引擎604、606之輸出在運行時間期間類似地重新程式化第一有限狀態機引擎602及第二有限狀態機引擎604。
在一實例中,來自一輸出(其來自一有限狀態機引擎604、606、608)之回饋經處理(例如,分析及編譯)以形成一程式以用於重新程式化一有限狀態機引擎602、604、606。舉例而言,來自有限狀態機引擎608之輸出可在被發送至程式化介面606B之前由一處理裝置614分析並編譯。處理裝置614可基於來自有限狀態機引擎608之輸出產生用於有限狀態機引擎606之經更新程式。處理裝置614可分析該輸出並編譯用於第三有限狀態機引擎606之經更新程式。然後可將該經更新程式透過程式化介面606B載入至第三有限狀態機引擎606上以重新程式化第三有限狀態機引擎606。在一實例中,該經更新程式可僅含有自當前程式之一局部改變。因此,在一實例中,一經更新程式僅替代一有限狀態機引擎602、604、606、608上之一當前程式之一部分。在另一實例中,一經更新程式替代一當前程式之全部或一大部分。同樣,處理裝置610、612可基於來自第二及第三有限狀態機引擎604、606之輸出以一類似方式分析並編譯回饋。可藉助一或多個額外有限狀態機引擎來實施或可藉助一不同類型之機器(例如,具有一馮.諾伊曼(von Nuemann)架構之一電腦)來實施一處理裝置610、612、614。
在某些實例中,處理裝置610、612、614在編譯新的程式之前分析來自一較高層級之輸出。在一實例中,處理裝置610、612、614分析該輸出以判定如何更新較低層級程式且然後基於該分析編譯新的或經更新較低層級程式。雖然在階層600中,一既定有限狀態機引擎處之回饋係自該既定有限狀態機引擎正上方之層級接收,但回饋可係自任一層級有限狀態機引擎至一較高、較低或同一層級處之另一有限狀態機引擎。舉例而言,回饋可係自一有限狀態機引擎之輸出或自相同、較高或較低層級處之另一有限狀態機引擎之輸出在彼同一有限狀態機引擎之一程式化輸入處接收。另外,一有限狀態機引擎可自多個不同有限狀態機引擎接收回饋。基於回饋對有限狀態機引擎之重新程式化可與對輸入資料中之型樣識別在時間上斷開(例如,與原始資料(raw data)之處理不即時)。
沿階層向下發送回資訊以影響較低層級之重新程式化之一目的可係使得較低層級在辨別所關注型樣時可變得更高效。在某些實例中,在可能時避免發送資訊至較高層級之處理程序,因此認識到傳送資訊至階層之較高層級花費時間。在某些實例中,較高層級可基本上用以解析對於系統而言係新型樣之型樣之識別。此可類似於在一生物大腦之大腦新皮質中發生之所使用處理程序。在一實例中,若可在較低層級處完全解析一型樣,則應這樣做。回饋機制係傳送「學習」至階層之較低層級之一種方法。沿階層向下回推送資訊之此處理程序將幫助保留階層之上部層級以用於處理新的或不熟悉的型樣。此外,可藉由減小穿過階層之各個層級之資料傳送量來加速整個辨識處理程序。
回饋可使階層之較低層級對輸入處之資料串流更劇烈地敏感。此「向下推送」資訊之一結果係可在階層之較低層級處做出決定且該做出決定可極快地完成。因此在一實例中,來自較低層級有限狀態機引擎(例如,第一有限狀態機引擎602)之輸出可對應於自階層600至另一裝置之集體輸出連同來自第四有限狀態機引擎608之輸出。外部裝置可(例如)監測來自此等有限狀態機引擎602、608中之每一者之輸出以判定階層600何時已識別出型樣。
在一實例中,回饋資訊可包括識別對應於所分析之資料串流之資訊。舉例而言,識別資訊可包括資料之一識別特性、資料之格式、資料之一協定及/或任一其他類型之識別資訊。該識別資訊可由(例如)處理裝置610收集、分析及使用以調適用於輸入資料之分析方法。然後可藉助經調適之分析方法來程式化一有限狀態機引擎。識別資訊可包括(例如)輸入資料之一語言。有限狀態機引擎可首先經程式化以判定輸入資料之一語言且一旦已識別對應於該輸入之一語言則就在運行時間期間對該有限狀態機引擎進行調適(例如,重新程式化)。用於有限狀態機引擎之經調適分析方法可更特定地對應於用於所識別語言之分析方法。最後,有限狀態機引擎可使用經調適之分析方法來分析未來的輸入資料。回饋處理程序可反覆以便可在輸入資料中找到額外識別資訊以允許進一步調適分析方法。
用於載入至一有限狀態機引擎上之程式(本文亦稱作「影像」)可由下文關於圖19所論述之一編譯器產生。一般而言,編譯可係一計算密集的處理程序,且可在第一次編譯型樣簽章之大資料庫時最明顯。在運行時間操作中,較高層級之有限狀態機引擎可正在以用於較低層級有限狀態機引擎之一增量程式更新之形式提供回饋至較低層級。因此,至較低層級有限狀態機引擎之回饋資訊可係對一原始程式(original program)之小得多之增量更新,該等增量更新編譯起來係較不計算密集的。
圖14圖解說明藉助四個有限狀態機引擎702、704、706、708所實施之四層級階層700之另一實例。此處,第二、第三及第四層級有限狀態機引擎704、706、708自較低層級之輸出接收輸入資料以及原始資料串流。因此,層級2、3及4可自來自較低層級與原始資料之型樣之組合識別型樣。
自圖13及圖14可見,有限狀態機引擎幾乎可以任一方式級聯,其中至階層之原始資料輸入以及來自一有限狀態機引擎之一輸出可發送至任一其他有限狀態機引擎,包括其自身。此外,來自一既定有限狀態機引擎之輸出可作為輸入資料及/或作為回饋發送至另一有限狀態機引擎以用於更新用於一有限狀態機引擎之程式。
如上所述,由於一有限狀態機引擎處理一輸入資料串流之一個位元(或字組)之時間,以串列方式級聯有限狀態機引擎可增加透過全部有限狀態機引擎完全處理該輸入資料串流之時間。階層之最低層級通常將接收最低(最細微的)層級之輸入。因此,應預期較低層級比高層級之輸出更活躍。亦即,階層中之每一連續層級可組譯較高層級物件。在一實例中,一有限狀態機引擎具有限制輸入資料可多快速饋送至該有限狀態機引擎之一最大輸入速率。可將此輸入速率視為一單個資料循環。在每一連續資料循環上,該有限狀態機引擎具有啟動諸多最終狀態之潛能。這可致使一有限狀態機引擎(尤其在階層之最低層級處)產生顯著量之輸出(匹配)資料。舉例而言,若輸入作為一位元組串流提供至最低層級有限狀態機引擎,則在任一既定資料循環上,該有限狀態機引擎可產生多個位元組之狀態資訊。若一個位元組之資訊可產生多個位元組之狀態資訊,則有限狀態機引擎之整個階層應同步以使得資訊沿階層向上傳遞。然而,回饋無需同步,在一較低層級處越快速地接收回饋,則該較低層級可越快速地調適且分析越高效。
作為一實例,用於階層之每一層級(藉助一單個有限狀態機引擎實施)之一最大大小輸出可等於1024個位元組且階層之一深度可等於4個層級。用於一有限狀態機引擎之輸入資料串流資料速率可等於128 MB/秒。在此等條件下,可在7.63微秒中橫穿階層之每一層級。在四層級階層之情形下,有限狀態機引擎之整個堆疊之總趨穩時間將係7.63微秒之4倍或30.5微秒。在30.5微秒之趨穩時間之情形下,暗示輸入資料頻率應限於32 KB/s。
值得注意的是,此高度相依於有限狀態機引擎之組態。有限狀態機引擎可係可組態的以對輸入資料速率對狀態機大小進行折衷。另外,若對產生載入於有限狀態機引擎上之個別影像之編譯器做出對應修改,則可調整至一有限狀態機引擎之輸入字組大小。
在一實例中,可藉助具有一馮‧諾伊曼架構之一機器上之軟體來實施參照圖1至圖14所述之用以實施一或多個FSM之方法。因此,軟體指令可致使一處理器對一原始資料串流實施一第一層級分析FSM。來自該第一層級FSM之輸出然後可由該處理器根據一第二層級FSM來處理,等等。此外,上文所論述之回饋迴圈可由分析來自該FSM之一層級之一輸出並使用該輸出來產生用於該等層級中之一或多者之一新FSM之一處理器實施。
圖15至圖18圖解說明在本文中稱作「FSM引擎800」之一平行機器之一實例。在一實例中,FSM引擎800包含一有限狀態機之一硬體實施方案。因此,FSM引擎800實施對應於一FSM中之複數個狀態之複數個選擇性地可耦合之硬體元件(例如,可程式化元件)。類似於一FSM中之一狀態,一硬體元件可分析一輸入串流並基於該輸入串流啟動一下游硬體元件。
FSM引擎800包括複數個可程式化元件,包括通用元件及專用元件。通用元件可經程式化以實施諸多不同功能。此等通用元件包括以階層方式組織成列806(圖16及圖17中所展示)及區塊802(圖15及圖16中所展示)之SME 804、805(圖18中所展示)。為了在以階層方式組織之SME 804、805之間路由信號,使用可程式化交換器之一階層,其包括區塊間交換器803(圖15及圖16中所展示)、區塊內交換器808(圖9及圖10中所展示)及列內交換器812(圖17中所展示)。一SME 804、805可對應於FSM引擎800所實施之一FSM之一狀態。可藉由使用下文所述之可程式化交換器將SME 804、805耦合在一起。因此,可藉由程式化SME 804、805以對應於狀態之功能且藉由選擇性地將SME 804、805耦合在一起以對應於FSM中之狀態之間的轉變而在FSM引擎800上實施一FSM。
圖15圖解說明一實例性FSM引擎800之一總體視圖。FSM引擎800包括可選擇性地與可程式化區塊間交換器803耦合在一起之複數個區塊802。另外,區塊802可選擇性地耦合至一輸入區塊809(例如,一資料輸入埠)以用於接收信號(例如,資料)並提供該資料至區塊802。區塊802亦可選擇性地耦合至一輸出區塊813(例如,一輸出埠)以用於自區塊802提供信號至一外部裝置(例如,另一FSM引擎800)。FSM引擎800亦可包括一程式化介面811以將一程式(例如,一影像)載入至FSM引擎800上。該影像可程式化(例如,設定)SME 804、805之狀態。亦即,該影像可組態SME 804、805以便以某一方式對輸入區塊809處之一既定輸入做出反應。舉例而言,一SME 804可經設定以在輸入區塊809處接收到字元‘a’時輸出一高信號。
在一實例中,可將輸入區塊809、輸出區塊813及/或程式化介面811實施為暫存器以使得至該等暫存器之寫入提供資料至各別元件或自該等各別元件提供資料。因此,來自儲存於對應於程式化介面811之暫存器中之影像之位元可載入於SME 804、805上。雖然圖15圖解說明一區塊802、輸入區塊809、輸出區塊813與一區塊間交換器803之間的某一數目個導體(例如,導線、跡線),但應理解在其他實例中可使用更少或更多導體。
圖16圖解說明一區塊802之一實例。一區塊802可包括可選擇性地與可程式化區塊內交換器808耦合在一起之複數個列806。另外,一列806可選擇性地藉助區塊間交換器803耦合至另一區塊802內之另一列806。在一實例中,包括緩衝器801以控制去往/來自區塊間交換器803之信號之計時。一列806包括組織成元件對(本文中稱作含兩個元件之群組(GOT)810)之複數個SME 804、805。在一實例中,一區塊802包含十六(16)個列806。
圖17圖解說明一列806之一實例。一GOT 810可選擇性地藉由可程式化列內交換器812耦合至列806內之其他GOT 810及任何其他專用元件824。一GOT 810亦可藉助區塊內交換器808耦合至其他列806中之其他GOT 810,或藉助一區塊間交換器803耦合至其他區塊802中之其他GOT 810。在一實例中,一GOT 810具有一第一輸入及第二輸入814、816及一輸出818。第一輸入814耦合至GOT 810之一第一SME 804且第二輸入816耦合至GOT 810之一第二SME 805。
在一實例中,列806包括第一列互連導體820及第二複數個列互連導體822。在一實例中,一GOT 810之一輸入814、816可耦合至一或多個列互連導體820、822,且一輸 出818可耦合至一個列互連導體820、822。在一實例中,第一複數個列互連導體820可耦合至列806內之每一GOT 810之每一SME 804。第二複數個列互連導體822可耦合至列806內之每一GOT 810之一個SME 804,但不可耦合至GOT 810之另一SME 805。在一實例中,該第二複數個列互連導體822之一前半部可耦合至一列806內之SME 804之前半部(來自每一GOT 810之一個SME 804)且該第二複數個列互連導體822之一後半部可耦合至一列806內之SME 805之一後半部(來自每一GOT 810之另一SME 804)。該第二複數個列互連導體822與SME 804、805之間的有限連接性在本文中稱作「同位」。在一實例中,列806亦可包括一專用元件824,諸如一計數器、一可程式化布林邏輯元件、一場可程式化閘陣列(FPGA)、一專用積體電路(ASIC)、一可程式化處理器(例如,一微處理器)及其他元件。
在一實例中,專用元件824包括一計數器。在一實例中,計數器(如專用元件824)包含一12位元可程式化遞減計數器。12位元可程式化計數器(如專用元件824)具有一計數輸入、一重設輸入及零計數輸出。計數輸入在被斷定時使計數器(如專用元件824)之值減1。重設輸入在被斷定時致使計數器(如專用元件824)自一相關聯暫存器載入一初始值。對於12位元計數器(如專用元件824)而言,可載入多達12位元之一數目作為該初始值。當計數器(如專用元件824)之值減至零(0)時,斷定零計數輸出。計數器(如專用元件824)亦具有至少兩種模式,脈衝及保持。當計數器(如專用元件824)設定至脈衝模式時,在計數器(如專用 元件824)減至零時於時脈循環期間斷定零計數輸出,且在下一時脈循環處不再斷定零計數輸出。當計數器(如專用元件824)設定至保持模式時,在計數器(如專用元件824)減至零時於時脈循環期間斷定零計數輸出,且保持斷定直至計數器(如專用元件824)由被斷定之重設輸出重設為止。在一實例中,專用元件824包括布林邏輯。在某些實例中,此布林邏輯可用以自FSM引擎800中之終端狀態SME抽取資訊。所抽取之資訊可用以傳送狀態資訊至其他FSM引擎800及/或傳送用以重新程式化FSM引擎800或重新程式化另一FSM引擎800之程式化資訊。
圖18圖解說明一GOT 810之一實例。GOT 810包括具有輸入814、816且使其輸出826、828耦合至一「或(OR)」閘830及一3對1多工器842之一第一SME 804及一第二SME 805。3對1多工器842可經設定以將GOT 810之輸出818耦合至第一SME 804、第二SME 805或「或」閘830。「或」閘830可用以將輸出826、828兩者耦合在一起以形成GOT 810之共同輸出818。在一實例中,如上文所論述,第一SME 804及第二SME 805展現出同位,其中第一SME 804之輸入814可耦合至列互連導體822中之某些列互連導體且第二SME 805之輸入816可耦合至其他列互連導體822。在一實例中,可藉由設定交換器840中之任一者或兩者而使一GOT 810內之兩個SME 804、805級聯及/或迴圈回至其自身。可藉由將SME 804、805之輸出826、828耦合至其他SME 804、805之輸入814、816而使SME 804、805級聯。可藉由將輸出826、828耦合至其自己的輸入814、816而使 SME 804、805迴圈回至其自身。因此,第一SME 804之輸出826可不耦合至第一SME 804之輸入814及第二SME 805之輸入816中之任一者、耦合至其中之一者或耦合至其中之兩者。
在一實例中,一狀態機元件804、805包含並聯耦合至一偵測線834之複數個記憶體單元832,諸如通常用於動態隨機存取記憶體(DRAM)中之彼等記憶體單元。一種此種記憶體單元832包含可設定至一資料狀態(諸如對應於一高值或一低值(例如,1或0)之一個資料狀態)之一記憶體單元。記憶體單元832之輸出耦合至偵測線834且至記憶體單元832之輸入基於資料串流線836上之資料接收信號。在一實例中,資料串流線836上之一輸入經解碼以選擇記憶體單元832中之一者。選定記憶體單元832提供其所儲存之資料狀態作為至偵測線834上之一輸出。舉例而言,在資料輸入埠809處所接收之資料可提供至一解碼器(未展示)且該解碼器可選擇資料串流線836中之一者。在一實例中,該解碼器可將一ACSII字元轉換成256個位元中之1。
當一記憶體單元832設定至一高值且資料串流線836上之資料對應於記憶體單元832時,記憶體單元832因此輸出一高信號至偵測線834。當資料串流線836上之資料對應於記憶體單元832且記憶體單元832設定至一低值時,記憶體單元832輸出一低信號至偵測線834。偵測線834上來自記憶體單元832之輸出由一偵測電路838感測。在一實例中,一輸入線814、816上之信號將各別偵測電路838設定至一作 用中或不作用中狀態。當設定至不作用中狀態時,偵測電路838在各別輸出826、828上輸出一低信號,而不顧慮各別偵測線834上之信號。當設定至一作用中狀態時,偵測電路838在自各別SME 804、805之記憶體單元832中之一者偵測到一高信號時在各別輸出線826、828上輸出一高信號。當處於作用中狀態中時,偵測電路838在來自各別SME 804、805之全部記憶體單元832之信號為低時在各別輸出線826、828上輸出一低信號。
在一實例中,一SME 804、805包括256個記憶體單元832且每一記憶體單元832耦合至一不同資料串流線836。因此,一SME 804、805可經程式化以在資料串流線836中之選定一或多者在其上具有一高信號時輸出一高信號。舉例而言,SME 804可使一第一記憶體單元832(例如,位元0)設定為高且使全部其他記憶體單元832(例如,位元1至255)設定為低。當各別偵測電路838處於作用中狀態中時,SME 804在對應於位元0之資料串流線836在其上具有一高信號時在輸出826上輸出一高信號。在其他實例中,可藉由將適當記憶體單元832設定至一高值來設定SME 804以在多個資料串流線836中之一者在其上具有一高信號時輸出一高信號。
在一實例中,可藉由自一相關聯暫存器讀取位元而將一記憶體單元832設定至一高值或低值。因此,可藉由將編譯器所創建之一影像儲存至暫存器中並將該等暫存器中之位元載入至相關聯記憶體單元832中來程式化SME 804。在 一實例中,該編譯器所創建之影像包括高與低(例如,1與0)位元之二進制影像。該影像可程式化FSM引擎800以藉由級聯SME 804、805而操作為一FSM。舉例而言,可藉由將偵測電路838設定至作用中狀態而將一第一SME 804設定至一作用中狀態。第一SME 804可經設定以在對應於位元0之資料串流線836在其上具有一高信號時輸出一高信號。第二SME 805可最初設定至一不作用中狀態,但可在作用中時經設定以在對應於位元1之資料串流線836在其上具有一高信號時輸出一高信號。可藉由設定第一SME 804之輸出826以耦合至第二SME 805之輸入816來級聯第一SME 804與第二SME 805。因此,當在對應於位元0之資料串流線836上感測到一高信號時,第一SME 804在輸出826上輸出一高信號且將第二SME 805之偵測電路838設定至一作用中狀態。當在對應於位元1之資料串流線836上感測到一高信號時,第二SME 805在輸出828上輸出一高信號以啟動另一SME 504、SME 805或供自FSM引擎800輸出。
圖19圖解說明一編譯器將原始程式碼轉換成經組態以程式化一平行機器之一影像之一方法1000之一實例。方法1000包括將原始程式碼剖析成一語法樹(區塊1002),將該語法樹轉換成一自動機(automation)(區塊1004),最佳化該自動機(區塊1006),將該自動機轉換成一網路連線表(區塊1008),將該網路連線表置於硬體上(區塊1010),路由該網路連線表(區塊1012)及公佈所得影像(區塊1014)。
在一實例中,編譯器包括允許軟體開發者創建影像以用於實施FSM引擎800上之FSM之一應用程式設計介面(API)。編譯器提供用以將原始程式碼中之一輸入組規則運算式轉換成經組態以程式化FSM引擎800之一影像之方法。可藉由用於具有一馮‧諾伊曼架構之一電腦之指令來實施編譯器。此等指令可致使電腦上之一處理器實施編譯器之功能。舉例而言,該等指令在由處理器執行時可致使處理器對處理器可存取之原始程式碼執行區塊1002、1004、1006、1008、1010、1012及1014中所述之動作。圖20中展示具有一馮‧諾伊曼架構之一實例性電腦且下文對其進行闡述。
在一實例中,原始程式碼描述搜尋字串以用於識別一符號群組內之符號之型樣。為了描述搜尋字串,原始程式碼可包括複數個規則運算式(regex)。一規則運算式可係用於描述一符號搜尋型樣之一字串。規則運算式廣泛地用於各種電腦領域中,諸如程式設計語言、文書編輯器、網路安全及其他領域。在一實例中,編譯器所支援之規則運算式包括用於搜尋未建立的資料之搜尋準則。未建立的資料可包括自由形式之資料且不具有應用於該資料內之字之索引。字可包括該資料內之位元組(其可列印及不可列印)之任一組合。在一實例中,編譯器可支援多種不同原始程式碼語言以用於實施包括Perl(例如,Perl相容規則運算式(PCRE)、PHP、Java及NET語言)之規則運算式。
在區塊1002處,編譯器可剖析原始程式碼以形成關係連接之運算子之一配置,其中不同類型之運算子對應於原始程式碼所實施之不同函式(例如,原始程式碼中之規則運算式所實施之不同函式)。剖析原始程式碼可創建原始程式碼之一通用表示。在一實例中,通用表示包含呈稱作一語法樹之一樹形圖之形式之原始程式碼中之規則運算式的一經編碼表示。本文所述之實例涉及作為一語法樹(亦稱作一「抽象語法樹」)之配置,然而在其他實例中可使用一實體語法樹或其他配置。
如上文所提及,由於編譯器可支援原始程式碼之多種語言,因此剖析將原始程式碼轉換成一非語言特定表示(例如,一語法樹),而不顧慮語言。因此,編譯器進行之進一步處理(區塊1004、1006、1008、1010)可自一共同輸入結構發揮作用,而不顧慮原始程式碼之語言。
如上所述,語法樹包括關係連接之複數個運算子。一語法樹可包括多種不同類型之運算子。亦即,不同運算子可對應於原始程式碼中之規則運算式所實施之不同函式。
在區塊1004處,語法樹轉換成一自動機。一自動機包含一FSM之一軟體模型且可因此分類為確定性的及非確定性的。一確定性自動機在一既定時間具有一單個執行路徑,而一非確定性自動機具有多個同時執行路徑。該自動機包含複數個狀態。為了將語法樹轉換成一自動機,語法樹中之運算子及運算子之間的關係轉換成狀態,其中該等狀態之間具有轉變。在一實例中,可部分地基於FSM引擎800之硬體而轉換該自動機。
在一實例中,用於自動機之輸入符號包括字母、數字0至9及其它可列印字元等符號。在一實例中,輸入符號係由位元組值0至255(包括0及255)表示。在一實例中,一自動機可表示為一有向圖,其中該圖之節點對應於該組狀態。在一實例中,一輸入符號α(亦即δ(p,α))上自狀態p至狀態q之一轉變係由自節點p至節點q之一有向連接展示。在一實例中,一自動機之一倒轉產生一新自動機,其中某一符號α上之每一轉變p→q在同一符號上倒轉q→p。在一倒轉中,開始狀態變成一最終狀態且最終狀態變成開始狀態。在一實例中,一自動機所接受(例如,匹配)之語言係當順序地輸入至該自動機中時將到達一最終狀態之全部可能字元字串組。該自動機所接受之語言中之每一字串追蹤自開始狀態至一或多個最終狀態之一路徑。
在區塊1006處,在建構自動機之後,該自動機經最佳化以除其他之外亦減小其複雜度及大小。可藉由組合冗餘狀態來最佳化該自動機。
在區塊1008處,經最佳化之自動機轉換成一網路連線表。將該自動機轉換成一網路連線表將該自動機之每一狀態映射至FSM引擎800上之一硬體元件(例如,SME 804、805,其他專用元件824)並判定該等硬體元件之間的連接。
在區塊1010處,該網路連線表經擺置以選擇目標裝置之對應於該網路連線表之每一節點之一特定硬體元件(例如,SME 804、805,專用元件824)。在一實例中,擺置基於FSM引擎800之一般輸入及輸出約束條件來選擇每一特定硬體元件。
在區塊1012處,所擺置之網路連線表經路由以判定用於可程式化交換器(例如,區塊間交換器803、區塊內交換器808及列內交換器812)之設定,以便將選定硬體元件耦合在一起以達成網路連線表所描述之連接。在一實例中,藉由判定FSM引擎800之將用以連接選定硬體元件及用於可程式化交換器之設定之特定導體來判定用於可程式化交換器之設定。路由可比區塊1010處之擺置計及硬體元件之間的連接之更多特定限制條件。因此,路由可調整藉由全域擺置所判定之該等硬體元件中之某些硬體元件之位置以便在給出FSM引擎800上之導體之實際限制條件之情形下做出適當連接。
一旦網路連線表經擺置及路由,則該經擺置及路由之網路連線表可轉換成用於一FSM引擎800之程式化之複數個位元。該複數個位元在本文中稱作一影像。
在區塊1014處,編譯器公佈一影像。該影像包含用於程式化FSM引擎800之特定硬體元件及/或可程式化交換器之複數個位元。在其中該影像包含複數個位元(例如,0及1)之實施例中,該影像可稱作二進制影像。該等位元可載入至FSM引擎800上以程式化SME 804、805、專用元件824及可程式化交換器之狀態,以使得經程式化FSM引擎800實施具有原始程式碼所描述之功能性之一FSM。擺置(區塊1010)及路由(區塊1012)可將FSM引擎800中之特定位置處之特定硬體元件映射至自動機中之特定狀態。因此,該影像中之位元可程式化特定硬體元件及/或可程式化交換器 以實施期望功能。在一實例中,可藉由將機器碼保存至一電腦可讀媒體來公佈該影像。在另一實例中,可藉由將該影像顯示於一顯示裝置上來公佈該影像。在又另一實例中,可藉由將該影像發送至另一裝置(諸如用於將該影像載入至FSM引擎800上之一程式化裝置)來公佈該影像。在又另一實例中,可藉由將該影像載入至一平行機器(例如,FSM引擎800)上來公佈該影像。
在一實例中,可藉由將來自一影像之位元值直接載入至SME 804、805及其他專用元件824或藉由將該影像載入至一或多個暫存器中且然後將來自該等暫存器之位元值寫入至SME 804、805及其他專用元件824而將該影像載入至FSM引擎800上。在一實例中,可程式化交換器(例如,區塊間交換器803、區塊內交換器808及列內交換器812)之狀態。在一實例中,FSM引擎800之硬體元件(例如,SME 804、805、其他專用元件824、可程式化交換器803、808、812)經記憶體映射以使得一程式化裝置及/或電腦可藉由將該影像寫入至一或多個記憶體位址而將該影像載入至FSM引擎800上。
本文所述之方法實例可係至少部分地機器或電腦實施的。某些實例可包括藉助指令編碼之一電腦可讀媒體或機器可讀媒體,該等指令可操作以組態一電子裝置以執行以上實例中所述之方法。此等方法之一實施方案可包括程式碼,諸如微碼、組合語言碼、一較高層級語言碼或諸如此類。此程式碼可包括電腦可讀指令以用於執行各種方法。 該程式碼可形成電腦程式產品之部分。此外,該程式碼可在執行期間或在其他時間有形地儲存於一或多個揮發性或非揮發性電腦可讀媒體上。此等電腦可讀媒體可包括(但不限於)硬磁碟、可抽換式磁碟、可抽換式光碟(例如,壓縮光碟及數位視訊碟)、磁盒、記憶卡或棒、隨機存取記憶體(RAM)、唯讀記憶體(ROM)及諸如此類。
圖20大體圖解說明具有一馮.諾伊曼架構之一電腦1500之一實例。在閱讀並理解本發明之內容後,熟習此項技術者將理解可自一基於電腦之系統中之一電腦可讀媒體啟動(launch)一軟體程式以執行該軟體程式中所定義之功能之方式。熟習此項技術者將進一步理解可經採用以創建經設計以實施及執行本文所揭示之方法之一或多個軟體程式之各種程式設計語言。可使用一物件導向語言(諸如Java、C++或一或多種其他語言)以一物件導向格式來結構化程式。另一選擇為,可使用一程序語言(諸如組合、C等)以一程序導向格式來結構化程式。軟體組件可使用熟習此項技術者所熟知之若干種機制(諸如應用程式開發介面或進程間通信技術,包括遠端程序呼叫或其他)中之任一者來通信。各種實施例之教示不限於任一特定程式設計語言或環境。
因此,可實現其他實施例。舉例而言,一製品(諸如一電腦、一記憶體系統、一磁碟或光碟、某一其他儲存裝置或任一類型之電子裝置或系統)可包括耦合至其上儲存有指令1524(例如,電腦程式指令)之一電腦可讀媒體1522(諸 如一記憶體(例如,可抽換式儲存媒體以及包括一電、光學或電磁導體之任一記憶體))之一或多個處理器1502,該等指令在由一或多個處理器1502執行時導致執行關於以上方法所述之動作中之任一者。
電腦1500可採取具有直接及/或使用一匯流排1508耦合至若干個組件之一處理器1502之一電腦系統之形式。此等組件可包括主記憶體1504、靜態或非揮發性記憶體1506及大容量儲存器1516。耦合至處理器1502之其他組件可包括一輸出裝置1510(諸如一視訊顯示器)、一輸入裝置1512(諸如一鍵盤)及一游標控制裝置1514(諸如一滑鼠)。用以將處理器1502及其他組件耦合至一網路1526之一網路介面裝置1520亦可耦合至匯流排1508。可進一步利用若干個熟知的傳送協定(例如,HTTP)中之任一者經由網路介面裝置1520在網路1526上傳輸或接收指令1524。耦合至匯流排1508之此等元件中之任一者可端視欲實現之特定實施例而不存在、單獨存在或以複數數目存在。
在一實例中,處理器1502、記憶體1504、1506或儲存裝置1516中之一或多者可各自包括當被執行時可致使電腦1500執行本文所述之方法中之任何一或多者之指令1524。在替代實施例中,電腦1500作為一獨立裝置操作或可連接(例如,網路)至其他裝置。在一網路環境中,電腦1500可在伺服器-用戶端網路環境中以一伺服器或一用戶端裝置之資格或在一對等(或散佈式)網路環境中作為一對等裝置操作。電腦2000可包括一個人電腦(PC)、一平板PC、一機 上盒(STB)、一個人數位助理(PDA)、一蜂巢式電話、一網路器具、一網路路由器、交換器或橋接器或能夠執行指定欲由彼裝置採取之動作之一組指令(順序或以其他方式)之任一裝置。此外,儘管僅圖解說明一單個電腦1500,但術語「電腦」亦應視為包括個別或共同地執行一組(或多組)指令以執行本文所論述之方法中之任何一或多者之任一裝置集合。
電腦1500亦可包括一輸出控制器1528以用於使用一或多個通信協定(例如,通用串列匯流排(USB)、IEEE 1394等)與周邊裝置通信。輸出控制器1528可(例如)提供一影像至以通信方式耦合至電腦1500之一程式化裝置1530。程式化裝置1530可經組態以程式化一平行機器(例如,平行機器100、FSM引擎800)。在其他實例中,程式化裝置1530可與電腦1500整合在一起並耦合至匯流排1508或可經由網路介面裝置1520或另一裝置與電腦1500通信。
儘管展示電腦可讀媒體1524為一單個媒體,但術語「電腦可讀媒體」應視為包括儲存一或多組指令1524之一單個媒體或多個媒體(例如,一集中式或散佈式資料庫,或相關聯快取記憶體及伺服器,及或各種儲存媒體,諸如處理器1502暫存器、記憶體1504、1506及儲存裝置1516)。術語「電腦可讀媒體」亦應視為包括能夠儲存、編碼或攜載一組指令以供該電腦執行且致使該電腦執行本發明之方法中之任何一或多者或能夠儲存、編碼或攜載此一組指令所利用或與此一組指令相關聯之資料結構之任一媒體。術語「電腦可讀媒體」因此應視為包括(但不限於)有形媒體(諸如固態記憶體)、光學媒體及磁性媒體。
發明摘要經提供以遵循37 C.F.R.第1.72(b)條,其要求將允許讀者探知該技術揭示內容之本質及主旨之一摘要。提交本摘要係基於以下理解:其並非將用以限制或解釋申請專利範圍之範疇或含義。以下申請專利範圍藉此併入至該詳細說明中,其中每一請求項自身作為一單獨實施例。
實例性實施例
實例1包括一種可程式化裝置,其具有複數個可程式化元件,其中該等可程式化元件經組態以實施一或多個有限狀態機,其中該複數個可程式化元件經組態以接收一N數位輸入且依據該N數位輸入提供一M數位輸出,其中該M數位輸出包括來自少於全部可程式化元件之狀態資訊。
實例2包括一種階層平行機器,其具有:一第一平行機器,其包含複數個可程式化元件,其中該等可程式化元件經組態以實施一或多個有限狀態機,其中該複數個可程式化元件經組態以接收一N數位輸入且依據該N數位輸入提供一M數位輸出,其中該M數位輸出包括來自少於全部可程式化元件之狀態資訊;及一第二平行機器,其經組態以接收並處理該M數位輸出之至少部分。
實例3包括一種可程式化裝置,其具有複數個可程式化元件,其中該等可程式化元件經組態以實施一或多個有限狀態機,其中該複數個可程式化元件經組態以接收一N數位輸入且依據該N數位輸入提供一M數位輸出,其中該M數位輸出係藉由壓縮來自該等可程式化元件中之每一者之狀態資訊而形成。
實例4包括一種階層平行機器,其具有:一第一平行機器,其包含複數個可程式化元件,其中該等可程式化元件經組態以實施一或多個有限狀態機,其中該複數個可程式化元件經組態以接收一N數位輸入且依據該N數位輸入提供一M數位輸出,其中該M數位輸出係藉由壓縮來自該等可程式化元件中之每一者之狀態資訊而形成。
實例5包括一種將來自一平行機器之狀態資訊提供至另一裝置之方法,其中該平行機器包括複數個可程式化元件,其中該等可程式化元件中之每一者經組態以具有一對應狀態。該方法包括:判定狀態資訊,其中該狀態資訊包含該平行機器中之該等可程式化元件中之每一者之狀態;壓縮該狀態資訊;及提供該經壓縮狀態資訊至另一裝置。
實例6包括一種階層平行機器,其具有具有至少一個N數位輸入及複數個N數位輸出之一第一層級平行機器,其中該等N數位輸出中之每一者對應於在該第一層級平行機器上實施之N個狀態機之一各別群組。
實例7包括一種平行機器,其包含經組態以實施至少一個有限狀態機之複數個可程式化元件。該平行機器經組態以:判定狀態資訊,其中該狀態資訊包含該等可程式化元件中之每一者之狀態;壓縮該狀態資訊;及提供該經壓縮狀態資訊至另一裝置。
在實例8中,實例1至7中之任一者之標的物可視情況包括其中該複數個可程式化元件包含兩個或兩個以上可程式化元件群組中之一者。
在實例9中,實例1至8之任一者之標的物可視情況包括:一N數位輸入介面,其耦合至該一個可程式化元件群組且經組態以接收該N數位輸入;及一M數位輸出介面,其耦合至該一個可程式化元件群組且經組態以提供該M數位輸出
在實例10中,實例1至9中之任一者之標的物可視情況包括其中該一個可程式化元件群組包含一可程式化元件區塊。
在實例11中,實例1至10中之任一者之標的物可視情況包括其中該可程式化元件區塊包含複數個可程式化元件列,其中該等列中之每一者耦合至複數個區塊內交換器中之一各別者。
在實例12中,實例1至11中之任一者之標的物可視情況包括其中該等列中之每一者中之可程式化元件包含:複數個含兩個狀態機元件之群組;及另一可程式化元件。
在實例13中,實例1至12中之任一者之標的物可視情況包括:一可程式化交換器,其經組態以選擇性地將該一個可程式化元件群組耦合至該等可程式化元件群組中之另一者;一輸入埠;及/或一輸出埠。
在實例14中,實例1至13中之任一者之標的物可視情況包括一暫存器,該暫存器經組態以儲存經組態以程式化該複數個可程式化元件及該複數個可程式化交換器之一程式。
在實例15中,實例1至14中之任一者之標的物可視情況包括其中N等於M。
在實例16中,實例1至15中之任一者之標的物可視情況包括其中M係N之一整數倍數。
在實例17中,實例1至16中之任一者之標的物可視情況包括「或」邏輯,該「或」邏輯經組態以彙總來自用以實施該等有限狀態機中之一相同者之該等可程式化元件中之兩者或兩者以上之輸出。
在實例18中,實例1至17中之任一者之標的物可視情況包括其中該等可程式化元件經組態以實施含N個狀態機之一邏輯群組,其中該N個狀態機之該等輸出經彙總以提供該M數位輸出。
在實例19中,實例1至18中之任一者之標的物可視情況包括其中該邏輯包含一「或」閘。
在實例20中,實例1至19中之任一者之標的物可視情況包括其中包括於該M數位輸出中之該狀態資訊包含經壓縮狀態資訊。
在實例21中,實例1至20中之任一者之標的物可視情況包括其中該複數個可程式化元件包含狀態機元件。
在實例22中,實例1至21中之任一者之標的物可視情況包括其中該M數位輸出包含一差向量。
在實例23中,實例1至22中之任一者之標的物可視情況包括其中該所實施之一或多個有限狀態機中之每一狀態對應於一狀態向量中之一各別數位,且其中該差向量僅包括該狀態向量中回應於提供至該可程式化裝置之一輸入符號而改變之彼等數位。
在實例24中,實例1至23中之任一者之標的物可視情況包括其中該所實施之一或多個有限狀態機中之每一狀態對應於一狀態向量中之一各別數位,且其中該M數位輸出僅包含該狀態向量中之該等數位之一子組。
在實例25中,實例1至24中之任一者之標的物可視情況包括其中該等數位之該子組包含對應於該一或多個有限狀態機中之最終狀態之彼等數位。
在實例26中,實例1至25中之任一者之標的物可視情況包括其中在該裝置中所實施之全部狀態機接收該N數位輸入。
在實例27中,實例1至26中之任一者之標的物可視情況包括其中該複數個可程式化元件包含兩個或兩個以上可程式化元件群組中之一者,其中該等群組中之每一者具有其自己的專用輸入。
在實例28中,實例1至27中之任一者之標的物可視情況包括其中該N數位輸入係在一半導體晶粒之一底部上,且其中該M數位輸出係在該半導體晶粒之一頂部上。
在實例29中,實例1至28中之任一者之標的物可視情況包括其中該複數個可程式化元件包含兩個或兩個以上可程式化元件群組中之一者,且其中該可程式化裝置經組態以將來自該等群組中之一者之狀態資訊提供至該可程式化裝置中之該等群組中之另一者。
在實例30中,實例1至29中之任一者之標的物可視情況包括其中該第二平行機器經組態以接收並處理該整個M數位輸出。
在實例31中,實例1至30中之任一者之標的物可視情況包括:一輸入匯流排,其耦合至該第一平行機器且經組態以提供該N數位輸入;及一輸出匯流排,其耦合於該第一平行機器與該第二平行機器之間,該輸出匯流排經組態以提供該M數位輸出之至少部分至該第二平行機器。
在實例32中,實例1至31中之任一者之標的物可視情況包括其中該輸入匯流排與輸出匯流排在大小上相等。
在實例33中,實例1至32中之任一者之標的物可視情況包括其中該第一平行機器及該第二平行機器中之該等對應群組係由一各別互連件群組耦合。
在實例34中,實例1至33中之任一者之標的物可視情況包括其中將該M數位輸出提供至在該第二平行機器中所實施之每一狀態機。
在實例35中,實例1至34中之任一者之標的物可視情況包括其中該第二平行機器包含分組成複數個群組之複數個可程式化元件,其中根據一預定義方式將該M數位輸出提供至該等群組中之一各別者。
在實例36中,實例1至35中之任一者之標的物可視情況包括其中該第二平行機器包含經組態以發送位址資訊至該第二平行機器之複數個可程式化元件,其中該位址資訊指示該M數位輸出正被提供至該第二平行機器中之該等群組中之哪一者。
在實例37中,實例1至36中之任一者之標的物可視情況包括其中該等平行機器經堆疊。
在實例38中,實例1至37中之任一者之標的物可視情況包括其中該複數個可程式化元件包含兩個或兩個以上可程式化元件群組中之一者,其進一步包含對應於每一群組之邏輯,其中對應於該等群組中之一各別者之該邏輯彙總來自彼群組中之兩個或兩個以上可程式化元件之狀態資訊,且其中來自彼群組之該M數位輸出之一或多個數位係此邏輯之一函式。
在實例39中,實例1至38中之任一者之標的物可視情況包括其中藉由壓縮來自該等可程式化元件之狀態資訊來形成該M數位輸出。
在實例40中,實例1至39中之任一者之標的物可視情況包括邏輯,該邏輯經組態以彙總來自用以實施該等有限狀態機中之一相同者之該等可程式化元件中之兩者或兩者以上之輸出。
在實例41中,實例1至40中之任一者之標的物可視情況包括其中該等可程式化元件經組態以實施含N個狀態機之一邏輯群組,其中該N個狀態機之該等輸出經彙總以提供該M數位輸出。
在實例42中,實例1至41中之任一者之標的物可視情況包括其中壓縮該狀態資訊包括將一無損壓縮演算法應用於該狀態資訊。
在實例43中,實例1至42中之任一者之標的物可視情況包括其中提供該經壓縮狀態資訊至另一裝置包含提供該經壓縮狀態資訊至另一平行機器。
在實例44中,實例1至43中之任一者之標的物可視情況包括其中提供該經壓縮狀態資訊至另一裝置包含提供該經壓縮狀態資訊至系統記憶體。
在實例45中,實例1至44中之任一者之標的物可視情況包括其中壓縮該狀態資訊包含彙總在該平行機器上所實施之一有限狀態機中之最終狀態。
在實例46中,實例1至45中之任一者之標的物可視情況包括一第一層級平行機器,其具有至少一個N數位輸入及複數個N數位輸出,其中該等N數位輸出中之每一者對應於在該第一層級平行機器上所實施之N個狀態機之一各別群組。
在實例47中,實例1至46中之任一者之標的物可視情況包括其中在該第一層級平行機器上所實施之該等狀態機中之至少一者包括對應於該至少一個狀態機之複數個最終狀態之複數個可程式化元件,其中將對應於該複數個最終狀態之該複數個可程式化元件之該輸出彙總在一起以提供該等N數位輸出中之一者之一個數位。
在實例48中,實例1至47中之任一者之標的物可視情況包括其中提供於該等N數位輸出中之一者上之資料編碼在該第一層級平行機器上所實施之N個狀態機之該各別群組之該等最終狀態之狀況。
在實例49中,實例1至48中之任一者之標的物可視情況包括其中該第一層級平行機器包含一有限狀態機引擎。
在實例50中,實例1至49中之任一者之標的物可視情況包括其中該有限狀態機引擎包含一可程式化元件群組陣列,且其中該等可程式化元件群組中之每一者耦合至該等N數位輸出中之一各別者。
在實例51中,實例1至50中之任一者之標的物可視情況包括其中該第一層級平行機器具有複數個N數位輸入且其中該等可程式化元件群組中之每一者耦合至該第一層級平行機器之該等N數位輸入中之一各別者。
在實例52中,實例1至51中之任一者之標的物可視情況包括其中該第二層級平行機器包含一有限狀態機引擎。
在實例53中,實例1至52中之任一者之標的物可視情況包括其中該有限狀態機引擎包含一可程式化元件群組陣列,且其中該等可程式化元件群組中之每一者耦合至該等N數位輸入中之一各別者。
在實例54中,實例1至53中之任一者之標的物可視情況包括其中該第二層級平行機器具有複數個N數位輸出且其中該等可程式化元件群組中之每一者耦合至該第二層級平行機器之該等N數位輸出中之一各別者。
在實例55中,實例1至54中之任一者之標的物可視情況包括其中該第一平行機器包含一第一晶粒,且該第二平行機器包含與該第一晶粒堆疊在一起之一第二晶粒。
在實例56中,實例1至55中之任一者之標的物可視情況包括進一步包含一第三平行機器及一匯流排,其中該第三平行機器包含與該第一晶粒及該第二晶粒堆疊在一起之一第三晶粒,其中該第二晶粒位於該堆疊中該第一晶粒與該第三晶粒之間,且其中該匯流排經組態以在該第一平行機器與該第三平行機器之間傳送狀態資訊。
在實例57中,實例1至56中之任一者之標的物可視情況包括其中該匯流排包含複數個互連件。
在實例58中,實例1至57中之任一者之標的物可視情況包括其中該等互連件包含穿通孔互連件。
在實例59中,實例1至58中之任一者之標的物可視情況包括其中該等平行機器包含有限狀態機引擎。
在實例60中,實例1至59中之任一者之標的物可視情況包括其中該等有限狀態機引擎包含型樣辨識處理器。
在實例61中,實例1至60中之任一者之標的物可視情況包括其中該等平行機器包含場可程式化閘陣列。
在實例62中,實例1至61中之任一者之標的物可視情況包括其中該第一層級平行機器之該至少一個N數位輸入經組態以接收原始資料。
在實例63中,實例1至62中之任一者之標的物可視情況包括其中該第二層級平行機器之該等N數位輸入中之每一者對應於在該第二層級平行機器上所實施之N個狀態機之一各別群組,其中在該第二層級平行機器上所實施之N個狀態機之每一群組係由在該第一層級平行機器上所實施之多達N個狀態機驅動。
在實例64中,實例1至63中之任一者之標的物可視情況包括其中另一裝置包含一第二平行機器,其中該第二平行機器經組態以接收並處理該經壓縮狀態資訊。
在實例65中,實例1至64中之任一者之標的物可視情況包括其中該平行機器經組態以壓縮該狀態資訊包含該平行機器經組態以彙總在該平行機器上所實施之一有限狀態機之最終狀態。
在實例66中,實例1至65中之任一者之標的物可視情況包括經組態以彙總該等最終狀態之布林邏輯。
在實例67中,實例1至66中之任一者之標的物可視情況包括其中該平行機器經組態以壓縮該狀態資訊包含該平行機器經組態以輸出一差向量,其中該差向量僅識別已回應於一輸入符號而改變之彼等狀態。
在實例68中,實例1至67中之任一者之標的物可視情況包括其中該平行機器經組態以壓縮該狀態資訊包含該平行機器經組態以輸出一輸出向量,其中該輸出向量僅提供在該平行機器上所實施之一有限狀態機中之最終狀態之狀態資訊。
10‧‧‧階層平行機器
12‧‧‧有限狀態機引擎
14‧‧‧程式化匯流排
16‧‧‧輸入匯流排
18‧‧‧輸出匯流排
20‧‧‧結果匯流排
30‧‧‧HPRP
32‧‧‧型樣辨識處理器
34‧‧‧程式化匯流排
36‧‧‧輸入匯流排
38‧‧‧輸出匯流排
40‧‧‧結果匯流排
100‧‧‧平行機器
102‧‧‧通用元件
104‧‧‧輸入
106‧‧‧輸出
108‧‧‧交換器
110‧‧‧輸入埠
111‧‧‧程式化介面
112‧‧‧專用元件
114‧‧‧輸出埠
150‧‧‧簡單狀態機圖
152‧‧‧狀態
154‧‧‧狀態
156‧‧‧最終狀態
200‧‧‧圖形
202‧‧‧輸入狀態
204‧‧‧中間狀態
206‧‧‧轉變
208‧‧‧狀態
400‧‧‧階層有限狀態機(HFSM)引擎
402‧‧‧有限狀態機引擎
404‧‧‧有限狀態機引擎
500‧‧‧階層有限狀態機(HFSM)引擎
502‧‧‧有限狀態機引擎
504...有限狀態機引擎
506...有限狀態機引擎
508...有限狀態機引擎
510...輸出匯流排
512...匯流排
514...匯流排
516...結果匯流排
518...輸入匯流排
530...群組
532...狀態機
540...「或」閘
542...輸出
546...輸入符號
560...同質二維陣列
562...狀態機元件群組
570...階層型樣辨識處理器
572...輸入路徑
574...互連件
576...互連件
578...輸出路徑
580...型樣辨識處理器層級
582...型樣辨識處理器層級
584...型樣辨識處理器層級
600...四層級階層
602...有限狀態機引擎
602A...輸入埠
602B...程式化介面
602C...輸出埠
604...有限狀態機引擎
604A...輸入埠
604B...程式化介面
604C...輸出埠
606...有限狀態機引擎
606A...輸入埠
606B...程式化介面
606C...輸出埠
608...有限狀態機引擎
608A...輸入埠
608B...程式化介面
608C...輸出埠
610...處理裝置
612...處理裝置
614...處理裝置
700...四層級階層
702...有限狀態機引擎
704...有限狀態機引擎
706...有限狀態機引擎
708...有限狀態機引擎
800‧‧‧有限狀態機引擎
801‧‧‧緩衝器
802‧‧‧區塊
803‧‧‧交換器
804‧‧‧狀態機元件
805‧‧‧狀態機元件
806‧‧‧列
808‧‧‧區塊內交換器
809‧‧‧輸入區塊
810‧‧‧含兩個狀態機元件之群組
812‧‧‧列內交換器
813‧‧‧輸出區塊
814‧‧‧輸入
816‧‧‧輸入
818‧‧‧輸出
820‧‧‧列互連導體
822‧‧‧列互連導體
824‧‧‧專用元件
826‧‧‧輸出
828‧‧‧輸出
830‧‧‧「或」閘
832‧‧‧記憶體單元
834‧‧‧偵測線
836‧‧‧資料串流線
838‧‧‧偵測電路
840‧‧‧交換器
1500‧‧‧電腦
1502‧‧‧處理器
1504‧‧‧主記憶體
1506‧‧‧記憶體
1508‧‧‧匯流排
1510‧‧‧輸出裝置
1512‧‧‧輸入裝置
1514‧‧‧游標控制裝置
1516‧‧‧大容量儲存器
1520‧‧‧網路介面裝置
1522‧‧‧機器可讀媒體
1524‧‧‧指令
1526‧‧‧網路
1528‧‧‧輸出控制器
1530‧‧‧程式化裝置
圖1圖解說明根據本發明之各種實施例之一階層平行機器之一實例。
圖2圖解說明根據本發明之各種實施例之經組態以用於型樣辨識之一階層平行機器之一實例。
圖3圖解說明根據本發明之各種實施例之一平行機器之一實例。
圖4圖解說明根據本發明之各種實施例之一有限狀態機圖之一實例。
圖5圖解說明根據本發明之各種實施例之一有限狀態機圖之另一實例。
圖6圖解說明根據本發明之各種實施例之藉助平行機器所實施之兩層級階層之另一實例。
圖7圖解說明根據本發明之各種實施例之藉助平行機器所實施之四層級階層之一實例。
圖8圖解說明根據本發明之各種實施例之一有限狀態機圖群組之一實例。
圖9圖解說明根據本發明之各種實施例之一有限狀態機圖之另一實例,其中彙總以圖解方式所圖解說明之狀態機之最終狀態。
圖10圖解說明根據本發明之各種實施例之一有限狀態機圖群組之另一實例,其中彙總以圖解方式所圖解說明之有限狀態機中之每一者之最終狀態。
圖11圖解說明根據本發明之各種實施例之一可程式化元件陣列之一實例。
圖12圖解說明根據本發明之各種實施例之一型樣辨識處理器堆疊之一實例。
圖13圖解說明根據本發明之各種實施例之藉助平行機器所實施之具有回饋之四層級階層之一實例。
圖14圖解說明根據本發明之各種實施例之藉助平行機器所實施之具有回饋之四層級階層之另一實例。
圖15圖解說明根據本發明之各種實施例之一有限狀態機引擎。
圖16圖解說明根據本發明之各種實施例之圖15之有限狀態機引擎之一區塊之一實例。
圖17圖解說明根據本發明之各種實施例之圖16之區塊之一列之一實例。
圖18圖解說明根據本發明之各種實施例之含圖10之列中之兩個元件之一群組的一實例。
圖19圖解說明根據本發明之各種實施例一編譯器將原始程式碼轉換成一影像以用於程式化圖8之有限狀態機之一方法之一實例。
圖20圖解說明根據本發明之各種實施例之具有一基於馮.諾伊曼之架構之一電腦之一實例。
10...階層平行機器
12...有限狀態機引擎
14...程式化匯流排
16...輸入匯流排
18...輸出匯流排
20...結果匯流排

Claims (71)

  1. 一種可程式化裝置,其包含:複數個可程式化元件,其中該等可程式化元件經組態以實施一或多個有限狀態機,其中該複數個可程式化元件經組態以接收一N數位輸入且依據該N數位輸入提供一M數位輸出,其中該M數位輸出包括來自少於全部該等可程式化元件之狀態資訊。
  2. 如請求項1之可程式化裝置,其中該複數個可程式化元件包含兩個或兩個以上可程式化元件群組中之一者。
  3. 如請求項2之可程式化裝置,其進一步包含:一N數位輸入介面,其耦合至該一個可程式化元件群組且經組態以接收該N數位輸入;及一M數位輸出介面,其耦合至該一個可程式化元件群組且經組態以提供該M數位輸出。
  4. 如請求項2之可程式化裝置,其中該一個可程式化元件群組包含一可程式化元件區塊。
  5. 如請求項4之可程式化裝置,其中該可程式化元件區塊包含複數個可程式化元件列,其中該等列中之每一者耦合至複數個區塊內交換器中之一各別者。
  6. 如請求項5之可程式化裝置,其中該等列中之每一者中之該等可程式化元件包含:含兩個狀態機元件之複數個群組;及另一可程式化元件。
  7. 如請求項2之可程式化裝置,其進一步包含:一可程式化交換器,其經組態以選擇性地將該一個可程式化元件群組耦合至該等可程式化元件群組中之另一者、一輸入埠及/或一輸出埠。
  8. 如請求項7之可程式化裝置,其進一步包含:一暫存器,其經組態以儲存經組態以程式化該複數個可程式化元件及該複數個可程式化交換器之一程式。
  9. 如請求項1之可程式化裝置,其中N等於M。
  10. 如請求項1之可程式化裝置,其中M係N之一整數倍數。
  11. 如請求項1之可程式化裝置,其進一步包含:「或」邏輯,其經組態以彙總來自用以實施該等有限狀態機中之一相同者之該等可程式化元件中之兩者或兩者以上之輸出。
  12. 如請求項11之可程式化裝置,其中該等可程式化元件經組態以實施含N個狀態機之一邏輯群組,其中該N個狀態機之該等輸出經彙總以提供該M數位輸出。
  13. 如請求項11之可程式化裝置,其中該邏輯包含一「或」閘。
  14. 如請求項1之可程式化裝置,其中包括於該M數位輸出中之狀態資訊包含經壓縮狀態資訊。
  15. 如請求項1之可程式化裝置,其中該複數個可程式化元件包含狀態機元件。
  16. 如請求項1之可程式化裝置,其中該M數位輸出包含一差向量。
  17. 如請求項16之可程式化裝置,其中該所實施之一或多個有限狀態機中之每一狀態對應於一狀態向量中之一各別數位,且其中該差向量僅包括該狀態向量中回應於提供至該可程式化裝置之一輸入符號而改變之彼等數位。
  18. 如請求項1之可程式化裝置,其中該所實施之一或多個有限狀態機中之每一狀態對應於一狀態向量中之一各別數位,且其中該M數位輸出僅包含該狀態向量中之該等數位之一子組。
  19. 如請求項1之可程式化裝置,其中該等數位之該子組包含對應於該一或多個有限狀態機中之最終狀態之彼等數位。
  20. 如請求項1之可程式化裝置,其中在該裝置中所實施之全部狀態機接收該N數位輸入。
  21. 如請求項1之可程式化裝置,其中該複數個可程式化元件包含兩個或兩個以上可程式化元件群組中之一者,其中該等群組中之每一者具有其自己的專用輸入。
  22. 如請求項1之可程式化裝置,其中該N數位輸入係在一半導體晶粒之一底部上,且其中該M數位輸出係在該半導體晶粒之一頂部上。
  23. 如請求項1之可程式化裝置,其中該複數個可程式化元件包含兩個或兩個以上可程式化元件群組中之一者,且其中該可程式化裝置經組態以將來自該等群組中之一者之狀態資訊提供至該可程式化裝置中之該等群組中之另一者。
  24. 一種階層平行機器,其包含:一第一平行機器,其包含複數個可程式化元件,其中該等可程式化元件經組態以實施一或多個有限狀態機,其中該複數個可程式化元件經組態以接收一N數位輸入且依據該N數位輸入提供一M數位輸出,其中該M數位輸出包括來自少於全部該等可程式化元件之狀態資訊;及一第二平行機器,其經組態以接收並處理該M數位輸出之至少部分。
  25. 如請求項24之階層平行機器,其中該第二平行機器經組態以接收並處理該整個M數位輸出。
  26. 如請求項24之階層平行機器,其進一步包含:一輸入匯流排,其耦合至該第一平行機器且經組態以提供該N數位輸入;及一輸出匯流排,其耦合於該第一平行機器與該第二平行機器之間,該輸出匯流排經組態以提供該M數位輸出之至少部分至該第二平行機器。
  27. 如請求項26之階層平行機器,其中該輸入匯流排與輸出匯流排在大小上相等。
  28. 如請求項27之階層平行機器,其中該第一平行機器及該第二平行機器中之對應群組係由一各別互連件群組耦合。
  29. 如請求項24之階層平行機器,其中該M數位輸出係被提供至在該第二平行機器中所實施之每一狀態機。
  30. 如請求項24之階層平行機器,其中該第二平行機器包含分組成複數個群組之複數個可程式化元件,其中該M數位輸出係根據一預定義方式被提供至該等群組中之一各別者。
  31. 如請求項24之階層平行機器,其中該第二平行機器包含經組態以發送位址資訊至該第二平行機器之複數個可程式化元件,其中該位址資訊指示該M數位輸出正被提供至該第二平行機器中之該等群組中之哪一者。
  32. 如請求項24之階層平行機器,其中該等平行機器經堆疊。
  33. 如請求項24之階層平行機器,其中該複數個可程式化元件包含兩個或兩個以上可程式化元件群組中之一者,其進一步包含對應於每一群組之邏輯,其中對應於該等群組中之一各別者之該邏輯彙總來自彼群組中之兩個或兩個以上可程式化元件之狀態資訊,且其中來自彼群組之該M數位輸出之一或多個數位係此邏輯之一函式。
  34. 如請求項24之階層平行機器,其中該M數位輸出係藉由壓縮來自該等可程式化元件之狀態資訊而形成。
  35. 一種可程式化裝置,其包含:複數個可程式化元件,其中該等可程式化元件經組態以實施一或多個有限狀態機,其中該複數個可程式化元件經組態以接收一N數位輸入且依據該N數位輸入提供一M數位輸出,其中該M數位輸出係藉由壓縮來自該等可程式化元件中之每一者之狀態資訊而形成。
  36. 如請求項35之可程式化裝置,其中N等於M。
  37. 如請求項35之可程式化裝置,其中M係N之一整數倍數。
  38. 如請求項35之可程式化裝置,其進一步包含:邏輯,其經組態以彙總來自用以實施該等有限狀態機中之一相同者之該等可程式化元件中之兩者或兩者以上之輸出。
  39. 如請求項38之可程式化裝置,其中該等可程式化元件經組態以實施含N個狀態機之一邏輯群組,其中該N個狀態機之該等輸出經彙總以提供該M數位輸出。
  40. 一種階層平行機器,其包含:一第一平行機器,其包含複數個可程式化元件,其中該等可程式化元件經組態以實施一或多個有限狀態機,其中該複數個可程式化元件經組態以接收一N數位輸入且依據該N數位輸入提供一M數位輸出,其中該M數位輸出係藉由壓縮來自該等可程式化元件中之每一者之狀態資訊而形成。
  41. 如請求項40之階層平行機器,其中N等於M。
  42. 如請求項40之階層平行機器,其中M係N之一整數倍數。
  43. 一種將來自一平行機器之狀態資訊提供至另一裝置之方法,其中該平行機器包括複數個可程式化元件,其中該等可程式化元件中之每一者經組態以具有一對應狀態,該方法包含:判定狀態資訊,其中該狀態資訊包含該平行機器中之該等可程式化元件中之每一者之該狀態;壓縮該狀態資訊;及提供該經壓縮狀態資訊至另一裝置。
  44. 如請求項43之方法,其中壓縮該狀態資訊包括:將一無損壓縮演算法應用於該狀態資訊。
  45. 如請求項43之方法,其中提供該經壓縮狀態資訊至該另一裝置包含:提供該經壓縮狀態資訊至另一平行機器。
  46. 如請求項43之方法,其中提供該經壓縮狀態資訊至該另一裝置包含:提供該經壓縮狀態資訊至系統記憶體。
  47. 如請求項43之方法,其中壓縮該狀態資訊包含彙總在該平行機器上所實施之一有限狀態機中之最終狀態。
  48. 一種階層平行機器,其包含:一第一層級平行機器,其具有至少一個N數位輸入及複數個N數位輸出,其中該等N數位輸出中之每一者對應於在該第一層級平行機器上所實施之N個狀態機之一各別群組。
  49. 如請求項48之階層平行機器,其中在該第一層級平行機器上所實施之該等狀態機中之至少一者包括對應於該至少一個狀態機之複數個最終狀態之複數個可程式化元件,其中對應於該複數個最終狀態之該複數個可程式化元件之輸出彙總在一起以提供該等N數位輸出中之一者之一個數位。
  50. 如請求項48之階層平行機器,其中提供於該等N數位輸出中之一者上之資料編碼在該第一層級平行機器上所實施之N個狀態機之該各別群組之該等最終狀態之狀況。
  51. 如請求項48之階層平行機器,其中該第一層級平行機器包含一有限狀態機引擎。
  52. 如請求項51之階層平行機器,其中該有限狀態機引擎包含一可程式化元件群組陣列,且其中該等可程式化元件群組中之每一者耦合至該等N數位輸出中之一各別者。
  53. 如請求項52之階層平行機器,其中該第一層級平行機器具有複數個N數位輸入,且其中該等可程式化元件群組中之每一者耦合至該第一層級平行機器之該等N數位輸入中之一各別者。
  54. 如請求項48之階層平行機器,其中該第二層級平行機器包含一有限狀態機引擎。
  55. 如請求項54之階層平行機器,其中該有限狀態機引擎包含一可程式化元件群組陣列,且其中該等可程式化元件群組中之每一者耦合至該等N數位輸入中之一各別者。
  56. 如請求項55之階層平行機器,其中該第二層級平行機器具有複數個N數位輸出且其中該等可程式化元件群組中之每一者耦合至該第二層級平行機器之該等N數位輸出中之一各別者。
  57. 如請求項48之階層平行機器,其中該第一平行機器包含一第一晶粒,且該第二平行機器包含與該第一晶粒堆疊在一起之一第二晶粒。
  58. 如請求項57之階層平行機器,其進一步包含一第三平行機器及一匯流排,其中該第三平行機器包含與該第一晶粒及該第二晶粒堆疊在一起之一第三晶粒,其中該第二晶粒位於該堆疊中該第一晶粒與該第三晶粒之間,且其中該匯流排經組態以在該第一平行機器與該第三平行機器之間傳送狀態資訊。
  59. 如請求項58之階層平行機器,其中該匯流排包含複數個互連件。
  60. 如請求項59之階層平行機器,其中該等互連件包含穿通孔互連件。
  61. 如請求項48之階層平行機器,其中該等平行機器包含有限狀態機引擎。
  62. 如請求項61之階層平行機器,其中該等有限狀態機引擎包含型樣辨識處理器。
  63. 如請求項48之階層平行機器,其中該等平行機器包含場可程式化閘陣列。
  64. 如請求項48之階層平行機器,其中該第一層級平行機器之該至少一個N數位輸入經組態以接收原始資料。
  65. 如請求項48之階層平行機器,其中該第二層級平行機器之該等N數位輸入中之每一者對應於在該第二層級平行機器上所實施之N個狀態機之一各別群組,其中在該第二層級平行機器上所實施之N個狀態機之每一群組係由在該第一層級平行機器上所實施之多達N個狀態機驅動。
  66. 一種平行機器,其包含經組態以實施至少一個有限狀態機之複數個可程式化元件,其中該平行機器經組態以:判定狀態資訊,其中該狀態資訊包含該等可程式化元件中之每一者之狀態;壓縮該狀態資訊;及提供該經壓縮狀態資訊至另一裝置。
  67. 如請求項66之平行機器,其中該另一裝置包含一第二平行機器,其中該第二平行機器經組態以接收並處理該經壓縮狀態資訊。
  68. 如請求項66之平行機器,其中該平行機器經組態以壓縮該狀態資訊包含該平行機器經組態以彙總在該平行機器上所實施之一有限狀態機之最終狀態。
  69. 如請求項68之平行機器,其進一步包含經組態以彙總該等最終狀態之布林邏輯。
  70. 如請求項66之平行機器,其中該平行機器經組態以壓縮該狀態資訊包含該平行機器經組態以輸出一差向量,其中該差向量僅識別已回應於一輸入符號而改變之彼等狀態。
  71. 如請求項66之平行機器,其中該平行機器經組態以壓縮該狀態資訊包含該平行機器經組態以輸出一輸出向量,其中該輸出向量僅提供在該平行機器上所實施之一有限狀態機中之最終狀態之狀態資訊。
TW100120419A 2010-06-10 2011-06-10 可程式化裝置、階層平行機器、用於提供狀態資訊之方法 TWI526935B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US35355110P 2010-06-10 2010-06-10
US13/037,706 US8766666B2 (en) 2010-06-10 2011-03-01 Programmable device, hierarchical parallel machines, and methods for providing state information

Publications (2)

Publication Number Publication Date
TW201211897A TW201211897A (en) 2012-03-16
TWI526935B true TWI526935B (zh) 2016-03-21

Family

ID=45097043

Family Applications (1)

Application Number Title Priority Date Filing Date
TW100120419A TWI526935B (zh) 2010-06-10 2011-06-10 可程式化裝置、階層平行機器、用於提供狀態資訊之方法

Country Status (6)

Country Link
US (6) US8766666B2 (zh)
EP (1) EP2580656A4 (zh)
JP (1) JP6258034B2 (zh)
KR (1) KR101960104B1 (zh)
TW (1) TWI526935B (zh)
WO (1) WO2011156644A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI767303B (zh) * 2019-08-22 2022-06-11 美商谷歌有限責任公司 在神經網路中傳播延遲減少之電腦實施方法

Families Citing this family (78)

* 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
US20100174887A1 (en) 2009-01-07 2010-07-08 Micron Technology Inc. Buses for Pattern-Recognition Processors
US8214672B2 (en) 2009-01-07 2012-07-03 Micron Technology, Inc. Method and systems for power consumption management of a pattern-recognition processor
US8281395B2 (en) 2009-01-07 2012-10-02 Micron Technology, Inc. Pattern-recognition processor with matching-data reporting module
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
US8766666B2 (en) * 2010-06-10 2014-07-01 Micron Technology, Inc. Programmable device, hierarchical parallel machines, and methods for providing state information
US8843911B2 (en) 2011-01-25 2014-09-23 Micron Technology, Inc. Utilizing special purpose elements to implement a FSM
US8726253B2 (en) 2011-01-25 2014-05-13 Micron Technology, Inc. Method and apparatus for compiling regular expressions
KR101607736B1 (ko) 2011-01-25 2016-03-30 마이크론 테크놀로지, 인크. 오토마톤의 진입 차수 및/또는 진출 차수를 제어하기 위한 양화 언롤링
JP5763784B2 (ja) 2011-01-25 2015-08-12 マイクロン テクノロジー, インク. 要素利用のための状態のグループ化
US8688608B2 (en) * 2011-06-28 2014-04-01 International Business Machines Corporation Verifying correctness of regular expression transformations that use a post-processor
US8417689B1 (en) * 2011-11-21 2013-04-09 Emc Corporation Programming model for transparent parallelization of combinatorial optimization
US9443156B2 (en) * 2011-12-15 2016-09-13 Micron Technology, Inc. Methods and systems for data analysis in a state machine
US8593175B2 (en) * 2011-12-15 2013-11-26 Micron Technology, Inc. Boolean logic in a state machine lattice
US8680888B2 (en) 2011-12-15 2014-03-25 Micron Technologies, Inc. Methods and systems for routing in a state machine
US8782624B2 (en) 2011-12-15 2014-07-15 Micron Technology, Inc. Methods and systems for detection in a state machine
US8648621B2 (en) * 2011-12-15 2014-02-11 Micron Technology, Inc. Counter operation in a state machine lattice
US9430735B1 (en) 2012-02-23 2016-08-30 Micron Technology, Inc. Neural network in a memory device
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
US9336774B1 (en) * 2012-04-20 2016-05-10 Google Inc. Pattern recognizing engine
US9524248B2 (en) 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
US9389841B2 (en) 2012-07-18 2016-07-12 Micron Technology, Inc. Methods and systems for using state vector data in a state machine engine
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
US9501131B2 (en) 2012-08-31 2016-11-22 Micron Technology, Inc. Methods and systems for power management in a pattern recognition processing system
US9075428B2 (en) 2012-08-31 2015-07-07 Micron Technology, Inc. Results generation for state machine engines
US9063532B2 (en) * 2012-08-31 2015-06-23 Micron Technology, Inc. Instruction insertion in state machine engines
US10042959B2 (en) 2014-03-05 2018-08-07 Ayasdi, Inc. Systems and methods for capture of relationships within information
US9268881B2 (en) 2012-10-19 2016-02-23 Intel Corporation Child state pre-fetch in NFAs
US9117170B2 (en) 2012-11-19 2015-08-25 Intel Corporation Complex NFA state matching method that matches input symbols against character classes (CCLs), and compares sequence CCLs in parallel
US9665664B2 (en) 2012-11-26 2017-05-30 Intel Corporation DFA-NFA hybrid
US9304768B2 (en) 2012-12-18 2016-04-05 Intel Corporation Cache prefetch for deterministic finite automaton instructions
US9251440B2 (en) * 2012-12-18 2016-02-02 Intel Corporation Multiple step non-deterministic finite automaton matching
US9268570B2 (en) 2013-01-23 2016-02-23 Intel Corporation DFA compression and execution
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
US10089043B2 (en) 2013-03-15 2018-10-02 Micron Technology, Inc. Apparatus and methods for a distributed memory system including memory nodes
US9747080B2 (en) * 2013-06-14 2017-08-29 Massively Parallel Technologies, Inc. Software design sharing systems and methods
US10216828B2 (en) 2014-03-05 2019-02-26 Ayasdi, Inc. Scalable topological summary construction using landmark point selection
US10002180B2 (en) 2014-03-05 2018-06-19 Ayasdi, Inc. Landmark point selection
WO2016040018A1 (en) * 2014-09-08 2016-03-17 Invensense Incorporated System and method for hierarchical sensor processing
US11366675B2 (en) 2014-12-30 2022-06-21 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
US10430210B2 (en) 2014-12-30 2019-10-01 Micron Technology, Inc. Systems and devices for accessing a state machine
US9489709B2 (en) * 2015-03-27 2016-11-08 Kyocera Document Solutions Inc. Real-time state-machine implemented with micro-controller
GB2536921A (en) * 2015-03-31 2016-10-05 Fujitsu Ltd Apparatus, program, and method for updating cache memory
US10740116B2 (en) * 2015-09-01 2020-08-11 International Business Machines Corporation Three-dimensional chip-based regular expression scanner
US10846103B2 (en) 2015-10-06 2020-11-24 Micron Technology, Inc. Methods and systems for representing processing resources
US10691964B2 (en) 2015-10-06 2020-06-23 Micron Technology, Inc. Methods and systems for event reporting
US10977309B2 (en) 2015-10-06 2021-04-13 Micron Technology, Inc. Methods and systems for creating networks
CN105656688B (zh) * 2016-03-03 2019-09-20 腾讯科技(深圳)有限公司 状态控制方法和装置
US10146555B2 (en) 2016-07-21 2018-12-04 Micron Technology, Inc. Adaptive routing to avoid non-repairable memory and logic defects on automata processor
US10268602B2 (en) 2016-09-29 2019-04-23 Micron Technology, Inc. System and method for individual addressing
US10019311B2 (en) 2016-09-29 2018-07-10 Micron Technology, Inc. Validation of a symbol response memory
US10592450B2 (en) 2016-10-20 2020-03-17 Micron Technology, Inc. Custom compute cores in integrated circuit devices
US10929764B2 (en) 2016-10-20 2021-02-23 Micron Technology, Inc. Boolean satisfiability
CN107220028B (zh) * 2017-05-24 2020-05-29 上海兆芯集成电路有限公司 加速压缩方法以及使用此方法的装置
US10289093B1 (en) * 2017-12-21 2019-05-14 Xilinx, Inc. Runtime adaptive generator circuit
US11620345B2 (en) * 2018-09-24 2023-04-04 Salesforce, Inc. Method and apparatus for a mechanism for event replay when a reroute of recordation of the event occurred in a multiplexed event recordation system
US10861551B2 (en) 2018-12-28 2020-12-08 Micron Technology, Inc. Memory cells configured to generate weighted inputs for neural networks
US11941625B2 (en) * 2019-06-04 2024-03-26 Jpmorgan Chase Bank, N.A. Systems and methods for real-time classification and verification of data using hierarchal state machines
US12026601B2 (en) 2019-06-26 2024-07-02 Micron Technology, Inc. Stacked artificial neural networks
US11451230B2 (en) * 2020-04-23 2022-09-20 Xilinx, Inc. Compute dataflow architecture
US11989508B2 (en) 2020-09-15 2024-05-21 Microsoft Technology Licensing, Llc High-performance microcoded text parser
US11381241B2 (en) * 2020-09-15 2022-07-05 Microsoft Technology Licensing, Llc High-performance table-based state machine
CN113326083A (zh) * 2021-05-28 2021-08-31 阿波罗智联(北京)科技有限公司 状态机处理、状态处理方法、装置、电子设备及存储介质
US20230059494A1 (en) * 2021-08-19 2023-02-23 Digital Asset Capital, Inc. Semantic map generation from natural-language text documents

Family Cites Families (70)

* 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
US4984192A (en) 1988-12-02 1991-01-08 Ultrasystems Defense Inc. Programmable state machines connectable in a reconfiguration switching network for performing real-time data processing
JP2994926B2 (ja) * 1993-10-29 1999-12-27 松下電器産業株式会社 有限状態機械作成方法とパターン照合機械作成方法とこれらを変形する方法および駆動方法
US5414833A (en) * 1993-10-27 1995-05-09 International Business Machines Corporation Network security system and method using a parallel finite state machine adaptive active monitor and responder
US5699505A (en) * 1994-08-08 1997-12-16 Unisys Corporation Method and system for automatically collecting diagnostic information from a computer system
US5729678A (en) 1996-03-04 1998-03-17 Ag Communication Systems Corporation Bus monitor system
US6421815B1 (en) * 1998-01-09 2002-07-16 Synopsys, Inc. Method and apparatus for optimized partitioning of finite state machines synthesized from hierarchical high-level descriptions
JP2000181679A (ja) * 1998-12-15 2000-06-30 Mitsutaka Kameyama チップ内通信用データ圧縮技術
US6212625B1 (en) 1999-05-25 2001-04-03 Advanced Micro Devices, Inc. General purpose dynamically programmable state engine for executing finite state machines
US6564336B1 (en) 1999-12-29 2003-05-13 General Electric Company Fault tolerant database for picture archiving and communication systems
JP2002026721A (ja) * 2000-07-10 2002-01-25 Fuji Xerox Co Ltd 情報処理装置
JP3923734B2 (ja) * 2001-01-31 2007-06-06 株式会社東芝 割込み構造局所化の装置および方法およびプログラム
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 データ処理装置及び電力制御方法
CN100399472C (zh) 2001-08-29 2008-07-02 联发科技股份有限公司 用于使用快速突发模式以改善处理器性能的方法和装置
US7170891B2 (en) 2001-08-30 2007-01-30 Messenger Terabit Networks, Inc. High speed data classification system
US6715024B1 (en) * 2001-12-31 2004-03-30 Lsi Logic Corporation Multi-bank memory device having a 1:1 state machine-to-memory bank ratio
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
US7411418B2 (en) * 2003-05-23 2008-08-12 Sensory Networks, Inc. Efficient representation of state transition tables
JP2005018310A (ja) * 2003-06-25 2005-01-20 Nippon Telegr & Teleph Corp <Ntt> データ変換方法および装置
US7487542B2 (en) 2004-01-14 2009-02-03 International Business Machines Corporation Intrusion detection using a network processor and a parallel pattern detection engine
JP4347087B2 (ja) * 2004-02-26 2009-10-21 日本電信電話株式会社 パターンマッチング装置および方法ならびにプログラム
US20060020589A1 (en) 2004-07-26 2006-01-26 Nokia Corporation System and method for searching for content stored by one or more media servers
GB0420442D0 (en) 2004-09-14 2004-10-20 Ignios Ltd Debug in a multicore architecture
US7353347B2 (en) * 2004-09-23 2008-04-01 Mathstar, Inc. Reconfigurable state machine
US7307453B1 (en) * 2004-10-12 2007-12-11 Nortel Networks Limited Method and system for parallel state machine implementation
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
JP4654731B2 (ja) * 2005-03-31 2011-03-23 富士ゼロックス株式会社 集積回路装置および信号処理装置
JP2006302132A (ja) * 2005-04-22 2006-11-02 Yaskawa Electric Corp 信号処理装置及び再構成可能論理回路装置及び再構成可能順序回路
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
US7500209B2 (en) * 2005-09-28 2009-03-03 The Mathworks, Inc. Stage evaluation of a state machine
CN101099147B (zh) 2005-11-11 2010-05-19 松下电器产业株式会社 对话支持装置
JP4635147B2 (ja) * 2005-11-17 2011-02-16 国立大学法人 筑波大学 パターンマッチング装置、その形成方法、それを用いたネットワーク不正侵入検知装置の動作方法、およびそれを用いた侵入防止システムの動作方法
US7797672B2 (en) * 2006-05-30 2010-09-14 Motorola, Inc. Statechart generation using frames
JP5420401B2 (ja) * 2006-06-21 2014-02-19 エレメント シーエックスアイ,エルエルシー フォールト・トレランスを有する集積回路アーキテクチャ
US8200807B2 (en) * 2006-08-31 2012-06-12 The Mathworks, Inc. Non-blocking local events in a state-diagramming environment
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
US7831607B2 (en) 2006-12-08 2010-11-09 Pandya Ashish A Interval symbol architecture for programmable intelligent search memory
JP2008293226A (ja) * 2007-05-24 2008-12-04 Renesas Technology Corp 半導体装置
JP5388323B2 (ja) * 2007-11-09 2014-01-15 独立行政法人 宇宙航空研究開発機構 計算機
US8577665B2 (en) * 2008-03-14 2013-11-05 Fujitsu Limited Synthesis of message sequence charts from communicating finite-state machines
JP5321589B2 (ja) * 2008-08-13 2013-10-23 日本電気株式会社 有限オートマトン生成装置、パターンマッチング装置、有限オートマトン回路生成方法およびプログラム
US8938590B2 (en) 2008-10-18 2015-01-20 Micron Technology, Inc. Indirect register access method and system
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
US9639493B2 (en) 2008-11-05 2017-05-02 Micron Technology, Inc. Pattern-recognition processor with results buffer
US7917684B2 (en) 2008-11-05 2011-03-29 Micron Technology, Inc. Bus translator
US7970964B2 (en) 2008-11-05 2011-06-28 Micron Technology, Inc. Methods and systems to accomplish variable width data input
US20100118425A1 (en) 2008-11-11 2010-05-13 Menachem Rafaelof Disturbance rejection in a servo control loop using pressure-based disc mode sensor
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
US9164945B2 (en) 2008-12-01 2015-10-20 Micron Technology, Inc. Devices, systems, and methods to synchronize parallel processing of a single data stream
US10007486B2 (en) 2008-12-01 2018-06-26 Micron Technology, Inc. Systems and methods to enable identification of different data sets
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
US7683665B1 (en) 2009-04-21 2010-03-23 International Business Machines Corporation Multiple parallel programmable finite state machines using a shared transition table
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
US8489534B2 (en) 2009-12-15 2013-07-16 Paul D. Dlugosch Adaptive content inspection
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
US8766666B2 (en) 2010-06-10 2014-07-01 Micron Technology, Inc. Programmable device, hierarchical parallel machines, and methods for providing state information
KR101607736B1 (ko) * 2011-01-25 2016-03-30 마이크론 테크놀로지, 인크. 오토마톤의 진입 차수 및/또는 진출 차수를 제어하기 위한 양화 언롤링

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI767303B (zh) * 2019-08-22 2022-06-11 美商谷歌有限責任公司 在神經網路中傳播延遲減少之電腦實施方法
TWI817490B (zh) * 2019-08-22 2023-10-01 美商谷歌有限責任公司 在神經網路中傳播延遲減少之電腦實施方法

Also Published As

Publication number Publication date
US11003515B2 (en) 2021-05-11
EP2580656A4 (en) 2015-07-15
CN103026332A (zh) 2013-04-03
US20140279796A1 (en) 2014-09-18
US20190087243A1 (en) 2019-03-21
TW201211897A (en) 2012-03-16
KR20130083893A (ko) 2013-07-23
WO2011156644A3 (en) 2012-04-19
JP6258034B2 (ja) 2018-01-10
US20170060649A1 (en) 2017-03-02
KR101960104B1 (ko) 2019-03-19
US10191788B2 (en) 2019-01-29
US9519860B2 (en) 2016-12-13
US8766666B2 (en) 2014-07-01
EP2580656A2 (en) 2013-04-17
US20110307433A1 (en) 2011-12-15
JP2013534660A (ja) 2013-09-05
WO2011156644A2 (en) 2011-12-15
US11604687B2 (en) 2023-03-14
US20210255911A1 (en) 2021-08-19
US20230214282A1 (en) 2023-07-06

Similar Documents

Publication Publication Date Title
TWI526935B (zh) 可程式化裝置、階層平行機器、用於提供狀態資訊之方法
US20230154176A1 (en) Analyzing data using a hierarchical structure
JP6082753B2 (ja) ステートマシンにおけるデータ解析用の方法およびシステム
JP6126127B2 (ja) ステートマシンにおけるルーティング用の方法およびシステム
TWI502502B (zh) 用於處理狀態機引擎所接收之資料之方法及系統
KR101920956B1 (ko) 상태 기계에서의 검출을 위한 방법들 및 시스템들
TWI497418B (zh) 狀態機引擎、用於處置一狀態機引擎中之狀態向量資料之方法及用於組態一狀態機引擎之一狀態機晶格之方法
US20230176999A1 (en) Devices for time division multiplexing of state machine engine signals