(57)【要約】      （修正有）【課題】共有されたエラー・ビット・コードをもつ共通フレームにおいてデータおよびデータ・マスク・ビットを転送するシステム、方法および装置を提供する。【解決手段】メモリ・システムは、ホストとメモリ・デバイスとの間でデータを転送するためにデータ・フレームを使用する。システムは（別個のビット・レーンを介してではなく）データ・フレーム内で一つまたは複数のデータ・マスク・ビットも転送してもよい。システムは、データ・ビットおよびデータ・マスク・ビットをカバーするエラー・ビット・チェックサム（巡回冗長符号すなわちCRCのような）を生成してもよい。データ・ビット、データ・マスク・ビットおよびチェックサム・ビットは共通フレームにおいて転送される。【選択図】図１
2010003299.tif 000002
【特許請求の範囲】
【請求項１】
集積回路であって：
当該集積回路からメモリ・デバイスに転送されるべきフレームについてエラー・ビット・カバレッジが有効にされているかどうかを示す論理と；
エラー・ビット・カバレッジが有効にされている場合、前記フレームをカバーするエラー・ビット・チェックサムを生成するエラー・ビット生成論理と；
前記フレームを生成するフレーム処理論理とを有しており、前記フレーム処理論理は、複数のデータ・ビット、複数のデータ・マスク・ビットおよび対応するエラー・ビット・チェックサムをもつ第一のフレーム型を含むいくつかの異なるフレーム型に基づいて前記フレームを生成できる、
集積回路。
【請求項２】
前記フレームが前記第一のフレーム型に基づく、請求項１記載の集積回路。
【請求項３】
前記データ・マスク・ビットDMが前記フレームの上位ビット位置に位置される、請求項２記載の集積回路。
【請求項４】
前記エラー・ビット論理がチェックサムCを、少なくとも部分的には、Qを巡回冗長符号（CRC）生成多項式で割ることに基づいて生成する、請求項３記載の集積回路。
【請求項５】
前記Cが、前記Qを前記CRC生成多項式で割ったときの余りを含む、請求項４記載の集積回路。
【請求項６】
前記CRC生成多項式が、二進法で表現0b0  10010111によって表される、請求項５記載の集積回路。
【請求項７】
前記フレームがx8動的ランダム・アクセス・メモリ（DRAM）・デバイスに転送されるものであり、前記Qが少なくとも部分的に、次の表現：Q[71:0]＝｛DM[7:0].q[63:0]｝に基づく、請求項６記載の集積回路。
【請求項８】
前記CがQ[71:0]を0b0  10010111で割ったときの余りである、請求項７記載の集積回路。
【請求項９】
前記フレーム処理論理が、複数のデータ・ビットおよび対応するエラー・ビット・チェックサムを含む第二のフレーム型に基づいて前記フレームを生成できる、請求項１記載の集積回路。
【請求項１０】
前記フレームが前記第二のフレーム型に基づき、前記メモリ・デバイスがx4の動的ランダム・アクセス・メモリ（DRAM）・デバイスである、請求項９記載の集積回路。
【請求項１１】
前記フレームのビット[71:32]であるQが0と設定される、請求項１０記載の集積回路。
【請求項１２】
前記チェックサムCが、Q[71:0]を0b0  10010111で割ったときの余りである、請求項１１記載の集積回路。
【請求項１３】
当該集積回路と前記メモリ・デバイスとの間で転送されるフレームについての長さを決定するためのフレーム長制御論理をさらに有する、
請求項１記載の集積回路。
【請求項１４】
読み出しトランザクションについて、前記フレーム長制御論理が、エラー・ビット・カバレッジが有効にされていれば単位区間（UI:  unit  interval）N個ぶんのフレーム長さを指定し、エラー・ビット・カバレッジが有効にされていなければUI  M個ぶんのフレーム長さを指定する、請求項１３記載の集積回路。
【請求項１５】
書き込みトランザクションについて、前記フレーム長制御論理が、エラー・ビット・カバレッジが有効にされている場合に、単位区間（UI）N個ぶんのフレーム長を指定する、請求項１３記載の集積回路。
【請求項１６】
書き込みトランザクションについて、前記フレーム長制御論理が、エラー・ビット・カバレッジが有効にされていない場合、完全書き込みフレームについてはUI  N個ぶんのフレーム長を指定し、部分書き込みフレームについてはUI  M個ぶんのフレーム長を指定する、請求項１５記載の集積回路。
【請求項１７】
Nが10であり、Mが8である、請求項１３記載の集積回路。
【請求項１８】
当該集積回路がメモリ・コントローラを含む、請求項１記載の集積回路。
【請求項１９】
少なくとも部分的に、複数のデータ・ビットおよび対応する複数のデータ・マスク・ビットに基づいてエラー・ビット・チェックサムを生成する段階と；
前記複数のデータ・ビット、前記対応する複数のデータ・マスク・ビットおよび前記エラー・ビット・チェックサムを含む書き込みフレームを生成する段階とを有する、
方法。
【請求項２０】
前記書き込みフレームがx8動的ランダム・アクセス・メモリ（DRAM）・デバイスに転送されるものであり、Qが少なくとも部分的に、次の表現：Q[71:0]＝｛DM[7:0].q[63:0]｝に基づく、請求項１９記載の方法。
【請求項２１】
前記エラー・ビット・チェックサムCが、Q[71:0]を0b0  10010111で割ったときの余りである、請求項２０記載の方法。
【請求項２２】
ホストであって：
前記ホストから動的ランダム・アクセス・メモリ（DRAM）・デバイスに転送されるべきフレームについて巡回冗長符号（CRC）カバーが有効にされているかどうかを示す論理と；
CRCカバーが有効にされている場合、前記フレームをカバーするCRCチェックサムを生成するCRC生成論理と；
前記フレームを生成するフレーム処理論理とを有しており、前記フレーム処理論理は、複数のデータ・ビット、複数のデータ・マスク・ビットおよび対応するCRCチェックサムをもつ第一のフレーム型を含むいくつかの異なるフレーム型に基づいて前記フレームを生成できる、ホストと；
前記ホストに結合された前記DRAMデバイスとを有する、
システム。
【請求項２３】
前記DRAMデバイスが、
少なくとも部分的に、前記フレームをCRC生成多項式で割ることに基づいてローカルなCRCチェックサムを生成するCRC生成論理と；
前記ローカルなCRCチェックサムを前記CRCチェックサムと比較する比較論理とを有する、
請求項２２記載のシステム。
【請求項２４】
前記フレームが前記第一のフレーム型に基づく、請求項２３記載のシステム。
【請求項２５】
前記データ・マスク・ビットDMが前記フレームの上位ビット位置に位置される、請求項２４記載のシステム。
【請求項２６】
前記エラー・ビット論理がチェックサムCを、少なくとも部分的には、Qを巡回冗長符号（CRC）生成多項式で割ることに基づいて生成する、請求項２５記載のシステム。
【請求項２７】
前記Cが、前記Qを前記CRC生成多項式で割ったときの余りを含む、請求項２６記載のシステム。
【請求項２８】
前記CRC生成多項式が、二進法で表現0b0  10010111によって表される、請求項２７記載のシステム。
【請求項２９】
前記フレームがx8動的ランダム・アクセス・メモリ（DRAM）・デバイスに転送されるものであり、前記Qが少なくとも部分的に、次の表現：Q[71:0]＝｛DM[7:0].q[63:0]｝に基づく、請求項２８記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の諸実施形態は、概括的には、集積回路の分野に関し、より詳細には、共有されるエラー・ビット・コードをもつ共通フレームにおいてデータおよびデータ・マスク・ビットを転送するためのシステム、方法および装置に関する。
【背景技術】
【０００２】
メモリ・システムは、転送されるデータの少なくとも一部がマスクされるべきであることを示す部分書き込みコマンドを使用することがある。部分書き込みを実装する従来のアプローチは、専用データ・マスク・ピンの使用を含む。たとえば、システムはデータの各バイト・レーンについて専用のデータ・マスク・ピンを含みうる。こうして、x16幅のデバイスは典型的には二つの専用データ・マスク・ピンを含む。データ・マスク・ピンは典型的には、データ信号と同じ周波数でトグルされる。多くの場合、x4デバイスは、誤り訂正符号（ECC:  error  correction  code）をもつサーバーにおいて主として使われ、「読み出し‐修正‐書き込み」動作を実行するので、データ・マスキングをサポートしない。
【０００３】
さらに、メモリ・システムにおいて情報が転送されるレートは上がり続けている。これらのより高速な転送レートは、改善されたエラー・カバレッジ（error  coverage）のための機構の使用を必要とする。エラー・カバレッジを改善するための従来のアプローチは、チャネルにピンを追加することを含む。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
現代のメモリ・システムでは、動的ランダム・アクセス・メモリ（DRAM）・チャネルはピン制約されている（pin  constrained）。よって、エラー・カバレッジを改善することに向けた従来のアプローチは現代のメモリ・システムにとっては好適ではない。
【課題を解決するための手段】
【０００５】
本願発明が解決しようとする課題は、本願請求項記載の発明によって解決される。
【０００６】
本発明の実施形態が、限定ではなく例として、付属の図面の各図に示されている。図面において、同じような参照符号は同様の要素を示す。
【図面の簡単な説明】
【０００７】
【図１】本発明のある実施形態に基づいて実装されるコンピューティング・システムの選択された諸側面を示す高レベルのブロック図である。
【図２】本発明のある実施形態に基づく、データ・マスク・ビットおよび巡回冗長符号ビットをもつx8書き込みフレームの選択された諸側面を示す図である。
【図３】本発明のある実施形態に基づく、x8フレームのより詳細なビット・マッピングを示す図である。
【図４】本発明のある実施形態に基づく、巡回冗長符号ビットをもつx4フレームの選択された諸側面を示す図である。
【図５】本発明のある実施形態に基づいて実装されたホストのための書き込みデータ経路の選択された諸側面を示すブロック図である。
【図６】本発明のある実施形態に基づいて実装されたメモリ・デバイスについての読み出しデータ経路の選択された諸側面を示すブロック図である。
【図７】本発明のある実施形態に基づく、共有されたエラー・ビット・チェックサムをもつ共通フレームにおいてデータおよびデータ・マスク・ビットを転送する方法の選択された諸側面を示す流れ図である。
【発明を実施するための形態】
【０００８】
本発明の諸実施形態は概括的には、共有されたエラー・ビット・コードをもつ共通フレームにおいてデータおよびデータ・マスク・ビットを転送するシステム、方法および装置に向けられる。メモリ・システムは、ホストとメモリ・デバイスとの間でデータを転送するためにデータ・フレームを使用する。いくつかの場合には、システムは（別個のビット・レーンを介してではなく）データ・フレーム内で一つまたは複数のデータ・マスク・ビットも転送してもよい。いくつかの実施形態では、システムは、データ・ビットおよびデータ・マスク・ビットをカバーするエラー・ビット・チェックサム（巡回冗長符号［cyclic  redundancy  code］すなわちCRCのような）を生成する。のちにさらに述べるように、いくつかの実施形態では、データ・ビット、データ・マスク・ビットおよびチェックサム・ビットは共通フレームにおいて転送される。
【０００９】
下記には、伝送誤りについてのエラー・カバレッジを提供するためにCRCが使われる本発明の諸実施形態が記載される。しかしながら、代替的な諸実施形態では、異なるエラー・ビット機構が使用されてもよいことは理解しておくべきである。たとえば、代替的な諸実施形態では、伝送誤りについてのカバレッジを提供するために、パリティ・ビット、誤り訂正符号などが使用されうる。用語「エラー・ビット（error  bit）」（たとえばCRCビット）は、一つまたは複数のデータ・ビットについてのエラー・カバレッジを提供するビットをいう。
【００１０】
図１は、本発明のある実施形態に基づいて実装されたコンピューティング・システムの選択された諸側面を示す高レベルのブロック図である。図示した実施形態では、システム１００はホスト１１０（たとえばメモリ・コントローラ）およびメモリ・デバイス１２０（たとえばDRAM）を含む。代替的な実施形態では、システム１００はより多くの要素、より少ない要素および／または異なる要素を含んでいてもよい。
【００１１】
相互接続１０１はホスト１１０をメモリ・デバイス１２０とリンクする。いくつかの実施形態では、相互接続１０１は（少なくとも部分的には）ポイント・ツー・ポイントの相互接続である。他の実施形態では、相互接続１０１は（少なくとも部分的には）マルチドロップ・バスである。いくつかの実施形態では、相互接続１０１は、倍速データ・レート・バス（double  data  rate  bus）（たとえば、DDR1、DDR2、DDR3、DDR4など）を定義する標準および／または規格の一つまたは複数に少なくとも部分的に準拠する。図示した実施形態では、相互接続１０１はコマンド／アドレス・レーン１０２およびデータ（またはDQ）・レーン１０４を含む。他の実施形態では、相互接続１０１はより多くの要素、より少ない要素および／または異なる要素を含んでいてもよい。
【００１２】
コマンド／アドレス（C/A）・レーン１０２は、メモリ・デバイス１２０にコマンドおよびアドレスを送るための複数のレーンを提供する。DQレーン１０４は双方向の読み出し／書き込みデータ・バスを提供する。代替的な実施形態では、DQレーン１０４は単方向であってもよい。記述の簡単のため、本発明の実施形態は、x8メモリ・デバイスを参照して記載される。しかしながら、本発明の実施形態が、x4、x16、x32等のような他のデバイス・データ幅（device  data  width）を含んでいてもよいことは理解しておくべきである。
【００１３】
ホスト１１０は、メモリ・デバイス１２０への、およびメモリ・デバイス１２０からのデータの転送を制御する。いくつかの実施形態では、ホスト１１０は、一つまたは複数のプロセッサと同じダイ上に統合される。他の実施形態では、ホスト１１０はコンピューティング・システムのチップセットの一部である。ホスト１１０は、データの転送を制御するために、多様なコマンドを使用しうる。たとえば、完全書き込み（full  write）をエンコードするコマンドは「W」として定義されうる。いくつかの実施形態において、ホスト１１０は部分書き込み（partial  write）のためのコマンド（たとえばWm）をサポートする。部分書き込みとは、書き込みデータの少なくとも一部が一つまたは複数のデータ・マスク・ビットを使ってマスクされる書き込み動作をいう。いくつかの実施形態では、データ・マスク・ビットは対応するデータ・ビットと同じフレーム内で転送される。
【００１４】
ホスト１１０は、なかでも、CRC論理１１２、フレーム処理（framing）論理１１４および有効化／無効化（enable/disable）論理１１６を含む。CRC論理１１２は、ホスト１１０がバンド内（in-band）CRC機構をサポートすることを可能にする。たとえば、CRC論理１１２はホスト１１０が、一つまたは複数のデータ・フレームにおいて（たとえばDQレーン１０４を通じて）転送されるCRCチェックサムを生成することを可能にする。いくつかの実施形態では、CRCチェックサムは、部分書き込みフレームについて生成されうる。CRCチェックサムは、書き込みフレーム内のデータ・ビット（の少なくとも一部）およびデータ・マスク・ビット（の少なくとも一部）をカバーしうる。いくつかの実施形態では、データ・ビット、データ・マスク・ビットおよび対応するチェックサムが共通のフレーム内において（たとえばDQレーン１０４を通じて）転送される。
【００１５】
いくつかの実施形態では、データ・フレームをカバーするためのCRCの使用は、選択的に有効化または無効化されることができる。たとえば、図示した実施形態では、ホスト１１０は、CRCの使用を選択的に有効化または無効化する有効化／無効化論理１１６を含んでいる。いくつかの実施形態では、有効化／無効化論理１１６は一つまた複数のレジスタ・ビット（たとえば、モード・レジスタ・セット［mode  register  set］すなわちMRSのビット）を含んでいてもよい。
【００１６】
ホスト１１０は、フレーム処理（framing）論理１１４をも含んでいてもよい。フレーム処理論理１１４は、メモリ・デバイス１２０に転送されるフレームを組み立てる論理を含む。同様に、論理１１４は、メモリ・デバイス１２０から受信されるフレームを分解する論理を含んでいてもよい。いくつかの実施形態では、フレーム処理論理１１４は、二つ以上の型のデータ・フレーム（たとえば、データ・フレーム１０６Ａ、１０６Ｂおよび１０６Ｃ）を組み立てることができる。表１は、本発明のいくつかの実施形態に基づく三つの例示的なフレーム型を示している。代替的な実施形態では他のフレーム型が使用されてもよいことは理解しておくべきである。
【００１７】
【表１】
2010003299.tif 000003
【００１８】
メモリ・デバイス１２０は、システム１００のためのメイン・システム・メモリを（少なくとも部分的に）提供する。いくつかの実施形態では、メモリ・デバイス１２０はDRAMデバイス（たとえば、DDR1、DDR2、DDR3、DDR4など）である。メモリ・デバイス１２０はCRC論理１２２、フレーム処理論理１２４および有効化／無効化論理１２６を含む。いくつかの実施形態では、CRC論理１２２は、メモリ・デバイス１２０がバンド内CRC機構を（たとえばDQライン１０４上で）サポートすることを可能にする。用語「バンド内CRC機構」は、追加的なピンなしでCRC（または他のエラー・ビット方式）をサポートすることをいう。CRC論理１２２は、受信されたデータ・フレームに基づいてローカルなチェックサムを生成するためのCRC生成論理を含みうる。何らかの伝送エラーがあるかどうかを判定するために、このローカルなチェックサムをフレーム内で伝達されたチェックサムと比較することができる。メモリ・デバイス１２０は、伝送エラーが起こったときにホスト１１０に信号伝達してもよい。
【００１９】
フレーム処理論理１２４は、ホスト１１０から転送される諸フレームを組み立てる論理を含む。論理１２４は、ホスト１１０から受信される諸フレームを分解する論理をも含んでいてもよい。いくつかの実施形態では、フレーム処理論理１２４は、二つ以上の型のデータ・フレーム（たとえばデータ・フレーム１０６）を組み立てることができる。
【００２０】
いくつかの実施形態では、データ・フレームをカバーするためのCRCの使用は、選択的に有効化または無効化されることができる。たとえば、図示した実施形態では、メモリ・デバイス１２０は、CRCの使用を選択的に有効化または無効化する有効化／無効化論理１２６を含んでいる。いくつかの実施形態では、有効化／無効化論理１２６は一つまた複数のレジスタ・ビット（たとえば、モード・レジスタ・セットすなわちMRSのビット）を含んでいてもよい。
【００２１】
図２は、本発明のある実施形態に基づく、データ・マスクおよび巡回冗長符号ビットをもつx8書き込みフレームの選択された諸側面を示している。書き込みデータ・フレーム２００は、メモリに書き込まれるデータのフレームを示している。図示した実施形態では、CRCは有効にされ、フレーム２００は部分書き込みフレームである（たとえば、データ・マスク・ビットを含んでいる）。最初の８つのUIは書き込みデータを伝達する（たとえばUI0からUI7）。単位区間８はCRCビット（たとえば、図示した実施形態ではCRCバイト）を伝達する。いくつかの実施形態では、CRCバイトは、データ・バイト（UI0からUI7）ならびにデータ・マスク・バイト（たとえばUI9）をカバーする。単位区間９は、どのデータ・バイトがマスクされるかを決定するデータ・マスク・ビットを伝達する。いくつかの実施形態では、各データ・マスク・ビットは、対応する数をもつデータ・バイトがマスクされるかどうかを決定する（たとえば、DM0はバイト0がマスクされるかどうかを示し、DM1はバイト1がマスクされるかどうかを示す、など）。表２は、本発明のいくつかの実施形態に基づく、データ・マスク・ビットと書き込みデータ・バイトとの間の関連付けを一覧する。代替的な実施形態では、データ・マスク・ビットと書き込みデータ・バイト（またはビット、ニブルなど）との間の関連付けは異なっていてもよい。
【００２２】
【表２】
2010003299.tif 000004
【００２３】
図３は、本発明のある実施形態に基づく、x8フレームのより詳細なビット・マッピングを示している。フレーム２００のように、フレーム３００は最初の８つのUI（UI0からUI7）においてデータ・ビットを伝達する。フレーム３００はまた、UI8においてCRCビットを、UI9においてデータ・マスク・ビットを伝達する。フレーム３００中のデータ・ビットは、CRCビットによって提供されるカバレッジの有効性を高めるために、フレーム３００の諸列にわたって蛇状パターンでマッピングされる。たとえば、UI7において、列のいちばん下（レーンDQ7）のビットはq7である。シーケンス中で次のビットq8はUI6によって定義される列のいちばん下に位置する。同じ列のいちばん上のビットはq15である。シーケンス中の次のビットq16はUI5によって定義される列のいちばん上に位置する。このパターンはフレーム３００の諸列にわたって繰り返される。
【００２４】
いくつかの実施形態では、8ビットCRCのための生成多項式はx8＋x5＋x3＋x2＋x＋1である。二進法では、この多項式は0b0  10010111と表現されうる。いくつかの実施形態では、ホスト（たとえば図１に示したホスト１１０）がCRCチェックサムを生成してもよく、次のアルゴリズムに対する適切な機能的等価物を使って書き込みデータ・フレームを形成しうる（たとえば、データ・マスク・ビットを含むフレームについて）。
１）Q[71:0]＝｛DM[7:0].q[63:0]｝  と設定する
２）CRC[7:0]＝Q[71:0]を0b0  10010111で割ったときの余り  と設定する。
【００２５】
上記アルゴリズムの第一段は、データ・マスク・ビットを書き込みデータ・フレームの上位ビット（MSB's:  the  most  significant  bits）に入れる。これらのビットはゼロにされることができる。データは、ゼロにされていない残りのビット位置（たとえば下位ビット［the  least  significant  bits］）に入れられうる。代替的な実施形態では、異なるアルゴリズムが使用されてもよい。
【００２６】
DRAMはホストによって生成された符号語（たとえばQ[71:0]）を受け取る。いくつかの実施形態では、DRAMは、次のアルゴリズムの適切な機能的等価物を使って受け取った符号語における誤りを検査する。
３）R[7:0]＝Q[71:0]を0b0  10010111で割ったときの余り  と設定する。
４）R[7:0]≠CRC[7:0]であれば、受け取った符号語は一つまたは複数の誤りを含む。
５）DRAMからERROR〔エラー〕信号を使って誤りが報告される。
【００２７】
最初の段（ステップ３）は、受け取った符号語に基づいて「ローカルなチェックサム」を生成する。ローカルなチェックサムは受け取ったチェックサム（たとえば、ステップ２で生成されたチェックサム）と比較される。誤りが検出された場合、DRAMはエラー信号をホストに提供してもよい（たとえばステップ５）。代替的な実施形態では、異なるアルゴリズムが使用されてもよい。
【００２８】
いくつかの実施形態では、生成多項式x8＋x5＋x3＋x2＋x＋1に基づくCRC  XORの式は：0x97  p(x)＝(x＋1)(x7＋x6＋x5＋x2＋1)となる。D(71)およびCRC(7)が最上位ビットであるVHDL式フォーマットでは、XORの式は次のように表されうる。
【００２９】
CRC(0):＝
D(70)  xor  D(69)  xor  D(67)  xor  D(64)  xor  D(63)  xor  D(61)  xor
D(59)  xor  D(58)  xor  D(54)  xor  D(53)  xor  D(51)  xor  D(50)  xor
D(49)  xor  D(46)  xor  D(45)  xor  D(44)  xor  D(42)  xor  D(38)  xor
D(37)  xor  D(36)  xor  D(35)  xor  D(33)  xor  D(32)  xor  D(31)  xor
D(30)  xor  D(27)  xor  D(25)  xor  D(24)  xor  D(23)  xor  D(22)  xor
D(21)  xor  D(15)  xor  D(12)  xor  D(11)  xor  D(10)  xor  D(9)  xor
D(8)  xor  D(7)  xor  D(5)  xor  D(3)  xor  D(0);
CRC(1):＝
D(71)  xor  D(69)  xor  D(68)  xor  D(67)  xor  D(65)  xor  D(63)  xor
D(62)  xor  D(61)  xor  D(60)  xor  D(58)  xor  D(55)  xor  D(53)  xor
D(52)  xor  D(49)  xor  D(47)  xor  D(44)  xor  D(43)  xor  D(42)  xor
D(39)  xor  D(35)  xor  D(34)  xor  D(30)  xor  D(28)  xor  D(27)  xor
D(26)  xor  D(21)  xor  D(16)  xor  D(15)  xor  D(13)  xor  D(7)  xor
D(6)  xor  D(5)  xor  D(4)  xor  D(3)  xor  D(1)  xor  D(0);
CRC(2):＝
D(68)  xor  D(67)  xor  D(66)  xor  D(62)  xor  D(58)  xor  D(56)  xor
D(51)  xor  D(49)  xor  D(48)  xor  D(46)  xor  D(43)  xor  D(42)  xor
D(40)  xor  D(38)  xor  D(37)  xor  D(33)  xor  D(32)  xor  D(30)  xor
D(29)  xor  D(28)  xor  D(25)  xor  D(24)  xor  D(23)  xor  D(21)  xor
D(17)  xor  D(16)  xor  D(15)  xor  D(14)  xor  D(12)  xor  D(11)  xor
D(10)  xor  D(9)  xor  D(6)  xor  D(4)  xor  D(3)  xor  D(2)  xor
D(1)  xor  D(0);
CRC(3):＝
D(70)  xor  D(68)  xor  D(64)  xor  D(61)  xor  D(58)  xor  D(57)  xor
D(54)  xor  D(53)  xor  D(52)  xor  D(51)  xor  D(47)  xor  D(46)  xor
D(45)  xor  D(43)  xor  D(42)  xor  D(41)  xor  D(39)  xor  D(37)  xor
D(36)  xor  D(35)  xor  D(34)  xor  D(32)  xor  D(29)  xor  D(27)  xor
D(26)  xor  D(23)  xor  D(21)  xor  D(18)  xor  D(17)  xor  D(16)  xor
D(13)  xor  D(9)  xor  D(8)  xor  D(4)  xor  D(2)  xor  D(1)  xor
D(0);
CRC(4):＝
D(71)  xor  D(69)  xor  D(65)  xor  D(62)  xor  D(59)  xor  D(58)  xor
D(55)  xor  D(54)  xor  D(53)  xor  D(52)  xor  D(48)  xor  D(47)  xor
D(46)  xor  D(44)  xor  D(43)  xor  D(42)  xor  D(40)  xor  D(38)  xor
D(37)  xor  D(36)  xor  D(35)  xor  D(33)  xor  D(30)  xor  D(28)  xor
D(27)  xor  D(24)  xor  D(22)  xor  D(19)  xor  D(18)  xor  D(17)  xor
D(14)  xor  D(10)  xor  D(9)  xor  D(5)  xor  D(3)  xor  D(2)  xor
D(1);
CRC(5):＝
D(69)  xor  D(67)  xor  D(66)  xor  D(64)  xor  D(61)  xor  D(60)  xor
D(58)  xor  D(56)  xor  D(55)  xor  D(51)  xor  D(50)  xor  D(48)  xor
D(47)  xor  D(46)  xor  D(43)  xor  D(42)  xor  D(41)  xor  D(39)  xor
D(35)  xor  D(34)  xor  D(33)  xor  D(32)  xor  D(30)  xor  D(29)  xor
D(28)  xor  D(27)  xor  D(24)  xor  D(22)  xor  D(21)  xor  D(20)  xor
D(19)  xor  D(18)  xor  D(12)  xor  D(9)  xor  D(8)  xor  D(7)  xor
D(6)  xor  D(5)  xor  D(4)  xor  D(2)  xor  D(0);
CRC(6):＝
D(70)  xor  D(68)  xor  D(67)  xor  D(65)  xor  D(62)  xor  D(61)  xor
D(59)  xor  D(57)  xor  D(56)  xor  D(52)  xor  D(51)  xor  D(49)  xor
D(48)  xor  D(47)  xor  D(44)  xor  D(43)  xor  D(42)  xor  D(40)  xor
D(36)  xor  D(35)  xor  D(34)  xor  D(33)  xor  D(31)  xor  D(30)  xor
D(29)  xor  D(28)  xor  D(25)  xor  D(23)  xor  D(22)  xor  D(21)  xor
D(20)  xor  D(19)  xor  D(13)  xor  D(10)  xor  D(9)  xor  D(8)  xor
D(7)  xor  D(6)  xor  D(5)  xor  D(3)  xor  D(1);
CRC(7):＝
D(71)  xor  D(69)  xor  D(68)  xor  D(66)  xor  D(63)  xor  D(62)  xor
D(60)  xor  D(58)  xor  D(57)  xor  D(53)  xor  D(52)  xor  D(50)  xor
D(49)  xor  D(48)  xor  D(45)  xor  D(44)  xor  D(43)  xor  D(41)  xor
D(37)  xor  D(36)  xor  D(35)  xor  D(34)  xor  D(32)  xor  D(31)  xor
D(30)  xor  D(29)  xor  D(26)  xor  D(24)  xor  D(23)  xor  D(22)  xor
D(21)  xor  D(20)  xor  D(14)  xor  D(11)  xor  D(10)  xor  D(9)  xor
D(8)  xor  D(7)  xor  D(6)  xor  D(4)  xor  D(2)。
【００３０】
図４は、本発明のある実施形態に基づく、巡回冗長符号ビットをもつx4フレームの選択された諸側面を示している。フレーム４００は最初の８つのUI（UI0からUI7）でデータ・ビットを伝達する。フレーム４００はUI8およびUI9においてCRCビットも伝達する。図示した実施形態では、フレーム４００はデータ・マスク・ビットは含まない。というのも、多くの場合、x4デバイスは、主として誤り訂正符号（ECC）をもち「読み出し‐修正‐書き込み」動作を実行するサーバーで使われるのでデータ・マスキングをサポートしないからである。フレーム４００中のデータ・ビットは、CRCビットによって提供されるカバレッジの有効性を高めるためにフレーム４００の諸列にわたって蛇状パターンでマッピングされる。
【００３１】
図５は、本発明のある実施形態に基づいて実装されたホストについての書き込みデータ経路の選択された諸側面を示すブロック図である。ホスト５００は、なかでも、コア論理５０２、CRC発生器５０４および送信（TX）フレーム処理ユニット５０６を含む。代替的な実施形態では、ホスト５００はより多くの要素、より少ない要素および／または異なる要素を含む。コア論理５０２は、たとえば、メイン・メモリへの読み出しおよび書き込みをスケジューリングするためのスケジューリング論理ならびに伝送エラーが起こったときに動作を再試行する再試行論理を含む。さらに、コア論理５０２は、対応する書き込みデータ・ビット５１０の少なくとも一部をマスクするためのデータ・マスク・ビット５０８を発生させる論理を含む。
【００３２】
動作では、コア論理５０２は、たとえば、部分書き込み動作をスケジューリングし、書き込みデータ（５１０）および対応するデータ・マスク・ビット（５０８）をTXフレーム処理ユニット５０６およびCRC発生器５０４に提供する。いくつかの実施形態では、CRC発生器５０４は、書き込みデータおよびデータ・マスク・ビットに基づいてCRCチェックサムを生成する。６レベルのXOR木を使ってCRCチェックサムを計算するアルゴリズムを含め、幅広いCRCアルゴリズムが採用されることができる。代替的な実施形態では、CRCチェックサムを生成するために異なる数のXOR木または異なるアルゴリズムが使用されてもよい。いくつかの実施形態では、書き込みデータ経路および読み出しデータ経路は、CRCチェックサムを生成するために同じXOR木を使用する。
【００３３】
TXフレーム処理ユニット（TX  framing  unit）５０６は、書き込みデータ（５１０）、データ・マスク・ビット（５０８）および対応するCRCチェックサムを一つまたは複数の書き込みデータ・フレーム（たとえば書き込みデータ・フレーム５１２）にフレーム化する。いくつかの実施形態では、TXフレーム処理ユニット５０６は、CRCが有効にされているかどうかやDRAMの幅といった因子に依存して、異なるフレーム型を生成することができる。たとえば、TXフレーム処理ユニット５０６は、CRC8、64個のデータ・ビットおよび8つのデータ・マスク・ビットを含む第一のフレーム型を生成することができてもよい（たとえばx8デバイスについて）。TXフレーム処理ユニット５０６はまた、CRC8および64個のデータ・ビットをもつ第二のフレーム型を生成することができてもよい（たとえばx8デバイスについて）。ホスト５００がx4デバイスと結合される場合には、TXフレーム処理ユニット５０６は、32ビット上のCRC8をもつ第三のフレーム型をサポートしてもよい。代替的な実施形態では、より多くのフレーム型、より少ないフレーム型および／または異なるフレーム型がサポートされてもよい。書き込みデータ・フレーム（単数または複数）（５１２）は、DQバスを介して一つまたは複数のメモリ・デバイス（たとえばDRAM）に転送される。
【００３４】
図６は、本発明のある実施形態に基づいて実装されたメモリ・デバイスについての読み出しデータ経路の選択された諸側面を示すブロック図である。メモリ・デバイス６００は、なかでも、メモリ・アレイ６０２、送信（TX）フレーム処理ユニット６０４、CRC発生器６０６およびCRC無効化論理６０８を含む。代替的な実施形態では、メモリ・デバイス６００はより多くの要素、より少ない要素および／または異なる要素を含んでいてもよい。いくつかの実施形態では、メモリ・デバイス６００は動的ランダム・アクセス・メモリ・デバイス（DRAM）である。
【００３５】
動作では、メモリ・デバイス６００は、ホスト（たとえばホスト１１０）からの読み出しコマンドをC/Aバス（たとえばC/Aバス１０２）上で受信する。メモリ・アレイ６０２からデータが読み出され、TXフレーム処理ユニット６０４に与えられる。読み出しデータはCRCチェックサムを計算するCRC発生器６０６にも与えられる。いくつかの実施形態では、６レベルのXOR木を使ってCRCチェックサムが計算される。代替的な実施形態では、CRCチェックサムを生成するために異なる数のXOR木または異なるアルゴリズムが使用されてもよい。いくつかの実施形態では、読み出しデータ経路および書き込みデータ経路は、CRCチェックサムを生成するために同じXOR木を使用する。
【００３６】
TXフレーム処理ユニット６０４は、読み出しデータ・ビットおよびチェックサム・ビットを受け取り、それらを書き込みデータ・フレームにフレーム化する。いくつかの実施形態では、TXフレーム処理ユニット６０４は、たとえばCRCが有効にされているかどうかに依存して、異なるフレーム型を使うことができる。たとえば、TXフレーム処理ユニット６０４は、CRCが有効にされている場合には第一のフレーム型を、CRCが無効にされている場合には第二のフレーム型を使ってもよい。第一のフレーム型は、読み出しデータ・ビットおよび対応するCRCチェックサムを含んでいてもよい。第二のフレーム型は、CRCチェックサムなしで読み出しデータ・ビットを含んでいてもよい。メモリ・デバイス６００は、読み出しデータ・フレーム（CRCチェックサムありまたはなし）をDQバス６１０を介してホストに転送しうる。
【００３７】
メモリ・デバイス６００は、CRC無効化論理６０８を含む。いくつかの実施形態では、CRC無効化論理６０８はメモリ・デバイス６００によるCRCの使用を無効にする。こうして、いくつかの実施形態では、メモリ・デバイス６００は、読み出しデータとともにCRCチェックサムを使用するよう構成されることができ、あるいは読み出しデータとともに（および／または書き込みデータとともに）CRCチェックサムを使用しないよう構成されることができる。いくつかの実施形態では、CRC無効化論理は、モード・レジスタ・セット（MRS）の一部を含む。
【００３８】
図７は、本発明のある実施形態に基づく、共有されたエラー・ビット・チェックサムをもつ共通フレームにおいてデータおよびデータ・マスク・ビットを転送する方法の選択された諸側面を示す流れ図である。プロセス・ブロック７０２を参照すると、ホスト（たとえばメモリ・コントローラ）は、複数のデータ・ビットについての伝送誤りをカバーし、一つまたは複数のデータ・マスク・ビットをカバーする（たとえば部分書き込み動作について）エラー・ビット・チェックサム（たとえばCRCチェックサム）を生成する。いくつかの実施形態では、ホストはCRCチェックサムを生成するためのCRC発生器を含む。ホストは、読み出しデータ経路および書き込みデータ経路について同じCRC木を使用してもよい。
【００３９】
プロセス・ブロック７０４を参照すると、ホストは（たとえば図５に示した送信フレーム処理ユニット５０６を使って）前記複数のデータ・ビットを一つまたは複数のデータ・フレームにフレーム化する。いくつかの実施形態では、ホストはCRCが有効にされているかどうかおよび／または部分書き込みと全書き込みのどちらが実行されているかに依存して異なるフレーム型を生成できる。前記一つまたは複数のデータ・フレームは、７０６においてデータ・バスを介してメモリ・デバイス（たとえばDRAM）に転送される。
【００４０】
いくつかの実施形態では、DRAMは、ホストによって提供されるフレーム内に含まれるCRCチェックサムを使って、伝送エラーが発生したかどうかを判定する。たとえば、DRAMは（受け取ったデータに基づいて）「ローカルな」CRCチェックサムを生成し、ローカルなチェックサムを受け取ったチェックサムを比較してもよい。伝送エラーが発生していた場合、DRAMはエラー信号をホストに送ってもよい。判断ブロック７０８を参照すると、ホストがエラー信号を受け取る場合、ホストはデータを再送信する（７１０）。あるいはまた、ホストがエラー信号を受け取らない場合、データは有効でありうる（７１２）。
【００４１】
本発明の諸実施形態の諸要素は、機械実行可能命令を記憶する機械可読媒体として提供されてもよい。機械可読媒体は、これに限られないが、フラッシュメモリ、光ディスク、コンパクト・ディスク読み出し専用メモリ（CD-ROM）、デジタル多用途／ビデオ・ディスク（DVD）ROM、ランダム・アクセス・メモリ（RAM）、消去可能なプログラム可能型読み出し専用メモリ（EPROM）、電気的に消去可能なプログラム可能型読み出し専用メモリ（EEPROM）、磁気カードもしくは光カード、伝搬媒体または電子的な命令を記憶するために好適な他の型の機械可読媒体を含みうる。たとえば、本発明の諸実施形態は、リモート・コンピュータ（たとえばサーバー）から要求元コンピュータ（たとえばクライアント）に、通信リンク（たとえばモデムまたはネットワーク接続）を介して搬送波または他の伝搬媒体において具現されるデータ信号によって転送されうるコンピュータ・プログラムとしてダウンロードされてもよい。
【００４２】
上記の記述では、本発明の実施形態を記述するためにある種の用語法が使用されている。たとえば、用語「論理（logic）」は、一つまたは複数の機能を実行するためのハードウェア、ファームウェア、ソフトウェア（またはその任意の組み合わせ）を表す。たとえば、「ハードウェア」の例は、これに限られないが、集積回路、有限状態機械またさらには組み合わせ論理（combinatorial  logic）を含む。集積回路は、マイクロプロセッサのようなプロセッサ、特定用途向け集積回路（application  specific  integrated  circuit）、デジタル信号プロセッサ、マイクロコントローラなどの形を取ってもよい。
【００４３】
本明細書を通じて「一つの実施形態」または「ある実施形態」という言及は、その実施形態との関連で記述される特定の特徴、構造または特性が、本発明の少なくとも一つの実施形態に含まれることを意味することを理解しておくべきである。したがって、本明細書のさまざまな箇所で「ある実施形態」または「一つの実施形態」または「代替的な実施形態」という二つ以上の言及があっても、それは必ずしもすべてが同じ実施形態を指しているのではないことがここに強調され、理解されるべきである。さらに、特定の特徴、構造または特性は、本発明の一つまたは複数の実施形態において適宜組み合わされてもよい。
【００４４】
同様に、本発明の実施形態の以上の記述において、開示の流れをよくしてさまざまな本発明の側面の一つまたは複数の理解を助ける目的で、さまざまな特徴が時に単一の実施形態、図面またはその説明においてまとめられている。しかしながら、そうした開示方法は、特許請求される主題が、各請求項において明示的に記載されているよりも多くの特徴を必要とするという意図を反映するものと解釈されるべきではない。さらに、以下の請求項が反映するように、本発明の諸側面は、上記の単一の開示された実施形態の全特徴よりも少ないものに存する。よって、付属の請求項はここに明示的にこの詳細な説明に組み込まれる。
【符号の説明】
【００４５】
１００  システム
１０２  コマンド／アドレス・レーン（C/Aレーン）
１０４  データ・レーン（DQレーン）
１０６  データ・フレーム
１１０  ホスト（たとえばメモリ・コントローラ）
１１２  CRC論理
１１４  フレーム処理論理
１１６  有効化／無効化論理
１２０  メモリ・デバイス（たとえばDRAM）
１２２  CRC論理
１２４  フレーム処理論理
１２６  有効化／無効化論理
２００  x8フレーム
３００  x8フレーム
４００  x4フレーム
５００  ホスト
５０２  コア論理
５０４  CRC生成器
５０６  TXフレーム処理ユニット
５０８  データ・マスク・ビット
５１０  データ・ビット
５１２  書き込みデータ・フレーム
６００  メモリ・デバイス
６１０  バス
６０２  メモリ・アレイ
６０４  TXフレーム処理ユニット
６０６  Rd_CRC生成器
６０８  CRC無効化論理
７０２  少なくとも部分的に複数のデータ・ビットおよび対応する複数のデータ・マスク・ビットに基づいてエラー・ビット・チェックサムを生成
７０４  複数のデータ・ビット、対応する複数のデータ・マスク・ビットおよびエラー・ビット・チェックサムを含む書き込みフレームを生成
７０６  書き込みフレームを動的ランダム・アクセス・メモリ（DRAM）・デバイスに転送
７０８  受信エラー？
７１０  データ再送信
７１２  データは有効
【図１】
2010003299.tif 000005
【図２】
2010003299.tif 000006
【図３】
2010003299.tif 000007
【図４】
2010003299.tif 000008
【図５】
2010003299.tif 000009
【図６】
2010003299.tif 000010
【図７】
2010003299.tif 000011