(57)【要約】【課題】単一の主記憶装置で安価にメモリミラーリングを可能とするメモリコントローラなどを提供する。【解決手段】  本発明に係るメモリコントローラ２０は、各々に独立してデータを読み書き可能な複数のランクを有するメモリモジュール４０〜４１を実装可能であって、外部からの動作命令をメモリモジュールへのメモリアクセス命令に変換して発行するメモリアクセス命令生成部２１と、メモリモジュールの複数のランクを通常系および退避系に分けて制御し、ライト命令の場合には通常系および退避系のランクに同一データを書き込み、リード命令の場合には通常系のランクから記憶データを読み出すメモリチャネル制御部２２と、メモリモジュールから読み出された記憶データのエラーを検出するエラー検出・訂正回路２３とを有し、訂正不可能エラーを検出した場合に通常系のランクを無効とし、退避系のランクからデータを読み出させてエラーの検出を再試行する。【選択図】図１
2010102640.tif 000002
【特許請求の範囲】
【請求項１】
各々に独立してデータを読み書き可能な複数のランク（ＲＡＮＫ）を有するメモリモジュールを実装して使用可能なメモリコントローラであって、
外部からの動作命令を前記メモリモジュールへのメモリアクセス命令に変換して発行するメモリアクセス命令生成部と、
前記メモリモジュールの前記複数のランクを通常系および退避系に分けて制御対象とし、前記メモリアクセス命令がライト命令である場合には前記通常系および退避系のランクに同一データを書き込み、前記メモリアクセス命令がリード命令である場合には前記通常系のランクから記憶データを読み出すメモリチャネル制御部と、
前記メモリモジュールから読み出された前記記憶データのエラーを検出するエラー検出・訂正回路とを有し、
前記エラー検出・訂正回路が前記記憶データに訂正不可能エラーを検出した場合、前記エラー検出・訂正回路が前記通常系のランクを無効とし、前記メモリチャネル制御部に前記退避系のランクからデータを読み出させて前記エラーの検出を再試行する再試行処理を行うことを特徴とするメモリコントローラ。
【請求項２】
前記複数のランクの各々が有効であるか否かを表す有効フラグを記憶するメモリミラーリングフラグ記憶部を有し、
前記エラー検出・訂正回路が前記記憶データに訂正不可能エラーを検出した場合、前記エラー検出・訂正回路が前記メモリミラーリングフラグ記憶部で前記訂正不可能エラーを検出したランクの前記有効フラグを無効とすることを特徴とする、請求項１に記載のメモリコントローラ。
【請求項３】
前記メモリミラーリングフラグ記憶部が、前記複数のランクの中に前記再試行処理に使用可能なランクが残っているか否かを示す代表フラグを記憶していることを特徴とする、請求項２に記載のメモリコントローラ。
【請求項４】
前記メモリモジュールを複数個接続可能であり、
前記メモリアクセス命令生成部が前記複数個のメモリモジュールに対して命令を振り分けるメモリインターリーブ制御を行うことを特徴とする、請求項１に記載のメモリコントローラ。
【請求項５】
前記メモリモジュールが国際組織であるＪＥＤＥＣによって定められた規格に準拠したＳＤＲＡＭであることを特徴とする、請求項１に記載のメモリコントローラ。
【請求項６】
前記メモリモジュールが前記ＪＥＤＥＣ規格に準拠したＤＤＲ  ＳＤＲＡＭ、ＤＤＲ２  ＳＤＲＡＭ、ＤＤＲ３  ＳＤＲＡＭのうちのいずれか一つであることを特徴とする、請求項５に記載のメモリコントローラ。
【請求項７】
各々に独立してデータを読み書き可能な複数のランク（ＲＡＮＫ）を有するメモリモジュールと、
前記メモリモジュールを制御してデータを読み書きするメモリコントローラとを有し、
前記メモリコントローラが請求項１ないし請求項６のうちいずれか１項に記載のメモリコントローラであることを特徴とするコンピュータ。
【請求項８】
各々に独立してデータを読み書き可能な複数のランク（ＲＡＮＫ）を有するメモリモジュールの前記複数のランクを通常系および退避系に分け、前記通常系および退避系のランクの各々にデータを二重化して書き込むメモリミラーリング方法であって、
外部からの動作命令を受けたメモリアクセス命令生成部が全動作命令を前記メモリモジュールへのメモリアクセス命令に変換して発行し、
前記メモリアクセス命令がライト命令である場合にはメモリチャネル制御部が前記ライト命令に付随するライトデータを前記通常系および退避系のランクに書き込み、
前記メモリアクセス命令がリード命令である場合には前記メモリチャネル制御部が前記通常系のランクから記憶データを読み出し、
エラー検出・訂正回路が前記通常系のランクから読み出された前記記憶データのエラーを検出し、
前記記憶データに訂正不可能エラーを検出した場合、前記エラー検出・訂正回路が前記メモリモジュールの前記通常系のランクを無効とすると共に、前記メモリチャネル制御部に前記退避系のランクからデータを読み出させて前記エラーの検出を再試行する再試行処理を行う
ことを特徴とするメモリミラーリング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータの主記憶装置に関し、特に記憶された内容を二重化して記憶するメモリミラーリングに関する。
【背景技術】
【０００２】
コンピュータ装置で使われる主記憶装置（ＲＡＭ: Random Access Memory）は、揮発性のものがほとんどである。そこで記憶された内容がエラーを起こすと、もうその内容を復元することは不可能である。ＥＣＣ（Error Correcting Code）などのように、記憶された内容がエラーを起こした場合に検出および訂正する仕組みを持つものも多く使われているが、それでも検出や訂正が不可能なエラーが発生する場合もある。
【０００３】
そこで、主記憶装置を二重化してその各々に同内容を記憶し、一方の内容でエラーを起こしても、もう一方の内容で処理を続行できるようにすることも当然考えられている。これを、ここではメモリミラーリングという。主記憶装置のメモリミラーリングは、複数のメモリモジュールと、複数のメモリチャネルを制御可能なメモリコントローラとがあれば容易に実現できる。
【０００４】
メモリミラーリングについて、次のような技術文献がある。特許文献１には、第一メモリ装置と第二メモリ装置の複数メモリモジュールからなるメモリミラーリング制御の主記憶装置が記載されている。特許文献２には、二面構成としたメモリの各々に同一アドレスを割り当ててその双方に同内容を記憶して疑似二重化を実現した主記憶装置が記載されている。特許文献３には、メモリセルを２重化しさらに誤り検査手段を追加したメモリモジュールが記載されている。さらに特許文献４には、プライマリーデータと冗長データを同じメモリアセンブリの別々のチャネルに記憶するという主記憶装置が記載されている。
【０００５】
【特許文献１】特開２００８−１３４８０９号公報
【特許文献２】特開平０２−２４８７５５号公報
【特許文献３】特開平０９−２８８６１９号公報
【特許文献４】特表２００６−５０５８６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１，３，４にも記載されたこのメモリミラーリングについては、以下で示すような各々の問題点がある。前述のように、主記憶装置のメモリミラーリングには、複数のメモリモジュールと、複数のメモリチャネルを別々に制御可能なメモリコントローラとが必要である。異なるメモリチャネル配下の異なるメモリモジュールを同期制御しライト動作では同一データを書き込み、リード動作では同一アドレスを読み出し制御することによってメモリミラーリングを実現するので、最低限２個以上のメモリモジュールと、それらのメモリモジュールを別々のメモリチャネルとして制御可能なメモリコントローラとが必須となる。
【０００７】
複数メモリチャネル配下の複数メモリモジュール間でメモリミラーリングを行うと、メモリミラーリング実現のため最低限２つのメモリチャネルを制御系と待機系のペアとして同一制御するため、非メモリミラーリング時と比べてメモリ容量と同様にメモリチャネル数が半分になる。このため、インターリーブ数が半減し、メモリインターリーブによる高速化の効果も半減するので、非メモリミラーリング時と比べてメモリチャネルのスループットが低下することになる。
【０００８】
さらに、単純にメモリモジュールにかかるコストが倍増するのに加えて、通常系と待機系の各々に専用の制御回路およびエラー検出回路なども必要になるので、高コストになるという問題もある。
【０００９】
特許文献２に記載されたように、単一の主記憶装置の領域を２つに分け、擬似的にメモリミラーリングを行おうとする技術もある。しかしながらこの技術は、読み出し専用のデータ（プログラム）をあらかじめ二重に登録しておき、障害が発生した時に待機系に切り替えるというものである。
【００１０】
これをＲＡＭ、特に現在のパーソナルコンピュータにおいて主流となっているＪＥＤＥＣ（Joint Electron Device Engineering Council）によって定められた規格に準拠したＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）に適用することを考えた場合、単一のＳＤＲＡＭの領域を２つに分けただけでは、そのＳＤＲＡＭが故障した場合には全ての領域が一度に故障するので、単一の主記憶装置の領域を２つに分けてメモリミラーリングという動作自体が不可能である。従って、特許文献２、およびこれに残る特許文献１、３、４を組み合わせた技術では、前述のような問題を解決できない。
【００１１】
本発明の目的は、単一の主記憶装置で安価にメモリミラーリングを可能とするメモリコントローラ、コンピュータ、およびメモリミラーリング方法を提供することにある。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、本発明に係るメモリコントローラは、各々に独立してデータを読み書き可能な複数のランク（ＲＡＮＫ）を有するメモリモジュールを実装して使用可能なメモリコントローラであって、外部からの動作命令をメモリモジュールへのメモリアクセス命令に変換して発行するメモリアクセス命令生成部と、メモリモジュールの複数のランクを通常系および退避系に分けて制御対象とし、メモリアクセス命令がライト命令である場合には通常系および退避系のランクに同一データを書き込み、メモリアクセス命令がリード命令である場合には通常系のランクから記憶データを読み出すメモリチャネル制御部と、メモリモジュールから読み出された記憶データのエラーを検出するエラー検出・訂正回路とを有し、エラー検出・訂正回路が記憶データに訂正不可能エラーを検出した場合、エラー検出・訂正回路が通常系のランクを無効とし、メモリチャネル制御部に退避系のランクからデータを読み出させてエラーの検出を再試行する再試行処理を行うことを特徴とする。
【００１３】
上記目的を達成するため、本発明に係るコンピュータは、各々に独立してデータを読み書き可能な複数のランク（ＲＡＮＫ）を有するメモリモジュールと、メモリモジュールを制御してデータを読み書きするメモリコントローラとを有し、メモリコントローラが請求項１ないし請求項６のうちいずれか１項に記載のメモリコントローラであることを特徴とする
【００１４】
上記目的を達成するため、本発明に係るメモリミラーリング方法は、各々に独立してデータを読み書き可能な複数のランク（ＲＡＮＫ）を有するメモリモジュールの複数のランクを通常系および退避系に分け、通常系および退避系のランクの各々にデータを二重化して書き込むメモリミラーリング方法であって、外部からの動作命令を受けたメモリアクセス命令生成部が全動作命令をメモリモジュールへのメモリアクセス命令に変換して発行し、メモリアクセス命令がライト命令である場合にはメモリチャネル制御部がライト命令に付随するライトデータを通常系および退避系のランクに書き込み、メモリアクセス命令がリード命令である場合にはメモリチャネル制御部が通常系のランクから記憶データを読み出し、エラー検出・訂正回路が通常系のランクから読み出された記憶データのエラーを検出し、記憶データに訂正不可能エラーを検出した場合、エラー検出・訂正回路がメモリモジュールの通常系のランクを無効として、メモリチャネル制御部に退避系のランクからデータを読み出させてエラーの検出を再試行する再試行処理を行うことを特徴とする。
【発明の効果】
【００１５】
本発明は、上述したように複数のランク（ＲＡＮＫ）を通常系および退避系として制御し、各々に同一データを書き込み、通常系から読み出したエラーを検出した場合に退避系に切り替えるように構成したので、特別なハードウェアを必要とせずにメモリミラーリングの動作が行える。これによって、単一の主記憶装置で安価にメモリミラーリングを可能であるという、従来にない優れたメモリコントローラ、コンピュータ、およびメモリミラーリング方法を提供することができる。
【発明を実施するための最良の形態】
【００１６】
（第１の実施形態）
以下、本発明の第１の実施形態の構成について添付図１に基づいて説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本発明の第１の実施形態に係るメモリコントローラ２０は、各々に独立してデータを読み書き可能な複数のランク（ＲＡＮＫ）を有するメモリモジュール４０〜４１を実装して使用可能なメモリコントローラである。外部からの動作命令をメモリモジュール４０〜４１へのメモリアクセス命令に変換して発行するメモリアクセス命令生成部２１と、メモリモジュール４０〜４１の複数のランクを通常系および退避系に分けて制御対象とし、メモリアクセス命令がライト命令である場合には通常系および退避系のランクに同一データを書き込み、メモリアクセス命令がリード命令である場合には通常系のランクから記憶データを読み出すメモリチャネル制御部２２と、メモリモジュール４０〜４１から読み出された記憶データのエラーを検出するエラー検出・訂正回路２３とを有し、エラー検出・訂正回路２３が記憶データに訂正不可能エラーを検出した場合、エラー検出・訂正回路２３が通常系のランクを無効とし、メモリチャネル制御部２２に退避系のランクからデータを読み出させてエラーの検出を再試行する再試行処理を行う。
【００１７】
ここでメモリコントローラ２０は、複数のランクの各々が有効であるか否かを表す有効フラグを記憶するメモリミラーリングフラグ記憶部２４を有し、エラー検出・訂正回路２３が記憶データに訂正不可能エラーを検出した場合、エラー検出・訂正回路がメモリミラーリングフラグ記憶部で訂正不可能エラーを検出したランクの有効フラグを無効とする。そしてメモリミラーリングフラグ記憶部２４が、複数のランクの中に再試行処理に使用可能なランクが残っているか否かを示す代表フラグを記憶している。
【００１８】
メモリアクセス命令生成部２１は、複数個のメモリモジュール４０〜４１に対して命令を振り分けるメモリインターリーブ制御を行う。そしてメモリモジュール４０〜４１は、国際組織であるＪＥＤＥＣによって定められた規格に準拠した（以後ＪＥＤＥＣ準拠という）ＤＤＲ  ＳＤＲＡＭ、ＤＤＲ２  ＳＤＲＡＭ、ＤＤＲ３  ＳＤＲＡＭのうちのいずれか一つである。
【００１９】
このように構成することにより、メモリコントローラ２０は、ＤＤＲ  ＳＤＲＡＭなどが標準的に備える構造を利用して、特別な構成を持つことなく安価にメモリミラーリングの動作を行うことが可能となる。
以下、これをより詳細に説明する。
【００２０】
図１は、本発明の第１の実施形態に係るコンピュータ１０の構成を示す説明図である。コンピュータ１０には、各々にメモリモジュールを実装可能な２系統のメモリスロット３０および３１と、それらのメモリスロットに各々実装されたメモリモジュール４０および４１、そしてメモリモジュール４０および４１を制御するメモリコントローラ２０、そしてメモリコントローラ２０にメモリアクセス命令を発行するプロセッサ１１を含む。コンピュータを構成するには、それら以外にも多くの部品および装置が使用されるが、それらについては公知である。
【００２１】
メモリコントローラ２０は、外部からの動作命令３００をメモリアクセス命令４００に変換してメモリチャネル制御部２２に発行するメモリアクセス命令生成部２１と、メモリアクセス命令４００に基づいてメモリスロット３０および３１の各々に命令を振り分けて発行する（詳細は後述）メモリチャネル制御部２２と、メモリモジュール４０および４１から読み出されたデータ５００を受け取ってエラーの有無を確認してリプライデータ６００として外部の命令元に返却するエラー検出・訂正回路２３と、初期化時に（後述の）ミラーリング構成を設定して記憶するメモリミラーリングフラグ記憶部２４とを有する。
【００２２】
メモリチャネル制御部２２とメモリスロット３０および３１に実装されたメモリモジュール４０および４１との間は、メモリチャネル１００または２００の各々で結ばれている。
【００２３】
メモリチャネル１００は、メモリモジュール４０にアクセスするためのアドレス信号１００ａとチップセレクト信号１００ｃ〜１０３ｃ、およびデータ信号１００ｂをメモリチャネル制御部２２とメモリスロット３０との間でやりとりする。メモリチャネル２００も同様に、メモリモジュール４１にアクセスするためのアドレス信号２００ａとチップセレクト信号２００ｃ〜２０３ｃ、およびデータ信号２００ｂをメモリチャネル制御部２２とメモリスロット３１との間でやりとりする。
【００２４】
また、メモリチャネル制御部２２はメモリミラーリングフラグ記憶部２４に記憶されている内容（詳細は後述）を動作信号７００で参照して、メモリモジュール４０および４１にアクセスするためのチップセレクト信号１００ｃ〜１０３ｃおよび２００ｃ〜２０３ｃを制御する。
【００２５】
図２は、図１に示したメモリモジュール４０または４１の内部構成を示す説明図である。メモリモジュール４０または４１はいずれも、ＪＥＤＥＣ準拠のＤＤＲ  ＳＤＲＡＭ（Double-Data-Rate Synchronous Dynamic Random Access Memory）、ＤＤＲ２  ＳＤＲＡＭ（Double-Data-Rate2 Synchronous Dynamic Random Access Memory）、ＤＤＲ３  ＳＤＲＡＭ（Double-Data-Rate3 Synchronous Dynamic Random Access Memory）のうちのいずれかに該当する。
【００２６】
図２（ａ）は汎用１ランク形式、図２（ｂ）は汎用２ランク形式、図２（ｃ）は汎用４ランク形式の構成を示している。なお、図２（ａ）に示した汎用１ランク形式のメモリモジュール４０（４１）は、本実施例では実装対象外であるが、ここでは図２（ｂ）〜（ｃ）に示した汎用２〜４ランク形式の構成をわかりやすくするために、参考として記載している。また、メモリモジュール４０と４１とで同一の動作をするものについて、以後「メモリモジュール４０（４１）」などのような形で表記する場合がある。
【００２７】
ここでいうランク（RANK）とは、ＤＤＲ  ＳＤＲＡＭ、ＤＤＲ２  ＳＤＲＡＭ、およびＤＤＲ３  ＳＤＲＡＭで導入された概念であり、メモリモジュール（DIMM: Dual Inline Memory Module）の動作を構成する単位である。同一の設計のＳＤＲＡＭで１ランク、２ランク、４ランクといった複数種類の容量が実現できるようになるので、メーカーにとっては開発のコストおよび期間を軽減することができ、ユーザにとっては安価に大容量のメモリ装置を入手することができるというメリットがある。同一のランクに属するＳＤＲＡＭは、同一のチップセレクト信号によって動作を制御することができる。
【００２８】
図２（ａ）に示した汎用１ランク形式のメモリモジュール４０（４１）では、メモリモジュール４０（４１）上の全ＳＤＲＡＭ６１〜６９がランク０に属する。ＳＤＲＡＭ６１〜６８がデータを記憶し、ＳＤＲＡＭ６９はそれらのデータのＥＣＣを記憶する。アドレス信号１００ａ（２００ａ）はメモリモジュール上の全ＳＤＲＡＭ６１〜６９に分配される。チップセレクト信号１００ｃ（２００ｃ）はランク０に属する全ＳＤＲＡＭ６１〜６９に分配される。データ信号１００ｂ（２００ｂ）は全ＳＤＲＡＭ６１〜６９に等分割される。
【００２９】
図２（ｂ）に示した汎用２ランク形式のメモリモジュール４０（４１）では、メモリモジュール４０（４１）上のＳＤＲＡＭ６１〜６９がランク０に、ＳＤＲＡＭ７１〜７９がランク１に属する。ランク０ではＳＤＲＡＭ６１〜６８がデータを記憶し、ＳＤＲＡＭ６９はそれらのデータのＥＣＣを記憶する。ランク１ではＳＤＲＡＭ７１〜７８がデータを記憶し、ＳＤＲＡＭ７９はそれらのデータのＥＣＣを記憶する。
【００３０】
アドレス信号１００ａ（２００ａ）は、メモリモジュール上の全ＳＤＲＡＭ６１〜６９，７１〜７９に分配される。チップセレクト信号１００ｃ（２００ｃ）はランク０に属する全ＳＤＲＡＭ６１〜６９に分配される。チップセレクト信号１０１ｃ（２０１ｃ）はランク１に属する全ＳＤＲＡＭ７１〜７９に分配される。データ信号１００ｂ（２００ｂ）は全ＳＤＲＡＭ６１〜６９，７１〜７９に等分割され、かつランク０とランク１とではデータ線の同一ビットが１：２接続される。
【００３１】
図２（ｃ）に示した汎用４ランク形式のメモリモジュール４０（４１）では、メモリモジュール４０（４１）上のＳＤＲＡＭ６１〜６９がランク０に、ＳＤＲＡＭ７１〜７９がランク１に、ＳＤＲＡＭ８１〜８９がランク２に、ＳＤＲＡＭ９１〜９９がランク３に、各々属する。ランク０ではＳＤＲＡＭ６１〜６８がデータを記憶し、ＳＤＲＡＭ６９はそれらのデータのＥＣＣを記憶する。ランク１ではＳＤＲＡＭ７１〜７８がデータを記憶し、ＳＤＲＡＭ７９はそれらのデータのＥＣＣを記憶する。ランク２ではＳＤＲＡＭ８１〜８８がデータを記憶し、ＳＤＲＡＭ８９はそれらのデータのＥＣＣを記憶する。ランク３ではＳＤＲＡＭ９１〜９８がデータを記憶し、ＳＤＲＡＭ９９はそれらのデータのＥＣＣを記憶する。
【００３２】
アドレス信号１００ａ（２００ａ）は、メモリモジュール上の全ＳＤＲＡＭ６１〜６９，７１〜７９，８１〜８９，９１〜９９に分配される。チップセレクト信号１００ｃ（２００ｃ）はランク０に属する全ＳＤＲＡＭ６１〜６９に分配される。チップセレクト信号１０１ｃ（２０１ｃ）はランク１に属する全ＳＤＲＡＭ７１〜７９に分配される。チップセレクト信号１０２ｃ（２０２ｃ）はランク２に属する全ＳＤＲＡＭ８１〜８９に分配される。チップセレクト信号１０３ｃ（２０３ｃ）はランク３に属する全ＳＤＲＡ９１〜９９に分配される。
【００３３】
データ信号１００ｂ（２００ｂ）は全ＳＤＲＡＭ６１〜６９，７１〜７９，８１〜８９，９１〜９９に等分割され、かつランク０〜３でデータ線の同一ビットが１：４接続される。
【００３４】
図３〜４は、図１に示したメモリミラーリングフラグ記憶部２４の設定例、およびそれによるメモリミラーリング制御の様子を示す説明図である。本実施例では、メモリスロット３０および３１に、図２（ｂ）〜（ｃ）に示した汎用２〜４ランク形式の構成のメモリモジュール４０および４１が実装されていることが必須条件となる。図２（ａ）に示した汎用１ランク形式では、本実施例としてこれから説明する動作は不可能である。
【００３５】
最初に、外部からの初期設定信号８００によって、メモリミラーリングフラグ記憶部２４にはミラーリング制御のための初期設定値が書き込まれる。
【００３６】
メモリスロット３０、３１（各々スロットＡ、スロットＢという）が各々２つのグループ（グループ１、グループ２という）に分割されている。ここでいうグループとはミラーリングを実施する通常系ランクおよび退避系ランクをまとめた単位である。スロットＡのグループ１には４つのフラグＦ１１０〜Ｆ１１３が存在する。スロットＡのグループ２には４つのフラグＦ１２０〜Ｆ１２３が存在する。スロットＢのグループ１にはＦ２１０〜Ｆ２１３が存在する。スロットＢのグループ２にはＦ２２０〜Ｆ２２３が存在する。
【００３７】
またこれらのフラグは各々、有効フラグとランク識別子とで構成されている。たとえばフラグＦ１１０は、有効フラグＦ１１０ａとランク識別子Ｆ１１０ｂとで構成されている。他のスロットおよびグループのフラグについても、有効フラグは末尾に「ａ」を付けた参照記号で呼び、ランク識別子は末尾に「ｂ」を付けた参照記号で呼ぶことにする。
【００３８】
また各グループ内の４つのフラグ間は通常系ランクを決定するための優先順位が存在しており、スロットＡのグループ１を例にするとＦ１１０＞Ｆ１１１＞Ｆ１１２＞Ｆ１１３の優先順位で通常系ランクを決定する。他のスロットおよびグループにおいても同様である。
【００３９】
代表フラグＦ１１、Ｆ１２、Ｆ２１、Ｆ２２はグループ単位で存在し、前記各グループ内の全有効フラグを参照し有効または無効を自動設定される。代表フラグＦ１１は、スロットＡのグループ１の有効フラグＦ１１０ａ〜Ｆ１１３ａによって決定される。代表フラグＦ１２は、スロットＡのグループ２の有効フラグＦ１２０ａ〜Ｆ１２３ａによって決定される。代表フラグＦ２１は、スロットＢのグループ１の有効フラグＦ２１０ａ〜Ｆ２１３ａによって決定される。代表フラグＦ２２は、スロットＢのグループ２の有効フラグＦ２２０ａ〜Ｆ２２３ａによって決定される。
【００４０】
グループ内の全ての有効フラグの値が「無効」であれば、そのグループは非ミラーリング制御と判断され、代表フラグは「無効」となる。グループ内に１つでも「有効」である有効フラグがあれば、そのグループはミラーリング有効と判断され、代表フラグは「有効」となる。
【００４１】
図３（ａ）に示した設定例では、メモリスロット３０および３１（スロットＡおよびスロットＢ）の各々に、図２（ｂ）で示した汎用２ランク形式の構成のメモリモジュール４０および４１が実装されている。スロットＡのグループ１の設定値はメモリミラーリングをランク０とランク１との間（２多重）で実施する事を示しており、前述した優先順位によりランク０が通常系、ランク１が退避系となる。
【００４２】
スロットＡのグループ１のフラグＦ１１０ａ〜Ｆ１１３ａのうち２つが「有効」になっているため、代表フラグＦ１１も「有効」となる。スロットＡのグループ２はＦ１２０ａ〜Ｆ１２３ａ全てが「無効」であるため代表フラグＦ１２は「無効」となる。
【００４３】
ここで運用中にスロットＡのグループ１の通常系ランク０の読み出しデータで訂正不可能エラーが検出された場合、エラー検出・訂正回路２３がＦ１１０ａを「無効」にするため２番目に優先順位の高いＦ１１１に属するランク１が退避系から通常系となる。フラグＦ１１０ａ〜Ｆ１１３ａのうちの１が「有効」であるため、代表フラグＦ１１は「有効」のままである。
【００４４】
さらにスロットＡのグループ１の通常系ランク１の読み出しデータで訂正不可能エラーを検出した場合、エラー検出・訂正回路２３がＦ１１１ａを無効にする。これで代表フラグＦ１１は自動的に無効になって非ミラーリング状態となり、スロットＡのグループ１はリトライ不可となる。スロットＢについても同様の制御を行う。
【００４５】
図３（ｂ）に示した設定例では、メモリスロット３０および３１（スロットＡおよびスロットＢ）の各々に、図２（ｃ）で示した汎用４ランク形式の構成のメモリモジュール４０および４１が実装されている。スロットＡのグループ１の設定値はメモリミラーリングをランク０とランク１との間（２多重）で実施する事を示しており、メモリスロットＡのグループ２の設定値はメモリミラーリングをランク２とランク３（２多重）で実施する事を示している。
【００４６】
即ち、図３（ｂ）の設定例では、スロットＡにて２系等のミラーリンググループが存在することになる。グループ１および２の各々で、図３（ａ）で説明した動作と同一の動作を行うことができる。
【００４７】
図４（ｃ）に示した設定例では、メモリスロット３０および３１（スロットＡおよびスロットＢ）の各々に、図２（ｃ）で示した汎用４ランク形式の構成のメモリモジュール４０および４１が実装されている。スロットＡのグループ１の設定値はメモリミラーリングをランク０〜３の間（４多重）で実施する事を示しており、前述した優先順位によりランク０が通常系、ランク１〜３が退避系となる。
【００４８】
スロットＡのグループ１のフラグＦ１１０ａ〜Ｆ１１３ａのうち４つが「有効」になっているため、代表フラグＦ１１も「有効」となる。スロットＡのグループ２はＦ１２０ａ〜Ｆ１２３ａ全てが「無効」であるため代表フラグＦ１２は「無効」となる。
【００４９】
ここで運用中にスロットＡのグループ１の通常系ランク０の読み出しデータで訂正不可能エラーが検出された場合、エラー検出・訂正回路２３がＦ１１０ａを「無効」にするため２番目に優先順位の高いＦ１１１に属するランク１が退避系から通常系となる。フラグＦ１１０ａ〜Ｆ１１３ａのうちの１が「有効」であるため、代表フラグＦ１１は「有効」のままである。
【００５０】
以後、スロットＡのグループ１の通常系ランク１の読み出しデータで訂正不可能エラーが検出された場合はランク２が退避系から通常系となり、さらにランク２の読み出しデータで訂正不可能エラーが検出された場合はランク３が退避系から通常系となり、ランク００〜３の全てで訂正不可能エラーが検出された場合、初めてエラー検出・訂正回路２３がＦ１１１ａを無効にする。これで代表フラグＦ１１は自動的に無効になって非ミラーリング状態となり、スロットＡのグループ１はリトライ不可となる。このようにスロットＡのグループ１はミラーリング制御を４多重まで継続する。スロットＢについても同様の制御を行う。
【００５１】
以後、図４（ｃ）の設定例と同じく、メモリスロット３０および３１（スロットＡおよびスロットＢ）の各々に、図２（ｃ）で示した汎用４ランク形式の構成のメモリモジュール４０および４１が実装されている状態で、図１に示したコンピュータ１０の動作をより詳細に説明する。図５は、この動作を示すフローチャートである。
【００５２】
まず外部からの初期設定信号８００によって、図４（ｃ）に示した設定値がメモリミラーリングフラグ記憶部２４に書き込まれ、メモリの初期設定が行われる（ステップＳ９０１）。初期設定がなされたメモリコントローラ２０に対し、プロセッサ（図示せず）によって発行された動作命令をメモリアクセス命令生成部２１が受け取り、これをメモリアクセス命令４００に変換し、メモリチャネル制御部２２に対して発行する（ステップＳ９０２）。
【００５３】
メモリチャネル制御部２２はメモリアクセス命令４００に反応して、このメモリアクセス命令４００がリード命令またはライト命令のいずれであるかを判別する（ステップＳ９０３）。メモリチャネルに含まれるアドレス情報からインターリーブ制御としてメモリチャネル１００および２００に命令を振り分ける（ステップＳ９０４）。
【００５４】
メモリチャネル制御部２２はその後、動作信号７００でメモリミラーリングフラグ記憶部２４に記憶されている各フラグの内容を参照する。そしてメモリチャネル制御部２２は、メモリミラーリングフラグ記憶部２４のフラグＦ１１０ａ〜Ｆ１１３ａが全て有効（４多重）になっていることからチップセレクト信号１００ｃ〜１０３ｃをすべて有効にしてメモリモジュール上のランク０〜ランク３に同一データを書き込む（ステップＳ９０５）。メモリチャネル２００においても同様である。これでライト命令に対する処理は終了である。
【００５５】
またメモリチャネル１００にリード命令が発行された場合、メモリチャネル制御部２２はライト命令の場合と同様にインターリーブ制御としてメモリチャネル１００および２００に命令を振り分ける（ステップＳ９０４）。その後、メモリチャネル制御部２２は動作信号７００でメモリミラーリングフラグ記憶部２４に記憶されている各フラグの内容を参照し、メモリミラーリング２４のフラグＦ１１０ａ〜Ｆ１１３ａが全て有効（４多重）になっていることから前述の優先順位からランク０が通常系と判断しチップセレクト信号１００ｃのみを有効にしてメモリモジュール上のランク０からリードデータを読み出す（ステップＳ９０６）。
【００５６】
読み出したデータ５００はメモリチャネル制御部２２を介してエラー検出・訂正回路２３でエラーチェックを実施した後（ステップＳ９０７）、エラーが検出されなければそのままリプライデータ６００として命令発行元のプロセッサ１１に対して出力される（ステップＳ９０８）。
【００５７】
ステップＳ９０７のエラーチェックで訂正可能エラーが検出された場合、エラー検出・訂正回路２３でリプライデータ６００の訂正を行った後（ステップＳ９０９）、訂正後のリプライデータ６００がプロセッサ１１に対して出力される（ステップＳ９０８）。
【００５８】
ステップＳ９０７のエラーチェックで訂正不可能エラーが検出された場合、エラー検出・訂正回路２３は動作信号６０２を送ってメモリミラーリングフラグ記憶部２４のエラー検出したランク０に該当するＦ１１０ａを無効にし（ステップＳ９１０）、その後に代表フラグＦ１１を参照してリトライ可能または不可能の判定をする（ステップＳ９１１）。
【００５９】
この時点では、フラグＦ１１０ａを除くフラグＦ１１１ａ〜Ｆ１１３ａが有効でありかつ代表フラグＦ１１も有効であるため、エラー検出・訂正回路２３はリトライ可能であると判断し（ステップＳ９１１：ＹＥＳ）、ステップＳ９０６に戻って動作信号６０１を介してメモリチャネル制御部２２にリトライ制御として同一アドレスへのリード命令であるメモリアクセス命令４００をメモリアクセス命令生成部２１に発行させる（ステップＳ９０６：２回目）。
【００６０】
メモリチャネル制御部２２はこのリトライのメモリアクセス命令４００をメモリアクセス命令生成部２１から受け取り、これに対応するリード命令をメモリチャネル１００に対して発行する。メモリチャネル制御部２２は、動作信号７００で参照したメモリミラーリングフラグ記憶部２４のフラグＦ１１０ａを除くフラグＦ１１１ａ〜Ｆ１１３ａが有効（３多重）になっていることから、前記優先順位からランク１が通常系と判断し、チップセレクト信号１０１ｃのみを有効にしてメモリモジュール上のランク１からリードデータを読み出す。
【００６１】
読み出したデータ５００は同様にメモリチャネル制御部２２を介してエラー検出・訂正回路２３でエラーチェック実施後（ステップＳ９０７：２回目）、リプライデータ６００としてプロセッサ１１に出力される（ステップＳ９０８：２回目）。以後、ステップＳ９１０でリトライ可能と判定された場合、ステップＳ９０６〜９１１の処理は、３回まで繰り返すことができる。ステップＳ９１１の判断が４回目となれば（ステップＳ９１１：ＮＯ）、もはや利用可能な退避系ランクが残っていないことを意味するので、システムダウンに至ることになる（ステップＳ９１２）。
【００６２】
（第１の実施形態の全体的な動作）
次に、上記の第１の実施形態の全体的な動作について説明する。本実施形態に係る動作は、各各々に独立してデータを読み書き可能な複数のランク（ＲＡＮＫ）を有するメモリモジュールの複数のランクを通常系および退避系に分け、通常系および退避系のランクの各々にデータを二重化して書き込むメモリミラーリング方法であって、外部からの動作命令を受けたメモリアクセス命令生成部が全動作命令をメモリモジュールへのメモリアクセス命令に変換して発行し（図５：ステップＳ９０１）、メモリアクセス命令がライト命令である場合にはメモリチャネル制御部がライト命令に付随するライトデータを通常系および退避系のランクに書き込み（図５：ステップＳ９０５）、メモリアクセス命令がリード命令である場合にはメモリチャネル制御部が通常系のランクから記憶データを読み出し（図５：ステップＳ９０６）、エラー検出・訂正回路が通常系のランクから読み出された記憶データのエラーを検出し（図５：ステップＳ９０７）、記憶データに訂正不可能エラーを検出した場合、エラー検出・訂正回路がメモリモジュールの通常系のランクを無効とすると共に（図５：ステップＳ９１０）、メモリチャネル制御部に退避系のランクからデータを読み出させてエラーの検出を再試行する再試行処理を行う（図５：ステップＳ９１１）。
この動作により、本実施形態は以下のような効果を奏する。
【００６３】
本実施形態によれば、２ランク以上の汎用メモリモジュールを用いて単一メモリチャネル上の単一メモリモジュール構成の中で、主記憶装置のメモリミラーリングが実現可能である。その理由は、２ランク以上の汎用メモリモジュール上の複数ランクを通常系と待機系に割り付け単一メモリモジュール上のランク間でメモリミラーリングを実現するためである。
【００６４】
また本実施形態によれば、複数メモリチャネルで構成されるコンピュータシステムにおいて、非メモリミラーリング時とメモリミラーリング時においてメモリチャネルのスループットが低下しない。その理由は、単一メモリモジュール内でメモリミラーリング可能なため、非メモリミラーリング時とメモリミラーリング時にてインターリーブ数が不変のためスループットは低下しない。
【００６５】
さらに本実施形態によれば、安価に単一メモリモジュール上でのメモリミラーリングが実現可能である。その理由は、ＪＥＤＥＣ準拠のＤＤＲ  ＳＤＲＡＭなどの汎用メモリモジュールの構造をそのまま利用しているため、ほぼ無改造でメモリミラーリングの動作が可能となる。
【００６６】
（第２の実施形態）
図６は、本発明の第２の実施形態に係るコンピュータ１０１０の構成を示す説明図である。コンピュータ１０１０は、前述の第１の実施形態に係るコンピュータ１０と比べて、メモリスロット３０と、そのメモリスロットに実装されたメモリモジュール４０とが各々１系統しか存在しないという違いがあるのみである。従って、各部については第１の実施形態の場合と同一の参照番号を付す。
【００６７】
１系統しかメモリモジュールが存在しないので、図３〜５で説明した動作の「スロットＡ」に対する部分のみが実行される。この場合も、メモリミラーリングは図３の（ｂ）および図４の（ｃ）で説明した同一グループ内の異なるランク内で行われている。つまり、この構成でもメモリミラーリングは実現可能である。ただ、図５のステップＳ９０４として示したインターリーブ制御に係る命令の振り分けが省略されるだけで、これ以外は動作および効果は前述の第１の実施形態と全て同一である。
【００６８】
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
【産業上の利用可能性】
【００６９】
ＪＥＤＥＣ準拠のＳＤＲＡＭ、中でもＤＤＲ  ＳＤＲＡＭ、ＤＤＲ２  ＳＤＲＡＭ、およびＤＤＲ３  ＳＤＲＡＭのうちのいずれかを利用するコンピュータ装置に適用できる。
【図面の簡単な説明】
【００７０】
【図１】本発明の第１の実施形態に係るコンピュータの構成を示す説明図である。
【図２】図１に示したメモリモジュールの内部構成を示す説明図である。図２（ａ）は汎用１ランク形式、図２（ｂ）は汎用２ランク形式、図２（ｃ）は汎用４ランク形式の構成を示している。
【図３】図１に示したメモリミラーリングフラグ記憶部の設定例、およびそれによるメモリミラーリング制御の様子を示す説明図である。図３（ａ）は、メモリスロット（スロットＡおよびスロットＢ）の各々に、図２（ｂ）で示した汎用２ランク形式の構成のメモリモジュールが実装されている設定例を示す。図３（ｂ）は、メモリスロット（スロットＡおよびスロットＢ）の各々に、図２（ｃ）で示した汎用４ランク形式の構成のメモリモジュールが実装されている設定例を示す。
【図４】図３の続きである。図４（ｃ）は、メモリスロット（スロットＡおよびスロットＢ）の各々に、図２（ｃ）で示した汎用４ランク形式の構成のメモリモジュールが実装されている設定例を示す。
【図５】図４（ｃ）の設定例として示した状態におけるコンピュータの動作をより詳細に説明するフローチャートである。
【図６】本発明の第２の実施形態に係るコンピュータの構成を示す説明図である。
【符号の説明】
【００７１】
１０、１０１０  コンピュータ
１１  プロセッサ
２０  メモリコントローラ
３０、３１  メモリスロット
４０、４１  メモリモジュール
６１、６８、６９、７１、７８、７９、８１、８８、８９、９１、９８、９９  ＳＤＲＡＭ
１００、２００  メモリチャネル
１００ａ、２００ａ  アドレス信号
１００ｂ、２００ｂ  データ信号
１００ｃ、１０１ｃ、１０２ｃ、１０３ｃ、２００ｃ、２０１ｃ、２０２ｃ、２０３ｃ  チップセレクト信号
３００  動作命令
４００  メモリアクセス命令
５００  データ
６００  リプライデータ
６０１、６０２、７００  動作信号
８００  初期設定信号
【図１】
2010102640.tif 000003
【図２】
2010102640.tif 000004
【図３】
2010102640.tif 000005
【図４】
2010102640.tif 000006
【図５】
2010102640.tif 000007
【図６】
2010102640.tif 000008