JP7121875B1 - パーシステントメモリシステム等のデータ完全性 - Google Patents

パーシステントメモリシステム等のデータ完全性 Download PDF

Info

Publication number
JP7121875B1
JP7121875B1 JP2022508745A JP2022508745A JP7121875B1 JP 7121875 B1 JP7121875 B1 JP 7121875B1 JP 2022508745 A JP2022508745 A JP 2022508745A JP 2022508745 A JP2022508745 A JP 2022508745A JP 7121875 B1 JP7121875 B1 JP 7121875B1
Authority
JP
Japan
Prior art keywords
error code
memory
data
type
response
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022508745A
Other languages
English (en)
Other versions
JP2022537464A (ja
Inventor
バラクリシュナン ケダーナシュ
アール. マグロ ジェームズ
マイケル リパク ケビン
スリダラン ビラス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Priority to JP2022125240A priority Critical patent/JP2022153654A/ja
Application granted granted Critical
Publication of JP7121875B1 publication Critical patent/JP7121875B1/ja
Publication of JP2022537464A publication Critical patent/JP2022537464A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes

Abstract

データ処理システムは、メモリチャネルと、メモリチャネルに接続されたメモリと、データプロセッサと、を含む。データプロセッサは、メモリチャネルに接続され、パケット構造を使用してメモリチャネルを介してメモリにアクセスし、パケット構造は、複数のコマンドを定義し、対応するアドレスビット、データビット及びユーザビットを有する。データプロセッサは、第1のタイプのエラーコードを使用してメモリチャネルを介してメモリと通信する。データプロセッサは、書き込みアクセス要求に応じて、異なる第2のタイプのエラーコードを計算し、第2のタイプのエラーコードの各ビットを、ユーザビットの対応するビットとして加える。メモリは、書き込みコマンドに応じて、ユーザビットをメモリに格納し、読み出しコマンドに応じて、ユーザビットを読み出し応答パケットでデータプロセッサに転送する。【選択図】図3

Description

コンピュータシステムは、通常、安価で高密度のダイナミックランダムアクセスメモリ(DRAM)チップをメインメモリに使用する。今日販売されている殆どのDRAMチップは、JEDEC(Joint Electron Devices Engineering Council)によって公布された様々なダブルデータレート(DDR)DRAM規格と互換性がある。公開されたDDR規格に従って、様々なメモリアクセスエージェントとDDR DRAMとの間のインターフェースを管理するために、DDRメモリコントローラが使用される。
パーシステントストレージを備えた不揮発性デュアルインラインメモリモジュール(NVDIMM-P)は、標準的なDDR DIMMに代わるストレージクラスのメモリであるが、電力の切断又は損失時に重要なデータを保持するためにパーシステントメモリを含む。しかし、これらのメモリには、非決定論的(non-deterministic)なアクセスレイテンシがあり、不揮発性メモリへのアクセスを一時的に遅らせる可能性のあるオンボードメディア管理アクティビティがあることから、これらのメモリには、NVDIMM-Pからのデータの可用性をホストコントローラに通知するためのハンドシェイクプロトコルが必要である。JEDECは、この非決定論的なパフォーマンスへの影響を軽減し、アウトオブオーダのトランザクションとコマンドをスタックする機能とを実現するための、NVDIMM-Pトランザクションプロトコルの規格を策定している。この規格の現在の草案では、「リンクECC」(リンクエラー訂正コード)として知られるデータ完全性機能を規定しており、誤動作又はプログラム障害の原因となり得るリンク上のエラーを検出して、潜在的に訂正する。
従来技術で知られている、データ処理システムのブロック図である。 いくつかの実施形態による、データ処理システムのブロック図である。 図2のデータプロセッサで使用され得るメモリコントローラのブロック図である。 いくつかの実施形態による、メモリコントローラ及びパーシステントメモリのさらなる詳細を示す図2のデータ処理システムの一部のブロック図である。 従来技術で知られているリンク完全性チェックをサポートするNVDIMM-P規格案のデータパケットフォーマットを示す図である。 いくつかの実施形態による、エンドツーエンドのデータ完全性チェックをサポートするNVDIMM-Pメモリのデータパケットフォーマットを示す図である。 いくつかの実施形態による、メモリコントローラ及びパーシステントメモリのさらなる詳細を示す図2のデータ処理システムの一部のブロック図である。
以下の説明において、異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。特に断りのない限り、「接続される/結合される(coupled)」という単語及びその関連する動詞形は、当該技術分野で知られている手段による直接的接続及び間接的電気接続の両方を含み、特に断りのない限り、直接的接続に関する如何なる記述も、適切な形態の間接的電気接続を使用する代替的な実施形態を同様に意味する。
データプロセッサは、メモリコントローラを含み、メモリコントローラは、コマンドキューと、アービタと、第1のエラーコード生成回路と、第2のエラーコード生成回路と、キューと、を含む。コマンドキューは、復号化されたコマンドを、メモリチャネルにディスパッチするために記憶する。アービタは、所定の基準に従って、コマンドキューからコマンドを選択する。第1のエラーコード生成回路は、書き込み要求のデータに応じて、第1のタイプのエラーコードを生成する。第2のエラーコード生成回路は、書き込み要求に対し、第1のタイプのエラーコードとは異なる第2のタイプのエラーコードを生成する。キューは、アービタ、第1のエラーコード生成回路及び第2のエラーコード生成回路に接続されており、書き込みコマンドをインターフェースに提供し、書き込みコマンドは、データ、第1のタイプのエラーコード及び第2のタイプのエラーコードを含む。
データ処理システムは、メモリチャネルと、メモリチャネルに接続されたメモリと、データプロセッサと、を含む。データプロセッサは、メモリチャネルに接続されており、パケット構造を使用してメモリチャネルを介してメモリにアクセスするように構成されており、パケット構造は、複数のコマンドを定義し、対応するアドレスビット、データビット及びユーザビットを有する。データプロセッサは、第1のタイプのエラーコードを使用して、メモリチャネルを介してメモリと通信する。書き込みアクセス要求に応じて、データプロセッサは、異なる第2のタイプのエラーコードを計算し、第2のタイプのエラーコードの各ビットを、ユーザビットの対応するビットとして加える。メモリは、書き込みコマンドに応じて、ユーザビットをメモリに記憶し、読み出しコマンドに応じて、読み出し応答パケットでユーザビットをデータプロセッサに転送する。
データプロセッサからメモリチャネル上のメモリデバイスにデータを書き込む方法は、書き込み要求を受信することを含む。書き込み要求に従って、第1のタイプのエラーコードが生成される。書き込み要求に従って、第1のタイプのエラーコードと異なる第2のタイプのエラーコードが生成される。対応するアドレスビットと、対応するデータビットと、所定のエラー訂正コードフィールドにおける第1のタイプのエラーコードの対応する第1のエラーコードビットと、所定のユーザビットフィールドにおける第2のタイプのエラーコードの対応する第2のエラーコードビットと、を有する書き込みパケットが生成される。書き込みパケットは、メモリチャネルを介して転送される。
図1は、従来技術で知られているデータ処理システムのブロック図である。データ処理システム100は、概して、加速処理装置(APU)の形態のデータプロセッサ110と、メモリシステム120と、周辺構成要素相互接続エクスプレス(PCIe)システム150と、ユニバーサルシリアルバス(USB)システム160と、ディスクドライブ170と、を含む。データプロセッサ110は、データ処理システム100の中央処理装置(CPU)として動作し、最新のコンピュータシステムにおいて有用な様々なバス及びインターフェースを提供する。これらのインターフェースには、2つのダブルデータレート(DDRx)メモリチャネル、PCIeリンクに接続するためのPCIeルートコンプレックス、USBネットワークに接続するためのUSBコントローラ、及び、シリアルアドバンスドテクノロジーアタッチメント(SATA)マスストレージへのインターフェースが含まれる。
メモリシステム120は、メモリチャネル130とメモリチャネル140とを含む。メモリチャネル130は、DDRxバス132に接続されたデュアルインラインメモリモジュール(DIMM)のセットを含み、この例では別々のランクに対応する代表的なDIMM134,136,138が含まれる。同様に、メモリチャネル140は、DDRxバス142に接続されたDIMMのセットを含み、ここでは代表的なDIMM144,146,148が含まれる。
PCIeシステム150は、データプロセッサ110のPCIeルートコンプレックスに接続されたPCIeスイッチ152、PCIeデバイス154、PCIeデバイス156及びPCIeデバイス158を含む。PCIeデバイス156は、順に、システム基本入出力システム(BIOS)メモリ157に接続される。システムBIOSメモリ157は、読み出し専用メモリ(ROM)、フラッシュ電気的消去可能プログラマブルROM(EEPROM)等の様々な不揮発性メモリタイプの何れかであり得る。
USBシステム160は、データプロセッサ110のUSBマスタに接続されたUSBハブ162と、USBハブ162にそれぞれ接続された代表的なUSBデバイス164,166,168と、を含む。USBデバイス164,166,168は、キーボード、マウス、フラッシュEEPROMポート等のデバイスであり得る。
ディスクドライブ170は、SATAバスを介してデータプロセッサ110に接続されており、オペレーティングシステム、アプリケーションプログラム、アプリケーションファイル等のマスストレージを提供する。
データ処理システム100は、メモリチャネル130及びメモリチャネル140を提供することによって、最新のコンピューティングアプリケーションでの使用に適している。メモリチャネル130,140の各々は、最先端のDDRメモリ(例えば、DDRバージョン4(DDR4)、低電力DDR4(LPDDR4)、グラフィックスDDRバージョン5(gDDR5)、高帯域幅メモリ(HBM)等)に接続することができ、将来のメモリ技術に適応することができる。これらのメモリは、高いバス帯域幅及び高速動作を提供する。同時に、これらは、ラップトップコンピュータ等のバッテリ駆動アプリケーションの電力を節約するための低電力モードも提供し、熱監視機能も内蔵している。
図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メモリで形成され得ることに留意されたい。
NVDIMM-P規格草案によれば、データプロセッサ210上のメモリコントローラとNVDIMM-P238との間のトランザクションは、「リンクECC」によって保護される。リンクECCは、バス232を介したメモリコントローラとNVDIMMとの間のデータ転送のデータ完全性を保証する。既知のECCメカニズムによれば、リンクECCは、パケットのビットのうち何れかのビットにおけるランダムエラー又は一時エラーにより生じるリンク上のデータ破損から保護する。保護は、使用されるECCコードによって異なる。ECCにより、例えばマルチビットエラー検出を伴うシングルビットエラー訂正が可能となり得る。一時エラー又はランダムエラーが持続して生じるわけではないため、訂正不可能なエラーの検出に応じて、データプロセッサ210のメモリコントローラは、トランザクションを再生することができ、また、訂正可能なエラー及び訂正不可能なエラーの両方をオペレーティングシステムに報告することができる。
リンクECCは、シングルビット訂正又はリンク再生によっていくつかのエラーを訂正することができるが、マルチビットエラーは、ECCメカニズムだけでは訂正することができない。さらに、ECCメカニズムは、NVDIMM-P238上のメモリ、すなわちDDR4 DRAM等の通常の高密度DRAM又は様々なタイプのうち任意の不揮発性メモリ等のパーシステントメモリにおいて、シングルビット障害等のDIMM自体で発生するエラーを防ぐことができない。
図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と、を含む。
インターフェース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ドメインへのメモリアクセスを提供する。
アドレス生成器322は、データファブリックからAXI4バスを介して受信したメモリアクセス要求のアドレスを復号化する。メモリアクセス要求は、正規化されたフォーマットで表された物理アドレス空間内のアクセスアドレスを含む。アドレス生成器322は、正規化されたアドレスを、メモリシステム120内の実際のメモリデバイスをアドレス指定し、関連するアクセスを効率的にスケジューリングするのに使用できるフォーマットに変換する。このフォーマットは、メモリアクセス要求を、DDR4 DRAMの場合には特定のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループと、又はNVDIMM-P領域と関連付ける領域識別子を含む。スタートアップ時に、システムBIOSは、メモリシステム120内のメモリデバイスに問い合わせて、それらのサイズ及び構成を特定し、アドレス生成器322に関連付けられた構成レジスタのセットをプログラムする。アドレス生成器322は、構成レジスタに記憶された構成を使用して、正規化されたアドレスを好適なフォーマットに変換する。コマンドキュー320は、CPUコア又はグラフィックコア等のデータ処理システム100内のメモリアクセスエージェントから受信したメモリアクセス要求のキューである。コマンドキュー320は、アドレス生成器322によって復号化されたアドレスフィールドと、アービタ338がメモリアクセスを効率的に選択することを可能にする、アクセスタイプ及びサービス品質(QoS)識別子を含む他のアドレス情報と、を格納する。CAM324は、ライトアフターライト(WAW)及びリードアフターライト(RAW)の順序付け規則等の順序付け規則を実施する情報を含む。
リプレイキュー330は、アービタ338により選ばれたメモリアクセスを格納する一時的なキューであり、アドレス及びコマンドパリティレスポンス、DDR4 DRAMの場合には書き込み巡回冗長検査(CRC)レスポンス、gDDR5 DRAMの場合には書き込み及び読み出しCRCレスポンス等のレスポンスを待つ。リプレイキュー330は、ECC及びCRCチェック回路342にアクセスして、返されたECCが正しいか又はエラーを示すかを特定する。リプレイキュー330は、これらのサイクルのうち1つのサイクルにパリティ又はCRCエラーがあった場合に、アクセスがリプレイされることを可能にする。
リフレッシュロジックブロック332は、メモリアクセスエージェントから受信した通常の読み出し及び書き込みメモリアクセス要求とは別に生成される様々なパワーダウン、リフレッシュ及び終端抵抗(ZQ)較正サイクルのための状態マシンを含む。例えば、メモリランクがプリチャージでパワーダウンにある場合、定期的に呼び起してリフレッシュサイクルを実行しなくてはならない。リフレッシュロジックブロック332は、リフレッシュコマンドを定期的に生成して、DRAMチップ内のメモリセルのキャパシタからの電荷漏洩により生じるデータエラーを防止する。さらに、リフレッシュロジックブロック332は、定期的にZQを較正して、システム内の温度変化によるオンダイ終端抵抗の不整合を防止する。
アービタ338は、コマンドキュー320に双方向接続されており、メモリチャネルコントローラ310の心臓部である。アービタ338は、アクセスのインテリジェントスケジューリングにより効率を向上させ、メモリバスの使用率を高める。アービタ338は、タイミングブロック334を使用して、コマンドキュー320内の特定のアクセスが発行に適格であるか否かをDRAMタイミングパラメータに基づいて判定することにより、適切なタイミング関係を実施する。例えば、各DRAMは、アクティベートコマンド間に、「tRC」として知られる最小指定時間を有する。タイミングブロック334は、このタイミングパラメータ及びJEDEC仕様で規定された他のタイミングパラメータに基づいて適格性を判定するカウンタのセットを保持し、リプレイキュー330に双方向接続されている。ページテーブル336は、メモリチャネルの各バンク及びランクにおけるアクティブページに関する状態情報をアービタ338のために保持し、リプレイキュー330に双方向接続されている。
インターフェース312から受信した書き込みメモリアクセス要求に応じて、ECC及びCRC生成ブロック344は、書き込みデータに従ってECCを計算する。DB346は、受信したメモリアクセス要求の書き込みデータ及びECCを格納する。アービタ338がメモリチャネルにディスパッチするための対応する書き込みアクセスを選択すると、DB346は、書き込みデータ/ECCの組み合わせをキュー及びNVDIMM-Pシーケンサ314に出力する。
電力コントローラ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デバイスに連続的なメモリアクセスストリームを提供する。
メモリチャネルコントローラ310は、関連するメモリチャネルにディスパッチするメモリアクセスをメモリチャネルコントローラ310が選ぶことを可能にする回路を含む。望ましいアービトレーション決定を行うために、アドレス生成器322は、アドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス、及び、バンクグループを含むプリデコード情報に復号化し、コマンドキュー320は、プリデコード情報を格納する。構成レジスタ362は、アドレス生成器322が、受信したアドレス情報をどのように復号化するかを特定するための構成情報を格納する。アービタ338は、復号化されたアドレス情報、タイミングブロック334によって示されるタイミング適格性情報、及び、ページテーブル336によって示されるアクティブページ情報を使用して、QoS要件等の他の基準を遵守しながら、メモリアクセスを効率的にスケジューリングする。例えば、アービタ338は、メモリページを変更するのに必要なプリチャージ及びアクティベーションコマンドのオーバーヘッドを回避するために、ページを開くアクセス(accesses to open pages)に優先度付けを実施し、あるバンクへのオーバーヘッドアクセスを隠蔽するために、これらのアクセスを、別のバンクへの読み出し及び書き込みアクセスでインターリーブする。具体的には、通常動作の間、アービタ338は、通常、異なるページを選択する前にプリチャージが要求されるまで、異なるバンクでページを開いたままにしておく。
メモリコントローラ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に返す。
第2に、アドレス生成器322が、データプロセッサ110に使用される対応するアドレス生成器に置き換わる。さらに、アドレス生成器322は、NVDIMM-Pメモリのアドレス範囲を復号化し、メモリアクセス要求がNVDIMM-Pへの要求であることを示す復号化された信号を、コマンドキュー320に格納する。次に、アービタ338は、NVDIMM-P要求に、他の要求と比較して適切な優先順位を付け得る。
第3に、ECC及びCRC生成回路344が、データプロセッサ110により使用される対応するECC生成回路に置き換わる。ECC及びCRC生成回路344は、NVDIMM-Pに送信される書き込みデータのECCを特定するだけでなく、エンドツーエンドのデータ完全性チェックのために、パケット全体のCRCも生成する。
第4に、キュー及びNVDIMM-Pシーケンサ314が、データプロセッサ110により使用される対応するキューに置き換わる。キュー及びNVDIMM-Pシーケンサ314は、NVDIMM-Pのようなパーシステントメモリシステムの高いレイテンシを補うのに十分な深さのキューを含み、又は、いくつかの実施形態では、DRAMアクセス用とNVDIMM-Pアクセス用に別個のキューを含む。
これらの相違点と、メモリコントローラ300の動作及び利点と、について検討する。
図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の出力と、を有する。
NVDIMM-P420は、NVDIMM-Pバッファ422と、ダイナミックランダムアクセスメモリ(DRAM)424と、パーシステントストレージ426と、を含む。NVDIMM-Pバッファ422は、パケタイザ及びドライバ412の出力ポートに接続された要求チャネル入力ポートと、双方向内部ポートと、応答チャネルに接続されたチャネル出力ポートと、を有する。DRAM424は、NVDIMM-Pバッファ422に接続された第1の双方向ポートと、パーシステントストレージ426に接続された第2の双方向ポートと、を有する。
図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の何れかに格納する。
読み出しコマンドに応じて、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)により、最終的に受信される。
上記で参照された実施形態では、リプレイキュー330も、リンクECC及びCRCの両方の結果にアクセスし、パリティエラー又はCRCエラーに応じて、コマンドをリプレイするか否かを決定する。
図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つのデータパケットフォーマットをサポートする。
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」とラベル付けされたいくつかの予約ビットも存在する。
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データを提供する。
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データを提供する。
NVDIMM-P通信プロトコルは、規格案で動作が説明される他のいくつかのコマンドもサポートする。これらのコマンドの動作は、本開示と関連がないため、これ以上説明しない。
図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=64の値を有するCRCが格納され得る。一実施形態によれば、メモリコントローラ300は、次の多項式を使用して、6ビットのCRCを生成する。
0x33=x+x+x+x+1 [1]
他の多項式も可能であることは明らかであろう。さらに、NVDIMM-P規格(又は、他の類似規格)の異なるバージョンが将来開発され、関連パケットによりさらに多くのUSERビットが利用可能になれば、追加のビットを利用する異なるCRCコードをサポートすることができる。
図7は、いくつかの実施形態による、メモリコントローラ及びパーシステントメモリのさらなる詳細を示す図2のデータ処理システムの一部700のブロック図である。図7では、メモリコントローラは、例えばPOISONビット及び/又はADDRESSビットを含むフレームの他のコンポーネントを使用して、CRC及びデータ[511:0]を生成する。
部分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に送る。
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に配置し、異種バスを介してそれらを送信する。
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)ビットを含む。
NVDIMM-P規格案によれば、データプロセッサ210上のメモリコントローラとNVDIMM-P238との間におけるCRCビットを含むトランザクションは、「リンクECC」により保護される。リンクECCは、メモリバスを介したメモリコントローラとNVDIMM-Pとの間のデータ転送のデータ完全性を保証する。既知のECCメカニズムによれば、リンクECCは、ランダムエラー又は一時エラーにより生じるリンク上のデータ破損から保護される。保護は、使用されるECCコードによって異なる。ECCにより、例えばマルチビットエラー検出を伴うシングルビットエラー訂正が可能となり得る。訂正不可能なエラーの検出に応じて、メモリコントローラは、一時エラー又はランダムエラーが持続しないように、トランザクションをリプレイすることができ、また、訂正可能なエラー及び訂正不可能なエラーの両方をオペレーティングシステムに報告し得る。
リンクECCは、シングルビット訂正やリンクリプレイによりいくつかのエラーを訂正することができるが、マルチビットエラーは、ECCメカニズムだけでは訂正することができない。さらに、ECCメカニズムは、NVDIMM-P上のメモリ、すなわちDDR4 DRAM等の通常の高密度DRAM、又は、様々なタイプのうち任意のNVDIMM等のパーシステントメモリにおいて、シングルビット障害等のようにDIMMで起こるエラーを防ぐことができない。ECCは格納されないが、読み出し時にNVDIMM-Pにより生成され、受信した読み出しデータに基づいてメモリコントローラによりチェックされる。同様に、書き込みサイクルでは、ECCは、メモリコントローラにより生成及び送信され、NVDIMM-Pによりチェックされる。従って、DIMMにはデータのエンドツーエンド保護が存在しない。
しかし、本明細書で開示される様々な実施形態によれば、メモリコントローラは、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ビットを含むパケットのビット全てをチェックすることに留意されたい。
従って、本明細書で説明するメモリコントローラ及びデータ処理システムは、NVDIMM-Pデバイスに格納され、対応するデータが後で読み出される時の比較に利用可能な限定された数のユーザビットを活用することにより、データ完全性チェックの対象範囲を拡大して、エンドツーエンドチェックを提供する。チェックメカニズムは、シングルビットエラー及びマルチビットエラーを検出できる6ビットのCRCコードを使用する。さらに、このチェックメカニズムは、既存のリンクECCと共存できるが、利用可能なビット、オプションBフレームフォーマットのユーザビットを活用して、エンドツーエンドデータ完全性チェックを追加することにより、より堅牢でエラーのないシステムを提供する。従って、リンクECC及びCRCチェックメカニズムが共存し、システムの信頼性を向上させる重複的且つ補完的な保護メカニズムのセットを提供する。
様々な実施形態では、データパケットの異なる部分を使用して、CRCが生成され得る。一実施形態では、データのみが使用される。別の実施形態では、例えばポイズンビット及び/又はアドレスを含むパケットの他のビットを使用して、CRC及びデータ[511:0]が生成され得る。さらに、NVDIMM-P規格の異なるバージョンが将来開発され、関連パケットによりさらに多くのユーザビットが利用可能になれば、異なるCRCコードをサポートすることができる。例えば、将来のバージョンで16ユーザビットが提供される場合、上述したシステムでは、6ビットのCRCの代わりに16ビットのCRCを使用することができる。また、メモリコントローラ及びデータプロセッサは、CRCエラーに応じて様々な訂正アクションを取り得る。CRCエラーはリンクECCエラーもキャプチャするため、これらのアクションは、さらなるアクションのためにオペレーティングシステムにエラーを報告すること又は動作をリプレイすることを含む。
図3のメモリコントローラ300又はその任意の部分は、データベース形態のコンピュータアクセス可能データ構造、又は、プログラムにより読み出し可能であり、集積回路を製造するのに直接的若しくは間接的に使用可能な他のデータ構造によって、記述又は表され得る。例えば、このデータ構造は、Verilog又はVHDL等の高次設計言語(HDL)によるハードウェア機能の動作レベル記述又はレジスタ転送レベル(RTL)記述であってもよい。記述は、記述を合成して、合成ライブラリからゲートのリストを含むネットリストを生成し得る合成ツールによって、読み出され得る。ネットリストは、集積回路を含むハードウェアの機能を表すゲートのセットを含む。次に、ネットリストは、マスクに適用される幾何学形状を記述するデータセットを生成するように、配置及びルーティングされ得る。その後、集積回路を製造するために、様々な半導体製造ステップにおいてマスクが使用され得る。或いは、コンピュータアクセス可能記憶媒体上のデータベースは、必要に応じてネットリスト(合成ライブラリの有無にかかわらず)若しくははデータセット、或いはグラフィックデータシステム(GDS)IIデータであってもよい。
特定の実施形態が説明されているが、これらの実施形態に対する様々な変更が当業者には明らかであろう。従って、添付の特許請求の範囲によって、開示された実施形態の範囲に入る、開示された実施形態の全ての変更をカバーすることが意図される。

Claims (15)

  1. メモリコントローラを備えたデータプロセッサであって、
    前記メモリコントローラは、
    復号化されたコマンドを格納してディスパッチするためにメモリチャネルに接続されたコマンドキューと、
    前記コマンドキューに接続され、所定の基準に従って前記コマンドキューからコマンドを選択するためのアービタと、
    書き込み要求のデータに応じて、第1のタイプのエラーコードを生成するための第1のエラーコード生成回路と、
    前記書き込み要求に対して、前記第1のタイプのエラーコードとは異なる第2のタイプのエラーコードを生成するための第2のエラーコード生成回路と、
    前記アービタと、前記第1のエラーコード生成回路と、前記第2のエラーコード生成回路と、に接続され、書き込みコマンドをインターフェースに提供するためのキューであって、前記書き込みコマンドは、前記データと、前記第1のタイプのエラーコードと、前記第2のタイプのエラーコードと、を含む、キューと、を備える、
    データプロセッサ。
  2. 前記メモリコントローラは、
    前記コマンドキューに接続された第1のポートと、前記メモリチャネルに接続された第2のポートと、を有するパケタイザ及びドライバを備え、
    前記パケタイザ及びドライバは、
    前記第1のタイプのエラーコードを書き込みデータパケットの所定のエラー訂正コード(ECC)フィールドに提供し、前記第2のタイプのエラーコードのビットを前記書き込みデータパケットの所定のユーザデータフィールドの対応するビットに提供する、
    請求項1のデータプロセッサ。
  3. 前記第2のエラーコード生成回路は、前記書き込み要求の前記データ及びアドレスを使用して、前記第2のタイプのエラーコードを生成する、
    請求項1のデータプロセッサ。
  4. 前記第2のエラーコード生成回路は、前記書き込み要求のメタデータを使用して、前記第2のタイプのエラーコードを生成する、
    請求項1のデータプロセッサ。
  5. 前記第2のエラーコード生成回路は、前記メタデータのポイズンビットに応じて、前記第2のタイプのエラーコードを生成する、
    請求項のデータプロセッサ。
  6. 前記メモリチャネルは、ダイナミックランダムアクセスメモリ(DRAM)と、パーシステントストレージを備えた不揮発性デュアルインラインメモリモジュール(NVDIMM-P)と、にインターフェースするように構成された異種メモリチャネルであり、
    前記メモリコントローラは、メモリアクセス要求を受信するための入力と、前記メモリアクセス要求に応じて前記復号化されたコマンドを提供するための出力と、を有する復号器を備え、前記復号化されたコマンドの各々は、前記メモリアクセス要求が前記NVDIMM-Pへの要求であるか否かを示す復号化された信号を含む、
    請求項1のデータプロセッサ。
  7. メモリチャネルと、
    前記メモリチャネルに接続されたメモリと、
    前記メモリチャネルに接続され、パケット構造を使用して前記メモリチャネルを介して前記メモリにアクセスするように構成されたデータプロセッサであって、前記パケット構造は、複数のコマンドを定義し、対応するアドレスビットと、データビットと、ユーザビットと、を有し、前記データプロセッサは、第1のタイプのエラーコードを使用して前記メモリチャネルを介して前記メモリと通信する、データプロセッサと、
    を備えるデータ処理システムであって、
    前記データプロセッサは、書き込みアクセス要求に応じて第2のタイプのエラーコードを計算し、前記第2のタイプのエラーコードの各ビットを前記ユーザビットの対応するビットとして加え、前記第2のタイプのエラーコードは、前記第1のタイプのエラーコードとは異なり、
    前記メモリは、書き込みコマンドに応じて前記ユーザビットを前記メモリに格納し、読み出しコマンドに応じて、前記ユーザビットを読み出し応答パケットで前記データプロセッサに転送する、
    データ処理システム。
  8. 前記データプロセッサは、メモリコントローラを備え、
    前記メモリコントローラは、
    前記メモリチャネルに接続され、インターフェースからデータ応答を受信するためのキューであって、前記データ応答は、読み出しデータと、対応する第1のタイプのエラーコードと、前記第1のタイプのエラーコードとは異なる対応する第2のタイプのエラーコードと、を含む、キューと、
    前記読み出し応答の前記読み出しデータに応じて前記第1のタイプのエラーコードを生成し、前記第1のタイプのエラーコードと、前記メモリチャネルから受信した第1のエラーコードとを比較し、前記比較に応じて第1のタイプのエラー信号を選択的に生成するための第1のエラーコードチェック回路と、
    前記読み出し応答の前記読み出しデータに応じて前記第2のタイプのエラーコードを生成し、前記第2のタイプのエラーコードと、前記メモリチャネルから受信した前記読み出し応答パケット内の第2のエラーコードとを比較し、前記比較に応じて第2のタイプのエラー信号を選択的に生成するための第2のエラーコードチェック回路と、を備える、
    請求項のデータ処理システム。
  9. 前記インターフェースに接続された第1のポートと、前記メモリチャネルに接続されるように構成された第2のポートと、を有する物理インターフェース回路(PHY)であって、前記読み出し応答パケットの所定のデータ部分から前記読み出しデータを抽出し、前記読み出し応答パケットの所定のユーザデータフィールドから前記第2のタイプのエラーコードを抽出するためのレシーバ及びデパケタイザを備える、PHYをさらに備える、
    請求項のデータ処理システム。
  10. 前記メモリは、パーシステントストレージを有する不揮発性デュアルインラインメモリモジュール(NVDIMM-P)を備え、
    前記メモリチャネルは、ダイナミックランダムアクセスメモリ(DRAM)及び前記NVDIMM-Pにインターフェースするように構成された異種メモリチャネルであり、
    前記メモリコントローラは、メモリアクセス要求を受信するための入力と、前記メモリアクセス要求に応じて復号化されたコマンドを提供するための出力と、を有する復号器を備え、
    前記復号化されたコマンドは、前記メモリアクセス要求が前記NVDIMM-Pへの要求であるか否かを示す復号化された信号を含む、
    請求項のデータ処理システム。
  11. データプロセッサからメモリチャネル上のメモリデバイスにデータを書き込む方法であって、
    前記データプロセッサのメモリコントローラが、書き込み要求を受信することと、
    前記メモリコントローラが、前記書き込み要求に従って、第1のタイプのエラーコードを生成することと、
    前記メモリコントローラが、前記書き込み要求に従って、前記第1のタイプのエラーコードとは異なる第2のタイプのエラーコードを生成することと、
    対応するアドレスビットと、対応するデータビットと、所定のエラー訂正コード(ECC)フィールド内の前記第1のタイプのエラーコードの対応する第1のエラーコードビットと、所定のユーザビットフィールド内の前記第2のタイプのエラーコードの対応する第2のエラーコードビットと、を有する書き込みパケットを形成することと、
    前記書き込みパケットを、前記メモリチャネルを介して前記データプロセッサから前記メモリデバイスに転送することと、を含む、
    方法。
  12. 前記書き込みパケットが前記メモリチャネルを介して正しく受信されたか否かを、前記第1のタイプのエラーコードを使用して判別し、前記書き込みパケットが前記メモリチャネルを介して正しく受信されなかった場合にエラー応答を提供することと、
    前記第2のタイプのエラーコードを前記メモリデバイスに格納することと、をさらに含む、
    請求項11の方法。
  13. 前記書き込み要求に従って、前記第1のタイプのエラーコードを生成することは、前記書き込み要求の書き込みアドレスと、書き込みデータと、所定のメタデータビットと、に従って前記第1のタイプのエラーコードを生成することを含む、
    請求項11の方法。
  14. 前記書き込みパケットを形成することは、
    前記メモリデバイスがパーシステントストレージを備える不揮発性デュアルインラインメモリモジュール(NVDIMM-P)である場合に、前記対応するアドレスビットと、前記対応するデータビットと、前記所定のECCフィールド内の前記対応する第1のエラーコードビットと、前記所定のユーザビットフィールド内の前記対応する第2のエラーコードビットと、を有する前記書き込みパケットを選択的に形成することを含む、
    請求項11の方法。
  15. 前記メモリデバイスから読み出し応答パケットを受信することと、
    前記読み出し応答パケットの読み出しデータに応じて前記第1のタイプのエラーコードを生成し、前記第1のタイプのエラーコードと、前記読み出し応答パケット内の第1のエラーコードとを比較し、前記比較に応じて第1のタイプのエラー信号を選択的に生成することと、
    前記読み出し応答パケットの前記読み出しデータ及びアドレスに応じて前記第2のタイプのエラーコードを生成し、前記第2のタイプのエラーコードと、前記読み出し応答パケット内の第2のエラーコードとを比較し、前記比較に応じて第2のタイプのエラー信号を選択的に生成することと、をさらに含む、
    請求項11の方法。
JP2022508745A 2019-08-12 2020-07-17 パーシステントメモリシステム等のデータ完全性 Active JP7121875B1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022125240A JP2022153654A (ja) 2019-08-12 2022-08-05 パーシステントメモリシステム等のデータ完全性

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
IN201911032592 2019-08-12
IN201911032592 2019-08-12
US16/705,913 US11200106B2 (en) 2019-08-12 2019-12-06 Data integrity for persistent memory systems and the like
US16/705,913 2019-12-06
PCT/US2020/042608 WO2021030007A1 (en) 2019-08-12 2020-07-17 Data integrity for persistent memory systems and the like

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2022125240A Division JP2022153654A (ja) 2019-08-12 2022-08-05 パーシステントメモリシステム等のデータ完全性

Publications (2)

Publication Number Publication Date
JP7121875B1 true JP7121875B1 (ja) 2022-08-18
JP2022537464A JP2022537464A (ja) 2022-08-25

Family

ID=74566841

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2022508745A Active JP7121875B1 (ja) 2019-08-12 2020-07-17 パーシステントメモリシステム等のデータ完全性
JP2022125240A Pending JP2022153654A (ja) 2019-08-12 2022-08-05 パーシステントメモリシステム等のデータ完全性

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2022125240A Pending JP2022153654A (ja) 2019-08-12 2022-08-05 パーシステントメモリシステム等のデータ完全性

Country Status (6)

Country Link
US (2) US11200106B2 (ja)
EP (1) EP4014146A4 (ja)
JP (2) JP7121875B1 (ja)
KR (1) KR102426619B1 (ja)
CN (1) CN114245891A (ja)
WO (1) WO2021030007A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11200106B2 (en) * 2019-08-12 2021-12-14 Advanced Micro Devices, Inc. Data integrity for persistent memory systems and the like
US11262946B2 (en) * 2019-11-25 2022-03-01 Micron Technology, Inc. Cache-based memory read commands
US11886910B2 (en) * 2019-12-27 2024-01-30 Intel Corporation Dynamic prioritization of system-on-chip interconnect traffic using information from an operating system and hardware
US11531601B2 (en) 2019-12-30 2022-12-20 Advanced Micro Devices, Inc. Error recovery for non-volatile memory modules
US11137941B2 (en) * 2019-12-30 2021-10-05 Advanced Micro Devices, Inc. Command replay for non-volatile dual inline memory modules
US11392441B2 (en) * 2019-12-30 2022-07-19 Advanced Micro Devices, Inc. Error reporting for non-volatile memory modules
US11321169B2 (en) * 2020-07-31 2022-05-03 EMC IP Holding Company LLC End-to-end datapath protection
US11249839B1 (en) * 2020-08-14 2022-02-15 Rockwell Automation Technologies, Inc. Method and apparatus for memory error detection
US20220300374A1 (en) * 2021-03-17 2022-09-22 Micron Technology, Inc. Redundant array management techniques
US11636054B2 (en) 2021-03-31 2023-04-25 Advanced Micro Devices, Inc. Memory controller power states
US11775387B2 (en) * 2022-01-21 2023-10-03 Micron Technology, Inc. Cyclic redundancy check (CRC) retry for memory systems in compute express link (CXL) devices
US20230409426A1 (en) * 2022-06-16 2023-12-21 Advanced Micro Devices, Inc. Host-level error detection and fault correction

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070226588A1 (en) 2005-10-24 2007-09-27 Lee Shea-Yun Memory Device and Bit Error Detection Method Thereof
JP2010512568A (ja) 2006-12-06 2010-04-22 フリン,デイビッド 高容量不揮発性ストレージ用のキャッシュとしてのソリッドステートストレージのための装置、システム、及び方法
WO2018013584A1 (en) 2016-07-15 2018-01-18 Advanced Micro Devices, Inc. Ddr memory error recovery

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040179527A1 (en) * 2003-03-10 2004-09-16 Cypher Robert E. Stripping packet routing prefixes in a computer system network
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US8621113B2 (en) * 2011-05-31 2013-12-31 Micron Technology, Inc. Apparatus including host bus adapter and serial attachment programming compliant device and related methods
US20130346695A1 (en) 2012-06-25 2013-12-26 Advanced Micro Devices, Inc. Integrated circuit with high reliability cache controller and method therefor
US9535785B2 (en) * 2014-01-17 2017-01-03 Macronix International Co., Ltd. ECC method for flash memory
US10684969B2 (en) * 2016-07-15 2020-06-16 Advanced Micro Devices, Inc. Command arbitration for high speed memory interfaces
US9965222B1 (en) * 2016-10-21 2018-05-08 Advanced Micro Devices, Inc. Software mode register access for platform margining and debug
US11093419B2 (en) 2017-04-11 2021-08-17 Dell Products L.P. System and method for cost and power optimized heterogeneous dual-channel DDR DIMMs
US10877842B2 (en) 2017-09-08 2020-12-29 Intel Corporation Detecting silent data corruption for mass storage devices
US10642683B2 (en) 2017-10-11 2020-05-05 Hewlett Packard Enterprise Development Lp Inner and outer code generator for volatile memory
US11200106B2 (en) * 2019-08-12 2021-12-14 Advanced Micro Devices, Inc. Data integrity for persistent memory systems and the like

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070226588A1 (en) 2005-10-24 2007-09-27 Lee Shea-Yun Memory Device and Bit Error Detection Method Thereof
JP2010512568A (ja) 2006-12-06 2010-04-22 フリン,デイビッド 高容量不揮発性ストレージ用のキャッシュとしてのソリッドステートストレージのための装置、システム、及び方法
WO2018013584A1 (en) 2016-07-15 2018-01-18 Advanced Micro Devices, Inc. Ddr memory error recovery
JP2019527424A (ja) 2016-07-15 2019-09-26 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated Ddrメモリエラーリカバリ

Also Published As

Publication number Publication date
EP4014146A4 (en) 2022-10-12
CN114245891A (zh) 2022-03-25
US20210049062A1 (en) 2021-02-18
WO2021030007A1 (en) 2021-02-18
JP2022537464A (ja) 2022-08-25
US11200106B2 (en) 2021-12-14
US11704183B2 (en) 2023-07-18
KR102426619B1 (ko) 2022-07-28
US20220091921A1 (en) 2022-03-24
KR20220037518A (ko) 2022-03-24
JP2022153654A (ja) 2022-10-12
EP4014146A1 (en) 2022-06-22

Similar Documents

Publication Publication Date Title
JP7121875B1 (ja) パーシステントメモリシステム等のデータ完全性
JP7155103B2 (ja) Ddrメモリエラーリカバリ
KR102460513B1 (ko) 통합 패키지 후 복구
CN114902198B (zh) 用于异构存储器系统的信令
US11531601B2 (en) Error recovery for non-volatile memory modules
US20160266975A1 (en) Memory devices and modules
CN114902197B (zh) 非易失性双列直插式存储器模块的命令重放
JP2023508117A (ja) 不揮発性メモリモジュールのエラー報告

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220412

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220412

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20220412

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220712

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220805

R150 Certificate of patent or registration of utility model

Ref document number: 7121875

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150