IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ウェスタン デジタル テクノロジーズ インコーポレーテッドの特許一覧

特表2024-525777ホストメモリバッファキャッシュ管理
<>
  • 特表-ホストメモリバッファキャッシュ管理 図1
  • 特表-ホストメモリバッファキャッシュ管理 図2
  • 特表-ホストメモリバッファキャッシュ管理 図3
  • 特表-ホストメモリバッファキャッシュ管理 図4A
  • 特表-ホストメモリバッファキャッシュ管理 図4B
  • 特表-ホストメモリバッファキャッシュ管理 図4C
  • 特表-ホストメモリバッファキャッシュ管理 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-12
(54)【発明の名称】ホストメモリバッファキャッシュ管理
(51)【国際特許分類】
   G06F 12/0868 20160101AFI20240705BHJP
   G06F 12/00 20060101ALI20240705BHJP
   G06F 3/06 20060101ALI20240705BHJP
【FI】
G06F12/0868
G06F12/00 560B
G06F3/06 302A
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024501964
(86)(22)【出願日】2022-05-16
(85)【翻訳文提出日】2024-01-12
(86)【国際出願番号】 US2022029365
(87)【国際公開番号】W WO2023086127
(87)【国際公開日】2023-05-19
(31)【優先権主張番号】17/454,880
(32)【優先日】2021-11-15
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】504056130
【氏名又は名称】ウェスタン デジタル テクノロジーズ インコーポレーテッド
(74)【代理人】
【識別番号】100207837
【弁理士】
【氏名又は名称】小松原 寿美
(72)【発明者】
【氏名】ハーン、ジュダ ガムリエル
(72)【発明者】
【氏名】ベニスティ、シェイ
(72)【発明者】
【氏名】ナボン、アリエル
【テーマコード(参考)】
5B160
5B205
【Fターム(参考)】
5B160AB26
5B160CB01
5B205MM11
5B205MM63
(57)【要約】
本開示は、一般に、ホストメモリバッファ(HMB)キャッシュ管理に関する。HMBは一時的メモリであり、常に利用可能であるとは限らない。例えば、データ記憶デバイスとホストデバイスとの間のリンクがアクティブでない場合、データ記憶デバイスはHMBにアクセスすることができない。データ記憶デバイス内に配置されたHMBコントローラ内にHMBログを配置することにより、さもなければHMB内でアクセス不可能であるデータへのアクセスを提供する。HMBログは、メモリデバイス内のHMBキャッシュへの最後のコピー以降に発生した任意のデルタ、又はリンクが非アクティブになってから発生した任意のデルタを含む。HMBキャッシュは、HMBをミラーリングする。そうすることで、リンクがアクティブであるときだけでなく、リンクがアクティブでないときにも、HMBのデータがデータ記憶デバイスに利用可能になる。
【特許請求の範囲】
【請求項1】
データ記憶デバイスであって、
メモリデバイスと、
前記メモリデバイスに結合されたコントローラであって、前記コントローラが、
ホストメモリバッファ(HMB)と前記コントローラとの間のリンクがアクティブであるかどうかを判定し、
データをキャッシュに書き込み、前記キャッシュに書き込まれる前記データは、前記HMBに書き込まれることが意図されるデータであり、前記データはデルタデータであり、
デルタデータの存在を示すためにHMBログを更新するように構成されているコントローラとを備えるデータ記憶デバイス。
【請求項2】
前記コントローラは、前記リンクがアクティブになると、前記デルタデータでHMBを更新するように更に構成されており、前記コントローラは、前記メモリデバイス内に配置されたHMBキャッシュにデータを書き込むことによって、前記HMB内のデータをミラーリングするように更に構成されている、請求項1に記載のデータ記憶デバイス。
【請求項3】
前記判定することは、前記リンクがアクティブでないことを判定し、前記HMBログを更新すると、前記HMB内のデータは、HMBキャッシュ内に記憶されたデータとは異なる、請求項1に記載のデータ記憶デバイス。
【請求項4】
前記HMB内のデータは、HMBキャッシュ内に記憶されたデータと前記デルタデータとの組み合わせと同一である、請求項3に記載のデータ記憶デバイス。
【請求項5】
データ記憶デバイスであって、
メモリデバイスと、
前記メモリデバイスに結合されたコントローラであって、前記コントローラが、
ホストメモリバッファ(HMB)にデータを書き込む要求を受信し、
前記書き込みの指示をHMBログに記録し、
デルタデータである前記データをキャッシュに書き込み、
HMBからデータを読み取るための読み取り要求を受信し、
HMB以外の場所から要求されたデータの一部分を取り出し、
前記デルタデータを取り出し、
前記読み取り要求を満たすために、前記デルタデータ及び要求されたデータの前記一部分を返すように構成されているコントローラとを備える、データ記憶デバイス。
【請求項6】
前記コントローラは、前記コントローラと前記HMBとの間のリンクがアクティブでないことを判定するように更に構成されている、請求項5に記載のデータ記憶デバイス。
【請求項7】
前記リンクは、前記要求されたデータの前記一部分及び前記デルタデータが取り出されるときにアクティブではない、請求項6に記載のデータ記憶デバイス。
【請求項8】
前記キャッシュは、前記コントローラ内に配置される、請求項5に記載のデータ記憶デバイス。
【請求項9】
要求されたデータの前記一部分は、HMBキャッシュから取り出される、請求項5に記載のデータ記憶デバイス。
【請求項10】
前記HMBキャッシュは、前記メモリデバイス内に配置される、請求項9に記載のデータ記憶デバイス。
【請求項11】
前記コントローラは、前記HMBと前記コントローラとの間のリンクがアクティブであると判定すると、前記デルタデータをHMBに書き込むように更に構成されている、請求項5に記載のデータ記憶デバイス。
【請求項12】
前記コントローラは、前記読み取り要求を受信する前に前記デルタデータをHMBに書き込むように構成されている、請求項5に記載のデータ記憶デバイス。
【請求項13】
前記コントローラは、前記HMBログが満杯であるかどうかを判定するように構成されている、請求項5に記載のデータ記憶デバイス。
【請求項14】
前記コントローラは、前記HMBログからのデータを統合し、前記統合されたデータを前記メモリデバイスにフラッシュするように構成されている、請求項5に記載のデータ記憶デバイス。
【請求項15】
データ記憶デバイスであって、
メモリ手段と、
前記メモリ手段に結合されたコントローラであって、前記コントローラが、
ホストメモリバッファ(HMB)からデータを読み取り、ホストメモリバッファ(HMB)にデータを書き込む要求を受信し、
前記HMB以外の場所から要求されたデータを取り出すことによって前記読み取り要求を処理し、
前記HMB以外の場所にデータを書き込むことによって前記書き込み要求を処理し、前記データは、前記HMB以外の前記場所に前記データを書き込んだ後にHMBに書き込まれるように構成されているコントローラとを備える、データ記憶デバイス。
【請求項16】
前記読み取り要求に関連付けられた前記データは、HMB、前記メモリ手段、及びSRAMキャッシュ内に配置される、請求項15に記載のデータ記憶デバイス。
【請求項17】
前記コントローラは、管理エンジンを更に備え、前記管理エンジンは、HMBログ及びSRAMキャッシュを備える、請求項15に記載のデータ記憶デバイス。
【請求項18】
前記HMB以外の場所は、前記コントローラ内に配置されたキャッシュを含む、請求項15に記載のデータ記憶デバイス。
【請求項19】
前記コントローラは、前記HMB以外の前記場所へのデータの書き込みを記録するように更に構成されている、請求項15に記載のデータ記憶デバイス。
【請求項20】
前記コントローラは、前記HMBと前記コントローラとの間のリンクがアクティブであると判定すると、前記HMB以外の場所から前記HMBにデータをコピーするように更に構成されている、請求項15に記載のデータ記憶デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2021年11月15日に出願された「HOST MEMORY BUFFER CACHE MANAGEMENT」と題する米国非仮出願第17/454,880号の全内容を、あらゆる目的のために、参照により本明細書に組み込む。
【背景技術】
【0002】
本開示の実施形態は、一般に、ホストメモリバッファ(HMB)キャッシュ管理に関する。
【0003】
関連技術の説明
SSDは、PCIeインターフェースを介してホストデバイスに接続される。PCIeインターフェースは、所与の性能要件を満たすことによって、必要なプロトコルを満たすために使用される。クライアント記憶デバイスは、典型的には、論理対物理(L2P)テーブル、パリティバッファ、及び他の内部情報などのメタデータをキャッシュするために、ホストメモリバッファ(HMB)を使用する。メタデータは、コントローラのコストと性能との間のバランスをとるために、内部SRAMにページイン及びページアウトされる。HMBは、ホストデバイスによって提供され、ホストダイナミックランダムアクセスメモリ(DRAM)から割り当てられる。データ記憶デバイスは、不揮発性メモリエクスプレス(NVMe)コマンドのセットを使用する初期セットアップの後に、周辺構成要素相互接続エクスプレス(PCIe)トランザクションを使用してHMBに直接アクセスする。
【0004】
最適な性能を達成するために、データ記憶デバイスは、アイドル時間中にメンテナンスを実行する必要がある場合がある。理想的には、メンテナンスは、テーブル及び動作データのためのバッファ空間を提供するために、HMBを活用することができる。しかしながら、ホスト電力管理ガイドラインは、リンク、PCIeルートコンプレックス、及びDRAMアクティブを維持するために必要とされるホスト電力が記憶デバイス電力よりも著しく高い可能性があるので、リンク電力を制限し、ホストデバイスがアイドル状態である間、HMBの使用を妨げることが多い。
【0005】
したがって、記憶デバイスは、複数のフロー、すなわち、HMBアクセスを伴うアクティブ電力のためのフローと、HMBが制限されるか、又は使用されない同じ動作のため二次フローとを維持する必要があり得る。そのような複数のフローは、デバイスの複雑さを増大させ、ファームウェア(FW)問題に対する潜在的面を提供する。
【0006】
したがって、技術分野では、改善されたHMBキャッシュ管理が必要とされている。
【発明の概要】
【0007】
本開示は、一般に、ホストメモリバッファ(HMB)キャッシュ管理に関する。HMBは一時的メモリであり、常に利用可能であるとは限らない。例えば、データ記憶デバイスとホストデバイスとの間のリンクがアクティブでない場合、データ記憶デバイスはHMBにアクセスすることができない。データ記憶デバイス内に配置されたHMBコントローラ内にHMBログを配置することにより、さもなければHMB内でアクセス不可能であるデータへのアクセスを提供する。HMBログは、メモリデバイス内のHMBキャッシュへの最後のコピー以降に発生した任意のデルタ、又はリンクが非アクティブになってから発生した任意のデルタを含む。HMBキャッシュは、HMBをミラーリングする。そうすることで、リンクがアクティブであるときだけでなく、リンクがアクティブでないときにも、HMBのデータがデータ記憶デバイスに利用可能になる。
【0008】
一実施形態では、データ記憶デバイスは、メモリデバイスと、メモリデバイスに結合されたコントローラであって、ホストメモリバッファ(HMB)とコントローラとの間のリンクがアクティブであるかどうかを判定し、データをキャッシュに書き込み、キャッシュに書き込まれたデータは、HMBに書き込まれることが意図されたデータであり、デルタデータであり、デルタデータの存在を示すようにHMBログを更新するように構成されているコントローラとを備える。
【0009】
別の実施形態では、データ記憶デバイスは、メモリデバイスと、メモリデバイスに結合されたコントローラであって、ホストメモリバッファ(HMB)にデータを書き込むための要求を受信し、書き込みの指示をHMBログに記録し、デルタデータであるデータをキャッシュに書き込み、HMBからデータを読み取るための読み取り要求を受信し、HMB以外の場所から要求されたデータの一部分を取り出し、デルタデータを取り出し、デルタデータ、及び読み取り要求を満たすために要求されたデータの一部分を返すように構成されているコントローラとを備える。
【0010】
別の実施形態では、データ記憶デバイスは、メモリ手段と、メモリ手段に結合されたコントローラであって、ホストメモリバッファ(HMB)からデータを読み取るための要求及びホストメモリバッファ(HMB)にデータを書き込むための要求を受信し、HMB以外の場所から要求されたデータを取り出すことによって読み取り要求を処理し、HMB以外の場所にデータを書き込むことによって書き込み要求を処理し、データは、HMB以外の場所にデータを書き込んだ後にHMBに書き込まれるように構成されているコントローラとを備える。
【図面の簡単な説明】
【0011】
本開示の上記の特徴を詳細に理解することができるように、簡潔に上で要約した本開示のより具体的な説明は、実施形態を参照することによってなされ得、それらのいくつかが添付の図面に例示されている。しかしながら、添付の図面は、本開示の典型的な実施形態のみを例示し、したがって、その範囲を限定するものと見なされるべきではなく、本開示が他の同等に有効な実施形態を認め得ることに留意すべきである。
図1】特定の実施形態による、データ記憶デバイスがホストデバイスのための記憶デバイスとして機能し得る記憶システムを示す概略ブロック図である。
図2】特定の実施形態による、リンク電力管理フロー図の例証である。
図3】一実施形態による、キャッシュ管理を伴うHMBコントローラの概略図である。
図4A】一実施形態によるHMBのキャッシュ管理エンジンのロジックを示すフローチャートである。
図4B】一実施形態によるHMBのキャッシュ管理エンジンのロジックを示すフローチャートである。
図4C】一実施形態によるHMBのキャッシュ管理エンジンのロジックを示すフローチャートである。
図5】一実施形態によるHMBキャッシュ管理を示すフローチャートである。
【0012】
理解を容易にするために、図面に共通する同一の要素を示すために、可能な限り、同一の参照番号を使用している。一実施形態で開示される要素は、特に断ることなく、他の実施形態に有益に利用され得ることが企図される。
【発明を実施するための形態】
【0013】
以下では、本開示の実施形態を参照する。しかしながら、本開示は、具体的に説明される実施形態に限定されないことを理解されたい。その代わりに、以下の特徴及び要素の任意の組み合わせが、異なる実施形態に関連するか否かに関わらず、本開示を実施及び実践すると企図される。更に、本開示の実施形態は、他の可能な解決策に勝る、及び/又は先行技術に勝る利点を達成し得るが、特定の利点が所与の実施形態によって達成されるか否かは、本開示を限定するものではない。したがって、以下の態様、特徴、実施形態、及び利点は、単なる例示に過ぎず、請求項(複数可)に明示的に記載されている場合を除いて、添付の特許請求の範囲の要素又は限定と見なされない。同様に、「本開示」への言及は、本明細書に開示される任意の発明の主題の一般化として解釈されるものではなく、請求項に明示的に記載されている場合を除いて、添付の特許請求の範囲の要素又は限定であると見なされるべきではない。
【0014】
本開示は、一般に、ホストメモリバッファ(HMB)キャッシュ管理に関する。HMBは一時的メモリであり、常に利用可能であるとは限らない。例えば、データ記憶デバイスとホストデバイスとの間のリンクがアクティブでない場合、データ記憶デバイスはHMBにアクセスすることができない。データ記憶デバイス内に配置されたHMBコントローラ内にHMBログを配置することにより、さもなければHMB内でアクセス不可能であるデータへのアクセスを提供する。HMBログは、メモリデバイス内のHMBキャッシュへの最後のコピー以降に発生した任意のデルタ、又はリンクが非アクティブになってから発生した任意のデルタを含む。HMBキャッシュは、HMBをミラーリングする。そうすることで、リンクがアクティブであるときだけでなく、リンクがアクティブでないときにも、HMBのデータがデータ記憶デバイスに利用可能になる。
【0015】
図1は、特定の実施形態による、ホストデバイス104がデータ記憶デバイス106と通信する記憶システム100を示す概略ブロック図である。例えば、ホストデバイス104は、データ記憶デバイス106に含まれる不揮発性メモリ(NVM)110を利用して、データを記憶及び取得し得る。ホストデバイス104は、ホストDRAM138を備える。いくつかの実施例では、記憶システム100は、記憶アレイとして動作し得るデータ記憶デバイス106などの複数の記憶デバイスを含み得る。例えば、記憶システム100は、ホストデバイス104のための大量記憶デバイスとして集合的に機能する安価/独立ディスクの冗長アレイ(RAID)として構成された複数のデータ記憶デバイス106を含み得る。
【0016】
ホストデバイス104は、データ記憶デバイス106などの1つ以上の記憶デバイスに及び/又はからデータを記憶及び/又は取得し得る。図1に例示されるように、ホストデバイス104は、インターフェース114を介してデータ記憶デバイス106と通信し得る。ホストデバイス104は、コンピュータサーバ、ネットワーク接続記憶(NAS)ユニット、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話機、いわゆる「スマート」パッド、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、又はデータ記憶デバイスからデータを送信又は受信することができる他のデバイスなど、広範なデバイスのうちのいずれも備え得る。
【0017】
データ記憶デバイス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のマザーボードに直接結合(例えば、コネクタに直接はんだ付け、又はプラグ接続)され得る。
【0018】
インターフェース114は、ホストデバイス104とデータを交換するためのデータバス、及びホストデバイス104とコマンドを交換するための制御バスのうちの一方又は両方を含み得る。インターフェース114は、任意の好適なプロトコルに従って動作し得る。例えば、インターフェース114は、以下のプロトコル、PCIe、不揮発性メモリエクスプレス(NVMe)、OpenCAPI、GenZ、キャッシュコヒーレントインターフェースアクセラレータ(CCIX)、オープンチャネルSSD(OCSSD)などのうちの1つ又は複数に従って動作することができる。インターフェース114(例えば、データバス、制御バス、又はその両方)は、コントローラ108に電気的に接続され、この電気的接続は、ホストデバイス104とコントローラ108との間に電気的接続を提供し、ホストデバイス104とコントローラ108との間でデータを交換することを可能にする。いくつかの実施例では、インターフェース114の電気的接続はまた、データ記憶デバイス106がホストデバイス104から電力を受け取ることを可能にする場合もある。例えば、図1に例示されるように、電源111は、インターフェース114を介してホストデバイス104から電力を受け取ることができる。
【0019】
NVM110は、複数のメモリデバイス又はメモリユニットを含み得る。NVM110は、データを記憶及び/又は取得するように構成され得る。例えば、NVM110のメモリユニットは、データと、データを記憶するようにメモリユニットに命令するメッセージとをコントローラ108から受信し得る。同様に、メモリユニットは、データを取得するようにメモリユニットに命令するメッセージをコントローラ108から受信する場合もある。いくつかの実施例では、メモリユニットの各々は、ダイと称され得る。いくつかの例において、NVM110は、複数のダイ(すなわち、複数のメモリユニット)を含むことができる。いくつかの実施例では、各メモリユニットは、比較的大量のデータ(例えば、128MB、256MB、512MB、1GB、2GB、4GB、8GB、16GB、32GB、64GB、128GB、256GB、512GB、1TBなど)を記憶するように構成され得る。
【0020】
いくつかの実施例では、各メモリユニットは、フラッシュメモリデバイス、相変化メモリ(PCM)デバイス、抵抗ランダムアクセスメモリ(ReRAM)デバイス、磁気抵抗ランダムアクセスメモリ(MRAM)デバイス、強誘電性ランダムアクセスメモリ(F-RAM)、ホログラフィックメモリデバイス、及び任意の他の種類の不揮発性メモリデバイスなどの、任意の種類の不揮発性メモリデバイスを含み得る。
【0021】
NVM110は、複数のフラッシュメモリデバイス又はメモリユニットを備え得る。NVMフラッシュメモリデバイスは、NAND又はNORベースのフラッシュメモリデバイスを含んでよく、各フラッシュメモリセルのトランジスタの浮遊ゲートに含まれる電荷に基づいてデータを記憶し得る。NVMフラッシュメモリデバイスでは、フラッシュメモリデバイスは、複数のダイに分割されてもよく、複数のダイの各ダイは複数のブロックを含み、これらは更に複数のページに分割され得る。特定のメモリデバイス内の複数のブロックの各ブロックは、複数のNVMセルを含み得る。NVMセルの行は、複数のページの各ページを定義するためにワード線を使用して電気的に接続され得る。複数のページの各々におけるそれぞれのセルは、それぞれのビット線に電気的に接続され得る。更に、NVMフラッシュメモリデバイスは、2D又は3Dデバイスであってもよく、単一レベルセル(SLC)、マルチレベルセル(MLC)、トリプルレベルセル(TLC)、又はクアッドレベルセル(QLC)であってもよい。コントローラ108は、ページレベルで、NVMフラッシュメモリデバイスにデータを書き込み、且つNVMフラッシュメモリデバイスからデータを読み取り得、ブロックレベルで、NVMフラッシュメモリデバイスからデータを消去し得る。
【0022】
電源111は、データ記憶デバイス106の1つ以上の構成要素に電力を供給することができる。標準モードで動作するとき、電源111は、ホストデバイス104などの外部デバイスによって提供される電力を使用して、1つ以上の構成要素に電力を提供し得る。例えば、電源111は、インターフェース114を介してホストデバイス104から受け取った電力を使用して、1つ以上の構成要素に電力を提供し得る。いくつかの実施例では、電源111は、外部デバイスから電力を受け取ることを停止する場合などのシャットダウンモードで動作するときに、1つ以上の構成要素に電力を供給するように構成された1つ以上の電力貯蔵構成要素を含み得る。このように、電源111は、積載電源として機能し得る。1つ以上の電力貯蔵構成要素のいくつかの例としては、コンデンサ、超コンデンサ、バッテリなどが挙げられるが、これらに限定されない。いくつかの実施例では、1つ以上の電力貯蔵構成要素によって貯蔵され得る電力の量は、1つ以上の電力貯蔵構成要素のコスト及び/又はサイズ(例えば、面積/体積)の関数であり得る。換言すれば、1つ以上の電力貯蔵構成要素によって貯蔵される電力の量が増加するにつれて、1つ以上の電力貯蔵構成要素のコスト及び/又はサイズも増加する。
【0023】
揮発性メモリ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など))が挙げられるが、これらに限定されない。
【0024】
コントローラ108は、データ記憶デバイス106の1つ又は複数の動作を管理してもよい。例えば、コントローラ108は、NVM110からのデータの読み取り及び/又はNVM110へのデータの書き込みを管理し得る。いくつかの実施形態では、データ記憶デバイス106がホストデバイス104から書き込みコマンドを受信すると、コントローラ108は、データ記憶コマンドを開始して、データをNVM110に記憶し、データ記憶コマンドの進捗を監視し得る。コントローラ108は、記憶システム100の少なくとも1つの動作特性を判定し、少なくとも1つの動作特性をNVM110に記憶し得る。いくつかの実施形態では、データ記憶デバイス106がホストデバイス104から書き込みコマンドを受信すると、コントローラ108は、データをNVM110に送信する前に、内部メモリ又は書き込みバッファ116内の書き込みコマンドに関連付けられたデータを一時的に記憶する。
【0025】
図2は、特定の実施形態によるリンク状態フロー図200の例証である。記憶システム100の態様は、例示的な目的のために本明細書の説明において参照されてよい。データ記憶デバイス106は、いくつかのリンク状態を含む。例えば、データ記憶デバイス106は、以下の5つのリンク状態、すなわち、L0、L0s、L1、L2、及びL3を有することができ、ここで、L1は、L1.1サブ状態及びL1.2サブ状態を含む。リンク状態の各々は、データ記憶デバイス106の別個の動作に関連付けられる。リンク状態L0、L0s、及びL1は、動作リンク状態と見なされ、第1の電力範囲を利用するが、リンク状態L2及びL3は、第2の電力範囲を利用して非動作リンク状態と見なされ、第1の電力範囲は、第2の電力範囲よりも大きい。
【0026】
動作リンク状態とは、ホストデバイス104がデータ記憶デバイス106のNVM110と通信する能力を指す。非動作リンク状態は、ホストデバイス104とコントローラ108との間のリンクのシャットダウン又は切断に起因して、ホストデバイス104がデータ記憶デバイス106のNVM110と通信できないことを指す。列挙された非動作リンク状態は、限定を意図するものではなく、L1.1及びL1.2リンク状態などの他のリンク状態を含む場合がある。更に、リンク状態フロー図200に示されるリンク状態の数よりも多い、又はそれより少ないリンク状態が利用可能である場合もあり、より多い又は少ない低電力リンク状態が本明細書で説明される実施形態に適用可能であり得ることが企図される。
【0027】
リンク状態は順次番号付けされ、番号が大きいほど、オフライン回路の数が多くなり、それに対応して出口待ち時間が長くなることに起因して、電力要件が低くなることを表す。更に、各リンク状態は、関連する電力要件及び出口待ち時間を有する。L0及びL0sは、最低の出口待ち時間で4.5Wを必要とし得る。L1は、3Wなど、L0よりも少ない電力を必要とする場合があり、L0の出口待ち時間以上の出口待ち時間を有する場合もある。L2は、L1よりも少ない電力を必要とする場合があり、L1の出口待ち時間以上の出口待ち時間を有する場合もある。L3は、L2よりも少ない電力を必要とする場合があり、L2の出口待ち時間以上の出口待ち時間を有する場合もある。リンク状態及び出口待ち時間の値は、限定することを意図したものではなく、可能な実施形態の一例を提供することを意図したものである。
【0028】
L0は完全動作状態と呼ばれ、I/Oコマンドがイネーブルされ、デバイスは割り込みを生成することができる。L0は、リンクが正常に動作しているリンク状態である。割り込みは、システムタイマ又はユーザコマンドによるファームウェア実行の自動転送である。リンク状態L0s及びL1も動作状態である。ただし、L0s及びL1は、L0よりも低い官能価を有してもよい。例えば、L0sは、L0と同様の電力要件を有するが、一方向のシリアルリンクのみを可能にする。L0sリンク状態では、データは一方向に転送され得るが、他方向には転送されることはない。したがって、第1のデバイスがリンクを介して第2のデバイスに結合されるとき、第1のデバイスは、第2のデバイスが第2のデバイスの送信機をアイドル状態にすることとは独立して、且つ別個に第1のデバイスの送信機をアイドル状態にすることができる、及び/又はその逆も可能である。
【0029】
しかしながら、L1は、双方向シリアルリンクを可能にし、電力要件のより大きな低減を可能にするが、L0及びL0sのものよりも長い出口待ち時間を有する。L1リンク状態では、データが転送されていないので、PCIeトランシーバロジックの重要な部分がオフにされてもよい。リンク状態L2及びL3は、動作リンク状態の電力要件よりも小さい電力要件を有する非動作リンク状態である。L2リンク状態とL3リンク状態との違いは、L2リンク状態からまだ補助電力が除去されていないことである。更に、使用されないNVM110のメモリデバイスは、アイドル電力消費を最小値に制限するために、非動作リンク状態L2及びL3に置かれる。
【0030】
I/Oコマンドを発生させるために、ホストデバイス104とコントローラ108との間のデータバスなどのリンクがウェイクアップされ、L0リンク状態に置かれる。コントローラ108は、ホストデバイス104とコントローラ108との間のリンクのリンク状態を、状況に応じて、L0、L0s、又はL1などの動作可能リンク状態から、L0、L0s、又はL1などの異なる動作可能リンク状態、あるいはL2又はL3などの非動作可能リンク状態に変更する。しかしながら、リンクがL2又はL3に置かれるためには、リンクはリンク状態L2/L3レディである必要があり、これは電力及び基準クロックの損失に対して構成要素を準備するための擬似状態である。コントローラ108は、完全な動作状態が必要とされるときに、全てのリンク状態L0s、L1、L2、L3をリンク状態L0に戻すために適切な電力の量を割り当てる。例えば、L2又はL3からL0に戻るために、リンクは、L0に遷移する前に過渡擬似状態LDnに遷移する。LDn状態は、上流構成要素(例えば、ホストデバイス104)による基本リセット状態、ホットリセット状態、又はリンク無効化送信状態であり得る。
【0031】
リンク状態L1は、いくつかの実施形態では、追加のサブ状態L1.1及びL1.2を含み、リンク状態L1はL1.0と呼ばれることがある。L1サブ状態(L1SS)、L1.1及びL1.2は、動作のためにL2及びL3よりも多くの電力を必要とし得る。しかしながら、L1SSは、L1.0状態よりも少ない電力を利用する。L1SSでは、リンクは動作可能なままであり、L1.0又はL0などのより動作可能な状態に戻るためにより少ない電力しか必要としない。更に、L1SSは、完全なアクティブリンク状態L0に戻るために、L2及び/又はL3リンク状態よりも少ない時間しか必要としない。
【0032】
以下に説明するように、ホストデバイスとデータ記憶デバイスとの間のリンクがアクティブでないとき(すなわち、電力状態がL1又はより低い状態であるとき)、HMBコントローラにおける透過的キャッシュ及び管理エンジンは、HMBのデータへのアクセスを許可する。HMBコントローラは、HMBをメモリデバイスにミラーリングする。エンジンは、PCIeリンクが制限されているときにHMB書き込みトランザクションをキャプチャし、リンクがアクティブになった後に書き込みトランザクションを再生する。読み取りトランザクションは、メモリデバイス内の対応する記憶場所にリダイレクトされる。適切な記憶場所には、例えば、SLCバッファ、任意の不揮発性記憶媒体、又は停電保護媒体が含まれる。
【0033】
図3は、一実施形態による、キャッシュ管理を伴うHMBコントローラの概略図300である。図3に示すように、ホストメモリ302は、PCIeインターフェース/フロントエンドコントローラ306を介してデータ記憶デバイスによってアクセスされるHMB304を含む。コントローラ306は、HMBコントローラ308を含む。HMBログ310は、HMBコントローラ308内に配置される。コントローラ306は、フラッシュ管理及びアプリケーションプロセッサ312ならびにメモリデバイスインターフェース/バックエンド314を通して、メモリデバイス316内に配置されるHMBキャッシュ318のための任意のデータを送信する。HMBログ310を有するHMBコントローラ308は、クライアント環境におけるHMB使用のいくつかの重要な特徴を利用する。HMBフットプリントは比較的小さく(例えば、64MB以下)、その一方で、L2P更新は、L2P更新がメモリデバイスに保存される前にHMBに対して行うことができるが、ほとんどのメタデータは最終的にメモリデバイスで終わり、HMBへの性能依存型アクセスは常に、リンクが完全にアクティブであるときであり、HMBへのアイドルアクセスは性能依存型ではない。
【0034】
管理エンジン322は、HMBコントローラ308内に位置し、HMB304の最もアクティブな部分をミラーリングするローカルSRAMキャッシュ320を維持する。HMBアクセスのHMBログ310もSRAMキャッシュ320内に維持されるが、最新のものを超えるアクセスは、メモリデバイス又は他の不揮発性媒体内の専用ログ空間に波及する可能性がある。PCIeリンクがL1以下(L1.2又はL2/L3レディ)に低減されると、全ての未処理のHMBアクセスがエンジンにリダイレクトされ、SRAMキャッシュ320又はメモリデバイス316のHMBキャッシュ318のいずれかから実行される。しかしながら、デバイスファームウェアの観点からは、管理エンジン322は透過的であり、HMB要求は引き続き作成され、応答される。SRAMキャッシュ320について説明し例示してきたが、ローカル記憶装置は、SRAMキャッシュ320に限定されないことを理解されたい。むしろ、ローカル記憶装置は、任意の揮発性又は不揮発性高速記憶媒体であってもよい。
【0035】
したがって、リンクがアクティブでない場合であっても、HMBコントローラ308が、HMB304内に存在するか、又は存在することが予想されるデータがHMBコントローラ308を介して常にアクセス可能であることを保証するので、HMBが常に利用可能であるという外観は維持される。HMB304内の全てのエントリは、メモリデバイス316、又はより具体的にはHMBキャッシュ318内でシャドウされ、任意のデルタは、HMBログ310内で追跡され、SRAMキャッシュ320内で維持される。SRAMキャッシュ320について説明し例示してきたが、ローカル記憶装置はSRAMキャッシュ320に限定されないことを理解されたい。むしろ、ローカル記憶装置は、任意の揮発性又は不揮発性高速記憶媒体であってもよい。したがって、任意の読み取り動作は、リンクがアクティブであるときにはHMB304を通過することができ、リンクがアクティブでないときには、HMBコントローラ308からのデルタを用いてメモリデバイス316を通過することができる。
【0036】
HMBコントローラ308は、ファームウェア又はハードウェアのいずれであってもよく、HMB304及びエラー訂正を制御する。HMBログ310は、HMB304内のあらゆるものをシャドウし、シャドウされた情報をHMBキャッシュ318に送信する。ホストデバイスとデータ記憶デバイスとの間のリンクがアクティブである場合、全てのHMB読み取り/書き込みはHMB304に進み、SRAMキャッシュ320内に存在するHMBキャッシュ318にミラーリングされていない任意のデルタとともにHMBログ310内に記録される。最終的に、データは、HMBキャッシュ318にミラーリングされる。ホストデバイスとデータ記憶デバイスとの間のリンクがアクティブでない場合、全てのHMB読み取り/書き込みは、SRAMキャッシュ320から取り出された、HMBログ310に記録された任意のデルタとともにHMBキャッシュ318に進む。
【0037】
図4A図4Cは、一実施形態によるHMBのキャッシュ管理エンジンのロジックを示すフローチャート400、430、450である。図4Aに示すように、402においてHMB初期化が行われ、404においてL2Pテーブルがメモリデバイス(例えばNAND)からHMBにコピーされる。テーブルのソース位置は、HMBがオフラインであるときのベースラインとして機能するようにHMBコントローラ内に保持される。他のソースが同様に使用されてもよく、又は専用のSLCバッファがその目的のために指定されてもよい。メモリデバイスソース位置は、406において、将来の更新再生のために保持され、修正を追跡するためのSRAMベースの構造が408において初期化される。専用SRAMバッファについて説明し例示してきたが、ローカル記憶装置は専用SRAMバッファに限定されないことを理解されたい。むしろ、ローカル記憶装置は、任意の揮発性又は不揮発性高速記憶媒体であってもよい。
【0038】
修正のデルタリストは、SRAM内に、及びメモリデバイス(例えば、NAND)内にも維持される。HMBとメモリデバイスとは同期しているので、デルタリストは最初は空である。記憶ファームウェアがHMBに増分更新を書き込むと、更新は自動的にSRAMデルタリストに記録される。デルタは、次いで、SRAMリストが最大サイズに達すると、元のソースに戻るように統合されるか、又はメモリデバイス(例えば、NAND)ベースの場所に波及する場合もある。周期的に、元の位置がHMBと再同期され、デルタリストがリセットされる。残りは、一般に、閾値に達した後に、又はメンテナンス動作を実行する前に行われる。
【0039】
図4Bに示されるように、記憶ファームウェアが432において、HMBコントローラにHMB読み取りコマンドを発行すると、HMBコントローラは、434において、PCIeリンクがアクティブであるかどうかをチェックする。リンクがアクティブである場合、このときコマンドは436において、HMBに渡され、436において読み取りペイロードがHMBからフェッチされる。しかしながら、リンクが低電力状態にある場合、読み取りコマンドは、メモリデバイス(又はソースコンテンツを保持する任意の他のバッファ)内の元のソースと、最後の統合以降に適用された任意のデルタとの組み合わせを使用することによって解決される。より具体的には、438において、SRAM構造がメモリデバイスバージョン又は読み取りペイロードについてチェックされ、必要であれば、440において、増分書き込み中に記録されたデルタが適用される。SRAM構造を説明し例示してきたが、ローカル記憶装置SRAM構造に限定されないことを理解されたい。むしろ、ローカル記憶装置は、任意の揮発性又は不揮発性高速記憶媒体であってもよい。リンクが再開されると、全ての段階的なデルタがHMBに再生され、したがって、全ての読み取りにおいて新しい更新を適用する代わりに、新しい読み取りをHMBから直接供給することができる。
【0040】
図4Cに示すように、記憶ファームウェアが452において、HMBコントローラにHMB増分書き込みコマンドを発行すると、HMBコントローラは454において、SRAMデルタリストに書き込みコマンドを記録し、2つのチェックを実行する。1つのチェックは、458においてリンクがアクティブであるかどうかを調べることである。458において、リンクがアクティブである場合、464において、HMBにデータが書き込まれる。リンクがアクティブでない場合、462において、SRAMキャッシュへの書き込みが行われ、最終的にはメモリデバイス内のHMBキャッシュへの書き込みが行われる。追加のチェックは、456において、デルタリストが満杯であるかどうかを判定することである。デルタリストが満杯でない場合、462において、SRAMキャッシュへの書き込みが行われ、最終的にはメモリデバイス内のHMBキャッシュへの書き込みが行われる。456において、デルタリストが満杯である場合、460において、デルタがメモリデバイスターゲットに統合される。
【0041】
メモリデバイスHMBキャッシュがまだ更新されていない場合、デルタは必要であり、たとえ統合されたとしても保持されなければならない。更に、HMBは、メモリデバイス内のHMBキャッシュをデルタによって更新する前に更新されてもよい。更に、リンクがアクティブでないときにHMBへの書き込みが発生した場合、リンク復元時に必要となるHMBへの更新は、SRAM内に保持されるデルタだけである。SRAMに記憶されたデルタは、リンクがアクティブになると、HMBに送信される。デルタが多すぎる場合、デルタはメモリデバイス、特にHMBキャッシュに送信され、後にリンクの復元時にHMBと再同期させることができる。書き込み用の増分キャッシュバッファは、ファームウェアロジックに対して透過的である。
【0042】
図5は、一実施形態によるHMBキャッシュ管理を示すフローチャート500である。最初に、502において、データがHMBに書き込まれる必要があるという判定がなされる。この判定に基づいて、別の判定が行われる。具体的には、504において、データ記憶デバイス内に位置するHMBコントローラ内に配置されたHMBログが満杯であるかどうかに関する判定が行われる。HMBログが満杯である場合、508において、HMBログのデータを統合し、メモリデバイスに送信される必要がある。しかしながら、HMBログが満杯でない場合、506において、HMBログは、デルタ書き込みが行われることを示すように更新される。デルタ書き込みは、HMBに既にあるデータを変更するか、又はデルタを生じさせるHMBへの書き込みである。デルタは、HMBに対する新しいデータ、又はHMB内に既に存在する更新データとすることができる。いずれにしても、510において、HMBログが更新され、実際のデルタデータがSRAMに書き込まれる。
【0043】
この時点で、デルタデータ、及びデルタデータのログは、データ記憶デバイス、より詳細にはデータ記憶デバイスのHMBコントローラに存在する。デルタデータはHMBに書き込まれる必要があり、したがって、HMBコントローラは、512において、HMBとデータ記憶デバイスとの間のリンクがアクティブであるかどうかを判定する。リンクがアクティブでない場合、HMBコントローラは、リンクが最終的にアクティブになるまで待機する。一方、リンクがアクティブでない間、HMBへの任意の新しい増分書き込み要求は、502で始まるプロセスに従って処理される。
【0044】
512において、リンクがアクティブである場合、514において、デルタデータがHMBに書き込まれる。516において、閾値が満たされた場合、518において、データがHMBキャッシュとしてメモリデバイスにミラーリングされ、520において、HMBログが空にされ、522において、HMBキャッシュ及びHMBがこの時点で同一であるため、デルタデータはSRAMから削除される。閾値は、例えば時間閾値、又は書き込みデルタ書き込みの回数であってもよい。閾値が満たされていない場合、メモリデバイスは更新されず、したがって、HMBとHMBキャッシュは異なり、その差は、HMBログに示され、且つSRAMに含まれるデルタデータである。
【0045】
HMB読み取り要求は、HMBとHMBコントローラとの間のリンクがアクティブであるときに正常に処理される。リンクがアクティブであるとき、データは単にHMBから読み取られる。しかしながら、HMBは、まだデルタデータで更新されていないと考えられる。したがって、HMB読み取りを実行する前に、任意のデルタデータがHMBに書き込まれる。
【0046】
リンクがアクティブでないとき、データは代わりにHMBキャッシュからフェッチされ、デルタデータはSRAMキャッシュからフェッチされる。そうすることで、HMBがアクセス可能でなくても、HMB読み取り要求が満たされる。HMBにまだ書き込まれていない増分書き込みであるデルタデータを、実際には読み取ることができる。HMBキャッシュから取り出されたデータが不完全である(すなわち、デルタデータが失われている)ので、増分書き込み又はHMBの外部に記憶されているデルタデータがない場合、HMB読み取り要求は、実行することができないか、又は無効データを返す場合がある。デルタデータが記憶されている状態で、HMB要求が実行され、有効なデータを提供することができる。
【0047】
HMBログを用いてHMBをシャドウイングすることによって、データ記憶デバイスとホストデバイスとの間のリンクがアクティブでないときに、HMBデータを容易に取り出すことができる。更に、メモリデバイス内のHMBキャッシュへのHMBの最後のコピー以降に発生した任意のデルタがHMBログ内に見いだされる。更に、リンクが非アクティブであった間に発生した任意のデルタは、リンクのアクティブ化時にHMBにコピーすることができる。更に、ハードウェアにおけるHMBキャッシュ管理のより良好な制御は、NVMeプロトコルとの完全な整合を可能にし、HMBを利用するファームウェア論理を複雑にすることなく潜在的なホスト電力を低減する。コントローラにおける特徴の実装形態は、ファームウェアがリンク電力管理と完全に同期されない潜在的なコーナーケースを排除することができる。本明細書で説明する実施形態は、アグレッシブなホスト側電力管理ポリシーが適用される場合、HMB管理を改善し、HMB対話を簡略化する。
【0048】
一実施形態では、データ記憶デバイスは、メモリデバイスと、メモリデバイスに結合されたコントローラであって、ホストメモリバッファ(HMB)とコントローラとの間のリンクがアクティブであるかどうかを判定し、データをキャッシュに書き込み、キャッシュに書き込まれたデータは、HMBに書き込まれることが意図されたデータであり、デルタデータであり、デルタデータの存在を示すようにHMBログを更新するように構成されているコントローラとを備える。コントローラは、リンクがアクティブになると、デルタデータでHMBを更新するように更に構成されており、コントローラは、メモリデバイス内に配置されたHMBキャッシュにデータを書き込むことによって、HMB内のデータをミラーリングするように更に構成されている。判定するステップは、リンクがアクティブでないと判定し、HMBログを更新すると、HMB内のデータは、HMBキャッシュ内に記憶されたデータとは異なる。HMB内のデータは、HMBキャッシュに記憶されたデータとデルタデータとの組み合わせと同一である。
【0049】
別の実施形態では、データ記憶デバイスは、メモリデバイスと、メモリデバイスに結合されたコントローラであって、ホストメモリバッファ(HMB)にデータを書き込むための要求を受信し、書き込みの指示をHMBログに記録し、デルタデータであるデータをキャッシュに書き込み、HMBからデータを読み取るための読み取り要求を受信し、HMB以外の場所から要求されたデータの一部分を取り出し、デルタデータを取り出し、デルタデータ、及び読み取り要求を満たすために要求されたデータの一部分を返すように構成されているコントローラとを備える。コントローラは、コントローラとHMBとの間のリンクがアクティブでないことを判定するように更に構成されている。要求されたデータの一部分及びデルタデータが検索されるとき、リンクはアクティブではない。キャッシュはコントローラ内に配置される。要求されたデータの一部分は、HMBキャッシュから取り出される。HMBキャッシュは、メモリデバイス内に配置される。コントローラは、HMBとコントローラとの間のリンクがアクティブであると判定すると、デルタデータをHMBに書き込むように更に構成されている。コントローラは、読み取り要求を受信する前にデルタデータをHMBに書き込むように構成される。コントローラは、HMBログが満杯であるかどうかを判定するように構成される。コントローラは、HMBログからのデータを統合し、統合されたデータをメモリデバイスにフラッシュするように構成される。
【0050】
別の実施形態では、データ記憶デバイスは、メモリ手段と、メモリ手段に結合されたコントローラであって、ホストメモリバッファ(HMB)からデータを読み取るための要求及びホストメモリバッファ(HMB)にデータを書き込むための要求を受信し、HMB以外の場所から要求されたデータを取り出すことによって読み取り要求を処理し、HMB以外の場所にデータを書き込むことによって書き込み要求を処理し、データは、HMB以外の場所にデータを書き込んだ後にHMBに書き込まれるように構成されているコントローラとを備える。読み取り要求に関連するデータは、HMB、メモリ手段、及びSRAMキャッシュに配置される。コントローラは管理エンジンを更に備え、管理エンジンはHMBログ及びSRAMキャッシュを備える。HMB以外の場所は、コントローラ内に配置されたキャッシュを含む。コントローラは、HMB以外の場所へのデータの書き込みを記録するように更に構成されている。コントローラは、HMBとコントローラとの間のリンクがアクティブであると判定すると、HMB以外の場所からHMBにデータをコピーするように更に構成されている。
【0051】
上記は本開示の実施形態を目的とするが、本開示の他の及び更なる実施形態が、その基本的範囲から逸脱することなく考案され得、その範囲は、以下の特許請求の範囲によって決定される。
図1
図2
図3
図4A
図4B
図4C
図5
【国際調査報告】