メモリデバイス群間でのチェックビットメモリデバイスの共有
【課題】 メモリデバイス群間でのチェックビットメモリデバイスの共有を提供する。
【解決手段】 エラー検出および訂正(EDC)範囲をサポートするメモリシステム。メモリシステムは、データを格納する少なくとも2つのメモリデバイス群と、両方のメモリデバイス群のためにエラーチェック情報(例えば、エラー訂正コード)を格納する別のメモリデバイスとを備えたメモリモジュールを含む。また、メモリモジュールは、データが第1のメモリデバイス群によって転送されるかまたは第2のメモリデバイス群によって転送されるかに基づいて、エラーチェック情報にアクセスするためのアドレスを決定するメモリバッファも含む。あるいは、メモリコントローラは、メモリバッファの必要性を低減または排除するために、エラーチェック情報にアクセスするためのアドレスを決定することができる。
【解決手段】 エラー検出および訂正(EDC)範囲をサポートするメモリシステム。メモリシステムは、データを格納する少なくとも2つのメモリデバイス群と、両方のメモリデバイス群のためにエラーチェック情報(例えば、エラー訂正コード)を格納する別のメモリデバイスとを備えたメモリモジュールを含む。また、メモリモジュールは、データが第1のメモリデバイス群によって転送されるかまたは第2のメモリデバイス群によって転送されるかに基づいて、エラーチェック情報にアクセスするためのアドレスを決定するメモリバッファも含む。あるいは、メモリコントローラは、メモリバッファの必要性を低減または排除するために、エラーチェック情報にアクセスするためのアドレスを決定することができる。
【発明の詳細な説明】
【背景技術】
【0001】
本開示は、メモリシステムに関し、より具体的には、エラー検出および訂正(EDC)機能性を含むメモリシステムのコンポーネントに関する。
【0002】
本明細書の実施形態の教示は、添付の図面と併せて、以下の詳細な説明を考慮することによって容易に理解することができる。
【図面の簡単な説明】
【0003】
【図1】一実施形態による、EDC範囲に対するメモリシステムを示す。
【図2A】一実施形態による、図1の実施形態での書き込み動作中のアドレス回路の動作を示す表である。
【図2B】一実施形態による、図1の実施形態での読み出し動作中のアドレス回路の動作を示す表である。
【図3A】一実施形態による、図1の実施形態での書き込み動作中のメモリシステムの動作を示すタイミング図である。
【図3B】一実施形態による、図1の実施形態での読み出し動作中のメモリシステムの動作を示すタイミング図である。
【図4】別の実施形態による、EDC範囲に対するメモリシステムを示す。
【図5A】一実施形態による、書き込み動作中の図4の実施形態のアドレス回路の動作を示す表である。
【図5B】一実施形態による、読み出し動作中の図4の実施形態のアドレス回路の動作を示す表である。
【図6】さらに別の実施形態による、EDC範囲に対するメモリシステムを示す。
【図7】さらに別の実施形態による、EDC範囲に対するメモリシステムを示す。
【発明を実施するための形態】
【0004】
本開示の実施形態は、メモリアクセス中に起こり得るメモリエラーを検出および訂正するためのエラー検出および訂正(EDC)範囲をサポートするメモリシステムのコンポーネントに関する。一実施形態では、メモリモジュールは、データを格納する2つのメモリデバイス群と、両方のメモリデバイス群のためにエラーチェック情報(例えば、エラー訂正コード)を格納する別のメモリデバイスとを含む。また、メモリモジュールは、メモリモジュールとメモリコントローラとの間の通信を取り扱うメモリバッファも含む。メモリバッファは、あるメモリデバイス群のデータに、別のメモリデバイス群のデータとは無関係にアクセスすることができるように、メモリスレッディングまたはダイナミックポイントツーポイント(DPP)メモリ構成をサポートすることができる。エラーチェック情報のためのメモリデバイスを共有する一方で独立したデータアクセスをサポートするため、バッファは、データが第1のメモリデバイス群によって転送されるかまたは第2のメモリデバイス群によって転送されるかに基づいて、エラーチェック情報にアクセスするためのアドレスを決定する。いくつかの実施形態では、メモリバッファにあるものとして記載される機能性は、代わりにメモリコントローラに実装して、メモリバッファの必要性を低減または排除することができる。
【0005】
本開示全体を通じて「エラーチェック情報」という用語は、メモリシステムに格納されたデータ内で起こるエラーの検出および/もしくは訂正において使用されるかまたは同エラーの検出および/もしくは訂正に関連する任意の情報として幅広く定義されることに留意されたい。その上、本明細書全体を通じて「エラー訂正コード」(ECC)という用語は、エラー検出および訂正のためにメモリシステムで使用されるエラーチェック情報を指す。
【0006】
ここで、本開示のいくつかの実施形態を詳細に参照し、その例を添付の図面に示す。図面では、実行可能な同様のまたは類似した参照番号を使用することができ、それらの参照番号は同様のまたは類似した機能性を示すことができることに留意されたい。図面は、単なる例示として本開示の実施形態を描写する。当業者であれば、以下の説明から、本明細書に記載される本開示の原理または称賛される利益から逸脱することなく、本明細書で示される構造および方法の代替の実施形態を使用できることが容易に理解されよう。
【0007】
図1は、一実施形態による、EDC範囲に対するメモリシステム100を示す。メモリシステム100は、一次信号リンク160を介して相互接続されたメモリコントローラ102とメモリモジュール104を含む。一実施形態では、システム100は、マザーボード上に存在し得る。メモリコントローラ102は、個別の集積回路でも、中央処理装置(CPU)またはグラフィック処理装置(GPU)などのより大きな集積回路の一部でもあり得る。
【0008】
一次信号リンク160は、メモリコントローラ102からメモリモジュール104まで制御およびアドレス情報を搬送するコマンドおよびアドレス用一次リンクPCAを含む。また、信号リンク160は、メモリコントローラ102とメモリモジュール104との間でデータを転送するための2つの一次データリンクPDQ0およびPDQ1も含む。一実施形態では、一次データリンクPDQ0およびPDQ1はそれぞれ32ビット幅である。また、一次信号リンク160は、メモリコントローラ102とメモリモジュール104との間でECCを転送するための2つの一次ECCリンクPECC0およびPECC1も含む。一実施形態では、ECCリンクPECC0およびPECC1はそれぞれ4ビット幅である。
【0009】
メモリコントローラ102は、モジュールスレッディングをサポートし、モジュールスレッディングは、単一の比較的幅広いメモリチャネルを、共通のアドレスバスを通じて互いに無関係にアクセスすることができる2つのサブチャネルに分割する技法を指す。例えば、メモリスレッディングを有効にすると、メモリコントローラ102は、メモリトランザクション(例えば、読み出しおよび書き込みトランザクション)を2つのスレッドT0およびT1に分割する。スレッドT0に対するデータはPDQ0リンクを介して転送され、スレッドT0に対するECCはPECC0リンクを介して転送される。スレッドT1に対するデータはPDQ1リンクを介して転送され、スレッドT1に対するECCはPECC1リンクを介して転送される。メモリコントローラ102は、PCAリンクを介してコマンドおよびアドレス情報を送信し、2つのアクティブローの選択信号S0#およびS1#を使用してトランザクション用のスレッドの1つを選択することによって、メモリトランザクションを制御する。例えば、S0#がアサートされればスレッドT0が選択され、S1#がアサートされればスレッドT1が選択される。他の実施形態では、メモリコントローラ102は、PCAリンクを介してまたは他のサイドバンド信号を通じて、帯域内信号伝達でスレッドを選択することができる。
【0010】
メモリモジュール104は、合計9つのメモリデバイス120を含む。当業者が通常使用する意味と一致して、メモリデバイス120は、電子的に情報を格納したり取り出したりすることができる集積回路デバイス(すなわち、チップ)である。各メモリデバイス120は、8ビット幅のインターフェースをサポートするx8メモリデバイスである。4つのメモリデバイス120−D0は、スレッドT0に対するデータを格納するメモリデバイスのハーフランクHR0を形成する。4つのメモリデバイス120−D1は、スレッドT1に対するデータを格納するメモリデバイスのハーフランクHR1を形成する。メモリデバイス120−Eは、スレッドT0とT1の両方に対するECCを格納し、効果的に、メモリデバイスの2つのハーフランクHR0とHR1との間で「共有」される。さらに、メモリデバイス120は、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)または非揮発性メモリ(NVM)などの任意のタイプのメモリを表し得る。
【0011】
また、メモリモジュール104は、モジュールスレッディングと併せてEDCの機能性を可能にするメモリバッファ106も含む。いくつかの実施形態では、メモリバッファ106は、メモリモジュール104に取り付けられた単一の集積回路デバイスである。メモリバッファ106は、メモリコントローラ102とメモリデバイス120との間の通信を取り扱う。具体的には、メモリバッファ106は、二次データリンクSDQ0およびSDQ1を通じて、メモリデバイスのハーフランクHR0およびHR1でデータを転送し、コマンド/アドレス用二次リンクSCAを通じて、ハーフランクHR0およびHR1を制御する。いくつかの実施形態では、SCAリンクは2つのリンクに分割することができ、それぞれがメモリデバイス120−Dの半分を専用して使用する。例えば、ハーフランクHR0を専用して使用するあるコマンドおよびアドレス用リンクが存在し、ハーフランクHR1を専用して使用する異なるコマンドおよびアドレス用リンクが存在し得る。
【0012】
メモリバッファ106は、二次ECCリンクSECCを通じて共有のメモリデバイス120−EでECCを転送し、ECCコマンド/アドレス用リンクECAを通じて共有のメモリデバイス120−Eを制御する。他の実施形態では、共有のメモリデバイス120−Eは、SCAリンクにおいて信号の大部分(例えば、addr[13:1])と結合する一方で、ECAリンクから単一のアドレス信号(例えば、addr[0])のみを受信することができる。これにより、共有のメモリデバイス120−Eは、SCAリンクでコマンド/アドレス信号の大部分を共有するが、SCAリンクにおいて対応するアドレスビットとは異なり得るそれ自体のユニークなアドレスビットを受信することができる。別の実施形態では、共有のメモリデバイス120−Eは、SCAリンクを共有し、SCAリンクからのコマンドを読み出すための専用チップ選択信号を有することができる。
【0013】
アドレス回路110もまた、アドレス回路110によって生成される二次選択信号(図示せず)を通じて、それぞれのメモリデバイス120と結合される。各メモリデバイス120は、その選択信号がアサートされれば着信コマンドを処理し、その選択信号がアサート解除されれば着信コマンドを無視する。ハーフランクHR0のデバイスにある選択信号が提供され得、ハーフランクHR1のデバイスに別の選択信号が提供され得、共有のメモリデバイス120−Eに異なる選択信号が提供され得る。一実施形態では、アドレス回路110は、一次選択信号S0#およびS1#の論理レベルから選択信号を導出することができる。
【0014】
また、メモリバッファ106は、さまざまな通信リンク(例えば、PDQ0、PDQ1、PECC0、PECC1、SDQ0、SDQ1、SECC、PCA、SCA、ECAなど)を介して、情報を受信および送信するインターフェース回路(例えば、I/F 130)も含む。例えば、メモリバッファ106は、SDQ0リンクを介してハーフランクHR0と通信するためのインターフェース、SDQ1リンクを介してハーフランクHR1と通信するためのインターフェースおよびSECCリンクを介してデバイス120−Eと通信するためのインターフェースを有する。本明細書に記載されるバッファ106からの任意の着信通信またはバッファ106への任意の発信通信は、そのようなインターフェース(例えば、I/F 130)を介して実行されることが理解される。
【0015】
メモリトランザクション中は、メモリコントローラ102は、列アドレスへのアクセスを要求するバッファ106にPCAリンクを介して列コマンド(例えば、読み出しまたは書き込みコマンド)を発行する。本明細書で使用されるように、列動作は、列コマンドおよびその列コマンドに関連する情報の転送を指す。また、メモリコントローラ102は、2つの選択信号S0#またはS1#の1つをアサートして列アクセスのためのアクティブスレッド(例えば、T0またはT1)を示す。スレッドのデータ部分は32ビット幅であるため、バースト長を8ビット(BL8)と仮定すると、全体で64バイトの転送を維持するには、スレッドへの単一のトランザクションは2回の連続した列動作からなる(すなわち、それぞれの列コマンドは、32ビット幅で8ビット長のデータのバーストに関連する)。同様に、スレッドのECC部分は4ビット幅であるため、2回の連続した列動作が、BL8バーストに対し全体で8バイトのデータ転送を維持する。
【0016】
書き込みトランザクション中は、メモリバッファ106は、2回の連続した32ビット幅のBL8バーストとしてPDQ0またはPDQ1の1つを介してデータを受信し、2回の連続した32ビット幅のBL8バーストでメモリデバイスのハーフランクHR1またはHR2の1つにデータを書き込む。例えば、スレッドT0に対するデータは、PDQ0を介して受信され、ハーフランクHR0に書き込まれる。しかし、ECCが共有のメモリデバイス120−Eに書き込まれる前に、パッキング回路108は、2回の連続した4ビット幅のBL8バーストの1:2パッキングを実行し、それらを単一の8ビット幅のBL8バーストに変換する。例えば、ECCは、2回の連続した4ビット幅のBL8バーストとしてPECC0リンクを介して受信し、次いで、単一の8ビット幅のBL8バーストで共有のメモリデバイス120−Eに書き込むことができる。したがって、メモリバッファ106とメモリデバイス120−Dとの間のデータバーストの各対に対し、メモリバッファ106と共有のメモリデバイス120−Eとの間に1回のECCバーストが存在する。
【0017】
読み出しトランザクションは、書き込みトランザクションと同様であるが、読み出しトランザクション中は、パッキング回路108は、共有のメモリデバイス120−Eから読み出されたECCの2:1アンパッキングを実行し、SECCリンクを介して受信された単一の8ビット幅のバーストを2回の連続した4ビット幅の読み出しバーストに変換する。4ビット幅のバーストは、選択信号S0#およびS1#の論理レベルによって示されるようなアクティブスレッドに応じて、PECC0またはPECC1リンクのいずれかを介してメモリコントローラ102に送信される。したがって、一般的に言えば、パッキング回路は、あるビット幅のECCを、より大きなまたはより小さなビット幅のECCに転換する責任を有する。
【0018】
アドレス回路110は、バッファ106とメモリデバイス120との間の情報(すなわち、データおよびECC)の転送を制御する。具体的には、アドレス回路110は、各メモリトランザクションに対して、PCAリンクを介して2つの連続した列アドレス(「一次アドレス」)を受信し、SCAリンクを介して列アドレスを再度送信する。SCAリンクを介して送信されたデータにアクセスするためのこれらの列アドレス(「データアドレス」)は、メモリデバイスのハーフランクの1つにおけるデータの位置を示す。共有のメモリデバイス120−EとのECCアクセスには唯一単一の列アドレスが必要とされるため、アドレス回路110は、2つの一次アドレスから単一の列アドレスを導出することによって、ECCアクセスのための列アドレスを決定する。ECCアクセスのための列アドレス(「エラーアドレス」)は、メモリデバイスの選択されたハーフランクまたは選択されたスレッドから読み出されたかまたは同ハーフランクまたはスレッドに書き込まれたデータに関連する共有のメモリデバイス120−EにおけるECCの位置を示す。
【0019】
アドレス回路110は、ハーフランクHR0のデバイスでデータ転送が管理されるかまたはハーフランクHR1のデバイスでデータ転送が管理されるかに応じて、異なる方法でエラーアドレスを導出する。一実施形態では、アドレス回路110は、トランザクションがスレッドT0に対するものかまたはスレッドT1に対するものかの指示(トランザクションがHR0に対するものかまたはHR1に対するものかも示す)として、2つの選択入力S0#およびS1#を使用することができ、この指示を使用して着信一次アドレスの1つまたは複数のビットを変更してエラーアドレスを生成することができる。例えば、トランザクションがスレッドT0への書き込みであれば、エラーアドレスの生成において一次アドレスは全く変更されない可能性がある(すなわち、ビット値は保持される)。トランザクションがスレッドT1への書き込みであれば、一次アドレスのビットの1つを反転させてエラーアドレスを生成することができる。データ転送のためにアクセスされているデバイスのハーフランクに基づいて、ECCアクセスのためのアドレスを決定することによって、2つのスレッド間のアドレス競合は回避され、単一のECCメモリデバイス120−Eを2つのスレッド間で共有することができる。
【0020】
図2Aおよび2Bは、一実施形態による、図1の実施形態でのアドレス回路110の動作を示す表である。具体的には、図2Aは、書き込みトランザクション中のアドレス回路110の動作を示し、図2Bは、読み出しトランザクション中のアドレス回路110の動作を示す。両図とも、図1を参照して説明される。
【0021】
ここで図2Aを参照すると、書き込みトランザクション中のアドレス回路110の動作を示す表200が示される。表200の最初の2つの行は、スレッドT0に対する連続した列書き込み動作を示す。S0#(アクティブロー信号)をアサートし、S1#をアサート解除することで、列動作がスレッドT0およびハーフランクHR0に関連することを示す。第1の列動作は一次列アドレス「…xyz0」へのものであり、第2の列動作は一次列アドレス「…xyz1」へのものである。両方の一次列アドレスは、PCAリンクを介して受信され、いかなる変更も行わずにSCAリンクを介してハーフランクHR0にデータアドレスとして提供される。第1の列動作中は、共有のECCデバイス120−Eへの書き込み動作は存在しないが、その理由は、この期間中、パッキング回路108がパッキングプロセスを開始するためである。第2の列動作中は、アドレス回路110は、第2の列アドレス「…xyz1」を、いかなる変更も行わずにECAリンクを介してエラーアドレスとして提供し、8ビット幅のバーストを共有のECCデバイス120−Eへ実行する。
【0022】
表200の最後の2つの行は、スレッドT1に対する連続した列書き込み動作を示す。S1#をアサートし、S0#をアサート解除することで、列動作がスレッドT1およびハーフランクH1に対するものであることを示す。第1の列動作は一次列アドレス「…xyz0」へのものであり、第2の列動作は一次列アドレス「…xyz1」へのものである。両方の列アドレスは、PCAリンクを介して受信され、いかなる変更も行わずにSCAリンクを介してハーフランクHR1にデータアドレスとして提供される。前述と同様に、第1の列動作中は、共有のECCデバイス120−Eへの書き込み動作は存在しないが、その理由は、この期間中、パッキング回路108がパッキングプロセスを開始するためである。しかし、第2の列動作中は、アドレス回路110は、一次列アドレスの最下位ビット(LSB)を反転させ、この変更した列アドレスを、ECAリンクを介してエラーアドレスとして提供する。したがって、共有のECCデバイス120−EへECCを書き込むため、列アドレス「…xyz1」は列アドレス「…xyz0」に変換される。
【0023】
ここで図2Bを参照すると、読み出しトランザクション中のアドレス回路110の動作を示す表205が示される。図2Bは図2Aと同様であるが、読み出しトランザクション中は、パッキング回路108が第1の列動作中にアンパッキングプロセスを開始できるように、エラーアドレスは、第1の列動作で共有のECCデバイス120−Eに提供される。さらに、アドレス回路110は、一次列アドレスのLSBを反転させ、スレッドT0に対するECCにアクセスする際にはエラーアドレスを生成し、スレッドT1に対するECCにアクセスする際には一次列アドレスを直接使用する。
【0024】
表205の最初の2つの行は、スレッドT0に対する連続した列読み出し動作を示す。S0#をアサートすることで、列動作がスレッドT0およびハーフランクHR0に対するものであることを示す。第1の列動作は一次列アドレス「…xyz0」へのものであり、第2の列動作は列アドレス「…xyz1」へのものである。両方の一次列アドレスは、PCAリンク上で受信され、いかなる変更も行わずにSCAリンクを介してハーフランクHR0にデータアドレスとして提供される。第1の列動作中は、アドレス回路110は、一次列アドレスのLSBを反転させ、この変更した列アドレスを、ECAリンクを介してエラーアドレスとして提供する。したがって、図2Aの表においてスレッドT0に対する第2の列動作中に共有のECCデバイス120−EにおいてECCが書き込まれた場所と一致するように、共有のECCデバイス120−EからECCを読み出すため、列アドレス「…xyz0」は列アドレス「…xyz1」に変換される。第2の列動作中は、共有のECCデバイス120−Eに提供されるエラーアドレスは存在しないが、その理由は、第1の列動作中に既にECCが転送されているためである。
【0025】
表205の2番目の2つの行は、スレッドT1への連続した列読み出し動作を示す。S1#をアサートすることで、列動作がスレッドT1およびハーフランクHR1に対するものであることを示す。第1の列動作は一次列アドレス「…xyz0」へのものであり、第2の列動作は一次列アドレス「…xyz1」へのものである。両方の列アドレスは、PCAリンクを介して受信され、いかなる変更も行わずにSCAリンクを介してハーフランクHR1にデータアドレスとして提供される。第1の列動作中は、図2Aの表においてスレッドT1に対する第2の列動作中に共有のECCデバイス120−EにおいてECCが書き込まれた場所と一致するように、共有のECCデバイス120−EからECCを読み出すため、アドレス回路110は、一次列アドレスを、いかなる変更も行わずにECAリンクを介してエラーアドレスとして再度送信する。第2の列動作中は、共有のECCデバイス120−Eに提供されるアドレスは存在しないが、その理由は、第1の列動作中に既にECCが転送されているためである。
【0026】
他の実施形態では、アドレス回路110は、ECCアクセスのためのエラーアドレスを生成する際、一次アドレスのLSB以外の列ビットを反転することができる。例えば、アドレス回路110は、最上位ビット(MSB)および/またはLSBとMSBとの間の他の任意のビットを反転するよう構成することができる。
【0027】
図3Aおよび3Bは、一実施形態による、図1の実施形態のメモリシステム100の動作を示すタイミング図である。具体的には、図3Aは、書き込み動作中のメモリシステム100に対するタイミング図であり、図3Bは、読み出し動作中のメモリシステム100に対するタイミング図である。両図とも、図1、図2Aおよび図2Bを参照して説明される。
【0028】
ここで図3Aを参照すると、スレッドT0に対する書き込み動作中のメモリシステム100に対するタイミング図が示される。タイミング図は、図2Aからの表200の最初の2つの行に対応する。Clkは、PCAリンクの一部であり得るタイミング信号であるが、タイミング図では、基準ポイントとして使用するために別々に表す。
【0029】
メモリコントローラ102は、2回の連続した列動作の一部としてPCAリンクを介して、2つの一次アドレスPA0およびPA1を提供する。メモリバッファ106は、2つの一次アドレスPA0およびPA1を受信し、少し遅れていかなる変更も行わずにSCAリンクを介して、2つのデータアドレスDA0およびDA1として一次アドレスを再度送信する。これはスレッドT0に対する書き込み動作であるため、メモリバッファ106は、ECAリンクを介して送信されるエラーアドレスEAとして第2の一次アドレスPA1を使用する。エラーアドレスEAは、第2のデータアドレスDA1と実質的に同時にアクセスされる。これがスレッドT1に対する書き込みトランザクションであれば、メモリバッファ106は、第2の一次アドレスPA1のビットを反転させ、エラーアドレスEAとしてECAリンクを介して変更したアドレスを提供することに留意されたい。
【0030】
メモリコントローラ102は、PDQ0リンクを介して、データDATA0およびDATA1の2回のバーストを提供する。各データのバーストは、32ビット幅であり、8ビットのバースト長を有し、システムはダブルデータレート(DDR)送信を使用すると仮定する。DATA0は、PA0への第1の列動作に対するデータであり、DATA1は、PA1への第2の列動作に対するデータである。メモリバッファ106は、PDQ0リンクを介してデータを受信し、少し遅れてSDQ0リンクを介してデータを再度送信する。DATA0は、データアドレスDA0でハーフランクHR0に格納される。DATA1は、データアドレスDA1でハーフランクHR0に格納される。
【0031】
さらに、メモリコントローラ102は、PECC0リンクを介して、ECC、すなわち、ECC0およびECC1の2回のバーストを提供する。各ECCのバーストは、4ビット幅であり8ビット長である。ECC0を使用してDATA0のエラーをチェックすることができ、ECC1を使用してDATA1のエラーをチェックすることができる。パッキング回路108は、単一の列動作中に格納できるように、ECC0およびECC1をともにパックする。次いで、バッファ106は、単一の8ビット幅および8ビット長のバーストでSECCリンクを介してECC0およびECC1を送信する。ECC0およびECC1は両方とも、エラーアドレスEAで共有のECCデバイス120−Eに格納される。
【0032】
ここで図3Bを参照すると、スレッドT0に対する読み出しトランザクション中のメモリシステム100に対するタイミング図が示される。タイミング図は、図2Bからの表205の最初の2つの行に対応する。図3Aと同様に、メモリコントローラ102は、2回の連続した列動作の一部としてPCAリンクを介して、2つの一次アドレスPA0およびPA1を提供する。メモリバッファ106は、PCAリンクを介して2つの一次アドレスPA0およびPA1を受信し、少し遅れていかなる変更も行わずにSCAリンクを介して、2つのデータアドレスDA0およびDA1として一次アドレスを再度送信する。しかし、これはスレッドT0に対する読み出し動作であるため、メモリバッファ106は、第1の一次アドレスPA0のビットを反転させ、エラーアドレスEAとしてECAリンクを介して変更したアドレスを送信する。エラーアドレスは、第1のデータアドレスと実質的に同時にアクセスされる。これがスレッドT1に対する読み出しトランザクションであれば、エラーアドレスEAは、第1の一次アドレスPA0と同じビット値を有することに留意されたい。
【0033】
バッファ106は、データアドレスDA0およびDA1に応答してSDQ0リンクを介してハーフランクHR0のデバイスから、データDATA0およびDATA1の2回のバーストを受信する。各データのバーストは、32ビット幅であり8ビット長である。DATA0は、列アドレスDA0から読み出され、DATA1は、列アドレスDA1から読み出される。次いで、メモリバッファ106は、少し遅れてPDQ0リンクを介してメモリコントローラ102にデータDATA0およびDATA1を再度送信する。
【0034】
さらに、バッファ106は、SECCリンクを介して共有のメモリデバイス120−Eから、ECC0およびECC1を含むECCの単一の8ビット幅で8ビット長のバーストを受信する。ECC0とECC1は両方ともエラーアドレスEAから読み出される。パッキング回路108は、2回の別々のバーストでメモリコントローラ102に転送することができるように、ECCをアンパックする。次いで、バッファ106は、DATA0およびDATA1がPDQ0上で読み出される際と実質的に同じタイミングで、4ビット幅で8ビット長の2回のバーストでPECC0リンクを介してECC0およびECC1を送信する。
【0035】
一実施形態では、スレッドT1に対するメモリトランザクションは、図3Aおよび図3Bに示されるメモリトランザクションと同様に実行される。しかし、データは、データリンクPDQ0およびSDQ0の代わりに、データリンクPDQ1およびSDQ1を介して転送される。さらに、ECCは、リンクPECC0の代わりに、一次ECCリンクPECC1を介して転送される。
【0036】
図4は、別の実施形態による、EDC範囲に対するメモリシステム400を示す。図4は図1と同様であるが、図4のメモリコントローラ102は4つのスレッド(T0、T1、T2、T3)をサポートし、メモリモジュール104は2倍のメモリデバイス120、すなわち、合計16個のデータ用のメモリデバイス120−Dと、ECC用の2つのメモリデバイス120−Eとを含む。スレッドT0に対するデータはPDQ0リンクを介して転送され、スレッドT0に対するECCはPECC0リンクを介して転送される。スレッドT1に対するデータはPDQ1リンクを介して転送され、スレッドT1に対するECCはPECC1リンクを介して転送される。スレッドT2に対するデータはPDQ2リンクを介して転送され、スレッドT2に対するECCはPECC2リンクを介して転送される。スレッドT3に対するデータはPDQ3リンクを介して転送され、スレッドT3に対するECCはPECC3リンクを介して転送される。それぞれの一次データリンク(PDQ0〜PDQ3)は16ビット幅である。それぞれの一次ECCリンク(PECC0〜PECC3)は2ビット幅である。
【0037】
メモリコントローラ102は、PCAリンク上でコマンドおよびアドレス情報を送信し、4つのアクティブローの選択信号S00#、S01#、S10#およびS11#を使用してデータ転送動作用のスレッドの1つを選択することによって、データ転送動作を開始する。例えば、S00#がアサートされればスレッドT0が選択され、S01#がアサートされればスレッドT1が選択され、S10#がアサートされればスレッドT2が選択され、S11#がアサートされればスレッドT3が選択される。いくつかの実施形態では、異なる数のチップ選択信号が存在し得る。例えば、2つの物理的なチップ選択信号のみ存在し得る。4つの論理チップ選択を導出するため、2つの物理的なチップ選択信号を行アドレスビットまたはバンクアドレスビットと組み合わせることができる。このようにチップ選択を導出することは、ランク乗算(rank multiplication)と呼ばれる場合がある。
【0038】
各メモリデバイス120は、4ビット幅のインターフェースをサポートするx4メモリデバイスである。4つのメモリデバイス120−D0は、スレッドT0に対するデータを格納するメモリデバイスのクオータランクQR0を形成する。4つのメモリデバイス120−D1は、スレッドT1に対するデータを格納するメモリデバイスの別のクオータランクQR1を形成する。4つのメモリデバイス120−D2は、スレッドT2に対するデータを格納するメモリデバイスのクオータランクQR2を形成する。4つのメモリデバイス120−D3は、スレッドT3に対するデータを格納するメモリデバイスの別のクオータランクQR3を形成する。クオータランクQR0およびQR1は、メモリデバイスのハーフランクHR0を形成する。クオータランクQR2およびQR3は、メモリデバイスの別のハーフランクHR1を形成する。メモリデバイス120−E0は、メモリデバイスの2つのクオータランクQR0とQR1との間で共有され、スレッドT0とT1の両方に対するECCを格納する。メモリデバイス120−E1は、メモリデバイスの2つのクオータランクQR2とQR3との間で共有され、スレッドT2とT3の両方に対するECCを格納する。
【0039】
この実施形態では、スレッドのデータ部分は16ビット幅である。したがって、スレッドに対する単一のトランザクションは、各列動作に対してBL8と再度仮定すると、全体で64バイトの転送を維持するには、スレッドへの単一のトランザクションは、4回の連続した列動作からなる。同様に、各列動作に対してBL8と仮定すると、スレッドのECC部分は2ビット幅であるため、4回の連続した列動作が全体で8バイトの転送を維持する。
【0040】
書き込みトランザクション中は、メモリバッファ106は、4回の連続した16ビット幅のBL8バーストとしてスレッドの1つに対するデータを受信し、4回の連続した16ビット幅のBL8バーストでメモリデバイスのクオータランクの1つにデータを書き込む。例えば、スレッドT0に対するデータは、PDQ0を介して受信され、SDQ0を介してクオータランクQR0に書き込まれる。しかし、ECCが共有のメモリデバイス120−Eに書き込まれ得る前に、パッキング回路108は、連続した2ビット幅のBL8バーストの各対の1:2パッキングを実行し、その対を単一の4ビット幅のBL8バーストに変換する。例えば、パッキング回路108−1は、4回の連続した2ビット幅のBL8バーストとしてPECC0リンクを介してECCを受信し、次いで、2回の4ビット幅のBL8バーストとして共有のメモリデバイス120−E0にECCを書き込むことができる。したがって、4回のデータ列動作ごとに、2回のECC列動作が存在する。読み出しトランザクションは書き込みトランザクションと同様であるが、読み出しトランザクション中は、パッキング回路108は、共有のメモリデバイス120−EからのECCの2:1アンパッキングを実行する。
【0041】
アドレス回路110は、図1と併せて説明されるアドレス回路と同様であるが、図4のアドレス回路110は、より多くの数のメモリデバイス120との通信を取り扱う。具体的には、アドレス回路110は、各メモリトランザクションに対して、PCAリンクを介して4つの連続した一次アドレスを受信し、SCAリンクを介してデータアドレスとしてアドレスを再度送信する。アドレス回路110は、一次アドレスの各対からECCアクセスのための単一のエラーアドレスを導出する。したがって、4つの一次アドレスから2つのエラーアドレスが導出される。さらに、スレッド間での競合を回避するため、アドレス回路110は、データに対しどのクオータランクがアクセスされているかに応じて、異なる方法でエラーアドレスを導出する。具体的には、アドレス回路110は、選択入力S00#、S01#、S10#およびS11#を使用して、ECCアクセスのための列アドレスビットの1つもしくは複数、または、4つ未満のチップ選択信号が存在する場合は、行/バンクアドレスビットなどのアクセスされているクオータランクの他の任意の指示を変更することができる。
【0042】
図5Aおよび5Bは、一実施形態による、図4の実施形態のアドレス回路110の動作を示す表である。具体的には、図5Aは、スレッドT0およびT1に対する書き込みトランザクション中のアドレス回路110の動作を示し、図5Bは、スレッドT0およびT1に対する読み出しトランザクション中のアドレス回路110の動作を示す。スレッドT2およびT3に対してメモリトランザクションは示されていないが、スレッドT0およびT1に対するメモリトランザクションと同様である。図5Aおよび5Bの両図とも、図4を参照して説明される。
【0043】
ここで図5Aを参照すると、スレッドT0およびスレッドT1に対する書き込みトランザクション中の図4の実施形態のアドレス回路110の動作を示す表500が示される。表500の最初の4つの行は、スレッドT0に対する連続した列書き込み動作を示す。S00#(アクティブロー信号)をアサートし、S01#をアサート解除することで、列動作がスレッドT0およびクオータランクQR0に対するものであることを示す。第1の列動作は一次列アドレス「…xy00」へのものであり、第2の列動作は一次列アドレス「…xy01」へのものであり、第3の列動作は一次列アドレス「…xy10」へのものであり、第4の列動作は一次列アドレス「…xy11」へのものである。すべての一次列アドレスは、PCAリンクを介して受信され、いかなる変更も行わずにSCAリンクを介してクオータランクQR0にデータアドレスとして提供される。
【0044】
第1の列動作中は、共有のECCデバイス120−E0への書き込み動作は存在しないが、その理由は、この期間中、パッキング回路108−1がパッキングプロセスを開始するためである。第2の列動作中は、アドレス回路110は、第2の一次アドレス「…xy01」を、いかなる変更も行わずに共有のECCデバイス120−E0にECAリンクを介してエラーアドレスとして提供し、8ビット幅のバーストを共有のECCデバイス120−E0へ実行する。第3の列動作中は、共有のECCデバイス120−E0への書き込み動作は存在しないが、その理由は、この期間中、パッキング回路108−1がパッキングプロセスを再開するためである。第4の列動作中は、アドレス回路110は、第4の一次アドレス「…xy11」を、いかなる変更も行わずに共有のECCデバイス120−E0にECAリンクを介してエラーアドレスとして提供し、別の8ビット幅のバーストを共有のECCデバイス120−E0へ実行する。
【0045】
表500の最後の4つの行は、スレッドT1に対する連続した列書き込み動作を示す。S01#をアサートし、S00#をアサート解除することで、列動作がスレッドT1およびクオータランクQR1に対するものであることを示す。第1の列動作は一次列アドレス「…xy00」へのものであり、第2の列動作は一次列アドレス「…xy01」へのものであり、第3の列動作は一次列アドレス「…xy10」へのものであり、第4の列動作は一次列アドレス「…xy11」へのものである。すべての4つの一次アドレスは、PCAリンクを介して受信され、いかなる変更も行わずにSCAリンクを介してクオータランクQR1にデータアドレスとして提供される。
【0046】
前述と同様に、第1の列動作中は、共有のECCデバイス120−E0への書き込み動作は存在しないが、その理由は、この期間中、パッキング回路108−1がパッキングプロセスを開始するためである。しかし、第2の列動作中は、アドレス回路110は、一次アドレスのLSBを反転させ、この変更した列アドレスを、共有のECCデバイス120−E0にECAリンクを介してエラーアドレスとして提供する。したがって、共有のECCデバイス120−E0へECCを書き込むため、列アドレス「…xy01」は列アドレス「…xy00」に変換される。第3の列動作中は、共有のECCデバイス120−E0への書き込み動作は存在しないが、その理由は、この期間中、パッキング回路108−1がパッキングプロセスを再開するためである。第4の列動作中は、アドレス回路110は、一次アドレスのLSBを反転させ、この変更した列アドレスを、共有のECCデバイス120−E0にECAリンクを介してエラーアドレスとして提供する。したがって、共有のECCデバイス120−E0へECCを書き込むため、列アドレス「…xy11」は列アドレス「…xy10」に変換される。
【0047】
ここで図5Bを参照すると、読み出し中のアドレス回路110の動作を示す表505が示される。図5Bは図5Aと同様であるが、パッキング回路108−1が第1および第3の列動作中にアンパッキングプロセスを開始できるように、エラーアドレスは、第1および第3の列動作で共有のECCデバイス120−E0に提供される。さらに、アドレス回路110は、スレッドT0に対するエラーアドレスを生成する際には一次列アドレスのLSBを反転させ、スレッドT1に対するエラーアドレスを生成する際には反転させずに一次列アドレスに直接使用する。
【0048】
ここで図6を参照すると、別の実施形態による、EDC範囲に対するメモリシステム600を示される。メモリシステム600は、図4と併せて説明されるメモリシステムと同様である。しかし、図6のメモリシステム600は、改良された信号インテグリティに対するダイナミックポイントツーポイント(DPP)技術をサポートする実施形態である。DPPシステムでは、メモリコントローラ102は、狭いポイントツーポイントデータリンク上で各メモリモジュール104と通信することができるが、依然としてメモリモジュール104のすべてのメモリデバイス120にアクセスすることができる。例えば、信号リンク160は、ここでは、メモリコントローラ102とメモリモジュール104との間でデータを転送するための単一の16ビット幅のデータリンクPDQを含む。また、信号リンク160は、メモリコントローラ102とメモリモジュール104との間でECCを転送するための一次ECCリンクPECCも含む。PECCリンクは2ビット幅である。DPPをサポートするシステム600は、それら自体のポイントツーポイントデータリンクを通じてメモリコントローラ102と結合されるいくつかのメモリモジュール104を有し得るが、明確にするため、図6では1つのモジュール104のみが示される。
【0049】
機能上、バッファ106の動作は、図4、5Aおよび5Bと併せて説明されるものと同様である。バッファ106は、書き込み中に、PECCリンクを介して受信された2ビット幅のECCバーストの対を、共有のメモリデバイス120−Eへ送信するために4ビット幅のバーストにパックするパッキング回路108を依然として含む。読み出し中は、パッキング回路108は、共有のメモリデバイス120−Eから受信された4ビット幅のECCバーストをアンパックし、PECCリンクを介して2ビット幅のバーストの対として送信する。また、バッファ106は、PCAリンクを介して着信列アドレスを受信し、ECCアクセスのための列アドレスを決定するアドレス回路110も含む。具体的には、アドレス回路110は、データ転送に対しメモリデバイス120のどのクオータランクがアクセスされているか(選択信号S00#〜S11#または他のいくつかの指示で示されるように)、および、データ転送が読み出し動作か書き込み動作かに基づいて、ECCアクセスのための列アドレスを導出する。
【0050】
DPP動作をサポートするため、ここでは、バッファ106は、PDQリンクとそれぞれの二次データリンク(SDQ0〜SDQ3)との間のデータのフローを管理するルーティング回路680を含む。ルーティング回路680を通じたデータのルーティングは、メモリデバイス120−Dのどのクオータランクがメモリトランザクションのために選択されるかを示す選択信号(S00#〜S11#)の論理レベルによって構成される。また、バッファは、パッキング回路108と二次ECCリンク(SECC0およびSECC1)との間のECCのフローを管理する別のルーティング回路682も含む。ルーティング回路682を通じたECCのルーティングは、選択信号(S00#〜S11#)の論理レベルによって構成される。一実施形態では、ルーティング回路680および682は、双方向マルチプレクサとして実装される。
【0051】
図7は、さらに別の実施形態による、EDC範囲に対するメモリシステム700を示す。図7のメモリシステム700は、図1と併せて先に説明されるメモリシステム100と同様である。しかし、メモリバッファ内にあるものとして先に記載される機能性は、メモリコントローラ102自体に位置する。その結果、メモリシステム700は、個別のメモリバッファを必要とすることなく、モジュールスレッディングおよびEDCの機能性を統合する。
【0052】
メモリシステム700は、信号リンク160を通じて通信するメモリコントローラ102とメモリモジュール104とを依然として含む。また、メモリコントローラは、2つのメモリスレッドT0およびT1をサポートする。しかし、信号リンク160は、ECCコマンドアドレスリンクECAおよび単一の8ビット幅のECCリンクPECCを含む。データアドレスはPCAリンクを介して通信され、エラーアドレスはECAリンクを介して通信される。また、信号リンク160は、3つの選択信号、すなわち、ハーフランクHR0に対して1つ、ハーフランクHR1に対して1つおよび共有のECCデバイス120−Eに対して1つ(図示せず)も含み得る。
【0053】
メモリコントローラ102は、制御回路780、パッキング回路108およびアドレス生成回路710を含む。メモリコントローラ102は、さまざまな通信リンク(例えば、PDQ0、PDQ1、PECC、PCA、ECAなど)上で情報を受信および送信するインターフェース(例えば、I/F 730)を含む。例えば、メモリコントローラ102は、PDQ0リンクを介してハーフランクHR0と通信するためのインターフェース回路と、PECCリンクを介して共有のメモリデバイス120−Eと通信するためのインターフェース回路と、PDQ1リンクを介してハーフランクHR1と通信するためのインターフェース回路とを有する。本明細書に記載されるコントローラ102によって受信されるまたは同コントローラ102から送信される任意の情報は、そのようなインターフェース(例えば、I/F 730)を介して実行されることが理解される。
【0054】
書き込み動作中は、制御回路780は、2つのスレッドT0およびT1の1つに対するデータおよびECCを生成する。所定のスレッドに対して、パッキング回路108は、ECCを8ビット幅のBL8バーストにパックし、PECCリンクを介してメモリモジュール104にECCを送信する。読み出し動作中は、パッキング回路108は、PECCリンクを介して受信されたECCの8ビット幅のBL8バーストをアンパックし、アンパックしたECCを制御回路780に提供する。次いで、制御回路780は、アンパックされたECCに対してあらゆる着信データをチェックし、いかなるメモリエラーも検出し訂正する。他の実施形態では、制御回路780自体がECCの8ビット幅のBL8バーストを直接生成するため、パッキング回路108は不要である。
【0055】
また、メモリコントローラ102は、図1、2Aおよび2Bと併せて説明されるアドレス回路110への動作の際と同様なアドレス生成回路710も含む。しかし、アドレス生成回路710はメモリコントローラ102内に位置するため、列動作に対する列アドレスを直接生成することができる。一実施形態では、アドレス生成回路710は、メモリデバイスのハーフランクのいずれかでデータを転送するための2つのデータアドレスを生成し、PCAリンクを介してこれらのアドレスを送信する。また、アドレス生成回路710は、データアドレスの各対に対する単一のエラーアドレスも生成し、ECAリンクを介してこのエラーアドレスを送信する。したがって、各ECC列動作に対して2回のデータ列動作が存在する。
【0056】
2つのメモリスレッドT0とT1との間でメモリデバイス120−Eの共有を可能にするため、アドレス生成回路710によって生成されるエラーアドレスは、データがハーフランクHR0で転送されているかまたはハーフランクHR1で転送されているかに基づいて異なる。例えば、2回の連続した列動作中は、データアドレスは「…xyz0」または「…xyz1」であり得る。列動作がスレッドT0に対する書き込み動作であれば、アドレス生成回路710は、第2のデータアドレス「…xyz1」を取り出し、スレッドT0に対するECCの転送のためのエラーアドレスとしてこの同じアドレスを使用することができる。しかし、列動作がスレッドT1に対する書き込み動作であれば、アドレス生成回路710は、第2のデータアドレス「…xyz1」のLSBを反転させ、スレッドT1に対するECCの転送のためのエラーアドレス「…xyz0」を生成することができる。
【0057】
開示された実施形態のいくつかは、こうして、モジュールスレッディングおよびDPPなどの高度なメモリ特徴をEDC能力と統合することを可能にする。メモリデバイス群間でECCメモリデバイスを共有することによって、ECCメモリデバイスをメモリデバイスの各群に専用して使用することなく、EDCをこれらの特徴と併せて使用することができる。さらに、メモリデバイスを共有することによって引き起こされるアドレス競合は、データに対しメモリデバイスのどの群がアクセスされているかに基づいて、共有のメモリデバイスにアクセスするためのアドレスを決定することによって回避される。
【0058】
本開示を読み進めると、当業者であれば、メモリデバイス群間でチェックビットメモリデバイスを共有するためのさらなる追加の代替の設計が理解されよう。したがって、本開示の特定の実施形態および適用例が解説され、説明されてきたが、本開示は本明細書で開示されるものと全く同一の構造および構成要素に限定されないことを理解されたい。本明細書の本開示の方法および装置の構成、動作および詳細において、添付の特許請求の範囲で定義されるような本開示の精神および範囲から逸脱することなく、当業者には明らかであろうさまざまな修正、変更および変形を行うことができる。
【背景技術】
【0001】
本開示は、メモリシステムに関し、より具体的には、エラー検出および訂正(EDC)機能性を含むメモリシステムのコンポーネントに関する。
【0002】
本明細書の実施形態の教示は、添付の図面と併せて、以下の詳細な説明を考慮することによって容易に理解することができる。
【図面の簡単な説明】
【0003】
【図1】一実施形態による、EDC範囲に対するメモリシステムを示す。
【図2A】一実施形態による、図1の実施形態での書き込み動作中のアドレス回路の動作を示す表である。
【図2B】一実施形態による、図1の実施形態での読み出し動作中のアドレス回路の動作を示す表である。
【図3A】一実施形態による、図1の実施形態での書き込み動作中のメモリシステムの動作を示すタイミング図である。
【図3B】一実施形態による、図1の実施形態での読み出し動作中のメモリシステムの動作を示すタイミング図である。
【図4】別の実施形態による、EDC範囲に対するメモリシステムを示す。
【図5A】一実施形態による、書き込み動作中の図4の実施形態のアドレス回路の動作を示す表である。
【図5B】一実施形態による、読み出し動作中の図4の実施形態のアドレス回路の動作を示す表である。
【図6】さらに別の実施形態による、EDC範囲に対するメモリシステムを示す。
【図7】さらに別の実施形態による、EDC範囲に対するメモリシステムを示す。
【発明を実施するための形態】
【0004】
本開示の実施形態は、メモリアクセス中に起こり得るメモリエラーを検出および訂正するためのエラー検出および訂正(EDC)範囲をサポートするメモリシステムのコンポーネントに関する。一実施形態では、メモリモジュールは、データを格納する2つのメモリデバイス群と、両方のメモリデバイス群のためにエラーチェック情報(例えば、エラー訂正コード)を格納する別のメモリデバイスとを含む。また、メモリモジュールは、メモリモジュールとメモリコントローラとの間の通信を取り扱うメモリバッファも含む。メモリバッファは、あるメモリデバイス群のデータに、別のメモリデバイス群のデータとは無関係にアクセスすることができるように、メモリスレッディングまたはダイナミックポイントツーポイント(DPP)メモリ構成をサポートすることができる。エラーチェック情報のためのメモリデバイスを共有する一方で独立したデータアクセスをサポートするため、バッファは、データが第1のメモリデバイス群によって転送されるかまたは第2のメモリデバイス群によって転送されるかに基づいて、エラーチェック情報にアクセスするためのアドレスを決定する。いくつかの実施形態では、メモリバッファにあるものとして記載される機能性は、代わりにメモリコントローラに実装して、メモリバッファの必要性を低減または排除することができる。
【0005】
本開示全体を通じて「エラーチェック情報」という用語は、メモリシステムに格納されたデータ内で起こるエラーの検出および/もしくは訂正において使用されるかまたは同エラーの検出および/もしくは訂正に関連する任意の情報として幅広く定義されることに留意されたい。その上、本明細書全体を通じて「エラー訂正コード」(ECC)という用語は、エラー検出および訂正のためにメモリシステムで使用されるエラーチェック情報を指す。
【0006】
ここで、本開示のいくつかの実施形態を詳細に参照し、その例を添付の図面に示す。図面では、実行可能な同様のまたは類似した参照番号を使用することができ、それらの参照番号は同様のまたは類似した機能性を示すことができることに留意されたい。図面は、単なる例示として本開示の実施形態を描写する。当業者であれば、以下の説明から、本明細書に記載される本開示の原理または称賛される利益から逸脱することなく、本明細書で示される構造および方法の代替の実施形態を使用できることが容易に理解されよう。
【0007】
図1は、一実施形態による、EDC範囲に対するメモリシステム100を示す。メモリシステム100は、一次信号リンク160を介して相互接続されたメモリコントローラ102とメモリモジュール104を含む。一実施形態では、システム100は、マザーボード上に存在し得る。メモリコントローラ102は、個別の集積回路でも、中央処理装置(CPU)またはグラフィック処理装置(GPU)などのより大きな集積回路の一部でもあり得る。
【0008】
一次信号リンク160は、メモリコントローラ102からメモリモジュール104まで制御およびアドレス情報を搬送するコマンドおよびアドレス用一次リンクPCAを含む。また、信号リンク160は、メモリコントローラ102とメモリモジュール104との間でデータを転送するための2つの一次データリンクPDQ0およびPDQ1も含む。一実施形態では、一次データリンクPDQ0およびPDQ1はそれぞれ32ビット幅である。また、一次信号リンク160は、メモリコントローラ102とメモリモジュール104との間でECCを転送するための2つの一次ECCリンクPECC0およびPECC1も含む。一実施形態では、ECCリンクPECC0およびPECC1はそれぞれ4ビット幅である。
【0009】
メモリコントローラ102は、モジュールスレッディングをサポートし、モジュールスレッディングは、単一の比較的幅広いメモリチャネルを、共通のアドレスバスを通じて互いに無関係にアクセスすることができる2つのサブチャネルに分割する技法を指す。例えば、メモリスレッディングを有効にすると、メモリコントローラ102は、メモリトランザクション(例えば、読み出しおよび書き込みトランザクション)を2つのスレッドT0およびT1に分割する。スレッドT0に対するデータはPDQ0リンクを介して転送され、スレッドT0に対するECCはPECC0リンクを介して転送される。スレッドT1に対するデータはPDQ1リンクを介して転送され、スレッドT1に対するECCはPECC1リンクを介して転送される。メモリコントローラ102は、PCAリンクを介してコマンドおよびアドレス情報を送信し、2つのアクティブローの選択信号S0#およびS1#を使用してトランザクション用のスレッドの1つを選択することによって、メモリトランザクションを制御する。例えば、S0#がアサートされればスレッドT0が選択され、S1#がアサートされればスレッドT1が選択される。他の実施形態では、メモリコントローラ102は、PCAリンクを介してまたは他のサイドバンド信号を通じて、帯域内信号伝達でスレッドを選択することができる。
【0010】
メモリモジュール104は、合計9つのメモリデバイス120を含む。当業者が通常使用する意味と一致して、メモリデバイス120は、電子的に情報を格納したり取り出したりすることができる集積回路デバイス(すなわち、チップ)である。各メモリデバイス120は、8ビット幅のインターフェースをサポートするx8メモリデバイスである。4つのメモリデバイス120−D0は、スレッドT0に対するデータを格納するメモリデバイスのハーフランクHR0を形成する。4つのメモリデバイス120−D1は、スレッドT1に対するデータを格納するメモリデバイスのハーフランクHR1を形成する。メモリデバイス120−Eは、スレッドT0とT1の両方に対するECCを格納し、効果的に、メモリデバイスの2つのハーフランクHR0とHR1との間で「共有」される。さらに、メモリデバイス120は、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)または非揮発性メモリ(NVM)などの任意のタイプのメモリを表し得る。
【0011】
また、メモリモジュール104は、モジュールスレッディングと併せてEDCの機能性を可能にするメモリバッファ106も含む。いくつかの実施形態では、メモリバッファ106は、メモリモジュール104に取り付けられた単一の集積回路デバイスである。メモリバッファ106は、メモリコントローラ102とメモリデバイス120との間の通信を取り扱う。具体的には、メモリバッファ106は、二次データリンクSDQ0およびSDQ1を通じて、メモリデバイスのハーフランクHR0およびHR1でデータを転送し、コマンド/アドレス用二次リンクSCAを通じて、ハーフランクHR0およびHR1を制御する。いくつかの実施形態では、SCAリンクは2つのリンクに分割することができ、それぞれがメモリデバイス120−Dの半分を専用して使用する。例えば、ハーフランクHR0を専用して使用するあるコマンドおよびアドレス用リンクが存在し、ハーフランクHR1を専用して使用する異なるコマンドおよびアドレス用リンクが存在し得る。
【0012】
メモリバッファ106は、二次ECCリンクSECCを通じて共有のメモリデバイス120−EでECCを転送し、ECCコマンド/アドレス用リンクECAを通じて共有のメモリデバイス120−Eを制御する。他の実施形態では、共有のメモリデバイス120−Eは、SCAリンクにおいて信号の大部分(例えば、addr[13:1])と結合する一方で、ECAリンクから単一のアドレス信号(例えば、addr[0])のみを受信することができる。これにより、共有のメモリデバイス120−Eは、SCAリンクでコマンド/アドレス信号の大部分を共有するが、SCAリンクにおいて対応するアドレスビットとは異なり得るそれ自体のユニークなアドレスビットを受信することができる。別の実施形態では、共有のメモリデバイス120−Eは、SCAリンクを共有し、SCAリンクからのコマンドを読み出すための専用チップ選択信号を有することができる。
【0013】
アドレス回路110もまた、アドレス回路110によって生成される二次選択信号(図示せず)を通じて、それぞれのメモリデバイス120と結合される。各メモリデバイス120は、その選択信号がアサートされれば着信コマンドを処理し、その選択信号がアサート解除されれば着信コマンドを無視する。ハーフランクHR0のデバイスにある選択信号が提供され得、ハーフランクHR1のデバイスに別の選択信号が提供され得、共有のメモリデバイス120−Eに異なる選択信号が提供され得る。一実施形態では、アドレス回路110は、一次選択信号S0#およびS1#の論理レベルから選択信号を導出することができる。
【0014】
また、メモリバッファ106は、さまざまな通信リンク(例えば、PDQ0、PDQ1、PECC0、PECC1、SDQ0、SDQ1、SECC、PCA、SCA、ECAなど)を介して、情報を受信および送信するインターフェース回路(例えば、I/F 130)も含む。例えば、メモリバッファ106は、SDQ0リンクを介してハーフランクHR0と通信するためのインターフェース、SDQ1リンクを介してハーフランクHR1と通信するためのインターフェースおよびSECCリンクを介してデバイス120−Eと通信するためのインターフェースを有する。本明細書に記載されるバッファ106からの任意の着信通信またはバッファ106への任意の発信通信は、そのようなインターフェース(例えば、I/F 130)を介して実行されることが理解される。
【0015】
メモリトランザクション中は、メモリコントローラ102は、列アドレスへのアクセスを要求するバッファ106にPCAリンクを介して列コマンド(例えば、読み出しまたは書き込みコマンド)を発行する。本明細書で使用されるように、列動作は、列コマンドおよびその列コマンドに関連する情報の転送を指す。また、メモリコントローラ102は、2つの選択信号S0#またはS1#の1つをアサートして列アクセスのためのアクティブスレッド(例えば、T0またはT1)を示す。スレッドのデータ部分は32ビット幅であるため、バースト長を8ビット(BL8)と仮定すると、全体で64バイトの転送を維持するには、スレッドへの単一のトランザクションは2回の連続した列動作からなる(すなわち、それぞれの列コマンドは、32ビット幅で8ビット長のデータのバーストに関連する)。同様に、スレッドのECC部分は4ビット幅であるため、2回の連続した列動作が、BL8バーストに対し全体で8バイトのデータ転送を維持する。
【0016】
書き込みトランザクション中は、メモリバッファ106は、2回の連続した32ビット幅のBL8バーストとしてPDQ0またはPDQ1の1つを介してデータを受信し、2回の連続した32ビット幅のBL8バーストでメモリデバイスのハーフランクHR1またはHR2の1つにデータを書き込む。例えば、スレッドT0に対するデータは、PDQ0を介して受信され、ハーフランクHR0に書き込まれる。しかし、ECCが共有のメモリデバイス120−Eに書き込まれる前に、パッキング回路108は、2回の連続した4ビット幅のBL8バーストの1:2パッキングを実行し、それらを単一の8ビット幅のBL8バーストに変換する。例えば、ECCは、2回の連続した4ビット幅のBL8バーストとしてPECC0リンクを介して受信し、次いで、単一の8ビット幅のBL8バーストで共有のメモリデバイス120−Eに書き込むことができる。したがって、メモリバッファ106とメモリデバイス120−Dとの間のデータバーストの各対に対し、メモリバッファ106と共有のメモリデバイス120−Eとの間に1回のECCバーストが存在する。
【0017】
読み出しトランザクションは、書き込みトランザクションと同様であるが、読み出しトランザクション中は、パッキング回路108は、共有のメモリデバイス120−Eから読み出されたECCの2:1アンパッキングを実行し、SECCリンクを介して受信された単一の8ビット幅のバーストを2回の連続した4ビット幅の読み出しバーストに変換する。4ビット幅のバーストは、選択信号S0#およびS1#の論理レベルによって示されるようなアクティブスレッドに応じて、PECC0またはPECC1リンクのいずれかを介してメモリコントローラ102に送信される。したがって、一般的に言えば、パッキング回路は、あるビット幅のECCを、より大きなまたはより小さなビット幅のECCに転換する責任を有する。
【0018】
アドレス回路110は、バッファ106とメモリデバイス120との間の情報(すなわち、データおよびECC)の転送を制御する。具体的には、アドレス回路110は、各メモリトランザクションに対して、PCAリンクを介して2つの連続した列アドレス(「一次アドレス」)を受信し、SCAリンクを介して列アドレスを再度送信する。SCAリンクを介して送信されたデータにアクセスするためのこれらの列アドレス(「データアドレス」)は、メモリデバイスのハーフランクの1つにおけるデータの位置を示す。共有のメモリデバイス120−EとのECCアクセスには唯一単一の列アドレスが必要とされるため、アドレス回路110は、2つの一次アドレスから単一の列アドレスを導出することによって、ECCアクセスのための列アドレスを決定する。ECCアクセスのための列アドレス(「エラーアドレス」)は、メモリデバイスの選択されたハーフランクまたは選択されたスレッドから読み出されたかまたは同ハーフランクまたはスレッドに書き込まれたデータに関連する共有のメモリデバイス120−EにおけるECCの位置を示す。
【0019】
アドレス回路110は、ハーフランクHR0のデバイスでデータ転送が管理されるかまたはハーフランクHR1のデバイスでデータ転送が管理されるかに応じて、異なる方法でエラーアドレスを導出する。一実施形態では、アドレス回路110は、トランザクションがスレッドT0に対するものかまたはスレッドT1に対するものかの指示(トランザクションがHR0に対するものかまたはHR1に対するものかも示す)として、2つの選択入力S0#およびS1#を使用することができ、この指示を使用して着信一次アドレスの1つまたは複数のビットを変更してエラーアドレスを生成することができる。例えば、トランザクションがスレッドT0への書き込みであれば、エラーアドレスの生成において一次アドレスは全く変更されない可能性がある(すなわち、ビット値は保持される)。トランザクションがスレッドT1への書き込みであれば、一次アドレスのビットの1つを反転させてエラーアドレスを生成することができる。データ転送のためにアクセスされているデバイスのハーフランクに基づいて、ECCアクセスのためのアドレスを決定することによって、2つのスレッド間のアドレス競合は回避され、単一のECCメモリデバイス120−Eを2つのスレッド間で共有することができる。
【0020】
図2Aおよび2Bは、一実施形態による、図1の実施形態でのアドレス回路110の動作を示す表である。具体的には、図2Aは、書き込みトランザクション中のアドレス回路110の動作を示し、図2Bは、読み出しトランザクション中のアドレス回路110の動作を示す。両図とも、図1を参照して説明される。
【0021】
ここで図2Aを参照すると、書き込みトランザクション中のアドレス回路110の動作を示す表200が示される。表200の最初の2つの行は、スレッドT0に対する連続した列書き込み動作を示す。S0#(アクティブロー信号)をアサートし、S1#をアサート解除することで、列動作がスレッドT0およびハーフランクHR0に関連することを示す。第1の列動作は一次列アドレス「…xyz0」へのものであり、第2の列動作は一次列アドレス「…xyz1」へのものである。両方の一次列アドレスは、PCAリンクを介して受信され、いかなる変更も行わずにSCAリンクを介してハーフランクHR0にデータアドレスとして提供される。第1の列動作中は、共有のECCデバイス120−Eへの書き込み動作は存在しないが、その理由は、この期間中、パッキング回路108がパッキングプロセスを開始するためである。第2の列動作中は、アドレス回路110は、第2の列アドレス「…xyz1」を、いかなる変更も行わずにECAリンクを介してエラーアドレスとして提供し、8ビット幅のバーストを共有のECCデバイス120−Eへ実行する。
【0022】
表200の最後の2つの行は、スレッドT1に対する連続した列書き込み動作を示す。S1#をアサートし、S0#をアサート解除することで、列動作がスレッドT1およびハーフランクH1に対するものであることを示す。第1の列動作は一次列アドレス「…xyz0」へのものであり、第2の列動作は一次列アドレス「…xyz1」へのものである。両方の列アドレスは、PCAリンクを介して受信され、いかなる変更も行わずにSCAリンクを介してハーフランクHR1にデータアドレスとして提供される。前述と同様に、第1の列動作中は、共有のECCデバイス120−Eへの書き込み動作は存在しないが、その理由は、この期間中、パッキング回路108がパッキングプロセスを開始するためである。しかし、第2の列動作中は、アドレス回路110は、一次列アドレスの最下位ビット(LSB)を反転させ、この変更した列アドレスを、ECAリンクを介してエラーアドレスとして提供する。したがって、共有のECCデバイス120−EへECCを書き込むため、列アドレス「…xyz1」は列アドレス「…xyz0」に変換される。
【0023】
ここで図2Bを参照すると、読み出しトランザクション中のアドレス回路110の動作を示す表205が示される。図2Bは図2Aと同様であるが、読み出しトランザクション中は、パッキング回路108が第1の列動作中にアンパッキングプロセスを開始できるように、エラーアドレスは、第1の列動作で共有のECCデバイス120−Eに提供される。さらに、アドレス回路110は、一次列アドレスのLSBを反転させ、スレッドT0に対するECCにアクセスする際にはエラーアドレスを生成し、スレッドT1に対するECCにアクセスする際には一次列アドレスを直接使用する。
【0024】
表205の最初の2つの行は、スレッドT0に対する連続した列読み出し動作を示す。S0#をアサートすることで、列動作がスレッドT0およびハーフランクHR0に対するものであることを示す。第1の列動作は一次列アドレス「…xyz0」へのものであり、第2の列動作は列アドレス「…xyz1」へのものである。両方の一次列アドレスは、PCAリンク上で受信され、いかなる変更も行わずにSCAリンクを介してハーフランクHR0にデータアドレスとして提供される。第1の列動作中は、アドレス回路110は、一次列アドレスのLSBを反転させ、この変更した列アドレスを、ECAリンクを介してエラーアドレスとして提供する。したがって、図2Aの表においてスレッドT0に対する第2の列動作中に共有のECCデバイス120−EにおいてECCが書き込まれた場所と一致するように、共有のECCデバイス120−EからECCを読み出すため、列アドレス「…xyz0」は列アドレス「…xyz1」に変換される。第2の列動作中は、共有のECCデバイス120−Eに提供されるエラーアドレスは存在しないが、その理由は、第1の列動作中に既にECCが転送されているためである。
【0025】
表205の2番目の2つの行は、スレッドT1への連続した列読み出し動作を示す。S1#をアサートすることで、列動作がスレッドT1およびハーフランクHR1に対するものであることを示す。第1の列動作は一次列アドレス「…xyz0」へのものであり、第2の列動作は一次列アドレス「…xyz1」へのものである。両方の列アドレスは、PCAリンクを介して受信され、いかなる変更も行わずにSCAリンクを介してハーフランクHR1にデータアドレスとして提供される。第1の列動作中は、図2Aの表においてスレッドT1に対する第2の列動作中に共有のECCデバイス120−EにおいてECCが書き込まれた場所と一致するように、共有のECCデバイス120−EからECCを読み出すため、アドレス回路110は、一次列アドレスを、いかなる変更も行わずにECAリンクを介してエラーアドレスとして再度送信する。第2の列動作中は、共有のECCデバイス120−Eに提供されるアドレスは存在しないが、その理由は、第1の列動作中に既にECCが転送されているためである。
【0026】
他の実施形態では、アドレス回路110は、ECCアクセスのためのエラーアドレスを生成する際、一次アドレスのLSB以外の列ビットを反転することができる。例えば、アドレス回路110は、最上位ビット(MSB)および/またはLSBとMSBとの間の他の任意のビットを反転するよう構成することができる。
【0027】
図3Aおよび3Bは、一実施形態による、図1の実施形態のメモリシステム100の動作を示すタイミング図である。具体的には、図3Aは、書き込み動作中のメモリシステム100に対するタイミング図であり、図3Bは、読み出し動作中のメモリシステム100に対するタイミング図である。両図とも、図1、図2Aおよび図2Bを参照して説明される。
【0028】
ここで図3Aを参照すると、スレッドT0に対する書き込み動作中のメモリシステム100に対するタイミング図が示される。タイミング図は、図2Aからの表200の最初の2つの行に対応する。Clkは、PCAリンクの一部であり得るタイミング信号であるが、タイミング図では、基準ポイントとして使用するために別々に表す。
【0029】
メモリコントローラ102は、2回の連続した列動作の一部としてPCAリンクを介して、2つの一次アドレスPA0およびPA1を提供する。メモリバッファ106は、2つの一次アドレスPA0およびPA1を受信し、少し遅れていかなる変更も行わずにSCAリンクを介して、2つのデータアドレスDA0およびDA1として一次アドレスを再度送信する。これはスレッドT0に対する書き込み動作であるため、メモリバッファ106は、ECAリンクを介して送信されるエラーアドレスEAとして第2の一次アドレスPA1を使用する。エラーアドレスEAは、第2のデータアドレスDA1と実質的に同時にアクセスされる。これがスレッドT1に対する書き込みトランザクションであれば、メモリバッファ106は、第2の一次アドレスPA1のビットを反転させ、エラーアドレスEAとしてECAリンクを介して変更したアドレスを提供することに留意されたい。
【0030】
メモリコントローラ102は、PDQ0リンクを介して、データDATA0およびDATA1の2回のバーストを提供する。各データのバーストは、32ビット幅であり、8ビットのバースト長を有し、システムはダブルデータレート(DDR)送信を使用すると仮定する。DATA0は、PA0への第1の列動作に対するデータであり、DATA1は、PA1への第2の列動作に対するデータである。メモリバッファ106は、PDQ0リンクを介してデータを受信し、少し遅れてSDQ0リンクを介してデータを再度送信する。DATA0は、データアドレスDA0でハーフランクHR0に格納される。DATA1は、データアドレスDA1でハーフランクHR0に格納される。
【0031】
さらに、メモリコントローラ102は、PECC0リンクを介して、ECC、すなわち、ECC0およびECC1の2回のバーストを提供する。各ECCのバーストは、4ビット幅であり8ビット長である。ECC0を使用してDATA0のエラーをチェックすることができ、ECC1を使用してDATA1のエラーをチェックすることができる。パッキング回路108は、単一の列動作中に格納できるように、ECC0およびECC1をともにパックする。次いで、バッファ106は、単一の8ビット幅および8ビット長のバーストでSECCリンクを介してECC0およびECC1を送信する。ECC0およびECC1は両方とも、エラーアドレスEAで共有のECCデバイス120−Eに格納される。
【0032】
ここで図3Bを参照すると、スレッドT0に対する読み出しトランザクション中のメモリシステム100に対するタイミング図が示される。タイミング図は、図2Bからの表205の最初の2つの行に対応する。図3Aと同様に、メモリコントローラ102は、2回の連続した列動作の一部としてPCAリンクを介して、2つの一次アドレスPA0およびPA1を提供する。メモリバッファ106は、PCAリンクを介して2つの一次アドレスPA0およびPA1を受信し、少し遅れていかなる変更も行わずにSCAリンクを介して、2つのデータアドレスDA0およびDA1として一次アドレスを再度送信する。しかし、これはスレッドT0に対する読み出し動作であるため、メモリバッファ106は、第1の一次アドレスPA0のビットを反転させ、エラーアドレスEAとしてECAリンクを介して変更したアドレスを送信する。エラーアドレスは、第1のデータアドレスと実質的に同時にアクセスされる。これがスレッドT1に対する読み出しトランザクションであれば、エラーアドレスEAは、第1の一次アドレスPA0と同じビット値を有することに留意されたい。
【0033】
バッファ106は、データアドレスDA0およびDA1に応答してSDQ0リンクを介してハーフランクHR0のデバイスから、データDATA0およびDATA1の2回のバーストを受信する。各データのバーストは、32ビット幅であり8ビット長である。DATA0は、列アドレスDA0から読み出され、DATA1は、列アドレスDA1から読み出される。次いで、メモリバッファ106は、少し遅れてPDQ0リンクを介してメモリコントローラ102にデータDATA0およびDATA1を再度送信する。
【0034】
さらに、バッファ106は、SECCリンクを介して共有のメモリデバイス120−Eから、ECC0およびECC1を含むECCの単一の8ビット幅で8ビット長のバーストを受信する。ECC0とECC1は両方ともエラーアドレスEAから読み出される。パッキング回路108は、2回の別々のバーストでメモリコントローラ102に転送することができるように、ECCをアンパックする。次いで、バッファ106は、DATA0およびDATA1がPDQ0上で読み出される際と実質的に同じタイミングで、4ビット幅で8ビット長の2回のバーストでPECC0リンクを介してECC0およびECC1を送信する。
【0035】
一実施形態では、スレッドT1に対するメモリトランザクションは、図3Aおよび図3Bに示されるメモリトランザクションと同様に実行される。しかし、データは、データリンクPDQ0およびSDQ0の代わりに、データリンクPDQ1およびSDQ1を介して転送される。さらに、ECCは、リンクPECC0の代わりに、一次ECCリンクPECC1を介して転送される。
【0036】
図4は、別の実施形態による、EDC範囲に対するメモリシステム400を示す。図4は図1と同様であるが、図4のメモリコントローラ102は4つのスレッド(T0、T1、T2、T3)をサポートし、メモリモジュール104は2倍のメモリデバイス120、すなわち、合計16個のデータ用のメモリデバイス120−Dと、ECC用の2つのメモリデバイス120−Eとを含む。スレッドT0に対するデータはPDQ0リンクを介して転送され、スレッドT0に対するECCはPECC0リンクを介して転送される。スレッドT1に対するデータはPDQ1リンクを介して転送され、スレッドT1に対するECCはPECC1リンクを介して転送される。スレッドT2に対するデータはPDQ2リンクを介して転送され、スレッドT2に対するECCはPECC2リンクを介して転送される。スレッドT3に対するデータはPDQ3リンクを介して転送され、スレッドT3に対するECCはPECC3リンクを介して転送される。それぞれの一次データリンク(PDQ0〜PDQ3)は16ビット幅である。それぞれの一次ECCリンク(PECC0〜PECC3)は2ビット幅である。
【0037】
メモリコントローラ102は、PCAリンク上でコマンドおよびアドレス情報を送信し、4つのアクティブローの選択信号S00#、S01#、S10#およびS11#を使用してデータ転送動作用のスレッドの1つを選択することによって、データ転送動作を開始する。例えば、S00#がアサートされればスレッドT0が選択され、S01#がアサートされればスレッドT1が選択され、S10#がアサートされればスレッドT2が選択され、S11#がアサートされればスレッドT3が選択される。いくつかの実施形態では、異なる数のチップ選択信号が存在し得る。例えば、2つの物理的なチップ選択信号のみ存在し得る。4つの論理チップ選択を導出するため、2つの物理的なチップ選択信号を行アドレスビットまたはバンクアドレスビットと組み合わせることができる。このようにチップ選択を導出することは、ランク乗算(rank multiplication)と呼ばれる場合がある。
【0038】
各メモリデバイス120は、4ビット幅のインターフェースをサポートするx4メモリデバイスである。4つのメモリデバイス120−D0は、スレッドT0に対するデータを格納するメモリデバイスのクオータランクQR0を形成する。4つのメモリデバイス120−D1は、スレッドT1に対するデータを格納するメモリデバイスの別のクオータランクQR1を形成する。4つのメモリデバイス120−D2は、スレッドT2に対するデータを格納するメモリデバイスのクオータランクQR2を形成する。4つのメモリデバイス120−D3は、スレッドT3に対するデータを格納するメモリデバイスの別のクオータランクQR3を形成する。クオータランクQR0およびQR1は、メモリデバイスのハーフランクHR0を形成する。クオータランクQR2およびQR3は、メモリデバイスの別のハーフランクHR1を形成する。メモリデバイス120−E0は、メモリデバイスの2つのクオータランクQR0とQR1との間で共有され、スレッドT0とT1の両方に対するECCを格納する。メモリデバイス120−E1は、メモリデバイスの2つのクオータランクQR2とQR3との間で共有され、スレッドT2とT3の両方に対するECCを格納する。
【0039】
この実施形態では、スレッドのデータ部分は16ビット幅である。したがって、スレッドに対する単一のトランザクションは、各列動作に対してBL8と再度仮定すると、全体で64バイトの転送を維持するには、スレッドへの単一のトランザクションは、4回の連続した列動作からなる。同様に、各列動作に対してBL8と仮定すると、スレッドのECC部分は2ビット幅であるため、4回の連続した列動作が全体で8バイトの転送を維持する。
【0040】
書き込みトランザクション中は、メモリバッファ106は、4回の連続した16ビット幅のBL8バーストとしてスレッドの1つに対するデータを受信し、4回の連続した16ビット幅のBL8バーストでメモリデバイスのクオータランクの1つにデータを書き込む。例えば、スレッドT0に対するデータは、PDQ0を介して受信され、SDQ0を介してクオータランクQR0に書き込まれる。しかし、ECCが共有のメモリデバイス120−Eに書き込まれ得る前に、パッキング回路108は、連続した2ビット幅のBL8バーストの各対の1:2パッキングを実行し、その対を単一の4ビット幅のBL8バーストに変換する。例えば、パッキング回路108−1は、4回の連続した2ビット幅のBL8バーストとしてPECC0リンクを介してECCを受信し、次いで、2回の4ビット幅のBL8バーストとして共有のメモリデバイス120−E0にECCを書き込むことができる。したがって、4回のデータ列動作ごとに、2回のECC列動作が存在する。読み出しトランザクションは書き込みトランザクションと同様であるが、読み出しトランザクション中は、パッキング回路108は、共有のメモリデバイス120−EからのECCの2:1アンパッキングを実行する。
【0041】
アドレス回路110は、図1と併せて説明されるアドレス回路と同様であるが、図4のアドレス回路110は、より多くの数のメモリデバイス120との通信を取り扱う。具体的には、アドレス回路110は、各メモリトランザクションに対して、PCAリンクを介して4つの連続した一次アドレスを受信し、SCAリンクを介してデータアドレスとしてアドレスを再度送信する。アドレス回路110は、一次アドレスの各対からECCアクセスのための単一のエラーアドレスを導出する。したがって、4つの一次アドレスから2つのエラーアドレスが導出される。さらに、スレッド間での競合を回避するため、アドレス回路110は、データに対しどのクオータランクがアクセスされているかに応じて、異なる方法でエラーアドレスを導出する。具体的には、アドレス回路110は、選択入力S00#、S01#、S10#およびS11#を使用して、ECCアクセスのための列アドレスビットの1つもしくは複数、または、4つ未満のチップ選択信号が存在する場合は、行/バンクアドレスビットなどのアクセスされているクオータランクの他の任意の指示を変更することができる。
【0042】
図5Aおよび5Bは、一実施形態による、図4の実施形態のアドレス回路110の動作を示す表である。具体的には、図5Aは、スレッドT0およびT1に対する書き込みトランザクション中のアドレス回路110の動作を示し、図5Bは、スレッドT0およびT1に対する読み出しトランザクション中のアドレス回路110の動作を示す。スレッドT2およびT3に対してメモリトランザクションは示されていないが、スレッドT0およびT1に対するメモリトランザクションと同様である。図5Aおよび5Bの両図とも、図4を参照して説明される。
【0043】
ここで図5Aを参照すると、スレッドT0およびスレッドT1に対する書き込みトランザクション中の図4の実施形態のアドレス回路110の動作を示す表500が示される。表500の最初の4つの行は、スレッドT0に対する連続した列書き込み動作を示す。S00#(アクティブロー信号)をアサートし、S01#をアサート解除することで、列動作がスレッドT0およびクオータランクQR0に対するものであることを示す。第1の列動作は一次列アドレス「…xy00」へのものであり、第2の列動作は一次列アドレス「…xy01」へのものであり、第3の列動作は一次列アドレス「…xy10」へのものであり、第4の列動作は一次列アドレス「…xy11」へのものである。すべての一次列アドレスは、PCAリンクを介して受信され、いかなる変更も行わずにSCAリンクを介してクオータランクQR0にデータアドレスとして提供される。
【0044】
第1の列動作中は、共有のECCデバイス120−E0への書き込み動作は存在しないが、その理由は、この期間中、パッキング回路108−1がパッキングプロセスを開始するためである。第2の列動作中は、アドレス回路110は、第2の一次アドレス「…xy01」を、いかなる変更も行わずに共有のECCデバイス120−E0にECAリンクを介してエラーアドレスとして提供し、8ビット幅のバーストを共有のECCデバイス120−E0へ実行する。第3の列動作中は、共有のECCデバイス120−E0への書き込み動作は存在しないが、その理由は、この期間中、パッキング回路108−1がパッキングプロセスを再開するためである。第4の列動作中は、アドレス回路110は、第4の一次アドレス「…xy11」を、いかなる変更も行わずに共有のECCデバイス120−E0にECAリンクを介してエラーアドレスとして提供し、別の8ビット幅のバーストを共有のECCデバイス120−E0へ実行する。
【0045】
表500の最後の4つの行は、スレッドT1に対する連続した列書き込み動作を示す。S01#をアサートし、S00#をアサート解除することで、列動作がスレッドT1およびクオータランクQR1に対するものであることを示す。第1の列動作は一次列アドレス「…xy00」へのものであり、第2の列動作は一次列アドレス「…xy01」へのものであり、第3の列動作は一次列アドレス「…xy10」へのものであり、第4の列動作は一次列アドレス「…xy11」へのものである。すべての4つの一次アドレスは、PCAリンクを介して受信され、いかなる変更も行わずにSCAリンクを介してクオータランクQR1にデータアドレスとして提供される。
【0046】
前述と同様に、第1の列動作中は、共有のECCデバイス120−E0への書き込み動作は存在しないが、その理由は、この期間中、パッキング回路108−1がパッキングプロセスを開始するためである。しかし、第2の列動作中は、アドレス回路110は、一次アドレスのLSBを反転させ、この変更した列アドレスを、共有のECCデバイス120−E0にECAリンクを介してエラーアドレスとして提供する。したがって、共有のECCデバイス120−E0へECCを書き込むため、列アドレス「…xy01」は列アドレス「…xy00」に変換される。第3の列動作中は、共有のECCデバイス120−E0への書き込み動作は存在しないが、その理由は、この期間中、パッキング回路108−1がパッキングプロセスを再開するためである。第4の列動作中は、アドレス回路110は、一次アドレスのLSBを反転させ、この変更した列アドレスを、共有のECCデバイス120−E0にECAリンクを介してエラーアドレスとして提供する。したがって、共有のECCデバイス120−E0へECCを書き込むため、列アドレス「…xy11」は列アドレス「…xy10」に変換される。
【0047】
ここで図5Bを参照すると、読み出し中のアドレス回路110の動作を示す表505が示される。図5Bは図5Aと同様であるが、パッキング回路108−1が第1および第3の列動作中にアンパッキングプロセスを開始できるように、エラーアドレスは、第1および第3の列動作で共有のECCデバイス120−E0に提供される。さらに、アドレス回路110は、スレッドT0に対するエラーアドレスを生成する際には一次列アドレスのLSBを反転させ、スレッドT1に対するエラーアドレスを生成する際には反転させずに一次列アドレスに直接使用する。
【0048】
ここで図6を参照すると、別の実施形態による、EDC範囲に対するメモリシステム600を示される。メモリシステム600は、図4と併せて説明されるメモリシステムと同様である。しかし、図6のメモリシステム600は、改良された信号インテグリティに対するダイナミックポイントツーポイント(DPP)技術をサポートする実施形態である。DPPシステムでは、メモリコントローラ102は、狭いポイントツーポイントデータリンク上で各メモリモジュール104と通信することができるが、依然としてメモリモジュール104のすべてのメモリデバイス120にアクセスすることができる。例えば、信号リンク160は、ここでは、メモリコントローラ102とメモリモジュール104との間でデータを転送するための単一の16ビット幅のデータリンクPDQを含む。また、信号リンク160は、メモリコントローラ102とメモリモジュール104との間でECCを転送するための一次ECCリンクPECCも含む。PECCリンクは2ビット幅である。DPPをサポートするシステム600は、それら自体のポイントツーポイントデータリンクを通じてメモリコントローラ102と結合されるいくつかのメモリモジュール104を有し得るが、明確にするため、図6では1つのモジュール104のみが示される。
【0049】
機能上、バッファ106の動作は、図4、5Aおよび5Bと併せて説明されるものと同様である。バッファ106は、書き込み中に、PECCリンクを介して受信された2ビット幅のECCバーストの対を、共有のメモリデバイス120−Eへ送信するために4ビット幅のバーストにパックするパッキング回路108を依然として含む。読み出し中は、パッキング回路108は、共有のメモリデバイス120−Eから受信された4ビット幅のECCバーストをアンパックし、PECCリンクを介して2ビット幅のバーストの対として送信する。また、バッファ106は、PCAリンクを介して着信列アドレスを受信し、ECCアクセスのための列アドレスを決定するアドレス回路110も含む。具体的には、アドレス回路110は、データ転送に対しメモリデバイス120のどのクオータランクがアクセスされているか(選択信号S00#〜S11#または他のいくつかの指示で示されるように)、および、データ転送が読み出し動作か書き込み動作かに基づいて、ECCアクセスのための列アドレスを導出する。
【0050】
DPP動作をサポートするため、ここでは、バッファ106は、PDQリンクとそれぞれの二次データリンク(SDQ0〜SDQ3)との間のデータのフローを管理するルーティング回路680を含む。ルーティング回路680を通じたデータのルーティングは、メモリデバイス120−Dのどのクオータランクがメモリトランザクションのために選択されるかを示す選択信号(S00#〜S11#)の論理レベルによって構成される。また、バッファは、パッキング回路108と二次ECCリンク(SECC0およびSECC1)との間のECCのフローを管理する別のルーティング回路682も含む。ルーティング回路682を通じたECCのルーティングは、選択信号(S00#〜S11#)の論理レベルによって構成される。一実施形態では、ルーティング回路680および682は、双方向マルチプレクサとして実装される。
【0051】
図7は、さらに別の実施形態による、EDC範囲に対するメモリシステム700を示す。図7のメモリシステム700は、図1と併せて先に説明されるメモリシステム100と同様である。しかし、メモリバッファ内にあるものとして先に記載される機能性は、メモリコントローラ102自体に位置する。その結果、メモリシステム700は、個別のメモリバッファを必要とすることなく、モジュールスレッディングおよびEDCの機能性を統合する。
【0052】
メモリシステム700は、信号リンク160を通じて通信するメモリコントローラ102とメモリモジュール104とを依然として含む。また、メモリコントローラは、2つのメモリスレッドT0およびT1をサポートする。しかし、信号リンク160は、ECCコマンドアドレスリンクECAおよび単一の8ビット幅のECCリンクPECCを含む。データアドレスはPCAリンクを介して通信され、エラーアドレスはECAリンクを介して通信される。また、信号リンク160は、3つの選択信号、すなわち、ハーフランクHR0に対して1つ、ハーフランクHR1に対して1つおよび共有のECCデバイス120−Eに対して1つ(図示せず)も含み得る。
【0053】
メモリコントローラ102は、制御回路780、パッキング回路108およびアドレス生成回路710を含む。メモリコントローラ102は、さまざまな通信リンク(例えば、PDQ0、PDQ1、PECC、PCA、ECAなど)上で情報を受信および送信するインターフェース(例えば、I/F 730)を含む。例えば、メモリコントローラ102は、PDQ0リンクを介してハーフランクHR0と通信するためのインターフェース回路と、PECCリンクを介して共有のメモリデバイス120−Eと通信するためのインターフェース回路と、PDQ1リンクを介してハーフランクHR1と通信するためのインターフェース回路とを有する。本明細書に記載されるコントローラ102によって受信されるまたは同コントローラ102から送信される任意の情報は、そのようなインターフェース(例えば、I/F 730)を介して実行されることが理解される。
【0054】
書き込み動作中は、制御回路780は、2つのスレッドT0およびT1の1つに対するデータおよびECCを生成する。所定のスレッドに対して、パッキング回路108は、ECCを8ビット幅のBL8バーストにパックし、PECCリンクを介してメモリモジュール104にECCを送信する。読み出し動作中は、パッキング回路108は、PECCリンクを介して受信されたECCの8ビット幅のBL8バーストをアンパックし、アンパックしたECCを制御回路780に提供する。次いで、制御回路780は、アンパックされたECCに対してあらゆる着信データをチェックし、いかなるメモリエラーも検出し訂正する。他の実施形態では、制御回路780自体がECCの8ビット幅のBL8バーストを直接生成するため、パッキング回路108は不要である。
【0055】
また、メモリコントローラ102は、図1、2Aおよび2Bと併せて説明されるアドレス回路110への動作の際と同様なアドレス生成回路710も含む。しかし、アドレス生成回路710はメモリコントローラ102内に位置するため、列動作に対する列アドレスを直接生成することができる。一実施形態では、アドレス生成回路710は、メモリデバイスのハーフランクのいずれかでデータを転送するための2つのデータアドレスを生成し、PCAリンクを介してこれらのアドレスを送信する。また、アドレス生成回路710は、データアドレスの各対に対する単一のエラーアドレスも生成し、ECAリンクを介してこのエラーアドレスを送信する。したがって、各ECC列動作に対して2回のデータ列動作が存在する。
【0056】
2つのメモリスレッドT0とT1との間でメモリデバイス120−Eの共有を可能にするため、アドレス生成回路710によって生成されるエラーアドレスは、データがハーフランクHR0で転送されているかまたはハーフランクHR1で転送されているかに基づいて異なる。例えば、2回の連続した列動作中は、データアドレスは「…xyz0」または「…xyz1」であり得る。列動作がスレッドT0に対する書き込み動作であれば、アドレス生成回路710は、第2のデータアドレス「…xyz1」を取り出し、スレッドT0に対するECCの転送のためのエラーアドレスとしてこの同じアドレスを使用することができる。しかし、列動作がスレッドT1に対する書き込み動作であれば、アドレス生成回路710は、第2のデータアドレス「…xyz1」のLSBを反転させ、スレッドT1に対するECCの転送のためのエラーアドレス「…xyz0」を生成することができる。
【0057】
開示された実施形態のいくつかは、こうして、モジュールスレッディングおよびDPPなどの高度なメモリ特徴をEDC能力と統合することを可能にする。メモリデバイス群間でECCメモリデバイスを共有することによって、ECCメモリデバイスをメモリデバイスの各群に専用して使用することなく、EDCをこれらの特徴と併せて使用することができる。さらに、メモリデバイスを共有することによって引き起こされるアドレス競合は、データに対しメモリデバイスのどの群がアクセスされているかに基づいて、共有のメモリデバイスにアクセスするためのアドレスを決定することによって回避される。
【0058】
本開示を読み進めると、当業者であれば、メモリデバイス群間でチェックビットメモリデバイスを共有するためのさらなる追加の代替の設計が理解されよう。したがって、本開示の特定の実施形態および適用例が解説され、説明されてきたが、本開示は本明細書で開示されるものと全く同一の構造および構成要素に限定されないことを理解されたい。本明細書の本開示の方法および装置の構成、動作および詳細において、添付の特許請求の範囲で定義されるような本開示の精神および範囲から逸脱することなく、当業者には明らかであろうさまざまな修正、変更および変形を行うことができる。
【特許請求の範囲】
【請求項1】
第1のメモリデバイスと、
第2のメモリデバイスと、
第3のメモリデバイスと、
前記第1のメモリデバイスまたは前記第2のメモリデバイスのいずれかでデータを転送し、前記第3のメモリデバイスで前記データに対応するエラーチェック情報を転送するメモリバッファと
を備え、
前記メモリバッファは、前記データ転送が前記第1のメモリデバイスによるものかまたは前記第2のメモリデバイスによるものかに基づいて、前記第3のメモリデバイスで前記エラーチェック情報を転送するためのエラーアドレスを決定し、前記エラーアドレスは、前記エラーチェック情報に対応する前記第3のメモリデバイスにおける位置を示す、メモリモジュール。
【請求項2】
前記メモリバッファは、前記データ転送のための少なくとも1つのアドレスを受信し、前記データ転送が前記第1のメモリデバイスによるものかまたは前記第2のメモリデバイスによるものかに基づいて、前記受信したアドレスから前記エラーアドレスを決定する、請求項1に記載のメモリモジュール。
【請求項3】
前記メモリバッファは、前記データ転送が前記第1のメモリデバイスによるものであれば前記受信したアドレスのビット値を反転させることによって、および、前記データ転送が前記第2のメモリデバイスによるものであれば前記ビット値を保持することによって、前記受信したアドレスから前記エラーアドレスを決定する、請求項2に記載のメモリモジュール。
【請求項4】
前記メモリバッファは、連続して第1のデータアドレスに、次いで、第2のデータアドレスにアクセスすることによって前記データを転送し、前記メモリバッファは、
前記データ転送が読み出し動作であれば、前記第1のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること、
前記データ転送が書き込み動作であれば、前記第2のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること
によって前記エラーチェック情報を転送する、請求項1に記載のメモリモジュール。
【請求項5】
前記メモリバッファは、前記データ転送が前記第1のメモリデバイスによるものかまたは前記第2のメモリデバイスによるものかについての指示の受信に応答して、前記エラーチェック情報を転送するための前記エラーアドレスを決定する、請求項1に記載のメモリモジュール。
【請求項6】
前記指示は、1つまたは複数のチップ選択信号を含む、請求項5に記載のメモリモジュール。
【請求項7】
前記指示は、1つまたは複数のアドレスビットを含む、請求項5に記載のメモリモジュール。
【請求項8】
前記メモリバッファは、第1のビット幅で前記エラーチェック情報を受信し、前記第1のビット幅より大きい第2のビット幅で前記第3のメモリデバイスに前記エラーチェック情報を送信することによって、前記エラーチェック情報を転送する、請求項1に記載のメモリモジュール。
【請求項9】
前記メモリバッファは、第1のビット幅で前記第3のメモリデバイスから前記エラーチェック情報を受信し、前記第1のビット幅より小さい第2のビット幅で前記エラーチェック情報を送信することによって、前記エラーチェック情報を転送する、請求項1に記載のメモリモジュール。
【請求項10】
前記第3のメモリデバイスは、前記第1のメモリデバイスと前記第2のメモリデバイスとの間で共有される、請求項1に記載のメモリモジュール。
【請求項11】
前記メモリバッファは、前記データを受信し、前記データ転送が前記第1のメモリデバイスによるものかまたは前記第2のメモリデバイスによるものかに基づいて、前記データを前記第1のメモリデバイスまたは前記第2のメモリデバイスのいずれかにルーティングするルーティング回路を備える、請求項1に記載のメモリモジュール。
【請求項12】
前記エラーアドレスは、列アドレスを含む、請求項1に記載のメモリモジュール。
【請求項13】
メモリバッファであって、
第1のメモリデバイスと通信するための第1のインターフェースおよび第2のメモリデバイスと通信するための第2のインターフェースであって、メモリバッファは、前記第1のメモリデバイスまたは前記第2のメモリデバイスのそれぞれで前記第1のインターフェースまたは前記第2のインターフェースを介してデータを転送する、第1のインターフェースおよび第2のインターフェースと、
第3のメモリデバイスで前記データに対応するエラーチェック情報を転送するための第3のインターフェースであって、前記メモリバッファは、前記データ転送が前記第1のインターフェースを介するものかまたは前記第2のインターフェースを介するものかに基づいて、前記エラーチェック情報に対応する前記第3のメモリデバイスにおける位置を示すためのエラーアドレスを決定する、第3のインターフェースと
を備える、メモリバッファ。
【請求項14】
前記データ転送のための少なくとも1つのアドレスを受信し、前記データ転送が前記第1のインターフェースを介するものかまたは前記第2のインターフェースを介するものかに基づいて、前記受信したアドレスから前記エラーアドレスを決定する、請求項13に記載のメモリバッファ。
【請求項15】
前記データ転送が前記第1のインターフェースを介するものであれば前記受信したアドレスのビット値を反転させることによって、および、前記データ転送が前記第2のインターフェースを介するものであれば前記ビット値を保持することによって、前記受信したアドレスから前記エラーアドレスを決定する、請求項14に記載のメモリバッファ。
【請求項16】
連続して第1のデータアドレスに、次いで、第2のデータアドレスにアクセスすることによって前記データを転送し、
前記データ転送が読み出し動作であれば、前記第1のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること、
前記データ転送が書き込み動作であれば、前記第2のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること
によって前記エラーチェック情報を転送する、請求項13に記載のメモリバッファ。
【請求項17】
前記データ転送が前記第1のインターフェースを介するものかまたは前記第2のインターフェースを介するものかについての指示の受信に応答して、前記エラーチェック情報を転送するための前記エラーアドレスを決定する、請求項13に記載のメモリバッファ。
【請求項18】
前記指示は、1つまたは複数のチップ選択信号を含む、請求項17に記載のメモリバッファ。
【請求項19】
前記指示は、1つまたは複数のアドレスビットを含む、請求項17に記載のメモリバッファ。
【請求項20】
第1のビット幅で前記エラーチェック情報を受信し、前記第1のビット幅より大きい第2のビット幅で前記第3のインターフェースを介して前記エラーチェック情報を送信することによって、前記エラーチェック情報を転送する、請求項13に記載のメモリバッファ。
【請求項21】
第1のビット幅で前記第3のインターフェースを介して前記エラーチェック情報を受信し、前記第1のビット幅より小さい第2のビット幅で前記エラーチェック情報を送信することによって、前記エラーチェック情報を転送する、請求項13に記載のメモリバッファ。
【請求項22】
メモリコントローラであって、
第1のメモリデバイスと通信するための第1のインターフェースおよび第2のメモリデバイスと通信するための第2のインターフェースであって、メモリコントローラは、前記第1のメモリデバイスまたは前記第2のメモリデバイスのそれぞれで前記第1のインターフェースまたは前記第2のインターフェースを介してデータを転送する、第1のインターフェースおよび第2のインターフェースと、
第3のメモリデバイスで前記データに対応するエラーチェック情報を転送するための第3のインターフェースであって、前記メモリコントローラは、前記データ転送が前記第1のインターフェースを介するものかまたは前記第2のインターフェースを介するものかに基づいて、前記エラーチェック情報に対応する前記第3のメモリデバイスにおける位置を示すためのエラーアドレスを決定する、第3のインターフェースと
を備える、メモリコントローラ。
【請求項23】
前記データ転送のための少なくとも1つのアドレスでアクセスし、前記エラーアドレスのビット値は、前記データ転送が前記第1のインターフェースを介するものであれば前記アクセスしたアドレスの対応するビット値から反転され、前記エラーアドレスのビット値は、前記データ転送が前記第2のインターフェースを介するものであれば前記アクセスしたアドレスの対応するビット値と同じである、請求項22に記載のメモリコントローラ。
【請求項24】
連続して第1のデータアドレスに、次いで、第2のデータアドレスにアクセスすることによって前記データを転送し、
前記データ転送が読み出し動作であれば、前記第1のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること、
前記データ転送が書き込み動作であれば、前記第2のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること
によって前記エラーチェック情報を転送する、請求項22に記載のメモリコントローラ。
【請求項25】
メモリバッファにおける動作方法であって、
第1のメモリデバイスでデータを転送するかまたは第2のメモリデバイスでデータを転送するかについての指示を受信することと、
第1のメモリデバイスでデータを転送するかまたは第2のメモリデバイスでデータを転送するかについての指示に応答して、前記データに対応するエラーチェック情報を転送するためのエラーアドレスを決定することであって、前記エラーアドレスは前記エラーチェック情報に対応する第3のメモリデバイスにおける位置を示すことと
を含む、方法。
【請求項26】
前記データ転送のための少なくとも1つのアドレスを受信することをさらに含み、
前記エラーアドレスを決定することは、前記受信したアドレスから前記エラーアドレスを決定することを含む、請求項25に記載の方法。
【請求項27】
前記受信したアドレスから前記エラーアドレスを決定することは、前記データ転送が前記第1のメモリデバイスによるものであれば前記受信したアドレスのビット値を反転させることと、前記データ転送が前記第2のメモリデバイスによるものであれば前記ビット値を保持することとを含む、請求項26に記載の方法。
【請求項28】
前記第1のメモリデバイスまたは前記第2のメモリデバイスのいずれかで前記データを転送することと、前記第3のメモリデバイスで前記エラーチェック情報を転送することとをさらに含む、請求項25に記載の方法。
【請求項29】
連続して第1のデータアドレスに、次いで、第2のデータアドレスにアクセスすることによって前記データを転送し、
前記データ転送が読み出し動作であれば、前記第1のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること、
前記データ転送が書き込み動作であれば、前記第2のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること
によって前記エラーチェック情報を転送する、請求項28に記載の方法。
【請求項30】
第1のビット幅で前記エラーチェック情報を受信することと、前記第1のビット幅より大きい第2のビット幅で前記第3のメモリデバイスに前記エラーチェック情報を送信することとをさらに含む、請求項25に記載の方法。
【請求項31】
第1のビット幅で前記第3のメモリデバイスから前記エラーチェック情報を受信することと、前記第1のビット幅より小さい第2のビット幅で前記エラーチェック情報を送信することとをさらに含む、請求項25に記載の方法。
【請求項32】
メモリデバイスと通信する方法であって、
第1のメモリデバイスまたは第2のメモリデバイスのいずれかでデータを転送することと、第3のメモリデバイスで前記転送したデータに対応するエラーチェック情報を転送することとを含み、
前記エラーチェック情報を転送するためのエラーアドレスは、前記データ転送が前記第1のメモリデバイスによるものかまたは前記第2のメモリデバイスによるものかに応答して決定され、前記エラーアドレスは、前記エラーチェック情報に対応する前記第3のメモリデバイスにおける位置を示す、方法。
【請求項33】
前記データ転送は少なくとも1つのアドレスにアクセスし、前記エラーアドレスは、前記データ転送が前記第1のメモリデバイスによるものであれば前記アクセスしたアドレスのビット値を反転させることによって、および、前記データ転送が前記第2のメモリデバイスによるものであれば前記ビット値を保持することによって決定される、請求項32に記載の方法。
【請求項34】
連続して第1のデータアドレスに、次いで、第2のデータアドレスにアクセスすることによって前記データを転送し、
前記データ転送が読み出し動作であれば、前記第1のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること、
前記データ転送が書き込み動作であれば、前記第2のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること
によって前記エラーチェック情報を転送する、請求項32に記載の方法。
【請求項1】
第1のメモリデバイスと、
第2のメモリデバイスと、
第3のメモリデバイスと、
前記第1のメモリデバイスまたは前記第2のメモリデバイスのいずれかでデータを転送し、前記第3のメモリデバイスで前記データに対応するエラーチェック情報を転送するメモリバッファと
を備え、
前記メモリバッファは、前記データ転送が前記第1のメモリデバイスによるものかまたは前記第2のメモリデバイスによるものかに基づいて、前記第3のメモリデバイスで前記エラーチェック情報を転送するためのエラーアドレスを決定し、前記エラーアドレスは、前記エラーチェック情報に対応する前記第3のメモリデバイスにおける位置を示す、メモリモジュール。
【請求項2】
前記メモリバッファは、前記データ転送のための少なくとも1つのアドレスを受信し、前記データ転送が前記第1のメモリデバイスによるものかまたは前記第2のメモリデバイスによるものかに基づいて、前記受信したアドレスから前記エラーアドレスを決定する、請求項1に記載のメモリモジュール。
【請求項3】
前記メモリバッファは、前記データ転送が前記第1のメモリデバイスによるものであれば前記受信したアドレスのビット値を反転させることによって、および、前記データ転送が前記第2のメモリデバイスによるものであれば前記ビット値を保持することによって、前記受信したアドレスから前記エラーアドレスを決定する、請求項2に記載のメモリモジュール。
【請求項4】
前記メモリバッファは、連続して第1のデータアドレスに、次いで、第2のデータアドレスにアクセスすることによって前記データを転送し、前記メモリバッファは、
前記データ転送が読み出し動作であれば、前記第1のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること、
前記データ転送が書き込み動作であれば、前記第2のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること
によって前記エラーチェック情報を転送する、請求項1に記載のメモリモジュール。
【請求項5】
前記メモリバッファは、前記データ転送が前記第1のメモリデバイスによるものかまたは前記第2のメモリデバイスによるものかについての指示の受信に応答して、前記エラーチェック情報を転送するための前記エラーアドレスを決定する、請求項1に記載のメモリモジュール。
【請求項6】
前記指示は、1つまたは複数のチップ選択信号を含む、請求項5に記載のメモリモジュール。
【請求項7】
前記指示は、1つまたは複数のアドレスビットを含む、請求項5に記載のメモリモジュール。
【請求項8】
前記メモリバッファは、第1のビット幅で前記エラーチェック情報を受信し、前記第1のビット幅より大きい第2のビット幅で前記第3のメモリデバイスに前記エラーチェック情報を送信することによって、前記エラーチェック情報を転送する、請求項1に記載のメモリモジュール。
【請求項9】
前記メモリバッファは、第1のビット幅で前記第3のメモリデバイスから前記エラーチェック情報を受信し、前記第1のビット幅より小さい第2のビット幅で前記エラーチェック情報を送信することによって、前記エラーチェック情報を転送する、請求項1に記載のメモリモジュール。
【請求項10】
前記第3のメモリデバイスは、前記第1のメモリデバイスと前記第2のメモリデバイスとの間で共有される、請求項1に記載のメモリモジュール。
【請求項11】
前記メモリバッファは、前記データを受信し、前記データ転送が前記第1のメモリデバイスによるものかまたは前記第2のメモリデバイスによるものかに基づいて、前記データを前記第1のメモリデバイスまたは前記第2のメモリデバイスのいずれかにルーティングするルーティング回路を備える、請求項1に記載のメモリモジュール。
【請求項12】
前記エラーアドレスは、列アドレスを含む、請求項1に記載のメモリモジュール。
【請求項13】
メモリバッファであって、
第1のメモリデバイスと通信するための第1のインターフェースおよび第2のメモリデバイスと通信するための第2のインターフェースであって、メモリバッファは、前記第1のメモリデバイスまたは前記第2のメモリデバイスのそれぞれで前記第1のインターフェースまたは前記第2のインターフェースを介してデータを転送する、第1のインターフェースおよび第2のインターフェースと、
第3のメモリデバイスで前記データに対応するエラーチェック情報を転送するための第3のインターフェースであって、前記メモリバッファは、前記データ転送が前記第1のインターフェースを介するものかまたは前記第2のインターフェースを介するものかに基づいて、前記エラーチェック情報に対応する前記第3のメモリデバイスにおける位置を示すためのエラーアドレスを決定する、第3のインターフェースと
を備える、メモリバッファ。
【請求項14】
前記データ転送のための少なくとも1つのアドレスを受信し、前記データ転送が前記第1のインターフェースを介するものかまたは前記第2のインターフェースを介するものかに基づいて、前記受信したアドレスから前記エラーアドレスを決定する、請求項13に記載のメモリバッファ。
【請求項15】
前記データ転送が前記第1のインターフェースを介するものであれば前記受信したアドレスのビット値を反転させることによって、および、前記データ転送が前記第2のインターフェースを介するものであれば前記ビット値を保持することによって、前記受信したアドレスから前記エラーアドレスを決定する、請求項14に記載のメモリバッファ。
【請求項16】
連続して第1のデータアドレスに、次いで、第2のデータアドレスにアクセスすることによって前記データを転送し、
前記データ転送が読み出し動作であれば、前記第1のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること、
前記データ転送が書き込み動作であれば、前記第2のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること
によって前記エラーチェック情報を転送する、請求項13に記載のメモリバッファ。
【請求項17】
前記データ転送が前記第1のインターフェースを介するものかまたは前記第2のインターフェースを介するものかについての指示の受信に応答して、前記エラーチェック情報を転送するための前記エラーアドレスを決定する、請求項13に記載のメモリバッファ。
【請求項18】
前記指示は、1つまたは複数のチップ選択信号を含む、請求項17に記載のメモリバッファ。
【請求項19】
前記指示は、1つまたは複数のアドレスビットを含む、請求項17に記載のメモリバッファ。
【請求項20】
第1のビット幅で前記エラーチェック情報を受信し、前記第1のビット幅より大きい第2のビット幅で前記第3のインターフェースを介して前記エラーチェック情報を送信することによって、前記エラーチェック情報を転送する、請求項13に記載のメモリバッファ。
【請求項21】
第1のビット幅で前記第3のインターフェースを介して前記エラーチェック情報を受信し、前記第1のビット幅より小さい第2のビット幅で前記エラーチェック情報を送信することによって、前記エラーチェック情報を転送する、請求項13に記載のメモリバッファ。
【請求項22】
メモリコントローラであって、
第1のメモリデバイスと通信するための第1のインターフェースおよび第2のメモリデバイスと通信するための第2のインターフェースであって、メモリコントローラは、前記第1のメモリデバイスまたは前記第2のメモリデバイスのそれぞれで前記第1のインターフェースまたは前記第2のインターフェースを介してデータを転送する、第1のインターフェースおよび第2のインターフェースと、
第3のメモリデバイスで前記データに対応するエラーチェック情報を転送するための第3のインターフェースであって、前記メモリコントローラは、前記データ転送が前記第1のインターフェースを介するものかまたは前記第2のインターフェースを介するものかに基づいて、前記エラーチェック情報に対応する前記第3のメモリデバイスにおける位置を示すためのエラーアドレスを決定する、第3のインターフェースと
を備える、メモリコントローラ。
【請求項23】
前記データ転送のための少なくとも1つのアドレスでアクセスし、前記エラーアドレスのビット値は、前記データ転送が前記第1のインターフェースを介するものであれば前記アクセスしたアドレスの対応するビット値から反転され、前記エラーアドレスのビット値は、前記データ転送が前記第2のインターフェースを介するものであれば前記アクセスしたアドレスの対応するビット値と同じである、請求項22に記載のメモリコントローラ。
【請求項24】
連続して第1のデータアドレスに、次いで、第2のデータアドレスにアクセスすることによって前記データを転送し、
前記データ転送が読み出し動作であれば、前記第1のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること、
前記データ転送が書き込み動作であれば、前記第2のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること
によって前記エラーチェック情報を転送する、請求項22に記載のメモリコントローラ。
【請求項25】
メモリバッファにおける動作方法であって、
第1のメモリデバイスでデータを転送するかまたは第2のメモリデバイスでデータを転送するかについての指示を受信することと、
第1のメモリデバイスでデータを転送するかまたは第2のメモリデバイスでデータを転送するかについての指示に応答して、前記データに対応するエラーチェック情報を転送するためのエラーアドレスを決定することであって、前記エラーアドレスは前記エラーチェック情報に対応する第3のメモリデバイスにおける位置を示すことと
を含む、方法。
【請求項26】
前記データ転送のための少なくとも1つのアドレスを受信することをさらに含み、
前記エラーアドレスを決定することは、前記受信したアドレスから前記エラーアドレスを決定することを含む、請求項25に記載の方法。
【請求項27】
前記受信したアドレスから前記エラーアドレスを決定することは、前記データ転送が前記第1のメモリデバイスによるものであれば前記受信したアドレスのビット値を反転させることと、前記データ転送が前記第2のメモリデバイスによるものであれば前記ビット値を保持することとを含む、請求項26に記載の方法。
【請求項28】
前記第1のメモリデバイスまたは前記第2のメモリデバイスのいずれかで前記データを転送することと、前記第3のメモリデバイスで前記エラーチェック情報を転送することとをさらに含む、請求項25に記載の方法。
【請求項29】
連続して第1のデータアドレスに、次いで、第2のデータアドレスにアクセスすることによって前記データを転送し、
前記データ転送が読み出し動作であれば、前記第1のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること、
前記データ転送が書き込み動作であれば、前記第2のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること
によって前記エラーチェック情報を転送する、請求項28に記載の方法。
【請求項30】
第1のビット幅で前記エラーチェック情報を受信することと、前記第1のビット幅より大きい第2のビット幅で前記第3のメモリデバイスに前記エラーチェック情報を送信することとをさらに含む、請求項25に記載の方法。
【請求項31】
第1のビット幅で前記第3のメモリデバイスから前記エラーチェック情報を受信することと、前記第1のビット幅より小さい第2のビット幅で前記エラーチェック情報を送信することとをさらに含む、請求項25に記載の方法。
【請求項32】
メモリデバイスと通信する方法であって、
第1のメモリデバイスまたは第2のメモリデバイスのいずれかでデータを転送することと、第3のメモリデバイスで前記転送したデータに対応するエラーチェック情報を転送することとを含み、
前記エラーチェック情報を転送するためのエラーアドレスは、前記データ転送が前記第1のメモリデバイスによるものかまたは前記第2のメモリデバイスによるものかに応答して決定され、前記エラーアドレスは、前記エラーチェック情報に対応する前記第3のメモリデバイスにおける位置を示す、方法。
【請求項33】
前記データ転送は少なくとも1つのアドレスにアクセスし、前記エラーアドレスは、前記データ転送が前記第1のメモリデバイスによるものであれば前記アクセスしたアドレスのビット値を反転させることによって、および、前記データ転送が前記第2のメモリデバイスによるものであれば前記ビット値を保持することによって決定される、請求項32に記載の方法。
【請求項34】
連続して第1のデータアドレスに、次いで、第2のデータアドレスにアクセスすることによって前記データを転送し、
前記データ転送が読み出し動作であれば、前記第1のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること、
前記データ転送が書き込み動作であれば、前記第2のデータアドレスにアクセスするのと実質的に同時に前記エラーアドレスにアクセスすること
によって前記エラーチェック情報を転送する、請求項32に記載の方法。
【図1】
【図2A】
【図2B】
【図3A】
【図3B】
【図4】
【図5A】
【図5B】
【図6】
【図7】
【図2A】
【図2B】
【図3A】
【図3B】
【図4】
【図5A】
【図5B】
【図6】
【図7】
【公開番号】特開2013−80455(P2013−80455A)
【公開日】平成25年5月2日(2013.5.2)
【国際特許分類】
【外国語出願】
【出願番号】特願2012−180750(P2012−180750)
【出願日】平成24年8月17日(2012.8.17)
【出願人】(501055961)ラムバス・インコーポレーテッド (89)
【Fターム(参考)】
【公開日】平成25年5月2日(2013.5.2)
【国際特許分類】
【出願番号】特願2012−180750(P2012−180750)
【出願日】平成24年8月17日(2012.8.17)
【出願人】(501055961)ラムバス・インコーポレーテッド (89)
【Fターム(参考)】
[ Back to top ]