(57)【要約】データプロセッサ並びにそれらの構成及び使用の方法を開示する。従来のフォン・ノイマンマイクロプロセッサとは対照的に、開示するプロセッサはセマンティックプロセッサであり、それらは、入力ストリームを構文解析し、１つ又は複数のセマンティック実行エンジンに対して、構文解析されているものに応じてコードセグメントを実行するように命令する。パケットデータストリーム等の構造の定義された入力ストリームの場合、これらセマンティックプロセッサは、フォン・ノイマンシステムに比較して経済的且つ高速であり得る。いくつかの任意のコンポーネントがデバイス動作を補強することができる。たとえば、マシンコンテキストデータインタフェースは、セマンティック実行エンジンが物理メモリを管理するのを軽減し、複数のエンジンによるメモリへの規則正しいアクセスを可能にし、且つ共通アクセス動作を実施する。さらに、セマンティック実行エンジンに単純なフォン・ノイマン例外処理ユニットを付加することによって、より複雑であるが低頻度であるか又はタイムクリティカルでない動作を実行することができる。
2006513667.tif 000002
【特許請求の範囲】
【請求項１】
データ記号を受け取る入力ポートと、
スタック記号を格納するスタックを有し、前記受け取られたデータ記号に応じてスタック記号を処理することができる直接実行パーサと、
該パーサがアクセス可能であり、少なくとも１つの受け取られたデータ記号及び前記パーサによって提供されるスタック記号の組合せによりインデックス付けが可能な生成規則コードが投入されることが可能なパーサ表と、
前記パーサがアクセス可能であり、生成規則コードによってインデックス付けが可能な生成規則が投入されることが可能な生成規則表と、
前記直接実行パーサによって指示されると、該パーサによって示されるマシン命令セグメントを使用してマシン命令を実行することができる第１のセマンティックコード実行エンジンと、
該セマンティックコード実行エンジンがアクセス可能であり、生成規則コードによってインデックス付けが可能なマシン命令セグメントが投入されることが可能なセマンティックコード表と、
を具備するデータ処理システム。
【請求項２】
前記直接実行パーサによって指示されると、該パーサによって示されるマシン命令を使用して、マシン命令を実行することができる第２のセマンティックコード実行エンジンをさらに具備し、前記第１のセマンティックコード実行エンジン及び第２のセマンティックコード実行エンジンは、並列マシン命令実行が可能である、請求項１に記載のデータ処理システム。
【請求項３】
マイクロプロセッサ及び関連するメモリを有する例外処理ユニットをさらに具備し、該例外処理ユニットは、前記セマンティックコード実行エンジンのうちの少なくとも１つの要求時にタスクを実行することができる、請求項２に記載のデータ処理システム。
【請求項４】
前記セマンティックコード実行エンジンのうちの少なくとも１つに接続されたブロック入出力ポートをさらに具備し、該ブロック入出力ポートは、前記少なくとも１つのセマンティックコード実行エンジンの制御下でブロック入出力動作を開始することができる、請求項２に記載のデータ処理システム。
【請求項５】
生成規則コードは、前記直接実行パーサが、セマンティックコード表マシン命令の対応するセグメントを任意の利用可能なセマンティックコード実行エンジンに向けることができるか否か、又は前記セグメントを特定のセマンティックコード実行エンジンに向けるべきか否かを判断することができるようにする、請求項２に記載のデータ処理システム。
【請求項６】
前記直接実行パーサと、前記セマンティックコード実行エンジンとの間のインタフェースをさらに具備し、該インタフェースは、前記セマンティックコード実行エンジンによって指示される場合に前記直接実行パーサによるスタック記号処理を中断する能力を有する、請求項１に記載のデータ処理システム。
【請求項７】
前記パーサ表、前記生成規則表及び前記セマンティックコード表は、少なくとも部分的に再プログラム可能な記憶装置に存在する、請求項１に記載のデータ処理システム。
【請求項８】
データパケットを処理し、各データパケットは、１つ又は複数のネットワークプロトコルに従ってフォーマットされ、前記パーサ表、前記生成規則表及び前記セマンティックコード表は、異なるネットワークプロトコルに対する構文解析をサポートするように再プログラム可能である、請求項７に記載のデータ処理システム。
【請求項９】
データパケットを処理している間にネットワークプロトコルを用いてパーサ表を再プログラム可能記憶装置にロードすることができる、請求項８に記載のデータ処理システム。
【請求項１０】
データ記憶エリアに接続され前記セマンティックコード実行エンジンがアクセス可能なマシンコンテキストデータインタフェースをさらに具備し、該マシンコンテキストデータインタフェースは、前記セマンティックコード実行エンジンが発行するマシンコンテキスト命令に応答して前記データ記憶エリアを管理し且つデータ操作を実行する、請求項１に記載のデータ処理システム。
【請求項１１】
前記マシンコンテキストデータインタフェースは、変数マシンコンテキストデータインタフェースと、アレイマシンコンテキストデータインタフェースと、を備え、該アレイマシンコンテキストデータインタフェースは、アレイデータに対するデータ操作を管理し且つ実行することができる、請求項１０に記載のデータ処理システム。
【請求項１２】
前記アレイマシンコンテキストデータインタフェースは、少なくとも１つのデータ記憶エリアに、前記変数マシンコンテキストデータインタフェースがアクセスする前記データ記憶エリアのデータアクセスフォーマットとは異なるデータアクセスフォーマットでアクセスする、請求項１１に記載のデータ処理システム。
【請求項１３】
少なくとも前記直接実行パーサ、前記パーサ表及び前記生成記憶表は、マイクロプロセッサ及びその付随するメモリを構成するソフトウェアを使用して実施される、請求項１に記載のデータ処理システム。
【請求項１４】
前記生成規則表は、ビットマスク化された終端記号を格納することができ、各ビットマスク化された終端記号は、対応する入力記号の選択されたビットが「ドントケア」ビットであることを示すことができる、請求項１に記載のデータ処理システム。
【請求項１５】
前記直接実行パーサは、ＬＬ構文解析、ＬＲ構文解析、ＬＡＬＲ構文解析及び再帰降下構文解析を含む方法群から選択される構文解析方法を実行する、請求項１に記載のデータ処理システム。
【請求項１６】
前記直接実行パーサは、各スタック記号に対して異なってもよい可変入力記号先読みを使用して入力記号を構文解析することができる、請求項１に記載のデータ処理システム。
【請求項１７】
前記可変入力記号先読みを、前記生成規則とともに前記生成規則表に値として格納することができ、前記直接実行パーサは、前記スタックに生成規則をロードする場合に前記可変入力記号先読みをロードする、請求項１６に記載のデータ処理システム。
【請求項１８】
前記パーサ表は、スタック記号とＮ個までの入力記号との組合せに対応するエントリを格納することができるワードサイズを有する、２値連想メモリ又は３値連想メモリ（ＣＡＭ）を備える、請求項１６に記載のデータ処理システム。
【請求項１９】
前記パーサは、アクセス毎に前記パーサ表にＮ個の入力記号を提供し、各ＣＡＭエントリは、該Ｎ個の入力記号のうちのいずれが前記ＣＡＭエントリに対する探索に作用するかを確定する、請求項１８に記載のデータ処理システム。
【請求項２０】
データ記号を受け取る入力ポートと、
スタック記号を格納するスタックを有し、前記受け取られたデータ記号に応じてスタック記号を処理することができる直接実行パーサと、
該パーサがアクセス可能であり、受け取られたデータ記号及び前記パーサによって提供されるスタック記号の組合せによりインデックス付けが可能な生成規則コードが投入されることが可能なパーサ表と、
前記パーサがアクセス可能であり、生成規則コードによってインデックス付けが可能な生成規則が投入されることが可能な生成規則表と、
前記直接実行パーサによって指示されると、該パーサによって示されるマシン命令セグメントを使用してマシン命令を実行することができる第１のセマンティックコード実行エンジンと、
該セマンティックコード実行エンジンがアクセス可能であり、生成規則コードによってインデックス付けが可能なマシン命令セグメントが投入されることが可能なセマンティックコード表と、
を具備する集積回路。
【請求項２１】
前記直接実行パーサによって指示されると、該パーサによって示されるマシン命令を使用して、マシン命令を実行することができる第２のセマンティックコード実行エンジンをさらに具備し、前記第１のセマンティックコード実行エンジン及び第２のセマンティックコード実行エンジンは、並列マシン命令実行が可能である、請求項２０に記載の集積回路。
【請求項２２】
マイクロプロセッサを有する例外処理ユニットをさらに具備し、該例外処理ユニットは、前記セマンティックコード実行エンジンのうちの少なくとも１つの要求時にプログラム可能なタスクを実行することができる、請求項２１に記載の集積回路。
【請求項２３】
前記セマンティックコード実行エンジンのうちの少なくとも１つに接続されたブロック入出力ポートをさらに具備し、該ブロック入出力ポートは、前記少なくとも１つのセマンティックコード実行エンジンの制御下でブロック入出力動作を開始することができる、請求項２１に記載の集積回路。
【請求項２４】
生成規則コードは、前記直接実行パーサが、セマンティックコード表マシン命令の対応するセグメントを任意の利用可能なセマンティックコード実行エンジンに向けることができるか否か、又は前記セグメントを特定のセマンティックコード実行エンジンに向けるべきか否かを判断することができるようにする、請求項２１に記載の集積回路。
【請求項２５】
前記直接実行パーサと前記セマンティックコード実行エンジンとの間のインタフェースをさらに具備し、該インタフェースは、前記セマンティックコード実行エンジンによって指示される場合に前記直接実行パーサによるスタック記号処理を中断する能力を有する、請求項２０に記載の集積回路。
【請求項２６】
前記パーサ表、生成規則表及びセマンティックコード表は、少なくとも部分的に再プログラム可能な記憶装置に存在する、請求項２０に記載の集積回路。
【請求項２７】
前記パーサ表、生成規則表及びセマンティックコード表は、該集積回路とは別個のメモリに存在するより大きい表に対するキャッシュを含む、請求項２６に記載の集積回路。
【請求項２８】
データ記憶エリアに接続され前記セマンティックコード実行エンジンがアクセス可能なマシンコンテキストデータインタフェースをさらに具備し、該マシンコンテキストデータインタフェースは、前記セマンティックコード実行エンジンが発行するマシンコンテキスト命令に応答して前記データ記憶エリアを管理し且つデータ操作を実行する、請求項２０に記載の集積回路。
【請求項２９】
前記データ記憶エリアは、少なくとも部分的に該集積回路に集積される、請求項２８に記載の集積回路。
【請求項３０】
前記マシンコンテキストデータインタフェースは、変数マシンコンテキストデータインタフェースと、アレイマシンコンテキストデータインタフェースと、を備え、該アレイマシンコンテキストデータインタフェースは、アレイデータに対するデータ操作を管理し且つ実行することができる、請求項２８に記載の集積回路。
【請求項３１】
前記アレイマシンコンテキストデータインタフェースは、少なくとも１つのデータ記憶エリアに、前記変数マシンコンテキストデータインタフェースがアクセスする前記データ記憶エリアのデータアクセスフォーマットとは異なるデータアクセスフォーマットでアクセスする、請求項３０に記載の集積回路。
【請求項３２】
データ記号を受け取る入力ポートと、
スタック記号を格納するスタックを有し、前記受け取られたデータ記号に応じてスタック記号を処理することができる直接実行パーサと、
該パーサがアクセス可能であり、受け取られたデータ記号及び前記パーサによって提供されるスタック記号の組合せによりインデックス付けが可能な生成規則コードが投入されることが可能なパーサ表と、
前記パーサがアクセス可能であり、生成規則コードによってインデックス付けが可能な生成規則が投入されることが可能な生成規則表と、
各々が、前記直接実行パーサによって指示されると、該パーサによって示されるマシン命令セグメントを使用してマシン命令を実行することができる、複数のセマンティックコード実行エンジンと、
該セマンティックコード実行エンジンがアクセス可能であり、生成規則コードによってインデックス付けが可能なマシン命令セグメントが投入されることが可能なセマンティックコード表と、
データ記憶エリアに接続可能であり且つ前記セマンティックコード実行エンジンがアクセス可能であって、前記データ記憶エリアを管理し、前記セマンティックコード実行エンジンが発行するマシンコンテキスト命令に応答してデータ操作を実行するマシンコンテキストデータインタフェースと、
を具備する集積回路。
【請求項３３】
前記セマンティックコード実行エンジンと前記セマンティックコード表との間の第１のバスと、
前記セマンティックコード実行エンジンと前記マシンコンテキストデータインタフェースとの間の第２のバスと、
をさらに具備する、請求項３２に記載の集積回路。
【請求項３４】
前記データ記号に対する前記セマンティックコード実行エンジンアクセスを可能にする入力バスをさらに具備する、請求項３３に記載の集積回路。
【請求項３５】
前記直接実行パーサと前記セマンティックコード実行エンジンとの間のインタフェースをさらに具備し、該インタフェースは、各セマンティックコード実行エンジンに対するステータス情報にアクセスすることができ、セマンティックコード実行エンジンの前記ステータスに基づいて前記直接実行パーサによるスタック記号処理を中断する能力を有する、請求項３２に記載の集積回路。
【請求項３６】
前記ステータス情報は、前記セマンティックコード実行エンジンに対応し且つ該対応するセマンティックコード実行エンジンが設定可能な１組のセマフォを含む、請求項３５に記載の集積回路。
【請求項３７】
データ記号を受け取る入力ポートと、
直接実行パーサであって、
スタック記号を格納するスタックであって、該パーサは前記受け取られたデータ記号に応じてスタック記号を処理することができる、スタックと、
該パーサが、生成規則コードが投入されることが可能なパーサ表にアクセスすることができるようにするパーサ表インタフェースであって、各コードは、受け取られたデータ記号及び該パーサによって提供されるスタック記号の組合せによりインデックス付けが可能である、パーサ表インタフェースと、
該パーサが、生成規則が投入されることが可能な生成規則表にアクセスすることができるようにする生成規則表インタフェースであって、各規則は、生成規則コードによってインデックス付けが可能である、生成規則表インタフェースと、
を備える直接実行パーサと、
前記直接実行パーサによって指示されると、該パーサによって示されるマシン命令セグメントを使用してマシン命令を実行することができる第１のセマンティックコード実行エンジンと、
該セマティックコード実行エンジンが、生成規則に対応するマシン命令セグメントが投入されることが可能なセマンティックコード表にアクセスすることができるようにするセマンティックコード表インタフェースと、
を具備する集積回路。
【請求項３８】
回路上に集積される前記パーサ表、生成規則表及びセマンティックコード表の少なくとも一部をさらに備える、請求項３６に記載の集積回路。
【請求項３９】
前記生成規則表は、ビットマスク化された終端記号を格納することができ、各ビットマスク化された終端記号は、対応する入力記号の選択されたビットが「ドントケア」ビットであることを示すことができる、請求項３６に記載の集積回路。
【請求項４０】
前記直接実行パーサは、ＬＬ構文解析、ＬＲ構文解析、ＬＡＬＲ構文解析及び再帰降下構文解析を含む方法群から選択される構文解析方法を実行する、請求項３６に記載の集積回路。
【請求項４１】
前記直接実行パーサは、各スタック記号に対して異なってもよい可変入力記号先読みを使用して入力記号を構文解析することができる、請求項３６に記載の集積回路。
【請求項４２】
前記可変入力記号先読みを、前記生成規則とともに前記生成規則表に値として格納することができ、前記直接実行パーサは、前記スタックに生成規則をロードする場合に前記可変入力記号先読みをロードする、請求項４１に記載の集積回路。
【請求項４３】
前記パーサ表は、スタック記号とＮ個までの入力記号との組合せに対応するエントリを格納することができるワードサイズを有する、３値連想メモリ（ＣＡＭ）を備える、請求項４１に記載の集積回路。
【請求項４４】
前記パーサは、アクセス毎に前記パーサ表にＮ個の入力記号を提供し、各ＣＡＭエントリは、該Ｎ個の入力記号のうちのいずれが前記ＣＡＭエントリに対する探索に作用するかを確定する、請求項４３に記載の集積回路。
【請求項４５】
データグラムデータ入力ストリームを処理するデータプロセッサを構成する方法であって、
データグラムを解釈するための１組の生成規則を生成規則表に格納することであって、各規則は１つ又は複数の記号を含む、格納すること、
１組のセマンティック実行エンジン命令をセマンティックコード表に格納することであって、前記セマンティック実行エンジン命令は、前記生成規則のうちの少なくともいくつかに関連するコードセグメントを含む、格納すること、及び
前記生成規則を参照する１組の生成規則コードをパーサ表に格納すること、
を含むデータグラムデータ入力ストリームを処理するデータプロセッサを構成する方法。
【請求項４６】
前記データグラムのデータ入力ストリームの開始記号を受け取ると、前記格納された生成規則に従ってデータグラムの構文解析を開始するように、直接実行パーサを初期化することをさらに含む、請求項４５に記載のデータグラムデータ入力ストリームを処理するデータプロセッサを構成する方法。
【請求項４７】
ネットワークプロセッサを操作する方法であって、
入力ポートにおいて、複数のデータ記号を含むデータグラムの開始の受取りを検出すること、
直接実行パーサに対し、１組の格納された生成規則に従って前記データグラムからのデータ記号を構文解析するように指示すること、及び、
前記構文解析プロセス中に少なくとも一度、セマンティックコード実行エンジンに対し生成規則に関連するコードセグメントを実行するように指示すること
を含むネットワークプロセッサを操作する方法。
【請求項４８】
前記コードセグメントの実行中に、付随するマシンコンテキストデータインタフェースに対するマシンコンテキストデータ要求を生成する命令を実行すること、及び該マシンコンテキストデータ要求を少なくとも１つの物理メモリ動作に変換することをさらに含む、請求項４７に記載のネットワークプロセッサを操作する方法。
【請求項４９】
セマンティックコード実行エンジンが処理することができないデータグラム内容の発生を検出すること、及び
例外処理ユニットに対し前記データグラム内容を処理するように指示すること
をさらに含む、請求項４７に記載のネットワークプロセッサを操作する方法。
【請求項５０】
前記コードセグメントを実行することは、ブロック入出力データ操作をブロック入出力ポートに向けることを含む、請求項４７に記載のネットワークプロセッサを操作する方法。
【請求項５１】
ネットワークパケットプロトコルを実施する方法であって、
該プロトコルを、各々が終端記号群及び非終端記号群から選択される少なくとも１つの記号を含む１組の構文解析可能な文法的生成規則と、実行エンジンが該生成規則の少なくともいくつかに対して実行する１組のマシンコンテキストタスクと、に分割すること、
各生成規則に対し非終端記号及び生成規則コードを割り当てること、
前記文法的生成規則を、生成規則コードによってインデックス付けが可能なマシン格納可能フォーマットで編成すること、
前記マシンコンテキストタスクを、前記対応する生成規則に関連する前記生成規則コードによってインデックス付けが可能な実行エンジン命令コードフォーマットで編成すること、及び
生成規則コードのパーサ表を、前記ネットワークパケットプロトコルによって構文解析されるパケットに現れる非終端記号及び少なくとも１つの記号の組合せによってインデックス付けが可能なマシン格納可能フォーマットで生成すること
を含むネットワークパケットプロトコルを実施する方法。
【請求項５２】
前記マシン格納可能フォーマット生成規則において前記記号に接頭コードを添付することをさらに含み、該接頭コードは、各記号が終端記号であるか非終端記号であるかを示す、請求項５１に記載のネットワークパケットプロトコルを実施する方法。
【請求項５３】
前記接頭コードはさらに、終端記号が、それが対にされる任意のネットワークパケットプロトコル記号と一致することができるか否かを示す、請求項５２に記載のネットワークパケットプロトコルを実施する方法。
【請求項５４】
少なくとも１つの終端記号に対し、その記号にビットマスクを割り当てること、及び該ビットマスクをその記号を含む前記生成規則とともに格納すること、をさらに含む、請求項５１に記載のネットワークパケットプロトコルを実施する方法。
【請求項５５】
非終端記号と複数の入力記号との組合せに基づいて少なくともいくつかのインデックスを前記パーサ表に設定することをさらに含む、請求項５１に記載のネットワークパケットプロトコルを実施する方法。
【請求項５６】
前記パーサ表の各インデックスは、Ｎ個のインデックス位置におけるＮ個までの入力記号に基づくことができ、少なくともいくつかのインデックスを前記パーサ表に設定することは、各インデックスに対し、１〜Ｎのインデックス位置を使用すること、及び該インデックス位置の残りがある場合は該インデックス位置の残りを「ドントケア」状態に設定することを含む、請求項５５に記載のネットワークパケットプロトコルを実施する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、包括的にはデジタルプロセッサ及び処理に関し、特にデータストリーム処理のためのデジタルセマンティックプロセッサに関する。
【背景技術】
【０００２】
伝統的なプログラマブルコンピュータは、フォン・ノイマン、すなわちＶＮアーキテクチャを使用する。ＶＮアーキテクチャは、その最も単純な形態では、通常は、有用な操作を可能にする何らかの形態の入出力とともに、中央処理装置（ＣＰＵ）及び付随するメモリを備える。たとえば、図１は、ＣＰＵ３０、メモリコントローラ４０、メモリ５０及び入出力（Ｉ／Ｏ）デバイス６０を備えるコンピュータ２０を示す。ＣＰＵ３０は、アドレス／制御バス４２によりデータ要求をメモリコントローラ４０に送出し、データ自体は、データバス４４によって渡される。メモリコントローラ４０は、メモリ５０及びＩ／Ｏデバイス６０と通信することにより、ＣＰＵ３０による（又は場合によってはＩ／Ｏデバイスによる）要求に応じてデータ読出し及び書込みを実行する。図示しないが、さまざまなデバイスがＣＰＵに「割り込み」、タスクを切り替えさせる可能性もある。
【０００３】
ＶＮマシンでは、メモリ５０はプログラム命令及びデータをともに格納する。ＣＰＵ３０は、メモリからプログラム命令をフェッチし、そこに含まれるコマンドを実行する。通常の命令は、ＣＰＵに対し、データをメモリからレジスタにロードし、レジスタからメモリにデータを書き込み、そのオンボードレジスタのデータを使用して算術又は論理演算を実行し、又は異なる命令に分岐し実行を継続するように命令する。理解することができるように、ＣＰＵ３０は、命令をフェッチし、データをフェッチし、又はデータバス４４によりデータを書き込むのに非常に多くの時間を費やす。有用であり得るデータ及び命令をキャッシュし、パイプライン化を実施し、平均メモリサイクル時間を低減するように入念な（且つ通常費用のかかる）方式を実施することができるが、結局のところデータバス４４がプロセッサ性能におけるボトルネックである。
【０００４】
ＶＮアーキテクチャは、「汎用」にすることができ、且つ比較的迅速に再構成することができるため、ゲートロジックに比較して魅力がある。すなわち、十分な時間があれば、プログラム命令の新たなセットを単にロードすることにより、非常に複雑な機能さえも実行するようにＶＮマシンの機能を変更することができる。ＶＮアーキテクチャの柔軟性に対するトレードオフは、複雑性及び非効率である。このため、ほとんど何でも行うことができるということは、少しの単純なものを効率的に行うことができるということを犠牲にして成り立つ。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
使用されているか又は近いうちに使用される多くのデジタル機器は、パケットプロセッサの一般カテゴリに入る。言い換えれば、これらの機器は、たとえばケーブル、ファイバ又は無線ネットワーク接続もしくはポイント・ツー・ポイント接続、バックプレーン等により、パケットを使用して別の１つ又は複数の機器と通信する。多くのかかる機器では、受け取られたデータを用いて行うことは簡単であるが、パケットプロトコル及びパケット処理は、専用ハードウェアの設計を保証するには複雑すぎる。代りに、かかる機器は、ＶＮマシンを使用してプロトコルを実施する。
【０００６】
本明細書では、パケットプロセッサに対し、様々な魅力ある手法、すなわちより一般的には再構成可能セマンティックプロセッサ（ＲＳＰ）と述べることができる手法があることが理解される。かかる機器は、その処理がその「プログラミング」に依存するため、ＶＮマシンのように再構成可能であることが好ましいが、分かるように、この「プログラミング」はＶＮマシンが使用する従来のマシンコードとは異なる。ＶＮマシンは常に、さまざまなデータ状態に関して逐次検査する１組のマシン命令を実行するが、ＲＳＰは、入力ストリームのセマンティクス（semantics）に直接応答する。言い換えれば、ＲＳＰが実行する「コード」は、その入力によって選択される。このため、パケット入力に対し、ＲＳＰは、定義された文法を用いて、高速且つ効率的なパケット処理に対して理想的に適合される。
【課題を解決するための手段】
【０００７】
本明細書で説明するいくつかの実施形態は、表駆動予測型パーサ、たとえばＬＬ（最左の生成を識別することによる左から右への構文解析（Left-to-right parsing））パーサを使用してネットワーク文法のプロトコルの直接実行を駆動する。本発明の実施形態では、他の構文解析技法、たとえば再帰下降、ＬＲ（最右の生成を識別することによる左から右への構文解析）及びＬＡＬＲ（Look Ahead LR）を使用してもよい。各場合において、パーサは、単純な実行ユニットでマイクロ命令コードセグメントを起動することによってその入力に応答する。表が書換可能記憶装置に配置される場合、ＲＳＰを容易に再構成することができ、そのため、種々のアプリケーションにおいて単一ＲＳＰ設計が有用となり得る。多くのアプリケーションでは、動作に必要な表を含むＲＳＰ全体を、単一の低コストで低電力の集積回路で実施することができる。
【０００８】
複数の任意の特徴が、かかる機器の有用性を向上させることができる。実行ユニットのバンクを使用して、異なるタスクを実行することができ、そのため並列処理が可能となる。本質的に小型ＶＮマシンであってもよい例外ユニットを接続し、且つ使用して、たとえば複雑であるが低頻度の、又は厳しい時間制限のないタスクを実行することができる。また、実行ユニットに対してマシンコンテキストメモリインタフェースを利用可能にすることができ、それにより、実行ユニットは、メモリユニットの基礎となるフォーマットを理解する必要がなく、そのため実行ユニットが実行するコードが大幅に簡略化される。
【０００９】
本発明を、図面を参照して開示を読むことにより最も良く理解することができる。
【発明を実施するための最良の形態】
【００１０】
本出願の発明者は、１９９９年６月２９日に発行された、「Pattern Recognition in Data Communications Using Predictive Parsers」と題する先の特許、米国特許第５，９１６，３０５号における共同発明者である。全体として‘３０５特許に記載されている機器は本発明とは非常に異なるが、パターンマッチャとして、ネットワークプロトコルに関連して基本の予測型パーサを使用することに対する一般的な概論として有益である。
【００１１】
図２は、’３０５特許に記載されているような機器８０のブロック図を示す。セマンティックエンジン８２は、パケット７０を読み出し、パケットデータオクテットを値として予測型パーサ８４に渡す。予測型パーサ８４は、渡される各値（オクテット）を調べる。まず、パーサ８４は、パケット７０の始めから値及びその値の位置のオフセットをパーサ表８８へのインデックスとして使用することにより表探索を実行する。パーサ表８８は、値及びオフセットの各組合せに対し、４つのあり得る値のうちの１つを格納する。すなわち、そのオフセットにおける値を受け入れることを意味する「Ａ」、値及びオフセットの組合せが「ドントケア（don't care）」であることを意味する「Ｄ」、オフセットにおける値が、認識されるべきパターンの一部でないため失敗であることを意味する「Ｆ」、及び終了記号である「＄」である。
【００１２】
パーサスタック８６は、単語の普通の意味で（又は簡単に説明する本発明の実施形態に適合するように）真の「スタック」ではない。すなわち、それは単に、パーサ８４が突き合わせようと試みている各「フィルタ」に対する状態変数を維持する。各状態変数は、エントリ状態に初期化される。各値及びオフセットに対して後に表エントリが返されると、スタックは、各スタック変数を更新する。たとえば、スタック変数として「Ａ」が返されると、そのスタック変数はエントリ状態から部分的一致状態に移る。「Ｆ」が返されると、そのスタック変数は、エントリ状態又は部分的一致状態から失敗状態に移る。「Ｄ」が返されると、そのスタック変数はその現在の状態を維持する。また、状態変数がエントリ状態又は部分的一致状態にある間に「＄」が返されると、状態変数は一致状態に遷移する。
【００１３】
セマンティックエンジン８２がすべてのパケット値を予測型パーサ８４に渡すと、パーサ８４は、パーサスタック状態に基づいて一致値を返す。そして、セマンティックエンジン８２は、一致の成功又は失敗によって何らかの出力動作をとる。パーサは機器機能を制御も調整もせず、代わりにより大型のシステムに対する補助パターンマッチャとして作用するだけである、ということに留意すべきである。ハードウェア実施態様において機器８０が限られた数の入力パターンのみを突き合わせればよいように、識別される、可能なパターンは各々、パーサ表に新たな列を必要とする。また、入力オクテット位置が突合せ結果に作用することができない場合であっても、各入力オクテット位置に対してパーサ表の行が必要である。
【００１４】
本明細書で説明する実施形態は、データ処理に対して決定的に異なる手法をとる。図３は、本発明の一実施形態によるセマンティックプロセッサ１００を示す。特定の格納されたパターンに対して特定の入力パターンを単に突き合わせるのではなく、セマンティックプロセッサ１００は、入力パケットの処理を制御する直接実行パーサ（direct execution parser）（ＤＸＰ）２００を含む。ＤＸＰ２００は、入力ポート１０２に受け取られたデータを構文解析する際、入力に応じて実際の文法生成規則を展開し且つ実行し、セマンティックコード実行エンジン（ＳＥＥ）３００に対し、文法が実行するように、入力のセグメントを処理するか又は他の動作を実行するように命令する。
【００１５】
データの必要に応じて、マシンコンテキストタスクを実行エンジンに割り当てる精巧な文法パーサを用いるこの構造は、柔軟であり且つ強力である。好ましい実施形態では、セマンティックプロセッサは再構成可能であり、そのため高いオーバヘッドなしにＶＮマシンの魅力を有する。セマンティックプロセッサは、与えられる入力に応答するだけであるため、ＶＮマシンより小さい命令セットで効率的に動作することができる。命令セットはまた、セマンティックプロセッサがマシンコンテキストでの処理を可能とするため有益である。
【００１６】
セマンティックプロセッサ１００は、少なくとも３つの表を使用する。ＳＥＥ３００ののコードセグメントは、セマンティックコード表１６０に格納される。複雑な文法生成規則は、生成規則表１４０に格納される。それら生成規則を検索するためのコードは、パーサ表１２０に格納される。パーサ表１２０におけるコードはまた、ＤＸＰ２００が、所与の生成規則に対してセマンティックコード表１６０からのコードセグメントがＳＥＥ３００によってロードされ実行されるべきかを検出することができるようにする。
【００１７】
本発明のいくつかの実施形態は、図３に示す要素より多くの要素を含むが、これら本質的な要素は、すべてのシステム又はソフトウェア実施形態で現れる。このため、より複雑な実施形態を扱う前に、図３の各ブロックについて説明する。
【００１８】
図４は、パーサ表１２０に対する一般的なブロック図を示す。生成規則コードメモリ１２２は、たとえば行・列フォーマットで表の値を格納する。表の行は、非終端コードによってインデックス付けされる。表の列は、入力データ値によってインデックス付けされる。
【００１９】
実際には、生成規則コードメモリ１２２に、多くの異なる文法に対するコードが同時に存在することができる。たとえば、図示するように、コードの１つのセットは、ＭＡＣ（媒体アクセス制御）パケットヘッダフォーマット構文解析に関連してもよく、コードの他のセットは、アドレス解決プロトコル（ＡＲＰ）パケット処理、インターネットプロトコル（ＩＰ）パケット処理、伝送制御プロトコル（ＴＣＰ）パケット処理、リアルタイム転送プロトコル（ＲＴＰ）パケット処理等に関連してもよい。非終端コードは、生成規則コードメモリ１２２においても、図示するような特定のプロトコルに関連するブロックにおいても、いかなる特定の順序で割り当てられる必要はない。
【００２０】
アドレッサ１２４は、ＤＸＰ２００から非終端（ＮＴ）コード及びデータ値を受け取る。アドレッサ１２４は、［ＮＴコード，データ値］対を生成規則コードメモリ１２２の物理位置に変換し、その位置に格納された生成規則（ＰＲ）コードを検索し、そのＰＲコードをＤＸＰに返す。概念的には、生成規則コードメモリ１２２の構造をＮＴコード及びデータ値の各一意の組合せに対して１つのＲＰコードが格納されたマトリクスとして見ることが有用であることが多いが、本発明はそのようには限定されない。異なるアプリケーションに対し異なるメモリのタイプ及びメモリ編成が適当である場合もある（そのうちの１つを図１１に示す）。
【００２１】
ＤＸＰ２００及びＳＥＥ３００が回路内に合わせて集積される場合、パーサ表１２０をオンチップで配置してもオフチップで配置してもよい。たとえば、オンチップで配置されるスタティックＲＡＭがパーサ表１２０としての役割を果たすことができる。別法として、オフチップＤＲＡＭ記憶装置がパーサ表１２０を格納してもよく、アドレッサ１２４は、ＤＲＡＭに対するメモリコントローラとしての役割を果たすか、又はかかるメモリコントローラと通信する。他の実施形態では、パーサ表をオフチップメモリに配置してもよく、オンチップキャッシュはパーサ表の一部を保持してもよい。実施態様によっては、アドレッサ１２４は必要でなくてもよいが、使用される場合は、パーサ２００の一部であっても、パーサ表１２０の一部であっても、中間機能ブロックであってもよい。なお、アドレッサ１２４が入力ストリームにおける次の入力値及びＤＸＰのパーサスタックにおける次の値を見ることができるようにすることにより、パーサ表１２０に対する先読み（look-ahead）能力を実施することが可能である。
【００２２】
図５は、生成規則表１４０に対する１つのあり得る実施態様を示す。生成規則メモリ１４２は、終端及び非終端記号の実際の生成規則シーケンスを、たとえば連続メモリアドレスのヌル終端連鎖として格納する。アドレッサ１４４は、ＤＸＰ２００から又はパーサ表１２０から直接ＰＲコードを受け取る。
【００２３】
生成規則はさまざまな長さを有することができるため、メモリ１４２への容易なインデックス付けを可能にする手法をとることが望ましい。一手法では、ＰＲコードを算術的に操作することにより、生成規則の物理メモリ開始アドレスを確定してもよい（これは、たとえば生成規則が展開された長さによってソートされ、その後ＰＲコードが規則のソートされた位置に従って割り当てられる場合に可能である）。ＰＲコードはまた、実際のＰＲ開始アドレスであってもよいが、アプリケーションによっては、これによってＰＲコードが不必要に長くなる可能性がある。図５に示す手法では、ポインタ表１５０には、各ＰＲコードに対するＰＲ開始アドレスが投入されている。アドレッサ１４４は、アドレスとしてＰＲコードを使用してポインタ表１５０に問い合わせることにより、生成規則を検索する。ポインタ表１５０は、ＰＲ開始アドレスＰＲ＿ＡＤＤを返す。そして、アドレッサ１４４は、この開始アドレスを使用して生成規則メモリ１４２からＰＲデータを検索する。アドレッサ１４４は、開始アドレスをインクリメントし、ＮＵＬＬ文字が検出されるまでＰＲデータを検索し続ける。
【００２４】
図５は、セマンティックコード（ＳＣ）開始アドレスを格納するために使用される、表１５０の第２列を示す。ＤＸＰ２００がＰＲコードを用いてアドレッサ１４４に問い合わせる時、アドレッサは、対応する生成規則を返すだけでなく、実行されるＳＥＥタスクに対するＳＣ開始アドレスも返す。所与の生成規則に対してＳＥＥタスクが必要でない場合、ＳＣ開始アドレスはＮＵＬＬアドレスに設定される。
【００２５】
図６は、ＤＸＰ２００に対する１つのあり得るブロック実施態様を示す。パーサ制御有限状態機械（ＦＳＭ）２１０は、図６における他の論理ブロックからの入力に基づいてＤＸＰ動作全体を制御し且つ順序付ける。スタックハンドラ２２０及びスタック２２２は、ＤＸＰ２００が実行する生成規則を格納し順序付ける。パーサ表インタフェース２３０は、ＤＸＰ２００が付随するパーサ表からＰＲコードを検索することができるようにする。生成規則表インタフェース２４０は、ＤＸＰ２００が付随する生成規則表から生成規則を検索することができるようにする。またセマンティックコード（semcode）表インタフェース２５０は、ＤＸＰ２００が生成規則に関連するセマンティックコードセグメントのメモリ位置を特定することができるようにする（例示する実施形態では、インタフェース２４０及び２５０は部分的に結合される）。
【００２６】
入力ストリームシーケンス制御部２６０及びレジスタ２６２は、Ｓｉ−Ｂｕｓから入力データ記号を検索する。コンパレータ２７０は、入力記号をパーサスタック２２２からの記号と比較する。最後に、ＳＥＥインタフェース２８０を使用して、Ｓｘ−ＢｕｓでＤＸＰ２００と通信する１つ又は複数のＳＥＥに対しタスクをディスパッチする。
【００２７】
ここで、図６のブロックの基本動作について、図７のフローチャートを参照して説明する。各構文解析サイクルの開始時（フローチャートブロック４００）、スタックハンドラ２２０は、そのスタックの先頭（top-of-stack）ポインタｐｓｐによって指し示される生成記号ｐＸを検索する。生成記号ｐＸは、２つの構成部分、すなわち接頭子ｐ及び記号Ｘに分割される。接頭子ｐは、たとえば２ビット接頭子に対する以下のマッピングに従って記号Ｘのタイプを符号化する。
【００２８】
【表１】
2006513667.tif 000003
【００２９】
なお、「ドントケア」終端記号の接頭子の代りに、接頭子は、マスクされた終端記号を示してもよい。マスクされた終端記号により、入力記号に対するビットマスクの指定が可能になる。すなわち、終端記号のいくつかの（又はすべての）ビットは「ドントケア」ビットである。マスクされた終端記号構造は、たとえば多くのネットワークプロトコルで発生するようにパケットフラグフィールドを構文解析するために有用である場合がある。
【００３０】
入力ストリームシーケンス制御部２６０はまた、入力ポインタｉｐによって指し示される現入力ストリーム値をａＲｅｇレジスタ２６２にロードする。このステップは、先の構文解析サイクルが入力ポインタｉｐを進めなかった場合は不要であってもよい。
【００３１】
パーサ制御ＦＳＭ２１０は、スタックハンドラ２２０から新たな接頭コードｐを受け取ると、この構文解析サイクルに対してこれらのあり得る論理経路のいずれをとるべきか判断する（フローチャートブロック４０２）。接頭コードが、Ｘが終端記号であることを示す場合、経路４１０がとられる。接頭コードが、Ｘが任意の入力記号と一致することを示す場合、経路４２０がとられる。また、接頭コードが、Ｘが非終端記号であることを示す場合、経路４３０がとられる。次に、各経路に関連する処理について説明する。
【００３２】
経路４１０がとられる場合、パーサ制御ＦＳＭ２００は、コンパレータ２７０によって提供される記号一致信号Ｍに基づいて別の経路分岐を作成する。コンパレータ２７０は、入力記号ａをスタック記号Ｘと比較し、２つが同一である場合、信号Ｍをアサートする。マスクされた終端記号が可能であり、マスクされた終端記号が提供される場合、コンパレータ２７０は、信号Ｍがマスクされていないスタック記号ビットのみによって決まるように、マスクを適用する。
【００３３】
特定の入力記号が予測され見つからない場合、ブロック４１４において、パーサ制御ＦＳＭ２１０は、エラー回復モードに入る。一般に、エラー回復は、入力からパケットの残りをフラッシュし（たとえば、一致が検出されるまで入力をフレームの終わり（ＥＯＦ）記号と突き合わせることにより）、残りの記号をスタックからポップする（pop）。また、誤ったパケットに関連する任意のマシン状態データを除去するように、セマンティックコードセグメントをＳＥＥにディスパッチしてもよい。これら及び他の動作は、エラー時に構文解析されている特定の文法によって決まってもよい。
【００３４】
ブロック４１２においてａとＸとの間の一致が見つかるものとすると、さらなる処理は処理経路４２０につながる。
【００３５】
処理経路４２０は、図７においてブロック４２２及び４２４として示す２つのタスクを達成する。第１に、パーサ制御ＦＳＭ２１０は、たとえばスタックポインタｐｓｐをデクリメントすることにより、スタックハンドラ２２０に対しＸの現在値をスタック２２２から「ポップする」ように通知する。第２に、パーサ制御ＦＳＭ２１０は、入力ストリームシーケンス制御部２６０に対し、入力ポインタｉｐを入力ストリームの次の記号までインクリメントするように通知する。
【００３６】
処理経路４３０は、スタック２２２に現れる非終端記号を処理する。非終端記号Ｘがスタックの先頭に達すると、処理ブロック４３２、４３４、４３８及び４４０は、非終端記号をその対応する生成規則に展開する。パーサ制御ＦＳＭ２１０は、まず、パーサ表インタフェース２３０に対し、生成規則コードｙ＝ＰＴ［Ｘ，ａ］を返すように通知する。ｙが無効である場合、パーサ制御ＦＭＳ２１０は、たとえば上述したようなエラー回復（ブロック４３６）を実行する。
【００３７】
ＰＲコードｙが有効であるとすると、パーサ制御ＦＳＭ２１０は、スタック２２２のＸをその展開された生成規則に置き換える。パーサ制御ＦＳＭは、生成規則表（ＰＲＴ）インタフェース２４０及びセマンティックコード表（ＳＣＴ）インタフェース２５０に対し、ＰＲコードｙを使用して探索を実行するように通知する。パーサ制御ＦＳＭ２１０はまた、スタックハンドラ２２０に対し、Ｘの現在値をスタック２２２からポップするように通知する。ＰＲＴインタフェース２４０が生成規則ＰＲ［ｙ］を返すと、パーサ制御ＦＳＭ２１０は、スタックハンドラ２２０に対しスタック２２２にＰＲ［ｙ］をプッシュするように通知する。各展開生成規則が対応する長さを有するため、この長さをプッシュにおいて考慮しなければならず、すなわち、展開によっては生成規則表から複数回の記号転送が必要な場合がある（表からスタックハンドラまでの経路幅は、当然ながら１つの記号の幅より広い場合もある）。
【００３８】
その間、ＳＣＴインタフェース２５０は、生成規則ＰＲ［ｙ］に対し対応するセマンティックコードアドレスコードＳＣＴ［ｙ］を返す。アドレスコードＳＣＴ［ｙ」は、ＰＲコードｙに対応する第１のセマンティックコードマイクロ命令の実際の物理アドレスを含んでもよく、又はＳＥＥがそのマイクロ命令をロードすることができるようにする何らかの抽象化を含んでもよい。アドレスコードＳＣＴ［ｙ］は、いずれのＳＥＥ（多重ＳＥＥシステムにおいて）がコードセグメントを受け取るべきかの指示等、他の情報を同様に含んでもよい。
【００３９】
パーサ制御ＦＳＭ２１０によって命令されると、ＳＥＥインタフェース２８０は、ＳＣＴ［ｙ］を調べて、コードセグメントをＳＥＥにディスパッチする必要があるか否かを判断する。図７の判断ブロック４４２に示すように、ＳＣＴ［ｙ］が「有効」でない、すなわちＮＵＬＬ値が表されている場合、マイクロ命令実行は不要である。「有効」である場合、ＳＥＥインタフェース２８０は、ＳＥＥが現在利用可能であるか否かを判断する（判断ブロック４４４）。ＳＥＥインタフェース２８０は、ＳＥＥ可用性を判断するためにセマフォレジスタ（図示せず）を調べる。ＳＣＴ［ｙ］によって特定のＳＥＥが示されている場合、ＳＥＥインタフェース２８０は、そのＳＥＥに対してセマフォを調べる。セマフォが、要求されたＳＥＥがビジーであることを示すと、ＳＥＥインタフェース２８０は、セマフォがクリアするまで待機状態４４６に入る。任意のＳＥＥがセマンティックコードセグメントを実行することができる場合、ＳＥＥインタフェース２８０は、単にクリアセマフォを用いてそれを選択するだけでよい。
【００４０】
選択されたＳＥＥに対してセマフォがクリアである場合、ＳＥＥインタフェース２８０はＳｘ−ｂｕｓを捕らえ、ＳＣＴ［ｙ］を選択されたＳＥＥに送出する。選択されたＳＥＥは、そのセマフォを、それが要求を受け取ったことを示すように設定する。
【００４１】
パーサ制御ＦＳＭ２１０が最初にＳＥＥインタフェース２８０に対してＳＣＴ［ｙ］をディスパッチするように命令すると、ＳＥＥインタフェース２８０は、ＳＥＥステータスラインをさらなる構文解析を中断するようにデアサートすることにより、ＳＣＴ［ｙ］がディスパッチされるまでパーサ制御ＦＳＭ２１０が現構文解析サイクルから出ないようにする（ＳＥＥステータスラインがデアサートされている間、展開された生成規則ＰＲ［ｙ」のスタックプッシュは並列に継続することができる）。ＳＣＴ［ｙ］が選択されたＳＥＥに転送されるとＤＸＰ２００が構文解析を中断し続けるか否かは、ＳＣＴ［ｙ］によって決まってもよい。たとえば、ＳＣＴ［ｙ］がまた、対応するセマンティックコードセグメントがどれくらいの期間、パーサ制御ＦＳＭ２１０によるさらなる処理が行われないようにすべきかを符号化してもよい。一実施形態では、ＳＣＴ［ｙ］がディスパッチされるとすぐに、ＳＥＥがそのセマフォを設定するとすぐに、ＳＥＥがそのセマフォを設定してからプログラム可能な数のクロックサイクル後、又はＳＥＥがそのセマフォを設定しクリアしてから、ＤＸＵを解放してもよい。別法としてＳＥＥは、これらの異なる可能性に対応する異なるセマフォ状態を有してもよい。
【００４２】
各パーササイクルの最後に（図７の判断ブロック４６０）、スタックハンドラ２２０は、スタックが空である場合にパーサ制御ＦＳＭ２１０に対してスタック空信号ＳＥをアサートする。ＳＥ信号がアサートされると、パーサ制御ＦＳＭ２１０は、次の入力パケットの開始を待つようにその状態をリセットする。しかしながら、スタックが空でない限り、パーサ制御ＦＳＭは、ブロック４００に戻り新たな構文解析サイクルを開始する。
【００４３】
図８は、能力が拡張された第２のＲＳＰ実施形態５００を示す。図３に示す単一ＳＥＥ３００の代りに、ＲＳＰ５００は、Ｎ＋１個のＳＥＥ３００−０〜３００−Ｎを組み込んでいる。ＲＳＰ５００はまた、いくつかの他の重要な追加を含む。すなわち、例外処理ユニット（ＥＰＵ）６００、アレイマシンコンテキストデータメモリ（ＡＭＣＤ）７００及び変数マシンコンテキストデータメモリ（ＶＭＣＤ）８００である。ここで、図８の各ブロックの機能について文脈で説明する。
【００４４】
図９は、ＳＥＥ３００−０の基本機能ブロックを示す。ＳＥＥ３００−０の中心には、算術論理ユニット（ＡＬＵ）３１０、１組のパイプラインレジスタ３２０、及びセマンティックコード（すなわちｓコード）命令デコーダ３３０がある。ｓコードキュー３４０は、ＳＥＥが実行するマイクロ命令を格納する。マイクロ命令自体は、セマンティックコード表１６０に格納され、ＳＥＥ  Ｓ−ｂｕｓインタフェース３６０によって受け取られる。ＳＥＥ制御有限状態機械（ＦＳＭ）３５０は、図示するＳＥＥブロックの動作を調整する。
【００４５】
ＳＥＥ３００−０は、Ｓｘ−ｂｕｓで実行要求を（ＤＸＰ２００から）受け取るまでアイドルのままである。ＳＥＥ制御ＦＳＭ３５０は、Ｓｘ−ｂｕｓのトラフィックを調べて、要求がＳＥＥ３００−０に向けられるのを待つ（たとえば、１６個までのＳＥＥを４つのＳｘ−ｂｕｓアドレスラインでアドレス指定することができ、各ＳＥＥは一意のアドレスを有する）。要求がＳＥＥ３００−０に向けられる時、その要求は、たとえば開始セマンティックコードアドレスを含む。ＳＥＥ制御ＦＳＭ３５０は、次のようにして要求に応答する。すなわち、そのセマフォをそれが今ビジーであることを認識するように設定し、Ｓ−ｂｕｓインタフェース３６０に対し、受け取った開始セマンティックコードアドレスで開始するマイクロ命令コードセグメントを検索する要求をＳ−ｂｕｓで駆動するように命令する。
【００４６】
Ｓ−ｂｕｓインタフェース３６０には、ｓコード命令を、ｓコード命令デコーダ３３０が必要とする前にキュー３４０に配置するタスクが課される。Ｓ−ｂｕｓインタフェースは、Ｓ−ｂｕｓにアクセスするために他のＳＥＥ  Ｓ−ｂｕｓインタフェースと競わなければならず、したがって、一度に一気に複数の連続した命令をダウンロードすることが有益である場合がある。Ｓ−ｂｕｓインタフェース３６０は、ｓコードアドレスカウンタ（図示せず）を保持し、ＳＥＥ制御ＦＳＭ３５０によって特に指示されない限り命令を連続してダウンロードし続ける。
【００４７】
ｓコードマイクロ命令デコーダ３３０は、ＡＬＵ３１０及びパイプラインレジスタ３２０に対しＤＸＰが要求するコードセグメントを実行する。命令デコーダ３３０内に分岐能力が存在することが望ましいが、多くのコードセグメントは、ＲＳＰの全体構造により分岐をほとんど又はまったく必要としない。
【００４８】
ＡＬＵ３１０は、従来のものであってもよく、たとえば、それ自体のレジスタ値及び／又はパイプラインレジスタ３２０からの値を使用して加算、比較、シフト等を実行する能力を有する。
【００４９】
パイプラインレジスタ３２０は、データに対するマシンコンテキストアクセスを可能にする。標準ＣＰＵとは対照的に、好ましいＳＥＥ実施形態は、それらが作用するデータに対して使用される物理データ記憶構造について知らない。代りに、データへのアクセスは、マシンコンテキストトランザクション形式をとる。変数（たとえば、スカラー）データはＶ−ｂｕｓでアクセスされ、アレイデータはＡ−ｂｕｓでアクセスされ、入力ストリームデータはＳｉ−ｂｕｓでアクセスされる。たとえば、データコンテキストｃｔ内の所与の位置ｏｆｆｓｅｔに位置する長さｍオクテットのスカラーデータ要素を読み出すために、命令デコーダ３３０は、Ｖ−ｂｕｓインタフェースに対しバス要求｛ｒｅａｄ，ｃｔ，ｏｆｆｓｅｔ，ｍ｝を発行するように指示する。コンテキストｍｃｔは、ＲＳＰのマスタコンテキストを指し、現ＴＣＰパケット又はアクティブセッションのためのサブコンテキスト等、他のサブコンテキストは、通常、ＲＳＰが入力データを処理する際に作成され破壊される。
【００５０】
パイプラインレジスタは、コマンドが発行されると、データ転送プロセスを処理する。ｍオクテットを読み出し又は書き込むために複数のバス転送が必要である場合、パイプラインレジスタは完了までトランザクションを追跡する。例として、２つのマイクロ命令を使用して６オクテットフィールドをストリーム入力からマシンコンテキスト変数に転送することができる。すなわち、第１の命令は、Ｓｉ−ｂｕｓからパイプラインレジスタに６オクテットを読み込み、第２の命令は、その後その６オクテットをレジスタからＶ−ｂｕｓによりマシンコンテキスト変数に書き込む。レジスタインタフェースは、転送を行うために必要な多くのバスデータサイクルを実行する。
【００５１】
ＶＭＣＤ８００は、Ｖ−ｂｕｓで開始する要求に答える。ＶＭＣＤ８００は、マシンコンテキスト変数データ要求を物理メモリトランザクションに変換することができる。このため、ＶＭＣＤ８００は、物理開始アドレスに対するマシンコンテキスト識別子を参照する変換表を保持し、コンテキストを割り付け且つ割付け解除するメカニズムを含み、コンテキストが所与のＳＥＥによってロックされるのを可能にし、要求されたトランザクションが要求されたコンテキストの境界外にならないことを確実にすることが好ましい。採用される実際の記憶メカニズムは、アプリケーションによって異なってもよく、メモリは、完全に内部、完全に外部、２つの混合、大容量の外部メモリとのキャッシュ等であってもよい。所与の実施態様では、外部メモリを、ＡＭＣＤ、ｅコード表、入力バッファ、パーサ表、生成規則表、及びセマンティックコード表等、他のメモリセクションに対する外部メモリと共有してもよい。
【００５２】
Ａ−ｂｕｓインタフェース及びＡＭＣＤ７００は、同様に動作するが、アレイマシンコンテキスト編成を有する。異なるタイプのアレイ及び表に対し、単純なバス要求を用いて、割り付け、サイズを変更し、割付け解除し、書込みを行い、読出しを行い、探索し、場合によってはハッシング又はソートすることができることが好ましい。実際の基礎となる物理メモリは、たとえば高速オンボードＲＡＭ、外部ＲＡＭ又はＲＯＭ、連想メモリ等を含み、異なるタイプのアレイ及び表に対して異なってもよい。
【００５３】
ＳＥＥ３００−０及びそのパイプラインレジスタの説明に戻ると、各ＳＥＥは、バッファ５１０からＳｉ−ｂｕｓを介して入力データにアクセスすることができる。また、各ＳＥＥは、Ｐ−ｂｕｓと、パーサスタックの先頭にある現記号と、にアクセスすることができる。これは、たとえば、複数の生成規則で同じｓコードが使用されるが、その結果は、それを開始した生成規則によって決まる場合に有用となる場合がある。最後に、いくつかのＳＥＥのパイプラインレジスタを特殊化することができる。たとえば、図８のＳＥＥ３００−１は、ローカルＩ／Ｏブロック５２０と通信することにより、たとえばローカルブロック５２０に接続されたローカルＵＳＢ又はシリアルＡＴＡデバイスとの間のデータ経路を提供する。図８のＳＥＥ３００−２は、ＥＰＵ６００と通信することにより、例外ユニットとの間のデータ経路を提供する。理論的には、各ＳＥＥはこれらのデバイスの各々と別々に接続することができるが、実際には、デバイスは簡略化され、いくつかのＳＥＥをいくつかの他の機能と対にすることにより性能ペナルティがほとんどもたらされない。
【００５４】
例外処理ユニット６００は、標準的なフォン・ノイマン中央処理装置（ＣＰＵ）であってもよいが、多くのアプリケーションでは、非常に基本的なものであってもよい。含まれる場合、ＥＰＵ６００を使用して、低頻度で実行するか又はタイミングが重要でない複雑なコードを処理することが好ましい。例は、ユーザログオン手続き、ローカルドライブを遠隔で利用可能にする要求、エラーロギング及び回復、システム起動時の表ローディング、及びシステム構成である。ＥＰＵ６００は、ＳＥＥ３００−２にロードされたｓコードセグメントを介してＤＸＰ要求に間接的に応答する。ＥＰＵ６００はまた、ＳＥＥ３００−２に対し、ＡＭＣＤ７００又はＶＭＣＤ８００に対する読出し又は書込み等、ＥＰＵ６００のための機能を実行するように要求することができることが好ましい。
【００５５】
ｅコード表６１０をＥＰＵ６００が利用可能であることが好ましい。ｅコード表は、機器のブート命令を含み、ＤＸＰによって要求される他の機能を実行する実行可能命令を含んでもよい。任意に、ｅコード表６１０は、ｓコード要求を、実行されるコードの命令アドレスに変換するための表を含んでもよく、その場合、命令アドレスは従来の外部メモリ空間に位置する。
【００５６】
実施例
ＲＳＰ５００の動作をよりよく例示するために、ＩＥＴＦ  ＲＦＣ８２６に記載されているようなアドレス解決プロトコル（ＡＲＰ）の実施態様に対する一例を示す。この例では、生成規則、パーサ表エントリ、及び受け取られたＡＲＰパケットを処理するｓコードの機能的実体の作成を行う。
【００５７】
簡単に言うと、ＡＲＰパケットは、ローカルネットワークノードが各ピアのリンク層（ハードウェア）アドレスを１つ又は複数のネットワークプロトコルに対するネットワーク（プロトコル）アドレスに関連付けることができるようにする。この例では、ハードウェアプロトコルはイーサネットであり、ネットワークプロトコルはインターネットプロトコル（ＩＰ又はＩＰｖ４）であると仮定する。したがって、ＡＲＰパケットは、図１０に示すフォーマットを有する。ｏｐｃｏｄｅフィールドが１に設定されている時、送信側は、ターゲットプロトコルアドレスに関連するターゲットハードウェアアドレスを発見しようと試みており、ＡＲＰ応答パケットを要求している。ｏｐｃｏｄｅが２に設定されている時、送信側は、ＡＲＰ要求に応答しており、この場合、送信側のハードウェアアドレスは、元の送信側が探していたターゲットハードウェアアドレスである。
【００５８】
以下の例示的な文法は、ＲＳＰ５００が、入力ポートで受け取ったＡＲＰパケットを処理することができる１つの方法を述べている。＄は、生成規則の開始を示し、｛｝は、ＳＥＥが実行するｓコードを囲む。
【００５９】
$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}
【００６０】
この例は、単に、すべてのあり得るＡＲＰパケットの限られたセット、すなわちイーサネットハードウェアタイプ及びＩＰプロトコルタイプと一貫するフィールドを適当に示すものを処理するのみであり、他のすべては、構文解析されず拒否される。この文法はまた、ＩＰパケット（$IP_BODY）を処理するためのフックを残しており、そのためＩＰパケットは拒否しないが、対応するＩＰ文法はこの例に含まれてない。
【００６１】
生成規則を通して、$MAC_PDUは、単にＭＡＣフレームフォーマットを定義する。$MAC_DAによって２つの宛先ＭＡＣアドレス、すなわち特定のハードウェアアドレス（0x08 0x01 0x02 0x03 0x04 0x05）及びすべて１のブロードキャストアドレスが可能となる。これら２つのアドレスのうちの１つのないパケットは構文解析されないため、他のすべてのＭＡＣアドレスは自動的に拒否される。$MAC_SAにより、任意のソースアドレスが受け入れられ、ＳＥＥが呼び出されてソースアドレスをＶＭＣＤのマスタコンテキスト表変数mct->curr_SAに保存する。$MAC_PAYLOAD及び$ET2が結合することにより、２つのタイプのペイロード、すなわちＡＲＰペイロード及びＩＰペイロードのみが構文解析されることを確実にする（ＩＰペイロードのさらなる構文解析については本明細書では示していない）。当然ながら、これらの生成規則を拡張することにより他のパケットタイプを追加することも可能である。
【００６２】
MAC_PAYLOADの最初の２バイトがＡＲＰパケット（type=0x0806）を示す場合、パーサは、次に、$ARP_BODYを構文解析しようと試みる。簡単にするために、ＡＲＰ本文の最初の４つの要素（ハードウェア及びプロトコルのタイプ及びアドレス長）は固定であるように示す。ＡＲＰをＩＰと同様に別のプロトコルに対して実施した場合、これらの要素を一般化することができる（なお、長さフィールドの一般化により、続くアドレスフィールドのサイズ、すなわち生成規則において考慮しなければならない条件を変えることが可能になり得る。）
【００６３】
$ARP_OPの２つの値、すなわち要求に対する１及び応答に対する２があり得る。ARP_OPの２つの値に対してアドレス構文解析は異ならないが、各場合において実行されるべきｓコードは異なる。ＡＲＰ要求に対して実行されるｓコードセグメント１は、ターゲットプロトコルを、ＶＭＣＤのマスタコンテキスト表に格納されるローカルＩＰアドレスと比較する。これらが等しい場合、ＳＥＥは、送信側のハードウェア及びＩＰアドレスに対するＡＲＰ応答パケットを生成する。ｓコードセグメント２は、ＡＲＰ要求及びＡＲＰ応答の両方に対して実行する。すなわち、このセグメントは、ＡＭＣＤに格納されているArpCacheアレイを、送信側のハードウェア及びプロトコルアドレス並びに受け取った時間で更新する。mct->ArpCacheに対する「更新」コマンドは、更新を実行するためにArpCacheのいずれのデータを使用すべきかを識別するフラグ又はマスクを含み、通常、キャッシュは、少なくともＩＰアドレスによってインデックス付けされる。
【００６４】
イーサネット／ＩＰ  ＡＲＰパケットでは、ARP_PADDINGの長さは１８オクテットとなる。しかしながら、ここで示すARP_PADDING生成規則は、任意の数のオクテットに適合する。この例では、ｓコードセグメントを呼び出すことにより、パディング長を計算し、たとえば入力ポインタを進めることによりその多くのオクテットを「捨てる（throw away）」。別法として、パーサは、入力におけるEoFrameトークンに対し５オクテット先読みを使用することができる。すなわち、トークンが見つかる時、先の４オクテットはＦＣＳである。パーサが可変記号先読み能力を有する代替実施形態については、この例の終わりで説明する。
【００６５】
MAC_FCS生成規則は、ＳＥＥがパケットに添付されたＦＣＳを検査するように指示する。ＳＥＥは、実際にはチェックサムを計算してもよく、又はチェックサムを、入力バッファ又は他のハードウェアが計算してもよく、その場合、ＳＥＥは、単にパケット値を計算された値と比較し、一致しなかった場合にパケットを拒否する。
【００６６】
上記ＡＲＰ文法を実行するようにＲＳＰ５００をいかに構成するかをさらに説明するために、ここで、例示的な生成規則表及びパーサ表値を与え説明する。まず、生成規則を示し、そこでは、１６進法は終端値を示し、１０進法は生成規則を示し、「オクテット」は入力ストリームの先頭に見られる任意のオクテットに一致する。非終端（ＮＴ）コードを、パーサ表に対するインデックスとして使用し、生成規則（ＰＲ）コードは、パーサ表に格納され、いずれの生成規則をＮＴコード及び入力値の所与の組合せに適用するかを示す。
【００６７】
【表２】
2006513667.tif 000004
【００６８】
上記ＡＲＰ生成規則表では、ＲＨＳ非終端値は、たとえば特別な規則の最後の記号が添付されており、ＲＳＰの生成規則表に格納されるものである。生成規則コードは、対応する生成規則に対する「ポインタ」であり、それは、パーサ表に実際に格納されるＰＲコードである。以下のパーサ表セグメントは、ＰＲとＲＰコードとの関係を示す。
【００６９】
【表３】
2006513667.tif 000005
【００７０】
ＮＴコードと「入力ストリームデータ値の先頭」との組合せは、ＲＳＰにおけるパーサ表値をインデックス付けする。なお、開始記号Ｓ、EoFrame記号及びスタックの底記号$は特別な場合であり、これらの記号に対しパーサ表を参照しないようにパーサ制御ＦＳＭを実施してもよい。多くのＮＴコードに対し、表は、入力ストリームの先頭を占めるデータ値に関係なく同じＰＲコードをもたらす。この例では、他のすべてのＮＴコードは、入力ストリーム値の１つ又は２つの先頭のみに対する有効な値を有する（セルにおけるブランク値は無効なエントリを表す）。この情報を、各セルが満たされるマトリックスフォーマットで符号化することができ、又は他の何らかのより経済的なフォーマットで符号化することができる。
【００７１】
上記表を考慮して、ここでイーサネット／ＡＲＰパケットに対するＲＳＰ実行の一例を示す。この例では、ＤＸＰを、図７のフローチャートを通しての１つの「ループ」に対応するパーササイクルによって段階的に進める。各サイクルにおいて、以下のマシン状態を追跡する。すなわち、構文解析されている現ストリーム入力記号のバイトアドレスを示す入力ポインタｉｐと、入力ポインタによって指し示される入力記号＊ｉｐと、パーササイクルの開始においていずれのスタック値が指し示されているかを示すパーサスタックポインタｐｓｐと、非終端符号が接頭子「ｎｔ．」によって示されており、且つ終端記号ｔ．ｘｘが任意の入力記号に一致する場合、そのパーササイクルの開始におけるパーサスタックの先頭記号＊ｐｓｐと、パーサ表の現時点でインデックス付けされている値、ＰＴ［＊ｉｐ，＊ｐｓｐ］と、ＰＴ［＊ｉｐ，＊ｐｓｐ］によって指し示されている生成規則、ＰＲＴ［ＰＴ］と、ＰＴ［＊ｉｐ，＊ｐｓｐ］によって指し示されているｓコードセグメント、ＳＣＴ［ＰＴ］と、パーサスタックの内容全体、＊ｐｓと、である。
【００７２】
この例では、以下のＡＲＰパケットを使用する。ここでは、すべての値が１６進法で示されている。
【００７３】
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
【００７４】
これは、この例ではＲＳＰに割り当てられるネットワークアドレスである、ネットワークアドレス１９２．１６８．０．６に関連するハードウェアアドレスを要求する、ブロードキャストＭＡＣアドレスに送信されるＡＲＰ要求パケットである。この例のパケットを構文解析する結果を、以下に表形式で示し、その後に簡単に説明する。この例は非常に長いが、ＲＰＳの基本的な機能の大部分を用いているため有益である。
【００７５】
【表４】
2006513667.tif 000006
2006513667.tif 000007
【００７６】
一般に、上記詳細な例は、以下のように行うことにより、生成規則がパーサスタック上にいかに展開され、その後個々に処理されるかを示す。すなわち、終端記号を入力記号と突き合わせる（たとえばパーササイクル２〜７を参照）か、終端ドントケア記号ｔ．ｘｘを入力記号と突き合わせる（たとえばパーササイクル９〜１４を参照）か、さらに入力に関わりなく（たとえばパーササイクル８を参照）又は現入力記号に基づき（たとえばパーササイクル０、１、１７を参照）非終端記号を展開するか、又はこの場合はＳＥＥが入力ポインタをパディングフィールドに対する構文解析を「スキップする」ように調整することができるようにヌルサイクルを実行する（パーササイクル６３）ことである。この例はまた、いずれの生成規則がスタックにロードされるかに応じて、構文解析プロセス中に適当なポイントにおけるｓコードセグメントに対する呼出しも示す（パーササイクル８、３３、６２、６４）。これらのコードセグメントのいくつかは、連続している構文解析と並列に実行してもよい、ということを理解することができる。
【００７７】
上に示した例示的な文法は、単に、本発明の一実施形態によりＡＲＰ文法を実施する一例である。たとえば、非終端のうちのいくつかをそれらの親生成規則内に明示的に展開することにより、幾分かのサイクル非効率を低減することができる。ＡＲＰ文法を、より多くの可能性を処理するように大幅に一般化することも可能である。しかしながら、選択された符号化は、すべてのあり得る最適化又はＡＲＰ機能ではなく基本原理を例示するように意図されている。所与の実施態様に対し、明示的な展開を選択されたスタックサイズによって制限してもよい。
【００７８】
代替実施形態では、ＤＸＰ２００はＬＬ（ｆ（Ｘ））パーサを実施してもよく、その場合、各スタック記号がそれ自体の先読みを指定することができるように、先読み値ｆ（Ｘ）をスタック記号で符号化する。一例として、先の例におけるARP_PADDINGの生成規則を、
$ARP_PADDING   := octet  ARP_PADDING | EoFrame, (LA5)
として指定することができる。ここで(LA5)は、この規則に対する５記号の入力記号先読みを示す。規則が実行される時にＤＸＰ２００が生成規則表において（Ｘ，ａ＋５）を探索するように、先読み値を生成規則表内に符号化する。
【００７９】
表探索において複数の入力記号が使用されることを示すために、可変先読み能力を使用することも可能である。たとえば、MAC_DAの生成規則を、
$MAC_DA        := 0X08 0X01 0X02 0X03 0X04 0X05
|  0XFF 0XFF 0XFF 0XFF 0XFF 0XFF, (LA6)
として指定することができる。各々６つの終端記号を用いて２つの生成規則５２及び５３を作成する代りに、パーサ表は、たとえばパーサ表位置(X,a)=(130,0x08 0x01 0x02 0x03 0x04 0x05)及び(130, 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF)において、各々６つの記号に一致する２つのエントリを含む。
【００８０】
かかる手法により、標準的な行、列マトリクスパーサ表は、６オクテットまでの入力記号幅に対して必要なアドレス指定可能列の数と、かかるマトリクスの希薄性と、により、非常に無駄であることが分かった。図１１に、３値（ternary）ＣＡＭを用いる１つの代替実施態様を示す。
【００８１】
図１１の３値ＣＡＭ９００に、一致アドレス及び対応する生成規則コードの表をロードする。各一致アドレスは、１オクテットスタック記号Ｘと、入力記号ａ１、ａ２、ａ３、ａ４、ａ５、ａ６の６つのオクテットと、を含む。一致アドレスがＣＡＭ９００に提供されると、ＣＡＭ９００は、そのパーサ表エントリに一致が存在するか否かを判断する。一致が存在する場合、対応する生成規則コードが返される（別法として、一致をもたらした表エントリのアドレスが返され、それを、生成規則コード又はポインタの別個の表へのインデックスとして使用することができる）。
【００８２】
図１１のパーサ表実施態様の１つの利点は、エントリがスタック及び入力記号の有効な組合せに対してのみ作成されるため、マトリックス手法より効率的である、ということである。この効率により、１パーササイクルで構文解析される入力記号ストリングを長くすることができ（６つまでの入力記号が示されているが、設計者は都合のよい長さであればいかなる長さでも使用することができる）、そのため、ＭＡＣ又はＩＰアドレスを１パーササイクルで構文解析することができる。さらに、先読み能力をＣＡＭに暗黙的に符号化してもよく、たとえば、表に次の６つの入力記号を常に提供してもよい。ＬＬ（１）構文解析に対応する生成規則（ＣＡＭ９００におけるＸ＝１３６に対する行等）の場合、その行のａ２、ａ３、ａ４、ａ５、ａ６に対応するＣＡＭビットは、「ドントケア」値ｘｘに設定され、全く探索に役立たない。ＬＬ（２）構文解析に対応する生成規則（ＡＲＰ及びＩＰパケットそれぞれに対する２オクテットパケットタイプフィールドに一致する、Ｘ＝１３４及び１３５に対する行等）の場合、それらの行のａ３、ａ４、ａ５、ａ６に対応するＣＡＭビットはｘｘに設定されている。Ｘ＝１２９に対する２つのＭＡＣアドレスエントリに示すように、表にＬＬ（６）までの構文解析を入力することができる。なお、ａ１、ａ２、ａ３、ａ４、ａ５がｘｘに設定された場合、真の６記号先読みも実施することができる。１つの最後の観察結果は、３値ＣＡＭを用いて、各ビットを独立して「ドントケア」状態に設定することができ、そのため生成規則を、たとえばフラグフィールドにおけるいくつかのビットを無視するように設定することも可能である、ということである。
【００８３】
２値ＣＡＭもまた、パーサ表実施態様で機能することができる。主な相違点は、２値ＣＡＭは明示的に「ドントケア」情報を格納することができず、そのためパーサ状態機械（又は他の何らかのメカニズム）が任意の「ドントケア」機能を他の何らかの方法で処理することに関与する、ということである。
【００８４】
当業者は、本明細書で教示する概念を、他の多くの有利な方法で特定のアプリケーションに適合させることができることを理解するであろう。たとえば、提示するコード及びアドレス指定方式に対し多くの変形が可能である。説明する実施形態では、マイクロ命令コードセグメントはＮＵＬＬ命令で終了する。すなわち、ＮＵＬＬ命令の発生を、ＳＥＥのＳ−ｂｕｓインタフェースにより、マイクロ命令デコーダにより、又はｓコード表機能によってさえも、検出することができる。ｓコードアドレスは、必ずしもＳＥＥには既知でなくてもよい。すなわち、ＳＣＴが各ＳＥＥに対する命令ポインタを追跡することが可能であり、その各ＳＥＥに対する命令ポインタをＤＸＰが設定する。異なるインタフェースによる複数のメモリ記憶エリアを示しているが、インタフェースのいくつかが、両方に対する物理記憶空間としての役割を果たす共通メモリ記憶エリアへのアクセスを共有してもよい。当業者は、例外処理ユニット等のいくつかのコンポーネントを、ＲＳＰと統合してもよく、又は別個のユニットとしてＲＳＰに接続してもよい、ということを理解するであろう。
【００８５】
文法の所与のセットついて、パーサ表、生成規則表及びｓコード表にいかにデータ投入するかは重要ではない。すなわち、データ投入を、たとえばＥＰＵ、ＳＥＥのうちの１つにおけるブートコードセグメント、又は入力ポートに提供される表データ投入命令を含むブート文法セグメントによって達成してもよい。当然ながら、表を、不揮発性メモリを用いて実施することも可能であり、それによって、起動毎に表をリロードする必要がなくなる。
【００８６】
ＤＸＰの動作を示すフローチャートは単に例示的なものであり、たとえば、本明細書において、所与の状態機械実施態様は、本明細書では連続したタスクとして示す多くのタスクを並列に達成してもよく、多くの動作を投機的に実行してもよい、ということが理解される。
【００８７】
単一入力ポートを用いていくつかの実施形態を示し説明したが、「１つの」入力ポートについての説明は、単に、少なくとも１つのポートが存在することを認識するものである。物理ポート構成を、アプリケーションに応じて変更することができる。たとえば、ポート帯域幅及びパーサ性能に応じて、いくつかの入力ポートを同じ直接実行パーサに多重化してもよい。
【００８８】
当業者は、本発明の範囲内で他の機能的分割が可能であることを理解する。さらに、共通の集積回路（ハードウェア実施態様の場合）で何の機能を実施し且つ実施しないかは、設計選択であり、アプリケーションに応じて変更することができる。また、従来のソフトウェア技法を用いて、上述したパーサ機能を汎用プロセッサで実施することができる、ということも理解されるが、これは、ハードウェア実施形態で存在する利点のうちのいくつかを無効にする可能性がある。
【００８９】
最後に、本明細書はいくつかの場所で「或る（an）」、「１つの（one）」、「別の（another）」又は「いくつかの（some）」実施形態（複数可）について言及する場合があるが、これは、かかる言及が同じ実施形態（複数可）に対すること、又は機能が単一の実施形態にのみ適用されることを必ずしも意味するものではない。
【図面の簡単な説明】
【００９０】
【図１】通常のフォン・ノイマンマシンのブロック図である。
【図２】本発明の発明者が先に特許を取得した予測型パーサパターン認識器のブロック図である。
【図３】本発明の一実施形態によるセマンティックプロセッサをブロック形式で示す図である。
【図４】本発明の実施形態で有用な１つのあり得るパーサ表構造を示す図である。
【図５】本発明の実施形態で有用な１つのあり得る生成規則表編成を示す図である。
【図６】本発明の実施形態で有用な直接実行パーサ（ＤＸＰ）の一実施態様をブロック形式で示す図である。
【図７】図６に示すＤＸＰの動作のフローチャートである。
【図８】本発明の一実施形態による再構成可能セマンティックプロセッサのブロック図である。
【図９】本発明の実施形態で有用なセマンティックコード実行エンジンのブロック編成を示す図である。
【図１０】アドレス解決プロトコルパケットのフォーマットを示す図である。
【図１１】連想メモリ（ＣＡＭ）を使用する代替パーサ表一実施態様を示す図である。
【図１】
2006513667.tif 000008
【図２】
2006513667.tif 000009
【図３】
2006513667.tif 000010
【図４】
2006513667.tif 000011
【図５】
2006513667.tif 000012
【図６】
2006513667.tif 000013
【図７】
2006513667.tif 000014
【図８】
2006513667.tif 000015
【図９】
2006513667.tif 000016
【図１０】
2006513667.tif 000017
【図１１】
2006513667.tif 000018
【国際調査報告】
2006513667.tif 000019