(57)【要約】  永続動作のためのシステムおよび方法は、ホストおよびメモリシステムを含む。メモリシステムは、ホストからPersistent Writeコマンドおよび関連する書込みデータを受信すると、Persistent Writeコマンドに基づいて、メモリシステム内の不揮発性メモリへの書込みデータのPersistent Writeを実行する。メモリシステムはまた、ホストからPersistent Writeコマンドに関連付けられた書込み識別情報(WID)を受信し、Persistent Writeの完了が成功すると、Persistent Write完了指示を関連するWIDとともにホストに提供し得る。
2020534598.tif 000002
【特許請求の範囲】
【請求項１】
永続動作を実行する方法であって、
メモリシステムにおいて、ホストからPersistent Writeコマンドおよび関連する書込みデータを受信するステップと、
前記Persistent Writeコマンドに基づいて、前記メモリシステム内の不揮発性メモリへの前記書込みデータのPersistent Writeを実行するステップと
を含む方法。
【請求項２】
前記ホストから前記Persistent Writeコマンドに関連付けられた書込み識別情報(WID)を受信するステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記Persistent Writeの完了が成功すると、前記メモリシステムから、Persistent Write完了指示を前記関連するWIDとともに前記ホストに提供するステップをさらに含む、請求項2に記載の方法。
【請求項４】
2つ以上のPersistent Write完了指示を、対応する2つ以上のPersistent Writeコマンドが前記ホストから受信された順序とは異なる順序で前記ホストに提供するステップを含む、請求項3に記載の方法。
【請求項５】
前記ホストから1つまたは複数のPersistent Writeのための送信要求ステータスを関連するWIDとともに受信するステップをさらに含む、請求項3に記載の方法。
【請求項６】
ステータスパケットを前記ホストに提供するステップをさらに含み、
前記ステータスパケットが、実行が完了したPersistent WriteコマンドのためのWIDを含む、請求項5に記載の方法。
【請求項７】
前記WIDが、Persistent Writeおよび有効ビットのマルチビット識別情報を含む、請求項2に記載の方法。
【請求項８】
共通のWIDを有する2つ以上のPersistent Writeコマンドのグループを受信するステップであって、
前記グループの最後のPersistent WriteコマンドがPersistビットを1に設定し、
残りのPersistent WriteコマンドがそれぞれのPersistビットを0に設定する、ステップと、
前記最後のPersistent WriteコマンドのためのPersistent Write完了指示を提供するステップと
をさらに含む、請求項2に記載の方法。
【請求項９】
前記ホストからFLUSHコマンドを受信するステップをさらに含み、
前記FLUSHコマンドが、揮発性媒体にバッファされたすべての以前の書込みが不揮発性または永続メモリにプッシュされるべきであることを示す、請求項1に記載の方法。
【請求項１０】
前記FLUSHコマンドの実行の完了時にFLUSH完了指示を前記ホストに提供するステップをさらに含む、請求項9に記載の方法。
【請求項１１】
1つまたは複数のPersistent Writeコマンドを受信するステップと、
完了した前記1つまたは複数のPersistent Writeコマンドのステータスを完了ビットマップにおいて維持し、保留中の前記1つまたは複数のPersistent Writeコマンドのステータスを保留中ビットマップにおいて維持するステップと、
前記ホストからのステータスの要求時に、訂正不可能なエラーがない場合は前記完了ビットマップを提供するか、または訂正不可能なエラーがある場合は前記保留中ビットマップを提供するステップと
をさらに含む、請求項1に記載の方法。
【請求項１２】
前記メモリシステムが、Persistent Write(NVDIMM-P)をサポートするように構成された不揮発性デュアルインラインメモリモジュールである、請求項1に記載の方法。
【請求項１３】
永続動作を実行する方法であって、
ホストからメモリシステムにPersistent Writeコマンドおよび関連する書込みデータを提供するステップを含み、
前記Persistent Writeコマンドが、不揮発性メモリへの前記書込みデータのPersistent Writeを実行することを前記メモリシステムに示す、
方法。
【請求項１４】
前記ホストから前記メモリシステムに前記Persistent Writeコマンドに関連付けられた書込み識別情報(WID)を提供するステップをさらに含む、請求項13に記載の方法。
【請求項１５】
前記ホストにおいて、前記Persistent Writeの完了が成功すると、前記メモリシステムからPersistent Write完了指示を前記関連するWIDとともに受信するステップをさらに含む、請求項14に記載の方法。
【請求項１６】
前記メモリシステムから、2つ以上のPersistent Write完了指示を、対応する2つ以上のPersistent Writeコマンドが前記ホストから前記メモリシステムに送られた順序とは異なる順序で受信するステップを含む、請求項15に記載の方法。
【請求項１７】
前記ホストから前記メモリシステムに、1つまたは複数のPersistent Writeのための送信要求ステータスを関連するWIDとともに送るステップをさらに含む、請求項14に記載の方法。
【請求項１８】
前記メモリシステムから前記ホストによってステータスパケットを受信するステップをさらに含み、
前記ステータスパケットが、実行が完了したPersistent WriteコマンドのためのWIDを含む、請求項17に記載の方法。
【請求項１９】
前記WIDが、Persistent Writeおよび有効ビットのマルチビット識別情報を含む、請求項14に記載の方法。
【請求項２０】
前記ホストから前記メモリシステムに、共通のWIDを有する2つ以上のPersistent Writeコマンドのグループを送るステップであって、
前記グループの最後のPersistent WriteコマンドがPersistビットを1に設定し、
残りのPersistent WriteコマンドがそれぞれのPersistビットを0に設定する、ステップと、
前記メモリシステムから前記最後のPersistent WriteコマンドのためのPersistent Write完了指示を受信するステップと
をさらに含む、請求項14に記載の方法。
【請求項２１】
前記ホストから前記メモリシステムにFLUSHコマンドを送るステップをさらに含み、
前記FLUSHコマンドが、揮発性媒体にバッファされたすべての以前の書込みが前記メモリシステムによって不揮発性または永続メモリにプッシュされるべきであることを示す、請求項13に記載の方法。
【請求項２２】
前記ホストにおいて、前記メモリシステムによる前記FLUSHコマンドの実行の完了時にFLUSH完了指示を受信するステップをさらに含む、請求項21に記載の方法。
【請求項２３】
前記メモリシステムが、Persistent Write(NVDIMM-P)をサポートするように構成された不揮発性デュアルインラインメモリモジュールである、請求項13に記載の方法。
【請求項２４】
装置であって、
メモリシステムを備え、前記メモリシステムが、
ホストからPersistent Writeコマンドおよび関連する書込みデータを受信し、
前記Persistent Writeコマンドに基づいて、前記メモリシステム内の不揮発性メモリへの前記書込みデータのPersistent Writeを実行する
ように構成される、装置。
【請求項２５】
前記メモリシステムが、前記ホストから前記Persistent Writeコマンドに関連付けられた書込み識別情報(WID)を受信するようにさらに構成される、請求項24に記載の装置。
【請求項２６】
前記メモリシステムが、前記Persistent Writeの完了が成功すると、Persistent Write完了指示を前記関連するWIDとともに前記ホストに提供するようにさらに構成される、請求項25に記載の装置。
【請求項２７】
前記メモリシステムが、2つ以上のPersistent Write完了指示を、対応する2つ以上のPersistent Writeコマンドが前記ホストから受信された順序とは異なる順序で前記ホストに提供するようにさらに構成される、請求項26に記載の装置。
【請求項２８】
前記メモリシステムが、前記ホストから1つまたは複数のPersistent Writeのための送信要求ステータスを関連するWIDとともに受信するようにさらに構成される、請求項26に記載の装置。
【請求項２９】
前記メモリシステムが、ステータスパケットを前記ホストに提供するようにさらに構成され、
前記ステータスパケットが、実行が完了したPersistent WriteコマンドのためのWIDを含む、請求項27に記載の装置。
【請求項３０】
前記WIDが、Persistent Writeおよび有効ビットのマルチビット識別情報を含む、請求項25に記載の装置。
【請求項３１】
前記メモリシステムが、
共通のWIDを有する2つ以上のPersistent Writeコマンドのグループを受信することであって、
前記グループの最後のPersistent WriteコマンドがPersistビットを1に設定し、
残りのPersistent WriteコマンドがそれぞれのPersistビットを0に設定する、受信することと、
前記最後のPersistent WriteコマンドのためのPersistent Write完了指示を提供することと
を行うようにさらに構成される、請求項25に記載の装置。
【請求項３２】
前記メモリシステムが、前記ホストからFLUSHコマンドを受信するようにさらに構成され、
前記FLUSHコマンドが、揮発性媒体にバッファされたすべての以前の書込みが不揮発性または永続メモリにプッシュされるべきであることを示す、請求項24に記載の装置。
【請求項３３】
前記メモリシステムが、前記FLUSHコマンドの実行の完了時にFLUSH完了指示を前記ホストに提供するようにさらに構成される、請求項32に記載の装置。
【請求項３４】
前記メモリシステムが、
1つまたは複数のPersistent Writeコマンドを受信することと、
完了した前記1つまたは複数のPersistent Writeコマンドのステータスを完了ビットマップにおいて維持し、保留中の前記1つまたは複数のPersistent Writeコマンドのステータスを保留中ビットマップにおいて維持することと、
前記ホストからのステータスの要求時に、訂正不可能なエラーがない場合は前記完了ビットマップを提供するか、または訂正不可能なエラーがある場合は前記保留中ビットマップを提供することと
を行うようにさらに構成される、請求項24に記載の装置。
【請求項３５】
前記メモリシステムが、Persistent Write(NVDIMM-P)をサポートするように構成された不揮発性デュアルインラインメモリモジュールである、請求項24に記載の装置。
【請求項３６】
セットトップボックス、サーバ、音楽プレーヤ、ビデオプレーヤ、エンターテイメントユニット、ナビゲーションデバイス、携帯情報端末(PDA)、固定ロケーションデータユニット、コンピュータ、ラップトップ、タブレット、通信デバイス、およびモバイルフォンからなるグループから選択されるデバイスに統合される、請求項24に記載の装置。
【請求項３７】
装置であって、
Persistent Writeコマンドおよび関連する書込みデータをメモリシステムに提供するように構成されたホストを備え、
前記Persistent Writeコマンドが、不揮発性メモリへの前記書込みデータのPersistent Writeを実行することを前記メモリシステムに示す、
装置。
【請求項３８】
前記ホストが、前記Persistent Writeコマンドに関連付けられた書込み識別情報(WID)を前記メモリシステムに提供するようにさらに構成される、請求項37に記載の装置。
【請求項３９】
前記ホストが、前記Persistent Writeの完了が成功すると、前記メモリシステムからPersistent Write完了指示を前記関連するWIDとともに受信するようにさらに構成される、請求項38に記載の装置。
【請求項４０】
前記ホストが、前記メモリシステムから、2つ以上のPersistent Write完了指示を、対応する2つ以上のPersistent Writeコマンドが前記メモリシステムに送られた順序とは異なる順序で受信するようにさらに構成される、請求項39に記載の装置。
【請求項４１】
前記ホストが、1つまたは複数のPersistent Writeのための送信要求ステータスを関連するWIDとともに前記メモリシステムに送るようにさらに構成される、請求項38に記載の装置。
【請求項４２】
前記ホストが、前記メモリシステムからステータスパケットを受信するようにさらに構成され、
前記ステータスパケットが、実行が完了したPersistent WriteコマンドのためのWIDを含む、請求項41に記載の装置。
【請求項４３】
前記WIDが、Persistent Writeおよび有効ビットのマルチビット識別情報を含む、請求項42に記載の装置。
【請求項４４】
前記ホストが、
共通のWIDを有する2つ以上のPersistent Writeコマンドのグループを前記メモリシステムに送ることであって、
前記グループの最後のPersistent WriteコマンドがPersistビットを1に設定し、
残りのPersistent WriteコマンドがそれぞれのPersistビットを0に設定する、送ることと、
前記メモリシステムから前記最後のPersistent WriteコマンドのためのPersistent Write完了指示を受信することと
を行うようにさらに構成される、請求項38に記載の装置。
【請求項４５】
前記ホストが、FLUSHコマンドを前記メモリシステムに送るようにさらに構成され、
前記FLUSHコマンドが、揮発性媒体にバッファされたすべての以前の書込みが前記メモリシステムによって不揮発性または永続メモリにプッシュされるべきであることを示す、請求項37に記載の装置。
【請求項４６】
前記ホストが、前記メモリシステムによる前記FLUSHコマンドの実行の完了時にFLUSH完了指示を受信するようにさらに構成される、請求項45に記載の装置。
【請求項４７】
前記メモリシステムが、Persistent Write(NVDIMM-P)をサポートするように構成された不揮発性デュアルインラインメモリモジュールである、請求項37に記載の装置。
【請求項４８】
セットトップボックス、サーバ、音楽プレーヤ、ビデオプレーヤ、エンターテイメントユニット、ナビゲーションデバイス、携帯情報端末(PDA)、固定ロケーションデータユニット、コンピュータ、ラップトップ、タブレット、通信デバイス、およびモバイルフォンからなるグループから選択されるデバイスに統合される、請求項37に記載の装置。
【請求項４９】
装置であって、
データを記憶するための手段を備え、前記記憶するための手段が、
ホストからPersistent Writeコマンドおよび関連する書込みデータを受信するための手段と、
前記Persistent Writeコマンドに基づいて、前記記憶するための手段内の不揮発性メモリへの前記書込みデータのPersistent Writeを実行するための手段と
を備える、装置。
【請求項５０】
装置であって、
処理するための手段を備え、前記処理するための手段が、
Persistent Writeコマンドおよび関連する書込みデータをメモリシステムに提供するための手段を備え、
前記Persistent Writeコマンドが、不揮発性メモリへの前記書込みデータのPersistent Writeを実行することを前記メモリシステムに示す、
装置。
【請求項５１】
プロセッサによって実行されると、前記プロセッサに永続動作を実行させるコードを記憶した非一時的コンピュータ可読記憶媒体であって、
メモリシステムにおいて、ホストからPersistent Writeコマンドおよび関連する書込みデータを受信するためのコードと、
前記Persistent Writeコマンドに基づいて、前記メモリシステム内の不揮発性メモリへの前記書込みデータのPersistent Writeを実行するためのコードと
を記憶した、非一時的コンピュータ可読記憶媒体。
【請求項５２】
プロセッサによって実行されると、前記プロセッサに永続動作を実行させるコードを記憶した非一時的コンピュータ可読記憶媒体であって、
ホストからメモリシステムにPersistent Writeコマンドおよび関連する書込みデータを提供するためのコードを記憶し、
前記Persistent Writeコマンドが、不揮発性メモリへの前記書込みデータのPersistent Writeを実行することを前記メモリシステムに示す、
非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
開示する態様は、メモリシステムを対象とする。より詳細には、例示的な態様は、不揮発性メモリのための永続的書込み(Persistent Write)動作およびそのプロトコルを対象とする。
【背景技術】
【０００２】
ストレージクラスメモリ(SCM)は、一般に、高性能も有し得る大容量メモリを指す。SCMは、サーバまたは他の処理システムなどのアプリケーションにおいて使用されることがあり、ここにおいて、プロセッサまたは中央処理ユニットのためのデータの動作セットはSCMに記憶され得るが、完全なデータセットは補助メモリまたはハードディスクドライブ(HDD)に記憶され得る。SCMに対する重要な期待は書込みの永続性であり、これは、たとえば、サーバがクラッシュするかまたは電力を失うとしても、SCMに書き込まれた情報が失われないことを意味する。しかしながら、永続性に関連するそのような期待に応えることができる従来の不揮発性メモリは、SCMに望まれ得る容量および性能のメトリックを満たすことが可能ではないことがある。したがって、相変化メモリ(PCM)、スピン注入トルク磁気ランダムアクセスメモリ(STT MRAM)、抵抗変化RAM(ReRAM)などの技術は、SCMの実装形態においてますます普及している。
【０００３】
SCMを使用するとき、アプリケーションは、対応する永続メモリを更新するためにメモリ書込み動作を使用し得る。SCMへの書込みを永続的なものとするために、書込み動作を要求するアプリケーションは、書込み動作が永続メモリに達したという明示的な確認を期待し得る。対照的に、(ダイナミックランダムアクセスメモリ(DRAM)または他の揮発性メモリなどの)非永続メモリへの書込み動作は、従来、アプリケーションの観点からすると、書込み動作および関連するデータがメモリに転送されると完了したまたはポストされたと見なされ、データが書き込まれたという明示的な確認は必要とされない。したがって、永続性が期待されるSCMを使用するアプリケーションの場合、永続メモリへの書込み動作の明示的な確認を提供する高性能技法が望ましく、ここにおいて、高性能技法はまた、効率を最大化するために、異なるデータサイズと互換性がある。
【０００４】
永続メモリ動作について、2つのタイプの従来の方式がある。第1の方式は、メモリシステム全体(たとえば、当技術分野で知られているような、一連のDRAM集積回路を備えるデュアルインラインメモリモジュール(DIMM))がエネルギー支援されると想定する。この場合、DIMMの受信端上での中間バッファへの書込み動作は、永続性の期待を満たすのに十分であり得る。一実装形態では、書込み動作を要求するアプリケーションとDIMMとの間のチャネルインターフェースにわたる書込み動作が正常に完了すると、書込み動作は永続的であると見なされ得る。しかしながら、そのような方式を実装することは、電源障害が検出されたときにDIMM上の中間バッファをフラッシュするための電力/充電を提供するスーパーキャパシタまたはバッテリーなどのエネルギー貯蔵デバイスの使用を伴う場合がある。ただし、そのようなエネルギー貯蔵デバイスはすべてのDIMM上で利用可能ではない場合があり、さらに、利用可能であったとしても、高いコストがかかる。
【０００５】
第2の方式では、アプリケーションがDIMMからの完了ステータスを待っている間に、すべての以前の書込み動作が永続メモリにフラッシュされることがある。しかしながら、この方式は、かなりの性能コストがかかることがある。たとえば、アプリケーションがDIMMへの細粒度のPersistent Writeを要求していることがあるが、DIMMへの他の同時ではあるが独立した書込み動作ストリーミングがあり得る場合、完了ステータスまで待って、永続メモリへのすべての以前の書込み動作をフラッシュすることは、Persistent Write要求だけでなく、同時書込み動作も遅らせることがある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
したがって、従来の手法の上述の欠点を回避しながら、異なる粒度またはサイズのPersistent Writeをサポートする、高性能かつ高効率のPersistent Write動作が当技術分野において必要とされている。
【課題を解決するための手段】
【０００７】
本発明の例示的な態様は、永続動作のためのシステムおよび方法を含む。メモリシステムは、ホストからPersistent Writeコマンドおよび関連する書込みデータを受信すると、Persistent Writeコマンドに基づいて、メモリシステム内の不揮発性メモリへの書込みデータのPersistent Writeを実行する。メモリシステムはまた、ホストからPersistent Writeコマンドに関連付けられた書込み識別情報(WID)を受信し、Persistent Writeの完了が成功すると、Persistent Write完了指示を関連するWIDとともにホストに提供し得る。
【０００８】
たとえば、例示的な態様は、永続動作を実行する方法であって、メモリシステムにおいて、ホストからPersistent Writeコマンドおよび関連する書込みデータを受信するステップと、Writeコマンドに基づいて、メモリシステム内の不揮発性メモリへの書込みデータのPersistent Writeを実行するステップとを含む方法を対象とする。
【０００９】
別の例示的な態様は、永続動作を実行する方法であって、ホストからメモリシステムにPersistent Writeコマンドおよび関連する書込みデータを提供するステップを含み、Persistent Writeコマンドが、不揮発性メモリへの書込みデータのPersistent Writeを実行することをメモリシステムに示す、方法を対象とする。
【００１０】
別の例示的な態様は、ホストからPersistent Writeコマンドおよび関連する書込みデータを受信し、Persistent Writeコマンドに基づいて、メモリシステム内の不揮発性メモリへの書込みデータのPersistent Writeを実行するように構成されたメモリシステムを備える装置を対象とする。
【００１１】
別の例示的な態様は、Persistent Writeコマンドおよび関連する書込みデータをメモリシステムに提供するように構成されたホストを備え、Persistent Writeコマンドが、不揮発性メモリへの書込みデータのPersistent Writeを実行することをメモリシステムに示す、装置を対象とする。
【００１２】
別の例示的な態様は、データを記憶するための手段を備える装置であって、記憶するための手段が、ホストからPersistent Writeコマンドおよび関連する書込みデータを受信するための手段と、Persistent Writeコマンドに基づいて、記憶するための手段内の不揮発性メモリへの書込みデータのPersistent Writeを実行するための手段とを備える、装置を対象とする。
【００１３】
別の例示的な態様は、処理するための手段を備える装置であって、処理するための手段が、Persistent Writeコマンドおよび関連する書込みデータをメモリシステムに提供するための手段を備え、Persistent Writeコマンドが、不揮発性メモリへの書込みデータのPersistent Writeを実行することをメモリシステムに示す、装置を対象とする。
【００１４】
別の例示的な態様は、プロセッサによって実行されると、プロセッサに永続動作を実行させるコードを備える非一時的コンピュータ可読記憶媒体であって、メモリシステムにおいて、ホストからPersistent Writeコマンドおよび関連する書込みデータを受信するためのコードと、Persistent Writeコマンドに基づいて、メモリシステム内の不揮発性メモリへの書込みデータのPersistent Writeを実行するためのコードとを備える非一時的コンピュータ可読記憶媒体を対象とする。
【００１５】
別の例示的な態様は、プロセッサによって実行されると、プロセッサに永続動作を実行させるコードを備える非一時的コンピュータ可読記憶媒体であって、ホストからメモリシステムにPersistent Writeコマンドおよび関連する書込みデータを提供するためのコードを備え、Persistent Writeコマンドが、不揮発性メモリへの書込みデータのPersistent Writeを実行することをメモリシステムに示す、非一時的コンピュータ可読記憶媒体を対象とする。
【００１６】
添付の図面は、本発明の態様の説明を助けるために提示され、態様の限定ではなく、態様の例示のためのみに提供される。
【図面の簡単な説明】
【００１７】
【図１】本開示の態様による処理システムを示す図である。
【図２Ａ】本開示の様々な態様による、Persistent Writeを処理するためのトランザクションを示す図である。
【図２Ｂ】本開示の様々な態様による、Persistent Writeを処理するためのトランザクションを示す図である。
【図２Ｃ】本開示の様々な態様による、Persistent Writeを処理するためのトランザクションを示す図である。
【図３】本開示による、Persistent Writeコマンドのための例示的な符号化を示す図である。
【図４Ａ】本開示の態様による、Persistent Writeを実行する例示的な方法に関連するイベントのシーケンスを示す図である。
【図４Ｂ】本開示の態様による、Persistent Writeを実行する例示的な方法に関連するイベントのシーケンスを示す図である。
【図５】本開示の一態様が有利に用いられ得る例示的なコンピューティングデバイスを示す図である。
【発明を実施するための形態】
【００１８】
本発明の態様は、本発明の特定の態様を対象とする以下の説明および関連する図面において開示される。本発明の範囲から逸脱することなく、代替の態様が考案され得る。加えて、本発明の関連する詳細を不明瞭にしないように、本発明のよく知られている要素は、詳細に説明されないか、または省略される。
【００１９】
「例示的」という語は、本明細書では「例、事例、または例示として機能すること」を意味するために使用される。本明細書で「例示的」として説明するいかなる態様も、必ずしも他の態様よりも好ましいまたは有利であると解釈されるべきではない。同様に、「本発明の態様」という用語は、本発明のすべての態様が、説明する特徴、利点または動作モードを含むことを必要としない。
【００２０】
本明細書で使用する用語は、特定の態様のみについて説明するためのものであり、本発明の態様を限定するものではない。本明細書で使用する単数形「a」、「an」および「the」は、文脈が別段に明確に示さない限り、複数形も含むものとする。「備える(comprises)」、「備える(comprising)」、「含む(includes)」および/または「含む(including)」という用語は、本明細書で使用するとき、述べられた特徴、整数、ステップ、動作、要素、および/または構成要素の存在を明示するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を排除しないことをさらに理解されたい。
【００２１】
さらに、多くの態様について、たとえば、コンピューティングデバイスの要素によって実行されるべきアクションのシーケンスに関して説明する。本明細書で説明する様々なアクションは、特定の回路(たとえば、特定用途向け集積回路(ASIC))によって、1つもしくは複数のプロセッサによって実行されるプログラム命令によって、または両方の組合せによって実行され得ることが認識されよう。加えて、本明細書で説明するこれらのアクションのシーケンスは、実行時に、関連するプロセッサに本明細書で説明する機能を実行させることになる、コンピュータ命令の対応するセットを記憶した、任意の形態のコンピュータ可読記憶媒体内で完全に具現化されるものと見なされ得る。したがって、本発明の様々な態様は、いくつかの異なる形態で具現化されてもよく、それらのすべてが、請求する主題の範囲内に入ることが企図されている。加えて、本明細書で説明する態様の各々について、任意のそのような態様の対応する形態が、たとえば、説明するアクションを実行する「ように構成された論理」として本明細書において説明される場合がある。
【００２２】
本開示の例示的な態様は、不揮発性DIMM(またはNVDIMM)などの不揮発性メモリのための効率的かつ高性能なPersistent Write動作を対象とする。対応して、例示的な態様によるPersistent Write動作をサポートする1つの例示的なメモリシステムとして、永続NVDIMMまたはNVDIMM-Pが開示される。以下のセクションでさらに詳細に説明するように、ホストデバイスは、たとえば、永続動作のための例示的な要求/コマンドおよび対応するデータを例示的なメモリシステムに提供するように構成されてもよく、メモリシステムは、要求されたPersistent Write動作を実行し、対応するシグナリングをホストデバイスに提供するように構成されてもよい。
【００２３】
次に図1を参照すると、ホスト120およびメモリシステム130を備える例示的な処理システム100が示されている。ホスト120は、明示的に示されていないが、中央処理ユニット(CPU)、デジタル信号プロセッサ(DSP)、マルチメディアプロセッサ、システムプロセッサ、グラフィックス処理ユニット(GPU)、変調器-復調器(モデム)、アプリケーションプロセッサなどの1つまたは複数の処理要素を備えることができる。これらの処理要素は、メモリシステム130にアクセスするための要求を行うことがある。メモリコントローラ(図示せず)は、これらのアクセス要求を制御するために、ホスト120内に存在してもよい。
【００２４】
メモリシステム130は、永続メモリ、たとえば、本開示によるNVDIMM-Pであってもよい。メモリシステム130は、入力/出力(I/O)ブロック132およびメモリバンク134を含むことが示されている。メモリバンク134は、Flashメモリ、DRAMなどを含んでもよい。
【００２５】
配線110はホスト120とメモリシステム130との間に示されており、データバス(DQ)112、コマンド/アドレスバス(CA)114、およびレスポンス116が別々に識別される。ホスト120は、CA114を介してメモリアクセス要求のためのコマンドおよび関連するアドレスを提供し、(二方向バスとして示されている)DQ112を介してデータを送信/受信することが可能であり得る。レスポンス116は、別々に示されているが、CA114の一部として構成されてもよく、場合によっては双方向バスとして実装されてもよい。レスポンス116は、いくつかの例示的な態様では、Persistent Writeのステータスなどの情報を提供するために使用されてもよい。様々な他のバス/ワイヤは別々に識別されていないが、これらも配線110内に存在することがある。いくつかの事例では、メモリシステム130は、確定的レスポンスおよび非確定的レスポンスのために別個のバスを使用してもよく、これについては、以下でさらに説明する。
【００２６】
メモリシステム130が少なくともいくつかの動作のための永続NVDIMM(NVDIMM-P)構成に対するさらなるサポートを有するNVDIMMとして構成され得る一実装形態では、ホスト120は、たとえばCA114上で、以下の例示的なコマンドのうちの1つまたは複数をメモリシステム130に提供することが可能であり得る。
-  READコマンド(たとえば、64Bの倍数でのレングス符号化を伴う)、読取り識別情報(RID)とともに、
-  WRITEコマンド(たとえば、従来の書込みコマンド)、
-  P-WRITEコマンド(たとえば、Persistent Writeコマンド、Persistent Writeのための書込み識別情報(WID)とともに、所与のWIDを伴う書込みがメモリシステム130からの(たとえば、レスポンス116上で提供されるべき)Persistent Write完了(W_PER)信号を必要とするときを示す永続ビットとともに)、
-  ADRxコマンド: 拡張アドレス、
-  SENDコマンド(たとえば、メモリシステム130が読取りデータ要求のステータスを提供するためのコマンド)、
-  SEND_Statusコマンド(たとえば、メモリシステム130がメモリシステム130からの永続動作に関連するエラー読出し、WIDなどを提供するためのコマンド)、
-  (永続メモリにプッシュされるべき以前の書込みをフラッシュするための)FLUSHコマンド、
-  NOP(動作なし)、
-  (たとえば、キャッシュされたメモリを読み取るために使用される)Speculative Readコマンド、および
-  実装形態固有であり得る他のCachingコマンド
【００２７】
前述のように、メモリシステム130からホスト120への確定的レスポンスおよび非確定的レスポンスのために、別個のバスが配線110に設けられ得る。確定的レスポンスは、チェックビットピンなどの、I/O 132に結合されたピンから出てくるバス上で多重化され得る、メタデータ、DQ112上でホスト120に送られた読取りデータなどに関連するエラー制御コーディング(ECC)などのエラー/パリティ情報を含む。
【００２８】
ECCビットの中には、(たとえば、NVDIMMとしての)メモリシステム130の実装形態に固有のメディアECCおよびDQ112上のチャネル固有のECCビットがあってもよく、これらは、たとえば、様々な実装形態にわたる相互互換性を可能にするために標準化され得る。
【００２９】
メタデータビットは、アウトオブプログラムオーダーで送られた読取り要求のための遅延されたRIDを含んでもよい(ここにおいて、インオーダー動作の場合、RIDは「ドントケア(don't-care)」ステータスに設定され得る)。メタデータビットはまた、一定のホストまたはホスト120の処理要素に割り振られた、書込み動作のための未使用クォータを指す書込みクレジット(WC:write credit)を含んでもよい。メタデータビットは、当技術分野で知られているようなユーザ機器からのデータのためのデータポイズニングビット、および他のユーザ定義ビットをさらに含んでもよい。
【００３０】
本開示による非確定的レスポンスは、永続動作に関連してもよく、メモリシステム130からホスト120へのレスポンス116などの専用シグナリングを通じて送られてもよく、以下を示してもよい。
-  R_RDY:読取りデータが利用可能であることを示す、メモリシステム130からホスト120への信号、
-  Wr_Per:Persistent Writeが完了したことを示す、メモリシステム130からホスト120への信号、および
-  ERROR:CRCチェック、クレジット違反、メディアタイムアウトなどのエラー条件を示す、メモリシステム130からホスト120への信号
【００３１】
NVDIMM-Pとしてのメモリシステム130の一実装形態の場合、たとえば、以下のプロトコルピンがI/O132において定義され得る。パルス幅変調を使用して、以下のピンおよびレスポンス信号構成が実装され得る。たとえば、NVDIMM-Pのダブルデータレート5(DDR5)実装形態では、RSP_nとして標識されたシングルワイヤ(サブチャネルごとに専用のワイヤ)は、以下のシグナリング、すなわち、R_RDYのための2クロックパルス低、W_PERのための4クロックパルス低、およびMESSAGEのための6クロックパルス低を提供するために使用され得る。各低パルスの後に、少なくとも2クロック高パルスが続いてもよい。別個のERROR信号が必要である場合、その信号は8クロック低パルスとして定義されてもよい。
【００３２】
DDR4実装形態の場合、単一のピンで性能問題に対処するために2つのピン(ODT1およびCKE1)が使用されてもよく、ここにおいて、ODT1は、R_RDYのための2クロック低パルス幅およびMESSAGEのための4クロック低を表し、CKE1は、W_PERのための2クロック低パルスを表す。各低パルスの後に、少なくとも2クロック高パルスが続いてもよく、別個のERROR信号が必要である場合、その信号はODT1上の6クロック低パルスとして定義されてもよい。
【００３３】
Persistent Writeの例示的な実装形態では、ハードウェア、ソフトウェア、ファームウェアなど(たとえば、アプリケーション、ドライバなど)の適切な組合せは、ホスト120からメモリシステム130への1つまたは複数の書込み要求が永続性を実現するときにメモリシステム130からホスト120に提供されるべき通知を可能にするように構成されてもよい。これらの通知は、以下で説明するように、実装形態固有であってもよい。
【００３４】
書込み動作のための書き込まれるべきデータがメディアコントローラ上のパワーフェイル保護バッファ(たとえば、メモリシステム130のパワーフェイル保護メモリ)に達したとき、書込み動作は、正常動作中に永続的と見なされ得る。しかしながら、いくつかのまれな場合またはメディアコントローラバッファがパワーフェイル保護されていないとき、ソフトウェアは、書込みがNVMメディアまでずっとプッシュされることを保証する。
【００３５】
NVDIMM-Pとしてのメモリシステム130の一実装形態の場合、エネルギー支援されるDIMMは、上述のバッファがパワーフェイル保護される構成を伴い、これは、正常な場合に永続性が必要とされるときでもNVDIMM-P Writeコマンドが使用され得ることを意味する。加えて、本明細書で定義するようなNVDIMM-P Flushコマンドは、メディアコントローラバッファ内のすべての書込みを不揮発性メモリにフラッシュするために使用され得る。Flushコマンドの場合、Flushの前に行われた書込みのみが、不揮発性メモリに対して永続的となることが保証される。適切なバリア動作などのソフトウェア実装コマンドは、(たとえば、ホスト120がアウトオブプログラムオーダーでPersistent Write要求を送るように構成され得るときに)書込みの正確な順序が維持されることを保証するために、最後の書込みの後かつFlushコマンドが発行される前に使用され得る。
【００３６】
エネルギー支援されないDIMMは、上記で説明したエネルギー支援されるDIMMよりも低い頻度で使用され得るが、NVDIMM-P Persistent Writeコマンドは、エネルギー支援されないDIMMにも永続性が必要とされるときに使用され得る。前述のように、ホスト120のメモリコントローラは、いつPersistent Writeコマンドを発行するかを決定するように構成されてもよい。この場合、メモリシステム130は、図2Aを参照しながら説明するように、いつPersistent Writeが完了したかという明示的な通知を提供することを期待される。さらに、NVDIMM-P Flushコマンドも、従来どおり、すべての書込みを(非Persistent Writeでさえも)不揮発性メモリにフラッシュするために使用され得る。
【００３７】
次に図2Aを参照すると、Persistent Writeコマンドの態様を示すために、ホスト120とメモリシステム130との間のトランザクションの例示的なセットが示されている。ホスト120からの上記で説明したReadコマンドに共通であり得る、例示的なPersistent Write(Wr_Per)コマンド(または単に「Persistent Write」)のいくつかの特徴がある。これらは、特定の書込み命令を識別するためのマルチビット識別子であり得る共通の書込み識別情報(WID)を含む。1つの有効ビット「Vld」を含む、それぞれ最大16ビット幅であり得る、WID210の例示的なセットが示されている(したがって、たとえば、CA114上で送られる64バイトコマンドパケットに最大31個のWIDが存在し得る)。Persistent Writeコマンドは、以下の節でさらに説明するFlushコマンドステータスリターンのためのWID符号化における予約済みフィールドも有し得る。
【００３８】
一態様では、ホスト120は、ホスト120が利用可能な関連するPersistent Writeクレジットを有するときのみ、Persistent Writeを発行するように構成されてもよい。(当技術分野で知られているReadクレジットに類似した)Persistent Writeクレジットは、ホスト120によって構成時に決定されてもよく、管理されてもよく、ホスト120が発行することを許可された未処理のPersistent Writeの数を反映してもよい。
【００３９】
発行されると、ホスト120は、未処理のPersistent Writeを、それらのそれぞれのWID210に基づいて追跡するように構成されてもよい。図2Aには(図1と組み合わせて参照すると)、CA114上でホスト120からメモリシステム130に発行された、202aおよび204aと標識された2つのPersistent Write(第1のアドレスおよびWIDを有するP-Write 1、ならびに第2のアドレスおよびWIDを有するP-Write 2)が、それぞれのデータ、たとえば、DQ112上の書込みデータ202bおよび書込みデータ204bとともに示されている。
【００４０】
メモリシステム130は、特定のPersistent Writeのためのすべてのデータがメモリシステム130内の不揮発性メモリに書き込まれると、そのPersistent Writeに対してレスポンス116上でレスポンス「Wr_Per」を発行するように構成される。Wr_Per202cおよびWr_Per204cが、それぞれのPersistent Write202aおよび204aに対して示されている。しかしながら、レスポンスがプログラムオーダーであるかまたはPersistent Write要求がホスト120から受信される順序である必要はないことを示すために、Wr_Per202cおよびWr_Per204cは、Persistent Write202aおよび204aがメモリシステム130によって受信された順序とは異なる順序で送られることが示されている。一態様では、メモリシステム130は、Wr_Perレスポンスに対するメッセージ「Write_Rdy」のための適切な符号化とともに、レスポンス116上の信号「Req」をアサートしてもよい。
【００４１】
さらに、ホスト120はまた、いつでも、その未処理のPersistent Writeのステータスを決定するために、参照番号206aで指定された「Send-Status for WID」コマンドを発行するように構成されてもよい。それに応答して、メモリシステム130は、たとえば、DQ112を介した8のバースト長または「BL8」転送において、完了したPersistent WriteのWIDを有するステータスパケットを発行するように構成されてもよい。
【００４２】
前述のように、最大31個のWID210が各64Bステータスパケットにパックされてもよく、ここにおいて、WID210ごとに、15ビットWIDとValidビットの組合せに割り当てられた16ビットがあってもよい。さらに、メモリシステム130はまた、他の書込みに対するステータスを返すために、前述のメタデータフィールドを使用してもよい。ホスト120は、たとえば、未処理のPersistent Writeの追跡を終了するために、WIDステータスパケット206b内の返されたWID210を使用してもよい。
【００４３】
いくつかの態様では、2つ以上のPersistent Writeがグループ化されてもよい。たとえば、64B Persistent Writeのセットが、たとえば、エネルギー支援されないDIMMの場合にコミットする(または不揮発性メモリに書き込む)ために、グループ化されてもよい。例示的な実装形態は、ホスト120からメモリシステム130に発行されるべきPersistent Writeのブロックを伴ってもよく、ここにおいて、メモリシステム130は、Persistent Writeのブロックまでをバッファにおいて収集し、Persistent Writeのブロックのすべてを一度にコミットするように構成されてもよく、このことは効率の改善につながり得る。しかしながら、Persistent Writeをグループ化し、ブロック内のPersistent Writeをコミットすることは、バッファがパワーフェイル保護されている、エネルギー支援されるDIMMには必要とされないことが理解されよう。
【００４４】
上記で説明したグループコミットを実装するために、以下の修正がPersistent Writeコマンドに対して行われてもよい。ホスト120は、2つ以上の書込みのセットに対して、(たとえば、WID210から)単一のWIDを選んでもよい。「Persist」と呼ばれる追加のビットが、たとえば、CA114上で送られるときにPersistent Writeコマンドに追加されてもよい。Persistビットは、いつPersistent Writeのグループ全体がメモリシステム130に送られたかを決定するために使用されてもよい。
【００４５】
たとえば、例示的な例においてWID=5を使用して、3つの64B Persistent Writeが以下のように一緒にグループ化されてもよい。第1のPersistent Write(WID=5、Persist=0)、第2のPersistent Write(WID=5、Persist=0)、および第3のPersistent Write(WID=5、Persist=1)がCA114上で送られてもよい。メモリシステム130は、Persistビットが0である間、WID=5を有するPersistent Writeをバッファにおいて収集し、Persistビットが1に設定された最後のPersistent Writeが到着すると、永続性コミットのプロセスを開始するように構成されてもよい。
【００４６】
一実装形態では、Persistent Writeのグループについて、1に設定されたPersistビットを有するPersistent Writeのみ(たとえば、上記の例では、第3のPersistent Writeのみ)が、メモリシステム130からWr_Perレスポンスを得るように構成されてもよい。これは、レスポンス116上のトラフィックを低減することができる。
【００４７】
いくつかの態様では、異なるWIDを有するPersistent Writeは、たとえば、CA114上でインターリーブされてもよい。したがって、永続コミットのためのPersistent Writeのグループ化は、同じWIDを有するグループ内のPersistent Writeがホスト120から連続的に送られることを暗に意味するものではない。
【００４８】
いくつかの態様では、Persistent Writeに対するWr_Perレスポンスにおいて生じ得る競合状態に対処するために、以下の図2Bを参照しながら説明するように、WGID-CompletedビットマップおよびWGID-Pendingビットマップなどの異なるビットマップを使用して、1つまたは複数のPersistent Writeのステータスをグループ化するためにWrite Group ID(WGID)ステータス方法が使用されてもよい。それぞれのWIDを有するPersistent Writeを考慮して、メモリシステム130は、Persist=1を有するPersistent WriteごとおよびFlush完了ごとに、それぞれのWr_Per(この場合は「W_PER」と呼ばれる)をアサートしてもよい。ホスト120は、1つまたは複数のW_PERを受信した後に別のコマンドSend-W_PER-Statusを使用してもよい(ここにおいて、ホスト120はまた、W_PER-Countと呼ばれるW_PERのカウントを維持してもよい)。メモリシステム130は、すでにアサートされたW_PERにのみ基づいて、完了したビットを有するWGID-Completed Statusを返してもよい。今度は、ホスト120は、WGIDのリスト、または「WGIDリスト」を更新し、完了の数に基づいてW_PER-Countをデクリメントしてもよい。
【００４９】
場合によっては、トランザクションにおいて訂正不可能なエラー(UE:uncorrectable error)が生じることがあり、これについては、図2Cを参照しながら説明する。Send-W_PER-Status内にUEがあるとき、ホスト120は、新しいPersistent Write/FlushおよびSend-W_PER-Statusを発行することを停止してもよい。ホスト120は、Xread-Statusと呼ばれるステータス読取りコマンドをメモリシステム130に送ってもよい。今度は、メモリシステム130は、Xread-Statusを受信する前にすべてのPersistent Writeを収集して、WGID-Pending Statusをホスト120に返し(ステータスパケットは、RD_RDYが受信される前にW_PERアサーションをカバーする)、メモリシステム130は、ステータス読取りの間にW_PERの発行を継続することができる。ホスト120は、ホスト120によって維持されるWGID Listを更新し、保留中の書込みに基づいてW_PER-Countをデクリメントしてもよい。次いで、ホスト120は、Persistent Write/Flushの再発行を開始することができる。
【００５０】
メモリシステム130のエネルギー支援されるDIMM実装形態の場合、通常のプロトコルにおいて、ホスト120は、コマンドPersistent Write(Persist=0/1を有する)およびFlushを発行することができるが、メモリシステム130は、Persist=1を有するPersistent WriteごとにW_PERをアサートせず、ただし、メモリシステム130は、Flushが完了したときにFlushコマンドのためのW_PERをアサートする。WGID実装形態の場合、メモリシステム130によるW_PER処理は、Flushに対する通常のプロトコルのみの場合と同じままである。メモリシステム130によって提供されるWGID Completed Statusビットマップは、Flush WGIDビットが完了したときにFlush WGIDビットを設定する。Send-W_PER-Status内にUEがあるとき、WGID Pending StatusのみがFlushに適用可能であることを除いて、動作は通常の場合と同じままである。
【００５１】
WGID実装形態に対するクレジットは、以下のように処理され得る。ステータス書込みまたはXwriteに対して、およびPersistent Writeに対して別個のCreditが維持されてもよく、ここにおいて、ホスト120は、どのようにクレジットのプールがメモリシステム130によって割り振られ得るかを決定してもよい。Incremental Credit ReturnがRead Metadataによって提供されてもよく、ここにおいて、XwriteまたはPersistent Writeクレジットを返すための符号化方式が使用されてもよい。X-Read-Statusリターンは、クレジット割振りに基づいて、XwriteおよびPersistent Writeバッファスロットに利用可能であり得る。
【００５２】
たとえば、図2B〜図2Cを参照しながら説明する一実装形態では、メモリシステム130は、任意の順序でPersistent Write(本明細書ではPWRITEと呼ばれる)およびFlushを完了してもよい。メディアへの特定のPWRITEを持続するために、ホスト120は、Persist=1を有する所与のWGIDのためのPWRITEを発行するか、または、後にFlushタイプのいずれかが続くPersist=0を有するPWRITEを発行してもよい。メモリシステム130は、コマンド内にPersist=1を有する完了したPWRITEごとならびにあらゆる完了したFlushごとにW_PERを発行してもよい。複数のPWRITEが単一のWGIDとともにグループ化され、最後のPWRITEにおけるPersist=1のみがグループを終了させる場合、メモリシステム130は、PWRITEのグループ全体が完了したときのみ、W_PERを発行してもよい。
【００５３】
次に図2Bを参照しながら、通常の場合のW_PER処理について説明する。システム250が、ホスト120およびメモリシステム130とともに示されている。Write-CreditとフリーWGIDの両方が利用可能である場合、ホスト120は、252a、254aとして示される、1つまたは複数のPWRITEまたはFLUSHコマンドを発行してもよい。ホスト120は、発行されたPWRITEまたはFLUSHコマンド252a、254aを、Host-WGID-Pendingリスト(図示しないが、ホスト120内で維持され得る)において追跡してもよい。
【００５４】
対応して、メモリシステム130は、保留中のPWRITEまたはFLUSHコマンド252a、254aを受け入れ、DIMM-WGID-Pendingリスト(図示せず)において追跡してもよい。メモリシステム130は、保留中のPWRITEまたはFLUSHコマンド252a、254aを実行し、受信された各コマンドのそれぞれの完了後に、対応するW_PER254bおよび252bをホスト120にアサートしてもよい。(受信されたPWRITEまたはFLUSHコマンド252a、254aの逆の順序で示されていることに留意されたい)。
【００５５】
メモリシステム130は、完了した受信されたコマンドPWRITEまたはFLUSH252a、254aを、様々な更新260a、260b、260cなどが示されているWGID-Completedビットマップ260において収集してもよい。メモリシステム130はまた、完了したPWRITEまたはFLUSHコマンド252a、254aをDIMM-WGID-Pendingリストから削除してもよい。
【００５６】
ホスト120は、たとえば、W_PER254b、252bを受信するための、W_PER-Countと呼ばれる、受信されたW_PERイベントのカウントを維持してもよい。同時に、ホスト120は、受信されたW_PERイベントを以下のように処理してもよい。W_PER-Count>0の場合、ホスト120は、Send-W_PER Status256aとして示されるステータス要求を発行してもよい。Tsend時間と呼ばれる事前定義された時間の後に、メモリシステム130は、ホスト120へのWGID_Status256bとして示されるレスポンスにおいて、その時間インスタンス(この場合は260b)におけるWGID-Completedビットマップ260のスナップショットを送ってもよい。スナップショットは、ホスト120へのWGID_Status256b転送の開始までに発行されたW_PERの完了を含んでもよい。
【００５７】
いくつかの態様では、最低でも1つの完了がスナップショットにログされる。メモリシステム130は、ビット位置のリセットまたはクリア後のWGID-Completedビットマップ260bからWGID-Completedビットマップ260cへの遷移によって示される、WGID_Status256bにおいて送られた完了に基づいて、WGID-Completedビットマップ260内のビット位置をクリアする。
【００５８】
ホスト120は、WGID_Status256bを受信し、完了したWGIDに関する情報を抽出することができる。対応して、ホスト120は、完了したWGIDをHost-WGID-Pendingリストから解放し、WGID-Completedビットマップ260において受信された完了の数だけW_PER-Countをデクリメント(たとえば、WGID-Completedビットマップ260bによって示されるような受信された2つのW_PERに基づいて、2のカウントをデクリメント)してもよい。ホスト120は、W_PER-Countを監視し、W_PER-Count>0の場合、別のステータス要求Send-W_PER Status256aをメモリシステム130に発行することから始めて、上記のプロセスを繰り返してもよい。
【００５９】
例示的な実装形態では、ホスト120およびメモリシステム130は、W_PERイベント処理が進行中である間、新しいPWRITEの発行および実行を継続してもよい。例示的な実装形態に関して、W_PER-Count、およびHost-WGID-Pendingリスト、DIMM-WGID-Pendingリストなどの保留中のリストについて説明してきたが、本開示の範囲から逸脱することなく、上記で説明した機能を実現するための代替構造が使用されてもよい。
【００６０】
次に図2Cを参照すると、メモリシステム130からの(上記の図2Bで説明した)WGID_Status256bにおいて送られた完了の損失をもたらす、ホスト120からのSEND-W_PER-Statusの後のチャネルUncorrectable Error(UE)を処理するためのシステム270が示されている。さらに、メモリシステム130が図2BのWGID-Completedビットマップ260から以前の完了をクリアした場合があることに留意されたい。
【００６１】
したがって、システム270におけるそのようなエラーから復旧するためのプロトコルにおいて、ホスト120は、新しいPWRITEまたはFLUSHコマンドの発行を停止することによって(たとえば、PWRITE-3またはFLUSH-3 272aは発行されず、エラーが発生しなければ発行したであろうタイムラインを示すために破線で示されている)、復旧プロセスを開始してもよく、一方、メモリシステム130は、完了した読取りまたはPWRITEもしくはFLUSHコマンドのためのRD_RDYおよび/またはW_PERイベントの発行を継続してもよい(たとえば、W_PER254bは発行されることが示されているが、W_PER252bはエラー復旧の後まで発行されない)。ホスト120はまた、SENDの発行およびW_PER-Countの更新を継続してもよい。
【００６２】
最後のPWRITEの後の、TWE_Delayと呼ばれる、書込みイネーブル信号のための事前に指定された最小時間遅延の後に、ホスト120は、XREAD-STATUS274aをメモリシステム130に発行し、メモリシステム130は、WGID-Pendingビットマップ280のスナップショットを有する完全なStatusパケットを準備してもよく、WGID-Pendingビットマップ280は、上記で説明したWGID-Completedビットマップ260に加えて提供される別のビットマップであり、ここにおいて、WGID-Pendingビットマップ280は、すべてのPending PWRITE/FLUSHのステータスを含む。メモリシステム130はRD_RDY276bをアサートしてもよく、ホスト120は、それに応答して、SEND278aを発行してもよい。
【００６３】
次いで、メモリシステム130は、準備されたStatusパケット278bを返してもよく、Statusパケット278bから、ホスト120は、Statusパケット278bにおいて受信されたWGID-Pendingビットマップ280を抽出し、処理してもよい。ホスト120は、そのHost-WGID-Pending追跡リストから適切なWGIDを解放し、解放されたWGIDの数だけW_PER-Countをデクリメントしてもよい。次いで、ホスト120は、新しいPWRITE/FLUSHコマンドを発行することから始めてプロセスを繰り返し、以前のページのとおりに現時点で保留中のW_PERを処理してもよい。
【００６４】
いくつかの態様では、Statusパケット278bは、それがWGID-Completedビットマップ260を有するかまたはWGID-Pendingビットマップ280を有するかを示すように構成される。W_PERレスポンスステータスパケットはWGID-Completedビットマップ260を含むが、すべての他のステータスパケットはWGID-Pendingビットマップ280を含む。TWE_Delay時間は、ホスト120から発行された最後のPWRITEについてメモリシステム130からエラー通知を得る時間を考慮するように構成され、ホスト120から発行されたXREAD-STATUS274aの前のUE検出からの待ち時間は、いつ最後のPWRITEが発行されたかに応じて変化することがある。
【００６５】
図3を参照すると、たとえば、メモリシステム130のDDR5実装形態について、Persistent Writeのための例示的な符号化が示されている。CA1フィールドは、典型的には、DDR5技術における1UIコマンドと2UIコマンドを差別化するために使用されており、NVDIMM-P実装形態のために保持されてもよい。CA114は、いくつかの実装形態では、7つのピンのみを有するDDR5用のDDR速度で構成されてもよく、そのような場合、別個のコマンド符号化は、たとえば、図3に示すように、Persistent Writeに使用されてもよい。
【００６６】
図3において、Persistビット=1の場合、これは、メモリシステム130がそれぞれのWIDに関連付けられたすべてのPersistent Writeを不揮発性メモリにプッシュすべきであることを示す。グループ内に単一の64B Persistent Writeがある場合、Persistビットは1に設定されてもよい。64Bよりも大きいPersistent Writeの場合、すべてのPersistent Writeは同じWIDを有してもよく、最後のPersistent WriteはそのPersistビットを1に設定するが、残りのPersistent WriteはそれらのPersistビットを0に設定する。
【００６７】
前のセクションで紹介したような上記のトランザクションに加えて、FLUSHコマンドと呼ばれる、Persistent Writeに関連する別のコマンドが使用されることもある。FLUSHコマンドは、(たとえば、非永続または揮発性メモリに)バッファされたすべての以前の書込みが永続メモリにプッシュされるべきであることをメモリシステム130に示すように構成されるが、FLUSHコマンドを使用するとき、将来の書込みが同様に影響を受けるかまたは永続メモリにプッシュされることがない場合があることに留意されたい。
【００６８】
FLUSHの実行が完了したとき、メモリシステム130は、上記で説明したPersistent Writeの場合と同様に、たとえば、レスポンス116上でホスト120に、Wr_Perをもう一度アサートしてもよい。
【００６９】
さらに、ホスト120はまた、FLUSHコマンドの場合に、(Persistent Writeと同様の)コマンドSend-Status for WIDsをメモリシステム130に提供してもよく、これに対して、メモリシステム130は、FLUSH実行の完了を示すために、一意の予約済みWIDを有するWID Status Packetで応答してもよい(たとえば、すべてのビットが1に設定されたWIDは、FLUSH実行の完了を示すために使用される、そのような予約済みWIDであってもよい)。
【００７０】
一実装形態では、ホスト120からの1つの未処理のFLUSHコマンドのみが許可されることがある。したがって、この実装形態では、ホスト120は、別のFLUSHコマンドを送る前に、メモリシステム130からのFLUSH完了レスポンスを待たなければならないことがある。代替実装形態では、FLUSHコマンドは、(たとえば、予約済みWIDフィールドから選択された)対応するFLUSH IDを伴うことがあり、対応するResponse to Send-Statusは、FLUSH実行が完了したFLUSH IDを返すことをメモリシステム130に行わせてもよい。
【００７１】
態様は、本明細書で開示するプロセス、機能および/またはアルゴリズムを実行するための様々な方法を含むことが諒解されよう。たとえば、図4Aは、永続動作を実行する例示的な方法400を示す。
【００７２】
ブロック402は、メモリシステム(たとえば、メモリシステム130)において、ホスト(たとえば、ホスト120)からPersistent Writeコマンド(たとえば、Persistent Write202a)および関連する書込みデータ(たとえば、データ202b)を受信することを含む。
【００７３】
ブロック404は、Persistent Writeコマンドに基づいて、メモリシステム内の不揮発性メモリへの(たとえば、メモリシステム130内の不揮発性メモリへの)書込みデータのPersistent Writeを実行することを含む。ホストからPersistent Writeコマンドに関連付けられた書込み識別情報(WID)が受信されてもよく、Persistent Writeの完了が成功すると、Persistent Write完了指示(Wr_Per)が関連するWID(たとえば、Wr_Per202c)とともにホストに提供されてもよい。
【００７４】
同様に、図4Bは、永続動作を実行する別の例示的な方法450を示す。
【００７５】
ブロック452は、ホスト(たとえば、ホスト120)からメモリシステム(たとえば、メモリシステム130)にPersistent Writeコマンド(たとえば、Persistent Write202a)および関連する書込みデータ(たとえば、データ202b)を提供することを含み、ここにおいて、Persistent Writeコマンドは、不揮発性メモリへの書込みデータのPersistent Writeを実行することをメモリシステムに示す。
【００７６】
ブロック454は、ホストからメモリシステムにPersistent Writeコマンドに関連付けられた書込み識別情報(WID)(たとえば、WID210)を提供することを含む。
【００７７】
次に、本開示の態様が利用され得る例示的な装置について、図5に関して説明する。図5は、コンピューティングデバイス500のブロック図を示す。コンピューティングデバイス500は、図1の処理システム100の例示的な実装形態に対応することができ、ここにおいて、プロセッサ120'は、ホスト120の処理要素のうちの1つであり得る。プロセッサ120'は、配線110を通じてメモリシステム130に結合されることが例示的に示されており、明快にするために、配線110のさらなる詳細はこの図から省略されている。プロセッサ120'、配線110、およびメモリシステム130は、上記で説明したように方法400〜450を実行するように構成され得る。図示されていないが、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)、固定ロケーションデータユニット、コンピュータ、ラップトップ、タブレット、通信デバイス、モバイルフォン、または他の同様のデバイスに統合される場合もあることに留意されたい。
【００８１】
当業者は、情報および信号が、様々な異なる技術および技法のうちのいずれかを使用して表され得ることを諒解されよう。たとえば、上記の説明全体にわたって参照される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表され得る。
【００８２】
さらに、当業者は、本明細書で開示する態様に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能に関して説明した。そのような機能がハードウェアとして実装されるかまたはソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課された設計制約に依存する。当業者は、説明した機能を様々な方法で特定の適用例ごとに実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００８３】
本明細書で開示する態様に関して説明する方法、シーケンスおよび/またはアルゴリズムは、直接ハードウェアにおいて、プロセッサによって実行されるソフトウェアモジュールにおいて、またはその2つの組合せにおいて具現化されてもよい。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体内に存在してもよい。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体は、プロセッサと一体であってもよい。
【００８４】
したがって、本発明の一態様は、Persistent Writeを実行する方法を具現化するコンピュータ可読媒体を含むことができる。したがって、本発明は図示の例に限定されず、本明細書で説明する機能を実行するためのいかなる手段も本発明の態様に含まれる。
【００８５】
上記の本開示は本発明の例示的な態様を示すが、添付の特許請求の範囲によって規定されるような本発明の範囲から逸脱することなく、本明細書において様々な変更および修正が行われ得ることに留意されたい。本明細書で説明する本発明の態様による方法クレームの機能、ステップおよび/またはアクションは、任意の特定の順序で実行される必要はない。さらに、本発明の要素は、単数形で説明または特許請求される場合があるが、単数形への限定が明示的に述べられていない限り、複数形が企図される。
【符号の説明】
【００８６】
100  処理システム
110  配線
112  データバス(DQ)、DQ
114  コマンド/アドレスバス(CA)、CA
116  レスポンス
120  ホスト
120'  プロセッサ
130  メモリシステム
132  入力/出力(I/O)ブロック、I/O
134  メモリバンク
202a  Persistent Write
202b  書込みデータ、データ
202c  Wr_Per
204a  Persistent Write
204b  書込みデータ
204c  Wr_Per
206a  「Send-Status for WID」コマンド
206b  WIDステータスパケット
210  WID
250  システム
252a  PWRITEまたはFLUSHコマンド
252b  W_PER
254a  PWRITEまたはFLUSHコマンド
254b  W_PER
256a  Send-W_PER Status
256b  WGID_Status
260  WGID-Completedビットマップ
260a  更新
260b  更新、WGID-Completedビットマップ
260c  更新、WGID-Completedビットマップ
270  システム
272a  PWRITE-3またはFLUSH-3
274a  XREAD-STATUS
276b  RD_RDY
278a  SEND
278b  Statusパケット
280  WGID-Pendingビットマップ
400  方法
450  方法
500  コンピューティングデバイス
522  システムインパッケージまたはシステムオンチップデバイス、システムオンチップデバイス
526  ディスプレイコントローラ
528  ディスプレイ
530  入力デバイス
534  コーダ/デコーダ(コーデック)、コーデック
536  スピーカー
538  マイクロフォン
540  ワイヤレスコントローラ
542  ワイヤレスアンテナ
544  電源
【図１】
2020534598.tif 000003
【図２Ａ】
2020534598.tif 000004
【図２Ｂ】
2020534598.tif 000005
【図２Ｃ】
2020534598.tif 000006
【図３】
2020534598.tif 000007
【図４Ａ】
2020534598.tif 000008
【図４Ｂ】
2020534598.tif 000009
【図５】
2020534598.tif 000010
【国際調査報告】
2020534598.tif 000011
2020534598.tif 000012