(57)【要約】【課題】  メモリ保守および調整操作を行うための方法、システム、および装置を提供する。【解決手段】  調整操作を行うために、先ず、調整データがメモリに書込まれ、その後、それが読取られる。調整操作は、書込まれたデータとメモリから読取られたデータとの矛盾を検出することに応答して行われる。メモリ保守操作中に調整データが変更されることを防ぐために、本発明の実施例は、メモリ保守操作中に、調整データを含むセクションのスキップを行う。従って、調整データは保持され、適切な調整操作が行われることを可能にする。【選択図】  図４
2007293846.tif 000002
【特許請求の範囲】
【請求項１】
メモリ保守操作を行うための方法であって、
前記メモリ保守操作が行われるべきメモリのアドレスを順次に選択するステップと、
選択されたアドレスが、調整データを含む前記メモリのアドレス範囲内にあるかどうかを決定するステップと、
前記選択されたアドレスが前記調整データを含む前記メモリのアドレス範囲内にあるという決定に応答して、前記選択されたアドレスにおいて前記メモリ保守操作を行うことなく次のアドレスにスキップするステップと、
を含む、方法。
【請求項２】
前記次のアドレスが、前記調整データを含む前記メモリのアドレス範囲に続くメモリの内容をアドレスする、請求項１に記載の方法。
【請求項３】
前記選択されたアドレスが、前記調整データを含む前記メモリのアドレス範囲内にあるかどうかを決定するステップは、前記調整データに対するアドレス範囲を含む調整レジスタをアクセスするステップを含む、請求項１に記載の方法。
【請求項４】
前記調整レジスタがイネーブルされているかどうかを決定するステップを更に含み、前記調整レジスタのイネーブルは、前記アドレス範囲が前記調整データを含むことを表す、請求項３に記載の方法。
【請求項５】
前記調整レジスタがイネーブルされている場合に、前記決定するステップおよび前記スキップするステップを実行する、請求項４に記載の方法。
【請求項６】
前記調整レジスタがイネーブルされているかどうかを決定するステップは前記調整レジスタに含まれた有効ビットを検査するステップを含み、前記有効ビットは前記調整レジスタがイネーブルされているかどうか表す、請求項４に記載の方法。
【請求項７】
前記メモリ保守操作がメモリ消し込みまたはメモリ・ゼロ化の１つを含む、請求項１に記載の方法。
【請求項８】
メモリ保守操作を行うためにメモリのアドレスを順次に選択し、
選択されたアドレスが、調整データを含む前記メモリのアドレス範囲内にあるかどうかを決定し、
前記選択されたアドレスが、前記調整データを含む前記メモリのアドレス範囲内にあるという決定に応答して、前記選択されたアドレスにおいて前記メモリ保守操作を行うことなく次のアドレスにスキップする、
ように構成されたコントローラ。
【請求項９】
メモリと、
調整データが記憶される前記メモリのアドレス範囲を含む調整レジスタと、
コントローラと、
を含み、
前記コントローラは、
メモリ保守操作を行うために前記メモリのアドレスを順次に選択し、
選択されたアドレスが、調整データを含む前記メモリのアドレス範囲内にあるかどうかを決定し、
前記選択されたアドレスが前記調整データを含む前記メモリのアドレス範囲内にあるという決定に応答して、前記選択されたアドレスにおいて前記メモリ保守操作を行うことなく次のアドレスにスキップする、
ように構成される、
装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはコンピュータ・システムに関し、詳しく云えば、メモリ保守および調整操作の実行に関するものである。
【背景技術】
【０００２】
最新のコンピュータ・システムは、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）のような或るタイプのランダム・アクセス・メモリを使用する。ＤＲＡＭ装置は、一般に、高帯域幅、低待ち時間のメモリ・データ・アクセスを行うように構成される。システム・パフォーマンスを高めるために、ＤＡＲＭと、他のシステム装置、例えば、メモリ・コントローラとの間のデータ転送速度は長年にわたって絶えず増加してきている。
【０００３】
残念ながら、装置相互間のデータ転送速度が増加するにつれて、装置間で転送されるデータ・バイトは、チャネル温度の変動、内部キャパシタンス、種々の装置で使用されるドライバやレシーバの電流および電圧の相違、内部バス経路の異なる経路指定、等のような種々の理由でスキューしてしまうことがある。このようなスキューは、或る装置から転送されたデータが他の装置に誤読されるという事態を生じることがある。このスキューによる誤配列は、不正確にアセンブルされたデータがシステムのプロセッサ・コアに送られるということに通じ得るし、それは、予想し得ない結果を生じてパフォーマンスの妨げとなり得る。
【０００４】
データ・スキューを防ぐために、装置間のコミュニケーションの正確な伝達を保証するための１つまたは複数の調整操作（calibration operation）を規則的な時間間隔で行うことが可能である。その調整操作は、電流調整、チャネル温度調整等を含み得る。
【０００５】
ほとんどのメモリ調整操作はメモリを変更するものではないが、或る調整操作は、調整データがメモリ・セクションに書込まれ、その後、そのメモリ・セクションから読取られることを必要とする。例えば、事前定義されたパターンの調整データが１つのメモリ・セクションに書込まれる。その後、その調整データが書込まれたセクションがメモリから読取られ、そのデータが事前定義されたパターンと比較される。メモリに書込まれた調整データとメモリから読取られた調整データとの不一致を検出することによって、チャネル温度、電流、および電圧のようなパラメータを、正確なデータ転送を保証するように調節することが可能である。
【０００６】
上述の調整操作は、データ転送がメモリ転送のためのデータ・アイ（data eye）内で生じることを保証するために絶えず行われてもよい。データ・アイは、正確なデータ転送が生じる種々のパラメータ設定の境界を表すものである。データ・アイの境界の外におけるパラメータ設定は誤ったデータ転送の原因となることがある。従って、調整操作は、データ・アイを測定し、データ転送がそのデータ・アイ内で生じる場合の設定を実現することが可能である。
【０００７】
そのようなメモリ調整操作を行う場合の１つの問題は、或るメモリ保守操作、例えば、メモリ消し込み（memory scrubbing）およびメモリ・ゼロ化（memory zeroing）が、メモリ・セクションに書込まれる調整データを変更することがあるということである。例えば、メモリ消し込み中、メモリ・コントローラは、アイドル期間中にメモリを読取り、単一ビットのエラーを修正し、その修正された内容をメモリに書き戻すことがある。例えば、メモリ・ゼロ化は、特定のセクションの内容またはメモリ全体を論理ゼロでもって置換することを含む。メモリに記憶された調整データの変更は、システムを適切に調整する機能を制限することがある。
【０００８】
従って、必要なことは、メモリ保守および調整操作を行うための方法、システム、および装置の改良である。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、メモリ保守およびメモリ調整操作を行うための改良された方法、システム、および装置を提供することである。
【課題を解決するための手段】
【００１０】
本発明の１つの実施例は、メモリ保守操作を行うための方法を提供する。その方法は、一般に、メモリ保守操作が行われるべきメモリのアドレスを順次に選択するステップと、選択されたアドレスが、調整データを含むメモリのアドレス範囲内にあるかどうかを決定するステップと、選択されたアドレスが、調整データを含むメモリのアドレス範囲内にあるという決定に応答して、その選択されたアドレスにおいてメモリ保守操作を行うことなく次のアドレスにスキップするステップとを含む。
【００１１】
本発明のもう１つの実施例は、メモリ保守操作を行うように調整されたコントローラを提供する。このコントローラは、一般に、メモリ保守操作を行うためにメモリのアドレスを順次に選択し、選択されたアドレスが、調整データを含むメモリのアドレス範囲内にあるかどうかを決定し、選択されたアドレスが、調整データを含むメモリのアドレス範囲内にあるという決定に応答して、その選択されたアドレスにおいてメモリ保守操作を行うことなく次のアドレスにスキップするように構成される。
【００１２】
本発明の更にもう１つの実施例は、メモリと、調整データが記憶されるそのメモリのアドレス範囲を含む調整レジスタと、コントローラとを含む装置を提供する。コントローラは、一般に、メモリ保守操作を行うためにメモリのアドレスを順次に選択し、選択されたアドレスが、調整データを含むメモリのアドレス範囲内にあるかどうかを決定し、選択されたアドレスが、調整データを含むメモリのアドレス範囲内にあるという決定に応答して、その選択されたアドレスにおいてメモリ保守操作を行うことなく次のアドレスにスキップするように構成される。
【発明を実施するための最良の形態】
【００１３】
本発明の実施例は、メモリ保守および調整操作を行うための方法、システム、および装置を提供する。調整操作を行うためには、先ず、調整データがメモリに書込まれ、その後、読取られる。次に、書込まれたデータとメモリから読取られたデータとの間の矛盾点を検出することに応答して、調整操作が行われる。メモリ保守操作中に調整データが変更されないように、本発明の実施例は、メモリ保守操作中に調整データを含むセクションのスキップを行う。従って、適正な調整操作が行われることを考慮して調整データがそのまま保持される。
【００１４】
次に、本発明の実施例を参照することにする。しかし、本発明が特定の説明される実施例に限定されないことは当然である。それよりも、下記の特徴および要素の如何なる組合せも、それらが異なった実施例に関連しようと或いは関連しまいと、本発明を具現化し、実用化するものであると考えられる。更に、種々の実施例において、本発明は、従来技術を越える数多くの利点を提供する。しかし、本発明の実施例が他の可能な解決方法および従来技術を越える利点を達成し得ても、特定の利点が所与の実施例によって達成されるか否かは本発明を限定することにならない。従って、下記の態様、特徴、実施例、および利点は単なる例示であり、「特許請求の範囲」に明確に記載されたものを除いて請求項の構成要素または限定事項と見なされるべきではない。同様に、「本発明」という引用は、本明細書において開示されたすべての発明主題を一般化したものとして解釈されるべきではないし、「特許請求の範囲」に明確に記載されたものを除いて請求項の構成要素または限定事項と見なされるべきではない。
【００１５】
Ａ．例示的システム
図１は、本発明の実施例を具現化し得る例示的なシステム１００のブロック図を示す。システム１００は、中央処理ユニット（ＣＰＵ）１１１、メモリ・コントローラ１２１、およびメモリ１３１を含む。ＣＰＵ１１１は、システム・バス１１９を介してメモリ・コントローラ１２１に結合される。実施例によっては、図１に示されるように、ＣＰＵ１１１およびメモリ・コントローラ１２１を統合してシステム・オン・チップ（ＳＯＣ）上のシステムにすることも可能である。
【００１６】
ＣＰＵ１１１は、メモリ・コントローラ１２１にコマンドを発行するように構成される。例えば、ＣＰＵ１１１は、メモリ１３１への読取りアクセスまたは書込みアクセスを行うためにメモリ・コントローラ１２１に読取りコマンドおよび書込みコマンドを発行し得る。１つのＣＰＵ１１１が図示されているが、複数のＣＰＵ１１１がバス１１９に結合されてもよいことは当業者には明らかであろう。更に、各ＣＰＵ１１１は、それ自身のそれぞれのコマンドをメモリ・コントローラ１２１に発行するように構成することも可能である。
【００１７】
メモリ１３１は、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）のようなランダム・アクセス・メモリであってもよい。メモリ１３１は、ＣＰＵ１１１によって処理される１つまたは複数のプログラムおよびデータ構造を保持するために十分に大きいものである。メモリ１３１は単一のエンティティとして示されているが、実際には複数のモジュールから構成することも可能であり、メモリ１３１が高速キャッシュから、低速であるが大型のＤＲＡＭチップまでの、複数レベルで存在し得ることも当然である。
【００１８】
メモリ・コントローラ１２１は、メモリ・バス１２９を介してメモリ１３１に情報伝達可能に結合される。メモリ・コントローラ１２１は、ＣＰＵ１１１からコマンドを受け取ったことに応答してメモリ１３１にアクセスを行うように構成される。例えば、ＣＰＵ１１１は、所望のデータのロケーションを識別するメモリ１３１のアドレスを含む読取りコマンドを発行し得る。読取りコマンドを受け取ったことに応答して、メモリ・コントローラ１２１はメモリ１３１をアクセスし、メモリ１３１における指定されたアドレスから所望のデータを取り出す。そこで、取り出されたデータは、システム・バス１１９を介してＣＰＵ１１１に供給される。メモリ・コントローラ１２１は、図１では別個に示されているが、ＣＰＵ１１１の一部であってもよいことは当業者には明らかであろう。従って、メモリ・アクセスは、ＣＰＵをメモリ１３１に結合するバスを介して、メモリ・コントローラ１２１により行われることも可能である。
【００１９】
Ｂ．メモリ調整および保守操作
メモリ・コントローラ１２１は、更に、メモリ１３１との正確なデータ転送を保証するためにメモリ調整操作を行うように構成することが可能である。メモリ調整操作は、例えば、チャネル温度、ドライバ電流、リフレッシュ操作等を調整するように行われる。調整はデータ・スキューを減少させ、それによって装置相互間の誤りのあるデータ転送を減少させてパフォーマンスを改善することが可能である。
【００２０】
実施例によっては、チャネル温度、ドライバ電流等の調整は、装置相互間の誤りのあるデータ転送の決定に応答して生じ得る。例えば、メモリ・コントローラ１２１は、所定パターンのデータをメモリ１３１の所与のセクションに書込む。その後、メモリ・コントローラ１２１は、メモリ１３１のその所与のセクションを読取る。メモリ・コントローラ１２１は、エラーを検出するために所与のセクションから取り出されたデータを所定のパターンと比較する。エラーの検出に応答して、メモリ・コントローラ１２１は、その検出されたエラーに基づいてチャネル温度調整、ドライバ電流調整等のようなメモリ保守操作を行うことが可能である。
【００２１】
他の実施例では、調整操作はいずれの電源遮断終了後にも生じる。このような実施例では、電源遮断終了時に調整データがメモリ１３１に書込まれる。次のシステム初期化時に、オペレーティング・システム・コード、例えば、基本入出力システム（ＢＩＯＳ）コードがメモリ・コントローラに調整データを読取らせ、装置間の正確なデータ転送に必要な特定の調整操作を決定するために作られた所定のパターンとその調整データとを比較してもよい。
【００２２】
図２は、メモリ・コントローラ１２１が調整データ２１０を書込むメモリ１３１のセクション２３０を示す。調整データ２１０は、例えば、論理０および論理１から成る任意の所定パターンを含み得る。実施例によっては、調整データ２１０は調整目的のためにのみ使用されるので、不十分なエラー訂正コード（ＥＣＣ）を有することがある。ＥＣＣ、例えば、ハミング・コード、リード・ソロモン・コード等は、単一ビットのエラー、２ビットのエラー、または更に多いビットのエラーでさえ訂正するように構成することも可能である。
【００２３】
図２に示されるように、調整データ２１０は、例えば、メモリ・バス１２９を介して書込み操作２１１を行うことによって書込むことが可能である。その後、メモリ・コントローラ１２１は、セクション２３０における読取り操作２２１を行って、前の書込み操作中に記憶された調整データ２１０を取り出すことが可能である。
【００２４】
セクション２３０に書込まれた調整データと読取り操作中に取り出された調整データとの間の矛盾は、１つまたは複数の調整操作を行う必要性を表示することが可能である。調整データは所定のパターンを有するので、メモリ・コントローラ１２１は、書込まれたパターンとメモリ１３１から読取られたパターンとの間の矛盾に基づいて調整を必要とする特定の装置、チャネル等を識別し得る。従って、メモリ・コントローラ１２１は、装置／チャネルにおける１つまたは複数の調整操作を行い得る。例えば、メモリ・コントローラ１２１は、調整データの矛盾を含む部分を書込む責任を負った特定のドライバを識別することが可能である。メモリ・コントローラ１２１は、ドライバが矛盾を訂正するためのドライバ電流を調節し得る。
【００２５】
調整操作に加えて、メモリ・コントローラ１２１は、メモリの内容を変更する１つまたは複数のメモリ保守操作を定期的に行ってもよい。例示的なメモリ保守操作はメモリ消し込み及びメモリ・ゼロ化を含む。
【００２６】
メモリ消し込みは、メモリ・コントローラ１２１がアイドル期間中にメモリ１３１のブロックを読取り、単一ビットのエラーを訂正し、そして、単一ビットのエラーが訂正不能の複数ビットのエラーにならないようにその内容をメモリに書き戻すことを可能にする。メモリ消し込みは、メモリ・コントローラ１２１がシステムの正規の操作中のバックグラウンドにおいてメモリ１３１の内容全体をスイープすることによって行うことも可能である。メモリ１３１の内容に関連したＥＣＣを使用して、エラーを識別および訂正することも可能である。
【００２７】
一方、メモリ・ゼロ化は、メモリ１３１の１つまたは複数のセクションまたはメモリ１３１のすべての内容を論理０でもって置換することを伴う。ゼロ化は、例えば、メモリ１３１におけるセンシティブなデータを、それが最早必要なくなった後、除去するために行われる。センシティブなデータを論理０によって置換することにより、そのセンシティブなデータの不注意による権限のないアクセスを防止することが可能である。メモリ・ゼロ化は、システム初期化時に、または、システムの正規の操作中に定期的に、行うことが可能である。メモリ消し込みの場合のように、ゼロ化は、メモリ１３１の内容を論理０でもって置換するためにメモリ１３１全体またはメモリ１３１の特定のセクションをスイープすることを伴うこともある。
【００２８】
Ｃ．調整データの保持
メモリ消し込みおよびメモリ・ゼロ化を含むがそれに限定されないメモリ保守操作は、調整データを含むメモリ１３１のセクション、例えば、図２に示されたセクション２３０を変更することも可能である。しかし、調整データは調整操作を行うために必要な情報を含むことがあるので、その調整データを変更することは望ましくない。メモリ保守操作が調整データを変更しないようにするために、本発明の実施例は、調整データを含むメモリ１３１のセクションをスキップすることを可能にする。
【００２９】
１つの実施例では、調整データの開始アドレスおよび終了アドレスを含む調整レジスタが提供される。調整データのロケーションを識別するために、システムの開始時にまたは定期的に、メモリ・コントローラ１２１に調整レジスタをアクセスさせるよう、オペレーティング・システムを構成することも可能である。メモリ・コントローラ１２１は、メモリ保守操作を行うとき、調整レジスタにおいて提供されるアドレス範囲をスキップすることが可能である。
【００３０】
図３は、本発明の実施例に従って、例示的な６４ビットの調整レジスタを示す。図示のように、調整レジスタは、調整有効フィールド３１０、調整開始アドレス・フィールド３２０、調整終了アドレス・フィールド３３０、および予約フィールド３４０を含む。
【表１】
2007293846.tif 000003
【００３１】
調整有効フィールド３１０は、調整レジスタにおいて指定されたアドレス範囲が調整データを含むかどうかを表す単一のビットである。例えば、図３における例では、論理０に設定された調整有効ビットは、調整レジスタがイネーブルされてないことを表す。従って、調整レジスタにおいて指定されたアドレス範囲は調整データを含まないので、メモリ保守操作中スキップしなくてもよい。
【００３２】
一方、論理１に設定された調整有効ビットは、調整データがアドレス範囲内に存在することを表す。従って、調整レジスタにおいて指定されたメモリ範囲は、メモリ保守操作中スキップすることが可能である。本発明の実施例が上記の調整有効ビットの特定の実装に限定されないことは当業者には明らかであろう。例えば、調整レジスタがイネーブルされているかどうかを表す論理値を逆にすることも可能である。更に、調整レジスタが、例えば、事前定義された値を調整レジスタに書込むことをディセーブルされているかどうかを表すために任意の別の妥当な手段を実装することも可能である。
【００３３】
図３に示されるように、調整開始アドレス・フィールド３２０および調整終了アドレス・フィールド３３０は、調整データを含むメモリ・セクションの開始アドレスおよび終了アドレスを表す２８ビットのアドレス・フィールドである。例えば、調整開始アドレス・フィールド３２０は図２におけるセクション２３０の開始アドレスを表す。従って、調整開始アドレスから始まる内容は消し込みされないようにすることが可能である。
【００３４】
調整終了アドレス・フィールド３３０は、メモリ保守操作が行われるセクション２３０に続く次のアドレスを表す。例えば、調整終了アドレスは、セクション２３０の終了アドレスに続く次のアドレスである。開始アドレス・フィールドおよび終了アドレス・フィールドは例示的な調整レジスタでは２８ビットであるが、それらのアドレス・フィールドに対して任意の数のビットを使用し得ることも当業者には明らかであろう。そのビット数は、例えば、アドレスされるメモリのサイズに依存してもよい。
【００３５】
予約フィールド３４０は、その後の使用のために予約された１つまたは複数のビットを含み得る。例えば、予約フィールド３４０は、調整開始アドレスおよび調整終了アドレスによって指定されたアドレス範囲がスキップされなければならないメモリ保守操作のタイプを表してもよい。
【００３６】
図４は、調整レジスタがイネーブルされているとき、メモリの内容を変更するメモリ保守操作、例えば、メモリ消し込みまたはメモリ・ゼロ化を行うように、メモリ・コントローラによって行われる例示的な操作の流れ図を示す。操作は、ステップ４０１において、メモリ・アクセスのためのアドレスをゼロに設定することによって始まり、それによって、メモリのトップにおいてメモリ保守操作が開始される。ステップ４０２において、メモリ・コントローラは、調整レジスタをアクセスすることによって、アドレスが調整開始アドレスに等しいかどうか決定する。
【００３７】
アドレスが調整開始アドレスを指す場合、ステップ４０３において、そのアドレスは調整終了アドレスに設定される。アドレスを調整終了アドレスに設定すると、調整データを含むセグメントのすぐ後に続くメモリの内容をアクセスすることができる。従って、ステップ４０４において、調整データを含むセグメントの終端の直後の内容に関してメモリ保守操作が行われる。調整レジスタが、例えば、調整有効ビットの設定によってイネーブルされない場合、調整アドレスの再設定は不要である。
【００３８】
ステップ４０２において、アドレスが調整開始アドレスを指さないことが決定される場合、または調整レジスタがイネーブルされない場合、ステップ４０４において、メモリ保守操作がそのアドレスにおいて行われる。メモリ保守操作が行われた後、ステップ４０５において、アドレスはメモリの次のブロックを指すようにインクリメントされる。
【００３９】
調整データが存在し得るロケーションを除くすべてのロケーションにおいてメモリ保守操作が行われた後、次のサイクルのメモリ保守操作のためにアドレスが再び０に設定される。従って、ステップ４０６において、メモリ保守操作の現在のサイクルが終了したかどうかを決定するために、インクリメントされたアドレスがチェックされる。ステップ４０６において、インクリメントされたアドレスがメモリにおけるアドレス可能な最大アドレスである場合、ステップ４０１において、アドレスはゼロに再び設定される。一方、アドレスが最大アドレスではない場合、ステップ４０２において、アドレスは調整開始アドレスと比較される。
【００４０】
Ｄ．結論
調整データを含むメモリのセクションがメモリ保守操作中にスキップされることを可能にすることによって、本発明の実施例はシステムの適切な調整を可能にし、それによってデータ転送の信頼性およびシステムのパフォーマンスを高める。
【００４１】
以上は本発明の実施例に関するものであるが、「特許請求の範囲」の記載によって決定される本発明の基本的な範囲を逸脱することなく、本発明の他の更なる実施例を考察することも可能であろう。
【図面の簡単な説明】
【００４２】
【図１】本発明の実施例に従って例示的なシステムを示すブロック図である。
【図２】本発明の実施例に従ってメモリ・コントローラとメモリとの間の調整データの交換を示す概略図である。
【図３】本発明の実施例に従って例示的な調整レジスタを示す図である。
【図４】本発明の実施例に従ってメモリ保守操作を行うための例示的ステップの流れ図である。
【図１】
2007293846.tif 000004
【図２】
2007293846.tif 000005
【図３】
2007293846.tif 000006
【図４】
2007293846.tif 000007