(57)【要約】【課題】それぞれ記憶手段を備えた複数のプロセッサを備えた情報処理装置において、プロセッサがリモートメモリにアクセスする回数を低減させ、処理効率を向上させる。【解決手段】それぞれメモリ２を備えた複数のＣＰＵ１を備えた情報処理装置に実装されたＮＩＣ３が、次の構成を備える。すなわち、ＮＩＣ３は、通信に関する識別情報と、複数のＣＰＵ１のうち当該通信についてのデータ処理を行うＣＰＵ１が用いるメモリ２との対応関係を記憶する振り分けテーブル８を備える。そして、ＮＩＣ３は、受信したデータから当該データの通信に関する識別情報を取得し、振り分けテーブル８に記憶された対応関係に基づいて、複数のメモリ２のうち、取得した識別情報に対応するＣＰＵ１が備えるメモリ２を特定し、特定したメモリ２に対して、受信したデータの転送を行う。【選択図】  図２
2013069063.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ記憶手段を備えた複数のプロセッサを備えた情報処理装置の通信部として機能し得る通信ユニットにおいて、
通信に関する識別情報と、前記複数のプロセッサのうち該通信についてのデータ処理を行うプロセッサが用いる記憶手段との対応関係を記憶する記憶手段と、
受信したデータから該データの通信に関する識別情報を取得し、記憶された前記対応関係に基づいて、前記複数のプロセッサが備える複数の記憶手段のうち、取得した該識別情報に対応するプロセッサが備える記憶手段を特定し、特定した該記憶手段に対して、受信した前記データの転送を行う制御部と、
を備えたことを特徴とする通信ユニット。
【請求項２】
前記制御部は、前記対応関係の設定指示を受信したときに、該対応関係を、前記対応関係を記憶する記憶手段に設定する請求項１記載の通信ユニット。
【請求項３】
前記対応関係の設定指示は、前記識別情報が決定したとき、又は、すでに決定している識別情報で識別される通信についてのデータ処理を行うプロセッサの割当てが移動されたときに受信される請求項２記載の通信ユニット。
【請求項４】
前記制御部は、受信した前記データから取得した前記識別情報に対応付けられた記憶手段を、前記複数のプロセッサが備える複数の記憶手段から、前記対応関係に基づいて特定できないときには、前記複数のプロセッサが備える複数の記憶手段のうち、デフォルト設定された所定の記憶手段に対して、受信した前記データの転送を行う請求項１〜３のいずれか１つに記載の通信ユニット。
【請求項５】
それぞれ記憶手段を備えた複数のプロセッサを有するとともに、通信部として機能し得る通信ユニットを有する情報処理装置において、
前記プロセッサが、
通信に関する識別情報と、前記複数のプロセッサのうち該通信についてのデータ処理を行うプロセッサが用いる記憶手段との対応関係を前記通信ユニットに送信し、
前記通信ユニットが、
前記対応関係を受信したときに、該対応関係を記憶手段に設定し、
受信したデータから該データの通信に関する識別情報を取得し、記憶された前記対応関係に基づいて、前記複数のプロセッサが備える複数の記憶手段のうち、取得した該識別情報に対応するプロセッサが備える記憶手段を特定し、特定した該記憶手段に対して、受信した前記データの転送を行う
処理を実行する情報処理方法。
【請求項６】
前記プロセッサは、前記識別情報が決定したとき、又は、すでに決定している識別情報で識別される通信についてのデータ処理を行うプロセッサの割当てが移動されたときに、前記対応関係を前記通信ユニットに送信する請求項５記載の情報処理方法。
【請求項７】
前記通信ユニットは、受信した前記データから取得した前記識別情報に対応付けられた記憶手段を、前記複数のプロセッサが備える複数の記憶手段から、前記対応関係に基づいて特定できないときには、前記複数のプロセッサが備える複数の記憶手段のうち、デフォルト設定された所定の記憶手段に対して、受信した前記データの転送を行う請求項５又は６に記載の情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置のデータ通信において受信したデータを処理する技術に関する。
【背景技術】
【０００２】
プロセッサ及び当該プロセッサに対応付けられた記憶手段の対を複数有するＮＵＭＡ（Non-Uniform Memory Access）アーキテクチャが存在する。かかるアーキテクチャを適応した技術の一例では、ＣＰＵ（Central Processing Unit）に対応付けられたメモリのＤＭＡ（Direct Memory Access）バッファが複数設けられた構成を有する情報処理装置において、次のような処理を行う。すなわち、本技術例では、ＮＩＣ（Network Interface Card）において受信したパケットを、ＣＰＵに対応付けられたＤＭＡバッファに転送するときに、ＤＭＡ転送開始から一定の時間を経過した後又はＤＭＡ転送したフレームが一定のフレームに達すると、ＤＭＡ転送先を別のＤＭＡバッファに切り替える。こうすることで、複数のＤＭＡバッファへＤＭＡ転送が分散され、各ＤＭＡバッファに対応するＣＰＵでの並行処理が可能となる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２９９４３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、かかる技術例を適用した場合、情報処理装置において受信したデータが、必ずしもそのデータの処理を行うプロセッサに対応付けられた記憶手段に転送されるとは限らない。ここで、データ処理を行うプロセッサに対応付けられた記憶手段以外の他の記憶手段（すなわち、当該プロセッサからみていわゆるリモートメモリとなる）に対して受信データが転送されると、当該プロセッサは、リモートメモリに対してアクセスを行うこととなる。かかるリモートメモリへのアクセスは、ローカルメモリに対するアクセスと比べ、処理効率が悪い。
【０００５】
本技術は、１つの側面において、プロセッサ及び当該プロセッサに対応付けられた記憶手段の対を複数有する情報処理装置において、プロセッサがリモートメモリにアクセスする回数を低減させ、情報処理装置全体としての処理効率を向上させることを目的とする。
【課題を解決するための手段】
【０００６】
本技術における１つの側面では、それぞれ記憶手段を備えた複数のプロセッサを備えた情報処理装置の通信部として機能し得る通信ユニットが、通信に関する識別情報と、前記複数のプロセッサのうち該通信についてのデータ処理を行うプロセッサが用いる記憶手段との対応関係を記憶する記憶手段を備える。そして、通信ユニットは、受信したデータから該データの通信に関する識別情報を取得し、記憶された前記対応関係に基づいて、前記複数のプロセッサが備える複数の記憶手段のうち、取得した該識別情報に対応するプロセッサが備える記憶手段を特定し、特定した該記憶手段に対して、受信した前記データの転送を行う。
【発明の効果】
【０００７】
本技術における１つの側面によれば、プロセッサ及び当該プロセッサに対応付けられた記憶手段の対を複数有する情報処理装置において、プロセッサがリモートメモリにアクセ
スする回数を低減させ、情報処理装置全体としての処理効率を向上させることができる。
【図面の簡単な説明】
【０００８】
【図１】従来のメモリアクセスのアーキテクチャをＮＵＭＡモデルに適用した情報処理装置の説明図である。
【図２】情報処理装置のハードウェア構成の一例の説明図である。
【図３】情報処理装置のソフトウェア構成の一例の説明図である。
【図４】振り分けテーブルの構造の一例の説明図である。
【図５】ＤＭＡバッファの構造の一例及びＤＭＡバッファ管理テーブルの構造の一例の説明図である。
【図６】ＤＭＡバッファの使用状態の一例の説明図である。
【図７】情報処理装置におけるノードの態様の一例及びノード管理テーブルの構造の一例の説明図である。
【図８】ＤＭＡバッファ管理テーブル初期化処理の一例のフローチャートである。
【図９】振り分けテーブル設定指示処理の呼び出し処理の一例を示すフローチャートである。
【図１０】振り分けテーブル設定指示処理の一例を示すフローチャートである。
【図１１】振り分けテーブル設定処理の一例を示すフローチャートである。
【図１２】振り分け処理の一例を示すフローチャートである。
【図１３】振り分け処理の具体例を示す説明図である。
【図１４】クライアント・サーバ構成におけるクライアント側の実行態様の一構成例における全体処理を示す説明図である。
【図１５】クライアント・サーバ構成におけるサーバ側の実行態様の一構成例における全体処理を示す説明図である。
【図１６】ＣＰＵの割り当てが移動した例を示す説明図である。
【発明を実施するための形態】
【０００９】
［１．実施形態の概要］
本明細書で説明する技術は、それぞれ記憶手段を備えた複数のプロセッサを備えた情報処理装置において、各プロセッサが自身に対応付けられた記憶手段にアクセスするアーキテクチャ（ＮＵＭＡモデル）におけるデータ処理に関するものである。具体的には、情報処理装置が備える通信ユニットがデータを受信したときに、データ通信における識別情報に応じて、受信データを、当該受信データの処理を行うプロセッサに対応付けられた記憶手段に転送するようにする。こうすることにより、各プロセッサがリモートメモリにアクセスする回数を低減させ、情報処理装置全体としての処理効率を向上させることができる。
【００１０】
ここで、かかる技術に関連する背景技術の一例について説明する。従来、複数のプロセッサを備えた情報処理装置におけるメモリアクセスのアーキテクチャは、複数のプロセッサがノースブリッジを介して１つのメモリを共有するモデルが一般的であった。しかし、近年におけるメモリアクセスのアーキテクチャは、ＮＵＭＡモデルに移行しつつある。
【００１１】
図１は、従来のメモリアクセスのアーキテクチャをＮＵＭＡモデルに適用した情報処理装置の一例の説明図である。
かかる情報処理装置の例では、ＣＰＵ９１ａ及びＣＰＵ９１ｂが、バスを介してノースブリッジ９１３に接続されている。ＣＰＵ９１ａにはメモリ９２ａが対応付けられ、ＣＰＵ９１ｂにはメモリ９２ｂが対応付けられている。さらに、サウスブリッジ９１４に、バスを介してＮＩＣ９３ａ及びＮＩＣ９３ｂが接続されている。ＮＩＣ９３ａ及びＮＩＣ９３ｂはそれぞれ、ＬＡＮ（Local Area Network）を介して外部の情報処理装置等（図示省略）と接続されており、ＴＣＰパケットやＵＤＰパケットのデータを受信する。また、Ｏ
Ｓ（Operating System）９２１上では、アプリケーション９３１ａ及びアプリケーション９３１ｂが動作している。ここでは、ＣＰＵ９１ａがアプリケーション９３１ａを処理し、ＣＰＵ９１ｂがアプリケーション９３１ｂを処理しているものとする。なお、本明細書の説明において、例えば、単にＣＰＵ９１と表記した場合には、ＣＰＵ９１ａ及びＣＰＵ９１ｂの少なくともいずれか一方を示すものとする。以下の説明において、他の構成要素についても全て同様である。
【００１２】
本情報処理装置の例では、メモリ９２ａに、ＮＩＣ９３で受信したパケットが転送されるＤＭＡバッファ９４ａが設けられている。さらに、メモリ９２ａは、ＤＭＡバッファ９４ａにパケットが転送されると、割り込みハンドラによって当該パケットのデータ内容がコピーされるカーネル受信バッファ９５ａを備える。また、メモリ９２ｂも同様に、ＤＭＡバッファ９４ｂ及びカーネル受信バッファ９５ｂを備える。
【００１３】
また、ＮＩＣ９３ａは、送受信するパケットを格納する送受信バッファ９６ａ及びＤＭＡバッファ９４ａへのパケット転送の制御を行うＤＭＡコントローラ９７ａを備える。同様に、ＮＩＣ９３ｂも、送受信バッファ９６ｂ及びＤＭＡコントローラ９７ｂを備える。
【００１４】
ここで、本情報処理装置のＮＩＣ９３ａ及びＮＩＣ９３ｂは、受信したパケットをどのＤＭＡバッファ９４に転送するかを適切に制御する機構を有していない。このため、パケットがどのＣＰＵ９１で処理されるものであるかに関係なく、特定のＤＭＡバッファ９４にパケットの転送が集中する現象が発生し得る。
【００１５】
例えば、ＮＩＣ９３ａがパケットを受信する（1-1）。このとき、ＤＭＡコントローラ９７ａが、送受信バッファ９６ａに格納した当該受信パケットを、メモリ９２ｂのＤＭＡバッファ９４ｂに転送するとする（1-2）。なお、より具体的には、ＮＩＣ９３ａは、ＭＳＩ（Message Signaled Interrupt）を、ＣＰＵ９１ごとに設けられた割り込み制御レジスタ（図示省略）に送信する。同様に、ＮＩＣ９３ｂも、パケットを受信すると（2-1）、送受信バッファ９６ｂに格納した当該受信パケットを、メモリ９２ｂのＤＭＡバッファ９４ｂに転送する（2-2）。
【００１６】
かかる場合、いずれの受信パケットも、割り込みハンドラの処理によって、カーネル受信バッファ９５ｂにコピーされる（1-3,2-3）。カーネル受信バッファ９５ｂにパケットのデータ内容がコピーされると、受信パケットのプロトコルの階層（データリンク層、ＩＰ層、ＴＣＰ層等）ごとにプロトコル処理がなされ、最終的には、アプリケーション９３１が当該受信パケットを受信し、処理することとなる（1-4,2-4）。これらの一連のデータ受信処理は、受信パケットの処理を行うアプリケーション９３１を実行するＣＰＵ９１が行う。
【００１７】
ここで、受信したパケットがＣＰＵ９１ａによって処理されるものであるときには、ＣＰＵ９１ａは、ＣＰＵ９１ｂを介してリモートメモリであるメモリ９２ｂにアクセスし、割り込み制御処理を行って、メモリ９２ｂのＤＭＡバッファ９４ｂのパケットをカーネル受信バッファ９５ｂにコピーすることとなる。このようにリモートメモリに対してアクセスすることは、ローカルメモリに対するアクセスよりも時間がかかり、処理効率が低下する。
【００１８】
このため、本明細書で説明する実施形態においては、複数のメモリのそれぞれに、受信パケットを書き込むＤＭＡバッファを設けた構成において、通信における識別情報に応じて、受信データを当該受信データの処理を行うＣＰＵに対応付けられたＤＭＡバッファに転送する機能を、ＮＩＣに設ける。これにより、リモートメモリに対するアクセス回数を低減させ、処理効率を向上させる。以下、かかる技術を実現する実施形態について詳細に
説明する。
【００１９】
［２．ハードウェア構成］
図２は、本実施形態に係る情報処理装置のハードウェア構成図である。
本実施形態に係る情報処理装置は、プロセッサの一例であるＣＰＵ１ａ及びＣＰＵ１ｂが、バスを介してノースブリッジ１３に接続されている。ＣＰＵ１ａはメモリ２ａを備え、ＣＰＵ１ｂはメモリ２ｂを備えている。本実施形態においては、より具体的には、ＣＰＵ１ａにはメモリ２ａが対応付けられ、ＣＰＵ１ｂにはメモリ２ｂが対応付けられている。さらに、サウスブリッジ１４に、バスを介し、通信ユニットの一例であるＮＩＣ３ａ及びＮＩＣ３ｂが接続されている。ＮＩＣ３ａ及びＮＩＣ３ｂはそれぞれ、通信ネットワーク（例えばＬＡＮ等である）を介して外部の情報処理装置等と接続されており、外部の情報処理装置等からデータ（例えば、ＴＣＰパケットやＵＤＰパケットであり、以下、パケット通信を行うものとして説明をする）を受信する。ＣＰＵ１ａ及びＣＰＵ１ｂは、本実施例ではいずれもクアッドコアであるものとするが、これに限るものではない。また、メモリ２ａ及びメモリ２ｂは、例えばＲＡＭ（Random Access Memory）等である。
【００２０】
メモリ２ａは、ＤＭＡバッファ４ａ及びカーネル受信バッファ５ａを備える。一方、メモリ２ｂは、ＤＭＡバッファ４ｂ及びカーネル受信バッファ５ｂを備える。さらに、メモリ２ａは、ノード管理テーブル６を有する。ノード管理テーブル６は、各ＣＰＵ１に対応付けられたメモリ２に関する情報を保持するテーブルであり、メモリ２ａに限らず、本情報処理装置のいずれかのメモリに１つ存在すればよい。ノード管理テーブル６の構造例については後述する。ここで、ＤＭＡバッファ４には、それぞれ一意に識別可能なＤＭＡバッファ番号が割り振られている。本情報処理装置では、ＤＭＡバッファ４ａのＤＭＡバッファ番号が１であり、ＤＭＡバッファ４ｂのＤＭＡバッファ番号が２であるものとする。このＤＭＡバッファ番号は、後述するノード番号と一致する。
【００２１】
ＮＩＣ３ａは、自装置が備える記憶手段において、送受信バッファ７ａ、振り分けテーブル８ａ及びＤＭＡバッファ管理テーブル９ａを備える。
送受信バッファ７ａは、ＮＩＣ３ａにおいて送受信するパケットを格納するバッファである。
【００２２】
振り分けテーブル８ａは、受信したパケットの振り分け先の特定に用いる、通信に関する識別情報と、当該識別情報で識別される通信で受信するパケットの処理を行うＣＰＵ１に対応付けられたメモリ２のＤＭＡバッファ番号との対応関係（以下、本実施形態の説明において、この対応関係を含んだ情報を振り分け情報という）が設定されるテーブルである。ここで、本実施形態において、識別情報とは、パケットの通信に用いるポート番号及びプロトコル種別を含む情報であり、その詳細については後述する。
【００２３】
ＤＭＡバッファ管理テーブル９ａは、各メモリ２のＤＭＡバッファ４において次のデータを書き込むべき場所を特定するアドレスが設定されるテーブルである。
また、ＮＩＣ３ａは、処理を実行する制御部（図の破線で囲われた部分）としてそれぞれ機能する、振り分けテーブル設定処理部１０ａ、振り分け処理部１１ａ及びＤＭＡコントローラ１２ａを備える。
【００２４】
振り分けテーブル設定処理部１０ａは、ＯＳによる指示に基づき、識別情報と、当該識別情報で識別される通信で受信するパケットの処理を行うＣＰＵ１に対応付けられたメモリ２のＤＭＡバッファ番号とを対応付けた振り分け情報を、振り分けテーブル８ａに設定する。
【００２５】
振り分け処理部１１ａは、ＮＩＣ３ａにおいてパケットを受信したときに、振り分けテ
ーブル８ａの振り分け情報を参照して、当該パケットを転送するＤＭＡバッファ４を特定する。
【００２６】
ＤＭＡコントローラ１２ａは、振り分け処理部１１ａが特定したＤＭＡバッファ４に対して受信パケットを転送する。このとき、ＤＭＡコントローラ１２ａは、ＤＭＡバッファ管理テーブル９ａを参照し、ＤＭＡバッファ４における書き込み場所を特定した上で、ＤＭＡバッファ４に対してパケットを転送し、書き込みをする制御を行う。
【００２７】
なお、これらの機構は、例えばＦＰＧＡ（Field Programmable Gate Array）等の集積回路である。各機構の具体的な処理内容については後述する。
ＮＩＣ３ｂも同様に、送受信バッファ７ｂ、振り分けテーブル８ｂ及びＤＭＡバッファ管理テーブル９ｂ、並びに、振り分けテーブル設定処理部１０ｂ、振り分け処理部１１ｂ及びＤＭＡコントローラ１２ｂを備える。
【００２８】
［３．ソフトウェア構成］
図３は、本実施形態に係る情報処理装置で実現されるソフトウェア構成図である。この図３は、図２に示したＣＰＵ１ａ又はＣＰＵ１ｂのいずれかにおいて実行されるソフトウェアの処理の機能をブロック図として示している。
【００２９】
本情報処理装置では、ＯＳ２１が、ネットワーク処理部２２、スケジューリング処理部２３、振り分けテーブル設定指示部２４、ＤＭＡバッファ管理テーブル初期化部２５を備える。また、本実施形態では、ＯＳ２１の上で、アプリケーション３１ａ及びアプリケーション３１ｂが動作している。
【００３０】
ネットワーク処理部２２は、パケット通信に関連する様々な処理を行う。その具体例については後述する。
スケジューリング処理部２３は、アプリケーション３１の処理を行うＣＰＵ１の割り当てを移動させる。例えば、スケジューリング処理部２３は、ＣＰＵ１の割当てを、負荷の高いＣＰＵ１からより負荷の低い他のＣＰＵ１に移動させる。
【００３１】
振り分けテーブル設定指示部２４は、ネットワーク処理部２２の処理によってパケット通信に関する識別情報が決定したときに、当該識別情報を振り分けテーブル８に設定する指示を、ＮＩＣ３の振り分けテーブル設定処理部１０に送信する。また、振り分けテーブル設定指示部２４は、スケジューリング処理部２３がアプリケーション３１の処理を行うＣＰＵ１の割当ての移動を行ったときに、そのアプリケーション３１が行うパケット通信の識別情報で識別される通信で受信したパケットの振り分け情報を振り分けテーブル８に設定する指示を、ＮＩＣ３の振り分けテーブル設定処理部１０に送信する。換言すれば、振り分けテーブル設定指示部２４は、すでに決定している識別情報で識別される通信で受信したデータの処理を行うＣＰＵ１の割当てが移動したときに、新たに当該処理を行うＣＰＵ１に対応付けられたメモリ２のＤＭＡバッファ４に受信パケットが転送されるように、振り分け情報を振り分けテーブル８に設定し直す指示を送信する。
【００３２】
ＤＭＡバッファ管理テーブル初期化部２５は、ＯＳ２１が起動されて初期化されたときに、ＤＭＡバッファ管理テーブル９のＤＭＡバッファ番号を設定する。
【００３３】
［４．データ構造例］
次に、前述した本情報処理装置のＮＩＣ３及びメモリ２において設定される各種データの構造例等について説明する。
図４は、ＮＩＣ３が備える振り分けテーブル８の構造例を示す。振り分けテーブル８は、受信したパケットをどのＤＭＡバッファ４に転送するべきかを、通信における識別情報
毎に特定するのに用いられる振り分け情報が設定されるテーブルであり、識別情報、ＤＭＡバッファ番号及び時刻情報のカラムを有する。本実施形態において、識別情報は、前述したように、具体的には、ポート番号及びプロトコル種別のカラムを有する。
【００３４】
ポート番号は、パケットの送信先である本情報処理装置で動作するアプリケーション３１が用いるポート番号である。プロトコル種別は、当該パケットのデータに適用されたプロトコル（ＴＣＰ／ＵＤＰ）を示す。
【００３５】
ＤＭＡバッファ番号は、識別情報で識別される通信で受信するデータを転送して書き込むＤＭＡバッファ４を一意に特定するための番号である。時刻情報は、識別情報やＤＭＡバッファ番号を本テーブルに書き込んだタイミングを示す情報である。
【００３６】
図５は、メモリ２に包含されているＤＭＡバッファ４の構造例を示すとともに、ＮＩＣ３が備えるＤＭＡバッファ管理テーブル９の構造例を示している。
ＤＭＡバッファ４は、メモリ２毎に備えられており、さらに、ＮＩＣ３毎にその領域が分けられている。メモリ２ａの例を用いて説明すると、メモリ２ａに包含されているＤＭＡバッファ４ａは、先頭アドレス［adr11］から領域サイズ［s11］の範囲の領域がＮＩＣ３ａ用の領域であり、先頭アドレス［adr21］から領域サイズ［s21］の範囲の領域がＮＩＣ３ｂ用の領域である。メモリ２ｂのＤＭＡバッファ４ｂも同様である。
【００３７】
一方で、ＤＭＡバッファ管理テーブル９は、ＮＩＣ３毎にそれぞれ保持されている。ＤＭＡバッファ管理テーブル９は、それぞれ自テーブルが備えられたＮＩＣ３が用いるＤＭＡバッファ４の領域情報及び次にアクセスするべきアドレスを特定する情報を保持しており、ＤＭＡバッファ番号、先頭アドレス、領域サイズ、書き込みアドレス及び読み出しアドレスのカラムを有する。なお、ＤＭＡバッファ管理テーブル９では、いずれかのＤＭＡバッファ番号がデフォルト設定されている。このデフォルト設定は、受信パケットの転送先のＤＭＡバッファ４を特定できないときに受信パケットを転送するＤＭＡバッファ４を予め決めておくものである。
【００３８】
なお、図６は、ＤＭＡバッファ４の使用状態について図示したものである。第１段階（初期状態）ではＤＭＡバッファ４が空の状態であるため、書き込みアドレス及び読み出しアドレスは、先頭アドレスと一致している。その後、第２段階として、例えば、ＮＩＣ３がＤＭＡバッファ４に４つのパケットを転送した場合、読み出しアドレスは引き続き先頭アドレスと同じである一方、書き込みアドレスは、先頭アドレスに対して４つのパケットのデータサイズを加算したアドレスとなる。さらに、第３段階として、例えば、アプリケーション３１が当該４つのパケットを全て読み出した場合、読み出しアドレスは、４つのパケットのデータサイズ分だけ進むこととなり、結果として書き込みアドレスと同じとなる。また、第４段階として、ＮＩＣ３がさらに１０個のパケットを転送した場合であって、当該１０個のパケットのデータサイズが書き込みアドレスからのＤＭＡバッファ４の領域サイズを超えてしまう場合、ＮＩＣ３は、再び先頭アドレスからパケットのデータ内容を書き込む。この場合、図に示すように、書き込みアドレスのほうが読み出しアドレスよりも前のアドレスとなる。
【００３９】
図７は、情報処理装置におけるノードの態様例について示すとともに、メモリ２ａに保持されているノード管理テーブル６の構造例を示している。
本情報処理装置では、ＣＰＵ１とこれに対応付けられたメモリ２の対を１つのノードとして取り扱う。例えば、ＣＰＵ１ａ及びメモリ２ａの対がノード番号１のノードであり、ＣＰＵ１ｂ及びメモリ２ｂの対がノード番号２のノードである。
【００４０】
そして、ノード管理テーブル６は、ＤＭＡバッファ管理テーブル９を初期化する際に、
どのＤＭＡバッファ４がどのノードに属するかを特定する（最終的にはＤＭＡバッファ番号を特定する）ために用いられるテーブルである。ノード管理テーブル６は、ノード番号、メモリの先頭アドレス及びメモリの領域サイズのカラムを有する。なお、ＣＰＵ１ａの例で説明すると、メモリ２ａの先頭アドレスが［ADR1］であり、メモリ２ａのサイズが［LEN1］である。
【００４１】
［５．ＯＳ及びＮＩＣにおける処理の詳細］
次に、本情報処理装置のＯＳ２１及びＮＩＣ３において実行される処理について、図８〜図１３を参照しながら説明する。
【００４２】
＜５．１  ＤＭＡバッファ管理テーブル初期化処理（ＯＳ）＞
図８は、ＯＳ２１が備えるＤＭＡバッファ管理テーブル初期化部２５が実行する処理を示すフローチャートである。この処理は、ＯＳ２１の初期化時に実行される。なお、この処理が実行される前提として、先にデバイスドライバ等が初期化され、ＤＭＡバッファ管理テーブル９に、ＤＭＡバッファ番号以外の情報（すなわち、各ＤＭＡバッファの先頭アドレス、領域サイズ、書き込みアドレス及び読み出しアドレス）のみが設定された状態となっている。ＤＭＡバッファ管理テーブル初期化部２５は、以下の処理を、全てのＮＩＣ３を処理対象としてそれぞれ実行し、さらに、ＤＭＡバッファ管理テーブル９の全てのエントリを対象として実行する。
【００４３】
Ｓ１では、ＤＭＡバッファ管理テーブル初期化部２５は、ＤＭＡバッファ管理テーブル９を参照し、ＤＭＡバッファ４の先頭アドレス及び領域サイズを読み出す。
Ｓ２では、ＤＭＡバッファ管理テーブル初期化部２５は、ＤＭＡバッファ４の先頭アドレス及び領域サイズをキーとして、ノード管理テーブル６を検索する。そして、ＤＭＡバッファ領域を包含するノード番号を特定する。
【００４４】
Ｓ３では、ＤＭＡバッファ管理テーブル初期化部２５は、特定したノード番号を、ＤＭＡバッファ管理テーブル９のＤＭＡバッファ番号に設定する。なお、この結果、ノード番号とＤＭＡバッファ番号とが等しくなる。
このＤＭＡバッファ管理テーブル初期化処理により設定されたＤＭＡバッファ番号が、以降の各処理で用いられることとなる。
【００４５】
＜５．２  振り分けテーブル設定指示処理（ＯＳ）＞
図９及び図１０は、ＯＳ２１が備える振り分けテーブル設定指示部２４が実行する処理及び当該処理の呼び出し処理を示す。振り分けテーブル設定指示部２４の処理は、ネットワーク処理部２２又はスケジューリング処理部２３のいずれかによって呼び出される。
【００４６】
図９（Ａ）は、ネットワーク処理部２２から呼び出される場合を示す。この場合、具体的には、ネットワーク処理部２２は、Ｓ１１に示すように、データ通信で用いるポート番号及びプロトコル種別が決定したときに、振り分けテーブル設定指示処理を呼び出す。なお、具体例を挙げると、例えば、クライアント・サーバ構成のシステムで、サーバがクライアントからのリクエストに応じて処理を行うようなケースでは、クライアント側はサーバにパケットを送信するとき、すなわち、送信パケットの送信元ポート番号、プロトコル種別が決定したときに、振り分けテーブル設定指示処理を呼び出す。サーバ側では、サーバが起動したとき、すなわち、システムコールの呼び出し時において、クライアントからパケットを受信するインタフェース並びにポート番号及びプロトコル種別が決定したときに、振り分けテーブル設定指示処理を呼び出す。
【００４７】
一方、図９（Ｂ）は、スケジューリング処理部２３から呼び出される場合を示す。この場合、具体的には、スケジューリング処理部２３は、Ｓ１２に示すように、例えば、定期的なタイマ割り込み等が発生し、アプリケーション３１の処理が割当てられたＣＰＵ１を
移動したとき（例えば、負荷の高いＣＰＵから負荷の低いＣＰＵに移動したとき等）に、振り分けテーブル設定指示処理を呼び出す。
【００４８】
図１０は、ネットワーク処理部又はスケジューリング処理部から呼び出された振り分けテーブル設定指示部２４の処理を示す。
Ｓ２１では、振り分けテーブル設定指示部２４は、当該処理の呼び出し処理を実行したノード（すなわち、現在この処理を実行しているＣＰＵ１を含むノード）を特定し、そのノード番号を読み出す。なお、かかるノードの特定は、ＯＳ２１が通常備える機能により行うことができる。
【００４９】
Ｓ２２では、振り分けテーブル設定指示部２４は、読み出したノード番号を、識別情報で識別される通信で受信したパケットの転送先のＤＭＡバッファ番号とする。なお、ここでいう識別情報とは、ネットワーク処理部２２により振り分けテーブル設定処理が呼び出されたときには、新たに決定した識別情報を示す。一方で、スケジューリング処理部２３によりアプリケーション３１の処理の割当てのＣＰＵ１が移動したときには、当該アプリケーション３１が行うデータ通信の識別情報を示す。
【００５０】
Ｓ２３では、振り分けテーブル設定指示部２４が、識別情報を振り分けテーブル８に設定する対象とするＮＩＣ３を特定する。例えば、クライアント・サーバ構成のシステムで、サーバがクライアントからのリクエストに応じて処理を行うようなケースでは、次のような処理になる。すなわち、振り分けテーブル設定指示部２４がクライアント側で動作している場合は、パケット送信における通信の送信元ＩＰアドレスに基づき、識別情報を設定すべきＮＩＣ３を特定する。一方、振り分けテーブル設定指示部２４がサーバプログラムで動作している場合は、サーバがクライアントからのパケットを受信するＮＩＣ３を明示的に指定することによって特定する。
【００５１】
Ｓ２４では、振り分けテーブル設定指示部２４が、パケット通信の識別情報を取得する。例えば、クライアント・サーバ構成のシステムで、サーバがクライアントからのリクエストに応じて処理を行うようなケースでは、次のような処理になる。すなわち、振り分けテーブル設定指示部２４がクライアントプログラムで動作している場合は、送信パケットの送信元ポート番号、プロトコル種別（ＴＣＰ／ＵＤＰ）を取得する。一方、振り分けテーブル設定指示部２４がサーバプログラムで動作している場合は、システムコールの呼び出し時に、クライアントからパケットを受信するポート番号及びプロトコル種別（ＴＣＰ／ＵＤＰ）を明示的に指定したものを取得する。
【００５２】
Ｓ２５では、振り分けテーブル設定指示部２４は、特定したＮＩＣ３の振り分けテーブル設定処理部１０に対し、Ｓ２４で取得したポート番号とプロトコル種別（ＴＣＰ／ＵＤＰ）、Ｓ２２で決定したＤＭＡバッファ番号とを対応付けた振り分け情報を振り分けテーブル８に設定するように、指示を送信する。
【００５３】
＜５．３  振り分けテーブル設定処理（ＮＩＣ）＞
図１１は、ＮＩＣ３が備える振り分けテーブル設定処理部１０が実行する処理を示すフローチャートである。この処理は、ＯＳ２１の振り分けテーブル設定指示部２４から、振り分け情報を振り分けテーブル８に設定する指示を受信したときに実行される。
【００５４】
Ｓ３１では、振り分けテーブル設定処理部１０は、ＯＳ２１の振り分けテーブル設定指示部２４より受信した振り分け情報に含まれる識別情報をキーとして、振り分けテーブル８を検索する。
【００５５】
Ｓ３２では、振り分けテーブル設定処理部１０は、ＯＳ２１の振り分けテーブル設定指示部２４より受信した振り分け情報に含まれる識別情報と一致するエントリが振り分けテ
ーブル８に有るか否かを判定する。一致するエントリがある場合には（Ｙｅｓ）、Ｓ３３に進み、一致するエントリがない場合には（Ｎｏ）、Ｓ３４に進む。
【００５６】
Ｓ３３では、振り分けテーブル設定処理部１０は、振り分けテーブル８のエントリのうち、受信した振り分け情報に含まれる識別情報と一致したエントリのＤＭＡバッファ番号を、受信したＤＭＡバッファ番号で上書きする。なお、このように一致するエントリがあり、既存のエントリを上書きする場合とは、すでに当該識別情報で識別される通信が行われている状態であり、前述した振り分けテーブル設定指示の呼び出しのうち、スケジューリング処理部２３から呼び出された場合である。
【００５７】
Ｓ３４では、振り分けテーブル設定処理部１０は、受信した振り分け情報に含まれる識別情報及びＤＭＡバッファ番号を、振り分けテーブル８の空きエントリに設定する。なお、このように一致するエントリがなく、新たなエントリを設定する場合とは、当該識別情報で識別される通信が新たに行われるということであり、前述した振り分けテーブル設定指示の呼び出しのうち、ネットワーク処理部２２から呼び出された場合である。
【００５８】
なお、振り分けテーブル８のエントリは有限個しかないため、このＳ３４の処理において、空きエントリがない場合、古いエントリから削除して新規エントリを作成する。古いエントリの削除判断は、振り分けテーブル８の時刻情報に基づいて行うことが可能である。
【００５９】
Ｓ３５では、振り分けテーブル設定処理部１０は、上書き又は新たに設定したエントリの時刻情報を最新の時刻情報で更新する。
かかる振り分けテーブル設定処理により、識別情報とＤＭＡバッファ番号との対応関係を含んだ振り分け情報が振り分けテーブル８に設定される。この振り分け情報が、振り分け処理において用いられることとなる。
【００６０】
＜５．４  振り分け処理（ＮＩＣ）＞
図１２は、ＮＩＣ３が備える振り分け処理部１１及びＤＭＡコントローラ１２が実行する処理を示すフローチャートである。この処理は、ＮＩＣ３が外部の情報処理装置等からパケットを受信したときに実行される。
【００６１】
Ｓ４１では、振り分け処理部１１は、受信したパケットのパケットヘッダより識別情報の読み出し（取得）を行う。
Ｓ４２では、振り分け処理部１１は、Ｓ４１で読み出した識別情報をキーとして、振り分けテーブル８に設定された振り分け情報を検索する。
【００６２】
Ｓ４３では、振り分け処理部１１は、パケットヘッダの識別情報と一致する振り分け情報のエントリが振り分けテーブル８に有るか否かを判定する。一致するエントリがある場合には（Ｙｅｓ）、Ｓ４４に進み、一致するエントリがない場合には（Ｎｏ）、Ｓ４６に進む。
【００６３】
Ｓ４４では、振り分け処理部１１は、振り分けテーブル８のエントリのうち、パケットヘッダの識別情報と一致するエントリの時刻情報を最新の時刻情報で更新する。
Ｓ４５では、振り分け処理部１１は、振り分けテーブル８のエントリのうち、パケットヘッダの識別情報と一致する振り分け情報のエントリのＤＭＡバッファ番号を読み出す。なお、このＳ４５とＳ４４の処理はどちらを先に行ってもよい。
【００６４】
Ｓ４６では、振り分け処理部１１は、ＤＭＡバッファ管理テーブル９におけるデフォルト設定のＤＭＡバッファ番号を読み出す。
Ｓ４７では、ＤＭＡコントローラ１２は、Ｓ４５又はＳ４６で振り分け処理部１１が読
み出したＤＭＡバッファ番号のＤＭＡバッファ４に、受信したパケットを転送する。このとき、ＤＭＡコントローラ１２は、ＤＭＡバッファ管理テーブル９を参照して、転送先のＤＭＡバッファ４における書き込みアドレスを特定し、その書き込みアドレスからパケットのデータ内容を書き込む。なお、書き込みが完了すると、図６の例で説明したように、ＤＭＡバッファ管理テーブル９の書き込みアドレスを変更する。
【００６５】
ここで、かかる振り分け処理につき、図１３に示すデータの具体例を参照しながら説明する。
ＮＩＣ３ａの振り分け処理部１１ａでは、パケットを受信すると（１）、パケットヘッダから読み出した識別情報（ここでは、送信先ポート番号［TCPx4］、プロトコル［TCP］）をキーとして、振り分けテーブルを検索する（２）。図１３の例の場合、振り分けテーブル８ａの１エントリ目が一致する（３）。このため、振り分け処理部１１ａは、当該エントリの時刻情報を更新した上で（４）、ＤＭＡバッファ番号［1］を読み出す（５）。そして、ＤＭＡコントローラ１２ａは、メモリ２ａに包含されるＤＭＡバッファ４ａ（ＤＭＡバッファ番号１）に対してパケットを転送し、書き込みを行う（６）。
【００６６】
［６．本実施形態の処理を適用した構成例］
ここで、図１４〜図１６を参照しながら、クライアント・サーバ構成のシステムで、サーバがクライアントからのリクエストに応じて処理を行う例における、クライアント側及びサーバ側の構成例並びにアプリケーション３１の実行態様等が異なる様々な構成例につき、全体の処理の流れを示して説明する。なお、ＤＭＡバッファ管理テーブル９の初期設定についての説明は省略する。
【００６７】
＜６．１  クライアントプログラムにおける適用例＞
図１４は、クライアント側において、ＮＩＣ３が１つであり、クライアントプログラムとして動作するアプリケーション３１が１つ実行されている例について示している。すなわち、この例では、ＮＩＣ３ａが設けられ、ＣＰＵ１ａで動作するアプリケーション３１ａが１つ実行されている。  まず、本情報処理装置（クライアント）のアプリケーション３１ａのデータ通信につき、ＯＳ２１のネットワーク処理部２２がＴＣＰパケットを他の情報処理装置（サーバ）に送信する（１）。すると、振り分けテーブル設定指示部２４が、ＮＩＣ３ａの振り分けテーブル８ａに対して識別情報及びＤＭＡバッファ番号を対応付けた振り分け情報の設定指示を送信する。そして、振り分けテーブル設定処理部１０ａが、振り分けテーブル８ａに振り分け情報の設定を行う（２）。このときの振り分け情報のエントリは、図１４の下部に示すようになっているとする。
【００６８】
その後、クライアントのＮＩＣ３ａの[IPx1]を送信元ＩＰアドレス、ポート番号[TCPx1]を送信元ポート番号に指定したＴＣＰパケットが、サーバで動作する、宛先ＩＰアドレス[IPx2]、ポート番号[TCPx2]のアプリケーションに向けて送信されたとする（３）。このＴＣＰパケットはＩＰアドレス[IPx2]、ポート番号[TCPx2]のアプリケーションで受信され、その応答が返ってくる。応答のＴＣＰパケットの送信先ポート番号、プロトコル種別（ＴＣＰ／ＵＤＰ）は、パケットを送信したクライアントが指定したポート番号とプロトコルになる。応答を受信したＮＩＣ３ａは、受信パケットから読み出したポート番号とプロトコル種別をキーに振り分けテーブル８ａを検索する（４）。その結果、識別情報が、振り分けテーブル８ａのエントリと一致する。このため、振り分け処理部１１ａは、パケットの送信先のＤＭＡバッファ番号[1]、すなわち、ＤＭＡバッファ４ａを特定する（４）。そして、ＤＭＡコントローラ１２ａが、ＤＭＡバッファ４ａへ受信パケットを転送する（５）。
【００６９】
このとき、この受信パケットの処理を行うのはアプリケーション３１ａの処理を行うＣＰＵ１ａであるため、ＣＰＵ１ａが割り込み制御を行い、ＤＭＡバッファ４ａに書き込まれた受信パケットを、カーネル受信バッファ５ａにコピーする（６）。そして、アプリケ
ーション３１ａにおいてこの受信パケットを受信し、処理を行う（７）。このとき、ＣＰＵ１ａからみてＤＭＡバッファ４ａを包含するメモリ２ａはローカルメモリである。このため、ＣＰＵ１ａはリモートメモリに対するアクセスをする必要がない。
【００７０】
＜６．２  サーバプログラムにおける適用例＞
図１５は、サーバ側において、ＮＩＣ３が２つであり、アプリケーション３１が１つ実行されている例について示している。すなわち、この例では、ＮＩＣ３ａ及びＮＩＣ３ｂが設けられ、ＣＰＵ１ａで動作するアプリケーション３１ａが１つ、サーバプログラムとして実行されている。アプリケーション３１ａでは、データを受信するインタフェースであるＮＩＣ３のＩＰアドレスを、ワイルドカードで指定している。なお、サーバが指定する受信インタフェースの指定は、ワイルドカードでなくても、ある特定のインタフェースを指定することも可能である。
【００７１】
まず、本情報処理装置（サーバ）のアプリケーション３１ａが起動すると、ＮＩＣ３のＩＰアドレスをワイルドカードで指定しているため、振り分けテーブル設定指示部２４は、ＮＩＣ３ａ及びＮＩＣ３ｂの両方に対し、振り分け情報の設定指示を送信する（１）。
【００７２】
その後、他の情報処理装置（クライアント）で動作する、ポート番号[TCPx2]を用いるアプリケーションから、ＩＰアドレス[IPx3]のＮＩＣを介し、サーバのＮＩＣ３ａのＩＰアドレス[IPx1]を送信先とし、ポート番号[TCPx1]を指定したＴＣＰパケットが送信されたとする。このＴＣＰパケットはＮＩＣ３ａで受信され、その識別情報が、振り分けテーブル８ａのエントリと一致する。このため、振り分け処理部１１ａは、パケットの送信先のＤＭＡバッファ番号[1]、すなわち、ＤＭＡバッファ４ａを特定する（1-4）。そして、ＤＭＡコントローラ１２ａが、ＤＭＡバッファ４ａへ受信パケットを転送する（1-5）。このパケットは、ＣＰＵ１ａの処理によってカーネル受信バッファ５ａにコピーされ（1-6）、アプリケーション３１ａがこの受信パケットを受信し、処理を行う（1-7）。
【００７３】
一方で、同じく、クライアントで動作する、ポート番号[TCPx2]を用いるアプリケーションから、ＩＰアドレス[IPx3]のＮＩＣを介し、サーバのＮＩＣ３ｂのＩＰアドレス[IPx2]を送信先とし、ポート番号[TCPx1]を指定したＴＣＰパケットが送信されたとする。このＴＣＰパケットはＮＩＣ３ｂで受信され、その識別情報が、振り分けテーブル８ｂのエントリと一致する。このため、振り分け処理部１１ｂは、パケットの送信先のＤＭＡバッファ番号[1]、すなわち、ＤＭＡバッファ４ａを特定する（2-4）。そして、ＤＭＡコントローラ１２ｂが、ＤＭＡバッファ４ａへ受信パケットを転送する（2-5）。このパケットは、ＣＰＵ１ａの処理によってカーネル受信バッファ５ａにコピーされ（2-6）、アプリケーション３１ａにおいてこの受信パケットを受信し、処理を行う（2-7）。
【００７４】
このように、アプリケーション３１ａにおいて、データを受信するインタフェースであるＮＩＣ３のＩＰアドレスをワイルドカードで指定している場合においても、各ＮＩＣ３で受信したパケットが、アプリケーション３１ａの処理を行うＣＰＵ１ａのローカルメモリであるメモリ２ａに転送される。
【００７５】
＜６．３  １つのＮＩＣを備え、１つのアプリケーションが実行されている例（ＣＰＵの割当て移動が行われた場合）＞
最後に、アプリケーション３１の処理を行うＣＰＵ１の割当てが移動された場合における処理の流れについて、サーバ側の例を用いて図１６を参照しながら説明する。
【００７６】
図１６の例では、初期状態として、本情報処理装置（サーバ）のアプリケーション３１ａの処理を、ＣＰＵ１ａが実行している。そして、アプリケーション３１ａのデータ通信につき、図１７の下部の［変更前］に示すように振り分けテーブル８ａに、振り分け情報
のエントリが設定されている。
【００７７】
この状態において、他の情報処理装置（クライアント）のポート番号[TCPx2]を用いるアプリケーションから、ＩＰアドレス[IPx3]のＮＩＣを介し、サーバのＮＩＣ３ａのＩＰアドレス[IPx1]を送信先とし、ポート番号[TCPx1]を指定したＴＣＰパケットが送信されたとする。このＴＣＰパケットはＮＩＣ３ａで受信され、その識別情報が、振り分けテーブル８ａのエントリと一致する。このため、振り分け処理部１１ａは、パケットの送信先のＤＭＡバッファ番号[1]、すなわち、ＤＭＡバッファ４ａを特定する（１）。そして、ＤＭＡコントローラ１２ａが、ＤＭＡバッファ４ａへ受信パケットを転送する（２）。なお、割り込み制御以降の処理については説明を省略する。
【００７８】
ここで、アプリケーション３１ａの処理の割当てが、ＣＰＵ１ａからＣＰＵ１ｂに移動されたとする（３）。すると、ＯＳ２１の振り分けテーブル設定指示部２４が、アプリケーション３１ａが行うデータ通信につき、ＣＰＵ１ｂに対応するメモリ２ｂのＤＭＡバッファ４ｂの番号である[2]をＤＭＡバッファ番号とした振り分け情報を振り分けテーブル８ａに設定するように、ＮＩＣ３ａに指示を送信する（４）。ＮＩＣ３ａの振り分けテーブル設定処理部１０ａは、この指示に基づいて、振り分けテーブル８ａの対象エントリを、図１６の下部に示す［変更後］に示すように上書きする（５）。
【００７９】
そして、かかる上書き処理以降に、ＮＩＣ３ａで当該エントリの識別情報で識別される通信のＴＣＰパケットを受信すると、振り分け処理部１１ａは、振り分けテーブル８ａに設定されたＤＭＡバッファ番号[2]、すなわち、ＤＭＡバッファ４ｂを特定する（６）。そして、ＤＭＡコントローラ１２ａが、ＤＭＡバッファ４ｂへ受信パケットを転送する（７）。
【００８０】
このように、アプリケーション３１の処理を行うＣＰＵ１の割当てが移動されたときでも、パケットの転送先のＤＭＡバッファ４が適切に切り替えられる。
なお、上記構成例は本実施形態の処理を適用した構成例の一部に過ぎず、他の構成例においても本実施形態の処理を適用することが可能である。
【００８１】
［７．実施形態による作用効果等］
前述した実施形態によれば、ＯＳ２１の振り分けテーブル設定指示部２４により、識別情報と、当該識別情報で識別される通信で受信されるデータの処理を行うＣＰＵ１が属するノードのメモリ２に包含されるＤＭＡバッファ４の番号とが対応付けられる。さらに、ＮＩＣ３の振り分けテーブル設定処理部１０により、かかる識別情報及びＤＭＡバッファ番号が対応付けられた振り分け情報が振り分けテーブル８に設定される。そして、ＮＩＣ３においてパケットを受信したときに、ＮＩＣ３の振り分け処理部１１が、振り分けテーブル８の振り分け情報を参照し、受信したパケットの転送先とするＤＭＡバッファ４を特定する。そして、このＤＭＡバッファ４にパケットが転送される。このため、当該パケットの処理を行うＣＰＵ１に対応付けられたメモリ２（すなわち同じノードのメモリであり、ローカルメモリである）に包含されるＤＭＡバッファ４にパケットが転送されることとなる。したがって、ＣＰＵ１は、一連のパケットの受信処理においてリモートアクセスをする必要がなくなる。このため、リモートメモリに対するアクセス回数が低減され、情報処理装置の処理効率が向上する。
【００８２】
また、本実施形態によれば、アプリケーション３１による通信における識別情報が新たに決定したときには、振り分けテーブル８に、識別情報とＤＭＡバッファ番号との対応関係を含んだ振り分け情報が新たに設定される。このため、その識別情報で識別される通信で受信したパケットを適切なＤＭＡバッファ４に転送することが可能である。一方で、アプリケーション３１の処理が割当てられるＣＰＵ１が移動されたときには、振り分けテー
ブル８において、そのアプリケーション３１で行うデータ通信の識別情報に対応付けられたＤＭＡバッファ番号が上書きされる。このように、稼働中にＣＰＵ１の割当ての移動が生じても、その移動に合わせて受信パケットの転送先のＤＭＡバッファ４が切り替えられ、引き続き適切なＤＭＡバッファ４にパケットを転送することが可能となる。
【００８３】
なお、かりに振り分けテーブル８の振り分け情報に基づいて受信パケットの転送先が特定できなかった場合においても、ＤＭＡバッファ管理テーブル９に、デフォルト設定のＤＭＡバッファ４が設定されている。このため、振り分け処理部１１は、受信パケットを確実にいずれかのＣＰＵ１に振り分けることができる。
【００８４】
以上の情報処理装置の機能的構成及び物理的構成は、上述の態様に限るものではなく、例えば、各機能や物理資源を統合して実装したり、逆に、さらに分散して実装したりすることも可能である。
【符号の説明】
【００８５】
１ａ，１ｂ…ＣＰＵ、２ａ，２ｂ…メモリ、３ａ，３ｂ…ＮＩＣ、４ａ，４ｂ…ＤＭＡバッファ、５ａ，５ｂ…カーネル受信バッファ、６…ノード管理テーブル、７ａ，７ｂ…送受信バッファ、８ａ，８ｂ…振り分けテーブル、９ａ，９ｂ…ＤＭＡバッファ管理テーブル、１０ａ，１０ｂ…振り分けテーブル設定処理部、１１ａ，１１ｂ…振り分け処理部、１２ａ，１２ｂ…ＤＭＡコントローラ、２１…ＯＳ、２２…ネットワーク処理部、２３…スケジューリング処理部、２４…振り分けテーブル設定処理部、２５…ＤＭＡバッファ管理テーブル初期化部
【図１】
2013069063.tif 000003
【図２】
2013069063.tif 000004
【図３】
2013069063.tif 000005
【図４】
2013069063.tif 000006
【図５】
2013069063.tif 000007
【図６】
2013069063.tif 000008
【図７】
2013069063.tif 000009
【図８】
2013069063.tif 000010
【図９】
2013069063.tif 000011
【図１０】
2013069063.tif 000012
【図１１】
2013069063.tif 000013
【図１２】
2013069063.tif 000014
【図１３】
2013069063.tif 000015
【図１４】
2013069063.tif 000016
【図１５】
2013069063.tif 000017
【図１６】
2013069063.tif 000018