(57)【要約】【課題】  ＥＣＣによって検出されたメモリエラーがソフトエラーであるかハードエラーであるかを判断するためのログを確実に収集し、訂正可能であった場合には比較的時間のかかるＥＣＣ機能によるデータ訂正の発生を最小限に抑え、訂正不可能であった場合であっても安全にログの収集を行った後に確実にシステムを停止させる。【解決手段】  主記憶装置から読み取ったデータにエラーが発生したことを検出する機能を有するメモリ制御部２１と、エラーが訂正可能である場合には、訂正されたデータは通常どおりキャッシュに読み込み、そのブロックに対してキャッシュの主記憶装置への書き出し及び主記憶装置からの読み込みを抑制する機能を有するキャッシュ制御部１２を備えた。【選択図】        図３
2005196680.tif 000002
【特許請求の範囲】
【請求項１】
主記憶装置から読み取ったデータにエラーが発生したことを検出する機能を有するメモリ制御部と、このメモリ制御部からのエラー発生の通知を受け、エラーが訂正可能である場合には、訂正されたデータは通常どおりキャッシュに読み込み、そのブロックに対してキャッシュの主記憶装置への書き出し及び主記憶装置からの読み込みを抑制する機能を有するキャッシュ制御部を備えたことを特徴とするコンピュータシステム。
【請求項２】
主記憶装置から読み取ったデータにエラーが発生したことを検出しキャッシュ制御部に通知する機能を持つとともに、そのエラーが訂正しきれない場合には、割込みを発生させる機能を持つメモリ制御部を有し、その割込みハンドラが主記憶装置以外の場所に保存されていることを特徴とするコンピュータシステム。
【請求項３】
請求項２に記載のコンピュータシステムであって、訂正不可能なエラーによる割込みを検出した際に、キャッシュ制御部は、キャッシュ全体に対して主記憶装置へのフラッシュと主記憶装置からのフィル動作のみを抑止する機能を有することを特徴とするコンピュータシステム。
【請求項４】
請求項１に記載のコンピュータシステムであって、訂正可能なエラーが発生したこと及びエラーが発生したアドレスとビット位置を特定可能なシンドロームコードを２回分以上保持し、後から参照することが可能なコンピュータシステム。
【請求項５】
請求項４に記載のコンピュータシステムであって、エラーが発生したアドレスとビット位置を特定可能なシンドロームコードを、システムのシャットダウン時やシステムがアイドル状態の時にエラー処理を行うことを特徴とするコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵの入出力データに関するキャッシュ機構をもち、データの信頼性が重要視される、パーソナルコンピュータ、サーバー用コンピュータ等のコンピュータシステムに関する。
【背景技術】
【０００２】
近年、パーソナルコンピュータにおいても、ＤＩＭＭなどのメモリモジュールを使用して、ギガバイト単位のメモリが実装されるようになってきている。メモリの大容量化に伴いメモリセルサイズが微細化し、α粒子や中性子線による一時的なメモリエラー（以下ソフトエラー）の発生する確率が増大すると言われている。同時にハードウェアの故障・欠陥によるメモリの恒久的なエラー（以下ハードエラー）の増大も懸念されている。
ソフトエラーが発生した際には、ＥＣＣなどによるエラー訂正機能により修復可能であれば、問題は一時的なものでありメモリモジュールを変更する必要は無い。一方ハードエラーが発生した場合には、たとえＥＣＣによって訂正可能であってもシステムとしての信頼性が低下してしまうのでメモリモジュールを変更する必要がある。
そのため、発生したメモリエラーがソフトエラーであるのかハードエラーであるのかを特定することが重要となる。このためには同一のエラーが発生しているかどうかを長期間に亘って調べる必要があり、通常エラーのログを収集し、それを解析することで判別を行っている。
ＤＩＭＭで使用されているＥＣＣは、１ビットのエラーは訂正可能であり２ビットのエラーが検出可能であり、ＥＣＣの機能を持つメモリコントローラは、これらのエラーが発生した際に割込みを発生させるような機能を持っている。
例えば、特許文献１に記載の技術では、この機能を利用しエラーが発生した場合にはＢＩＯＳに制御を移してログの収集を行い、ＯＳに制御を戻して１ビットエラーの場合にはそのまま処理を継続し、２ビット以上のエラーの場合には、警告メッセージを表示した後に、システムを停止させることを提案している。
また、例えば、特許文献２に記載の技術では、エラーが発生したブロックの代替バッファを準備し、動作中にエラーが発生したメモリのテストを行う方法が提案されている。
【特許文献１】特開２００２−７３４２７公報
【特許文献２】特開平１０−１６１９３９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし特開２００２−７３４２７公報記載の技術では、１ビットエラーが発生した場合には、本来問題なく動作できる状況であるにもかかわらず、無駄な割込み処理がクリティカルな処理を行っていた場合に問題が発生する可能性がある。また２ビット以上のエラーが発生した場合は、通常ＢＩＯＳもメモリ上にシャドウ（コピー）されて使われているため、信頼性が低くなっているメモリ上で動作していることに変わりなく、ＢＩＯＳ内部での処理中にシステムが暴走してしまう危険性を孕んでいる。
また、特開平１０−１６１９３９号公報記載の技術の場合、メモリエラーが発生しない場合には、全く使用されないバッファを準備する必要があり無駄がある。代替バッファをキャッシュで代用する方法も同時に提案されているが、近年キャッシュはメモリコントローラ側ではなく、ＣＰＵの内部に実装されることがほとんどでありＤＭＡアクセスなどＣＰＵ以外のメモリアクセスをＣＰＵのキャッシュに置き換えるための回路は大規模になることが推測される。
本発明は、ＥＣＣによって検出されたメモリエラーがソフトエラーであるかハードエラーであるかを判断するためのログを確実に収集し、訂正可能であった場合には比較的時間のかかるＥＣＣ機能によるデータ訂正の発生を最小限に抑え、訂正不可能であった場合であっても安全にログの収集を行った後に確実にシステムを停止させることを可能にするコンピュータシステムを提供することを目的とする。
【課題を解決するための手段】
【０００４】
上記目的を達成するために、請求項１記載の発明は、主記憶装置から読み取ったデータにエラーが発生したことを検出する機能を有するメモリ制御部と、このメモリ制御部からのエラー発生の通知を受け、エラーが訂正可能である場合には、訂正されたデータは通常どおりキャッシュに読み込み、そのブロックに対してキャッシュの主記憶装置への書き出し及び主記憶装置からの読み込みを抑制する機能を有するキャッシュ制御部を備えたコンピュータシステムを最も主要な特徴とする。
請求項２記載の発明は、主記憶装置から読み取ったデータにエラーが発生したことを検出しキャッシュ制御部に通知する機能を持つとともに、そのエラーが訂正しきれない場合には、割込みを発生させる機能を持つメモリ制御部を有し、その割込みハンドラが主記憶装置以外の場所に保存されているコンピュータシステムを最も主要な特徴とする。
請求項３記載の発明は、請求項２に記載のコンピュータシステムであって、訂正不可能なエラーによる割込みを検出した際に、キャッシュ制御部は、キャッシュ全体に対して主記憶装置へのフラッシュと主記憶装置からのフィル動作のみを抑止する機能を有するコンピュータシステムを主要な特徴とする。
請求項４記載の発明は、請求項１に記載のコンピュータシステムであって、訂正可能なエラーが発生したこと及びエラーが発生したアドレスとビット位置を特定可能なシンドロームコードを２回分以上保持し、後から参照することが可能なコンピュータシステムを主要な特徴とする。
請求項５記載の発明は、請求項４に記載のコンピュータシステムであって、エラーが発生したアドレスとビット位置を特定可能なシンドロームコードを、システムのシャットダウン時やシステムがアイドル状態の時にエラー処理を行うことを特徴とするコンピュータシステムを主要な特徴とする。
【発明の効果】
【０００５】
本発明によれば、主記憶装置上に訂正可能なエラーが発生した際に、対象のキャッシュラインのフラッシュ及びフィル操作を抑止することで、主記憶装置上のエラー訂正によるオーバーヘッドを発生させなくすることができる。
【発明を実施するための最良の形態】
【０００６】
以下、本発明の実施の形態を図面に従って説明する。
図１は本発明の実施形態に係るコンピュータシステムのブロック図である。ＣＰＵ１、メモリコントローラ２、ＤＲＡＭ３、フラッシュＲＯＭ４、ＲＴＣ５、ハードディスク６、ビデオコントローラ７、キーボードマウス８、ＬＡＮコントローラ９を備えている。ここでＣＰＵ１はキャッシュ制御部及びメモリを備える。近年ではキャッシュメモリはＣＰＵ１内部にオンチップで実装されているが、本発明はＣＰＵ内部に実装されていなくても実現可能である。また、メモリコントローラ２はＥＣＣ制御部を備える。
図２はキャッシュ制御部を中心としたブロック図である。キャッシュ１１、キャッシュ制御部１２が示される。キャッシュメモリはＣＰＵ１におけるメモリ空間の特定の領域ごとにキャッシュ１１の属性を持っている。例えばコンピュータシステムの初期化や自己診断機能を有する通常ＢＩＯＳと呼ばれるソフトウェアを保持するフラッシュＲＯＭ４などの不揮発性のメモリが割当てられている領域に対してはリードオンリー属性、つまりキャッシュフィルのみ可の属性を持つ。またＰＣＩデバイスなどのＩ／Ｏデバイスが持つレジスタが割当てられる領域は通常キャッシュ不可の属性を持つ。ＤＲＡＭなどの主記憶装置が割当てられる領域は最大のパフォーマンスを実現するためにキャッシュフィル・ライトバック共に可の属性が設定される。
【０００７】
本発明では、この属性を拡張しキャッシュフィル及びキャッシュフラッシュ共に不可の属性を設定可能にし、ＣＰＵ１が主記憶装置に書き込もうとするデータをキャッシュメモリにとどめ、主記憶装置を直接参照しないようにすることで、主記憶装置が正常に動作していない時であっても、主記憶装置がある時と同じようなソフトウェアを動作させることを可能にすることができる。
また近年の半導体の進歩によって、大容量のＤＲＡＭを主記憶装置として使用できるようになり、偶発的なメモリエラーや恒久的なメモリエラーの発生も増加すると言われている。メモリエラーの存在を認識できずにシステムが動作し続けることは外部記憶装置などに保存された重要なデータを破壊する可能性があるため、特にデータの信頼性が重視されるシステムでは、ＥＣＣなどのエラー訂正まで可能なメモリシステムを採用するシステムも増えてきている。
ＥＣＣを使用している場合、メモリエラーが訂正可能で偶発エラーであればそれほど気にする必要は無いが恒久的なエラーが発生している場合には、できるだけ速やかにエラーが発生したモジュールを交換する必要がある。そのためにエラー情報を不揮発性のメモリに書き込み、システム管理用のプログラムによって情報を収集可能にする方法などが取られている。
しかしこれらの不揮発性のメモリへの書き込みなどを行うに当たって、主記憶装置として使用されているＤＲＡＭには既にエラーが発生していることを検出しているので信頼性に問題があることは言うまでも無いことであり、最悪のケースとしては、この処理を行う際にも修復不可能なメモリエラーが発生し外部記憶装置に保存されているデータを破壊してしまうことも考えられる。
【０００８】
図３はメモリ制御部を中心としたブロック図である。ＥＣＣ機能を持つメモリモジュールからの読出しで訂正可能なメモリエラーを検出した場合に、メモリ制御部２１は訂正可能エラーをキュッシュ制御部１２に対して通知する。このときメモリ制御部２１はエラーが発生したアドレスとエラーが発生したビットの情報を持つシンドロームコードをＥＣＣエラー保持部２３に保存する。
訂正可能エラー通知を受け取ったキュッシュ制御部１２は、エラーが訂正された状態のデータをキャッシュ１１上に保持する。これによって検出されたメモリエラーがハードエラーだった場合であっても、時間のかかるエラー訂正が連続して発生することを防ぎ、ＯＳやアプリケーションの動作に対する影響を最小限に抑えることができる。符号２２はＥＣＣ制御部、２４はＤＲＡＭモジュールを示す。
図４及び図５はエラー情報を記録するための概略フローである。訂正不可能なエラーが発生した場合、メモリ制御部２１はキャッシュ制御部１２に訂正不可能エラーが発生したことを通知すると共に、割込みを発生させる。このとき、キャッシュ制御部１２は主記憶装置（通常ＤＲＡＭが使用される）に対するキャッシュフラッシュ及びフィル動作を停止させるが、キャッシュメモリとしての機能は継続したままとなる。
また訂正不可能なエラーが発生したことを示す割込みを処理するためのハンドラをメモリ空間上に割り当てられたＲＯＭ上に配置しておくことで、信頼性の低いメモリ上で処理を行う必要がなくなると共に、キャッシュメモリを通常の主記憶装置のように使用できるため、ハンドラをメモリを使用しないように意識して作成するような特殊なプログラミングをする必要なしに作成することができる。
【０００９】
図４のフローでは、訂正不可能エラー割込み時に、ＥＣＣエラー保持部２３より、全てのエラー情報を収集し（Ｓ１）、エラー情報を不揮発性のメモリなどに保存する（Ｓ２）。
図５のフローでは、シャットダウン処理あるいはアイドル検出時に、ＥＣＣエラーが発生したとき（Ｓ１１でＹ）、ＥＣＣエラー保持部２３より、全てのエラー情報を収集し（Ｓ１２）、エラー情報を不揮発性のメモリなどに保存する（Ｓ１３）。
本発明では、主記憶装置上に訂正不可能なエラーが発生した際に、ＲＯＭ上にエラー割り込みのハンドラが配置されていることで、信頼性に疑問のある主記憶装置を使用せずにエラーログの保存及びシステムの停止を確実に実施できる。
また、主記憶操作に対するキャッシュ操作を停止させることで、キャッシュメモリを通常のメモリと使用することができるため、ＲＯＭ上に置かれたエラー割込みハンドラが特殊なプログラミングを必要としないで実装できる。
また、主記憶装置のエラー情報を２回以上保持することができるようにすることで、訂正可能なエラーが発生した時に、エラー訂正によるオーバーヘッドを発生させなくすることができる。
シャットダウン時やシステムがアイドル状態のときに、エラー情報を保存するようにすることで、エラー情報を保存するための処理がクリティカルな通常の処理の妨げになることを防止することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係るコンピュータシステムのブロック図。
【図２】キャッシュ制御部を中心としたブロック図。
【図３】メモリ制御部を中心としたブロック図。
【図４】エラー情報を記録するための概略フロー図。
【図５】エラー情報を記録するための概略フロー図。
【符号の説明】
【００１１】
１２  キャッシュ制御部
２１  メモリ制御部
【図１】
2005196680.tif 000003
【図２】
2005196680.tif 000004
【図３】
2005196680.tif 000005
【図４】
2005196680.tif 000006
【図５】
2005196680.tif 000007