(57)【要約】【課題】各論理区画において独立に稼動するオペレーティングシステムのＩ／Ｏアクセスを正常に稼動させる。【解決手段】プロセッサ１００と、主記憶３００と、Ｉ／Ｏスロット４１０とを備え、各々がノードコントローラ２００によって相互に接続され、複数に分割された論理区画１５０ではオペレーティングシステム２４０が同時に実行されるサーバシステムにおいて、Ｉ／Ｏスロット４１０が、論理区画１５０によって使用されているか否かを記憶し、前記記憶されている情報を参照して、論理区画１５０からＩ／Ｏスロット４１０へのアクセスを制限する論理区画調停部２５０を備えた。【選択図】      図１
2005122640.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、主記憶と、Ｉ／Ｏスロットとを備え、各々がノードコントローラによって相互に接続され、複数に分割された論理区画ではオペレーティングシステムが同時に実行されるサーバシステムにおいて、
前記Ｉ／Ｏスロットが、前記論理区画によって使用されているか否かを記憶し、前記記憶されている情報を参照して、前記論理区画からＩ／Ｏスロットへのアクセスを制限する論理区画調停部を備えたことを特徴とするサーバシステム。
【請求項２】
前記論理区画から前記主記憶のＩ／Ｏスロットに対応付けられている領域への書き込みの有無を監視する主記憶監視部と、
前記Ｉ／Ｏスロットに対応付けられている領域に書き込まれた所定の情報と、該Ｉ／Ｏスロットに書き込まれた所定の情報と、を同期する主記憶Ｉ／Ｏ同期部と、
前記論理区画に割り当てられたＩ／Ｏスロットへのアクセスの開始及び完了を監視するＩ／Ｏ監視部と、を備え、
前記論理区画調停部は、前記論理区画から前記Ｉ／Ｏスロットに要求があった場合に、該Ｉ／Ｏスロットが使用中であるか否かを判定し、
前記主記憶Ｉ／Ｏ同期部は、前記Ｉ／Ｏスロットが使用中でない場合に、前記論理区画からの要求を該Ｉ／Ｏスロットに転送することを特徴とする請求項１に記載のサーバシステム。
【請求項３】
前記主記憶には、前記論理区画に割り当てられた論理主記憶空間が備えられ、
前記論理主記憶空間内は、前記Ｉ／Ｏスロットの物理メモリマップトＩ／Ｏ領域に対応する論理メモリマップトＩ／Ｏ領域が備えられ、
前記論理区画から該論理区画に割り当てられた前記Ｉ／Ｏスロットへのアクセス要求は、前記論理メモリマップトＩ／Ｏ領域へのＩ／Ｏアクセスの書き込みによって行われ、
前記主記憶監視部は、前記論理区画から前記物理メモリマップトＩ／Ｏ領域へのＩ／Ｏアクセスの書き込みの有無を判定し、
前記論理区画調停部は、前記物理メモリマップトＩ／Ｏ領域へのＩ／Ｏアクセスの書き込みがあった場合に、前記Ｉ／Ｏスロットが使用中であるか否かを判定し、
前記Ｉ／Ｏ監視部は、前記Ｉ／ＯスロットのＩ／Ｏ処理の完了の通知があるか否かを判定し、
前記主記憶Ｉ／Ｏ同期部は、
前記Ｉ／Ｏスロットが使用中でない場合に、前記論理区画からの論理メモリマップトＩ／Ｏ領域へのＩ／Ｏアクセスの書き込みを前記Ｉ／Ｏスロットへと転送する、
又は、
前記Ｉ／ＯスロットのＩ／Ｏ処理が完了の通知があった場合に、該Ｉ／Ｏスロットの物理メモリマップトＩ／Ｏ領域のＩ／Ｏ完了結果を論理メモリマップトＩ／Ｏ領域に転送する、
ことを特徴とする請求項２に記載のサーバシステム。
【請求項４】
前記主記憶監視部は、前記論理メモリマップトＩ／Ｏ領域へのＩ／Ｏアクセスの書き込みを契機として、該Ｉ／Ｏアクセスを前記論理区画調停部へ通知し、
前記論理区画調停部は、前記Ｉ／Ｏアクセスの通知を受けると、該Ｉ／Ｏスロットが使用中でない場合は、前記主記憶Ｉ／Ｏ同期部に当該論理区画によるＩ／Ｏスロットの使用開始を通知し、
前記主記憶Ｉ／Ｏ同期部は、Ｉ／Ｏスロット使用開始の通知を受けると、前記論理メモリマップトＩ／Ｏ領域から前記物理メモリマップトＩ／Ｏ領域にＩ／Ｏアクセス要求を転送し、
前記Ｉ／Ｏ監視部は、Ｉ／Ｏスロットの使用完了を検出すると、前記論理区画調停部に当該論理区画によるＩ／Ｏスロットの使用完了を通知し、
前記論理区画調停部は、前記完了の通知を受けると、前記主記憶Ｉ／Ｏ同期部に対して、前記物理メモリマップトＩ／Ｏ領域から前記論理メモリマップトＩ／Ｏ領域へのＩ／Ｏ完了結果の転送を指示し、さらに、当該論理区画によるＩ／Ｏスロットの使用を完了させることを特徴とする請求項３に記載のサーバシステム。
【請求項５】
前記主記憶Ｉ／Ｏ同期部は、
前記物理メモリマップトＩ／Ｏ領域へ転送されるＩ／Ｏアクセスに含まれる論理アドレスを物理アドレスへ変換し、
前記論理メモリマップトＩ／Ｏ領域へ転送されるＩ／Ｏ完了結果に含まれる物理アドレスを論理アドレスへ変換することを特徴とする請求項４に記載のサーバシステム。
【請求項６】
前記主記憶Ｉ／Ｏ同期部は、
前記Ｉ／Ｏスロット使用開始の通知を受けると、前記論理メモリマップトＩ／Ｏ領域を前記Ｉ／Ｏスロット上の物理メモリマップトＩ／Ｏ領域に直接マッピングし、
前記論理区画によるＩ／Ｏスロットの使用が完了すると、前記直接マッピングされた論理メモリマップトＩ／Ｏ領域を、前記主記憶上の所定の領域にマッピングし直すことを特徴とする請求項４に記載のサーバシステム。
【請求項７】
前記主記憶上の論理主記憶空間内に、前記Ｉ／Ｏスロットに対するＩ／Ｏアクセスを転送する少なくとも一つのコマンドブロックを備え、
前記Ｉ／Ｏ監視部は、前記Ｉ／ＯスロットによるＩ／Ｏ処理の完了を検出すると、前記主記憶監視部に当該論理区画によるＩ／Ｏスロットの使用完了を通知し、
前記主記憶監視部は、前記Ｉ／Ｏ処理の完了の通知を受けると、前記コマンドブロックの処理の完了を監視し、全てのコマンドブロックの処理の完了を検出すると、前記論理区画調停部に当該論理区画によるＩ／Ｏスロットの使用の完了を通知することを特徴とする請求項４に記載のサーバシステム。
【請求項８】
前記論理区画調停部は、
前記Ｉ／Ｏスロットを使用する前記論理区画を所定の時間毎に切り替え、
前記Ｉ／Ｏスロット使用可能時間ではない論理区画からのＩ／Ｏアクセス、及び／又は、前記Ｉ／Ｏスロット使用可能時間ではない論理区画へのＩ／Ｏ使用完了の通知を保留し、
前記論理区画が当該Ｉ／Ｏスロットを使用可能時間となった場合に、保留されたＩ／Ｏアクセスを処理し、及び／又は、保留されたＩ／Ｏ処理完了を当該論理区画に通知することを特徴とする請求項４に記載のサーバシステム。
【請求項９】
前記論理主記憶空間内に、前記Ｉ／Ｏスロット上の物理メモリマップトＩ／Ｏ領域に対応する論理メモリマップトＩ／Ｏ領域を備え、
前記主記憶監視部は、前記論理メモリマップトＩ／Ｏ領域へのＩ／Ｏアクセスの書き込みを契機として、該Ｉ／Ｏアクセスを前記論理区画調停部へ通知し、
前記論理区画調停部は、前記Ｉ／Ｏアクセスの通知を受けると、該Ｉ／Ｏスロットが使用中でない場合は、前記主記憶Ｉ／Ｏ同期部に当該論理区画によるＩ／Ｏスロットの使用開始を通知し、
前記主記憶Ｉ／Ｏ同期部は、Ｉ／Ｏスロット使用開始の通知を受けると、前記論理メモリマップトＩ／Ｏ領域から前記物理メモリマップトＩ／Ｏ領域にＩ／Ｏアクセス要求を転送し、
前記主記憶Ｉ／Ｏ同期部は、前記論理メモリマップトＩ／Ｏ領域からの完了ステータスの読み出しを前記物理メモリマップトＩ／Ｏ領域からの読み出しに変換し、さらに、前記物理メモリマップトＩ／Ｏ領域からの読み出しの応答を前記論理メモリマップトＩ／Ｏ領域からの読み出しの応答に変換し、
前記論理区画調停部は、前記物理メモリマップトＩ／Ｏ領域の読み出しの応答によって該読み出しの完了を検出すると、該Ｉ／Ｏスロットの物理メモリマップトＩ／Ｏ領域から前記論理メモリマップトＩ／Ｏ領域への完了結果の転送を前記主記憶Ｉ／Ｏ同期部に指示すると共に、該論理区画のＩ／Ｏスロットの使用を完了させることを特徴とする請求項３に記載のサーバシステム。
【請求項１０】
前記主記憶Ｉ／Ｏ同期部は、前記物理メモリマップトＩ／Ｏ領域へ転送されるＩ／Ｏアクセスに含まれる論理アドレスを物理アドレスへと変換することを特徴とする請求項９に記載のサーバシステム。
【請求項１１】
前記複数の論理区画に一つのＩ／Ｏスロットを割り当てる手段と、
前記論理区画による前記Ｉ／Ｏスロットの使用開始を検知する手段と、
前記論理区画による前記Ｉ／Ｏスロットの使用完了を検知する手段と、を備えたことを特徴とする請求項１に記載のサーバシステム。
【請求項１２】
前記Ｉ／ＯスロットはＩ／Ｏバスに接続されており、
前記論理区画は、前記Ｉ／Ｏスロットに割り当てられた、第１の論理区画及び第２の論理区画を含み、
前記第１及び第２の論理区画が、前記Ｉ／Ｏスロットを切り替えて使用し、
前記第１の論理区画に含まれる前記プロセッサから、前記Ｉ／Ｏスロットに発行されたライトトランザクションが、前記Ｉ／Ｏバス上でライトトランザクションとして発行されたときに、
前記第２の論理区画に含まれる前記プロセッサから、前記Ｉ／Ｏスロットへの要求が、前記主記憶上への書き込みとなり、
前記Ｉ／Ｏスロットを使用する論理区画が、前記第１の論理区画から前記第２の論理区画へと切り替わったときに、前記主記憶上への書き込みがＩ／Ｏバス上のライトトランザクションとして発行されることを特徴とする請求項１１に記載のサーバシステム。
【請求項１３】
プロセッサと、主記憶と、Ｉ／Ｏスロットとを備え、各々がノードコントローラによって相互に接続され、複数に分割された論理区画ではオペレーティングシステムが同時に実行されるサーバシステムにおけるＩ／Ｏスロット共有方法であって、
前記主記憶には、前記論理区画に割り当てられた論理主記憶空間が備えられ、
前記論理主記憶空間内は、前記Ｉ／Ｏスロットの物理メモリマップトＩ／Ｏ領域に対応する論理メモリマップトＩ／Ｏ領域が備えられ、
前記論理区画から該論理区画に割り当てられた前記Ｉ／Ｏスロットへのアクセス要求は、前記論理メモリマップトＩ／Ｏ領域へのＩ／Ｏアクセスの書き込みによって行われ、
前記論理区画から前記論理メモリマップトＩ／Ｏ領域へのＩ／Ｏアクセスの書き込みの有無を監視し、Ｉ／Ｏアクセスの書き込みがあった場合に、前記Ｉ／Ｏスロットが使用中であるか否かを示すＩ／Ｏ調停表に記録し、
前記論理メモリマップトＩ／Ｏ領域にＩ／Ｏアクセスの書き込みがあった場合に、前記Ｉ／Ｏ調停表を参照して、前記Ｉ／Ｏスロットが使用中か否かを判定し、
前記Ｉ／Ｏスロットが使用中である場合には、前記Ｉ／Ｏアクセスを保留し、
前記Ｉ／Ｏスロットが使用中でない場合には、前記Ｉ／Ｏ調停表の該Ｉ／Ｏスロットを使用中に変更し、
前記論理メモリマップトＩ／Ｏ領域へのＩ／Ｏアクセス要求を前記Ｉ／Ｏスロット上の物理メモリマップトＩ／Ｏ領域へと転送することを特徴とするＩ／Ｏスロット共有方法。
【請求項１４】
前記物理メモリマップトＩ／Ｏ領域へ転送されるＩ／Ｏアクセスに含まれる論理アドレスを物理アドレスへと変換することを特徴とする請求項１３に記載のＩ／Ｏスロット共有方法。
【請求項１５】
前記Ｉ／ＯスロットによるＩ／Ｏ処理の完了を監視し、
前記Ｉ／ＯスロットによるＩ／Ｏ処理の完了を検出した場合に、
前記Ｉ／Ｏスロット上の物理メモリマップトＩ／Ｏ領域から前記論理メモリマップトＩ／Ｏ領域へのＩ／Ｏ完了結果を転送し、
前記Ｉ／Ｏ調停表の該Ｉ／Ｏスロットを未使用に変更し、
前記論理区画に対してＩ／Ｏ処理の完了を通知し、
保留されたＩ／Ｏアクセスがある場合には該Ｉ／Ｏアクセスを前記Ｉ／Ｏスロットへ転送することを特徴とする請求項１３に記載のＩ／Ｏスロット共有方法。
【請求項１６】
前記論理メモリマップトＩ／Ｏ領域へ転送されるＩ／Ｏ完了結果に含まれる物理アドレスを論理アドレスへと変換することを特徴とする請求項１５に記載のＩ／Ｏスロット共有方法。
【請求項１７】
前記主記憶上の論理主記憶空間内に、前記Ｉ／Ｏスロットに対するＩ／Ｏアクセスを転送する少なくとも一つのコマンドブロックを備え、
前記Ｉ／ＯスロットによるＩ／Ｏ処理の完了を監視し、
前記Ｉ／Ｏスロット上の物理メモリマップトＩ／Ｏ領域から前記論理メモリマップトＩ／Ｏ領域へのＩ／Ｏ完了結果の転送を指示し、
前記コマンドブロックが全て完了しているかを判定し、全てのコマンドブロックが完了していた場合に、前記Ｉ／Ｏ調停表の該Ｉ／Ｏスロットを未使用に変更し、
前記論理区画に対してＩ／Ｏ処理の完了を通知し、
保留されたＩ／Ｏアクセスがあるかを判別し、保留されたＩ／Ｏアクセスがある場合には該Ｉ／Ｏアクセスを前記Ｉ／Ｏスロットへと転送することを特徴とする請求項１３に記載のＩ／Ｏスロット共有方法。
【請求項１８】
前記論理メモリマップトＩ／Ｏ領域へ転送されるＩ／Ｏ完了結果に含まれる物理アドレスを論理アドレスへと変換することを特徴とする請求項１７に記載のＩ／Ｏスロット共有方法。
【請求項１９】
前記論理メモリマップトＩ／Ｏ領域に対する読み出しを監視し、
読み出しがあった場合に、前記論理メモリマップトＩ／Ｏ領域に対する読み出しを、該Ｉ／Ｏスロットの物理メモリマップトＩ／Ｏ領域に対する読み出しに変換し、
発行した前記Ｉ／Ｏスロットの物理メモリマップトＩ／Ｏ領域に対する読み出しの応答を待ち、
前記応答を受けた場合に、該応答を前記論理区画の論理メモリマップトＩ／Ｏ領域への読み出しに変換し、
前記応答が完了を示しているかを判別し、
完了を示していた場合に、前記Ｉ／Ｏ調停表の該Ｉ／Ｏスロットを未使用に変更し、
保留されたＩ／Ｏアクセスがあるかを判別し、保留されたＩ／Ｏアクセスがある場合には該Ｉ／Ｏアクセスを前記Ｉ／Ｏスロットへと転送することを特徴とする請求項１３に記載のＩ／Ｏスロット共有方法。
【請求項２０】
前記物理メモリマップトＩ／Ｏ領域へのＩ／Ｏアクセスを前記Ｉ／Ｏスロットの物理メモリマップトＩ／Ｏ領域へと転送した後に、
前記論理メモリマップトＩ／Ｏ領域を前記物理メモリマップトＩ／Ｏ領域へと直接マッピングすることを特徴とする請求項１３に記載のＩ／Ｏスロット共有方法。
【請求項２１】
Ｉ／ＯスロットからのＩ／Ｏ処理の完了を監視し、
Ｉ／Ｏ処理の完了を受けた場合に、前記論理区画の論理メモリマップトＩ／Ｏ領域から物理メモリマップトＩ／Ｏ領域へのマッピングを解除し、
前記Ｉ／Ｏスロットの物理メモリマップトＩ／Ｏ領域から前記論理メモリマップトＩ／Ｏ領域に完了結果を転送し、
前記Ｉ／Ｏ調停表の該Ｉ／Ｏスロットを未使用に変更し、
前記論理区画に対してＩ／Ｏ処理の完了を通知し、
保留されたＩ／Ｏアクセスがあるかを判別し、保留されたＩ／Ｏアクセスがある場合には該Ｉ／Ｏアクセスを前記Ｉ／Ｏへと転送することを特徴とする請求項２０に記載のＩ／Ｏスロット共有方法
【請求項２２】
前記論理メモリマップトＩ／Ｏ領域へ転送されるＩ／Ｏ完了結果に含まれる物理アドレスを論理アドレスへと変換することを特徴とする請求項２１に記載のＩ／Ｏスロット共有方法。
【請求項２３】
プロセッサと、主記憶と、Ｉ／Ｏスロットとを備え、各々がノードコントローラによって相互に接続されると共に、複数の論理区画に分割され、前記論理区画の各々にはオペレーティングシステムが同時に稼動しているサーバシステムのＩ／Ｏスロット共有方法において、
前記論理区画から該論理区画に割り当てられた前記Ｉ／Ｏスロットに対する要求は、前記主記憶の前記論理区画に割り当てられた論理主記憶空間内に備えられているＩ／Ｏスロットの物理メモリマップトＩ／Ｏ領域に対応する論理メモリマップトＩ／Ｏ領域へのＩ／Ｏアクセスの書き込みによって行われ、
前記Ｉ／Ｏスロットを使用する論理区画を一つ選択し、
選択した前記論理区画に対するＩ／Ｏ処理の完了が保留されているか否かを判定し、
保留されたＩ／Ｏ処理の完了がある場合には、前記論理区画に該Ｉ／Ｏ処理の完了を通知し、
選択した前記論理区画に対するＩ／Ｏアクセスが保留されているか否かを判定し、
保留されたＩ／Ｏアクセスがある場合には、該Ｉ／Ｏアクセス前記論理メモリマップトＩ／Ｏ領域から前記物理メモリマップトＩ／Ｏ領域へと転送し、
選択されていない論理区画から前記Ｉ／ＯスロットへのＩ／Ｏアクセスを保留し、
前記Ｉ／Ｏスロットから選択されていない論理区画へのＩ／Ｏ処理の完了を保留し、
所定時間経過後、前記選択された論理区画のＩ／Ｏスロットの使用を解除すると共に、他の論理区画を選択することを特徴とするＩ／Ｏスロット共有方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機に複数の論理的な区画を生成する技術に関し、特に、各論理区画において独立に稼動するオペレーティングシステムのＩ／Ｏアクセスを正常に稼動させるための技術に関する。
【背景技術】
【０００２】
近年の計算機性能の向上により、従来、複数のサーバに分散していた処理を一つのサーバに集約しコストを削減する動きが多く見られる。このような集約に際して有効となる手段が、一つのサーバ上で複数のオペレーティングシステムを稼動させる区画方式である。区画方式は、従来の１台のサーバを、サーバ内の一つの区画に対応させることによって、サーバをスムーズに移行させることができる。
【０００３】
この区画方式のニーズに対し、計算機中に区画を物理的に設ける物理分割方式によって複数のオペレーティングシステムを稼動させる方法が知られている。典型的な物理分割方式としては、サン・マイクロシステムズ社のダイナミック・システム・ドメイン（例えば、非特許文献１参照。）等がある。この物理分割方式では、プロセッサの性能やメモリ容量等の計算機資源等を、物理的なプロセッサやメモリのいくつかの固まり（多くはノード単位）にしか割り当てることができない。プロセッサやメモリの高性能化・大容量化が急速に進展する状況においては、物理区画に従来の一つのサーバを割り当てると性能・容量的に余剰を生じるため無駄が多かった。
【０００４】
そこで、物理的なプロセッサやメモリを仮想化し、計算機中に任意の数の論理的な区画を生成する論理分割方式が注目を集めている。論理分割方式はハイパバイザと呼ばれるファームウェアによって実現される。論理分割方式では各オペレーティングシステム（ゲストＯＳ）はハイパバイザが提供する論理プロセッサ上で実行され、ハイパバイザにより複数の論理プロセッサが物理プロセッサへマッピングされることにより、ノードよりも細かい単位に区画を分割できる。さらにプロセッサに関しては複数の論理区画間で一つの物理プロセッサを時分割で切り替えながら実行することもできる。これにより、物理プロセッサの数よりも多くの論理区画を生成し同時に実行することが可能になる。
【０００５】
また、論理分割方式とは別の方法を用いたアプローチとして、仮想サーバ方式がある（例えば、非特許文献２参照。）。仮想サーバ方式では、サーバ全体でただ一つのホストＯＳが存在し、ホストＯＳ上にアプリケーションとしてゲストＯＳを実行させることにより、Ｉ／Ｏへのアクセスを全てホストＯＳが一元的に扱う。
【非特許文献１】サンマイクロシステムズ、“Ultra Enterprise 10000 ダイナミック・システム・ドメインTechnical White Paper”、［online］、１９９７年１１月、インターネット＜URL：http://jp.sun.com/products/wp/server/E1XDSD.ps.Z＞
【非特許文献２】ネットワールド、“GSX Server White Paper（日本語版）”、［online］、２００１年２月、インターネット＜ＵＲＬ：http://www.networld.co.jp/products/vmware/pdf_file/gsx_w_paper.pdf＞
【発明の開示】
【発明が解決しようとする課題】
【０００６】
前述したように、論理分割方式では、論理区画間で同一のプロセッサを時分割で共有できる。しかしＩ／Ｏスロット又はＩ／Ｏデバイスに関しては、各論理区画に対して専有して割り付けることしかできない。そのため、論理分割による論理区画の数が、物理的なＩ／Ｏスロットの数によって制限されてしまうという問題が生じる。複数のサーバを１台に集約するケースでは、各論理区画に割り当てられたそれぞれのサーバが、ブート用のデバイスの他、基幹接続のネットワーク、データ用のデバイス、フェイルオーバーのためのネットワーク、メンテナンス用のネットワークなど４〜５種類のＩ／Ｏカードを必要とする。そのため、この場合、物理的なＩ／Ｏスロットが１６スロットあった場合、最大３〜４つの論理区画しか生成できない。そのため、Ｉ／Ｏスロット又はＩ／Ｏデバイスを、異なる論理区画によって共有したいというニーズが生じる。
【０００７】
そこで、非特許文献２に記載の仮想サーバ方式を用いると、ＯＳ上の複数のアプリケーションが一つのＩ／Ｏデバイスを共有できるように、複数のゲストＯＳが一つのＩ／Ｏデバイスを共有できる。しかしこの方式では、Ｉ／Ｏデバイスから直接メモリアクセス（Direct Memory Access：ＤＭＡ）によってホストＯＳのメモリ空間に転送されたデータを、ゲストＯＳのメモリ空間へとコピーする必要がある。つまりホストＯＳとゲストＯＳの間でＤＭＡデータのコピーが必要になるため、直接ＯＳがＩ／Ｏデバイスをアクセスする場合に比べてパフォーマンスが低下するという問題点がある。
【０００８】
本発明の目的は、仮想サーバ方式のようなパフォーマンス低下を引き起こさず、論理区画間で使用するＩ／Ｏスロットを時分割で切り替えることにより、論理区画間におけるＩ／Ｏスロットの共有を実現することにある。
【課題を解決するための手段】
【０００９】
各論理区画に割り当てられた論理主記憶上に、共有Ｉ／Ｏスロット上の物理メモリマップトＩ／Ｏ領域に対応する論理メモリマップトＩ／Ｏ領域を設ける。ノードコントローラ内には、主記憶へのアクセスを監視する主記憶監視部、Ｉ／Ｏへのアクセス及び割り込みを監視するＩ／Ｏ監視部、複数論理区画間でのＩ／Ｏスロットの排他的使用を調停する論理区画調停部、論理メモリマップトＩ／Ｏ領域と物理メモリマップトＩ／Ｏ領域との同期を取る主記憶Ｉ／Ｏ同期部を設ける。
【００１０】
論理区画上のゲストＯＳは、共有Ｉ／Ｏスロットに対するアクセスを行う際に、論理メモリマップトＩ／Ｏ領域に対してアクセスを行う。主記憶監視部は論理メモリマップトＩ／Ｏ領域へのコマンド書き込みを監視し、コマンド書き込みが起こった時点で論理区画調停部へと伝達する。論理区画調停部は当該Ｉ／Ｏデバイスを他の論理区画が使用中でない場合に、主記憶Ｉ／Ｏ同期部へと指示を行う。主記憶Ｉ／Ｏ同期部は論理メモリマップトＩ／Ｏ領域に書かれたパラメータとコマンドを共有Ｉ／Ｏスロット上の物理メモリマップトＩ／Ｏ領域に対して転送する。この時必要ならばパラメータに含まれる論理アドレスを物理アドレスへと変換する。あるいは主記憶Ｉ／Ｏ同期部は当該論理区画のメモリマップを変更し、論理メモリマップトＩ／Ｏ領域を直接物理メモリマップトＩ／Ｏ領域へとマッピングする。これにより実際のＩ／Ｏアクセスが開始される。
【００１１】
Ｉ／Ｏ監視部は、Ｉ／Ｏスロットから発生する割り込みを監視し、Ｉ／Ｏアクセスの完了を検知する。Ｉ／Ｏアクセスが完了した場合、Ｉ／Ｏ監視部は論理区画調停部へと通知する。論理区画調停部は、主記憶Ｉ／Ｏ同期部へと指示をし、Ｉ／Ｏスロット上の物理メモリマップトＩ／Ｏ領域から、Ｉ／Ｏスロットを使用していた論理区画の論理メモリマップトＩ／Ｏ領域へとパラメータ及びステータスを転送する。この時必要ならばパラメータに含まれる物理アドレスを論理アドレスへと変換する。主記憶Ｉ／Ｏ同期部はパラメータの転送が終わった後、論理区画調停部へと通知し、論理区画調停部では当該Ｉ／Ｏスロットの使用状態を未使用へと変更する。また、メモリマップを変更していた場合にはこれを戻し、当該論理区画が直接物理メモリマップトＩ／Ｏ領域をアクセスできないようにする。論理区画調停部は、当該論理区画のゲストＯＳにＩ／Ｏ完了の割り込みを通知する。
【００１２】
これら一連の動作によって、論理区画間でＩ／Ｏスロットを共有可能となる。
【発明の効果】
【００１３】
本発明によると、論理分割によって１台のサーバ装置を複数の論理区画に分割して使う場合に、複数の論理区画から一つのＩ／Ｏスロットを共有できる。これにより、Ｉ／Ｏスロット数によって論理分割の最大数が制限されなくなる。また、従来の論理分割方式と同様に、Ｉ／Ｏスロットを専有させることもできるため、独立性の高さと共有による利便性を考慮した柔軟な論理区画の設計が可能となる。
【００１４】
また、論理区画の使用する主記憶空間とＩ／Ｏスロット上のデバイスとの間で直接ＤＭＡ（Direct Memory Access）によってデータを転送できるため、データをコピーする際に発生するオーバヘッドが、仮想サーバ方式に比べて小さく、高速な通信が可能となる。
【発明を実施するための最良の形態】
【００１５】
まず、本発明の第１の実施の形態の計算機システムについて説明する。
【００１６】
図１は、本発明の第１の実施の形態の論理分割機構を備えた計算機システムの構成を示すブロック図である。
【００１７】
プロセッサバス１１０、主記憶３００、Ｉ／Ｏバス４００が、ノードコントローラ２００を介して相互接続されている。なお、本図には明示的に図示していないが、複数のノードコントローラ２００を多重に相互接続する複数ノード構成とすることも可能である。以下の説明はノードの数によって差異を生じない。
【００１８】
プロセッサバス１１０には、二つのプロセッサ１００ａ、１００ｂが接続されている。なお一つ以上のプロセッサ１００が接続されていれば足りる。また、Ｉ／Ｏバス４００には、二つのＩ／Ｏスロット４１０ａ〜４１０ｄが接続されている。なお一つ以上のＩ／Ｏスロット４１０が接続されていれば足りる。なお、図１には図示されていないが、各Ｉ／Ｏスロット４１０にはＩ／Ｏカードが接続されており、それぞれのＩ／Ｏカードには一つ以上のＩ／Ｏデバイスが接続されている。
【００１９】
ノードコントローラ２００内には、プロセッサバス１１０を制御するプロセッサ制御部２１０、主記憶３００を制御する主記憶制御部２２０、Ｉ／Ｏバス４００を制御するＩ／Ｏ制御部２３０が備えられている。また、主記憶３００へのアクセスを監視する主記憶監視部２６０、Ｉ／Ｏバスへのアクセス及び割り込みを監視するＩ／Ｏ監視部２７０、論理区画に対するプロセッサ・主記憶・Ｉ／Ｏスロットの割り当てを制御し、複数の論理区画がＩ／Ｏスロット４１０を共有する場合に調停を行う論理区画調停部２５０、主記憶３００とＩ／Ｏスロット４１０との間でメモリマップトＩ／Ｏ領域の同期を行う主記憶Ｉ／Ｏ同期部２８０が備えられており、相互に接続されている。また、論理区画調停部２５０は、Ｉ／Ｏ調停表５１０とＩ／Ｏイベント表５２０とを備えている。
【００２０】
プロセッサ１００、主記憶３００、及びＩ／Ｏスロット４１０は、二つ以上の論理区画１５０に分割される。図２はこの論理区画の分割の様子を示す説明図である。
【００２１】
本実施の形態では、プロセッサ１００、主記憶３００、及びＩ／Ｏスロット４１０は、論理区画１５０ａと論理区画１５０ｂの二つの論理区画に分割されている。プロセッサ１００ａは論理区画１５０ａに、プロセッサ１００ｂは論理区画１５０ｂに、それぞれ割り当てられている。主記憶３００において、論理区画１５０ａには、論理主記憶空間３１０ａの領域が割り当てられ、論理区画１５０ｂには、論理主記憶空間３１０ｂの領域が割り当てられる。また、各論理区画１５０には、オペレーティングシステム（ゲストＯＳ）２４０が存在する。よって、図１に示したように、論理区画１５０ａの論理主記憶空間３１０ａにはゲストＯＳ２４０ａが、論理区画１５０ｂの論理主記憶空間３１０ｂにはゲストＯＳ２４０ｂが存在している。
【００２２】
また、一つのＩ／Ｏスロット４１０は、複数の論理区画１５０に割り当てられる。図１に図示したように、Ｉ／Ｏスロット４１０ａは、論理区画１５０ａに専有的に割り当てられ、Ｉ／Ｏスロット４１０ｃは、論理区画１５０ｂに専有的に割り当てられている。そして、Ｉ／Ｏスロット４１０ｂは、論理区画１５０ａと論理区画１５０ｂとから共有され、どちらの論理区画からもアクセスが可能となっている。なお、Ｉ／Ｏスロット４１０ｄはどちらの論理区画にも属していない。なお、以降の説明では、共有されているＩ／Ｏスロット４１０ｂを「共有Ｉ／Ｏスロット」４１０ｂと呼ぶ。
【００２３】
図３は、主記憶３００の詳細な構成を示すメモリマップである。
【００２４】
論理区画１５０ａに割り当てられた論理主記憶空間３１０ａは、さらに論理区画１５０ａに対応するＤＭＡ（Direct Memory Access）領域３３０ａと、共有Ｉ／Ｏスロット４１０ｂに対応する論理区画１５０ａ上の論理メモリマップトＩ／Ｏ領域３２０ａを含む。同様に、論理区画１５０ｂに対応する論理主記憶空間３１０ｂには、論理区画１５０ｂに対応するＤＭＡ領域３３０ｂと、共有Ｉ／Ｏスロット４１０ｂに対応する論理メモリマップトＩ／Ｏ領域３２０ｂを含む。また、論理区画１５０ａに対応するＯＳが導入（ロード）されているゲストＯＳ２４０ａと、論理区画１５０ｂに対応するＯＳが導入（ロード）されているゲストＯＳ２４０ｂを含む。
【００２５】
なお、論理主記憶空間３１０は連続した領域として示されているが、実際には複数の不連続な領域から構成されていても構わない。
【００２６】
図４は、前述した論理区画１５０に割り当てられた論理主記憶空間３１０ａの、論理メモリマップトＩ／Ｏ領域３２０ａの一例を説明する図である。論理メモリマップトＩ／Ｏ領域３２０ａは、対応するＩ／Ｏスロット（この場合は共有Ｉ／Ｏスロット４１０ｂ）上の物理メモリマップトＩ／Ｏ領域４２０ｂ（図５参照）と同じ構成を持つ。すなわち、この論理メモリマップトＩ／Ｏ領域３２０ａは４種類のレジスタから構成されており、特定の値を書き込むことで実際のＩ／ＯスロットにＩ／Ｏ動作を引き起こすコマンドレジスタ３４０、Ｉ／Ｏ動作の結果が格納されるステータスレジスタ３５０、ＤＭＡ領域のアドレスを格納するアドレスレジスタ３６０、その他のパラメータを格納するパラメータレジスタ３７０などから構成される。
【００２７】
図５は、論理主記憶空間３１０と主記憶３００の物理主記憶空間３０５との対応の一例を示すメモリマップである。
【００２８】
前述したように、物理主記憶空間３０５へとマッピングされる論理主記憶空間３１０は、必ずしも連続した領域である必要はない。また、後述する第１の変形例（図１０）のように、物理主記憶空間３０５と論理主記憶空間３１０との順序も同じである必要はない。なお、物理メモリマップトＩ／Ｏ領域４２０ｂは、物理主記憶空間３０５とは別の領域に存在しており、図４において説明したように、レジスタに対して書き込み又は読み込みを行うことで、共有Ｉ／Ｏスロット４１０ｂへのアクセスを行うインタフェースを提供する。
【００２９】
図６は、論理区画調停部２５０に備えられているＩ／Ｏ調停表５１０の詳細を説明する図である。
【００３０】
Ｉ／Ｏ調停表５１０は、Ｉ／Ｏスロット番号フィールド５１１、Ｉ／Ｏカード種別フィールド５１２、共有／専有識別フィールド５１３、割当論理区画フィールド５１４、使用中論理区画フィールド５１５の各フィールドから構成される表形式で構成されている。Ｉ／Ｏスロット番号フィールド５１１は、Ｉ／Ｏスロット４１０の各々に割り当てられた番号を示すフィールドである。Ｉ／Ｏカード種別フィールド５１２は、対応するＩ／Ｏスロット４１０に接続されているＩ／Ｏカードの種別を識別するフィールドである。
【００３１】
共有／専有識別フィールド５１３は、対応するＩ／Ｏスロット４１０が、複数の論理区画１５０から共有されているか、一つの論理区画１５０だけに専有されているかを示すフィールドである。割当論理区画フィールド５１４は、対応するＩ／Ｏスロット４１０がどの論理区画１５０に割り当てられているかを示すフィールドである。使用中論理区画フィールド５１５は、対応するＩ／Ｏスロット４１０が、現在どの論理区画１５０によって使用されているかを示すフィールドである。
【００３２】
共有／専有識別フィールド５１３と割当論理区画フィールド５１４とは、論理区画１５０にＩ／Ｏスロット４１０が割り当てられたときに更新され、論理区画運用中（論理区画が割り当てられたＩ／Ｏスロットを使用しているとき）には更新されない。また、共有／専有識別フィールド５１３と割当論理区画フィールド５１４とは、Ｉ／Ｏスロットが一つの論理区画１５０だけに専有されている場合は、割り当てられた論理区画１５０に設定されたまま変化しない。一方、Ｉ／Ｏスロットが複数の論理区画１５０から共有されている場合は、「未使用」、又は割り当てられている論理区画、のいずれか一つを状態となる。また、使用中論理区画フィールド５１５が、現在Ｉ／Ｏスロットを使用しているのはどの論理区画１５０であるか（又は未使用であるか）を示すことで、論理区画調停部２５０が、Ｉ／Ｏスロット及び論理区画の割り当てを管理する。
【００３３】
図７は、論理区画調停部２５０に備えられ、論理区画調停部２５０、主記憶監視部２６０、及びＩ／Ｏ監視部２７０が使用するＩ／Ｏイベント表５２０の詳細を説明する図である。
【００３４】
Ｉ／Ｏイベント表５２０は、主記憶監視部２６０及びＩ／Ｏ監視部２７０が監視するべきイベントと、イベントが起こった場合の動作（起こすアクション）とを規定する。開始・終了フィールド５２６は、Ｉ／Ｏスロットの使用開始又は使用終了の種別を示すフィールドである。Ｉ／Ｏカード種別フィールド５２１は、Ｉ／Ｏ調停表５１０のＩ／Ｏカード種別フィールド５１２と同様にＩ／Ｏカードの種別を示すフィールドである。このＩ／Ｏカードの種別によって、メモリマップトＩ／Ｏ領域におけるレジスタの配置（図４参照）が決まる。
【００３５】
イベント種別フィールド５２２は、主記憶に対する読み書き、Ｉ／Ｏに対する読み書き、又は、割り込みなどのイベントとして検知すべき条件を示すフィールドである。監視対象フィールド５２３は、書き込み・読み出しの対象となるレジスタ又はポートを示すフィールドである。条件フィールド５２４は、読み出した結果又は書き込まれた結果が、条件フィールドに示された内容を満たしていた場合にイベントの発生とみなす条件を示すフィールドである。アクションフィールド５２５には、「主記憶→Ｉ／Ｏ転送」、「Ｉ／Ｏ→主記憶転送」など、イベントが発生した場合に行うべきアクションを規定するフィールドである。
【００３６】
次に、図１〜図７を用いて、本発明の第１の実施の形態の動作を説明する。
【００３７】
ここでは、論理区画１５０ａ上のゲストＯＳ２４０ａから、Ｉ／Ｏスロット４１０ｂに対するアクセス（Ｉ／Ｏリード）が行われるとする。
【００３８】
ゲストＯＳ２４０ａ上のデバイスドライバによる、Ｉ／Ｏスロット４１０ｂ上のＩ／Ｏカードに対応するメモリマップトＩ／Ｏ領域に対するアクセスは、論理主記憶空間３１０ａ内の論理メモリマップトＩ／Ｏ領域３２０ａに対するアクセスとして主記憶制御部２２０を介して実行される。
【００３９】
論理メモリマップトＩ／Ｏ領域３２０ａは、図４に示すようにコマンドレジスタ３４０、ステータスレジスタ３５０、アドレスレジスタ３６０、パラメータレジスタ３７０などから構成される。ここでは、Ｉ／Ｏスロット４１０ｂに接続されたＩ／Ｏデバイスからデータを読み込む場合を例として挙げる。
【００４０】
デバイスドライバは、まず、読み出しを行うデータのＩ／Ｏデバイス上のオフセットと長さを、論理メモリマップトＩ／Ｏ領域３２０ａのパラメータレジスタ３７０に設定する。そして、読み出されたデータを格納するＤＭＡ領域３３０ａ内のアドレスをアドレスレジスタ３６０に設定する。最後に、「読み出し」を意味するコマンドをコマンドレジスタ３４０に設定する。
【００４１】
ゲストＯＳ上のデバイスドライバによって、論理メモリマップトＩ／Ｏ領域３２０ａ上のコマンドレジスタ３４０に「読み出し」の書き込みが行われると、Ｉ／Ｏイベント表５２０（図７）の、対応するＩ／Ｏスロット４１０の内容が更新される。ここで、主記憶監視部２６０は、Ｉ／Ｏイベント表５２０を参照して、使用開始のイベントがあると認識する。なお、主記憶監視部２６０が、コマンドレジスタ３４０への書き込みを監視する方法としては、Ｉ／Ｏイベント表５２０の参照ではなく、対象となるページにアクセス制限をかけておいてアクセスをトラップする方法や、プロセッサから発行されるトランザクションのアドレスを比較して検知する方法などが考えられる。
【００４２】
次に、主記憶監視部２６０は、論理区画調停部２５０に対して、論理区画１５０ａがＩ／Ｏスロット４１０ｂの使用を開始しようとしていることを伝える。これを受けて、論理区画調停部２５０は、Ｉ／Ｏ調停表５１０のＩ／Ｏスロット４１０ｂに対応する使用中論理区画フィールド５１５を参照し、使用中論理区画フィールド５１５が、「未使用」である場合は、使用を開始する論理区画を示す情報である「論理区画１５０ａ」へと変更し、Ｉ／Ｏイベント表５２０のアクションフィールド５２５が示す内容に従って、主記憶Ｉ／Ｏ同期部２８０に対して指示（ここでは、主記憶からＩ／Ｏへの転送）する。
【００４３】
主記憶Ｉ／Ｏ同期部２８０は、論理区画調停部２５０からの指示を受けて、論理メモリマップトＩ／Ｏ領域３２０ａに書き込まれた値（パラメータ）を、Ｉ／Ｏスロット４１０ｂ上の対応するＩ／Ｏポートへと転送する。これによりＩ／Ｏスロット４１０ｂではＩ／Ｏリードが起動され、Ｉ／Ｏデバイス上の指定された領域から、データがＤＭＡ領域３３０ａへと転送される。データのＤＭＡ領域３３０ａへの転送が完了すると、Ｉ／Ｏスロット４１０ｂから「Ｉ／Ｏ完了」の割り込みが発生する。
【００４４】
Ｉ／Ｏ監視部２７０は、Ｉ／Ｏイベント表５２０を参照してＩ／Ｏ割り込みを監視し、割り込みがあったことを検出すると、これを受けて、Ｉ／Ｏスロット４１０ｂのステータスレジスタを読み出す。ステータスレジスタが「完了」を示している場合、論理区画調停部２５０にＩ／Ｏスロット４１０ｂの使用が完了したことを通知する。
【００４５】
論理区画調停部２５０は、Ｉ／Ｏ監視部２７０からの通知を受けて、Ｉ／Ｏ調停表５１０を参照し、論理区画１５０ａによるＩ／Ｏスロット４１０ｂの使用が完了したことを知ると、Ｉ／Ｏイベント表５２０の使用終了に対応するアクションフィールド５２５に従って、主記憶Ｉ／Ｏ同期部２８０に対して指示（ここでは、Ｉ／Ｏから主記憶への転送）する。
【００４６】
主記憶Ｉ／Ｏ同期部２８０は、論理区画調停部２５０の指示を受けて、Ｉ／Ｏスロット４１０ｂのメモリマップトＩ／Ｏ領域に対応するレジスタの値を論理主記憶空間３１０ａへと転送する。転送が完了した後、論理区画調停部２５０へと通知する。
【００４７】
論理区画調停部２５０は、Ｉ／Ｏ調停表５１０のＩ／Ｏスロット４１０ｂに対応する使用中論理区画フィールド５１５を「未使用」に変更する。そして、Ｉ／Ｏアクセス完了の割り込みを発生し、論理区画１５０ａ上のゲストＯＳに対してＩ／Ｏアクセス完了の割り込みを送信する。
【００４８】
以上の一連の動作により、論理区画１５０ａが、共有Ｉ／Ｏスロット４１０ｂを使用することが可能になる。
【００４９】
なお、論理区画調停部２５０に使用開始を通知したとき、すでに他の論理区画１５０ｂによって当該Ｉ／Ｏスロット４１０ｂが使用されていた場合、その要求は論理区画調停部２５０内（論理区画調停部２５０に備えられたキュー）に待機状態で保持（ペンディング）され、論理区画１５０ｂによる使用が完了すると、論理区画１５０ａによる使用開始の処理を始める。論理区画調停部２５０によって排他制御が行われることにより、Ｉ／Ｏスロットの共有を可能にしている。
【００５０】
次に、本発明の第１の実施の形態の、Ｉ／Ｏスロットの使用開始及び使用完了の手順について説明する。
【００５１】
図８は、論理区画がＩ／Ｏスロットの使用を開始する手順を示すフローチャートである。
【００５２】
ステップ１０００は初期状態を示す。
【００５３】
論理区画調停部２５０は、論理メモリマップトＩ／Ｏ領域３２０に対して書き込みが行われたか否かを監視している（ステップ１０１０）。書き込みがあった場合はステップ１０２０に進む。書き込みがない場合は、ステップ１０００に戻る。
【００５４】
ステップ１０２０では、Ｉ／Ｏ調停表５１０の使用論理区画フィールド５１５を参照し、他の論理区画が、当該Ｉ／Ｏスロット４１０を使用中であるか否かを判定する。使用論理区画フィールド５１５に他の論理区画が使用中である旨が記されている場合はステップ１０６０に進む。そうでない場合はステップ１０３０に進む。
【００５５】
ステップ１０６０では、要求をキューにペンディングし、ステップ１０００に戻る。
【００５６】
ステップ１０３０では、Ｉ／Ｏ調停表５１０の当該Ｉ／Ｏスロット４１０に対応する使用論理区画フィールド５１５に、要求元の論理区画を示す内容を記して変更し、Ｉ／Ｏ調停表を更新して、ステップ１０４０に進む。
【００５７】
ステップ１０４０では、主記憶Ｉ／Ｏ同期部２６０が、論理メモリマップトＩ／Ｏ領域３２０のパラメータを、該当するＩ／Ｏスロット上の物理メモリマップトＩ／Ｏ領域４２０へと転送する。このとき、必要ならばパラメータ中に含まれる論理アドレスを物理アドレスへと変換する。転送が終わるとステップ１０５０に進む。
【００５８】
ステップ１０５０では、要求元の論理区画によってＩ／Ｏスロットが使用中である状態を示している。
【００５９】
図９は、論理区画がＩ／Ｏスロットの使用を完了する手順を示すフローチャートである。
【００６０】
まず、Ｉ／Ｏ監視部２７０は、使用中状態１０５０のＩ／ＯスロットからＩ／Ｏ完了の割り込みが発生したかどうかを判定する（ステップ１１００）。Ｉ／Ｏ割り込みが発生した場合はステップ１１１０へと進む。発生していない場合はこの処理が繰り返され、Ｉ／Ｏスロットの使用が継続される。
【００６１】
ステップ１１１０では、主記憶Ｉ／Ｏ同期部２８０が、使用中の当該Ｉ／Ｏスロット４１０の物理メモリマップトＩ／Ｏ領域から、要求元論理区画の論理メモリマップトＩ／Ｏ領域３２０へとパラメータを転送する。このとき、必要ならばパラメータ中の物理アドレスを論理アドレスへと変換する。その後、ステップ１１２０に進む。
【００６２】
ステップ１１２０では、論理区画調停部２５０が、Ｉ／Ｏ調停表５１０の当該Ｉ／Ｏスロット４１０に対応する使用論理区画フィールド５１５を「未使用」に更新し、ステップ１１３０に進む。
【００６３】
ステップ１１３０では、要求元論理区画のゲストＯＳに対してＩ／Ｏ完了割り込みを通知し、ステップ１１４０に進む。
【００６４】
ステップ１１４０では、キューの中にペンディングされた要求があるかどうかを判定する。ペンディングされた要求がない場合にはステップ１１５０に進む。ペンディングされた要求がある場合にはステップ１１６０に進む。
【００６５】
ステップ１１５０では、Ｉ／Ｏスロットを使用する論理区画はなくなり、使用完了状態となる。その後、ステップ１０００（図８）へと戻る。
【００６６】
ステップ１１６０では、ペンディングされた要求をキューから取り出し、ステップ１０２０（図８）へと移行する。
【００６７】
以上、図８及び図９において説明した処理をノードコントローラ２００が行うことによって、複数の論理区画からのＩ／Ｏスロットへの要求が排他的に制御され、Ｉ／Ｏスロットの共有が可能となる。
【００６８】
次に、第１の実施の形態の、第１の変形例について説明する。
【００６９】
第１の変形例は、主記憶３００上の論理主記憶空間３１０ａの物理アドレスと、ゲストＯＳ上での論理アドレスとが一致しないケースである。
【００７０】
この場合、ゲストＯＳが論理メモリマップトＩ／Ｏ領域３２０ａに設定するＤＭＡ領域３３０ａのアドレスは論理アドレスであるため、これを物理アドレスへと変換する必要がある。そこで、主記憶Ｉ／Ｏ同期部２８０内にアドレス変換表５３０（図１０）を持たせ、このアドレス変換表５３０を参照することによって、論理アドレスと物理アドレスとの変換を行う。
【００７１】
主記憶Ｉ／Ｏ同期部２８０は、論理メモリマップトＩ／Ｏ領域３２０からＩ／Ｏスロット４１０上の物理メモリマップトＩ／Ｏ領域４２０に対してレジスタ値の転送を行う場合に、アドレス変換表５３０を用いて、アドレスレジスタ３６０に対してアドレスの変換を行う。該当するアドレスがアドレス範囲フィールド５３２に属する場合は、該当アドレスを、アドレス変換フィールド５３３に示された値だけ増減させる。
【００７２】
また、Ｉ／Ｏスロット４１０から論理メモリマップトＩ／Ｏ領域３２０への転送を行う場合にはこの逆の変換を行う。
【００７３】
以上説明したように、本実施の形態の第１の変形例では、アドレス変換表５３０を用いることで、物理主記憶上の物理アドレスと論理主記憶空間上の論理アドレスとが異なる場合でも、第１の実施の形態と同様に、データの転送が行われる。
【００７４】
次に、第１の実施の形態の第２の変形例について説明する。
【００７５】
第２の変形例では、共有Ｉ／Ｏスロットを論理区画１５０ａが使用中は、主記憶３００上の論理メモリマップトＩ／Ｏ領域３２０ａを、直接、物理メモリマップトＩ／Ｏ領域４２０ａ上へとマッピングする場合である。
【００７６】
第１の実施の形態と同じく、論理メモリマップトＩ／Ｏ領域３２０ａへの書き込みを契機として、論理区画１５０ａが共有Ｉ／Ｏスロット４１０ｂの使用を開始する。このとき、主記憶Ｉ／Ｏ同期部２８０は、論理メモリマップトＩ／Ｏ領域３２０ａのパラメータを、物理メモリマップトＩ／Ｏ領域４２０ｂへと転送する。さらに主記憶Ｉ／Ｏ同期部２８０は、論理メモリマップトＩ／Ｏ領域３２０ａのマッピングを変更し、物理メモリマップトＩ／Ｏ領域４２０ｂへと直接マッピングする。
【００７７】
この、論理主記憶空間３１０ａ、物理主記憶空間３０５、及び物理メモリマップトＩ／Ｏ領域４２０ｂの、マッピングの関係を図１１に示す。このマッピングによって、Ｉ／Ｏスロット４１０ｂは物理メモリマップトＩ／Ｏ領域４２０ｂは、論理メモリマップトＩ／Ｏ領域３２０ａに直接マッピングされるので、論理区画１５０ａ上のゲストＯＳ２４０ａは、直接、物理メモリマップトＩ／Ｏ領域４２０ｂを介して共有Ｉ／Ｏスロット４１０ｂを操作する（例えば、データの書き込み、読み出す）ことができる。
【００７８】
一方、共有Ｉ／Ｏスロットを使用中でない論理区画１５０ｂでは、論理メモリマップトＩ／Ｏ領域３２０ｂは、物理主記憶空間３０５上の領域にマッピングされており、直接、Ｉ／Ｏスロット４１０ｂを操作することはできない。
【００７９】
ここで、共有Ｉ／Ｏスロット４１０ｂからＩ／Ｏ完了の割り込みを検知したとき、主記憶Ｉ／Ｏ同期部２８０は、論理メモリマップトＩ／Ｏ領域３２０ａのマッピングを変更し、物理メモリマップトＩ／Ｏ領域４２０ｂから、物理主記憶空間３０５上の領域へとマッピングする。このマッピングにより、以降、論理区画１５０ａからは直接、Ｉ／Ｏスロット４１０ｂを操作することはできなくなる。そして、主記憶Ｉ／Ｏ同期部２８０は、物理メモリマップトＩ／Ｏ領域４２０ｂのパラメータを論理メモリマップトＩ／Ｏ領域３２０ａへと転送することで、共有Ｉ／Ｏスロット４１０ｂへのアクセスが可能となる。
【００８０】
同様に、論理区画１５０ｂが共有Ｉ／Ｏスロット４１０ｂの使用を開始する場合には、主記憶Ｉ／Ｏ同期部２８０は、論理メモリマップトＩ／Ｏ領域３２０ｂを、直接、物理メモリマップトＩ／Ｏ領域４２０ｂへとマッピングする。
【００８１】
次に、本実施の形態の第２の変形例の、論理メモリマップトＩ／Ｏ領域のマッピングを切り替える手順について説明する。
【００８２】
図１２は、第２の変形例におけるＩ／Ｏスロットの使用を開始する手順のフローチャート、図１３は、第２の変形例におけるＩ／Ｏスロットの使用を完了する手順のフローチャートである。
【００８３】
図１２は第１の実施の形態の図８に対応しており、ステップ１５００はステップ１０００、ステップ１５１０はステップ１０１０、ステップ１５２０はステップ１０２０、ステップ１５３０はステップ１０３０、ステップ１５５０はステップ１０５０、ステップ１５６０はステップ１０６０にそれぞれ対応するため、詳細な説明は省略する。
【００８４】
ステップ１５４０は、ステップ１０４０と同じく、論理メモリマップトＩ／Ｏ領域から物理メモリマップトＩ／Ｏ領域へとパラメータの転送を行う。この際、必要ならば論理アドレスを物理アドレスへと変換する。その後、ステップ１５８０へと進む。
【００８５】
ステップ１５８０では、主記憶Ｉ／Ｏ同期部２８０は、要求元論理区画の論理メモリマップトＩ／Ｏ領域を、直接物理メモリマップトＩ／Ｏ領域へとマッピングする。これにより、以降は当該論理区画が直接Ｉ／Ｏスロットを使用できるようになる。その後、ステップ１５５０へと進む。
【００８６】
図１３は第１の実施の形態の図９に対応しており、ステップ１６１０はステップ１１１０、ステップ１６２０はステップ１１２０、ステップ１６３０はステップ１１３０、ステップ１６４０はステップ１１４０、ステップ１６５０はステップ１１５０、ステップ１６６０はステップ１１６０にそれぞれ対応するため、詳細な説明は省略する。
【００８７】
ステップ１６００は、ステップ１１００と同じく、Ｉ／Ｏスロットからの完了割り込みを監視する。Ｉ／Ｏ完了割り込みが発生した場合は、ステップ１６８０へと進む。
【００８８】
ステップ１６８０では、主記憶Ｉ／Ｏ同期部２８０は、論理メモリマップトＩ／Ｏ領域と物理メモリマップトＩ／Ｏ領域のマッピングを解除する。これにより、以降は当該論理区画が直接Ｉ／Ｏスロットを使用できないようにする。その後、ステップ１６１０へと進む。
【００８９】
この図１２及び図１３の手順によって、Ｉ／Ｏスロットを直接操作可能な論理区画を切り替えることで、複数の論理区画からのＩ／Ｏスロットの共有を可能にする。
【００９０】
以上のように、本実施例の第２の変形例では、論理主記憶空間のマッピングを変更することで、Ｉ／Ｏスロットを使用する論理区画を切り替え、時分割によってＩ／Ｏスロットの共有を可能にする。
【００９１】
次に、第１の実施の形態の第３の変形例について説明する。
【００９２】
第３の変形例では、直接、メモリマップトＩ／Ｏ領域（メモリマップトＩ／Ｏ領域のレジスタ）にパラメータを読み書きするのではなく、主記憶上のコマンドブロックを介してアクセスを行うタイプのＩ／Ｏカードを使用する場合である。
【００９３】
最近のＩ／Ｏカード、例えばＡｄａｐｔｅｃ（登録商標、以下同じ）社のＳＣＳＩカードである“ＡＳＣ２９１６０”等では、Ｉ／Ｏアクセスのスループットを向上するために、パラメータをメモリマップトＩ／Ｏ領域に直接書き込むのではなく、主記憶上に設けた一つ以上のコマンドブロックを使って行う。このコマンドブロックによって、主記憶へのアクセスより一般的に遅いＩ／Ｏへのアクセスを最小限とすることができ、また、複数のコマンドブロックを使用することで、同時に複数のコマンドを発行することもできる。
【００９４】
このような、コマンドブロックを用いるＩ／Ｏカードを使用する論理主記憶空間３１０ａの例を図１４に示す。
【００９５】
論理主記憶空間３１０ａ内に、二つのコマンドブロック３８０ａ、３８０ｂが存在している。なお、コマンドブロック３８０が一つ以上存在すれば足りる。各コマンドブロックは、メモリマップトＩ／Ｏ領域のレジスタと同様に、コマンド種類、ＤＭＡアドレス、ステータス情報、読み出しオフセット、長さ等のパラメータを持つ。論理区画１５０ａ上のゲストＯＳは、パラメータをコマンドブロック３８０にセットする。なお、複数のコマンドを同時に発行したい場合は、複数のコマンドブロック３８０ａと３８０ｂとの両方にコマンドをセットする。複数のコマンドブロック３８０は、配列、又はポインタによってつながれた“リスト”を形成する。
【００９６】
次に、実際にＩ／Ｏアクセスをスタートさせる場合、先頭のコマンドブロック３８０のアドレスを論理メモリマップトＩ／Ｏ領域３２０ａのアドレスレジスタ３６０に書き込む。この場合、アドレスレジスタ３６０がコマンドレジスタ３４０の役割を兼ねていてもよい。
【００９７】
コマンドブロックを使用するＩ／Ｏカードの場合のＩ／Ｏイベント表５２０ｂを図１５に示す。第１の実施の形態との違いは、使用開始における監視対象フィールド５２３が「アドレスレジスタ」となっている点、及び、使用終了のイベント種別フィールド５２２に、Ｉ／Ｏ割り込みだけでなく論理主記憶上のコマンドブロックのカウンタ、又はリンクを辿ることで、アクセスが全て完了したことを確認する点が異なる。なお、完了イベントの発生条件が異なるだけで、イベントが発生した際のアクションについては第１の実施の形態と同様である。
【００９８】
次に、本実施の形態の第３の変形例の、コマンドブロックを利用するタイプのＩ／Ｏカードの使用開始及び使用完了の手順を説明する。
【００９９】
なお、Ｉ／Ｏカードの使用を開始する手順は、図８に示した手順と同じであるため、説明を省略する。
【０１００】
図１６は、Ｉ／Ｏカードの使用を完了する手順を示すフローチャートである。第１の実施の形態の図９に対応しており、ステップ１２００はステップ１１００、ステップ１２２０はステップ１１２０、ステップ１２３０はステップ１１３０、ステップ１２４０はステップ１１４０、ステップ１２５０はステップ１１５０、ステップ１２６０はステップ１１６０にそれぞれ対応するため、詳細な説明は省略する。
【０１０１】
ステップ１２１０で、パラメータを転送した後、ステップ１２７０へと移行する。
【０１０２】
ステップ１２７０では、要求元論理区画の論理主記憶空間上のコマンドブロック３８０を参照し、コマンドブロック３８０が全て完了しているか否かを判定する。コマンドブロック３８０全てが完了している場合はステップ１２２０へと進む。完了していない場合にはステップ１０５０へと戻る。
【０１０３】
以上のように、第１の実施の形態の第３の変形例では、コマンドブロックを利用するタイプのＩ／Ｏカードを用いた場合にも、第１の実施の形態と同様に、複数の論理区画によってＩ／Ｏカードにアクセスすることができる。
【０１０４】
次に、第１の実施の形態の第４の変形例について説明する。
【０１０５】
第４の変形例は、Ｉ／Ｏスロットを使用する論理区画を時分割によって切り替える場合である。
【０１０６】
前述した第１の実施の形態又は第３の変形例では、一度、論理区画１５０ａが共有Ｉ／Ｏスロット４１０ｂの使用を開始した場合には、Ｉ／Ｏアクセスが完了するまで他の論理区画１５０ｂはＩ／Ｏスロット４１０ｂを使用することはできない。これに対して、第４の変形例では、タイマ割り込みなどを用いて、一定の時間間隔で共有Ｉ／Ｏスロットを使用する論理区画を、強制的に切り替える。
【０１０７】
この場合、論理区画１５０ａが使用中に別の論理区画１５０ｂに切り替えられ、完了しなかったＩ／Ｏ要求の割り込みに関しては、Ｉ／Ｏ監視部２７０が捉え、論理区画調停部２５０の中のキューにペンディングしておく。そして、再び論理区画１５０ａがＩ／Ｏスロット４１０ｂを使用する時点で、キューにペンディングされている完了しなかった割り込みを、ゲストＯＳ２４０ａに対して発行することで、Ｉ／Ｏのアクセスが完了する。
【０１０８】
また、このタイマ割り込みによる論理区画の切り替えは、Ｉ／Ｏデバイス上で障害が起こった場合のタイムアウトの検出に使用することもできる。
【０１０９】
次に、本実施の形態の第４の変形例の、時分割によってＩ／Ｏスロットを使用する論理区画を切り替える手順について説明する。
【０１１０】
図１７は論理区画調停部２５０が行う、Ｉ／Ｏスロットの使用論理区画選択処理のフローチャートである。また、図１８は、本変形例で使用するデータ構造（キュー）とタイマの仕組みを説明する図である。
【０１１１】
以下、図１７、図１８に従って手順の説明をする。なお、必要に応じて図１〜図７を参照する。
【０１１２】
ステップ１４００は初期状態である。
【０１１３】
ステップ１４１０では、共有Ｉ／Ｏスロット４１０ｂを使用する論理区画１５０を一つ選ぶ。通常はラウンドロビンなどによって特定の論理区画が沈み込まないように（各論理区画がそれぞれ均一な時間配分となるように）選択するのが好ましい。その後、ステップ１４２０へ進む。
【０１１４】
ステップ１４２０では、Ｉ／Ｏ調停表５１０の使用論理区画フィールド５１５を、選ばれた論理区画１５０に変更して、Ｉ／Ｏ調停表５１０を更新する。その後、ステップ１４３０へ進む。
【０１１５】
ステップ１４３０では、選ばれた論理区画１５０に対応するＩ／Ｏ完了割り込みキュー６００にＩ／Ｏ完了割り込み６１０があるか否かを判定する。Ｉ／Ｏ完了割り込み６１０がない場合はステップ１４５０に進み、ある場合はステップ１４４０に進む。
【０１１６】
ステップ１４４０では、Ｉ／Ｏ完了割り込み６１０をＩ／Ｏ完了割り込みキュー６００から取り出し、論理区画１５０上のゲストＯＳ２４０に対してＩ／Ｏ完了割り込みを発行する。その後、ステップ１４５０へ進む。
【０１１７】
ステップ１４５０では、選ばれた論理区画１５０に対応するＩ／Ｏアクセス要求キュー６２０にＩ／Ｏアクセス要求６３０があるか否かを判定する。Ｉ／Ｏアクセス要求６３０がない場合はステップ１４７０に、ある場合はステップ１４６０に進む。
【０１１８】
ステップ１４６０では、Ｉ／Ｏアクセス要求６３０をＩ／Ｏアクセス要求キュー６２０から取り出し、共有Ｉ／Ｏスロット４１０ｂに対してＩ／Ｏアクセス要求を発行する。その後、ステップ１４７０へ進む。
【０１１９】
ステップ１４７０では、タイマ６４０の切り替え時刻６５０を、次の切り替え時刻に設定する。望ましいケースでは、現在時刻に、割り当てられたタイムスライス（例えば、１０ｍｓ）を加算した時刻を切り替え時刻として設定する。その後、ステップ１４８０へ進む。
【０１２０】
ステップ１４８０では、タイマ６４０の現在時刻６４５が切り替え時刻６５０を超えたか否かを判定する。望ましいケースではタイマ割り込みを使ってポーリングを避ける。切り替え時刻６５０を過ぎていた場合は、ステップ１４１０へと戻り、別の論理区画１５０へと切り替える。
【０１２１】
ゲストＯＳ２４０からＩ／Ｏスロット４１０ｂへのアクセスは、第１の実施の形態や第１の変形例と同じである。ただし、論理区画調停部２５０は、Ｉ／Ｏ調停表５１０の使用論理区画フィールド５１５が要求元論理区画と異なる場合、Ｉ／Ｏアクセス要求をＩ／Ｏアクセス要求キュー６２０にペンディングする。また、Ｉ／Ｏ完了割り込みを検知した場合も、要求元論理区画と異なる場合には、Ｉ／Ｏ完了割り込みをＩ／Ｏ完了割り込みキュー６００にペンディングする。
【０１２２】
次に、第１の実施の形態の第５の変形例について説明する。
【０１２３】
第５の変形例は、Ｉ／Ｏアクセスの完了を、割り込みではなく、ステータスレジスタをポーリングすることで、Ｉ／Ｏアクセスの完了を待つタイプのＩ／Ｏカードを使用する場合である。
【０１２４】
第５の変形例の、ポーリングを行う動作を図１〜図４及び図１９を用いて説明する。図１９は、ポーリングを実施する場合のＩ／Ｏイベント表５２０ｃを説明する図である。
【０１２５】
論理区画１５０ａ上のゲストＯＳが共有Ｉ／Ｏスロット４１０ｂに対するＩ／Ｏアクセスを発行し、共有Ｉ／Ｏスロット４１０ｂの使用を開始する。その後、定期的に、共有Ｉ／Ｏスロット４１０ｂのステータスレジスタを読み出すことで、共有Ｉ／Ｏスロット４１０ｂの使用が完了したかどうかを判別する。
【０１２６】
ステータスレジスタの読み出しは、論理メモリマップトＩ／Ｏ領域３２０ａのステータスレジスタ３５０への読み出しとなる。主記憶監視部２６０は、ステータスレジスタ３５０への読み出しを監視し、論理区画調停部２５０へと通知する。論理区画調停部２５０は主記憶Ｉ／Ｏ同期部２８０に指示し、論理メモリマップトＩ／Ｏ領域３２０ａへの読み出しをＩ／Ｏスロット４１０ｂへのＩ／Ｏリードへと変換する。Ｉ／Ｏ監視部２７０はＩ／Ｏスロット４１０ｂへのＩ／Ｏリードの応答を監視し、論理区画調停部２５０へと通知する。論理区画調停部２５０では、主記憶Ｉ／Ｏ同期部２８０へ指示し、Ｉ／Ｏリードの応答を最初の論理メモリマップトＩ／Ｏ領域３２０ａへの読み出しの応答に変換して応答する。また、このとき、ステータスレジスタの値が完了を示すものであった場合には、共有Ｉ／Ｏスロット４１０ｂの使用が完了する。
【０１２７】
監視するイベントと、イベント発生時のアクションを除いては、第１の実施の形態の基本例と同じである。
【０１２８】
次に、本実施の形態の第５の変形例の、ポーリングによって完了を検知するタイプのＩ／Ｏカードの使用開始及び使用完了の手順について説明する
なお、Ｉ／Ｏカードの使用の開始の手順は、図８に示した手順と同じであるため、説明を省略する。
【０１２９】
図２０は、ポーリングを用いた場合の、Ｉ／Ｏスロットの使用を完了する手順を示すフローチャートである。
【０１３０】
まず、初期状態１０５０からステップ１３１０へ移行する。
【０１３１】
ステップ１３１０では、主記憶Ｉ／Ｏ監視部２７０が、論理メモリマップトＩ／Ｏ領域３２０に対して読み出しが行われたか否かを判定する。読み出しが行われていない場合はステップ１０５０に戻る。読み出しが行われた場合はステップ１３７０へ進む。
【０１３２】
ステップ１３７０では、論理メモリマップトＩ／Ｏ領域に対する読み出しを、当該Ｉ／ＯスロットのメモリマップトＩ／Ｏ領域への読み出しに変換して発行し、ステップ１３７５へ進む。
【０１３３】
ステップ１３７５では、ステップ１３７０で発行したＩ／Ｏ読み出しに対する応答を待つ。応答が来た場合ステップ１３８０へ進む。
【０１３４】
ステップ１３８０では、Ｉ／Ｏ読み出しに対する応答を、ステップ１３１０で行われた論理メモリマップトＩ／Ｏ領域３２０に対する読み出しの応答として返す。ステップ１３８５へ進む。
【０１３５】
ステップ１３８５では、返ってきた応答がＩ／Ｏの完了を示しているかを判定する。完了を示していない場合はステップ１０５０へ戻る。この場合要求元論理区画のゲストＯＳは再開するが、依然としてＩ／Ｏカードは使用中のままとなる。もし完了を示していた場合にはステップ１３２０へ進む。
【０１３６】
ステップ１３２０では、論理区画調停部２５０は、Ｉ／Ｏ調停表５１０の当該Ｉ／Ｏスロットに対応する使用論理区画フィールド５１５を「未使用」に変更し、ステップ１３４０へと進む。
【０１３７】
ステップ１３４０は第１の実施の形態の図９の、ステップ１１４０と、ステップ１３５０はステップ１１５０と、ステップ１３６０はステップ１１６０とそれぞれ対応するため、詳細な説明は省略する。
【０１３８】
次に、本発明の第２の実施の形態について説明する。
【０１３９】
第２の実施の形態は、Ｉ／Ｏスロット共有の設定とプロセッサバス、及び、Ｉ／Ｏバス上のトランザクションに関する実施形態である。
【０１４０】
図２１は、サーバ論理分割装置の全体構成を示すブロック図である。
【０１４１】
プロセッサバス３１１０、一つ以上の主記憶３３００、及びＩ／Ｏバス３４００が、ノードコントローラ３２００を介して相互接続されている。なお、このノードコントローラ３２００の構成は前述した第１の実施の形態のノードコントローラ２００と同一の構成を持つ。
【０１４２】
プロセッサバス３１１０には一つ以上のプロセッサ３１００が接続されている。また、Ｉ／Ｏバス３４００には、一つ以上のＩ／Ｏスロット３４１０接続されている。
【０１４３】
また、ノードコントローラ３２００は、ネットワーク３８１０を介して設定コンソール３８００と接続される。なお、ネットワーク３８１０は、ＬＡＮであってもシリアルケーブルのようなものであっても構わない。
【０１４４】
設定コンソール３８００は、論理区画へのハードウェア資源の割り当てを設定するための端末装置である。
【０１４５】
設定コンソール３８００によって行う設定の画面の一例を図２２に示す。
【０１４６】
Ｉ／Ｏスロット割り付けテーブル２０００は、Ｉ／Ｏスロット番号２０１０、Ｉ／Ｏカード２０２０、使用論理区画２０３０の各フィールドから構成される。使用論理区画２０３０のフィールドは、どの論理区画がどのＩ／Ｏカードを使用するかが示されており、また、どの論理区画がどのＩ／Ｏカードを使用するかを指定することができる。
【０１４７】
図２２に示す表示例では、４つの論理区画と５つのＩ／Ｏスロットとが存在している。そして、論理区画１はＩ／Ｏスロット１と２を、論理区画２はＩ／Ｏスロット２と４を、論理区画３はＩ／Ｏスロット３を、論理区画５はＩ／Ｏスロット５を、それぞれ使用することを示している。Ｉ／Ｏスロット２のＩ／Ｏカードは、論理区画１と２の両方に割り付けられている。これは、設定コンソール３８００によって、一つのＩ／Ｏスロットを、複数の論理区画に割り当てる手段を有することを示している。
【０１４８】
図２１に戻ると、主記憶３３００には、二つの論理区画３１５０ａ及び３１５０ｂが存在している。プロセッサ３１００ａは論理区画３１５０ａに、プロセッサ３１００ｂは論理区画３１５０ｂにそれぞれ割り当てられている。主記憶３３００上には、論理区画３１５０ａに割り当てられた論理主記憶空間３３１０ａと、論理区画３１５０ｂに割り当てられた論理主記憶空間３３１０ｂとが存在する。また、Ｉ／Ｏスロット３４１０ｂは、論理区画３１５０ａと論理区画３１５０ｂとの両方に割り当てられている。
【０１４９】
論理区画３１５０ａに割り当てられたプロセッサ３１００ｂからは、Ｉ／Ｏスロット３４１０ｂ上のメモリマップトＩ／Ｏ領域に書き込みを行う。この書き込みは、第１の実施の形態で前述したように、ノードコントローラ３２００のＩ／Ｏイベント表に記され、ノードコントローラ３２００の主記憶制御部によって、イベント表のイベント種別フィールドを参照することでＩ／Ｏスロットの使用開始として検出できる。また、書き込みは、プロセッサバス３１１０上でライトトランザクション３７００としても観測される。一方、論理区画３１５０ｂに割り当てられた３１００ｂからもＩ／Ｏスロット３４１０ｂ上のメモリマップトＩ／Ｏ領域に向けて書き込みを行う。書き込みはやはりプロセッサバス３１１０上でライトトランザクション３７００として観測される。
【０１５０】
通常、メモリマップトＩ／Ｏ領域への書き込みは、Ｉ／Ｏバス３４００上でＩ／Ｏライトトランザクション３７１０として観測される。しかし、第２の実施の形態では、論理区画３１５０ａと論理区画３１５０ｂとで、Ｉ／Ｏスロット３４１０ｂを切り替えながら使用する。そのため、プロセッサ３１００ａ又はプロセッサ３１００ｂから発行されたライトトランザクションのうち、少なくとも一つは、Ｉ／Ｏバス３４００には向かわずに、主記憶３３００に向けた書き込みとなる。
【０１５１】
例えば、現在、Ｉ／Ｏスロット３４１０ｂを使用しているのが論理区画３１５０ａであるとする。このとき、論理区画３１５０ａに属するプロセッサ３１００ａから発行されたメモリマップトＩ／Ｏ領域に向けたライトトランザクション３７００は、Ｉ／Ｏバス３４００へのＩ／Ｏライトトランザクション３７１０として観測される。一方、論理区画３１５０ｂに属するプロセッサ３１００ｂから発行されたメモリマップトＩ／Ｏ領域に向けたライトトランザクション３７００は、主記憶３３００上の論理主記憶空間３３１０ｂへの書き込みとなる。
【０１５２】
Ｉ／Ｏスロット３４１０ｂを使用する論理区画が３１５０ｂに切り替わると、プロセッサ３１００ｂから発行されたライトトランザクション３７００は、Ｉ／Ｏライトトランザクション３７１０として観測される。このとき、Ｉ／Ｏスロット３４１０ｂの使用の完了は、第１の実施の形態で前述したように、ノードコントローラ３２００のＩ／Ｏイベント表に記され、ノードコントローラ３２００の主記憶制御部によって、イベント表のイベント種別フィールドを参照することでＩ／Ｏスロットの使用完了として検出できる。
【０１５３】
このようにしてＩ／Ｏスロット３４１０ｂを使用する論理区画を切り替えることで、Ｉ／Ｏスロットの共有が可能となる。
【図面の簡単な説明】
【０１５４】
【図１】本発明の第１の実施の形態の論理分割機構を備えた計算機システムの構成を示すブロック図である。
【図２】本発明の第１の実施の形態の論理区画の分割の様子を示す説明図である。
【図３】本発明の第１の実施の形態の主記憶３００の詳細な構成を示すメモリマップである。
【図４】本発明の第１の実施の形態の論理メモリマップトＩ／Ｏ領域３２０ａの一例の説明図である。
【図５】本発明の第１の実施の形態の論理主記憶空間３１０と主記憶３００の物理主記憶空間３０５との対応の一例を示すメモリマップである。
【図６】本発明の第１の実施の形態のＩ／Ｏ調停表５１０の詳細の説明図である。
【図７】本発明の第１の実施の形態のＩ／Ｏイベント表５２０の詳細の説明図である。
【図８】本発明の第１の実施の形態のＩ／Ｏスロットの使用開始手順を示すフローチャートである。
【図９】本発明の第１の実施の形態のＩ／Ｏスロットの使用完了手順を示すフローチャートである。
【図１０】本発明の第１の実施の形態の第１の変形例のアドレス変換表５３０の説明図である。
【図１１】本発明の第１の実施の形態の第１の変形例の論理主記憶空間３１０ａ、物理主記憶空間３０５、及び物理メモリマップトＩ／Ｏ領域４２０ｂの、マッピングの関係の説明図である。
【図１２】本発明の第１の実施の形態の第２の変形例のＩ／Ｏスロットの使用開始手順のフローチャートである。
【図１３】本発明の第１の実施の形態の第２の変形例のＩ／Ｏスロットの使用完了手順のフローチャートである。
【図１４】本発明の第１の実施の形態の第３の変形例の論理主記憶空間３１０ａの一例の説明図である。
【図１５】本発明の第１の実施の形態の第３の変形例のＩ／Ｏイベント表５２０ｂの説明図である。
【図１６】本発明の第１の実施の形態の第３の変形例のＩ／Ｏスロットの使用完了手順を示すフローチャートである。
【図１７】本発明の第１の実施の形態の第４の変形例のＩ／Ｏスロットの使用論理区画選択処理のフローチャートである。
【図１８】本発明の第１の実施の形態の第４の変形例のデータ構造（キュー）とタイマの説明図である。
【図１９】本発明の第１の実施の形態の第５の変形例のＩ／Ｏイベント表５２０ｃの説明図である。
【図２０】本発明の第１の実施の形態の第５の変形例のＩ／Ｏスロットの使用完了手順を示すフローチャートである。
【図２１】本発明の第２の実施の形態のサーバ論理分割装置の全体構成を示すブロック図である。
【図２２】本発明の第２の実施の形態の設定コンソール３８００によって行う設定の画面の一例の説明図である。
【符号の説明】
【０１５５】
１００ａ、１００ｂ      プロセッサ
２００      ノードコントローラ
２１０      プロセッサ制御部
２２０      主記憶制御部
２３０      Ｉ／Ｏ制御部
２５０      論理区画調停部
２６０      主記憶監視部
２７０      Ｉ／Ｏ監視部
２８０      主記憶Ｉ／Ｏ同期部
３００      主記憶
３２０ａ、３２０ｂ      論理メモリマップトＩ／Ｏ領域
３５０      ステータスレジスタ
３６０      アドレスレジスタ
３７０      パラメータレジスタ
３８０      コマンドブロック
４００      Ｉ／Ｏバス
４１０ａ、４１０ｂ、４１０ｃ、４１０ｄ      Ｉ／Ｏスロット
４２０ａ、４２０ｂ      物理メモリマップトＩ／Ｏ領域
５１０      Ｉ／Ｏ調停表
５２０      Ｉ／Ｏイベント表
２０３０      使用論理区画
３１００ａ、３１００ｂ      プロセッサ
３１１０      プロセッサバス
３１５０ａ、３１５０ｂ      論理区画
３２００      ノードコントローラ
３３００      主記憶
３４００      Ｉ／Ｏバス
３４１０      Ｉ／Ｏスロット
３７００      ライトトランザクション
３７１０      Ｉ／Ｏライトトランザクション
３８００      設定コンソール
３８１０      ネットワーク
【図１】
2005122640.tif 000003
【図２】
2005122640.tif 000004
【図３】
2005122640.tif 000005
【図４】
2005122640.tif 000006
【図５】
2005122640.tif 000007
【図６】
2005122640.tif 000008
【図７】
2005122640.tif 000009
【図８】
2005122640.tif 000010
【図９】
2005122640.tif 000011
【図１０】
2005122640.tif 000012
【図１１】
2005122640.tif 000013
【図１２】
2005122640.tif 000014
【図１３】
2005122640.tif 000015
【図１４】
2005122640.tif 000016
【図１５】
2005122640.tif 000017
【図１６】
2005122640.tif 000018
【図１７】
2005122640.tif 000019
【図１８】
2005122640.tif 000020
【図１９】
2005122640.tif 000021
【図２０】
2005122640.tif 000022
【図２１】
2005122640.tif 000023
【図２２】
2005122640.tif 000024