(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-08-19
(45)【発行日】2025-08-27
(54)【発明の名称】メタデータにエラー検出訂正(ECC)ビットを割り当てるためのECCビットの分散
(51)【国際特許分類】
G06F 12/06 20060101AFI20250820BHJP
G06F 11/10 20060101ALI20250820BHJP
G06F 12/02 20060101ALI20250820BHJP
【FI】
G06F12/06 525D
G06F11/10 644
G06F12/02 580J
G06F12/06 523A
【外国語出願】
(21)【出願番号】P 2021155345
(22)【出願日】2021-09-24
【審査請求日】2024-09-17
(32)【優先日】2021-01-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ラジャット アガールウォル
(72)【発明者】
【氏名】ウェイ ピー.チェン
(72)【発明者】
【氏名】ビル ネイル
(72)【発明者】
【氏名】ジェームス エー.マッコール
【審査官】後藤 彰
(56)【参考文献】
【文献】特開昭55-87358(JP,A)
【文献】特開平2-156380(JP,A)
【文献】特表2005-528712(JP,A)
【文献】特開2018-160104(JP,A)
【文献】米国特許出願公開第2019/0205225(US,A1)
【文献】米国特許出願公開第2020/0133769(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00 - 12/06
G06F 11/10
(57)【特許請求の範囲】
【請求項1】
第1のメモリリソースおよび第2のメモリリソースを含む複数のメモリリソースに結合するハードウェア入出力(I/O)インタフェースと、
前記第1のメモリリソースからのデータの一部を前記第1のメモリリソースの第1の半部分および前記第2のメモリリソースの第2の半部分として分散する制御ロジックであって、データの前記一部は、前記データの前記一部にエラー訂正を提供するためのN個のエラー検出訂正(ECC)ビットを含み、前記第1の半部分および前記第2の半部分はそれぞれ前記第1の半部分および第2の半部分にエラー訂正を提供するための(N-M)/2個のECCビットを含む、制御ロジックと
を備え、
前記制御ロジックは、M個の非ECCビットを前記第1の半部分と前記第2の半部分との間に分散する、
メモリコントローラ。
【請求項2】
データの前記一部は、ワードラインを含む、
請求項1に記載のメモリコントローラ。
【請求項3】
前記制御ロジックは、前記第1のメモリリソースのデータのバーストチョップを用いて前記第1の半部分のアクセスを実行し、前記第2のメモリリソースのデータのバーストチョップを用いて前記第2の半部分のアクセスを実行する、
請求項1または2に記載のメモリコントローラ。
【請求項4】
前記第1のメモリリソースは、第1のランクを含み、前記第2のメモリリソースは、第2のランクを含む、
請求項1から3のいずれか一項に記載のメモリコントローラ。
【請求項5】
前記第1のメモリリソースは、第1のデュアルインラインメモリモジュール(DIMM)を含み、前記第2のメモリリソースは、第2のDIMMを含む、
請求項1から3のいずれか一項に記載のメモリコントローラ。
【請求項6】
前記複数のメモリリソースは、10x4ダイナミックランダムアクセスメモリ(DRAM)デバイスを含む、
請求項5に記載のメモリコントローラ。
【請求項7】
Nは2×Mに等しく、Nは512個のデータビットのエラー訂正を提供するための64個のECCビットに等しく、Mは256個のデータビットのエラー訂正を提供するための32個のデータビットに等しい、
請求項1から6のいずれか一項に記載のメモリコントローラ。
【請求項8】
前記M個の非ECCビットは、メタデータビットを含む、
請求項1から7のいずれか一項に記載のメモリコントローラ。
【請求項9】
前記N個のECCビットは、データの前記一部に対するシングルデバイスデータ訂正(SDDC)を提供し、前記(N-M)/2個のECCビットは、データの半部分に対するSDDCを提供する、
請求項1から8のいずれか一項に記載のメモリコントローラ。
【請求項10】
データのラインを第1のハーフラインおよび第2のハーフラインへとデータの2つのハーフラインに分割する段階であって、データの前記ラインは、データの前記ラインにエラー訂正を提供するためのN個のエラー検出訂正(ECC)ビットを含む、段階と、
前記第1のハーフラインに対する(N-M)/2個の第1のエラー検出訂正(ECC)ビットおよび前記第2のハーフラインに対する(N-M)/2個の第2のECCビットを計算する段階と、
前記第1のハーフラインに対するM/2個の第1のメタデータビットおよび前記第2のハーフラインに対するM/2個の第2のメタデータビットを生成する段階と、
前記第1のハーフラインを前記(N-M)/2個の第1のECCビットおよび前記M/2個の第1のメタデータビットとともに第1のメモリリソースに記憶し、前記第2のハーフラインを前記(N-M)/2個の第2のECCビットおよび前記M/2個の第2のメタデータビットとともに前記第1のメモリリソースとは別個の第2のメモリリソースに記憶する段階と、
を備えるメモリアクセスのための方法。
【請求項11】
前記第1のハーフラインを前記第1のメモリリソースに記憶し、前記第2のハーフラインを前記第2のメモリリソースに記憶する段階は、バーストチョップを用いてデータ書き込みを実行する段階を含む、
請求項10に記載の方法。
【請求項12】
前記第1のメモリリソースは、第1のランクを含み、前記第2のメモリリソースは、第2のランクを含む、
請求項10または11に記載の方法。
【請求項13】
前記第1のメモリリソースは、第1のデュアルインラインメモリモジュール(DIMM)を含み、前記第2のメモリリソースは、第2のDIMMを含む、
請求項10又は11に記載の方法。
【請求項14】
前記第1のメモリリソースおよび前記第2のメモリリソースは、10x4ダイナミックランダムアクセスメモリ(DRAM)デバイスを含む、
請求項13に記載の方法。
【請求項15】
Nは2×Mに等しく、Nは512個のデータビットのエラー訂正を提供するための64個のECCビットに等しく、Mは256個のデータビットのエラー訂正を提供するための32個のデータビットに等しい、
請求項10から14のいずれか一項に記載の方法。
【請求項16】
前記M/2個の第1のメタデータビットおよび前記M/2個の第2のメタデータビットは、2レベルメモリ(2LM)ビット、トラステッドドメインエクステンション(TDX)ビット、またはメモリ内ディレクトリビットを含む、
請求項10から15のいずれか一項に記載の方法。
【請求項17】
前記N個のECCビットは、データの一部に対するシングルデバイスデータ訂正(SDDC)を提供し、前記(N-M)/2個のECCビットは、データのハーフラインに対するSDDCを提供する、
請求項10から16のいずれか一項に記載の方法。
【請求項18】
請求項10から17のいずれか一項に記載の方法を実行するための手段を備える、メモリアクセスのための装置。
【請求項19】
第1のメモリリソースおよび第2のメモリリソースを含むメモリと、
前記メモリに結合されたメモリコントローラと
を備え、
前記メモリコントローラは、
前記第1のメモリリソースからのデータの一部を前記第1のメモリリソースの第1の半部分および前記第2のメモリリソースの第2の半部分として分散する制御ロジックであって、データの前記一部は、前記データの前記一部にエラー訂正を提供するためのN個のエラー検出訂正(ECC)ビットを含み、前記第1の半部分および前記第2の半部分はそれぞれ前記第1の半部分および前記第2の半部分にエラー訂正を提供するための(N-M)/2個のECCビットを含む、制御ロジックと
を含み、
前記制御ロジックは、M個の非ECCビットを前記第1の半部分と前記第2の半部分との間に分散する、
メモリアクセスのためのシステム。
【請求項20】
前記制御ロジックは、前記第1のメモリリソースのデータのバーストチョップを用いて前記第1の半部分のアクセスを実行し、前記第2のメモリリソースのデータのバーストチョップを用いて前記第2の半部分のアクセスを実行する、
請求項19に記載のシステム。
【請求項21】
前記第1のメモリリソースは、第1のランクを含み、前記第2のメモリリソースは、第2のランクを含む、
請求項19または20に記載のシステム。
【請求項22】
前記第1のメモリリソースは、第1のデュアルインラインメモリモジュール(DIMM)を含み、前記第2のメモリリソースは、第2のDIMMを含む、
請求項19または20に記載のシステム。
【請求項23】
前記第1のメモリリソースおよび前記第2のメモリリソースは、10x4ダイナミックランダムアクセスメモリ(DRAM)デバイスを含む、
請求項19から22のいずれか一項に記載のシステム。
【請求項24】
Nは2×Mに等しく、Nは512個のデータビットのエラー訂正を提供するための64個のECCビットに等しく、Mは256個のデータビットのエラー訂正を提供するための32個のデータビットに等しい、
請求項19から23のいずれか一項に記載のシステム。
【請求項25】
前記N個のECCビットは、データの前記一部に対するシングルデバイスデータ訂正(SDDC)を提供し、前記(N-M)/2個のECCビットは、データの半部分に対するSDDCを提供する、
請求項19から24のいずれか一項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
説明は一般にメモリシステムに関し、より具体的な説明はエラー訂正ビットおよびデータストレージのシステム管理に関する。
【背景技術】
【0002】
メモリデバイスの密度と動作速度の増加は、メモリデバイスの製造プロセスのフィーチャサイズの縮小と相まって、メモリデバイスのランタイムエラーの増加を引き起こす傾向がある。メモリシステムは、エラー検出訂正(ECC)を使用して、さもなくばシステム障害を引き起こす可能性のあるエラーを訂正する。DRAM(ダイナミックランダムアクセスメモリ)デバイスは、並列に接続された複数のDRAMデバイスを含むDIMM(デュアルインラインメモリモジュール)などのモジュールで頻繁に用いられる。DIMMを使用するメモリシステムは、多くの場合、DIMMのDRAMデバイス全体の障害を訂正できるシングルデバイスデータ訂正(SDDC)を提供することに期待を持っている。
【0003】
今後のメモリデバイス規格は、増加した内部プリフェッチと長いバースト長を予定しており、メモリデバイスアクセストランザクション(例えば読み出しまたは書き込み)あたりの大きなデータ帯域幅をもたらす。トランザクションあたりの多くのビット数に対し、従来のアーキテクチャでは、ECCのために全ての適用可能なECC帯域幅を使用する。ECCのために使用される全ての追加ビットにより、システムはECC以外のシステムレベルの目的に適用可能なビットが無い。
【図面の簡単な説明】
【0004】
以下の説明は、実装の例として与えられる例示を有する図についての議論を含む。図面は、例として理解されるべきであり、限定として理解されるべきではない。本明細書において用いられる場合、1つまたは複数の例への言及は、本発明の少なくとも1つの実装に含まれる特定の機能、構造または特性の説明と理解されるべきである。本明細書に現れる「一例では」または「代替的な例において」などの語句は、本発明の実装の例を提供し、必ずしも全てが同じ実装を指すわけではない。しかしながら、それらは、必ずしも相互に排他的であるわけでもない。
【0005】
【
図1】スプリットラインアクセス制御を持つシステムの例のブロック図である。
【0006】
【
図2】スプリットラインアクセスがメタデータのためにECC容量を選択的に解放することを可能にするシステムの例のブロック図である。
【0007】
【
図3】バーストチョップを適用するスプリットラインアクセスを備えたシステムの例のブロック図である。
【0008】
【
図4】デュアルランク10x4メモリモジュールのスプリットラインアクセスのためのシステムアーキテクチャの例のブロック図である。
【0009】
【
図5】パラレルメモリリソース間でデータを分割してエラー訂正を行う処理の例のフロー図である。
【0010】
【
図6】スプリットラインECCに基づいて検出および訂正を実行するために行列を適用するためのチェックビット生成ロジックとシンドロームビット生成ロジックの例のブロック図である。
【0011】
【
図7】システムレベルエラー検出訂正の例のブロック図である。
【0012】
【
図8】スプリットラインメモリアクセスを実装できるメモリサブシステムの例のブロック図である。
【0013】
【
図9】スプリットラインメモリアクセスを実装できるコンピューティングシステムの例のブロック図である。
【0014】
【
図10】スプリットラインメモリアクセスを実装できるモバイルデバイスの例のブロック図である。
【0015】
【
図11】スプリットラインメモリアクセスを実装できるマルチノードネットワークの例のブロック図である。
【0016】
特定の詳細および実装の説明を以下で行う。当該説明は、例のいくつかまたは全てと他の潜在的な実装とを示し得る図の非限定的な説明を含む。
【発明を実施するための形態】
【0017】
本明細書で説明するように、メモリサブシステムは、第1のメモリリソースおよび第2のメモリリソースを含む、並列に接続された複数のメモリリソースを含む。メモリサブシステムは、データの部分を複数のサブ部分に分割できる。より小さい部分に分割すると、システムは同レベルのECC保護を提供するためにより少ないECC(エラー検出訂正)ビットしか必要なくなる。データをサブ部分に分割してパラレルメモリリソースに記憶することは、スプリットラインアクセスと呼ばれることができる。データの部分は、エラー訂正用のN個のECCビットを含むことができ、サブ部分はそれぞれ、エラー訂正用の(N-M)ECCビットのサブ部分を含むことができる。システムはそれにより、メタデータなどの非ECC目的でMビットのデータを使用できる。
【0018】
JEDEC(Joint Electron Device Engineering Council、現在はJEDEC Solid State Technology Association)の今後のダブルデータレートバージョン5(DDR5)規格と互換性のあるDRAM(ダイナミックランダムアクセスメモリ)デバイスは、4つのデータバス信号ラインインタフェース(DQ[0:3])を持つ。そのようなデバイスは、4個のDQ(データ)信号ラインインタフェースを指して、x4デバイスと呼ばれることができる。DIMM(デュアルインラインメモリモジュール)または他のメモリモジュールは、プロセスアクセスコマンドに並列に接続されたDRAMデバイスなどの複数のメモリデバイスを含む。パラレルメモリデバイスは通常、コマンドバスを共有し、個別のデータバスインタフェースを持つ。
【0019】
DIMMは、モジュールを構成するボード(例えばプリント回路基板(PCB))に搭載されているメモリデバイスの数とデバイスタイプによって識別されることができる。例は10x4DIMMを含み、それぞれがx4インタフェースを持つ10個のパラレルデバイスを備えたDIMMを指す。したがって、データバスは40本の信号線を持つであろう。10x4DIMMは通常、ユーザデータまたはデバイスの実行と操作を直接制御するデータ用の8個のメモリデバイスと、ECCデータおよびメタデータなどのシステムデータ用の2個のメモリデバイスを含む。
【0020】
DDR5 x4DRAMデバイスはそれぞれ、アクセストランザクション(例えば読み出しまたは書き込み)あたり64ビットのデータを提供し、16単位間隔(UI)バーストまたはバースト長16(BL16)でUIあたり4ビットが交換される。DDR5 10x4DIMMの場合、8個のデータデバイスが512ビット(8×64)を提供し、2個のECCデバイス(冗長デバイスとも呼ばれる)が128ビット(2×64)を提供するであろう。x4DDR5のデバイス障害の完全な訂正を可能にし得るSDDC(シングルデバイスデータ訂正)を提供するためには、64ビットの喪失を回復するために128ビットのECCが必要となる。冗長デバイスが2つのみの場合、10x4DIMMのために全ての非データビットまたは全てのECC帯域幅が使用され得、メタデータ用のシステムビットは残らない。
【0021】
システムのためにメモリストレージスペースを解放するための1つの解決策は、単により少ないECCビットを使用することであるだろう。デバイス全体に障害が発生するリスクは小さく、メタデータからのシステム機能能力の向上は、エラーを訂正できなくし得るデバイス内の一時的なマルチビットエラーのまれなケースとの合理的なトレードオフとみなし得ることを意味する。いくつかのシステムアーキテクチャでは、RAS(信頼性、アクセシビリティ、および保守性)要件がそのような解決策は受け入れられないものにする。
【0022】
完全なECC能力を保持し、追加のメタデータビットを提供し得る別の解決策は、隠退されたメモリ領域に追加のビットを記憶することだろう。隠退されたメモリは、メタデータビットまたはECCビットなどのシステムビット用にデータデバイス内にスペースまたは容量を確保する。システムは、ECCビットのためまたはメタデータビットのために隠退された領域を使用できる。
【0023】
隠退されたメモリは、性能ペナルティを犠牲にして容量を確保する。ECC用の隠退されたメモリを使用すると、64ビットのECCをDIMM上の1個の冗長デバイスに記憶でき(SDDCのエラーを検出するのに十分であるがそれらのエラーを訂正できない)、64ビットのECCは、データデバイス中に隠退されたメモリスペースまたは隠退された領域内に分散され得、64ビットを他の冗長デバイスでメタデータのために使用可能にする。エラー検出は、ECCデバイスからの64ビットで実現でき、エラーの検出に応答して、システムは隠退されたデータを取得してエラー訂正を実行できる。したがって、各読み出し要求は、エラーが検出されない場合は1回の読み出しをもたらし、エラーが検出されるまれなケースでは2回の読み出しをもたらす。しかしながら、書き込み要求は、データ書き込みと、隠退されたECCデータのリードモディファイドライト(RMW)をもたらし、2回の書き込みで1回の読み出しをもたらす。
【0024】
性能ペナルティに追加して、隠退されたメモリは容量ペナルティをもたらす可能性がある。8つのデータデバイス中に分散された追加の冗長デバイス分のデータを実質的に隠退することによって、メタデータ用の隠退されたメモリにおいてメモリ容量の最大約1/8を使用できる。より少ないメモリを隠退することが可能であり得るが、容量ペナルティが低減されたとしても依然としてペナルティをもたらすだろう。
【0025】
説明されるスプリットラインアクセスは、スプリットラインアクセスがシステムメタデータとして使用するためにメモリ容量を解放する場合、「メタデータのためのスプリットラインアクセス」(SLAM)と呼ばれ得る。メタデータの使用は、トラステッドドメインエクステンション(TDX)、メモリ内ディレクトリ、2レベルメモリ(2LM)機能、または他のメタデータの使用を含む。メタデータの使用は、ユーザデータではないデータ容量の非ECCシステムの使用を指す。
【0026】
一例では、スプリットラインアクセスは、複数のパラレルメモリリソースを介して実行されることができる。本明細書の説明は、一般に2つのパラレルメモリリソースの使用を説明し、基本的に、ラインアクセスを2つのリソースにわたって半分に分割する。スプリットラインアクセスは、単一のデバイスによって提供されるビット数を低減することにより、SDDCに必要なECCビット数を低減することができる。例えば、キャッシュラインを2つの異なるランク(rank)中に分割することにより、キャッシュラインの記憶に使用されるデバイスの数が倍になり、メモリデバイスあたりのビット数が半分に低減する。
【0027】
上記のDDR5の例では、2ランクのx4DIMMはDRAMごとに32ビットを持つことができる。したがって、SDDCの場合、システムは32ビットを訂正する必要があるのみであり、それは必要なECCビット数を半分に低減することができる。キャッシュラインあたりに64ビットのECCが必要なため、メタデータビットとして使用するために64ビットが残るであろう。
【0028】
したがって、データの通常の部分のためのSDDCに必要なビット数がNの場合、データの半部分またはサブ部分のSDDCに必要なビット数は(N-M)/2になり得、Mは、データがより多くのメモリデバイスに分散している場合の、同レベルのECCのための低減されたビット要件を表す数である。
【0029】
図1は、スプリットラインアクセス制御を持つシステムの例のブロック図である。システム100は、ホストに結合されたメモリを示している。ホスト110は、ホストコンピューティングシステムを表す。ホスト110は、プロセッサ120およびメモリコントローラ130などのホストハードウェアを含む。ホストハードウェアはまた、ホスト110とメモリ150との間の相互接続を提供するためのハードウェア相互接続およびドライバ/レシーバハードウェアを含む。メモリ150は、ホスト110に結合されたパラレルメモリリソース、リソース152およびリソース154を含む。メモリコントローラ130は、メモリ150へのアクセスを制御する。
【0030】
ホストハードウェアは、ホスト110上でのホストソフトウェアの実行をサポートする。ホストソフトウェアは、ホストOS(オペレーティングシステム)140を含むことができる。ホストOS140は、他のソフトウェアが実行されるソフトウェアプラットフォームを表す。ホストOS140は、メモリデバイス160に結合するためのハードウェア相互接続とインタフェースすることを可能にする制御を提供する。
【0031】
メモリ150は、1つまたは複数のメモリデバイスをホスト110に接続するハードウェアプラットフォームを表す。例えば、メモリ150は、それぞれ複数のメモリデバイスを含むことができるDIMM(デュアルインラインメモリモジュール)または複数のDIMMである、またはそれらを含むことができる。メモリ150は、ホスト110とメモリデバイスハードウェアとの間のシグナリングを制御するためのルーティングおよび制御ロジックを提供することができる。
【0032】
実行中、ホストOS140はメモリにアクセスするための要求を提供する。要求は、API(アプリケーションプログラミングインタフェース)またはホストOS140で実行されるプログラムがメモリアクセスを要求するための他の機構を介してホストOSソフトウェアから直接行うことができる。ホストメモリアクセス要求に応答して、メモリコントローラ130は、メモリリソースのホストベースのアドレス指定をメモリ150の物理アドレス位置にマッピングする。
【0033】
一例では、メモリコントローラ130は、メモリ150から読み出されたデータ内のエラーを検出して訂正するホスト110内のエラーロジックを表すECC132を含む。ECC132は、メモリ150に送信するための書き込みデータ用のチェックビットを生成することができる。その後ECC132は、メモリデバイスからの入力データおよびECCビットをデコードして、データにエラーが含まれているかどうかを判断することができる。訂正可能なエラー(CE)の場合、ECC132は、ホストOS140であるかホストOS140下で実行されているアプリケーションであるかに関係なく、要求元のエージェントにデータを返却する前に、データ内のエラーを訂正できる。
【0034】
SLAM制御134は、パラレルメモリリソース内のメモリの1つまたは複数のラインへのスプリットラインアクセスを提供するためのメモリコントローラ130内のロジックを表す。一例では、SLAM制御134は、メモリ150の選択された領域へのスプリットラインアクセスの動的な適用を可能にする。
【0035】
メモリ150は、リソース154と並列なリソース152を含む。一例では、リソース152およびリソース154は、異なるランクのメモリを表す。一例では、異なるランクはマルチランクDIMMの部分であることができる。例えば、2ランクDIMMは、2つの異なる部分としてアクセスされる1つのDRAMをサポートするDRAMデバイスで実装できる。別の例として、メモリモジュールは、異なるランクをサポートするマルチDRAMパッケージを含むことができる。一例では、リソース152およびリソース154は、異なるDIMMを表す。一例では、リソース152およびリソース154は、スプリットラインアクセスが必要なECCビットの削減を提供することができるデバイスまたはバンクなどによる、メモリの別のパーティショニングを表す。リソース152は、第1のメモリリソースと呼ばれることができ、リソース154は、第2のメモリリソースと呼ばれることができるが、呼称を逆にすることができる。
【0036】
リソース152は、メモリの領域またはラインを表すことができる領域162を有するものとして示されている。例えば、領域162は、ワードラインまたはキャッシュラインを表すことができる。一例では、領域162は、ワードラインとは異なるメモリの分割を表す。領域162は、領域162のビットのエラー訂正を提供するためのECCビットを含む。
【0037】
一例では、システム100は、スプリットラインアクセスの選択的使用をサポートする。したがって、スプリットラインアクセスでアクセスされるメモリの領域は領域ごとに選択でき、リソース全体が必ずしもスプリットラインアクセスの対象にはならない。一例では、リソース152は、スプリットラインアクセスでアクセスされない領域162、およびスプリットラインアクセスでアクセスされる領域172を含む。領域172は、スプリットラインアクセスのためにリソース154の領域174と対にされるであろう。
【0038】
スプリットラインアクセスでは、メモリコントローラ130は、パラレルリソースにおけるラインのビットのサブ部分のみを記憶する。システム100は、2つのパラレルリソース、リソース152およびリソース154のみを表す。システム100は、2つを上回るパラレルリソースを含むことができる。一例では、システム100は、2つを上回る方法でラインを分割することができる。2つを上回る方法でラインを分割するロジスティクスは、システムに複雑さをもたらし得る。追加された複雑さに関わらず、ECCカバレッジを広げるためのラインの分割は、本明細書で説明されているのと同様の方法で実現できる。
【0039】
本明細書の例は、主に2つのパラレルリソース中にラインを分割することに焦点を当てる。一例では、2つを上回るパラレルリソースが存在する可能性があり、システムは、分割ペアを選ぶために複数の使用可能なリソースの中から選択することができる。
【0040】
一例では、領域172は、ECCおよびメタデータ(MD)を含む。同様に、領域174はECCおよびメタデータを含む。領域172と領域174の組み合わされたユーザデータは、領域162のユーザデータの量と等しくなり得るが、領域172と領域174の組み合わされたECCの量は、領域162のECCより少ない。ECC節約は、システム100が領域172および領域174に示されるメタデータを提供することを可能にすることができる。領域172と領域174のメタデータとECCの合計の組み合わせは、部分が2つのリソース中に分割されている場合、領域162のECCの量と等しくなる。
【0041】
BIOS(基本入出力システム)112は、システム100のブート制御を表す。BIOS112は、システム100が最初に電源投入されたときにシステム100を制御する。プロセッサ120は、BIOS112の実行を開始するように構成されることができ、その後プロセッサにホストOS140を起動する命令をロードするように指示することができる。BIOS112は、ハードウェアの初期化、構成設定、使用可能なメモリ量に関する情報、およびその他の情報など、ホスト110の構成を含むことができる。一例では、メモリコントローラ130およびBIOS112は、スプリットラインアクセスでアクセスされ得るメモリ150内の領域に関連する情報を交換することができる。
【0042】
メモリコントローラ130のSLAM制御134は、スプリットラインアクセスを提供するための制御ロジックを表すことができる。制御ロジックは、メモリコントローラ130のハードウェアリソース上で実行されるロジックを含むことができる。メモリコントローラ130は、メモリ150へのアクセスを管理するためのロジックを実行するためのプロセッサまたは処理ハードウェアである、またはそれらを含む。
【0043】
一例では、SLAM制御134は、領域162と同じであり得る領域を表す領域170へのアクセスを分割することを決定する。領域170をリソース152に完全に記憶する代わりに、領域170はグレーアウトで示されている。領域170は、リソース152およびリソース152に広がる分割されたサブ領域によって置き換えられることができる。領域172は一方のサブ領域を表し、領域174は他方のサブ領域を表す。領域170はECCにN個のチェックビットを必要とするが、領域172および領域174はそれぞれ、N-Mビットとして表すことができるいくつかの少数のチェックビットまたはECCビットを必要とする。したがって、各領域は、(N-M)/2個のECCビットおよびM/2個のメタデータビットを記憶することができ、領域170に対して合計M個のメタデータビットになる。一例では、Mは1/2Nに等しいが、Nの異なる分数である可能性がある。
【0044】
図2は、スプリットラインアクセスがメタデータのためにECC帯域幅を選択的に解放することを可能にするシステムの例のブロック図である。DIMM210は、スプリットラインアクセスを適用しないDIMMを表す。DIMM230は、スプリットラインアクセスを実装するDIMMを表す。DIMM230は、DIMMの異なるランク中のラインの分割を可能にするためにSLAM制御220で制御されることができる。DIMM230は、システム100のメモリ150の例であり得る。
【0045】
DIMM210はランク0とランク1を表し、ランクには並列に接続されたX個のデバイス(デバイス[0:(X-1)])が含まれる。一般に、メモリのランクは、デバイスにメモリアクセスコマンドに対し並列に応答させるイネーブル信号を共有するメモリデバイスを指す。イネーブルまたはトリガ信号を共有しているにもかかわらず、ランク内のデバイスは、構成のためなど、個々のデバイスを選択するパーデバイスアクセシビリティ(per-device accessibility;PDA)操作でアクセスされ得る。
【0046】
DIMM210のランク0は、部分212を有するものとして示され、これは、例えば、ランク0のデバイス[0:(X-1)]に記憶されたワードラインであり得る。一例では、DIMM210は、ランクあたり2つの冗長デバイスを含み、部分212はデバイス[0:(X-3)]にユーザデータを有し、デバイス[(X-2):(X-1)]にECCを有する。部分212の目的のために、部分212のデータはランク1に記憶されない。
【0047】
一例では、SLAM制御220は、2つのサブ部分がランク0およびランク1に広がるようにDIMM230にデータの全部分を記憶させる。DIMM230では、部分232は、DIMM210の部分212のように全部分の半分を表す。部分234は、部分の他の半分を表す。したがって、部分232と部分234との間にデータの全部分がある。一例では、DIMM230のアーキテクチャに基づいて、部分をランク0およびランク1中に分割することは、同じECC保護をより少ないECCビットで提供できることを意味する。したがって、部分232は、デバイス[X-1]にメタデータ(MD)ビットを含み、部分234は、デバイス[X-1]にメタデータ(MD)ビットを含む。部分232のデバイス[X-2]および部分234のデバイス[X-2]のECCビットは、DIMM210のデバイス[(X-2):(X-1)]のECCビットと同レベルのECC保護に対して十分である。
【0048】
一例では、SLAM制御220は、スプリットラインアクセスをイネーブルまたはディセーブルするための異なるメモリ領域を明示的に構成することができ、したがってシステムにおいて必要な場合にのみスプリットラインアクセスを適用することができる。したがって、スプリットレベルアクセスは、全デバイスエラー訂正、セキュリティ、およびその他の機能(2LMなど)が実装されている領域について性能への影響を制限できる。
【0049】
DDR DRAMデバイスのDIMM230のランクの例を考える。SLAM制御220は、メタデータを必要とするサーバCPUに全機能のサポートを提供しつつ、100%SDDCを提供できる。スプリットラインアクセスの実装または設計の性能への影響は、メタデータを使用する領域に制限できる。ECCに必要なビット数を低減することで、スプリットラインアクセスは、単に、ECCビットをメタデータビットに置き換える、または、ECC帯域幅をメタデータ帯域幅に置き換えることができる。したがって、スプリットラインアクセスは、隠退されたメモリのために必要な余分なメモリ容量を低減または排除できる。
【0050】
スプリットレベルアクセスは、キャッシュライン読み出しが各メモリデバイスからより少ないデータをフェッチする場合、デバイス障害を訂正するために必要なECCビット数が低減され得るという原則に基づいて動作できる。DDR5では、従来、各読み出しは各x4DRAMデバイスから64bのデータをフェッチし、全512bのキャッシュラインにアクセスするために8個のDRAMが使用されていた。スプリットラインアクセスを持つDDR5では、一例では、アクセスは2倍の数のDRAMに分割され、全512bのデータに対して16個のDRAMがアクセスされ、各DRAMデバイスは32bのデータのみを提供する。DRAMデバイスに障害が発生した場合、32bのみが訂正される必要があり得る。64bの障害を訂正するための128bのECCの代わりに、32bを訂正するために64bのECCが必要である。したがって、システムは、ECCのためのビットを使用する代わりに、メタデータとして使用するために64bを選択的に解放できる。
【0051】
2つの異なるランク中にデータを分割すると、DDRバス上の「ランク切り替え」オーバーヘッドに起因して性能への影響を与える可能性があることが理解されるだろう。スプリットラインアクセスでメモリ領域を選択的に扱うオプションは、システムが性能、セキュリティ、およびシステム機能のためのオプションを選択することを可能にする。性能はデータをパラレルリソース間で分割しないことで選択され得るが、追加のシステム機能の使用を可能にするために低いエラー訂正能力(低いデータセキュリティ)を持つことが必要になり得る。システムは、エラー訂正を保証することでデータセキュリティを選択でき、これは、ECCのために全ての利用可能なビットを使用することでシステム機能が犠牲になり得る、または完全なECCおよびシステム機能を可能にするためにデータ隠退を使用することでセキュリティが犠牲になり得る。システム機能は、隠退またはスプリットラインアクセスのいずれかを使用して性能を犠牲にして、またはECCビットをメタデータビットに置き換えることによってデータセキュリティを犠牲にして選択されることができる。
【0052】
一例では、システムCPU(中央演算処理装置)またはホスト(通常はメモリコントローラを介して)はメモリ領域によるスプリットラインアクセスをサポートすることができる。一例では、メモリ領域は、アプリケーションの必要に基づいて、実行時にスプリットラインアクセスに対して動的にイネーブルされることができる。一例では、OS(オペレーティングシステム)は、実行時に未使用のメモリページをSLAM領域に動的に割り当て、プラットフォームファームウェアからの支援を受けてSLAM移行を開始する。一例では、スプリットラインアクセス用のメモリ領域の選択は、(パラレルメモリリソース間でデータを分割するための)データコピーおよびECCのリマッピングを実行することが必要になり得る。一例では、プラットフォームファームウェアは、スプリットラインアクセスに移行する領域に対してデータコピーおよびECCリマッピングを実行するために、ハードウェアフローを呼び出すことができる。一例では、ハードウェアフローは既存のCPU機能を活用でき、したがって既存のサーバCPUシステムで既にサポートされている機能に基づいてスプリットレベルアクセスを提供することができる。
【0053】
言及できるサーバCPUシステムの1つの機能は、ADDDC(適応型ダブルデータデバイス訂正)であり、これはデバイスの障害状態に対処するためのパラレルメモリリソース間のデータ共有のアーキテクチャを指す。本明細書で説明されるスプリットラインアクセスは、ADDDCと同様のアーキテクチャを備えているとみなすことができ、説明されるスプリットラインアクセスを実装するためにADDDCをサポートするシステムの能力を潜在的に再利用することができる。ADDDCは、エラー状態の検出に対するエラー管理応答であるのに対し、スプリットラインアクセスは、エラー検出に応答して実装されないが、システム機能をイネーブルするために選択的にアクティブ化されることができることが理解されよう。
【0054】
ADDDCおよびスプリットラインアクセスは、ロックステップデータ分散またはロックステップ構成またはロックステップパートナの概念に基づくことができる。ロックステッピングは、従来、エラー訂正データを複数のメモリリソースに分散して、共有内で障害が発生したメモリリソースへの確定的なデータアクセスを妨げる1つのメモリリソースのハード障害を補償することを指す。ロックステッピングは、データの分散がエラー訂正に対する低いECC要件をもたらすため、ハード障害に対する補償を可能にする。スプリットラインアクセスのロックステッピングは、複数のメモリリソースにデータを分散して、他の目的に使用するためにビットを解放するためのECC要件を低減することを指すことができるのに対し、ADDDCは、ハード障害によりビットが使用可能でなくなるためにデータを分散する。
【0055】
図3は、バーストチョップを適用するスプリットラインアクセスを持つシステムの例のブロック図である。システム300は、システム100の例によるシステムを表す。システム300は、説明されるスプリットラインアクセスの任意の例による、パラレルランクからのデータ出力パターンの例を示す。
【0056】
ランク310は、メモリモジュール上のデバイスなどのランク内のメモリデバイスを表し、ランクは、デバイス[0:9]とラベル付けされた10個のデバイスを含む。デバイスはx4デバイスとして示され、これは、データ(DQ)バスとのインタフェースの信号線の数を指す。x4デバイスは、システム300において16のバースト長にわたってデータを出力する4個の信号線を持つ。システム300は、データ交換にBL16の8サイクルのみが必要なバーストチョップ実装を表す。
【0057】
示されるように、システム300は、BL16または16単位間隔のバースト長で動作する。各デバイスは、単位間隔あたり4ビットを送信(読み出し操作の場合)または受信(書き込み操作の場合)でき、操作またはトランザクション(読み出しまたは書き込みのいずれも)あたりデバイスあたり合計64ビットになる。システム300は、具体的に読み出しトランザクションを示しており、デバイスの矢印は、デバイスからコントローラ330へのシーケンスオーダーでのバーストオーダーおよび信号線出力を表す。
【0058】
ビットの向きおよびバーストオーダーに関わらず、一般に、一例では、第1のサイクル(バーストサイクル0)中に、データビットD[0:3]はデータバス上で送信され、データ312によって表される。第2のサイクル(バーストサイクル1)でデータビットD[4:7]が送信されるなどし、バーストサイクル7でのデータビットD[28:31]まで、送信される。通常、ランク310のデバイスは、バーストサイクル15でデータビットD[60:63]を送信するまで、データを提供し続け得る。バーストチョップでは、チョップドバーストサイクルBL[8:15]の間にデータは交換されない。
【0059】
ランク320はまた、メモリモジュール上のデバイスなどのランク内のメモリデバイスを表し、ランクは、デバイス[0:9]とラベル付けされた10個のデバイスを含む。デバイスは、BL16とともにx4デバイスとして示され、ランク320はデータ322とともにバーストチョップを実装する。ランク310のデータ312と同様に、ランク320のデータ322について、第1のサイクル(バーストサイクル0)中に、データの第1の4ビットがデータバス上で送信され、続いて次の4ビットが送信されるなどし、全てのビットが転送される。
【0060】
バーストサイクル0のデータビットD[0:3]、バーストサイクル1のデータビットD[4:7]などとしてデータ322を表す代わりに、データ322はデータ312の第2の部分とみなすことができる。したがって、バーストサイクル0について、データ322はデータビットD[32:35]を示し、デバイスはバーストサイクル1の間にデータビットD[36:39]を転送するなどし、バーストサイクル7でデータビットD[60:63]まで行う。バーストチョップでは、チョップドバーストサイクルBL[8:15]の間にデータは交換されない。
【0061】
任意のデータの順序を使用できることが理解されるだろう。データがコントローラ330からメモリデバイスに送信されるか、またはメモリデバイスからコントローラ330に送信されるかに基づいて、ランク310へのおよびランク310からの、ならびにランク320へのおよびランク320からのビットの順序を逆にすることができる。異なるシステムの異なる量のデータに対して、異なるバースト長、異なるバーストオーダー、異なるデータバスインタフェース(例えばx8またはx16)を使用できる。トランザクションの原理は、ランク310およびコントローラ330のデータデバイスがデータバス上でデータ312を交換することについて、およびランク320およびコントローラ330のデータデバイスがデータバス上でデータ322を交換する場合と同じままであろう。
【0062】
システム300は、バーストチョップを用いたランクあたり2つの半分のキャッシュラインのアクセスを示す。一例では、メモリコントローラは、ランク310または他のメモリリソースからのデータの1つの半部分、およびランク320または他のパラレルメモリリソースからのデータの別の半部分のメモリアクセスを実行する。
【0063】
バーストチョップモードはメモリアクセスには非効率的であり、いくらかの帯域幅の損失をもたらす。帯域幅の損失を制限するために、スプリットラインアクセスの適用は、メタデータを必要とするメモリの領域に限られることができる。一例では、SLAMは、SLAMモードまたはスプリットラインアクセスモード(キャッシュラインが2つのランクまたは他のパラレルメモリリソースからアクセスされる)または通常モード(キャッシュラインが単一のランクまたは単一のメモリリソースからアクセスされる)でアクセスできるメモリ領域の動的選択を可能にする。一例では、システムは、バーストチョップモードの高速なターンアラウンドを可能にするために、最適化されたランクターンアラウンドを適用することができる。高速なターンアラウンドは、バーストチョップモードの性能への影響を低減することができる。
【0064】
システム300は、10x4モジュール構成の例を表しており、x4DQインタフェースの10個のメモリデバイスを指す。そのような構成では、通常、デバイス[0:7]は「データ」デバイスであり得、デバイス[8:9]は「ECC」デバイスである。データデバイスは、読み出しまたは書き込みトランザクションのための実際のユーザデータを参照する。ECCデバイスは、データビットのECCをデコードするためのチェックビットまたはパリティビットを記憶するデバイスを指す。一例では、各デバイスからの64ビットのデータは、キャッシュラインまたはワードライン、またはキャッシュラインの部分(例えば、512ビットキャッシュラインの64ビット)を表す。したがって、各デバイスのビットの全体セットは、単一のラインまたはラインの部分のビットを表す。
【0065】
システム300は、異なるタイプのデータを、デバイス[0:7]内のユーザデータについてD0、D1、D2、...、ECCビットまたはパリティビットとしてP0、P1、P2、...、メタデータビットについてM0、M1、M2、...として示す。システム300では、一例では、ランク310のデバイス[8]のデータビットは、ECCビットP[0:31]を含み、ランク320のデバイス[8]のデータビットは、ECCビットP[32:63]を含む。一例では、ランク310のデバイス[9]のデータビットはメタデータビットM[0:31]を含み、ランク320のデバイス[9]のデータビットはメタデータビットM[32:63]を含む。
【0066】
システム300は、選択的なスプリットラインアクセスを提供するシステム300の能力を表すためのコントローラ330にSLAM制御332を含む。SLAM制御332に基づいて、コントローラ330は、特定のデータに対するアクセス要求を、1つのランク(ランク310またはランク320のいずれか)のみに行い、他のデータに対する要求を両方のランク(ランク310およびランク320の両方)に行うことができる。特定のデータ要求を行うとき、コントローラ330は、バーストチョップでデータの半分が各ランクから来るであろうことを知り得る。コントローラ330は、スプリットレベルアクセスデータであるか通常データであるかにかかわらず、どのデータがアクセスされているかに従って操作をスケジューリングする。
【0067】
図4は、デュアルランク10x4メモリモジュールのスプリットラインアクセスのためのシステムアーキテクチャの例のブロック図である。システム400は、システム100の例またはシステム300の例によるシステムを表す。
【0068】
DIMM410は、2ランクの10x4実装の構成を具体的に示しており、各ランクは8個のデータDRAM、DRAM[0:7]、1個のECC DRAM、および1個のメタデータDRAMを持つ。全てのデータDRAM、DRAM[0:7]、ECC DRAMおよびメタデータDRAMは、DQ[0:3]を有するx4インタフェースを持つものとして示されている。一例では、2ランクのDIMMの代わりに、システム400は、2個の別個のDIMMを並列に含むことができる。
【0069】
一例では、ランク0のDRAMは、データバス420に接続され、データDRAMは、データビット422を提供し、ECC DRAMは、ECCビット424を提供し、メタデータDRAMは、メタデータ(MD)ビット426を提供する。
一例では、ランク1のDRAMは、データバス430に接続され、データDRAMは、データビット432を提供し、ECC DRAMは、ECCビット434を提供し、メタデータDRAMは、メタデータ(MD)ビット436を提供する。
【0070】
スプリットラインデータ428は、ランク0のデータの半部分を表し、スプリットラインデータ438は、ランク1のデータの半部分を表す。コントローラ440は、DIMM410へのメモリアクセスを制御するホストデバイスのコントローラを表す。エラー制御442は、ECCビットに基づいてデータビットに対するECCを実行するコントローラ440の能力を表す。データバス420上でスプリットラインデータとして扱われないデータの場合、エラー制御442は、ランク0に記憶されているECCに基づいてデータビットに対してECCを実行し得る。データバス430上のスプリットラインデータではないデータの場合、エラー制御442は、ランク1に記憶されているECCに基づいてデータビットに対してECCを実行し得る。どちらの場合も、ランクは個別に扱われ得る。そのような例では、メタデータDRAMとして識別されたDRAMは、非スプリットラインデータのためのECCデータを記憶し得る。
【0071】
一例では、分割制御444は、メタデータとしてECC容量を解放するために2つのランク間のスプリットデータとしてデータを記憶することを決定する。一例では、分割制御444は、ランク0およびランク1中にランク0のデータを分割することを決定する。一例では、分割制御444は、ランク0およびランク1中にランク1のデータを分割することを決定する。
【0072】
図5は、パラレルメモリリソース間でデータを分割してエラー訂正を行う処理の例のフロー図である。プロセス500は、本明細書の任意の例による、パラレルメモリリソースにスプリットラインアクセスを適用する処理の例を表す。プロセス500は、システム100、システム300、およびシステム400に従ってメモリコントローラによって実行され得る処理の例を表す。
【0073】
一例では、コントローラは、502で、パラレルメモリリソース中のデータの分割を参照して、スプリットアクセスで制御するメモリ部分を識別する。一例では、コントローラは、504で、識別された部分に対してスプリットメモリデータアクセスを実行する。メモリデータアクセスは、506で、読み出しまたは書き込みであることができる。
【0074】
書き込みアクセスの場合、506の書き込みブランチにおいて、一例では、コントローラは508で個別のサブ部分のECCを計算する。ECCの計算は、異なるサブ部分ごとに別々に計算され得、ECCビットパターンは、複数のリソース中に分散するのと対照的に1つのメモリリソースに記憶されている全てのデータのECCとは異なり得る。データがパラレルリソース中に分割される場合、より少ないECCビットがある。したがって、スプリットデータアクセスの場合、メタデータのために利用可能なビットがある。一例では、コントローラは、510で、サブ部分のためのメタデータを生成する。コントローラは、512でECCデータおよびメタデータとともに個々のサブ部分を書き込むことができる。
【0075】
読み出しアクセスの場合、506の読み出しブランチにおいて、一例では、コントローラは、514で、1個のメモリリソースから全てのデータを読み出す代わりに、目的のデータの個々のサブ部分を読み出す。コントローラは、516で、別個のサブ部分のECCを計算する。一例では、コントローラは、518で、サブ部分のメタデータをデコードする。
【0076】
図6は、スプリットラインECCに基づいて検出および訂正を実行するために行列を適用するためのチェックビット生成ロジックとシンドロームビット生成ロジックの例のブロック図である。H行列610は、システムECCのためのメモリコントローラによるECCの適用の単純化された例を表す。
【0077】
H行列610は、デバイス上のECCで使用するための16ビットのコード行列の例を表す。現代のコンピューティングシステムにおける典型的な操作コードワードは、16ビットを上回るものを含むことが理解されよう。しかしながら、16ビットH行列は、本明細書の任意の例によってオンメモリエラー検出訂正に使用されるオンダイECCのため、もしくは、本明細書の任意の例によるメモリコントローラまたはエラー制御によるシステムレベルECCのためのECC動作の原理を示す。
【0078】
行列610は、128ビットコードワードのハミングコードなど、SECハミングコードの部分であることができる。行列610は、16個のコードのみを示し、データビット[15:0]のそれぞれについて1つのコードビットである。一例では、行列610のそれぞれのコードは、1つのデータビットに対応する。示されている例では、各コードは8個のチェックビットCB [0:7]を含む。シンドロームがメモリに記憶されたデータワードおよびチェックビットから計算されるとき、ECCエンジンは、シンドロームが行列610内のコードの1つに対応するかを判断することができる。シンドロームがコードの1つと一致するとECCエンジンが判断した場合、ECCエンジンはエラーを訂正するために対応するデータビットをトグルする。チェックビット生成およびシンドロームビット生成の例が示されている。
【0079】
チェックビット生成ロジック602は、チェックビットを生成するためのECC動作を実行するためのロジックを表す。シンドロームビット生成ロジック604は、チェックビットと比較するためのシンドロームビットを生成するためのECC動作を実行するロジックを表す。図面における図の説明のために、チェックビットCB[0:2]に関するロジックのみが示され、それに対応して、シンドロームビットSB[0:2]のみが示されている。
【0080】
示されるように、シンドロームは、チェックビット生成およびシンドロームビット生成のためにECCロジックで完全にエンコードされることができる。一例では、チェックビット生成602は、書き込みデータワード620を受け取り、コードの1ビットにXOR演算を実行するためのXORゲートを含む。例えば、16個のコードワードビットに関するCB[0]の生成が示され、ビットD[10:0]は全て1であるが、ビットD[15:11]はゼロである。したがって、一例では、CB[0]の計算は、コードワードのビットD[10:0]のXOR622でのXOR演算を含む。同様に、シンドロームビットSB[0]の生成は、読み出しデータワード630を受け取り、XOR632での読み出しデータコードワードのビットD[10:0]のXOR演算を実行するためのロジックを含む。その後、XOR632の出力がCB[0]とXOR642でXORされ、SB[0]が生成される。
【0081】
技術的事項として、真のXOR演算は2つの入力に対してのみ存在でき、入力の1つのみが1である場合に限り、出力が1であることが理解されるだろう。しかしながら、CB[0]のためのXOR622やSB[0]のXOR632など、XOR演算のカスケードをマルチ入力XOR(2より大きい入力の数を意味する)として表すのが一般的な規則である。XOR演算には可換性があり、入力の複数のペアのXORを実行し、その後これらの演算の出力の直列XORは任意の順序で交換して同じ結果を得ることができる。したがって、XOR演算にはモジュロ2加算の実際上の効果があり、これは奇数パリティ検出にも等価である。奇数パリティ検出は、入力中に奇数個の1がある場合は出力として「1」を提供し、入力中に偶数個の1がある場合は出力ゼロを提供する。
【0082】
別の例では、16個のコードワードビットに関するCB[1]の生成が示され、ビットD[15:10]およびビットD[4:1]は1であるが、ビットD[9:5]及びD[0]はゼロである。XOR624は1のビットからCB[1]を計算する。同様に、CB[2]の生成では、ビットD[15:9]およびD[2:0]は1であり、ビットD[8:3]はゼロである。XOR626は、1のビットからCB[2]を計算する。
【0083】
シンドロームビット生成604は、読み出しデータワード630およびチェックビットワード640を受け取り、CB計算を記憶されたチェックビットと比較することによってシンドロームビットを生成するロジックを表す。同様に、16個のコードワードビットに関するSB[1]のシンドロームビット生成が示され、XOR634はD[15:10]およびD[4:1]のXORを計算し、その後、XOR644は、XOR634の出力とのCB[1]のXORによってSB[1]を計算する。同様に、16個のコードワードビットに関するSB[2]のシンドロームビット生成が示され、XOR636はD[15:9]およびD[2:0]のXORを計算し、その後、XOR646は、XOR636の出力とのCB[2]のXORによってSB[2]を計算する。
【0084】
チェックビットおよびシンドロームビットの決定に基づいて、システムは、例えばシンドロームビットと一致することが見出されたCB[7:0]のビットまたは列について、エラーおよび潜在的なフリップビットを識別することができる。ECSシステムは、そのような手法を適用して、メモリアドレスのスクラビングを実行する。一例では、システムは、ECCのエラー検出を適用してメモリエラーを検出し、メモリコントローラにエラー情報を提供して、本明細書の任意の例によってメモリコントローラがエラーパターンを検出しエラースクラブ操作を調整することを可能にする。
【0085】
図7は、システムレベルエラー検出訂正の例のブロック図である。システム700は、本明細書のホスト側またはメモリコントローラECCの任意の例によるシステムのシステムレベルECC回路の例を提供する。ホスト710は、コントローラ714、または、メモリ730へのアクセスを管理する等価もしくは代替のロジックもしくは回路もしくはコンポーネントを含む。コントローラ714は、メモリ730から読み出されたデータに対して外部ECCを実行する。一例では、メモリ730は、バス732を介してホスト710にデータを送信する前にアレイ736からのデータを検査して訂正するオンダイECC734を実装する。
【0086】
ホスト710は、メモリ730のアレイ736に記憶されたデータの要求を生成するオペレーションを実行するためのプロセッサ712を含む。データ書き込み要求に応答して、コントローラ714は、書き込みパス720を介して書き込みコマンドを生成することができる。読み出し要求について、コントローラ714は、読み出しパス740を介して読み出しデータを受け取る。
【0087】
書き込みパス720は、プロセッサ712からメモリ730に書き込まれるデータのパスを表す。プロセッサ712は、メモリ730に書き込むためのデータ722を提供する。一例では、コントローラ714は、メモリ内のデータとともに記憶するために、チェックビット生成器724でチェックビット726を生成する。チェックビット726は、ECCビットと呼ばれ得、メモリアレイへの書き込みおよびメモリアレイからの読み出しにおいて発生し得るエラーのエラー訂正を可能にする。データ722およびチェックビット726は、データバス732を介してアレイ736へとメモリ730に書き込まれる728におけるコードワードとして含まれることができる。
【0088】
読み出しパス740は、メモリ730からホスト710に読み出されるデータのパスを表す。一例では、書き込みパス720および読み出しパス740の少なくとも特定のハードウェアコンポーネントは、同じハードウェアである。一例では、メモリ730は、ホスト710からの読み出しコマンドに応答してデータをフェッチする。読み出しコードワード742は、アレイ736に記憶されたデータおよびチェックビットを表す。データ744およびチェックビット746は、読み出されたコードワード742のデータおよびチェックビットを表す。読み出しコードワード742は、デバイス[0:(N-1)]からのデータで構成されるコードワードを表す。一例では、これらはそれぞれ、読み出しコマンドの同じアドレスへの書き込みパス720に書き込まれるデータ722およびチェックビット726に対応する。
【0089】
一例では、書き込みコードワード728は、スプリットラインアクセスのために複数のパラレルリソースに提供される。スプリットラインアクセスで、一例では、コントローラ714はメタデータ772を生成することができる。したがって、書き込みコードワード728は、メモリ730に保存するためのメタデータ772を含むことができる。一例では、スプリットラインアクセスでは、データとともにホストに提供されることができるメタデータ772を含むことができる。一例では、メタデータはエラー訂正758をバイパスすることができる。
【0090】
読み出しパス740は、データ744およびチェックビット746にH行列計算を適用して読み出しデータ内のエラーを検出するためのシンドロームデコード752を含む。シンドロームデコード752は、読み出しデータのための適切なエラー情報の生成に使用されるシンドローム754を生成することができる。データ744は、検出されたエラーの訂正のために、エラー訂正758にも転送され得る。
【0091】
一例では、シンドロームデコード752は、シンドローム754をシンドローム生成器756に送り、エラーベクトルを生成させる。一例では、チェックビット生成器724およびシンドローム生成器756は、対応するH行列によって完全に指定される。一例では、読み出しデータ内にエラーが無い(例えば、ゼロシンドローム754)場合、シンドローム生成器756は、エラー無し信号762を生成する。一例では、読み出しデータ内に複数のエラーが存在する(例えば、対応するH行列のいずれの列にも一致しない非ゼロシンドローム754)場合、シンドローム生成器756は、DUE(検出済み未訂正エラー)信号764を生成する。DUE信号764は、ECCの適用によって訂正されることができなかったマルチビットエラーを示すことができる。
【0092】
一例では、シングルビットエラー(例えば、対応するH行列の1つの列に一致する非ゼロシンドローム754)が存在する場合、シンドローム生成器756は、エラー位置760を伴うCE(訂正済みエラー)信号を生成することができ、これは、エラー訂正ロジック758への訂正済みエラーの指示である。エラー訂正758は、データ744内の指定位置に訂正済みエラーを適用して、プロセッサ712に提供するべく出力されるための訂正済みデータ766を生成することができる。
【0093】
図8は、スプリットラインメモリアクセスを実装できるメモリサブシステムの例のブロック図である。システム800は、コンピューティングデバイスのプロセッサおよびメモリサブシステムの要素を含む。システム800は、システム100またはシステム300の例によるシステムの例である。
【0094】
一例では、メモリデバイス840のコントローラ850は、ECCロジック856を含む。ECCロジック856は、メモリ内のエラー検出訂正を可能にするためのメモリデバイス840のオンダイECCを表す。一例では、メモリコントローラ820は、本明細書の任意の例による、メモリからのデータのエラーについての判断を可能にするためのメモリコントローラ820内のロジックを表すエラー制御828を含む。一例では、エラー制御828は、本明細書の任意の説明によってECCを実行することができる。一例では、メモリコントローラ820は、本明細書の任意の例によるスプリットラインアクセスを持つパラレルリソースとしてのメモリデバイス840へのアクセスを制御するための分割制御(CTRL)892を含む。分割制御は、複数のリソースへのデータの提供を可能にし、それはECCデータの代わりにメタデータとして使用され得るデータ容量を解放する。一例では、メモリアレイ860は、本明細書の任意の例によるスプリットデータを表すためにスプリットデータ890を含む。一例では、メモリデバイス840は、スプリットアクセスデータに対してバーストチョップを実行するためのバーストチョップ862を含む。
【0095】
プロセッサ810は、オペレーティングシステム(OS)およびアプリケーションを実行し得るコンピューティングプラットフォームの処理ユニットを表し、当該処理ユニットは、メモリのホストまたはユーザと総称され得る。OSおよびアプリケーションは、メモリアクセスをもたらすオペレーションを実行する。プロセッサ810は、1つまたは複数の別個のプロセッサを含み得る。別個のプロセッサのそれぞれは、単一の処理ユニット、マルチコア処理ユニットまたはそれらの組み合わせを含み得る。処理ユニットは、CPU(中央演算処理装置)などのプライマリプロセッサ、GPU(グラフィックスプロセッシングユニット)などの周辺プロセッサまたはその組み合わせであり得る。メモリアクセスは、ネットワークコントローラまたはハードディスクコントローラなどのデバイスによっても開始され得る。そのようなデバイスは、バス(例えば、PCIエクスプレス)を介して、いくつかのシステム内のプロセッサと統合され得るか、もしくはプロセッサに取り付けられ得るか、またはそれらの組み合わせであり得る。システム800は、SоC(システムオンチップ)として実装され得るか、またはスタンドアロンコンポーネントとともに実装され得る。
【0096】
メモリデバイスへの言及は、異なるメモリタイプに適用できる。メモリデバイスは、多くの場合、揮発性メモリ技術を指す。揮発性メモリとは、デバイスへの電力が遮断された場合に状態(従ってそれに記憶されるデータ)が不定になるメモリである。不揮発性メモリとは、電力がデバイスに対して遮断されるとしても、その状態が確定しているメモリを指す。ダイナミック揮発性メモリは、デバイスに記憶されたデータをリフレッシュして状態を維持する必要がある。ダイナミック揮発性メモリの一例は、DRAM(ダイナミックランダムアクセスメモリ)、または同期DRAM(SDRAM)などの何らかの変形を含む。本明細書で説明されるメモリサブシステムは、DDR4(ダブルデータレートバージョン4、JESD79-4、2012年9月にJEDEC(Joint Electron Device Engineering Council、現在はJEDEC Solid State Technology Association)により最初に公開された)、LPDDR4(低電力DDRバージョン4、JESD209-4、2014年8月にJEDECにより最初に公開された)、WIO2(Wide I/O 2(WideIO2)、JESD229-2、2014年8月にJEDECにより最初に公開された)、HBM(高帯域幅メモリDRAM、JESD235A、2015年11月にJEDECにより最初に公開される)、DDR5(DDRバージョン5、2020年7月にJEDECにより最初に公開された)、LPDDR5(LPDDRバージョン5、JESD209-5、2019年2月にJEDECにより最初に公開された)、HBM2((HBMバージョン2)、現在JEDECによって議論中)、またはその他またはメモリ技術の組み合わせ、およびそのような仕様の派生または拡張に基づく技術などの複数のメモリ技術と互換性があり得る。
【0097】
一例では、揮発性メモリに追加して、またはその代わりに、メモリモジュールは、システムメモリバスに接続された不揮発性メモリを指す永続メモリDIMMまたは不揮発性システムメモリであり得る。そのようなメモリデバイスは、3次元クロスポイント(3DXP)メモリデバイスを含むことができる。3DXPは、バイトアドレス指定可能な不揮発性メモリデバイスまたはブロックアドレス指定可能な不揮発性メモリデバイスとして動作できる。メモリデバイスは、メモリセルの抵抗状態またはメモリセルの位相に基づいてデータを記憶する、不揮発性のバイトアドレス指定可能媒体またはブロックアドレス指定可能媒体を含み得る。一例では、メモリデバイスは、カルコゲナイド相変化材料(例えば、カルコゲナイドガラス)を使用し得る。一例では、システムメモリデバイスは、NANDフラッシュメモリ、NORフラッシュメモリ、シングルまたはマルチレベルの相変化メモリ(PCM)またはスイッチ付き相変化メモリ(PCMS)、抵抗メモリ、ナノワイヤメモリ、強誘電体トランジスタランダムアクセスメモリ(FeTRAM)、メモリスタ技術を組み込んだ磁気抵抗ランダムアクセスメモリ(MRAM)メモリ、またはスピン注入(STT)-MRAM、または上記のいずれかの組み合わせ、またはその他のメモリとすることができるか、あるいはそれらを含むことができる。
【0098】
メモリコントローラ820は、システム800用の1つまたは複数のメモリコントローラ回路またはデバイスを表す。メモリコントローラ820は、プロセッサ810による演算の実行に応答してメモリアクセスコマンドを生成する制御ロジックを表す。メモリコントローラ820は、1つまたは複数のメモリデバイス840にアクセスする。メモリデバイス840は、上記で言及されたいずれかのものに従うDRAMデバイスであり得る。一例では、メモリデバイス840は、異なるチャネルとして編成および管理される。各チャネルは、複数のメモリデバイスに並列に結合するバスおよび信号線に結合する。各チャネルは、独立して動作可能である。したがって、各チャネルは独立してアクセスおよび制御され、タイミング、データ転送、コマンドおよびアドレス交換、およびその他のオペレーションは各チャネルに別個である。結合とは、電気的結合、通信的結合、物理的結合、またはこれらの組み合わせを指すことができる。物理的結合は直接接触を含むことができる。電気的結合は、コンポーネント間の電気的な流れを可能にする、またはコンポーネント間の信号伝達を可能にする、またはその両方を可能にするインタフェースまたは相互接続を含む。通信的結合は、コンポーネントがデータを交換することを可能にする、有線または無線を含む接続を含む。
【0099】
一例では、各チャネルの設定は、別個のモードレジスタまたはその他のレジスタ設定によって制御される。一例では、各メモリコントローラ820が別個のメモリチャネルを管理するが、システム800は、単一のコントローラにより管理される複数のチャネルまたは単一のチャネル上の複数のコントローラを有するように構成され得る。一例では、メモリコントローラ820は、同じダイ上に実装されるか、またはプロセッサと同じパッケージ空間に実装されるロジックなど、ホストプロセッサ810の部分である。
【0100】
メモリコントローラ820は、上記で言及されたメモリチャネルなどのメモリバスに結合するI/Oインタフェースロジック822を含む。I/Oインタフェースロジック822(およびメモリデバイス840のI/Oインタフェースロジック842)は、ピン、パッド、コネクタ、信号線、トレースもしくはワイヤ、もしくは当該デバイスに接続する他のハードウェア、またはこれらの組み合わせを含み得る。I/Oインタフェースロジック822は、ハードウェアインタフェースを含み得る。示されるように、I/Oインタフェースロジック822は少なくとも、信号線用のドライバ/トランシーバを含む。一般に、集積回路インタフェース内のワイヤは、パッド、ピンまたはコネクタと結合して、デバイス間の信号線もしくはトレースまたは他のワイヤとインタフェースする。I/Oインタフェースロジック822は、デバイス間の信号線上で信号を交換するためのドライバ、受信機、トランシーバもしくは終端もしくは他の回路または回路の組み合わせを含み得る。信号の交換は、送信または受信のうちの少なくとも1つを含む。メモリコントローラ820からメモリデバイス840のI/O842へI/O822を結合するように示されるが、メモリデバイス840の群が並列にアクセスされるシステム800の実装では、複数のメモリデバイスがメモリコントローラ820の同じインタフェースへのI/Oインタフェースを含み得ることが理解される。1つまたは複数のメモリモジュール870を含むシステム800の実装では、I/O842は、メモリデバイス自体上のインタフェースハードウェアに追加して、メモリモジュールのインタフェースハードウェアを含み得る。他のメモリコントローラ820は、他のメモリデバイス840への別個のインタフェースを含む。
【0101】
メモリコントローラ820とメモリデバイス840との間のバスは、メモリコントローラ820をメモリデバイス840へ結合する複数の信号線として実装され得る。バスは通常、少なくとも、クロック(CLK)832、コマンド/アドレス(CMD)834および書き込みデータ(DQ)および読み出しデータ(DQ)836ならびにゼロまたはそれより多くの他の信号線838を含み得る。一例では、メモリコントローラ820とメモリとの間のバスまたは接続は、メモリバスと呼ばれ得る。一例では、メモリバスは、マルチドロップバスである。CMDの信号線は、「C/Aバス」(またはADD/CMDバス、またはコマンド(CまたはCMD)およびアドレス(AまたはADD)情報の転送を示す他の何らかの呼称)と呼ばれることができ、書き込みおよび読み出しDQの信号線は「データバス」と呼ばれることができる。一例では、独立したチャネルは、異なるクロック信号、C/Aバス、データバス、およびその他の信号線を有する。したがって、システム800は、独立のインタフェースパスが別個のバスと見なされ得るという意味において、複数の「バス」を有していると見なされ得る。明示的に示された線に追加して、バスは、ストローブ信号線、警告線、補助線、または他の信号線、またはそれらの組み合わせのうちの少なくとも1つを含むことができることが理解されるであろう。シリアルバス技術は、メモリコントローラ820とメモリデバイス840との間の接続のために用いられ得ることも理解される。シリアルバス技術の例が、8B10Bエンコーディングおよび各方向における信号の単一の差動ペアを介した埋め込みクロックでの高速データの伝送である。一例では、CMD834は、複数のメモリデバイスと並列に共有される信号線を表す。一例では、複数のメモリデバイスがCMD834のエンコーディングコマンド信号線を共有し、それぞれが、個々のメモリデバイスを選択するための別個のチップ選択(CS_n)信号線を有する。
【0102】
システム800の例において、メモリコントローラ820とメモリデバイス840との間のバスは、補助コマンドバスCMD834と書き込みデータおよび読み出しデータを伝達するための補助バスDQ836とを含むことが理解されるであろう。一例では、データバスは、読み出しデータおよび書き込み/コマンドデータ用の双方向線を含み得る。別の例では、補助バスDQ836は、ホストからメモリへの書き込みおよびデータのための単方向書き込み信号線を含み得るとともに、メモリからホストへの読み出しデータのための単方向線を含み得る。選択されたメモリ技術およびシステム設計に従って、他の信号838は、ストローブ線DQSなどのバスまたはサブバスに付随し得る。システム800の設計、またはある設計が複数の実装をサポートする場合の実装に基づいて、データバスは、メモリデバイス840毎に多少の帯域幅を有し得る。例えば、データバスは、x4インタフェース、x8インタフェース、x16インタフェースまたは他のインタフェースのいずれかを有するメモリデバイスをサポートできる。規定「xW」のWは、メモリデバイス840のインタフェースサイズまたはインタフェースの幅を指す整数であり、メモリコントローラ820とデータを交換するための信号線の数を表す。メモリデバイスのインタフェースサイズは、いくつのメモリデバイスがシステム800内のチャネル毎に同時に用いられ得るか、または同じ信号線へ並列に結合され得るかに関する制御要因である。一例では、高帯域幅メモリデバイス、ワイドインタフェースデバイス、またはスタックメモリ構成、またはそれらの組み合わせは、x128インタフェース、x256インタフェース、x512インタフェース、x1024インタフェース、または他のデータバスインタフェース幅などのより幅広いインタフェースを使用可能にすることができる。
【0103】
一例では、メモリデバイス840およびメモリコントローラ820は、バーストで、または一連の連続するデータ転送で、データバスを介してデータを交換する。バーストは、バス周波数に関連する転送サイクルの数に対応する。一例では、転送サイクルは、同じクロックまたはストローブ信号エッジ(例えば、立ち上がりエッジ)で生じる転送の全クロックサイクルであり得る。一例では、システムクロックのサイクルを参照する全クロックサイクルは、複数の単位間隔(UI)へ分割される。各UIは、転送サイクルである。例えば、ダブルデータレート転送は、クロック信号の両方のエッジ(例えば、立ち上がりおよび立ち下がり)でトリガする。バーストは、構成された数のUIにわたって続き得る。これは、レジスタに記憶される構成またはオンザフライでトリガされる構成であり得る。例えば、一連の8個の連続する転送期間は、バースト長8(BL8)と見なされ得、各メモリデバイス840は、各UIでデータを転送できる。したがって、BL8で動作するx8メモリデバイスは、64ビットのデータを転送できる(8本のデータ信号線×バーストを介して線毎に転送される8データビット)。この単純な例は、例示に過ぎず、限定的なものではないことが理解されるであろう。
【0104】
メモリデバイス840は、システム800用のメモリリソースを表す。一例では、各メモリデバイス840は、別個のメモリダイである。一例では、各メモリデバイス840は、デバイスまたはダイ毎に複数の(例えば2個の)チャネルとインタフェースし得る。各メモリデバイス840は、デバイスの実装により決定される帯域幅(例えば、x16もしくはx8または何らかの他のインタフェース帯域幅)を有するI/Oインタフェースロジック842を含む。I/Oインタフェースロジック842により、メモリデバイスは、メモリコントローラ820とインタフェースすることが可能になる。I/Oインタフェースロジック842は、ハードウェアインタフェースを含み得、メモリコントローラのI/O822に従い得るが、メモリデバイスエンドにおけるものである。一例では、複数のメモリデバイス840は、同じコマンドおよびデータバスへ並列に接続される。別の例では、複数のメモリデバイス840は、同じコマンドバスへ並列に接続され、異なるデータバスに接続される。例えば、システム800は、並列に結合されている複数のメモリデバイス840を用いて構成され得る。各メモリデバイスは、コマンドに応じて、それぞれの内部のメモリリソース860にアクセスする。書き込み操作の場合、個々のメモリデバイス840は、データワード全体のうちのある部分を書き込むことができ、読み出し操作の場合、個々のメモリデバイス840は、データワード全体のある部分をフェッチできる。ワードの残りのビットは、他のメモリデバイスにより並列に提供または受信される。
【0105】
一例では、メモリデバイス840は、コンピューティングデバイスのマザーボードまたはホストシステムプラットフォーム(例えば、プロセッサ810が配置されるPCB(プリント回路基板))上に直接配置される。一例では、メモリデバイス840は、メモリモジュール870へ編成され得る。一例では、メモリモジュール870は、デュアルインラインメモリモジュール(DIMM)を表す。一例では、メモリモジュール870は、アクセスまたは制御回路のうちの少なくとも部分を共有するための複数のメモリデバイスの他の編成を表す。当該回路は、ホストシステムプラットフォームとは別個の回路、別個のデバイスまたは別個の基板であり得る。メモリモジュール870は、複数のメモリデバイス840を含むことができ、メモリモジュールは、それらに配置されて含まれるメモリデバイスへの複数の別個のチャネルのためのサポートを含むことができる。別の例では、メモリデバイス840は、例えばマルチチップモジュール(MCM)、パッケージオンパッケージ、スルーシリコンビア(TSV)もしくは他の技術またはそれらの組み合わせなどの技術によるなどによって、メモリコントローラ820と同じパッケージへ組み込まれ得る。同様に、一例では、複数のメモリデバイス840は、メモリモジュール870へ組み込まれてよく、それ自体が、メモリコントローラ820と同じパッケージへ組み込まれ得る。これらの実装および他の実装の場合、メモリコントローラ820はホストプロセッサ810の部分であり得ることが理解されるだろう。
【0106】
メモリデバイス840はそれぞれ、1つまたは複数のメモリアレイ860を含む。メモリアレイ860は、アドレス指定可能なメモリ位置またはデータの記憶位置を表す。通常、メモリアレイ860は、データの行として管理され、ワードライン(行)およびビットライン(行内の個々のビット)の制御を介してアクセスされる。メモリアレイ860は、メモリの別個のチャネル、ランク、およびバンクとして編成され得る。チャネルは、メモリデバイス840内の記憶位置への独立の制御パスを指し得る。ランクは、並列に並んだ複数のメモリデバイスにわたる共通の位置(例えば、異なるデバイス内の同じ行アドレス)を指し得る。バンクは、メモリデバイス840内のメモリ位置のサブアレイを指し得る。一例では、メモリのバンクは、サブバンク用の共有回路(例えば、ドライバ、信号線、制御ロジック)のうちの少なくとも部分を有するサブバンクへ分割される。これにより、別個のアドレス指定およびアクセスが可能になる。チャネル、ランク、バンク、サブバンク、バンク群、またはメモリ位置の他の編成、および当該編成の組み合わせは、それらの物理リソースへの応用において重複し得ることが理解されるだろう。例えば、同じ物理メモリ位置は、ランクに属すこともあり得る特定のバンクとしての特定のチャネルを介してアクセスされ得る。したがって、メモリリソースの編成は、排他的にではなく、包括的に理解されるだろう。
【0107】
一例では、メモリデバイス840は、1つまたは複数のレジスタ844を含む。レジスタ844は、メモリデバイスの操作用の構成または設定を提供する1つまたは複数のストレージデバイスまたは記憶位置を表す。一例では、レジスタ844は、制御操作または管理操作の部分としてメモリコントローラ820によりアクセスされるデータを記憶するためのメモリデバイス840の記憶位置を提供できる。一例では、レジスタ844は、1つまたは複数のモードレジスタを含む。一例では、レジスタ844は、1つまたは複数の多目的レジスタを含む。レジスタ844内の位置の構成により、メモリデバイス840は、異なる「モード」で動作するように構成され得る。コマンド情報により、モードに基づいて、メモリデバイス840内の異なるオペレーションがトリガされ得る。加えて、または代替的に、異なるモードにより、モードに応じて、アドレス情報または他の信号線から異なる操作もトリガされ得る。レジスタ844の設定は、I/O設定の構成(例えば、タイミング、終端またはODT(オンダイ終端)846、ドライバ構成または他のI/O設定)を示し得る。
【0108】
一例では、メモリデバイス840は、I/O842に関連付けられたインタフェースハードウェアの部分としてのODT846を含む。ODT846は、上述のように構成され得るとともに、指定された信号線へのインタフェースに適用されるインピーダンスの設定を提供し得る。一例では、ODT846は、DQ信号線に適用される。一例では、ODT846は、コマンド信号線に適用される。一例では、ODT846は、アドレス信号線に適用される。一例では、ODT846は、前述のものの任意の組み合わせに適用され得る。ODT設定は、メモリデバイスがアクセス操作の選択されたターゲットであるか、または非ターゲットデバイスであるかに基づいて変更され得る。ODT846設定は、終端線上のシグナリングのタイミングおよび反映に影響を及ぼし得る。ODT846に対する慎重な制御により、適用されるインピーダンスおよびロードの一致度が向上した、より高速な操作が可能になり得る。ODT846は、I/Oインタフェース842、822(例えば、DQ線用のODTまたはCA線用のODT)の特定の信号線に適用され得るが、必ずしも全ての信号線に適用されるわけではない。
【0109】
メモリデバイス840は、メモリデバイス内の内部オペレーションを制御するためのメモリデバイス内の制御ロジックを表すコントローラ850を含む。例えば、コントローラ850は、メモリコントローラ820により送信されるコマンドをデコードするとともに、コマンドを実行しまたは満足させるための内部オペレーションを生成する。コントローラ850は、内部コントローラと呼ばれ得、ホストのメモリコントローラ820とは別個のものである。コントローラ850は、どのモードが選択されているかをレジスタ844に基づいて決定でき、メモリリソース860へのアクセスのためのオペレーションまたは他のオペレーションの内部での実行を、選択されるモードに基づいて構成できる。コントローラ850は、メモリデバイス840内のビットのルーティングを制御するための制御信号を生成して、選択されるモード用の適切なインタフェースを提供し、コマンドを適切なメモリ位置またはアドレスへ送る。コントローラ850は、コマンド信号線およびアドレス信号線上で受信されるコマンドエンコーディングをデコードできるコマンドロジック852を含む。したがって、コマンドロジック852は、コマンドデコーダであり得るか、またはコマンドデコーダを含み得る。コマンドロジック852を用いることで、メモリデバイスは、コマンドを識別でき、要求されたコマンドを実行するための内部オペレーションを生成できる。
【0110】
メモリコントローラ820を再び参照すると、メモリコントローラ820は、メモリデバイス840へ送信すべきコマンドを生成するためのロジックまたは回路を表すコマンド(CMD)ロジック824を含む。コマンドの生成は、スケジューリング前のコマンド、またはキューに入れられたコマンドの送信の準備を整えることを指し得る。一般に、メモリサブシステム内のシグナリングは、メモリデバイスがコマンドを実行すべき1つまたは複数のメモリ位置を指示または選択するためのコマンド内またはコマンドに付随するアドレス情報を含む。メモリデバイス840のトランザクションのスケジューリングに応答して、メモリコントローラ820は、メモリデバイス840にコマンドを実行させるためにI/O822を介してコマンドを発行できる。一例では、メモリデバイス840のコントローラ850は、メモリコントローラ820からI/O842を介して受信したコマンドおよびアドレス情報を受信およびデコードする。受信したコマンドおよびアドレス情報に基づいて、コントローラ850は、メモリデバイス840内のロジックおよび回路のオペレーションのタイミングを制御することでコマンドを実行できる。コントローラ850は、タイミング要件およびシグナリング要件など、メモリデバイス840内の規格または仕様への準拠を担う。メモリコントローラ820は、アクセスのスケジューリングおよび制御により、規格または仕様への準拠を実装できる。
【0111】
メモリコントローラ820は、メモリデバイス840へ送信すべきトランザクションを生成および順序付けするためのロジックまたは回路を表すスケジューラ830を含む。1つの観点から、メモリコントローラ820の主な機能は、メモリデバイス840へのメモリアクセスおよび他のトランザクションをスケジューリングすることと言うことができる。そのようなスケジューリングは、プロセッサ810によるデータについての要求を実装するために、かつ、(例えば、リフレッシュに関連するコマンドの利用などで)データの完全性を維持するためにトランザクション自体を生成することを含み得る。トランザクションは、1つまたは複数のコマンドを含み得るので、クロックサイクルまたは単位間隔などの1または複数のタイミングサイクルでのコマンドもしくはデータまたはそれらの両方の転送をもたらし得る。トランザクションは、読み出しもしくは書き込みもしくは関連するコマンドまたはそれらの組み合わせなどのアクセスのためのものであり得る。他のトランザクションは、構成、設定、データ完全性についてのメモリ管理コマンド、もしくは他のコマンドまたはそれらの組み合わせを含み得る。
【0112】
メモリコントローラ820は通常、トランザクションの選択および順序付けを可能にしてシステム800の性能を向上させるためのスケジューラ830などのロジックを含む。したがって、メモリコントローラ820は、未処理のトランザクションのうちのどれがどの順序でメモリデバイス840へ送信されるべきかを選択できる。これは通常、単純な先入れ先出しアルゴリズムよりもはるかに複雑なロジックを用いて実現される。メモリコントローラ820は、メモリデバイス840へのトランザクションの伝送を管理するとともに、トランザクションに関連するタイミングを管理する。一例では、トランザクションには確定的なタイミングがある。当該タイミングは、メモリコントローラ820により管理され得るとともに、トランザクションをスケジューラ830でどのようにスケジューリングするかの決定において使用され得る。
【0113】
一例では、メモリコントローラ820は、リフレッシュ(REF)ロジック826を含む。リフレッシュロジック826は、揮発性であるメモリリソースに使用され、確定的な状態を保持するためにリフレッシュされる必要があり得る。一例では、リフレッシュロジック826は、リフレッシュの位置と、実行すべきリフレッシュのタイプとを示す。リフレッシュロジック826は、メモリデバイス840内でのセルフリフレッシュをトリガできるか、もしくはリフレッシュコマンドを送信することにより外部リフレッシュ(自動リフレッシュコマンドと呼ばれ得る)を実行できるか、またはそれらの組み合わせを行うことができる。一例では、メモリデバイス840内のコントローラ850は、メモリデバイス840内でリフレッシュを適用するためのリフレッシュロジック854を含む。一例では、リフレッシュロジック854は、内部オペレーションを生成して、メモリコントローラ820から受信された外部リフレッシュに従ってリフレッシュを実行する。リフレッシュロジック854は、リフレッシュがメモリデバイス840に向けられているか、またコマンドに応答してどのメモリリソース860をリフレッシュすべきかを決定することができる。
【0114】
図9は、スプリットラインメモリアクセスを実装できるコンピューティングシステムの例のブロック図である。システム900は、本明細書における任意の例によるコンピューティングデバイスを表し、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、サーバ、ゲーミングシステムもしくはエンタテインメント制御システム、組み込みコンピューティングデバイスまたは他の電子デバイスであり得る。システム900は、システム100またはシステム300の例によるシステムを表す。
【0115】
一例では、メモリコントローラ922は、本明細書の任意の例によるスプリットラインアクセスを持つパラレルリソースとしてのメモリ930へのアクセスを制御するための分割制御992を含む。本明細書の任意の例によると、分割制御は、複数のリソースへのデータの提供を可能にし、それはECCデータの代わりにメタデータとして使用され得るデータ容量を解放する。一例では、メモリ930は、本明細書の任意の例によるスプリットデータを表すためにスプリットデータ938を含む。
【0116】
システム900は、任意のタイプのマイクロプロセッサ、中央演算処理装置(CPU)、グラフィックスプロセッシングユニット(GPU)、処理コア、若しくは他の処理ハードウェア、又は、これらの組み合わせを含み得るプロセッサ910を含み、システム900の命令の処理若しくは実行を提供する。プロセッサ910は、ホストプロセッサデバイスであり得る。プロセッサ910は、システム900のオペレーション全体を制御し、1つまたは複数のプログラマブル汎用または特定用途向けマイクロプロセッサ、デジタル信号プロセッサ(DSP)、プログラマブルコントローラ、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)またはそのようなデバイスの組み合わせであり得るか、またはそれらを含み得る。
【0117】
システム900は、ブートコード(例えば、基本入出力システム(BIOS))、構成設定、セキュリティハードウェア(例えば、トラステッドプラットフォームモジュール(TPM))、またはホストOSの外部で動作する他のシステムレベルのハードウェアを記憶するためのストレージを表す起動/設定916を含む。起動/設定916は、リードオンリメモリ(ROM)、フラッシュメモリ、または他のメモリデバイスなどの不揮発性ストレージデバイスを含むことができる。
【0118】
一例では、システム900は、プロセッサ910に結合されているインタフェース912を含み、それはメモリサブシステム920またはグラフィックスインタフェースコンポーネント940など、より高帯域幅の接続を必要とする、システムコンポーネント用のより高速なインタフェースまたは高スループットインタフェースを表し得る。インタフェース912は、スタンドアロンコンポーネントであり得るか、またはプロセッサダイに統合され得るインタフェース回路を表す。インタフェース912は、回路としてプロセッサダイ上に統合され得るか、またはコンポーネントとしてシステムオンチップに統合され得る。存在する場合、グラフィックスインタフェース940は、システム900のユーザに視覚表示を提供するためのグラフィックスコンポーネントにインタフェースする。グラフィックスインタフェース940は、スタンドアロンコンポーネントであり得るか、またはプロセッサダイもしくはシステムオンチップに統合され得る。一例では、グラフィックスインタフェース940は、ユーザに出力を提供する高精細度(HD)ディスプレイまたは超高精細度(UHD)ディスプレイを駆動できる。一例では、ディスプレイは、タッチスクリーンディスプレイを含み得る。一例では、グラフィックスインタフェース940は、メモリ930に記憶されたデータに基づいて、もしくはプロセッサ910により実行された演算に基づいて、またはそれらの両方に基づいて表示を生成する。
【0119】
メモリサブシステム920は、システム900のメインメモリを表し、プロセッサ910により実行されるコードまたはルーチンの実行に使用されるデータ値のためのストレージを提供する。メモリサブシステム920は、DRAMなどの1つまたは複数の種類のランダムアクセスメモリ(RAM)、3DXP(3次元クロスポイント)もしくは他のメモリデバイスまたはそのようなデバイスの組み合わせなど、1つまたは複数のメモリデバイスを含み得る。メモリ930は、とりわけ、システム900内での命令の実行用のソフトウェアプラットフォームを提供するためのオペレーティングシステム(OS)932を記憶およびホストする。加えて、アプリケーション934は、メモリ930からOS932のソフトウェアプラットフォーム上で実行され得る。アプリケーション934は、プログラムを表す。当該プログラムは、1つまたは複数の機能の実行を行うためのそれらの独自の動作ロジックを有する。プロセス936は、OS932または1つまたは複数のアプリケーション934、またはこれらの組み合わせに補助的機能を提供するエージェントまたはルーチンを表す。OS932、アプリケーション934およびプロセス936は、システム900用の機能を提供するためのソフトウェアロジックを提供する。一例では、メモリサブシステム920は、コマンドを生成してメモリ930へ発行するメモリコントローラであるメモリコントローラ922を含む。メモリコントローラ922は、プロセッサ910の物理的部分またはインタフェース912の物理的部分であり得ることが理解されるだろう。例えば、メモリコントローラ922は、例えばプロセッサダイまたはシステムオンチップに統合されるなど、プロセッサ910とともに回路に統合される統合メモリコントローラであり得る。
【0120】
具体的には示されていないが、システム900は、メモリバス、グラフィックスバス、インタフェースバスまたは他のものなど、デバイス間の1つまたは複数のバスまたはバスシステムを含み得ることが理解される。バスまたは他の信号線は、コンポーネントを互いに通信可能にまたは電気的に結合できるか、またはコンポーネントを通信可能にかつ電気的に結合できる。バスは、物理通信線、ポイントツーポイント接続、ブリッジ、アダプタ、コントローラもしくは他の回路またはそれらの組み合わせを含み得る。バスは、例えば、システムバス、周辺コンポーネント相互接続(PCI)バス、ハイパートランスポートアーキテクチャバスもしくは業界標準アーキテクチャ(ISA)バス、スモールコンピュータシステムインタフェース(SCSI)バス、ユニバーサルシリアルバス(USB)もしくは他のバスのうちの1つまたは複数またはそれらの組み合わせを含み得る。
【0121】
一例では、システム900は、インタフェース912に結合され得るインタフェース914を含む。インタフェース914は、インタフェース912よりも低速なインタフェースであり得る。一例では、インタフェース914は、スタンドアロンコンポーネントおよび集積回路を含み得るインタフェース回路を表す。一例では、複数のユーザインタフェースコンポーネントもしくは周辺コンポーネントまたはそれらの両方がインタフェース914に結合する。ネットワークインタフェース950は、1つまたは複数のネットワークを介してリモートデバイス(例えば、サーバまたは他のコンピューティングデバイス)と通信する能力をシステム900に提供する。ネットワークインタフェース950は、イーサネット(登録商標)アダプタ、無線相互接続コンポーネント、セルラネットワーク相互接続コンポーネント、USB(ユニバーサルシリアルバス)または他の有線もしくは無線規格ベースインタフェースもしくはプロプライエタリインタフェースを含み得る。ネットワークインタフェース950は、リモートデバイスとデータを交換できる。当該交換は、メモリに記憶されたデータの送信またはメモリに記憶されたデータの受信を含み得る。
【0122】
一例では、システム900は、1つまたは複数の入力/出力(I/O)インタフェース960を含む。I/Oインタフェース960は、1つまたは複数のインタフェースコンポーネントを含み得る。当該インタフェースコンポーネントを通じて、ユーザは、システム900とやり取りする(例えば、オーディオ、英数字、触覚/タッチまたは他のインタフェース方式)。周辺インタフェース970は、具体的には上述されていない任意のハードウェアインタフェースを含み得る。周辺機器は一般に、システム900へ従属的に接続するデバイスを指す。従属的な接続は、システム900がソフトウェアプラットフォームもしくはハードウェアプラットフォームを提供する接続であるか、または、当該プラットフォーム上で操作が実行され、かつ当該プラットフォームを用いてユーザがやり取りする接続である。
【0123】
一例では、システム900は、データを不揮発性方式で記憶するためのストレージサブシステム980を含む。一例では、特定のシステム実装では、ストレージ980の少なくとも特定のコンポーネントがメモリサブシステム920のコンポーネントと重複し得る。ストレージサブシステム980は、ストレージデバイス984を含み、それは1つまたは複数の磁気ディスク、ソリッドステートディスク、NAND、3DXPディスクもしくは光ベースディスクまたはそれらの組み合わせなど、大量のデータを不揮発性方式で記憶するための任意の従来の媒体であり得るか、または当該媒体を含み得る。ストレージ984は、コードまたは命令およびデータ986を永続的な状態で保持する(すなわち、システム900への電力が遮断されても値が保持される)。ストレージ984は概して「メモリ」であると見なされ得るが、メモリ930は通常、命令をプロセッサ910に提供するための実行メモリまたは動作メモリである。ストレージ984は不揮発性であるが、メモリ930は揮発性メモリを含み得る(すなわち、システム900への電力が遮断された場合、データの値または状態は不定になる)。一例では、ストレージサブシステム980は、ストレージ984とインタフェースするためのコントローラ982を含む。一例では、コントローラ982は、インタフェース914またはプロセッサ910の物理的部分であるか、またはプロセッサ910およびインタフェース914の両方に回路またはロジックを含み得る。
【0124】
電源902はシステム900のコンポーネントに電力を提供する。より具体的には、電源902は通常、システム900内の1つまたは複数の電力供給装置904とインタフェースして、システム900のコンポーネントに電力を提供する。一例では、電力供給装置904は、壁のコンセントへ差し込むためのAC-DC(交流-直流)アダプタを含む。そのようなAC電源は、再生可能エネルギー(例えば、太陽光発電)電源902であり得る。一例では、電源902は、外部AC-DC変換器などのDC電源を含む。一例では、電源902または電力供給装置904は、充電磁場への近接を介して充電するための無線充電ハードウェアを含む。一例では、電源902は、内部バッテリまたは燃料電池電源を含み得る。
【0125】
図10は、スプリットラインメモリアクセスを実装できるモバイルデバイスの例のブロック図である。システム1000は、コンピューティングタブレット、携帯電話もしくはスマートフォン、ウェアラブルコンピューティングデバイスもしくは他のモバイルデバイスまたは組み込みコンピューティングデバイスなどのモバイルコンピューティングデバイスを表す。これらのコンポーネントのうちの特定のものが一般に示されているが、そのようなデバイスの全てのコンポーネントがシステム1000内に示されているわけではないことが理解される。システム1000は、システム100またはシステム300の例によるシステムを表す。
【0126】
一例では、メモリコントローラ1064は、本明細書の任意の例によるスプリットラインアクセスを持つパラレルリソースとしてのメモリ1062へのアクセスを制御するための分割制御1092を含む。本明細書の任意の例により、分割制御は、複数のリソースへのデータの提供を可能にし、ECCデータの代わりにメタデータとして使用され得るデータ容量を解放する。一例では、メモリ1062は、本明細書の任意の例によるスプリットデータを表すためにスプリットデータ1094を含む。
【0127】
システム1000は、システム1000の主な処理動作を実行するプロセッサ1010を含む。プロセッサ1010は、ホストプロセッサデバイスであり得る。プロセッサ1010は、マイクロプロセッサ、アプリケーションプロセッサ、マイクロコントローラ、プログラマブルロジックデバイスまたは他の処理手段などの1つまたは複数の物理デバイスを含み得る。プロセッサ1010により実行される処理動作は、アプリケーションおよびデバイス機能が実行されるオペレーティングプラットフォームまたはオペレーティングシステムの実行を含む。処理動作は、人間のユーザもしくは他のデバイスとのI/O(入力/出力)に関連する操作、電力管理に関連する操作、別のデバイスへのシステム1000の接続に関連するオペレーションまたはそれらの組み合わせを含む。処理動作は、オーディオI/O、表示I/Oもしくは他のインタフェース方式またはそれらの組み合わせに関連するオペレーションも含み得る。プロセッサ1010は、メモリに記憶されたデータを実行し得る。プロセッサ1010は、メモリに記憶されたデータを書き込むまたは編集することができる。
【0128】
一例では、システム1000は、1つまたは複数のセンサ1012を含む。センサ1012は、外部センサへの埋め込みセンサもしくはインタフェースまたはそれらの組み合わせを表す。センサ1012により、システム1000は、システム1000が実装される環境またはデバイスの1つまたは複数の条件を監視または検出することが可能になる。センサ1012は、環境センサ(温度センサ、動き検出器、光検出器、カメラ、化学センサ(例えば、一酸化炭素センサ、二酸化炭素センサもしくは他の化学センサ)など)、圧力センサ、加速度計、ジャイロスコープ、医療センサもしくは生理機能センサ(例えば、バイオセンサ、心拍数モニタもしくは生理学的な属性を検出するための他のセンサ)もしくは他のセンサまたはそれらの組み合わせを含み得る。センサ1012は、指紋認識システム、顔検出もしくは認識システムまたはユーザの特徴を検出または認識する他のシステムなどの生体認証システム用のセンサも含み得る。センサ1012は、幅広く理解されるべきであり、システム1000とともに実装され得る多くの異なるタイプのセンサに対する限定として理解されるべきではない。一例では、1つまたは複数のセンサ1012は、プロセッサ1010に統合されたフロントエンド回路を介して、プロセッサ1010に結合する。一例では、1つまたは複数のセンサ1012は、システム1000の別のコンポーネントを介して、プロセッサ1010に結合する。
【0129】
一例では、システム1000は、ハードウェア(例えば、オーディオハードウェアおよびオーディオ回路)と、コンピューティングデバイスへのオーディオ機能の提供に関連付けられたソフトウェア(例えば、ドライバ、コーデック)コンポーネントとを表すオーディオサブシステム1020を含む。オーディオ機能は、スピーカ出力またはヘッドフォン出力およびマイク入力を含み得る。そのような機能のためのデバイスは、システム1000へ統合され得るか、またはシステム1000に接続され得る。一例では、ユーザは、プロセッサ1010により受信および処理されるオーディオコマンドを提供することにより、システム1000とやり取りする。
【0130】
ディスプレイサブシステム1030は、ユーザに提示するための視覚表示を提供するハードウェア(例えば、ディスプレイデバイス)コンポーネントおよびソフトウェアコンポーネント(例えば、ドライバ)を表す。一例では、ディスプレイは、ユーザがコンピューティングデバイスとやり取りするための触覚コンポーネントまたはタッチスクリーン要素を含む。ディスプレイサブシステム1030は、ユーザに表示を提供するために使用される特定のスクリーンまたはハードウェアデバイスを含むディスプレイインタフェース1032を含む。一例では、ディスプレイインタフェース1032は、表示に関連する少なくともいくつかの処理を実行するための、プロセッサ1010(グラフィックスプロセッサなど)とは別個のロジックを含む。一例では、ディスプレイサブシステム1030は、ユーザへの出力および入力の両方を提供するタッチスクリーンデバイスを含む。一例では、ディスプレイサブシステム1030は、ユーザに出力を提供する高精細度(HD)ディスプレイまたは超高精細度(UHD)ディスプレイを含む。一例では、ディスプレイサブシステムは、タッチスクリーンディスプレイを含むか、またはタッチスクリーンディスプレイを駆動する。一例では、ディスプレイサブシステム1030は、メモリに記憶されたデータに基づいて、もしくはプロセッサ1010により実行されるオペレーションに基づいて、またはそれらの両方に基づいて表示情報を生成する。
【0131】
I/Oコントローラ1040は、ユーザとのインタラクションに関連するハードウェアデバイスおよびソフトウェアコンポーネントを表す。I/Oコントローラ1040は、オーディオサブシステム1020もしくはディスプレイサブシステム1030またはそれらの両方の部分であるハードウェアを管理するように動作し得る。加えて、I/Oコントローラ1040は、システム1000に接続する追加のデバイスのための接続ポイントを示す。当該接続ポイントを通じて、ユーザは、システムとやり取りし得る。例えば、システム1000に取り付けられ得るデバイスは、マイクデバイス、スピーカシステムもしくはステレオシステム、ビデオシステムもしくは他のディスプレイデバイス、キーボードデバイスもしくはキーパッドデバイス、ボタン/スイッチ、もしくは、カードリーダなどの特定の応用品とともに使用されるための他のI/Oデバイス、または他のデバイスを含み得る。
【0132】
上述のように、I/Oコントローラ1040は、オーディオサブシステム1020もしくはディスプレイサブシステム1030またはそれらの両方とやり取りできる。例えば、マイクまたは他のオーディオデバイスを通じた入力により、システム1000の1つまたは複数のアプリケーションまたは機能についての入力またはコマンドが提供され得る。加えて、オーディオ出力は、ディスプレイ出力の代わりに、またはディスプレイ出力に追加して提供され得る。別の例では、ディスプレイサブシステムがタッチスクリーンを含む場合、ディスプレイデバイスは、少なくとも部分的にI/Oコントローラ1040により管理され得る入力デバイスとしても機能する。I/Oコントローラ1040により管理されるI/O機能を提供するための追加のボタンまたはスイッチもまたシステム1000上に存在し得る。
【0133】
一例では、I/Oコントローラ1040は、加速度計、カメラ、光センサもしくは他の環境センサ、ジャイロスコープ、全地球測位システム(GPS)もしくはシステム1000に含まれ得る他のハードウェアまたはセンサ1012などのデバイスを管理する。入力は、直接的なユーザインタラクションの部分であり得るだけでなく、その操作(ノイズのフィルタリング、輝度検出のための表示の調節、カメラ用のフラッシュの適用または他の機能など)に影響を及ぼすようにシステムに環境入力を提供することであり得る。
【0134】
一例では、システム1000は、バッテリの電力使用量と、バッテリの充電と省電力動作に関連する機能とを管理する電力管理1050を含む。電力管理1050は、システム1000のコンポーネントに電力を提供する電源1052からの電力を管理する。一例では、電源1052は、壁のコンセントへ差し込むためのAC-DC(交流-直流)アダプタを含む。そのようなAC電源は、再生可能エネルギー(例えば、太陽光発電、動きベース電力)であり得る。一例では、電源1052は、外部AC-DC変換器などのDC電源により提供され得るDC電力のみを含む。一例では、電源1052は、充電磁場への近接を介して充電するための無線充電ハードウェアを含む。一例では、電源1052は、内部バッテリまたは燃料電池電源を含み得る。
【0135】
メモリサブシステム1060は、情報をシステム1000に記憶するためのメモリデバイス1062を含む。メモリサブシステム1060は、不揮発性(メモリデバイスへの電力が遮断された場合に状態が変わらない)メモリデバイスもしくは揮発性(メモリデバイスへの電力が遮断された場合に状態が不定になる)メモリデバイスまたはそれらの組み合わせを含み得る。メモリ1060は、アプリケーションデータ、ユーザデータ、音楽、写真、文書または他のデータだけでなく、システム1000のアプリケーションおよび機能の実行に関連するシステムデータ(長期間のものであるかまたは一時的なものであるかを問わない)を記憶できる。一例では、メモリサブシステム1060は、メモリコントローラ1064(システム1000の制御部の部分とも見なされ得るとともに、プロセッサ1010の部分と潜在的に見なされ得る)を含む。メモリコントローラ1064は、コマンドを生成および発行してメモリデバイス1062へのアクセスを制御するスケジューラを含む。
【0136】
接続1070は、ハードウェアデバイス(例えば、無線コネクタもしくは有線コネクタおよび通信ハードウェアまたは有線ハードウェアと無線ハードウェアとの組み合わせ)およびシステム1000が外部デバイスと通信することを可能にするためのソフトウェアコンポーネント(例えば、ドライバ、プロトコルスタック)を含む。外部デバイスは、他のコンピューティングデバイス、無線アクセスポイントまたは基地局などの別個のデバイス、および、ヘッドセット、プリンタまたは他のデバイスなどの周辺機器であり得る。一例では、システム1000は、メモリへの記憶のために、またはディスプレイデバイスでの表示のために、外部デバイスとデータを交換する。交換されるデータは、データの読み出し、書き込みまたは編集のためにメモリに記憶されるデータまたはメモリに既に記憶されているデータを含み得る。
【0137】
接続1070は、複数の異なるタイプの接続を含み得る。概括するために、システム1000は、セルラ接続1072および無線接続1074とともに示される。セルラ接続1072は概して、例えばGSM(登録商標)(グローバルシステムフォーモバイルコミュニケーションズ)を介して提供されるなど無線キャリアにより提供されるセルラネットワーク接続もしくはその変形規格もしくは派生規格、もしくはCDMA(符号分割多重アクセス)もしくはその変形規格もしくは派生規格、TDM(時分割多重化)もしくはその変形規格もしくは派生規格、LTE(「4G」とも呼ばれるロングタームエボリューション)、5G、または他のセルラサービス規格を指す。無線接続1074は、セルラではない無線接続を指し、パーソナルエリアネットワーク(Bluetooth(登録商標)など)、ローカルエリアネットワーク(WiFi(登録商標)など)もしくは広域ネットワーク(WiMaxなど)もしくは他の無線通信またはそれらの組み合わせを含み得る。無線通信は、非固体媒体を通じた変調済み電磁放射線の使用を通じてデータを転送することを指す。有線通信は、固体通信媒体によって生じる。
【0138】
周辺接続1080は、ハードウェアインタフェースおよびコネクタならびに周辺接続を行うためのソフトウェアコンポーネント(例えば、ドライバ、プロトコルスタック)を含む。システム1000は、他のコンピューティングデバイスへの(「外への」1082)周辺デバイスであり、かつ、システム1000へ(「外から」1084)接続される周辺デバイスを備え得ることが理解されるだろう。システム1000は一般に、システム1000上のコンテンツの管理(例えば、ダウンロード、アップロード、変更、同期)などの目的で他のコンピューティングデバイスに接続する「ドッキング」コネクタを有する。加えて、ドッキングコネクタにより、例えばオーディオビジュアルシステムまたは他のシステムに出力されるコンテンツをシステム1000が制御することを可能にする特定の周辺機器にシステム1000が接続することが可能になり得る。
【0139】
プロプライエタリドッキングコネクタまたは他のプロプライエタリ接続ハードウェアに追加して、システム1000は、一般的なコネクタまたは規格ベースのコネクタを介して周辺接続1080を行い得る。一般的なタイプは、ユニバーサルシリアルバス(USB)コネクタ(多数の異なるハードウェアインタフェースのいずれかを含み得る)、MiniDisplayPort(MDP)、高精細度マルチメディアインタフェース(HDMI(登録商標))を含むDisplayPortまたは他のタイプを含み得る。
【0140】
図11は、スプリットラインメモリアクセスを実装できるマルチノードネットワークの例のブロック図である。システム1100は、適応的ECCを適用することができるノードのネットワークを表す。一例では、システム1100はデータセンターを表す。一例では、システム1100はサーバーファームを表す。一例では、システム1100は、データクラウドまたは処理クラウドを表す。
【0141】
システム1100のノード1130は、システム100またはシステム300の例によるシステムを表す。ノード1130は、メモリ1140を含む。ノード1130は、メモリ1140へのアクセスを管理するためのメモリコントローラを表すコントローラ1142を含む。一例では、コントローラ1142は、本明細書の任意の例による、スプリットラインアクセスでパラレルリソースとしてメモリ1140へのアクセスを制御するための分割制御(CTRL)1144を含む。分割制御は、複数のリソースへのデータの提供を可能にし、本明細書の任意の例によって、ECCデータの代わりにメタデータとして使用できるデータ容量を解放する。一例では、メモリ1140は、本明細書の任意の例によるスプリットデータを表すスプリットデータ1146を含む。
【0142】
1つまたは複数のクライアント1102は、ネットワーク1104を介してシステム1100に要求を行う。ネットワーク1104は、1つまたは複数のローカルネットワーク、または広域ネットワーク、またはそれらの組み合わせを表す。クライアント1102は、システム1100による操作の実行のための要求を生成する人間または機械のクライアントであり得る。システム1100は、クライアント1102によって要求されたアプリケーションまたはデータ計算タスクを実行する。
【0143】
一例では、システム1100は、1つまたは複数のラックを含み、これは、複数の計算ノードを収容および相互接続するための構造的および相互接続リソースを表す。一例では、ラック1110は、複数のノード1130を含む。一例では、ラック1110は、複数のブレードコンポーネント1120をホストする。ホスティングとは、電力、構造的または機械的サポート、および相互接続を提供することを指す。ブレード1120は、プリント回路基板(PCB)上のコンピューティングリソースを指すことができ、PCBは、1つまたは複数のノード1130のハードウェアコンポーネントを収容する。一例では、ブレード1120は、ラック1110によって提供されるもの以外のシャーシまたはハウジングまたは他の「ボックス」を含まない。一例では、ブレード1120は、ラック1110に接続するための露出したコネクタを備えたハウジングを含む。一例では、システム1100はラック1110を含まなく、各ブレード1120、他のブレードにスタックするか、さもなくば近接して存在し、ノード1130の相互接続を可能にするシャーシまたはハウジングを含む。
【0144】
システム1100は、ノード1130のための1つまたは複数のインターコネクタを表すファブリック1170を含む。一例では、ファブリック1170は、ノード1130間で信号をルーティングするための、複数のスイッチ1172またはルータまたは他のハードウェアを含む。加えて、ファブリック1170は、クライアント1102によるアクセスのために、システム1100をネットワーク1104に結合することができる。ルーティング機器に追加して、ファブリック1170は、ノード1130を共に結合するためのケーブルまたはポートまたは他のハードウェア機器を含むと見なすことができる。一例では、ファブリック1170は、システム1100を通る信号のルーティングを管理するための1つまたは複数の関連するプロトコルを有する。一例では、プロトコルまたは複数のプロトコルは、システム1100で使用されるハードウェア機器に少なくとも部分的に依存している。
【0145】
示されるように、ラック1110は、N個のブレード1120を含む。一例では、ラック1110に追加して、システム1100は、ラック1150を含む。示されるように、ラック1150は、M個のブレード1160を含む。Mは必ずしもNと同じではない。したがって、様々な異なるハードウェア機器コンポーネントを使用し得、ファブリック1170上でシステム1100に共にに結合することができることが理解されよう。ブレード1160は、ブレード1120と同じまたは同様であることができる。ノード1130は、任意のタイプのノードであり得、必ずしも全て同じタイプのノードである必要はない。システム1100は、均質であることに限られず、均質でないことに限られない。
【0146】
簡単にするために、ブレード1120[0]内のノードのみが詳細に示されている。しかしながら、システム1100の他のノードは、同じまたは同様であることができる。少なくともいくつかのノード1130は、プロセッサ(proc)1132およびメモリ1140を備えた計算ノードである。計算ノードとは、オペレーティングシステムを実行し、1つまたは複数のタスクを受信して処理できる処理リソース(例えば、1つまたは複数のプロセッサ)を備えたノードを指す。一例では、少なくともいくつかのノード1130は、プロセッサ1132およびメモリ1140によって表される処理リソースとしてのサーバを備えたサーバノードである。ストレージサーバとは、計算ノードより多くのストレージリソースを持つノードを指し、タスクを実行するためのプロセッサを備えているのではなく、ストレージサーバにはストレージサーバ内のストレージノードへのアクセスを管理するための処理リソースを含む。
【0147】
一例では、ノード1130は、ノード1130によるファブリック1170へのアクセスを制御するためのロジックを表すインタフェースコントローラ1134を含む。ロジックは、物理的な相互接続ハードウェアに相互接続するためのハードウェアリソースを含むことができる。ロジックは、相互接続を管理するためのソフトウェアまたはファームウェアロジックを含むことができる。一例では、インタフェースコントローラ1134は、本明細書で説明される任意の例によるファブリックインタフェースであり得るホストファブリックインタフェースであるか、またはホストファブリックインタフェースを含む。
【0148】
プロセッサ1132は、1つまたは複数の別個のプロセッサを含み得る。別個のプロセッサのそれぞれは、単一の処理ユニット、マルチコア処理ユニットまたはそれらの組み合わせを含み得る。処理ユニットは、CPU(中央演算処理装置)などのプライマリプロセッサ、GPU(グラフィックスプロセッシングユニット)などの周辺プロセッサまたはその組み合わせであり得る。メモリ1140は、メモリデバイスおよびメモリコントローラである、またはメモリデバイスおよびメモリコントローラを含むことができる。
【0149】
一般に、本明細書の説明に関して、一例では、メモリコントローラは、第1のメモリリソースおよび第2のメモリリソースを含む複数のメモリリソースに結合するハードウェア入出力(I/O)インタフェースと、前記第1のメモリリソースからのデータの一部を前記第1のメモリリソースの第1の半部分および前記第2のメモリリソースの第2の半部分として分散する制御ロジックであって、データの前記一部は、前記データの前記一部にエラー訂正を提供するためのN個のエラー検出訂正(ECC)ビットを含み、前記第1の半部分および前記第2の半部分はそれぞれ前記半部分にエラー訂正を提供するための(N-M)/2個のECCビットを含む、制御ロジックとを含み、前記制御ロジックは、M個の非ECCビットを前記第1の半部分と前記第2の半部分との間に分散する。
【0150】
メモリコントローラの一例では、データの前記一部は、ワードラインを含む。
メモリコントローラの上記各例によると、一例では、前記制御ロジックは、前記第1のメモリリソースのデータのバーストチョップを用いて前記第1の半部分のアクセスを実行し、前記第2のメモリリソースのデータのバーストチョップを用いて前記第2の半部分のアクセスを実行する。
メモリコントローラの上記各例によると、一例では、前記第1のメモリリソースは、第1のランクを含み、前記第2のメモリリソースは、第2のランクを含む。
メモリコントローラの上記各例によると、一例では、前記第1のメモリリソースは、第1のデュアルインラインメモリモジュール(DIMM)を含み、前記第2のメモリリソースは、第2のDIMMを含む。
メモリコントローラの上記各例によると、一例では、前記複数のメモリリソースは、10x4ダイナミックランダムアクセスメモリ(DRAM)デバイスを含む。メモリコントローラの上記各例によると、一例では、Nは2×Mに等しい。メモリコントローラの上記各例によると、一例では、Nは512個のデータビットのエラー訂正を提供するための64個のECCビットに等しく、Mは256個のデータビットのエラー訂正を提供するための32個のデータビットに等しい。メモリコントローラの上記各例によると、一例では、M個の非ECCビットはメタデータビットを含む。メモリコントローラの上記各例によると、一例では、M個のメタデータビットは、2レベルメモリ(2LM)ビット、トラステッドドメインエクステンション(TDX)ビット、またはメモリ内ディレクトリビットを含む。メモリコントローラの上記各例によると、一例では、前記N個のECCビットは、データの前記一部に対するシングルデバイスデータ訂正(SDDC)を提供し、前記(N-M)/2個のECCビットは、データの半部分に対するSDDCを提供する。メモリコントローラの上記各例によると、一例では、メモリリソースは、ダブルデータレートバージョン5(DDR5)規格に準拠したシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスを含む。
【0151】
一般に、本明細書の説明に関して、一例では、方法は、データのラインを第1のハーフラインおよび第2のハーフラインへとデータの2つのハーフラインに分割する段階であって、データの前記ラインは、データの前記ラインにエラー訂正を提供するためのN個のエラー検出訂正(ECC)ビットを含む、段階と、前記第1のハーフラインに対する第1の(N-M)/2個のエラー検出訂正(ECC)ビットおよび前記第2のハーフラインに対する第2の(N-M)/2個のECCビットを計算する段階と、前記第1のハーフラインに対する第1のM/2個のメタデータビットおよび前記第2のハーフラインに対する第2のM/2個のメタデータビットを生成する段階と、 前記第1のハーフラインを前記第1の(N-M)/2個のECCビットおよび前記M/2個のメタデータビットとともに第1のメモリリソースに記憶し、前記第2のハーフラインを前記第2の(N-M)/2個のECCビットおよび前記第2のM/2個のメタデータビットとともに前記第1のメモリリソースとは別個の第2のメモリリソースに記憶する段階と、を含む。
【0152】
方法の一例では、データのラインはワードラインを含む。方法の上記各例によると、一例では、前記第1のハーフラインを前記第1のメモリリソースに記憶し、前記第2のハーフラインを前記第2のメモリリソースに記憶する段階は、バーストチョップを用いてデータ書き込みを実行する段階を含む。方法の上記各例によると、一例では、前記第1のメモリリソースは、第1のランクを含み、前記第2のメモリリソースは、第2のランクを含む。方法の上記各例によると、一例では、前記第1のメモリリソースは、第1のデュアルインラインメモリモジュール(DIMM)を含み、前記第2のメモリリソースは、第2のDIMMを含む。方法の上記各例によると、一例では、前記第1のメモリリソース及び第2のメモリリソースは、10x4ダイナミックランダムアクセスメモリ(DRAM)デバイスを含む。方法の上記各例によると、一例では、Nは2×Mに等しい。方法の上記各例によると、一例では、Nは512個のデータビットのエラー訂正を提供するための64個のECCビットに等しく、Mは256個のデータビットのエラー訂正を提供するための32個のデータビットに等しい。方法の上記各例によると、一例では、M個のメタデータビットは、2レベルメモリ(2LM)ビット、トラステッドドメインエクステンション(TDX)ビット、またはメモリ内ディレクトリビットを含む。方法の上記各例によると、一例では、前記N個のECCビットは、データの前記一部に対するシングルデバイスデータ訂正(SDDC)を提供し、前記(N-M)/2個のECCビットは、データのハーフラインに対するSDDCを提供する。
【0153】
一般に、本明細書の説明に関して、一例では、システムは、第1のメモリリソースおよび第2のメモリリソースを含むメモリを含むメモリと、前記メモリに結合されたメモリコントローラとを備え、前記メモリコントローラは、前記第1のメモリリソースからのデータの一部を前記第1のメモリリソースの第1の半部分および前記第2のメモリリソースの第2の半部分として分散する制御ロジックであって、データの前記一部は、前記データの前記一部にエラー訂正を提供するためのN個のエラー検出訂正(ECC)ビットを含み、前記第1の半部分および前記第2の半部分はそれぞれ前記半部分にエラー訂正を提供するための(N-M)/2個のECCビットを含む、制御ロジックとを含み、前記制御ロジックは、M個の非ECCビットを前記第1の半部分と前記第2の半部分との間に分散する。
【0154】
システムの上記各例によると、一例では、データの前記一部はワードラインを含む。システムの上記各例によると、一例では、前記制御ロジックは、前記第1のメモリリソースのデータのバーストチョップを用いて前記第1の半部分のアクセスを実行し、前記第2のメモリリソースのデータのバーストチョップを用いて前記第2の半部分のアクセスを実行する。システムの上記各例によると、一例では、前記第1のメモリリソースは、第1のランクを含み、前記第2のメモリリソースは、第2のランクを含む。システムの上記各例によると、一例では、前記第1のメモリリソースは、第1のデュアルインラインメモリモジュール(DIMM)を含み、前記第2のメモリリソースは、第2のDIMMを含む。システムの上記各例によると、一例では、前記複数のメモリリソースは、10x4ダイナミックランダムアクセスメモリ(DRAM)デバイスを含む。システムの上記各例によると、一例では、Nは2×Mに等しい。システムの上記各例によると、一例では、Nは512個のデータビットのエラー訂正を提供するための64個のECCビットに等しく、Mは256個のデータビットのエラー訂正を提供するための32個のデータビットに等しい。システムの上記各例によると、一例では、M個のメタデータビットは、2レベルメモリ(2LM)ビット、トラステッドドメインエクステンション(TDX)ビット、またはメモリ内ディレクトリビットを含む。システムの上記各例によると、一例では、前記N個のECCビットは、データの前記一部に対するシングルデバイスデータ訂正(SDDC)を提供し、前記(N-M)/2個のECCビットは、データの半部分に対するSDDCを提供する。システムの上記各例によると、一例では、メモリリソースは、ダブルデータレートバージョン5(DDR5)規格に準拠したシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスを含む。
【0155】
本明細書に示されるフロー図は、様々なプロセスアクションのシーケンスの例を提供する。フロー図は、ソフトウェアまたはファームウェアルーチン、ならびに物理的な操作によって実行されるオペレーションを示すことができる。フロー図は、ハードウェアおよび/またはソフトウェアで実装できる、有限状態機械(FSM)の状態の実装の例を示すことができる。特定のシーケンスまたは順序で示されているが、特に明記しない限り、動作の順序は変更できる。したがって、図示された図表は例のみとして理解されるべきであり、プロセスは異なる順序で実行でき、いくつかの動作は並列に実行することができる。加えて、1つまたは複数のアクションを省略でき、したがって、全ての実装が全てのアクションを実行するわけではない。
【0156】
様々なオペレーションまたは機能が本明細書に記載されている限り、それらはソフトウェアコード、命令、コンフィグレーション、および/またはデータとして記載または定義することができる。コンテンツは、直接実行可能(「オブジェクト」または「実行可能」形式)、ソースコード、または差分コード(「デルタ」または「パッチ」コード)とすることができる。本明細書に記載されているソフトウェアコンテンツは、コンテンツが記憶された製品を介して、または通信インタフェースを介してデータを送信するための通信インタフェースを動作させる方法を介して提供することができる。機械可読記憶媒体は、記載された機能または操作を機械に実行させることができ、記録可能/記録不可能な媒体(例えば、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイスなど)などの機械(例えば、コンピューティングデバイス、電子システムなど)によってアクセス可能な形式で情報を記憶する任意の機構を含む。通信インタフェースは、メモリバスインタフェース、プロセッサバスインタフェース、インターネット接続、ディスクコントローラなどのような、別のデバイスと通信するためのハードワイヤード、無線、光などの媒体のいずれかとインタフェースする任意の機構を含む。通信インタフェースは、ソフトウェアコンテンツを記述するデータ信号を提供するために、コンフィグレーションパラメータを提供すること、および/または通信インタフェースを準備する信号を送信することによって構成することができる。通信インタフェースは、通信インタフェースに送信される1つまたは複数のコマンドまたは信号を介してアクセスすることができる。
【0157】
本明細書に記載される様々なコンポーネントは、記載されるオペレーションまたは機能を実行するための手段とすることができる。本明細書に記載される各コンポーネントは、ソフトウェア、ハードウェア、またはこれらの組み合わせを含む。コンポーネントは、ソフトウェアモジュール、ハードウェアモジュール、専用ハードウェア(例えば、特定用途向けハードウェア、特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)など)、組み込みコントローラ、ハードワイヤード回路などとして実装することができる。
【0158】
本明細書に記載される内容に加えて、開示される内容および本発明の実装に対して、それらの範囲から逸脱することなく様々な修正を行うことができる。従って、本明細書の説明および例は、限定的な意味ではなく、例示的な意味で解釈されるべきである。本発明の範囲は、以下の特許請求の範囲を参照することによってのみ判断されるべきである。他の可能な請求項以下が請求される。
[項目1]
第1のメモリリソースおよび第2のメモリリソースを含む複数のメモリリソースに結合するハードウェア入出力(I/O)インタフェースと、
前記第1のメモリリソースからのデータの一部を前記第1のメモリリソースの第1の半部分および前記第2のメモリリソースの第2の半部分として分散する制御ロジックであって、データの前記一部は、前記データの前記一部にエラー訂正を提供するためのN個のエラー検出訂正(ECC)ビットを含み、前記第1の半部分および前記第2の半部分はそれぞれ前記半部分にエラー訂正を提供するための(N-M)/2個のECCビットを含む、制御ロジックと、
を備え、
前記制御ロジックは、M個の非ECCビットを前記第1の半部分と前記第2の半部分との間に分散する、
メモリコントローラ。
[項目2]
データの前記一部は、ワードラインを含む、
項目1に記載のメモリコントローラ。
[項目3]
前記制御ロジックは、前記第1のメモリリソースのデータのバーストチョップを用いて前記第1の半部分のアクセスを実行し、前記第2のメモリリソースのデータのバーストチョップを用いて前記第2の半部分のアクセスを実行する、
項目1に記載のメモリコントローラ。
[項目4]
前記第1のメモリリソースは、第1のランクを含み、前記第2のメモリリソースは、第2のランクを含む、
項目1に記載のメモリコントローラ。
[項目5]
前記第1のメモリリソースは、第1のデュアルインラインメモリモジュール(DIMM)を含み、前記第2のメモリリソースは、第2のDIMMを含む、
項目1に記載のメモリコントローラ。
[項目6]
前記複数のメモリリソースは、10x4ダイナミックランダムアクセスメモリ(DRAM)デバイスを含む、
項目1に記載のメモリコントローラ。
[項目7]
Nは2×Mに等しい、
項目1に記載のメモリコントローラ。
[項目8]
Nは512個のデータビットのエラー訂正を提供するための64個のECCビットに等しく、Mは256個のデータビットのエラー訂正を提供するための32個のデータビットに等しい、
項目7に記載のメモリコントローラ。
[項目9]
前記M個の非ECCビットは、メタデータビットを含む、
項目1に記載のメモリコントローラ。
[項目10]
前記N個のECCビットは、データの前記一部に対するシングルデバイスデータ訂正(SDDC)を提供し、前記(N-M)/2個のECCビットは、データの半部分に対するSDDCを提供する、
項目1に記載のメモリコントローラ。
[項目11]
前記メモリリソースは、ダブルデータレートバージョン5(DDR5)規格に準拠したシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスを含む、
項目1に記載のメモリコントローラ。
[項目12]
データのラインを第1のハーフラインおよび第2のハーフラインへとデータの2つのハーフラインに分割する段階であって、データの前記ラインは、データの前記ラインにエラー訂正を提供するためのN個のエラー検出訂正(ECC)ビットを含む、段階と、
前記第1のハーフラインに対する第1の(N-M)/2個のエラー検出訂正(ECC)ビットおよび前記第2のハーフラインに対する第2の(N-M)/2個のECCビットを計算する段階と、
前記第1のハーフラインに対する第1のM/2個のメタデータビットおよび前記第2のハーフラインに対する第2のM/2個のメタデータビットを生成する段階と、
前記第1のハーフラインを前記第1の(N-M)/2個のECCビットおよび前記M/2個のメタデータビットとともに第1のメモリリソースに記憶し、前記第2のハーフラインを前記第2の(N-M)/2個のECCビットおよび前記第2のM/2個のメタデータビットとともに前記第1のメモリリソースとは別個の第2のメモリリソースに記憶する段階と、
を備えるメモリアクセスのための方法。
[項目13]
データの前記ラインは、ワードラインを含む、
項目12に記載の方法。
[項目14]
前記第1のハーフラインを前記第1のメモリリソースに記憶し、前記第2のハーフラインを前記第2のメモリリソースに記憶する段階は、バーストチョップを用いてデータ書き込みを実行する段階を含む、
項目12に記載の方法。
[項目15]
前記第1のメモリリソースは、第1のランクを含み、前記第2のメモリリソースは、第2のランクを含む、
項目12に記載の方法。
[項目16]
前記第1のメモリリソースは、第1のデュアルインラインメモリモジュール(DIMM)を含み、前記第2のメモリリソースは、第2のDIMMを含む、
項目12に記載の方法。
[項目17]
前記第1のメモリリソースおよび前記第2のメモリリソースは、10x4ダイナミックランダムアクセスメモリ(DRAM)デバイスを含む、
項目12に記載の方法。
[項目18]
Nは2×Mに等しく、Nは512個のデータビットのエラー訂正を提供するための64個のECCビットに等しく、Mは256個のデータビットのエラー訂正を提供するための32個のデータビットに等しい、
項目12に記載の方法。
[項目19]
前記M個のメタデータビットは、2レベルメモリ(2LM)ビット、トラステッドドメインエクステンション(TDX)ビット、またはメモリ内ディレクトリビットを含む、
項目12に記載の方法。
[項目20]
前記N個のECCビットは、データの前記一部に対するシングルデバイスデータ訂正(SDDC)を提供し、前記(N-M)/2個のECCビットは、データのハーフラインに対するSDDCを提供する、
項目12に記載の方法。