JP2013534660A - 状態情報を提供するためのプログラム可能装置、階層型並列マシン、方法 - Google Patents

状態情報を提供するためのプログラム可能装置、階層型並列マシン、方法 Download PDF

Info

Publication number
JP2013534660A
JP2013534660A JP2013514375A JP2013514375A JP2013534660A JP 2013534660 A JP2013534660 A JP 2013534660A JP 2013514375 A JP2013514375 A JP 2013514375A JP 2013514375 A JP2013514375 A JP 2013514375A JP 2013534660 A JP2013534660 A JP 2013534660A
Authority
JP
Japan
Prior art keywords
parallel machine
programmable
machine
state
digit
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2013514375A
Other languages
English (en)
Other versions
JP2013534660A5 (ja
JP6258034B2 (ja
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 JP2013534660A publication Critical patent/JP2013534660A/ja
Publication of JP2013534660A5 publication Critical patent/JP2013534660A5/ja
Application granted granted Critical
Publication of JP6258034B2 publication Critical patent/JP6258034B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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
    • 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
    • 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

Abstract

状態情報を提供するためのプログラム可能装置、階層型並列マシン、および方法を説明する。1つのかかるプログラム可能装置では、プログラム可能要素が提供される。プログラム可能要素は、1つまたは複数の有限状態機械を実装するように構成される。プログラム可能要素は、N桁の入力を受信し、そのN桁の入力に応じてM桁の出力を提供するように構成される。M桁の出力は、全部より少ないプログラム可能要素からの状態情報を含む。他のプログラム可能装置、階層型並列マシンおよび方法も開示する。
【選択図】図13

Description

〔優先出願〕
本特許出願は、U.S.C.セクション119(e)に基づき、2010年6月10日に出願された「System and Method for Transferring State Between Finite State Machine」というタイトルの米国仮特許出願番号第61/353,551号に対する優先権の利益を主張する、2011年3月1日に出願された「Programmable Device,Hierarchical Parallel Machines,Methods for Providing State Information」というタイトルの米国出願第13/037,706号からの優先権利益を主張し、その両方の内容全体が本明細書によって、参照により本明細書に組み込まれる。
プログラム可能装置の一例は、並列マシンである。並列マシンは、例えば、有限状態機械(FSM)エンジンおよびフィールドプログラマブルゲートアレイ(FPGA)を含む。FSMは、状態、状態間の遷移および動作の表現である。有限状態機械は、有向フローグラフの形式で表現できる。それらは、例えば、エンジニアリング、パターン認識、生物学、および人工知能における問題を解決するために使用できる。
本発明の様々な実施形態による、階層型並列マシンの一例を示す。 本発明の様々な実施形態による、パターン認識用に構成された階層型並列マシンの一例を示す。 本発明の様々な実施形態による、並列マシンの一例を示す。 本発明の様々な実施形態による、有限状態機械図の一例を示す。 本発明の様々な実施形態による、有限状態機械図の別の例を示す。 本発明の様々な実施形態による、並列マシンで実装された2レベル階層の別の例を示す。 本発明の様々な実施形態による、並列マシンで実装された4レベル階層の一例を示す。 本発明の様々な実施形態による、有限状態機械図のグループの一例を示す。 本発明の様々な実施形態による、図式的に示された状態機械の最終状態が統合されている、有限状態機械図の別の例を示す。 本発明の様々な実施形態による、図式的に示された有限状態機械の各々の最終状態が統合されている、有限状態機械図のグループの別の例を示す。 本発明の様々な実施形態による、プログラム可能要素の配列の一例を示す。 本発明の様々な実施形態による、パターン認識プロセッサのスタックの一例を示す。 本発明の様々な実施形態による、並列マシンで実装されたフィードバックを有する4レベル階層の一例を示す。 本発明の様々な実施形態による、並列マシンで実装されたフィードバックを有する4レベル階層の別の例を示す。 本発明の様々な実施形態による、有限状態機械エンジンを示す。 本発明の様々な実施形態による、図15の有限状態機械エンジンのブロックの一例を示す。 本発明の様々な実施形態による、図16のブロックの行の一例を示す。 本発明の様々な実施形態による、図10の行のうちの2つのグループの一例を示す。 本発明の様々な実施形態による、コンパイラがソースコードを、図8の有限状態機械をプログラミングするためのイメージに変換するための方法の一例を示す。 本発明の様々な実施形態による、フォンノイマンベースのアーキテクチャを有するコンピュータの一例を示す。
以下の説明および図は、当業者が特定の実施形態を実施できるように十分に説明する。他の実施形態は、構造的、論理的、電気的、プロセス、および他の変更を組み込み得る。いくつかの実施形態の部分および特徴は、他の実施形態のそれらに含まれ得るか、またはそれらと置き換えられ得る。
本明細書では、とりわけ、階層型有限状態機械(HFSM)エンジンなどの階層型並列マシン、および関連する方法を説明する。1つのかかる階層型並列マシン10を図1に示す。各階層型並列マシン10は、2つ以上の有限状態機械(FSM)エンジン12などの、2つ以上の並列マシンを含む。各有限状態機械エンジン12は、入力バス16上のデータ(例えば、データストリーム)を受信して反応し、受信したデータに応じて出力を提供(例えば、生成)する装置である。
各有限状態機械エンジン12は、任意に複雑であり得る。図1に示すような、一実施形態では、有限状態機械エンジン12は、カスケード接続されて、少なくとも1つの有限状態機械エンジン12の出力(例えば、状態)が、全体または部分的に、カスケード接続の下流で1つまたは複数の有限状態機械エンジン12に提供される(例えば、渡される)。一例では、カスケード接続内の最後の有限状態機械エンジンが結果を生成し、それを、結果バス20などの、出力バス上に提供できる。一実施形態では、有限状態機械エンジン12の各々は、例えば、プログラム(例えば、イメージ)を有限状態機械エンジン12上にプログラムバス14を用いてロード(例えば、格納)するなどにより、それぞれのプログラムバス14を介してプログラムできる。
いくつかの実施形態では、HPRP 10でデータを処理するのに必要な時間を削減することが重要であり得る。HPRP 10でデータを処理する時間は、少なくとも一部は、有限状態機械エンジン12の間に渡されるデータ(例えば、状態ベクトルなどの状態情報)の量によって制限され得る。いくつかのかかる実施形態では、有限状態機械エンジン12は、階層構成で接続され、有限状態機械エンジン12の間のインタフェースがリアルタイム操作に近づくように設計できる。とりわけ、本明細書では、かかる検討事項について説明し、FSMエンジン12の階層セットなど、並列マシンの階層セットを物理的に実装するための一般的な方法を提言する。
一実施形態では、図2に示すように、階層型パターン認識プロセッサ(HPRP)30が実装される。パターン認識プロセッサは、データ(例えば、シンボルのシーケンス)を受信し、対象のシーケンスが認識(例えば、検出)されると、ある種の通知を提供する出力を生成する装置である。単純な場合には、入力シンボルの単一ストリームが、入力バス36上のHPRP 30に提供される。HPRP 30は、プログラムバス34を介して入力シンボルの特定のシーケンス(または複数)を検出するようにプログラムされる。結果(検出されたシーケンス)が生成され、結果バス40上に提供できる。HPRP 30の論理インタフェース(プログラムインタフェース34およびデータ入力36)を図2に示す。
図示の実施形態では、HPRP 30は、パターン認識プロセッサ(PRP)32としてプログラムされた、2つ以上の有限状態機械エンジンを含み得る。各PRP 32は、それぞれのデータストリーム(入力バス36または入力バス42のいずれかの上のデータストリームなど)内のシンボルのシーケンスを検出できる装置である。例えば、各PRP 32は、それぞれのデータストリーム内のそれぞれのパターンを照合することができる。図示した実施形態では、第2のPRP 32は、その入力として、第1のPRP 32の出力を受信し(出力バス38上に提供されるように)、結果バス40上に結果を生成する。一実施形態では、PRP 32の各々は、それぞれのプログラムバス34を介してプログラムできる。PRP 32の例を、図15〜図18(「内容検査プロセッサ」とも呼ばれる)に関連して、以下で説明する。ある例では、HPRP 30は、有限状態機械(FSM)エンジンあるいはフィールドプログラマブルゲートアレイ(FPGA)、あるいはそれらの変形、または並列マシンの別の実施形態を用いて実装される。
階層型並列マシン10および30の2レベル(例えば、段階)階層は、2つの独立したプログラムが同じデータストリームに基づいて動作できるようにする。2レベル階層は、異なる領域としてモデル化される人間の脳内の視覚認識と類似し得る。このモデルでは、領域は、有効に異なるパターン認識プロセッサであり、各々が、異なるプログラム(例えば、シグネチャ)を使用しているが、類似のコンピュータ機能(データストリーム内のシンボルのシーケンスの検出)を実行している。複数の並列マシンを連結することにより、データストリームに関するより深い知識が取得され得る。
階層の第1のレベル(第1のFSMエンジン12または第1のPRP 32によって実装されたものなど)は、例えば、生データストリームの処理を直接実行できる。すなわち、第1のFSM 12または第1のPRP 32は、出力データストリーム(例えば、生データストリーム内の一致の表示)を入力バス16または入力バス36上の生データストリームに応じて、それぞれ生成できる。図1に示すように、第2のレベル(第2のFSMエンジン12または第2のPRP 32によって実装されたものなど)は、第1のレベルからの出力データストリームを処理する。例えば、第2のFSMエンジン12は、第1のFSMエンジン12からの(出力バス18上に提供された)出力データストリームを受信し、第2のFSMエンジン12は、第1のFSMエンジン12の出力データストリームを処理する。その結果、第2のFSMエンジン12は、入力として生データストリームを受信するのではなく、第1のFSMエンジン12によって生成された出力データストリームを受信する。第2のFSMエンジン12は、第1のFSMエンジン12によって生成された出力データストリーム内のシーケンスを検出するために、第1のイメージでプログラムできる。第2のFSMエンジン12は、第2のイメージを受信するために、別個のプログラミングインタフェース(例えば、プログラムバス14によって)に結合され得る。
一例では、HPRP 30は、パターン認識機能を実装するようにプログラムできる。例えば、HPRP 30によって実装されたFSMは、HPRP 30に入力されるデータストリーム内で1つまたは複数のデータシーケンス(例えば、シグネチャ)を認識するように構成できる。データストリーム内で対象のシーケンスが第1のPRP 32によって認識(例えば、合致)される場合、その認識を示す出力データストリームが出力バス38上に提供できる。一例では、パターン認識は、例えば、ネットワークデータ内のマルウェアまたは他の情報を識別するために、一連のシンボル(例えば、ASCII文字)を認識することができる。
この出力データストリーム(例えば、出力ワード、検出状態など)は、図2に示すように、第1のPRP 32の出力バス38から別のPRP 32の入力バス42に供給できる。2つのPRP 32の連続したこの接続は、過去のイベントに関する情報を圧縮したワードで第1のPRP 32から第2のPRP 32に提供する手段を提供する。情報のこの提供は、有効に、第1のPRP 32によって認識された複雑なイベント(例えば、データストリームのシーケンス)の要約であり得る。
前述のとおり、いくつかの実施形態では、PRPのレベル間で出力を渡すために必要な時間を削減することが重要であり得る。いくつかのかかる実施形態では、PRP 32の間のインタフェースが、HPRP 30の各レベルのリアルタイム操作をサポートするように設計できる。本明細書では、かかる検討事項について説明し、例えば、HPRP 30を物理的に実装するための一般的な方法を提言する。
本明細書では、とりわけ、階層構造を用いてデータを処理するための方法および装置について説明する。階層構造は、複数のレベル(例えば、層)を含むことができ、各レベルはデータを処理(例えば、分析)して、(例えば、分析に基づいて)出力を提供する。階層構造内の低いレベルからの出力が、高いレベルへの入力として提供できる。このようにして、より低いレベルがより基本的/根本的な分析を実行でき、他方、より高いレベルが1つまたは複数の低いレベルからの出力を用いて、より複雑な分析を実行できる。一例では、階層構造はパターン認識を実行する。
一例では、階層構造は、カスケード方式で連結された複数の有限状態機械エンジンで実装される。例えば、第1および第2の有限状態機械エンジンは、第2の有限状態機械エンジンが、入力として、第1の有限状態機械エンジンからの出力を受信するように、連続して結合できる。この階層構造では、任意の数の有限状態機械エンジンが連結できる。
階層構造を用いたデータ処理に加えて、本明細書では、別の有限状態機械エンジンによって実行される処理を変更するために、1つの有限状態機械エンジンからの出力を使用するための方法および装置についても説明する。前述した有限状態機械エンジンの例を用いると、より高いレベルの処理を実装する第2の有限状態機械エンジンが、より低いレベルの処理を実装する第1の有限状態機械エンジンにフィードバック情報を提供できる。フィードバック情報は、生物学的な脳における学習と似た方法で処理を変更(例えば、更新)するために、第1の有限状態機械エンジンによって使用できる。
図3は、有限状態機械エンジンまたはパターン認識プロセッサの実装に使用できる並列マシン100の例を示す。並列マシン100は、入力データを受信し、入力データに基づいて出力を提供できる。並列マシン100は、入力データを受信するためのデータ入力ポート110および出力を別の装置に提供するための出力ポート114を含むことができる。データ入力ポート110は、データを並列マシン100に入力するためのインタフェースを提供する。
並列マシン100は、汎用要素102および専用(special purpose)要素112を含む複数のプログラム可能要素を含む。汎用要素102は、1つまたは複数の入力104および1つまたは複数の出力106を含むことができる。汎用要素102は、複数の状態のうちの1つにプログラムできる。汎用要素102の状態は、汎用要素102が所与の入力に基づいてどの出力を提供するかを決定する。すなわち、汎用要素102の状態は、プログラム可能要素が所与の入力に対してどのように反応(例えば、応答)するかを決定する。データ入力ポート110に対するデータ入力は、複数の汎用要素102に提供でき、汎用要素102にそれに対して処置を講じさせる。汎用要素102の例には、例えば、以下で詳述する、状態機械要素(SME)、カウンタ、および/または、他のプログラム可能要素の中で特に、構成可能論理ブロックを含むことができる。一例では、SMEは、所与の入力がデータ入力ポート110で受信されると、ある出力(例えば、高または「1」信号)を提供するようにプログラム(例えば、設定)できる。所与の入力以外の入力がデータ入力ポート110で受信されると、SMEは、異なる出力(例えば、低または「0」信号)を提供できる。一例では、構成可能論理ブロックは、データ入力ポート110で受信した入力に基づいて、ブール論理関数(例えば、AND、OR、NORなど)を実行するように設定できる。カウンタの一例については、本明細書で後述する。専用要素112には、メモリ(例えば、RAM)、論理ゲート、カウンタ、ルックアップテーブル、フィールドプログラマブルゲートアレイ(FPGA)、および他のハードウェア要素を含むことができる。専用要素112は、汎用要素102と情報をやりとりして、特殊目的機能を実行できる。
並列マシン100は、プログラム(例えば、イメージ)を並列マシン100上にロードするためのプログラミングインタフェース111も含むことができる。イメージは、汎用要素102の状態をプログラム(例えば、設定)できる。すなわち、イメージは、汎用要素102を、所与の入力に対してある方法で反応するように構成できる。例えば、汎用要素102は、データ入力ポート110で文字「a」が受信されると、高信号を出力するように設定できる。いくつかの例では、並列マシン100は、汎用要素102の動作のタイミングを制御するためにクロック信号を使用できる。いくつかの実施形態では、データ入力ポート110で受信したデータは、長い期間にわたって、もしくは一度に受信したデータの固定セット、または長い期間をかけて受信したデータのストリームを含むことができる。データは、並列マシン100に結合された、データベース、センサー、ネットワークなど、任意の供給源から受信され得るか、またはそれによって生成され得る。
並列マシン100は、並列マシン100の異なる要素(例えば、汎用要素102、データ入力ポート110、出力ポート114、プログラミングインタフェース111、および専用要素112)を選択的に結合するための、複数のプログラム可能スイッチ108も含む。その結果、並列マシン100は、要素間で形成されたプログラム可能マトリックスを含む。一例では、プログラム可能スイッチ108は、汎用要素102、データ入力ポート110、プログラミングインタフェース111、または専用要素112の入力104が、1つまたは複数のプログラム可能スイッチ108を介して、汎用要素102、出力ポート114、プログラミングインタフェース111、または専用要素112の出力106に結合できるように、2つ以上の要素を選択的に相互に結合できる。従って、要素間の信号のルーティングが、プログラム可能スイッチ108を設定することによって制御できる。図3では、所与の要素とプログラム可能スイッチ108との間に、ある数の導体(例えば、ワイヤー)が示されているが、他の例では、異なる数の導体が使用できることが理解されるべきである。また、図3では、個々にプログラム可能スイッチ108に結合された各汎用要素102が示されているが、他の例では、複数の汎用要素102がグループ(例えば、図15に示すような、ブロック802)としてプログラム可能スイッチ108に結合できる。一例では、データ入力ポート110、データ出力ポート114、および/または、プログラミングインタフェース111は、レジスタへの書き込みがそれぞれの要素に対して、またはそれぞれの要素から、データを提供できるように、レジスタとして実装できる。
一例では、単一の並列マシン100が物理装置上に実装されるが、他の例では、2つ以上の並列マシン100が単一の物理装置(例えば、物理チップ)上に実装できる。一例では、複数の並列マシン100の各々が、別個のデータ入力ポート110、別個の出力ポート114、別個のプログラミングインタフェース111、および別個の汎用要素102のセットを含むことができる。さらに、汎用要素102の各セットは、それらの対応する入力ポート110で、データに反応(例えば、高または低信号を出力)できる。例えば、第1の並列マシン100に対応する汎用要素102の第1のセットは、第1の並列マシン100に対応する第1のデータ入力ポート110でデータに反応できる。第2の並列マシン100に対応する汎用要素102の第2のセットは、第2の並列マシン100に対応する第2のデータ入力ポート110に反応できる。その結果、各並列マシン100は、汎用要素102のセットを含み、汎用要素102の異なるセットは異なる入力データに反応できる。同様に、各並列マシン100、および汎用要素102の各対応するセットは、別個の出力を提供できる。いくつかの例では、第1の並列マシン100からの出力ポート114は、第2の並列マシン100の入力ポート110に結合でき、第2の並列マシン100に対する入力データが、第1の並列マシン100からの出力データを含むことができるようになる。
一例では、並列マシン100上にロードするためのイメージには、汎用要素102の状態の設定、プログラム可能スイッチ108のプログラミング、および並列マシン100内の専用要素112の構成を行うための複数のビット情報を含む。一例では、イメージは、ある入力に基づき所望の出力を提供するように並列マシン100をプログラムするために、並列マシン100上にロードできる。出力ポート114は、入力ポート110で受信したデータに対する汎用要素102の反応に基づき、並列マシン100からの出力を提供できる。出力ポート114からの出力は、所与のパターンの一致を示す単一ビット、複数のパターンとの一致および不一致を示す複数のビットを含むワード、および全てまたは一部の汎用要素102および専用要素112の状態に対応する出力ベクトルを含むことができる。
並列マシン100の使用例には、パターン認識(例えば、音声認識、画像認識など)、信号処理、画像処理、コンピュータビジョン、暗号化などを含む。ある例では、並列マシン100は、有限状態機械(FSM)エンジン、フィールドプログラマブルゲートアレイ(FPGA)、およびそれらの変形を含むことができる。さらに、並列マシン100は、コンピュータ、ポケットベル、携帯電話、電子手帳、携帯音楽プレーヤ、ネットワーク装置(例えば、ルーター、ファイアウォール、スイッチ、またはそれらの任意の組合わせ)、制御回路、カメラなどの、もっと大きな装置内のコンポーネントであり得る。
並列マシン(例えば、FSMエンジン、PRP、または同類のもの)は、状態機械を実装できる。状態機械は、有向グラフとして表すことができる。図4は、ワード「DOG」内で見つかる文字のシーケンスを表す単純な状態機械図150を示す。状態152は、状態機械図150に対する入力状態である。状態154は、中間状態である。図4では、最終状態156(時々、終端状態とも呼ばれる)は、「G」状態の周囲の点線の境界によって識別される。一般的な場合には、最終状態に達すると、何らかのメカニズムを通して一致条件が示される。この一致条件は、並列マシン100(例えば、FSMエンジン12、PRP 32)からの明示的な信号によって表され得るか、または2進ワードとしてコード化され、メモリレジスタに格納され得る。
状態機械のサイズには理論的限界がない。一般的な場合、PRPまたはFSMエンジンは、PRPまたはFSMエンジンによって検出できる各特定シーケンスのシンボルに対して別個の状態機械を実装し得る。所望であれば、重複(共通パス)を除外するために、例えば、状態機械を組み合わせてもっと大きな実装にするか、または特定の状態機械実装のサイズを最小化するなど、状態機械に対して最適化を実行することができる。かかる最適化は、状態機械実装の統合サイズを削減し、従って、例えば、状態機械エンジンが状態機械を実装する。この最適化が完了すると、単一の大規模な状態機械が実装され得る。
図5は、大規模な状態機械図200を示す。一般的な場合、状態機械の実装は、前方および後方の両方で、複雑な結合を有し得る。図5に示す例では、1つの入力状態202が、2つの中間状態204を供給する。かかる状態機械では、多数の最終状態208および多数の他の中間状態204があり得る。
状態機械内の各状態は、その状態がアクティブか否かを示す瞬間状態を有する。アクティブな状態のみが入力シンボルに反応することができる。一実施形態では、入力シンボルが入力バス36上で受信されると、状態機械内の各アクティブな状態は、アクティブ化信号を生成すべきかを決定するためにそのシンボルを分析する。このアクティブ化信号は、シーケンス内の次の状態をアクティブにするために使用される。例えば、文字「b」を指定する第1の状態204は、第1のノード204がアクティブであり、文字「b」が入力データとして受信される場合、入力文字「b」上で、遷移206によって第1の状態204に結合された、第2の状態204をアクティブにする。
略図200では、入力状態202が最初にアクティブにでき、入力データが入力ノード202からの遷移206に一致する場合、下流の状態204をアクティブにできる。略図200全体に渡って、状態204、208は、入力データが受信されると、このようにアクティブにできる。アクティブにされた最終状態208は、入力データによる対象のシーケンスの一致に対応する。その結果、最終状態208のアクティブ化は、対象のシーケンスが入力データで受信されていることを示す。パターン認識機能を実装する有限状態機械エンジン100のコンテキストでは、最終状態208のアクティブ化は、対象の特定パターンが入力データ上で検出されていることを示すことができる。
一例では、各中間状態204および最終状態208は、有限状態機械エンジン100内の汎用要素102に対応できる。各遷移206は、汎用要素102間の接続に対応できる。従って、別の中間状態204または最終状態208に遷移する(例えば、それらに接続している遷移206を有する)中間状態204は、別の汎用要素102に結合できる汎用要素102に対応する。いくつかの特別な場合には、開始状態202は、必ずしも対応する汎用要素102を有し得ない。
有限状態機械エンジン100がFSMを実装するようにプログラムされている場合、汎用要素102の各々は、アクティブまたは非アクティブ状態のいずれかであり得る。非アクティブな汎用要素102は、入力インタフェース110においてデータストリームに反応しない。アクティブな汎用要素102は、入力インタフェース110においてデータストリームに反応することができ、入力データストリームが汎用要素102の設定と一致する場合、下流の汎用要素102をアクティブ化できる。汎用要素102が最終状態208に対応する場合、汎用要素102は、外部装置に対して一致の表示を提供するために、出力ポート114に結合でき、その外部装置は、いくつかの場合には、別の有限状態機械エンジン100であり得る。
プログラミングインタフェース111を介して有限状態機械エンジン100上にロードされたイメージが、所望のFSMが入力インタフェース110でのデータストリームに対する応答に基づき、下流の状態のアクティブ化を通して実装できるように、汎用要素102および汎用要素102間の接続を構成できる。一例では、汎用要素102は、単一のデータサイクル(例えば、単一の文字、文字セット、単一のクロックサイクル)の間アクティブのままであり、次いで、上流の汎用要素102によって再アクティブ化されない限り非アクティブへ切り替えられる。
最終状態208は、過去のイベントの圧縮した履歴を格納すると考えることができる。例えば、最終状態208をアクティブ化するために必要な入力データの1つまたは複数のシーケンスは、その最終状態208のアクティブ化によって表すことができる。一例では、最終状態208によって提供された出力は2進であり、すなわち、出力は、対応する対象のシーケンスが一致しているか否かを示す。FSM内にける最終状態208の中間状態204に対する比は、極めて小さい可能性がある。言い換えれば、FSM内には高い複雑性があり得るが、FSMの出力は、比較すると小さい可能性がある。
FSMエンジンが単一の結合(最適化)した状態機械を実装するか、または多数の独立した状態機械を実装するかにかかわらず、状態ベクトルの概念が存在する。状態ベクトルは、実装した状態機械内の個々の状態と、ベクトル内の個々の桁(例えば、ビット)位置との間に1対1対応を有する一次元ベクトルである。すなわち、状態機械内の各状態は、状態ベクトル内の桁に対応する。図4の場合、状態ベクトルは3ビット幅(1ビットが、状態152、154、および156の各々の状態を示す)である。図5の場合、状態ベクトルは74ビット幅である。状態機械は、任意に複雑であり得、それ故、理論上は、機械の全体サイズに関する制限がない。その結果として、状態ベクトルは無限に長い可能性がある。
しかし、並列マシンで実際の状態機械を実装するためには、通常、状態機械のサイズに何らかの有限制限が設けられる。この制限は厳密には定義されず、状態機械の実装に使用される並列マシンの特性に基づいて決定できる。
別のHFSM 400を図6に示す。図6に示すHFSM 400では、3つの有限状態機械エンジン402がそれらそれぞれの状態に関連する情報を、それらそれぞれ全ての状態ベクトル桁の全部または一部を使用して、1つの有限状態機械エンジン404に提供する。示す例では、各状態機械エンジン(402、404)は、そのそれぞれのプログラミングインタフェース(PROG)を介してプログラムされる。他の実施形態では、FSMエンジンの各々からのデータがFSMエンジン404をプログラムするために使用される。いくつかのかかる実施形態では、FSMエンジン404は、FSMエンジン402から受信した状態情報に適合するように設計される。
もっと複雑なHFSM 500を図7に示す。図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の1つまたは複数からの状態ビットの組合わせである。
図7に示すように、個々のFSMエンジンを階層的な方法で接続するための1つのアプローチは、1つのFSMエンジンの出力を階層内で次に高いレベルのFSMエンジンの入力に接続することである。HFSM 500は、1つのレベルからの状態情報が階層内の任意の他のレベルに提供(例えば、前方または後方へ供給)されるように実装され得ることを理解すべきである。例えば、FSMエンジン502からの状態情報は、FSMエンジン506に送信され得、他方、FSMエンジン508からの状態情報は、FSMエンジン502にフィードバックされ得る。大まかに言えば、1つまたは複数のFSMエンジンからの状態情報が、必要であると考えられるどんな構成であっても、1つまたは複数(例えば、全部)の他のFSMエンジンに提供できる。
図7に示す例は、書かれた言語の視覚的識別に対応する。処理が階層の高いレベルに進むにつれて、データストリームの蓄積された知識がそれに応じて増大する。例示した実施形態では、各レベルのFSMエンジン(FSMエンジン502、504、506および508)が、階層的認識機能を達成するために、カスケード接続されている。階層の各連続したレベルは、前のレベルの出力に適用される新しい規則(パターンシグネチャ)を実装できる。このようにして、非常に詳細なオブジェクトが、ごく根本的な基本情報の検出に基づいて識別できる。
例えば、レベル1(例えば、第1のFSMエンジン502)への生データ入力ストリームは、イメージに対するピクセル情報(例えば、所与のビットが黒/白またはオン/オフ)を含むことができる。FSMエンジン502は、ビットで形成された基本パターンを認識(例えば、識別)するようにプログラムできる。一例では、FSMエンジン502は、隣接したビットのグループが、縦線、横線、円弧などを形成する場合を識別するように構成される。これらのパターンの各々は、FSMエンジン502からの別個の出力ビット(または信号)によって識別できる。例えば、FSMエンジン502が、少なくとも3ビットの縦線を認識すると、高信号(例えば、論理的1)が、FSMエンジン504への出力ワードの第1ビット上に送信できる。FSMエンジン502が、少なくとも3ビットの横線を認識すると、高信号が、FSMエンジン504への出力ワードの第2ビット上に送信できる。
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エンジン504によって識別された文字の組合わせからワードを識別できる。第4のレベル(FSMエンジン508)は、次いで、FSMエンジン506によって識別されたワードによって形成されたフレーズを識別できる。それに応じて、より低レベルの出力内のパターンを識別するように高レベルがプログラムできる。その結果、より高レベル内で識別されたパターンを構成するコンポーネントを識別するように低レベルがプログラムできる(低レベルへのフィードバック)。
文字の視覚的識別が一例として使用される。しかし、本明細書で説明する階層的方法およびシステムは、他のデータに適用できる。例えば、音声に対応するデータの階層的処理は、レベル1において音素の組合わせから音節を、およびレベル2において音節の組合わせからワードを識別できる。他の例では、階層的処理は、自身を階層的方法で構築する機械データに適用できる。
HPRPまたは、HFSM 500などのHFSMを実装する際に、遭遇する可能性のある1つの問題は、入力データと出力データとの間の非対称関係である。この非対称は、実装されている状態機械が十分に大規模になると、悪化する。処理される各入力シンボルに対して、FSMエンジンの状態ベクトルが、入力シンボルに応答して変わり得る。一実施形態では、各FSMは、例えば、最大で2の16乗(64K)の状態を含む。各状態が状態ベクトル内の対応する桁を有する場合、状態ベクトルは64Kビット長である。その長さのベクトルをFSMエンジン間で渡すのは困難であり得る。入力データのサイズと出力データのサイズとの間でこの非対称を削減する方法について、次で説明する。
一実施形態では、データは、バス上のFSMエンジン間で送信される。Nビット幅のバスは、64Kb状態ベクトルを64Kb/Nサイクルで渡すことができる。他の実施形態では、状態ベクトルは、入力シンボルに応答して変わるベクトル内の数字のみが他のFSMエンジンに伝搬するように、圧縮される。例えば、各バスサイクルは、以前のシンボルサイクルで変わった状態ベクトル内の数字の位置を含み得る。この場合、出力は差分ベクトルと呼ぶことができる。
さらに別の実施形態では、各FSMエンジンが状態ベクトルから数字のサブセットのみを他のFSMエンジンに送信するように設計される。かかる一実施形態では、各FSMエンジンは、他のFSMエンジンに渡された状態情報のみが最終状態の情報であるようにプログラムされる。一般的な場合、最終状態の数は、状態の総数よりも少ない。PRP 32における最終状態の全体の状態に対する比は、例えば、PRPで実装される状態機械によって決まる。比率は、例えば、高い(1:5)か、またはかなり低い(1:10,000)可能性がある。
最終状態の全体の状態に対する比が1:10であり、かつ状態ベクトルが64Kbである実施例では、これは、出力ベクトルが64Kb/10つまり6,554ビットであることを意味する。この例では、PRP(8ビットシンボル)のすべての入力サイクルが、対応する6,544ビットの出力ベクトルを生成するであろう。
例を進めるため、ASCII文字セットが入力(シンボル)言語である例を使用する。この場合、各入力シンボルは、8ビットの2進ワードによって表される。代替実施形態では、各入力シンボルがNビットの2進ワードであるなど、他のシンボルが使用できる。
例えば、一実施形態では、図2に示すような、HPRP 30内の第2のレベルのPRP 32に送信された出力ベクトルは、第1のレベルの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(5×820)入力サイクルを必要とするであろう。これらの数は、例として役立つだけである。最終状態の全体の状態に対する比が増加すると、波及時間が増加する。同様に、階層のレベル数が増加すると、波及時間が、各連続したレベルに対して直線的に増加する。
上で使用した例に基づき、HFSMまたはHPRPが結果を生じるために、数桁分の(入力サイクルに対して)遅延があり得る。このタイプの遅延は、リアルタイムアプリケーションにおいて許容できない。前述したように、例えば、バスのサイズを増やすことにより、状態情報の転送に必要なサイクル数を削減できる。状態情報の転送に必要な時間を削減するために、バスサイクル時間も削減できる。さらに、前述したように、最後のシンボルの結果として変わった状態ベクトルの数字のみを識別する差分ベクトルを送信できる。他の無損失圧縮メカニズムも同様に使用できる。
入力と出力との間に1:1関係を実装するなど、この遅延を減らすための他の方法について、次で説明する。
HFSM 500などのHFSMにおいて、入力と出力との間に1:1関係を得るための1つの方法は、サイズ(幅)の等しい入力バス518および出力バス510を作成することである。出力バス510の幅は、HFSM 500自体によって決定できる。例えば、出力バス510のサイズは、状態機械エンジン502内の最終状態の数によって決定され得る。一般的に言えば、FSMエンジンは、多数の異なるパターンを一度に認識するようにプログラムされる。これらパターンの各々は、個々の状態機械として実装され得る。このようにして、FSMエンジンは、全て並行して実行する、状態機械のセットを実装し得る。
図8は、単一のFSMエンジン内で全て並行して実行する、状態機械532のグループ530の例を示す。図8では、8つの状態機械532が示されている。実際には、FSMエンジンは、何千もの別個の状態機械を実装し得る。
〔ステップ1:状態機械出力(最終状態)の統合〕
図9に示すように、各個々の状態機械532は、1つまたは複数の最終状態208を有し得る。いくつかの最終状態208があり得るが、特定の状態機械532のいずれの最終状態も同じか、または関連した意味を有する。これを言うもう1つの方法は、状態機械のいずれかの最終状態208に達する場合、状態機械532は一致を有すると考えられる。有効に、これは、単一の状態機械532の最終状態208が、図9に示すような単一の出力542を提供するために、最終状態に対応するプログラム可能要素の出力を連結するためにORゲート540を使用することなどにより、統合され得る(例えば、共にORされる)ことを意味する。図9に示す例では、状態機械532は、3つの最終状態208を共にORする。理解され得るように、最終状態208を統合するために、他の論理が使用できる。
一例では、各状態機械532の最終状態208が統合され(例えば、ORされ)て、結果がN個の状態機械532の論理グループに分類(例えば、収集)され、ここで、Nは、それぞれの入力シンボル言語内の桁数に等しい。第1レベルの入力シンボル言語が8ビット入力ワードを含む例では、8つの個々の状態機械出力542が、階層の次のレベルに提供される入力シンボル546の1つを提供するために、統合され得る。図7では、例えば、階層の第1レベルのみが、標準語(ASCIIまたはその他)と相関する入力シンボルを受信する。その例では、次いで、FSMエンジン502が出力バス510上のFSMエンジン504に提供される8ビットの出力ベクトルを生成し得る。階層の次のレベルが、前のレベルによって決定される意味を有する入力シンボルを受信する。
8のセットにおけるように、状態機械がグループ化されると、入力および出力ベクトルを正規化する第1レベルが完了している。本開示で使用する例からの数を使用すると、820の最終状態が103の8ビットワードで表すことができる。これらの8ビットワードの各々が、8つの個々の状態機械532に対して最終状態の状況をコード化する。この8ビットの出力ベクトルでコード化された最終状態の総数は、8よりもはるかに多いことを心に留めておかれたい。これは、同じ状態機械532内で最終状態208に関して実行されたORする関数が、9以上の状態を一緒にORし得るからである。
一実施形態では、各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に配信できるようにするが、完全な状態情報を転送するための追加のバスサイクルを必要とする。
一実施形態では、プログラム可能要素の1つのグループに対する状態情報が、FSMエンジンの表示およびFSMエンジン内のグループのアドレスを含むアドレス情報を送信することにより、別のFSMエンジン内のプログラム可能要素のグループに送信される。その情報は、例えば、図7のバス510上に配信され得る。
〔ステップ2:PRP上の入力バスの数の拡大〕
FSM 12またはPRP 32の一実施態様は、入力シンボルを、PRP内で実装された全ての状態機械532に一斉送信する単一のストリーム入力を有する。しかし、FSM 12およびPRP 32の定義は、2つ以上のストリーム入力(それぞれ、16および36)を実装するように拡張され得る。前述の例では、独立したストリーム入力の総数は103に等しい。完全に実装するため、例えば、HPRPは、次いで、各PRP 32に対して、103の8ビット入力または820ビットの入力バスを必要とする。
一実施形態では、FSM 12またはPRP 32は、状態機械要素(SME)など、プログラム可能要素の配列560上で実装される。一例では、各SMEは、同種の二次元配列560内にある。この配列560は、各領域がそれ自身の専用ストリーム入力(それぞれ、16および36)を有する、個々の領域に細分され得る。図11は、SME要素のかかる二次元配列560を示す。図11は、SMEグループ562の配列560に細分され、SMEの各グループ562は、例えば、有限状態機械エンジン800内のブロック802に対応し得る。全体の配列560は、例えば、16×16のSMEグループ(全部で256グループ)を含み、各グループ562は2つのSME(GOT)の128グループを含む(例えば、各グループ562は、図16に示す行806など、16行のGOTを含む)。
いくつかの実施形態では、GOTの各行は8つのGOT、追加のプログラム可能要素(例えば、ブール論理またはカウンタ)を含み、2つの出力を出力バス18、38に提供できる。利用可能な全ての出力がFSM 12およびPRP 32にわたって使用される場合、かかる配列は、例えば、次のレベルPRP 32まで進めるために、最大で8192ビットを有し得る。
HFSM 500が図7に示すように構築される場合、FSMエンジン502および504などの、2つの異なる半導体素子内のSMEグループ562の二次元配列は、一緒に接続され得る。2つの半導体素子を一緒に接続する様々な手段がある。入出力カウントが十分に高くなる場合、例えば、ダイ間相互接続が利用され得る。図12に示すような、一実施態様例では、HPRP 570内の256個のSMEグループ562のうちの各1つが、ダイの底面上の8ビットインタフェース(例えば、入力バス36、42)およびダイの上の8ビットインタフェース(例えば、出力バス38、40)を持ち得る。これらのインタフェースが事前定義した位置に配置されると、PRP582の1レベル(PRP1)を、低いレベルのPRP(PRP0)の上に直接、積み重ねることができ、入力および出力インタフェースが自然に位置合わせされ、相互接続574などの相互接続(例えば、貫通シリコンビア)を使用して接続される。
この位置合わせは、列の各レベルが同じダイ上に含まれるSMEのグループを表す、
SME列(入力パス572、出力パス578、ならびに相互接続574および576によって定義される)の概念を有効に作成する。前述した数の例を継続して使用すると、各PRPレベル(580、582および584)上で、SMEグループ562は、前のレベル上で実装された最大8つの状態機械によって進められ得る。前のレベルからの8つの状態機械は、SMEグループ562によって課される制限まで任意に複雑であり得る。図12は、SME列のうちの1つを強調表示した、3レベルのHPRP(側面図)の例を示す。各レベルでは、SMEのグループ化により、そのレベル(例えば、コード化した8ビットワード)から次に高いレベルへ状態情報を提供する。
全体としては、このように構成された場合、HPRPは、PRP階層の各レベルに対して、1つの入力クロックサイクルのみの遅延で、実質的に瞬間的な結果を提供できる。入力および出力ワードの非対称性によってもたらされる問題が解決され、全体の階層は、ストリーム入力572と同期して動作し得る。
ある実施形態では、1つのFSMエンジン12からの状態情報が、2つ以上の他のFSMエンジン12に送信される。かかる実施形態を図6に示す。かかる実施形態を、例えば、図12に示すHPRP 570を参照して説明すると、PRP 580からの状態情報は、PRP 584に送信できる。かかる一実施形態では、相互接続576および574は、状態情報を列内の任意のブロックに伝送するバスを形成する。例えば、相互接続574および576は、1つまたは複数の貫通ビア相互接続を含み得、状態情報を非隣接のPRPに渡すために、各列内に提供できる。かかる一実施形態では、スタック内の各PRPが貫通ビアに接続され、そこから情報を受信する。別の実施形態では、PRPの入力が、製造プロセス中に随時、貫通ビアに選択的に接続される。
他の実施形態では、SMEの1つのグループからの状態情報が、同じPRP 32内の隣接するブロックに、そして、それらのブロックを通して他のPRP 32(例えば、同じブロック列内の)に配信される。
一実施形態では、1つもしくは複数のPRP 32からの状態情報、またはその状態情報から引き出された情報が、階層内の他のPRP 32を再プログラムするために使用される。図13は、階層の部分を再プログラムするためにフィードバックを使用する4レベル階層の例を示す。一般に、所与のPRP 32(例えば、第1の有限状態機械エンジン602)は、高いか、もしくは低いレベルの有限状態機械エンジンからの出力に基づいて、またはそれ自身の出力に基づいて、再プログラムできる。従って、第1の有限状態機械エンジン602は、ランタイム中に変化する状態に適合するように変えることができる。一例では、フィードバックは、より高いレベルに基づいて学習(再プログラム)するために、低いレベルに対して使用できる。例として有限状態機械エンジン602を用いると、フィードバックは、プログラミングインタフェース602Bで受信でき、有限状態機械エンジン602に対して、新規または更新されたプログラムの形式であり得る。一例では、更新されたプログラムは、有限状態機械エンジン602の一部または全てを再プログラムできる。
図13に示す4レベル階層600は、4つの有限状態機械エンジン602、604、606、608で実装され、その各々が入力ポート602A、604A、606A、608A、プログラミングインタフェース602B、604B、606C、608B、および出力ポート602C、604C、606C、608Cを有する。第1の有限状態機械エンジン602は、階層600の第1のレベルを実装し、階層600の第2のレベルを実装する第2の有限状態機械エンジン604に出力を提供する。第3および第4の有限状態機械エンジン606、608は同様に、階層600の第3および第4のレベルを実装する。一例では、第4の有限状態機械エンジン608からの出力が、第1の有限状態機械エンジン602によって受信された入力データに関する階層600の分析に基づき、階層600の出力として外部装置に送信される。その結果、第4の有限状態機械エンジン608からの出力が、階層600に対する集合的な出力に対応する。他の例では、有限状態機械エンジン602、604、または606のうちの他のものからの出力が、階層600に対する集合的な出力に対応し得る。
第2、第3および第4の有限状態機械エンジン604、606、608からの出力は各々、下のレベルで、有限状態機械エンジン602、604、606のプログラミングインタフェース602B、604B、606Bに対してフィードバックできる。例えば、第4の有限状態機械エンジン608からの出力が、第3の有限状態機械エンジン606のプログラミングインタフェース606Bに対してフィードバックされる。第3の有限状態機械エンジン606は、それ故、第4の有限状態機械エンジン608からの出力に基づいて再プログラムできる。その結果、第3の有限状態機械エンジン606は、ランタイム中にそのプログラムを修正できる。第1および第2の有限状態機械エンジン602、604は、同様に、それぞれ第2および第3の有限状態機械エンジン604、606からの出力に基づいて、ランタイム中に再プログラムできる。
一例では、有限状態機械エンジン604、606、608からの出力からのフィードバックが、有限状態機械エンジン602、604、606を再プログラムするためのプログラムを形成するために処理(例えば、分析およびコンパイル)される。例えば、有限状態機械エンジン608からの出力が、プログラミングインタフェース606Bに送信される前に、処理装置614によって分析およびコンパイルされ得る。処理装置614は、有限状態機械エンジン608からの出力に基づき、有限状態機械エンジン606に対して更新されたプログラムを生成できる。処理装置614は、出力を分析し、更新されたプログラムを第3の有限状態機械エンジン606用にコンパイルできる。更新されたプログラムは、次いで、第3の有限状態機械エンジン606を再プログラムするために、プログラミングインタフェース606Bを介して、第3の有限状態機械エンジン606上にロードできる。一例では、更新されたプログラムは、現在のプログラムからの部分的変更のみを含み得る。従って、一例では、更新されたプログラムは、有限状態機械エンジン602、604、606、608上で現在のプログラムの一部のみを置き換える。別の例では、更新されたプログラムは、現在のプログラムの全てまたは大部分を置き換える。同様に、処理装置610、612は、第2および第3の有限状態機械エンジン604、606からの出力に基づき、同様な方法で、フィードバックを分析およびコンパイルすることができる。処理装置610、612、614は、1つもしくは複数の追加の有限状態機械エンジンで実装できるか、または、異なるタイプの機械(例えば、フォンノイマンアーキテクチャを有するコンピュータ)で実装できる。
いくつかの例では、処理装置610、612、614は、新しいプログラムをコンパイルする前に、高いレベルからの出力を分析する。一例では、処理装置610、612、614は、出力を分析して低いレベルのプログラムをどのように更新するかを決定し、次いで、新規または分析に基づいて更新した低いレベルのプログラムをコンパイルする。階層600では、所与の有限状態機械エンジンでのフィードバックが、所与の有限状態機械エンジンの真上にあるレベルから受信されるが、フィードバックは、任意のレベルの有限状態機械エンジンから、高いか、低いか、または同じレベルの別の有限状態機械エンジンへのものであり得る。例えば、フィードバックは、有限状態機械エンジンのプログラミング入力において、その同じ有限状態機械エンジンの出力から、または、同じか、高いか、もしくは低いレベルの別の有限状態機械エンジンの出力から受信され得る。さらに、有限状態機械エンジンは、複数の異なる有限状態機械エンジンからフィードバックを受信できる。フィードバックに基づく有限状態機械エンジンの再プログラミングは、入力データ内のパターンの識別からやがて切り離され得る(例えば、生データの処理と一緒のリアルタイムでなく)。
低いレベルの再プログラミングに影響を及ぼすために情報を階層の下に送り返す目的は、低いレベルが、対象のパターンをもっと効率良く識別でき得るようにすることであり得る。いくつかの例では、情報を高いレベルへ送信するプロセスは、情報を階層の高いレベルへ転送するには時間がかかることを認識して、可能であれば回避される。いくつかの例では、高いレベルは、本質的に、システムにとって新しいパターンの識別を解決するために使用できる。これは、生物学的な脳の新皮質で起こるプロセスで使用されるものと類似し得る。一例では、パターンが低いレベルで完全に解決できる場合は、そうすべきである。フィードバックのメカニズムは、「学習」を階層の低いレベルに転送する1つの方法である。情報を階層の下に押し戻すこのプロセスは、新しいか、または良く知らないパターンを処理するために、階層の上位を保持するのに役に立つ。その上、認識プロセス全体は、階層の様々なレベルを通るデータ転送量を削減することによって、加速できる。
フィードバックは、階層の低いレベルが、入力におけるデータストリームをもっと敏感に検知できるようにし得る。情報のこの「押し戻し」の結果は、判断が階層の低いレベルで行われ得、かつ、非常に迅速に行われ得ることである。その結果、一例では、低いレベルの有限状態機械エンジン(例えば、第1の有限状態機械エンジン602)からの出力が、第4の有限状態機械エンジン608からの出力と共に、階層600から別の装置への集合的な出力に対応できる。外部装置は、例えば、パターンが階層600によっていつ識別されたかを判断するために、これらの有限状態機械エンジン602、608の各々からの出力をモニタリングできる。
一例では、フィードバック情報は、分析したデータストリームに対応する識別情報を含むことができる。例えば、識別情報は、データの識別特性、データのフォーマット、データのプロトコル、および/または他のタイプの識別情報を含むことができる。識別情報は、例えば、処理装置610により、入力データに対する分析方法を適合させるために、収集、分析、および使用され得る。有限状態機械エンジンは、次いで、その適合した分析方法でプログラムされ得る。識別情報は、例えば、入力データの言語を含むことができる。有限状態機械エンジンは、入力データの言語を決定するために最初にプログラムでき、そして、言語が入力に対応して識別されると、ランタイム中に適合(例えば、再プログラム)され得る。有限状態機械エンジンに対する適合した分析方法は、識別した言語に対する分析方法にもっと明確に対応できる。最後に、有限状態機械エンジンは、適合した分析方法を用いて、将来の入力データを分析し得る。フィードバックプロセスは、分析方法の将来の適合を可能にするため、追加の識別情報が入力データ内で見つかり得るように、反復的であり得る。
有限状態機械エンジン上にロードするためのプログラム(本明細書では「イメージ」とも呼ぶ)は、図19に関して以下で説明するように、コンパイラによって生成できる。一般に、コンパイルは、計算的に集中的なプロセスであり、パターンシグネチャの大規模なデータベースを初めてコンパイルする際に最も顕著であり得る。ランタイム操作では、高いレベルの有限状態機械エンジンは、低いレベルの有限状態機械エンジンに対する増分プログラム更新の形で、フィードバックを低いレベルに提供することができる。従って、低いレベルの有限状態機械エンジンに対するフィードバック情報は、コンパイルするのに計算的にそれほど集中的でない、元のプログラムに対するかなり小さい増分更新であり得る。
図14は、4つの有限状態機械エンジン702、704、706、708で実装された4レベル階層700の別の例を示す。ここでは、第2、第3、および第4のレベルの有限状態機械エンジン704、706、708が、生データストリームのみならず、低いレベルからの入力を受信する。それに応じて、レベル2、3、および4は、低いレベルからのパターンと生データとの組合わせからのパターンを識別できる。
図13および図14から分かるように、有限状態機械エンジンは、階層に対する生データ入力が、有限状態機械エンジンからの出力と同様に、自身を含めて、任意の他の有限状態機械エンジンに送信できる、ほぼいかなる方法でも、カスケード接続できる。さらに、所与の有限状態機械エンジンからの出力が、入力データとして、および/または有限状態機械エンジンに対するプログラムを更新するためのフィードバックとして、別の有限状態機械エンジンに送信できる。
上で述べたように、有限状態機械エンジンが入力データストリームの1ビット(またはワード)を処理する時間に起因して、有限状態機械エンジンを順番にカスケード接続すると、全ての有限状態機械エンジンを通って、入力データストリームを完全に処理する時間が増加し得る。階層の最も低いレベルは、しばしば、最も低い(最も粒度の大きい)レベルの入力を受信する。その結果、低いレベルは、高いレベルの出力よりもアクティブであると期待されるはずである。すなわち、階層内の各連続するレベルは、より高いレベルのオブジェクトを組み立てることができる。一例では、有限状態機械エンジンは、入力データがその有限状態機械エンジンに対してどれくらい速く供給できるかを制限する最大入力レートを有する。この入力レートは、単一のデータサイクルと考えることができる。各連続するデータサイクルにおいて、有限状態機械エンジンは、多数の最終状態をアクティブ化する潜在能力を有する。これは、(特に、階層の最も低いレベルで)有限状態機械エンジンに相当量の出力(一致)データを生成させ得る。例えば、入力がバイトのストリームとして最も低いレベルの有限状態機械エンジンに提供される場合、任意の所与のデータサイクルについて、有限状態機械エンジンが複数バイトの状態情報を生成することが可能になり得る。1バイトの情報が複数バイトの状態情報を生成できる場合、有限状態機械エンジンの階層全体は、情報が階層の上に渡されるように、同期されるべきである。しかし、フィードバックは、同期される必要はなく、フィードバックが低いレベルで迅速に受信されれば、低いレベルはそれだけ迅速に適合でき、かつ、分析がより効果的になる。
一例として、(単一の有限状態機械エンジンで実装された)階層の各レベルに対する最大サイズの出力は、1024バイトに等しい可能性があり、階層の深さは、4レベルに等しい可能性がある。有限状態機械エンジンに対する入力データストリームのデータレートは、128MB/秒に等しい可能性がある。これらの条件で、階層の各レベルは、7.63マイクロ秒で横断され得る。4レベル階層では、有限状態機械エンジンのスタック全体の総解決時間は、4×7.63マイクロ秒、つまり30.5マイクロ秒である。30.5マイクロ秒の解決時間では、どうやら入力データ周波数は32KB/sに制限されるべきのようである。
特に、これは、有限状態機械エンジンの構成に高度に依存する。有限状態機械エンジンは、入力データレートと状態機械サイズを対比してトレードオフするように構成可能であり得る。さらに、有限状態機械エンジンに対する入力ワードのサイズは、対応する修正が、その有限状態機械エンジン上にロードされた個々のイメージを作成したコンパイラに対して行われる場合、調整できる。
一例では、図1〜図14に関連して説明したように、1つまたは複数のFSMを実装するための方法は、フォンノイマンアーキテクチャを有するマシン上のソフトウェアで実装できる。その結果、ソフトウェア命令は、プロセッサに、生データストリームに関する第1のレベルの分析FSMを実装させ得る。第1のレベルのFSMからの出力は、次いで、第2のレベルのFSMに従ってプロセッサにより処理され、同様に続く。さらに、前述したフィードバックループが、FSMのレベルからの出力を分析し、それを使用して1つまたは複数のレベルに対して新しい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は、以下で説明するように、プログラム可能スイッチを用いて連結できる。その結果、FSMは、SME804、805を状態関数に対応するようにプログラムすることにより、かつ、FSM内の状態間の遷移に対応するようにSME 804、805を選択的に連結することにより、FSMエンジン800上で実装できる。
図15は、FSMエンジン800の例の全体図を示す。FSMエンジン800は、プログラム可能ブロック間スイッチ803と選択的に連結できる複数のブロック802を含む。さらに、ブロック802は、信号(例えば、データ)を受信し、そのデータをブロック802に提供するために、入力ブロック809(例えば、データ入力ポート)に選択的に結合できる。また、ブロック802は、ブロック802から外部装置(例えば、別のFSMエンジン800)に信号を提供するために、出力ブロック813(例えば、出力ポート)にも選択的に結合できる。FSMエンジン800は、プログラム(例えば、イメージ)をFSMエンジン800にロードするために、プログラミングインタフェース811も含むことができる。イメージは、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は、本明細書で2のグループ(GOT:group of two)810と呼ぶ要素のペアに編成された複数のSME 804、805を含む。一例では、ブロック802に、16の行806が含まれる。
図17は、行806の例を示す。GOT 810は、プログラム可能行内スイッチ812により、他のGOT 810および行806内の任意の他の要素824と選択的に結合できる。GOT 810は、ブロック内スイッチ808を備えた他の行806内の他のGOT 810、またはブロック間スイッチ803を備えた他のブロック802内の他のGOT 810とも結合できる。一例では、GOT 810は、第1および第2の入力814、816、および出力818を有する。第1の入力814は、GOT 810の第1のSME 804に結合され、第2の入力816は、GOT 810の第2のSME 805に結合される。
一例では、行806は、第1および第2の複数の行相互接続導体820、822を含む。一例では、GOT 810の入力814、816が、1つまたは複数の行相互接続導体820、822に結合でき、出力は、1つの行相互接続導体820、822に結合できる。一例では、第1の複数の行相互接続導体820は、行806内の各GOT 810の各SME 804に結合できる。第2の複数の行相互接続導体822は、行806内の各GOT 810の1つのSME 804に結合できるが、GOT 810の他のSME 805に結合できない。一例では、第2の複数の行相互接続導体822の前半は、行806内のSME 804の前半(各GOT810から1つのSME 804)に結合でき、第2の複数の行相互接続導体822の後半は、行806内のSME 805の後半(各GOT810から他のSME 804)に結合できる。第2の複数の行相互接続導体822とSME 804、805との間の制限された接続性は、本明細書では、「パリティ」と呼ぶ。一例では、行806は、カウンタ、プログラム可能ブール論理要素、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、プログラマブルプロセッサ(例えば、マイクロプロセッサ)、および他の要素などの、専用要素824も含むことができる。
一例では、専用要素824は、カウンタ(本明細書ではカウンタ824とも呼ぶ)を含む。一例では、カウンタ824は、12ビットのプログラマブル減算カウンタを含む。12ビットのプログラマブルカウンタ824は、計数入力、リセット入力、およびゼロカウント出力を有する。計数入力は、アサートされると、カウンタ824の値を1だけ減少させる。リセット入力は、アサートされると、カウンタ824に、関連するレジスタから初期値をロードさせる。12ビットのカウンタ824に対して、初期値として12ビットの数までをロードできる。カウンタ824の値がゼロ(0)まで減少されると、ゼロカウント出力がアサートされる。カウンタ824は、少なくとも2つのモード、パルス(pulse)およびホールド(hold)も有する。カウンタ824が、パルスモードに設定されると、カウンタ824がゼロまで減少されるとき、クロックサイクル中にゼロカウント出力がアサートされ、次のクロックサイクルではゼロカウント出力はもはやアサートされていない。カウンタ824が、ホールドモードに設定されると、カウンタ824がゼロまで減少されるとき、クロックサイクル中にゼロカウント出力がアサートされ、アサートされているリセット入力によってカウンタ824がリセットされるまで、アサートされたままである。一例では、専用要素824は、ブール論理を含む。いくつかの例では、このブール論理は、FSMエンジン800内の終端状態SMEから情報を抽出するために使用できる。抽出された情報は、状態情報を他のFSMエンジン800に転送するため、および/またはFSMエンジン800の再プログラムもしくは別のFSMエンジン800の再プログラムに使用したプログラミング情報を転送するために、使用できる。
図18は、GOT 810の例を示す。GOT 810は、第1のSME 804および第2のSME 805を含み、それらは、入力814、816を有し、ORゲート830および3入力(3−to−1)マルチプレクサ842に結合された出力826、828を有する。3入力マルチプレクサ842は、GOT 810の出力808を、第1のSME 804、第2のSME 805、またはORゲート830のいずれかに結合するように設定できる。ORゲート830は、GOT 810の共通の出力818を形成するために、出力826、828の両方を連結するために使用できる。一例では、第1および第2のSME 804、805は、前述のように、第1のSME 804の入力814が行相互接続導体822のいくつかに結合でき、かつ、第2のSME 805の入力816が他の行相互接続導体822に結合できるところに、パリティを示す。一例では、GOT 810内の2つのSME 804、805が、スイッチ840のいずれかまたは両方を設定することにより、カスケード接続できるか、かつ/または自身へループバックできる。SME 804、805は、SME 804、805の出力826、828を他のSME 804、805の入力814、816に結合することにより、カスケード接続できる。SME 804、805は、出力826、828を自分自身の入力814、816に結合することにより、自身にループバックできる。その結果、第1のSME 804の出力826は、第1のSME 804の入力814および第2のSME 805の入力816のどちらにも結合しないか、その1つ、または両方に結合できる。
一例では、状態機械要素804、805は、検出線834と並列に結合された、ダイナミックランダムアクセスメモリ(DRAM)でしばしば使用されるような、複数のメモリセル832を含む。1つのかかるメモリセル832は、高値または低値(例えば、1または0)のいずれかに対応するような、データ状態に設定できるメモリセルを含む。メモリセル832の出力は、検出線834に結合され、メモリセル832への入力は、データストリーム線836上のデータに基づいて信号を受信する。一例では、データストリーム線836上の入力は、メモリセル832の1つを選択するように復号される。選択されたメモリセル832は、その格納されたデータ状態を検出線834への出力として提供する。例えば、データ入力ポート809で受信されるデータは、デコーダ(図示せず)に提供でき、デコーダは、データストリーム線836の1つを選択できる。一例では、デコーダは、ASCII文字を256ビットの1つに変換できる。
メモリセル832は、従って、メモリセル832が高値に設定され、かつ、データストリーム線836上のデータがメモリセル832に対応する場合、高信号を検出線834に出力する。データストリーム線836上のデータがメモリセル832に対応し、かつ、メモリセル832が低値に設定される場合、メモリセル832は、低信号を検出線834に出力する。メモリセル832から検出線834上への出力は、検出回路838によって検知される。一例では、入力線814、816上の信号は、それぞれの検出回路838をアクティブまたは非アクティブ状態のいずれかに設定する。非アクティブ状態に設定されると、検出回路838は、それぞれの検出線834上の信号にかかわらず、低信号をそれぞれの出力826、828上に出力する。アクティブ状態に設定されると、検出回路838は、高信号が、それぞれのSME 804、805のメモリセル834の1つから検出されると、高信号をそれぞれの出力線826、828上に出力する。アクティブ状態では、検出回路838は、それぞれのSME 804、805のメモリセル834の全てからの信号が低い場合、低信号をそれぞれの出力線826、828上に出力する。
一例では、SME 804、805は、256メモリセル832を含み、各メモリセル832は、異なるデータストリーム線836に結合されている。従って、SME 804、805は、選択された1つまたは複数のデータストリーム線836が、その上に高信号を有する場合、高信号を出力するようにプログラムできる。例えば、SME 804は、第1のメモリセル832(例えば、ビット0)を高く設定し、他の全てのメモリセル832(例えば、ビット1〜255)を低く設定できる。それぞれの検出回路838がアクティブ状態のとき、SME 804は、ビット0に対応するデータストリーム線836がその上に高信号を有する場合、出力826上に高信号を出力する。他の例では、SME 804は、複数のデータストリーム線836のうちの1本が、適切なメモリセル832を高値に設定することにより、その上に高信号を有する場合、高信号を出力するように設定できる。
一例では、メモリセル832は、関連するレジスタからビットを読み取ることによって、高値または低値に設定できる。その結果、SME 804は、コンパイラによって作成されたイメージをレジスタ内に格納し、レジスタ内のビットを関連するメモリセル832にロードすることにより、プログラムできる。一例では、コンパイラによって作成されたイメージは、高および低(例えば、1および0)ビットのバイナリイメージを含む。イメージは、FSMエンジン800を、SME 804、805をカスケード接続することによりFSMとして動作するようにプログラムできる。例えば、第1のSME 804は、検出回路838をアクティブ状態に設定することにより、アクティブ状態に設定できる。第1のSME 804は、ビット0に対応するデータストリーム線836がその上に高信号を有する場合、高信号を出力するように設定できる。第2のSME 805は、最初は非アクティブ状態に設定され得るが、アクティブな場合は、ビット1に対応するデータストリーム線836がその上に高信号を有する場合、高信号を出力するように設定できる。第1のSME 804および第2のSME 805は、第1のSME 804の出力826を第2のSME 805の入力816に結合するように設定することによりカスケード接続できる。従って、高信号が、ビット0に対応するデータストリーム線836上で検知される場合、第1のSME 804は、高信号を出力826上に出力し、第2のSME 805の検出回路838をアクティブ状態に設定する。高信号が、ビット1に対応するデータストリーム線836上で検知される場合、第2のSME 805は、別のSME 504、SME 805をアクティブ化するため、またはFSMエンジン800からの出力に対して、高信号を出力826上に出力する。
図19は、コンパイラが、ソースコードを、並列マシンをプログラムするように構成されたイメージに変換するための方法1000の例を示す。方法1000は、ソースコードを構文木に解析すること(ブロック1002)、構文木をオートマトンに変換すること(ブロック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から状態qへの遷移、すなわちδ(p,α)が、ノードpからノードqへの有向接続(directed connection)によって示される。一例では、オートマトンを反転すると、何らかのシンボルαに関する各遷移p→qが、同じシンボルに関してq→pと反転されている、新しいオートマトンが生成される。反転では、開始状態が最終状態になり、最終状態が開始状態になる。一例では、オートマトンによって受け入れられた(例えば、一致した)言語は、オートマトンに連続して入力する場合に、最終状態に達する、全ての可能な文字列のセットである。オートマトンによって受け入れられた言語内の各文字列は、開始状態から1つまたは複数の最終状態へのパスを追跡する。
ブロック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)を含む実施形態では、イメージはバイナリイメージと呼ぶことができる。そのビットは、SME 804、805、専用要素824、およびプログラム可能スイッチをプログラムするために、FSMエンジン800上にロードでき、プログラムされたFSMエンジン800は、ソースコードによって記述された機能性を有するFSMを実装できるようになる。配置(ブロック1010)およびルーティング(ブロック1012)により、FSMエンジン800内の特定の位置における特定のハードウェア要素をオートマトン内の特定の状態にマッピングできる。その結果、イメージ内のビットは、所望の機能(または複数)を実装するために、特定のハードウェア要素および/またはプログラム可能スイッチをプログラムできる。一例では、イメージは、機械コードをコンピュータ可読媒体に格納することによって公開できる。別の例では、イメージは、イメージをディスプレイ装置上に表示することによって公開できる。さらに別の例では、イメージは、そのイメージをFSMエンジン800上にロードするためのプログラミング装置などの別の装置に、そのイメージを送信することにより公開できる。さらにまた別の例では、イメージは、そのイメージを並列マシン(例えば、FSMエンジン800)上にロードすることによって公開できる。
一例では、イメージは、ビット値をイメージからSME 804、805および他のハードウェア要素824へ直接ロードするか、または、イメージを1つまたは複数のレジスタにロードし、次いで、ビット値をレジスタからSME 804、805および他のハードウェア要素824に書き込むかのいずれかによって、FSMエンジン800上にロードできる。一例では、プログラム可能スイッチ(例えば、ブロック間スイッチ803、ブロック内スイッチ808、および行内スイッチ812)の状態。一例では、FSMエンジン800のハードウェア要素(例えば、SME 804、805、他の要素824、プログラム可能スイッチ803、808、812)は、プログラミング装置および/またはコンピュータが、イメージを1つまたは複数のメモリアドレスに書き込むことにより、イメージをFSMエンジン800上にロードできるように、メモリマッピングされる。
本明細書に記載する方法例は、少なくとも部分的に機械またはコンピュータで実装できる。いくつかの例は、前述の例で説明した通りに方法を実行するように電子装置を構成するように操作可能な命令でコード化されたコンピュータ可読媒体または機械可読媒体を含むことができる。かかる方法の実装は、マイクロコード、アセンブリ言語コード、高水準言語コード、または同類のものなどのコードを含むことができる。かかるコードは、様々な方法を実行するためのコンピュータ可読命令を含むことができる。コードは、コンピュータプログラム製品の一部を形成し得る。さらに、コードは、実行中または他の時に、1つまたは複数の揮発性もしくは不揮発性のコンピュータ可読媒体上に有形的に格納され得る。これらのコンピュータ可読媒体には、ハードディスク、取り外し可能磁気ディスク、取り外し可能光ディスク(例えば、コンパクトディスクおよびデジタルビデオディスク)、磁気カセット、メモリカードまたはスティック、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、および同類のものを含み得るが、それらに限定されない。
図20は、フォンノイマンアーキテクチャを有するコンピュータ1500の一例を大まかに示す。本開示の内容を読み、理解すると、当業者は、ソフトウェアプログラム内に定義されている機能を実行するために、コンピュータベースのシステム内のコンピュータ可読媒体からソフトウェアプログラムを起動できる方法を理解するであろう。当業者は、本明細書で開示する方法を実装および実行するために設計された1つまたは複数のソフトウェアプログラムを作成するために採用できる様々なプログラム言語をさらに理解するであろう。プログラムは、Java、C++、または1つもしくは複数の他の言語などの、オブジェクト指向言語を使用するオブジェクト指向形式で構築できる。あるいは、プログラムは、アセンブリ、Cなどの手続き型言語を使用する手続き指向形式で構築できる。ソフトウェアコンポーネントは、遠隔手続呼び出しなどを含む、アプリケーションプログラムインタフェースまたはプロセス間通信技術などの、当業者に周知の任意のいくつかのメカニズムを用いて通信できる。様々な実施形態の教示は、任意の特定のプログラム言語または環境に限定されない。
従って、他の実施形態が実現できる。例えば、コンピュータ、メモリシステム、磁気もしくは光ディスク、いくつかの他の記憶装置、または任意のタイプの電子装置もしくはシステムなどの製品は、命令1524(例えば、コンピュータプログラム命令)を格納しているメモリ(例えば、取り外し可能記憶媒体、ならびに電子、光、または電磁導体を含む任意のメモリ)など、コンピュータ可読媒体1522に結合されている1つまたは複数のプロセッサ1502を含み、それらの命令は、1つまたは複数のプロセッサ1502によって実行されると、前述した方法に関して説明したいずれかの動作を実行する結果になる。
コンピュータ1500は、いくつかのコンポーネントに直接結合されたか、かつ/またはバス1508を利用するプロセッサ1502を有するコンピュータシステムの形態をとることができる。かかるコンポーネントには、メインメモリ1504、スタティックまたは不揮発性メモリ1506、および大容量記憶1516を含むことができる。プロセッサ1502に結合された他のコンポーネントには、ビデオディスプレイなどの出力装置1510、キーボードなどの入力装置1512、マウスなどのカーソル制御装置1514を含むことができる。プロセッサ1502および他のコンポーネントをネットワーク1526に結合するためのネットワークインタフェース装置1520は、バス1508にも結合できる。命令1524はさらに、いくつかの周知の転送プロトコル(例えば、HTTP)のうちの任意の1つを利用して、ネットワークインタフェース装置1520を介し、ネットワーク1526を通じて送信または受信できる。バス1508に結合されたこれらの要素のいずれかは、実現する特定の実施形態によって、欠けているか、単独で存在するか、または複数存在し得る。
一例では、1つまたは複数のプロセッサ1502、メモリ1504、1506、または記憶装置1516は各々、実行される際に、コンピュータに、本明細書で説明する方法の任意の1つまたは複数を実行させることができる命令1524を含むことができる。代替実施形態では、コンピュータ1500は、スタンドアロン装置として動作するか、または他の装置に結合(例えば、ネットワーク接続)できる。ネットワーク環境では、コンピュータ1500は、サーバークライアント環境でサーバーまたはクライアントの資格で、またはピアツーピア(分散)ネットワーク環境でピア装置として動作できる。コンピュータ1500には、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、携帯情報端末(PDA)、携帯電話、ウェブアプライアンス、ネットワークルーター、スイッチもしくはブリッジ、またはその装置によって行われる動作を指定する命令のセットを実行できる任意の装置を含むことができる。さらに、単一のコンピュータ1500のみが示されているが、「コンピュータ」という用語は、本明細書で説明する方法論の任意の1つまたは複数を実行する命令のセット(または複数のセット)を個々にまたは一緒に実行する装置の任意の集合を含むとも解釈されるべきである。
コンピュータ1500は、1つまたは複数の通信プロトコル(例えば、ユニバーサルシリアルバス(USB)、IEEE 1394など)を使用して、周辺装置と通信するための出力コントローラ1528も含むことができる。出力コントローラ1528は、例えば、イメージを、コンピュータ1500と通信的に結合されたプログラミング装置1530に提供できる。プログラミング装置1530は、並列マシン(例えば、並列マシン100、FSMエンジン800)をプログラムするように構成できる。他の例では、プログラミング装置1530は、コンピュータ1500と統合し、かつ、バス1508と結合できるか、またはネットワークインタフェース装置1520もしくは別の装置を介してコンピュータ1500と通信できる。
コンピュータ可読媒体1524は単一媒体として示されているが、「コンピュータ可読媒体」という用語は、命令1524の1つまたは複数のセットを格納する単一または複数の媒体(例えば、集中型もしくは分散データベース、または関連するキャッシュおよびサーバー、ならびに/またはプロセッサ1502レジスタ、メモリ1504、1506、および記憶装置1516など、様々な記憶媒体)を含むと解釈すべきである。「コンピュータ可読媒体」という用語は、コンピュータによる実行のための命令のセットを格納、コード化もしくは保持でき、かつ、コンピュータに本発明の方法論の任意の1つもしくは複数を実行させるか、または命令のかかるセットで利用されるか、もしくはそれらに関連するデータ構造を格納、コード化もしくは保持できる、任意の媒体を含むとも解釈すべきである。「コンピュータ可読媒体」という用語は、その結果、ソリッドステートメモリ、光、および磁気媒体など、有形的媒体を含むが、それらに限定されないと解釈すべきである。
読み手が技術的開示の本質および要点を確認できるようにする要約を要求する37 C.F.R.セクション1.72(b)に従うために、要約が提供されている。それは、特許請求の範囲または意味を制限または解釈するために使用されないという理解で提出されている。以下の特許請求の範囲は、本明細書によって詳細な説明に組み込まれ、各請求項は、そのままで別個の実施形態として存在する。
〔実施形態例〕
例1は、複数のプログラム可能要素を有するプログラム可能装置を含み、そのプログラム可能要素は、1つまたは複数の有限状態機械を実装するように構成され、その複数のプログラム可能要素は、N桁の入力を受信し、そのN桁の入力に応じてM桁の出力を提供するように構成され、そのM桁の出力は全部より少ないプログラム可能要素からの状態情報を含む。
例2は、複数のプログラム可能要素を含む第1の並列マシンであって、そのプログラム可能要素が1つまたは複数の有限状態機械を実装するように構成され、その複数のプログラム可能要素がN桁の入力を受信し、そのN桁の入力に応じてM桁の出力を提供するように構成され、そのM桁の出力が全部より少ないプログラム可能要素からの状態情報を含む、第1の並列マシンと、そのM桁の出力の少なくとも一部を受信し、処理するように構成されている第2の並列マシンとを有する階層型並列マシンを含む。
例3は、複数のプログラム可能要素を有するプログラム可能装置を含み、そのプログラム可能要素が、1つまたは複数の有限状態機械を実装するように構成され、その複数のプログラム可能要素が、N桁の入力を受信し、そのN桁の入力に応じてM桁の出力を提供するように構成され、そのM桁の出力が、プログラム可能要素の各々からの状態情報を圧縮することによって形成される。
例4は、複数のプログラム可能要素を含む第1の並列マシンを有する階層型並列マシンを含み、そのプログラム可能要素が、1つまたは複数の有限状態機械を実装するように構成され、その複数のプログラム可能要素が、N桁の入力を受信し、そのN桁の入力に応じてM桁の出力を提供するように構成され、そのM桁の出力が、プログラム可能要素の各々からの状態情報を圧縮することによって形成される。
例5は、並列マシンから別の装置へ状態情報を提供する方法を含み、その並列マシンが、複数のプログラム可能要素を含み、そのプログラム可能要素の各々が、対応する状態を有するように構成されている。本方法は、並列マシン内のプログラム可能要素の各々の状態を含む、状態情報を決定することと、その状態情報を圧縮することと、その圧縮した状態情報を別の装置に提供することとを含む。
例6は、少なくとも1つのN桁の入力および複数のN桁の出力を有する第1のレベルの並列マシンを有する階層型並列マシンを含み、そのN桁の出力の各々が、第1レベルの並列マシン上で実装されたN個の状態機械のそれぞれのグループに対応する。
例7は、少なくとも1つの有限状態機械を実装するように構成された複数のプログラム可能要素を含む並列マシンを含む。その並列マシンは、プログラム可能要素の各々の状態を含む状態情報を決定し、その状態情報を圧縮し、そして、その圧縮した状態情報を別の装置に提供するように構成される。
例8では、例1〜例7の任意の主題が、随意に、複数のプログラム可能要素がプログラム可能要素の2つ以上のグループのうちの1つを含むことを含むことができる。
例9では、例1〜例8の任意の主題が、随意に、プログラム可能要素の1つのグループに結合され、かつ、N桁の入力を受信するように構成された、N桁の入力インタフェース、およびプログラム可能要素の1つのグループに結合され、かつ、M桁の出力を提供するように構成された、M桁の出力インタフェースを含むことができる。
例10では、例1〜例9の任意の主題が、随意に、プログラム可能要素の1つのグループがプログラム可能要素のブロックを含むことができる。
例11では、例1〜例10の任意の主題が、随意に、プログラム可能要素のブロックがプログラム可能要素の複数の行を含むことができ、その行の各々は複数のブロック内スイッチのうちのそれぞれ1つに結合されている。
例12では、例1〜例11の任意の主題が、随意に、各行内のプログラム可能要素が、2つの状態機械要素の複数のグループ、および別のプログラム可能要素を含むことを含むことができる。
例13では、例1〜例12の任意の主題が、随意に、プログラム可能要素の1つのグループをプログラム可能要素の別の1つのグループ、入力ポート、および/または出力ポートに選択的に結合するように構成されたプログラム可能スイッチを含む。
例14では、例1〜例13の任意の主題が、随意に、複数のプログラム可能要素および複数のプログラム可能スイッチをプログラムするように構成されたプログラムを格納するように構成されたレジスタを含むことができる。
例15では、例1〜例14の任意の主題が、随意に、NがMに等しいことを含むことができる。
例16では、例1〜例15の任意の主題が、随意に、MがNの整数倍であることを含むことができる。
例17では、例1〜例16の任意の主題が、随意に、有限状態機械のうちの同じ1つを実装するために使用されたプログラム可能要素の2つ以上からの出力を統合するように構成されたOR論理を含むことができる。
例18では、例1〜例17の任意の主題が、随意に、プログラム可能要素がN個の状態機械の論理グループを実装するように構成され、N個の状態機械の出力は、M桁の出力を提供するために統合されることを含むことができる。
例19では、例1〜例18の任意の主題が、随意に、論理がORゲートを含むことを含むことができる。
例20では、例1〜例19の任意の主題が、随意に、M桁の出力内に含まれている状態情報が圧縮された状態情報をどのように含むことを含むことができる。
例21では、例1〜例20の任意の主題が、随意に、複数のプログラム可能要素が状態機械要素を含むことを含むことができる。
例22では、例1〜例21の任意の主題が、随意に、M桁の出力が異なるベクトルをどのように含むことを含むことができる。
例23では、例1〜例22の任意の主題が、随意に、実装された1つまたは複数の有限状態機械内の各状態が、状態ベクトル内のそれぞれの桁に対応するか、かつ、異なるベクトルが、プログラム可能装置に提供された入力シンボルに応じて変わる状態ベクトル内の桁のみを含むことを含むことができる。
例24では、例1〜例23の任意の主題が、随意に、実装された1つまたは複数の有限状態機械内の各状態が、状態ベクトル内のそれぞれの桁に対応するか、かつ、M桁の出力が状態ベクトル内の桁のサブセットのみを含むことを含むことができる。
例25では、例1〜例24の任意の主題が、随意に、桁のサブセットが、1つまたは複数の有限状態機械内の最終状態に対応するそれらの桁を含むことを含むことができる。
例26では、例1〜例25の任意の主題が、随意に、装置内で実装された全ての状態機械がN桁の入力を受信することを含むことができる。
例27では、例1〜例26の任意の主題が、随意に、複数のプログラム可能要素がプログラム可能要素2つ以上のグループの1つを含むか、そのグループの各々がそれ自身の専用入力を有することを含むことができる。
例28では、例1〜例27の任意の主題が、随意に、N桁の入力が半導体ダイの底面上にあるか、かつM桁の出力が半導体ダイの上にあることを含むことができる。
例29では、例1〜例28の任意の主題が、随意に、複数のプログラム可能要素が、プログラム可能要素の2つ以上のグループの1つを含むか、かつ、プログラム可能装置が、プログラム可能装置内のグループの1つからグループの別の1つに状態情報を提供することを含むことができる。
例30では、例1〜例29の任意の主題が、随意に、第2の並列マシンが、M桁の出力全体を受信し、処理するように構成されていることを含むことができる。
例31では、例1〜例30の任意の主題が、随意に、第1の並列マシンに結合され、N桁の入力を提供するように構成された入力バス、および第1の並列マシンと第2の並列マシンとの間に結合され、M桁の出力の少なくとも一部を第2の並列マシンに提供するように構成されている出力バスを含むことができる。
例32では、例1〜例31の任意の主題が、随意に、入力バスおよび出力バスのサイズが等しいことを含むことができる。
例33では、例1〜例32の任意の主題が、随意に、第1および第2の並列マシン内の対応するグループが、相互接続のそれぞれのグループによって結合されていることを含むことができる。
例34では、例1〜例33の任意の主題が、随意に、M桁の出力が、第2の並列マシン内で実装されている各状態機械に提供されることを含むことができる。
例35では、例1〜例34の任意の主題が、随意に、第2の並列マシンが、複数のグループに分類された複数のプログラム可能要素を含むか、M桁の出力が事前定義された方法でグループのそれぞれ1つに提供されることを含むことができる。
例36では、例1〜例35の任意の主題が、随意に、第2の並列マシンが、アドレス情報を第2の並列マシンに送信するように構成された複数のプログラム可能要素を含むか、アドレス情報が、第2の並列マシン内のどのグループにM桁の出力が提供されているかを示すことを含むことができる。
例37では、例1〜例36の任意の主題が、随意に、並列マシンがスタックされることを含むことができる。
例38では、例1〜例37の任意の主題が、随意に、複数のプログラム可能要素がプログラム可能要素の2つ以上のグループのうちの1つを含み、さらに各グループに対応する論理を含むか、グループのそれぞれ1つに対応する論理がそのグループ内の2つ以上のプログラム可能要素からの状態情報を統合するか、かつ、そのグループからのM桁の出力の1つまたは複数の桁がかかる論理の関数であることを含むことができる。
例39では、例1〜例38の任意の主題が、随意に、M桁の出力が、プログラム可能要素からの状態情報を圧縮することにより形成されることを含むことができる。
例40では、例1〜例39の任意の主題が、随意に、有限状態機械のうちの同じ1つを実装するために使用されたプログラム可能要素の2つ以上からの出力を統合するように構成された論理を含むことができる。
例41では、例1〜例40の任意の主題が、随意に、プログラム可能要素が、N個の状態機械の論理グループを実装するように構成されているか、N個の状態機械の出力がM桁の出力を提供するために統合されることを含むことができる。
例42では、例1〜例41の任意の主題が、随意に、状態情報を圧縮することが状態情報に対して無損失圧縮アルゴリズムを適用することを含むことを含むことができる。
例43では、例1〜例42の任意の主題が、随意に、圧縮された状態情報を他の装置に提供することが、圧縮された状態情報を別の並列マシンに提供することを含むことを含むことができる。
例44では、例1〜例43の任意の主題が、随意に、圧縮された状態情報を他の装置に提供することが、圧縮された状態情報をシステムメモリに提供することを含むことを含むことができる。
例45では、例1〜例44の任意の主題が、随意に、状態情報を圧縮することが、並列マシン上で実装された有限状態機械内の最終状態を統合することを含むことを含むことができる。
例46では、例1〜例45の任意の主題が、随意に、少なくとも1つのN桁の入力および複数のN桁の出力を有する第1のレベルの並列マシンを含むことができ、N桁の出力の各々が、第1のレベルの並列マシン上で実装されているN個の状態機械のそれぞれのグループに対応する。
例47では、例1〜例46の任意の主題が、随意に、第1のレベルの並列マシン上で実装された少なくとも1つの状態機械が、少なくとも1つの状態機械の複数の最終状態に対応する複数のプログラム可能要素を含み、複数の最終状態に対応する複数のプログラム可能要素の出力が、N桁の出力のうちの1つの1桁を提供するために共に統合されることを含むことができる。
例48では、例1〜例47の任意の主題が、随意に、N桁の出力の1つに提供されたデータが、第1のレベルの並列マシン上で実装されたN個の状態機械のそれぞれのグループに対する最終状態の状態をコード化することを含むことができる。
例49では、例1〜例48の任意の主題が、随意に、第1のレベルの並列マシンが有限状態機械エンジンを含むことを含むことができる。
例50では、例1〜例49の任意の主題が、随意に、有限状態機械エンジンがプログラム可能要素のグループの配列を含み、かつ、プログラム可能要素のグループの各々がN桁の出力のそれぞれ1つに結合されていることを含むことができる。
例51では、例1〜例50の任意の主題が、随意に、第1のレベルの並列マシンが複数のN桁の出力を有し、かつ、プログラム可能要素のグループの各々が第1のレベルの並列マシンのN桁の入力のそれぞれ1つに結合されていることを含むことができる。
例52では、例1〜例51の任意の主題が、随意に、第2のレベルの並列マシンが有限状態機械エンジンを含むことを含むことができる。
例53では、例1〜例52の任意の主題が、随意に、有限状態機械エンジンがプログラム可能要素のグループの配列を含み、かつ、プログラム可能要素のグループの各々がN桁の入力のそれぞれ1つに結合されていることを含むことができる。
例54では、例1〜例53の任意の主題が、随意に、第2のレベルの並列マシンが複数のN桁の出力を有し、かつ、プログラム可能要素のグループの各々が第2のレベルの並列マシンのN桁の出力のそれぞれ1つに結合されていることを含むことができる。
例55では、例1〜例54の任意の主題が、随意に、第1の並列マシンが第1のダイを含み、かつ第2の並列マシンが第1のダイで積み重ねられた第2のダイを含むことを含むことができる。
例56では、例1〜例55の任意の主題が、随意に、第3の並列マシンおよびバスをさらに含むことができ、その第3の並列マシンは、第1のダイおよび第2のダイで積み重ねられた第3のダイを含み、その第2のダイがスタック内の第1のダイと第3のダイとの間にあり、そのバスは第1の並列マシンと第3の並列マシンとの間で状態情報を転送するように構成される。
例57では、例1〜例56の任意の主題が、随意に、バスが複数の相互接続を含むことを含むことができる。
例58では、例1〜例57の任意の主題が、随意に、相互接続が貫通ビア相互接続を含むことを含むことができる。
例59では、例1〜例58の任意の主題が、随意に、並列マシンが有限状態機械エンジンを含むことを含むことができる。
例60では、例1〜例59の任意の主題が、随意に、どのように有限状態機械エンジンがパターン認識プロセッサを含むことを含むことができる。
例61では、例1〜例60の任意の主題が、随意に、並列マシンがフィールドプログラマブルゲートアレイを含むことを含むことができる。
例62では、例1〜例61の任意の主題が、随意に、第1のレベルの並列マシンの少なくとも1つのN桁の入力が生データを受信するように構成されることを含むことができる。
例63では、例1〜例62の任意の主題が、随意に、第2のレベルの並列マシンのN桁の入力の各々が、第2のレベルの並列マシン上で実装されたN個の状態機械のそれぞれのグループに対応し、第2のレベルの並列マシン上で実装されたN個の状態機械のそれぞれのグループが、第1のレベルの並列マシン上で実装された最大N個の状態機械により駆動されることを含むことができる。
例64では、例1〜例63の任意の主題が、随意に、他の装置が、圧縮された状態情報を受信および処理するように構成された、第2の並列マシンを含むことを含むことができる。
例65では、例1〜例64の任意の主題が、随意に、状態情報を圧縮するように構成されている並列マシンが、その並列マシン上で実装された有限状態機械の最終状態を統合するように構成されている並列マシンを含むことを含むことができる。
例66では、例1〜例65の任意の主題が、随意に、最終状態を統合するように構成されたブール論理を含むことができる。
例67では、例1〜例66の任意の主題が、随意に、状態情報を圧縮するように構成されている並列マシンが、入力シンボルに応じて変化している状態のみを識別する差分ベクトルを出力するように構成されている並列マシンを含むことを含むことができる。
例68では、例1〜例67の任意の主題が、随意に、状態情報を圧縮するように構成されている並列マシンが、出力ベクトルを出力するように構成されている並列マシンを含むことを含むことができ、その出力ベクトルは、並列マシン上で実装された有限状態機械内の最終状態に対する状態情報のみを提供する。

Claims (71)

  1. 複数のプログラム可能要素を含むプログラム可能装置であって、
    前記プログラム可能要素が1つまたは複数の有限状態機械を実装するように構成され、前記複数のプログラム可能要素が、N桁の入力を受信し、かつ前記N桁の入力に応じてM桁の出力を提供するように構成され、前記M桁の出力が全部より少ないプログラム可能要素からの状態情報を含む、
    プログラム可能装置。
  2. 前記複数のプログラム可能要素がプログラム可能要素の2つ以上のグループのうちの1つを含む、請求項1に記載のプログラム可能装置。
  3. プログラム可能要素の前記1つのグループに結合され、かつ前記N桁の入力を受信するように構成されたN桁の入力インタフェースと、
    プログラム可能要素の前記1つのグループに結合され、かつ前記M桁の出力を提供するように構成されたM桁の出力インタフェースとを
    さらに含む、請求項2に記載のプログラム可能装置。
  4. プログラム可能要素の前記1つのグループが、プログラム可能要素のブロックを含む、請求項2に記載のプログラム可能装置。
  5. プログラム可能要素の前記ブロックが、プログラム可能要素の複数の行を含み、前記行の各々が複数のブロック内スイッチのそれぞれ1つと結合されている、請求項4に記載のプログラム可能装置。
  6. 前記行の各々内の前記プログラム可能要素が、
    2つの状態機械要素の複数のグループと
    別のプログラム可能要素を含む、
    請求項5に記載のプログラム可能装置。
  7. プログラム可能要素の前記1つのグループを、プログラム可能要素の別の1つのグループ、入力ポート、および/または出力ポートと選択的に結合するように構成されたプログラム可能スイッチを
    さらに含む、請求項2に記載のプログラム可能装置。
  8. 前記複数のプログラム可能要素および前記複数のプログラム可能スイッチをプログラムするように構成されたプログラムを格納するように構成されたレジスタを
    さらに含む、請求項7に記載のプログラム可能装置。
  9. NがMと等しい、請求項1に記載のプログラム可能装置。
  10. MがNの整数倍である、請求項1に記載のプログラム可能装置。
  11. 前記有限状態機械の同じ1つを実装するために使用された2つ以上の前記プログラム可能要素からの出力を統合するように構成されたOR論理を
    さらに含む、請求項1に記載のプログラム可能装置。
  12. 前記プログラム可能要素がN個の状態機械の論理グループを実装するように構成され、前記N個の状態機械の前記出力が前記M桁の出力を提供するように統合される、請求項11に記載のプログラム可能装置。
  13. 前記論理がORゲートを含む、請求項11に記載のプログラム可能装置。
  14. 前記M桁の出力に含まれる前記状態情報が圧縮された状態情報を含む、請求項1に記載のプログラム可能装置。
  15. 前記複数のプログラム可能要素が状態機械要素を含む、請求項1に記載のプログラム可能装置。
  16. 前記M桁の出力が差分ベクトルを含む、請求項1に記載のプログラム可能装置。
  17. 前記実装された1つまたは複数の有限状態機械内の各状態が、状態ベクトル内のそれぞれの桁に対応し、かつ、前記差分ベクトルが、前記プログラム可能装置に提供された入力シンボルに応じて変化する前記状態ベクトル内の桁のみを含む、請求項16に記載のプログラム可能装置。
  18. 前記実装された1つまたは複数の有限状態機械内の各状態が、状態ベクトル内のそれぞれの桁に対応し、かつ、前記M桁の出力が前記状態ベクトル内の前記桁のサブセットのみを含む、請求項1に記載のプログラム可能装置。
  19. 前記桁の前記サブセットが前記1つまたは複数の有限状態機械内の最終状態に対応する桁を含む、請求項1に記載のプログラム可能装置。
  20. 前記装置で実装された全ての状態機械が前記N桁の入力を受信する、請求項1に記載のプログラム可能装置。
  21. 前記複数のプログラム可能要素がプログラム可能要素の2つ以上のグループのうちの1つを含み、前記グループの各々がそれ自身の専用入力を有する、請求項1に記載のプログラム可能装置。
  22. 前記N桁の入力が半導体ダイの底面上にあり、かつ、前記M桁の出力が半導体ダイの上にある、請求項1に記載のプログラム可能装置。
  23. 前記複数のプログラム可能要素がプログラム可能要素の2つ以上のグループのうちの1つを含み、かつ、前記プログラム可能装置が状態情報を、前記プログラム可能装置内の前記グループの1つから前記グループの別の1つに提供するように構成されている、請求項1に記載のプログラム可能装置。
  24. 複数のプログラム可能要素を含む第1の並列マシンであって、前記プログラム可能要素が1つまたは複数の有限状態機械を実装するように構成され、前記複数のプログラム可能要素がN桁の入力を受信し、前記N桁の入力に応じてM桁の出力を提供するように構成され、前記M桁の出力が全部より少ない前記プログラム可能要素からの状態情報を含む、第1の並列マシンと、
    前記M桁の出力の少なくとも一部を受信および処理するように構成された第2の並列マシンと
    を備える階層型並列マシン。
  25. 前記第2の並列マシンが、前記M桁の出力全体を受信および処理するように構成されている、請求項24に記載の階層型並列マシン。
  26. 前記第1の並列マシンに結合され、前記N桁の入力を提供するように構成された、入力バスと、
    前記第1の並列マシンと前記第2の並列マシンとの間に結合され、前記M桁の出力の少なくとも一部を前記第2の並列マシンに提供するように構成された、出力バスと
    をさらに含む、請求項24に記載の階層型並列マシン。
  27. 前記入力バスおよび出力バスが同じサイズである、請求項26に記載の階層型並列マシン。
  28. 前記第1および第2の並列マシン内の前記対応するグループが相互接続のそれぞれのグループによって結合されている、請求項27に記載の階層型並列マシン。
  29. 前記M桁の出力が、前記第2の並列マシン内で実装された各状態機械に提供される、請求項24に記載の階層型並列マシン。
  30. 前記第2の並列マシンが複数のグループに分類された複数のプログラム可能要素を含み、前記M桁の出力が事前定義した方法に従って前記グループのそれぞれ1つに提供される、請求項24に記載の階層型並列マシン。
  31. 前記第2の並列マシンが、アドレス情報を前記第2の並列マシンに送信するように構成された複数のプログラム可能要素を含み、前記アドレス情報が、前記第2の並列マシン内の前記グループのいずれに前記M桁の出力が提供されているかを示す、
    請求項24に記載の階層型並列マシン。
  32. 前記並列マシンが積み重ねられている、請求項24に記載の階層型並列マシン。
  33. 前記複数のプログラム可能要素がプログラム可能要素の2つ以上のグループのうちの1つを含み、さらに、各グループに対応する論理を含み、前記グループのそれぞれ1つに対応する前記論理がそのグループ内の2つ以上のプログラム可能要素からの状態情報を統合し、かつ、そのグループからの前記M桁の出力の1つまたは複数の桁がかかる論理の関数である、請求項24に記載の階層型並列マシン。
  34. 前記M桁の出力が前記プログラム可能要素からの状態情報を圧縮することによって形成される、請求項24に記載の階層型並列マシン。
  35. 複数のプログラム可能要素であって、前記プログラム可能要素が1つまたは複数の有限状態機械を実装するように構成され、前記複数のプログラム可能要素がN桁の入力を受信し、前記N桁の入力に応じてM桁の出力を提供するように構成され、前記M桁の出力が前記プログラム可能要素の各々からの状態情報を圧縮することによって形成される、複数のプログラム可能要素を備える、
    プログラム可能装置。
  36. NがMと等しい、請求項35に記載のプログラム可能装置。
  37. MがNの整数倍である、請求項35に記載のプログラム可能装置。
  38. 前記有限状態機械の同じ1つを実装するために使用された2つ以上の前記プログラム可能要素からの出力を統合するように構成された論理をさらに含む、
    請求項35に記載のプログラム可能装置。
  39. 前記プログラム可能要素がN個の状態機械の論理グループを実装するように構成され、前記N個の状態機械の前記出力が前記M桁の出力を提供するように統合される、請求項38に記載のプログラム可能装置。
  40. 複数のプログラム可能要素を含む第1の並列マシンであって、前記プログラム可能要素が1つまたは複数の有限状態機械を実装するように構成され、前記複数のプログラム可能要素がN桁の入力を受信し、前記N桁の入力に応じてM桁の出力を提供するように構成され、前記M桁の出力が前記プログラム可能要素の各々からの状態情報を圧縮することによって形成される、第1の並列マシンを備える
    階層型並列マシン。
  41. NがMと等しい、請求項40に記載の階層型並列マシン。
  42. MがNの整数倍である、請求項40に記載の階層型並列マシン。
  43. 並列マシンからの状態情報を別の装置に提供する方法であり、前記並列マシンが複数のプログラム可能要素を含み、前記プログラム可能要素の各々が対応する状態を有するように構成された方法であって、
    前記並列マシン内の前記プログラム可能要素の各々の前記状態を含む、状態情報を決定することと、
    前記状態情報を圧縮することと、
    前記圧縮された状態情報を前記他の装置に提供することと
    を含む方法。
  44. 前記状態情報を圧縮することが無損失圧縮アルゴリズムを前記状態情報に適用することを含む、請求項43に記載の方法。
  45. 前記圧縮された状態情報を前記他の装置に提供することが、前記圧縮された状態情報を別の並列マシンに提供することを含む、請求項43に記載の方法。
  46. 前記圧縮された状態情報を前記他の装置に提供することが、前記圧縮された状態情報をシステムメモリに提供することを含む、請求項43に記載の方法。
  47. 前記状態情報を圧縮することが前記並列マシン上で実装された有限状態機械内の最終状態を統合することを含む、請求項43に記載の方法。
  48. 少なくとも1つのN桁の入力および複数のN桁の出力を有する第1のレベルの並列マシンであって、前記N桁の出力の各々が、前記第1のレベルの並列マシン上で実装されているN個の状態機械のそれぞれのグループに対応する、第1のレベルの並列マシンを備える、階層型並列マシン。
  49. 前記第1のレベルの並列マシン上で実装された少なくとも1つの前記状態機械が、前記少なくとも1つの状態機械の複数の最終状態に対応する複数のプログラム可能要素を含み、前記複数の最終状態に対応する前記複数のプログラム可能要素の前記出力が、前記N桁の出力のうちの1つの1桁を提供するために共に統合される、請求項48に記載の階層型並列マシン。
  50. 前記N桁の出力の1つに提供されたデータが、前記第1のレベルの並列マシン上で実装されたN個の状態機械のそれぞれのグループに対する前記最終状態の前記状態をコード化する、請求項48に記載の階層型並列マシン。
  51. 前記第1のレベルの並列マシンが有限状態機械エンジンを含む、請求項48に記載の階層型並列マシン。
  52. 前記有限状態機械エンジンがプログラム可能要素のグループの配列を含み、かつ、プログラム可能要素の前記グループの各々が前記N桁の出力のそれぞれ1つに結合されている、請求項51に記載の階層型並列マシン。
  53. 前記第1のレベルの並列マシンが複数のN桁の入力を有し、かつ、プログラム可能要素の前記グループの各々が前記第1のレベルの並列マシンの前記N桁の入力のそれぞれ1つに結合されている、請求項52に記載の階層型並列マシン。
  54. 前記第2のレベルの並列マシンが有限状態機械エンジンを含む、請求項48に記載の階層型並列マシン。
  55. 前記有限状態機械エンジンがプログラム可能要素のグループの配列を含み、かつ、プログラム可能要素の前記グループの各々が前記N桁の入力のそれぞれ1つに結合されている、請求項54に記載の階層型並列マシン。
  56. 前記第2のレベルの並列マシンが複数のN桁の出力を有し、かつ、プログラム可能要素の前記グループの各々が、前記第2のレベルの並列マシンの前記N桁の出力のそれぞれ1つに結合されている、請求項55に記載の階層型並列マシン。
  57. 前記第1の並列マシンが第1のダイを含み、かつ前記第2の並列マシンが前記第1のダイで積み重ねられた第2のダイを含む、請求項48に記載の階層型並列マシン。
  58. 第3の並列マシンおよびバスをさらに含み、前記第3の並列マシンが、前記第1のダイおよび前記第2のダイで積み重ねられた第3のダイを含み、前記第2のダイが前記スタック内の前記第1のダイと前記第3のダイとの間にあり、かつ、前記バスが前記第1の並列マシンと前記第3の並列マシンとの間で状態情報を転送するように構成されている、請求項57に記載の階層型並列マシン。
  59. 前記バスが複数の相互接続を含む、請求項58に記載の階層型並列マシン。
  60. 前記相互接続が貫通ビア相互接続を含む、請求項59に記載の階層型並列マシン。
  61. 前記並列マシンが有限状態機械エンジンを含む、請求項48に記載の階層型並列マシン。
  62. 前記有限状態機械エンジンがパターン認識プロセッサを含む、請求項61に記載の階層型並列マシン。
  63. 前記並列マシンがフィールドプログラマブルゲートアレイを含む、請求項48に記載の階層型並列マシン。
  64. 前記第1のレベルの並列マシンの前記少なくとも1つのN桁の入力が、生データを受信するように構成された、請求項48に記載の階層型並列マシン。
  65. 前記第2のレベルの並列マシンの前記N桁の入力の各々が、前記第2のレベルの並列マシン上で実装されたN個の状態機械のそれぞれのグループに対応し、前記第2のレベルの並列マシン上で実装されたN個の状態機械の各グループが、前記第1のレベルの並列マシン上で実装された最大N個の状態機械により駆動される、請求項48に記載の階層型並列マシン。
  66. 少なくとも1つの有限状態機械を実装するように構成された複数のプログラム可能要素を含む並列マシンであって、
    前記プログラム可能要素の各々の前記状態を含む、状態情報を決定し、
    前記状態情報を圧縮し、
    前記圧縮された状態情報を別の装置に提供するように構成された、並列マシン。
  67. 前記他の装置が第2の並列マシンを含み、前記第2の並列マシンが、前記圧縮された状態情報を受信および処理するように構成された、請求項66に記載の並列マシン。
  68. 前記状態情報を圧縮するように構成されている前記並列マシンが、前記並列マシン上で実装された有限状態機械の最終状態を統合するように構成されている前記並列マシンを含む、請求項66に記載の並列マシン。
  69. 前記最終状態を統合するように構成されたブール論理をさらに含む、請求項68に記載の並列マシン。
  70. 前記状態情報を圧縮するように構成されている前記並列マシンが、差分ベクトルを出力するように構成されている前記並列マシンを含み、前記差分ベクトルが、入力シンボルに応じて変化している状態のみを識別する、請求項66に記載の並列マシン。
  71. 前記状態情報を圧縮するように構成されている前記並列マシンが、出力ベクトルを出力するように構成されている前記並列マシンを含み、前記出力ベクトルが、前記並列マシン上で実装された有限状態機械内の最終状態に対する状態情報のみを提供する、請求項66に記載の並列マシン。
JP2013514375A 2010-06-10 2011-06-09 状態情報を提供するためのプログラム可能装置、階層型並列マシン、方法 Active JP6258034B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US35355110P 2010-06-10 2010-06-10
US61/353,551 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
US13/037,706 2011-03-01
PCT/US2011/039861 WO2011156644A2 (en) 2010-06-10 2011-06-09 Programmable device, heirarchical parallel machines, methods for providing state information

Publications (3)

Publication Number Publication Date
JP2013534660A true JP2013534660A (ja) 2013-09-05
JP2013534660A5 JP2013534660A5 (ja) 2016-09-08
JP6258034B2 JP6258034B2 (ja) 2018-01-10

Family

ID=45097043

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013514375A Active JP6258034B2 (ja) 2010-06-10 2011-06-09 状態情報を提供するためのプログラム可能装置、階層型並列マシン、方法

Country Status (6)

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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015508588A (ja) * 2011-12-15 2015-03-19 マイクロン テクノロジー, インク. ステートマシンラチスにおけるブール型論理
JP2016189188A (ja) * 2015-03-27 2016-11-04 京セラドキュメントソリューションズ株式会社 コンピューティング・デバイス、方法及びプログラム

Families Citing this family (75)

* 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
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
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
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
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
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
US9501705B2 (en) 2009-12-15 2016-11-22 Micron Technology, Inc. Methods and apparatuses for reducing power consumption in a pattern recognition processor
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
US8726253B2 (en) 2011-01-25 2014-05-13 Micron Technology, Inc. Method and apparatus for compiling regular expressions
WO2012103151A2 (en) 2011-01-25 2012-08-02 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 マイクロン テクノロジー, インク. オートマトンの入次数および/または出次数を制御するための量化子の展開
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
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
US9443156B2 (en) * 2011-12-15 2016-09-13 Micron Technology, Inc. Methods and systems for data analysis 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
US9389841B2 (en) 2012-07-18 2016-07-12 Micron Technology, Inc. Methods and systems for using state vector data in 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
US9304968B2 (en) 2012-07-18 2016-04-05 Micron Technology, Inc. Methods and devices for programming a state machine engine
US9524248B2 (en) 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
US9063532B2 (en) * 2012-08-31 2015-06-23 Micron Technology, Inc. Instruction insertion in state machine engines
US9075428B2 (en) * 2012-08-31 2015-07-07 Micron Technology, Inc. Results generation for state machine engines
US9501131B2 (en) * 2012-08-31 2016-11-22 Micron Technology, Inc. Methods and systems for power management in a pattern recognition processing system
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
US9251440B2 (en) * 2012-12-18 2016-02-02 Intel Corporation Multiple step non-deterministic finite automaton matching
US9304768B2 (en) 2012-12-18 2016-04-05 Intel Corporation Cache prefetch for deterministic finite automaton instructions
US9268570B2 (en) 2013-01-23 2016-02-23 Intel Corporation DFA compression and execution
US10089043B2 (en) 2013-03-15 2018-10-02 Micron Technology, Inc. Apparatus and methods for a distributed memory system including memory nodes
US9703574B2 (en) 2013-03-15 2017-07-11 Micron Technology, Inc. Overflow detection and correction in state machine engines
US9448965B2 (en) 2013-03-15 2016-09-20 Micron Technology, Inc. Receiving data streams in parallel and providing a first portion of data to a first state machine engine and a second portion to a second state machine
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
WO2015134814A1 (en) 2014-03-05 2015-09-11 Ayasdi, Inc. Systems and methods for capture of relationships within information
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
WO2016109570A1 (en) 2014-12-30 2016-07-07 Micron Technology, Inc Systems and devices for accessing a state machine
US10769099B2 (en) * 2014-12-30 2020-09-08 Micron Technology, Inc. Devices for time division multiplexing of state machine engine signals
US11366675B2 (en) 2014-12-30 2022-06-21 Micron Technology, Inc. Systems and devices for accessing a state machine
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
US10691964B2 (en) 2015-10-06 2020-06-23 Micron Technology, Inc. Methods and systems for event reporting
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
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
WO2021035079A1 (en) * 2019-08-22 2021-02-25 Google Llc Propagation latency reduction
US11451230B2 (en) * 2020-04-23 2022-09-20 Xilinx, Inc. Compute dataflow architecture
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 阿波罗智联(北京)科技有限公司 状态机处理、状态处理方法、装置、电子设备及存储介质
WO2023023379A1 (en) * 2021-08-19 2023-02-23 Digital Asset Capital, Inc. Semantic map generation from natural-language text documents

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000181679A (ja) * 1998-12-15 2000-06-30 Mitsutaka Kameyama チップ内通信用データ圧縮技術
JP2002026721A (ja) * 2000-07-10 2002-01-25 Fuji Xerox Co Ltd 情報処理装置
JP2005018310A (ja) * 2003-06-25 2005-01-20 Nippon Telegr & Teleph Corp <Ntt> データ変換方法および装置
JP2005242672A (ja) * 2004-02-26 2005-09-08 Nippon Telegr & Teleph Corp <Ntt> パターンマッチング装置および方法ならびにプログラム
JP2006285386A (ja) * 2005-03-31 2006-10-19 Ip Flex Kk 集積回路装置および信号処理装置
JP2006302132A (ja) * 2005-04-22 2006-11-02 Yaskawa Electric Corp 信号処理装置及び再構成可能論理回路装置及び再構成可能順序回路
JP2007142767A (ja) * 2005-11-17 2007-06-07 Univ Of Tsukuba パターンマッチング装置、その形成方法、それを用いたネットワーク不正侵入検知装置の動作方法、およびそれを用いた侵入防止システムの動作方法
JP2008293226A (ja) * 2007-05-24 2008-12-04 Renesas Technology Corp 半導体装置
JP2009116813A (ja) * 2007-11-09 2009-05-28 Japan Aerospace Exploration Agency 大規模計算用カスタムメイド計算機
WO2010018710A1 (ja) * 2008-08-13 2010-02-18 日本電気株式会社 有限オートマトン生成装置、パターンマッチング装置、有限オートマトン回路生成方法およびプログラム

Family Cites Families (60)

* 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
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
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 データ処理装置及び電力制御方法
WO2003021439A1 (en) 2001-08-29 2003-03-13 Analog Devices, Inc. Methods and apparatus for improving throughput of cache-based embedded processors by switching tasks in response to a cache miss
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
US7487542B2 (en) 2004-01-14 2009-02-03 International Business Machines Corporation Intrusion detection using a network processor and a parallel pattern detection engine
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
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 松下电器产业株式会社 对话支持装置
US7797672B2 (en) * 2006-05-30 2010-09-14 Motorola, Inc. Statechart generation using frames
WO2007149472A2 (en) * 2006-06-21 2007-12-27 Element Cxi, Llc Element controller for a resilient integrated circuit architecture
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
US7912808B2 (en) 2006-12-08 2011-03-22 Pandya Ashish A 100Gbps security and search architecture using programmable intelligent search memory that uses a power down mode
US8577665B2 (en) * 2008-03-14 2013-11-05 Fujitsu Limited Synthesis of message sequence charts from communicating finite-state machines
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
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
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
US9348784B2 (en) 2008-12-01 2016-05-24 Micron Technology, Inc. Systems and methods for managing endian mode of a device
US10007486B2 (en) 2008-12-01 2018-06-26 Micron Technology, Inc. Systems and methods to enable identification of different data sets
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
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
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
US9501705B2 (en) 2009-12-15 2016-11-22 Micron Technology, Inc. Methods and apparatuses for reducing power consumption in a pattern recognition processor
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
JP5857072B2 (ja) * 2011-01-25 2016-02-10 マイクロン テクノロジー, インク. オートマトンの入次数および/または出次数を制御するための量化子の展開

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000181679A (ja) * 1998-12-15 2000-06-30 Mitsutaka Kameyama チップ内通信用データ圧縮技術
JP2002026721A (ja) * 2000-07-10 2002-01-25 Fuji Xerox Co Ltd 情報処理装置
JP2005018310A (ja) * 2003-06-25 2005-01-20 Nippon Telegr & Teleph Corp <Ntt> データ変換方法および装置
JP2005242672A (ja) * 2004-02-26 2005-09-08 Nippon Telegr & Teleph Corp <Ntt> パターンマッチング装置および方法ならびにプログラム
JP2006285386A (ja) * 2005-03-31 2006-10-19 Ip Flex Kk 集積回路装置および信号処理装置
JP2006302132A (ja) * 2005-04-22 2006-11-02 Yaskawa Electric Corp 信号処理装置及び再構成可能論理回路装置及び再構成可能順序回路
JP2007142767A (ja) * 2005-11-17 2007-06-07 Univ Of Tsukuba パターンマッチング装置、その形成方法、それを用いたネットワーク不正侵入検知装置の動作方法、およびそれを用いた侵入防止システムの動作方法
JP2008293226A (ja) * 2007-05-24 2008-12-04 Renesas Technology Corp 半導体装置
JP2009116813A (ja) * 2007-11-09 2009-05-28 Japan Aerospace Exploration Agency 大規模計算用カスタムメイド計算機
WO2010018710A1 (ja) * 2008-08-13 2010-02-18 日本電気株式会社 有限オートマトン生成装置、パターンマッチング装置、有限オートマトン回路生成方法およびプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015508588A (ja) * 2011-12-15 2015-03-19 マイクロン テクノロジー, インク. ステートマシンラチスにおけるブール型論理
JP2016189188A (ja) * 2015-03-27 2016-11-04 京セラドキュメントソリューションズ株式会社 コンピューティング・デバイス、方法及びプログラム

Also Published As

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

Similar Documents

Publication Publication Date Title
JP6258034B2 (ja) 状態情報を提供するためのプログラム可能装置、階層型並列マシン、方法
US11488378B2 (en) Analyzing data using a hierarchical structure
US11928590B2 (en) Methods and systems for power management in a pattern recognition processing system
US9535861B2 (en) Methods and systems for routing in a state machine
JP6109186B2 (ja) 状態機械格子におけるカウンタ動作
US9304968B2 (en) Methods and devices for programming a state machine engine
JP2015507255A (ja) ステートマシンにおけるデータ解析用の方法およびシステム
CN104011736A (zh) 用于状态机中的检测的方法及系统
US20200401553A1 (en) Devices for time division multiplexing of state machine engine signals

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140528

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140528

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150818

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151109

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20151109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160412

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160711

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20160711

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160913

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20170105

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170105

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20170112

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20170203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171206

R150 Certificate of patent or registration of utility model

Ref document number: 6258034

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250