(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-12
(54)【発明の名称】HMB喪失からの回復
(51)【国際特許分類】
G06F 15/78 20060101AFI20240705BHJP
【FI】
G06F15/78 518C
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024501140
(86)(22)【出願日】2022-05-09
(85)【翻訳文提出日】2024-01-22
(86)【国際出願番号】 US2022028244
(87)【国際公開番号】W WO2023043502
(87)【国際公開日】2023-03-23
(32)【優先日】2021-09-20
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】504056130
【氏名又は名称】ウェスタン デジタル テクノロジーズ インコーポレーテッド
(74)【代理人】
【識別番号】100207837
【氏名又は名称】小松原 寿美
(72)【発明者】
【氏名】セゲブ、アミール
(72)【発明者】
【氏名】ベニスティ、シェイ
【テーマコード(参考)】
5B062
【Fターム(参考)】
5B062EE10
(57)【要約】
データ記憶デバイスは、メモリデバイス、及びメモリデバイスに結合されたコントローラを含む。コントローラは、ホストデバイスのホストメモリバッファ(HMB)への接続が失われたと判定し、メモリデバイスからフラッシュ変換レイヤ(FTL)テーブルの最新のコピーをロードし、FTLテーブルの最新のコピーに対する1つ以上の更新を生成し、コマンドフェッチを再有効化するように構成される。コントローラは、判定の際に、コマンドデータベース内の1つ以上のコマンドにエラー状態をマークするように更に構成されている。接続のブートの後、コントローラは、メモリデバイスからFTLテーブルをHMBにコピーし、コマンドを処理し、HMBとメモリデバイスとの間のFTLテーブル差を保存し、メモリデバイス内のFTLテーブルを更新するように更に構成される。
【特許請求の範囲】
【請求項1】
データ記憶デバイスであって、
メモリデバイスと、
前記メモリデバイスに結合されたコントローラであって、前記コントローラは、
ホストデバイスのホストメモリバッファ(HMB)への接続が失われたと判定し、
前記メモリデバイスからフラッシュ変換レイヤ(FTL)テーブルの最新のコピーをロードし、
前記FTLテーブルの前記最新のコピーに対する1つ以上の更新を生成し、
コマンドフェッチを再有効化する、ように構成されている、コントローラと、
を備える、データ記憶デバイス。
【請求項2】
前記コントローラは、前記ホストデバイスの前記HMBへの前記接続が失われたと判定すると、前記コマンドフェッチを無効にするように更に構成されている、請求項1に記載のデータ記憶デバイス。
【請求項3】
前記フェッチを再有効化することは、前記ホストデバイスから1つ以上のコマンドをフェッチすることを含む、請求項1に記載のデータ記憶デバイス。
【請求項4】
前記メモリデバイスは、不揮発性メモリデバイスである、請求項1に記載のデータ記憶デバイス。
【請求項5】
前記コントローラは、前記FTLテーブルをHMB及び前記メモリデバイスの両方に記憶するように構成されている、請求項1に記載のデータ記憶デバイス。
【請求項6】
前記生成された1つ以上の更新は、前記メモリデバイスに記憶される、請求項1に記載のデータ記憶デバイス。
【請求項7】
前記コントローラは、前記HMBへの前記接続の回復時に、前記メモリデバイスに記憶された前記生成された1つ以上の更新を用いて、前記HMBに記憶されたFTLテーブルを更新するように構成されている、請求項6に記載のデータ記憶デバイス。
【請求項8】
前記コントローラは、前記判定の際に、コマンドデータベース内の1つ以上のコマンドにエラー状態をマークするように更に構成されている、請求項1に記載のデータ記憶デバイス。
【請求項9】
前記エラー状態は、前記マークされた1つ以上のコマンドを前記コントローラに送信して実行することを再試行することを前記ホストデバイスに提案し、前記コントローラは、前記マークされた1つ以上のコマンドを前記ホストデバイスから前記再有効化及び受信した後に、前記マークされた1つ以上のコマンドを実行するように更に構成されている、請求項8に記載のデータ記憶デバイス。
【請求項10】
データ記憶デバイスであって、
メモリデバイスと、
前記メモリデバイスに結合されたコントローラであって、前記コントローラは、
前記コントローラとホストデバイスのホストメモリバッファ(HMB)との間の接続が回復されたと判定し、
前記メモリデバイスから前記HMBにフラッシュ変換レイヤ(FTL)テーブルをコピーし、前記コピーすることは、前記コントローラと前記HMBとの間の前記接続が回復された後に行われ、
コマンドデータベースに記憶された1つ以上のコマンドを実行する、ように構成されている、コントローラと、
を備える、データ記憶デバイス。
【請求項11】
前記1つ以上のコマンドは、1つ以上のマークされたコマンドを含み、前記1つ以上のマークされたコマンドは、前記HMB喪失によるエラー状態でマークされたコマンドを含む、請求項10に記載のデータ記憶デバイス。
【請求項12】
前記コントローラは、前記実行された1つ以上のコマンドを用いて、前記HMBに記憶された前記FTLテーブルを更新するように更に構成されている、請求項11に記載のデータ記憶デバイス。
【請求項13】
前記コントローラは、前記メモリデバイスに記憶された前記FTLテーブルが、前記HMBに記憶された前記FTLテーブルと異なると判定するように更に構成されている、請求項12に記載のデータ記憶デバイス。
【請求項14】
前記コントローラは、前記メモリデバイスに記憶された前記FTLテーブルが前記HMBに記憶された前記FTLテーブルと異なると前記判定すると、前記メモリデバイスに記憶された前記FTLテーブルを、前記HMBに記憶された前記FTLテーブルで更新するように更に構成されている、請求項13に記載のデータ記憶デバイス。
【請求項15】
前記コントローラは、前記HMBに記憶された前記FTLテーブルが、前記メモリデバイスに記憶された前記FTLテーブルと異なると判定するように更に構成されている、請求項10に記載のデータ記憶デバイス。
【請求項16】
前記コピーすることは、前記HMBに記憶された前記FTLテーブルが、前記メモリデバイスに記憶された前記FTLテーブルと異なると決定すると、前記メモリデバイスに記憶された前記FTLテーブルからの変更を用いて、前記HMBに記憶された前記FTLテーブルを更新することを含む、請求項15に記載のデータ記憶デバイス。
【請求項17】
データ記憶デバイスであって、
メモリ手段と、
前記メモリ手段に結合されたコントローラであって、前記コントローラは、
第1の時間にホストデバイスからコマンドを受信し、
前記コマンドに対する再試行提案を有するエラー指示を前記ホストデバイスに送信し、
第2の時間に前記ホストデバイスから前記コマンドを受信し、
前記コマンドを実行し、前記エラー指示を送ることと前記コマンドを実行することとの間に、前記コントローラは、前記メモリ手段からフラッシュ変換レイヤ(FTL)テーブルをロードするように構成されている、コントローラと、
を備える、データ記憶デバイス。
【請求項18】
前記コントローラは、ホストメモリバッファ(HMB)への接続が失われたと判定するように更に構成されている、請求項17に記載のデータ記憶デバイス。
【請求項19】
前記コントローラは、再試行制限に達したことに起因して、前記ホストデバイスからリブート動作の指示を受信するように更に構成されている、請求項17に記載のデータ記憶デバイス。
【請求項20】
前記コントローラは、前記リブート動作のための前記指示に起因して、前記ホストデバイスからリブートコマンドを受信するように更に構成されている、請求項19に記載のデータ記憶デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本出願は、2021年9月20日に出願された「RECOVERY FROM HMB LOSS」と題する米国非仮出願第17/479,795号の利益を主張し、その内容の全体はあらゆる目的のために参照により本出願に組み込まれる。
【0002】
(発明の分野)
本開示の実施形態は、概して、ソリッドステートドライブ(SSD)などのデータ記憶デバイスに関し、より具体的には、ホストメモリバッファ(HMB)喪失からの回復に関する。
【背景技術】
【0003】
(関連技術の説明)
ホストデバイスのダイナミックランダムアクセスメモリ(DRAM)の一部は、データ記憶デバイスDRAM上に通常記憶され得る情報を記憶するために、データ記憶デバイスによって利用され得る。ホストデバイスのDRAMの一部は、ホストメモリバッファ(HMB)であり得る。HMBは、ホストデバイスによってデータ記憶デバイスにプロビジョニングされ、データ記憶デバイスは、ホストデバイスとの相互作用なしに、HMBにアクセスし、HMBに書き込み、HMBから読み取ることができる。したがって、データ記憶デバイスのコストを低減するために、より少ないDRAMを用いて、又はDRAMを用いずにデータ記憶デバイスを製造することができる。
【0004】
しかしながら、データ記憶デバイスのコントローラが保持する必要がある制御データの量は減少しない。したがって、制御データは、HMB又はデータ記憶デバイスのメモリデバイスに記憶されてもよい。HMBへアクセスすること、HMBからデータを取り出すこと、及びHMBへデータを書き込むことは、メモリデバイスにアクセスすること、メモリデバイスからデータを取り出すこと、及びメモリデバイスにデータを書き込むことよりも高速であり得る。しかしながら、HMBに記憶されたデータはデータ記憶デバイスの外部にあるので、電力喪失イベント、データ記憶デバイスとHMBとの間の接続問題などの場合に、データの実行可能なコピーをメモリデバイスに記憶することができる。加えて、HMBがホストデバイスに属するので、ホストデバイスは、HMBに割り当てられたDRAMの領域をいつでも取り戻すことができる。このような場合、データ記憶デバイスは、ホストデバイスをタイムアウトさせることなく、安全に回復できなければならない。
【0005】
したがって、当技術分野では、HMB喪失からの回復が必要とされている。
【発明の概要】
【0006】
本開示は、概して、ソリッドステートドライブ(SSD)などのデータ記憶デバイスに関し、より具体的には、HMB喪失からの回復に関する。データ記憶デバイスは、メモリデバイス、及びメモリデバイスに結合されたコントローラを含む。コントローラは、ホストデバイスのホストメモリバッファ(HMB)への接続が失われたと判定し、メモリデバイスからフラッシュ変換レイヤ(FTL)テーブルの最新のコピーをロードし、FTLテーブルの最新のコピーに対する1つ以上の更新を生成し、コマンドフェッチを再有効化するように構成される。コントローラは、判定の際に、コマンドデータベース内の1つ以上のコマンドにエラー状態をマークするように更に構成されている。接続のブートの後、コントローラは、メモリデバイスからFTLテーブルをHMBにコピーし、コマンドを処理し、HMBとメモリデバイスとの間のFTLテーブル差を保存し、メモリデバイス内のFTLテーブルを更新するように更に構成される。
【0007】
一実施形態では、データ記憶デバイスは、メモリデバイスと、メモリデバイスに結合されたコントローラと、を含む。コントローラは、ホストデバイスのホストメモリバッファ(HMB)への接続が失われたと判定し、メモリデバイスからフラッシュ変換レイヤ(FTL)テーブルの最新のコピーをロードし、FTLテーブルの最新のコピーに対する1つ以上の更新を生成し、コマンドフェッチを再有効化するように構成される。
【0008】
別の実施形態では、データ記憶デバイスは、メモリデバイスと、メモリデバイスに結合されたコントローラと、を含む。コントローラは、コントローラとホストデバイスのホストメモリバッファ(HMB)との間の接続が回復されたことを判定し、メモリデバイスからHMBにフラッシュ変換レイヤ(FTL)テーブルをコピーし、コピーはコントローラとHMBとの間の接続が回復された後に行われ、コマンドデータベースに記憶された1つ以上のコマンドを実行するように構成される。
【0009】
別の実施形態では、データ記憶デバイスは、メモリ手段と、メモリ手段に結合されたコントローラと、を含む。コントローラは、第1の時間にホストデバイスからコマンドを受信し、コマンドに対する再試行提案を有するエラー指示をホストデバイスに送信し、第2の時間にホストデバイスからコマンドを受信し、コマンドを実行するように構成される。コントローラは、エラー指示を送ることとコマンドを実行することとの間に、メモリ手段からフラッシュ変換レイヤ(FTL)テーブルをロードするように更に構成される。
【図面の簡単な説明】
【0010】
本開示の上記の特徴を詳細に理解することができるように、簡潔に上で要約した本開示のより具体的な説明は、実施形態を参照することによってなされ得、それらのいくつかが添付の図面に例示されている。しかしながら、添付の図面は、本開示の典型的な実施形態のみを例示し、したがって、その範囲を限定するものと見なされるべきではなく、本開示が他の同等に有効な実施形態を認め得ることに留意すべきである。
【
図1】特定の実施形態による、データ記憶デバイスがホストデバイスの記憶デバイスとして機能し得る記憶システムを示す概略ブロック図である。
【
図2A】特定の実施形態による、DRAM所有を示すデータ記憶デバイスの概略図である。
【
図2B】特定の実施形態による、HMB所有を示す
図2Aのデータ記憶デバイスの概略図である。
【
図3】特定の実施形態による、NVMeコマンドフローの概略図である。
【
図4】特定の実施形態による、データ記憶デバイスがホストデバイスの記憶デバイスとして機能し得る記憶システムを示す概略ブロック図である。
【
図5】特定の実施形態による、ハードウェア側及びファームウェア側からコマンドを実行する方法を示すフロー図である。
【
図6A】特定の実施形態による、ホストコマンド発行の方法を示すフロー図である。
【
図6B】特定の実施形態による、データ記憶デバイスによるHMB喪失を処理する方法を示すフロー図である。
【
図6C】特定の実施形態による、データ記憶デバイスによるブート後処理の方法を示すフロー図である。
【0011】
理解を容易にするために、図面に共通する同一の要素を示すために、可能な限り、同一の参照番号を使用している。一実施形態で開示される要素は、特に断ることなく、他の実施形態に有益に利用され得ることが企図される。
【発明を実施するための形態】
【0012】
以下では、本開示の実施形態を参照する。しかしながら、本開示は、具体的に説明される実施形態に限定されないことを理解されたい。その代わりに、以下の特徴及び要素の任意の組み合わせが、異なる実施形態に関連するか否かに関わらず、本開示を実施及び実践すると企図される。更に、本開示の実施形態は、他の可能な解決策に勝る、及び/又は先行技術に勝る利点を達成し得るが、特定の利点が所与の実施形態によって達成されるか否かは、本開示を限定するものではない。したがって、以下の態様、特徴、実施形態、及び利点は、単なる例示に過ぎず、請求項(複数可)に明示的に記載されている場合を除いて、添付の特許請求の範囲の要素又は限定と見なされない。同様に、「本開示」への言及は、本明細書に開示される任意の発明の主題の一般化として解釈されるものではなく、請求項に明示的に記載されている場合を除いて、添付の特許請求の範囲の要素又は限定であると見なされるべきではない。
【0013】
本開示は、概して、ソリッドステートドライブ(SSD)などのデータ記憶デバイスに関し、より具体的には、HMB喪失からの回復に関する。データ記憶デバイスは、メモリデバイス、及びメモリデバイスに結合されたコントローラを含む。コントローラは、ホストデバイスのホストメモリバッファ(HMB)への接続が失われたと判定し、メモリデバイスからフラッシュ変換レイヤ(FTL)テーブルの最新のコピーをロードし、FTLテーブルの最新のコピーに対する1つ以上の更新を生成し、コマンドフェッチを再有効化するように構成される。コントローラは、判定の際に、コマンドデータベース内の1つ以上のコマンドにエラー状態をマークするように更に構成されている。接続のブートの後、コントローラは、メモリデバイスからFTLテーブルをHMBにコピーし、コマンドを処理し、HMBとメモリデバイスとの間のFTLテーブル差を保存し、メモリデバイス内のFTLテーブルを更新するように更に構成される。
【0014】
図1は、特定の実施形態による、ホストデバイス104がデータ記憶デバイス106と通信する記憶システム100を示す概略ブロック図である。例えば、ホストデバイス104は、データ記憶デバイス106に含まれる不揮発性メモリ(NVM)110を利用して、データを記憶及び取得し得る。ホストデバイス104は、ホストメモリバッファ(HMB)150を含むホストDRAM138を備える。HMB150は、データ記憶デバイス106のコントローラ108による使用のために割り当てられたホストDRAM138のセクションである。HMB150は、制御情報、メタデータ、パリティデータ、エラー訂正コード、及び一般にコントローラ108のメモリ又は同様のメモリに記憶され得る他のデータを記憶し得る。いくつかの実施例では、記憶システム100は、記憶アレイとして動作し得るデータ記憶デバイス106などの複数の記憶デバイスを含み得る。例えば、記憶システム100は、ホストデバイス104のための大量記憶デバイスとして集合的に機能する安価/独立ディスクの冗長アレイ(RAID)として構成された複数のデータ記憶デバイス106を含み得る。
【0015】
ホストデバイス104は、データ記憶デバイス106などの1つ以上の記憶デバイスに及び/又はからデータを記憶及び/又は取得し得る。
図1に例示されるように、ホストデバイス104は、インターフェース114を介してデータ記憶デバイス106と通信し得る。ホストデバイス104は、コンピュータサーバ、ネットワーク接続記憶(NAS)ユニット、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話機、いわゆる「スマート」パッド、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、又はデータ記憶デバイスからデータを送信又は受信することができる他のデバイスなど、広範なデバイスのうちのいずれも備え得る。
【0016】
データ記憶デバイス106は、コントローラ108、NVM110、電源111、揮発性メモリ112、インターフェース114、及び書き込みバッファ116を含む。いくつかの実施例では、データ記憶デバイス106は、明瞭化のために
図1に示されていない追加の構成要素を含み得る。例えば、データ記憶デバイス106は、データ記憶デバイス106の構成要素が機械的に取り付けられ、データ記憶デバイス106の構成要素を電気的に相互接続する導電性トレースを含む、プリント回路基板(PCB)を含み得る。いくつかの実施例では、データ記憶デバイス106の物理的寸法及びコネクタ構成は、1つ以上の標準的フォームファクタに適合し得る。いくつかの例示的な標準的フォームファクタとしては、3.5”データ記憶デバイス(例えば、HDD又はSSD)、2.5”データ記憶デバイス、1.8”データ記憶デバイス、周辺部品相互接続(PCI)、PCI拡張(PCI-X)、PCIエクスプレス(PCIe)(例えば、PCIe×1、×4、×8、×16、PCIeミニカード、ミニPCIなど)が挙げられるが、これらに限定されない。いくつかの実施例では、データ記憶デバイス106は、ホストデバイス104のマザーボードに直接結合(例えば、直接半田付け又はコネクタにプラグ接続される)され得る。
【0017】
インターフェース114は、ホストデバイス104とデータを交換するためのデータバス、及びホストデバイス104とコマンドを交換するための制御バスのうちの一方又は両方を含み得る。インターフェース114は、任意の好適なプロトコルに従って動作し得る。例えば、インターフェース114は、以下のプロトコルのうちの1つ以上:先進技術アタッチメント(ATA)(例えば、シリアルATA(SATA)及びパラレルATA(PATA))、ファイバチャネルプロトコル(FCP)、シリアル接続SCSI(SAS)、PCI、及びPCIe、スモールコンピュータシステムインターフェース(SCSI)、不揮発性メモリエクスプレス(NVMe)、OpenCAPI、GenZ、キャッシュ・コヒーレント・インターフェース・アクセラレータ(CCIX)、オープンチャネルSSD(OCSSD)などに従って動作し得る。インターフェース114(例えば、データバス、制御バス、又はその両方)は、コントローラ108に電気的に接続され、ホストデバイス104とコントローラ108との間に電気的接続を提供し、ホストデバイス104とコントローラ108との間でデータを交換することを可能にする。いくつかの実施例では、インターフェース114の電気的接続はまた、データ記憶デバイス106がホストデバイス104から電力を受け取り得る。例えば、
図1に例示されるように、電源111は、インターフェース114を介してホストデバイス104から電力を受け取り得る。
【0018】
NVM110は、複数のメモリデバイス又はメモリユニットを含み得る。NVM110は、データを記憶及び/又は取得するように構成され得る。例えば、NVM110のメモリユニットは、データと、データを記憶するようにメモリユニットに命令するメッセージと、をコントローラ108から受信し得る。同様に、メモリユニットは、データを取得するようにメモリユニットに命令するメッセージをコントローラ108から受信し得る。いくつかの実施例では、メモリユニットの各々は、ダイと称され得る。いくつかの実施例では、NVM110は、複数のダイ(すなわち、複数のメモリユニット)を含み得る。いくつかの実施例では、各メモリユニットは、比較的大量のデータ(例えば、128MB、256MB、512MB、1GB、2GB、4GB、8GB、16GB、32GB、64GB、128GB、256GB、512GB、1TBなど)を記憶するように構成され得る。
【0019】
いくつかの実施例では、各メモリユニットは、フラッシュメモリデバイス、相変化メモリ(PCM)デバイス、抵抗ランダムアクセスメモリ(ReRAM)デバイス、磁気抵抗ランダムアクセスメモリ(MRAM)デバイス、強誘電性ランダムアクセスメモリ(F-RAM)、ホログラフィックメモリデバイス、及び任意の他の種類の不揮発性メモリデバイスなどの、任意の種類の不揮発性メモリデバイスを含み得る。
【0020】
NVM110は、複数のフラッシュメモリデバイス又はメモリユニットを備え得る。NVMフラッシュメモリデバイスは、NAND又はNORベースのフラッシュメモリデバイスを含み得、各フラッシュメモリセルのトランジスタの浮遊ゲートに含まれる電荷に基づいてデータを記憶し得る。NVMフラッシュメモリデバイスでは、フラッシュメモリデバイスは、複数のダイに分割され得、複数のダイの各ダイは複数の物理又は論理ブロックを含み、これらは更に複数のページに分割され得る。特定のメモリデバイス内の複数のブロックの各ブロックは、複数のNVMセルを含み得る。NVMセルの行は、複数のページの各ページを定義するためにワード線を使用して電気的に接続され得る。複数のページの各々におけるそれぞれのセルは、それぞれのビット線に電気的に接続され得る。更に、NVMフラッシュメモリデバイスは、2D又は3Dデバイスであってもよく、単一レベルセル(SLC)、マルチレベルセル(MLC)、トリプルレベルセル(TLC)、又はクアッドレベルセル(QLC)であってもよい。コントローラ108は、ページレベルで、NVMフラッシュメモリデバイスにデータを書き込み、かつNVMフラッシュメモリデバイスからデータを読み取り得、ブロックレベルで、NVMフラッシュメモリデバイスからデータを消去し得る。
【0021】
電源111は、データ記憶デバイス106の1つ以上の構成要素に電力を提供し得る。標準モードで動作するとき、電源111は、ホストデバイス104などの外部デバイスによって提供される電力を使用して、1つ以上の構成要素に電力を提供し得る。例えば、電源111は、インターフェース114を介してホストデバイス104から受け取った電力を使用して、1つ以上の構成要素に電力を提供し得る。いくつかの実施例では、電源111は、外部デバイスから電力を受け取ることを停止する場合などのシャットダウンモードで動作するときに、1つ以上の構成要素に電力を供給するように構成された1つ以上の電力貯蔵構成要素を含み得る。このように、電源111は、積載電源として機能し得る。1つ以上の電力貯蔵構成要素のいくつかの例としては、コンデンサ、超コンデンサ、バッテリなどが挙げられるが、これらに限定されない。いくつかの実施例では、1つ以上の電力貯蔵構成要素によって貯蔵され得る電力の量は、1つ以上の電力貯蔵構成要素のコスト及び/又はサイズ(例えば、面積/体積)の関数であり得る。換言すれば、1つ以上の電力貯蔵構成要素によって貯蔵される電力の量が増加するにつれて、1つ以上の電力貯蔵構成要素のコスト及び/又はサイズも増加する。
【0022】
揮発性メモリ112は、情報を記憶するためにコントローラ108によって使用され得る。揮発性メモリ112は、1つ以上の揮発性メモリデバイスを含み得る。いくつかの実施例では、コントローラ108は、揮発性メモリ112をキャッシュとして使用し得る。例えば、コントローラ108は、キャッシュされた情報がNVM110に書き込まれるまで、揮発性メモリ112にキャッシュされた情報を記憶してもよい。
図1に例示されるように、揮発性メモリ112は、電源111から受け取った電力を消費し得る。揮発性メモリ112の例としては、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックRAM(SRAM)、及び同期ダイナミックRAM(SDRAM(例えば、DDR1、DDR2、DDR3、DDR3L、LPDDR3、DDR4、LPDDR4など))が挙げられるが、これらに限定されない。
【0023】
コントローラ108は、データ記憶デバイス106の1つ以上の動作を管理してもよい。例えば、コントローラ108は、NVM110からのデータの読み取り及び/又はNVM110へのデータの書き込みを管理し得る。いくつかの実施形態では、データ記憶デバイス106がホストデバイス104から書き込みコマンドを受信すると、コントローラ108は、データ記憶コマンドを開始して、データをNVM110に記憶し、データ記憶コマンドの進捗を監視し得る。コントローラ108は、記憶システム100の少なくとも1つの動作特性を判定し、少なくとも1つの動作特性をNVM110に記憶し得る。いくつかの実施形態では、データ記憶デバイス106がホストデバイス104から書き込みコマンドを受信すると、コントローラ108は、データをNVM110に送信する前に、内部メモリ又は書き込みバッファ116内の書き込みコマンドに関連付けられたデータを一時的に記憶する。
【0024】
図2Aは、特定の実施形態による、DRAM所有を示すデータ記憶デバイス202の概略図である。データ記憶デバイス202は、
図1のデータ記憶デバイス106であってもよい。データ記憶デバイス202は、
図1の揮発性メモリ112であり得るDRAM204と、
図1のコントローラ108であり得るDRAMコントローラ206とを含む。DRAM204は、SRAMなどの任意の適用可能な揮発性メモリとすることができることを理解されたい。DRAM204にSECDED検出二重エラーのような致命的な故障は発生した場合、その故障はDRAMコントローラ206がデータ記憶デバイス202のリセットを開始することである。したがって、DRAMコントローラ206は、DRAM204を制御する。
【0025】
図2Bは、特定の実施形態による、HMB所有を示す
図2Aのデータ記憶デバイス202の概略図である。データ記憶デバイスは、HMBコントローラ256に結合された、
図1のインターフェース114であり得るPCIE、MAC、及びPHYモジュール254を含む。PCIE、MAC、及びPHYモジュール254は、
図1のホストデバイス104などのホストデバイスのホストPCIE及びホストDRAM252に結合され、ホストDRAMはHMBを含む。ホストPCIE及びホストDRAM252のHMBと共に動作するとき、ホストデバイス104は、HMBへのHMBコントローラ256アクセスを無効にし得るか、又はHMBとHMBコントローラ256との間の接続が中断され得る。接続が中断されたとき、データ記憶デバイス202は、ホストデバイス104に「ブルースクリーン」効果又はタイムアウトシナリオを経験させることなく安全に回復することができなければならない。回復は、SECDED、認証エラー、リンク問題、及びDRAMデータを無効にする他の場合に完了することができる。「ブルースクリーン」効果又はタイムアウトシナリオは、PCIEレベルでホストデバイス104に応答しないことによって、又はNVMeレベルでコマンドをタイムアウトすることによって引き起こされ得る。
【0026】
図3は、特定の実施形態による、NVMeコマンドフロー300の概略図である。NVMeコマンドフロー300は、
図1のホストデバイス104であり得るホストデバイス302と、
図1のデータ記憶デバイス106であり得るデータ記憶デバイス304とを含む。ホストデバイス302が読み取りコマンド又は書き込みコマンドを生成すると、読み取りコマンド又は書き込みコマンドは、ホストデバイス302の送信キューに記憶される。送信キューは、
図1のホストDRAM138などのホストDRAMにおいて実装され得る。ホストデバイス302は、データ記憶デバイス304の送信キュードアベルを鳴らし、これは、データ記憶デバイス304、又はより具体的には、データ記憶デバイス304のコントローラ108などのコントローラに、送信キューがキューに入れられたコマンドを有することを示す。
【0027】
データ記憶デバイス304は、ホストデバイス302の送信キューからコマンドを読み取ることによって応答する。一例では、コマンドは読み出しコマンドであり、関連するデータが、データ記憶デバイス304の
図1のNVM110などのメモリデバイスから読み出され、ホストデバイス302に転送して戻される。読み出しコマンドを完了した後、データ記憶デバイス304のコントローラ108は、完了したコマンドの完了メッセージを生成し、完了メッセージを、ホストDRAM138内にあり得るホストデバイス302の完了キューに書き込む。また、データストレージ304は、ホストデバイス302に割り込みメッセージを送信する。ホストデバイス302は、完了メッセージ及び割り込みメッセージの両方を受信した後、コマンドが完了したことを示す。ホストデバイス302は、データ記憶デバイス304のコマンド完了キュードアベルを鳴らすことによって、コマンドの完了を確認応答する。
【0028】
図4は、特定の実施形態による、データ記憶デバイス412がホストデバイス402の記憶デバイスとして機能し得る記憶システム400を示す概略ブロック図である。記憶システム400の態様は、
図1の記憶システム100と同様であってもよい。記憶システム400は、簡略化のために図示されていない追加の構成要素及びフローを含んでもよいことを理解されたい。ホストデバイス402は、ホストDRAM404及びホストCPU(Central Processing Unit)410を含む。ホストDRAM404は、送信キュー及び完了キューを含み得るコマンドキュー406と、データ408とを含む。ホストCPU410は、少なくとも、データ記憶デバイス412の割り込み状態機械であってもよい割り込みマネージャ428から受信した割り込みメッセージを処理するように構成される。コマンドキュー406は、データ記憶デバイス412のコントローラ414によってフェッチされるコマンド、並びにコントローラ414の、完了状態マシンであってもよい完了マネージャ426によって送信される完了メッセージを記憶する。
【0029】
データ記憶デバイス412は、コントローラ414と、
図1のNVM438であってもよいNVM110とを含む。コントローラ414は、PCIeプロトコルインターフェース416と、制御パス418と、コマンドデータベース422と、データパス424とを含む。PCIeプロトコルインターフェース416は、ホストDRAM404からデータ及びコマンドをフェッチし、データ、完了メッセージ、及び割り込みメッセージをホストデバイス402に送信するように構成される。PCIeプロトコルインターフェース416がコマンドキュー406からコマンドをフェッチすると、コマンドは制御パス418に送信され、コマンドはプロセッサ420で受信される。同時に、コマンドはコマンドデータベース422に渡される。プロセッサ420がコマンドを処理及び分析した後、制御パス418は、コマンドの実行のためにデータパス424への要求を生成する。
【0030】
コマンドのデータは、データ408からPCIeプロトコルインターフェース416に転送され、PCIeインターフェース416は、データをダイレクトメモリアクセス(DMA)430に渡す。DMA430は、エンコーダ/デコーダ432、エラー訂正コード(ECC)エンジン434、及びフラッシュインターフェースモジュール(FIM)436又はDRAMなどのコントローラ414の内部メモリを介して間接的にNVM438にアクセスするように構成されてもよい。データは、他の実装形態では、別個の構成要素であり得るエンコーダ/デコーダ432に渡される。
【0031】
エンコーダ/デコーダ432は、NVM438からデータを読み取るときに、データをエラーから保護するための論理を含んでもよく、又はデータのエラーを訂正するための論理を含んでもよい。例えば、エンコーダ/デコーダ432のエンコーダは、NVM438に記憶されるべきデータを符号化し、エンコーダ/デコーダ432のデコーダは、NVM438から取り出されたデータを復号する。データを符号化することは、データ整形並びにデータ暗号化を含み得る。符号化されたデータは、エンコーダ/デコーダ432からECCエンジン434に渡される。ECCエンジン434は、符号化されたデータにECCデータをプログラムし、データがNVMから読み出されるときに、ECCデータを使用してエラーが訂正され得るようにする。いくつかの実施形態では、データパス424はまた、低密度パリティチェック(LDPC)エンジン及び/又はXORパリティエンジンを含む。次に、データはFIM436に渡され、FIMは、データをNVM438にスケジュールし、プログラムする。
【0032】
読み出しコマンドが実行されると、FIM436は、NVM438から関連データを検索し、ECCエンジン434は、その能力の範囲内で任意のエラーを訂正し、その後データをエンコーダ/デコーダ432のデコーダに渡して復号/解読する。次いで、データはDMAに渡され、PCIeプロトコルインターフェース416を介してホストDRAM404に送られる。データがホストDRAMに渡されると、完了マネージャ426は完了メッセージを生成し、その完了メッセージをコマンドキュー406の完了キューに送る。同様に、割り込みマネージャ428は、割り込みメッセージを生成し、割り込みメッセージは、ホストCPU410に送信されて、完了メッセージがコマンドキューにポストされたことをホストCPU410に通知する。
【0033】
データパス424内のデータ読み出し中にエラーがない場合、コマンドデータベース422内の読み出しコマンドは、データ転送成功インジケータで更新される。しかしながら、データパス424内のデータ読み出し中にエラーがある場合、コマンドデータベース422内の読み出しコマンドは、エラーインジケータと共に転送されたデータで更新される。
【0034】
図5は、特定の実施形態による、ハードウェア側550及びファームウェア側560からコマンドを実行する方法500を示すフロー図である。方法500は、
図4のコントローラ414によって実施することができる。したがって、例示的な目的で、記憶システム400の態様は、本明細書の説明において参照され得る。
【0035】
ブロック502において、コントローラ414は、ホストデバイス402からコマンドを受信する。コマンドは、コマンドキュー406、又はより具体的には、コマンドキュー406の送信キューからフェッチされ得る。ブロック504において、プロセッサ420は、フェッチされたコマンドに関連付けられたネームスペース及びホスト論理ブロックアドレス(LBA)を抽出する。ブロック506において、コントローラ414は、DRAM、HMB、又はNVM438のいずれかに記憶された変換テーブル(例えば、フラッシュ変換レイヤ(FTL)テーブル)をフェッチする。いくつかの例では、NVM438のアクセス時間が大きすぎて性能要件を満たすことができない場合があるので、変換テーブルは、代わりにDRAM又はHMBに記憶され得る。したがって、コントローラ414は、変換テーブルの関連部分がキャッシュされているDRAM又はHMBから関連する変換テーブルをフェッチすることができる。ブロック506において、プロセッサ420は、フェッチされた変換テーブルを使用して、NVM438上のフェッチされたコマンドに関連付けられた関連位置を計算する。ブロック508において、ファームウェア側560は、ハードウェア側550のハードウェアエンジンをトリガする。
【0036】
ブロック510において、コントローラ414は、コマンドが正常に完了したかどうかを判定する。ブロック510においてコマンドが正常に完了した場合、ブロック512において、完了マネージャ426などのハードウェアは、完了メッセージをホストデバイス402に返送する。しかしながら、ブロック510においてコマンドが正常に完了しなかった場合、ファームウェアは、失敗した完了メッセージをホストデバイスに送信する。失敗した完了メッセージは、失敗したコマンドに関連付けられたエラー情報を含み得る。ファームウェア(例えば、プロセッサ420)は、ハードウェアエンジン(例えば、データパス424)をトリガすることを担い得る。
【0037】
図6Aは、特定の実施形態による、
図4のホストデバイス402などのホストデバイスによって発行されるホストコマンドの方法600を示すフロー図である。方法600は、
図4のコントローラ414によって実施することができる。したがって、例示的な目的で、記憶システム400の態様は、本明細書の説明において参照され得る。
【0038】
ブロック602において、ホストデバイス402はコマンドを発行する。コマンドは、送信キューに記憶されてもよく、ホストデバイス402は、送信キューがフェッチされるキューコマンドを有することをデータ記憶デバイス412に通知するために、データ記憶デバイス412にドアベルを送信する。ブロック604において、ホストデバイス402は、コマンドが正常に完了したかどうかを判定する。例えば、コントローラ414の完了マネージャ426は、フェッチされたコマンドの実行に応答して、成功完了インジケータを有する完了メッセージ、又はエラーインジケータを有する完了をホストデバイス402に発行し得る。コマンドが正常に完了していない場合、ホストデバイス402は、ブロック606において、コマンドを再送する(例えば、別のドアベルを発行する)ことによってコマンドを再試行する。ブロック608において、ホストデバイス402は、再試行されたコマンドが正常に完了したかどうかを判定する。
【0039】
ブロック604又はブロック608のいずれかにおいてコマンドが正常に完了した場合、方法600はブロック602に戻る。しかしながら、ブロック608においてコマンドが正常に完了しなかった場合、ブロック610において、ホストデバイス402は、コマンドの再試行制限に達したかどうかを判定する。例えば、再試行制限は1回の再試行であってもよい。再試行制限は、システム性能に対して最適化又は調整された任意の正の整数であってよいことを理解されたい。いくつかの例では、コントローラ414は、ホストデバイス402が再試行限界に達したことに起因して、接続のリブート(例えば、ホストデバイス402によって発行されたリブートコマンド)に備えるための指示を受信することができる。
【0040】
ブロック610で再試行制限に達していない場合、ホストデバイス402はブロック606でコマンドを再試行する。しかしながら、ブロック610で再試行制限に達した場合、データ記憶デバイス412とホストデバイス402との間の接続がリブートされる。いくつかの例では、ホストデバイス402は、データ記憶デバイス412をリブートすることを決定することができる。接続がリブートされるとき、HMBは、コントローラ414によって一時的にアクセス不可能であり得る。したがって、
図1のHMB150などのHMBに記憶された任意のFTLテーブル、並びに他の情報は、接続が再確立されるまでアクセス不可能であり得る。
【0041】
図6Bは、特定の実施形態による、
図4のデータ記憶デバイス412などのデータ記憶デバイスによってHMB喪失に対処する方法625を示すフロー図である。方法625は、
図4のコントローラ414によって実施することができる。したがって、例示的な目的で、記憶システム400の態様は、本明細書の説明において参照され得る。
【0042】
ブロック626において、コントローラ414は、HMB150の喪失があったと判定する。例えば、HMB150喪失は、
図6Aのブロック612におけるリブート、又は接続チャネルにおける接続リセット若しくはノイズなどの任意の他の適用可能なHMB150接続喪失であってもよい。ブロック628において、コントローラ414は、コマンドデータベース422内にあり、正常に実行されなかったか、又は成功完了インジケータを有さないすべてのコマンドを、エラー状態(例えば、エラーインジケータ)でマークする。ブロック628において、コントローラ414はまた、HMB150への接続が失われたと判定すると、ホストデバイス402からのコマンドのフェッチを無効にする。ブロック630において、FTLテーブル(すなわち、変換テーブル)の最後のコピーがNVM438からロードされる。NVM438からロードされたFTLテーブルの最後のコピーは、HMB150に記憶されたFTLテーブルと同じでなくてもよいこと考えられる。
【0043】
ブロック632で、コントローラ414は、ロードされたFTLテーブル及びコマンドデータベース422内のコマンドを使用して、最新のFTLテーブルを再作成する。生成されたFTLテーブルに対する1つ以上の更新は、NVM438に記憶され、HMB150接続が回復されたときにHMB150に転送され得る。ブロック634において、1つ以上のコマンドがホストデバイス402からフェッチ又は再フェッチされ得るように、コマンドフェッチが再有効化される。ホストデバイス402は、失敗したコマンドの正常な完了を得るために、コントローラ414にホストデバイス402から失敗したコマンドをフェッチさせることによって、失敗したコマンド(例えば、エラー状態でマークされたコマンド)を再試行し得る。
【0044】
図6Cは、特定の実施形態による、
図4のデータ記憶デバイス412などのデータ記憶デバイスによるブート後処理の方法650を示すフロー図である。方法650は、
図4のコントローラ414によって実施することができる。したがって、例示的な目的で、記憶システム400の態様は、本明細書の説明において参照され得る。
【0045】
ブロック652において、HMB150への接続がブートされる。ブロック654において、FTLテーブルは、NVM438からHMB150にコピーされる。コピーすることは、FTLテーブル全体をNVM438からHMB150にコピーすること、又はFTLテーブルの更新された部分のみをNVM438からHMB150にコピーすることを含むことができる。例えば、更新された部分は、NVM438に配置されたFTLテーブルとHMB150に配置されたFTLテーブルとの間の差であってもよい。更に、データ記憶デバイス412の動作中に、FTLテーブルに対する更新は、ローカルSRAMの履歴バッファ、又はデータ記憶デバイス412のDRAMなどの任意の他の適用可能なバッファに記憶され得る。
【0046】
例えば、ブロック656において、コントローラ414がキューに入れられたコマンド又はフェッチされたコマンドに作用すると、FTLテーブル更新が生成される。ブロック658において、FTLテーブル更新(すなわち、HMB150とNVM438との間の差)が、SRAM又は任意の他の適用可能なバッファ並びにHMB150に記憶される。いくつかの例では、バッファはDRAMであり得る。HMB150へのアクセスは、一般に、NVM438へのアクセスよりも高速であり得るので、FTL更新は、SRAM及びHMB150の両方に記憶される。したがって、HMB150は、NVM438と比較して、FTLテーブルのより最新のバージョンを有することができる。
【0047】
ブロック660において、コントローラ414は、NVM438が、NVM438に記憶されたFTLテーブルを更新してHMB150に記憶されたFTLテーブルに一致させるための更新を必要とするかどうかを判定する。例えば、コントローラ414は、強制ユニットアクセス(FUA)コマンド、履歴バッファが一杯になること、トランザクションの数又は経過時間による周期的な更新、実行されるべきコマンドの欠如によって引き起こされ得るNVM438のアイドリング、又は履歴バッファがパージされることに起因して、NVM438が更新される必要があると判定してもよい。ブロック660でNVM438の更新が必要とされない場合、方法650はブロック656に戻る。しかしながら、ブロック660においてNVM438の更新が必要とされる場合、コントローラ414は、ブロック662において、HMB150に記憶されたFTLテーブルに一致するようにNVM438内のFTLテーブルを更新する。一例では、更新は、HMB150又はSRAMのいずれかに記憶されたFTLテーブルから更新された部分を、NVM438のFTLテーブルにコピーすることができる。別の例では、HMB150のFTLテーブルとNVM438のFTLテーブルとの間の差が決定されてもよく、NVM438のFTLテーブルは、決定された差に基づいて更新されてもよい。
【0048】
ホストデバイスにコマンドを再試行させるために、エラー状態を有するコマンドを完了することによって、ホストデバイスをタイムアウトさせることなく、HMB喪失からの回復を実行することができる。
【0049】
一実施形態では、データ記憶デバイスは、メモリデバイスと、メモリデバイスに結合されたコントローラと、を含む。コントローラは、ホストデバイスのホストメモリバッファ(HMB)への接続が失われたと判定し、メモリデバイスからフラッシュ変換レイヤ(FTL)テーブルの最新のコピーをロードし、FTLテーブルの最新のコピーに対する1つ以上の更新を生成し、コマンドフェッチを再有効化するように構成される。
【0050】
コントローラは、ホストデバイスのHMBへの接続が失われたと判定すると、コマンドフェッチを無効にするように更に構成されている。フェッチを再有効化することは、ホストデバイスから1つ以上のコマンドをフェッチすることを含む。メモリデバイスは不揮発性メモリデバイスである。コントローラは、FTLテーブルをHMB及びメモリデバイスの両方に記憶するように構成されている。生成された1つ以上の更新は、メモリデバイスに記憶される。コントローラは、HMBへの接続の回復時に、メモリデバイスに記憶された生成された1つ以上の更新を用いて、HMBに記憶されたFTLテーブルを更新するように構成されている。コントローラは、判定の際に、コマンドデータベース内の1つ以上のコマンドにエラー状態をマークするように更に構成されている。エラー状態は、マークされた1つ以上のコマンドを、実行されるコントローラに送信することを再試行することをホストデバイスに提案する。コントローラは、マークされた1つ以上のコマンドを再有効化し、ホストデバイスから受信した後に、マークされた1つ以上のコマンドを実行するように更に構成される。
【0051】
別の実施形態では、データ記憶デバイスは、メモリデバイスと、メモリデバイスに結合されたコントローラと、を含む。コントローラは、コントローラとホストデバイスのホストメモリバッファ(HMB)との間の接続が回復されたことを判定し、メモリデバイスからHMBにフラッシュ変換レイヤ(FTL)テーブルをコピーし、コピーはコントローラとHMBとの間の接続が回復された後に行われ、コマンドデータベースに記憶された1つ以上のコマンドを実行するように構成される。
【0052】
1つ以上のコマンドは、1つ以上のマークされたコマンドを含む。1つ以上のマークされたコマンドは、HMB喪失によるエラー状態でマークされたコマンドを含む。コントローラは、実行された1つ以上のコマンドを用いて、HMBに記憶されたFTLテーブルを更新するように更に構成されている。コントローラは、メモリデバイスに記憶されたFTLテーブルが、HMBに記憶されたFTLテーブルと異なると判定するように更に構成されている。コントローラは、メモリデバイスに記憶されたFTLテーブルがHMBに記憶されたFTLテーブルと異なると判定すると、メモリデバイスに記憶されたFTLテーブルを、HMBに記憶されたFTLテーブルで更新するように更に構成されている。コントローラは、HMBに記憶されたFTLテーブルが、メモリデバイスに記憶されたFTLテーブルと異なると判定するように更に構成されている。コピーすることは、HMBに記憶されたFTLテーブルが、メモリデバイスに記憶されたFTLテーブルと異なると決定すると、メモリデバイスに記憶されたFTLテーブルからの変更を用いて、HMBに記憶されたFTLテーブルを更新することを含む。
【0053】
別の実施形態では、データ記憶デバイスは、メモリ手段と、メモリ手段に結合されたコントローラと、を含む。コントローラは、第1の時間にホストデバイスからコマンドを受信し、コマンドに対する再試行提案を有するエラー指示をホストデバイスに送信し、第2の時間にホストデバイスからコマンドを受信し、コマンドを実行するように構成される。コントローラは、エラー指示を送ることとコマンドを実行することとの間に、メモリ手段からフラッシュ変換レイヤ(FTL)テーブルをロードするように更に構成される。
【0054】
コントローラは、ホストメモリバッファ(HMB)への接続が失われたと判定するように更に構成されている。コントローラは、再試行制限に達したことに起因して、ホストデバイスからリブート動作の指示を受信するように更に構成されている。コントローラは、リブート動作のための指示に起因して、ホストデバイスからリブートコマンドを受信するように更に構成されている。
【0055】
上記は本開示の実施形態を目的とするが、本開示の他の及び更なる実施形態が、その基本的範囲から逸脱することなく考案され得、その範囲は、以下の特許請求の範囲によって決定される。
【手続補正書】
【提出日】2024-06-03
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
データ記憶デバイスであって、
メモリデバイスと、
前記メモリデバイスに結合されたコントローラであって、前記コントローラは、
ホストデバイスのホストメモリバッファ(HMB)への接続が失われたと判定し、
前記ホストデバイスと前記データ記憶デバイスとの間の接続はリブートされ、前記リブートは、コマンドの再試行限界に達したことに応答して行われ、前記コマンドの再試行は、前記コントローラによって前記ホストデバイスに送られる再試行提案に応答して前記ホストデバイスから前記データ記憶デバイスに前記コマンドを再送信することを含み、前記HMBは、フラッシュ変換レイヤ(FTL)テーブルの更新されたコピーを記憶しており、
前記メモリデバイスから
前記コントローラへ前記FT
Lテーブルの最新のコピーをロードし、
前記FTLテーブルの前記最新のコピーは、前記FTLテーブルの前記更新されたコピーの前のバージョンであり、
前記FTLテーブルの前記最新のコピーに対する1つ以上の更新を生成し、
コマンドフェッチを再有効化する、ように構成されている、コントローラと、
を備える、データ記憶デバイス。
【請求項2】
前記コントローラは、前記ホストデバイスの前記HMBへの前記接続が失われたと判定すると、前記コマンドフェッチを無効にするように更に構成されている、請求項1に記載のデータ記憶デバイス。
【請求項3】
前記フェッチを再有効化することは、前記ホストデバイスから1つ以上のコマンドをフェッチすることを含む、請求項1に記載のデータ記憶デバイス。
【請求項4】
前記メモリデバイスは、不揮発性メモリデバイスである、請求項1に記載のデータ記憶デバイス。
【請求項5】
前記コントローラは、前記FTLテーブルをHMB及び前記メモリデバイスの両方に記憶するように構成されている、請求項1に記載のデータ記憶デバイス。
【請求項6】
前記生成された1つ以上の更新は、前記メモリデバイスに記憶される、請求項1に記載のデータ記憶デバイス。
【請求項7】
前記コントローラは、前記HMBへの前記接続の回復時に、前記メモリデバイスに記憶された前記生成された1つ以上の更新を用いて、前記HMBに記憶されたFTLテーブルを更新するように構成されている、請求項6に記載のデータ記憶デバイス。
【請求項8】
前記コントローラは、前記判定の際に、コマンドデータベース内の1つ以上のコマンドにエラー状態をマークするように更に構成されている、請求項1に記載のデータ記憶デバイス。
【請求項9】
前記エラー状態は、前記マークされた1つ以上のコマンドを前記コントローラに送信して実行することを再試行することを前記ホストデバイスに提案し、前記コントローラは、前記マークされた1つ以上のコマンドを前記ホストデバイスから前記再有効化及び受信した後に、前記マークされた1つ以上のコマンドを実行するように更に構成されている、請求項8に記載のデータ記憶デバイス。
【請求項10】
データ記憶デバイスであって、
メモリデバイスと、
前記メモリデバイスに結合されたコントローラであって、前記コントローラは、
前記コントローラとホストデバイスのホストメモリバッファ(HMB)との間の接続が回復されたと判定し、
前記ホストデバイスと前記データ記憶デバイスとの間の接続はリブートされ、前記リブートは、コマンドの再試行限界に達したことに応答して行われ、前記コマンドの再試行は、前記コントローラによって前記ホストデバイスに送られる再試行提案に応答して前記ホストデバイスから前記データ記憶デバイスに前記コマンドを再送信することを含み、
前記メモリデバイスから前記HMBに
第1のフラッシュ変換レイヤ(FTL)テーブルをコピーし、前記コピーすることは、前記コントローラと前記HMBとの間の前記接続が回復された
との判定に応答して行われ、
前記HMBは第2のFTLテーブルを記憶し、前記第1のFTLテーブルと前記第2のFTLテーブルとは異なるバージョンであり、
コマンドデータベースに記憶された1つ以上のコマンドを実行する、ように構成されている、コントローラと、
を備える、データ記憶デバイス。
【請求項11】
前記1つ以上のコマンドは、1つ以上のマークされたコマンドを含み、前記1つ以上のマークされたコマンドは、前記HMB喪失によるエラー状態でマークされたコマンドを含む、請求項10に記載のデータ記憶デバイス。
【請求項12】
前記コントローラは、前記実行された1つ以上のコマンドを用いて、前記HMBに記憶された前記
第2のFTLテーブルを更新するように更に構成されている、請求項11に記載のデータ記憶デバイス。
【請求項13】
前記コントローラは、前記メモリデバイスに記憶された前記
第1のFTLテーブルが、前記HMBに記憶された前記
第2のFTLテーブルと異なると判定するように更に構成されている、請求項12に記載のデータ記憶デバイス。
【請求項14】
前記コントローラは、前記メモリデバイスに記憶された前記
第1のFTLテーブルが前記HMBに記憶された前記
第2のFTLテーブルと異なると前記判定すると、前記メモリデバイスに記憶された前記
第1のFTLテーブルを、前記HMBに記憶された前記
第2のFTLテーブルで更新するように更に構成されている、請求項13に記載のデータ記憶デバイス。
【請求項15】
前記コントローラは、前記HMBに記憶された前記
第2のFTLテーブルが、前記メモリデバイスに記憶された前記
第1のFTLテーブルと異なると判定するように更に構成されている、請求項10に記載のデータ記憶デバイス。
【請求項16】
前記コピーすることは、前記HMBに記憶された前記
第2のFTLテーブルが、前記メモリデバイスに記憶された前記
第1のFTLテーブルと異なると決定すると、前記メモリデバイスに記憶された前記
第1のFTLテーブルからの変更を用いて、前記HMBに記憶された前記
第2のFTLテーブルを更新することを含む、請求項15に記載のデータ記憶デバイス。
【請求項17】
データ記憶デバイスであって、
メモリ手段と、
前記メモリ手段に結合されたコントローラであって、前記コントローラは、
第1の時間にホストデバイスからコマンドを受信し、
前記コマンドに対する再試行提案を有するエラー指示を前記ホストデバイスに送信し、
前記ホストデバイスと前記データ記憶デバイスとの間の接続は、コマンドの再試行限界に達したことに応答してリブートされ、
前記接続がリブートされた後、前記再試行提案を送信することに応答して第2の時間に前記ホストデバイスから前記コマンドを受信し、
前記第2の時間に前記ホストデバイスから前記コマンドを受信することに応答して前記コマンドを実行し、前記エラー指示を送ることと前記コマンドを実行することとの間に、前記コントローラは、前記メモリ手段からフラッシュ変換レイヤ(FTL)テーブルをロードするように構成されている、コントローラと、
を備える、データ記憶デバイス。
【請求項18】
前記コントローラは、ホストメモリバッファ(HMB)への接続が失われたと判定するように更に構成されている、請求項17に記載のデータ記憶デバイス。
【請求項19】
前記コントローラは、
前記再試行制限に達したことに起因して、前記ホストデバイスからリブート動作の指示を受信するように更に構成されている、請求項17に記載のデータ記憶デバイス。
【請求項20】
前記コントローラは、前記リブート動作のための前記指示に起因して、前記ホストデバイスからリブートコマンドを受信するように更に構成されている、請求項19に記載のデータ記憶デバイス。
【国際調査報告】