説明

共有されるエラー・ビット・コードをもつ共通フレームにおいてデータおよびデータ・マスク・ビットを転送するためのシステム、方法および装置

【課題】共有されるエラー・ビット・コードをもつ共通フレームにおいてデータおよびデータ・マスク・ビットを転送するためのシステム、方法および装置を提供する。
【解決手段】メモリ・システム100は、ホスト110とメモリ・デバイス120との間でデータを転送するためにデータ・フレームを使用する。いくつかの場合には、システムは(別個のビット・レーンを介してではなく)データ・フレーム内で一つまたは複数のデータ・マスク・ビットも転送してもよい。システムは、データ・ビットおよびデータ・マスク・ビットをカバーするエラー・ビット・チェックサム(巡回冗長符号すなわちCRCのような)を生成してもよい。いくつかの実施形態では、データ・ビット、データ・マスク・ビットおよびチェックサム・ビットは共通フレームにおいて転送される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の諸実施形態は、概括的には、集積回路の分野に関し、より詳細には、共有されるエラー・ビット・コードをもつ共通フレームにおいてデータおよびデータ・マスク・ビットを転送するためのシステム、方法および装置に関する。
【背景技術】
【0002】
メモリ・システムは、転送されるデータの少なくとも一部がマスクされるべきであることを示す部分書き込みコマンドを使用することがある。部分書き込みを実装する従来のアプローチは、専用データ・マスク・ピンの使用を含む。たとえば、システムはデータの各バイト・レーンについて専用のデータ・マスク・ピンを含みうる。こうして、x16幅のデバイスは典型的には二つの専用データ・マスク・ピンを含む。データ・マスク・ピンは典型的には、データ信号と同じ周波数でトグルされる。多くの場合、x4デバイスは、誤り訂正符号(ECC: error correction code)をもつサーバーにおいて主として使われ、「読み出し‐修正‐書き込み」動作を実行するので、データ・マスキングをサポートしない。
【0003】
さらに、メモリ・システムにおいて情報が転送されるレートは上がり続けている。これらのより高速な転送レートは、改善されたエラー・カバレッジ(error coverage)のための機構の使用を必要とする。エラー・カバレッジを改善するための従来のアプローチは、チャネルにピンを追加することを含む。
【発明の概要】
【発明が解決しようとする課題】
【0004】
現代のメモリ・システムでは、動的ランダム・アクセス・メモリ(DRAM)・チャネルはピン制約されている(pin constrained)。よって、エラー・カバレッジを改善することに向けた従来のアプローチは現代のメモリ・システムにとっては好適ではない。
【課題を解決するための手段】
【0005】
本願発明が解決しようとする課題は、本願請求項記載の発明によって解決される。
【0006】
本発明の実施形態が、限定ではなく例として、付属の図面の各図に示されている。図面において、同じような参照符号は同様の要素を示す。
【図面の簡単な説明】
【0007】
【図1】本発明のある実施形態に基づいて実装されるコンピューティング・システムの選択された諸側面を示す高レベルのブロック図である。
【図2】本発明のある実施形態に基づく、データ・マスク・ビットおよび巡回冗長符号ビットをもつx8書き込みフレームの選択された諸側面を示す図である。
【図3】本発明のある実施形態に基づく、x8フレームのより詳細なビット・マッピングを示す図である。
【図4】本発明のある実施形態に基づく、巡回冗長符号ビットをもつx4フレームの選択された諸側面を示す図である。
【図5】本発明のある実施形態に基づいて実装されたホストのための書き込みデータ経路の選択された諸側面を示すブロック図である。
【図6】本発明のある実施形態に基づいて実装されたメモリ・デバイスについての読み出しデータ経路の選択された諸側面を示すブロック図である。
【図7】本発明のある実施形態に基づく、共有されたエラー・ビット・チェックサムをもつ共通フレームにおいてデータおよびデータ・マスク・ビットを転送する方法の選択された諸側面を示す流れ図である。
【発明を実施するための形態】
【0008】
本発明の諸実施形態は概括的には、共有されたエラー・ビット・コードをもつ共通フレームにおいてデータおよびデータ・マスク・ビットを転送するシステム、方法および装置に向けられる。メモリ・システムは、ホストとメモリ・デバイスとの間でデータを転送するためにデータ・フレームを使用する。いくつかの場合には、システムは(別個のビット・レーンを介してではなく)データ・フレーム内で一つまたは複数のデータ・マスク・ビットも転送してもよい。いくつかの実施形態では、システムは、データ・ビットおよびデータ・マスク・ビットをカバーするエラー・ビット・チェックサム(巡回冗長符号[cyclic redundancy code]すなわちCRCのような)を生成する。のちにさらに述べるように、いくつかの実施形態では、データ・ビット、データ・マスク・ビットおよびチェックサム・ビットは共通フレームにおいて転送される。
【0009】
下記には、伝送誤りについてのエラー・カバレッジを提供するためにCRCが使われる本発明の諸実施形態が記載される。しかしながら、代替的な諸実施形態では、異なるエラー・ビット機構が使用されてもよいことは理解しておくべきである。たとえば、代替的な諸実施形態では、伝送誤りについてのカバレッジを提供するために、パリティ・ビット、誤り訂正符号などが使用されうる。用語「エラー・ビット(error bit)」(たとえばCRCビット)は、一つまたは複数のデータ・ビットについてのエラー・カバレッジを提供するビットをいう。
【0010】
図1は、本発明のある実施形態に基づいて実装されたコンピューティング・システムの選択された諸側面を示す高レベルのブロック図である。図示した実施形態では、システム100はホスト110(たとえばメモリ・コントローラ)およびメモリ・デバイス120(たとえばDRAM)を含む。代替的な実施形態では、システム100はより多くの要素、より少ない要素および/または異なる要素を含んでいてもよい。
【0011】
相互接続101はホスト110をメモリ・デバイス120とリンクする。いくつかの実施形態では、相互接続101は(少なくとも部分的には)ポイント・ツー・ポイントの相互接続である。他の実施形態では、相互接続101は(少なくとも部分的には)マルチドロップ・バスである。いくつかの実施形態では、相互接続101は、倍速データ・レート・バス(double data rate bus)(たとえば、DDR1、DDR2、DDR3、DDR4など)を定義する標準および/または規格の一つまたは複数に少なくとも部分的に準拠する。図示した実施形態では、相互接続101はコマンド/アドレス・レーン102およびデータ(またはDQ)・レーン104を含む。他の実施形態では、相互接続101はより多くの要素、より少ない要素および/または異なる要素を含んでいてもよい。
【0012】
コマンド/アドレス(C/A)・レーン102は、メモリ・デバイス120にコマンドおよびアドレスを送るための複数のレーンを提供する。DQレーン104は双方向の読み出し/書き込みデータ・バスを提供する。代替的な実施形態では、DQレーン104は単方向であってもよい。記述の簡単のため、本発明の実施形態は、x8メモリ・デバイスを参照して記載される。しかしながら、本発明の実施形態が、x4、x16、x32等のような他のデバイス・データ幅(device data width)を含んでいてもよいことは理解しておくべきである。
【0013】
ホスト110は、メモリ・デバイス120への、およびメモリ・デバイス120からのデータの転送を制御する。いくつかの実施形態では、ホスト110は、一つまたは複数のプロセッサと同じダイ上に統合される。他の実施形態では、ホスト110はコンピューティング・システムのチップセットの一部である。ホスト110は、データの転送を制御するために、多様なコマンドを使用しうる。たとえば、完全書き込み(full write)をエンコードするコマンドは「W」として定義されうる。いくつかの実施形態において、ホスト110は部分書き込み(partial write)のためのコマンド(たとえばWm)をサポートする。部分書き込みとは、書き込みデータの少なくとも一部が一つまたは複数のデータ・マスク・ビットを使ってマスクされる書き込み動作をいう。いくつかの実施形態では、データ・マスク・ビットは対応するデータ・ビットと同じフレーム内で転送される。
【0014】
ホスト110は、なかでも、CRC論理112、フレーム処理(framing)論理114および有効化/無効化(enable/disable)論理116を含む。CRC論理112は、ホスト110がバンド内(in-band)CRC機構をサポートすることを可能にする。たとえば、CRC論理112はホスト110が、一つまたは複数のデータ・フレームにおいて(たとえばDQレーン104を通じて)転送されるCRCチェックサムを生成することを可能にする。いくつかの実施形態では、CRCチェックサムは、部分書き込みフレームについて生成されうる。CRCチェックサムは、書き込みフレーム内のデータ・ビット(の少なくとも一部)およびデータ・マスク・ビット(の少なくとも一部)をカバーしうる。いくつかの実施形態では、データ・ビット、データ・マスク・ビットおよび対応するチェックサムが共通のフレーム内において(たとえばDQレーン104を通じて)転送される。
【0015】
いくつかの実施形態では、データ・フレームをカバーするためのCRCの使用は、選択的に有効化または無効化されることができる。たとえば、図示した実施形態では、ホスト110は、CRCの使用を選択的に有効化または無効化する有効化/無効化論理116を含んでいる。いくつかの実施形態では、有効化/無効化論理116は一つまた複数のレジスタ・ビット(たとえば、モード・レジスタ・セット[mode register set]すなわちMRSのビット)を含んでいてもよい。
【0016】
ホスト110は、フレーム処理(framing)論理114をも含んでいてもよい。フレーム処理論理114は、メモリ・デバイス120に転送されるフレームを組み立てる論理を含む。同様に、論理114は、メモリ・デバイス120から受信されるフレームを分解する論理を含んでいてもよい。いくつかの実施形態では、フレーム処理論理114は、二つ以上の型のデータ・フレーム(たとえば、データ・フレーム106A、106Bおよび106C)を組み立てることができる。表1は、本発明のいくつかの実施形態に基づく三つの例示的なフレーム型を示している。代替的な実施形態では他のフレーム型が使用されてもよいことは理解しておくべきである。
【0017】
【表1】

【0018】
メモリ・デバイス120は、システム100のためのメイン・システム・メモリを(少なくとも部分的に)提供する。いくつかの実施形態では、メモリ・デバイス120はDRAMデバイス(たとえば、DDR1、DDR2、DDR3、DDR4など)である。メモリ・デバイス120はCRC論理122、フレーム処理論理124および有効化/無効化論理126を含む。いくつかの実施形態では、CRC論理122は、メモリ・デバイス120がバンド内CRC機構を(たとえばDQライン104上で)サポートすることを可能にする。用語「バンド内CRC機構」は、追加的なピンなしでCRC(または他のエラー・ビット方式)をサポートすることをいう。CRC論理122は、受信されたデータ・フレームに基づいてローカルなチェックサムを生成するためのCRC生成論理を含みうる。何らかの伝送エラーがあるかどうかを判定するために、このローカルなチェックサムをフレーム内で伝達されたチェックサムと比較することができる。メモリ・デバイス120は、伝送エラーが起こったときにホスト110に信号伝達してもよい。
【0019】
フレーム処理論理124は、ホスト110から転送される諸フレームを組み立てる論理を含む。論理124は、ホスト110から受信される諸フレームを分解する論理をも含んでいてもよい。いくつかの実施形態では、フレーム処理論理124は、二つ以上の型のデータ・フレーム(たとえばデータ・フレーム106)を組み立てることができる。
【0020】
いくつかの実施形態では、データ・フレームをカバーするためのCRCの使用は、選択的に有効化または無効化されることができる。たとえば、図示した実施形態では、メモリ・デバイス120は、CRCの使用を選択的に有効化または無効化する有効化/無効化論理126を含んでいる。いくつかの実施形態では、有効化/無効化論理126は一つまた複数のレジスタ・ビット(たとえば、モード・レジスタ・セットすなわちMRSのビット)を含んでいてもよい。
【0021】
図2は、本発明のある実施形態に基づく、データ・マスクおよび巡回冗長符号ビットをもつx8書き込みフレームの選択された諸側面を示している。書き込みデータ・フレーム200は、メモリに書き込まれるデータのフレームを示している。図示した実施形態では、CRCは有効にされ、フレーム200は部分書き込みフレームである(たとえば、データ・マスク・ビットを含んでいる)。最初の8つのUIは書き込みデータを伝達する(たとえばUI0からUI7)。単位区間8はCRCビット(たとえば、図示した実施形態ではCRCバイト)を伝達する。いくつかの実施形態では、CRCバイトは、データ・バイト(UI0からUI7)ならびにデータ・マスク・バイト(たとえばUI9)をカバーする。単位区間9は、どのデータ・バイトがマスクされるかを決定するデータ・マスク・ビットを伝達する。いくつかの実施形態では、各データ・マスク・ビットは、対応する数をもつデータ・バイトがマスクされるかどうかを決定する(たとえば、DM0はバイト0がマスクされるかどうかを示し、DM1はバイト1がマスクされるかどうかを示す、など)。表2は、本発明のいくつかの実施形態に基づく、データ・マスク・ビットと書き込みデータ・バイトとの間の関連付けを一覧する。代替的な実施形態では、データ・マスク・ビットと書き込みデータ・バイト(またはビット、ニブルなど)との間の関連付けは異なっていてもよい。
【0022】
【表2】

【0023】
図3は、本発明のある実施形態に基づく、x8フレームのより詳細なビット・マッピングを示している。フレーム200のように、フレーム300は最初の8つのUI(UI0からUI7)においてデータ・ビットを伝達する。フレーム300はまた、UI8においてCRCビットを、UI9においてデータ・マスク・ビットを伝達する。フレーム300中のデータ・ビットは、CRCビットによって提供されるカバレッジの有効性を高めるために、フレーム300の諸列にわたって蛇状パターンでマッピングされる。たとえば、UI7において、列のいちばん下(レーンDQ7)のビットはq7である。シーケンス中で次のビットq8はUI6によって定義される列のいちばん下に位置する。同じ列のいちばん上のビットはq15である。シーケンス中の次のビットq16はUI5によって定義される列のいちばん上に位置する。このパターンはフレーム300の諸列にわたって繰り返される。
【0024】
いくつかの実施形態では、8ビットCRCのための生成多項式はx8+x5+x3+x2+x+1である。二進法では、この多項式は0b0 10010111と表現されうる。いくつかの実施形態では、ホスト(たとえば図1に示したホスト110)がCRCチェックサムを生成してもよく、次のアルゴリズムに対する適切な機能的等価物を使って書き込みデータ・フレームを形成しうる(たとえば、データ・マスク・ビットを含むフレームについて)。
1)Q[71:0]={DM[7:0].q[63:0]} と設定する
2)CRC[7:0]=Q[71:0]を0b0 10010111で割ったときの余り と設定する。
【0025】
上記アルゴリズムの第一段は、データ・マスク・ビットを書き込みデータ・フレームの上位ビット(MSB's: the most significant bits)に入れる。これらのビットはゼロにされることができる。データは、ゼロにされていない残りのビット位置(たとえば下位ビット[the least significant bits])に入れられうる。代替的な実施形態では、異なるアルゴリズムが使用されてもよい。
【0026】
DRAMはホストによって生成された符号語(たとえばQ[71:0])を受け取る。いくつかの実施形態では、DRAMは、次のアルゴリズムの適切な機能的等価物を使って受け取った符号語における誤りを検査する。
3)R[7:0]=Q[71:0]を0b0 10010111で割ったときの余り と設定する。
4)R[7:0]≠CRC[7:0]であれば、受け取った符号語は一つまたは複数の誤りを含む。
5)DRAMからERROR〔エラー〕信号を使って誤りが報告される。
【0027】
最初の段(ステップ3)は、受け取った符号語に基づいて「ローカルなチェックサム」を生成する。ローカルなチェックサムは受け取ったチェックサム(たとえば、ステップ2で生成されたチェックサム)と比較される。誤りが検出された場合、DRAMはエラー信号をホストに提供してもよい(たとえばステップ5)。代替的な実施形態では、異なるアルゴリズムが使用されてもよい。
【0028】
いくつかの実施形態では、生成多項式x8+x5+x3+x2+x+1に基づくCRC XORの式は:0x97 p(x)=(x+1)(x7+x6+x5+x2+1)となる。D(71)およびCRC(7)が最上位ビットであるVHDL式フォーマットでは、XORの式は次のように表されうる。
【0029】
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)。
【0030】
図4は、本発明のある実施形態に基づく、巡回冗長符号ビットをもつx4フレームの選択された諸側面を示している。フレーム400は最初の8つのUI(UI0からUI7)でデータ・ビットを伝達する。フレーム400はUI8およびUI9においてCRCビットも伝達する。図示した実施形態では、フレーム400はデータ・マスク・ビットは含まない。というのも、多くの場合、x4デバイスは、主として誤り訂正符号(ECC)をもち「読み出し‐修正‐書き込み」動作を実行するサーバーで使われるのでデータ・マスキングをサポートしないからである。フレーム400中のデータ・ビットは、CRCビットによって提供されるカバレッジの有効性を高めるためにフレーム400の諸列にわたって蛇状パターンでマッピングされる。
【0031】
図5は、本発明のある実施形態に基づいて実装されたホストについての書き込みデータ経路の選択された諸側面を示すブロック図である。ホスト500は、なかでも、コア論理502、CRC発生器504および送信(TX)フレーム処理ユニット506を含む。代替的な実施形態では、ホスト500はより多くの要素、より少ない要素および/または異なる要素を含む。コア論理502は、たとえば、メイン・メモリへの読み出しおよび書き込みをスケジューリングするためのスケジューリング論理ならびに伝送エラーが起こったときに動作を再試行する再試行論理を含む。さらに、コア論理502は、対応する書き込みデータ・ビット510の少なくとも一部をマスクするためのデータ・マスク・ビット508を発生させる論理を含む。
【0032】
動作では、コア論理502は、たとえば、部分書き込み動作をスケジューリングし、書き込みデータ(510)および対応するデータ・マスク・ビット(508)をTXフレーム処理ユニット506およびCRC発生器504に提供する。いくつかの実施形態では、CRC発生器504は、書き込みデータおよびデータ・マスク・ビットに基づいてCRCチェックサムを生成する。6レベルのXOR木を使ってCRCチェックサムを計算するアルゴリズムを含め、幅広いCRCアルゴリズムが採用されることができる。代替的な実施形態では、CRCチェックサムを生成するために異なる数のXOR木または異なるアルゴリズムが使用されてもよい。いくつかの実施形態では、書き込みデータ経路および読み出しデータ経路は、CRCチェックサムを生成するために同じXOR木を使用する。
【0033】
TXフレーム処理ユニット(TX framing unit)506は、書き込みデータ(510)、データ・マスク・ビット(508)および対応するCRCチェックサムを一つまたは複数の書き込みデータ・フレーム(たとえば書き込みデータ・フレーム512)にフレーム化する。いくつかの実施形態では、TXフレーム処理ユニット506は、CRCが有効にされているかどうかやDRAMの幅といった因子に依存して、異なるフレーム型を生成することができる。たとえば、TXフレーム処理ユニット506は、CRC8、64個のデータ・ビットおよび8つのデータ・マスク・ビットを含む第一のフレーム型を生成することができてもよい(たとえばx8デバイスについて)。TXフレーム処理ユニット506はまた、CRC8および64個のデータ・ビットをもつ第二のフレーム型を生成することができてもよい(たとえばx8デバイスについて)。ホスト500がx4デバイスと結合される場合には、TXフレーム処理ユニット506は、32ビット上のCRC8をもつ第三のフレーム型をサポートしてもよい。代替的な実施形態では、より多くのフレーム型、より少ないフレーム型および/または異なるフレーム型がサポートされてもよい。書き込みデータ・フレーム(単数または複数)(512)は、DQバスを介して一つまたは複数のメモリ・デバイス(たとえばDRAM)に転送される。
【0034】
図6は、本発明のある実施形態に基づいて実装されたメモリ・デバイスについての読み出しデータ経路の選択された諸側面を示すブロック図である。メモリ・デバイス600は、なかでも、メモリ・アレイ602、送信(TX)フレーム処理ユニット604、CRC発生器606およびCRC無効化論理608を含む。代替的な実施形態では、メモリ・デバイス600はより多くの要素、より少ない要素および/または異なる要素を含んでいてもよい。いくつかの実施形態では、メモリ・デバイス600は動的ランダム・アクセス・メモリ・デバイス(DRAM)である。
【0035】
動作では、メモリ・デバイス600は、ホスト(たとえばホスト110)からの読み出しコマンドをC/Aバス(たとえばC/Aバス102)上で受信する。メモリ・アレイ602からデータが読み出され、TXフレーム処理ユニット604に与えられる。読み出しデータはCRCチェックサムを計算するCRC発生器606にも与えられる。いくつかの実施形態では、6レベルのXOR木を使ってCRCチェックサムが計算される。代替的な実施形態では、CRCチェックサムを生成するために異なる数のXOR木または異なるアルゴリズムが使用されてもよい。いくつかの実施形態では、読み出しデータ経路および書き込みデータ経路は、CRCチェックサムを生成するために同じXOR木を使用する。
【0036】
TXフレーム処理ユニット604は、読み出しデータ・ビットおよびチェックサム・ビットを受け取り、それらを書き込みデータ・フレームにフレーム化する。いくつかの実施形態では、TXフレーム処理ユニット604は、たとえばCRCが有効にされているかどうかに依存して、異なるフレーム型を使うことができる。たとえば、TXフレーム処理ユニット604は、CRCが有効にされている場合には第一のフレーム型を、CRCが無効にされている場合には第二のフレーム型を使ってもよい。第一のフレーム型は、読み出しデータ・ビットおよび対応するCRCチェックサムを含んでいてもよい。第二のフレーム型は、CRCチェックサムなしで読み出しデータ・ビットを含んでいてもよい。メモリ・デバイス600は、読み出しデータ・フレーム(CRCチェックサムありまたはなし)をDQバス610を介してホストに転送しうる。
【0037】
メモリ・デバイス600は、CRC無効化論理608を含む。いくつかの実施形態では、CRC無効化論理608はメモリ・デバイス600によるCRCの使用を無効にする。こうして、いくつかの実施形態では、メモリ・デバイス600は、読み出しデータとともにCRCチェックサムを使用するよう構成されることができ、あるいは読み出しデータとともに(および/または書き込みデータとともに)CRCチェックサムを使用しないよう構成されることができる。いくつかの実施形態では、CRC無効化論理は、モード・レジスタ・セット(MRS)の一部を含む。
【0038】
図7は、本発明のある実施形態に基づく、共有されたエラー・ビット・チェックサムをもつ共通フレームにおいてデータおよびデータ・マスク・ビットを転送する方法の選択された諸側面を示す流れ図である。プロセス・ブロック702を参照すると、ホスト(たとえばメモリ・コントローラ)は、複数のデータ・ビットについての伝送誤りをカバーし、一つまたは複数のデータ・マスク・ビットをカバーする(たとえば部分書き込み動作について)エラー・ビット・チェックサム(たとえばCRCチェックサム)を生成する。いくつかの実施形態では、ホストはCRCチェックサムを生成するためのCRC発生器を含む。ホストは、読み出しデータ経路および書き込みデータ経路について同じCRC木を使用してもよい。
【0039】
プロセス・ブロック704を参照すると、ホストは(たとえば図5に示した送信フレーム処理ユニット506を使って)前記複数のデータ・ビットを一つまたは複数のデータ・フレームにフレーム化する。いくつかの実施形態では、ホストはCRCが有効にされているかどうかおよび/または部分書き込みと全書き込みのどちらが実行されているかに依存して異なるフレーム型を生成できる。前記一つまたは複数のデータ・フレームは、706においてデータ・バスを介してメモリ・デバイス(たとえばDRAM)に転送される。
【0040】
いくつかの実施形態では、DRAMは、ホストによって提供されるフレーム内に含まれるCRCチェックサムを使って、伝送エラーが発生したかどうかを判定する。たとえば、DRAMは(受け取ったデータに基づいて)「ローカルな」CRCチェックサムを生成し、ローカルなチェックサムを受け取ったチェックサムを比較してもよい。伝送エラーが発生していた場合、DRAMはエラー信号をホストに送ってもよい。判断ブロック708を参照すると、ホストがエラー信号を受け取る場合、ホストはデータを再送信する(710)。あるいはまた、ホストがエラー信号を受け取らない場合、データは有効でありうる(712)。
【0041】
本発明の諸実施形態の諸要素は、機械実行可能命令を記憶する機械可読媒体として提供されてもよい。機械可読媒体は、これに限られないが、フラッシュメモリ、光ディスク、コンパクト・ディスク読み出し専用メモリ(CD-ROM)、デジタル多用途/ビデオ・ディスク(DVD)ROM、ランダム・アクセス・メモリ(RAM)、消去可能なプログラム可能型読み出し専用メモリ(EPROM)、電気的に消去可能なプログラム可能型読み出し専用メモリ(EEPROM)、磁気カードもしくは光カード、伝搬媒体または電子的な命令を記憶するために好適な他の型の機械可読媒体を含みうる。たとえば、本発明の諸実施形態は、リモート・コンピュータ(たとえばサーバー)から要求元コンピュータ(たとえばクライアント)に、通信リンク(たとえばモデムまたはネットワーク接続)を介して搬送波または他の伝搬媒体において具現されるデータ信号によって転送されうるコンピュータ・プログラムとしてダウンロードされてもよい。
【0042】
上記の記述では、本発明の実施形態を記述するためにある種の用語法が使用されている。たとえば、用語「論理(logic)」は、一つまたは複数の機能を実行するためのハードウェア、ファームウェア、ソフトウェア(またはその任意の組み合わせ)を表す。たとえば、「ハードウェア」の例は、これに限られないが、集積回路、有限状態機械またさらには組み合わせ論理(combinatorial logic)を含む。集積回路は、マイクロプロセッサのようなプロセッサ、特定用途向け集積回路(application specific integrated circuit)、デジタル信号プロセッサ、マイクロコントローラなどの形を取ってもよい。
【0043】
本明細書を通じて「一つの実施形態」または「ある実施形態」という言及は、その実施形態との関連で記述される特定の特徴、構造または特性が、本発明の少なくとも一つの実施形態に含まれることを意味することを理解しておくべきである。したがって、本明細書のさまざまな箇所で「ある実施形態」または「一つの実施形態」または「代替的な実施形態」という二つ以上の言及があっても、それは必ずしもすべてが同じ実施形態を指しているのではないことがここに強調され、理解されるべきである。さらに、特定の特徴、構造または特性は、本発明の一つまたは複数の実施形態において適宜組み合わされてもよい。
【0044】
同様に、本発明の実施形態の以上の記述において、開示の流れをよくしてさまざまな本発明の側面の一つまたは複数の理解を助ける目的で、さまざまな特徴が時に単一の実施形態、図面またはその説明においてまとめられている。しかしながら、そうした開示方法は、特許請求される主題が、各請求項において明示的に記載されているよりも多くの特徴を必要とするという意図を反映するものと解釈されるべきではない。さらに、以下の請求項が反映するように、本発明の諸側面は、上記の単一の開示された実施形態の全特徴よりも少ないものに存する。よって、付属の請求項はここに明示的にこの詳細な説明に組み込まれる。
【0045】
いくつかの態様を記載しておく。
〔態様1〕
集積回路であって:
当該集積回路からメモリ・デバイスに転送されるべきフレームについてエラー・ビット・カバレッジが有効にされているかどうかを示す論理と;
エラー・ビット・カバレッジが有効にされている場合、前記フレームをカバーするエラー・ビット・チェックサムを生成するエラー・ビット生成論理と;
前記フレームを生成するフレーム処理論理とを有しており、前記フレーム処理論理は、複数のデータ・ビット、複数のデータ・マスク・ビットおよび対応するエラー・ビット・チェックサムをもつ第一のフレーム型を含むいくつかの異なるフレーム型に基づいて前記フレームを生成できる、
集積回路。
〔態様2〕
前記フレームが前記第一のフレーム型に基づく、態様1記載の集積回路。
〔態様3〕
前記データ・マスク・ビットDMが前記フレームの上位ビット位置に位置される、態様2記載の集積回路。
〔態様4〕
前記エラー・ビット論理がチェックサムCを、少なくとも部分的には、Qを巡回冗長符号(CRC)生成多項式で割ることに基づいて生成する、態様3記載の集積回路。
〔態様5〕
前記Cが、前記Qを前記CRC生成多項式で割ったときの余りを含む、態様4記載の集積回路。
〔態様6〕
前記CRC生成多項式が、二進法で表現0b0 10010111によって表される、態様5記載の集積回路。
〔態様7〕
前記フレームがx8動的ランダム・アクセス・メモリ(DRAM)・デバイスに転送されるものであり、前記Qが少なくとも部分的に、次の表現:Q[71:0]={DM[7:0].q[63:0]}に基づく、態様6記載の集積回路。
〔態様8〕
前記CがQ[71:0]を0b0 10010111で割ったときの余りである、態様7記載の集積回路。
〔態様9〕
前記フレーム処理論理が、複数のデータ・ビットおよび対応するエラー・ビット・チェックサムを含む第二のフレーム型に基づいて前記フレームを生成できる、態様1記載の集積回路。
〔態様10〕
前記フレームが前記第二のフレーム型に基づき、前記メモリ・デバイスがx4の動的ランダム・アクセス・メモリ(DRAM)・デバイスである、態様9記載の集積回路。
〔態様11〕
前記フレームのビット[71:32]であるQが0と設定される、態様10記載の集積回路。
〔態様12〕
前記チェックサムCが、Q[71:0]を0b0 10010111で割ったときの余りである、態様11記載の集積回路。
〔態様13〕
当該集積回路と前記メモリ・デバイスとの間で転送されるフレームについての長さを決定するためのフレーム長制御論理をさらに有する、
態様1記載の集積回路。
〔態様14〕
読み出しトランザクションについて、前記フレーム長制御論理が、エラー・ビット・カバレッジが有効にされていれば単位区間(UI: unit interval)N個ぶんのフレーム長さを指定し、エラー・ビット・カバレッジが有効にされていなければUI M個ぶんのフレーム長さを指定する、態様13記載の集積回路。
〔態様15〕
書き込みトランザクションについて、前記フレーム長制御論理が、エラー・ビット・カバレッジが有効にされている場合に、単位区間(UI)N個ぶんのフレーム長を指定する、態様13記載の集積回路。
〔態様16〕
書き込みトランザクションについて、前記フレーム長制御論理が、エラー・ビット・カバレッジが有効にされていない場合、完全書き込みフレームについてはUI N個ぶんのフレーム長を指定し、部分書き込みフレームについてはUI M個ぶんのフレーム長を指定する、態様15記載の集積回路。
〔態様17〕
Nが10であり、Mが8である、態様13記載の集積回路。
〔態様18〕
当該集積回路がメモリ・コントローラを含む、態様1記載の集積回路。
〔態様19〕
少なくとも部分的に、複数のデータ・ビットおよび対応する複数のデータ・マスク・ビットに基づいてエラー・ビット・チェックサムを生成する段階と;
前記複数のデータ・ビット、前記対応する複数のデータ・マスク・ビットおよび前記エラー・ビット・チェックサムを含む書き込みフレームを生成する段階とを有する、
方法。
〔態様20〕
前記書き込みフレームがx8動的ランダム・アクセス・メモリ(DRAM)・デバイスに転送されるものであり、Qが少なくとも部分的に、次の表現:Q[71:0]={DM[7:0].q[63:0]}に基づく、態様19記載の方法。
〔態様21〕
前記エラー・ビット・チェックサムCが、Q[71:0]を0b0 10010111で割ったときの余りである、態様20記載の方法。
〔態様22〕
ホストであって:
前記ホストから動的ランダム・アクセス・メモリ(DRAM)・デバイスに転送されるべきフレームについて巡回冗長符号(CRC)カバーが有効にされているかどうかを示す論理と;
CRCカバーが有効にされている場合、前記フレームをカバーするCRCチェックサムを生成するCRC生成論理と;
前記フレームを生成するフレーム処理論理とを有しており、前記フレーム処理論理は、複数のデータ・ビット、複数のデータ・マスク・ビットおよび対応するCRCチェックサムをもつ第一のフレーム型を含むいくつかの異なるフレーム型に基づいて前記フレームを生成できる、ホストと;
前記ホストに結合された前記DRAMデバイスとを有する、
システム。
〔態様23〕
前記DRAMデバイスが、
少なくとも部分的に、前記フレームをCRC生成多項式で割ることに基づいてローカルなCRCチェックサムを生成するCRC生成論理と;
前記ローカルなCRCチェックサムを前記CRCチェックサムと比較する比較論理とを有する、
態様22記載のシステム。
〔態様24〕
前記フレームが前記第一のフレーム型に基づく、態様23記載のシステム。
〔態様25〕
前記データ・マスク・ビットDMが前記フレームの上位ビット位置に位置される、態様24記載のシステム。
〔態様26〕
前記エラー・ビット論理がチェックサムCを、少なくとも部分的には、Qを巡回冗長符号(CRC)生成多項式で割ることに基づいて生成する、態様25記載のシステム。
〔態様27〕
前記Cが、前記Qを前記CRC生成多項式で割ったときの余りを含む、態様26記載のシステム。
〔態様28〕
前記CRC生成多項式が、二進法で表現0b0 10010111によって表される、態様27記載のシステム。
〔態様29〕
前記フレームがx8動的ランダム・アクセス・メモリ(DRAM)・デバイスに転送されるものであり、前記Qが少なくとも部分的に、次の表現:Q[71:0]={DM[7:0].q[63:0]}に基づく、態様28記載のシステム。
【符号の説明】
【0046】
100 システム
102 コマンド/アドレス・レーン(C/Aレーン)
104 データ・レーン(DQレーン)
106 データ・フレーム
110 ホスト(たとえばメモリ・コントローラ)
112 CRC論理
114 フレーム処理論理
116 有効化/無効化論理
120 メモリ・デバイス(たとえばDRAM)
122 CRC論理
124 フレーム処理論理
126 有効化/無効化論理
200 x8フレーム
300 x8フレーム
400 x4フレーム
500 ホスト
502 コア論理
504 CRC生成器
506 TXフレーム処理ユニット
508 データ・マスク・ビット
510 データ・ビット
512 書き込みデータ・フレーム
600 メモリ・デバイス
610 バス
602 メモリ・アレイ
604 TXフレーム処理ユニット
606 Rd_CRC生成器
608 CRC無効化論理
702 少なくとも部分的に複数のデータ・ビットおよび対応する複数のデータ・マスク・ビットに基づいてエラー・ビット・チェックサムを生成
704 複数のデータ・ビット、対応する複数のデータ・マスク・ビットおよびエラー・ビット・チェックサムを含む書き込みフレームを生成
706 書き込みフレームを動的ランダム・アクセス・メモリ(DRAM)・デバイスに転送
708 受信エラー?
710 データ再送信
712 データは有効

【特許請求の範囲】
【請求項1】
集積回路であって:
当該集積回路からメモリ・デバイスに転送されるべきフレームについてエラー・ビット・カバレッジが有効にされているかどうかを示す論理と;
エラー・ビット・カバレッジが有効にされている場合、前記フレームをカバーするよう、複数のデータ・ビットおよび対応する複数のデータ・マスク・ビットに基づいてエラー・ビット・チェックサムを生成するエラー・ビット生成論理であって、前記データ・マスク・ビットは、書き込みデータの少なくとも一部が一つまたは複数のデータ・マスク・ビットを使ってマスクされる部分書き込み動作において利用される、エラー・ビット生成論理と;
前記フレームを生成するフレーム処理論理とを有しており、前記フレーム処理論理は、複数のデータ・ビット、複数のデータ・マスク・ビットおよび対応するエラー・ビット・チェックサムをもつ第一のフレーム型を含むいくつかの異なるフレーム型に基づいて前記フレームを生成できる、
集積回路。
【請求項2】
前記フレームが前記第一のフレーム型に基づく、請求項1記載の集積回路。
【請求項3】
前記データ・マスク・ビットDMが前記フレームの上位ビット位置に位置される、請求項2記載の集積回路。
【請求項4】
前記エラー・ビット論理がチェックサムCを、Qを巡回冗長符号(CRC)生成多項式で割ることに基づいて生成する、請求項3記載の集積回路。
【請求項5】
前記Cが、前記Qを前記CRC生成多項式で割ったときの余りを含む、請求項4記載の集積回路。
【請求項6】
前記CRC生成多項式が、二進法で表現0b0 10010111によって表される、請求項5記載の集積回路。
【請求項7】
前記フレームがx8動的ランダム・アクセス・メモリ(DRAM)・デバイスに転送されるものであり、前記Qが、次の表現:Q[71:0]={DM[7:0].q[63:0]}に基づく、請求項6記載の集積回路。
【請求項8】
前記CがQ[71:0]を0b0 10010111で割ったときの余りである、請求項7記載の集積回路。
【請求項9】
前記フレーム処理論理が、複数のデータ・ビットおよび対応するエラー・ビット・チェックサムを含む第二のフレーム型に基づいて前記フレームを生成できる、請求項1記載の集積回路。
【請求項10】
前記フレームが前記第二のフレーム型に基づき、前記メモリ・デバイスがx4の動的ランダム・アクセス・メモリ(DRAM)・デバイスである、請求項9記載の集積回路。
【請求項11】
前記チェックサムCが、Q[71:0]を0b0 10010111で割ったときの余りである、請求項4記載の集積回路。
【請求項12】
当該集積回路と前記メモリ・デバイスとの間で転送されるフレームについての長さを決定するためのフレーム長制御論理をさらに有する、
請求項1記載の集積回路。
【請求項13】
読み出しトランザクションについて、前記フレーム長制御論理が、エラー・ビット・カバレッジが有効にされていれば単位区間(UI: unit interval)N個ぶんのフレーム長さを指定し、エラー・ビット・カバレッジが有効にされていなければUI M個ぶんのフレーム長さを指定する、請求項12記載の集積回路。
【請求項14】
書き込みトランザクションについて、前記フレーム長制御論理が、エラー・ビット・カバレッジが有効にされている場合に、単位区間(UI)N個ぶんのフレーム長を指定する、請求項12記載の集積回路。
【請求項15】
書き込みトランザクションについて、前記フレーム長制御論理が、エラー・ビット・カバレッジが有効にされていない場合、完全書き込みフレームについてはUI N個ぶんのフレーム長を指定し、部分書き込みフレームについてはUI M個ぶんのフレーム長を指定する、請求項14記載の集積回路。
【請求項16】
Nが10であり、Mが8である、請求項13記載の集積回路。
【請求項17】
当該集積回路がメモリ・コントローラを含む、請求項1記載の集積回路。
【請求項18】
エラー・ビット生成論理回路およびフレーム処理論理回路を有する集積回路によって実行される方法であって:
前記エラー・ビット生成論理回路により、エラー・ビット・カバレッジが有効にされている場合、複数のデータ・ビットおよび対応する複数のデータ・マスク・ビットに基づいてエラー・ビット・チェックサムを生成する段階であって、前記データ・マスク・ビットは、書き込みデータの少なくとも一部が一つまたは複数のデータ・マスク・ビットを使ってマスクされる部分書き込み動作において利用されるものである、段階と;
前記フレーム処理論理回路により、前記複数のデータ・ビット、前記対応する複数のデータ・マスク・ビットおよび前記エラー・ビット・チェックサムを含む書き込みフレームを生成する段階とを有する、
方法。
【請求項19】
前記書き込みフレームがx8動的ランダム・アクセス・メモリ(DRAM)・デバイスに転送されるものであり、Qが、次の表現:Q[71:0]={DM[7:0].q[63:0]}に基づく、請求項18記載の方法。
【請求項20】
前記エラー・ビット・チェックサムCが、Q[71:0]を0b0 10010111で割ったときの余りである、請求項19記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2013−65347(P2013−65347A)
【公開日】平成25年4月11日(2013.4.11)
【国際特許分類】
【出願番号】特願2012−270332(P2012−270332)
【出願日】平成24年12月11日(2012.12.11)
【分割の表示】特願2009−142981(P2009−142981)の分割
【原出願日】平成21年6月16日(2009.6.16)
【出願人】(593096712)インテル コーポレイション (931)
【Fターム(参考)】