JP2013513893A - パターン認識プロセッサにおける消費電力を低減させるための方法及び装置 - Google Patents

パターン認識プロセッサにおける消費電力を低減させるための方法及び装置 Download PDF

Info

Publication number
JP2013513893A
JP2013513893A JP2012544611A JP2012544611A JP2013513893A JP 2013513893 A JP2013513893 A JP 2013513893A JP 2012544611 A JP2012544611 A JP 2012544611A JP 2012544611 A JP2012544611 A JP 2012544611A JP 2013513893 A JP2013513893 A JP 2013513893A
Authority
JP
Japan
Prior art keywords
block
search
pattern
signal
pattern search
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
JP2012544611A
Other languages
English (en)
Other versions
JP5923449B2 (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 JP2013513893A publication Critical patent/JP2013513893A/ja
Application granted granted Critical
Publication of JP5923449B2 publication Critical patent/JP5923449B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Multimedia (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Power Sources (AREA)

Abstract

パターン認識プロセッサ(14)の消費電力を低減するための装置及び方法が提供される。電力制御回路(98)は、パターン検索中にブロック(96)の選択的アクティブ化及び非アクティブ化を可能にするために、プログラムされたステートマシンのブロック(96)に結合されてもよい。ブロック(96)は、パターン検索がもはやそのブロック(96)でアクティブではない場合は、非アクティブ化され、パターン検索で必要なときに、アクティブ化されてもよい。更に、ブロック(96)は、検索対象のデータストリーム(12)の識別子に基づいて非アクティブ化されてもよい。プログラムされたステートマシンに使用されない余剰ブロック(96)は、メモリ周期中にリフレッシュされないように無効にされてもよい。
【選択図】図15

Description

本発明の実施形態は、概して、パターン認識プロセッサに関し、より詳細には、特定の実施形態において、このようなパターン認識プロセッサの消費電力を低減させることに関する。
コンピューティングの分野では、パターン認識タスクは、益々難しくなってきている。従来と比べてより大量のデータがコンピュータ間で送信され、ユーザが識別することを望むパターンの数は増加している。例えば、特定のフレーズまたはコードの一部等のデータストリーム内のパターンを検索することによって、例えば、スパムまたはマルウェアが頻繁に検出される。新しいパターンが新しい変種を検索するために実装され得るが、パターンの数はスパム及びマルウェアの多様性によって増加する。データストリームでこれらの各パターンを検索することは、コンピューティング・ボトルネックを形成し得る。データストリームが受信されると、大抵は、各パターンが1度に1つずつ検索される。システムがデータストリームの次の部分を検索できるようになる前の遅延は、パターンの数によって増大する。従って、パターン認識は、データの受信を遅くする場合がある。
このようなパターン認識デバイスは、パターン認識処理に利用可能な全てまたはほぼ全てのメモリコアを用いてもよい。すなわち、各データストリームから1つ以上のパターンを検索する性質のために、全てまたはほぼ全てのメモリコアが各処理周期中にアクセスされてもよい。これは、パターン認識プロセッサにより高消費電力になる場合がある。更に、従来のDRAMデバイスまたは他のメモリに用いられるアドレスデコード技術は、パターン認識デバイスによる使用には適さない場合がある。
データストリームを検索するシステムの実施例を示す。 図1のシステム内のパターン認識プロセッサの実施例を示す。 図2のパターン認識プロセッサ内の検索タームセルの実施例を示す。 データストリームから一文字を検索する図3の検索タームセルを示す。 データストリームから一文字を検索する図3の検索タームセルを示す。 データストリームから単語を検索するいくつかの検索タームセルを含む認識モジュールを示す。 データストリームから単語を検索するいくつかの検索タームセルを含む認識モジュールを示す。 データストリームから単語を検索するいくつかの検索タームセルを含む認識モジュールを示す。 データストリームから2つの単語を並行して検索するように構成された認識モジュールを示す。 同一の接頭辞を持つ複数の単語を特定する検索条件に従って検索する認識モジュールを示す。 同一の接頭辞を持つ複数の単語を特定する検索条件に従って検索する認識モジュールを示す。 同一の接頭辞を持つ複数の単語を特定する検索条件に従って検索する認識モジュールを示す。 本発明の実施形態に係る行及びブロックへのフィーチャセルの配列を示す。 本発明の実施形態に係るフィーチャセルのブロックの動作を示す。 本発明の実施形態に係るフィーチャセルのブロックの動作を示す。 本発明の実施形態に係る電源制御回路の論理回路図を示す。 本発明の実施形態に係るパターン認識プロセッサのブロックの予測アクティブスキームを示す。 本発明の実施形態に係るブロックで信号を処理するための論理図を示す。
図1は、データストリーム12を検索するシステム10の一実施例を示す。システム10は、検索基準(search criteria)16に従ってデータストリーム12を検索するパターン認識プロセッサ14を含んでもよい。
各検索基準は、1つ以上の対象表現、すなわちパターンを特定してもよい。“対象表現”という用語は、パターン認識プロセッサ14が検索するデータ配列(シーケンス)のことを称する。対象表現の例は、ある単語を綴る文字配列、遺伝子を特定する遺伝子塩基対配列、画像の一部を形成する画像ファイルもしくはビデオファイルにおけるビット配列、プログラムの一部を形成する実行可能ファイルにおけるビット配列、または、歌もしくは話された言葉の一部を形成するオーディオファイルにおけるビット配列を含む。
検索基準は、1つを超える対象表現を特定してもよい。例えば、検索基準は、文字列“cl”で始まる全5文字の単語、文字列“cl”で始まるあらゆる単語、3回を超えて“cloud”という単語を含む段落などを特定してもよい。対象表現のうちで考えられる組の数は、任意に大きく、例えば、データストリームが存在することが可能であるデータの順列が存在するのと同一数の対象表現が存在する可能性がある。検索基準は、種々のフォーマットで表現されてもよく、そのフォーマットは、正規表現として、各対象表現を必ずしも記載することなく、対象表現の組を簡潔に特定するプログラミング言語を含む。
各検索基準は、1つ以上の検索タームから構成されてもよい。したがって、検索基準の各対象表現は1つ以上の検索タームを含み、幾つかの対象表現は、共通の検索タームを使用してもよい。本明細書で使用されるように、“検索ターム”という用語は、単一の検索周期の間に検索されるデータの配列のことを称する。データの配列は、バイナリフォーマットもしくは、例えば、10進法、ASCIIなどの他のフォーマットの複数ビットのデータを含んでもよい。配列は、単一のディジットもしくは複数のディジット(例えば幾つかのバイナリディジット)でデータをエンコードしてもよい。例えば、パターン認識プロセッサ14は、一度に一文字をテキストデータストリーム12から検索し、検索タームは、例えば、文字“a”、文字“a”か“e”のいずれか、または、全ての単一文字の組を特定するワイルドカード検索タームなど、単一文字の組を特定してもよい。
検索タームは、文字(もしくは、データストリームによって表現される情報の他の書記素、すなわち基本単位、例えば、音符、遺伝子塩基対、10進法のディジット、サブピクセル)を特定するビット数よりも小さいか、または大きくてもよい。例えば、検索タームは8ビットであり、単一文字は16ビットであり、この場合には、2つの連続した検索タームは単一文字を特定してもよい。
検索基準16は、コンパイラ18によってパターン認識プロセッサ14のためにフォーマットされてもよい。フォーマットするステップは、検索基準から検索タームを分解するステップを含んでもよい。例えば、データストリーム12によって表現される書記素が検索タームよりも大きい場合、コンパイラは、単一の書記素を検索するために、複数の検索タームへと検索基準を分解してもよい。同様に、データストリーム12によって表現される書記素が検索タームよりも小さい場合、コンパイラ18は、各個別の書記素に対して、使用されていないビットを伴う単一の検索タームを提供してもよい。コンパイラ18は、パターン認識プロセッサ14によって本来サポートされていない種々の正規表現演算子をサポートするために、検索基準16をフォーマットしてもよい。
パターン認識プロセッサ14は、データストリーム12から各新規タームを評価することによって、データストリーム12を検索してもよい。本明細書における“ターム”という用語は、検索タームに一致しうるデータ量のことを称する。検索周期の間、パターン認識プロセッサ14は、現在提示されているタームが検索基準における現在の検索タームに一致するかどうかを決定してもよい。タームが検索タームと一致する場合には、評価は“進行”し、すなわち、次のタームが検索基準における次の検索タームと比較される。そのタームが一致しない場合には、次のタームは、検索基準における第一のタームと比較され、それによって検索をリセットする。
各検索基準は、パターン認識プロセッサ14内の異なる有限ステートマシン(有限状態機械)へとコンパイルされてもよい。有限ステートマシンは、パラレルに(並行して)動作して検索基準16に従ってデータストリーム12を検索してもよい。有限ステートマシンは、先行する検索タームがデータストリーム12によって一致する場合に検索基準における次に続く各検索タームへと進んでもよい。または、検索タームが一致しない場合には、有限ステートマシンは、検索基準の第一の検索タームの検索を開始してもよい。
パターン認識プロセッサ14は、幾つかの検索基準に従って各新規タームを評価し、ほぼ同時に、例えば、単一のデバイス周期の間に、其々の検索タームを評価してもよい。並列有限ステートマシンは、ほぼ同時にデータストリーム12からタームを各々受信し、並列有限ステートマシンの各々は、そのタームが、並列有限ステートマシンを検索基準における次の検索タームへと進めるかどうかを決定してもよい。並列有限ステートマシンは、比較的多数の検索基準(例えば、100以上、1000以上、もしくは10000以上)に従って、タームを評価してもよい。それらはパラレルに動作するため、データストリームを遅延させることなく、比較的高いバンド幅を有するデータストリーム12(例えば、64MB毎秒(Mbps)もしくは128MB毎秒(Mbps)より大きいかほぼ同一のデータストリーム12)に対して検索基準を適用してもよい。幾つかの実施形態においては、検索周期の継続期間は、検索基準の数によっては変化しないため、検索基準の数は、パターン認識プロセッサ14の性能に殆ど影響を与えることはない。
検索基準が満足されるとき(すなわち、最後の検索タームに進行してそれが一致した後)、パターン認識プロセッサ14は、中央処理装置(CPU)20などの処理装置に対して基準を満足したことを報告してもよい。中央処理装置20は、パターン認識プロセッサ14およびシステム10の他の部分を制御してもよい。
システム10は、データのストリームを検索する種々のシステムもしくはデバイスのうちのいずれであってもよい。例えば、システム10は、データストリーム12を検索するデスクトップ、ラップトップ、ハンドヘルドもしくは他のタイプのコンピュータであってもよい。システム10は、ルータ、サーバ、もしくはクライアント(例えば、前述されたタイプのコンピュータのうちの1つ)などのネットワークノードであってもよい。システム10は、コピー機、スキャナ、プリンタ、ゲーム機、テレビ、セットトップビデオ分配録画システム、ケーブルテレビ用チューナ、パーソナルデジタルメディアプレイヤー、工場自動化システム、自動車用コンピュータシステムもしくは医療デバイスなどの他の種類の何らかの電子装置であってもよい。(これらの種々のシステムの実施例を記述するために使用される用語は、本明細書で使用される他の多くの用語と同様に、幾つかの指示対象を共有し、それ自体は、列挙された他の項目によって、狭く解釈されるべきではない。)
データストリーム12は、ユーザもしくは他の存在が検索を望む可能性のある種々のタイプのデータストリームのうちの、1つ以上のデータストリームであってもよい。例えば、データストリーム12は、インターネットを介して受信されたパケット、または、携帯電話ネットワークを介して受信された音声もしくはデータなどの、ネットワークを介して受信されたデータのストリームであってもよい。データストリーム12は、画像センサ、温度センサ、加速度計などもしくはその組み合わせなどの、システム10と連通するセンサから受信されたデータであってもよい。データストリーム12は、シリアルデータストリームとしてシステム10によって受信され、データは、時間的、語彙的、もしくは意味論的に重要視される順序などの、意味のある順序で受信される。代わりに、データストリーム12は、パラレルにもしくはバラバラの順序で受信され、その後、例えば、インターネットを介して受信されたパケットを順序づけることによって、シリアルデータストリームへと変換されてもよい。幾つかの実施形態においては、データストリーム12は、タームをシリアルに提示してもよいが、各タームを表すビットはパラレルに受信されてもよい。データストリーム12については、システム10に対して外部ソースから受信してもよいし、または、メモリデバイスに問い合わせ(インテロゲート)をし、格納されているデータからデータストリーム12を形成することによって形成してもよい。
データストリーム12におけるデータのタイプにより、異なるタイプの検索基準が設計者によって選択されてもよい。例えば、検索基準16は、ウイルス定義ファイルであってもよい。ウイルスもしくは他のマルウェアは特徴づけられ、マルウェアの態様は、データストリーム12がマルウェアを配信しそうか否かを示す検索基準を形成するために使用されてもよい。結果として生じる検索基準はサーバに格納され、クライアントシステムのオペレータは、システム10へと検索基準をダウンロードするサービスに登録してもよい。検索基準16は、異なるタイプのマルウェアが出現した場合に、サーバから定期的にアップデートされてもよい。検索基準は、ネットワークを介して受信される可能性のある望ましくないコンテンツ(例えば、(スパムとしてよく知られている)迷惑電子メールもしくはユーザが望まない他のコンテンツ)を特定するために使用されてもよい。
データストリーム12は、システム10で受信したデータに対して関心を持つ第三者によって検索されてもよい。例えば、データストリーム12は、著作物に現れる文字列、音声系列、ビデオ系列に関して検索されてもよい。データストリーム12は、刑事事件もしくは民事手続きに関係する発話、もしくは雇用主にとって関心のある発話に対して検索されてもよい。他の実施形態においては、特定のデータに対してデータストリームを監視することが、検索の一実施例となりうる。
検索基準16は、例えば、CPU20もしくはパターン認識プロセッサ14によってアドレス可能なメモリにおいて翻訳が可能であるデータストリーム12中のパターンについても含むことができる。例えば、検索基準16は、対応するスペイン語がメモリに格納されている英単語を各々特定してもよい。別の実施例においては、検索基準16は、例えば、デコードされたバージョンのデータストリーム12が使用可能であるMP3、MPEG4、FLAC、Ogg Vorbisなどの、エンコードされたバージョンのデータストリーム12を特定してもよいし、その逆を特定してもよい。
パターン認識プロセッサ14は、CPU20と共に(単一のデバイスなどの)単一の構成部分に統合されたハードウェア装置であってもよいし、別個の構成部分として形成されてもよい。例えば、パターン認識プロセッサ14は、別個の集積回路であってもよい。パターン認識プロセッサ14は、“コプロセッサ”もしくは“パターン認識コプロセッサ”と称されてもよい。
図2は、パターン認識プロセッサ14の一実施例を示す。パターン認識プロセッサ14は、認識モジュール22および集約モジュール24を含んでもよい。認識モジュール22は、受信したタームを検索タームと比較するように構成され、認識モジュール22および集約モジュール24の双方が、検索タームとタームが一致することが検索基準を満足するか否かを決定するように協働してもよい。
認識モジュール22は、行デコーダ28および複数のフィーチャセル30を含んでもよい。各フィーチャセル30は、検索タームを特定し、フィーチャセル30のグループは、検索基準を形成する並列有限ステートマシンを形成してもよい。フィーチャセル30のコンポーネントは、検索タームアレイ32、検出アレイ34およびアクティブ化ルーティングマトリクス36を形成してもよい。検索タームアレイ32は、複数の入力導体37を含み、入力導体37の各々は、行デコーダ28と連通するフィーチャセル30の各々を配列してもよい。
行デコーダ28は、データストリーム12のコンテンツに基づいて、複数の入力導体37中から特定の導体を選択してもよい。例えば、行デコーダ28は、1タームを表現する可能性がある受信したバイトの値に基づいて256行のうちの1つをアクティブ化する、1バイトから256への行デコーダであってもよい。00000000の1バイトタームは、複数の入力導体37のうち最も上の行に対応し、11111111の1バイトタームは、複数の入力導体37のうちの最も下の行に対応してもよい。したがって、異なる入力導体37は、どのタームがデータストリーム12から受信されるかにより選択されてもよい。異なるタームが受信されると、行デコーダ28は、前のタームに対応する行を非アクティブ化し、新規タームに対応する行をアクティブ化してもよい。
検出アレイ34は、検索基準を完全にもしくは部分的に満足することを示す信号を集約モジュール24に対して出力する検出バス38に結合してもよい。アクティブ化ルーティングマトリクス36は、一致した検索基準における検索ターム数に基づいて、フィーチャセル30を選択的にアクティブ化し、非アクティブ化してもよい。
集約モジュール24は、ラッチマトリクス40、集約ルーティングマトリクス42、閾値論理マトリクス44、論理積マトリクス46、論理和マトリクス48および初期化ルーティングマトリクス50を含んでもよい。
ラッチマトリクス40は、ある検索基準の一部を実装してもよい。例えば、幾つかの正規表現などの幾つかの検索基準は、最初の一つの一致もしくは一群の一致の発生のみを計数する。ラッチマトリクス40は、一致が生じたかどうかを記録する複数のラッチを含んでもよい。ラッチは初期化の間にクリアされてもよく、動作中に定期的に再初期化されてもよく、その間に、検索基準が満足されたと判定され、もしくはそれ以上満足されない、すなわち、その検索基準が満足されるより前に前の検索タームを再度マッチングさせる必要があると判定される。
集約ルーティングマトリクス42は、アクティブ化ルーティングマトリクス36と類似した機能を果たしてもよい。集約ルーティングマトリクス42は、検出バス38上で一致を示す信号を受信し、閾値論理マトリクス44に接続する異なるグループ論理ライン53へと信号をルーティングしてもよい。集約ルーティングマトリクス42は、検索基準が満足された、もしくはこれ以上満足されないと判定されたときに、検出アレイ34の一部をリセットするため、検出アレイ34へと初期化ルーティングマトリクス50の出力をルーティングしてもよい。
閾値論理マトリクス44は、数を数える(カウントアップする)、または数を逆に数える(カウントダウンする)ように構成された、例えば32ビットカウンタなどの、複数のカウンタを含んでもよい。閾値論理マトリクス44は、初期カウントでロードされ、認識モジュールによって信号通知された一致時のカウント値から、カウントアップもしくはカウントダウンしてもよい。例えば、閾値論理マトリクス44は、ある長さの文字列の単語が現れた数を数えてもよい。
閾値論理マトリクス44の出力は、論理積マトリクス46に対する入力であってもよい。論理積マトリクス46は、“積”の結果(例えば、ブール論理における“AND”関数)を選択的に生成してもよい。論理積マトリクス46は、正方行列として実施され、出力される積の数は、閾値論理マトリクス44からの入力ラインの数と同一であるか、または、論理積マトリクス46は、出力とは異なる個数の入力を有してもよい。結果として生じる積の値は、論理和マトリクス48に対する出力であってもよい。
論理和マトリクス48は、和(例えば、ブール論理における“OR”関数)を選択的に生成してもよい。論理和マトリクス48もまた、正方行列として実施されるか、出力とは異なる個数の入力を有してもよい。入力は論理積であるため、論理和マトリクス48の出力は、論理的な積和(例えば、ブール論理での積和(SOP)形)であってもよい。論理和マトリクス48の出力は、初期化ルーティングマトリクス50によって受信されてもよい。
初期化ルーティングマトリクス50は、集約ルーティングマトリクス42を介して、検出アレイ34および集約モジュール24の一部をリセットしてもよい。初期化ルーティングマトリクス50もまた、正方行列として実施されるか、出力とは異なる個数の入力を有してもよい。初期化ルーティングマトリクス50は、論理和マトリクス48からの信号に応じて、例えば、検索基準が満足されたとき、または、検索基準がこれ以上満足されないと判定されたとき、パターン認識プロセッサ14の他の部分を再初期化してもよい。
集約モジュール24は、閾値論理マトリクス44、集約ルーティングマトリクス42、および論理和マトリクス48の出力を受信する出力バッファ51を含んでもよい。集約モジュール24の出力は、出力バッファ51から出力バス26上のCPU20(図1)へと伝送されてもよい。幾つかの実施形態においては、出力マルチプレクサは、これらのコンポーネント42、44および48からの信号を多重化し、基準を満足したことを示す信号、もしくは検索タームの一致を示す信号をCPU20(図1)へと出力してもよい。他の実施形態においては、パターン認識プロセッサ14からのリザルトは、出力マルチプレクサを介して信号を伝送することなく報告されてもよいが、このことは、本明細書で記述されたあらゆる他の特性が省略される可能性がないことを示唆するものではない。例えば、閾値論理マトリクス44、論理積マトリクス46、論理和マトリクス48もしくは初期化ルーティングマトリクス50からの信号は、出力バス26上をパラレルにCPUへと伝送されてもよい。
図3は、検索タームセル54として本明細書で称されるコンポーネントである、検索タームアレイ32(図2)における単一のフィーチャセル30の一部を示す。検索タームセル54は、出力導体56および複数のメモリセル58を含んでもよい。各メモリセル58は、出力導体56および複数の入力導体37の中の導体の1つの両方へと結合されてもよい。入力導体37が選択されるのに応じて、各メモリセル58は、格納された値を示す値を出力し、出力導体56を介してデータを出力する。幾つかの実施形態においては、複数の入力導体37は“ワード線”と称され、出力導体56は“データ線”と称されてもよい。
メモリセル58は、種々のタイプのメモリセルのうちのいずれを含んでもよい。例えば、メモリセル58は、トランジスタとキャパシタを有するダイナミックランダムアクセスメモリ(DRAM)セルなどの揮発性メモリであってもよい。トランジスタのソースおよびドレインは、其々、キャパシタの極板および出力導体56へと接続され、トランジスタのゲートは、入力導体37のうちの1つへと接続されてもよい。揮発性メモリの別の実施例においては、各メモリセル58は、スタティックランダムアクセスメモリ(SRAM)セルを含んでもよい。SRAMセルは、入力導体37の1つによって制御されるアクセストランジスタによって、出力導体56へと選択的に結合された出力を有してもよい。メモリセル58は、相変化メモリ(例えば、オボニックデバイス)、フラッシュメモリ、シリコン・酸化物・窒化物・酸化物・シリコン(SONOS)メモリ、磁気抵抗メモリもしくは他のタイプの不揮発性メモリなどの不揮発性メモリをも含んでもよい。メモリセル58は、フリップフロップ、例えば、論理ゲートによって形成されたメモリセルをも含んでもよい。
図4および図5は、検索タームセル54の動作の一実施例を示す。図4は、セルの検索タームに一致しないタームを受信する検索タームセル54を示し、図5は、セルの検索タームに一致するタームを受信する検索タームセル54を示す。
図4によって示されるように、検索タームセル54は、メモリセル58にデータを格納することによって、1つ以上のタームを検索するように構成されてもよい。メモリセル58は、データストリーム12が提示する可能性のあるタームを各々表し、例えば図3においては、各メモリセル58は、単一の文字もしくは数字を表し、タームは、文字“a”で開始し、数字“9”で終了している。検索タームを満足するタームを表すメモリセル58は、第一の値を格納するようにプログラムされ、検索タームを満足するタームを表していないメモリセル58は、異なる値を格納するようにプログラムされてもよい。図示された実施例においては、検索タームセル54は、文字“b”を検索するように構成されている。“b”を表すメモリセル58は、1もしくは論理レベル・ハイを格納し、“b”を表していないメモリセル58は、0、もしくは論理レベル・ローを格納するようにプログラムされてもよい。
データストリーム12からのタームを検索タームと比較するために、行デコーダ28は、受信したタームを表すメモリセル58に結合された入力導体37を選択してもよい。図4においては、データストリーム12は、小文字の“e”を示す。このタームは、8ビットASCIIコード形式でデータストリーム12によって示され、行デコーダ28は、行アドレスとしてこのバイトを解釈し、導体60に電圧を印加することによって、導体60上に信号を出力する。
これに応じて、導体60によって制御されるメモリセル58は、メモリセル58が格納するデータを示す信号を出力し、その信号は、出力導体56によって伝送されてもよい。この場合には、文字“e”は、検索タームセル54によって特定されたタームのうちの1つではないため、検索タームとは一致せず、検索タームセル54は0値を出力し、それは一致が見つからなかったことを示している。
図5においては、データストリーム12は、文字“b”を示す。この場合も同様に、行デコーダ28は、このタームをアドレスとして解釈し、行デコーダ28が、導体62を選択することとしてもよい。これに応じて、文字“b”を表すメモリセル58は、格納された値を出力し、この場合には、それは1であり、一致を示している。
検索タームセル54は、一度に1つを超えるタームを検索するように構成されてもよい。複数のメモリセル58は、1を格納するようにプログラムされ、1つを超えるタームと一致する検索タームを特定する。例えば、小文字“a”および大文字“A”を表すメモリセル58は、1を格納するようにプログラムされ、検索タームセル54は、いずれかのタームを検索してもよい。別の実施例においては、検索タームセル54は、いかなる文字が受信された場合にも一致を出力するように構成されてもよい。全メモリセル58は、1を格納するようにプログラムされてもよく、検索タームセル54は、検索基準におけるワイルドカードタームとして機能してもよい。
図6〜図8は、例えば一単語など複数ターム検索基準に従って検索する認識モジュール22を示す。具体的には、図6は、1単語の最初の文字を検出する認識モジュール22を示し、図7は、第二の文字の検出を示し、図8は、最後の文字の検出を示す。
図6によって示されるように、認識モジュール22は、単語“big”を検索するように構成されてもよい。3個の隣接するフィーチャセル63、64および66が図示されている。フィーチャセル63は、文字“b”を検出するように構成される。フィーチャセル64は、文字“i”を検出するように構成される。フィーチャセル66は、文字“g”を検出し、検索基準が満足されていることを示すように構成される。
図6は、検出アレイ34のさらに詳細な構成をも示している。検出アレイ34は、各フィーチャセル63、64および66における検出セル68を含んでもよい。各検出セル68は、上述された各種メモリセル(例えば、フリップフロップ)のうちの1つ等のメモリセル70を含んでいてもよく、メモリセル70は、フィーチャセル63、64もしくは66がアクティブか非アクティブかを示す。検出セル68は、両方の検出セルがアクティブであり、関連する検索タームセル54から一致を示す信号を受信したかどうかを示す信号を、アクティブ化ルーティングマトリクス36へと出力するように構成されてもよい。非アクティブなフィーチャセル63、64および66は、一致を無視してもよい。各検出セル68は、メモリセル70および出力導体56からの入力を有する、ANDゲートを含んでもよい。ANDゲートの出力は、検出バス38およびアクティブ化ルーティングマトリクス36の両方へ、またはそのどちらか一方へとルーティングされてもよい。
そして、アクティブ化ルーティングマトリクス36は、検出アレイ34におけるメモリセル70へと書き込むことによって、フィーチャセル63、64および66を選択的にアクティブ化してもよい。アクティブ化ルーティングマトリクス36は、検索基準ならびに次にどの検索タームがデータストリーム12において検索されるかに従って、フィーチャセル63、64もしくは66をアクティブ化してもよい。
図6においては、データストリーム12は文字“b”を示している。これに応じて、各フィーチャセル63、64および66は、その出力導体56上に信号を出力し、出力される信号は、文字“b”を表す導体62に接続されたメモリセル58に格納された値を示していてもよい。検出セル56は、その後、一致を示す信号を受信したかどうか、ならびに検出セル56がアクティブかどうかを各々決定してもよい。フィーチャセル63は文字“b”を検出するように構成され、そのメモリセル70によって示されるようにアクティブであるため、フィーチャセル63における検出セル68は、アクティブ化ルーティングマトリクス36へと、検索基準のうちの第一の検索タームが一致したことを示す信号を出力してもよい。
図7によって示されるように、第一の検索タームが一致した後、アクティブ化ルーティングマトリクス36は、検出セル68におけるメモリセル70へと1を書き込むことによって、次のフィーチャセル64をアクティブ化してもよい。次のタームが第一の検索タームを満足する場合(例えば、タームの配列“bbig”を受信した場合)アクティブ化ルーティングマトリクス36は、フィーチャセル63のアクティブ状態を維持してもよい。検索基準のうちの第一の検索タームは、データストリーム12が検索される時間のうちの一部もしくは実質的に全期間の間、アクティブ状態に維持されてもよい。
図7においては、データストリーム12は、認識モジュール22に対して文字“i”を与える。これに応じて、各フィーチャセル63、64および66は、その出力導体56上に信号を出力してもよく、出力される信号は、文字“i”を表す導体72へと接続されたメモリセル58に格納された値を示す。検出セル56は、その後、一致を示す信号を受信したかどうか、ならびに検出セル56がアクティブかどうかを各々決定してもよい。フィーチャセル64は文字“i”を検出するように構成され、メモリセル70によって示されるようにアクティブであるため、フィーチャセル64における検出セル68は、アクティブ化ルーティングマトリクス36へと、検索基準の次の検索タームが一致したことを示す信号を出力してもよい。
続いて、図8に示されるように、アクティブ化ルーティングマトリクス36は、フィーチャセル66をアクティブ化してもよい。次のタームを評価する前に、フィーチャセル64は非アクティブ化されてもよい。例えば、検出周期の間そのメモリセル70をリセットすることでその検出セル68がフィーチャセル64を非アクティブ化してもよいし、または、アクティブ化ルーティングマトリクス36がフィーチャセル64を非アクティブ化してもよい。
図8においては、データストリーム12は、行デコーダ28に対してターム“g”を与え、行デコーダ28は、ターム“g”を表す導体74を選択する。これに応じて、各フィーチャセル63、64および66は、その出力導体56上に信号を出力してもよく、出力される信号は、文字“g”を表す導体74へと接続されたメモリセル58に格納された値を示す。検出セル56は、その後、一致を示す信号を受信したかどうか、ならびに検出セル56がアクティブかどうかを各々決定してもよい。フィーチャセル66は文字“g”を検出するように構成され、そのメモリセル70によって示されるようにアクティブであるため、フィーチャセル66における検出セル68は、アクティブ化ルーティングマトリクス36へと、検索基準の最後の検索タームが一致したことを示す信号を出力してもよい。
検索基準の終わりもしくは検索基準の一部は、アクティブ化ルーティングマトリクス36もしくは検出セル68によって識別されてもよい。これらのコンポーネント36もしくは68は、そのフィーチャセル63、64もしくは66が検索基準の最終検索タームか検索基準のコンポーネントかを規定しているか否かを示すメモリを含んでもよい。例えば、検索基準は、“cattle”という単語が二度現れる全ての文を特定してもよいし、認識モジュールは、1文内に出現する“cattle”の各々を示す信号を集約モジュールへと出力してもよい。集約モジュールは、“cattle”の出現を数えて、検索基準が満足されたかどうかを判定する。
フィーチャセル63、64もしくは66は幾つかの条件下でアクティブ化されてもよい。フィーチャセル63、64もしくは66は、“常にアクティブ”であってもよく、それは、全検索の間、もしくは実質的に全ての検索の間アクティブ状態のままであることを意味する。常にアクティブなフィーチャセル63、64もしくは66の一実施例は、検索基準の第一のフィーチャセル、例えば、フィーチャセル63である。
フィーチャセル63、64もしくは66は、“要求されたときアクティブ”であってもよく、それは、幾つかの先行する条件が一致したとき、例えば、検索基準における先行する検索タームが一致したときに、フィーチャセル63、64もしくは66がアクティブであることを意味する。一実施例は、図6−図8においては、フィーチャセル63によって要求されたときにアクティブであるフィーチャセル64と、フィーチャセル64によって要求されたときにアクティブであるフィーチャセル66とである。
フィーチャセル63、64もしくは66は、“自己アクティブ化”されてもよく、それは、一度アクティブ化されればその検索タームが一致している限り、フィーチャセルが自身をアクティブ化することを意味する。例えば、いかなる数のディジットにでも一致した検索タームを有する自己アクティブ化されたフィーチャセルは、文字“x”に到達するまで、シーケンス“123456xy”を通じてアクティブ化したままであってもよい。自己アクティブ化されたフィーチャセルの検索タームが一致するたび、自己アクティブ化されたフィーチャセルが、検索基準における次のフィーチャセルをアクティブ化してもよい。したがって、常にアクティブなフィーチャセルは、自己アクティブ化するフィーチャセルおよび要求されたときにアクティブなフィーチャセルから形成されてもよい。自己アクティブ化フィーチャセルは、1を格納するメモリセル58の全てにプログラムされてもよく、各ターム後に要求されたときにアクティブなフィーチャセルを繰り返しアクティブ化してもよい。幾つかの実施形態においては、各フィーチャセル63、64および66は、フィーチャセルが常にアクティブかどうかを識別する検出セル68もしくはアクティブ化ルーティングマトリクス36内にメモリセルを含んでもよく、これによって、単一のフィーチャセルから常にアクティブなフィーチャセルを形成する。
図9は、第一の検索基準75および第二の検索基準76に従ってパラレルに検索するように構成された認識モジュール22の一実施例を示す。本実施例においては、第一の検索基準75は、単語“big”を特定し、第二の検索基準76は、単語“cab”を特定する。データストリーム12からの現在のタームを示す信号は、ほぼ同時に各検索基準75および76内のフィーチャセルへと伝えられてもよい。各入力導体37は、検索基準75および76の双方へと及んでいる。その結果、幾つかの実施形態においては、検索基準75および76の双方が、ほぼ同時に現在のタームを評価してもよい。このことによって、検索基準の評価が加速すると考えられる。他の実施形態は、より多くの検索基準をパラレルに評価するように構成されたより多くのフィーチャセルを含んでもよい。例えば、幾つかの実施形態は、パラレルに動作する100、500、1000、5000もしくは10000以上のフィーチャセルを含んでもよい。これらのフィーチャセルは、ほぼ同時に何百もしくは何千もの検索基準を評価してもよい。
異なる個数の検索タームを有する検索基準は、より多くのもしくはより少ないフィーチャセルを検索基準へと割り当てることによって形成されてもよい。単純な検索基準がフィーチャセルの形式で消費するリソースは、複雑な検索基準よりも少ない可能性がある。このことによって、ほぼ同一の多数のコアを有し、複雑な検索基準を評価するように全て構成されたプロセッサと比較して、パターン認識プロセッサ14(図2)のコストを低減すると考えられる。
図10〜図12は、より複雑な検索基準の一実施例とアクティブ化ルーティングマトリクス36の特徴の双方を示す。アクティブ化ルーティングマトリクス36は、複数のアクティブ化ルーティングセル78を含んでもよく、アクティブ化ルーティングセル78のグループは、各フィーチャセル63、64、66、80、82、84および86に関連付けられてもよい。例えば、各フィーチャセルは、5、10、20、50個のもしくはそれ以上のアクティブ化ルーティングセル78を含んでもよい。アクティブ化ルーティングセル78は、先行する検索タームが一致するとき、検索基準における次の検索タームへとアクティブ化信号を送信するように構成されてもよい。アクティブ化ルーティングセル78は、隣接するフィーチャセルもしくは同一のフィーチャセル内の他のアクティブ化ルーティングセル78へとアクティブ化信号をルーティングするように構成されてもよい。アクティブ化ルーティングセル78は、どのフィーチャセルが検索基準における次の検索タームに対応するかを示すメモリを含んでもよい。
図10〜図12に示されるように、認識モジュール22は、単一の単語を特定する基準よりも複雑な検索基準に従って検索するように構成されてもよい。例えば、認識モジュール22は、接頭辞88で開始し、2つの接尾辞90もしくは92のうちの1つで終了する単語を検索するように構成されてもよい。図示されている検索基準は、文字“c”および“l”の配列で開始し、文字配列“ap”もしくは文字配列“oud”のいずれかで終了する単語を特定する。これは、複数の対象表現、例えば、単語“clap”もしくは単語“cloud”を特定する検索基準の一実施例である。
図10においては、データストリーム12は、認識モジュール22に対して文字“c”を与え、フィーチャセル63は両方アクティブであり、一致を検出する。これに応じて、アクティブ化ルーティングマトリクス36は、次のフィーチャセル64をアクティブ化してもよい。アクティブ化ルーティングマトリクス36は、フィーチャセル63が検索基準における第一の検索タームであるとき、フィーチャセル63のアクティブ状態を維持してもよい。
図11においては、データストリーム12は、文字“l”を与える。フィーチャセル64は、一致を検出し、アクティブである。これに応じて、アクティブ化ルーティングマトリクス36は、第一の接尾辞90の第一のフィーチャセル66および第二の接尾辞92の第一のフィーチャセル82の双方へとアクティブ化信号を伝送してもよい。他の実施例においては、より多くの接尾辞がアクティブ化されてもよく、または、複数の接頭辞が1つ以上の接尾辞をアクティブ化してもよい。
続いて、図12に示されるように、データストリーム12は、認識モジュール22に対して文字“o”を与える。第二の接尾辞92のフィーチャセル82は、一致を検出し、アクティブである。これに応じて、アクティブ化ルーティングマトリクス36は、第二の接尾辞92の次のフィーチャセル84をアクティブ化してもよい。フィーチャセル66が非アクティブになることが許可されると、第一の接尾辞90の検索は終了してもよい。図10〜図12に示されたステップは、文字“u”および“d”を通じて継続してもよいし、または、接頭辞88が一致する次の機会まで、検索は終了してもよい。
パターン認識プロセッサ14の実施形態は、フィーチャセル30の(ステートマシンの要素(SME’s)とも呼ばれる)任意の配列を含んでもよい。一実施形態では、図13に示すように、フィーチャセル30は行94に配列されてもよく、各行94は1つ以上のフィーチャセル30を含んでもよい。行94はブロック96にグループ化されてもよく、各ブロック96は1つ以上の行94を含む。パターン認識プロセッサ14は、上記のパターン検索を実装するための任意の数のブロック96を含んでもよい。
上記のように、フィーチャセル30のグループは、1つの検索基準または複数の検索基準を特定する並列有限ステートマシンを形成してもよい。従って、各行94及びブロック96は、1つ以上の検索基準に従ってデータストリームを検索するために、プログラムされ、かつ用いられてもよい。データストリーム12が検索基準に対して検索されるように、上記のパターン検索は、1つ以上のブロック96を介して連続的に進行してもよい。各アクティブなブロック96におけるデータストリームのタームの評価は、検索周期中に実行されてもよい。検索周期は、パターン検索周期と呼ばれる(文字周期とも呼ばれる)パターン認識プロセッサ14のより広い周期の一部であってもよい。各パターン検索周期は、パターン認識プロセッサ14の複数の内部クロック周期を含んでもよい。パターン検索周期は、例えば、以下のイベントを1つ以上含んでもよい:すなわち、データストリーム12から1バイトを入力すること、そのバイトを復号化して対応する入力導体37を駆動すること、プロセッサ14のメモリ(例えば、メモリセル58)を読み出すこと、フィーチャセル30がアクティブかどうか及びデータ読み出しがそれぞれのフィーチャセルに対して一致を示すかどうかを判断すること、一致するフィーチャセルのアクティブ化ルーティングマトリクス36への出力を駆動すること、及び/または、アクティブ化ルーティングマトリクス36から各フィーチャセル30に信号を伝播すること、を含んでもよい。パターン検索周期は、パターン認識プロセッサ14の動作中に実行される他のイベントを更に含んでもよい。
パターン検索周期中においては、ブロック96は、パターン検索周期のいくつかのイベントを含むメモリアクセス周期中にアクセスされてもよい。例えば、メモリアクセス周期は、(フィーチャセル30に“一致”を示すことを提供するため)プロセッサ14のメモリを読み出すこと、プログラミングをテストする目的あるいはプロセッサ14のメモリを検査する目的のためのメモリ読み出しまたは書き込み、及び/または、メモリリフレッシュ周期を含んでもよい。メモリリフレッシュ周期は、ブロックのフィーチャセル30をリフレッシュしてもよい。一実施形態では、パターン認識プロセッサ14のメモリアクセス周期は、パターン検索周期の他のイベントをインターリーブしてもよい。
このような実施形態では、パターン認識プロセッサ14は、パターン検索を実行しているとき、所定のパターン検索周期中にフィーチャセルの“アクティブ”ブロックにアクセスしてもよい。“アクティブ”ブロックとは、所定のパターン検索周期中にそのブロックにプログラムされた検索タームに応じて、データストリームを現在検索しているか、またはこれから検索するブロックを指す。そして、“非アクティブ”ブロックとは、所定のパターン検索周期中にデータストリームを現在検索していないか、またはこれから検索することのないブロックを指す。
動作中に、パターン認識プロセッサ14は、各メモリアクセス周期中にアクティブブロックのフィーチャセル30またはフィーチャセル30のグループにアクセスする。一実施形態では、各メモリアクセス周期中に“非アクティブ”ブロックにアクセスすることによって生じる消費電力を低減するために、各ブロック96は、電源制御回路98に結合されてもよい。電源制御回路98は、各ブロック96のロジック(または各ブロック96とは別のロジック)の一部であってもよい。電源制御回路98は、パターン検索の前、後、または途中において、各ブロック96のアクティブ化(ブロックを“アクティブ”にセットすること)または非アクティブ化(ブロックを“非アクティブ”にセットすること)を制御してもよい。電源制御回路98は、ブロック96のそれぞれの“恒久的な”非アクティブ化を更に制御してもよく、恒久的な非アクティブ化とは、ブロックは非アクティブであるとともにリフレッシュ周期中にリフレッシュされないように、ブロック96を完全に無効(使用不可)にすることを指す。
いくつかの実施形態では、電源制御回路98は、以下の機能を含んでもよい:すなわち、検索対象のデータストリームのアイデンティティ(ID)に基づいてブロックをアクティブ化または(恒久的にまたは一時的に)非アクティブ化する機能;パターン検索がそのブロックに進行する前(例えば、パターン検索が後続のパターン検索周期上でそのブロックにアクセスするとき)にブロックを自動的にアクティブ化する機能;パターン検索がそのブロック内でもはやアクティブでないとき(例えば、ブロックがいずれの後続のパターン検索周期上でも用いられないとき)にブロックを自動的に非アクティブ化する機能;及び、そのブロックがパターン認識プロセッサ14にプログラムされたいずれの有限ステートマシンにおいても用いられない場合にブロックを完全に無効にする機能を含んでもよい。
図14A及び図14Bは、本発明の実施形態に係る、電源制御回路98A〜98Dの電源制御機能を用いるパターン認識プロセッサ14のブロック96A〜96Dの動作を示す。再度図14A及び図14Bに図示しているように、各ブロック96A〜96Dは、ブロックを選択的にアクティブ化または非アクティブ化(一時的にまたは恒久的に)し得るそれぞれの電源制御回路98A〜98Dに結合されている。図14Aに図示するように、パターン検索中に、各ブロック96は、異なる状態を有していてもよい。第一のブロック96Aは、このブロックがパターン認識プロセッサ14の動作中に用いられないかまたはリフレッシュさえされないように、無効にされてもよい。例えば、製造歩留まりの“節約”から、または、現在の検索基準によって使用されないブロックからのうち、いずれか一方から“余分な”ブロックはいずれも、プロセッサ14のステートマシンとしてプログラムされなくてもよい。その結果、例えばブロック96A等のようなブロックは、対応する電源制御回路98Aによって無効にされてもよい。無効にされた後、ブロック96Aは、無効であるとともに、メモリアクセス周期のリフレッシュ中にリフレッシュされない。
前述のように、電源制御回路98は、検索対象のデータストリーム(例えば、HTTP、FTP、SMTP、DNS等)のアイデンティティに基づいてブロックをアクティブ化または非アクティブ化する機能を更に含んでもよい。図14Aに図示するパターン検索中に、第二のブロック96Bは、検索対象のデータストリームのアイデンティティに基づいて非アクティブ化されてもよい。この実施例では、各ブロックのプログラムされたステートマシンは、特定の種類のプロトコル、言語、または他のデータ識別子のパターン検索のためにプログラムされてもよい。このようにして識別されるデータは、これらに限定されるものではないが、データ転送プロトコル(例えば、HTTP、FTP、SMTP、DNS等)自然言語、遺伝的識別子等を含んでもよい。例えば、インターネットセキュリティを対象とする一実施形態では、ブロック96Bのステートマシンは、FTPデータのパターンを検索するためにプログラムされてもよい。ステートマシン96C及び96Dは、HTTPデータのパターンを検索するためにプログラムされてもよい。一旦着信パケットプロトコルが(例えばパケットヘッダに基づいて)識別されると、HTTPデータを検索するためにプログラムされたそれらのステートマシンのみが用いられてもよい。こうして、ブロック96Bは、HTTPパケットが電源制御回路98Bによって処理されている時間中は、非アクティブ化されてもよい。ブロック96Bは、パターン検索周期に用いられないように、非アクティブ化されてもよい。しかしながら、ブロック96Bは、恒久的に無効化されるものではなく、データストリームがFTPデータとして識別されるとき等にはなお、リフレッシュして他のパターン検索の使用に利用可能である。データストリームの種類が変化する場合には、ブロック96Bは、対応する電源制御回路98Bによってアクティブ化されてもよい。更に以下に記載するように、ブロックは、データストリーム12のアイデンティティに基づいて異なる“パーティション”にグループ化されてもよい。パーティションとは、特定の種類のデータを検索するためにプログラムされたブロックのグループを指す。例えば、ブロック96Bは、他のブロックとともに、FTPデータを検索するためのパーティションにグループ化されてもよい。同様に、ブロック96C及び96Dは、他のブロックとともに、HTTPデータを検索するパーティションにグループ化されてもよい。パーティショングループ化は、ブロックのグループをデータストリーム12に基づいてアクティブ化または非アクティブ化することを可能にする。
更に、上記の電源制御回路は、パターン検索がそのブロックに進行する前にブロックを非アクティブ化したり、パターン検索がもはやそのブロックにおいてはアクティブでないときにブロックを非アクティブ化したりしてもよい。図14A及び図14Bのブロック96C及び96Dは、ブロック96Cからブロック96Dへと進むパターン検索に基づくアクティブ化及び非アクティブ化を示す。図14Aは、第一のパターン検索周期中等のブロック96Cにおいて進行中のパターン検索を示す。パターン検索では、ブロック96Cのステートマシン(フィーチャセル30のグループ)にプログラムされた検索基準に従ってデータストリームのタームが評価されてもよい。ブロック96Cは、パターン検索の間は目下使用中であるため、“アクティブ”である。図14Aに図示するように、ブロック96Dは、メモリアクセス周期中にはアクセスされないよう非アクティブ化して、プロセッサ14の消費電力を低減させてもよい。“始動”ターム(例えば、パターンの開始等)がブロック96Dにプログラムされない場合、パターン検索シーケンスがブロック96Dに進行するまで、ブロック96Dは非アクティブ化されてもよい。
図14Bは、パターン検索がブロック96Cからブロック96Dへと進むときの、パターン認識プロセッサ14の後続のパターン検索周期を示す。パターン検索は、データストリームがパターンに対して検索されるように、ブロック96Cからブロック96Dへと“クロスオーバー”してもよい。“クロスオーバー”とは、パターン検索が順次進行している間に、第一のブロックから第二のブロックへと進行することを指す。パターン検索は、もはやブロック96Cではアクティブではなく、現在は、ブロック96Dでアクティブである。ブロック96Cが非アクティブとして検出されると、別のパターン検索がブロック96Cに進行するまで、電力制御回路96Cは、ブロック96Cを非アクティブ化してもよい。電力制御回路96Dは、パターン検索がブロック96Dに進行する前にブロック96Dをアクティブ化してもよい。このように、ブロック96Dは、予測的な“必要に応じた”基準に基づいてアクティブ化される。以下に更に記載されるように、電源制御回路98D及び/またはブロック96Dは、パターン検索がブロック96Dに到達して次のパターン検索周期前にブロック96Dをアクティブ化しそうなときを検出してもよい。このように、パターン検索シーケンスは、フィーチャセルの各ブロックを介して継続するにつれて、それらが必要とされるよう、非アクティブなブロックを非アクティブ化し、これから予定されるブロックをアクティブ化してもよい。
更に、他の実施形態は、パターン検索がそのブロックを介して進行する前、途中、または後に、ブロックのアクティブ化または非アクティブ化に影響を与える特別な検索基準を含んでもよい。このような特別な検索基準は、アスタリスク(*)、疑問符(?)、及び/または、プラス記号(+)等の正規表現(RegEx)演算子を含んでもよい。例えば、データストリームのタームの終わりまで全てのどんなものとでも一致することを指定するアスタリスク(“*”)演算子は、一度アクティブ化されたブロックがデータストリームのタームの終わりまで常にアクティブであることを指定するアクティブ化コマンドによって実装されてもよい。任意の特別な検索基準は、それらの特別な検索基準に好適なアクティブ化または非アクティブ化スキームを指定することによって上述の電源制御技術に実装されてもよい。
パターン認識プロセッサ14の各ブロックは、上記の電源制御技術を提供するために、信号及び/またはコンフィギュレーション・ビットを含んでもよい。例えば、電源制御回路に加えて、各ブロックは、行が“アクティブ”なフィーチャセルを含むことを示す信号、及び/または、ブロックがパターン検索シーケンスにおいて次のフィーチャセルを含むことを示す信号を生成するロジックを含んでもよい。更に、ブロックは、様々な制御及びコンフィギュレーション信号を送信または受信するように構成されたロジックを含んでもよい。これらの制御及びコンフィギュレーション信号は、以下を含んでもよい:すなわち、ブロックが現在のデータストリームに使用されていることを示すこと(ブロックのアクティブ/非アクティブ);始動タームを示すこと;上述の特別な検索基準用等の一時アクティブ化/常時アクティブ化信号;リフレッシュ信号;及び、ブロック・フロー・イネーブル信号を含んでもよい。
上記の選択的アクティブ化及び非アクティブ化スキームは、特定のブロックが無効かどうかを示してもよく(例えば、ブロックがいつか使用される場合)、ブロックが現在使用されるべきグループの一部かどうかを示してもよく、ブロックがパターンの“開始”のフィーチャセルを含むかどうかを示してもよく、パターン検索シーケンス中に必要なブロックをアクティブ化してもよい。いくつかの実施形態では、ブロックのウェイクアップスキームを実装するために、ブロック96は、ブロックのステータスを示すためのコンフィギュレーション・ビットまたは他のデータ・インディケータを含んでもよい。これらのビットは、ここで説明した様々な制御信号によって変更されてもよい。例えば、ブロック96は、そのブロックが無効であるか否かを示す1以上のコンフィギュレーション・ビットを含んでもよい。前述したように、いくつかの実施形態では、各パーティションが特定の種類のデータストリームのために使用されるべきブロックを含むように、ブロック96をパーティションにグループ化してもよい。このような実施形態では、各ブロックは、それぞれのブロックが属するパーティションを示すための1以上のコンフィギュレーション・ビットを含んでもよい。更に、各ブロック96は、パターンの“開始”(例えば、始まり)を含むフィーチャセル30をブロックが含むか否かを示す1以上のコンフィギュレーション・ビットを含んでもよい。このようなブロックは、そのパーティションを用いる所定のパターン検索シーケンス中、常にアクティブであってもよい。更に、このような実施形態では、パーティション内の全ての他のブロックは、上記のように選択的にアクティブ化及び非アクティブ化されてもよい。
図15は、本発明の実施形態に係る、電源制御回路98の論理回路図を示す。電源制御回路98は、ブロックがアクティブであるべきとき、一度アクティブ化されたブロックが一時的に非アクティブ化されるべきとき、及び、ブロックが恒久的に非アクティブ化(すなわち、リフレッシュ周期要求に応答しないように無効に)されるべきときを決定してもよい。
電源制御回路98は、“ブロック・スティル・アクティブ・センス(Block Still Active Sense)”コンポーネント100、ANDゲート102、ORゲート104、再トリガ可能非アクティブ化タイマー106、及び、“ブロック_アクティブ(Block_Active)”信号を出力するORゲート108を含んでもよい。電源制御回路98は、ブロック・ウェイクアップ・スキーム110から“ブロック_アクティブ化(Block_Activate)”信号を受信してもよい。ブロック・ウェイクアップ・スキームは、例えば、特定のブロックが無効かどうかを示してもよく(例えば、ブロックが使用される都度)、ブロックが現在使用されるべきグループの一部かどうかを示してもよく、ブロックがパターンの“開始”のフィーチャセルを含むかどうかを示してもよく、パターン検索シーケンス中に必要に応じてブロックをアクティブ化してもよい。ブロック・スティル・アクティブ・センス・コンポーネント100は、ブロックが依然アクティブかどうかを示すブロックからの信号を、(このような検出によって提供される分析に応じて)受信及びまたは検出してもよい。例えば、ブロック・スティル・アクティブ・センス・コンポーネントは、アクティブなフィーチャセル30、行94、またはブロック96の他のアクティビティを受信または検出し、例えば、ブロックの行が依然アクティブであることを示す行_アクティブ(Row_Active)信号等を出力してもよい。
一実施形態では、電力制御回路は、電源制御回路は、以下の表1に記載されるように、5つの信号によって制御され、構成されてもよい。
Figure 2013513893
ブロック_オン/オフ(Block_On/Off)信号、開始_SME(Start_SME)信号、及び不定_SME(Indefinite_SME)信号の状態は、パターン認識プロセッサ14を動作するソフトウェアコンパイラを介して決定されてもよく、パターン認識プロセッサ14の他のロジックコンポーネントを介して生成されてもよい。例えば、ブロック_オン/オフ信号、開始_SME信号、及び不定_SME信号は、プログラミング及び制御ロジック112から生成されてもよい。ソフトウェアコンパイラは、パターン認識プロセッサにプログラムされた異なる有限ステートマシンの配置及びルーティングに基づいて電源設定を指定してもよい。これらの信号は、プロセッサ14にプログラムされた検索基準の一部として設定されてもよく、動作中に変更されなくてもよい。
ブロック_オン/オフは、上記のように、パターン検索の進行中にブロックをアクティブ化または非アクティブ化するために用いられてもよい。フロー_イネーブル(Flow_Enable)信号もまた、コンパイラによって決定されてもよく、データを処理する有限ステートマシンに応じて、プロセッサ14の動作中に変更されてもよい。ソフトウェアコンパイラは、どの有限ステートマシンが必要とされるか(そして、従って、どのブロックが必要とされるか)を決定してもよく、かつ、フロー_イネーブル信号がデータストリームのためのブロックをアクティブ化または非アクティブ化するように設定してもよい。フロー_イネーブル信号は、データストリームの識別子を解釈でき、適切なフロー_イネーブル信号を提供することができるフロー管理ロジック114から生成されてもよい。例えば、上述のように、有限ステートマシンのいくつかのブロックは、その目的のためにプログラムされていない他のブロックが非アクティブ化され得るように、特定のプロトコルまたは言語で使用するためにプログラムされてもよい。
リフレッシュ_周期(Refresh_Cycle)信号は、パターン認識プロセッサ14の動作中にフィーチャセル30をリフレッシュするリフレッシュ管理ロジック116によって生成されてもよい。リフレッシュ_周期信号のアサーションは、パターン検索またはパターン認識プロセッサ14の他の動作とは独立して設定されてもよい。上述の図14A及び図14Bで説明したブロック96A等のように、ブロックがパターン認識プロセッサ14の動作中に決して使用されることがない場合、リフレッシュ_周期信号はそのブロックに対して無効にされてもよく、このようにして、メモリアクセス周期中にそのブロックの任意のリフレッシュ周期を無効にするとともに、そのリフレッシュ動作のための消費電力を排除することができる。
リフレッシュ_周期、ブロック_オン/オフ信号、開始_SME信号、及び、フロー_イネーブル信号は、ANDゲート102または他のロジックコンポーネントを通過されてもよい。例えば、リフレッシュ_周期信号及びブロック_オン/オフ信号は、リフレッシュ_アクセス(Refresh_Access)信号をORゲート108に出力する第一のANDゲート102Aに提供されてもよく、リフレッシュ_アクセス信号は、ブロックがリフレッシュされることを示す。ブロック_オン/オフ信号及び開始_SME信号は、 “強制_ブロック_イネーブル(Force_Block_Enable)”信号をORゲート108に出力する第二のANDゲート102Bに提供されてもよく、強制_ブロック_イネーブル信号は、ブロックが、始動検索タームを含み、アクティブであるべきことを示す。ブロック_アクティブ化信号及びフロー_イネーブル信号は、条件付_ブロック_イネーブル_開始(Conditional_Block Enable_Start)信号を再トリガ可能非アクティブ化タイマー106に出力する第三のANDゲート102Bに提供されてもよい。
更に、ウェイクアップスキーム110からのブロック_アクティブ化信号、プログラミング及び制御ロジック114からの不定_SME信号、及び、ブロック・スティル・アクティブ・センス・コンポーネント112からの行_アクティブ信号は、アクティビティ_再トリガ(Activity_Re−Trigger)信号を再トリガ可能非アクティブ化タイマー106に出力する第二のORゲート104に提供されてもよい。
再トリガ可能非アクティブ化タイマー106は、電源制御回路98が、ブロックを非アクティブ化する前にパターン認識プロセッサ14のアーキテクチャで遅延時間を考慮することができるようにする。再トリガ可能非アクティブ化タイマー106は、条件付_ブロック_イネーブル_開始信号及びアクティビティ_再トリガ信号を受信してもよく、かつ、それらの信号に基づいて遅延を提供してもよい。再トリガ可能非アクティブ化タイマー106は、時間_ブロック_イネーブル(Time_Block_Enable)信号をORゲート108に出力してもよい。
再トリガ可能非アクティブ化タイマー106は、指定した持続時間中、ブロックが非アクティブ化しないようにしてもよい。持続時間は、時間または周期の単位で決定されてもよい。パワー認識プロセッサ14の任意の所定のアーキテクチャに対し、ブロックのフィーチャセルのアクティブ/非アクティブ状態の検出は、そのアーキテクチャによって提供される周期分解に制限されてもよい。例えば、4つのパターン検索周期の分解でブロックのアクティブなフィーチャセルを検出する機能を有する実施形態では、最後の“アクティブ”状態が検出されてから、4つのパターン検索周期が生じた後にのみ、再トリガ可能非アクティブ化タイマー106がそのブロックの非アクティブ化を許可してもよい。
ブロックがパターン検索中にアクセスされるたびに、再トリガ可能非アクティブ化タイマー106は、ブロックのパターン検索の完了を許可するようにリセットされてもよい。上述の実施例では、ブロックが再びアクティブになった後、ブロックが非アクティブ化され得る前に4つのパターン検索周期の別な遅延が提供されるように、再トリガ可能非アクティブ化タイマー106がリセットされてもよい。いくつかの実施形態では、再トリガ可能非アクティブ化タイマー106はまた、ブロックがアクティブのままであるべきかどうか決定するために用いられる信号の生成を引き起こす遅延を考慮するように構成されてもよい。例えば、再トリガ可能非アクティブ化タイマー106が補償するために遅延を追加するように構成され得るように、行_アクティブ信号は、生成及び伝播することが比較的遅くなってもよい。この方法では、ブロックのステータスの検出の任意の分解は、所期の時間遅延及びリセットを再トリガ可能非アクティブ化タイマー106に導入することによって考慮されてもよい。
更に、再トリガ可能非アクティブ化タイマー106は、パターン認識プロセッサ14の動作を害する虞があるブロックの早まった非アクティブ化を可能にすることとは反対に、パターン検索中に必要とされるときにブロックがアクティブであることを保証するように構成されてもよいことが理解されるべきである。対照的に、ブロックのアクティブ化時間は、ブロックが次のパターン検索周期の時間にアクティブであることを保証するのに十分であってもよい。一実施形態では、パターン認識プロセッサ14は、上記の図14Bで説明したように、パターン検索を第一のブロックからフィーチャセルの別なブロックにクロスオーバーさせることができる信号を含んでもよい。
受信した信号に基づいて、再トリガ可能非アクティブ化タイマー106は、タイマー_ブロック_イネーブル(Timer_Block_Enable)信号をORゲート108に出力する。このように、図15に示すように、再トリガ可能非アクティブ化タイマー106は、フロー管理ロジック、ウェイクアップロジック、プログラミング及びコンフィギュレーション・ロジック、及びブロック・スティル・アクティブ・センス・コンポーネントから受信した信号に基づいてトリガまたは“再トリガ”してもよい。
電源制御回路の出力は、リフレッシュ_アクセス信号、強制_ブロック_イネーブル_BX(Force_Block_Enable_BX)信号、またはタイマー_ブロック_イネーブル信号に基づいて信号をアクティブ化または非アクティブ化するブロック_アクティブ信号である。このように、様々な制御信号に基づいて、ブロック_アクティブ信号は、ブロックがリフレッシュされるべきか、データストリームに有効であるか、データストリームにアクティブかまたは非アクティブか、“一度アクティブ化され、常にアクティブ”な検索基準の一部であるか等に基づいて、ブロックをアクティブ化または非アクティブ化してもよい。
上述のように、電源制御回路98によって制御されるブロックは、パターン検索シーケンスがフィーチャセルの(クロスオーバーしている)そのブロックに進行するにしたがって、次のパターン検索の時間にアクティブ化されるべきである。“非パイプライン化アーキテクチャ”を有するいくつかの実施形態では、ブロックのアクティブ化は、パターン検索が次のブロックにクロスオーバーするときを示す同じクロスオーバー信号に依存してもよい。しかしながら、パターン認識プロセッサ14の“パイプライン化”アーキテクチャ等の他の実施形態では、パターン検索周囲のイベントは、メモリアクセス周期によりインターリーブされる。このような実施形態では、ブロックの現在のパターン検索の完了前に、次のメモリアクセス周期が開始する。これらの実施形態では、パターン検索シーケンスの次のブロックが次のパターン検索及びそのブロックのクロスオーバーの時間に確実にアクティブ化されているように、プレディカティブ・アクティブ化スキームを用いてもよい。
図16は、本発明の実施形態に係る、パターン認識プロセッサ14の予測アクティブ化スキームを示す図である。プレディカティブ・アクティブ化スキームは、現在のブロックのパターン検索が特定の状態に進行するときはいつでもパターン検索シーケンスの次のブロックに送信される“早期アクティブ”信号を生成してもよい。
図16は、第一のブロック118A及び第二のブロック118B間のパターン検索を示す。図18に示すように、第一のブロック118Aは、検索基準に応じてデータストリームを検索するように構成されるブロック118Aのプログラムされたステートマシン(フィーチャセルのグループ)を含んでもよい。第一のパターン検索周期中、例えば、ブロック118Aはアクティブであってもよく、ブロック118Bは非アクティブでもよい。パターン検索がブロック118Aを通じて進行するにつれ、ブロックの状態は、異なる検索タームまたは基準(例えば、文字)がブロック118Aで一致するように、状態Aから、状態Bに、及び状態Cに変化してもよい。(状態Cによって示されるように)ブロック118Aの処理が完了すると、パターン検索が次のパターン検索周期のためにブロック118Bまでクロスオーバーすることを示すために、“クロスオーバー”信号が信号生成ロジック120によって生成されるとともに、ブロック118Aからブロック118Bに提供されてもよい。
ブロック118Aの処理中に、“アクティブ化_ネクスト_ブロック(activate_next_block)”信号が、第二の信号生成ロジック122によって生成されて、ブロック118Aの別な状態に基づいてブロック118Aからブロック118Aに提供されてもよい。例えば、図16に示すように、アクティブ化_ネクスト_ブロック信号は、ブロック118Bがパターン検索中に状態Bに進行するときに生成されてもよい。このように、アクティブ化_ネクスト_ブロック信号は、クロスオーバー信号よりも早期の状態にあるときに生成されてもよい。ブロック118Aからのアクティブ化_ネクスト_ブロック信号は、ブロック118Bのブロック・アクティブ化ロジック124によって受信されてもよい。ブロック・アクティブ化ロジック122は、受信したアクティブ化_ネクスト_ブロック信号に応答してブロック118Bをアクティブ化してもよい。ブロック118Bは、その後、パターン検索がブロック118Bまでクロスオーバーするときに(例えば、ブロック118Bがブロック118Aから提供されたクロスオーバー信号を受信するときに)、応答する準備がなされてもよい。信号生成ロジック120及び信号生成ロジック122は、両方の信号を生成するために、ブロック118Aの異なる状態で応答するようにプログラムされた同一のロジックであってもよい。
アクティブ化_ネクスト_ブロック信号は、ブロック118Bがパターン検索のクロスオーバーのための時間にアクティブ化されることを保証するために、ブロック118Aの任意の状態において生成されてもよい。例えば、アクティブ化_ネクスト_ブロック信号は、パターン認識プロセッサ14のアーキテクチャに応じて、状態Aで、またはブロック118Aの任意のより早期の状態で生成されてもよい。必要とされるより早期にブロック118Bをアクティブ化することは、消費電力を僅かに増加させる場合があるが、パターン検索シーケンスに影響を与えないことが理解されるべきである。アクティブ化_ネクスト_ブロック信号を受信した後、受信ブロック118Bは、全てのメモリ周期への応答を開始してもよい。しかし、メモリアクセスが各メモリ周期上で実行されても、ブロック118Bを用いるパターン検索は、クロスオーバー信号が受信されるまで、次のパターン検索周期上で実行されなくてもよい。
図17は、本発明の実施形態に係る、ブロックにおいてアクティブ化_ネクスト_ブロック信号を処理するための論理図を示す。ブロックは、ブロックインデックスライン(BX)及びブロック結合インデックスライン(BCX)を介して信号を送信及び受信するバス124に結合されてもよい。一実施形態では、1つの入力がブロックをアクティブ化するために指定され、別の入力がパターンシーケンス(例えば、パターン検索シーケンスの進行中に1つのブロックから別のブロックへのクロスオーバー)を示すために用意されてもよい。BX信号は、複数のANDゲート126に提供されてもよい。ブロックイネーブルアクティブ化信号もまた、対応するBX信号の提供を受ける各ANDゲート126に提供されてもよい。ANDゲート126の出力は、ブロックをアクティブ化するための“ブロック・アクティブ化”信号を出力するORゲート128に提供されてもよい。
この方法では、ANDゲート126は、ブロックをアクティブ化するためには用いられず、適切なアクティブ化信号が、ORゲート128から出力されるブロック_アクティブ化信号を受信するブロックをアクティブ化させることを可能とするのみの入力信号を“マスク”してもよい。図17に図示したように、ブロックをアクティブ化することができる複数のパス(例えば、複数の信号)があってもよい。
上記のロジックは、ブロック内のフィーチャセルの数、行内のフィーチャセルの数、アクティブなブロックを検出する能力の粒度等のパターン認識プロセッサ14の特性に基づいて、幾分異なる設定を有する場合があることが理解されるべきである。
再トリガ可能非アクティブ化タイマー106は、指定した持続時間中、ブロックが非アクティブ化しないようにしてもよい。持続時間は、時間または周期の単位で決定されてもよい。パターン認識プロセッサ14の任意の所定のアーキテクチャに対し、ブロックのフィーチャセルのアクティブ/非アクティブ状態の検出は、そのアーキテクチャによって提供される周期分解に制限されてもよい。例えば、4つのパターン検索周期の分解でブロックのアクティブなフィーチャセルを検出する機能を有する実施形態では、最後の“アクティブ”状態が検出されてから、4つのパターン検索周期が生じた後にのみ、再トリガ可能非アクティブ化タイマー106がそのブロックの非アクティブ化を許可してもよい。
上述のように、電源制御回路98によって制御されるブロックは、パターン検索シーケンスがフィーチャセルの(クロスオーバーしている)そのブロックに進行するにしたがって、次のパターン検索の時間にアクティブ化されるべきである。“非パイプライン化アーキテクチャ”を有するいくつかの実施形態では、ブロックのアクティブ化は、パターン検索が次のブロックにクロスオーバーするときを示す同じクロスオーバー信号に依存してもよい。しかしながら、パターン認識プロセッサ14の“パイプライン化”アーキテクチャ等の他の実施形態では、パターン検索周囲のイベントは、メモリアクセス周期によりインターリーブされる。このような実施形態では、ブロックの現在のパターン検索の完了前に、次のメモリアクセス周期が開始する。これらの実施形態では、パターン検索シーケンスの次のブロックが次のパターン検索及びそのブロックのクロスオーバーの時間に確実にアクティブ化されているように、予測アクティブ化スキームを用いてもよい。
図16は、本発明の実施形態に係る、パターン認識プロセッサ14の予測アクティブ化スキームを示す図である。予測アクティブ化スキームは、現在のブロックのパターン検索が特定の状態に進行するときはいつでもパターン検索シーケンスの次のブロックに送信される“早期アクティブ”信号を生成してもよい。
図16は、第一のブロック118A及び第二のブロック118B間のパターン検索を示す。図16に示すように、第一のブロック118Aは、検索基準に応じてデータストリームを検索するように構成されるブロック118Aのプログラムされたステートマシン(フィーチャセルのグループ)を含んでもよい。第一のパターン検索周期中、例えば、ブロック118Aはアクティブであってもよく、ブロック118Bは非アクティブでもよい。パターン検索がブロック118Aを通じて進行するにつれ、ブロックの状態は、異なる検索タームまたは基準(例えば、文字)がブロック118Aで一致するように、状態Aから、状態Bに、及び状態Cに変化してもよい。(状態Cによって示されるように)ブロック118Aの処理が完了すると、パターン検索が次のパターン検索周期のためにブロック118Bまでクロスオーバーすることを示すために、“クロスオーバー”信号が信号生成ロジック120によって生成されるとともに、ブロック118Aからブロック118Bに提供されてもよい。
ブロック118Aの処理中に、“アクティブ化_ネクスト_ブロック(activate_next_block)”信号が、第二の信号生成ロジック122によって生成されて、ブロック118Aの別な状態に基づいてブロック118Aからブロック118Bに提供されてもよい。例えば、図16に示すように、アクティブ化_ネクスト_ブロック信号は、ブロック118Bがパターン検索中に状態Bに進行するときに生成されてもよい。このように、アクティブ化_ネクスト_ブロック信号は、クロスオーバー信号よりも早期の状態にあるときに生成されてもよい。ブロック118Aからのアクティブ化_ネクスト_ブロック信号は、ブロック118Bのブロック・アクティブ化ロジック124によって受信されてもよい。ブロック・アクティブ化ロジック122は、受信したアクティブ化_ネクスト_ブロック信号に応答してブロック118Bをアクティブ化してもよい。ブロック118Bは、その後、パターン検索がブロック118Bまでクロスオーバーするときに(例えば、ブロック118Bがブロック118Aから提供されたクロスオーバー信号を受信するときに)、応答する準備がなされてもよい。信号生成ロジック120及び信号生成ロジック122は、両方の信号を生成するために、ブロック118Aの異なる状態で応答するようにプログラムされた同一のロジックであってもよい。

Claims (36)

  1. パターン認識プロセッサの複数のブロックを用いてデータストリームのパターンを検索するための方法であって、各ブロックは複数のフィーチャセルを含み、
    パターン検索が第一のブロック内でもはやアクティブでないとき、第一のブロックを非アクティブ化することを含む方法。
  2. 第二のブロックがパターン検索のためにアクティブ化されるように、前記パターン検索が第二のブロックに進行する前に、第二のブロックをアクティブ化することを含む、請求項1に記載の方法。
  3. 前記複数のブロックのうち1つ以上が、前記複数のフィーチャセルからプログラムされた複数のステートマシンを含む、請求項1に記載の方法。
  4. 前記ブロックがプログラムされたステートマシンを含まない場合、第三のブロックを無効にすることを含む、請求項3に記載の方法。
  5. 前記第二のブロックのアクティブ化を引き起こすために、前記第一のブロックから前記第二のブロックに第一の信号を提供することを含む、請求項1に記載の方法。
  6. 前記第一の信号は、前記第一のブロックの状態に基づく、請求項5に記載の方法。
  7. 前記パターン検索のクロスオーバーを示すために、前記第一のブロックから前記第二のブロックに第二の信号を提供することを含む、請求項5に記載の方法。
  8. 前記第二の信号は、前記第一のブロックの状態に基づく、請求項7に記載の方法。
  9. 前記パターン検索が、前記第二のブロック内でもはやアクティブでないとき、前記第二のブロックを非アクティブ化することを含む、請求項1に記載の方法。
  10. 前記ブロックが前記パターン検索の残りの部分のために常にアクティブであるように、前記第二のブロックをアクティブ化することを含む、請求項1に記載の方法。
  11. 第一のパターン検索周期において第一のブロックのデータストリームのパターンを検索することと、
    前記第一のブロックから第二のブロックに第一の信号を提供することであって、前記第一の信号は第二のパターン検索周期のための前記第二のブロックをアクティブ化することと、
    前記第二のパターン検索周期において前記第二のブロックのデータストリームのパターンを検索することを可能にするために、前記第一のブロックから前記第二のブロックに第二の信号を提供することと
    を含む方法。
  12. 前記第一の信号を提供することは、前記パターン検索が前記第一のブロック内で第一の状態に進行するときに、前記第一の信号を提供することを含む、請求項11に記載の方法。
  13. 前記第二の信号を提供することは、前記パターン検索が前記第一のブロック内で第二の状態に進行するときに、前記第二の信号を提供することを含む、請求項11に記載の方法。
  14. パターン認識プロセッサを含むデバイスであって、前記パターン認識プロセッサは、
    1つ以上のブロックが複数のステートマシンのうち1つ以上を含む、複数のブロックと、
    各電力制御回路は前記複数のブロックのそれぞれに結合され、各電力制御回路は前記それぞれのブロックをアクティブ化及び非アクティブ化するように構成されている、複数の電力制御回路と
    を含む、デバイス。
  15. 各前記電源制御回路は、前記複数のブロックのそれぞれをアクティブ化するための信号を提供する、請求項14に記載のデバイス。
  16. 各前記電源制御回路は、データストリームの識別に基づいてそれぞれのブロックを非アクティブ化するように構成されている、請求項14に記載のデバイス。
  17. 各前記電源制御回路は、ブロックがプログラムされた状態要素を含まない場合、それぞれのブロックを無効にするように構成されている、請求項14に記載のデバイス。
  18. 各前記電源制御回路は、それぞれのブロックのメモリリフレッシュを無効にするように構成されている、請求項14に記載のデバイス。
  19. 各前記電源制御回路は、パターン検索の進行に基づいて、それぞれのブロックをアクティブ化するように構成されている、請求項14に記載のデバイス。
  20. 各前記電源制御回路は、それぞれのブロックのステータスの判定に基づいて、それぞれのブロックの非アクティブ化を遅延させるように構成されたタイマーコンポーネントを含む、請求項14に記載のデバイス。
  21. 前記タイマーコンポーネントは、前記それぞれのブロックのステータスの判定に基づいて、リセットを行うように構成されている、請求項20に記載のデバイス。
  22. パターン認識プロセッサを含むデバイスであって、前記パターン認識プロセッサは、
    第一の複数のフィーチャセルの第一のブロックと、
    第二の複数のフィーチャセルの第二のブロックと
    を含み、前記第一のブロックは、
    前記第二のブロックが第二のパターン検索周期のためにアクティブ化されるように、第一のパターン検索周期中に前記第二のブロックをアクティブ化するように構成された第一のロジックと、
    パターン検索を前記第一のブロックから前記第二のブロックへとクロスオーバーさせるように構成された第二のロジックと
    を含む、デバイス。
  23. 前記第一のロジックは、前記第一のパターン検索周期中に前記第一のブロックの第一の状態に基づいて、前記第二のブロックをアクティブ化するように構成されている、請求項22に記載のデバイス。
  24. 前記第二のロジックは、前記第一のブロックの第二の状態に基づいて、前記パターン検索をクロスオーバーするように構成されている、請求項22に記載のデバイス。
  25. 前記第一のブロックは、前記第一のブロックがアクティブであることを示すように構成された第三のロジックを含む、請求項22に記載のデバイス。
  26. 前記第二のブロックは、前記第二のブロックが前記パターン検索シーケンスにおいて次であることを示すように構成された第四のロジックを含む、請求項22に記載のデバイス。
  27. 複数のプログラムマブルなステートマシンの要素と
    パターン検索の進行に基づいて、前記パターン検索中に前記複数の要素を選択的にアクティブ化するように構成されている電力制御回路と
    を含むパターン認識プロセッサ。
  28. ステートマシンの要素のブロックを含む、請求項27に記載のパターン認識プロセッサ。
  29. 前記電力制御回路は前記ブロックのロジックの一部である、請求項28に記載のパターン認識プロセッサ。
  30. 前記電力制御回路は前記ブロックのロジックから分離している、請求項30に記載のパターン認識プロセッサ。
  31. 複数のステートマシンとしてプログラムされた検索基準に従ってデータストリームを検索する方法であって、
    前記パターン検索が前記複数のステートマシンのうち第一の1つ以上に進行する前に、ブロックの前記複数のステートマシンのうち前記第一の1つ以上をアクティブ化することと、
    前記パターン検索が前記ブロック内でもはやアクティブでないという判定に基づいて、前記複数のステートマシンのうちの前記第一の1つ以上を非アクティブ化することと
    を含む方法。
  32. 前記データストリームの識別子を判定することを含む、請求項31に記載の方法。
  33. 前記識別子に基づいて、前記複数のステートマシンのうち第二の1つ以上を非アクティブ化することを更に含む、請求項32に記載の方法。
  34. 前記識別子は、インターネット転送プロトコル、自然言語、または遺伝的識別子を含む、請求項32に記載の方法。
  35. 複数のプログラマブルなステートマシンの要素と
    パターン検索の進行に基づいて、前記パターン検索中に前記複数の要素を選択的に非アクティブ化するように構成されている電力制御回路と
    を含むパターン認識プロセッサ。
  36. 複数のプログラマブルなステートマシンの要素と
    パターン検索のデータストリームの識別に基づいて、前記パターン検索中に前記複数の要素を選択的に非アクティブ化するように構成されている電力制御回路と
    を含むパターン認識プロセッサ。
JP2012544611A 2009-12-15 2010-12-07 パターン認識プロセッサにおける消費電力を低減させるための方法及び装置 Active JP5923449B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/638,751 2009-12-15
US12/638,751 US9501705B2 (en) 2009-12-15 2009-12-15 Methods and apparatuses for reducing power consumption in a pattern recognition processor
PCT/US2010/059307 WO2011081798A1 (en) 2009-12-15 2010-12-07 Methods and apparatuses for reducing power consumption in a pattern recognition processor

Publications (2)

Publication Number Publication Date
JP2013513893A true JP2013513893A (ja) 2013-04-22
JP5923449B2 JP5923449B2 (ja) 2016-05-24

Family

ID=43877160

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012544611A Active JP5923449B2 (ja) 2009-12-15 2010-12-07 パターン認識プロセッサにおける消費電力を低減させるための方法及び装置

Country Status (7)

Country Link
US (3) US9501705B2 (ja)
EP (1) EP2513840A1 (ja)
JP (1) JP5923449B2 (ja)
KR (1) KR102004290B1 (ja)
CN (1) CN102741859B (ja)
TW (1) TWI465945B (ja)
WO (1) WO2011081798A1 (ja)

Families Citing this family (39)

* 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
US20100174887A1 (en) 2009-01-07 2010-07-08 Micron Technology Inc. Buses for Pattern-Recognition Processors
US9323994B2 (en) 2009-12-15 2016-04-26 Micron Technology, Inc. Multi-level hierarchical routing matrices for pattern-recognition processors
US8766666B2 (en) 2010-06-10 2014-07-01 Micron Technology, Inc. Programmable device, hierarchical parallel machines, and methods for providing state information
US8601013B2 (en) 2010-06-10 2013-12-03 Micron Technology, Inc. Analyzing data using a hierarchical structure
JP5763783B2 (ja) 2011-01-25 2015-08-12 マイクロン テクノロジー, インク. 正規表現をコンパイルするための方法および装置
US8843911B2 (en) 2011-01-25 2014-09-23 Micron Technology, Inc. Utilizing special purpose elements to implement a FSM
US8788991B2 (en) 2011-01-25 2014-07-22 Micron Technology, Inc. State grouping for element utilization
KR101607736B1 (ko) 2011-01-25 2016-03-30 마이크론 테크놀로지, 인크. 오토마톤의 진입 차수 및/또는 진출 차수를 제어하기 위한 양화 언롤링
US8799188B2 (en) * 2011-02-08 2014-08-05 International Business Machines Corporation Algorithm engine for use in a pattern matching accelerator
US8639875B1 (en) * 2011-09-06 2014-01-28 Netlogic Microsystems, Inc. Content search system having multiple pipelines
US8593175B2 (en) 2011-12-15 2013-11-26 Micron Technology, Inc. Boolean logic in a state machine lattice
US8782624B2 (en) 2011-12-15 2014-07-15 Micron Technology, Inc. Methods and systems for detection in a state machine
US8680888B2 (en) 2011-12-15 2014-03-25 Micron Technologies, Inc. Methods and systems for routing in a state machine
US8648621B2 (en) 2011-12-15 2014-02-11 Micron Technology, Inc. Counter operation in a state machine lattice
US9443156B2 (en) 2011-12-15 2016-09-13 Micron Technology, Inc. Methods and systems for data analysis in a state machine
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
US9304968B2 (en) 2012-07-18 2016-04-05 Micron Technology, Inc. Methods and devices for programming 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
US9235798B2 (en) 2012-07-18 2016-01-12 Micron Technology, Inc. Methods and systems for handling data received by a state machine engine
US9524248B2 (en) 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
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
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
US10691964B2 (en) 2015-10-06 2020-06-23 Micron Technology, Inc. Methods and systems for event reporting
US10846103B2 (en) 2015-10-06 2020-11-24 Micron Technology, Inc. Methods and systems for representing processing resources
US10977309B2 (en) 2015-10-06 2021-04-13 Micron Technology, Inc. Methods and systems for creating networks
US9972375B2 (en) 2016-04-15 2018-05-15 Via Alliance Semiconductor Co., Ltd. Sanitize-aware DRAM controller
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
US11829689B1 (en) 2020-06-09 2023-11-28 The Mathworks, Inc. Systems and methods for creating variant regions in acausal simulation models
US20230205297A1 (en) * 2021-12-27 2023-06-29 Advanced Micro Devices, Inc. Method and apparatus for managing power states

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4254476A (en) * 1979-06-25 1981-03-03 Sanders Associates, Inc. Associative processor
JP2008276331A (ja) * 2007-04-25 2008-11-13 Toshiba Corp マルチプロセッサの制御装置及び方法
JP2009523275A (ja) * 2005-12-30 2009-06-18 アシシュ エイ パンドヤ ランタイム適応サーチプロセッサ

Family Cites Families (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3538143A1 (de) 1985-10-26 1987-04-30 Hoechst Ag Verfahren zur herstellung von acyloxibenzolsulfonsaeuren und deren salzen
JPH05282362A (ja) 1992-03-31 1993-10-29 Sharp Corp データ検索回路
US5300830A (en) 1992-05-15 1994-04-05 Micron Semiconductor, Inc. Programmable logic device macrocell with an exclusive feedback and exclusive external input lines for registered and combinatorial modes using a dedicated product term for control
US5331227A (en) 1992-05-15 1994-07-19 Micron Semiconductor, Inc. Programmable logic device macrocell with an exclusive feedback line and an exclusive external input line
US5602764A (en) 1993-12-22 1997-02-11 Storage Technology Corporation Comparing prioritizing memory for string searching in a data compression system
US5615162A (en) 1995-01-04 1997-03-25 Texas Instruments Incorporated Selective power to memory
JPH08249241A (ja) 1995-03-15 1996-09-27 Nec Corp 記憶装置
JPH09167130A (ja) 1995-12-15 1997-06-24 Fujitsu Ltd Wwwサーバのための通信処理装置
DE19617733A1 (de) 1996-05-03 1997-11-06 Fichtel & Sachs Ag Schaltbarer Klinkenfreilauf für Mehrgangnaben für Fahrräder
US6094443A (en) 1997-10-30 2000-07-25 Advanced Micro Devices, Inc. Apparatus and method for detecting a prescribed pattern in a data stream by selectively skipping groups of nonrelevant data bytes
US6301671B1 (en) * 1998-03-23 2001-10-09 International Business Machines Corporation Apparatus and method for power reduction control in a video encoder device
JPH11298424A (ja) 1998-04-10 1999-10-29 Matsushita Electric Ind Co Ltd 情報受信装置
US6272616B1 (en) * 1998-06-17 2001-08-07 Agere Systems Guardian Corp. Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths
US6470418B1 (en) 1999-01-15 2002-10-22 Integrated Device Technology, Inc. Pipelining a content addressable memory cell array for low-power operation
US6324087B1 (en) 2000-06-08 2001-11-27 Netlogic Microsystems, Inc. Method and apparatus for partitioning a content addressable memory device
US6763425B1 (en) 2000-06-08 2004-07-13 Netlogic Microsystems, Inc. Method and apparatus for address translation in a partitioned content addressable memory device
US6880087B1 (en) 1999-10-08 2005-04-12 Cisco Technology, Inc. Binary state machine system and method for REGEX processing of a data stream in an intrusion detection system
US6553525B1 (en) 1999-11-08 2003-04-22 International Business Machines Corporation Method and apparatus for selectively enabling and disabling functions on a per array basis
US8095508B2 (en) * 2000-04-07 2012-01-10 Washington University Intelligent data storage and processing using FPGA devices
US6240003B1 (en) 2000-05-01 2001-05-29 Micron Technology, Inc. DRAM content addressable memory using part of the content as an address
US7089436B2 (en) * 2001-02-05 2006-08-08 Morpho Technologies Power saving method and arrangement for a configurable processor array
US7088604B2 (en) 2001-03-15 2006-08-08 Micron Technology, Inc. Multi-bank memory
US7088860B2 (en) 2001-03-28 2006-08-08 Canon Kabushiki Kaisha Dynamically reconfigurable signal processing circuit, pattern recognition apparatus, and image processing apparatus
JP2003060745A (ja) 2001-08-22 2003-02-28 Sony Corp 情報伝達装置、情報伝達方法及びモニタ装置
EP1436936A4 (en) 2001-09-12 2006-08-02 Safenet Inc RECOGNITION OF FORMS OF HIGH-SPEED DATA FLOW
US20030110208A1 (en) 2001-09-12 2003-06-12 Raqia Networks, Inc. Processing data across packet boundaries
ATE373846T1 (de) 2001-09-12 2007-10-15 Safenet Inc Verfahren zur generierung eines dfa-automaten, wobei übergänge zwecks speichereinsparung in klassen gruppiert werden
US7401180B1 (en) 2001-12-27 2008-07-15 Netlogic Microsystems, Inc. Content addressable memory (CAM) device having selectable access and method therefor
US7185141B1 (en) 2001-12-27 2007-02-27 Netlogic Microsystems, Inc. Apparatus and method for associating information values with portions of a content addressable memory (CAM) device
US6717876B2 (en) 2001-12-28 2004-04-06 Mosaid Technologies Incorporated Matchline sensing for content addressable memories
US6768659B2 (en) 2001-12-31 2004-07-27 Mosaid Technologies Incorporated Circuit and method for reducing power usage in a content addressable memory
US7421515B2 (en) 2002-01-17 2008-09-02 Hewlett-Packard Development Company, L.P. Method and system for communications network
EP1520228A2 (en) 2002-07-03 2005-04-06 Koninklijke Philips Electronics N.V. Multi-processor computer system
US7467129B1 (en) 2002-09-06 2008-12-16 Kawasaki Microelectronics, Inc. Method and apparatus for latency and power efficient database searches
US7146643B2 (en) 2002-10-29 2006-12-05 Lockheed Martin Corporation Intrusion detection accelerator
US6888731B2 (en) 2002-11-29 2005-05-03 Mosaid Technologies Incorporated Method and apparatus for replacing defective rows in a semiconductor memory array
US7089352B2 (en) 2002-12-23 2006-08-08 Micron Technology, Inc. CAM modified to be used for statistic calculation in network switches and routers
US6944710B2 (en) 2002-12-30 2005-09-13 Micron Technology, Inc. Multiple category CAM
JP2004328103A (ja) 2003-04-22 2004-11-18 Matsushita Electric Works Ltd 誤り検出回路
JP4196333B2 (ja) 2003-05-27 2008-12-17 日本電気株式会社 並列処理システム及び並列処理プログラム
US6906938B2 (en) 2003-08-15 2005-06-14 Micron Technology, Inc. CAM memory architecture and a method of forming and operating a device according to a CAM memory architecture
US7174469B2 (en) 2003-09-30 2007-02-06 International Business Machines Corporation Processor power and energy management
US7487542B2 (en) 2004-01-14 2009-02-03 International Business Machines Corporation Intrusion detection using a network processor and a parallel pattern detection engine
US7251707B1 (en) 2004-02-06 2007-07-31 Netlogic Microsystems, Inc. Content based content addressable memory block enabling using search key
US7437402B1 (en) 2004-02-25 2008-10-14 Analog Devices, Inc. Low-power, high-speed word comparator
US7057913B2 (en) 2004-04-06 2006-06-06 Intel Corporation Low-power search line circuit encoding technique for content addressable memories
EP1600845A1 (en) 2004-05-28 2005-11-30 STMicroelectronics Limited Processor with power saving circuitry
US7398403B2 (en) 2004-07-01 2008-07-08 Matsushita Electric Industrial Co., Ltd. Multiprocessor control apparatus, control method thereof, and integrated circuit
US7437581B2 (en) 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US7050318B1 (en) 2004-10-01 2006-05-23 Netlogic Microsystems, Inc. Selective match line pre-charging in a CAM device using pre-compare operations
US7127375B2 (en) * 2004-10-12 2006-10-24 Taiwan Semiconductor Manufacturing Co., Ltd. Non-uniformity pattern identification systems and methods thereof
US20060143374A1 (en) 2004-12-29 2006-06-29 Sailesh Kottapalli Pipelined look-up in a content addressable memory
US7392229B2 (en) 2005-02-12 2008-06-24 Curtis L. Harris General purpose set theoretic processor
KR101114984B1 (ko) * 2005-03-14 2012-03-06 삼성전자주식회사 가변적인 웨이크업 레이턴시를 가진 프로세싱 장치에서전원 관리 방법 및 장치
US7836284B2 (en) * 2005-06-09 2010-11-16 Qualcomm Incorporated Microprocessor with automatic selection of processing parallelism mode based on width data of instructions
US7598630B2 (en) 2005-07-29 2009-10-06 Intel Corporation IC with on-die power-gating circuit
JP2007066075A (ja) 2005-08-31 2007-03-15 Nikon Corp 起動/停止ロジック回路
FR2891075B1 (fr) 2005-09-21 2008-04-04 St Microelectronics Sa Circuit de memoire pour automate de reconnaissance de caracteres de type aho-corasick et procede de memorisation de donnees dans un tel circuit
US7443759B1 (en) 2006-04-30 2008-10-28 Sun Microsystems, Inc. Reduced-power memory with per-sector ground control
US7512634B2 (en) 2006-06-05 2009-03-31 Tarari, Inc. Systems and methods for processing regular expressions
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
US8001361B2 (en) 2006-12-13 2011-08-16 International Business Machines Corporation Structure for a single shared instruction predecoder for supporting multiple processors
WO2008142767A1 (ja) 2007-05-21 2008-11-27 Renesas Technology Corp. 半導体装置
US8631195B1 (en) 2007-10-25 2014-01-14 Netlogic Microsystems, Inc. Content addressable memory having selectively interconnected shift register circuits
US20090271646A1 (en) 2008-04-24 2009-10-29 Vanish Talwar Power Management Using Clustering In A Multicore System
US8112647B2 (en) 2008-08-27 2012-02-07 Globalfoundries Inc. Protocol for power state determination and demotion
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
US8402188B2 (en) 2008-11-10 2013-03-19 Micron Technology, Inc. Methods and systems for devices with a self-selecting bus decoder
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
US9164945B2 (en) 2008-12-01 2015-10-20 Micron Technology, Inc. Devices, systems, and methods to synchronize parallel processing of a single data stream
US20100138575A1 (en) 2008-12-01 2010-06-03 Micron Technology, Inc. Devices, systems, and methods to synchronize simultaneous dma parallel processing of a single data stream by multiple devices
US8140780B2 (en) 2008-12-31 2012-03-20 Micron Technology, Inc. Systems, methods, and devices for configuring a device
US8214672B2 (en) 2009-01-07 2012-07-03 Micron Technology, Inc. Method and systems for power consumption management of a pattern-recognition processor
US20100174887A1 (en) 2009-01-07 2010-07-08 Micron Technology Inc. Buses for Pattern-Recognition Processors
US8281395B2 (en) 2009-01-07 2012-10-02 Micron Technology, Inc. Pattern-recognition processor with matching-data reporting module
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
US9014825B2 (en) * 2009-06-16 2015-04-21 Maxim Integrated Products, Inc. System and method for sequentially distributing power among one or more modules
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
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
US7920399B1 (en) 2010-10-21 2011-04-05 Netlogic Microsystems, Inc. Low power content addressable memory device having selectable cascaded array segments
KR101607736B1 (ko) 2011-01-25 2016-03-30 마이크론 테크놀로지, 인크. 오토마톤의 진입 차수 및/또는 진출 차수를 제어하기 위한 양화 언롤링
US8788991B2 (en) 2011-01-25 2014-07-22 Micron Technology, Inc. State grouping for element utilization
JP5763783B2 (ja) 2011-01-25 2015-08-12 マイクロン テクノロジー, インク. 正規表現をコンパイルするための方法および装置
US8843911B2 (en) 2011-01-25 2014-09-23 Micron Technology, Inc. Utilizing special purpose elements to implement a FSM

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4254476A (en) * 1979-06-25 1981-03-03 Sanders Associates, Inc. Associative processor
JP2009523275A (ja) * 2005-12-30 2009-06-18 アシシュ エイ パンドヤ ランタイム適応サーチプロセッサ
JP2008276331A (ja) * 2007-04-25 2008-11-13 Toshiba Corp マルチプロセッサの制御装置及び方法

Also Published As

Publication number Publication date
US9501705B2 (en) 2016-11-22
WO2011081798A1 (en) 2011-07-07
KR102004290B1 (ko) 2019-07-26
KR20120106978A (ko) 2012-09-27
CN102741859B (zh) 2016-12-21
US20190095497A1 (en) 2019-03-28
US20110145271A1 (en) 2011-06-16
JP5923449B2 (ja) 2016-05-24
US20170068707A1 (en) 2017-03-09
CN102741859A (zh) 2012-10-17
US11151140B2 (en) 2021-10-19
US10157208B2 (en) 2018-12-18
EP2513840A1 (en) 2012-10-24
TW201135491A (en) 2011-10-16
TWI465945B (zh) 2014-12-21

Similar Documents

Publication Publication Date Title
JP5923449B2 (ja) パターン認識プロセッサにおける消費電力を低減させるための方法及び装置
US10466966B2 (en) Systems and methods to enable identification of different data sets
JP5489014B2 (ja) パターン認識プロセッサの電力消費管理のための方法およびシステム
JP5532268B2 (ja) 装置のエンディアンモードを管理するためのシステムおよび方法
JP5753190B2 (ja) パターン認識プロセッサのための多重階層ルーティングマトリクス
JP5753091B2 (ja) リザルトバッファを有するパターン認識プロセッサ
JP5689815B2 (ja) パターン認識プロセッサのためのバス
JP5387866B2 (ja) 並列パターン検索エンジンのパターンマッチング結果を通信するための装置、システム、および方法
US9836555B2 (en) Methods and devices for saving and/or restoring a state of a pattern-recognition processor

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130902

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130902

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140731

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

Effective date: 20141104

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20141104

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20141114

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20141128

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141128

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150303

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150623

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150623

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20150630

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

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20150724

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20151218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20151221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160301

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20160301

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160418

R150 Certificate of patent or registration of utility model

Ref document number: 5923449

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