(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-13
(54)【発明の名称】ソリッドステートドライブ内のホスト制御されたガベージコレクション
(51)【国際特許分類】
G06F 12/02 20060101AFI20240306BHJP
G06F 12/00 20060101ALI20240306BHJP
【FI】
G06F12/02 530E
G06F12/00 597U
G06F12/00 560B
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023559730
(86)(22)【出願日】2022-03-28
(85)【翻訳文提出日】2023-11-13
(86)【国際出願番号】 US2022022194
(87)【国際公開番号】W WO2022212285
(87)【国際公開日】2022-10-06
(32)【優先日】2021-03-27
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】523351302
【氏名又は名称】エスケイ ハイニックス ナンド プロダクト ソリューションズ コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ドゥッタ、ビシュワジット
(72)【発明者】
【氏名】ラマリンガム、アナンド、エス.
(72)【発明者】
【氏名】トライカ、サンジーブ、エヌ.
(72)【発明者】
【氏名】ガラ、パラブ、エイチ.
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA10
5B160CB01
5B160CD01
5B160MM01
(57)【要約】
ソリッドステートドライブに通信可能に結合されたホストシステムがソリッドステートドライブ内のガベージコレクションを制御できるようにすることによって、ソリッドステートドライブでの読み取りサービス品質が向上する。制御されたガベージコレクションを使用することによって、ホストシステムは、ソリッドステートドライブ内のガベージコレクションの開始及び停止のタイミング、及びガベージコレクション動作に関与するNANDダイの数を制御できる。
【特許請求の範囲】
【請求項1】
ソリッドステートドライブであって、
前記ソリッドステートドライブに通信可能に結合されたホストシステムから前記ソリッドステートドライブ内で動作を実行するためのコマンドを受信するためのコントローラ回路;
データを記憶するための複数の不揮発性メモリダイ;及び
前記複数の不揮発性メモリダイに書き込まれるデータを記憶するためのバッファを備え、前記バッファの第1の部分は、ガベージコレクション動作中に前記複数の不揮発性メモリダイの第1の部分のうちの1つに書き込まれるべきデータを記憶し、前記バッファの第2の部分はホスト書き込みコマンドを記憶し、前記バッファの前記第1の部分及び前記複数の不揮発性メモリダイの前記第1の部分は、前記ホストシステムにより構成可能である、ソリッドステートドライブ。
【請求項2】
前記複数の不揮発性メモリダイはNANDダイである、請求項1に記載のソリッドステートドライブ。
【請求項3】
前記複数の不揮発性メモリダイの前記第1の部分は、前記ホストシステムからの入力/出力動作の数に依存する、請求項1または2に記載のソリッドステートドライブ。
【請求項4】
前記ホストシステムは、ガベージコレクションのために最大書き込み増幅率を構成する、請求項1から3のいずれか一項に記載のソリッドステートドライブ。
【請求項5】
前記ソリッドステートドライブは、ガベージコレクションのための書き込み動作を実行するためにブロックアドレス指定可能な不揮発性メモリダイの最大数を管理する、請求項1から4のいずれか一項に記載のソリッドステートドライブ。
【請求項6】
前記ソリッドステートドライブは、前記バッファの前記第1の部分及び前記バッファの前記第2の部分の比率を管理する、請求項1から5のいずれか一項に記載のソリッドステートドライブ。
【請求項7】
前記ソリッドステートドライブは、前記ソリッドステートドライブの状態及び測定された読み取りサービス品質に基づいて、ガベージコレクション書き込み動作を実行するためのブロックアドレス指定可能な不揮発性メモリダイの最大数、及び前記バッファの前記第1の部分及び前記バッファの前記第2の部分の比率を調整する、請求項1から6のいずれか一項に記載のソリッドステートドライブ。
【請求項8】
コントローラ回路によって、ソリッドステートドライブに通信可能に結合されたホストシステムから前記ソリッドステートドライブ内で動作を実行するためのコマンドを受信する段階;
複数の不揮発性メモリダイにデータを記憶する段階;及び
前記複数の不揮発性メモリダイに書き込まれるべきデータをバッファ内に記憶する段階を備え、前記バッファの第1の部分は、ガベージコレクション動作中に前記複数の不揮発性メモリダイの第1の部分のうちの1つに書き込まれるデータを記憶し、前記バッファの第2の部分はホスト書き込みコマンドを記憶し、前記バッファの前記第1の部分及び前記複数の不揮発性メモリダイの前記第1の部分は前記ホストシステムにより構成可能である、方法。
【請求項9】
前記複数の不揮発性メモリダイはNANDダイである、請求項8に記載の方法。
【請求項10】
前記複数の不揮発性メモリダイの前記第1の部分は、前記ホストシステムからの入力/出力動作の数に依存する、請求項8または9に記載の方法。
【請求項11】
前記ホストシステムは、ガベージコレクションのために最大書き込み増幅率を構成する、請求項8から10のいずれか一項に記載の方法。
【請求項12】
前記ソリッドステートドライブは、ガベージコレクションのための書き込み動作を実行するためにブロックアドレス指定可能な不揮発性メモリダイの最大数を管理する、請求項8から11のいずれか一項に記載の方法。
【請求項13】
前記ソリッドステートドライブは、前記バッファの前記第1の部分及び前記バッファの前記第2の部分の比率を管理する、請求項8から12のいずれか一項に記載の方法。
【請求項14】
前記ソリッドステートドライブは、前記ソリッドステートドライブの状態及び測定された読み取りサービス品質に基づいて、ガベージコレクション書き込み動作を実行するためのブロックアドレス指定可能な不揮発性メモリダイの最大数、及び前記バッファの前記第1の部分及び前記バッファの前記第2の部分の比率を調整する、請求項8から13のいずれか一項に記載の方法。
【請求項15】
プロセッサ;及び
ソリッドステートドライブを備え、前記ソリッドステートドライブは、
前記ソリッドステートドライブに通信可能に結合された前記プロセッサから前記ソリッドステートドライブ内で動作を実行するためのコマンドを受信するためのコントローラ回路;
データを記憶するための複数の不揮発性メモリダイ;及び
前記複数の不揮発性メモリダイに書き込まれるべきデータを記憶するためのバッファを有し、
前記バッファの第1の部分は、ガベージコレクション動作中に前記複数の不揮発性メモリダイの第1の部分のうちの1つに書き込まれるべきデータを記憶し、前記バッファの第2の部分はホスト書き込みコマンドを記憶し、前記バッファの前記第1の部分及び前記複数の不揮発性メモリダイの前記第1の部分は前記プロセッサにより構成可能である、システム。
【請求項16】
前記複数の不揮発性メモリダイの前記第1の部分は、前記プロセッサからの入力/出力動作の数に依存する、請求項15に記載のシステム。
【請求項17】
前記プロセッサは、ガベージコレクションのために最大書き込み増幅率を構成する、請求項15または16に記載のシステム。
【請求項18】
前記ソリッドステートドライブは、ガベージコレクションのための書き込み動作を実行するためにブロックアドレス指定可能な不揮発性メモリダイの最大数を管理する、請求項15から17のいずれか一項に記載のシステム。
【請求項19】
前記ソリッドステートドライブは、前記バッファの前記第1の部分及び前記バッファの前記第2の部分の比率を管理する、請求項15から18のいずれか一項に記載のシステム。
【請求項20】
前記プロセッサに通信可能に結合されたディスプレイ;又は
前記プロセッサに結合された電池
の1つ又は複数をさらに備える、請求項15から19のいずれか一項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2021年3月27日に出願された米国特許出願第17/214,819号の利益を主張し、その全体が参照により本明細書に組み込まれる。
【背景技術】
【0002】
本開示はソリッドステートドライブに関し、特にソリッドステートドライブ内のガベージコレクションに関する。
【0003】
不揮発性メモリは、デバイスへの電力供給が遮断された場合でも状態が確定しているメモリを指す。ソリッドステートドライブは、データを不揮発性メモリに記憶するストレージデバイスである。典型的には、ソリッドステートドライブには、NANDフラッシュなどのブロックベースのメモリ、及びソリッドステートドライブに通信可能に結合されたホストから受信した、NANDフラッシュに向けられた読み取り/書き込み要求を管理するコントローラが含まれる。
【0004】
ソリッドステートドライブ内のNANDフラッシュのブロックに記憶されているデータが不要になった場合、データを記憶している1つ又は複数のブロックを新しいデータの記憶に使用できるようにするには、データを消去しなければならない。消去する前に、1つ又は複数のブロック内の有効なデータをNANDフラッシュ内の他のブロックに書き込まなければならない。他のブロックへの有効なデータの書き込み及びNANDフラッシュの消去動作は、通常、「ガベージ」コレクション(ガベージコレクション)と呼ばれる。
【図面の簡単な説明】
【0005】
特許請求される主題の実施形態の特徴は、以下の詳細な説明が進むにつれて、及び同様の数字が同様の部分を示す図面を参照することによって明らかになるであろう。
【0006】
【
図1】ソリッドステートドライブに通信可能に結合されたホスト回路を含むコンピュータシステムのブロック図である。
【0007】
【
図2】
図1のソリッドステートドライブの一実施形態のブロック図である。
【0008】
【
図3】ソリッドステートドライブ内のブロックアドレス指定可能な不揮発性メモリの総容量を表す図である。
【0009】
【
図4】本発明の原理による、制御されたガベージコレクションゾーン内で制御されたガベージコレクションを実行するためのファームウェアの構成要素を示す。
【0010】
【
図5】制御されたガベージコレクションを実行するように制御されたガベージコレクションマネージャ400を構成する方法を示すフローグラフである。
【0011】
【
図6】ソリッドステートドライブ内に制御されたガベージコレクションを構成するために制御されたガベージコレクションマネージャによって実行される方法を示すフローグラフである。
【0012】
【
図7】ソリッドステートドライブにおいて制御されたガベージコレクションを実行する方法を示すフローグラフである。
【0013】
【
図8】時間枠中の測定された読み取りサービス品質帯域幅の使用率に基づいて、ガベージコレクションに使用されるダイの数及びソリッドステートドライブ内のガベージコレクションに使用されるバッファの比率を適合させるためにソリッドステートドライブ内で実行される方法を示すフローグラフである。
【0014】
【
図9】比例・積分・微分制御を使用して測定された読み取りサービス品質帯域幅の使用率に基づいてソリッドステートドライブ内のガベージコレクション及びバッファ使用に使用されるダイの数を適合させるためにソリッドステートドライブ内で実行される方法を示すフローグラフである。
【0015】
【
図10】ソリッドステートドライブを含むコンピュータシステムの一実施形態のブロック図である。
【0016】
以下の詳細な説明は、特許請求される主題の例示的な実施形態を参照して進められるが、その多くの代替、修正、及び変形は当業者には明らかであろう。
【0017】
したがって、特許請求される主題は広く捉えられ、添付の特許請求の範囲に記載のように定義されることが意図される。
【発明を実施するための形態】
【0018】
ホストシステムは、高速シリアルコンピュータ拡張バス、例えば、不揮発性メモリエクスプレス(Non-Volatile Memory Express:NVMe)標準プロトコルを使用するペリフェラルコンポーネントインターコネクト(Peripheral Component Interconnect Express:PCIe)バスを介してソリッドステートドライブ(Solid state drive:SSD)と通信できる。不揮発性メモリエクスプレス(NVMe)標準プロトコルは、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)バスを介してソリッドステートドライブと通信するためのホストソフトウェアのレジスタレベルのインターフェースを定義する。
【0019】
ソリッドステートドライブは、不定期にホストシステムから入力/出力(I/O)要求を受信して、NANDメモリ内で読み取り及びプログラム動作を実行できる。I/O要求は、様々なサイズ、キュー深度、及びアイドル期間が散在するランダム性の読み取り動作及び書き込み動作の混合バーストであり得る。NANDメモリの読み取りコマンド及びプログラムコマンドの処理は、ソリッドステートドライブの内部で、様々なエラー処理及びエラー防止の媒体管理ポリシと混在している。これらに加えて、ソリッドステートドライブ内の様々なNAND帯域の変化する無効状態(無効なページの数)により、ソリッドステートドライブの内部データ再配置/ガベージコレクション(GC)が、バースト的になる(アクティブ期間とアイドル期間が混在する)。
【0020】
通常、ソリッドステートドライブ(SSD)には、コントローラに通信可能に結合された独立したNANDダイ(NANDフラッシュダイとも呼ばれる)が含まれており、NANDダイへのI/O動作の並列化が可能になる。NANDダイ上で進行中のプログラム動作の裏側でキューに入れられた、ホストシステムから受信した読み取り要求は、ソリッドステートドライブの読み取り遅延又は読み取りサービス品質(read Quality of Service:rQoS)に重大な影響を与える可能性がある。
【0021】
NANDダイでプログラム動作を実行する時間は、NANDダイで読み取り動作を実行する時間よりもはるかに長くなる。ソリッドステートドライブ内のプログラムの一時停止、再開(Program Suspend Resume:PSR)機能により、進行中のプログラム動作を一時停止して読み取り動作を行うことができるが、プログラムの一時停止、再開により読み取り動作の完了に必要な時間が増加する。99.9パーセンタイルレベルで読み取りQoS(rQoS)が低下する主な原因は、プログラム要求の裏側でキューに入れられる読み取り要求である。
【0022】
ソリッドステートドライブ内でアクティブ期間と、ガベージコレクション動作及びNANDプログラム動作のアイドル期間が混在することにより、NANDプログラム帯域幅がバースト的になる。バーストNANDプログラム帯域幅は、特に、ガベージコレクション帯域幅及びホスト書き込み帯域幅の両方が高い場合に、読み取りサービス品質に悪影響を及ぼす。読み取りサービス品質の制御及び向上には、書き込み時の読み取りの衝突確率(ホスト読み取り要求がホスト書き込み要求の完了を待つ確率)の制御が含まれ、これは、常にプログラムされているNANDダイの数及びソリッドステートドライブ内のNANDダイの最大数に依存する。この書き込み時の読み取りの衝突確率は、プログラム動作を実行するNANDダイの数及びソリッドステートドライブ内のNANDダイの最大数に比例する。例えば、ソリッドステートドライブに124個のNANDダイがあり、すべてのNANDダイが同時にプログラム動作を実行している場合、ホスト読み取りとホスト書き込み(124/124)の書き込み時の読み取りの衝突確率は1である。124個のNANDダイのうち12個がプログラム動作を実行している場合、書き込み時の読み取りの衝突確率(12/124)は0.1、すなわち、すべてのホスト読み取りがホスト書き込み動作と衝突する可能性は10%である。
【0023】
一実施形態では、ソリッドステートドライブに通信可能に結合されたホストシステムがソリッドステートドライブ内のガベージコレクションを制御できるようにすることによって、ソリッドステートドライブでの読み取りサービス品質が向上する。制御されたガベージコレクションを使用することによって、ホストシステムは、ソリッドステートドライブ内のガベージコレクションの開始及び停止のタイミング、及びガベージコレクション動作に関与するNANDダイの数を制御できる。
【0024】
本発明の様々な実施形態及び態様は、以下に論じる詳細を参照して説明され、添付の図面は様々な実施形態を示す。以下の説明及び図面は本発明を例示するものであり、本発明を限定するものとして解釈されるべきではない。本発明の様々な実施形態の十分な理解を提供するために、多くの具体的な詳細が説明される。しかし、場合によっては、本発明の実施形態の簡潔な議論を提供するために、よく知られた又は従来の詳細については説明しない。
【0025】
本明細書での「1つの実施形態(one embodiment)」又は「一実施形態(an embodiment)」への言及は、実施形態に関連して説明される特定の特徴、構造、又は特性が、本発明の少なくとも1つの実施形態に含まれ得ることを意味する。本明細書の様々な箇所で、「1つの実施形態では(in one embodiment)」という語句が現れても、必ずしもすべて同じ実施形態を指してはいない。
【0026】
図1は、ソリッドステートドライブ102に通信可能に結合されたホスト回路112を含むコンピュータシステム100のブロック図である。ホスト回路112はホストメモリ114を含む。1つ又は複数のアプリケーション116(特定のタスク又はタスクのセットを実行するプログラム)及びストレージスタック124及び不揮発性メモリエクスプレス(Non-Volatile Memory Express:NVMe)ドライバ110を含むオペレーティングシステム142は、ホストメモリ114に記憶され得る。
【0027】
オペレーティングシステム142は、メモリ割り当て及び入力/出力(I/O)デバイスへのアクセスを含むコンピュータハードウェア及びソフトウェアを管理するソフトウェアである。
【0028】
オペレーティングシステムの例には、Microsoft(登録商標)Windows(登録商標)、Linux(登録商標)、iOS(登録商標)、Android(登録商標)などがある。Microsoft(登録商標)Windows(登録商標)オペレーティングシステムの実施形態では、ストレージスタック124は、ソリッドステートドライブ102用のポート/ミニポートドライバを含むデバイススタックであり得る。
【0029】
一実施形態では、ホストメモリ114は揮発性メモリである。揮発性メモリとは、デバイスへの電力供給が遮断された場合に、状態(したがって、その中に記憶されるデータ)が不定になるメモリである。動的揮発性メモリでは、状態を維持するためにデバイスに記憶されているデータをリフレッシュする必要がある。動的揮発性メモリの一例には、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory:DRAM)、又はシンクロナスDRAM(Synchronous 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で入手できる。
【0030】
ホスト回路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で入手できる。
【0031】
ソリッドステートドライブ102は、ソリッドステートドライブコントローラ回路104、及びブロックアドレス指定可能な不揮発性メモリ108を含む。ソリッドステートドライブ102内のブロックアドレス指定可能な不揮発性メモリ108に記憶されたデータの読み取り要求は、1つ又は複数のアプリケーション116(特定のタスク又はタスクのセットを実行するプログラム)によって、オペレーティングシステム142内のストレージスタック124を通してソリッドステートドライブコントローラ回路104に発行され得る。
【0032】
ソリッドステートドライブ102内のソリッドステートドライブコントローラ回路104は、ホスト回路112から受信したコマンド(例えば、読み取りコマンド、書き込みコマンド(「プログラム」)、消去コマンド)をキューに入れて処理し、ブロックアドレス指定可能な不揮発性メモリ108内で動作を実行する。ホストインターフェース回路202からソリッドステートドライブコントローラ回路104によって受信されるコマンドは、ホスト入力出力(IO)コマンドと呼ばれ得る。
【0033】
図2は、
図1のソリッドステートドライブ102の実施形態のブロック図である。ソリッドステートドライブ102内のソリッドステートドライブコントローラ回路104は、ホストインターフェース回路202、不揮発性ブロックアドレス指定可能なメモリコントローラ回路212、プロセッサ222、ファームウェア213、及びスタティックランダムアクセスメモリ230を含む。ファームウェア213は、プロセッサ(CPU)122によって実行され得る。ソリッドステートドライブコントローラ回路104は、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array:FPGA)又は特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)に含まれ得る。ファームウェア213は、プロセッサ(CPU)122によって実行され得る。
【0034】
スタティックランダムアクセスメモリ(Static Random Access Memory:SRAM)は揮発性メモリである。揮発性メモリとは、デバイスへの電力供給が遮断された場合に、状態(したがって、その中に記憶されるデータ)が不定になるメモリである。SRAMは、ラッチ回路を使用して各ビットを記憶する揮発性メモリの一種である。SRAMは、ダイナミックランダムアクセスメモリ(DRAM)とは対照的に、SRAMに記憶されたデータは定期的にリフレッシュする必要がないため、通常、バッファメモリとして使用される。
【0035】
スタティックランダムアクセスメモリ230の一部は、ファームウェア213によってガベージコレクションバッファ204として割り当てることができる。スタティックランダムアクセスメモリ230の別の部分は、ファームウェア213によってホストバッファ208として割り当てることができる。ガベージコレクションバッファ204及びホストバッファ208に割り当てられるスタティックランダムアクセスメモリ230の比率は、ソリッドステートドライブ102内の制御されたガベージコレクション用に構成されたNANDダイの数(ソリッドステートドライブ102内のNANDダイの総数の割合)に比例する。制御されたガベージコレクションにより、ホストシステムは、ガベージコレクションを実行するNANDダイの数を制御することによって、ガベージコレクションに使用される不揮発性メモリの帯域幅を制限できる。ガベージコレクションを実行するために選択されるNANDダイの数は、IOアイドル時間(NANDのキューにホストコマンドがない)の間は増やすことができ、IO時間(NANDのホストコマンドがキューに入れられた)の間は減らすことができる。
【0036】
ブロックアドレス指定可能な不揮発性メモリ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フラッシュメモリ)である。
【0037】
ブロックアドレス指定可能な不揮発性メモリ108は、複数の不揮発性メモリダイ210-1、…、210-N、例えば、NANDフラッシュダイを含む。通常、データは、ブロックアドレス指定可能な不揮発性メモリ108への書き込み帯域幅を最適化するために、ソリッドステートドライブ102内の多くのNANDフラッシュダイ210-1、…、210-Nにわたって書き込まれる(ストライプされる)。
【0038】
ストライプとも呼ばれ得る帯域220は、個々の不揮発性メモリダイ210-1、…、210-Nのすべてにまたがり、これにより、不揮発性メモリダイ210-1、…、210-Nにわたる並列IO動作を介してIO帯域幅の最大化が可能になる。所与の時間でガベージコレクション動作に使用されるダイの最大数を制御すると、ガベージコレクションの読み取り時の書き込み衝突確率を制御できる。例えば、制御されたガベージコレクションに使用されるNANDダイの割合は、ソリッドステートドライブ102に必要な読み取りサービス品質に基づいて選択できる。ガベージコレクション動作には、有効なページを他のブロックに書き込むことと、及び有効なページが他のブロックに書き換えられた後にブロックを消去することが含まれる。
【0039】
複数の不揮発性メモリダイ210-1、…、210-Nのそれぞれの不揮発性メモリは複数のブロックを含み、各ブロックは複数のページを含む。複数のページの各ページは、データ及び関連付けられたメタデータを記憶する。一実施形態では、不揮発性メモリダイは2048ブロックを有し、各ブロックは64ページを有し、各ページは2048バイトのデータ及び64バイトのメタデータを記憶できる。
【0040】
新しいデータを書き込み得る前にNANDメモリを消去しなければならず、その結果、ブロックを消去する前にNANDメモリのブロックからデータを移動するための追加のNAND動作が生じ得る。これらの追加のNAND動作により、必要な書き込み回数が増加する乗算効果が生じ、「書き込みの増幅」と呼ばれる「増幅」効果が生じる。例えば、ブロック内の64ページのうち3ページが有効(使用中)で、他のすべてのページが無効(使用されなくなった)の場合、ブロックを消去する前に、3つの有効なページを別のブロックに書き込まなければならず、その結果、消去動作及び新しいデータの書き込みに加えて3つのページ書き込み動作が生じる。書き込み増幅率は、ホスト回路112から受信される、書き込まれるべき新しいデータの量に関連して、ソリッドステートドライブコントローラが書き込まなければならないデータの量を表す数値である。
【0041】
TRIMコマンドはオペレーティングシステム142によって発行され、データブロック内のどのページがもう使用されておらず、無効としてマークできるかをソリッドステートドライブに通知できる。TRIMコマンドにより、ソリッドステートドライブ102は、新しいデータをブロックアドレス指定可能な不揮発性メモリ108に書き込むためのスペースを解放できるようになる。同様に、上書きによっても以前に書き込まれたデータが無効になり、無効なページを解放するために再配置が必要になる。ソリッドステートドライブ102は、ガベージコレクション中に、無効としてマークされたページをブロックアドレス指定可能な不揮発性メモリ内の別のブロックに再配置しない。
【0042】
ソリッドステートドライブコントローラ回路104内の不揮発性ブロックアドレス指定可能なメモリコントローラ回路212は、ブロックアドレス指定可能な不揮発性メモリ108のために、ホストシステムから受信したコマンド(例えば、読み取りコマンド、書き込みコマンド(「プログラム」)、消去コマンド)をキューに入れて処理する。ホストI/Oコマンドに関連付けられたデータ、例えば、ホスト回路112からPCIeバス120を介して受信されたホスト読み取りコマンド及びホスト書き込みコマンドは、バッファ216内のホストバッファ208に記憶される。
【0043】
バッファ216内のガベージコレクションバッファ204は、ソリッドステートドライブ102内のブロックアドレス指定可能な不揮発性メモリ108内の帯域220内の別のブロックに再配置されるように有効としてマークされたページにデータを記憶するために使用される。ガベージコレクションバッファ204に記憶されているページから読み取られたデータは、ブロックアドレス指定可能な不揮発性メモリ108の帯域220の不揮発性メモリダイ210-1、…、210-Nの別のブロックに書き込まれる(再配置される)。
【0044】
同じNANDダイに対するガベージコレクション読み取り動作が進行中の間に、NANDダイに対するホスト読み取り動作の要求を受信できる。これは、「読み取り時の読み取りの衝突」と呼ばれ得る。「読み取り時の読み取りの衝突」は、ホスト読み取り動作の読み取り遅延の増加を招く。読み取り遅延には、ガベージコレクション読み取り動作を完了する時間、及びエラー処理(必要な場合)を実行する時間が含まれる。
【0045】
同じNANDダイに対するガベージコレクションプログラム動作が進行中の間に、NANDダイに対するホスト読み取り動作の要求を受信できる。同じNANDダイに対するホストプログラム動作が進行中の間に、NANDダイに対するホスト読み取り動作の要求を受信できる。これらは、「書き込み時の読み取りの衝突」と呼ばれ得る。「書き込み時の読み取りの衝突」は、書き込み動作の書き込み遅延の増加を招く。書き込み遅延には、プログラム動作を一時停止し、読み取り動作を実行してプログラム動作を再開する時間が含まれる。
【0046】
一実施形態では、ソリッドステートドライブ102は、エンタープライズ及びデータセンタSSDフォームファクタ(Enterprise and Data Center SSD Form Factor:EDSFF)を有し、124個以上のNANDダイを含む。
【0047】
図3は、ソリッドステートドライブ102内のブロックアドレス指定可能な不揮発性メモリ108の総容量を表す図である。位置302では、ブロックアドレス指定可能な不揮発性メモリ108は空である。位置308では、ブロックアドレス指定可能な不揮発性メモリ108は満杯である。デフォルトのガベージコレクションゾーン310は、位置306から位置308の範囲内にある。デフォルトのガベージコレクションは、ソリッドステートドライブがほぼ満杯になったとき、すなわち、使用されたブロックアドレス指定可能な不揮発性メモリ108の容量がデフォルトのガベージコレクションゾーン310内であるときにトリガされる。
【0048】
一実施形態では、ガベージコレクションは、ブロックアドレス指定可能な不揮発性メモリ108で使用される容量が制御されたガベージコレクションゾーン312内にある間にトリガされる。制御されたガベージコレクションゾーン312は、位置304から位置306の範囲内にある。ソリッドステートドライブ102は、ブロックアドレス指定可能な不揮発性メモリ108内の適切なブロックを、適度に高い無効性及びより低い書き込み増幅率でブロックアドレス指定可能な不揮発性メモリ108内に再配置できるように制御されたガベージコレクションゾーン312を決定する。
【0049】
図4は、本発明の原理による、制御されたガベージコレクションゾーン312内で制御されたガベージコレクションを実行するためのファームウェア213の構成要素を示す。ファームウェア213の構成要素には、制御されたガベージコレクションマネージャ400、ガベージコレクションモジュール402、バッファマネージャ404、及びブロックアドレス指定可能な不揮発性メモリマネージャ406が含まれる。制御されたガベージコレクションマネージャ400は、ブロックアドレス指定可能な不揮発性メモリ108内で制御されたガベージコレクションを実行するために、ホスト回路112によって構成可能な3つのパラメータを含む。パラメータには、開始点408、ダイの数410、及び最大書き込み増幅率412が含まれる。開始点408は、ブロックアドレス指定可能な不揮発性メモリ内で制御されたガベージコレクションを、いつ開始できるかを示すために使用される、ブロックアドレス指定可能な不揮発性メモリ内の容量が満杯になった位置である。ダイの数410(ソリッドステートドライブ102内のNANDダイの割合とも呼ばれる)は、制御されたガベージコレクションに同時に使用できるダイの最大数である。最大書き込み増幅率412は、制御されたガベージコレクションのためにブロックアドレス指定可能な不揮発性メモリ108内のページを選択するために使用される。これらのモジュール/マネージャについては、
図5~
図8と関連させて後で説明する。
【0050】
図5は、制御されたガベージコレクションを実行するように、制御されたガベージコレクションマネージャ400を構成する方法を示すフローグラフである。
【0051】
ブロック500において、制御されたガベージコレクションマネージャ400は、ホスト回路112からの、
図3に示す制御されたガベージコレクションゾーン312内の位置304及び位置306の現在の設定を取得するための要求の受信を待つ。一実施形態では、要求は、PCIeバス120を介してソリッドステートドライブ102に送信されるベンダ固有のNVMeコマンドである。
【0052】
ブロック502において、現在の設定を取得する要求の受信に応答して、制御されたガベージコレクションマネージャ400は、制御されたガベージコレクションゾーン312内の位置304及び位置306の現在の設定を返す。
【0053】
ブロック504において、制御されたガベージコレクションマネージャ400は、ホスト回路112からの制御されたガベージコレクションを構成する要求の受信を待つ。制御されたガベージコレクションを構成する要求には、開始点408、ダイの数410、及び最大書き込み増幅率412が含まれる。
【0054】
ブロック506において、制御されたガベージコレクションを構成する要求の受信に応答して、制御されたガベージコレクションマネージャ400は、開始点408、ダイの数410、及び最大書き込み増幅率412を構成する。
【0055】
ブロック508において、制御されたガベージコレクションマネージャ400は、制御されたガベージコレクションのパラメータの構成が完了したことを示す応答をホスト回路112に返す。
【0056】
図6は、ソリッドステートドライブ102内に制御されたガベージコレクションを構成するために制御されたガベージコレクションマネージャ400によって実行される方法を示すフローグラフである。
ブロック600において、データがソリッドステートドライブ内のブロックアドレス指定可能な不揮発性メモリ108に書き込まれるとき、データを記憶するために使用されたブロックアドレス指定可能な不揮発性メモリ108の量が、制御されたガベージコレクションマネージャ400の初期化中に記憶された開始点408と比較される。データを記憶するために使用されるブロックアドレス指定可能な不揮発性メモリ108の量が開始点408よりも多い又はそれに等しい場合、処理はブロック602に進む。そうでない場合、処理はブロック600に進む。
【0057】
ブロック602において、ガベージコレクションに使用されるダイの数が、制御されたガベージコレクションマネージャ400によって構成される。ガベージコレクションに使用されるダイの数は、ダイの数410に記憶されるダイの最大割合に基づいて構成される。
【0058】
ブロック604において、ガベージコレクションに割り当てられたバッファ216の比率が、制御されたガベージコレクションマネージャ400によって構成される。バッファ216内のガベージに使用されるメモリの部分に対するホスト書き込みに使用されるメモリの部分は、ガベージコレクションのダイ率の割合に基づいている。ガベージコレクションバッファ204及びホストバッファ208に割り当てられるバッファ216の比率は、ダイの数410に依存する。ブロック606において、制御されたガベージコレクションマネージャ400は、最大書き込み増幅率412よりも小さい又はそれに等しい無効性を有するNANDダイ内のブロックに対する制御されたガベージコレクションをガベージコレクションモジュール402内に構成する。
【0059】
ブロック608において、制御されたガベージコレクションマネージャ400は、ガベージコレクションモジュール402の開始点408でガベージコレクションを有効にする。
【0060】
図7は、ソリッドステートドライブ102において制御されたガベージコレクションを実行する方法を示すフローグラフである。
【0061】
制御されたガベージコレクションマネージャ400は、パラメータ(ダイの数410及び最大書き込み増幅率412)を使用して、ガベージコレクションのための書き込み動作に同時に関与するNANDダイの数を制御し、ガベージコレクションバッファ204及びホストバッファ208に割り当てられるスタティックランダムアクセスメモリ230の比率を管理する。
【0062】
ガベージコレクションバッファ204は、保留中のガベージコレクション作業項目を有するNANDダイ210-1、…、210-Nの割合が、ガベージコレクションに割り当てられたNANDダイ210-1、…、210-Nの割合よりも小さい又はそれに等しい場合にのみ割り当てられる。したがって、ガベージコレクションに使用されるNANDダイ210-1、…、210-Nの上限は、ホストによって制御される。別の手法は、NANDプログラム動作を実行するNANDダイの割合が、ガベージコレクションに割り当てられたNANDダイ210-1、…、210-Nの割合よりも小さい又はそれに等しい場合にのみ、代わりに、NANDガベージコレクションプログラム動作をディスパッチすることによって、ガベージコレクションのためのNANDプログラム動作を実行するNANDダイ210-1、…、210-Nの数を制御することである。
【0063】
ガベージコレクションモジュール402は、現在ガベージコレクション動作のための書き込みを実行しているNANDダイの数が、ダイの数410よりも少ない又はそれに等しい場合にのみ、ガベージコレクション動作のためにNANDダイに移動されている有効なデータに対する書き込み動作を送信する。ガベージコレクションバッファ204及びホストバッファ208に割り当てられるバッファ216の比率は、ダイの数410に依存する。ダイの数に基づいて書き込みを制御することにより、ガベージコレクション書き込み時のホスト読み取りの衝突確率の制御が可能になる。ガベージコレクション読み取り衝突時のホスト読み取りも同様の方法で制御できる。ダイの数410に基づくバッファ216の割り当ては、ガベージコレクション読み取り時のホスト読み取りの衝突確率も制御する。
【0064】
ブロック700において、データを記憶するために使用されるブロックアドレス指定可能な不揮発性メモリ108の量が開始点408よりも多い又はそれに等しい場合、ガベージコレクションモジュール402は、無効なページの数又はホスト構成値よりも低い書き込み増幅率に基づいてガベージコレクション候補(ブロック)を探す。候補が見つかった場合、ガベージコレクションモジュール402はガベージコレクションを開始し、そうでない場合、ガベージコレクションモジュール402はガベージコレクション候補を探し続ける。書き込み増幅率は、ブロックアドレス指定可能な不揮発性メモリ内の有効なページの不必要な再配置を制御し、その結果、HCGCによって耐久性が低下しないことを保証するために使用される。
【0065】
ブロック702において、ガベージコレクションモジュール402は、スタティックランダムアクセスメモリ230内のバッファ216の一部を割り当てる。
【0066】
ブロック704において、ガベージコレクションバッファの一部が利用可能な場合、処理はブロック706に進む。そうでない場合、処理はブロック700に進む。
【0067】
ブロック706において、ガベージコレクションモジュール402は、ブロックアドレス指定可能な不揮発性メモリからGCブロックを読み取る。
【0068】
ブロック708において、ガベージコレクションモジュール402は、候補ブロックからブロックアドレス指定可能な不揮発性メモリ内の書き込み先ブロックにGCブロックを書き込む。
【0069】
一実施形態では、ホストは、TRIM又は上書きにより、有効なデータを記憶しなくなったブロックアドレス指定可能な不揮発性メモリを解放するために、低IOの期間中に制御されたガベージコレクション動作をトリガする。最小の予約済みNANDダイ帯域幅は、エラー処理及びエラー防止に使用できる。別の実施形態では、ホストは、IOアイドル時間中に制御されたガベージコレクション動作をトリガする。
【0070】
ソリッドステートドライブ内のNANDダイへの書き込み帯域幅は、ホスト書き込み及びガベージコレクションのための書き込みに分割されるため、複雑なマルチスレッドデータセンタのワークロードでは持続書き込み帯域幅が変化し得る。
【0071】
図8及び
図9は、ソリッドステートドライブ102の内部状態及び測定された読み取りサービス品質に基づいて、ソリッドステートドライブ102内のガベージコレクション及びバッファ使用に使用されるダイの数410を適合させるための方法を示す。制御されたガベージコレクション制御ポイント(ダイの数410と、ガベージコレクションバッファ204及びホストバッファ208に割り当てられたバッファ216の比率)は、ソリッドステートドライブ102に必要な読み取りサービス品質を提供しながら、NANDダイの帯域幅利用を最適化するように自動的に調整される。
【0072】
ホスト回路112は、ソリッドステートドライブ102に必要な読み取りサービス品質のための開始点408、最大書き込み増幅率412を構成する。必要な読み取りサービス品質は、ホストによって直接構成でき、ホスト回路112によって構成されたダイの数410から導出できるか、又はホスト回路112によって構成された書き込み時の読み取りの衝突確率から導出できる。
【0073】
ダイの数410は、プログラムの一時停止、再開時間及びプログラムの一時停止、再開中に許可される読み取りの数に基づいて、ホストが要求する読み取りサービス品質を計算するために使用される。ソリッドステートドライブ102は、読み取りサービス品質とダイの数410の内部テーブルを経験的に推定し、維持できる。ソリッドステートドライブ102は、読み取りサービス品質と書き込み時の読み取りの確率の内部テーブルを経験的に推定し、維持できる。ソリッドステートドライブ102は、低ホストIO及び高ホストIOの期間中に、ガベージコレクションのためのNANDダイの帯域幅利用を自動的に増減させることができる。低ホストIOの期間では、制御されたガベージコレクションを実行するためのNANDダイの数を増やすことによって、ガベージコレクションに使用されるNANDダイの帯域幅を増やすことができる。
【0074】
図8は、時間枠中の測定された読み取りサービス品質に基づいて、ガベージコレクションに使用されるダイの数410及びソリッドステートドライブ102内のガベージコレクションに使用されるバッファ216の比率を適合させるためにソリッドステートドライブ102内で実行される方法を示すフローグラフである。
【0075】
ブロック800において、制御されたガベージコレクションモジュール402は、読み取りサービス品質、又は時間枠(期間)中にガベージコレクション書き込みと衝突したホスト読み取りの割合を段階的に監視する。実施形態では、時間枠は約10秒である。
【0076】
ブロック802において、読み取りサービス品質が、要求された読み取りサービス品質の閾値を超えた場合、処理はブロック804に進む。そうでない場合、処理はブロック800に進む。
【0077】
ブロック804において、制御されたガベージコレクションマネージャ400は、ダイの数410をゼロに設定することによって制御されたガベージコレクションを無効にする。
【0078】
ブロック806において、残りの時間枠の間、制御されたガベージコレクションが無効になる。
【0079】
ブロック808において、時間枠の終了時に、ダイの数410を非ゼロの数に設定することによって、制御されたガベージコレクションが有効になる。
【0080】
図9は、比例・積分・微分制御を使用して測定された帯域幅利用に基づいてソリッドステートドライブ102内のガベージコレクション及びバッファ使用に使用されるダイの数410を適合させるためにソリッドステートドライブ102内で実行される方法を示すフローグラフである。
【0081】
ブロック900において、各時間枠の終了時に、制御されたガベージコレクションマネージャ400は、読み取りサービス品質を測定する。例えば、読み取りサービス品質は、一定期間にわたるホスト読み取り動作のための読み取り遅延を監視することによって測定できる。
【0082】
ブロック902において、制御されたガベージコレクションマネージャ400は、現在の読み取りサービス品質を、要求された読み取りサービス品質と比較する。
【0083】
ブロック904において、比較の結果に基づいて、制御されたガベージコレクションマネージャ400はブロック906に進み、ダイの数410を修正するか、又はブロック908に進む。
【0084】
ブロック906において、制御されたガベージコレクションマネージャ400は、要求された読み取りサービス品質及び現在の読み取りサービス品質の間の差としてエラー値を計算し、比例項、積分項、及び微分項に基づいて補正を適用する比例・積分・微分(proportional-integral-derivative:PID)アルゴリズムを使用してダイの数を修正する。
【0085】
ブロック908において、時間枠が終了した場合、処理はブロック900に進む。
【0086】
図10は、ソリッドステートドライブ102を含むコンピュータシステム1000の一実施形態のブロック図である。コンピュータシステム1000は、限定されないが、サーバ、ワークステーションコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、及び/又はタブレットコンピュータを含むコンピューティングデバイスに対応できる。
【0087】
コンピュータシステム1000は、プロセッサ、グラフィックス、メモリ、及び入力/出力(I/O)制御ロジックを1つのSoCパッケージに組み合わせるシステムオンチップ(System On Chip:SOC又はSystem on Chip:SoC)1004を含む。SoC1004は、少なくとも1つの中央処理装置(Central Processing Unit:CPU)モジュール1008、揮発性メモリ1026及び/又は不揮発性メモリ1022に結合され得るメモリコントローラ1014、及びグラフィックスプロセッサユニット(Graphics Processor Unit:GPU)1010を含む。他の実施形態では、メモリコントローラ1014は、SoC1004の外部にあり得る。CPUモジュール1008は、少なくとも1つのプロセッサコア1002及びレベル2(L2)キャッシュ1006を含む。
【0088】
図示されていないが、プロセッサコア1002のそれぞれは、1つ又は複数の命令/データキャッシュ、実行ユニット、プリフェッチバッファ、命令キュー、分岐アドレス計算ユニット、命令デコーダ、浮動小数点ユニット、リタイアユニットなどを内部に含み得る。1つの実施形態による、CPUモジュール1008は、インテル(登録商標)社によって提供されるプロセッサのようなシングルコア又はマルチコア汎用プロセッサに対応できる。
【0089】
グラフィックスプロセッサユニット(GPU)1010は、1つ又は複数のGPUコア、及びGPUコアのグラフィックス関連データを記憶できるGPUキャッシュを含み得る。GPUコアは、1つ又は複数の実行ユニット及び1つ又は複数の命令及びデータキャッシュを内部に含み得る。さらに、グラフィックスプロセッサユニット(GPU)1010は、1つ又は複数の頂点処理ユニット、ラスタライズユニット、メディア処理ユニット、及びコーデックなど、
図10に示されていない他のグラフィックスロジックユニットを含み得る。
【0090】
I/Oサブシステム1012内には、プロセッサコア1002内で利用されるホスト通信プロトコルを特定のI/Oデバイスと互換性のあるプロトコルに変換するために、1つ又は複数のI/Oアダプタ1016が存在する。アダプタが変換に利用できる一部のプロトコルには、ペリフェラルコンポーネントインターコネクト(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「ファイヤワイヤ」がある。
【0091】
I/Oアダプタ1016は、例えば、ディスプレイ及び/又はタッチスクリーンディスプレイ1040、プリンタ、キーパッド、キーボード、通信ロジック、有線及び/又は無線を含むユーザインターフェースデバイス、ハードディスクドライブ(「Hard Disk Drive:HDD」)、ソリッドステートドライブ(「Solid-State Drive:SSD」)、リムーバブルストレージメディア、デジタルビデオディスク(Digital Video Disk:DVD)ドライブ、コンパクトディスク(Compact Disk:CD)ドライブ、独立ディスクの冗長アレイ(Redundant Array of Independent Disk:RAID)、テープドライブを含むストレージデバイス、又はその他のストレージデバイスを含み得る外部I/Oデバイス1024と通信できる。ストレージデバイスは、限定されないが、SAS(シリアルアタッチド小型コンピュータシステムインターフェース(Serial Attached SCSI(Small Computer System Interface))、PCIe(ペリフェラルコンポーネントインターコネクトエクスプレス)、NVMe(NVMエクスプレス) over PCIe(ペリフェラルコンポーネントインターコネクトエクスプレス)、及びSATA(シリアルATA(アドバンストテクノロジアタッチメント))を含む様々なプロトコルの1つ又は複数を使用して、1つ又は複数のバスを通じて通信可能及び/又は物理的に結合され得る。
【0092】
さらに、1つ又は複数の無線プロトコルI/Oアダプタが存在し得る。無線プロトコルの例としては、特に、IEEE802.15及びBluetooth(登録商標)4.0などのパーソナルエリアネットワーク;IEEE802.11ベースの無線プロトコル;及びセルラプロトコルなどの無線ローカルエリアネットワークで使用される。
【0093】
I/Oアダプタ1016は、ソリッドステートドライブコントローラ回路104、ホストインターフェース回路202、及び1つ又は複数の不揮発性メモリダイ210-1、…、210-Nを含むブロックアドレス指定可能な不揮発性メモリ108を含むソリッドステートドライブ(「SSD」)102と通信することもできる。ソリッドステートドライブコントローラ回路104は、ファームウェア213、ガベージコレクションバッファ204、及びホストバッファ208を含む。
【0094】
I/Oアダプタ1016は、バス120を介してNVMe(NVMエクスプレス)over PCIe(ペリフェラルコンポーネントインターコネクトエクスプレス)プロトコルを使用して、ソリッドステートドライブ102内のホストインターフェース回路202に通信可能に結合されるペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)アダプタを含み得る。
【0095】
揮発性メモリとは、デバイスへの電力供給が遮断された場合に、状態(したがって、その中に記憶されるデータ)が不定になるメモリである。動的揮発性メモリでは、状態を維持するためにデバイスに記憶されているデータをリフレッシュする必要がある。動的揮発性メモリの一例には、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で入手できる。
【0096】
オペレーティングシステム142は、メモリ割り当て及びI/Oデバイスへのアクセスを含むコンピュータハードウェア及びソフトウェアを管理するソフトウェアである。オペレーティングシステムの例には、Microsoft(登録商標)Windows(登録商標)、Linux(登録商標)、iOS(登録商標)、Android(登録商標)が含まれる。
【0097】
電源1042は、システム1000の構成要素に電力を供給する。より具体的には、電源1042は、典型的には、システム1000の構成要素に電力を供給するために、システム1000の1つ又は複数の電力供給1044とインターフェースする。一例では、電力供給1044は、壁コンセントに差し込むためのAC-DC(交流から直流)アダプタを含む。そのようなAC電力は、再生可能エネルギー(例えば、太陽光発電)電源1042とすることができる。一例では、電源1042は、外部AC-DCコンバータなどのDC電源を含む。一例では、電源1042又は電力供給1044は、充電フィールドに近接して充電するための無線充電ハードウェアを含む。一例では、電源1042は、内部電池又は燃料電池電源を含むことができる。
【0098】
本明細書に例示されるフロー図は、様々なプロセスアクションのシーケンスの例を提供する。フロー図は、ソフトウェア又はファームウェアルーチンによって実行される動作、及び物理的動作を示すことができる。1つの実施形態では、フロー図は、ハードウェア及び/又はソフトウェアの形で実施され得る有限ステートマシン(FSM)の状態を示し得る。特定のシーケンス又は順序で示されているが、特に明記しない限り、アクションの順序は修正できる。したがって、例示される実施形態は一例として理解されるべきであり、プロセスは異なる順序で実行でき、いくつかのアクションは、並列に実行することができる。さらに、様々な実施形態では1つ又は複数のアクションを省略することができ、したがって、すべての実施形態ですべてのアクションが必要なわけではない。他のプロセスフローが可能である。
【0099】
様々な動作又は機能が本明細書に記載されている限り、それらはソフトウェアコード、命令、構成、及び/又はデータとして記載又は定義することができる。コンテンツは、直接実行可能(「オブジェクト」又は「実行可能」形式)、ソースコード、又は差分コード(「デルタ」又は「パッチ」コード)にすることができる。本明細書に記載の実施形態のソフトウェアコンテンツは、コンテンツが記憶された製品を介して、又は通信インターフェースを介してデータを送信するための通信インターフェースを動作させる方法を介して提供することができる。機械可読記憶媒体は、記述された機能又は動作を機械に実行させることができ、記録可能/記録不可能な媒体(例えば、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイスなど)などの機械(例えば、コンピューティングデバイス、電子システムなど)によってアクセス可能な形態で情報を記憶する任意の機構を含む。通信インターフェースは、メモリバスインターフェース、プロセッサバスインターフェース、インターネット接続、ディスクコントローラなどのような、別のデバイスと通信するためのハードワイヤード、無線、光学などの媒体のいずれかとインターフェースする任意の機構を含む。通信インターフェースは、ソフトウェアコンテンツを記述するデータ信号を提供するために、構成パラメータを提供すること、及び/又は通信インターフェースを準備するための信号を送信することによって構成することができる。通信インターフェースは、通信インターフェースに送信される1つ又は複数のコマンド又は信号を介してアクセスすることができる。
【0100】
本明細書に記載の様々な構成要素は、記載される動作又は機能を実行するための手段とすることができる。本明細書に記載の各構成要素は、ソフトウェア、ハードウェア、又はそれらの組み合わせを含む。構成要素は、ソフトウェアモジュール、ハードウェアモジュール、専用ハードウェア(例えば、特定用途向けハードウェア、特定用途向け集積回路(ASIC)、デジタルシグナルプロセッサ(DSP)など)、組み込みコントローラ、ハードワイヤード回路などとして実装することができる。
【0101】
本明細書に記載される内容に加えて、開示される実施形態及び本発明の実装に対して、それらの範囲から逸脱することなく様々な修正を行うことができる。
【0102】
したがって、本明細書の例示及び例は、限定的な意味ではなく、例示的な意味で解釈されるべきである。本発明の範囲は、以下の特許請求の範囲を参照することによってのみ評価されるべきである。
【国際調査報告】