(57)【要約】  不揮発性メモリ(NVM)を含むメモリシステムのメディアコントローラとホストデバイスとの間で書込みクレジットを同期させるためのシステムおよび方法であって、ホストデバイスは、ホストデバイスのメモリコントローラに実装された書込みクレジット(WC)カウンタを維持するように構成されている。WCカウンタは、NVMに発行される可能性のある未解決の書込みコマンドの数を追跡し、制限する。ホストデバイスは、メディアコントローラ内の利用可能な書込みバッファスペースのステータスを取得し、メモリシステムから送信された読取りパケットのメタデータで報告された書込みバッファスペースにおいて検出された任意の誤りに基づいてWCカウンタを調整するよう、メモリシステムに問合せを行い得る。
2021503642.tif 000002
【特許請求の範囲】
【請求項１】
メモリシステムにアクセスする方法であって、
前記メモリシステム内の書込みバッファの利用可能な書込みバッファスペースを反映するようにホストデバイス内の書込みクレジットカウンタを設定するステップと、
前記ホストデバイスから前記メモリシステムに書込みコマンドを発行すると、前記書込みクレジットカウンタを減分するステップと、
前記ホストデバイスにおいて、前記メモリシステムから前記書込みバッファ内の追加の利用可能な書込みバッファスペースの指示を受信すると、前記書込みクレジットカウンタを増分するステップと
を含む方法。
【請求項２】
前記書込みバッファ内の前記追加の利用可能な書込みバッファスペースが、前記メモリシステム内の不揮発性メモリに書き込まれる前記書込みバッファからの書込み動作に基づく、請求項1に記載の方法。
【請求項３】
前記書込みコマンドが、永続的メモリ書込み(PWRITE)またはパリティ情報を伴う書込み(XWRITE)である、請求項1に記載の方法。
【請求項４】
前記メモリシステムから、前記書込みバッファ内のPWRITEおよびXWRITEのための追加の利用可能な書込みバッファスペースの個別の指示を受信するステップを含む、請求項3に記載の方法。
【請求項５】
読取りステータスコマンドが前記ホストデバイスによって前記メモリシステムに送信されたことに応答して、前記メモリシステムから前記書込みバッファ内の利用可能な書込みバッファスペースの指示を受信するステップをさらに含む請求項1に記載の方法。
【請求項６】
前記メモリシステムから、1つまたは複数の読取りデータパケットのメタデータで前記利用可能な書込みバッファスペースの前記指示を受信するステップを含む請求項5に記載の方法。
【請求項７】
前記指示が、プログラム可能な書込みクレジット値、書込みクレジットの符号化、またはモードレジスタビット設定のうちの1つを含む、請求項6に記載の方法。
【請求項８】
前記ホストデバイスによって、前記1つまたは複数の読取りデータパケットに対して誤り検査を実行するステップをさらに含む請求項6に記載の方法。
【請求項９】
前記ホストデバイスによって、前記誤り検査に基づいて前記1つまたは複数の読取りデータパケットにおける誤りを決定し、別の読取りステータスコマンドを前記メモリシステムに発行するステップをさらに含む請求項8に記載の方法。
【請求項１０】
前記書込みクレジットカウンタがゼロの値に達した場合、書込みコマンドが前記ホストデバイスによって前記メモリシステムに発行されることを防止するステップをさらに含む請求項1に記載の方法。
【請求項１１】
装置であって、
書込みクレジットカウンタを備えるホストデバイスを備え、前記ホストデバイスが、書込みバッファを備えるメモリシステムに結合されており、前記ホストデバイスが、
前記書込みバッファの利用可能な書込みバッファスペースを反映するように前記書込みクレジットカウンタを設定し、
前記メモリシステムに書込みコマンドを発行すると、前記書込みクレジットカウンタを減分し、
前記メモリシステムから前記書込みバッファ内の追加の利用可能な書込みバッファスペースの指示を受信すると、前記書込みクレジットカウンタを増分する
ように構成される、
装置。
【請求項１２】
前記書込みバッファ内の前記追加の利用可能な書込みバッファスペースが、前記メモリシステム内の不揮発性メモリに書き込まれる前記書込みバッファからの書込み動作に基づく、請求項11に記載の装置。
【請求項１３】
前記書込みコマンドが、永続的メモリ書込み(PWRITE)またはパリティ情報を伴う書込み(XWRITE)である、請求項11に記載の装置。
【請求項１４】
前記ホストデバイスが、前記メモリシステムから、前記書込みバッファ内のPWRITEおよびXWRITEのための追加の利用可能な書込みバッファスペースの個別の指示を受信するように構成される、請求項13に記載の装置。
【請求項１５】
前記ホストデバイスが、読取りステータスコマンドが前記ホストデバイスによって前記メモリシステムに送信されたことに応答して、前記メモリシステムから前記書込みバッファ内の利用可能な書込みバッファスペースの指示を受信するようにさらに構成される、請求項11に記載の装置。
【請求項１６】
前記ホストデバイスが、前記メモリシステムから、1つまたは複数の読取りデータパケットのメタデータで前記利用可能な書込みバッファスペースの前記指示を受信するように構成される、請求項15に記載の装置。
【請求項１７】
前記指示が、プログラム可能な書込みクレジット値、書込みクレジットの符号化、またはモードレジスタビット設定のうちの1つを含む、請求項16に記載の装置。
【請求項１８】
前記ホストデバイスが、前記1つまたは複数の読取りデータパケットに対して誤り検査を実行するようにさらに構成される、請求項16に記載の装置。
【請求項１９】
前記ホストデバイスが、前記誤り検査に基づいて前記1つまたは複数の読取りデータパケットの誤りを決定し、別の読取りステータスコマンドを前記メモリシステムに発行するようにさらに構成される、請求項18に記載の装置。
【請求項２０】
前記ホストデバイスが、前記書込みクレジットカウンタがゼロの値に達した場合、書込みコマンドが前記メモリシステムに発行されるのを防止するようにさらに構成される、請求項11に記載の装置。
【請求項２１】
プロセッサによって実行されると、メモリシステムにアクセスするための動作を前記プロセッサに実施させるコードを記憶した非一時的コンピュータ可読記憶媒体であって、前記非一時的コンピュータ可読記憶媒体が、
前記メモリシステム内の書込みバッファの利用可能な書込みバッファスペースを反映するようにホストデバイス内の書込みクレジットカウンタを設定するためのコードと、
前記ホストデバイスから前記メモリシステムに書込みコマンドを発行すると、前記書込みクレジットカウンタを減分するためのコードと、
前記ホストデバイスにおいて、前記メモリシステムから前記書込みバッファ内の追加の利用可能な書込みバッファスペースの指示を受信すると、前記書込みクレジットカウンタを増分するためのコードと
を記憶した、非一時的コンピュータ可読記憶媒体。
【請求項２２】
前記書込みバッファ内の前記追加の利用可能な書込みバッファスペースが、前記メモリシステム内の不揮発性メモリに書き込まれる前記書込みバッファからの書込み動作に基づく、請求項21に記載の非一時的コンピュータ可読記憶媒体。
【請求項２３】
前記書込みコマンドが、永続的メモリ書込み(PWRITE)またはパリティ情報を伴う書込み(XWRITE)である、請求項21に記載の非一時的コンピュータ可読記憶媒体。
【請求項２４】
前記メモリシステムから、前記書込みバッファ内のPWRITEおよびXWRITEのための追加の利用可能な書込みバッファスペースの個別の指示を受信するためのコードをさらに記憶した請求項23に記載の非一時的コンピュータ可読記憶媒体。
【請求項２５】
読取りステータスコマンドが前記ホストデバイスによって前記メモリシステムに送信されたことに応答して、前記メモリシステムから前記書込みバッファ内の利用可能な書込みバッファスペースの指示を受信するためのコードをさらに記憶した請求項21に記載の非一時的コンピュータ可読記憶媒体。
【請求項２６】
前記メモリシステムから、1つまたは複数の読取りデータパケットのメタデータで前記利用可能な書込みバッファスペースの前記指示を受信するためのコードをさらに記憶した請求項25に記載の非一時的コンピュータ可読記憶媒体。
【請求項２７】
前記指示が、プログラム可能な書込みクレジット値、書込みクレジットの符号化、またはモードレジスタビット設定のうちの1つを含む、請求項26に記載の非一時的コンピュータ可読記憶媒体。
【請求項２８】
前記ホストデバイスによって、前記1つまたは複数の読取りデータパケットに対して誤り検査を実行するためのコードをさらに記憶した請求項26に記載の非一時的コンピュータ可読記憶媒体。
【請求項２９】
前記ホストデバイスによって、前記誤り検査に基づいて前記1つまたは複数の読取りデータパケットにおける誤りを決定するためのコード、および別の読取りステータスコマンドを前記メモリシステムに発行するためのコードをさらに記憶した請求項28に記載の非一時的コンピュータ可読記憶媒体。
【請求項３０】
装置であって、
メモリシステムに結合されたホストデバイスであり、前記ホストデバイスが、書込みクレジットを追跡するための手段を備え、前記書込みクレジットが、前記メモリシステム内の書込みバッファの利用可能な書込みバッファスペースを反映し、書込みクレジットを追跡するための前記手段が、
前記ホストデバイスが前記メモリシステムに書込みコマンドを発行すると、前記書込みクレジットを減分するための手段と、
前記ホストデバイスにおいて、前記メモリシステムから前記書込みバッファ内の追加の利用可能な書込みバッファスペースの指示を受信すると、前記書込みクレジットを増分するための手段と
を含む装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本特許出願は、係属中であり、本出願の譲受人に譲渡され、その全体が参照により本明細書に明確に組み込まれる、2017年10月31日に出願された「WRITE CREDITS MANAGEMENT FOR NON-VOLATILE MEMORY」と題する仮特許出願第62/579,715号の利益を主張する。
【０００２】
開示された態様は、不揮発性メモリシステムの書込み動作の管理を対象とする。より詳細には、本開示の例示的な態様は、不揮発性デュアルインラインメモリモジュール(NVDIMM)および永続的NVDIMM(NVDIMM-P)などの不揮発性メモリを対象とする書込み動作のための書込みクレジットの使用および管理を対象とする。
【背景技術】
【０００３】
いくつかのメモリシステムでは、書込み動作の永続性の期待があり、これは、たとえば、永続的な書込み動作の実行が進行中で完了していない間に、電力の損失またはシステムクラッシュがあった場合でも、メモリシステムに書き込まれ、永続的な書込みとして分類された情報が失われないことを意味する。書込み動作を永続的にするために、書込み動作を要求するホスト(たとえば、プロセッサ)またはそのアプリケーションは、書込み動作が永続メモリに到達したという明示的な確認を期待し得る。対照的に、(ダイナミックランダムアクセスメモリ(DRAM)または他の揮発性メモリなどの)非永続メモリへの書込み動作は、従来、アプリケーションの観点からすると、書込み動作および関連するデータがメモリに転送されると完了したまたはポストされたと見なされ、データが書き込まれたという明示的な確認は必要とされない。
【０００４】
当技術分野で知られている一連のDRAM集積回路を含む不揮発性デュアルインラインメモリモジュール(NVDIMM)などの不揮発性メモリ(NVM)は、永続的な書込みをサポートするように構成され得る。たとえば、永続的な書込みをサポートするための他の実装形態も知られているが、NVDIMMは、永続的な書込みをサポートする一実装形態でエネルギーがバックアップされ得る。永続的な書込みをサポートするNVDIMMは、NVDIMM-Pとしても知られている。ホストデバイスは、NVDIMM-PなどのNVMを含むメモリシステムへの永続的な書込みの要求を含む書込み要求を送信するように構成されてもよい。NVDIMM-Pの読取り/書込みアクセスを管理するように構成されたメディアコントローラは、メモリシステムに統合されてもよく、メディアコントローラは、ホストデバイスから書込み要求を受信し、書込み要求をサポートするために利用可能なリソースに基づいて、たとえば、メディアコントローラの利用可能な書込みバッファスペースに基づいて、書込み要求をNVDIMM-Pに向けるように構成されてもよい。
【０００５】
しかしながら、従来の実装形態では、メディアコントローラからNVM(たとえばNVDIMM-P)への書込みパフォーマンスが不十分であり、書込み動作の速度が遅くなる場合がある。これは、従来の実装形態では、メディアコントローラが書込み動作をNVMに後退させる、または転送すると、メディアコントローラが対応する書込みバッファスペースを解放し、今度は、解放された書込みバッファスペースが、ホストデバイスに戻されるように、書込みクレジットに変換されるからである。ホストデバイス上のメモリコントローラは、メモリシステムへの書込みトラフィックの量を制限して、書込みバッファスペースを超えないように、戻された書込みクレジットに基づいて、書込み動作を調整するように構成され得る。
【０００６】
しかしながら、メディアコントローラからホストデバイスに書込みクレジットを戻す際の訂正不可能な誤り(UE)などの誤りが発生する場合がある。メモリコントローラは、当技術分野で知られているように、誤り検査、たとえばパリティチェックを実行する、または誤り制御コーディング(ECC)などを使用することなどによって、そのような誤りを検出し得る。しかしながら、そのような誤りが検出されると、メモリコントローラは、従来の実装形態では、対応する戻される書込みクレジットにおいて誤りを招いた可能性のある書込み動作を単純に再試行できない場合がある。これは、メディアコントローラが戻される書込みクレジットの誤りを認識しておらず、そのため、メディアコントローラは、適切に後退されなかった書込み動作を考慮するために、その書込みバッファスペースを更新せず、ホストデバイスに報告された書込みクレジットとメディアコントローラにおける使用可能な書込みバッファスペースとの間に不一致が生じることになるからである。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
したがって、たとえば、メディアコントローラからホストデバイスへの書込みクレジットの報告において誤りが生じる可能性があるシナリオで上記の問題を回避するために、ホストデバイスとメディアコントローラとの間の書込みクレジットの効率的な同期の必要性が認識されている。
【課題を解決するための手段】
【０００８】
本発明の例示的な態様は、不揮発性メモリ(NVM)を含むメモリシステムのメディアコントローラとホストデバイスとの間で書込みクレジットを同期させるためのシステムおよび方法を含む。ホストデバイスは、ホストデバイスのメモリコントローラに実装された書込みクレジット(WC)カウンタを維持するように構成されている。WCカウンタは、NVMに発行される可能性のある未解決の書込みコマンドの数を追跡し、制限する。ホストデバイスは、メディアコントローラ内の利用可能な書込みバッファスペースのステータスを取得し、メモリシステムから送信された読取りパケットのメタデータで報告された書込みバッファスペースにおいて検出された任意の誤りに基づいてWCカウンタを調整するよう、メモリシステムに問合せを行い得る。
【０００９】
たとえば、例示的な態様は、メモリシステムにアクセスする方法を対象とし、この方法は、メモリシステム内の書込みバッファの利用可能な書込みバッファスペースを反映するようにホストデバイス内の書込みクレジットカウンタを設定するステップと、ホストデバイスからメモリシステムに書込みコマンドを発行すると、書込みクレジットカウンタを減分するステップと、ホストデバイスにおいて、メモリシステムから書込みバッファ内の追加の利用可能な書込みバッファスペースの指示を受信すると、書込みクレジットカウンタを増分するステップとを含む。
【００１０】
別の例示的な態様は、書込みクレジットカウンタを含むホストデバイスを含む装置を対象とし、ホストデバイスは、書込みバッファを含むメモリシステムに結合される。ホストデバイスは、書込みバッファの利用可能な書込みバッファスペースを反映するように書込みクレジットカウンタを設定し、メモリシステムに書込みコマンドを発行すると、書込みクレジットカウンタを減分し、メモリシステムから書込みバッファ内の追加の利用可能な書込みバッファスペースの指示を受信すると、書込みクレジットカウンタを増分するように構成される。
【００１１】
別の例示的な態様は、プロセッサによって実行されると、メモリシステムにアクセスするための動作をプロセッサに実行させるコードを含む非一時的コンピュータ可読記憶媒体を対象とする。非一時的コンピュータ可読記憶媒体は、メモリシステム内の書込みバッファの利用可能な書込みバッファスペースを反映するようにホストデバイス内の書込みクレジットカウンタを設定するためのコードと、ホストデバイスからメモリシステムに書込みコマンドを発行すると、書込みクレジットカウンタを減分するためのコードと、ホストデバイスにおいて、メモリシステムから書込みバッファ内の追加の利用可能な書込みバッファスペースの指示を受信すると、書込みクレジットカウンタを増分するためのコードとを含む。
【００１２】
また別の例示的な態様は、メモリシステムに結合されたホストデバイスを備える装置を対象とし、ホストデバイスは、書込みクレジットを追跡するための手段を備え、書込みクレジットは、メモリシステム内の書込みバッファの利用可能な書込みバッファスペースを反映する。書込みクレジットを追跡するための手段は、ホストデバイスがメモリシステムに書込みコマンドを発行すると、書込みクレジットを減分するための手段と、ホストデバイスにおいて、メモリシステムから書込みバッファ内の追加の利用可能な書込みバッファスペースの指示を受信すると、書込みクレジットを増分するための手段とを備える。
【００１３】
添付の図面は、本発明の態様の説明を助けるために提示され、態様の限定ではなく、態様の例示のためのみに提供される。
【図面の簡単な説明】
【００１４】
【図１】本開示の態様による処理システムを示す図である。
【図２Ａ】書込みクレジットの戻りの例示的な態様に従って、メモリシステムからホストに報告される書込みバッファスペースに関する情報を含むためのメタデータフォーマットを示す図である。
【図２Ｂ】書込みクレジットの戻りの例示的な態様に従って、メモリシステムからホストに報告される書込みバッファスペースに関する情報を含むためのメタデータフォーマットを示す図である。
【図２Ｃ】書込みクレジットの戻りの例示的な態様に従って、メモリシステムからホストに報告される書込みバッファスペースに関する情報を含むためのメタデータフォーマットを示す図である。
【図３Ａ】本開示による、書込みクレジット報告の例を示す図である。
【図３Ｂ】本開示による、書込みクレジット報告の例を示す図である。
【図４】本開示の態様による、XWRITEおよびPWRITEの書込みクレジット報告を分離する態様を示す図である。
【図５】本開示の態様が有利に使用される場合がある例示的なコンピューティングデバイスを示す図である。
【図６】本開示の態様による、ホストデバイスの書込みクレジットとメモリシステムの利用可能な書込みバッファスペースとを同期させる例示的な方法を示す図である。
【発明を実施するための形態】
【００１５】
本発明の態様は、本発明の特定の態様を対象とする以下の説明および関連する図面において開示される。本発明の範囲から逸脱することなく、代替の態様が考案され得る。加えて、本発明の関連する詳細を不明瞭にしないように、本発明のよく知られている要素は、詳細に説明されないか、または省略される。
【００１６】
「例示的」という語は、本明細書において「一例、事例、または例示としての働きをすること」を意味するために使用される。「例示的」として本明細書で説明するいかなる態様も、必ずしも他の態様よりも好適または有利なものと解釈すべきではない。同様に、「本発明の態様」という用語は、本発明のすべての態様が、説明する特徴、利点または動作モードを含むことを必要としない。
【００１７】
本明細書で使用する用語は、特定の態様のみについて説明するためのものであり、本発明の態様を限定するものではない。本明細書で使用する単数形「a」、「an」および「the」は、文脈が別段に明確に示さない限り、複数形も含むものとする。「備える(comprises)」、「備える(comprising)」、「含む(includes)」および/または「含む(including)」という用語は、本明細書で使用するとき、述べられた特徴、整数、ステップ、動作、要素、および/または構成要素の存在を明示するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を排除しないことをさらに理解されたい。
【００１８】
さらに、多くの態様について、たとえば、コンピューティングデバイスの要素によって実行されるべきアクションのシーケンスに関して説明する。本明細書で説明する様々なアクションは、特定の回路(たとえば、特定用途向け集積回路(ASIC))によって、1つもしくは複数のプロセッサによって実行されるプログラム命令によって、または両方の組合せによって実行され得ることが認識されよう。加えて、本明細書で説明するこれらのアクションのシーケンスは、実行時に、関連するプロセッサに本明細書で説明する機能を実行させることになる、コンピュータ命令の対応するセットを記憶した、任意の形態のコンピュータ可読記憶媒体内で完全に具現化されるものと見なされ得る。したがって、本発明の様々な態様は、いくつかの異なる形態で具現化されてもよく、それらのすべてが、請求する主題の範囲内に入ることが企図されている。加えて、本明細書で説明する態様の各々について、任意のそのような態様の対応する形態が、たとえば、説明するアクションを実行する「ように構成された論理」として本明細書において説明される場合がある。
【００１９】
本開示の例示的な態様は、ホストデバイスと不揮発性メモリ(NVM)を備えるメモリシステムのメディアコントローラとの間で書込みクレジットを同期させるための効率的なシステムおよび方法を対象とする。ホストデバイスは、NVMに発行される可能性のある未解決の書込みコマンドの数を追跡し、制限する、たとえばホストデバイスのメモリコントローラに実装される書込みクレジット(WC)カウンタを維持するように構成される。ホストデバイスは、メディアコントローラ内の利用可能な書込みバッファスペースのステータスを取得し、検出された任意の誤りに基づいてWCカウンタを調整するよう、メモリシステムに問合せを行い得る。
【００２０】
NVMは、たとえば、本開示の範囲から逸脱することなく、任意の技術に従って構成され得るNVDIMM-Pを含むことができる。本開示の例示的な態様の説明のために、NVDIMM-P(またはDDR4 NVDIMM-P)のダブルデータレート4(DDR4)実装、およびNVDIMM-P(またはDDR5 NVDIMM-P)のダブルデータレート5(DDR5)実装について説明する。
【００２１】
次に図1を参照すると、ホストとラベル付けされたホストデバイス120およびメモリシステム130を備える例示的な処理システム100が示されている。ホスト120は、明示的に示されていないが、中央処理ユニット(CPU)、デジタル信号プロセッサ(DSP)、マルチメディアプロセッサ、システムプロセッサ、グラフィックス処理ユニット(GPU)、変調器-復調器(モデム)、アプリケーションプロセッサなどの1つまたは複数の処理要素を備えることができる。これらの処理要素は、メモリシステム130にアクセスするための要求を行うことがある。ホスト120のメモリコントローラ122は、これらのアクセス要求を制御するように構成され得る。例示的な態様では、メモリコントローラ122は、書込みクレジット(WC)カウンタ124を維持し得るが、本開示によるWCカウンタは、ホスト120内で他の任意の方法で構成されてもよい。
【００２２】
メモリシステム130は、例示的な態様では、NVDIMMまたはNVDIMM-P(たとえば、DDR4またはDDR5)として構成された不揮発性メモリ(NVM)136を備えてもよい。NVM136は、1つまたは複数のメモリバンクを備えてもよく、これらは特に図示されていない。NVM136への読取りや書込みなどのアクセスは、メディアコントローラ132によって制御され得る。書込み動作では、例示的な図または様々な他の態様に示されるように、書込みバッファ134は、メディアコントローラ132に提供されてもよく、適切な書込みバッファは、本開示の範囲から逸脱することなく任意の他の方法で適切に提供されてもよい。NVM136に書き込まれるようにホスト120から受信された書込み動作のための書込みデータは、書込みデータがNVM136に転送される前に、書込みバッファ134に一時的に記憶されてもよい。転送の完了を報告するために応答が必要とされる場合(たとえば、永続的な書込みの場合)、書込み完了の報告が成功すると、書込み動作は後退されたと見なされるか、そうでなければ、書込みデータが書込みバッファ134からNVM136に転送されると、書込み動作は後退されたと見なされ得る。NVM136は、永続的なメモリ書込み(PWRITE)および付随するパリティ情報、たとえば、XWRITEと呼ばれる論理排他的OR(XOR)を伴う書込み動作をサポートし得る。
【００２３】
ホスト120とメモリシステム130との間の配線110が示されており、データバス(DQ)112、コマンドおよびアドレスバス(CA)114などの標準インターフェースが示されている。ホスト120は、CA114を介してメモリアクセス要求のためのコマンド(PWRITEおよびXWRITEなどの書込み要求を含む)および関連するアドレスを提供し、(二方向バスとして示されている)DQ112を介してデータを送信/受信することが可能であり得る。応答とラベル付けされたバス116は、別々に示されているが、CA114の一部として構成されてもよく、場合によっては双方向バスとして実装されてもよい。応答116は、たとえば、以下のセクションでさらに詳細に説明されるように、書込みバッファ134内の利用可能なスペースに関する情報をホスト120に提供するために使用され得る。様々な他のバス/ワイヤは別々に識別されていないが、これらも配線110内に存在することがある。
【００２４】
例示的な態様では、WCカウンタ124は、書込みバッファ134内の利用可能な書込みバッファスペースに基づいて未解決のXWRITEまたはPWRITEコマンドの数を制限する目的で、メモリシステム130に発行された未解決のXWRITEまたはPWRITEコマンドの数を追跡するように構成される。一態様では、WCカウンタ124は、既知の値に初期化されるか、またはゼロなどの基本値にリセットされてもよい(たとえば、アプリケーションの開始時または定期的に)。初期化時に、ホスト120は、メモリシステム130に問合せを行って、利用可能な書込みバッファスペースを決定し、この情報を使用してWCカウンタ124をプリセットして、利用可能な書込みバッファスペースを反映し(たとえば、書込みバッファ134内で利用可能なライン(またはブロック)の数は、WCカウンタ124を比例数にプリセットすることによって追跡され得る比例数に変換され得る)、利用可能な書込みバッファ空間が変化すると、それに応じてWCカウンタ124のカウントを増減するように構成され得、使用可能な書込みバッファスペースの変化は次のように追跡され得る。
【００２５】
ホスト120は、READ_STATUSコマンド(たとえば、CA114上で送信され得る)などのコマンドを使用して、利用可能な書込みバッファスペースを読み取るように構成され得る。READ_STATUSコマンドは、当技術分野で知られているXREADコマンドとして符号化され得、1つの例示的な実装形態では、読取りID(RID)が16進数表記ですべて1または0xFFに設定される。メモリシステム130は、たとえば、メディアコントローラ132を介して、利用可能な書込みバッファスペースに関する情報を含むステータスパケットがホスト120に配信される準備ができると、応答RD_RDYを(たとえば、応答116上で)提供し得る。次いで、ホスト120は、SENDコマンドをメモリシステム130に発行し、RIDが0xFFに設定された状態でメモリシステム130からDQ112上で受信された任意の後続のデータパケットは、特定の実装形態では、ホスト120、たとえばメモリコントローラ122によってメッセージパケットとして扱われ得る。そのように受信されたメッセージパケットは、利用可能な書込みバッファスペースに関する情報を含み得る。
【００２６】
上述の方法で利用可能な書込みバッファスペースを取得すると、ホスト120、または具体的には、メモリコントローラ122は、WCカウンタ124を対応する値で設定またはプリセットするように構成され得る。その後、各XWRITEまたはPWRITEコマンドがメモリシステム130に発行されると、メモリコントローラ122は、対応して(たとえば「1」だけ)WCカウンタ124を減分するように構成され得る。WCカウンタ124が「0」の値に達すると、メモリコントローラ122は、任意のさらなるXWRITEまたはPWRITEコマンドがCA114上でホスト120からメモリシステム130に発行されるのを停止または防止するように構成され得る。
【００２７】
例示的な態様では、メモリシステム130は、1つもしくは複数の読取りデータパケット、または場合によっては、上記のSENDコマンドに応答してメモリシステム130からホスト120に戻される各読取りデータパケットに含まれるメタデータの一部として、ホストに増分書込みクレジットフィードバックを提供するように構成され得る。増分書込みクレジット報告は、特定の実装形態に基づいて異なる場合がある。たとえば、NVM136のDDR4 NVDIMM-P実装の特定の構成に応じて、このフィードバックは、1ビットのプログラム可能なWC戻り値(PWC)または書込みクレジットの3ビット符号化(たとえば、WC[2:0]によって表される)であり得る。フィードバックで戻される書込みクレジット(たとえば、WC[2:0]で表される)は、読取りメタデータとも呼ばれ、ホスト120がその利用可能な書込みクレジットカウントに追加できる書込みクレジットの数を表し得る(たとえば、対応する量だけWCカウンタ124を増分させる)。
【００２８】
いくつかの態様では、WC[2:0]などのマルチビットプログラム可能書込みクレジット値は、特定の数の書込みクレジットの符号化(たとえば、バイナリ表現)であってもよい。代替態様では、たとえば、図2Cに示すように、WC[2:0]の値は、応答に関連付けられた事前プログラムされた数のクレジットに対応する場合がある。たとえば、図2Cにおいてビット[WC2, WC1, WC0]として識別されるWC[2:0]のビット値の異なる符号化または組合せは、0-64の範囲で代表的に示される、異なる数の書込みクレジットを表し得る。これらの事前プログラムされた値は、いくつかの実装形態では、WC[2:0]のビットをテーブルへのインデックスとして使用するテーブルによって取得され得る。
【００２９】
1ビットのプログラム可能なWC戻り値(PWC)が使用されるときに戻される書込みクレジットは、ホスト120の書込みクレジットカウントに追加される事前プログラムされた数のクレジットを表し得る(たとえば、対応する量だけWCカウンタ124を増分する)。モードレジスタのビット設定、たとえば、設定されるモードレジスタの適切な位置のビットを使用して、DDR4 NVDIMM-P実装の2つの可能な構成のうちの1つを選択し得る。NVM136のDDR5 NVDIMM-P実装では、書込みクレジットのための3ビット符号化(たとえば、WC[2:0])が使用され得る。
【００３０】
ホスト120は、メモリシステム130によって戻されたPWCまたはWC[2:0]符号化(上記のDDR4またはDDR5実装に依存する)で符号化された書込みクレジットの数だけWCカウンタ124を増分し得る。メディアコントローラ132上で利用可能な総書込みバッファスペースは、異なる実装形態では64以上とすることができる。書込みクレジットは、メディアコントローラ132がNVM136に後退され、したがって上述のように書込みバッファ134内のより多くのバッファスペースを解放した書込みの数を表し得る。
【００３１】
例示的な態様では、ホスト120はまた、READ_STATUSコマンドを発行し、それに応じてそのWCカウンタ124を更新することによって、いつでも、書込みバッファ134で利用可能な総書込みバッファスペースを要求し得る。一例として、ホスト120は、発行可能なSENDコマンドがなく、そのWCカウンタ124が「0」の値であるとき、READ_STATUSコマンドを送信して、さらなる書込みの発行を防止し得る。
【００３２】
別の例では、ホスト120は、ホスト120が読取りデータパケット上で訂正不可能な誤り(UE)を検出すると、書込みバッファ134内の利用可能な書込みバッファスペースに基づいて、そのWCカウンタ124を更新するために、READ_STATUSコマンドを発行し得る。たとえば、メモリコントローラ122は、メモリシステム130から受信されたパケットにおいて誤り検査を実行し、誤りがあったことを発見し得、このことは、読取りデータパケットに含まれるPWCまたはWC[2:0]フィールド(上記のDDR4またはDDR5実装に依存する)を無効にすることになる。
【００３３】
いくつかの態様では、メモリシステム130は、メディアコントローラ132がREAD_STATUSコマンドを受信するときに基づいて、書込みバッファスペースの合計値を提供してもよい。ホスト120に戻された書込みクレジットまたは書込みバッファスペースを含む任意の後続のメッセージでは、メディアコントローラ132は、受信されたREAD_STATUSコマンドに応答してホスト120に送信された総書込みバッファスペースの最後の値を考慮してもよい。したがって、メモリシステム130は、以下のセクションで説明するように、書込み動作が完了するかまたは後退されると解放される追加の書込みバッファスペースに基づいて適切な書込みクレジットを戻し得る。
【００３４】
例示的な例では、書込みバッファ134内の書込みバッファスペースは、128(たとえば、128ラインまたはブロック)であり得る。たとえば、ホスト120が10の書込みを発行し、これらの書込みのうち3つが、メディアコントローラ132がホスト120からREAD_STATUSコマンドを受信する前に、NVM136に対して完了したか、または後退された場合、メディアコントローラ132は、応答して、128-10+3=121の合計書込みバッファスペース利用可能値をホスト120に戻し得る。
【００３５】
いくつかの態様では、メモリシステム130はまた、たとえば、READ_STATUSコマンドを受信した後、ステータスメッセージがDQ112上で送り返される前に、NVM136への対応する追加の介在する書込みが完了し得る場合、報告された総書込みバッファスペースの一部として追加のクレジットを戻し得る。
【００３６】
例示的な例では、前に示したように、書込みバッファ134内の書込みバッファスペースは128であり得る。たとえば、ホスト120が10の書込みを発行し、これらの書込みのうち3つが、メディアコントローラ132がホスト120からREAD_STATUSコマンドを受信する前に、NVM136に対して完了したか、または後退され、READ_STATUSパケットが受信された後、しかし、書込みクレジット値を含むステータスパケットがホスト120に送信される前に、さらに2つの書込みがNVM136に対して完了した場合、メディアコントローラ132は、応答して、128-10+3+2=123の合計書込みバッファスペース利用可能値をホスト120に戻し得る。
【００３７】
1つの可能なシナリオでは、メディアコントローラ132は、READ_STATUSが受信された後書込み要求を受信し、ステータスが報告される前に書込み要求を完了し得る。このシナリオでは、メディアコントローラ132は、総書込みバッファスペースを報告するときに、完了した書込み要求に対応する書込みバッファ134におけるこの追加の空きスペースを考慮せず、報告される後続の書込みクレジットの戻りで対応する書込みクレジットを報告するように構成され得る。
【００３８】
ホスト120の観点から、戻された総書込みバッファスペースは、READ_STATUSコマンドを発行した後ホスト120によって発行された書込みコマンドでは考慮されない。ホスト120は、メディアコントローラ132から総書込みバッファスペースを受信する前にそれらの書込みコマンドが発行されたとしても、戻り値からREAD_STATUSコマンドに続いて発行された書込みコマンドの数を減算するように構成される。ホスト120は、WCカウンタ124の書込みクレジットカウントを調整し続け、総書込みバッファスペースを受信した後増分書込みクレジットの戻りが受信される。
【００３９】
例示的な態様において、PWCおよびWC[2:0]ビットは、メモリシステム130からホスト120に情報を戻すための他のプロトコルに従って定義されたメタデータビットに対しても「1」に設定されたポイズンビットを有する読取り戻りデータについて有効であり得る。ポイズンデータは、ホスト120がメモリシステム130(または具体的には、メディアコントローラ132)に不良もしくは「毒入り」データを書き込んだか、またはホスト120が破損した読取りデータを検出し、破損した読取りデータを、「毒入り」ビットによって示されるように、不良もしくは使用不可として戻したことを示す指示である。たとえば、正確な数の書込みクレジット(最大64の書込みクレジット)を報告するために6ビットを使用して、DQ112上で送信されるステータスパケットで使用され得る例示的なメタデータパケットは、図2Cに示されるフォーマットに従い得る。
【００４０】
図2Aは、DDR4規格によるデータビートを示し、たとえば、ポイズンビットが1に設定されていることを示し、WC[2:0]ビットが、ホスト120からのREAD_STATUSコマンドに応答して、DQ112上で送信される応答パケットで報告される書込みクレジットの数を示す。NVM136のDDR4 NVDIMM-P実装は、読取りメタデータパケット内の書込みクレジットビットおよびユーザ定義ビットの数を選択するための2つの構成可能なオプションを可能にし得る。メタデータパケットのモードレジスタMRxビットyが「0」に設定される場合、3つの書込みクレジットビットおよび4つのUSERビットは、図2Aに示されるように利用可能であり得る。
【００４１】
図2Bは、モードレジスタMRxビットyが「1」に設定されている場合に利用可能な単一の書込みクレジットビット(PWC)および6つのUSERビットを示す。
【００４２】
図2Cは、DDR4またはDDR5 NVDIMM-P実装による3つの書込みクレジットビットの例示的な符号化を示す。たとえば、図1のメモリシステム130は、戻されるべきクレジットの実数以下の最適な符号化を戻してもよい。
【００４３】
NVM136のDDR4 NVDIMM-P実装の場合、PWCビットは、プログラム可能な書込みクレジットしきい値を表す。この値は、ホスト120によって、モードレジスタ位置MRxビットn(2:0)において、3つの書込みクレジットビットを有する上述の実装形態と同じ符号化を使用してプログラムされ得る。メモリシステム130は、ホスト120からREAD_STATUSを受信して総書込みバッファスペースを取得するまで、その報告においてPWC値の使用を開始しない場合がある。READ_STATUSを使用して取得された書込みクレジットは、ステータス読取りに基づくクレジットとも呼ばれる。3ビットPWCフィールドもREAD_STATUSパケットで戻される場合があり、前述のように、これらの書込みクレジットは、読取りメタデータから取得されたクレジットと呼ばれる。増分書込みクレジット値の変更は、総書込みバッファスペースが戻された後有効になる場合がある。
【００４４】
例示的な態様では、PWC=0の場合、クレジットはホスト120に戻されない。PWC=1の場合、プログラムされた値に基づいた書込みクレジットがホスト120に戻され得る。
【００４５】
図3A-図3Bは、書込みクレジットをホスト120に報告するために読取りパケットメタデータで使用される3つの書込みクレジットビットおよび1つの書込みクレジットビットを含む数値例を示す。図3A-図3Bにおいて、「返却可能」として示される列は、たとえば、メディアコントローラ132のステータスを表し得る。
【００４６】
図3Aに示されるように、3つの書込みクレジットビットが使用されるとき、1、2、4、8、16、32、および64クレジットが、3ビットの様々なバイナリ符号化を使用して報告され得る。示されるように、ホスト120は、READ_STATUSへの応答を通して提供される書込みクレジット(または、ステータス読取りに基づくクレジット)、ならびにPWCビットなどの読取りメタデータから取得される書込みクレジットを利用し得る。いくつかの実装形態では、ステータス読取りおよび読取りメタデータは、メモリシステム130からホスト120に同時に戻されることを制限され得る。したがって、ステータス読取りまたは読取りメタデータのいずれかを介して書込みクレジットが戻されるときのホスト120の書込みクレジットカウントが図3Aの例に示されている。
【００４７】
図3Bでは、書込みクレジットに1ビットのみを使用すると、各読取りパケットのメタデータ内のプリセットされたしきい値に基づいて、単一の値(たとえば、この例では4)のみが戻され得る。また、図3Bは、ホスト120が、(上述のように、いくつかの実装形態では同時に戻されない場合もあるが)ステータス読取りならびに読取りメタデータから書込みクレジットを利用し得ることも示している。より具体的には、図3Bは、ステータス読取りまたは読取りメタデータのいずれかから戻された書込みクレジットに基づくホスト120の書込みクレジットカウントも示している。前記のように、「返却可能」は、メディアコントローラ132が戻す準備ができている可能性のある書込みクレジットを示し得るが、返却可能とホスト120に戻される読取りメタデータ値との間の潜在的な変動は、ホスト120によって検出できない場合があり、これは、メディアコントローラ132が追加の書込みクレジットを処理していない可能性がある競合状態が存在する可能性があるからである。
【００４８】
次に図4を参照すると、PWRITEおよびXWRITEの書込みバッファスペースを報告するために別個の書込みクレジットを使用する態様が示されている。この方法で書込みクレジットを分離すると、XWRITEクレジットがメモリシステム130からホスト120に戻され得る速度が向上し得る。分離はまた、メディアコントローラ132が総書込みバッファスペースのサブセットにエネルギーバッキングを提供することを可能にし得る。読取りパケット内の書込みクレジットを報告するためのメタデータをポイズンビットと組み合わせて、余分なクレジットの戻りを報告するための追加の符号化オプションを取得し得る。
【００４９】
XWRITEおよびPWRITEクレジット報告が分離され得る態様では、共通のPWCしきい値がXWRITEおよびPWRITEクレジット報告に使用され得、ユーザの好みに基づいて別個の対応するしきい値を使用するオプションがあり得る。それぞれのXWRITEおよびPWRITEのクレジット報告に、個別の3ビットフィールドが使用され得る。ステータスパケットで戻される総書込みバッファスペースは、XWRITEクレジットおよびPWRITEクレジットのための個別のフィールドを有し、XWRITEおよびPWRITEの固定割振りとなり得る。ホスト120は、PWRITEスペースの一部をXWRITEに割り振るように構成され得る。ホスト120はまた、PWRITEクレジットとXWRITEクレジットとの間にスペースを割り振るために、メディアコントローラ132内のレジスタ(図示せず)をプログラムし得る。
【００５０】
次に、本開示の態様が利用され得る例示的な装置について、図5に関して説明する。図5は、コンピューティングデバイス500のブロック図を示す。コンピューティングデバイス500は、図1の処理システム100の例示的な実装形態に対応することができ、ここにおいて、プロセッサ120'は、ホスト120の処理要素のうちの1つであり得る。プロセッサ120'は、配線110を通じてメモリシステム130に結合されることが例示的に示されており、明快にするために、配線110のさらなる詳細はこの図から省略されている。図示されていないが、1つまたは複数のレベルのキャッシュを関与させるなどの、当技術分野で知られている他のメモリ構成がコンピューティングデバイス500内に存在し得ることが理解されよう。
【００５１】
図5は、プロセッサ120'とディスプレイ528とに結合されたディスプレイコントローラ526も示す。場合によっては、コンピューティングデバイス500はワイヤレス通信に使用されてもよく、図5は、プロセッサ120'に結合されたコーダ/デコーダ(コーデック)534(たとえば、オーディオおよび/またはボイスコーデック)、コーデック534に結合されたスピーカ536およびマイクロフォン538、プロセッサ120'に結合されたワイヤレスコントローラ540に結合されたワイヤレスアンテナ542などの任意選択のブロックも破線で示している。これらの任意選択のブロックのうちの1つまたは複数が存在する場合、特定の態様では、プロセッサ120'、ディスプレイコントローラ526、メモリシステム130、およびワイヤレスコントローラ540は、システムインパッケージまたはシステムオンチップデバイス522に含まれる。
【００５２】
したがって、特定の態様では、入力デバイス530および電源544は、システムオンチップデバイス522に結合される。さらに、特定の態様では、図5に示すように、1つまたは複数の任意選択のブロックが存在する場合、ディスプレイ528、入力デバイス530、スピーカ536、マイクロフォン538、ワイヤレスアンテナ542、および電源544は、システムオンチップデバイス522の外部にある。しかしながら、ディスプレイ528、入力デバイス530、スピーカ536、マイクロフォン538、ワイヤレスアンテナ542、および電源544の各々は、インターフェースまたはコントローラなどの、システムオンチップデバイス522の構成要素に結合され得る。
【００５３】
図5はコンピューティングデバイスを概略的に示しているが、プロセッサ120'およびメモリシステム130は、セットトップボックス、サーバ、音楽プレーヤ、ビデオプレーヤ、エンターテイメントユニット、ナビゲーションデバイス、携帯情報端末(PDA)、固定ロケーションデータユニット、コンピュータ、ラップトップ、タブレット、通信デバイス、モバイルフォン、または他の同様のデバイスに統合される場合もあることに留意されたい。
【００５４】
例示的な態様は、本明細書に開示されたプロセス、機能、および/またはアルゴリズムを実行するための様々な方法を含むことが諒解されよう。たとえば、図6は、メモリシステムにアクセスする方法600を示す。たとえば、方法600は、ホスト120の書込みクレジットと、メモリシステム130の書込みバッファ134内の利用可能な書込みバッファスペースとを同期させることを対象とし得る。
【００５５】
ブロック602は、メモリシステム内の書込みバッファの利用可能な書込みバッファスペースを反映するようにホストデバイス内の書込みクレジットカウンタを設定することを含む。たとえば、ホスト120のWCカウンタ124は、方法600など、前のプロセスからの書込みバッファ134内の利用可能な書込みバッファスペースの決定に基づいて初期化または設定され得る。
【００５６】
ブロック604は、メモリシステムに書込みコマンドを発行すると、書込みクレジットカウンタを減分することを含む。たとえば、ホスト120によって各PWRITEまたはXWRITEを発行すると、それに応じてWCカウンタ124が減分され得る。
【００５７】
ブロック606は、メモリシステムから書込みバッファ内の追加の利用可能な書込みバッファスペースの指示を受信すると、書込みクレジットカウンタを増分することを含む。たとえば、ホスト120が読取りステータス(READ_STATUS)コマンドに応答して、利用可能な書込みバッファスペースを有する1つまたは複数の読取りパケットを受信したとき、対応するWCカウンタ124の値よりも利用可能な書込みバッファスペースがさらにある場合、WCカウンタ124は対応して増分される。
【００５８】
当業者は、情報および信号が、様々な異なる技術および技法のうちのいずれかを使用して表され得ることを諒解されよう。たとえば、上記の説明全体にわたって言及される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表現される場合がある。
【００５９】
さらに、本明細書で開示する態様に関連して説明した種々の例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実装されてもよいことを当業者は理解されよう。ハードウェアおよびソフトウェアのこの互換性を明確に示すために、種々の例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能に関して説明してきた。そのような機能が、ハードウェアとして実装されるか、またはソフトウェアとして実施されるのかは、特定の適用例と、システム全体に課される設計制約とによって決まる。当業者は、説明した機能を様々な方法で特定の適用例ごとに実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００６０】
本明細書において開示される態様に関して説明される方法、シーケンスおよび/またはアルゴリズムは、直接ハードウェアにおいて具現化される場合があるか、プロセッサによって実行されるソフトウェアモジュールにおいて具現化される場合があるか、またはその2つの組合せにおいて具現化される場合がある。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体内に存在してもよい。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、かつ記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体は、プロセッサと一体であってもよい。
【００６１】
したがって、本発明の一態様は、NVMを含むメモリシステムからホストに書込みクレジットを報告する方法を具現化するコンピュータ可読媒体を含むことができる。したがって、本発明は図示の例に限定されず、本明細書で説明する機能を実行するためのいかなる手段も本発明の態様に含まれる。
【００６２】
上記の本開示は本発明の例示的な態様を示すが、添付の特許請求の範囲によって規定されるような本発明の範囲から逸脱することなく、本明細書において様々な変更および修正が行われ得ることに留意されたい。本明細書で説明する本発明の態様による方法クレームの機能、ステップおよび/またはアクションは、任意の特定の順序で実行される必要はない。さらに、本発明の要素は、単数形で説明または特許請求される場合があるが、単数形への限定が明示的に述べられていない限り、複数形が企図される。
【符号の説明】
【００６３】
100  処理システム
110  配線
112  データバス(DQ)
114  コマンドおよびアドレスバス(CA)
116  応答
120  ホスト
120'  プロセッサ
122  メモリコントローラ
124  書込みクレジット(WC)カウンタ
130  メモリシステム
132  メディアコントローラ
134  書込みバッファ
136  不揮発性メモリ(NVM)
500  コンピューティングデバイス
522  システムオンチップデバイス
526  ディスプレイコントローラ
528  ディスプレイ
530  入力デバイス
534  コーデック
536  スピーカ
538  マイクロフォン
540  ワイヤレスコントローラ
542  ワイヤレスアンテナ
544  電源
【図１】
2021503642.tif 000003
【図２Ａ】
2021503642.tif 000004
【図２Ｂ】
2021503642.tif 000005
【図２Ｃ】
2021503642.tif 000006
【図３Ａ】
2021503642.tif 000007
【図３Ｂ】
2021503642.tif 000008
【図４】
2021503642.tif 000009
【図５】
2021503642.tif 000010
【図６】
2021503642.tif 000011
【国際調査報告】
2021503642.tif 000012
2021503642.tif 000013