(57)【特許請求の範囲】
【請求項１】
第１のメモリチップと、
第２のメモリチップと、
第３のメモリチップと、
前記第１のメモリチップとの間で第１のデータを転送し、前記第２のメモリチップとの間で第２のデータを転送し、前記第３のメモリチップとの間で前記第１のデータに対応する第１のエラーチェック情報を転送し、前記第３のメモリチップとの間で前記第２のデータに対応する第２のエラーチェック情報を転送する、メモリバッファと
を備え、
前記メモリバッファは、前記第１のエラーチェック情報または前記第２のエラーチェック情報の１つに対応する、前記第３のメモリチップ内の位置を示すエラーアドレスを決定し、前記エラーアドレスは、前記第１のデータが前記第１のメモリチップとの間で転送されているかどうか、または、前記第２のデータが前記第２のメモリチップとの間で転送されているかどうかに応じて異なって決定され、
前記メモリバッファは、データ転送のための少なくとも１つのアドレスを受信し、前記第１のデータが前記第１のメモリチップとの間で転送されているものであれば前記受信したアドレスのビット値を反転させることによって、および、前記第２のデータが前記第２のメモリチップとの間で転送されているものであれば前記ビット値を保持することによって、前記受信したアドレスから前記エラーアドレスを決定する、メモリモジュール。
【請求項２】
前記メモリバッファは、連続して第１のデータアドレスに、次いで、第２のデータアドレスにアクセスすることによって前記第１のデータを転送し、前記メモリバッファは、
前記第１のデータの転送が読み出し動作に対応していれば、前記第１のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること、
前記第１のデータの転送が書き込み動作に対応していれば、前記第２のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること
によって前記第１のエラーチェック情報を転送する、請求項１に記載のメモリモジュール。
【請求項３】
前記メモリバッファは、データ転送が前記第１のメモリチップによるものかまたは前記第２のメモリチップによるものかについての指示の受信に応答して、前記エラーアドレス
を決定する、請求項１に記載のメモリモジュール。
【請求項４】
前記指示は、１つまたは複数のチップ選択信号を含む、請求項３に記載のメモリモジュール。
【請求項５】
前記指示は、１つまたは複数のアドレスビットを含む、請求項３に記載のメモリモジュール。
【請求項６】
前記メモリバッファは、第１のビット幅で前記第１のエラーチェック情報を受信し、前記第１のビット幅より大きい第２のビット幅で前記第３のメモリチップに前記第１のエラーチェック情報を送信することによって、前記第１のエラーチェック情報を転送する、請求項１に記載のメモリモジュール。
【請求項７】
前記メモリバッファは、第１のビット幅で前記第３のメモリチップから前記第１のエラーチェック情報を受信し、前記第１のビット幅より小さい第２のビット幅で前記第１のエラーチェック情報を送信することによって、前記第１のエラーチェック情報を転送する、請求項１に記載のメモリモジュール。
【請求項８】
前記第３のメモリチップは、前記第１のメモリチップと前記第２のメモリチップとの間で共有される、請求項１に記載のメモリモジュール。
【請求項９】
前記メモリバッファは、前記第１のデータまたは前記第２のデータの１つであるデータを受信し、データ転送が前記第１のメモリチップによるものかまたは前記第２のメモリチップによるものかに応じて、前記データを前記第１のメモリチップまたは前記第２のメモリチップのいずれかに選択的にルーティングする、ルーティング回路を備える、請求項１に記載のメモリモジュール。
【請求項１０】
前記エラーアドレスは、列アドレスを含む、請求項１に記載のメモリモジュール。
【請求項１１】
メモリバッファデバイスであって、
第１のメモリチップとの間で第１のデータを転送するための第１のインターフェースと、
第２のメモリチップとの間で第２のデータを転送するための第２のインターフェースと、
第３のメモリチップとの間で前記第１のデータに対応する第１のエラーチェック情報を転送し、前記第３のメモリチップとの間で前記第２のデータに対応する第２のエラーチェック情報を転送するための第３のインターフェースと、
前記第１のエラーチェック情報または前記第２のエラーチェック情報の１つに対応する、前記第３のメモリチップ内の位置を示すエラーアドレスを決定する、回路であって、前記エラーアドレスは、前記第１のデータが前記第１のインターフェースを介して転送されているかどうか、または、前記第２のデータが前記第２のインターフェースを介して転送されているかどうかに応じて異なって決定される、回路と、
を備え、
前記回路は、データ転送のための少なくとも１つのアドレスを受信し、前記第１のデータが前記第１のインターフェースを介して転送されているものであれば前記受信したアドレスのビット値を反転させることによって、および、前記第２のデータが前記第２のインターフェースを介して転送されているものであれば前記ビット値を保持することによって、前記受信したアドレスから前記エラーアドレスを決定する、メモリバッファデバイス。
【請求項１２】
前記回路は、連続して第１のデータアドレスに、次いで、第２のデータアドレスにアクセスすることによって前記第１のデータを転送し、前記回路は、
前記第１のデータの転送が読み出し動作に対応していれば、前記第１のデータアドレス
にアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること、
前記第１のデータの転送が書き込み動作に対応していれば、前記第２のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること
によって前記第１のエラーチェック情報を転送する、請求項１１に記載のメモリバッファデバイス。
【請求項１３】
前記回路は、データ転送が前記第１のインターフェースを介するものかまたは前記第２のインターフェースを介するものかについての指示の受信に応答して、前記エラーアドレスを決定する、請求項１１に記載のメモリバッファデバイス。
【請求項１４】
前記指示は、１つまたは複数のチップ選択信号を含む、請求項１３に記載のメモリバッファデバイス。
【請求項１５】
前記指示は、１つまたは複数のアドレスビットを含む、請求項１３に記載のメモリバッファデバイス。
【請求項１６】
前記回路は、第１のビット幅で前記第３のインターフェースを介して前記第１のエラーチェック情報を受信し、前記第１のビット幅より大きい第２のビット幅で前記第３のインターフェースを介して前記第１のエラーチェック情報を送信することによって、前記第１のエラーチェック情報を転送する、請求項１１に記載のメモリバッファデバイス。
【請求項１７】
前記回路は、第１のビット幅で前記第３のインターフェースを介して前記第１のエラーチェック情報を受信し、前記第１のビット幅より小さい第２のビット幅で前記第１のエラーチェック情報を送信することによって、前記第１のエラーチェック情報を転送する、請求項１１に記載のメモリバッファデバイス。
【請求項１８】
メモリコントローラであって、
第１のメモリチップとの間で第１のデータを転送するための第１のインターフェースと、
第２のメモリチップとの間で第２のデータを転送するための第２のインターフェースと、
第３のメモリチップとの間で前記第１のデータに対応する第１のエラーチェック情報を転送し、前記第３のメモリチップとの間で前記第２のデータに対応する第２のエラーチェック情報を転送するための第３のインターフェースと、
前記第１のエラーチェック情報または前記第２のエラーチェック情報の１つに対応する、前記第３のメモリチップ内の位置を示すエラーアドレスを決定する、回路であって、前記エラーアドレスは、前記第１のデータが前記第１のインターフェースを介して転送されているかどうか、または、前記第２のデータが前記第２のインターフェースを介して転送されているかどうかに応じて異なって決定される、回路と、
を備え、
前記回路は、前記第１のデータまたは前記第２のデータのうちの１つのデータ転送のための少なくとも１つのアドレスで前記第１のメモリチップまたは前記第２のメモリチップにアクセスし、前記エラーアドレスのビット値は、前記第１のデータが前記第１のインターフェースを介して転送されているものであれば前記アクセスしたアドレスの対応するビット値から反転され、前記エラーアドレスのビット値は、前記第２のデータが前記第２のインターフェースを介して転送されているものであれば前記アクセスしたアドレスの対応するビット値と同じである、メモリコントローラ。
【請求項１９】
前記回路は、連続して第１のデータアドレスに、次いで、第２のデータアドレスにアクセスすることによって前記第１のデータを転送し、前記回路は、
前記第１のデータの転送が読み出し動作であれば、前記第１のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること、
前記第１のデータの転送が書き込み動作であれば、前記第２のデータアドレスにアクセ
スするのと実質的に同時に前記エラーアドレスにアクセスすること
によって前記第１のエラーチェック情報を転送する、請求項１８に記載のメモリコントローラ。
【請求項２０】
第１のメモリチップとの間で第１のデータを転送すること、第２のメモリチップとの間で第２のデータを転送すること、第３のメモリチップとの間で前記第１のデータのための第１のエラーチェック情報を転送すること、および、前記第３のメモリチップとの間で前記第２のデータのための第２のエラーチェック情報を転送することをサポートする、メモリバッファデバイスにおける動作方法であって、
前記第１のメモリチップとの間で前記第１のデータを転送するかまたは第２のメモリチップとの間で前記第２のデータを転送するかについての指示を前記メモリバッファデバイスにおいて受信することと、
前記第１のメモリチップとの間で前記第１のデータを転送するかまたは前記第２のメモリチップとの間で前記第２のデータを転送するかについての指示に応答して、前記第１のエラーチェック情報または前記第２のエラーチェック情報の１つに対応する、前記第３のメモリチップ内の位置を示すエラーアドレスを決定することであって、前記エラーアドレスは、前記第１のデータが前記第１のメモリチップとの間で転送されるべきかどうか、または、前記第２のデータが前記第２のメモリチップとの間で転送されるべきかどうかに応じて異なって決定されることと
を含み、
データ転送のための少なくとも１つのアドレスを受信することをさらに含み、
前記エラーアドレスを決定することは、前記第１のデータが前記第１のメモリチップとの間で転送されるべきであれば前記受信したアドレスのビット値を反転させることと、前記第２のデータが前記第２のメモリチップとの間で転送されるべきであれば前記ビット値を保持することとを含む、方法。
【請求項２１】
連続して第１のデータアドレスに、次いで、第２のデータアドレスにアクセスすることによって前記第１のメモリチップとの間で前記第１のデータを転送すること、および、
前記第１のデータの転送が読み出し動作に対応していれば、前記第１のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること、
前記第１のデータの転送が書き込み動作に対応していれば、前記第２のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること
によって前記第３のメモリチップとの間で前記第１のエラーチェック情報を転送する、請求項２０に記載の方法。
【請求項２２】
第１のビット幅で前記第１のエラーチェック情報を受信することと、前記第１のビット幅より大きい第２のビット幅で前記第３のメモリチップに前記第１のエラーチェック情報を送信することとをさらに含む、請求項２０に記載の方法。
【請求項２３】
第１のビット幅で前記第３のメモリチップから前記第１のエラーチェック情報を受信することと、前記第１のビット幅より小さい第２のビット幅で前記第１のエラーチェック情報を送信することとをさらに含む、請求項２０に記載の方法。
【請求項２４】
メモリチップと通信する方法であって、
第１のメモリチップとの間で第１のテータを転送することと、
第２のメモリチップとの間で第２のデータを転送することと、
第３のメモリチップとの間で前記第１のデータに対応する第１のエラーチェック情報を転送することと、
前記第３のメモリチップとの間で前記第２のデータに対応する第２のエラーチェック情報を転送することとを含み、
前記第１のエラーチェック情報または前記第２のエラーチェック情報の１つに対応する、前記第３のメモリチップ内の位置を示すエラーアドレスが、前記第１のデータが前記第１のメモリチップとの間で転送されているかどうか、または、前記第２のデータが前記第２のメモリチップとの間で転送されているかどうかに応じて異なって決定され、
データ転送のために少なくとも１つのアドレスが用いられ、前記エラーアドレスは、前記第１のデータが前記第１のメモリチップとの間で転送されているものであれば前記アクセスしたアドレスのビット値を反転させることによって、および、前記第２のデータが前記第２のメモリチップとの間で転送されているものであれば前記ビット値を保持することによって決定される、方法。
【請求項２５】
前記第１のデータは、連続して第１のデータアドレスに、次いで、第２のデータアドレスにアクセスすることによって転送され、
前記第１のエラーチェック情報は、
前記第１のデータの転送が読み出し動作に対応していれば、前記第１のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること、
前記第１のデータの転送が書き込み動作に対応していれば、前記第２のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること
によって前記エラーチェック情報を転送する、請求項２４に記載の方法。
【請求項２６】
前記第１のメモリチップと前記第２のメモリチップは同じメモリランクに属する、請求項１記載のメモリモジュール。
【発明の詳細な説明】
【背景技術】
【０００１】
本開示は、メモリシステムに関し、より具体的には、エラー検出および訂正（ＥＤＣ）機能性を含むメモリシステムのコンポーネントに関する。
【０００２】
本明細書の実施形態の教示は、添付の図面と併せて、以下の詳細な説明を考慮することによって容易に理解することができる。
【図面の簡単な説明】
【０００３】
【図１】一実施形態による、ＥＤＣ範囲に対するメモリシステムを示す。
【図２Ａ】一実施形態による、図１の実施形態での書き込み動作中のアドレス回路の動作を示す表である。
【図２Ｂ】一実施形態による、図１の実施形態での読み出し動作中のアドレス回路の動作を示す表である。
【図３Ａ】一実施形態による、図１の実施形態での書き込み動作中のメモリシステムの動作を示すタイミング図である。
【図３Ｂ】一実施形態による、図１の実施形態での読み出し動作中のメモリシステムの動作を示すタイミング図である。
【図４】別の実施形態による、ＥＤＣ範囲に対するメモリシステムを示す。
【図５Ａ】一実施形態による、書き込み動作中の図４の実施形態のアドレス回路の動作を示す表である。
【図５Ｂ】一実施形態による、読み出し動作中の図４の実施形態のアドレス回路の動作を示す表である。
【図６】さらに別の実施形態による、ＥＤＣ範囲に対するメモリシステムを示す。
【図７】さらに別の実施形態による、ＥＤＣ範囲に対するメモリシステムを示す。
【発明を実施するための形態】
【０００４】
本開示の実施形態は、メモリアクセス中に起こり得るメモリエラーを検出および訂正するためのエラー検出および訂正（ＥＤＣ）範囲をサポートするメモリシステムのコンポーネントに関する。一実施形態では、メモリモジュールは、データを格納する２つのメモリデバイス群と、両方のメモリデバイス群のためにエラーチェック情報（例えば、エラー訂正コード）を格納する別のメモリデバイスとを含む。また、メモリモジュールは、メモリモジュールとメモリコントローラとの間の通信を取り扱うメモリバッファも含む。メモリバッファは、あるメモリデバイス群のデータに、別のメモリデバイス群のデータとは無関係にアクセスすることができるように、メモリスレッディングまたはダイナミックポイントツーポイント（ＤＰＰ）メモリ構成をサポートすることができる。エラーチェック情報のためのメモリデバイスを共有する一方で独立したデータアクセスをサポートするため、バッファは、データが第１のメモリデバイス群によって転送されるかまたは第２のメモリデバイス群によって転送されるかに基づいて、エラーチェック情報にアクセスするためのアドレスを決定する。いくつかの実施形態では、メモリバッファにあるものとして記載される機能性は、代わりにメモリコントローラに実装して、メモリバッファの必要性を低減または排除することができる。
【０００５】
本開示全体を通じて「エラーチェック情報」という用語は、メモリシステムに格納されたデータ内で起こるエラーの検出および／もしくは訂正において使用されるかまたは同エラーの検出および／もしくは訂正に関連する任意の情報として幅広く定義されることに留意されたい。その上、本明細書全体を通じて「エラー訂正コード」（ＥＣＣ）という用語は、エラー検出および訂正のためにメモリシステムで使用されるエラーチェック情報を指す。
【０００６】
ここで、本開示のいくつかの実施形態を詳細に参照し、その例を添付の図面に示す。図面では、実行可能な同様のまたは類似した参照番号を使用することができ、それらの参照番号は同様のまたは類似した機能性を示すことができることに留意されたい。図面は、単なる例示として本開示の実施形態を描写する。当業者であれば、以下の説明から、本明細書に記載される本開示の原理または称賛される利益から逸脱することなく、本明細書で示される構造および方法の代替の実施形態を使用できることが容易に理解されよう。
【０００７】
図１は、一実施形態による、ＥＤＣ範囲に対するメモリシステム１００を示す。メモリシステム１００は、一次信号リンク１６０を介して相互接続されたメモリコントローラ１０２とメモリモジュール１０４を含む。一実施形態では、システム１００は、マザーボード上に存在し得る。メモリコントローラ１０２は、個別の集積回路でも、中央処理装置（ＣＰＵ）またはグラフィック処理装置（ＧＰＵ）などのより大きな集積回路の一部でもあり得る。
【０００８】
一次信号リンク１６０は、メモリコントローラ１０２からメモリモジュール１０４まで制御およびアドレス情報を搬送するコマンドおよびアドレス用一次リンクＰＣＡを含む。また、信号リンク１６０は、メモリコントローラ１０２とメモリモジュール１０４との間でデータを転送するための２つの一次データリンクＰＤＱ０およびＰＤＱ１も含む。一実施形態では、一次データリンクＰＤＱ０およびＰＤＱ１はそれぞれ３２ビット幅である。また、一次信号リンク１６０は、メモリコントローラ１０２とメモリモジュール１０４との間でＥＣＣを転送するための２つの一次ＥＣＣリンクＰＥＣＣ０およびＰＥＣＣ１も含む。一実施形態では、ＥＣＣリンクＰＥＣＣ０およびＰＥＣＣ１はそれぞれ４ビット幅である。
【０００９】
メモリコントローラ１０２は、モジュールスレッディングをサポートし、モジュールスレッディングは、単一の比較的幅広いメモリチャネルを、共通のアドレスバスを通じて互いに無関係にアクセスすることができる２つのサブチャネルに分割する技法を指す。例えば、メモリスレッディングを有効にすると、メモリコントローラ１０２は、メモリトランザクション（例えば、読み出しおよび書き込みトランザクション）を２つのスレッドＴ０およびＴ１に分割する。スレッドＴ０に対するデータはＰＤＱ０リンクを介して転送され、スレッドＴ０に対するＥＣＣはＰＥＣＣ０リンクを介して転送される。スレッドＴ１に対するデータはＰＤＱ１リンクを介して転送され、スレッドＴ１に対するＥＣＣはＰＥＣＣ１リンクを介して転送される。メモリコントローラ１０２は、ＰＣＡリンクを介してコマンドおよびアドレス情報を送信し、２つのアクティブローの選択信号Ｓ０＃およびＳ１＃を使用してトランザクション用のスレッドの１つを選択することによって、メモリトランザクションを制御する。例えば、Ｓ０＃がアサートされればスレッドＴ０が選択され、Ｓ１＃がアサートされればスレッドＴ１が選択される。他の実施形態では、メモリコントローラ１０２は、ＰＣＡリンクを介してまたは他のサイドバンド信号を通じて、帯域内信号伝達でスレッドを選択することができる。
【００１０】
メモリモジュール１０４は、合計９つのメモリデバイス１２０を含む。当業者が通常使用する意味と一致して、メモリデバイス１２０は、電子的に情報を格納したり取り出したりすることができる集積回路デバイス（すなわち、チップ）である。各メモリデバイス１２０は、８ビット幅のインターフェースをサポートするｘ８メモリデバイスである。４つのメモリデバイス１２０−Ｄ０は、スレッドＴ０に対するデータを格納するメモリデバイスのハーフランクＨＲ０を形成する。４つのメモリデバイス１２０−Ｄ１は、スレッドＴ１に対するデータを格納するメモリデバイスのハーフランクＨＲ１を形成する。メモリデバイス１２０−Ｅは、スレッドＴ０とＴ１の両方に対するＥＣＣを格納し、効果的に、メモリデバイスの２つのハーフランクＨＲ０とＨＲ１との間で「共有」される。さらに、メモリデバイス１２０は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）または非揮発性メモリ（ＮＶＭ）などの任意のタイプのメモリを表し得る。
【００１１】
また、メモリモジュール１０４は、モジュールスレッディングと併せてＥＤＣの機能性を可能にするメモリバッファ１０６も含む。いくつかの実施形態では、メモリバッファ１０６は、メモリモジュール１０４に取り付けられた単一の集積回路デバイスである。メモリバッファ１０６は、メモリコントローラ１０２とメモリデバイス１２０との間の通信を取り扱う。具体的には、メモリバッファ１０６は、二次データリンクＳＤＱ０およびＳＤＱ１を通じて、メモリデバイスのハーフランクＨＲ０およびＨＲ１でデータを転送し、コマンド／アドレス用二次リンクＳＣＡを通じて、ハーフランクＨＲ０およびＨＲ１を制御する。いくつかの実施形態では、ＳＣＡリンクは２つのリンクに分割することができ、それぞれがメモリデバイス１２０−Ｄの半分を専用して使用する。例えば、ハーフランクＨＲ０を専用して使用するあるコマンドおよびアドレス用リンクが存在し、ハーフランクＨＲ１を専用して使用する異なるコマンドおよびアドレス用リンクが存在し得る。
【００１２】
メモリバッファ１０６は、二次ＥＣＣリンクＳＥＣＣを通じて共有のメモリデバイス１２０−ＥでＥＣＣを転送し、ＥＣＣコマンド／アドレス用リンクＥＣＡを通じて共有のメモリデバイス１２０−Ｅを制御する。他の実施形態では、共有のメモリデバイス１２０−Ｅは、ＳＣＡリンクにおいて信号の大部分（例えば、ａｄｄｒ［１３：１］）と結合する一方で、ＥＣＡリンクから単一のアドレス信号（例えば、ａｄｄｒ［０］）のみを受信することができる。これにより、共有のメモリデバイス１２０−Ｅは、ＳＣＡリンクでコマンド／アドレス信号の大部分を共有するが、ＳＣＡリンクにおいて対応するアドレスビットとは異なり得るそれ自体のユニークなアドレスビットを受信することができる。別の実施形態では、共有のメモリデバイス１２０−Ｅは、ＳＣＡリンクを共有し、ＳＣＡリンクからのコマンドを読み出すための専用チップ選択信号を有することができる。
【００１３】
アドレス回路１１０もまた、アドレス回路１１０によって生成される二次選択信号（図示せず）を通じて、それぞれのメモリデバイス１２０と結合される。各メモリデバイス１２０は、その選択信号がアサートされれば着信コマンドを処理し、その選択信号がアサート解除されれば着信コマンドを無視する。ハーフランクＨＲ０のデバイスにある選択信号が提供され得、ハーフランクＨＲ１のデバイスに別の選択信号が提供され得、共有のメモリデバイス１２０−Ｅに異なる選択信号が提供され得る。一実施形態では、アドレス回路１１０は、一次選択信号Ｓ０＃およびＳ１＃の論理レベルから選択信号を導出することができる。
【００１４】
また、メモリバッファ１０６は、さまざまな通信リンク（例えば、ＰＤＱ０、ＰＤＱ１、ＰＥＣＣ０、ＰＥＣＣ１、ＳＤＱ０、ＳＤＱ１、ＳＥＣＣ、ＰＣＡ、ＳＣＡ、ＥＣＡなど）を介して、情報を受信および送信するインターフェース回路（例えば、Ｉ／Ｆ  １３０）も含む。例えば、メモリバッファ１０６は、ＳＤＱ０リンクを介してハーフランクＨＲ０と通信するためのインターフェース、ＳＤＱ１リンクを介してハーフランクＨＲ１と通信するためのインターフェースおよびＳＥＣＣリンクを介してデバイス１２０−Ｅと通信するためのインターフェースを有する。本明細書に記載されるバッファ１０６からの任意の着信通信またはバッファ１０６への任意の発信通信は、そのようなインターフェース（例えば、Ｉ／Ｆ  １３０）を介して実行されることが理解される。
【００１５】
メモリトランザクション中は、メモリコントローラ１０２は、列アドレスへのアクセスを要求するバッファ１０６にＰＣＡリンクを介して列コマンド（例えば、読み出しまたは書き込みコマンド）を発行する。本明細書で使用されるように、列動作は、列コマンドおよびその列コマンドに関連する情報の転送を指す。また、メモリコントローラ１０２は、２つの選択信号Ｓ０＃またはＳ１＃の１つをアサートして列アクセスのためのアクティブスレッド（例えば、Ｔ０またはＴ１）を示す。スレッドのデータ部分は３２ビット幅であるため、バースト長を８ビット（ＢＬ８）と仮定すると、全体で６４バイトの転送を維持するには、スレッドへの単一のトランザクションは２回の連続した列動作からなる（すなわち、それぞれの列コマンドは、３２ビット幅で８ビット長のデータのバーストに関連する）。同様に、スレッドのＥＣＣ部分は４ビット幅であるため、２回の連続した列動作が、ＢＬ８バーストに対し全体で８バイトのデータ転送を維持する。
【００１６】
書き込みトランザクション中は、メモリバッファ１０６は、２回の連続した３２ビット幅のＢＬ８バーストとしてＰＤＱ０またはＰＤＱ１の１つを介してデータを受信し、２回の連続した３２ビット幅のＢＬ８バーストでメモリデバイスのハーフランクＨＲ１またはＨＲ２の１つにデータを書き込む。例えば、スレッドＴ０に対するデータは、ＰＤＱ０を介して受信され、ハーフランクＨＲ０に書き込まれる。しかし、ＥＣＣが共有のメモリデバイス１２０−Ｅに書き込まれる前に、パッキング回路１０８は、２回の連続した４ビット幅のＢＬ８バーストの１：２パッキングを実行し、それらを単一の８ビット幅のＢＬ８バーストに変換する。例えば、ＥＣＣは、２回の連続した４ビット幅のＢＬ８バーストとしてＰＥＣＣ０リンクを介して受信し、次いで、単一の８ビット幅のＢＬ８バーストで共有のメモリデバイス１２０−Ｅに書き込むことができる。したがって、メモリバッファ１０６とメモリデバイス１２０−Ｄとの間のデータバーストの各対に対し、メモリバッファ１０６と共有のメモリデバイス１２０−Ｅとの間に１回のＥＣＣバーストが存在する。
【００１７】
読み出しトランザクションは、書き込みトランザクションと同様であるが、読み出しトランザクション中は、パッキング回路１０８は、共有のメモリデバイス１２０−Ｅから読み出されたＥＣＣの２：１アンパッキングを実行し、ＳＥＣＣリンクを介して受信された単一の８ビット幅のバーストを２回の連続した４ビット幅の読み出しバーストに変換する。４ビット幅のバーストは、選択信号Ｓ０＃およびＳ１＃の論理レベルによって示されるようなアクティブスレッドに応じて、ＰＥＣＣ０またはＰＥＣＣ１リンクのいずれかを介してメモリコントローラ１０２に送信される。したがって、一般的に言えば、パッキング回路は、あるビット幅のＥＣＣを、より大きなまたはより小さなビット幅のＥＣＣに転換する責任を有する。
【００１８】
アドレス回路１１０は、バッファ１０６とメモリデバイス１２０との間の情報（すなわち、データおよびＥＣＣ）の転送を制御する。具体的には、アドレス回路１１０は、各メモリトランザクションに対して、ＰＣＡリンクを介して２つの連続した列アドレス（「一次アドレス」）を受信し、ＳＣＡリンクを介して列アドレスを再度送信する。ＳＣＡリンクを介して送信されたデータにアクセスするためのこれらの列アドレス（「データアドレス」）は、メモリデバイスのハーフランクの１つにおけるデータの位置を示す。共有のメモリデバイス１２０−ＥとのＥＣＣアクセスには唯一単一の列アドレスが必要とされるため、アドレス回路１１０は、２つの一次アドレスから単一の列アドレスを導出することによって、ＥＣＣアクセスのための列アドレスを決定する。ＥＣＣアクセスのための列アドレス（「エラーアドレス」）は、メモリデバイスの選択されたハーフランクまたは選択されたスレッドから読み出されたかまたは同ハーフランクまたはスレッドに書き込まれたデータに関連する共有のメモリデバイス１２０−ＥにおけるＥＣＣの位置を示す。
【００１９】
アドレス回路１１０は、ハーフランクＨＲ０のデバイスでデータ転送が管理されるかまたはハーフランクＨＲ１のデバイスでデータ転送が管理されるかに応じて、異なる方法でエラーアドレスを導出する。一実施形態では、アドレス回路１１０は、トランザクションがスレッドＴ０に対するものかまたはスレッドＴ１に対するものかの指示（トランザクションがＨＲ０に対するものかまたはＨＲ１に対するものかも示す）として、２つの選択入力Ｓ０＃およびＳ１＃を使用することができ、この指示を使用して着信一次アドレスの１つまたは複数のビットを変更してエラーアドレスを生成することができる。例えば、トランザクションがスレッドＴ０への書き込みであれば、エラーアドレスの生成において一次アドレスは全く変更されない可能性がある（すなわち、ビット値は保持される）。トランザクションがスレッドＴ１への書き込みであれば、一次アドレスのビットの１つを反転させてエラーアドレスを生成することができる。データ転送のためにアクセスされているデバイスのハーフランクに基づいて、ＥＣＣアクセスのためのアドレスを決定することによって、２つのスレッド間のアドレス競合は回避され、単一のＥＣＣメモリデバイス１２０−Ｅを２つのスレッド間で共有することができる。
【００２０】
図２Ａおよび２Ｂは、一実施形態による、図１の実施形態でのアドレス回路１１０の動作を示す表である。具体的には、図２Ａは、書き込みトランザクション中のアドレス回路１１０の動作を示し、図２Ｂは、読み出しトランザクション中のアドレス回路１１０の動作を示す。両図とも、図１を参照して説明される。
【００２１】
ここで図２Ａを参照すると、書き込みトランザクション中のアドレス回路１１０の動作を示す表２００が示される。表２００の最初の２つの行は、スレッドＴ０に対する連続した列書き込み動作を示す。Ｓ０＃（アクティブロー信号）をアサートし、Ｓ１＃をアサート解除することで、列動作がスレッドＴ０およびハーフランクＨＲ０に関連することを示す。第１の列動作は一次列アドレス「…ｘｙｚ０」へのものであり、第２の列動作は一次列アドレス「…ｘｙｚ１」へのものである。両方の一次列アドレスは、ＰＣＡリンクを介して受信され、いかなる変更も行わずにＳＣＡリンクを介してハーフランクＨＲ０にデータアドレスとして提供される。第１の列動作中は、共有のＥＣＣデバイス１２０−Ｅへの書き込み動作は存在しないが、その理由は、この期間中、パッキング回路１０８がパッキングプロセスを開始するためである。第２の列動作中は、アドレス回路１１０は、第２の列アドレス「…ｘｙｚ１」を、いかなる変更も行わずにＥＣＡリンクを介してエラーアドレスとして提供し、８ビット幅のバーストを共有のＥＣＣデバイス１２０−Ｅへ実行する。
【００２２】
表２００の最後の２つの行は、スレッドＴ１に対する連続した列書き込み動作を示す。Ｓ１＃をアサートし、Ｓ０＃をアサート解除することで、列動作がスレッドＴ１およびハーフランクＨ１に対するものであることを示す。第１の列動作は一次列アドレス「…ｘｙｚ０」へのものであり、第２の列動作は一次列アドレス「…ｘｙｚ１」へのものである。両方の列アドレスは、ＰＣＡリンクを介して受信され、いかなる変更も行わずにＳＣＡリンクを介してハーフランクＨＲ１にデータアドレスとして提供される。前述と同様に、第１の列動作中は、共有のＥＣＣデバイス１２０−Ｅへの書き込み動作は存在しないが、その理由は、この期間中、パッキング回路１０８がパッキングプロセスを開始するためである。しかし、第２の列動作中は、アドレス回路１１０は、一次列アドレスの最下位ビット（ＬＳＢ）を反転させ、この変更した列アドレスを、ＥＣＡリンクを介してエラーアドレスとして提供する。したがって、共有のＥＣＣデバイス１２０−ＥへＥＣＣを書き込むため、列アドレス「…ｘｙｚ１」は列アドレス「…ｘｙｚ０」に変換される。
【００２３】
ここで図２Ｂを参照すると、読み出しトランザクション中のアドレス回路１１０の動作を示す表２０５が示される。図２Ｂは図２Ａと同様であるが、読み出しトランザクション中は、パッキング回路１０８が第１の列動作中にアンパッキングプロセスを開始できるように、エラーアドレスは、第１の列動作で共有のＥＣＣデバイス１２０−Ｅに提供される。さらに、アドレス回路１１０は、一次列アドレスのＬＳＢを反転させ、スレッドＴ０に対するＥＣＣにアクセスする際にはエラーアドレスを生成し、スレッドＴ１に対するＥＣＣにアクセスする際には一次列アドレスを直接使用する。
【００２４】
表２０５の最初の２つの行は、スレッドＴ０に対する連続した列読み出し動作を示す。Ｓ０＃をアサートすることで、列動作がスレッドＴ０およびハーフランクＨＲ０に対するものであることを示す。第１の列動作は一次列アドレス「…ｘｙｚ０」へのものであり、第２の列動作は列アドレス「…ｘｙｚ１」へのものである。両方の一次列アドレスは、ＰＣＡリンク上で受信され、いかなる変更も行わずにＳＣＡリンクを介してハーフランクＨＲ０にデータアドレスとして提供される。第１の列動作中は、アドレス回路１１０は、一次列アドレスのＬＳＢを反転させ、この変更した列アドレスを、ＥＣＡリンクを介してエラーアドレスとして提供する。したがって、図２Ａの表においてスレッドＴ０に対する第２の列動作中に共有のＥＣＣデバイス１２０−ＥにおいてＥＣＣが書き込まれた場所と一致するように、共有のＥＣＣデバイス１２０−ＥからＥＣＣを読み出すため、列アドレス「…ｘｙｚ０」は列アドレス「…ｘｙｚ１」に変換される。第２の列動作中は、共有のＥＣＣデバイス１２０−Ｅに提供されるエラーアドレスは存在しないが、その理由は、第１の列動作中に既にＥＣＣが転送されているためである。
【００２５】
表２０５の２番目の２つの行は、スレッドＴ１への連続した列読み出し動作を示す。Ｓ１＃をアサートすることで、列動作がスレッドＴ１およびハーフランクＨＲ１に対するものであることを示す。第１の列動作は一次列アドレス「…ｘｙｚ０」へのものであり、第２の列動作は一次列アドレス「…ｘｙｚ１」へのものである。両方の列アドレスは、ＰＣＡリンクを介して受信され、いかなる変更も行わずにＳＣＡリンクを介してハーフランクＨＲ１にデータアドレスとして提供される。第１の列動作中は、図２Ａの表においてスレッドＴ１に対する第２の列動作中に共有のＥＣＣデバイス１２０−ＥにおいてＥＣＣが書き込まれた場所と一致するように、共有のＥＣＣデバイス１２０−ＥからＥＣＣを読み出すため、アドレス回路１１０は、一次列アドレスを、いかなる変更も行わずにＥＣＡリンクを介してエラーアドレスとして再度送信する。第２の列動作中は、共有のＥＣＣデバイス１２０−Ｅに提供されるアドレスは存在しないが、その理由は、第１の列動作中に既にＥＣＣが転送されているためである。
【００２６】
他の実施形態では、アドレス回路１１０は、ＥＣＣアクセスのためのエラーアドレスを生成する際、一次アドレスのＬＳＢ以外の列ビットを反転することができる。例えば、アドレス回路１１０は、最上位ビット（ＭＳＢ）および／またはＬＳＢとＭＳＢとの間の他の任意のビットを反転するよう構成することができる。
【００２７】
図３Ａおよび３Ｂは、一実施形態による、図１の実施形態のメモリシステム１００の動作を示すタイミング図である。具体的には、図３Ａは、書き込み動作中のメモリシステム１００に対するタイミング図であり、図３Ｂは、読み出し動作中のメモリシステム１００に対するタイミング図である。両図とも、図１、図２Ａおよび図２Ｂを参照して説明される。
【００２８】
ここで図３Ａを参照すると、スレッドＴ０に対する書き込み動作中のメモリシステム１００に対するタイミング図が示される。タイミング図は、図２Ａからの表２００の最初の２つの行に対応する。Ｃｌｋは、ＰＣＡリンクの一部であり得るタイミング信号であるが、タイミング図では、基準ポイントとして使用するために別々に表す。
【００２９】
メモリコントローラ１０２は、２回の連続した列動作の一部としてＰＣＡリンクを介して、２つの一次アドレスＰＡ０およびＰＡ１を提供する。メモリバッファ１０６は、２つの一次アドレスＰＡ０およびＰＡ１を受信し、少し遅れていかなる変更も行わずにＳＣＡリンクを介して、２つのデータアドレスＤＡ０およびＤＡ１として一次アドレスを再度送信する。これはスレッドＴ０に対する書き込み動作であるため、メモリバッファ１０６は、ＥＣＡリンクを介して送信されるエラーアドレスＥＡとして第２の一次アドレスＰＡ１を使用する。エラーアドレスＥＡは、第２のデータアドレスＤＡ１と実質的に同時にアクセスされる。これがスレッドＴ１に対する書き込みトランザクションであれば、メモリバッファ１０６は、第２の一次アドレスＰＡ１のビットを反転させ、エラーアドレスＥＡとしてＥＣＡリンクを介して変更したアドレスを提供することに留意されたい。
【００３０】
メモリコントローラ１０２は、ＰＤＱ０リンクを介して、データＤＡＴＡ０およびＤＡＴＡ１の２回のバーストを提供する。各データのバーストは、３２ビット幅であり、８ビットのバースト長を有し、システムはダブルデータレート（ＤＤＲ）送信を使用すると仮定する。ＤＡＴＡ０は、ＰＡ０への第１の列動作に対するデータであり、ＤＡＴＡ１は、ＰＡ１への第２の列動作に対するデータである。メモリバッファ１０６は、ＰＤＱ０リンクを介してデータを受信し、少し遅れてＳＤＱ０リンクを介してデータを再度送信する。ＤＡＴＡ０は、データアドレスＤＡ０でハーフランクＨＲ０に格納される。ＤＡＴＡ１は、データアドレスＤＡ１でハーフランクＨＲ０に格納される。
【００３１】
さらに、メモリコントローラ１０２は、ＰＥＣＣ０リンクを介して、ＥＣＣ、すなわち、ＥＣＣ０およびＥＣＣ１の２回のバーストを提供する。各ＥＣＣのバーストは、４ビット幅であり８ビット長である。ＥＣＣ０を使用してＤＡＴＡ０のエラーをチェックすることができ、ＥＣＣ１を使用してＤＡＴＡ１のエラーをチェックすることができる。パッキング回路１０８は、単一の列動作中に格納できるように、ＥＣＣ０およびＥＣＣ１をともにパックする。次いで、バッファ１０６は、単一の８ビット幅および８ビット長のバーストでＳＥＣＣリンクを介してＥＣＣ０およびＥＣＣ１を送信する。ＥＣＣ０およびＥＣＣ１は両方とも、エラーアドレスＥＡで共有のＥＣＣデバイス１２０−Ｅに格納される。
【００３２】
ここで図３Ｂを参照すると、スレッドＴ０に対する読み出しトランザクション中のメモリシステム１００に対するタイミング図が示される。タイミング図は、図２Ｂからの表２０５の最初の２つの行に対応する。図３Ａと同様に、メモリコントローラ１０２は、２回の連続した列動作の一部としてＰＣＡリンクを介して、２つの一次アドレスＰＡ０およびＰＡ１を提供する。メモリバッファ１０６は、ＰＣＡリンクを介して２つの一次アドレスＰＡ０およびＰＡ１を受信し、少し遅れていかなる変更も行わずにＳＣＡリンクを介して、２つのデータアドレスＤＡ０およびＤＡ１として一次アドレスを再度送信する。しかし、これはスレッドＴ０に対する読み出し動作であるため、メモリバッファ１０６は、第１の一次アドレスＰＡ０のビットを反転させ、エラーアドレスＥＡとしてＥＣＡリンクを介して変更したアドレスを送信する。エラーアドレスは、第１のデータアドレスと実質的に同時にアクセスされる。これがスレッドＴ１に対する読み出しトランザクションであれば、エラーアドレスＥＡは、第１の一次アドレスＰＡ０と同じビット値を有することに留意されたい。
【００３３】
バッファ１０６は、データアドレスＤＡ０およびＤＡ１に応答してＳＤＱ０リンクを介してハーフランクＨＲ０のデバイスから、データＤＡＴＡ０およびＤＡＴＡ１の２回のバーストを受信する。各データのバーストは、３２ビット幅であり８ビット長である。ＤＡＴＡ０は、列アドレスＤＡ０から読み出され、ＤＡＴＡ１は、列アドレスＤＡ１から読み出される。次いで、メモリバッファ１０６は、少し遅れてＰＤＱ０リンクを介してメモリコントローラ１０２にデータＤＡＴＡ０およびＤＡＴＡ１を再度送信する。
【００３４】
さらに、バッファ１０６は、ＳＥＣＣリンクを介して共有のメモリデバイス１２０−Ｅから、ＥＣＣ０およびＥＣＣ１を含むＥＣＣの単一の８ビット幅で８ビット長のバーストを受信する。ＥＣＣ０とＥＣＣ１は両方ともエラーアドレスＥＡから読み出される。パッキング回路１０８は、２回の別々のバーストでメモリコントローラ１０２に転送することができるように、ＥＣＣをアンパックする。次いで、バッファ１０６は、ＤＡＴＡ０およびＤＡＴＡ１がＰＤＱ０上で読み出される際と実質的に同じタイミングで、４ビット幅で８ビット長の２回のバーストでＰＥＣＣ０リンクを介してＥＣＣ０およびＥＣＣ１を送信する。
【００３５】
一実施形態では、スレッドＴ１に対するメモリトランザクションは、図３Ａおよび図３Ｂに示されるメモリトランザクションと同様に実行される。しかし、データは、データリンクＰＤＱ０およびＳＤＱ０の代わりに、データリンクＰＤＱ１およびＳＤＱ１を介して転送される。さらに、ＥＣＣは、リンクＰＥＣＣ０の代わりに、一次ＥＣＣリンクＰＥＣＣ１を介して転送される。
【００３６】
図４は、別の実施形態による、ＥＤＣ範囲に対するメモリシステム４００を示す。図４は図１と同様であるが、図４のメモリコントローラ１０２は４つのスレッド（Ｔ０、Ｔ１、Ｔ２、Ｔ３）をサポートし、メモリモジュール１０４は２倍のメモリデバイス１２０、すなわち、合計１６個のデータ用のメモリデバイス１２０−Ｄと、ＥＣＣ用の２つのメモリデバイス１２０−Ｅとを含む。スレッドＴ０に対するデータはＰＤＱ０リンクを介して転送され、スレッドＴ０に対するＥＣＣはＰＥＣＣ０リンクを介して転送される。スレッドＴ１に対するデータはＰＤＱ１リンクを介して転送され、スレッドＴ１に対するＥＣＣはＰＥＣＣ１リンクを介して転送される。スレッドＴ２に対するデータはＰＤＱ２リンクを介して転送され、スレッドＴ２に対するＥＣＣはＰＥＣＣ２リンクを介して転送される。スレッドＴ３に対するデータはＰＤＱ３リンクを介して転送され、スレッドＴ３に対するＥＣＣはＰＥＣＣ３リンクを介して転送される。それぞれの一次データリンク（ＰＤＱ０〜ＰＤＱ３）は１６ビット幅である。それぞれの一次ＥＣＣリンク（ＰＥＣＣ０〜ＰＥＣＣ３）は２ビット幅である。
【００３７】
メモリコントローラ１０２は、ＰＣＡリンク上でコマンドおよびアドレス情報を送信し、４つのアクティブローの選択信号Ｓ００＃、Ｓ０１＃、Ｓ１０＃およびＳ１１＃を使用してデータ転送動作用のスレッドの１つを選択することによって、データ転送動作を開始する。例えば、Ｓ００＃がアサートされればスレッドＴ０が選択され、Ｓ０１＃がアサートされればスレッドＴ１が選択され、Ｓ１０＃がアサートされればスレッドＴ２が選択され、Ｓ１１＃がアサートされればスレッドＴ３が選択される。いくつかの実施形態では、異なる数のチップ選択信号が存在し得る。例えば、２つの物理的なチップ選択信号のみ存在し得る。４つの論理チップ選択を導出するため、２つの物理的なチップ選択信号を行アドレスビットまたはバンクアドレスビットと組み合わせることができる。このようにチップ選択を導出することは、ランク乗算（rank multiplication）と呼ばれる場合がある。
【００３８】
各メモリデバイス１２０は、４ビット幅のインターフェースをサポートするｘ４メモリデバイスである。４つのメモリデバイス１２０−Ｄ０は、スレッドＴ０に対するデータを格納するメモリデバイスのクオータランクＱＲ０を形成する。４つのメモリデバイス１２０−Ｄ１は、スレッドＴ１に対するデータを格納するメモリデバイスの別のクオータランクＱＲ１を形成する。４つのメモリデバイス１２０−Ｄ２は、スレッドＴ２に対するデータを格納するメモリデバイスのクオータランクＱＲ２を形成する。４つのメモリデバイス１２０−Ｄ３は、スレッドＴ３に対するデータを格納するメモリデバイスの別のクオータランクＱＲ３を形成する。クオータランクＱＲ０およびＱＲ１は、メモリデバイスのハーフランクＨＲ０を形成する。クオータランクＱＲ２およびＱＲ３は、メモリデバイスの別のハーフランクＨＲ１を形成する。メモリデバイス１２０−Ｅ０は、メモリデバイスの２つのクオータランクＱＲ０とＱＲ１との間で共有され、スレッドＴ０とＴ１の両方に対するＥＣＣを格納する。メモリデバイス１２０−Ｅ１は、メモリデバイスの２つのクオータランクＱＲ２とＱＲ３との間で共有され、スレッドＴ２とＴ３の両方に対するＥＣＣを格納する。
【００３９】
この実施形態では、スレッドのデータ部分は１６ビット幅である。したがって、スレッドに対する単一のトランザクションは、各列動作に対してＢＬ８と再度仮定すると、全体で６４バイトの転送を維持するには、スレッドへの単一のトランザクションは、４回の連続した列動作からなる。同様に、各列動作に対してＢＬ８と仮定すると、スレッドのＥＣＣ部分は２ビット幅であるため、４回の連続した列動作が全体で８バイトの転送を維持する。
【００４０】
書き込みトランザクション中は、メモリバッファ１０６は、４回の連続した１６ビット幅のＢＬ８バーストとしてスレッドの１つに対するデータを受信し、４回の連続した１６ビット幅のＢＬ８バーストでメモリデバイスのクオータランクの１つにデータを書き込む。例えば、スレッドＴ０に対するデータは、ＰＤＱ０を介して受信され、ＳＤＱ０を介してクオータランクＱＲ０に書き込まれる。しかし、ＥＣＣが共有のメモリデバイス１２０−Ｅに書き込まれ得る前に、パッキング回路１０８は、連続した２ビット幅のＢＬ８バーストの各対の１：２パッキングを実行し、その対を単一の４ビット幅のＢＬ８バーストに変換する。例えば、パッキング回路１０８−１は、４回の連続した２ビット幅のＢＬ８バーストとしてＰＥＣＣ０リンクを介してＥＣＣを受信し、次いで、２回の４ビット幅のＢＬ８バーストとして共有のメモリデバイス１２０−Ｅ０にＥＣＣを書き込むことができる。したがって、４回のデータ列動作ごとに、２回のＥＣＣ列動作が存在する。読み出しトランザクションは書き込みトランザクションと同様であるが、読み出しトランザクション中は、パッキング回路１０８は、共有のメモリデバイス１２０−ＥからのＥＣＣの２：１アンパッキングを実行する。
【００４１】
アドレス回路１１０は、図１と併せて説明されるアドレス回路と同様であるが、図４のアドレス回路１１０は、より多くの数のメモリデバイス１２０との通信を取り扱う。具体的には、アドレス回路１１０は、各メモリトランザクションに対して、ＰＣＡリンクを介して４つの連続した一次アドレスを受信し、ＳＣＡリンクを介してデータアドレスとしてアドレスを再度送信する。アドレス回路１１０は、一次アドレスの各対からＥＣＣアクセスのための単一のエラーアドレスを導出する。したがって、４つの一次アドレスから２つのエラーアドレスが導出される。さらに、スレッド間での競合を回避するため、アドレス回路１１０は、データに対しどのクオータランクがアクセスされているかに応じて、異なる方法でエラーアドレスを導出する。具体的には、アドレス回路１１０は、選択入力Ｓ００＃、Ｓ０１＃、Ｓ１０＃およびＳ１１＃を使用して、ＥＣＣアクセスのための列アドレスビットの１つもしくは複数、または、４つ未満のチップ選択信号が存在する場合は、行／バンクアドレスビットなどのアクセスされているクオータランクの他の任意の指示を変更することができる。
【００４２】
図５Ａおよび５Ｂは、一実施形態による、図４の実施形態のアドレス回路１１０の動作を示す表である。具体的には、図５Ａは、スレッドＴ０およびＴ１に対する書き込みトランザクション中のアドレス回路１１０の動作を示し、図５Ｂは、スレッドＴ０およびＴ１に対する読み出しトランザクション中のアドレス回路１１０の動作を示す。スレッドＴ２およびＴ３に対してメモリトランザクションは示されていないが、スレッドＴ０およびＴ１に対するメモリトランザクションと同様である。図５Ａおよび５Ｂの両図とも、図４を参照して説明される。
【００４３】
ここで図５Ａを参照すると、スレッドＴ０およびスレッドＴ１に対する書き込みトランザクション中の図４の実施形態のアドレス回路１１０の動作を示す表５００が示される。表５００の最初の４つの行は、スレッドＴ０に対する連続した列書き込み動作を示す。Ｓ００＃（アクティブロー信号）をアサートし、Ｓ０１＃をアサート解除することで、列動作がスレッドＴ０およびクオータランクＱＲ０に対するものであることを示す。第１の列動作は一次列アドレス「…ｘｙ００」へのものであり、第２の列動作は一次列アドレス「…ｘｙ０１」へのものであり、第３の列動作は一次列アドレス「…ｘｙ１０」へのものであり、第４の列動作は一次列アドレス「…ｘｙ１１」へのものである。すべての一次列アドレスは、ＰＣＡリンクを介して受信され、いかなる変更も行わずにＳＣＡリンクを介してクオータランクＱＲ０にデータアドレスとして提供される。
【００４４】
第１の列動作中は、共有のＥＣＣデバイス１２０−Ｅ０への書き込み動作は存在しないが、その理由は、この期間中、パッキング回路１０８−１がパッキングプロセスを開始するためである。第２の列動作中は、アドレス回路１１０は、第２の一次アドレス「…ｘｙ０１」を、いかなる変更も行わずに共有のＥＣＣデバイス１２０−Ｅ０にＥＣＡリンクを介してエラーアドレスとして提供し、８ビット幅のバーストを共有のＥＣＣデバイス１２０−Ｅ０へ実行する。第３の列動作中は、共有のＥＣＣデバイス１２０−Ｅ０への書き込み動作は存在しないが、その理由は、この期間中、パッキング回路１０８−１がパッキングプロセスを再開するためである。第４の列動作中は、アドレス回路１１０は、第４の一次アドレス「…ｘｙ１１」を、いかなる変更も行わずに共有のＥＣＣデバイス１２０−Ｅ０にＥＣＡリンクを介してエラーアドレスとして提供し、別の８ビット幅のバーストを共有のＥＣＣデバイス１２０−Ｅ０へ実行する。
【００４５】
表５００の最後の４つの行は、スレッドＴ１に対する連続した列書き込み動作を示す。Ｓ０１＃をアサートし、Ｓ００＃をアサート解除することで、列動作がスレッドＴ１およびクオータランクＱＲ１に対するものであることを示す。第１の列動作は一次列アドレス「…ｘｙ００」へのものであり、第２の列動作は一次列アドレス「…ｘｙ０１」へのものであり、第３の列動作は一次列アドレス「…ｘｙ１０」へのものであり、第４の列動作は一次列アドレス「…ｘｙ１１」へのものである。すべての４つの一次アドレスは、ＰＣＡリンクを介して受信され、いかなる変更も行わずにＳＣＡリンクを介してクオータランクＱＲ１にデータアドレスとして提供される。
【００４６】
前述と同様に、第１の列動作中は、共有のＥＣＣデバイス１２０−Ｅ０への書き込み動作は存在しないが、その理由は、この期間中、パッキング回路１０８−１がパッキングプロセスを開始するためである。しかし、第２の列動作中は、アドレス回路１１０は、一次アドレスのＬＳＢを反転させ、この変更した列アドレスを、共有のＥＣＣデバイス１２０−Ｅ０にＥＣＡリンクを介してエラーアドレスとして提供する。したがって、共有のＥＣＣデバイス１２０−Ｅ０へＥＣＣを書き込むため、列アドレス「…ｘｙ０１」は列アドレス「…ｘｙ００」に変換される。第３の列動作中は、共有のＥＣＣデバイス１２０−Ｅ０への書き込み動作は存在しないが、その理由は、この期間中、パッキング回路１０８−１がパッキングプロセスを再開するためである。第４の列動作中は、アドレス回路１１０は、一次アドレスのＬＳＢを反転させ、この変更した列アドレスを、共有のＥＣＣデバイス１２０−Ｅ０にＥＣＡリンクを介してエラーアドレスとして提供する。したがって、共有のＥＣＣデバイス１２０−Ｅ０へＥＣＣを書き込むため、列アドレス「…ｘｙ１１」は列アドレス「…ｘｙ１０」に変換される。
【００４７】
ここで図５Ｂを参照すると、読み出し中のアドレス回路１１０の動作を示す表５０５が示される。図５Ｂは図５Ａと同様であるが、パッキング回路１０８−１が第１および第３の列動作中にアンパッキングプロセスを開始できるように、エラーアドレスは、第１および第３の列動作で共有のＥＣＣデバイス１２０−Ｅ０に提供される。さらに、アドレス回路１１０は、スレッドＴ０に対するエラーアドレスを生成する際には一次列アドレスのＬＳＢを反転させ、スレッドＴ１に対するエラーアドレスを生成する際には反転させずに一次列アドレスに直接使用する。
【００４８】
ここで図６を参照すると、別の実施形態による、ＥＤＣ範囲に対するメモリシステム６００を示される。メモリシステム６００は、図４と併せて説明されるメモリシステムと同様である。しかし、図６のメモリシステム６００は、改良された信号インテグリティに対するダイナミックポイントツーポイント（ＤＰＰ）技術をサポートする実施形態である。ＤＰＰシステムでは、メモリコントローラ１０２は、狭いポイントツーポイントデータリンク上で各メモリモジュール１０４と通信することができるが、依然としてメモリモジュール１０４のすべてのメモリデバイス１２０にアクセスすることができる。例えば、信号リンク１６０は、ここでは、メモリコントローラ１０２とメモリモジュール１０４との間でデータを転送するための単一の１６ビット幅のデータリンクＰＤＱを含む。また、信号リンク１６０は、メモリコントローラ１０２とメモリモジュール１０４との間でＥＣＣを転送するための一次ＥＣＣリンクＰＥＣＣも含む。ＰＥＣＣリンクは２ビット幅である。ＤＰＰをサポートするシステム６００は、それら自体のポイントツーポイントデータリンクを通じてメモリコントローラ１０２と結合されるいくつかのメモリモジュール１０４を有し得るが、明確にするため、図６では１つのモジュール１０４のみが示される。
【００４９】
機能上、バッファ１０６の動作は、図４、５Ａおよび５Ｂと併せて説明されるものと同様である。バッファ１０６は、書き込み中に、ＰＥＣＣリンクを介して受信された２ビット幅のＥＣＣバーストの対を、共有のメモリデバイス１２０−Ｅへ送信するために４ビット幅のバーストにパックするパッキング回路１０８を依然として含む。読み出し中は、パッキング回路１０８は、共有のメモリデバイス１２０−Ｅから受信された４ビット幅のＥＣＣバーストをアンパックし、ＰＥＣＣリンクを介して２ビット幅のバーストの対として送信する。また、バッファ１０６は、ＰＣＡリンクを介して着信列アドレスを受信し、ＥＣＣアクセスのための列アドレスを決定するアドレス回路１１０も含む。具体的には、アドレス回路１１０は、データ転送に対しメモリデバイス１２０のどのクオータランクがアクセスされているか（選択信号Ｓ００＃〜Ｓ１１＃または他のいくつかの指示で示されるように）、および、データ転送が読み出し動作か書き込み動作かに基づいて、ＥＣＣアクセスのための列アドレスを導出する。
【００５０】
ＤＰＰ動作をサポートするため、ここでは、バッファ１０６は、ＰＤＱリンクとそれぞれの二次データリンク（ＳＤＱ０〜ＳＤＱ３）との間のデータのフローを管理するルーティング回路６８０を含む。ルーティング回路６８０を通じたデータのルーティングは、メモリデバイス１２０−Ｄのどのクオータランクがメモリトランザクションのために選択されるかを示す選択信号（Ｓ００＃〜Ｓ１１＃）の論理レベルによって構成される。また、バッファは、パッキング回路１０８と二次ＥＣＣリンク（ＳＥＣＣ０およびＳＥＣＣ１）との間のＥＣＣのフローを管理する別のルーティング回路６８２も含む。ルーティング回路６８２を通じたＥＣＣのルーティングは、選択信号（Ｓ００＃〜Ｓ１１＃）の論理レベルによって構成される。一実施形態では、ルーティング回路６８０および６８２は、双方向マルチプレクサとして実装される。
【００５１】
図７は、さらに別の実施形態による、ＥＤＣ範囲に対するメモリシステム７００を示す。図７のメモリシステム７００は、図１と併せて先に説明されるメモリシステム１００と同様である。しかし、メモリバッファ内にあるものとして先に記載される機能性は、メモリコントローラ１０２自体に位置する。その結果、メモリシステム７００は、個別のメモリバッファを必要とすることなく、モジュールスレッディングおよびＥＤＣの機能性を統合する。
【００５２】
メモリシステム７００は、信号リンク１６０を通じて通信するメモリコントローラ１０２とメモリモジュール１０４とを依然として含む。また、メモリコントローラは、２つのメモリスレッドＴ０およびＴ１をサポートする。しかし、信号リンク１６０は、ＥＣＣコマンドアドレスリンクＥＣＡおよび単一の８ビット幅のＥＣＣリンクＰＥＣＣを含む。データアドレスはＰＣＡリンクを介して通信され、エラーアドレスはＥＣＡリンクを介して通信される。また、信号リンク１６０は、３つの選択信号、すなわち、ハーフランクＨＲ０に対して１つ、ハーフランクＨＲ１に対して１つおよび共有のＥＣＣデバイス１２０−Ｅに対して１つ（図示せず）も含み得る。
【００５３】
メモリコントローラ１０２は、制御回路７８０、パッキング回路１０８およびアドレス生成回路７１０を含む。メモリコントローラ１０２は、さまざまな通信リンク（例えば、ＰＤＱ０、ＰＤＱ１、ＰＥＣＣ、ＰＣＡ、ＥＣＡなど）上で情報を受信および送信するインターフェース（例えば、Ｉ／Ｆ  ７３０）を含む。例えば、メモリコントローラ１０２は、ＰＤＱ０リンクを介してハーフランクＨＲ０と通信するためのインターフェース回路と、ＰＥＣＣリンクを介して共有のメモリデバイス１２０−Ｅと通信するためのインターフェース回路と、ＰＤＱ１リンクを介してハーフランクＨＲ１と通信するためのインターフェース回路とを有する。本明細書に記載されるコントローラ１０２によって受信されるまたは同コントローラ１０２から送信される任意の情報は、そのようなインターフェース（例えば、Ｉ／Ｆ  ７３０）を介して実行されることが理解される。
【００５４】
書き込み動作中は、制御回路７８０は、２つのスレッドＴ０およびＴ１の１つに対するデータおよびＥＣＣを生成する。所定のスレッドに対して、パッキング回路１０８は、ＥＣＣを８ビット幅のＢＬ８バーストにパックし、ＰＥＣＣリンクを介してメモリモジュール１０４にＥＣＣを送信する。読み出し動作中は、パッキング回路１０８は、ＰＥＣＣリンクを介して受信されたＥＣＣの８ビット幅のＢＬ８バーストをアンパックし、アンパックしたＥＣＣを制御回路７８０に提供する。次いで、制御回路７８０は、アンパックされたＥＣＣに対してあらゆる着信データをチェックし、いかなるメモリエラーも検出し訂正する。他の実施形態では、制御回路７８０自体がＥＣＣの８ビット幅のＢＬ８バーストを直接生成するため、パッキング回路１０８は不要である。
【００５５】
また、メモリコントローラ１０２は、図１、２Ａおよび２Ｂと併せて説明されるアドレス回路１１０への動作の際と同様なアドレス生成回路７１０も含む。しかし、アドレス生成回路７１０はメモリコントローラ１０２内に位置するため、列動作に対する列アドレスを直接生成することができる。一実施形態では、アドレス生成回路７１０は、メモリデバイスのハーフランクのいずれかでデータを転送するための２つのデータアドレスを生成し、ＰＣＡリンクを介してこれらのアドレスを送信する。また、アドレス生成回路７１０は、データアドレスの各対に対する単一のエラーアドレスも生成し、ＥＣＡリンクを介してこのエラーアドレスを送信する。したがって、各ＥＣＣ列動作に対して２回のデータ列動作が存在する。
【００５６】
２つのメモリスレッドＴ０とＴ１との間でメモリデバイス１２０−Ｅの共有を可能にするため、アドレス生成回路７１０によって生成されるエラーアドレスは、データがハーフランクＨＲ０で転送されているかまたはハーフランクＨＲ１で転送されているかに基づいて異なる。例えば、２回の連続した列動作中は、データアドレスは「…ｘｙｚ０」または「…ｘｙｚ１」であり得る。列動作がスレッドＴ０に対する書き込み動作であれば、アドレス生成回路７１０は、第２のデータアドレス「…ｘｙｚ１」を取り出し、スレッドＴ０に対するＥＣＣの転送のためのエラーアドレスとしてこの同じアドレスを使用することができる。しかし、列動作がスレッドＴ１に対する書き込み動作であれば、アドレス生成回路７１０は、第２のデータアドレス「…ｘｙｚ１」のＬＳＢを反転させ、スレッドＴ１に対するＥＣＣの転送のためのエラーアドレス「…ｘｙｚ０」を生成することができる。
【００５７】
開示された実施形態のいくつかは、こうして、モジュールスレッディングおよびＤＰＰなどの高度なメモリ特徴をＥＤＣ能力と統合することを可能にする。メモリデバイス群間でＥＣＣメモリデバイスを共有することによって、ＥＣＣメモリデバイスをメモリデバイスの各群に専用して使用することなく、ＥＤＣをこれらの特徴と併せて使用することができる。さらに、メモリデバイスを共有することによって引き起こされるアドレス競合は、データに対しメモリデバイスのどの群がアクセスされているかに基づいて、共有のメモリデバイスにアクセスするためのアドレスを決定することによって回避される。
【００５８】
本開示を読み進めると、当業者であれば、メモリデバイス群間でチェックビットメモリデバイスを共有するためのさらなる追加の代替の設計が理解されよう。したがって、本開示の特定の実施形態および適用例が解説され、説明されてきたが、本開示は本明細書で開示されるものと全く同一の構造および構成要素に限定されないことを理解されたい。本明細書の本開示の方法および装置の構成、動作および詳細において、添付の特許請求の範囲で定義されるような本開示の精神および範囲から逸脱することなく、当業者には明らかであろうさまざまな修正、変更および変形を行うことができる。
【図１】
0006370528.tif 000002
【図２Ａ】
0006370528.tif 000003
【図２Ｂ】
0006370528.tif 000004
【図３Ａ】
0006370528.tif 000005
【図３Ｂ】
0006370528.tif 000006
【図４】
0006370528.tif 000007
【図５Ａ】
0006370528.tif 000008
【図５Ｂ】
0006370528.tif 000009
【図６】
0006370528.tif 000010
【図７】
0006370528.tif 000011