(57)【特許請求の範囲】
【請求項１】
コンピューターシステムであって：
プロセッサと；
ピーシーアイエクスプレス（ＰＣＩｅ）エンドポイントデバイスを接続するためのＰＣＩｅバスと、
前記プロセッサと前記ＰＣＩｅエンドポイントデバイスとの間の伝送パスに設定されたシミュレーションレスポンスモジュールと、を含み、
前記プロセッサは、前記ＰＣＩｅエンドポイントデバイスにアクセスするためのオペレーションインストラクションを獲得して、前記オペレーションインストラクションに従って前記ＰＣＩｅエンドポイントデバイスに対してアクセスリクエストを送付するように構成されており、
前記シミュレーションレスポンスモジュールは、
前記プロセッサから送付された前記アクセスリクエストをバッファーして、前記ＰＣＩｅエンドポイントデバイスに対して前記アクセスリクエストを転送し、
前記バッファーされたアクセスリクエストに対するレスポンスメッセージを前記ＰＣＩｅエンドポイントデバイスから受け取ったか否かをモニタし、
前記バッファーされたアクセスリクエストに対する前記レスポンスメッセージを前記ＰＣＩｅエンドポイントデバイスから受け取った場合に、前記バッファーされたアクセスリクエストに対して完了フラグを付けるか、または、前記バッファーされたアクセスリクエストを削除し、
プリセットトリガー条件に合う場合に、前記バッファーされたアクセスリクエストの状態を決定し、
前記バッファーされたアクセスリクエストの前記状態が未完了であると判断される場合に、前記バッファーされたアクセスリクエストに対するシミュレーションレスポンスメッセージを獲得して、前記シミュレーションレスポンスメッセージを前記プロセッサに対して送付する、
ように構成されており、
前記バッファーされたアクセスリクエストに未完了フラグが付いているか、又は、前記バッファーされたアクセスリクエストが前記状態は完了であることを示すフラグを有していない場合に、前記バッファーされたアクセスリクエストの前記状態が未完了であると判断される、
ことを特徴とするコンピューターシステム。
【請求項２】
前記コンピューターシステムは、さらに、複数のＰＣＩｅエンドポイントデバイスを前記プロセッサに接続するように構成されているＰＣＩｅスイッチを含み、該ＰＣＩｅスイッチの下流ポートは、前記ＰＣＩｅバスを通じて前記複数のＰＣＩｅエンドポイントデバイスに接続されており、
前記シミュレーションレスポンスモジュールの一つのポートが、前記ＰＣＩｅバスを通じて前記ＰＣＩｅスイッチの上流ポートに接続されており、前記シミュレーションレスポンスモジュールの別のポートは、前記プロセッサに接続されている、
請求項１に記載のコンピューターシステム。
【請求項３】
前記シミュレーションレスポンスモジュールは、さらに、前記プロセッサによって送付された前記アクセスリクエストを受け取った後で、前記アクセスリクエストに対するシミュレーションレスポンスメッセージを生成して、前記アクセスリクエストに対するシミュレーションレスポンスメッセージをバッファーするように構成され、かつ、
前記アクセスリクエストに対する前記状態が未完了であると判断された場合、前記アクセスリクエストのためにバッファーされた前記シミュレーションレスポンスメッセージを獲得するように構成されている、
請求項１または２に記載のコンピューターシステム。
【請求項４】
前記アクセスリクエストに対する前記シミュレーションレスポンスメッセージは、第１タイプのシミュレーションレスポンスメッセージ又は第２タイプのシミュレーションレスポンスメッセージを含んでおり、第１タイプのシミュレーションレスポンスメッセージは前記ＰＣＩｅエンドポイントデバイスが前記アクセスリクエストをサポートしていないことを示し、第２タイプのシミュレーションレスポンスメッセージは前記ＰＣＩｅエンドポイントデバイスが異常であることを示しており、
前記プロセッサは、さらに、前記第１タイプのシミュレーションレスポンスメッセージ又は前記第２タイプのシミュレーションレスポンスメッセージに従って、前記ＰＣＩｅエンドポイントデバイスに対する後続のアクセスを止めるように構成されている、
請求項１乃至３のいずれか一項に記載のコンピューターシステム。
【請求項５】
前記シミュレーションレスポンスモジュールは、フィールドでプログラム可能なゲートアレイ（ＦＰＧＡ）の形式で実施される、
請求項１乃至４のいずれか一項に記載のコンピューターシステム。
【請求項６】
前記プリセットトリガー条件は、前記ＰＣＩｅエンドポイントデバイスがオフラインになることであり、
それに応じて、前記シミュレーションレスポンスモジュールは、さらに、前記ＰＣＩｅエンドポイントデバイスがオフラインになったかどうかをモニターし、前記ＰＣＩｅエンドポイントデバイスがオフラインになったものと判断された場合に、前記アクセスリクエストの前記状態を判断するように構成されている、
請求項１乃至５のいずれか一項に記載のコンピューターシステム。
【請求項７】
前記シミュレーションレスポンスモジュールは、特に、前記ＰＣＩｅエンドポイントデバイスがオフラインになったことを示す通知を受け取ったかどうかを判断し、かつ、前記通知を受け取った場合に前記ＰＣＩｅエンドポイントデバイスがオフラインになったものと判断するように構成されている、
請求項６に記載のコンピューターシステム。
【請求項８】
前記シミュレーションレスポンスモジュールは、さらに、前記ＰＣＩｅエンドポイントデバイスがオフラインになったことを示す通知を前記プロセッサに転送するように構成されており、
前記プロセッサは、さらに、受け取った前記ＰＣＩｅエンドポイントデバイスがオフラインになったことを示す前記通知に従って、前記ＰＣＩｅエンドポイントデバイスに対応する物理的デバイスを電源オフするように構成されている、
請求項７に記載のコンピューターシステム。
【請求項９】
前記プリセットトリガー条件は、前記アクセスリクエストのタイマーのタイムアウトであり、
前記シミュレーションレスポンスモジュールは、さらに、前記バッファーされたアクセスリクエストの時間を計るタイマーをスタートし、前記タイマーのタイムアウトの際に前記アクセスリクエストの前記状態を判断するように構成されている、
請求項１乃至５のいずれか一項に記載のコンピューターシステム。
【請求項１０】
前記シミュレーションレスポンスモジュールは、さらに、前記シミュレーションレスポンスメッセージを前記プロセッサに対して送付した後で、前記ＰＣＩｅエンドポイントデバイスの状態を判断し、前記ＰＣＩｅエンドポイントデバイスの前記状態がオフラインである場合は、前記ＰＣＩｅエンドポイントデバイスがオフラインになることを示す通知を前記プロセッサに対して送付するように構成されており；かつ、
前記プロセッサは、さらに、前記ＰＣＩｅエンドポイントデバイスがオフラインになることを示す指標の受け取りに応じて、前記ＰＣＩｅエンドポイントデバイスに対応する物理的デバイスを電源オフするように構成されている、
請求項９に記載のコンピューターシステム。
【請求項１１】
前記プロセッサは、特に、前記ＰＣＩｅエンドポイントデバイスに対して複数のアクセスリクエストを送付するように構成されており；かつ
前記シミュレーションレスポンスモジュールは、特に、前記複数のアクセスリクエストのそれぞれの状態をモニターし、前記プリセットトリガー条件に合う場合に、前記複数のアクセスリクエストのうちでレスポンスメッセージを受け取っていないアクセスリクエストの数量統計を集めて、数量が第１閾値を超えている場合には、前記アクセスリクエストに対するシミュレーションレスポンスメッセージを獲得し、前記シミュレーションレスポンスメッセージをプロセッサに対して送付するように構成されている、
請求項１に記載のコンピューターシステム。
【請求項１２】
ピーシーアイエクスプレス（ＰＣＩｅ）エンドポイントデバイスにアクセスするための方法であって、プロセッサと前記ＰＣＩｅエンドポイントデバイスとの間の伝送パスに設定されたシミュレーションレスポンス装置によって実施され、前記方法は：
前記プロセッサからアクセスリクエストを受け取る場合に前記アクセスリクエストをバッファーするステップと、
前記ＰＣＩｅエンドポイントデバイスに対して受け取った前記アクセスリクエストを転送するステップと、
前記バッファーされたアクセスリクエストに対するレスポンスメッセージを前記ＰＣＩｅエンドポイントデバイスから受け取った場合に、前記バッファーされたアクセスリクエストに対して完了フラグを付けるか、または、前記バッファーされたアクセスリクエストを削除するステップと、
プリセットトリガー条件に合う場合に前記バッファーされたアクセスリクエストの状態を判断するステップと；
前記アクセスリクエストの前記状態が未完了であれば、前記アクセスリクエストに対するシミュレーションレスポンスメッセージを獲得するステップであり、前記バッファーされたアクセスリクエストに未完了フラグが付いているか、又は、前記バッファーされたアクセスリクエストが前記状態は完了であることを示すフラグを有していない場合に、前記アクセスリクエストの前記状態が未完了であると判断される、ステップと；
前記アクセスリクエストに対する前記シミュレーションレスポンスメッセージを前記プロセッサに対して送付するステップと、を含む、
ことを特徴とする方法。
【請求項１３】
前記方法は、さらに、
前記プロセッサからの前記アクセスリクエストを受け取った後で、
前記アクセスリクエストに対する前記シミュレーションレスポンスメッセージを生成するステップと、
前記アクセスリクエストに対する前記シミュレーションレスポンスメッセージをバッファーするステップと、
前記バッファーされたアクセスリクエストの前記状態が未完了であると判断される場合、前記アクセスリクエストのために前記バッファーされたシミュレーションレスポンスメッセージを獲得するステップ、を含む、
請求項１２に記載の方法。
【請求項１４】
前記アクセスリクエストに対する前記シミュレーションレスポンスメッセージは、第１タイプのシミュレーションレスポンスメッセージ又は第２タイプのシミュレーションレスポンスメッセージを含んでおり、第１タイプのシミュレーションレスポンスメッセージは前記ＰＣＩｅエンドポイントデバイスが前記アクセスリクエストをサポートしていないことを示し、第２タイプのシミュレーションレスポンスメッセージは前記ＰＣＩｅエンドポイントデバイスが異常であることを示しており、
前記第１タイプのシミュレーションレスポンスメッセージ又は前記第２タイプのシミュレーションレスポンスメッセージは、前記ＰＣＩｅエンドポイントデバイスに対する後続のアクセスを止めるように前記プロセッサに命令するために使用される、
請求項１２または１３のいずれか一項に記載の方法。
【請求項１５】
前記プリセットトリガー条件は、前記ＰＣＩｅエンドポイントデバイスがオフラインになることであり、
前記方法は、さらに、
前記ＰＣＩｅエンドポイントデバイスがオフラインになったかどうかをモニターするステップと、
前記ＰＣＩｅエンドポイントデバイスがオフラインになったものと判断された場合に、前記アクセスリクエストの前記状態の判断を実行するステップと、を含む、
請求項１２乃至１４のいずれか一項に記載の方法。
【請求項１６】
前記ＰＣＩｅエンドポイントデバイスがオフラインになることをモニターするステップは：
前記ＰＣＩｅエンドポイントデバイスがオフラインになったことを示す通知を受け取ったかどうかを判断するステップと、
前記通知を受け取った場合に、前記ＰＣＩｅエンドポイントデバイスがオフラインになったものと判断するステップと、を含む、
請求項１５に記載の方法。
【請求項１７】
前記方法は、さらに、
前記ＰＣＩｅエンドポイントデバイスがオフラインになったことを示す通知を前記プロセッサに転送するステップと、を含む、
請求項１６に記載の方法。
【請求項１８】
前記プリセットトリガー条件は、前記アクセスリクエストのタイマーのタイムアウトであり、
前記方法は、さらに、
前記プロセッサによって送付された前記バッファーされたアクセスリクエストの時間を計るタイマーをスタートするステップと、
前記タイマーのタイムアウトの際に前記アクセスリクエストの前記状態の判断を実行するステップと、を含む、
請求項１２乃至１４のいずれか一項に記載の方法。
【請求項１９】
前記方法は、さらに、
前記ＰＣＩｅエンドポイントデバイスの状態を判断するステップと、
前記ＰＣＩｅエンドポイントデバイスの前記状態がオフラインである場合に、前記ＰＣＩｅエンドポイントデバイスがオフラインになることを示す通知を前記プロセッサに対して送付するステップと、を含む、
請求項１８に記載の方法。
【請求項２０】
前記プロセッサは、前記ＰＣＩｅエンドポイントデバイスに対して複数のアクセスリクエストを送付し、
前記方法は、さらに、
前記複数のアクセスリクエストのそれぞれの状態をモニターするステップと、
プリセットトリガーイベント条件に合う場合に、前記複数のアクセスリクエストのうちでレスポンスメッセージを受け取っていないアクセスリクエストの数量統計を集めるステップと、
数量が第１閾値を超えている場合には、前記アクセスリクエストに対するシミュレーションレスポンスメッセージを獲得するステップと、を含む、
請求項１２に記載の方法。
【請求項２１】
コンピューターシステムに適用され、ピーシーアイエクスプレス（ＰＣＩｅ）エンドポイントデバイスがＰＣＩｅバスを通じて前記コンピューターシステムにアクセスするシミュレーションレスポンス装置であって、前記装置は、前記コンピューターシステムのプロセッサと前記ＰＣＩｅエンドポイントデバイスとの間の伝送パスに設定されるように構成されており、前記装置は：
前記プロセッサによって送付されたアクセスリクエストを受け取るように構成されたインタラクトユニットと、
モニターユニットであり、
前記インタラクトユニットによって受け取った前記アクセスリクエストをバッファーし、
前記ＰＣＩｅエンドポイントデバイスから送付された前記バッファーされたアクセスリクエストに対するレスポンスメッセージを前記インタラクトユニットが受け取ったか否かをモニタし、
前記バッファーされたアクセスリクエストに対する前記レスポンスメッセージを前記ＰＣＩｅエンドポイントデバイスから受け取った場合に、前記バッファーされたアクセスリクエストに対して完了フラグを付けるか、または、前記バッファーされたアクセスリクエストを削除する、
ように構成されているモニターユニットと、
プリセットトリガー条件に合う場合に、前記モニターユニットのモニター結果に応じて、前記バッファーされたアクセスリクエストの状態を判断するように構成された判断ユニットと；
前記アクセスリクエストの前記状態が未完了であると前記判断ユニットが判断する場合、前記バッファーされたアクセスリクエストに対するシミュレーションレスポンスメッセージを獲得するように構成された獲得ユニットであり、前記バッファーされたアクセスリクエストに未完了フラグが付いているか、又は、前記バッファーされたアクセスリクエストが前記状態は完了であることを示すフラグを有していない場合に、前記バッファーされたアクセスリクエストの前記状態が未完了であると判断される、獲得ユニットと；
前記獲得ユニットによって獲得された前記シミュレーションレスポンスメッセージを前記プロセッサに対して送付するように構成されたレスポンスユニットと、を含む、
ことを特徴とする装置。
【請求項２２】
前記モニターユニットは、さらに、
前記インタラクトユニットが前記プロセッサによって送付された前記アクセスリクエストを受け取った後で、
前記アクセスリクエストに対するシミュレーションメッセージを生成し、前記アクセスリクエストに対する前記シミュレーションレスポンスメッセージをバッファーするように構成されており、
前記獲得ユニットは、特に、前記モニターユニットによってバッファーされた前記アクセスリクエストに対するシミュレーションレスポンスメッセージを獲得するように構成されている、
請求項２１に記載の装置。
【請求項２３】
前記アクセスリクエストに対する前記シミュレーションレスポンスメッセージは、第１タイプのシミュレーションレスポンスメッセージ又は第２タイプのシミュレーションレスポンスメッセージを含んでおり、第１タイプのシミュレーションレスポンスメッセージは前記ＰＣＩｅエンドポイントデバイスが前記アクセスリクエストをサポートしていないことを示し、第２タイプのシミュレーションレスポンスメッセージは前記ＰＣＩｅエンドポイントデバイスが異常であることを示しており、
前記第１タイプのシミュレーションレスポンスメッセージ又は前記第２タイプのシミュレーションレスポンスメッセージは、前記ＰＣＩｅエンドポイントデバイスに対する後続のアクセスを止めるように前記プロセッサに命令するために使用される、
請求項２１または２２のいずれか一項に記載の装置。
【請求項２４】
前記プリセットトリガー条件は、前記ＰＣＩｅエンドポイントデバイスがオフラインになることであり、
前記モニターユニットは、さらに、
前記ＰＣＩｅエンドポイントデバイスがオフラインになったかどうかをモニターし、
前記ＰＣＩｅエンドポイントデバイスがオフラインになったものと判断された場合に、前記アクセスリクエストの前記状態の判断を実行するよう前記判断ユニットに通知するように構成されている、
請求項２１乃至２３のいずれか一項に記載の装置。
【請求項２５】
前記モニターユニットは、特に、
前記ＰＣＩｅエンドポイントデバイスがオフラインになったことを示す通知を受け取ったかどうかを判断し、
前記通知を受け取った場合に、前記ＰＣＩｅエンドポイントデバイスがオフラインになったものと判断するように構成されている、
請求項２４に記載の装置。
【請求項２６】
前記装置は、さらに、
前記ＰＣＩｅエンドポイントデバイスがオフラインになったことを示す通知を前記プロセッサに転送するように構成されている、
請求項２５に記載の装置。
【請求項２７】
前記プリセットトリガー条件は、前記アクセスリクエストのタイマーのタイムアウトであり、
前記モニターユニットは、さらに、
前記プロセッサによって送付された前記アクセスリクエストの時間を計るタイマーをスタートし、
前記タイマーのタイムアウトの際に前記バッファーされたアクセスリクエストの前記状態の判断を実行するように前記判断ユニットに通知するように構成されている、
請求項２１乃至２３のいずれか一項に記載の装置。
【請求項２８】
前記モニターユニットは、さらに、
前記ＰＣＩｅエンドポイントデバイスの状態を判断し、
前記ＰＣＩｅエンドポイントデバイスの前記状態がオフラインであると判断された場合に、前記ＰＣＩｅエンドポイントデバイスがオフラインになることを示す通知を前記プロセッサに対して送付するよう前記判断ユニットに通知するように構成されている、
請求項２７に記載の装置。
【請求項２９】
前記プロセッサは、前記ＰＣＩｅエンドポイントデバイスに対して複数のアクセスリクエストを送付し、
前記モニターユニットは、特に、前記複数のアクセスリクエストのそれぞれの前記状態をモニターするように構成され、
前記判断ユニットは、特に、プリセットトリガーイベント条件に合う場合に、前記複数のアクセスリクエストのうちでレスポンスメッセージを受け取っていないアクセスリクエストの数量統計を集めるように構成され、
前記獲得ユニットは、特に、数量が第１閾値を超えている場合には、前記アクセスリクエストに対するシミュレーションレスポンスメッセージを獲得するように構成されている、
請求項２１に記載の装置。
【請求項３０】
プロセッサ、メモリー、バス、および、コミュニケーションインターフェイスを含むコンピューターであって、
前記メモリーは、コンピューターで実行可能なインストラクションを保管するように構成されており、
前記プロセッサは、前記バスを通じて前記メモリーに対して接続されており、
前記コンピューターが動作する場合に、前記プロセッサは、前記メモリーの中に保管された前記コンピューターで実行可能なインストラクションを実行して、前記コンピューターが、請求項１２乃至２０のいずれか一項に従った方法を実施するコンピューター。
【請求項３１】
コンピューターで実行可能なインストラクションを含む、コンピューターで読取り可能な媒体であって、
コンピューターのプロセッサが、前記コンピューターで実行可能なインストラクションを実行する場合に、前記コンピューターが、請求項１２乃至２０のいずれか一項に従った方法を実施するコンピューターで読取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューターテクノロジーに関する。より特定的には、ピーシーアイエクスプレス（ＰＣＩｅ）のエンドポイントデバイスにアクセスするための方法、コンピューターシステム、および、装置に関する。
【背景技術】
【０００２】
ペリフェラルコンポーネントインターコネクトエクスレス（Ｐｅｒｉｆｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ：ピーシーアイエクスプレス、ＰＣＩｅ）は、コンピューター及びコミュニケーションプラットフォーム上で使用される高性能システムバスである。ＰＣＩｅバスは、ＣＰＵと周辺機器が相互接続されているシステムに広く適用することができ、コンピューター及びストレージデバイスにおいて主要なサービスチャネルとして働く。ネットワークアダプターデバイス又は半導体ディスク（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ、ＳＳＤ）といった、ＰＣＩｅバスを通じてＣＰＵと相互接続される多くのタイプの周辺機器が存在する。ここにおいて、そうしたデバイスは、一様にＰＣＩｅエンドポイントデバイスと呼ばれるものである。
【０００３】
ＰＣＩｅバスは、サーバー又はストレージシステムのバスインターフェイスとして広く適用されている。システムが通常に稼働している場合、オンライン拡張とメンテナンスが要求されるため、ＰＣＩｅエンドポイントデバイスは電力を中断することなく追加または除去される必要がある。これは、ホットスワッピング（ｈｏｔ−ｓｗａｐｐｉｎｇ）として知られている。従来技術において、ＰＣＩｅホットスワッピングは以下の工程に従っている。オペレーターがボタンを押すことによってホットスワップリクエストを送付する。ホットスワップコントローラーは、ホットスワップイベントを知って、システムにおいてＰＣＩｅエンドポイントデバイスにアクセスする可能性のある全てのデバイスに対してＰＣＩｅエンドポイントデバイスへのアクセスを中止するように通知して、ホットスワップされる必要があるＰＣＩｅエンドポイントデバイスのリソースを切り離す。そして、ＰＣＩｅエンドポイントデバイスは電源オフされ、オペレーターがＰＣＩｅエンドポイントデバイスを引き抜く。
【０００４】
従来技術では、ＰＣＩｅエンドポイントデバイスのホットスワッピングには、通常のシステム稼働を保証するために、事前の通知が必要とされる。しかしながら、近年において、ＰＣＩｅバスは、イントラシステム（ｉｎｔｒａ−ｓｙｓｔｅｍ）の相互接続からインターシステム（ｉｎｔｅｒ−ｓｙｓｔｅｍ）の相互接続へと発展しており、外部ケーブルといった周辺機器の適用が増加している。ケーブルは異常にドロップする傾向があり、ＰＣＩｅエンドポイントデバイスは事前の通知なしに異常にオフラインとなることがある。加えて、半導体ディスクＳＳＤを使用するユーザーにとって、システムに直接的にアクセスすることは、ますます通常のことになっている。ユーザーの習慣といった理由により、ユーザーは事前の通知なくＳＳＤディスクを追加したり、引き抜いたりする。しかしながら、ＰＣＩｅエンドポイントデバイスが突然、異常にオフラインとなる上述の状況のために、ＣＰＵがＰＣＩｅエンドポイントデバイスに読み出し又は書き込みインストラクションを送付した場合、その関連のインストラクションは常に実行されるべき状態にある。ＰＣＩｅエンドポイントデバイスにアクセスするためにＣＰＵによって送付されたインストラクションがある程度の累積された場合、ＣＰＵは、システム全体が異常であると考え、マシンチェック例外（Ｍａｃｈｉｎｅ  ｃｈｅｃｋ  ｅｘｃｅｐｔｉｏｎ、ＭＣＥ）エラーをレポートして、リセットを実行する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の実施例は、ピーシーアイエクスプレス（ＰＣＩｅ）のエンドポイントデバイスが異常にオフラインとなった後でＣＰＵをリセットすることを妨げるために、ＰＣＩｅエンドポイントデバイスにアクセスするための方法、コンピューターシステム、および、装置を提供する。
【課題を解決するための手段】
【０００６】
第１の態様において、本発明の実施例は、以下のコンピューターシステムを提供する。すなわち、
プロセッサと；
ピーシーアイエクスプレス（ＰＣＩｅ）エンドポイントデバイスを接続するように構成されたＰＣＩｅバスと、を含み、
プロセッサは、ＰＣＩｅエンドポイントデバイスにアクセスするためのオペレーションインストラクションを獲得して、オペレーションインストラクションに従ってＰＣＩｅエンドポイントデバイスに対してアクセスリクエストを送付するように構成されており、
コンピューターシステムは、さらに、シミュレーションレスポンスモジュールを含み、
シミュレーションレスポンスモジュールは、アクセスリクエストのメッセージ状態をモニターし、プリセットトリガー条件が満たされた場合にアクセスリクエストのメッセージ状態を判断するように構成され、かつ、
アクセスリクエストのメッセージ状態が「未完了」であれば、アクセスリクエストに対するシミュレーションレスポンスメッセージを獲得して、シミュレーションレスポンスメッセージをプロセッサに対して送付するように構成されており、
アクセスリクエストのメッセージ状態は「完了」又は「未完了」から成り、「未完了」は、ＰＣＩｅエンドポイントデバイスがアクセスリクエストに対して何らレスポンスメッセージを送付していないことを示す、ことを特徴とするコンピューターシステム。
【０００７】
第１の態様に関して、第１に可能な実施例において、シミュレーションレスポンスモジュールは、プロセッサとＰＣＩｅエンドポイントデバイスとの間の信号伝送パスに設定され、プロセッサによって送付されたアクセスリクエストを受け取り、アクセスリクエストに対するレスポンスメッセージをＰＣＩｅエンドポイントデバイスから受け取ったかどうかをモニターするように構成され、かつ、  アクセスリクエストに対するレスポンスメッセージをＰＣＩｅエンドポイントデバイスから受け取った場合に、アクセスリクエストのメッセージ状態を「完了」として記録するように構成されている。
【０００８】
第１の態様、または、第１の態様の第１に可能な実施例に関して、第２に可能な実施例において、コンピューターシステムは、さらに、複数のＰＣＩｅエンドポイントデバイスをプロセッサに接続するように構成されているＰＣＩｅスイッチを含み、該ＰＣＩｅスイッチの下流ポートは、ＰＣＩｅバスを通じて複数のＰＣＩｅエンドポイントデバイスに接続されており、シミュレーションレスポンスモジュールの一つのポートが、ＰＣＩｅバスを通じてＰＣＩｅスイッチの上流ポートに接続されており、シミュレーションレスポンスモジュールの別のポートは、プロセッサに接続されている。
【０００９】
第１の態様、または、第１の態様の第１に可能な実施例、もしくは、第１の態様の第２に可能な実施例に関して、第３に可能な実施例において、アクセスリクエストに対するシミュレーションレスポンスメッセージは、第１タイプのシミュレーションレスポンスメッセージ又は第２タイプのシミュレーションレスポンスメッセージを含んでおり、第１タイプのシミュレーションレスポンスメッセージはＰＣＩｅエンドポイントデバイスがアクセスリクエストをサポートしていないことを示し、第２タイプのシミュレーションレスポンスメッセージはＰＣＩｅエンドポイントデバイスが異常であることを示しており、プロセッサは、さらに、第１タイプのシミュレーションレスポンスメッセージ又は第２タイプのシミュレーションレスポンスメッセージに従って、ＰＣＩｅエンドポイントデバイスに対する後続のアクセスを止めるように構成されている。
【００１０】
第１の態様、または、第１の態様の第１に可能な実施例、もしくは、第１の態様の第２に可能な実施例に関して、第４に可能な実施例において、プリセットトリガー条件は、ＰＣＩｅエンドポイントデバイスが異常にオフラインになることであり、それに応じて、シミュレーションレスポンスモジュールは、さらに、ＰＣＩｅエンドポイントデバイスが異常にオフラインになったかどうかをモニターし、ＰＣＩｅエンドポイントデバイスが異常にオフラインになったものと判断された場合に、アクセスリクエストのメッセージ状態を判断するように構成されている。
【００１１】
第１の態様、または、第１の態様の第１に可能な実施例、もしくは、第１の態様の第２に可能な実施例に関して、第５に可能な実施例において、プリセットトリガー条件は、アクセスリクエストのタイマーのタイムアウトであり、シミュレーションレスポンスモジュールは、さらに、プロセッサによって送付されたアクセスリクエストの時間を計るタイマーをスタートし、タイマーのタイムアウトの際にアクセスリクエストのメッセージ状態を判断するように構成されている。
【００１２】
第２の態様において、ピーシーアイエクスプレス（ＰＣＩｅ）エンドポイントデバイスにアクセスするための方法が、さらに、提供される。ＰＣＩｅバスを通じてＰＣＩｅエンドポイントデバイスがコンピューターシステムにアクセスする方法であって、コンピューターの中のプロセッサがアクセスリクエストをＰＣＩｅエンドポイントデバイスに対して送付した後で、アクセスリクエストのメッセージ状態をモニターするステップであり、アクセスリクエストのメッセージ状態は「完了」又は「未完了」から成り、「未完了」は、ＰＣＩｅエンドポイントデバイスがアクセスリクエストに対して何らレスポンスメッセージを送付していないことを示すステップと；プリセットトリガー条件が満たされた場合にアクセスリクエストのメッセージ状態を判断するステップと；アクセスリクエストのメッセージ状態が「未完了」であれば、アクセスリクエストに対するシミュレーションレスポンスメッセージを獲得するステップと；アクセスリクエストに対するシミュレーションレスポンスメッセージをプロセッサに対して送付するステップと、を含む。
【００１３】
第２の態様に関して、第１に可能な実施例において、方法は、さらに、プロセッサによって送付されたアクセスリクエストを受け取るステップ、を含み、アクセスリクエストのメッセージ状態をモニターするステップは：アクセスリクエストに対するレスポンスメッセージをＰＣＩｅエンドポイントデバイスから受け取ったかどうかをモニターするステップと、アクセスリクエストに対するレスポンスメッセージをＰＣＩｅエンドポイントデバイスから受け取った場合に、アクセスリクエストのメッセージ状態を「完了」として記録するステップと、を含む。
【００１４】
第２の態様、または、第２の態様の第１に可能な実施例に関して、第２に可能な実施例において、プリセットトリガー条件は、ＰＣＩｅエンドポイントデバイスが異常にオフラインになることであり、方法は、さらに、ＰＣＩｅエンドポイントデバイスが異常にオフラインになったかどうかをモニターするステップと、ＰＣＩｅエンドポイントデバイスが異常にオフラインになったものと判断された場合に、アクセスリクエストのメッセージ状態の判断を実行するステップと、を含む。
【００１５】
第２の態様、または、第２の態様の第１に可能な実施例に関して、第３に可能な実施例において、プリセットトリガー条件は、アクセスリクエストのタイマーのタイムアウトであり、方法は、さらに、プロセッサによって送付されたアクセスリクエストの時間を計るタイマーをスタートするステップと、タイマーのタイムアウトの際にアクセスリクエストのメッセージ状態の判断を実行するステップと、を含む。
【００１６】
第３の態様において、コンピューターシステムに適用され、ピーシーアイエクスプレス（ＰＣＩｅ）エンドポイントデバイスがＰＣＩｅバスを通じてコンピューターシステムにアクセスするシミュレーションレスポンス装置は、コンピューターの中のプロセッサがアクセスリクエストをＰＣＩｅエンドポイントデバイスに対して送付した後で、アクセスリクエストのメッセージ状態をモニターするように構成されたモニターユニットであり、アクセスリクエストのメッセージ状態は「完了」又は「未完了」から成り、「未完了」は、ＰＣＩｅエンドポイントデバイスがアクセスリクエストに対して何らレスポンスメッセージを送付していないことを示すモニターユニットと；プリセットトリガー条件が満たされた場合にアクセスリクエストのメッセージ状態を判断するように構成された判断ユニットと；アクセスリクエストのメッセージ状態が「未完了」であれば、アクセスリクエストに対するシミュレーションレスポンスメッセージを獲得するように構成された獲得ユニットと；アクセスリクエストに対するシミュレーションレスポンスメッセージをプロセッサに対して送付するように構成されたレスポンスユニットと、を含む。
【００１７】
第３の態様の第１に可能な実施例に関して、第２の実施例において、装置は、さらに、プロセッサによって送付されたアクセスリクエストを受け取るように構成されたインタラクトユニット、を含み、モニターユニットは、特に、インタラクトユニットが、ＰＣＩｅエンドポイントデバイスによって送付されたアクセスリクエストに対するレスポンスメッセージを受け取るかどうかをモニターし、アクセスリクエストに対するレスポンスメッセージをＰＣＩｅエンドポイントデバイスから受け取った場合に、アクセスリクエストのメッセージ状態を「完了」として記録するするように構成されている。
【００１８】
第４の態様において、コンピューターは、プロセッサ、メモリー、バス、および、コミュニケーションインターフェイスを含む。メモリーは、コンピューターで実行可能なインストラクションを保管するように構成されており、プロセッサは、バスを通じてメモリーに対して接続されており、コンピューターが動作する場合に、プロセッサは、メモリーの中に保管されたコンピューターで実行可能なインストラクションを実行して、コンピューターが、第２の態様において提供されるＰＣＩｅエンドポイントデバイスにアクセスする方法を実施するコンピューター。
【００１９】
第５の態様において、コンピューターで実行可能なインストラクションを含む、コンピューターで読取り可能な媒体が提供される。コンピューターのプロセッサが、コンピューターで実行可能なインストラクションを実行する場合に、コンピューターが、第２の態様において提供されるＰＣＩｅエンドポイントデバイスにアクセスする方法を実施するコンピューターで読取り可能な媒体である。
【００２０】
本発明の実施例においては、プロセッサから送付されたアクセスリクエストのメッセージ状態をモニターすることができ、ＰＣＩｅエンドポイントデバイスがアクセスリクエストに対して何のレスポンスメッセージも送付しないと決定された場合、アクセスリクエストに対するシミュレーションレスポンスメッセージがプロセッサに送付される。従って、シミュレーションレスポンスメッセージに応じて、プロセッサは、以前に送付されたアクセスリクエストに対応するプロシージャ（ｐｒｏｃｅｄｕｒｅ）の完了を確認することができ、アクセスリクエストのタイミングにためのタイマーをシャットダウンし、バッファーされたアクセスリクエストをクリアする。それによって、プロセッサにおける通常処理を保持し、プロセッサにおけるアクセスリクエストの累積から生じるＭＣＥのリセット問題を回避することができる。
【図面の簡単な説明】
【００２１】
本発明の実施例に係る技術的ソリューションをより明確に説明するように、実施例または従来技術を記述するために必要な添付の図面について以降に簡単に紹介する。明らかに、以降の説明において添付に図面は、本発明のいくつかの実施例を単に示すものであって、当業者であれば、創造的な努力をすることなく、添付の図面から他の図面でさえ引き出すことができる。
【図１】図１は、本発明の実施例に従ったコンピューターシステムの構成ダイヤグラムである。
【図２】図２は、本発明の実施例に従った別のコンピューターシステムの構成ダイヤグラムである。
【図３】図３は、本発明の実施例に従った方法のフローチャートである。
【図４】図４は、本発明の実施例に従った別の方法のフローチャートである。
【図５】図５は、本発明の実施例に従った別の方法のフローチャートである。
【図６】図６は、本発明の実施例に従ったシミュレーションレスポンス装置の構成ダイヤグラムである。
【図７】図７は、本発明の実施例に従った別のシミュレーションレスポンス装置の構成ダイヤグラムである。
【図８】図８は、本発明の実施例に従ったコンピューターの構成ダイヤグラムである。
【発明を実施するための形態】
【００２２】
本発明の実施例は、ピーシーアイエクスプレスＰＣＩｅのエンドポイントデバイスにアクセスするための方法、コンピューターシステム、および、装置を提供する。ＰＣＩｅエンドポイントデバイスがホットスワップされる必要がある場合に、処理を実行する以前にシステムに通知することなく、ＰＣＩｅエンドポイントデバイスとプロセッサとの間の接続を直接的にカットオフするようにである。この場合、プロセッサは、ＭＣＥリセットのリスクを負わない。
【００２３】
本発明の実施例において、ＰＣＩｅエンドポイントデバイスが故障によってシステムから直接的に取り外されたり、オフラインされた状態は、統一的に、ＰＣＩｅエンドポイントデバイスの異常オフラインと呼ばれる。
【００２４】
本発明の実施例に係るシステムアーキテクチャー
図１は、本発明の実施例に従ったコンピューターシステムの構成ダイヤグラムである。図１に示されたコンピューターシステムは、ＣＰＵ１１０とメモリー１２０を含んでいる。ＰＣＩｅエンドポイントデバイス１３０は、ＰＣＩｅバス１４０を通じてＣＰＵ１１０に接続されており、コンピューターシステムに取り付けたり、取り外したりすることができる。ＰＣＩｅエンドポイントデバイス１３０は、グラフィック処理ユニット１３１、ネットワークアダプター１３２、半導体ディスク１３３、および、ビデオアクセラレーションコンポーネント１３４といった、種々のタイプであってよい。
【００２５】
図１に示されたコンピューターシステムにおいて、ＰＣＩｅエンドポイントデバイス１３０とＣＰＵ１１０は、ＰＣＩｅドメインを構成しており、ＰＣＩｅドメインにおけるすべてのデバイスは、ＰＣＩｅバスを通じてＣＰＵ１１０に接続されており、ＣＰＵ１１０によってコントロールされる。
【００２６】
ＰＣＩｅエンドポイントデバイス１３０にアクセスするためのオペレーションインストラクションを得た後で、ＣＰＵ１１０は、オペレーションインストラクションに従ってＰＣＩｅエンドポイントデバイス１３０に対してアクセスリクエストを送付し、ＰＣＩｅエンドポイントデバイス１３０のレジスター上で読み出しオペレーション又は書き込みオペレーションを実行するようにリクエストしている。ＰＣＩｅエンドポイントデバイス１３０が異常にオフラインとなる場合、ＣＰＵ１１０は、ＰＣＩｅエンドポイントデバイス１３０から、ＣＰＵ１１０のアクセスリクエストに対するレスポンスメッセージを受け取ることができない。この場合、ＣＰＵは、アクセスリクエストを未完了タスクであるとみなす。こうした未完了タスクがある程度ＣＰＵの中に累積された場合、ＣＰＵは、システム全体を異常であるとみなし、ＭＣＥエラーをレポートして、リセットされる。
【００２７】
本発明の実施例において、シミュレーションレスポンスモジュール１６０がシステムに追加される。シミュレーションレスポンスモジュール１６０は、以下のように構成されている。つまり、ＣＰＵ１１０がＰＣＩｅエンドポイントデバイス１３０に対するアクセスリクエストを送付した後で、ＣＰＵ１１０によって送付されたアクセスリクエストのメッセージ状態をモニターする。プリセットトリガー条件が満たされている場合、アクセスリクエストのメッセージ状態がまだ「未完了」であれば、すなわち、ＰＣＩｅエンドポイントデバイス１３０がアクセスリクエストに対して何らレスポンスメッセージを送付しないとすれば、シミュレーションレスポンスモジュール１６０が、アクセスリクエストに対するシミュレーションレスポンスメッセージを獲得して、ＣＰＵ１１０にシミュレーションレスポンスメッセージを送付する。シミュレーションレスポンスメッセージとアクセスリクエストは、同一のメッセージヘッダーを有しており、アクセスリクエストはシミュレーションレスポンスメッセージに対応するものである。従って、ＣＰＵは以前に送付されたアクセスリクエストに対応するプロシージャを完了したものとみなして、アクセスリクエストのタイミングのためのタイマーをシャットダウンし、ＣＰＵによってバッファーされたアクセスリクエストをクリアする。
【００２８】
アクセスリクエストのメッセージ状態は、「完了」または「未完了」を含んでいる。ここで、「完了」は、ＰＣＩｅエンドポイントデバイスがアクセスリクエストに対するレスポンスメッセージを送付したことを示し、「未完了」は、ＰＣＩｅエンドポイントデバイスが何らアクセスリクエストに対するレスポンスメッセージを送付していないことを示している。
【００２９】
加えて、シミュレーションレスポンスモジュール１６０は、さらに、以下のように構成されている。つまり、プロセッサがＰＣＩｅエンドポイントデバイスに対してアクセスリクエストを送付した後で、アクセスリクエストに対するシミュレーションレスポンスメッセージを生成し、アクセスリクエストに対するシミュレーションレスポンスメッセージをバッファーする。続いて、シミュレーションレスポンスモジュール１６０は、アクセスリクエストに対する、ローカルにバッファーされたシミュレーションレスポンスメッセージを直接的に獲得する。
【００３０】
本発明の実施例において、シミュレーションレスポンスモジュールは、ＣＰＵによって送付されたアクセスメッセージのメッセージ状態をモニターすることができ、ＰＣＩｅエンドポイントデバイスがアクセスリクエストに対するメッセージを何ら送付していないものと判断する場合に、アクセスリクエストに対するシミュレーションレスポンスメッセージをＣＰＵに送付する。シミュレーションレスポンスメッセージに従って、ＣＰＵは、以前に送付されたアクセスリクエストに対応するプロシージャーの完了を確認することができ、アクセスリクエストのタイミングのためのタイマーをシャットダウンし、バッファーされたアクセスリクエストをクリアする。それによって、プロセッサにおける通常処理を保持し、プロセッサにおけるアクセスリクエストの累積から生じるＭＣＥのリセット問題を回避することができる。
【００３１】
本発明の特定の実施例において、シミュレーションレスポンスモジュール１６０は、ＰＣＩｅエンドポイントデバイス１３０からアクセスリクエストに対するレスポンスメッセージを受け取ったかどうかをモニターすることによってアクセスリクエストのメッセージ状態をモニターすることができ、シミュレーションレスポンスモジュールが、ＰＣＩｅエンドポイントデバイスからアクセスリクエストに対するレスポンスメッセージを受け取った場合、シミュレーションレスポンスモジュールは、アクセスリクエストのメッセージ状態を「完了」として記録する。
【００３２】
本発明の特定の実施例において、シミュレーションレスポンスモジュール１６０は、ＣＰＵ１１０とそれぞれのＰＣＩｅエンドポイントデバイス１３０との間の伝送パス（ｐａｔｈ）において設定され、ＣＰＵ１１０とそれぞれのＰＣＩｅエンドポイントデバイス１３０との間の全てのメッセージが、シミュレーションレスポンスモジュール１６０を通じてパスしていることを保証する。このようにして、シミュレーションレスポンスモジュール１６０は、ＰＣＩｅエンドポイントデバイス１３０からアクセスリクエストに対するレスポンスメッセージを受け取ったかどうかをモニターすることによってアクセスリクエストのメッセージ状態をモニターすることができる。別の実施例においては、ＰＣＩｅエンドポイントデバイス１３０上でプリコンフィグレーション（ｐｒｅ−ｃｏｎｆｉｇｕｒａｔｉｏｎ）が実行されてよい。レスポンスメッセージをＣＰＵ１１０に送付するときに、ＰＣＩｅエンドポイントデバイス１３０が、アクセスリクエストに対するレスポンスメッセージもシミュレーションレスポンスモジュールに送付するようにである。このようにして、シミュレーションレスポンスモジュール１６０は、また、アクセスリクエストに対するレスポンスメッセージが受け取られたかどうかに応じて、アクセスリクエストのメッセージ状態をモニターすることもできる。本発明の実施例において提供された実施に基づいて、当業者であれば、他の同等又は類似の方法を使用して、シミュレーションレスポンスモジュール１６０がアクセスリクエストのメッセージ状態をモニターできるようにし得ることが明らかである。
【００３３】
図１に示されるように、シミュレーションレスポンスモジュール１６０は、ＣＰＵ１１０とそれぞれのＰＣＩｅエンドポイントデバイス１３０との間の一つの伝送パスにおいて設定されている。このように、ＣＰＵ１１０から送付されたアクセスリクエストは、ＰＣＩｅエンドポイントデバイス１３０に到着する以前に、シミュレーションレスポンスモジュール１６０を通じてパスされることを要する。このように、シミュレーションレスポンスモジュール１６０は、アクセスリクエストを受け取り、ＰＣＩｅエンドポイントデバイスによって送付されたメッセージはＣＰＵ１１０に到着する前にシミュレーションレスポンスモジュール１６０を通じてパスされることを要するので、シミュレーションレスポンスモジュール１６０は、アクセスリクエストに対するレスポンスメッセージをＰＣＩｅエンドポイントデバイスから受け取ったかどうかに応じて、ＰＣＩｅエンドポイントデバイス１３０がアクセスリクエストに対するレスポンスメッセージを送付したかどうかを判断して、アクセスリクエストのメッセージ状態を記録する。さらに、本発明の実施例に係る別の特定な実施においては、ＣＰＵ１１０によって送付されたアクセスリクエストを受け取った後で、シミュレーションレスポンスモジュール１６０は、アクセスリクエストをさらにバッファーしてもよい。引き続き、ＰＣＩｅエンドポイントデバイス１３０からアクセスリクエストに対するレスポンスメッセージが受け取られた場合、シミュレーションレスポンスモジュール１６０は、バッファーされたアクセスリクエストに「完了」フラグを付け、または、バッファーされたアクセスリクエストを削除してもよい。プリセットトリガー条件が満たされている場合、シミュレーションレスポンスモジュール１６０は、アクセスリクエストのメッセージ状態を問い合わせてよい。つまり、バッファーされたアクセスリクエストのフラグを問い合わせるか、または、バッファーされたアクセスリクエストを問い合わせる。アクセスリクエストのフラグがアクセスリクエストが「未完了」であることを示している場合、または、バッファーされたアクセスリクエストが削除されていない場合、シミュレーションレスポンスモジュール１６０は、アクセスリクエストのメッセージ状態が「未完了」であると判断する。つまり、ＰＣＩｅエンドポイントデバイス１３０は、アクセスリクエストに対して何らのレスポンスメッセージも送付しない。従って、シミュレーションレスポンスモジュール１６０は、アクセスリクエストに対するシミュレーションレスポンスメッセージを獲得して、そのシミュレーションレスポンスメッセージをＣＰＵ１１０に送付する。
【００３４】
ＣＰＵ１１０によって送付されたアクセスリクエストを受け取る場合、シミュレーションレスポンスモジュール１６０は、アクセスリクエストに対するシミュレーションレスポンスメッセージを事前に生成して、アクセスリクエストに関して事前に生成されたアクセスリクエストに対するシミュレーションレスポンスメッセージをバッファーしてもよい。続いて、シミュレーションレスポンスモジュール１６０は、アクセスリクエストに対するバッファーされたシミュレーションレスポンスメッセージを直接的に獲得する。アクセスリクエストに対するレスポンスメッセージをＰＣＩｅエンドポイントデバイス１３０から何も受け取っていないと判断されるまで、シミュレーションレスポンスモジュール１６０は、アクセスリクエストに対するシミュレーションレスポンスメッセージを生成しなくてよいことが明らかである。本発明の実施例は、特定の実施方法を限定するものではない。
【００３５】
図２に示されるように、システムにおいて複数のＰＣＩｅエンドポイントデバイスが存在する場合、複数のＰＣＩｅエンドポイントデバイスは、ＰＣＩｅスイッチ１５０を通じてＣＰＵ１１０に接続される。図２に示されるシステムは、図１に示されたコンポーネントだけでなく、ＰＣＩｅスイッチ１５０も含んでいる。ＰＣＩｅスイッチ１５０の上流ポートは、ＰＣＩｅバス１４０を通じてＣＰＵ１１０に接続されており、ＰＣＩｅスイッチ１５０の下流ポートは、それぞれのＰＣＩｅエンドポイントデバイスのためのＰＣＩｅポートを提供する。それぞれのＰＣＩｅポートは、ＰＣＩｅバス１４０を通じてそれぞれのＰＣＩｅエンドポイントデバイスに接続されている。ＰＣＩｅスイッチ１５０は、対応するＰＣＩｅポートに対してデータを下流にルート（ｒｏｕｔｅ）するように、そして、それぞれの独立したＰＣＩｅポートからＣＰＵ１１０に対してデータを上流にルートするように構成されている。図２において、シミュレーションレスポンスモジュール１６０は、ＣＰＵ１１０とＰＣＩｅスイッチ１５０との間の信号伝送パスにおいて設定され、以下のように構成されてよい。つまり、ＣＰＵ１１０によって送付されたアクセスリクエストを受け取り、ＣＰＵ１１０によって送付されたアクセスリクエストをバッファーする。アクセスリクエストをＰＣＩｅエンドポイントデバイス１３０に転送して、アクセスリクエストのメッセージ状態をモニターする。アクセスリクエストに対するレスポンスメッセージをＰＣＩｅエンドポイントデバイス１３０から受け取ったと判断する場合、ローカルにバッファーされたアクセスリクエストに「完了」フラグを付ける。そして、プリセットトリガー条件が満たされる場合、アクセスリクエストのバッファーされたフラグ又はバッファーされたアクセスリクエストを問い合わせる。アクセスリクエストのフラグが、アクセスリクエストが「未完了」であることを示す場合、または、バッファーされたアクセスリクエストが削除されていない場合、シミュレーションレスポンスモジュール１６０は、ＰＣＩｅエンドポイントデバイス１３０がアクセスリクエストに対して何らレスポンスメッセージを送付していないと判断して、アクセスリクエストに対するシミュレーションレスポンスメッセージを獲得して、シミュレーションレスポンスメッセージをＣＰＵ１１０に送付する。
【００３６】
上述の実施例において、プリセットトリガー条件は、ＰＣＩｅエンドポイントデバイス１３０が異常にオフラインになっているとシミュレーションレスポンスモジュール１６０が判断することであってよい。この場合、シミュレーションレスポンスモジュール１６０は、さらに、ＰＣＩｅエンドポイントデバイスが異常にオフラインになっているかどうかをモニターするように構成されている。図１及び図２に示される実施例において、シミュレーションレスポンスモジュール１６０は、ＰＣＩｅエンドポイントデバイス１３０が異常にオフラインになることを示す通知（ＰＣＩｅエンドポイントデバイスがシステムから抜き出されたことを示している割り込み通知といったもの）を受け取ったかどうかを判断し、ＰＣＩｅエンドポイントデバイス１３０が異常にオフラインになっていることを示す通知に従って、ＰＣＩｅエンドポイントデバイス１３０が異常にオフラインになっているものと判断する。代替的に、プリセットトリガー条件は、アクセスリクエストのタイマーのタイムアウトであり得る。この場合、シミュレーションレスポンスモジュール１６０は、さらに、ＰＣＩｅエンドポイントデバイス１３０から送付されたアクセスリクエストのためにタイマーをスタートするように構成され、タイマーのタイムアウトの際に、ＰＣＩｅエンドポイントデバイス１３０がアクセスリクエストに対してレスポンスメッセージを送付したかどうかを判断する。図１と図２に示された実施例において、シミュレーションレスポンスモジュール１６０は、ＣＰＵ１１０によって送付されたアクセスリクエストを受け取り、アクセスリクエストをバッファーした後で、アクセスリクエストに対するタイマーをスタートする。
【００３７】
本発明の実施例において、シミュレーションレスポンスモジュールは、アクセスリクエストのメッセージ状態をモニターする。つまり、プリセットトリガー条件が満たされている場合、アクセスリクエストのメッセージ状態がまだ「未完了」であれば、シミュレーションレスポンスモジュールが、アクセスリクエストに対するシミュレーションレスポンスメッセージをＣＰＵに送付する。従って、ＣＰＵは、アクセスリクエストに対応するプロシージャが完了したかどうかを判断するためのタイミングを停止して、ローカルにバッファーされたアクセスリクエストをクリアする。それにより、ＣＰＵにおける通常処理を保持し、ＣＰＵにおけるアクセスリクエスト処理のタイムアウトから生じるＭＣＥのリセット問題を回避している。
【００３８】
上述の全ての実施例において、シミュレーションレスポンスモジュール１６０からＣＰＵ１１０へ送付されたアクセスリクエストに対するシミュレーションレスポンスメッセージは、第１タイプのシミュレーションレスポンスメッセージ又は第２タイプのシミュレーションレスポンスメッセージを含んでよい。第１タイプのシミュレーションレスポンスメッセージは、ＰＣＩｅエンドポイントデバイス１３０がアクセスリクエストをサポートしないことを示しており、第２タイプのシミュレーションレスポンスメッセージは、ＰＣＩｅエンドポイントデバイス１３０が異常であることを示している。アクセスリクエストに対するシミュレーションレスポンスメッセージを受け取った後で、ＣＰＵ１１０は、さらに、第１タイプのシミュレーションレスポンスメッセージ又は第２タイプのシミュレーションレスポンスメッセージに応じて、ＰＣＩｅエンドポイントデバイス１３０のアクセスに失敗したかを判断し、従って、これ以上のデータの読み込みオペレーションを止める。この実施例において、シミュレーションレスポンスメッセージのタイプはさらに区分される。その結果、シミュレーションレスポンスメッセージに応じてアクセスプロシージャの完了を確認しながら、ＣＰＵは、さらに、アクセスが成功していないことを確認することができ、従って、関連データにアクセスするオペレーションの次のステップ（例えば、読み出しオペレーション）を止める。それゆえに、ＰＣＩｅエンドポイントデバイスが異常にオフラインになるシミュレーションにおいても、本発明の実施例はＣＰＵの通常処理を保持して、ＣＰＵが不必要なオペレーションを実行することから避ける。これにより、システムリソースの浪費を回避している。
【００３９】
本発明の別の実施例において、特に、ＣＰＵ１１０は、アクセスされるＰＣＩｅエンドポイントデバイスに対する一つ以上のアクセスリクエストを有してよい。例えば、複数のアクセスリクエストの送付である。この場合、シミュレーションレスポンスモジュール１６０は、ＣＰＵによって送付された複数のアクセスリクエストのそれぞれのメッセージ状態をモニターして、例えば、複数のアクセスリクエストのそれぞれをバッファーし、それぞれのアクセスリクエストに対するレスポンスメッセージを受け取ったかどうかをモニターし、プリセットトリガー条件が満たされている場合、レスポンスメッセージを受け取っていないアクセスリクエストの数量統計を集めて、複数のアクセスリクエストのうちでメッセージ状態が「未完了」であるアクセスリクエストの数量を得て、数量が第１閾値を超えている場合にはアクセスリクエストに対するシミュレーションレスポンスメッセージを獲得し、プロセッサに対してシミュレーションレスポンスメッセージを送付する。この実施例において、一つのアクセスリクエストだけがレスポンスメッセージの受信を欠いている場合、ＭＣＥリセットを実行するためにＣＰＵは必要とされない。事実、ＣＰＵには許容範囲があり、レスポンスメッセージのないアクセスリクエストの数量が所定の値に累積するまでは、ＭＣＥリセットを実行しない。つまり、この実施例では、第１閾値が設定されており、レスポンスメッセージを受け取っていないアクセスリクエストの数量が第１閾値を超えるまで、シミュレーションレスポンスモジュール１６０はＣＰＵに対してシミュレーションレスポンスメッセージを送付しない。それによって、ＭＣＥがＣＰＵをリセットするのを回避している。
【００４０】
シミュレーションレスポンスモジュール１６０は、ソフトウェア又はハードウェアの形式で実施されてよく、本発明の実施例においては、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）の形式で実施されてよい。
【００４１】
図１及び図２におけるＣＰＵは単なる例示である。例えば、ＣＰＵは、所定の集積回路であってもよい。ＣＰＵの形式にかかわらず、ＣＰＵは、コンピューターシステムにおいてプロセッサ機能を実施する。本発明の実施例におけるコンピューターシステムは、コンピュータータイプのサーバー、または、スイッチといったルート管理サーバーであってよい。本発明は、コンピューターシステムの特定の実施形式に限定されるものではない。
【００４２】
ＰＣＩｅエンドポイントデバイスのアクセスプロシージャ
以降では、ＰＣＩｅエンドポイントデバイスのアクセスプロシージャの実施例について説明する。図３は、本発明の実施例に従ったＰＣＩｅエンドポイントデバイスのアクセスプロシージャのフローチャートである。ＰＣＩｅエンドポイントデバイスは、ＰＣＩｅバスを通じてコンピューターシステムにアクセスする。プロシージャは、以下のステップを含んでいる。
【００４３】
Ｓ３０１：コンピューターシステムにおけるＣＰＵがＰＣＩｅエンドポイントデバイスに対してアクセスリクエストを送付した後で、アクセスリクエストのメッセージ状態をモニターする。
【００４４】
特定的には、アクセスリクエストのメッセージ状態は「完了」又は「未完了」を含んでいる。ここで、「完了」は、ＰＣＩｅエンドポイントデバイスがアクセスリクエストに対するレスポンスメッセージを送付したことを示しており、「未完了」は、ＰＣＩｅエンドポイントデバイスがアクセスリクエストに対するレスポンスメッセージを何ら送付していないことを示している。
【００４５】
シミュレーションレスポンスモジュールは、ＰＣＩｅエンドポイントデバイスからアクセスリクエストに対するレスポンスメッセージを受け取ったかどうかをモニターすることによってアクセスリクエストのメッセージ状態をモニターすることができる。シミュレーションレスポンスモジュールが。ＰＣＩｅエンドポイントデバイスからアクセスリクエストに対するレスポンスメッセージを受け取った場合に、シミュレーションレスポンスモジュールは、アクセスリクエストのメッセージ状態を「完了」として記録する。
【００４６】
さらに、シミュレーションレスポンスモジュールは、ＣＰＵとＰＣＩｅエンドポイントデバイスとの間の信号伝送パスに設定されてよい。このように、シミュレーションレスポンスモジュールは、ＣＰＵからのアクセスリクエストとＰＣＩｅエンドポイントデバイスからのアクセスリクエストに対するレスポンスメッセージの両方を受け取ることができる。シミュレーションレスポンスモジュールは、アクセスリクエストを受け取った後で、アクセスリクエストをバッファーする。続いて、アクセスリクエストに対するレスポンスメッセージを受け取った場合には、シミュレーションレスポンスモジュールはバッファーされたアクセスリクエストに対して「完了」フラグを付けるか、バッファーされたアクセスリクエストを削除する（この場合、アクセスリクエストに対するメッセージ状態は、アクセスリクエストがバッファーされているかどうかに応じてフラグ付けされる。アクセスリクエストがバッファーされている場合は、アクセスリクエストのメッセージ状態は「未完了」であり、バッファーされたアクセスリクエストが削除された場合は、アクセスリクエストのメッセージ状態は「完了」である。）
【００４７】
Ｓ３０２：シミュレーションレスポンスモジュールは、プリセットトリガー条件が満たされている場合に、アクセスリクエストのメッセージ状態を判断する。
【００４８】
プリセットトリガー条件は、アクセスリクエストのタイマーのタイムアウトであってよく、また、ＰＣＩｅエンドポイントデバイスが異常にオフラインになったことを示す通知を受け取ることでもよい。以降の実施例において、実施の仕方が詳細に説明される。
【００４９】
Ｓ３０３：シミュレーションレスポンスモジュールは、アクセスリクエストのメッセージ状態が「未完了」である場合に、アクセスリクエストに対するシミュレーションレスポンスメッセージを獲得する。
【００５０】
Ｓ３０４：ＣＰＵに対してシミュレーションレスポンスメッセージを送付する。
【００５１】
特に、シミュレーションレスポンスモジュールは、シミュレーションレスポンスモジュール自身によって生成されたアクセスリクエストに対するシミュレーションレスポンスメッセージを獲得してもよい。シミュレーションレスポンスメッセージ及びアクセスリクエストは、同一のメッセージヘッダーを有しており、アクセスリクエストはシミュレーションレスポンスメッセージに対応するものである。従って、ＣＰＵは以前に送付されたアクセスリクエストに対応するプロシージャを完了したものとみなして、アクセスリクエストのタイミングのためのタイマーをシャットダウンし、ＣＰＵによってバッファーされたアクセスリクエストをクリアする。これにより、ＣＰＵにおける通常オペレーションを保持して、ＣＰＵにおけるアクセスリクエストの累積から生じるＣＰＵのＭＣＥリセット問題を回避している。
【００５２】
本発明の実施例において、アクセスリクエストに対するシミュレーションレスポンスメッセージは、ＰＣＩｅエンドポイントデバイスによって送付されたものではなく、アクセスリクエストに対する実際のレスポンスメッセージではない。シミュレーション手段によって別のモジュールにより生成されたものでもよい。本発明の実施例において、アクセスリクエストに対するシミュレーションレスポンスメッセージは、シミュレーションレスポンスモジュールによって生成されてよい。シミュレーションレスポンスモジュールは、事前にアクセスリクエストに対するシミュレーションレスポンスメッセージを生成してよく、または、アクセスリクエストのメッセージ状態が「未完了」であると判断された場合、一時的に、アクセスリクエストに対するシミュレーションレスポンスメッセージを生成してもよい。
【００５３】
本発明の実施例において、シミュレーションレスポンスモジュールは、アクセスリクエストのメッセージ状態をモニターする。プリセットトリガー条件が満たされている場合、アクセスリクエストのメッセージ状態がまだ「未完了」であれば、シミュレーションレスポンスモジュールが、アクセスリクエストに対するシミュレーションレスポンスメッセージをＣＰＵに送付する。従って、ＣＰＵは、アクセスリクエストに対応するプロシージャが完了したかどうかを判断するためのタイミングを停止して、ローカルにバッファーされたアクセスリクエストをクリアする。それにより、ＣＰＵにおける通常処理を保持し、ＣＰＵにおけるアクセスリクエスト処理のタイムアウトから生じるＭＣＥのリセット問題を回避している。
【００５４】
図１又は図２において説明されたコンピューターシステムに関して、シミュレーションレスポンスモジュールがＣＰＵとＰＣＩｅエンドポイントデバイスとの間の信号伝送パスに設定されている場合について、本発明の実施例における所定のアクセスプロシージャが図４で説明されており、以下のものを含んでいる。
【００５５】
Ｓ４０１：コンピューターシステムにおけるＣＰＵはオペレーションインストラクションを獲得する。オペレーションインストラクションは、ＣＰＵに対してＰＣＩｅエンドポイントデバイスにアクセスするように命令するものであり、ＣＰＵはＰＣＩｅエンドポイントデバイスに対してアクセスリクエストを送付する。
【００５６】
上流のエンドポイントが、ＰＣＩｅエンドポイントデバイスに対する読み出しオペレーション要求又は書き込みオペレーション要求を生成する場合、上流のエンドポイントによってＰＣＩｅエンドポイントデバイスのドライバーモジュールが起動され、予め設定されたアクセスインストラクションに応じて、ＰＣＩｅエンドポイントデバイスにアクセスするためのオペレーションインストラクションを生成する。ＣＰＵは、オペレーションインストラクションを獲得する。
【００５７】
Ｓ４０２：シミュレーションレスポンスモジュールは、ＣＰＵからアクセスリクエストを受け取り、アクセスリクエストをバッファーする。
【００５８】
シミュレーションレスポンスモジュールは、ＣＰＵとＰＣＩｅエンドポイントデバイスとの間の信号伝送パスに設定され、ＣＰＵからのアクセスリクエストを取得することができる。
【００５９】
Ｓ４０３：シミュレーションレスポンスモジュールは、アクセスリクエストに対するシミュレーションレスポンスメッセージを生成して、アクセスリクエストに関連してシミュレーションレスポンスメッセージをバッファーする。
【００６０】
ステップ４０３において、シミュレーションレスポンスモジュールは、アクセスリクエストをバッファーする場合、事前にアクセスリクエストに対するシミュレーションレスポンスメッセージを生成してよく、または、シミュレーションレスポンスメッセージの必要性が判断された場合、後に続くステップにおいて、シミュレーションレスポンスメッセージを生成してよい。
【００６１】
Ｓ４０４：シミュレーションレスポンスモジュールは、ＰＣＩｅエンドポイントデバイスに対してアクセスリクエストを転送する。
【００６２】
Ｓ４０５：シミュレーションレスポンスモジュールは、アクセスリクエストのメッセージ状態をモニターする。
【００６３】
特に、シミュレーションレスポンスモジュールは、アクセスリクエストに対するレスポンスメッセージをＰＣＩｅエンドポイントデバイスから受け取ったかどうかをモニターする。シミュレーションレスポンスモジュールがアクセスリクエストに対するレスポンスメッセージをＰＣＩｅエンドポイントデバイスから受け取った場合、シミュレーションレスポンスモジュールは、バッファーされたアクセスリクエストに対して「完了」フラグを付け、または、シミュレーションレスポンスモジュールは、バッファーされたアクセスリクエストを削除する。
【００６４】
シミュレーションレスポンスモジュールは、ステップ４０４の後にモニターを開始してもよい。つまり、シミュレーションレスポンスモジュールが、ＰＣＩｅエンドポイントデバイスに対してアクセスリクエストを転送した後である。または、ステップ４０１の後にモニターを開始してもよい。つまり、ＣＰＵが、ＰＣＩｅエンドポイントデバイスに対してアクセスリクエストを転送した後である。
【００６５】
Ｓ４０６：シミュレーションレスポンスモジュールは、ＰＣＩｅエンドポイントデバイスが異常にオフラインとなったことを示す通知を受け取り、アクセスリクエストのメッセージ状態を判断する。
【００６６】
この実施例において、プリセットトリガー条件は、ＰＣＩｅエンドポイントデバイスが異常にオフラインになったことを示す通知を受け取ることである。シミュレーションレスポンスモジュールは、ＣＰＵとＰＣＩｅエンドポイントデバイスとの間の信号伝送パスに設定される。従って、ＰＣＩｅエンドポイントデバイスが取り外された場合、ＰＣＩｅエンドポイントデバイスが異常にオフラインになったことを示す通知が、ＣＰＵに転送されるものであるが、シミュレーションレスポンスモジュールを通じてパスされる。シミュレーションレスポンスモジュールは、ＰＣＩｅエンドポイントデバイスが異常にオフラインになったことを示す通知を受け取り、プリセットトリガー条件が満たされたものと判断して、アクセスリクエストのメッセージ状態を問い合わせ、メッセージ状態を判断する。
【００６７】
Ｓ４０７：シミュレーションレスポンスモジュールが、アクセスリクエストのメッセージ状態は「未完了」であると判断した場合、シミュレーションレスポンスモジュールは、ローカルにバッファーされたアクセスリクエストに対するレスポンスメッセージを獲得して、シミュレーションレスポンスメッセージをＣＰＵに送付する。
【００６８】
この実施例において、シミュレーションレスポンスメッセージは、ＰＣＩｅエンドポイントデバイス１３０がアクセスリクエストをサポートしていないことを示す第１タイプのシミュレーションレスポンスメッセージであってよく、例えば、シミュレーションレスポンスメッセージは、アンサポーテッドリクエスト（ＵＲ）指標を伝達する。もしくは、シミュレーションレスポンスメッセージは、ＰＣＩｅエンドポイントデバイス１３０が異常であることを示す第２タイプのシミュレーションレスポンスメッセージであってよく、例えば、シミュレーションレスポンスメッセージは、コンプリーターアボート（Ｃｏｍｐｌｅｔｅｒ  Ａｂｏｒｔ：ＣＡ）指標を伝達する。
【００６９】
Ｓ４０８：ＣＰＵは、シミュレーションレスポンスメッセージを受け取り、シミュレーションレスポンスメッセージに応じて、アクセスリクエストに対応するプロシージャが完了したと判断して、ローカルにバッファーされたアクセスリクエストをクリアする。
【００７０】
シミュレーションレスポンスメッセージ及びアクセスリクエストは、同一のメッセージヘッダーを有しており、アクセスリクエストはシミュレーションレスポンスメッセージに対応するものである。従って、ＣＰＵは以前に送付されたアクセスリクエストに対応するプロシージャを完了したものとみなして、アクセスリクエストのタイミングのためのタイマーをシャットダウンし、ＣＰＵによってバッファーされたアクセスリクエストをクリアする。これにより、ＣＰＵにおける通常オペレーションを保持して、ＣＰＵにおけるアクセスリクエストの累積から生じるＣＰＵのＭＣＥリセット問題を回避している。
【００７１】
さらに、シミュレーションレスポンスメッセージはＵＲ又はＣＡの指標を伝達するので、シミュレーションレスポンスモジュールは、さらに、シミュレーションレスポンスメッセージにおいて伝達された指標に応じて、ＰＣＩｅエンドポイントデバイスのアクセスの失敗を判断して、アクセスエラーに対処する。アクセスエラーの対処は、以下のものを含んでいる。ＣＰＵがアクセスリクエストに対する関連のオペレーション（データ読み出しといったもの）をさらに実行することを止め、または、異常なオフラインであるとしてＰＣＩｅエンドポイントデバイスの状態を記録し、それによって、ＣＰＵが続いてＰＣＩｅエンドポイントデバイスにアクセスすることを止める。
【００７２】
Ｓ４０９：  シミュレーションレスポンスモジュールは、ＰＣＩｅエンドポイントデバイスが異常にオフラインとなったことを示す通知をＣＰＵに転送する。
【００７３】
続いて、ＰＣＩｅエンドポイントデバイスが異常にオフラインとなったことを示す通知に応じて、ＣＰＵは、ＰＣＩｅエンドポイントデバイスに対応する物理的デバイスを電源オフし、関連のリソースを切り離すオペレーションを実行する。
【００７４】
本発明の実施例において、シミュレーションレスポンスモジュールは、アクセスリクエストのメッセージ状態をモニターする。アクセスされたＰＣＩｅエンドポイントデバイスが異常にオフラインとなったことを示す通知を受け取った場合、アクセスリクエストのメッセージ状態が未だに「未完了」であれば、シミュレーションレスポンスモジュールは、アクセスリクエストに対するシミュレーションレスポンスメッセージをＣＰＵに送付する。従って、ＣＰＵは、アクセスリクエストに対応するプロシージャが完了したかどうかを判断するためのタイムアウトの時間を計ることを止めて、それにより、ＣＰＵにおける通常オペレーションを保持して、ＣＰＵにおけるアクセスリクエストの処理のタイムアウトから生じるＣＰＵのＭＣＥリセット問題を回避している。本発明の実施例において、ＣＰＵとＰＣＩｅエンドポイントデバイスとの間の信号伝送パスにおいて、シミュレーションレスポンスモジュールは、アクセスリクエストに対するレスポンスメッセージをアクセスされたＰＣＩｅエンドポイントデバイスから受け取ったかどうかに応じて、アクセスリクエストのメッセージ状態をモニターすることができる。本実施例は、便利で、汎用性があり、非常に効率的なものである。
【００７５】
加えて、この実施例では、シミュレーションレスポンスメッセージのタイプがさらに区分される。それにより、シミュレーションレスポンスメッセージに応じてアクセスプロシージャの完了を確認する一方で、ＣＰＵは、さらに、アクセスが成功していないことを確認することができ、従って、関連するデータにアクセスする次のステップのオペレーション（例えば、読み出しオペレーション）を止める。それゆえ、ＰＣＩｅエンドポイントデバイスが異常にオフラインになる場合のシミュレーションにおいて、本発明の実施例は、ＣＰＵの通常オペレーションを保持し、ＣＰＵが不必要なオペレーションを実行することを避け、それによって、システムリソースの浪費を回避している。
【００７６】
本発明の第２の方法の実施例においても、シミュレーションレスポンスモジュールは、ＣＰＵとＰＣＩｅエンドポイントデバイスとの間の信号伝送パスに設定される。図５に示されるように、本方法は以下のものを含んでいる。
【００７７】
Ｓ５０１：コンピューターシステムにおけるＣＰＵはオペレーションインストラクションを獲得する。オペレーションインストラクションは、ＣＰＵに対してＰＣＩｅエンドポイントデバイスにアクセスするように命令するものであり、ＣＰＵはＰＣＩｅエンドポイントデバイスに対してアクセスリクエストを送付する。
【００７８】
Ｓ５０２：シミュレーションレスポンスモジュールは、ＣＰＵからアクセスリクエストを受け取り、アクセスリクエストをバッファーする。
【００７９】
シミュレーションレスポンスモジュールは、ＣＰＵとＰＣＩｅエンドポイントデバイスとの間の信号伝送パスに設定され、従って、ＣＰＵからのアクセスリクエストを取得することができる。
【００８０】
Ｓ５０３：シミュレーションレスポンスモジュールは、アクセスリクエストに対するタイマーをスタートさせ、タイミングを開始する。
【００８１】
Ｓ５０４：シミュレーションレスポンスモジュールは、アクセスリクエストに対するシミュレーションレスポンスメッセージを生成し、アクセスリクエストに関連するシミュレーションレスポンスメッセージをバッファーする。
【００８２】
ステップ５０３において、シミュレーションレスポンスモジュールは、アクセスリクエストをバッファーする場合、前もってアクセスリクエストに対するシミュレーションレスポンスメッセージを生成してよい。または、シミュレーションレスポンスメッセージが必要であると判断された場合、後続のステップにおいてシミュレーションレスポンスメッセージを生成してもよい。
【００８３】
ステップ５０３とステップ５０４との間の実施例命令は固定されていない。シミュレーションレスポンスモジュールは、アクセスリクエストを受け取った後でステップ５０３とステップ５０４を同時に実行してよいし、または、ステップ５０４を実行する前にステップ５０３を実行してもよい。
【００８４】
Ｓ５０５：シミュレーションレスポンスモジュールは、ＰＣＩｅエンドポイントデバイスに対してアクセスリクエストを転送する。
【００８５】
Ｓ５０６：シミュレーションレスポンスモジュールは、アクセスリクエストのメッセージ状態をモニターする。
【００８６】
特に、シミュレーションレスポンスモジュールは、アクセスリクエストに対するレスポンスメッセージをＰＣＩｅエンドポイントデバイスから受け取ったかどうかをモニターする。シミュレーションレスポンスモジュールがアクセスリクエストに対するレスポンスメッセージをＰＣＩｅエンドポイントデバイスから受け取った場合、シミュレーションレスポンスモジュールは、バッファーされたアクセスリクエストに対して「完了」フラグを付け、または、シミュレーションレスポンスモジュールは、バッファーされたアクセスリクエストを削除する。
【００８７】
Ｓ５０７：シミュレーションレスポンスモジュールは、タイマーのタイムアウトに際してアクセスリクエストのメッセージ状態を判断する。
【００８８】
この実施例において、プリセットトリガー条件は、アクセスリクエストのタイマーのタイムアウトである。タイマーのタイムアウト時間は、経験値に従って設定される。経験値は、ＰＣＩｅエンドポイントデバイスがアクセスリクエストに対するレスポンスメッセージを送付するための最大の許容時間である。一般的に、ＰＣＩｅエンドポイントデバイスが通常である場合、シミュレーションレスポンスモジュールは、経験値の時間内に、アクセスリクエストに対するレスポンスメッセージをＰＣＩｅエンドポイントデバイスから確実に受け取ることができる。
【００８９】
Ｓ５０８：シミュレーションレスポンスモジュールが、アクセスリクエストのメッセージ状態は「未完了」であると判断した場合、シミュレーションレスポンスモジュールは、ローカルにバッファーされたアクセスリクエストに対するレスポンスメッセージを獲得して、シミュレーションレスポンスメッセージをＣＰＵに送付する。
【００９０】
タイマーがタイムアウトすると、シミュレーションレスポンスモジュールは、アクセスリクエストのメッセージ状態を問い合わせる。メッセージ状態が「未完了」であると判断された場合、アクセスされたＰＣＩｅエンドポイントデバイスが異常にオフラインになったものと基本的に判断され、ＣＰＵは、アクセスリクエストに対するレスポンスメッセージを受け取ることができない。この場合、ＣＰＵによってバッファーされたアクセスリクエストのタイムアウトから生じるＭＣＥリセット問題を回避するために、シミュレーションレスポンスモジュールは、シミュレーションレスポンスメッセージを前もってＣＰＵに送付する。
【００９１】
この実施例において、シミュレーションレスポンスメッセージは、ＰＣＩｅエンドポイントデバイス１３０がアクセスリクエストをサポートしていないことを示す第１タイプのシミュレーションレスポンスメッセージであってよく、例えば、シミュレーションレスポンスメッセージは、アンサポーテッドリクエスト（ＵＲ）指標を伝達する。もしくは、シミュレーションレスポンスメッセージは、ＰＣＩｅエンドポイントデバイス１３０が異常であることを示す第２タイプのシミュレーションレスポンスメッセージであってよく、例えば、シミュレーションレスポンスメッセージは、コンプリーターアボート（ＣＡ）指標を伝達する。
【００９２】
Ｓ５０９：ＣＰＵは、シミュレーションレスポンスメッセージを受け取り、シミュレーションレスポンスメッセージに応じて、アクセスリクエストに対応するプロシージャが完了したかを判断して、ローカルにバッファーされたアクセスリクエストをクリアする。
【００９３】
シミュレーションレスポンスメッセージ及びアクセスリクエストは、同一のメッセージヘッダーを有しており、アクセスリクエストはシミュレーションレスポンスメッセージに対応するものである。従って、ＣＰＵは以前に送付されたアクセスリクエストに対応するプロシージャを完了したものとみなして、アクセスリクエストのタイミングのためのタイマーをシャットダウンし、ＣＰＵによってバッファーされたアクセスリクエストをクリアする。これにより、ＣＰＵにおける通常オペレーションを保持して、ＣＰＵにおけるアクセスリクエストの累積から生じるＣＰＵのＭＣＥリセット問題を回避している。
【００９４】
さらに、シミュレーションレスポンスメッセージはＵＲ又はＣＡを指標を伝達するので、シミュレーションレスポンスモジュールは、さらに、シミュレーションレスポンスメッセージにおいて伝達された指標に応じて、ＰＣＩｅエンドポイントデバイスのアクセスの失敗を判断して、アクセスエラーに対処する。アクセスエラーの対処は、以下のものを含んでいる。ＣＰＵがアクセスリクエストに対する関連のオペレーション（データ読み出しといったもの）をさらに実行することを止め、または、異常なオフラインであるとしてＰＣＩｅエンドポイントデバイスの状態を記録し、それによって、ＣＰＵが続いてＰＣＩｅエンドポイントデバイスにアクセスすることを止める。
【００９５】
Ｓ５１０：シミュレーションレスポンスモジュールは、ＰＣＩｅエンドポイントデバイスの状態を判断する。
【００９６】
シミュレーションレスポンスモジュールは、さらに、ＰＣＩｅエンドポイントデバイスの状態が「異常なオフライン」または「欠陥」であるかどうかを判断する。ＰＣＩｅエンドポイントデバイスが異常にオフラインとなった場合、ステップ５１１を実行する。もしくは、ＰＣＩｅエンドポイントデバイスが欠陥である場合、ステップ５１２が実行される。
【００９７】
シミュレーションレスポンスモジュールは、ＰＣＩｅエンドポイントデバイスが異常にオフラインとなったことを示す通知を受け取ったかどうかを判断する。ＰＣＩｅエンドポイントデバイスが異常にオフラインとなったかどうかは、通知を受け取ったかどうかで判断される。シミュレーションレスポンスモジュールは、また、ＰＣＩｅエンドポイントデバイスの状態を判断するために、ＰＣＩｅエンドポイントデバイスに対してプローブ（ｐｒｏｂｅ）メッセージを送付する。
【００９８】
Ｓ５１１：ＰＣＩｅエンドポイントデバイスが異常にオフラインとなったと判断された場合、シミュレーションレスポンスモジュールは、ＰＣＩｅエンドポイントデバイスが異常にオフラインとなったことを示す通知をＣＰＵに送付する。ＰＣＩｅエンドポイントデバイスが異常にオフラインとなったことを示す通知に応じて、ＣＰＵは、ＰＣＩｅエンドポイントデバイスに対応する物理的デバイスを電源オフし、リソースの切り離しオペレーションを実行する。
【００９９】
Ｓ５１２：ＰＣＩｅエンドポイントデバイスが欠陥であると判断された場合、シミュレーションレスポンスモジュールは、ＰＣＩｅエンドポイントデバイスの欠陥を除去する。
【０１００】
本発明の実施例において、シミュレーションレスポンスモジュールは、アクセスリクエストのメッセージ状態をモニターする。タイマーのタイムアウトに際して、アクセスリクエストのメッセージ状態が未だに「未完了」であれば、シミュレーションレスポンスモジュールは、アクセスリクエストに対するシミュレーションレスポンスメッセージをＣＰＵに送付する。従って、ＣＰＵは、アクセスリクエストに対応するプロシージャが完了したかどうかを判断するためのタイムアウトの時間を計ることを止めて、それにより、ＣＰＵにおける通常オペレーションを保持して、ＣＰＵにおけるアクセスリクエストの処理のタイムアウトから生じるＣＰＵのＭＣＥリセット問題を回避している。
【０１０１】
加えて、この実施例では、シミュレーションレスポンスメッセージのタイプがさらに区分される。それにより、シミュレーションレスポンスメッセージに応じてアクセスプロシージャの完了を確認する一方で、ＣＰＵは、さらに、アクセスが成功していないことを確認することができ、従って、関連するデータにアクセスする次のステップのオペレーション（例えば、読み出しオペレーション）を止める。それゆえ、ＰＣＩｅエンドポイントデバイスが異常にオフラインになる場合のシミュレーションにおいて、本発明の実施例は、ＣＰＵの通常オペレーションを保持し、ＣＰＵが不必要なオペレーションを実行することを避け、それによって、システムリソースの浪費を回避している。
【０１０２】
本発明に係る装置の実施例
本発明の実施例において提供されたシミュレーションレスポンス装置はコンピューターシステムに適用され、ＰＣＩｅエンドポイントデバイスがＰＣＩｅバスを通じてコンピューターシステムにアクセスする。図６に示されるように、装置は、ＰＣＩｅエンドポイントデバイス１３０及びＣＰＵ１１０とインタラクト（ｉｎｔｅｒａｃｔ）している。装置は、コンピューターの中のＣＰＵ１１０がアクセスリクエストをＰＣＩｅエンドポイントデバイスに対して送付した後で、アクセスリクエストのメッセージ状態をモニターするように構成されたモニターユニット６０１であり、アクセスリクエストのメッセージ状態は「完了」又は「未完了」から成り、「未完了」は、ＰＣＩｅエンドポイントデバイスがアクセスリクエストに対して何らレスポンスメッセージを送付していないことを示すモニターユニット６０１と；プリセットトリガー条件が満たされた場合にアクセスリクエストのメッセージ状態を判断するように構成された判断ユニット６０２と；アクセスリクエストのメッセージ状態が「未完了」であれば、アクセスリクエストに対するシミュレーションレスポンスメッセージを獲得するように構成された獲得ユニット６０３と；  アクセスリクエストに対するシミュレーションレスポンスメッセージをＣＰＵ１１０に対して送付するように構成されたレスポンスユニット６０４６０４と、を含む。
【０１０３】
図７に示すように、さらに、本発明の別の実施例に係る装置は、ＣＰＵ１１０によって送付されたアクセスリクエストを受け取るように構成されたインタラクトユニット６０５、を含み、モニターユニット６０１は、特に、インタラクトユニット６０５が、ＰＣＩｅエンドポイントデバイスによって送付されたアクセスリクエストに対するレスポンスメッセージを受け取るかどうかをモニターし、アクセスリクエストに対するレスポンスメッセージをＰＣＩｅエンドポイントデバイスから受け取った場合に、アクセスリクエストのメッセージ状態を「完了」として記録するするように構成されている。
【０１０４】
さらに、本発明の別の実施例に係る装置は、インタラクトユニット６０５が受け取ったアクセスリクエストをバッファーするように構成されており、モニターユニット６０１は、インタラクトユニット６０５が、ＰＣＩｅエンドポイントデバイスによって送付されたアクセスリクエストに対するレスポンスメッセージを受け取った場合に、バッファーされたアクセスリクエストに「完了」フラグを付けるか、または、バッファーされたアクセスリクエストを削除するように構成されており、判断ユニット６０２は、特に、プリセットトリガー条件が満たされた場合に、モニターユニット６０１によってバッファーされたアクセスリクエストを問い合わせ、バッファーされたアクセスリクエストのフラグが「完了」であるか又はバッファーされたアクセスリクエストが削除されていれば、アクセスリクエストのメッセージ状態は「完了」であると判断し、または、バッファーされたアクセスリクエストのフラグが「未完了」であるか又はバッファーされたアクセスリクエストに「完了」フラグが付いていなければ、アクセスリクエストのメッセージ状態は「未完了」であると判断するように構成されている。
【０１０５】
さらに、本発明の別の実施例に係る装置は、インタラクトユニット６０５がＣＰＵ１１０によって送付されたアクセスリクエストを受け取った後で、アクセスリクエストに対するシミュレーションメッセージを生成し、アクセスリクエストに対するシミュレーションレスポンスメッセージをバッファーするように構成されており、獲得ユニット６０３は、特に、モニターユニット６０１によってバッファーされたアクセスリクエストに対するシミュレーションレスポンスメッセージを獲得するように構成されている。
【０１０６】
さらに、本発明の別の実施例に係る装置において、アクセスリクエストに対するシミュレーションレスポンスメッセージは、第１タイプのシミュレーションレスポンスメッセージ又は第２タイプのシミュレーションレスポンスメッセージを含んでおり、第１タイプのシミュレーションレスポンスメッセージはＰＣＩｅエンドポイントデバイスがアクセスリクエストをサポートしていないことを示し、第２タイプのシミュレーションレスポンスメッセージはＰＣＩｅエンドポイントデバイスが異常であることを示しており、第１タイプのシミュレーションレスポンスメッセージ又は第２タイプのシミュレーションレスポンスメッセージは、ＰＣＩｅエンドポイントデバイスに対する後続のアクセスを止めるようにＣＰＵ１１０に命令するために使用される。
【０１０７】
さらに、本発明の別の実施例に係る装置において、プリセットトリガー条件は、ＰＣＩｅエンドポイントデバイスが異常にオフラインになることであり、モニターユニット６０１は、さらに、ＰＣＩｅエンドポイントデバイスが異常にオフラインになったかどうかをモニターし、ＰＣＩｅエンドポイントデバイスが異常にオフラインになったものと判断された場合に、アクセスリクエストのメッセージ状態の判断を実行するよう判断ユニット６０２に通知するように構成されている。
【０１０８】
さらに、本発明の別の実施例に係る装置において、モニターユニット６０１は、特に、ＰＣＩｅエンドポイントデバイスが異常にオフラインになったことを示す通知を受け取ったかどうかを判断し、通知を受け取った場合に、ＰＣＩｅエンドポイントデバイスが異常にオフラインになったものと判断するように構成されている。
【０１０９】
さらに、本発明の別の実施例に係る装置において、装置は、さらに、ＰＣＩｅエンドポイントデバイスが異常にオフラインになったことを示す通知をＣＰＵ１１０に転送するように構成されている。
【０１１０】
さらに、本発明の別の実施例に係る装置において、プリセットトリガー条件は、アクセスリクエストのタイマーのタイムアウトであり、モニターユニット６０１は、さらに、ＣＰＵ１１０によって送付されたアクセスリクエストの時間を計るタイマーをスタートし、タイマーのタイムアウトの際にアクセスリクエストのメッセージ状態の判断を実行するように判断ユニット６０２に通知するように構成されている。
【０１１１】
モニターユニット６０１は、さらに、ＰＣＩｅエンドポイントデバイスの状態を判断し、ＰＣＩｅエンドポイントデバイスの状態が異常なオフラインであると判断された場合に、ＰＣＩｅエンドポイントデバイスが異常にオフラインになることを示す通知をＣＰＵ１１０に対して送付するよう判断ユニット６０２に通知するように構成されている。
【０１１２】
さらに、本発明の別の実施例に係る装置において、ＣＰＵ１１０は、ＰＣＩｅエンドポイントデバイスに対して複数のアクセスリクエストを送付し、モニターユニット６０１は、特に、複数のアクセスリクエストのそれぞれのメッセージ状態をモニターするように構成され、判断ユニット６０２は、特に、プリセットトリガーイベント条件が満たされる場合に、複数のアクセスリクエストのうちでレスポンスメッセージを受け取っていないアクセスリクエストの数量統計を集めるように構成され、獲得ユニット６０３は、特に、数量が第１閾値を超えている場合には、アクセスリクエストに対するシミュレーションレスポンスメッセージを獲得するように構成されている。
【０１１３】
図８は、本発明の実施例に従ったコンピューターの構成ダイヤグラムである。本発明の実施例において、コンピューターは以下のものを含んでいる。プロセッサ８０１、メモリー８０２、システムバス８０４、および、コミュニケーションインターフェイス８０５．ここで、プロセッサ８０１、メモリー８０２、および、コミュニケーションインターフェイス８０５は、システムバス８０４を通じてお互いにコミュニケーションする。
【０１１４】
プロセッサ８０１は、シングルコア又はマルチコアの中央処理装置、または、集積回路、もしくは、本発明の実施例を実行するために構成された一つまたはそれ以上の集積回路であってよい。
【０１１５】
メモリー８０２は、高速ＲＡＭメモリー、または、不揮発性メモリーであってよい。例えば、少なくとも一つのディスクメモリーである。
【０１１６】
メモリー８０２は、コンピューターで実行可能なインストラクション８０３を保管するように構成されている。特に、コンピューターで実行可能なインストラクション８０３は、プログラムコードを含んでいる。
【０１１７】
コンピューターが動作しているとき、プロセッサ８０１は、コンピューターで実行可能なインストラクション８０３を実行して、図３から図５のいずれかにおいて説明された方法プロシージャを実施することができる。詳細について、これ以上、ここにおいて、繰り返すことはしない。
【０１１８】
当業者であれば、本発明のそれぞれの態様又はそれぞれの態様のあらゆる可能な実施形態は、システム、方法、または、コンピュータープログラムの形式において実施され得ることが理解されよう。従って、本発明のそれぞれの態様又はそれぞれの態様のあらゆる可能な実施形態は、全くのハードウェアの実施例の形式、または、全くのソフトウェアの実施例の形式（ファームウェア、駐在するソフトウェア、等を含む）、もしくは、ソフトウェアとハードウェアの組合せの実施例の形式であってよく、それらは、ここにおいて統一的に「回路」、「モジュール」、または、「システム」と呼ばれている。さらに、本発明のそれぞれの態様又はそれぞれの態様のあらゆる可能な実施形態は、コンピュータープログラムプロダクトの形式であってよく、ここで、コンピュータープログラムプロダクトは、コンピューターで読取り可能な媒体上に保管されたコンピューターで読取り可能なプログラムコードのことである。
【０１１９】
コンピューターで読取り可能な媒体は、コンピューターで読取り可能な信号媒体又はコンピューターで読取り可能なストレージ媒体であってよい。コンピューターで読取り可能なストレージ媒体は、これらに限定されるわけではないが、以下のものを含んでいる。電気的、磁気的、光学的、電磁気的、赤外線、又は半導体のシステム、デバイス、または、装置、もしくは、これらの好適なあらゆる組み合わせであり、ランダムアクセスメモリー（ＲＡＭ）、読み出し専用メモリー（ＲＯＭ）、消去可能でプログラム可能な読み出し専用メモリー（ＥＰＲＯＭ又はフラッシュメモリー）、光ファイバー、および、ポータブル読み出し専用メモリー（ＣＤ−ＲＯＭ）といったものである。
【０１２０】
コンピューターの中のプロセッサは、コンピューターで読取り可能な媒体に保管されたコンピューターで読取り可能なプログラムコードを読み出す。それにより、プロセッサは、それぞれのステップで規定された機能アクション、または、フローチャートの中のステップの組合せを実行することができる。そして、それぞれのブロック又はブロックダイヤグラムのブロックの組合せにおいて規定された機能アクションを実行するための装置を生成することができる。
【０１２１】
コンピューターで読取り可能なプログラムコードは、ユーザーのコンピューター上で全て実行されるか、ユーザーのコンピューター上で部分的に実行されるか、分離したソフトウェアパッケージとして実行されるか、ユーザーのコンピューター上で部分的に実行されて離れたコンピューター上で部分的に実行されるか、もしくは、離れたコンピューター又はサーバー上で全て実行されてよい。いくつかの代替的な実施例において、フローチャートにおけるステップ、または、ブロックダイヤグラムのそれぞれのブロックで規定された機能は、図において規定された順序の代わりに異なる順序で生じ得ることに留意すべきである。例えば、包含された機能に依存して、２つのステップが連続して示されていても、２つのブロックが実際にはほとんど同時に実行されてよく、または、時には逆の順序でブロックが実行されてもよい。
【０１２２】
当業者であれば、本明細書で開示された実施例において説明された例示の組合せにおいて、ユニットとアルゴリズムステップは、電気的ハードウェア、または、コンピューターソフトウェアと電気的ハードウェアとの組み合わせによって実施されてよいことに気付くであろう。機能がハードウェア又はソフトウェアのどちらによって実行されるかは、所定のアプリケーション及び技術的ソリューションのデザイン制約条件に依るものである。当業者であれば、それぞれの所定のアプリケーションに対して説明された機能を実施するために異なる方法を使用し得るが、その実施が本発明の範囲を超えるものと考えられるべきではない。
【０１２３】
上述の記載は、単に本発明の特定の実施例を説明するものであり、本発明の保護範囲を限定することを意図するものではない。本発明において開示された技術的範囲内で当業者によって容易に把握されるあらゆるバリエーション又は置き換えは、本発明の保護範囲の中にあるものである。従って、本発明の保護範囲は、特許請求の範囲の保護範囲を前提とすべきものである。
【図１】
0005932146.tif 000002
【図２】
0005932146.tif 000003
【図３】
0005932146.tif 000004
【図４】
0005932146.tif 000005
【図５】
0005932146.tif 000006
【図６】
0005932146.tif 000007
【図７】
0005932146.tif 000008
【図８】
0005932146.tif 000009