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

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

▶ エスケイ ハイニックス ナンド プロダクト ソリューションズ コーポレーションの特許一覧

特表2024-513234ソリッドステートドライブ内のNANDダイの衝突を軽減する方法及び装置
<>
  • 特表-ソリッドステートドライブ内のNANDダイの衝突を軽減する方法及び装置 図1
  • 特表-ソリッドステートドライブ内のNANDダイの衝突を軽減する方法及び装置 図2
  • 特表-ソリッドステートドライブ内のNANDダイの衝突を軽減する方法及び装置 図3
  • 特表-ソリッドステートドライブ内のNANDダイの衝突を軽減する方法及び装置 図4
  • 特表-ソリッドステートドライブ内のNANDダイの衝突を軽減する方法及び装置 図5
  • 特表-ソリッドステートドライブ内のNANDダイの衝突を軽減する方法及び装置 図6
  • 特表-ソリッドステートドライブ内のNANDダイの衝突を軽減する方法及び装置 図7
  • 特表-ソリッドステートドライブ内のNANDダイの衝突を軽減する方法及び装置 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-22
(54)【発明の名称】ソリッドステートドライブ内のNANDダイの衝突を軽減する方法及び装置
(51)【国際特許分類】
   G06F 12/00 20060101AFI20240314BHJP
   G06F 12/02 20060101ALI20240314BHJP
【FI】
G06F12/00 560B
G06F12/00 597U
G06F12/00 597Z
G06F12/02 570A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023561284
(86)(22)【出願日】2022-04-05
(85)【翻訳文提出日】2023-11-17
(86)【国際出願番号】 US2022023419
(87)【国際公開番号】W WO2022216664
(87)【国際公開日】2022-10-13
(31)【優先権主張番号】17/222,048
(32)【優先日】2021-04-05
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】523351302
【氏名又は名称】エスケイ ハイニックス ナンド プロダクト ソリューションズ コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】リ、ペン
(72)【発明者】
【氏名】トライカ、サンジーブ エヌ.
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA06
5B160AA14
5B160AB26
5B160CB01
5B160NA02
(57)【要約】
マルチストリームソリッドステートドライブのサービス品質は、NANDダイの衝突によりNANDダイへの書き込みが妨げられた場合に、ソリッドステートドライブ内のNANDダイに書き込まれるデータを、ソリッドステートドライブ内のバイトアドレス指定可能なインプレース書き込み不揮発性メモリに記憶することによって向上する。バイトアドレス指定可能なインプレース書き込み不揮発性メモリに記憶されたデータは、NANDダイがビジーでないときにNANDダイに書き込まれる。
【特許請求の範囲】
【請求項1】
ソリッドステートドライブであって、
前記ソリッドステートドライブに通信可能に結合されたホストシステムからコマンドを受信するためのコントローラ回路、前記コマンドは、前記ソリッドステートドライブにデータを書き込むためのものであり、前記データは、ストリームに関連付けられる;
データを記憶するための複数のNANDダイ、前記複数のNANDダイのうちの1つのブロックが前記ストリームに割り当てられる;及び
前記NANDダイがビジーである場合、前記NANDダイ内の前記ブロックに書き込まれる前記ストリームに関連付けられた前記データを記憶するためのバイトアドレス指定可能なインプレース書き込み不揮発性メモリ
を備えるソリッドステートドライブ。
【請求項2】
前記NANDダイがビジーでない場合、前記ストリームのデータが、前記NANDダイ内の前記ブロックに直接書き込まれる、請求項1に記載のソリッドステートドライブ。
【請求項3】
前記バイトアドレス指定可能なインプレース書き込み不揮発性メモリは、カルコゲナイド相変化材料を含む、請求項1に記載のソリッドステートドライブ。
【請求項4】
前記バイトアドレス指定可能なインプレース書き込み不揮発性メモリは、電池バックアップされた揮発性ランダムアクセスメモリである、請求項1に記載のソリッドステートドライブ。
【請求項5】
論理対物理アドレス間接テーブルを記憶するための揮発性メモリ、前記論理対物理アドレス間接テーブル内の各エントリは、前記データが記憶される物理ブロックアドレス、及び前記物理ブロックアドレスに対応するメモリの識別子を記憶する
をさらに備える、請求項1に記載のソリッドステートドライブ。
【請求項6】
前記メモリは、前記バイトアドレス指定可能なインプレース書き込み不揮発性メモリである、請求項5に記載のソリッドステートドライブ。
【請求項7】
前記メモリは、前記NANDダイである、請求項5に記載のソリッドステートドライブ。
【請求項8】
コントローラ回路によって、ソリッドステートドライブに通信可能に結合されたホストシステムからのコマンドを受信する段階、前記コマンドは、前記ソリッドステートドライブにデータを書き込むためのものであり、前記データは、ストリームに関連付けられる;
NANDダイ内のブロックを前記ストリームに割り当てる段階;及び
前記NANDダイがビジーである場合、前記NANDダイ内の前記ブロックに書き込まれる前記ストリームに関連付けられた前記データを、バイトアドレス指定可能なインプレース書き込み不揮発性メモリに記憶する段階
を備える方法。
【請求項9】
前記NANDダイがビジーでない場合、前記ストリームのデータが、前記NANDダイ内の前記ブロックに直接書き込まれる、請求項8に記載の方法。
【請求項10】
前記バイトアドレス指定可能なインプレース書き込み不揮発性メモリは、カルコゲナイド相変化材料を含む、請求項8に記載の方法。
【請求項11】
前記バイトアドレス指定可能なインプレース書き込み不揮発性メモリは、電池バックアップされた揮発性ランダムアクセスメモリである、請求項8に記載の方法。
【請求項12】
論理対物理アドレス間接テーブルを揮発性メモリに記憶する段階、前記論理対物理アドレス間接テーブル内の各エントリは、前記データが記憶される物理ブロックアドレス、及び前記物理ブロックアドレスに対応するメモリの識別子を記憶する
をさらに備える、請求項8に記載の方法。
【請求項13】
前記メモリは、前記バイトアドレス指定可能なインプレース書き込み不揮発性メモリである、請求項12に記載の方法。
【請求項14】
前記メモリは、前記NANDダイである、請求項12に記載の方法。
【請求項15】
プロセッサ;及び
ソリッドステートドライブに通信可能に結合された前記プロセッサから前記ソリッドステートドライブ内で動作を実行するためのコマンドを受信するためのコントローラ回路、前記コマンドは前記ソリッドステートドライブにデータを書き込むためのストリームに関連付けられる;
データを記憶するための複数のNANDダイ、前記複数のNANDダイのうちの1つのブロックが前記ストリームに割り当てられる;及び
前記NANDダイがビジーである場合、前記NANDダイ内の前記ブロックに書き込まれるデータを記憶するためのバイトアドレス指定可能なインプレース書き込み不揮発性メモリ
を有する前記ソリッドステートドライブ
を備えるシステム。
【請求項16】
前記NANDダイがビジーでない場合、前記ストリームのデータが、前記NANDダイ内の前記ブロックに直接書き込まれる、請求項15に記載のシステム。
【請求項17】
前記バイトアドレス指定可能なインプレース書き込み不揮発性メモリは、カルコゲナイド相変化材料を含む、請求項15に記載のシステム。
【請求項18】
前記バイトアドレス指定可能なインプレース書き込み不揮発性メモリは、電池バックアップされた揮発性ランダムアクセスメモリである、請求項15に記載のシステム。
【請求項19】
論理対物理アドレス間接テーブルを記憶するための揮発性メモリ、前記論理対物理アドレス間接テーブル内の各エントリは、前記データが記憶される物理ブロックアドレス、及び前記物理ブロックアドレスに対応するメモリの識別子を記憶する
をさらに備える、請求項15に記載のシステム。
【請求項20】
前記プロセッサに通信可能に結合されたディスプレイ;又は
前記プロセッサに結合された電池
の1つ又は複数をさらに備える、請求項15に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2021年4月5日に出願された米国特許出願第17/222,048号の利益を主張し、その全体が参照により本明細書に組み込まれる。
【背景技術】
【0002】
本開示はソリッドステートドライブに関し、特にソリッドステートドライブ内のNANDダイの衝突に関する。
【0003】
不揮発性メモリは、デバイスへの電力供給が遮断された場合でも状態が確定しているメモリを指す。ソリッドステートドライブは、データを不揮発性メモリに記憶するストレージデバイスである。典型的には、ソリッドステートドライブには、NANDフラッシュなどのブロックベースのメモリ、及びソリッドステートドライブに通信可能に結合されたホストから受信した、NANDフラッシュに向けられた読み取り/書き込み要求を管理するコントローラが含まれる。
【0004】
ホストシステムは、高速シリアルコンピュータ拡張バス、例えば、不揮発性メモリエクスプレス(Non-Volatile Memory Express:NVMe)標準プロトコルを使用するペリフェラルコンポーネントインターコネクト(Peripheral Component Interconnect Express:PCIe)バスを介してソリッドステートドライブ(Solid state drive:SSD)と通信できる。不揮発性メモリエクスプレス(NVMe)標準プロトコルは、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)バスを介してソリッドステートドライブと通信するためのホストソフトウェアのレジスタレベルのインターフェースを定義する。
【図面の簡単な説明】
【0005】
特許請求される主題の実施形態の特徴は、以下の詳細な説明が進むにつれて、及び同様の数字が同様の部分を示す図面を参照することによって明らかになるであろう。
【0006】
図1】マルチストリームソリッドステートドライブに通信可能に結合されたホスト回路を含むコンピュータシステムのブロック図である。
【0007】
図2図1のマルチストリームソリッドステートドライブの一実施形態のブロック図である。
【0008】
図3】ブロックアドレス指定可能な不揮発性メモリ及びホストシステムの間のストリームのデータ転送を管理するために使用されるバイトアドレス指定可能なインプレース書き込み(write-in-place)不揮発性メモリ内のキューを示す図である。
【0009】
図4】バイトアドレス指定可能なインプレース書き込み不揮発性メモリを管理するためにファームウェア内のファームウェアタスクによって実行される方法を示すフローグラフである。
【0010】
図5】ホストから受信した書き込み要求に応答して、マルチストリームソリッドステートドライブ内のファームウェア内のファームウェアタスクによって実行される動作のフローグラフである。
【0011】
図6】ホストから受信した読み取り要求に応答して、マルチストリームソリッドステートドライブ内のファームウェア内のファームウェアタスクによって実行される動作のフローグラフである。
【0012】
図7】ソリッドステートドライブ内の電力損失回復(Power Loss Recovery:PLR)イベントを処理する方法のフローグラフである。
【0013】
図8】マルチストリームソリッドステートドライブを含むコンピュータシステムの一実施形態のブロック図である。
【0014】
以下の詳細な説明は、特許請求される主題の例示的な実施形態を参照して進められるが、その多くの代替、修正、及び変形は当業者には明らかであろう。
【0015】
したがって、特許請求される主題は広く捉えられ、添付の特許請求の範囲に記載のように定義されることが意図される。
【発明を実施するための形態】
【0016】
通常、ソリッドステートドライブ(SSD)には、コントローラに通信可能に結合された独立したNANDダイ(NANDフラッシュダイとも呼ばれる)が含まれており、NANDダイへのI/O動作の並列化が可能になる。
【0017】
NANDダイでプログラム動作を実行する時間は、NANDダイで読み取り動作を実行する時間よりもはるかに長くなる。ソリッドステートドライブ内のプログラムの一時停止、再開(Program Suspend Resume:PSR)機能により、進行中のプログラム動作を一時停止して読み取り動作を行うことができるが、プログラムの一時停止、再開により読み取り動作の完了に必要な時間が増加する。NANDダイ上で進行中のプログラム動作の裏側でキューに入れられた、ホストシステムから受信した読み取り要求は、ソリッドステートドライブの読み取り遅延又は読み取りサービス品質(read Quality of Service:rQoS)に重大な影響を与える可能性がある。
【0018】
ソリッドステートドライブ内のNANDフラッシュのブロックに記憶されているデータが不要になった場合、データを記憶している1つ又は複数のブロックを新しいデータの記憶に使用できるようにするには、データを消去しなければならない。消去する前に、1つ又は複数のブロック内の有効なデータをNANDフラッシュ内の他のブロックに書き込まなければならない。これらの追加のNAND動作により、必要な書き込み回数が増加する乗算効果が生じ、「書き込みの増幅」と呼ばれる「増幅」効果が生じる。例えば、ブロック内の64ページのうち3ページが有効(使用中)で、他のすべてのページが無効(使用されなくなった)の場合、ブロックを消去する前に、3つの有効なページを別のブロックに書き込まなければならず、その結果、消去動作及び新しいデータの書き込みに加えて3つのページ書き込み動作が生じる。書き込み増幅率は、書き込まれる新しいデータの量に関連して、ソリッドステートドライブコントローラが書き込まなければならないデータの量を表す数値である。他のブロックへの有効なデータの書き込み及びNANDフラッシュの消去動作は、通常、「ガベージ」コレクション(ガベージコレクション)と呼ばれる。
【0019】
同じNANDダイに対するガベージコレクション読み取り動作が進行中の間に、NANDダイに対するホスト読み取り動作の要求を受信できる。これは、「読み取り時の読み取りの衝突」と呼ばれ得る。「読み取り時の読み取りの衝突」は、ホスト読み取り動作の読み取り遅延の増加を招く。読み取り遅延には、ガベージコレクション読み取り動作を完了する時間、及びエラー処理(必要な場合)を実行する時間が含まれる。
【0020】
同じNANDダイに対するガベージコレクションプログラム動作が進行中の間に、NANDダイに対するホスト読み取り動作の要求を受信できる。同じNANDダイに対するホストプログラム動作が進行中の間に、NANDダイに対するホスト読み取り動作の要求を受信できる。これらは、「書き込み時の読み取りの衝突」と呼ばれ得る。「書き込み時の読み取りの衝突」は、書き込み動作の書き込み遅延の増加を招く。書き込み遅延には、プログラム動作を一時停止し、読み取り動作を実行してプログラム動作を再開する時間が含まれる。「書き込み時の読み取りの衝突」及び「読み取り時の読み取りの衝突」は、NANDダイの衝突と呼ばれ得る。
【0021】
NANDダイ内のブロック内の無効なデータを消去する前に、ブロック内の1つ又は複数のページに記憶されている有効なデータを、消去されるNANDダイ内のブロックからNANDダイ内の他のブロックに書き込むためのデータ移動動作の結果、ソリッドステートドライブ内のデータの読み取り/書き込みに対するユーザ要求の処理に使用される可能性のある帯域幅が使用される。
【0022】
NANDダイ内の有効なデータを記憶しているNANDダイ内のブロック間で移動するページの数を減らすために、不揮発性メモリエクスプレス(NVMe)標準プロトコルは、ホストがNANDダイへの書き込み動作をストリームに関連付けることができる。ストリームに関連付けられたすべてのデータは、同時に無効になることが予期される(すなわち、データは同じ期待寿命を有する)。予期される期待寿命が異なるデータは、異なるストリームにマッピングされる。
【0023】
ホストシステムは、ソリッドステートドライブ内の「ストリーム」を明示的に開き、ソリッドステートドライブに書き込まれるデータの期待寿命に応じて、書き込み要求を異なるストリームに送信できる。ソリッドステートドライブは、マルチストリームソリッドステートドライブと呼ばれ得る。マルチストリームソリッドステートドライブは、ストリーム内のデータがNANDブロックに一緒に書き込まれ、他のストリームに関連付けられたデータから分離されることを保証する。
【0024】
マルチストリームソリッドステートドライブ内の複数のストリームの使用により、書き込み増幅が減少する。しかし、ストリームの数が増加すると、NANDダイの衝突の確率が増加し、読み取りサービス品質に影響を与える可能性がある。複数のストリームは、同じNANDダイに読み取り及び書き込み要求を独立して送信できる。例えば、70%の読み取り及び30%の書き込みの混合ワークロード、ストリーム当たりのコマンドキュー深度1(Queue Depth:QD1)、読み取り及び書き込みごとの4キビバイト(KibiByte:KiB)のデータ転送、及び読み取り及び書き込みの論理ブロックアドレスによるマルチストリームソリッドステートドライブの読み取り遅延はランダムであり、99パーセンタイルレベルのトライレベルセル(Tri-Level Cell:TLC)NANDは、4ストリームの124マイクロ秒から8ストリームの2200マイクロ秒に増加する。
【0025】
マルチストリームソリッドステートドライブのサービス品質は、ダイの衝突によりNANDダイへの書き込みが妨げられた場合に、ソリッドステートドライブ内のNANDダイに書き込まれるデータを、ソリッドステートドライブ内のバイトアドレス指定可能なインプレース書き込み(write-in-place)不揮発性メモリに記憶することによって向上する。
【0026】
本発明の様々な実施形態及び態様は、以下に論じる詳細を参照して説明され、添付の図面は様々な実施形態を示す。以下の説明及び図面は本発明を例示するものであり、本発明を限定するものとして解釈されるべきではない。本発明の様々な実施形態の十分な理解を提供するために、多くの具体的な詳細が説明される。しかし、場合によっては、本発明の実施形態の簡潔な議論を提供するために、よく知られた又は従来の詳細については説明しない。
【0027】
本明細書での「1つの実施形態(one embodiment)」又は「一実施形態(an embodiment)」への言及は、実施形態に関連して説明される特定の特徴、構造、又は特性が、本発明の少なくとも1つの実施形態に含まれ得ることを意味する。本明細書の様々な箇所で、「1つの実施形態では(in one embodiment)」という語句が現れても、必ずしもすべて同じ実施形態を指してはいない。
【0028】
図1は、マルチストリームソリッドステートドライブ102に通信可能に結合されたホスト回路112を含むコンピュータシステム100のブロック図である。ホスト回路112は、ホストメモリ114、及びプロセッサとも呼ばれ得る中央処理装置(Central Processing Unit:CPU)122を含む。1つ又は複数のアプリケーション116(特定のタスク又はタスクのセットを実行するプログラム)及びストレージスタック124及び不揮発性メモリエクスプレス(Non-Volatile Memory Express:NVMe)ドライバ110を含むオペレーティングシステム142は、ホストメモリ114に記憶され得る。
【0029】
一実施形態では、は、マルチストリームソリッドステートドライブ102は、エンタープライズ及びデータセンタSSDフォームファクタ(Enterprise and Data Center SSD Form Factor:EDSFF)を有し、124個以上のNANDダイを含む。
【0030】
オペレーティングシステム142は、メモリ割り当て及び入力/出力(I/O)デバイスへのアクセスを含むコンピュータハードウェア及びソフトウェアを管理するソフトウェアである。
【0031】
オペレーティングシステムの例には、Microsoft(登録商標)Windows(登録商標)、Linux(登録商標)、iOS(登録商標)、Android(登録商標)が含まれる。Microsoft(登録商標)Windows(登録商標)オペレーティングシステムの実施形態では、ストレージスタック124は、マルチストリームソリッドステートドライブ102用のポート/ミニポートドライバを含むデバイススタックであり得る。
【0032】
一実施形態では、ホストメモリ114は揮発性メモリである。揮発性メモリとは、デバイスへの電力供給が遮断された場合に、状態(したがって、その中に記憶されるデータ)が不定になるメモリである。動的揮発性メモリでは、状態を維持するためにデバイスに記憶されているデータをリフレッシュする必要がある。動的揮発性メモリの一例には、DRAM(ダイナミックランダムアクセスメモリ)、又はシンクロナスDRAM(SDRAM)などのいくつかのバリアントがある。本明細書に記載されるように、メモリサブシステムは、DDR3(ダブルデータレートバージョン3、2007年6月27日にJEDEC(半導体技術協会)によって最初にリリース)などのいくつかのメモリ技術と互換性があり得る。DDR4(DDRバージョン4、2012年9月にJEDECによって最初に公開された)、DDR5(DDRバージョン5、2020年7月に最初に公開された)、LPDDR3(低電力DDRバージョン3、JESD209-3B、2013年8月にJEDECによって)、LPDDR4(LPDDRバージョン4、JESD209-4、2014年8月にJEDECによって最初に公開)、LPDDR5(LPDDRバージョン5、JESD209-5A、2020年1月にJEDECによって最初に公開)、WI02(ワイド入力/出力バージョン2、JESD229-2、2014年8月にJEDECによって最初に公開)、HBM(高帯域幅メモリ、JESD235、2013年10月にJEDECによって最初に公開)、HBM2(HBMバージョン2、JESD235C、2020年1月にJEDECによって最初に公開)、又はHBM3(HBMバージョン3、現在JEDECで議論中)、又はその他又はメモリ技術の組み合わせ、及びそのような仕様の派生物又は拡張に基づく技術などのいくつかのメモリ技術と互換性があり得る。JEDEC規格は、www.jedec.orgで入手できる。
【0033】
ホスト回路112は、高速シリアルコンピュータ拡張バス120、例えば、ペリフェラルコンポーネントインターコネクトエクスプレス(Peripheral Component Interconnect Express:PCIe)バスを介して、マルチストリームソリッドステートドライブ102と通信できる。ホスト回路112は、ペリフェラルコンポーネントインターコネクトエクスプレス(Peripheral Component Interconnect Express:PCIe)バスを介した通信を管理する。一実施形態では、ホストシステムは、不揮発性メモリエクスプレス(NVMe)標準プロトコルを使用して、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)バスを介して通信する。不揮発性メモリエクスプレス(NVMe)標準プロトコルは、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)バスを介してソリッドステートドライブ(SSD)102と通信するためのホストソフトウェアのレジスタレベルのインターフェースを定義する。NVMエクスプレス規格は、www.nvmexpress.orgで入手できる。PCIe標準はpcisig.comで入手できる。
【0034】
マルチストリームソリッドステートドライブ102は、ソリッドステートドライブコントローラ回路104、及びブロックアドレス指定可能な不揮発性メモリ108を含む。マルチストリームソリッドステートドライブ102内のブロックアドレス指定可能な不揮発性メモリ108に記憶されたデータの読み取り要求は、1つ又は複数のアプリケーション116(特定のタスク又はタスクのセットを実行するプログラム)によって、オペレーティングシステム142内のストレージスタック124を通してソリッドステートドライブコントローラ回路104に発行され得る。
【0035】
マルチストリームソリッドステートドライブ102内のソリッドステートドライブコントローラ回路104は、ホスト回路112から受信したコマンド(例えば、読み取りコマンド、書き込みコマンド(「プログラム」)、消去コマンド)をキューに入れて処理し、ブロックアドレス指定可能な不揮発性メモリ108内で動作を実行する。ホストインターフェース回路202からソリッドステートドライブコントローラ回路104によって受信されるコマンドは、ホスト入力出力(IO)コマンドと呼ばれ得る。
【0036】
図2は、図1のマルチストリームソリッドステートドライブ102の一実施形態のブロック図である。マルチストリームソリッドステートドライブ102内のソリッドステートドライブコントローラ回路104は、ホストインターフェース回路202、不揮発性ブロックアドレス指定可能なメモリコントローラ回路212、CPU122、ファームウェア213、ダイレクトメモリアクセスコントローラ(Direct Memory Access Controller:DMAC)224、スタティックランダムアクセスメモリ230、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory:DRAM)250、及びバイトアドレス指定可能なインプレース書き込み不揮発性メモリ226を含む。ファームウェア213は、CPU122によって実行され得る。ソリッドステートドライブコントローラ回路104は、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array:FPGA)又は特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)に含まれ得る。ファームウェア213は、プロセッサ122によって実行され得る。
【0037】
論理ブロックは、ソリッドステートドライブ102内のブロックアドレス指定可能な不揮発性メモリ108にアクセスするための読み取り及び書き込みコマンドのアドレス指定可能な最小のデータ単位である。論理ブロックのアドレスは、一般に論理ブロックアドレス(Logical Block Address:LBA)と呼ばれる。
【0038】
ダイナミックランダムアクセスメモリ250内の論理対物理(logical to physical:L2P)アドレス間接テーブル252(L2Pテーブル252とも呼ばれる)は、各LBAに対応するマルチストリームソリッドステートドライブ102内のブロックアドレス指定可能な不揮発性メモリ108内の物理ブロックアドレスを記憶する。通常、L2Pアドレス間接テーブル252は、4キビバイト(KiB)の間接ユニット(Indirection Unit:IU)の粒度でブロックアドレス指定可能な不揮発性メモリの物理ブロックアドレスを記憶する。
【0039】
スタティックランダムアクセスメモリ(Static Random Access Memory:SRAM)は揮発性メモリである。揮発性メモリとは、デバイスへの電力供給が遮断された場合に、状態(したがって、その中に記憶されるデータ)が不定になるメモリである。SRAMは、ラッチ回路を使用して各ビットを記憶する揮発性メモリの一種である。SRAMは、ダイナミックランダムアクセスメモリ(DRAM)とは対照的に、SRAMに記憶されたデータは定期的にリフレッシュする必要がないため、通常、バッファメモリとして使用される。
【0040】
バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226の例としては、限定されないが、シングルレベル又はマルチレベル相変化メモリ(Phase Change Memory:PCM)又はスイッチ付き相変化メモリ(Phase Change Memory with a Switch:PCMS)、カルコゲナイド相変化材料(例えば、カルコゲナイドガラス)を含む不揮発性メモリのタイプ、金属酸化物ベース、酸素空孔ベース及び導電性ブリッジランダムアクセスメモリ(Conductive Bridge Random Access Memory:CB-RAM)、ナノワイヤメモリ、強誘電体ランダムアクセスメモリ(Ferroelectric Random Access Memory:FeRAM、FRAM(登録商標))、メモリスタ技術を組み込んだ磁気抵抗ランダムアクセスメモリ(Magneto Resistive Random Access Memory:MRAM)、スピントランスファトルク(Spin Transfer Torque:STT)MRAM、スピントロニック磁気接合メモリベースデバイス、磁気トンネル接合(Magnetic Tunneling Junction:MTJ)ベースデバイス、領域壁(Domain Wall:DW)及びスピンオービットトランスファ(Spin Orbit Transfer:SOT)ベースデバイス、サイリスタベースメモリデバイスを含む抵抗メモリ、又は上記のいずれかの組み合わせ、又はその他のタイプのブロック又はバイトアドレス指定可能なインプレース書き込みメモリが含まれ得る。
【0041】
バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226はまた、統合メモリバッファ(Integrated Memory Buffer:IMB)又は永続メモリ領域(Persistent Memory Region:PMB)などの、電力損失保護エネルギ(オンボードキャパシタなど)を有する揮発性メモリであり得る。揮発性メモリの例には、DRAM(ダイナミックランダムアクセスメモリ)及びシンクロナスDRAM(SDRAM)などのDRAMのバリアントが含まれる。
【0042】
ブロックアドレス指定可能な不揮発性メモリ108は、不揮発性メモリである。不揮発性メモリ(NVM)デバイスは、デバイスへの電力供給が遮断されている場合でも状態が確定するメモリである。1つの実施形態では、ブロックアドレス指定可能な不揮発性メモリ108は、NANDフラッシュメモリ、より具体的には、マルチ閾値レベルのNANDフラッシュメモリ(例えば、シングルレベルセル(「Single-Level Cell:SLC」)、マルチレベルセル(「Multi-Level Cell:MLC」))、トライレベルセル(「Tri-Level Cell:TLC」)、クアッドレベルセル(「Quad-Level Cell:QLC」)、ペンタレベルセル(「Penta-Level Cell:PLC」)又は他のNANDフラッシュメモリ)である。
【0043】
ブロックアドレス指定可能な不揮発性メモリ108は、複数のNANDダイ210-1、…、210-N(NANDフラッシュダイとも呼ばれる)を含む。通常、データは、ブロックアドレス指定可能な不揮発性メモリ108への書き込み帯域幅を最適化するために、マルチストリームソリッドステートドライブ102内の多くのNANDダイ210-1、…、210-Nにわたって書き込まれる(ストライプされる)。
【0044】
ストライプとも呼ばれ得る帯域240は、すべての個々のNANDダイ210-1、…、210-Nの1つ又は複数のブロックにまたがり、これにより、ブロックアドレス指定可能な不揮発性メモリダイ210-1、…、210-Nにわたる並列IO動作を介してIO帯域幅の最大化が可能になる。
【0045】
複数のNANDダイ210-1、…、210-Nのそれぞれの不揮発性メモリは、複数のブロック220-1、…、220-Nを含み、各ブロックは複数のページを含む。複数のページの各ページは、データ及び関連付けられたメタデータを記憶する。
【0046】
一実施形態では、各NANDダイ210-1、…、210-Nは2048ブロックを有し、各ブロックは64ページを有し、各ページは2048バイトのデータ及び64バイトのメタデータを記憶できる。帯域240は、複数のブロック220-1、…、220-Nを含み得、NANDダイごとに1つのブロックが帯域240に割り当てられる。マルチストリームソリッドステートドライブ102では、複数のNANDダイ内の複数のブロックを有する帯域240をストリームに割り当てることができるか、又は、NANDダイ内の1つ又は複数の個々のブロックをストリームに割り当てることができる。他の実施形態では、NANDダイごとに複数のブロックを帯域240に割り当てることができる。例えば、NANDダイごとにnの2乗(2、4、8…)ブロックを帯域240に割り当てることができる。
【0047】
ソリッドステートドライブコントローラ回路104内の不揮発性ブロックアドレス指定可能なメモリコントローラ回路212は、ブロックアドレス指定可能な不揮発性メモリ108のために、ホスト回路112から受信したコマンド(例えば、読み取りコマンド、書き込みコマンド(「プログラム」)、消去コマンド)をキューに入れて処理する。ホストI/Oコマンドに関連付けられたデータ、例えば、ホスト回路112からPCIeバス120を介して受信されたホスト読み取りコマンド及びホスト書き込みコマンドは、スタティックランダムアクセスメモリ230内のバッファ216に記憶される。バッファ216は、転送バッファ(Transfer Buffer:TBUF)とも呼ばれ得る。受信されたホストI/Oコマンドは、ホストインターフェース回路202内のコマンドキュー254に格納される。
【0048】
図3は、ブロックアドレス指定可能な不揮発性メモリ108及びホスト回路112の間のストリームのデータの転送を管理するために使用される、バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226用のスタティックランダムアクセスメモリ230内のキューを示す。バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226は、ブロックアドレス指定可能な不揮発性メモリ108と同じ間接ユニットの粒度で管理される。
【0049】
バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226は、空きキュー300、処理中キュー302、及び有効キュー304の3つのキューのうちの1つに割り当てられる間接ユニットのプールを有する。
【0050】
間接ユニットは、ブロックアドレス指定可能な不揮発性メモリ108に書き込むためのホスト書き込み要求の受信に応答して、空きキュー300からのデータ転送のためのストリームに割り当てられる。間接ユニットがデータ転送用のストリームに割り当てられた後、割り当てられた間接ユニットへのポインタが処理中キュー302に移動される。
【0051】
データが割り当てられた間接ユニットに書き込まれた後、割り当てられた間接ユニットへのポインタは有効キュー304に移動される。有効キュー304内の割り当てられた間接ユニット内のデータがブロックアドレス指定可能な不揮発性メモリ108に書き込まれるか、又はホスト回路112によって書き換えられた後、割り当てられた間接ユニットは空きキュー300に移動される。間接ユニットがNANDダイ210-1、…、210-Nに書き込まれる前にホスト回路112によって書き換えられた場合、更新されたホストデータはスタティックランダムアクセスメモリ230のバッファ216で利用可能となる。衝突がない場合、更新されたデータはバッファ216からNANDダイ210-1、…、210-Nに書き込まれる。
【0052】
バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226は、ストリームごとの帯域幅制限なしにマルチストリームソリッドステートドライブ102のサービス品質(Quality of Service:QoS)を向上させ、ストリーム数が増加するにつれて拡張される。
【0053】
図4は、バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226を管理するためにファームウェア213内のファームウェアタスクによって実行される方法を示すフローグラフである。
【0054】
ブロック400において、ホストが非アクティブであるか、又はバイトアドレス指定可能なインプレース書き込み不揮発性メモリ226内の空きスペースが閾値を下回っている場合、処理はブロック402に進み、バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226内の間接ユニットを解放する。
【0055】
ブロック402において、有効キュー304が空の場合、バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226内にブロックアドレス指定可能な不揮発性メモリ108に書き込まれる間接ユニットが存在せず、処理はブロック400に進む。
【0056】
ブロック404において、有効キュー304は空ではなく、バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226内には、ブロックアドレス指定可能な不揮発性メモリ108に書き込まれる間接ユニットが存在する。ブロックアドレス指定可能な不揮発性メモリ108に書き込まれる有効キュー304からの間接ユニットは、LRU(Least Recently Used(最近最も使われなかったもの))、FIFO(First In First Out(先入れ先出し))、又はNANDダイの非アクティブ状態に基づいて選択され得る。
【0057】
一実施形態では、NANDダイの非アクティブ状態は、NANDダイ上のレディ/ビジー信号の状態によって決定できる。レディ/ビジー信号の状態は、ソリッドステートドライブコントローラ回路104によって読み取ることができる。書き込むために選択される間接ユニットの数は、間接ユニットのサイズ及びNANDダイの物理レイアウトに依存する。例えば、間接ユニットのサイズが4KiBであり、NANDダイがデュアルプレーンを有し、NANDダイ内のページが16KiBである実施形態では、8つの間接ユニットが選択される。選択された間接ユニットは、バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226から読み取られ、ブロックアドレス指定可能な不揮発性メモリ108に書き込まれる。
【0058】
ブロック406において、L2Pテーブル252は、間接ユニットが書き込まれたブロックアドレス指定可能な不揮発性メモリ108内の物理アドレスで更新される。
【0059】
ブロック408において、選択された間接ユニットは有効キュー304から空きキュー300に移動される。
【0060】
図5は、ホスト回路112から受信した書き込み要求に応答して、ソリッドステートドライブ102内のファームウェア213内のファームウェアタスクによって実行される動作のフローグラフである。
【0061】
ブロック500において、書き込み要求が向けられたNANDダイがビジーである場合、これはNANDダイ上のレディ/ビジー信号の状態に基づいて決定でき、処理はブロック502に進む。NANDダイがビジーでない場合、処理はブロック504に進む。
【0062】
ブロック502において、NANDダイはビジーである。書き込み要求に関連付けられたデータは、バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226(不揮発性メモリキャッシュ又は永続メモリキャッシュとも呼ばれ得る)に書き込まれる。処理はブロック506に進み、バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226に書き込まれたデータの物理的位置でL2Pテーブル252を更新する。
【0063】
ブロック504において、NANDダイはビジーではない。書き込み要求に関連付けられたデータは、NANDダイに直接書き込まれる。処理はブロック506に進み、NANDダイに書き込まれたデータの物理的位置でL2Pテーブル252を更新する。
【0064】
ブロック506において、一実施形態では、L2Pテーブル252内のL2Pエントリの最上位ビット(Most Significant Bit:MSB)が、物理ブロックアドレスに対応するメモリの識別子として使用される。MSBの状態は、データがNANDダイに記憶されているか、又はバイトアドレス指定可能なインプレース書き込み不揮発性メモリ226に記憶されているかを示すために使用される。例えば、MSBの状態が論理「1」である場合、残りのビットは、バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226内のオフセットを表し、MSBの状態が論理「0」である場合、残りのビットは、NANDダイ内のアドレスを表す。
【0065】
図6は、ホスト回路112から受信した読み取り要求に応答して、ソリッドステートドライブ102内のファームウェア213内のファームウェアタスクによって実行される動作のフローグラフである。
【0066】
ブロック600において、ホスト回路112から受信したブロックアドレス指定可能な不揮発性メモリ108に向けられた読み取り要求に応答して、ソリッドステートドライブコントローラ回路212は、L2Pテーブル252内の読み取り要求に含まれる論理ブロックアドレスに対応するエントリを読み取って、ブロックアドレス指定可能な不揮発性メモリ108内の物理アドレスを取得する。
【0067】
ブロック602において、物理アドレスがバイトアドレス指定可能なインプレース書き込み不揮発性メモリ226内にある場合、処理はブロック604に進む。物理アドレスがブロックアドレス指定可能な不揮発性メモリ108内にある場合、処理はブロック606に進む。
【0068】
ブロック604において、バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226内のデータは、バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226から読み取られ、ソリッドステートドライブコントローラ回路212内のダイレクトメモリアクセス(Direct Memory Access:DMA)コントローラ224(DMAエンジン又はDMA回路とも呼ばれる)によってホスト回路112に移動される。
【0069】
ブロック606において、ソリッドステートドライブコントローラ回路212は、ブロックアドレス指定可能な不揮発性メモリ108からデータを読み取り、そのデータをスタティックランダムアクセスメモリ230内のバッファ216に書き込む。
【0070】
ブロック608において、データがスタティックランダムアクセスメモリ230内のバッファ216に書き込まれた後、データはバッファ216から読み取られ、ソリッドステートドライブコントローラ回路212内のDMAコントローラ224によってホスト回路に移動される。
【0071】
図7は、マルチストリームソリッドステートドライブ102内の電力損失回復(PLR)イベントを処理する方法のフローグラフである。
【0072】
ホスト書き込み中、バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226内のデータ及びスタティックランダムアクセスメモリ230内のバッファ216は、両方とも電力損失保護(PLI)セーフである。したがって、電力損失の前に追加の電力損失処理は必要ない。電力損失後のマルチストリームソリッドステートドライブ102のその後の電源投入において、ソリッドステートドライブコントローラ回路104内のファームウェア213は、L2Pテーブル252を電力損失前の最新の状態に回復する。電力損失回復タスクの正確性は、最初にバイトアドレス指定可能なインプレース書き込み不揮発性メモリ226からデータを回復することによって電力損失前に、バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226が論理ブロックアドレスの最新のコピーを有することを保証することによって維持される。
【0073】
ブロック700において、ソリッドステートドライブ102は、NANDダイ(NANDメディアとも呼ばれる)210-1、…、201-Nからのデータを再実行する。再実行中、ソリッドステートドライブコントローラ回路104は、ブロックアドレス指定可能な不揮発性メモリ108からL2Pテーブル252のバックアップコピーを読み取る。しかし、ブロックアドレス指定可能な不揮発性メモリ108内のL2Pテーブル252のバックアップコピーは、PLIイベント前の最新のL2Pテーブル252ではない可能性がある。PLIイベントの前に最新のL2Pテーブル252を回復するために、ソリッドステートドライブコントローラ回路104は、L2Pテーブル252のバックアップコピーがPLIイベントの前にブロックアドレス指定可能な不揮発性メモリ108に書き込まれた後、ホスト書き込みを再実行する。ホスト書き込みは、対応する帯域240の帯域ジャーナルを読み取り、ホスト書き込み(ホストインターフェース回路202によって受信されるホスト回路からの書き込み動作)の論理ブロックアドレスシーケンスを検証することによって再実行される。
【0074】
ブロック702において、バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226は、PLIイベントの検出前にホスト書き込みを記憶する。ソリッドステートドライブ102は、バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226に記憶されたデータを再実行する、すなわち、バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226内のホスト書き込みでL2Pテーブル252を更新する。
【0075】
図8は、マルチストリームソリッドステートドライブ102を含むコンピュータシステム800の一実施形態のブロック図である。コンピュータシステム800は、限定されないが、サーバ、ワークステーションコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、及び/又はタブレットコンピュータを含むコンピューティングデバイスに対応できる。
【0076】
コンピュータシステム800は、プロセッサ、グラフィックス、メモリ、及び入力/出力(I/O)制御ロジックを1つのSoCパッケージに組み合わせるシステムオンチップ(System On Chip:SOC又はSystem on Chip:SoC)804を含む。SoC804は、少なくとも1つの中央処理装置(Central Processing Unit:CPU)モジュール808、揮発性メモリ826及び/又は不揮発性メモリ822に結合され得るメモリコントローラ814、及びグラフィックスプロセッサユニット(Graphics Processor Unit:GPU)810を含む。他の実施形態では、メモリコントローラ814は、SoC804の外部にあり得る。CPUモジュール808は、少なくとも1つのプロセッサコア802及びレベル2(L2)キャッシュ806を含む。
【0077】
図示されていないが、プロセッサコア802のそれぞれは、1つ又は複数の命令/データキャッシュ、実行ユニット、プリフェッチバッファ、命令キュー、分岐アドレス計算ユニット、命令デコーダ、浮動小数点ユニット、リタイアユニットなどを内部に含み得る。1つの実施形態による、CPUモジュール808は、インテル(登録商標)社によって提供されるプロセッサのようなシングルコア又はマルチコア汎用プロセッサに対応できる。
【0078】
グラフィックスプロセッサユニット(GPU)810は、1つ又は複数のGPUコア、及びGPUコアのグラフィックス関連データを記憶できるGPUキャッシュを含み得る。GPUコアは、1つ又は複数の実行ユニット及び1つ又は複数の命令及びデータキャッシュを内部に含み得る。さらに、グラフィックスプロセッサユニット(GPU)810は、1つ又は複数の頂点処理ユニット、ラスタライズユニット、メディア処理ユニット、及びコーデックなど、図8に示されていない他のグラフィックスロジックユニットを含み得る。
【0079】
I/Oサブシステム812内には、プロセッサコア802内で利用されるホスト通信プロトコルを特定のI/Oデバイスと互換性のあるプロトコルに変換するために、1つ又は複数のI/Oアダプタ816が存在する。アダプタが変換に利用できる一部のプロトコルには、ペリフェラルコンポーネントインターコネクト(Peripheral Component Interconnect:PCI)-エクスプレス(Peripheral Component Interconnect Express:PCIe);ユニバーサルシリアルバス(Universal Serial Bus:USB);シリアルアドバンストテクノロジアタッチメント(Serial Advanced Technology Attachment:SATA)及び電気電子技術者協会(Institute of Electrical and Electronics Engineers:IEEE)1594「ファイヤワイヤ」がある。
【0080】
I/Oアダプタ816は、例えば、ディスプレイ及び/又はタッチスクリーンディスプレイ840、プリンタ、キーパッド、キーボード、通信ロジック、有線及び/又は無線を含むユーザインターフェースデバイス、ハードディスクドライブ(「Hard Disk Drive:HDD」)、ソリッドステートドライブ(「Solid-State Drive:SSD」)、リムーバブルストレージメディア、デジタルビデオディスク(Digital Video Disk:DVD)ドライブ、コンパクトディスク(Compact Disk:CD)ドライブ、独立ディスクの冗長アレイ(Redundant Array of Independent Disk:RAID)、テープドライブを含むストレージデバイス、又はその他のストレージデバイスを含み得る外部I/Oデバイス824と通信できる。ストレージデバイスは、限定されないが、SAS(シリアルアタッチド小型コンピュータシステムインターフェース(Serial Attached SCSI(Small Computer System Interface))、PCIe(ペリフェラルコンポーネントインターコネクトエクスプレス)、NVMe(NVMエクスプレス) over PCIe(ペリフェラルコンポーネントインターコネクトエクスプレス)、及びSATA(シリアルATA(アドバンストテクノロジアタッチメント))を含む様々なプロトコルの1つ又は複数を使用して、1つ又は複数のバスを通じて通信可能及び/又は物理的に結合され得る。
【0081】
さらに、1つ又は複数の無線プロトコルI/Oアダプタが存在し得る。無線プロトコルの例としては、特に、IEEE802.15及びBluetooth(登録商標)4.0などのパーソナルエリアネットワーク;IEEE802.11ベースの無線プロトコル;及びセルラプロトコルなどの無線ローカルエリアネットワークで使用される。
【0082】
I/Oアダプタ816は、ソリッドステートドライブコントローラ回路104、ホストインターフェース回路202、及び1つ又は複数のNANDダイ210-1、…、210-Nを含むブロックアドレス指定可能な不揮発性メモリ108を含むソリッドステートドライブ(「SSD」)102と通信することもできる。ソリッドステートドライブコントローラ回路104は、ファームウェア213及びバイトアドレス指定可能なインプレース書き込み不揮発性メモリ226を含む。
【0083】
I/Oアダプタ816は、バス120を介してNVMe(NVMエクスプレス)over PCIe(ペリフェラルコンポーネントインターコネクトエクスプレス)プロトコルを使用して、マルチストリームソリッドステートドライブ102内のホストインターフェース回路202に通信可能に結合されるペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)アダプタを含み得る。
【0084】
揮発性メモリとは、デバイスへの電力供給が遮断された場合に、状態(したがって、その中に記憶されるデータ)が不定になるメモリである。動的揮発性メモリでは、状態を維持するためにデバイスに記憶されているデータをリフレッシュする必要がある。動的揮発性メモリの一例には、DRAM(ダイナミックランダムアクセスメモリ)、又はシンクロナスDRAM(SDRAM)などのいくつかのバリアントがある。本明細書に記載されるように、メモリサブシステムは、DDR3(ダブルデータレートバージョン3、2007年6月27日にJEDEC(半導体技術協会)によって最初にリリース)などのいくつかのメモリ技術と互換性があり得る。DDR4(DDRバージョン4、JESD79-4、2012年9月にJEDECによって最初に公開された)、DDR5(DDRバージョン5、JESD79-5、2020年7月に最初に公開された)、LPDDR3(低電力DDRバージョン3、JESD209-3B、2013年8月にJEDECによって)、LPDDR4(LPDDRバージョン4、JESD209-4、2014年8月にJEDECによって最初に公開)、LPDDR5(LPDDRバージョン5、JESD209-5A、2020年1月にJEDECによって最初に公開)、WI02(ワイド入力/出力バージョン2、JESD229-2、2014年8月にJEDECによって最初に公開)、HBM(高帯域幅メモリ、JESD235、2013年10月にJEDECによって最初に公開)、HBM2(HBMバージョン2、JESD235C、2020年1月にJEDECによって最初に公開)、又はHBM3(HBMバージョン3、現在JEDECで議論中)、又はその他又はメモリ技術の組み合わせ、及びそのような仕様の派生物又は拡張に基づく技術などのいくつかのメモリ技術と互換性があり得る。JEDEC規格は、www.jedec.orgで入手できる。
【0085】
電源842は、システム800の構成要素に電力を供給する。より具体的には、電源842は、典型的には、システム800の構成要素に電力を供給するために、システム800の1つ又は複数の電力供給844とインターフェースする。一例では、電力供給844は、壁コンセントに差し込むためのAC-DC(交流から直流)アダプタを含む。そのようなAC電力は、再生可能エネルギ(例えば、太陽光発電)電源842とすることができる。一例では、電源842は、外部AC-DCコンバータなどのDC電源を含む。一例では、電源842又は電力供給844は、充電フィールドに近接して充電するための無線充電ハードウェアを含む。一例では、電源842は、内部電池又は燃料電池電源を含むことができる。
【0086】
ソリッドステートドライブ102内部のバイトアドレス指定可能なインプレース書き込み不揮発性メモリ226についての実施形態を説明してきた。別の実施形態では、バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226は、ソリッドステートドライブ102の外部にあり、複数のソリッドステートドライブ102にわたって共有できる。例えば、バイトアドレス指定可能なインプレース書き込み不揮発性メモリ226は、揮発性メモリ826内、例えば、電池バックアップされた揮発性ランダムアクセスメモリ内、又は不揮発性メモリ822内にあり得る。
【0087】
本明細書に例示されるフロー図は、様々なプロセスアクションのシーケンスの例を提供する。フロー図は、ソフトウェア又はファームウェアルーチンによって実行される動作、及び物理的動作を示すことができる。1つの実施形態では、フロー図は、ハードウェア及び/又はソフトウェアの形で実施され得る有限ステートマシン(FSM)の状態を示し得る。特定のシーケンス又は順序で示されているが、特に明記しない限り、アクションの順序は修正できる。したがって、例示される実施形態は一例として理解されるべきであり、プロセスは異なる順序で実行でき、いくつかのアクションは、並列に実行することができる。さらに、様々な実施形態では1つ又は複数のアクションを省略することができ、したがって、すべての実施形態ですべてのアクションが必要なわけではない。他のプロセスフローが可能である。
【0088】
様々な動作又は機能が本明細書に記載されている限り、それらはソフトウェアコード、命令、構成、及び/又はデータとして記載又は定義することができる。コンテンツは、直接実行可能(「オブジェクト」又は「実行可能」形式)、ソースコード、又は差分コード(「デルタ」又は「パッチ」コード)にすることができる。本明細書に記載の実施形態のソフトウェアコンテンツは、コンテンツが記憶された製品を介して、又は通信インターフェースを介してデータを送信するための通信インターフェースを動作させる方法を介して提供することができる。機械可読記憶媒体は、記述された機能又は動作を機械に実行させることができ、記録可能/記録不可能な媒体(例えば、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイスなど)などの機械(例えば、コンピューティングデバイス、電子システムなど)によってアクセス可能な形態で情報を記憶する任意の機構を含む。通信インターフェースは、メモリバスインターフェース、プロセッサバスインターフェース、インターネット接続、ディスクコントローラなどのような、別のデバイスと通信するためのハードワイヤード、無線、光学などの媒体のいずれかとインターフェースする任意の機構を含む。通信インターフェースは、ソフトウェアコンテンツを記述するデータ信号を提供するために、構成パラメータを提供すること、及び/又は通信インターフェースを準備するための信号を送信することによって構成することができる。通信インターフェースは、通信インターフェースに送信される1つ又は複数のコマンド又は信号を介してアクセスすることができる。
【0089】
本明細書に記載の様々な構成要素は、記載される動作又は機能を実行するための手段とすることができる。本明細書に記載の各構成要素は、ソフトウェア、ハードウェア、又はそれらの組み合わせを含む。構成要素は、ソフトウェアモジュール、ハードウェアモジュール、専用ハードウェア(例えば、特定用途向けハードウェア、特定用途向け集積回路(ASIC)、デジタルシグナルプロセッサ(DSP)など)、組み込みコントローラ、ハードワイヤード回路などとして実装することができる。
【0090】
本明細書に記載される内容に加えて、開示される実施形態及び本発明の実装に対して、それらの範囲から逸脱することなく様々な修正を行うことができる。
【0091】
したがって、本明細書の例示及び例は、限定的な意味ではなく、例示的な意味で解釈されるべきである。本発明の範囲は、以下の特許請求の範囲を参照することによってのみ評価されるべきである。
図1
図2
図3
図4
図5
図6
図7
図8
【国際調査報告】