(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0005】
図1は、データストリーム12を検索するシステム10の一実施例を示す。システム10は、検索基準(search criteria)16に従ってデータストリーム12を検索するパターン認識プロセッサ14を含んでもよい。
【0006】
各検索基準は、1つ以上の対象表現、すなわちパターンを特定してもよい。“対象表現”という用語は、パターン認識プロセッサ14が検索するデータ配列(シーケンス)のことを称する。対象表現の例は、ある単語を綴る文字配列、遺伝子を特定する遺伝子塩基対配列、画像の一部を形成する画像ファイルもしくはビデオファイルにおけるビット配列、プログラムの一部を形成する実行可能ファイルにおけるビット配列、または、歌もしくは話された言葉の一部を形成するオーディオファイルにおけるビット配列を含む。
【0007】
検索基準は、1つを超える対象表現を特定してもよい。例えば、検索基準は、文字列“cl”で始まる全5文字の単語、文字列“cl”で始まるあらゆる単語、3回を超えて“cloud”という単語を含む段落などを特定してもよい。対象表現のうちで考えられる組の数は、任意に大きく、例えば、データストリームが存在することが可能であるデータの順列が存在するのと同一数の対象表現が存在する可能性がある。検索基準は、種々のフォーマットで表現されてもよく、そのフォーマットは、正規表現として、各対象表現を必ずしも記載することなく、対象表現の組を簡潔に特定するプログラミング言語を含む。
【0008】
各検索基準は、1つ以上の検索タームから構成されてもよい。したがって、検索基準の各対象表現は1つ以上の検索タームを含み、幾つかの対象表現は、共通の検索タームを使用してもよい。本明細書で使用されるように、“検索ターム”という用語は、単一の検索周期の間に検索されるデータの配列のことを称する。データの配列は、バイナリフォーマットもしくは、例えば、10進法、ASCIIなどの他のフォーマットの複数ビットのデータを含んでもよい。配列は、単一のディジットもしくは複数のディジット(例えば幾つかのバイナリディジット)でデータをエンコードしてもよい。例えば、パターン認識プロセッサ14は、一度に一文字をテキストデータストリーム12から検索し、検索タームは、例えば、文字“a”、文字“a”か“e”のいずれか、または、全ての単一文字の組を特定するワイルドカード検索タームなど、単一文字の組を特定してもよい。
【0009】
検索タームは、文字(もしくは、データストリームによって表現される情報の他の書記素、すなわち基本単位、例えば、音符、遺伝子塩基対、10進法のディジット、サブピクセル)を特定するビット数よりも小さいか、または大きくてもよい。例えば、検索タームは8ビットであり、単一文字は16ビットであり、この場合には、2つの連続した検索タームは単一文字を特定してもよい。
【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毎秒(Mbps)もしくは128MB毎秒(Mbps)より大きいかほぼ同一のデータストリーム12)に対して検索基準を適用してもよい。幾つかの実施形態においては、検索周期の継続期間は、検索基準の数によっては変化しないため、検索基準の数は、パターン認識プロセッサ14の性能に殆ど影響を与えることはない。
【0014】
検索基準が満足されるとき(すなわち、最後の検索タームに進行してそれが一致した後)、パターン認識プロセッサ14は、中央処理装置(CPU)20などの処理装置に対して基準を満足したことを報告してもよい。中央処理装置20は、パターン認識プロセッサ14およびシステム10の他の部分を制御してもよい。
【0015】
システム10は、データのストリームを検索する種々のシステムもしくはデバイスのうちのいずれであってもよい。例えば、システム10は、データストリーム12を検索するデスクトップ、ラップトップ、ハンドヘルドもしくは他のタイプのコンピュータであってもよい。システム10は、ルータ、サーバ、もしくはクライアント(例えば、前述されたタイプのコンピュータのうちの1つ)などのネットワークノードであってもよい。システム10は、コピー機、スキャナ、プリンタ、ゲーム機、テレビ、セットトップビデオ分配録画システム、ケーブルテレビ用チューナ、パーソナルデジタルメディアプレイヤー、工場自動化システム、自動車用コンピュータシステムもしくは医療デバイスなどの他の種類の何らかの電子装置であってもよい。(これらの種々のシステムの実施例を記述するために使用される用語は、本明細書で使用される他の多くの用語と同様に、幾つかの指示対象を共有し、それ自体は、列挙された他の項目によって、狭く解釈されるべきではない。)
【0016】
データストリーム12は、ユーザもしくは他の存在が検索を望む可能性のある種々のタイプのデータストリームのうちの、1つ以上のデータストリームであってもよい。例えば、データストリーム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および集約モジュール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の出力は、論理的な積和(例えば、ブール論理での積和(SOP)形)であってもよい。論理和マトリクス48の出力は、初期化ルーティングマトリクス50によって受信されてもよい。
【0031】
初期化ルーティングマトリクス50は、集約ルーティングマトリクス42を介して、検出アレイ34および集約モジュール24の一部をリセットしてもよい。初期化ルーティングマトリクス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の中の導体の1つの両方へと結合されてもよい。入力導体37が選択されるのに応じて、各メモリセル58は、格納された値を示す値を出力し、出力導体56を介してデータを出力する。幾つかの実施形態においては、複数の入力導体37は“ワード線”と称され、出力導体56は“データ線”と称されてもよい。
【0034】
メモリセル58は、種々のタイプのメモリセルのうちのいずれを含んでもよい。例えば、メモリセル58は、トランジスタとキャパシタを有するダイナミックランダムアクセスメモリ(DRAM)セルなどの揮発性メモリであってもよい。トランジスタのソースおよびドレインは、其々、キャパシタの極板および出力導体56へと接続され、トランジスタのゲートは、入力導体37のうちの1つへと接続されてもよい。揮発性メモリの別の実施例においては、各メモリセル58は、スタティックランダムアクセスメモリ(SRAM)セルを含んでもよい。SRAMセルは、入力導体37の1つによって制御されるアクセストランジスタによって、出力導体56へと選択的に結合された出力を有してもよい。メモリセル58は、相変化メモリ(例えば、オボニックデバイス)、フラッシュメモリ、シリコン・酸化物・窒化物・酸化物・シリコン(SONOS)メモリ、磁気抵抗メモリもしくは他のタイプの不揮発性メモリなどの不揮発性メモリをも含んでもよい。メモリセル58は、フリップフロップ、例えば、論理ゲートによって形成されたメモリセルをも含んでもよい。
【0035】
図4および
図5は、検索タームセル54の動作の一実施例を示す。
図4は、セルの検索タームに一致しないタームを受信する検索タームセル54を示し、
図5は、セルの検索タームに一致するタームを受信する検索タームセル54を示す。
【0036】
図4によって示されるように、検索タームセル54は、メモリセル58にデータを格納することによって、1つ以上のタームを検索するように構成されてもよい。メモリセル58は、データストリーム12が提示する可能性のあるタームを各々表し、例えば
図3においては、各メモリセル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によって特定されたタームのうちの1つではないため、検索タームとは一致せず、検索タームセル54は0値を出力し、それは一致が見つからなかったことを示している。
【0039】
図5においては、データストリーム12は、文字“b”を示す。この場合も同様に、行デコーダ28は、このタームをアドレスとして解釈し、行デコーダ28が、導体62を選択することとしてもよい。これに応じて、文字“b”を表すメモリセル58は、格納された値を出力し、この場合には、それは1であり、一致を示している。
【0040】
検索タームセル54は、一度に1つを超えるタームを検索するように構成されてもよい。複数のメモリセル58は、1を格納するようにプログラムされ、1つを超えるタームと一致する検索タームを特定する。例えば、小文字“a”および大文字“A”を表すメモリセル58は、1を格納するようにプログラムされ、検索タームセル54は、いずれかのタームを検索してもよい。別の実施例においては、検索タームセル54は、いかなる文字が受信された場合にも一致を出力するように構成されてもよい。全メモリセル58は、1を格納するようにプログラムされてもよく、検索タームセル54は、検索基準におけるワイルドカードタームとして機能してもよい。
【0041】
図6〜
図8は、例えば一単語など複数ターム検索基準に従って検索する認識モジュール22を示す。具体的には、
図6は、1単語の最初の文字を検出する認識モジュール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は、上述された各種メモリセル(例えば、フリップフロップ)のうちの1つ等のメモリセル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は非アクティブ化されてもよい。例えば、検出周期の間そのメモリセル70をリセットすることでその検出セル68がフィーチャセル64を非アクティブ化してもよいし、または、アクティブ化ルーティングマトリクス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”という単語が二度現れる全ての文を特定してもよいし、認識モジュールは、1文内に出現する“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は、“自己アクティブ化”されてもよく、それは、一度アクティブ化されればその検索タームが一致している限り、フィーチャセルが自身をアクティブ化することを意味する。例えば、いかなる数のディジットにでも一致した検索タームを有する自己アクティブ化されたフィーチャセルは、文字“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のうちの1つで終了する単語を検索するように構成されてもよい。図示されている検索基準は、文字“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の双方へとアクティブ化信号を伝送してもよい。他の実施例においては、より多くの接尾辞がアクティブ化されてもよく、または、複数の接頭辞が1つ以上の接尾辞をアクティブ化してもよい。
【0060】
続いて、
図12に示されるように、データストリーム12は、認識モジュール22に対して文字“o”を与える。第二の接尾辞92のフィーチャセル82は、一致を検出し、アクティブである。これに応じて、アクティブ化ルーティングマトリクス36は、第二の接尾辞92の次のフィーチャセル84をアクティブ化してもよい。フィーチャセル66が非アクティブになることが許可されると、第一の接尾辞90の検索は終了してもよい。
図10〜
図12に示されたステップは、文字“u”および“d”を通じて継続してもよいし、または、接頭辞88が一致する次の機会まで、検索は終了してもよい。
【0061】
パターン認識プロセッサ14の実施形態は、フィーチャセル30の(ステートマシンの要素(SME’s)とも呼ばれる)任意の配列を含んでもよい。一実施形態では、
図13に示すように、フィーチャセル30は行94に配列されてもよく、各行94は1つ以上のフィーチャセル30を含んでもよい。行94はブロック96にグループ化されてもよく、各ブロック96は1つ以上の行94を含む。パターン認識プロセッサ14は、上記のパターン検索を実装するための任意の数のブロック96を含んでもよい。
【0062】
上記のように、フィーチャセル30のグループは、1つの検索基準または複数の検索基準を特定する並列有限ステートマシンを形成してもよい。従って、各行94及びブロック96は、1つ以上の検索基準に従ってデータストリームを検索するために、プログラムされ、かつ用いられてもよい。データストリーム12が検索基準に対して検索されるように、上記のパターン検索は、1つ以上のブロック96を介して連続的に進行してもよい。各アクティブなブロック96におけるデータストリームのタームの評価は、検索周期中に実行されてもよい。検索周期は、パターン検索周期と呼ばれる(文字周期とも呼ばれる)パターン認識プロセッサ14のより広い周期の一部であってもよい。各パターン検索周期は、パターン認識プロセッサ14の複数の内部クロック周期を含んでもよい。パターン検索周期は、例えば、以下のイベントを1つ以上含んでもよい:すなわち、データストリーム12から1バイトを入力すること、そのバイトを復号化して対応する入力導体37を駆動すること、プロセッサ14のメモリ(例えば、メモリセル58)を読み出すこと、フィーチャセル30がアクティブかどうか及びデータ読み出しがそれぞれのフィーチャセルに対して一致を示すかどうかを判断すること、一致するフィーチャセルのアクティブ化ルーティングマトリクス36への出力を駆動すること、及び/または、アクティブ化ルーティングマトリクス36から各フィーチャセル30に信号を伝播すること、を含んでもよい。パターン検索周期は、パターン認識プロセッサ14の動作中に実行される他のイベントを更に含んでもよい。
【0063】
パターン検索周期中においては、ブロック96は、パターン検索周期のいくつかのイベントを含むメモリアクセス周期中にアクセスされてもよい。例えば、メモリアクセス周期は、(フィーチャセル30に“一致”を示すことを提供するため)プロセッサ14のメモリを読み出すこと、プログラミングをテストする目的あるいはプロセッサ14のメモリを検査する目的のためのメモリ読み出しまたは書き込み、及び/または、メモリリフレッシュ周期を含んでもよい。メモリリフレッシュ周期は、ブロックのフィーチャセル30をリフレッシュしてもよい。一実施形態では、パターン認識プロセッサ14のメモリアクセス周期は、パターン検索周期の他のイベントをインターリーブしてもよい。
【0064】
このような実施形態では、パターン認識プロセッサ14は、パターン検索を実行しているとき、所定のパターン検索周期中にフィーチャセルの“アクティブ”ブロックにアクセスしてもよい。“アクティブ”ブロックとは、所定のパターン検索周期中にそのブロックにプログラムされた検索タームに応じて、データストリームを現在検索しているか、またはこれから検索するブロックを指す。そして、“非アクティブ”ブロックとは、所定のパターン検索周期中にデータストリームを現在検索していないか、またはこれから検索することのないブロックを指す。
【0065】
動作中に、パターン認識プロセッサ14は、各メモリアクセス周期中にアクティブブロックのフィーチャセル30またはフィーチャセル30のグループにアクセスする。一実施形態では、各メモリアクセス周期中に“非アクティブ”ブロックにアクセスすることによって生じる消費電力を低減するために、各ブロック96は、電源制御回路98に結合されてもよい。電源制御回路98は、各ブロック96のロジック(または各ブロック96とは別のロジック)の一部であってもよい。電源制御回路98は、パターン検索の前、後、または途中において、各ブロック96のアクティブ化(ブロックを“アクティブ”にセットすること)または非アクティブ化(ブロックを“非アクティブ”にセットすること)を制御してもよい。電源制御回路98は、ブロック96のそれぞれの“恒久的な”非アクティブ化を更に制御してもよく、恒久的な非アクティブ化とは、ブロックは非アクティブであるとともにリフレッシュ周期中にリフレッシュされないように、ブロック96を完全に無効(使用不可)にすることを指す。
【0066】
いくつかの実施形態では、電源制御回路98は、以下の機能を含んでもよい:すなわち、検索対象のデータストリームのアイデンティティ(ID)に基づいてブロックをアクティブ化または(恒久的にまたは一時的に)非アクティブ化する機能;パターン検索がそのブロックに進行する前(例えば、パターン検索が後続のパターン検索周期上でそのブロックにアクセスするとき)にブロックを自動的にアクティブ化する機能;パターン検索がそのブロック内でもはやアクティブでないとき(例えば、ブロックがいずれの後続のパターン検索周期上でも用いられないとき)にブロックを自動的に非アクティブ化する機能;及び、そのブロックがパターン認識プロセッサ14にプログラムされたいずれの有限ステートマシンにおいても用いられない場合にブロックを完全に無効にする機能を含んでもよい。
【0067】
図14A及び
図14Bは、本発明の実施形態に係る、電源制御回路98A〜98Dの電源制御機能を用いるパターン認識プロセッサ14のブロック96A〜96Dの動作を示す。再度
図14A及び
図14Bに図示しているように、各ブロック96A〜96Dは、ブロックを選択的にアクティブ化または非アクティブ化(一時的にまたは恒久的に)し得るそれぞれの電源制御回路98A〜98Dに結合されている。
図14Aに図示するように、パターン検索中に、各ブロック96は、異なる状態を有していてもよい。第一のブロック96Aは、このブロックがパターン認識プロセッサ14の動作中に用いられないかまたはリフレッシュさえされないように、無効にされてもよい。例えば、製造歩留まりの“節約”から、または、現在の検索基準によって使用されないブロックからのうち、いずれか一方から“余分な”ブロックはいずれも、プロセッサ14のステートマシンとしてプログラムされなくてもよい。その結果、例えばブロック96A等のようなブロックは、対応する電源制御回路98Aによって無効にされてもよい。無効にされた後、ブロック96Aは、無効であるとともに、メモリアクセス周期のリフレッシュ中にリフレッシュされない。
【0068】
前述のように、電源制御回路98は、検索対象のデータストリーム(例えば、HTTP、FTP、SMTP、DNS等)のアイデンティティに基づいてブロックをアクティブ化または非アクティブ化する機能を更に含んでもよい。
図14Aに図示するパターン検索中に、第二のブロック96Bは、検索対象のデータストリームのアイデンティティに基づいて非アクティブ化されてもよい。この実施例では、各ブロックのプログラムされたステートマシンは、特定の種類のプロトコル、言語、または他のデータ識別子のパターン検索のためにプログラムされてもよい。このようにして識別されるデータは、これらに限定されるものではないが、データ転送プロトコル(例えば、HTTP、FTP、SMTP、DNS等)自然言語、遺伝的識別子等を含んでもよい。例えば、インターネットセキュリティを対象とする一実施形態では、ブロック96Bのステートマシンは、FTPデータのパターンを検索するためにプログラムされてもよい。ステートマシン96C及び96Dは、HTTPデータのパターンを検索するためにプログラムされてもよい。一旦着信パケットプロトコルが(例えばパケットヘッダに基づいて)識別されると、HTTPデータを検索するためにプログラムされたそれらのステートマシンのみが用いられてもよい。こうして、ブロック96Bは、HTTPパケットが電源制御回路98Bによって処理されている時間中は、非アクティブ化されてもよい。ブロック96Bは、パターン検索周期に用いられないように、非アクティブ化されてもよい。しかしながら、ブロック96Bは、恒久的に無効化されるものではなく、データストリームがFTPデータとして識別されるとき等にはなお、リフレッシュして他のパターン検索の使用に利用可能である。データストリームの種類が変化する場合には、ブロック96Bは、対応する電源制御回路98Bによってアクティブ化されてもよい。更に以下に記載するように、ブロックは、データストリーム12のアイデンティティに基づいて異なる“パーティション”にグループ化されてもよい。パーティションとは、特定の種類のデータを検索するためにプログラムされたブロックのグループを指す。例えば、ブロック96Bは、他のブロックとともに、FTPデータを検索するためのパーティションにグループ化されてもよい。同様に、ブロック96C及び96Dは、他のブロックとともに、HTTPデータを検索するパーティションにグループ化されてもよい。パーティショングループ化は、ブロックのグループをデータストリーム12に基づいてアクティブ化または非アクティブ化することを可能にする。
【0069】
更に、上記の電源制御回路は、パターン検索がそのブロックに進行する前にブロックを非アクティブ化したり、パターン検索がもはやそのブロックにおいてはアクティブでないときにブロックを非アクティブ化したりしてもよい。
図14A及び
図14Bのブロック96C及び96Dは、ブロック96Cからブロック96Dへと進むパターン検索に基づくアクティブ化及び非アクティブ化を示す。
図14Aは、第一のパターン検索周期中等のブロック96Cにおいて進行中のパターン検索を示す。パターン検索では、ブロック96Cのステートマシン(フィーチャセル30のグループ)にプログラムされた検索基準に従ってデータストリームのタームが評価されてもよい。ブロック96Cは、パターン検索の間は目下使用中であるため、“アクティブ”である。
図14Aに図示するように、ブロック96Dは、メモリアクセス周期中にはアクセスされないよう非アクティブ化して、プロセッサ14の消費電力を低減させてもよい。“始動”ターム(例えば、パターンの開始等)がブロック96Dにプログラムされない場合、パターン検索シーケンスがブロック96Dに進行するまで、ブロック96Dは非アクティブ化されてもよい。
【0070】
図14Bは、パターン検索がブロック96Cからブロック96Dへと進むときの、パターン認識プロセッサ14の後続のパターン検索周期を示す。パターン検索は、データストリームがパターンに対して検索されるように、ブロック96Cからブロック96Dへと“クロスオーバー”してもよい。“クロスオーバー”とは、パターン検索が順次進行している間に、第一のブロックから第二のブロックへと進行することを指す。パターン検索は、もはやブロック96Cではアクティブではなく、現在は、ブロック96Dでアクティブである。ブロック96Cが非アクティブとして検出されると、別のパターン検索がブロック96Cに進行するまで、電力制御回路96Cは、ブロック96Cを非アクティブ化してもよい。電力制御回路96Dは、パターン検索がブロック96Dに進行する前にブロック96Dをアクティブ化してもよい。このように、ブロック96Dは、予測的な“必要に応じた”基準に基づいてアクティブ化される。以下に更に記載されるように、電源制御回路98D及び/またはブロック96Dは、パターン検索がブロック96Dに到達して次のパターン検索周期前にブロック96Dをアクティブ化しそうなときを検出してもよい。このように、パターン検索シーケンスは、フィーチャセルの各ブロックを介して継続するにつれて、それらが必要とされるよう、非アクティブなブロックを非アクティブ化し、これから予定されるブロックをアクティブ化してもよい。
【0071】
更に、他の実施形態は、パターン検索がそのブロックを介して進行する前、途中、または後に、ブロックのアクティブ化または非アクティブ化に影響を与える特別な検索基準を含んでもよい。このような特別な検索基準は、アスタリスク(*)、疑問符(?)、及び/または、プラス記号(+)等の正規表現(RegEx)演算子を含んでもよい。例えば、データストリームのタームの終わりまで全てのどんなものとでも一致することを指定するアスタリスク(“*”)演算子は、一度アクティブ化されたブロックがデータストリームのタームの終わりまで常にアクティブであることを指定するアクティブ化コマンドによって実装されてもよい。任意の特別な検索基準は、それらの特別な検索基準に好適なアクティブ化または非アクティブ化スキームを指定することによって上述の電源制御技術に実装されてもよい。
【0072】
パターン認識プロセッサ14の各ブロックは、上記の電源制御技術を提供するために、信号及び/またはコンフィギュレーション・ビットを含んでもよい。例えば、電源制御回路に加えて、各ブロックは、行が“アクティブ”なフィーチャセルを含むことを示す信号、及び/または、ブロックがパターン検索シーケンスにおいて次のフィーチャセルを含むことを示す信号を生成するロジックを含んでもよい。更に、ブロックは、様々な制御及びコンフィギュレーション信号を送信または受信するように構成されたロジックを含んでもよい。これらの制御及びコンフィギュレーション信号は、以下を含んでもよい:すなわち、ブロックが現在のデータストリームに使用されていることを示すこと(ブロックのアクティブ/非アクティブ);始動タームを示すこと;上述の特別な検索基準用等の一時アクティブ化/常時アクティブ化信号;リフレッシュ信号;及び、ブロック・フロー・イネーブル信号を含んでもよい。
【0073】
上記の選択的アクティブ化及び非アクティブ化スキームは、特定のブロックが無効かどうかを示してもよく(例えば、ブロックがいつか使用される場合)、ブロックが現在使用されるべきグループの一部かどうかを示してもよく、ブロックがパターンの“開始”のフィーチャセルを含むかどうかを示してもよく、パターン検索シーケンス中に必要なブロックをアクティブ化してもよい。いくつかの実施形態では、ブロックのウェイクアップスキームを実装するために、ブロック96は、ブロックのステータスを示すためのコンフィギュレーション・ビットまたは他のデータ・インディケータを含んでもよい。これらのビットは、ここで説明した様々な制御信号によって変更されてもよい。例えば、ブロック96は、そのブロックが無効であるか否かを示す1以上のコンフィギュレーション・ビットを含んでもよい。前述したように、いくつかの実施形態では、各パーティションが特定の種類のデータストリームのために使用されるべきブロックを含むように、ブロック96をパーティションにグループ化してもよい。このような実施形態では、各ブロックは、それぞれのブロックが属するパーティションを示すための1以上のコンフィギュレーション・ビットを含んでもよい。更に、各ブロック96は、パターンの“開始”(例えば、始まり)を含むフィーチャセル30をブロックが含むか否かを示す1以上のコンフィギュレーション・ビットを含んでもよい。このようなブロックは、そのパーティションを用いる所定のパターン検索シーケンス中、常にアクティブであってもよい。更に、このような実施形態では、パーティション内の全ての他のブロックは、上記のように選択的にアクティブ化及び非アクティブ化されてもよい。
【0074】
図15は、本発明の実施形態に係る、電源制御回路98の論理回路図を示す。電源制御回路98は、ブロックがアクティブであるべきとき、一度アクティブ化されたブロックが一時的に非アクティブ化されるべきとき、及び、ブロックが恒久的に非アクティブ化(すなわち、リフレッシュ周期要求に応答しないように無効に)されるべきときを決定してもよい。
【0075】
電源制御回路98は、“ブロック・スティル・アクティブ・センス(Block Still Active Sense)”コンポーネント100、ANDゲート102、ORゲート104、再トリガ可能非アクティブ化タイマー106、及び、“ブロック_アクティブ(Block_Active)”信号を出力するORゲート108を含んでもよい。電源制御回路98は、ブロック・ウェイクアップ・スキーム110から“ブロック_アクティブ化(Block_Activate)”信号を受信してもよい。ブロック・ウェイクアップ・スキームは、例えば、特定のブロックが無効かどうかを示してもよく(例えば、ブロックが使用される都度)、ブロックが現在使用されるべきグループの一部かどうかを示してもよく、ブロックがパターンの“開始”のフィーチャセルを含むかどうかを示してもよく、パターン検索シーケンス中に必要に応じてブロックをアクティブ化してもよい。ブロック・スティル・アクティブ・センス・コンポーネント100は、ブロックが依然アクティブかどうかを示すブロックからの信号を、(このような検出によって提供される分析に応じて)受信及びまたは検出してもよい。例えば、ブロック・スティル・アクティブ・センス・コンポーネントは、アクティブなフィーチャセル30、行94、またはブロック96の他のアクティビティを受信または検出し、例えば、ブロックの行が依然アクティブであることを示す行_アクティブ(Row_Active)信号等を出力してもよい。
【0076】
一実施形態では、電力制御回路は、電源制御回路は、以下の表1に記載されるように、5つの信号によって制御され、構成されてもよい。
【表1】
【0077】
ブロック_オン/オフ(Block_On/Off)信号、開始_SME(Start_SME)信号、及び不定_SME(Indefinite_SME)信号の状態は、パターン認識プロセッサ14を動作するソフトウェアコンパイラを介して決定されてもよく、パターン認識プロセッサ14の他のロジックコンポーネントを介して生成されてもよい。例えば、ブロック_オン/オフ信号、開始_SME信号、及び不定_SME信号は、プログラミング及び制御ロジック112から生成されてもよい。ソフトウェアコンパイラは、パターン認識プロセッサにプログラムされた異なる有限ステートマシンの配置及びルーティングに基づいて電源設定を指定してもよい。これらの信号は、プロセッサ14にプログラムされた検索基準の一部として設定されてもよく、動作中に変更されなくてもよい。
【0078】
ブロック_オン/オフは、上記のように、パターン検索の進行中にブロックをアクティブ化または非アクティブ化するために用いられてもよい。フロー_イネーブル(Flow_Enable)信号もまた、コンパイラによって決定されてもよく、データを処理する有限ステートマシンに応じて、プロセッサ14の動作中に変更されてもよい。ソフトウェアコンパイラは、どの有限ステートマシンが必要とされるか(そして、従って、どのブロックが必要とされるか)を決定してもよく、かつ、フロー_イネーブル信号がデータストリームのためのブロックをアクティブ化または非アクティブ化するように設定してもよい。フロー_イネーブル信号は、データストリームの識別子を解釈でき、適切なフロー_イネーブル信号を提供することができるフロー管理ロジック114から生成されてもよい。例えば、上述のように、有限ステートマシンのいくつかのブロックは、その目的のためにプログラムされていない他のブロックが非アクティブ化され得るように、特定のプロトコルまたは言語で使用するためにプログラムされてもよい。
【0079】
リフレッシュ_周期(Refresh_Cycle)信号は、パターン認識プロセッサ14の動作中にフィーチャセル30をリフレッシュするリフレッシュ管理ロジック116によって生成されてもよい。リフレッシュ_周期信号のアサーションは、パターン検索またはパターン認識プロセッサ14の他の動作とは独立して設定されてもよい。上述の
図14A及び
図14Bで説明したブロック96A等のように、ブロックがパターン認識プロセッサ14の動作中に決して使用されることがない場合、リフレッシュ_周期信号はそのブロックに対して無効にされてもよく、このようにして、メモリアクセス周期中にそのブロックの任意のリフレッシュ周期を無効にするとともに、そのリフレッシュ動作のための消費電力を排除することができる。
【0080】
リフレッシュ_周期、ブロック_オン/オフ信号、開始_SME信号、及び、フロー_イネーブル信号は、ANDゲート102または他のロジックコンポーネントを通過されてもよい。例えば、リフレッシュ_周期信号及びブロック_オン/オフ信号は、リフレッシュ_アクセス(Refresh_Access)信号をORゲート108に出力する第一のANDゲート102Aに提供されてもよく、リフレッシュ_アクセス信号は、ブロックがリフレッシュされることを示す。ブロック_オン/オフ信号及び開始_SME信号は、 “強制_ブロック_イネーブル(Force_Block_Enable)”信号をORゲート108に出力する第二のANDゲート102Bに提供されてもよく、強制_ブロック_イネーブル信号は、ブロックが、始動検索タームを含み、アクティブであるべきことを示す。ブロック_アクティブ化信号及びフロー_イネーブル信号は、条件付_ブロック_イネーブル_開始(Conditional_Block Enable_Start)信号を再トリガ可能非アクティブ化タイマー106に出力する第三のANDゲート102Bに提供されてもよい。
【0081】
更に、ウェイクアップスキーム110からのブロック_アクティブ化信号、プログラミング及び制御ロジック114からの不定_SME信号、及び、ブロック・スティル・アクティブ・センス・コンポーネント112からの行_アクティブ信号は、アクティビティ_再トリガ(Activity_Re−Trigger)信号を再トリガ可能非アクティブ化タイマー106に出力する第二のORゲート104に提供されてもよい。
【0082】
再トリガ可能非アクティブ化タイマー106は、電源制御回路98が、ブロックを非アクティブ化する前にパターン認識プロセッサ14のアーキテクチャで遅延時間を考慮することができるようにする。再トリガ可能非アクティブ化タイマー106は、条件付_ブロック_イネーブル_開始信号及びアクティビティ_再トリガ信号を受信してもよく、かつ、それらの信号に基づいて遅延を提供してもよい。再トリガ可能非アクティブ化タイマー106は、時間_ブロック_イネーブル(Time_Block_Enable)信号をORゲート108に出力してもよい。
【0083】
再トリガ可能非アクティブ化タイマー106は、指定した持続時間中、ブロックが非アクティブ化しないようにしてもよい。持続時間は、時間または周期の単位で決定されてもよい。
パターン認識プロセッサ14の任意の所定のアーキテクチャに対し、ブロックのフィーチャセルのアクティブ/非アクティブ状態の検出は、そのアーキテクチャによって提供される周期分解に制限されてもよい。例えば、4つのパターン検索周期の分解でブロックのアクティブなフィーチャセルを検出する機能を有する実施形態では、最後の“アクティブ”状態が検出されてから、4つのパターン検索周期が生じた後にのみ、再トリガ可能非アクティブ化タイマー106がそのブロックの非アクティブ化を許可してもよい。
【0084】
ブロックがパターン検索中にアクセスされるたびに、再トリガ可能非アクティブ化タイマー106は、ブロックのパターン検索の完了を許可するようにリセットされてもよい。上述の実施例では、ブロックが再びアクティブになった後、ブロックが非アクティブ化され得る前に4つのパターン検索周期の別な遅延が提供されるように、再トリガ可能非アクティブ化タイマー106がリセットされてもよい。いくつかの実施形態では、再トリガ可能非アクティブ化タイマー106はまた、ブロックがアクティブのままであるべきかどうか決定するために用いられる信号の生成を引き起こす遅延を考慮するように構成されてもよい。例えば、再トリガ可能非アクティブ化タイマー106が補償するために遅延を追加するように構成され得るように、行_アクティブ信号は、生成及び伝播することが比較的遅くなってもよい。この方法では、ブロックのステータスの検出の任意の分解は、所期の時間遅延及びリセットを再トリガ可能非アクティブ化タイマー106に導入することによって考慮されてもよい。
【0085】
更に、再トリガ可能非アクティブ化タイマー106は、パターン認識プロセッサ14の動作を害する虞があるブロックの早まった非アクティブ化を可能にすることとは反対に、パターン検索中に必要とされるときにブロックがアクティブであることを保証するように構成されてもよいことが理解されるべきである。対照的に、ブロックのアクティブ化時間は、ブロックが次のパターン検索周期の時間にアクティブであることを保証するのに十分であってもよい。一実施形態では、パターン認識プロセッサ14は、上記の
図14Bで説明したように、パターン検索を第一のブロックからフィーチャセルの別なブロックにクロスオーバーさせることができる信号を含んでもよい。
【0086】
受信した信号に基づいて、再トリガ可能非アクティブ化タイマー106は、タイマー_ブロック_イネーブル(Timer_Block_Enable)信号をORゲート108に出力する。このように、
図15に示すように、再トリガ可能非アクティブ化タイマー106は、フロー管理ロジック、ウェイクアップロジック、プログラミング及びコンフィギュレーション・ロジック、及びブロック・スティル・アクティブ・センス・コンポーネントから受信した信号に基づいてトリガまたは“再トリガ”してもよい。
【0087】
電源制御回路の出力は、リフレッシュ_アクセス信号、強制_ブロック_イネーブル_BX(Force_Block_Enable_BX)信号、またはタイマー_ブロック_イネーブル信号に基づいて信号をアクティブ化または非アクティブ化するブロック_アクティブ信号である。このように、様々な制御信号に基づいて、ブロック_アクティブ信号は、ブロックがリフレッシュされるべきか、データストリームに有効であるか、データストリームにアクティブかまたは非アクティブか、“一度アクティブ化され、常にアクティブ”な検索基準の一部であるか等に基づいて、ブロックをアクティブ化または非アクティブ化してもよい。
【0088】
上述のように、電源制御回路98によって制御されるブロックは、パターン検索シーケンスがフィーチャセルの(クロスオーバーしている)そのブロックに進行するにしたがって、次のパターン検索の時間にアクティブ化されるべきである。“非パイプライン化アーキテクチャ”を有するいくつかの実施形態では、ブロックのアクティブ化は、パターン検索が次のブロックにクロスオーバーするときを示す同じクロスオーバー信号に依存してもよい。しかしながら、パターン認識プロセッサ14の“パイプライン化”アーキテクチャ等の他の実施形態では、パターン検索周囲のイベントは、メモリアクセス周期によりインターリーブされる。このような実施形態では、ブロックの現在のパターン検索の完了前に、次のメモリアクセス周期が開始する。これらの実施形態では、パターン検索シーケンスの次のブロックが次のパターン検索及びそのブロックのクロスオーバーの時間に確実にアクティブ化されているように、
予測アクティブ化スキームを用いてもよい。
【0089】
図16は、本発明の実施形態に係る、パターン認識プロセッサ14の予測アクティブ化スキームを示す図である。
予測アクティブ化スキームは、現在のブロックのパターン検索が特定の状態に進行するときはいつでもパターン検索シーケンスの次のブロックに送信される“早期アクティブ”信号を生成してもよい。
【0090】
図16は、第一のブロック118A及び第二のブロック118B間のパターン検索を示す。図
16に示すように、第一のブロック118Aは、検索基準に応じてデータストリームを検索するように構成されるブロック118Aのプログラムされたステートマシン(フィーチャセルのグループ)を含んでもよい。第一のパターン検索周期中、例えば、ブロック118Aはアクティブであってもよく、ブロック118Bは非アクティブでもよい。パターン検索がブロック118Aを通じて進行するにつれ、ブロックの状態は、異なる検索タームまたは基準(例えば、文字)がブロック118Aで一致するように、状態Aから、状態Bに、及び状態Cに変化してもよい。(状態Cによって示されるように)ブロック118Aの処理が完了すると、パターン検索が次のパターン検索周期のためにブロック118Bまでクロスオーバーすることを示すために、“クロスオーバー”信号が信号生成ロジック120によって生成されるとともに、ブロック118Aからブロック118Bに提供されてもよい。
【0091】
ブロック118Aの処理中に、“アクティブ化_ネクスト_ブロック(activate_next_block)”信号が、第二の信号生成ロジック122によって生成されて、ブロック118Aの別な状態に基づいてブロック118Aからブロック
118Bに提供されてもよい。例えば、
図16に示すように、アクティブ化_ネクスト_ブロック信号は、ブロック118Bがパターン検索中に状態Bに進行するときに生成されてもよい。このように、アクティブ化_ネクスト_ブロック信号は、クロスオーバー信号よりも早期の状態にあるときに生成されてもよい。ブロック118Aからのアクティブ化_ネクスト_ブロック信号は、ブロック118Bのブロック・アクティブ化ロジック124によって受信されてもよい。ブロック・アクティブ化ロジック122は、受信したアクティブ化_ネクスト_ブロック信号に応答してブロック118Bをアクティブ化してもよい。ブロック118Bは、その後、パターン検索がブロック118Bまでクロスオーバーするときに(例えば、ブロック118Bがブロック118Aから提供されたクロスオーバー信号を受信するときに)、応答する準備がなされてもよい。信号生成ロジック120及び信号生成ロジック122は、両方の信号を生成するために、ブロック118Aの異なる状態で応答するようにプログラムされた同一のロジックであってもよい。
【0092】
アクティブ化_ネクスト_ブロック信号は、ブロック118Bがパターン検索のクロスオーバーのための時間にアクティブ化されることを保証するために、ブロック118Aの任意の状態において生成されてもよい。例えば、アクティブ化_ネクスト_ブロック信号は、パターン認識プロセッサ14のアーキテクチャに応じて、状態Aで、またはブロック118Aの任意のより早期の状態で生成されてもよい。必要とされるより早期にブロック118Bをアクティブ化することは、消費電力を僅かに増加させる場合があるが、パターン検索シーケンスに影響を与えないことが理解されるべきである。アクティブ化_ネクスト_ブロック信号を受信した後、受信ブロック118Bは、全てのメモリ周期への応答を開始してもよい。しかし、メモリアクセスが各メモリ周期上で実行されても、ブロック118Bを用いるパターン検索は、クロスオーバー信号が受信されるまで、次のパターン検索周期上で実行されなくてもよい。
【0093】
図17は、本発明の実施形態に係る、ブロックにおいてアクティブ化_ネクスト_ブロック信号を処理するための論理図を示す。ブロックは、ブロックインデックスライン(BX)及びブロック結合インデックスライン(BCX)を介して信号を送信及び受信するバス124に結合されてもよい。一実施形態では、1つの入力がブロックをアクティブ化するために指定され、別の入力がパターンシーケンス(例えば、パターン検索シーケンスの進行中に1つのブロックから別のブロックへのクロスオーバー)を示すために用意されてもよい。BX信号は、複数のANDゲート126に提供されてもよい。ブロックイネーブルアクティブ化信号もまた、対応するBX信号の提供を受ける各ANDゲート126に提供されてもよい。ANDゲート126の出力は、ブロックをアクティブ化するための“ブロック・アクティブ化”信号を出力するORゲート128に提供されてもよい。
【0094】
この方法では、ANDゲート126は、ブロックをアクティブ化するためには用いられず、適切なアクティブ化信号が、ORゲート128から出力されるブロック_アクティブ化信号を受信するブロックをアクティブ化させることを可能とするのみの入力信号を“マスク”してもよい。
図17に図示したように、ブロックをアクティブ化することができる複数のパス(例えば、複数の信号)があってもよい。
【0095】
上記のロジックは、ブロック内のフィーチャセルの数、行内のフィーチャセルの数、アクティブなブロックを検出する能力の粒度等のパターン認識プロセッサ14の特性に基づいて、幾分異なる設定を有する場合があることが理解されるべきである。