並列パターン検索エンジンのパターンマッチング結果を通信するための装置、システム、および方法
開示されているのは次のような方法およびシステムである。その中には、データストリーム(12)を検索するための一つ以上のパターン認識プロセッサ(14,93)を含む装置を含むシステムがある。パターン認識プロセッサ(14,93)のクラスタは、様々な検索機能を実行するために使用されてよい、さまざまなパターンマッチングマトリクス(40、42、44、46、48、50)およびマスクモジュール(94、96、98、100)を含んでよい。さらに、バッファ(25)は、情報検索に対する、パターンマッチングマトリクス(40、42、44、46、48、50)およびマスクモジュール(94、96、98、100)からの続いて起こる様々な結果を個別に記憶するために使用されてよい。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、概して、パターン認識プロセッサおよび、より具体的には、実施形態において、パターン認識プロセッサの多重動作からの結果として生じるデータの通信に関する。
【背景技術】
【0002】
コンピューティングの分野においては、パターン認識タスクは、ますます性能が試される。大量のデータさえコンピュータ間で伝送され、ユーザが識別を望むパターンの数は増加している。例えば、スパムもしくはマルウェアは、しばしば、データストリームにおけるパターン(例えば、特定の句もしくはコードの一部)を検索することによって検出される。新規の変異形を検索するために新規のパターンが実施される可能性があるため、パターンの数は、スパムおよびマルウェアの多様性によって増加する。これらのパターンの各々に対してデータストリームを検索することは、コンピューティングボトルネック(障害)を形成する可能性がある。しばしば、データストリームが受信されると、一つずつ、各パターンを検索される。システムより前の遅延は、パターン数に伴うデータストリームの増加の次の部分を検索する状態にある。したがって、パターン認識は、データの受信を遅延させる可能性がある。
【0003】
パターン認識タスクは、実行されることになるさまざまなタイプの照合(一致、マッチ)によってしばしば複雑化される。データストリームは、短く連続する間にいくつかのパターンを照合し、これらの様々な照合は分類され得る。これらの照合による検索は、システムの相対的な性能を遅くし、これにより新しい照合が発生したときにシステムに対して迅速に応答することをできなくさせる。他の例においては、、照合が発生する前の比較的長期間にわたってデータストリームが受信される可能性がある。これにより照合を処理するための他の構成部分の能力は使用されずに残ることとなる。パターン認識中のリザルトデータの不規則な流れは、パターン認識ハードウェアとインタフェース接続するシステムの設計を難しくする。
【図面の簡単な説明】
【0004】
【図1】データストリームを検索するシステムの一実施例を示す。
【図2】図1のシステムにおけるパターン認識プロセッサの一実施例を示す。
【図3】図2のパターン認識プロセッサにおける検索タームセルの一実施例を示す。
【図4】単一の文字に対してデータストリームを検索する、図3の検索タームセルを示す。
【図5】単一の文字に対してデータストリームを検索する、図3の検索タームセルを示す。
【図6】一語に対してデータストリームを検索する幾つかの検索タームセルを含む認識モジュールを示す。
【図7】一語に対してデータストリームを検索する幾つかの検索タームセルを含む認識モジュールを示す。
【図8】一語に対してデータストリームを検索する幾つかの検索タームセルを含む認識モジュールを示す。
【図9】二語に対してパラレルにデータストリームを検索するように構成された認識モジュールを示す。
【図10】同一の接頭辞を有する複数語を特定する検索基準に従って検索する認識モジュールを示す。
【図11】同一の接頭辞を有する複数語を特定する検索基準に従って検索する認識モジュールを示す。
【図12】同一の接頭辞を有する複数語を特定する検索基準に従って検索する認識モジュールを示す。
【図13】図1のシステムにおけるパターン認識プロセッサの第2の例を示す。
【図14】図13のパターン認識プロセッサにおけるリザルトバッファの例を示す。
【図15】図14のリザルトバッファと接続して使用されるレジスタバンクの直列接続を示す。
【発明を実施するための最良の形態】
【0005】
図1は、データストリーム12を検索するシステム10の一実施例を示す。システム10は、検索基準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、Ogg Vorbisなど、エンコードされたバージョンのデータストリーム12を特定してもよいし、その逆を特定してもよい。
【0020】
パターン認識プロセッサ14は、CPU20と共に(単一のデバイスなどの)単一の構成部分に統合されたハードウェアであってもよいし、別個の構成部分として形成されてもよい。例えば、パターン認識プロセッサ14は別個の集積回路であってもよい。パターン認識プロセッサ14は、“コプロセッサ”もしくは“パターン認識コプロセッサ”と称されてもよい。
【0021】
図2は、パターン認識プロセッサ14の一実施例を示す。パターン認識プロセッサ14は、認識モジュール22および出力バッファ51を有する集約モジュール24を含んでもよい。出力バッファ51は、リザルトバッファ25を含んでもよい。認識モジュール22は、受信されたタームを検索タームと比較するように構成され、認識モジュール22および集約モジュール24の双方は、検索タームとタームが一致することが検索基準を満足するかどうかを決定するように協力してもよい。リザルトバッファ25はパターン認識プロセッサ14の他の部分からのリザルトデータをバッファリングしてもよく、これは図13に関連して以下に説明される。
【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は、検索タームセル54として本明細書で称されるコンポーネントである、検索タームアレイ32(図2)における単一のフィーチャセル30の一部を示す。検索タームセル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は、その検出セル68によって非アクティブ化され、検出周期の間そのメモリセル70をリセットするか、または、例えば、アクティブ化ルーティングマトリクス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”の出現回数を数える集約モジュールへと、文内の各々の“cattle”の出現を示す信号を出力し、検索基準が満足されたかどうかを判定する。
【0051】
フィーチャセル63、64もしくは66は幾つかの条件下でアクティブ化されてもよい。フィーチャセル63、64もしくは66は、“常にアクティブ”であってもよく、それは、全検索の間、もしくは実質的に全ての検索の間アクティブ状態のままであることを意味する。常にアクティブなフィーチャセル63、64もしくは66の一実施例は、検索基準の第一のフィーチャセル、例えば、フィーチャセル63である。
【0052】
フィーチャセル63、63もしくは66は、“要求されたときアクティブ”であってもよく、それは、幾つかの先行する条件が一致したとき、例えば、検索基準における先行する検索タームが一致したときに、フィーチャセル63、64もしくは66がアクティブであることを意味する。一実施例は、図6−図8におけるフィーチャセル63によって要求されたときにアクティブであるフィーチャセル64と、フィーチャセル64によって要求されたときにアクティブであるフィーチャセル66である。
【0053】
フィーチャセル63、64もしくは66は、“自己アクティブ化”されてもよく、それは、一度アクティブ化されればその検索タームが一致している限り、それ自身をアクティブ化することを意味する。例えば、いかなる数のディジットにでも一致した検索タームを有する自己アクティブ化されたフィーチャセルは、文字“x”に到達するまで、文章“123456xy”をアクティブ化したままであってもよい。自己アクティブ化されたフィーチャセルの検索タームが一致するたび、自己アクティブ化されたフィーチャセルは検索基準における次のフィーチャセルをアクティブ化してもよい。したがって、常にアクティブなフィーチャセルは、自己アクティブ化するフィーチャセルおよび要求されたときにアクティブなフィーチャセルから形成されてもよい。自己アクティブ化フィーチャセルは、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は、一x致を認識してアクティブである。それに応じて、アクティブ化ルーティングマトリクス36は、第一の接尾辞90の第一のフィーチャセル66および第二の接尾辞92の第一のフィーチャセル82の双方へとアクティブ化信号を伝送してもよい。他の実施例においては、より多くの接尾辞がアクティブ化されてもよく、または、複数の接頭辞は一つ以上の接尾辞をアクティブ化してもよい。
【0060】
続いて、図12においては、データストリーム12は、認識モジュール22に対して文字“o”を示し、第二の接尾辞92のフィーチャセル82は、一致を認識してアクティブである。それに応じて、アクティブ化ルーティングマトリクス36は、第二の接尾辞92の次のフィーチャセル84をアクティブ化してもよい。フィーチャセル66が非アクティブになると認められると、第一の接尾辞90の検索は終了してもよい。図10−図12に示されたステップは、文字“u”および“d”へと継続してもよいし、または、接頭辞88が一致する次の機会まで、検索は終了してもよい。
【0061】
図13は、他のパターン認識プロセッサ93の例を示す。パターン認識プロセッサ93は、図2のパターン認識プロセッサ14に関して上述したのと実質的に同様の方法で動作してよい。しかしながら、パターン認識プロセッサ93は、図2のパターン認識プロセッサ14と共通の構成部分に加えて、閾値出力マスク94、積出力マスク96、和出力マスク98、および初期化出力マスク100をさらに含んでよい。
【0062】
閾値出力マスク94、積出力マスク96、和出力マスク98、および初期化出力マスク100は一般に、入力として受信される一つ以上の結果を、“マスク”し、換言すればフィルタ処理する。例えば、閾値論理マトリクス44は、データストリーム12における例えばセキュリティの脅威などの全ての既知の出現事象に対して検索をするように設定されてよい。しかしながら、特定のハイリスク脅威のような一つ以上の特定のセキュリティ脅威に対しては、これらの結果をフィルタ処理することが有益であろう。従って、閾値出力マスク94は、特定のハイリスクセキュリティ脅威を除いては、閾値論理44によって発見される全てのセキュリティ脅威をブロックするように設定されてよい。もしこのハイリスクセキュリティ脅威が発見されたならば、CPUによって取り出されるようにするために、脅威に対する通知が閾値出力マスク94から出力バッファ51に伝送されてよい。このようにして、閾値出力マスク94、積出力マスク96、和出力マスク98、および初期化出力マスク100は、それぞれがパターンマッチングマトリクス44−50の全体の結果出力から一つ以上の特定の結果を分けるために、それぞれのマトリクス44−50の出力をフィルタ処理できるマスクモジュールを形成してよい。幾つかの実施形態において、出力マスクモジュール94−100は、そのようなフィルタリングを容易にするために、パターンマッチングマトリクス44−50の出力に関連するマスクレジスタを用いてよい。
【0063】
従って、閾値出力マスク94は、閾値論理マトリクス44の結果に基づいて検索結果照合(一致、マッチ)を生成するように動作してよい。上述したように、閾値論理マトリクス44は、認識モジュールにより通知された照合に基づいてカウントアップまたはダウンするように構成される例えば32ビットカウンタである複数のカウンタを含んでよい。閾値論理マトリクス44は、データ列中で発見された3つの“A”シンボルのようないくらかの長さのテキストにおける単語の発生数を計数してよい。閾値論理マトリクス44からの結果は、閾値出力マスク94、出力バッファ51、および論理積マトリクス46に送られてよい。閾値出力マスク94は、閾値論理マトリクス44によって決定される閾値結果を使用して追加の照合検索を実行してよい。この追加の照合検索は、例えば閾値出力マスク94中のビット配置を使って閾値論理マトリクス44によって決定される閾値結果に対する“アンド演算(AND−ing)”を含んでよい。
【0064】
例えば、閾値結果は、各ラインが特定の結果に対応してよい例えば32ラインの閾値出力マスク94に送られてよい。これらのラインの各々はまた、1または0のいずれかにセットされてよい、閾値出力マスク94内の対応するビット配置を有してよい。そのセットされる値は、そのビット配置に対応するライン上で受信された結果が閾値出力マスク94によって選択されるものであるか否かに依存する。このようにして、1にセットされた閾値出力マスク94内の任意のビット配置に対して、閾値論理マトリクス44からの対応する結果ラインに沿って受信された任意の情報が、閾値出力マスク94から出力バッファ51に伝送されてよい。同様にして、0にセットされた閾値出力マスク94内の任意のビット配置に対して、閾値論理マトリクス44からの対応するラインに沿って受信された任意の情報が、マスクされ、換言すればフィルタ処理され、従って、閾値出力マスク94から出力バッファ51に伝送されないようにしてよい。このようにして、閾値出力マスク94は、どの閾値論理マトリクス44の結果(例えば閾値出力マスク94中の有効にされたビット配置に対応するもの)を出力バッファ51に流し、どの閾値論理マトリクス44の結果(例えば閾値出力マスク94中の有効にされたビット配置に対応するもの)を無視するかを、効果的に選択してよい。上述の考察は、閾値出力マスク94を介したハードウェア照合について説明することを示してきたが、上述のものと同様に機能的に動作する閾値マスクプログラムを用いたソフトウェア照合が使用されてもよいことに留意されたい。
【0065】
積出力マスク96は、論理積マトリクス46の結果に基づいて検索結果照合を生成するように動作してよい。論理積マトリクス46は、2つ以上の閾値論理マトリクス44結果に基づいて、“積”の結果(例えば、ブール論理における“AND”関数)を選択的に生成してよい。例えば、論理積マトリクス46は3つの“A’s”とターム“cat”の両方を検索してよい。論理積マトリクス46からの結果は、積出力マスク96、出力バッファ51、および論理和マトリクス48に流されてよい。積出力マスク96は、論理積マトリクス46により決定された積の結果を使用して追加の照合検索を実行してよい。この追加の照合検索は、例えば閾値出力マスク94内のビット配置を用いて論理積マトリクス46によって決定される結果に対する“アンド演算(AND−ing)”を含んでよい。
【0066】
例えば、論理積マトリクス46の積の結果は、各ラインが特定の結果に対応してよい例えば32ラインに沿って積出力マスク96に流されてよい。これらのラインの各々はまた、1または0のいずれかがセットされてよい積出力マスク96内の対応するビット配置を有してよい。そのセットされる値は、そのビット配置に対応するライン上で受信された結果が積出力マスク96によって選択されるべきものであるか否かに依存する。このようにして、1にセットされた積出力マスク96内の任意のビット配置に対して、論理積マトリクス46からの対応する結果ラインに沿って受信された任意の情報が、積出力マスク96から出力バッファ51に伝送されてよい。同様にして、0にセットされた積出力マスク96内の任意のビット配置に対して、論理積マトリクス46からの対応するラインに沿って受信された任意の情報が、マスクされ、換言すればフィルタ処理され、従って、積出力マスク96から出力バッファ51に伝送されないようにしてよい。このようにして、積出力マスク96は、どの論理積マトリクス46の結果(例えば積出力マスク96中の有効にされたビット配置に対応するもの)を出力バッファ51に流し、どの論理積マトリクス46の結果(例えば積出力マスク96中の有効にされたビット配置に対応するもの)を無視するかを、効果的に選択してよい。上述の考察は、積出力マスク96を介したハードウェア照合について説明することを示してきたが、上述のものと同様に機能的に動作する閾値マスクプログラムを用いたソフトウェア照合が使用されてもよいことに留意されたい。
【0067】
和出力マスク98は、閾値出力マスク94および積出力マスク96を用いて上述したのと類似の方法で、論理和マトリクス48の結果に基づいて検索結果照合を生成するように動作してよい。論理和マトリクス48は、“和”の結果(例えば、ブール論理における“OR”関数)を選択的に生成してよく、あるいは、論理積入力結果に基づいて、論理積和(例えば、ブール論理での積和(SOP)形)を創り出してもよい。例えば、論理和マトリクス48は、3つの“A’s”とターム“cat”の両方または3つの“N’s”とターム“dog”、を検索してよい。論理和マトリクス48からの結果は、和出力マスク98、出力バッファ51、および初期化ルーティングマトリクス50に送られてよい。
【0068】
そのような和の結果は、和出力マスク98によって一組の出力結果ラインに沿って受信されてよい。これらのラインの各々はまた、1または0のいずれかがセットされてよい和出力マスク98内の対応するビット配置を有してよい。そのセットされる値は、そのビット配置に対応するライン上で受信された結果が和出力マスク98によって選択されるべきものであるか否かに依存する。従って、1にセットされた和出力マスク98内の任意のビット配置に対して、論理和マトリクス48からの対応する結果ラインに沿って受信された任意の情報が、和出力マスク98から出力バッファ51に伝送されてよい。同様にして、0にセットされた和出力マスク98内の任意のビット配置に対して、論理和マトリクス48からの対応する結果ラインに沿って受信された任意の情報が、マスクされ、換言すればフィルタ処理され、従って、和出力マスク98から出力バッファ51に伝送されないようにしてよい。このようにして、和出力マスク98は、どの論理和マトリクス48の結果(例えば和出力マスク98中の有効にされたビット配置に対応するもの)を出力バッファ51に流し、どの論理和マトリクス48の結果(例えば和出力マスク98中の有効にされたビット配置に対応するもの)を無視するかを、効果的に選択してよい。上述の考察は、和出力マスク98を介したハードウェア照合について説明することを示してきたが、上述のものと同様に機能的に動作する閾値マスクプログラムを用いたソフトウェア照合が使用されてもよいことに留意されたい。
【0069】
初期化出力マスク100は、初期化ルーティングマトリクス50の初期化結果に基づく結果を生成するように動作してよい。初期化ルーティングマトリクス50は、論理和マトリクス48からの結果に基づいて、検出アレイ34および/または集約ルーティングマトリクス42を介して集約モジュール24の一部を選択的にリセットしてよい。初期化ルーティングマトリクス50はまた、検索基準が満足されまたはそれ以上満足されないと決定されたときのような場合に、パターン認識プロセッサ14の他の部分を再初期化してもよい。これらの初期化結果は、出力バッファ51および初期化出力マスク100に流される。
【0070】
初期化出力マスク100は、初期化ルーティングマトリクス50によって決定される初期化結果を利用して追加の照合検索を実行してよく、それによって第2の条件付きのリセットが生成されてもよい。この追加的なリセットは、例えば検出アレイ34または集約ルーティングマトリクス42を介した集約モジュール24の初期化出力マスク100によるリセットのための第2の条件を用いて、初期化ルーティングマトリクス50によって決定される初期化結果に対する“アンド演算(AND−ing)”によって生成されてもよい。この第2の条件は初期化出力マスク100内の一つ以上のアクティブ化されたビット配置であってよく、それによりそのビット配置は初期化ルーティングマトリクス50からの一つ以上の結果ラインに対応する。初期化出力マスク100内の与えられたビット配置は1または0のいずれかにセットされてよい。そのセットされる値は、そのビット配置に対応するライン上で受信された結果が初期化出力マスク100によって選択されるべきものであるか否かに依存する。この結果、どの初期化ルーティングマトリクス50の結果を出力バッファ51に流し、どの初期化ルーティングマトリクス50の結果を無視するかを効果的に選択できる。さらに、初期化出力マスク100は、ハードウェアを介して、または、例えば上述のハードウェア実装と同様に機能的に動作する初期化マスクプログラムを用いたソフトウェアを介して、実装されてよい。
【0071】
従って、出力バッファ51は、閾値出力マスク94、積出力マスク96、和出力マスク98、および初期化出力マスク100の出力と同様に、閾値論理マトリクス44、論理積マトリクス46、論理和マトリクス48、および初期化ルーティングマトリクス50の出力を受信してよい。出力バッファ51は、結果バッファ25とともに、出力バス26を介した出力の伝送に先立って、その出力のためのバッファとして動作してよい。さらに、これらの結果の出力バッファ51への書込みは、同時に、換言すれば並列に実行されてよい。
【0072】
図14は、パターン認識プロセッサ14またはパターン認識プロセッサ93に結合されるリザルト(結果)バッファ25の例を示す。図2および図13に関連して上述したように、リザルトバッファ25は、出力バッファ51に含まれてよい。結果バッファ25は、ファースト−インファースト−アウト(FIFO)バッファ102、バッファ書込み制御モジュール104、バッファ読出し制御モジュール106、およびバッファ設定モジュール108を含んでよい。リザルトバッファ25は、パターン認識プロセッサ14の一部として(例えばシリコンの同一ボディー上に)完全に形成されてよく、あるいはそれは別々の構成部品または別々の構成部品の一部であってもよい。リザルトバッファ25は、上りリザルトバス110を通してパターン認識プロセッサ14からリザルトデータを受信してよく、また、リザルトバッファ25は、下りリザルトバス112を通してCPU20(図1)にリザルトデータを出力してよい。設定バス114は、CPU20を、リザルトバッファ25内のバッファ設定モジュール108およびパターン認識プロセッサ14を設定するのに使用してよいパターン認識プロセッサ設定モジュール116と通信する状態に置いてよい。
【0073】
FIFOバッファ102は、複数のレコード118を記憶するように構成されてよい。各レコード118は例えば基準の充足に関連するデータであるリザルトデータを記憶してよい。各レコード118は一つの基準を満足させる一つのインスタンスと一致してよく、あるいは、基準を満足させることに関連するデータは例えば幾つかの隣接する、さもなくば連続的なレコード118である幾つかのレコード118に記憶されてよい。
【0074】
各レコード118はリザルトステータス情報120,ハウスキーピング情報122,およびリザルトデータ124を記憶するためのフィールドを含んでよい。他の実施形態は、追加的なフィールドまたはより少ないフィールドを含んでよい。リザルトステータスフィールド120はデータストリーム12を識別しデータストリーム12をパターン認識プロセッサ14が受信するかもしれない他のデータストリームから区別するデータを記憶してよい。
【0075】
ハウスキーピングフィールド122は基準が満足されたときにパターン認識プロセッサ14のステータスを表示するデータを記憶してよい。例えば、ハウスキーピングフィールド122は、エラー状態が発生したか否かを指し示すデータを記憶してよい。エラー状態の例は、入力データオーバーフローまたはFIFOバッファフル状態を含む。FIFOバッファ102は、例えば、約32レコード以上、約64レコード以上、約128レコード以上、約256レコード以上、または約512レコード以上を含んでよい。
【0076】
リザルトデータ124は、どの基準が満足されたのか、基準を満足させたデータストリーム12からのタームのシーケンス、基準を満足させたデータストリーム12の部分を示すタームカウント(例えばビットカウント)、またはその間基準を満足させたデータストリームの部分が受信された時間間隔のようなデータを含んでよい。各レコード118に記憶されたリザルトデータ124は、バンクとして分類される。このバンクは、閾値論理マトリクス44、論理積マトリクス46、論理和マトリクス48、初期化ルーティングマトリクス50、閾値出力マスク94、積出力マスク96、和出力マスク98、および/または初期化出力マスク100の各々からの照合結果出力の各々の記憶装置のための個々のレジスタを含んでよい。さらに、照合結果出力は、並列にレジスタバンクに書き込まれてよい。この方法において、各レコード118のためのリザルトデータ124、換言すれば照合データは、受信されてレジスタバンクに同時に記憶されてよい。そこによって、各々個別のレジスタは、特にそのマトリクスまたはマスクからの明示された結果を個別に記憶してよい。
【0077】
バッファ書込み制御モジュール108は、上りリザルトバス110からのどのデータがFIFOバッファ102中のどのレコード118に書き込まれるかを制御するように構成されてよい。バッファ書込み制御モジュール102は、基準が満足されるごとにまたはリザルトデータが新しいレコード118に書き込まれるごとにインクリメントまたはデクリメントするカウンタを含んでよい。バッファ書込み制御モジュールはまた、どのレコード118が最も最近にCPU20に出力されたかを示すメモリを含んでよく、バッファ書込み制御モジュール104は、上りリザルトバス110からのデータを、すでにCPU20に伝えられたデータを含むレコード118に書き込むように構成されてよい。
【0078】
同様に、バッファ読出し制御モジュール106は、どのレコード118がFIFOバッファ102から読み出されていない最も古いレコードであるかを指し示すように構成されてよい。例えば、バッファ読出し制御モジュール106はレコードがFIFOバッファから読み出されるごとにインクリメントまたはデクリメントするカウンタを含んでよく、そのカウンタのカウントは最も古く読まれていないレコード118を識別してよい。バッファ読出し制御モジュール106は、CPU20からの読出し命令信号126を受信し、FIFOバッファ102に対して最も古く読まれていないレコード118により記憶されたデータを出力させることによりその読出し命令に応答するように構成されてよい。
【0079】
リザルトバス112は、下りリザルトバス112がデータを出力しているのと同時にデータストリーム12がデータを入力するように、データストリーム12を伝搬するバスとは異なる導体を含んでよい。リザルトバッファ25がパターン認識プロセッサ14と完全に一体に形成される実施形態では、パターン認識プロセッサ14はデータストリーム12入力と結果出力を伝搬するための個別のピンを含んでよい。従って、リザルトデータはデータストリームが入力されるのと同時に出力されてよい。
【0080】
代わりに、リザルトバス112は、同じ導体またはピンを使用して、要するに共有バスを使用して、データストリーム12を受信しリザルトデータを出力してよい。例えば、その共有バスは、その共有バスが同じ導体によって使用されてデータストリーム12を受信しリザルトデータを出力できるように、多重化されまたはタイムスライス化されてよい。しかしながら、その共有バスが入力データを伝送するように使用される時間は、その共有バスが出力データを伝送するのに使用される時間を超えており、そのようにして出力サイクルよりも多くの入力サイクルが生み出されている。そのようにして、入力サイクルはその共有バスの多重化の間、最高の優先度が与えられてよい。出力サイクルは、時間の許す限り、入力サイクルとして使用されていないタイムスロットに続いてはめ込まれてよい。
【0081】
動作については、パターン認識プロセッサ14は、図2−図13を参照して上述した方法で、データストリーム12を検索してよく、その検索からの結果はCPU20に伝搬される前にリザルトバッファ25にバッファリングされてよい。基準が満たされたとき、どの基準が満たされたのかを示すデータ、データストリーム12中のどのタームがその基準を満たしたのかを示すデータ、およびどのデータストリームが検索されたのかを示すデータのような、その基準の充足に関連するデータが、上りリザルトバス110を通してリザルトバッファ25に伝送されてよい。
【0082】
このデータの受信において、バッファ書込み制御モジュール104は、例えば、記憶データをすでにCPU20に伝搬されているレコード118またはどのデータも記憶していないレコード118である幾つかのフリーレコードがFIFOバッファ102内にあるか否かを決定してよい。もしフリーレコードが利用可能でなければ、バッファ書込み制御モジュール104は、パターン認識プロセッサ14に通知してデータストリーム12を検索することを停止させ、CPU20はFIFOバッファ102中のレコードを通じて動作するので空き時間を創り出してしまうが、CPU20に通知してデータストリーム12の伝送を休止させてよい。バッファ書込み制御モジュール104はまた、現在のまたはその次のレコードのハウスキーピング情報フィールド122に、パターン認識プロセッサ14がリザルトバッファオーバーフロー状態に入ったことを示すデータを記憶させてよい。
【0083】
バッファ書込み制御モジュール104が少なくとも一つのフリーレコード118が利用可能であると決定したならば、バッファ書込み制御モジュール104は、上りリザルトデータバス110からのリザルトデータをそのフリーレコード118に書き込んでよい。バッファ書込み制御モジュール104は、そのレコード118が書き込みが行われたがまだ読出しは行われていないことを示してよく、バッファ書込み制御モジュール104は、そのレコード118が他の書き込まれたレコードと比較して最新のレコードであることを示してよい。
【0084】
実質的に同じ時間または他の時間において、CPU20は読出し制御信号126をバッファ読出し制御モジュール106に送信し、それによってバッファ読出し制御モジュール106に対してまだ未読の最も古いレコード118内のデータを出力するように通知してよい。このようにして、CPU20は重要なステータスレジスタに対して“ポーリング”して、例えばCPU20への伝送のために新しいレコード118が利用可能であるか否かを決定してよい。CPU20によるポーリングは、リザルトバッファ25の内部または外部のいずれかの一つ以上のステータスビットがセットされたか否かの、CPU20を介した決定を生ずる。一つ以上のステータスビットのセッティングは、新たなパターンマッチリザルトデータがCPU20による読出しのために利用可能であることを指し示してよい。
【0085】
バッファ読出し制御モジュール106はまた、いくつかの未読のレコード118が存在するか否かを決定してよい。未読レコードが存在しないならば、バッファ読出し制御モジュール106はCPU20に対して目下のところ未読レコードは無いことを通知する。もし未読のレコード118が存在するならば、バッファ読出し制御モジュール106は、最も古い未読レコードを識別し、その最も古い未読のレコード118によって記憶されたデータをCPU20に伝搬してよい。これは、CPU20が新たな結果が利用可能であるか否かを“質問”する“ポーリング”方法を構成する。
【0086】
他の方法として、“割込み処理”が、CPU20が与えられた照合を通知するアクティブ通知方法を構成してよい。この方法において、バッファ読出し制御モジュール106は、下りリザルトバス112を通じてCPU20に、CPU20に通知をしおよび/または割込みを行う通知信号をアクティブに伝送し、これによりCPU20に対して一つ以上の利用可能レコード118が利用できることを認識させてよい。割込み線(図示していないが、下りリザルトバス112の一部とみなされる)が、その通知信号をCPU20に伝送するために使用されてよい。
【0087】
他の実施形態において、バッファ読出し制御モジュール106は、最も古い未読のレコード118によって記憶されているデータの一部を伝搬してよい。それは例えば、基準が満たされたというデータである。そして、CPU20はそのレコード118によって記憶されているデータをより多く要求するか否かを決定してよい。それは例えば、データストリーム12からのどのタームがその基準を満たしたかというデータである。CPU20は、レコード118を終了したとき、バッファ読出し制御モジュール106に、そのレコードがもはや必要ないことを通知する。バッファ読出し制御モジュール106は、それで、そのレコードが読出しが行われてバッファ書込み制御モジュール104によって上書きされても安全であることを示してよい。
【0088】
リザルトバッファはまた、検索結果処理によって生ずる遅延を減少させる。CPU20が検索結果を受信しまたは処理できるよりも速くデータストリーム12が検索基準を満たすとき、リザルトバッファ25は、CPU20が追いつくまでの間、未処理のリザルトデータを記憶してよい。リザルトバッファ25は、たとえ幾つかの検索基準がほぼ同時に満たされたとしても、CPU20へのリザルトデータの流れをスムーズ化することができ、その結果、CPU20がリザルトバッファ25によって記憶された検索結果のバックログ(処理残)を処理している間、パターン認識プロセッサ14はデータストリーム12を検索することを継続してよい。
【0089】
それに応じて、リザルトバッファ25は、データストリーム検索からの結果がリザルトバッファ25に入力されるのと同時に、リザルトデータをCPU20に出力してよい。すなわち、リザルトバッファ25は、“最も古い”未読レコード118からCPU20に前もって受信されている結果を伝送している間に、“空の”レコード118にデータストリーム検索の結果を受信してよい。これは、バッファ書込み制御モジュール104によって制御されながら受信された検索の結果を“空の”レコード118に記憶すること、およびバッファ読出し制御モジュール106によって制御されながら“最も古い”レコード118を読み出すこと、によって成し遂げられる。これは、検索結果処理によって引き起こされる遅延を減少できる。
【0090】
図15は、例えばFIFO記憶位置0に対するリザルトデータ124である、最も古いレコード118に対するリザルトデータ124に対応してよいリザルトバンク128を示す。リザルトバンク128は、最も古いレコード118がいつでもCPU20に対して見える唯一のレコードであるように、リザルトバンク128を介して読むことができるFIFOレコード118中への“ウインドウ”であってよい。リザルトバンク128のアクセスがひとたび完了すれば、CPU20は、例えば、CPU20がリザルトバンク128のレコード118(すなわち最も古く記憶されたリザルトデータ124)を終了したことを、バッファ読出し制御モジュール106に通知してよい。それに応答して、バッファ読出し制御モジュール106は、次のレコード118すなわちFIFO記憶位置1をリザルトバンク128に対応する新たな最も古いレコード118として見えるようにして、FIFOキューを前に進めてよい。このようにして、CPU20はリザルトバンク128に対応する現在のレコード118を処理することのみができてよい。残りのレコード118はFIFOキューにおいてCPU20から隠されたままにされてよい。
【0091】
リザルトバンク128は、レジスタ130のグループを含んでよい。このレジスタ130のグループは、リザルトデータ124を記憶するのに使用されてよい。例えば、レジスタ130のグループは、閾値論理マトリクス44、論理積マトリクス46、論理和マトリクス48、初期化ルーティングマトリクス50、閾値出力マスク94、積出力マスク96、和出力マスク98、および初期化出力マスク100からの照合結果出力の各々の記憶のための個別のレジスタ132−146を含んでよい。さらに、レジスタ130のグループ中の各レジスタ132−146は、並列に書き込まれてよい。この方法において、与えられたFIFO記憶位置に対応するレコード118に対するリザルトデータ124は、同時に受信されてレジスタ130のグループに記憶されてよく、それによって各個別のレジスタ132−146は、特にそのマトリクス44−50またはマスク94−100からの明示された結果を個別に記憶してよい。
【0092】
本発明は、種々の変形および代替形を受け入れる余地があるが、本明細書では、具体的な実施形態が図面において例として示され、詳細に説明されてきた。しかしながら、本発明は、開示された特定の形式に限定されることを意図されるものではないことを理解されたい。それよりもむしろ、本発明は、以下に添付された請求項によって定義される本発明の精神および範囲内にある全ての変形、均等物および代替物を包含するものである。
【技術分野】
【0001】
本発明の実施形態は、概して、パターン認識プロセッサおよび、より具体的には、実施形態において、パターン認識プロセッサの多重動作からの結果として生じるデータの通信に関する。
【背景技術】
【0002】
コンピューティングの分野においては、パターン認識タスクは、ますます性能が試される。大量のデータさえコンピュータ間で伝送され、ユーザが識別を望むパターンの数は増加している。例えば、スパムもしくはマルウェアは、しばしば、データストリームにおけるパターン(例えば、特定の句もしくはコードの一部)を検索することによって検出される。新規の変異形を検索するために新規のパターンが実施される可能性があるため、パターンの数は、スパムおよびマルウェアの多様性によって増加する。これらのパターンの各々に対してデータストリームを検索することは、コンピューティングボトルネック(障害)を形成する可能性がある。しばしば、データストリームが受信されると、一つずつ、各パターンを検索される。システムより前の遅延は、パターン数に伴うデータストリームの増加の次の部分を検索する状態にある。したがって、パターン認識は、データの受信を遅延させる可能性がある。
【0003】
パターン認識タスクは、実行されることになるさまざまなタイプの照合(一致、マッチ)によってしばしば複雑化される。データストリームは、短く連続する間にいくつかのパターンを照合し、これらの様々な照合は分類され得る。これらの照合による検索は、システムの相対的な性能を遅くし、これにより新しい照合が発生したときにシステムに対して迅速に応答することをできなくさせる。他の例においては、、照合が発生する前の比較的長期間にわたってデータストリームが受信される可能性がある。これにより照合を処理するための他の構成部分の能力は使用されずに残ることとなる。パターン認識中のリザルトデータの不規則な流れは、パターン認識ハードウェアとインタフェース接続するシステムの設計を難しくする。
【図面の簡単な説明】
【0004】
【図1】データストリームを検索するシステムの一実施例を示す。
【図2】図1のシステムにおけるパターン認識プロセッサの一実施例を示す。
【図3】図2のパターン認識プロセッサにおける検索タームセルの一実施例を示す。
【図4】単一の文字に対してデータストリームを検索する、図3の検索タームセルを示す。
【図5】単一の文字に対してデータストリームを検索する、図3の検索タームセルを示す。
【図6】一語に対してデータストリームを検索する幾つかの検索タームセルを含む認識モジュールを示す。
【図7】一語に対してデータストリームを検索する幾つかの検索タームセルを含む認識モジュールを示す。
【図8】一語に対してデータストリームを検索する幾つかの検索タームセルを含む認識モジュールを示す。
【図9】二語に対してパラレルにデータストリームを検索するように構成された認識モジュールを示す。
【図10】同一の接頭辞を有する複数語を特定する検索基準に従って検索する認識モジュールを示す。
【図11】同一の接頭辞を有する複数語を特定する検索基準に従って検索する認識モジュールを示す。
【図12】同一の接頭辞を有する複数語を特定する検索基準に従って検索する認識モジュールを示す。
【図13】図1のシステムにおけるパターン認識プロセッサの第2の例を示す。
【図14】図13のパターン認識プロセッサにおけるリザルトバッファの例を示す。
【図15】図14のリザルトバッファと接続して使用されるレジスタバンクの直列接続を示す。
【発明を実施するための最良の形態】
【0005】
図1は、データストリーム12を検索するシステム10の一実施例を示す。システム10は、検索基準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、Ogg Vorbisなど、エンコードされたバージョンのデータストリーム12を特定してもよいし、その逆を特定してもよい。
【0020】
パターン認識プロセッサ14は、CPU20と共に(単一のデバイスなどの)単一の構成部分に統合されたハードウェアであってもよいし、別個の構成部分として形成されてもよい。例えば、パターン認識プロセッサ14は別個の集積回路であってもよい。パターン認識プロセッサ14は、“コプロセッサ”もしくは“パターン認識コプロセッサ”と称されてもよい。
【0021】
図2は、パターン認識プロセッサ14の一実施例を示す。パターン認識プロセッサ14は、認識モジュール22および出力バッファ51を有する集約モジュール24を含んでもよい。出力バッファ51は、リザルトバッファ25を含んでもよい。認識モジュール22は、受信されたタームを検索タームと比較するように構成され、認識モジュール22および集約モジュール24の双方は、検索タームとタームが一致することが検索基準を満足するかどうかを決定するように協力してもよい。リザルトバッファ25はパターン認識プロセッサ14の他の部分からのリザルトデータをバッファリングしてもよく、これは図13に関連して以下に説明される。
【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は、検索タームセル54として本明細書で称されるコンポーネントである、検索タームアレイ32(図2)における単一のフィーチャセル30の一部を示す。検索タームセル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は、その検出セル68によって非アクティブ化され、検出周期の間そのメモリセル70をリセットするか、または、例えば、アクティブ化ルーティングマトリクス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”の出現回数を数える集約モジュールへと、文内の各々の“cattle”の出現を示す信号を出力し、検索基準が満足されたかどうかを判定する。
【0051】
フィーチャセル63、64もしくは66は幾つかの条件下でアクティブ化されてもよい。フィーチャセル63、64もしくは66は、“常にアクティブ”であってもよく、それは、全検索の間、もしくは実質的に全ての検索の間アクティブ状態のままであることを意味する。常にアクティブなフィーチャセル63、64もしくは66の一実施例は、検索基準の第一のフィーチャセル、例えば、フィーチャセル63である。
【0052】
フィーチャセル63、63もしくは66は、“要求されたときアクティブ”であってもよく、それは、幾つかの先行する条件が一致したとき、例えば、検索基準における先行する検索タームが一致したときに、フィーチャセル63、64もしくは66がアクティブであることを意味する。一実施例は、図6−図8におけるフィーチャセル63によって要求されたときにアクティブであるフィーチャセル64と、フィーチャセル64によって要求されたときにアクティブであるフィーチャセル66である。
【0053】
フィーチャセル63、64もしくは66は、“自己アクティブ化”されてもよく、それは、一度アクティブ化されればその検索タームが一致している限り、それ自身をアクティブ化することを意味する。例えば、いかなる数のディジットにでも一致した検索タームを有する自己アクティブ化されたフィーチャセルは、文字“x”に到達するまで、文章“123456xy”をアクティブ化したままであってもよい。自己アクティブ化されたフィーチャセルの検索タームが一致するたび、自己アクティブ化されたフィーチャセルは検索基準における次のフィーチャセルをアクティブ化してもよい。したがって、常にアクティブなフィーチャセルは、自己アクティブ化するフィーチャセルおよび要求されたときにアクティブなフィーチャセルから形成されてもよい。自己アクティブ化フィーチャセルは、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は、一x致を認識してアクティブである。それに応じて、アクティブ化ルーティングマトリクス36は、第一の接尾辞90の第一のフィーチャセル66および第二の接尾辞92の第一のフィーチャセル82の双方へとアクティブ化信号を伝送してもよい。他の実施例においては、より多くの接尾辞がアクティブ化されてもよく、または、複数の接頭辞は一つ以上の接尾辞をアクティブ化してもよい。
【0060】
続いて、図12においては、データストリーム12は、認識モジュール22に対して文字“o”を示し、第二の接尾辞92のフィーチャセル82は、一致を認識してアクティブである。それに応じて、アクティブ化ルーティングマトリクス36は、第二の接尾辞92の次のフィーチャセル84をアクティブ化してもよい。フィーチャセル66が非アクティブになると認められると、第一の接尾辞90の検索は終了してもよい。図10−図12に示されたステップは、文字“u”および“d”へと継続してもよいし、または、接頭辞88が一致する次の機会まで、検索は終了してもよい。
【0061】
図13は、他のパターン認識プロセッサ93の例を示す。パターン認識プロセッサ93は、図2のパターン認識プロセッサ14に関して上述したのと実質的に同様の方法で動作してよい。しかしながら、パターン認識プロセッサ93は、図2のパターン認識プロセッサ14と共通の構成部分に加えて、閾値出力マスク94、積出力マスク96、和出力マスク98、および初期化出力マスク100をさらに含んでよい。
【0062】
閾値出力マスク94、積出力マスク96、和出力マスク98、および初期化出力マスク100は一般に、入力として受信される一つ以上の結果を、“マスク”し、換言すればフィルタ処理する。例えば、閾値論理マトリクス44は、データストリーム12における例えばセキュリティの脅威などの全ての既知の出現事象に対して検索をするように設定されてよい。しかしながら、特定のハイリスク脅威のような一つ以上の特定のセキュリティ脅威に対しては、これらの結果をフィルタ処理することが有益であろう。従って、閾値出力マスク94は、特定のハイリスクセキュリティ脅威を除いては、閾値論理44によって発見される全てのセキュリティ脅威をブロックするように設定されてよい。もしこのハイリスクセキュリティ脅威が発見されたならば、CPUによって取り出されるようにするために、脅威に対する通知が閾値出力マスク94から出力バッファ51に伝送されてよい。このようにして、閾値出力マスク94、積出力マスク96、和出力マスク98、および初期化出力マスク100は、それぞれがパターンマッチングマトリクス44−50の全体の結果出力から一つ以上の特定の結果を分けるために、それぞれのマトリクス44−50の出力をフィルタ処理できるマスクモジュールを形成してよい。幾つかの実施形態において、出力マスクモジュール94−100は、そのようなフィルタリングを容易にするために、パターンマッチングマトリクス44−50の出力に関連するマスクレジスタを用いてよい。
【0063】
従って、閾値出力マスク94は、閾値論理マトリクス44の結果に基づいて検索結果照合(一致、マッチ)を生成するように動作してよい。上述したように、閾値論理マトリクス44は、認識モジュールにより通知された照合に基づいてカウントアップまたはダウンするように構成される例えば32ビットカウンタである複数のカウンタを含んでよい。閾値論理マトリクス44は、データ列中で発見された3つの“A”シンボルのようないくらかの長さのテキストにおける単語の発生数を計数してよい。閾値論理マトリクス44からの結果は、閾値出力マスク94、出力バッファ51、および論理積マトリクス46に送られてよい。閾値出力マスク94は、閾値論理マトリクス44によって決定される閾値結果を使用して追加の照合検索を実行してよい。この追加の照合検索は、例えば閾値出力マスク94中のビット配置を使って閾値論理マトリクス44によって決定される閾値結果に対する“アンド演算(AND−ing)”を含んでよい。
【0064】
例えば、閾値結果は、各ラインが特定の結果に対応してよい例えば32ラインの閾値出力マスク94に送られてよい。これらのラインの各々はまた、1または0のいずれかにセットされてよい、閾値出力マスク94内の対応するビット配置を有してよい。そのセットされる値は、そのビット配置に対応するライン上で受信された結果が閾値出力マスク94によって選択されるものであるか否かに依存する。このようにして、1にセットされた閾値出力マスク94内の任意のビット配置に対して、閾値論理マトリクス44からの対応する結果ラインに沿って受信された任意の情報が、閾値出力マスク94から出力バッファ51に伝送されてよい。同様にして、0にセットされた閾値出力マスク94内の任意のビット配置に対して、閾値論理マトリクス44からの対応するラインに沿って受信された任意の情報が、マスクされ、換言すればフィルタ処理され、従って、閾値出力マスク94から出力バッファ51に伝送されないようにしてよい。このようにして、閾値出力マスク94は、どの閾値論理マトリクス44の結果(例えば閾値出力マスク94中の有効にされたビット配置に対応するもの)を出力バッファ51に流し、どの閾値論理マトリクス44の結果(例えば閾値出力マスク94中の有効にされたビット配置に対応するもの)を無視するかを、効果的に選択してよい。上述の考察は、閾値出力マスク94を介したハードウェア照合について説明することを示してきたが、上述のものと同様に機能的に動作する閾値マスクプログラムを用いたソフトウェア照合が使用されてもよいことに留意されたい。
【0065】
積出力マスク96は、論理積マトリクス46の結果に基づいて検索結果照合を生成するように動作してよい。論理積マトリクス46は、2つ以上の閾値論理マトリクス44結果に基づいて、“積”の結果(例えば、ブール論理における“AND”関数)を選択的に生成してよい。例えば、論理積マトリクス46は3つの“A’s”とターム“cat”の両方を検索してよい。論理積マトリクス46からの結果は、積出力マスク96、出力バッファ51、および論理和マトリクス48に流されてよい。積出力マスク96は、論理積マトリクス46により決定された積の結果を使用して追加の照合検索を実行してよい。この追加の照合検索は、例えば閾値出力マスク94内のビット配置を用いて論理積マトリクス46によって決定される結果に対する“アンド演算(AND−ing)”を含んでよい。
【0066】
例えば、論理積マトリクス46の積の結果は、各ラインが特定の結果に対応してよい例えば32ラインに沿って積出力マスク96に流されてよい。これらのラインの各々はまた、1または0のいずれかがセットされてよい積出力マスク96内の対応するビット配置を有してよい。そのセットされる値は、そのビット配置に対応するライン上で受信された結果が積出力マスク96によって選択されるべきものであるか否かに依存する。このようにして、1にセットされた積出力マスク96内の任意のビット配置に対して、論理積マトリクス46からの対応する結果ラインに沿って受信された任意の情報が、積出力マスク96から出力バッファ51に伝送されてよい。同様にして、0にセットされた積出力マスク96内の任意のビット配置に対して、論理積マトリクス46からの対応するラインに沿って受信された任意の情報が、マスクされ、換言すればフィルタ処理され、従って、積出力マスク96から出力バッファ51に伝送されないようにしてよい。このようにして、積出力マスク96は、どの論理積マトリクス46の結果(例えば積出力マスク96中の有効にされたビット配置に対応するもの)を出力バッファ51に流し、どの論理積マトリクス46の結果(例えば積出力マスク96中の有効にされたビット配置に対応するもの)を無視するかを、効果的に選択してよい。上述の考察は、積出力マスク96を介したハードウェア照合について説明することを示してきたが、上述のものと同様に機能的に動作する閾値マスクプログラムを用いたソフトウェア照合が使用されてもよいことに留意されたい。
【0067】
和出力マスク98は、閾値出力マスク94および積出力マスク96を用いて上述したのと類似の方法で、論理和マトリクス48の結果に基づいて検索結果照合を生成するように動作してよい。論理和マトリクス48は、“和”の結果(例えば、ブール論理における“OR”関数)を選択的に生成してよく、あるいは、論理積入力結果に基づいて、論理積和(例えば、ブール論理での積和(SOP)形)を創り出してもよい。例えば、論理和マトリクス48は、3つの“A’s”とターム“cat”の両方または3つの“N’s”とターム“dog”、を検索してよい。論理和マトリクス48からの結果は、和出力マスク98、出力バッファ51、および初期化ルーティングマトリクス50に送られてよい。
【0068】
そのような和の結果は、和出力マスク98によって一組の出力結果ラインに沿って受信されてよい。これらのラインの各々はまた、1または0のいずれかがセットされてよい和出力マスク98内の対応するビット配置を有してよい。そのセットされる値は、そのビット配置に対応するライン上で受信された結果が和出力マスク98によって選択されるべきものであるか否かに依存する。従って、1にセットされた和出力マスク98内の任意のビット配置に対して、論理和マトリクス48からの対応する結果ラインに沿って受信された任意の情報が、和出力マスク98から出力バッファ51に伝送されてよい。同様にして、0にセットされた和出力マスク98内の任意のビット配置に対して、論理和マトリクス48からの対応する結果ラインに沿って受信された任意の情報が、マスクされ、換言すればフィルタ処理され、従って、和出力マスク98から出力バッファ51に伝送されないようにしてよい。このようにして、和出力マスク98は、どの論理和マトリクス48の結果(例えば和出力マスク98中の有効にされたビット配置に対応するもの)を出力バッファ51に流し、どの論理和マトリクス48の結果(例えば和出力マスク98中の有効にされたビット配置に対応するもの)を無視するかを、効果的に選択してよい。上述の考察は、和出力マスク98を介したハードウェア照合について説明することを示してきたが、上述のものと同様に機能的に動作する閾値マスクプログラムを用いたソフトウェア照合が使用されてもよいことに留意されたい。
【0069】
初期化出力マスク100は、初期化ルーティングマトリクス50の初期化結果に基づく結果を生成するように動作してよい。初期化ルーティングマトリクス50は、論理和マトリクス48からの結果に基づいて、検出アレイ34および/または集約ルーティングマトリクス42を介して集約モジュール24の一部を選択的にリセットしてよい。初期化ルーティングマトリクス50はまた、検索基準が満足されまたはそれ以上満足されないと決定されたときのような場合に、パターン認識プロセッサ14の他の部分を再初期化してもよい。これらの初期化結果は、出力バッファ51および初期化出力マスク100に流される。
【0070】
初期化出力マスク100は、初期化ルーティングマトリクス50によって決定される初期化結果を利用して追加の照合検索を実行してよく、それによって第2の条件付きのリセットが生成されてもよい。この追加的なリセットは、例えば検出アレイ34または集約ルーティングマトリクス42を介した集約モジュール24の初期化出力マスク100によるリセットのための第2の条件を用いて、初期化ルーティングマトリクス50によって決定される初期化結果に対する“アンド演算(AND−ing)”によって生成されてもよい。この第2の条件は初期化出力マスク100内の一つ以上のアクティブ化されたビット配置であってよく、それによりそのビット配置は初期化ルーティングマトリクス50からの一つ以上の結果ラインに対応する。初期化出力マスク100内の与えられたビット配置は1または0のいずれかにセットされてよい。そのセットされる値は、そのビット配置に対応するライン上で受信された結果が初期化出力マスク100によって選択されるべきものであるか否かに依存する。この結果、どの初期化ルーティングマトリクス50の結果を出力バッファ51に流し、どの初期化ルーティングマトリクス50の結果を無視するかを効果的に選択できる。さらに、初期化出力マスク100は、ハードウェアを介して、または、例えば上述のハードウェア実装と同様に機能的に動作する初期化マスクプログラムを用いたソフトウェアを介して、実装されてよい。
【0071】
従って、出力バッファ51は、閾値出力マスク94、積出力マスク96、和出力マスク98、および初期化出力マスク100の出力と同様に、閾値論理マトリクス44、論理積マトリクス46、論理和マトリクス48、および初期化ルーティングマトリクス50の出力を受信してよい。出力バッファ51は、結果バッファ25とともに、出力バス26を介した出力の伝送に先立って、その出力のためのバッファとして動作してよい。さらに、これらの結果の出力バッファ51への書込みは、同時に、換言すれば並列に実行されてよい。
【0072】
図14は、パターン認識プロセッサ14またはパターン認識プロセッサ93に結合されるリザルト(結果)バッファ25の例を示す。図2および図13に関連して上述したように、リザルトバッファ25は、出力バッファ51に含まれてよい。結果バッファ25は、ファースト−インファースト−アウト(FIFO)バッファ102、バッファ書込み制御モジュール104、バッファ読出し制御モジュール106、およびバッファ設定モジュール108を含んでよい。リザルトバッファ25は、パターン認識プロセッサ14の一部として(例えばシリコンの同一ボディー上に)完全に形成されてよく、あるいはそれは別々の構成部品または別々の構成部品の一部であってもよい。リザルトバッファ25は、上りリザルトバス110を通してパターン認識プロセッサ14からリザルトデータを受信してよく、また、リザルトバッファ25は、下りリザルトバス112を通してCPU20(図1)にリザルトデータを出力してよい。設定バス114は、CPU20を、リザルトバッファ25内のバッファ設定モジュール108およびパターン認識プロセッサ14を設定するのに使用してよいパターン認識プロセッサ設定モジュール116と通信する状態に置いてよい。
【0073】
FIFOバッファ102は、複数のレコード118を記憶するように構成されてよい。各レコード118は例えば基準の充足に関連するデータであるリザルトデータを記憶してよい。各レコード118は一つの基準を満足させる一つのインスタンスと一致してよく、あるいは、基準を満足させることに関連するデータは例えば幾つかの隣接する、さもなくば連続的なレコード118である幾つかのレコード118に記憶されてよい。
【0074】
各レコード118はリザルトステータス情報120,ハウスキーピング情報122,およびリザルトデータ124を記憶するためのフィールドを含んでよい。他の実施形態は、追加的なフィールドまたはより少ないフィールドを含んでよい。リザルトステータスフィールド120はデータストリーム12を識別しデータストリーム12をパターン認識プロセッサ14が受信するかもしれない他のデータストリームから区別するデータを記憶してよい。
【0075】
ハウスキーピングフィールド122は基準が満足されたときにパターン認識プロセッサ14のステータスを表示するデータを記憶してよい。例えば、ハウスキーピングフィールド122は、エラー状態が発生したか否かを指し示すデータを記憶してよい。エラー状態の例は、入力データオーバーフローまたはFIFOバッファフル状態を含む。FIFOバッファ102は、例えば、約32レコード以上、約64レコード以上、約128レコード以上、約256レコード以上、または約512レコード以上を含んでよい。
【0076】
リザルトデータ124は、どの基準が満足されたのか、基準を満足させたデータストリーム12からのタームのシーケンス、基準を満足させたデータストリーム12の部分を示すタームカウント(例えばビットカウント)、またはその間基準を満足させたデータストリームの部分が受信された時間間隔のようなデータを含んでよい。各レコード118に記憶されたリザルトデータ124は、バンクとして分類される。このバンクは、閾値論理マトリクス44、論理積マトリクス46、論理和マトリクス48、初期化ルーティングマトリクス50、閾値出力マスク94、積出力マスク96、和出力マスク98、および/または初期化出力マスク100の各々からの照合結果出力の各々の記憶装置のための個々のレジスタを含んでよい。さらに、照合結果出力は、並列にレジスタバンクに書き込まれてよい。この方法において、各レコード118のためのリザルトデータ124、換言すれば照合データは、受信されてレジスタバンクに同時に記憶されてよい。そこによって、各々個別のレジスタは、特にそのマトリクスまたはマスクからの明示された結果を個別に記憶してよい。
【0077】
バッファ書込み制御モジュール108は、上りリザルトバス110からのどのデータがFIFOバッファ102中のどのレコード118に書き込まれるかを制御するように構成されてよい。バッファ書込み制御モジュール102は、基準が満足されるごとにまたはリザルトデータが新しいレコード118に書き込まれるごとにインクリメントまたはデクリメントするカウンタを含んでよい。バッファ書込み制御モジュールはまた、どのレコード118が最も最近にCPU20に出力されたかを示すメモリを含んでよく、バッファ書込み制御モジュール104は、上りリザルトバス110からのデータを、すでにCPU20に伝えられたデータを含むレコード118に書き込むように構成されてよい。
【0078】
同様に、バッファ読出し制御モジュール106は、どのレコード118がFIFOバッファ102から読み出されていない最も古いレコードであるかを指し示すように構成されてよい。例えば、バッファ読出し制御モジュール106はレコードがFIFOバッファから読み出されるごとにインクリメントまたはデクリメントするカウンタを含んでよく、そのカウンタのカウントは最も古く読まれていないレコード118を識別してよい。バッファ読出し制御モジュール106は、CPU20からの読出し命令信号126を受信し、FIFOバッファ102に対して最も古く読まれていないレコード118により記憶されたデータを出力させることによりその読出し命令に応答するように構成されてよい。
【0079】
リザルトバス112は、下りリザルトバス112がデータを出力しているのと同時にデータストリーム12がデータを入力するように、データストリーム12を伝搬するバスとは異なる導体を含んでよい。リザルトバッファ25がパターン認識プロセッサ14と完全に一体に形成される実施形態では、パターン認識プロセッサ14はデータストリーム12入力と結果出力を伝搬するための個別のピンを含んでよい。従って、リザルトデータはデータストリームが入力されるのと同時に出力されてよい。
【0080】
代わりに、リザルトバス112は、同じ導体またはピンを使用して、要するに共有バスを使用して、データストリーム12を受信しリザルトデータを出力してよい。例えば、その共有バスは、その共有バスが同じ導体によって使用されてデータストリーム12を受信しリザルトデータを出力できるように、多重化されまたはタイムスライス化されてよい。しかしながら、その共有バスが入力データを伝送するように使用される時間は、その共有バスが出力データを伝送するのに使用される時間を超えており、そのようにして出力サイクルよりも多くの入力サイクルが生み出されている。そのようにして、入力サイクルはその共有バスの多重化の間、最高の優先度が与えられてよい。出力サイクルは、時間の許す限り、入力サイクルとして使用されていないタイムスロットに続いてはめ込まれてよい。
【0081】
動作については、パターン認識プロセッサ14は、図2−図13を参照して上述した方法で、データストリーム12を検索してよく、その検索からの結果はCPU20に伝搬される前にリザルトバッファ25にバッファリングされてよい。基準が満たされたとき、どの基準が満たされたのかを示すデータ、データストリーム12中のどのタームがその基準を満たしたのかを示すデータ、およびどのデータストリームが検索されたのかを示すデータのような、その基準の充足に関連するデータが、上りリザルトバス110を通してリザルトバッファ25に伝送されてよい。
【0082】
このデータの受信において、バッファ書込み制御モジュール104は、例えば、記憶データをすでにCPU20に伝搬されているレコード118またはどのデータも記憶していないレコード118である幾つかのフリーレコードがFIFOバッファ102内にあるか否かを決定してよい。もしフリーレコードが利用可能でなければ、バッファ書込み制御モジュール104は、パターン認識プロセッサ14に通知してデータストリーム12を検索することを停止させ、CPU20はFIFOバッファ102中のレコードを通じて動作するので空き時間を創り出してしまうが、CPU20に通知してデータストリーム12の伝送を休止させてよい。バッファ書込み制御モジュール104はまた、現在のまたはその次のレコードのハウスキーピング情報フィールド122に、パターン認識プロセッサ14がリザルトバッファオーバーフロー状態に入ったことを示すデータを記憶させてよい。
【0083】
バッファ書込み制御モジュール104が少なくとも一つのフリーレコード118が利用可能であると決定したならば、バッファ書込み制御モジュール104は、上りリザルトデータバス110からのリザルトデータをそのフリーレコード118に書き込んでよい。バッファ書込み制御モジュール104は、そのレコード118が書き込みが行われたがまだ読出しは行われていないことを示してよく、バッファ書込み制御モジュール104は、そのレコード118が他の書き込まれたレコードと比較して最新のレコードであることを示してよい。
【0084】
実質的に同じ時間または他の時間において、CPU20は読出し制御信号126をバッファ読出し制御モジュール106に送信し、それによってバッファ読出し制御モジュール106に対してまだ未読の最も古いレコード118内のデータを出力するように通知してよい。このようにして、CPU20は重要なステータスレジスタに対して“ポーリング”して、例えばCPU20への伝送のために新しいレコード118が利用可能であるか否かを決定してよい。CPU20によるポーリングは、リザルトバッファ25の内部または外部のいずれかの一つ以上のステータスビットがセットされたか否かの、CPU20を介した決定を生ずる。一つ以上のステータスビットのセッティングは、新たなパターンマッチリザルトデータがCPU20による読出しのために利用可能であることを指し示してよい。
【0085】
バッファ読出し制御モジュール106はまた、いくつかの未読のレコード118が存在するか否かを決定してよい。未読レコードが存在しないならば、バッファ読出し制御モジュール106はCPU20に対して目下のところ未読レコードは無いことを通知する。もし未読のレコード118が存在するならば、バッファ読出し制御モジュール106は、最も古い未読レコードを識別し、その最も古い未読のレコード118によって記憶されたデータをCPU20に伝搬してよい。これは、CPU20が新たな結果が利用可能であるか否かを“質問”する“ポーリング”方法を構成する。
【0086】
他の方法として、“割込み処理”が、CPU20が与えられた照合を通知するアクティブ通知方法を構成してよい。この方法において、バッファ読出し制御モジュール106は、下りリザルトバス112を通じてCPU20に、CPU20に通知をしおよび/または割込みを行う通知信号をアクティブに伝送し、これによりCPU20に対して一つ以上の利用可能レコード118が利用できることを認識させてよい。割込み線(図示していないが、下りリザルトバス112の一部とみなされる)が、その通知信号をCPU20に伝送するために使用されてよい。
【0087】
他の実施形態において、バッファ読出し制御モジュール106は、最も古い未読のレコード118によって記憶されているデータの一部を伝搬してよい。それは例えば、基準が満たされたというデータである。そして、CPU20はそのレコード118によって記憶されているデータをより多く要求するか否かを決定してよい。それは例えば、データストリーム12からのどのタームがその基準を満たしたかというデータである。CPU20は、レコード118を終了したとき、バッファ読出し制御モジュール106に、そのレコードがもはや必要ないことを通知する。バッファ読出し制御モジュール106は、それで、そのレコードが読出しが行われてバッファ書込み制御モジュール104によって上書きされても安全であることを示してよい。
【0088】
リザルトバッファはまた、検索結果処理によって生ずる遅延を減少させる。CPU20が検索結果を受信しまたは処理できるよりも速くデータストリーム12が検索基準を満たすとき、リザルトバッファ25は、CPU20が追いつくまでの間、未処理のリザルトデータを記憶してよい。リザルトバッファ25は、たとえ幾つかの検索基準がほぼ同時に満たされたとしても、CPU20へのリザルトデータの流れをスムーズ化することができ、その結果、CPU20がリザルトバッファ25によって記憶された検索結果のバックログ(処理残)を処理している間、パターン認識プロセッサ14はデータストリーム12を検索することを継続してよい。
【0089】
それに応じて、リザルトバッファ25は、データストリーム検索からの結果がリザルトバッファ25に入力されるのと同時に、リザルトデータをCPU20に出力してよい。すなわち、リザルトバッファ25は、“最も古い”未読レコード118からCPU20に前もって受信されている結果を伝送している間に、“空の”レコード118にデータストリーム検索の結果を受信してよい。これは、バッファ書込み制御モジュール104によって制御されながら受信された検索の結果を“空の”レコード118に記憶すること、およびバッファ読出し制御モジュール106によって制御されながら“最も古い”レコード118を読み出すこと、によって成し遂げられる。これは、検索結果処理によって引き起こされる遅延を減少できる。
【0090】
図15は、例えばFIFO記憶位置0に対するリザルトデータ124である、最も古いレコード118に対するリザルトデータ124に対応してよいリザルトバンク128を示す。リザルトバンク128は、最も古いレコード118がいつでもCPU20に対して見える唯一のレコードであるように、リザルトバンク128を介して読むことができるFIFOレコード118中への“ウインドウ”であってよい。リザルトバンク128のアクセスがひとたび完了すれば、CPU20は、例えば、CPU20がリザルトバンク128のレコード118(すなわち最も古く記憶されたリザルトデータ124)を終了したことを、バッファ読出し制御モジュール106に通知してよい。それに応答して、バッファ読出し制御モジュール106は、次のレコード118すなわちFIFO記憶位置1をリザルトバンク128に対応する新たな最も古いレコード118として見えるようにして、FIFOキューを前に進めてよい。このようにして、CPU20はリザルトバンク128に対応する現在のレコード118を処理することのみができてよい。残りのレコード118はFIFOキューにおいてCPU20から隠されたままにされてよい。
【0091】
リザルトバンク128は、レジスタ130のグループを含んでよい。このレジスタ130のグループは、リザルトデータ124を記憶するのに使用されてよい。例えば、レジスタ130のグループは、閾値論理マトリクス44、論理積マトリクス46、論理和マトリクス48、初期化ルーティングマトリクス50、閾値出力マスク94、積出力マスク96、和出力マスク98、および初期化出力マスク100からの照合結果出力の各々の記憶のための個別のレジスタ132−146を含んでよい。さらに、レジスタ130のグループ中の各レジスタ132−146は、並列に書き込まれてよい。この方法において、与えられたFIFO記憶位置に対応するレコード118に対するリザルトデータ124は、同時に受信されてレジスタ130のグループに記憶されてよく、それによって各個別のレジスタ132−146は、特にそのマトリクス44−50またはマスク94−100からの明示された結果を個別に記憶してよい。
【0092】
本発明は、種々の変形および代替形を受け入れる余地があるが、本明細書では、具体的な実施形態が図面において例として示され、詳細に説明されてきた。しかしながら、本発明は、開示された特定の形式に限定されることを意図されるものではないことを理解されたい。それよりもむしろ、本発明は、以下に添付された請求項によって定義される本発明の精神および範囲内にある全ての変形、均等物および代替物を包含するものである。
【特許請求の範囲】
【請求項1】
少なくとも一部がデータストリーム中の一つ以上の値に対する検索に基づく第1の結果を生成するように適合させられるパターンマッチングマトリクスと、
少なくとも一部が前記第1の結果をフィルタリングすることに基づく第2の結果を生成するように適合させられるマスクモジュールと、
を備えるパターン認識プロセッサと、
前記パターン認識プロセッサによって生成される第1および第2の結果を記憶するように適合させられる複数のファースト−インファースト−アウト(FIFO)記憶位置を含むリザルトバッファと、
を備えることを特徴とするシステム。
【請求項2】
請求項1に記載のシステムであって、前記複数のFIFO記憶位置の各々に記憶される前記第1および第2の結果は、各FIFO記憶位置に対応するレジスタバンクに記憶されることを特徴とするシステム。
【請求項3】
請求項2に記載のシステムであって、前記レジスタバンクは、各々が前記第1の結果のうちの一つに対応する照合リザルトデータまたは前記第2の結果のうちの一つに対応するマスクリザルトデータを記憶するように適合させられる複数のレジスタを備えることを特徴とするシステム。
【請求項4】
請求項3に記載のシステムであって、前記パターンマッチングマトリクスは、前記データストリーム中の値の発生を閾値結果として登録し、前記閾値結果を前記第1の結果のサブセットとして前記複数のレジスタのうちの一つのレジスタに出力するように構成される閾値論理マトリクスを含むことを特徴とするシステム。
【請求項5】
請求項4に記載のシステムであって、閾値出力マスクを含む前記マスクモジュールは、
前記閾値論理マトリクスから前記閾値結果を受信し、
前記閾値結果をフィルタ処理し、
前記フィルタ処理された閾値結果を前記第2の結果のサブセットとして前記複数のレジスタのうちの追加のレジスタに出力する、
ように構成されることを特徴とするシステム。
【請求項6】
請求項3に記載のシステムであって、前記パターンマッチングマトリクスは、少なくとも一部が二つ以上の閾値論理マトリクス結果に基づく積結果を生成し、前記積結果を前記第1の結果のサブセットとして前記複数のレジスタのうちの一つのレジスタに出力するように構成される論理積マトリクスを含むことを特徴とするシステム。
【請求項7】
請求項6に記載のシステムであって、積出力マスクを含む前記マスクモジュールは、
前記論理積マトリクスから前記積結果を受信し、
前記受信された積結果をフィルタ処理し、
前記フィルタ処理された積結果を前記第2の結果のサブセットとして前記複数のレジスタのうちの追加のレジスタに出力する、
ように構成されることを特徴とするシステム。
【請求項8】
請求項3に記載のシステムであって、前記パターンマッチングマトリクスは、少なくとも一部が二つ以上の論理積マトリクス結果に基づく和結果を生成し、前記和結果を前記第1の結果のサブセットとして前記複数のレジスタのうちの一つのレジスタに出力するように構成される論理和マトリクスを含むことを特徴とするシステム。
【請求項9】
請求項8に記載のシステムであって、和出力マスクを含む前記マスクモジュールは、
前記論理和マトリクスから前記和結果を受信し、
前記受信された和結果をフィルタ処理し、
前記フィルタ処理された照合を前記第2の結果のサブセットとして前記複数のレジスタのうちの追加のレジスタに出力する、
ように構成されることを特徴とするシステム。
【請求項10】
請求項3に記載のシステムであって、前記パターンマッチングマトリクスは、検索基準が満たされたと決定したときに初期化結果を登録し、前記初期化結果を前記第1の結果のサブセットとして前記複数のレジスタのうちの一つのレジスタに出力するように構成される初期化ルーティングマトリクスを含むことを特徴とするシステム。
【請求項11】
請求項10に記載のシステムであって、初期化出力マスクを含む前記マスクモジュールは、
前記初期化ルーティングマトリクスから前記初期化結果を受信し、
前記受信された初期化結果をフィルタ処理し、
前記フィルタ処理された初期化結果を前記第2の結果のサブセットとして前記複数のレジスタのうちの追加のレジスタに出力する、
ように構成されることを特徴とするシステム。
【請求項12】
請求項3に記載のシステムであって、前記複数のレジスタの各々は同時に書き込まれてよいことを特徴とするシステム。
【請求項13】
データストリームを受信し、
パターン認識プロセッサの一つ以上のパターンマッチングマトリクスを介して前記データストリームを検索し、前記一つ以上のパターンマッチングマトリクスは少なくとも一部がデータのストリーム中の一つ以上の値に対応する検索に基づく第1の結果を生成するように適合させられ、
一つ以上のマスクモジュールを介して前記第1の結果をフィルタ処理して第2の結果を生成し、
前記第1および第2の結果をレジスタのグループを備える一つ以上のFIFO記憶位置を備えるバッファ中に記憶する、
ことを備えることを特徴とする方法。
【請求項14】
請求項13に記載の方法であって、前記一つ以上のマスクモジュールを介して前記第1の結果をフィルタ処理することは、前記第1の結果を前記一つ以上のマスクモジュールのマスクレジスタに記憶された値とアンド演算して前記第2の結果を生成することを備えることを特徴とする方法。
【請求項15】
請求項13に記載の方法であって、前記一つ以上のパターンマッチングマトリクスを介して前記データストリームを検索することは、閾値論理マトリクス、論理積マトリクス、論理和マトリクス、および初期化ルーティングマトリクスのうちの一つ以上を介して前記データストリームを検索することを含むことを特徴とする方法。
【請求項16】
請求項13に記載の方法であって、前記一つ以上のマスクモジュールを介して前記第1の結果をフィルタ処理することは、閾値出力マスク、積出力マスク、和出力マスク98、および初期化出力マスクのうちの一つ以上を介して前記第1の結果をフィルタ処理することを含むことを特徴とする方法。
【請求項17】
請求項13に記載の方法であって、前記レジスタのグループ中の各レジスタは同時に書き込まれてよいことを特徴とする方法。
【請求項18】
請求項13に記載の方法であって、ステータスビットがアクティブ化されたことを決定するとき一つ以上のFIFO記憶位置の少なくとも一つにアクセスすることを備え、前記ステータスビットはパターンマッチデータが前記レジスタのグループに記憶されたときにアクティブ化されることを特徴とする方法。
【請求項19】
請求項13に記載の方法であって、割込み信号を受信するとき一つ以上のFIFO記憶位置の少なくとも一つにアクセスすることを備え、前記割込み信号はパターンマッチデータが前記レジスタのグループに記憶されたことを示すことを特徴とする方法。
【請求項20】
複数のレジスタを備え、前記複数のレジスタはデータのストリーム中の一つ以上の値に対する検索を介してマッチングマトリクスによって生成される結果データと、前記結果データをフィルタ処理することを介してマスクモジュールによって生成されるマスク結果データを記憶するように適合させられることを特徴とするシステム。
【請求項21】
請求項20に記載のシステムであって、前記複数のレジスタは、ファースト−インァースト−アウト順で、レジスタバンクにグループ化されるシステム。
【請求項22】
請求項21に記載の方法であって、ステータスビットがアクティブ化されているか否かを決定するとき少なくとも一つの前記レジスタバンクにアクセスするように適合させられるプロセッサを備え、前記ステータスビットは結果データに対応し少なくとも一つのレジスタバンク中の前記複数のレジスタに書き込まれることを特徴とする方法。
【請求項23】
請求項21に記載の方法であって、割込み信号を受信し前記割込み信号を受信するとき少なくとも一つの前記レジスタバンクにアクセスするように適合させられるプロセッサを備え、前記割込み信号は結果データに対応し少なくとも一つのレジスタバンク中の前記複数のレジスタに書き込まれることを特徴とする方法。
【請求項1】
少なくとも一部がデータストリーム中の一つ以上の値に対する検索に基づく第1の結果を生成するように適合させられるパターンマッチングマトリクスと、
少なくとも一部が前記第1の結果をフィルタリングすることに基づく第2の結果を生成するように適合させられるマスクモジュールと、
を備えるパターン認識プロセッサと、
前記パターン認識プロセッサによって生成される第1および第2の結果を記憶するように適合させられる複数のファースト−インファースト−アウト(FIFO)記憶位置を含むリザルトバッファと、
を備えることを特徴とするシステム。
【請求項2】
請求項1に記載のシステムであって、前記複数のFIFO記憶位置の各々に記憶される前記第1および第2の結果は、各FIFO記憶位置に対応するレジスタバンクに記憶されることを特徴とするシステム。
【請求項3】
請求項2に記載のシステムであって、前記レジスタバンクは、各々が前記第1の結果のうちの一つに対応する照合リザルトデータまたは前記第2の結果のうちの一つに対応するマスクリザルトデータを記憶するように適合させられる複数のレジスタを備えることを特徴とするシステム。
【請求項4】
請求項3に記載のシステムであって、前記パターンマッチングマトリクスは、前記データストリーム中の値の発生を閾値結果として登録し、前記閾値結果を前記第1の結果のサブセットとして前記複数のレジスタのうちの一つのレジスタに出力するように構成される閾値論理マトリクスを含むことを特徴とするシステム。
【請求項5】
請求項4に記載のシステムであって、閾値出力マスクを含む前記マスクモジュールは、
前記閾値論理マトリクスから前記閾値結果を受信し、
前記閾値結果をフィルタ処理し、
前記フィルタ処理された閾値結果を前記第2の結果のサブセットとして前記複数のレジスタのうちの追加のレジスタに出力する、
ように構成されることを特徴とするシステム。
【請求項6】
請求項3に記載のシステムであって、前記パターンマッチングマトリクスは、少なくとも一部が二つ以上の閾値論理マトリクス結果に基づく積結果を生成し、前記積結果を前記第1の結果のサブセットとして前記複数のレジスタのうちの一つのレジスタに出力するように構成される論理積マトリクスを含むことを特徴とするシステム。
【請求項7】
請求項6に記載のシステムであって、積出力マスクを含む前記マスクモジュールは、
前記論理積マトリクスから前記積結果を受信し、
前記受信された積結果をフィルタ処理し、
前記フィルタ処理された積結果を前記第2の結果のサブセットとして前記複数のレジスタのうちの追加のレジスタに出力する、
ように構成されることを特徴とするシステム。
【請求項8】
請求項3に記載のシステムであって、前記パターンマッチングマトリクスは、少なくとも一部が二つ以上の論理積マトリクス結果に基づく和結果を生成し、前記和結果を前記第1の結果のサブセットとして前記複数のレジスタのうちの一つのレジスタに出力するように構成される論理和マトリクスを含むことを特徴とするシステム。
【請求項9】
請求項8に記載のシステムであって、和出力マスクを含む前記マスクモジュールは、
前記論理和マトリクスから前記和結果を受信し、
前記受信された和結果をフィルタ処理し、
前記フィルタ処理された照合を前記第2の結果のサブセットとして前記複数のレジスタのうちの追加のレジスタに出力する、
ように構成されることを特徴とするシステム。
【請求項10】
請求項3に記載のシステムであって、前記パターンマッチングマトリクスは、検索基準が満たされたと決定したときに初期化結果を登録し、前記初期化結果を前記第1の結果のサブセットとして前記複数のレジスタのうちの一つのレジスタに出力するように構成される初期化ルーティングマトリクスを含むことを特徴とするシステム。
【請求項11】
請求項10に記載のシステムであって、初期化出力マスクを含む前記マスクモジュールは、
前記初期化ルーティングマトリクスから前記初期化結果を受信し、
前記受信された初期化結果をフィルタ処理し、
前記フィルタ処理された初期化結果を前記第2の結果のサブセットとして前記複数のレジスタのうちの追加のレジスタに出力する、
ように構成されることを特徴とするシステム。
【請求項12】
請求項3に記載のシステムであって、前記複数のレジスタの各々は同時に書き込まれてよいことを特徴とするシステム。
【請求項13】
データストリームを受信し、
パターン認識プロセッサの一つ以上のパターンマッチングマトリクスを介して前記データストリームを検索し、前記一つ以上のパターンマッチングマトリクスは少なくとも一部がデータのストリーム中の一つ以上の値に対応する検索に基づく第1の結果を生成するように適合させられ、
一つ以上のマスクモジュールを介して前記第1の結果をフィルタ処理して第2の結果を生成し、
前記第1および第2の結果をレジスタのグループを備える一つ以上のFIFO記憶位置を備えるバッファ中に記憶する、
ことを備えることを特徴とする方法。
【請求項14】
請求項13に記載の方法であって、前記一つ以上のマスクモジュールを介して前記第1の結果をフィルタ処理することは、前記第1の結果を前記一つ以上のマスクモジュールのマスクレジスタに記憶された値とアンド演算して前記第2の結果を生成することを備えることを特徴とする方法。
【請求項15】
請求項13に記載の方法であって、前記一つ以上のパターンマッチングマトリクスを介して前記データストリームを検索することは、閾値論理マトリクス、論理積マトリクス、論理和マトリクス、および初期化ルーティングマトリクスのうちの一つ以上を介して前記データストリームを検索することを含むことを特徴とする方法。
【請求項16】
請求項13に記載の方法であって、前記一つ以上のマスクモジュールを介して前記第1の結果をフィルタ処理することは、閾値出力マスク、積出力マスク、和出力マスク98、および初期化出力マスクのうちの一つ以上を介して前記第1の結果をフィルタ処理することを含むことを特徴とする方法。
【請求項17】
請求項13に記載の方法であって、前記レジスタのグループ中の各レジスタは同時に書き込まれてよいことを特徴とする方法。
【請求項18】
請求項13に記載の方法であって、ステータスビットがアクティブ化されたことを決定するとき一つ以上のFIFO記憶位置の少なくとも一つにアクセスすることを備え、前記ステータスビットはパターンマッチデータが前記レジスタのグループに記憶されたときにアクティブ化されることを特徴とする方法。
【請求項19】
請求項13に記載の方法であって、割込み信号を受信するとき一つ以上のFIFO記憶位置の少なくとも一つにアクセスすることを備え、前記割込み信号はパターンマッチデータが前記レジスタのグループに記憶されたことを示すことを特徴とする方法。
【請求項20】
複数のレジスタを備え、前記複数のレジスタはデータのストリーム中の一つ以上の値に対する検索を介してマッチングマトリクスによって生成される結果データと、前記結果データをフィルタ処理することを介してマスクモジュールによって生成されるマスク結果データを記憶するように適合させられることを特徴とするシステム。
【請求項21】
請求項20に記載のシステムであって、前記複数のレジスタは、ファースト−インァースト−アウト順で、レジスタバンクにグループ化されるシステム。
【請求項22】
請求項21に記載の方法であって、ステータスビットがアクティブ化されているか否かを決定するとき少なくとも一つの前記レジスタバンクにアクセスするように適合させられるプロセッサを備え、前記ステータスビットは結果データに対応し少なくとも一つのレジスタバンク中の前記複数のレジスタに書き込まれることを特徴とする方法。
【請求項23】
請求項21に記載の方法であって、割込み信号を受信し前記割込み信号を受信するとき少なくとも一つの前記レジスタバンクにアクセスするように適合させられるプロセッサを備え、前記割込み信号は結果データに対応し少なくとも一つのレジスタバンク中の前記複数のレジスタに書き込まれることを特徴とする方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公表番号】特表2012−515378(P2012−515378A)
【公表日】平成24年7月5日(2012.7.5)
【国際特許分類】
【出願番号】特願2011−545360(P2011−545360)
【出願日】平成21年12月16日(2009.12.16)
【国際出願番号】PCT/US2009/068280
【国際公開番号】WO2010/080445
【国際公開日】平成22年7月15日(2010.7.15)
【出願人】(595168543)マイクロン テクノロジー, インク. (444)
【Fターム(参考)】
【公表日】平成24年7月5日(2012.7.5)
【国際特許分類】
【出願日】平成21年12月16日(2009.12.16)
【国際出願番号】PCT/US2009/068280
【国際公開番号】WO2010/080445
【国際公開日】平成22年7月15日(2010.7.15)
【出願人】(595168543)マイクロン テクノロジー, インク. (444)
【Fターム(参考)】
[ Back to top ]