(57)【要約】【課題】複数のプロセッサコアで分散して転送テーブルを検索する場合において、プロセッサコアの処理効率を向上することができる。【解決手段】本発明に係るスイッチ装置９は、通信データから抽出される検索キーと、当該検索キーが抽出される通信データの転送先とを示す複数のレコードを含む転送テーブルが記憶される転送テーブル記憶部９１と、転送テーブルに含まれる複数のレコードのうち、自身に割り当てられたレコードを、通信データから抽出した検索キーで検索をすることで、当該通信データの転送先を決定する複数のプロセッサコア９３と、転送テーブルに含まれるレコードの数と、プロセッサコアの数とに基づいて、転送テーブルを分割して複数のプロセッサコア９３のそれぞれにレコードを平均的に割り当てる転送テーブル細分化部９２を備える。【選択図】図１０
2015171089.tif 000002
【特許請求の範囲】
【請求項１】
外部から受信した通信データの転送先を決定し、決定した転送先に前記通信データを転送するスイッチ装置であって、
前記通信データから抽出される検索キーと、当該検索キーが抽出される通信データの転送先とを示す複数のレコードを含む転送テーブルが記憶される転送テーブル記憶部と、
前記転送テーブルに含まれる複数のレコードのうち、自身に割り当てられたレコードを、前記通信データから抽出した検索キーで検索をすることで、当該通信データの転送先を決定する複数のプロセッサコアと、
前記転送テーブルに含まれるレコードの数と、前記プロセッサコアの数とに基づいて、前記転送テーブルを分割して前記複数のプロセッサコアのそれぞれに前記レコードを平均的に割り当てる転送テーブル細分化部と、
を備えたスイッチ装置。
【請求項２】
前記スイッチ装置は、複数の入力ポートのそれぞれを介して前記通信データを受信するものであって、
前記レコードは、さらに、前記入力ポートを示すとともに、前記転送先として、当該入力ポートを介して受信される通信データの転送先を示し、
前記スイッチ装置は、さらに、前記転送テーブルを、前記レコードが示す入力ポートが同一となるレコード群に分割する転送レコード分割部を備え、
前記転送テーブル細分化部は、前記レコード群のそれぞれをさらに分割することで、同一のプロセッサコアに割り当てられるレコードが同一の入力ポートを示すように、前記複数のプロセッサコアのそれぞれに前記レコードを割り当て、
前記複数のプロセッサコアのそれぞれは、自身に割り当てられたレコードが示す入力ポートを介して受信した通信データの転送先を決定する、
請求項１に記載のスイッチ装置。
【請求項３】
前記複数のレコードは、さらに、優先度を示し、
前記スイッチ装置は、さらに、同一の通信データの転送先が２つ以上のプロセッサコアによって決定された場合、当該２つ以上の転送先のうち、最も高い優先度を示すレコードにおける転送先を、当該通信データの転送先として決定する優先度判定部を備えた、
請求項１又は２に記載のスイッチ装置。
【請求項４】
前記プロセッサコアは、自身に割り当てられたレコードから前記通信データの転送先として複数の転送先を検出した場合、当該複数の転送先のうち、最も高い優先度を示すレコードにおける転送先を、当該通信データの転送先として決定する、
請求項３に記載のスイッチ装置。
【請求項５】
前記スイッチ装置は、さらに、同一の通信データの転送先が２つ以上のプロセッサコアによって決定された場合、当該２つ以上の転送先から、所定のルールに従って１つの転送先を選定し、当該通信データの転送先として決定する検索結果調整部を備えた、
請求項１又は２に記載のスイッチ装置。
【請求項６】
前記スイッチ装置は、さらに、
前記複数のプロセッサコアを有するＳＩＭＤ型アクセラレータデバイスと、
前記通信データを受信した場合に、前記ＳＩＭＤ型アクセラレータデバイスに当該通信データの転送先の決定を指示し、当該指示に応じて当該ＳＩＭＤ型アクセラレータデバイスによって決定された転送先への当該通信データを転送するＣＰＵと、
を備えた請求項１に記載のスイッチ装置。
【請求項７】
前記スイッチ装置は、さらに、
前記転送テーブルにおけるレコードの更新を指示する転送テーブル制御情報を外部から受信し、受信した転送テーブル制御情報に基づいて、前記転送テーブル記憶部に記憶された転送テーブルを更新する転送テーブル制御情報受信処理部を備える、
請求項１乃至６のいずれか１項に記載のスイッチ装置。
【請求項８】
受信した通信データの転送先を決定し、決定した転送先に前記通信データを転送するデータ転送制御方法であって、
前記通信データから抽出される検索キーと、当該検索キーが抽出される通信データの転送先とを示す複数のレコードを含む転送テーブルを転送テーブル記憶部に記憶する記憶ステップと、
前記転送テーブルに含まれる複数のレコードを、複数のプロセッサコアに割り当てる割当ステップと、
前記複数のプロセッサコアが、前記転送テーブルに含まれる複数のレコードのうち、自身に割り当てられたレコードを、前記通信データから抽出した検索キーで検索をすることで、当該通信データの転送先を決定する検索ステップと、を備え、
前記割当ステップでは、前記転送テーブルに含まれるレコードの数と、前記プロセッサコアの数とに基づいて、前記転送テーブルを分割して前記複数のプロセッサコアのそれぞれに前記レコードを平均的に割り当てる、
データ転送制御方法。
【請求項９】
受信した通信データの転送先を決定し、決定した転送先に前記通信データを転送するためのデータ転送制御プログラムであって、
前記通信データから抽出される検索キーと、当該検索キーが抽出される通信データの転送先とを示す複数のレコードを含む転送テーブルを転送テーブル記憶部に記憶する記憶処理と、
前記転送テーブルに含まれる複数のレコードを、複数のプロセッサコアに割り当てる割当処理と、
前記複数のプロセッサコアが、前記転送テーブルに含まれる複数のレコードのうち、自身に割り当てられたレコードを、前記通信データから抽出した検索キーで検索をすることで、当該通信データの転送先を決定する検索処理と、をコンピュータに実行させ、
前記割当処理では、前記転送テーブルに含まれるレコードの数と、前記プロセッサコアの数とに基づいて、前記転送テーブルを分割して前記複数のプロセッサコアのそれぞれに前記レコードを平均的に割り当てる、
データ転送制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スイッチ装置、データ転送制御方法、及びデータ転送制御プログラムに関し、特に、転送テーブルを検索することで通信データの転送先を決定する技術に関する。
【背景技術】
【０００２】
特許文献１には、ネットワーク帯域に見合った高速な検索性能を有するパターンマッチング処理を実現することを目的とした装置が開示されている。この装置は、マルチコアＣＰＵにおいて、複数のプロセッサコアで共有される共有メモリにフローテーブルを保持している。この装置では、パケットが到着すると、ヘッダ情報を抽出し、その検索をマルチコアＣＰＵ内の特定のプロセッサコアに割り当てる。プロセッサコアは、パケットから抽出されたヘッダ情報（検索キー）からハッシュ値を計算し、そのハッシュ値によってフローテーブルからエントリを検索する。
【０００３】
また、特許文献１では、他の態様として、Ｍ個のマルチコアＣＰＵを含む装置が開示されている。この装置では、フローテーブルをＭ個に分割して、各マルチコアＣＰＵ内の共有メモリに保持するようにしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１１／０７８１０８号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１には、フローテーブルの分割の仕方については全く開示がされていない。よって、特許文献１には、次に説明するような問題が発生することがある。以下、図を参照して、その問題点について説明する。なお、以下に説明する内容は、本願発明者が新たに検討した内容であって、従来技術を説明するものではない。
【０００６】
図１１は、ＳＩＭＤ型アクセラレータデバイスにおいて同一のインストラクショングループに属する複数のＳＩＭＤコア３０１〜３０３によって、１つ以上のレコードが含まれる転送テーブルから、該当のレコードを検索する場合について示している。ＳＩＭＤコア３０１〜３０３のそれぞれは、通信ポートＡ〜Ｃのそれぞれを介して受信したパケットについて、通信ポートごとに独立した転送テーブルから該当のレコードを検索するものとする。また、ＳＩＭＤコア３０１〜３０３のそれぞれが参照する転送テーブルは、通信ポートごとにレコード数が異なるものとする。図１１では、ＳＩＭＤコアが参照する転送テーブルのサイズ（レコード数）が１であり、ＳＩＭＤコアが参照する転送テーブルのサイズ（レコード数）が２であり、ＳＩＭＤコアが参照する転送テーブルのサイズ（レコード数）が３である場合について示している。
【０００７】
ＳＩＭＤ型アーキテクチャでは、同一のインストラクショングループに属する全てのＳＩＭＤコア３０１〜３０３は、同一命令を実行する必要があり、自身の処理が終了したとしても、他のＳＩＭＤコアの処理の終了を待たなければいけない。よって、図１１に例示する場合には、検索処理のステップ数（参照する転送テーブルのレコード数）が多いＳＩＭＤコアは、検索処理のステップ数が少ないＳＩＭＤコアによって待たされることになる。
【０００８】
すなわち、図１２に示すように、サイズ１の転送テーブルを参照するＳＩＭＤコア３０１は、１ｓｔｅｐで検索処理が終了し、サイズ２の転送テーブルを参照するＳＩＭＤ３０２コアは、２ｓｔｅｐで検索処理が終了し、サイズ３の転送テーブルを参照するＳＩＭＤコア３０３は、３ｓｔｅｐで検索処理が終了する。よって、サイズ１の転送テーブルを参照するＳＩＭＤコア３０１は、ＳＩＭＤコア３０３によって２ｓｔｅｐ待たされ、サイズ２の転送テーブルを参照するＳＩＭＤコア３０２は、ＳＩＭＤコア３０３によって１ｓｔｅｐ待たされてしまうことになる。
【０００９】
このように、複数のＳＩＭＤコアで分散して並列的に転送テーブルを検索する場合、元となる転送テーブルを考慮なしに分割し、ＳＩＭＤコアのそれぞれに割り当ててしまうと、一部のＳＩＭＤコアが待たされてしまうという問題がある。すなわち、ＳＩＭＤコア（プロセッサコア）の処理効率が低下してしまうという問題がある。
【００１０】
本発明の目的は、上述したような課題を解決するために、複数のプロセッサコアで分散して転送テーブルを検索する場合において、プロセッサコアの処理効率を向上することができるスイッチ装置、データ転送制御方法、及びデータ転送制御プログラムを提供することである。
【課題を解決するための手段】
【００１１】
本発明の第１の態様に係るスイッチ装置は、外部から受信した通信データの転送先を決定し、決定した転送先に前記通信データを転送するスイッチ装置であって、前記通信データから抽出される検索キーと、当該検索キーが抽出される通信データの転送先とを示す複数のレコードを含む転送テーブルが記憶される転送テーブル記憶部と、前記転送テーブルに含まれる複数のレコードのうち、自身に割り当てられたレコードを、前記通信データから抽出した検索キーで検索をすることで、当該通信データの転送先を決定する複数のプロセッサコアと、前記転送テーブルに含まれるレコードの数と、前記プロセッサコアの数とに基づいて、前記転送テーブルを分割して前記複数のプロセッサコアのそれぞれに前記レコードを平均的に割り当てる転送テーブル細分化部と、を備えたものである。
【００１２】
本発明の第２の態様に係るデータ転送制御方法は、受信した通信データの転送先を決定し、決定した転送先に前記通信データを転送するデータ転送制御方法であって、前記通信データから抽出される検索キーと、当該検索キーが抽出される通信データの転送先とを示す複数のレコードを含む転送テーブルを転送テーブル記憶部に記憶する記憶ステップと、前記転送テーブルに含まれる複数のレコードを、複数のプロセッサコアに割り当てる割当ステップと、前記複数のプロセッサコアが、前記転送テーブルに含まれる複数のレコードのうち、自身に割り当てられたレコードを、前記通信データから抽出した検索キーで検索をすることで、当該通信データの転送先を決定する検索ステップと、を備え、前記割当ステップでは、前記転送テーブルに含まれるレコードの数と、前記プロセッサコアの数とに基づいて、前記転送テーブルを分割して前記複数のプロセッサコアのそれぞれに前記レコードを平均的に割り当てるものである。
【００１３】
本発明の第３の態様に係るデータ転送制御プログラムは、受信した通信データの転送先を決定し、決定した転送先に前記通信データを転送するためのデータ転送制御プログラムであって、前記通信データから抽出される検索キーと、当該検索キーが抽出される通信データの転送先とを示す複数のレコードを含む転送テーブルを転送テーブル記憶部に記憶する記憶処理と、前記転送テーブルに含まれる複数のレコードを、複数のプロセッサコアに割り当てる割当処理と、前記複数のプロセッサコアが、前記転送テーブルに含まれる複数のレコードのうち、自身に割り当てられたレコードを、前記通信データから抽出した検索キーで検索をすることで、当該通信データの転送先を決定する検索処理と、をコンピュータに実行させ、前記割当処理では、前記転送テーブルに含まれるレコードの数と、前記プロセッサコアの数とに基づいて、前記転送テーブルを分割して前記複数のプロセッサコアのそれぞれに前記レコードを平均的に割り当てるものである。
【発明の効果】
【００１４】
上述した本発明の各態様によれば、複数のプロセッサコアで分散して転送テーブルを検索する場合において、プロセッサコアの処理効率を向上することができるスイッチ装置、データ転送制御方法、及びデータ転送制御プログラムを提供することができる。
【図面の簡単な説明】
【００１５】
【図１】実施の形態に係るスイッチ装置の構成図である。
【図２】実施の形態に係るスイッチ装置の機能ブロック図である。
【図３】実施の形態に係る通信データ入力装置の機能ブロック図である。
【図４】実施の形態に係るデータ処理装置の機能ブロック図である。
【図５】実施の形態に係る転送テーブル分割部に記憶される転送テーブルの一例を示す図である。
【図６】実施の形態に係るデータ処理装置の機能ブロックとハードウェアとの関係を示す図である。
【図７】実施の形態に係るスイッチ装置の動作を示すフローチャートである。
【図８】実施の形態に係る細分化転送テーブル記憶部の転送テーブルとＳＩＭＤコアとの関係の一例を示す図である。
【図９】実施の形態に係るスイッチ装置の処理状況の一例を示す図である。
【図１０】実施の形態に係るスイッチ装置の概略構成図である。
【図１１】発明者の検討内容における転送テーブルとＳＩＭＤコアとの関係の一例を示す図である。
【図１２】発明者の検討内容における処理状況の一例を示す図である。
【発明を実施するための形態】
【００１６】
＜発明の実施の形態＞
以下に図面を参照しながら、本発明の好適な実施の形態について説明する。以下の実施の形態に示す具体的な数値等は、発明の理解を容易とするための例示にすぎず、特に断る場合を除き、それに限定されるものではない。また、以下の記載及び図面では、説明の明確化のため、当業者にとって自明な事項等については、適宜、省略及び簡略化がなされている。
【００１７】
図１を参照して、本発明の実施の形態に係るスイッチ装置１００の構成について説明する。図１は、本発明の実施の形態に係るスイッチ装置１００の構成図である。
【００１８】
スイッチ装置１００は、ＣＰＵ（Central Processing Unit）１０１、メインメモリ１０２、ビデオメモリ１０３、及びＧＰＵ（Graphics Processing Unit）１０４を有する。
【００１９】
ＣＰＵ１０１は、スイッチ装置１００を統括的に制御する。ＣＰＵ１０１は、メインメモリ１０２に記憶されたスイッチングソフトウェア（スイッチングプログラム）１１０を実行することで、ソフトウェアスイッチ（仮想スイッチ）としての機能をスイッチ装置１００上で実現する。
【００２０】
メインメモリ１０２は、ＣＰＵ１０１によって使用される各種情報、及び、ＣＰＵ１０１の演算結果等が記憶される。また、メインメモリ１０２は、ＣＰＵ１０１とＧＰＵ１０４との間の情報の受け渡しにも利用される。ＣＰＵ１０１は、ＧＰＵ１０４に受け渡す情報をメインメモリ１０２に記憶することで、メインメモリ１０２からビデオメモリ１０３に、その情報を転送する。この情報の転送は、例えば、ＤＭＡ転送によって実施する。
【００２１】
ビデオメモリ１０３は、ＧＰＵ１０４によって使用される各種情報、及び、ＧＰＵ１０４の演算結果等が記憶される。また、ビデオメモリ１０３は、ＣＰＵ１０１とＧＰＵ１０４との間の情報の受け渡しにも利用される。ＧＰＵ１０４は、ＣＰＵ１０１に受け渡す情報をビデオメモリ１０３に記憶することで、ビデオメモリ１０３からメインメモリ１０２に、その情報を転送する。この情報の転送は、例えば、ＤＭＡ転送によって実施する。
【００２２】
ＧＰＵ１０４は、ＣＰＵ１０１からの命令に従って各種処理を実行する。ＧＰＵ１０４は、ＳＩＭＤ型アーキテクチャで動作するＳＩＭＤ型アクセラレータデバイスである。本実施の形態では、ＳＩＭＤ型アクセラレータデバイスとして、ＧＰＵを採用した例について説明するが、同様の処理を実行可能なＳＩＭＤ型アクセラレータデバイスであれば、これに限られない。また、アクセラレータデバイスは、同様の処理を実行可能であれば、ＳＩＭＤ型であることには限定されない。
【００２３】
通信ポート２０１〜２０３は、上述のソフトウェアスイッチと接続される通信ポートに相当する。通信ポート２０１〜２０３は、通信データ（パケット）を送受信する。通信ポート２０１〜２０３は、通信データを受信してソフトウェアスイッチへ送信する入力ポート、及び、外部に対して送信する出力ポートとして機能する。なお、本実施の形態では、通信ポートの数が３つである場合について例示するが、その数はこの例に限られない。また、通信ポートは受信専用の通信ポート、および送信専用の通信ポートが存在してもよい。
【００２４】
上述した構成により、スイッチ装置１００は、次のように動作する。ＣＰＵ１０１は、通信ポート２０１〜２０３を介して通信データを受信した場合に、その通信データの転送先の決定をＧＰＵ１０４に指示する。ＧＰＵ１０４は、ＣＰＵ１０１からの指示に応じて、通信データから抽出した情報に基づいて、転送テーブルからその通信データの転送先を検索する。ここで、ＧＰＵ１０４は、後述するように複数のＳＩＭＤコアを有しており、それら複数のＳＩＭＤコアによって並列的に検索を行う。ＧＰＵ１０４は、検索した転送先をＣＰＵ１０１に通知する。ＣＰＵ１０１は、ＧＰＵ１０４から通知された転送先に、通信データを転送する。
【００２５】
ここで、スイッチ装置１００は、例えば、１つ以上の仮想マシンを構築可能なサーバである。そして、スイッチ装置１００は、上述の装置１０１〜１０４によって、仮想マシン間を接続するソフトウェアスイッチを実現する。
【００２６】
続いて、図２〜図６を参照して、本発明の実施の形態に係るスイッチ装置１００の機能ブロックについて説明する。図２は、本発明の実施の形態に係るスイッチ装置１００の機能ブロック図である。図３は、本発明の実施の形態に係る通信データ入力装置１の機能ブロック図である。図４は、本発明の実施の形態に係るデータ処理装置２の機能ブロック図である。図５は、本発明の実施の形態に係る転送テーブル分割部２９に記憶される転送テーブルの一例を示す図である。図６は、本発明の実施の形態に係るデータ処理装置２の機能ブロックとハードウェアとの関係を示す図である
【００２７】
図２に示すように、スイッチ装置１００は、複数の通信データ入力装置１、データ処理装置２、複数の通信データ出力装置３を有する。
【００２８】
通信データ入力装置１の数は通信ポート２０１〜２０３のうち受信機能を持つ通信ポートと同数となる。また、通信データ出力装置３の数は同様に送信機能を持つ通信ポートと同数となる。通信ポート２０１〜２０３のすべてが送受信機能を持つ場合、通信データ入力装置1及び通信データ出力装置３のそれぞれの数と同じとなる。以下、３つの通信データ入力装置１を、それぞれ、通信データ入力装置１ａ、通信データ入力装置１ｂ、通信データ入力装置１ｃとも呼ぶ。また、３つの通信データ出力装置３を、それぞれ、通信データ出力装置３ａ、３ｂ、３ｃとも呼ぶ。
【００２９】
図３に示すように、通信データ入力装置１は、通信データ入力制御部１１及びデータ転送部１２を有する。以下、通信データ入力装置１ａ〜１ｃにおける通信データ入力制御部１１のそれぞれを、通信データ入力制御部１１ａ、１１ｂ、１１ｃとも呼ぶ。また、通信データ入力装置１ａ〜１ｃにおけるデータ転送部１２のそれぞれを、データ転送部１２ａ、データ転送部１２ｂ、データ転送部１２ｃとも呼ぶ。
【００３０】
通信データ入力制御部１１は、スイッチ装置１００で動作する仮想マシン上にエミュレーションされたＮＩＣ（Nework Interface Card）に相当する。通信データ入力制御部１１は、仮想マシンからの通信データをデータ転送部１２に送信する。なお、通信データ入力制御部１１ａ〜１１ｃは、全てが上述したような仮想ＮＩＣであることに限られず、物理ＮＩＣを含んでいてもよい。
【００３１】
データ転送部１２は、通信データ入力制御部１１から送信された通信データを受信し、データ処理装置２に送信する。データ転送部１２ａ〜１２ｃのそれぞれは、通信データ入力制御部１１ａ〜１１ｃのそれぞれに対応付けられており、対応する通信データ入力制御部１１からの通信データを独立して受信する。また、データ転送部１２ａ〜１２ｃのそれぞれは、後述するデータ処理装置２が有する入力データ記憶部２１ａ〜２１ｃのそれぞれに対応付けられており、対応付する入力データ記憶部に受信した通信データを独立して転送する。データ転送部１２ａ〜１２ｃのそれぞれは、通信ポート２０１〜２０３に相当する。
【００３２】
図４に示すように、データ処理装置２は、複数の入力データ記憶部２１、転送テーブル記憶部２２、転送テーブル細分化部２３、複数の細分化転送テーブル記憶部２４、転送テーブル検索部２５、複数のマッチ優先度判定部２６、転送テーブル制御情報受信処理部２７、複数のアクション実行部２８、転送テーブル分割部２９、複数の出力データ記憶部３０を有している。
【００３３】
入力データ記憶部２１、マッチ優先度判定部２６、及びアクション実行部２８はデータ転送部１２の数と同じとなる。出力データ記憶部３０は、通信データ出力装置３ａ〜３ｃの数と同じとなる。また、本実施の形態では、細分化転送テーブル記憶部２４の数が６つである場合について説明する。以下、３つの入力データ記憶部２１を、それぞれ、３つの入力データ記憶部２１ａ、２１ｂ、２１ｃとも呼ぶ。また、６つの細分化転送テーブル記憶部２４を、それぞれ、細分化転送テーブル記憶部２４ａ、２４ｂ、２４ｃ、２４ｄ、２４ｅ、２４ｆとも呼ぶ。また、マッチ優先度判定部２６を、それぞれ、マッチ優先度判定部２６ａ、２６ｂ、２６ｃとも呼ぶ。また、３つのアクション実行部２８を、それぞれ、アクション実行部２８ａ、２８ｂ、２８ｃとも呼ぶ。また、３つの出力データ記憶部３０を、それぞれ、出力データ記憶部３０ａ、３０ｂ、３０ｃとも呼ぶ。このように、入力データ記憶部２１、マッチ優先度判定部２６、及びアクション実行部２８は通信データ入力制御部１１に対応する数だけ用意される。通信データ記憶部３０は、通信データ出力装置３に対応する数だけ用意される。また、細分化転送テーブル記憶部２４の数は、後述するように、転送テーブル細分化部２３で決定される使用するＳＩＭＤコアの数と同じとなる。
【００３４】
入力データ記憶部２１は、データ転送部１２から送信された通信データを受信し、記憶する。入力データ記憶部２１ａ〜２１ｃのそれぞれは、データ転送部１２ａ〜１２ｃのそれぞれと対応付けられており、対応するデータ転送部１２から通信データを独立して受信する。
【００３５】
転送テーブル制御情報受信処理部２７は、外部の装置から受信した転送テーブル制御情報を処理する。この転送テーブル制御情報は、外部から本ソフトウェアスイッチ宛てに送信された通信データとなる。本スイッチ装置１００におけるソフトウェアスイッチをＯｐｅｎＦｌｏｗスイッチとして実現した場合、外部の装置は、ＯｐｅｎＦｌｏｗコントローラに相当する。転送テーブル制御情報には、転送テーブルのレコードを追加、変更、又は削除することを指示する情報がある。転送テーブル制御情報は、レコードを追加又は変更することを指示する情報である場合、そのレコードを示す情報を含んでいる。転送テーブル制御情報受信処理部２７は、受信した転送テーブル制御情報を転送テーブル記憶部２２に転送する。
【００３６】
転送テーブル記憶部２２は、転送テーブルを予め記憶している。転送テーブル記憶部２２は、転送テーブル制御情報受信処理部２７から転送された転送テーブル制御情報に基づいて転送テーブルを更新する。転送テーブルにおけるレコードは、以下の（１）〜（３）の情報を含んでいる。
（１）優先度
（２）マッチ条件
（３）アクション
【００３７】
優先度は、自身が含まれるレコード（アクション）の優先度を示す。優先度は、受信した通信データに対応するレコードを検索した際に複数のレコードがヒットしてしまった場合に、どちらのレコードを優先的に採用すべきかを決定するための比較に利用される。優先度は、比較可能な値であれば、どのような値を採用してもよい。例えば、優先度は、正の整数値で示すようにし、より大きい値の方が優先度は高いものとしてよい。また、本実施の形態では、転送テーブルに含まれる複数のレコードで同一の優先度が存在しないように、各レコードに優先度が設定されているものとする。
【００３８】
マッチ条件は、受信した通信データに対応するレコードを検索する際に、その通信データから抽出される検索条件（検索キー）との一致を比較される情報である。すなわち、検索では、受信した通信データから導き出された検索条件と一致するマッチ条件を含むレコードが、その通信データに対応するレコードとして抽出される。マッチ条件は、例えば、通信データが受信された入力ポート、通信データの宛先ＭＡＣアドレス、通信データの送信元ＭＡＣアドレス、通信データの宛先ＩＰアドレス、及び通信データの送信元ＩＰアドレス等を示す情報である。なお、マッチ条件は、ここで例示した情報のみに限られず、ここで例示した情報の一部のみとしてもよく、ここで例示した情報の少なくとも１つと他の情報とを含んでいてもよい。
【００３９】
アクションは、受信した通信データに対して実施する処理内容を示す情報である。アクションは、例えば、通信データに対する処理内容として、通信データを通信データ出力装置３（通信ポート）に出力、通信データを破棄、及び、通信データのフィールドを更新等の処理内容のうち、少なくとも１つを示している。通信データを通信データ出力装置３に出力、のアクションでは、通信データ出力装置３ａ〜３ｃ（通信ポート２０１〜２０３）のうち、いずれを通信データの転送先（出力先）とするかも示される。
【００４０】
レコードは、例えば、具体的には以下のような内容が示される。
【００４１】
[優先度]  １００
[マッチ条件]  入力ポート（通信ポート）：通信データ入力装置１ａ、宛先アドレス：192.168.1.1、その他：何でもよい
[アクション]  通信データ出力装置３ｃに出力
【００４２】
例えば、受信した通信データが、通信データ入力装置１ａ（通信ポート２０１）を介して受信されており、かつ、（例えばヘッダで）宛先アドレスとして「192.168.1.1」が示されている場合、その通信データに対応するレコードとして、上記の例のレコードがヒットする。
【００４３】
このような転送テーブルを作成するものとして代表的なプロトコルにＯｐｅｎＦｌｏｗプロトコルが広く知られている。すなわち、本実施の形態においても、ＯｐｅｎＦｌｏｗプロトコルを採用して、転送テーブルとしてフローテーブルを利用するようにしてもよいが、これに限定されるものではない。
【００４４】
転送テーブル分割部２９は、図５に例示するように、転送テーブル記憶部２２に記憶される転送テーブルを取得し、マッチ条件の入力ポート（通信ポート）ごとに分割して記憶する。これにより、転送テーブルは、マッチ条件の入力ポートとして通信ポート２０１（通信データ入力装置１ａ）を示す転送テーブル２９１と、マッチ条件の入力ポートとして通信ポート２０２（通信データ入力装置１ｂ）を示す転送テーブル２９２と、マッチ条件の入力ポートとして通信ポート２０３（通信データ入力装置１ｃ）を示す転送テーブル２９３とに分割される。
【００４５】
転送テーブル細分化部２３は、転送テーブル分割部２９に記憶された転送テーブルのレコード数とＳＩＭＤコア数とを比較し、各ＳＩＭＤコアに割り当てるレコードを決定する。転送テーブル細分化部２３は、決定した割り当てに従って、転送テーブル分割部２９によって分割された転送テーブルをさらに細分化し、細分化転送テーブル記憶部２４ａ〜２４ｆのそれぞれに記憶する。また、転送テーブル細分化部２３は、各ＳＩＭＤコアに対応する細分化転送テーブル記憶部２４及び入力データ記憶部２１を示すＳＩＭＤコア割り当て情報を転送テーブル検索部２５に通知する。
【００４６】
ここで、転送テーブル細分化部２３は、ＳＩＭＤコアが処理するレコード数がおおよそ同じ数となるように平均化して各転送テーブル（転送テーブル分割部２９によって分割された各転送テーブル）を細分化する。これは、各ＳＩＭＤコアに割り当てられるレコード数が、同じ数により近づくように決定されるのであれば、任意の方法を採用するようにしてよい。例えば、最初に転送テーブル２９１〜２９３のそれぞれにＳＩＭＤコアを１つ割り当て、転送テーブル２９１〜２９３のそれぞれについて、割り当てられたＳＩＭＤコアでレコード数を割り算した結果が最も多いものに順次ＳＩＭＤコアを追加していく処理を、割り当て可能なＳＩＭＤコアが無くなるまで繰り返す方法などによって決定してもよい。
【００４７】
また、ＳＩＭＤコア割り当て情報では、転送テーブル２９１を分割した転送テーブルが割り当てられるＳＩＭＤコアには、入力データ記憶部２１ａが割り当てられ、転送テーブル２９２を分割した転送テーブルが割り当てられるＳＩＭＤコアには、入力データ記憶部２１ｂが割り当てられ、転送テーブル２９１を分割した転送テーブルが割り当てられるＳＩＭＤコアには、入力データ記憶部２１ｃが割り当てられることになる。
【００４８】
図６に示すように、転送テーブル検索部２５は、複数のＳＩＭＤコア３１を有している。この複数のＳＩＭＤコア３１は、上述したようにＧＰＵ１０４が有するものである。また、上述したように、転送テーブル検索部２５が使用する複数のＳＩＭＤコア３１ａ〜３１ｆの数は、細分化転送テーブル記憶部２４ａ〜２４ｆの数と同じとなる。
【００４９】
ここで、本実施の形態では、転送テーブル細分化部２３において転送テーブルのレコード数とＳＩＭＤコア数とに基づいて転送テーブル２９１〜２９３が処理された結果、通信ポート２０１に対応する転送テーブル２９１は分割されずに細分化転送テーブル記憶部２４ａに記憶され、通信ポート２０２に対応する転送テーブル２９２は２つに分割されて細分化転送テーブル記憶部２４ｂ、２４ｃにそれぞれ記憶されて、通信ポート２０３に対応する転送テーブル２９３は３つに分割されて細分化転送テーブル記憶部２４ｄ〜２４ｆにそれぞれ記憶されたものとして場合について説明する。
【００５０】
この場合、転送テーブル細分化部２３は、細分化転送テーブル記憶部２４ａがＳＩＭＤコア３１ａ及び入力データ記憶部２１ａに対応し、細分化転送テーブル記憶部２４ｂ、２４ｃのそれぞれがＳＩＭＤコア３１ｂ、ｃのそれぞれ及び入力データ記憶部２１ｂに対応し、細分化転送テーブル記憶部２４ｄ〜２４ｆのそれぞれがＳＩＭＤコア３１ａ〜２４ｆのそれぞれ及び入力データ記憶部２１ｃに対応することを示すＳＩＭＤコア割り当て情報を生成し、転送テーブル検索部２５に出力する。
【００５１】
なお、図６にも示すように、細分化転送テーブル記憶部２４、転送テーブル検索部２５、マッチ優先度判定部２６は、ＳＩＭＤ型アーキテクチャ（ビデオメモリ１０３、ＧＰＵ１０４等）で実現される。また、その他（入力データ記憶部２１、転送テーブル記憶部２２、転送テーブル細分化部２３、転送テーブル制御情報受信処理部２７、アクション実行部２８、転送テーブル分割部２９、及び出力データ記憶部３０等）は、ＣＰＵ１０１及びメインメモリ１０２等で実現される。
【００５２】
転送テーブル検索部２５は、転送テーブル細分化部２３から出力されたＳＩＭＤコア割り当て情報に従って、入力データ記憶部２１に記憶された通信データと、細分化転送テーブル記憶部２４に記憶されたレコードのマッチ条件とを比較して検索をする。
【００５３】
すなわち、ＳＩＭＤコア３１ａは、自身に対応する細分化転送テーブル記憶部２４ａに記憶された転送テーブルを検索し、ＳＩＭＤコア３１ｂは、自身に対応する細分化転送テーブル記憶部２４ｂに記憶された転送テーブルを検索し、ＳＩＭＤコア３１ｃは、自身に対応する細分化転送テーブル記憶部２４ｃに記憶された転送テーブルを検索し、ＳＩＭＤコア３１ｄは、自身に対応する細分化転送テーブル記憶部２４ｄに記憶された転送テーブルを検索し、ＳＩＭＤコア３１ｅは、自身に対応する細分化転送テーブル記憶部２４ｅに記憶された転送テーブルを検索し、ＳＩＭＤコア３１ｆは、自身に対応する細分化転送テーブル記憶部２４ｆに記憶された転送テーブルを検索する。また、ＳＩＭＤコア３１ａは、自身に対応する入力データ記憶部２１ａに記憶された通信データを取得して、その通信データについて検索をし、ＳＩＭＤコア３１ｂ、３１ｃは、自身に対応する入力データ記憶部２１ｂに記憶された通信データを取得して、その通信データについて検索をし、ＳＩＭＤコア３１ｄ〜３１ｆは、自身に対応する入力データ記憶部２１ｃに記憶された通信データを取得して、その通信データについて検索をする。
【００５４】
よって、この例では、ＳＩＭＤコア３１ａが含まれるインストラクショングループと、ＳＩＭＤコア３１ｂ、３１ｃが含まれるインストラクショングループと、ＳＩＭＤコア３１ｄ〜３１ｆが含まれるインストラクショングループとが存在することになる。すなわち、転送テーブル検索部２５は、ＳＩＭＤコア割り当て情報に基づいて、ＳＩＭＤコア３１ａ〜３１ｆを異なるインストラクショングループに分ける。
【００５５】
また、転送テーブル検索部２５は、マッチ条件にヒットしたレコードが無い場合に使用するダミーのレコードを記憶している。転送テーブル検索部２５は、マッチ条件にヒットするレコードを検出した場合、そのヒットしたレコードと通信データをマッチ優先度判定部２６に出力する。転送テーブル検索部２５は、マッチ条件にヒットするレコードを検出できなかった場合、ダミーのレコードをマッチ優先度判定部２６に出力する。このレコードは、例えば、優先度が最低、アクションとして、通信データを破棄、を示すようにすればよい。
【００５６】
ここで、入力データ記憶部２１ａ〜２１ｃのそれぞれは、マッチ優先度判定部２６ａ〜２６ｃのそれぞれに対応する。よって、入力データ記憶部２１ａに対応するＳＩＭＤコア３１ａは、検索結果（レコード及び通信データ）をマッチ優先度判定部２６ａに出力し、入力データ記憶部２１ｂに対応するＳＩＭＤコア３１ｂ、３１ｃは、検索結果（レコード及び通信データ）をマッチ優先度判定部２６ｂに出力し、入力データ記憶部２１ｃに対応するＳＩＭＤコア３１ｄ〜３１ｆは、検索結果（レコード及び通信データ）をマッチ優先度判定部２６ｃに出力する。
【００５７】
マッチ優先度判定部２６は、転送テーブル検索部２５からレコードと通信データの出力を受ける。マッチ優先度判定部２６は、複数のＳＩＭＤコアからレコードと通信データの出力を受けた場合、それらのレコードの優先度を比較し、最も高い優先度をもつレコードのアクションを選択する。また、マッチ優先度判定部２６は、選択したアクションを示すアクション情報と通信データをアクション実行部２８に出力する。マッチ優先度判定部２６ａ〜２６ｃのそれぞれは、アクション実行部２８ａ〜２８ｃのそれぞれに対応し、対応するアクション実行部２８にアクション情報と通信データを出力する。
【００５８】
ここで、マッチ優先度判定部２６として、自身が処理対象とする検索結果を生成するインストラクショングループに属するＳＩＭＤコアを割り当てるようにしてもよく、それとは異なるインストラクショングループに属するＳＩＭＤコアを割り当てるようにしてもよい。マッチ優先度判定部２６ｃを例に挙げて説明する。例えば、マッチ優先度判定部２６ｃは、マッチ優先度判定部２６ｃが処理対象とする検索結果を生成するインストラクショングループに属するＳＩＭＤコア３１ｄ〜３１ｆのうち、少なくとも１つのＳＩＭＤコアを割り当てるようにしてもよい。また、マッチ優先度判定部２６ｃは、マッチ優先度判定部２６ｃが処理対象とする検索結果を生成するインストラクショングループとは異なるインストラクショングループに属する、図示しないＳＩＭＤコアを割り当てるようにしてもよい。
【００５９】
アクション実行部２８は、マッチ優先度判定部２６から出力された通信データに対して、マッチ優先度判定部２６から出力されたアクション情報が示すアクションの処理をする。例えば、アクションとして、通信データを通信データ出力装置３（通信ポート）に出力、が示されている場合、出力データ記憶部３０ａ〜３０ｃのうち、そのアクションに対応する出力データ記憶部３０に通信データを記憶する。
【００６０】
出力データ記憶部３０は、アクション実行部２８によって記憶された通信データを、自身に対応する通信データ出力装置３に出力する。出力データ記憶部３０ａは、通信データ出力装置３ａに対応し、出力データ記憶部３０ｂは、通信データ出力装置３ｂに対応し、出力データ記憶部３０ｃは、通信データ出力装置３ｃに対応する。
【００６１】
すなわち、出力データ記憶部３０として機能するＣＰＵ１０１は、同じく出力データ記憶部３０として機能するメモリ１０２に記憶された通信データを、その出力データ記憶部３０に対応する通信データ出力装置３に出力する。
【００６２】
よって、アクション実行部２８は、通信データを通信データ出力装置３（通信ポート）に出力、のアクションにおける転送先として、通信データ出力装置３ａが示されている場合は通信データを出力データ記憶部３０ａに記憶し、通信データ出力装置３ｂが示されている場合は通信データを出力データ記憶部３０ｂに記憶し、通信データ出力装置３ｃが示されている場合は通信データを出力データ記憶部３０ｃに記憶する。
【００６３】
通信データ出力装置３は、通信データ入力装置１と同様に、仮想マシン上にエミュレーションされたＮＩＣ及び通信ポートに相当する。通信データ出力装置３ａは、通信データ入力装置１ａのＮＩＣ及び通信ポート２０１に相当し、通信データ出力装置３ｂは、通信データ入力装置１ｂのＮＩＣ及び通信ポート２０２に相当し、通信データ出力装置３ｃは、通信データ入力装置１ｃのＮＩＣ及び通信ポート２０３に相当する。前述の通り本実施例では、通信ポート２０１〜２０３は送受信機能を持つため、通信データ出力装置３の数は通信データ入力装置１の数と同数となっているが、送信機能のみを持つ通信ポートも存在してもよく。同数とは限らない。通信データ入力装置１についても同様に、通信データ入力装置１の場合は受信機能のみを持つ通信ポートが存在してもよい。
【００６４】
すなわち、各入力ポート（通信ポート２０１〜２０３）から受信した通信データの転送先をデータ処理装置２によって検索し、検索結果に応じた転送先となる通信データ出力装置３（通信ポート２０１〜２０３のいずれか）に転送することで、通信データを所望の転送先（例えば仮想マシン）に転送することができる。
【００６５】
以上に説明したように、本実施の形態では、通信ポート２０１〜２０３（データ転送部１２ａ〜１２ｃ）のそれぞれによって受信された通信データは、通信ポート２０１〜２０３のそれぞれに対応する、入力データ記憶部２１ａ〜２１ｃ、ＳＩＭＤコア３１ａ〜３１ｆ（ＳＩＭＤコア３１は、ＳＩＭＤコア３１ａと、ＳＩＭＤコア３１ｂ、３１ｃと、ＳＩＭＤコア３１ｄ〜３１ｆのそれぞれとなる）、マッチ優先度判定部２６ａ〜２６ｃ、アクション実行部２８ａ〜２８ｃ、及び出力データ記憶部３０ａ〜３０ｃのそれぞれを経由して独立的に処理をすること可能である。そのため、複数の通信ポート２０１〜２０３から受信した通信データを１本にシリアライズせずに処理をすることが可能である。
【００６６】
また、このように、通信ポートで独立性を保っているため、ある通信ポートが高負荷となったとしても、他の通信ポートで受信される通信データまでもが滞留してしまうといったことが無くなる。
【００６７】
続いて、図７を参照して、本発明の実施の形態に係るスイッチ装置１００の動作について説明する。図７は、本発明の実施の形態に係るスイッチ装置の動作を示すフローチャートである。
【００６８】
スイッチ装置１００は、通信データを処理する前に、以下の動作を予め行う。
【００６９】
（１）データ転送部１２のそれぞれは、自身に対応する入力データ記憶部２１の位置を記憶する。すなわち、上述の例では、データ転送部１２ａは、入力データ記憶部２１ａを通信データの転送先として記憶し、入力データ記憶部２１ｂを通信データの転送先として記憶し、入力データ記憶部２１ｂを通信データの転送先として記憶する。
【００７０】
（２）転送テーブル制御情報受信処理部２７は、外部から転送テーブル制御情報を受信し、優先度、マッチ条件、及びアクションを含む転送テーブルのレコードを作成し、転送テーブル記憶部２２に記憶する。
【００７１】
（３）転送テーブル分割部２９は、転送テーブル記憶部２２からレコードを受け取り、マッチ条件にある入力ポートが同一となるテーブル群ごとに転送テーブルを分ける。すなわち、図５に示すように転送テーブルを分割する。
【００７２】
（４）転送テーブル細分化部２３は、転送テーブル分割部２９よって作成された入力ポートごとの転送テーブルを読み込み、レコードの数とＳＩＭＤコアの数を比較して、各ＳＩＭＤコアが処理するレコード数が平均化されるように転送テーブルをさらに分割する。転送テーブル細分化部２３は、それと同時に、細分化された転送テーブルのそれぞれの処理を担当するＳＩＭＤコアの割り当てを決定する。転送テーブル細分化部２３は、細分化した転送テーブルを、その転送テーブルの処理を担当するＳＩＭＤコアに対応する細分化転送テーブル記憶部２４に記憶する。また、転送テーブル細分化部２３は、それと同時に、転送テーブル検索部２５にＳＩＭＤコア割り当て情報を通知する。
【００７３】
図８に示す例で説明すると、転送テーブルＡ（２９１）、Ｂ（２９２）、Ｃ（２９３）のレコード総数は６であり、ＳＩＭＤコア数も６である。よって、各ＳＩＭＤコアが担当するレコード数を平均化すると１コアに対し１レコードを担当させることで平均化することができる。この場合、転送テーブル細分化部２３は、各１レコードの情報を細分化転送テーブル記憶部２４ａ〜２４ｆのそれぞれに記憶するとともに、それに応じたＳＩＭＤコア割り当て情報を転送テーブル検索部２５に通知する。
【００７４】
これによれば、図９に例示するように、転送テーブル検索部２５における検索において、各ＳＩＭＤコア３１ａ〜３１ｆにおける検索処理を１ｓｔｅｐで終了させることができる。すなわち、各ＳＩＭＤコア３１ａ〜３１ｆにおける処理時間を平均化されるため、各ＳＩＭＤコア３１ａ〜３１ｆの待機時間を無くすことができ、各ＳＩＭＤコア３１ａ〜３１ｆの処理効率を向上することができる。
【００７５】
すなわち、この場合におけるＳＩＭＤコア割り当て情報は、細分化転送テーブル記憶部２４ａの転送レコードをＳＩＭＤコア３１ａが担当することを示し、細分化転送テーブル記憶部２４ｂの転送レコードをＳＩＭＤコア３１ｂが担当することを示し、細分化転送テーブル記憶部２４ｃの転送レコードをＳＩＭＤコア３１ｃが担当することを示し、細分化転送テーブル記憶部２４ｅの転送レコードをＳＩＭＤコア３１ｅが担当することを示し、細分化転送テーブル記憶部２４ｆの転送レコードをＳＩＭＤコア３１ｆが担当することを示し、細分化転送テーブル記憶部２４ｇの転送レコードをＳＩＭＤコア３１ｇが担当することを示す。
【００７６】
以下、通信データの処理について説明する。
【００７７】
（１）通信データ入力制御部１１は、通信データをデータ転送部１２に送信する。なお、上述したように、通信データ入力制御部１１は、仮想マシン上のＮＩＣに相当するが、このデータ転送部１２に通信データを送信する動作を除いて、他の動作は一般的な仮想マシン上のＮＩＣと同様の動作としてよい。これにより、データ転送部１２は、通信データを受信する（Ｓ１）。
【００７８】
（２）データ転送部１２は、受信した通信データを、自身に対応する入力データ記憶部２１に記憶する（Ｓ２）。上述したように、データ転送部１２ａ〜１２ｃのそれぞれは、相互に独立して通信データを処理する。
【００７９】
（３）転送テーブル検索部２５は、転送テーブル細分化部２３から通知されたＳＩＭＤコア割り当て情報に基づいて、入力データ記憶部２１から通信データを読み込み、その通信データから抽出した検索キーと、細分化転送テーブル記憶部２４に記憶された転送テーブルの各レコードのマッチ条件とを比較し、マッチしたレコードの内で最も優先度の高いレコードを検索する。転送テーブル検索部２５は、検索したレコードと通信データをマッチ優先度判定部２６に送信する（Ｓ３）。なお、転送テーブル検索部２５は、マッチしたレコードが検出されなかった場合は、優先度を最低、アクションを転送テーブルの全てのレコードのマッチ条件にマッチしなかった場合の処理（例えば通信データの破棄）、としたダミーのレコードと通信データをマッチ優先度判定部２６に送信する。
【００８０】
（４）マッチ優先度判定部２６は、転送テーブル検索部２５から送信された各レコードの優先度を判定し、最も優先度の高いレコードを１つだけ選択する。なお、マッチ優先度判定部２６ａのように、検索結果としてレコードを１つだけ受信する場合には、そのレコードが選択される。マッチ優先度判定部２６は、アクション実行部２８に通信データと、選択したレコードのアクションを示すアクション情報を送信する（Ｓ４）。
【００８１】
（５）アクション実行部２８は、マッチ優先度判定部２６から送信されたアクション情報が示すアクションに応じた通信データ出力装置３に通信データを送信する（Ｓ５）。
【００８２】
以下、本実施の形態の効果について説明する。
【００８３】
第一の効果は、入力ポート（通信ポート）ごとに検索テーブルを分けて検索処理を行い、入力ポートごとの通信データの転送処理の独立性を維持しているため、ある入力ポートの転送処理が高負荷であっても、他の入力ポートの転送処理に影響を与えないことである。例えば、複数の入力ポートから受信した通信データを１本にシリアライズして順次処理する場合には、ある入力ポートが大量の通信データを受信し高負荷となっていると、他の入力ポートから受信する通信データにも処理遅延が発生してしまうという問題がある。それに対して、本実施の形態では、入力ポートごとに通信データの転送処理の独立性を維持しているため、そのような処理遅延の発生を抑止することができる。
【００８４】
第二の効果は、転送テーブルのレコードを各ＳＩＭＤコアに対して平均的に割り当てているため、ＳＩＭＤ型アクセラレータデバイスを効率的に動作させることができることである。すなわち、各ＳＩＭＤコアにおける検索処理時間を平均化することができるため、ＳＩＭＤコアによる他のＳＩＭＤコアの処理完了の待ち時間を低減することができる。
【００８５】
第三の効果は、転送テーブルに対するＳＩＭＤコアの割り当てを静的に決定しているためキャッシュのヒット率が上昇することである。すなわち、レコードのマッチ条件における入力ポートごとに転送テーブルを分割し、入力ポートから受信した通信データについて、その入力ポートに対応する転送テーブルを検索するようにしているため、余分なレコード（他の入力ポートをマッチ条件に含むレコード）の検索を省くことができるからである。
【００８６】
第四の効果は、ある通信ポートに到着した通信データは、その到着順に処理されることが保障されることである。この理由は、１つの通信ポートに対して、場合によっては複数のＳＩＭＤコアが割り当てられて並列的に検索処理をするが、その割り当てられた複数のＳＩＭＤコアで処理する通信データは常に１つとなる。そのため、後続の通信データの追い越しが発生しないからである。
【００８７】
第五の効果は、ＣＰＵからＳＩＭＤ型アクセラレータデバイスに通信データの検索処理を任せるようにしているため、ＣＰＵの空き時間が増えることである。すなわち、ＣＰＵで他の処理を並列的に実行している場合に、その処理時間を増加させることができる。これは、上述したように、スイッチ装置１００としてサーバを利用し、仮想マシンを動作させる等の他の処理を実行している場合に有効である。
【００８８】
＜発明の他の実施の形態＞
複数のＳＩＭＤコアでそれぞれ検索が行われたとき、同一の通信データについて、一つのＳＩＭＤコアでのみレコードが検出され、それ以外のＳＩＭＤコアではレコードが検出されない（検索結果ゼロ件）ことが好ましい。しかしながら、複数のＳＩＭＤコアのそれぞれでレコードが検出される場合がある。
【００８９】
上述の説明では、この場合に対応すべく、レコードが優先度を示すようにし、マッチ優先度判定部２６が最も高い優先度を示すレコードを選定するようにする場合について説明した。しかしながら、複数のレコードが検出された場合に検索結果を絞り込む方法は、これに限られない。
【００９０】
例えば、マッチ優先度判定部２６に代えて、次に説明するような検索結果調整部を備えるようにしてもよい。すなわち、検索結果調整部は、所定のルールに基づいて、複数のＳＩＭＤコアが検出したレコードから一つのレコードを選定し、それ以外のレコードは採用しないよう制御を行う。所定のルールとは、例えば次の（１）（２）に示すルールである。
【００９１】
（１）予めレコードに番号を付しておき、その番号が最小のレコードを選択する。
（２）予めＳＩＭＤコアに番号を付しておき、レコードを検出した複数のＳＩＭＤコアのうち、その番号が最小のＳＩＭＤコアが検出したレコードを選択する。
【００９２】
＜本発明の実施の形態の概略構成＞
上述した本発明の実施の形態に係るスイッチ装置１００は、次に説明する概略構成としても捉えることができる。図１０は、本発明の実施の形態に係るスイッチ装置１００の概略構成となるスイッチ装置９の構成図である。
【００９３】
スイッチ装置９は、転送テーブル記憶部９１、転送テーブル細分化部９２、及び複数のプロセッサコア９３を有する。スイッチ装置９は、外部から受信した通信データの転送先を決定し、決定した転送先に通信データを転送する。
【００９４】
転送テーブル記憶部９１は、通信データから抽出される検索キーと、当該検索キーが抽出される通信データの転送先とを示す複数のレコードを含む転送テーブルが記憶される。
【００９５】
転送テーブル細分化部９２は、転送テーブルに含まれる複数のレコードのうち、自身に割り当てられたレコードを、通信データから抽出した検索キーで検索をすることで、当該通信データの転送先を決定する。
【００９６】
複数のプロセッサコア９３は、転送テーブルに含まれるレコードの数と、プロセッサコア９３の数とに基づいて、転送テーブルを分割して複数のプロセッサコア９３のそれぞれにレコードを平均的に割り当てる。
【００９７】
以上に説明したスイッチ装置９によれば、プロセッサコアにおける検索処理時間を平均化することができるため、プロセッサコアによる他のプロセッサコアの検索終了の待ち時間を低減し、プロセッサコアの処理効率を向上することができる。
【００９８】
ここで、本発明の実施の形態にかかるスイッチ装置１００は、上述の実施の形態の機能を実現するプログラム（スイッチングソフトウェア１１０を含む）を、コンピュータ（スイッチ装置１００）に供給し、スイッチ装置１００（ＣＰＵ１０１及びＧＰＵ１０４）が実行することによって、構成することが可能である。
【００９９】
なお、上述のコンピュータ（スイッチ装置１００）が実行するプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータ（スイッチ装置１００）に供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【０１００】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【０１０１】
１  通信データ入力装置
２  データ処理装置
３  通信データ出力装置
１１  通信データ入力制御部
１２  データ転送部
２１  入力データ記憶部
２２  転送テーブル記憶部
２３  転送テーブル細分化部
２４  細分化転送テーブル記憶部
２５  転送テーブル検索ｂ
２６  マッチ優先度判定部
２７  転送テーブル制御情報受信処理
２８  アクション実行部
２９  転送テーブル分割部
３０  出力データ記憶部
３１  ＳＩＭＤコア
１００  スイッチ装置
１０１  ＣＰＵ
１０２  メインメモリ
１０３  ビデオメモリ
１０４  ＧＰＵ
１１０  スイッチングソフトウェア
２０１、２０２、２０３  通信ポート
【図１】
2015171089.tif 000003
【図２】
2015171089.tif 000004
【図３】
2015171089.tif 000005
【図４】
2015171089.tif 000006
【図５】
2015171089.tif 000007
【図６】
2015171089.tif 000008
【図７】
2015171089.tif 000009
【図８】
2015171089.tif 000010
【図９】
2015171089.tif 000011
【図１０】
2015171089.tif 000012
【図１１】
2015171089.tif 000013
【図１２】
2015171089.tif 000014