(57)【特許請求の範囲】
【請求項１】
少なくともメモリとプロセッサをシステムバスに接続した複数のノードと、
前記ノードを相互接続する相互接続バスと、
前記複数のノードのいずれかのノードのシステムバスに接続され、データ処理を実行するデバイスを有し、
前記デバイスが接続されたシステムバスに接続されたメモリを、前記デバイスのアクセスメモリとして選択する処理を実行するメモリ選択部と、
前記デバイスの接続されたシステムバスに接続されたプロセッサを、前記デバイスに対応するデバイスドライバの設定プロセッサとして選択する処理を実行するプロセッサ選択部を有し、
前記メモリ選択部は、
前記デバイスが接続されたシステムバスに接続されたメモリの確保処理に失敗した場合、前記デバイスが接続されたシステムバスに接続されたメモリ以外のメモリを前記デバイスのアクセスメモリとして選択する処理を実行し、
前記プロセッサ選択部は、
前記デバイスの接続されたシステムバスの確認処理を実行して、該システムバスに接続されたプロセッサをデバイス利用アプリケーションの起動プロセッサとするプロセッサ選択処理を実行する情報処理装置。
【請求項２】
前記デバイスドライバは、
メインのデータ処理を実行するメイン処理実行部と、
割り込み処理を実行する割り込み処理実行部とに分割され、
前記複数のノードに設定される複数プロセッサの１つの第１プロセッサが前記メイン処理の実行プロセッサであり、他の第２プロセッサが前記割り込み処理の実行プロセッサとして構成される請求項１に記載の情報処理装置。
【請求項３】
前記割り込み処理の実行プロセッサは、
前記デバイスと同一のシステムバスの接続プロセッサを選択、または、
プロセッサ選択時点において最も低負荷のプロセッサを選択、または、
ラウンドロビン手法による選択、
上記いずれかの選択手法によって選択する構成である請求項２に記載の情報処理装置。
【請求項４】
前記デバイスは通信処理を実行するデバイスであり、
前記メイン処理部は、データ送信完了処理、およびデータ受信完了処理、およびエラー処理を実行する処理部である請求項２に記載の情報処理装置。
【請求項５】
情報処理装置において実行する情報処理方法であり、
前記情報処理装置は、
少なくともメモリとプロセッサをシステムバスに接続した複数のノードと、
前記ノードを相互接続する相互接続バスと、
前記複数のノードのいずれかのノードのシステムバスに接続され、データ処理を実行するデバイスを有し、
前記情報処理装置のメモリ選択部が、前記デバイスが接続されたシステムバスに接続されたメモリを、前記デバイスのアクセスメモリとして選択するメモリ選択処理を実行し、
前記情報処理装置のプロセッサ選択部が、前記デバイスの接続されたシステムバスに接続されたプロセッサを、前記デバイスに対応するデバイスドライバの設定プロセッサとして選択するプロセッサ選択処理を実行し、
前記メモリ選択処理において、前記メモリ選択部は、
前記デバイスが接続されたシステムバスに接続されたメモリの確保処理に失敗した場合、前記デバイスが接続されたシステムバスに接続されたメモリ以外のメモリを前記デバイスのアクセスメモリとして選択する処理を実行し、
前記プロセッサ選択処理において、前記プロセッサ選択部は、
前記デバイスの接続されたシステムバスの確認処理を実行して、該システムバスに接続されたプロセッサをデバイス利用アプリケーションの起動プロセッサとするプロセッサ選択処理を実行する情報処理方法。
【請求項６】
情報処理装置において情報処理を実行させるコンピュータ・プログラムであり、
前記情報処理装置は、
少なくともメモリとプロセッサをシステムバスに接続した複数のノードと、
前記ノードを相互接続する相互接続バスと、
前記複数のノードのいずれかのノードのシステムバスに接続され、データ処理を実行するデバイスを有し、
前記情報処理装置のメモリ選択部に、前記デバイスが接続されたシステムバスに接続されたメモリを、前記デバイスのアクセスメモリとして選択するメモリ選択処理を実行させ、
前記情報処理装置のプロセッサ選択部に、前記デバイスの接続されたシステムバスに接続されたプロセッサを、前記デバイスに対応するデバイスドライバの設定プロセッサとして選択するプロセッサ選択処理を実行させ、
前記メモリ選択処理において、前記メモリ選択部に、
前記デバイスが接続されたシステムバスに接続されたメモリの確保処理に失敗した場合、前記デバイスが接続されたシステムバスに接続されたメモリ以外のメモリを前記デバイスのアクセスメモリとして選択する処理を実行させ、
前記プロセッサ選択処理において、前記プロセッサ選択部に、
前記デバイスの接続されたシステムバスの確認処理を実行して、該システムバスに接続されたプロセッサをデバイス利用アプリケーションの起動プロセッサとするプロセッサ選択処理を実行させるコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、および情報処理方法、並びにコンピュータ・プログラムに関する。さらに詳細には、共有メモリ型マルチプロセッサシステムのアーキテクチャであるＮＵＭＡ（Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）に従った構成を持つ情報処理装置、情報処理方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【０００２】
近年、複数のプロセッサ（ＣＰＵ）を搭載し、複数プロセッサの並列処理により効率的なデータ処理を実現するマルチプロセッサ型の情報処理装置が増加する傾向にある。このようなマルチプロセッサシステムは、複数のプロセッサが共有メモリに対してアクセスを行うことになる。このようなシステムにおいて、プロセッサからメモリに対するアクセスコストが均一とならないアーキテクチャとしてＮＵＭＡ（Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）が知られている。
【０００３】
ＮＵＭＡアーキテクチャを持つ情報処理装置の構成例を図１に示す。図１に示すように、複数のチップセット１１，２１が、ノードとしてクロスバスイッチに相互接続されている。クロスバスイッチには異なるノード間のメモリアクセスに際してアドレスを変換するためのアドレス変換テーブル３１が接続されている。
【０００４】
チップセット１１には、ＣＰＵ１２，メモリ１，１３、デバイス１，１４がローカルバスとしてのシステムバス１を介して接続されている。
チップセット２１にも、ＣＰＵ２２，メモリ２，２３、デバイス２，２４がローカルバスとしてのシステムバス２を介して接続されている。
【０００５】
メモリ１，１３及びメモリ２，２３はＣＰＵ１，１２及びＣＰＵ２，２２によって共有される。このようなメモリの共有構成を持つＮＵＭＡでは各ＣＰＵから各メモリへのアクセスコストが均一とはならない。
【０００６】
例えば、ＣＰＵ１，１２で動作するタスクがメモリ２，２３に置かれているデータにアクセスするといった場合、チップセット１１のシステムバス１と、クロスバスイッチと、チップセット１２のシステムバス２を経由したメモリアクセスが必要となる。このように、タスクが動作するＣＰＵとデータが置かれているメモリとが同じローカルバス（システムバス）上に無い場合、メモリアクセスコストが高くなる。
【０００７】
このＮＵＭＡアーキテクチャを持つシステムにおけるメモリアクセスコストの性能改善策については、既に数多く提案されている。例えば、特許文献１（登録特許３８３２８３３号公報（ＩＢＭ））は、あるＣＰＵにおける読み取りリクエストに対して、ローカルバス以外のバスからデータが与えられるときの、コヒーレンシ報告の遅延低減を実現する構成を提案している。
【０００８】
また、特許文献２（登録特許３９２４２０６号公報（ＩＢＭ））は、データに対してライトスルー標識を備えることで、変更内容をキャッシュ可能かどうかを判断することで、不必要なコヒーレンシ報告を回避している。
【０００９】
さらに、特許文献３（特開２００６−３９８２２号公報（キャノン））は、マルチプロセッサへのタスク割り当てを投機的に繰り返し、ＣＰＵ間での通信コストの値を元に最適なタスクとプロセッサの組み合わせを決定する構成を開示している。
【００１０】
しかし、これらの従来手法は、ＣＰＵとメモリとの間でのメモリアクセス最適化を実現しようとするに過ぎない。近年は大容量データの入出力を伴うデバイスの登場と共に、デバイスドライバの影響でＣＰＵが高負荷となる場合もあり、デバイスも考慮した最適化を計る必要がある。
【００１１】
例えば、上記の従来例で説明した対応策は、ＣＰＵとメモリがローカルバス上に存在するが、デバイスと、デバイスのアクセスするメモリがローカルバス上に存在しない情報処理装置構成では効果が得られない。具体的には、図２に示すような構成では効果が得られない。
【００１２】
図２も図１と同様、複数のチップセット１１，２１が、ノードとしてクロスバスイッチに相互接続されている。クロスバスイッチには異なるノード間のメモリアクセスに際してアドレスを変換するためのアドレス変換テーブル３１が接続されている。
【００１３】
チップセット１１には、ＣＰＵ１２，メモリ１，１３、デバイス１，１４がローカルバスとしてのシステムバス１を介して接続されている。チップセット２１にも、ＣＰＵ２２，メモリ２，２３、デバイス２，２４がローカルバスとしてのシステムバス２を介して接続されている。
【００１４】
チップセット２１側のシステムバス２に接続されているＣＰＵ２，２２には、チップセット１１側のシステムバス１に接続されたデバイス１，１４のデバイスドライバ４１が設定されている。
【００１５】
チップセット２１側のＣＰＵ２，２２の持つデバイスドライバ４１の起動により、チップセット１１側のデバイス１，１４が動作を開始し、デバイス１，１４によるデータ処理を行う。例えばデバイス１，１４がネットワークカードであれば、ネットワークを介した外部との通信処理を行う。デバイス１，１４がビデオカードであれば、画像データの処理を行う。
【００１６】
デバイス１，１４の処理するデータ４３、例えば通信データやビデオデータなどのデータ４３は、クロスバスイッチを経由したＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）によって、チップセット２１側のメモリ２，２３に格納される。また、デバイス１，１４によるデータ取得の際も、メモリ２，２３からクロスバスイッチを経由したＤＭＡアクセスによる処理が行われる。
【００１７】
上述した従来技術の開示構成は、ＣＰＵとメモリとの間でのメモリアクセス最適化を実現しようとするに過ぎない。従って、図２に示すように、デバイスとメモリが同一のローカルバス上に存在しない情報処理装置のようにデハイス、メモリ、ＣＰＵ間のデータ転送が発生する構成では、上述した従来技術の開示構成は十分な効果が得られない。
【００１８】
さらに、特許文献４（登録特許３１２３４２５号公報（ＮＥＣ））は、デバイスからの割り込みを（ニューラルネットワークを利用しながら）その時点で負荷の最も低いＣＰＵに割り振ることで負荷分散を図る構成を開示している。この手法は、ＣＰＵの負荷に着目したものである。
【００１９】
しかし、この構成でも、図３に示すように、デバイスがアクセスするメモリがＣＰＵのローカルバス上に無い場合などは、ドライバからのメモリアクセスがクロスバスイッチを経由することになり、ドライバが動作するＣＰＵ負荷が高くなってしまうという問題がある。
【００２０】
図３に示す情報処理装置も、図１、図２に示す構成と同様の構成であり、複数のチップセット１１，２１が、ノードとしてクロスバスイッチに相互接続されている。クロスバスイッチには異なるノード間のメモリアクセスに際してアドレスを変換するためのアドレス変換テーブル３１が接続されている。
【００２１】
チップセット１１には、ＣＰＵ１２，メモリ１，１３、デバイス１，１４がローカルバスとしてのシステムバス１を介して接続されている。チップセット２１にも、ＣＰＵ２２，メモリ２，２３、デバイス２，２４がローカルバスとしてのシステムバス２を介して接続されている。
【００２２】
チップセット２１側のシステムバス２に接続されているＣＰＵ２，２２には、チップセット１１側のシステムバス１に接続されたデバイス１，１４のデバイスドライバ４１が設定されている。
【００２３】
チップセット２１側のＣＰＵ２，２２の持つデバイスドライバ４１の起動により、チップセット１１側のデバイス１，１４が動作を開始し、デバイス１，１４によるデータ処理を行う。例えばデバイス１，１４がネットワークカードであれば、ネットワークを介した外部との通信処理を行う。デバイス１，１４がビデオカードであれば、画像データの処理を行う。
【００２４】
本構成例では、図２に示す構成と異なり、デバイス１，１４の処理するデータ４３は、同一のチップセットに接続されたローカルバスであるシステムバス１に接続されたメモリ１，１３に対するＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）によってデータ４４として格納される。また、デバイス１，１４によるデータ取得の際も、メモリ１，１３からＤＭＡアクセスによる処理が行われる。
【００２５】
この構成では、デバイス１，１４とメモリ１，１３間のアクセスは、クロスバスイッチを経由することなく行うことが可能となりメモリアクセスコストが低減できる。しかし、本構成においても、チップセット２１側のＣＰＵ２，２２のドライバ４１からは、メモリ１，１３に対してクロスバスイッチを経由したアクセスが必要となり、ドライバが動作するＣＰＵ負荷が高くなってしまうという問題がある。
【特許文献１】登録特許３８３２８３３号公報
【特許文献２】登録特許３９２４２０６号公報
【特許文献３】特開２００６−３９８２２号公報
【特許文献４】登録特許３１２３４２５号公報
【発明の開示】
【発明が解決しようとする課題】
【００２６】
本発明は、例えば上記問題点に鑑みてなされたものであり、ＮＵＭＡ（Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）アーキテクチャ構成を有する情報処理装置において、デバイスが接続しているバスとデバイスドライバが動作するプロセッサを最適に組み合わせることで、デバイスアクセスに関する遅延を低減し、プロセッサ使用効率の向上を実現する情報処理装置、および情報処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２７】
本発明の第１の側面は、
少なくともメモリとプロセッサをシステムバスに接続した複数のノードと、
前記ノードを相互接続する相互接続バスと、
前記複数のノードのいずれかのノードのシステムバスに接続され、データ処理を実行するデバイスを有し、
前記デバイスが接続されたシステムバスに接続されたメモリを、前記デバイスのアクセスメモリとして選択する処理を実行するメモリ選択部と、
前記デバイスの接続されたシステムバスに接続されたプロセッサを、前記デバイスに対応するデバイスドライバの設定プロセッサとして選択する処理を実行するプロセッサ選択部を有し、
前記メモリ選択部は、
前記デバイスが接続されたシステムバスに接続されたメモリの確保処理に失敗した場合、前記デバイスが接続されたシステムバスに接続されたメモリ以外のメモリを前記デバイスのアクセスメモリとして選択する処理を実行し、
前記プロセッサ選択部は、
前記デバイスの接続されたシステムバスの確認処理を実行して、該システムバスに接続されたプロセッサをデバイス利用アプリケーションの起動プロセッサとするプロセッサ選択処理を実行する情報処理装置にある。
【００３３】
さらに、本発明の情報処理装置の一実施態様において、前記デバイスドライバは、メインのデータ処理を実行するメイン処理実行部と、割り込み処理を実行する割り込み処理実行部とに分割され、前記複数のノードに設定される複数プロセッサの１つの第１プロセッサが前記メイン処理の実行プロセッサであり、他の第２プロセッサが前記割り込み処理の実行プロセッサとして構成される。
【００３４】
さらに、本発明の情報処理装置の一実施態様において、前記割り込み処理の実行プロセッサは、前記デバイスと同一のシステムバスの接続プロセッサを選択、または、プロセッサ選択時点において最も低負荷のプロセッサを選択、または、ラウンドロビン手法による選択、上記いずれかの選択手法によって選択する構成である。
【００３５】
さらに、本発明の情報処理装置の一実施態様において、前記デバイスは通信処理を実行するデバイスであり、前記メイン処理部は、データ送信完了処理、およびデータ受信完了処理、およびエラー処理を実行する処理部である。
【００３６】
さらに、本発明の第２の側面は、
情報処理装置において実行する情報処理方法であり、
前記情報処理装置は、
少なくともメモリとプロセッサをシステムバスに接続した複数のノードと、
前記ノードを相互接続する相互接続バスと、
前記複数のノードのいずれかのノードのシステムバスに接続され、データ処理を実行するデバイスを有し、
前記情報処理装置のメモリ選択部が、前記デバイスが接続されたシステムバスに接続されたメモリを、前記デバイスのアクセスメモリとして選択するメモリ選択処理を実行し、
前記情報処理装置のプロセッサ選択部が、前記デバイスの接続されたシステムバスに接続されたプロセッサを、前記デバイスに対応するデバイスドライバの設定プロセッサとして選択するプロセッサ選択処理を実行し、
前記メモリ選択処理において、前記メモリ選択部は、
前記デバイスが接続されたシステムバスに接続されたメモリの確保処理に失敗した場合、前記デバイスが接続されたシステムバスに接続されたメモリ以外のメモリを前記デバイスのアクセスメモリとして選択する処理を実行し、
前記プロセッサ選択処理において、前記プロセッサ選択部は、
前記デバイスの接続されたシステムバスの確認処理を実行して、該システムバスに接続されたプロセッサをデバイス利用アプリケーションの起動プロセッサとするプロセッサ選択処理を実行する情報処理方法にある。
【００３７】
さらに、本発明の第３の側面は、
情報処理装置において情報処理を実行させるコンピュータ・プログラムであり、
前記情報処理装置は、
少なくともメモリとプロセッサをシステムバスに接続した複数のノードと、
前記ノードを相互接続する相互接続バスと、
前記複数のノードのいずれかのノードのシステムバスに接続され、データ処理を実行するデバイスを有し、
前記情報処理装置のメモリ選択部に、前記デバイスが接続されたシステムバスに接続されたメモリを、前記デバイスのアクセスメモリとして選択するメモリ選択処理を実行させ、
前記情報処理装置のプロセッサ選択部に、前記デバイスの接続されたシステムバスに接続されたプロセッサを、前記デバイスに対応するデバイスドライバの設定プロセッサとして選択するプロセッサ選択処理を実行させ、
前記メモリ選択処理において、前記メモリ選択部に、
前記デバイスが接続されたシステムバスに接続されたメモリの確保処理に失敗した場合、前記デバイスが接続されたシステムバスに接続されたメモリ以外のメモリを前記デバイスのアクセスメモリとして選択する処理を実行させ、
前記プロセッサ選択処理において、前記プロセッサ選択部に、
前記デバイスの接続されたシステムバスの確認処理を実行して、該システムバスに接続されたプロセッサをデバイス利用アプリケーションの起動プロセッサとするプロセッサ選択処理を実行させるコンピュータ・プログラムにある。
【００３８】
なお、本発明のプログラムは、例えば、様々なプログラム・コードを実行可能な汎用コンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【００３９】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００４０】
本発明の一実施例の構成によれば、共有メモリ型マルチプロセッサシステムのアーキテクチャであるＮＵＭＡ（Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）に従った構成を持つ情報処理装置において、デバイスの接続されたシステムバス上のメモリを、デバイスのアクセスメモリとして選択する。さらに、デバイス接続バス上のプロセッサを、デバイスドライバの設定プロセッサとする。この構成により、デバイス、プロセッサ、およびデバイスとプロセッサのアクセスメモリが同一のシステムバス上に設定され、デバイスの利用処理におけるメモリアクセスを１つのシステムバスを介して実行可能となり、メモリアクセスコストの削減が実現する。
【発明を実施するための最良の形態】
【００４１】
以下、本発明の情報処理装置、および情報処理方法、並びにコンピュータ・プログラムの詳細について説明する。
【００４２】
本発明の情報処理装置は、複数のプロセッサが共有メモリに対してアクセスを行う構成を持ち、プロセッサからメモリに対するアクセスコストが均一とならないアーキテクチャであるＮＵＭＡ（Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）アーキテクチャを持つ情報処理装置である。
【００４３】
本発明の情報処理装置の一構成例であるＮＵＭＡアーキテクチャを持つ情報処理装置１００の構成例を図４に示す。図４に示すように、複数のチップセット１１１，１２１が、ノードとしてクロスバスイッチに接続されている。クロスバスイッチは複数のノードを相互接続する相互接続バスとして機能する。クロスバスイッチには異なるノード間のメモリアクセスに際してアドレスを変換するためのアドレス変換テーブル１３１が接続されている。
【００４４】
チップセット１１１には、ＣＰＵ１１２，メモリ１，１１３、デバイス１，１１４がローカルバスとしてのシステムバス１を介して接続されている。
チップセット１２１にも、ＣＰＵ１２２，メモリ２，１２３、デバイス２，１２４がローカルバスとしてのシステムバス２を介して接続されている。
【００４５】
この図４に示す情報処理装置において、ＣＰＵ及びデバイスからメモリに対してアクセスを実行する際の処理の流れについて図５に示すフローチャートを参照して説明する。
【００４６】
図５に示す処理は、ＣＰＵによるメモリアクセス、およびデバイスのＤＭＡによるメモリアクセスにおいて共通するシーケンスである。まず、ステップＳ１１において、ＣＰＵまたはデバイスは、アドレス変換テーブルを参照する。ステップＳ１２において、アクセス先のメモリが、自己（ＣＰＵまたはデバイス）が接続されたローカルバス（システムバス）と同一のローカルバス上にあるか否かを確認する。
【００４７】
ステップＳ１２の判定処理において、アクセス先のメモリが同一のローカルバス上にあるならば、ステップＳ１３に進み、通常通りのメモリアクセスを行なう。
【００４８】
一方、同一のローカルバス（システムバス）上に無い場合は、ステップＳ１４に進み、クロスバスイッチ経由でアクセスすることになる。この場合は、まず、ステップＳ１５においてキャッシュおよびメモリのコヒーレンシ（一貫性）が保てるかを判定する。すなわち、メモリアクセスに際してキャッシュデータの更新を実行してもコヒーレンシ（一貫性）が保てるかを判定する。
【００４９】
ステップＳ１５においてコヒーレンシが保持されると判定した場合は、ステップＳ１７に進みクロスバスイッチを経由して異なるノードのローカルバス（システムバス）に接続されたメモリのアクセスを実行する。
【００５０】
ステップＳ１５においてコヒーレンシが保持されないと判定した場合は、ステップＳ１６に進み、キャッシュの無効化処理を実行した後、ステップＳ１７に進みクロスバスイッチを経由して異なるノードのローカルバス（システムバス）に接続されたメモリのアクセスを実行する。
【００５１】
ステップＳ１４〜Ｓ１７の処理ではクロスバスイッチ経由のメモリアクセス処理となり、処理コストが増大することになる。本発明の情報処理装置では、このクロスバスイッチ経由のメモリアクセスを回避する構成を実現する。
【００５２】
図６を参照して、本発明の情報処理装置におけるデータ格納構成、およびメモリアクセス処理例について説明する。本発明の情報処理装置では、図６に示すように、デバイスがアクセスするメモリをローカルバス上に確保することで、クロスバスッチ経由でのメモリアクセスを回避する。
【００５３】
図６に示す情報処理装置も、図４に示す構成と同様の構成であり、ノードとしての複数のチップセット１１１，１２１が相互接続バスであるクロスバスイッチに接続されている。クロスバスイッチには異なるノード間のメモリアクセスに際してアドレスを変換するためのアドレス変換テーブル１３１が接続されている。
【００５４】
チップセット１１１には、ＣＰＵ１１２，メモリ１，１１３、デバイス１，１１４がローカルバスとしてのシステムバス１を介して接続されている。チップセット１２１にも、ＣＰＵ１２２，メモリ２，１２３、デバイス２，１２４がローカルバスとしてのシステムバス２を介して接続されている。
【００５５】
チップセット１１１側のシステムバス１に接続されているＣＰＵ１，１１２には、同一のチップセット１１１側のシステムバス１に接続されたデバイス１，１１４のデバイスドライバ１４１が設定されている。
【００５６】
チップセット１１１側のＣＰＵ１，１２２の持つデバイスドライバ１４１の起動により、チップセット１１１側のデバイス１，１１４が動作を開始し、デバイスによるデータ処理を行う。例えばデバイス１，１１４がネットワークカードであれば、ネットワークを介した外部との通信処理を行う。デバイス１，１１４がビデオカードであれば、画像データの処理を行う。
【００５７】
本構成例では、デバイス１，１１４は、同一ノードのチップセット１１１側のシステムバス１に接続されたメモリ１，１１３に対するＤＭＡによるメモリアクセスを実行する。
また、デバイス１，１１４に対するデバイスドライバ１４１を設定したＣＰＵ１，１１２も、同一ノードのチップセット１１１側のシステムバス１に接続されたメモリ１，１１３に対するアクセスを実行する。
【００５８】
このようなデータアクセス構成とすることにより、ＣＰＵ１，１１２、デバイス１，１１４は、デバイス１，１１４のデータ処理に関して、メモリアクセスは、同一ノードのローカルバス（システムバス１）上のメモリ１，１１３に対するアクセスのみで十分となり、クロスバスイッチを経由した他ノードへのアクセスは回避される。結果として、図５に示すフローチャート中のステップＳ１３とＳ１７のメモリアクセスのみが発生して、ステップＳ１４〜Ｓ１７のクロスバスイッチ経由の処理は発生することがなく、メモリアクセスコストが低減されて処理効率が高まることになる。
【００５９】
本発明の情報処理装置は、情報処理装置に含まれるいずれかのプロセッサが以下の処理を行うことになる。
デバイスのアクセスメモリの選択時に、アクセスメモリをデバイスと同一のシステムバス上のメモリとして選択する処理、
デバイスに対応するデバイスドライバの起動プロセッサを、デバイスと同一のシステムバス上のプロセッサとして選択する処理、
すなわち、プロセッサがメモリ選択部、およびプロセッサ選択部として機能する。
【００６０】
以下、このメモリ選択処理と、プロセッサ選択処理の具体的処理シーケンスについて説明する。
【００６１】
（メモリ選択処理）
例えば、ＬｉｎｕｘではＮＵＭＡ  ＡＰＩ（アプリケーションインタフェース）が提供されている。このＡＰＩを使用することで、デバイスドライバがメモリを確保する際に、どちらのシステムバス上にあるメモリを確保するかを明示的に指定することができる。
【００６２】
このＡＰＩを利用してアクセスメモリの選択を行なう場合の処理シーケンスについて、図７に示すフローチャートを参照して説明する。
【００６３】
まず、ステップＳ１０１において、レジスタ値の設定などデバイスの初期化を行なう。次に、ステップＳ１０２において、デバイスが接続しているバスを確認する。例えば、図６に示す構成において、デバイス１，１１４であればシステムバス１に接続していることが分かる。次に、ステップＳ１０３において、バス番号を指定してメモリを確保することで、デバイスがアクセスするメモリをローカルバス上に確保できる。
【００６４】
なお、ステップＳ１０３において、同一バス上でのメモリ確保に失敗した場合（ステップＳ１０４でＮｏ）には、ステップＳ１０５において、バス番号を指定せずにメモリを確保する。
【００６５】
なお、処理フローでは、同一バス上でのメモリ確保に失敗した場合（ステップＳ１０４でＮｏ）に、デバイスがアクセスするメモリの確保処理を、バス番号の指定を行うことなく実行することで、メモリ確保を確実に実行させる設定とした。
【００６６】
この設定では、通常は、デバイスが接続しているバスと同一のバスに接続されたメモリが、デバイスのアクセスメモリとして優先的に確保され、このメモリ確保に失敗した場合のみ、例外的にデバイスと同一のローカルバスにないメモリがアクセス先として確保されることになる。
【００６７】
この処理シーケンスに従ったメモリ確保処理をデバイスの起動時に実行させることで、図６を参照して説明した構成、すなわちデバイスとデバイスのアクセスメモリとが同一のローカルバス（システムシバス）上に設定された構成を構築することが可能となる。
【００６８】
なお、図７に示すフローチャートでは、ステップＳ１０３において、同一バス上でのメモリ確保に失敗した場合（ステップＳ１０４でＮｏ）には、ステップＳ１０５において、バス番号を指定せずにメモリを確保する設定としている。このシーケンスは、デバイスにおける処理を停止させることより、メモリの確保を優先したものである。
【００６９】
すなわち、この場合には、デバイスと異なるノード上のメモリがアクセス先として設定される可能性があるがデバイスの処理は実行可能となる。このような設定とせずに、ステップＳ１０３において、同一バス上でのメモリ確保に失敗した場合（ステップＳ１０４でＮｏ）にはデバイスの使用を中止するといった設定としてもよい。
【００７０】
あるいは、同一バス上でのメモリ確保に失敗した場合（ステップＳ１０４でＮｏ）、予め設定した待機時間の後、再度、ステップＳ１０３に戻り、同一バス上でのメモリ確保処理を繰り返し実行する設定としてもよい。
【００７１】
このように、本発明の情報処理装置におけるメモリ選択部は、デバイスのアクセスメモリの選択処理に際して、デバイスが接続されたシステムバスに接続されたメモリを優先的にデバイスのアクセスメモリとして選択する処理を実行する。デバイスが接続されたシステムバスに接続されたメモリの確保処理に失敗した場合には、繰り返しシステムバスに接続されたメモリの確保処理を実行するか、他のシステムバスに接続されたメモリをアクセスメモリとして選択する。あるいは、デバイスによる処理を中止する処理を実行する。
【００７２】
（プロセッサ選択処理）
図７を参照して説明した処理は、デバイスのアクセス先をデバイスと同一のローカルバス上に優先的に設定させるための処理シーケンスであるが、さらに、デバイスを制御するデバイスドライバに関しても、デバイスと同一のローカルバス上にあるＣＰＵにおいて動作をさせる設定とすることで、ＣＰＵからメモリに対するアクセスコストを低減できる。
【００７３】
例えば、Ｌｉｎｕｘの実装ではＣＰＵとメモリのアフィニティ（ａｆｆｉｎｉｔｙ）を優先してプロセスを実行するＣＰＵが決定されるため、前記のように同一のノード内のデバイスが使用するメモリを、同一のシステムバス上に確保すれば、それを扱うデバイスドライバは特別な処理を行なわずとも、デバイスとメモリと同一のシステムバス上のＣＰＵとして選択される。
【００７４】
また、アプリケーション起動の際にＮＵＭＡアーキテクチャに対応するコマンドの１つである［ｎｕｍａｃｔｌ］などのコマンドを用いることで、動作ＣＰＵを明示的に指定することもできる。コマンド［ｎｕｍａｃｔｌ］はバス番号を指定してアプリケーションを起動させるコマンドであり、特定のローカルバス（システムバス）に接続されたＣＰＵにおいてアプリケーション起動を実行させることができる。すなわち、このコマンドを用いることで、動作ＣＰＵを明示的に指定することもできる。
【００７５】
この処理の流れについて、図８に示すフローチャートを参照して説明する。まず、ステップＳ２０１において、アプリケーションにおいて利用するデバイスを特定する。次に、ステップＳ２０２において、デバイスの接続されたローカルバス（システムバス）を確認する。最後にステップＳ２０３において、コマンド［ｎｕｍａｃｔｌ］を実行して、デバイスの接続されたローカルバス（システムバス）を指定して、動作ＣＰＵを明示的に指定して、指定したＣＰＵにおいてアプリケーションを起動する。
【００７６】
この処理によって、デバイスとデバイスアクセスメモリと、デバイスドライバの実行ＣＰＵを同一のローカルバス（システムバス）上に設定した図６に示すメモリアクセス構成が実現される。結果として、デバイスを利用した処理におけるメモリアクセスに際して、異なるノード間のメモリアクセスを回避することが可能となる。すなわち、図５に示すフローチャート中のステップＳ１３とＳ１７のメモリアクセスのみが発生して、ステップＳ１４〜Ｓ１７のクロスバスイッチ経由の処理は発生することがなく、メモリアクセスコストが低減されて処理効率が高まることになる。
【００７７】
このように、本発明の情報処理装置におけるプロセッサ選択部は、デバイスの接続されたシステムバスに接続されたプロセッサを、デバイスに対応するデバイスドライバの設定プロセッサとして選択する処理を実行する。具体的には、デバイスの接続されたシステムバスの確認処理を実行して、該システムバスに接続されたプロセッサをデバイス利用アプリケーションの起動プロセッサとする処理を実行する。
【００７８】
［その他の実施例］
マルチプロセッサシステムは複数のＣＰＵを有している。これらの複数のＣＰＵを利用することで処理の効率化を図る実施例について以下、説明する。
【００７９】
ＣＰＵの負荷が低く、またデバイスからの割り込み頻度が低いときは、デバイスドライバが動作しているＣＰＵに対して割り込みを通知する方が、データの局所性からも処理効率は上がる。しかし、デバイスが処理可能なデータ量に比べてＣＰＵが処理可能なデータ量が少ない場合や、割り込みが高頻度で発生してＣＰＵの処理効率が下がってしまうような場合もある。
【００８０】
図９を参照して、複数のＣＰＵを利用することで処理の効率化を図る構成例について説明する。図９に示す情報処理装置も、図４、図６と同様の構成を持つ情報処理装置１００である。
【００８１】
ノードとしての複数のチップセット１１１，１２１が相互接続バスであるクロスバスイッチに接続されている。チップセット１１１には、ＣＰＵ１１２，メモリ１，１１３、デバイス１，１１４がローカルバスとしてのシステムバス１を介して接続され、チップセット１２１には、ＣＰＵ１２２，メモリ２，１２３、デバイス２，１２４がローカルバスとしてのシステムバス２を介して接続されている。
【００８２】
本構成例では、チップセット１１１側のシステムバス１に接続されているデバイス１，１１４に対応するデバイスドライバを、割り込み処理を行なう部分と、メインのデータ処理を行なう部分（ボトムハーフ）に分割し、それぞれを異なるプロセッサ（ＣＰＵ）上で動作させる構成としている。この構成により、割り込みによるレジスタの退避／復旧やキャッシュが汚れる影響などを回避できるため、デバイスドライバの処理性能は向上する。
【００８３】
具体的には、図９に示すチップセット１１１側のシステムバス１に接続されているデバイス１，１１４に対応するデバイスドライバを２分割して、ＣＰＵ１，１１２とＣＰＵ２，１２２にそれぞれ処理を分担させる構成としている。
【００８４】
デバイス１，１１４と同一のローカルバス（システムバス１）に接続されたＣＰＵ１，１１２をメインのデータ処理（ボトムハーフ）を実行するメインドライバ１８１を備えたＣＰＵ、
デバイス１，１１４と異なるローカルバス（システムバス２）に接続されたＣＰＵ２，１２２を割り込み処理を実行する割り込みドライバ１８２を備えたＣＰＵ、
このような設定とする。
【００８５】
このように、デバイスドライバを割り込み処理を行なう部分と、メインのデータ処理を行なう部分（ボトムハーフ）に分割し、それぞれを異なるＣＰＵ上で動かすことで、割り込みによるレジスタの退避／復旧やキャッシュが汚れる影響などを回避できるため、デバイスドライバの処理性能は向上させることができる。
【００８６】
デバイスからの割り込みを処理するＣＰＵの選択処理は、例えばオペレーティングシステムのポリシに基づいて実行する。例えば、
同一のローカルバス上のＣＰＵを選択する。
その時点で最も低負荷のＣＰＵを選択する。
ラウンドロビン手法によって選択する。
例えば上記の選択手法のいずれかによって選択する。
【００８７】
例えば、Ｌｉｎｕｘでは固定的にローカルバス上のＣＰＵに割り込みが発生するため、前述のようにローカルバス上にメモリを確保しているときは、ローカルバス"以外"のＣＰＵに割り込みが発生するようにカーネルの割り込みハンドラを修正すれば良い。割り込みをローカルバス外のＣＰＵに発生するように設定すれば、結果としてデバイスドライバの割り込みハンドラもローカルバス外のＣＰＵにて実行される。
【００８８】
この場合のデバイスドライバ構成例を図１０に示す。図１０は、デバイスをネットワークカードとした場合のデバイスドライバの構成例である。
【００８９】
図１０に示すように、デバイスドライバ２００は、
デバイスがオペレーティングシステムで認識された際に初期化を行なう初期化処理部２０１、
ＩＰアドレスやＭＴＵなどの設定情報を記憶する状態保持部２０２、
上位層から呼び出されてパケットの送信処理を行なう送信処理部２０３、
デバイスから割り込みが発生した際に呼び出される割り込み処理部２０４、及び、
割り込み処理に際してスケジューラに設定されるボトムハーフ処理部２１０から成る。
【００９０】
ボトムハーフ処理部２１０は送信完了処理部２１１、受信処理部２１２、エラー処理部２１３から構成される。割り込みが発生した際の割り込み処理部２０４の処理の流れについて、図１１に示すフローチャートを参照して説明する。
【００９１】
まず、ステップＳ３０１において、ボトムハーフ処理部が起動済みかどうかを確認する。例えば、Ｌｉｎｕｘではボトムハーフは［ｔａｓｋｌｅｔ］や［ｐｏｌｌ］関数として実装されており、起動中かどうかはカーネル内の変数値を見ることで確認できる。
【００９２】
起動されている場合はステップＳ３０３に進む。起動されていない場合（ステップＳ３０１でＮｏ）は、ステップＳ３０２に進み、次にタイマ割り込みが入ってカーネルスケジューラが起動される際にボトムハーフ処理部が実行されるよう、ボトムハーフ処理部をカーネルスケジューラに登録する。その後、ステップＳ３０３において、（ＰＣＩであればＩＮＴｘ  のｄｅａｓｓｅｒｔをするなど）割り込み要因をクリアして終了する。
【００９３】
ボトムハーフ処理部がスケジューリングされた際の処理の流れについて、図１２に示すフローチャートを参照して説明する。ステップＳ４０１において、送信完了パケットの有無を判定し、送信完了パケットがあれば、ステップＳ４０２に進み、メモリ解放などの送信完了処理を行なう。
【００９４】
ステップＳ４０３において、受信パケットの有無を判定し、受信パケットがあれば、ステップＳ４０４に進み、上位プロトコルに受信パケットを渡す。
ステップＳ４０５において、エラー発生の有無を判定し、エラー発生があれば、ステップＳ４０６に進み、エラー処理を行なう。
ステップＳ４０７では、ステップＳ４０２の送信完了処理、ステップＳ４０４の受信完了処理、ステップＳ４０６のエラー処理、これらの処理のいずれかを行ったか否かを判定し、行っている場合は、ステップＳ４０８に進み、自分自身、すなわちボトムハーフ処理部をスケジューラに再登録して終了する。
【００９５】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
【００９６】
また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【００９７】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【００９８】
以上、説明したように、本発明の一実施例の構成によれば、共有メモリ型マルチプロセッサシステムのアーキテクチャであるＮＵＭＡ（Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）に従った構成を持つ情報処理装置において、デバイスの接続されたシステムバス上のメモリを、デバイスのアクセスメモリとして選択する。さらに、デバイス接続バス上のプロセッサを、デバイスドライバの設定プロセッサとする。この構成により、デバイス、プロセッサ、およびデバイスとプロセッサのアクセスメモリが同一のシステムバス上に設定され、デバイスの利用処理におけるメモリアクセスを１つのシステムバスを介して実行可能となり、メモリアクセスコストの削減が実現する。
【図面の簡単な説明】
【００９９】
【図１】ＮＵＭＡアーキテクチャを持つ情報処理装置の構成例を示す図である。
【図２】デバイスと、デバイスのアクセスするメモリがローカルバス上に存在しない情報処理装置の構成及びメモリアクセス処理について説明する図である。
【図３】デバイスがアクセスするメモリがＣＰＵのローカルバス上に無い場合の情報処理装置の構成及びメモリアクセス処理について説明する図である。
【図４】本発明の情報処理装置の一構成例であるＮＵＭＡアーキテクチャを持つ情報処理装置の構成例を示す図である。
【図５】ＣＰＵ及びデバイスからメモリに対してアクセスを実行する際の処理シーケンスについて説明するフローチャートを示す図である。
【図６】本発明の情報処理装置におけるデータ格納構成、およびメモリアクセス処理例について説明する図である。
【図７】デバイスドライバがメモリを確保する際に、バス指定によるメモリ確保を行なう場合の処理シーケンスについて説明するフローチャートを示す図である。
【図８】特定のローカルバス（システムバス）に接続されたＣＰＵにおいてアプリケーションを起動させる処理を行う場合のシーケンスについて説明するフローチャートを示す図である。
【図９】複数のＣＰＵを利用することで処理の効率化を図る構成例について説明する図である。
【図１０】デバイスドライバを割り込み処理を行なう部分と、メインのデータ処理を行なう部分（ボトムハーフ）に分割したデバイスドライバの構成例について説明する図である。
【図１１】割り込みが発生した際の割り込み処理部の処理のシーケンスについて説明するフローチャートを示す図である。
【図１２】ボトムハーフ処理部がスケジューリングされた際の処理のシーケンスについて説明するフローチャートを示す図である。
【符号の説明】
【０１００】
１０  情報処理装置
１１  チップセット
１２  ＣＰＵ１
１３  メモリ１
１４  デバイス１
２１  チップセット
２２  ＣＰＵ２
２３  メモリ２
２４  デバイス２
３１  アドレス変換テーブル
４１  ドライバ
４２〜４４  データ
１００  情報処理装置
１１１  チップセット
１１２  ＣＰＵ１
１１３  メモリ１
１１４  デバイス１
１２１  チップセット
１２２  ＣＰＵ１
１２３  メモリ１
１２４  デバイス１
１３１  アドレス変換テーブル
１４１  デバイスドライバ
１８１  メインドライバ
１８２  割り込みドライバ
２００  デバイスドライバ
２０１  初期化処理部
２０２  状態保持部
２０３  送信処理部
２０４  割り込み処理部
２１０  ボトムハーフ処理部
２１１  送信完了処理部
２１２  受信処理部
２１３  エラー処理部
【図１】
0004609521.tif 000002
【図２】
0004609521.tif 000003
【図３】
0004609521.tif 000004
【図４】
0004609521.tif 000005
【図５】
0004609521.tif 000006
【図６】
0004609521.tif 000007
【図７】
0004609521.tif 000008
【図８】
0004609521.tif 000009
【図９】
0004609521.tif 000010
【図１０】
0004609521.tif 000011
【図１１】
0004609521.tif 000012
【図１２】
0004609521.tif 000013