パターン認識プロセッサのためのバス
開示されているのは次のような方法およびシステムである。パターン認識プロセッサ(14)、そのパターン認識プロセッサ(14)にパターン認識バス(96)を介して接続される中央処理装置(CPU)(20)、およびCPU(20)にメモリバス(98)を介して接続されるメモリ(100)を有するシステム(94)である。幾つかの実施形態において、パターン認識バス(96)およびメモリバス(98)は、それぞれパターン認識プロセッサ(14)およびメモリ(100)に対するほぼ同数の接続を形成する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、概して、電子装置、およびより詳細には、ある実施形態において、パターン認識プロセッサのためのバスに関する。
【背景技術】
【0002】
コンピューティングの分野においては、パターン認識タスクは、ますます性能が試される。大量のデータさえコンピュータ間で伝送され、ユーザが識別を望むパターンの数は増加している。例えば、スパムもしくはマルウェアは、しばしば、データストリームにおけるパターン(例えば、特定の句もしくはコードの一部)を検索することによって検出される。新規の変異形を検索するために新規のパターンが実施される可能性があるため、パターンの数は、スパムおよびマルウェアの多様性によって増加する。これらのパターンの各々に対してデータストリームを検索することは、コンピューティングボトルネック(障害)を形成する可能性がある。しばしば、データストリームが受信されると、一つずつ、各パターンが検索される。システムの手前での遅延は、パターン数に伴うデータストリームの増加の次の部分を検索する状態にある。したがって、パターン認識は、データの受信を遅延させる可能性がある。
【0003】
データストリームでは、パターン認識のために特別に設計された例えばチップであるハードウェアを用いて、大量のパターンが速く検索される。しかしながら、このハードウェアの実装は、専用のパターン認識ハードウェアと中央処理装置(CPU)との間で広く受け入れられる通信プロトコルの欠如のために、複雑になっている。システム設計者は、新しい通信プロトコルを習得するために有限の能力しか持っていない。コンピュータ設計の分野において、たとえ一つの通信プロトコルに対する精通するのさえ、何ヶ月ものあるいは何年もの作業がかかる可能性がある。パターン認識ハードウェアと通信するための新しいプロトコルを用いることは、そのハードウェアを実装するコストを押し上げる可能性がある。
【図面の簡単な説明】
【0004】
【図1】データストリームを検索するシステムの一実施例を示す。
【図2】図1のシステムにおけるパターン認識プロセッサの一実施例を示す。
【図3】図2のパターン認識プロセッサにおける検索タームセルの一実施例を示す。
【図4】単一の文字に対してデータストリームを検索する、図3の検索タームセルを示す。
【図5】単一の文字に対してデータストリームを検索する、図3の検索タームセルを示す。
【図6】一語に対してデータストリームを検索する幾つかの検索タームセルを含む認識モジュールを示す。
【図7】一語に対してデータストリームを検索する幾つかの検索タームセルを含む認識モジュールを示す。
【図8】一語に対してデータストリームを検索する幾つかの検索タームセルを含む認識モジュールを示す。
【図9】二語に対してパラレルにデータストリームを検索するように構成された認識モジュールを示す。
【図10】同一の接頭辞を有する複数語を特定する検索基準(search criterion)に従って検索する認識モジュールを示す。
【図11】同一の接頭辞を有する複数語を特定する検索基準に従って検索する認識モジュールを示す。
【図12】同一の接頭辞を有する複数語を特定する検索基準に従って検索する認識モジュールを示す。
【図13】本技術の実施形態による、同様のまたは同一のパターン認識バスおよびメモリバスを有するシステムの具体例を示す。
【図14】本技術の実施形態による、図13のパターン認識バスの具体例を示す。
【図15】本技術の実施形態による、バスの一部を通して、様々なタイプの信号を送信するための処理の具体例を示す。
【発明を実施するための形態】
【0005】
図1は、データストリーム12を検索するシステム10の一実施例を示す。システム10は、検索基準(search criteria)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および集約モジュール24を含んでもよい。認識モジュール22は、受信されたタームを検索タームと比較するように構成され、認識モジュール22および集約モジュール24の双方は、検索タームとタームが一致することが検索基準を満足するかどうかを決定するように協力してもよい。
【0022】
認識モジュール22は、行デコーダ28および複数のフィーチャセル30を含んでもよい。各フィーチャセル30は検索タームを特定し、フィーチャセル30のグループは、検索基準を形成するパラレルな有限ステートマシンを形成してもよい。フィーチャセル30のコンポーネントは、検索タームアレイ32、検出アレイ34およびアクティブ化ルーティングマトリクス36を形成してもよい。検索タームアレイ32は複数の入力導体37を含み、入力導体37の各々は、行デコーダ28と連通する各フィーチャセル30を配置してもよい。
【0023】
行デコーダ28は、データストリーム12のコンテンツに基づいて、複数の入力導体37中の特定の導体を選択してもよい。例えば、行デコーダ28は、1タームを表現する可能性がある受信されたバイトの値に基づいて、256行のうちの1つをアクティブ化する1バイトから256への行デコーダであってもよい。00000000の1バイトタームは、複数の入力導体37のうち最も上の行に対応し、11111111の1バイトタームは、複数の入力導体37のうちの最も下の行に対応してもよい。したがって、異なる入力導体37は、どのタームがデータストリーム12から受信されるかに依存して選択されてもよい。異なるタームが受信されると、行デコーダ28は、前のタームに対応する行を非アクティブ化し、新規タームに対応する行をアクティブ化してもよい。
【0024】
検出アレイ34は、検索基準を完全にもしくは部分的に満足することを示す信号を集約モジュール24に対して出力する検出バス38に結合してもよい。アクティブ化ルーティングマトリクス36は、一致した検索基準における検索ターム数に基づいて、フィーチャセル30を選択的にアクティブ化する、ならびに非アクティブ化してもよい。
【0025】
集約モジュール24は、ラッチマトリクス40、集約ルーティングマトリクス42、閾値論理マトリクス44、論理積マトリクス46、論理和マトリクス48および初期化ルーティングマトリクス50を含んでもよい。
【0026】
ラッチマトリクス40は、ある検索基準の一部を実施してもよい。例えば、幾つかの正規表現などの幾つかの検索基準は、最初に一致もしくは複数の一致が発生したときのみ考慮する。ラッチマトリクス40は、一致が生じたかどうかを記録するラッチを含んでもよい。検索基準が満足されたとき、もしくはそれ以上満足されないと判定された、すなわち、その検索基準が満足されるより前に前の検索タームを再度マッチングさせる必要があるとき、ラッチは初期化の間にクリアされ、動作中に定期的に再初期化されてもよい。
【0027】
集約ルーティングマトリクス42は、アクティブ化ルーティングマトリクス36と類似した機能を果たしてもよい。集約ルーティングマトリクス42は、検出バス38における一致を示す信号を受信し、閾値論理マトリクス44に接続する異なるグループ論理ライン53へと信号を送信してもよい。集約ルーティングマトリクス42は、検索基準が満足された、もしくはこれ以上満足されないと判定されたとき、検出アレイ34の一部をリセットするために、検出アレイ34へと初期化ルーティングマトリクス50の出力を送信してもよい。
【0028】
閾値論理マトリクス44は、例えば、数を数える(カウントアップする)、または数を逆に数える(カウントダウンする)ように構成された32ビットカウンタなどの、複数のカウンタを含んでもよい。閾値論理マトリクス44は、初期カウントでロードされ、認識モジュールによって信号通知された一致時のカウント値から、カウントアップもしくはカウントダウンしてもよい。例えば、閾値論理マトリクス44は、ある長さの文字列の単語が現れた数を数えてもよい。
【0029】
閾値論理マトリクス44の出力は、論理積マトリクス46に対する入力であってもよい。論理積マトリクス46は、“積”の結果(例えば、ブール論理における“AND”関数)を選択的に生成してもよい。論理積マトリクス46は、正方行列として実施され、出力積の数は、閾値論理マトリクス44からの入力ラインの数と同一であるか、または、論理積マトリクス46は、出力とは異なる数の入力を有してもよい。結果として生じる積の値は、論理和マトリクス48に対する出力であってもよい。
【0030】
論理和マトリクス48は、和(例えば、ブール論理における“OR”関数)を選択的に生成してもよい。論理和マトリクス48もまた、正方行列として実施されるか、または、論理和マトリクス48は、出力とは異なる数の入力を有してもよい。入力は論理積であるため、論理和マトリクス48の出力は、論理的な積和(例えば、ブール論理での積和(SOP)形)であってもよい。論理和マトリクス48の出力は、初期化ルーティングマトリクス50によって受信されてもよい。
【0031】
初期化ルーティングマトリクス50は、集約ルーティングマトリクス42を介して、検出アレイ34および集約モジュール24の一部をリセットしてもよい。初期化ルーティングマトリクス50は、正方行列として実行されるか、または、初期化ルーティングマトリクス50は、出力とは異なる数の入力を有してもよい。初期化ルーティングマトリクス50は、論理和マトリクス48からの信号に応じて、例えば、検索基準が満足されたとき、または、検索基準がこれ以上満足されないと判定されたとき、パターン認識プロセッサ14の他の部分を再初期化してもよい。
【0032】
集約モジュール24は、閾値論理マトリクス44、集約ルーティングマトリクス42、および論理和マトリクス48の出力を受信する出力バッファ51を含んでもよい。集約モジュール24の出力は、出力バッファ51から出力バス26上のCPU20(図1)へと伝送されてもよい。幾つかの実施形態においては、出力マルチプレクサは、これらのコンポーネント42、44および48からの信号を多重化し、基準を満足したことを示す信号、もしくは検索タームの一致を示す信号をCPU20(図1)へと出力してもよい。他の実施形態においては、パターン認識プロセッサ14からのリザルトは、出力マルチプレクサを介して信号を伝送することなく報告されてもよいが、このことは、本明細書で記述されたあらゆる他の特性が省略される可能性がないことを示唆するものではない。例えば、閾値論理マトリクス44、論理積マトリクス46、論理和マトリクス48もしくは初期化ルーティングマトリクス50からの信号は、出力バス26上をパラレルにCPUへと伝送されてもよい。
【0033】
図3は、検索タームセル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は、パターン認識バス96およびメモリバス98を有するシステム94の実施形態を示す。パターン認識バス96およびメモリバス98は、相互に同様または同一である。同様のバスを用いることは、設計者に対して、パターン認識バス96を実装するときに、メモリバス98の彼らの知識を活用することを可能にし、それによりシステム94におけるパターン認識バス96の実装を容易にする。もし、メモリバス98およびパターン認識バス96に対して同一のバスが使用されるならば、システム94における追加の信号の必要性が起こらないようにして、これらの2つのデバイスは単一のバス上に存在するかもしれない。パターン認識バス96について詳細に記載する前に、システム94の他の態様が記載される。
【0062】
システム94は、CPU20、メモリ100、メモリバスコントローラ102、およびパターン認識バスコントローラ104を含んでよい。メモリバスコントローラ102は、メモリバス98によってメモリ100に接続され、アドレスおよびコントロールバス106およびデータバス108の両方によってCPU20に接続されてよい。パターン認識バスコントローラ104は、パターン認識バス96によってパターン認識プロセッサ14に接続され、アドレスおよびコントロールバス110およびデータバス112によってCPU20に接続されてよい。パターン認識バスコントローラ104は、例えばCPU20に結線されるチップなど、分離した構成部品であってよい。あるいはそれは、例えばシングルチップまたはマルチチップモジュールとして、CPU20と同じ構成部品に統合されてよい。同様に、メモリバスコントローラ102は、分離した構成部品であってよい。あるいはそれは、CPU20と同じ構成部品に統合されてよい。パターン認識バスコントローラ104およびメモリバスコントローラ102は、両方とも同一の構成部品に統合的に形成されてよく、あるいはそれらは分離した構成部品であってもよい。幾つかの実施形態は、メモリ100またはメモリバスコントローラ102を含まなくてもよい。それらは、ここに記載されているどの他の特質もまた省略されるものではないことを示唆するものではない。
【0063】
メモリ100は、ダイナミックランダムアクセスメモリ(DRAM)あるいは、例えばフラッシュ、相変化メモリ、またはハードディスクドライブである様々なタイプの不揮発性メモリのような、様々な異なるタイプのメモリを含んでよい。メモリバスコントローラ102は、ダブルデータレートシンクロナスDram(ダブルデータレート(DDR)プロトコル、DDR2プロトコル、DDR3プロトコル、DDR4プロトコル)、シンクロナスDRAM(SDRAM)プロトコル、シリアルギガビットメディアインディペンデントインタフェース(SGMII)プロトコル、インターインテグレイテッドサーキット(I2C)プロトコル、シリアルペリフェラルインタフェース(SPI)プロトコル、パラレルバスインタフェース(PBI)プロトコル、セキュアデジタルインタフェース(SDI)プロトコル、パーソナルコンピュータメモリカードアソシエーション(PCMCIA)プロトコル、マネジメントデータクロック/マネジメントデータインプット/アウトプット(MDC/MDIO)プロトコル、ペリフェラルコンポーネントインタフェース(PCI)プロトコル、PCIエクスプレスプロトコル、または他の通信プロトコルのような、様々な異なる通信プロトコルのうちの一つを通して、メモリ100と通信するように設定されてよい。
【0064】
DDRプロトコルを用いた実装が、ここに詳細に記載されるが、いかなるまたは全ての通信プロトコルは、アドレス、制御、データ、およびステータス情報を通信するために必要な通信を遂行する能力を提供する。ここで言及されるように、データは、これらに限定されるものではないが、1)非常に望まれるパターン認識機能の全ての態様を定義するパターン認識プロセッサに記憶される情報、2)メモリ装置に記憶されるような通常のデータ、および3)パターンマッチ結果が検索されるパターン認識プロセッサに送信されるデータストリームを含んでよい。幾つかの通信プロトコルにおいて、物理データバスのみがあり、そのために、アドレス、制御、データ、およびステータス情報は、通信プロトコル内で準備されるスロットにおいて供給される。
【0065】
パターン認識バスコントローラ104は、メモリバスコントローラ102によって使用されるのと同様のまたは同一の通信プロトコルを通じて、パターン認識プロセッサ14と通信するように構成されてよい。例えば、パターン認識バス96は、メモリバス98とほぼ同数のまたは正確に同数の接続を含んでよい。パターン認識バスコントローラ104は、メモリバスコントローラ102と同様のまたはまったく同一のタイミングを有する通信プロトコルを用いてよい。例えば、パターン認識バスコントローラ104は、メモリバスコントローラ102と同じクロック信号に応答して動作してよい。あるいは、パターン認識バスコントローラ104は、例えばクロック信号の立ち上がりおよび立ち下がりエッジ間である、メモリバスコントローラ102と同じクロック部分の間でデータを送信しおよび受信してよい。パターン認識バス96の物理的な大きさは概して、メモリバス98のものと同様または全く同一であってよい。例えば、パターン認識プロセッサ14およびメモリ100に接続されるピンコネクタまたは接続パッド間の間隔は概して、同様または全く同一であってよい。
【0066】
さらに、メモリ100およびパターン認識プロセッサ14を同じバス上に有することは、次のような長所を提供できる。すなわち、一つのバスから他のバスにデータを通すのに内在する遅延を除去できる。例えば、DDR3メインメモリ100およびPCIバス上のパターン認識プロセッサ14を有するコンピュータシステムにおいては、パターン認識プロセッサ14およびメインメモリ100間での通信にかなりの遅延が存在する。また、ダイレクトメモリアクセス(DMA)は、単一バス上でより速くかつ容易に実装され、単一の共通のパターン認識プロセッサ14および/またはメモリコントローラによって実行されてよい。また、無線周波数インタフェース(RFI)問題が、同一バスによって簡単にされる。また、静電気放電(ESD:Electro−Static Discharge)問題が簡単にされそして減少される。また、プリント回路組立て(PCA)が、シングルバスを用いてより低価格で生産される(例えば、より小さなPCBサイズ、外部バスの外部コントローラおよび受動部品の除去、短縮される構成部品の挿入時間、縮小される電源サイズ、向上された品質等)。さらに、削減された電力使用である(例えば、追加のクロック動作および同期回路の除去による)。
【0067】
図14は、パターン認識バス96の実施形態と、その実施形態がメモリバス98の実施形態にどのように関連してよいかを示す実施形態の両方を示している。この例において、メモリバス98はDDR3バスであってよく、パターン認識バス96はメモリバス98と或る一定の特性を共有してよい。図示されるメモリバス96は、下記にさらに説明される出力割込み信号114を加えるが、メモリバス98と同数の接続を含む。他の実施形態は、メモリバス98と同数の接続、メモリバス98と異なる数の接続、プラスマイナス1,2,4,6,または8本の接続内で同数の接続、または異なる信号速度およびプロトコルでの動作を含んでよい。しかし、その機能は同じのままである。アドレス、制御信号、データおよびステータス情報は、任意の選択されたスタイルのバスの既存のバスプロトコルにマッピングされる。さらに、パターン認識バス96のそのような実施形態は、標準メモリバス98(例えばメモリバス98がDDR3バスであれば)の類似の派生物を含んでよく、これはパターン認識プロセッサ14によって使用されない信号を除去したものである。そのような実施形態はまた、標準メモリバスの“スーパーセット”(上位版)であるパターン認識バスであってもよい。従って、パターン認識バス96は、標準メモリバスの全ての信号を含み、そしてパターン認識プロセッサ14によって使用される信号を加えている。他の実施形態は、標準メモリバスの類似の派生物および標準メモリバスの“スーパーセット”(上位版)の信号の任意の組合せを含んでよい。
【0068】
パターン認識バス96上の幾つかの信号は、メモリバス98内の対応する信号と同様のピンに接続され、同様の機能を供給してよい。例えば、クロック信号116、クロックイネーブル信号118、リセット信号120、データストローブ信号121、およびデータマスク信号122は、両バス96および98上で同じ機能を有し、バス96および98の他の部分に対して同一の配置を有して良い。他の実施形態は、追加の信号またはより少ない同様の信号を含んでよい。例えば、幾つかのより古いバスプロトコルは、リセット信号をサポートしないかもしれないが、任意のそのような機能は、既存のプロトコルに拡張として加えられるようにすることができる。
【0069】
パターン認識バス96上の幾つかの信号は、メモリバス98上のそれらの機能から異なった意味を割り当てられてよい。例えば、カラム選択信号124は、パターン認識プロセッサ14によって、バスイネーブル信号として解釈されてよい。また、ロウアドレスストローブ信号126、カラムアドレスストローブ信号128,ライトイネーブル信号130、およびバーストチョップ信号132は、パターン認識プロセッサ14によって、パターン認識バス96上の命令デコード信号134として解釈される。
【0070】
パターン認識バス96上の幾つかの信号は、メモリバス96上の同一の機能かまたは、パターン認識プロセッサ14の動作モードに依存して異なる機能の何れかを供給してよい。例えば、アドレス信号およびブロックアドレス信号136は、パターン認識プロセッサ14が第1の動作モードであるときはアドレスデータ、パターン認識プロセッサ14が第2の動作モードであるときは命令デコード信号、パターン認識プロセッサ14が第3の動作モードであるときはレジスタ選択信号を伝送してよい。
【0071】
他の実施形態において、メモリバス96上のデータ信号138は、異なる動作モードにおいて異なって解釈されてよい。データ信号138は、例えば設定モードである第4の動作モードであるときに、パターン認識プロセッサ14によって、入力検索基準として解釈されてよい。その検索基準は、フィーチャセル30(図2)の設定を含み、これは例えば、メモリセル58(図3)に記憶される値、メモリセル70(図6)に記憶される値であり、およびアクティブ化ルーティングマトリクス(図10)に対する設定を含んでよい。その検索基準はまた、集約ルーティングマトリクス42(図2)、閾値論理マトリクス44、論理積マトリクス46、論理和マトリクス48、および初期化ルーティングマトリクス50のための設定を含んでよい。パターン認識プロセッサ14はまた、例えばデータ信号138を通じて検索結果を出力する検索報告モードである第5の動作モードを有してよい。例えば検索モードである第6の動作モードにおいては、パターン認識プロセッサ14は、データ信号138を入力データストリーム12(図2)として解釈してよい。
【0072】
出力割込み信号114は、検索基準を満たすデータストリーム12(図1)に応答して、パターン認識プロセッサ14によって選択されてよい。CPU20(図13)は、パターン認識プロセッサ14に対して検索報告モードに入ることを指示することにより、選択された出力割込み信号114に応答してよい。ひとたびこのモードになると、パターン認識プロセッサ14は、データ信号138を通じて、検索結果を出力してよい。検索結果は、どの検索基準が満足されたかおよびデータストリームからのどのデータがその検索基準を満足したかを指し示すデータを含んでよい。その検索結果がCPU20によって受信された後、CPU20は、パターン認識プロセッサ14に対して、検索モードに再度入るように指示してよく、CPU20は、データ線138を通じて、パターン認識プロセッサ14に、データストリーム12(図1)を送信する。
【0073】
他の実施形態は、出力割込み信号114を含まなくてよい。CPU20は、パターン認識プロセッサ14に定期的にポーリングすることによりパターン認識プロセッサ14が一致を検出したか否かを決定して、パターン認識プロセッサ14が満足された基準を検出したか否かを決定してよい。例えば、一致を指し示すデータがパターン認識プロセッサ14内のレジスタに記憶され、CPU20はそのレジスタによって記憶された値を読んで、一致が検出されたか否かを決定してよい。
【0074】
図15は、バスの単一部分を通じて複数のタイプの信号を送信するプロセス140の実施形態を示す。信号タイプの例は、制御信号、アドレス信号、入力データ信号、出力データ信号、検索基準信号、およびクロック信号を含む。ブロック142によって示されるように、プロセス140は、パターン認識バスの一部の上で第1のタイプの信号をパターン認識プロセッサ14に送信することで、開始してよい。幾つかの実施形態において、第1の信号は、アドレス信号、命令デコード信号、レジスタ選択信号、入力検索基準信号、出力検索基準信号、または入力データストリームであってよい。
【0075】
次に、ブロック144に示されるように、パターン認識プロセッサ14のモードが変更されてよい。そのモードは、CPU20(図13)のような幾つかの他の構成部分によって、または基準の満足または他のイベントに応答してパターン認識プロセッサ14(図13)によって送られた信号によって、変更されてよい。パターン認識プロセッサ14のモードは、パターン認識プロセッサ内のレジスタに記憶された値を変更することにより、変更されてよい。
【0076】
次に、ブロック146として示されるように、第2のタイプの信号がパターン認識バスの一部上で送信される。第2のタイプの信号の送信は、第1のタイプの信号とは異なる上述した信号のタイプのうちの一つを送信することを含んでよい。送信の指示は、ブロック142によって記載されっる送信の場合と同様であり、あるいはその指示は異なってもよい。例えば、入力データストリームは、ブロック142によって記載される送信の間でパターン認識プロセッサ14(図14)に送信されてよい。そして、出力検索結果が、バスの例えばデータ信号138である同一の部分上で、パターン認識プロセッサ14から送信されてよい。
【0077】
異なるモードの間で、同じバス部分上で異なる信号タイプを送信することは、各信号タイプに対して分離した信号パスを有するバスに比較して、確かにパターン認識バス96上の信号パスの数を減少させる。信号パスを共有することは、上述したようにパターン認識バス96をメモリバス98とより同じように作ることを確かに可能にする。それは、パターン認識プロセッサの実装を確かに簡単にする。
【0078】
本発明は、様々な変形および代替形を許してよく、具体的な実施形態が図面において例を通じて示され、またここに詳細に記載されてきた。しかしながら、本発明は、記載された特にその形に限定されるものではないことを理解されたい。むしろ、本発明は、以下の添付された請求項によって定義される本発明の精神および範囲に入る全ての変形、均等物、および代替を包含するはずである。
【技術分野】
【0001】
本発明の実施形態は、概して、電子装置、およびより詳細には、ある実施形態において、パターン認識プロセッサのためのバスに関する。
【背景技術】
【0002】
コンピューティングの分野においては、パターン認識タスクは、ますます性能が試される。大量のデータさえコンピュータ間で伝送され、ユーザが識別を望むパターンの数は増加している。例えば、スパムもしくはマルウェアは、しばしば、データストリームにおけるパターン(例えば、特定の句もしくはコードの一部)を検索することによって検出される。新規の変異形を検索するために新規のパターンが実施される可能性があるため、パターンの数は、スパムおよびマルウェアの多様性によって増加する。これらのパターンの各々に対してデータストリームを検索することは、コンピューティングボトルネック(障害)を形成する可能性がある。しばしば、データストリームが受信されると、一つずつ、各パターンが検索される。システムの手前での遅延は、パターン数に伴うデータストリームの増加の次の部分を検索する状態にある。したがって、パターン認識は、データの受信を遅延させる可能性がある。
【0003】
データストリームでは、パターン認識のために特別に設計された例えばチップであるハードウェアを用いて、大量のパターンが速く検索される。しかしながら、このハードウェアの実装は、専用のパターン認識ハードウェアと中央処理装置(CPU)との間で広く受け入れられる通信プロトコルの欠如のために、複雑になっている。システム設計者は、新しい通信プロトコルを習得するために有限の能力しか持っていない。コンピュータ設計の分野において、たとえ一つの通信プロトコルに対する精通するのさえ、何ヶ月ものあるいは何年もの作業がかかる可能性がある。パターン認識ハードウェアと通信するための新しいプロトコルを用いることは、そのハードウェアを実装するコストを押し上げる可能性がある。
【図面の簡単な説明】
【0004】
【図1】データストリームを検索するシステムの一実施例を示す。
【図2】図1のシステムにおけるパターン認識プロセッサの一実施例を示す。
【図3】図2のパターン認識プロセッサにおける検索タームセルの一実施例を示す。
【図4】単一の文字に対してデータストリームを検索する、図3の検索タームセルを示す。
【図5】単一の文字に対してデータストリームを検索する、図3の検索タームセルを示す。
【図6】一語に対してデータストリームを検索する幾つかの検索タームセルを含む認識モジュールを示す。
【図7】一語に対してデータストリームを検索する幾つかの検索タームセルを含む認識モジュールを示す。
【図8】一語に対してデータストリームを検索する幾つかの検索タームセルを含む認識モジュールを示す。
【図9】二語に対してパラレルにデータストリームを検索するように構成された認識モジュールを示す。
【図10】同一の接頭辞を有する複数語を特定する検索基準(search criterion)に従って検索する認識モジュールを示す。
【図11】同一の接頭辞を有する複数語を特定する検索基準に従って検索する認識モジュールを示す。
【図12】同一の接頭辞を有する複数語を特定する検索基準に従って検索する認識モジュールを示す。
【図13】本技術の実施形態による、同様のまたは同一のパターン認識バスおよびメモリバスを有するシステムの具体例を示す。
【図14】本技術の実施形態による、図13のパターン認識バスの具体例を示す。
【図15】本技術の実施形態による、バスの一部を通して、様々なタイプの信号を送信するための処理の具体例を示す。
【発明を実施するための形態】
【0005】
図1は、データストリーム12を検索するシステム10の一実施例を示す。システム10は、検索基準(search criteria)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および集約モジュール24を含んでもよい。認識モジュール22は、受信されたタームを検索タームと比較するように構成され、認識モジュール22および集約モジュール24の双方は、検索タームとタームが一致することが検索基準を満足するかどうかを決定するように協力してもよい。
【0022】
認識モジュール22は、行デコーダ28および複数のフィーチャセル30を含んでもよい。各フィーチャセル30は検索タームを特定し、フィーチャセル30のグループは、検索基準を形成するパラレルな有限ステートマシンを形成してもよい。フィーチャセル30のコンポーネントは、検索タームアレイ32、検出アレイ34およびアクティブ化ルーティングマトリクス36を形成してもよい。検索タームアレイ32は複数の入力導体37を含み、入力導体37の各々は、行デコーダ28と連通する各フィーチャセル30を配置してもよい。
【0023】
行デコーダ28は、データストリーム12のコンテンツに基づいて、複数の入力導体37中の特定の導体を選択してもよい。例えば、行デコーダ28は、1タームを表現する可能性がある受信されたバイトの値に基づいて、256行のうちの1つをアクティブ化する1バイトから256への行デコーダであってもよい。00000000の1バイトタームは、複数の入力導体37のうち最も上の行に対応し、11111111の1バイトタームは、複数の入力導体37のうちの最も下の行に対応してもよい。したがって、異なる入力導体37は、どのタームがデータストリーム12から受信されるかに依存して選択されてもよい。異なるタームが受信されると、行デコーダ28は、前のタームに対応する行を非アクティブ化し、新規タームに対応する行をアクティブ化してもよい。
【0024】
検出アレイ34は、検索基準を完全にもしくは部分的に満足することを示す信号を集約モジュール24に対して出力する検出バス38に結合してもよい。アクティブ化ルーティングマトリクス36は、一致した検索基準における検索ターム数に基づいて、フィーチャセル30を選択的にアクティブ化する、ならびに非アクティブ化してもよい。
【0025】
集約モジュール24は、ラッチマトリクス40、集約ルーティングマトリクス42、閾値論理マトリクス44、論理積マトリクス46、論理和マトリクス48および初期化ルーティングマトリクス50を含んでもよい。
【0026】
ラッチマトリクス40は、ある検索基準の一部を実施してもよい。例えば、幾つかの正規表現などの幾つかの検索基準は、最初に一致もしくは複数の一致が発生したときのみ考慮する。ラッチマトリクス40は、一致が生じたかどうかを記録するラッチを含んでもよい。検索基準が満足されたとき、もしくはそれ以上満足されないと判定された、すなわち、その検索基準が満足されるより前に前の検索タームを再度マッチングさせる必要があるとき、ラッチは初期化の間にクリアされ、動作中に定期的に再初期化されてもよい。
【0027】
集約ルーティングマトリクス42は、アクティブ化ルーティングマトリクス36と類似した機能を果たしてもよい。集約ルーティングマトリクス42は、検出バス38における一致を示す信号を受信し、閾値論理マトリクス44に接続する異なるグループ論理ライン53へと信号を送信してもよい。集約ルーティングマトリクス42は、検索基準が満足された、もしくはこれ以上満足されないと判定されたとき、検出アレイ34の一部をリセットするために、検出アレイ34へと初期化ルーティングマトリクス50の出力を送信してもよい。
【0028】
閾値論理マトリクス44は、例えば、数を数える(カウントアップする)、または数を逆に数える(カウントダウンする)ように構成された32ビットカウンタなどの、複数のカウンタを含んでもよい。閾値論理マトリクス44は、初期カウントでロードされ、認識モジュールによって信号通知された一致時のカウント値から、カウントアップもしくはカウントダウンしてもよい。例えば、閾値論理マトリクス44は、ある長さの文字列の単語が現れた数を数えてもよい。
【0029】
閾値論理マトリクス44の出力は、論理積マトリクス46に対する入力であってもよい。論理積マトリクス46は、“積”の結果(例えば、ブール論理における“AND”関数)を選択的に生成してもよい。論理積マトリクス46は、正方行列として実施され、出力積の数は、閾値論理マトリクス44からの入力ラインの数と同一であるか、または、論理積マトリクス46は、出力とは異なる数の入力を有してもよい。結果として生じる積の値は、論理和マトリクス48に対する出力であってもよい。
【0030】
論理和マトリクス48は、和(例えば、ブール論理における“OR”関数)を選択的に生成してもよい。論理和マトリクス48もまた、正方行列として実施されるか、または、論理和マトリクス48は、出力とは異なる数の入力を有してもよい。入力は論理積であるため、論理和マトリクス48の出力は、論理的な積和(例えば、ブール論理での積和(SOP)形)であってもよい。論理和マトリクス48の出力は、初期化ルーティングマトリクス50によって受信されてもよい。
【0031】
初期化ルーティングマトリクス50は、集約ルーティングマトリクス42を介して、検出アレイ34および集約モジュール24の一部をリセットしてもよい。初期化ルーティングマトリクス50は、正方行列として実行されるか、または、初期化ルーティングマトリクス50は、出力とは異なる数の入力を有してもよい。初期化ルーティングマトリクス50は、論理和マトリクス48からの信号に応じて、例えば、検索基準が満足されたとき、または、検索基準がこれ以上満足されないと判定されたとき、パターン認識プロセッサ14の他の部分を再初期化してもよい。
【0032】
集約モジュール24は、閾値論理マトリクス44、集約ルーティングマトリクス42、および論理和マトリクス48の出力を受信する出力バッファ51を含んでもよい。集約モジュール24の出力は、出力バッファ51から出力バス26上のCPU20(図1)へと伝送されてもよい。幾つかの実施形態においては、出力マルチプレクサは、これらのコンポーネント42、44および48からの信号を多重化し、基準を満足したことを示す信号、もしくは検索タームの一致を示す信号をCPU20(図1)へと出力してもよい。他の実施形態においては、パターン認識プロセッサ14からのリザルトは、出力マルチプレクサを介して信号を伝送することなく報告されてもよいが、このことは、本明細書で記述されたあらゆる他の特性が省略される可能性がないことを示唆するものではない。例えば、閾値論理マトリクス44、論理積マトリクス46、論理和マトリクス48もしくは初期化ルーティングマトリクス50からの信号は、出力バス26上をパラレルにCPUへと伝送されてもよい。
【0033】
図3は、検索タームセル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は、パターン認識バス96およびメモリバス98を有するシステム94の実施形態を示す。パターン認識バス96およびメモリバス98は、相互に同様または同一である。同様のバスを用いることは、設計者に対して、パターン認識バス96を実装するときに、メモリバス98の彼らの知識を活用することを可能にし、それによりシステム94におけるパターン認識バス96の実装を容易にする。もし、メモリバス98およびパターン認識バス96に対して同一のバスが使用されるならば、システム94における追加の信号の必要性が起こらないようにして、これらの2つのデバイスは単一のバス上に存在するかもしれない。パターン認識バス96について詳細に記載する前に、システム94の他の態様が記載される。
【0062】
システム94は、CPU20、メモリ100、メモリバスコントローラ102、およびパターン認識バスコントローラ104を含んでよい。メモリバスコントローラ102は、メモリバス98によってメモリ100に接続され、アドレスおよびコントロールバス106およびデータバス108の両方によってCPU20に接続されてよい。パターン認識バスコントローラ104は、パターン認識バス96によってパターン認識プロセッサ14に接続され、アドレスおよびコントロールバス110およびデータバス112によってCPU20に接続されてよい。パターン認識バスコントローラ104は、例えばCPU20に結線されるチップなど、分離した構成部品であってよい。あるいはそれは、例えばシングルチップまたはマルチチップモジュールとして、CPU20と同じ構成部品に統合されてよい。同様に、メモリバスコントローラ102は、分離した構成部品であってよい。あるいはそれは、CPU20と同じ構成部品に統合されてよい。パターン認識バスコントローラ104およびメモリバスコントローラ102は、両方とも同一の構成部品に統合的に形成されてよく、あるいはそれらは分離した構成部品であってもよい。幾つかの実施形態は、メモリ100またはメモリバスコントローラ102を含まなくてもよい。それらは、ここに記載されているどの他の特質もまた省略されるものではないことを示唆するものではない。
【0063】
メモリ100は、ダイナミックランダムアクセスメモリ(DRAM)あるいは、例えばフラッシュ、相変化メモリ、またはハードディスクドライブである様々なタイプの不揮発性メモリのような、様々な異なるタイプのメモリを含んでよい。メモリバスコントローラ102は、ダブルデータレートシンクロナスDram(ダブルデータレート(DDR)プロトコル、DDR2プロトコル、DDR3プロトコル、DDR4プロトコル)、シンクロナスDRAM(SDRAM)プロトコル、シリアルギガビットメディアインディペンデントインタフェース(SGMII)プロトコル、インターインテグレイテッドサーキット(I2C)プロトコル、シリアルペリフェラルインタフェース(SPI)プロトコル、パラレルバスインタフェース(PBI)プロトコル、セキュアデジタルインタフェース(SDI)プロトコル、パーソナルコンピュータメモリカードアソシエーション(PCMCIA)プロトコル、マネジメントデータクロック/マネジメントデータインプット/アウトプット(MDC/MDIO)プロトコル、ペリフェラルコンポーネントインタフェース(PCI)プロトコル、PCIエクスプレスプロトコル、または他の通信プロトコルのような、様々な異なる通信プロトコルのうちの一つを通して、メモリ100と通信するように設定されてよい。
【0064】
DDRプロトコルを用いた実装が、ここに詳細に記載されるが、いかなるまたは全ての通信プロトコルは、アドレス、制御、データ、およびステータス情報を通信するために必要な通信を遂行する能力を提供する。ここで言及されるように、データは、これらに限定されるものではないが、1)非常に望まれるパターン認識機能の全ての態様を定義するパターン認識プロセッサに記憶される情報、2)メモリ装置に記憶されるような通常のデータ、および3)パターンマッチ結果が検索されるパターン認識プロセッサに送信されるデータストリームを含んでよい。幾つかの通信プロトコルにおいて、物理データバスのみがあり、そのために、アドレス、制御、データ、およびステータス情報は、通信プロトコル内で準備されるスロットにおいて供給される。
【0065】
パターン認識バスコントローラ104は、メモリバスコントローラ102によって使用されるのと同様のまたは同一の通信プロトコルを通じて、パターン認識プロセッサ14と通信するように構成されてよい。例えば、パターン認識バス96は、メモリバス98とほぼ同数のまたは正確に同数の接続を含んでよい。パターン認識バスコントローラ104は、メモリバスコントローラ102と同様のまたはまったく同一のタイミングを有する通信プロトコルを用いてよい。例えば、パターン認識バスコントローラ104は、メモリバスコントローラ102と同じクロック信号に応答して動作してよい。あるいは、パターン認識バスコントローラ104は、例えばクロック信号の立ち上がりおよび立ち下がりエッジ間である、メモリバスコントローラ102と同じクロック部分の間でデータを送信しおよび受信してよい。パターン認識バス96の物理的な大きさは概して、メモリバス98のものと同様または全く同一であってよい。例えば、パターン認識プロセッサ14およびメモリ100に接続されるピンコネクタまたは接続パッド間の間隔は概して、同様または全く同一であってよい。
【0066】
さらに、メモリ100およびパターン認識プロセッサ14を同じバス上に有することは、次のような長所を提供できる。すなわち、一つのバスから他のバスにデータを通すのに内在する遅延を除去できる。例えば、DDR3メインメモリ100およびPCIバス上のパターン認識プロセッサ14を有するコンピュータシステムにおいては、パターン認識プロセッサ14およびメインメモリ100間での通信にかなりの遅延が存在する。また、ダイレクトメモリアクセス(DMA)は、単一バス上でより速くかつ容易に実装され、単一の共通のパターン認識プロセッサ14および/またはメモリコントローラによって実行されてよい。また、無線周波数インタフェース(RFI)問題が、同一バスによって簡単にされる。また、静電気放電(ESD:Electro−Static Discharge)問題が簡単にされそして減少される。また、プリント回路組立て(PCA)が、シングルバスを用いてより低価格で生産される(例えば、より小さなPCBサイズ、外部バスの外部コントローラおよび受動部品の除去、短縮される構成部品の挿入時間、縮小される電源サイズ、向上された品質等)。さらに、削減された電力使用である(例えば、追加のクロック動作および同期回路の除去による)。
【0067】
図14は、パターン認識バス96の実施形態と、その実施形態がメモリバス98の実施形態にどのように関連してよいかを示す実施形態の両方を示している。この例において、メモリバス98はDDR3バスであってよく、パターン認識バス96はメモリバス98と或る一定の特性を共有してよい。図示されるメモリバス96は、下記にさらに説明される出力割込み信号114を加えるが、メモリバス98と同数の接続を含む。他の実施形態は、メモリバス98と同数の接続、メモリバス98と異なる数の接続、プラスマイナス1,2,4,6,または8本の接続内で同数の接続、または異なる信号速度およびプロトコルでの動作を含んでよい。しかし、その機能は同じのままである。アドレス、制御信号、データおよびステータス情報は、任意の選択されたスタイルのバスの既存のバスプロトコルにマッピングされる。さらに、パターン認識バス96のそのような実施形態は、標準メモリバス98(例えばメモリバス98がDDR3バスであれば)の類似の派生物を含んでよく、これはパターン認識プロセッサ14によって使用されない信号を除去したものである。そのような実施形態はまた、標準メモリバスの“スーパーセット”(上位版)であるパターン認識バスであってもよい。従って、パターン認識バス96は、標準メモリバスの全ての信号を含み、そしてパターン認識プロセッサ14によって使用される信号を加えている。他の実施形態は、標準メモリバスの類似の派生物および標準メモリバスの“スーパーセット”(上位版)の信号の任意の組合せを含んでよい。
【0068】
パターン認識バス96上の幾つかの信号は、メモリバス98内の対応する信号と同様のピンに接続され、同様の機能を供給してよい。例えば、クロック信号116、クロックイネーブル信号118、リセット信号120、データストローブ信号121、およびデータマスク信号122は、両バス96および98上で同じ機能を有し、バス96および98の他の部分に対して同一の配置を有して良い。他の実施形態は、追加の信号またはより少ない同様の信号を含んでよい。例えば、幾つかのより古いバスプロトコルは、リセット信号をサポートしないかもしれないが、任意のそのような機能は、既存のプロトコルに拡張として加えられるようにすることができる。
【0069】
パターン認識バス96上の幾つかの信号は、メモリバス98上のそれらの機能から異なった意味を割り当てられてよい。例えば、カラム選択信号124は、パターン認識プロセッサ14によって、バスイネーブル信号として解釈されてよい。また、ロウアドレスストローブ信号126、カラムアドレスストローブ信号128,ライトイネーブル信号130、およびバーストチョップ信号132は、パターン認識プロセッサ14によって、パターン認識バス96上の命令デコード信号134として解釈される。
【0070】
パターン認識バス96上の幾つかの信号は、メモリバス96上の同一の機能かまたは、パターン認識プロセッサ14の動作モードに依存して異なる機能の何れかを供給してよい。例えば、アドレス信号およびブロックアドレス信号136は、パターン認識プロセッサ14が第1の動作モードであるときはアドレスデータ、パターン認識プロセッサ14が第2の動作モードであるときは命令デコード信号、パターン認識プロセッサ14が第3の動作モードであるときはレジスタ選択信号を伝送してよい。
【0071】
他の実施形態において、メモリバス96上のデータ信号138は、異なる動作モードにおいて異なって解釈されてよい。データ信号138は、例えば設定モードである第4の動作モードであるときに、パターン認識プロセッサ14によって、入力検索基準として解釈されてよい。その検索基準は、フィーチャセル30(図2)の設定を含み、これは例えば、メモリセル58(図3)に記憶される値、メモリセル70(図6)に記憶される値であり、およびアクティブ化ルーティングマトリクス(図10)に対する設定を含んでよい。その検索基準はまた、集約ルーティングマトリクス42(図2)、閾値論理マトリクス44、論理積マトリクス46、論理和マトリクス48、および初期化ルーティングマトリクス50のための設定を含んでよい。パターン認識プロセッサ14はまた、例えばデータ信号138を通じて検索結果を出力する検索報告モードである第5の動作モードを有してよい。例えば検索モードである第6の動作モードにおいては、パターン認識プロセッサ14は、データ信号138を入力データストリーム12(図2)として解釈してよい。
【0072】
出力割込み信号114は、検索基準を満たすデータストリーム12(図1)に応答して、パターン認識プロセッサ14によって選択されてよい。CPU20(図13)は、パターン認識プロセッサ14に対して検索報告モードに入ることを指示することにより、選択された出力割込み信号114に応答してよい。ひとたびこのモードになると、パターン認識プロセッサ14は、データ信号138を通じて、検索結果を出力してよい。検索結果は、どの検索基準が満足されたかおよびデータストリームからのどのデータがその検索基準を満足したかを指し示すデータを含んでよい。その検索結果がCPU20によって受信された後、CPU20は、パターン認識プロセッサ14に対して、検索モードに再度入るように指示してよく、CPU20は、データ線138を通じて、パターン認識プロセッサ14に、データストリーム12(図1)を送信する。
【0073】
他の実施形態は、出力割込み信号114を含まなくてよい。CPU20は、パターン認識プロセッサ14に定期的にポーリングすることによりパターン認識プロセッサ14が一致を検出したか否かを決定して、パターン認識プロセッサ14が満足された基準を検出したか否かを決定してよい。例えば、一致を指し示すデータがパターン認識プロセッサ14内のレジスタに記憶され、CPU20はそのレジスタによって記憶された値を読んで、一致が検出されたか否かを決定してよい。
【0074】
図15は、バスの単一部分を通じて複数のタイプの信号を送信するプロセス140の実施形態を示す。信号タイプの例は、制御信号、アドレス信号、入力データ信号、出力データ信号、検索基準信号、およびクロック信号を含む。ブロック142によって示されるように、プロセス140は、パターン認識バスの一部の上で第1のタイプの信号をパターン認識プロセッサ14に送信することで、開始してよい。幾つかの実施形態において、第1の信号は、アドレス信号、命令デコード信号、レジスタ選択信号、入力検索基準信号、出力検索基準信号、または入力データストリームであってよい。
【0075】
次に、ブロック144に示されるように、パターン認識プロセッサ14のモードが変更されてよい。そのモードは、CPU20(図13)のような幾つかの他の構成部分によって、または基準の満足または他のイベントに応答してパターン認識プロセッサ14(図13)によって送られた信号によって、変更されてよい。パターン認識プロセッサ14のモードは、パターン認識プロセッサ内のレジスタに記憶された値を変更することにより、変更されてよい。
【0076】
次に、ブロック146として示されるように、第2のタイプの信号がパターン認識バスの一部上で送信される。第2のタイプの信号の送信は、第1のタイプの信号とは異なる上述した信号のタイプのうちの一つを送信することを含んでよい。送信の指示は、ブロック142によって記載されっる送信の場合と同様であり、あるいはその指示は異なってもよい。例えば、入力データストリームは、ブロック142によって記載される送信の間でパターン認識プロセッサ14(図14)に送信されてよい。そして、出力検索結果が、バスの例えばデータ信号138である同一の部分上で、パターン認識プロセッサ14から送信されてよい。
【0077】
異なるモードの間で、同じバス部分上で異なる信号タイプを送信することは、各信号タイプに対して分離した信号パスを有するバスに比較して、確かにパターン認識バス96上の信号パスの数を減少させる。信号パスを共有することは、上述したようにパターン認識バス96をメモリバス98とより同じように作ることを確かに可能にする。それは、パターン認識プロセッサの実装を確かに簡単にする。
【0078】
本発明は、様々な変形および代替形を許してよく、具体的な実施形態が図面において例を通じて示され、またここに詳細に記載されてきた。しかしながら、本発明は、記載された特にその形に限定されるものではないことを理解されたい。むしろ、本発明は、以下の添付された請求項によって定義される本発明の精神および範囲に入る全ての変形、均等物、および代替を包含するはずである。
【特許請求の範囲】
【請求項1】
パターン認識プロセッサと、
前記パターン認識プロセッサにパターン認識バスを介して結合されるプロセッシングユニット(PU)と、
メモリバスを介して前記PUに結合されるメモリであって、前記パターン認識バスおよび前記メモリバスは、それぞれ、前記パターン認識プロセッサおよび前記メモリへのほぼ同じ数の接続を形成するメモリと、
を備えることを特徴とするシステム。
【請求項2】
請求項1に記載のシステムであって、前記パターン認識バスは、前記メモリバスよりも少なくとも一つ以上の接続を形成することを特徴とするシステム。
【請求項3】
請求項2に記載のシステムであって、前記一つ以上の接続は出力割込み信号であることを特徴とするシステム。
【請求項4】
請求項1に記載のシステムであって、前記パターン認識バスおよび前記メモリバス上の複数の対応する接続の各々は、両方のバス上で同じ各自の機能を供給することを特徴とするシステム。
【請求項5】
請求項4に記載のシステムであって、両方のバス上で同じ機能を供給する前記複数の対応する接続は、チップイネーブル信号およびクロック信号を含むことを特徴とするシステム。
【請求項6】
請求項4に記載のシステムであって、両方のバス上で同じ機能を供給する前記複数の対応する接続は、データストローブ信号およびデータマスク信号を含むことを特徴とするシステム。
【請求項7】
請求項1に記載のシステムであって、前記メモリバスは、ダブルデータレート2メモリバスであることを特徴とするシステム。
【請求項8】
請求項1に記載のシステムであって、前記パターン認識バスの一部は、前記パターン認識プロセッサの動作のモードに基づく少なくとも一つの異なる機能を供給することを特徴とするシステム。
【請求項9】
請求項8に記載のシステムであって、前記少なくとも一つの異なる機能は、アドレス、命令、およびレジスタ選択を含むことを特徴とするシステム。
【請求項10】
請求項8に記載のシステムであって、前記少なくとも一つの異なる機能は、検索基準、出力検索結果、および入力データを含むことを特徴とするシステム。
【請求項11】
請求項1に記載のシステムであって、前記パターン認識プロセッサおよびPUは、別々の構成部品であることを特徴とするシステム。
【請求項12】
請求項1に記載のシステムであって、前記パターン認識プロセッサは、前記PUと同じ構成部品に統合されることを特徴とするシステム。
【請求項13】
請求項10に記載のシステムであって、前記出力検索結果は、一つ以上ののどの検索基準が満足されたかおよび前記入力データからのどのデータが前記一つ以上の検索基準を満足したかを備えることを特徴とするシステム。
【請求項14】
パターン認識バスの一部上で第1のタイプの信号をパターン認識プロセッサに伝送し、
前記パターン認識プロセッサのモードを変更し、
前記パターン認識バスの前記一部上で第2のタイプの信号を伝送する、
ことを備えることを特徴とする方法。
【請求項15】
請求項14に記載の方法であって、前記第1のタイプの信号を伝送することは、アドレスを伝送することを備えることを特徴とする方法。
【請求項16】
請求項15に記載の方法であって、前記第2のタイプの信号を伝送することは、命令信号またはレジスタ選択信号のいずれかを伝送することを備えることを特徴とする方法。
【請求項17】
請求項14に記載の方法であって、前記第1のタイプの信号を伝送することは、検索基準信号を伝送することを備え、前記パターン認識プロセッサの前記モードを変更することは、前記パターン認識プロセッサの前記モードを設定モードから変更することを備えることを特徴とする方法。
【請求項18】
請求項17に記載の方法であって、前記第2のタイプの信号を伝送することは前記パターン認識プロセッサによって検索されるべきデータストリームを伝送することを備え、前記パターン認識プロセッサの前記モードを変更することは前記パターン認識プロセッサの前記モードを検索モードに変更することを備えることを特徴とする方法。
【請求項19】
請求項14に記載の方法であって、前記第1のタイプの信号を伝送することは前記パターン認識プロセッサによって検索されるべきデータストリームを伝送することを備えることを特徴とする方法。
【請求項20】
請求項19に記載の方法であって、前記パターン認識プロセッサの前記モードを変更することは、前記パターン認識プロセッサの前記モードを検索報告モードに変更することを備えることを特徴とする方法。
【請求項21】
請求項20に記載の方法であって、前記第2のタイプの信号を伝送することは前記パターン認識プロセッサから検索結果信号を伝送することを備えることを特徴とする方法。
【請求項22】
請求項20に記載の方法であって、前記パターン認識プロセッサの前記モードを検索報告モードに変更することは、
検索されたデータストリームが検索基準を満足したことを検出し、
出力割込み信号をPUに伝送し、
前記PUから前記検索報告モードに入るための命令を受信する、
ことを備えることを特徴とする方法。
【請求項23】
請求項20に記載の方法であって、前記パターン認識プロセッサの前記モードを検索報告モードに変更することは、
検索されたデータストリームが検索基準を満足したことを検出し、
前記検索基準が満足されたか否かを指し示す値を記憶し、
前記値を指示している信号をPUに伝送し、
前記PUから前記検索報告モードに入るための命令を受信する、
ことを備えることを特徴とする方法。
【請求項24】
請求項14に記載の方法であって、前記パターン認識プロセッサの前記モードをイベントに応答して変更することを備えることを特徴とする方法。
【請求項25】
請求項24に記載の方法であって、前記イベントは検索基準を満足させることを備えることを特徴とする方法。
【請求項26】
パターン認識バスを超えて受信された信号の第1の部分を前記信号の第1の部分がメモリバスを超えて受信されたときにメモリによって解釈されるのと同じ方法で解釈するように設定されるパターン認識プロセッサを備える、
ことを特徴とするシステム。
【請求項27】
請求項26に記載のシステムであって、前記パターン認識プロセッサは、前記パターン認識バスを超えて受信された信号の第2の部分を、前記信号の第2の部分が前記メモリバスを超えて受信されたときに前記メモリによって解釈される方法と異なって解釈するように設定されることを特徴とするシステム。
【請求項28】
請求項26に記載のシステムであって、前記パターン認識プロセッサは、前記パターン認識バスを超えて受信された信号の第3の部分を、前記パターン認識プロセッサのモードに依存して、前記信号の第3の部分が前記メモリバスを超えて受信されたときに前記メモリによって解釈されるのと同じ方法および前記信号の第3の部分が前記メモリバスを超えて受信されたときに前記メモリによって解釈される方法と異なっての両方で解釈するように設定されることを特徴とするシステム。
【請求項29】
請求項26に記載のシステムであって、前記パターン認識プロセッサに前記パターン認識バスを介して結合されるCPUを備えることを特徴とするシステム。
【請求項30】
請求項29に記載のシステムであって、コントロールバスを介して前記CPUにおよび前記パターン認識バスを介して前記パターン認識プロセッサに結合されるパターン認識バスコントローラを備えることを特徴とするシステム。
【請求項31】
請求項30に記載のシステムであって、前記メモリに前記メモリバスを介して結合されるメモリバスコントローラを備えることを特徴とするシステム。
【請求項32】
請求項29に記載のシステムであって、前記パターン認識プロセッサおよび前記CPUは別々の構成部品であることを特徴とするシステム。
【請求項33】
請求項29に記載のシステムであって、前記パターン認識プロセッサおよび前記CPUは単一の構成部品として統合されることを特徴とするシステム。
【請求項34】
請求項31に記載のシステムであって、前記メモリバスコントローラおよび前記パターン認識バスは別々の構成部品であることを特徴とするシステム。
【請求項35】
請求項31に記載のシステムであって、前記メモリバスコントローラおよび前記パターン認識バスコントローラは単一の構成部品として統合されることを特徴とするシステム。
【請求項36】
請求項31に記載のシステムであって、前記パターン認識バスコントローラは前記メモリバスコントローラによって使用されるものと少なくとも類似の通信プロトコルを通して前記パターン認識プロセッサと通信することを特徴とするシステム。
【請求項37】
請求項26に記載のシステムであって、前記パターン認識バスは前記メモリバスと概略同じ数の接続を備えることを特徴とするシステム。
【請求項38】
請求項26に記載のシステムであって、前記パターン認識バスは前記メモリバスと概略同じ物理的大きさを備えることを特徴とするシステム。
【請求項39】
パターン認識バスの一部上でパターン認識プロセッサおよびプロセッシングユニットの間で複数の異なるタイプの信号を伝送することを備え、前記複数の異なるタイプの信号の各々は前記パターン認識プロセッサの異なるモードに関連付けられることを特徴とする方法。
【請求項40】
請求項39に記載の方法であって、前記パターン認識プロセッサは前記パターン認識バスの前記一部上で、前記パターン認識プロセッサの前記モードにおける変更に応じて異なって信号を解釈することを特徴とする方法。
【請求項41】
請求項39に記載の方法であって、前記複数の異なるタイプの信号は3つの異なるタイプの信号を備えることを特徴とする方法。
【請求項42】
請求項39に記載の方法であって、前記複数の異なるタイプの信号は、アドレス信号、制御信号、ステータス信号、またはそれらの組合せを備えることを特徴とする方法。
【請求項43】
請求項42に記載の方法であって、前記複数の異なるタイプの信号はレジスタ選択信号を備えることを特徴とする方法。
【請求項44】
請求項39に記載の方法であって、前記複数の異なるタイプの信号を伝送することは、検索モードにあるときに前記パターン認識プロセッサによって検索される予定のデータストリームを前記パターン認識プロセッサに伝送し、報告モードにあるときに前記パターン認識プロセッサから検索結果信号を伝送することを備えることを特徴とする方法。
【請求項1】
パターン認識プロセッサと、
前記パターン認識プロセッサにパターン認識バスを介して結合されるプロセッシングユニット(PU)と、
メモリバスを介して前記PUに結合されるメモリであって、前記パターン認識バスおよび前記メモリバスは、それぞれ、前記パターン認識プロセッサおよび前記メモリへのほぼ同じ数の接続を形成するメモリと、
を備えることを特徴とするシステム。
【請求項2】
請求項1に記載のシステムであって、前記パターン認識バスは、前記メモリバスよりも少なくとも一つ以上の接続を形成することを特徴とするシステム。
【請求項3】
請求項2に記載のシステムであって、前記一つ以上の接続は出力割込み信号であることを特徴とするシステム。
【請求項4】
請求項1に記載のシステムであって、前記パターン認識バスおよび前記メモリバス上の複数の対応する接続の各々は、両方のバス上で同じ各自の機能を供給することを特徴とするシステム。
【請求項5】
請求項4に記載のシステムであって、両方のバス上で同じ機能を供給する前記複数の対応する接続は、チップイネーブル信号およびクロック信号を含むことを特徴とするシステム。
【請求項6】
請求項4に記載のシステムであって、両方のバス上で同じ機能を供給する前記複数の対応する接続は、データストローブ信号およびデータマスク信号を含むことを特徴とするシステム。
【請求項7】
請求項1に記載のシステムであって、前記メモリバスは、ダブルデータレート2メモリバスであることを特徴とするシステム。
【請求項8】
請求項1に記載のシステムであって、前記パターン認識バスの一部は、前記パターン認識プロセッサの動作のモードに基づく少なくとも一つの異なる機能を供給することを特徴とするシステム。
【請求項9】
請求項8に記載のシステムであって、前記少なくとも一つの異なる機能は、アドレス、命令、およびレジスタ選択を含むことを特徴とするシステム。
【請求項10】
請求項8に記載のシステムであって、前記少なくとも一つの異なる機能は、検索基準、出力検索結果、および入力データを含むことを特徴とするシステム。
【請求項11】
請求項1に記載のシステムであって、前記パターン認識プロセッサおよびPUは、別々の構成部品であることを特徴とするシステム。
【請求項12】
請求項1に記載のシステムであって、前記パターン認識プロセッサは、前記PUと同じ構成部品に統合されることを特徴とするシステム。
【請求項13】
請求項10に記載のシステムであって、前記出力検索結果は、一つ以上ののどの検索基準が満足されたかおよび前記入力データからのどのデータが前記一つ以上の検索基準を満足したかを備えることを特徴とするシステム。
【請求項14】
パターン認識バスの一部上で第1のタイプの信号をパターン認識プロセッサに伝送し、
前記パターン認識プロセッサのモードを変更し、
前記パターン認識バスの前記一部上で第2のタイプの信号を伝送する、
ことを備えることを特徴とする方法。
【請求項15】
請求項14に記載の方法であって、前記第1のタイプの信号を伝送することは、アドレスを伝送することを備えることを特徴とする方法。
【請求項16】
請求項15に記載の方法であって、前記第2のタイプの信号を伝送することは、命令信号またはレジスタ選択信号のいずれかを伝送することを備えることを特徴とする方法。
【請求項17】
請求項14に記載の方法であって、前記第1のタイプの信号を伝送することは、検索基準信号を伝送することを備え、前記パターン認識プロセッサの前記モードを変更することは、前記パターン認識プロセッサの前記モードを設定モードから変更することを備えることを特徴とする方法。
【請求項18】
請求項17に記載の方法であって、前記第2のタイプの信号を伝送することは前記パターン認識プロセッサによって検索されるべきデータストリームを伝送することを備え、前記パターン認識プロセッサの前記モードを変更することは前記パターン認識プロセッサの前記モードを検索モードに変更することを備えることを特徴とする方法。
【請求項19】
請求項14に記載の方法であって、前記第1のタイプの信号を伝送することは前記パターン認識プロセッサによって検索されるべきデータストリームを伝送することを備えることを特徴とする方法。
【請求項20】
請求項19に記載の方法であって、前記パターン認識プロセッサの前記モードを変更することは、前記パターン認識プロセッサの前記モードを検索報告モードに変更することを備えることを特徴とする方法。
【請求項21】
請求項20に記載の方法であって、前記第2のタイプの信号を伝送することは前記パターン認識プロセッサから検索結果信号を伝送することを備えることを特徴とする方法。
【請求項22】
請求項20に記載の方法であって、前記パターン認識プロセッサの前記モードを検索報告モードに変更することは、
検索されたデータストリームが検索基準を満足したことを検出し、
出力割込み信号をPUに伝送し、
前記PUから前記検索報告モードに入るための命令を受信する、
ことを備えることを特徴とする方法。
【請求項23】
請求項20に記載の方法であって、前記パターン認識プロセッサの前記モードを検索報告モードに変更することは、
検索されたデータストリームが検索基準を満足したことを検出し、
前記検索基準が満足されたか否かを指し示す値を記憶し、
前記値を指示している信号をPUに伝送し、
前記PUから前記検索報告モードに入るための命令を受信する、
ことを備えることを特徴とする方法。
【請求項24】
請求項14に記載の方法であって、前記パターン認識プロセッサの前記モードをイベントに応答して変更することを備えることを特徴とする方法。
【請求項25】
請求項24に記載の方法であって、前記イベントは検索基準を満足させることを備えることを特徴とする方法。
【請求項26】
パターン認識バスを超えて受信された信号の第1の部分を前記信号の第1の部分がメモリバスを超えて受信されたときにメモリによって解釈されるのと同じ方法で解釈するように設定されるパターン認識プロセッサを備える、
ことを特徴とするシステム。
【請求項27】
請求項26に記載のシステムであって、前記パターン認識プロセッサは、前記パターン認識バスを超えて受信された信号の第2の部分を、前記信号の第2の部分が前記メモリバスを超えて受信されたときに前記メモリによって解釈される方法と異なって解釈するように設定されることを特徴とするシステム。
【請求項28】
請求項26に記載のシステムであって、前記パターン認識プロセッサは、前記パターン認識バスを超えて受信された信号の第3の部分を、前記パターン認識プロセッサのモードに依存して、前記信号の第3の部分が前記メモリバスを超えて受信されたときに前記メモリによって解釈されるのと同じ方法および前記信号の第3の部分が前記メモリバスを超えて受信されたときに前記メモリによって解釈される方法と異なっての両方で解釈するように設定されることを特徴とするシステム。
【請求項29】
請求項26に記載のシステムであって、前記パターン認識プロセッサに前記パターン認識バスを介して結合されるCPUを備えることを特徴とするシステム。
【請求項30】
請求項29に記載のシステムであって、コントロールバスを介して前記CPUにおよび前記パターン認識バスを介して前記パターン認識プロセッサに結合されるパターン認識バスコントローラを備えることを特徴とするシステム。
【請求項31】
請求項30に記載のシステムであって、前記メモリに前記メモリバスを介して結合されるメモリバスコントローラを備えることを特徴とするシステム。
【請求項32】
請求項29に記載のシステムであって、前記パターン認識プロセッサおよび前記CPUは別々の構成部品であることを特徴とするシステム。
【請求項33】
請求項29に記載のシステムであって、前記パターン認識プロセッサおよび前記CPUは単一の構成部品として統合されることを特徴とするシステム。
【請求項34】
請求項31に記載のシステムであって、前記メモリバスコントローラおよび前記パターン認識バスは別々の構成部品であることを特徴とするシステム。
【請求項35】
請求項31に記載のシステムであって、前記メモリバスコントローラおよび前記パターン認識バスコントローラは単一の構成部品として統合されることを特徴とするシステム。
【請求項36】
請求項31に記載のシステムであって、前記パターン認識バスコントローラは前記メモリバスコントローラによって使用されるものと少なくとも類似の通信プロトコルを通して前記パターン認識プロセッサと通信することを特徴とするシステム。
【請求項37】
請求項26に記載のシステムであって、前記パターン認識バスは前記メモリバスと概略同じ数の接続を備えることを特徴とするシステム。
【請求項38】
請求項26に記載のシステムであって、前記パターン認識バスは前記メモリバスと概略同じ物理的大きさを備えることを特徴とするシステム。
【請求項39】
パターン認識バスの一部上でパターン認識プロセッサおよびプロセッシングユニットの間で複数の異なるタイプの信号を伝送することを備え、前記複数の異なるタイプの信号の各々は前記パターン認識プロセッサの異なるモードに関連付けられることを特徴とする方法。
【請求項40】
請求項39に記載の方法であって、前記パターン認識プロセッサは前記パターン認識バスの前記一部上で、前記パターン認識プロセッサの前記モードにおける変更に応じて異なって信号を解釈することを特徴とする方法。
【請求項41】
請求項39に記載の方法であって、前記複数の異なるタイプの信号は3つの異なるタイプの信号を備えることを特徴とする方法。
【請求項42】
請求項39に記載の方法であって、前記複数の異なるタイプの信号は、アドレス信号、制御信号、ステータス信号、またはそれらの組合せを備えることを特徴とする方法。
【請求項43】
請求項42に記載の方法であって、前記複数の異なるタイプの信号はレジスタ選択信号を備えることを特徴とする方法。
【請求項44】
請求項39に記載の方法であって、前記複数の異なるタイプの信号を伝送することは、検索モードにあるときに前記パターン認識プロセッサによって検索される予定のデータストリームを前記パターン認識プロセッサに伝送し、報告モードにあるときに前記パターン認識プロセッサから検索結果信号を伝送することを備えることを特徴とする方法。
【図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−514788(P2012−514788A)
【公表日】平成24年6月28日(2012.6.28)
【国際特許分類】
【出願番号】特願2011−544468(P2011−544468)
【出願日】平成21年12月16日(2009.12.16)
【国際出願番号】PCT/US2009/068261
【国際公開番号】WO2010/080442
【国際公開日】平成22年7月15日(2010.7.15)
【出願人】(595168543)マイクロン テクノロジー, インク. (444)
【Fターム(参考)】
【公表日】平成24年6月28日(2012.6.28)
【国際特許分類】
【出願日】平成21年12月16日(2009.12.16)
【国際出願番号】PCT/US2009/068261
【国際公開番号】WO2010/080442
【国際公開日】平成22年7月15日(2010.7.15)
【出願人】(595168543)マイクロン テクノロジー, インク. (444)
【Fターム(参考)】
[ Back to top ]