JP4203023B2 - 再構成可能なセマンティックプロセッサ - Google Patents

再構成可能なセマンティックプロセッサ Download PDF

Info

Publication number
JP4203023B2
JP4203023B2 JP2004567407A JP2004567407A JP4203023B2 JP 4203023 B2 JP4203023 B2 JP 4203023B2 JP 2004567407 A JP2004567407 A JP 2004567407A JP 2004567407 A JP2004567407 A JP 2004567407A JP 4203023 B2 JP4203023 B2 JP 4203023B2
Authority
JP
Japan
Prior art keywords
parser
code
data
symbol
semantic code
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.)
Expired - Fee Related
Application number
JP2004567407A
Other languages
English (en)
Other versions
JP2006513667A (ja
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.)
Mistletoe Technologies Inc
Original Assignee
Mistletoe Technologies Inc
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
Application filed by Mistletoe Technologies Inc filed Critical Mistletoe Technologies Inc
Publication of JP2006513667A publication Critical patent/JP2006513667A/ja
Application granted granted Critical
Publication of JP4203023B2 publication Critical patent/JP4203023B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Devices For Executing Special Programs (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)

Description

本発明は、包括的にはデジタルプロセッサ及び処理に関し、特にデータストリーム処理のためのデジタルセマンティックプロセッサに関する。
伝統的なプログラマブルコンピュータは、フォン・ノイマン、すなわちVNアーキテクチャを使用する。VNアーキテクチャは、その最も単純な形態では、通常は、有用な操作を可能にする何らかの形態の入出力とともに、中央処理装置(CPU)及び付随するメモリを備える。たとえば、図1は、CPU30、メモリコントローラ40、メモリ50及び入出力(I/O)デバイス60を備えるコンピュータ20を示す。CPU30は、アドレス/制御バス42によりデータ要求をメモリコントローラ40に送出し、データ自体は、データバス44によって渡される。メモリコントローラ40は、メモリ50及びI/Oデバイス60と通信することにより、CPU30による(又は場合によってはI/Oデバイスによる)要求に応じてデータ読出し及び書込みを実行する。図示しないが、さまざまなデバイスがCPUに「割り込み」、タスクを切り替えさせる可能性もある。
VNマシンでは、メモリ50はプログラム命令及びデータをともに格納する。CPU30は、メモリからプログラム命令をフェッチし、そこに含まれるコマンドを実行する。通常の命令は、CPUに対し、データをメモリからレジスタにロードし、レジスタからメモリにデータを書き込み、そのオンボードレジスタのデータを使用して算術又は論理演算を実行し、又は異なる命令に分岐し実行を継続するように命令する。理解することができるように、CPU30は、命令をフェッチし、データをフェッチし、又はデータバス44によりデータを書き込むのに非常に多くの時間を費やす。有用であり得るデータ及び命令をキャッシュし、パイプライン化を実施し、平均メモリサイクル時間を低減するように入念な(且つ通常費用のかかる)方式を実施することができるが、結局のところデータバス44がプロセッサ性能におけるボトルネックである。
VNアーキテクチャは、「汎用」にすることができ、且つ比較的迅速に再構成することができるため、ゲートロジックに比較して魅力がある。すなわち、十分な時間があれば、プログラム命令の新たなセットを単にロードすることにより、非常に複雑な機能さえも実行するようにVNマシンの機能を変更することができる。VNアーキテクチャの柔軟性に対するトレードオフは、複雑性及び非効率である。このため、ほとんど何でも行うことができるということは、少しの単純なものを効率的に行うことができるということを犠牲にして成り立つ。
使用されているか又は近いうちに使用される多くのデジタル機器は、パケットプロセッサの一般カテゴリに入る。言い換えれば、これらの機器は、たとえばケーブル、ファイバ又は無線ネットワーク接続もしくはポイント・ツー・ポイント接続、バックプレーン等により、パケットを使用して別の1つ又は複数の機器と通信する。多くのかかる機器では、受け取られたデータを用いて行うことは簡単であるが、パケットプロトコル及びパケット処理は、専用ハードウェアの設計を保証するには複雑すぎる。代りに、かかる機器は、VNマシンを使用してプロトコルを実施する。
本明細書では、パケットプロセッサに対し、様々な魅力ある手法、すなわちより一般的には再構成可能セマンティックプロセッサ(RSP)と述べることができる手法があることが理解される。かかる機器は、その処理がその「プログラミング」に依存するため、VNマシンのように再構成可能であることが好ましいが、分かるように、この「プログラミング」はVNマシンが使用する従来のマシンコードとは異なる。VNマシンは常に、さまざまなデータ状態に関して逐次検査する1組のマシン命令を実行するが、RSPは、入力ストリームのセマンティクス(semantics)に直接応答する。言い換えれば、RSPが実行する「コード」は、その入力によって選択される。このため、パケット入力に対し、RSPは、定義された文法を用いて、高速且つ効率的なパケット処理に対して理想的に適合される。
本明細書で説明するいくつかの実施形態は、表駆動予測型パーサ、たとえばLL(最左の生成を識別することによる左から右への構文解析(Left-to-right parsing))パーサを使用してネットワーク文法のプロトコルの直接実行を駆動する。本発明の実施形態では、他の構文解析技法、たとえば再帰下降、LR(最右の生成を識別することによる左から右への構文解析)及びLALR(Look Ahead LR)を使用してもよい。各場合において、パーサは、単純な実行ユニットでマイクロ命令コードセグメントを起動することによってその入力に応答する。表が書換可能記憶装置に配置される場合、RSPを容易に再構成することができ、そのため、種々のアプリケーションにおいて単一RSP設計が有用となり得る。多くのアプリケーションでは、動作に必要な表を含むRSP全体を、単一の低コストで低電力の集積回路で実施することができる。
複数の任意の特徴が、かかる機器の有用性を向上させることができる。実行ユニットのバンクを使用して、異なるタスクを実行することができ、そのため並列処理が可能となる。本質的に小型VNマシンであってもよい例外ユニットを接続し、且つ使用して、たとえば複雑であるが低頻度の、又は厳しい時間制限のないタスクを実行することができる。また、実行ユニットに対してマシンコンテキストメモリインタフェースを利用可能にすることができ、それにより、実行ユニットは、メモリユニットの基礎となるフォーマットを理解する必要がなく、そのため実行ユニットが実行するコードが大幅に簡略化される。
本発明を、図面を参照して開示を読むことにより最も良く理解することができる。
本出願の発明者は、1999年6月29日に発行された、「Pattern Recognition in Data Communications Using Predictive Parsers」と題する先の特許、米国特許第5,916,305号における共同発明者である。全体として‘305特許に記載されている機器は本発明とは非常に異なるが、パターンマッチャとして、ネットワークプロトコルに関連して基本の予測型パーサを使用することに対する一般的な概論として有益である。
図2は、’305特許に記載されているような機器80のブロック図を示す。セマンティックエンジン82は、パケット70を読み出し、パケットデータオクテットを値として予測型パーサ84に渡す。予測型パーサ84は、渡される各値(オクテット)を調べる。まず、パーサ84は、パケット70の始めから値及びその値の位置のオフセットをパーサ表88へのインデックスとして使用することにより表探索を実行する。パーサ表88は、値及びオフセットの各組合せに対し、4つのあり得る値のうちの1つを格納する。すなわち、そのオフセットにおける値を受け入れることを意味する「A」、値及びオフセットの組合せが「ドントケア(don't care)」であることを意味する「D」、オフセットにおける値が、認識されるべきパターンの一部でないため失敗であることを意味する「F」、及び終了記号である「$」である。
パーサスタック86は、単語の普通の意味で(又は簡単に説明する本発明の実施形態に適合するように)真の「スタック」ではない。すなわち、それは単に、パーサ84が突き合わせようと試みている各「フィルタ」に対する状態変数を維持する。各状態変数は、エントリ状態に初期化される。各値及びオフセットに対して後に表エントリが返されると、スタックは、各スタック変数を更新する。たとえば、スタック変数として「A」が返されると、そのスタック変数はエントリ状態から部分的一致状態に移る。「F」が返されると、そのスタック変数は、エントリ状態又は部分的一致状態から失敗状態に移る。「D」が返されると、そのスタック変数はその現在の状態を維持する。また、状態変数がエントリ状態又は部分的一致状態にある間に「$」が返されると、状態変数は一致状態に遷移する。
セマンティックエンジン82がすべてのパケット値を予測型パーサ84に渡すと、パーサ84は、パーサスタック状態に基づいて一致値を返す。そして、セマンティックエンジン82は、一致の成功又は失敗によって何らかの出力動作をとる。パーサは機器機能を制御も調整もせず、代わりにより大型のシステムに対する補助パターンマッチャとして作用するだけである、ということに留意すべきである。ハードウェア実施態様において機器80が限られた数の入力パターンのみを突き合わせればよいように、識別される、可能なパターンは各々、パーサ表に新たな列を必要とする。また、入力オクテット位置が突合せ結果に作用することができない場合であっても、各入力オクテット位置に対してパーサ表の行が必要である。
本明細書で説明する実施形態は、データ処理に対して決定的に異なる手法をとる。図3は、本発明の一実施形態によるセマンティックプロセッサ100を示す。特定の格納されたパターンに対して特定の入力パターンを単に突き合わせるのではなく、セマンティックプロセッサ100は、入力パケットの処理を制御する直接実行パーサ(direct execution parser)(DXP)200を含む。DXP200は、入力ポート102に受け取られたデータを構文解析する際、入力に応じて実際の文法生成規則を展開し且つ実行し、セマンティックコード実行エンジン(SEE)300に対し、文法が実行するように、入力のセグメントを処理するか又は他の動作を実行するように命令する。
データの必要に応じて、マシンコンテキストタスクを実行エンジンに割り当てる精巧な文法パーサを用いるこの構造は、柔軟であり且つ強力である。好ましい実施形態では、セマンティックプロセッサは再構成可能であり、そのため高いオーバヘッドなしにVNマシンの魅力を有する。セマンティックプロセッサは、与えられる入力に応答するだけであるため、VNマシンより小さい命令セットで効率的に動作することができる。命令セットはまた、セマンティックプロセッサがマシンコンテキストでの処理を可能とするため有益である。
セマンティックプロセッサ100は、少なくとも3つの表を使用する。SEE300ののコードセグメントは、セマンティックコード表160に格納される。複雑な文法生成規則は、生成規則表140に格納される。それら生成規則を検索するためのコードは、パーサ表120に格納される。パーサ表120におけるコードはまた、DXP200が、所与の生成規則に対してセマンティックコード表160からのコードセグメントがSEE300によってロードされ実行されるべきかを検出することができるようにする。
本発明のいくつかの実施形態は、図3に示す要素より多くの要素を含むが、これら本質的な要素は、すべてのシステム又はソフトウェア実施形態で現れる。このため、より複雑な実施形態を扱う前に、図3の各ブロックについて説明する。
図4は、パーサ表120に対する一般的なブロック図を示す。生成規則コードメモリ122は、たとえば行・列フォーマットで表の値を格納する。表の行は、非終端コードによってインデックス付けされる。表の列は、入力データ値によってインデックス付けされる。
実際には、生成規則コードメモリ122に、多くの異なる文法に対するコードが同時に存在することができる。たとえば、図示するように、コードの1つのセットは、MAC(媒体アクセス制御)パケットヘッダフォーマット構文解析に関連してもよく、コードの他のセットは、アドレス解決プロトコル(ARP)パケット処理、インターネットプロトコル(IP)パケット処理、伝送制御プロトコル(TCP)パケット処理、リアルタイム転送プロトコル(RTP)パケット処理等に関連してもよい。非終端コードは、生成規則コードメモリ122においても、図示するような特定のプロトコルに関連するブロックにおいても、いかなる特定の順序で割り当てられる必要はない。
アドレッサ124は、DXP200から非終端(NT)コード及びデータ値を受け取る。アドレッサ124は、[NTコード,データ値]対を生成規則コードメモリ122の物理位置に変換し、その位置に格納された生成規則(PR)コードを検索し、そのPRコードをDXPに返す。概念的には、生成規則コードメモリ122の構造をNTコード及びデータ値の各一意の組合せに対して1つのRPコードが格納されたマトリクスとして見ることが有用であることが多いが、本発明はそのようには限定されない。異なるアプリケーションに対し異なるメモリのタイプ及びメモリ編成が適当である場合もある(そのうちの1つを図11に示す)。
DXP200及びSEE300が回路内に合わせて集積される場合、パーサ表120をオンチップで配置してもオフチップで配置してもよい。たとえば、オンチップで配置されるスタティックRAMがパーサ表120としての役割を果たすことができる。別法として、オフチップDRAM記憶装置がパーサ表120を格納してもよく、アドレッサ124は、DRAMに対するメモリコントローラとしての役割を果たすか、又はかかるメモリコントローラと通信する。他の実施形態では、パーサ表をオフチップメモリに配置してもよく、オンチップキャッシュはパーサ表の一部を保持してもよい。実施態様によっては、アドレッサ124は必要でなくてもよいが、使用される場合は、パーサ200の一部であっても、パーサ表120の一部であっても、中間機能ブロックであってもよい。なお、アドレッサ124が入力ストリームにおける次の入力値及びDXPのパーサスタックにおける次の値を見ることができるようにすることにより、パーサ表120に対する先読み(look-ahead)能力を実施することが可能である。
図5は、生成規則表140に対する1つのあり得る実施態様を示す。生成規則メモリ142は、終端及び非終端記号の実際の生成規則シーケンスを、たとえば連続メモリアドレスのヌル終端連鎖として格納する。アドレッサ144は、DXP200から又はパーサ表120から直接PRコードを受け取る。
生成規則はさまざまな長さを有することができるため、メモリ142への容易なインデックス付けを可能にする手法をとることが望ましい。一手法では、PRコードを算術的に操作することにより、生成規則の物理メモリ開始アドレスを確定してもよい(これは、たとえば生成規則が展開された長さによってソートされ、その後PRコードが規則のソートされた位置に従って割り当てられる場合に可能である)。PRコードはまた、実際のPR開始アドレスであってもよいが、アプリケーションによっては、これによってPRコードが不必要に長くなる可能性がある。図5に示す手法では、ポインタ表150には、各PRコードに対するPR開始アドレスが投入されている。アドレッサ144は、アドレスとしてPRコードを使用してポインタ表150に問い合わせることにより、生成規則を検索する。ポインタ表150は、PR開始アドレスPR_ADDを返す。そして、アドレッサ144は、この開始アドレスを使用して生成規則メモリ142からPRデータを検索する。アドレッサ144は、開始アドレスをインクリメントし、NULL文字が検出されるまでPRデータを検索し続ける。
図5は、セマンティックコード(SC)開始アドレスを格納するために使用される、表150の第2列を示す。DXP200がPRコードを用いてアドレッサ144に問い合わせる時、アドレッサは、対応する生成規則を返すだけでなく、実行されるSEEタスクに対するSC開始アドレスも返す。所与の生成規則に対してSEEタスクが必要でない場合、SC開始アドレスはNULLアドレスに設定される。
図6は、DXP200に対する1つのあり得るブロック実施態様を示す。パーサ制御有限状態機械(FSM)210は、図6における他の論理ブロックからの入力に基づいてDXP動作全体を制御し且つ順序付ける。スタックハンドラ220及びスタック222は、DXP200が実行する生成規則を格納し順序付ける。パーサ表インタフェース230は、DXP200が付随するパーサ表からPRコードを検索することができるようにする。生成規則表インタフェース240は、DXP200が付随する生成規則表から生成規則を検索することができるようにする。またセマンティックコード(semcode)表インタフェース250は、DXP200が生成規則に関連するセマンティックコードセグメントのメモリ位置を特定することができるようにする(例示する実施形態では、インタフェース240及び250は部分的に結合される)。
入力ストリームシーケンス制御部260及びレジスタ262は、Si−Busから入力データ記号を検索する。コンパレータ270は、入力記号をパーサスタック222からの記号と比較する。最後に、SEEインタフェース280を使用して、Sx−BusでDXP200と通信する1つ又は複数のSEEに対しタスクをディスパッチする。
ここで、図6のブロックの基本動作について、図7のフローチャートを参照して説明する。各構文解析サイクルの開始時(フローチャートブロック400)、スタックハンドラ220は、そのスタックの先頭(top-of-stack)ポインタpspによって指し示される生成記号pXを検索する。生成記号pXは、2つの構成部分、すなわち接頭子p及び記号Xに分割される。接頭子pは、たとえば2ビット接頭子に対する以下のマッピングに従って記号Xのタイプを符号化する。
Figure 0004203023
なお、「ドントケア」終端記号の接頭子の代りに、接頭子は、マスクされた終端記号を示してもよい。マスクされた終端記号により、入力記号に対するビットマスクの指定が可能になる。すなわち、終端記号のいくつかの(又はすべての)ビットは「ドントケア」ビットである。マスクされた終端記号構造は、たとえば多くのネットワークプロトコルで発生するようにパケットフラグフィールドを構文解析するために有用である場合がある。
入力ストリームシーケンス制御部260はまた、入力ポインタipによって指し示される現入力ストリーム値をaRegレジスタ262にロードする。このステップは、先の構文解析サイクルが入力ポインタipを進めなかった場合は不要であってもよい。
パーサ制御FSM210は、スタックハンドラ220から新たな接頭コードpを受け取ると、この構文解析サイクルに対してこれらのあり得る論理経路のいずれをとるべきか判断する(フローチャートブロック402)。接頭コードが、Xが終端記号であることを示す場合、経路410がとられる。接頭コードが、Xが任意の入力記号と一致することを示す場合、経路420がとられる。また、接頭コードが、Xが非終端記号であることを示す場合、経路430がとられる。次に、各経路に関連する処理について説明する。
経路410がとられる場合、パーサ制御FSM200は、コンパレータ270によって提供される記号一致信号Mに基づいて別の経路分岐を作成する。コンパレータ270は、入力記号aをスタック記号Xと比較し、2つが同一である場合、信号Mをアサートする。マスクされた終端記号が可能であり、マスクされた終端記号が提供される場合、コンパレータ270は、信号Mがマスクされていないスタック記号ビットのみによって決まるように、マスクを適用する。
特定の入力記号が予測され見つからない場合、ブロック414において、パーサ制御FSM210は、エラー回復モードに入る。一般に、エラー回復は、入力からパケットの残りをフラッシュし(たとえば、一致が検出されるまで入力をフレームの終わり(EOF)記号と突き合わせることにより)、残りの記号をスタックからポップする(pop)。また、誤ったパケットに関連する任意のマシン状態データを除去するように、セマンティックコードセグメントをSEEにディスパッチしてもよい。これら及び他の動作は、エラー時に構文解析されている特定の文法によって決まってもよい。
ブロック412においてaとXとの間の一致が見つかるものとすると、さらなる処理は処理経路420につながる。
処理経路420は、図7においてブロック422及び424として示す2つのタスクを達成する。第1に、パーサ制御FSM210は、たとえばスタックポインタpspをデクリメントすることにより、スタックハンドラ220に対しXの現在値をスタック222から「ポップする」ように通知する。第2に、パーサ制御FSM210は、入力ストリームシーケンス制御部260に対し、入力ポインタipを入力ストリームの次の記号までインクリメントするように通知する。
処理経路430は、スタック222に現れる非終端記号を処理する。非終端記号Xがスタックの先頭に達すると、処理ブロック432、434、438及び440は、非終端記号をその対応する生成規則に展開する。パーサ制御FSM210は、まず、パーサ表インタフェース230に対し、生成規則コードy=PT[X,a]を返すように通知する。yが無効である場合、パーサ制御FMS210は、たとえば上述したようなエラー回復(ブロック436)を実行する。
PRコードyが有効であるとすると、パーサ制御FSM210は、スタック222のXをその展開された生成規則に置き換える。パーサ制御FSMは、生成規則表(PRT)インタフェース240及びセマンティックコード表(SCT)インタフェース250に対し、PRコードyを使用して探索を実行するように通知する。パーサ制御FSM210はまた、スタックハンドラ220に対し、Xの現在値をスタック222からポップするように通知する。PRTインタフェース240が生成規則PR[y]を返すと、パーサ制御FSM210は、スタックハンドラ220に対しスタック222にPR[y]をプッシュするように通知する。各展開生成規則が対応する長さを有するため、この長さをプッシュにおいて考慮しなければならず、すなわち、展開によっては生成規則表から複数回の記号転送が必要な場合がある(表からスタックハンドラまでの経路幅は、当然ながら1つの記号の幅より広い場合もある)。
その間、SCTインタフェース250は、生成規則PR[y]に対し対応するセマンティックコードアドレスコードSCT[y]を返す。アドレスコードSCT[y」は、PRコードyに対応する第1のセマンティックコードマイクロ命令の実際の物理アドレスを含んでもよく、又はSEEがそのマイクロ命令をロードすることができるようにする何らかの抽象化を含んでもよい。アドレスコードSCT[y]は、いずれのSEE(多重SEEシステムにおいて)がコードセグメントを受け取るべきかの指示等、他の情報を同様に含んでもよい。
パーサ制御FSM210によって命令されると、SEEインタフェース280は、SCT[y]を調べて、コードセグメントをSEEにディスパッチする必要があるか否かを判断する。図7の判断ブロック442に示すように、SCT[y]が「有効」でない、すなわちNULL値が表されている場合、マイクロ命令実行は不要である。「有効」である場合、SEEインタフェース280は、SEEが現在利用可能であるか否かを判断する(判断ブロック444)。SEEインタフェース280は、SEE可用性を判断するためにセマフォレジスタ(図示せず)を調べる。SCT[y]によって特定のSEEが示されている場合、SEEインタフェース280は、そのSEEに対してセマフォを調べる。セマフォが、要求されたSEEがビジーであることを示すと、SEEインタフェース280は、セマフォがクリアするまで待機状態446に入る。任意のSEEがセマンティックコードセグメントを実行することができる場合、SEEインタフェース280は、単にクリアセマフォを用いてそれを選択するだけでよい。
選択されたSEEに対してセマフォがクリアである場合、SEEインタフェース280はSx−busを捕らえ、SCT[y]を選択されたSEEに送出する。選択されたSEEは、そのセマフォを、それが要求を受け取ったことを示すように設定する。
パーサ制御FSM210が最初にSEEインタフェース280に対してSCT[y]をディスパッチするように命令すると、SEEインタフェース280は、SEEステータスラインをさらなる構文解析を中断するようにデアサートすることにより、SCT[y]がディスパッチされるまでパーサ制御FSM210が現構文解析サイクルから出ないようにする(SEEステータスラインがデアサートされている間、展開された生成規則PR[y」のスタックプッシュは並列に継続することができる)。SCT[y]が選択されたSEEに転送されるとDXP200が構文解析を中断し続けるか否かは、SCT[y]によって決まってもよい。たとえば、SCT[y]がまた、対応するセマンティックコードセグメントがどれくらいの期間、パーサ制御FSM210によるさらなる処理が行われないようにすべきかを符号化してもよい。一実施形態では、SCT[y]がディスパッチされるとすぐに、SEEがそのセマフォを設定するとすぐに、SEEがそのセマフォを設定してからプログラム可能な数のクロックサイクル後、又はSEEがそのセマフォを設定しクリアしてから、DXUを解放してもよい。別法としてSEEは、これらの異なる可能性に対応する異なるセマフォ状態を有してもよい。
各パーササイクルの最後に(図7の判断ブロック460)、スタックハンドラ220は、スタックが空である場合にパーサ制御FSM210に対してスタック空信号SEをアサートする。SE信号がアサートされると、パーサ制御FSM210は、次の入力パケットの開始を待つようにその状態をリセットする。しかしながら、スタックが空でない限り、パーサ制御FSMは、ブロック400に戻り新たな構文解析サイクルを開始する。
図8は、能力が拡張された第2のRSP実施形態500を示す。図3に示す単一SEE300の代りに、RSP500は、N+1個のSEE300−0〜300−Nを組み込んでいる。RSP500はまた、いくつかの他の重要な追加を含む。すなわち、例外処理ユニット(EPU)600、アレイマシンコンテキストデータメモリ(AMCD)700及び変数マシンコンテキストデータメモリ(VMCD)800である。ここで、図8の各ブロックの機能について文脈で説明する。
図9は、SEE300−0の基本機能ブロックを示す。SEE300−0の中心には、算術論理ユニット(ALU)310、1組のパイプラインレジスタ320、及びセマンティックコード(すなわちsコード)命令デコーダ330がある。sコードキュー340は、SEEが実行するマイクロ命令を格納する。マイクロ命令自体は、セマンティックコード表160に格納され、SEE S−busインタフェース360によって受け取られる。SEE制御有限状態機械(FSM)350は、図示するSEEブロックの動作を調整する。
SEE300−0は、Sx−busで実行要求を(DXP200から)受け取るまでアイドルのままである。SEE制御FSM350は、Sx−busのトラフィックを調べて、要求がSEE300−0に向けられるのを待つ(たとえば、16個までのSEEを4つのSx−busアドレスラインでアドレス指定することができ、各SEEは一意のアドレスを有する)。要求がSEE300−0に向けられる時、その要求は、たとえば開始セマンティックコードアドレスを含む。SEE制御FSM350は、次のようにして要求に応答する。すなわち、そのセマフォをそれが今ビジーであることを認識するように設定し、S−busインタフェース360に対し、受け取った開始セマンティックコードアドレスで開始するマイクロ命令コードセグメントを検索する要求をS−busで駆動するように命令する。
S−busインタフェース360には、sコード命令を、sコード命令デコーダ330が必要とする前にキュー340に配置するタスクが課される。S−busインタフェースは、S−busにアクセスするために他のSEE S−busインタフェースと競わなければならず、したがって、一度に一気に複数の連続した命令をダウンロードすることが有益である場合がある。S−busインタフェース360は、sコードアドレスカウンタ(図示せず)を保持し、SEE制御FSM350によって特に指示されない限り命令を連続してダウンロードし続ける。
sコードマイクロ命令デコーダ330は、ALU310及びパイプラインレジスタ320に対しDXPが要求するコードセグメントを実行する。命令デコーダ330内に分岐能力が存在することが望ましいが、多くのコードセグメントは、RSPの全体構造により分岐をほとんど又はまったく必要としない。
ALU310は、従来のものであってもよく、たとえば、それ自体のレジスタ値及び/又はパイプラインレジスタ320からの値を使用して加算、比較、シフト等を実行する能力を有する。
パイプラインレジスタ320は、データに対するマシンコンテキストアクセスを可能にする。標準CPUとは対照的に、好ましいSEE実施形態は、それらが作用するデータに対して使用される物理データ記憶構造について知らない。代りに、データへのアクセスは、マシンコンテキストトランザクション形式をとる。変数(たとえば、スカラー)データはV−busでアクセスされ、アレイデータはA−busでアクセスされ、入力ストリームデータはSi−busでアクセスされる。たとえば、データコンテキストct内の所与の位置offsetに位置する長さmオクテットのスカラーデータ要素を読み出すために、命令デコーダ330は、V−busインタフェースに対しバス要求{read,ct,offset,m}を発行するように指示する。コンテキストmctは、RSPのマスタコンテキストを指し、現TCPパケット又はアクティブセッションのためのサブコンテキスト等、他のサブコンテキストは、通常、RSPが入力データを処理する際に作成され破壊される。
パイプラインレジスタは、コマンドが発行されると、データ転送プロセスを処理する。mオクテットを読み出し又は書き込むために複数のバス転送が必要である場合、パイプラインレジスタは完了までトランザクションを追跡する。例として、2つのマイクロ命令を使用して6オクテットフィールドをストリーム入力からマシンコンテキスト変数に転送することができる。すなわち、第1の命令は、Si−busからパイプラインレジスタに6オクテットを読み込み、第2の命令は、その後その6オクテットをレジスタからV−busによりマシンコンテキスト変数に書き込む。レジスタインタフェースは、転送を行うために必要な多くのバスデータサイクルを実行する。
VMCD800は、V−busで開始する要求に答える。VMCD800は、マシンコンテキスト変数データ要求を物理メモリトランザクションに変換することができる。このため、VMCD800は、物理開始アドレスに対するマシンコンテキスト識別子を参照する変換表を保持し、コンテキストを割り付け且つ割付け解除するメカニズムを含み、コンテキストが所与のSEEによってロックされるのを可能にし、要求されたトランザクションが要求されたコンテキストの境界外にならないことを確実にすることが好ましい。採用される実際の記憶メカニズムは、アプリケーションによって異なってもよく、メモリは、完全に内部、完全に外部、2つの混合、大容量の外部メモリとのキャッシュ等であってもよい。所与の実施態様では、外部メモリを、AMCD、eコード表、入力バッファ、パーサ表、生成規則表、及びセマンティックコード表等、他のメモリセクションに対する外部メモリと共有してもよい。
A−busインタフェース及びAMCD700は、同様に動作するが、アレイマシンコンテキスト編成を有する。異なるタイプのアレイ及び表に対し、単純なバス要求を用いて、割り付け、サイズを変更し、割付け解除し、書込みを行い、読出しを行い、探索し、場合によってはハッシング又はソートすることができることが好ましい。実際の基礎となる物理メモリは、たとえば高速オンボードRAM、外部RAM又はROM、連想メモリ等を含み、異なるタイプのアレイ及び表に対して異なってもよい。
SEE300−0及びそのパイプラインレジスタの説明に戻ると、各SEEは、バッファ510からSi−busを介して入力データにアクセスすることができる。また、各SEEは、P−busと、パーサスタックの先頭にある現記号と、にアクセスすることができる。これは、たとえば、複数の生成規則で同じsコードが使用されるが、その結果は、それを開始した生成規則によって決まる場合に有用となる場合がある。最後に、いくつかのSEEのパイプラインレジスタを特殊化することができる。たとえば、図8のSEE300−1は、ローカルI/Oブロック520と通信することにより、たとえばローカルブロック520に接続されたローカルUSB又はシリアルATAデバイスとの間のデータ経路を提供する。図8のSEE300−2は、EPU600と通信することにより、例外ユニットとの間のデータ経路を提供する。理論的には、各SEEはこれらのデバイスの各々と別々に接続することができるが、実際には、デバイスは簡略化され、いくつかのSEEをいくつかの他の機能と対にすることにより性能ペナルティがほとんどもたらされない。
例外処理ユニット600は、標準的なフォン・ノイマン中央処理装置(CPU)であってもよいが、多くのアプリケーションでは、非常に基本的なものであってもよい。含まれる場合、EPU600を使用して、低頻度で実行するか又はタイミングが重要でない複雑なコードを処理することが好ましい。例は、ユーザログオン手続き、ローカルドライブを遠隔で利用可能にする要求、エラーロギング及び回復、システム起動時の表ローディング、及びシステム構成である。EPU600は、SEE300−2にロードされたsコードセグメントを介してDXP要求に間接的に応答する。EPU600はまた、SEE300−2に対し、AMCD700又はVMCD800に対する読出し又は書込み等、EPU600のための機能を実行するように要求することができることが好ましい。
eコード表610をEPU600が利用可能であることが好ましい。eコード表は、機器のブート命令を含み、DXPによって要求される他の機能を実行する実行可能命令を含んでもよい。任意に、eコード表610は、sコード要求を、実行されるコードの命令アドレスに変換するための表を含んでもよく、その場合、命令アドレスは従来の外部メモリ空間に位置する。
実施例
RSP500の動作をよりよく例示するために、IETF RFC826に記載されているようなアドレス解決プロトコル(ARP)の実施態様に対する一例を示す。この例では、生成規則、パーサ表エントリ、及び受け取られたARPパケットを処理するsコードの機能的実体の作成を行う。
簡単に言うと、ARPパケットは、ローカルネットワークノードが各ピアのリンク層(ハードウェア)アドレスを1つ又は複数のネットワークプロトコルに対するネットワーク(プロトコル)アドレスに関連付けることができるようにする。この例では、ハードウェアプロトコルはイーサネットであり、ネットワークプロトコルはインターネットプロトコル(IP又はIPv4)であると仮定する。したがって、ARPパケットは、図10に示すフォーマットを有する。opcodeフィールドが1に設定されている時、送信側は、ターゲットプロトコルアドレスに関連するターゲットハードウェアアドレスを発見しようと試みており、ARP応答パケットを要求している。opcodeが2に設定されている時、送信側は、ARP要求に応答しており、この場合、送信側のハードウェアアドレスは、元の送信側が探していたターゲットハードウェアアドレスである。
以下の例示的な文法は、RSP500が、入力ポートで受け取ったARPパケットを処理することができる1つの方法を述べている。$は、生成規則の開始を示し、{}は、SEEが実行するsコードを囲む。
$MAC_PDU := MAC_DA MAC_SA MAC_PAYLOAD MAC_FCS EoFrame
$MAC_DA := 0X08 0X01 0X02 0X03 0X04 0X05
| 0XFF 0XFF 0XFF 0XFF 0XFF 0XFF
$MAC_SA := etherAddType {s0: mct->curr_SA = MAC_SA}
$MAC_PAYLOAD := 0X08 ET2
$ET2 := 0X06 ARP_BODY | 0X00 IP_BODY
$ARP_BODY := ARP_HW_TYPE ARP_PROT_TYPE ARP_HW_ADD_LEN
ARP_PROT_ADD_LEN ARP_OP ARP_PADDING
$ARP_HW_TYPE := 0X0001
$ARP_PROT_TYPE := 0x0800
$ARP_HW_ADD_LEN:= 0X06
$ARP_PROT_ADD_LEN:= 0X04 0x00
$ARP_OP := 0x01 ARP_REQ_ADDR
| 0x02 ARP_REPLY_ADDR
$ARP_REQ_ADDR := ARP_SENDER_HW ARP_SENDER_PROT ARP_TARGET_HW
ARP_TARGET_PROT {s1: s-code seg1}
$ARP_REPLY_ADDR:= ARP_SENDER_HW ARP_SENDER_PROT ARP_TARGET_HW
ARP_TARGET_PROT {s2: s-code seg2}
$ARP_SENDER_HW := etherAddType
$ARP_SENDER_PROT:= ipAddType
$ARP_TARGET_HW := etherAddType
$ARP_TARGET_PROT:= ipAddType
$ARP_PADDING := octet | null {s3: calc. length; throw away}
$IP_BODY := //unresolved by this example
$MAC_FCS := octet octet octet octet {s4: check FCS}
$etherAddType := octet octet octet octet octet octet
$ipAddType := octet octet octet octet
{s-code seg1 := if ARP_TARGET_PROT == mct->myIPAddress
then generate ARP reply to mct->curr__SA;
s-code seg2}
{s-code seg2 := update mct->ArpCache with
ARP_SENDER_HW, ARP_SENDER_PROT, mct->time}
この例は、単に、すべてのあり得るARPパケットの限られたセット、すなわちイーサネットハードウェアタイプ及びIPプロトコルタイプと一貫するフィールドを適当に示すものを処理するのみであり、他のすべては、構文解析されず拒否される。この文法はまた、IPパケット($IP_BODY)を処理するためのフックを残しており、そのためIPパケットは拒否しないが、対応するIP文法はこの例に含まれてない。
生成規則を通して、$MAC_PDUは、単にMACフレームフォーマットを定義する。$MAC_DAによって2つの宛先MACアドレス、すなわち特定のハードウェアアドレス(0x08 0x01 0x02 0x03 0x04 0x05)及びすべて1のブロードキャストアドレスが可能となる。これら2つのアドレスのうちの1つのないパケットは構文解析されないため、他のすべてのMACアドレスは自動的に拒否される。$MAC_SAにより、任意のソースアドレスが受け入れられ、SEEが呼び出されてソースアドレスをVMCDのマスタコンテキスト表変数mct->curr_SAに保存する。$MAC_PAYLOAD及び$ET2が結合することにより、2つのタイプのペイロード、すなわちARPペイロード及びIPペイロードのみが構文解析されることを確実にする(IPペイロードのさらなる構文解析については本明細書では示していない)。当然ながら、これらの生成規則を拡張することにより他のパケットタイプを追加することも可能である。
MAC_PAYLOADの最初の2バイトがARPパケット(type=0x0806)を示す場合、パーサは、次に、$ARP_BODYを構文解析しようと試みる。簡単にするために、ARP本文の最初の4つの要素(ハードウェア及びプロトコルのタイプ及びアドレス長)は固定であるように示す。ARPをIPと同様に別のプロトコルに対して実施した場合、これらの要素を一般化することができる(なお、長さフィールドの一般化により、続くアドレスフィールドのサイズ、すなわち生成規則において考慮しなければならない条件を変えることが可能になり得る。)
$ARP_OPの2つの値、すなわち要求に対する1及び応答に対する2があり得る。ARP_OPの2つの値に対してアドレス構文解析は異ならないが、各場合において実行されるべきsコードは異なる。ARP要求に対して実行されるsコードセグメント1は、ターゲットプロトコルを、VMCDのマスタコンテキスト表に格納されるローカルIPアドレスと比較する。これらが等しい場合、SEEは、送信側のハードウェア及びIPアドレスに対するARP応答パケットを生成する。sコードセグメント2は、ARP要求及びARP応答の両方に対して実行する。すなわち、このセグメントは、AMCDに格納されているArpCacheアレイを、送信側のハードウェア及びプロトコルアドレス並びに受け取った時間で更新する。mct->ArpCacheに対する「更新」コマンドは、更新を実行するためにArpCacheのいずれのデータを使用すべきかを識別するフラグ又はマスクを含み、通常、キャッシュは、少なくともIPアドレスによってインデックス付けされる。
イーサネット/IP ARPパケットでは、ARP_PADDINGの長さは18オクテットとなる。しかしながら、ここで示すARP_PADDING生成規則は、任意の数のオクテットに適合する。この例では、sコードセグメントを呼び出すことにより、パディング長を計算し、たとえば入力ポインタを進めることによりその多くのオクテットを「捨てる(throw away)」。別法として、パーサは、入力におけるEoFrameトークンに対し5オクテット先読みを使用することができる。すなわち、トークンが見つかる時、先の4オクテットはFCSである。パーサが可変記号先読み能力を有する代替実施形態については、この例の終わりで説明する。
MAC_FCS生成規則は、SEEがパケットに添付されたFCSを検査するように指示する。SEEは、実際にはチェックサムを計算してもよく、又はチェックサムを、入力バッファ又は他のハードウェアが計算してもよく、その場合、SEEは、単にパケット値を計算された値と比較し、一致しなかった場合にパケットを拒否する。
上記ARP文法を実行するようにRSP500をいかに構成するかをさらに説明するために、ここで、例示的な生成規則表及びパーサ表値を与え説明する。まず、生成規則を示し、そこでは、16進法は終端値を示し、10進法は生成規則を示し、「オクテット」は入力ストリームの先頭に見られる任意のオクテットに一致する。非終端(NT)コードを、パーサ表に対するインデックスとして使用し、生成規則(PR)コードは、パーサ表に格納され、いずれの生成規則をNTコード及び入力値の所与の組合せに適用するかを示す。
Figure 0004203023
上記ARP生成規則表では、RHS非終端値は、たとえば特別な規則の最後の記号が添付されており、RSPの生成規則表に格納されるものである。生成規則コードは、対応する生成規則に対する「ポインタ」であり、それは、パーサ表に実際に格納されるPRコードである。以下のパーサ表セグメントは、PRとRPコードとの関係を示す。
Figure 0004203023
NTコードと「入力ストリームデータ値の先頭」との組合せは、RSPにおけるパーサ表値をインデックス付けする。なお、開始記号S、EoFrame記号及びスタックの底記号$は特別な場合であり、これらの記号に対しパーサ表を参照しないようにパーサ制御FSMを実施してもよい。多くのNTコードに対し、表は、入力ストリームの先頭を占めるデータ値に関係なく同じPRコードをもたらす。この例では、他のすべてのNTコードは、入力ストリーム値の1つ又は2つの先頭のみに対する有効な値を有する(セルにおけるブランク値は無効なエントリを表す)。この情報を、各セルが満たされるマトリックスフォーマットで符号化することができ、又は他の何らかのより経済的なフォーマットで符号化することができる。
上記表を考慮して、ここでイーサネット/ARPパケットに対するRSP実行の一例を示す。この例では、DXPを、図7のフローチャートを通しての1つの「ループ」に対応するパーササイクルによって段階的に進める。各サイクルにおいて、以下のマシン状態を追跡する。すなわち、構文解析されている現ストリーム入力記号のバイトアドレスを示す入力ポインタipと、入力ポインタによって指し示される入力記号*ipと、パーササイクルの開始においていずれのスタック値が指し示されているかを示すパーサスタックポインタpspと、非終端符号が接頭子「nt.」によって示されており、且つ終端記号t.xxが任意の入力記号に一致する場合、そのパーササイクルの開始におけるパーサスタックの先頭記号*pspと、パーサ表の現時点でインデックス付けされている値、PT[*ip,*psp]と、PT[*ip,*psp]によって指し示されている生成規則、PRT[PT]と、PT[*ip,*psp]によって指し示されているsコードセグメント、SCT[PT]と、パーサスタックの内容全体、*psと、である。
この例では、以下のARPパケットを使用する。ここでは、すべての値が16進法で示されている。
0x0000: FF FF FF FF FF FF 00 02 3F 77 6D 9E 08 06 00 01
0x0010: 08 00 06 04 00 01 00 02 3F 77 6D 9E C0 A8 00 04
0x0020: 00 00 00 00 00 00 C0 A8 00 06 3A 20 33 0D 0A 53
0x0030: 54 3A 20 75 72 6E 3A 73 63 68 65 6D EF 73 84 CC
これは、この例ではRSPに割り当てられるネットワークアドレスである、ネットワークアドレス192.168.0.6に関連するハードウェアアドレスを要求する、ブロードキャストMACアドレスに送信されるARP要求パケットである。この例のパケットを構文解析する結果を、以下に表形式で示し、その後に簡単に説明する。この例は非常に長いが、RPSの基本的な機能の大部分を用いているため有益である。
Figure 0004203023

Figure 0004203023
一般に、上記詳細な例は、以下のように行うことにより、生成規則がパーサスタック上にいかに展開され、その後個々に処理されるかを示す。すなわち、終端記号を入力記号と突き合わせる(たとえばパーササイクル2〜7を参照)か、終端ドントケア記号t.xxを入力記号と突き合わせる(たとえばパーササイクル9〜14を参照)か、さらに入力に関わりなく(たとえばパーササイクル8を参照)又は現入力記号に基づき(たとえばパーササイクル0、1、17を参照)非終端記号を展開するか、又はこの場合はSEEが入力ポインタをパディングフィールドに対する構文解析を「スキップする」ように調整することができるようにヌルサイクルを実行する(パーササイクル63)ことである。この例はまた、いずれの生成規則がスタックにロードされるかに応じて、構文解析プロセス中に適当なポイントにおけるsコードセグメントに対する呼出しも示す(パーササイクル8、33、62、64)。これらのコードセグメントのいくつかは、連続している構文解析と並列に実行してもよい、ということを理解することができる。
上に示した例示的な文法は、単に、本発明の一実施形態によりARP文法を実施する一例である。たとえば、非終端のうちのいくつかをそれらの親生成規則内に明示的に展開することにより、幾分かのサイクル非効率を低減することができる。ARP文法を、より多くの可能性を処理するように大幅に一般化することも可能である。しかしながら、選択された符号化は、すべてのあり得る最適化又はARP機能ではなく基本原理を例示するように意図されている。所与の実施態様に対し、明示的な展開を選択されたスタックサイズによって制限してもよい。
代替実施形態では、DXP200はLL(f(X))パーサを実施してもよく、その場合、各スタック記号がそれ自体の先読みを指定することができるように、先読み値f(X)をスタック記号で符号化する。一例として、先の例におけるARP_PADDINGの生成規則を、
$ARP_PADDING := octet ARP_PADDING | EoFrame, (LA5)
として指定することができる。ここで(LA5)は、この規則に対する5記号の入力記号先読みを示す。規則が実行される時にDXP200が生成規則表において(X,a+5)を探索するように、先読み値を生成規則表内に符号化する。
表探索において複数の入力記号が使用されることを示すために、可変先読み能力を使用することも可能である。たとえば、MAC_DAの生成規則を、
$MAC_DA := 0X08 0X01 0X02 0X03 0X04 0X05
| 0XFF 0XFF 0XFF 0XFF 0XFF 0XFF, (LA6)
として指定することができる。各々6つの終端記号を用いて2つの生成規則52及び53を作成する代りに、パーサ表は、たとえばパーサ表位置(X,a)=(130,0x08 0x01 0x02 0x03 0x04 0x05)及び(130, 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF)において、各々6つの記号に一致する2つのエントリを含む。
かかる手法により、標準的な行、列マトリクスパーサ表は、6オクテットまでの入力記号幅に対して必要なアドレス指定可能列の数と、かかるマトリクスの希薄性と、により、非常に無駄であることが分かった。図11に、3値(ternary)CAMを用いる1つの代替実施態様を示す。
図11の3値CAM900に、一致アドレス及び対応する生成規則コードの表をロードする。各一致アドレスは、1オクテットスタック記号Xと、入力記号a1、a2、a3、a4、a5、a6の6つのオクテットと、を含む。一致アドレスがCAM900に提供されると、CAM900は、そのパーサ表エントリに一致が存在するか否かを判断する。一致が存在する場合、対応する生成規則コードが返される(別法として、一致をもたらした表エントリのアドレスが返され、それを、生成規則コード又はポインタの別個の表へのインデックスとして使用することができる)。
図11のパーサ表実施態様の1つの利点は、エントリがスタック及び入力記号の有効な組合せに対してのみ作成されるため、マトリックス手法より効率的である、ということである。この効率により、1パーササイクルで構文解析される入力記号ストリングを長くすることができ(6つまでの入力記号が示されているが、設計者は都合のよい長さであればいかなる長さでも使用することができる)、そのため、MAC又はIPアドレスを1パーササイクルで構文解析することができる。さらに、先読み能力をCAMに暗黙的に符号化してもよく、たとえば、表に次の6つの入力記号を常に提供してもよい。LL(1)構文解析に対応する生成規則(CAM900におけるX=136に対する行等)の場合、その行のa2、a3、a4、a5、a6に対応するCAMビットは、「ドントケア」値xxに設定され、全く探索に役立たない。LL(2)構文解析に対応する生成規則(ARP及びIPパケットそれぞれに対する2オクテットパケットタイプフィールドに一致する、X=134及び135に対する行等)の場合、それらの行のa3、a4、a5、a6に対応するCAMビットはxxに設定されている。X=129に対する2つのMACアドレスエントリに示すように、表にLL(6)までの構文解析を入力することができる。なお、a1、a2、a3、a4、a5がxxに設定された場合、真の6記号先読みも実施することができる。1つの最後の観察結果は、3値CAMを用いて、各ビットを独立して「ドントケア」状態に設定することができ、そのため生成規則を、たとえばフラグフィールドにおけるいくつかのビットを無視するように設定することも可能である、ということである。
2値CAMもまた、パーサ表実施態様で機能することができる。主な相違点は、2値CAMは明示的に「ドントケア」情報を格納することができず、そのためパーサ状態機械(又は他の何らかのメカニズム)が任意の「ドントケア」機能を他の何らかの方法で処理することに関与する、ということである。
当業者は、本明細書で教示する概念を、他の多くの有利な方法で特定のアプリケーションに適合させることができることを理解するであろう。たとえば、提示するコード及びアドレス指定方式に対し多くの変形が可能である。説明する実施形態では、マイクロ命令コードセグメントはNULL命令で終了する。すなわち、NULL命令の発生を、SEEのS−busインタフェースにより、マイクロ命令デコーダにより、又はsコード表機能によってさえも、検出することができる。sコードアドレスは、必ずしもSEEには既知でなくてもよい。すなわち、SCTが各SEEに対する命令ポインタを追跡することが可能であり、その各SEEに対する命令ポインタをDXPが設定する。異なるインタフェースによる複数のメモリ記憶エリアを示しているが、インタフェースのいくつかが、両方に対する物理記憶空間としての役割を果たす共通メモリ記憶エリアへのアクセスを共有してもよい。当業者は、例外処理ユニット等のいくつかのコンポーネントを、RSPと統合してもよく、又は別個のユニットとしてRSPに接続してもよい、ということを理解するであろう。
文法の所与のセットついて、パーサ表、生成規則表及びsコード表にいかにデータ投入するかは重要ではない。すなわち、データ投入を、たとえばEPU、SEEのうちの1つにおけるブートコードセグメント、又は入力ポートに提供される表データ投入命令を含むブート文法セグメントによって達成してもよい。当然ながら、表を、不揮発性メモリを用いて実施することも可能であり、それによって、起動毎に表をリロードする必要がなくなる。
DXPの動作を示すフローチャートは単に例示的なものであり、たとえば、本明細書において、所与の状態機械実施態様は、本明細書では連続したタスクとして示す多くのタスクを並列に達成してもよく、多くの動作を投機的に実行してもよい、ということが理解される。
単一入力ポートを用いていくつかの実施形態を示し説明したが、「1つの」入力ポートについての説明は、単に、少なくとも1つのポートが存在することを認識するものである。物理ポート構成を、アプリケーションに応じて変更することができる。たとえば、ポート帯域幅及びパーサ性能に応じて、いくつかの入力ポートを同じ直接実行パーサに多重化してもよい。
当業者は、本発明の範囲内で他の機能的分割が可能であることを理解する。さらに、共通の集積回路(ハードウェア実施態様の場合)で何の機能を実施し且つ実施しないかは、設計選択であり、アプリケーションに応じて変更することができる。また、従来のソフトウェア技法を用いて、上述したパーサ機能を汎用プロセッサで実施することができる、ということも理解されるが、これは、ハードウェア実施形態で存在する利点のうちのいくつかを無効にする可能性がある。
最後に、本明細書はいくつかの場所で「或る(an)」、「1つの(one)」、「別の(another)」又は「いくつかの(some)」実施形態(複数可)について言及する場合があるが、これは、かかる言及が同じ実施形態(複数可)に対すること、又は機能が単一の実施形態にのみ適用されることを必ずしも意味するものではない。
通常のフォン・ノイマンマシンのブロック図である。 本発明の発明者が先に特許を取得した予測型パーサパターン認識器のブロック図である。 本発明の一実施形態によるセマンティックプロセッサをブロック形式で示す図である。 本発明の実施形態で有用な1つのあり得るパーサ表構造を示す図である。 本発明の実施形態で有用な1つのあり得る生成規則表編成を示す図である。 本発明の実施形態で有用な直接実行パーサ(DXP)の一実施態様をブロック形式で示す図である。 図6に示すDXPの動作のフローチャートである。 本発明の一実施形態による再構成可能セマンティックプロセッサのブロック図である。 本発明の実施形態で有用なセマンティックコード実行エンジンのブロック編成を示す図である。 アドレス解決プロトコルパケットのフォーマットを示す図である。 連想メモリ(CAM)を使用する代替パーサ表一実施態様を示す図である。

Claims (50)

  1. ネットワークパケットプロトコルによって解析されるパケットにあるデータ記号を受け取る入力ポートと、
    スタック記号を格納するスタックを有し、前記受け取ったデータ記号に応じてスタック記号を処理することができる直接実行パーサと、
    前記直接実行パーサがアクセス可能であり、前記直接実行パーサによって供給される少なくとも1つの受け取ったデータ記号及びスタック記号の組合せによりインデックス付けが可能な生成規則コードが投入されることが可能なパーサ表と、
    前記直接実行パーサがアクセス可能であり、前記直接実行パーサから供給される前記生成規則コードによってインデックス付けが可能な生成規則が投入されることが可能な生成規則表と、
    前記直接実行パーサによって指示されると、直接実行パーサによって指示されマシン命令セグメントを使用してマシン命令を実行することができる第1のセマンティックコード実行エンジンと、
    前記第1のセマンティックコード実行エンジンがアクセス可能であり、前記生成規則コードを用いて前記第1のセマンティックコード実行エンジンによりインデックス付けが可能なマシン命令セグメントが投入されることが可能なセマンティックコード表と、を具備するデータ処理システムであって、
    前記直接実行パーサが前記受け取った少なくとも1つのデータシンボル及び前記スタックシンボルを前記パーサ表に提供する際に、前記直接実行パーサが前記パーサ表から前記生成規則コードを少なくとも1つ受け取るようになっていることを特徴とする前記データ処理システム
  2. 前記直接実行パーサによって指示されると、直接実行パーサによって指示されマシン命令を使用して、マシン命令を実行することができる第2のセマンティックコード実行エンジンをさらに具備し、前記第1のセマンティックコード実行エンジン及び第2のセマンティックコード実行エンジンは、並列マシン命令実行が可能である、請求項1に記載のデータ処理システム。
  3. マイクロプロセッサ及び関連するメモリを有する例外処理ユニットをさらに具備し、該例外処理ユニットは、前記第1及び第2のセマンティックコード実行エンジンのうちの少なくとも1つの要求時にタスクを実行することができる、請求項2に記載のデータ処理システム。
  4. 前記第1及び第2のセマンティックコード実行エンジンのうちの少なくとも1つに接続されたブロック入出力ポートをさらに具備し、該ブロック入出力ポートは、前記少なくとも1つのセマンティックコード実行エンジンの制御下でブロック入出力動作を開始することができる、請求項2に記載のデータ処理システム。
  5. 生成規則コードは、前記直接実行パーサが、セマンティックコード表マシン命令の対応するセグメントを任意の利用可能なセマンティックコード実行エンジンに向けることができるか否か、又は前記セグメントを特定のセマンティックコード実行エンジンに向けるべきか否かを判断することができるようにする、請求項2に記載のデータ処理システム。
  6. 前記直接実行パーサと前記第1のセマンティックコード実行エンジンとの間のインタフェースをさらに具備し、該インタフェースは、前記セマンティックコード実行エンジンによって指示される場合に前記直接実行パーサによるスタック記号処理を中断する能力を有する、請求項1に記載のデータ処理システム。
  7. 前記パーサ表、前記生成規則表及び前記セマンティックコード表は、少なくとも部分的に再プログラム可能な記憶装置に存在する、請求項1に記載のデータ処理システム。
  8. データパケットを処理し、各データパケットは、1つ又は複数のネットワークプロトコルに従ってフォーマットされ、前記パーサ表、前記生成規則表及び前記セマンティックコード表は、異なるネットワークプロトコルに対する構文解析をサポートするように再プログラム可能である、請求項7に記載のデータ処理システム。
  9. データパケットを処理している間にネットワークプロトコルを用いてパーサ表を再プログラム可能記憶装置にロードすることができる、請求項8に記載のデータ処理システム。
  10. データ記憶エリアに接続され前記セマンティックコード実行エンジンがアクセス可能なマシンコンテキストデータインタフェースをさらに具備し、該マシンコンテキストデータインタフェースは、前記セマンティックコード実行エンジンが発行するマシンコンテキスト命令に応答して前記データ記憶エリアを管理し且つデータ操作を実行する、請求項1に記載のデータ処理システム。
  11. 前記マシンコンテキストデータインタフェースは、変数マシンコンテキストデータインタフェースと、アレイマシンコンテキストデータインタフェースと、を備え、該アレイマシンコンテキストデータインタフェースは、アレイデータに対するデータ操作を管理し且つ実行することができる、請求項10に記載のデータ処理システム。
  12. 前記アレイマシンコンテキストデータインタフェースは、少なくとも1つのデータ記憶エリアに、前記変数マシンコンテキストデータインタフェースがアクセスする前記データ記憶エリアのデータアクセスフォーマットとは異なるデータアクセスフォーマットでアクセスする、請求項11に記載のデータ処理システム。
  13. 少なくとも前記直接実行パーサ、前記パーサ表及び前記生成記憶表は、マイクロプロセッサ及びその付随するメモリを構成するソフトウェアを使用して実施される、請求項1に記載のデータ処理システム。
  14. 前記生成規則表は、ビットマスク化された終端記号を格納することができ、各ビットマスク化された終端記号は、対応する入力記号の選択されたビットが「ドントケア」ビットであることを示すことができる、請求項1に記載のデータ処理システム。
  15. 前記直接実行パーサは、LL構文解析、LR構文解析、LALR構文解析及び再帰降下構文解析を含む方法群から選択される構文解析方法を実行する、請求項1に記載のデータ処理システム。
  16. 前記直接実行パーサは、各スタック記号に対して異なってもよい可変入力記号先読みを使用して入力記号を構文解析することができる、請求項1に記載のデータ処理システム。
  17. 前記可変入力記号先読みを、前記生成規則とともに前記生成規則表に値として格納することができ、前記直接実行パーサは、前記スタックに生成規則をロードする場合に前記可変入力記号先読みをロードする、請求項16に記載のデータ処理システム。
  18. 前記パーサ表は、スタック記号とN個までの入力記号との組合せに対応するエントリを格納することができるワードサイズを有する、2値連想メモリ又は3値連想メモリ(CAM)を備える、請求項16に記載のデータ処理システム。
  19. 前記直接実行パーサは、アクセス毎に前記パーサ表にN個の入力記号を提供し、各CAMエントリは、該N個の入力記号のうちのいずれが前記CAMエントリに対する探索に作用するかを確定する、請求項18に記載のデータ処理システム。
  20. ネットワークパケットプロトコルによって解析されるパケットにあるデータ記号を受け取る入力ポートと、
    スタック記号を格納するスタックを有し、前記受け取ったデータ記号に応じてスタック記号を処理することができる直接実行パーサと、
    前記直接実行パーサがアクセス可能であり、前記直接実行パーサによって供給される少なくとも1つの受け取ったデータ記号及びスタック記号の組合せによりインデックス付けが可能な生成規則コードが投入されることが可能なパーサ表と、
    前記直接実行パーサがアクセス可能であり、前記直接実行パーサから供給される前記生成規則コードによってインデックス付けが可能な生成規則が投入されることが可能な生成規則表と、
    前記直接実行パーサによって指示されると、前記直接実行パーサによって示されるマシン命令セグメントを使用してマシン命令を実行することができる第1のセマンティックコード実行エンジンと、
    前記第1のセマンティックコード実行エンジンがアクセス可能であり、前記生成規則コードを用いて前記第1のセマンティックコード実行エンジンによりインデックス付けが可能なマシン命令セグメントが投入されることが可能なセマンティックコード表と、を具備する集積回路であって、
    前記直接実行パーサが前記少なくとも1つの受け取ったデータシンボル及び前記スタックシンボルを前記パーサ表に提供する際に、前記直接実行パーサが前記パーサ表から前記生成規則コードを少なくとも1つ受け取るようになっていることを特徴とする前記集積回路
  21. 前記直接実行パーサによって指示されると、該直接実行パーサによって示されるマシン命令を使用して、マシン命令を実行することができる第2のセマンティックコード実行エンジンをさらに具備し、前記第1のセマンティックコード実行エンジン及び第2のセマンティックコード実行エンジンは、並列マシン命令実行が可能である、請求項20に記載の集積回路。
  22. マイクロプロセッサを有する例外処理ユニットをさらに具備し、該例外処理ユニットは、前記第1及び第2のセマンティックコード実行エンジンのうちの少なくとも1つの要求時にプログラム可能なタスクを実行することができる、請求項21に記載の集積回路。
  23. 前記第1及び第2のセマンティックコード実行エンジンのうちの少なくとも1つに接続されたブロック入出力ポートをさらに具備し、該ブロック入出力ポートは、前記少なくとも1つのセマンティックコード実行エンジンの制御下でブロック入出力動作を開始することができる、請求項21に記載の集積回路。
  24. 生成規則コードは、前記直接実行パーサが、セマンティックコード表マシン命令の対応するセグメントを任意の利用可能なセマンティックコード実行エンジンに向けることができるか否か、又は前記セグメントを特定のセマンティックコード実行エンジンに向けるべきか否かを判断することができるようにする、請求項21に記載の集積回路。
  25. 前記直接実行パーサと前記第1のセマンティックコード実行エンジンとの間のインタフェースをさらに具備し、該インタフェースは、前記セマンティックコード実行エンジンによって指示される場合に前記直接実行パーサによるスタック記号処理を中断する能力を有する、請求項20に記載の集積回路。
  26. 前記パーサ表、生成規則表及びセマンティックコード表は、少なくとも部分的に再プログラム可能な記憶装置に存在する、請求項20に記載の集積回路。
  27. 前記パーサ表、生成規則表及びセマンティックコード表は、該集積回路とは別個のメモリに存在するより大きい表に対するキャッシュを含む、請求項26に記載の集積回路。
  28. データ記憶エリアに接続され前記セマンティックコード実行エンジンがアクセス可能なマシンコンテキストデータインタフェースをさらに具備し、該マシンコンテキストデータインタフェースは、前記セマンティックコード実行エンジンが発行するマシンコンテキスト命令に応答して前記データ記憶エリアを管理し且つデータ操作を実行する、請求項20に記載の集積回路。
  29. 前記データ記憶エリアは、少なくとも部分的に該集積回路に集積される、請求項28に記載の集積回路。
  30. 前記マシンコンテキストデータインタフェースは、変数マシンコンテキストデータインタフェースと、アレイマシンコンテキストデータインタフェースと、を備え、該アレイマシンコンテキストデータインタフェースは、アレイデータに対するデータ操作を管理し且つ実行することができる、請求項28に記載の集積回路。
  31. 前記アレイマシンコンテキストデータインタフェースは、少なくとも1つのデータ記憶エリアに、前記変数マシンコンテキストデータインタフェースがアクセスする前記データ記憶エリアのデータアクセスフォーマットとは異なるデータアクセスフォーマットでアクセスする、請求項30に記載の集積回路。
  32. ネットワークパケットプロトコルによって解析されるパケットにあるデータ記号を受け取る入力ポートと、
    スタック記号を格納するスタックを有し、前記受け取ったデータ記号に応じてスタック記号を処理することができる直接実行パーサと、
    前記直接実行パーサがアクセス可能であり、前記直接実行パーサによって供給される受け取ったデータ記号及びスタック記号の組合せによりインデックス付けが可能な生成規則コードが投入されることが可能なパーサ表と、
    前記直接実行パーサがアクセス可能であり、前記直接実行パーサから前記生成規則コードによってインデックス付けが可能な生成規則が投入されることが可能な生成規則表と、
    各々が、前記直接実行パーサによって指示されると、直接実行パーサによって示されるマシン命令セグメントを使用してマシン命令を実行することができる、複数のセマンティックコード実行エンジンと、
    前記複数のセマンティックコード実行エンジンがアクセス可能であり、前記生成規則コードを用いて前記複数のセマンティックコード実行エンジンの内の少なくとも一つによりインデックス付けが可能なマシン命令セグメントが投入されることが可能なセマンティックコード表と、
    データ記憶エリアに接続可能であり且つ前記複数のセマンティックコード実行エンジンがアクセス可能であって、前記データ記憶エリアを管理し、前記複数のセマンティックコード実行エンジンが発行するマシンコンテキスト命令に応答してデータ操作を実行するマシンコンテキストデータインタフェースと、を具備する集積回路であって、
    前記直接実行パーサが前記少なくとも1つの受け取ったデータシンボル及び前記スタックシンボルを前記パーサ表に提供するときに、前記直接実行パーサが前記パーサ表から前記生成規則コードを少なくとも1つ受け取るようになっていることを特徴とする前記集積回路
  33. 前記複数のセマンティックコード実行エンジンと前記セマンティックコード表との間の第1のバスと、
    前記複数のセマンティックコード実行エンジンと前記マシンコンテキストデータインタフェースとの間の第2のバスと、
    をさらに具備する、請求項32に記載の集積回路。
  34. 前記データ記号に対する前記複数のセマンティックコード実行エンジンアクセスを可能にする入力バスをさらに具備する、請求項33に記載の集積回路。
  35. 前記直接実行パーサと前記複数のセマンティックコード実行エンジンとの間のインタフェースをさらに具備し、該インタフェースは、各セマンティックコード実行エンジンに対するステータス情報にアクセスすることができ、セマンティックコード実行エンジンの前記ステータスに基づいて前記直接実行パーサによるスタック記号処理を中断する能力を有する、請求項32に記載の集積回路。
  36. 前記ステータス情報は、前記複数のセマンティックコード実行エンジンに対応し且つ該対応するセマンティックコード実行エンジンが設定可能な1組のセマフォを含む、請求項35に記載の集積回路。
  37. ネットワークパケットプロトコルによって解析されるパケットにあるデータ記号を受け取る入力ポートと、
    直接実行パーサであって、
    複数のスタック記号を格納しており、前記直接実行パーサ前記受け取ったデータ記号に応じて前記スタック記号を処理することができるようになっているスタックと、
    前記直接実行パーサが、生成規則コードが投入されることが可能なパーサ表にアクセスすることができるようにするパーサ表インタフェースであって、各生成規則コードは、前記直接実行パーサによって供給される受け取ったデータ記号及びスタック記号の組合せによりインデックス付けが可能であるパーサ表インタフェースと、
    前記直接実行パーサが、生成規則が投入されることが可能な生成規則表にアクセスすることができるようにする生成規則表インタフェースであって、各生成規則は、前記直接実行パーサから供給される生成規則コードによってインデックス付けが可能である、生成規則表インタフェースと、
    を備える直接実行パーサと、
    前記直接実行パーサによって指示されると、該直接実行パーサによって示されるマシン命令セグメントを使用してマシン命令を実行することができる第1のセマンティックコード実行エンジンと、
    前記第1のセマティックコード実行エンジンが、生成規則に対応するマシン命令セグメントが投入されることが可能なセマンティックコード表にアクセスすることができるようにするセマンティックコード表インタフェースと、を具備する集積回路であって、
    前記直接実行パーサが前記少なくとも1つの受け取ったデータシンボル及び前記スタックシンボルを前記パーサ表に提供する際に、前記直接実行パーサが前記パーサ表インタフェースを介して前記パーサ表から前記生成規則コードを少なくとも1つ受け取るようになっていることを特徴とする前記集積回路
  38. 回路上に集積される前記パーサ表、生成規則表及びセマンティックコード表の少なくとも一部をさらに備える、請求項37に記載の集積回路。
  39. 前記生成規則表は、ビットマスク化された終端記号を格納することができ、各ビットマスク化された終端記号は、対応する入力記号の選択されたビットが「ドントケア」ビットであることを示すことができる、請求項37に記載の集積回路。
  40. 前記直接実行パーサは、LL構文解析、LR構文解析、LALR構文解析及び再帰降下構文解析を含む方法群から選択される構文解析方法を実行する、請求項37に記載の集積回路。
  41. 前記直接実行パーサは、各スタック記号に対して異なってもよい可変入力記号先読みを使用して入力記号を構文解析することができる、請求項37に記載の集積回路。
  42. 前記可変入力記号先読みを、前記生成規則とともに前記生成規則表に値として格納することができ、前記直接実行パーサは、前記スタックに生成規則をロードする場合に前記可変入力記号先読みをロードする、請求項41に記載の集積回路。
  43. 前記パーサ表は、スタック記号とN個までの入力記号との組合せに対応するエントリを格納することができるワードサイズを有する、3値連想メモリ(CAM)を備える、請求項41に記載の集積回路。
  44. 前記直接実行パーサは、アクセス毎に前記パーサ表にN個の入力記号を提供し、各CAMエントリは、該N個の入力記号のうちのいずれが前記CAMエントリに対する探索に作用するかを確定する、請求項43に記載の集積回路。
  45. ネットワークパケットプロトコルを実施する方法であって、
    該プロトコルを、各々が終端記号群及び非終端記号群から選択される少なくとも1つの記号を含む1組の構文解析可能な文法的生成規則と、実行エンジンが該生成規則の少なくともいくつかに対して実行する1組のマシンコンテキストタスクと、に分割すること、
    各生成規則に対し非終端記号及び生成規則コードを割り当てること、
    前記文法的生成規則を、生成規則コードによってインデックス付けが可能な生成規則メモリ内のマシン格納可能フォーマットで編成すること、
    前記マシンコンテキストタスクを、前記対応する生成規則に関連する前記生成規則コードを有する前記実行エンジンによってインデックス付けが可能なセマンティックコードメモリ内の実行エンジン命令コードフォーマットで編成すること、及び
    生成規則コードのパーサ表を、前記ネットワークパケットプロトコルによって構文解析されるパケットに現れる非終端記号及び少なくとも1つの記号の組合せによってインデックス付けが可能なマシン格納可能フォーマットで生成すること
    を含むネットワークパケットプロトコルを実施する方法。
  46. 前記マシン格納可能フォーマット生成規則において前記記号に接頭コードを添付することをさらに含み、該接頭コードは、各記号が終端記号であるか非終端記号であるかを示す、請求項45に記載のネットワークパケットプロトコルを実施する方法。
  47. 前記接頭コードはさらに、終端記号が、それが対にされる任意のネットワークパケットプロトコル記号と一致することができるか否かを示す、請求項46に記載のネットワークパケットプロトコルを実施する方法。
  48. 少なくとも1つの終端記号に対し、その記号にビットマスクを割り当てること、及び該ビットマスクをその記号を含む前記生成規則とともに格納すること、をさらに含む、請求項45に記載のネットワークパケットプロトコルを実施する方法。
  49. 非終端記号と複数の入力記号との組合せに基づいて少なくともいくつかのインデックスを前記パーサ表に設定することをさらに含む、請求項45に記載のネットワークパケットプロトコルを実施する方法。
  50. 前記パーサ表の各インデックスは、N個のインデックス位置におけるN個までの入力記号に基づくことができ、少なくともいくつかのインデックスを前記パーサ表に設定することは、各インデックスに対し、1〜Nのインデックス位置を使用すること、及び該インデックス位置の残りがある場合は該インデックス位置の残りを「ドントケア」状態に設定することを含む、請求項49に記載のネットワークパケットプロトコルを実施する方法。
JP2004567407A 2003-01-24 2003-11-12 再構成可能なセマンティックプロセッサ Expired - Fee Related JP4203023B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/351,030 US7130987B2 (en) 2003-01-24 2003-01-24 Reconfigurable semantic processor
PCT/US2003/036225 WO2004068271A2 (en) 2003-01-24 2003-11-12 A reconfigurable semantic processor

Publications (2)

Publication Number Publication Date
JP2006513667A JP2006513667A (ja) 2006-04-20
JP4203023B2 true JP4203023B2 (ja) 2008-12-24

Family

ID=32735705

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004567407A Expired - Fee Related JP4203023B2 (ja) 2003-01-24 2003-11-12 再構成可能なセマンティックプロセッサ

Country Status (9)

Country Link
US (2) US7130987B2 (ja)
EP (1) EP1590744A4 (ja)
JP (1) JP4203023B2 (ja)
KR (1) KR20050106591A (ja)
CN (1) CN1742272A (ja)
AU (1) AU2003290817A1 (ja)
CA (1) CA2513097A1 (ja)
TW (1) TWI239475B (ja)
WO (1) WO2004068271A2 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7415596B2 (en) * 2003-01-24 2008-08-19 Gigafin Networks, Inc. Parser table/production rule table configuration using CAM and SRAM
WO2004081761A2 (en) * 2003-03-12 2004-09-23 Sensory Networks Inc. Apparatus and method for memory efficient, programmable, pattern matching finite state machine hardware
US7751440B2 (en) * 2003-12-04 2010-07-06 Intel Corporation Reconfigurable frame parser
US7219319B2 (en) * 2004-03-12 2007-05-15 Sensory Networks, Inc. Apparatus and method for generating state transition rules for memory efficient programmable pattern matching finite state machine hardware
US20050223369A1 (en) * 2004-03-31 2005-10-06 Intel Corporation Method and system for programming a reconfigurable processing element
US7251722B2 (en) * 2004-05-11 2007-07-31 Mistletoe Technologies, Inc. Semantic processor storage server architecture
JP2008509484A (ja) * 2004-08-05 2008-03-27 ミスルトウ テクノロジーズ, インコーポレイテッド セマンティックプロセッサ内のデータコンテキスト切り替え
US20070027991A1 (en) * 2005-07-14 2007-02-01 Mistletoe Technologies, Inc. TCP isolation with semantic processor TCP state machine
US20070022275A1 (en) * 2005-07-25 2007-01-25 Mistletoe Technologies, Inc. Processor cluster implementing conditional instruction skip
US8387029B2 (en) * 2005-07-25 2013-02-26 Hercules Software, Llc Direct execution virtual machine
KR100697536B1 (ko) 2005-11-08 2007-03-20 전자부품연구원 TV-Anytime 서비스에서 get_Data 오퍼레이션을 이용한 사용자 정보 기초 검색 방법
KR100681199B1 (ko) * 2006-01-11 2007-02-09 삼성전자주식회사 코어스 그레인 어레이에서의 인터럽트 처리 방법 및 장치
US20080022401A1 (en) * 2006-07-21 2008-01-24 Sensory Networks Inc. Apparatus and Method for Multicore Network Security Processing
US8117530B2 (en) * 2007-02-19 2012-02-14 International Business Machines Corporation Extensible markup language parsing using multiple XML parsers
US9424339B2 (en) 2008-08-15 2016-08-23 Athena A. Smyros Systems and methods utilizing a search engine
US9286892B2 (en) 2014-04-01 2016-03-15 Google Inc. Language modeling in speech recognition
CN110737628A (zh) * 2019-10-17 2020-01-31 辰芯科技有限公司 一种可重构处理器和可重构处理器系统
CN114679504B (zh) * 2022-05-27 2022-09-06 成都数联云算科技有限公司 Udp报文解析方法、装置及计算机设备

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4837735A (en) * 1987-06-09 1989-06-06 Martin Marietta Energy Systems, Inc. Parallel machine architecture for production rule systems
US5193192A (en) * 1989-12-29 1993-03-09 Supercomputer Systems Limited Partnership Vectorized LR parsing of computer programs
US5487147A (en) * 1991-09-05 1996-01-23 International Business Machines Corporation Generation of error messages and error recovery for an LL(1) parser
US5805808A (en) * 1991-12-27 1998-09-08 Digital Equipment Corporation Real time parser for data packets in a communications network
US5632034A (en) * 1993-06-01 1997-05-20 International Business Machines Corporation Controlling method invocation sequence through virtual functions in an object-oriented class library
US5581696A (en) * 1995-05-09 1996-12-03 Parasoft Corporation Method using a computer for automatically instrumenting a computer program for dynamic debugging
US5793954A (en) * 1995-12-20 1998-08-11 Nb Networks System and method for general purpose network analysis
US6493761B1 (en) * 1995-12-20 2002-12-10 Nb Networks Systems and methods for data processing using a protocol parsing engine
US6034963A (en) * 1996-10-31 2000-03-07 Iready Corporation Multiple network protocol encoder/decoder and data processor
US5916305A (en) * 1996-11-05 1999-06-29 Shomiti Systems, Inc. Pattern recognition in data communications using predictive parsers
JP2000514944A (ja) * 1997-05-08 2000-11-07 アイレディー コーポレイション オブジェクト指向プログラミング言語のためのハードウェア加速器
US6330659B1 (en) * 1997-11-06 2001-12-11 Iready Corporation Hardware accelerator for an object-oriented programming language
US6122757A (en) * 1997-06-27 2000-09-19 Agilent Technologies, Inc Code generating system for improved pattern matching in a protocol analyzer
US5991539A (en) * 1997-09-08 1999-11-23 Lucent Technologies, Inc. Use of re-entrant subparsing to facilitate processing of complicated input data
US6341130B1 (en) * 1998-02-09 2002-01-22 Lucent Technologies, Inc. Packet classification method and apparatus employing two fields
US6208649B1 (en) * 1998-03-11 2001-03-27 Cisco Technology, Inc. Derived VLAN mapping technique
US6119215A (en) * 1998-06-29 2000-09-12 Cisco Technology, Inc. Synchronization and control system for an arrayed processing engine
US6145073A (en) * 1998-10-16 2000-11-07 Quintessence Architectures, Inc. Data flow integrated circuit architecture
US6356950B1 (en) * 1999-01-11 2002-03-12 Novilit, Inc. Method for encoding and decoding data according to a protocol specification
US6763499B1 (en) * 1999-07-26 2004-07-13 Microsoft Corporation Methods and apparatus for parsing extensible markup language (XML) data streams
US6549916B1 (en) * 1999-08-05 2003-04-15 Oracle Corporation Event notification system tied to a file system
US6772413B2 (en) * 1999-12-21 2004-08-03 Datapower Technology, Inc. Method and apparatus of data exchange using runtime code generator and translator
US6985964B1 (en) * 1999-12-22 2006-01-10 Cisco Technology, Inc. Network processor system including a central processor and at least one peripheral processor
US6892237B1 (en) * 2000-03-28 2005-05-10 Cisco Technology, Inc. Method and apparatus for high-speed parsing of network messages
US6952666B1 (en) * 2000-07-20 2005-10-04 Microsoft Corporation Ranking parser for a natural language processing system
JP3690730B2 (ja) * 2000-10-24 2005-08-31 インターナショナル・ビジネス・マシーンズ・コーポレーション 構造回復システム、構文解析システム、変換システム、コンピュータ装置、構文解析方法、及び記憶媒体
US20020116527A1 (en) * 2000-12-21 2002-08-22 Jin-Ru Chen Lookup engine for network devices
US20020083331A1 (en) * 2000-12-21 2002-06-27 802 Systems, Inc. Methods and systems using PLD-based network communication protocols
US7379475B2 (en) * 2002-01-25 2008-05-27 Nvidia Corporation Communications processor
US8218555B2 (en) * 2001-04-24 2012-07-10 Nvidia Corporation Gigabit ethernet adapter
US6587750B2 (en) * 2001-09-25 2003-07-01 Intuitive Surgical, Inc. Removable infinite roll master grip handle and touch sensor for robotic surgery
US6920154B1 (en) * 2001-12-17 2005-07-19 Supergate Technology Usa, Inc. Architectures for a modularized data optimization engine and methods therefor
US7535913B2 (en) * 2002-03-06 2009-05-19 Nvidia Corporation Gigabit ethernet adapter supporting the iSCSI and IPSEC protocols
US7426634B2 (en) * 2003-04-22 2008-09-16 Intruguard Devices, Inc. Method and apparatus for rate based denial of service attack detection and prevention

Also Published As

Publication number Publication date
WO2004068271A3 (en) 2005-02-10
US7130987B2 (en) 2006-10-31
CA2513097A1 (en) 2004-08-12
CN1742272A (zh) 2006-03-01
KR20050106591A (ko) 2005-11-10
US20070083858A1 (en) 2007-04-12
US20040148415A1 (en) 2004-07-29
EP1590744A2 (en) 2005-11-02
TW200419443A (en) 2004-10-01
AU2003290817A8 (en) 2004-08-23
TWI239475B (en) 2005-09-11
EP1590744A4 (en) 2007-12-05
WO2004068271A2 (en) 2004-08-12
AU2003290817A1 (en) 2004-08-23
JP2006513667A (ja) 2006-04-20

Similar Documents

Publication Publication Date Title
US20070083858A1 (en) Reconfigurable semantic processor
US7529746B2 (en) Search circuit having individually selectable search engines
US7478223B2 (en) Symbol parsing architecture
US7644080B2 (en) Method and apparatus for managing multiple data flows in a content search system
US7539032B2 (en) Regular expression searching of packet contents using dedicated search circuits
US7624105B2 (en) Search engine having multiple co-processors for performing inexact pattern search operations
US9916145B2 (en) Utilizing special purpose elements to implement a FSM
US7539031B2 (en) Inexact pattern searching using bitmap contained in a bitcheck command
US7464254B2 (en) Programmable processor apparatus integrating dedicated search registers and dedicated state machine registers with associated execution hardware to support rapid application of rulesets to data
US20050281281A1 (en) Port input buffer architecture
JP2005537592A (ja) データ内のパターンの高速文脈サーチ及び特徴付けを実行するためのプログラム可能な規則処理装置
US20060259508A1 (en) Method and apparatus for detecting semantic elements using a push down automaton
US20070043871A1 (en) Debug non-terminal symbol for parser error handling
JP2006505043A (ja) ハードウェアパーサアクセラレータ
US11861171B2 (en) High-throughput regular expression processing with capture using an integrated circuit
US11983122B2 (en) High-throughput regular expression processing with path priorities using an integrated circuit
US12014072B2 (en) High-throughput regular expression processing using an integrated circuit
WO2008036501A2 (en) Regular expression searching of packet contents using dedicated search circuits

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080212

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080428

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080508

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080611

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080618

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080708

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080715

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080812

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080909

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081009

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111017

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees