(57)【要約】【課題】  プロセッサ、主記憶装置、複数のＩ／Ｏデバイス、並びにそれらを接続するメモリコントローラ及びＩ／Ｏコントローラを有するコンピュータ装置において、Ｉ／Ｏコントローラが障害により停止した場合でも運用を継続できる構成を提供する。【解決手段】  メモリコントローラに、Ｉ／Ｏコントローラとの通信断を検出するリンク監視回路と、該通信断を検出した場合にＴＸ管理テーブルを参照して処理途中のトランザクションに対するエラーリプライを生成するエラーリプライ生成回路とを備え、Ｉ／Ｏコントローラが障害により切り離された場合、当該Ｉ／Ｏコントローラ配下のＩ／Ｏデバイス宛の処理途中のトランザクションに対してＩ／Ｏコントローラに代わってメモリコントローラがエラーリプライを生成し、トランザクション発行元のプロセッサに返送する。【選択図】  図１
2005208972.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ、主記憶装置、及び前記プロセッサと前記主記憶装置間を接続するメモリコントローラをそれぞれ備えた複数のセル、並びに前記セル毎に設けられた、複数の周辺機器が接続可能なポートを備えたＩ／Ｏバス、及び前記メモリコントローラと前記Ｉ／Ｏバス間を接続するＩ／Ｏコントローラを有するコンピュータ装置において、
前記メモリコントローラは、
前記Ｉ／Ｏコントローラとの通信断を検出するリンク監視回路と、
前記リンク監視回路からの前記通信断の検出通知を受信し、前記プロセッサから前記周辺機器宛に発行された、処理途中のトランザクションに対するエラーリプライを生成するエラーリプライ生成回路と、
通常運用時は前記Ｉ／Ｏコントローラを介して前記周辺機器から送信されるリプライを出力し、前記通信断の検出時は前記エラーリプライ生成回路から送信される前記エラーリプライを出力するセレクタと、
前記セレクタから受け取ったリプライまたはエラーリプライを、対応する前記トランザクションの発行元のプロセッサへ送信する制御回路と、
を有することを特徴とするコンピュータ装置。
【請求項２】
プロセッサ、主記憶装置、及び前記プロセッサと前記主記憶装置間を接続するメモリコントローラをそれぞれ備えた複数のセル、前記セル毎に設けられた、複数の周辺機器が接続可能なポートを備えたＩ／Ｏバス及び前記メモリコントローラと前記Ｉ／Ｏバス間を接続するＩ／Ｏコントローラ、並びに前記セルとは独立したプロセッサを備え、各ＬＳＩやユニットで検出した障害情報を収集するサービスプロセッサを有するコンピュータ装置において、
前記メモリコントローラは、
前記サービスプロセッサで収集された前記Ｉ／Ｏコントローラの障害情報を受信する診断Ｉ／Ｆ回路と、
前記診断Ｉ／Ｆ回路からの前記Ｉ／Ｏコントローラの障害通知を受信し、前記プロセッサから前記周辺機器宛に発行された、処理途中のトランザクションに対するエラーリプライを生成するエラーリプライ生成回路と、
通常運用時は前記Ｉ／Ｏコントローラを介して前記周辺機器から送信されるリプライを出力し、前記Ｉ／Ｏコントローラの障害時は前記エラーリプライ生成回路から送信される前記エラーリプライを出力する調停回路と、
前記調停回路から受け取った前記リプライまたは前記エラーリプライを、対応する前記トランザクションの発行元のプロセッサへ送信する制御回路と、
を有することを特徴とするコンピュータ装置。
【請求項３】
前記メモリコントローラと前記Ｉ／Ｏコントローラ間、及び前記セルが有する前記メモリコントローラどうしが、それぞれクロスバーを介して接続された請求項２記載のコンピュータ装置。
【請求項４】
請求項１に記載のコンピュータ装置を複数備え、
前記コンピュータ装置どうしが、互いにトランザクションの送受信を可能にするノードコネクションインタフェースで接続されたコンピュータシステムにおいて、
前記メモリコントローラは、
通常運用時は前記ノードコネクションインタフェースを介して他のコンピュータ装置から送信されるリプライを前記制御回路へ出力し、他のコンピュータ装置との通信断の検出時は前記エラーリプライ生成回路から送信される前記エラーリプライを前記制御回路へ出力するノード用セレクタをさらに有し、
前記リンク監視回路は、前記Ｉ／Ｏコントローラとの通信断及び他のコンピュータ装置との通信断をそれぞれ検出することを特徴とするコンピュータシステム。
【請求項５】
請求項２または３に記載のコンピュータ装置を複数備え、
前記コンピュータ装置どうしが、互いにトランザクションの送受信を可能にするノードコネクションインタフェースで接続されたコンピュータシステムにおいて、
前記メモリコントローラの前記調停回路は、
通常運用時は前記ノードコネクションインタフェースを介して他のコンピュータ装置から送信されるリプライを前記制御回路へ出力し、前記他のコンピュータ装置の障害時は前記エラーリプライ生成回路から送信される前記エラーリプライを前記制御回路へ出力することを特徴とするコンピュータシステム。
【請求項６】
プロセッサ及び主記憶装置を備えた複数のセルで構成されるコンピュータ装置で用いられる、前記プロセッサと前記主記憶装置間を接続すると共に、複数の周辺機器が接続可能なポートを備えたＩ／ＯバスとＩ／Ｏコントローラを介して接続されるメモリコントローラであって、
前記Ｉ／Ｏコントローラとの通信断を検出するリンク監視回路と、
前記リンク監視回路からの前記通信断の検出通知を受信し、前記プロセッサから前記周辺機器宛に発行された、処理途中のトランザクションに対するエラーリプライを生成するエラーリプライ生成回路と、
通常運用時は前記Ｉ／Ｏコントローラを介して前記周辺機器から送信されるリプライを出力し、前記通信断の検出時は前記エラーリプライ生成回路から送信される前記エラーリプライを出力するセレクタと、
前記セレクタから受け取ったリプライまたはエラーリプライを、対応する前記トランザクションの発行元のプロセッサへ送信する制御回路と、
を有するメモリコントローラ。
【請求項７】
プロセッサ及び主記憶装置を備えた複数のセル、並びに前記セルとは独立したプロセッサを備え、各ＬＳＩやユニットから障害情報を収集するサービスプロセッサを有するコンピュータ装置で用いられる、前記セルのプロセッサと前記主記憶装置間を接続すると共に、複数の周辺機器が接続可能なポートを備えたＩ／ＯバスとＩ／Ｏコントローラを介して接続されるメモリコントローラであって、
前記サービスプロセッサで収集された前記Ｉ／Ｏコントローラの障害情報を受信する診断Ｉ／Ｆ回路と、
前記診断Ｉ／Ｆ回路から前記Ｉ／Ｏコントローラの障害通知を受信し、前記プロセッサから前記周辺機器宛に発行された、処理途中のトランザクションに対するエラーリプライを生成するエラーリプライ生成回路と、
通常運用時は前記Ｉ／Ｏコントローラを介して前記周辺機器から送信されるリプライを出力し、前記Ｉ／Ｏコントローラの障害時は前記エラーリプライ生成回路から送信される前記エラーリプライを出力する調停回路と、
前記調停回路から受け取った前記リプライまたは前記エラーリプライを、対応する前記トランザクションの発行元のプロセッサへ送信する制御回路と、
を有するメモリコントローラ。
【請求項８】
前記メモリコントローラと前記Ｉ／Ｏコントローラ間、及び前記セルが有する前記メモリコントローラどうしをそれぞれクロスバーを介して接続するためのクロスバーインターフェースを有する請求項７記載のメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ、主記憶装置、複数の周辺機器、並びにそれらを接続するメモリコントローラ及びＩ／Ｏコントローラを備えたコンピュータ装置及びシステムに関する。
【背景技術】
【０００２】
図４は本発明の背景となるコンピュータ装置の一構成例を示すブロック図である。
【０００３】
図４に示すように、本発明の背景となるコンピュータ装置は、複数のプロセッサ（図４では８個）を備えたマルチプロセッサシステムであり、それらがセル（第１のセル１、第２のセル２）と呼ばれる単位に分割された構成である。第１のセル１は、プロセッサバス(以下、ＦＳＢと称す)１５に接続された４つのＣＰＵ１１〜１４と、主記憶装置１７と、ＦＳＢ１５に接続されたメモリコントローラ(以下、ＭＭＣと称す)１６とを備え、第２のセル２は、ＦＳＢ２５に接続された４つのＣＰＵ２１〜２４と、主記憶装置２７と、ＦＳＢ２５に接続されたＭＭＣ２６とを備えている。第１のセル１のＭＭＣ１６には、ＰＣＩバス３１、３２に接続可能な、各セルのプロセッサ（ＣＰＵ）で共通に使用される各種周辺機器（キーボード、マウス、プリンタ等：以下Ｉ／Ｏデバイスと称す）がＩ／Ｏコントローラ（以下、ＩＯＣと称す）３を介して接続される。同様に、第２のセル２のＭＭＣ２６には、ＰＣＩバス４１、４２に接続可能な、各セルのプロセッサで共通に使用される各種Ｉ／ＯデバイスがＩＯＣ４を介して接続される。なお、コンピュータ装置を構成するセルやＩＯＣの数及び各セルが備えるプロセッサ、主記憶装置、ＭＭＣの数は、図４に示した例に限定されるものではなく、それぞれ幾つであってもよい。また、各Ｉ／Ｏデバイスは、ＰＣＩバスに限らず、その他のシリアルバス等で構成されるＩ／ＯバスによってＩＯＣと接続されていてもよい。
【０００４】
ＭＭＣ１６、２６は、ＦＳＢ１５、１６及びＩＯＣ３、４を経由してＣＰＵやＩ／Ｏデバイスから受信したトランザクションのルーティング処理を実行する、コンピュータ装置の規模や構成により１個または複数個のＬＳＩ（Large Scale Integration）を用いて形成されるユニットである。
【０００５】
ＭＭＣ１６は、ＦＳＢ１５とのインターフェース、主記憶装置１７に対するアクセス動作を制御するメモリコントローラ（不図示）とのインターフェース、ＩＯＣ３とのインターフェース、及び他のセル（図４の構成では第２のセル２）が有するＭＭＣとのインターフェースをそれぞれ備えている。同様に、ＭＭＣ２６は、ＦＳＢ２５とのインターフェース、主記憶装置２７に対するアクセス動作を制御するメモリコントローラ（不図示）とのインターフェース、ＩＯＣ４とのインターフェース、及び他のセル（図４の構成では第１のセル）が有するＭＭＣとのインターフェースをそれぞれ備えている。パーソナルコンピュータ等では、ＭＭＣ１６、２６に相当する機能を持つＬＳＩまたはユニットはノースブリッジと呼ばれることもある。
【０００６】
ＩＯＣ３は、ＭＭＣ１６とのインターフェース、配下に接続されるＰＣＩバス３１、３２とのインターフェース(ＰＣＩバスコントローラ)、及び上位のＭＭＣ１６とＰＣＩバス３１、３２間で送受信されるトランザクションのルーティング機能を備えている。同様に、ＩＯＣ４は、ＭＭＣ２６とのインターフェース、配下に接続されるＰＣＩバス４１、４２とのインターフェース(ＰＣＩバスコントローラ)、上位のＭＭＣ２６とＰＣＩバス４１、４２間で送受信されるトランザクションのルーティング機能を備えている。一般に、ＩＯＣ３、４には、キーボード、マウス、プリンタ等の各種Ｉ／Ｏデバイスとのインターフェース（Ｉ／Ｆ）回路や割り込みコントローラを備え、パーソナルコンピュータ等では、ＩＯＣ３、４に相当する機能を持つＬＳＩまたはユニットはサウスブリッジと呼ばれることもある。
【０００７】
次に、図５及び図６を参照して図４に示したコンピュータ装置が有する従来のＭＭＣ及びＩＯＣについて説明する。
【０００８】
図５は図４に示したコンピュータ装置で用いる従来のメモリコントローラの構成を示すブロック図であり、図６は図４に示したコンピュータ装置で用いる従来のＩ／Ｏコントローラの構成を示すブロック図である。なお、図５は図４に示したＭＭＣ１６の従来の構成例であり、ＭＭＣ２６も同様の構成である。また、図６は図４に示したＩＯＣ３の従来の構成例であり、ＩＯＣ４も同様の構成である。
【０００９】
図５に示すように、従来のＭＭＣ１６は、ＦＳＢとのインターフェースであるＦＳＢ＿Ｉ／Ｆ１６０１と、主記憶装置１７へのアクセス動作を制御するメモリコントローラとのインターフェースであるメモリＩ／Ｆ１６０７と、ＩＯＣ３とのインターフェースであるＩＯＣ＿Ｉ／Ｆ１６０９と、他セルが有するＭＭＣとのインターフェースであるＭＭＣ＿Ｉ／Ｆ１６１０と、各Ｉ／Ｆ間で送受信されるトランザクションのルーティング処理を行う制御回路１６０６と、ＣＰＵに内蔵されるストアインキャッシュのタグのコピーを保存するキャッシュタグ１６０２と、リプライを必要とするトランザクションに対応するヘッダ情報等を保存するＴＫ管理テーブル１６０３とを有する構成である。
【００１０】
図５に示すＭＭＣは、ＣＰＵが有するストアインキャッシュの制御方法として、一般的なＭＥＳＩ(Medified Exclusive Shared and Invalid)プロトコルを想定した構成である。キャッシュプロトコルはストアインキャッシュの構成等に応じて最適に設定されるものであり、これに限定されるものではない。
【００１１】
図６に示すように、従来のＩＯＣ３は、ＭＭＣ１６とのインターフェースであるＭＭＣ＿Ｉ／Ｆ３０１と、Ｉ／Ｏバス（ＰＣＩバス３１，３２）のコントローラであるＰＣＩ＿Ｉ／Ｆ３０３、３０４と、各Ｉ／Ｆ間で送受信されるトランザクションのルーティング処理を行う制御回路３０２とを有する構成である。
【００１２】
次に、図５及び図６に示した従来のＭＭＣ及びＩＯＣを備えたコンピュータ装置の動作について説明する。
（１）プロセッサによるメモリリード(自セル内へのアクセス)処理
例えば、ＣＰＵ１１により自セル内の主記憶装置１７からデータを読み出す場合、ＣＰＵ１１で発行されたメモリリードトランザクションはＦＳＢ１５を介してＭＭＣ１６へ送信される。ＭＭＣ１６は、ＣＰＵ１１から受信したメモリリードトランザクションにしたがって主記憶装置１７の所定のアドレスからデータの読み出し処理を実行する。その際、他セルとのキャッシュコヒーレンシを維持するため、ＭＭＣ１６は上記ＭＥＳＩプロトコルにしたがってキャッシュタグ１６０２を更新し、同時にＭＭＣ＿Ｉ／Ｆ１６１０を介して他セルのＭＭＣに指示することで該ＭＭＣが有するキャッシュタグも更新する。また、必要に応じて他のＣＰＵのストアインキャッシュからのライトバックを行う。このＭＥＳＩプロトコルを用いたキャッシュシステムのコヒーレンシ制御については当業者によく知られているため、ここではその詳細な説明は省略する。なお、複数のセル間のキャッシュコヒーレンシを維持するために、各セルでストアインキャッシュのタグのコピーを保持する構成は、例えば特許文献１に記載されている。
【００１３】
また、ＭＭＣ１６は、メモリリードトランザクションのように送信先からのリプライを必要とするトランザクションをルーティングする際には、該トランザクションに対応するエントリとして、トランザクション発行元のＣＰＵのＩＤコードや読み出しアドレス等をＴＸ管理テーブル１６０３へ登録する。ＴＸ管理テーブル１６０３に登録された各種エントリは当該トランザクションに対応するリプライが返送されるまで保持され、エントリが登録されている間、すなわち当該トランザクションの処理中は他のリクエスタ（ＣＰＵやＩＯＣ）から発行されるトランザクションのルーティング処理を保留することでトランザクションの整合性を保証する。
【００１４】
メモリリードトランザクションにしたがって主記憶装置１７から読み出されたデータは、ＭＭＣ１６及びＦＳＢ１５を経由してトランザクションの発行元であるＣＰＵ１１へ送信される。また、ＴＸ管理テーブル１６０３に登録された当該メモリリードトランザクションに対応するエントリは主記憶装置１７からのリプライの返送時に制御回路１６０６によって削除される。
（２）プロセッサによるメモリリード(他セルへのアクセス)処理
例えば、ＣＰＵ１１により他のセルに搭載された主記憶装置２７からデータを読み出す場合、ＣＰＵ１１で発行されたメモリリードトランザクションはＦＳＢ１５、ＭＭＣ１６を経由してＭＭＣ２６へ送信される。ＭＭＣ２６は、ＣＰＵ１１から受信したメモリリードトランザクションにしたがって主記憶装置２７の所定のアドレスからデータの読み出し処理を実行する。
【００１５】
この場合も、上記（１）の処理と同様に、ＭＭＣ１６からＭＭＣ２６へのトランザクションの転送と共に、それぞれのＭＭＣが有するキャッシュタグの更新、及びＴＸ管理テーブルに対するエントリの登録処理が行われる。主記憶装置２７から読み出されたデータは、ＭＭＣ２６、ＭＭＣ１６、及びＦＳＢ１５を経由してＣＰＵ１１へ送信される。
（３）プロセッサによるメモリライト処理
例えば、ＣＰＵ１１から自セル内の主記憶装置１７へデータを書き込む場合、ＣＰＵ１１からはライトデータを含むメモリライトトランザクションが発行される。ＣＰＵ１１で発行されたトランザクション及びライトデータはＦＳＢ１５を経由してＭＭＣ１６へ送信される。ＭＭＣ１６は、ＣＰＵ１１から受信したメモリライトトランザクションにしたがって主記憶装置１７の所定のアドレスに受信したライトデータを書き込む。この時、ＭＭＣ１６は、上記メモリリード時と同様にＭＥＳＩプロトコルにしたがってキャッシュタグ１６０２を更新し、同時にＭＭＣ＿Ｉ／Ｆ１６１０を介して他のＭＭＣに指示することで該ＭＭＣが有するキャッシュタグも更新する。
【００１６】
他セルが有する主記憶装置へデータを書き込む場合も同様の手順で処理される。この場合、例えばＣＰＵ１１から送出されたライトデータは、ＦＳＢ１５、ＭＭＣ１６、ＭＭＣ２６を経由して主記憶装置２７へ書き込まれる。
（４）プロセッサによるＩ／Ｏリード処理
図４に示したコンピュータ装置では、Ｉ／Ｏ空間やメモリマップドＩ／Ｏ空間に対するアクセス等のように、ＣＰＵから各種Ｉ／Ｏデバイスに直接アクセスすることが可能である。このようなＩ／Ｏデバイスに対するアクセス時にはストアインキャッシュがバイパスされるため、上記キャッシュコヒーレンシ制御が不要になる。但し、ＴＸ管理テーブルに対するエントリの登録・削除は先に説明した主記憶装置からのデータ読み出し時と同様の手順で実施する必要がある。
【００１７】
例えば、ＣＰＵ１１により自セル配下のＩ／Ｏデバイスからデータを読み出す場合、ＣＰＵ１１から送出されたリードトランザクションはＭＭＣ１６を経由してＩＯＣ３へ送信される。ＩＯＣ３は、ＭＭＣ＿Ｉ／Ｆ３０１によりリードトランザクションを受信し、該リードトランザクションを制御回路３０２により送信先のＩ／Ｏデバイスが接続されるＰＣＩバスに対してルーティングする。
【００１８】
ここで、ＰＣＩバス３１にデータの読み出し対象であるＩ／Ｏデバイスが接続されていると仮定すると、ＩＯＣ３はＰＣＩ＿Ｉ／Ｆ３０３にて受信したリードトランザクションをＰＣＩバストランザクションに変換し、ＰＣＩバス３１を介して送信先のＩ／Ｏデバイスへ送出する。その後、ＰＣＩバス３１を介してＩ／Ｏデバイスからリプライが返送されると、該リプライはＩＯＣ３、ＭＭＣ１６、ＦＳＢ１５を経由してトランザクションの発行元であるＣＰＵ１１へ返送される。ＣＰＵ１１による他セル配下のＩ／Ｏデバイスからのデータ読み出し時にも同様の処理が実行される。
【００１９】
例えば、マスターアボート等のＰＣＩバスエラーによりＩＯＣ３からＰＣＩバス３１に送信されたトランザクションがＩ／Ｏデバイスに届かなかった場合、ＩＯＣ３の制御回路３０２は通常のリードリプライに代わってＭＭＣ１６を介してエラーリプライを折り返しＣＰＵ１１へ返送する。エラーリプライはトランザクションが正常に終了しなかったことをプロセッサへ通知するための特殊なリプライトランザクションである。
【００２０】
エラーリプライを受け取ったＣＰＵ１１は、Ｉ／Ｏデバイスに対するリードトランザクションが正常に終了できなかったことを検知し、予め備えた障害時に対処するための障害処理プログラム等にしたがった処理を実行する。
（５）プロセッサによるＩ／Ｏライト処理
プロセッサからＩ／Ｏデバイスに対するデータの書き込み処理には２種類のトランザクションが定義される。具体的には、ＣＰＵ１１がＩ／Ｏデバイスへの書き込み完了を示すリプライを受け取るまで後続のトランザクションの実行を保留するデファードタイプのDeferredライトトランザクションと、トランザクションを送出した時点で書き込み処理を終了と見なすポステッドタイプのPostedライトトランザクションがある。
【００２１】
例えば、ＣＰＵ１１により自セル配下のＩ／Ｏデバイスにデータを書き込む場合、ＣＰＵ１１で発行されたライトトランザクションはＭＭＣ１６を経由してＩＯＣ３へ転送される。ＣＰＵ１１からDeferredライトトランザクションが発行された場合、ＭＭＣ１６は、ＴＸ管理テーブル１６０３に対するエントリの登録・削除をデータの読み出し時と同様の手順で実行する。ＣＰＵ１１からPostedライトトランザクションが発行された場合はこのような処理は不要である。
【００２２】
ＩＯＣ３は、ＭＭＣ＿Ｉ／Ｆ３０１からDeferredライトトランザクションを受信すると、該ライトトランザクションを制御回路３０２により送信先のＩ／Ｏデバイスが接続されるＰＣＩバスに対してルーティングする。
【００２３】
ここで、ＰＣＩバス３１にデータの書き込み対象であるＩ／Ｏデバイスが接続されていると仮定すると、ＩＯＣ３はＰＣＩ＿Ｉ／Ｆ３０３で受信したDeferredライトトランザクションをＰＣＩバストランザクションに変換し、ＰＣＩバス３１を介して目的のＩ／Ｏデバイスへ送出する。その際、ＩＯＣ３の制御回路３０２は、ＰＣＩバス３１へのDeferredトランザクションの送出完了を受けてトランザクションの発行元であるＣＰＵ１１へリプライを返送する。ＣＰＵ１１は、このリプライが返送されまで後続のトランザクションの処理を保留する。
【００２４】
仮に、ＩＯＣ３からＰＣＩバス３１へ送出されたトランザクションがＩ／Ｏデバイスへ届かなかった場合、ＩＯＣ３の制御回路３０２は通常のライトリプライに代わってＭＭＣ１６を介してエラーリプライを折り返しＣＰＵ１１へ返送する。
【００２５】
エラーリプライを受け取ったＣＰＵ１１は、Ｉ／Ｏデバイスに対するDeferredライトトランザクションが正常に終了できなかったことを検知し、予め備えた障害時に対処するための障害処理プログラム等にしたがった処理を実行する。
【００２６】
ＣＰＵ１１からPostedライトトランザクションを発行した場合、ＣＰＵ１１はトランザクションの送出を完了した時点で書き込み処理を終了と見なし、連続して後続のトランザクションを発行することができる。Postedライトトランザクションを受信したＭＭＣは、データの書き込み対象のＩ／Ｏデバイスに向けてルーティング処理を実行し、ＰＣＩバスに対するトランザクションの送出が完了した時点で処理を終了する。
（６）Ｉ／Ｏデバイスによるメモリリード処理
図４に示した従来のコンピュータ装置ではＩ／Ｏデバイスから各セルが有する主記憶装置へアクセスすることも可能である。
【００２７】
例えば、ＰＣＩバス３１配下のＩ／Ｏデバイスから主記憶装置１７のデータを読み出す場合、Ｉ／ＯデバイスからＰＣＩバス３１に送出されたリードトランザクションは、ＩＯＣ３のＰＣＩ＿Ｉ／Ｆ３０３にてＰＣＩトランザクションからプラットフォームに変換され、制御回路３０２、ＭＭＣ＿Ｉ／Ｆ３０１を経由してＭＭＣ１６へ送信される。
【００２８】
ＭＭＣ１６は、キャッシュタグ１６２を参照してキャッシュコヒーレンシ制御を行い、必要に応じて各ＣＰＵのストアインキャッシュからのライトバック処理を実行した後、主記憶装置１７にアクセスする(主記憶装置２７へアクセスする場合はトランザクションがＭＭＣ２６へルーティングされる)。一方、主記憶装置１７から読み出されたデータは、逆の経路を辿ってＭＭＣ１６からＩＯＣ３へルーティングされ、リードトランザクションの発行元であるＩ／Ｏデバイスへ送信される。
（７）Ｉ／Ｏデバイスによるメモリライト処理
ＰＣＩバス配下のＩ／Ｏデバイスから主記憶装置にデータを書き込む場合も、上記データの読み出し時とほぼ同様の手順で処理される。
【００２９】
例えば、ＰＣＩバス３１配下のＩ／Ｏデバイスから主記憶装置１７にデータを書き込む場合、Ｉ／ＯデバイスからＰＣＩバス３１に送出されたライトトランザクション及びライトデータは、ＩＯＣ３のＰＣＩ＿Ｉ／Ｆ３０３にてＰＣＩトランザクションからプラットフォームに変換され、制御回路３０２、ＭＭＣ＿Ｉ／Ｆ３０１を経由してＭＭＣ１６へ送信される。
【００３０】
ＭＭＣ１６は、キャッシュタグ１６０２を参照してキャッシュコヒーレンシ制御を行い、必要に応じて各ＣＰＵのストアインキャッシュからのライトバック処理を実行した後、データの書き込み先が主記憶装置１７である場合は主記憶装置１７にライトデータを書き込み、トランザクションに対する処理を終了する。また、書き込み先が主記憶装置２７である場合は、ＭＭＣ２６にトランザクションを転送する。この場合、ＭＭＣ２６により主記憶装置２７にライトデータが書き込まれる。
【特許文献１】特開平１１−１５７３４号公報
【発明の開示】
【発明が解決しようとする課題】
【００３１】
近年は多くのマルチプロセッサシステムが開発されており、図４はその一例である８ウェイプロセッサのコンピュータ装置を示している。さらに、より多くのプロセッサやＩ／Ｏデバイスを接続し、３２個または６４個のプロセッサを備えた構成や１００を越えるＩ／Ｏバススロットを持つコンピュータ装置も開発されている。このような大規模なコンピュータ装置は、一般にミッションクリティカルな用途で利用されることが多いため高度な可用性が求められる。
【００３２】
しかしながら上述した従来のＭＭＣを有するコンピュータ装置では、Ｉ／Ｏデバイスが接続されたＩＯＣで障害が発生すると、プロセッサからＩ／Ｏデバイスに向けて発行されたトランザクションに対してリプライが返送されないため、Ｉ／Ｏデバイス等の障害を検出できずにプロセッサがストール（stall）状態に陥ってしまう問題がある。
【００３３】
また、ＩＯＣの障害によりプロセッサがストールした場合、コンピュータ装置のアーキテクチャによってはタイムアウトを検出してシステムダウンに至ることがある。
【００３４】
本発明は上記したような従来の技術が有する問題点を解決するためになされたものであり、プロセッサ、主記憶装置、複数のＩ／Ｏデバイス、並びにそれらを接続するメモリコントローラ及びＩ／Ｏコントローラを有するコンピュータ装置において、Ｉ／Ｏコントローラが障害により停止した場合でも、運用を継続できるコンピュータ装置を提供することを目的とする。
【課題を解決するための手段】
【００３５】
上記目的を達成するため本発明の第１のコンピュータ装置は、プロセッサ、主記憶装置、及び前記プロセッサと前記主記憶装置間を接続するメモリコントローラをそれぞれ備えた複数のセル、並びに前記セル毎に設けられた、複数の周辺機器が接続可能なポートを備えたＩ／Ｏバス、及び前記メモリコントローラと前記Ｉ／Ｏバス間を接続するＩ／Ｏコントローラを有するコンピュータ装置において、
前記メモリコントローラは、
前記Ｉ／Ｏコントローラとの通信断を検出するリンク監視回路と、
前記リンク監視回路からの前記通信断の検出通知を受信し、前記プロセッサから前記周辺機器宛に発行された、処理途中のトランザクションに対するエラーリプライを生成するエラーリプライ生成回路と、
通常運用時は前記Ｉ／Ｏコントローラを介して前記周辺機器から送信されるリプライを出力し、前記通信断の検出時は前記エラーリプライ生成回路から送信される前記エラーリプライを出力するセレクタと、
前記セレクタから受け取ったリプライまたはエラーリプライを、対応する前記トランザクションの発行元のプロセッサへ送信する制御回路と、
を有することを特徴とする。
【００３６】
また、本発明の第２のコンピュータ装置は、プロセッサ、主記憶装置、及び前記プロセッサと前記主記憶装置間を接続するメモリコントローラをそれぞれ備えた複数のセル、前記セル毎に設けられた、複数の周辺機器が接続可能なポートを備えたＩ／Ｏバス及び前記メモリコントローラと前記Ｉ／Ｏバス間を接続するＩ／Ｏコントローラ、並びに前記セルとは独立したプロセッサを備え、各ＬＳＩやユニットで検出した障害情報を収集するサービスプロセッサを有するコンピュータ装置において、
前記メモリコントローラは、
前記サービスプロセッサで収集された前記Ｉ／Ｏコントローラの障害情報を受信する診断Ｉ／Ｆ回路と、
前記診断Ｉ／Ｆ回路からの前記Ｉ／Ｏコントローラの障害通知を受信し、前記プロセッサから前記周辺機器宛に発行された、処理途中のトランザクションに対するエラーリプライを生成するエラーリプライ生成回路と、
通常運用時は前記Ｉ／Ｏコントローラを介して前記周辺機器から送信されるリプライを出力し、前記Ｉ／Ｏコントローラの障害時は前記エラーリプライ生成回路から送信される前記エラーリプライを出力する調停回路と、
前記調停回路から受け取った前記リプライまたは前記エラーリプライを、対応する前記トランザクションの発行元のプロセッサへ送信する制御回路と、
を有することを特徴とする。
【００３７】
一方、本発明のコンピュータシステムは、上記第１のコンピュータ装置を複数備え、
第１のコンピュータ装置どうしが、互いにトランザクションの送受信を可能にするノードコネクションインタフェースで接続されたコンピュータシステムにおいて、
前記メモリコントローラは、
通常運用時は前記ノードコネクションインタフェースを介して他のコンピュータ装置から送信されるリプライを前記制御回路へ出力し、他のコンピュータ装置との通信断の検出時は前記エラーリプライ生成回路から送信される前記エラーリプライを前記制御回路へ出力するノード用セレクタをさらに有し、
前記リンク監視回路は、前記Ｉ／Ｏコントローラとの通信断及び他のコンピュータ装置との通信断をそれぞれ検出することを特徴とする。
【００３８】
または、上記第２のコンピュータ装置を複数備え、
第２のコンピュータ装置どうしが、互いにトランザクションの送受信を可能にするノードコネクションインタフェースで接続されたコンピュータシステムにおいて、
前記メモリコントローラの前記調停回路は、
通常運用時は前記ノードコネクションインタフェースを介して他のコンピュータ装置から送信されるリプライを前記制御回路へ出力し、前記他のコンピュータ装置の障害時は前記エラーリプライ生成回路から送信される前記エラーリプライを前記制御回路へ出力することを特徴とする。
【発明の効果】
【００３９】
上記のような構成のコンピュータ装置及びシステムでは、Ｉ／Ｏコントローラの障害により処理途中のトランザクションに対するリプライが返送できない場合でも、メモリコントローラがＩ／Ｏコントローラに代わってエラーリプライを発行元のプロセッサに返送するため、Ｉ／Ｏコントローラの継続動作が不能になっても、そのＩ／Ｏコントローラ及び配下のＩ／Ｏバスのみを切り離してシステムの運用を継続できる。
【００４０】
また、メモリコントローラとＩ／Ｏコントローラ間の通信断をメモリココントローラで検出した時点でエラーリプライを生成し、トランザクション発行元のプロセッサにエラーリプライを返送するため、Ｉ／Ｏコントローラの継続動作が不能になったとき、そのＩ／Ｏコントローラ配下のＩ／Ｏデバイスに対するリプライ待ちでタイムアウトする前にプロセッサにＩ／Ｏデバイスの障害を認識させることができる。よって、プロセッサに適切な障害処理を実行させることができる。
【発明を実施するための最良の形態】
【００４１】
次に本発明について図面を参照して説明する。
【００４２】
（第１の実施の形態）
図１は本発明のコンピュータ装置が有するメモリコントローラの第１の実施の形態の構成を示すブロック図である。図１は図４に示したＭＭＣ１６に適用する構成例であり、ＭＭＣ２６も同様の構成である。コンピュータ装置全体の構成及びＩＯＣの構成は従来と同様であるため、その説明は省略する。なお、図１に示した各回路要素の符号のうち、図５に示した従来のＭＭＣと同じ構成要素については図５と同一の符号を付与している。
【００４３】
図１に示すように、第１の実施の形態のＭＭＣ１６は、ＦＳＢとのインターフェースであるＦＳＢ＿Ｉ／Ｆ１６０１と、主記憶装置１７へのアクセス動作を制御するメモリコントローラとのインターフェースであるメモリＩ／Ｆ１６０７と、ＩＯＣ３とのインターフェースであるＩＯＣ＿Ｉ／Ｆ１６０９と、他セルが有するＭＭＣとのインターフェースであるＭＭＣ＿Ｉ／Ｆ１６１０と、各Ｉ／Ｆ間で送受信されるトランザクションのルーティング処理を行う制御回路１６０６と、ＣＰＵに内蔵されるストアインキャッシュのタグのコピーを保存するキャッシュタグ１６０２と、リプライを必要とするトランザクションに対応するヘッダ情報等を保存するＴＫ管理テーブル１６０３と、ＭＭＣ１６とＩＯＣ３間の通信断が検出されると、処理途中のトランザクションに対するエラーリプライを生成するエラーリプライ生成回路１６０４と、ＭＭＣ１６とＩＯＣ３間の通信断を検出し、エラーリプライ生成回路１６０４へ通知するリンク監視回路１６０５と、エラーリプライ生成回路１６０４からのセレクト信号にしたがってＩＯＣ＿Ｉ／Ｆ１６０９またはエラーリプライ生成回路１６０４から送出されたトランザクションのいずれか一方を制御回路１６０６へ出力するセレクタ１６０８とを有する構成である。
【００４４】
リンク監視回路１６０５は、ＩＯＣ＿Ｉ／Ｆ１６０９の動作を監視することでＭＭＣ１６とＩＯＣ３間の通信の切断を検出する。通信断の検出方法には、ＩＯＣ＿Ｉ／Ｆ１６０９の動作を監視する方法に限らず、例えばＩＯＣ３とＭＭＣ１６間でリンク確立を示す信号が送受信される場合は、その信号レベル（High/Low）を監視することで検出する。また、ＭＭＣ１６によりＩＯＣ３に対するトランザクションの有無を監視し、ＩＯＣ３宛のトランザクションが所定の時間以上無い場合に通信断と判定する方法、あるいはＩＯＣ３に障害を通知するための機能を備え、専用のインターフェースを介してＩＯＣ３からＭＭＣ１６に障害検出結果を通知する方法等が考えられる。
【００４５】
エラーリプライ生成回路１６０４は、コンピュータ装置が正常に運用されている場合は動作しない回路であり、リンク監視回路１６０５からの通信断の通知を受け取ると起動する。そして、ＴＸ管理テーブル１６０３に登録されたエントリを順に検索し、通信断となったＩＯＣ３に繋がるＩ／Ｏデバイス宛の処理途中のトランザクションを検出した場合は、当該トランザクションに対するエラーリプライを生成してセレクタ１６０８に送出する。また、エラーリプライ生成回路１６０４は、セレクタ１６０８に生成したエラーリプライを選択させるためのセレクト信号を送出する。
【００４６】
セレクタ１６０８は、システムが正常に運用されている時はＩＯＣ＿Ｉ／Ｆ１６０９から送信されるトランザクションを選択して制御回路１６０６に出力する。一方、ＩＯＣ３の障害時には、エラーリプライ生成回路１６０４からの指示にしたがってエラーリプライ生成回路１６０４で生成されたエラーリプライを制御回路１６０６に出力する。
【００４７】
次に、図１に示した第１の実施の形態のＭＭＣの動作について説明する。
【００４８】
コンピュータ装置が正常に運用されている場合、セレクタ１６０８は常にＩＯＣ＿Ｉ／Ｆ１６０９から送信されるトランザクションを制御回路１６０６に出力する。このときの動作は上述した従来のＭＭＣと同様である。
【００４９】
また、ＰＣＩバス３１またはＰＣＩバス３２で障害が発生し、その継続運用が不能になった場合、ＩＯＣ３の制御回路３０２は、ＰＣＩバス３１またはＰＣＩバス３２に対するトランザクションの送信失敗を検出すると、当該ＰＣＩバスに接続されるＰＣＩ＿Ｉ／Ｆ３０３またはＰＣＩ＿Ｉ／Ｆ３０４の動作を停止させることで障害が発生したＰＣＩバス３１またはＰＣＩバス３２を切り離す。なお、ＰＣＩバス３１、３２の障害には、ＰＣＩバス３１、３２に接続されるＩ／ＯデバイスやＩＯＣ３が有するＰＣＩ＿Ｉ／Ｆ３０３、３０４の障害も含まれる。
【００５０】
ここで、ＩＯＣ３でリプライを必要とするトランザクションを受信している場合、ＩＯＣ３の制御回路３０２は、そのトランザクションの発行元に応じて以下の処理を実行する。
【００５１】
まず、トランザクションの発行元がＣＰＵである場合、ＩＯＣ３の制御回路３０２は、切り離したＰＣＩバス宛のトランザクションに対し、そのトランザクションが処理途中であるかＰＣＩバスの切り離し後に受信したものであるかに関わらず、トランザクションを発行したＣＰＵに対して通常のリプライの代わりにエラーリプライを返送する。この場合、ＩＯＣ３の制御回路３０２は切り離されたＰＣＩバス３１、３２からリプライを受信することは無い。
【００５２】
トランザクションの発行元がＰＣＩバスに接続されたＩ／Ｏデバイスの場合、ＩＯＣ３の制御回路３０２は、切り離したＰＣＩバスから新規のトランザクションを受信することは無い。ＰＣＩバスを切り離した時点で処理途中のトランザクションに対するリプライをＭＭＣ１６を通してＣＰＵから受信した場合は、そのリプライを廃棄する。
【００５３】
次に、ＭＭＣ１６とＩＯＣ３間の通信が切断されたときのＭＭＣ１６の動作を説明する。
【００５４】
ＭＭＣ＿Ｉ／Ｆ３０１またはＩＯＣ３の制御回路３０２で障害が発生し、ＩＯＣ３の継続運用が不能になった場合、ＭＭＣ１６では、ＩＯＣ３とのインターフェースが利用できないためＩＯＣ３との通信が切断される。
【００５５】
通信断以降、ＣＰＵ１１からＩ／Ｏデバイスへ発行された処理途中のトランザクションに対しては、いかなるリプライも返送されずに処理が中断したままになる。ＭＭＣ１６は、ＩＯＣ３が切り離された時点で処理途中のトランザクションに対するリプライをＩＯＣ３から受信することは無く、Ｉ／Ｏデバイスが発行元であるトランザクションを新規に受信することも無い。
【００５６】
ＩＯＣ３等の障害によりＩＯＣ＿Ｉ／Ｆ１６０９の動作が停止すると、ＭＭＣ１６は、リンク監視回路１６０５によりＩＯＣ３との通信断を検出する。以降、ＭＭＣ１６はプロセッサから新規に受信したＩＯＣ３宛のトランザクションをＩＯＣ＿Ｉ／Ｆ１６０９に対して送信し続けるが、該トランザクションはＩＯＣ３で受信されずに廃棄される。その際、制御回路１６０６は、リプライを必要とするトランザクションについては通常運用時と同様にＴＸ管理テーブル１６０３に該トランザクションのエントリを登録する。
【００５７】
リンク監視回路１６０５は、ＩＯＣ３との通信断を検出するとエラーリプライ生成回路１６０４に該通信断を通知する。エラーリプライ生成回路１６０４は、ＩＯＣ３との通信断の通知を受け取ると、まずセレクタ１６０８に対してセレクト信号を送出し、エラーリプライ生成回路１６０４で生成されたトランザクションが制御回路１６０６へ出力されるように経路を切り換える。
【００５８】
続いて、ＴＸ管理テーブル１６０３に登録されたエントリを順に参照し、ＩＯＣ３宛のトランザクションに対応するエントリを検索する。該当するエントリが見つかった場合、当該トランザクションに対するエラーリプライを生成し、セレクタ１６０８を介して制御回路１６０６へ該エラーリプライを送出する。
【００５９】
制御回路１６０６は、エラーリプライを受信すると、ＴＸ管理テーブル１６３の対応するエントリを削除し、通常運用時のエラーリプライと同様のルーティング処理によりトランザクション発行元のプロセッサへエラーリプライを送信する。これらの処理途中やＴＸ管理テーブル１６０３に登録されたＩＯＣ３宛のトランザクションのエントリが無くなった後も、ＦＳＢ＿Ｉ／Ｆ１６０１やＭＭＣ＿Ｉ／Ｆ１６１０を介してトランザクションが送信され、ＴＸ管理テーブル１６０３に新たにエントリが登録されることがある。したがって、エラーリプライ生成回路１６０４は、ＴＸ管理テーブル１６０３内にＩＯＣ３宛のトランザクションに対応するエントリが全て無くなった後も、該エントリの検索処理を継続して実行する。
【００６０】
第１の実施の形態では、リンク監視回路によりＩＯＣ＿Ｉ／Ｆの動作を監視することでＩＯＣとの通信断を検出し、当該ＩＯＣ宛の処理途中のトランザクションに対するエラーリプライを生成してトランザクション発行元のプロセッサへ送信するため、プロセッサは、トランザクションのリプライ待ちによってシステム停止に至る前にＩＯＣの障害を検出できる。したがって、当該ＩＯＣを縮退することでシステムの運用を継続できる。
【００６１】
（第２の実施の形態）
第２の実施の形態のＭＭＣは、ＭＭＣ−ＩＯＣ間、及びＭＭＣ−ＭＭＣ間で送受信される全てのトランザクションが周知のクロスバーを経由して伝送される構成である。なお、クロスバーについては、当業者に広く知られた技術であるため、ここでは詳細な説明は省略する。
【００６２】
図２は本発明のコンピュータ装置が有するメモリコントローラの第２の実施の形態の構成を示すブロック図である。
【００６３】
図２に示すように、第２の実施の形態のＭＭＣは、図１に示したＩＯＣ＿Ｉ／Ｆ１６０９、ＭＭＣ＿Ｉ／Ｆ１６１０、セレクタ１６０８、及びリンク監視回路１６０５に代えて、クロスバーとのインターフェースであるＸＢａｒ＿Ｉ／Ｆ１６１９、エラーリプライ生成回路で生成されたトランザクションとＸＢａｒ＿Ｉ／Ｆ１６１９を介して受信したトランザクションとを調停する調停回路１６１８、及び不図示のサービスプロセッサからの指示にしたがって通信断検出後の処理を実行する診断Ｉ／Ｆ回路１６１５を有する構成である。
【００６４】
本実施形態のコンピュータ装置は、ＭＭＣ−ＩＯＣ間、及びＭＭＣ−ＭＭＣ間のインターフェースが全てＸＢａｒ＿Ｉ／Ｆ１６１９に統一された構成である。
【００６５】
診断Ｉ／Ｆ回路１６１５は、不図示のサービスプロセッサ(ＳＰ)と接続され、サービスプロセッサからＩＯＣの障害が通知されると、第１の実施の形態のリンク監視回路による通信断検出後の処理と同様の処理をエラーリプライ生成回路及び調停回路を用いて実施する。
【００６６】
具体的には、サービスプロセッサからＩＯＣの障害が通知されると、該障害情報をエラーリプライ生成回路１６１４に通知する。エラーリプライ生成回路１６１４は、ＩＯＣの障害情報を受信すると、ＴＸ管理テーブルに登録されたエントリを順に検索し、該ＩＯＣ宛の処理途中のトランザクションを検出した場合は、当該トランザクションに対するエラーリプライを生成し、調停回路１６１８へ送出する。また、エラーリプライ生成回路１６１４は、調停回路１６１８に生成したエラーリプライを選択させるためのセレクト信号を送出する。
【００６７】
調停回路１６１８は、エラーリプライ生成回路１６１４で生成されたトランザクションとＸＢａｒ＿Ｉ／Ｆ１６１９から受信したトランザクションとを調停し、トランザクションが同時に到着した場合はいずれか一方を待たせて他方を制御回路へ出力する。すなわち、システムが正常に運用されている場合はＸＢａｒ＿Ｉ／Ｆ１６１９から受信したトランザクションを選択して制御回路に出力する。一方、ＩＯＣの障害時には、エラーリプライ生成回路１６１４からのセレクト信号にしたがってエラーリプライ生成回路１６１４で生成されたエラーリプライを制御回路に出力する。
【００６８】
サービスプロセッサは、図４に示したコンピュータ装置から独立したプロセッサを備えた装置であり、コンピュータ装置を構成する各ＬＳＩやユニットで運用中に検出した障害情報を収集し、その障害情報にしたがってシステムの運用停止や再起動等の制御を行う。サービスプロセッサと各ＬＳＩやユニット間は専用のバス(診断バス)によってそれぞれ接続されている。その他の構成は第１の実施の形態と同様であるため、その説明は省略する。
【００６９】
次に、第２の実施の形態のＭＭＣの動作について説明する。なお、システムの通常運用時における動作については第１の実施の形態と同様であるため、その説明は省略する。
【００７０】
ＩＯＣ(不図示)にて障害が発生し、継続運用ができない場合、本実施形態のＩＯＣは重度の障害を検出すると、自ら動作を停止すると共にサービスプロセッサに対して障害情報を通知する。
【００７１】
障害情報を受信したサービスプロセッサは、システム内の全てのＭＭＣの診断Ｉ／Ｆ回路１６１５に対して当該ＩＯＣの障害情報を診断バス経由で通知する。
【００７２】
ＭＭＣの制御回路は、ＩＯＣで障害が発生した後も新規に受信した当該ＩＯＣ宛のトランザクションをクロスバーを介してＩＯＣへ送信し続ける。しかしながら、該トランザクションはＩＯＣで受信されることなく廃棄される。また、ＭＭＣの制御回路は、リプライを必要とするトランザクションを受信すると、通常運用時と同様にＴＸ管理テーブルへ対応するエントリを登録する。
【００７３】
サービスプロセッサからＩＯＣの障害情報を受信した診断Ｉ／Ｆ回路１６１５は、障害情報を受信した時点でエラーリプライ生成回路１６１４に対して障害により停止したＩＯＣを通知する。
【００７４】
エラーリプライ生成回路１６１４は、まずＴＸ管理テーブルに登録されたエントリを参照し、障害が発生したＩＯＣ宛の処理途中のトランザクションに対応するエントリを順に検索する。該当するエントリを検出した場合、当該トランザクションに対するエラーリプライを生成し、調停回路１６１８を経由して制御回路へ送出する。
【００７５】
エラーリプライを受信したＭＭＣの制御回路は、ＴＸ管理テーブルの対応するエントリを削除し、通常運用時のエラーリプライと同様のルーティング処理にしたがってトランザクションの発行元のＣＰＵへエラーリプライを返送する。
【００７６】
エラーリプライ生成回路１６１４は、これらの処理途中やＴＸ管理テーブルに登録されたＩＯＣ宛のトランザクションのエントリが無くなった後も、第１の実施の形態と同様にＴＸ管理テーブル内のＩＯＣ宛のトランザクションに対応するエントリの検索処理を継続して実行する。
【００７７】
図４に示したコンピュータ装置では、実装上の制約からＭＭＣやＩＯＣを形成するＬＳＩやユニットの端子数を増やすことができず、システム内に収容可能なセル数やＩ／Ｏデバイス数に制限が生じる。第２の実施の形態では、ＭＭＣとＩＯＣ間、及び各ＭＭＣ間のインターフェースを周知のクロスバーに集約することで、このような制限を回避することが可能になり、より大規模なコンピュータ装置を構築できる。
【００７８】
（第３の実施の形態）
第３の実施の形態は、図４に示したコンピュータ装置（以下、ノードと称す）を複数備えたコンピュータシステムである、各ノードのプロセッサで全てのノード配下のＩ／Ｏデバイスが共通に使用される。
【００７９】
図３は本発明のコンピュータ装置が有するメモリコントローラの第３の実施の形態の構成を示すブロック図である。
【００８０】
図３に示すように、第３の実施の形態のコンピュータシステムが有するＭＭＣは、図１に示した第１の実施の形態の構成に加えて、制御回路と他ノード間でトランザクションを送受信するためのインターフェースであるＮＯＤＥ＿Ｉ／Ｆ１６２０と、エラーリプライ生成回路１６２４からのセレクト信号にしたがってＮＯＤＥ＿Ｉ／Ｆ１６２０またはエラーリプライ生成回路１６２０から送出されるトランザクションのいずれか一方を制御回路へ出力するノード用セレクタ１６２８とを有する構成である。
【００８１】
各ノードは、ノード毎に対応して設けられたノードコネクションインターフェース（ＮＣ）５によって互いにトランザクションの送受信が可能に接続され、ＮＣ５にＭＭＣのＮＯＤＥ＿Ｉ／Ｆ１６２０が接続される。
【００８２】
本実施形態のリンク監視回路１６２５は、ＩＯＣ＿Ｉ／Ｆ１６２９及びＮＯＤＥ＿Ｉ／Ｆ１６２０の動作をそれぞれ監視し、自ノード内のＩＯＣとの通信断及び他ノードとの通信断をそれぞれ検出する。
【００８３】
エラーリプライ生成回路１６２４は、ＮＯＤＥ＿Ｉ／Ｆ１６２０から通信断の通知を受け取ると、ノード用セレクタ１６２８に対してセレクト信号を送出し、エラーリプライ生成回路１６２５で生成したトランザクションが制御回路へ出力されるように経路を切り換える。また、ＴＸ管理テーブルに登録されたエントリを参照し、他ノード宛のトランザクションに対応するエントリを順に検索する。該当するエントリが見つかった場合、当該トランザクションに対するエラーリプライを生成し、ノード用セレクタ１６２８を介して制御回路へ該エラーリプライを送出する。その他の構成及び動作は第１の実施の形態と同様であるため、その説明は省略する。
【００８４】
なお、各ノードが有するＭＭＣの構成は第２の実施の形態と同様であってもよい。その場合、ＭＭＣとＩＯＣ間、各ＭＭＣ間、及びＭＭＣとＮＣ間のインターフェースをそれぞれクロスバーに集約し、サービスプロセッサから他ノードで発生した障害を診断Ｉ／Ｆ回路へ通知すればよい。
【００８５】
第３の実施の形態の構成によれば、第１の実施の形態及び第２の実施の形態で示したコンピュータ装置を複数備えた、より大規模なコンピュータシステムを構築することが可能であり、第１の実施の形態と同様にＩＯＣが継続動作不能になっても、そのＩＯＣ及び配下のＩ／Ｏバスのみを切り離してシステムの運用を継続できる。
【図面の簡単な説明】
【００８６】
【図１】本発明のコンピュータ装置が有するメモリコントローラの第１の実施の形態の構成を示すブロック図である。
【図２】本発明のコンピュータ装置が有するメモリコントローラの第２の実施の形態の構成を示すブロック図である。
【図３】本発明のコンピュータ装置が有するメモリコントローラの第３の実施の形態の構成を示すブロック図である。
【図４】本発明の背景となるコンピュータ装置の一構成例を示すブロック図である。
【図５】図４に示したコンピュータ装置で用いる従来のメモリコントローラの構成を示すブロック図である。
【図６】図４に示したコンピュータ装置で用いる従来のＩ／Ｏコントローラの構成を示すブロック図である。
【符号の説明】
【００８７】
５    ＮＣ
１６    ＭＭＣ
１７    主記憶装置
１６０１    ＦＳＢ＿Ｉ／Ｆ
１６０２    キャッシュタグ
１６０３    ＴＸ管理テーブル
１６０４、１６１４、１６２４    エラーリプライ生成回路
１６０５、１６２５    リンク監視回路
１６０６    制御回路
１６０７    メモリＩ／Ｆ
１６０８    セレクタ
１６０９、１６２９    ＩＯＣ＿Ｉ／Ｆ
１６１０    ＭＭＣ＿Ｉ／Ｆ
１６１５    診断Ｉ／Ｆ回路
１６１８    調停回路
１６１９    ＸＢａｒ＿Ｉ／Ｆ
１６２０    ＮＯＤＥ  Ｉ／Ｆ
１６２８    ノード用セレクタ
【図１】
2005208972.tif 000003
【図２】
2005208972.tif 000004
【図３】
2005208972.tif 000005
【図４】
2005208972.tif 000006
【図５】
2005208972.tif 000007
【図６】
2005208972.tif 000008