(57)【特許請求の範囲】
【請求項１】
演算処理を行う演算処理装置が他の装置と行う通信を制御する制御装置と該演算処理装置とを有する情報処理装置において、
前記制御装置は、
前記通信におけるエラーの発生を通知する前記演算処理装置への割込みの生成による設定と前記演算処理装置の指示に基づく解除とが行われるマスク制御を行うマスク制御部と、
前記エラーが発生すると前記マスク制御部によるマスク制御に基づいて前記演算処理装置への割込みを生成する割込み生成部と、
前記マスク制御部により前記割込み生成部の割込み生成がマスクされている間に発生する複数の前記エラーの数をカウントするカウント部と、
前記演算処理装置の指示に基づいて前記カウント部によりカウントされた数を読出して前記演算処理装置に送信する読出し部と、
を有し、
前記制御装置は、前記演算処理装置と通信する複数の他の装置とそれぞれ対応付けられる複数の前記マスク制御部と複数の前記カウント部とを有し、
前記割込み生成部は、前記複数の他の装置のいずれかとの通信にエラーが発生すると前記演算処理装置への割込みを生成し、
前記制御装置は、前記割込み生成部による割込みの生成が行われた際に前記エラーに対応付けられたカウント部によりカウントされた数が書込まれることで複数のカウント部で共有されるバッファをさらに有し、
前記読出し部は、前記エラーに対応付けられたカウント部によりカウントされた数を前記バッファから読出す
ことを特徴とする情報処理装置。
【請求項２】
演算処理を行う演算処理装置が他の装置と行う通信を制御する制御装置と該演算処理装置とを有する情報処理装置において、
前記制御装置は、
前記通信におけるエラーの発生を通知する前記演算処理装置への割込みの生成による設定と前記演算処理装置の指示に基づく解除とが行われるマスク制御を行うマスク制御部と、
前記エラーが発生すると前記マスク制御部によるマスク制御に基づいて前記演算処理装置への割込みを生成する割込み生成部と、
前記マスク制御部により前記割込み生成部の割込み生成がマスクされている間に発生する複数の前記エラーの数をカウントするカウント部と、
前記演算処理装置の指示に基づいて前記カウント部によりカウントされた数を読出して前記演算処理装置に送信する読出し部と、
を有し、
前記制御装置は、前記演算処理装置と通信する複数の他の装置とそれぞれ対応付けられる複数の前記マスク制御部と複数の前記カウント部とを有し、
前記割込み生成部は、前記複数の他の装置のいずれかとの通信にエラーが発生すると前記演算処理装置への割込みを生成し、
前記割込み生成部による割込みの生成が行われた際に前記エラーに対応付けられたカウント部によりカウントされた数が書込まれることで複数のカウント部で共有されるバッファが確保される主記憶装置をさらに有し、
前記演算処理装置は、前記エラーに対応付けられたカウント部によりカウントされた数を前記主記憶装置に確保されたバッファから読出すことを特徴とする情報処理装置。
【請求項３】
前記マスク制御部は、前記カウント部によりカウントされた数が前記読出し部により読出された後、前記演算処理装置の指示に基づいて前記マスク制御を解除することを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記制御装置は、
所定の時間内に前記他の装置との通信に発生する１つ以上のエラーを１つのエラーとして処理するエラー制御部をさらに有し、
前記割込み生成部は、前記エラー制御部により１つのエラーとして処理されたエラーが発生すると前記マスク制御部によるマスク制御に基づいて前記演算処理装置への割込みを生成することを特徴とする請求項１又は２記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関する。
【背景技術】
【０００２】
ＣＰＵ（Central  Processing  Unit）等の演算処理装置を他の装置に接続するインタフェース装置は、エラーが発生すると演算処理装置に対する割込みでエラーの発生を通知する。例えば、ＰＣＩ  Ｅｘｐｒｅｓｓ（以下、「ＰＣＩｅ」と記載）では、ＰＣＩｅバスに関するエラーはエラーメッセージによりルートコンプレックスへ通知され、ルートコンプレックスはエラーメッセージを受信すると演算処理装置に割込みでエラーの発生を通知する。ここで、ルートコンプレックスは、ＰＣＩｅにおいて、ツリー状に接続される複数のデバイスのうち頂点のデバイスであり、演算処理装置と接続される。
【０００３】
演算処理装置で動作するＯＳ（Operating  System）のエラー処理部は、保守員等による異常個所の判断を可能とするために、エラーの検出デバイスやエラー種別を表示又はロッギングする。エラー処理部は、ＰＣＩｅバスに接続される複数のデバイスそれぞれで検出されるエラーを適切に処理することが要求される。
【０００４】
なお、エラー処理については、エラーの発生回数をカウントし、エラー発生回数が予め設定された閾値に達した時点で診断装置へ通知することで、エラー多発によるエラー処理負荷を軽減する従来技術がある。
【０００５】
ＰＣＩｅにおいても、エラーをカウンタ回路でカウントし、ユーザにより設定可能な回数のエラーが発生した場合に割込み通知を行うことで、システムに適した柔軟なエラー検出を可能とする従来技術がある。また、割込みの発生時に周期的な割込みかエラー割込みであるかを判定し、周期的な割込みの場合にエラーの履歴情報を記憶し、エラー割込み時にエラーの被疑箇所を特定することで、作業者に短時間で故障個所を把握させる従来技術がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−１７０４６２号公報
【特許文献２】特開２００９−１４０２４６号公報
【特許文献３】国際公開第２０１２／０６３３５８号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ルートコンプレックスは、複数のデバイスからのエラーメッセージを一度に受信したり、また一時的なノイズ等により、エラーが多発し、１つもしくは複数のデバイスから瞬間的に多数のエラーメッセージを受信することもある。例えば、１レーンあたりの伝送速度を８Ｇ（ギガ）ビット／秒とし、８レーンでリンクを形成する場合、ＰＣＩｅは、６４Ｇビット／秒の伝送性能を持つ。１個のパケットサイズは大きく見積もっても６００バイト程度であるので、ＰＣＩｅは、１秒で１０，０００，０００個以上のパケットを通信することが可能である。この１／１００のパケットが一時的なノイズ等でエラーとなった場合でも、１秒に１００，０００個のエラーメッセージがルートコンプレックスに送信される可能性がある。
【０００８】
エラー処理部がこれらを１つ１つ処理することは不可能であり、また可能であったとしてもエラー処理部の処理負荷が高くなり、他の処理に影響を与えるという問題がある。エラー発生回数が予め設定された閾値に達した時点で割込む従来技術でも、閾値の設定が困難である。
【０００９】
本発明は、１つの側面では、インタフェース装置のエラーに対する演算処理装置の処理が他の処理に影響を与えることを防ぐことを目的とする。
【課題を解決するための手段】
【００１０】
本願の開示する情報処理装置は、１つの態様において、演算処理を行う演算処理装置が他の装置と行う通信を制御する制御装置と該演算処理装置とを有する。そして、前記制御装置は、前記通信におけるエラーの発生を通知する前記演算処理装置への割込みの生成による設定と前記演算処理装置の指示に基づく解除とが行われるマスク制御を行うマスク制御部を有する。また、前記制御装置は、前記エラーが発生すると前記マスク制御部によるマスク制御に基づいて前記演算処理装置への割込みを生成する割込み生成部を有する。また、前記制御装置は、前記マスク制御部により前記割込み生成部の割込み生成がマスクされている間に発生する複数の前記エラーの数をカウントするカウント部を有する。また、前記制御装置は、前記演算処理装置の指示に基づいて前記カウント部によりカウントされた数を読出して前記演算処理装置に送信する読出し部を有する。そして、前記制御装置は、前記演算処理装置と通信する複数の他の装置とそれぞれ対応付けられる複数の前記マスク制御部と複数の前記カウント部とを有する。そして、前記割込み生成部は、前記複数の他の装置のいずれかとの通信にエラーが発生すると前記演算処理装置への割込みを生成する。そして、前記制御装置は、前記割込み生成部による割込みの生成が行われた際に前記エラーに対応付けられたカウント部によりカウントされた数が書込まれることで複数のカウント部で共有されるバッファをさらに有する。そして、前記読出し部は、前記エラーに対応付けられたカウント部によりカウントされた数を前記バッファから読出す。また、本願の開示する情報処理装置は、１つの態様において、演算処理を行う演算処理装置が他の装置と行う通信を制御する制御装置と該演算処理装置とを有する。そして、前記制御装置は、前記通信におけるエラーの発生を通知する前記演算処理装置への割込みの生成による設定と前記演算処理装置の指示に基づく解除とが行われるマスク制御を行うマスク制御部を有する。また、前記制御装置は、前記エラーが発生すると前記マスク制御部によるマスク制御に基づいて前記演算処理装置への割込みを生成する割込み生成部を有する。また、前記制御装置は、前記マスク制御部により前記割込み生成部の割込み生成がマスクされている間に発生する複数の前記エラーの数をカウントするカウント部を有する。また、前記制御装置は、前記演算処理装置の指示に基づいて前記カウント部によりカウントされた数を読出して前記演算処理装置に送信する読出し部を有する。そして、前記制御装置は、前記演算処理装置と通信する複数の他の装置とそれぞれ対応付けられる複数の前記マスク制御部と複数の前記カウント部とを有する。そして、前記割込み生成部は、前記複数の他の装置のいずれかとの通信にエラーが発生すると前記演算処理装置への割込みを生成する。そして、前記情報処理装置は、前記割込み生成部による割込みの生成が行われた際に前記エラーに対応付けられたカウント部によりカウントされた数が書込まれることで複数のカウント部で共有されるバッファが確保される主記憶装置をさらに有する。そして、前記演算処理装置は、前記エラーに対応付けられたカウント部によりカウントされた数を前記主記憶装置に確保されたバッファから読出す。
【発明の効果】
【００１１】
１実施態様によれば、インタフェース装置のエラーに対する演算処理装置の処理が他の処理に影響を与えることを防ぐことができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係る情報処理装置の構成を示すブロック図である。
【図２】図２は、割込み回路による割込み処理のフローを示すフローチャートである。
【図３】図３は、割込み回路がエラーレベル毎に割込みを発生する場合の割込み処理のフローを示すフローチャートである。
【図４】図４は、エラー処理部によるエラー処理のフローを示すフローチャートである。
【図５】図５は、割込み回路によるリクエスト処理のフローを示すフローチャートである。
【図６】図６は、複数のデバイスがルートコンプレックスに接続される場合の割込み回路の構成を示すブロック図である。
【図７】図７は、複数のデバイスがルートコンプレックスに接続される場合の割込み回路による割込み処理のフローを示すフローチャートである。
【図８】図８は、デバイス間で一部の回路を共有する割込み回路の構成を示すブロック図である。
【図９】図９は、実施例３に係る割込み回路の構成を示すブロック図である。
【発明を実施するための形態】
【００１３】
以下に、本願の開示する情報処理装置の実施例を図面に基づいて詳細に説明する。なお、実施例は開示の技術を限定するものではない。
【実施例１】
【００１４】
まず、実施例１に係る情報処理装置の構成について説明する。図１は、実施例１に係る情報処理装置の構成を示すブロック図である。図１に示すように、実施例１に係る情報処理装置１０は、ルートコンプレックス１と、エンドポイント２と、ＣＰＵ（Central  Processing  Unit）３とを有する。
【００１５】
ルートコンプレックス１は、ツリー状に接続される複数のＰＣＩデバイスのうち頂点のデバイスであり、ＣＰＵ３と接続される。エンドポイント２は、ＰＣＩデバイスである。エンドポイント２は、ＰＣＩｅバス上のエラーを検出すると、ルートコンプレックス１にエラーメッセージのパケットを送信する。ＣＰＵ３は、演算処理を行う装置である。ＣＰＵ３ではＯＳ（Operating  System）３１が動作し、ＯＳ３１にはＰＣＩｅのエラーを処理するエラー処理部３２が含まれる。
【００１６】
ルートコンプレックス１は、受信回路４と通信回路５とを有する。受信回路４は、エンドポイント２から送信されるパケットを受信する回路である。通信回路５は、ＣＰＵ３とのインタフェース回路である。
【００１７】
受信回路４は、エラー判定部１１と、パケット種別判定部１２と、割込み回路２０とを有する。エラー判定部１１は、ＰＣＩｅバス上にエラーを検出すると、割込み回路２０にエラーを通知する。また、エラー判定部１１は、エンドポイント２が送信したパケットを受信すると、パケットをパケット種別判定部１２に渡す。
【００１８】
パケット種別判定部１２は、パケットが通常パケットかエラーメッセージのパケットかを判定し、通常パケットの場合には、通常パケットを通信回路５を介してＣＰＵ３に送信し、エラーメッセージのパケットの場合には割込み回路２０にエラーを通知する。
【００１９】
割込み回路２０は、エラーを通知されると、通信回路５を介してＣＰＵ３に割込みを発生する。割込み回路２０は、割込み生成部２１と、マスク制御部２２と、ＯＲ回路２３と、ＡＮＤ回路２４と、カウンタ２５と、読出し回路２６と、リセット回路２７とを有する。
【００２０】
割込み生成部２１は、ＣＰＵ３への割込みを生成する。マスク制御部２２は、割込み生成部２１をマスク制御する。マスク制御部２２によるマスクは、割込み生成部２１により割込みが生成されると設定され、エラー処理部３２の指示に基づいて解除される。
【００２１】
ＯＲ回路２３は、エラー判定部１１からのエラー通知とパケット種別判定部１２からのエラー通知との論理和をとり、結果をＡＮＤ回路２４及びカウンタ２５に出力する。ＡＮＤ回路２４は、マスク制御部２２のマスク出力の否定とＯＲ回路２３との論理積をとり、結果を割込み生成部２１及びマスク制御部２２に出力する。すなわち、エラー判定部１１からのエラー通知又はパケット種別判定部１２からのエラー通知があり、マスク制御部２２のマスクが設定されていない場合に、割込み生成部２１による割込み生成が行われ、マスク制御部２２のマスク設定が行われる。
【００２２】
カウンタ２５は、ＯＲ回路２３の出力が１であるとカウンタ値を１増加する。カウンタ２５は、リセット回路２７によりリセットされる。読出し回路２６は、エラー処理部３２の指示に基づいてカウンタ２５の値を読出し、読出した値をエラー処理部３２に渡す。リセット回路２７は、エラー処理部３２の指示に基づいてカウンタ２５をリセットする。
【００２３】
エラー処理部３２は、割込みによりエラー通知を受け取ると、エラーに関する情報を表示装置に表示する、あるいは、エラーに関する情報をロギングする。エラーに関する情報には、エラーのレベル、エラーが発生したデバイスの情報が含まれる。エラー処理部３２は、エラーに関する情報を、エラー通知から取得してもよいし、バッファ等から取得してもよい。ＰＣＩｅがＡＥＲ（Advanced  Error  Reporting）機能を有する場合には、エラー処理部３２は、ＡＥＲステータスレジスタの内容を表示又はロギングしてもよい。
【００２４】
また、エラー処理部３２は、割込みによりエラー通知を受け取ると、ルートコンプレックス１に対してカウンタ２５の読出し、カウンタ２５のリセットを指示する。また、エラー処理部３２は、次のエラーに対する処理が行えるタイミングでルートコンプレックス１に対してマスクの解除を指示する。
【００２５】
次に、割込み回路２０による割込み処理のフローについて説明する。図２は、割込み回路２０による割込み処理のフローを示すフローチャートである。図２に示すように、割込み回路２０は、エラーメッセージを受信したか否かを判定し（ステップＳ１）、エラーメッセージを受信していない場合には、エラーメッセージを受信したか否かの判定を繰り返す。
【００２６】
一方、エラーメッセージを受信した場合には、割込み回路２０は、カウンタ２５に１を加え（ステップＳ２）、割込み生成がマスクされているか否かを判定し（ステップＳ３）、マスクされている場合には、ステップＳ１に戻る。一方、マスクされていない場合には、割込み回路２０は、ＣＰＵ３に対して割込みを発行し（ステップＳ４）、割込みマスクを設定する（ステップＳ５）。
【００２７】
このように、割込み回路２０は、割込み生成をマスクすることによって、ＣＰＵ３に対する割込みの発生を減らし、エラー処理部３２による処理負荷を軽減することができる。
【００２８】
なお、図１に示した受信回路４は全てのエラーを同様に扱うが、ＰＣＩｅのエラーには、訂正可能なエラーであるＣＥ（Correctable  Error）と、訂正不能な重篤なエラーであるＦＥ（Fatal  Error）と、訂正不能な軽微なエラーであるＮＦＥ（Non-FE）とがある。したがって、エラーレベル毎に割込みを発生させることが考えられる。そこで、割込み回路２０がエラーレベル毎に割込みを発生する場合について説明する。
【００２９】
図３は、割込み回路２０がエラーレベル毎に割込みを発生する場合の割込み処理のフローを示すフローチャートである。なお、割込み回路２０は、ＣＥ割込み、ＦＥ割込み及びＮＦＥ割込みをそれぞれ生成するＣＥ割込み生成部、ＦＥ割込み生成部及びＮＦＥ割込み生成部を有する。また、割込み回路２０は、ＣＥ割込み、ＦＥ割込み及びＮＦＥ割込みをそれぞれマスクするＣＥマスク制御部、ＦＥマスク制御部及びＮＦＥマスク制御部を有する。また、割込み回路２０は、マスク設定中のＣＥ、ＦＥ及びＮＦＥの数をそれぞれ数えるＣＥカウンタ、ＦＥカウンタ及びＮＦＥカウンタを有する。
【００３０】
図３に示すように、割込み回路２０は、エラーメッセージを受信したか否かを判定し（ステップＳ１１）、エラーメッセージを受信していない場合には、エラーメッセージを受信したか否かの判定を繰り返す。
【００３１】
一方、エラーメッセージを受信した場合には、割込み回路２０は、エラーメッセージがＣＥに関するメッセージであるか否かを判定し（ステップＳ１２）、ＣＥに関するメッセージである場合には、ＣＥカウンタに１を加える（ステップＳ１３）。そして、割込み回路２０は、ＣＥマスクか否かすなわちＣＥの割込み生成がマスクされているか否かを判定し（ステップＳ１４）、ＣＥマスクされている場合には、ステップＳ１１に戻る。一方、ＣＥマスクされていない場合には、割込み回路２０は、ＣＰＵ３に対してＣＥ割込みを発行し（ステップＳ１５）、ＣＥ割込みマスクを設定する（ステップＳ１６）。
【００３２】
一方、エラーメッセージがＣＥに関するメッセージでない場合には、割込み回路２０は、エラーメッセージがＮＦＥに関するメッセージであるか否かを判定する（ステップＳ１７）。そして、割込み回路２０は、ＮＦＥに関するメッセージである場合には、ＮＦＥカウンタに１を加え（ステップＳ１８）、ＮＦＥマスクか否かすなわちＮＦＥの割込み生成がマスクされているか否かを判定する（ステップＳ１９）。そして、割込み回路２０は、ＮＦＥマスクされている場合には、ステップＳ１１に戻る。一方、ＮＦＥマスクされていない場合には、割込み回路２０は、ＣＰＵ３に対してＮＦＥ割込みを発行し（ステップＳ２０）、ＮＦＥ割込みマスクを設定する（ステップＳ２１）。
【００３３】
一方、エラーメッセージがＮＦＥに関するメッセージでない場合には、割込み回路２０は、ＦＥカウンタに１を加え（ステップＳ２２）、ＦＥマスクか否かすなわちＦＥの割込み生成がマスクされているか否かを判定する（ステップＳ２３）。そして、割込み回路２０は、ＦＥマスクされている場合には、ステップＳ１１に戻る。一方、ＦＥマスクされていない場合には、割込み回路２０は、ＣＰＵ３に対してＦＥ割込みを発行し（ステップＳ２４）、ＦＥ割込みマスクを設定する（ステップＳ２５）。
【００３４】
このように、割込み回路２０がエラーレベル毎に割込みを生成することによって、エラー処理部３２はエラーレベルの表示、エラーレベルに応じたエラー処理等を行うことができる。
【００３５】
次に、エラー処理部３２によるエラー処理のフローについて説明する。図４は、エラー処理部３２によるエラー処理のフローを示すフローチャートである。なお、図４では、エラー処理部３２はエラーレベル毎の割込みを受信する。
【００３６】
図４に示すように、エラー処理部３２は、割込みを受信したか否かを判定し（ステップＳ３１）、割込みを受信していない場合には、割込みを受信したか否かの判定を繰り返す。一方、割込みを受信した場合には、エラー処理部３２は、割込みがＰＣＩｅエラーのＣＥであるか否かを判定し（ステップＳ３２）、ＣＥである場合には、ＣＥカウンタを読出し、ＣＥカウンタをリセットし、ＣＥ割込みマスクを解除する（ステップＳ３３）。そして、エラー処理部３２は、エラー内容を表示又はロギングし（ステップＳ３９）、ステップＳ３１に戻る。
【００３７】
一方、割込みがＰＣＩｅエラーのＣＥでない場合には、エラー処理部３２は、ＮＦＥであるか否かを判定し（ステップＳ３４）、ＮＦＥである場合には、ＮＦＥカウンタを読出し、ＮＦＥカウンタをリセットし、ＮＦＥ割込みマスクを解除する（ステップＳ３５）。そして、エラー処理部３２は、エラー内容を表示又はロギングし（ステップＳ３９）、ステップＳ３１に戻る。
【００３８】
一方、割込みがＰＣＩｅエラーのＮＦＥでない場合には、エラー処理部３２は、ＦＥであるか否かを判定し（ステップＳ３６）、ＦＥである場合には、ＦＥカウンタを読出し、ＦＥカウンタをリセットし、ＦＥ割込みマスクを解除する（ステップＳ３７）。そして、エラー処理部３２は、エラー内容を表示又はロギングし（ステップＳ３９）、ステップＳ３１に戻る。一方、割込みがＰＣＩｅエラーのＦＥでない場合には、エラー処理部３２は、ＰＣＩｅエラー以外の割込み処理を行い（ステップＳ３８）、ステップＳ３１に戻る。
【００３９】
このように、エラー処理部３２が、割込みマスクを解除することによって、割込み生成部２１は、ＣＰＵ３の他の処理に影響を与えない範囲で、新たに割込みを生成することができる。
【００４０】
次に、割込み回路２０によるリクエスト処理のフローについて説明する。ここで、リクエスト処理とは、エラー処理部３２からのカウンタ読出し、カウンタリセット及びマスク解除等のリクエストの処理である。
【００４１】
図５は、割込み回路２０によるリクエスト処理のフローを示すフローチャートである。図５に示すように、割込み回路２０は、エラー処理部３２からリクエストを受信したか否かを判定し（ステップＳ４１）、リクエストを受信していない場合には、リクエストを受信したか否かの判定を繰り返す。
【００４２】
一方、リクエストを受信した場合には、割込み回路２０は、カウンタ読出しリクエストであるか否かを判定し（ステップＳ４２）、カウンタ読出しリクエストである場合には、カウンタ値をＣＰＵ３に送信し（ステップＳ４３）、ステップＳ４１に戻る。
【００４３】
一方、カウンタ読出しリクエストでない場合には、割込み回路２０は、カウンタリセットリクエストであるか否かを判定し（ステップＳ４４）、カウンタリセットリクエストである場合には、カウンタをリセットし（ステップＳ４５）、ステップＳ４１に戻る。
【００４４】
一方、カウンタリセットリクエストでない場合には、割込み回路２０は、マスク解除リクエストであるか否かを判定し（ステップＳ４６）、マスク解除リクエストである場合には、マスクを解除し（ステップＳ４７）、ステップＳ４１に戻る。一方、マスク解除リクエストでない場合には、割込み回路２０は、他のリクエスト処理を行い（ステップＳ４８）、ステップＳ４１に戻る。
【００４５】
このように、割込み回路２０がエラー処理部３２からのリクエストに基づいてマスク解除を行うことによって、割込み生成部２１は、新たに割込みを生成することができる。
【００４６】
なお、図１に示した受信回路４では、１つのデバイスがルートコンプレックス１に接続されるが、複数のデバイスがルートコンプレックスに接続される場合もある。図６は、複数のデバイスがルートコンプレックス１ａに接続される場合の割込み回路２０ａの構成を示すブロック図である。ここでは説明の便宜上、図１に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
【００４７】
図６に示すように、ルートコンプレックス１ａは、受信回路４ａと通信回路５ａとを有する。受信回路４ａは、複数のデバイスからパケットを受信し、エラー判定部１１と、パケット種別判定部１２と、割込み回路２０ａとを有する。割込み回路２０ａは、割込み生成部２１、マスク制御部２２、ＡＮＤ回路２４ａ、カウンタ２５ａ、読出し回路２６及びリセット回路２７をデバイスの数だけ有し、ＯＲ回路２３ａとデマルチプレクサ２８ａを１つ有する。なお、図６は、２個のデバイス分の割込み回路２０ａの詳細を示す。
【００４８】
ＯＲ回路２３ａは、エラー判定部１１からのエラー通知とパケット種別判定部１２からのエラー通知との論理和をとり、結果をデマルチプレクサ２８ａに出力する。デマルチプレクサ２８ａは、各デバイスに対応するＡＮＤ回路２４ａとカウンタ２５ａにエラー通知を出力する。各デバイスに対応するＡＮＤ回路２４ａは、対応するマスク制御部２２の出力の否定とデマルチプレクサ２８ａの出力の論理積をとり、結果を対応する割込み生成部２１及び対応するマスク制御部２２に出力する。各デバイスに対応するカウンタ２５ａは、デマルチプレクサ２８ａから各デバイスに対応するエラー通知を受け取ると値を１増加させる。
【００４９】
通信回路５ａは、各デバイスに対応する割込み生成部２１、各デバイスに対応するマスク制御部２２、読出し回路２６及びリセット回路２７と、ＣＰＵ３との通信を中継する。ＯＳ３１は、エラー処理部３２ａを有し、エラー処理部３２ａは、複数のデバイスにより検出されたエラーを処理する。
【００５０】
図７は、複数のデバイスがルートコンプレックス１ａに接続される場合の割込み回路２０ａによる割込み処理のフローを示すフローチャートである。なお、図７は、割込み回路２０ａがデバイス毎エラーレベル毎に割込みを発生する場合を示す。
【００５１】
図７に示すように、割込み回路２０ａは、エラーメッセージを受信したか否かを判定し（ステップＳ５１）、エラーメッセージを受信していない場合には、エラーメッセージを受信したか否かの判定を繰り返す。
【００５２】
一方、エラーメッセージを受信した場合には、割込み回路２０ａは、エラーメッセージがＢＤＦ＝００００に関するメッセージであるか否かを判定する（ステップＳ５２）。ここで、ＢＤＦとは、デバイスを識別する識別番号であり、Ｂｕｓ／Ｄｅｖｉｃｅ／Ｆｕｎｃｔｉｏｎ（バス／デバイス／ファンクション）番号である。１つのデバイスは複数のファンクションを有する場合もあるが、ここでは、各デバイスは１つのファンクションを有するものとする。
【００５３】
割込み回路２０ａは、エラーメッセージがＢＤＦ＝００００に関するメッセージでない場合には、ＢＤＦ＝０００１に関するメッセージであるか否かを判定する（ステップＳ６７）。そして、割込み回路２０ａは、エラーメッセージがＢＤＦ＝０００１に関するメッセージでない場合には、ＢＤＦ＝０００２に関するメッセージであるか否かを判定する（ステップＳ６８）。同様に、割込み回路２０ａは、ＢＤＦを１つずつ増加しながらどのデバイスに関するエラーメッセージであるかを判定する。図７では、ＢＤＦ＝ＦＦＦＦに関するメッセージであるか否かまで判定する（ステップＳ６９）。
【００５４】
エラーメッセージがどのデバイスに関するメッセージであるかを特定すると、割込み回路２０ａは、特定したデバイスに関する割込み処理を行う。すなわち、割込み回路２０ａは、エラーメッセージがＣＥに関するメッセージであるか否かを判定し（ステップＳ５３）、ＣＥに関するメッセージである場合には、ＣＥカウンタに１を加える（ステップＳ５４）。そして、割込み回路２０ａは、ＣＥマスクか否かを判定し（ステップＳ５５）、ＣＥマスクされている場合には、ステップＳ５１に戻る。一方、ＣＥマスクされていない場合には、割込み回路２０ａは、ＣＰＵ３に対してＣＥ割込みを発行し（ステップＳ５６）、ＣＥ割込みマスクを設定する（ステップＳ５７）。
【００５５】
一方、エラーメッセージがＣＥに関するメッセージでない場合には、割込み回路２０ａは、エラーメッセージがＮＦＥに関するメッセージであるか否かを判定する（ステップＳ５８）。そして、割込み回路２０ａは、ＮＦＥに関するメッセージである場合には、ＮＦＥカウンタに１を加え（ステップＳ５９）、ＮＦＥマスクか否かを判定する（ステップＳ６０）。そして、割込み回路２０ａは、ＮＦＥマスクされている場合には、ステップＳ５１に戻る。一方、ＮＦＥマスクされていない場合には、割込み回路２０ａは、ＣＰＵ３に対してＮＦＥ割込みを発行し（ステップＳ６１）、ＮＦＥ割込みマスクを設定する（ステップＳ６２）。
【００５６】
一方、エラーメッセージがＮＦＥに関するメッセージでない場合には、割込み回路２０ａは、ＦＥカウンタに１を加え（ステップＳ６３）、ＦＥマスクか否かを判定する（ステップＳ６４）。そして、割込み回路２０ａは、ＦＥマスクされている場合には、ステップＳ５１に戻る。一方、ＦＥマスクされていない場合には、割込み回路２０ａは、ＣＰＵ３に対してＦＥ割込みを発行し（ステップＳ６５）、ＦＥ割込みマスクを設定する（ステップＳ６６）。
【００５７】
このように、割込み回路２０ａがデバイス毎エラーレベル毎に割込みを生成することによって、エラー処理部３２ａはエラーが発生したデバイスの表示、エラーレベルの表示、エラーレベルに応じたエラー処理を行うことができる。
【００５８】
上述してきたように、実施例１では、マスク制御部２２は、割込み生成部２１の割込みの生成による設定とエラー処理部３２による解除が行われるマスク制御を行い、割込み生成部２１は、マスク制御部２２によるマスク制御に基づいて割込みの生成を行う。したがって、エラー処理部３２は、ＣＰＵ３による他の処理に悪影響を与えない範囲でＰＣＩｅの割込みを処理することができる。
【００５９】
また、実施例１では、カウンタ２５は、割込みがマスクされている間に受信したエラーメッセージの数をカウントし、読出し回路２６は、エラー処理部３２の指示に基づいてカウンタ２５の値を読出してエラー処理部３２に送信する。したがって、エラー処理部３２は、エラーの発生数を正確に知ることができ、ＰＣＩｅの故障を正確に判断することができる。
【００６０】
また、ルートコンプレックス１ａは複数のデバイスに接続され、割込み回路２０ａは割込み生成部２１、マスク制御部２２、ＡＮＤ回路２４ａ、カウンタ２５ａ、読出し回路２６及びリセット回路２７をデバイスの数だけ有する。したがって、受信回路４ａは、デバイス毎に割込み生成のマスク制御を行うことができる。
【００６１】
なお、実施例１では、エラー処理部がカウンタ値の取得、カウンタのリセット及びマスクの解除を別々に実行する場合について説明した。しかしながら、読出し回路２６がカウンタの値を読出してエラー処理部に送信すると同時に割込み回路がカウンタのリセット及びマスクの解除を同時に行ってもよい。カウンタ値の取得とカウンタのリセットを同時に行うことで、割込み回路は、カウント数の抜けや重複を防ぎ、より正確なエラー数をカウントすることができる。また、エラー処理部による処理も１回で済むため、エラー処理部の処理負荷を低減することができる。
【実施例２】
【００６２】
ところで、上記実施例１では、ルートコンプレックス１ａが複数のデバイスに接続される場合にデバイス毎に独立した割込み用の回路を設けたが、デバイス間で一部の回路を共有することもできる。そこで、実施例２では、デバイス間で一部の回路を共有する割込み回路について説明する。図８は、デバイス間で一部の回路を共有する割込み回路の構成を示すブロック図である。なお、ここでは説明の便宜上、図６に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
【００６３】
図８に示すように、ルートコンプレックス１ｂは、受信回路４ｂと通信回路５ｂとを有する。受信回路４ｂは、複数のデバイスからパケットを受信し、エラー判定部１１と、パケット種別判定部１２と、割込み回路２０ｂとを有する。割込み回路２０ｂは、マスク制御部２２、ＡＮＤ回路２４ｂ、カウンタ２５ｂをデバイスの数だけ有し、割込み生成部２１ｂ、ＯＲ回路２３ａ、読出し回路２６ｂ、デマルチプレクサ２８ｂ及びバッファ２９ｂを１つ有する。すなわち、割込み生成部２１ｂ、読出し回路２６ｂ及びバッファ２９ｂがデバイス間で共有される。なお、図８は、２個のデバイス分の割込み回路２０ｂの詳細を示す。
【００６４】
デマルチプレクサ２８ｂは、各デバイスに対応するカウンタ２５ｂにエラー通知を出力する。各デバイスに対応するＡＮＤ回路２４ｂは、対応するマスク制御部２２の出力の否定と対応するカウンタ２５ｂの値が０でないことを示す信号の論理積をとり、結果を割込み生成部２１ｂ、対応するマスク制御部２２及び対応するカウンタ２５ｂに出力する。
【００６５】
各デバイスに対応するカウンタ２５ｂは、デマルチプレクサ２８ｂから対応するエラー通知を示す値１を受け取ると値を１増加させる。また、各デバイスに対応するカウンタ２５ｂは、対応するＡＮＤ回路２４ｂの出力１をキュー書込み指示として受け取り、値をバッファ２９ｂに書込むとともに自身をリセットする。
【００６６】
バッファ２９ｂは、割込みが生成されたデバイスに対応するカウンタ２５ｂの値を記憶する。バッファ２９ｂの値は、読出し回路２６ｂにより読み出される。割込み生成部２１ｂは、各デバイスに対応するＡＮＤ回路２４ｂから割込み生成の指示を受ける。
【００６７】
カウンタ２５ｂの値が０でないことを割込み生成の条件とすることで、マスク解除後にエラーメッセージを受信しなくても、マスク設定中にエラーメッセージを受信していれば、割込み生成部２１ｂは割込みを生成することができる。また、割込みを生成するとともにカウンタ２５ｂの値をバッファ２９ｂに書込むことで、割込み回路２０ｂは割込み生成時のカウント値を正確にバッファ２９ｂに記憶させることができる。
【００６８】
通信回路５ｂは、割込み生成部２１ｂ、マスク制御部２２及び読出し回路２６ｂと、ＣＰＵ３との通信を中継する。ＯＳ３１は、エラー処理部３２ｂを有する。エラー処理部３２ｂは、割込み生成部２１ｂからの割込みを処理し、読出し回路２６ｂにバッファ２９ｂの読出しを指示する。読出し回路２６ｂは、バッファ２９ｂの読出し指示を受信すると、バッファ２９ｂを読出す。また、エラー処理部３２ｂは、次のエラー処理が可能となった時点で、割込み生成時にマスクを設定したマスク制御部２２にマスク解除を指示する。
【００６９】
上述してきたように、実施例２では、割込み生成部２１ｂ、読出し回路２６ｂ及びバッファ２９ｂがデバイス間で共有される。したがって、割込み回路２０ｂが使用する資源を減らすことができる。
【００７０】
また、実施例２では、カウンタ２５ｂは、値をバッファ２９ｂに書込むと自身をリセットするので、リセット回路２７を不要とし、割込み回路２０ｂが使用する資源を減らすことができる。
【００７１】
なお、実施例２では、割込み生成部２１ｂ、読出し回路２６ｂ及びバッファ２９ｂがデバイス間で共有される場合について説明した。しかしながら、本発明はこれに限定されるものではなく、割込み生成部２１ｂ、読出し回路２６ｂ及びバッファ２９ｂのいずれか又は任意の組合せがデバイス間で共有される場合にも同様に適用することができる。
【００７２】
また、実施例２では、割込み回路２０ｂがバッファ２９ｂを有する場合について説明した。しかしながら、本発明はこれに限定されるものではなく、バッファをＣＰＵ３と接続するメインメモリ上に配置し、通信回路５ｂ経由でカウンタ２５ｂの値をバッファに書込む場合にも同様に適用することができる。また、割込み回路２０ｂは、バッファをエラーレベル毎に有してもよいし、１つのバッファに複数のエラーレベルの情報をエラーレベルとともに記録してもよい。
【００７３】
また、実施例２では、割込み生成部２１ｂは、「マスクが解除されている」かつ「カウンタ値が０でない」という条件で割込みを生成した。しかしながら、この条件で割込み生成部２１ｂは割込みを生成することなく、カウンタ２５ｂがカウンタ値のバッファ２９ｂへの書込みを行ってもよい。この場合、「バッファ２９ｂに処理されていないエラー情報のエントリがある」という条件で割込み生成部２１ｂは割込みを生成してもよい。ここで「処理されていない」とは、割込み回路２０ｂがバッファ２９ｂに情報を書込んだ後、エラー処理部３２ｂが読出していない状態を言う。
【００７４】
この場合は、例えば割込み回路２０ｂが最後に書込んだエントリの番号、及びエラー処理部３２ｂが最後に読出したエントリの番号を、割込み回路２０ｂ及びエラー処理部３２ｂの両方からアクセスできる場所に配置するようにする。そして、エラー処理部３２ｂが読出したエントリ番号を更新した時にそれぞれの番号に差があった場合、もしくはそれぞれの番号に差が生じた場合に、割込み生成部２１ｂは割込みを生成すればよい。
【００７５】
もしくは、各カウンタ毎の領域をバッファ２９ｂ内に確保し、割込み回路２０ｂがカウンタ値を書込んだ場合にセット、エラー処理部３２ｂが読み出した場合にリセットするようなフラグを各領域に設けるようにする。エラー処理部３２ｂがリセットをした時にまだセットされたフラグがある場合、もしくはセットされたフラグの数が０から１以上になった場合に、割込み生成部２１ｂは割込みを生成すればよい。この場合は、エラー処理部３２ｂは少なくとも複数のフラグのリセットを同時にできる必要がある。このようにすることで、不要な割込み回数を減らすことができる。
【００７６】
また、実施例１及び実施例２では、デバイス毎にエラーメッセージをマスクする場合について説明したが、Ｂｕｓ番号毎にエラーメッセージをマスクしてもよい。受信回路は、エラーメッセージを受信すると、エラー処理部に通知した上で、エラーメッセージの送信デバイスのＢｕｓ番号を確認し、同じＢｕｓ番号に属するデバイスより送信される後続のエラーメッセージ受信による割込みをマスクする。マスクしている間に受信した同じＢｕｓ番号に属するデバイスからのエラーメッセージを受信する毎に、受信回路は、同じＢｕｓ番号用のカウンタをインクリメントする。
【００７７】
ＰＣＩｅでは、１つのＢｕｓ番号に属する物理的なデバイスは１つであるため、Ｄｅｖｉｃｅ番号やＦｕｎｃｔｉｏｎ番号の違いによりカウンタ等の資源を確保しないことによって、受信回路の資源を節約することができる。
【００７８】
また、接続できるデバイス数に制約がある場合には、割込み回路は、制約されるＢＤＦ分のみの回路を備えてもよい。ＢＤＦが固定である場合には固定の回路を備え、ＢＤＦが可変の場合には設定により変えられるようにする。制約されるＢＤＦ分のみの回路を割込み回路が備えることによって、資源を節約することができ、物理的な回路実装面積の縮小、消費電力の低減等が可能となる。
【実施例３】
【００７９】
上記実施例１及び実施例２では、エラーメッセージを受信する毎にカウンタを１増加させる場合について説明したが、予め設定した時間内に受信した１個以上のエラーメッセージに対してカウンタを１増加させてもよい。そこで、実施例３では、予め設定した時間内に受信した１個以上のエラーメッセージに対してカウンタを１増加させる割込み回路について説明する。
【００８０】
図９は、実施例３に係る割込み回路の構成を示すブロック図である。なお、ここでは説明の便宜上、図１に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
【００８１】
図９に示すように、ルートコンプレックス１ｃは、受信回路４ｃと通信回路５とを有する。受信回路４ｃは、所定の時間エラーメッセージのカウントをマスクする機能を有し、エラー判定部１１と、パケット種別判定部１２と、割込み回路２０ｃとを有する。割込み回路２０ｃは、割込み生成部２１と、マスク制御部２２と、ＯＲ回路２３ｃと、ＡＮＤ回路３０ｃと、ＡＮＤ回路２４ｃと、カウンタ２５ｃと、読出し回路２６と、リセット回路２７と、タイマ３１ｃと、カウントマスク制御部３２ｃとを有する。
【００８２】
ＯＲ回路２３ｃは、エラー判定部１１からのエラー通知とパケット種別判定部１２からのエラー通知との論理和をとり、結果をＡＮＤ回路３０ｃに出力する。ＡＮＤ回路３０ｃは、ＯＲ回路２３ｃの出力とカウントマスク制御部３２ｃの出力の否定との論理積をとり、結果をＡＮＤ回路２４ｃとカウンタ２５ｃとカウントマスク制御部３２ｃとタイマ３１ｃに出力する。
【００８３】
ＡＮＤ回路２４ｃは、マスク制御部２２のマスク出力の否定とＡＮＤ回路３０ｃの出力との論理積をとり、結果を割込み生成部２１及びマスク制御部２２に出力する。カウンタ２５ｃは、ＡＮＤ回路３０ｃの出力が１である場合にカウンタ値を１増加する。カウンタ２５ｃは、リセット回路２７によりリセットされる。
【００８４】
タイマ３１ｃは、ＡＮＤ回路３０ｃの出力が１であると起動され、エラーメッセージのカウントをマスクする時間を計測し、タイムアップするとカウントマスク制御部３２ｃにマスク解除を指示する。タイマ３１ｃの時間設定は固定でもよく、ユーザが設定できてもよい。カウントマスク制御部３２ｃは、ＡＮＤ回路３０ｃの出力１によるセット及びタイマ３１ｃによる解除が行われるマスク制御を行う。ＡＮＤ回路３０ｃとタイマ３１ｃとカウントマスク制御部３２ｃは、タイマ３１ｃが計測する時間に受信した１以上のエラーメッセージを１と数えるようにマスク制御を行う。
【００８５】
このように、実施例３では、割込み回路２０ｃは、タイマ３１ｃが計測する時間に受信した１以上のエラーメッセージを１と数えるようにマスク制御を行うことによって、瞬間的な外部ノイズに起因するエラーの多発の影響を抑えることができる。稀に瞬間的な外部ノイズが発生することで、エラーが多発する場合、その瞬間は例えばＢＥＲ（Bit  Error  Rate）＝１０-12といった基準よりも品質が悪く見える。しかし、それが単発の発生であった場合は、全体のシステム動作としては、影響が極軽微であり、運用に支障がないこともありうる。これに対応するために、割込み回路２０ｃは、瞬発的なバーストエラーは１回としてカウントし、局所的な発生で不良判定が下されないようにする。
【００８６】
なお、実施例１〜３では、ＰＣＩｅバスでエラーが発生した場合のＣＰＵ３への割込みを中心に説明したが、エラー処理部は、ＡＥＲステータスレジスタに基づくエラー詳細要因の表示等の他の処理を行ってもよい。
【符号の説明】
【００８７】
１，１ａ，１ｂ，１ｃ    ルートコンプレックス
２    エンドポイント
３    ＣＰＵ
４，４ａ，４ｂ，４ｃ    受信回路
５，５ａ，５ｂ    通信回路
１０    情報処理装置
１１    エラー判定部
１２    パケット種別判定部
２０，２０ａ，２０ｂ，２０ｃ    割込み回路
２１，２１ｂ    割込み生成部
２２    マスク制御部
２３，２３ａ，２３ｃ    ＯＲ回路
２４，２４ａ，２４ｂ，２４ｃ    ＡＮＤ回路
２５，２５ａ，２５ｂ，２５ｃ    カウンタ
２６，２６ｂ    読出し回路
２７    リセット回路
２８ａ，２８ｂ    デマルチプレクサ
２９ｂ    バッファ
３０ｃ    ＡＮＤ回路
３１    ＯＳ
３１ｃ    タイマ
３２，３２ａ，３２ｂ    エラー処理部
３２ｃ    カウントマスク制御部
【図１】
0006582503.tif 000002
【図２】
0006582503.tif 000003
【図３】
0006582503.tif 000004
【図４】
0006582503.tif 000005
【図５】
0006582503.tif 000006
【図６】
0006582503.tif 000007
【図７】
0006582503.tif 000008
【図８】
0006582503.tif 000009
【図９】
0006582503.tif 000010