パターン認識プロセッサのための多重階層ルーティングマトリクス
パターン認識プロセッサのための多重階層ルーティングマトリクスが提供される。一つのこのようなルーティングマトリクスは、マトリクスのレベルにおけるまたはレベル間における一つ以上のプログラマブル及び/または非プログラマブル接続を含んでもよい。接続は、フィーチャセル、グループ、行、ブロック、または、パターン認識プロセッサのコンポーネントの任意の他の配列にルーティングラインを結合してもよい。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、概して、パターン認識プロセッサに関し、より詳細には、特定の実施形態において、そのようなプロセッサの接続アーキテクチャに関する。
【背景技術】
【0002】
コンピューティングの分野では、パターン認識タスクは、益々難しくなっている。従来と比べて大量のデータがコンピュータ間で送信され、ユーザが識別することを望むパターンの数は増加している。例えば、特定のフレーズまたはコードの一部等のデータストリーム内のパターンを検索することによって、例えば、スパムまたはマルウェアが頻繁に検出される。新しいパターンが新しい変種を検索するために実装され得るので、パターンの数はスパム及びマルウェアの多様性によって増加する。データストリームでこれらの各パターンを検索することは、コンピューティング・ボトルネックを形成し得る。しばしば、データストリームが受信されると、各パターンに対して一度に一つずつデータストリームが検索される。システムがデータストリームの次の部分を検索する準備が整うまでの遅延は、パターンの数とともに増大する。従って、パターン認識は、データの受信を遅くする場合がある。
【0003】
このようなパターン認識プロセッサは、入力が処理されると状態(ステート)が次々と遷移する多数の有限状態機械(有限ステートマシン)(FSM)を含んでもよい。従来のプロセッサの内部接続は、フリップフロップまたは他のメモリ素子に接続された物理的配線に依存する。しかしながら、このような接続は、パターン認識プロセッサの性能を満たすことを不可能にする場合がある。更に、このような接続は一般的に、設定(構成)変更可能ではなく、又は所期の機能性を満たすことができない。パターン認識プロセッサ内の接続の距離、速度、及び、設定(構成)変更可能性は、シリコンにおける実装を難しくする場合がある。
【図面の簡単な説明】
【0004】
【図1】データストリームを検索するシステムの実施例を示す。
【図2】図1のシステム内のパターン認識プロセッサの実施例を示す。
【図3】図2のパターン認識プロセッサ内の検索タームセルの実施例を示す。
【図4】データストリームから一文字を検索する図3の検索タームセルを示す。
【図5】データストリームから一文字を検索する図3の検索タームセルを示す。
【図6】データストリームから単語を検索するいくつかの検索タームセルを含む認識モジュールを示す。
【図7】データストリームから単語を検索するいくつかの検索タームセルを含む認識モジュールを示す。
【図8】データストリームから単語を検索するいくつかの検索タームセルを含む認識モジュールを示す。
【図9】データストリームから2つの単語を並行して検索するように構成された認識モジュールを示す。
【図10】同一の接頭辞を持つ複数の単語を特定する検索条件に従って検索する認識モジュールを示す。
【図11】同一の接頭辞を持つ複数の単語を特定する検索条件に従って検索する認識モジュールを示す。
【図12】同一の接頭辞を持つ複数の単語を特定する検索条件に従って検索する認識モジュールを示す。
【図13】本発明の実施形態に従う、パターン認識プロセッサのフィーチャセルの階層的配列を示す。
【図14】本発明の実施形態に従う、パターン認識プロセッサのフィーチャセルの階層的配列を示す。
【図15】本発明の実施形態に従う、パターン認識プロセッサのフィーチャセルの階層的配列を示す。
【図16】本発明の実施形態に従う、パターン認識プロセッサのフィーチャセルの階層的配列を示す。
【図17】本発明の実施形態に従う、パターン認識プロセッサの多重階層ルーティングマトリクスを示す。
【図18】本発明の実施形態に従う、パターン認識プロセッサの多重階層ルーティングマトリクスを示す。
【図19】本発明の実施形態に従う、パターン認識プロセッサの多重階層ルーティングマトリクスを示す。
【図20】本発明の実施形態に従う、パターン認識プロセッサの多重階層ルーティングマトリクスを示す。
【図21】本発明の実施形態に従う、パターン認識プロセッサのフィーチャセルの一部を使用不可にすることを示す。
【図22】本発明の実施形態に従う、多重階層ルーティングマトリクスの接続をプログラミングするためのプロセスのフローチャートである。
【発明を実施するための形態】
【0005】
図1は、データストリーム12を検索するシステム10の一実施例を示す。システム10は、検索基準(searchcriteria)16に従ってデータストリーム12を検索するパターン認識プロセッサ14を含んでもよい。
【0006】
各検索基準は、一つ以上の対象表現、すなわちパターンを特定してもよい。“対象表現”という用語は、パターン認識プロセッサ14が検索するためのデータ配列(シーケンス)のことをいう。対象表現の例は、ある単語を綴る文字配列、遺伝子を特定する遺伝子塩基対配列、画像の一部を形成する画像ファイルもしくはビデオファイルにおけるビット配列、プログラムの一部を形成する実行可能ファイルにおけるビット配列、または、歌もしくは話された言葉の一部を形成するオーディオファイルにおけるビット配列を含む。
【0007】
検索基準は、一つを超える対象表現を特定してもよい。例えば、検索基準は、文字列“cl”で始まる全5文字の単語、文字列“cl”で始まるあらゆる単語、3回以上“cloud”という単語を含む段落などを特定してもよい。対象表現のうちで生じうる組の数は、任意の大きさであり、例えば、データストリームが提示し得るデータの順列の存在するのと同一数の対象表現が存在する可能性がある。検索基準は、種々のフォーマットで表現されてもよく、そのフォーマットは、正規表現として、各対象表現を必ずしも記載することなく、対象表現の組を簡潔に特定するプログラミング言語を含む。
【0008】
各検索基準は、一つ以上の検索タームから構成されてもよい。したがって、検索基準の各対象表現は一つ以上の検索タームを含み、幾つかの対象表現は、共通の検索タームを使用してもよい。本明細書で使用されるように、“検索ターム”という用語は、単一の検索サイクルの間に検索されるデータの配列のことをいう。データの配列は、バイナリフォーマットもしくは、例えば、10進法、ASCIIなどの他のフォーマットにおける複数ビットのデータを含んでもよい。配列は、単一のディジットもしくは複数のディジット(例えば幾つかのバイナリディジット)でデータをエンコードしてもよい。例えば、パターン認識プロセッサ14は、一度に一文字をテキストデータストリーム12から検索し、検索タームは、例えば、文字“a”、文字“a”か“e”のいずれか、または、全ての単一文字の組を特定するワイルドカード検索タームなど、単一文字の組を特定してもよい。
【0009】
検索タームは、文字(もしくは、データストリームによって表現される情報の他の書記素、すなわち基本単位、例えば、音符、遺伝子塩基対、10進法のディジット、サブピクセル)を特定するビット数よりも小さいか、または大きくてもよい。例えば、検索タームは8ビットであり、単一文字は16ビットであり、この場合には、二つの連続した検索タームは単一文字を特定してもよい。
【0010】
検索基準16は、コンパイラ18によってパターン認識プロセッサ14のためにフォーマットされてもよい。フォーマットするステップは、検索基準から検索タームを分解するステップを含んでもよい。例えば、データストリーム12によって表現された書記素が検索タームよりも大きい場合、コンパイラは単一の書記素を検索するために、複数の検索タームへと検索基準を分解してもよい。同様に、データストリーム12によって表現された書記素が検索タームよりも小さい場合、コンパイラ18は、各個別の書記素に対して、使用されていないビットを伴う単一の検索タームを提供してもよい。コンパイラ18は、パターン認識プロセッサ14によって本来サポートされていない種々の正規表現演算子をサポートするために、検索基準16をフォーマットしてもよい。
【0011】
パターン認識プロセッサ14は、データストリーム12から各新規タームを評価することによって、データストリーム12を検索してもよい。本明細書における“ターム”という用語は、検索タームに一致しうるデータ量のことをいう。検索サイクルの間、パターン認識プロセッサ14は、現在提示されているタームが検索基準における現在の検索タームに一致するかどうかを決定してもよい。タームが検索タームと一致する場合には、評価は“進行”し、すなわち、次のタームが検索基準における次の検索タームと比較される。そのタームが一致しない場合には、次のタームは、検索基準における第一のタームと比較され、それによって検索をリセットする。
【0012】
各検索基準は、パターン認識プロセッサ14における異なる有限状態機械(有限ステートマシン)へとコンパイルされてもよい。有限状態機械は、パラレルに(並行して)実行してもよく、検索基準16に従ってデータストリーム12を検索する。有限状態機械は、先行する検索タームがデータストリーム12と一致する場合に検索基準における連続する各検索タームへと進んでもよい。または、検索タームが一致しない場合には、有限状態機械は検索基準における第一の検索タームの検索を開始してもよい。
【0013】
パターン認識プロセッサ14は、幾つかの検索基準に従って各新規タームを評価し、ほぼ同時に、例えば、単一のデバイスサイクルの間に其々の検索タームを評価してもよい。パラレルな有限状態機械は、ほぼ同時にデータストリーム12からタームを各々受信し、パラレルな有限状態機械の各々は、そのタームが、パラレルな有限状態機械を検索基準における次の検索タームへと進めるかどうかを決定してもよい。パラレルな有限状態機械は、比較的多数の検索基準(例えば、100以上、1000以上、もしくは10000以上)に従って、タームを評価してもよい。それらはパラレルに動作するため、データストリームを遅延させることなく、比較的高いバンド幅を有するデータストリーム12(例えば、64MB毎秒もしくは128MB毎秒より大きいかほぼ同一のデータストリーム12)に対して検索基準を適用してもよい。幾つかの実施形態においては、検索サイクルの継続期間は、検索基準の数によって増減しないため、検索基準の数はパターン認識プロセッサ14の性能にあまり影響を与えることはない。
【0014】
検索基準が満足されるとき(すなわち、最後の検索タームに進行してそれが一致した後)、パターン認識プロセッサ14は、中央処理装置(CPU)20などの処理装置に対して基準を満足したことを報告してもよい。中央処理装置20は、パターン認識プロセッサ14およびシステム10の他の部分を制御してもよい。
【0015】
システム10は、データのストリームを検索する種々のシステムもしくはデバイスのうちのいずれであってもよい。例えば、システム10は、データストリーム12を検索するデスクトップ、ラップトップ、ハンドヘルドもしくは他のタイプのコンピュータであってもよい。システム10は、ルータ、サーバ、もしくはクライアント(例えば、前述されたタイプのコンピュータのうちの一つ)などのネットワークノードであってもよい。システム10は、コピー機、スキャナ、プリンタ、ゲーム機、テレビ、セットトップビデオ分配もしくは録画システム、ケーブルボックス、パーソナルデジタルメディアプレイヤー、工場自動化システム、自動車用コンピュータシステムまたは医療デバイスなどの他の種類の何らかの電子装置であってもよい。(これらの種々のシステムの実施例を記述するために使用される用語は、本明細書で使用される他の多くの用語と同様に、幾つかの指示対象を共有し、それ自体は、列挙された他の項目によって、範囲を狭めて解釈されるべきではない。)
【0016】
データストリーム12は、ユーザもしくは他の主体が検索を望む可能性のある、種々のタイプの一つ以上のデータストリームであってもよい。例えば、データストリーム12は、インターネットを介して受信されたパケット、または、携帯電話ネットワークを介して受信された音声もしくはデータなど、ネットワークを介して受信されたデータのストリームであってもよい。データストリーム12は、画像センサ、温度センサ、加速度計などもしくはその組み合わせなど、システム10と連通するセンサから受信されたデータであってもよい。データストリーム12は、シリアルデータストリームとしてシステム10によって受信され、そのデータは、時間的、語彙的、もしくは意味論的に重要視される順序など、意味のある順序で受信される。或いは、データストリーム12は、パラレルにもしくはバラバラの順序で受信され、その後、例えば、インターネットを介して受信されたパケットを順番に並べ替えることによって、シリアルデータストリームへと変換される。幾つかの実施形態においては、データストリーム12は、タームをシリアルに提示してもよいが、各タームを表すビットはパラレルに受信されてもよい。データストリーム12は、システム10の外部のソースから受信されてもよく、または、メモリデバイスにインテロゲート(質問)し、格納されたデータからデータストリーム12を形成することによって形成されてもよい。
【0017】
データストリーム12におけるデータのタイプに依存して、異なるタイプの検索基準が設計者によって選択されてもよい。例えば、検索基準16は、ウイルス定義ファイルであってもよい。ウイルスもしくは他のマルウェアは特徴づけられ、また、マルウェアの幾つかの態様が使われ、データストリーム12がマルウェアを伝達しそうかどうかを示す検索基準を形成することができる。結果として生じる検索基準はサーバに格納され、クライアントシステムのオペレータはシステム10へと検索基準をダウンロードするサービスに登録してもよい。検索基準16は、異なるタイプのマルウェアが現れるので、サーバから定期的にアップデートされてもよい。検索基準は、ネットワークを介して受信される可能性のある望ましくないコンテンツ、例えば、(スパムとしてよく知られている)迷惑電子メールもしくはユーザが望まない他のコンテンツ、を特定するために使用されてもよい。
【0018】
データストリーム12は、システム10によって受信されているデータに関心を持つ第三者によって検索されてもよい。例えば、データストリーム12は、著作物に現れる文字列、音声系列、ビデオ系列を捜すために検索されてもよい。データストリーム12は、刑事捜査もしくは民事手続きに関係する言辞、もしくは使用者にとって関心のある言辞を捜すために検索されてもよい。
【0019】
検索基準16は、例えば、CPU20もしくはパターン認識プロセッサ14によってアドレス可能なメモリにおいて、翻訳が可能であるデータストリーム12におけるパターンを含んでもよい。例えば、検索基準16は、対応するスペイン語がメモリに格納された英単語を各々特定してもよい。別の実施例においては、検索基準16は、例えば、デコードされたバージョンのデータストリーム12が使用可能であるMP3、MPEG4、FLAC、OggVorbisなど、エンコードされたバージョンのデータストリーム12を特定してもよいし、その逆を特定してもよい。
【0020】
パターン認識プロセッサ14は、CPU20と共に(単一のデバイスなどの)単一の構成部分に統合されたハードウェア装置であってもよいし、別個の構成部分として形成されてもよい。例えば、パターン認識プロセッサ14は別個の集積回路であってもよい。パターン認識プロセッサ14は、“コプロセッサ”もしくは“パターン認識コプロセッサ”と称される場合がある。
【0021】
図2は、パターン認識プロセッサ14の一実施例を示す。パターン認識プロセッサ14は、認識モジュール22および集約モジュール24を含んでもよい。認識モジュール22は、受信されたタームを検索タームと比較するように構成され、認識モジュール22および集約モジュール24の双方は、協力して検索タームとタームとの一致が検索基準を満足するかどうかを決定するようにしてもよい。
【0022】
認識モジュール22は、行デコーダ28および複数のフィーチャセル30を含んでもよい。各フィーチャセル30は検索タームを特定し、フィーチャセル30のグループは、検索基準を形成するパラレルな有限状態機械を形成してもよい。フィーチャセル30のコンポーネントは、検索タームアレイ32、検出アレイ34およびアクティブ化ルーティングマトリクス36を形成してもよい。検索タームアレイ32は複数の入力導体37を含み、入力導体37の各々は、行デコーダ28と連通する状態に各フィーチャセル30を置くことができる。
【0023】
行デコーダ28は、データストリーム12のコンテンツに基づいて、複数の入力導体37中の特定の導体を選択してもよい。例えば、行デコーダ28は、1タームを表現し得る受信バイトの値に基づいて、256行のうちの1つをアクティブ化する、1バイトから256への行デコーダであってもよい。00000000の1バイトタームは、複数の入力導体37のうち最も上の行に対応し、11111111の1バイトタームは、複数の入力導体37のうちの最も下の行に対応してもよい。したがって、異なる入力導体37は、どのタームがデータストリーム12から受信されるかに依存して選択されてもよい。異なるタームが受信されると、行デコーダ28は、前のタームに対応する行を非アクティブ化し、新規タームに対応する行をアクティブ化してもよい。
【0024】
検出アレイ34は、検索基準を完全にもしくは部分的に満足することを示す信号を集約モジュール24に出力する検出バス38に結合してもよい。アクティブ化ルーティングマトリクス36は、検索基準における一致した検索ターム数に基づいて、フィーチャセル30を選択的にアクティブ化および非アクティブ化してもよい。
【0025】
集約モジュール24は、ラッチマトリクス40、集約ルーティングマトリクス42、閾値論理マトリクス44、論理積マトリクス46、論理和マトリクス48および初期化ルーティングマトリクス50を含んでもよい。
【0026】
ラッチマトリクス40は、ある検索基準の一部を実装してもよい。例えば、幾つかの正規表現などの幾つかの検索基準は、最初の一つの一致もしくは一群の一致の発生のみを計数する。ラッチマトリクス40は、一致が生じたかどうかを記録する複数のラッチを含んでもよい。ラッチは初期化の間にクリアされてもよく、動作中に定期的に再初期化されてもよく、その間に、検索基準が満足されたと判定され、もしくはそれ以上満足されない、すなわち、その検索基準が満足されるより前に前の検索タームを再度マッチングさせる必要があると判定される。
【0027】
集約ルーティングマトリクス42は、アクティブ化ルーティングマトリクス36と類似した機能を果たしてもよい。集約ルーティングマトリクス42は、検出バス38上で一致を示す信号を受信し、閾値論理マトリクス44に接続する異なるグループ論理ライン53へと信号をルーティングしてもよい。集約ルーティングマトリクス42は、検索基準が満足された、もしくはこれ以上満足されないと判定されたとき、検出アレイ34の一部をリセットするために、検出アレイ34へと初期化ルーティングマトリクス50の出力をルーティングしてもよい。
【0028】
閾値論理マトリクス44は、例えば、数を数える(カウントアップする)、または数を逆に数える(カウントダウンする)ように構成された32ビットカウンタなどの、複数のカウンタを含んでもよい。閾値論理マトリクス44は、初期カウントがロードされ、認識モジュールによって信号通知される一致に基づいてそのカウントから、カウントアップもしくはカウントダウンしてもよい。例えば、閾値論理マトリクス44は、ある長さの文字列の単語が現れた数を数えてもよい。
【0029】
閾値論理マトリクス44の出力は、論理積マトリクス46に対する入力であってもよい。論理積マトリクス46は、“積”の結果(例えば、ブール論理における“AND”関数)を選択的に生成してもよい。論理積マトリクス46は、正方行列として実装され、出力積の数は、閾値論理マトリクス44からの入力ラインの数と同一であるか、または、論理積マトリクス46は、出力とは異なる個数の入力を有してもよい。結果として生じる積の値は、論理和マトリクス48に対する出力であってもよい。
【0030】
論理和マトリクス48は、和(例えば、ブール論理における“OR”関数)を選択的に生成してもよい。論理和マトリクス48もまた、正方行列として実装されるか、または、論理和マトリクス48は、出力とは異なる個数の入力を有してもよい。入力は論理積であるため、論理和マトリクス48の出力は、論理的な積和(例えば、ブール論理での積和(SOP)形)であってもよい。論理和マトリクス48の出力は、初期化ルーティングマトリクス50によって受信されてもよい。
【0031】
初期化ルーティングマトリクス50は、集約ルーティングマトリクス42を介して、検出アレイ34および集約モジュール24の一部をリセットしてもよい。初期化ルーティングマトリクス50は、正方行列として実装されるか、または、初期化ルーティングマトリクス50は、出力とは異なる個数の入力を有してもよい。初期化ルーティングマトリクス50は、論理和マトリクス48からの信号に応じて、例えば、検索基準が満足されたとき、または、検索基準がこれ以上満足されないと判定されたとき、パターン認識プロセッサ14の他の部分を再初期化してもよい。
【0032】
集約モジュール24は、閾値論理マトリクス44、集約ルーティングマトリクス42、および論理和マトリクス48の出力を受信する出力バッファ51を含んでもよい。集約モジュール24の出力は、出力バッファ51から出力バス26上にCPU20(図1)へと伝送されてもよい。幾つかの実施形態においては、出力マルチプレクサは、これらのコンポーネント42、44および48からの信号を多重化し、基準を満足したことを示す信号、もしくは検索タームの一致を示す信号をCPU20(図1)へと出力してもよい。他の実施形態においては、パターン認識プロセッサ14からの結果は、出力マルチプレクサを介して信号を伝送することなく報告されてもよいが、このことは、本明細書で記述されるあらゆる他の特徴も省略される可能性がないことを示唆するものではない。例えば、閾値論理マトリクス44、論理積マトリクス46、論理和マトリクス48もしくは初期化ルーティングマトリクス50からの信号は、出力バス26上でパラレルにCPUへと伝送されてもよい。
【0033】
図3は、検索タームアレイ32(図2)における単一のフィーチャセル30の一部を示し、それは検索タームセル54として本明細書で称されるコンポーネントである。検索タームセル54は、出力導体56および複数のメモリセル58を含んでもよい。各メモリセル58は、出力導体56と複数の入力導体37の中の導体の一つとの両方へと結合されてもよい。選択されている入力導体37に応答して、各メモリセル58は、格納された値を示す値を出力し、出力導体56を介してそのデータを出力する。幾つかの実施形態においては、複数の入力導体37は“ワード線”と称され、出力導体56は“データ線”と称される場合がある。
【0034】
メモリセル58は、種々のタイプのメモリセルのうちのいずれを含んでいてもよい。例えば、メモリセル58は、トランジスタとキャパシタを有するダイナミックランダムアクセスメモリ(DRAM)セルなどの揮発性メモリであってもよい。トランジスタのソースおよびドレインは、其々、キャパシタのプレートおよび出力導体56へと接続され、トランジスタのゲートは入力導体37のうちの一つへと接続されてもよい。揮発性メモリの別の実施例においては、各メモリセル58は、スタティックランダムアクセスメモリ(SRAM)セルを含んでもよい。SRAMセルは、入力導体37の一つによって制御されるアクセストランジスタによって、出力導体56へと選択的に結合される出力を有してもよい。メモリセル58は、相変化メモリ(例えば、オボニックデバイス)、フラッシュメモリ、シリコン・酸化物・窒化物・酸化物・シリコン(SONOS)メモリ、磁気抵抗メモリもしくは他のタイプの不揮発性メモリなどの不揮発性メモリをも含んでもよい。メモリセル58は、フリップフロップ、例えば、論理ゲートによって形成されたメモリセルをも含んでもよい。
【0035】
図4および図5は、動作中の検索タームセル54の一実施例を示す。図4は、セルの検索タームに一致しないタームを受信する検索タームセル54を示し、図5は、セルの検索タームに一致するタームを受信する検索タームセル54を示す。
【0036】
図4によって示されるように、検索タームセル54は、メモリセル58にデータを格納することによって、一つ以上のタームを検索するように構成されてもよい。メモリセル58は、例えば図3において、データストリーム12が提示する可能性のあるタームを各々表し、各メモリセル58は文字“a”で開始し、数字“9”で終了する単一の文字もしくは数字を表す。検索タームを満足するタームを表すメモリセル58は、第一の値を格納するようにプログラムされ、検索タームを満足するタームを表していないメモリセル58は、異なる値を格納するようにプログラムされてもよい。図示された実施例においては、検索タームセル54は、文字“b”を検索するように構成されている。“b”を表すメモリセル58は、1もしくは論理的なハイを格納し、“b”を表していないメモリセル58は、0もしくは論理的なロウを格納するようにプログラムされてもよい。
【0037】
データストリーム12からのタームを検索タームと比較するために、行デコーダ28は、受信されたタームを表すメモリセル58に結合された入力導体37を選択してもよい。図4においては、データストリーム12は、小文字の“e”を提示する。このタームは、8ビットASCIIコード形式でデータストリーム12によって提示され、行デコーダ28は、行アドレスとしてこのバイトを解釈し、導体60に電圧を印加することによって、導体60上に信号を出力する。
【0038】
それに応答して、導体60によって制御されるメモリセル58は、メモリセル58が格納するデータを示す信号を出力し、その信号は出力導体56によって伝送されてもよい。この場合には、文字“e”は、検索タームセル54によって特定されたタームのうちの一つではないため、検索タームとは一致せず、検索タームセル54は0値を出力し、それは一致が見つからなかったことを示している。
【0039】
図5においては、データストリーム12は、文字“b”を提示する。再度、行デコーダ28はこのタームをアドレスとして解釈し、行デコーダ28は導体62を選択してよい。それに応答して、文字“b”を表すメモリセル58は、格納された値を出力し、この場合には、それは1であり、一致を示している。
【0040】
検索タームセル54は一度に一つを超えるタームを検索するように構成されてもよい。複数のメモリセル58は、1を格納するようにプログラムされ、一つを超えるタームと一致する検索タームを特定する。例えば、小文字“a”および大文字“A”を表すメモリセル58は、1を格納するようにプログラムされ、検索タームセル54は、いずれかのタームを検索してもよい。別の実施例においては、検索タームセル54は、いかなる文字が受信された場合にも一致を出力するように構成されてもよい。全メモリセル58は、1を格納するようにプログラムされてもよく、検索タームセル54は、検索基準におけるワイルドカードタームとして機能してもよい。
【0041】
図6〜図8は、例えば一単語など複数ターム検索基準に従って検索する認識モジュール22を示す。具体的には、図6は一単語の最初の文字を検出する認識モジュール22を示し、図7は、第二の文字の検出を示し、図8は、最後の文字の検出を示す。
【0042】
図6によって示されるように、認識モジュール22は、単語“big”を検索するように構成されてもよい。3個の隣接するフィーチャセル63、64および66が示される。フィーチャセル63は、文字“b”を検出するように構成される。フィーチャセル64は、文字“i”を検出するように構成される。フィーチャセル66は、文字“g”を検出し、検索基準が満足されたことを示すように構成される。
【0043】
図6は、また検出アレイ34のさらなる詳細を示す。検出アレイ34は、各フィーチャセル63、64および66における検出セル68を含んでもよい。各検出セル68は、上述されたタイプのメモリセルのうちの一つ(例えば、フリップフロップ)のような、メモリセル70を含んでもよく、メモリセル70は、フィーチャセル63、64もしくは66がアクティブか非アクティブかを示す。検出セル68は、検出セルがアクティブであるかどうかのみならず、関連付けられた検索タームセル54から一致を示す信号を受信したかどうかを示す信号を、アクティブ化ルーティングマトリクス36へと出力するように構成されてもよい。非アクティブなフィーチャセル63、64および66は、一致を無視してもよい。各検出セル68は、メモリセル70および出力導体56からの入力を有する、ANDゲートを含んでもよい。ANDゲートの出力は、検出バス38とアクティブ化ルーティングマトリクス36との両方へ、またはそのどちらか一方へとルーティングされてもよい。
【0044】
今度は、アクティブ化ルーティングマトリクス36は、検出アレイ34におけるメモリセル70へと書き込むことによって、フィーチャセル63、64および66を選択的にアクティブ化してもよい。アクティブ化ルーティングマトリクス36は、検索基準ならびに次にどの検索タームがデータストリーム12において検索されるかに従って、フィーチャセル63、64もしくは66をアクティブ化してもよい。
【0045】
図6においては、データストリーム12は文字“b”を提示する。それに応答して、各フィーチャセル63、64および66は、その出力導体56上に信号を出力し、文字“b”を表す導体62に接続されたメモリセル58に格納された値を示す。検出セル56は、その後、一致を示す信号を受信したかどうか、ならびに検出セル56がアクティブかどうかを各々決定してもよい。フィーチャセル63は文字“b”を検出するように構成され、そのメモリセル70によって示されるようにアクティブであるため、フィーチャセル63における検出セル68は、アクティブ化ルーティングマトリクス36へと信号を出力して、検索基準のうちの第一の検索タームが一致したことを示す。
【0046】
図7によって示されるように、第一の検索タームが一致した後、アクティブ化ルーティングマトリクス36は、検出セル68におけるメモリセル70へと1を書き込むことによって、次のフィーチャセル64をアクティブ化してもよい。次のタームが第一の検索タームを満足する場合(例えば、タームの配列“bbig”が受信された場合)アクティブ化ルーティングマトリクス36はフィーチャセル63のアクティブ状態を維持してもよい。検索基準のうちの第一の検索タームは、データストリーム12が検索される時間のうちの一部もしくは実質的に全期間の間、アクティブ状態に維持されてもよい。
【0047】
図7においては、データストリーム12は認識モジュール22へ文字“i”を出力する。それに応じて、各フィーチャセル63、64および66は、その出力導体56上に信号を出力し、その信号は文字“i”を表す導体72へと接続されたメモリセル58に格納された値を示す。検出セル56は、その後、一致を示す信号を受信したかどうか、ならびに検出セル56がアクティブかどうかを各々決定してもよい。フィーチャセル64は文字“i”を検出するように構成され、メモリセル70によって示されるようにアクティブであるため、フィーチャセル64における検出セル68は、アクティブ化ルーティングマトリクス36へと、検索基準の次の検索タームが一致したことを示す信号を出力する。
【0048】
続いて、図8に示されるように、アクティブ化ルーティングマトリクス36はフィーチャセル66をアクティブ化してもよい。次のタームを評価する前に、フィーチャセル64は非アクティブ化されてもよい。フィーチャセル64は、検出サイクルの合間にそのメモリセル70をリセットするその検出セル68によって非アクティブ化されてもよく、または、例えば、アクティブ化ルーティングマトリクス36がフィーチャセル64を非アクティブ化してもよい。
【0049】
図8においては、データストリーム12は行デコーダ28へと、ターム“g”を出力し、行デコーダ28はターム“g”を表す導体74を選択する。それに応答して、各フィーチャセル63、64および66は、その出力導体56上に、文字“g”を表す導体74へと接続されたメモリセル58に格納された値を示す信号を出力する。検出セル56は、その後、一致を示す信号を受信したかどうか、ならびに検出セル56がアクティブかどうかを各々決定してもよい。フィーチャセル66は文字“g”を検出するように構成され、そのメモリセル70によって示されるようにアクティブであるため、フィーチャセル66における検出セル68は、アクティブ化ルーティングマトリクス36へと、検索基準の最後の検索タームが一致したことを示す信号を出力する。
【0050】
検索基準の終わりかもしくは検索基準の一部かは、アクティブ化ルーティングマトリクス36もしくは検出セル68によって識別されてもよい。これらのコンポーネント36もしくは68は、フィーチャセル63、64もしくは66が検索基準の最終検索タームか検索基準のコンポーネントかを特定するかどうかを示すメモリを含んでもよい。例えば、検索基準は、“cattle”という単語が二度現れる全ての文を特定し、認識モジュールは、一つの文内の各々の“cattle”の出現を示す信号を集約モジュールへと出力し、集約モジュールは、その出現回数を数え、検索基準が満足されたかどうかを判定する。
【0051】
フィーチャセル63、64もしくは66は幾つかの条件下でアクティブ化されてもよい。フィーチャセル63、64もしくは66は、“常にアクティブ”であってもよく、それは、全検索の間、もしくは実質的に全ての検索の間アクティブ状態のままであることを意味する。常にアクティブなフィーチャセル63、64もしくは66の一実施例は、検索基準の第一のフィーチャセル、例えば、フィーチャセル63である。
【0052】
フィーチャセル63、64もしくは66は、“要求されたときアクティブ”であってもよく、それは、或る先行する条件が一致したとき、例えば、検索基準における先行する検索タームが一致したときに、フィーチャセル63、64もしくは66がアクティブになることを意味する。一実施例は、図6−図8におけるフィーチャセル63によって要求されたときにアクティブになるフィーチャセル64と、フィーチャセル64によって要求されたときにアクティブになるフィーチャセル66である。
【0053】
フィーチャセル63、64もしくは66は、“自己アクティブ化”されてもよく、それは、一度アクティブ化されればその検索タームが一致している限り、それ自身をアクティブ化することを意味する。例えば、いかなる数値のディジットにでも一致した検索タームを有する自己アクティブ化されたフィーチャセルは、シーケンス“123456xy”の間、文字“x”に到達するまで、アクティブ化したままであってもよい。自己アクティブ化されたフィーチャセルの検索タームが一致するたび、自己アクティブ化されたフィーチャセルは検索基準における次のフィーチャセルをアクティブ化してもよい。したがって、常にアクティブなフィーチャセルは、自己アクティブ化するフィーチャセルおよび要求されたときにアクティブなフィーチャセルから形成されてもよい。自己アクティブ化フィーチャセルは、1を格納するメモリセル58の全てと共にプログラムされてもよく、要求されたときアクティブなフィーチャセルを各タームの後に繰り返しアクティブ化してもよい。幾つかの実施形態においては、各フィーチャセル63、64および66は、フィーチャセルが常にアクティブかどうかを識別するメモリセルを、検出セル68もしくはアクティブ化ルーティングマトリクス36に含んでもよく、それによって、単一のフィーチャセルから常にアクティブなフィーチャセルを形成する。
【0054】
図9は、第一の検索基準75および第二の検索基準76に従ってパラレルに検索するように構成された認識モジュール22の一実施例を示す。本実施例においては、第一の検索基準75は、単語“big”を特定し、第二の検索基準76は、単語“cab”を特定する。データストリーム12からの現在のタームを示す信号は、ほぼ同時に各検索基準75および76におけるフィーチャセルへと通信されてもよい。各入力導体37は、検索基準75および76の双方へと及ぶ。結果として、幾つかの実施形態においては、検索基準75および76の双方は、ほぼ同時に現在のタームを評価してもよい。このことによって、検索基準の評価が加速すると考えられる。他の実施形態は、より多くの検索基準をパラレルに評価するように構成されたより多くのフィーチャセルを含んでもよい。例えば、幾つかの実施形態は、パラレルに動作する100、500、1000、5000もしくは10000以上のフィーチャセルを含んでもよい。これらのフィーチャセルは、ほぼ同時に何百、もしくは何千もの検索基準を評価してもよい。
【0055】
異なる個数の検索タームを有する検索基準は、より多くのもしくはより少ないフィーチャセルを検索基準へと割り当てることによって形成されてもよい。単純な検索基準は、複雑な検索基準よりも、フィーチャセルの形のリソースをより少なく消費するであろう。このことによって、ほぼ同一の多数のコアを有し、複雑な検索基準を評価するように全て構成されたプロセッサと比較して、パターン認識プロセッサ14(図2)のコストを低減すると考えられる。
【0056】
図10〜図12は、より複雑な検索基準とアクティブ化ルーティングマトリクス36の特徴との双方の一実施例を示す。アクティブ化ルーティングマトリクス36は、複数のアクティブ化ルーティングセル78を含んでもよく、アクティブ化ルーティングセル78のグループは、各フィーチャセル63、64、66、80、82、84および86に関連付けられてもよい。例えば、各フィーチャセルは、5、10、20、50個のもしくはそれ以上のアクティブ化ルーティングセル78を含んでもよい。アクティブ化ルーティングセル78は、先行する検索タームが一致するとき、検索基準における次の検索タームへとアクティブ化信号をルーティングするように構成されてもよい。アクティブ化ルーティングセル78は、隣接するフィーチャセルもしくは同一のフィーチャセル内の他のアクティブ化ルーティングセル78へとアクティブ化信号をルーティングするように構成されてもよい。アクティブ化ルーティングセル78は、どのフィーチャセルが検索基準における次の検索タームに対応するかを示すメモリを含んでもよい。
【0057】
図10〜図12に示されるように、認識モジュール22は、単一の単語を特定する基準よりも複雑な検索基準に従って検索するように構成されてもよい。例えば、認識モジュール22は、接頭辞88で開始し、2つの接尾辞90もしくは92のうちの一つで終了する単語を検索するように構成されてもよい。図示された検索基準は、文字“c”および“l”の配列で開始し、文字配列“ap”もしくは文字配列“oud”のいずれかで終了する単語を特定する。これは、複数の対象表現、例えば、単語“clap”もしくは単語“cloud”を特定する検索基準の一実施例である。
【0058】
図10においては、データストリーム12は、認識モジュール22に対して文字“c”を提示し、フィーチャセル63はアクティブであるとともに、一致を検出する。それに応答して、アクティブ化ルーティングマトリクス36は、次のフィーチャセル64をアクティブ化してもよい。アクティブ化ルーティングマトリクス36は、フィーチャセル63が検索基準における第一の検索タームであるので、フィーチャセル63のアクティブ状態を維持してもよい。
【0059】
図11においては、データストリーム12は、文字“l”を提示し、フィーチャセル64は、一致を認識しそしてアクティブである。それに応答して、アクティブ化ルーティングマトリクス36は、第一の接尾辞90の第一のフィーチャセル66および第二の接尾辞92の第一のフィーチャセル82の双方へとアクティブ化信号を伝送してもよい。他の実施例においては、より多くの接尾辞がアクティブ化されてもよく、または、複数の接頭辞は一つ以上の接尾辞をアクティブ化してもよい。
【0060】
続いて、図12においては、データストリーム12は、認識モジュール22に対して文字“o”を提示し、第二の接尾辞92のフィーチャセル82は、一致を認識しそしてアクティブである。それに応答して、アクティブ化ルーティングマトリクス36は、第二の接尾辞92の次のフィーチャセル84をアクティブ化してもよい。フィーチャセル66は非アクティブになることが許されるので、第一の接尾辞90の検索は終了してもよい。図10〜図12に示されたステップは、文字“u”および“d”へと継続してもよいし、または、接頭辞88が一致する次の機会まで、検索は終了してもよい。
【0061】
パターン認識プロセッサ14の実施形態は、任意の配列のフィーチャセル30を含んでもよい。図13〜図16は、本発明の実施形態に従う、フィーチャセル30の階層的配列を示す。一実施形態では、図13に示すように、第1レベルの階層は、2つのフィーチャセル30、フィーチャセル1(Feature Cell 1)及びフィーチャセル0(Feature Cell 0)のグループ94に配列されたフィーチャセル30を含んでもよい。各フィーチャセル30は、例えば、イネーブル状態(Enable State)信号等の入力を受信してもよく、次状態(Next State)信号をフィーチャセルの別のグループに出力してもよい。グループ94内の各フィーチャセル30は、各フィーチャセル30の出力に基づいてグループ94からの出力を提供する出力ドライブセレクタ96に結合されてもよい。例えば、一実施形態では、出力ドライブセレクタ96は、次状態出力“0”(Next State Out “0”)信号、次状態出力“1”(Next State Out “1”)信号、または、フィーチャセル30から受信された2つの次状態出力信号の論理和を出力するように構成されてもよい。
【0062】
図14に示すように、第2レベルの階層は、グループ94の行98に配列されたフィーチャセルの各グループ94を含んでもよい。各行98は、フィーチャセル30の任意の数のグループ94を含んでもよい。例えば、図14に図示した実施形態では、行98は、2つのフィーチャセル30の、例えば、グループ0(Group 0)からグループ7(Group 7)まで等の8つのグループ94を含んでもよい。
【0063】
図15に示すように、第3レベルの階層は、ブロック100にグループ化される複数の行98を含んでもよく、各ブロック100は、一つ以上の行98を含む。プロセッサ14の一実施形態では、各ブロック100は、例えば行0(Row 0)から行15(Row 15)まで等の16個の行98を含んでもよい。パターン認識プロセッサ14は、さらに、プログラム化状態機械の実装及び上記のパターン検索のために任意の数のブロック100を含んでもよい。図16に示すように、一実施形態では、パターン認識プロセッサ14は、例えば、ブロック0(Block 0)からブロック512(Block 512)まで等の512個のブロックを含んでもよい。
【0064】
上で説明したグループ94、行98、及びブロック100は、フィーチャセルの階層的配列を記述している。プログラム化状態機械は、任意の数のフィーチャセル30を含んでもよい。従って、それぞれのグループ、行、またはブロックは、複数のプログラム化状態機械を含んでもよい。上記の検索サイクル中等のパターン認識プロセッサ14の動作中に、プログラム化状態機械(例えば、一つ以上のフィーチャセル)の各状態は、フィーチャセル30から出力され、各グループ94の出力ドライブセレクタ96によって選択された次状態(Next State)信号によって、プログラム化状態機械の次状態にルーティングされる(「次状態ルーティング」と呼ばれる)。
【0065】
図17〜図21は、本発明の実施形態に従う、次状態ルーティング、プログラマビリティ、及びハイスループットを提供する多重階層型ルーティングマトリクスを記載している。ここで用いるように、ターム「ルーティングマトリクス」は、パターン認識プロセッサ14のコンポーネント間の通信のルートを決めるための複数の接続を指す。以下に記載される「ルーティングマトリクス」は、上に記載された図1〜図12のマトリクスとは機能的に異なるものとなり得る。更に以下に記載するように、ルーティングマトリクスは、上記のパターン認識プロセッサ14の階層の各レベルに、各レベル内に、または、各レベル間に、プログラマブル及び/または非プログラマブル接続を提供することができる。それらの接続は、パターン認識プロセッサ14のフィーチャセル、グループ、行及びブロック間にルーティングラインを接続してもよい。その接続は、これらに限定されるものではないが、以下の種類の接続を含んでもよい:プログラマブル及び非プログラマブル;一方向性及び双方向性;論理的結合(OR、AND、XOR等);セレクタ(例えば、多数のうちの一つ);及びアイソレータ(配線に対する接続の切断)。プログラマブル接続は、上に挙げた任意の機能を実行するように構成されてもよい。例えば、プログラマブル接続は、一方向性、双方向性、任意の論理結合、セレクタ、アイソレータ等としてプログラムされてもよい。非プログラマブル接続は、上記の任意の機能を実行してもよいが、異なる機能と共にプログラムされることはできない。
【0066】
図17〜図21の接続は、以下の表1にまとめた接続シンボルによって示す。
図17は、本発明の実施形態に従う、図13における上記のフィーチャセル30のグループ94を含む階層レベルを示す。上で言及したように、各フィーチャセル30は、フィーチャセルを次状態として有効にする入力を受信してもよい。上にも記載したように、フィーチャセル30におけるプログラム化された検索基準に対して実行されたパターンマッチングに基づいて、フィーチャセル30は、次アクティブ状態(次状態信号)を有効にする出力を生成してもよい。
【0067】
フィーチャセル30の入力及び出力信号のルーティングは、接続によって決定される。グループ94のフィーチャセル30は、ローカルルートライン102(ローカルルート0(Local Route 0)及びローカルルート1(Local Route 1))によって相互接続されてもよい。グループ94のフィーチャセル30の出力は、出力接続104によって、ローカルルートライン102及び出力ドライブセレクタ96に結合されてもよい。例えば、フィーチャセル0は、第1の出力接続104Aによってローカルルートライン0に結合され、フィーチャセル1は、第2の出力接続によってローカルルートライン1に結合される。図17に図示したように、一実施形態では、出力接続は、非プログラマブル「第1レベル」接続である。このような実施形態では、接続104は、取り外し可能ではなく、設定変更可能ではない。他の実施形態では、出力接続104は、プログラマブルであってもよい。
【0068】
出力ドライブセレクタ96は、フィーチャセル30の受信出力から任意の数または任意の種類の信号を駆動するようにプログラムされてもよい。上に記載したように、一実施形態では、出力ドライブセレクタ96は、以下の三つの可能な論理出力のうちの一つを出力するように構成されてもよい:「次状態出力0(Next State Out 0)」;「次状態出力1(Next State Out 1)」;または、2つの次状態出力信号の論理和。他の実施形態では、出力ドライブセレクタ96は、AND、NOR、及び/またはXOR等の他の論理結合を出力するように構成されてもよい。
【0069】
ローカルルートライン102は、入力接続106によって、フィーチャセル30の(一つ以上の入力信号を表し得る)入力105に結合されてもよい。例えば、フィーチャセル0は、入力接続106A及び106Bによってそれぞれローカルルートライン0及び1に結合されてもよい。同様に、フィーチャセル1は、入力接続106C及び106Dによってそれぞれローカルルートライン0及び1に結合されてもよい。図17に図示したように、入力接続106は、プログラマブル「第1レベル」接続であってもよい。このような実施形態では、入力接続106は、任意の接続された入力105の論理和を提供するように構成されてもよい。
【0070】
図18は、上記の図14に図示したような本発明の実施形態に従う、グループ94の行98を有する階層レベルを示す。前述のように、各行98は、例えば、図18に示したようなグループ0(Group 0)からグループ7(Group 7)までのフィーチャセル30の任意の数のグループ94を含んでもよい。行98のグループは、行ルートライン108によって相互接続されてもよい。一実施形態では、行ルートライン108は、ブロック100の各行のために提供されてもよい。従って、ブロック100あたり16個の行98を有する実施形態では、16個の行ルートラインは、例えば、行ルートライン0(Row Route line 0)から行ルートライン15(Row Route line 15)を提供されてもよい。
【0071】
各グループ94の出力選択ドライブ96からの出力は、出力接続110によって各行ルートライン108に結合されてもよい。一実施形態では、出力接続は、プログラマブル「第2レベル」接続であってもよい。図18に図示したように、例えば、グループ0(Group 0)は、出力接続110A及び110Bによってそれぞれ行ルートライン0及び15に結合されてもよい。グループ7(Group 7)は、出力接続110C及び110Dによってそれぞれ行ルートライン0及び15に結合されてもよい。全ての他の行ルートライン(図示せず)は、出力接続110によってグループ0からグループ7の出力ドライブセレクタに結合されてもよい。出力接続110は、グループ94の出力ドライブセレクタ96が、特定の行ルートライン108を駆動するかまたは駆動しないようにすることができるように構成されてもよい。
【0072】
更に、行ルートライン108は、入力接続112によって各フィーチャセル30の入力105に結合されてもよい。一実施形態では、入力接続112は、プログラマブル「第2レベル」接続であってもよい。例えば、行ルートライン108は、入力接続112A及び112Bによってグループ0のフィーチャセル0(Feature Cell 0)の入力に結合されてもよく、かつ、行ルートライン108は、入力接続112C及び112Dによってグループ0のフィーチャセル1(Feature Cell 1)の入力に結合されてもよい。同様に、図18に図示したように、行ルートライン108は、入力接続112E及び112Fによってグループ7のフィーチャセル0の入力に結合されてもよく、かつ、行ルートライン108は、入力接続112G及び112Hによってグループ7のフィーチャセル0の入力に結合されてもよい。他の行ルートライン(図示せず)は、行98の各グループ94の各フィーチャセル30の入力に結合されてもよい。このような実施形態では、入力接続112は、フィーチャセル30に接続された任意の入力の論理和であるようにプログラムされてもよい。他の実施形態では、その接続は、非プログラマブル及び/または双方向性の接続であってもよい。
【0073】
次に、図19は、上記の図15で説明したような本発明の実施形態に従う、複数の行98を有するブロック100の階層レベルを示す。上記のように、ブロック100は、例えば、行0(Row 0)から行15(Row 15)まで等の任意の数の行98を含んでもよい。ブロック100の行98は、ブロック内ルートライン114によって接続されてもよい。ブロック内ルートライン114は、双方向接続116によって行ルートライン112に結合されてもよい。一実施形態では、双方向接続は、プログラマブル「第3レベル」接続であってもよい。例えば、ブロック内ラインのルートライン0は、双方向接続116Cによって行15の行ルートライン0に、かつ、双方向接続116Dによって行15の行ルートライン15に結合されてもよい。同様に、ブロック内ルートライン23は、双方向接続116Eによって行0の行ルートライン0に、かつ、双方向接続116Fによって行0の行ルートライン15に結合されてもよい。更に、図19にも図示したように、ブロック内ルートライン23は、双方向接続116Gによって行15の行ルートライン0に、かつ、双方向接続116Hによって行15の行ルートライン15に結合されてもよい。他のブロック内ライン(図示せず)は、双方向接続116によって各行98の各行ルートライン116に結合されてもよい。
【0074】
前述のように、双方向接続116は、プログラマブルであってもよい。従って、双方向接続116は、一つ以上のブロック内ルートライン114がそれぞれの行ルートライン112を駆動することができるように、または、一つ以上の行ルートライン112がそれぞれのブロック内ルートライン114を駆動することができるようにプログラムされてもよい。各双方向接続116は、個々にプログラムされてもよく、行ルートライン112とブロック内ルートライン114との間の接続の設定をライン単位で可能にすることができる。他の実施形態では、接続は、非プログラマブル及び/または一方向性の接続であってもよい。
【0075】
図20は、本発明の実施形態に従う、ブロック100を有するルーティングマトリクスの最上レベル階層117を示す。一実施形態では、図20に図示したように、最上レベル117は、例えば、ブロック0(Block 0)からブロック511(Block 511)まで等の512個のブロック100を含んでもよい。ブロック100は、最上レベルのルートライン118によって相互接続されてもよい。最上レベルのルートライン118は、双方向接続120によってブロック内ルートライン114に結合されてもよい。従って、図20に図示したように、最上レベルのルートライン0は、双方向接続120A及び120Bによってそれぞれブロック0のブロック内ルートライン0及びブロック内ルートライン23に結合されてもよい。同様に、最上レベルのルートライン0は、双方向接続120C及び120Dによってそれぞれブロック511のブロック内ルートライン0及びブロック内ルートライン23に結合されてもよい。図20に図示したように、最上レベルのルートライン23は、双方向接続120E及び120Fによってそれぞれブロック0のブロック内ルートライン0及びブロック内ルートライン23に結合されてもよい。更に、最上レベルのルートライン23は、双方向接続120G及び120Hによってそれぞれブロック511のブロック内ルートライン0及びブロック内ルートライン23に結合されてもよい。全ての他の最上レベルのルートライン(図示せず)は、双方向接続120によってブロック100のブロック内ルートライン114に結合されてもよい。
【0076】
図20に図示したように、双方向接続120は、プログラマブル「第4レベル接続」であってもよい。双方向接続は、一つ以上のブロック内ルートライン114がそれぞれの最上レベルのルートライン118を駆動することができるように、または、一つ以上の最上レベルのルートライン118がそれぞれのブロック内ルートライン114を駆動することができるようにプログラムされてもよい。従って、接続120は、ライン単位でプログラムされかつ構成されてもよい。他の実施形態では、接続は、非プログラマブル及び/または一方向性の接続であってもよい。
【0077】
好都合なことに、上記の多重階層ルーティングマトリクスは、デバイスのプログラム可能性の規則性、生産及び製造歩留まりの改善のための冗長性の実装、異なるアプリケーションに対する可変性、及び、論理変更の容易な視覚化及び実装を提供してもよい。
【0078】
前述のように、接続は、信号がラインを介してルーティングされないように、ラインを「切断する」ことができるアイソレータであってもよく、それによってパターン認識プロセッサ14の冗長部分を無効化させることができる。図21は、本発明の実施形態に従うパターン認識プロセッサ14の一つ以上のフィーチャセル30の分離を示す。例えば、パターン認識プロセッサ14は、パターン認識プロセッサ14によって用いられるより大きな容量を提供するフィーチャセル30のブロック130を含んでもよい。これは、製造時に、収量を高めるために、パターン認識プロセッサ14は、プロセッサ14の機能に対して明示されたものよりも過剰なメモリ容量(過剰なフィーチャセル30)を伴って製造されてもよい。プロセッサ14の製造及び試験時に、過剰なフィーチャセル30は、プロセッサ14によって用いられるプログラム化状態機械として利用可能なフィーチャセルを除去することによって「無効化」されてもよい。いくつかの実施形態は、フィーチャセル30の全てのブロックを用いなくてよい。このような実施形態では、不使用のブロックは、無効化されてもよい。無効化ブロックは、「アクティブ化」及び/または「電源投入」されなくてもよく、リフレッシュサイクル時にリフレッシュされなくてもよい。
【0079】
ブロック130は、最上レベルのルートラインとブロック内ルーラインとの間の接続132によってパターン認識プロセッサ14の他の部分に結合されてもよい。このような実施形態では、接続132は、任意の所期の機能にプログラムされ得るプログラマブル「第4レベル接続」であってもよい。従って、ブロック130が過剰な容量を提供する場合、接続132は、残りのルートラインからブロック130を分離するようにプログラムされてもよい。従って、最上レベルのルートライン118とブロック内ルートライン114との間の接続は、プログラマブル接続132によって「切断」されてもよい。ブロック130は、「無効化」と呼ばれる場合がある。更に、不使用ブロック130は、ブロック130において、好適なプログラミングビットをセットすること等によって、「電源断」されてもよい。
【0080】
対照的に、パターン認識プロセッサ14のプログラム化状態機械にメモリ容量を提供するために用いられる他のブロックは、最上レベルのルートライン118及びブロック内ルートライン114を介してアクセス可能であってもよい。例えば、図21に図示したように、ブロック134は、接続136によって、無効化ブロック132と同じ最上レベルのルートライン118に接続されてもよい。図21に図示したように、接続136は、プログラマブル第4レベル接続であってもよい。しかしながら、接続136は、最上レベルのルートラインにブロック内ルートラインを駆動させることかまたはその逆等によって、ブロック134によって提供されるメモリ容量にアクセスすることができるようにプログラムされてもよい。他の実施形態では、フィーチャセル30は、行レベルで、ブロック内ルートライン114と行ルートライン112との間の接続138をプログラムすること等によって、及び/または、グループレベルで、行ルートライン112とローカルルートライン102との間の接続140をプログラミングすること等によって、無効化されてもよい。
【0081】
更に、他の実施形態では、上記の多重階層ルーティングマトリクスは、パターン認識プロセッサ14に実装されたパターンマッチング機能に基づいて、レベル、接続等が異なる場合がある。例えば、他の実施形態は、階層における異なる個数のレベル、及び/または、レベル、グループ、行、及び/またはブロック間における異なる個数の接続を含んでもよい。更に、他の実施形態は、プログラマブル接続に使用可能な異なるプログラマブル機能、階層における異なる種類の接続及び異なるポイント、接続ラインを複数のラインにプログラム的に分割する能力、及び、階層において異なるレベルで異なる機能を追加及び/または削除する能力を含んでもよい。
【0082】
図22は、本発明の実施形態に従う、上記の多重階層ルーティングマトリクスの設定のプロセス142を示す。パターン認識プロセッサの設定時に、階層の各レベルにおけるまたは各レベル間における接続は、任意の順番でプログラムされてもよい。更に、このような接続は、パターン認識プロセッサ14に望まれる特定のパターンマッチング実装に基づいて、手動でまたは自動的にプログラムされてもよい。また、マトリクスのレベルにおけるまたはレベル間における接続をプログラムすることは、マトリクスの他のレベルにプログラムされる機能に依存してもよいことが認識されるべきである。最初に、第1レベルの階層の接続がプログラムされてもよい(ブロック144)。例えば、これは、上記の図17の接続106をプログラムする等の、フィーチャセル30の入力とローカルルートライン102との間の接続と、フィーチャセル30の出力とローカルルートライン102との間の接続とをプログラムすることを含んでもよい。いくつかの実施形態では、フィーチャセル30からの入力及び/または出力接続は、非プログラマブル接続であってもよく、かつ、プログラムされなくてもよい。例えば、上記の図17にも図示したように、一実施形態では、出力接続104は、非プログラマブル接続であってもよい。
【0083】
次に、第2レベルの階層の接続がプログラムされてもよい(ブロック146)。一実施形態では、このようなプログラミングは、上記の図17に図示したように、行ルートライン108とグループ94との間の入力接続をプログラムすることを含んでもよい。例えば、フィーチャセル30への入力と行ルートライン108との間の接続112は、フィーチャセル30への入力105の論理和(または他の関数)になるようにプログラムされてもよい。同様に、出力接続110は、グループ94の行ルートライン及び出力ドライブセレクタ96間の所期の機能性を提供するようにプログラムされてもよい。
【0084】
更に、第3レベルの階層ルーティングマトリクスの接続がプログラムされてもよい(ブロック148)。上記の図19において説明したように、一実施形態では、行ルートライン112とブロック内ルートライン114との間の接続116がプログラムされてもよい。例えば、接続116は、或るフィーチャセルまたは任意の他のプログラマブル機能を分離(無効化)するために、ブロック内ルートライン114と行ルートライン112との間に所期の機能を提供するようにプログラムされてもよい。
【0085】
次に、第4レベルの階層の接続がプログラムされてもよい(ブロック150)。上記の図20に図示した実施形態では、このようなプログラミングは、ブロック内ルートライン114と最上レベルのルートライン118との間の接続をプログラムすることを含んでもよい。例えば、図20に図示した接続120は、最上レベルのルートライン118とブロック内ルートライン114との間の所期の機能を提供するようにプログラムされてもよい。上記の図21でも説明したように、いくつかの実施形態では、このようなプログラミングは、パターン認識プロセッサ14の冗長な容量(例えば、フィーチャセル)を無効化することを含んでもよい。図22に図示したように、接続のこのようなプログラミングは、第n位のルーティングマトリクスまで継続してもよい(ブロック152)。ルーティングマトリクスの接続をプログラムすることによって、パターン認識プロセッサ14は、所期の論理及びフィーチャセル(及び状態機械)間の次状態ルーティングを提供するように構成されてもよい。前述のように、接続のプログラミングは、パターン認識プロセッサ14の設定についてのナレッジを提供し、更にまた、異なる実装のためのルーティングの柔軟性及び可変性を提供する。
【技術分野】
【0001】
本発明の実施形態は、概して、パターン認識プロセッサに関し、より詳細には、特定の実施形態において、そのようなプロセッサの接続アーキテクチャに関する。
【背景技術】
【0002】
コンピューティングの分野では、パターン認識タスクは、益々難しくなっている。従来と比べて大量のデータがコンピュータ間で送信され、ユーザが識別することを望むパターンの数は増加している。例えば、特定のフレーズまたはコードの一部等のデータストリーム内のパターンを検索することによって、例えば、スパムまたはマルウェアが頻繁に検出される。新しいパターンが新しい変種を検索するために実装され得るので、パターンの数はスパム及びマルウェアの多様性によって増加する。データストリームでこれらの各パターンを検索することは、コンピューティング・ボトルネックを形成し得る。しばしば、データストリームが受信されると、各パターンに対して一度に一つずつデータストリームが検索される。システムがデータストリームの次の部分を検索する準備が整うまでの遅延は、パターンの数とともに増大する。従って、パターン認識は、データの受信を遅くする場合がある。
【0003】
このようなパターン認識プロセッサは、入力が処理されると状態(ステート)が次々と遷移する多数の有限状態機械(有限ステートマシン)(FSM)を含んでもよい。従来のプロセッサの内部接続は、フリップフロップまたは他のメモリ素子に接続された物理的配線に依存する。しかしながら、このような接続は、パターン認識プロセッサの性能を満たすことを不可能にする場合がある。更に、このような接続は一般的に、設定(構成)変更可能ではなく、又は所期の機能性を満たすことができない。パターン認識プロセッサ内の接続の距離、速度、及び、設定(構成)変更可能性は、シリコンにおける実装を難しくする場合がある。
【図面の簡単な説明】
【0004】
【図1】データストリームを検索するシステムの実施例を示す。
【図2】図1のシステム内のパターン認識プロセッサの実施例を示す。
【図3】図2のパターン認識プロセッサ内の検索タームセルの実施例を示す。
【図4】データストリームから一文字を検索する図3の検索タームセルを示す。
【図5】データストリームから一文字を検索する図3の検索タームセルを示す。
【図6】データストリームから単語を検索するいくつかの検索タームセルを含む認識モジュールを示す。
【図7】データストリームから単語を検索するいくつかの検索タームセルを含む認識モジュールを示す。
【図8】データストリームから単語を検索するいくつかの検索タームセルを含む認識モジュールを示す。
【図9】データストリームから2つの単語を並行して検索するように構成された認識モジュールを示す。
【図10】同一の接頭辞を持つ複数の単語を特定する検索条件に従って検索する認識モジュールを示す。
【図11】同一の接頭辞を持つ複数の単語を特定する検索条件に従って検索する認識モジュールを示す。
【図12】同一の接頭辞を持つ複数の単語を特定する検索条件に従って検索する認識モジュールを示す。
【図13】本発明の実施形態に従う、パターン認識プロセッサのフィーチャセルの階層的配列を示す。
【図14】本発明の実施形態に従う、パターン認識プロセッサのフィーチャセルの階層的配列を示す。
【図15】本発明の実施形態に従う、パターン認識プロセッサのフィーチャセルの階層的配列を示す。
【図16】本発明の実施形態に従う、パターン認識プロセッサのフィーチャセルの階層的配列を示す。
【図17】本発明の実施形態に従う、パターン認識プロセッサの多重階層ルーティングマトリクスを示す。
【図18】本発明の実施形態に従う、パターン認識プロセッサの多重階層ルーティングマトリクスを示す。
【図19】本発明の実施形態に従う、パターン認識プロセッサの多重階層ルーティングマトリクスを示す。
【図20】本発明の実施形態に従う、パターン認識プロセッサの多重階層ルーティングマトリクスを示す。
【図21】本発明の実施形態に従う、パターン認識プロセッサのフィーチャセルの一部を使用不可にすることを示す。
【図22】本発明の実施形態に従う、多重階層ルーティングマトリクスの接続をプログラミングするためのプロセスのフローチャートである。
【発明を実施するための形態】
【0005】
図1は、データストリーム12を検索するシステム10の一実施例を示す。システム10は、検索基準(searchcriteria)16に従ってデータストリーム12を検索するパターン認識プロセッサ14を含んでもよい。
【0006】
各検索基準は、一つ以上の対象表現、すなわちパターンを特定してもよい。“対象表現”という用語は、パターン認識プロセッサ14が検索するためのデータ配列(シーケンス)のことをいう。対象表現の例は、ある単語を綴る文字配列、遺伝子を特定する遺伝子塩基対配列、画像の一部を形成する画像ファイルもしくはビデオファイルにおけるビット配列、プログラムの一部を形成する実行可能ファイルにおけるビット配列、または、歌もしくは話された言葉の一部を形成するオーディオファイルにおけるビット配列を含む。
【0007】
検索基準は、一つを超える対象表現を特定してもよい。例えば、検索基準は、文字列“cl”で始まる全5文字の単語、文字列“cl”で始まるあらゆる単語、3回以上“cloud”という単語を含む段落などを特定してもよい。対象表現のうちで生じうる組の数は、任意の大きさであり、例えば、データストリームが提示し得るデータの順列の存在するのと同一数の対象表現が存在する可能性がある。検索基準は、種々のフォーマットで表現されてもよく、そのフォーマットは、正規表現として、各対象表現を必ずしも記載することなく、対象表現の組を簡潔に特定するプログラミング言語を含む。
【0008】
各検索基準は、一つ以上の検索タームから構成されてもよい。したがって、検索基準の各対象表現は一つ以上の検索タームを含み、幾つかの対象表現は、共通の検索タームを使用してもよい。本明細書で使用されるように、“検索ターム”という用語は、単一の検索サイクルの間に検索されるデータの配列のことをいう。データの配列は、バイナリフォーマットもしくは、例えば、10進法、ASCIIなどの他のフォーマットにおける複数ビットのデータを含んでもよい。配列は、単一のディジットもしくは複数のディジット(例えば幾つかのバイナリディジット)でデータをエンコードしてもよい。例えば、パターン認識プロセッサ14は、一度に一文字をテキストデータストリーム12から検索し、検索タームは、例えば、文字“a”、文字“a”か“e”のいずれか、または、全ての単一文字の組を特定するワイルドカード検索タームなど、単一文字の組を特定してもよい。
【0009】
検索タームは、文字(もしくは、データストリームによって表現される情報の他の書記素、すなわち基本単位、例えば、音符、遺伝子塩基対、10進法のディジット、サブピクセル)を特定するビット数よりも小さいか、または大きくてもよい。例えば、検索タームは8ビットであり、単一文字は16ビットであり、この場合には、二つの連続した検索タームは単一文字を特定してもよい。
【0010】
検索基準16は、コンパイラ18によってパターン認識プロセッサ14のためにフォーマットされてもよい。フォーマットするステップは、検索基準から検索タームを分解するステップを含んでもよい。例えば、データストリーム12によって表現された書記素が検索タームよりも大きい場合、コンパイラは単一の書記素を検索するために、複数の検索タームへと検索基準を分解してもよい。同様に、データストリーム12によって表現された書記素が検索タームよりも小さい場合、コンパイラ18は、各個別の書記素に対して、使用されていないビットを伴う単一の検索タームを提供してもよい。コンパイラ18は、パターン認識プロセッサ14によって本来サポートされていない種々の正規表現演算子をサポートするために、検索基準16をフォーマットしてもよい。
【0011】
パターン認識プロセッサ14は、データストリーム12から各新規タームを評価することによって、データストリーム12を検索してもよい。本明細書における“ターム”という用語は、検索タームに一致しうるデータ量のことをいう。検索サイクルの間、パターン認識プロセッサ14は、現在提示されているタームが検索基準における現在の検索タームに一致するかどうかを決定してもよい。タームが検索タームと一致する場合には、評価は“進行”し、すなわち、次のタームが検索基準における次の検索タームと比較される。そのタームが一致しない場合には、次のタームは、検索基準における第一のタームと比較され、それによって検索をリセットする。
【0012】
各検索基準は、パターン認識プロセッサ14における異なる有限状態機械(有限ステートマシン)へとコンパイルされてもよい。有限状態機械は、パラレルに(並行して)実行してもよく、検索基準16に従ってデータストリーム12を検索する。有限状態機械は、先行する検索タームがデータストリーム12と一致する場合に検索基準における連続する各検索タームへと進んでもよい。または、検索タームが一致しない場合には、有限状態機械は検索基準における第一の検索タームの検索を開始してもよい。
【0013】
パターン認識プロセッサ14は、幾つかの検索基準に従って各新規タームを評価し、ほぼ同時に、例えば、単一のデバイスサイクルの間に其々の検索タームを評価してもよい。パラレルな有限状態機械は、ほぼ同時にデータストリーム12からタームを各々受信し、パラレルな有限状態機械の各々は、そのタームが、パラレルな有限状態機械を検索基準における次の検索タームへと進めるかどうかを決定してもよい。パラレルな有限状態機械は、比較的多数の検索基準(例えば、100以上、1000以上、もしくは10000以上)に従って、タームを評価してもよい。それらはパラレルに動作するため、データストリームを遅延させることなく、比較的高いバンド幅を有するデータストリーム12(例えば、64MB毎秒もしくは128MB毎秒より大きいかほぼ同一のデータストリーム12)に対して検索基準を適用してもよい。幾つかの実施形態においては、検索サイクルの継続期間は、検索基準の数によって増減しないため、検索基準の数はパターン認識プロセッサ14の性能にあまり影響を与えることはない。
【0014】
検索基準が満足されるとき(すなわち、最後の検索タームに進行してそれが一致した後)、パターン認識プロセッサ14は、中央処理装置(CPU)20などの処理装置に対して基準を満足したことを報告してもよい。中央処理装置20は、パターン認識プロセッサ14およびシステム10の他の部分を制御してもよい。
【0015】
システム10は、データのストリームを検索する種々のシステムもしくはデバイスのうちのいずれであってもよい。例えば、システム10は、データストリーム12を検索するデスクトップ、ラップトップ、ハンドヘルドもしくは他のタイプのコンピュータであってもよい。システム10は、ルータ、サーバ、もしくはクライアント(例えば、前述されたタイプのコンピュータのうちの一つ)などのネットワークノードであってもよい。システム10は、コピー機、スキャナ、プリンタ、ゲーム機、テレビ、セットトップビデオ分配もしくは録画システム、ケーブルボックス、パーソナルデジタルメディアプレイヤー、工場自動化システム、自動車用コンピュータシステムまたは医療デバイスなどの他の種類の何らかの電子装置であってもよい。(これらの種々のシステムの実施例を記述するために使用される用語は、本明細書で使用される他の多くの用語と同様に、幾つかの指示対象を共有し、それ自体は、列挙された他の項目によって、範囲を狭めて解釈されるべきではない。)
【0016】
データストリーム12は、ユーザもしくは他の主体が検索を望む可能性のある、種々のタイプの一つ以上のデータストリームであってもよい。例えば、データストリーム12は、インターネットを介して受信されたパケット、または、携帯電話ネットワークを介して受信された音声もしくはデータなど、ネットワークを介して受信されたデータのストリームであってもよい。データストリーム12は、画像センサ、温度センサ、加速度計などもしくはその組み合わせなど、システム10と連通するセンサから受信されたデータであってもよい。データストリーム12は、シリアルデータストリームとしてシステム10によって受信され、そのデータは、時間的、語彙的、もしくは意味論的に重要視される順序など、意味のある順序で受信される。或いは、データストリーム12は、パラレルにもしくはバラバラの順序で受信され、その後、例えば、インターネットを介して受信されたパケットを順番に並べ替えることによって、シリアルデータストリームへと変換される。幾つかの実施形態においては、データストリーム12は、タームをシリアルに提示してもよいが、各タームを表すビットはパラレルに受信されてもよい。データストリーム12は、システム10の外部のソースから受信されてもよく、または、メモリデバイスにインテロゲート(質問)し、格納されたデータからデータストリーム12を形成することによって形成されてもよい。
【0017】
データストリーム12におけるデータのタイプに依存して、異なるタイプの検索基準が設計者によって選択されてもよい。例えば、検索基準16は、ウイルス定義ファイルであってもよい。ウイルスもしくは他のマルウェアは特徴づけられ、また、マルウェアの幾つかの態様が使われ、データストリーム12がマルウェアを伝達しそうかどうかを示す検索基準を形成することができる。結果として生じる検索基準はサーバに格納され、クライアントシステムのオペレータはシステム10へと検索基準をダウンロードするサービスに登録してもよい。検索基準16は、異なるタイプのマルウェアが現れるので、サーバから定期的にアップデートされてもよい。検索基準は、ネットワークを介して受信される可能性のある望ましくないコンテンツ、例えば、(スパムとしてよく知られている)迷惑電子メールもしくはユーザが望まない他のコンテンツ、を特定するために使用されてもよい。
【0018】
データストリーム12は、システム10によって受信されているデータに関心を持つ第三者によって検索されてもよい。例えば、データストリーム12は、著作物に現れる文字列、音声系列、ビデオ系列を捜すために検索されてもよい。データストリーム12は、刑事捜査もしくは民事手続きに関係する言辞、もしくは使用者にとって関心のある言辞を捜すために検索されてもよい。
【0019】
検索基準16は、例えば、CPU20もしくはパターン認識プロセッサ14によってアドレス可能なメモリにおいて、翻訳が可能であるデータストリーム12におけるパターンを含んでもよい。例えば、検索基準16は、対応するスペイン語がメモリに格納された英単語を各々特定してもよい。別の実施例においては、検索基準16は、例えば、デコードされたバージョンのデータストリーム12が使用可能であるMP3、MPEG4、FLAC、OggVorbisなど、エンコードされたバージョンのデータストリーム12を特定してもよいし、その逆を特定してもよい。
【0020】
パターン認識プロセッサ14は、CPU20と共に(単一のデバイスなどの)単一の構成部分に統合されたハードウェア装置であってもよいし、別個の構成部分として形成されてもよい。例えば、パターン認識プロセッサ14は別個の集積回路であってもよい。パターン認識プロセッサ14は、“コプロセッサ”もしくは“パターン認識コプロセッサ”と称される場合がある。
【0021】
図2は、パターン認識プロセッサ14の一実施例を示す。パターン認識プロセッサ14は、認識モジュール22および集約モジュール24を含んでもよい。認識モジュール22は、受信されたタームを検索タームと比較するように構成され、認識モジュール22および集約モジュール24の双方は、協力して検索タームとタームとの一致が検索基準を満足するかどうかを決定するようにしてもよい。
【0022】
認識モジュール22は、行デコーダ28および複数のフィーチャセル30を含んでもよい。各フィーチャセル30は検索タームを特定し、フィーチャセル30のグループは、検索基準を形成するパラレルな有限状態機械を形成してもよい。フィーチャセル30のコンポーネントは、検索タームアレイ32、検出アレイ34およびアクティブ化ルーティングマトリクス36を形成してもよい。検索タームアレイ32は複数の入力導体37を含み、入力導体37の各々は、行デコーダ28と連通する状態に各フィーチャセル30を置くことができる。
【0023】
行デコーダ28は、データストリーム12のコンテンツに基づいて、複数の入力導体37中の特定の導体を選択してもよい。例えば、行デコーダ28は、1タームを表現し得る受信バイトの値に基づいて、256行のうちの1つをアクティブ化する、1バイトから256への行デコーダであってもよい。00000000の1バイトタームは、複数の入力導体37のうち最も上の行に対応し、11111111の1バイトタームは、複数の入力導体37のうちの最も下の行に対応してもよい。したがって、異なる入力導体37は、どのタームがデータストリーム12から受信されるかに依存して選択されてもよい。異なるタームが受信されると、行デコーダ28は、前のタームに対応する行を非アクティブ化し、新規タームに対応する行をアクティブ化してもよい。
【0024】
検出アレイ34は、検索基準を完全にもしくは部分的に満足することを示す信号を集約モジュール24に出力する検出バス38に結合してもよい。アクティブ化ルーティングマトリクス36は、検索基準における一致した検索ターム数に基づいて、フィーチャセル30を選択的にアクティブ化および非アクティブ化してもよい。
【0025】
集約モジュール24は、ラッチマトリクス40、集約ルーティングマトリクス42、閾値論理マトリクス44、論理積マトリクス46、論理和マトリクス48および初期化ルーティングマトリクス50を含んでもよい。
【0026】
ラッチマトリクス40は、ある検索基準の一部を実装してもよい。例えば、幾つかの正規表現などの幾つかの検索基準は、最初の一つの一致もしくは一群の一致の発生のみを計数する。ラッチマトリクス40は、一致が生じたかどうかを記録する複数のラッチを含んでもよい。ラッチは初期化の間にクリアされてもよく、動作中に定期的に再初期化されてもよく、その間に、検索基準が満足されたと判定され、もしくはそれ以上満足されない、すなわち、その検索基準が満足されるより前に前の検索タームを再度マッチングさせる必要があると判定される。
【0027】
集約ルーティングマトリクス42は、アクティブ化ルーティングマトリクス36と類似した機能を果たしてもよい。集約ルーティングマトリクス42は、検出バス38上で一致を示す信号を受信し、閾値論理マトリクス44に接続する異なるグループ論理ライン53へと信号をルーティングしてもよい。集約ルーティングマトリクス42は、検索基準が満足された、もしくはこれ以上満足されないと判定されたとき、検出アレイ34の一部をリセットするために、検出アレイ34へと初期化ルーティングマトリクス50の出力をルーティングしてもよい。
【0028】
閾値論理マトリクス44は、例えば、数を数える(カウントアップする)、または数を逆に数える(カウントダウンする)ように構成された32ビットカウンタなどの、複数のカウンタを含んでもよい。閾値論理マトリクス44は、初期カウントがロードされ、認識モジュールによって信号通知される一致に基づいてそのカウントから、カウントアップもしくはカウントダウンしてもよい。例えば、閾値論理マトリクス44は、ある長さの文字列の単語が現れた数を数えてもよい。
【0029】
閾値論理マトリクス44の出力は、論理積マトリクス46に対する入力であってもよい。論理積マトリクス46は、“積”の結果(例えば、ブール論理における“AND”関数)を選択的に生成してもよい。論理積マトリクス46は、正方行列として実装され、出力積の数は、閾値論理マトリクス44からの入力ラインの数と同一であるか、または、論理積マトリクス46は、出力とは異なる個数の入力を有してもよい。結果として生じる積の値は、論理和マトリクス48に対する出力であってもよい。
【0030】
論理和マトリクス48は、和(例えば、ブール論理における“OR”関数)を選択的に生成してもよい。論理和マトリクス48もまた、正方行列として実装されるか、または、論理和マトリクス48は、出力とは異なる個数の入力を有してもよい。入力は論理積であるため、論理和マトリクス48の出力は、論理的な積和(例えば、ブール論理での積和(SOP)形)であってもよい。論理和マトリクス48の出力は、初期化ルーティングマトリクス50によって受信されてもよい。
【0031】
初期化ルーティングマトリクス50は、集約ルーティングマトリクス42を介して、検出アレイ34および集約モジュール24の一部をリセットしてもよい。初期化ルーティングマトリクス50は、正方行列として実装されるか、または、初期化ルーティングマトリクス50は、出力とは異なる個数の入力を有してもよい。初期化ルーティングマトリクス50は、論理和マトリクス48からの信号に応じて、例えば、検索基準が満足されたとき、または、検索基準がこれ以上満足されないと判定されたとき、パターン認識プロセッサ14の他の部分を再初期化してもよい。
【0032】
集約モジュール24は、閾値論理マトリクス44、集約ルーティングマトリクス42、および論理和マトリクス48の出力を受信する出力バッファ51を含んでもよい。集約モジュール24の出力は、出力バッファ51から出力バス26上にCPU20(図1)へと伝送されてもよい。幾つかの実施形態においては、出力マルチプレクサは、これらのコンポーネント42、44および48からの信号を多重化し、基準を満足したことを示す信号、もしくは検索タームの一致を示す信号をCPU20(図1)へと出力してもよい。他の実施形態においては、パターン認識プロセッサ14からの結果は、出力マルチプレクサを介して信号を伝送することなく報告されてもよいが、このことは、本明細書で記述されるあらゆる他の特徴も省略される可能性がないことを示唆するものではない。例えば、閾値論理マトリクス44、論理積マトリクス46、論理和マトリクス48もしくは初期化ルーティングマトリクス50からの信号は、出力バス26上でパラレルにCPUへと伝送されてもよい。
【0033】
図3は、検索タームアレイ32(図2)における単一のフィーチャセル30の一部を示し、それは検索タームセル54として本明細書で称されるコンポーネントである。検索タームセル54は、出力導体56および複数のメモリセル58を含んでもよい。各メモリセル58は、出力導体56と複数の入力導体37の中の導体の一つとの両方へと結合されてもよい。選択されている入力導体37に応答して、各メモリセル58は、格納された値を示す値を出力し、出力導体56を介してそのデータを出力する。幾つかの実施形態においては、複数の入力導体37は“ワード線”と称され、出力導体56は“データ線”と称される場合がある。
【0034】
メモリセル58は、種々のタイプのメモリセルのうちのいずれを含んでいてもよい。例えば、メモリセル58は、トランジスタとキャパシタを有するダイナミックランダムアクセスメモリ(DRAM)セルなどの揮発性メモリであってもよい。トランジスタのソースおよびドレインは、其々、キャパシタのプレートおよび出力導体56へと接続され、トランジスタのゲートは入力導体37のうちの一つへと接続されてもよい。揮発性メモリの別の実施例においては、各メモリセル58は、スタティックランダムアクセスメモリ(SRAM)セルを含んでもよい。SRAMセルは、入力導体37の一つによって制御されるアクセストランジスタによって、出力導体56へと選択的に結合される出力を有してもよい。メモリセル58は、相変化メモリ(例えば、オボニックデバイス)、フラッシュメモリ、シリコン・酸化物・窒化物・酸化物・シリコン(SONOS)メモリ、磁気抵抗メモリもしくは他のタイプの不揮発性メモリなどの不揮発性メモリをも含んでもよい。メモリセル58は、フリップフロップ、例えば、論理ゲートによって形成されたメモリセルをも含んでもよい。
【0035】
図4および図5は、動作中の検索タームセル54の一実施例を示す。図4は、セルの検索タームに一致しないタームを受信する検索タームセル54を示し、図5は、セルの検索タームに一致するタームを受信する検索タームセル54を示す。
【0036】
図4によって示されるように、検索タームセル54は、メモリセル58にデータを格納することによって、一つ以上のタームを検索するように構成されてもよい。メモリセル58は、例えば図3において、データストリーム12が提示する可能性のあるタームを各々表し、各メモリセル58は文字“a”で開始し、数字“9”で終了する単一の文字もしくは数字を表す。検索タームを満足するタームを表すメモリセル58は、第一の値を格納するようにプログラムされ、検索タームを満足するタームを表していないメモリセル58は、異なる値を格納するようにプログラムされてもよい。図示された実施例においては、検索タームセル54は、文字“b”を検索するように構成されている。“b”を表すメモリセル58は、1もしくは論理的なハイを格納し、“b”を表していないメモリセル58は、0もしくは論理的なロウを格納するようにプログラムされてもよい。
【0037】
データストリーム12からのタームを検索タームと比較するために、行デコーダ28は、受信されたタームを表すメモリセル58に結合された入力導体37を選択してもよい。図4においては、データストリーム12は、小文字の“e”を提示する。このタームは、8ビットASCIIコード形式でデータストリーム12によって提示され、行デコーダ28は、行アドレスとしてこのバイトを解釈し、導体60に電圧を印加することによって、導体60上に信号を出力する。
【0038】
それに応答して、導体60によって制御されるメモリセル58は、メモリセル58が格納するデータを示す信号を出力し、その信号は出力導体56によって伝送されてもよい。この場合には、文字“e”は、検索タームセル54によって特定されたタームのうちの一つではないため、検索タームとは一致せず、検索タームセル54は0値を出力し、それは一致が見つからなかったことを示している。
【0039】
図5においては、データストリーム12は、文字“b”を提示する。再度、行デコーダ28はこのタームをアドレスとして解釈し、行デコーダ28は導体62を選択してよい。それに応答して、文字“b”を表すメモリセル58は、格納された値を出力し、この場合には、それは1であり、一致を示している。
【0040】
検索タームセル54は一度に一つを超えるタームを検索するように構成されてもよい。複数のメモリセル58は、1を格納するようにプログラムされ、一つを超えるタームと一致する検索タームを特定する。例えば、小文字“a”および大文字“A”を表すメモリセル58は、1を格納するようにプログラムされ、検索タームセル54は、いずれかのタームを検索してもよい。別の実施例においては、検索タームセル54は、いかなる文字が受信された場合にも一致を出力するように構成されてもよい。全メモリセル58は、1を格納するようにプログラムされてもよく、検索タームセル54は、検索基準におけるワイルドカードタームとして機能してもよい。
【0041】
図6〜図8は、例えば一単語など複数ターム検索基準に従って検索する認識モジュール22を示す。具体的には、図6は一単語の最初の文字を検出する認識モジュール22を示し、図7は、第二の文字の検出を示し、図8は、最後の文字の検出を示す。
【0042】
図6によって示されるように、認識モジュール22は、単語“big”を検索するように構成されてもよい。3個の隣接するフィーチャセル63、64および66が示される。フィーチャセル63は、文字“b”を検出するように構成される。フィーチャセル64は、文字“i”を検出するように構成される。フィーチャセル66は、文字“g”を検出し、検索基準が満足されたことを示すように構成される。
【0043】
図6は、また検出アレイ34のさらなる詳細を示す。検出アレイ34は、各フィーチャセル63、64および66における検出セル68を含んでもよい。各検出セル68は、上述されたタイプのメモリセルのうちの一つ(例えば、フリップフロップ)のような、メモリセル70を含んでもよく、メモリセル70は、フィーチャセル63、64もしくは66がアクティブか非アクティブかを示す。検出セル68は、検出セルがアクティブであるかどうかのみならず、関連付けられた検索タームセル54から一致を示す信号を受信したかどうかを示す信号を、アクティブ化ルーティングマトリクス36へと出力するように構成されてもよい。非アクティブなフィーチャセル63、64および66は、一致を無視してもよい。各検出セル68は、メモリセル70および出力導体56からの入力を有する、ANDゲートを含んでもよい。ANDゲートの出力は、検出バス38とアクティブ化ルーティングマトリクス36との両方へ、またはそのどちらか一方へとルーティングされてもよい。
【0044】
今度は、アクティブ化ルーティングマトリクス36は、検出アレイ34におけるメモリセル70へと書き込むことによって、フィーチャセル63、64および66を選択的にアクティブ化してもよい。アクティブ化ルーティングマトリクス36は、検索基準ならびに次にどの検索タームがデータストリーム12において検索されるかに従って、フィーチャセル63、64もしくは66をアクティブ化してもよい。
【0045】
図6においては、データストリーム12は文字“b”を提示する。それに応答して、各フィーチャセル63、64および66は、その出力導体56上に信号を出力し、文字“b”を表す導体62に接続されたメモリセル58に格納された値を示す。検出セル56は、その後、一致を示す信号を受信したかどうか、ならびに検出セル56がアクティブかどうかを各々決定してもよい。フィーチャセル63は文字“b”を検出するように構成され、そのメモリセル70によって示されるようにアクティブであるため、フィーチャセル63における検出セル68は、アクティブ化ルーティングマトリクス36へと信号を出力して、検索基準のうちの第一の検索タームが一致したことを示す。
【0046】
図7によって示されるように、第一の検索タームが一致した後、アクティブ化ルーティングマトリクス36は、検出セル68におけるメモリセル70へと1を書き込むことによって、次のフィーチャセル64をアクティブ化してもよい。次のタームが第一の検索タームを満足する場合(例えば、タームの配列“bbig”が受信された場合)アクティブ化ルーティングマトリクス36はフィーチャセル63のアクティブ状態を維持してもよい。検索基準のうちの第一の検索タームは、データストリーム12が検索される時間のうちの一部もしくは実質的に全期間の間、アクティブ状態に維持されてもよい。
【0047】
図7においては、データストリーム12は認識モジュール22へ文字“i”を出力する。それに応じて、各フィーチャセル63、64および66は、その出力導体56上に信号を出力し、その信号は文字“i”を表す導体72へと接続されたメモリセル58に格納された値を示す。検出セル56は、その後、一致を示す信号を受信したかどうか、ならびに検出セル56がアクティブかどうかを各々決定してもよい。フィーチャセル64は文字“i”を検出するように構成され、メモリセル70によって示されるようにアクティブであるため、フィーチャセル64における検出セル68は、アクティブ化ルーティングマトリクス36へと、検索基準の次の検索タームが一致したことを示す信号を出力する。
【0048】
続いて、図8に示されるように、アクティブ化ルーティングマトリクス36はフィーチャセル66をアクティブ化してもよい。次のタームを評価する前に、フィーチャセル64は非アクティブ化されてもよい。フィーチャセル64は、検出サイクルの合間にそのメモリセル70をリセットするその検出セル68によって非アクティブ化されてもよく、または、例えば、アクティブ化ルーティングマトリクス36がフィーチャセル64を非アクティブ化してもよい。
【0049】
図8においては、データストリーム12は行デコーダ28へと、ターム“g”を出力し、行デコーダ28はターム“g”を表す導体74を選択する。それに応答して、各フィーチャセル63、64および66は、その出力導体56上に、文字“g”を表す導体74へと接続されたメモリセル58に格納された値を示す信号を出力する。検出セル56は、その後、一致を示す信号を受信したかどうか、ならびに検出セル56がアクティブかどうかを各々決定してもよい。フィーチャセル66は文字“g”を検出するように構成され、そのメモリセル70によって示されるようにアクティブであるため、フィーチャセル66における検出セル68は、アクティブ化ルーティングマトリクス36へと、検索基準の最後の検索タームが一致したことを示す信号を出力する。
【0050】
検索基準の終わりかもしくは検索基準の一部かは、アクティブ化ルーティングマトリクス36もしくは検出セル68によって識別されてもよい。これらのコンポーネント36もしくは68は、フィーチャセル63、64もしくは66が検索基準の最終検索タームか検索基準のコンポーネントかを特定するかどうかを示すメモリを含んでもよい。例えば、検索基準は、“cattle”という単語が二度現れる全ての文を特定し、認識モジュールは、一つの文内の各々の“cattle”の出現を示す信号を集約モジュールへと出力し、集約モジュールは、その出現回数を数え、検索基準が満足されたかどうかを判定する。
【0051】
フィーチャセル63、64もしくは66は幾つかの条件下でアクティブ化されてもよい。フィーチャセル63、64もしくは66は、“常にアクティブ”であってもよく、それは、全検索の間、もしくは実質的に全ての検索の間アクティブ状態のままであることを意味する。常にアクティブなフィーチャセル63、64もしくは66の一実施例は、検索基準の第一のフィーチャセル、例えば、フィーチャセル63である。
【0052】
フィーチャセル63、64もしくは66は、“要求されたときアクティブ”であってもよく、それは、或る先行する条件が一致したとき、例えば、検索基準における先行する検索タームが一致したときに、フィーチャセル63、64もしくは66がアクティブになることを意味する。一実施例は、図6−図8におけるフィーチャセル63によって要求されたときにアクティブになるフィーチャセル64と、フィーチャセル64によって要求されたときにアクティブになるフィーチャセル66である。
【0053】
フィーチャセル63、64もしくは66は、“自己アクティブ化”されてもよく、それは、一度アクティブ化されればその検索タームが一致している限り、それ自身をアクティブ化することを意味する。例えば、いかなる数値のディジットにでも一致した検索タームを有する自己アクティブ化されたフィーチャセルは、シーケンス“123456xy”の間、文字“x”に到達するまで、アクティブ化したままであってもよい。自己アクティブ化されたフィーチャセルの検索タームが一致するたび、自己アクティブ化されたフィーチャセルは検索基準における次のフィーチャセルをアクティブ化してもよい。したがって、常にアクティブなフィーチャセルは、自己アクティブ化するフィーチャセルおよび要求されたときにアクティブなフィーチャセルから形成されてもよい。自己アクティブ化フィーチャセルは、1を格納するメモリセル58の全てと共にプログラムされてもよく、要求されたときアクティブなフィーチャセルを各タームの後に繰り返しアクティブ化してもよい。幾つかの実施形態においては、各フィーチャセル63、64および66は、フィーチャセルが常にアクティブかどうかを識別するメモリセルを、検出セル68もしくはアクティブ化ルーティングマトリクス36に含んでもよく、それによって、単一のフィーチャセルから常にアクティブなフィーチャセルを形成する。
【0054】
図9は、第一の検索基準75および第二の検索基準76に従ってパラレルに検索するように構成された認識モジュール22の一実施例を示す。本実施例においては、第一の検索基準75は、単語“big”を特定し、第二の検索基準76は、単語“cab”を特定する。データストリーム12からの現在のタームを示す信号は、ほぼ同時に各検索基準75および76におけるフィーチャセルへと通信されてもよい。各入力導体37は、検索基準75および76の双方へと及ぶ。結果として、幾つかの実施形態においては、検索基準75および76の双方は、ほぼ同時に現在のタームを評価してもよい。このことによって、検索基準の評価が加速すると考えられる。他の実施形態は、より多くの検索基準をパラレルに評価するように構成されたより多くのフィーチャセルを含んでもよい。例えば、幾つかの実施形態は、パラレルに動作する100、500、1000、5000もしくは10000以上のフィーチャセルを含んでもよい。これらのフィーチャセルは、ほぼ同時に何百、もしくは何千もの検索基準を評価してもよい。
【0055】
異なる個数の検索タームを有する検索基準は、より多くのもしくはより少ないフィーチャセルを検索基準へと割り当てることによって形成されてもよい。単純な検索基準は、複雑な検索基準よりも、フィーチャセルの形のリソースをより少なく消費するであろう。このことによって、ほぼ同一の多数のコアを有し、複雑な検索基準を評価するように全て構成されたプロセッサと比較して、パターン認識プロセッサ14(図2)のコストを低減すると考えられる。
【0056】
図10〜図12は、より複雑な検索基準とアクティブ化ルーティングマトリクス36の特徴との双方の一実施例を示す。アクティブ化ルーティングマトリクス36は、複数のアクティブ化ルーティングセル78を含んでもよく、アクティブ化ルーティングセル78のグループは、各フィーチャセル63、64、66、80、82、84および86に関連付けられてもよい。例えば、各フィーチャセルは、5、10、20、50個のもしくはそれ以上のアクティブ化ルーティングセル78を含んでもよい。アクティブ化ルーティングセル78は、先行する検索タームが一致するとき、検索基準における次の検索タームへとアクティブ化信号をルーティングするように構成されてもよい。アクティブ化ルーティングセル78は、隣接するフィーチャセルもしくは同一のフィーチャセル内の他のアクティブ化ルーティングセル78へとアクティブ化信号をルーティングするように構成されてもよい。アクティブ化ルーティングセル78は、どのフィーチャセルが検索基準における次の検索タームに対応するかを示すメモリを含んでもよい。
【0057】
図10〜図12に示されるように、認識モジュール22は、単一の単語を特定する基準よりも複雑な検索基準に従って検索するように構成されてもよい。例えば、認識モジュール22は、接頭辞88で開始し、2つの接尾辞90もしくは92のうちの一つで終了する単語を検索するように構成されてもよい。図示された検索基準は、文字“c”および“l”の配列で開始し、文字配列“ap”もしくは文字配列“oud”のいずれかで終了する単語を特定する。これは、複数の対象表現、例えば、単語“clap”もしくは単語“cloud”を特定する検索基準の一実施例である。
【0058】
図10においては、データストリーム12は、認識モジュール22に対して文字“c”を提示し、フィーチャセル63はアクティブであるとともに、一致を検出する。それに応答して、アクティブ化ルーティングマトリクス36は、次のフィーチャセル64をアクティブ化してもよい。アクティブ化ルーティングマトリクス36は、フィーチャセル63が検索基準における第一の検索タームであるので、フィーチャセル63のアクティブ状態を維持してもよい。
【0059】
図11においては、データストリーム12は、文字“l”を提示し、フィーチャセル64は、一致を認識しそしてアクティブである。それに応答して、アクティブ化ルーティングマトリクス36は、第一の接尾辞90の第一のフィーチャセル66および第二の接尾辞92の第一のフィーチャセル82の双方へとアクティブ化信号を伝送してもよい。他の実施例においては、より多くの接尾辞がアクティブ化されてもよく、または、複数の接頭辞は一つ以上の接尾辞をアクティブ化してもよい。
【0060】
続いて、図12においては、データストリーム12は、認識モジュール22に対して文字“o”を提示し、第二の接尾辞92のフィーチャセル82は、一致を認識しそしてアクティブである。それに応答して、アクティブ化ルーティングマトリクス36は、第二の接尾辞92の次のフィーチャセル84をアクティブ化してもよい。フィーチャセル66は非アクティブになることが許されるので、第一の接尾辞90の検索は終了してもよい。図10〜図12に示されたステップは、文字“u”および“d”へと継続してもよいし、または、接頭辞88が一致する次の機会まで、検索は終了してもよい。
【0061】
パターン認識プロセッサ14の実施形態は、任意の配列のフィーチャセル30を含んでもよい。図13〜図16は、本発明の実施形態に従う、フィーチャセル30の階層的配列を示す。一実施形態では、図13に示すように、第1レベルの階層は、2つのフィーチャセル30、フィーチャセル1(Feature Cell 1)及びフィーチャセル0(Feature Cell 0)のグループ94に配列されたフィーチャセル30を含んでもよい。各フィーチャセル30は、例えば、イネーブル状態(Enable State)信号等の入力を受信してもよく、次状態(Next State)信号をフィーチャセルの別のグループに出力してもよい。グループ94内の各フィーチャセル30は、各フィーチャセル30の出力に基づいてグループ94からの出力を提供する出力ドライブセレクタ96に結合されてもよい。例えば、一実施形態では、出力ドライブセレクタ96は、次状態出力“0”(Next State Out “0”)信号、次状態出力“1”(Next State Out “1”)信号、または、フィーチャセル30から受信された2つの次状態出力信号の論理和を出力するように構成されてもよい。
【0062】
図14に示すように、第2レベルの階層は、グループ94の行98に配列されたフィーチャセルの各グループ94を含んでもよい。各行98は、フィーチャセル30の任意の数のグループ94を含んでもよい。例えば、図14に図示した実施形態では、行98は、2つのフィーチャセル30の、例えば、グループ0(Group 0)からグループ7(Group 7)まで等の8つのグループ94を含んでもよい。
【0063】
図15に示すように、第3レベルの階層は、ブロック100にグループ化される複数の行98を含んでもよく、各ブロック100は、一つ以上の行98を含む。プロセッサ14の一実施形態では、各ブロック100は、例えば行0(Row 0)から行15(Row 15)まで等の16個の行98を含んでもよい。パターン認識プロセッサ14は、さらに、プログラム化状態機械の実装及び上記のパターン検索のために任意の数のブロック100を含んでもよい。図16に示すように、一実施形態では、パターン認識プロセッサ14は、例えば、ブロック0(Block 0)からブロック512(Block 512)まで等の512個のブロックを含んでもよい。
【0064】
上で説明したグループ94、行98、及びブロック100は、フィーチャセルの階層的配列を記述している。プログラム化状態機械は、任意の数のフィーチャセル30を含んでもよい。従って、それぞれのグループ、行、またはブロックは、複数のプログラム化状態機械を含んでもよい。上記の検索サイクル中等のパターン認識プロセッサ14の動作中に、プログラム化状態機械(例えば、一つ以上のフィーチャセル)の各状態は、フィーチャセル30から出力され、各グループ94の出力ドライブセレクタ96によって選択された次状態(Next State)信号によって、プログラム化状態機械の次状態にルーティングされる(「次状態ルーティング」と呼ばれる)。
【0065】
図17〜図21は、本発明の実施形態に従う、次状態ルーティング、プログラマビリティ、及びハイスループットを提供する多重階層型ルーティングマトリクスを記載している。ここで用いるように、ターム「ルーティングマトリクス」は、パターン認識プロセッサ14のコンポーネント間の通信のルートを決めるための複数の接続を指す。以下に記載される「ルーティングマトリクス」は、上に記載された図1〜図12のマトリクスとは機能的に異なるものとなり得る。更に以下に記載するように、ルーティングマトリクスは、上記のパターン認識プロセッサ14の階層の各レベルに、各レベル内に、または、各レベル間に、プログラマブル及び/または非プログラマブル接続を提供することができる。それらの接続は、パターン認識プロセッサ14のフィーチャセル、グループ、行及びブロック間にルーティングラインを接続してもよい。その接続は、これらに限定されるものではないが、以下の種類の接続を含んでもよい:プログラマブル及び非プログラマブル;一方向性及び双方向性;論理的結合(OR、AND、XOR等);セレクタ(例えば、多数のうちの一つ);及びアイソレータ(配線に対する接続の切断)。プログラマブル接続は、上に挙げた任意の機能を実行するように構成されてもよい。例えば、プログラマブル接続は、一方向性、双方向性、任意の論理結合、セレクタ、アイソレータ等としてプログラムされてもよい。非プログラマブル接続は、上記の任意の機能を実行してもよいが、異なる機能と共にプログラムされることはできない。
【0066】
図17〜図21の接続は、以下の表1にまとめた接続シンボルによって示す。
図17は、本発明の実施形態に従う、図13における上記のフィーチャセル30のグループ94を含む階層レベルを示す。上で言及したように、各フィーチャセル30は、フィーチャセルを次状態として有効にする入力を受信してもよい。上にも記載したように、フィーチャセル30におけるプログラム化された検索基準に対して実行されたパターンマッチングに基づいて、フィーチャセル30は、次アクティブ状態(次状態信号)を有効にする出力を生成してもよい。
【0067】
フィーチャセル30の入力及び出力信号のルーティングは、接続によって決定される。グループ94のフィーチャセル30は、ローカルルートライン102(ローカルルート0(Local Route 0)及びローカルルート1(Local Route 1))によって相互接続されてもよい。グループ94のフィーチャセル30の出力は、出力接続104によって、ローカルルートライン102及び出力ドライブセレクタ96に結合されてもよい。例えば、フィーチャセル0は、第1の出力接続104Aによってローカルルートライン0に結合され、フィーチャセル1は、第2の出力接続によってローカルルートライン1に結合される。図17に図示したように、一実施形態では、出力接続は、非プログラマブル「第1レベル」接続である。このような実施形態では、接続104は、取り外し可能ではなく、設定変更可能ではない。他の実施形態では、出力接続104は、プログラマブルであってもよい。
【0068】
出力ドライブセレクタ96は、フィーチャセル30の受信出力から任意の数または任意の種類の信号を駆動するようにプログラムされてもよい。上に記載したように、一実施形態では、出力ドライブセレクタ96は、以下の三つの可能な論理出力のうちの一つを出力するように構成されてもよい:「次状態出力0(Next State Out 0)」;「次状態出力1(Next State Out 1)」;または、2つの次状態出力信号の論理和。他の実施形態では、出力ドライブセレクタ96は、AND、NOR、及び/またはXOR等の他の論理結合を出力するように構成されてもよい。
【0069】
ローカルルートライン102は、入力接続106によって、フィーチャセル30の(一つ以上の入力信号を表し得る)入力105に結合されてもよい。例えば、フィーチャセル0は、入力接続106A及び106Bによってそれぞれローカルルートライン0及び1に結合されてもよい。同様に、フィーチャセル1は、入力接続106C及び106Dによってそれぞれローカルルートライン0及び1に結合されてもよい。図17に図示したように、入力接続106は、プログラマブル「第1レベル」接続であってもよい。このような実施形態では、入力接続106は、任意の接続された入力105の論理和を提供するように構成されてもよい。
【0070】
図18は、上記の図14に図示したような本発明の実施形態に従う、グループ94の行98を有する階層レベルを示す。前述のように、各行98は、例えば、図18に示したようなグループ0(Group 0)からグループ7(Group 7)までのフィーチャセル30の任意の数のグループ94を含んでもよい。行98のグループは、行ルートライン108によって相互接続されてもよい。一実施形態では、行ルートライン108は、ブロック100の各行のために提供されてもよい。従って、ブロック100あたり16個の行98を有する実施形態では、16個の行ルートラインは、例えば、行ルートライン0(Row Route line 0)から行ルートライン15(Row Route line 15)を提供されてもよい。
【0071】
各グループ94の出力選択ドライブ96からの出力は、出力接続110によって各行ルートライン108に結合されてもよい。一実施形態では、出力接続は、プログラマブル「第2レベル」接続であってもよい。図18に図示したように、例えば、グループ0(Group 0)は、出力接続110A及び110Bによってそれぞれ行ルートライン0及び15に結合されてもよい。グループ7(Group 7)は、出力接続110C及び110Dによってそれぞれ行ルートライン0及び15に結合されてもよい。全ての他の行ルートライン(図示せず)は、出力接続110によってグループ0からグループ7の出力ドライブセレクタに結合されてもよい。出力接続110は、グループ94の出力ドライブセレクタ96が、特定の行ルートライン108を駆動するかまたは駆動しないようにすることができるように構成されてもよい。
【0072】
更に、行ルートライン108は、入力接続112によって各フィーチャセル30の入力105に結合されてもよい。一実施形態では、入力接続112は、プログラマブル「第2レベル」接続であってもよい。例えば、行ルートライン108は、入力接続112A及び112Bによってグループ0のフィーチャセル0(Feature Cell 0)の入力に結合されてもよく、かつ、行ルートライン108は、入力接続112C及び112Dによってグループ0のフィーチャセル1(Feature Cell 1)の入力に結合されてもよい。同様に、図18に図示したように、行ルートライン108は、入力接続112E及び112Fによってグループ7のフィーチャセル0の入力に結合されてもよく、かつ、行ルートライン108は、入力接続112G及び112Hによってグループ7のフィーチャセル0の入力に結合されてもよい。他の行ルートライン(図示せず)は、行98の各グループ94の各フィーチャセル30の入力に結合されてもよい。このような実施形態では、入力接続112は、フィーチャセル30に接続された任意の入力の論理和であるようにプログラムされてもよい。他の実施形態では、その接続は、非プログラマブル及び/または双方向性の接続であってもよい。
【0073】
次に、図19は、上記の図15で説明したような本発明の実施形態に従う、複数の行98を有するブロック100の階層レベルを示す。上記のように、ブロック100は、例えば、行0(Row 0)から行15(Row 15)まで等の任意の数の行98を含んでもよい。ブロック100の行98は、ブロック内ルートライン114によって接続されてもよい。ブロック内ルートライン114は、双方向接続116によって行ルートライン112に結合されてもよい。一実施形態では、双方向接続は、プログラマブル「第3レベル」接続であってもよい。例えば、ブロック内ラインのルートライン0は、双方向接続116Cによって行15の行ルートライン0に、かつ、双方向接続116Dによって行15の行ルートライン15に結合されてもよい。同様に、ブロック内ルートライン23は、双方向接続116Eによって行0の行ルートライン0に、かつ、双方向接続116Fによって行0の行ルートライン15に結合されてもよい。更に、図19にも図示したように、ブロック内ルートライン23は、双方向接続116Gによって行15の行ルートライン0に、かつ、双方向接続116Hによって行15の行ルートライン15に結合されてもよい。他のブロック内ライン(図示せず)は、双方向接続116によって各行98の各行ルートライン116に結合されてもよい。
【0074】
前述のように、双方向接続116は、プログラマブルであってもよい。従って、双方向接続116は、一つ以上のブロック内ルートライン114がそれぞれの行ルートライン112を駆動することができるように、または、一つ以上の行ルートライン112がそれぞれのブロック内ルートライン114を駆動することができるようにプログラムされてもよい。各双方向接続116は、個々にプログラムされてもよく、行ルートライン112とブロック内ルートライン114との間の接続の設定をライン単位で可能にすることができる。他の実施形態では、接続は、非プログラマブル及び/または一方向性の接続であってもよい。
【0075】
図20は、本発明の実施形態に従う、ブロック100を有するルーティングマトリクスの最上レベル階層117を示す。一実施形態では、図20に図示したように、最上レベル117は、例えば、ブロック0(Block 0)からブロック511(Block 511)まで等の512個のブロック100を含んでもよい。ブロック100は、最上レベルのルートライン118によって相互接続されてもよい。最上レベルのルートライン118は、双方向接続120によってブロック内ルートライン114に結合されてもよい。従って、図20に図示したように、最上レベルのルートライン0は、双方向接続120A及び120Bによってそれぞれブロック0のブロック内ルートライン0及びブロック内ルートライン23に結合されてもよい。同様に、最上レベルのルートライン0は、双方向接続120C及び120Dによってそれぞれブロック511のブロック内ルートライン0及びブロック内ルートライン23に結合されてもよい。図20に図示したように、最上レベルのルートライン23は、双方向接続120E及び120Fによってそれぞれブロック0のブロック内ルートライン0及びブロック内ルートライン23に結合されてもよい。更に、最上レベルのルートライン23は、双方向接続120G及び120Hによってそれぞれブロック511のブロック内ルートライン0及びブロック内ルートライン23に結合されてもよい。全ての他の最上レベルのルートライン(図示せず)は、双方向接続120によってブロック100のブロック内ルートライン114に結合されてもよい。
【0076】
図20に図示したように、双方向接続120は、プログラマブル「第4レベル接続」であってもよい。双方向接続は、一つ以上のブロック内ルートライン114がそれぞれの最上レベルのルートライン118を駆動することができるように、または、一つ以上の最上レベルのルートライン118がそれぞれのブロック内ルートライン114を駆動することができるようにプログラムされてもよい。従って、接続120は、ライン単位でプログラムされかつ構成されてもよい。他の実施形態では、接続は、非プログラマブル及び/または一方向性の接続であってもよい。
【0077】
好都合なことに、上記の多重階層ルーティングマトリクスは、デバイスのプログラム可能性の規則性、生産及び製造歩留まりの改善のための冗長性の実装、異なるアプリケーションに対する可変性、及び、論理変更の容易な視覚化及び実装を提供してもよい。
【0078】
前述のように、接続は、信号がラインを介してルーティングされないように、ラインを「切断する」ことができるアイソレータであってもよく、それによってパターン認識プロセッサ14の冗長部分を無効化させることができる。図21は、本発明の実施形態に従うパターン認識プロセッサ14の一つ以上のフィーチャセル30の分離を示す。例えば、パターン認識プロセッサ14は、パターン認識プロセッサ14によって用いられるより大きな容量を提供するフィーチャセル30のブロック130を含んでもよい。これは、製造時に、収量を高めるために、パターン認識プロセッサ14は、プロセッサ14の機能に対して明示されたものよりも過剰なメモリ容量(過剰なフィーチャセル30)を伴って製造されてもよい。プロセッサ14の製造及び試験時に、過剰なフィーチャセル30は、プロセッサ14によって用いられるプログラム化状態機械として利用可能なフィーチャセルを除去することによって「無効化」されてもよい。いくつかの実施形態は、フィーチャセル30の全てのブロックを用いなくてよい。このような実施形態では、不使用のブロックは、無効化されてもよい。無効化ブロックは、「アクティブ化」及び/または「電源投入」されなくてもよく、リフレッシュサイクル時にリフレッシュされなくてもよい。
【0079】
ブロック130は、最上レベルのルートラインとブロック内ルーラインとの間の接続132によってパターン認識プロセッサ14の他の部分に結合されてもよい。このような実施形態では、接続132は、任意の所期の機能にプログラムされ得るプログラマブル「第4レベル接続」であってもよい。従って、ブロック130が過剰な容量を提供する場合、接続132は、残りのルートラインからブロック130を分離するようにプログラムされてもよい。従って、最上レベルのルートライン118とブロック内ルートライン114との間の接続は、プログラマブル接続132によって「切断」されてもよい。ブロック130は、「無効化」と呼ばれる場合がある。更に、不使用ブロック130は、ブロック130において、好適なプログラミングビットをセットすること等によって、「電源断」されてもよい。
【0080】
対照的に、パターン認識プロセッサ14のプログラム化状態機械にメモリ容量を提供するために用いられる他のブロックは、最上レベルのルートライン118及びブロック内ルートライン114を介してアクセス可能であってもよい。例えば、図21に図示したように、ブロック134は、接続136によって、無効化ブロック132と同じ最上レベルのルートライン118に接続されてもよい。図21に図示したように、接続136は、プログラマブル第4レベル接続であってもよい。しかしながら、接続136は、最上レベルのルートラインにブロック内ルートラインを駆動させることかまたはその逆等によって、ブロック134によって提供されるメモリ容量にアクセスすることができるようにプログラムされてもよい。他の実施形態では、フィーチャセル30は、行レベルで、ブロック内ルートライン114と行ルートライン112との間の接続138をプログラムすること等によって、及び/または、グループレベルで、行ルートライン112とローカルルートライン102との間の接続140をプログラミングすること等によって、無効化されてもよい。
【0081】
更に、他の実施形態では、上記の多重階層ルーティングマトリクスは、パターン認識プロセッサ14に実装されたパターンマッチング機能に基づいて、レベル、接続等が異なる場合がある。例えば、他の実施形態は、階層における異なる個数のレベル、及び/または、レベル、グループ、行、及び/またはブロック間における異なる個数の接続を含んでもよい。更に、他の実施形態は、プログラマブル接続に使用可能な異なるプログラマブル機能、階層における異なる種類の接続及び異なるポイント、接続ラインを複数のラインにプログラム的に分割する能力、及び、階層において異なるレベルで異なる機能を追加及び/または削除する能力を含んでもよい。
【0082】
図22は、本発明の実施形態に従う、上記の多重階層ルーティングマトリクスの設定のプロセス142を示す。パターン認識プロセッサの設定時に、階層の各レベルにおけるまたは各レベル間における接続は、任意の順番でプログラムされてもよい。更に、このような接続は、パターン認識プロセッサ14に望まれる特定のパターンマッチング実装に基づいて、手動でまたは自動的にプログラムされてもよい。また、マトリクスのレベルにおけるまたはレベル間における接続をプログラムすることは、マトリクスの他のレベルにプログラムされる機能に依存してもよいことが認識されるべきである。最初に、第1レベルの階層の接続がプログラムされてもよい(ブロック144)。例えば、これは、上記の図17の接続106をプログラムする等の、フィーチャセル30の入力とローカルルートライン102との間の接続と、フィーチャセル30の出力とローカルルートライン102との間の接続とをプログラムすることを含んでもよい。いくつかの実施形態では、フィーチャセル30からの入力及び/または出力接続は、非プログラマブル接続であってもよく、かつ、プログラムされなくてもよい。例えば、上記の図17にも図示したように、一実施形態では、出力接続104は、非プログラマブル接続であってもよい。
【0083】
次に、第2レベルの階層の接続がプログラムされてもよい(ブロック146)。一実施形態では、このようなプログラミングは、上記の図17に図示したように、行ルートライン108とグループ94との間の入力接続をプログラムすることを含んでもよい。例えば、フィーチャセル30への入力と行ルートライン108との間の接続112は、フィーチャセル30への入力105の論理和(または他の関数)になるようにプログラムされてもよい。同様に、出力接続110は、グループ94の行ルートライン及び出力ドライブセレクタ96間の所期の機能性を提供するようにプログラムされてもよい。
【0084】
更に、第3レベルの階層ルーティングマトリクスの接続がプログラムされてもよい(ブロック148)。上記の図19において説明したように、一実施形態では、行ルートライン112とブロック内ルートライン114との間の接続116がプログラムされてもよい。例えば、接続116は、或るフィーチャセルまたは任意の他のプログラマブル機能を分離(無効化)するために、ブロック内ルートライン114と行ルートライン112との間に所期の機能を提供するようにプログラムされてもよい。
【0085】
次に、第4レベルの階層の接続がプログラムされてもよい(ブロック150)。上記の図20に図示した実施形態では、このようなプログラミングは、ブロック内ルートライン114と最上レベルのルートライン118との間の接続をプログラムすることを含んでもよい。例えば、図20に図示した接続120は、最上レベルのルートライン118とブロック内ルートライン114との間の所期の機能を提供するようにプログラムされてもよい。上記の図21でも説明したように、いくつかの実施形態では、このようなプログラミングは、パターン認識プロセッサ14の冗長な容量(例えば、フィーチャセル)を無効化することを含んでもよい。図22に図示したように、接続のこのようなプログラミングは、第n位のルーティングマトリクスまで継続してもよい(ブロック152)。ルーティングマトリクスの接続をプログラムすることによって、パターン認識プロセッサ14は、所期の論理及びフィーチャセル(及び状態機械)間の次状態ルーティングを提供するように構成されてもよい。前述のように、接続のプログラミングは、パターン認識プロセッサ14の設定についてのナレッジを提供し、更にまた、異なる実装のためのルーティングの柔軟性及び可変性を提供する。
【特許請求の範囲】
【請求項1】
複数の論理グループであって、各グループは一つ以上のフィーチャセルを含み、各グループの前記一つ以上のフィーチャセルは、第1の接続によって第1のルートラインに結合される、複数の論理グループと、
複数の論理行であって、各行は前記複数のグループの一つ以上を含み、前記各行の一つ以上のグループは、第2の接続によって第2のルートラインに結合される、複数の論理行と、
複数の論理ブロックであって、各ブロックは前記複数の行の一つ以上を含み、前記各ブロックの一つ以上の行は、第3の接続によって第3のルートラインに結合される、複数の論理ブロックと、
を含むパターン認識プロセッサを含み、
前記複数のブロックは、第4の接続によって第4のルートラインに結合される、
ことを特徴とするデバイス。
【請求項2】
前記複数のグループの各グループは更に、それぞれのグループの一つ以上のフィーチャセルに結合された出力ドライブセレクタを含むことを特徴とする請求項1に記載のデバイス。
【請求項3】
前記出力ドライブセレクタは、それぞれのグループの一つ以上のフィーチャセルの出力に基づいて出力を提供するように構成されることを特徴とする請求項2に記載の装置。
【請求項4】
前記出力ドライブセレクタは、それぞれのグループの一つ以上のフィーチャセルのうちの一つの出力、または、グループの一つ以上のフィーチャセルの出力の論理結合を出力するように構成されることを特徴とする請求項2に記載のデバイス。
【請求項5】
前記各グループの一つ以上のフィーチャセルのそれぞれは、非プログラマブル接続によってそれぞれの出力ドライブセレクタに結合されることを特徴とする請求項2に記載のデバイス。
【請求項6】
前記複数のグループのそれぞれが、二つのフィーチャセルを含むことを特徴とする請求項1に記載のデバイス。
【請求項7】
前記複数のフィーチャセルのそれぞれが、一つ以上の入力を受信するとともに次状態信号を出力するように構成されることを特徴とする請求項1に記載のデバイス。
【請求項8】
前記第1の接続は、第1のプログラマブル接続を含むことを特徴とする請求項7に記載のデバイス。
【請求項9】
前記第1のプログラマブル接続は、フィーチャセルのそれぞれの一つ以上の入力の論理結合を提供するように構成されることを特徴とする請求項8に記載のデバイス。
【請求項10】
前記各グループの出力ドライブセレクタは、前記第2の接続のそれぞれによって第2のルートラインに結合され、前記第2の接続のそれぞれはプログラマブル接続を含む、ことを特徴とする請求項2に記載のデバイス。
【請求項11】
前記各グループの一つ以上のフィーチャセルは、プログラマブル接続によって第2のルートラインにそれぞれ結合されることを特徴とする請求項1に記載のデバイス。
【請求項12】
前記各ブロックの一つ以上の行は、プログラマブル接続によって第3のルートラインにそれぞれ結合されることを特徴とする請求項1に記載のデバイス。
【請求項13】
前記第4の接続は、プログラマブル接続であることを特徴とする請求項1に記載のデバイス。
【請求項14】
階層ルーティングマトリクスを含み、該マトリクスは、
一つ以上のフィーチャセルを含む第1レベルであって、前記フィーチャセルが一つ以上の第1のプログラマブル接続に結合される、第1レベルと、
フィーチャセルの一つ以上のグループを含む第2レベルであって、前記グループが一つ以上の第2のプログラマブル接続に結合される、第2レベルと、
グループの行を一つ以上含む第3レベルであって、前記行が一つ以上の第3のプログラマブル接続に結合される、第3レベルと、
行のブロックを一つ以上含む第4レベルであって、前記行が一つ以上の第4のプログラマブル接続に結合される、第4レベルと、
を含むパターン認識プロセッサを含む、ことを特徴とするデバイス。
【請求項15】
前記階層ルーティングマトリクスは、一つ以上のフィーチャセル間の次状態ルーティングを提供するように構成されることを特徴とする請求項14に記載のデバイス。
【請求項16】
前記各グループの一つ以上のフィーチャセルは、一つ以上のそれぞれの非プログラマブル接続に結合されることを特徴とする請求項14に記載のデバイス。
【請求項17】
前記一つ以上のグループのそれぞれは、一つ以上の非プログラマブル接続のそれぞれによって一つ以上のフィーチャセルに結合される出力を含むことを特徴とする請求項16に記載のデバイス。
【請求項18】
前記一つ以上の第2のプログラマブル接続のそれぞれは、グループのそれぞれの出力に、行ルートラインを駆動するかまたは駆動しないことを可能にさせるように構成されることを特徴とする請求項16に記載のデバイス。
【請求項19】
前記一つ以上の第3のプログラマブル接続のそれぞれは、行ルートラインにブロック内ルートラインを駆動すること、または、ブロック内ルートラインに行ルートラインを駆動することを可能にさせるように構成されることを特徴とする請求項16に記載のデバイス。
【請求項20】
前記第4のプログラマブル接続のそれぞれは、ブロック内ルートラインに最上レベルのルートラインを駆動すること、または、最上レベルのルートラインにブロック内ルートラインを駆動することを可能にさせるように構成されることを特徴とする請求項16に記載のデバイス。
【請求項21】
プロセッサの状態機械間のルートを決めるように構成される複数のルートラインと、
複数のうちの一つ以上の第1のルートラインに結合される複数のプログラマブル接続と、
複数のうちの一つ以上の第2のルートラインに結合される複数の非プログラマブル接続と、
を含むことを特徴とするパターン認識プロセッサ。
【請求項22】
前記複数のプログラマブル接続の一つ以上は、一方向性または双方向性の接続を含むことを特徴とする請求項21に記載のパターン認識プロセッサ。
【請求項23】
前記複数のプログラマブル接続の一つ以上は、一方向性または双方向性の接続を提供するように構成されることを特徴とする請求項21に記載のパターン認識プロセッサ。
【請求項24】
前記複数のプログラマブル接続の一つ以上は、論理和、論理積、または排他的論理和を提供するように構成されることを特徴とする請求項21に記載のパターン認識プロセッサ。
【請求項25】
前記複数のプログラマブル接続の一つ以上は、セレクタを提供するように構成されることを特徴とする請求項21に記載のパターン認識プロセッサ。
【請求項26】
前記複数のプログラマブル接続の一つ以上は、アイソレータを提供するように構成されることを特徴とする請求項21に記載のパターン認識プロセッサ。
【請求項27】
パターン認識プロセッサの複数のルーティング接続の一つ以上の第1のプログラマブル接続をプログラムすることであって、前記第1のプログラマブル接続が一つ以上のフィーチャセルを含む第1レベルに結合されるプログラミングと、
前記パターン認識プロセッサの複数のルーティング接続の一つ以上の第2のプログラマブル接続をプログラムすることであって、前記第2のプログラマブル接続が一つ以上のフィーチャセルの一つ以上のグループを含む第2レベルに結合されるプログラミングと、
を含むことを特徴とする方法。
【請求項28】
前記パターン認識プロセッサの複数のルーティング接続の一つ以上の第3のプログラマブル接続をプログラムすることであって、前記第3のプログラマブル接続が一つ以上のグループの一つ以上の行を含む第3レベルに結合されるプログラミング、を含むことを特徴とする請求項27に記載の方法。
【請求項29】
前記パターン認識プロセッサの複数のルーティング接続の一つ以上の第4のプログラマブル接続をプログラムすることであって、前記第4のプログラマブル接続が一つ以上の行の一つ以上のブロックを含む第4レベルに結合されるプログラミング、を含むことを特徴とする請求項27に記載の方法。
【請求項30】
前記パターン認識プロセッサの一つ以上のフィーチャセルを無効化するために、第1のプログラマブル接続、第2のプログラマブル接続、第3のプログラマブル接続、第4のプログラマブル接続、または、任意のそれらの組み合わせをプログラムすることを含むことを特徴とする請求項29に記載の方法。
【請求項31】
パターン認識プロセッサのためのルーティングマトリクスを含み、該マトリクスは、
前記パターン認識プロセッサの二つ以上のコンポーネント間の複数のプログラマブル接続と、
前記パターン認識プロセッサの二つ以上のコンポーネント間の複数の非プログラマブル接続と、を含み、
コンポーネントは、フィーチャセル、フィーチャセルの論理的配列、及び/またはそれらの組み合わせを含む、
ことを特徴とするシステム。
【請求項1】
複数の論理グループであって、各グループは一つ以上のフィーチャセルを含み、各グループの前記一つ以上のフィーチャセルは、第1の接続によって第1のルートラインに結合される、複数の論理グループと、
複数の論理行であって、各行は前記複数のグループの一つ以上を含み、前記各行の一つ以上のグループは、第2の接続によって第2のルートラインに結合される、複数の論理行と、
複数の論理ブロックであって、各ブロックは前記複数の行の一つ以上を含み、前記各ブロックの一つ以上の行は、第3の接続によって第3のルートラインに結合される、複数の論理ブロックと、
を含むパターン認識プロセッサを含み、
前記複数のブロックは、第4の接続によって第4のルートラインに結合される、
ことを特徴とするデバイス。
【請求項2】
前記複数のグループの各グループは更に、それぞれのグループの一つ以上のフィーチャセルに結合された出力ドライブセレクタを含むことを特徴とする請求項1に記載のデバイス。
【請求項3】
前記出力ドライブセレクタは、それぞれのグループの一つ以上のフィーチャセルの出力に基づいて出力を提供するように構成されることを特徴とする請求項2に記載の装置。
【請求項4】
前記出力ドライブセレクタは、それぞれのグループの一つ以上のフィーチャセルのうちの一つの出力、または、グループの一つ以上のフィーチャセルの出力の論理結合を出力するように構成されることを特徴とする請求項2に記載のデバイス。
【請求項5】
前記各グループの一つ以上のフィーチャセルのそれぞれは、非プログラマブル接続によってそれぞれの出力ドライブセレクタに結合されることを特徴とする請求項2に記載のデバイス。
【請求項6】
前記複数のグループのそれぞれが、二つのフィーチャセルを含むことを特徴とする請求項1に記載のデバイス。
【請求項7】
前記複数のフィーチャセルのそれぞれが、一つ以上の入力を受信するとともに次状態信号を出力するように構成されることを特徴とする請求項1に記載のデバイス。
【請求項8】
前記第1の接続は、第1のプログラマブル接続を含むことを特徴とする請求項7に記載のデバイス。
【請求項9】
前記第1のプログラマブル接続は、フィーチャセルのそれぞれの一つ以上の入力の論理結合を提供するように構成されることを特徴とする請求項8に記載のデバイス。
【請求項10】
前記各グループの出力ドライブセレクタは、前記第2の接続のそれぞれによって第2のルートラインに結合され、前記第2の接続のそれぞれはプログラマブル接続を含む、ことを特徴とする請求項2に記載のデバイス。
【請求項11】
前記各グループの一つ以上のフィーチャセルは、プログラマブル接続によって第2のルートラインにそれぞれ結合されることを特徴とする請求項1に記載のデバイス。
【請求項12】
前記各ブロックの一つ以上の行は、プログラマブル接続によって第3のルートラインにそれぞれ結合されることを特徴とする請求項1に記載のデバイス。
【請求項13】
前記第4の接続は、プログラマブル接続であることを特徴とする請求項1に記載のデバイス。
【請求項14】
階層ルーティングマトリクスを含み、該マトリクスは、
一つ以上のフィーチャセルを含む第1レベルであって、前記フィーチャセルが一つ以上の第1のプログラマブル接続に結合される、第1レベルと、
フィーチャセルの一つ以上のグループを含む第2レベルであって、前記グループが一つ以上の第2のプログラマブル接続に結合される、第2レベルと、
グループの行を一つ以上含む第3レベルであって、前記行が一つ以上の第3のプログラマブル接続に結合される、第3レベルと、
行のブロックを一つ以上含む第4レベルであって、前記行が一つ以上の第4のプログラマブル接続に結合される、第4レベルと、
を含むパターン認識プロセッサを含む、ことを特徴とするデバイス。
【請求項15】
前記階層ルーティングマトリクスは、一つ以上のフィーチャセル間の次状態ルーティングを提供するように構成されることを特徴とする請求項14に記載のデバイス。
【請求項16】
前記各グループの一つ以上のフィーチャセルは、一つ以上のそれぞれの非プログラマブル接続に結合されることを特徴とする請求項14に記載のデバイス。
【請求項17】
前記一つ以上のグループのそれぞれは、一つ以上の非プログラマブル接続のそれぞれによって一つ以上のフィーチャセルに結合される出力を含むことを特徴とする請求項16に記載のデバイス。
【請求項18】
前記一つ以上の第2のプログラマブル接続のそれぞれは、グループのそれぞれの出力に、行ルートラインを駆動するかまたは駆動しないことを可能にさせるように構成されることを特徴とする請求項16に記載のデバイス。
【請求項19】
前記一つ以上の第3のプログラマブル接続のそれぞれは、行ルートラインにブロック内ルートラインを駆動すること、または、ブロック内ルートラインに行ルートラインを駆動することを可能にさせるように構成されることを特徴とする請求項16に記載のデバイス。
【請求項20】
前記第4のプログラマブル接続のそれぞれは、ブロック内ルートラインに最上レベルのルートラインを駆動すること、または、最上レベルのルートラインにブロック内ルートラインを駆動することを可能にさせるように構成されることを特徴とする請求項16に記載のデバイス。
【請求項21】
プロセッサの状態機械間のルートを決めるように構成される複数のルートラインと、
複数のうちの一つ以上の第1のルートラインに結合される複数のプログラマブル接続と、
複数のうちの一つ以上の第2のルートラインに結合される複数の非プログラマブル接続と、
を含むことを特徴とするパターン認識プロセッサ。
【請求項22】
前記複数のプログラマブル接続の一つ以上は、一方向性または双方向性の接続を含むことを特徴とする請求項21に記載のパターン認識プロセッサ。
【請求項23】
前記複数のプログラマブル接続の一つ以上は、一方向性または双方向性の接続を提供するように構成されることを特徴とする請求項21に記載のパターン認識プロセッサ。
【請求項24】
前記複数のプログラマブル接続の一つ以上は、論理和、論理積、または排他的論理和を提供するように構成されることを特徴とする請求項21に記載のパターン認識プロセッサ。
【請求項25】
前記複数のプログラマブル接続の一つ以上は、セレクタを提供するように構成されることを特徴とする請求項21に記載のパターン認識プロセッサ。
【請求項26】
前記複数のプログラマブル接続の一つ以上は、アイソレータを提供するように構成されることを特徴とする請求項21に記載のパターン認識プロセッサ。
【請求項27】
パターン認識プロセッサの複数のルーティング接続の一つ以上の第1のプログラマブル接続をプログラムすることであって、前記第1のプログラマブル接続が一つ以上のフィーチャセルを含む第1レベルに結合されるプログラミングと、
前記パターン認識プロセッサの複数のルーティング接続の一つ以上の第2のプログラマブル接続をプログラムすることであって、前記第2のプログラマブル接続が一つ以上のフィーチャセルの一つ以上のグループを含む第2レベルに結合されるプログラミングと、
を含むことを特徴とする方法。
【請求項28】
前記パターン認識プロセッサの複数のルーティング接続の一つ以上の第3のプログラマブル接続をプログラムすることであって、前記第3のプログラマブル接続が一つ以上のグループの一つ以上の行を含む第3レベルに結合されるプログラミング、を含むことを特徴とする請求項27に記載の方法。
【請求項29】
前記パターン認識プロセッサの複数のルーティング接続の一つ以上の第4のプログラマブル接続をプログラムすることであって、前記第4のプログラマブル接続が一つ以上の行の一つ以上のブロックを含む第4レベルに結合されるプログラミング、を含むことを特徴とする請求項27に記載の方法。
【請求項30】
前記パターン認識プロセッサの一つ以上のフィーチャセルを無効化するために、第1のプログラマブル接続、第2のプログラマブル接続、第3のプログラマブル接続、第4のプログラマブル接続、または、任意のそれらの組み合わせをプログラムすることを含むことを特徴とする請求項29に記載の方法。
【請求項31】
パターン認識プロセッサのためのルーティングマトリクスを含み、該マトリクスは、
前記パターン認識プロセッサの二つ以上のコンポーネント間の複数のプログラマブル接続と、
前記パターン認識プロセッサの二つ以上のコンポーネント間の複数の非プログラマブル接続と、を含み、
コンポーネントは、フィーチャセル、フィーチャセルの論理的配列、及び/またはそれらの組み合わせを含む、
ことを特徴とするシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【公表番号】特表2013−513894(P2013−513894A)
【公表日】平成25年4月22日(2013.4.22)
【国際特許分類】
【出願番号】特願2012−544612(P2012−544612)
【出願日】平成22年12月7日(2010.12.7)
【国際出願番号】PCT/US2010/059310
【国際公開番号】WO2011/081799
【国際公開日】平成23年7月7日(2011.7.7)
【出願人】(595168543)マイクロン テクノロジー, インク. (444)
【Fターム(参考)】
【公表日】平成25年4月22日(2013.4.22)
【国際特許分類】
【出願日】平成22年12月7日(2010.12.7)
【国際出願番号】PCT/US2010/059310
【国際公開番号】WO2011/081799
【国際公開日】平成23年7月7日(2011.7.7)
【出願人】(595168543)マイクロン テクノロジー, インク. (444)
【Fターム(参考)】
[ Back to top ]