JP2006505043A - ハードウェアパーサアクセラレータ - Google Patents

ハードウェアパーサアクセラレータ Download PDF

Info

Publication number
JP2006505043A
JP2006505043A JP2004548349A JP2004548349A JP2006505043A JP 2006505043 A JP2006505043 A JP 2006505043A JP 2004548349 A JP2004548349 A JP 2004548349A JP 2004548349 A JP2004548349 A JP 2004548349A JP 2006505043 A JP2006505043 A JP 2006505043A
Authority
JP
Japan
Prior art keywords
state
character
palette
state table
document
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004548349A
Other languages
English (en)
Inventor
ミカエル シー ダップ
エリック シー レット
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lockheed Martin Corp
Original Assignee
Lockheed Martin Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/331,315 external-priority patent/US20040083466A1/en
Application filed by Lockheed Martin Corp filed Critical Lockheed Martin Corp
Publication of JP2006505043A publication Critical patent/JP2006505043A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Document Processing Apparatus (AREA)
  • Image Generation (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

XML(商標)文書のような文書のパーシング処理に専用ハードウェアを用いて、ホストCPUの実質処理負荷を除去しつつ時間を大幅に低減する。従来の状態テーブルの使用を、文字パレット、簡略化された状態テーブル、および次状態パレットに分割する。それらのパレットは、専用の高速メモリ内に実現することができ、簡略化された状態テーブルへのアクセルを加速するためにキャッシュ装置が使用し得る。処理は、部分的に同時発生することのある並列の経路内で実行される。専用のレジスタもまた並列的に更新することとしてもよく、文書のパーシングを更に加速するために、フラグビットの制御下で、文字パレットにより収容される任意長の特別な文字の記号列が特徴をスキップする。

Description

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

Claims (14)

  1. 文書のメモリと、
    前記文書中の文字に対応するアドレスを含む文字パレットと、
    前記文字に対応する複数のエントリを含む状態テーブルと
    状態アドレスまたはオフセットを含む次状態パレットと、
    トークンバッファとを備え、
    前記状態テーブル中の前記エントリは前記次状態パレットに入れるアドレスとトークンの少なくとも一つを含むパーサアクセラレータ。
  2. 前記文字パレット、前記状態テーブル、および前記次状態パレットは、経路を形成する請求項1記載のパーサアクセラレータ。
  3. 前記文字パレット、前記状態テーブル、および前記次状態パレットのそれぞれは、状態テーブル情報のそれぞれの部分を圧縮形式で有している請求項2記載のパーサアクセラレータ。
  4. 次状態パレットはエントリに入れるアドレスである次状態アドレス部分と記憶されるべきトークン値とを有する請求項1記載のパーサアクセラレータ。
  5. 状態の変化を結果しない記号列中の文字を検出するための手段を更に備える請求項1記載のパーサアクセラレータ。
  6. 状態テーブルにアクセスするための更なるメモリ処理を行うことなく次の文字を即座に処理するための手段を更に備える請求項5記載のパーサアクセラレータ。
  7. 前記経路はハードウェア内に実現されている請求項2記載のパーサアクセラレータ。
  8. 前記経路は、次状態アドレスを、前記文字パレットからの状態テーブルインデックスとに結びつけるループを形成する請求項2記載のパーサアクセラレータ。
  9. 興味記号列を識別するために電子ファイルをパーシングする方法であって、
    前記凶器記号列の部分を検出するためのループ経路を形成している文字パレット、状態テーブル、および次状態パレットに、状態テーブル情報のそれぞれを記憶するステップと、
    前記状態テーブルからトークン情報を取得するステップと、
    前記トークン情報を、前記興味記号列の部分の検出と並列して記憶するステップと、
    を含む方法。
  10. 興味記号列の順序を検出するステップと、処理を制御するために、前記順序を検出するステップに応えて特別トークンを発行するステップと、
    を更に有する請求項9記載の方法。
  11. 前記興味記号列の順序は、包み込まれた記号列を有する請求項10記載の方法。
  12. 前記興味記号列の順序は、文書中のテキストのワードまたはフレーズに対応している請求項10記載の方法。
  13. 前記更なる処理はメッセージの通過防止を実行する請求項10記載の方法。
  14. 前記更なる処理はコンテンツ・ベース・ルーティングを実行する請求項10記載の方法。
JP2004548349A 2002-10-29 2003-10-03 ハードウェアパーサアクセラレータ Pending JP2006505043A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US42177302P 2002-10-29 2002-10-29
US42177402P 2002-10-29 2002-10-29
US42177502P 2002-10-29 2002-10-29
US10/331,315 US20040083466A1 (en) 2002-10-29 2002-12-31 Hardware parser accelerator
PCT/US2003/031314 WO2004040446A2 (en) 2002-10-29 2003-10-03 Hardware parser accelerator

Publications (1)

Publication Number Publication Date
JP2006505043A true JP2006505043A (ja) 2006-02-09

Family

ID=32234359

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004548349A Pending JP2006505043A (ja) 2002-10-29 2003-10-03 ハードウェアパーサアクセラレータ

Country Status (6)

Country Link
EP (1) EP1579320A2 (ja)
JP (1) JP2006505043A (ja)
KR (1) KR20050072128A (ja)
AU (1) AU2003277249A1 (ja)
CA (1) CA2504652A1 (ja)
WO (1) WO2004040446A2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7665015B2 (en) 2005-11-14 2010-02-16 Sun Microsystems, Inc. Hardware unit for parsing an XML document
US7716577B2 (en) 2005-11-14 2010-05-11 Oracle America, Inc. Method and apparatus for hardware XML acceleration
US7665016B2 (en) 2005-11-14 2010-02-16 Sun Microsystems, Inc. Method and apparatus for virtualized XML parsing
US7596745B2 (en) 2005-11-14 2009-09-29 Sun Microsystems, Inc. Programmable hardware finite state machine for facilitating tokenization of an XML document
KR101231054B1 (ko) * 2008-12-19 2013-02-07 한국전자통신연구원 전용 하드웨어 엔진이 구비된 하드웨어 가속장치 및 그 방법

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60105039A (ja) * 1983-11-12 1985-06-10 Nippon Telegr & Teleph Corp <Ntt> 文字列照合方式
JPS62179083A (ja) * 1986-02-03 1987-08-06 Nippon Telegr & Teleph Corp <Ntt> 文字列照合方法
JPH01234930A (ja) * 1988-03-16 1989-09-20 Hitachi Ltd 文字列検索方法および装置
JPH04348469A (ja) * 1990-07-23 1992-12-03 Hitachi Ltd 文字列検索装置およびその方法
US5414833A (en) * 1993-10-27 1995-05-09 International Business Machines Corporation Network security system and method using a parallel finite state machine adaptive active monitor and responder
JPH1115836A (ja) * 1997-06-20 1999-01-22 Nec Ic Microcomput Syst Ltd 文字列探索用テーブル、その作成方法及び文字列探索方法
JP2001217720A (ja) * 2000-02-04 2001-08-10 Internatl Business Mach Corp <Ibm> データ圧縮装置、データベースシステム、データ通信システム、データ圧縮方法、記憶媒体及びプログラム伝送装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5193192A (en) * 1989-12-29 1993-03-09 Supercomputer Systems Limited Partnership Vectorized LR parsing of computer programs
US5511213A (en) * 1992-05-08 1996-04-23 Correa; Nelson Associative memory processor architecture for the efficient execution of parsing algorithms for natural language processing and pattern recognition
US5995963A (en) * 1996-06-27 1999-11-30 Fujitsu Limited Apparatus and method of multi-string matching based on sparse state transition list

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60105039A (ja) * 1983-11-12 1985-06-10 Nippon Telegr & Teleph Corp <Ntt> 文字列照合方式
JPS62179083A (ja) * 1986-02-03 1987-08-06 Nippon Telegr & Teleph Corp <Ntt> 文字列照合方法
JPH01234930A (ja) * 1988-03-16 1989-09-20 Hitachi Ltd 文字列検索方法および装置
JPH04348469A (ja) * 1990-07-23 1992-12-03 Hitachi Ltd 文字列検索装置およびその方法
US5414833A (en) * 1993-10-27 1995-05-09 International Business Machines Corporation Network security system and method using a parallel finite state machine adaptive active monitor and responder
JPH1115836A (ja) * 1997-06-20 1999-01-22 Nec Ic Microcomput Syst Ltd 文字列探索用テーブル、その作成方法及び文字列探索方法
JP2001217720A (ja) * 2000-02-04 2001-08-10 Internatl Business Mach Corp <Ibm> データ圧縮装置、データベースシステム、データ通信システム、データ圧縮方法、記憶媒体及びプログラム伝送装置

Also Published As

Publication number Publication date
KR20050072128A (ko) 2005-07-08
EP1579320A2 (en) 2005-09-28
WO2004040446A2 (en) 2004-05-13
AU2003277249A1 (en) 2004-05-25
CA2504652A1 (en) 2004-05-13
WO2004040446A3 (en) 2004-09-02

Similar Documents

Publication Publication Date Title
US7146643B2 (en) Intrusion detection accelerator
US20040083466A1 (en) Hardware parser accelerator
US20070061884A1 (en) Intrusion detection accelerator
KR101648235B1 (ko) 정합-데이터 보고 모듈을 갖는 패턴 인식 프로세서
US7080094B2 (en) Hardware accelerated validating parser
US7734091B2 (en) Pattern-matching system
CN107608750B (zh) 用于型式辨识的装置
JP6082753B2 (ja) ステートマシンにおけるデータ解析用の方法およびシステム
JP6126127B2 (ja) ステートマシンにおけるルーティング用の方法およびシステム
EP2668574B1 (en) Utilizing special purpose elements to implement a fsm
US20060259508A1 (en) Method and apparatus for detecting semantic elements using a push down automaton
US20040172234A1 (en) Hardware accelerator personality compiler
KR20120106978A (ko) 패턴 인식 프로세서에서 전력 소비를 줄이기 위한 방법들 및 장치들
JP2008507789A (ja) マルチパターン検索のための方法およびシステム
JP4203023B2 (ja) 再構成可能なセマンティックプロセッサ
JP2006505043A (ja) ハードウェアパーサアクセラレータ
CN100430896C (zh) 硬件解析器加速器
CA2504491A1 (en) Hardware accelerated validating parser
JP4061283B2 (ja) 字句をデータに変換する装置、方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090707

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091005

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091013

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091030

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091109

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100216