(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-23
(45)【発行日】2024-09-02
(54)【発明の名称】パーシステントメモリシステム等のデータ完全性
(51)【国際特許分類】
G06F 11/10 20060101AFI20240826BHJP
G06F 12/06 20060101ALI20240826BHJP
【FI】
G06F11/10 648
G06F12/06 550A
(21)【出願番号】P 2022125240
(22)【出願日】2022-08-05
(62)【分割の表示】P 2022508745の分割
【原出願日】2020-07-17
【審査請求日】2022-08-08
(31)【優先権主張番号】201911032592
(32)【優先日】2019-08-12
(33)【優先権主張国・地域又は機関】IN
(32)【優先日】2019-12-06
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ケダーナシュ バラクリシュナン
(72)【発明者】
【氏名】ジェームズ アール. マグロ
(72)【発明者】
【氏名】ケビン マイケル リパク
(72)【発明者】
【氏名】ビラス スリダラン
【審査官】坂庭 剛史
(56)【参考文献】
【文献】米国特許出願公開第2018/0018221(US,A1)
【文献】特開2010-086120(JP,A)
【文献】特開2002-023966(JP,A)
【文献】米国特許出願公開第2014/0013182(US,A1)
【文献】特開2008-165808(JP,A)
【文献】米国特許出願公開第2007/0226588(US,A1)
【文献】米国特許出願公開第2008/0235558(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/10
G06F 12/06
(57)【特許請求の範囲】
【請求項1】
所定の基準に従ってメモリコマンドをメモリチャネルに提供するデータプロセッサであって、
書き込み要求のデータに応じて、第1のタイプのエラーコードを生成するための第1のエラーコード生成回路と、
前記書き込み要求に対して、前記第1のタイプのエラーコードとは異なる第2のタイプのエラーコードを生成するための第2のエラーコード生成回路であって、前記書き込み要求の前記データ及び他のビットを使用して前記第2のタイプのエラーコードを生成する第2のエラーコード生成回路と、
前記第1のエラーコード生成回路と、前記第2のエラーコード生成回路と、に接続され、書き込みコマンドをインターフェースに提供するためのキューであって、前記書き込みコマンドは、前記データと、前記第1のタイプのエラーコードと、前記第2のタイプのエラーコードと、を含む、キューと
、
前記第1のタイプのエラーコードを書き込みデータパケットの所定のエラー訂正コード(ECC)フィールドに提供し、前記第2のタイプのエラーコードのビットを前記書き込みデータパケットの所定のユーザデータフィールドの対応するビットに提供するためのパケタイザ及びドライバと、を備える、
データプロセッサ。
【請求項2】
読み出し応答パケットの所定のデータ部分から読み出しデータを抽出し、前記書き込みデータパケットの前記所定のユーザデータフィールド内の前記第2のタイプのエラーコードを抽出するためのレシーバ及びデパケタイザを備える、
請求項
1のデータプロセッサ。
【請求項3】
前記第2のエラーコード生成回路は、前記書き込み要求の前記データ及びアドレスを使用して、前記第2のタイプのエラーコードを生成する、
請求項1のデータプロセッサ。
【請求項4】
所定の基準に従ってメモリコマンドをメモリチャネルに提供するデータプロセッサであって、
書き込み要求のデータに応じて、第1のタイプのエラーコードを生成するための第1のエラーコード生成回路と、
前記書き込み要求に対して、前記第1のタイプのエラーコードとは異なる第2のタイプのエラーコードを生成するための第2のエラーコード生成回路であって、前記第2のエラーコード生成回路は、前記書き込み要求の前記データ及び他のビットを使用して前記第2のタイプのエラーコードを生成し、前記第2のエラーコード生成回路は、前記書き込み要求のメタデータを使用して前記第2のタイプのエラーコードを生成する、第2のエラーコード生成回路と、
前記第1のエラーコード生成回路と、前記第2のエラーコード生成回路と、に接続され、書き込みコマンドをインターフェースに提供するためのキューであって、前記書き込みコマンドは、前記データと、前記第1のタイプのエラーコードと、前記第2のタイプのエラーコードと、を含む、キューと、を備える、
データプロセッサ。
【請求項5】
前記第2のエラーコード生成回路は、前記メタデータのポイズンビットに応じて、前記第2のタイプのエラーコードを生成する、
請求項
4のデータプロセッサ。
【請求項6】
前記第2のタイプのエラーコードは、巡回冗長検査(CRC)コードを含む、
請求項1のデータプロセッサ。
【請求項7】
前記第1のタイプのエラーコードは、シングルエラー訂正及びマルチエラー検出を有するエラー訂正コード(ECC)を含む、
請求項
6のデータプロセッサ。
【請求項8】
読み出し応答パケットの読み出しデータに応じて前記第1のタイプのエラーコードを生成し、前記第1のタイプのエラーコードと、前記メモリチャネルから受信した第1のエラーコードとを比較し、前記比較に応じて第1のタイプのエラー信号を選択的に生成するための第1のエラーコードチェック回路と、
前記読み出し応答パケットの前記読み出しデータ及びアドレスに応じて前記第2のタイプのエラーコードを生成し、前記第2のタイプのエラーコードと、前記メモリチャネルから受信した前記読み出し応答パケット内の第2のエラーコードとを比較して、前記比較に応じて第2のタイプのエラー信号を選択的に生成するための第2のエラーコードチェック回路と、をさらに備える、
請求項
7のデータプロセッサ。
【請求項9】
メモリチャネルと、
前記メモリチャネルに接続されたメモリと、
前記メモリチャネルに接続され、パケット構造を使用して前記メモリにアクセスするデータプロセッサであって、前記パケット構造は、複数のコマンドを定義し、対応するアドレスビットと、データビットと、ユーザビットと、を有し、前記データプロセッサは、第1のタイプのエラーコードを使用して前記メモリチャネルを介して前記メモリと通信し、前記第1のタイプのエラーコードとは異なる第2のタイプのエラーコードを計算し、前記第2のタイプのエラーコードの各ビットを前記ユーザビットの対応するビットとして加える、データプロセッサと、
を備えるデータ処理システムであって、
前記メモリは、書き込みコマンドに応じて前記ユーザビットを格納し、読み出しコマンドに応じて、前記ユーザビットを読み出し応答パケットで前記データプロセッサに転送する、
データ処理システム。
【請求項10】
前記データプロセッサは、読み出しアクセス要求に応じて送信パケットを前記メモリに送信し、対応する読み出し応答パケットの受信したデータに応じてマルチビット巡回冗長検査(CRC)コードを計算し、前記対応する読み出し応答パケットの対応するユーザビットと、前記マルチビットCRCコードとを比較して、前記対応するユーザビットと前記マルチビットCRCコードとの差異に応じてエラー信号をアクティベートする、
請求項
9のデータ処理システム。
【請求項11】
前記第1のタイプのエラーコードは、巡回冗長検査(CRC)コードを含み、前記第2のタイプのエラーコードは、エラー訂正コード(ECC)を含む、
請求項
9のデータ処理システム。
【請求項12】
前記メモリは、パーシステントストレージを有する不揮発性デュアルインラインメモリモジュール(NVDIMM-P)を備える、
請求項
9のデータ処理システム。
【請求項13】
データプロセッサからメモリチャネル上のメモリデバイスにデータを書き込む方法であって、
書き込み要求を受信することと、
前記書き込み要求のデータに応じて、第1のタイプのエラーコードを生成することと、
前記書き込み要求の前記データ及び他のビットに応じて、前記第1のタイプのエラーコードとは異なる第2のタイプのエラーコードを生成することと、
書き込みパケットであって、対応するアドレスビットと、対応するデータビットと、所定のエラー訂正コード(ECC)フィールド内の前記第1のタイプのエラーコードの対応する第1のエラーコードビットと、
前記書き込みパケットの所定のユーザ
データフィールド内の前記第2のタイプのエラーコードの対応する第2のエラーコードビットと、を有する書き込みパケットを形成することと、
前記書き込みパケットを、前記メモリチャネルを介して前記メモリデバイスに転送することと、を含む、
方法。
【請求項14】
前記書き込みパケットが前記メモリチャネルを介して正しく受信されたか否かを、前記第1のタイプのエラーコードを使用して判別し、前記書き込みパケットが前記メモリチャネルを介して正しく受信されなかった場合にエラー応答を提供することと、
前記第2のタイプのエラーコードを前記メモリデバイスに格納することと、をさらに含む、
請求項
13の方法。
【請求項15】
前記第1のタイプのエラーコードを生成することは、シングルエラー訂正及びマルチエラー検出を有するECCを生成することを含み、
前記第2のタイプのエラーコードを生成することは、巡回冗長検査(CRC)コードを生成することを含む、
請求項
13の方法。
【請求項16】
前記書き込み要求に
応じて、前記第
2のタイプのエラーコードを生成することは、前記書き込み要求の書き込みアドレスと、
前記書き込み要求の前記データと、所定のメタデータビットと、に従って前記第
2のタイプのエラーコードを生成することを含む、
請求項
13の方法。
【請求項17】
前記書き込みパケットを形成することは、
前記メモリデバイスがパーシステントストレージを備える不揮発性デュアルインラインメモリモジュール(NVDIMM-P)である場合に、前記対応するアドレスビットと、前記対応するデータビットと、前記所定のエラー訂正コードフィールド内の前記対応する第1のエラーコードビットと、前記所定のユーザ
データフィールド内の前記対応する第2のエラーコードビットと、を有する前記書き込みパケットを選択的に形成することを含む、
請求項
13の方法。
【請求項18】
前記メモリデバイスから読み出し応答パケットを受信することと、
前記読み出し応答パケットの読み出しデータに応じて前記第1のタイプのエラーコードを生成し、前記第1のタイプのエラーコードと、前記読み出し応答パケット内の第1のエラーコードとを比較し、前記比較に応じて第1のタイプのエラー信号を選択的に生成することと、
前記読み出し応答パケットの前記読み出しデータ及びアドレスに応じて前記第2のタイプのエラーコードを生成し、前記第2のタイプのエラーコードと、前記読み出し応答パケット内の第2のエラーコードとを比較し、前記比較に応じて第2のタイプのエラー信号を選択的に生成することと、をさらに含む、
請求項
17の方法。
【請求項19】
読み出し要求を受信することと、
前記読み出し要求に応じて、読み出しパケットを前記メモリデバイスに送信することと、
前記メモリデバイスから応答準備完了パケットを受信することと、
前記応答準備完了パケットに応じて、送信コマンドを前記メモリデバイスに送信することと、
前記送信コマンドを送信した後に前記読み出し応答パケットを受信することと、をさらに含む、
請求項
18の方法。
【発明の詳細な説明】
【背景技術】
【0001】
コンピュータシステムは、通常、安価で高密度のダイナミックランダムアクセスメモリ(DRAM)チップをメインメモリに使用する。今日販売されている殆どのDRAMチップは、JEDEC(Joint Electron Devices Engineering Council)によって公布された様々なダブルデータレート(DDR)DRAM規格と互換性がある。公開されたDDR規格に従って、様々なメモリアクセスエージェントとDDR DRAMとの間のインターフェースを管理するために、DDRメモリコントローラが使用される。
【0002】
パーシステントストレージを備えた不揮発性デュアルインラインメモリモジュール(NVDIMM-P)は、標準的なDDR DIMMに代わるストレージクラスのメモリであるが、電力の切断又は損失時に重要なデータを保持するためにパーシステントメモリを含む。しかし、これらのメモリには、非決定論的(non-deterministic)なアクセスレイテンシがあり、不揮発性メモリへのアクセスを一時的に遅らせる可能性のあるオンボードメディア管理アクティビティがあることから、これらのメモリには、NVDIMM-Pからのデータの可用性をホストコントローラに通知するためのハンドシェイクプロトコルが必要である。JEDECは、この非決定論的なパフォーマンスへの影響を軽減し、アウトオブオーダのトランザクションとコマンドをスタックする機能とを実現するための、NVDIMM-Pトランザクションプロトコルの規格を策定している。この規格の現在の草案では、「リンクECC」(リンクエラー訂正コード)として知られるデータ完全性機能を規定しており、誤動作又はプログラム障害の原因となり得るリンク上のエラーを検出して、潜在的に訂正する。
【図面の簡単な説明】
【0003】
【
図1】従来技術で知られている、データ処理システムのブロック図である。
【
図2】いくつかの実施形態による、データ処理システムのブロック図である。
【
図3】
図2のデータプロセッサで使用され得るメモリコントローラのブロック図である。
【
図4】いくつかの実施形態による、メモリコントローラ及びパーシステントメモリのさらなる詳細を示す
図2のデータ処理システムの一部のブロック図である。
【
図5】従来技術で知られているリンク完全性チェックをサポートするNVDIMM-P規格案のデータパケットフォーマットを示す図である。
【
図6】いくつかの実施形態による、エンドツーエンドのデータ完全性チェックをサポートするNVDIMM-Pメモリのデータパケットフォーマットを示す図である。
【
図7】いくつかの実施形態による、メモリコントローラ及びパーシステントメモリのさらなる詳細を示す
図2のデータ処理システムの一部のブロック図である。
【発明を実施するための形態】
【0004】
以下の説明において、異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。特に断りのない限り、「接続される/結合される(coupled)」という単語及びその関連する動詞形は、当該技術分野で知られている手段による直接的接続及び間接的電気接続の両方を含み、特に断りのない限り、直接的接続に関する如何なる記述も、適切な形態の間接的電気接続を使用する代替的な実施形態を同様に意味する。
【0005】
データプロセッサは、メモリコントローラを含み、メモリコントローラは、コマンドキューと、アービタと、第1のエラーコード生成回路と、第2のエラーコード生成回路と、キューと、を含む。コマンドキューは、復号化されたコマンドを、メモリチャネルにディスパッチするために記憶する。アービタは、所定の基準に従って、コマンドキューからコマンドを選択する。第1のエラーコード生成回路は、書き込み要求のデータに応じて、第1のタイプのエラーコードを生成する。第2のエラーコード生成回路は、書き込み要求に対し、第1のタイプのエラーコードとは異なる第2のタイプのエラーコードを生成する。キューは、アービタ、第1のエラーコード生成回路及び第2のエラーコード生成回路に接続されており、書き込みコマンドをインターフェースに提供し、書き込みコマンドは、データ、第1のタイプのエラーコード及び第2のタイプのエラーコードを含む。
【0006】
データ処理システムは、メモリチャネルと、メモリチャネルに接続されたメモリと、データプロセッサと、を含む。データプロセッサは、メモリチャネルに接続されており、パケット構造を使用してメモリチャネルを介してメモリにアクセスするように構成されており、パケット構造は、複数のコマンドを定義し、対応するアドレスビット、データビット及びユーザビットを有する。データプロセッサは、第1のタイプのエラーコードを使用して、メモリチャネルを介してメモリと通信する。書き込みアクセス要求に応じて、データプロセッサは、異なる第2のタイプのエラーコードを計算し、第2のタイプのエラーコードの各ビットを、ユーザビットの対応するビットとして加える。メモリは、書き込みコマンドに応じて、ユーザビットをメモリに記憶し、読み出しコマンドに応じて、読み出し応答パケットでユーザビットをデータプロセッサに転送する。
【0007】
データプロセッサからメモリチャネル上のメモリデバイスにデータを書き込む方法は、書き込み要求を受信することを含む。書き込み要求に従って、第1のタイプのエラーコードが生成される。書き込み要求に従って、第1のタイプのエラーコードと異なる第2のタイプのエラーコードが生成される。対応するアドレスビットと、対応するデータビットと、所定のエラー訂正コードフィールドにおける第1のタイプのエラーコードの対応する第1のエラーコードビットと、所定のユーザビットフィールドにおける第2のタイプのエラーコードの対応する第2のエラーコードビットと、を有する書き込みパケットが生成される。書き込みパケットは、メモリチャネルを介して転送される。
【0008】
図1は、従来技術で知られているデータ処理システムのブロック図である。データ処理システム100は、概して、加速処理装置(APU)の形態のデータプロセッサ110と、メモリシステム120と、周辺構成要素相互接続エクスプレス(PCIe)システム150と、ユニバーサルシリアルバス(USB)システム160と、ディスクドライブ170と、を含む。データプロセッサ110は、データ処理システム100の中央処理装置(CPU)として動作し、最新のコンピュータシステムにおいて有用な様々なバス及びインターフェースを提供する。これらのインターフェースには、2つのダブルデータレート(DDRx)メモリチャネル、PCIeリンクに接続するためのPCIeルートコンプレックス、USBネットワークに接続するためのUSBコントローラ、及び、シリアルアドバンスドテクノロジーアタッチメント(SATA)マスストレージへのインターフェースが含まれる。
【0009】
メモリシステム120は、メモリチャネル130とメモリチャネル140とを含む。メモリチャネル130は、DDRxバス132に接続されたデュアルインラインメモリモジュール(DIMM)のセットを含み、この例では別々のランクに対応する代表的なDIMM134,136,138が含まれる。同様に、メモリチャネル140は、DDRxバス142に接続されたDIMMのセットを含み、ここでは代表的なDIMM144,146,148が含まれる。
【0010】
PCIeシステム150は、データプロセッサ110のPCIeルートコンプレックスに接続されたPCIeスイッチ152、PCIeデバイス154、PCIeデバイス156及びPCIeデバイス158を含む。PCIeデバイス156は、順に、システム基本入出力システム(BIOS)メモリ157に接続される。システムBIOSメモリ157は、読み出し専用メモリ(ROM)、フラッシュ電気的消去可能プログラマブルROM(EEPROM)等の様々な不揮発性メモリタイプの何れかであり得る。
【0011】
USBシステム160は、データプロセッサ110のUSBマスタに接続されたUSBハブ162と、USBハブ162にそれぞれ接続された代表的なUSBデバイス164,166,168と、を含む。USBデバイス164,166,168は、キーボード、マウス、フラッシュEEPROMポート等のデバイスであり得る。
【0012】
ディスクドライブ170は、SATAバスを介してデータプロセッサ110に接続されており、オペレーティングシステム、アプリケーションプログラム、アプリケーションファイル等のマスストレージを提供する。
【0013】
データ処理システム100は、メモリチャネル130及びメモリチャネル140を提供することによって、最新のコンピューティングアプリケーションでの使用に適している。メモリチャネル130,140の各々は、最先端のDDRメモリ(例えば、DDRバージョン4(DDR4)、低電力DDR4(LPDDR4)、グラフィックスDDRバージョン5(gDDR5)、高帯域幅メモリ(HBM)等)に接続することができ、将来のメモリ技術に適応することができる。これらのメモリは、高いバス帯域幅及び高速動作を提供する。同時に、これらは、ラップトップコンピュータ等のバッテリ駆動アプリケーションの電力を節約するための低電力モードも提供し、熱監視機能も内蔵している。
【0014】
図2は、いくつかの実施形態によるデータ処理システム200のブロック図である。データ処理システム200は、機能が向上したメモリチャネルと、それらにアクセスできるデータプロセッサ210と、を含むことを除いて、
図1のデータ処理システム100と同様である。データ処理システム200は、メモリシステム220と、これにインターフェースするためのAPU形態の変更されたデータプロセッサ210と、を含む。通常のDDRxメモリチャネル以外に、データプロセッサ210は、通常のDDR4のレジスタードDIMM(RDIMM)244,246,248のみを有する同種(homogeneous)メモリチャネル240に加えて、RDIMM234,236及びNVDIMM-P238の両方を有する異種(heterogeneous)メモリチャネル230上のNVDIMM-P238にアクセスすることができる。別の例では、異種メモリチャネルは、負荷低減DIMM(LRDIMM)、三次元(3-D)積層DIMM等を含む他のタイプのDRAMメモリで形成され得ることに留意されたい。
【0015】
NVDIMM-P規格草案によれば、データプロセッサ210上のメモリコントローラとNVDIMM-P238との間のトランザクションは、「リンクECC」によって保護される。リンクECCは、バス232を介したメモリコントローラとNVDIMMとの間のデータ転送のデータ完全性を保証する。既知のECCメカニズムによれば、リンクECCは、パケットのビットのうち何れかのビットにおけるランダムエラー又は一時エラーにより生じるリンク上のデータ破損から保護する。保護は、使用されるECCコードによって異なる。ECCにより、例えばマルチビットエラー検出を伴うシングルビットエラー訂正が可能となり得る。一時エラー又はランダムエラーが持続して生じるわけではないため、訂正不可能なエラーの検出に応じて、データプロセッサ210のメモリコントローラは、トランザクションを再生することができ、また、訂正可能なエラー及び訂正不可能なエラーの両方をオペレーティングシステムに報告することができる。
【0016】
リンクECCは、シングルビット訂正又はリンク再生によっていくつかのエラーを訂正することができるが、マルチビットエラーは、ECCメカニズムだけでは訂正することができない。さらに、ECCメカニズムは、NVDIMM-P238上のメモリ、すなわちDDR4 DRAM等の通常の高密度DRAM又は様々なタイプのうち任意の不揮発性メモリ等のパーシステントメモリにおいて、シングルビット障害等のDIMM自体で発生するエラーを防ぐことができない。
【0017】
図3は、
図2のデータプロセッサ210で使用され得るメモリコントローラ300のブロック図である。メモリコントローラ300は、概して、メモリチャネルコントローラ310と、電力コントローラ350と、を含む。メモリチャネルコントローラ310は、概して、インターフェース312と、キュー及びNVDIMM-Pシーケンサ314と、コマンドキュー320と、アドレス生成器322と、コンテンツアドレス可能メモリ(CAM)324と、リプレイキュー330と、リフレッシュロジックブロック332と、タイミングブロック334と、ページテーブル336と、アービタ338と、ECC及び巡回冗長検査(CRC)チェック回路342と、ECC及びCRC生成ブロック344と、データバッファ(DB)346と、を含む。
【0018】
インターフェース312は、外部バスを介して「AXI4」とラベル付けされたデータファブリックへの第1の双方向接続を有し、第2の双方向接続を有する。メモリコントローラ300において、この外部バスは、英国CambridgeのARM Holdings,PLCにより規定されたアドバンストエクステンシブルインターフェースバージョン4(すなわちAXI4)と互換性があるが、別の実施形態では他のタイプのインターフェースとすることができる。インターフェース312は、FCLK(またはMEMCLK)ドメインとして知られる第1のクロックドメインから、UCLKドメインとして知られるメモリコントローラ300内部の第2のクロックドメインへメモリアクセス要求を変換する。同様に、キュー及びNVDIMM-Pシーケンサ314は、UCLKドメインから、DDR-PHY(DFI)インターフェースに関連付けられたDFICLKドメインへのメモリアクセスを提供する。
【0019】
アドレス生成器322は、データファブリックからAXI4バスを介して受信したメモリアクセス要求のアドレスを復号化する。メモリアクセス要求は、正規化されたフォーマットで表された物理アドレス空間内のアクセスアドレスを含む。アドレス生成器322は、正規化されたアドレスを、メモリシステム120内の実際のメモリデバイスをアドレス指定し、関連するアクセスを効率的にスケジューリングするのに使用できるフォーマットに変換する。このフォーマットは、メモリアクセス要求を、DDR4 DRAMの場合には特定のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループと、又はNVDIMM-P領域と関連付ける領域識別子を含む。スタートアップ時に、システムBIOSは、メモリシステム120内のメモリデバイスに問い合わせて、それらのサイズ及び構成を特定し、アドレス生成器322に関連付けられた構成レジスタのセットをプログラムする。アドレス生成器322は、構成レジスタに記憶された構成を使用して、正規化されたアドレスを好適なフォーマットに変換する。コマンドキュー320は、CPUコア又はグラフィックコア等のデータ処理システム100内のメモリアクセスエージェントから受信したメモリアクセス要求のキューである。コマンドキュー320は、アドレス生成器322によって復号化されたアドレスフィールドと、アービタ338がメモリアクセスを効率的に選択することを可能にする、アクセスタイプ及びサービス品質(QoS)識別子を含む他のアドレス情報と、を格納する。CAM324は、ライトアフターライト(WAW)及びリードアフターライト(RAW)の順序付け規則等の順序付け規則を実施する情報を含む。
【0020】
リプレイキュー330は、アービタ338により選ばれたメモリアクセスを格納する一時的なキューであり、アドレス及びコマンドパリティレスポンス、DDR4 DRAMの場合には書き込み巡回冗長検査(CRC)レスポンス、gDDR5 DRAMの場合には書き込み及び読み出しCRCレスポンス等のレスポンスを待つ。リプレイキュー330は、ECC及びCRCチェック回路342にアクセスして、返されたECCが正しいか又はエラーを示すかを特定する。リプレイキュー330は、これらのサイクルのうち1つのサイクルにパリティ又はCRCエラーがあった場合に、アクセスがリプレイされることを可能にする。
【0021】
リフレッシュロジックブロック332は、メモリアクセスエージェントから受信した通常の読み出し及び書き込みメモリアクセス要求とは別に生成される様々なパワーダウン、リフレッシュ及び終端抵抗(ZQ)較正サイクルのための状態マシンを含む。例えば、メモリランクがプリチャージでパワーダウンにある場合、定期的に呼び起してリフレッシュサイクルを実行しなくてはならない。リフレッシュロジックブロック332は、リフレッシュコマンドを定期的に生成して、DRAMチップ内のメモリセルのキャパシタからの電荷漏洩により生じるデータエラーを防止する。さらに、リフレッシュロジックブロック332は、定期的にZQを較正して、システム内の温度変化によるオンダイ終端抵抗の不整合を防止する。
【0022】
アービタ338は、コマンドキュー320に双方向接続されており、メモリチャネルコントローラ310の心臓部である。アービタ338は、アクセスのインテリジェントスケジューリングにより効率を向上させ、メモリバスの使用率を高める。アービタ338は、タイミングブロック334を使用して、コマンドキュー320内の特定のアクセスが発行に適格であるか否かをDRAMタイミングパラメータに基づいて判定することにより、適切なタイミング関係を実施する。例えば、各DRAMは、アクティベートコマンド間に、「tRC」として知られる最小指定時間を有する。タイミングブロック334は、このタイミングパラメータ及びJEDEC仕様で規定された他のタイミングパラメータに基づいて適格性を判定するカウンタのセットを保持し、リプレイキュー330に双方向接続されている。ページテーブル336は、メモリチャネルの各バンク及びランクにおけるアクティブページに関する状態情報をアービタ338のために保持し、リプレイキュー330に双方向接続されている。
【0023】
インターフェース312から受信した書き込みメモリアクセス要求に応じて、ECC及びCRC生成ブロック344は、書き込みデータに従ってECCを計算する。DB346は、受信したメモリアクセス要求の書き込みデータ及びECCを格納する。アービタ338がメモリチャネルにディスパッチするための対応する書き込みアクセスを選択すると、DB346は、書き込みデータ/ECCの組み合わせをキュー及びNVDIMM-Pシーケンサ314に出力する。
【0024】
電力コントローラ350は、概して、AXI(advanced extensible interface, version one)へのインターフェース352と、アドバンスト周辺バス(APB)インターフェース354と、電力エンジン360と、を含む。インターフェース352は、システム管理ネットワーク(SMN)への第1の双方向接続を有し、これは、
図3に別に示される「EVENT_n」とラベル付けされたイベント信号を受信するための入力と、出力と、を含む。APBインターフェース354は、インターフェース352の出力に接続された入力と、APBを介してPHYに接続された出力と、を有する。電力エンジン360は、インターフェース352の出力に接続された入力と、キュー及びNVDIMM-Pシーケンサ314の入力に接続された出力と、を有する。電力エンジン360は、構成レジスタ362のセットと、マイクロコントローラ(μC)364と、セルフリフレッシュコントローラ(SLFREF/PE)366と、信頼性のある読み出し/書き込みタイミングエンジン(RRW/TE)368と、を含む。構成レジスタ362は、AXIバスを介してプログラムされ、メモリコントローラ300内の様々なブロックの動作を制御するための構成情報を格納する。従って、構成レジスタ362は、
図3に詳細に示されていないブロックに接続された出力を有する。セルフリフレッシュコントローラ366は、リフレッシュロジックブロック332によるリフレッシュの自動生成に加えて、リフレッシュの手動生成を可能にするエンジンである。信頼性のある読み出し/書き込みタイミングエンジン368は、DDRインターフェース最大読み出しレイテンシ(MRL)トレーニング及びループバックテストの目的で、メモリ又はI/Oデバイスに連続的なメモリアクセスストリームを提供する。
【0025】
メモリチャネルコントローラ310は、関連するメモリチャネルにディスパッチするメモリアクセスをメモリチャネルコントローラ310が選ぶことを可能にする回路を含む。望ましいアービトレーション決定を行うために、アドレス生成器322は、アドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス、及び、バンクグループを含むプリデコード情報に復号化し、コマンドキュー320は、プリデコード情報を格納する。構成レジスタ362は、アドレス生成器322が、受信したアドレス情報をどのように復号化するかを特定するための構成情報を格納する。アービタ338は、復号化されたアドレス情報、タイミングブロック334によって示されるタイミング適格性情報、及び、ページテーブル336によって示されるアクティブページ情報を使用して、QoS要件等の他の基準を遵守しながら、メモリアクセスを効率的にスケジューリングする。例えば、アービタ338は、メモリページを変更するのに必要なプリチャージ及びアクティベーションコマンドのオーバーヘッドを回避するために、ページを開くアクセス(accesses to open pages)に優先度付けを実施し、あるバンクへのオーバーヘッドアクセスを隠蔽するために、これらのアクセスを、別のバンクへの読み出し及び書き込みアクセスでインターリーブする。具体的には、通常動作の間、アービタ338は、通常、異なるページを選択する前にプリチャージが要求されるまで、異なるバンクでページを開いたままにしておく。
【0026】
メモリコントローラ300は、
図1のAPU110で使用されるメモリコントローラと同様であるが、以下の点で異なる。第1に、メモリコントローラ300は、単純なECCチェック回路に置き換わるECC及びCRCチェック回路342を含む。ECC及びCRCチェック回路342は、受信したECCを着信ECCに対してチェックするだけでなく、エンドツーエンド完全性チェックのために、受信したデータに従って生成された、又は、受信したデータ、アドレス及びメタデータに従って生成されたCRCも、受信したCRCに対してチェックする。読み出し応答パケットに応じて、ECC及びCRCチェック回路342は、後述する多項式を使用して、CRCコードを提供する。メモリコントローラ300は、ECC及びCRC生成回路344を使用してCRCを生成し、NVDIMM-Pに送信する。NVDIMM-Pは、受信した書き込みデータパケットからユーザビットを抽出してCRCを格納し、CRCを、対応するデータと共に、読み出し応答パケットのユーザビットでメモリコントローラ300に返す。
【0027】
第2に、アドレス生成器322が、データプロセッサ110に使用される対応するアドレス生成器に置き換わる。さらに、アドレス生成器322は、NVDIMM-Pメモリのアドレス範囲を復号化し、メモリアクセス要求がNVDIMM-Pへの要求であることを示す復号化された信号を、コマンドキュー320に格納する。次に、アービタ338は、NVDIMM-P要求に、他の要求と比較して適切な優先順位を付け得る。
【0028】
第3に、ECC及びCRC生成回路344が、データプロセッサ110により使用される対応するECC生成回路に置き換わる。ECC及びCRC生成回路344は、NVDIMM-Pに送信される書き込みデータのECCを特定するだけでなく、エンドツーエンドのデータ完全性チェックのために、パケット全体のCRCも生成する。
【0029】
第4に、キュー及びNVDIMM-Pシーケンサ314が、データプロセッサ110により使用される対応するキューに置き換わる。キュー及びNVDIMM-Pシーケンサ314は、NVDIMM-Pのようなパーシステントメモリシステムの高いレイテンシを補うのに十分な深さのキューを含み、又は、いくつかの実施形態では、DRAMアクセス用とNVDIMM-Pアクセス用に別個のキューを含む。
【0030】
これらの相違点と、メモリコントローラ300の動作及び利点と、について検討する。
【0031】
図4は、いくつかの実施形態による、メモリコントローラ及びパーシステントメモリのさらなる詳細を示す
図2のデータ処理システム200の一部400のブロック図である。部分400は、NVDIMM-P物理層インターフェース(PHY)410と、NVDIMM-P420と、ECC及びCRC生成回路344のCRC生成器430部分と、ECC及びCRCチェック回路342のCRC生成器440と、ECC及びCRCチェック回路342の比較器450と、を含む。NVDIMM-P PHY410は、パケタイザ及びドライバ412と、レシーバ及びデパケタイザ414と、を含む。パケタイザ及びドライバ412は、コマンド及びメタデータを受信するための第1の入力と、「ADD[39:0]」とラベル付けされたアドレスを受信するための第2の入力と、「書き込みデータ[511:0]」とラベル付けされた書き込みデータを受信するための第3の入力と、第4の入力と、要求チャネルにコマンドを提供するための出力ポートと、を有する。CRC生成器430は、書き込みデータ[511:0]を受信するための入力と、パケタイザ及びドライバ412の第4の入力に接続された出力と、を有する。レシーバ及びデパケタイザ414は、応答チャネルに接続された入力と、「メタデータ」とラベル付けされた信号を提供するための第1の出力と、タグ(アドレスに対応)を提供するための第2の出力と、読み出しデータを提供するための第3の出力と、受信したCRCを提供する第4の出力と、を有する。
【0032】
NVDIMM-P420は、NVDIMM-Pバッファ422と、ダイナミックランダムアクセスメモリ(DRAM)424と、パーシステントストレージ426と、を含む。NVDIMM-Pバッファ422は、パケタイザ及びドライバ412の出力ポートに接続された要求チャネル入力ポートと、双方向内部ポートと、応答チャネルに接続されたチャネル出力ポートと、を有する。DRAM424は、NVDIMM-Pバッファ422に接続された第1の双方向ポートと、パーシステントストレージ426に接続された第2の双方向ポートと、を有する。
【0033】
図4は、動作時に、NVDIMM-P規格案で規定されるリンクECCに、エンドツーエンドのデータ完全性チェックを追加するシステムである。この例では、データ自体、すなわち書き込みデータパケットで送信される書き込みデータ[511:0]のみについてデータ完全性がチェックされる。従って、CRC生成器430は、書き込みデータ[511:0]のみを使用して、CRCを生成する。CRC生成器430は、ユーザビットとして知られる書き込みデータパケットの特定のビットにCRCを挿入するために、CRCをパケタイザ及びドライバ412に提供する。NVDIMM-P規格案は、ユーザ定義のメタデータである6つのユーザビットを定義する。書き込みデータパケットは、他の情報と共に、要求チャネルを介してNVDIMM-Pバッファ422に送信される。NVDIMM-Pバッファ422は、書き込みデータパケットを受信した後に、リンクECCチェック及びエラー報告を行う。しかし、NVDIMM-Pバッファ422は、6つのユーザビットを、内部バッファであるDRAM424又はパーシステントストレージ426の何れかに格納する。
【0034】
読み出しコマンドに応じて、NVDIMM-Pバッファ422は、NVDIMM-Pプロトコルに従ってデータ応答パケットを提供する。NVDIMM-Pバッファ422は、内部バッファであるDRAM424又はパーシステントストレージ426から6つのCRCビットを読み出し、これらを、データ応答パケットの6つの対応するユーザビットとして加える。NVDIMM-Pバッファ422は、データ応答パケットを、応答チャネルを介してレシーバ及びデパケタイザ414に送信し、レシーバ及びデパケタイザ414は、読み出しデータ、タグ及びメタデータを含む様々なフィールドを抽出する。CRC生成器440は、読み出しデータを受信して6ビットのCRCを生成し、これにより比較器450の第1の入力が提供される。レシーバ及びデパケタイザ414も、抽出したCRCフィールドを、比較器450の第2の入力に送信する。比較器450は、2つのCRC値を比較して、MCAエラー信号をシステム管理ネットワーク(SMN)に提供する。MCAエラーは、図示されていないが、ソフトウェアのエラーを報告するための適切な割り込みを生成するシステム管理ユニット(SMU)により、最終的に受信される。
【0035】
上記で参照された実施形態では、リプレイキュー330も、リンクECC及びCRCの両方の結果にアクセスし、パリティエラー又はCRCエラーに応じて、コマンドをリプレイするか否かを決定する。
【0036】
図5は、従来技術で知られているリンク完全性チェックをサポートするNVDIMM-P規格案のデータパケットフォーマットを示す図である。NVDIMM-Pは、規格で定義されるいくつかのコマンドをサポートする。コマンドのうちいくつかは、データ転送、すなわち読み出し及び書き込みに関連しており、NVDIMM-Pプロトコルは、リンクECCをサポートして、データ及び関連メタデータをデータバス上のランダムエラーから保護する。メモリコントローラは、既存のDDR4アドレス及びコマンド信号にマッピングされたアドレス及びコマンド信号を使用して各コマンドを送信し、このフォーマットにDDR4デバイスとの互換性を持たせ、上記の
図2で示すように、DDR4及びNVDIMM-Pメモリの両方を有する異種バス(heterogeneous bus)を有効化する。データの転送は、データ転送コマンドにより、又は、データ転送コマンドに応じて生成されたデータパケットで実行される。NVDIMM-Pシステムは、XWRITE(トランザクション書き込み)又はPWRITE(パーシステント書き込み)パケット510、SEND(送信)応答パケット520、及び、SREAD(投機的読み出し)応答パケット530の3つのデータパケットフォーマットをサポートする。
【0037】
4つの連続した単位間隔(UI)に1つのデータ要素の書き込みデータを含むXWRITE又はPWRITEパケット510が、メモリコントローラからNVDIMM-Pへ64ビットのデータチャネルDQ0~DQ63を介して送信される。従って、2つの256ビットの書き込みデータワードWRITE DATA0及びWRITE DATA1が、単一のXWRITE又はPWRITEパケット中に転送される。XWRITE又はPWRITEパケットは、8つのチェックビットCB0~CB7からなるチェックビット(CB)も含み、これは、パケットに関するメタデータの転送に使用され、「USER(ユーザ)」は任意のユーザ定義データを示し、「POISON(ポイゾン)」はデータの完全性に関するメタデータを示す。
図5に示すように、XWRITE及びPWRITEコマンドは、書き込みデータに付随するパケットのUI毎に、CB0~CB5チャネルで6ビットのECCデータを提供する。「RFU」とラベル付けされたいくつかの予約ビットも存在する。
【0038】
SEND応答パケット520は、SENDパケットがコントローラから送信された後に決定論的な時間量でNVDIMM-Pにより返されるデータを含む。メモリコントローラは、事前にXREAD(トランザクション読み出し)コマンドを発行して、NVDIMM-Pがデータを送信する準備ができていることを示す応答準備完了信号をNVDIMM-Pから受信した後に、SENDコマンドを発行する。NVDIMM-Pは、XREADパケットの受信後に、要求されたデータをDRAM内で利用可能にし、応答準備完了信号をアクティベートするので、又は、SENDコマンドによりアクセス完了にされ得る前に、低速不揮発性メモリからデータをフェッチしてDRAM又はバッファに配置する必要があるので、XREADコマンドのアクセスレイテンシは非決定論的である。SEND応答パケット520は、64ビットのデータチャネルDQ0~DQ63を有し、これは、4つの連続した単位間隔(UI)に1つのデータ要素の読み出しデータを含む。従って、2つの256ビット読み出しデータワードREAD DATA0及びREAD DATA1が、単一のSEND応答パケット中に転送される。SEND応答パケット520は、CB0~CB7を使用して、パケットに関するメタデータを転送し、これは、
図5に示す特定のUIの間に各々のCBチャネルに含まれるUSERビットと、NVDIMM-Pから返されたPOISONビットと、クレジット閾値を示すCTHビットと、SEND応答パケット520のシーケンス番号、すなわちTAG(タグ)を示す読み出し識別子RID[0:7]と、を含む。また、SEND応答パケット520は、書き込みデータに付随するトランザクションのUI毎に、CB0~CB5チャネルで6ビットのECCデータを提供する。
【0039】
SREAD応答パケット530は、メモリコントローラがSREADパケットをNVDIMM-Pに送信した後、決定論的時間に返されるデータを含む。次に、NVDIMM-Pバッファは、要求されたデータがNVDIMM-Pバッファ又はRAMキャッシュにある場合、SREAD応答パケットを送信する。SREADに対応するデータがNVDIMM-Pバッファ又はDRAMキャッシュで利用可能である場合、NVDIMM-Pは、DQバス上の有効なデータ及び示される他のデータを含む有効SREAD応答パケットを転送する。SREADに対応するデータがNVDIMM-Pバッファ又はDRAMキャッシュで利用可能ではない場合、NVDIMM-Pは、メタデータビット「D_VALID」=0を有する無効応答パケットを送信し、READ DATA0及びREAD DATA1が無効である。NVDIMM-Pは、要求されるデータが利用可能である場合、RD_RDY信号を提供することにより、SREADコマンドに対し、XREADであるかのように応答する。SREAD応答パケット530は、SEND応答パケット520と同様である。データが利用可能である場合、SREAD応答パケット530も64ビットのデータチャネルDQ0~DQ63を有し、これは、4つの連続した単位間隔(UI)に1つのデータ要素の読み出しデータを含む。従って、2つの256ビット読み出しデータワードREAD DATA0及びREAD DATA1が、単一のSREAD応答パケット中に転送される。SREAD応答パケット530は、CB0~CB7を使用して、パケットに関するメタデータを転送し、これは、
図5に示す特定のUIの間に各々のCBチャネルに含まれるUSERビットと、NVDIMM-Pから返されたPOISONビットと、クレジット閾値を示すCTHビットと、メタデータビットD_VALID=1と、を含む。SREAD応答パケット530も、書き込みデータに付随するトランザクションのUI毎に、CB0~CB5チャネルで6ビットのECCデータを提供する。
【0040】
NVDIMM-P通信プロトコルは、規格案で動作が説明される他のいくつかのコマンドもサポートする。これらのコマンドの動作は、本開示と関連がないため、これ以上説明しない。
【0041】
図6は、いくつかの実施形態による、エンドツーエンドのデータ完全性チェックをサポートするNVDIMM-Pメモリのデータパケットフォーマット600を示す図である。データパケットフォーマット600は、XWRITE又はPWRITEパケット610と、SEND応答パケット620と、SREAD応答パケット630と、を含む。これらのパケットフォーマットは、1つの例外を除いて、XWRITE又はPWRITEパケット510と、SEND応答パケット520と、SREAD応答パケット530と、にそれぞれ対応する。いくつかの実施形態によれば、USERビットは、エンドツーエンド完全性チェックをサポートする。「オプションB」の符号化に利用可能な6つのUSERビットが存在し、これらを使用して、2
6=64の値を有するCRCが格納され得る。一実施形態によれば、メモリコントローラ300は、次の多項式を使用して、6ビットのCRCを生成する。
0x33=x
6+x
5+x
2+x+1 [1]
他の多項式も可能であることは明らかであろう。さらに、NVDIMM-P規格(又は、他の類似規格)の異なるバージョンが将来開発され、関連パケットによりさらに多くのUSERビットが利用可能になれば、追加のビットを利用する異なるCRCコードをサポートすることができる。
【0042】
図7は、いくつかの実施形態による、メモリコントローラ及びパーシステントメモリのさらなる詳細を示す
図2のデータ処理システムの一部700のブロック図である。
図7では、メモリコントローラは、例えばPOISONビット及び/又はADDRESSビットを含むフレームの他のコンポーネントを使用して、CRC及びデータ[511:0]を生成する。
【0043】
部分700は、
図4の部分400と同様であるが、ECC及びCRC生成回路344のCRC生成器710と、パケタイザ及びドライバ722と、ECC及びCRCチェック回路342のCRC生成器730と、DFIバスを介してメモリコントローラに接続されたPHY740と、を含む点で異なる。部分700では、CRC生成器710は、書き込みデータ[511:0]を受信するための第1の入力と、ADD[39:0]を受信するための第2の入力と、コマンド及びメタデータを受信するための第3の入力と、パケタイザ及びドライバ722に接続された出力と、を有する。パケタイザ及びドライバ722は、NVDIMM-P規格案で定義されるXWRITE又はPWRITEパケット610等の書き込みパケットを形成するが、書き込みデータ[511:0]、ADD[39:0]、並びに、コマンド及びメタデータを使用して、CRCを生成する。パケタイザ及びドライバ722は、そのように生成されたCRCを、上述したようにXWRITE又はPWRITEパケット610のUSERビットに配置する。PHY740は、DFI規格に従ってパケタイザ及びドライバ722からフォーマットされたパケットを受信し、それを異種DIMMチャネル232に送る。
【0044】
NVDIMM-Pバッファ422は、6ビットのCRCを有するユーザビットを含むXWRITE又はPWRITEパケット610を受信して、それを必要に応じて内部バッファであるDRAM424又はパーシステントストレージ426に格納する。NVDIMM-Pバッファ422は、上述したプロトコルに従って、コマンドに応じてSEND応答パケット620又はSREAD応答パケット630を生成する。NVDIMM-Pバッファ422は、場合によっては内部バッファであるDRAM424又はパーシステントストレージ426から取得した6ビットのCRCを有する格納されたユーザビットを、上述したように適切なビットチャネル及びUIに配置し、異種バスを介してそれらを送信する。
【0045】
PHY740は、DFIプロトコルに従って、SEND応答パケット及びSREAD応答パケットを受信し、それらをメモリコントローラ300に送信する。次に、レシーバ及びデパケタイザ724は、メタデータ、タグ/RID[0:7]、及び、読み出しデータを分離し、それらを残りのキュー及びNVDIMM-Pシーケンサ314に提供する。次に、キュー及びNVDIMM-Pシーケンサ314は、タグ/RID[0:7]に対応するアドレスをCRC生成器730に送信する。部分700では、CRC生成器730は、読み出しデータ[511:0]を受信するための第1の入力と、ADD[39:0]を受信するための第2の入力と、コマンド及びメタデータ(COMMAND AND METADATA)を受信するための第3の入力と、比較器450の第1の入力に接続された出力と、を有する。図示した実施形態では、CRCの生成に使用されるコマンド及びメタデータビットは、少なくともポイズン(POISON)ビットを含む。
【0046】
NVDIMM-P規格案によれば、データプロセッサ210上のメモリコントローラとNVDIMM-P238との間におけるCRCビットを含むトランザクションは、「リンクECC」により保護される。リンクECCは、メモリバスを介したメモリコントローラとNVDIMM-Pとの間のデータ転送のデータ完全性を保証する。既知のECCメカニズムによれば、リンクECCは、ランダムエラー又は一時エラーにより生じるリンク上のデータ破損から保護される。保護は、使用されるECCコードによって異なる。ECCにより、例えばマルチビットエラー検出を伴うシングルビットエラー訂正が可能となり得る。訂正不可能なエラーの検出に応じて、メモリコントローラは、一時エラー又はランダムエラーが持続しないように、トランザクションをリプレイすることができ、また、訂正可能なエラー及び訂正不可能なエラーの両方をオペレーティングシステムに報告し得る。
【0047】
リンクECCは、シングルビット訂正やリンクリプレイによりいくつかのエラーを訂正することができるが、マルチビットエラーは、ECCメカニズムだけでは訂正することができない。さらに、ECCメカニズムは、NVDIMM-P上のメモリ、すなわちDDR4 DRAM等の通常の高密度DRAM、又は、様々なタイプのうち任意のNVDIMM等のパーシステントメモリにおいて、シングルビット障害等のようにDIMMで起こるエラーを防ぐことができない。ECCは格納されないが、読み出し時にNVDIMM-Pにより生成され、受信した読み出しデータに基づいてメモリコントローラによりチェックされる。同様に、書き込みサイクルでは、ECCは、メモリコントローラにより生成及び送信され、NVDIMM-Pによりチェックされる。従って、DIMMにはデータのエンドツーエンド保護が存在しない。
【0048】
しかし、本明細書で開示される様々な実施形態によれば、メモリコントローラは、DIMMに格納された利用可能なメタデータビットを活用して、リンクECCメカニズムと完全に互換性があるエンドツーエンド完全性チェックを実施する。具体的には、メカニズムは、ユーザビットとして知られるJEDECプロトコルで定義されていない利用可能なビットを活用して、このチェックを行う。ユーザビットの数は、かなり限定されている。例えば、「オプションA」の符号化は、4つのユーザビットのみを指定するが、「オプションB」の符号化は、6つのユーザビットを指定する。いくつかの実施形態によれば、メモリコントローラは、64バイトのデータ全てに基づく6ビットのCRCコードを生成し、書き込み時にCRCコードをユーザビットとして送信する。NVDIMM-Pは、場合によっては、NVDIMM-Pバッファ、DRAMキャッシュ又はパーシステントストレージにユーザビットを格納する。他の実施形態によれば、メモリコントローラは、64バイトのデータ全て、アドレス、及び、メタデータの一部又は全てに基づく6ビットのCRCを生成し、書き込み時に、これらのビットで生成されたCRCコードをユーザビットとして送信する。NVDIMM-Pは、ユーザビットをアレイに格納し、読み出し時にそれらをSENDデータパケット又はSREADデータパケットで返す。メモリコントローラは、CRCを生成しチェックする追加のハードウェアを含み、ユーザビットを格納する以外にNVDIMM-Pを変更する必要がない。メモリコントローラは、リンクECCを生成して、ユーザ/CRCビットを含むパケットのビット全てをチェックすることに留意されたい。
【0049】
従って、本明細書で説明するメモリコントローラ及びデータ処理システムは、NVDIMM-Pデバイスに格納され、対応するデータが後で読み出される時の比較に利用可能な限定された数のユーザビットを活用することにより、データ完全性チェックの対象範囲を拡大して、エンドツーエンドチェックを提供する。チェックメカニズムは、シングルビットエラー及びマルチビットエラーを検出できる6ビットのCRCコードを使用する。さらに、このチェックメカニズムは、既存のリンクECCと共存できるが、利用可能なビット、オプションBフレームフォーマットのユーザビットを活用して、エンドツーエンドデータ完全性チェックを追加することにより、より堅牢でエラーのないシステムを提供する。従って、リンクECC及びCRCチェックメカニズムが共存し、システムの信頼性を向上させる重複的且つ補完的な保護メカニズムのセットを提供する。
【0050】
様々な実施形態では、データパケットの異なる部分を使用して、CRCが生成され得る。一実施形態では、データのみが使用される。別の実施形態では、例えばポイズンビット及び/又はアドレスを含むパケットの他のビットを使用して、CRC及びデータ[511:0]が生成され得る。さらに、NVDIMM-P規格の異なるバージョンが将来開発され、関連パケットによりさらに多くのユーザビットが利用可能になれば、異なるCRCコードをサポートすることができる。例えば、将来のバージョンで16ユーザビットが提供される場合、上述したシステムでは、6ビットのCRCの代わりに16ビットのCRCを使用することができる。また、メモリコントローラ及びデータプロセッサは、CRCエラーに応じて様々な訂正アクションを取り得る。CRCエラーはリンクECCエラーもキャプチャするため、これらのアクションは、さらなるアクションのためにオペレーティングシステムにエラーを報告すること又は動作をリプレイすることを含む。
【0051】
図3のメモリコントローラ300又はその任意の部分は、データベース形態のコンピュータアクセス可能データ構造、又は、プログラムにより読み出し可能であり、集積回路を製造するのに直接的若しくは間接的に使用可能な他のデータ構造によって、記述又は表され得る。例えば、このデータ構造は、Verilog又はVHDL等の高次設計言語(HDL)によるハードウェア機能の動作レベル記述又はレジスタ転送レベル(RTL)記述であってもよい。記述は、記述を合成して、合成ライブラリからゲートのリストを含むネットリストを生成し得る合成ツールによって、読み出され得る。ネットリストは、集積回路を含むハードウェアの機能を表すゲートのセットを含む。次に、ネットリストは、マスクに適用される幾何学形状を記述するデータセットを生成するように、配置及びルーティングされ得る。その後、集積回路を製造するために、様々な半導体製造ステップにおいてマスクが使用され得る。或いは、コンピュータアクセス可能記憶媒体上のデータベースは、必要に応じてネットリスト(合成ライブラリの有無にかかわらず)若しくははデータセット、或いはグラフィックデータシステム(GDS)IIデータであってもよい。
【0052】
特定の実施形態が説明されているが、これらの実施形態に対する様々な変更が当業者には明らかであろう。従って、添付の特許請求の範囲によって、開示された実施形態の範囲に入る、開示された実施形態の全ての変更をカバーすることが意図される。