(57)【要約】      （修正有）【課題】１クロック内に複数の読出し要求および書き込み要求が到着した場合にテーブル更新処理の高速化が可能な装置を提供する。【解決手段】通信装置は、１ＲＤ（読み出し）／１ＷＲ（書込み）構成である複数の演算テーブル５０４を有する演算テーブルセット５０５が複数組存在する演算テーブルセット群と、フローごとに最新のアクセス先となる演算テーブルセットを指定する最新アクセス保持テーブル５０２と、同時に受信された複数のＷＲ要求について最新アクセス保持テーブルを参照した結果、各ＷＲ要求に含まれるフローのアクセス先が同一演算テーブルセットである場合、各ＷＲ要求に含まれるフローごとに異なる演算テーブルセットを選択して、選択された演算テーブルセットの各演算テーブルに書込み処理を実行し、各ＷＲ要求に含まれるフローごとのアクセス先が書込み処理後のアクセス先となるように最新アクセス保持テーブルを更新する更新部とを有する。【選択図】図５
2015104045.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続される通信装置であって、
前記ネットワークからの１つの読出し要求および１つの書き込み要求を同一タイミングで処理可能でありフローごとの情報を同期させて保持する複数のテーブルを有するテーブルセットが、複数組存在するテーブルセット群と、
前記フローごとに最新のアクセス先となるテーブルセットを指定する最新アクセス先保持テーブルと、
前記ネットワークから同時に受信された複数の書き込み要求について前記最新アクセス先保持テーブルを参照した結果、前記各書き込み要求に含まれるフローのアクセス先が同一のテーブルセットである場合、前記各書き込み要求に含まれるフローごとに異なるテーブルセットをアクセス先として選択して、当該選択されたアクセス先となるテーブルセットの各テーブルに書き込み処理を実行し、前記各書き込み要求に含まれるフローごとのアクセス先が前記書き込み処理の実行後のアクセス先となるように前記最新アクセス保持テーブルを更新する更新部と、
を有することを特徴とする通信装置。
【請求項２】
前記更新部は、前記複数の書き込み要求について前記最新アクセス先保持テーブルを参照した結果、前記各書き込み要求に含まれるフローのアクセス先が異なるテーブルセットである場合、前記各書き込み要求に含まれるフローごとに前記異なるテーブルセットをアクセス先として選択して、当該選択されたアクセス先となるテーブルセットの各テーブルに書き込み処理を実行することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記更新部は、前記複数の書き込み要求と同時に受信された複数の読出し要求について前記最新アクセス先保持テーブルを参照した結果、前記各読出し要求に含まれるフローのアクセス先が同一のテーブルセットである場合、前記各読出し要求に含まれるフローごとに前記同一のテーブルセット内の異なるテーブルをアクセス先として選択して、当該選択されたアクセス先となる各テーブルに読出し処理を実行することを特徴とする請求項１に記載の通信装置。
【請求項４】
前記更新部は、前記複数の書き込み要求と同時に受信された複数の読出し要求について前記最新アクセス先保持テーブルを参照した結果、前記各読出し要求に含まれるフローのアクセス先が異なるテーブルセットである場合、前記各読出し要求に含まれるフローごとに、アクセス先となるテーブルセット内のいずれかのテーブルに読出し処理を実行することを特徴とする請求項１に記載の通信装置。
【請求項５】
前記フローごとに書き込み処理中であるか否かを規定する情報と、前記書き込み処理中のテーブルセットを指定する情報と、を関連付けて記憶する管理テーブルを有し、
前記更新部は、前記管理テーブルを参照して、前記最新アクセス保持テーブルによって指定された前記書き込み要求に含まれるフローの書き込み先が、前記管理テーブルにより前記書き込み処理中のテーブルセットであると特定された場合、前記フローの書き込み先を、前記書き込み処理中の書き込み処理が実行されているテーブルセットに変更することを特徴とする請求項１に記載の通信装置。
【請求項６】
ネットワークに接続される通信装置による通信方法であって、
前記通信装置は、
前記ネットワークからの１つの読出し要求および１つの書き込み要求を同一タイミングで処理可能でありフローごとの情報を同期させて保持するテーブルを複数有するテーブルセットが、複数組存在するテーブルセット群と、
前記フローごとに最新のアクセス先となるテーブルセットを指定する最新アクセス先保持テーブルと、
前記テーブルセット群と前記最新アクセス先保持テーブルとを更新する更新部と、を有し、
前記通信方法は、
前記更新部が、
同時に受信された複数の書き込み要求について前記最新アクセス先保持テーブルを参照した結果、前記各書き込み要求に含まれるフローのアクセス先が同一のテーブルセットである場合、前記各書き込み要求に含まれるフローごとに異なるテーブルセットをアクセス先として選択して、当該選択されたアクセス先となるテーブルセットの各テーブルに書き込み処理と、
前記各書き込み要求に含まれるフローごとのアクセス先が前記書き込み処理の実行後のアクセス先となるように前記最新アクセス保持テーブルを更新する処理と、
を実行することを特徴とする通信方法。
【請求項７】
前記更新部が、
前記複数の書き込み要求について前記最新アクセス先保持テーブルを参照した結果、前記各書き込み要求に含まれるフローのアクセス先が異なるテーブルセットである場合、前記各書き込み要求に含まれるフローごとに前記異なるテーブルセットをアクセス先として選択して、当該選択されたアクセス先となるテーブルセットの各テーブルに書き込み処理を実行することを特徴とする請求項６に記載の通信方法。
【請求項８】
前記更新部が、
前記複数の書き込み要求と同時に受信された複数の読出し要求について前記最新アクセス先保持テーブルを参照した結果、前記各読出し要求に含まれるフローのアクセス先が同一のテーブルセットである場合、前記各読出し要求に含まれるフローごとに前記同一のテーブルセット内の異なるテーブルをアクセス先として選択して、当該選択されたアクセス先となる各テーブルに読出し処理を実行することを特徴とする請求項６に記載の通信方法。
【請求項９】
前記更新部が、
前記複数の書き込み要求と同時に受信された複数の読出し要求について前記最新アクセス先保持テーブルを参照した結果、前記各読出し要求に含まれるフローのアクセス先が異なるテーブルセットである場合、前記各読出し要求に含まれるフローごとに、アクセス先となるテーブルセット内のいずれかのテーブルに読出し処理を実行することを特徴とする請求項６に記載の通信方法。
【請求項１０】
前記通信装置は、前記フローごとに書き込み処理中であるか否かを規定する情報と、前記書き込み処理中のテーブルセットを指定する情報と、を関連付けて記憶する管理テーブルを有し、
前記通信方法は、
前記更新部が、前記管理テーブルを参照して、前記最新アクセス保持テーブルによって指定された前記書き込み要求に含まれるフローの書き込み先が、前記管理テーブルにより前記書き込み処理中のテーブルセットであると特定された場合、前記フローの書き込み先を、前記書き込み処理中の書き込み処理が実行されているテーブルセットに変更することを特徴とする請求項６に記載の通信方法。
【請求項１１】
ネットワークに接続される通信装置のプロセッサが実行するプログラムを格納する、前記プロセッサにより読み取り可能な非一時的な記録媒体であって、
前記通信装置は、
前記ネットワークからの１つの読出し要求および１つの書き込み要求を同一タイミングで処理可能でありフローごとの情報を同期させて保持するテーブルを複数有するテーブルセットが、複数組存在するテーブルセット群と、
前記フローごとに最新のアクセス先となるテーブルセットを指定する最新アクセス先保持テーブルと、を有し、
前記プロセッサに、
前記ネットワークから同時に受信された複数の書き込み要求について前記最新アクセス先保持テーブルを参照した結果、前記各書き込み要求に含まれるフローのアクセス先が同一のテーブルセットである場合、前記各書き込み要求に含まれるフローごとに異なるテーブルセットをアクセス先として選択して、当該選択されたアクセス先となるテーブルセットの各テーブルに書き込む処理と、
前記各書き込み要求に含まれるフローごとのアクセス先が前記書き込み処理の実行後のアクセス先となるように前記最新アクセス保持テーブルを更新する処理と、
を実行させることを特徴とする前記プロセッサにより読み取り可能な非一時的な記録媒体。
【請求項１２】
前記プロセッサに、
前記複数の書き込み要求について前記最新アクセス先保持テーブルを参照した結果、前記各書き込み要求に含まれるフローのアクセス先が異なるテーブルセットである場合、前記各書き込み要求に含まれるフローごとに前記異なるテーブルセットをアクセス先として選択して、当該選択されたアクセス先となるテーブルセットの各テーブルに書き込み処理を実行させることを特徴とする請求項１１に記載の前記プロセッサにより読み取り可能な非一時的な記録媒体。
【請求項１３】
前記プロセッサに、
前記複数の書き込み要求と同時に受信された複数の読出し要求について前記最新アクセス先保持テーブルを参照した結果、前記各読出し要求に含まれるフローのアクセス先が同一のテーブルセットである場合、前記各読出し要求に含まれるフローごとに前記同一のテーブルセット内の異なるテーブルをアクセス先として選択して、当該選択されたアクセス先となる各テーブルに読出し処理を実行することを特徴とする請求項１１に記載の前記プロセッサにより読み取り可能な非一時的な記録媒体。
【請求項１４】
前記プロセッサに、
前記複数の書き込み要求と同時に受信された複数の読出し要求について前記最新アクセス先保持テーブルを参照した結果、前記各読出し要求に含まれるフローのアクセス先が異なるテーブルセットである場合、前記各読出し要求に含まれるフローごとに、アクセス先となるテーブルセット内のいずれかのテーブルに読出し処理を実行することを特徴とする請求項１１に記載の前記プロセッサにより読み取り可能な非一時的な記録媒体。
【請求項１５】
前記通信装置は、前記フローごとに書き込み処理中であるか否かを規定する情報と、前記書き込み処理中のテーブルセットを指定する情報と、を関連付けて記憶する管理テーブルを有し、
前記プロセッサに、
前記管理テーブルを参照して、前記最新アクセス保持テーブルによって指定された前記書き込み要求に含まれるフローの書き込み先が、前記管理テーブルにより前記書き込み処理中のテーブルセットであると特定された場合、前記フローの書き込み先を、前記書き込み処理中の書き込み処理が実行されているテーブルセットに変更することを特徴とする請求項１１に記載の前記プロセッサにより読み取り可能な非一時的な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットを通信する通信装置、通信方法、および、記録媒体に関する。
【背景技術】
【０００２】
近年、テレビコンテンツのデジタル化又はスマートフォンの普及等によりネットワークシステムにおけるトラヒックが大容量化している。これにより、キャリアバックボーンの通信帯域は急増しており、１００［Ｇｂｐｓ］を超えるパケット処理回路の需要が高まっている。
【０００３】
ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）は、高速性、柔軟性、及び、短期開発の実現性を兼ね備えることから幅広い通信装置のパケット処理回路に利用されている。これまでのＦＰＧＡ開発では、通信帯域増加に対応するためにはＦＰＧＡ内部の動作周波数を高くし、並列展開ビット数を増加することでパケット処理を高速化してきた。しかし、動作周波数の向上が鈍化しており、同ＦＰＧＡで１００Ｇｂｐｓを超えてパケット処理を実現するには並列展開ビット数をＥｔｈｅｒｎｅｔ（商標登録、以下同じ）の最少サイズ６４バイト（５１２ビット）以上に展開する必要があり、最小サイズであれば１ｃｌｋ内に複数のパケットが到着する。
【０００４】
帯域制御機能又は統計カウント機能などのパケット管理機能を、ＦＰＧＡに実装する場合、ＦＰＧＡは、通信装置が論理多重して収容するフロー毎のパケットの情報を一つの情報記憶媒体（以後、テーブルと記載）に格納し、到着したパケットに対応するフロー毎のテーブルの値を、パケットが到着する毎に更新する。
【０００５】
帯域制御機能を実現する場合、ＦＰＧＡは、各フローの消費帯域をテーブルで管理する。具体的には、ＦＰＧＡは、パケット到着毎に該当フローのテーブルから設定帯域及び消費帯域を読出し（以降、ＲＤと記載）、設定帯域との比較、及び、消費帯域の演算をした後、消費帯域更新結果のテーブルへの書込み（以降、ＷＲと記載）を実行する。以後、前述のＲＤからＷＲまでの処理ように、パケットに関する情報によってテーブルを更新する処理をテーブル更新処理と記載する。
【０００６】
例えば４００［Ｇｂｐｓ］など、１００［Ｇｂｐｓ］を超えたパケット処理速度で帯域制御をＦＰＧＡで実施する場合には、１ｃｌｋに２パケット以上のパケット情報が到着し、ＲＤ、及び、ＷＲを１ｃｌｋ内に少なくとも２個ずつ同時に処理する必要がある。
【０００７】
本技術分野の背景技術として、特開２０００−２１６８８３号公報（特許文献１）がある。特許文献１には、「マルチポートＲＡＭスイッチユニットは、複数の書き込み回路と複数の読み出し回路を有し、各々が、マルチポートＲＡＭ式クロスコネクト切替構造の入力／出力ポートの入力／出力クロック速度の指定分数のタイミング速度で動作する」ことが記載されている（要約参照）。すなわち、特許文献１には、パケット処理の１ｃｌｋ内にテーブルへ複数個のＲＤ及びＷＲを実施可能なマルチポートＲＡＭを使用した技術が提案されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０００−２１６８８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、近年の高速パケット処理向けのＦＰＧＡを使用する場合、動作周波数が高く、１ｃｌｋ内にＲＤ及びＷＲは、それぞれ１個ずつ処理することしかできない。具体的には、ＦＰＧＡは、２つのアクセスポートを持つｄｕａｌ  ｐｏｒｔ  ＲＡＭまでしか備えておらず、このｄｕａｌ  ｐｏｒｔ  ＲＡＭは、１ｃｌｋ内にＲＤ及びＷＲをそれぞれ１個ずつの処理を可能とする（２個のＲＤのみ、あるいは、２個のＷＲのみも可）。従って、ＦＰＧＡでは、特許文献１に記載された技術のように、１ｃｌｋ内にテーブルへ２個以上のＲＤ、及び、２個以上のＷＲを同時に実施することができず、１ｃｌｋに２パケット以上のパケットが到着した場合には、帯域制御機能や統計カウント機能のテーブル更新処理を実現できないという問題がある。
【００１０】
本発明は、前述の問題を鑑みてなされたものであり、１ｃｌｋ内の複数パケット到着に対応するテーブル更新処理の高速化を目的とする。
【課題を解決するための手段】
【００１１】
本発明の代表的な一例を示せば以下のとおりである。ネットワークに接続される通信装置は、前記ネットワークからの１つの読出し要求および１つの書き込み要求を同一タイミングで処理可能でありフローごとの情報を同期させて保持する複数のテーブルを有するテーブルセットが、複数組存在するテーブルセット群と、前記フローごとに最新のアクセス先となるテーブルセットを指定する最新アクセス先保持テーブルと、前記ネットワークから同時に受信された複数の書き込み要求について前記最新アクセス先保持テーブルを参照した結果、前記各書き込み要求に含まれるフローのアクセス先が同一のテーブルセットである場合、前記各書き込み要求に含まれるフローごとに異なるテーブルセットをアクセス先として選択して、当該選択されたアクセス先となるテーブルセットの各テーブルに書き込み処理を実行し、前記各書き込み要求に含まれるフローごとのアクセス先が前記書き込み処理の実行後のアクセス先となるように前記最新アクセス保持テーブルを更新する更新部と、を有する。
【発明の効果】
【００１２】
本発明の一実施形態によれば、１ｃｌｋ内に複数の読出し要求および書き込み要求が到着した場合にテーブル更新処理の高速化を図ることができる。
【図面の簡単な説明】
【００１３】
【図１Ａ】２ｃｌｋに１パケットが到着する場合のパケット到着間隔とテーブル更新処理タイミングの概要を示す説明図である。
【図１Ｂ】１ｃｌｋに２パケットが到着する場合のパケット到着間隔とテーブル更新処理タイミングの概要を示す説明図である。
【図２Ａ】本実施例における複数ＲＤ／複数ＷＲのＲＤアクセス処理例を示す説明図である。
【図２Ｂ】本実施例における複数ＲＤ／複数ＷＲのＷＲアクセス処理例を示す説明図である。
【図３】実施例１の通信装置の物理的な構成及び論理回路を示すブロック図である。
【図４】実施例１の入力パケット制御部の論理的な構成を示すブロック図である。
【図５】実施例１の入力テーブル更新部の論理的な構成を示すブロック図である。
【図６】実施例１の最新アクセス保持テーブルを示す説明図である。
【図７】実施例１の演算テーブルを示す説明図である。
【図８】実施例１のアクセスフロー管理リストを示す説明図である。
【図９】実施例１のアクセステーブル検索部が実行するＲＤアクセステーブル検索処理を示すフローチャートである。
【図１０】実施例１のアクセステーブル検索部が実行するＷＲアクセステーブル検索処理を示すフローチャートである。
【図１１】実施例１のアクセステーブル選択部が実行するＲＤアクセステーブル選択処理を示すフローチャートである。
【図１２Ａ】実施例１のアクセステーブル選択部が実行するＷＲアクセステーブル選択処理の詳細な処理手順例を示すフローチャート（前半）である。
【図１２Ｂ】実施例１のアクセステーブル選択部が実行するＷＲアクセステーブル選択処理の詳細な処理手順例を示すフローチャート（後半）である。
【図１３】実施例１の入力テーブル更新部が実行するアクセスフロー管理処理を示すフローチャートである。
【図１４】実施例１のテーブル更新処理を実行する際の演算結果を示す説明図である。
【図１５】実施例２のパケット到着間隔とテーブル更新処理タイミングの概要を示す説明図である。
【図１６】実施例２の入力パケット制御部の論理的な構成を示すブロック図である。
【図１７】図１６に示した実施例２の入力テーブル更新部の論理的な構成を示すブロック図である。
【図１８】実施例２の最新アクセス保持テーブルセットを示す説明図である。
【図１９】実施例２のアクセスフロー管理リストを示す説明図である。
【図２０】実施例２のアクセステーブル選択部が実行するＲＤアクセステーブル選択処理を示すフローチャートである。
【図２１Ａ】実施例２のアクセステーブル選択部が実行するＷＲアクセステーブル選択処理の詳細な処理手順例を示すフローチャート（前半）である。
【図２１Ｂ】実施例２のアクセステーブル選択部が実行するＷＲアクセステーブル選択処理の詳細な処理手順例を示すフローチャート（後半）である。
【図２２】実施例２のアクセステーブル選択部が実行するＷＲアクセステーブル選択処理における最新アクセス先情報の変更処理例を示す説明図である。
【図２３】実施例３のパケット到着間隔とテーブル更新処理タイミングの概要を示す説明図である。
【図２４】実施例３の入力テーブル更新部の論理的な構成を示すブロック図である。
【図２５】実施例３の統計テーブルを示す説明図である。
【図２６】実施例３の統計合算部が実行する統計通知処理を示すフローチャートである。
【図２７】ＦＰＧＡ動作周波数と回線インタフェース速度のトレンドを示す説明図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施例について、図面を参照して説明する。以下に述べる実施例は本発明の一例であって、本発明を制限するものではない。本実施例におけるＦＰＧＡ動作周波数と回線インタフェース速度のトレンドを示す。
【００１５】
＜ＦＰＧＡ動作周波数と回線ＩＦ速度のトレンド＞
図２７は、ＦＰＧＡ動作周波数と回線インタフェース速度のトレンドを示す説明図である。ＦＰＧＡは、動作周波数を高くし、並列展開ビット数を増加することで回線インタフェース速度のパケット処理を実現する。パケットは８ビット単位の２進数処理のため、並列展開ビット数は２のべき乗単位が一般的である。ＦＰＧＡ動作周波数は高速化しているが、そのスピードは鈍化している。一方、回線インタフェース速度は急激なスピードで高速化している。そのため、ＦＰＧＡ内部の並列展開ビット数は大きくなる傾向にあり、例えば４００［Ｇｂｐｓ］の回線インタフェース速度を満たすためには、ＦＰＧＡは並列展開ビット数を２０４８とする必要がある。
【００１６】
従って、本ＦＰＧＡでは、例えば４００［Ｇｂｐｓ］のパケット処理を実現するためには、並列展開ビット数をＥｔｈｅｒｎｅｔの最小サイズ６４バイト（５１２ビット）以上に展開する必要があり、最小サイズであれば１ｃｌｋ内に複数のパケットが到着することになる。
【００１７】
＜パケット到着間隔とテーブル更新処理タイミング例＞
図１Ａは、２ｃｌｋに１パケットが到着する場合のパケット到着間隔とテーブル更新処理タイミングの概要を示す説明図である。図１Ａでは、例えば、１００［Ｇｂｐｓ］回線におけるパケット到着間隔を２ｃｌｋ、テーブル更新時間を５ｃｌｋ（ＲＤ：１ｃｌｋ、演算：３ｃｌｋ、ＷＲ：１ｃｌｋ）（具体的にはＲＤやＷＲに数ｃｌｋ要する場合もあるが本図では説明を簡略化するために１ｃｌｋとする）とする。この場合、パケット通信装置に２ｃｌｋで連続してパケットが到着すると、一つ目のパケット到着によるＷＲと、三つ目のパケット到着によるＲＤは同じタイミングとなる。テーブルは１個のＲＤと１個のＷＲを同時に処理（以降、１個のＲＤと１個のＷＲを同時に処理することを１ＲＤ／１ＷＲと記載）するのみであり、パケット通信装置は、パケット到着毎にテーブル更新処理を実施することができる。
【００１８】
図１Ｂは、１ｃｌｋに２パケットが到着する場合のパケット到着間隔とテーブル更新処理タイミングの概要を示す説明図である。例えば、１ｃｌｋに２パケットが到着し、図２Ａと同様にテーブル更新時間が５ｃｌｋである場合、パケット通信装置に毎ｃｌｋに２パケットが到着すると、一つ目及び二つ目のパケット到着によるＷＲと、九つ目及び十個目のパケット到着によるＲＤは同じタイミングとなる。
【００１９】
この場合、テーブルは毎ｃｌｋに２個のＲＤと２個のＷＲを同時に処理（以降、２個のＲＤと２個のＷＲを同時に処理することを２ＲＤ／２ＷＲと記載）する必要があるが、パケット通信装置が備えるテーブルは１ＲＤ／１ＷＲであり、１ｃｌｋにＲＤ及びＷＲをそれぞれ２個ずつ処理することはできない。
【００２０】
＜仮想マルチポートテーブルによる処理例＞
本実施例では、図１Ｂに示したように、同時に到着した複数のＲＤ要求、複数のＷＲ要求があった場合にでもテーブル更新を可能にする。このため、本実施例では、１ＲＤ／１ＷＲのｄｕａｌ  ｐｏｒｔ  ＲＡＭである演算テーブルを複数組み合わせた仮想マルチポートＲＡＭ（仮想マルチポートテーブル）により、複数ＲＤ／複数ＷＲを実現する。
【００２１】
図２Ａおよび図２Ｂは、本実施例における複数ＲＤ／複数ＷＲのＲＤアクセス処理例およびＷＲアクセス処理例を示す説明図である。図２Ａでは、説明を簡単にするため、２ＲＤ／２ＷＲの場合を例に挙げて説明する。また、図２Ａでは、あるフロー（例としてフローＩＤ：＃１）のＲＤ要求と、他のフロー（例としてフローＩＤ：＃２）のＲＤ要求とを、同一サイクルで受け付けた場合を例に挙げて説明する。
【００２２】
２ＲＤ／２ＷＲの場合、仮想マルチポートテーブル１は、２つの演算テーブルを２組有する構成である。一方の組を第１の演算テーブルセット１０とし、他方の組を第２の演算テーブルセット２０とする。各演算テーブルセット１０，２０は、２つの演算テーブルを有する。各演算テーブルセット１０，２０内の両演算テーブル（１１，１２）、（２１，２２）は、同期させることで同一内容のデータを保持する。なお、本例では、演算テーブル１１，１２，２１，２２においてデータＡ１、Ｂ１が格納されている領域のアドレスは、フローＩＤ：＃１により指定される。同様に、データＡ２、Ｂ２が格納されている領域のアドレスは、フローＩＤ：＃２により指定される。
【００２３】
フローＩＤ：＃１のＲＤ要求は、第１の演算テーブルセット１０を指定し、フローＩＤ：＃２のＲＤ要求も、第１の演算テーブルセット１０を指定した場合について説明する。フローＩＤ：＃１のＲＤ要求は、フローＩＤ：＃１により、演算テーブル１１のデータＡ１を指定する。これに対し、フローＩＤ：＃２のＲＤ要求は、フローＩＤ：＃２により、演算テーブル１１のデータＡ１と演算テーブル１２のデータＡ１のうち、フローＩＤ：＃１のＲＤ要求と競合しない演算テーブル１２のデータＡ１を指定する。これにより、アクセス競合を回避して、同一タイミングでの２ＲＤを実現することができる。
【００２４】
図２Ｂを用いて、フローＩＤ：＃１のＷＲ要求と、フローＩＤ：＃２のＷＲ要求とを、同一サイクルで受け付けた場合を例に挙げて説明する。図２Ｂは、図２Ａの２つのＲＤ要求と同時に２つのＷＲ要求が受信された場合の例である。フローＩＤ：＃９のＷＲ要求は、フローＩＤ：＃９のＲＤ要求（不図示）により読み出されたデータＡ９を用いた演算結果Ａ９’をＷＲするためのリクエストである。同様に、フローＩＤ：＃１０のＷＲ要求は、フローＩＤ：＃１０のＲＤ要求（不図示）により読み出されたデータＡ１０を用いた演算結果Ａ１０’をＷＲするためのリクエストである。
【００２５】
ＷＲ要求では、各演算テーブルセットにおける両演算テーブルを同期させるため、両演算テーブルにＷＲをおこなう。フローＩＤ：＃９のＷＲ要求は、フローＩＤ：＃９のＲＤ要求により演算テーブル１１のデータＡ９を読み出した領域に演算結果Ａ９’を上書きするとともに、演算テーブル１２のデータＡ９が格納されている領域にも演算結果Ａ９’を上書きする。これにより、このあとに受信されるフローＩＤ：＃９のＲＤ要求は、演算テーブル１１，１２のいずれの演算テーブルに対しＲＤすることができる。
【００２６】
これに対し、フローＩＤ：＃１０のＷＲ要求は、第１の演算テーブルセット１０ではなく、フローＩＤ：＃９のＷＲ要求と競合しない第２の演算テーブルセット２０の両演算テーブル２１、２２のデータＢ１０が格納されている領域に、演算結果Ａ１０’を上書きする。これにより、このあとに受信されるフローＩＤ：＃１０のＲＤ要求は、演算テーブル２１、２２のいずれの演算テーブルに対しＲＤすることができる。また、第１の演算テーブルセット１０にアクセスしないことにより、フローＩＤ：＃１のＷＲ要求とのアクセス競合を回避して、同一サイクルでの２ＷＲを実現することができる。なお、フローＩＤ：＃１０のアクセス先が第１の演算テーブルセット１０から第２の演算テーブルセット２０に変更されたため、フローＩＤ：＃１０のＲＤ要求およびＷＲ要求によるアクセス先は、第２の演算テーブルセット２０となるように制御される。
【００２７】
これにより、仮想マルチポートテーブル１は、複数のＲＤ要求および複数のＷＲ要求を同一クロックで受け付けた場合でも、複数のＲＤおよび複数のＷＲを実行することができる。
【００２８】
（実施例１）
以下、実施例１について図３〜図１４を用いて説明する。実施例１では、帯域制御機能のような演算機能が適用される例である。実施例１では、帯域制御方法の説明は省略し、一般的な演算機能として説明する。通信装置は、演算情報として演算結果をテーブルに保持し、パケット到着毎に演算結果を更新する。通信装置は、以下で説明する仮想マルチポートＲＡＭ（仮想マルチポートテーブル）を構成し、毎ｃｌｋに２パケットが到着した際にテーブル更新処理を実施する。仮想マルチポートテーブルは、複数の１ＲＤ／１ＷＲのテーブルから構成され、仮想的な１つの２ＲＤ／２ＷＲテーブルを実現する。
【００２９】
＜通信装置の構成例＞
図３は、実施例１の通信装置の物理的な構成及び論理回路３０２を示すブロック図である。通信装置３は、パケットを他の通信装置へ転送する装置である。通信装置３は、複数のネットワークインタフェースボード（ＮＩＦ）（３００−１〜３００−Ｍ）（Ｍは任意の自然数）、及び、スイッチ部３０６を備える。
【００３０】
ＮＩＦ３００（３００−１〜３００−Ｍ）は、ネットワークからパケットを受信し、ネットワークへパケットを送信するためのインタフェースである。スイッチ部３０６は、各ＮＩＦ３００に接続される装置であり、ＮＩＦ３００から受信したパケットを、パケットを送信すべきＮＩＦ３００に振り分ける装置である。
【００３１】
各ＮＩＦ３００は、入出力回線インタフェース３０１、論理回路３０２、ＳＷインタフェース３０５、及びＮＩＦ管理部３０８を備える。
【００３２】
入出力回線インタフェース３０１は、通信ポートである。通信装置３は、入出力回線インタフェース３０１及びネットワークを介して、他の通信装置と接続する。実施例１における入出力回線インタフェース３０１は、たとえば、イーサネット（登録商標）用の回線インタフェースである。
【００３３】
ＳＷインタフェース３０５は、スイッチ部３０６に接続するための装置である。ＮＩＦ管理部３０８は、例えば、ＣＰＵ等のプロセッサである。ＮＩＦ管理部３０８は、論理回路３０２における処理を制御する。論理回路３０２は、実施例のパケットに対する処理を行う回路である。論理回路３０２は、少なくとも一つのメモリ及び少なくとも一つの演算装置（例えば、プロセッサ）を備える。
【００３４】
論理回路３０２は、入力パケット制御部３０３、出力パケット制御部３０４、入力テーブル更新部３０９、出力テーブル更新部３１０等のパケット処理部を有し、設定レジスタ３０７を備える。
【００３５】
通信装置３が受信したパケットは、入出力回線インタフェース３０１、入力パケット制御部３０３、ＳＷインタフェース３０５、スイッチ部３０６、ＳＷインタフェース３０５、出力パケット制御部３０４、及び、入出力回線インタフェース３０１の順に送信される。入力テーブル更新部３０９は、入力パケット制御部３０３の処理の一環として経由され、同様に、出力テーブル更新部３１０は、出力パケット制御部３０４の処理の一環として経由される。
【００３６】
論理回路３０２が有する各処理部は、集積回路等の物理的な装置によって実装されてもよいし、少なくとも一つのプロセッサによって実行されるプログラムによって実装されてもよい。また、複数の処理部（例えば、入力パケット制御部３０３、入力テーブル更新部３０９、出力パケット制御部３０４、及び、出力テーブル更新部３１０）が一つの装置又はプログラムによって実装されてもよいし、一つの処理部が複数の装置又は複数のプログラムによって実装されてもよい。
【００３７】
ＮＩＦ管理部３０８は、設定レジスタ３０７を制御する。設定レジスタ３０７は、データを一時的に格納する記憶領域を有し、論理回路３０２に備わる各処理部のレジスタ値を保持する。
【００３８】
設定レジスタ３０７は論理回路３０２を介して論理回路３０２に備わる処理部と接続する。なお、以下において、設定レジスタ３０７の処理内容についての説明を省略するが、論理回路３０２が有する処理部は、設定レジスタ３０７を用いて処理を実行する。入出力回線インタフェース３０１は、受信したパケットに後述する装置内ヘッダを付加する。
【００３９】
ここで、パケットのフォーマットについて説明する。パケットは、宛先ＭＡＣアドレス、送信元ＭＡＣアドレス、ＶＬＡＮヘッダ、イーサタイプ値、ペイロード、及び、フレームチェックシーケンス（ＦＣＳ）を含む。宛先ＭＡＣアドレス、又は、送信元ＭＡＣアドレスには、通信装置３のＭＡＣアドレスが設定される。ＶＬＡＮヘッダには、フローの識別子となるＶＬＡＮ  ＩＤが設定される。
【００４０】
なお、ペイロードにＭＰＬＳ（Ｍｕｌｔｉ−Ｐｒｏｔｏｃｏｌ  Ｌａｂｅｌ  Ｓｗｉｔｃｈｉｎｇ）ヘッダ又は他のプロトコルのヘッダが設定され、ＭＰＬＳラベル値などをフローの識別子として設定されてもよい。フレームチェックシーケンス（ＦＣＳ）には、フレームの誤りを検出するための値が設定される。
【００４１】
つぎに、パケットに付加される装置内ヘッダのフォーマットについて説明する。装置内ヘッダは、出力ネットワークインタフェースボード識別子（出力ＮＩＦ  ＩＤ）、フローＩＤ、及び、パケット長を含む。出力ＮＩＦ  ＩＤは、内部ルーティング情報である。内部ルーティング情報とは、通信装置３が受信したパケットを、通信装置３のいずれのＮＩＦ３００のポートから出力するかを示す情報である。スイッチ部３０６は、内部ルーティング情報に従い、スイッチ部３０６に送信された入力パケットを特定のＮＩＦ３００の特定のＳＷインタフェース３０５に転送する。
【００４２】
装置内ヘッダは、受信したパケットを通信装置３において処理するため、受信したパケットに入出力回線インタフェース３０１付加される。装置内ヘッダが付加され、入出力回線インタフェース３０１からスイッチ部３０６に向けて送信されるパケットを、以降において、入力パケットと記載する。
【００４３】
入出力回線インタフェース３０１は、受信したパケットに装置内ヘッダを付加する際、出力ＮＩＦ  ＩＤ、及び、フローＩＤにｎｕｌｌ値等の値を格納する。すなわち、入出力回線インタフェース３０１は、出力ＮＩＦ  ＩＤ、及び、フローＩＤに格納される値を決定しない。出力ＮＩＦ  ＩＤ、及び、フローＩＤには、入力パケット制御部３０３によって値が格納される。
【００４４】
入出力回線インタフェース３０１は、受信したパケットのパケット長を取得し、装置内ヘッダのフレーム長に、取得されたパケット長を格納する。その後、入出力回線インタフェース３０１は、パケットを入力パケット制御部３０３に送信する。
【００４５】
入力パケット制御部３０３は、入出力回線インタフェース３０１から受信したパケットに関して、後述するパケット処理を実行する。本パケット処理時に、装置内ヘッダの出力ＮＩＦ  ＩＤ及びフローＩＤを追加する。
【００４６】
また、入力パケット制御部３０３は、本パケット処理時に、入力テーブル更新部３０９がテーブルを用いて管理するフロー毎のパケット情報を更新する。パケット処理後、入力パケット制御部３０３は、入力パケットをＳＷインタフェース３０５に送信する。ＳＷインタフェース３０５は、受信した入力パケットをスイッチ部３０６に転送する。
【００４７】
スイッチ部３０６は、各ＮＩＦ３００のＳＷインタフェース３０５から入力パケットを受信した後、入力パケットの出力ＮＩＦ  ＩＤを参照することによって、受信した入力パケットの転送先であるＮＩＦ３００を特定する。次に、スイッチ部３０６は、特定されたＮＩＦ３００に対応するＳＷインタフェース３０５に、受信した入力パケットを、出力パケットとして転送する。なお、実施例１において、スイッチ部３０６から入出力回線インタフェース３０１へ送信されるパケットを出力パケットと記載する。
【００４８】
ＳＷインタフェース３０５は、受信した出力パケットを出力パケット制御部３０４に転送する。前述の例では、入力パケット制御部３０３がパケット処理を実行したが、出力パケット制御部３０４が、入力パケット制御部３０３の代わりにパケット処理を実行してもよい。出力パケット制御部３０４がパケット処理を実行する場合、パケット処理後、出力パケット制御部３０４は、出力パケットを入出力回線インタフェース３０１に送信する。本パケット処理時に、出力テーブル更新部３１０がテーブルを用いて管理するフロー毎のパケット情報を更新する。
【００４９】
出力パケット制御部３０４がパケット処理を実施しない場合、出力パケット制御部３０４は、ＳＷインタフェース３０５から受信した出力パケットを、そのまま入出力回線インタフェース３０１に転送し、出力テーブル更新部３１０が管理するフロー毎のパケット情報は更新しない。
【００５０】
入出力回線インタフェース３０１は、受信した出力パケットから装置内ヘッダを除去する。その後、入出力回線インタフェース３０１は、上述したパケットのフォーマットにしたがって出力パケットを他の装置へ転送する。
【００５１】
＜入力パケット制御部３０３の構成例＞
図４は、実施例１の入力パケット制御部３０３の論理的な構成を示すブロック図である。図４では、実施例１におけるＲＤ及びＷＲの処理要求の流れを明確化するため、破線でＲＤ要求、長二点鎖線でＷＲ要求の流れを示す（以降の図５、図１６、図１７、及び、図２４においても破線と長二点鎖線は同様に扱う）。
【００５２】
入力パケット制御部３０３は、振分部４０１、２つのパケット処理部４０２（４０２−１〜４０２−２）、多重部４０３、及び、調停部４０４を備える。
【００５３】
振分部４０１は、入力パケット制御部３０３が入出力回線インタフェース３０１から入力パケットを受信した場合、パケット処理を実行するパケット処理部４０２を、パケット処理部４０２−１あるいはパケット処理部４０２−２から決定し、決定したパケット処理部４０２にパケットを振分ける。
【００５４】
振分部４０１は、受信した入力パケットのＶＬＡＮヘッダに基づいて、パケットのフローを識別し、これによって、出力ＮＩＦ  ＩＤを決定する。また、振分部４０１は、入力パケットの装置内ヘッダの出力ＮＩＦ  ＩＤ及びフローＩＤに値を格納し、入力パケットを受信した順番に、パケット処理部４０２（４０２−１〜４０２−２）へパケットを転送する。
【００５５】
なお、実施例１では、振分部４０１は、入力パケットを受信した順番にパケット処理部４０２へパケットを転送したが、識別したフローに応じて転送するパケット処理部４０２を決定しても良い。また、振分部４０１は、受信した入力パケットが１つの場合は、一方のパケット処理部４０２（例えば４０２−１）に転送し、受信した入力パケットが２つの場合は、それぞれのパケット処理部４０２（４０２−１及び４０２−２）に転送しても良い。
【００５６】
また、振分部４０１は、入力パケット単位でパケット処理部４０２へパケットを転送したが、入力パケットを断片化して転送し、多重部４０３が入力パケットを再構築しても良い。また、振分部４０１は、入力パケットのヘッダ部分（例えば、宛先ＭＡＣアドレスからイーサタイプ値まで）のみをパケット処理部４０２へ振分け、残りのペイロード部分は多重部４０３へ転送し、パケット処理部４０２の処理が終了するまで待ち合せておいても良い。
【００５７】
パケット処理部４０２は、パケット処理時に、調停部４０４にＲＤ要求及びＷＲ要求を転送し、後述する入力テーブル更新部３０９が保持する演算テーブルを更新する。パケット処理部４０２は、演算テーブルから情報を取得するためにＲＤ要求を入力テーブル更新部３０９に転送する。なお、フローに対応したＲＤアドレスも転送する。また、パケット処理部４０２は、情報の取得後、例えば帯域制御機能のための消費帯域計算などの演算処理を実施して、演算テーブルの情報を更新するためにＷＲ要求を入力テーブル更新部３０９に転送する。なお、フローに対応したＷＲアドレス、及び、更新するＷＲデータも転送する。パケット処理後、パケット処理部４０２は、入力パケットを多重部４０３に送信する。
【００５８】
また、パケット処理部４０２は、演算処理結果に基づいてパケットの内容を変更して多重部４０３に送信しても良い。また、実施例１では、振分部４０１においてフローを識別したが、パケット処理部４０２がフローを識別し、装置内ヘッダの出力ＮＩＦ  ＩＤ、及び、フローＩＤに値を格納しても良い。
【００５９】
調停部４０４は、パケット処理部４０２（４０２−１及び４０２−２）から転送されるＲＤ要求やＷＲ要求を、パケット処理部４０２−１用とパケット処理部４０２−２用でそれぞれ別に入力テーブル更新部３０９に転送する。また、調停部４０４は、上記と同様に、パケット処理部４０２−１用とパケット処理部４０２−２用にそれぞれ別に入力テーブル更新部３０９から受信したＲＤ結果をパケット処理部４０２（４０２−１及び４０２−２）に通知する。
【００６０】
なお、実施例１では、パケット処理部４０２において、帯域制御機能などの演算処理を実施したが、パケット処理部４０２は調停部４０４にフローＩＤやパケット長などのパケット情報を転送し、調停部４０４において演算処理を実施しても良い。この際、調停部４０４は、演算テーブル５０４から情報を取得し、演算処理を実施して演算テーブル５０４の情報を更新する。また、調停部４０４は、パケット処理部４０２−１及びパケット処理部４０２−２から受信したフローＩＤが同じであった場合には、演算結果を集約して演算テーブル５０４の情報を更新しても良い。
【００６１】
さらに、調停部４０４は、連続して同じフローのパケット情報を受信した場合には、演算テーブル５０４の情報の更新が完了していない可能性があるため、この場合に受信したパケット情報については演算テーブルから取得した情報を使用せず、前のパケット情報の処理時に内部保持していた演算結果を用いて演算テーブルの情報を更新しても良い。
【００６２】
多重部４０３は、各パケット処理部４０２から受信したパケットを多重し、到着順にＳＷインタフェース３０５に送信する。実施例１において、入力パケット制御部３０３がパケット処理に要する時間はあらかじめ定められる。なお、実施例１において、パケット処理部４０２の数を、通信装置３が接続される回線速度（同時到着パケット数）に従って「２」としたが、Ｎ（Ｎは任意の自然数）としても良い。この際、調停部４０４は、パケット処理部４０２から転送されるＲＤ要求やＷＲ要求をＮから２に調停して入力テーブル更新部３０９に転送する。
【００６３】
＜入力テーブル更新部３０９の構成例＞
図５は、実施例１の入力テーブル更新部３０９の論理的な構成を示すブロック図である。入力テーブル更新部３０９は、アクセステーブル検索部５０１（５０１−１及び５０１−２）、最新アクセス保持テーブル５０２（５０２−１及び５０２−２）、アクセステーブル選択部５０３、演算テーブル５０４（５０４−１ａ、５０４−１ｂ、５０４−２ａ、及び、５０４−２ｂ）、及び、アクセスフロー管理リスト５１０を備える。
【００６４】
ここで、演算テーブルセット５０５−１は、演算テーブル５０４−１ａ及び５０４−１ｂの総称であり、演算テーブルセット５０５−２は、演算テーブル５０４−２ａ及び５０４−２ｂの総称である。実施例１においては、この４つの演算テーブル５０４（５０４−１ａ、５０４−１ｂ、５０４−２ａ、及び、５０４−２ｂ）（１つ１つは１ＲＤ／１ＷＲのテーブル）によって仮想マルチポートテーブルを構成し、仮想的な１つの２ＲＤ／２ＷＲの演算テーブルを実現する。
【００６５】
アクセステーブル検索部５０１（５０１−１Ｒ、５０１−２Ｒ）は、入力パケット制御部３０３からＲＤ要求を受信した場合、最新アクセス保持テーブル５０２（５０２−１Ｒ、５０２−２Ｒ）を参照して、後述するＲＤアクセステーブル検索処理Ｓ９５０（図９を参照）を実行する処理部である。また、アクセステーブル検索部５０１（５０１−１Ｗ、５０１−２Ｗ）は、入力パケット制御部３０３からＷＲ要求を受信した場合、最新アクセス保持テーブル５０２（５０２−１Ｗ、５０２−２Ｗ）を参照して、後述するＷＲアクセステーブル検索処理Ｓ１０５０（図１０を参照）を実行する処理部である。アクセステーブル検索部５０１は、最新アクセス保持テーブル５０２から検索した最新アクセス先情報を、アクセステーブル選択部５０３へ通知する。
【００６６】
アクセステーブル選択部５０３は、アクセステーブル検索部５０１からＲＤ要求を受信した場合、後述するＲＤアクセステーブル選択処理Ｓ１１５０（図１１を参照）を実行し、演算テーブル５０４から情報を読み出す処理部である。また、アクセステーブル選択部５０３は、アクセステーブル検索部５０１からＷＲ要求を受信した場合、後述するＷＲアクセステーブル選択処理Ｓ１２５０（図１２を参照）を実行し、演算テーブル５０４に情報を書き込む処理部である。
【００６７】
アクセステーブル選択部５０３は、アクセステーブル検索部５０１からＲＤ要求やＷＲ要求と同時に受信する最新アクセス先情報を用いて、データを読み出す演算テーブル５０４や、データを書き込む演算テーブル５０４を選択する。さらに、アクセステーブル選択部５０３は、ＷＲ要求と同時に受信した最新アクセス先情報が示す演算テーブルセットから、書き込む演算テーブル５０４（演算テーブルセット５０５）を変更した場合、その変更結果を最新アクセス保持テーブル５０２−１（５０１−１Ｒ、５０１−１Ｗ）及び最新アクセス保持テーブル５０２−２（５０１−２Ｒ、５０１−２Ｗ）の両方に書き戻す。
【００６８】
アクセスフロー管理リスト５１０は、アクセステーブル選択部５０３がＷＲアクセステーブル選択処理Ｓ１２５０を実施している入力パケットのＷＲアドレスと、アクセステーブル選択部５０３の処理状況と、継続処理用の最新アクセス先情報を示す。
【００６９】
入力テーブル更新部３０９は、アクセスフロー管理リスト５１０を、論理回路３０２に備わるメモリ等に保持し、アクセスフロー管理処理Ｓ１３５０において、アクセスフロー管理リスト５１０を管理する。そして、アクセステーブル選択部５０３は、ＷＲアクセステーブル選択処理Ｓ１２５０において、アクセスフロー管理リスト５１０を更新する。
【００７０】
＜最新アクセス保持テーブル５０２の記憶内容例＞
図６は、実施例１の最新アクセス保持テーブル５０２を示す説明図である。最新アクセス保持テーブル５０２は、通信装置３が受信したパケットに関して、フロー毎の最新情報を書き込んでいる演算テーブル５０４（５０４−１ａ、５０４−１ｂ、５０４−２ａ、及び、５０４−２ｂ）の情報（ここでは演算テーブルセット５０５として管理）を有するテーブルである。最新アクセス保持テーブル５０２は、フローＩＤフィールド６０１、及び、最新アクセス先情報フィールド６０２を含み、フローごとに、各フィールド６０１，６０２の値を記憶する。
【００７１】
フローＩＤフィールド６０１は、入力パケットのフローＩＤを含む。最新アクセス先情報フィールド６０２は、パケットのフロー毎の演算結果の最新情報を保持する演算テーブルセットを指定する情報を含む。最新アクセス先情報フィールド６０２の値「０」が演算テーブルセット５０５−１を示し、「１」が演算テーブルセット５０５−２を示す。なお、最新アクセス保持テーブル５０２は、図１２ＢのＳ１２１３において更新される。
【００７２】
＜演算テーブル５０４の記憶内容例＞
図７は、実施例１の演算テーブル５０４を示す説明図である。演算テーブル５０４は、フローＩＤフィールド７０１、及び、演算結果フィールド７０２を含み、フローごとに各フィールド７０１，７０２の値を記憶する。フローＩＤフィールド７０１は、入力パケットのフローＩＤを含む。演算結果フィールド７０２は、入力パケット制御部３０３における帯域制御機能などの演算処理におけるフロー毎の演算結果を含む。
【００７３】
＜アクセスフロー管理リスト５１０の記憶内容例＞
図８は、実施例１のアクセスフロー管理リスト５１０を示す説明図である。アクセスフロー管理リスト５１０は、管理エントリフィールド８０１、ＷＲアドレスフィールド８０２、処理状況カウンタフィールド８０３、及び、継続処理用最新アクセス先情報フィールド８０４を含み、管理エントリごとに各フィールド８０１〜８０４の値を記憶する。
【００７４】
管理エントリフィールド８０１は、演算テーブル５０４を更新中であるフローを管理する内部論理回路のエントリ（１〜Ｎ）を一意に示す識別子（以下、管理エントリ）を含む。管理エントリは、たとえば、この内部論理回路を数値によって識別する値である。管理エントリフィールド８０１に格納される値は、管理者等によってあらかじめ設定される。
【００７５】
ＷＲアドレスフィールド８０２は、入力パケットに割り当てられたフローを一意に示すアドレスを含む。ＷＲアドレスフィールド８０２に格納される値は、入力パケット制御部３０３において識別したフローＩＤの値に対応するアドレスである。また、ＷＲアドレスフィールド８０２に格納される値は、アクセステーブル選択部５０３によって更新される。
【００７６】
処理状況カウンタフィールド８０３は、処理状況カウンタを記憶する。処理状況カウンタは、最新アクセス保持テーブル５０２−１及び５０２−２への書込み状況を示す値を含む。アクセステーブル選択部５０３のＷＲアクセステーブル選択処理Ｓ１２５０において、例えばアクセステーブル検索部（２）側から受信したＷＲ要求を基に、最新アクセス先情報を変更する場合の最新アクセス保持テーブル５０２−１及び５０２−２への書込み状況を示す値を含む。
【００７７】
より具体的には、たとえば、処理状況カウンタフィールド８０３は、最新アクセス保持テーブル５０２−１及び５０２−２への書込み処理が開始されてから、実際に最新アクセス保持テーブル５０２−１及び５０２−２の最新アクセス先情報フィールド６０２に書込みが反映されるまでの実行時間に関する値を含む。
【００７８】
以下に示す処理状況カウンタは、減算カウンタによって、最新アクセス保持テーブル５０２−１及び５０２−２への書込み処理が開始されてから最新アクセス先情報フィールド６０２に書込みが反映されるまでの残り時間を示す。具体的には、書込み処理が開始された場合、処理状況カウンタフィールド８０３には処理時間が格納される。
【００７９】
そして、入力テーブル更新部３０９が単位時間（実施例１においては１ｃｌｋ）毎に処理状況カウンタフィールド８０３の値を減算する。処理状況カウンタフィールド８０３に“０”が格納される管理エントリは、アクセステーブル選択部５０３が上記書込み処理を終了し、最新アクセス先情報フィールド６０２に書込みが反映されたことを示す。また、処理状況カウンタフィールド８０３に“０”以外の正の数が格納される管理エントリは、そのフローＩＤに対応するＷＲアドレスに書込み処理を実行中であり、最新アクセス先情報フィールド６０２に書込みが反映されていないことを示す。
【００８０】
以下において、処理状況カウンタが減算カウンタである場合の処理を記載するが、処理状況カウンタは加算カウンタによって、書込み処理が開始されてから経過した時間を示してもよい。この場合、アクセステーブル選択部５０３は、所定の時間と処理状況カウンタとを比較することによって、書込み処理の状況を取得しても良い。
【００８１】
以下に、アクセステーブル検索部５０１が実行するＲＤアクセステーブル検索処理Ｓ９５０について説明する。
【００８２】
＜ＲＤアクセステーブル検索処理Ｓ９５０＞
図９は、実施例１のアクセステーブル検索部５０１が実行するＲＤアクセステーブル検索処理Ｓ９５０を示すフローチャートである。アクセステーブル検索部５０１（５０１−１Ｒ、５０１−２Ｒ）は、入力パケット制御部３０３からＲＤ要求を受信した場合（Ｓ９００）、入力パケット制御部３０３からＲＤ要求と同時に受信するＲＤアドレスを取得する（Ｓ９０１）。Ｓ９０１の後、アクセステーブル検索部５０１（５０１−１Ｒ、５０１−２Ｒ）は、取得したＲＤアドレスで最新アクセス保持テーブル５０２（５０２−１Ｒ、５０２−２Ｒ）を検索し、最新アクセス先情報を取得する（Ｓ９０２）。Ｓ９０２の後、アクセステーブル検索部５０１（５０１−１Ｒ、５０１−２Ｒ）は、ＲＤ要求、Ｓ９０１において取得したＲＤアドレス、及び、Ｓ９０２において取得した最新アクセス先情報をアクセステーブル選択部５０３へ通知し、ＲＤアクセステーブル検索処理Ｓ９５０を終了する（Ｓ９０４）。
【００８３】
実施例１では、アクセステーブル検索部５０１−１Ｒ、５０１−２Ｒは、入力パケット制御部３０３から受信したそれぞれのＲＤ要求をトリガとしてＲＤアクセステーブル検索処理Ｓ９５０を開始し、各アクセステーブル検索部５０１−１Ｒ、５０１−２Ｒが備える最新アクセス保持テーブル５０２−１Ｒ、５０２−２Ｒから取得した最新アクセス先情報をそれぞれアクセステーブル選択部５０３へ通知する。
【００８４】
以下に、アクセステーブル検索部５０１が実行するＷＲアクセステーブル検索処理Ｓ１０５０について説明する。
【００８５】
＜ＷＲアクセステーブル検索処理Ｓ１０５０＞
図１０は、実施例１のアクセステーブル検索部５０１が実行するＷＲアクセステーブル検索処理Ｓ１０５０を示すフローチャートである。アクセステーブル検索部５０１（５０１−１Ｗ、５０１−２Ｗ）は、入力パケット制御部３０３からＷＲ要求を受信した場合（Ｓ１０００）、入力パケット制御部３０３からＷＲ要求と同時に受信するＷＲアドレス及びＷＲデータを取得する（Ｓ１００１）。Ｓ１００１の後、アクセステーブル検索部５０１（５０１−１Ｗ、５０１−２Ｗ）は、取得したＷＲアドレスで最新アクセス保持テーブル５０２（５０２−１Ｗ、５０２−２Ｗ）を検索し、最新アクセス先情報を取得する（Ｓ１００２）。
【００８６】
Ｓ１００２の後、アクセステーブル検索部５０１（５０１−１Ｗ、５０１−２Ｗ）は、ＷＲ要求、Ｓ１００１において取得したＷＲアドレス、ＷＲデータ、及び、Ｓ１００２において取得した最新アクセス先情報をアクセステーブル選択部５０３へ通知し、ＷＲアクセステーブル検索処理Ｓ１０５０を終了する（Ｓ１００４）。
【００８７】
実施例１では、アクセステーブル検索部５０１−１Ｗ、５０１−２Ｗは、入力パケット制御部３０３から受信したそれぞれのＷＲ要求をトリガとしてＷＲアクセステーブル検索処理Ｓ１０５０を開始し、各アクセステーブル検索部５０１−１Ｗ、５０１−２Ｗが備える最新アクセス保持テーブル５０２（５０２−１Ｗ、５０２−２Ｗ）から取得した最新アクセス先情報をそれぞれアクセステーブル選択部５０３へ通知する。
【００８８】
以下に、実施例１のアクセステーブル選択部５０３が実行するＲＤアクセステーブル選択処理Ｓ１１５０について説明する。
【００８９】
＜ＲＤアクセステーブル選択処理Ｓ１１５０＞
図１１は、実施例１のアクセステーブル選択部５０３が実行するＲＤアクセステーブル選択処理Ｓ１１５０を示すフローチャートである。アクセステーブル選択部５０３は、アクセステーブル検索部５０１（５０１−１Ｒ、５０１−２Ｒ）からＲＤ要求を受信した場合（Ｓ１１００）、アクセステーブル検索部５０１（５０１−１Ｒ、５０１−２Ｒ）からＲＤ要求と同時に受信するＲＤアドレス、及び、最新アクセス先情報を取得する（Ｓ１１０１）。
【００９０】
Ｓ１１０１の後、アクセステーブル選択部５０３は、Ｓ１１０１において取得したＲＤアドレスで、Ｓ１１０１において取得した最新アクセス先情報が示す演算テーブル５０４（５０４−１ａ、５０４−１ｂ、５０４−２ａ、あるいは、５０４−２ｂのいずれか）を検索し、演算結果を取得する（Ｓ１１０２）。
【００９１】
ここで、実施例１では、アクセステーブル選択部５０３は、Ｓ１１００においてアクセステーブル検索部５０１−１からＲＤ要求を取得した場合、Ｓ１１０１において取得した最新アクセス先情報が示す演算テーブルセット５０５−Ｘのａ側の演算テーブル（Ｘ−ａ）５０４−Ｘａを検索する。なお、Ｘは１又は２であり、演算テーブルセット５０５−１又は演算テーブルセット５０５−２を示す。
【００９２】
また、アクセステーブル選択部５０３は、Ｓ１１００においてアクセステーブル検索部５０１−２からＲＤ要求を取得した場合、Ｓ１１０１において取得した最新アクセス先情報が示す演算テーブルセット５０５−Ｘのｂ側の演算テーブル（Ｘ−ｂ）５０４−Ｘｂを検索する。
【００９３】
Ｓ１１０２において、アクセステーブル検索部５０１−１Ｒとアクセステーブル検索部５０１−２Ｒから同時に受信するＲＤ要求に対して、アクセステーブル選択部５０３は、別々の演算テーブル５０４を検索する。これによって、仮想的な１つの２ＲＤ／２ＷＲの演算テーブルを構成する実施例１の仮想マルチポートテーブルは、２つのＲＤ要求を同時に処理可能とする。
【００９４】
なお、実施例１において、アクセステーブル検索部５０１−１ＲのＲＤ要求と演算テーブル５０４−Ｘａ、及び、アクセステーブル検索部５０１−２ＲのＲＤ要求と演算テーブル５０４−Ｘｂを対応付けたが、この対応付けを逆にし、アクセステーブル検索部５０１−１ＲのＲＤ要求と演算テーブル５０４−Ｘｂ、及び、アクセステーブル検索部５０１−２ＲのＲＤ要求と演算テーブル５０４−Ｘａを対応付けても良い。
【００９５】
また、実施例１において、アクセステーブル検索部５０１−１Ｒとアクセステーブル検索部５０１−２Ｒから同時にＲＤ要求を受信していない（ＲＤ要求はひとつ）場合、あるいは、アクセステーブル検索部５０１−１Ｒとアクセステーブル検索部５０１−２Ｒから同時にＲＤ要求を受信したが最新アクセス先情報が示す演算テーブルセット５０５−Ｘが異なる場合は、アクセステーブル選択部５０３は、ＲＤ要求に対して、演算テーブル５０４−Ｘａ、あるいは、演算テーブル５０４−Ｘｂのどちらを検索しても良い。
【００９６】
Ｓ１１０２の後、Ｓ１１０２において取得した演算結果をＲＤ要求の送信元であるアクセステーブル検索部５０１（５０１−１Ｒ、５０１−２Ｒ）に通知し（Ｓ１１０３）、ＲＤアクセステーブル選択処理Ｓ１１５０を終了する（Ｓ１１０４）。ここで、アクセステーブル検索部５０１（５０１−１Ｒ、５０１−２Ｒ）が、Ｓ１１０３において通知された演算結果をＲＤデータとして入力パケット制御部３０３に通知することで、入力パケット制御部３０３における演算テーブル５０４へのＲＤは完了する。
【００９７】
以下に、図１２Ａ及び図１２Ｂによって、実施例１のアクセステーブル選択部５０３が実行するＷＲアクセステーブル選択処理Ｓ１２５０について説明する。
【００９８】
＜ＷＲアクセステーブル選択処理Ｓ１２５０＞
図１２Ａは、実施例１のアクセステーブル選択部５０３が実行するＷＲアクセステーブル選択処理Ｓ１２５０の詳細な処理手順例を示すフローチャート（前半）である。図１２Ａは、受信したＷＲ要求が１つであった場合の処理、及び、受信したＷＲ要求が２つであり、その２つのＷＲ要求が示す最新アクセス先情報が異なる場合の処理を示す。
【００９９】
アクセステーブル選択部５０３は、アクセステーブル検索部５０１（５０１−１Ｗ、５０１−２Ｗ）からＷＲ要求を受信した場合（Ｓ１２００）、アクセステーブル検索部５０１（５０１−１Ｗ、５０１−２Ｗ）からＷＲ要求と同時に受信するＷＲアドレス、ＷＲデータ、及び、最新アクセス先情報を取得する（Ｓ１２０１）。
【０１００】
Ｓ１２０１の後、アクセステーブル選択部５０３は、アクセスフロー管理リスト５１０の全ての管理エントリフィールド８０１の処理状況カウンタフィールド８０３の値が“０”と異なるか否かを判定する（Ｓ１２０２）。
【０１０１】
Ｓ１２０２において、アクセスフロー管理リスト５１０の全ての管理エントリの処理状況カウンタが“０”と異なると判定された場合（ステップＳ１２０２：Ｙｅｓ）、全ての管理エントリ（１〜Ｎ）は、最新アクセス保持テーブル５０２−１Ｗ及び５０２−２Ｗへの書込み処理を実行中である。新規ＷＲ要求の場合の書込み処理を受け付けることができないため、アクセステーブル選択部５０３は、図１２Ｂに示す処理に進み、ＷＲアクセステーブル選択処理Ｓ１２５０を終了する（Ｓ１２１４）。
【０１０２】
また、Ｓ１２０２において、アクセスフロー管理リスト５１０の管理エントリのうち、処理状況カウンタが“０”である管理エントリが少なくとも１つ以上ある場合（ステップＳ１２０２：Ｎｏ）、全ての管理エントリ（１〜Ｎ）のうち少なくとも１つの管理エントリは、最新アクセス保持テーブル５０２−１Ｗ及び５０２−２Ｗへの書込み処理を実行していない。新規ＷＲ要求の場合の書込み処理を受け付けることができるため、アクセステーブル選択部５０３は、Ｓ１２０３の処理に進む。
【０１０３】
なお、Ｓ１２０２において、Ｓ１２００でアクセステーブル検索部５０１−１Ｗとアクセステーブル検索部５０１−２Ｗから同時にＷＲ要求を受信した場合は、アクセステーブル選択部５０３は、管理エントリにおいて、複数エントリ（２エントリ）分の処理が可能かどうかを確認する。
【０１０４】
そして、アクセステーブル選択部５０３は、アクセスフロー管理リスト５１０の管理エントリのうち、処理状況カウンタが“０”である管理エントリがＳ１２００で受信した複数エントリ分の処理が可能である場合、Ｓ１２０３の処理に進む。アクセステーブル選択部５０３は、処理状況カウンタが“０”である管理エントリが、Ｓ１２００で受信した複数エントリ分の処理が可能でない場合、図１２Ｂに示す処理に進み、図１２Ａ及び図１２Ｂに示すＷＲアクセステーブル選択処理Ｓ１２５０を終了する。
【０１０５】
また、アクセステーブル選択部５０３は、処理状況カウンタが“０”である管理エントリが、Ｓ１２００で受信した複数エントリ分の処理が可能でない場合は、処理状況カウンタが“０”である管理エントリ分のＷＲ要求についての処理はＳ１２０３の処理に進み、残りのＷＲ要求についての処理は図１２Ｂに示す処理に進み、図１２Ａ及び図１２Ｂに示すＷＲアクセステーブル選択処理Ｓ１２５０を終了しても良い。
【０１０６】
Ｓ１２０３において、アクセステーブル選択部５０３は、Ｓ１２０１において取得したＷＲアドレスの値と処理状況カウンタが“０”と異なる管理エントリのＷＲアドレスの値と一致するか否かを判定する（Ｓ１２０３）。
【０１０７】
なお、Ｓ１２０３において、アクセステーブル選択部５０３は、Ｓ１２０１において取得したＷＲアドレスの値に対応する値が、処理状況カウンタが“０”と異なる管理エントリのＷＲアドレスの値と一致する場合、取得したＷＲアドレスの値に対応する値と処理状況カウンタが“０”と異なる管理エントリのＷＲアドレスの値とが一致していると判定してもよい。
【０１０８】
Ｓ１２０３において、Ｓ１２０１において取得したＷＲアドレスの値と処理状況カウンタフィールド８０３が“０”と異なる管理エントリのＷＲアドレスの値と一致しないと判定された場合（ステップＳ１２０３：Ｎｏ）、アクセステーブル選択部５０３は、最新アクセス保持テーブル５０２−１及び５０２−２への書込み処理を実行していないフローのＷＲ要求であるため、Ｓ１２０１において取得した最新アクセス先情報を用いて、Ｓ１２０５の処理に進む。
【０１０９】
一方、Ｓ１２０３において、Ｓ１２０１において取得したＷＲアドレスの値と処理状況カウンタが“０”と異なる管理エントリのＷＲアドレスの値と一致すると判定された場合（ステップＳ１２０３：Ｙｅｓ）、取得したＷＲアドレスは、最新アクセス保持テーブル５０２−１及び５０２−２への書込み処理を実行しているフローのＷＲ要求であることを示す。このため、アクセステーブル選択部５０３は、Ｓ１２０１において取得した最新アクセス先情報を、取得したＷＲアドレスが一致した管理エントリフィールド８０１の継続処理用最新アクセス先情報フィールド８０４で上書きして保持し（Ｓ１２０４）、Ｓ１２０５の処理に進む。
【０１１０】
そして、アクセステーブル選択部５０３は、Ｓ１２００においてＷＲ要求を２つ受信したか否かを判定する（Ｓ１２０５）。Ｓ１２０５において、Ｓ１２００においてＷＲ要求を２つ受信していないと判定された場合（ステップＳ１２０５：Ｎｏ）、アクセステーブル選択部５０３が受信したＷＲ要求は１つである。このため、アクセステーブル選択部５０３は、Ｓ１２０１において取得した最新アクセス先情報、あるいは、Ｓ１２０４において上書きした最新アクセス先情報が示す演算テーブルセット５０５−Ｘが備えるａ側及びｂ側の演算テーブル５０４（５０４−Ｘａ及び５０４−Ｘｂ）の、Ｓ１２０１において取得したＷＲアドレスが示すエントリに、取得したＷＲデータを書き込む（Ｓ１２０６）。なお、Ｘは１又は２であり、演算テーブルセット５０５−１又は演算テーブルセット５０５−２を示す。
【０１１１】
実施例１では、アクセステーブル選択部５０３が、演算テーブルセット５０５が備えるａ側及びｂ側の演算テーブル５０４（５０４−Ｘａ及び５０４−Ｘｂ）に同じＷＲデータを更新することで、演算テーブルセット５０５の情報を同期する。これにより、前述したＲＤアクセステーブル選択処理Ｓ１１５０のＳ１１０２において、演算テーブルセット５０５の演算テーブル５０４は同期されているため、ａ側及びｂ側の演算テーブル５０４のどちらのテーブルを検索しても同じ情報を取得することができる。
【０１１２】
Ｓ１２０６の後、図１２Ｂに示す処理に進み、図１２Ａ及び図１２Ｂに示すＷＲアクセステーブル選択処理Ｓ１２５０を終了する（Ｓ１２１４）。
【０１１３】
一方、Ｓ１２０５において、Ｓ１２００においてＷＲ要求を２つ受信していると判定された場合（ステップＳ１２０５：Ｙｅｓ）、アクセステーブル選択部５０３が受信したＷＲ要求は２つである。アクセステーブル選択部５０３は、アクセステーブル検索部（１）５０１−１Ｗから受信したＷＲ要求に対応する最新アクセス先情報（Ｓ１２０１において取得、あるいは、Ｓ１２０４において上書き）と、アクセステーブル検索部（２）５０１−２Ｗから受信したＷＲ要求に対応する最新アクセス先情報（Ｓ１２０１において取得、あるいは、Ｓ１２０４において上書き）が同じか否かを判定する（Ｓ１２０７）。
【０１１４】
Ｓ１２０７において、アクセステーブル検索部（１）５０１−１Ｗから受信したＷＲ要求に対応する最新アクセス先情報と、アクセステーブル検索部（２）５０１−２Ｗから受信したＷＲ要求に対応する最新アクセス先情報が同じでないと判定された場合（ステップＳ１２０７：Ｎｏ）、２つのＷＲ要求に対して更新しようとする演算テーブルセット５０５が異なることを示す。このため、アクセステーブル選択部５０３は、それぞれの最新アクセス先情報が示す演算テーブルセット５０５−Ｘが備えるａ側及びｂ側の演算テーブル５０４（５０４−Ｘａ及び５０４−Ｘｂ）の、Ｓ１２０１において取得したそれぞれのＷＲアドレスが示すエントリに、取得したそれぞれのＷＲデータを書き込む（Ｓ１２０８）。
【０１１５】
一方、Ｓ１２０７において、アクセステーブル検索部（１）５０１−１Ｗから受信したＷＲ要求に対応する最新アクセス先情報と、アクセステーブル検索部（２）５０１−２Ｗから受信したＷＲ要求に対応する最新アクセス先情報が同じと判定された場合（ステップＳ１２０７：Ｙｅｓ）、２つのＷＲ要求に対して更新しようとする演算テーブルセット５０５が同じであることを示す。アクセステーブル選択部５０３は、図１２Ｂに示すＳ１２０９の処理に進み、２つのＷＲ要求に対して更新しようとする演算テーブルセット５０５が競合しないよう選択する。
【０１１６】
図１２Ｂは、実施例１のアクセステーブル選択部５０３が実行するＷＲアクセステーブル選択処理Ｓ１２５０の詳細な処理手順例を示すフローチャート（後半）である。図１２Ｂは、実施例１のアクセステーブル選択部５０３が実行するＷＲアクセステーブル選択処理Ｓ１２５０のうち、受信したＷＲ要求が２つであり、その２つのＷＲ要求が示す最新アクセス先情報が同じ場合の処理を示す。
【０１１７】
Ｓ１２０９において、アクセステーブル選択部５０３は、アクセステーブル検索部（１）５０１−１Ｗから受信したＷＲ要求に対しては、最新アクセス先情報が示す演算テーブルセット５０５−Ｘが備えるａ側及びｂ側の演算テーブル５０４（５０４−Ｘａ及び５０４−Ｘｂ）の、Ｓ１２０１において取得したＷＲアドレスが示すエントリに、取得したＷＲデータを書き込む。
【０１１８】
一方、アクセステーブル選択部５０３は、アクセステーブル検索部（２）５０１−２Ｗから受信したＷＲ要求に対しては、最新アクセス先情報が示す演算テーブルセット５０５−Ｘと異なる、演算テーブルセット５０５−Ｙが備えるａ側及びｂ側の演算テーブル５０４（５０４−Ｙａ及び５０４−Ｙｂ）の、Ｓ１２０１において取得したＷＲアドレスが示すエントリに、取得したＷＲデータを書き込む（Ｓ１２０９）。なお、Ｙは１又は２であり、演算テーブルセット５０５−１又は演算テーブルセット５０５−２を示す。また、ＹはＸと異なる値とする。
【０１１９】
Ｓ１２０９において、アクセステーブル検索部５０１−１Ｗとアクセステーブル検索部５０１−２Ｗから同時に受信するＷＲ要求に対して、アクセステーブル選択部５０３は、別々の演算テーブルセット５０５が備える演算テーブル５０４をそれぞれ更新することで、各ＷＲ要求のＷＲデータを１つの演算テーブルセット５０５に保持することができる。これによって、仮想的な１つの２ＲＤ／２ＷＲの演算テーブルを構成する実施例１の仮想マルチポートテーブルは、２つのＷＲ要求を同時に処理可能とする。
【０１２０】
Ｓ１２０９の後、アクセステーブル選択部５０３は、アクセステーブル検索部（２）５０１−２Ｗから受信したＷＲアドレスが、処理状況カウンタが“０”と異なる管理エントリのＷＲアドレスの値と一致したか否かを判定する（Ｓ１２１０）。
【０１２１】
Ｓ１２１０において、アクセステーブル検索部（２）５０１−２Ｗから受信したＷＲアドレスが、処理状況カウンタが“０”と異なる管理エントリのＷＲアドレスの値と一致した場合（ステップＳ１２１０：Ｙｅｓ）、アクセステーブル選択部５０３は、一致した管理エントリの処理状況カウンタの値を、書込み時間を示す値に更新する。例えば、アクセステーブル選択部５０３は、書込み時間が５ｃｌｋの場合、一致した管理エントリの処理状況カウンタの値を“５”に更新する。また、アクセステーブル選択部５０３は、一致した管理エントリフィールド８０１の継続処理用最新アクセス先情報の値を、Ｓ１２０９で選択したＹの値に更新する（Ｓ１２１１）。
【０１２２】
ここで、処理状況カウンタを更新することによって、アクセステーブル選択部５０３は、各管理エントリが最新アクセス保持テーブル５０２−１及び５０２−２への書込み処理を終了するまで実行していることを示す。また、継続処理用最新アクセス先情報を更新することによって、アクセステーブル選択部５０３は、各管理エントリが最新アクセス保持テーブル５０２−１及び５０２−２への書込み処理を終了するまでに同一ＷＲアドレスのＷＲ要求が到着した場合でも、図１２Ａに示すＳ１２０４の処理において最新アクセス先情報を継続し、ＷＲアクセスを実施する演算テーブルセット５０５を選択することができる。Ｓ１２１１の後、アクセステーブル選択部５０３は、Ｓ１２１３の処理に進む。
【０１２３】
一方、Ｓ１２１０において、アクセステーブル検索部（２）５０１−２Ｗから受信したＷＲアドレスが、処理状況カウンタが“０”と異なる管理エントリのＷＲアドレスの値と一致しなかった場合（ステップＳ１２１０：Ｎｏ）、アクセステーブル選択部５０３は、処理状況カウンタの値が“０”であるアクセスフロー管理リスト５１０の管理エントリのうち、値が最も若い番号（小さい番号）のエントリを抽出する。アクセステーブル選択部５０３は、抽出された管理エントリを、ＷＲ要求に関する処理を新規に実行する内部論理回路に決定する。
【０１２４】
そして、アクセステーブル選択部５０３は、抽出された管理エントリのＷＲアドレスを、Ｓ１２０１でアクセステーブル検索部（２）５０１−２Ｗから取得したＷＲアドレスの値によって更新する。また、アクセステーブル選択部５０３は、抽出された管理エントリの処理状況カウンタを、書込み時間を示す値に更新する。また、アクセステーブル選択部５０３は、抽出された管理エントリの継続処理用最新アクセス先情報の値を、Ｓ１２０９で選択したＹの値に更新する（Ｓ１２１２）。
【０１２５】
なお、Ｓ１２１２において、アクセステーブル選択部５０３は、処理状況カウンタの値が“０”であるアクセスフロー管理リスト５１０の管理エントリのうち、値が最も若い番号のエントリを抽出したが、アクセステーブル選択部５０３は、処理状況カウンタが“０”であるアクセスフロー管理リスト５１０の管理エントリのうちのいずれかであれば、いかなる規則に従ってエントリを抽出してもよい。例えば、アクセステーブル選択部５０３は、値が最も老いた番号（大きい番号）のエントリを抽出してもよいし、管理者によってあらかじめ抽出するエントリの順番を定められていてもよい。
【０１２６】
Ｓ１２１２の後、アクセステーブル選択部５０３は、Ｓ１２１３の処理に進む。そして、Ｓ１２１３において、アクセステーブル選択部５０３は、最新アクセス保持テーブル５０２−１Ｒ、５０２−１Ｗ、５０２−２Ｒ、および５０２−２Ｗの、Ｓ１２０１でアクセステーブル検索部（２）５０１−２Ｗから取得したＷＲアドレスの値が示すエントリ（フローＩＤ）に、Ｓ１２０９で選択したＹの値を書き込む。
【０１２７】
これによって、アクセステーブル選択部５０３は、最新アクセス先情報の変更をアクセステーブル検索部５０１に通知することができる。最新アクセス先情報の変更とは、アクセステーブル検索部（２）５０１−２Ｗから受信したＷＲ要求に対して、演算テーブルセット５０５−Ｙが備える演算テーブル５０４（５０４−Ｙａ及び５０４−Ｙｂ）へＷＲデータを書き込んだことである。また、アクセステーブル検索部５０１は、後続するＲＤ要求あるいはＷＲ要求を受信した際に、ＲＤアクセステーブル検索処理Ｓ９５０及びＷＲアクセステーブル検索処理Ｓ１０５０において、その変更情報を取得して処理することができる。
【０１２８】
なお、実施例１において、アクセステーブル検索部（１）５０１−１Ｗから受信したＷＲ要求に対応する最新アクセス先情報と、アクセステーブル検索部（２）５０１−２Ｗから受信したＷＲ要求に対応する最新アクセス先情報が同じと判定された場合、（Ｓ１２０９からＳ１２１３において）アクセステーブル検索部（２）５０１−２Ｗから受信したＷＲ要求に対応する最新アクセス先情報を変更（演算テーブルセット５０５−Ｘから５０５−Ｙに変更）したが、アクセステーブル検索部（１）５０１−１Ｗから受信したＷＲ要求に対応する最新アクセス先情報を変更し、演算テーブルセット５０５が競合しないように処理しても良い。
【０１２９】
Ｓ１２１３の後、アクセステーブル選択部５０３は、図１２Ａ及び図１２Ｂに示すＷＲアクセステーブル選択処理Ｓ１２５０を終了する（Ｓ１２１４）。
【０１３０】
以下に、入力テーブル更新部３０９が実行するアクセスフロー管理処理Ｓ１３５０について説明する。
【０１３１】
＜アクセスフロー管理処理Ｓ１３５０＞
図１３は、実施例１の入力テーブル更新部３０９が実行するアクセスフロー管理処理Ｓ１３５０を示すフローチャートである。入力テーブル更新部３０９は、１クロック毎に（Ｓ１３００）、アクセスフロー管理リスト５１０の全てのエントリの処理状況カウンタフィールド８０３が０であるか否かを判定する（Ｓ１３０１）。
【０１３２】
アクセスフロー管理リスト５１０の全てのエントリの処理状況カウンタフィールド８０３が０であると、Ｓ１３０１において判定された場合（ステップＳ１３０１：Ｙｅｓ）、入力テーブル更新部３０９は、アクセスフロー管理処理Ｓ１３５０を終了する（Ｓ１３０３）。
【０１３３】
一方、アクセスフロー管理リスト５１０のエントリに処理状況カウンタフィールド８０３が０でないエントリがあるとＳ１３０１において判定された場合（ステップＳ１３０１：Ｎｏ）、入力テーブル更新部３０９は、処理状況カウンタフィールド８０３の列に含まれる０以外の値から１を減算する（Ｓ１３０２）。Ｓ１３０２の後、入力テーブル更新部３０９は、アクセスフロー管理処理Ｓ１３５０を終了する（Ｓ１３０３）。
【０１３４】
以下に、実施例のテーブル更新処理によって変化する演算結果の例を示す。
【０１３５】
＜テーブル更新処理例＞
図１４は、実施例１のテーブル更新処理を実行する際の演算結果を示す説明図である。図１４は、１ｃｌｋに２パケットが到着し、その２つパケットに関する情報が同じ演算テーブルセット５０５に格納されていた場合において、テーブル更新処理を実施した際の演算結果の変化例を示す。実施例１において、入力パケット制御部３０３が受信する２つの入力パケットを、第１のパケット（フローＩＤは＃１）及び第２のパケット（フローＩＤは＃２）と記載する。
【０１３６】
また、図１４において、最新アクセス先情報６０２−１１は、フローＩＤに“＃１”を含む最新アクセス保持テーブル５０２−１（５０２−１Ｒ、５０２−１Ｗ）のエントリの最新アクセス先情報の値である。また、最新アクセス先情報６０２−１２は、フローＩＤに“＃２”を含む最新アクセス保持テーブル５０２−１（５０２−１Ｒ、５０２−１Ｗ）のエントリの最新アクセス先情報の値である。
【０１３７】
また、最新アクセス先情報６０２−２１は、フローＩＤフィールド６０１に“＃１”を含む最新アクセス保持テーブル５０２−２（５０２−２Ｒ、５０２−２Ｗ）のエントリの最新アクセス先情報の値である。最新アクセス先情報６０２−２２は、フローＩＤに“＃２”を含む最新アクセス保持テーブル５０２−２（５０２−２Ｒ、５０２−２Ｗ）のエントリの最新アクセス先情報の値である。
【０１３８】
また、図１４において、演算結果７０２−１１１は、フローＩＤに“＃１”を含む演算テーブル５０４−１ａの演算結果の値である。また、演算結果７０２−１１２は、フローＩＤに“＃２”を含む演算テーブル５０４−１ａの演算結果の値である。また、演算結果７０２−１２１は、フローＩＤに“＃１”を含む演算テーブル５０４−１ｂの演算結果の値である。また、演算結果７０２−１２２は、フローＩＤに“＃２”を含む演算テーブル５０４−１ｂの演算結果の値である。また、演算結果７０２−２１１は、フローＩＤに“＃１”を含む演算テーブル５０４−２ａの演算結果の値である。また、演算結果７０２−２１２は、フローＩＤに“＃２”を含む演算テーブル５０４−２ａの演算結果の値である。また、演算結果７０２−２２１は、フローＩＤに“＃１”を含む演算テーブル５０４−２ｂの演算結の値である。また、演算結果７０２−２２２は、フローＩＤに“＃２”を含む演算テーブル５０４−２ｂの演算結果の値である。
【０１３９】
また、図１４において、演算結果７０２−３０１、及び、演算結果７０２−３０２は、実施例１において仮想マルチポートテーブルを演算テーブル５０４（５０４−１ａ、５０４−１ｂ、５０４−２ａ、及び、５０４−２ｂ）により構成した場合における、フローＩＤに“＃１”を含む仮想マルチポートテーブルの演算結果の値、及び、フローＩＤに“＃２”を含む仮想マルチポートテーブルの演算結果の値である。
【０１４０】
実施例１では、入力パケット制御部３０３に２つのパケットが到着すると（Ｔ１３１１）、入力パケット制御部３０３は、入力テーブル更新部３０９にＲＤ要求を送信する。ここでは、第１のパケットに関するＲＤ要求がアクセステーブル検索部５０１−１Ｒに送信され、第２のパケットに関するＲＤ要求がアクセステーブル検索部５０１−２Ｒに送信されたとする。
【０１４１】
Ｔ１３１１において、アクセステーブル検索部５０１−１Ｒ及びアクセステーブル検索部５０１−２Ｒは、それぞれＲＤアクセステーブル検索処理Ｓ９５０を実施し、検索の結果、それぞれ最新アクセス先情報０（演算テーブルセット５０５−１）を取得する。そして、アクセステーブル選択部５０３は、ＲＤアクセステーブル選択処理Ｓ１１５０を実施し、演算テーブル５０４−１ａから演算結果Ａ１、及び、演算テーブル５０４−１ｂから演算結果Ａ２を取得する。
【０１４２】
演算結果の取得後、入力パケット制御部３０３は、第１のパケット及び第２のパケットについてそれぞれ演算処理を実施し、演算結果Ａ１及びＡ２を、それぞれ演算結果Ａ１’及びＡ２’に更新する。
【０１４３】
演算結果の更新後、入力パケット制御部３０３は、入力テーブル更新部３０９にＷＲ要求を送信する。ここでは、第１のパケットに関するＷＲ要求（演算結果Ａ１’含む）がアクセステーブル検索部５０１−１Ｗに送信され、第２のパケットに関するＷＲ要求（演算結果Ａ２’含む）がアクセステーブル検索部５０１−２Ｗに送信されたとする。
【０１４４】
アクセステーブル検索部５０１−１Ｗ及びアクセステーブル検索部５０１−２Ｗは、それぞれＷＲアクセステーブル検索処理Ｓ１０５０を実施し、検索の結果、それぞれ最新アクセス先情報０（演算テーブルセット５０５−１）を取得する。そして、アクセステーブル選択部５０３は、ＷＲアクセステーブル選択処理Ｓ１２５０を実施し、演算テーブル５０４−１ａ及び演算テーブル５０４−１ｂのフローＩＤ“＃１”を含むエントリの演算結果フィールド７０２へ演算結果Ａ１’を、演算テーブル５０４−２ａ及び演算テーブル５０４−２ｂのフローＩＤ“＃２”を含むエントリの演算結果へ演算結果Ａ２’を更新する。
【０１４５】
さらに、アクセステーブル選択部５０３は、最新アクセス保持テーブル５０２−１及び最新アクセス保持テーブル５０２−２のフローＩＤに“＃２”を含むエントリの最新アクセス先情報へ“１”（演算テーブルセット５０５−２）の値を更新する。
【０１４６】
前述の処理によれば、仮想マルチポートテーブルの演算結果７０２−３０１及び演算結果７０２−３０２は、Ｔ１３１１ではそれぞれＡ１及びＡ２であったが、Ｔ１３１２では、Ａ１’及びＡ２’に更新されたように仮想的に処理することができる。
【０１４７】
前述のとおり、実施例１によれば、通信装置３は、入力テーブル更新部３０９において、複数の１ＲＤ／１ＷＲの演算テーブル５０４（５０４−１ａ、５０４−１ｂ、５０４−２ａ、及び、５０４−２ｂ）により仮想マルチポートテーブルを構成する。そして、通信装置３は、最新アクセス保持テーブル５０２（５０２−１、及び、５０２−２）によりフロー毎の最新の演算結果を保持する演算テーブルセット５０５の情報を管理する。これによって、通信装置３は、毎ｃｌｋに２パケットが到着した場合でもテーブル更新処理を実施することが可能である。
【０１４８】
従って、実施例１によれば、１ｃｌｋ内に複数のパケットが到着するような高速パケット処理において、１つのテーブルは１ｃｌｋ内にＲＤ及びＷＲがそれぞれ１個ずつ処理することしかできない場合でも、仮想的な１つのテーブルを構成して１ｃｌｋ内に複数個のＲＤ、及び、複数個のＷＲを同時に実施することで、帯域制御機能のような演算機能のテーブル更新処理を実現することができる。
【０１４９】
（実施例２）
実施例１における通信装置３は、仮想マルチポートテーブルにより、１つの仮想的な２ＲＤ／２ＷＲテーブルを構成し、毎ｃｌｋに２パケットが到着した際のテーブル更新処理を実施した。実施例２における通信装置は、さらに、仮想的な１つの３ＲＤ／３ＷＲテーブルを構成し、毎ｃｌｋに３パケットが到着した際のテーブル更新処理を実施する。実施例２では、実施例１と同様に、帯域制御機能のような演算機能に本発明を適用する。実施例におけるパケット到着間隔とテーブル更新処理タイミングの関係の概要を以下に示す。
【０１５０】
＜パケット到着間隔とテーブル更新処理タイミング例＞
図１５は、実施例２のパケット到着間隔とテーブル更新処理タイミングの概要を示す説明図である。例えば、１ｃｌｋに３パケットが到着し、実施例１の図２Ａ及び図２Ｂと同様に、テーブル更新時間が５ｃｌｋである場合、通信装置３に毎ｃｌｋに３パケットが到着すると、一つ目、二つ目、及び三つ目のパケット到着によるＷＲと、十三個目、十四個目、及び十五個目のパケット到着によるＲＤは同じタイミングとなる。この場合、テーブルは毎ｃｌｋに３個のＲＤと３個のＷＲを同時に処理（以降、３個のＲＤと３個のＷＲを同時に処理することを３ＲＤ／３ＷＲと記載）する必要があるが、通信装置が備えるテーブルは１ＲＤ／１ＷＲであり、１ｃｌｋにＲＤ及びＷＲをそれぞれ３個ずつ処理することはできない。
【０１５１】
そこで、実施例２における通信装置３は、以下で説明する仮想マルチポートＲＡＭ（仮想マルチポートテーブル）を構成し、毎ｃｌｋに３パケットが到着した際にテーブル更新処理を実施する。実施例２における仮想マルチポートテーブルは、複数の１ＲＤ／１ＷＲのテーブルから構成され、仮想的な１つの３ＲＤ／３ＷＲテーブルを実現する。以下、実施例２について図１６から図２２を用いて説明する。
【０１５２】
＜入力パケット制御部の構成例＞
図１６は、実施例２の入力パケット制御部の論理的な構成を示すブロック図である。入力パケット制御部１６００は、振分部１６０１、３つのパケット処理部４０２（４０２−１〜４０２−３）、多重部１６０３、及び、調停部１６０４を備える。実施例２におけるパケット処理部４０２は、実施例１におけるパケット処理部４０２と同じである。
【０１５３】
振分部１６０１は、入力パケット制御部１６００が入出力回線インタフェース３０１から入力パケットを受信した場合、パケット処理を実行するパケット処理部４０２を、パケット処理部４０２−１〜パケット処理部４０２−３の中から決定し、決定したパケット処理部４０２にパケットを振分ける。振分部１６０１は、パケットの振分け先の数の差を除き、実施例１における振分部４０１と同じである。
【０１５４】
調停部１６０４は、パケット処理部４０２（４０２−１〜４０２−３）から転送されるＲＤ要求やＷＲ要求を、パケット処理部４０２−１用、パケット処理部４０２−２用、パケット処理部４０２−３用でそれぞれ別に入力テーブル更新部１８０９に転送する。また、調停部１６０４は、上記と同様に、パケット処理部４０２−１用、パケット処理部４０２−２用、パケット処理部４０２−３用にそれぞれ別に入力テーブル更新部１８０９から受信したＲＤ結果をパケット処理部４０２（４０２−１〜４０２−３）に通知する。調停部１６０４は、パケット処理部４０２（４０２−１〜４０２−３）や入力テーブル更新部１８０９への転送先の数の差を除き、実施例１における調停部４０４と同じである。
【０１５５】
多重部１６０３は、各パケット処理部４０２から受信したパケットを多重し、到着順にＳＷインタフェース３０５に送信する。実施例２において、入力パケット制御部１６００がパケット処理に要する時間はあらかじめ定められる。
【０１５６】
なお、実施例２において、パケット処理部４０２の数を通信装置３が接続される回線速度（同時到着パケット数）に従って「３」としたが、実施例１と同様に、Ｎとしても良い。この際、調停部１６０４は、パケット処理部４０２から転送されるＲＤ要求やＷＲ要求をＮから３に調停して入力テーブル更新部１８０９に転送する。
【０１５７】
図１７は、図１６に示した実施例２の入力テーブル更新部１７０９の論理的な構成を示すブロック図である。入力テーブル更新部１７０９は、アクセステーブル検索部１７０１（１７０１−１〜１７０１−３）、最新アクセス保持テーブルセット１８００（１８００−１〜１８００−３）、アクセステーブル選択部１７０３、演算テーブル５０４（５０４−１ａ〜５０４−１ｃ、５０４−２ａ〜５０４−２ｃ、及び、５０４−３ａ〜５０４−３ｃ）、及び、アクセスフロー管理リスト１７１０を備える。
【０１５８】
ここで、各最新アクセス保持テーブルセット１８００−１、１８００−２、および１８００−３はそれぞれ、最新アクセス保持テーブル１８００Ａ−１〜１８００Ｃ−１、１８００Ａ−２〜１８００Ｃ−２および１８００Ａ−３〜１８００Ｃ−３を備える。また、演算テーブルセット１７０５−１は、演算テーブル５０４−１ａ〜５０４−１ｃの総称、演算テーブルセット１７０５−２は、演算テーブル５０４−２ａ〜５０４−２ｃの総称、演算テーブルセット１７０５−３は、演算テーブル５０４−３ａ〜５０４−３ｃの総称である。
【０１５９】
実施例２においては、この９つの演算テーブル５０４（５０４−１ａ〜５０４−１ｃ、５０４−２ａ〜５０４−２ｃ、及び、５０４−３ａ〜５０４−３ｃ）（１つ１つは１ＲＤ／１ＷＲのテーブル）によって仮想マルチポートテーブルを構成し、仮想的な１つの３ＲＤ／３ＷＲの演算テーブルを実現する。
【０１６０】
アクセステーブル検索部１７０１（１７０１−１〜１７０１−３）は、参照するテーブルが最新アクセス保持テーブルセット１８００であることを除き、実施例１におけるアクセステーブル検索部５０１と処理は同じである。アクセステーブル検索部１７０１（１７０１−１〜１７０１−３）は、対応する最新アクセス保持テーブルセット１８００（１８００−１、１８００−２、および１８００−３）を参照し、後述する最新アクセス先情報をアクセステーブル選択部１７０３へ通知する。
【０１６１】
なお、実施例２においても、実施例１と同様、各アクセステーブル検索部１７０１−１、１７０１−２および１７０１−３については、ＲＤ要求用とＷＲ要求用が存在するが、ここでは、便宜上、ＲＤ要求用もＷＲ要求用もまとめて、アクセステーブル検索部１７０１−１、１７０１−２および１７０１−３として説明する。
【０１６２】
同様に、最新アクセス保持テーブルセット１８００−１、１８００−２、１８００−３についても、実施例１と同様、ＲＤ要求用とＷＲ要求用が存在するが、ここでは、便宜上、ＲＤ要求用もＷＲ要求用も、まとめて、最新アクセス保持テーブルセット１８００−１、１８００−２、１８００−３として説明する。
【０１６３】
アクセステーブル選択部１７０３は、アクセステーブル検索部１７０１からＲＤ要求を受信した場合、後述するＲＤアクセステーブル選択処理Ｓ２０５０を実行し、演算テーブル５０４から情報を読み出す処理部である。また、アクセステーブル選択部１７０３は、アクセステーブル検索部１７０１からＷＲ要求を受信した場合、後述するＷＲアクセステーブル選択処理Ｓ２２５０を実行し、演算テーブル５０４に情報を書き込む処理部である。
【０１６４】
アクセステーブル選択部１７０３は、アクセステーブル検索部１７０１からＲＤ要求やＷＲ要求と同時に受信する最新アクセス先情報を用いて、データを読み出す演算テーブル５０４や、データを書き込む演算テーブル５０４を選択する。さらに、アクセステーブル選択部１７０３は、ＷＲ要求と同時に受信した最新アクセス先情報が示す演算テーブルセットから、書き込む演算テーブル５０４（演算テーブルセット１７０５）を変更した場合、その変更結果を最新アクセス保持テーブルセット１８００−１〜１８００−３の全てに書き戻す。
【０１６５】
アクセスフロー管理リスト１７１０は、アクセステーブル選択部１７０３がＷＲアクセステーブル選択処理Ｓ２２５０を実施している入力パケットのＷＲアドレスと、アクセステーブル選択部１７０３の処理状況と、継続処理用の最新アクセス先情報を示す。
【０１６６】
入力テーブル更新部１７０９は、アクセスフロー管理リスト１７１０を、論理回路３０２に備わるメモリ等に保持し、実施例１と同じアクセスフロー管理処理Ｓ１３５０において、アクセスフロー管理リスト１７１０を管理する。そして、アクセステーブル選択部１７０３は、ＷＲアクセステーブル選択処理Ｓ２１５０（図２１Ａ、図２１Ｂを参照）において、アクセスフロー管理リスト１７１０を更新する。
【０１６７】
＜最新アクセス保持テーブルセットの記憶内容例＞
図１８は、実施例２の最新アクセス保持テーブルセットを示す説明図である。最新アクセス保持テーブルセット１８００−１、１８００−２、および１８００−３を総称して、最新アクセス保持テーブルセット１８００とする。また、最新アクセス保持テーブル１８００Ａ−１、１８００Ａ−２、および１８００Ａ−３を総称して、最新アクセス保持テーブル１８００Ａとする。また、最新アクセス保持テーブル１８００Ｂ−１、１８００Ｂ−２、および１８００Ｂ−３を総称して、最新アクセス保持テーブル１８００Ｂとする。また、最新アクセス保持テーブル１８００Ｃ−１、１８００Ｃ−２、および１８００Ｃ−３を総称して、最新アクセス保持テーブル１８００Ｃとする。
【０１６８】
最新アクセス保持テーブルセット１８００は、通信装置３が受信したパケットに関して、フロー毎の最新情報を書き込んでいる演算テーブル５０４（５０４−１ａ〜５０４−１ｃ、５０４−２ａ〜５０４−２ｃ、５０４−３ａ〜５０４−３ｃ）の情報（ここでは演算テーブルセット１７０５として管理）を有するテーブルセットである。最新アクセス保持テーブルセット１８００は、最新アクセス保持テーブル１８００Ａ〜１８００Ｃで構成される。
【０１６９】
最新アクセス保持テーブル１８００Ａ〜１８００Ｃは、それぞれ、フローＩＤフィールド１８０１Ａ〜Ｃ、及び、最新アクセス先情報フィールド１８０２Ａ〜Ｃを含み、フローごとに各フィールド１８０１Ａ〜Ｃ、１８０２Ａ〜Ｃの値を記憶する。フローＩＤフィールド１８０１Ａ〜Ｃは、入力パケットのフローＩＤを含む。最新アクセス先情報フィールド１８０２Ａ〜Ｃは、パケットのフロー毎の演算結果の最新情報を保持する演算テーブルセットに関する値を含む。
【０１７０】
実施例２においては、最新アクセス先情報フィールド１８０２Ａ〜Ｃの値の組み合わせで演算テーブルセット１７０５を決定する。例えば、実施例２では、最新アクセス先情報フィールド１８０２Ａ〜Ｃの値の組み合わせ（Ａ、Ｂ、Ｃ）が、（０、０、０）、（０、０、１）、（０、１、０）、（０、１、１）、（１、０、０）、（１、０、１）、（１、１、０）、あるいは、（１、１、１）の時に、それぞれ、演算テーブルセット１７０５−１、演算テーブルセット１７０５−２、演算テーブルセット１７０５−３、演算テーブルセット１７０５−３（予備）、演算テーブルセット１７０５−１（予備）、演算テーブルセット１７０５−３、演算テーブルセット１７０５−２、あるいは、演算テーブルセット１７０５−１を示す。なお、最新アクセス保持テーブルセット１８００は、図２１ＢのＳ２１１３において更新される。
【０１７１】
＜アクセスフロー管理リスト１７１０の記憶内容例＞
図１９は、実施例２のアクセスフロー管理リスト１７１０を示す説明図である。アクセスフロー管理リスト１７１０は、管理エントリフィールド１９０１、ＷＲアドレスフィールド１９０２、処理状況カウンタフィールド１９０３、及び、継続処理用最新アクセス先情報フィールド１９０４を含み、管理エントリごとに、各フィールド１９０１〜１９０４の値を記憶する。管理エントリフィールド１９０１は、エントリ数を除き、実施例１における管理エントリフィールド８０１と同じである。ＷＲアドレスフィールド１９０２は、実施例１におけるＷＲアドレスフィールド８０２と同じである。
【０１７２】
処理状況カウンタフィールド１９０３は、実施例１における処理状況カウンタフィールド８０３と同じである。テーブルへの書込み時間（実施例１における最新アクセス保持テーブル５０２と、実施例２における最新アクセス保持テーブルセット１８００）に差がある場合は、その差を除く。
【０１７３】
継続処理用最新アクセス先情報フィールド１９０４は、継続処理するための最新アクセス先情報を記憶する。後述するＷＲアクセステーブル選択処理Ｓ２１５０において、アクセステーブル選択部１７０３が、最新アクセス保持テーブルセット１８００への書込み処理を終了するまでに同一ＷＲアドレスのＷＲ要求が到着した場合でも、継続してＷＲ要求を処理できるように保持する演算テーブルセット１７０５に関する値が格納される。
【０１７４】
以下に、実施例２のアクセステーブル選択部１７０３が実行するＲＤアクセステーブル選択処理Ｓ２０５０について説明する。
【０１７５】
＜ＲＤアクセステーブル選択処理Ｓ２０５０＞
図２０は、実施例２のアクセステーブル選択部１７０３が実行するＲＤアクセステーブル選択処理Ｓ２０５０を示すフローチャートである。アクセステーブル選択部１７０３は、アクセステーブル検索部１７０１（１７０１−１〜１７０１−３）からＲＤ要求を受信した場合（アクセステーブル検索部１７０１−１、アクセステーブル検索部１７０１−２、及び、アクセステーブル検索部１７０１−３からそれぞれのＲＤ要求を同時に受信する場合もある）（Ｓ２０００）、アクセステーブル検索部１７０１からＲＤ要求と同時に受信するＲＤアドレス、及び、最新アクセス先情報を取得する（Ｓ２００１）。
【０１７６】
Ｓ２００１の後、アクセステーブル選択部１７０３は、Ｓ２００１において取得したＲＤアドレスで、Ｓ２００１において取得した最新アクセス先情報が示す演算テーブル５０４（５０４−１ａ〜５０４−１ｃ、５０４−２ａ〜５０４−２ｃ、５０４−３ａ〜５０４−３ｃのいずれか）を検索し、演算結果を取得する（Ｓ２００２）。ここで、実施例２では、アクセステーブル選択部１７０３は、Ｓ２０００においてアクセステーブル検索部１７０１−１からＲＤ要求を取得した場合、Ｓ２００１において取得した最新アクセス先情報が示す演算テーブルセット１７０５−Ｘ（Ｘは１〜３であり、演算テーブルセット１７０５−１〜演算テーブルセット１７０５−３のいずれかを示す）のａ側の演算テーブル（Ｘ−ａ）５０４−Ｘａを検索する。
【０１７７】
また、アクセステーブル選択部１７０３は、Ｓ２０００においてアクセステーブル検索部１７０１−２からＲＤ要求を取得した場合、Ｓ２００１において取得した最新アクセス先情報が示す演算テーブルセット１７０５−Ｘのｂ側の演算テーブル（Ｘ−ｂ）５０４−Ｘｂを検索する。さらに、アクセステーブル選択部１７０３は、Ｓ２０００においてアクセステーブル検索部１７０１−３からＲＤ要求を取得した場合、Ｓ２００１において取得した最新アクセス先情報が示す演算テーブルセット１７０５−Ｘのｃ側の演算テーブル（Ｘ−ｃ）５０４−Ｘｃを検索する。
【０１７８】
Ｓ２００２において、アクセステーブル検索部１７０１−１〜アクセステーブル検索部１７０１−３から同時に受信するＲＤ要求に対して、アクセステーブル選択部１７０３は、別々の演算テーブル５０４を検索する。これによって、仮想的な１つの３ＲＤ／３ＷＲの演算テーブルを構成する実施例２の仮想マルチポートテーブルは、３つのＲＤ要求を同時に処理可能とする。
【０１７９】
なお、実施例２において、アクセステーブル検索部１７０１−１のＲＤ要求と演算テーブル５０４−Ｘａ、アクセステーブル検索部１７０１−２のＲＤ要求と演算テーブル５０４−Ｘｂ、及び、アクセステーブル検索部１７０１−３のＲＤ要求と演算テーブル５０４−Ｘｃを対応付けたが、このアクセステーブル検索部１７０１と演算テーブル５０４の対応付けは、如何なる組み合わせでも良い。
【０１８０】
また、実施例２において、アクセステーブル検索部１７０１−１〜アクセステーブル検索部１７０１−３から同時にＲＤ要求を受信していない（ＲＤ要求はひとつ）場合、あるいは、アクセステーブル検索部１７０１−１〜アクセステーブル検索部１７０１−３から同時にＲＤ要求を受信したが最新アクセス先情報が示す演算テーブルセット１７０５−Ｘが異なる場合は、アクセステーブル選択部１７０３は、ＲＤ要求に対して、演算テーブル５０４−Ｘａ、演算テーブル５０４−Ｘｂ、あるいは、演算テーブル５０４−Ｘｃのいずれを検索しても良い。
【０１８１】
Ｓ２００２の後、Ｓ２００２において取得した演算結果をＲＤ要求の送信元であるアクセステーブル検索部１７０１に通知し（Ｓ２００３）、図２０に示すＲＤアクセステーブル選択処理Ｓ２０５０を終了する（Ｓ２００４）。ここで、アクセステーブル検索部１７０１が、Ｓ２００３において通知された演算結果をＲＤデータとして入力パケット制御部１６００に通知することで、入力パケット制御部１６００における演算テーブル５０４へのＲＤは完了する。
【０１８２】
以下に、図２１Ａ及び図２１Ｂによって、実施例２のアクセステーブル選択部１７０３が実行するＷＲアクセステーブル選択処理Ｓ２１５０について説明する。
【０１８３】
＜ＷＲアクセステーブル選択処理Ｓ２１５０＞
図２１Ａは、実施例２のアクセステーブル選択部１７０３が実行するＷＲアクセステーブル選択処理Ｓ２１５０の詳細な処理手順例を示すフローチャート（前半）である。図２１Ａは、実施例２のアクセステーブル選択部１７０３が実行するＷＲアクセステーブル選択処理Ｓ２１５０のうち、受信したＷＲ要求が１つであった場合の処理、及び、受信したＷＲ要求が２つ又は３つであり、その２つ又は３つのＷＲ要求が示す最新アクセス先情報がそれぞれ異なる場合の処理を示す。
【０１８４】
アクセステーブル選択部１７０３は、アクセステーブル検索部１７０１（１７０１−１〜１７０１−３）からＷＲ要求を受信した場合（アクセステーブル検索部１７０１−１〜アクセステーブル検索部１７０１−３からそれぞれのＷＲ要求を同時に受信する場合もある）（Ｓ２１００）、アクセステーブル検索部１７０１からＷＲ要求と同時に受信するＷＲアドレス、ＷＲデータ、及び、最新アクセス先情報を取得する（Ｓ２１０１）。
【０１８５】
Ｓ２１０１の後、アクセステーブル選択部１７０３は、アクセスフロー管理リスト１７１０の全ての管理エントリの処理状況カウンタの値が“０”と異なるか否かを判定する（Ｓ２１０２）。
【０１８６】
Ｓ２１０２において、アクセスフロー管理リスト１７１０の全ての管理エントリ２００１の処理状況カウンタが“０”と異なると判定された場合（ステップＳ２１０２：Ｙｅｓ）、アクセステーブル選択部１７０３は、図２１Ｂに示す処理に進み、図２１Ａ及び図２１Ｂに示すＷＲアクセステーブル選択処理Ｓ２１５０を終了する（Ｓ２１１４）。
【０１８７】
一方、Ｓ２１０２において、アクセスフロー管理リスト１７１０の管理エントリのうち、処理状況カウンタが“０”である管理エントリが少なくとも１つ以上ある場合（ステップＳ２１０２：Ｎｏ）、アクセステーブル選択部１７０３は、Ｓ２１０３の処理に進む。
【０１８８】
なお、Ｓ２１０２において、Ｓ２１００でアクセステーブル検索部１７０１−１〜アクセステーブル検索部１７０１−３から同時にＷＲ要求を受信した場合は、アクセステーブル選択部１７０３は、管理エントリにおいて、複数エントリ（２エントリ又は３エントリ）分の処理が可能かどうかを確認する。アクセステーブル選択部１７０３は、アクセスフロー管理リスト１７１０の管理エントリのうち、処理状況カウンタが“０”である管理エントリがＳ２１００で受信した複数エントリ分の処理が可能である場合、Ｓ２１０３の処理に進む。
【０１８９】
アクセステーブル選択部１７０３は、処理状況カウンタが“０”である管理エントリが、Ｓ２１００で受信した複数エントリ分の処理が可能でない場合、図２１Ｂに示す処理に進み、図２１Ａ及び図２１Ｂに示すＷＲアクセステーブル選択処理Ｓ２１５０を終了する。また、アクセステーブル選択部１７０３は、処理状況カウンタが“０”である管理エントリが、Ｓ２１００で受信した複数エントリ分の処理が可能でない場合は、処理状況カウンタが“０”である管理エントリ分のＷＲ要求についての処理はＳ２１０３の処理に進み、残りのＷＲ要求についての処理は図２１Ｂに示す処理に進み、図２１Ａ及び図２１Ｂに示すＷＲアクセステーブル選択処理Ｓ２１５０を終了しても良い。
【０１９０】
Ｓ２１０３において、アクセステーブル選択部１７０３は、Ｓ２１０１において取得したＷＲアドレスの値と処理状況カウンタが“０”と異なる管理エントリのＷＲアドレスの値と一致するか否かを判定する（Ｓ２１０３）。Ｓ２１０３において、Ｓ２１０１において取得したＷＲアドレスの値と処理状況カウンタ２００３が“０”と異なる管理エントリ２００１のＷＲアドレスの値と一致しないと判定された場合（ステップＳ２１０３：Ｎｏ）、アクセステーブル選択部１７０３は、Ｓ２１０１において取得した最新アクセス先情報を用いて、Ｓ２１０５の処理に進む。
【０１９１】
一方、Ｓ２１０３において、Ｓ２１０１において取得したＷＲアドレスの値と処理状況カウンタ２００３が“０”と異なる管理エントリのＷＲアドレスの値と一致すると判定された場合（ステップＳ２１０３：Ｙｅｓ）、アクセステーブル選択部１７０３は、Ｓ２１０１において取得した最新アクセス先情報を、取得したＷＲアドレスが一致した管理エントリの継続処理用最新アクセス先情報２００４で上書きして保持し（Ｓ２１０４）、Ｓ２１０５の処理に進む。
【０１９２】
そして、アクセステーブル選択部１７０３は、Ｓ２１００において複数のＷＲ要求を受信したか否かを判定する（Ｓ２１０５）。Ｓ２１０５において、Ｓ２１００において複数のＷＲ要求を受信していないと判定された場合（ステップＳ２１０５：Ｎｏ）、アクセステーブル選択部１７０３が受信したＷＲ要求は１つである。このため、アクセステーブル選択部１７０３は、Ｓ２１０１において取得した最新アクセス先情報、あるいは、Ｓ２１０４において上書きした最新アクセス先情報が示す演算テーブルセット１７０５−Ｘが備えるａ側〜ｃ側の演算テーブル５０４（５０４−Ｘａ〜５０４−Ｘｃ）の、Ｓ２１０１において取得したＷＲアドレスが示すエントリに、取得したＷＲデータを書き込む（Ｓ２１０６）。なお、Ｘは１〜３であり、演算テーブルセット１７０５−１〜演算テーブルセット１７０５−３のいずれかを示す。
【０１９３】
実施例２では、アクセステーブル選択部１７０３が、演算テーブルセット１７０５が備えるａ側〜ｃ側の演算テーブル５０４（５０４−Ｘａ〜５０４−Ｘｃ）に同じＷＲデータを更新することで、演算テーブルセット１７０５の情報を同期する。これにより、前述したＲＤアクセステーブル選択処理Ｓ２０５０のＳ２００２において、演算テーブルセット１７０５内の演算テーブル５０４は同期されているため、ａ側〜ｃ側の演算テーブル５０４のいずれのテーブルを検索しても同じ情報を取得することができる。
【０１９４】
Ｓ２１０６の後、図２１Ｂに示す処理に進み、図２１Ａ及び図２１Ｂに示すＷＲアクセステーブル選択処理Ｓ２１５０を終了する（Ｓ２１１４）。
【０１９５】
一方、Ｓ２１０５において、Ｓ２１００において複数のＷＲ要求を受信していると判定された場合（ステップＳ２１０５：Ｙｅｓ）、アクセステーブル選択部１７０３が受信したＷＲ要求は２つ又は３つである。アクセステーブル選択部１７０３は、アクセステーブル検索部１７０１（１７０１−１〜１７０１−３）から受信したＷＲ要求に対応する最新アクセス先情報（Ｓ２１０１において取得、あるいは、Ｓ２１０４において上書き）のうち、同じ値のペアがあるか否かを判定する（Ｓ２１０７）。
【０１９６】
Ｓ２１０７において、同じ値のペアがないと判定された場合（ステップＳ２１０７：Ｎｏ）、受信した複数のＷＲ要求に対して更新しようとする演算テーブルセット１７０５がそれぞれ異なることを示す。このため、アクセステーブル選択部１７０３は、それぞれの最新アクセス先情報が示す演算テーブルセット１７０５−Ｘが備えるａ側〜ｃ側の演算テーブル５０４（５０４−Ｘａ〜５０４−Ｘｃ）の、Ｓ２１０１において取得したそれぞれのＷＲアドレスが示すエントリに、取得したそれぞれのＷＲデータを書き込む（Ｓ２１０８）。
【０１９７】
Ｓ２１０８の後、図２１Ｂに示す処理に進み、図２１Ａ及び図２１Ｂに示すＷＲアクセステーブル選択処理Ｓ２１５０を終了する（Ｓ２１１４）。
【０１９８】
一方、Ｓ２１０７において、同じ値のペアがあると判定された場合（ステップＳ２１０７：Ｙｅｓ）、２つ又は３つのＷＲ要求に対して更新しようとする演算テーブルセット１７０５が同じであることを示す。アクセステーブル選択部１７０３は、図２１Ｂに示すＳ２１０９の処理に進み、２つ又は３つのＷＲ要求に対して更新しようとする演算テーブルセット１７０５が競合しないよう選択する。
【０１９９】
図２１Ｂは、実施例２のアクセステーブル選択部１７０３が実行するＷＲアクセステーブル選択処理Ｓ２１５０の詳細な処理手順例を示すフローチャート（後半）である。図２１Ｂは、実施例２のアクセステーブル選択部１７０３が実行するＷＲアクセステーブル選択処理Ｓ２１５０のうち、受信したＷＲ要求が２つ又は３つであり、その２つ又は３つのＷＲ要求が示す最新アクセス先情報が同じ場合の処理を示す。
【０２００】
Ｓ２１０９において、アクセステーブル選択部１７０３は、最新アクセス先情報が同じ値のペアを構成したＷＲ要求のうち、最も若い番号のアクセステーブル検索部１７０１から受信したＷＲ要求に対しては、最新アクセス先情報が示す演算テーブルセット１７０５−Ｘが備えるａ側〜ｃ側の演算テーブル５０４（５０４−Ｘａ〜５０４−Ｘｃ）の、Ｓ２１０１において取得したＷＲアドレスが示すエントリに、取得したＷＲデータを書き込む。
【０２０１】
また、アクセステーブル選択部１７０３は、最新アクセス先情報が同じ値のペアを構成したＷＲ要求のうち、老いた番号（老番１）のアクセステーブル検索部１７０１から受信したＷＲ要求に対しては、最新アクセス先情報が示す演算テーブルセット１７０５−Ｘと異なる、演算テーブルセット１７０５−Ｙが備えるａ側〜ｃ側の演算テーブル５０４（５０４−Ｙａ〜５０４−Ｙｃ）の、Ｓ２１０１において取得したＷＲアドレスが示すエントリに、取得したＷＲデータを書き込む。なお、Ｙは１〜３であり、演算テーブルセット１７０５−１〜演算テーブルセット１７０５−３のいずれかを示す。また、ＹはＸと異なる値をとる。
【０２０２】
ここで、アクセステーブル選択部１７０３が３つのＷＲ要求を受信し、最新アクセス先情報が同じ値のペアを構成したＷＲ要求が２つであった場合、ペアを構成しなかったＷＲ要求の最新アクセス先情報の値とＹの値が競合しないように、アクセステーブル選択部１７０３は、Ｙの値を決定する。
【０２０３】
さらに、アクセステーブル選択部１７０３が３つのＷＲ要求を受信し、最新アクセス先情報が同じ値のペアを構成したＷＲ要求が３つであった場合、アクセステーブル選択部１７０３は、最新アクセス先情報が同じ値のペアを構成したＷＲ要求のうち、最も老いた番号（老番２）のアクセステーブル検索部１７０１から受信したＷＲ要求に対しては、最新アクセス先情報が示す演算テーブルセット１７０５−Ｘと異なる、演算テーブルセット１７０５−Ｚが備えるａ側〜ｃ側の演算テーブル５０４（５０４−Ｚａ〜５０４−Ｚｃ）の、Ｓ２１０１において取得したＷＲアドレスが示すエントリに、取得したＷＲデータを書き込む（Ｓ２１０９）。なお、Ｚは１〜３であり、演算テーブルセット１７０５−１〜演算テーブルセット１７０５−３のいずれかを示す。また、Ｚは、Ｘ及びＹと異なる値をとる。
【０２０４】
Ｓ２１０９において、アクセステーブル検索部１７０１−１〜アクセステーブル検索部１７０１−３から同時に受信するＷＲ要求に対して、アクセステーブル選択部１７０３は、別々の演算テーブルセット１７０５が備える演算テーブル５０４をそれぞれ更新することで、各ＷＲ要求のＷＲデータを１つの演算テーブルセット１７０５に保持することができる。これによって、仮想的な１つの３ＲＤ／３ＷＲの演算テーブルを構成する実施例２の仮想マルチポートテーブルは、３つのＷＲ要求を同時に処理可能とする。
【０２０５】
Ｓ２１０９の後、アクセステーブル選択部１７０３は、老番１あるいは老番２のアクセステーブル検索部１７０１から受信したＷＲアドレスが、処理状況カウンタが“０”と異なる管理エントリのＷＲアドレスの値と一致したか否かを判定する（Ｓ２１１０）。
【０２０６】
Ｓ２１１０において、一致したと判定された場合（ステップＳ２１１０：Ｙｅｓ）、アクセステーブル選択部１７０３は、一致した管理エントリの処理状況カウンタの値を、書込み時間を示す値に更新する。また、アクセステーブル選択部１７０３は、一致した管理エントリの継続処理用最新アクセス先情報の値を、Ｓ２１０９で選択したＹあるいはＺの値にそれぞれ更新する（Ｓ２１１１）。Ｓ２１１１の後、アクセステーブル選択部１７０３は、Ｓ２１１３の処理に進む。
【０２０７】
一方、Ｓ２１１０において、一致しなかったと判定された場合（ステップＳ２１１０：Ｎｏ）、アクセステーブル選択部１７０３は、処理状況カウンタの値が“０”であるアクセスフロー管理リスト１７１０の管理エントリのうち、値が最も若い番号（小さい番号）のエントリを抽出する。アクセステーブル選択部１７０３は、抽出された管理エントリを、ＷＲ要求に関する処理を新規に実行する内部論理回路に決定する。
【０２０８】
そして、アクセステーブル選択部１７０３は、抽出された管理エントリのＷＲアドレスを、Ｓ２１０１でアクセステーブル検索部１７０１から取得したＷＲアドレスの値によって更新する。また、アクセステーブル選択部１７０３は、抽出された管理エントリの処理状況カウンタを、書込み時間を示す値に更新する。また、アクセステーブル選択部１７０３は、抽出された管理エントリの継続処理用最新アクセス先情報の値を、Ｓ２１０９で選択したＹあるいはＺの値にそれぞれ更新する（Ｓ２１１２）。
【０２０９】
Ｓ２１１２の後、アクセステーブル選択部１７０３は、Ｓ２１１３の処理に進む。そして、Ｓ２１１３において、アクセステーブル選択部１７０３は、最新アクセス保持テーブルセット１８００−１〜１８００−３の、Ｓ２１０１で老番１のアクセステーブル検索部１７０１から取得したＷＲアドレスの値が示すエントリ（フローＩＤ）に、Ｓ２１０９で選択したＹの値を書き込む。
【０２１０】
また、最新アクセス先情報が同じ値のペアを構成したＷＲ要求が３つであった場合は、最新アクセス保持テーブルセット１８００−１〜１８００−３の、Ｓ２１０１で老番２のアクセステーブル検索部１７０１から取得したＷＲアドレスの値が示すエントリ（フローＩＤ）に、Ｓ２１０９で選択したＺの値を書き込む。
【０２１１】
これによって、アクセステーブル選択部１７０３は、最新アクセス先情報の変更をアクセステーブル検索部１７０１（１７０１−１〜１７０１−３）に通知し、アクセステーブル検索部１７０１は、後続するＲＤ要求あるいはＷＲ要求を受信した際に、その変更情報を取得して処理することができる。
【０２１２】
Ｓ２１１３の後、アクセステーブル選択部１７０３は、図２１Ａ及び図２１Ｂに示すＷＲアクセステーブル選択処理Ｓ２１５０を終了する（Ｓ２１１４）。ここで、アクセステーブル選択部１７０３が実行するＷＲアクセステーブル選択処理Ｓ２１５０における最新アクセス先情報の変更処理（Ｓ２１１３）について説明する。
【０２１３】
図２１ＢのＳ２１１３の処理では、最新アクセス保持テーブルセット１８００−１〜１８００−３の２つのエントリの値を更新する場合がある。最新アクセス保持テーブルセット１８００は、図１８に示したとおり、最新アクセス保持テーブル１８００Ａ〜１８００Ｃで構成されるが、最新アクセス保持テーブル１８００Ａ〜１８００Ｃのそれぞれのテーブルは、１ＲＤ／１ＷＲのテーブルである。このため、実施例２では、１つのエントリの値の更新について、最新アクセス保持テーブル１８００Ａ〜１８００Ｃのいずれか１つのテーブルを更新する。
【０２１４】
＜ＷＲアクセステーブル選択処理Ｓ２１５０における最新アクセス先情報の変更処理例＞
図２２は、実施例２のアクセステーブル選択部１７０３が実行するＷＲアクセステーブル選択処理Ｓ２１５０における最新アクセス先情報の変更処理例を示す説明図である。図２２は、到着したパケットのフローの最新アクセス先情報が示すテーブルセットが全て１であった場合から、各フローの最新アクセス先情報を更新する例を示す。
【０２１５】
具体的には、図２２は、フローＩＤ＃１、フローＩＤ＃２、及び、フローＩＤ＃３の最新アクセス先情報１９０２Ａ〜Ｃの組み合わせ（Ａ、Ｂ、Ｃ）が、（０、０、０）（演算テーブルセット１）であった場合から、フローＩＤ＃１とフローＩＤ＃２の２つのパケットが同時に到着した場合の最新アクセス先情報の更新例、及び、フローＩＤ＃１〜フローＩＤ＃３との３つのパケットが同時に到着した場合の最新アクセス先情報の更新例を示す。
【０２１６】
フローＩＤ＃１とフローＩＤ＃２の２つのパケットが同時に到着した場合、例えば、アクセステーブル選択部１７０３は、最新アクセス保持テーブル１８００ＣのフローＩＤ＃２のエントリに保持する最新アクセス先情報の値を０から１に変更し、最新アクセス先情報１９０２Ａ〜Ｃの組み合わせ（Ａ、Ｂ、Ｃ）を（０、０、１）とする（演算テーブルセット２）。さらに、フローＩＤ＃１とフローＩＤ＃２とフローＩＤ＃３の３つのパケットが同時に到着した場合、例えば、アクセステーブル選択部１７０３は、最新アクセス保持テーブル１８００ＢのフローＩＤ＃３のエントリに保持する最新アクセス先情報の値を０から１に変更し、最新アクセス先情報１９０２Ａ〜Ｃの組み合わせ（Ａ、Ｂ、Ｃ）を（０、１、０）とする（演算テーブルセット３）。
【０２１７】
実施例２では、上記のように、１つのエントリの最新アクセス先情報の更新について、最新アクセス保持テーブル１８００Ａ〜１８００Ｃのいずれか１つのテーブルを更新することにより、複数パケットに対する最新アクセス先情報の変更を実現する。
【０２１８】
前述のとおり、実施例２によれば、通信装置３は、入力テーブル更新部１７０９において、複数の１ＲＤ／１ＷＲの演算テーブル５０４（５０４−１ａ〜５０４−１ｃ、５０４−２ａ〜５０４−２ｃ、５０４−３ａ〜５０４−３ｃ）により仮想マルチポートテーブルを構成し、最新アクセス保持テーブルセット１８００（１８００−１〜１８００−３）によりフロー毎の最新の演算結果を保持する演算テーブルセット１７０５の情報を管理する。これによって、実施例２の通信装置３は、毎ｃｌｋに３パケットが到着した場合でもテーブル更新処理を実施することが可能である。
【０２１９】
さらに、実施例２においては、毎ｃｌｋに３パケットが到着した場合を示したが、入力テーブル更新部１７０９において、演算テーブルセット１７０５の数を例えばＫ個（Ｋは任意の自然数）とし、（Ｋ−１）個の最新アクセス先情報の変更に対応する最新アクセス保持テーブルセット１８００を構成することで、通信装置３は、毎ｃｌｋにＫパケットが到着した場合でもテーブル更新処理を実施することも可能である。
【０２２０】
従って、実施例２によれば、実施例１と同様に、１ｃｌｋ内に複数のパケットが到着するような高速パケット処理において、１つのテーブルは１ｃｌｋ内にＲＤ及びＷＲがそれぞれ１個ずつ処理することしかできない場合でも、仮想的な１つのテーブルを構成して１ｃｌｋ内に複数個のＲＤ、及び、複数個のＷＲを同時に実施することで、帯域制御機能のような演算機能のテーブル更新処理を実現することができる。
【０２２１】
（実施例３）
実施例１における通信装置３は、仮想マルチポートテーブルにより、１つの仮想的な２ＲＤ／２ＷＲテーブルを構成し、毎ｃｌｋに２パケットが到着した際のテーブル更新処理を実施した。実施例１では、帯域制御機能のような演算機能に本発明を適用したが、実施例３では、統計カウント機能のような演算機能に仮想マルチポートテーブルを適用する。
【０２２２】
実施例３では、統計カウント機能の統計情報として、受信パケット数、及び、受信バイト数をカウントする。統計カウント機能では、到着パケットによるテーブル更新処理に加え、ＮＩＦ管理部３０８（ＣＰＵ）が統計情報を取得するためのＲＤがある。実施例３における通信装置は、仮想的な１つの３ＲＤ／２ＷＲテーブルを構成し、毎ｃｌｋに２パケットが到着した際のテーブル更新処理を実施する。
【０２２３】
実施例３におけるパケット到着間隔とテーブル更新処理タイミングの関係の概要を以下に示す。
【０２２４】
＜パケット到着間隔とテーブル更新処理タイミング例＞
図２３は、実施例３のパケット到着間隔とテーブル更新処理タイミングの概要を示す説明図である。例えば、１ｃｌｋに２パケットが到着し、図１Ａ、図１Ｂ、図１５と同様にテーブル更新時間が５ｃｌｋである場合、通信装置に毎ｃｌｋに２パケットが到着すると、一つ目及び二つ目のパケット到着によるＷＲと、九つ目及び十個目のパケット到着によるＲＤは同じタイミングとなる。
【０２２５】
さらに、このタイミングにＣＰＵからの統計情報のＲＤがある場合、テーブルは１ｃｌｋに３個のＲＤと２個のＷＲを同時に処理（以降、３個のＲＤと２個のＷＲを同時に処理することを３ＲＤ／２ＷＲと記載）する必要があるが、通信装置が備えるテーブルは１ＲＤ／１ＷＲであり、１ｃｌｋに３個のＲＤと２個のＷＲを同時に処理することはできない。
【０２２６】
そこで、実施例３における通信装置は、以下で説明する仮想マルチポートＲＡＭ（仮想マルチポートテーブル）を構成し、毎ｃｌｋに２パケットが到着、かつ、ＣＰＵからの統計情報のＲＤがあった際にテーブル更新処理を実施する。実施例３における仮想マルチポートテーブルは、複数の１ＲＤ／１ＷＲのテーブルから構成され、仮想的な１つの３ＲＤ／２ＷＲテーブルを実現する。
【０２２７】
実施例３において、入力パケット制御部は、実施例１及び実施例２における演算処理の代わりにカウント処理を実施して情報を更新する点が異なるのみである。また、実施例３において、ＣＰＵに統計情報を通知するため、通信装置の入力テーブル更新部は、統計合算部を備える。一方、統計カウント機能は、パケット到着毎に受信パケット数、及び、受信バイト数をカウントし、ＣＰＵに通知する際に合算していれば良いのみであるため、入力テーブル更新部は、実施例１及び実施例２のように、アクセステーブル検索部５０１、最新アクセス保持テーブル５０２、アクセステーブル選択部５０３、及び、アクセスフロー管理リスト５１０を備えない。以下、実施例３について図２４から図２６を用いて説明する。
【０２２８】
＜入力テーブル更新部の構成例＞
図２４は、実施例３の入力テーブル更新部２４０９の論理的な構成を示すブロック図である。入力テーブル更新部２４０９は、統計合算部２４０１、及び、統計テーブル２４０４（２４０４−１ａ、２４０４−１ｂ、２４０４−２ａ、及び、２４０４−２ｂ）を備える。ここで、統計テーブルセット２４０５−１は、統計テーブル２４０４−１ａ及び２４０４−１ｂの総称であり、統計テーブルセット２４０５−２は、統計テーブル２４０４−２ａ及び２４０４−２ｂの総称である。
【０２２９】
実施例３においては、この４つの統計テーブル２４０４（２４０４−１ａ、２４０４−１ｂ、２４０４−２ａ、及び、２４０４−２ｂ）（１つ１つは１ＲＤ／１ＷＲのテーブル）によって仮想マルチポートテーブルを構成し、仮想的な１つの３ＲＤ／２ＷＲの統計テーブルを実現する。
【０２３０】
実施例３において、入力テーブル更新部２４０９は、入力パケット制御部３０３から受信する２つのＲＤ要求、あるいは、２つのＷＲ要求に対して、それぞれ統計テーブルセット２４０５（２４０５−１、あるいは、２４０５−２）を備える。入力テーブル更新部２４０９は、入力パケット制御部３０３からＲＤ要求を受信すると、その受信したＲＤ要求に対応する統計テーブルセット２４０５−Ｘの統計テーブル２４０４−Ｘａを参照し、統計情報を取得する。なお、Ｘは１又は２であり、統計テーブルセット２４０５−１又は統計テーブルセット２４０５−２を示す。
【０２３１】
また、入力テーブル更新部２４０９は、入力パケット制御部３０３からＷＲ要求を受信すると、その受信したＷＲ要求に対応する統計テーブルセット２４０５−Ｘの統計テーブル２４０４−Ｘａ及び統計テーブル２４０４−ＸｂへＷＲデータを書き込み、統計情報を更新する。これにより、統計テーブルセット２４０５が備える統計テーブル２４０４の情報は同期される。
【０２３２】
また、実施例３において、入力テーブル更新部２４０９は設定レジスタ２４０７に接続され、ＮＩＦ管理部３０８がこの設定レジスタ２４０７を制御することで、統計情報を取得する。統計合算部２４０１は、設定レジスタ２４０７からＲＤ要求を受信した場合、後述する統計通知処理Ｓ２４５０を実行する処理部である。統計合算部２４０１は、統計テーブル２４０４を参照し、統計情報を設定レジスタ２４０７へ通知する。
【０２３３】
これにより、入力パケット制御部３０３からの２つのＲＤ要求と、設定レジスタ２４０７からの１つのＲＤ要求と、入力パケット制御部３０３からの２つのＷＲ要求と、が同一クロックで入力されても、それぞれのＲＤ、ＷＲを処理（２ＲＤ／２ＷＲ）することができる。
【０２３４】
＜統計テーブルの記憶内容例＞
図２５は、実施例３の統計テーブル２４０４を示す説明図である。統計テーブル２４０４は、通信装置３が受信したパケットについての情報を有するテーブルである。統計テーブル２４０４は、フローＩＤフィールド２５０１、受信パケット数フィールド２５０２、及び、受信バイト数フィールド２５０３を含み、フローごとに各フィールド２５０１〜２５０３の値を記憶する。
【０２３５】
フローＩＤフィールド２５０１は、入力パケットのフローＩＤを含む。受信パケット数フィールド２５０２は、入力パケット制御部３０３が受信した入力パケットの数を含む。受信バイト数フィールド２５０３は、入力パケット制御部３０３が受信した入力パケットのバイト数の合計値を示す。なお、具体的には、受信パケット数フィールド２５０２及び受信バイト数フィールド２５０３は、各統計テーブルセット２４０５にテーブル更新の要求があったパケット分のみの情報を有する。各統計テーブルセット２４０５における、同じフローＩＤのエントリの受信パケット数、及び、受信バイト数をそれぞれ合算することで、入力パケット制御部３０３が受信した全ての入力パケットの数、及び、入力パケットのバイト数の合計値を示す。
【０２３６】
なお、統計テーブルセット２４０５−１と統計テーブルセット２４０５−２では、扱うフローが異なる。また、同一の統計テーブルセット内の各テーブルは、書き込み処理により同期されるため、同一フローの同一情報が格納される。具体的には、たとえば、統計テーブル２４０４−１ａと統計テーブル２４０４−１ｂとは、同一の情報を記憶し、統計テーブル２４０４−２ａと統計テーブル２４０４−２ｂとは、同一の情報を記憶する。
【０２３７】
以下に、統計合算部２４０１が実行する統計通知処理Ｓ２６５０について説明する。
【０２３８】
＜統計通知処理Ｓ２６５０＞
図２６は、実施例３の統計合算部２４０１が実行する統計通知処理Ｓ２６５０を示すフローチャートである。統計合算部２４０１は、設定レジスタ２４０７からＲＤ要求を受信した場合（Ｓ２６００）、設定レジスタ２４０７からＲＤ要求と同時に受信するＲＤアドレスを取得する（Ｓ２６０１）。
【０２３９】
Ｓ２６０１の後、統計合算部２４０１は、Ｓ２６０１において取得したＲＤアドレスに対応するフローＩＤで、統計テーブル２４０４−１ｂ及び統計テーブル２４０４−２ｂを検索し、それぞれの受信パケット数及び受信バイト数を取得する（Ｓ２６０２）。Ｓ２６０２の後、統計合算部２４０１は、Ｓ２６０２において取得した２つの受信パケット数及び受信バイト数をそれぞれ合算し、設定レジスタ２４０７に通知する（Ｓ２６０３）。Ｓ２６０３の後、統計合算部２４０１は、図２６に示す統計通知処理Ｓ２６５０を終了する（Ｓ２６０４）。
【０２４０】
前述のとおり、実施例３によれば、通信装置３は、入力テーブル更新部２４０９において、複数の１ＲＤ／１ＷＲの統計テーブル２４０４（２４０４−１ａ、２４０４−１ｂ、２４０４−２ａ、及び、２４０４−２ｂ）により仮想マルチポートテーブルを構成する。これによって、実施例３の通信装置３は、毎ｃｌｋに２パケットが到着し、かつ、ＣＰＵからの統計情報のＲＤがあった場合でもテーブル更新処理を実施することが可能である。
【０２４１】
さらに、実施例３においては、毎ｃｌｋに２パケットが到着し、かつ、ＣＰＵからの統計情報のＲＤがあった場合を示したが、入力テーブル更新部２４０９において、統計テーブルセット２４０５の数を例えばＫ個（Ｋは任意の自然数）とし、統計合算部２４０１がＫ個の統計テーブルから情報を取得して合算する場合、通信装置３は、毎ｃｌｋにＫパケットが到着し、かつ、ＣＰＵからの統計情報のＲＤがあった場合でもテーブル更新処理を実施することも可能である。
【０２４２】
従って、実施例３によれば、１ｃｌｋ内に複数のパケットが到着するような高速パケット処理において、１つのテーブルは１ｃｌｋ内にＲＤ及びＷＲがそれぞれ１個ずつ処理することしかできない場合でも、仮想的な１つのテーブルを構成して１ｃｌｋ内に複数個のＲＤ、及び、複数個のＷＲを同時に実施することで、統計カウント機能のような演算機能のテーブル更新処理を実現することができる。
【０２４３】
なお、実施例１及び実施例２の通信装置は、帯域制御のような演算機能に仮想マルチポートテーブルを、実施例３の通信装置は、統計カウント機能の演算機能に仮想マルチポートテーブルをそれぞれ適用したが、上記２つの機能を１つの通信装置に備えて仮想マルチポートテーブルを適用しても良い。例えば１ｃｌｋに２パケットが到着する時は、実施例１と実施例３を組み合わせ、通信装置３は、帯域制御機能用の入力パケット制御部３０３及び入力テーブル更新部３０９、及び、統計カウント機能用の入力パケット制御部３０３及び入力テーブル更新部２４０９をそれぞれ備えても良い。
【０２４４】
また、通信装置３は、パケット処理部４０２に帯域制御機能及び統計カウント機能の処理をさせることで入力パケット制御部３０３を共用し、帯域制御機能用の入力テーブル更新部３０９、及び、統計カウント機能用の入力テーブル更新部２４０９をそれぞれ備えても良い。
【０２４５】
また、実施例３では、統計カウント機能の演算機能における本発明の一実施形態を示したが、実施例１及び実施例２に示すテーブル更新処理を用いて統計カウント機能を実施しても良い。例えば１ｃｌｋに２パケットが到着する時は、通信装置３は、実施例１に示した２つの演算テーブルセット５０５（５０５−１及び５０５−２）をそれぞれ３つの演算テーブル５０４から構成し、ＣＰＵからの統計情報のＲＤとパケット到着による２つのＲＤ（合計３つのＲＤ）が競合しないように各演算テーブルセット５０５の演算テーブル５０４にアクセスしても良い。
【０２４６】
以上説明したように、本実施例によれば、１ｃｌｋ内に複数のパケットが到着するような高速パケット処理において、１つのテーブルは１ｃｌｋ内にＲＤ及びＷＲがそれぞれ１個ずつ処理することしかできない場合でも、仮想マルチポートテーブルを構成して１ｃｌｋ内に複数個のＲＤ、及び、複数個のＷＲを同時に実施する。これにより、帯域制御機能や統計カウント機能のテーブル更新処理を実現することができる。
【０２４７】
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加・削除・置換をしてもよい。
【０２４８】
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【０２４９】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Solid State Drive）等の記憶装置、又は、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に格納することができる。
【０２５０】
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
【０２５１】
特許請求の範囲に記載した以外の本発明の観点の代表的なものとして、次のものがあげられる。
【０２５２】
（付記１）ネットワークに接続される通信装置であって、
前記ネットワークからの１つの読出し要求と１つの書き込み要求を同一クロックで処理可能でありフローごとの情報を同期させて保持するテーブルを複数有するテーブルセットが、複数組存在するテーブルセット群と、
前記ネットワークから同時に受信された複数の読出し要求について、前記各読出し要求に対応するテーブルセット内のいずれかのテーブルにアクセスして読出し処理を実行するとともに、前記複数の読出し要求と同時に受信された複数の書き込み要求があった場合、前記各書き込み要求に対応するテーブルセット内のすべてのテーブルにアクセスして書き込み処理を実行する更新部と、
前記複数の読出し要求と同時に受信された特定の処理に関する読出し要求があった場合、前記各テーブルセットにおいて、前記いずれかのテーブルとは異なる特定のテーブルに読出し処理を実行する実行部と、
を有することを特徴とする通信装置。
【０２５３】
（付記２）前記テーブルセットの各テーブルには、前記書き込み要求により前記ネットワークから受信したパケットに関する演算結果が書き込まれており、
前記実行部は、前記各特定のテーブルから読み出された演算結果を合算する統計合算部であることを特徴とする付記１に記載の通信装置。
【符号の説明】
【０２５４】
１  仮想マルチポートテーブル
１０，２０  演算テーブルセット
１１，１２，２１，２２  演算テーブル
３  通信装置
３０３  入力パケット制御部
３０９  入力テーブル更新部
５０１  アクセステーブル検索部
５０２  最新アクセス保持テーブル
５０３  アクセステーブル選択部
５０４  演算テーブル
５０５演算テーブルセット
５１０  アクセスフロー管理リスト
１６００  入力パケット制御部
１７０１  アクセステーブル検索部
１７０３  アクセステーブル選択部
１７０５  演算テーブルセット
１７０９  入力テーブル更新部
１７１０  アクセスフロー管理リスト
１８００  最新アクセス保持テーブルセット
１８００Ａ〜１８００Ｃ  最新アクセス保持テーブル
２４０１  統計合算部
２４０４  統計テーブル
２４０５  統計テーブルセット
２４０９  入力テーブル更新部
【図１Ａ】
2015104045.tif 000003
【図１Ｂ】
2015104045.tif 000004
【図２Ａ】
2015104045.tif 000005
【図２Ｂ】
2015104045.tif 000006
【図３】
2015104045.tif 000007
【図４】
2015104045.tif 000008
【図５】
2015104045.tif 000009
【図６】
2015104045.tif 000010
【図７】
2015104045.tif 000011
【図８】
2015104045.tif 000012
【図９】
2015104045.tif 000013
【図１０】
2015104045.tif 000014
【図１１】
2015104045.tif 000015
【図１２Ａ】
2015104045.tif 000016
【図１２Ｂ】
2015104045.tif 000017
【図１３】
2015104045.tif 000018
【図１４】
2015104045.tif 000019
【図１５】
2015104045.tif 000020
【図１６】
2015104045.tif 000021
【図１７】
2015104045.tif 000022
【図１８】
2015104045.tif 000023
【図１９】
2015104045.tif 000024
【図２０】
2015104045.tif 000025
【図２１Ａ】
2015104045.tif 000026
【図２１Ｂ】
2015104045.tif 000027
【図２２】
2015104045.tif 000028
【図２３】
2015104045.tif 000029
【図２４】
2015104045.tif 000030
【図２５】
2015104045.tif 000031
【図２６】
2015104045.tif 000032
【図２７】
2015104045.tif 000033