(57)【要約】ＸＭＬ（商標）文書のような文書のパーシング処理に専用ハードウェアを用いて、ホストＣＰＵの実質処理負荷を除去しつつ時間を大幅に低減する。従来の状態テーブルの使用を、文字パレット、簡略化された状態テーブル、および次状態パレットに分割する。それらのパレットは、専用の高速メモリ内に実現することができ、簡略化された状態テーブルへのアクセルを加速するためにキャッシュ装置が使用し得る。処理は、部分的に同時発生することのある並列の経路内で実行される。専用のレジスタもまた並列的に更新することとしてもよく、文書のパーシングを更に加速するために、フラグビットの制御下で、文字パレットにより収容される任意長の特別な文字の記号列が特徴をスキップする。
2006505043.tif 000002
【特許請求の範囲】
【請求項１】
文書のメモリと、
前記文書中の文字に対応するアドレスを含む文字パレットと、
前記文字に対応する複数のエントリを含む状態テーブルと
状態アドレスまたはオフセットを含む次状態パレットと、
トークンバッファとを備え、
前記状態テーブル中の前記エントリは前記次状態パレットに入れるアドレスとトークンの少なくとも一つを含むパーサアクセラレータ。
【請求項２】
前記文字パレット、前記状態テーブル、および前記次状態パレットは、経路を形成する請求項１記載のパーサアクセラレータ。
【請求項３】
前記文字パレット、前記状態テーブル、および前記次状態パレットのそれぞれは、状態テーブル情報のそれぞれの部分を圧縮形式で有している請求項２記載のパーサアクセラレータ。
【請求項４】
次状態パレットはエントリに入れるアドレスである次状態アドレス部分と記憶されるべきトークン値とを有する請求項１記載のパーサアクセラレータ。
【請求項５】
状態の変化を結果しない記号列中の文字を検出するための手段を更に備える請求項１記載のパーサアクセラレータ。
【請求項６】
状態テーブルにアクセスするための更なるメモリ処理を行うことなく次の文字を即座に処理するための手段を更に備える請求項５記載のパーサアクセラレータ。
【請求項７】
前記経路はハードウェア内に実現されている請求項２記載のパーサアクセラレータ。
【請求項８】
前記経路は、次状態アドレスを、前記文字パレットからの状態テーブルインデックスとに結びつけるループを形成する請求項２記載のパーサアクセラレータ。
【請求項９】
興味記号列を識別するために電子ファイルをパーシングする方法であって、
前記凶器記号列の部分を検出するためのループ経路を形成している文字パレット、状態テーブル、および次状態パレットに、状態テーブル情報のそれぞれを記憶するステップと、
前記状態テーブルからトークン情報を取得するステップと、
前記トークン情報を、前記興味記号列の部分の検出と並列して記憶するステップと、
を含む方法。
【請求項１０】
興味記号列の順序を検出するステップと、処理を制御するために、前記順序を検出するステップに応えて特別トークンを発行するステップと、
を更に有する請求項９記載の方法。
【請求項１１】
前記興味記号列の順序は、包み込まれた記号列を有する請求項１０記載の方法。
【請求項１２】
前記興味記号列の順序は、文書中のテキストのワードまたはフレーズに対応している請求項１０記載の方法。
【請求項１３】
前記更なる処理はメッセージの通過防止を実行する請求項１０記載の方法。
【請求項１４】
前記更なる処理はコンテンツ・ベース・ルーティングを実行する請求項１０記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、一般用コンピュータの処理を制御するアプリケーションの処理に関し、より具体的には、アプリケーションプログラム、文書、および／または、ネットワークデータパケットの他の論理シーケンスに対するパーシング処理の実行に関する。
【背景技術】
【０００２】
ネットワークにおけるコンピュータとコンピュータの接続との間のディジタル通信の分野は、近年多様な形態で急速に発達し、ここ数年のパーソナルコンピュータの急増をもたらしている。この、相互連結、および遠隔処理の可能性における増加は、ネットワークシステム等における個々のコンピュータの有効能力および機能を大きく発展させた。それでもやはり、個々のコンピュータやシステムの使用、それらのユーザの好み、並びにコンピュータが用いられる際の技術の状態などの多様性は、個々の装置の能力や構成並びにそれらのオペレーティングシステムに、実質的な程度における多様性を生み出しており、「プラットフォーム」と総称されるこれらは、一般に、ある程度の範囲で、特にオペレーティングシステムとプログラミング言語のレベルにおいて、相互互換性を欠いている。
【０００３】
このプラットフォーム特性の非互換性、および、これと同時に生ずる通信および遠隔処理、並びにそれをサポートするに足る十分程度の互換性に関する要求は、結果として、プログラミングに関する対象と（本質、属性、および関係の基準システムを通して、多少とも一般化されたモジュールのグループとしてアプリケーションやデータを集めようというコンセプトを含む）、それを具現化するための多数のプログラミング言語とを発展させた。エクステンシブル・マークアップ・ランゲージ（ＸＭＬ；商標）は、このような言語であり、広く普及していると共に、任意の構成およびアーキテクチャを有するネットワークを介して文書として送信することができる。
【０００４】
このような言語において、特定の文字記号列は、特定のコマンドや識別に対応しており、特別な文字や他の重要なデータ（制御ワードと総称する）を含み、それらは、データや演算が事実上自身を識別し得るようにして、以後、それらが「オブジェクト」として取り扱われるようにするためのものであり、これにより、結びつけられたデータとコマンドは、言語の異なる相違するアプリケーションで用いられる適当なフォーマットとコマンドに変換されることができ、その結果、接続されたプラットフォームのそれぞれにおいて、特定の機械で所望の処理の実行をサポートするに足る互換性が生み出される。これらの文字記号列の検出は、パーシングとして知られる処理により実行され、センテンス等の表現の系統的配列（syntax）をそれらの構成部分に分解し、また、それらを文法的に表現する従来の手法に類似している。
【０００５】
ＸＭＬ（商標）文書をパーシングする際、中央処理ユニット（ＣＰＵ）の処理時間の大部分、おそらく殆どは、処理されている特定のＸＭＬ（商標）標準に対して定義されている制御ワード、特定文字、および他の重要なデータを探すための文書の通読に費やされる。この処理は、通常は、個々の文字を照会して、それが、例えば以下のような「＜ｃｏｍｍａｎｄ＞」、「＜ｄａｔａ＝ｄａｔａｗｏｒｄ＞」、「＜ｅｎｄｃｏｍｍａｎｄ＞」等を含む所定の興味記号列のセットに属しているかを判断するソフトウェアにより実行される。何れかの対象記号列が検出されると、トークンが、トークンの開始とトークンの長さのために、ポインタと共に文書中のその位置に記録される。これらのトークンは、文書の全てが解析（パース）されるまで蓄積される。
【０００６】
従来のアプローチは、興味の対象であるこれらの記号列を探すために、ソフトウェア内にテーブルを基礎とする有限状態装置（ＦＳＭ）を実現することであった。その状態テーブルは、メモリ内に備わっており、文書内の特定のパターンを探すように設計されている。現在の状態は状態テーブル中で基礎アドレスとして用いられ、また、入力された文字のアスキー（ＡＳＣＩＩ）表現がそのテーブルにおけるインデックスである。例えば、その状態装置が０（ゼロ）状態にあり、最初の入力文字がアスキー値０２であるとすれば、状態エントリのための絶対アドレスは、基礎アドレス（状態０）とインデックス／アスキー値（０２）の和／連結となる。ＦＳＭは、ＣＰＵが入力文書の最初の文字をメモリから読み取ってくるのに伴って起動する。ＣＰＵは、次に、初期／現在状態および入力文字に従って、メモリ内の状態テーブル中に絶対アドレスを構成し、その状態テーブルから状態データを読み取る。ＣＰＵは、返された状態データに基づいて、現在の状態を新たな値に更新し、もし異なる場合は（その文字が興味記号列の最初の文字に対応することを表示して）、その状態データに示されている他の何らかの動作を行う（例えば、単独文字が特定文字である場合や、現在の文字が、更なる進行の繰り返しに伴い、興味記号列の最後の文字であると判明した場合は、トークンや割り込みを発生する）。
【０００７】
上記の処理は繰り返され、何れかの興味記号列の文字が後に検出される毎にその状態が変更される。つまり、初めの文字が興味記号列の初めの文字として興味の対象である場合は、ＦＳＭの状態が新たな状態に進められる（例えば、初期状態０から状態１）。その文字が興味対象でない場合は、状態装置は（一般に）同じ状態（例えば状態０）を特定することで同一に維持される、若しくは、状態テーブルのアドレスから返された状態テーブルエントリにおいて状態の更新を指示しない。可能性のある動作には、これに限られるものではないが、割り込みの設定、トークンの記録、およびポインタの更新が含まれる。その後、以後に続く文字につき処理が繰り返される。ところで、興味記号列が続けられており、ＦＳＭが状態０以外の状態（若しくは、興味記号列が未だ検出されていない、或いは現在続けられていることを表す他の状態）にある場合には、現在の記号列と一致せず、他の興味記号列の最初の文字と一致する文字が検出されることがある。このような場合に、状態テーブルエントリは、先に継続された記号列の断片または部分を示し、かつ識別するうえで、また、新たな記号列が完全に識別されるか興味記号列でないことが判明するまで、可能性のある新たな記号列を追跡するうえで好適な動作を示す。換言すると、興味記号列は、包み込まれていることがあり、状態装置は、他の興味記号列等の中にある興味記号列を検出できなければならない。このため、ＣＰＵは、ＸＭＬ（商標）文書の部分部分を何度も通読してＸＭＬ（商標）文書の解読（パース）を完了させなければならない。
【０００８】
ＸＭＬ（商標）や他の言語の文書は、上述した手法により１文字ずつ解読（パース）される。可能性のある対象記号列が認識される毎に、興味記号列が完全に識別され、或いは、可能性のある興味記号列と一致しない文字が検出されるまで（例えば、記号列が最後まで／完全に一致し、または文字が対象の記号列から外れたとき）、ＦＳＭは、様々な状態を経由して１文字ずつ処理を進める。後者の場合、一般に、初期状態、或いは他の対象記号列の始めの文字の検出に対応する状態に戻る他は、何ら動作が行われない。前者の場合、トークンが、入力文書内での開始アドレスとトークンの長さと一緒にメモリ内に記憶される。パーシングが完了するまでに、全ての対象が識別され、特定箇所の若しくは所定のプラットフォームに従う処理が開始可能となる。
【０００９】
探索は一般に複数の興味記号列について実行されるため、状態テーブルは、如何なる所定の状態からでも複数の変化を提供することができる。このアプローチによれば、包み込まれた記号列に便利良く適応しつつ、現在の文字を同時に複数の対象記号列に対して分析することができる。
【００１０】
以上のことから、ＸＭＬ（商標）文書のような文書のパーシングは、多数の繰り返しと、個々の繰り返しにおける多数のメモリアクセスとを要求することが判る。このため、一般用ＣＰＵにおける処理時間は、必然的に相当なものとなる。複数の記号列を取り扱うことの更なる主たる複雑さは、大きな状態テーブルを生成する点にあり、また、リアルタイムによるパケット処理からオフラインで取り扱われることである。しかしながら、これにより、入力文字データの取得、状態データの取得、および、文書中の個々の文字に関する種々のポインタおよび状態アドレスの更新のために、多数のＣＰＵサイクルが要求される。このため、ＸＭＬ（商標）文書などの文書のパーシングを行うにあたっては、他の処理に先んじてＣＰＵやプラットフォームが占有され、所望の処理に大きな遅れを生じさせるのが比較的通常である。
【００１１】
従来、一般用のハードウェアは、プログラミングを介して、専用のハードウェアの機能と同等の機能を実現し得ること、および、専用のハードウェアの管理および制御には固定負荷が少ないため、構成とプログラムが互いに正確に一致していたとしても、専用のデータ処理ハードウェアは、プログラムされた一般用ハードウェアよりも高速で機能するのが通常であることが認識されていた。それにもかかわらず、特定の処理のために専用ハードウェアに要求されるハードウェアリソースは、特に処理速度のゲインが最低境界付近にある場合には、法外に大きなものとなり得る。更に、専用ハードウェアは、必然的に機能上の限界を有しており、また、任意の組み合わせに係る任意の数の文字を探索する能力を提供するような特定のアプリケーションに対する十分な柔軟性においても制限がある。このため、専用ハードウェアが適当であるためには、処理速度において大きなゲインを提供しつつ、非常に本質的なハードウェア経済を提供しなければならず、これらの要求は、所望の処理機能において必要とされる機能上の柔軟性やプログラム可能性の程度が高まるに連れて、同時に適応することがより一層困難になっている。
【００１２】
この点に関して、システムセキュリティの問題が、接続可能性と、ＸＭＬ（商標）文書のような文書のパーシングに要求される処理時間の量との双方から生じている。一方では、相対的に高い優先度で非常に大きな処理時間を要求する何らかの処理は、幾つかの点において、システムやそのノードに対するサービス不能（ＤＯＳ）攻撃と似通っており、また、このような攻撃において用いうるツールともなり得る。
【００１３】
ＤＯＳ攻撃は、稼働状態にあるリソースを悪意をもって浪費させ、また、ついには過負荷状態とするために、システムに対してつまらない奇形のサービス要求を頻繁に与える。ハードウェアアクセラレータの適正な構成は、稼働状態にあるリソースが過負荷状態となる可能性を大幅に低減し、または除去することができる。更に、システムは、過負荷状態である場合に、しばしば異常となり、或いはセキュリティの弱点を露出する。このため、過負荷を除去することは、セキュリティ上、重要な考慮事項である。
【００１４】
更に、状態テーブルは、システムパフォーマンスの深刻な低下を伴うこと無しに、保証することが困難若しくは不可能な基礎レベルにおいてＣＰＵのコマンドを含むことができなければならないため、パーシングが終了する以前から、幾つかの処理は開始することができ、また、幾つかのコマンドは実行することができる。つまり、セキュリティの低下の可能性は、ＸＭＬ（商標）パーシングなどを処理するための処理時間の短縮により、必然的に低減される。
【発明の開示】
【００１５】
この発明は、要求されるハードウェアやメモリの量を限定しつつ、ＸＭＬ（商標）文書のような文書のパーシング処理を加速するための専用プロセッサ、および結合ハードウェアを提供する。
本発明のこれらおよび他の能力を達成するため、文書メモリと、文書中の文字に対応するアドレスを含む文字パレットと、文字に対応する複数のエントリを含む状態テーブルと、状態アドレス若しくはオフセットを含む次状態パレットと、トークンバッファとを備え、前記状態テーブルのエントリは、前記次状態パレットにおけるアドレスとトークンのうち少なくとも一つを含むハードウェアパーサアクセラレータを提供する。
【図面の簡単な説明】
【００１６】
以上の、および他の事柄、様相および効果は、以下に続く好ましい実施形態の詳細な説明と、図面の参照により一層理解することができ、図面には以下の事項が記載されている。
【図１】図１は、文書のパーシングに用いられる状態テーブルの一部を表す。
【図２】図２は、本発明に係るパーサアクセラレータを、高度に概要化した図である。
【図３】図３は、図２に示す文字パレットの好ましいフォーマットを示す。
【図４】図４Ａおよび図４Ｂは、図２に示す発明の好ましい形態における状態テーブルのフォーマットと、これと結合して用いられる状態テーブル制御レジスタとを示す。
【図５】図５は、図２に示す次状態パレットの好ましいフォーマットを示す。
【図６】図６は、図５に示すトークンの好ましいフォーマットである。
【発明を実施するための最良の形態】
【００１７】
以下、図面、より具体的には図１を参照して、そこには文書のパーシングに用いられる状態テーブルの一部の表示が示されている。図１に示される状態テーブルは、ＸＭＬ（商標）文書のパーシングに有効な状態テーブルの極小さな一部のみであり得ると共に、本質的に例示を意図したと解されるべきものである。ところで、ＸＭＬ（商標）文書は、ここでは、本発明に係るアクセラレータを利用して処理され得る論理データシーケンスの一つのタイプの例として用いられている。他の論理データシーケンスは、分担されたサーバコンピュータによる実行を意図したユーザ端末命令記号列のようなネットワークデータパケットの内容からも構築することができる。本発明中に、少なくとも表示した形式中には、状態テーブルの全ては物理的に存在しておらず、また、図１は、公知のソフトウェアパーサの動作の理解を容易ならしめるためにも用いることができるが、本発明との関係において、図１の如何なる部分も、従来技術と認められるものではない。
【００１８】
図１に示された状態テーブルの部分における多くのエントリが重複であることは、有益な注意点であり、図１に表されている状態テーブルの全体を収容するハードウェアが必要でないことも本発明を正しく理解するために重要である。反対に、本発明は、おそらくは専用のプロセッサを用いて、ソフトウェアの内部で実現することが可能であるが、ソフトウェアによるパーシングのために処理時間が増加する不利益は、ハードウェアにおける如何なる経済的可能性によっても正当化はされず、本発明に係るハードウェアの要求は十分に制限されている。
【００１９】
図１において、状態テーブルは、任意数の行に区分されており、それぞれの行は、状態に対応する基礎アドレスを有している。基礎アドレスの行は、解読（パース）される文書中の文字を表すのに用い得るコードの数；この例では、状態テーブルにおけるインデックスとして用いられる文字のための８ビット・バイトに対応する２５６行、に対応する数の列に区分されている。
【００２０】
図示された状態テーブルのエントリの幾つかの様相に注目することは、特に、図１に示された、状態テーブルのほんの小さな部分が、どのようにして多くのワードをサポートしているかの理解を伝えるうえで有効である。
【００２１】
１．図示された状態テーブルでは、状態０の行において、２つのエントリだけが、テストされた文字が如何なる興味記号列の初めの文字とも一致しないときに初期状態を維持する「状態０に残留」以外のエントリを含んでいる。状態１への進行を提供する単一のエントリは、全ての興味記号列が同じ文字で始まる特別な場合に対応している。他の状態への進行を提供する他の文字は、一般に、但し必須ではなく、状態１以外への進行を提供するが、他の文字を介して到達し得る同一の状態を更に参照することは、例えば、包み込まれた記号列を検出するために有効であり得る。｛状態０、ＦＤ｝に示すように「状態０に残留」にコマンド（例えば「特別割り込み」）を含ませることは、特別な単一文字に対する検出および実行に用いられる。
【００２２】
２．状態０より上の状態における「状態ｎに残留」は、普通に遭遇するような、例えば、コマンドの数値引数において遭遇することのあるような一つ以上の文字の潜在的な長期実行を通じて維持されるべき状態に備えたものである。本発明は、以下に詳細に説明するように、十分なアクセラレーションを提供するために、このタイプの文字記号列につき特別な取り扱いを提供する。
【００２３】
３．状態０より上の状態における「状態０へ移動」のエントリは、それまでに、整合する文字がいくつ検出されていたとしても、その記号列を、如何なる興味記号列とも区別する文字が検出されたことを知らせるものであり、また、パーシング処理を、他の興味記号列の探索を始めるためのイニシャル／デフォルト状態に戻すものである。（この理由のため、「状態０へ移動」は、一般に、突出して最も高い頻度で数多く状態テーブル中に表れるエントリである。）状態０への復帰は、パーシング処理を、区別の目安となる文字が検出された時点で追跡されていた記号列を開始していた文字に続いて文書中に存在する文字に復帰させる。
【００２４】
４．コマンドと「状態０へ移動とを含むエントリは、完結した興味記号列の検出の完了を示す。一般に、そのコマンドは、以後、記号列をオブジェクトと取り扱うことを可能とするためのトークンを（トークンのアドレスおよび長さと共に）記憶することである。しかしながら、「状態ｎへ移動」に伴うコマンドは、興味記号列と合致する可能性のある記号列の追跡を継続しながら、中間点において処理を発動するためのものである。
【００２５】
５．探索が２つの興味記号列（例えば、ｎ−１個の同一の始めの文字とｎ番目の異なる文字、或いは、異なる初めの文字を有する記号列）に枝分かれする全ての点で不明確さを回避するためには、一般に、｛状態１，０１｝および｛状態１，ＦＤ｝に示すように、異なる（非連続な）状態に進むことが必要である。任意の長さｎの記号列の識別を完了させるには、特別な文字を含む記号列および共通する初めの文字を有する興味記号列が含まれる特殊な環境を除いて、ｎ−１の状態を必要とする。これらの理由により、興味記号列の数が比較的多くない場合であっても、状態および状態テーブルの行の数は、通常、著しく大きなものとなる。
【００２６】
６．これまでのパラグラフに反して、殆どの状態は、一つか二つの特有なエントリとデフォルトの「状態０に移動」とによって完全に特徴付けられる。図１に示す状態テーブルが有するこの特徴は、本発明において、ハードウェアの高度な経済性と、興味記号列の一般的な場合に対するパーシングプロセスの相当なアクセラレーションとを生み出すために利用される。
【００２７】
以上から判るように、パーシング処理は、従来から実行されていたように、図１において状態０と示されている所定のデフォルト／イニシャル状態にあるシステムで開始され、その後、処理の繰り返しに伴って整合する文字が発見されるに従って、より数の大きな状態に進行する。興味記号列が完全に識別された際、或いは、整合の可能性のある記号列の途中において特別な処理が特定された際に、トークンの記憶や割り込みの発生などの処理が実行される。しかしながら、文書の個々の文字に対する個々の繰り返しにおいて、その文字がＣＰＵメモリから読み出されなければならず、状態テーブルのエントリが（再びＣＰＵメモリから）取り込まれなければならず、また、（例えば、文書の文字および状態テーブルの基礎アドレスに対する）種々のポインタが連続処理の中で更新されなければならない。従って、そのパーシング処理は、多大な処理時間を消費し得るものとして即座に評価し得るものである。
【００２８】
本発明に係るパーサアクセラレータ１００を高度の概要化したブロック図を図２に示す。当業者にとって、そのように評価されるように、図２は、本発明においてパーシングを実行するために実行される工程を示すフローチャートとしても理解することができる。図３、図４Ａ、図４Ｂ、図５および図６を参照して以下により詳しく説明するように、本発明は、僅かながら時間的なずれを伴って本質的には並列に作動するような複数のハードウェア経路が達成されるように、状態テーブルを表すにあたり、幾つかのハードウェア経済を利用する。このため、並列で作動させられる高速アクセスのハードウェア、および、状態テーブルと文書との関係でのＣＰＵメモリからの先行取得の双方を通じてメモリアクセスに必要とされる時間を大きく低減しつつ、ポインタおよびレジスタの更新は、ほぼ同時に、かつ、他の処理と同時発生的に行うことができる。
【００２９】
一般的な概観として、ＸＭＬ（商標）文書のような文書は、レジスタ１１２，１１４により索引付けられたＤＲＡＭ１２０中に外部的に記憶され、複数経路のためのマルチプレクサとして機能する入力バッファ１３０に、好ましくは３２ビットのワードで転送される。個々の経路は、文字パレット１４０、状態テーブル１６０、および次状態パレット１７０の写しを有しており、それぞれが、状態テーブルの部分の圧縮形式を収容している。次状態パレット１７０の出力は、状態テーブル１６０におけるエントリを指すアドレスである次状態アドレスの部分と、もし存在すれば、記憶されるべきトークン値との双方が含まれる。文字パレット１４０および次状態パレット１７０における動作は、互いに並列に、かつ、状態テーブル１６０（これもキャッシュとしても実現され得る）を形成する高速外部ＳＲＡＭへの単純なメモリアクセスとも並列に動作することのできる高速内部ＳＲＡＭへの単純なメモリアクセスである。従って、これらのハードウェア要素を始めに制御するＣＰＵのほんの僅かな数クロック周期だけで（しかし、そのハードウェア要素は、一度起動すると、文書データをリフレッシュするため、およびトークンを記憶するためのＣＰＵによる偶発的なＣＰＵ処理の呼び出しのみに対して自律的に作動する）、文書中の個々の文字を評価することができる。ＣＰＵにおける一文字当たりの全メモリ処理の継続の積算における低減と、高速ＳＲＡＭ或いはＤＲＡＭにおいて自律的に行われる単独のメモリ処理の継続に対するＣＰＵの固定負荷との和がアクセラレーションによる基礎ゲインである。
【００３０】
ところで、ここで「外部」と称されるメモリ構成は、メモリ１２０，１４０の構成の暗示を意図したものであり、必要とされる記憶容量、並びに、ハードウェアパーサアクセラレータから、および／またはホストＣＰＵからのアクセスの視点において、現時点で発明者が好ましいと思うものである。換言すると、メモリの分配、或いは、少なくともホストＣＰＵ並びにハードウェアアクセラレータによるメモリへのアクセスを容易ならしめるように本発明に係るパーサアクセラレータのアーキテクチャを提供することは、トークンや他の処理を取り扱ううえで効果的である。この説明の観点より、意図しない他の暗示や、同期ＤＲＡＭ（ＳＤＲＡＭ）のような種々のハードウェアの変形例は、当業者にとって理解可能であると思われる。
【００３１】
以下、図３乃至図６を参照して、文字パレット１４０、状態テーブル１６０、次状態パレット１７０および次状態、並びにトークンのフォーマットを、図２の好適な実現をサポートするハードウェア経済の例示として説明する。他の技術／フォーマットも使用が可能であり、また、示されたフォーマットは、現時点で好ましいものではあるが、あくまで例示として理解されるべきものである。
【００３２】
図３は、興味記号列に含まれ、或いは含まれ得る文字に対応する文字パレットの好適な形式を示す。このフォーマットは、好ましくは、図１に示す状態テーブルの列の数に対応して、０−２５５の数字が付されたエントリを提供する。（「パレット」の用語は、多分に、サポートされている個々の色のデータを含み、総じて全域と称される「色パレット」の用語の場合と同じ感覚で用いられている。パレットの使用により、状態テーブルのエントリ／列が低減される。）例えば、状態を変化させることのない「空文字」と称される文字は、多くの列を要することなく、状態テーブルの一つの列中に表すことができる。１４４において空文字出力をテストすることが望ましく、そのテストによれば、状態テーブルにアクセスするための更なるメモリ処理を必要とすることなく次の文字の即座処理が許可されることから、パーシングの処理を相当に加速することができる。そのフォーマットは、例えば、特定の文字パレット（図２中に、重なり合うメモリ面で図示）に関連付けられた基礎アドレスレジスタ１４２中のデータ等により構成された単一のレジスタ、或いはメモリ中の複数位置により収容することができる。文書（例えばＸＭＬ（商標）文書）から提供された現在の８ビット文字、つまり、外部ＤＲＡＭ１２０からの４バイトのワードとして受け取られてインプットバッファ１３０から提供された４つのうちの一つにより文字パレットのエントリのアドレスが指定され、文字パレットは、次いで、状態メモリに入るインデックス、若しくは、ポインタの一部として、アドレスを出力する。このため、このようなフォーマットをパレットに提供することにより、図１に示す機能の一部を、比較的容量が制限された単一のレジスタの形式中に持たせることができ、その結果、それらを複数形成して、並列に作動させる一方で、本質的なハードウェア経済を維持し、かつ、状態テーブル１６０内の他の要素をサポートすることができる。
【００３３】
図４Ａは、文字パレット（例えば、実質的にはレジスタ）に類似するように構築或いは構成された好ましい状態テーブルのフォーマットを示す。図３に示す文字パレットとの主たる相違は、レジスタの長さが、要求された文字に対する応答の数と、興味記号列の数および長さに依拠している点である。従って、経済的に配置されていた内部メモリの量が特定の場面で不十分である際には、このメモリをＣＰＵまたは他の外部ＤＲＡＭ（おそらくは内部または外部のキャッシュと共に）内に実現するための可能性を準備しておくことが好ましいと考えられる。とはいえ、図１に示す状態テーブルにおける多数の重複エントリが単一エントリに、つまり、図３に示す文字パレットに従って上記のように提供されるデータに収容されるアドレスに低減されていることから、本質的なハードウェア経済が提供されていることは明らかである。状態テーブル１６０の出力は、１、２または４ビットであることが望ましいが、３２ビットまでの変形は、図４Ｂを参照して以下に説明するように、より大きな柔軟性を提供し得るものである。
【００３４】
図４Ｂを参照して、この後者に関する本発明を完成させる特徴として、本発明の好ましい実施形態は、特に状態テーブル１６０が３２ビットの出力を発する場合に、更なる本質的なハードウェア経済を実現する状態テーブル制御レジスタ１６２を含むものである。特に、その状態テーブル制御レジスタは、状態テーブルに、可変長のワードの記憶と読み出しを可能ならしめることにより、状態テーブルの情報の圧縮に備えることができる。
【００３５】
より具体的には、状態テーブル制御レジスタ１６２は、図４Ａに示す状態テーブルにおける個々のエントリの長さを記憶し、また、提供する。図１に示す状態テーブルのエントリは、高度に重複しているため（例えば、「状態０へ移動」、「状態ｎに残留」）、これらのエントリは、状態テーブル１６０中に単一のエントリで、若しくは、少なくとも図１に示すより十分に少ない数で表すことができるのみならず、より少ないビットで、おそらくは、ある種の状態テーブルにおいては便利であることが認められるように、重複エントリの大部分若しくは全てがその状態テーブルに含まれる場合であっても、本質的なハードウェア経済を実現することができる程度に少ないビットで表すことができる。この低減の原理は、当業者にとっては、所謂エントロピーコーディングと類似するものとして理解することができる。
【００３６】
以下、図５を参照して、次状態パレット１７０の好ましいフォーマットを説明する。次状態パレット１７０は、好ましくは、上述した文字パレット１４０とほぼ同様の手法で実現される。しかしながら、状態メモリ１６０の場合と同様に、要求されるエントリの数は、既知でなく、個々のエントリの長さは、好ましくは、より十分に大きなものである（例えば、２つの３２ビットワード）。他方、如何なる所与の時間においても、比較的小さく、かつ、予測可能なアドレスの幅だけが収まれば足りるため、次状態パレット１７０は（例えば、次状態パレット基礎アドレスレジスタ１７２を用いて）キャッシュとして作動させることができる。更に、状態テーブル１６０から３２ビットの出力が提供される際には、それらのデータの幾つかは、次状態パレット１７０のエントリ内のデータを補い、可能であれば後者のエントリの短縮を許容し、或いは、可能であれば、破線１７５で示すように、次状態パレットを完全にバイパスする。
【００３７】
図５に示すように、次状態パレット１７０から出力された下方アドレスの３２ビットワードは、格納されるべきトークンである。このトークンは、好ましくは、８ビットの制御フラグ、並びに、何れも記号列の開始に対するポインタ１９２により提供されたアドレスにおいて、かつ、成功した文字比較のカウントにより蓄積した長さと一緒にトークンバッファ１９０に記憶される、１６ビットのトークン値および８ビットのトークンフラグとして形成される。制御フラグは、ホストＣＰＵ、或いはパーサアクセラレータ中の制御処理に対して割り込みをセットする。後者の制御フラグのうち一つは、好ましくは、既に言及したように、興味記号列内に生じ得る任意の長さの文字と同一または関連する記号列のように、状態０以外の状態において状態を変化させる原因とならない文字のスキップ可能化機能をセットするために用いられる。このような場合においては、次状態テーブルのエントリは、ＳＲＡＭ／ＤＲＡＭから読み取ってくることなく、再び用いることができる。入力バッファアドレス１１２は、追加の処理を伴わずにインクリメントされ、特定の文字記号列に対するパーシングの更なる本質的な加速が実現される。第２の３２ビットワードは、レジスタ１８０および加算器１５０にフィードバックされ、文字パレットから出力されるインデックスと連結されて、次の文字のための状態テーブルに対するポインタを形成するアドレスオフセットである。状態０に対応する初期アドレスは、レジスタ１８２によって供給される。
【００３８】
このため、文字パレット、簡略形式での状態メモリ、および次状態メモリの使用は、従来の状態メモリ処理を、区分された段階に明確化し、それぞれの段階は、相対的に小さく、かつ高速であり、それ故に重複が可能であり、文書中のそれぞれの文字を、他の処理およびトークンの格納と共に、順番に、かつ並列に処理する並列経路を構成し得るメモリを用いて、著しく高速に実行することができる。従って、そのパーシングプロセスは、他の文字の処理が開始される以前にこれらの機能の全てを順番に実行する専用プロセッサとの比較においてさえ相対的に大幅な加速を実現することができる。
【００３９】
要約すると、アクセラレータは、文字データ（場合によってはネットワークへの送信の意味を含んでパケットデータと称される）と状態テーブルが配置されているホストＣＰＵのプログラムメモリにアクセスする。アクセラレータ１００は、メモリマップ化されたレジスタを介してメインＣＰＵにより制御される。アクセラレータは、メインＣＰＵに割り込みをかけて、例外、警告、および終了を示すことができる。パーシングが開始されると、ポインタ（１１２，１１４）が、分析されるべき入力バッファ１３０のデータの最初、終わりにセットされ、使用されるべき状態テーブルが基礎アドレス１８２により示され、更に、他の制御情報（例えば、１４２）がアクセラレータ内に設定される。
【００４０】
アクセラレータの処理を開始するため、ＣＰＵは、アクセラレータのコマンドを発し、アクセラレータは、これに応えてＣＰＵのプログラムメモリ（例えば１２０またはキャッシュ）から最初の３２ビットワードのデータを読み込み、これを入力バッファ１３０に置き、最初のバイト／ＡＳＣＩＩ文字はそこから選択される。アクセラレータは、現在の状態と入力文字に対応する状態情報（つまり、図４Ａは、図１に示す全状態テーブルの単一文字または単一列に対応する）を読み込む。状態情報は次状態アドレスと、ＣＰＵの割り込みや処理の終了などのような実行されるべき特別な情報を含んでいる。このため、状態情報の更新は、単一の記号列の検出のみならず、上述した通り、包み込まれた記号列や、文書中のワードやフレーズのテキスト等の記号列の連続或いは対応するトークンなどの検出をも支援している。上記の割り込み及び又は例外は、それらに応えて発生され得るものであり、パーサの内部制御およびトークンの発生に限られるものではなく、欲しない電子メールの遮断や、異議の生じ得る事項の通過防止や、コンテンツ・ベース・ルーティング（content-based routing）など、他の機能を提供するための他のプロセスを開始するための警報その他を生成するものであってもよい。
【００４１】
アクセラレータは、次に、入力バッファ１３０から、分析されるべき次のバイトを選択し、加算器１５０に対して既に提供可能となっている新たな状態情報を用いて処理を繰り返す。その処理、またはトークン情報の格納は、同時に実行することができる。この動作は入力ワードの４つの文字の全てが分析されるまで継続される。次いで（或いは、先行取得により４つ目の文字の分析と同時に）、文書バッファ１２０が終わりに達しているかを判断するためにバッファ１１２，１１４が比較され、そうであった場合は、ＣＰＵに割り込みが送り返される。そうでない場合は、新たなワードが取り込まれ、バッファ１１２が更新され、処理が繰り返される。
【００４２】
ポインタとカウンタは専用ハードウェア内に実現されるため、それらは、ソフトウェア内に実現される場合に要求されるような直列的にではなく、並列的に更新することができる。この構成によれば、１バイトのデータの分析時間が、特定部の入力バッファから文字を取り込み、高速の特定部文字パレットメモリから状態テーブルアドレスを生成し、メモリから対応する状態テーブルのエントリを取り込み、再び特定部の高速メモリから次状態情報を取り込むのに要する時間に短縮される。これらの処理の幾つかは、別個の並列経路内で同時に実行することができ、状態テーブル情報の中で特定された他の処理（部分的に或いは全体的に次状態パレットを通じて提供される）は、更なる文字の分析を継続しながら実行することができる。
【００４３】
これより、本発明が、小さく経済的な量の専用ハードウェアを通じてパーシング処理に本質的な加速を提供することが明らかに理解される。パーサアクセラレータがＣＰＵに割り込みをかけ得る一方、パーサアクセラレータに対する初めのコマンドの後に、処理動作は完全にそこから除去される。
【００４４】
本発明は単一の好ましい実施形態に関して説明されているが、添付のクレームの精神及び範囲の内部で本発明に修正が施せることは当業者にとって理解の範囲である。
【図１】
2006505043.tif 000003
【図２】
2006505043.tif 000004
【図３】
2006505043.tif 000005
【図４】
2006505043.tif 000006
【図５】
2006505043.tif 000007
【図６】
2006505043.tif 000008
【国際調査報告】
2006505043.tif 000009
2006505043.tif 000010
2006505043.tif 000011