JP2015534659A - 状態機械エンジンをプログラミングするための方法およびデバイス - Google Patents

状態機械エンジンをプログラミングするための方法およびデバイス Download PDF

Info

Publication number
JP2015534659A
JP2015534659A JP2015523127A JP2015523127A JP2015534659A JP 2015534659 A JP2015534659 A JP 2015534659A JP 2015523127 A JP2015523127 A JP 2015523127A JP 2015523127 A JP2015523127 A JP 2015523127A JP 2015534659 A JP2015534659 A JP 2015534659A
Authority
JP
Japan
Prior art keywords
state machine
data
lattice
machine engine
buffer
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
JP2015523127A
Other languages
English (en)
Other versions
JP2015534659A5 (ja
JP6207605B2 (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 JP2015534659A publication Critical patent/JP2015534659A/ja
Publication of JP2015534659A5 publication Critical patent/JP2015534659A5/ja
Application granted granted Critical
Publication of JP6207605B2 publication Critical patent/JP6207605B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/045Programme control other than numerical control, i.e. in sequence controllers or logic controllers using logic state machines, consisting only of a memory or a programmable logic device containing the logic for the controlled machine and in which the state of its outputs is dependent on the state of its inputs or part of its own output states, e.g. binary decision controllers, finite state controllers
    • 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/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4498Finite state machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Automation & Control Theory (AREA)
  • Logic Circuits (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Image Processing (AREA)

Abstract

プログラムバッファを有する状態機械エンジン。プログラムバッファは、状態機械ラティスを設定するために、バスインターフェースを介して設定データを受信するように構成される。状態機械エンジンはまた、修復マップデータを、バスインターフェースを介して外部デバイスに提供するように構成される修復マップバッファを含む。状態機械ラティスは、複数のプログラム可能要素を含む。各プログラム可能要素は、データを解析し、解析結果を出力するように構成される複数のメモリセルを含む。【選択図】図9

Description

本発明の実施形態は、概して、電子デバイスに関し、より詳細には、特定の実施形態では、データ解析のための並列デバイスを備える電子デバイスに関する。
複雑なデータ解析(例えば、パターン認識)は、従来のノイマン型コンピュータで実行するには能率が悪い場合がある。しかしながら、生物の脳、特に人間の脳は、複雑なデータ解析を行うのに長けている。最近の研究によれば、人間の脳は、新皮質内において階層性を持って組織化された一連のニューロンの層を用いてデータ解析を行っていることが示されている。階層の下層にあるニューロンは、例えば、感覚器からの「生の信号」を解析し、他方、上層のニューロンは、下位レベルのニューロンからの信号出力を解析する。この新皮質における階層型システムが、場合により脳のその他の領域と共同して、空間推論、意識的な思考、および複雑な言語などの高次の機能を人間が行うことを可能にする、複雑なデータ解析を達成する。
コンピューティングの分野では、例えば、パターン認識タスクは、益々難しくなってきている。従来よりも大量のデータがコンピュータ間で送信され、ユーザが検出することを望むパターンの数は増加している。例えば、スパムまたはマルウェアの検出は、しばしば、特定のフレーズまたはコードの一部などのデータストリーム内のパターンを検索することによってなされる。パターンの数は、スパムおよびマルウェアの多様性と共に増加する。それは、新しい変種を検索するために新しいパターンが実装され得るためである。データストリームでこれらのパターンのそれぞれを検索することは、コンピューティングボトルネックを形成し得る。しばしば、データストリームが受信されると、各パターンが1度に1つずつ検索される。システムがデータストリームの次の部分を検索できるようになるまでの遅延は、パターンの数と共に増大する。このように、パターン認識は、データの受信を遅くし得る。
データストリームでパターンを検索するハードウェアが設計されているが、このハードウェアは、所与の時間内に十分な量のデータを処理することができないことがしばしばである。データストリームを検索するように構成される一部のデバイスは、データストリームを複数の回路に分散することによって検索を行う。回路はそれぞれ、データストリームがパターンの一部分に一致するかどうかを判定する。しばしば、並列に動作する多数の回路が、それぞれ、ほぼ同時にデータストリームを検索する。しかしながら、生物の脳の挙動により近い挙動で複雑なデータ解析を行うことを事実上可能にするシステムはまだない。そのようなシステムの開発が望まれている。
本発明の様々な実施形態による、状態機械エンジンを有するシステムの例を示す図である。 本発明の様々な実施形態による、図1の状態機械エンジンの有限状態機械(FSM)ラティスの例を示す図である。 本発明の様々な実施形態による、図2のFSMラティスのブロックの例を示す図である。 本発明の様々な実施形態による、図3のブロックの行の例を示す図である。 本発明の様々な実施形態による、図4の行の2つ一組の例を示す図である。 本発明の様々な実施形態による、有限状態機械図の例を示す図である。 本発明の様々な実施形態による、FSMラティスが実装されている2階層の例を示す図である。 本発明の様々な実施形態による、図2のFSMラティスのプログラミングのために、コンパイラがソースコードをバイナリファイルに変換するための方法の例を示す図である。 本発明の様々な実施形態による、状態機械エンジンを示す図である。 本発明の様々な実施形態による、状態機械エンジンにおけるFSMラティスをプログラミングする方法を示す流れ図である。
ここで図面を参照すると、図1は、参照数字10で概して示される、プロセッサベースのシステムの実施形態を示している。システム10(例えば、データ解析システム)は、デスクトップコンピュータ、ノートパソコン、ポケットベル、携帯電話、個人用端末(personal organizer)、携帯音楽プレーヤ、制御回路、カメラなどの様々なタイプのいずれであってもよい。システム10はまた、ルータ、サーバ、またはクライアント(例えば、先述のタイプのコンピュータのうちの1つ)などのネットワークノードであってもよい。システム10は、コピー機、スキャナ、プリンタ、ゲーム機、テレビ、セットトップビデオ分配または録画システム、ケーブルテレビ用チューナ、パーソナルデジタルメディアプレーヤ、工場自動化システム、自動車用コンピュータシステムまたは医療機器などの何らかのその他の種類の電子デバイスであってもよい。(これらの種々のシステムの例を記述するために使用される用語は、本明細書で使用されるその他の多くの用語と同様に、いくつかの指示対象を共有する場合があり、そのため、列挙されたその他の項目によって、狭く解釈されるべきではない。)
システム10などの典型的なプロセッサベースのデバイスでは、マイクロプロセッサなどのプロセッサ12が、システム10におけるシステム機能および要求の処理を制御する。さらに、プロセッサ12は、システム制御を分担する複数のプロセッサを備え得る。プロセッサ12は、システム10における要素のそれぞれに、直接的または間接的に接続されて、プロセッサ12が、システム10内またはシステム10の外部に記憶され得る命令を実行することによってシステム10を制御するようにし得る。
本明細書に説明される実施形態によれば、システム10は、状態機械エンジン14を含み、これは、プロセッサ12の制御下で動作し得る。本明細書で用いる場合、状態機械エンジン14は、単一のデバイス(例えば、シングルチップ)を指す。状態機械エンジン14は、任意のオートマトン理論を用い得る。例えば、状態機械エンジン14は、限定されるものではないが、ミーリ型アーキテクチャ、ムーア型アーキテクチャ、有限状態機械(FSM)、決定性FSM(DFSM)、ビットパラレル状態機械(BPSM)などを含む、いくつかの状態機械アーキテクチャのうちの1つを用い得る。様々なアーキテクチャが用いられ得るが、説明の目的のために、本出願はFSMについて言及する。しかしながら、当業者であれば、説明される技法は、様々な状態機械アーキテクチャのうちのどれを用いても利用され得ることを理解するであろう。
以下に詳述するように、状態機械エンジン14は、いくつかの(例えば、1つまたは2つ以上の)有限状態機械(FSM)ラティス(例えば、チップのコア)を含み得る。本出願の目的上、「ラティス」の語は、要素(例えば、ブールセル、カウンタセル、状態機械要素、状態遷移要素)の組織化されたフレームワーク(例えば、ルーティングマトリクス、ルーティングネットワーク、フレーム)を指す。さらに、「ラティス」は、任意の好適な形、構造、または階層構成(例えば、グリッド、キューブ、球、カスケード接続)を有し得る。各FSMラティスは、複数のFSMを実装し得、複数のFSMのそれぞれは、同じデータを並行して受信し、解析する。さらに、FSMラティスは、グループ(例えば、クラスタ)として構成され得て、FSMラティスのクラスタは、同じ入力データを並行して解析し得る。さらに、状態機械エンジン14のFSMラティスのクラスタは、階層構造として構成され得、階層構造の下位レベルにある状態機械ラティスからの出力が、上位レベルにある状態機械ラティスへの入力として用いられ得る。状態機械エンジン14のFSMラティスのクラスタを、階層構造にわたって直列にカスケード接続することによって、益々複雑なパターンを解析(例えば、評価、検索など)し得る。
さらに、状態機械エンジン14の階層的並列構成に基づいて、状態機械エンジン14は、高い処理速度を利用するシステムにおける複雑なデータ解析(例えば、パターン認識)のために使用され得る。例えば、本明細書に説明される実施形態は、処理速度が1Gバイト/秒であるシステムに組み込まれ得る。したがって、状態機械エンジン14を利用して、高速メモリデバイスまたはその他の外部デバイスからのデータを迅速に解析し得る。状態機械エンジン14は、いくつかの基準(例えば、検索ターム)にしたがって、ほぼ同時、例えば、単一デバイスサイクルの間、データストリームを解析し得る。状態機械エンジン14のあるレベルにあるFSMのクラスタ内のFSMラティスのそれぞれは、ほぼ同時にデータストリームから検索タームをそれぞれ受信し得、並列FSMラティスのそれぞれは、そのタームが、状態機械エンジン14を処理基準における次の状態に進めるかどうかを判定し得る。状態機械エンジン14は、例えば、100を越える、110を越える、または10000を越える比較的多数の基準にしたがってタームを解析し得る。それらが並列に動作することから、それらは、データストリームを遅延させることなく、比較的高帯域幅を有するデータストリーム、例えば、1Gバイト/秒より大きいかほぼ等しいデータストリームに対して基準を適用し得る。
一実施形態では、状態機械エンジン14は、データストリームにおいて多数のパターンを認識(例えば、検出)するように構成され得る。例えば、状態機械エンジン14は、ユーザまたはその他のエンティティが解析を望む様々なタイプのデータストリームのうちの1つまたは2つ以上においてパターンを検出するために利用され得る。例えば、状態機械エンジン14は、インターネットを介して受信されるパケット、またはセルラーネットワークを介して受信される音声もしくはデータなどのネットワークを介して受信されるデータのストリームを解析するように構成され得る。一例では、状態機械エンジン14は、データストリームにおいてスパムまたはマルウェアを解析するように構成され得る。データストリームは、シリアルデータストリームとして受信され、ここでデータは、時間的、語彙的、または意味的に重要視される順序などの、意味のある順序で受信される。あるいは、データストリームは、並列もしくはバラバラの順序で受信され得、その後、例えば、インターネットを介して受信されるパケットを順序づけることによって、シリアルデータストリームへと変換される。一部の実施形態では、データストリームは、タームをシリアルに提示し得るが、タームのそれぞれを表すビットはパラレルに受信され得る。データストリームは、システム10の外部にあるソースから受信され得る、またはメモリ16などのメモリデバイスに問い合わせし、かつメモリ16に記憶されているデータからデータストリームを形成することによって、形成され得る。その他の例では、状態機械エンジン14は、特定の単語を綴る文字シーケンス、遺伝子を特定する遺伝子塩基対配列、画像の一部を形成する画像ファイルもしくはビデオファイルにおけるビットのシーケンス、プログラムの一部を形成する実行可能ファイルにおけるビットのシーケンス、または歌もしくは話された言葉の一部を形成するオーディオファイルにおけるビットのシーケンスを認識するように構成され得る。データのストリームは、バイナリフォーマットまたは例えば、10進数、ASCIIなどのその他のフォーマットの複数ビットのデータを含み得る。ストリームは、一桁または複数桁で、例えば、いくつかの2進数でデータを符号化し得る。
理解されるように、システム10は、メモリ16を含む。メモリ16には、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、同期型DRAM(SDRAM)、倍データレートDRAM(DDR SDRAM)、DDR2 SDRAM、DDR3 SDRAMなどの揮発性メモリが含まれ得る。メモリ16はまた、読み出し専用メモリ(ROM)、PC−RAM、シリコン−酸化物−窒化物−酸化物−シリコン(SONOS)メモリ、金属−酸化物−窒化物−酸化物−シリコン(MONOS)メモリ、ポリシリコンフローティングゲートベースのメモリ、および/または揮発性メモリと共に使用されるその他のタイプの様々なアーキテクチャのフラッシュメモリ(例えば、NANDメモリ、NORメモリなど)などの不揮発性メモリを含み得る。メモリ16は、DRAMデバイスなどの1つまたは2つ以上のメモリデバイスを含み得、これは、状態機械エンジン14によって解析されるデータを提供し得る。本明細書で用いる場合、「提供する」の語は、一般的に、向ける、入力する、挿入する、送る、転送する、送信する、生成する、与える、出力する、配置する、書き込むなどを指し得る。このようなデバイスは、ソリッドステートドライブ(SSD)、マルチメディアメディアカード(MMC)、セキュアデジタル(SD)カード、コンパクトフラッシュ(CF)カード、または任意のその他の好適なデバイスと呼ばれ得る、あるいはこれを含み得る。さらに、このようなデバイスは、ユニバーサルシリアルバス(USB)、ペリフェラルコンポーネントインターコネクト(PCI)、PCIエクスプレス(PCI−E)、スモールコンピュータシステムインターフェース(SCSI)、IEEE1394(ファイアーワイヤ)、または任意のその他の好適なインターフェースなどの任意の好適なインターフェースを介してシステム10に接続され得ることを理解されたい。フラッシュメモリデバイスなどのメモリ16の動作を助けるために、システム10は、メモリコントローラ(図示せず)を含み得る。理解されるように、メモリコントローラは、独立のデバイスであり得る、またはプロセッサ12と一体であり得る。加えて、システム10は、磁気記憶装置などの外部記憶装置18を含み得る。外部記憶装置は、入力データを状態機械エンジン14に提供し得る。
システム10は、いくつかの追加的な要素を含み得る。例えば、コンパイラ20は、図8に関連して詳述するように、状態機械エンジン14を設定(例えば、プログラム)するために用いられ得る。入力デバイス22もまたプロセッサ12に接続されて、ユーザがデータをシステム10内に入力できるようにし得る。例えば、入力デバイス22は、状態機械エンジン14により後で解析するために、データをメモリ16内に入力するのに用いられ得る。入力デバイス22は、例えば、ボタン、スイッチング要素、キーボード、ライトペン、スタイラスペン、マウス、および/または音声認識システムを含み得る。ディスプレイなどの出力デバイス24もまた、プロセッサ12に接続され得る。ディスプレイ24は、例えば、LCD、CRT、LED、および/または聴覚ディスプレイを含み得る。システムはまた、インターネットなどのネットワークとインターフェースをとるために、ネットワークインターフェースカード(NIC)などのネットワークインターフェースデバイス26を含み得る。理解されるように、システム10は、システム10のアプリケーションに応じて、多くのその他の構成要素を含み得る。
図2〜図5は、FSMラティス30の例を示している。一例では、FSMラティス30は、ブロック32のアレイを備える。説明するように、各ブロック32は、複数の選択的に接続可能なハードウェア要素(例えば、設定可能な要素および/または特定目的要素)を含み得、これは、FSMの複数の状態に対応する。FSMにおける状態と同様に、ハードウェア要素は入力ストリームを解析し、入力ストリームに応じて下流のハードウェア要素をアクティブ化し得る。
設定可能な要素は、多くの異なる機能を実装するように設定(例えば、プログラム)され得る。例えば、設定可能な要素は、状態機械要素(SME)34、36(図5に示す)を含み得、これは、階層性を持って行38(図3および図4に示す)およびブロック32(図2および図3に示す)に組織化されている。SMEはまた、状態遷移要素(STE)とみなされ得る。階層性を持って組織化されたSME34、36の間において信号をルーティングするために、ブロック間スイッチング要素40(図2および図3に示す)、ブロック内スイッチング要素42(図3および図4に示す)、および行内スイッチング要素44(図4に示す)を含む、設定可能なスイッチング要素の階層構造が用いられ得る。
後述するように、スイッチング要素は、ルーティング構造と、バッファとを含み得る。SME34、36は、FSMラティス30によって実装されたFSMの状態に対応し得る。SME34、36は、後述のように、設定可能なスイッチング要素を用いて互いに接続され得る。したがって、状態の関数に対応するようにSME34、36を設定することによって、またFSMにおける状態間の遷移に対応するようにSME34、36を互いに選択的に接続することによって、FSMは、FSMラティス30に実装され得る。
図2は、FSMラティス30の例の全体図を示している。FSMラティス30は、複数のブロック32を含み、これは、設定可能なブロック間スイッチング要素40と、互いに選択的に接続され得る。ブロック間スイッチング要素40は、導体46(例えば、ワイヤ、線など)と、バッファ48および50とを含み得る。一例では、バッファ48および50が含まれているのは、接続と、ブロック間スイッチング要素40との間における信号のタイミングとを制御するためである。以下に詳述するように、バッファ48は、ブロック32間で送信されるデータをバッファリングするために提供され得、他方、バッファ50は、ブロック間スイッチング要素40間で送信されるデータをバッファリングするために提供され得る。加えて、ブロック32は、信号(例えば、データ)を受信し、データをブロック32に提供するための入力ブロック52(例えば、データ入力ポート)に選択的に接続され得る。ブロック32はまた、信号をブロック32から外部デバイス(例えば、別のFSMラティス30)に提供するための出力ブロック54(例えば、出力ポート)に選択的に接続され得る。FSMラティス30はまた、プログラミングインターフェース56を含んで、FSMラティス30を(例えば、画像、プログラムを介して)設定し得る。画像は、SME34、36の状態を設定(例えば、セット)し得る。つまり、画像は、SME34、36を設定して、入力ブロック52における所与の入力に対して特定の方法で反応し得る。例えば、SME34、36は、入力ブロック52で文字「a」を受信した場合、ハイ(high)信号を出力するようにセットされ得る。
一例では、入力ブロック52、出力ブロック54、および/またはプログラミングインターフェース56は、レジスタとして実装されて、レジスタへの書き込みまたはレジスタからの読み出しが、それぞれの要素にデータを提供する、またはそれぞれの要素からデータを提供するようにし得る。このようにして、プログラミングインターフェース56に対応するレジスタに記憶された画像からのビットは、SME34、36にロードされ得る。図2では、ブロック32、入力ブロック52、出力ブロック54、およびブロック間スイッチング要素40の間において特定数の導体(例えば、ワイヤ、線)が示されているが、その他の例では、より少数、またはより多数の導体が用いられ得ることを理解されたい。
図3は、ブロック32の例を示している。ブロック32は、複数の行38を含み、これは、設定可能なブロック内スイッチング要素42と、互いに選択的に接続され得る。加えて、行38は、ブロック間スイッチング要素40により、別のブロック32内の別の行38と選択的に接続され得る。行38は、要素の対として組織された複数のSME34、36を含み、要素の対は、本明細書において、2つの要素からなる組(groups of two),(GOT)60と呼ぶ。一例では、ブロック32は、16の行38を備える。
図4は、行38の例を示している。GOT60は、設定可能な行内スイッチング要素44によって、その他のGOT60および行38内の任意のその他の要素(例えば、特定目的要素58)に選択的に接続され得る。GOT60はまた、ブロック内スイッチング要素42により、その他の行38にあるその他のGOT60と、あるいはブロック間スイッチング要素40により、その他のブロック32にあるその他のGOT60と接続され得る。一例では、GOT60は、第1および第2の入力62、64と、出力66とを有する。図5と参照して詳述するように、第1の入力62は、GOT60の第1のSME34に接続され、第2の入力64は、GOT60の第2のSME36に接続される。
一例では、行38は、第1および第2の複数の行相互接続導体68、70を含む。一例では、GOT60の入力62、64は、1つまたは2つ以上の行相互接続導体68、70に接続され得、出力66は、1つまたは2つ以上の行相互接続導体68、70に接続され得る。一例では、第1の複数の行相互接続導体68は、行38内の各GOT60の各SME34、36に接続され得る。第2の複数の行相互接続導体70は、行38内の各GOT60の1つのSME34、36のみに接続され得るが、GOT60のその他のSME34、36には接続されない。一例では、図5に関連して詳述されるように、第2の複数の行相互接続導体70の最初の半分は、行38内のSME34、36の最初の半分(各GOT60から一方のSME34)に接続し得、第2の複数の行相互接続導体70の残りの半分は、行38内のSME34、36の残りの半分(各GOT60から他方のSME34、36)に接続し得る。第2の複数の行相互接続導体70と、SME34、36との間における制限された接続性は、本明細書において、「パリティ」と呼ばれる。一例では、行38はまた、カウンタ、設定可能なブール論理要素、ルックアップテーブル、RAM、現場で設定可能なゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、設定可能なプロセッサ(例えば、マイクロプロセッサ)、または特定目的機能を実行するためのその他の要素などの特定目的要素58を含み得る。
一例では、特定目的要素58は、カウンタ(本明細書において、カウンタ58とも呼ばれる)を備える。一例では、カウンタ58は、12ビットの設定可能な減算カウンタを備える。12ビットの設定可能なカウンタ58は、計数入力と、リセット入力と、ゼロカウント出力とを有する。計数入力は、アサートされると、カウンタ58の値を1つずつ減らす。リセット入力は、アサートされると、カウンタ58に関連するレジスタから初期値をロードさせる。12ビットのカウンタ58では、初期値として最大12ビットの数までロードされ得る。カウンタ58の値がゼロ(0)までデクリメントされると、ゼロカウント出力がアサートされる。カウンタ58はまた、少なくとも2つのモード、すなわち、パルスとホールドとを有する。カウンタ58がパルスモードに設定されると、カウンタ58がゼロに達し、かつクロックが供給されている場合、ゼロカウント出力がアサートされる。カウンタ58の次のクロックサイクルの間、ゼロカウント出力はアサートされる。その結果、カウンタ58は、クロックサイクルから時間的に外れる。その次のクロックサイクルでは、ゼロカウント出力は、アサートされた状態ではなくなる。カウンタ58がホールドモードに設定されると、ゼロカウント出力は、カウンタ58がゼロに向けてデクリメントするクロックサイクルの間、アサートされ、そして、リセット入力がアサートされることによってカウンタ58がリセットされるまで、アサートされた状態のままでいる。
別の例では、特定目的要素58は、ブール論理を備える。例えば、ブール論理は、AND、OR、NAND、NOR、積和(SoP)、積和否定出力(NSoP)、和積否定出力(NPoS)、および和積(PoS)の関数などの論理関数を実行するために用いられ得る。このブール論理は、FSMラティス30における(本明細書で後述するように、FSMの終端ノードに対応する)終端状態のSMEからデータを抽出するために用いられ得る。抽出されたデータが用いられて、状態データをその他のFSMラティス30に提供する、および/またはFSMラティス30を再設定するために用いられる、あるいは別のFSMラティス30を再設定するために用いられる設定データを提供する。
図5は、GOT60の例を示している。GOT60は、第1のSME34と、第2のSME36とを含み、これらは、入力62、64を有し、それらの出力72、74をORゲート76および3入力マルチプレクサ78に接続されている。3入力マルチプレクサ78は、GOT60の出力66を、第1のSME34、第2のSME36、またはORゲート76のいずれかに接続するように設定され得る。ORゲート76は、両方の出力72、74を一緒に接続して、GOT60の共通出力66を形成するために用いられ得る。一例では、第1および第2のSME34、36が上述のようなパリティを呈し、そこでは、第1のSME34の入力62が行相互接続導体68の一部に接続され得、かつ第2のSME36の入力64がその他の行相互接続導体70に接続され得るのであるが、共通出力66が生成され得て、パリティ問題を克服し得る。一例では、GOT60内の2つのSME34、36は、スイッチング要素79のいずれかまたは両方を設定することにより、カスケード接続され得る、および/またはそれら自身にループバックされ得る。SME34、36は、SME34、36の出力72、74を他方のSME34、36の入力62、64に接続することにより、カスケード接続され得る。SME34、36は、出力72、74をそれら自身の入力62、64に接続することにより、それら自身にループバックされ得る。このように、第1のSME34の出力72は、第1のSME34の入力62および第2のSME36の入力64のどちらにも接続されなくてもよいし、それらの一方または両方に接続されてもよい。
一例では、状態機械要素34、36は、検出線82に並列に接続される複数のメモリセル80、例えば、ダイナミックランダムアクセスメモリ(DRAM)でしばしば用いられるものなどを備える。1つのこのようなメモリセル80は、ハイ(high)値またはロー(low)値(例えば、1または0)のいずれかに対応するものなどのデータ状態に設定され得るメモリセルを備える。メモリセル80の出力は、検出線82に接続され、メモリセル80への入力は、データストリーム線84上のデータに基づく信号を受信する。一例では、入力ブロック52における入力が復号されて、メモリセル80のうちの1つまたは2つ以上を選択する。選択されたメモリセル80は、その記憶されたデータ状態を出力として検出線82上に提供する。例えば、入力ブロック52で受信されたデータは、デコーダ(図示せず)に提供され得て、デコーダは、データストリーム線84のうちの1つまたは2つ以上を選択し得る。一例では、デコーダは、8ビットのACSII文字を256本のデータストリーム線84のうちの対応する1つに変換し得る。
したがって、あるメモリセル80は、そのメモリセル80がハイ値に設定され、かつデータストリーム線84上のデータがそのメモリセル80を選択している場合、ハイ信号を検出線82に出力する。データストリーム線84上のデータがそのメモリセル80を選択し、かつそのメモリセル80がロー値に設定されている場合、そのメモリセル80は、ロー信号を検出線82に出力する。メモリセル80からの検出線82への出力は、検出セル86によってセンスされる。
一例では、入力線62、64上の信号は、それぞれの検出セル86をアクティブまたは非アクティブ状態のいずれかに設定する。非アクティブ状態に設定されると、検出セル86は、それぞれの検出線82上の信号と関わりなく、ロー信号をそれぞれの出力72、74上に出力する。アクティブ状態に設定されると、検出セル86は、それぞれのSME34、36のメモリセル82のうちの1つからハイ信号が検出された場合、ハイ信号をそれぞれの出力線72、74上に出力する。アクティブ状態にある場合、検出セル86は、それぞれのSME34、36のメモリセル82のすべてからの信号がローである場合、ロー信号をそれぞれの出力線72、74上に出力する。
一例では、あるSME34、36は、256個のメモリセル80を含み、各メモリセル80は、異なるデータストリーム線84に接続される。このようにして、SME34、36は、データストリーム線84のうちの選択された1つまたは2つ以上が、そこにハイ信号を有する場合、ハイ信号を出力するようにプログラムされ得る。例えば、SME34は、第1のメモリセル80(例えば、ビット0)をハイに設定させ、すべてのその他のメモリセル80(例えば、ビット1〜255)をローに設定させ得る。それぞれの検出セル86がアクティブ状態にある場合、ビット0に対応するデータストリーム線84がそこにハイ信号を有するならば、SME34は、ハイ信号を出力72上に出力する。その他の例では、SME34は、複数のデータストリーム線84のうちの1つがそこにハイ信号を有するならば、適切なメモリセル80をハイ値に設定することにより、ハイ信号を出力するように設定され得る。
一例では、メモリセル80は、関連するレジスタからビットを読み取ることによって、ハイ値またはロー値に設定され得る。このように、SME34は、コンパイラ20により形成された画像をレジスタ内に記憶して、レジスタ内のビットを関連するメモリセル80内にロードすることによって設定され得る。一例では、コンパイラ20により形成された画像は、ハイおよびロー(例えば、1および0)のビットからなる二値画像を含む。画像が、FSMラティス30を設定して、SME34、36をカスケード接続することによって、FSMを実装し得る。例えば、第1のSME34は、検出セル86をアクティブ状態に設定することによって、アクティブ状態に設定され得る。第1のSME34は、ビット0に対応するデータストリーム線84がそこにハイ信号を有するならば、ハイ信号を出力するように設定され得る。第2のSME36は、最初非アクティブ状態に設定され得るが、アクティブの際には、ビット1に対応するデータストリーム線84がそこにハイ信号を有するならば、ハイ信号を出力するように設定され得る。第1のSME34および第2のSME36は、第1のSME34の出力72を第2のSME36の入力64に接続するように設定することによって、カスケード接続され得る。このように、ビット0に対応するデータストリーム線84上でハイ信号がセンスされると、第1のSME34が、ハイ信号を出力72に出力して、第2のSME36の検出セル86をアクティブ状態に設定する。ビット1に対応するデータストリーム線84上でハイ信号がセンスされると、第2のSME36が、別のSME36をアクティブにするために、またはFSMラティス30からの出力のために、ハイ信号を出力74に出力する。
一例では、単一のFSMラティス30が、単一の物理デバイス上に実装されるが、その他の例では、2つまたは3つ以上のFSMラティス30が、単一の物理デバイス(例えば、物理チップ)上に実装され得る。一例では、各FSMラティス30は、別個のデータ入力ブロック52と、別個の出力ブロック54と、別個のプログラミングインターフェース56と、別個の一式の設定可能な要素とを含み得る。さらに、それぞれの一式の設定可能な要素は、それらが対応するデータ入力ブロック52にあるデータに対して反応(例えば、ハイ信号またはロー信号を出力)し得る。例えば、第1のFSMラティス30に対応する第1の一式の設定可能な要素は、第1のFSMラティス30に対応する第1のデータ入力ブロック52にあるデータに対して反応し得る。第2のFSMラティス30に対応する第2の一式の設定可能な要素は、第2のFSMラティス30に対応する第2のデータ入力ブロック52に対して反応し得る。このように、各FSMラティス30は一式の設定可能な要素を含み、異なる入力データに対しては、それに応じて反応し得る一式の設定可能な要素も異なる。同様に、各FSMラティス30、およびそれぞれに対応する一式の設定可能な要素は、別個の出力を提供し得る。一部の例では、第1のFSMラティス30の出力ブロック54は、第2のFSMラティス30の入力ブロック52に接続されて、第2のFSMラティス30のための入力データが、第1のFSMラティス30からの出力データを、一連のFSMラティス30の階層的配列で含み得るようにし得る。
一例では、FSMラティス30上にロードするための画像は、FSMラティス30内における設定可能な要素と、設定可能なスイッチング要素と、特定目的要素とを設定するための複数のデータビットを備える。一例では、画像は、FSMラティス30を設定するためにFSMラティス30上にロードされて、特定の入力に基づいて所望の出力を提供する。出力ブロック54は、データ入力ブロック52におけるデータに対する設定可能な要素の反応に基づくFSMラティス30からの出力を提供し得る。出力ブロック54からの出力は、所与のパターンの一致を示す単一のビットと、複数のパターンに対する一致および不一致を示す、複数のビットを備えるワードと、所与の時点におけるすべてまたは特定の設定可能な要素の状態に対応する状態ベクトルとを含み得る。前述のように、いくつかのFSMラティス30は、状態機械エンジン14などの状態機械エンジンに含まれて、パターン認識(例えば、音声認識、画像認識など)、信号処理、画像処理、コンピュータビジョン、暗号作成法などのデータ解析を行い得る。
図6は、FSMラティス30によって実装され得る有限状態機械(FSM)のモデル例を示している。FSMラティス30は、FSMの物理的な実装として構成(例えば、プログラム)され得る。FSMは、ダイアグラム90(例えば、有向グラフ、無向グラフ、擬グラフ)として表され得、これは、1つまたは2つ以上のルートノード92を含む。ルートノード92に加えて、FSMは、いくつかの標準的なノード94および終端ノード96から構成され得、これらは、ルートノード92およびその他の標準的なノード94に1つまたは2つ以上の枝98を介して連結される。ノード92、94、96は、FSMにおける状態に対応する。枝98は、状態間における遷移に対応する。
ノード92、94、96のそれぞれは、アクティブ状態または非アクティブ状態のいずれかであり得る。非アクティブ状態にある場合、ノード92、94、96は、入力データに対して反応(例えば、応答)しない。アクティブ状態にある場合、ノード92、94、96は、入力データに対して反応し得る。入力データが上流のノード92、94と、下流のノード94、96との間における枝98により指定される基準に一致する場合、上流のノード92、94は、そのノードに対して下流にあるノード94、96をアクティブにすることによって、入力データに対して反応し得る。例えば、文字「b」を指定する第1のノード94は、第1のノード94がアクティブであり、文字「b」が入力データとして受信される場合、第1のノード94に枝98により連結される第2のノード94をアクティブにする。本明細書で用いる場合、「上流」は、1つまたは2つ以上のノード間における関係を指し、そこでは、1つまたは2つ以上のその他のノードの上流(または、ループまたはフィードバック構成の場合、それ自身の上流)にある第1のノードとは、第1のノードが、1つまたは2つ以上のその他のノードをアクティブにし得る(または、ループの場合、自らをアクティブにし得る)状況を指す。同様に、「下流」とは、1つまたは2つ以上のその他のノードの下流(または、ループの場合、それ自身の下流)にある第1のノードが、1つまたは2つ以上のその他のノードによってアクティブにされ得る(または、ループの場合、自らによってアクティブにされ得る)関係を指す。このように、本明細書において「上流」および「下流」の語は、1つまたは2つ以上のノード間における関係を指すために用いられるが、これらの語は、ループまたはその他の非線形のノード間経路の使用を排除するものではない。
ダイアグラム90では、ルートノード92は、最初にアクティブにされ得、また入力データがルートノード92からの枝98に一致する場合、下流のノード94をアクティブにし得る。ノード94は、入力データがノード94からの枝98に一致する場合、ノード96をアクティブにし得る。ダイアグラム90にわたりノード94、96は、入力データが受信されると、このようにしてアクティブにされ得る。終端ノード96は、入力データによる着目するシーケンスの一致に対応する。したがって、終端ノード96のアクティブ化は、着目するシーケンスが、入力データとして受信されたことを示す。パターン認識機能を実装するFSMラティス30の文脈においては、終端ノード96に到達したということは、特定の着目するパターンが入力データにおいて検出されたことを示し得る。
一例では、それぞれのルートノード92、標準的なノード94、および終端ノード96は、FSMラティス30における設定可能な要素に対応し得る。各枝98は、設定可能な要素間の接続に対応し得る。このように、別の標準的なノード94または終端ノード96に遷移する(例えば、連結する枝98を有する)標準的なノード94は、別の設定可能な要素に遷移する(例えば、出力を提供する)設定可能な要素に対応する。一部の例では、ルートノード92は、対応する設定可能な要素を持たない。
理解されるように、ノード92をルートノードとして説明し、ノード96を終端ノードとして説明したが、必ずしも特定の「開始部」またはルートノードが存在しない場合もあるし、必ずしも特定の「終了部」または出力ノードが存在しない場合もある。換言すると、任意のノードが開始点であってもよく、任意のノードが出力を提供するのであってもよい。
FSMラティス30がプログラムされる場合、設定可能な要素のそれぞれはまた、アクティブ状態または非アクティブ状態のいずれかであり得る。所与の設定可能な要素は、非アクティブの場合、対応するデータ入力ブロック52における入力データに対して反応しない。アクティブな設定可能な要素は、データ入力ブロック52における入力データに反応し得、また入力データが設定可能な要素の設定に一致する場合、下流の設定可能な要素をアクティブにし得る。設定可能な要素が終端ノード96に対応する場合、設定可能な要素は、出力ブロック54に接続されて、一致の指標を外部デバイスに提供し得る。
プログラミングインターフェース56を介してFSMラティス30上にロードされた画像は、データ入力ブロック52におけるデータに対する反応に基づいてノードを順次アクティブにすることによって所望のFSMが実装されるように、設定可能な要素および特定目的要素、ならびに設定可能な要素および特定目的要素の間の接続を設定し得る。一例では、設定可能な要素は、単一のデータサイクル(例えば、単一の文字、文字1セット、単一のクロックサイクル)の間、アクティブに保たれ、次いで、上流の設定可能な要素によって再度アクティブにされない限り、非アクティブになる。
終端ノード96は、圧縮された過去のイベントの履歴を記憶するとみなすことができる。例えば、終端ノード96に達するのに必要とされる1つまたは2つ以上の入力データのパターンは、その終端ノード96のアクティブ化により表され得る。一例では、終端ノード96が提供する出力は2進数であり、つまり、出力は、着目するパターンが一致したか否かを示す。ダイアグラム90における終端ノード96の標準的なノード94に対する比は、非常に小さいものであり得る。換言すると、FSMは非常に複雑であり得るが、FSMの出力は、比べれば小さい。
一例では、FSMラティス30の出力は、状態ベクトルを備え得る。状態ベクトルは、FSMラティス30の設定可能な要素の状態(例えば、アクティブ化された、またはされていない)を備える。別の例では、状態ベクトルは、設定可能な要素が終端ノード96に対応するかを問わず、設定可能な要素のすべてまたはサブセットの状態を含み得る。一例では、状態ベクトルは、終端ノード96に対応する設定可能な要素のための状態を含む。このように、出力は、ダイアグラム90のすべての終端ノード96によって提供される指標の集まりを含み得る。状態ベクトルは、ワードで表現され得、ただし、各終端ノード96により提供される2進表示は、そのワードのうちの1ビットを備える。この終端ノード96の符号化は、FSMラティス30のための検出状態の有効な指標を提供し得る(例えば、着目するシーケンスが検出されたかどうか、また、どの着目するシーケンスが検出されたのか)。
上述のように、FSMラティス30は、パターン認識機能を実装するようにプログラムされ得る。例えば、FSMラティス30は、入力データにおける1つまたは2つ以上のデータシーケンス(例えば、シグネチャ、パターン)を認識するように構成され得る。着目するデータシーケンスがFSMラティス30により認識されると、その認識の指標が出力ブロック54で提供され得る。一例では、パターン認識は、記号列(例えば、ASCII文字)を認識して、例えば、ネットワークデータ内のマルウェアまたはその他のデータを識別し得る。
図7は、階層構造100の例を示しており、ここで、2つのレベルのFSMラティス30が直列に接続され、データを解析するために用いられている。具体的には、図示の実施形態では、階層構造100は、第1のFSMラティス30Aと、直列に配置された第2のFSMラティス30Bとを含む。各FSMラティス30は、データ入力を受信するためのそれぞれのデータ入力ブロック52と、設定信号を受信するためのプログラミングインターフェースブロック56と、出力ブロック54とを含む。
第1のFSMラティス30Aは、入力データ、例えば、データ入力ブロックにおける生データを受信するように構成される。第1のFSMラティス30Aは、上述のように入力データに対して反応し、出力を出力ブロックに提供する。第1のFSMラティス30Aからの出力は、第2のFSMラティス30Bのデータ入力ブロックに送られる。次いで、第2のFSMラティス30Bは、第1のFSMラティス30Aによって提供された出力に基づいて反応し、対応する階層構造100の出力信号102を提供し得る。直列接続する2つのFSMラティス30Aおよび30Bのこの階層的な接続は、過去のイベントに関するデータを圧縮されたワードの形態で第1のFSMラティス30Aから第2のFSMラティス30Bに提供する手段を提供する。提供されるデータは、事実上、第1のFSMラティス30Aにより記録された複雑なイベント(例えば、着目するシーケンス)のサマリであり得る。
図7に示されるFSMラティス30A、30Bの2階層構造100は、2つの独立なプログラムが同じデータストリームに基づいて動作するのを可能にする。2階層構造は、別領域としてモデル化されている生物の脳における視覚認識に類似するものであり得る。このモデルの下では、これらの領域は、事実上異なるパターン認識エンジンであり、それぞれが類似の計算機能(パターンマッチング)を実行するが、異なるプログラム(シグネチャ)を用いる。複数のFSMラティス30A、30Bを一緒に接続することによって、データストリーム入力に関するさらなる知識が取得され得る。
階層構造の第1のレベル(第1のFSMラティス30Aにより実装される)は、例えば、生のデータストリームに対して直接、処理を実行し得る。つまり、生のデータストリームは、第1のFSMラティス30Aの入力ブロック52で受信され得、第1のFSMラティス30Aの設定可能な要素が、生のデータストリームに対して反応し得る。階層構造の第2のレベル(第2のFSMラティス30Bにより実装される)は、第1のレベルからの出力を処理し得る。つまり、第2のFSMラティス30Bは、第1のFSMラティス30Aの出力ブロック54からの出力を第2のFSMラティス30Bの入力ブロック52で受信し、第2のFSMラティス30Bの設定可能な要素は、第1のFSMラティス30Aの出力に反応し得る。このように、この例では、第2のFSMラティス30Bは、生のデータストリームを入力として受信するのではなく、第1のFSMラティス30Aが判定するところにより、生のデータストリームによって一致した着目するパターンの指標を受信する。第2のFSMラティス30Bは、第1のFSMラティス30Aからの出力データストリーム内のパターンを認識するFSMを実装し得る。第2のFSMラティス30Bは、FSMラティス30Aからの出力を受信するだけでなく、複数のその他のFSMラティスからの入力を受信し得ることを認識されたい。同様に、第2のFSMラティス30Bは、その他のデバイスからの入力を受信し得る。第2のFSMラティス30Bは、これらの複数の入力を組み合わせて、出力を作成し得る。
図8は、コンパイラが、ソースコードをラティス30などのFSMラティスを設定するように構成された画像に変換して、FSMを実装するための方法110の例を示している。方法110は、ソースコードを構文解析して構文木にするステップ(ブロック112)と、構文木をオートマトンに変換するステップ(ブロック114)と、オートマトンを最適化するステップ(ブロック116)と、オートマトンをネットリストに変換するステップ(ブロック118)と、ネットリストをハードウェア上に配置するステップ(ブロック120)と、ネットリストをルーティングするステップ(ブロック122)と、結果として生じる画像を発行するステップ(ブロック124)とを含む。
一例では、コンパイラ20は、ソフトウェア開発者がFSMラティス30上でFSMを実装するための画像を作成できるようにするアプリケーションプログラミングインターフェース(API)を含む。コンパイラ20は、ソースコードにおける正規表現の入力セットを、FSMラティス30を設定するように構成される画像に変換するための方法を提供する。コンパイラ20は、ノイマン型アーキテクチャを有するコンピュータ用の命令によって実装され得る。これらの命令は、コンピュータ上のプロセッサ12に、コンパイラ20の機能を実装させ得る。例えば、命令は、プロセッサ12によって実行される場合、プロセッサ12に、プロセッサ12がアクセス可能なソースコード上のブロック112、114、116、118、120、122、および124で説明した動作を実行させ得る。
一例では、ソースコードは、一群の記号の中で記号のパターンを識別するための検索文字列を記述する。検索文字列を記述するために、ソースコードは、複数の正規表現(regex)を含み得る。正規表現は、記号検索パターンを記述するための文字列であり得る。正規表現は、プログラミング言語、テキストエディタ、ネットワークセキュリティなどの様々なコンピュータドメイン内で広く使用されている。一例では、コンパイラでサポートされる正規表現は、非構造化データの解析のための基準を含む。非構造化データは、自由な形式のデータであって、データ内のワードに適用されたインデックスのないデータを含み得る。ワードは、データ内に、印字可能および印字不能の双方であるバイトの任意の組み合わせを含み得る。一例では、コンパイラは、Perl、(例えば、Perl互換の正規表現(PCRE))、PHP、Java、およびNET言語を含む、正規表現を実装するための複数の異なるソースコード言語に対応し得る。
ブロック112で、コンパイラ20は、ソースコードを構文解析して、関連付けられて接続された演算子の配置を形成し、ここで、演算子のタイプが異なれば、ソースコードで実装される対応する関数も異なる(例えば、ソースコードの正規表現で実装される関数が異なる)。ソースコードを構文解析すると、ソースコードの一般的表現を作成することができる。一例では、一般的表現は、構文木として知られるツリーグラフの形で、ソースコードにおける正規表現の符号化表現を備える。本明細書で説明される例は、その配置を構文木(「抽象構文木」としても知られる)と呼ぶが、その他の例では、具象構文木またはその他の配置も用いられ得る。
上述のように、コンパイラ20は、複数の言語のソースコードに対応し得るため、構文解析するステップは、言語にかかわらず、ソースコードを構文木などの非言語固有表現に変換する。こうして、コンパイラ20によるさらなる処理(ブロック114、116、118、120)は、ソースコードの言語にかかわらず、共通の入力構造から機能し得る。
上述のように、構文木は、関連付けられて連結された複数の演算子を含む。構文木は、複数の異なるタイプの演算子を含み得る。つまり、演算子が異なれば、ソースコードにおける正規表現によって実装された対応する関数も異なり得る。
ブロック114では、構文木は、オートマトンに変換される。オートマトンは、FSMのソフトウェアモデルを備え、それに応じて、決定性または非決定性として分類され得る。決定性オートマトンは、所与の時間に、単一の実行パスを有するが、非決定性オートマトンは、複数の並列実行パスを有する。オートマトンは、複数の状態を備える。構文木をオートマトンに変換するためには、演算子および構文木内での演算子間の関係が、状態間での遷移を伴って状態に変換される。一例では、オートマトンは、FSMラティス30のハードウェアに部分的に基づいて、変換され得る。
一例では、オートマトンの入力記号は、アルファベット、数字0〜9、およびその他の印字可能文字からなる記号を含む。一例では、入力記号は、0と255を含めて0から255までのバイト値によって表される。一例では、オートマトンは、グラフのノードが一式の状態に対応する有向グラフとして表され得る。一例では、入力記号αに関して、状態pから状態qへの遷移、すなわちδ(p,α)が、ノードpからノードqへの有向連結によって示される。一例では、オートマトンを反転すると、何らかの記号αに関する各遷移p→qが、同じ記号に関してq→pと反転される、新しいオートマトンが生成される。反転では、開始状態が最終状態になり、最終状態が開始状態になる。一例では、オートマトンによって認識された(例えば、一致した)言語は、オートマトンに順次して入力する場合に、最終状態に達する、一式のすべての可能な文字列である。オートマトンによって認識された言語における各文字列は、開始状態から1つまたは2つ以上の最終状態へのパスを辿る。
ブロック116では、オートマトンが構築された後、オートマトンは、とりわけ、その複雑性およびサイズを低減するように最適化される。オートマトンは、重複する状態を組み合わせることにより最適化され得る。
ブロック118では、最適化されたオートマトンは、ネットリストに変換される。オートマトンのネットリストへの変換は、オートマトンの各状態をFSMラティス30上のハードウェア要素(例えば、SME34、36、その他の要素)へマッピングし、ハードウェア要素間の接続を判定する。
ブロック120では、ネットリストが配置されて、ネットリストの各ノードに対応するターゲットデバイスの特定のハードウェア要素(例えば、SME34、36、特定目的要素58)を選択する。一例では、配置により、FSMラティス30に対する一般的な入力および出力制約に基づいて各特定のハードウェア要素が選択される。
ブロック122では、選択されたハードウェア要素を、ネットリストによって記述される接続を達成するように互いに連結するために、配置されたネットリストがルーティングされて、設定可能なスイッチング要素(例えば、ブロック間スイッチング要素40、ブロック内スイッチング要素42、および行内スイッチング要素44)に対する設定を判定する。一例では、設定可能なスイッチング要素に対する設定は、選択されたハードウェア要素を接続するために用いられるFSMラティス30の特定の導体の判定、および設定可能なスイッチング要素に対する設定によって決定される。ルーティングは、ブロック120での配置よりも、ハードウェア要素間の接続に関するより具体的な制限を考慮に入れることができる。したがって、ルーティングは、FSMラティス30上の導体の実際の制限を前提として、適切な接続を行うために、グローバル配置によって決定されるように、いくつかのハードウェア要素の位置を調整し得る。
ネットリストが配置され、ルーティングされると、配置され、ルーティングされたネットリストは、FSMラティス30の設定のために、複数のビットに変換され得る。複数のビットは、本明細書では画像と呼ばれる。
ブロック124では、画像がコンパイラ20によって発行される。画像は、FSMラティス30の特定のハードウェア要素を設定するための複数のビットを備える。画像が複数のビット(例えば、0および1)を備える実施形態では、画像は、二値画像と呼ばれ得る。ビットは、SME34、36、特定目的要素58、および設定可能なスイッチング要素の状態を設定するために、FSMラティス30上にロードされて、プログラムされたFSMラティス30が、ソースコードによって記述された機能性を有するFSMを実装するようにし得る。配置(ブロック120)およびルーティング(ブロック122)は、FSMラティス30内の特定の位置における特定のハードウェア要素をオートマトンにおける特定の状態にマッピングし得る。したがって、画像内のビットは、特定のハードウェア要素を設定して、所望の機能(複数可)を実装し得る。一例では、画像は、機械コードをコンピュータ可読媒体に記憶することによって発行され得る。別の例では、画像は、画像をディスプレイ装置上に表示することによって発行され得る。さらに別の例では、画像は、その画像をFSMラティス30上にロードするための設定デバイスなどの別のデバイスにその画像を送ることにより発行され得る。さらにまた別の例では、画像は、その画像をFSMラティス(例えば、FSMラティス30)上にロードすることによって発行され得る。
一例では、画像は、ビット値を画像からSME34、36およびその他のハードウェア要素に直接ロードするか、あるいは画像を1つまたは2つ以上のレジスタにロードしてから、ビット値をレジスタからSME34、36およびその他のハードウェア要素に書き込むかのいずれかによって、FSMラティス30上にロードされ得る。一例では、FSMラティス30のハードウェア要素(例えば、SME34、36、特定目的要素58、設定可能なスイッチング要素40、42、44)は、設定デバイスおよび/またはコンピュータが、画像を1つまたは2つ以上のメモリアドレスに書き込むことにより、画像をFSMラティス30上にロードし得るようにメモリマップされる。
本明細書に説明される方法例は、少なくとも部分的に機械またはコンピュータで実装され得る。一部の例は、上述の例で説明したような方法を実行するように電子デバイスを設定するように操作可能な命令で符号化されたコンピュータ可読媒体または機械可読媒体を含み得る。このような方法の実装には、マイクロコード、アセンブリ言語コード、高水準言語コードなどのコードが含まれ得る。このようなコードは、様々な方法を実行するためのコンピュータ可読命令を含み得る。コードは、コンピュータプログラム製品の一部を形成し得る。さらに、コードは、実行中またはその他の時に、1つまたは2つ以上の揮発性もしくは不揮発性のコンピュータ可読媒体上に有形的に記憶され得る。これらのコンピュータ可読媒体は、限定されるものではないが、ハードディスク、取り外し可能磁気ディスク、取り外し可能光ディスク(例えば、コンパクトディスクおよびデジタルビデオディスク)、磁気カセット、メモリカードまたはスティック、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)などを含み得る。
ここで図9を参照すると、状態機械エンジン14の実施形態(例えば、シングルチップ上の単一のデバイス)が示されている。先に説明したように、状態機械エンジン14は、データをメモリ16などのソースからデータバスを介して受信するように構成され得る。図示の実施形態では、データは、ダブルデータレートスリー(DDR3)バスインターフェース130などのバスインターフェースを介して状態機械エンジン14に送信され得る。DDR3バスインターフェース130は、1Gバイト/秒を上回る、またはこれに等しい速度で、データを交換(例えば、提供および受信)可能であり得る。このようなデータ交換速度は、データが状態機械エンジン14によって解析される速度よりも速い場合もある。理解されるように、解析するデータのソースに応じて、バスインターフェース130は、状態機械エンジン14に対するデータソースへのデータ、およびデータソースからのデータを交換するための任意の好適なバスインターフェース、例えば、NANDフラッシュインターフェース、ペリフェラルコンポーネントインターコネクト(PCI)インターフェース、ギガビットメディア非依存インターフェース(GMMI)などであり得る。先述のように、状態機械エンジン14は、データを解析するように構成される1つまたは2つ以上のFSMラティス30を含む。各FSMラティス30は、2つのハーフラティスに分割され得る。図示の実施形態では、各ハーフラティスは、24KのSME(例えば、SME34、36)を含んで、ラティス30が48KのSMEを含むようにし得る。ラティス30は、図2〜図5に関して先述したように配置される、任意の望ましい数のSMEを備え得る。また、1つのFSMラティス30のみが図示されているが、状態機械エンジン14は、先述のように、複数のFSMラティス30を含み得る。
解析されるデータは、バスインターフェース130で受信され、いくつかのバッファおよびバッファインターフェースを介して、FSMラティス30に提供される。図示の実施形態では、データパスには、データバッファ132と、命令バッファ133と、プロセスバッファ134と、ランク間(IR)バスおよびプロセスバッファインターフェース136とが含まれる。データバッファ132は、解析されるデータを受信し、一時的に記憶するように構成される。一実施形態では、2つのデータバッファ132(データバッファAおよびデータバッファB)が存在する。データは、FSMラティス30による解析のために、2つのデータバッファ132のうちの1つに記憶され得るが、データは、他方のデータバッファ132から除去される。バスインターフェース130は、解析されるデータをデータバッファ132に、データバッファ132がフルになるまで提供するように構成され得る。データバッファ132がフルになった後、バスインターフェース130は、その他の目的のために用いることができるように、解放されるように構成され得る(例えば、データバッファ132がさらなる解析されるデータを受信するために利用できるようになるまで、データストリームからその他のデータを提供する)。図示の実施形態では、データバッファ132は、それぞれ32Kバイトであり得る。命令バッファ133は、解析されるデータに対応する命令および状態機械エンジン14の設定に対応する命令などの命令を、プロセッサ12からバスインターフェース130を介して受信するように構成される。IRバスおよびプロセスバッファインターフェース136は、データをプロセスバッファ134に提供するのを助け得る。IRバスおよびプロセスバッファインターフェース136は、確実にデータがFSMラティス30によって順番に処理されるようにするのに用いられ得る。IRバスおよびプロセスバッファインターフェース136は、データ、タイミングデータ、パッキング命令などの交換を調整して、データが受信され、正確に解析されるようにし得る。概して、IRバスおよびプロセスバッファインターフェース136は、FSMラティス30の論理ランクにわたる複数のデータセットの並列解析を可能にする。例えば、複数の物理デバイス(例えば、状態機械エンジン14、チップ、別個のデバイス)は、ランクに構成され得、また互いにIRバスおよびプロセスバッファインターフェース136を介してデータを提供し得る。本出願の目的上、「ランク」の語は、同じチップセレクトに接続された一式の状態機械エンジン14を指す。図示の実施形態では、IRバスおよびプロセスバッファインターフェース136は、32ビットデータバスを含み得る。その他の実施形態では、IRバスおよびプロセスバッファインターフェース136は、128ビットデータバスなどの任意の好適なデータバスを含み得る。
図示の実施形態では、状態機械エンジン14はまた、デコンプレッサ138と、コンプレッサ140とを含んで、状態機械エンジン14中に状態ベクトルデータを提供するのに役立つ。コンプレッサ140およびデコンプレッサ138は、連動して働いて、状態ベクトルデータが圧縮されて、データ提供時間を最小化し得るようにする。状態ベクトルデータを圧縮することにより、バス利用時間が最小限に抑えられ得る。コンプレッサ140およびデコンプレッサ138はまた、様々なバースト長の状態ベクトルデータを扱うように構成され得る。圧縮した状態ベクトルデータをパディングし、各圧縮領域の終点に関する指標を含めることにより、コンプレッサ140は、状態機械エンジン14にわたる処理スピード全体を改善し得る。コンプレッサ140は、FSMラティス30による解析後のマッチ結果データを圧縮するために用いられ得る。コンプレッサ140およびデコンプレッサ138はまた、設定データを圧縮および復元するのに用いられ得る。一実施形態では、コンプレッサ140およびデコンプレッサ138は、機能を無効にされて(例えば、オフにされる)、コンプレッサ140およびデコンプレッサ138との間で行き交うデータが修正されないようにし得る。
上述のように、FSMラティス30の出力は、状態ベクトルを備え得る。状態ベクトルは、FSMラティス30のSME34、36の状態(例えば、アクティブ化された、またはされていない)と、カウンタ58の動的な(例えば、現時点の)カウントを備える。状態機械エンジン14は、状態ベクトルキャッシュメモリ142と、状態ベクトルメモリバッファ144と、状態ベクトル中間入力バッファ146と、状態ベクトル中間出力バッファ148とを有する状態ベクトルシステム141を含む。状態ベクトルシステム141は、FSMラティス30の複数の状態ベクトルを記憶し、状態ベクトルをFSMラティス30に提供して、FSMラティス30を提供された状態ベクトルに対応する状態に復元するのに用いられ得る。例えば、各状態ベクトルは、状態ベクトルキャッシュメモリ142に一時的に記憶され得る。つまり、SME34、36を新しいデータセット(例えば、検索ターム)のさらなる解析のために解放しながら、各SME34、36の状態が記憶されて、状態が復元され、かつ後にさらなる解析において用いられるようにし得る。一般的なキャッシュと同様に、状態ベクトルキャッシュメモリ142は、ここでは、例えば、FSMラティス30により迅速に検索し使用できるような状態ベクトルの記憶を可能にする。図示の実施形態では、状態ベクトルキャッシュメモリ142は、最大512の状態ベクトルまで記憶し得る。
理解されるように、状態ベクトルデータは、ランク内の異なる状態機械エンジン14(例えば、チップ)の間で交換され得る。状態ベクトルデータは、様々な目的のために異なる状態機械エンジン14の間で交換され得る。様々な目的とは、状態機械エンジン14のFSMラティス30のSME34、36の状態を同期させるため、複数の状態機械エンジン14にわたって同じ機能を実行するため、複数の状態機械エンジン14にわたって結果を再現するため、複数の状態機械エンジン14にわたって結果をカスケード式に送るため、複数の状態機械エンジン14にわたってカスケード式に送られたデータの解析に用いられるSME34、36の状態の履歴を記憶するためなどである。さらに、状態機械エンジン14内では、状態ベクトルデータが、FSMラティス30のSME34、36を迅速に設定するために用いられ得ることに留意されたい。例えば、状態ベクトルデータが用いられて、SME34、36の状態を初期化された状態(例えば、新しい検索タームを検索するため)に復元したり、SME34、36の状態を先の状態(例えば、先に検索した検索タームを検索するため)に復元したり、SME34、36の状態をカスケード接続する構成に設定されるように変更したりし得る(例えば、カスケード型検索における検索タームを検索するため)。ある実施形態では、状態ベクトルデータは、バスインターフェース130に提供されて、状態ベクトルデータがプロセッサ12に提供され得るようにし得る(例えば、状態ベクトルデータの解析のため、状態ベクトルデータを再設定して、修正を加えるため、状態ベクトルデータを再設定して、SME34、36の効率を高めるためなど)。
例えば、ある実施形態では、状態機械エンジン14は、キャッシュされた状態ベクトルデータ(例えば、状態ベクトルシステム141により記憶されたデータ)をFSMラティス30から外部デバイスに提供し得る。外部デバイスは、状態ベクトルデータを受信し、状態ベクトルデータを修正し、FSMラティス30を設定するために修正した状態ベクトルデータを状態機械エンジン14に提供し得る。このように、外部デバイスは、状態ベクトルデータを修正して、状態機械エンジン14が所望どおりに状態をスキップ(例えば、方々に飛び越し)できるようにし得る。
状態ベクトルキャッシュメモリ142は、状態ベクトルデータを任意の好適なデバイスから受信し得る。例えば、状態ベクトルキャッシュメモリ142は、FSMラティス30、別のFSMラティス30(例えば、IRバスおよびプロセスバッファインターフェース136を介して)、デコンプレッサ138などから状態ベクトルを受信し得る。図示の実施形態では、状態ベクトルキャッシュメモリ142は、状態ベクトルメモリバッファ144を介して、その他のデバイスから状態ベクトルを受信し得る。さらに、状態ベクトルキャッシュメモリ142は、状態ベクトルデータを任意の好適なデバイスに提供し得る。例えば、状態ベクトルキャッシュメモリ142は、状態ベクトルメモリバッファ144と、状態ベクトル中間入力バッファ146と、状態ベクトル中間出力バッファ148とに、状態ベクトルデータを提供し得る。
状態ベクトルメモリバッファ144、状態ベクトル中間入力バッファ146、および状態ベクトル中間出力バッファ148などの追加的なバッファは、状態ベクトルキャッシュメモリ142と共に利用されて、状態機械エンジン14中でパケットを割り込ませた別個のデータセットを処理しながら、状態ベクトルの迅速な検索および記憶を提供し得る。図示の実施形態では、状態ベクトルメモリバッファ144、状態ベクトル中間入力バッファ146、および状態ベクトル中間出力バッファ148のそれぞれは、1つの状態ベクトルを一時的に記憶するように構成され得る。状態ベクトルメモリバッファ144は、状態ベクトルデータを任意の好適なデバイスから受信するために、また状態ベクトルデータを任意の好適なデバイスに提供するために用いられ得る。例えば、状態ベクトルメモリバッファ144は、FSMラティス30、別のFSMラティス30(例えば、IRバスおよびプロセスバッファインターフェース136を介して)、デコンプレッサ138、および状態ベクトルキャッシュメモリ142から状態ベクトルを受信するために用いられ得る。別の例として、状態ベクトルメモリバッファ144は、IRバスおよびプロセスバッファインターフェース136(例えば、その他のFSMラティス30のため)、コンプレッサ140、および状態ベクトルキャッシュメモリ142に状態ベクトルデータを提供するために用いられ得る。
同様に、状態ベクトル中間入力バッファ146は、状態ベクトルデータを任意の好適なデバイスから受信するために、また状態ベクトルデータを任意の好適なデバイスに提供するために用いられ得る。例えば、状態ベクトル中間入力バッファ146は、FSMラティス30(例えば、IRバスおよびプロセスバッファインターフェース136を介して)、デコンプレッサ138、および状態ベクトルキャッシュメモリ142から状態ベクトルを受信するために用いられ得る。別の例として、状態ベクトル中間入力バッファ146は、FSMラティス30に状態ベクトルを提供するために用いられ得る。さらに、状態ベクトル中間出力バッファ148は、状態ベクトルを任意の好適なデバイスから受信するために、また状態ベクトルを任意の好適なデバイスに提供するために用いられ得る。例えば、状態ベクトル中間出力バッファ148は、FSMラティス30および状態ベクトルキャッシュメモリ142から状態ベクトルを受信するために用いられ得る。別の例として、状態ベクトル中間出力バッファ148は、FSMラティス30(例えば、IRバスおよびプロセスバッファインターフェース136を介して)およびコンプレッサ140に状態ベクトルを提供するために用いられ得る。
着目する結果がFSMラティス30によって生成されると、マッチ結果がマッチ結果メモリ150に記憶され得る。つまり、一致(例えば、着目するパターンの検出)を示す「マッチベクトル」が、マッチ結果メモリ150に記憶され得る。次いで、マッチング結果は、バスインターフェース130を介して、例えばプロセッサ12に送信するために、マッチバッファ152に送信され得る。先述したように、マッチ結果は、圧縮され得る。
さらなるレジスタおよびバッファも同様に、状態機械エンジン14に提供され得る。例えば、状態機械エンジン14は、制御およびステータスレジスタ154を含み得る。加えて、プログラムバッファシステム(例えば、修復マップおよびプログラムバッファ156)が、最初にFSMラティス30をプログラミングするために提供され得る。例えば、初期(例えば、開始)状態ベクトルデータは、プログラムバッファシステムから(例えば、デコンプレッサ138を介して)FSMラティス30に提供され得る。デコンプレッサ138は、FSMラティス30をプログラムするために提供される設定データ(例えば、状態ベクトルデータ、ルーティングスイッチデータ、SME34、36の状態、ブール関数データ、カウンタデータ、マッチMUXデータ)を復元するために用いられ得る。
同様に、修復マップバッファシステム(例えば、保存および修復マップバッファ158)はまた、セットアップおよび使用のためのデータ(例えば、保存および修復マップ)の記憶のために提供され得る。修復マップバッファシステムによって記憶されるデータは、どのSME34、36が修復されたかを識別するデータなどの修復されたハードウェア要素に対応するデータを含み得る。修復マップバッファシステムは、任意の好適な方法でデータを受信し得る。例えば、データは、最終製造試験中にデバイス上でなされた修復のマッピングを提供する「ヒューズマップ」メモリから、修復マップバッファ158に提供され得る。別の例として、修復マップバッファシステムは、標準的なプログラミングファイルを修正(例えば、カスタマイズ)するために用いられるデータを含んで、標準的なプログラミングファイルが、修復されたアーキテクチャを有するFSMラティス30で動作し得るようにし得る(例えば、FSMラティス30における不良のSME34、36は、使用されないようにバイパスされる)。コンプレッサ140は、ヒューズマップメモリから修復マップバッファ158に提供されたデータを圧縮するために用いられ得る。図示のように、バスインターフェース130は、データをプログラムバッファ156に提供し、修復マップバッファ158からのデータを提供するために用いられ得る。理解されるように、プログラムバッファ156に提供されるデータおよび/または修復マップバッファ158から提供されるデータは、圧縮され得る。一部の実施形態では、データは、状態機械エンジン14の外部にあるデバイスを(例えば、プロセッサ12、メモリ16、コンパイラ20など)介して、バスインターフェース130に提供される、および/またはバスインターフェース130から受信される。状態機械エンジン14の外部にあるデバイスは、修復マップバッファ158から提供されるデータを受信し、データを記憶し、データを解析し、データを修正し、および/または新しいもしくは修正したデータをプログラムバッファ156に提供するように構成され得る。
状態機械エンジン14は、FSMラティス30をプログラムするのに用いられるラティスプログラミングシステム159を含む。図示のように、ラティスプログラミングシステム159は、命令キュー133からデータ(例えば、設定命令)を受信し得る。さらに、ラティスプログラミングシステム159は、プログラムバッファ156からデータ(例えば、設定データ)を受信し得る。ラティスプログラミングシステム159は、設定命令および設定データを用いて、FSMラティス30を設定し得る(例えば、ルーティングスイッチ、SME34、36、ブールセル、カウンタ、マッチMUXを設定し得る)。ラティスプログラミングシステム159は、デコンプレッサ138を用いて、データを圧縮し、コンプレッサ140を用いて、データを圧縮し得る(例えば、プログラムバッファ156および修復マップバッファ158と交換されたデータのため)。
ここで図10を参照すると、状態機械エンジン14におけるFSMラティス30をプログラミングする方法160を示す流れ図が示されている。本方法160は、設定データをプログラムバッファ156に提供するステップ(ブロック162)と、設定命令を命令バッファ133に提供するステップ(ブロック164)と、設定の更新を開始するステップ(ブロック166)と、命令を命令バッファ133から読み出すステップ(ブロック168)と、命令が設定命令であるかどうかを判定するステップ(ブロック170)と、設定データをプログラムバッファ156から読み出し、圧縮されている場合には、設定データを復元するステップ(ブロック172)と、設定データをFSMラティス30に提供するステップ(ブロック174)とを含み得る。
一実施形態では、ブロック162において、プロセッサ12は、設定データをプログラムバッファシステム(例えば、復元マップおよびプログラムバッファ156)にバスインターフェース130を介して提供し得る。さらに、プロセッサ12は、設定命令を命令バッファ133にバスインターフェース130を介して提供し得る(ブロック164)。ブロック166では、設定の更新が開始され得る(例えば、プロセッサ12、ラティスプログラミングシステム159、または状態機械エンジン14を介して)。次いで、ブロック168では、ラティスプログラミングシステム159は、命令バッファ133に記憶された命令を読み出し得る。次に、ブロック170では、ラティスプログラミングシステム159は、命令バッファ133から読み出された命令が設定命令かどうかを判定し得る。命令が設定命令ではない場合、ラティスプログラミングシステム159は、ブロック168で、命令バッファ133に記憶されたさらなる命令を読み出す。しかしながら、命令が設定命令である場合、ラティスプログラミングシステム159は、プログラムバッファシステムに記憶された設定データを読み出す(ブロック172)。一部の実施形態では、設定データは、圧縮され得る。したがって、さらにブロック172では、ラティスプログラミングシステム159は、設定データを復元し得る(例えば、デコンプレッサ138を介して)。次いで、ラティスプログラミングシステム159は、設定データをFSMラティス30に提供する(ブロック174)。
本開示は、様々な修正および代替形態に利用可能であるが、具体的な実施形態が例として図面に示され、本明細書に詳述されてきた。しかしながら、本発明が、開示された特定の形態に限定されることを意図するものではないことを理解されたい。むしろ、本発明は、以下の添付の特許請求の範囲によって定義される、本開示の精神および範囲内に含まれるすべての修正、均等物、および代替策を包含するものである。

Claims (25)

  1. 状態機械エンジンであって、
    状態機械ラティスを設定するために、バスインターフェースを介して設定データを受信するように構成されるプログラムバッファと、
    前記バスインターフェースを介して外部デバイスに修復マップデータを提供するように構成される修復マップバッファと
    を備え、
    前記状態機械ラティスが、複数のプログラム可能要素を備え、各プログラム可能要素が、データを解析し、前記解析の結果を出力するように構成される複数のメモリセルを備える、状態機械エンジン。
  2. 前記プログラムバッファが、圧縮された設定データを受信するように構成される、請求項1に記載の状態機械エンジン。
  3. 前記プログラムバッファが、非圧縮の設定データを受信するように構成される、請求項1に記載の状態機械エンジン。
  4. 前記修復マップバッファが、圧縮された修復マップデータを提供するように構成される、請求項1に記載の状態機械エンジン。
  5. 前記修復マップバッファが、非圧縮の修復マップデータを提供するように構成される、請求項1に記載の状態機械エンジン。
  6. 前記外部デバイスが、前記修復マップバッファから提供される修復マップデータを受信し、前記修復マップデータを解析し、設定データの修正版を構築し、前記設定データの修正版を前記プログラムバッファに提供するように構成される、請求項1に記載の状態機械エンジン。
  7. 前記プログラムバッファが、設定データをラティスプログラミングシステムに提供して、前記状態機械ラティスを設定するように構成される、請求項1に記載の状態機械エンジン。
  8. 状態機械ラティスを設定するために、バスインターフェースを介して設定データを受信するように構成されるプログラムバッファを備える状態機械エンジンであって、前記状態機械ラティスが、複数のプログラム可能要素を備え、各プログラム可能要素が、データストリームの少なくとも一部分を解析し、前記解析の結果を出力するように構成される複数のメモリセルを備える、状態機械エンジン。
  9. 前記プログラムバッファが、設定データをラティスプログラミングシステムに提供するように構成される、請求項8に記載の状態機械エンジン。
  10. 前記ラティスプログラミングシステムが、設定データを前記状態機械ラティスに提供して、前記状態機械ラティスを設定するように構成される、請求項9に記載の状態機械エンジン。
  11. 前記プログラムバッファが、圧縮された設定データをラティスプログラミングシステムに提供するように構成される、請求項8に記載の状態機械エンジン。
  12. 前記ラティスプログラミングシステムが、前記圧縮された設定データを受信した後、前記設定データを復元するように構成される、請求項11に記載の状態機械エンジン。
  13. 状態機械ラティスからの修復マップデータを、バスインターフェースを介して外部デバイスに提供するように構成される修復マップバッファを備える状態機械エンジンであって、前記状態機械ラティスが、複数のプログラム可能要素を備え、各プログラム可能要素が、データストリームの少なくとも一部分を解析し、前記解析の結果を出力するように構成される複数のメモリセルを備える、状態機械エンジン。
  14. 前記修復バッファが、ラティスプログラミングシステムから設定データを受信するように構成される、請求項13に記載の状態機械エンジン。
  15. 前記修復バッファが、ラティスプログラミングシステムから圧縮された修復マップデータを受信するように構成される、請求項13に記載の状態機械エンジン。
  16. 前記ラティスプログラミングシステムが、前記修復マップデータを前記修復バッファに提供する前に、前記修復マップデータを圧縮するように構成される、請求項15に記載の状態機械エンジン。
  17. 前記外部デバイスが、前記修復マップデータを記憶するように構成される、請求項13に記載の状態機械エンジン。
  18. 前記外部デバイスが、前記修復マップデータを解析し、修正された設定データを前記状態機械エンジンに提供するように構成される、請求項13に記載の状態機械エンジン。
  19. 前記修復マップデータが、前記状態機械ラティスの修復された部分に対応するデータを備える、請求項13に記載の状態機械エンジン。
  20. 前記修復マップデータが、前記状態機械ラティスのどの部分が修復されたのかを識別する指標と、前記状態機械ラティスがどのように修復されたのかを識別する指標とを備える、請求項13に記載の状態機械エンジン。
  21. 状態機械エンジンの状態機械ラティスを設定するための方法であって、
    前記状態機械エンジンのプログラムバッファにおける設定データを受信することと、
    前記プログラムバッファからの前記設定データをラティスプログラミングシステムに提供することと、
    前記ラティスプログラミングシステムを用いて前記状態機械ラティスを設定することであって、前記状態機械ラティスが、複数のプログラム可能要素を備え、各プログラム可能要素が、データストリームの少なくとも一部分を解析し、前記解析の結果を出力するように構成される複数のメモリセルを備える、前記状態機械ラティスを設定することと
    を備える、状態機械エンジンの状態機械ラティスを設定するための方法。
  22. 前記状態機械ラティスを設定する前に、設定データを復元することを備える、請求項21に記載の方法。
  23. 前記状態機械エンジンの命令バッファにおける命令を受信することを備える、請求項21に記載の方法。
  24. 前記命令を前記ラティスプログラミングシステムに提供することを備える、請求項23に記載の方法。
  25. 前記ラティスプログラミングシステムを用いて前記状態機械ラティスを設定することが、前記命令が設定命令であるかどうかを判定することと、前記命令が設定命令であるならば、前記状態機械ラティスを設定することとを備える、請求項24に記載の方法。
JP2015523127A 2012-07-18 2013-07-09 状態機械エンジンをプログラミングするための方法およびデバイス Active JP6207605B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/552,492 US9304968B2 (en) 2012-07-18 2012-07-18 Methods and devices for programming a state machine engine
US13/552,492 2012-07-18
PCT/US2013/049755 WO2014014712A1 (en) 2012-07-18 2013-07-09 Methods and devices for programming a state machine engine

Publications (3)

Publication Number Publication Date
JP2015534659A true JP2015534659A (ja) 2015-12-03
JP2015534659A5 JP2015534659A5 (ja) 2016-08-12
JP6207605B2 JP6207605B2 (ja) 2017-10-04

Family

ID=49947414

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015523127A Active JP6207605B2 (ja) 2012-07-18 2013-07-09 状態機械エンジンをプログラミングするための方法およびデバイス

Country Status (7)

Country Link
US (4) US9304968B2 (ja)
EP (1) EP2875436A4 (ja)
JP (1) JP6207605B2 (ja)
KR (1) KR101922762B1 (ja)
CN (1) CN104487957B (ja)
TW (1) TWI492062B (ja)
WO (1) WO2014014712A1 (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US9323994B2 (en) 2009-12-15 2016-04-26 Micron Technology, Inc. Multi-level hierarchical routing matrices for pattern-recognition processors
US9524248B2 (en) 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
US9235798B2 (en) 2012-07-18 2016-01-12 Micron Technology, Inc. Methods and systems for handling data received by a state machine engine
US9389841B2 (en) 2012-07-18 2016-07-12 Micron Technology, Inc. Methods and systems for using state vector data in a state machine engine
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
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
US9218862B1 (en) 2014-04-11 2015-12-22 Altera Corporation Method and apparatus for operating finite-state machines in configurable storage circuits
WO2016109571A1 (en) 2014-12-30 2016-07-07 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
US10430210B2 (en) 2014-12-30 2019-10-01 Micron Technology, Inc. Systems and devices for accessing a state machine
US10977309B2 (en) 2015-10-06 2021-04-13 Micron Technology, Inc. Methods and systems for creating networks
US10846103B2 (en) 2015-10-06 2020-11-24 Micron Technology, Inc. Methods and systems for representing processing resources
US10691964B2 (en) 2015-10-06 2020-06-23 Micron Technology, Inc. Methods and systems for event reporting
US10146555B2 (en) * 2016-07-21 2018-12-04 Micron Technology, Inc. Adaptive routing to avoid non-repairable memory and logic defects on automata processor
US10268602B2 (en) 2016-09-29 2019-04-23 Micron Technology, Inc. System and method for individual addressing
US10019311B2 (en) 2016-09-29 2018-07-10 Micron Technology, Inc. Validation of a symbol response memory
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
EP3340044A1 (en) * 2016-12-22 2018-06-27 Ecole Nationale de l'Aviation Civile Method and apparatus for processing software code
US10481881B2 (en) * 2017-06-22 2019-11-19 Archeo Futurus, Inc. Mapping a computer code to wires and gates
US9996328B1 (en) * 2017-06-22 2018-06-12 Archeo Futurus, Inc. Compiling and optimizing a computer code by minimizing a number of states in a finite machine corresponding to the computer code
US10740150B2 (en) * 2018-07-11 2020-08-11 X-Drive Technology, Inc. Programmable state machine controller in a parallel processing system
US11307771B2 (en) * 2020-07-10 2022-04-19 Micron Technology, Inc. Configurable link interfaces for a memory device
CN112306889B (zh) * 2020-11-23 2023-10-20 国网北京市电力公司 充电桩的测试方法、装置、存储介质及处理器

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110307433A1 (en) * 2010-06-10 2011-12-15 Paul Dlugosch Programmable device, heirarchical parallel machines, methods for providing state information

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5452231A (en) * 1988-10-05 1995-09-19 Quickturn Design Systems, Inc. Hierarchically connected reconfigurable logic assembly
US5774738A (en) * 1993-05-03 1998-06-30 Texas Instruments Incorporated State machines
US5659551A (en) 1995-05-31 1997-08-19 International Business Machines Corporation Programmable computer system element with built-in self test method and apparatus for repair during power-on
US5991907A (en) * 1996-02-02 1999-11-23 Lucent Technologies Inc. Method for testing field programmable gate arrays
US6011407A (en) 1997-06-13 2000-01-04 Xilinx, Inc. Field programmable gate array with dedicated computer bus interface and method for configuring both
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US6587979B1 (en) * 1999-10-18 2003-07-01 Credence Systems Corporation Partitionable embedded circuit test system for integrated circuit
US6614703B2 (en) 2000-01-13 2003-09-02 Texas Instruments Incorporated Method and system for configuring integrated systems on a chip
US20050102573A1 (en) 2003-11-03 2005-05-12 Macronix International Co., Ltd. In-circuit configuration architecture for embedded configurable logic array
US7487542B2 (en) 2004-01-14 2009-02-03 International Business Machines Corporation Intrusion detection using a network processor and a parallel pattern detection engine
JP4335090B2 (ja) * 2004-05-14 2009-09-30 シャープ株式会社 移動端末装置
JP2006011825A (ja) 2004-06-25 2006-01-12 Fujitsu Ltd 再構成可能演算装置および半導体装置
US7392229B2 (en) 2005-02-12 2008-06-24 Curtis L. Harris General purpose set theoretic processor
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
US7899976B2 (en) 2006-12-08 2011-03-01 Pandya Ashish A FSA extension architecture for programmable intelligent search memory
JP5497631B2 (ja) * 2007-04-26 2014-05-21 アギア システムズ インコーポレーテッド ヒューズ焼付け状態機械及びヒューズダウンロード状態機械に基づく内蔵メモリ修理方法
US8068380B2 (en) * 2008-05-15 2011-11-29 Micron Technology, Inc. Block repair scheme
US8296120B2 (en) * 2008-06-20 2012-10-23 Utah State University FPGA simulated annealing accelerator
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
US9639493B2 (en) 2008-11-05 2017-05-02 Micron Technology, Inc. Pattern-recognition processor with results buffer
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
US10007486B2 (en) 2008-12-01 2018-06-26 Micron Technology, Inc. Systems and methods to enable identification of different data sets
US9164945B2 (en) 2008-12-01 2015-10-20 Micron Technology, Inc. Devices, systems, and methods to synchronize parallel processing of a single data stream
US9348784B2 (en) 2008-12-01 2016-05-24 Micron Technology, Inc. Systems and methods for managing endian mode of a device
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
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
US8281190B2 (en) * 2009-08-02 2012-10-02 Avago Technologies Enterprise IP (Singapore) Pte. Ltd. Circuits and methods for processing memory redundancy data
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
US8489534B2 (en) 2009-12-15 2013-07-16 Paul D. Dlugosch Adaptive content inspection
US8601013B2 (en) 2010-06-10 2013-12-03 Micron Technology, Inc. Analyzing data using a hierarchical structure
JP5763783B2 (ja) 2011-01-25 2015-08-12 マイクロン テクノロジー, インク. 正規表現をコンパイルするための方法および装置
US8788991B2 (en) 2011-01-25 2014-07-22 Micron Technology, Inc. State grouping for element utilization
US8843911B2 (en) 2011-01-25 2014-09-23 Micron Technology, Inc. Utilizing special purpose elements to implement a FSM
KR101607736B1 (ko) 2011-01-25 2016-03-30 마이크론 테크놀로지, 인크. 오토마톤의 진입 차수 및/또는 진출 차수를 제어하기 위한 양화 언롤링

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110307433A1 (en) * 2010-06-10 2011-12-15 Paul Dlugosch Programmable device, heirarchical parallel machines, methods for providing state information

Also Published As

Publication number Publication date
CN104487957B (zh) 2017-10-03
US20230196065A1 (en) 2023-06-22
US20160217365A1 (en) 2016-07-28
TWI492062B (zh) 2015-07-11
TW201411357A (zh) 2014-03-16
US9304968B2 (en) 2016-04-05
KR20150036166A (ko) 2015-04-07
JP6207605B2 (ja) 2017-10-04
CN104487957A (zh) 2015-04-01
US11599770B2 (en) 2023-03-07
WO2014014712A1 (en) 2014-01-23
KR101922762B1 (ko) 2018-11-27
EP2875436A1 (en) 2015-05-27
US20140025614A1 (en) 2014-01-23
US10509995B2 (en) 2019-12-17
EP2875436A4 (en) 2016-11-09
US20200117977A1 (en) 2020-04-16

Similar Documents

Publication Publication Date Title
US11599770B2 (en) Methods and devices for programming a state machine engine
US10733508B2 (en) Methods and systems for data analysis in a state machine
US9454322B2 (en) Results generation for state machine engines
US10671295B2 (en) Methods and systems for using state vector data in a state machine engine
JP6154824B2 (ja) ステートマシンラチスにおけるブール型論理
JP2015506037A (ja) ステートマシンにおけるルーティング用の方法およびシステム
JP2015509228A (ja) ステートマシンにおける検出方法とシステム
JP2015531936A (ja) 状態機械エンジンにおける命令挿入
JP2015531934A (ja) パターン認識処理における電力管理のための方法およびシステム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160623

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160623

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20160623

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20160728

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161019

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161025

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170119

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170605

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20170614

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170829

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170905

R150 Certificate of patent or registration of utility model

Ref document number: 6207605

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