(57)【要約】  ＥＣＣ非対応コンポーネントにおいて誤り訂正符号（ＥＣＣ）検査を実装するための方法および装置。前記方法は、メモリの第１の物理アドレスおよび第２の物理アドレスにマップしている論理アドレスを受け取るステップを有する。前記メモリの前記第１の物理アドレスおよび前記第２の物理アドレスは、データを記憶しているメモリ位置と、対応するＥＣＣを記憶しているメモリ位置とにそれぞれ対応している。前記方法は、前記論理アドレスを、前記第１の物理アドレスおよび前記第２の物理アドレスに変換するステップと、データパスを介して前記データにアクセスするステップと、同じデータパスを介して前記ＥＣＣに別個にアクセスするステップと、前記ＥＣＣを使用して前記データの整合性を検査するステップと、を更に有する。
2010522374.tif 000002
【特許請求の範囲】
【請求項１】
データの記憶用に構成されたメモリの第１の物理アドレスと、前記第１の物理アドレスに記憶されている前記データに対応する誤り訂正符号（ＥＣＣ）の記憶用に構成された前記メモリの第２の物理アドレスとにマップしている論理アドレスを受け取るステップと、
前記論理アドレスを、前記第１の物理アドレスおよび前記第２の物理アドレスに変換するステップと、
データパスを介して前記第１の物理アドレスから前記データにアクセスするステップと、
前記データパスを介して前記ＥＣＣに別個にアクセスするステップと、
前記ＥＣＣを使用して前記データの整合性を検査するステップと、を含む方法。
【請求項２】
前記第１の物理アドレスはメモリページに存在し、前記第２の物理アドレスは同じメモリページに存在する請求項１に記載の方法。
【請求項３】
メモリの所定のページに対して、データの記憶用に物理アドレスの第１のサブセットが予約され、ＥＣＣの記憶用にアドレスの第２のサブセットが予約され、前記ＥＣＣのそれぞれは、前記第１のサブセットの物理アドレスに記憶されているデータに関連している請求項２に記載の方法。
【請求項４】
前記論理アドレスを、第１の物理アドレスおよび第２の物理アドレスに変換するステップは、前記ＥＣＣが保護するデータが記憶されている前記メモリの実際の位置の近くの物理メモリ位置に、前記ＥＣＣが記憶されるように、前記論理アドレスのビットを並べ換えるステップを含み、前記並べ換えはページ境界に基づいて実行される請求項１に記載の方法。
【請求項５】
前記ＥＣＣが保護するデータの近くのアドレス位置において、データブロックの間のブロックに前記ＥＣＣを記憶するステップを更に含み、前記アドレスの１／ｎがＥＣＣの記憶用に予約され、前記アドレスの（ｎ−１）／ｎがデータの記憶用に予約される請求項１に記載の方法。
【請求項６】
メモリと、
データパスと、
前記データパスによって前記メモリと結合され、論理アドレスを受け取るために結合されたメモリコントローラとを備え、前記メモリコントローラは、
論理アドレスを、データの記憶用に構成されたメモリの第１の物理アドレスと、前記第１の物理アドレスに記憶されている前記データに対応する誤り訂正符号（ＥＣＣ）の記憶用に構成された前記メモリの第２の物理アドレスとに変換し、
データパスを介して前記メモリ内の前記第１の物理アドレスから前記データにアクセスし、
前記データパスを介して前記第２の物理アドレスから前記ＥＣＣに別個にアクセスし、
前記ＥＣＣを使用して前記データの整合性を検査するように構成されているメモリサブシステム。
【請求項７】
前記第１の物理アドレスはメモリページに存在し、前記第２の物理アドレスは同じメモリページに存在する請求項６に記載のメモリサブシステム。
【請求項８】
メモリの所定のページに対して、データの記憶用に物理アドレスの第１のサブセットが予約され、ＥＣＣを記憶するためにアドレスの第２のサブセットが予約され、前記ＥＣＣのそれぞれは、前記第１のサブセットの物理アドレスに記憶されているデータに関連している請求項７に記載のメモリサブシステム。
【請求項９】
前記メモリコントローラは、前記ＥＣＣが保護するデータが記憶されている前記メモリの実際の位置の近くの物理メモリ位置に、前記ＥＣＣが記憶されるように、前記論理アドレスのビットを並べ換えることによって、前記論理アドレスを、第１の物理アドレスおよび第２の物理アドレスに変換するように構成されており、前記並べ換えはページ境界に基づいて実行される請求項６に記載のメモリサブシステム。
【請求項１０】
前記ＥＣＣは、前記ＥＣＣがデータブロックの間のブロックに記憶され、前記アドレスの１／ｎがＥＣＣの記憶用に予約され、前記アドレスの（ｎ−１）／ｎがデータの記憶用に予約される請求項６に記載のメモリサブシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムに関し、より詳細には、メモリサブシステムにおける誤り検査および訂正に関する。
【背景技術】
【０００２】
高性能のコンピュータシステムの多くは、メモリサブシステムに「ＥＣＣ」と呼ばれる機能を備えている。ＥＣＣ（誤り訂正符号、あるいは誤り検査および訂正）は、メモリ内で破損したデータを検出し、可能であればその破損したデータを訂正するために使用される。メモリ内のデータは、自然のバックグラウンド放射、電気的ノイズ、部品の故障などのさまざま原因によって破損しうる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ＥＣＣサブシステムは、所望のメモリの内容を、誤り訂正符号を形成する追加のビットを計算するためのベースとして使用して機能する。データと、ＥＣＣを構成するビットの両方がメモリに記憶される。ＥＣＣ対応システムのなかには、ＥＣＣを含むビットが、ＥＣＣが保護しているデータとは別に記憶されるものがある（例えば、一部のＲＡＩＤシステムなど）。ほかのＥＣＣ対応コンピュータシステムでは、データと、ＥＣＣを含むビットとを記憶するために、特殊なメモリデバイスが使用される。このようなメモリデバイスは、保護されているデータと共にＥＣＣを記憶するために余分な記憶空間（１つのタイプでは１２．５％）を必要とする。また、この余分な記憶空間により、メモリコントローラとメモリ間で追加のビットを伝達するために、追加の相互接続（すなわちコネクタおよび回路配線）が必要となる。ＥＣＣメモリコンポーネントは、主として高性能のコンピュータシステムで使用されており、このため、大量生産の恩恵を受ける（economies of scale）程には普及していない。このため、メモリサブシステムにＥＣＣを実装するには、多額の追加コストが必要となりうる。
【０００４】
コストの要因に加えて、一部のコンピュータシステムへのＥＣＣメモリの実装は実際的ではないことがある。例えば、追加の相互接続と記憶空間を実装するための物理空間は、ラップトップコンピュータシステムでは（仮に確保できるとしても）大きく制限される。また、一部のデスクトップコンピュータシステムでも空間が制限されることがある。このため、このようなシステムでは、ＥＣＣ対応コンポーネントの使用が他の点では望ましい場合であっても、これを使用できないことがある。
【課題を解決するための手段】
【０００５】
ＥＣＣ非対応コンポーネントにおいて誤り訂正符号（ＥＣＣ）検査を実装するための方法および装置が開示される。一実施形態では、前記方法は、メモリの第１の物理アドレスおよび第２の物理アドレスにマップしている論理アドレスを受け取るステップを有する。前記メモリの前記第１の物理アドレスおよび前記第２の物理アドレスは、データを記憶しているメモリ位置と、対応するＥＣＣを記憶しているメモリ位置とにそれぞれ対応している。前記方法は、前記論理アドレスを、前記第１の物理アドレスおよび前記第２の物理アドレスに変換するステップと、データパスを介して前記データにアクセスするステップと、同じデータパスを介して前記ＥＣＣに別個にアクセスするステップと、前記ＥＣＣを使用して前記データの整合性を検査するステップと、を更に有する。
【０００６】
一実施形態では、メモリサブシステムは、メモリと、データパスと、前記データパスによって前記メモリと結合されたメモリコントローラと、を有する。前記メモリコントローラは、論理アドレスを受け取るために結合され、前記論理アドレスを、第１の物理アドレスおよび第２の物理アドレスに変換するように構成されている。前記第１の物理アドレスは、データが記憶されているメモリ位置に対応し、前記第２の物理アドレスは、前記データに関連するＥＣＣが記憶されているメモリ位置に対応している。前記メモリコントローラは、前記データパスを介して前記データにアクセスし、前記データパスを介して前記ＥＣＣに別個にアクセスし、前記ＥＣＣを使用して前記データの整合性を検査するように更に構成されている。
【０００７】
各種実施形態では、一部のデータと、そのデータに関連するＥＣＣとがメモリの同じページまたは行に存在するように、一部のデータおよびそのデータに関連するＥＣＣの記憶域（storage）が配置されうる。このようにデータとその対応するＥＣＣにアクセスするために、（２つの別々の列アドレスと共に）１つの行アドレスのみを提供するだけで済む。必要なのが１つの行アドレスのみであるため、アクセスペナルティ（別の行をプリチャージする必要がある）を回避することができる。一般に、所定のメモリデバイス内でのデータとＥＣＣの配置は、データのビットおよびその対応するＥＣＣのビットが、物理的に近い位置に記憶されるように構成されうる。
【図面の簡単な説明】
【０００８】
【図１】コンピュータシステムの一実施形態を示す図。
【図２】メモリサブシステムの一実施形態を示す図。
【図３】誤り訂正符号（ＥＣＣ）を記憶するために一部が予約されているメモリの一実施形態のアドレッシングを示す図。
【図４】データと、そのデータに関連するＥＣＣとがメモリの同じページに記憶されることを保証するために、アドレスビットを並べ換える方法の一実施形態を示す図。
【図５】メモリモジュールの一実施形態を示す図。
【図６】ＥＣＣ非対応のメモリデバイスを備えたＥＣＣサブシステムを使用して、データの整合性を検証する一実施形態のフローチャート。
【発明を実施するための形態】
【０００９】
以下の詳細な説明を読み、添付図面を参照することにより、本発明の他の態様が明らかになるであろう。
【００１０】
本発明は、さまざまに変形されたり、代替形態を取りうるが、その特定の実施形態が、例として図面に図示され、かつ本明細書に詳細に記載される。しかし、図面およびその説明は、本発明を開示された特定の形態に限定するようには意図されてはおらず、逆に、本発明は、添付の特許請求の範囲によって規定される本発明の趣旨および範囲内に入るあらゆる変更、均等物、および代替物を網羅するものであることが理解されるべきである。
【００１１】
図１を参照すると、コンピュータシステム３００の一実施形態が示される。図１の実施形態では、コンピュータシステム３００は、複数の処理ノード３１２Ａ，３１２Ｂ，３１２Ｃ，３１２Ｄを備える。各処理ノードは、処理ノード３１２Ａ〜３１２Ｄにそれぞれ設けられているメモリコントローラ３１６Ａ〜３１６Ｄを介して各々のメモリ３１４Ａ〜３１４Ｄに結合されている。更に、処理ノード３１２Ａ〜３１２Ｄは、処理ノード３１２Ａ〜３１２Ｄ間の通信に使用するインタフェースロジックを備える。例えば、処理ノード３１２Ａは、処理ノード３１２Ｂと通信するためのインタフェースロジック３１８Ａと、処理ノード３１２Ｃと通信するためのインタフェースロジック３１８Ｂと、更に別の処理ノード（図示せず）と通信するための第３のインタフェースロジック３１８Ｃとを備える。同様に、処理ノード３１２Ｂは、インタフェースロジック３１８Ｄ，３１８Ｅ，３１８Ｆを備え、処理ノード３１２Ｃは、インタフェースロジック３１８Ｇ，３１８Ｈ，３１８Ｉを備え、処理ノード３１２Ｄは、インタフェースロジック３１８Ｊ，３１８Ｋ，３１８Ｌを備える。処理ノード３１２Ｄは、インタフェースロジック３１８Ｌを介して複数の入出力デバイス（例えばデイジーチェーン構成のデバイス３２０Ａ〜３２０Ｂ）と通信するように結合される。その他の処理ノードも、同様にほかのＩ／Ｏデバイスと通信してもよい。
【００１２】
処理ノード３１２Ａ〜３１２Ｄは、処理ノード間で通信を行うためにパケットベースのリンクを実施している。この実施形態では、このリンクは、一方向のラインの組として実施されてもよい（例えば、ライン３２４Ａは、処理ノード３１２Ａから処理ノード３１２Ｂにパケットを送信するために使用され、ライン３２４Ｂは、処理ノード３１２Ｂから処理ノード３１２Ａにパケットを送信するために使用される）。ラインのその他の組３２４Ｃ〜３２４Ｈは、図４に示すように、その他の処理ノード間でパケットを送信するために使用される。一般に、ラインの各組３２４は、１本以上のデータラインと、このデータラインに対応する１本以上のクロックラインと、伝達するパケットの種類を示す１本以上の制御ラインとを含み得る。このリンクは、処理ノード間の通信ではキャッシュコヒーレントな方法で動作するか、処理ノードとＩ／Ｏデバイス間の通信（あるいは、バスブリッジから、周辺機器相互接続（Peripheral Component Interconnect：ＰＣＩ）バスまたは業界標準アーキテクチャ（Industry Standard Architecture：ＩＳＡ）バスなどの従来の構成のＩ／Ｏバスへの通信）で非コヒーレントな方法で動作しうる。また、図に示すように、このリンクは、Ｉ／Ｏデバイス間のデイジーチェーン構成を使用して、非コヒーレントな方法で動作することもできる。１つの処理ノードから別の処理ノードに送信されるパケットが、１つ以上の中間ノードを通過しうる点に留意されたい。例えば、図４に示すように、処理ノード３１２Ａによって処理ノード３１２Ｄに送信されるパケットは、処理ノード３１２Ｂか処理ノード３１２Ｃのいずれかを通過しうる。適したルーティングアルゴリズムであれば、どのようなものでも使用することができる。コンピュータシステム３００の別の実施形態では、処理ノードの数が、図４に示した実施形態よりも増減してもよい。
【００１３】
一般に、パケットは、ノード間のライン３２４を伝わる１つ以上のビットタイミング（bit time）として送信され得る。ビットタイミングは、対応するクロックラインを伝わるクロック信号の立ち上がりまたは立ち下がりであり得る。パケットには、トランザクションを開始するためのコマンドパケット、キャッシュコヒーレンシを維持するためのプローブパケット、プローブおよびコマンドに応答する応答パケットなどがあり得る。
【００１４】
処理ノード３１２Ａ〜３１２Ｄは、メモリコントローラおよびインタフェースロジックに加えて、１つ以上のプロセッサを有していてもよい。概して、処理ノードは、少なくとも１つのプロセッサを備えており、必要に応じてメモリおよびその他の論理回路と通信するためのメモリコントローラを任意選択で備えていてもよい。より詳細には、各処理ノード３１２Ａ〜３１２Ｄは、図１に示すように、プロセッサ１０のコピーを１つ以上備えていてもよい（例えば、図２〜３に示す各種の構造および動作の詳細を含む）。１つ以上のプロセッサが、処理ノード内にまたは処理ノードを形成するチップマルチプロセッシング（ＣＭＰ）またはチップマルチスレッド（ＣＭＴ）対応の集積回路を備えても、あるいは、処理ノードが、ほかの任意の望ましい内部構造を備えてもよい。
【００１５】
メモリ３１４Ａ〜３１４Ｄは任意の適したメモリデバイスを備えうる。例えば、メモリ３１４Ａ〜３１４Ｄは、１つ以上のラムバスＤＲＡＭ（ＲＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ＤＤＲ  ＳＤＲＡＭ、スタティックＲＡＭなどを備えてもよい。コンピュータシステム３００のアドレス空間は、メモリ３１４Ａ〜３１４Ｄに分割されている。各処理ノード３１２Ａ〜３１２Ｄは、アドレスとメモリ３１４Ａ〜３１４Ｄとの対応関係、すなわち、特定のアドレスについてメモリ要求を転送すべき処理ノード３１４Ａ〜３１４Ｄの決定に用いるメモリマップを備えていてもよい。一実施形態では、コンピュータシステム３００内のアドレスのコヒーレンシポイント（coherency point）は、そのアドレスに対応しているバイトを記憶しているメモリに結合されたメモリコントローラ３１６Ａ〜３１６Ｄである。換言すれば、メモリコントローラ３１６Ａ〜３１６Ｄは、対応するメモリ３１４Ａ〜３１４Ｄへのあらゆるメモリアクセスが、キャッシュコヒーレントな方法で行われることを保証する責任を負っている。メモリコントローラ３１６Ａ〜３１６Ｄは、メモリ３１４Ａ〜３１４Ｄとインタフェースするための制御回路を備えうる。更に、メモリコントローラ３１６Ａ〜３１６Ｄは、メモリ要求をキューに記憶するための要求キューを備えていてもよい。
【００１６】
インタフェースロジック３１８Ａ〜３１８Ｌは、リンクからパケットを受信すると共に、リンクに送信するパケットをバッファするための各種バッファを備えうる。コンピュータシステム３００は、パケットを送信するための任意の適切なフロー制御メカニズムを使用することができる。例えば、一実施形態では、各インタフェースロジック３１８は、そのインタフェースロジックに接続されているリンクの反対側にある受信装置内の各種バッファの数のカウントを記憶している。インタフェースロジックは、パケットを記憶するための空きバッファが受信側のインタフェースロジックになければ、パケットを送信しない。パケットを前方にルーティングしたことで受信側のバッファに空きが生ずると、受信側のインタフェースロジックは、バッファに空きが生じたことを知らせるメッセージを、送信側のインタフェースロジックに送信する。このようなメカニズムは、「クーポンベースの」システムと呼ぶことができる。
【００１７】
Ｉ／Ｏデバイス３２０Ａ〜３２０Ｂは、適したＩ／Ｏデバイスであれば、どのようなものであってもよい。例えば、Ｉ／Ｏデバイス３２０Ａ〜３２０Ｂは、別のコンピュータシステムに結合され、そのコンピュータシステムと通信するためのデバイス（ネットワークインタフェースカードやモデムなど）を備えうる。更に、Ｉ／Ｏデバイス３２０Ａ〜３２０Ｂは、ビデオアクセラレータ、オーディオカード、ハードディスクドライブもしくはフロッピーディスクドライブまたはドライブコントローラ、ＳＣＳＩ（Small Computer Systems Interface）アダプタ、テレフォニーカード、サウンドカード、およびＧＰＩＢインタフェースカードまたはフィールドバスインタフェースカードなどの各種のデータ収集カードを含んでいてもよい。更に、カードとして実装される任意のＩ／Ｏデバイスが、システム３００のメイン回路基板上の回路および／または処理ノードで実行されるソフトウェアとして実装されてもよい。本明細書において「Ｉ／Ｏデバイス」との用語と「周辺機器」との用語は同義であるとされる点に留意されたい。
【００１８】
更に、１つ以上のプロセッサ１０が、１つ以上のＩ／Ｏ相互接続および／またはメモリに対するブリッジへのプロセッサの１つ以上のインタフェースを有する、従来のパーソナルコンピュータ（ＰＣ）構成で実装されてもよい。
【００１９】
図２を参照すると、メモリサブシステムの一実施形態の図が示される。図の実施形態では、メモリサブシステムは、複数のメモリモジュール３１４を含むメモリを備える。各メモリモジュール３１４は、複数のメモリデバイス３６０を備える。実施形態によって、各モジュールにあるメモリモジュール３１４とメモリデバイス３６０の個数が、メモリのサイズ（および可能な最大サイズ）、コネクタの数、キャッシュラインのサイズ、ならびに他の共通の要因などのパラメータに応じて変わってもよい。
【００２０】
メモリモジュール３１４は、メモリバス３５０を介してメモリコントローラ３１６と結合されている。メモリバス３５０は、メモリモジュール３１４とメモリコントローラ３１６の間で、データを伝達し、信号のアドレッシングを行うように構成されうる。データ信号は、メモリバス３５０の一部であるデータパスを介して、メモリモジュール３１４との間で伝達されうる。アドレス信号は、メモリコントローラ３１６からメモリモジュール３１４に伝達され、（メモリの行を選択するための）別個の行アドレス信号と、（行内の特定のアドレスを選択するための）列アドレス信号を含んでもよく、これらは別のタイミングで送信される。データと誤り訂正符号（ＥＣＣ）は、各種メモリデバイス３６０をまたがってメモリモジュールに記憶されうる。例えば、メモリモジュール３１４が８つのメモリデバイス３６０を有する場合、各メモリデバイスに１バイトのデータの１ビットを記憶することにより、１バイトのデータが記憶されうる。
【００２１】
メモリコントローラ３１６は、ＥＣＣサブシステム３４０を備え、ＥＣＣサブシステム３４０は、メモリから読み出されたデータの整合性を検証し、場合によっては、存在しうる誤りを訂正するために使用されうる。ＥＣＣサブシステム３４０は、保護するデータに対してＥＣＣを生成するための、公知の複数の方法の１つを使用しうる。
【００２２】
一実施形態では、メモリモジュール３１４は、（最新技術によって理解される）ＥＣＣ対応のメモリモジュールではない。しかし、メモリモジュール３１４内に、ＥＣＣを記憶するためにメモリ空間を予約することができる。例えば、一実施形態では、メモリモジュールの使用可能なアドレス空間の１／８がＥＣＣ用に予約され、残りの７／８がデータの記憶用に予約されうる。ＥＣＣ用に予約される一部のメモリはアプリケーションから隠されており、このため、メモリコントローラ３１６のＥＣＣサブシステム３４０しか使用することができない。次に、メモリアドレス空間を、データの記憶用に予約されるアドレスと、ＥＣＣの記憶用に予約されるアドレスとに分割する方法について、図３を参照して更に詳細に説明する。
【００２３】
図３は、ＥＣＣを記憶するために一部が予約されているメモリの一実施形態のアドレッシングを示す図である。図の実施形態では、メモリ４１４は、論理アドレス空間と物理アドレス空間の両方で示されている。論理アドレス空間では、メモリの一部がＥＣＣの記憶用に予約され、アドレス空間の大半がデータの記憶用に予約される。このため、記憶されているＥＣＣのそれぞれは、データ用に予約されているアドレス空間に記憶されているデータブロックに対応している。データの記憶用に予約されるアドレス空間は、データの記憶および取得のためにメモリを必要とするソフトウェアアプリケーションによってアクセスされうる。これに対して、ＥＣＣの記憶用に予約されるアドレス空間は、ソフトウェアアプリケーションによってアクセスされず、ソフトウェアアプリケーションから隠されうる。ＥＣＣの記憶用の部分は、ＥＣＣサブシステムからは、図２に示すように見えうる。
【００２４】
物理アドレス空間では、データと、対応するＥＣＣとが、メモリのページまたは行に従って配置される。この特定の実施形態では、特定のデータブロックに対応するＥＣＣは、データブロックと共に同じページ内の、ページ境界の近くに配置される。これにより、アクセスしようとするデータと、その対応するＥＣＣに対して、１つの行アドレスのみが送られるため、より効率的なアクセスが可能となる。換言すれば、データとその対応するＥＣＣの単位は、同じ行の、別の列に記憶されうる。ＥＣＣと、対応するデータとの両方にアクセスするために１つの行アドレスのみを送信するだけで済むように、ＥＣＣと対応するデータとを配置することによって、行のプリチャージに関連するアクセスペナルティを回避することができる。このため、ＥＣＣは、そのＥＣＣが保護しているデータの近くのアドレス位置に記憶される。一般に、この配置は、ＥＣＣの記憶用に１／ｎ（例えば、ｎ＝８の場合は１／８）のアドレスを予約し、ＥＣＣが保護するデータの記憶用に、残りの（ｎ−１）／ｎ（例えば、７／８）のアドレスを予約することによって得られる。
【００２５】
データと対応するＥＣＣとのほかの配置も可能であり、考察される。例えば、一実施形態では、対応するＥＣＣの記憶用に使用されるメモリの実際の位置を求めるために、ユーザが要求する各記憶位置の数値アドレスに、（ｎ＋１）／ｎ（例えば、ｎ＝８の場合９／８）を掛けうる。これにより、データブロック間の１／ｎ（例えば、１／８）のギャップにＥＣＣが記憶されるようになる。
【００２６】
図４は、データと、そのデータに関連するＥＣＣとがメモリの同じページに記憶されることを保証するために、アドレスビットを並べ換える方法の一実施形態を示す図である。図の実施形態では、ＥＣＣの記憶用に、論理アドレス空間の特定の一部（ここでは、Ａ８  Ａ７  Ａ６  Ａ５  Ａ４  Ａ３  Ａ２  Ａ１  Ａ０として示す）が予約される。より詳細には、この例では、データの記憶用に使用可能な最上位の論理アドレスは、１１０＿１１１＿１１１である。このため、この例では、論理アドレス１１１＿ｘｘｘ＿ｘｘｘの全てがＥＣＣの記憶用に予約され、残りの論理アドレスがデータの記憶用に予約される。
【００２７】
ある範囲のデータに対応するＥＣＣの記憶用の物理アドレス空間を予約するために、アドレスビットが並べ換えられうる。このため、図に示すように、物理アドレスの１つの特定の範囲に対して、特定のアドレスビットを置き換える（すなわち交換する）ことによって、対応するＥＣＣの物理アドレスを得ることができる。この例では、対応するＥＣＣの記憶用の物理アドレスを得るために、アドレスビットＡ８、Ａ７およびＡ６が、アドレスビットＡ５、Ａ４およびＡ３と交換される。この結果、メモリに供給されるアドレスは、Ａ５  Ａ４  Ａ３  Ａ８  Ａ７  Ａ６  Ａ２  Ａ１  Ａ０となる。このため、物理アドレスＡ５  Ａ４  Ａ３  Ａ８  Ａ７  Ａ６  ｘ  ｘ  ｘの範囲に記憶されているデータについて、対応するＥＣＣが、物理アドレスＡ５  Ａ４  Ａ３  １  １  １  Ａ２  Ａ１  Ａ０に記憶されうる。このようにビットアドレスを並べ換えることにより、データと、対応するＥＣＣとに、より効率的にアクセスすることが可能となる。アドレスビットは、ＥＣＣが、対応するデータブロックと同じページ内に記憶されるように（例えば上の例のように）並べ換えられ、図３に示すようにページ境界に記憶されうる。このため、１つの行アドレスに対応するメモリのページに対して、データと、その対応するＥＣＣの両方が、同じ行の、別の列に記憶される。このため、ＥＣＣとデータの両方にアクセスするために１つの行アドレスのみが送信され、対応する列アドレスは別個に送信されうる。このように、データブロックと対応するＥＣＣとの両方にアクセスするために、２つの異なる行アドレスからの情報にアクセスする必要がある２回のプリチャージサイクルではなく、１回のプリチャージサイクルのみでよく、これにより、アクセスのレーテンシが最小限に短縮される。
【００２８】
図５は、メモリモジュールの一実施形態の図である。図の実施形態では、メモリモジュール３１４は、現在の最新技術において理解されるＥＣＣ対応メモリモジュールでない。最新のＥＣＣ対応メモリモジュールでは、通常、ＥＣＣ専用の追加の記憶域が設けられている。この追加の記憶域は、メモリモジュールのＰＣＢ（プリント回路基板）に実装されている追加のメモリデバイスによって提供されうる。また、ＥＣＣ対応メモリモジュール（一般にＥＣＣ対応メモリ）間のデータパスは、ＥＣＣを、対応する保護されているデータと同時に伝達可能なように、広く設計されている。
【００２９】
これに対して、図５に示すメモリモジュール３１４は、ＥＣＣに準拠するための特定の事項を考慮していないデータ記憶域用に設計されている。しかし、本明細書に開示の手法を使用して、このタイプのメモリモジュールでＥＣＣの使用を実装することができる。
【００３０】
この特定の実施形態では、メモリモジュール３１４は、８つのメモリデバイス３６０を有する。各メモリデバイス３６０は、それぞれ、データブロックの一部およびＥＣＣの一部を記憶しうる。例えば、１バイト（８ビット）の１ビットを８つのメモリデバイスのそれぞれに記憶することによって、１バイトがメモリモジュール３１４に記憶されうる。同様に、各メモリデバイス３６０は、それぞれ、８ビットのＥＣＣの１ビットも記憶しうる。このため、データおよびＥＣＣの記憶域（storage）を、メモリモジュール３１４の複数のメモリデバイスに分散させることができる。しかし、このような配置は、図３に関連して上で説明した物理アドレス空間のマップに従って記憶されているデータおよびＥＣＣの配置に適したものとなりうる。
【００３１】
また、メモリモジュール３１４は、コネクタ３７０を備え、コネクタ３７０によりメモリモジュールがメモリバスと結合可能となる。コネクタ３７０は、カードエッジコネクタであっても、他のどのような適切なタイプのコネクタでもよい。接続のデータ部分の幅（ビットの数）は、使用されるシステムのキャッシュラインに応じて決まりうる。システムがＥＣＣに対応していない場合、キャッシュラインはデータを転送するには十分広いが、ＥＣＣの同時転送に対応するほどには広くない。下に更に詳しく説明するように、このような実施形態では、ＥＣＣが、データの転送とは独立した転送で、データバスで伝達されうる。
【００３２】
図６は、ＥＣＣ非対応のメモリデバイスを備えたＥＣＣサブシステムを使用して、データの整合性を検証する一実施形態のフローチャートである。図の実施形態では、方法６００は、論理アドレスの供給から開始する（６０５）。論理アドレスは、コンピュータシステムで実行されているソフトウェアによって、メモリコントローラに供給されうる。メモリコントローラは、論理アドレスを受け取ると、論理アドレスを第１の物理アドレスと第２の物理アドレスに変換しうる（６１０）。これらの物理アドレスの第１の物理アドレスは、メモリに記憶されているデータブロックに対応し、第２の物理アドレスは、このデータブロックの整合性を検査するために使用されるＥＣＣに対応しうる。一実施形態では、論理アドレスが、１つの行アドレスと２つの別々の列アドレスに変換されうる。第１の列アドレスは、（行アドレスと併せて）データブロックが記憶されている場所に対応し、第２の列アドレスは、（同じ行アドレスと併せて）このデータブロックに関連するＥＣＣに対応している。
【００３３】
論理アドレスを第１の物理アドレスと第２の物理アドレスに変換すると、第１のサイクル中に、データが、データパスを介して第１の物理アドレスからアクセスされうる（６１５）。メモリシステムは、ＥＣＣに対応の標準的なフォームファクタ（form factor）に対して明確に設計されていないため、データに対応するＥＣＣが、別の第２のサイクルで同じデータパスを介してアクセスされる（６２０）。このため、ＥＣＣに対するアドレス空間を予約し、データにアクセスするサイクルとは別のサイクルでＥＣＣにアクセスすることにより、ＥＣＣ対応として明確に設計されていないデバイスでも、開示のＥＣＣの実装が可能となる。データおよびその対応するＥＣＣへのアクセス後、ＥＣＣサブシステムが、ＥＣＣの手順に従ってデータの整合性を検査しうる（６２５）。このステップは、誤りが検出されたときに、可能であればデータを修正するステップを含んでもよい。
【００３４】
また、メモリに書き込むデータに対してＥＣＣを生成し、記憶するための方法も考察される。この方法は、データを記憶する位置に対応する論理アドレスを受け取るステップを考察する。論理アドレスの変換から、データの記憶用の第１の物理アドレスが得られる。論理アドレスを使用して、対応するＥＣＣの記憶用の第２の物理アドレスが得られ、このアドレスは、ＥＣＣ記憶域のために予約されるアドレス空間の一部にマップしている。データの受信時に、特定のＥＣＣの手順に従って対応するＥＣＣを生成するためにデータが使用されうる。第１のサイクルにおいて、データがメモリ内の第１の物理アドレスに書き込まれうる。第２のサイクルにおいて、ＥＣＣが第２の物理アドレスに書き込まれうる。本明細書に記載したほかの実施形態と同様に、第１物理アドレスと第２の物理アドレスの両方は、同じ行アドレスを有するが、列アドレスは異なりうる。
【００３５】
本発明を特定の実施形態を参照して記載したが、この実施形態は例示であり、本発明の範囲はこれに制限されないことが理解されよう。記載した各種実施形態のどのような変形、変更、追加および改良も可能である。このような変形、変更、追加および改良は、添付の特許請求の範囲に詳述する発明の範囲に含まれうる。
【産業上の利用可能性】
【００３６】
本発明は、一般にマイクロプロセッサに利用可能である。
【図１】
2010522374.tif 000003
【図２】
2010522374.tif 000004
【図３】
2010522374.tif 000005
【図４】
2010522374.tif 000006
【図５】
2010522374.tif 000007
【図６】
2010522374.tif 000008
【国際調査報告】
2010522374.tif 000009
2010522374.tif 000010
2010522374.tif 000011