(57)【要約】  データクロスバを介して他装置に接続可能であり、データを記憶するメモリシステムは、二重化されたデータクロスバの縮退運転時には、システムコントローラが第１メモリ及び第２メモリからデータを読み出し、一方のメモリから読み出したデータが誤り訂正不可能であっても、他方のメモリから読み出したデータがエラーを含んでいない又は誤り訂正可能であれば、当該データを出力する。このため、縮退運転時にデータを転送する際、転送データの信頼性を向上させることができる。
2011036727.tif 000002
【特許請求の範囲】
【請求項１】
データクロスバを介して他装置に接続可能であり、データを記憶するメモリシステムであって、
データを記憶する第１メモリと、
前記第１メモリと二重化され、データを記憶する第２メモリと、
該第１メモリに対してデータの書き込み又は読み出しを行い、他装置に第１データクロスバを介して接続し、該第１メモリの書き込み又は読み出しを行うデータを該他装置に対して送受信する第１メモリコントローラと、
該第２メモリに対してデータの書き込み又は読み出しを行い、該他装置に第２データクロスバを介して接続し、該第２メモリの書き込み又は読み出しを行うデータを該他装置に対して送受信する第２メモリコントローラと、
該第１データクロスバ及び該第２データクロスバを介したデータ送受信を検出し、該第１データクロスバ又は該第２データクロスバのいずれか一方のデータクロスバを介してデータの送受信ができないことを検出した場合、該第１メモリ及び該第２メモリから該他装置からの読み出し依頼対象のデータを読み出しを前記第１のメモリコントローラおよび前記第２のメモリコントローラに指示し、該第１のメモリコントローラ及び前記第２のメモリコントローラが読み出したデータの誤り検出を行い、誤りが検出されなかったデータ又は誤り訂正を行ったデータを出力するシステムコントローラと、
を有することを特徴とするメモリシステム。
【請求項２】
該メモリシステムは、さらに、データを処理する処理部を有し、該システムコントローラは、該誤りが検出されなかったデータ又は該誤り訂正を行ったデータを該処理部に出力することを特徴とする請求項１記載のメモリシステム。
【請求項３】
該処理部は、該システムコントローラが出力したデータをデータ送信可能なデータクロスバを介して該他装置に送信することを特徴とする請求項２記載のメモリシステム。
【請求項４】
データクロスバを介して他装置に接続可能であり、データを記憶するメモリシステムの制御方法であって、
該他装置に第１データクロスバを介して接続し、第１メモリに対してデータの書き込み又は読み出しを行う第１メモリコントローラが、該第１メモリの書き込み又は読み出しを行うデータを送受信し、
該他装置に第２データクロスバを介して接続し、第２メモリに対してデータの書き込み又は読み出しを行う第２メモリコントローラが、該第２メモリの書き込み又は読み出しを行うデータを送受信し、
該第１メモリコントローラ及び該第２メモリコントローラに接続するシステムコントローラが、該第１データクロスバ及び該第２データクロスバのデータ送受信を検出し、該第１データクロスバ又は該第２データクロスバのいずれか一方のデータクロスバでデータの送受信ができないことを検出した場合、該第１メモリ及び該第２メモリから該他装置からの読み出し依頼対象のデータを読み出し、該読み出したデータの誤り検出を行い、誤りが検出されなかったデータ又は誤り訂正を行ったデータを出力することを特徴とするメモリシステムの制御方法。
【請求項５】
該メモリシステムは、さらに、データを処理する処理部を有し、該システムコントローラは、該誤りが検出されなかったデータ又は該誤り訂正を行ったデータを該処理部に出力することを特徴とする請求項４記載のメモリシステムの制御方法。
【請求項６】
該処理部は、該システムコントローラが出力したデータをデータ送信可能なデータクロスバを介して該他装置に送信することを特徴とする請求項５記載のメモリシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリシステム及びメモリシステムの制御方法に関する。
【背景技術】
【０００２】
メモリシステムは、中央処理装置、メモリ、システムコントローラ及びメモリコントローラを有するシステムボードと、複数のシステムボードを接続するデータクロスバ及びアドレスクロスバを有する。メモリシステムにはシステムボード内でメモリ及びメモリコントローラが二重化されているものがある。システムボード内で二重化されたメモリコントローラはそれぞれ別のデータクロスバによって他のシステムボードのメモリコントローラに接続する。二重化されたメモリは同一のデータを格納することで、データを二重化して記憶する。【０００３】
通常動作時、二重化されたメモリコントローラは他のシステムボードからデータの読出し要求を受信すると、各メモリコントローラに接続するメモリから要求に応じたデータを読み出す。各メモリコントローラはそれぞれ読出したデータをデータクロスバを介して他のシステムボードのメモリコントローラに転送する。【０００４】
メモリシステムは、一方のデータクロスバが故障すると、故障していないデータクロスバに接続するメモリコントローラがデータを読み出し、他のシステムボードのメモリコントローラに読み出したデータを転送する縮退動作を行う。縮退動作時、故障していないデータクロスバに接続するメモリコントローラの読み出したデータがエラー訂正不可能である場合、データの転送先のシステムボードはデータを使用することができない問題があった。【０００５】
先行技術文献としては下記のものがある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０９−００６７３７号公報
【特許文献２】特開２００６−０３９８９７号公報
【特許文献３】特開２００８−０４６９９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の課題は、縮退運転時にメモリに格納された二重化データを転送する際に、転送データの信頼性を向上させることである。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、データクロスバを介して他装置に接続可能であり、データを記憶するメモリシステムは、データを記憶する第１メモリと、前記第１メモリと二重化され、データを記憶する第２メモリと、該第１メモリに対してデータの書き込み又は読み出しを行い、他装置に第１データクロスバを介して接続し、該第１メモリの書き込み又は読み出しを行うデータを該他装置に対して送受信する第１メモリコントローラと、該第２メモリに対してデータの書き込み又は読み出しを行い、該他装置に第２データクロスバを介して接続し、該第２メモリの書き込み又は読み出しを行うデータを該他装置に対して送受信する第２メモリコントローラと、該第１データクロスバ及び該第２データクロスバを介したデータ送受信を検出し、該第１データクロスバ又は該第２データクロスバのいずれか一方のデータクロスバを介してデータの送受信ができないことを検出した場合、該第１メモリ及び該第２メモリから該他装置からの読み出し依頼対象のデータを読み出しを前記第１のメモリコントローラおよび前記第２のメモリコントローラに指示し、該第１のメモリコントローラ及び前記第２のメモリコントローラが読み出したデータの誤り検出を行い、誤りが検出されなかったデータ又は誤り訂正を行ったデータを出力するシステムコントローラとを有する。
【発明の効果】
【０００９】
本実施形態の一側面によれば、二重化されたデータクロスバの縮退運転時には、システムコントローラが第１メモリ及び第２メモリからデータを読み出し、一方のメモリから読み出したデータが誤り訂正不可能であっても、他方のメモリから読み出したデータがエラーを含んでいない又は誤り訂正可能であれば、当該データを出力する。このため、縮退運転時にデータを転送する際、転送データの信頼性を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】情報処理装置の構成を表す図である。
【図２】本実施形態における情報処理装置を説明する図である。
【図３】データクロスバの詳細を説明する図である。
【図４】スクラブコントロールマスタ回路の動作を表すフローチャートである。
【図５】スクラブコントロールスレーブ回路の動作を表すフローチャートである。
【図６】情報処理装置を説明する図（その１）である。
【図７】情報処理装置を説明する図（その２）である。
【図８】本実施形態の有用性を説明する図である。
【発明を実施するための形態】
【００１１】
図１を用いて、本実施形態における情報処理装置について説明する。以下、共通の要素に対する説明を行う場合は、例えば、符号を「１０２」や「１０８」と総称し、共通符号で説明する。情報処理装置０は、システムボード１００Ａ及び１００Ｂ、アドレスクロスバ１１０Ａ／１１０Ｂ及びデータクロスバ１１２Ａ／１１２Ｂを有する。アドレスクロスバ１１０Ａ／１１０Ｂ及びデータクロスバ１１２Ａ／１１２Ｂは複数のシステムボードを接続する。アドレスクロスバ１１０Ａ／１１０Ｂは複数のシステムボード１００Ａ及びシステムボード１００Ｂとの間でアドレスの送受信を行う。データクロスバ１１２Ａ／１１２Ｂはシステムボード１００Ａ及びシステムボード１００Ｂとの間でデータの送受信を行う。データクロスバ１１２Ａ／１１２Ｂはシステムボードが有するメモリコントローラに直接接続され、メモリアクセスの高速化が図られている。
【００１２】
システムボード１００Ａ及びシステムボード１００Ｂはそれぞれ、中央処理装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０２、システムコントローラ１０４、メモリコントローラ１０６及びメモリ１０８を有する。システムボード１００内では、メモリコントローラ１０６及びメモリ１０８はそれぞれ二重化されている。メモリコントローラ１０６は、メモリ１０８に対してデータの読み書きを行う。同一システムボード内で二重化されたメモリコントローラは、各々異なるクロスバに接続されている。二重化されたそれぞれのメモリ１０８には、同一のデータが書き込まれ、データの二重化が図られている。メモリ１０８は、例えば、デュアル・インライン・メモリ・モジュール（ＤＩＭＭ：Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）である。ＣＰＵ１０２は、データの処理を行う。システムコントローラ１０４は、二重化されたメモリコントローラ１０６を同期制御する。
【００１３】
各メモリコントローラ１０６とメモリ１０８は同期して動作しているが、メモリコントローラ自体がお互いの動きを見て同期をとっているわけではなく、常に、どこかのシステムコントローラ１０４からの指示を以って、同期をとっている。データクロスバ１１２Ａ／１１２Ｂに故障が発生した場合、他のシステムボードのシステムコントローラ１０４からの指示が、二重化の片側に届かなくなる為、メモリコントローラ１０６とメモリ１０８を同期できなくなる。この為、故障していないメモリシステムも含めて縮退しなくてはならない。活用可能なメモリシステムを有効活用する為に、片方のメモリの内容をコピーするだけでは、２つのメモリがリードとライトの別々の動きとなり、同期動作とならない。
【００１４】
さらに、図２を用いてシステムボード１００Ａ及びシステムボード１００Ｂの詳細について説明する。システムボード１００Ａの構成は、システムボード１００Ｂの構成と同一であるため、ここではシステムボード１００Ａについて説明する。また、図１を用いて説明したシステムボード１００Ａが有する２つのメモリコントローラ１０６をそれぞれメモリコントローラ１０６Ａ、メモリコントローラ１０６Ｂと区別して説明する。
【００１５】
メモリコントローラ１０６Ａは、データクロスバインキュー（ＤＸＩＱ：Ｄａｔａ  Ｘｂａｒ  Ｉｎ  Ｑｕｅｕｅ）９８Ａ、データクロスバアウトキュー（ＤＸＯＱ：Ｄａｔａ  Ｘｂａｒ  Ｏｕｔ  Ｑｕｅｕｅ）９９Ａ、セレクタ８８Ａ、セレクタ８９Ａ、メモリライトキュー（ＭＷＱ：Ｍｅｍｏｒｙ  Ｗｒｉｔｅ  Ｑｕｅｕｅ）９６Ａ、メモリリードキュー（ＭＲＱ：Ｍｅｍｏｒｙ  Ｒｅａｄ  Ｑｕｅｕｅ）９５Ａ、デコーダ１２０Ａ、データ送受信部１１８Ａ、コマンド発行部１３２Ａ及びスクラブコントロールスレーブ回路１２２Ａを有する。
【００１６】
ＤＸＩＱ９８Ａは、データを格納するキューである。ＤＸＩＱ９８Ａは、信号線１１２１Ａを介して他のシステムボードから送信されるデータを格納する。ＤＸＩＱ９８Ａは、格納したデータをセレクタ８８Ａ及びセレクタ１２６に出力する。セレクタ８８Ａは、セレクタ８８Ａに接続される入力側のパスを選択して、選択したパスから入力するデータを出力する。セレクタ８８Ａは、ＤＸＩＱ９８Ａからのパスを選択した場合、ＤＸＩＱ９８Ａが出力したデータをＭＷＱ９６Ａに出力する。ＭＷＱ９６Ａは、メモリに書き込むデータおよび／あるいはメモリアクセスに関連するコマンド／アドレスを格納するキューである。ＭＷＱ９６Ａは、セレクタ８８Ａが出力したデータをデコーダ１２０Ａに出力する。また、セレクタ８８Ａは、アドレスクロスバに接続される信号線およびシステムコントローラ１０４が有するセレクタ１２５を介して他のシステムボードから出力されたアドレス及びコマンドを適宜選択して、ＭＷＱ９６Ａに出力する。ＭＷＱ９６Ａは、セレクタ８８Ａが出力したアドレス及びコマンドをデコーダ１２０Ａに出力する。
【００１７】
デコーダ１２０Ａは、セレクタ８８Ａが出力したデータ等をデコードする。デコーダ１２０Ａは、入力したコマンドがライトコマンドである場合、当該コマンド及びアドレスをコマンド発行部１３２Ａに出力する。また、デコーダ１２０Ａは、データをデータ送受信部１１８Ａに出力する。
【００１８】
コマンド発行部１３２Ａは、デコーダ１２０Ａがデコードしたコマンドをメモリ１０８Ａに出力する機能を有する。コマンド発行部１３２Ａは、デコーダ１２０Ａが出力したデータに基づいてライトコマンドをメモリ１０８Ａに出力する。データ送受信部１１８Ａはメモリ１０８Ａとの間でデータの送受信を行う機能を有する。コマンド発行部１３２Ａからライトコマンドが発行された場合、データ送受信部１１８Ａはデータをメモリ１０８Ａに出力する。
【００１９】
メモリ１０８Ａは、データを記憶する。メモリ１０８Ａは、コマンド発行部１３２Ａから出力されたライトコマンドを受信すると、コマンド発行部１３２Ａから出力されたアドレスに、データ送受信部１１８Ａから出力されたデータを書き込む。
【００２０】
また、他のシステムボードによるリードアクセスに対するデータ読み出し時には、信号線１１２１Ａを介してデータはメモリコントローラ１０６Ａに入力されず、アドレスクロスバ１１０を介して、他のシステムボードからのアドレス及びリードコマンドがセクレタ１２５等を介して、デコーダ１２０Ａに入力する。
【００２１】
デコーダ１２０Ａは、受信したコマンドがリードコマンドである場合、当該リードコマンド及びアドレスをコマンド発行部１３２Ａに出力する。コマンド発行部１３２Ａは、デコーダ１２０Ａが出力したリードコマンド及びアドレスをメモリ１０８Ａに出力する。
【００２２】
メモリ１０８Ａは、コマンド発行部１３２Ａから出力されたリードコマンドを受信すると、コマンド発行部１３２Ａから出力されたアドレスに格納されているデータをデータ送受信部１１８Ａに出力する。
【００２３】
データ送受信部１１８Ａは、リードコマンド実行時にメモリ１０８Ａから出力されたデータを受信する。データ送受信部１１８Ａは、メモリ１０８Ａから出力されたデータをＭＲＱ９５Ａに出力する。ＭＲＱ９５Ａは、データ送受信部１１８Ａが出力したデータをスクラブコントロールスレーブ回路１２２Ａ、セレクタ８９Ａ及びシステムコントローラ１０４が有するセレクタ１２６に出力する。セレクタ１２６については後述する。
【００２４】
スクラブコントロールスレーブ回路１２２Ａは、受信したデータの誤りを検出する機能を有する。スクラブコントロールスレーブ回路１２２Ａは、ＭＲＱ９５Ａが出力したデータを受信する。スクラブコントロールスレーブ回路１２２Ａは、受信したデータの誤りを誤り訂正符号（ＥＣＣ：Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）を用いて検出する。スクラブコントロールスレーブ回路１２２Ａは、受信したデータの誤りを検出した場合、データの誤りを検出したことを表す信号をスクラブコントロールマスタ回路１３０に出力する。スクラブコントロールマスタ回路１３０については後述する。
【００２５】
セレクタ８９Ａは、通常時はＭＲＱ９５Ａが出力したデータをＤＸＯＱ９９Ａに出力する。ＤＸＯＱ９９Ａは、セレクタ８９Ａが出力したデータを格納する。ＤＸＯＱ９９Ａは、格納したデータを出力データクロスバ１１２Ｂを介して他のシステムボードに出力する。
【００２６】
システムコントローラ１０４は、セレクタ１２５、セレクタ１２６、セレクタ１２７、セクレタ１２８及びスクラブコントロールマスタ回路１３０を有する。
【００２７】
セレクタ１２５は、アドレスクロスバ１１０を介して他のシステムボードから受信したアドレス及びコマンド、またはＣＰＵ１０２が出力したアドレス及びコマンドを、メモリコントローラ１０６Ａのセレクタ８８Ａ及びメモリコントローラ１０６Ｂのセレクタ８８Ｂに出力する。
【００２８】
セレクタ１２６は、メモリコントローラ１０６ＡのＤＸＩＱ９８Ａ又はメモリコントローラ１０６ＡのＭＲＱ９５Ａが出力したデータのいずれかを選択して、セレクタ１２８に出力する。セレクタ１２７も同様に、メモリコントローラ１０６ＢのＤＸＩＱ９８Ｂ又はメモリコントローラ１０６ＢのＭＲＱ９５Ｂが出力したデータのいずれかを選択して、セレクタ１２８に出力する。
【００２９】
セレクタ１２８は、セレクタ１２６及びセレクタ１２７が出力したデータのエラー検出をＥＣＣを用いて行う。セレクタ１２８は、エラーが検出されなかった方のデータを選択して、ＣＰＵ１０２およびスクラブコントロールマスタ回路１３０に出力する。
【００３０】
メモリコントローラ１０６Ａのセレクタ８８Ａには、信号線１１１１Ａ及び信号線１１１１Ｂが接続される。信号線１１１１Ａはデータクロスバ１１２Ａの訂正可能エラー検出部１０９１Ａに接続される。信号線１１１１Ｂはデータクロスバ１１２Ｂの訂正可能エラー検出部１０９２Ａに接続される。なお、訂正可能エラー検出部１０９１Ａ／１０９２Ａについては図３を用いて後述する。
【００３１】
セレクタ８８Ａは、セレクタ８８Ａが搭載されたメモリコントローラに接続されたデータクロスバから信号線１１１１Ａを介して信号が入力しない場合、ＤＸＩＱ９８Ａからセレクタ８８Ａのパスを無効化する。
【００３２】
システムコントローラ１０４のスクラブコントロールマスタ回路１３０にも信号線１１１１Ａ及び信号線１１１１Ｂが接続される。それぞれの信号線から信号が入力されている場合、スクラブコントロールマスタ回路１３０はセレクタ１２８からデータ等を受信しない。また、いずれか一方の信号線から信号がセレクタ８８に入力されていない場合、スクラブコントロールマスタ回路１３０はセレクタ１２８からデータ等を受信する。
【００３３】
図３に示したデータクロスバ１１２Ｂが故障し、メモリシステムが縮退運転を行っている場合は、メモリコントローラ１０６Ａを通してデータクロスバ１１２Ａから入力するデータはセレクタ１２６、セレクタ１２８を介してスクラブコントロールマスタ回路１３０に入力する。
【００３４】
ここで、スクラブライト動作について説明する。スクラブライト動作は、メモリコントローラ１０６がメモリ１０８からデータを読み出し、読み出したデータに訂正可能なエラーが存在する場合に、当該データが書き込まれていたメモリ１０８のアドレスからデータを読み出し、誤り訂正を行い、再度メモリ１０８の同一アドレスに誤り訂正後のデータを書き込む動作である。本実施形態では、メモリコントローラ１０６Ａがメモリ１０８Ａから読み出したデータに、訂正可能なエラーが存在する場合について説明する。
【００３５】
メモリコントローラ１０６Ａのスクラブコントロールスレーブ回路１２２Ａが、ＥＣＣを用いてＭＲＱ９５Ａが出力したデータにエラーが存在すると判定した場合、システムコントローラ１０４に備えられたスクラブコントロールマスタ回路１３０にスクラブライトの要求を通知する。また、メモリコントローラ１０６Ａのスクラブコントロールスレーブ回路１２２Ａは、メモリコントローラ１０６Ａのコマンド発行部１３２Ａからエラーが存在するデータが記憶されていたメモリ１０８Ａのアドレスを受信する。メモリコントローラ１０６Ａのスクラブコントロールスレーブ回路１２２Ａはコマンド発行部１３２から受信したアドレスをスクラブコントロールマスタ回路１３０に出力する。
【００３６】
スクラブコントロールマスタ回路１３０は、メモリコントローラ１０６Ａのスクラブコントロールスレーブ回路１２２Ａからスクラブライトの要求の通知及びアドレスを受信すると、スラクラブライトを開始する。スクラブコントロールマスタ回路１３０は、メモリコントローラ１０６Ａのセレクタ８８Ａ及びメモリコントローラ１０６Ｂのセレクタ８８Ｂに、スクラブライトのコマンド及びメモリコントローラ１０６Ａのスクラブコントロールスレーブ回路１２２Ａから受信したアドレスを出力する。各メモリコントローラ１０６のセレクタ８８は、スクラブコントロールマスタ回路１３０が出力したスクラブライトのコマンド及びアドレスをＭＷＱ９６に出力する。ＭＷＱ９６は、各セレクタ８８が出力したスクラブライトのコマンド及びアドレスを格納する。また、ＭＷＱ９６は、格納したスクラブライトのコマンド及びアドレスをデコーダ１２０に出力する。
【００３７】
デコーダ１２０は、ＭＷＱ９６が出力したスクラブライトのコマンド及びアドレスをデコードし、スクラブライトのコマンド及びアドレスをコマンド発行部１３２に出力する。
【００３８】
コマンド発行部１３２は、デコーダ１２０から出力されたスクラブライトのコマンド及びアドレスをメモリ１０８に出力する。
【００３９】
メモリ１０８は、コマンド発行部１３２から出力されたスクラブライトのコマンドを受信すると、コマンド発行部１３２から出力されたアドレスに格納されているデータをデータ送受信部１１８に出力する。
【００４０】
データ送受信部１１８は、メモリ１０８から出力されたデータを受信する。メモリコントローラ１０６Ａのデータ送受信部１１８Ａは、メモリ１０８Ａから出力されたデータを、ＭＲＱ９５Ａを介してセレクタ１２６に出力する。セレクタ１２６は、データ送受信部１１８Ａから受信したデータをセレクタ１２８に出力する。メモリコントローラ１０６Ｂにおいても、データ送受信部１１８Ｂがセレクタ１２７にデータを出力するなど、同様の処理が行われる。
【００４１】
セレクタ１２８は、セレクタ１２６から受信したメモリコントローラ１０６Ａからのデータ及びセレクタ１２７から受信したメモリコントローラ１０６Ｂからのデータに対してＥＣＣを用いて誤り訂正を行う。セレクタ１２８は訂正後のそれぞれのデータをスクラブコントロールマスタ回路１３０に出力する。セレクタ１２８は正常なデータを選択して出力する。
【００４２】
スクラブコントロールマスタ回路１３０は、セレクタ１２８から受信した訂正後のデータと、メモリコントローラ１０６Ａのスクラブコントロールスレーブ回路１２２Ａ及びメモリコントローラ１０６Ｂのスクラブコントロールスレーブ回路１２２Ｂから受信したアドレス及びライトコマンドをメモリコントローラ１０６Ａのセレクタ８８Ａ及びメモリコントローラ１０６Ｂのセレクタ８８Ｂに出力する。なお、ライトコマンドは、スクラブコントロールマスタ回路１３０によって生成される。
【００４３】
各メモリコントローラ１０６のセレクタ８８は、スクラブコントロールマスタ回路１３０から受信したデータ、アドレス、ライトコマンドを、ＭＷＱ９６を介してデコーダ１２０に出力する。デコーダ１２０は、ＭＷＱ９６から受信したデータ等をデコードし、データをデータ送受信部１１８に、アドレス及びライトコマンドをコマンド発行部１３２に出力する。
【００４４】
コマンド発行部１３２は、デコーダ１２０から出力されたライトコマンド及びアドレスをメモリ１０８に出力する。また、データ送受信部１１８は、デコーダ１２０から出力されたデータをメモリ１０８に出力する。
【００４５】
メモリ１０８は、デコーダ１２０から出力されたライトコマンドを受信すると、データ送受信部１１８から出力されたデータをデコーダ１２０から出力されたアドレスに書き込む。メモリコントローラ１０６Ｂにおいても同様の処理が行われる。スクラブライト動作は完了する。この動作によりエラーを生じたデータが修正される。
【００４６】
続いて、メモリシステムの縮退運転時について説明する。本実施形態では、図３に示すデータクロスバ１１２Ｂが故障した場合について説明する。ここでは、メモリリード時について説明する。
【００４７】
図３に示すデータクロスバ１１２Ｂが故障した場合、スクラブコントロールマスタ回路１３０には、信号線１１１１Ｂから信号が入力しないため、メモリ１０８Ａから読み出されたデータは、直接ＤＸＯＱ９９Ａには送出されず、一度セレクタ１２６、セレクタ１２８を経由して、スクラブコントロールマスタ回路１３０に送出される。ここで、スクラブコントロールマスタ回路１３０に、信号線１１１１Ｂから信号が入力しない場合、ＭＲＱ９５Ｂからセレクタ８９Ｂのパス選択が無効化される。
【００４８】
スクラブコントロールマスタ回路１３０は、メモリコントローラ１０６Ａのセレクタ８９Ａ及びメモリコントローラ１０６Ｂのセレクタ８９Ｂにデータのブロードキャストを行う。そして、メモリコントローラ１０６Ａのセレクタ８９Ａから、信号線１１２１Ｂを介して他のシステムボードにデータが出力される。なお、ここで、メモリコントローラ１０６Ｂにおいて、データがＤＸＯＱ９９Ｂに送出されないのは、信号線１１１１Ｂからの信号入力がないため、セレクタ８９ＢがＤＸＯＱ９９Ｂのパスを選択しないためである。
【００４９】
また、他のシステムボードから出力されるライトデータは、故障していないデータクロスバ１１２Ａを通して、信号線１１２１Ａ、ＤＸＩＱ９８Ａ、セレクタ１２６、セレクタ１２８を介してスクラブコントロールマスタ回路１３０に入力する。
【００５０】
ここで、図３を用いてデータクロスバの故障の検出について説明する。なお、図１及び図２を用いて説明したものについては同一番号を付し、その説明を省略する。
【００５１】
データクロスバ１１２Ａは、訂正不可能エラー検出部１０９１Ａ及び訂正不可能エラー検出部１０９１Ｂを有する。データクロスバ１１２Ｂは、訂正不可能エラー検出部１０９２Ａ及び訂正不可能エラー検出部１０９２Ｂを有する。訂正不可能エラー検出部１０９１Ａは、ＥＣＣを用いて、信号線１１２１Ａを流れるデータに訂正不可能なエラーが存在するか否かを検出する。訂正不可能なエラーがデータに存在しない場合、訂正不可能エラー検出部１０９１Ａは、アライブ信号を信号線１１１１Ａを介して、メモリコントローラ１０６Ａのセレクタ８８Ａ及びシステムコントローラ１０４内のスクラブコントロールマスタ回路１３０に入力する。アライブ信号とは、データクロスバ１１２Ａが正常に稼働していることをシステムボード１００Ａに通知するための信号である。一方、訂正不可能なエラーがデータに存在する場合、訂正不可能エラー検出部１０９１Ａは、信号線１１１１Ａを介してアライブ信号を出力しない。メモリコントローラ１０６Ａのセレクタ８８Ａ及びスクラブコントロールマスタ回路１３０は、訂正不可能エラー検出部１０９１Ａからアライブ信号の入力があるか否かに応じてパスを切り換えることができる。
【００５２】
同様に、訂正不可能エラー検出部１０９２Ａは、ＥＣＣを用いて、信号線１１２２Ａを流れるデータに訂正不可能なエラーが存在するか否かを検出する。訂正不可能なエラーがデータに存在しない場合、訂正不可能エラー検出部１０９２Ａは、アライブ信号を信号線１１１１Ｂを介して、メモリコントローラ１０６Ｂのセレクタ８８Ｂ及びスクラブコントロールマスタ回路１３０に入力する。一方、訂正不可能なエラーが存在する場合、訂正不可能エラー検出部１０９２Ａは、アライブ信号を信号線１１１１Ｂを介して、セレクタ８８Ｂ及びスクラブコントロールマスタ回路１３０に入力しない。メモリコントローラ１０６Ｂのセレクタ８８Ｂ及びスクラブコントロールマスタ回路１３０は、訂正不可能エラー検出部１０９Ｂからアライブ信号の入力があるか否かに応じてパスを切り換えることができる。
【００５３】
訂正不可能エラー検出部１０９１Ｂも信号線１１２１Ｂを流れるデータに訂正不可能なエラーが存在するか否かを検出し、アライブ信号を信号線１１１２Ａを介して入力するか否かを決定する。訂正不可能エラー検出部１０９２Ｂも信号線１１２２Ｂを流れるデータに訂正不可能なエラーが存在するか否かを検出し、アライブ信号を信号線１１１２Ｂを介して入力するか否かを決定する。
【００５４】
再び、図２を用いてまずは、データ書き込み時について説明する。ここでは、メモリコントローラ１０６Ｂに接続されたデータクロスバが故障している状況について説明する。ＤＸＩＱ９８Ａは他のシステムボードから信号線１１２１Ａを介して受信したデータを格納する。ＤＸＩＱ９８Ａは格納したデータをセレクタ１２６に出力する。なお、ここで説明している各要素は、１０６Ａ側の要素である。セレクタ１２６は、ＤＸＩＱ９８Ａが出力したデータをセレクタ１２８に出力する。セレクタ１２８は、セレクタ１２６が出力したデータをスクラブコントロールマスタ回路１３０に出力する。メモリコントローラ１０６Ｂは他システムボードからデータを受信しないので、セレクタ１２８にはセレクタ１２７を介してデータは入力しない。
【００５５】
スクラブコントロールマスタ回路１３０は、セレクタ１２８が出力したデータをメモリコントローラ１０６Ａのセレクタ８８Ａ及びメモリコントローラ１０６Ｂのセレクタ８８Ｂに出力する。また、セレクタ１２５は、他のシステムボードからアドレスクロスバ１１０Ａまたは１１０Ｂを介して受信したライトコマンド及びアドレスを、メモリコントローラ１０６Ａのセレクタ８８Ａ及びメモリコントローラ１０６Ｂのセレクタ８８Ｂに出力する。メモリコントローラ１０６Ａ、メモリコントローラ１０６Ｂも同様の処理を行うので、本実施形態ではメモリコントローラ１０６Ａの処理について説明し、メモリコントローラ１０６Ｂの処理の説明は省略する。
【００５６】
セレクタ８８Ａは、スクラブコントロールマスタ回路１３０から受信したデータ及びセレクタ１２５から受信したライトコマンド及びアドレスをＭＷＱ９６Ａに出力する。ＭＷＱ９６Ａは、セレクタ８８Ａが出力したデータ、ライトコマンド及びアドレスをデコーダ１２０Ａに出力する。
【００５７】
デコーダ１２０Ａは、ＭＷＱ９６Ａが出力したデータ、ライトコマンド及びアドレスをデコードする。デコーダ１２０Ａは、ライトコマンド及び当該アドレスをコマンド発行部１３２Ａに出力する。デコーダ１２０Ａは、データをデータ送受信部１１８Ａに出力する。
【００５８】
コマンド発行部１３２Ａは、デコーダ１２０Ａから出力されたライトコマンド及びアドレスをメモリ１０８Ａに出力する。データ送受信部１１８Ａは、デコーダ１２０Ａから出力されたデータをメモリ１０８Ａに出力する。
【００５９】
メモリ１０８Ａは、デコーダ１２０Ａから出力されたライトコマンドを受信すると、デコーダ１２０Ａから出力されたアドレスにデータ送受信部１１８Ａから出力されたデータを書き込む。システムボード１０４により、一方のデータクロスバのみから受信したデータを双方のメモリ１０８に書き込むことができ、これによって二重化が可能になる。
【００６０】
続いて、データ読み出し時について説明する。ここでは、メモリコントローラ１０６Ｂに接続されたデータクロスバ１１２Ｂが故障している状況について説明する。データ読み出し時には、アドレスクロスバ１１０を介した他システムボードからのアドレス及びリードコマンド、もしくは、ＣＰＵ１０２からのアドレス及びリードコマンドがセクレタ１２５等を介して、各メモリコントローラのデコーダ１２０に入力する。
【００６１】
各デコーダ１２０は、リードコマンド及びアドレスをコマンド発行部１３２に出力する。各コマンド発行部１３２は、デコーダ１２０から出力されたリードコマンド及びアドレスをメモリ１０８に出力する。
【００６２】
各メモリ１０８は、デコーダ１２０から出力されたリードコマンドを受信すると、デコーダ１２０から出力されたアドレスに格納されているデータをデータ送受信部１１８に出力する。
【００６３】
各データ送受信部１１８は、メモリ１０８から出力されたデータを受信する。データ送受信部１１８は、メモリ１０８から出力されたデータをＭＲＱ９５に出力する。メモリコントローラ１０６ＡのＭＲＱ９５Ａは、データ送受信部１１８が出力したデータをセレクタ１２６に出力する。メモリコントローラ１０６ＢのＭＲＱ９５Ｂも、同様にデータをセレクタ１２７に出力する。
【００６４】
セレクタ１２６はＭＲＱ９５Ａが出力したデータをセレクタ１２８に出力する。セレクタ１２７も同様にメモリコントローラ１０６ＢのＭＲＱ９５Ｂが出力したデータをセレクタ１２８に出力する。
【００６５】
セレクタ１２８は、ＥＣＣを用いて、セレクタ１２６及びセレクタ１２７が出力したデータのエラー検出を行う。セレクタ１２８は、エラーが検出されなかったデータを選択して、ＣＰＵ１０２に出力する。
【００６６】
ＣＰＵ１０２は、セレクタ１２８が出力したデータを受信する。ＣＰＵ１０２は、当該データを他のシステムコントローラに出力する場合、当該データをメモリコントローラ１０６Ａのセレクタ８９Ａにセレクタ１２５を介して出力する。セレクタ８９ＡはＣＰＵ１０２が出力したデータをＤＸＯＱ９９Ａに出力する。ＤＸＯＱ９９Ａはセレクタ８９Ａが出力したデータを格納する。ＤＸＯＱ９９Ａは、格納したデータを信号線１１２１Ｂを介して他のシステムボードに出力する。
【００６７】
図４を用いて、システムコントローラ１０４の処理について説明する。ステップＳ１０１において、システムコントローラ１０４は、信号線１１１１Ａ及び信号線１１１１Ｂからアライブ信号を受信しているか否かを判定する。信号線１１１１Ａ及び信号線１１１１Ｂからアライブ信号を受信している場合、処理はステップＳ１０２へ移行する。一方、信号線１１１１Ａ及び信号線１１１１Ｂのいずれか一方からアライブ信号を受信していない場合、処理はステップＳ１０３へ移行する。
【００６８】
ステップＳ１０２において、システムコントローラ１０４は、信号線１１１１Ａ及び信号線１１１１Ｂのいずれか一方の信号線からアライブ信号を受信しているか否かを判定する。信号線１１１１Ａ及び信号線１１１１Ｂのいずれか一方の信号線からアライブ信号を受信している場合、処理はステップＳ１０４へ移行する。一方、信号線１１１１Ａ及び信号線１１１１Ｂのいずれか一方の信号線からもアライブ信号を受信していない場合、処理はステップＳ１０５へ移行し、システムコントローラ１０４は、システムはダウンしていると判定する。処理は終了する。
【００６９】
ステップＳ１０４において、システムコントローラ１０４は、他のシステムボードからアドレスクロスバ１１０を介してメモリリードアクセスを受信したか否かを判定する。システムコントローラ１０４が、他のシステムボードからメモリリードアクセスを受信した場合、処理はステップＳ１０６へ移行する。一方、システムコントローラ１０４が、他のシステムボードからメモリリードアクセスを受信していない場合、処理はステップＳ１０３へ移行する。
【００７０】
ステップＳ１０６において、システムコントローラ１０４は、受信したリードコマンドを二重化されたメモリコントローラそれぞれにブロードキャストする。処理はステップＳ１０３へ移行する。
【００７１】
ステップＳ１０３において、システムコントローラ１０４は、スクラブコントロールスレーブ回路１２２からスクラブライト要求の通知があるか否かを判定する。スクラブコントロールスレーブ回路１２２からスクラブライト要求の通知がある場合、処理はステップＳ１０７へ移行する。一方、スクラブコントロールスレーブ回路１２２からスクラブライト要求の通知がない場合、処理は終了する。
【００７２】
ステップＳ１０７において、システムコントローラ１０４は、スクラブライト命令を二重化されたメモリコントローラそれぞれに出力する。処理は終了する。
【００７３】
図５を用いて、メモリコントローラ１０６Ａの処理について説明する。ステップＳ２０１において、メモリコントローラ１０６Ａは、データ送受信部１１８Ａがメモリ１０８Ａから読み出したデータをＭＲＱ９５Ａを介して受信する。処理はステップＳ２０２へ移行する。
【００７４】
ステップＳ２０２において、メモリコントローラ１０６ＡはＥＣＣを用いて受信したデータにエラーが存在するか否かを判定する。受信したデータにエラーが存在する場合、処理はステップＳ２０３へ移行する。一方、受信したデータにエラーが存在しない場合、処理は終了する。
【００７５】
ステップＳ２０３において、メモリコントローラ１０６Ａは、スクラブコントロールマスタ回路１３０にスクラブ要求を出力する。処理は終了する。
【００７６】
本実施形態の有用性について説明する。例えば、図６に表した情報処理装置を考える。データクロスバ１１２の一方が故障し、メモリシステムが縮退運転をしている場合、システムボード１００Ａの一方のメモリコントローラ１０６及びメモリ１０８は稼働を停止してしまうため、同一システムボード１００Ａ内で二重化されたメモリコントローラ及び二重化されたメモリは互いに同期動作をすることができなくなってしまう。
【００７７】
また、例えば、図７に表した情報処理装置を考える。データクロスバ１１２の一方が故障し、メモリシステムが縮退運転をしている場合、システムボード１００Ａの稼働しているメモリコントローラ１０６がメモリ１０８から読み出したデータに訂正不可能なエラーが存在する場合、メモリシステムは停止してしまう。
【００７８】
本実施形態によれば、図８に表したように、データクロスバ１１２の一方が故障し、メモリシステムが縮退運転をしている場合でも、システムボード１００Ａのシステムコントローラ１０４が二重化されたメモリ１０８それぞれからデータを読み出す。ゆえに、読み出したデータのいずれか一方のデータに訂正不可能なエラーが存在した場合であっても、他方のデータが正常なデータであったり、訂正可能なエラーが存在するデータであったりすれば、それらのデータを使うことによって、システムがダウンしてしまうことを防ぐことができる。
【００７９】
本実施形態ではメモリコントローラ１０６のセレクタ８８及びセレクタ８９に、Ａｌｉｖｅ  Ｄｏｗｎ信号を受け、経路を変更する機能を追加する。データクロスバ１１２の故障で縮退が発生した場合、メモリコントローラで処理を完了せず、システムコントローラ１０４のスクラブコントロールマスタ回路１３０経由で処理を行う。スクラブコントロールマスタ回路１３０に、メモリコントローラ１０６からの折り返しのパスを設ける。セレクタ１２８が、メモリコントローラ１０６からスクラブコントロールマスタ回路１３０へのデータ折り返しを行なっている。スクラブコントロールマスタ回路１３０にメモリアクセス変換機能を追加する。折りかえりパス経由のメモリライトはメモリライト２、折りかえりパス経由のメモリリードはメモリリード２に変換を行う。この変換は、Ａｌｉｖｅ  Ｄｏｗｎ信号を受信したときに有効となる。スクラブコントロールマスタ回路１３０に上記の変換結果のコマンドを発行できるようにする。メモリコントローラ１０６内のコマンド発行部に、メモリライト２、メモリリード２をデコードする機能を設ける。通常は、データクロスバ経由のメモリアクセスは、メモリコントローラから直接メモリに行われる。データクロスバのみを縮退し、メモリシステムを有効活用しようとした場合、縮退しているデータクロスバ部を、あたかも動作しているように見せかける必要がある。見せかける対象はメモリコントローラである。
【符号の説明】
【００８０】
０  情報処理装置
８８Ａ、８８Ｂ、８９Ａ、８９Ｂ、１２５、１２６，１２７、１２８  セレクタ
９５Ａ、９５Ｂ  メモリリードキュー
９６Ａ、９６Ｂ  メモリライトキュー
９８Ａ、９８Ｂ  データクロスバインキュー
９９Ａ、９９Ｂ  データクロスバアウトキュー
１００Ａ、１００Ｂ  システムボード
１０２  ＣＰＵ
１０４  システムコントローラ
１０６、１０６Ａ、１０６Ｂ、１０６Ｃ、１０６Ｄ  メモリコントローラ
１０８、１０８Ａ、１０８Ｂ、１０８Ｃ、１０８Ｄ  メモリ
１０９１Ａ、１０９１Ｂ、１０９２Ａ、１０９２Ｂ  訂正不可能エラー検出部
１１０Ａ、１１０Ｂ  アドレスクロスバ
１１１１Ａ、１１１１Ｂ、１１１２Ａ、１１１２Ｂ、１１２１Ａ、１１２１Ｂ、１１２２Ａ、１１２２Ｂ  信号線
１１２、１１２Ａ、１１２Ｂ  データクロスバ
１１８、１１８Ａ、１１８Ｂ  データ送受信部
１２０、１２０Ａ、１２０Ｂ  デコーダ
１２２、１２２Ａ、１２２Ｂ  スクラブコントロールスレーブ回路
１３０  スクラブコントロールマスタ回路
１３２、１３２Ａ、１３２Ｂ  コマンド発行部
【図１】
2011036727.tif 000003
【図２】
2011036727.tif 000004
【図３】
2011036727.tif 000005
【図４】
2011036727.tif 000006
【図５】
2011036727.tif 000007
【図６】
2011036727.tif 000008
【図７】
2011036727.tif 000009
【図８】
2011036727.tif 000010
【国際調査報告】
2011036727.tif 000011
2011036727.tif 000012