それぞれ記憶手段を備えた複数のプロセッサを備えた情報処理装置の通信部として機能し得る通信ユニットにおいて、通信に関する識別情報と、前記複数のプロセッサのうち該通信についてのデータ処理を行うプロセッサが用いる記憶手段との対応関係を記憶する記憶手段と、受信したデータから該データの通信に関する識別情報を取得し、記憶された前記対応関係に基づいて、前記複数のプロセッサが備える複数の記憶手段のうち、取得した該識別情報に対応するプロセッサが備える記憶手段を特定し、特定した該記憶手段に対して、受信した前記データの転送を行う制御部と、を備えたことを特徴とする通信ユニット。前記制御部は、前記対応関係の設定指示を受信したときに、該対応関係を、前記対応関係を記憶する記憶手段に設定する請求項1記載の通信ユニット。前記対応関係の設定指示は、前記識別情報が決定したとき、又は、すでに決定している識別情報で識別される通信についてのデータ処理を行うプロセッサの割当てが移動されたときに受信される請求項2記載の通信ユニット。前記制御部は、受信した前記データから取得した前記識別情報に対応付けられた記憶手段を、前記複数のプロセッサが備える複数の記憶手段から、前記対応関係に基づいて特定できないときには、前記複数のプロセッサが備える複数の記憶手段のうち、デフォルト設定された所定の記憶手段に対して、受信した前記データの転送を行う請求項1~3のいずれか1つに記載の通信ユニット。それぞれ記憶手段を備えた複数のプロセッサを有するとともに、通信部として機能し得る通信ユニットを有する情報処理装置において、前記プロセッサが、通信に関する識別情報と、前記複数のプロセッサのうち該通信についてのデータ処理を行うプロセッサが用いる記憶手段との対応関係を前記通信ユニットに送信し、前記通信ユニットが、前記対応関係を受信したときに、該対応関係を記憶手段に設定し、受信したデータから該データの通信に関する識別情報を取得し、記憶された前記対応関係に基づいて、前記複数のプロセッサが備える複数の記憶手段のうち、取得した該識別情報に対応するプロセッサが備える記憶手段を特定し、特定した該記憶手段に対して、受信した前記データの転送を行う処理を実行する情報処理方法。前記プロセッサは、前記識別情報が決定したとき、又は、すでに決定している識別情報で識別される通信についてのデータ処理を行うプロセッサの割当てが移動されたときに、前記対応関係を前記通信ユニットに送信する請求項5記載の情報処理方法。前記通信ユニットは、受信した前記データから取得した前記識別情報に対応付けられた記憶手段を、前記複数のプロセッサが備える複数の記憶手段から、前記対応関係に基づいて特定できないときには、前記複数のプロセッサが備える複数の記憶手段のうち、デフォルト設定された所定の記憶手段に対して、受信した前記データの転送を行う請求項5又は6に記載の情報処理方法。しかしながら、かかる技術例を適用した場合、情報処理装置において受信したデータが、必ずしもそのデータの処理を行うプロセッサに対応付けられた記憶手段に転送されるとは限らない。ここで、データ処理を行うプロセッサに対応付けられた記憶手段以外の他の記憶手段すなわち、当該プロセッサからみていわゆるリモートメモリとなるに対して受信データが転送されると、当該プロセッサは、リモートメモリに対してアクセスを行うこととなる。かかるリモートメモリへのアクセスは、ローカルメモリに対するアクセスと比べ、処理効率が悪い。本技術は、1つの側面において、プロセッサ及び当該プロセッサに対応付けられた記憶手段の対を複数有する情報処理装置において、プロセッサがリモートメモリにアクセスする回数を低減させ、情報処理装置全体としての処理効率を向上させることを目的とする。本技術における1つの側面では、それぞれ記憶手段を備えた複数のプロセッサを備えた情報処理装置の通信部として機能し得る通信ユニットが、通信に関する識別情報と、前記複数のプロセッサのうち該通信についてのデータ処理を行うプロセッサが用いる記憶手段との対応関係を記憶する記憶手段を備える。そして、通信ユニットは、受信したデータから該データの通信に関する識別情報を取得し、記憶された前記対応関係に基づいて、前記複数のプロセッサが備える複数の記憶手段のうち、取得した該識別情報に対応するプロセッサが備える記憶手段を特定し、特定した該記憶手段に対して、受信した前記データの転送を行う。本技術における1つの側面によれば、プロセッサ及び当該プロセッサに対応付けられた記憶手段の対を複数有する情報処理装置において、プロセッサがリモートメモリにアクセスする回数を低減させ、情報処理装置全体としての処理効率を向上させることができる。[1.実施形態の概要]本明細書で説明する技術は、それぞれ記憶手段を備えた複数のプロセッサを備えた情報処理装置において、各プロセッサが自身に対応付けられた記憶手段にアクセスするアーキテクチャNUMAモデルにおけるデータ処理に関するものである。具体的には、情報処理装置が備える通信ユニットがデータを受信したときに、データ通信における識別情報に応じて、受信データを、当該受信データの処理を行うプロセッサに対応付けられた記憶手段に転送するようにする。こうすることにより、各プロセッサがリモートメモリにアクセスする回数を低減させ、情報処理装置全体としての処理効率を向上させることができる。ここで、かかる技術に関連する背景技術の一例について説明する。従来、複数のプロセッサを備えた情報処理装置におけるメモリアクセスのアーキテクチャは、複数のプロセッサがノースブリッジを介して1つのメモリを共有するモデルが一般的であった。しかし、近年におけるメモリアクセスのアーキテクチャは、NUMAモデルに移行しつつある。図1は、従来のメモリアクセスのアーキテクチャをNUMAモデルに適用した情報処理装置の一例の説明図である。かかる情報処理装置の例では、CPU91a及びCPU91bが、バスを介してノースブリッジ913に接続されている。CPU91aにはメモリ92aが対応付けられ、CPU91bにはメモリ92bが対応付けられている。さらに、サウスブリッジ914に、バスを介してNIC93a及びNIC93bが接続されている。NIC93a及びNIC93bはそれぞれ、LANLocalAreaNetworkを介して外部の情報処理装置等図示省略と接続されており、TCPパケットやUDPパケットのデータを受信する。また、OSOperatingSystem921上では、アプリケーション931a及びアプリケーション931bが動作している。ここでは、CPU91aがアプリケーション931aを処理し、CPU91bがアプリケーション931bを処理しているものとする。なお、本明細書の説明において、例えば、単にCPU91と表記した場合には、CPU91a及びCPU91bの少なくともいずれか一方を示すものとする。以下の説明において、他の構成要素についても全て同様である。本情報処理装置の例では、メモリ92aに、NIC93で受信したパケットが転送されるDMAバッファ94aが設けられている。さらに、メモリ92aは、DMAバッファ94aにパケットが転送されると、割り込みハンドラによって当該パケットのデータ内容がコピーされるカーネル受信バッファ95aを備える。また、メモリ92bも同様に、DMAバッファ94b及びカーネル受信バッファ95bを備える。また、NIC93aは、送受信するパケットを格納する送受信バッファ96a及びDMAバッファ94aへのパケット転送の制御を行うDMAコントローラ97aを備える。同様に、NIC93bも、送受信バッファ96b及びDMAコントローラ97bを備える。ここで、本情報処理装置のNIC93a及びNIC93bは、受信したパケットをどのDMAバッファ94に転送するかを適切に制御する機構を有していない。このため、パケットがどのCPU91で処理されるものであるかに関係なく、特定のDMAバッファ94にパケットの転送が集中する現象が発生し得る。例えば、NIC93aがパケットを受信する11。このとき、DMAコントローラ97aが、送受信バッファ96aに格納した当該受信パケットを、メモリ92bのDMAバッファ94bに転送するとする12。なお、より具体的には、NIC93aは、MSIMessageSignaledInterruptを、CPU91ごとに設けられた割り込み制御レジスタ図示省略に送信する。同様に、NIC93bも、パケットを受信すると21、送受信バッファ96bに格納した当該受信パケットを、メモリ92bのDMAバッファ94bに転送する22。かかる場合、いずれの受信パケットも、割り込みハンドラの処理によって、カーネル受信バッファ95bにコピーされる1323。カーネル受信バッファ95bにパケットのデータ内容がコピーされると、受信パケットのプロトコルの階層データリンク層、IP層、TCP層等ごとにプロトコル処理がなされ、最終的には、アプリケーション931が当該受信パケットを受信し、処理することとなる1424。これらの一連のデータ受信処理は、受信パケットの処理を行うアプリケーション931を実行するCPU91が行う。ここで、受信したパケットがCPU91aによって処理されるものであるときには、CPU91aは、CPU91bを介してリモートメモリであるメモリ92bにアクセスし、割り込み制御処理を行って、メモリ92bのDMAバッファ94bのパケットをカーネル受信バッファ95bにコピーすることとなる。このようにリモートメモリに対してアクセスすることは、ローカルメモリに対するアクセスよりも時間がかかり、処理効率が低下する。このため、本明細書で説明する実施形態においては、複数のメモリのそれぞれに、受信パケットを書き込むDMAバッファを設けた構成において、通信における識別情報に応じて、受信データを当該受信データの処理を行うCPUに対応付けられたDMAバッファに転送する機能を、NICに設ける。これにより、リモートメモリに対するアクセス回数を低減させ、処理効率を向上させる。以下、かかる技術を実現する実施形態について詳細に説明する。[2.ハードウェア構成]図2は、本実施形態に係る情報処理装置のハードウェア構成図である。本実施形態に係る情報処理装置は、プロセッサの一例であるCPU1a及びCPU1bが、バスを介してノースブリッジ13に接続されている。CPU1aはメモリ2aを備え、CPU1bはメモリ2bを備えている。本実施形態においては、より具体的には、CPU1aにはメモリ2aが対応付けられ、CPU1bにはメモリ2bが対応付けられている。さらに、サウスブリッジ14に、バスを介し、通信ユニットの一例であるNIC3a及びNIC3bが接続されている。NIC3a及びNIC3bはそれぞれ、通信ネットワーク例えばLAN等であるを介して外部の情報処理装置等と接続されており、外部の情報処理装置等からデータ例えば、TCPパケットやUDPパケットであり、以下、パケット通信を行うものとして説明をするを受信する。CPU1a及びCPU1bは、本実施例ではいずれもクアッドコアであるものとするが、これに限るものではない。また、メモリ2a及びメモリ2bは、例えばRAMRandomAccessMemory等である。メモリ2aは、DMAバッファ4a及びカーネル受信バッファ5aを備える。一方、メモリ2bは、DMAバッファ4b及びカーネル受信バッファ5bを備える。さらに、メモリ2aは、ノード管理テーブル6を有する。ノード管理テーブル6は、各CPU1に対応付けられたメモリ2に関する情報を保持するテーブルであり、メモリ2aに限らず、本情報処理装置のいずれかのメモリに1つ存在すればよい。ノード管理テーブル6の構造例については後述する。ここで、DMAバッファ4には、それぞれ一意に識別可能なDMAバッファ番号が割り振られている。本情報処理装置では、DMAバッファ4aのDMAバッファ番号が1であり、DMAバッファ4bのDMAバッファ番号が2であるものとする。このDMAバッファ番号は、後述するノード番号と一致する。NIC3aは、自装置が備える記憶手段において、送受信バッファ7a、振り分けテーブル8a及びDMAバッファ管理テーブル9aを備える。送受信バッファ7aは、NIC3aにおいて送受信するパケットを格納するバッファである。振り分けテーブル8aは、受信したパケットの振り分け先の特定に用いる、通信に関する識別情報と、当該識別情報で識別される通信で受信するパケットの処理を行うCPU1に対応付けられたメモリ2のDMAバッファ番号との対応関係以下、本実施形態の説明において、この対応関係を含んだ情報を振り分け情報というが設定されるテーブルである。ここで、本実施形態において、識別情報とは、パケットの通信に用いるポート番号及びプロトコル種別を含む情報であり、その詳細については後述する。DMAバッファ管理テーブル9aは、各メモリ2のDMAバッファ4において次のデータを書き込むべき場所を特定するアドレスが設定されるテーブルである。また、NIC3aは、処理を実行する制御部図の破線で囲われた部分としてそれぞれ機能する、振り分けテーブル設定処理部10a、振り分け処理部11a及びDMAコントローラ12aを備える。振り分けテーブル設定処理部10aは、OSによる指示に基づき、識別情報と、当該識別情報で識別される通信で受信するパケットの処理を行うCPU1に対応付けられたメモリ2のDMAバッファ番号とを対応付けた振り分け情報を、振り分けテーブル8aに設定する。振り分け処理部11aは、NIC3aにおいてパケットを受信したときに、振り分けテーブル8aの振り分け情報を参照して、当該パケットを転送するDMAバッファ4を特定する。DMAコントローラ12aは、振り分け処理部11aが特定したDMAバッファ4に対して受信パケットを転送する。このとき、DMAコントローラ12aは、DMAバッファ管理テーブル9aを参照し、DMAバッファ4における書き込み場所を特定した上で、DMAバッファ4に対してパケットを転送し、書き込みをする制御を行う。なお、これらの機構は、例えばFPGAFieldProgrammableGateArray等の集積回路である。各機構の具体的な処理内容については後述する。NIC3bも同様に、送受信バッファ7b、振り分けテーブル8b及びDMAバッファ管理テーブル9b、並びに、振り分けテーブル設定処理部10b、振り分け処理部11b及びDMAコントローラ12bを備える。[3.ソフトウェア構成]図3は、本実施形態に係る情報処理装置で実現されるソフトウェア構成図である。この図3は、図2に示したCPU1a又はCPU1bのいずれかにおいて実行されるソフトウェアの処理の機能をブロック図として示している。本情報処理装置では、OS21が、ネットワーク処理部22、スケジューリング処理部23、振り分けテーブル設定指示部24、DMAバッファ管理テーブル初期化部25を備える。また、本実施形態では、OS21の上で、アプリケーション31a及びアプリケーション31bが動作している。ネットワーク処理部22は、パケット通信に関連する様々な処理を行う。その具体例については後述する。スケジューリング処理部23は、アプリケーション31の処理を行うCPU1の割り当てを移動させる。例えば、スケジューリング処理部23は、CPU1の割当てを、負荷の高いCPU1からより負荷の低い他のCPU1に移動させる。振り分けテーブル設定指示部24は、ネットワーク処理部22の処理によってパケット通信に関する識別情報が決定したときに、当該識別情報を振り分けテーブル8に設定する指示を、NIC3の振り分けテーブル設定処理部10に送信する。また、振り分けテーブル設定指示部24は、スケジューリング処理部23がアプリケーション31の処理を行うCPU1の割当ての移動を行ったときに、そのアプリケーション31が行うパケット通信の識別情報で識別される通信で受信したパケットの振り分け情報を振り分けテーブル8に設定する指示を、NIC3の振り分けテーブル設定処理部10に送信する。換言すれば、振り分けテーブル設定指示部24は、すでに決定している識別情報で識別される通信で受信したデータの処理を行うCPU1の割当てが移動したときに、新たに当該処理を行うCPU1に対応付けられたメモリ2のDMAバッファ4に受信パケットが転送されるように、振り分け情報を振り分けテーブル8に設定し直す指示を送信する。DMAバッファ管理テーブル初期化部25は、OS21が起動されて初期化されたときに、DMAバッファ管理テーブル9のDMAバッファ番号を設定する。[4.データ構造例]次に、前述した本情報処理装置のNIC3及びメモリ2において設定される各種データの構造例等について説明する。図4は、NIC3が備える振り分けテーブル8の構造例を示す。振り分けテーブル8は、受信したパケットをどのDMAバッファ4に転送するべきかを、通信における識別情報毎に特定するのに用いられる振り分け情報が設定されるテーブルであり、識別情報、DMAバッファ番号及び時刻情報のカラムを有する。本実施形態において、識別情報は、前述したように、具体的には、ポート番号及びプロトコル種別のカラムを有する。ポート番号は、パケットの送信先である本情報処理装置で動作するアプリケーション31が用いるポート番号である。プロトコル種別は、当該パケットのデータに適用されたプロトコルTCP/UDPを示す。DMAバッファ番号は、識別情報で識別される通信で受信するデータを転送して書き込むDMAバッファ4を一意に特定するための番号である。時刻情報は、識別情報やDMAバッファ番号を本テーブルに書き込んだタイミングを示す情報である。図5は、メモリ2に包含されているDMAバッファ4の構造例を示すとともに、NIC3が備えるDMAバッファ管理テーブル9の構造例を示している。DMAバッファ4は、メモリ2毎に備えられており、さらに、NIC3毎にその領域が分けられている。メモリ2aの例を用いて説明すると、メモリ2aに包含されているDMAバッファ4aは、先頭アドレス[adr11]から領域サイズ[s11]の範囲の領域がNIC3a用の領域であり、先頭アドレス[adr21]から領域サイズ[s21]の範囲の領域がNIC3b用の領域である。メモリ2bのDMAバッファ4bも同様である。一方で、DMAバッファ管理テーブル9は、NIC3毎にそれぞれ保持されている。DMAバッファ管理テーブル9は、それぞれ自テーブルが備えられたNIC3が用いるDMAバッファ4の領域情報及び次にアクセスするべきアドレスを特定する情報を保持しており、DMAバッファ番号、先頭アドレス、領域サイズ、書き込みアドレス及び読み出しアドレスのカラムを有する。なお、DMAバッファ管理テーブル9では、いずれかのDMAバッファ番号がデフォルト設定されている。このデフォルト設定は、受信パケットの転送先のDMAバッファ4を特定できないときに受信パケットを転送するDMAバッファ4を予め決めておくものである。なお、図6は、DMAバッファ4の使用状態について図示したものである。第1段階初期状態ではDMAバッファ4が空の状態であるため、書き込みアドレス及び読み出しアドレスは、先頭アドレスと一致している。その後、第2段階として、例えば、NIC3がDMAバッファ4に4つのパケットを転送した場合、読み出しアドレスは引き続き先頭アドレスと同じである一方、書き込みアドレスは、先頭アドレスに対して4つのパケットのデータサイズを加算したアドレスとなる。さらに、第3段階として、例えば、アプリケーション31が当該4つのパケットを全て読み出した場合、読み出しアドレスは、4つのパケットのデータサイズ分だけ進むこととなり、結果として書き込みアドレスと同じとなる。また、第4段階として、NIC3がさらに10個のパケットを転送した場合であって、当該10個のパケットのデータサイズが書き込みアドレスからのDMAバッファ4の領域サイズを超えてしまう場合、NIC3は、再び先頭アドレスからパケットのデータ内容を書き込む。この場合、図に示すように、書き込みアドレスのほうが読み出しアドレスよりも前のアドレスとなる。図7は、情報処理装置におけるノードの態様例について示すとともに、メモリ2aに保持されているノード管理テーブル6の構造例を示している。本情報処理装置では、CPU1とこれに対応付けられたメモリ2の対を1つのノードとして取り扱う。例えば、CPU1a及びメモリ2aの対がノード番号1のノードであり、CPU1b及びメモリ2bの対がノード番号2のノードである。そして、ノード管理テーブル6は、DMAバッファ管理テーブル9を初期化する際に、どのDMAバッファ4がどのノードに属するかを特定する最終的にはDMAバッファ番号を特定するために用いられるテーブルである。ノード管理テーブル6は、ノード番号、メモリの先頭アドレス及びメモリの領域サイズのカラムを有する。なお、CPU1aの例で説明すると、メモリ2aの先頭アドレスが[ADR1]であり、メモリ2aのサイズが[LEN1]である。[5.OS及びNICにおける処理の詳細]次に、本情報処理装置のOS21及びNIC3において実行される処理について、図8~図13を参照しながら説明する。<5.1DMAバッファ管理テーブル初期化処理OS>図8は、OS21が備えるDMAバッファ管理テーブル初期化部25が実行する処理を示すフローチャートである。この処理は、OS21の初期化時に実行される。なお、この処理が実行される前提として、先にデバイスドライバ等が初期化され、DMAバッファ管理テーブル9に、DMAバッファ番号以外の情報すなわち、各DMAバッファの先頭アドレス、領域サイズ、書き込みアドレス及び読み出しアドレスのみが設定された状態となっている。DMAバッファ管理テーブル初期化部25は、以下の処理を、全てのNIC3を処理対象としてそれぞれ実行し、さらに、DMAバッファ管理テーブル9の全てのエントリを対象として実行する。S1では、DMAバッファ管理テーブル初期化部25は、DMAバッファ管理テーブル9を参照し、DMAバッファ4の先頭アドレス及び領域サイズを読み出す。S2では、DMAバッファ管理テーブル初期化部25は、DMAバッファ4の先頭アドレス及び領域サイズをキーとして、ノード管理テーブル6を検索する。そして、DMAバッファ領域を包含するノード番号を特定する。S3では、DMAバッファ管理テーブル初期化部25は、特定したノード番号を、DMAバッファ管理テーブル9のDMAバッファ番号に設定する。なお、この結果、ノード番号とDMAバッファ番号とが等しくなる。このDMAバッファ管理テーブル初期化処理により設定されたDMAバッファ番号が、以降の各処理で用いられることとなる。<5.2振り分けテーブル設定指示処理OS>図9及び図10は、OS21が備える振り分けテーブル設定指示部24が実行する処理及び当該処理の呼び出し処理を示す。振り分けテーブル設定指示部24の処理は、ネットワーク処理部22又はスケジューリング処理部23のいずれかによって呼び出される。図9Aは、ネットワーク処理部22から呼び出される場合を示す。この場合、具体的には、ネットワーク処理部22は、S11に示すように、データ通信で用いるポート番号及びプロトコル種別が決定したときに、振り分けテーブル設定指示処理を呼び出す。なお、具体例を挙げると、例えば、クライアントサーバ構成のシステムで、サーバがクライアントからのリクエストに応じて処理を行うようなケースでは、クライアント側はサーバにパケットを送信するとき、すなわち、送信パケットの送信元ポート番号、プロトコル種別が決定したときに、振り分けテーブル設定指示処理を呼び出す。サーバ側では、サーバが起動したとき、すなわち、システムコールの呼び出し時において、クライアントからパケットを受信するインタフェース並びにポート番号及びプロトコル種別が決定したときに、振り分けテーブル設定指示処理を呼び出す。一方、図9Bは、スケジューリング処理部23から呼び出される場合を示す。この場合、具体的には、スケジューリング処理部23は、S12に示すように、例えば、定期的なタイマ割り込み等が発生し、アプリケーション31の処理が割当てられたCPU1を移動したとき例えば、負荷の高いCPUから負荷の低いCPUに移動したとき等に、振り分けテーブル設定指示処理を呼び出す。図10は、ネットワーク処理部又はスケジューリング処理部から呼び出された振り分けテーブル設定指示部24の処理を示す。S21では、振り分けテーブル設定指示部24は、当該処理の呼び出し処理を実行したノードすなわち、現在この処理を実行しているCPU1を含むノードを特定し、そのノード番号を読み出す。なお、かかるノードの特定は、OS21が通常備える機能により行うことができる。S22では、振り分けテーブル設定指示部24は、読み出したノード番号を、識別情報で識別される通信で受信したパケットの転送先のDMAバッファ番号とする。なお、ここでいう識別情報とは、ネットワーク処理部22により振り分けテーブル設定処理が呼び出されたときには、新たに決定した識別情報を示す。一方で、スケジューリング処理部23によりアプリケーション31の処理の割当てのCPU1が移動したときには、当該アプリケーション31が行うデータ通信の識別情報を示す。S23では、振り分けテーブル設定指示部24が、識別情報を振り分けテーブル8に設定する対象とするNIC3を特定する。例えば、クライアントサーバ構成のシステムで、サーバがクライアントからのリクエストに応じて処理を行うようなケースでは、次のような処理になる。すなわち、振り分けテーブル設定指示部24がクライアント側で動作している場合は、パケット送信における通信の送信元IPアドレスに基づき、識別情報を設定すべきNIC3を特定する。一方、振り分けテーブル設定指示部24がサーバプログラムで動作している場合は、サーバがクライアントからのパケットを受信するNIC3を明示的に指定することによって特定する。S24では、振り分けテーブル設定指示部24が、パケット通信の識別情報を取得する。例えば、クライアントサーバ構成のシステムで、サーバがクライアントからのリクエストに応じて処理を行うようなケースでは、次のような処理になる。すなわち、振り分けテーブル設定指示部24がクライアントプログラムで動作している場合は、送信パケットの送信元ポート番号、プロトコル種別TCP/UDPを取得する。一方、振り分けテーブル設定指示部24がサーバプログラムで動作している場合は、システムコールの呼び出し時に、クライアントからパケットを受信するポート番号及びプロトコル種別TCP/UDPを明示的に指定したものを取得する。S25では、振り分けテーブル設定指示部24は、特定したNIC3の振り分けテーブル設定処理部10に対し、S24で取得したポート番号とプロトコル種別TCP/UDP、S22で決定したDMAバッファ番号とを対応付けた振り分け情報を振り分けテーブル8に設定するように、指示を送信する。<5.3振り分けテーブル設定処理NIC>図11は、NIC3が備える振り分けテーブル設定処理部10が実行する処理を示すフローチャートである。この処理は、OS21の振り分けテーブル設定指示部24から、振り分け情報を振り分けテーブル8に設定する指示を受信したときに実行される。S31では、振り分けテーブル設定処理部10は、OS21の振り分けテーブル設定指示部24より受信した振り分け情報に含まれる識別情報をキーとして、振り分けテーブル8を検索する。S32では、振り分けテーブル設定処理部10は、OS21の振り分けテーブル設定指示部24より受信した振り分け情報に含まれる識別情報と一致するエントリが振り分けテーブル8に有るか否かを判定する。一致するエントリがある場合にはYes、S33に進み、一致するエントリがない場合にはNo、S34に進む。S33では、振り分けテーブル設定処理部10は、振り分けテーブル8のエントリのうち、受信した振り分け情報に含まれる識別情報と一致したエントリのDMAバッファ番号を、受信したDMAバッファ番号で上書きする。なお、このように一致するエントリがあり、既存のエントリを上書きする場合とは、すでに当該識別情報で識別される通信が行われている状態であり、前述した振り分けテーブル設定指示の呼び出しのうち、スケジューリング処理部23から呼び出された場合である。S34では、振り分けテーブル設定処理部10は、受信した振り分け情報に含まれる識別情報及びDMAバッファ番号を、振り分けテーブル8の空きエントリに設定する。なお、このように一致するエントリがなく、新たなエントリを設定する場合とは、当該識別情報で識別される通信が新たに行われるということであり、前述した振り分けテーブル設定指示の呼び出しのうち、ネットワーク処理部22から呼び出された場合である。なお、振り分けテーブル8のエントリは有限個しかないため、このS34の処理において、空きエントリがない場合、古いエントリから削除して新規エントリを作成する。古いエントリの削除判断は、振り分けテーブル8の時刻情報に基づいて行うことが可能である。S35では、振り分けテーブル設定処理部10は、上書き又は新たに設定したエントリの時刻情報を最新の時刻情報で更新する。かかる振り分けテーブル設定処理により、識別情報とDMAバッファ番号との対応関係を含んだ振り分け情報が振り分けテーブル8に設定される。この振り分け情報が、振り分け処理において用いられることとなる。<5.4振り分け処理NIC>図12は、NIC3が備える振り分け処理部11及びDMAコントローラ12が実行する処理を示すフローチャートである。この処理は、NIC3が外部の情報処理装置等からパケットを受信したときに実行される。S41では、振り分け処理部11は、受信したパケットのパケットヘッダより識別情報の読み出し取得を行う。S42では、振り分け処理部11は、S41で読み出した識別情報をキーとして、振り分けテーブル8に設定された振り分け情報を検索する。S43では、振り分け処理部11は、パケットヘッダの識別情報と一致する振り分け情報のエントリが振り分けテーブル8に有るか否かを判定する。一致するエントリがある場合にはYes、S44に進み、一致するエントリがない場合にはNo、S46に進む。S44では、振り分け処理部11は、振り分けテーブル8のエントリのうち、パケットヘッダの識別情報と一致するエントリの時刻情報を最新の時刻情報で更新する。S45では、振り分け処理部11は、振り分けテーブル8のエントリのうち、パケットヘッダの識別情報と一致する振り分け情報のエントリのDMAバッファ番号を読み出す。なお、このS45とS44の処理はどちらを先に行ってもよい。S46では、振り分け処理部11は、DMAバッファ管理テーブル9におけるデフォルト設定のDMAバッファ番号を読み出す。S47では、DMAコントローラ12は、S45又はS46で振り分け処理部11が読み出したDMAバッファ番号のDMAバッファ4に、受信したパケットを転送する。このとき、DMAコントローラ12は、DMAバッファ管理テーブル9を参照して、転送先のDMAバッファ4における書き込みアドレスを特定し、その書き込みアドレスからパケットのデータ内容を書き込む。なお、書き込みが完了すると、図6の例で説明したように、DMAバッファ管理テーブル9の書き込みアドレスを変更する。ここで、かかる振り分け処理につき、図13に示すデータの具体例を参照しながら説明する。NIC3aの振り分け処理部11aでは、パケットを受信すると1、パケットヘッダから読み出した識別情報ここでは、送信先ポート番号[TCPx4]、プロトコル[TCP]をキーとして、振り分けテーブルを検索する2。図13の例の場合、振り分けテーブル8aの1エントリ目が一致する3。このため、振り分け処理部11aは、当該エントリの時刻情報を更新した上で4、DMAバッファ番号[1]を読み出す5。そして、DMAコントローラ12aは、メモリ2aに包含されるDMAバッファ4aDMAバッファ番号1に対してパケットを転送し、書き込みを行う6。[6.本実施形態の処理を適用した構成例]ここで、図14~図16を参照しながら、クライアントサーバ構成のシステムで、サーバがクライアントからのリクエストに応じて処理を行う例における、クライアント側及びサーバ側の構成例並びにアプリケーション31の実行態様等が異なる様々な構成例につき、全体の処理の流れを示して説明する。なお、DMAバッファ管理テーブル9の初期設定についての説明は省略する。<6.1クライアントプログラムにおける適用例>図14は、クライアント側において、NIC3が1つであり、クライアントプログラムとして動作するアプリケーション31が1つ実行されている例について示している。すなわち、この例では、NIC3aが設けられ、CPU1aで動作するアプリケーション31aが1つ実行されている。まず、本情報処理装置クライアントのアプリケーション31aのデータ通信につき、OS21のネットワーク処理部22がTCPパケットを他の情報処理装置サーバに送信する1。すると、振り分けテーブル設定指示部24が、NIC3aの振り分けテーブル8aに対して識別情報及びDMAバッファ番号を対応付けた振り分け情報の設定指示を送信する。そして、振り分けテーブル設定処理部10aが、振り分けテーブル8aに振り分け情報の設定を行う2。このときの振り分け情報のエントリは、図14の下部に示すようになっているとする。その後、クライアントのNIC3aのIPx1を送信元IPアドレス、ポート番号TCPx1を送信元ポート番号に指定したTCPパケットが、サーバで動作する、宛先IPアドレスIPx2、ポート番号TCPx2のアプリケーションに向けて送信されたとする3。このTCPパケットはIPアドレスIPx2、ポート番号TCPx2のアプリケーションで受信され、その応答が返ってくる。応答のTCPパケットの送信先ポート番号、プロトコル種別TCP/UDPは、パケットを送信したクライアントが指定したポート番号とプロトコルになる。応答を受信したNIC3aは、受信パケットから読み出したポート番号とプロトコル種別をキーに振り分けテーブル8aを検索する4。その結果、識別情報が、振り分けテーブル8aのエントリと一致する。このため、振り分け処理部11aは、パケットの送信先のDMAバッファ番号1、すなわち、DMAバッファ4aを特定する4。そして、DMAコントローラ12aが、DMAバッファ4aへ受信パケットを転送する5。このとき、この受信パケットの処理を行うのはアプリケーション31aの処理を行うCPU1aであるため、CPU1aが割り込み制御を行い、DMAバッファ4aに書き込まれた受信パケットを、カーネル受信バッファ5aにコピーする6。そして、アプリケーション31aにおいてこの受信パケットを受信し、処理を行う7。このとき、CPU1aからみてDMAバッファ4aを包含するメモリ2aはローカルメモリである。このため、CPU1aはリモートメモリに対するアクセスをする必要がない。<6.2サーバプログラムにおける適用例>図15は、サーバ側において、NIC3が2つであり、アプリケーション31が1つ実行されている例について示している。すなわち、この例では、NIC3a及びNIC3bが設けられ、CPU1aで動作するアプリケーション31aが1つ、サーバプログラムとして実行されている。アプリケーション31aでは、データを受信するインタフェースであるNIC3のIPアドレスを、ワイルドカードで指定している。なお、サーバが指定する受信インタフェースの指定は、ワイルドカードでなくても、ある特定のインタフェースを指定することも可能である。まず、本情報処理装置サーバのアプリケーション31aが起動すると、NIC3のIPアドレスをワイルドカードで指定しているため、振り分けテーブル設定指示部24は、NIC3a及びNIC3bの両方に対し、振り分け情報の設定指示を送信する1。その後、他の情報処理装置クライアントで動作する、ポート番号TCPx2を用いるアプリケーションから、IPアドレスIPx3のNICを介し、サーバのNIC3aのIPアドレスIPx1を送信先とし、ポート番号TCPx1を指定したTCPパケットが送信されたとする。このTCPパケットはNIC3aで受信され、その識別情報が、振り分けテーブル8aのエントリと一致する。このため、振り分け処理部11aは、パケットの送信先のDMAバッファ番号1、すなわち、DMAバッファ4aを特定する14。そして、DMAコントローラ12aが、DMAバッファ4aへ受信パケットを転送する15。このパケットは、CPU1aの処理によってカーネル受信バッファ5aにコピーされ16、アプリケーション31aがこの受信パケットを受信し、処理を行う17。一方で、同じく、クライアントで動作する、ポート番号TCPx2を用いるアプリケーションから、IPアドレスIPx3のNICを介し、サーバのNIC3bのIPアドレスIPx2を送信先とし、ポート番号TCPx1を指定したTCPパケットが送信されたとする。このTCPパケットはNIC3bで受信され、その識別情報が、振り分けテーブル8bのエントリと一致する。このため、振り分け処理部11bは、パケットの送信先のDMAバッファ番号1、すなわち、DMAバッファ4aを特定する24。そして、DMAコントローラ12bが、DMAバッファ4aへ受信パケットを転送する25。このパケットは、CPU1aの処理によってカーネル受信バッファ5aにコピーされ26、アプリケーション31aにおいてこの受信パケットを受信し、処理を行う27。このように、アプリケーション31aにおいて、データを受信するインタフェースであるNIC3のIPアドレスをワイルドカードで指定している場合においても、各NIC3で受信したパケットが、アプリケーション31aの処理を行うCPU1aのローカルメモリであるメモリ2aに転送される。<6.31つのNICを備え、1つのアプリケーションが実行されている例CPUの割当て移動が行われた場合>最後に、アプリケーション31の処理を行うCPU1の割当てが移動された場合における処理の流れについて、サーバ側の例を用いて図16を参照しながら説明する。図16の例では、初期状態として、本情報処理装置サーバのアプリケーション31aの処理を、CPU1aが実行している。そして、アプリケーション31aのデータ通信につき、図17の下部の[変更前]に示すように振り分けテーブル8aに、振り分け情報のエントリが設定されている。この状態において、他の情報処理装置クライアントのポート番号TCPx2を用いるアプリケーションから、IPアドレスIPx3のNICを介し、サーバのNIC3aのIPアドレスIPx1を送信先とし、ポート番号TCPx1を指定したTCPパケットが送信されたとする。このTCPパケットはNIC3aで受信され、その識別情報が、振り分けテーブル8aのエントリと一致する。このため、振り分け処理部11aは、パケットの送信先のDMAバッファ番号1、すなわち、DMAバッファ4aを特定する1。そして、DMAコントローラ12aが、DMAバッファ4aへ受信パケットを転送する2。なお、割り込み制御以降の処理については説明を省略する。ここで、アプリケーション31aの処理の割当てが、CPU1aからCPU1bに移動されたとする3。すると、OS21の振り分けテーブル設定指示部24が、アプリケーション31aが行うデータ通信につき、CPU1bに対応するメモリ2bのDMAバッファ4bの番号である2をDMAバッファ番号とした振り分け情報を振り分けテーブル8aに設定するように、NIC3aに指示を送信する4。NIC3aの振り分けテーブル設定処理部10aは、この指示に基づいて、振り分けテーブル8aの対象エントリを、図16の下部に示す[変更後]に示すように上書きする5。そして、かかる上書き処理以降に、NIC3aで当該エントリの識別情報で識別される通信のTCPパケットを受信すると、振り分け処理部11aは、振り分けテーブル8aに設定されたDMAバッファ番号2、すなわち、DMAバッファ4bを特定する6。そして、DMAコントローラ12aが、DMAバッファ4bへ受信パケットを転送する7。このように、アプリケーション31の処理を行うCPU1の割当てが移動されたときでも、パケットの転送先のDMAバッファ4が適切に切り替えられる。なお、上記構成例は本実施形態の処理を適用した構成例の一部に過ぎず、他の構成例においても本実施形態の処理を適用することが可能である。[7.実施形態による作用効果等]前述した実施形態によれば、OS21の振り分けテーブル設定指示部24により、識別情報と、当該識別情報で識別される通信で受信されるデータの処理を行うCPU1が属するノードのメモリ2に包含されるDMAバッファ4の番号とが対応付けられる。さらに、NIC3の振り分けテーブル設定処理部10により、かかる識別情報及びDMAバッファ番号が対応付けられた振り分け情報が振り分けテーブル8に設定される。そして、NIC3においてパケットを受信したときに、NIC3の振り分け処理部11が、振り分けテーブル8の振り分け情報を参照し、受信したパケットの転送先とするDMAバッファ4を特定する。そして、このDMAバッファ4にパケットが転送される。このため、当該パケットの処理を行うCPU1に対応付けられたメモリ2すなわち同じノードのメモリであり、ローカルメモリであるに包含されるDMAバッファ4にパケットが転送されることとなる。したがって、CPU1は、一連のパケットの受信処理においてリモートアクセスをする必要がなくなる。このため、リモートメモリに対するアクセス回数が低減され、情報処理装置の処理効率が向上する。また、本実施形態によれば、アプリケーション31による通信における識別情報が新たに決定したときには、振り分けテーブル8に、識別情報とDMAバッファ番号との対応関係を含んだ振り分け情報が新たに設定される。このため、その識別情報で識別される通信で受信したパケットを適切なDMAバッファ4に転送することが可能である。一方で、アプリケーション31の処理が割当てられるCPU1が移動されたときには、振り分けテーブル8において、そのアプリケーション31で行うデータ通信の識別情報に対応付けられたDMAバッファ番号が上書きされる。このように、稼働中にCPU1の割当ての移動が生じても、その移動に合わせて受信パケットの転送先のDMAバッファ4が切り替えられ、引き続き適切なDMAバッファ4にパケットを転送することが可能となる。なお、かりに振り分けテーブル8の振り分け情報に基づいて受信パケットの転送先が特定できなかった場合においても、DMAバッファ管理テーブル9に、デフォルト設定のDMAバッファ4が設定されている。このため、振り分け処理部11は、受信パケットを確実にいずれかのCPU1に振り分けることができる。以上の情報処理装置の機能的構成及び物理的構成は、上述の態様に限るものではなく、例えば、各機能や物理資源を統合して実装したり、逆に、さらに分散して実装したりすることも可能である。