(57)【要約】【課題】複数のＯＳで動作する環境下であってもデバイスを共有化することが可能な簡易な構成のマルチプロセッサシステムを提供する。【解決手段】少なくとも１つのＣＰＵを備えた複数のＣＰＵセルを有し、ＣＰＵセルが複数のグループに分割され、該グループ毎に異なるオペレーティングシステムで動作するマルチプロセッサシステムでデバイスを共用するためのデバイス共有方法であって、ＣＰＵセルとネットワークを介して接続されたデバイスを含むデバイスセルに、デバイスで実行可能な複数種類の処理を管理するためのデバイス管理情報を備えておき、デバイスセルでＣＰＵセルからコマンドを受信すると、該コマンドの発行元に対応するデバイス管理情報を検索し、コマンドにより更新されるデバイス管理情報で指定された処理をデバイスに実行させる。【選択図】  図１
2004246779.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのＣＰＵを備えた複数のＣＰＵセルを有し、前記ＣＰＵセルが複数のグループに分割され、該グループ毎に異なるオペレーティングシステムで動作するマルチプロセッサシステムであって、
前記複数のＣＰＵセル間で共用されるデバイス、
並びに前記デバイスで実行可能な複数種類の処理を管理するためのデバイス管理情報を備え、前記ＣＰＵセルからコマンドを受信すると、該コマンドの発行元に対応するデバイス管理情報を検索し、前記コマンドにより更新される前記デバイス管理情報で指定された処理を前記デバイスに実行させるデバイス管理部を備えた、前記ＣＰＵセルとネットワークを介して接続されたデバイスセルを有するマルチプロセッサシステム。
【請求項２】
前記デバイス管理情報は、
前記複数のＣＰＵセルにそれぞれ対応して設けられた請求項１記載のマルチプロセッサシステム。
【請求項３】
前記デバイス管理情報は、
前記グループの数、及び前記ＣＰＵセルの数に一致しない、任意の数だけ設けられた請求項１記載のマルチプロセッサシステム。
【請求項４】
前記ＣＰＵセルは、利用可能な前記デバイスの情報をテーブル形式で保持し、
システム立ち上げ時に自機に割り当てられたデバイスを優先的に利用する請求項１記載のマルチプロセッサシステム。
【請求項５】
前記デバイスセルは、
複数の同じデバイスを備え、
前記デバイス管理部は、
前記デバイス管理情報で指定された処理を、前記複数のデバイスのうちの任意のデバイスに実行させる請求項１乃至４のいずれか１項記載のマルチプロセッサシステム。
【請求項６】
前記ＣＰＵセルは、
前記ＣＰＵから発行された複数の命令をまとめたコマンドを生成するコマンド送出回路を備え、
前記デバイスセルは、
前記コマンドを分解して複数の命令を抽出するコマンド解析部を備え、
前記デバイス管理部は、抽出された複数の命令により更新される前記デバイス管理情報で指定された処理を前記デバイスに実行させる請求項１乃至５のいずれか１項記載のマルチプロセッサシステム。
【請求項７】
前記ＣＰＵセルは、自機が所属する前記グループを特定するためのシステム識別子を保持し、
前記デバイスセルは、前記システム識別子に対応するＣＰＵセルのリストから構成されるシステム構成情報を保持し、
前記デバイスセルは、前記コマンドと共に前記ＣＰＵセルから送信された前記システム識別子と保持した前記システム構成情報から該ＣＰＵセルが所属するグループの中から任意の一つのＣＰＵセルを選択し、該選択したＣＰＵセルに対して該コマンドに対する処理結果を含む応答メッセージを送出し、
ＣＰＵセルは、前記デバイスセルから前記応答メッセージを受信すると、該応答メッセージにしたがって前記デバイスセルの処理結果を取得する請求項１乃至６のいずれか１項記載のマルチプロセッサシステム。
【請求項８】
少なくとも１つのＣＰＵを備えた複数のＣＰＵセルを有し、前記ＣＰＵセルが複数のグループに分割され、該グループ毎に異なるオペレーティングシステムで動作するマルチプロセッサシステムでデバイスを共用するためのデバイス共有方法であって、
前記ＣＰＵセルとネットワークを介して接続された前記デバイスを含むデバイスセルに、前記デバイスで実行可能な複数種類の処理を管理するためのデバイス管理情報を備えておき、
前記デバイスセルで、前記ＣＰＵセルからコマンドを受信すると、該コマンドの発行元に対応するデバイス管理情報を検索し、前記コマンドにより更新される前記デバイス管理情報で指定された処理を前記デバイスに実行させるデバイス共有方法。
【請求項９】
前記デバイス管理情報は、
前記複数のＣＰＵセルにそれぞれ対応して設けられた請求項８記載のデバイス共有方法。
【請求項１０】
前記デバイス管理情報は、
前記グループの数、及び前記ＣＰＵセルの数に一致しない、任意の数だけ設けられた請求項８記載のデバイス共有方法。
【請求項１１】
前記ＣＰＵセルで、自機が利用可能な前記デバイスの情報をテーブル形式で保持し、
システム立ち上げ時に該ＣＰＵセルに割り当てられたデバイスを優先的に利用する請求項８記載のデバイス共有方法。
【請求項１２】
前記デバイスセルに複数の同じデバイスを備え、
前記デバイスセルは、前記デバイス管理情報で指定された処理を、前記複数のデバイスのうちの任意のデバイスに実行させる請求項８乃至１１のいずれか１項記載のデバイス共有方法。
【請求項１３】
前記ＣＰＵセルに、前記ＣＰＵから発行された複数の命令をまとめたコマンドを生成するコマンド送出回路を備え、
前記デバイスセルに、前記コマンドを分解して複数の命令を抽出するコマンド解析部を備え、抽出された複数の命令により更新される前記デバイス管理情報で指定された処理を前記デバイスに実行させる請求項８乃至１２のいずれか１項記載のデバイス共有方法。
【請求項１４】
前記ＣＰＵセルで、自機が所属する前記グループを特定するためのシステム識別子を保持し、
前記デバイスセルで、前記システム識別子に対応するＣＰＵセルのリストから構成されるシステム構成情報を保持し、
前記デバイスセルは、前記コマンドと共に前記ＣＰＵセルから送信された前記システム識別子と保持した前記システム構成情報から該ＣＰＵセルが所属するグループの中から任意の一つのＣＰＵセルを選択し、該選択したＣＰＵセルに対して該コマンドに対する処理結果を含む応答メッセージを送出し、
ＣＰＵセルは、前記デバイスセルから前記応答メッセージを受信すると、該応答メッセージにしたがって前記デバイスセルの処理結果を取得する請求項８乃至１３のいずれか１項記載のデバイス共有方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のＣＰＵを有するマルチプロセッサシステムに関し、特に複数のＯＳで動作する環境下でデバイスを各ＯＳで共用するマルチプロセッサシステム及びデバイス共有方法に関する。
【０００２】
【従来の技術】
（第１従来例）
図１４はマルチプロセッサシステムの第１従来例の構成を示すブロック図である。なお、図１４は特許文献１で開示された構成である。
【０００３】
図１４に示すように、第１従来例のマルチプロセッサシステムは、複数のＣＰＵセル２００と複数のデバイスセル２０６とを有し、それらがネットワーク２０５を介して接続された構成である。
【０００４】
ＣＰＵセル２００は、複数のＣＰＵ２０１と、ＣＰＵ２０１の動作を制御する制御回路２０２と、プログラムやデータを記憶するメモリ２０３と、ネットワーク２０５との通信を制御する通信回路２０４とを備えている。
【０００５】
デバイスセル２０６は、外部記憶装置や入出力装置のように各ＣＰＵセル２００の処理で利用する複数のデバイス２０９と、デバイス２０９に対するインタフェース部であるＩＯ制御回路２０８と、ネットワーク２０５との通信を制御する通信回路２０７とを備えている。ＣＰＵセル２００及びデバイスセル２０６は、それぞれが有する通信回路２０４、２０７を利用し、コマンドやデータを含むパケットをネットワーク２０５を介して送受信する。なお、図１４では、ＣＰＵセル２００及びデバイスセル２０６をそれぞれ複数（図１４では２つ）備えているため、各ＣＰＵセルを２００−１、２００−２のように符号を付与することで区別し、各デバイスセルを２０６−１、２０６−２のように符号を付与することで区別している。また、ＣＰＵセル内の複数のＣＰＵ（図１４では２つ）を２０１−１１、２０１−１２のように符号を付与することで区別し、制御回路、メモリ、及び通信回路には、ＣＰＵセルに付与した符号に対応して、例えば制御回路２０２−１、メモリ２０３−１、及び通信回路２０４−１のように符号を付与している。また、デバイスセル内の複数のデバイス（図１４では２つ）を２０９−１１、２０９−１２のように符号を付与することで区別し、ＩＯ制御回路、及び通信回路には、デバイスセルに付与した符号に対応して、例えばＩＯ制御回路２０８−１、及び通信回路２０７−１のように符号を付与している。
【０００６】
このようなマルチプロセッサシステムでは、システムの立ち上げ時に、ＣＰＵセル２００の通信回路２０４に当該ＣＰＵセル２００で使用するデバイスセル２０６の宛先情報を設定し、デバイスセル２０６の通信装置２０７に当該デバイスセル２０７を使用するＣＰＵセル２００の宛先情報を設定しておく。
【０００７】
そして、システムの運用が開始され、ＣＰＵ２０１からコマンドが発行されると、該コマンドは通信回路２０４へ渡され、システム立ち上げ時に設定された宛先情報にしたがって通信回路２０４からネットワーク２０５を経由して該当するデバイスセル２０６へ該コマンドが送信される。
【０００８】
デバイスセル２０６では、ＣＰＵセル２００から送信されたコマンドを通信回路２０７で受信し、その内容に基づいて自セル内のデバイス２０９を制御する。そして、当該コマンドに対する応答メッセージをシステム立ち上げ時に設定された宛先情報にしたがって通信回路２０７からネットワーク２０５を経由して該当するＣＰＵセル２００へ送信する。ＣＰＵセル２００では、送信された応答メッセージを通信回路２０４で受信し、ＣＰＵ２０１へ伝達する。
【０００９】
（第２従来例）
第２従来例のマルチプロセッサシステムは、図１４に示した構成を利用して複数のＣＰＵセルが備えるメモリを共有化するための技術である。このような技術は、例えば特許文献２に開示されている。
【００１０】
第２従来例のマルチプロセッサシステムでは、例えば、ＣＰＵセル２００−１のＣＰＵ２０１−１１からＣＰＵセル２００−２のメモリ２０３−２に対してアクセス命令が発行されると、該アクセス命令は通信回路２０４−１によりネットワーク２０５を経由してＣＰＵセル２００−２へ送信される。
【００１１】
ＣＰＵセル２００−２は、メモリ２０３−２に対するアクセス命令を通信回路２０４−２で受信すると、該アクセス命令にしたがってメモリ２０３−２にアクセスする。そして、当該アクセス命令に対する応答メッセージを通信回路２０４−２からネットワーク２０５を経由してＣＰＵセル２００−１へ送信する。ＣＰＵセル２００−１はＣＰＵセル２００−２から送信された応答メッセージを通信回路２０４−１で受信し、ＣＰＵ２０１−１１へ伝達する。
【００１２】
このような技術を第１従来例の構成に適用することで、ＣＰＵセル２００−１に割り当てられたデバイスセル２０６−１であってもＣＰＵセル２００−２からアクセスすることが可能になる。
【００１３】
例えば、ＣＰＵセル２００−２のＣＰＵ２０１−２１から入出力命令が発行されると、該入出力命令は通信回路２０４−２へ渡され、通信回路２０４−２からネットワーク２０５を経由してＣＰＵセル２００−１へ送信される。
【００１４】
ＣＰＵセル２００−１は、ＣＰＵセル２００−２から送信された入出力命令を通信回路２０４−１で受信すると、該入出力命令をシステム立ち上げ時に設定された宛先情報にしたがって通信回路２０４−１によりネットワーク２０５を経由して該当するデバイスセル２０６−１へ送信する。
【００１５】
デバイスセル２０６−１は、ＣＰＵセル２００−１から送信されたコマンドを通信回路２０７−１で受信し、その内容に基づいて自セル内のデバイス２０９を制御する。そして、システム立ち上げ時に設定された宛先情報にしたがって当該コマンドに対する応答メッセージを通信回路２０７−１からネットワーク２０５を経由して該当するＣＰＵセル２００−１へ送信する。ＣＰＵセル２００−１は、送信された応答メッセージを通信回路２０４−１で受信し、ネットワーク２０５を経由してＣＰＵセル２００−２へ配信する。ＣＰＵセル２００−２は応答メッセージを通信回路２０４−２で受信し、ＣＰＵ２０１−２１へ伝達する。
【００１６】
（第３従来例）
第３従来例のマルチプロセッサシステムは、異なるオペレーティングシステム（ＯＳ）で動作しているＣＰＵセル間でストレージデバイス（ハードディスク装置や光ディスク装置等の記録装置）を共有する手法であり、例えば、非特許文献１及び特許文献３に開示された技術である。
【００１７】
図１５はマルチプロセッサシステムの第３従来例の構成を示すブロック図である。
【００１８】
図１５に示すように、第３従来例のマルチプロセッサシステムは、図１４に示した第１従来例のマルチプロセッサシステムに加えて、複数のストレージデバイスを備えたストレージセル２１２を有し、ストレージセル２１２がファイバーチャネル（以下、ＦＣと略す）ネットワーク２１１により複数のデバイスセル２０６に接続された構成である。
【００１９】
デバイスセル２０６には、ＦＣネットワーク２１１を介して通信するためのＦＣデバイス２１０を備えている。
【００２０】
また、ストレージセル２１２は、データを蓄積する複数のストレージデバイス２１５と、ストレージデバイス２１５の動作を制御するストレージ制御ブリッジ２１４と、ＦＣネットワーク２１１を介してデバイスセル２０６との通信を制御するホスト入出力手段２１３とを備えている。なお、図１５では、図１４に示したマルチプロセッサシステムと同様に、各ＣＰＵセルを２００−１、２００−２のように符号を付与することで区別し、各デバイスセルを２０６−１、２０６−２のように符号を付与することで区別している。また、ＣＰＵセル内の複数のＣＰＵ（図１５では２つ）を２０１−１１、２０１−１２のように符号を付与することで区別し、制御回路、メモリ、及び通信回路には、ＣＰＵセルに付与した符号に対応して、例えば制御回路２０２−１、メモリ２０３−１、及び通信回路２０４−１のように符号を付与している。また、デバイスセル内のデバイス、ＦＣデバイス、ＩＯ制御回路、及び通信回路には、デバイスセルに付与した符号に対応して、例えばデバイス２０６−１、ＦＣデバイス２１０−１、ＩＯ制御回路２０８−１、及び通信回路２０７−１のように符号を付与している。また、ストレージセル２１２内の複数のストレージデバイス（図１５では２つ）を２１５−１、２１５−２のように符号を付与することで区別している。
【００２１】
このようなマルチプロセッサシステムでは、各ＣＰＵセル２００からストレージセル２１２にアクセスする場合に、対応するデバイスセル２０６内のＦＣデバイス２１０を経由することでストレージセル２１２にアクセスすることが可能になる。したがって、異なるＯＳで動作する複数のＣＰＵセル２００であってもストレージセル２１２を共用できる。
【００２２】
【特許文献１】
特開２００２−２２９９６７号
【特許文献２】
特開２０００−２５９５９６号
【特許文献３】
特開２０００−３４７８１５号
【００２３】
【非特許文献１】
ファイ―バーチャネル協議会編、「ファイバーチャネル技術解説書」、論創社
【００２４】
【発明が解決しようとする課題】
上記したような従来のマルチプロセッサシステムのうち、第１従来例のマルチプロセッサシステムでは、デバイスセルに対してシステム起動時に割り当てられたＣＰＵセルからしかアクセスできないという問題がある。
【００２５】
例えば、図１４に示したマルチプロセッサシステムにおいて、ＣＰＵセル２００−１に割り当てられたデバイス２０９−１１をＣＰＵセル２００−２で利用するためには、ＣＰＵセル２００−１及びＣＰＵセル２００−２の動作を一旦停止し、ＣＰＵセル２００−１、ＣＰＵセル２００−２、及びデバイスセル２０６−１の各通信回路に設定される宛先情報を変更した後、ＣＰＵセル２００−１及びＣＰＵセル２００−２を再起動する必要がある。
【００２６】
したがって、デバイスセル２０６に対するアクセスの切り替えのためにシステムを停止させる必要があるので、マルチプロセッサシステムの性能、可用性が低下するという問題があった。
【００２７】
第２従来例のマルチプロセッサシステムでは、システム起動時に割り当てられていないデバイスセルに対してアクセスする場合、ネットワークを２回経由してコマンドを送信する必要があるため、入出力命令等のレイテンシが増加し、システム性能が悪化する問題がある。また、ＣＰＵセルで次の入出力命令を発行するためには、以前に発行した入出力命令が、宛先となるデバイスセルに割り当てられたＣＰＵセルへ到達したことが保証された後になるため、命令がネットワーク内を１往復する時間のレイテンシがターンアラウンドタイムになり、入出力命令に対する処理性能が悪化する問題もある。
【００２８】
さらに、第１従来例と第２従来例とを組み合わせることで、１つのデバイスを複数のＣＰＵセルで利用することが可能になるが、これはＣＰＵセルが１つのＯＳで動作していることが前提となる。
【００２９】
第３従来例のマルチプロセッサシステムでは、ＣＰＵセル及びデバイスセル間の通信機能を提供しているネットワークとは別に、ストレージデバイスを共有するためのＦＣネットワークが必要となるため、ハードウェアのコストが増大する問題がある。また、ＣＰＵセルからストレージデバイスへアクセスする際にＦＣデバイスを中継するため、ストレージデバイス用のデバイスドライバとは別にＦＣデバイス用のデバイスドライバを開発する必要がある。
【００３０】
第３従来例のマルチプロセッサシステムは、複数のＦＣデバイスを１つのデバイスドライバで管理することで信頼性の向上や負荷分散による性能の向上が可能とされている。しかしながら、例えば、１つのマルチプロセッサシステムがパーティショニングされて４つのＯＳで動作するようなケースでは、信頼性を確保するために１つのＯＳあたり２つのＦＣデバイスが必要となる。そのため、パーティショニング時のハードウェアコストが増大するという問題がある。
【００３１】
また、複数のＦＣデバイスを１つのデバイスドライバが管理する場合、特許文献３には、そのＦＣデバイスに対する入出力命令のレイテンシ及びＴＡＴを改善するために、複数のＦＣデバイスを最適に選択するための方法や技術が開示されていない。
【００３２】
さらに、デバイスドライバは、通常、管理するＦＣデバイスへのアクセスが競合しないように排他制御を行うため、例えば２つのアプリケーションプログラムが同時に同じＦＣデバイスに対するアクセス要求を発行した場合に、排他制御により片方のアプリケーションのアクセス要求がブロックされて性能が低下するという問題があった。
【００３３】
本発明は上記したような従来の技術が有する問題点を解決するためになされたものであり、複数のＯＳで動作する環境下であってもデバイスを共有化することが可能な簡易な構成のマルチプロセッサシステムを提供することを第１の目的とする。
【００３４】
また、デバイスに対する入出力命令等のレイテンシやターンアラウンドタイムを短縮すると共に、デバイスに対するアクセス要求の競合やネットワークのトラフィック量の増大を軽減し、デバイスに対するアクセス性能を向上させたマルチプロセッサシステムを提供することを第２の目的とする。
【００３５】
さらに、ハードウェアのコストを増大させることなく、デバイスの信頼性の向上や負荷分散による性能の向上が可能なマルチプロセッサシステムを提供することを第３の目的とする。
【００３６】
【課題を解決するための手段】
上記目的を達成するため本発明のマルチプロセッサシステムは、少なくとも１つのＣＰＵを備えた複数のＣＰＵセルを有し、前記ＣＰＵセルが複数のグループに分割され、該グループ毎に異なるオペレーティングシステムで動作するマルチプロセッサシステムであって、
前記複数のＣＰＵセル間で共用されるデバイス、
並びに前記デバイスで実行可能な複数種類の処理を管理するためのデバイス管理情報を備え、前記ＣＰＵセルからコマンドを受信すると、該コマンドの発行元に対応するデバイス管理情報を検索し、前記コマンドにより更新される前記デバイス管理情報で指定された処理を前記デバイスに実行させるデバイス管理部を備えた、前記ＣＰＵセルとネットワークを介して接続されたデバイスセルを有する構成である。
【００３７】
このとき、前記デバイス管理情報は、
前記複数のＣＰＵセルにそれぞれ対応して設けられていてもよく、
前記グループの数、及び前記ＣＰＵセルの数に一致しない、任意の数だけ設けられていてもよい。
【００３８】
また、前記ＣＰＵセルは、利用可能な前記デバイスの情報をテーブル形式で保持し、
システム立ち上げ時に自機に割り当てられたデバイスを優先的に利用してもよい。
【００３９】
さらに、前記デバイスセルは、
複数の同じデバイスを備え、
前記デバイス管理部は、
前記デバイス管理情報で指定された処理を、前記複数のデバイスのうちの任意のデバイスに実行させてもよく、
前記ＣＰＵセルは、
前記ＣＰＵから発行された複数の命令をまとめたコマンドを生成するコマンド送出回路を備え、
前記デバイスセルは、
前記コマンドを分解して複数の命令を抽出するコマンド解析部を備え、
前記デバイス管理部は、抽出された複数の命令により更新される前記デバイス管理情報で指定された処理を前記デバイスに実行させてもよい。
前記ＣＰＵセルは、自機が所属する前記グループを特定するためのシステム識別子を保持し、
前記デバイスセルは、前記システム識別子に対応するＣＰＵセルのリストから構成されるシステム構成情報を保持し、
前記デバイスセルは、前記コマンドと共に前記ＣＰＵセルから送信された前記システム識別子と保持した前記システム構成情報から該ＣＰＵセルが所属するグループの中から任意の一つのＣＰＵセルを選択し、該選択したＣＰＵセルに対して該コマンドに対する処理結果を含む応答メッセージを送出し、
ＣＰＵセルは、前記デバイスセルから前記応答メッセージを受信すると、該応答メッセージにしたがって前記デバイスセルの処理結果を取得してもよい。
【００４０】
一方、本発明のデバイス共有方法は、少なくとも１つのＣＰＵを備えた複数のＣＰＵセルを有し、前記ＣＰＵセルが複数のグループに分割され、該グループ毎に異なるオペレーティングシステムで動作するマルチプロセッサシステムでデバイスを共用するためのデバイス共有方法であって、
前記ＣＰＵセルとネットワークを介して接続された前記デバイスを含むデバイスセルに、前記デバイスで実行可能な複数種類の処理を管理するためのデバイス管理情報を備えておき、
前記デバイスセルで、前記ＣＰＵセルからコマンドを受信すると、該コマンドの発行元に対応するデバイス管理情報を検索し、前記コマンドにより更新される前記デバイス管理情報で指定された処理を前記デバイスに実行させる方法である。
【００４１】
このとき、前記デバイス管理情報は、
前記複数のＣＰＵセルにそれぞれ対応して設けられていてもよく、
前記グループの数、及び前記ＣＰＵセルの数に一致しない、任意の数だけ設けられていてもよい。
【００４２】
また、前記ＣＰＵセルで、自機が利用可能な前記デバイスの情報をテーブル形式で保持し、
システム立ち上げ時に該ＣＰＵセルに割り当てられたデバイスを優先的に利用してもよい。
【００４３】
さらに、前記デバイスセルに複数の同じデバイスを備え、
前記デバイスセルは、前記デバイス管理情報で指定された処理を、前記複数のデバイスのうちの任意のデバイスに実行させてもよく、
前記ＣＰＵセルに、前記ＣＰＵから発行された複数の命令をまとめたコマンドを生成するコマンド送出回路を備え、
前記デバイスセルに、前記コマンドを分解して複数の命令を抽出するコマンド解析部を備え、抽出された複数の命令により更新される前記デバイス管理情報で指定された処理を前記デバイスに実行させてもよい。
【００４４】
また、前記ＣＰＵセルで、自機が所属する前記グループを特定するためのシステム識別子を保持し、
前記デバイスセルで、前記システム識別子に対応するＣＰＵセルのリストから構成されるシステム構成情報を保持し、
前記デバイスセルは、前記コマンドと共に前記ＣＰＵセルから送信された前記システム識別子と保持した前記システム構成情報から該ＣＰＵセルが所属するグループの中から任意の一つのＣＰＵセルを選択し、該選択したＣＰＵセルに対して該コマンドに対する処理結果を含む応答メッセージを送出し、
ＣＰＵセルは、前記デバイスセルから前記応答メッセージを受信すると、該応答メッセージにしたがって前記デバイスセルの処理結果を取得してもよい。
【００４５】
上記のようなマルチプロセッサシステム及びデバイス共有方法では、デバイスセルに、デバイスで実行可能な複数種類の処理を管理するためのデバイス管理情報を備え、ＣＰＵセルからコマンドを受信した場合に、該コマンドの発行元に対応するデバイス管理情報を検索し、コマンドにより更新されるデバイス管理情報で指定された処理をデバイスに実行させることで、各ＣＰＵセルまたは各グループから同じデバイスにアクセスすることが可能になるため、簡素なハードウェアによりデバイスの共有化が可能になる。
【００４６】
また、ＣＰＵセルで、自機が利用可能な前記デバイスの情報をテーブル形式で保持し、システム立ち上げ時に該ＣＰＵセルに割り当てられたデバイスを優先的に利用することで、例えば、デバイスに対する入出力命令のレイテンシはネットワークを１往復する時間となる。また、ターンアラウンドタイムは、ＣＰＵセル内で閉じた時間となるため、ネットワークを１往復するデバイスへのアクセス時間と比較して短くできる。  また、デバイスセルに複数の同じデバイスを備え、デバイス管理情報で指定された処理を複数のデバイスのうちの任意のデバイスに実行させることで、例えば、任意のデバイスを利用している最中に障害が発生した場合、他のデバイスを利用して処理を続行できる。
【００４７】
さらに、ＣＰＵセルに、ＣＰＵから発行された複数の命令をまとめたコマンドを生成するコマンド送出回路を備え、デバイスセルに、コマンドを分解して複数の命令を抽出するコマンド解析部を備え、抽出された複数の命令により更新されるデバイス管理情報で指定された処理をデバイスに実行させることで、デバイスに対する入出力命令等によるネットワークのトラフィックが低減する。
【００４８】
また、ＣＰＵセルで、自機が所属する前記グループを特定するためのシステム識別子を保持し、デバイスセルで、システム識別子に対応するＣＰＵセルのリストから構成されるシステム構成情報を保持し、デバイスセルは、コマンドと共にＣＰＵセルから送信されたシステム識別子と保持したシステム構成情報から該ＣＰＵセルが所属するグループの中から任意の一つのＣＰＵセルを選択し、該選択したＣＰＵセルに対して該コマンドに対する処理結果を含む応答メッセージを送出し、ＣＰＵセルは、デバイスセルから応答メッセージを受信すると、該応答メッセージにしたがってデバイスセルの処理結果を取得することで、デバイスセルでコマンド処理中にシステム構成が変更された場合でもコマンドを発行したグループに正しく応答メッセージを返すことができる。
【００４９】
【発明の実施の形態】
次に本発明について図面を参照して説明する。
【００５０】
（第１の実施の形態）
図１は本発明のマルチプロセッサシステムの第１の実施の形態の構成を示すブロック図であり、図２は図１に示したネットワーク上で伝送されるパケットの構成を示す模式図である。また、図３は図１に示したデバイスのポート構成を示すブロック図であり、図４は図１に示したデバイス制御ブリッジが備えるデバイス管理情報の構成を示すブロック図である。
【００５１】
図１に示すように、第１の実施の形態のマルチプロセッサシステムは、複数のＣＰＵセル１１と複数のデバイスセル１２とを有し、それらがネットワーク１３を介して接続された構成である。
【００５２】
ＣＰＵセル１１は、複数のＣＰＵ１４と、ＣＰＵ１４の動作を制御するＣＰＵ制御ブリッジ１６と、プログラムやデータを記憶するメモリ１５と、ネットワーク１３との通信を制御する通信回路１７とを備えている。
【００５３】
ＣＰＵ１４はメモリ１５に格納されたＯＳの管理下でアプリケーションプログラムを実行することにより所定の処理を実行する。このとき、入出力命令やメモリアクセス命令等のコマンドをＣＰＵ制御ブリッジ１６へ出力する。ＣＰＵ１４から発行されるコマンドが入出力命令の場合は対象となるデバイス（入力装置または出力装置）のポートが指定され、メモリアクセス命令の場合はアクセスするメモリのアドレスが指定される。
【００５４】
デバイスセル１２は、デバイス１８と、デバイス１８に対するインタフェース部であるデバイス制御ブリッジ１９と、ネットワーク１３との通信を制御する通信回路２０とを備えている。
【００５５】
デバイス制御ブリッジ１９は、デバイス管理部２１と、ＣＰＵセル１１毎に用意される記憶領域である複数のデバイス管理情報２２とを備えている。デバイス管理情報２２は、対応するＣＰＵセル１１から見える（アクセス可能な）デバイスの状態を保持するためのものである。
【００５６】
ＣＰＵセル１１及びデバイスセル１２は、それぞれが有する通信回路を利用して、コマンドやデータを含むパケットをネットワーク１３を経由して送受信する。
【００５７】
ＣＰＵセル１１及びデバイスセル１２が備える各通信回路には、それらを識別するための一意なＩＤ（このＩＤはＣＰＵセル１１やデバイスセル１２を特定するＩＤでもある）が付与される。また、各ＣＰＵ１４には、それらを識別するための一意なＣＰＵＩＤが付与される。
【００５８】
図２に示すように、パケットにはＣＰＵ１４から発行された入出力命令やメモリアクセス命令と共にＣＰＵＩＤを含む情報がデータ領域２５に格納される。また、送付先ＩＤ２３には送付先のＣＰＵセル１１またはデバイスセル１２が備える通信回路のＩＤが格納され、送付元ＩＤ２４には送付元のＣＰＵセル１１またはデバイスセル１２が備える通信回路のＩＤが格納される。ネットワーク１３はパケット中の送付先ＩＤ２３及び送付元ＩＤ２４を参照し、送付元の通信回路から送付先ＩＤで特定される通信回路に対してパケットを配信する。
【００５９】
なお、図１では、３つのＣＰＵセル１１と２つのデバイスセル１２を有するマルチプロセッサシステムの構成例を示し、各ＣＰＵセルを１１−１、１１−２、１１−３のように符号を付与することで区別し、各デバイスセルを１２−１、１２−２のように符号を付与することで区別している。また、ＣＰＵセル内の複数のＣＰＵ（図１では２つ）は１４−１１、１４−１２のように符号を付与することで区別し、ＣＰＵ制御ブリッジ、メモリ、及び通信回路は、ＣＰＵセルに付与した符号に対応して、例えばＣＰＵ制御ブリッジ１６−１、メモリ１５−１、及び通信回路１７−１のように符号が付与される。また、デバイスセル内のデバイス、デバイス制御ブリッジ、及び通信回路は、デバイスセルに付与した符号に対応して、例えばデバイス１８−１、デバイス制御ブリッジ１９−１、及び通信回路２０−１のように符号が付与される。
【００６０】
図１に示すマルチプロセッサシステムは、システム起動時に、ＣＰＵセル１１−１及びＣＰＵセル１１−２からなるシステムＡと、ＣＰＵセル１１−３からなるシステムＢとにパーティショニングされ、システムＡとシステムＢとが異なるＯＳで動作するものとする。
【００６１】
ここで、デバイス１８は、図３に示すように、動作モードを設定するためのモード設定ポート２６と、処理を設定するための処理設定ポート２７と、処理の結果を格納する結果読出ポート２８とを備えているものとする。デバイス１８は、ＣＰＵセル１１からのコマンドによって処理設定ポート２７に書き込みが行われると、モード設定ポート２６及び処理設定ポート２７に書き込まれた内容に基づいて処理を実行し、その処理結果を結果読出ポート２８に書き込む。このデバイス１８には、第１のモードで実行する第１の処理及び第２の処理、または第２のモードで実行する第１の処理及び第２の処理の合わせて４つの処理が存在する。
【００６２】
デバイス管理情報２２は、図４に示すように、設定された動作モードを一時的に保持するモード設定レジスタ２９と、処理結果を一時的に保持する結果レジスタ３０とを備えている。このモード設定レジスタ２９及び結果レジスタ３０を有するデバイス管理情報２２は、図１に示すように、各ＣＰＵセル１１に対応して設けられている。図１に示すように、デバイス管理情報には、デバイス１８に付与した符号及び対応するＣＰＵセルに付与された符号に対応して、例えばデバイス１８−１とＣＰＵ１１−３に対応するデバイス管理情報には２２−１３という符号が付与される。また、図４に示すように、モード設定レジスタ及び結果レジスタにはデバイス管理情報に付与した符号に対応して、例えばモード設定レジスタ２９−１１及び結果レジスタ３０−１１のように符号を付与する。
【００６３】
次に、図１に示す２つのシステムＡ、Ｂで１つのデバイス１８−１を共用する場合を例にして、本実施形態のマルチプロセッサシステムの動作について説明する。なお、システムの立ち上げ時、ＣＰＵセル１１−１の通信回路１７−１には、システムＡで利用するデバイス１８−１に対応する入出力ポートの宛先としてデバイスセル１２−１の宛先情報が書き込まれ、ＣＰＵセル１１−３の通信回路１７−３には、システムＢで利用するデバイス１８−１に対応する入出力ポートの宛先としてデバイスセル１２−１の宛先情報が書き込まれ、ＣＰＵセル１１−２の通信回路１７−２には、システムＡで利用するデバイス１８−１に対応する入出力ポートの宛先としてＣＰＵセル１１−１の宛先情報が書き込まれるものとする。
【００６４】
また、システムＡに属するＣＰＵセル１１−２のＣＰＵ１４−２２は、デバイス１８−１に対して、モード設定ポート２６−１に第１のモードを書き込み、処理設定ポート２７−１に第１の処理を書き込み、結果読出しポート２８−１からその結果を読み出すものとする。また、システムＢに属するＣＰＵセル１１−３のＣＰＵ１４−３１は、デバイス１８−１に対して、モード設定ポート２６−１に第２のモードを書き込み、処理設定ポート２７−１に第２の処理を書き込み、結果読出しポート２８−１からその結果を読み出すものとする。また、ここでは、システムＡとシステムＢとが同時にデバイス１８−１をアクセスする場合を説明する。
【００６５】
まず、ＣＰＵセル１１−２のＣＰＵ１４−２２がデバイス１８−１のモード設定ポート２６−１に第１のモードを書き込む入出力命令を発行すると、システム立ち上げ時に設定された宛先情報にしたがって通信回路１７−２によりネットワーク１３を経由してＣＰＵセル１１−１へ該入出力命令を含むパケットが送信される。このとき送信されるパケットの送付先ＩＤ２３はＣＰＵセル１１−１を示し、送付元ＩＤ２４はＣＰＵセル１１−２を示し、データ領域２５にはＣＰＵ１４−２２で発行された入出力命令とＣＰＵ１４−２２を示すＣＰＵＩＤが格納される。
【００６６】
ＣＰＵセル１１−１は、ＣＰＵセル１１−２から送信されたパケットを通信回路１７−１で受信すると、システム立ち上げ時に設定された宛先情報にしたがって通信回路１７−１からネットワーク１３を経由して該当するデバイスセル１２−１へ当該パケットを送信する。この時、パケットの送付先ＩＤ２３はデバイスセル１２−１を示し、送付元ＩＤ２４はＣＰＵ１１−１を示し、データ領域２５にはＣＰＵ１４−２２から発行された設定入出力命令、そのＣＰＵＩＤ、及びＣＰＵセル１１−２を示す要求元ＩＤが格納される。
【００６７】
デバイスセル１２−１は、ＣＰＵセル１１−１から送信されたパケットを通信回路２０−１で受信すると、該パケットから抽出した入出力命令をデバイス管理部２１−１へ転送する。デバイス管理部２１−１は、パケット送付元のＣＰＵセル１１−１に対応するデバイス管理情報２２−１１を参照し、受け取った入出力命令及びデバイス管理情報２２−１１の内容に基づき、必要に応じてデバイス１８−１の制御やデバイス管理情報２２−１１の更新を行う。この場合、第１のモードを書き込む入出力命令であるため、デバイス管理情報２２−１１のモードレジスタ２９−１１に第１のモードを書き込み、処理を終了する。
【００６８】
次に、ＣＰＵセル１１−３のＣＰＵ１４−３１がデバイス１８−１のモード設定ポート２６−１に第２のモードを書き込む入出力命令を発行すると、システム立ち上げ時に設定された宛先情報にしたがって通信回路１７−３によりネットワーク１３を経由して該当するデバイスセル１２−１へ該入出力命令を含むパケットが送信される。この時、パケットの送付先ＩＤ２３はデバイスセル１２−１を示し、送付元ＩＤ２４はＣＰＵセル１１−３を示し、データ領域２５にはＣＰＵ１４−３１から発行された入出力命令とそのＣＰＵＩＤが格納される。
【００６９】
デバイスセル１２−１は、ＣＰＵセル１１−３から送信されたパケットを通信回路２０−１で受信すると、該パケットから抽出された入出力命令をデバイス管理部２１−１へ転送する。デバイス管理部２１−１は、パケット送付元のＣＰＵセル１１−３に対応するデバイス管理情報２２−１３を参照し、受け取った入出力命令及びデバイス管理情報２２−１３の内容に基づき、必要に応じてデバイス１８−１の制御やデバイス管理情報２２−１３の更新を行う。この場合、第２のモードを書き込む入出力命令であるため、デバイス管理情報２２−１３のモードレジスタ２９−１３に第２のモードを書き込み、処理を終了する。
【００７０】
次に、ＣＰＵセル１１−２のＣＰＵ１４−２２がデバイス１８−１の処理設定ポート２７−１に第１の処理を書き込む入出力命令を発行すると、第１のモードを書き込む入出力命令の発行時と同様の手順で、デバイスセル１２−１のデバイス管理部２１−１に当該入出力命令が伝達される。
【００７１】
デバイス管理部２１−１は、パケット送信元のＣＰＵセル１１−１に対応するデバイス管理情報２２−１１のモードレジスタ２９−１１を読出し、デバイス１８−１のモード設定ポート２６−１にその内容（第１のモード）を書き込む。続いて、第１の処理を書き込む入出力命令にしたがって処理設定ポート２７−１に第１の処理を書き込む。
【００７２】
デバイス１８−１は、処理設定ポート２７−１への書き込みを受けて、第１のモードの第１の処理を実行し、処理結果を結果読出ポート２８−１に書き込む。デバイス管理部２１−１は、結果読出ポート２８−１を監視し、処理結果が書き込まれたことを確認すると、結果読出ポート２８−１から当該処理結果を読出し、その内容を結果レジスタ３０−１１に書き込む。
【００７３】
次に、ＣＰＵセル１１−３のＣＰＵ１４−２２がデバイス１８−１の処理設定ポート２７−１に第２の処理を書き込む入出力命令を発行すると、第２のモードを書き込む入出力命令の発行時と同様の手順で、デバイスセル１２−１のデバイス管理部２１−１に当該入出力命令が伝達される。
【００７４】
デバイス管理部２１−１は、送信元ＣＰＵセル１１−３に対応するデバイス管理情報２２−１３のモードレジスタ２９−１３を読出し、デバイス１８−１のモード設定ポート２６−１にその内容（第２のモード）を書き込む。続いて、第２の処理を書き込む入出力命令にしたがって処理設定ポート２７−１に第２の処理を書き込む。
【００７５】
デバイス１８−１は、処理設定ポート２７−１への書き込みを受けて、第２のモードの第２の処理を実行し、処理結果を結果読出ポート２８−１に書き込む。デバイス管理部２１−１は、結果読出ポート２８−１を監視し、処理結果が書き込まれたことを確認すると、結果読出ポート２８−１から当該処理結果を読出し、その内容を結果レジスタ３０−１３に書き込む。
【００７６】
次に、ＣＰＵセル１１−２のＣＰＵ１４−２２がデバイス１８−１の結果読出ポート２８−１からの読出し入出力命令を発行すると、第１のモードを書き込む入出力命令の発行時と同様の手順で、デバイスセル１２−１のデバイス管理部２１−１に当該入出力命令が伝達される。デバイス管理部２１−１は、パケット送信元のＣＰＵセル１１−１に対応するデバイス管理情報２２−１１の結果レジスタ２９−１１を読出し、その内容を応答メッセージとして通信回路２０−１に伝達する。通信回路２０−１は、送付元のＣＰＵセル１１−１に対してこの応答メッセージを含むパケットを送信する。この時、パケットの送付先ＩＤ２３はＣＰＵセル１１−１を示し、送付元ＩＤ２４はデバイスセル１２−１を示し、データ領域２５には応答メッセージとＣＰＵ１４−２２を示すＣＰＵＩＤと要求元ＣＰＵセル１１−２を示す要求元ＩＤが格納される。
【００７７】
ＣＰＵセル１１−１は、この応答メッセージを含むパケットを通信回路１７−１で受信すると、ネットワーク１３を経由してＣＰＵセル１１−２に配信する。この時、パケットの送付先ＩＤ２３はＣＰＵセル１１−２を示し、送付元ＩＤ２４はＣＰＵセル１１−１を示し、データ領域２５には応答メッセージとＣＰＵ１４−２２を示すＣＰＵＩＤが格納される。ＣＰＵセル１１−２は、この応答メッセージを含むパケットを通信回路１７−２で受信すると、該パケットから応答メッセージを抽出し、ＣＰＵ１４−２２へ伝達する。
【００７８】
次に、ＣＰＵセル１１−３のＣＰＵ１４−３１がデバイス１８−１の結果読出ポート２８−１からの読出し入出力命令を発行すると、第２のモードを書き込む入出力命令の発行時と同様の手順で、デバイスセル１２−１のデバイス管理部２１−１に当該入出力命令が伝達される。デバイス管理部２１−１は、送信元のＣＰＵセル１１−３に対応するデバイス管理情報２２−１３の結果レジスタ２９−１３を読出し、その内容を応答メッセージとして通信回路２０−１に伝達する。通信回路２０−１は、送付元のＣＰＵセル１１−３に対してこの応答メッセージを含むパケットを送信する。この時、パケットの送付先ＩＤ２３はＣＰＵセル１１−３を示し、送付元ＩＤ２４はデバイスセル１２−１を示し、データ領域２５には応答メッセージとＣＰＵ１４−３１を示すＣＰＵＩＤが格納される。ＣＰＵセル１１−３は、この応答メッセージを含むパケットを通信回路１７−３で受信すると、該パケットから応答メッセージを抽出し、ＣＰＵ１４−３１へ伝達する。
【００７９】
以上のような手順で動作することで、システムＡに属するＣＰＵセル１１−２のＣＰＵ１４−２２は、デバイス１８−１に対してモード設定ポート２６−１に第１のモードを書き込み、処理設定ポート２７−１に第１の処理を書き込み、結果読出しポート２８−１からその処理結果を読み出すことができる。また、システムＢに属するＣＰＵセル１１−３のＣＰＵ１４−３１は、デバイス１８−１に対してモード設定ポート２６−１に第２のモードを書き込み、処理設定ポート２７−１に第２の処理を書き込み、結果読出しポート２８−１からその処理結果を読み出すことができる。
【００８０】
なお、本実施形態のマルチプロセッサシステムでは、例えば、デバイスセル１２−２にデバイスセル１２−１が有するデバイス１８−１と同じデバイスを設けてもよい。その場合、システム立ち上げ時、例えば、ＣＰＵセル１１−１の通信回路１７−１には、システムＡで利用するデバイス１８−１に対応する入出力ポートの宛先としてデバイスセル１２−１の宛先情報を設定し、デバイス１８−２に対応する入出力ポートの宛先としてデバイスセル１２−２の宛先情報を設定する。また、ＣＰＵセル１１−３の通信回路１７−３には、システムＢで利用するデバイス１８−１に対応する入出力ポートの宛先としてデバイスセル１２−１の宛先情報を設定し、デバイス１８−２に対応する入出力ポートの宛先としてデバイスセル１２−２の宛先情報を設定する。また、ＣＰＵセル１１−２の通信回路１７−２には、システムＡで利用するデバイス１８−１及びデバイス１８−２に対応する入出力ポートの宛先としてＣＰＵセル１１−１の宛先情報を設定する。このような構成では、システムＡ及びシステムＢは、デバイス１８−１とデバイス１８−２とが利用可能なデバイスとして見える。
【００８１】
したがって、各システムのデバイスドライバは、２つ存在するデバイス１８−１とデバイス１８−２とを利用することで、負荷を分散させてシステムの性能を向上させることが可能になる。また、フェイルオーバーを行うことでデバイスの信頼性を向上させることもできる。しかも、それに必要なデバイス数は２個であり、マルチプロセッサシステムで動作するＯＳの数に比例して増加することがない。
【００８２】
さらに、本実施形態のマルチプロセッサシステムでは、例えば、ＣＰＵセル１１−１とＣＰＵセル１１−２の２つのＣＰＵセルで構成されるシステムＡにおいて、デバイス１８−１を２つの異なるデバイス１８−１１とデバイス１８−１２に見せることもできる。システム立ち上げ時に、ＣＰＵセル１１−１の通信回路１７−１には、システムＡで利用する仮想的なデバイス１８−１１に対応する入出力ポートの宛先としてデバイスセル１２−１の宛先情報を設定し、デバイス１８−１２に対応する入出力ポートの宛先としてＣＰＵセル１１−２を設定する。また、ＣＰＵセル１１−２の通信回路１７−２には、システムＡで利用するデバイス１８−１１に対応する入出力ポートの宛先としてＣＰＵセル１１−１の宛先情報を設定し、デバイス１８−１２に対応する入出力ポートの宛先としてデバイスセル１２−１の宛先情報を設定する。このような構成では、システムＡは、デバイス１８−１１とデバイス１８−１２との２個のデバイスが利用可能なデバイスとして見える。
【００８３】
したがって、システムＡでは、デバイス１８−１を管理するデバイスドライバが２つのアプリケーションプログラムから同時にアクセス要求を受けても、デバイス１８−１１とデバイス１８−１２とに使い分けることができる。したがって、同一デバイスにアクセスするための排他制御を行う必要が無くなり、システム性能を向上させることができる。
【００８４】
よって、第１の実施の形態のマルチプロセッサシステムは、各ＯＳのデバイスドライバを改変することなくデバイスを共有化することができる。
【００８５】
また、マルチプロセッサシステムで動作する複数のＯＳ間で、簡素なハードウェアによりデバイスの共有化が可能であり、ハードウェアのコストを低減できる。さらに、デバイスの信頼性向上や負荷分散のために必要なデバイス数は、マルチプロセッサシステムで動作するＯＳの数に依存せずに一定であるため、ハードウェアのコストを低減できる。また、実際には１つしかないデバイスを、仮想的に複数のデバイスに見せることが可能となり、デバイスドライバが２つのアプリケーションプログラムから同時にアクセス要求を受けても、複数の仮想的なデバイスを使い分けることができるようになる。したがって、同一デバイスにアクセスするための排他制御を行う必要が無くなり、システム性能を向上させることができる。
【００８６】
（第２の実施の形態）
第１の実施の形態では、デバイスセル１２に、各ＣＰＵセル１１に対応するデバイス管理情報２２を備えることで異なるＯＳで動作する複数のシステムで１つのデバイスを共用できるようにしていた。したがって、ＣＰＵセル１１が多数存在する場合は、デバイス管理情報２２も多数必要となるため、ハードウェアコストが増大するおそれがある。また、仮想的に見せることができるデバイスの数は、システムを構成するＣＰＵセル１１の数に限定されるため、システムを構成するＣＰＵセルの数が１つの場合は仮想的に２つのデバイスに見せることができなかった。本実施形態のマルチプロセッサシステムは、ＣＰＵセル１１とデバイス管理情報２２を１対１で対応させない例である。
【００８７】
図５は本発明の第２の実施の形態のマルチプロセッサシステムが有するデバイス管理情報の構成を示すブロック図である。
【００８８】
図５に示すように、第２の実施の形態のマルチプロセッサシステムは、第１の実施の形態で備えていたレジスタに加えて、デバイス管理情報２２にＣＰＵセルレジス３１、入出力ポートベースレジスタ３２、及び入出力ポート長レジスタ３３を備えた構成である。これらのレジスタの値はシステム立ち上げ時にそれぞれ設定される。
【００８９】
例えば、図１に示したシステムＡとシステムＢとを有するマルチプロセッサシステムでデバイス１８−１を共有する場合、デバイス管理情報２２をシステムＡとシステムＢに対応して２つ設けておく。そして、システム立ち上げ時、ＣＰＵセル１１−１の通信回路１７−１にはシステムＡで利用するデバイス１８−１に対応する入出力ポートの宛先としてデバイスセル１２−１の宛先情報を設定し、ＣＰＵセル１１−３の通信回路１７−３にはシステムＢで利用するデバイス１８−１に対応する入出力ポートの宛先としてデバイスセル１２−１の宛先情報を設定し、ＣＰＵセル１１−２の通信回路１７−２にはシステムＡで利用するデバイス１８−１に対応する入出力ポートの宛先としてＣＰＵセル１１−１の宛先情報を設定する。
【００９０】
また、システムＡに対応するデバイス管理情報２２のＣＰＵセルレジスタ３１にＣＰＵセル１１−１を示すＩＤを格納し、入出力ポートベースレジスタ３２にシステムＡで設定される入出力ポートのベースアドレスを格納し、入出力ポート長レジスタ３３にその範囲を設定する。
【００９１】
さらに、システムＢに対応するデバイス管理情報２２のＣＰＵセルレジスタ３１にＣＰＵセル１１−３を示すＩＤを格納し、入出力ポートベースレジスタ３２にシステムＢで設定される入出力ポートのベースアドレスを格納し、入出力ポート長レジスタ３３にその範囲を設定する。
【００９２】
デバイス管理部２１は、あるシステム（ＣＰＵセル１１）を送信元とする入出力命令を受信すると、対応するデバイス管理情報２２を検索し、ＣＰＵセルレジスタ３１の内容が送信元ＩＤと一致し、かつ入出力ポートの番号が入出力ポートベースレジスタ３２と入出力ポート長レジスタ３３で示される範囲（入出力ベースレジスタ３２以上、入出力ベースレジスタ３２＋入出力ポート長レジスタ３３未満）を検出する。そして、検出したデバイス管理情報２２を利用して第１の実施の形態と同様にデバイス１８を制御する。
【００９３】
このように、デバイス管理情報２２にＣＰＵセルレジス３１、入出力ポートベースレジスタ３２、及び入出力ポート長レジスタ３３を備え、入出力命令を受信したときに該当するデバイス管理情報２２を検索することで、ＣＰＵセル１１に対してデバイス管理情報２２が１対１に対応しない構成も可能になる。すなわち、ＣＰＵセル１１の数に依存しない、任意の数のデバイス管理情報２２を用意する構成が可能となり、そのデバイス管理情報２２とＣＰＵセル１１の割り当ても自由に設定することができる。これにより、ＣＰＵセルの数に関係なく、例えば２つのデバイス管理情報２２を用意すれば２つのシステムでデバイス１８を共用できるため、ハードウェアコストを低減できる。
【００９４】
また、例えば、２つのデバイス管理情報２２を同じＣＰＵセル１１に割り当て、異なる入出力ポートを設定すれば、システムを構成するＣＰＵセル１１の数が１つでも２つのデバイスが存在するように見せることができる。
【００９５】
（第３の実施の形態）
第１及び第２の実施の形態では、１つのＯＳに対して複数の同じデバイス１８を割り当てた場合にデバイス１８をどのように使い分けるかは特に提案していなかった。そのため、利用するデバイス１８が別のＣＰＵセル１１に割り当てられている場合、従来と同様に、そのデバイス１８に対する入出力命令のレイテンシ及びターンアラウンドタイムが悪化する問題は解決できていなかった。
【００９６】
図６は本発明のマルチプロセッサシステムの第３の実施の形態の処理手順を示すフローチャートであり、図７は第３の実施の形態のマルチプロセッサシステムの各システムが備えるデバイスドライバが保持する情報を示すテーブル図である。なお、図６は、１つのＯＳに対して複数の同じデバイスを割り当てた場合のデバイスドライバによる使い分けの手順を示している。デバイスドライバは、利用可能なデバイスの情報をテーブル形式で保持しており、図７はそのテーブルの各エントリの構成を示している。
【００９７】
図７に示すＣＰＵセルＩＤ３４は対応するデバイス１８に割り当てられているＣＰＵセルのＩＤを示す。また、入出力ポートベース３５は対応するデバイス１８が備える入出力ポートのベースアドレスが格納される。これらＣＰＵセルＩＤ３４及び入出力ポートベース３５の情報はシステム立ち上げ時に設定される。ロックビット３６はデバイス１８が利用中であるか否かを示す。
【００９８】
図６に示すように、任意のアプリケーションからデバイス１８に対するアクセス要求を受付けると、デバイスドライバは、ステップ１０１にてテーブルを検索し、当該デバイスドライバが動作しているＣＰＵ１４が含まれるＣＰＵセルのＩＤとＣＰＵセルＩＤ３４の内容が一致し、かつロックビット３６が「０」のエントリを１つ検出する。
【００９９】
続いて、ステップ１０２にて該当するエントリが検出されたか否かを判定し、エントリが検出された場合はステップ１０５に移行する。
【０１００】
一方、ステップ１０２にて該当するエントリが検出されなかった場合は、ステップ１０３にて再度テーブルを検索し、ロックビット３６が「０」のエントリを１つ検出する。そして、ステップ１０４にて該当するエントリが検出されたか否かを再度判定し、該当するエントリが検出された場合はステップ１０５に移行する。また、検出されなかった場合はステップ１０１に戻る。
ステップ１０５では、検出したエントリを利用するデバイス１８として選択し、そのエントリのロックビット３６を「１」に設定する。次に、ステップ１０６にて検出したエントリの入出力ポートベース３５の内容に基づいてアクセスするデバイス１８の入出力ポート番号を計算し、デバイス１８にアクセスする。
【０１０１】
デバイス１８へのアクセスが完了すると、ステップ１０７にて検出したエントリのロックビット３６を「０」に設定する。
【０１０２】
以上の手順で処理することで、デバイスドライバは同一ＣＰＵセル１１の通信回路１７に割り当てられたデバイス１８を優先的に利用することになる。この場合、デバイス１８への入出力命令のレイテンシはネットワーク１３を１往復する時間となる。また、ターンアラウンドタイムは、ＣＰＵセル１１内で閉じた時間となるため、ネットワーク１３を１往復するデバイス１８へのアクセス時間と比較して短くできる。
【０１０３】
したがって、第３の実施の形態のマルプロセッサシステムによれば、１つのＯＳに複数の同じデバイスを割り当てた場合に、デバイスに対する入出力命令のレイテンシ及びターンアラウンドタイムを短縮できる。
【０１０４】
（第４の実施の形態）
第４の実施の形態のマルチプロセッサシステムは、第１〜第３の実施の形態の変形例として、デバイスセル１２に複数のデバイス１８を有する構成である。その場合、デバイスセル１２には、各デバイス１８に対応するデバイス管理部２１及びデバイス管理情報２２が用意される。各デバイス１８へのアクセスは対応するデバイス管理部２１を経由して行われる。
【０１０５】
図８は第４の実施の形態のマルチプロセッサシステムが有するデバイスセルの構成を示すブロック図である。
【０１０６】
図８に示すように、本実施形態のマルチプロセッサシステムは、デバイスセル１２−１にデバイス１８−１ａ及びデバイス１８−１ｂを備え、デバイス制御ブリッジ１９−１にデバイス１８−１ａ及びデバイス１８−１ｂがそれぞれ接続された構成である。
【０１０７】
デバイス制御ブリッジ１９−１は、デバイス１８−１ａに対応するデバイス管理部２１−１ａ及びデバイス管理情報２２−１１ａ，１２ａ，１３ａと、デバイス１８−１ｂに対応するデバイス管理部２１−１ｂ及びデバイス管理情報２２−１１ｂ，１２ｂ，１３ｂとを備えている。
【０１０８】
このような構成において、図８に示すデバイスセル１２−１の通信回路２０−１でデバイス１８−１ａに対する入出力命令を受信すると、デバイス管理部２１−１ａを用いてデバイス１８−１ａが制御される。また、デバイス１８−１ｂに対する入出力命令を受信すると、デバイス管理部２１−１ｂを用いてデバイス１８−１ｂが制御される。
【０１０９】
なお、本実施形態のマルチプロセッサシステムでは、デバイスセル１２に同種のデバイスを複数備え、それらを１つのデバイス管理部２１で制御することも可能である。その場合のデバイス管理部２１の構成を図９に示す。
【０１１０】
図９は第４の実施の形態のマルチプロセッサシステムが有するデバイスセルの変形例の構成を示すブロック図である。
【０１１１】
図９に示すデバイスセル１２−１は、同種のデバイス１８−１ａ及びデバイス１８−１ｂを備え、デバイス制御ブリッジ１９−１にデバイス１８−１ａ及びデバイス１８−１ｂがそれぞれ接続された構成である。
【０１１２】
デバイス制御ブリッジ１９−１は、デバイス１８−１ａ及びデバイス１８−１ｂそれぞれに対応するデバイス管理部２１−１ａ及びデバイス管理情報２２−１１ａ，１２ａ，１３ａを備えている。
【０１１３】
デバイス管理部２１は、デバイス１８−１ａ及びデバイス１８−１ｂの利用状況をそれぞれ監視し、負荷分散を行う。また、一方のデバイスが障害等で利用できなくなった場合は、他方のデバイスを利用することによりフェイルオーバーを実現し、信頼性を向上させる。
【０１１４】
図１０は図９に示したデバイス管理部が保持する情報を示すテーブル図である。
【０１１５】
図１０に示すように、本実施形態のデバイス管理部２１−１では、デバイス１８−１ａに対応するロックビット３７−１ａ及びデバイス１８−１ｂに対応するロックビット３７−１ｂを保持している。これらのロックビット３７−１ａ、３７−１ｂはそれぞれデバイス１８−１ａ及びデバイス１８−１ｂの利用可否状況を示している。例えば、デバイス１８−１ａが利用可能な場合はロックビット３７−１ａが「０」となり、現在利用中あるいは障害により利用できない場合は「１」となる。
【０１１６】
次に、第４の実施の形態のマルチプロセッサシステムのデバイス管理部の動作について図１１を用いて説明する。
【０１１７】
図１１は本発明のマルチプロセッサシステムの第４の実施の形態の処理手順を示すフローチャートである。なお、図１１はデバイス管理部２１−１が通信回路２０−１を介して入出力命令を受信し、その入出力命令に対応する処理を行って実際にデバイスにアクセスする必要が生じた場合の動作を示している。
【０１１８】
図１１に示すように、デバイス管理部２１−１は、通信回路２０−１を介して入出力命令を受信すると、ステップ１１１にて利用可能なデバイスを見出すために値が「０」のロックビット３７−１を検索する。
【０１１９】
次に、ステップ１１２にて値が「０」のロックビット３７−１を検出したか否かを判定し、「０」のロックビット３７−１を検出した場合は（以降の説明ではロックビット３７−１ａが「０」であったとして説明を行う）ステップ１１３に移行する。また、検出していない場合はステップ１１１に戻る。
【０１２０】
次に、ステップ１１３にて検出したロックビット３７−１ａに対応するデバイス１８−１ａを利用するデバイスとして選択し、該ロックビット３７−１ａに「１」を書き込む。そして、ステップ１１３で選択したデバイス１８−１ａにアクセスし、処理の完了を待ち受ける。
【０１２１】
次に、ステップ１１５にてデバイス１８−１ａで障害が発生したか否かを判定し、処理の完了を待っている間にデバイス１８−１ａの障害が検出された場合はステップ１１０に戻る。また、正常にデバイス１８−１ａの処理が完了した場合はステップ１１６に移行する。ステップ１１６では、ロックビット３７−１ａに「０」を書き込む。
【０１２２】
以上のような手順で処理することで、デバイス管理部２１−１は、例えば、ある入出力命令にしたがってデバイス１８−１ａにアクセスしている最中に、他の入出力命令を受けてデバイス１８−１にアクセスする必要が生じた場合でも、デバイス１８−１ｂを利用することができる。これにより、デバイス１８−１に対するアクセスの負荷をデバイス１８−１ａ及びデバイス１８−１ｂを利用して分散できる。
【０１２３】
また、例えば、デバイス１８−１ａを利用している最中に障害が発生した場合、もう１つのデバイス１８−１ｂを利用して処理を続行できる。これにより、障害時のフェイルオーバーを実現できる。
【０１２４】
したがって、第４の実施の形態のマルチプロセッサシステムでは、デバイスセルに複数のデバイスを接続することが可能になる。また、同種のデバイスを接続し、１つのデバイス管理部２１で管理することによりデバイスドライバの改変を行うことなく、負荷分散及びフェイルオーバーを実現できる。
（第５の実施の形態）
図１２は本発明のマルチプロセッサシステムの第５の実施の形態の構成を示すブロック図であり、図１３は図１２に示したデバイス制御ブリッジが備えるデバイス管理情報の構成を示すブロック図である。
【０１２５】
図１２に示すように、第５の実施の形態のマルチプロセッサシステムは、ＣＰＵセル１１にコマンド送出回路３８を備え、デバイスセル１２のデバイス管理部２１にコマンド解析部３９を備えた点が第１の実施の形態と異なっている。
【０１２６】
ＣＰＵセル１１は、コマンド送出回路３８によりＣＰＵ１４から発行された複数の入出力命令をまとめたコマンドを生成し、通信回路１７によりパケット化してネットワーク１３へ送出する。デバイスセル１２は、通信回路２０によりネットワーク１３からパケットを受信すると、該パケットから抽出したコマンドをデバイス管理部２１へ転送する。
【０１２７】
デバイス管理部２１は、入出力命令ではないコマンドを受信した場合、コマンド解析部３９に該コマンドを渡して解析を依頼する。コマンド解析部３９は該コマンドを複数の入出力命令に分解してデバイス管理部２１に返送する。デバイス管理部２１はコマンド解析部３９から返送された複数の入出力命令にしたがって処理を実行する。
【０１２８】
ここで、デバイス１８には、第１の実施の形態と同様に、動作モードの種類を設定するためのモード設定ポート２６と、処理の種類を設定するための処理設定ポート２７と、処理の結果を格納する結果読出ポート２８とを備えている。また、ＣＰＵ１４は、モード設定ポート２６への書き込みアクセス及び処理設定ポート２７への書き込みアクセスを同時に生成するものとする。この場合、デバイス管理情報２２は、図１３に示すように、結果レジスタ３０のみで構成できる。
【０１２９】
次に、図１２に示す２つのシステムＡ、Ｂで１つのデバイス１８−１を共有する場合を例にして、本実施形態のマルチプロセッサシステムの動作について説明する。なお、システムの立ち上げ時、ＣＰＵセル１１−１の通信回路１７−１にはシステムＡで利用するデバイス１８−１に対応する入出力ポートの宛先としてデバイスセル１２−１の宛先情報が設定され、ＣＰＵセル１１−３の通信回路１７−３にはシステムＢで利用するデバイス１８−１に対応する入出力ポートの宛先としてデバイスセル１２−１の宛先情報が設定され、ＣＰＵセル１１−２の通信回路１７−２にはシステムＡで利用するデバイス１８−１に対応する入出力ポートの宛先としてＣＰＵセル１１−１の宛先情報が設定されるものとする。
【０１３０】
また、システムＡに属するＣＰＵセル１１−２のＣＰＵ１４−２２は、デバイス１８−１に対して、モード設定ポート２６−１に第１のモードを書き込み、処理設定ポート２７−１に第１の処理を書き込み、結果読出しポート２８−１からその結果を読み出すとする。また、システムＢに属するＣＰＵセル１１−３のＣＰＵ１４−３１は、デバイス１８−１に対して、モード設定ポート２６−１に第２のモードを書き込み、処理設定ポート２７−１に第２の処理を書き込み、結果読出しポート２８−１からその結果を読み出すとする。ここでは、システムＡとシステムＢとが同時にデバイス１８−１にアクセスする場合で説明する。
【０１３１】
まず、ＣＰＵセル１１−２のＣＰＵ１４−２２が第１のモード及び第１の処理に設定するための入出力命令をまとめたコマンドを生成すると、システム立ち上げ時に設定された宛先情報にしたがって通信回路１７−２によりネットワーク１３を経由してＣＰＵセル１１−１へ該コマンドを含むパケットが送信される。このとき送信されるパケットの送付先ＩＤ２３はＣＰＵセル１１−１を示し、送付元ＩＤ２４はＣＰＵセル１１−２を示し、データ領域２５にはＣＰＵセル１１−２で発行されたコマンドとＣＰＵ１４−２２を示すＣＰＵＩＤが格納される。
【０１３２】
ＣＰＵセル１１−１は、ＣＰＵセル１１−２から送信されたパケットを通信回路１７−１で受信すると、システム立ち上げ時に設定された宛先情報にしたがって通信回路１７−１からネットワーク１３を経由して該当するデバイスセル１２−１へ当該パケットを送信する。この時、パケットの送付先ＩＤ２３はデバイスセル１２−１を示し、送付元ＩＤ２４はＣＰＵ１１−１を示し、データ領域２５にはＣＰＵセル１１−２で発行されたコマンド、及びＣＰＵセル１１−２を示す要求元ＩＤが格納される。
【０１３３】
デバイスセル１２−１は、このコマンドを含むパケットを通信回路２０−１で受信すると、該パケットからコマンドを抽出し、デバイス管理部２１−１に伝達する。デバイス管理部２１−１は、受信したコマンドをコマンド解析部３９−１で解析し、モード設定ポート２６−１に対する第１のモードへの設定入出力命令、及び処理設定ポート２７−１に対する第１の処理への設定入出力命令を取得する。そして、デバイス１８−１のモード設定ポート２６−１を第１のモードに設定し、処理設定ポート２７−１を第１の処理に設定する。
【０１３４】
デバイス１８−１は、処理設定ポート２７−１に対する書き込みを受けて、第１のモードの第１の処理を実行し、処理結果を結果読出ポート２８−１に書き込む。
【０１３５】
デバイス管理部２１−１は、結果読出ポート２８−１を監視し、処理結果が書き込まれたことを確認すると、結果読出ポート２８−１から処理結果を読出し、その内容をパケットの送付元ＩＤが示すＣＰＵセル１１−１に対応する結果レジスタ３０−１１へ書き込む。
【０１３６】
次に、ＣＰＵセル１１−３のＣＰＵ１４−３１が第２のモード及び第２の処理に設定するための入出力命令をまとめたコマンドを生成すると、ＣＰＵセル１１−３はコマンド送出回路３８−３を利用して該コマンドをデバイスセル１２−１に送出する。この時、ＣＰＵセル１１−３の通信回路１７−３から出力されるパケットの送付先ＩＤ２３はデバイスセル１８−１を示し、送付元ＩＤ２４はＣＰＵセル１１−３を示し、データ領域２５には該コマンドが格納される。
【０１３７】
デバイスセル１２−１は、このコマンドを含むパケットを通信回路２０−１で受信すると、該パケットからコマンドを抽出し、デバイス管理部２１−１に伝達する。デバイス管理部２１−１は、受信したコマンドをコマンド解析部３９−１で解析し、モード設定ポート２６−１に対する第２のモードへの設定入出力命令、及び処理設定ポート２７−１に対する第２の処理への設定入出力命令を取得する。そして、デバイス１８−１のモード設定ポート２６−１を第２のモードに設定し、処理設定ポート２７−１を第２の処理に設定する。
【０１３８】
デバイス１８−１は、処理設定ポート２７−１に対する書き込みを受けて、第２のモードの第２の処理を実行し、処理結果を結果読出ポート２８−１に書き込む。
【０１３９】
デバイス管理部２１−１は、結果読出ポート２８−１を監視し、処理結果が書き込まれたことを確認すると、結果読出ポート２８−１から処理結果を読出し、その内容をパケットの送付元ＩＤが示すＣＰＵセル１１−３に対応する結果レジスタ３０−１３へ書き込む。
【０１４０】
次に、ＣＰＵセル１１−２のＣＰＵ１４−２２がデバイス１８−１の結果読出ポート２８−１への読出し入出力命令を発行すると、ＣＰＵセル１１−２は通信回路１７−２により該入出力命令を含むパケットを生成し、ネットワーク１３を経由してＣＰＵセル１１−１に送信する。この時、ＣＰＵセル１１−２の通信回路１７−２から出力されるパケットの送付先ＩＤ２３はＣＰＵ１１−１を示し、送付元ＩＤ２４はＣＰＵセル１１−２を示し、データ領域２５には該入出力命令とＣＰＵ１４−２２を示すＣＰＵＩＤが格納される。
【０１４１】
ＣＰＵセル１１−１は、このコマンドを含むパケットを通信回路１７−１で受信すると、システム立ち上げ時に設定された宛先情報にしたがってＣＰＵセル１１−２から受信した入出力命令を含むパケットをネットワーク１３を経由して該当するデバイスセル１２−１へ送信する。この時、パケットの送付先ＩＤ２３はデバイスセル１２−１を示し、送付元ＩＤ２４はＣＰＵ１１−１を示し、データ領域２５には入出力命令とＣＰＵ１４−２２を示すＣＰＵＩＤとＣＰＵセル１１−２を示す要求元ＩＤが格納される。
【０１４２】
デバイスセル１２−１は、この入出力命令を含むパケットを通信回路２０−１で受信すると、該パケットから入出力命令を抽出し、デバイス管理部２１−１に伝達する。デバイス管理部２１−１は、送信元のＣＰＵセル１１−１に対応するデバイス管理情報２２−１１の結果レジスタ２９−１１を読出し、その内容を応答メッセージとして通信回路２０−１に伝達する。通信回路２０−１は、送付元のＣＰＵセル１１−１に対してこの応答メッセージを含むパケットを送信する。この時、パケットの送付先ＩＤ２３はＣＰＵセル１１−１を示し、送付元ＩＤ２４はデバイスセル１２−１を示し、データ領域２５部には、応答メッセージとＣＰＵ１４−２２を示すＣＰＵＩＤと要求元のＣＰＵセル１１−２を示す要求元ＩＤが格納される。
【０１４３】
ＣＰＵセル１１−１は、デバイスセル１２−１から応答メッセージを含むパケットを通信回路１７−１で受信すると、ネットワーク１３を経由してＣＰＵセル１１−２へ配信する。この時、パケットの送付先ＩＤ２３はＣＰＵセル１１−２を示し、送付元ＩＤ２４はＣＰＵセル１１−１を示し、データ領域２５には応答メッセージとＣＰＵ１４−２２を示すＣＰＵＩＤが格納される。
【０１４４】
ＣＰＵセル１１−２は、この応答メッセージを含むパケットを通信回路１７−２で受信すると、該パケットから応答メッセージを抽出し、ＣＰＵ１４−２２へ伝達する。
【０１４５】
次に、ＣＰＵセル１１−３のＣＰＵ１４−３１がデバイス１８−１の結果読出ポート２８−１への読出し入出力命令を発行すると、ＣＰＵセル１１−３は通信回路１７−３により該入出力命令を含むパケットを生成し、システム立ち上げ時に設定された宛先情報にしたがってネットワーク１３を経由してデバイスセル１２−１へ送信する。この時、ＣＰＵセル１１−３の通信回路１７−３から出力されるパケットの送付先ＩＤ２３はデバイスセル１２−１を示し、送付元ＩＤ２４はＣＰＵセル１１−３を示し、データ領域２５には該入出力命令とＣＰＵ１４−３１を示すＣＰＵＩＤが格納される。
【０１４６】
デバイスセル１２−１は、この入出力命令を含むパケットを通信回路２０−１で受信すると、該パケットから入出力命令を抽出し、デバイス管理部２１−１に伝達する。デバイス管理部２１−１は、送信元のＣＰＵセル１１−３に対応するデバイス管理情報２２−１３の結果レジスタ２９−１３を読出し、その内容を応答メッセージとして通信回路２０−１に伝達する。通信回路２０−１は、送付元のＣＰＵセル１１−３に対してこの応答メッセージを含むパケットを送信する。この時、パケットの送付先ＩＤ２３はＣＰＵセル１１−３を示し、送付元ＩＤ２４はデバイスセル１２−１を示し、データ領域２５部には、応答メッセージとＣＰＵ１４−３１を示すＣＰＵＩＤが格納される。
【０１４７】
ＣＰＵセル１１−３は、この応答メッセージを含むパケットを通信回路１７−３で受信すると、該パケットから応答メッセージを抽出し、ＣＰＵ１４−３１へ伝達する。
【０１４８】
以上のような手順で動作することで、システムＡに属するＣＰＵセル１１−２のＣＰＵ１４−２２は、デバイス１８−１に対してモード設定ポート２６−１に第１のモードを書き込み、処理設定ポート２７−１に第１の処理を書き込み、結果読出しポート２８−１からその処理結果を読み出すことができる。また、システムＢに属するＣＰＵセル１１−３のＣＰＵ１４−３１は、デバイス１８−１に対してモード設定ポート２６−１に第２のモードを書き込み、処理設定ポート２７−１に第２の処理を書き込み、結果読出しポート２８−１からその処理結果を読み出すことができる。
【０１４９】
なお、本実施形態のマルチプロセッサシステムでは、例えば、デバイスセル１２−２にデバイスセル１２−１が有するデバイス１８−１と同じデバイスを設けてもよい。その場合、システム立ち上げ時、例えば、ＣＰＵセル１１−１の通信回路１７−１にはシステムＡで利用するデバイス１８−１に対応する入出力ポートの宛先としてデバイスセル１２−１の宛先情報を設定し、デバイス１８−２に対応する入出力ポートの宛先としてデバイスセル１２−２の宛先情報を設定する。また、ＣＰＵセル１１−３の通信回路１７−３にはシステムＢで利用するデバイス１８−１に対応する入出力ポートの宛先としてデバイスセル１２−１の宛先情報を設定し、デバイス１８−２に対応する入出力ポートの宛先としてデバイスセル１２−２の宛先情報を設定する。また、ＣＰＵセル１１−２の通信回路１７−２にはシステムＡで利用するデバイス１８−１及びデバイス１８−２に対応する入出力ポートの宛先としてＣＰＵセル１１−１の宛先情報を設定する。このような構成では、システムＡ及びシステムＢは、デバイス１８−１とデバイス１８−２とが利用可能なデバイスとして見える。
【０１５０】
したがって、各システムのデバイスドライバは、２つ存在するデバイス１８−１とデバイス１８−２とを利用することで、負荷を分散させてシステムの性能を向上させることが可能になる。また、フェイルオーバーを行うことでデバイスの信頼性を向上させることもできる。しかも、それに必要なデバイス数は２個であり、マルチプロセッサシステムで動作するＯＳの数に比例して増加することがない。
【０１５１】
さらに、本実施形態のマルチプロセッサシステムでは、例えば、ＣＰＵセル１１−１とＣＰＵセル１１−２の二つのＣＰＵセルで構成されるシステムＡにおいて、デバイス１８−１を２つの異なるデバイス１８−１１とデバイス１８−１２に見せることもできる。システム立ち上げ時に、ＣＰＵセル１１−１の通信回路１７−１には、システムＡで利用する仮想的なデバイス１８−１１に対応する入出力ポートの宛先としてデバイスセル１２−１の宛先情報を設定し、デバイス１８−１２に対応する入出力ポートの宛先としてＣＰＵセル１１−２を設定する。また、ＣＰＵセル１１−２の通信回路１７−２にはシステムＡで利用するデバイス１８−１１に対応する入出力ポートの宛先としてＣＰＵセル１１−１の宛先情報を設定し、デバイス１８−１２に対応する入出力ポートの宛先としてデバイスセル１２−１の宛先情報を設定する。このような構成では、システムＡはデバイス１８−１１とデバイス１８−１２との２個のデバイスが利用可能なデバイスとして見える。
【０１５２】
したがって、システムＡでは、デバイス１８−１を管理するデバイスドライバが２つのアプリケーションプログラムから同時にアクセス要求を受けても、デバイス１８−１１とデバイス１８−１２とに使い分けることができる。したがって、同一デバイスにアクセスするための排他制御を行う必要が無くなり、システム性能を向上させることができる。
【０１５３】
よって、第５の実施の形態のマルチプロセッサシステムは、各ＯＳのデバイスドライバを改変することなくデバイスを共有化することができる。
【０１５４】
また、マルチプロセッサシステムで動作する複数のＯＳ間で、簡素なハードウェアによりデバイスの共有化が可能であり、ハードウェアのコストを低減できる。さらに、デバイスの信頼性向上や負荷分散のために必要なデバイス数は、マルチプロセッサシステムで動作するＯＳの数に依存せずに一定であるため、ハードウェアのコストを低減できる。また、実際には１つしかないデバイスを、仮想的に複数のデバイスに見せることが可能となり、デバイスドライバが２つのアプリケーションプログラムから同時にアクセス要求を受けても、複数の仮想的なデバイスを使い分けることができるようになる。したがって、同一デバイスにアクセスするための排他制御を行う必要が無くなり、システム性能を向上させることができる。
【０１５５】
なお、第５の実施の形態で示した構成（ＣＰＵセル１１にコマンド送出回路３８を備え、デバイスセル１２のデバイス管理部２１にコマンド解析部３９を備えた構成）は、上述した第２〜第４の実施の形態にも適応可能である。
【０１５６】
（第６の実施の形態）
第５の実施の形態では、デバイス１８−１が備えるモード設定ポート２６−１及び処理設定ポート２７−１に対する入出力命令を１つのコマンドにまとめて送信する例を示した。第６の実施の形態は、それに結果読出しポート２８−１に対する入出力命令を加える例である。この場合、デバイス管理情報２２には何の情報も持つ必要がない。マルチプロセッサシステムの構成は図１２で示す第５の実施の形態と同様であるため、その説明は省略する。
【０１５７】
次に、図１２に示す２つのシステムＡ、Ｂで１つのデバイス１８−１を共有する場合を例にして、本実施形態のマルチプロセッサシステムの動作について説明する。なお、システムの立ち上げ時、ＣＰＵセル１１−１の通信回路１７−１にはシステムＡで利用するデバイス１８−１に対応する入出力ポートの宛先としてデバイスセル１２−１の宛先情報が設定され、ＣＰＵセル１１−３の通信回路１７−３にはシステムＢで利用するデバイス１８−１に対応する入出力ポートの宛先としてデバイスセル１２−１の宛先情報が設定され、ＣＰＵセル１１−２の通信回路１７−２にはシステムＡで利用するデバイス１８−１に対応する入出力ポートの宛先としてＣＰＵセル１１−１の宛先情報が設定されるものとする。
【０１５８】
また、システムＡに属するＣＰＵセル１１−１のＣＰＵ１４−１２は、デバイス１８−１に対して、モード設定ポート２６−１に第１のモードを書き込み、処理設定ポート２７−１に第１の処理を書き込み、結果読出しポート２８−１からその結果を読み出すとする。また、システムＢに属するＣＰＵセル１１−３のＣＰＵ１４−３１は、デバイス１８−１に対して、モード設定ポート２６−１に第２のモードを書き込み、処理設定ポート２７−１に第２の処理を書き込み、結果読出しポート２８−１からその結果を読み出すとする。ここでは、システムＡとシステムＢとが同時にデバイス１８−１にアクセスする場合で説明する。
【０１５９】
まず、ＣＰＵセル１１−２のＣＰＵ１４−２２が第１のモード及び第１の処理に設定するための入出力命令と処理結果を格納するメモリ１５上のアドレスとをまとめたコマンドを生成すると、システム立ち上げ時に設定された宛先情報にしたがって通信回路１７−２によりネットワーク１３を経由してＣＰＵセル１１−１へ該コマンドを含むパケットが送信される。このとき送信されるパケットの送付先ＩＤ２３はＣＰＵセル１１−１を示し、送付元ＩＤ２４はＣＰＵセル１１−２を示し、データ領域２５にはＣＰＵセル１１−２で発行されたコマンドとＣＰＵ１４−２２を示すＣＰＵＩＤが格納される。
【０１６０】
ＣＰＵセル１１−１は、ＣＰＵセル１１−２から送信されたパケットを通信回路１７−１で受信すると、システム立ち上げ時に設定された宛先情報にしたがって通信回路１７−１からネットワーク１３を経由して該当するデバイスセル１２−１へ当該パケットを送信する。この時、パケットの送付先ＩＤ２３はデバイスセル１２−１を示し、送付元ＩＤ２４はＣＰＵ１１−１を示し、データ領域２５にはＣＰＵセル１１−２で発行されたコマンド、及びＣＰＵセル１１−２を示す要求元ＩＤが格納される。
【０１６１】
デバイスセル１２−１は、このコマンドを含むパケットを通信回路２０−１で受信すると、該パケットからコマンドを抽出し、デバイス管理部２１−１に伝達する。デバイス管理部２１−１は、受信したコマンドをコマンド解析部３９−１で解析し、モード設定ポート２６−１に対する第１のモードへの設定入出力命令、処理設定ポート２７−１に対する第１の処理への設定入出力命令、及び結果読出しポート２８−１からの読出し入出力命令を取得する。そして、デバイス１８−１のモード設定ポート２６−１を第１のモードに設定し、処理設定ポート２７−１を第１の処理に設定する。
【０１６２】
デバイス１８−１は、処理設定ポート２７−１に対する書き込みを受けて、第１のモードの第１の処理を実行し、処理結果を結果読出ポート２８−１に書き込む。
【０１６３】
デバイス管理部２１−１は、結果読出ポート２８−１を監視し、処理結果が書き込まれたことを確認すると、結果読出ポート２８−１から処理結果を読出し、その内容を応答メッセージとして通信回路２０−１に伝達する。通信回路２０−１は、送付元のＣＰＵセル１１−１に対してこの応答メッセージを含むパケットを送信する。この時、パケットの送付先ＩＤ２３はＣＰＵセル１１−１を示し、送付元ＩＤ２４はデバイスセル１２−１を示し、データ領域２５部には、応答メッセージと受信したパケットに含まれていたアドレスが格納される。
【０１６４】
ＣＰＵセル１１−１は、この応答メッセージを含むパケットを通信回路１７−１で受信すると、該パケットから応答メッセージを抽出し、指定されたアドレスに対して応答メッセージを書き込むメモリアクセス命令として処理する。
【０１６５】
次に、ＣＰＵセル１１−３のＣＰＵ１４−３１が第２のモード及び第２の処理に設定するための入出力命令と処理結果を格納するメモリ１５上のアドレスとをまとめたコマンドを生成すると、ＣＰＵセル１１−３はコマンド送出回路３８−１を利用して該コマンドをデバイスセル１２−１に送出する。この時、ＣＰＵセル１１−１の通信回路１７−１から出力されるパケットの送付先ＩＤ２３はデバイスセル１８−１を示し、送付元ＩＤ２４はＣＰＵセル１１−３を示し、データ領域２５には該コマンドが格納される。
【０１６６】
デバイスセル１２−１は、このコマンドを含むパケットを通信回路２０−１で受信すると、該パケットからコマンドを抽出し、デバイス管理部２１−１に伝達する。デバイス管理部２１−１は、受信したコマンドをコマンド解析部３９−１で解析し、モード設定ポート２６−１に対する第２のモードへの設定入出力命令、処理設定ポート２７−１に対する第２の処理への設定入出力命令、及び結果読出しポート２８−１からの読出し入出力命令を取得する。そして、デバイス１８−１のモード設定ポート２６−１を第２のモードに設定し、処理設定ポート２７−１を第２の処理に設定する。
【０１６７】
デバイス１８−１は、処理設定ポート２７−１に対する書き込みを受けて、第２のモードの第２の処理を実行し、処理結果を結果読出ポート２８−１に書き込む。
【０１６８】
デバイス管理部２１−１は、結果読出ポート２８−１を監視し、処理結果が書き込まれたことを確認すると、結果読出ポート２８−１から処理結果を読出し、その内容を応答メッセージとして通信回路２０−１に伝達する。通信回路２０−１は、送付元のＣＰＵセル１１−３に対してこの応答メッセージを含むパケットを送信する。この時、パケットの送付先ＩＤ２３はＣＰＵセル１１−３を示し、送付元ＩＤ２４はデバイスセル１２−１を示し、データ領域２５部には、応答メッセージと受信したパケットに含まれていたアドレスが格納される。
【０１６９】
ＣＰＵセル１１−３は、この応答メッセージを含むパケットを通信回路１７−３で受信すると、該パケットから応答メッセージを抽出し、指定されたアドレスに対して応答メッセージを書き込むメモリアクセス命令として処理する。
【０１７０】
この状態で、ＣＰＵ１４−２２及びＣＰＵ１４−３１は、指定したメモリ１５上のアドレスに処理結果が書き込まれたことを確認し、その内容を読出して処理結果を取得する。
【０１７１】
以上のような手順で動作することで、システムＡに属するＣＰＵセル１１−２のＣＰＵ１４−２２は、デバイス１８−１に対してモード設定ポート２６−１に第１のモードを書き込み、処理設定ポート２７−１に第１の処理を書き込み、その処理結果を指定したメモリ１５上のアドレスから読み出すことができる。また、システムＢに属するＣＰＵセル１１−３のＣＰＵ１４−３１は、デバイス１８−１に対してモード設定ポート２６−１に第２のモードを書き込み、その処理結果を指定したメモリ１５上のアドレスから読み出すことができる。
【０１７２】
したがって、第６の実施の形態のマルチプロセッサシステムは、第５の実施の形態で得られた効果に加えて、入出力命令によるネットワーク１３のトラフィックを削減する効果、及びデバイス管理情報２２を簡素化する効果が得られる。
【０１７３】
（第７の実施の形態）
第６の実施の形態では、デバイスセル１２−１でパケットを受信すると、送付元のＣＰＵセル１１−１に対して応答メッセージを送信していた。第７の実施の形態では、デバイスセル１２−１が応答メッセージを含むパケットの送付先を選択する例である。このため、本実施形態の各ＣＰＵセル１１の通信回路１７は、所属するシステムを特定するためのシステム識別子を保持する。また、デバイスセル１２の通信回路２０は、システム識別子に対応するＣＰＵセル１１のリストを保持する。
【０１７４】
図１２に示す例では、システム立ち上げ時、ＣＰＵセル１１−１の通信回路１７−１にはシステムＡで利用するデバイス１８−１に対応する入出力ポートの宛先としてデバイスセル１２−１の宛先情報が設定されると共にシステムＡを示すシステム識別子が格納される。また、ＣＰＵセル１１−３の通信回路１７−３にはシステムＢで利用するデバイス１８−１に対応する入出力ポートの宛先としてデバイスセル１２−１の宛先情報が設定されると共にシステムＢを示すシステム識別子が格納される。マルチプロセッサシステムの構成は図１２で示す第６の実施の形態と同様であるため、その説明は省略する。
【０１７５】
次に、図１２に示す２つのシステムＡ、Ｂで１つのデバイス１８−１を共有する場合を例にして、本実施形態のマルチプロセッサシステムの動作について説明する。
【０１７６】
なお、ここではシステムＡに属するＣＰＵセル１１−２のＣＰＵ１４−２２が、デバイス１８−１に対して、モード設定ポート２６−１に第１のモードを書き込み、処理設定ポート２７−１に第１の処理を書き込み、結果読出しポート２８−１からその結果を読み出すとする。
【０１７７】
ＣＰＵセル１１−２のＣＰＵ１４−２２が第１のモード及び第１の処理に設定するための入出力命令と処理結果を格納するメモリ１５上のアドレスとをまとめたコマンドを生成すると、システム立ち上げ時に設定された宛先情報にしたがって通信回路１７−２によりネットワーク１３を経由してＣＰＵセル１１−１へ該コマンドを含むパケットが送信される。このとき送信されるパケットの送付先ＩＤ２３はＣＰＵセル１１−１を示し、送付元ＩＤ２４はＣＰＵセル１１−２を示し、データ領域２５にはＣＰＵセル１１−２で発行されたコマンドとＣＰＵ１４−２２を示すＣＰＵＩＤが格納される。
【０１７８】
ＣＰＵセル１１−１は、ＣＰＵセル１１−２から送信されたパケットを通信回路１７−１で受信すると、システム立ち上げ時に設定された宛先情報にしたがって通信回路１７−１からネットワーク１３を経由して該当するデバイスセル１２−１へ当該パケットを送信する。この時、パケットの送付先ＩＤ２３はデバイスセル１２−１を示し、送付元ＩＤ２４はＣＰＵ１１−１を示し、データ領域２５にはＣＰＵセル１１−２で発行されたコマンド、ＣＰＵセル１１−２を示す要求元ＩＤ、及びシステム立ち上げ時に設定されたシステムＡを示すシステム識別子が格納される。
【０１７９】
デバイスセル１２−１は、このコマンドを含むパケットを通信回路２０−１で受信すると、該パケットからコマンドを抽出し、デバイス管理部２１−１に伝達する。デバイス管理部２１−１は、受信したコマンドをコマンド解析部３９−１で解析し、モード設定ポート２６−１に対する第１のモードへの設定入出力命令、処理設定ポート２７−１に対する第１の処理への設定入出力命令、及び結果読出しポート２８−１からの読出し入出力命令を取得する。そして、デバイス１８−１のモード設定ポート２６−１を第１のモードに設定し、処理設定ポート２７−１を第１の処理に設定する。
【０１８０】
デバイス１８−１は、処理設定ポート２７−１に対する書き込みを受けて、第１のモードの第１の処理を実行し、処理結果を結果読出ポート２８−１に書き込む。
【０１８１】
デバイス管理部２１−１は、結果読出ポート２８−１を監視し、処理結果が書き込まれたことを確認すると、結果読出ポート２８−１から処理結果を読出し、その内容を応答メッセージとして通信回路２０−１に伝達する。
【０１８２】
この段階で、システムＡがＣＰＵセル１１−２のみで構成されるように変更され、通信回路２０−１のシステム構成情報が変更されていたとする。
【０１８３】
通信回路２０−１は、受信したパケットに含まれていたシステム識別子と、保持するシステム構成情報から、そのシステムを構成するＣＰＵセル１１の中から任意の１つを選択し、そのＣＰＵセル１１に向けて応答メッセージを含むパケットを送出する。ここでは、ＣＰＵセル１１−２のみでシステムＡが構成されているため、ＣＰＵセル１１−２に対して応答メッセージを含むパケットを送信する。このとき、パケットの送付先ＩＤ２３はＣＰＵセル１１−２を示し、送付元ＩＤ２４はデバイスセル１２−１を示し、データ領域２５には応答メッセージと受信したパケットに含まれていたアドレスが格納される。
ＣＰＵセル１１−２は、デバイスセル１２−１からパケットを受信すると、指定されたアドレスに対して応答メッセージを書き込むメモリアクセス命令として処理する。そして、指定したメモリ１５上のアドレスに処理結果が書き込まれたことを確認し、その内容を読出して処理結果を取得する。
【０１８４】
以上のような手順で動作することで、システム構成が変更された場合でもコマンドを発行したシステムに正しく応答メッセージを返すことができる。したがって、デバイスセルでコマンド処理中であってもシステム構成を変更することが可能になる。
【０１８５】
また、本実施形態のマルチプロセッサシステムでは、デバイスセル１２−１の通信回路２０−１で応答メッセージを返送するＣＰＵセル１１を選択する際に、コマンドを発行したＣＰＵセルと同一システム内のＣＰＵセルをラウンドロビン、あるいはランダムに選択することでネットワーク１３やＣＰＵセルの負荷を分散することも可能である。
【０１８６】
第７の実施の形態は、第６の実施の形態で得られた効果に加えて、デバイス１８で処理を行っている最中にシステム構成が変更されても正しく応答を返すことができる。また、ネットワーク１３やＣＰＵセル１１の負荷を分散することができる。
【０１８７】
なお、上述した第１〜第７の実施の形態の変形例として、デバイス管理部２１にプロセッサを備え、上記デバイス管理部２１で実現した機能の一部をソフトウェアプログラムで動作する該プロセッサで実現してもよい。
【０１８８】
【発明の効果】
本発明は以上説明したように構成されているので、以下に記載する効果を奏する。
【０１８９】
デバイスセルに、デバイスで実行可能な複数種類の処理を管理するためのデバイス管理情報を備え、ＣＰＵセルからコマンドを受信した場合に、該コマンドの発行元に対応するデバイス管理情報を検索し、コマンドにより更新されるデバイス管理情報で指定された処理をデバイスに実行させることで、各ＣＰＵセルまたは各グループから同じデバイスにアクセスすることが可能になるため、簡素なハードウェアによりデバイスの共有化が可能になり、ハードウェアのコストを低減できる。さらに、デバイスの信頼性向上や負荷分散のために必要なデバイス数は、マルチプロセッサシステムで動作するＯＳの数に依存せずに一定であるため、ハードウェアのコストを低減できる。
【０１９０】
また、ＣＰＵセルで、自機が利用可能な前記デバイスの情報をテーブル形式で保持し、システム立ち上げ時に該ＣＰＵセルに割り当てられたデバイスを優先的に利用することで、例えば、デバイスに対する入出力命令のレイテンシはネットワークを１往復する時間となる。また、ターンアラウンドタイムは、ＣＰＵセル内で閉じた時間となるため、ネットワークを１往復するデバイスへのアクセス時間と比較して短くできる。したがって、１つのＯＳに複数の同じデバイスを割り当てた場合に、デバイスに対する入出力命令のレイテンシ及びターンアラウンドタイムを短縮できる。
【０１９１】
また、デバイスセルに複数の同じデバイスを備え、デバイス管理情報で指定された処理を複数のデバイスのうちの任意のデバイスに実行させることで、例えば、任意のデバイスを利用している最中に障害が発生した場合、他のデバイスを利用して処理を続行できる。これにより、障害時のフェイルオーバーを実現できる。また、処理を複数のデバイスに分散させることもできる。
【０１９２】
さらに、ＣＰＵセルに、ＣＰＵから発行された複数の命令をまとめたコマンドを生成するコマンド送出回路を備え、デバイスセルに、コマンドを分解して複数の命令を抽出するコマンド解析部を備え、抽出された複数の命令により更新されるデバイス管理情報で指定された処理をデバイスに実行させることで、デバイスに対する入出力命令等によるネットワークのトラフィックが低減するため、デバイスに対するアクセス性能が向上する。
【０１９３】
また、ＣＰＵセルで、自機が所属する前記グループを特定するためのシステム識別子を保持し、デバイスセルで、システム識別子に対応するＣＰＵセルのリストから構成されるシステム構成情報を保持し、デバイスセルは、コマンドと共にＣＰＵセルから送信されたシステム識別子と保持したシステム構成情報から該ＣＰＵセルが所属するグループの中から任意の一つのＣＰＵセルを選択し、該選択したＣＰＵセルに対して該コマンドに対する処理結果を含む応答メッセージを送出し、ＣＰＵセルは、デバイスセルから応答メッセージを受信すると、該応答メッセージにしたがってデバイスセルの処理結果を取得することで、デバイスセルで処理を行っている最中にシステム構成が変更されても正しく応答を返すことができる。また、ＣＰＵセルとデバイスセル間を接続するネットワークやＣＰＵセルの負荷を分散することができる。
【図面の簡単な説明】
【図１】本発明のマルチプロセッサシステムの第１の実施の形態の構成を示すブロック図である。
【図２】図１に示したネットワーク上で伝送されるパケットの構成を示す模式図である。
【図３】図１に示したデバイスのポート構成を示すブロック図である。
【図４】図１に示したデバイス制御ブリッジが備えるデバイス管理情報の構成を示すブロック図である。
【図５】本発明の第２の実施の形態のマルチプロセッサシステムが有するデバイス管理情報の構成を示すブロック図である。
【図６】本発明のマルチプロセッサシステムの第３の実施の形態の処理手順を示すフローチャートである。
【図７】第３の実施の形態のマルチプロセッサシステムの各システムが備えるデバイスドライバが保持する情報を示すテーブル図である。
【図８】第４の実施の形態のマルチプロセッサシステムが有するデバイスセルの構成を示すブロック図である。
【図９】第４の実施の形態のマルチプロセッサシステムが有するデバイスセルの変形例の構成を示すブロック図である。
【図１０】図９に示したデバイス管理部が保持する情報を示すテーブル図である。
【図１１】本発明のマルチプロセッサシステムの第４の実施の形態の処理手順を示すフローチャートである。
【図１２】本発明のマルチプロセッサシステムの第５の実施の形態の構成を示すブロック図である。
【図１３】図１２に示したデバイス制御ブリッジが備えるデバイス管理情報の構成を示すブロック図である。
【図１４】マルチプロセッサシステムの第１従来例の構成を示すブロック図である。
【図１５】マルチプロセッサシステムの第３従来例の構成を示すブロック図である。
【符号の説明】
１１    ＣＰＵセル
１２    デバイスセル
１３    ネットワーク
１４    ＣＰＵ
１５    メモリ
１６    ＣＰＵ制御ブリッジ
１７    通信回路
１８    デバイス
１９    デバイス制御ブリッジ
２０    通信回路
２１    デバイス管理部
２２    デバイス管理情報
２３    送付先ＩＤ領域
２４    送付元ＩＤ領域
２５    データ領域
２６    モード設定ポート
２７    処理設定ポート
２８    結果読出ポート
２９    モードレジスタ
３０    結果レジスタ
３１    ＣＰＵセルレジスタ
３２    入出力ポートベースレジスタ
３３    入出力ポート長レジスタ
３４    ＣＰＵセルＩＤ
３５    入出力ポートベース
３６、３７    ロックビット
３８    コマンド生成回路
３９    コマンド解析部
【図１】
2004246779.tif 000003
【図２】
2004246779.tif 000004
【図３】
2004246779.tif 000005
【図４】
2004246779.tif 000006
【図５】
2004246779.tif 000007
【図６】
2004246779.tif 000008
【図７】
2004246779.tif 000009
【図８】
2004246779.tif 000010
【図９】
2004246779.tif 000011
【図１０】
2004246779.tif 000012
【図１１】
2004246779.tif 000013
【図１２】
2004246779.tif 000014
【図１３】
2004246779.tif 000015
【図１４】
2004246779.tif 000016
【図１５】
2004246779.tif 000017