JP2013533542A - 階層構造を使用するデータの分析 - Google Patents

階層構造を使用するデータの分析 Download PDF

Info

Publication number
JP2013533542A
JP2013533542A JP2013514372A JP2013514372A JP2013533542A JP 2013533542 A JP2013533542 A JP 2013533542A JP 2013514372 A JP2013514372 A JP 2013514372A JP 2013514372 A JP2013514372 A JP 2013514372A JP 2013533542 A JP2013533542 A JP 2013533542A
Authority
JP
Japan
Prior art keywords
data
parallel processing
processing machine
output
pattern
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
JP2013514372A
Other languages
English (en)
Other versions
JP2013533542A5 (ja
JP5736042B2 (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 JP2013533542A publication Critical patent/JP2013533542A/ja
Publication of JP2013533542A5 publication Critical patent/JP2013533542A5/ja
Application granted granted Critical
Publication of JP5736042B2 publication Critical patent/JP5736042B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/243Natural language query formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • 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/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
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • 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
    • G06F15/7885Runtime interface, e.g. data exchange, runtime control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2452Query translation
    • G06F16/24522Translation of natural language queries to structured queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/3332Query translation
    • G06F16/3335Syntactic pre-processing, e.g. stopword elimination, stemming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/284Lexical analysis, e.g. tokenisation or collocates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/40Processing or translation of natural language
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/425Lexical analysis
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Multimedia (AREA)
  • General Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Image Processing (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)
  • Character Discrimination (AREA)
  • Analysing Materials By The Use Of Radiation (AREA)
  • Image Analysis (AREA)

Abstract

データを分析するための装置、システムおよび方法が説明される。データは階層構造を使用して分析できる。1つのかかる階層構造は複数の層を含み、各層は、入力データに対する分析を実行し、その分析に基づいた出力を提供する。階層構造の下層からの出力は、上位層に対する入力として提供できる。このようにして、下層は下位レベルの分析(たとえば、基本的/根本的な分析)を実行できる。一方、上位層は、1つまたは複数の下層からの出力を使用して高レベルの分析(たとえば、より複雑な分析)を実行できる。例では、階層構造は、パターン認識を実行する。
【選択図】図5

Description

(優先権主張)
本特許出願は、参照することによりともに本明細書に含まれる、2010年6月10日に出願された「Hierarchical Pattern Recognition」と題する米国仮特許出願番号第61/353,546号に対し、合衆国法典第35巻、第119条(e)の下で利益を主張する、2010年11月10日に出願された「Analyzing Data Using A Hierarchical Structure」と題する米国出願番号第12/943,551号に基づく優先権を主張する。
複雑なパターン認識は、従来のフォンノイマン型コンピュータで実行するには不十分である場合がある。しかし、生物学的な脳、特に人間の脳は、パターン認識の実行に長けている。現在の研究は、人間の脳が新皮質の一連の階層的に編成された神経細胞層を使用してパターン認識を実行していることを示唆している。階層の下層の神経細胞は、たとえば感覚器官からの「未処理信号」を分析する。一方、上位層の神経細胞は下位レベルの神経細胞からの信号出力を分析する。新皮質のこの階層システムが、おそらくは脳の他の領域と組み合わされて、人間が空間推論、意識的思考、および複雑な言語等の高レベルの機能を実行できるようにする複雑なパターン認識を達成している。
本発明の多様な実施形態に係る並行処理機械の例を示す図である。 本発明の多様な実施形態に係る有限状態機械の例を示す図である。 本発明の多様な実施形態に従って並行処理機械で実装される2レベル階層の例を示す図である。 本発明の多様な実施形態に従って並行処理機械で実装される2レベル階層の別の例を示す図である。 本発明の多様な実施形態に従って並行処理機械で実装される4レベル階層の例を示す図である。 本発明の多様な実施形態に従って並行処理機械で実装されるフィードバックを有する4レベル階層の例を示す図である。 本発明の多様な実施形態に従って並行処理機械で実装されるフィードバックを有する4レベル階層の別の例を示す図である。 本発明の多様な実施形態に従って有限状態機械エンジンとして実装される、図1の並行処理機械の例を示す図である。 本発明の多様な実施形態に係る図8の有限状態機械エンジンのブロックの例を示す図である。 本発明の多様な実施形態に係る図9のブロックの行の例を示す図である。 本発明の多様な実施形態に係る図10の行の2のグループの例を示す図である。 コンパイラが、本発明の多様な実施形態に従って図8の並行処理機械のプログラミングのための画像にソースコードを変換する方法の例を示す図である。 本発明の多様な実施形態に係るフォンノイマンをベースにしたアーキテクチャを有するコンピュータの例を示す図である。
以下の説明および図面は特定の実施形態を十分に示し、当業者がそれらを実行できるようにする。他の実施形態は、構造上の変更、論理的変更、電気的変更、プロセス変更、および他の変更を組み込んでよい。いくつかの実施形態の部分および特長は、他の実施形態の部分および特長の中に含まれてよい、または他の実施形態の部分および特長に代わってよい。
本書は、とりわけ、階層構造を使用してデータを分析するための方法および装置を説明する。階層構造は複数の層を含むことがあり、各層は、入力データに対する分析を実行し、その分析に基づいた出力を提供する。階層構造の下層からの出力は、上位層に対する入力として提供できる。このようにして、下層は下位レベルの分析(たとえば、基本的/根本的な分析)を実行できる。一方、上位層は、1つまたは複数の下層からの出力を使用して高レベルの分析(たとえば、より複雑な分析)を実行できる。例では、階層構造は、パターン認識を実行する。例では、パターン認識は、記号のシーケンスを識別することを含む。パターンの識別のための例の記号は、音素(音声)、画像中のピクセル、ASCII文字、機械データ(たとえば0と1)に相当することがある。
例では、階層構造は、カスケード式でともに結合された複数の並行処理機械で実装される。たとえば、第1の並行処理機械および第2の並行処理機械は、第2の並行処理機械が、第1の並行処理機械からの出力を入力として受け取るように、直列で結合できる。任意の数の並行処理機械が、この階層構造でともに結合できる。
階層構造を使用してデータを分析することに加えて、本書は、階層のあるレベルで実行される分析からの情報を使用して、階層の別のレベルで実行される分析を修正するための方法および装置も説明する。高レベルの分析を実現する第2の並行処理機械は、上述された並行処理機械の例を使用して、下位レベルの分析を実現する第1の並行処理機械にフィードバック情報を提供することができる。フィードバック情報は、第1の並行処理機械によって使用され、生物学的な脳での学習に類似した方法で第1の並行処理機械によって実行される分析を更新できる。
図1は、データを分析するための階層構造を実装するために使用できる例の並行処理機械100を示す。並行処理機械100は、入力データを受け取り、その入力データに基づいた出力を提供することができる。並行処理機械100は、入力データを受け取るためのデータ入力ポート110、および別の装置に出力を提供するための出力ポート114を含むことがある。データ入力ポート110は、並行処理機械100に入力されるためのデータにインタフェースを提供する。
並行処理機械100は、それぞれが1つまたは複数の入力104、および1つまたは複数の出力106を有する複数のプログラマブル要素102を含む。プログラマブル要素102は、複数の状態の内の1つにプログラムすることができる。プログラマブル要素102の状態は、プログラマブル要素102が、所与の入力(複数の場合がある)に基づいてどの出力(複数の場合がある)を提供するのかを決定する。すなわち、プログラマブル要素102の状態は、所与の入力に基づいて、プログラマブル要素がどのように反応するのかを決定する。データ入力ポート110に対するデータ入力は、複数のプログラマブル要素102に提供され、プログラマブル要素102にそれに対して処置を講じさせることができる。プログラマブル要素102の例は、以下に説明される状態機械要素(SME)、および構成可能論理ブロックを含むことがある。例では、SMEは、所与の入力がデータ入力ポート110で受け取られるときに、特定の出力(たとえば、高、つまり「1」信号)を提供するように所与の状態で設定できる。所与の入力以外の入力がデータ入力ポート110で受け取られるとき、SMEは異なる出力(たとえば、低、つまり「0」信号)を提供できる。例では、構成可能な論理ブロックは、データ入力ポート110で受け取られる入力に基づいてブール論理関数(たとえば、AND、OR、NOR、ext.)を実行するように設定できる。
並行処理機械100は、並行処理機械100の上にプログラム(たとえば、画像)をロードするためのプログラミングインタフェース111も含むことがある。画像は、プログラマブル要素102の状態をプログラム(たとえば、設定)できる。つまり、画像は、所与の入力に特定のやり方で反応するようにプログラマブル要素102を構成できる。たとえば、プログラマブル要素102は、文字「a」がデータ入力ポート110で受け取られるときに高信号を出力するように設定できる。いくつかの例では、並行処理機械100は、プログラマブル要素102の動作のタイミングを制御するためのクロック信号を使用できる。特定の例では、並列処理機械100は、プログラマブル要素102とのインタフェースをとるため、および特殊目的の機能を実行するための特殊目的要素112(たとえば、RAM、論理ゲート、カウンタ、ルックアップテーブル等)を含むことがある。いくつかの実施形態では、データ入力ポート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を設定することによって制御できる。図1は、所与の要素とプログラマブルスイッチ108との間の特定数の導線(たとえばワイヤ)を示しているが、他の例では、異なる数の導線を使用できることが理解されるべきである。また、図1は、プログラマブルスイッチ108に個々に結合される各プログラマブル要素102を示しているが、他の例では、複数のプログラマブル要素102が、プログラマブルスイッチ108に対するグループ(たとえば、図8に示されるようなブロック802)として結合できる。例では、データ入力ポート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の状態に対応する状態ベクトルを含むことがある。
並行処理機械100の例の使用は、パターン認識(たとえば、音声認識、画像認識等)信号処理、画像処理、コンピュータビジョン、暗号法および他を含む。特定の例では、並行処理機械100は、有限状態機械(FSM)エンジン、フィールドプログラマブルゲートアレイ(FPGA)、およびその変形を含むことがある。さらに、並行処理機械100は、コンピュータ、ページャ、セルラー電話、個人用整理手帳、携帯型オーディオプレーヤー、ネットワーク装置(たとえば、ルータ、ファイアウォール、スイッチ、または任意のその組み合わせ)、制御回路、カメラ等のより大きな装置内の構成要素であってよい。
図2は、並行処理機械100によって実装できる有限状態機械(FSM)の例のモデルを示す。並行処理機械100は、FSMの物理的な実装として構成(たとえば、プログラム)できる。FSMは、1つまたは複数のルートノード202を含む、グラフ200(たとえば、有向グラフ、無向グラフ、準グラフ)として表現できる。ルートノード202に加えて、FSMは、いくつかの標準ノード204、ならびに1つまたは複数のエッジ206を通してルートノード202および他の標準ノード204に接続される端末ノード208から構成できる。ノード202、204、208は、FSM内の状態に相当する。エッジ206は、状態間の遷移に相当する。
ノード(202、204、208)のそれぞれは、アクティブ状態または非アクティブ状態のどちらかであることがある。非アクティブ状態にあるとき、ノード(202、204、208)は、入力データに反応(たとえば、応答)しない。アクティブ状態にあるとき、ノード(202、204、208)は、入力データに反応できる。上流ノード(202、204)は、入力データが、上流ノード(202、204)と下流ノード(204、208)との間でエッジ206によって指定される基準に一致するときに、そのノードから下流にあるノード(204、208)を活性化することによって入力ノードに反応できる。たとえば、文字「b」を指定する第1のノード204は、第1のノード204がアクティブで、文字「b」が入力データとして受け取られるときに、エッジ206によって第1のノード204に接続される第2のノード204を活性化する。本明細書に使用されるように、「上流」は、1つまたは複数の他のノードの上流(またはループの場合にはそれ自体の上流)にある第1のノードが、第1のノードが1つまたは複数の他のノードを活性化できる(またはループの場合にはそれ自体を活性化できる)状態を指す、1つまたは複数のノード間の関係性を指す。同様に、「下流」は、1つまたは複数の他のノードの下流(ループの場合はそれ自体の下流)にある第1のノードが、1つまたは複数の他のノードによって活性化できる(またはループの場合はそれ自体によって活性化できる)関係性を指す。したがって、用語「上流」および「下流」は、本明細書中で、1つまたは複数のノード間の関係性を指すために使用されるが、これらの用語は、ノード間のループまたは他の非線形経路の使用を排除しない。
グラフ200では、ルートノード202は初期に活性化され、入力データが、ルートノード202からのエッジ206に一致するときに下流ノード204、208を活性化できる。グラフ200全体でノード204、208は、入力データが受け取られると、このようにして活性化できる。端末ノード208は、入力データによる関心のあるシーケンスの一致に相当する。したがって、端末ノード208の活性化は、入力データとして関心のあるシーケンスが受け取られたことを示す。パターン認識機能を実装する並行処理機械100との関連で、端末ノード208に到達することは、関心のある特定のパターンが、入力データで検出されたことを示すことができる。
例では、それぞれのルートノード202、標準ノード204、および端末ノード208は、並行処理機械100のプログラマブル要素102に相当することがある。各エッジ206は、プログラマブル要素102間の接続に相当することがある。したがって、別の標準ノード204または端末ノード208に遷移する(たとえば、別の標準ノード204または端末ノード208に接続するエッジ206を有する)標準ノード204は、別のプログラマブル要素102に遷移する(たとえば、別のプログラマブル要素102に出力を提供する)プログラマブル要素102に相当する。いくつかの例では、ルートノード202は、対応するプログラム要素102を有していない。
並行処理機械100がFSMとしてプログラムされるとき、プログラマブル要素102のそれぞれも、アクティブ状態または非アクティブ状態のどちらかであることがある。非アクティブであるときの所与のプログラマブル要素102は、その対応するデータ入力ポート110での入力データに反応しない。アクティブプログラマブル要素102は、入力データおよびデータ入力ポート110に反応することができ、入力データがプログラマブル要素102の設定に一致するときに下流のプログラマブル要素102を活性化できる。プログラマブル要素102が、端末ノード208に相当するとき、プログラマブル要素102は、出力ポート114に結合され、外部装置に一致の表示を提供できる。
プログラミングインタフェース111を介して並行処理機械100にロードされる画像は、所望されるFSMがデータ入力ポート110でのデータの反応に基づいてノードの順次的な活性化によって実装されるように、プログラマブル要素102と他の要素112との間の接続だけではなく、プログラマブル要素102および他の要素112も構成できる。例では、プログラマブル要素102は、単一のデータサイクル(たとえば、単一文字、文字のセット、単一クロックサイクル)の間活性のままとなり、次いで上流のプログラマブル要素102によって再活性化されない限り、非アクティブに切り替わる。
端末ノード208は、過去のイベントの圧縮履歴を記憶するために検討できる。たとえば、端末ノード208に達するために必要とされる入力データの1つまたは複数のパターンは、その端末ノード208の活性化によって表すことができる。例では、端末ノード208によって提供される出力はバイナリである。すなわち、出力は、関心のあるパターンが一致しているかどうかを示す。グラフ200中の端末ノード208の標準ノード204に対する率はきわめて小さい場合がある。言い換えると、FSMに高い複雑度がある場合があるが、FSMの出力は、比較すると小さい場合がある。
例では、並行処理機械100の出力は、並行処理機械用の状態ベクトルを含むことがある。状態ベクトルは並行処理機械100のプログラマブル要素102の状態(たとえば、活性化済みまたは未活性)を含む。例では、状態ベクトルは、端末ノード208に相当するプログラマブル要素102のための状態を含む。したがって、出力は、グラフ200のすべての端末ノード208によって提供される表示の集合体を含むことがある。状態ベクトルはワードとして表すことができ、各端末ノード208によって提供されるバイナリ表示は、1ビットのワードを含む。端末ノード208のこの符号化は、並行処理機械100のための検出状態(たとえば、関心のあるシーケンスが検出されたかどうか、および関心のあるどのシーケンスが検出されたのか)の効果的な表示を提供できる。別の例では、状態ベクトルは、プログラマブル要素102が端末ノード208に相当するかどうかに関係なく、プログラマブル要素102のすべてまたは部分集合の状態を含むことがある。
上述されたように、並行処理機械100は、パターン認識機能を実装するようにプログラムできる。たとえば、並行処理機械100によって実装されるFSMは、入力データ中の1つまたは複数のデータシーケンス(たとえば、シグナチャ、パターン)を認識するように構成できる。関心のあるデータシーケンスが並行処理機械100によって認識されるとき、その認識の表示は、出力ポート114で提供できる。例では、パターン認識は、たとえば、ネットワークデータ中のマルウェアまたは他の情報を識別するために記号(たとえば、ASCII文字)の文字列を認識できる。
図3は、階層構造300を使用してデータを分析するように構成された第1の並行処理機械302および第2の並行処理機械304の例を示す。それぞれの並行処理機械302、304は、データ入力ポート302A、304A、プログラミングインタフェース302B、304B、および出力ポート302C、304Cを含む。
第1の並行処理機械302は、入力データ、たとえばデータ入力ポート302Aでの未処理データを受け取るように構成される。第1の並行処理機械302は、上述されたように入力データに応答し、出力ポート302Cで出力を提供する。第1の並行処理機械302からの出力は、第2の並行処理機械304のデータ入力ポート304Aに送信される。次いで、第2の並行処理機械304は、第1の並行処理機械302によって提供される出力に基づいて反応し、出力ポート304Cで対応する出力を提供できる。2つの並行処理機械302、304の直列でのこの階層上の結合は、第1の並行処理機械302から第2の並行処理機械304に圧縮ワードで過去のイベントに関する情報を転送するための手段を提供する。転送される情報は、事実上、第1の並行処理機械302によって記録された複雑なイベントの要約(たとえば、関心のあるシーケンス)である場合がある。
図3に示される並行処理機械302、304の2レベル階層300は、2つの独立したプログラムが、同じデータストリームに基づいて動作できるようにする。2段階階層は、異なる部位としてモデル化される生物学的な脳内での視覚的な認識に類似する場合がある。このモデルの下では、部位は、事実上、異なるパターン認識エンジンであり、それぞれが類似する計算機能(パターン一致)を実行するが、他のプログラム(シグナチャ)を使用する。複数の並行処理機械302、304をともに接続することによって、データストリーム入力について高められた知識が取得され得る。
(第1の並行処理機械302によって実装される)階層の第1のレベルは、未処理データストリームに対して直接的に処理を実行する。すなわち、未処理データストリームは入力インタフェース302Aで受け取られ、第1の並行処理機械302のプログラマブル要素が未処理データストリームに反応できる。階層の(第2の並行処理機械304によって実装される)第2のレベルは、第1のレベルからの出力を処理する。すなわち、第2の並行処理機械304は、入力インタフェース304Bで第1の並行処理機械302から出力を受け取り、第2の並行処理機械304のプログラマブル要素は第1の並行処理機械302の出力に反応できる。したがって、この例では、第2の並行処理機械304が入力として未処理データストリームを受け取るのではなく、むしろ、第1の並行処理機械302によって決定される未処理データストリームが一致する関心のあるパターンの表示を受け取る。第2の並行処理機械304は、第1の並行処理機械302からの出力データストリーム中のパターンを認識するFSMでプログラムできる。
図4は、階層の1つのレベルが複数の並行処理機械で実装される2レベル階層400の別の例を示す。ここでは、階層400の第1のレベルは、3つの並行処理機械402で実装される。3つの第1のレベルの並行処理機械402のそれぞれからの出力が、第1のレベルの並行処理機械402からの出力でパターンを認識する(たとえば、識別する)単一の第2のレベルの並行処理機械404に提供される。他の例では、異なる数の並行処理機械が、異なるレベルで実装できる。各並行処理機械402、404は、データ入力ポート402A、404、プログラミングインタフェース402B、404B、および出力ポート402C、404Cを含む。
図5は、4台の並行処理機械502、504、506、および508で実装され、各レベルによって識別されるパターンの例を示す4レベル階層500を示す。上述されたように、各並行処理機械502、504、506おおび508は、データ入力ポート502A、504A、506A、および508A、プログラミングインタフェース502B、504B、506B、および508B、ならびに出力ポート502C、504C、506C、および508Cを含む。4レベル階層500は、画像中の黒のピクセルまたは白のピクセルに基づいた作成された言語の視角的な識別に相当する。階層が高レベルに進むにつれ、入力ストリームの蓄積された知識は相応して増大する。並行処理機械502、504、506、508は、階層認識機能を達成するためにカスケードされる。階層500のそれぞれの連続レベルは、従前のレベルの圧縮された出力に適用される新しい規則(パターンシグナチャ)を実装できる。このようにして、きわめて詳細なオブジェクトが、基本的なプリミティブな情報の初期検出に基づいて識別できる。
たとえば、レベル1(第1の並行処理機械502)に対する未処理データ入力ストリームは、視角映像のための情報(たとえば、所与のビットが黒なのか/白なのか、ONか/OFFか)を含むことがある。第1の並行処理機械502は、ピクセル情報によって形成されるプリミティブパターンを識別するようにプログラムできる。たとえば、第1の並行処理機械502は、隣接するピクセルが垂直線、水平線、弧等をいつ形成するのかを識別するように構成できる。これらのパターン(たとえば、垂直線、水平線弧等)のそれぞれは、第1の並行処理機械502からのそれぞれの出力ビット(または信号)によって示すことができる。たとえば、第1の並行処理機械502が少なくとも3ビットの垂直線を識別するとき、高信号(たとえば、論理「1」)が、第2の並行処理機械504に対する出力ワードの第1のビットで出力できる。第1の並行処理機械502が少なくとも3ビットの水平線を識別するとき、高信号が、第2の並行処理機械504に対する初期ワードの第2のビットで出力できる。
第2のレベル(第2の並行処理機械504)は、第1の並行処理機械502からの出力信号のパターンを識別するようにプログラムできる。たとえば、第2の並行処理機械502は、第1の並行処理機械502によって識別されるプリミティブパターン(線、弧、他)の組合せによって形成されるパターンを識別するようにプログラムできる。第2の並行処理機械504は、水平線および垂直線がいつ交差し、文字「t」を形成するのかを識別するようにプログラムできる。上述されたように、第2の並行処理機械504によって実装されるFSM内のノードは、第1の並行処理機械502からの出力に反応する。したがって、プリミティブパターンの組合せは、第1の並行処理機械502からの出力ビット中のパターンを識別することによって識別される。
次いで、第2の並行処理機械504からの出力が、第2の並行処理機械506によって識別される文字の組合せからワードを識別できる第3のレベル(第3の並行処理機械506)に入力される。第4のレベル(第4の並行処理機械508)は、次いで、第3の並行処理機械506によって識別されるワードによって形成されるフレーズを識別できる。したがって、高レベルが、下位レベルの出力のパターンを識別するようにプログラムできる。さらに、下位レベルが、高レベルで識別されるパターンを構成する構成要素を識別するようにプログラムできる。
ピクセル情報からの文字、ワードおよびフレーズの視覚的な識別は、例として使用される。ただし、本明細書に説明される階層方法および装置は、他のデータに、および他の用途のために適用できる。たとえば、階層分析は、音声に対応するデータで使用され、第1のレベルで音素の組合せから音節を、第2のレベルで音節の組合せからワードを識別できる。他の例では、階層分析は、それ自体を階層状に構築する機械データ(たとえば、未処理の0および1)に適用できる。
図5は、層間での特定の接続および個々の接続を示しているが、1つのレベルからの出力が階層の他のレベルに前方にまたは後方に送られる階層が、実装できることが理解されるべきである。たとえば、第2の並行処理機械504からの出力は、第4の並行処理機械508に送信できるだろう。一方、第4の並行処理機械508からの出力は、第3の並行処理機械506にフィードバックされる可能性がある。一般的には、階層は、並行処理機械からの検出状態情報が、他の並行処理機械の1台または複数台もしくはすべてに送られるように実装できる。
いくつかの例では、フィードバックは、階層構造内で使用され、1つまたは複数のレベルで使用されるプログラムを更新する。たとえば、第1のレベルからの出力は、第2のレベルに提供され、第2のレベルを再プログラムできる。これは、第1のレベルで識別される(または識別されない)パターンに基づいて第2のレベルによって適用される規則を更新するために使用できる。例では、第1のレベルは、第2のレベルよりも階層では高レベルである。たとえば、下位レベルは、高レベルによって識別されるパターンに基づいてプログラムによって最初に指定されなかった追加のパターンを探すように再プログラムできる。別の例では、下位レベルは、下位レベルによって識別される特定のパターンが、特定のパターンが他のパターンと結合し、重要なイベントを形成するという点で重要であることを通知され得る。さらに別の例では、下位レベルは、識別された特定のパターンが特定の値を有さず、したがって下位レベルがそのパターンを識別するのを停止できると通知されてよい。例では、再プログラミングは経時的に実行でき、したがって所与のレベルのプログラムは、一定期間での小さな調整によって増分的に修正される。
図6は、フィードバックを使用して階層の部分を再プログラムする4レベル階層600の例を示す。4レベル階層600は、それぞれが、データ入力ポート602A、604A、606A、608A、プログラミングインタフェース602B、604B、606B、608B、および出力ポート602C、604C、606C、608Cを有する4つの並行処理機械602、604、606、608で実装される。第1の並行処理機械602は、階層600の第1のレベルを実装し、階層600の第2のレベルを実装する第2の並行処理機械604に出力を提供する。第3の並行処理機械および第4の並行処理機械606、608は、同様に、階層600の第3のレベルおよび第4のレベルを実装する。例では、第4の並行処理機械608からの出力が、第1の並行処理機械602によって受け取られる入力データに関する階層600の分析に基づいた階層600の出力として外部装置に送られる。したがって、第4の並行処理機械608からの出力は、階層600のための集合的な出力に相当する。他の例では、他の並行処理機械608からの出力は、階層600のための集合的な出力に相当することがある。
第2の、第3のおよび第4の並列処理機械604、606、608は、それぞれ下のレベルで平行処理機械602、604、606のプログラミングインタフェース602B、604B、606Bにフィードバックされる。たとえば、第4の並行処理機械608からの出力は、第3の並行処理機械606のプログラミングインタフェース606Bにフィードバックされる。したがって、第3の並行処理機械606は、第4の並行処理機械608からの出力に基づいて再プログラムできる。相応して、第3の並行処理機械608は、実行時間にそのプログラムを修正できる。第1の並行処理機械および第2の並行処理機械602、604は、それぞれ第2のおよび第3の並行処理機械604、606からの出力に基づいて実行時間に同様に再プログラムできる。
例では、並行処理機械604、606、608が分析され、コンパイルされて、並行処理機械602、604、606を再プログラムするためのプログラム(たとえば、画像)を形成する。たとえば、並行処理機械408からの出力は、プログラミングインタフェース606Bに送られる前に処理装置614によって分析され、コンパイルされる。処理装置614は、並行処理機械608からの出力に基づいて並行処理機械606のための更新プログラムを生成できる。処理装置614は、出力を分析し、第3の並行処理装置606のための更新されたプログラムをコンパイルできる。更新されたプログラムは、次いで、プログラミングインタフェース606Bを通して第3の並行処理機械606にロードされ、第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から別の装置への集合的な出力に相当することがある。外部装置は、たとえば、これらの並行処理機械602、608のそれぞれからの出力を監視して、いつ階層600によってパターンが識別されたかを決定できる。
例では、フィードバック情報は、分析されるデータストリームに対応する識別情報を含む場合がある。たとえば、識別情報は、データの識別特性、データのフォーマット、データのプロトコル、および/または任意の他のタイプの識別情報を含むことがある。識別情報は、たとえば、処理装置610による入力データのための分析方法を修正する(たとえば、適応する)ために収集され、分析され、使用されてよい。並行処理機械100は、次いで適応された分析方法でプログラムされてよい。識別情報は、たとえば、入力データの言語を含むことがある。並行処理機械100は、初期に、入力データの言語を決定するためにプログラムすることができ、いったん言語が入力に対応して識別されると、実行時の間に適応され(たとえば、再プログラムされ)てよい。並行処理機械100のための適応された分析方法は、より具体的には、識別された言語に対する分析方法に相当することがある。最後に、並行処理機械100は、適応された分析方法を使用してさらに入力データを分析してよい。フィードバックプロセスは、反復的であってよく、したがって追加の識別情報が入力データで検出され、分析方法のさらなる適応化を可能にする。
並行処理機械100にロードするためのプログラム(たとえば、画像)は、図12に関して以下に説明されるコンパイラによって生成できる。一般に、コンパイルは、計算集約的なプロセスである場合があり、初めてパターンシグナチャの大型データベースをコンパイルする際に最も明白になることがある。実行時動作では、高レベルの並行処理機械100が、下位レベルの並行処理機械のための増分プログラム更新の形で下位レベルにフィードバックを提供できる。したがって、下位レベルの並行処理機械に対するフィードバック情報は、コンパイルするにはより計算集約的ではない元のプログラムに対するはるかに小さい、増分更新である場合がある。
図7は、4つの並行処理機械702、704、706、708で実装される4レベル階層700の別の例を示す。それぞれがデータ入力ポート702A、704A、706A、708A、プログラミングインタフェース702B、704B、706B、708B、および出力ポート702C、704C、706C、708Cを有する4つの並行処理機械702、704、706、708。さらに、いくつかの例では、4レベル階層700は、処理装置710、712、714を含み、並行処理機械702、704、および706のためのプログラムをコンパイルできる。4レベル階層700では、第2レベルの、第3レベルの、および第4レベルの並行処理機械704、706、708が、未処理データストリームからの入力データだけではなく、下位レベルの並行処理機械702、704、706の出力からの入力データも受け取る。したがって、レベル2、レベル3、およびレベル4は、下位レベルからのパターンおよび未処理データの組合せからパターンを識別できる。
図6および図7からわかるように、並行処理機械100は、並行処理機械100からの出力だけではなく、階層に対する未処理データ入力も、それ自体を含む他の任意の並行処理機械100に送ることができる場合にほぼ任意の方法でカスケードできる。さらに、所与の並行処理機械100からの出力は、データ入力ポート110に対する入力データとして、および/または並行処理機械100のためのプログラムを更新するためのフィードバックとして別の並行処理機械100に送信できる。
並行処理機械100が、入力データの1つのデータサイクル(たとえば、ビット、ワード)を処理するための時間のため、並行処理機械100を直列でカスケードすることは、すべての並行処理機械100を通して入力データストリームを完全に処理して、階層のための集合的な出力を生成するために要する時間を増加することがある。階層の下位レベルは、下位(最も粒状の)レベルの入力を受け取ることができるので、下位レベルは、高レベルの出力よりもよりアクティブであることが予想されるべきである。つまり、階層の中の各連続レベルは、高レベルのオブジェクトをアセンブルできる。例では、並行処理機械100は、並行処理機械100にどれほど早く入力データを送ることができるのかを制限する最大入力レートを有する。この入力速度は、単一のデータサイクルとして考えることができる。それぞれの連続データサイクルで、並行処理機械100は、多くの端末ノードを活性化する可能性を有する。これによって、(特に階層の下位レベルにある)並行処理機械100は、かなりの量の出力データを生成するだろう。たとえば、入力が最下位レベルの並行処理機械100にバイトのストリームとして提供される場合、並行処理機械100が、任意の所与のデータサイクルで、結果情報の複数のバイトを生成することが可能である場合がある。1バイトの情報が複数のバイトの情報を生成できる場合、次いで並行処理機械100の階層全体は、上方が階層の上方に渡されるように同期される必要がある。いくつかの例では、フィードバックは同期される必要がない。ただし、フィードバックが下位レベルで受け取られるのが早いほど、下位レベルが適応するのが早くなり、分析はより効果的になる。
例として、(単一の並行処理機械100で実装される)階層のレベルごとの最大サイズ出力は、1024バイトに等しくなることがあり、階層の深さは4レベルに等しくなることがある。並行処理機械100の入力データストリームのデータ転送速度は、128MB/秒に等しくなることがある。以上の条件の場合、階層の各レベルは、7.63マイクロ秒で横断できるだろう。4レベル階層を用いる場合、並行処理機械100のスタック全体の総整定時間は、7.63マイクロ秒の4倍、つまり30.5マイクロ秒となるだろう。30.5マイクロ秒の整定時間では、入力データ周波数が32KB/秒に制限される必要があるようである。
とりわけ、これは、並行処理機械100の構成にきわめて左右される。並行処理機械100は、入力データ転送速度対状態機械のサイズをトレードオフするように構成可能である。さらに、並行処理機械に対する入力ワードサイズは、並行処理機械100上にロードされる個々の画像を生成したコンパイラに対して対応する修正が行われる場合、調整できる。
例では、上述された階層構造は、フォンノイマンアーキテクチャを有する機械でソフトウェアにより実装できるだろう。したがって、ソフトウェア命令が、プロセッサに、未処理データに対する第1のレベルの分析FSMを実装させるだろう。第1のレベルのFSMからの出力は、次いで、第2のレベルの分析等々を使用してプロセッサによって処理できるだろう。さらに、上述されたフィードバックループは、第1のレベルの分析が、たとえば第2のレベルの分析の出力に基づいて修正されるように実装できるだろう。
図8から図11は、本明細書で「FSMエンジン800」と呼ばれている並行処理機械の例を示す。例では、FSMエンジン800は、有限状態機械のハードウェア実装を含む。したがって、FSMエンジン800は、FSM内の複数の状態に相当する、複数の選択的に結合可能なハードウェア要素(たとえば、プログラマブル要素)を実装する。FSM内の状態と同様に、ハードウェア要素は、入力ストリームを分析し、その入力ストリームに基づいて下流のハードウェア要素を活性化できる。
FSMエンジン800は、汎用要素および特殊目的要素を含む複数のプログラマブル要素を含む。汎用要素は、多くの異なる機能を実装するようにプログラムできる。これらの汎用要素は、行806(図9および図10に示される)に階層状に編成されるSME804、805(図11に図示)、およびブロック802(図8および図9に図示)を含む。階層状に編成されたSME804、805の間で信号の経路を定めるために、ブロック間スイッチ803(図8および図9に図示)、ブロック内スイッチ808(図9および図10に図示)、ならびに行内スイッチ812(図10に図示)を含む、プログラマブルスイッチの階層が使用される。SME804、805は、FSMエンジン800によって実装されるFSMの状態に相当することがある。SME804、805は、以下に説明されるプログラマブルスイッチを使用することによって結合できる。したがって、FSMは、SME804、805を、状態の機能に対応するようにプログラムすることによって、およびFSM内の状態間の遷移に相当するようにSME804、805をともに選択的に結合することによってFSMエンジン800上で実装できる。
図8は、例のFSMエンジン800の全体図を示す。FSMエンジン800は、プログラマブルブロック間スイッチ803とともに選択的に結合できる複数のブロック802を含む。さらに、ブロック802は、信号(たとえば、データ)を受信し、そのデータをブロック802に提供するための入力ブロック809(たとえば、データ入力ポート)に選択的に結合できる。また、ブロック802は、ブロック802からの信号を外部装置(たとえば、別のFSMエンジン800)に提供するための出力ブロック813(たとえば、出力ポート)に選択的に結合できる。FSMエンジン800は、FSMエンジン800の上にプログラム(たとえば、画像)をロードするためのプログラミングインタフェース811も含むことがある。画像は、SME804、805の状態をプログラム(たとえば、設定)できる。つまり、画像は、入力ブロック809で所与の入力に特定のやり方で反応するようにSME804、805を構成できる。たとえば、SME804は、文字「a」が入力ブロック809で受け取られるときに高信号を出力するように設定できる。
例では、入力ブロック809、出力ブロック813、および/またはプログラミングインタフェース811は、レジスタへの書込みがそれぞれの要素へデータを提供する、またはそれぞれの要素からデータを提供するようにレジスタとして実装できる。したがって、プログラミングインタフェース811に相当するレジスタに記憶される画像からのビットは、SME804、805にロードできる。図8は、ブロック802と、入力ブロック809と、出力ブロック813と、ブロック間スイッチ803との間の特定数の導線(たとえば、ワイヤ、トレース)を示しているが、他の例では、より少ない導線またはより多い導線を使用できることが理解されるべきである。
図9は、ブロック802の例を示す。ブロック802は、プログラマブルブロック内スイッチ808と選択的に結合できる複数の行806を含むことがある。さらに、行806は、ブロック間スイッチ803により、別のブロック802内の別の行806に選択的に結合できる。例では、バッファ801が、ブロック間スイッチ803への/ブロック間スイッチ803からの信号のタイミングを制御するために含まれる。本明細書で行806は、2のグループ(GOT)810と呼ばれる要素の組に編成される複数のSME804、805を含む。例では、ブロック802は、十六(16)の行806を含む。
図10は、行806の例を示す。GOT810は、プログラマブル行内スイッチ812によって他のGOT810、および行806内の任意の他の要素824に選択的に結合できる。GOT810は、ブロック内スイッチ808で他の行806内の他のGOT810に、またはブロック間スイッチ803で他のブロック802内の他のGOT810に結合することもできる。例では、GOT810は、第1の入力および第2の入力814および816、ならびに出力818を有する。第1の入力814は、GOT810の第1のSME804に結合され、第2の入力814は、GTO810の第2のSME804に結合される。
例では、行806は、第1のおよび第2の複数の行相互接続導線820、822を含む。例では、GOT810の入力814、816は、1本または複数の行相互接続導線820、822に結合することができ、出力818は、1つの行相互接続導線820、822に結合できる。例では、第1の複数の行相互接続導線820は、行806内の各GOT810の各SME804に結合できる。第2の複数の行相互接続導線822は、行806内の各GOT810の1つのSME804に結合できるが、GOT810の他のSME804には結合できない。例では、第2の複数の行相互接続導線822の第1の半分が、行806内部のSME804の第1の半分(各GOT810から1つのSME804)に結合でき、第2の複数の行相互接続導線822の第2の半分は行806内のSME804の第2の半分(各GOT810からの他のSME804)に結合できる。第2の複数の行相互接続導線822とSME804、805との間の限られた接続性が、本明細書では「パリティ」と呼ばれている。例では、行806は、カウンタ、プログラマブルブール論理要素、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、プログラマブルプロセッサ(たとえば、マイクロプロセッサ)、および他の要素等の特殊目的要素824を含むこともある。
例では、特殊目的要素824は、カウンタ(本明細書では、カウンタ824とも呼ばれている)を含む。例では、カウンタ824は、12ビットプログラマブルダウンカウンタを含む。12ビットプログラマブルカウンタ824は、計数入力、リセット入力、およびゼロカウント出力を有する。計数入力は、アサート時、カウンタ824の値を1、減分する。リセット入力は、アサート時、カウンタ824に、関連するレジスタからの初期値をロードさせる。12ビットカウンタ824の場合、最高12ビットの数が初期値としてロードできる。カウンタ824の値がゼロ(0)に減分されるとき、ゼロカウント出力がアサートされる。カウンタ824は、少なくとも2つのモード、パルスおよび保持を有する。カウンタ824がパルスモードに設定されるとき、ゼロカウント出力は、カウンタ824がゼロに減分するときのクロックサイクル中にアサートされ、次のクロックサイクルでは、ゼロカウント出力はもはやアサートされない。カウンタ824が保持モードに設定されるとき、ゼロカウント出力は、カウンタ824がゼロに減分するときのクロックサイクル中にアサートされ、カウンタ824が、アサートされているリセット入力によってリセットされるまでアサートされた状態のままとなる。例では、特殊目的要素824はブール論理を含む。いくつかの例では、このブール論理は、FSMエンジン800の端末状態SMEから情報を抽出するために使用できる。抽出された情報は、他のFSMエンジン800に状態情報を転送するため、および/またはFSMエンジン800を再プログラムするために使用されるプログラミング情報を転送するため、または別のFSMエンジン800を再プログラムするために使用できる。
図11は、GOT810の例を示す。GOT810は、入力814、816を有し、ORゲート830および3対1マルチプレクサ842に結合されるそれらの出力826、828を有する、第1のSME804および第2のSME805を含む。3対1マルチプレクサ842は、GOT810の出力818を、第1のSME804、第2のSME805、またはORゲート830に結合するように設定できる。ORゲート830を使用して、両方の出力826、828を結合し、GOT810の共通の出力818を形成できる。例では、第1のSMEおよび第2のSME804、805は、上述されたパリティを示し、第1のSME804の入力814は、行相互接続導線822のいくつかに結合することができ、第2のSME805の入力816は、他の行相互接続導線822に結合できる。例では、GOT810内の2つのSME804、805は、スイッチ840のどちらかまたは両方を設定することによってそれら自体にカスケードおよびまたはループバックすることができる。SME804、805は、SME804、805の出力826、828を、他のSME804、805の入力814、816に結合することによってカスケードできる。SME804、805は、出力826、828をそれら自体の入力814、816に結合することによってそれら自体にループバックできる。したがって、第1のSME804の出力826は、第1のSME804の入力814および第2のSME805の入力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に低信号を出力する。検出ライン834上でのメモリセル832からの出力は、検出回路838によって感知される。例では、入力ライン814、816上の信号は、それぞれの検出回路838をアクティブ状態または非アクティブ状態のどちらかに設定する。非アクティブ状態に設定されると、検出回路838はそれぞれの検出ライン834上の信号に関わりなく、それぞれの出力826、828上で低信号を出力する。アクティブ状態に設定されると、検出回路838は、それぞれのSME804、805のメモリセル834の内の1つから高信号が検出されるときに、それぞれの出力ライン826、828上で高信号を出力する。アクティブ状態にあるとき、検出回路838は、それぞれのSME804、805のメモリセル834の内のすべてからの信号が低であるときに、それぞれの出力ライン826、828上で低信号を出力する。
例では、SME804、805は、256個のメモリセル832を含み、各メモリセル832は異なるデータストリームライン836に結合される。したがって、SME804、805は、データストリームライン836の内の選択された1つまたは複数がその上に高信号を有するときに高信号を出力するようにプログラムできる。たとえば、SME804は、第1のメモリセル832(たとえば、ビット0)を高に設定させ、他のすべてのメモリセル832(たとえば、ビット1から255)を低に設定させることができる。それぞれの検出回路838がアクティブ状態にあるときに、SME804は、ビット0に対応するデータストリームライン836がその上に高信号を有すると出力826に対する高信号を出力する。他の例では、SME804は、複数のデータストリームライン836の内の1つが、適切なメモリセル832を高値に設定することによってその上に高信号を有するときに高信号を出力するように設定できる。
例では、メモリセル832は、関連するレジスタからビットを読み取ることによって高値または低値に設定できる。したがって、SME804は、コンパイラによって作成された画像をレジスタの中に記憶し、関連するメモリセル832の中にレジスタ内のビットをロードすることによってプログラムできる。例では、コンパイラによって作成される画像は、高ビットおよび低ビット(たとえば、1および0)のバイナリ画像を含む。画像は、SME804、805をカスケードすることによってFSMとして動作するようにFSMエンジン800をプログラムできる。たとえば、第1のSME804は、検出回路838をアクティブ状態に設定することによってアクティブ状態に設定できる。第1のSME804は、ビット0に対応するデータストリームライン836がその上に高信号を有するときに高信号を出力するように設定できる。第2のSME805は、当初、非アクティブ状態に設定できるが、アクティブ時、ビット1に対応するデータストリームライン836がその上に高信号を有すると高信号を出力するように設定できる。第1のSME804および第2のSME805は、第2のSME805の入力816に結合するように、第1のSME804の出力826を設定することによってカスケードできる。したがって、高信号がビット0に対応するデータストリームライン836で検知されるとき、第1のSME804は出力826で高信号を出力し、第2のSME805の検出回路838をアクティブ状態に設定する。高信号がビット1に対応するデータストリームライン836で検知されるとき、第2のSME805は別のSME805を活性化するために出力828で、またはFSMエンジン800からの出力のために高信号を出力する。
図10は、コンパイラが、ソースコードを、並行処理機械をプログラムするように構成された画像に変換するための方法1000の例を示す。方法1000は、構文木にソースコードをパースすること(ブロック1002)と、構文木をオートマトンに変換すること(ブロック1004)と、オートマトンを最適化すること(ブロック1006)と、オートマトンをネットリストに変換すること(ブロック1008)と、ハードウェア上にネットリストを格納すること(ブロック1010)と、ネットリストの経路を定めること(ブロック1012)と、結果として生じる画像を公開すること(ブロック1014)とを含む。
例では、コンパイラは、ソフトウェア開発者が、FSMエンジン800上でFSMを実装するために画像を作成できるようにするアプリケーションプログラミングインタフェース(API)を含む。コンパイラは、ソースコードの正規表現の入力セットを、FSMエンジン800をプログラムするように構成される画像に変換する方法を提供する。コンパイラは、フォンノイマンアーキテクチャを有するコンピュータ用の命令によって実装できる。これらの命令は、コンピュータ上のプロセッサにコンパイラの機能を実行させることができる。たとえば、命令は、プロセッサによって実行されるときに、プロセッサがアクセス可能であるソースコードに対して、ブロック1002、1004、1006、1008、1010、1012、および1014で説明されるアクションをプロセッサに実行させることができる。フォンノイマンアーキテクチャを有する例のコンピュータは、図13に示され、後述される。
例では、ソースコードは、記号のグループ内で記号のパターンを識別するためのサーチ文字列を記述する。サーチ文字列を説明するために、ソースコードは、複数の正規表現(regex)を含むことがある。regexは、記号検索パターンを記述するための文字列である場合がある。regexは、プログラミング言語、テキストエディタ、ネットワークセキュリティ、および他等の多様なコンピュータの領域で幅広く使用されている。例では、コンパイラによってサポートされている正規表現は、非構造化データの検索のための検索基準を含む。非構造化データは、自由形式を有し、データ内のワードに何のインデクシングも適用されないデータを含むことがある。ワードは、データの内部にバイト、プリンタブルおよび非プリンタブルの任意の組合せを含むことがある。例では、コンパイラは、Perl(Perl互換性正規表現(PCRE))言語、PHP言語、Java(登録商標)言語、および.NET言語を含むregexを実装するための複数の異なるソースコード言語をサポートできる。
ブロック1002で、コンパイラはソースコードを分析し、相対的に接続された演算子の配列を形成することができ、異なるタイプの演算子は、ソースコードによって実装される異なる関数(たとえば、ソースコード内でregexによって実装される異なる関数)に相当する。ソースコードを分析すると、ソースコードの一般的表現を生じさせることがある。例では、一般的表現は、構文木として知られているツリーグラフの形でソースコード内のregexの符号化された表現を含む。本明細書に説明されている例は、他の例では構文木(「抽象構文木」としても知られている)としての配置を指すが、具象構文木または他の配置も使用できる。
上述されたように、コンパイラはソースコードの複数の言語をサポートできるので、分析は、言語に関わりなく、たとえば構文木等の非言語特性表現にソースコードを変換する。したがって、コンパイラによる追加の処理(ブロック1004、ブロック1006、ブロック1008、ブロック1010)は、ソースコードの言語に関わりなく、共通の入力構造から作業できる。
上記に留意されたように、構文木は、相対的に接続されている複数の演算子を含む。構文木は、複数の異なるタイプの演算子を含むことがある。つまり、異なる演算子は、ソースコード内のregexによって実装される異なる関数に相当することがある。
ブロック1004で、構文木はオートマトンに変換される。オートマトンは、FSMのソフトウェアモデルを含み、相応して決定論的または非決定論的と分類できる。決定論的オートマトンは、所与のときに実行の単一の経路を有する。一方、非決定論的オートマトンは、実行の複数の並行経路を有する。オートマトンは、複数の状態を含む。構文木をオートマトンに変換するために、演算子および構文木内の演算子間の関係性が、状態間の遷移を含む状態に変換される。例では、オートマトンは、FSMエンジン800のハードウェアに部分的に基づいて変換できる。
例では、オートマトンの入力記号は、アルファベット、数字0から9、および他のプリンタブル文字を含む。例では、入力記号は、0から255を含めたバイト値によって表される。例では、オートマトンは、グラフのノードが状態のセットに対応する有向グラフとして表すことができる。例では、入力記号α上の状態pから状態qへの遷移、つまりδ(p, α)は、ノードpからノードqへの有向接続によって示される。例では、オートマトンの逆転は、なんらかの記号α上の各遷移p→qが、同じ記号上で逆転されるq→pである新規オートマトンを生じさせる。逆転では、開始状態は最終状態になり、最終状態が開始状態になる。例では、オートマトンによって受け入れられる(たとえば、一致される)言語は、オートマトンに順次に入力されるときに最終状態に到達するすべての考えられる文字列のセットである。オートマトンによって受け入れられる言語の各文字列は、開始状態から1つまたは複数の最終状態への経路をたどる。
ブロック1006で、オートマトンが構築されたのち、オートマトンは、とりわけその複雑度およびサイズを削減するために最適化される。オートマトンは、冗長な状態を組み合わせることによって最適化できる。
ブロック1008で、最適化されたオートマトンが、ネットリストに変換される。オートマトンをネットリストに変換すると、オートマトンの各状態はFSMエンジン800上のハードウェア要素(たとえば、SME804、805、他の要素824)にマッピングされ、ハードウェア要素間の接続が決定される。
ブロック1010で、ネットリストは、ネットリストの各ノードに対応するターゲット装置(たとえば、SME804、805、特殊目的要素824)の特定のハードウェア要素を選択するために格納される。例では、格納すると、FSMエンジン800のための一般的な入力および出力の制約に基づいて、それぞれの特定のハードウェア要素が選択される。
ブロック1012で、格納されたネットリストは、選択されたハードウェア要素をともに結合して、ネットリストによって記述される接続を達成するために、プログラマブルスイッチ(たとえば、ブロック間スイッチ803、ブロック内スイッチ808、および行内スイッチ812)のための設定値を決定するために経路が選択される。例では、プログラマブルスイッチのための設定が、選択されたハードウェア要素、およびプログラマブルスイッチのための設定値を接続するために使用されるPSMエンジン800の特定の導線を決定することによって決定される。経路選択は、ブロック1010での格納、ハードウェア要素間の接続のより多くの制限を考慮に入れることがある。したがって、経路選択は、FSMエンジン800に対する導線の実際の制限を考えると、適切な接続を行うために大局的な格納で決定されるハードウェア要素のいくつかの場所を調整してよい。
いったんネットリストが格納され、経路選択されると、格納され、経路選択されたネットリストは、FSMエンジン800のプログラミングのための複数のビットに変換できる。この複数のビットは、本明細書で画像と呼ばれている。
ブロック1014で、画像はコンパイラによって公表される。画像は、特定のハードウェア要素および/またはFSMエンジン800のプログラマブルスイッチをプログラムするための複数のビットを含む。画像が複数のビット(たとえば、0および1)を含む実施形態では、画像はバイナリ画像と呼ぶことができる。ビットは、FSMエンジン800にロードされ、プログラムされたFSMエンジン800が、ソースコードによって記述される機能性を有するFSMを実装するように、SME804、805、特殊目的要素824、およびプログラマブルスイッチの状態をプログラムできる。格納(ブロック1010)および経路選択(1012)は、FSMエンジン800内での特定の場所にある特定のハードウェア要素を、オートマトンの特定の状態にマッピングできる。したがって、画像内のビットは、特定のハードウェア要素および/またはプログラマブルスイッチをプログラムし、記述される関数(複数の場合がある)を実装できる。例では、画像は、コンピュータ可読媒体に機械コードを保存することによって公表できる。別の例では、画像は、画像を表示装置上で表示することによって公表できる。さらに別の例では、画像は、FSMエンジン800上に画像をロードするためのプログラミング装置等の別の装置に画像を送ることによって公表できる。さらに別の例では、画像は、並行処理機械(たとえば、FSMエンジン800)上に画像をロードすることによって公表できる。
例では、画像は、画像からのビット値をSME804、805および他のハードウェア要素824に直接的にロードする、もしくは1つまたは複数のレジスタの中に画像をロードし、次いでSME804、805および他のハードウェア要素824にレジスタからのビット値を書き込むかのどちらかによってFSMエンジン800上にロードできる。例では、プログラマブルスイッチ(たとえば、ブロック間スイッチ803、ブロック内スイッチ808、および行内スイッチ812)の状態。例では、FSMエンジン800のハードウェア要素(たとえば、SME804、805、他の要素824、プログラマブルスイッチ803、808、812)は、プログラミング装置および/またはコンピュータが、1つまたは複数のメモリアドレスに画像を書き込むことによってFSMエンジン800上に画像をロードできるように、メモリマッピングされる。
本明細書に説明される方法の例は、少なくとも部分的に機械でまたはコンピュータで実装できる。いくつかの例は、上記の例に説明される方法を実行するように電子機器を構成するために動作可能な命令で符号化されたコンピュータ可読媒体または機械可読媒体を含むことがある。かかる方法の実装は、マイクロコード、アセンブリ言語コード、高水準言語コード等のコードを含むことがある。かかるコードは、多様な方法を実行するためのコンピュータ可読命令を含むことがある。コードは、コンピュータプログラム製品の部分を形成してよい。さらに、コードは、実行中、または他のときに1つまたは複数の揮発性の、または不揮発性のコンピュータ可読媒体で有形で記憶されてよい。これらのコンピュータ可読媒体は、ハードディスク、リムーバブル磁気ディスク、リムーバブル光ディスク(たとえば、コンパクトディスクおよびデジタルビデオディスク)、磁気カセット、メモリカードまたはメモリスティック、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)等を含んでよいが、これらに限定されない。
図13は、一般に、フォンノイマンアーキテクチャを有するコンピュータ1500の例を示す。本開示の内容を読み、理解すると、当業者は、ソフトウェアプログラムがどのようにしてコンピュータベースのシステムでコンピュータ可読媒体から起動され、ソフトウェアプログラムに定められる関数機能を実行するのかを理解するだろう。当業者は、本明細書に開示される方法を実装し、実行するように設計される1つまたは複数のソフトウェアプログラムを作成するために利用できる多様なプログラミング言語もさらに理解するだろう。プログラムは、Java(登録商標)言語、C++言語、もしくは1つまたは複数の言語等のオブジェクト指向言語を使用するオブジェクト指向フォーマットで構造化できる。代わりに、プログラムは、アセンブリ、C等の手続き言語を使用して手続き指向フォーマットで構造化できる。ソフトウェア構成要素は、リモートプロシージャコールまたは他を含む、アプリケーションプログラムインタフェース、またはプロセス間通信技法等の、当業者にとって周知の多くの機構の内のどれかを使用して通信できる。多様な実施形態の教示は、任意の特定のプログラミング言語または環境に制限されていない。
したがって、他の実施形態は実現できる。たとえば、コンピュータ、メモリシステム、磁気ディスクまたは光ディスク、なんらかの他の記憶装置、もしくは任意のタイプの電子機器またはシステム等の製造品は、1台または複数のプロセッサ1502によって実行されるときに上記方法に関して説明されるアクションのいずれかを実行することになる、その上に命令1524(たとえば、コンピュータプログラム命令)が記憶されるメモリ(たとえば、電気的な導体、光学的な導体、または電磁的な導体を含む任意のメモリだけではなく、リムーバブル記憶媒体等の)等のコンピュータ可読媒体1522に結合される1台または複数のプロセッサ1502を含むことがある。
コンピュータ1500は、多くの構成要素に直接的に結合されるプロセッサ1502を有する、および/またはバス1508を使用するコンピュータシステムの形をとることができる。かかる構成要素は、メインメモリ1504、スタティックメモリまたは不揮発性メモリ1506、およびマスストレージ1516を含むことがある。プロセッサ1502に結合される他の構成要素は、ビデオディスプレイ等の出力装置1510、キーボード等の入力装置1512、およびマウス等のカーソル制御装置1514を含むことがある。プロセッサ1502および他の構成部品をネットワーク1526に結合するためのネットワークインタフェース装置1520は、バス1508に結合することもできる。命令1524は、多くの周知の転送プロトコル(たとえば、HTTP)の内の任意の1つを活用するネットワークインタフェース装置1520を介して、ネットワーク1526上でさらに送信または受信できる。バス1508に結合されるこれらの要素のいずれかは、実現される特定の実施形態に応じて、存在しない、単独で存在する、または複数の数で存在することがある。
例では、プロセッサ1502、メモリ1504、1506、または記憶装置1516の内の1つまたは複数が、実行時にコンピュータ1500に本明細書に説明される方法の内の任意の1つまたは複数を実行させることができる命令1524を含むことがある。代替実施形態では、コンピュータ1500は、スタンドアロン装置として動作する、または他の装置に接続する(たとえば、ネットワーク化する)ことができる。ネットワーク化された環境では、コンピュータ1500は、サーバ−クライアントネットワーク環境でのサーバ装置またはクライアント装置の資格で、もしくはピアツーピア(または分散型)ネットワーク環境でピアデバイスとして動作できる。コンピュータ1500は、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、パーソナルデジタルアシスタント(PDA)、セルラー電話、ウェブ機器、ネットワークルータ、ネットワークスイッチまたはネットワークブリッジ、もしくはその装置によって講じられるアクションを指定する命令のセット(順次またはそれ以外)を実行できる任意の装置を含むことがある。さらに、単一のコンピュータ1500だけが示されているが、用語「コンピュータ」は、本明細書に説明される方法論の任意の1つまたは複数を実行するために命令のセット(または複数のセット)を個別にまたは共同で実行する装置の任意の集合体を含むとも解釈されるものとする。
コンピュータ1500は、1つまたは複数の通信プロトコル(たとえば、ユニバーサルシリアルバス(USB)、IEEE1394等)を使用して周辺装置と通信するための出力コントローラ1528を含むこともある。出力コントローラ1528は、たとえば、コンピュータ1500に通信で結合されるプログラミング装置1530に画像を提供できる。プログラミング装置1530は、並行処理機械(たとえば、並行処理機械100、FSMエンジン800)をプログラムするように構成できる。他の例では、プログラミング装置1530は、コンピュータ1500と統合され、バス1508に結合できるか、ネットワークインタフェース装置1520または別の装置を介してコンピュータ1500と通信することができる。
コンピュータ可読媒体1524は、単一の媒体として示されているが、「コンピュータ可読媒体」は、命令1524の1つまたは複数のセットを記憶する、単一の媒体または複数の媒体(たとえば、集中データベースまたは分散型データベース、もしくは関連付けられたキャッシュおよびサーバ、ならびにもしくはプロセッサ1502レジスタ、メモリ1504、1506、および記憶装置1516等のいろいろな記憶媒体等)を含むと解釈されるべきである。また、用語「コンピュータ可読媒体」は、コンピュータによる実行のための命令のセットを記憶する、符号化する、または搬送することができる、および本発明の方法論の任意の1つまたは複数をコンピュータによって実行させる、またはかかる命令のセットによって活用される、またはかかる命令のセットと関連付けられるデータ構造を記憶する、符号化する、または搬送することができる任意の媒体を含むとも解釈されるものとする。用語「コンピュータ可読媒体」は、したがって、ソリッドステートメモリ、光媒体、および磁気媒体等の有形的表現媒体を含むが、これらに限定されないと解釈されるものとする。
要約書は、読者が技術的な開示の性質および要旨を確かめることを可能にする要約書を要求する、連邦法施行規則第37巻、第1.72(b)項に準拠するために提供される。要約書は、それが請求項の範囲または意味を制限する、または解釈するために使用されないという理解で提出される。以下の特許請求の範囲は、発明を実施するための形態にこれにより組み込まれ、各請求項は、それ自体、別個の実施形態として効力がある。

Claims (56)

  1. 第1の並行処理機械を使用して第1のデータを分析することと、
    前記第1の並行処理機械から第2のデータを出力することであって、前記第2のデータが、前記第1のデータを分析した結果の表示を提供する、出力することと、
    第2の並行処理機械を使用して前記第2のデータを分析することと、
    前記第2のデータを分析した結果を、前記第2の並行処理機械から出力することと、
    を含むデータを分析するための方法。
  2. 第1のデータを分析することが、前記第1のデータが第1のパターンと一致するかどうかを決定することを含む、請求項1に記載の方法。
  3. 前記第2のデータが、前記第1のデータが前記第1のパターンと一致するかどうかの表示を提供する、請求項2に記載の方法。
  4. 前記第2のデータを分析することが、前記第2のデータが第2のパターンと一致するかどうかを決定することを含む、請求項3に記載の方法。
  5. 前記第2のデータを分析する結果が、前記第2のデータが前記第2のパターンと一致したかどうかの表示を含む、請求項4に記載の方法。
  6. 前記第2のデータが、前記第1のパターンとの一致を示す単一のビットを含む、請求項1に記載の方法。
  7. 前記第2のデータが、複数のパターンに対する一致および非一致を示す複数のビットを備えるワードを備え、前記複数のパターンが前記第1のパターンを含む、請求項1に記載の方法。
  8. 前記第2のデータが、前記第1の並行処理機械のプログラマブル要素の状態に対応する状態ベクトルを含む、請求項1に記載の方法。
  9. 第1のデータを分析することが、前記第1のデータが関心のあるシーケンスを含むかどうかを決定することを含む、請求項1に記載の方法。
  10. 前記第1の並行処理機械から第2のデータを出力することが、前記第1のデータに対する、前記第1の並行処理機械のプログラマブル要素の反応に基づいて第2のデータを出力することを含む、請求項1に記載の方法。
  11. 第1のデータを分析することが、データシーケンスが、前記第1のデータ内で認識されるかどうかを決定することを含む、請求項1に記載の方法。
  12. 前記第1のデータが未処理データを備える、請求項1に記載の方法。
  13. 前記第2のデータを分析することが、前記第2の並行処理機械を使用して前記第1のデータを分析することも含む、請求項1に記載の方法。
  14. 前記第2のデータが、前記第1の並行処理機械の検出状態の表示を提供する、請求項1に記載の方法。
  15. 前記第2のデータが、前記第1の並行処理機械の検出状態の表示を提供する、請求項1に記載の方法。
  16. 前記第2の並行処理機械に、前記第2のデータを分析する前記結果をフィードバックすることをさらに含み、前記第2の並行処理機械を使用して前記第2のデータを分析することが、前記第2のデータを分析する前記結果を分析することをさらに含む、請求項1に記載の方法。
  17. 前記第2のパターンが、前記第1のデータで認識されるパターンの内のパターンを備える、請求項5に記載の方法。
  18. 前記第2のデータで認識されるパターンに基づいて、前記第1の並行処理機械を構成すること、
    をさらに含む、請求項1に記載の方法。
  19. 前記第1の並行処理機械を構成することが、
    前記第2のデータで認識される前記パターンを分析することと、前記第2のデータで認識される前記パターンに基づいて前記第1の並行処理機械のためのプログラムをコンパイルすることとを含む、請求項3に記載の方法。
  20. 前記プログラムが、更新されたプログラムを備える、請求項19に記載の方法。
  21. 前記第2のデータが第2のパターンと一致するかどうかを決定することが、
    前記第2のデータが、第2の複数のパターンの内の1つまたは複数に一致するかどうかを決定することを含み、結果を出力することが、
    第3のデータを出力することであって、前記第3のデータが、前記第2の複数のパターンの内の1つまたは複数が前記第2のデータで認識されたかどうかの表示を提供する、出力することを含み、さらに
    前記第3のデータが、第3の並行処理機械を使用して、第3の複数のパターンの1つまたは複数と一致するかどうかを決定することと、
    前記第3の複数のパターンの内の1つまたは複数が、前記第3のデータで認識されたかどうかの表示を、前記第3の並行処理機械から出力することを含む、
    請求項4に記載の方法。
  22. 前記第3の並行処理機械からの出力に基づいて、前記第1の並行処理機械および前記第2の並行処理機械の内の少なくとも1つを構成すること、
    をさらに含む、請求項21に記載の方法。
  23. 第1のデータ入力ポートおよび第1の出力ポートを有する第1の並行処理機械であって、
    前記並行処理機械が、
    前記第1のデータ入力ポートで第1のデータを受け取り、
    第1のパターンが、前記第1のデータで認識されるかどうかに基づいて前記第1の出力ポートで第2のデータを出力するように構成される第1の並行処理機械と、
    第2のデータ入力ポートおよび第2の出力ポートを有する第2の並行処理機械であって、前記第2のデータ入力ポートが前記第1の並行処理機械の前記第1の出力ポートに結合され、前記第2の並行処理機械が、
    前記第2のデータ入力ポートで前記第2のデータを受け取り、
    第2のパターンが前記第2の出力ポートにある前記第2のデータで認識されるかどうかの表示を出力するように構成される第2の並行処理機械と、
    を備えるデータを処理するための装置。
  24. 第3のデータ入力ポート、および第3の出力ポートを有する第3の並行処理機械であって、前記第3の出力ポートが、前記第2の並行処理機械の前記第2のデータ入力ポートに結合される、第3の並行処理機械をさらに備える、請求項23に記載の装置。
  25. 前記第2の並行処理機械が、さらに、
    前記第2のデータ入力ポートで前記第1のデータストリームを受け取るように構成され、前記第2のデータおよび前記第1のデータの組合せで前記第2のパターンを認識するようにさらに構成される、請求項23に記載の装置。
  26. 前記第1の並行処理機械が、前記第2のデータに基づいてプログラムを受け取るように構成されるプログラミングインタフェースを含み、前記プログラムが、前記第1の並行処理機械を再プログラムするように構成される、請求項23に記載の装置。
  27. 前記プログラムが、更新されたプログラムを含み、前記更新されたプログラムが、前記第1の並行処理機械にすでにロードされたプログラムを更新するように構成される、請求項26に記載の装置。
  28. 前記プログラムが、前記第1の並行処理機械のためのオリジナルプログラムを備える、請求項26に記載の装置。
  29. 前記第2の並行処理機械の前記出力ポートに結合され、前記第2の並行処理機械の前記出力ポートを分析し、前記第2の並行処理機械からの前記第2のデータストリーム出力の関数として、前記第1の並行処理機械のための更新プログラムをコンパイルするように構成される処理装置をさらに備え、
    前記第1の並行処理機械が、前記処理装置から更新されたプログラムを受け取るように構成される、
    請求項26に記載の装置。
  30. 第3のデータ入力ポートおよび第3の出力ポートを有する第3の並行処理機械であって、
    前記第3の並行処理機械が、
    前記第2の並行処理機械からの前記表示を受け取り、
    第3のパターンが前記表示内にあるかどうかを決定し、
    出力を生成するように構成される第3の並行処理機械、
    を備える、請求項29に記載の装置。
  31. 第1の並行処理機械で第1のデータを受け取ることと、
    前記第1のデータの分析に基づいて、前記第1の並行処理機械から第2のデータを出力することと、
    第2の並行処理機械で前記第2のデータを受け取ることと、
    前記第2のデータの分析に基づいて、前記第2の並行処理機械から第3のデータを出力することと、
    前記3のデータに基づいて、前記第1の並行処理機械を構成することと、
    を含む、データを分析するための方法。
  32. 構成することが再プログラムすることを含む、請求項31に記載の方法。
  33. 前記第1の並行処理機械を構成することが、
    前記第3のデータに基づいて前記第1の並行処理機械のための更新されたプログラムをコンパイルすることと、
    前記第1の並行処理機械に前記更新プログラムをロードすることと、
    を含む、請求項31に記載の方法。
  34. 前記第1の並行処理機械が、前記第1のデータで第1のパターンを識別するように構成され、前記第2の並行処理機械が、前記第2のデータで第2のパターンを識別するように構成される、請求項31に記載の方法。
  35. 前記第2の並行処理機械で前記第1のデータを受け取ることをさらに含み、前記第2の並行処理機械から第3のデータを出力することが、前記第1のデータおよび前記第2のデータの分析に基づいて第3のデータを出力することを含む、
    請求項31に記載の方法。
  36. 第1の並行処理機械で第1のデータを分析することと、
    前記第1のデータに関する第2のデータについての第2の並行処理機械による分析に基づき、前記第1の並行処理機械を構成することと、
    を含む方法。
  37. 前記第2の並行処理機械が、前記第1のデータを分析し、前記分析に基づいて前記第2のデータを生成する、請求項36に記載の方法。
  38. 前記第2の並行処理機械が、前記第1の並行処理機械からの出力を分析し、前記分析に基づいて前記第2のデータを生成する、請求項36に記載の方法。
  39. 処理装置が前記第2のデータを受け取り、前記第2のデータを分析し、前記第2のデータに基づいて前記第1の並行処理機械のための更新されたプログラムをコンパイルし、前記第1の並行処理機械を構成することが、前記第1の並行処理機械の上に前記更新されたプログラムをロードすることを含む、請求項36に記載の方法。
  40. 前記第1の並行処理機械および前記第2の並行処理機械がパターン認識を実行する、請求項36に記載の方法。
  41. 階層構造の第1の層で、入力データに関する下位レベルの分析を実行し、前記下位レベルの分析に基づいて出力を提供することと、
    階層構造の第2の層で、前記下層によって提供される前記出力に関する高レベルの分析を実行することと、
    を含む方法。
  42. 前記分析が、パターン認識を備える、請求項41に記載の方法。
  43. 前記構造の前記第1の層が、第1の並行処理機械によって実装され、前記構造の第2の層が、第2の並行処理機械によって実装される、請求項41に記載の方法。
  44. 前記第1の並行処理機械および前記第2の並行処理機械が、カスケード式でともに結合される、請求項43に記載の方法。
  45. 前記第1の並行処理機械および前記第2の並行処理機械が、直列で結合される、請求項43に記載の方法。
  46. 分析の前記レベルの内の1つからの情報が、分析の前記他のレベルで実行される前記分析を修正するために使用される、請求項41に記載の方法。
  47. 前記構造の前記第2の層から、前記構造の前記第1の層にフィードバック情報を提供することをさらに含む、請求項41に記載の方法。
  48. 前記フィードバック情報が、前記下位レベルの分析を更新するために使用される、請求項47に記載の方法。
  49. 前記フィードバック情報が、前記下位レベルの分析を実行するために使用されるプログラムを更新するために使用される、請求項48に記載の方法。
  50. 前記フィードバック情報は、前記入力データに相当する情報を識別することを含む、請求項48に記載の方法。
  51. 前記構造の前記第1の層が、並行処理機械の第1の部分によって実装され、前記構造の前記第2の層が、前記並行処理機械の第2の部分によって実装される、請求項41に記載の方法。
  52. 前記高レベルの分析に基づいて前記下位レベルの分析を構成することをさらに含む、請求項41に記載の方法。
  53. 前記下位レベルの分析に基づいて前記高レベルの分析を構成することをさらに含む、請求項41に記載の方法。
  54. 前記構造の両方の層が、フォンノイマンアーキテクチャを有する機械上でソフトウェアで実装される、請求項41に記載の方法。
  55. 前記高レベルの分析に基づいて前記下位レベルの分析を修正することをさらに含む、請求項41に記載の方法。
  56. 前記出力が、検出状態情報を備える、請求項41に記載の方法。
JP2013514372A 2010-06-10 2011-06-09 階層構造を使用するデータの分析 Active JP5736042B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US35354610P 2010-06-10 2010-06-10
US61/353,546 2010-06-10
US12/943,551 2010-11-10
US12/943,551 US8601013B2 (en) 2010-06-10 2010-11-10 Analyzing data using a hierarchical structure
PCT/US2011/039849 WO2011156634A2 (en) 2010-06-10 2011-06-09 Analyzing data using a hierarchical structure

Publications (3)

Publication Number Publication Date
JP2013533542A true JP2013533542A (ja) 2013-08-22
JP2013533542A5 JP2013533542A5 (ja) 2014-07-31
JP5736042B2 JP5736042B2 (ja) 2015-06-17

Family

ID=45097097

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013514372A Active JP5736042B2 (ja) 2010-06-10 2011-06-09 階層構造を使用するデータの分析

Country Status (7)

Country Link
US (4) US8601013B2 (ja)
EP (1) EP2580659B1 (ja)
JP (1) JP5736042B2 (ja)
KR (1) KR101698237B1 (ja)
CN (2) CN105912992B (ja)
TW (1) TWI584198B (ja)
WO (1) WO2011156634A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015509228A (ja) * 2011-12-15 2015-03-26 マイクロン テクノロジー, インク. ステートマシンにおける検出方法とシステム

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
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
US8214672B2 (en) 2009-01-07 2012-07-03 Micron Technology, Inc. Method and systems for power consumption management of a pattern-recognition processor
US9836555B2 (en) 2009-06-26 2017-12-05 Micron Technology, Inc. Methods and devices for saving and/or restoring a state of a pattern-recognition processor
US9501705B2 (en) 2009-12-15 2016-11-22 Micron Technology, Inc. Methods and apparatuses for reducing power consumption in a pattern recognition processor
US9323994B2 (en) * 2009-12-15 2016-04-26 Micron Technology, Inc. Multi-level hierarchical routing matrices for pattern-recognition processors
US8601013B2 (en) 2010-06-10 2013-12-03 Micron Technology, Inc. Analyzing data using a hierarchical structure
US8766666B2 (en) * 2010-06-10 2014-07-01 Micron Technology, Inc. Programmable device, hierarchical parallel machines, and methods for providing state information
CN103443767B (zh) 2011-01-25 2016-01-20 美光科技公司 展开量化以控制自动机的入度和/或出度
JP5763783B2 (ja) * 2011-01-25 2015-08-12 マイクロン テクノロジー, インク. 正規表現をコンパイルするための方法および装置
EP2668574B1 (en) 2011-01-25 2021-11-24 Micron Technology, INC. Utilizing special purpose elements to implement a fsm
WO2012103151A2 (en) 2011-01-25 2012-08-02 Micron Technology, Inc. State grouping for element utilization
US9047559B2 (en) 2011-07-22 2015-06-02 Sas Institute Inc. Computer-implemented systems and methods for testing large scale automatic forecast combinations
US8680888B2 (en) 2011-12-15 2014-03-25 Micron Technologies, Inc. Methods and systems for routing 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
US8593175B2 (en) 2011-12-15 2013-11-26 Micron Technology, Inc. Boolean logic in a state machine lattice
US8648621B2 (en) 2011-12-15 2014-02-11 Micron Technology, Inc. Counter operation in a state machine lattice
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
US9087306B2 (en) 2012-07-13 2015-07-21 Sas Institute Inc. Computer-implemented systems and methods for time series exploration
US9244887B2 (en) * 2012-07-13 2016-01-26 Sas Institute Inc. Computer-implemented systems and methods for efficient structuring of time series data
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
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
US9824121B2 (en) * 2012-08-10 2017-11-21 Arris Enterprises Llc Aggregate data streams in relational database systems
US9501131B2 (en) 2012-08-31 2016-11-22 Micron Technology, Inc. Methods and systems for power management in a pattern recognition processing system
US9075428B2 (en) 2012-08-31 2015-07-07 Micron Technology, Inc. Results generation for state machine engines
US9063532B2 (en) 2012-08-31 2015-06-23 Micron Technology, Inc. Instruction insertion in state machine engines
US9190057B2 (en) * 2012-12-12 2015-11-17 Amazon Technologies, Inc. Speech model retrieval in distributed speech recognition systems
US9147218B2 (en) 2013-03-06 2015-09-29 Sas Institute Inc. Devices for forecasting ratios in hierarchies
US9448965B2 (en) 2013-03-15 2016-09-20 Micron Technology, Inc. Receiving data streams in parallel and providing a first portion of data to a first state machine engine and a second portion to a second state machine
US9703574B2 (en) 2013-03-15 2017-07-11 Micron Technology, Inc. Overflow detection and correction in state machine engines
US10089043B2 (en) 2013-03-15 2018-10-02 Micron Technology, Inc. Apparatus and methods for a distributed memory system including memory nodes
US9934259B2 (en) 2013-08-15 2018-04-03 Sas Institute Inc. In-memory time series database and processing in a distributed environment
US10169720B2 (en) 2014-04-17 2019-01-01 Sas Institute Inc. Systems and methods for machine learning using classifying, clustering, and grouping time series data
US9892370B2 (en) 2014-06-12 2018-02-13 Sas Institute Inc. Systems and methods for resolving over multiple hierarchies
US9208209B1 (en) 2014-10-02 2015-12-08 Sas Institute Inc. Techniques for monitoring transformation techniques using control charts
US11366675B2 (en) 2014-12-30 2022-06-21 Micron Technology, Inc. Systems and devices for accessing a state machine
WO2016109571A1 (en) 2014-12-30 2016-07-07 Micron Technology, Inc Devices for time division multiplexing of state machine engine signals
US10430210B2 (en) 2014-12-30 2019-10-01 Micron Technology, Inc. Systems and devices for accessing a state machine
US9418339B1 (en) 2015-01-26 2016-08-16 Sas Institute, Inc. Systems and methods for time series analysis techniques utilizing count data sets
CN104866831B (zh) * 2015-05-29 2018-06-05 福建省智慧物联网研究院有限责任公司 特征加权的人脸识别算法
US10983682B2 (en) 2015-08-27 2021-04-20 Sas Institute Inc. Interactive graphical user-interface for analyzing and manipulating time-series projections
US10977309B2 (en) 2015-10-06 2021-04-13 Micron Technology, Inc. Methods and systems for creating networks
US10691964B2 (en) 2015-10-06 2020-06-23 Micron Technology, Inc. Methods and systems for event reporting
US10846103B2 (en) 2015-10-06 2020-11-24 Micron Technology, Inc. Methods and systems for representing processing resources
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
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
EP3682353A4 (en) * 2017-09-13 2021-12-08 Next Silicon Ltd DIRECTED AND INTERCONNECTED GRID DATA FLOW ARCHITECTURE
US10331490B2 (en) 2017-11-16 2019-06-25 Sas Institute Inc. Scalable cloud-based time series analysis
CN108234452B (zh) * 2017-12-12 2020-11-24 上海天旦网络科技发展有限公司 一种网络数据包多层协议识别的系统和方法
US10338994B1 (en) 2018-02-22 2019-07-02 Sas Institute Inc. Predicting and adjusting computer functionality to avoid failures
US10255085B1 (en) 2018-03-13 2019-04-09 Sas Institute Inc. Interactive graphical user interface with override guidance
US10678956B2 (en) * 2018-06-25 2020-06-09 Dell Products, L.P. Keyboard for provisioning security credentials
US10560313B2 (en) 2018-06-26 2020-02-11 Sas Institute Inc. Pipeline system for time-series data forecasting
US10685283B2 (en) 2018-06-26 2020-06-16 Sas Institute Inc. Demand classification based pipeline system for time-series data forecasting
US10861551B2 (en) 2018-12-28 2020-12-08 Micron Technology, Inc. Memory cells configured to generate weighted inputs for neural networks
JP7193623B2 (ja) * 2019-04-23 2022-12-20 日立Astemo株式会社 車両制御装置及びコンピュータプログラム
US11269526B2 (en) 2020-04-23 2022-03-08 Next Silicon Ltd Interconnected memory grid with bypassable units

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04291662A (ja) * 1991-03-20 1992-10-15 Fujitsu Ltd 階層ネットワーク構成演算素子
JP2002358500A (ja) * 2001-05-31 2002-12-13 Canon Inc パターン認識装置
JP2005122466A (ja) * 2003-10-16 2005-05-12 Canon Inc 積和演算回路及びその方法

Family Cites Families (90)

* 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
US5586266A (en) 1993-10-15 1996-12-17 International Business Machines Corporation System and method for adaptive, active monitoring of a serial data stream having a characteristic pattern
US5537580A (en) 1994-12-21 1996-07-16 Vlsi Technology, Inc. Integrated circuit fabrication using state machine extraction from behavioral hardware description language
US5831853A (en) 1995-06-07 1998-11-03 Xerox Corporation Automatic construction of digital controllers/device drivers for electro-mechanical systems using component models
US5729678A (en) * 1996-03-04 1998-03-17 Ag Communication Systems Corporation Bus monitor system
AU5355098A (en) 1996-11-14 1998-06-03 Alcatel Usa Sourcing, L.P. Generic software state machine and method of constructing dynamic objects for an application program
US5966534A (en) 1997-06-27 1999-10-12 Cooke; Laurence H. Method for compiling high level programming languages into an integrated processor with reconfigurable logic
US6748588B1 (en) 1999-03-31 2004-06-08 Microsoft Corporation One-pass greedy-pattern-matching finite-state-machine code generation
US6262594B1 (en) 1999-11-05 2001-07-17 Ati International, Srl Apparatus and method for configurable use of groups of pads of a system on chip
US6564336B1 (en) * 1999-12-29 2003-05-13 General Electric Company Fault tolerant database for picture archiving and communication systems
US6832378B1 (en) 2000-06-20 2004-12-14 International Business Machines Corporation Parallel software processing system
US7140018B1 (en) 2000-06-20 2006-11-21 International Business Machines Corporation Method of using a distinct flow of computational control as a reusable abstract data object
US6507903B1 (en) 2000-06-20 2003-01-14 International Business Machines Corporation High performance non-blocking parallel storage manager for parallel software executing on coordinates
GB2367917A (en) * 2000-10-12 2002-04-17 Qas Systems Ltd Retrieving data representing a postal address from a database of postal addresses using a trie structure
US7020850B2 (en) 2001-05-02 2006-03-28 The Mathworks, Inc. Event-based temporal logic
US7546354B1 (en) * 2001-07-06 2009-06-09 Emc Corporation Dynamic network based storage with high availability
JP2003044184A (ja) * 2001-08-01 2003-02-14 Canon Inc データ処理装置及び電力制御方法
US7170891B2 (en) * 2001-08-30 2007-01-30 Messenger Terabit Networks, Inc. High speed data classification system
US20030066050A1 (en) 2001-09-26 2003-04-03 Wang Douglas W. Method and system for programming devices using finite state machine descriptions
US6957371B2 (en) 2001-12-04 2005-10-18 Intellitech Corporation Method and apparatus for embedded built-in self-test (BIST) of electronic circuits and systems
US6785872B2 (en) 2002-01-22 2004-08-31 Hewlett-Packard Development Company, L.P. Algorithm-to-hardware system and method for creating a digital circuit
US20040127207A1 (en) 2002-09-25 2004-07-01 Interdigital Technology Corporation Programmable radio interface
US7124392B2 (en) 2002-09-27 2006-10-17 Stmicroelectronics, Pvt. Ltd. Mapping of programmable logic devices
US7171561B2 (en) * 2002-10-17 2007-01-30 The United States Of America As Represented By The Secretary Of The Air Force Method and apparatus for detecting and extracting fileprints
US7464254B2 (en) 2003-01-09 2008-12-09 Cisco Technology, Inc. Programmable processor apparatus integrating dedicated search registers and dedicated state machine registers with associated execution hardware to support rapid application of rulesets to data
CN1894559A (zh) 2003-03-17 2007-01-10 索尼电子有限公司 执行使命引擎的方法和装置
US7390958B2 (en) * 2003-06-25 2008-06-24 Yamaha Corporation Method for teaching music
ATE542176T1 (de) 2003-10-16 2012-02-15 Canon Kk Betriebsschaltung und betriebssteuerverfahren dafür
US7487542B2 (en) 2004-01-14 2009-02-03 International Business Machines Corporation Intrusion detection using a network processor and a parallel pattern detection engine
WO2005119531A2 (en) 2004-06-01 2005-12-15 Tera Systems, Inc. Rule-based design consultant and method for integrated circuit design
US20050283743A1 (en) 2004-06-07 2005-12-22 Mulholland Philip J Method for generating hardware information
WO2006013428A1 (en) * 2004-07-26 2006-02-09 Nokia Corporation, System and method for searching for content stored by one or more media servers
US8135652B2 (en) 2004-10-29 2012-03-13 Nec Laboratories America, Inc. Parallel support vector method and apparatus
US7392229B2 (en) 2005-02-12 2008-06-24 Curtis L. Harris General purpose set theoretic processor
US7761851B2 (en) * 2005-05-31 2010-07-20 International Business Machines Corporation Computer method and system for integrating software development and deployment
US7805301B2 (en) 2005-07-01 2010-09-28 Microsoft Corporation Covariance estimation for pattern recognition
US20070112701A1 (en) * 2005-08-15 2007-05-17 Microsoft Corporation Optimization of cascaded classifiers
CN101099147B (zh) * 2005-11-11 2010-05-19 松下电器产业株式会社 对话支持装置
JP4528728B2 (ja) 2006-01-31 2010-08-18 株式会社東芝 デジタル回路の自動設計装置、自動設計方法、および自動設計プログラム
US7427871B2 (en) 2006-06-21 2008-09-23 Element Cxi, Llc Fault tolerant integrated circuit architecture
US7809723B2 (en) * 2006-06-26 2010-10-05 Microsoft Corporation Distributed hierarchical text classification framework
CN1877531A (zh) 2006-06-30 2006-12-13 浙江大学 一种嵌入式编译体系扫描器的实现方法
WO2008010636A1 (en) 2006-07-20 2008-01-24 M.I.Tech Co., Ltd. Stent
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
US7962428B2 (en) * 2006-11-30 2011-06-14 Siemens Medical Solutions Usa, Inc. System and method for joint optimization of cascaded classifiers for computer aided detection
US20080168013A1 (en) 2006-12-05 2008-07-10 Paul Cadaret Scalable pattern recognition system
US8656381B2 (en) 2006-12-07 2014-02-18 International Business Machines Corporation Presenting machine instructions in a machine-independent tree form suitable for post-link optimizations
US7899977B2 (en) * 2006-12-08 2011-03-01 Pandya Ashish A Programmable intelligent search memory
CN101013452A (zh) 2007-02-05 2007-08-08 江苏大学 一种符号化的模型检测方法
US7693806B2 (en) * 2007-06-21 2010-04-06 Microsoft Corporation Classification using a cascade approach
CN101360088B (zh) 2007-07-30 2011-09-14 华为技术有限公司 正则表达式编译、匹配系统及编译、匹配方法
US8561037B2 (en) 2007-08-29 2013-10-15 Convey Computer Compiler for generating an executable comprising instructions for a plurality of different instruction sets
CN101201836B (zh) 2007-09-04 2010-04-14 浙江大学 基于带记忆确定有限自动机的正则表达式匹配加速方法
JP4957500B2 (ja) 2007-10-12 2012-06-20 日本電気株式会社 文字列照合回路
CN101499065B (zh) 2008-02-01 2011-11-02 华为技术有限公司 基于fa的表项压缩方法及装置、表项匹配方法及装置
US8782613B2 (en) * 2008-08-12 2014-07-15 Hewlett-Packard Development Company, L.P. Optimizing applications using source code patterns and performance analysis
CN101339501B (zh) 2008-08-12 2012-07-18 北京航空航天大学 基于有向图的ws-bpel控制环路检测方法
WO2010018710A1 (ja) 2008-08-13 2010-02-18 日本電気株式会社 有限オートマトン生成装置、パターンマッチング装置、有限オートマトン回路生成方法およびプログラム
US8095494B2 (en) 2008-10-16 2012-01-10 International Business Machines Corporation Rules-based cross-FSM transition triggering
US8209521B2 (en) 2008-10-18 2012-06-26 Micron Technology, Inc. Methods of indirect register access including automatic modification of a directly accessible address register
US8938590B2 (en) 2008-10-18 2015-01-20 Micron Technology, Inc. Indirect register access method and system
WO2010051542A2 (en) * 2008-10-31 2010-05-06 Melodis Corporation Melodis crystal decoder method and device
US9639493B2 (en) 2008-11-05 2017-05-02 Micron Technology, Inc. Pattern-recognition processor with results buffer
US7970964B2 (en) 2008-11-05 2011-06-28 Micron Technology, Inc. Methods and systems to accomplish variable width data input
US7917684B2 (en) 2008-11-05 2011-03-29 Micron Technology, Inc. Bus translator
US20100118425A1 (en) 2008-11-11 2010-05-13 Menachem Rafaelof Disturbance rejection in a servo control loop using pressure-based disc mode sensor
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
TWI395103B (zh) 2008-12-31 2013-05-01 C Media Electronics Inc 自動執行訊號處理方法與具有該自動執行功能之裝置
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
US8214672B2 (en) 2009-01-07 2012-07-03 Micron Technology, Inc. Method and systems for power consumption management of a pattern-recognition processor
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
JP4892022B2 (ja) * 2009-03-03 2012-03-07 株式会社東芝 コンパイル装置およびコンパイルプログラム
US20100325633A1 (en) 2009-06-19 2010-12-23 Microsoft Corporation Searching Regular Expressions With Virtualized Massively Parallel Programmable Hardware
US9836555B2 (en) 2009-06-26 2017-12-05 Micron Technology, Inc. Methods and devices for saving and/or restoring a state of a pattern-recognition processor
KR101645035B1 (ko) * 2009-09-22 2016-08-16 삼성전자주식회사 병렬 프로그래밍 조절 장치 및 방법
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
US8766666B2 (en) 2010-06-10 2014-07-01 Micron Technology, Inc. Programmable device, hierarchical parallel machines, and methods for providing state information
WO2012103151A2 (en) 2011-01-25 2012-08-02 Micron Technology, Inc. State grouping for element utilization
EP2668574B1 (en) 2011-01-25 2021-11-24 Micron Technology, INC. Utilizing special purpose elements to implement a fsm
JP5763783B2 (ja) 2011-01-25 2015-08-12 マイクロン テクノロジー, インク. 正規表現をコンパイルするための方法および装置
CN103443767B (zh) 2011-01-25 2016-01-20 美光科技公司 展开量化以控制自动机的入度和/或出度

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04291662A (ja) * 1991-03-20 1992-10-15 Fujitsu Ltd 階層ネットワーク構成演算素子
JP2002358500A (ja) * 2001-05-31 2002-12-13 Canon Inc パターン認識装置
JP2005122466A (ja) * 2003-10-16 2005-05-12 Canon Inc 積和演算回路及びその方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015509228A (ja) * 2011-12-15 2015-03-26 マイクロン テクノロジー, インク. ステートマシンにおける検出方法とシステム

Also Published As

Publication number Publication date
US8601013B2 (en) 2013-12-03
WO2011156634A2 (en) 2011-12-15
US20140082009A1 (en) 2014-03-20
KR101698237B1 (ko) 2017-02-01
US20110307503A1 (en) 2011-12-15
US11488378B2 (en) 2022-11-01
CN105912992A (zh) 2016-08-31
CN103003792A (zh) 2013-03-27
TWI584198B (zh) 2017-05-21
EP2580659A2 (en) 2013-04-17
EP2580659B1 (en) 2018-12-26
KR20130120441A (ko) 2013-11-04
JP5736042B2 (ja) 2015-06-17
US20230154176A1 (en) 2023-05-18
EP2580659A4 (en) 2015-08-05
WO2011156634A3 (en) 2012-04-05
TW201209717A (en) 2012-03-01
US20180096213A1 (en) 2018-04-05
CN105912992B (zh) 2019-12-10
US9785847B2 (en) 2017-10-10
CN103003792B (zh) 2016-05-04

Similar Documents

Publication Publication Date Title
JP5736042B2 (ja) 階層構造を使用するデータの分析
US11604687B2 (en) Programmable device, hierarchical parallel machines, and methods for providing state information
US9870530B2 (en) Methods and systems for data analysis in a state machine
KR101920956B1 (ko) 상태 기계에서의 검출을 위한 방법들 및 시스템들
JP6126127B2 (ja) ステートマシンにおけるルーティング用の方法およびシステム
US9304968B2 (en) Methods and devices for programming a state machine engine
JP2015533231A (ja) 状態機械エンジンにおいて状態ベクトルデータを使用するための方法およびシステム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140609

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140609

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140609

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20140609

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20140625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140805

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141104

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20141104

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150305

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150305

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: 20150331

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150417

R150 Certificate of patent or registration of utility model

Ref document number: 5736042

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

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