(57)【要約】【課題】マルチプロセッサ構成を持つ情報処理装置における効率的な通信制御構成を実現する。【解決手段】複数のプロセッサを有しネットワークを介した通信を行なう情報処理装置において、オペレーティングシステム（ＯＳ）の制御を実行するメインプロセッサと異なるサブプロセッサに、通信部対応のデバイスドライバの制御を実行させ、通信部としてのネットワークカードからの割り込みに基づく通信制御をサブプロセッサにおいて実行する構成とした。本構成によりメインプロセッサのデータ処理の遅延を発生させることなくデータ処理を効率的に実行するこが可能となる。【選択図】図９
2008192128.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサを有する情報処理装置であり、
オペレーティングシステムに基づいた処理を実行する第１プロセッサと、
通信処理を実行する通信部と、
前記通信部対応のデバイスドライバに基づいた処理を実行する第２プロセッサと、
を有することを特徴とする情報処理装置。
【請求項２】
前記第２プロセッサは、
前記通信部の設定する割り込みステータスを読み出し、読み出した割り込みステータスに従って処理を決定し、決定した処理を実行する構成であることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第２プロセッサは、
前記通信部の設定する割り込みステータスが送信完了である場合は、メモリにおける送信データの格納領域を解放し、
前記割り込みステータスが受信完了である場合は、受信データをプロトコルスタックに基づいて処理し、
前記割り込みステータスがエラーである場合は、前記通信部のリセット処理を実行する構成であることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記第２プロセッサは、
前記通信部の設定する割り込みステータスの読み出し処理を繰り返し実行する構成であることを特徴とする請求項２に記載の情報処理装置。
【請求項５】
前記通信部は、
前記割り込みステータスを通信部対応のレジスタ領域に書き込むと共に、前記第２プロセッサのアクセス可能なメモリ領域にコピーする処理を実行する構成であり、
前記第２プロセッサは、
前記通信部の設定する割り込みステータスを、前記メモリ領域から取得する構成であることを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記情報処理装置は、
前記通信部を介した通信を実行させるアプリケーションと、
通信部を介するデータ通信に適用する通信プロトコルに対応する通信制御処理を実行するプロトコルスタックを有し、
前記通信部を介するデータ通信に際して、前記プロトコルスタックと、前記デバイスドライバとの間での通信データの受け渡しを実行する構成であることを特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記プロトコルスタックは、前記第１プロセッサにより実行される構成であり、
前記プロトコルスタックと、前記第２プロセッサにより実行されるデバイスドライバとの間での通信データの受け渡しは、情報処理装置に構成されたメインメモリと、前記第２プロセッサに対応して設定されるローカルストア間のデータコピー処理を伴う処理として実行する構成であることを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記第２プロセッサは、
前記通信部を介するデータ通信に適用する通信プロトコルに対応する通信制御処理を実行するプロトコルスタックに基づく処理を実行する構成であることを特徴とする請求項１に記載の情報処理装置。
【請求項９】
前記第２プロセッサは、
前記通信部を介した通信を実行させるアプリケーションを実行する構成であることを特徴とする請求項１に記載の情報処理装置。
【請求項１０】
前記情報処理装置は、さらに、
前記通信部を介するデータ通信に適用する通信プロトコルに対応する通信制御処理を実行するプロトコルスタックに基づく処理を実行する第３プロセッサを有する構成であることを特徴とする請求項１に記載の情報処理装置。
【請求項１１】
前記情報処理装置は、さらに、
前記通信部を介するデータ通信に適用する通信プロトコルに対応する通信制御処理を実行するプロトコルスタックに基づく処理を実行する第３プロセッサと、
前記通信部を介した通信を実行させるアプリケーションの制御を実行する第４プロセッサと、
を有する構成であることを特徴とする請求項１に記載の情報処理装置。
【請求項１２】
前記通信部対応のデバイスドライバは、
前記通信部を介するデータ送信処理に対応する送信ドライバと、
前記通信部を介するデータ受信処理に対応する受信ドライバと、
によって構成され、
前記送信ドライバおよび受信ドライバは、各々異なるプロセッサにより実行される構成であることを特徴とする請求項１に記載の情報処理装置。
【請求項１３】
前記情報処理装置は、さらに、
前記通信部を介するデータ通信に適用する通信プロトコルに対応する通信制御処理を実行するプロトコルスタックに基づく処理を実行するプロセッサを、通信プロトコルの各々に応じて異なるプロセッサとした構成を有することを特徴とする請求項１に記載の情報処理装置。
【請求項１４】
複数のプロセッサを有する情報処理装置における情報処理方法であり、
オペレーティングシステムに基づいた処理を実行する第１プロセッサと異なる第２プロセッサが、通信部の設定する割り込みステータスの読み出し処理を実行するステップと、
前記第２プロセッサが、読み出した割り込みステータスに従って処理を決定し、決定した処理を実行するステップと、
を有することを特徴とする情報処理方法。
【請求項１５】
複数のプロセッサを有する情報処理装置において通信処理制御を実行させるコンピュータ・プログラムであり、
オペレーティングシステムに基づいた処理を実行する第１プロセッサと異なる第２プロセッサに、通信部の設定する割り込みステータスの読み出し処理を実行させるステップと、
前記第２プロセッサに、読み出した割り込みステータスに従って処理を決定させ、決定した処理を実行させるステップと、
を有することを特徴とするコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、および情報処理方法、並びにコンピュータ・プログラムに関する。さらに詳細には、マルチプロセッサ構成を持ち、複数のプロセッサを利用したデータ処理を実行する構成において、例えば通信処理などに起因するデータ処理効率の低下を防止した構成を持つ情報処理装置、情報処理方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【０００２】
昨今、例えばＰＣ等の情報処理装置において、複数のプロセッサ（ＣＰＵ）を搭載し、様々なデータ処理を複数のプロセッサを並列に利用しながら実行する、いわゆるマルチプロセッサ構成を有する情報処理装置が利用されている。また、その中で、複数のＣＰＵの各々に異なる役割を設定したマルチプロセッサ環境は非対称マルチプロセッサ環境と呼ばれる。
【０００３】
このような非対称マルチプロセッサ環境においては、例えば、１のメインＣＰＵ（以下、「ＰＰＵ（Ｐｏｗｅｒ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）」という）が設けられると共に、複数のサブのＣＰＵ（以下、「ＳＰＵ（Ｓｙｎｅｒｇｉｓｔｉｃ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）」という）が設けられる。各プロセッサは、例えば、
（１）ＰＰＵが、ＯＳに基づく処理を実行すると共に、
（２）各ＳＰＵが、エンコード／デコード機能、或いは、音声や画像などの処理に特化したＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）機能等、一部の機能に特化した処理を実行することとなる。
【０００４】
なお、ＳＰＵは、一般的なＤＳＰよりも汎用なプログラムを実行できるように設計されていることから、ＤＳＰを用いた場合と比較すると、処理上のアドバンテージが大きくなる。非対称マルチプロセッサを備えた情報処理装置においてネットワーク通信を伴うデータ処理を実行させる場合の処理階層の一例を図１に示す。図１に示すように、データ通信を実行するネットワークカード１０１を最下層として、その上位にデータ処理を実行するプロセッサが設定される。ＰＰＵ１１１は、ＯＳを実行する主たるプロセッサである。ＳＰＵ−ｎ１２１は、それぞれ割り当てられた処理を実行するプロセッサである。
【０００５】
ＰＰＵ１１１は、例えば、ＯＳを実行すると共に、例えば、ネットワークカードに対するドライバ１３１、ＴＣＰ／ＩＰ等の通信プロトコルに対応したプロトコルスタック１３２等のプログラム１３０の制御を実行する。最上位層には、通信処理の実行を要求するアプリケーション１４０が設定される。図１に示すように、プロトコルスタック１３２やドライバ１３１などはＯＳと共にメインプロセッサであるＰＰＵ１１１上で動作し、ネットワークカード１０１からの割り込みもＰＰＵ１１１にて処理されることになる。
【０００６】
なお、通信処理を実行する場合、送信データの取得先、あるいは受信データの格納先としてのメモリと、ネットワークカードの間で送受信パケットの受渡しを行なうことが必要となるが、この際、図２に示すようなディスクリプタが用いられる。ディスクリプタは、メモリアクセスのための識別データであり、例えば図２に示すように通信データを構成するパケットがメモリ上のどの場所に置かれているかを示すアドレス（ａｄｄｒｅｓｓ）フィールド、パケットサイズを示すレングス（ｌｅｎｇｔｈ）フィールド、送受信の状態を示すステータス（ｓｔａｔｕｓ）フィールドからなる。
【０００７】
図１に示す情報処理装置においては、上述したようにＯＳを制御するメインプロセッサであるＰＰＵ１１１がネットワークカード１０１からの割り込みを処理する構成となっている。ＰＰＵ１１１によるパケット送受信の流れについて、図３に示すフローチャートを参照して説明する。
【０００８】
まず、ＰＰＵ１１１は、アプリケーションからの通信処理の要求に応じてステップＳ１０１において、パケット送受信するためにメモリ領域を確保して、当該確保したメモリ領域に対応するディスクリプタをドライバ１３１に従って設定する。ステップＳ１０２において、設定したディスクリプタ情報がネットワークカードに通知される。この通知処理は、ネットワークカード１０１に対するレジスタへの書き込みなどによって実行される。
【０００９】
次に、ステップＳ１０３において、ネットワークカード１０１によりディスクリプタに従ったデータ送受信が実行された後、ステップＳ１０４においてＰＰＵ１１１に対する割り込み処理が発生する。ＰＰＵ１１１は、割り込み処理に基づいて、例えばメモリ空間の開放など、予め設定された通信処理後の処理を実行する。
【００１０】
ステップＳ１０３のネットワークカード１０１によるデータ送受信処理は、データ送信時とデータ受信時とでは異なる処理になる。これらの処理の詳細について、図４、図５を参照して説明する。
【００１１】
＜データ送信処理＞
図４は、ネットワークカード１０１において実行されるディスクリプタに従ったデータ送信処理を示すフローチャートである。
【００１２】
このデータ送信処理においてネットワークカード１０１は、図４に示すように、まず、ステップＳ１２１においてディスクリプタの読み出しを実行し、ステップＳ１２２においてディスクリプタの値、すなわちアドレスとレングスに従ったＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）を開始し、ステップＳ１２３でＤＭＡを終了する。この処理は送信データのメモリからの読み出し処理である。ステップＳ１２４において、ネットワークカード１０１は、ＤＭＡの成功の有無、すなわちメモリアクセスの成否をディスクリプタのステータス（ｓｔａｔｕｓ）に書き込み、メモリからのデータ読み出しに成功した場合は、データ送信を実行する。
【００１３】
次に、ステップＳ１２５において、ネットワークカード１０１は、未処理のディスクリプタの有無を確認し、未処理ディスクリプタがある場合、ステップＳ１２１からの処理を繰り返し実行し、未処理ディスクリプタが無くなった時点でステップＳ１２６に処理を進める。この結果、データ送信の成功の有無を示す送受信ステータスがネットワークカード対応のレジスタに書き込まれ（ステップＳ１２６）、ＰＰＵ１１１に対する割り込み通知処理が実行される（ステップＳ１２７）。
【００１４】
＜データ受信処理＞
一方、データ受信処理において、ネットワークカード１０１は、図５に示すように、まず、ディスクリプタの読み出しを実行し（ステップＳ１３１）、ステップＳ１３２においてパケットの受信が確認されると、ディスクリプタの値に従ったＤＭＡを実行し、受信データのメモリに対する書き込み処理を行う（ステップＳ１３３及びＳ１３４）。
【００１５】
次に、ネットワークカード１０１は、ステップＳ１３３及びＳ１３４におけるＤＭＡの成功の有無、すなわちメモリアクセスの成否をディスクリプタのステータスフィールドに書き込むと共に、レングスフィールドに、実際のパケットサイズを書き込む（ステップＳ１３５）。その後、ステップＳ１３６において、データ受信の成功の有無を示す送受信ステータスがネットワークカード対応のレジスタに書き込まれ、ステップＳ１３７においてＰＰＵ１１１に対する割り込み通知処理が実行される。
【００１６】
ネットワークカード１０１によるＤＭＡに基づくデータ送受信処理が完了すると、ＰＰＵ１１１では割り込み処理が実行される。ネットワークカードからのこの割り込み通知によるＰＰＵ１１１の割り込み処理シーケンスについて図６に示すフローチャートを参照して説明する。
【００１７】
まず、ステップＳ１４１において、ネットワークカード１０１からの割り込みをＰＰＵが受信すると、ＰＰＵ１１１はレジスタ退避などを行なって、現在実行中のプロセスを中断するための処理を行ない（ステップＳ１４２）、割り込みハンドラを起動させる（ステップＳ１４３）。この割り込みハンドラ起動処理のフローチャートを図７に示す。
【００１８】
まず、この処理において、ＰＰＵ111は、割り込み要因を確認するために、ネットワークカードのステータスをネットワークカード対応のレジスタから読み出す処理を実行する（ステップＳ１５１）。このステータスは、図４のステップＳ１２６、または図５のステップＳ１３６においてネットワークカード１０１によって書き込まれたデータ送受信の成功またはエラーのデータ送受信ステータスである。
【００１９】
次いで、ＰＰＵ１１１は、ステータスの送信が完了したか否かを判定する状態となり（ステップＳ１５２）、「ｎｏ」と判定すると、そのまま、処理をステップＳ１５４に進める一方、「ｙｅｓ」と判定した場合、送信データが格納されていたメモリ領域を解放した後（ステップＳ１５３）、処理をステップＳ１５４に進める。このステップＳ１５４においてステータスが受信完了であると判定された場合、ＰＰＵ１１１は、受信パケットをプロトコルスタックへ渡す（ステップＳ１５５）。ステップＳ１５６において、ステータスがエラーであると判定された場合、ＰＰＵ１１１はネットワークカードのリセットを行なう（ステップＳ１５７）。最後にステップＳ１５８においてＰＰＵ１１１は割り込みステータスのクリアを行ない、割り込みハンドラ起動処理を終了する。
【００２０】
この図７に示す処理を図６のステップＳ１４３において実行した後、ステップＳ１４４に進み、退避したレジスタの内容を回復するなどしてプロセスの復帰処理を行なう。
【００２１】
以上の構成の下では、割り込み処理が発生するとＰＰＵは現在実行中のプロセスを中断する必要がある。従って、ネットワーク通信が高速になり頻繁に発生するとプロセスの中断回数が増加することになる。割り込み処理は、キャッシュを破壊したり、メモリアクセスの局所性を破壊したりするので、ＰＰＵにおける処理時間が使用される以上にＰＰＵの処理性能低下をもたらすことになる。
【発明の開示】
【発明が解決しようとする課題】
【００２２】
本発明は、上記問題点に鑑みてなされたものであり、例えばデータ通信処理の発生に伴うデータ処理効率の低下を発生させることのない情報処理装置、および情報処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２３】
本発明の第１の側面は、複数のプロセッサを有する情報処理装置であり、オペレーティングシステムに基づいた処理を実行する第１プロセッサと、通信処理を実行する通信部と、前記通信部対応のデバイスドライバに基づいた処理を実行する第２プロセッサと、を有する。
【００２４】
さらに、本発明の第２の側面は、複数のプロセッサを有する情報処理装置における情報処理方法であり、オペレーティングシステムに基づいた処理を実行する第１プロセッサと異なる第２プロセッサが、通信部の設定する割り込みステータスの読み出し処理を実行するステップと、前記第２プロセッサが、読み出した割り込みステータスに従って処理を決定し、決定した処理を実行するステップと、を有する。
【００２５】
さらに、本発明の第３の側面は、複数のプロセッサを有する情報処理装置において通信処理制御を実行させるコンピュータ・プログラムであり、オペレーティングシステムに基づいた処理を実行する第１プロセッサと異なる第２プロセッサに、通信部の設定する割り込みステータスの読み出し処理を実行させるステップと、前記第２プロセッサに、読み出した割り込みステータスに従って処理を決定させ、決定した処理を実行させるステップと、を有することを特徴とする。
【発明の効果】
【００２６】
本発明の一実施例の構成によれば、複数のプロセッサを有しネットワークを介した通信を行なう情報処理装置において、オペレーティングシステム（ＯＳ）の制御を実行するメインプロセッサと異なるサブプロセッサに、通信部対応のデバイスドライバの制御を実行させ、通信部としてのネットワークカードからの割り込みに基づく通信制御をサブプロセッサにおいて実行する構成としたので、メインプロセッサのデータ処理の遅延を発生させることなくデータ処理を効率的に実行するこが可能となる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明の情報処理装置、および情報処理方法、並びにコンピュータ・プログラムの詳細について説明する。
【００２８】
［実施例１］
まず、図８を参照して、本発明の情報処理装置の構成例について説明する。本発明に係る情報処理装置は、前述した非対称マルチプロセッサ環境と同様に、１つのＰＰＵと、８つのＳＰＵによって構成される。
【００２９】
図８に示すように、ＰＰＵ２１１は、ＰＰＥ（Ｐｏｗｅｒ  Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ）２１０中に構成され、８つのＳＰＵ２２１は、それぞれ個別のＳＰＥ（Ｓｙｎｅｒｇｉｓｔｉｃ  Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ）２２０中に構成される。ＰＰＵ２１１がＯＳを制御するメインプロセッサとして機能し、８つのＳＰＵ２２１は、それぞれの役割に従った処理を実行するサブプロセッサである。
【００３０】
ＰＰＥ２１０は、２段階のキャッシュメモリとしてのＬ１キャッシュ２１２、Ｌ２キャッシュ２１３を有する。また、ＳＰＥ２２０は、Ｌ１キャッシュと同等の速度で動作するローカルストア（ＬＳ）２２２と呼ばれるメモリ空間を保有する。ＳＰＥ２２０からのメインメモリ（ＸＤＲ）２３２に対するアクセスは、主にメモリフローコントローラ（ＭＦＣ）２２３を介したＤＭＡアクセスとして行われる。図に示すように、メインメモリ２３２は、メモリインタフェース・コントローラ（ＭＩＣ）２３１を介して接続され、さらに、通信部としてのネットワークカード２４２は、入出力コントローラ（ＩＯＣ）２４１を介して接続されている。
【００３１】
図９を参照して本発明の第１実施例に係る情報処理装置における処理階層としてのレイヤ構成について説明する。図９は、ネットワーク通信を実行する場合の処理階層を示す。本発明の第１実施例では、図９に示すように、ネットワークカードに対応するデバイスドライバを１つのサブプロセッサＳＰＵ上に実装する。
【００３２】
図９に示すように、データ通信を実行する通信部としてのネットワークカード３０１を最下層として、その上位にデータ処理を実行するプロセッサが設定される。なお、特許請求の範囲における「通信部」は、例えば、ネットワークカード３０１に相当し「第１プロセッサ」は、例えば、ＰＰＵ３１１に相当し、「第２プロセッサ」は、例えば、ＳＰＵ−１〜８に相当するものである。
【００３３】
ＰＰＵ３１１は、ＯＳ、例えばＴＣＰ／ＩＰ等の通信プロトコルに対応したプロトコルスタック３３１等のプログラム３３０を実行する。プロトコルスタック３３１は、ネットワークカード３０１を介したデータ通信を制御するための通信制御プログラムである。最上位層には、ネットワークカード３０１を介したデータ通信の実行を要求するアプリケーション３４０が設定される。
【００３４】
ここで、上述したように従来の非対称マルチプロセッサ環境においては、ドライバに基づく処理をＰＰＵにより実行する構成が採用されていた。このため、パケットの送受信が発生すると、割り込み処理が発生し、ＰＰＵおいて実行中のプロセスが一時的に中断されてしまう事態が招来する。この割り込みに起因するＰＰＵの処理中断は、意図せぬＰＰＵの性能低下をもたらし、充分にプロセッサの能力を生かしきれない一因となる。
また、パケットの送受信をＰＰＵに対する割り込みにより行った場合、
（１）パケットを送信してからメモリを解放するまで、
（２）パケットを受信してからプロトコルスタックに渡すまで、更には、
（３）ハンドラが起動するまで、
の各々のタイミングで遅延が生じる。
このため、この遅延時間を吸収するために、バッファに容量的な余裕が必要となってしまい、バッファ資源の無駄遣いが発生することとなる。
【００３５】
一方、ネットワークカード側の視点に立つと、ＰＰＵの処理能力がボトルネックとなって、十分高帯域なネットワークが利用可能にも関わらず、その帯域を有効に利用した通信ができないという事態も招来する。
【００３６】
これらの要因は、ＰＰＵにパケットの送受信をハンドルさせていることに起因するものと想定されることから、本実施例では、ネットワークカード３０１に対応するドライバ３５０を何れかのＳＰＵ−１乃至８上に実装し、ＳＰＵ−１乃至８においてドライバ３５０を実行することとした。この構成により、ネットワークカード３０１からの割り込みがＳＰＵ−１乃至８により処理されるようになり、ドライバ３５０を動かすために使用されていたＰＰＵの処理時間が開放されるだけでなく、割り込み処理に因って作業が中断する可能性があったＰＰＵ上で動く全てのプログラムに対する影響も回避可能となる。また、この構成の下では、デバイスドライバ以外のプログラムがＳＰＵ−１乃至８上で動作しておらず、ＤＭＡ転送のための割り込み処理の実行中に、他のアプリケーションによる割り込みが発生するといったことが起こらないため、ネットワークカードからの割り込みに対してより素早く反応することが可能となる。つまり、送受信データの受け渡しを細かい粒度で行えるため、受け渡しに要するバッファサイズを小さくすることも可能となるのである。
【００３７】
なお、図９では、形式的にドライバ３５０をＳＰＵ−１，３２１−１上に実装しているが、ドライバ３５０は、サブプロセッサＳＰＵ−１，３２１−１以外のその他のサブプロセッサＳＰＵ−２〜上に実装するようにしても良く、この場合であっても、何ら本実施例特有の効果を損なうことは無い。
【００３８】
また、本実施例のように、ネットワークカード３０１からの割り込みをＳＰＵ−１，３２１−１で動作するデバイスドライバ３５０に通知するためには、マルチプロセッサ環境において任意のプロセッサに対して割り込み可能なネットワークカードが求められる。
【００３９】
任意のプロセッサに対して割り込み可能なネットワークカードの構成例について、図１０、図１１を参照して説明する。図１０は、ネットワークカード３０１の機能的構成例を示すブロック図である。ネットワークカード３０１の送受信部３５１は、ネットワークに送信された信号を取得し、ネットワークから取得した信号に対応するデータのうち、ネットワークカード３０１が組み込まれた端末が受信すべきイーサネット（登録商標）フレームやＩＰパケットなどのデータを受信する。なお、送受信部３５１が準拠すべき通信形式については任意であり、有線及び無線の何れの通信形式を取るようにしても良い。
【００４０】
アドレス解析部３５２は、送受信部３５１が受信したデータ（例えばＩＰパケット）の宛先ＩＰアドレスをチェックし、テーブル管理部３５３により記憶されているテーブルを検索する。テーブル管理部３５３は、例えば、図１１に示されるようなＩＰアドレスとＳＮＲ（Ｓｉｇｎａｌ  Ｎｏｔｉｆｉｃａｔｉｏｎ  Ｒｅｇｉｓｔｅｒ）とを対応付けたテーブルを記憶している。
【００４１】
ＳＮＲは、図１０に示すようにプロセッサ毎に設けられ、各種のデバイスとの間での同期をとるためのレジスタである。例えば、情報処理装置に組み込まれた各種のデバイスが、所定のプロセッサに対して割り込みを行う場合、割り込みを行うべきプロセッサに対応するＳＮＲに割り込みが発生したこと表すデータなどを書き込む。そして、そのＳＮＲに対応するプロセッサがＳＮＲに書き込まれたデータに基づいて、例えば、デバイスから供給されるデータを図示せぬメモリの所定のエリアに移動させるなどの割り込み処理を実行する。
【００４２】
本実施例に係る情報処理装置は、複数のプロセッサを有し、それぞれのプロセッサにおいて異なるデータ処理を実行する非対称マルチプロセッサ環境を持つ装置であり、このような装置ではネットワークカード３０１が例えばデータ受信を行った場合、プロセッサに割り込みを通知する前に、予めどのプロセッサで受信されるべきデータであるかを特定する必要がある。そこで、図１１に示されるようなテーブルを参照することで、ネットワークカード３０１が予めどのプロセッサで受信されるべきデータであるかを特定する。
【００４３】
例えば、各プロセッサあるいはプロセッサの実行するアプリケーション等のプログラムに対してそれぞれ異なるＩＰアドレスを付与し、図１１に示されるようなＩＰアドレスとＳＮＲ（Ｓｉｇｎａｌ  Ｎｏｔｉｆｉｃａｔｉｏｎ  Ｒｅｇｉｓｔｅｒ）とを対応付けたテーブルに基づいて、受信データ（ＩＰパケット）に対応するＳＮＲを特定して、特定したプロセッサに割り込みを実行する。
【００４４】
すなわち、図１０に示すネットワークカード３０１の割り込み発生部３５４は、アドレス解析部３５２からの指令に基づいて、所定のＳＮＲに対してＩＰパケットの受信を通知することで割り込みを発生させる。すなわち、割り込み発生部３５４は、アドレス解析部３５２がテーブル管理部３５３により記憶されているテーブルに基づいて特定したプロセッサに対応するＳＮＲにネットワークカード３０１からの割り込みが発生したこと表すデータなどを書き込む。そして、そのＳＮＲに対応するプロセッサ（例えば、ＳＰＵ−１）がＳＮＲに書き込まれたデータに基づいて割り込み処理を実行する。
【００４５】
なお、図９に示す構成において、ＰＰＵ３１１やＳＰＵ３２１がネットワークカード３０１を利用したデータ通信を実行する場合、送受信データの格納メモリ領域であるメインメモリ（ＸＤＲ）やローカルストア（ＬＳ）と、ネットワークカード３０１のアドレス空間としてのＩ／Ｏアドレス空間とをマッピングする処理が必要となる。図１２を参照してマッピング処理構成について説明する。メインメモリ（ＸＤＲ）やローカルストア（ＬＳ）は、有効アドレス（ＥＡ：Ｅｆｆｅｃｔｉｖｅ  Ａｄｄｒｅｓｓ）と呼ばれる６４ビットのアドレス空間にマップされており、任意の有効アドレス（ＥＡ）を各種のサイズ（例えば４Ｋ，６４Ｋ，１Ｍ，１６Ｍ）で、ネットワークカード３０１のアドレス空間としてのＩ／Ｏアドレス空間にマップすることが可能な構成となっている。たとえば、デバイスがディスクリプタやパケットデータをＤＭＡ転送するためにアドレス空間にアクセスした場合を想定する。この場合、Ｉ／Ｏページテーブル（ＩＯＰＴ）を用いて有効アドレス（ＥＡ）が特定され、送受信データの格納メモリ領域であるメインメモリ（ＸＤＲ）やローカルストア（ＬＳ）と、ネットワークカード３０１のアドレス空間としてのＩ／Ｏアドレス空間とのマッピングが実行される。
【００４６】
このように、本実施例ではＳＰＵ−１，３２１−１をドライバ３５０の実行用とした構成を採用したため、上記の効果に加えて、デバイスドライバが１つのＳＰＵを使いつづけても他のプログラムに影響を与えないという副次的な効果も発生する。この結果、送受信の完了処理をポーリングを用いて行うことが可能となる。ポーリングによるデータ送受信完了シーケンスについて、図１３に示すフローを参照して説明する。
【００４７】
ネットワークカード対応のデバイスドライバの制御プロセッサであるＳＰＵは、ステップＳ２０１において、割り込み要因を確認するためにネットワークカードのステータスを、ネットワークカード対応のレジスタから読み出す処理を実行する。このステータスは、先に説明した図４のステップＳ１２６、または図５のステップＳ１３６においてネットワークカードによって書き込まれたデータ送受信の成功またはエラーのデータ送受信ステータスに相当する。ステップＳ２０２においてステータスが空であると判定した場合、ＳＰＵは、ステップＳ２０１に戻り繰り返しステータスの確認を行なう。
【００４８】
ステップＳ２０３において、ステータスが送信完了であると判断された場合、ＳＰＵは、ステップＳ２０４において、送信データが格納されていた対応するメモリ領域を解放する。ステップＳ２０５においてステータスが受信完了であると判定された場合、ＳＰＵはステップＳ２０６に進み、受信パケットをプロトコルスタックへ渡す。ステップＳ２０７において、ステータスがエラーであると判定された場合、ＳＰＵはステップＳ２０８に進みネットワークカードのリセットを行なう。最後にステップＳ２０９において割り込みステータスのクリアを行ない、割り込み処理を終了する。
【００４９】
なお、この図１３に示す処理を繰り返し実行する場合には、デバイスドライバの制御プロセッサであるＳＰＵが、割り込みステータスを繰り返し確認することが必要となる。割り込みステータスの状態は、ネットワークカード対応のレジスタに記録され、ＳＰＵは、そのレジスタを参照することが必要となるが、例えば、図１４に示すように、ネットワークカードの処理として、レジスタ値のコピーデータをＳＰＵの参照可能なメモリ（ＲＡＭ）３５５に記録する処理を実行させる構成とすれば良い。この場合、ＳＰＵがメモリ（ＲＡＭ）３５５内の割り込みステータス記録領域３５６を読み取ることで、割り込みステータスを知ることが可能となる。この構成によれば、ＳＰＵは、デバイスのレジスタに対する読み出しアクセスではなくメモリに対する読み出しを行えばよくなり、レジスタ参照に比較してより高速化した処理が可能となる。
【００５０】
なお、図９に示すレイヤ構成では、例えばＴＣＰやＵＤＰ等のプロトコルスタック３３１は、ＰＰＵ３１１による実行対象として設定され、ネットワークカード３０１対応のドライバ３５０がＳＰＵ−１，３２１−１の実行対象として設定されている。このような構成におけるプロトコルスタックとドライバ間のパケットデータの受け渡しシーケンスについて図１５、図１６に示すフローを参照して説明する。
【００５１】
図１５に示すフローは、ネットワークカード３０１によるデータ送信処理を実行する際のプロトコルスタックとドライバ間のパケットデータの受け渡しシーケンスを説明するフローチャートである。なお、アプリケーションを処理の実行主体として説明する事で発明の把握が容易になることから、以下においては、アプリケーションをフローチャートの実行主体として説明を行うが、実際の処理主体がこれらアプリケーションを実行するプロセッサである事は言うまでもない。このデータ送信処理に際して、まず、ＰＰＵ３１１により実行されたプロトコルスタック３３１は、アプリケーション３４０から送信対象とするパケットデータを受領する（ステップＳ３０１）。次に、ステップＳ３０２において、プロトコルスタック３３１が、送信データとなるパケットデータの格納先としてのメインメモリ（ＸＤＲ）のアドレスとサイズをドライバに通知する。
【００５２】
次に、ステップＳ３０３において、ＳＰＵ−１，３２１−１により実行されたドライバ３５０が、メモリフローコントローラ（ＭＦＣ）によるＤＭＡによりメインメモリ（ＸＤＲ）上のパケットデータをＳＰＵ−１，３２１−１に対応するローカルストア（ＬＳ）にコピーする。次に、ステップＳ３０４において、ドライバ３５０が、ＭＦＣＤＭＡの完了をプロトコルスタック３３１に通知する。最後にステップＳ３０５において、プロトコルスタック３３１が、パケットデータが利用していたメインメモリ（ＸＤＲ）領域を開放する。
【００５３】
この処理シーケンスによって、アプリケーション３４０が送信対象として設定したデータは、プロトコルスタック３３１からドライバ３５０に渡される。さらに、ＳＰＵ−１，３２１−１に対応するローカルストア（ＬＳ）にコピーされたデータは、先に図１２を参照して説明したマッピング処理によって、ネットワークカード３０１のアドレス空間としてのＩ／Ｏアドレス空間にマップされてネットワークカカードによる送信処理が実行される。
【００５４】
次に、図１６に示すフローを参照して、ネットワークカード３０１によるデータ受信処理を実行する際のプロトコルスタックとドライバ間のパケットデータの受け渡しシーケンスについて説明する。このデータ受信処理に際しては、まず、ステップＳ３２１において、ＰＰＵ３１１により実行された、プロトコルスタック３３１が受信バッファのメインメモリ（ＸＤＲ）上のアドレスとサイズをＳＰＵ−１，３２１−１の実行対象であるドライバ３５０に通知する。
【００５５】
次に、ステップＳ３２２において、ドライバ３５０がＳＰＵ−１，３２１−１に対応するローカルストア（ＬＳ）にネットワークカード３０１が受信した受信パケットデータを記録する。次に、ステップＳ３２３において、ＳＰＵ−１，３２１−１により実行されたドライバ３５０が、メモリフローコントローラ（ＭＦＣ）によるＤＭＡによりローカルストア（ＬＳ）上のパケットデータをメインメモリ（ＸＤＲ）にコピーする。次に、ステップＳ３２４において、ドライバ３５０が、ＭＦＣＤＭＡの完了をプロトコルスタック３３１に通知する。最後にステップＳ３２５において、プロトコルスタック３３１が、受信したパケットデータをアプリケーション３４０に渡す
【００５６】
この処理シーケンスによって、アプリケーション３４０が受信しようとしたデータは、ドライバ３５０からプロトコルスタック３３１に渡された後、プロトコルスタック３３１からアプリケーション３４０に提供される。
【００５７】
［その他の実施例］
図９を参照して説明したレイヤ構成では、１つのサブプロセッサ（図９ではサブプロセッサＳＰＵ−１，３２１−１上にネットワークカード対応のドライジ３５０を設定した構成としたが、その他の構成例について図１７以下を参照して説明する。
【００５８】
（ドライバとプロトコルスタックをＳＰＵによる実行対象とする構成例）
ドライバとプロトコルスタックをＳＰＵの実行対象とする構成例について、図１７を参照して説明する。図１７は、ネットワークカード対応のドライバ３６１のみならず、さらにプロトコルスタック３６２についてもＯＳ実行プロセッサであるメインプロセッサのＰＰＵ３１１ではなく、１つのサブプロセッサ、図に示す例では、ＳＰＵ−１，３２１−１の実行対象として設定した例である。
【００５９】
この実施例では、図９を参照して説明した例と異なり、プロトコルスタック３６２についてもＰＰＵ３１１の制御対象から除かれるので、ＰＰＵ３１１の処理負荷はさらに軽減されることになる。プロトコルスタックをＳＰＵ上で動作させる構成とすることで、例えば、ＰＰＵの実行対象となるプロトコルスタックとは異なるプロトコルスタックをＳＰＵの実行用に実装した場合であっても、ＰＰＵ上のプロトコルスタックを利用する他の通常アプリケーションには影響しないため、パケットサイズや再送アルゴリズムなどに関してＳＰＵに特化したプロトコルスタックへの変更が容易となるというメリットがある。
【００６０】
（ドライバとプロトコルスタックとアプリケーションをＳＰＵの実行対象とする構成例）
ドライバとプロトコルスタックとアプリケーションをＳＰＵの制御下とする構成例について図１８を参照して説明する。図１８は、ネットワークカード対応のドライバ３６５のみならず、さらにプロトコルスタック３６６、およびアプリケーション３６７についてもＰＰＵ３１１ではなく、１つのＳＰＵ、図に示す例では、ＳＰＵ−１，３２１−１の実行対象として設定した例である。なおアプリケーション３６７はネットワークカード３０１を適用した通信処理を実行するアプリケーションである。図に示さないその他のアプリケーションも存在し、それらのアプリケーションは、それぞれＰＰＵやその他のＳＰＵにより実行される。
【００６１】
図１８に示すように、アプリケーション３６７もドライバ３６５、プロトコルスタック３６６と同じＳＰＵ上に実装すると、ＰＰＵとＳＰＵの間でパケットデータを受け渡しする必要がなくなり、ＰＰＵの性能や負荷に全く影響されずに通信を行うことが可能となる。
【００６２】
（ドライバとプロトコルスタックとアプリケーションの各々が異なるＰＰＵ，ＳＰＵにより実行される構成例）
次に、ドライバとプロトコルスタックとアプリケーションの各々が異なるＰＰＵ，ＳＰＵにより実行される構成について図１９、図２０を参照して説明する。図１９は、デバイスドライバ３７１と、プロトコルスタック３７２と、アプリケーション３７３の各々が異なるＰＰＵ、ＳＰＵにより実行される構成例である。図１９に示す例では、
ドライバ３７１は、ＳＰＵ−１，３２１−１、
プロトコルスタック３７２は、ＳＰＵ−２，３２１−２、
アプリケーション３４０は、ＰＰＵ３１１、
上記の各プロセッサにより実行される。
【００６３】
また、図２０に示す例では、
ドライバ３８１は、ＳＰＵ−１，３２１−１、
プロトコルスタック３８２は、ＳＰＵ−２，３２１−２、
アプリケーション３８３は、ＳＰＵ−３，３２１−３、
上記の各プロセッサにより実行される。
【００６４】
このような構成とすることで、各プロセッサの処理負荷は分散され、１つのプロセッサの負荷が過大になることが防止される。
【００６５】
（ドライバを送信部分と受信部分に分割して異なるＳＰＵにより処理させる構成例）
次に、ネットワークカード対応のドライバを送信部分と受信部分に分割して異なるＳＰＵにより処理させる構成例について説明する。図２１は、ネットワークカード３０１対応のドライバを送信部分と受信部分に分割し、
送信ドライバ３９１を、ＳＰＵ−１，３２１−１、
受信ドライバ３９２を、ＳＰＵ−２，３２１−２、
上記の各プロセッサにより実行させる構成としたものである。
この構成によれば、データ送信と、データ受信の各処理のドライバ制御を個別のプロセッサで実行可能となる。
【００６６】
（プロトコルスタックをプロトコル種類に応じて異なるＳＰＵで実行させる構成例）
次に、プロトコルスタックをプロトコル種類に応じて異なるＳＰＵで実行させる構成例について説明する。図２２は、プロトコルスタックをＴＣＰとＵＤＰ各々のプロトコルによって分割して、
ＴＣＰプロトコルスタック４０１を、ＳＰＵ−１，３２１−１、
ＵＤＰプロトコルスタック４０２を、ＳＰＵ−２，３２１−２、
上記の各プロセッサにより実行させる構成としたものである。
なお、図２２に示す構成では、
ドライバ４０３は、ＳＰＵ−３，３２１−３により実行される構成として示してある。
この構成によれば、プロトコルに応じてＳＰＵを使い分けることが可能となり、各プロトコルに特化した処理を各プロセッサにおいて実行させる処理構成を容易に構築することが可能となる。
【００６７】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
【００６８】
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアに基づく処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【００６９】
例えば、プログラムは記録媒体としてのハードディスクやＲＯＭ（Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)，ＭＯ(Magneto optical)ディスク，ＤＶＤ(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納（記録）しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
【００７０】
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、ＬＡＮ(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【００７１】
なお、上記実施例においては、ＴＣＰ／ＩＰをプロトコルとして利用した場合について説明したが、ＲＴＰ／ＵＤＰ／ＩＰ等、他のプロトコルに関しても同様の構成により対応可能である。
【００７２】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【００７３】
上述したように、本発明の一実施例の構成によれば、複数のプロセッサを有しネットワークを介した通信を行なう情報処理装置において、オペレーティングシステム（ＯＳ）の制御を実行するメインプロセッサ（ＣＥＬＬにおけるＰＰＵ）と異なるサブプロセッサ（ＣＥＬＬにおけるＳＰＵ）に、通信部対応のデバイスドライバの制御を実行させ、通信部としてのネットワークカードからの割り込みに基づく通信制御をサブプロセッサにおいて実行する構成としたので、メインプロセッサのデータ処理の遅延を発生させることなくデータ処理を効率的に実行するこが可能となる。
【図面の簡単な説明】
【００７４】
【図１】ＣＥＬＬを備えた情報処理装置においてネットワーク通信を伴うデータ処理を実行させる場合の処理階層の例を示す図である。
【図２】ディスクリプタの構成例について説明する図である。
【図３】ＰＰＵによるパケット送受信の流れについて説明するフローチャートを示す図である。
【図４】ネットワークカードにおいて実行されるディスクリプタに従ったデータ送信処理のシーケンスについて説明するフローチャートを示す図である。
【図５】ネットワークカードにおいて実行されるディスクリプタに従ったデータ受信処理のシーケンスについて説明するフローチャートを示す図である。
【図６】ネットワークカードからのこの割り込み通知によるＰＰＵの割り込み処理シーケンスについて説明するフローチャートを示す図である。
【図７】割り込みハンドラ起動処理の詳細シーケンスについて説明するフローチャートを示す図である。
【図８】本発明の情報処理装置の構成例について説明する図である。
【図９】本発明の第１実施例に係る情報処理装置における処理階層としてのレイヤ構成について説明する図である。
【図１０】ネットワークカードの機能的構成例を示すブロック図である。
【図１１】ＩＰアドレスとＳＮＲ（Ｓｉｇｎａｌ  Ｎｏｔｉｆｉｃａｔｉｏｎ  Ｒｅｇｉｓｔｅｒ）とを対応付けたテーブル構成例について説明する図である。
【図１２】送受信データの格納メモリ領域であるメインメモリ（ＸＤＲ）やローカルストア（ＬＳ）と、ネットワークカードのアドレス空間としてのＩ／Ｏアドレス空間とをマッピングする処理について説明する図である。
【図１３】ポーリングによるデータ送受信完了シーケンスについて説明するフローチャートを示す図である。
【図１４】レジスタ値のコピーデータをＳＰＵの参照可能なメモリ（ＲＡＭ）に記録する処理を実行させるための構成例について説明する図である。
【図１５】プロトコルスタックとドライバ間のパケットデータの受け渡しシーケンスについて説明するフローチャートを示す図である。
【図１６】プロトコルスタックとドライバ間のパケットデータの受け渡しシーケンスについて説明するフローチャートを示す図である。
【図１７】ドライバとプロトコルスタックをＳＰＵの実行対象とする構成例について説明する図である。
【図１８】ドライバとプロトコルスタックとアプリケーションをＳＰＵの実行対象とする構成例について説明する図である。
【図１９】ドライバとプロトコルスタックとアプリケーションの各々が異なるＰＰＵ，ＳＰＵにより実行される構成例について説明する図である。
【図２０】ドライバとプロトコルスタックとアプリケーションの各々が異なるＰＰＵ，ＳＰＵにより実行される構成例について説明する図である。
【図２１】ネットワークカード対応のドライバを送信部分と受信部分に分割して異なるＳＰＵで実行させる構成例について説明する図である。
【図２２】プロトコルスタックをプロトコル種類に応じて異なるＳＰＵで実行させる構成例について説明する図である。
【符号の説明】
【００７５】
１０１  ネットワークカード
１１１  ＰＰＵ（Ｐｏｗｅｒ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）
１２１  ＳＰＵ（Ｓｙｎｅｒｇｉｓｔｉｃ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）
１３０  プログラム
１３１  ドライバ
１３２  プロトコルスタック
１４０  アプリケーション
２１０  ＰＰＥ（Ｐｏｗｅｒ  Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ）
２１１  ＰＰＵ（Ｐｏｗｅｒ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）
２１２  Ｌ１キャッシュ
２１３  Ｌ２キャッシュ
２２０  ＳＰＥ（Ｓｙｎｅｒｇｉｓｔｉｃ  Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ）
２２１  ＳＰＵ（Ｓｙｎｅｒｇｉｓｔｉｃ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）
２２２  ＬＳ（ローカルストア）
２２３  ＭＦＣ（メモリフローコントローラ）
３０１  ネットワークカード
３１１  ＰＰＵ（Ｐｏｗｅｒ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）
３２１  ＳＰＵ（Ｓｙｎｅｒｇｉｓｔｉｃ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）
３３０  プログラム
３３１  プロトコルスタック
３４０  アプリケーション
３５０  ドライバ
３５１  送受信部
３５２  アドレス解析部
３５３  テーブル管理部
３５４  割り込み発生部
３５５  メモリ（ＲＡＭ）
３５６  割り込みステータス記録領域
３６１  ドライバ
３６２  プロトコルスタック
３６５  ドライバ
３６６  プロトコルスタック
３６７  アプリケーション
３７１  ドライバ
３７２  プロトコルスタック
３８１  ドライバ
３８２  プロトコルスタック
３８３  アプリケーション
３９１  送信ドライバ
３９２  受信ドライバ
４０１  ＴＣＰスタック
４０２  ＵＤＰスタック
４０３  ドライバ 
【図１】
2008192128.tif 000003
【図２】
2008192128.tif 000004
【図３】
2008192128.tif 000005
【図４】
2008192128.tif 000006
【図５】
2008192128.tif 000007
【図６】
2008192128.tif 000008
【図７】
2008192128.tif 000009
【図８】
2008192128.tif 000010
【図９】
2008192128.tif 000011
【図１０】
2008192128.tif 000012
【図１１】
2008192128.tif 000013
【図１３】
2008192128.tif 000014
【図１４】
2008192128.tif 000015
【図１５】
2008192128.tif 000016
【図１６】
2008192128.tif 000017
【図１７】
2008192128.tif 000018
【図１８】
2008192128.tif 000019
【図１９】
2008192128.tif 000020
【図２０】
2008192128.tif 000021
【図２１】
2008192128.tif 000022
【図２２】
2008192128.tif 000023
【図１２】
2008192128.tif 000024