(57)【要約】全てでないとしても、妥当性検証パーシングに伴う大部分の処理および固定負荷をホストプロセッサから除去するために、ハードウェアにより加速された妥当性検証パーサを提供する。この除去は、一つには、トークンに基づく状態テーブル及びデータ辞書への並列アクセスにより、更には、それらからの出力のそれぞれを合成すること、及び、選択的にそれらの向かい先を再設定することによる。伝送制御ワード（ＴＣＷ）の一部は、状態テーブルを通って進むように用いられる。ＴＣＷの一部は、プラットフォームの独立性と内部使用可能性を支援するＸＭＬ（商標）のような言語によるテキスト文書に対応するツリー構造のデータオブジェクト（ＴＳＤＯ）の形成を制御するために用いられる。スタックは、要素の包み込みと要素の集合とに適応するために提供される。ＴＳＤＯの形成は、妥当性検証パーシングと並列に、同期的かつ自律的に実行されることができ、また、好ましい。
2006505044.tif 000002
【特許請求の範囲】
【請求項１】
プラットフォームの独立性と内部使用可能性を支援するコンピュータ言語によるトークン化されたテキスト文書のためのハードウェアにより加速された妥当性検証パーサであって、
トークンに従って、データ辞書および状態テーブルの双方からデータを取り出す手段と、
伝送制御ワードを形成するために、前記状態テーブル及び前記データ辞書からの前記データを合成する手段と、
前記状態テーブルから更なるデータを取り出すために、前記伝送制御ワードの部分を、他のトークンと合成する手段と、
前記伝送制御ワードの部分の制御下で前記トークン化されたテキスト文書に対応するツリー構造データオブジェクトを形成する手段と、
を備える妥当性検証パーサ。
【請求項２】
支援されている言語で定義された、包み込まれたデータ構造を支援する中の次の伝送状態を引き出すために、前記伝送制御ワードでスタックの動作を制御する手段を更に含む請求項１記載のハードウェアにより加速された妥当性検証パーサ。
【請求項３】
トークン化されたテキスト文書からデータ構造物を形成する手段を更に含む請求項２記載のハードウェアにより加速された妥当性検証パーサ。
【請求項４】
データ構造物を形成する前記手段は、要素及び属性バッファを含む請求項３記載のハードウェアにより加速された妥当性検証パーサ。
【請求項５】
トークン化されたテキスト文書からデータ構造物を形成する手段を更に含む請求項１記載のハードウェアにより加速された妥当性検証パーサ。
【請求項６】
データ構造物を形成する前記手段は、要素及び属性バッファを含む請求項５記載のハードウェアにより加速された妥当性検証パーサ。
【請求項７】
トークン化されたファイルの妥当性検証パーシングを加速方法であって、
トークンに従って、データ辞書および状態テーブルの双方からデータを取り出すステップと、
伝送制御ワードを形成するために、前記状態テーブル及び前記データ辞書からの前記データを合成するステップと、
前記状態テーブルから更なるデータを取り出すために、前記伝送制御ワードの部分を、他のトークンと合成する手段とを含む方法。
【請求項８】
次の伝送状態を引き出すために、前記伝送制御ワードでスタックの動作を制御するステップを更に含む請求項７記載の方法。
【請求項９】
入力ストリームが妥当な入力シーケンスの組の一つであることを検証するステップを更に含む請求項７記載の方法。
【請求項１０】
入力ストリームが、妥当な許容される入力シーケンスから逸脱する場合に通知を生成するステップを更に含む請求項９記載の方法。
【請求項１１】
入力ストリームが、妥当な許容される入力シーケンスから逸脱する場合に通知を生成するステップを更に含む請求項７記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ネットワークによって内部連結された個々のデータプロセッサにおいて、ＸＭＬ（商標）文書のような文書のパーシングと妥当性検証のために用いられる妥当性検証解読処理に関し、より具体的には、このような文書の妥当性検証を加速するためのハードウェア妥当性検証プロセッサに関する。
【背景技術】
【０００２】
ネットワークにおけるコンピュータとコンピュータの接続との間のディジタル通信の分野は、近年多様な形態で急速に発達し、ここ数年のパーソナルコンピュータの急増をもたらしている。この、相互連結、および遠隔処理の可能性における増加は、ネットワークシステム等における個々のコンピュータの有効能力および機能を大きく発展させた。それでもやはり、個々のコンピュータやシステムの使用、それらのユーザの好み、並びにコンピュータが用いられる際の技術の状態などの多様性は、個々の装置の能力や構成並びにそれらのオペレーティングシステムに、実質的な程度における多様性を生み出しており、「プラットフォーム」と総称されるこれらは、一般に、ある程度の範囲で、特にオペレーティングシステムとプログラミング言語のレベルにおいて、相互互換性を欠いている。
【０００３】
このプラットフォーム特性の非互換性、および、これと同時に生ずる通信および遠隔処理、並びにそれをサポートするに足る十分程度の互換性に関する要求は、結果として、プログラミングに関する対象と（本質、属性、および関係の基準システムを通して、多少とも一般化されたモジュールのグループとしてアプリケーションやデータを集めようというコンセプトを含む）、それを具現化するための多数のプログラミング言語とを発展させた。エクステンシブル・マークアップ・ランゲージ（ＸＭＬ；商標）は、このような言語であり、広く普及していると共に、任意の構成およびアーキテクチャを有するネットワークを介して文書として送信することができる。
【０００４】
このような言語において、特定の文字記号列は、特定のコマンドや識別に対応しており、特別な文字や他の重要なデータ（制御ワードと総称する）を含み、それらは、データや演算が事実上自身を識別し得るようにして、以後、それらが「オブジェクト」として取り扱われるようにするためのものであり、これにより、結びつけられたデータとコマンドは、言語の異なる相違するアプリケーションで用いられる適当なフォーマットとコマンドに変換されることができ、その結果、接続されたプラットフォームのそれぞれにおいて、特定の機械で所望の処理の実行をサポートするに足る互換性が生み出される。これらの文字記号列の検出は、パーシングとして知られる処理により実行され、センテンス等の表現の系統的配列（syntax）をそれらの構成部分に分解し、また、それらを文法的に表現する従来の手法に類似している。
【０００５】
ＸＭＬ（商標）文書をパーシングする際、中央処理ユニット（ＣＰＵ）の処理時間の大部分、おそらく殆どは、処理されている特定のＸＭＬ（商標）仕様に対して定義されている制御ワード、特定文字、および他の重要なデータを探すための文書の通読に費やされる。この処理は、典型的には、個々の文字を照会して、それが、例えば以下のような「＜ｃｏｍｍａｎｄ＞」、「＜ｄａｔａ  ｔｙｐｅ＝ｄａｔａｗｏｒｄ＞」、「＜／ｃｏｍｍａｎｄ＞」等を含む所定の興味記号列のセットに属しているかを判断するソフトウェアにより実行される。何れかの対象記号列が検出されると、トークンが、トークンの開始とトークンの長さのために、ポインタと共に文書中のその位置に記録される。これらのトークンは、文書の全てが解析（パース）されるまで蓄積される。
【０００６】
この処理には、トークンの集まりや文書中に表れる文字記号列が、全体として、明確、かつ内部において首尾一貫した文書を形成するように良好に構成されていることを確認するために、文書タイプ定義（ＤＴＤ）或いはＸＭＬ（商標）スキーマなどの仕様のような「文書モデル」に含まれる規則および定義に対して、トークンを評価するための処理が続かなければならない。この処理は、妥当性検証として知られており、一般には、上述した興味記号列を見つけるための処理と殆ど同じ手法で進められるが、文字を表す単一の８ビット（又はより長い）バイトではなく、複数バイトのシーケンスに対応する１６ビット（又はより長い）トークンを操作し、また、プラットフォームの独立性と内部接続可能性とを支援する、自己定義特性、並びに、ＸＭＬ、ＳＧＭＬ（商標；ＸＭＬ（商標）はこれを単純化したもの）及びＨＴＭＬ（商標；ＸＭＬ（商標）の特別な場合）などのような言語の特性を受け入れるために、トークンと、他のトークンの内容又は主張との一貫性をチェックする。
【０００７】
トークンを見つけるためのパーシング、および妥当性検証のためのパーシングは、一般的に、何れも、概念的にテーブルを基礎とする有限状態装置（ＦＳＭ）、若しくは、これらの興味記号列、又は、発見され、トークンにより表される要素間の一貫性を探索するための状態テーブルを用いて実装される。状態テーブルは、メモリ内に置かれ、文書中の文字やトークンの特別なパターンを探索するように設計されている。興味記号列を見つけるためのパーシングでは、現在の状態が状態テーブルに対する基礎アドレスとして用いられ、また、入力文字又はトークンを表すアスキー（ＡＳＣＩＩ）がそのテーブルのインデックスである。文字興味記号列は、要素、属性／属性リスト、又はデータなどのような幾つかのタイプのうちの何れかであり、また、要素は、単純な要素若しくは集合関数であることがあると共に、包まれた状態（ネスト）であることもある。妥当性検証のためのパーシングは、他の特定のトークンと関連している要素又はトークンと、それらの間の階層的関係とを判断するために、主として、与えられた文字記号列のタイプと包み込み（ネスティング）それ自体に着目する。
【０００８】
この処理の目的は、文書が、文書（例えば、ＸＭＬ（商標））の標準と合致し、かつ、全体として、ＤＴＤ又はＸＭＬ（商標）スキーマにより定義された正しい構造を有する妥当な文書であることを判断することだではなく、データの情報内容を完全に表す構造を有するツリー構造の文書オブジェクトのような階層的データ構造を生成することでもある。従って、興味文字記号列を見つけるためのパーシングは非常に時間を要し、かつ、プロセッサに大きな負荷を与えるものであるが、妥当性検証のためのパーシングは、より一層そのようなものである。つまり、例えば、ＸＭＬ（商標）データは、テキストによるものであり単なるデータではないが、そのデータ構造は、情報内容を表現するために自由に特定できる反面、このようなテキストから抽出されなければならないから、要求される処理が、特別に時間を要し、かつ、プロセッサに大きな負荷を与えるものであることは、容易に評価可能である。
【０００９】
同時に、多重の階層レベルを有し得る集合要素および柔軟な包み込みを適正に取り扱うために必要とされる処理の潜在的な複雑さは、局所コンピュータのＣＰＵにかかる処理負荷を低減するための、専用或いはハードウェアプロセッサの使用を複雑化する。つまり、一般用のプロセッサを制御するための無駄の低減それ自身に起因して、一般用プロセッサとの比較において、専用若しくはハードウェアプロセッサが、しばしば優れた処理速度を提供し得ることは一般に理解されているが、処理機能がより複雑化した場合に、或いは、柔軟性に関する要求する要求がより大きくなった状態で、専用プロセッサが、適切なもの足り得るのか、或いはパフォーマンスにおいて何らかの顕著な効果を提供するのかは、確証されたものではない。一般的に、機能の柔軟性に対する増加した複雑さ及び／又は要求には、適用の多様さや得られるパフォーマンスゲインによっては経済的な正当性を得ることができないハードウェアへの要求の増大によってのみ対応が可能である。妥当性検証のパーシングが、その要求処理時間にも関わらず、プログラムされた一般用コンピュータ上で実行されていたのはこのためである。
【発明の開示】
【００１０】
この発明は、実質的なパフォーマンスゲインが限定されたハードウェアに由来する、妥当性検証処理のためのハードウェアアクセラレータを提供する。
本発明のこれらおよび他の事項を達成するため、プラットフォームの独立性と内部接続性を支援するコンピュータ言語におけるトークン化されたテキスト文書のための、妥当性検証パーシングの加速方法、およびハードウェアにより加速された妥当性検証パーサは、トークンに従ってデータ辞書および状態テーブルの双方からデータを取得する装置と、伝送制御ワードを生成するために、状態テーブルおよびデータ辞書からのデータを合成する加算器と、状態テーブルから更にデータを取得するために伝送制御ワードの一部を他のトークンに合成する加算器と、伝送制御ワードの部分制御の下でトークン化された文書に対応するツリー構造のデータオブジェクトを形成するための論理とを備える。
【図面の簡単な説明】
【００１１】
以上の、および他の事柄、様相および効果は、以下に続く好ましい実施形態の詳細な説明と、図面の参照により一層理解することができ、図面には以下の事項が記載されている。
【図１】図１は、本発明に係るハードウェア妥当性検証パーサアクセラレータを、高度の概要化した図である。
【図１Ａ】図１Ａは、ツリー構造の文書オブジェクトの例の形式を明らかにする図である。
【図２】図２は、本発明に係る状態テーブルの好ましい論理レイアウトの図である。
【図３】図３は、状態テーブルエントリの好ましいフォーマットを示す図である。
【図４】図４は、本発明に係る図１の要素及び属性バッファの好ましい論理レイアウトを示す図である。
【図５】図５は、データ辞書エントリのフォーマットの好ましい例の図である。
【図６】図６は、本発明に係る伝送制御ワード（ＴＣＷ）の好ましい論理レイアウトを示す図である。
【図７】図７は、図１に概要が示された妥当性検証パーサアクセラレータの動作の概観を示すフローチャートである。
【図８】図８は、ＴＣＷ更新規則を実装するための本発明の動作を示すフローチャートである。
【図９】図９は、ＴＣＷ動作を示すフローチャートである。
【図１０】図１０は、ＴＣＷ動作を示すフローチャートである。
【図１１Ａ】図１１Ａは、ＴＣＷ動作を示すフローチャートである。
【図１１Ｂ】図１１Ｂは、ＴＣＷ動作を示すフローチャートである。
【図１１ＣＤ】図１１Ｃ及び図１１Ｄは、ＴＣＷ動作を示すフローチャートである。
【図１１Ｅ】図１１Ｅは、ＴＣＷ動作を示すフローチャートである。
【発明を実施するための最良の形態】
【００１２】
以下、図面、より具体的には図１を参照して、そこには高度の概要化された形式で、本発明に係るハードウェア妥当性検証パーサアクセラレータの概観が示されている。本発明は、ＸＭＬ（商標）文書が典型であるような、一般にテキスト形式をとるオリジナル文書において、文字記号列に対応するトークンの特性または設定が既に解読（パース）された文書に対して作動する。（本発明は、ＸＭＬ（商標）文書をパーシングするうえでの好ましい適用との関係で説明されるが、本発明の原理は、如何なるプログラム言語において具現化されているファイルのパーシングにも、特に、固定された、若しくはユーザによる定義が可能な規則に従って、オブジェクトとその構造を識別することが求められるオブジェクト指向のプログラム言語に対して適用することができる。）このトークン化された文書は、文書基礎アドレス、文書限界アドレス、及び文書次アドレスをそれぞれ含むレジスタ１１２，１１４及び１１６に従ってアクセスされるメモリ／バッファ１１０に記憶される。
【００１３】
トークンは、順番に取り込まれ、トークンバッファ１２０に記憶される。そして、トークンの一部は、加算器１３０に対するアドレスの部分（これは状態テーブル１６０に入るアドレスを提供する）、データ辞書１５０に入り、かつ、名前空間マッピングメモリ（異なる文書に関して同じ要素名を用いる、異なる製作者によって引き起こされる問題を回避するためのＸＭＬ（商標）の付随物であり、当業者によって十分に理解されているため、これ以上の説明は必要がない）１４０に向かうアドレスを提供するために用いられる。レジスタ１５２を介して、データ辞書１５０に入れる基礎アドレスを提供する名前空間マッピングメモリ１４０に関しては、レジスタ１４２からデフォルトのアドレスが提供される。
【００１４】
非常に高度に概要化された図１の残部を考えると、加算器１７０、伝送制御ワード（ＴＣＷ）レジスタ１８０、スタック１９０、加算器１３０、および状態テーブル１６０は、ループを形成しており、状態テーブルが一つの状態から他の状態へ進むのを許す矢印Ａにより一般的に表される。スタック１９０は、基本的に、包まれたトークンの評価に適合するため、および、要素間の親子の繋がり又は関係が正しく、かつ、良好に構成されているかを判断するために、トークンの順序を、それらが考慮される順序に入れ替えることを目的としている。スタックの制御は、現在のトークンに基づいて並列に引き出される状態テーブル１６０およびデータ辞書１５０からの情報の組み合わせに由来する。従って、スタック１９０は、ＸＭＬ（商標）のシンタックスの特定の特徴（例えば、集約関数）との適合を得るものとして考慮することができ、更なる説明は、後述する詳細な説明に譲ることとする。
【００１５】
このように、ループＡのおおよその機能は、次状態を含む状態テーブルから情報を引き出し、更なるデータを加算器１７０に加え、データを引き出し、ＴＣＷレジスタ１８０内の組み合わせ信号から、最終的なツリー構造データオブジェクト（ＴＳＤＯ）を制作するために、コマンド、割り込み、および制御信号をスタックし、並びに、レジスタ１９２および１９４内の次状態及び／又は基礎アドレスを、それぞれ次のトークンに加えることである。ＴＳＤＯへのノードの追加を提供するための制御信号の抽出は、現在のトークンの妥当性検証に対応しており、検出エラーは、割り込みの発行により表される。ＴＣＷは、基本的に、一定の更新を伴う状態テーブル１６０及びデータ辞書１５０からの制御フラグ及び状態伝送制御、並びに、適用された割り込み及びスタックの組み合わせである。
【００１６】
このように、ＴＣＷレジスタは、状態テーブルを通じての進歩の結果が、エラーを検出するための手法で、また、未だに一つのエラーも検出されていない間は、それぞれレジスタ３０２，３０４から供給される基礎及び限界アドレスに従って、要素及び属性バッファ２００に一時記憶されたデータによりＴＳＤＯ３００を適正に構成するための手法で制御されるように、状態テーブル１６０、および、許容されるトークンのシンタックスを表すデータ辞書１５０の内容の中から取り出された制御信号及びデータを、合成し、かつ、その向かい先を再設定するように機能する。このアーキテクチャによれば、そうしようとする意志において調整することのできる状態テーブルの内容を適合することにより、標準と、確立されたタイプの文書の定義とがデータ辞書として用いられることを支援することができる。アクセラレータ処理ユニット１００は、以下に説明する本発明の動作を統制することにつき、また、ＴＳＤＯを構築することにつき責任を有するものである。
【００１７】
アクセラレータ処理ユニットをインターフェースで連結し、本発明に係るハードウェアアクセラレータの動作の開始を制御するための用いられるホストプロセッサ４００も備わっている。ホストプロセッサの役割が、本発明のハードウェアアクセラレータの効果により低減されており、要求される動作が割り込みの供給のための単純なメモリアクセスだけであることが、以下の説明から評価される。本質的に、文書のシンタックスおよび包み込まれた要素および要素の集合に従うものに対応する、妥当性検証処理の固定負荷の全ては、実質的に、妥当性検証パーシングアクセラレータに移し替えられており、プロセッサの動作は、必要に応じて、ハードウェアアクセラレータ１００からの処理の呼び出しに応えることだけである。
【００１８】
以上の概観を前提として、ＴＳＤＯの一例の形成を示す図１Ａを参照して、本発明により実行される妥当性検証パーシング処理の目的であるＴＳＤＯ３００の一例を説明することは、本発明のハードウェアにより加速された妥当性検証パーサヲ理解するうえで有益である。ＴＳＤＯは、ＴＳＤＯメンバーレイアウト内に示すように、好ましくは、メンバー／ノード毎に、７つの要素（例えば、兄弟要素、子供要素、属性リスト、名前長、名前ポインタ、値長、および値ポインタ）を有する２重連結リストのデータ構造としてメモリ内に構成される。表示された要素の８行は、個々にＴＳＤＯのメンバーレイアウトに対応しており、このため、ＴＳＤＯの８つの個別のメンバーに対応しており、兄弟および親／子関係を示すために水平方向にオフセットしている。
【００１９】
２重連結リストを形成するために、幾つかの要素は、それぞれ、特定の又は同じタイプの、先の及び次の要素を含む、先の及び次のメンバーに対する２つのポインタｐ，ｎを含んでいる。このため、「次の兄弟要素ポインタ」は、現メンバーと同等にインデント処理されている次のメンバーを指す。同様に、ポインタは、属性リスト及びメンバーの属性に対して、或いはそれらから提供されている。「先の子供要素」は、親要素を指す。第３乃至第５行、および第２、第６および第７行に示すように、先及び次ぎのポインタは、兄弟要素の中で鎖を形成する。残りの要素は、現実のデータの長さ及び位置である。この情報より、図示されているように、現在のメンバー／ノードに従って５つの制御（例えば、親ノード、現要素ノード、現属性ノード、要素親、及び第１属性）が提供されることが望ましい。これらの制御は、基本的に、現メンバーが要素或いは属性であるかを追跡し、また、それらが存在しているノード、要素の属性リストの第１属性、直接関係のある親要素、およびルーツノードを追跡する。これらの制御に従うこととしれば、ＴＳＤＯの構造の中で、個々の情報片の性質を完全に、かつ、明確に定義しながら、ツリーを通読して、所望の情報の全てを配置することができる。
【００２０】
同様に、処理の行われているデータファイルの特徴を見直すことは、本発明を理解するうえで有効であり得る。ＸＭＬ（商標）の例においては、要素とデータは、本質的にテキストであるが、文書の異なるクラスに対して自由に構築することのできる規則に従うファイルの中で具現化される。テキスト文書において具現化される規則は、実際には、そのテキスト文書の妥当性検証に用いられ、かつ、必要ではないがテキストファイルから分離したものと考えることのできる「文書モデル」と呼ばれるファイルの中で要約される。その規則は製作者が自由に定義することができるが、幾つかの規則の標準セットが存在し、便利であることからしばしば利用されている。
【００２１】
ＸＭＬ（商標）文書、或いは、現時点で使用可能な何れかの他の文書が準拠している規則を定めたファイルは、他は現在開発中であるが、一般に幾つかの形式の中の一つに従う文書モデルと称される。文書モデルは、与えられた要素と結びつけられ属性と一緒に文書内に表れ得る要素を定義し、また、要素の親子関係、子要素が表れ得るシーケンス、及び子要素の数、並びに、要素が空であるか、若しくは、テキスト並びに属性のデフォルト値を含み得るか、などのような文書についての構造情報をも定義する。文書型定義（ＤＴＤｓ）は、ＸＭＬ（商標）文書モデルの記述の、良く知られた例である。
【００２２】
ＤＴＤ言語は、特に、ＳＧＭＬ（商標）文書の妥当性検証規則を定義するために開発されたものである。先に示唆した通り、ＸＭＬ（商標）はＳＧＭＬ（商標）を単純化したサブセットであり、ＤＴＤｓはＸＭＬ（商標）妥当性検証規則としても用いることができる。しかしながら、特定の文書、或いは文書のクラスの妥当性検証に要求される情報は、伝送或いは利用の形式に関わらず、同じでなければならないため、妥当性検証情報の表現形式間の変換は、理論上、相当に些細であるべきで、また、ＤＴＤｓに関する議論は、同じ情報の他の如何なる形式に対しても同様の適用されるべきである。さらに、非常に複雑で印刷記号に強く依存するＤＴＤｓのシンタックスの詳細は、本発明の原理に対して重要ではなく、詳細に説明する必要がない。
【００２３】
ＸＭＬ（商標）文書（及び、プラットフォームの独立性と内部使用可能性を支援する他の言語の文書）が、主としてデータ構造を提供し、そのデータ構造を使用するにあたり、選択的にデータにアクセスするために、プログラムによってそのデータを通読する能力が要求されることも、理解しておくべきである。ＸＭＬ（商標）文書を読むことができ、かつ、それらの内容および構造にアクセスすることのできるソフトウェアモジュールは、ＸＭＬ（商標）プロセッサ若しくはＸＭＬＡＰＩと称され、これらは、同じＡＰＩによる如何なる従順実装の下でも走ることができるように、受け入れられており、商業的に提供が可能であり、かつ工業的に標準化されているＡＰＩを用いることが、一般には、通常であり、かつ、推奨する実務ではあるが、製作者が自由に実装してもよい。
【００２４】
現在は、主として２つのＡＰＩが現時点での工業的な標準として取り扱われており、文書オブジェクトモデル（ＤＯＭ）と、ＸＭＬ（商標）用単純ＡＰＩ（ＳＡＸ）がそれである。より一般的であり、かつ、当業者は、これによりＳＡＸを用いて本発明を実現することが可能となることから、以下においては、ＤＯＭを参照して本発明を説明する。ＤＯＭは、ＸＭＬ（商標）文書の、メモリ内のツリー表現を基礎としている。ＸＭＬ（商標）文書がプロセッサにロードされると、プロセッサは、その文書を適切に表すメモリ内ツリー構造を構築しなければならない。（反対に、妥当性検証は、本質的に、適正に構成された文書に従うツリー構造を構成することである。）ＤＯＭは、また、ＸＭＬ（商標）ツリーをプログラムに基づいて通読し、かつ、その要素、値、及び属性を操作するために用いられるべきプログラムによるインターフェース（方法及び特徴の名前を含む）を定義する。換言すると、妥当性検証の過程で開発されるＴＳＤＯデータ構造は、ＤＯＭＡＰＩ又は他の単純ＡＰＩ、および文書の内容の使用を可能とする実装を支援する。
【００２５】
以上の説明を背景として、一般用のコンピュータ上でソフトウェアを用いて、内部操作の可能性を支援する言語で書かれたＸＭＬ（商標）または他の文書の妥当性を検証するための処理が、著しくプロセッサに負荷を与えるものであり、また、ＤＴＤなどの要素のそれぞれに特定された内容、構造およびシンタックスに関する多数の比較のために多数のメモリアクセスが必要であり、そのために遅くなっていることは容易に理解できる。ＤＴＤなどにおける要素の数は、理論上無制限であり、比較的単純なデータ構造においても何千となることがあり、一方で、属性、子要素、及び兄弟要素の数は、必要に応じて多数となり、また、データ文書は、容易に、所与の要素や属性の何百万という場合を含み得る。換言すると、一般用のプロセッサ上のソフトウェアが有しなければならない非常な一般性は、処理を多分に複雑化させ、また、負荷を発生させる。比較と、その比較を行うための規則が、図１に示すループＡにおけるトークンの高速連続評価と同時に、データ辞書の中に具現化されるＤＴＤ、及び、プロセッサの並列処理を制御するために高速で合成され、かつ、指向先が再設定される状態テーブルエントリの中に存在する信号の中に具現化されることから、本発明に係るハードウェアにより加速された妥当性検証パーサが、比較的少量のハードウェアで非常に高速での実行を可能とする比較的単純な一貫した経路的な手法でデータを取り扱うことは、比較において、以下の説明から判ると思われる。
【００２６】
図２を参照すると、状態テーブル１６０の論理レイアウトが概略的に示されている。状態テーブルは、特定のＤＴＤなどに従って構築されており、許される全ての要素を収容している。次状態は、（図３に示し、かつ、以下に説明するように）部分的に１６ビットのトークン値によって指し示される状態テーブルエントリのそれぞれにおいて特定されていることから、トークンが好適に次状態を含んでいることが理解されるべきである。図１に示すように、トークンバッファ１２０内の値（又は、その値の部分）は、加算器１３０において、状態テーブル内のエントリにアクセスするために、状態テーブルの基本アドレス及び次状態オフセットアドレスと組み合わされる。
【００２７】
特に、高速での格納要求を低減するために、状態テーブルの、状態テーブル基礎アドレスにより指し示された領域を提供し、次いで、トークン（パレット機構を用いることで最適化することができる）を用いて状態テーブルの領域の列を指し示し、また、次状態オフセットによって行を指し示すことが望ましい。このような場合には、アドレスの３つの部分を単純に連結することにより、例えば、それぞれのアドレス部分の供給源からレジスタの異なる部分を単純にローディングすることにより実行可能な完全アドレスを形成することができる。
【００２８】
状態テーブルの好ましいフォーマットを図３に示す。個々の状態テーブルエントリは、６４ビットの長さを有し、２つの３２ビットワードに分割されていることが好ましい。もちろん、当業者には明らかなように、他のフォーマットも用いることができる。
【００２９】
下位アドレスワードは、順番に、１６ビットのトークン値と、それぞれトークンフラグおよび制御フラグのための２つの８ビットフラグ領域とに区分されている。（トークンは、ここでその全体を参照として編入すると共に、その基礎原理に従う本発明の実施に対して、その形式中他の部分は特に重要でない、同時提出の米国仮特許出願６０／ ， （代理人記録番号ＦＳ−００７６／０２８９００５１ＰＲ）において記載されているハードウェアパーサアクセラレータと一致する手法で定義されることが望ましい。この点に関しては、しかしながら、トークン値は、状態テーブルの列を指し示すために既に使用されており、このために、リザーブ領域として設計されていることから、１６ビットのトークン値領域は本発明においてはある程度冗長とされている点に留意するべきである。）トークンフラグは、主として、包み込み、所与の要素が集合関数であるか否か、及びトークンにより表された要素のタイプを追跡するために提供される。その領域の８ビットが個々に表す個々のフラグは、それぞれ、包み込みのインクリメント、エレメントは集合関数、新要素名、要素値、属性名、属性値、要素の終わり、及び、包み込みのデクリメント、であることが望ましい。同様に、制御フラグ領域の個々のビットにより表される個々のフラグは、それぞれ、ホスト／メインプロセッサに対する終了割り込みセット、ホスト／メインプロセッサに対する特別割り込みセット、（リザーブ）、状態テーブルエンジン処理停止（図９及び図１０に示すように、これらの制御フラグはＴＣＷに複製される）、要素又は属性名の格納、要素又は属性値の格納、（多大に冗長ではあるが上記の編入した出願に記載されるハードウェアプロセッサアクセラレータと対応させるために含めており、ここではリザーブ領域となり得る文字パレットスキップ可能化、及び、現トークン、であることが望ましい。
【００３０】
状態テーブルからのこのデータは、加算器１７０において、データ辞書（ＤＴＤ、又はＸＭＬ（商標）スキーマなどに対応する）からのデータと、好ましくはそれらの連結として合成され、その結合結果の部分は、要素及び属性バッファに提供され；その好ましい論理レイアウトは、図４に概要的に示されている。データ辞書エントリの好ましいフォーマットは、図５に示す。
【００３１】
データ辞書は、好ましくは、ハッシュテーブルとして構成され、ハッシュキーは、１２５においてトークンから取り出される。データ辞書エントリのフォーマットは、１２８ビットの長さを有することが望ましい。そのエントリは、ＸＭＬ（商標）や、内部使用の可能性を支援する他の言語で記載された文書データが準拠している（べき）規則を記述するＤＴＤやＸＭＬ（商標）スキーマなどから取り出される。（当業者によって理解されるように、ＤＴＤやＸＭＬ（商標）スキーマなどの内部のテキスト情報が、外部の構成要素によってデータ辞書フォーマットに翻訳される。このため、翻訳を実行する現実の構造については、更に説明する必要がない。）１６ビットは、レジスタ１２０からの現トークンに対応するトークン値を保持し、妥当性検証パーサの適正な動作、特に、状態テーブルとデータ辞書との間の同期の内部チェックとして状態テーブルから取り込んだトークン値情報との比較に用いられる。（つまり、この比較は、通常動作においては必要でなく、検査またはデバッグの際に価値を発揮する。）４ビットは、スタックコマンドフラグのために準備されており、それらのうち３つが使用され（例えば、それぞれ、プッシュ、ポップ、パススルーのため）、一つがリザーブとされている。スタックコマンドフラグは、例えば、所与の要素によって要求される要素の包み込みや集合を表している。バイトを完成させる更なる４ビットは、これもリザーブである。８ビットは、タイプフラグのために準備されている。これらのビットは、要素と結合されるデータのタイプ（例えば、ブール代数、２値、小数など）を特定するために用いられる。タイプフラグ領域を用いると、８ビットで、２５６の異なる種類のタイプを特定することができる。タイプフラグ領域は、基礎原理に従うと本発明の動作に必要ではないが、要素データタイプに対する妥当性検証値の整合を向上させることができる。これらの領域には、それぞれ、状態テーブル基礎アドレスと、データパターン及びレンジ基準、並びに属性規則基準を提供する２つのポインタとを提供する３つの３２ビットワードが続いている。上記の領域のうち、現トークンと結び溶けられるスタックコマンドフラグ、タイプフラグ、および状態テーブル基礎アドレスは、ＴＣＷレジスタ１８０に向けられ、一方、その残りは、好ましくは、自由に走ることができ、かつ、非常に早い応答を示す特別目的の論理回路内で、トークン、及び／又は、文書（例えばＸＭＬ（商標））の関連テストとの比較に用いられる。
【００３２】
バッファに与えられた伝送制御ワード（ＴＣＷ）及びレジスタ１８０の好ましい論理レイアウトを図６に示す。バッファレジスタの使用は、理論上必要ではないが、望ましいと考えられ、このため、上記において示唆しているように、データと制御信号との指向先が再設定されるにあたって同期を確保するための単純で安価な方策として好ましい。ＴＣＷに与えられる信号の供給源と、それらの向かい先である、図１に示す妥当性検証パーサアーキテクチャのそれぞれの部分を観察することは、本発明を理解するうえで重要である。個々の領域の供給源／吸入場所の詳細は、図８乃至図１０に示す。
【００３３】
図６に示すＴＣＷの好ましい論理レイアウトは、データ辞書から受け取ってレジスタ１９４に受け渡す状態テーブル基礎アドレス１９４と、状態テーブルから受け取ってレジスタ１９２に受け渡す次状態オフセットとを含む３つの３２ビットワードを備えている。残りの３２ビットは、データ辞書から受け取ってスタック１９０の制御動作に用いられる４ビットのスタックコマンド領域と、４ビットの集合状態フラグ領域と（集合関数は、ツリー構造の異なるレベルの要素を含むことができるため、それらのうち２ビットだけが、現トークン及び／又は先のトークンが集合関数であるかを示すために用いられることが望ましい）、データ辞書から受け取る８ビットのタイプフラグ領域と（上記の通り、その取得は図８に示され、その利用は図１０に示されている）、状態テーブルから受け取って、図１０に示すようにＥＡＢ及びＴＳＤＯ処理の制御に用いられるトークンフラグ及び制御フラグのための２つの８ビット領域とを含んでいる。トークン値は、トークンバッファにおいて容易の提供が可能であるため、データ辞書トークン値領域は、データ辞書からも状態テーブルからも持ち込まれない（これらの値は、好ましく比較するものとする）。
【００３４】
図３Ａには、トークンの完全な定義が示されていることに留意するべきである。所定のトークンに（新たな要素名にセットされたトークンフラグと共に）結びつけられたトークンテキスト記号列のハッシュ値はデータ辞書を指し示すために用いられる。トークン値は、トークンに割り当てられた特別な数であり、状態テーブルの列を見つけるために用いられる。場合によっては、トークンが、文字通りの文字記号列、或いは整数値を表していることを示す一般的な値となる。他の場合には、要素名或いはタグ名のコード化された番号となる。
【００３５】
再び図４を参照して、ここでは、要素及び属性バッファ（ＥＡＢ）を十分に詳しく説明する。当業者によれば、アーキテクチャについての上記部分は、シンタックス、包み込み、及び集合関数についての追跡及び処理が完全に有限状態装置と本発明に係る関連するアクセラレータレジスタとによって取り扱われている一方で、ＥＡＢの全領域が、本質的に、メモリアクセスと、単純で、判りやすく、かつ、アクセラレータ処理ユニットにより高速で実行される比較とを備える処理によって満たされるように、データを提供可能な状態にしていると評価される。
【００３６】
特に、所与の解読（パース）された要素は、要素タイプ、及び属性タイプ又は値タイプの何れか一つとなることができ、それらは何れものＴＳＤＯ３００において異なった取り扱いを受けなければならない。ＥＡＢは、図１を参照して上記において示唆した通り、完了時に２重結合構造のＴＳＤＯを開発するために、（まだＴＳＤＯに置かれていない）特定のノードの周囲において属性又はデータを指し示す構造特定ポインタを集めて保持する。ＥＡＢの特定の領域を参照して、計数を開始し、また終了させる包み込み要素は、図３との関係で上述したトークンフラグ（例えば、第１および第８ビット）から直接的に計数／蓄積することができ、その一方で、個々のトークンに対応する、要素及び属性の名前基礎アドレス及び長さ、並びにそれらの値は、トークンバッファ１２０から容易に提供が可能である。ＴＳＤＯ３００の現ノードに対する、親子及び集合関係、並びにタイプ及び制御情報は、図６に示すようにＴＣＷから直接的に提供が可能であると共に、トークン化された文書の個々の要素／トークンの妥当性が検証される毎に新たなノードがＴＳＤＯに追加されるのを許容する。
【００３７】
ここで、図７を参照して、本発明に係るハードウェア妥当性検証パーシングアクセラレータの全ての動作を要約する。ハードウェアアクセラレータの動作は、上述した好ましいフォーマットのようなフォーマットに入れられて解読および妥当性検証の対象とされる文書に対応するデータを状態テーブル１６０およびデータ辞書１５０にローディングする（７０５，７１０）初期化によって開始される。妥当性検証の対象であるトークン化された文書が次にメモリ１１０にローディングされ（７１５）、スタック制御レジスタ及び状態テーブル基礎アドレスが初期化され（７２０，７２５）、更に、次状態オフセットが初期状態にセットされる（７３０）。
【００３８】
トークン化された文書の処理は、第１（又は次の）トークンをトークンバッファ１２０に抜き出す（７３５）ことにより開始される。トークンはデータ辞書検索処理に用いられるハッシュキーにハッシュ化（乱数化）される。次に、検索処理７４０が、データ辞書基礎アドレスを更新するためにメモリ１４０内で実行され、これにより、そのデータ辞書基礎アドレスに対応するデータ辞書１５０における検索処理７４５の実行が可能となる。新たなトークンと、加算器１３０を介して提供された状態テーブルレジスタ１９２及び１９４の現在の内容とを用いて、状態テーブルは、同時にアクセスされ得る７５０。次に、加算器１７０を介して、ＴＣＷレジスタが、以下に図８及び図９との結びつきにおいて詳細に説明する規則に従ってデータ辞書１５０及び状態テーブルから取り出されたデータに更新される７５５。次に、ＥＡＢ２００が、ＴＣＷ内のフラグ設定に基づく規則に従って更新される７６０。状態テーブルエントリに含まれる制御フラグに従って、ＴＣＷ内に割り込みフラグがセットされている場合には、ホスト／メインプロセッサに対して、割り込みが同時に送信され得る。割り込みが発せられない場合は、ＥＡＢに集められた情報が、トークン、及び制御フラグの設定に基づく規則に従ってＴＳＤＯに加えられ７６５、これもまたアクセスされた状態テーブルエントリから取り出されたＴＣＷの中で、割り込みの発生がチェックされる７７０。多レベル集合関数（例えば、他のＸＭＬ（商標）要素により作られたＸＭＬ（商標）要素）を支援するためにプッシュ、ポップ、又はパススルー処理７７５が、スタック１９０の中で同時に実行される。データがスタック上にプッシュされない限り、スタックから新たな基礎アドレスと次状態オフセットデータとが出力され、レジスタ１９２および１９４が更新される７８０。ハードウェアアクセラレータはここで、以上の処理により、トークンの妥当性を検証しており、かつ、ＴＳＤＯにノードを加えており、また、ここで、上記の処理の繰り返しを通じて（シンタックス、包み込み、および要素の集合を適正に評価するために、レジスタ１９２，１９４において）次トークンにリセットされる。
【００３９】
ＴＣＷ更新規則は、極めて単純であり、図８に示される。第１に、トークンフラグ、制御フラグ、および次状態オフセット領域が、状態テーブルエントリからＴＣＷレジスタ／バッファにコピーされる８０５。次に、集合状態テーブルエントリの中で、「現要素は集合関数」フラグが「先の要素は集合関数」フラグの中にコピーされる８１０。「新要素名」フラグがトークンフラグ領域にセットされていたら（８１５）、「タイプフラグ」及び「状態テーブル基礎アドレス」領域がデータ辞書出力からＴＣＷ内にコピーされ８２０、トークンフラグ領域の「要素は集合関数」がセットされていたら（８２５）、「集合状態フラグ」領域内の「現要素は集合関数」フラグビットがセットされる８３０。そうでなければ、「現要素は集合関数」フラグがリセットされる８３５。トークンフラグ領域の「新要素名」フラグがセットされておらず、かつ、８４０において判定されるように、トークンフラグ領域内の「要素の終了」フラグビット及び「要素は集合関数」フラグビットがセットされていれば、図９に示すように、スタックコマンド領域の「ポップ」フラグビットがセットされ、かつ、状態テーブル基礎アドレス領域がクリアされる８４５。そうでなければ、スタックコマンド領域の「パススルー」フラグビットがセットされ、かつ、状態テーブル基礎アドレス領域がクリアされる８５０。
【００４０】
図９に示すように、割り込みを発生するために、現トークンに対応するエントリのために状態装置出力から直接取り出された制御フラグビットは、９１０又は９２０に示すように、ホスト／メインプロセッサに対して終了割り込み又は特別割り込みを与えるために、単純に追跡され（破線矢印で示すように）、又は並列にテストされる。同様に、９３０に示すように、（データ辞書１５０の出力から直接取り込んだ）スタックコマンドが「プッシュ」である場合は、状態テーブル基礎アドレス及び次状態オフセットがスタック１９０上に押され、かつ、状態テーブル基礎アドレスレジスタ１９２と次状態オフセットレジスタ１９４が、対応するＴＣＷ領域から更新される。スタックコマンドフラグが「ポップ」コマンドに対応する場合は、９４０に示すように、状態テーブル基礎アドレス及び次状態オフセット値がスタックから飛び出して、それぞれレジスタ１９２，１９４の更新に用いられる。パススルースタックコマンド領域フラグがセットされている場合は、９５０に示すように、スタック１９０において何ら処理が実行されることなく、レジスタ１９２，１９４が、ＴＣＷ領域のそれぞれから更新される。
【００４１】
図１０に示すように、ＥＡＢ及びＴＳＤＯの動作も、同様に、ＴＣＷ内のフラグによって制御されることが望ましい。１０１０に示すように、「要素の終了」トークンフラグがセットされており、かつ、「要素は集合関数」トークンフラグもまたセットされていた場合、ＴＳＤＯ処理が、以下に説明するように、子要素を完成させるために起動される。その他の場合は、「属性名の要素格納」フラグが、要素のタイプに基づいて適切な処理を開始するために、他のフラグとの組み合わせにおいて、それらのフラグに反映されるように、処理１０２０及び１０３０において用いられる（また、以下の説明においてセットされるものとする）。「新要素名」フラグが更にセットされていると（１０２１）、ＥＡＢ内の要素名基礎アドレスと要素名長領域とが、トークンバッファ１２０から更新され１０２２、また、ＥＡＢの内部で、要素値基礎アドレス及び長領域がクリアされる１０２３。「属性名」フラグがセットされていたら（１０２４）、属性基礎アドレス及び長領域がＥＡＢの内部でトークンバッファ１２０からリセットされ１０２５、また、属性値基礎アドレス及び長領域がＥＡＢの内部でクリアされる１０２６。「要素値」フラグがセットされていたら（１０３１）、トークンバッファから要素値基礎アドレス及び長領域が更新される１０３２，１０３３。「属性値」フラグがセットされていたら（１０３４）、属性値基礎アドレス及び長領域がトークンバッファ１２０から更新される１０３５，１０３６。要約すると、ＥＡＢ２００内の選ばれた領域が、要素のタイプに基づいて更新され、また、クリアされる。
【００４２】
「要素又は属性名格納、および「新要素名」の双方が上記の如くセットされており、かつ、ＴＣＷの集合状態フラグ領域に「先の要素は集合関数」フラグがセットされている場合は、「子要素追加」処理を開始する更なる処理が、以下に説明するように起動され、また、ＥＡＢの「要素包み込み開始カウント」領域がインクリメントされる。そうでない場合は、「先の要素は集合関数」フラグがセットされていなければ、ＴＳＤＯ内で「兄弟要素追加」の処理が起動される。
【００４３】
これに対して、「要素或いは属性格納」及び「要素値」フラグの組み合わせがセットされている場合は、ＴＳＤＯの内部で、「要素値更新」処理が以下に説明するように起動される。同様に、「要素或いは属性格納」及び「属性値」フラグの組み合わせはＴＳＤＯに「属性追加」処理を開始させる。
【００４４】
上記のように示唆した５つのＴＳＤＯ処理は、本発明に係るハードウェア妥当性検証パーサアクセラレータにより、上述した通り、一度開始されると、アクセラレータ処理ユニット４００の制御かで自律的に実行され得る。このような処理は、本発明により処理の加速を更に支援しながら、妥当性検証処理と同時に実行され得る。これらの処理は、全てが非常に単純であり、短く、かつ判りやすく、このため、存在したとしても小さなホストプロセッサ負荷を伴うだけで、迅速に実行することができる。
【００４５】
図１１Ａに示す「兄弟要素追加」処理は、新ＴＳＤＯエントリの割り当て、新たに割り当てられたエントリアドレスに対する現ノードの「次」ポインタの設定、現ノードに対する新エントリの「先」ポインタの設定、ＥＡＢ要素名基礎アドレス及び長領域の、新エントリ内の対応領域（図１Ａ参照）へのコピー、及び、ＴＳＤＯ制御の「現要素ノード」並びに「要素第１属性」を、それぞれ新エントリ及び空とする設定、を有している。図１１Ｂに示す「子要素追加」処理は、ＥＡＢの「包み込みレベル開始カウント」領域をインクリメントする追加のステップ１１１０の実行を除いて、「兄弟要素追加」の処理と同じである。
【００４６】
図１１Ｃに示す「子要素完成」処理は、ＴＳＤＯ制御領域の「現要素ノード」により指示されるエントリから開始し、兄弟要素「ｐ」ポインタを用いて、兄弟要素「ｐ」ポインタが空となるまで階層を上って、その点に形成されたＴＳＤＯ構造を通読することにより実行される。次に、ＴＳＤＯエントリの「子要素」「ｐ」ポインタをＴＳＤＯ制御領域の「現要素ノード」にコピーする。次いで、ＴＳＤＯ領域の「包み込みエントリ開始カウント」がＴＳＤＯ制御領域の「包み込みレベル終了カウント」にコピーされ、更に、ＴＳＤＯ制御領域の「包み込みエントリ開始カウント」がデクリメントされる。図１１Ｄに示す「要素値更新」ＴＳＤＯ処理は、ＥＡＢ領域の要素値基礎アドレス及び長を、ＴＳＤＯ制御領域の「現要素ノード」により指示されているＴＳＤＯエントリの「値ポインタ」および「値長」領域にコピーすることだけを含んでいる。
【００４７】
ＴＳＤＯ処理の「属性追加」は、新ＴＳＤＯエントリの割り当てと、属性名基礎アドレス及び長、並びに、属性値基礎アドレス及び長のポインタの、新たなエントリへのコピーにより開始される。それから、ＴＳＤＯ制御レジスタの「要素第１属性」が空である場合は（１１２０）、ＴＳＤＯ制御の「現属性ノード」が新ＴＳＤＯエントリを指示するためにセットされ、かつ、現ノードの「要素第１属性」が（例えば、「ｐ」ポインタが心エントリに追加される前に）新エントリにセットされる一方で、現ノードの「ｎ」および「ｐ」ポインタと新エントリが、上述したように連結される。要素第１属性が空でない場合は、現ノードの「ｎ」および「ｐ」ポインタと新エントリが連結されると共に、ＴＳＤＯ制御の「現属性ノード」が新たなＴＳＤＯエントリにセットされる。
【００４８】
以上の観点より、本発明は、ＸＭＬ（商標）や、内部使用可能性を支援する他の言語文書の、極めて高速な妥当性検証パーシングを提供する装置及び方法を提供し、その一方で、そのような処理動作と複雑な支援負荷とをホストコンピュータから除去し、その結果、妥当性検証パーシングの処理の相当な加速を実現していることが判る。その加速は、潜在的に、また、好ましくは、妥当性検証のためのパーシングと並列にＴＳＤＯを形成する自律処理、並びに、データ辞書と状態テーブル情報の並列取得によって特に支援されている。このような加速の提供に要求されるハードウェアは、非常に単純で、かつ、量において非常に制限されており、そのため、高価でなく、コスト的に高度に効果的である。
【００４９】
本発明は単一の好ましい実施形態に関して説明されているが、添付のクレームの精神及び範囲の内部で本発明に修正が施せることは当業者にとって理解の範囲である。
【図１】
2006505044.tif 000003
【図１Ａ】
2006505044.tif 000004
【図２】
2006505044.tif 000005
【図３】
2006505044.tif 000006
【図４】
2006505044.tif 000007
【図５】
2006505044.tif 000008
【図６】
2006505044.tif 000009
【図７】
2006505044.tif 000010
【図８】
2006505044.tif 000011
【図９】
2006505044.tif 000012
【図１０】
2006505044.tif 000013
【図１１Ａ】
2006505044.tif 000014
【図１１Ｂ】
2006505044.tif 000015
【図１１ＣＤ】
2006505044.tif 000016
【図１１Ｅ】
2006505044.tif 000017
【国際調査報告】
2006505044.tif 000018
2006505044.tif 000019
2006505044.tif 000020