(57)【要約】【課題】マルチプロセッサ構成を持つ情報処理装置において改善されたデバイスの利用制御構成を実現する。【解決手段】複数のプロセッサを有するマルチプロセッサ環境において、複数のプロセッサが１つのデバイスに対応するデバイスドライバを起動させたような場合でも、デバイス利用やデバイス利用に際して必要とするメモリなどの資源に対する競合を防止して各プロセッサにおけるデバイス利用処理を着実に実行させる。例えば、プロセッサによるデバイスの利用状態をフラグに基づいて確認可能とした利用制御を行う。本構成により、各プロセッサにおけるデバイス利用処理を着実に実行させることが可能となる。【選択図】図８
2009258937.tif 000002
【特許請求の範囲】
【請求項１】
データ処理を実行するデバイスと、
前記デバイスに対応するデバイスドライバを有する複数のプロセッサを有し、
前記複数のプロセッサの少なくとも１つのプロセッサに対応して設定されたデバイスドライバは、前記デバイスを利用したデータ処理に際して利用する資源がいずれのプロセッサによって利用または利用予定であるかを示す資源フラグを管理する資源状態保持部を有し、
前記複数のプロセッサの少なくとも１つのプロセッサは、前記デバイスの利用予定に応じて前記資源フラグを、自身が利用予定であることを示すフラグ値に設定する処理を実行し、
前記複数のプロセッサの少なくとも１つのプロセッサは、自己のデバイス利用期間において、前記資源フラグの参照処理を実行して他プロセッサによる利用予定を認識した場合に、前記デバイスの利用処理の終了または中断処理を実行する構成である情報処理装置。
【請求項２】
前記デバイスドライバを有する複数のプロセッサの各々は、自己のデバイス利用期間において、前記資源フラグを参照して他プロセッサによる利用予定を確認した場合に、前記デバイスの利用処理の終了または中断処理を実行するとともに、
前記デバイスの利用予定に応じて前記資源フラグを自身が利用予定であることを示すフラグ値に設定する処理を実行する構成である請求項１に記載の情報処理装置。
【請求項３】
前記複数のプロセッサは、
１つのメインプロセッサと、複数のサブプロセッサによって構成され、
前記メインプロセッサに対応して設定されたデバイスドライバが、前記資源フラグを管理する資源状態保持部を有する構成である請求項１に記載の情報処理装置。
【請求項４】
前記デバイスはネットワークカードであり、
前記複数のプロセッサは、前記ネットワークカードに対応するデバイスドライバを有した構成であり、各プロセッサは前記資源フラグの設定に応じたデバイス利用の切り替え処理を行う構成である請求項１に記載の情報処理装置。
【請求項５】
前記複数のプロセッサは、それぞれが異なるアーキテクチャを持つ非対称マルチプロセッサ［ＡＳＰＭ：Ａｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉ  Ｐｒｏｃｅｓｓｉｎｇ］構成である請求項１〜４いずれかに記載の情報処理装置。
【請求項６】
データ処理を実行するデバイスと、
前記デバイスに対応するデバイスドライバを有する複数のプロセッサを有し、
前記デバイスは前記複数のプロセッサの各々に対応するプロセッサ対応レジスタを有し、
前記複数のプロセッサの各々は、前記デバイスに対するデータ処理の要求に応じて、前記プロセッサ対応レジスタに対してデータ処理要求の存在を示す識別情報の書き込みを実行し、
前記デバイスは、前記レジスタの識別情報を取得して、該識別情報によって識別されるデータ処理要求に対応するデータ処理を順次実行する構成である情報処理装置。
【請求項７】
前記デバイスはネットワークカードであり、
前記ネットワークカードは、通信パケットに対応して設定されるディスクリプタに従ってメモリから送信データを取得してデータ送信を実行する構成であり、
前記複数のプロセッサの各々は、メモリのデータ領域に設定した送信データキューに対応するディスクリプタを前記メモリのディスクリプタ領域に個別に設定するとともに、設定したディスクリプタの識別子を前記ネットワークカードのレジスタに格納し、
前記ネットワークカードは、前記レジスタのディスクリプタ識別子を取得してディスクリプタ識別子によって識別されるディスクリプタを前記ディスクリプタ領域から順次取得して、取得ディスクリプタに対応するデータを前記データ領域から取得して送信する構成である請求項６に記載の情報処理装置。
【請求項８】
前記複数のプロセッサは、それぞれが異なるアーキテクチャを持つ非対称マルチプロセッサ［ＡＳＰＭ：Ａｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉ  Ｐｒｏｃｅｓｓｉｎｇ］構成である請求項６〜７いずれかに記載の情報処理装置。
【請求項９】
情報処理装置において実行する情報処理方法であり、
前記情報処理装置は、データ処理を実行するデバイスと、
前記デバイスに対応するデバイスドライバを有する複数のプロセッサを有し、
前記複数のプロセッサの少なくとも１つのプロセッサに対応して設定されたデバイスドライバは、前記デバイスを利用したデータ処理に際して利用する資源がいずれのプロセッサによって利用または利用予定であるかを示す資源フラグを管理する資源状態保持部を有する構成であり、
前記複数のプロセッサの少なくとも１つのプロセッサが、
前記デバイスの利用予定に応じて前記資源フラグを、自身が利用予定であることを示すフラグ値に設定する処理を実行するステップと、
前記複数のプロセッサの少なくとも１つのプロセッサが、
自己のデバイス利用期間において、前記資源フラグの参照処理を実行して他プロセッサによる利用予定を認識した場合に、前記デバイスの利用処理の終了または中断処理を実行するステップと、
を有する情報処理方法。
【請求項１０】
情報処理装置において実行する情報処理方法であり、
前記情報処理装置は、データ処理を実行するデバイスと、
前記デバイスに対応するデバイスドライバを有する複数のプロセッサを有し、
前記デバイスは前記複数のプロセッサの各々に対応するプロセッサ対応レジスタを有する構成であり、
前記複数のプロセッサの各々が、前記デバイスに対するデータ処理の要求に応じて、前記プロセッサ対応レジスタに対してデータ処理要求の存在を示す識別情報の書き込みを実行するステップと、
前記デバイスが、前記レジスタの識別情報を取得して、該識別情報によって識別されるデータ処理要求に対応するデータ処理を順次実行するステップと、
を有する情報処理方法。
【請求項１１】
情報処理装置において情報処理を実行させるコンピュータ・プログラムであり、
前記情報処理装置は、データ処理を実行するデバイスと、
前記デバイスに対応するデバイスドライバを有する複数のプロセッサを有し、
前記複数のプロセッサの少なくとも１つのプロセッサに対応して設定されたデバイスドライバは、前記デバイスを利用したデータ処理に際して利用する資源がいずれのプロセッサによって利用または利用予定であるかを示す資源フラグを管理する資源状態保持部を有する構成であり、
前記複数のプロセッサの少なくとも１つのプロセッサに、
前記デバイスの利用予定に応じて前記資源フラグを、自身が利用予定であることを示すフラグ値に設定する処理を実行させるステップと、
前記複数のプロセッサの少なくとも１つのプロセッサに、
自己のデバイス利用期間において、前記資源フラグの参照処理を実行して他プロセッサによる利用予定を認識した場合に、前記デバイスの利用処理の終了または中断処理を実行させるステップと、
を有するコンピュータ・プログラム。
【請求項１２】
情報処理装置において情報処理を実行させるコンピュータ・プログラムであり、
前記情報処理装置は、データ処理を実行するデバイスと、
前記デバイスに対応するデバイスドライバを有する複数のプロセッサを有し、
前記デバイスは前記複数のプロセッサの各々に対応するプロセッサ対応レジスタを有する構成であり、
前記複数のプロセッサの各々に、前記デバイスに対するデータ処理の要求に応じて、前記プロセッサ対応レジスタに対してデータ処理要求の存在を示す識別情報の書き込みを実行させるステップと、
前記デバイスに、前記レジスタの識別情報を取得して、該識別情報によって識別されるデータ処理要求に対応するデータ処理を順次実行させるステップと、
を有するコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、および情報処理方法、並びにコンピュータ・プログラムに関する。さらに詳細には、マルチプロセッサ構成を持ち、複数のプロセッサを利用したデータ処理を行う情報処理装置、情報処理方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【０００２】
近年、複数のプロセッサ（ＣＰＵ）を搭載し、複数プロセッサの並列処理により効率的なデータ処理を実現するマルチプロセッサ型の情報処理装置が増加する傾向にある。しかし、このようなマルチプロセッサ環境において、例えばネットワークカードやビデオカードなどの様々なデバイスに対応するデバイスドライバを複数のプロセッサ上で同時に動作させてしまうと問題を生じる場合がある。
【０００３】
例えば、複数のプロセッサが、１つのネットワークカード対応のデバイスドライバを同時に動作させた場合、各プロセッサがそれぞれのプロセス進行状況に応じてデバイス（ネットワークカード）状態を変更するといったことが発生する。この結果、少なくともいずれか一方のプロセス（例えばデータ通信）にエラーが発生してしまう。このように、デバイスドライバを複数のプロセッサ上で同時に動作させるとデバイス状態やプロセス進行などに関して一貫性が保てなくなってしまい、デバイスだけでなくシステム全体の動作に支障を発生させるという問題がある。
【０００４】
マルチプロセッサシステムにおけるこの問題を解消するいくつかの構成が提案されている。その１つがデバイスアクセスの排他制御を実現する方法である。例えば、特許文献１（特開平０６−２２３０４７（東芝））は、排他制御に起因した障害発生要因がデバイスドライバにあることが判明した場合に、そのドライバを単一のプロセッサでしか動作しないようにするシステム制御方法を開示している。
【０００５】
また、特許文献２（特開平０９−１６０８８３（日立製作所））は、複数のプロセッサを実装した端末がネットワークを介して他の端末と通信する際に、デバイスドライバを常時またはジョブ単位で単一のプロセッサに割り当てるという設定として、ハードウェア競合に伴うプロセッサの停止を回避する構成を開示している。
【０００６】
しかしながら、これらの従来技術は、複数のプロセッサ上で同時に動作するデバイスドライバが共通であることを前提とした解決手法である。つまり対称型マルチプロセッサ［ＳＭＰ：Ｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉ  Ｐｒｏｃｅｓｓｉｎｇ］環境を持つシステムに対応した問題解決方法である。
【０００７】
マルチプロセッサシステムには、上述のような対称型マルチプロセッサ［ＳＭＰ］の他、非対称マルチプロセッサ［ＡＳＰＭ：Ａｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉ  Ｐｒｏｃｅｓｓｉｎｇ］型のシステムがある。
【０００８】
非対称マルチプロセッサ［ＡＳＰＭ］は、複数のＣＰＵの各々に異なる役割を設定したマルチプロセッサ環境で処理を実行する。このような非対称マルチプロセッサ環境においては、例えば、１つのメインプロセッサが設けられると共に、複数のサブプロセッサが設けられる。各プロセッサは、例えば、
（１）メインプロセッサが、ＯＳに基づく処理を実行し、
（２）各サブプロセッサが、エンコード／デコード処理、あるいは、音声や画像などの処理に特化したＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）処理、あるいは通信処理等、一部の特化した処理を実行する、
といった処理機能を分散して様々な処理を効率的に実行させるといった利用がなされる。
【０００９】
このような非対称マルチプロセッサ［ＡＳＰＭ］は、対称型マルチプロセッサ［ＳＰＭ］と異なり、複数のプロセッサ上で同時に動作するデバイスドライバが共通であるとは限らず、異なる仕様のデバイスドライバが各プロセッサにおいて利用される場合がある。このように異なるアーキテクチャを持つデバイスドライバを各プロセッサにおいて利用する構成では、上述の従来技術で開示された手法を適用してもプロセスエラーが発生してしまう可能性が高い。
【００１０】
このような非対称マルチプロセッサシステムの具体化例として、ソニー（株）等によって開発された［Ｃｅｌｌ］がある。［Ｃｅｌｌ］は、複数のプロセッサエレメントを有する。すなわち、
（ａ）メインプロセッサ（ＰＰＵ）を有するメインプロセッサエレメント［ＰＰＥ：ＰｏｗｅｒＰＣ  Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ］が１つ、
（ｂ）サブプロセッサ（ＳＰＵ）を有するサブプロセッサエレメント［ＳＰＥ：Ｓｙｎｅｒｇｉｓｔｉｃ  Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ］が複数（例えば８個）、
これらの複数のプロセッサエレメントによって構成されている。それぞれのエレメントは異なるアーキテクチャを採用している。
【００１１】
このような非対称型マルチプロセッサ環境においては、各プロセッサエレメントにおいてデバイスドライバが異なる構成をとる可能性がある。従って、上述した特許文献１，２に示されるような対称型マルチプロセッサ［ＳＭＰ：Ｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉ  Ｐｒｏｃｅｓｓｉｎｇ）］環境に対応した問題解決手法を採用することができない。すなわち、デバイスドライバが複数のプロセッサ上で同時に動作するような状況が発生するとデバイスだけでなくシステム全体がうまく動作しないという問題が発生する。
【００１２】
非対称マルチプロセッサを備えた情報処理装置においてネットワークカードに対応するデバイスドライバを利用してネットワーク通信を実行する処理例について説明する。なお、以下に説明する例は、メインプロセッサ（ＰＰＵ）のみにネットワークカード対応のデバイスドライバを設定した場合の処理例である。
【００１３】
処理階層の一例を図１に示す。図１に示すように、データ通信を実行するネットワークカード１０１を最下層として、その上位にデータ処理を実行するプロセッサが設定される。メインプロセッサ（ＰＰＵ）１１１は、ＯＳを実行する主たるプロセッサである。サブプロセッサ（ＳＰＵ）−ｎ１２１は、それぞれ割り当てられた処理を実行するプロセッサである。
【００１４】
メインプロセッサ（ＰＰＵ）１１１は、例えば、ＯＳを実行すると共に、例えば、ネットワークカードに対するデバイスドライバ１３１、ＴＣＰ／ＩＰ等の通信プロトコルに対応したプロトコルスタック１３２等のプログラム１３０の制御を実行する。最上位層には、通信処理の実行を要求するアプリケーション１４０が設定される。図１に示すように、プロトコルスタック１３２やデバイスドライバ１３１などはＯＳと共にメインプロセッサであるメインプロセッサ（ＰＰＵ）１１１上で動作し、ネットワークカード１０１からの割り込みもメインプロセッサ（ＰＰＵ）１１１にて処理されることになる。
【００１５】
なお、通信処理を実行する場合、送信データの取得先、あるいは受信データの格納先としてのメモリと、ネットワークカードの間で送受信パケットの受渡しを行なうことが必要となるが、この際、図２に示すようなディスクリプタが用いられる。ディスクリプタは、メモリアクセスのための識別データであり、例えば図２に示すように通信データを構成するパケットがメモリ上のどの場所に置かれているかを示すメモリ上の記録開始アドレスの上位３２ビットを示すアドレス（ｈｉｇｈ）および下位３２ビットを示すアドレス（ｌｏｗ）、並びにパケット長を示す１６ビットのレングスなどの情報が含まれる。
【００１６】
図１に示す情報処理装置においては、上述したようにＯＳを制御するメインプロセッサであるメインプロセッサ（ＰＰＵ）１１１がネットワークカード１０１からの割り込みを処理する構成となっている。
【００１７】
メインプロセッサ（ＰＰＵ）１１１のネットワークカード対応のデバイスドライバ１３１の構成例を図３に示す。デバイスドライバ１３１は、通信処理における初期化処理、例えばメモリの確保やＩＰアドレスの設定などの処理を行なう初期化部１５１、ネットワークカードを利用したデータ送受信処理を実行するメイン処理部１５２、ネットワークカードによる通信処理に際して実行されるメインプロセッサ（ＰＰＵ）に対する割り込み処理を制御する割り込み処理部１５３、さらに、ネットワークケーブルの接続状態の状態値を保持するリンク状態保持部１５５、通信処理可能なインタフェース設定がなされているか否かの情報を格納するインタフェース状態保持部１５６を含む状態保持部１５４を有する。
【００１８】
メインプロセッサ（ＰＰＵ）１１１において、ネットワークカード対応のデバイスドライバ１３１を起動する際の処理シーケンスを説明するフローチャートを図４に示す。まず、ステップＳ１１において、デバイスのレジスタ値を読み書きすることでデバイスの初期化を行なう。次にステップＳ１２において、リンクの検出を行ない、ネットワークケーブルが接続されているかどうかを確認する。リンクが検出されネットワークケーブルの接続確認がなされると、ステップＳ１３に進む。
【００１９】
ステップＳ１３では、ＩＰアドレスやＭＴＵ（Ｍｕｘｉｍｕｍ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｕｎｉｔ）などインタフェース設定を行なう。ここまでのステップＳ１１〜Ｓ１３の処理は、図３に示すデバイスドライバの初期化部１０１にて行なわれる。
【００２０】
次のステップＳ１４の処理は、メイン処理部１０２において実行されるパケットの送受信処理である。なお、割り込み処理とメイン処理とは、メインプロセッサ（ＰＰＵ）１１１において時分割で同時に動作する。メインプロセッサ（ＰＰＵ）１１１によるステップＳ１４の処理、すなわちパケット送受信の流れについて、図５に示すフローチャートを参照して説明する。
【００２１】
まず、メインプロセッサ（ＰＰＵ）１１１は、アプリケーションからの通信処理の要求に応じてステップＳ１０１において、パケット送受信するためにメモリ領域を確保して、確保したメモリ領域に対応するディスクリプタをデバイスドライバ１３１に従って設定する。ステップＳ１０２において、設定したディスクリプタ情報がネットワークカードに通知される。この通知処理は、ネットワークカード１０１に対するレジスタへの書き込みなどによって実行される。
【００２２】
次に、ステップＳ１０３において、ネットワークカード１０１によりディスクリプタに従ったデータ送受信が実行された後、ステップＳ１０４においてメインプロセッサ（ＰＰＵ）１１１に対する割り込み処理が発生する。メインプロセッサ（ＰＰＵ）１１１は、割り込み処理に基づいて、例えばメモリ空間の開放など、予め設定された通信処理後の処理を実行する。
【００２３】
図１〜図５を参照して説明した処理は、メインプロセッサ（ＰＰＵ）にのみネットワークカードに対応するデバイスドライバを設定して通信を行う処理例である。このように、メインプロセッサ（ＰＰＵ）が単独で自己のデバイスドライバを単独で利用してネットワーク通信を行う設定では問題は発生しない。しかし、非対称マルチプロセッサ環境では、メインプロセッサ（ＰＰＵ）以外にそれぞれが異なるアーキテクチャを持つ複数のサブプロセッサ（ＳＰＵ）を有する。従って、それぞれのプロセッサに設定されたデバイスドライバで処理を行うことが想定される。
【００２４】
このように、メインプロセッサ（ＰＰＵ）のみならず、サブプロセッサ（ＳＰＵ）に対してもＳＰＵ対応のデバイスドライバを利用した処理、例えばデバイスとしてネットワークカードを利用した通信を行う構成とした場合、先に説明した問題点が発生する。すなわち、各プロセッサに対応して設定された異なるデバイスドライバが同時に動作する場合が発生し、このような場合、デバイスだけでなくシステム全体の動作に支障を起こすという問題がある。
【特許文献１】特開平０６−２２３０４７号公報
【特許文献２】特開平０９−１６０８８３号公報
【発明の開示】
【発明が解決しようとする課題】
【００２５】
本発明は、例えば上記問題点に鑑みてなされたものであり、非対称型マルチプロセッサ環境に対応したデバイスドライバの競合の防止やデバイスドライバの利用制御を行うことで、エラー発生を防止し、それぞれのプロセッサによる処理にエラーを発生させることなく、効率的に処理を実行させることを可能とした情報処理装置、および情報処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２６】
本発明の第１の側面は、
データ処理を実行するデバイスと、
前記デバイスに対応するデバイスドライバを有する複数のプロセッサを有し、
前記複数のプロセッサの少なくとも１つのプロセッサに対応して設定されたデバイスドライバは、前記デバイスを利用したデータ処理に際して利用する資源がいずれのプロセッサによって利用または利用予定であるかを示す資源フラグを管理する資源状態保持部を有し、
前記複数のプロセッサの少なくとも１つのプロセッサは、前記デバイスの利用予定に応じて前記資源フラグを、自身が利用予定であることを示すフラグ値に設定する処理を実行し、
前記複数のプロセッサの少なくとも１つのプロセッサは、自己のデバイス利用期間において、前記資源フラグの参照処理を実行して他プロセッサによる利用予定を認識した場合に、前記デバイスの利用処理の終了または中断処理を実行する構成である情報処理装置にある。
【００２７】
さらに、本発明の情報処理装置の一実施態様において、前記デバイスドライバを有する複数のプロセッサの各々は、自己のデバイス利用期間において、前記資源フラグを参照して他プロセッサによる利用予定を確認した場合に、前記デバイスの利用処理の終了または中断処理を実行するとともに、前記デバイスの利用予定に応じて前記資源フラグを自身が利用予定であることを示すフラグ値に設定する処理を実行する構成である。
【００２８】
さらに、本発明の情報処理装置の一実施態様において、前記複数のプロセッサは、１つのメインプロセッサと、複数のサブプロセッサによって構成され、前記メインプロセッサに対応して設定されたデバイスドライバが、前記資源フラグを管理する資源状態保持部を有する構成である。
【００２９】
さらに、本発明の情報処理装置の一実施態様において、前記デバイスはネットワークカードであり、前記複数のプロセッサは、前記ネットワークカードに対応するデバイスドライバを有した構成であり、各プロセッサは前記資源フラグの設定に応じたデバイス利用の切り替え処理を行う構成である。
【００３０】
さらに、本発明の情報処理装置の一実施態様において、前記複数のプロセッサは、それぞれが異なるアーキテクチャを持つ非対称マルチプロセッサ［ＡＳＰＭ：Ａｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉ  Ｐｒｏｃｅｓｓｉｎｇ］構成である。
【００３１】
さらに、本発明の第２の側面は、
データ処理を実行するデバイスと、
前記デバイスに対応するデバイスドライバを有する複数のプロセッサを有し、
前記デバイスは前記複数のプロセッサの各々に対応するプロセッサ対応レジスタを有し、
前記複数のプロセッサの各々は、前記デバイスに対するデータ処理の要求に応じて、前記プロセッサ対応レジスタに対してデータ処理要求の存在を示す識別情報の書き込みを実行し、
前記デバイスは、前記レジスタの識別情報を取得して、該識別情報によって識別されるデータ処理要求に対応するデータ処理を順次実行する構成である情報処理装置にある。
【００３２】
さらに、本発明の情報処理装置の一実施態様において、前記デバイスはネットワークカードであり、前記ネットワークカードは、通信パケットに対応して設定されるディスクリプタに従ってメモリから送信データを取得してデータ送信を実行する構成であり、前記複数のプロセッサの各々は、メモリのデータ領域に設定した送信データキューに対応するディスクリプタを前記メモリのディスクリプタ領域に個別に設定するとともに、設定したディスクリプタの識別子を前記ネットワークカードのレジスタに格納し、前記ネットワークカードは、前記レジスタのディスクリプタ識別子を取得してディスクリプタ識別子によって識別されるディスクリプタを前記ディスクリプタ領域から順次取得して、取得ディスクリプタに対応するデータを前記データ領域から取得して送信する構成である。
【００３３】
さらに、本発明の情報処理装置の一実施態様において、前記複数のプロセッサは、それぞれが異なるアーキテクチャを持つ非対称マルチプロセッサ［ＡＳＰＭ：Ａｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉ  Ｐｒｏｃｅｓｓｉｎｇ］構成である。
【００３４】
さらに、本発明の第３の側面は、
情報処理装置において実行する情報処理方法であり、
前記情報処理装置は、データ処理を実行するデバイスと、
前記デバイスに対応するデバイスドライバを有する複数のプロセッサを有し、
前記複数のプロセッサの少なくとも１つのプロセッサに対応して設定されたデバイスドライバは、前記デバイスを利用したデータ処理に際して利用する資源がいずれのプロセッサによって利用または利用予定であるかを示す資源フラグを管理する資源状態保持部を有する構成であり、
前記複数のプロセッサの少なくとも１つのプロセッサが、
前記デバイスの利用予定に応じて前記資源フラグを、自身が利用予定であることを示すフラグ値に設定する処理を実行するステップと、
前記複数のプロセッサの少なくとも１つのプロセッサが、
自己のデバイス利用期間において、前記資源フラグの参照処理を実行して他プロセッサによる利用予定を認識した場合に、前記デバイスの利用処理の終了または中断処理を実行するステップと、
を有する情報処理方法にある。
【００３５】
さらに、本発明の第４の側面は、
情報処理装置において実行する情報処理方法であり、
前記情報処理装置は、データ処理を実行するデバイスと、
前記デバイスに対応するデバイスドライバを有する複数のプロセッサを有し、
前記デバイスは前記複数のプロセッサの各々に対応するプロセッサ対応レジスタを有する構成であり、
前記複数のプロセッサの各々が、前記デバイスに対するデータ処理の要求に応じて、前記プロセッサ対応レジスタに対してデータ処理要求の存在を示す識別情報の書き込みを実行するステップと、
前記デバイスが、前記レジスタの識別情報を取得して、該識別情報によって識別されるデータ処理要求に対応するデータ処理を順次実行するステップと、
を有する情報処理方法にある。
【００３６】
さらに、本発明の第５の側面は、
情報処理装置において情報処理を実行させるコンピュータ・プログラムであり、
前記情報処理装置は、データ処理を実行するデバイスと、
前記デバイスに対応するデバイスドライバを有する複数のプロセッサを有し、
前記複数のプロセッサの少なくとも１つのプロセッサに対応して設定されたデバイスドライバは、前記デバイスを利用したデータ処理に際して利用する資源がいずれのプロセッサによって利用または利用予定であるかを示す資源フラグを管理する資源状態保持部を有する構成であり、
前記複数のプロセッサの少なくとも１つのプロセッサに、
前記デバイスの利用予定に応じて前記資源フラグを、自身が利用予定であることを示すフラグ値に設定する処理を実行させるステップと、
前記複数のプロセッサの少なくとも１つのプロセッサに、
自己のデバイス利用期間において、前記資源フラグの参照処理を実行して他プロセッサによる利用予定を認識した場合に、前記デバイスの利用処理の終了または中断処理を実行させるステップと、
を有するコンピュータ・プログラムにある。
【００３７】
さらに、本発明の第６の側面は、
情報処理装置において情報処理を実行させるコンピュータ・プログラムであり、
前記情報処理装置は、データ処理を実行するデバイスと、
前記デバイスに対応するデバイスドライバを有する複数のプロセッサを有し、
前記デバイスは前記複数のプロセッサの各々に対応するプロセッサ対応レジスタを有する構成であり、
前記複数のプロセッサの各々に、前記デバイスに対するデータ処理の要求に応じて、前記プロセッサ対応レジスタに対してデータ処理要求の存在を示す識別情報の書き込みを実行させるステップと、
前記デバイスに、前記レジスタの識別情報を取得して、該識別情報によって識別されるデータ処理要求に対応するデータ処理を順次実行させるステップと、
を有するコンピュータ・プログラムにある。
【００３８】
なお、本発明のプログラムは、例えば、様々なプログラム・コードを実行可能な汎用コンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【００３９】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００４０】
本発明の一実施例の構成によれば、複数のプロセッサを有するマルチプロセッサ環境において、複数のプロセッサが１つのデバイスに対応するデバイスドライバを起動させたような場合でも、デバイス利用やデバイス利用に際して必要とするメモリなどの資源に対する競合を防止して各プロセッサにおけるデバイス利用処理を着実に実行させる。例えば、プロセッサによるデバイスの利用状態をフラグに基づいて確認可能とした利用制御を行う。本構成により、各プロセッサにおけるデバイス利用処理を着実に実行させることが可能となる。
【発明を実施するための最良の形態】
【００４１】
以下、本発明の情報処理装置、および情報処理方法、並びにコンピュータ・プログラムの詳細について説明する。
【００４２】
本発明の情報処理装置は、複数のプロセッサ（ＣＰＵ）を有し、各プロセッサの各々が独自の処理を行う非対称マルチプロセッサ環境で各種のデータ処理を実行する装置である。まず、本発明の情報処理装置の一構成例について、図６を参照して説明する。
【００４３】
図６に示すように本発明の情報処理装置は、メインプロセッサ（ＰＰＵ）２１１を含むエレメントである１つのメインプロセッサエレメント［ＰＰＥ：ＰｏｗｅｒＰＣ  Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ］２１０と、サブプロセッサ（ＳＰＵ）２２１を含むエレメントである複数のサブプロセッサエレメント［ＳＰＥ：Ｓｙｎｅｒｇｉｓｔｉｃ  Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ］２２０−１〜８を有する。それぞれのプロセッサエレメントは異なるアーキテクチャを採用している。図６に示す例は、サブプロセッサエレメント［ＳＰＥ］を８個有する構成であるが、このプロセッサ数の設定は様々な設定が可能である。
【００４４】
図６に示すように、メインプロセッサ（ＰＰＵ）２１１は、メインプロセッサエレメント［ＰＰＥ］２１０中に構成され、８つのサブプロセッサ（ＳＰＵ）２２１は、それぞれ個別のサブプロセッサエレメント［ＳＰＥ］２２０中に構成される。例えば、メインプロセッサ（ＰＰＵ）２１１がＯＳを含むデータ処理を制御するプロセッサとして機能し、８つのサブプロセッサ（ＳＰＵ）２２１は、それぞれの役割に従った処理を実行するサブプロセッサとして設定される。
【００４５】
メインプロセッサエレメント［ＰＰＥ］２１０は、２段階のキャッシュメモリとしてのＬ１キャッシュ２１２、Ｌ２キャッシュ２１３を有する。また、サブプロセッサエレメント［ＳＰＥ］２２０は、Ｌ１キャッシュと同等の速度で動作するローカルストア（ＬＳ）２２２と呼ばれるメモリ空間を保有する。サブプロセッサエレメント［ＳＰＥ］２２０からのメインメモリ（ＸＤＲ）２３２に対するアクセスは、主にメモリフローコントローラ（ＭＦＣ）２２３を介したＤＭＡアクセスとして行われる。図に示すように、メインメモリ２３２は、メモリコントローラ（ＭＩＣ）２３１を介して接続され、さらに、通信部としてのネットワークカード２４２は、入出力コントローラ（ＩＯＣ）２４１を介して接続されている。
【００４６】
なお、図６に示す構成では、入出力コントローラ（ＩＯＣ）２４１を介して接続されたデバイスとして、ネットワークカード２４２のみ示してあるが、この他ビデオカードなど様々なデバイスが接続可能である。各プロセッサエレメントは、これらの各デバイスに対応するデバイスドライバを有し、デバイスドライバを起動して各デバイス対応の処理を行うことになる。
【００４７】
以下、通信部としてのネットワークカード２４２に対応するデバイスドライバを複数のプロセッサにおいて、それぞれ起動させて処理を行う場合の処理例について説明する。すなわち、ネットワークカード２４２に対応するデバイスドライバが、複数のプロセッサ（メインプロセッサ（ＰＰＵ）２１１とサブプロセッサ（ＳＰＵ）２２１）に設定され、これらを起動させて通信を実行する処理例である。
【００４８】
メインプロセッサ（ＰＰＵ）２１１とサブプロセッサ（ＳＰＵ）２２１が、それぞれのデバイスドライバを起動させてネットワークカード２４２を利用した通信を行う。
【００４９】
図７に、本発明の情報処理装置において適用されるデバイスドライバの構成例を示す。図７には、
（ａ）メインプロセッサ（ＰＰＵ）２１１に設定されるデバイスドライバ３１０、
（ｂ）サブプロセッサ（ＳＰＵ）２２１に設定されるデバイスドライバ３２０、
これらの構成例を示している。
【００５０】
それぞれのデバイスドライバ３１０，３２０は、各プロセッサエレメントのローカルメモリに格納されることになる。なお、サブプロセッサ（ＳＰＵ）２２１のローカルメモリであるローカルストア（ＬＳ）２２２はサイズが小さいため、デバイスドライバ３２０の構成要素はできる限り小さくすることが好ましい。従って、メインプロセッサ（ＰＰＵ）２１１のデバイスドライバ３１０と共通する処理を行なう初期化部や状態保持部などは、サブプロセッサ（ＳＰＵ）２２１対応のデバイスドライバ３２０には持たない設定とすることが好ましい。
【００５１】
図７（ａ）に示すメインプロセッサ（ＰＰＵ）２１１に設定されるネットワークカード対応のデバイスドライバ３１０について説明する。
デバイスドライバ３１０は、通信処理における初期化処理、例えばメモリの確保やＩＰアドレスの設定などの処理を行なう初期化部３１１、ネットワークカードを利用したデータ送受信処理を実行するメイン処理部３１２、ネットワークカードによる通信処理に際して実行されるメインプロセッサ（ＰＰＵ）に対する割り込み処理を制御する割り込み処理部３１３、さらに、様々な状態値を記録する状態保持部３１４を有する。
【００５２】
状態保持部３１４には、ネットワークケーブルの接続状態の状態値を保持するリンク状態保持部３１５、通信処理可能なインタフェース設定がなされているか否かの情報を格納するインタフェース状態保持部３１６を有する。
【００５３】
ここまでは、先に図３を参照して説明したデバイスドライバと同様の構成である。さらに、図７（ａ）に示すデバイスドライバ３１０の状態保持部３１４には、通信処理において利用する装置内の資源、例えばメモリなどの資源の利用状態を示す資源フラグを設定する資源情報保持部３１７を有する。
【００５４】
この資源情報保持部３１７は、例えば、
ネットワークカード２４２を利用した通信処理をメインプロセッサ（ＰＰＵ）２１１の制御で実行しているか、または利用予定があることを示すフラク設定値、
資源フラグ＝１、
ネットワークカード２４２を利用した通信処理をサブプロセッサ（ＳＰＵ）２２１の制御で実行しているか、または利用予定があることを示すフラク設定値、
資源フラグ＝０、
このような設定とされる。
【００５５】
なお、デバイスドライバが２つのプロセッサに対応して設定されているのみであれば、０，１の２つの状態値を設定可能な１ビットデータのフラグ情報でもよいが、３以上のプロセッサにデバイスドライバが設定されている場合には、２ビット以上のフラグを設定する。すなわち、フラグの値を各プロセッサに対応付ける設定としてフラグ値に基づくプロセッサ識別を可能な設定とする。
【００５６】
このように、資源情報保持部３１７は、デバイスの利用する資源、例えば通信処理であれば、通信データの記憶領域としてのメモリなどの資源をどのプロセッサが利用しているか、または利用する予定があるかを示す情報を格納する。この資源フラグを設定するメモリ領域は、メインプロセッサ（ＰＰＵ）２１１、サブプロセッサ（ＳＰＵ）２２１の双方がアクセスおよび参照可能なメモリ領域とされる。
【００５７】
例えばメインプロセッサ（ＰＰＵ）２１１において通信が実行されている間にサブブロセッサ（ＳＰＵ）２２１が通信を開始したい場合は、サブブロセッサ（ＳＰＵ）２２１は資源フラグの書き換えを実行する。メインプロセッサ（ＰＰＵ）２１１が通信処理を行って資源を占有している期間、メインプロセッサ（ＰＰＵ）２１１は、資源状態保持部３１７の資源フラグを一定期間ごとに検証する。すなわちポーリングを行い、サブブロセッサ（ＳＰＵ）２２１による資源フラグの書き換えが実行されていないかを確認する。
【００５８】
サブブロセッサ（ＳＰＵ）２２１による資源フラグの書き換えが実行されたことが確認された場合は、メインプロセッサ（ＰＰＵ）２１１は、サブプロセッサからの資源利用要求があると判断し、所定タイミングで通信を終了または中断して資源の解放を行う。この資源解放後にサブブロセッサ（ＳＰＵ）２２１は通信を実行する。
【００５９】
図７（ｂ）に示すサブプロセッサ（ＳＰＵ）２２１に設定されるネットワークカード対応のデバイスドライバ３２０について説明する。
先に説明したように、サブプロセッサ（ＳＰＵ）２２１のローカルメモリであるローカルストア（ＬＳ）２２２はサイズが小さいため、メインプロセッサ（ＰＰＵ）２１１のデバイスドライバ３１０と共通する処理を行なう処理部は持たない設定とすることが好ましい。図には、通信処理における初期化処理、例えばメモリの確保やＩＰアドレスの設定などの処理を行なう初期化部３２１、ネットワークカードを利用したデータ送受信処理を実行するメイン処理部３２２、ネットワークカードによる通信処理に際して実行されるサブプロセッサ（ＳＰＵ）２２１に対する割り込み処理を制御する割り込み処理部３２３を有する構成例を示している。初期化部３２１については持たない設定としてもよい。
【００６０】
次に、図８に示すフローチャートを参照して、メインプロセッサ（ＰＰＵ）２１１とサブプロセッサ（ＳＰＵ）２２１が同時期にデバイスドライバを起動して通信処理を実行する場合の処理シーケンスを説明する。
【００６１】
まず、ステップＳ２０１において、メインプロセッサ（ＰＰＵ）２１１がデバイス（本例ではネットワークカード２４２）の初期化処理を実行する。例えばネットワークカードからの情報読み取りや通信設定の確認処理などが含まれる。
【００６２】
次にステップＳ２０２において、リンクの検出を行ない、ネットワークケーブルが接続されているかどうかを確認する。リンクが検出されネットワークケーブルの接続確認がなされると、ステップＳ２０３に進む。
【００６３】
ステップＳ２０３では、ＩＰアドレスやＭＴＵ（Ｍｕｘｉｍｕｍ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｕｎｉｔ）などインタフェースの初期化設定を行なう。
【００６４】
次に、ステップＳ２０４において資源の確保処理を実行する。例えば送受信パケットを格納するためのメモリ領域の確保処理など、通信処理に利用するために必要となる資源の確保処理を実行する。なお、この資源確保処理に併せて、先に図７（ａ）のメインプロセッサ（ＰＰＵ）対応のデバイスドライバ３１０の状態保持部３１４中の資源情報保持部３１７のフラグの設定を行う。すなわち、ネットワークカード２４２を利用した通信処理をメインプロセッサ（ＰＰＵ）２１１の制御で実行し、資源がメインプロセッサ（ＰＰＵ）２１１の通信処理用として占有されていることを示す資源フラグ、例えば［資源フラグ＝１］の設定を実行する。
【００６５】
ここまでのステップＳ２０１〜Ｓ２０４の処理は、図７（ａ）に示すデバイスドライバ３１０の初期化部３１１にて行なわれる。
【００６６】
なお、ステップＳ２０４において資源情報保持部３１７の資源フラグが設定された後は、メインプロセッサ（ＰＰＵ）２１１のデバイスドライバ３１０は、定期的に資源フラグの設定を確認する。資源フラグの設定値が、資源がメインプロセッサ（ＰＰＵ）２１１の通信処理用として占有されていることを示す値であることの確認（ステップＳ２０５の判定がＮｏ）に基づいて、ステップＳ２０９に進み、メイン処理、すなわちメインプロセッサ（ＰＰＵ）２１１のデバイスドライバ３１０の制御の下で通信処理を実行する。この処理は、図７（ａ）に示すデバイスドライバ３１０のメイン処理部３１２が実行する。この処理は、例えばパケットの送受信処理による通信処理である。
【００６７】
ステップＳ２０５において、資源フラグがサブプロセッサ（ＳＰＵ）２２１の通信処理用として占有されている、または利用予定があることを示す値（例えば資源フラグ＝０）が設定されている場合は、メインプロセッサ（ＰＰＵ）２１１は、自己の設定したタイミングで通信を終了または中断する。その後、ステップＳ２０６において、サブプロセッサ（ＳＰＵ）２２１のデバイスドライバ３２０が資源確保処理を行う。
【００６８】
その後、ステップＳ２０７において、サブプロセッサ（ＳＰＵ）２２１のデバイスドライバ３２０の制御の下で通信処理を実行する。この処理は、図７（ｂ）に示すデバイスドライバ３２０のメイン処理部３２２が実行する。この処理は、例えばパケットの送受信処理による通信処理である。
【００６９】
サブプロセッサ（ＳＰＵ）２２１もメインプロセッサ（ＰＰＵ）２１１と同様に定期的に資源フラグの設定を確認する。資源フラグの設定値が、メインプロセッサ（ＰＰＵ）２１１によって書き換えられている場合、すなわち、資源フラグがメインプロセッサ（ＰＰＵ）２１１による通信に利用予定があることを示す値（例えば資源フラグ＝１）が設定されている場合は、サブプロセッサ（ＳＰＵ）２２１は、自己の設定したタイミングで通信を終了または中断する。その後、ステップＳ２０８において、メインプロセッサ（ＰＰＵ）２１１のデバイスドライバ３１０が資源確保処理を行い、ステップＳ２０９においてメイン処理、すなわちメインプロセッサ（ＰＰＵ）２１１のデバイスドライバ３１０の制御の下で通信処理を実行する。この処理は、図７（ａ）に示すデバイスドライバ３１０のメイン処理部３１２が実行する。この処理は、例えばパケットの送受信処理による通信処理である。
【００７０】
このように、本発明に従った処理では、各プロセッサが資源フラグの書き換え処理、参照処理を行うことで、同じデバイス（本例ではネットワークカード）を利用したデータ処理（本例では通信処理）を、タイムシェアリングによっていずれか一方においてのみ実行するように設定可能となり、資源確保についても確実に実行することが可能となる。
【００７１】
なお、処理を簡易化して、例えばサブプロセッサ（ＳＰＵ）２２１のデバイスドライバが資源を確保したい場合には常にメインプロセッサ（ＰＰＵ）２１１のデバイスドライバが資源の解放をする設定としてもよい。あるいは、例えばリンクがダウンしているときにだけメインプロセッサ（ＰＰＵ）２１１のデバイスドライバからサブプロセッサ（ＳＰＵ）２２１のデバイスドライバへの切り替えを許容するといった条件付き処理を行う設定としてもよい。このように一定の条件に基づいてデバイスを利用した処理の実行プロセッサ切り替えを行うといった設定としてもよい。
【００７２】
例えば、以下のような構成が可能である。
複数のプロセッサの少なくとも１つのプロセッサに対応して設定されたデバイスドライバに、デバイスを利用したデータ処理に際して利用する資源がいずれのプロセッサによって利用または利用予定であるかを示す資源フラグを管理する資源状態保持部を設定する。
さらに、複数のプロセッサの少なくとも１つのプロセッサが、デバイスの利用予定に応じて資源フラグを、自身が利用予定であることを示すフラグ値に設定する処理を実行する。
さらに、複数のプロセッサの少なくとも１つのプロセッサが、自己のデバイス利用期間において、資源フラグの参照処理を実行して他プロセッサによる利用予定を認識した場合に、デバイスの利用処理の終了または中断処理を実行する。
上記のような構成とすることで、複数プロセッサによるデバイスの利用や資源の利用の競合を防止することができる。
【００７３】
なお、図７を参照して説明した例では、サブプロセッサ（ＳＰＵ）２２１のデバイスドライバには初期化部や状態保持部を設定しない構成例である。しかし、これらの処理部をサブプロセッサ（ＳＰＵ）２２１のデバイスドライバに設定して、初期化処理や状態保持処理をサブプロセッサ（ＳＰＵ）２２１のデバイスドライバ側で実行する構成としてもよい。また、メインプロセッサ（ＰＰＵ）２１１のデバイスドライバと、サブプロセッサ（ＳＰＵ）２２１のデバイスドライバの両方のデバイスドライバで実行する構成としてもよい。
【００７４】
［その他の実施例］
上述の実施例は、メインプロセッサ（ＰＰＵ）２１１またはサブプロセッサ（ＳＰＵ）２２１のいずれか一方のみがデバイスを利用した処理を実行し、処理の競合を避ける構成例として説明した。すなわち、同時期にデバイスの利用要求が発生した場合には、一方が他方の処理の終了または中断を待機して処理を開始する構成とした。
【００７５】
情報処理装置の構成が、１本のＤＭＡチャネルに対して複数のＤＭＡディスクリプタを設定可能とした構成である場合には、メインプロセッサ（ＰＰＵ）２１１のデバイスドライバと、サブプロセッサ（ＳＰＵ）２２１のデバイスドライバが同時にデバイスを制御することも可能となる。なお、１本のＤＭＡチャネルに対して複数のＤＭＡディスクリプタを設定する構成例については、本出願人の先の特許出願である特開２００６−２９３８００号公報に記載されている。この公報に記載の構成を採用することで１本のＤＭＡチャネルに対して複数のＤＭＡディスクリプタを設定することができる。
【００７６】
この構成を用いた場合の処理例について図９を参照して説明する。図９は、先に図６を参照して説明したと同様の情報処理装置、すなわち非対称マルチプロセッサ型の情報処理装置の一部構成を示している。
【００７７】
図９には、以下の構成要素を示している。
（１）先に図６を参照して説明したと同様の複数のプロセッサ、すなわち、メインプロセッサ（ＰＰＵ）と複数のサブプロセッサ（ＳＰＵ）を有するマルチプロセッサユニット（Ｃｅｌｌ）４００、
（２）メインプロセッサ（ＰＰＵ）対応のＰＰＵデバイスドライバ４１０（図７（ａ）のデバイスドライバ３１０に対応）
（３）サブプロセッサ（ＳＰＵ）対応のＳＰＵデバイスドライバ４２０（図７（ｂ）のデバイスドライバ３２０に対応）
（４）ネットワークカード４６０を介した通信処理において利用するメモリ４３０
（５）メモリコントローラ４５０
（６）通信処理に適用するデバイスであるネットワークカード４６０
これらの構成を示している。
【００７８】
メモリ４３０には、ディスクリプタ領域４３１と、通信データの格納エリアであるデータ領域４３４の各領域が設定される。
ディスクリプタ領域４３１には、ＰＰＵデバイスドライバ４１０対応のディスクリプタ０，４３２と、ＳＰＵデバイスドライバ４２０対応のディスクリプタ１，４３２が個別に設定される。
【００７９】
ディスクリプタは、送信データのパケット単位の情報を記述するデータである。ディスクリプタの例を図１０に示す。パケットのメモリ４３０における記録開始アドレスの上位３２ビットを示すアドレス（ｈｉｇｈ）および下位３２ビットを示すアドレス（ｌｏｗ）、並びにパケット長を示す１６ビットのレングスなどの情報が含まれる。
【００８０】
ＰＰＵデバイスドライバ４１０は、メモリ４３０のディスクリプタ領域４３１に、送信データのパケット単位の情報をディスクリプタ０，４３２として記録し、ＳＰＵデバイスドライバ４２０は、ディスクリプタ１，４３３として記録する。
【００８１】
なお、メモリ４３０のディスクリプタ領域４３１には、複数の通信パケットに対応するディスクリプタが連続的に配置される。例えば、図１１に示すように、メモリ４３０のディスクリプタ領域４３１には、複数のディスクリプタ０〜ｎが記録される。
【００８２】
図９に示す情報処理装置において、ＰＰＵデバイスドライバ４１０、およびＳＰＵデバイスドライバ４２０は、利用可能となったディスクリプタ、すなわち、ディスクリプタ領域４３１に格納されたディスクリプタの番号（０〜ｎ）を、ネットワークカード４６０のディスクリプタ制御部４６１に通知する。ディスクリプタ制御部４６１のレジスタには、利用可能となったディスクリプタの番号（０〜ｎ）が格納される。このレジスタ値を更新することで、どのディスクリプタが利用可能かをデバイスドライバからネットワークカードへ通知できる。
【００８３】
マルチプロセッサユニット４００内のメインプロセッサ（ＰＰＵ）またはサブプロセッサ（ＳＰＵ）は、ＰＰＵデバイスドライバ４１０またはＳＰＵデバイスドライバ４２０のメイン処理部の処理を実行させて、メモリ４３０のデータ領域４３４に格納されている送信待ちのデータパケットのキュー０，４３５またはキュー１，４３６をネットワークカード４６０の送信部４６９に出力する。
【００８４】
ネットワークカード４６０は、ディスクリプタ制御部４６１、ディスクリプタ情報部４６４、ディスクリプタ選択部４６７、ＤＭＡ制御部４６８、送信部４６９、および割り込み制御部４７０から構成される。
【００８５】
ディスクリプタ制御部４６１は、ＰＰＵデバイスドライバ４１０対応のレジスタ０，４６２と、ＳＰＵデバイスドライバ４２０対応のレジスタ１，４６３を有している。ディスクリプタ制御部４６１は、各デバイスドライバから通知される利用可能なディスクリプタの番号のうち、ＰＰＵデバイスドライバ４１０対応のディスクリプタの番号はレジスタＲ０，４６２に記録し、ＳＰＵデバイスドライバ４２０対応のディスクリプタの番号はレジスタＲ１，４６３に記録する。
【００８６】
ディスクリプタ情報部４６４は、キャッシュ０，４６５、キャッシュ１，４６６を内蔵しており、ディスクリプタ制御部４６１のレジスタ０，４６２に記録されている番号に基づいて、メモリ４３０のディスクリプタ領域４３１に格納されたディスクリプタから利用可能なディスクリプタを取得してキャッシュ０，４６５に記録する。また、ディスクリプタ制御部４６１のレジスタ１，４６３に記録されている番号に基づいて、メモリ４３０に設けられたディスクリプタ領域から利用可能なディスクリプタを取得してキャッシュ１，４６６に記録する。
【００８７】
ディスクリプタ選択部４６７は、ディスクリプタ情報部４６４内のキャッシュ０，４６５、またはキャッシュ１，４６６のいずれか一方を所定の規則に従って選択し、選択したキャッシュに記録されているディスクリプタを読み出してＤＭＡ制御部４６８に出力する。なお、ディスクリプタが読み出されたキャッシュ０，４６５、またはキャッシュ１，４６６はディスクリプタ情報部４６４によってクリアされる。所定の規則は、例えば優先的に送信すべきデータをキュー０に記録する設定であれば、例えば、キャッシュ０にディスクリプタが記録されているときにはキャッシュ０を選択するようにし、キャッシュ０にディスクリプタが記録されていないときだけ、キャッシュ１を選択するような規則である。
【００８８】
ＤＭＡ制御部４６８は、ディスクリプタ選択部４６７から入力されるディスクリプタに記述されている記録開始アドレスとパケット長（レングス）を読み出し、メモリコントローラ４５０に通知してＤＭＡの実行を依頼する。さらに、ＤＭＡ制御部４６８は、利用可能なディスクリプタが存在しない旨の通知をディスクリプタ情報部４６４から受け取り、かつ、利用可能な最後のディスクリプタに基づくＤＭＡの終了を示す通知を送信部４６９から受け取った場合、割り込み制御部４７０にＤＭＡが終了した旨を通知する。
【００８９】
送信部４６９は、メモリコントローラ４５０による制御に対応してメモリ４３０からＤＭＡによって転送されるパケット単位の送信データを、ネットワークを介して送信する。割り込み制御部４７０は、ＤＭＡの終了を示す通知をＤＭＡ制御部４６８から受け取ったとき、ＤＭＡが終了した旨をマルチプロセッサユニット４００に通知する。
【００９０】
次に、パケット送信処理について、図１２に示すフローチャートを参照して説明する。
ステップＳ３０１において、ＰＰＵデバイスドライバ４１０、または、ＳＰＵデバイスドライバ４２０が、メモリ４３０のデータ領域４３４に設定された送信データのキューに対応するディスクリプタを、メモリ４３０のディスクリプタ領域４３１に設定する。
【００９１】
ステップＳ３０２において、ＰＰＵデバイスドライバ４１０、または、ＳＰＵデバイスドライバ４２０は、利用可能となったディスクリプタ、すなわち、ステップＳ３０１の処理で設定されたディスクリプタの番号を、ネットワークカード４６０のディスクリプタ制御部４６１に通知し、ディスクリプタ制御部４６１のレジスタ０，４６２、またはレジスタ１，４６３の値を更新する。すなわちレジスタに利用可能なディスクプタ番号を記録する。さらに、ディスクリプタ情報部４６４は、ディスクリプタ制御部４６１のレジスタ値に基づいて、メモリ４３０に設けられたディスクリプタ領域から利用可能なディスクリプタを取得してキャッシュに記録する。
【００９２】
次に、ステップＳ３０３において、ディスクリプタ選択部４６７は、ディスクリプタ情報部４６４のキャッシュのいずれか一方を選択し、ステップＳ３０４においてディスクリプタ選択部４６７は、選択したキャッシュからディスクリプタを読み出してＤＭＡ制御部４６８に出力する。
【００９３】
次に、ステップＳ３０５においてＤＭＡ制御部４６８は、ディスクリプタ選択部４６７から入力されたディスクリプタに記述されている記録開始アドレスとパケット長（レングス）を読み出して、メモリコントローラ４５０に通知してＤＭＡを開始する。メモリコントローラ４５０は、メモリ４３０のデータ領域４３４の通知された記録開始アドレスからパケット長（レングス）分のデータをＤＭＡにより送信部４６９に転送し、送信部４６９は、ＤＭＡ転送されたパケット単位の送信データを、ネットワークを介して送信する。この処理によってステップＳ３０６のＤＭＡの終了が確認されると、ステップＳ３０７においてディスクリプタ情報部４６４は、レジスタに記憶されている番号に対応するディスクリプタのうち、未取得のものが残っているか否かを判定する。未取得のディスクリプタが残っていると判定された場合、ステップＳ３０３に戻り、未処理ディスクリプタに対応するデータのＤＭＡおよび送信処理が行われる。
【００９４】
ステップＳ３０７において未処理ディスクリプタが残っていないと判定された場合は、ステップＳ３０８に進み、割り込み制御部４７０へ通知し、マルチプロセッサユニット４００のメインプロセッサ（ＰＰＵ）への割り込みを発生させる。割り込みの発生が確認されると、メインプロセッサ（ＰＰＵ）は、ステップＳ３０９において、メインプロセッサ（ＰＰＵ）またはサブプロセッサ（ＳＰＵ）どちらのドライバでの処理に起因する割り込みなのかを判定して、対応するデバイスドライバ内の割り込みハンドラを起動し、送信完了したパケットが使用していたメモリ空間を解放する。
【００９５】
なお、図９、図１０を参照して説明した処理例は、デバイスをネットワークカードとして通信処理を実行する処理例である。しかし、デバイスはネットワークカードに限らず、その他のデータ処理を実行するデバイス、例えばビデオカードなど、様々なデータ処理デバイスであってもよい。
【００９６】
本実施例の一般的構成は以下のような構成となる。
データ処理を実行するデバイスと、デバイスに対応するデバイスドライバを有する複数のプロセッサを有する情報処理装置であり、デバイスは複数のプロセッサの各々に対応するプロセッサ対応レジスタを有する構成である。
【００９７】
このような構成において、複数のプロセッサの各々が、デバイスに対するデータ処理の要求に応じて、プロセッサ対応レジスタに対してデータ処理要求の存在を示す識別情報の書き込みを実行する。デバイスは、レジスタの識別情報を取得して、識別情報によって識別されるデータ処理要求に対応するデータ処理を順次実行する。このような構成により、複数のプロセッサからの要求をデバイスが順次、実行することが可能となる。
【００９８】
なお、送受信するデータの中身に応じて割り込み先のプロセッサを動的に変更可能な構成とすることで、割り込みハンドラの処理も任意のプロセッサで行なうことが可能となる。なお、送受信データの中身に応じて割り込み先のプロセッサを動的に変更可能とした構成については、本出願人の先の特許出願である特開２００７−２０６９５５号後方に記載されており、この開示構成を採用することが可能である。
【００９９】
この場合、図１３に示すように、デバイス（ネットワークカード４６０）からの割り込みを、割り込み制御部４７０から、対応するデバイスドライバが動作しているプロセッサに対して行うことが可能となる。すなわち、図１３に示すマルチプロセッサユニット４００内のメインプロセッサ（ＰＰＵ）５０１、またはサブプロセッサ（ＳＰＵ）５０２に対して割り込みを発生させることができる。このため、メインプロセッサ（ＰＰＵ）５０１のみに割り込み負荷が集中するのを回避することが可能となる。
【０１００】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
【０１０１】
また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【０１０２】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【０１０３】
以上、説明したように、本発明の一実施例の構成によれば、複数のプロセッサを有するマルチプロセッサ環境において、複数のプロセッサが１つのデバイスに対応するデバイスドライバを起動させたような場合でも、デバイス利用やデバイス利用に際して必要とするメモリなどの資源に対する競合を防止して各プロセッサにおけるデバイス利用処理を着実に実行させる。例えば、プロセッサによるデバイスの利用状態をフラグに基づいて確認可能とした利用制御を行う。本構成により、各プロセッサにおけるデバイス利用処理を着実に実行させることが可能となる。
【図面の簡単な説明】
【０１０４】
【図１】マルチプロセッサユニットを備えた情報処理装置においてネットワーク通信を伴うデータ処理を実行させる場合の処理階層の例を示す図である。
【図２】ディスクリプタの構成例について説明する図である。
【図３】デバイスドライバの構成例について説明する図である。
【図４】デバイスドライバを利用したデータ処理シーケンスについて説明するフローチャートを示す図である。
【図５】ネットワークカード対応のデバイスドライバを利用した通信処理シーケンスについて説明するフローチャートを示す図である。
【図６】本発明の一実施例に係る情報処理装置の構成例について説明する図である。
【図７】本発明の一実施例に係る情報処理装置のデバイスドライバの構成例について説明する図である。
【図８】本発明の一実施例に係る情報処理装置おけるデバイスドライバを利用したデータ処理シーケンスについて説明するフローチャートを示す図である。
【図９】本発明の一実施例に係る情報処理装置の構成例および処理について説明する図である。
【図１０】ディスクリプタの構成例について説明する図である。
【図１１】本発明の一実施例に係る情報処理装置のメモリに格納されるディスクリプタの構成例について説明する図である。
【図１２】本発明の一実施例に係る情報処理装置おけるデバイスドライバを利用したデータ処理シーケンスについて説明するフローチャートを示す図である。
【図１３】本発明の一実施例に係る情報処理装置の構成例および処理について説明する図である。
【符号の説明】
【０１０５】
１０１  ネットワークカード
１１１  ＰＰＵ（Ｐｏｗｅｒ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）
１２１  ＳＰＵ（Ｓｙｎｅｒｇｉｓｔｉｃ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）
１３０  プログラム
１３１  デバイスドライバ
１３２  プロトコルスタック
１４０  アプリケーション
１５１  初期化部
１５２  メイン処理部
１５３  割り込み処理部
１５４  状態保持部
１５５  リンク状態保持部
１５６  インタフェース状態保持部
２１０  メインプロセッサエレメント［ＰＰＥ：ＰｏｗｅｒＰＣ  Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ］
２１１  ＰＰＵ（Ｐｏｗｅｒ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）
２１２  Ｌ１キャッシュ
２１３  Ｌ２キャッシュ
２２０  ＳＰＥ［Ｓｙｎｅｒｇｉｓｔｉｃ  Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ］
２２１  ＳＰＵ（Ｓｙｎｅｒｇｉｓｔｉｃ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）
２２２  ＬＳ（ローカルストア）
２２３  ＭＦＣ（メモリフローコントローラ）
２３１  メモリコントローラ（ＭＩＣ）
２３２  メインメモリ（ＸＤＲ）
２４１  入出力コントローラ（ＩＯＣ）
２４２  ネットワークカード
３１０  デバイスドライバ
３１１  初期化部
３１２  メイン処理部
３１３  割り込み処理部
３１４  状態保持部
３１５  リンク状態保持部
３１６  インタフェース状態保持部
３１７  資源状態保持部
３２０  デバイスドライバ
３２１  初期化部
３２２  メイン処理部
３２３  割り込み処理部
４００  マルマルチプロセッサユニット（Ｃｅｌｌ）
４１０  ＰＰＵデバイスドライバ
４２０  ＳＰＵデバイスドライバ
４３０  メモリ
４３１  ディスクリプタ領域
４３２，４３３  ディスクリプタ
４３４  データ領域
４３５，４３６  キュー
４５０  メモリコントローラ
４６０  ネットワークカード
４６１  ディスクリプタ制御部
４６２，４６３  レジスタ
４６４  ディスクリプタ情報部
４６５，４６６  キャッシュ
４６７  ディスクリプタ選択部
４６８  ＤＭＡ制御部
４６９  送信部
４７０  割り込み制御部
５０１  メインプロセッサ（ＰＰＵ）
５０２  サブプロセッサ（ＳＰＵ）
【図１】
2009258937.tif 000003
【図２】
2009258937.tif 000004
【図３】
2009258937.tif 000005
【図４】
2009258937.tif 000006
【図５】
2009258937.tif 000007
【図６】
2009258937.tif 000008
【図７】
2009258937.tif 000009
【図８】
2009258937.tif 000010
【図９】
2009258937.tif 000011
【図１０】
2009258937.tif 000012
【図１１】
2009258937.tif 000013
【図１２】
2009258937.tif 000014
【図１３】
2009258937.tif 000015