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

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

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

特表2024-513953ユーザ設定可能なSLCメモリサイズ
<>
  • 特表-ユーザ設定可能なSLCメモリサイズ 図1
  • 特表-ユーザ設定可能なSLCメモリサイズ 図2
  • 特表-ユーザ設定可能なSLCメモリサイズ 図3
  • 特表-ユーザ設定可能なSLCメモリサイズ 図4
  • 特表-ユーザ設定可能なSLCメモリサイズ 図5
  • 特表-ユーザ設定可能なSLCメモリサイズ 図6
  • 特表-ユーザ設定可能なSLCメモリサイズ 図7
  • 特表-ユーザ設定可能なSLCメモリサイズ 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-27
(54)【発明の名称】ユーザ設定可能なSLCメモリサイズ
(51)【国際特許分類】
   G06F 12/02 20060101AFI20240319BHJP
   G06F 12/00 20060101ALI20240319BHJP
【FI】
G06F12/02 510A
G06F12/00 597U
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023562554
(86)(22)【出願日】2022-04-14
(85)【翻訳文提出日】2023-11-10
(86)【国際出願番号】 US2022024865
(87)【国際公開番号】W WO2022221564
(87)【国際公開日】2022-10-20
(31)【優先権主張番号】17/231,893
(32)【優先日】2021-04-15
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】523351302
【氏名又は名称】エスケイ ハイニックス ナンド プロダクト ソリューションズ コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】クラーク、チェイス、エー.
(72)【発明者】
【氏名】コラード、フランシス
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA12
5B160CA18
(57)【要約】
電子装置の一実施形態が、1つまたは複数の基板;および1つまたは複数の基板に連結されたコントローラ、ここでコントローラはロジックを含み、ロジックは、第1のレベル数を有する第1のセル領域および前記第1のレベル数と異なる第2のレベル数を有する第2の領域を含んだNANDベースの記憶媒体へのアクセスを制御し、ユーザ設定可能な容量プレースホルダに対応する論理ブロックアドレス位置を決定し、前記論理ブロックアドレス位置に基づいてランタイム時に前記第1のセル領域および前記第2のセル領域のそれぞれのサイズを調整する、を含んでよい。他の実施形態が開示されており、特許請求されている。
【特許請求の範囲】
【請求項1】
電子装置であって、
1つまたは複数の基板;および
前記1つまたは複数の基板に連結されたコントローラ、ここで前記コントローラがロジックを含み、前記ロジックが、
第1のレベル数を有する第1のセル領域および前記第1のレベル数と異なる第2のレベル数を有する第2のセル領域を含んだNANDベースの記憶媒体へのアクセスを制御し、
ユーザ設定可能な容量プレースホルダに対応する論理ブロックアドレス位置を決定し、
前記論理ブロックアドレス位置に基づいてランタイム時に前記第1のセル領域および前記第2のセル領域のそれぞれのサイズを調整する
を備える装置。
【請求項2】
前記ロジックがさらに、
コマンドに応答して前記第1のセル領域のサイズをユーザ設定する機能を有効にする、請求項1に記載の装置。
【請求項3】
前記ロジックがさらに、
前記第1のセル領域および前記第2のセル領域の間の容量変換を管理するために、ある範囲の論理ブロックアドレスを確保する、請求項2に記載の装置。
【請求項4】
前記ロジックがさらに、
前記機能が有効なときに、前記NANDベースの記憶媒体にユーザデータを保存する、請求項2に記載の装置。
【請求項5】
前記ロジックがさらに、
前記第2のセル領域のブロックを前記第1のセル領域のブロックに変換する、請求項4に記載の装置。
【請求項6】
前記ロジックがさらに、
前記第2のセル領域のデータを前記第1のセル領域の前記変換されたブロックに移動する、請求項5に記載の装置。
【請求項7】
前記コントローラおよび前記NANDベースの記憶媒体がソリッドステートドライブに組み込まれている、請求項1に記載の装置。
【請求項8】
電子ストレージシステムであって、
第1のレベル数を有する第1のセル領域および前記第1のレベル数と異なる第2のレベル数を有する第2のセル領域を含んだNANDベースの記憶媒体;および
前記NANDベースの記憶媒体に通信可能に連結されたコントローラ、ここで前記コントローラがロジックを含み、前記ロジックが、
ユーザ設定可能な容量プレースホルダに対応する論理ブロックアドレス位置を決定し、
前記論理ブロックアドレス位置に基づいてランタイム時に前記第1のセル領域および前記第2のセル領域のそれぞれのサイズを調整する
を備えるシステム。
【請求項9】
前記ロジックがさらに、
コマンドに応答して前記第1のセル領域のサイズをユーザ設定する機能を有効にする、請求項8に記載のシステム。
【請求項10】
前記ロジックがさらに、
前記第1のセル領域および前記第2のセル領域の間の容量変換を管理するために、ある範囲の論理ブロックアドレスを確保する、請求項9に記載のシステム。
【請求項11】
前記ロジックがさらに、
前記機能が有効なときに、前記NANDベースの記憶媒体にユーザデータを保存する、請求項9に記載のシステム。
【請求項12】
前記ロジックがさらに、
前記第2のセル領域のブロックを前記第1のセル領域のブロックに変換する、請求項11に記載のシステム。
【請求項13】
前記ロジックがさらに、
前記第2のセル領域のデータを前記第1のセル領域の前記変換されたブロックに移動する、請求項12に記載のシステム。
【請求項14】
前記コントローラおよび前記NANDベースの記憶媒体がソリッドステートドライブに組み込まれている、請求項8に記載のシステム。
【請求項15】
ストレージを制御する方法であって、
第1のレベル数を有する第1のセル領域および前記第1のレベル数と異なる第2のレベル数を有する第2のセル領域を含んだNANDベースの記憶媒体へのアクセスを制御する段階;
ユーザ設定可能な容量プレースホルダに対応する論理ブロックアドレス位置を決定する段階、および
前記論理ブロックアドレス位置に基づいてランタイム時に前記第1のセル領域および前記第2のセル領域のそれぞれのサイズを調整する段階
を備える方法。
【請求項16】
さらに、
コマンドに応答して前記第1のセル領域のサイズをユーザ設定する機能を有効にする段階を備える、請求項15に記載の方法。
【請求項17】
さらに、
前記第1のセル領域および前記第2のセル領域の間の容量変換を管理するために、ある範囲の論理ブロックアドレスを確保する段階を備える、請求項16に記載の方法。
【請求項18】
さらに、
前記機能が有効なときに、前記NANDベースの記憶媒体にユーザデータを保存する段階を備える、請求項16に記載の方法。
【請求項19】
さらに、
前記第2のセル領域のブロックを前記第1のセル領域のブロックに変換する段階を備える、請求項18に記載の方法。
【請求項20】
さらに、
前記第2のセル領域のデータを前記第1のセル領域の前記変換されたブロックに移動する段階を備える、請求項19に記載の方法。
【発明の詳細な説明】
【背景技術】
【0001】
[関連出願の相互参照]
本願は、2021年4月15日出願の米国特許出願第17/231,893号の利益を主張し、当該米国特許出願はその全体が参照により本明細書に組み込まれる。
【0002】
シングルレベルセル(SLC)バッファには複数のセルで構成されたNAND型フラッシュメモリ(NANDメモリ)が含まれてよく、各セルは1ビットのデータを含む。トライレベルセル(TLC)メモリには複数のセルで構成されたNANDメモリが含まれてよく、各セルは3ビットのデータを含む。クアッドレベルセル(QLC)メモリには複数のセルで構成されたNANDメモリが含まれてよく、各セルは4ビットのデータを含む。セルごとのビットの数は一般に、セルへの書き込み、セルからの読み取り、および/またはセルの消去と関連するプログラム動作中に、別個の電圧レベルがいくつ用いられるかに依存し得る。したがって、TLCメモリの場合、セルごとに3ビットをサポートするために、8個の電圧レベルを用いて、セルに書き込む8個の可能な1と0の組み合わせ(例えば、000、001、010、011、100、101、110、111)を区別することができる。
【0003】
一部のストレージシステムには、ストレージデバイスと関連するプログラム可能なエビクション率を決定し、このプログラム可能なエビクション率に従ってストレージデバイス内のSLC領域の一部をマルチレベルセル(MLC)領域に変換する技術が含まれる。MLCとしては、TLC(例えば、3ビットまたは8レベルのMLC)、QLC(例えば、4ビットまたは16レベルのMLC)などが含まれてよい。例えば、MLC領域に変換される部分の量は、ストレージデバイスにおいて満たされるパーセント容量に応じて徐々に変化する。
【0004】
一部のストレージシステムには、動的なSLCメモリコントローラ技術が含まれる場合がある。例えば、コントローラは、ランタイム時にSLC領域の動的部分における有効データ量を決定し、決定したSLC領域の動的部分における有効データ量に基づいて、ランタイム時にSLC領域の動的部分のサイズを調整することができる。
【0005】
一部のストレージシステムには、マルチレベルメモリのリパーパシング技術が含まれることがある。例えば、メモリコントローラは、永続的記憶媒体の設定を変更する要求に応答して、永続的記憶媒体を再プロビジョンすることができる。
【図面の簡単な説明】
【0006】
本明細書において説明する題材は、添付図面に限定としてではなく、例として図示されている。説明を簡潔かつ明確なものにするために、図面に図示された要素は、必ずしも縮尺通りに描かれていない。例えば、いくつかの要素の寸法は、明確にするために他の要素に対して誇張されていることがある。さらに、適切であると考えられる場合、対応する要素または類似する要素を示すために、参照符号が図面の間で繰り返し用いられている。図面は、以下の通りである。
【0007】
図1】一実施形態による電子ストレージシステムの一例に関するブロック図である。
【0008】
図2】一実施形態による電子装置の一例に関するブロック図である。
【0009】
図3】一実施形態によるストレージ制御方法の一例に関するフローチャートである。
【0010】
図4】一実施形態によるプロセスフローの一例に関する説明図である。
【0011】
図5】一実施形態によるプロセスフローの別の例に関する説明図である。
【0012】
図6】一実施形態によるストレージシステムの一例に関するブロック図である。
【0013】
図7】一実施形態によるコンピューティングシステムの別の例に関するブロック図である。
【0014】
図8】一実施形態によるソリッドステートドライブ(SSD)デバイスの一例に関するブロック図である。
【発明を実施するための形態】
【0015】
添付図面を参照して、1つまたは複数の実施形態または実装例をここで説明する。特定の構成および配置について説明するが、これは例示のみを目的として行われることを理解されたい。当業者であれば、本明細書の趣旨および範囲から逸脱することなく他の構成および配置が使用され得ることを認識するであろう。当業者には、本明細書で説明する手法および/または配置が、本明細書で説明するもの以外の様々な他のシステムおよびアプリケーションにおいても使用され得ることが明らかとなるであろう。
【0016】
以下の説明では、例えばシステムオンチップ(SoC)アーキテクチャといったアーキテクチャにおいて明示され得る様々な実装例を記載しているが、本明細書で説明する手法および/または配置の実現は、特定のアーキテクチャおよび/またはコンピューティングシステムに限定されることはなく、同様の目的の任意のアーキテクチャおよび/またはコンピューティングシステムにより実現されてよい。例えば、例として複数の集積回路(IC)チップおよび/またはパッケージを使用した様々なアーキテクチャ、および/またはセットトップボックス、スマートフォンなどといった様々なコンピューティングデバイスおよび/または民生用電子(CE)デバイスによって、本明細書で説明する手法および/または配置が実現され得る。さらに、以下の説明には、例えば、ロジックの実装例、システムコンポーネントの種類および相互関係、ロジックの分割/統合の選択など、多数の具体的な詳細が記載されているかもしれないが、そのような具体的な詳細がなくても、特許請求される主題を実施することができる。他の例において、例えば制御構造および完全なソフトウェア命令シーケンスといったいくつかの題材は、本明細書で開示される題材を不明瞭にしないために、詳細に示されていないことがある。
【0017】
本明細書で開示される題材は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの任意の組み合わせで実現されてよい。本明細書で開示される題材は、マシン可読媒体に格納された命令としても実現されてよく、これを1つまたは複数のプロセッサが読み取って実行することができる。マシン可読媒体は、マシン(例えば、コンピューティングデバイス)が読める形式で情報を格納または送信するための任意の媒体および/またはメカニズムを含み得る。例えば、マシン可読媒体としては、リードオンリメモリ(ROM);ランダムアクセスメモリ(RAM);磁気ディスク記憶媒体;光学記憶媒体;フラッシュメモリデバイス;電気的形式、光学的形式、音響的形式、または他の形式の伝搬信号(例えば、搬送波、赤外線信号、デジタル信号など)、および他のものが含まれてよい。
【0018】
本明細書における「1つの実装例」、「一実装例」、「例示的な一実装例」などへの言及は、説明される実装例が特定の特徴、構造、または特性を含み得ることを示すが、あらゆる実施形態がそのような特定の特徴、構造、または特性を必ずしも含まなくてもよい。さらに、そのような文言は、必ずしも同じ実装例を参照しているわけではない。さらに、特定の特徴、構造、または特性が一実施形態に関連して説明される場合、本明細書において明示的に説明されているか否かにかかわらず、他の実装例に関連してそのような特徴、構造、または特性がもたらされることは当業者の知識の範囲内であることが述べられている。
【0019】
本明細書で説明される様々な実施形態は、メモリコンポーネントおよび/またはメモリコンポーネントに対するインタフェースを含んでよい。そのようなメモリコンポーネントは、揮発性および/または不揮発性(NV)のメモリを含んでよい。揮発性メモリは、媒体により格納されたデータの状態を維持するのに電力を必要とする記憶媒体であってよい。揮発性メモリの非限定的な例としては、ダイナミックRAM(DRAM)またはスタティックRAM(SRAM)といった様々な種類のRAMが含まれてよい。ある特定の種類のDRAMがメモリモジュールに用いられることがあり、それは同期ダイナミックRAM(SDRAM)である。NVメモリ(NVM)は、媒体により格納されたデータの状態を維持するのに電力を必要としない記憶媒体であってよい。1つの実施形態において、メモリデバイスはブロックアドレス指定可能なメモリデバイスを含んでよく、例えば、NAND技術に基づくものである。1つの実施形態において、メモリデバイスは複数の閾値レベルを有するNANDフラッシュメモリ、または他のメモリを用いるメモリデバイスを含んでもよく、またはそうでなくてもよい。メモリデバイスは、ダイ自体および/またはパッケージングされたメモリ製品を指すことがある。
【0020】
図1を参照すると、電子ストレージシステム10の一実施形態が、第1のレベル数を有する第1のセル領域12aおよび第1のレベル数と異なる第2のレベル数を有する第2の領域12bを含んだNANDベースの記憶媒体12、およびNANDベースの記憶媒体12に通信可能に連結されたコントローラ11を含み得る。コントローラ11はロジック13を含んでよく、本ロジックは、ユーザ設定可能な容量プレースホルダに対応する論理ブロックアドレス(LBA)位置を決定し、LBA位置に基づいてランタイム時に第1のセル領域12aおよび第2のセル領域12bのそれぞれのサイズを調整する。一部の実施形態では、ロジック13はさらに、コマンドに応答して第1のセル領域12aのサイズをユーザ設定する機能を有効にするように構成されることがある。例えば、ロジック13は、第1のセル領域12aおよび第2のセル領域12bの間の容量変換を管理するために、ある範囲のLBAを確保するように構成されてもよい。
【0021】
一部の実施形態では、ロジック13はさらに、この機能が有効なときに、NANDベースの記憶媒体12にユーザデータを保存するように構成されることがある。例えば、ロジック13は、第2のセル領域12bのブロックを第1のセル領域12aのブロックに変換し、第2のセル領域12bのデータを第1のセル領域12aの変換されたブロックに移動するように構成されてよい。ここでの実施形態のいずれかにおいて、コントローラ11およびNANDベースの記憶媒体12は、ソリッドステートドライブ(SSD)に組み込まれてよい。
【0022】
上記のコントローラ11、NANDベースの記憶媒体12、ロジック13などのシステムコンポーネントのそれぞれに関する実施形態は、ハードウェア、ソフトウェア、またはそれらの任意の好適な組み合わせで実現されてよい。例えば、ハードウェア実装例には、例としてプログラマブルロジックアレイ(PLA)、フィールドプログラマブルゲートアレイ(FPGA)、複合プログラマブルロジックデバイス(CPLD)といった設定可能なロジック、または例として特定用途向け集積回路(ASIC)、相補型金属酸化物半導体(CMOS)またはトランジスタ-トランジスタロジック(TTL)技術といった回路技術を用いた固定機能ロジックハードウェア、またはそれらの任意の組み合わせが含まれてよい。コントローラ11の実施形態には、汎用コントローラ、特殊目的コントローラ、メモリコントローラ、ストレージコントローラ、マイクロコントローラ、汎用プロセッサ、特殊目的プロセッサ、中央プロセッサユニット(CPU)、実行ユニットなどが含まれてよい。一部の実施形態では、NANDベースの記憶媒体12、ロジック13、および/または他のシステムメモリが、コントローラ11を含め様々なコンポーネント内に配置されても、またはそれと同じ場所に(例えば、同じダイに)配置されてもよい。
【0023】
代替的に、または追加的に、これらのコンポーネントの全部または一部が、プロセッサまたはコンピューティングデバイスにより実行されるマシン可読またはコンピュータ可読記憶媒体(例えば、RAM、ROM、プログラマブルROM(PROM)、ファームウェア、フラッシュメモリなど)に格納されたロジック命令のセットとして、1つまたは複数のモジュールに実装されてよい。例えば、コンポーネントのオペレーションを実行するためのコンピュータプログラムコードは、Python(登録商標)、Perl、Java(登録商標)、Smalltalk(登録商標)、C++、C#などといったオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語といった従来の手続き型プログラミング言語を含め、オペレーティングシステム(OS)に適用可能な/適切な1つまたは複数のプログラミング言語の任意の組み合わせで記述されてよい。例えば、NANDベースの記憶媒体12、他のNANDベースの記憶媒体、または他のシステムメモリは命令セットを格納することができ、命令セットは、コントローラ11により実行されると、システム10にシステム10の1つまたは複数のコンポーネント、特徴、または態様を実現させる(例えばロジック13であり、ユーザ設定可能な容量プレースホルダに対応するLBA位置の決定、LBA位置に基づいたランタイム時における第1のセル領域12aおよび第2のセル領域12bのそれぞれのサイズの調整などを行う)。
【0024】
ここで図2を参照すると、電子装置14の一実施形態は、1つまたは複数の基板15、および1つまたは複数の基板15に連結されたコントローラ16を含んでよい。コントローラ16はロジック17を含んでよく、本ロジックは、第1のレベル数を有する第1のセル領域および第1のレベル数と異なる第2のレベル数を有する第2の領域を含んだNANDベースの記憶媒体へのアクセスを制御し、ユーザ設定可能な容量プレースホルダに対応するLBA位置を決定し、LBA位置に基づいてランタイム時に第1のセル領域および第2のセル領域のそれぞれのサイズを調整する。一部の実施形態では、ロジック17はさらに、コマンドに応答して第1のセル領域のサイズをユーザ設定する機能を有効にするように構成されることがある。例えば、ロジック17は、第1のセル領域および第2のセル領域の間の容量変換を管理するために、ある範囲のLBAを確保するように構成されてもよい。
【0025】
一部の実施形態では、ロジック17はさらに、この機能が有効なときに、NANDベースの記憶媒体にユーザデータを保存するように構成されることがある。例えば、ロジック17は、第2のセル領域のブロックを第1のセル領域のブロックに変換し、第2のセル領域のデータを第1のセル領域の変換されたブロックに移動するように構成されてよい。ここでの実施形態のいずれかにおいて、コントローラ16およびNANDベースの記憶媒体は、SSDに組み込まれてよい。
【0026】
ロジック17の実施形態は、例えば、本明細書で説明されるような、システム、装置、コンピュータ、デバイスなどに実装されてよい。より具体的には、ロジック17のハードウェア実装例には、例えばPLA、FPGA、CPLDといった設定可能なロジック、または、例えばASIC、CMOS、またはTTL技術といった回路技術を用いた固定機能ロジックハードウェア、またはそれらの任意の組み合わせが含まれてよい。代替的に、または追加的に、ロジック17は、マシン可読またはコンピュータ可読記憶媒体、例えばRAM、ROM、PROM、ファームウェア、フラッシュメモリなどに格納された、プロセッサまたはコンピューティングデバイスにより実行されるロジック命令のセットとして、1つまたは複数のモジュールに実装されてよい。例えば、コンポーネントのオペレーションを実行するためのコンピュータプログラムコードは、Python(登録商標)、Perl、Java(登録商標)、Smalltalk(登録商標)、C++、C#などといったオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語といった従来の手続き型プログラミング言語を含め、OSに適用可能な/適切な1つまたは複数のプログラミング言語の任意の組み合わせで記述されてよい。
【0027】
例えば、ロジック17は半導体装置に実装されることがあり、ここには1つまたは複数の基板15が含まれてよく、1つまたは複数の基板15にはロジック17が連結されている。一部の実施形態では、ロジック17は、設定可能なロジックおよび固定機能ハードウェアロジックのうち1つまたは複数において、半導体基板(例えば、シリコン、サファイア、ガリウムヒ素など)に少なくとも部分的に実装されてよい。例えば、ロジック17は、基板15の中に配置されたトランジスタのチャネル領域を有する基板15に連結されたトランジスタアレイおよび/または他の集積回路コンポーネントを含んでよい。ロジック17および基板15の間の境界面は、階段接合でなくてもよい。ロジック17は、基板15の初期ウェハー上に成長したエピタキシャル層を含むとみなされてもよい。
【0028】
ここで図3を参照すると、ストレージを制御する方法20の一実施形態は、ブロック21において第1のレベル数を有する第1のセル領域および第1のレベル数と異なる第2のレベル数を有する第2の領域を含んだNANDベースの記憶媒体へのアクセスを制御する段階、ブロック22においてユーザ設定可能な容量プレースホルダに対応するLBA位置を決定する段階、およびブロック23においてLBA位置に基づいてランタイム時に第1のセル領域および第2のセル領域のそれぞれのサイズを調整する段階を含んでよい。方法20の一部の実施形態では、さらに、ブロック24において、コマンドに応答して第1のセル領域のサイズをユーザ設定する機能を有効にする段階を含んでよい。例えば、方法20は、ブロック25において第1のセル領域および第2のセル領域の間の容量変換を管理するために、ある範囲のLBAを確保する段階を含んでよい。
【0029】
一部の実施形態では、方法20はさらに、ブロック26において、この機能が有効なときに、NANDベースの記憶媒体にユーザデータを保存する段階を含んでよい。例えば、方法20は、ブロック27において第2のセル領域のブロックを第1のセル領域のブロックに変換する段階、およびブロック28において第2のセル領域のデータを第1のセル領域の変換されたブロックに移動する段階を含んでよい。ここでの実施形態のいずれかにおいて、NANDベースの記憶媒体は、ブロック29においてSSDに組み込まれてよい。
【0030】
方法20の実施形態は、例えば、本明細書で説明されるようなシステム、装置、コンピュータ、デバイスなどに実装されてよい。より具体的には、方法20のハードウェア実装例には、例えばPLA、FPGA、CPLD、疎粒度再構成可能ファブリック(CGRA)といった設定可能なロジック、または、例えばASIC、CMOS、またはTTL技術といった回路技術を用いた固定機能ロジックハードウェア、またはそれらの任意の組み合わせが含まれてよい。代替的に、または追加的に、方法20は、マシン可読またはコンピュータ可読記憶媒体、例えばRAM、ROM、PROM、ファームウェア、フラッシュメモリなどに格納された、プロセッサまたはコンピューティングデバイスにより実行されるロジック命令のセットとして、1つまたは複数のモジュールに実装されてよい。例えば、コンポーネントのオペレーションを実行するためのコンピュータプログラムコードは、Python(登録商標)、Perl、Java(登録商標)、Smalltalk(登録商標)、C++、C#などといったオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語といった従来の手続き型プログラミング言語を含め、OSに適用可能な/適切な1つまたは複数のプログラミング言語の任意の組み合わせで記述されてよい。
【0031】
例えば、方法20は、以下の実施例22~28に関連して説明されるコンピュータ可読媒体に実装されてよい。方法20の実施形態またはその一部は、ファームウェア、アプリケーション(例えば、アプリケーションプログラミングインタフェース(API)を通じて)、またはオペレーティングシステム(OS)において動作するドライバソフトウェアで実装されてよい。さらに、ロジック命令としては、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、状態設定データ、集積回路用設定データ、電子回路および/またはハードウェアに固有の他の構造上のコンポーネント(例えば、ホストプロセッサ、中央演算処理装置/CPU、マイクロコントローラなど)を個別化する状態情報が含まれる可能性がある。
【0032】
一部の実施形態では、有利なことに、NANDストレージデバイス用のユーザデータを保存しながら、SLCバッファ/キャッシュサイズのユーザ設定を有効にする技術を提供することができる。通常、セルごとに複数のビットを有するNANDストレージデバイスをプロビジョンする場合、デバイスの性能を向上させるためにSLCのキャッシュまたはバッファがプロビジョンされてよい。しかしながら、SLCバッファを専門とする各セルには1ビットしかないので、ドライブの全体容量は低下する。ファイルシステムおよびパーティションシステムでは、ドライブ容量に依拠してそのデータ構造体の一部を配置する。デバイスの全体容量がSLCバッファのサイズに基づいて決定されているので、ユーザは、データ損失およびファイルシステム破損の危険を冒さなければ、自分自身のニーズに従ってSLCの量をサイズ変更することはできない。性能(例えば、SLCサイズ)および全体容量(例えば、QLCサイズ、TLCサイズなど)の間のトレードオフに関するユーザ選択は、プロビジョンの時に行うことができる。ユーザが選択したトレードオフを変えるには、ドライブのコンテンツを消去しなければならない。
【0033】
動的なSLCバッファを有するストレージシステムでは、ランタイム時にSLCバッファのサイズを調整することができる。しかし、この調整はユーザ設定可能なものではない。ユーザはドライブが性能と容量をどう交換するかを選択することはできず、ユーザはドライブ上に一定量のSLCを確約することはできない。マルチレベルメモリのリパーパシング技術(例えば、ジャストインタイムのブロックリパーパシング)を有するストレージシステムでは、ユーザ要求に基づいて記憶媒体を再設定できる場合があるが、一般に、ドライブをオフラインにしてドライブの報告容量を変更する必要があり、これによってファイルシステムの動作が妨げられる。一部の実施形態では、前述した問題のうち1つまたは複数を克服する技術が提供されるので有利である。
【0034】
一部の実施形態では、ストレージドライバなどのホストソフトウェアコンポーネントを利用して、ストレージデバイスのファイルシステムにファイルを作成することができる。作成されたファイルには、データが含まれないことになる。作成されたファイルと関連するLBA位置がSSDのファームウェアに伝えられた後に、SSDは、個々のデバイスのNAND消去ブロック(EB)特性に基づいて、対応する量だけSSDのSLCバッファを増やすことができる。SLC-QLCデバイスでは、例えば、その増加は4:1の比率に対応することになる。
【0035】
ユーザがSLCの設定可能性を制御することは有利である。例えば、ユーザがQLCベースのSSDを所持しており且つアプリケーションが使用するのはSSDの容量の4分の1(1/4)未満になることをユーザが認識している場合、一部の実施形態では、すでにドライブ上にあるユーザデータを損失することなく、ストレージシステムの100%がSLCになるようにユーザが設定することが可能になる。後で、ユーザがより多くの容量を必要とする場合、ここでも現時点でデバイス上にあるデータを損失することも、または破損することもなく、必要に応じて、ユーザはこの操作を元に戻すか、または別の比率を有するドライブをプロビジョンすることができる。
【0036】
リクレーム済みSLCは、あらゆる有用なストレージニーズに利用されてよい。例えば、あるアプリケーションでは、解放されたSLCを(例えば、書き込みバッファとしてだけでなく)インテリジェントキャッシングソリューションに充てる一実施形態を利用してよい。SSDデバイスがその最大容量(例えば、対応する好ましいコスト/ギガバイト(GB)値)を利用する能力を備えて出荷できることは有利である。ユーザは、デプロイするときに、ユーザデータを保存しながら、必要に応じてランタイム時に性能および容量の間のトレードオフを再設定することができる。
【0037】
一部の実施形態では、ホストソフトウェアドライバおよびファイルシステムを利用して、ユーザが容量および性能の間でシームレスなトレードオフを行うことを可能にするメカニズムを提供することができる。例えば、特定のSSDのLBA範囲をシステムの残りの部分(例えば、OS、他のアプリケーションなど)からアクセスできないようにし、代わりにそれらをQLCおよびSLCの間の容量変換のファームウェア(FW)管理用に確保するために、容量プレースホルダまたはパディングファイルを作成して所望のトレードオフを実現することができる。例えば、SLCアクセスがQLCより優れた性能をもたらすので、ユーザはSLC容量を増やすトレードオフを選択してよい。
【0038】
一部の実施形態では、パディングファイルは、対応する機能が有効である場合に作成される。例えば、LBA範囲はベンダー固有コマンドを介してSSDに送られてよく、その後、OS初期化のたびに何らかのデーモンサービスによる確保された排他的アクセスのためにパディングファイルが開かれることになる。SSDのFWがLBA範囲を受け取り、新たなSLCブロックをいくつ作成する必要があるかを決定した後に、FWは、必要に応じて現在のQLCブロックから新たなSLCブロックにデータを移動することによって追加のSLCを作成する。パディングファイルは、対応する機能が有効であるならば存在することになる。
【0039】
図4を参照すると、プロセスフロー40の一実施形態には、1テラバイト(TB)のドライブをユーザがどのように再設定できるかが示されている。SLC容量をユーザ設定する機能を有効にする前は、ドライブの1TB全体がOSおよびファイルシステムに利用可能であってよい。ユーザがこの機能を有効にして、最大のSLC容量を要求した後は、ドライブの100%がSLCストレージに変換される。QLCドライブでは、これにより、はるかに優れた読み取りおよび書き込みアクセス性能を備えた256GBのSLC容量(例えば、QLCからSLCへと変換されたドライブの1024GBから4:1の容量減少)がもたらされる。768GBのパディングファイルが、本来の1TBの残りの部分を占める容量プレースホルダとして作成される。パディングファイルによって、OSおよびファイルシステムには、SSDが変化していないかのようにドライブが見えることは有利である。ドライブが再設定されていたとしても、容量の物理的な変更を考慮するためにハードウェアの再プロビジョンを必要とすることはなく、システムは引き続き正常に動作することができる。
【0040】
図5を参照すると、プロセスフロー50の一実施形態には、1TBのドライブをユーザがどのように再設定できるかに関する別の例が示されている。SLC容量をユーザ設定する機能を有効にする前は、ドライブの1TB全体がOSおよびファイルシステムに利用可能であってよい。ユーザがこの機能を有効にして、50%のSLC容量を要求した後は、ドライブの50%がSLCストレージに変換される。QLCドライブでは、これにより、はるかに優れた読み取りおよび書き込みアクセス性能を備えた128GBのSLC容量(例えば、QLCからSLCへと変換されたドライブの512GBから4:1の容量減少)がもたらされる。384GBのパディングファイルが、SLCに変換された本来の512GBの残りの部分を占める容量プレースホルダとして作成される。パディングファイルによって、OSおよびファイルシステムには、SSDが変化していないかのようにドライブが見えることは有利である。ドライブが再設定されていたとしても、容量の物理的な変更を考慮するためにハードウェアの再プロビジョンを必要とすることはなく、システムは引き続き正常に動作することができる。
【0041】
一部の実施形態では、指定された比率の実際の分割は、グラフィカルユーザインタフェース(GUI)でユーザにより設定されてよい。例えば、このインタフェースでは、ドライブの特定のNANDセル特性を照会することができる。このインタフェースでは、容量トレードオフを決定して、それをユーザに伝えることもできる。図4および図5に図示したように、QLCのSSDでは、この機能は、リクレームされたSLCのビットごとに、4ビットを確保することが必要になる。SLCおよびQLCに加えて複数の形式をサポートするNAND型SSDでは、この機能の実施形態が、他のサポートされる形式同士(例えば、2レベルセル(MLC)、TLCなど)の間で変換を行うように構成されてよい。
【0042】
図6を参照すると、ストレージシステム60の一実施形態が、複数のファイルを備えたファイルシステムを含んでよい。ファイルシステムは、LBA位置に変換するファイルを作成する。LBA位置はその後、SSDのFWにより論理対物理(L2P)テーブルを用いてNANDセル位置に変換される。SSDは、SSDのFWによりバッファ/キャッシュとして利用される、ある程度のSLCを含んでよい。一部の実施形態では、ユーザ設定の機能が有効なときに、SSDのFWが物理的なNAND位置(例えば、図6でリクレーム済みLBAとして特定される)にマッピングしない場所をL2Pに作成する。こうした場所はパディングファイルに割り当てられるので、SSDのFWはこうした場所が有効データにマッピングできないことを認識している。したがって、SSDのFWはより多くのSLC(例えば、図6でリクレーム済みSLCとして特定される)を作成して、ストレージデバイスの性能を向上させることができる。例えば、SSDには1TBに十分なQLCブロックがあるが、ユーザがユーザ設定の機能を有効にしたときにその空間のうち512GBが確保されている場合、SSDのFWはその512GBに相当するQLC容量を128GBのSLCブロックのために安全に用いることができる。これらの実施形態ではSSDのL2P間接テーブルを利用してパディングファイルと関連する場所を示すので、パディングファイルの断片化は問題ではない。
【0043】
一部の実施形態では、このように空間を確保するための容量プレースホルダとしてパディングファイルを利用する場合、パディングファイルに割り当てられたLBA位置が変更されることになるというある程度のリスクがある。一部の実施形態では、パディングに割り当てられたLBA位置に対する変更が、フェールセーフ機能によりSSDのFW自体によって検出されて、その機能を自動的にロールバックすることができる。一部の実施形態では、フェールセーフ機能とは、確保されたLBAに発生した書き込みを検出し、その後、SLCがQLCにマップバックされるのを訂正することを指す。SSDのFWが、確保されたLBA範囲内にある任意のLBAへの書き込み(または例えばTRIM)要求を受け取ることがあるならば、SSDのFWはこの機能を内部で直ちに取り消して(例えば、ユーザ設定の機能を無効にして)、その範囲内にあるあらゆる有効なSLCデータをQLCに変換し、リクレーム済みSLCを何も用いないNAND設定(例えば、ユーザがこの機能を有効にしたときより前の設定、または元の設定)に戻ることができる。SSDがゼロを返すことができるので(例えば、トリムされた場所を読み取るときにSSDが行うことと同様)、ホストシステム上にあるパディングファイルに対して安全に読み取りを発行できることに留意されたい。
【0044】
例えば、ファイルシステムが、この機能を認識していないOS上のデータドライブとしてマウントされていて、FWで前もって確保されていたLBAを消去または上書きしたならば、確保された範囲内にあるLBAに対する書き込み要求が発生する可能性がある。フェールセーフ機能を作動させる別の可能性には、ファイルシステム破損がある。この機能を元に戻すプロセスでは、SLCを変換してQLCに戻すSSDのNANDガベージコレクションプロセスを作動させることがあり、一時的な性能低下を生じさせるが、データ損失は生じない。例えば、この変換プロセスは、NANDダイ全体を所望の形式(例えば、SLC、MLC、TLC、QLCなど)にすることができる適切なオペレーションコード(例えば、オペコード)または機能セットを利用することで行うことができる。SSDのFWは、対象ブロックおよび対象形式を特定する。SSDのFWは最初に、NANDダイを対象形式に変換して、特定のオペレーション(例えば、消去、プログラム、または読み取り)を対象ブロックに発行する。変換プロセスは対象となるブロックごとに行うことができ、SSDのFWは対象となるブロックごとに対象形式を維持する。
【0045】
ユーザ設定の機能を有効にすること、および無効にすることに加えて、関連するホストソフトウェアは、フェールセーフ機能を作動させる状況をできる限り減らし、フェールセーフ機能が発生したときにフェールセーフ機能から復帰する役割を担うことができる。これを容易にするためには、最も制限的なファイルシステムアクセスプロパティにパディングファイルを割り当てて、最も問題のあるプログラムまたはユーザがフェールセーフ機能を作動させるのを排除する必要がある。ユーザ設定の機能と干渉する可能性があり得るファイルシステム圧縮などのホストファイルシステム機能は無効にする必要があり、書き込み、移動、ファイル作成、またはファイル削除などの問題のあるオペレーションは適切なホストファイルシステムフィルタによって捕捉されて処理されなければならない。
【0046】
システムが適切に機能するために、ファイルシステムにおけるパディングファイルのLBA位置は、SSDファームウェアのL2Pにおいてリクレーム済みと指定されたものと一致しなければならない。これを確実にするために、電源投入時に、ホストソフトウェアはこの情報を手動でSSDに要求し、何か差異があるかをチェックする。SSDのFWが不一致を検出することがあるならば、SSDのFWはホストドライバに通知する。
【0047】
不一致の通知に基づいて、ホストドライバはこの機能を完全に無効にするか、または不一致を訂正しようと試みることができる。不一致の訂正は、所望のサイズのパディングファイルを作成するのに十分な未使用容量がまだある場合に限り可能である。例えば、この機能の保護的なホストSWがないシステムでユーザが512GBのパディングファイルを削除し、その後、SSDを満たして空きを512GB未満にしたならば、512GBのパディングファイルを作成することはできない。この場合、この機能は単純に無効になる。
【0048】
一部の実施形態には、プリOSまたはユニファイドエクステンシブルファームウェアインタフェース(UEFI)のドライバコンポーネントが必要とされない。なぜならば、OSが立ち上がって稼働する前にパディングファイルにアクセスする必要はないからである(例えば、ユーザ設定の機能用のホストSWコンポーネントはOS初期化まで必要とされることはない)。
【0049】
代替実施形態では、別個のパディングパーティションが、SSDの容量のリクレーム済み部分の容量プレースホルダとして、パディングファイルの代わりに用いられることがある。容量プレースホルダとしてパディングパーティションを用いることは、ユーザがより多くのSLCを作成するために容量を消費したい場合を除いて、パディングファイルを用いるのと同様であってよい。この状況において、元のデータパーティションはそのファイルがより大きいLBA空間に広がっている可能性があり、データパーティションを十分に縮小するのに十分な空き容量がパーティションの始まりまたは終わりにない場合がある。特定のファイル、例えばページングファイルの場合、ランタイム中にファイルを移動できない場合さえある。したがって、これらの種類の保護ファイルを移動するのに、UEFIなどの「オフライン」環境が必要とされる場合がある。いずれの実施形態においても、SSDのLBA空間のデータレイアウトは、SSDがユーザにより設定されるよりもむしろ高速なSLCを割り当てることができるように、未使用且つ未マッピングであると認識できている場所を確保するのに用いられる。
【0050】
ここで説明した技術は、様々なコンピューティングシステム(例えば、デスクトップ、ワークステーション、サーバ、ラックシステムなどといった非携帯型コンピューティングデバイス、スマートフォン、タブレット、超携帯型パーソナルコンピュータ(UMPC)、ラップトップコンピュータ、Ultrabookコンピューティングデバイス、スマートウォッチ、スマートグラス、スマートブレスレットなどといった携帯型コンピューティングデバイス、および/またはモノのインターネット(IoT)デバイス(例えば、センサ、カメラなど)といったクライアント/エッジデバイスを含む)に提供されてよい。
【0051】
図7をここで参照すると、コンピューティングシステム100の一実施形態は、1つまたは複数のプロセッサ102-1~102-N(ここでは一般に「複数のプロセッサ102」または「プロセッサ102」と呼ばれる)を含んでよい。複数のプロセッサ102は、相互接続またはバス104を介して通信することができる。各プロセッサ102は、様々なコンポーネントを含んでよく、明確にするために、その一部だけをプロセッサ102-1を参照して説明する。したがって、残りのプロセッサ102-2~102-Nのそれぞれは、プロセッサ102-1を参照して説明される同じまたは同様のコンポーネントを含んでよい。
【0052】
一部の実施形態では、プロセッサ102-1は、1つまたは複数のプロセッサコア106-1~106-M(ここでは「複数のコア106」またはより一般的に「コア106」と呼ばれる)、キャッシュ108(様々な実施形態では共有キャッシュであっても、またはプライベートキャッシュであってもよい)、および/またはルータ110を含んでよい。プロセッサコア106は、1つの集積回路(IC)チップに実装されてよい。さらに、チップは、1つまたは複数の共有キャッシュおよび/またはプライベートキャッシュ(キャッシュ108など)、バスまたは相互接続(バスまたは相互接続112など)、ロジック170、メモリコントローラ、または他のコンポーネントを含んでよい。
【0053】
一部の実施形態では、ルータ110は、プロセッサ102-1および/またはシステム100の様々なコンポーネント同士の間で通信するのに用いられてよい。さらに、プロセッサ102-1は、1つより多くのルータ110を含んでよい。さらに、プロセッサ102-1の内部または外部にある様々なコンポーネント同士の間でデータルーティングを可能にするために、多数のルータ110が通信してよい。
【0054】
キャッシュ108は、プロセッサ102-1の1つまたは複数のコンポーネント(コア106など)が利用するデータ(例えば、命令を含む)を格納してよい。例えば、キャッシュ108は、プロセッサ102のコンポーネントがより高速にアクセスするために、メモリ114に格納されたデータをローカルにキャッシュしてよい。図7に示すように、メモリ114は、相互接続104を介してプロセッサ102と通信することができる。一部の実施形態では、(共有され得る)キャッシュ108は様々なレベルを有してよく、例えば、キャッシュ108は、中間レベルキャッシュおよび/またはラストレベルキャッシュ(LLC)であってもよい。また、コア106のそれぞれは、レベル1(L1)キャッシュ(116-1)(ここでは一般に「L1キャッシュ116」と呼ばれる)を含んでよい。プロセッサ102-1の様々なコンポーネントは、バス(例えば、バス112)および/またはメモリコントローラまたはハブを通じて、キャッシュ108と直接的に通信することができる。
【0055】
図7に示すように、メモリ114は、メモリコントローラ120を通じてシステム100の他のコンポーネントに連結されてよい。メモリ114は揮発性メモリを含んでよく、主メモリまたはシステムメモリと区別なく呼ばれることがある。メモリコントローラ120が相互接続104およびメモリ114の間に連結されているように示されていても、メモリコントローラ120はシステム100のどこか他の所に配置されてもよい。例えば、一部の実施形態では、メモリコントローラ120またはその一部が、複数のプロセッサ102のうちの1つに設けられてよい。
【0056】
システム100は、(例えば、有線インタフェースまたは無線インタフェースを介してコンピュータネットワークおよび/またはクラウド129と通信する)ネットワークインタフェース128を介して、他のデバイス/システム/ネットワークと通信することができる。例えば、ネットワークインタフェース128は、無線で(例えば、米国電気電子技術者協会(IEEE)802.11インタフェース(IEEE802.11a/b/g/n/acなどを含む)、セルラインタフェース、3G、4G、LTE、Bluetooth(登録商標)などを介して)ネットワーク/クラウド129と通信するためのアンテナ(不図示)を含んでよい。
【0057】
システム100は、SSDコントローラロジック125を介して相互接続104に連結されたSSD130などのストレージデバイスも含んでよい。したがって、ロジック125は、システム100の様々なコンポーネントによるSSD130へのアクセスを制御することができる。さらに、図7ではロジック125が相互接続104に直接的に連結されているように示されていても、ロジック125は代替的にストレージバス/相互接続(例えば、SATA(シリアルアドバンスドテクノロジーアタッチメント)バス、ペリフェラルコンポーネントインターコネクト(PCI)(またはPCIエクスプレス(PCIe)インタフェース)、NVMエクスプレス(NVMe)など)を介して、システム100の1つまたは複数の他のコンポーネントと通信することができる(例えば、ストレージバスが、バスブリッジ、チップセットなどのようないくつかの他のロジックを介して相互接続104に連結されている場合)。さらに、ロジック125はメモリコントローラロジック(例えば、図8を参照して説明するもの)に組み込まれても、または様々な実施形態において同じ集積回路(IC)デバイスに(例えば、SSD130と同じ回路基板デバイス上に、またはSSD130と同じ筐体内に)設けられてもよい。
【0058】
さらに、ロジック125および/またはSSD130は、1つまたは複数のセンサ(不図示)に連結されて、1つまたは複数のセンサにより検出された値のステータスまたはその値を示す情報を(例えば、1つまたは複数のビットまたは信号の形式で)受け取ることができる。これらのセンサは、コア106、相互接続104または112、プロセッサ102の外部にあるコンポーネント、SSD130、SSDバス、SATAバス、ロジック125、ロジック160、ロジック170などを含めたシステム100(または本明細書で説明した他のコンピューティングシステム)のコンポーネントに近接して設けられて、システム/プラットフォームの電力/熱的挙動に影響を与える様々な要因、例えば、温度、動作周波数、動作電圧、消費電力、および/またはコア間の通信アクティビティなどの変動を検知することができる。
【0059】
図8は、一実施形態に従って、SSD130の様々なコンポーネントのブロック図を図示している。図8に図示するように、ロジック160は、SSD130またはコントローラ382の内部などといった様々な場所に配置されてよく、図7に関連して説明した同様の技術を含んでよい。SSD130は、コントローラ382(さらには、1つまたは複数のプロセッサコアまたはプロセッサ384、およびメモリコントローラロジック386を含む)、キャッシュ138、RAM388、ファームウェアストレージ390、および1つまたは複数のメモリデバイス392-1~392-N(まとめてメモリ392、これにはNAND媒体または他の種類の不揮発性メモリが含まれてよい)を含む。メモリ392は、1つまたは複数のメモリチャネルまたはバスを介して、メモリコントローラロジック386に連結されている。また、SSD130は、インタフェース(SATA、SAS、PCIe、NVMeなどといったインタフェース)を介してロジック125と通信する。プロセッサ384および/またはコントローラ382は、メモリデバイス392-1~392-Nに書き込まれるデータ、またはそこから読み取られるデータを圧縮/伸張することができる。
【0060】
図7および図8に図示するように、SSD130はロジック160を含んでよく、これは、SSD130と同じ筐体内にあっても、および/またはSSD130のプリント回路基板(PCB)上に完全に一体化されてもよい。システム100はさらに、SSD130の外部にあるロジック170を含んでよい。図1図6を参照して説明した特徴/態様/オペレーションのうち1つまたは複数が、図7および/または図8のコンポーネントのうち1つまたは複数により行われてよい。また、図1図6の特徴/態様/オペレーションのうち1つまたは複数が、ファームウェア390にプログラムされてよい。さらに、SSDコントローラロジック125も、ロジック160を含んでよい。有利なことに、ロジック160および/またはロジック170は、システム10(図1)、装置14(図2)、方法20(図3)、プロセスフロー40(図4)、プロセスフロー50(図5)、ストレージシステム60(図6)、および/または本明細書で説明した機能のいずれかのうち1つまたは複数の態様を実現するための技術を含み得る。例えば、ロジック170は、本明細書で説明した様々な実施形態のホストデバイス/コンピュータシステム/エージェントに関する態様を実現するための技術を含んでよく、ロジック160は、本明細書で説明した様々な実施形態のストレージデバイスに関する態様を実現するための技術を含んでよい。
【0061】
例えば、メモリ392は、第1のレベル数を有する第1のセル領域(例えば、SLC)、および第1のレベル数と異なる第2のレベル数を有する第2の領域(例えば、QLC)を含んだNANDベースの記憶媒体を含んでよい。コントローラ382にあるロジック160は、ユーザ設定可能な容量プレースホルダ(例えば、パディングファイル、パディングパーティションなど)に対応するLBA位置を決定し、LBA位置に基づいてランタイム時に第1のセル領域および第2のセル領域のそれぞれのサイズを調整するように構成されてよい。一部の実施形態では、ロジック160はさらに、コマンド(例えば、ベンダー固有コマンド)に応答して第1のセル領域のサイズをユーザ設定する機能を有効にするように構成されることがある。例えば、ロジック160は、第1のセル領域および第2のセル領域の間の容量変換を管理するために、ある範囲のLBAを確保するように構成されてもよい。
【0062】
一部の実施形態では、ロジック160はさらに、この機能が有効なときに、メモリ392にユーザデータを保存するように構成されることがある。例えば、ロジック160は、第2のセル領域のブロックを第1のセル領域のブロックに変換し、第2のセル領域のデータを第1のセル領域の変換されたブロックに移動するように構成されてよい。
【0063】
他の実施形態において、SSD130は、任意の好適なストレージ/メモリ/技術/媒体に置き換えられてよい。一部の実施形態では、ロジック160/170は、1つまたは複数の基板(例えば、シリコン、サファイア、ガリウムヒ素、プリント回路基板(PCB)など)に連結されてよく、1つまたは複数の基板の中に配置されたトランジスタのチャネル領域を含んでよい。他の実施形態において、SSD130は、2つまたはそれより多くの種類の記憶媒体を含んでよい。例えば、ストレージの大部分は、NANDであってよく、さらに何らかのより高速で、より小さい粒度でアクセス可能(例えば、バイトアドレス可能)なNVMを含んでよい。SSD130は代替的に、または追加的に、永続的揮発性メモリ(例えば、バッテリまたはコンデンサで電力をバックアップするDRAMまたはSRAM)を含んでもよい。例えば、SSD130は、エネルギー貯蔵コンデンサを用いた電力損失保護(PLI)技術を含んでよい。エネルギー貯蔵コンデンサは、進行中のどのコマンドも完了し、DRAM/SRAM内のどのデータも不揮発性NAND媒体に必ず記録されるのに十分なエネルギー(電力)を供給することができる。コンデンサは、永続的揮発性メモリのバックアップバッテリとして機能することができる。図7および図8に示すように、ロジック160および/またはロジック170の機能または態様が、システム100全体に分散されても、および/またはシステム100の様々なコンポーネントと同じ場所に配置されても/これと一体化されてもよい。
【0064】
[追加の留意点および実施例]
【0065】
実施例1は電子装置を含み、本装置は、1つまたは複数の基板、および1つまたは複数の基板に連結されたコントローラ、ここでコントローラはロジックを含み、ロジックは、第1のレベル数を有する第1のセル領域および第1のレベル数と異なる第2のレベル数を有する第2の領域を含んだNANDベースの記憶媒体へのアクセスを制御し、ユーザ設定可能な容量プレースホルダに対応する論理ブロックアドレス位置を決定し、論理ブロックアドレス位置に基づいてランタイム時に第1のセル領域および第2のセル領域のそれぞれのサイズを調整する、を備える。
【0066】
実施例2は実施例1に記載の装置を含み、ロジックはさらに、コマンドに応答して第1のセル領域のサイズをユーザ設定する機能を有効にする。
【0067】
実施例3は実施例2に記載の装置を含み、ロジックはさらに、第1のセル領域および第2のセル領域の間の容量変換を管理するために、ある範囲の論理ブロックアドレスを確保する。
【0068】
実施例4は実施例2から3のいずれかに記載の装置を含み、ロジックはさらに、この機能が有効なときに、NANDベースの記憶媒体にユーザデータを保存する。
【0069】
実施例5は実施例4に記載の装置を含み、ロジックはさらに、第2のセル領域のブロックを第1のセル領域のブロックに変換する。
【0070】
実施例6は実施例5に記載の装置を含み、ロジックはさらに、第2のセル領域のデータを第1のセル領域の変換されたブロックに移動する。
【0071】
実施例7は実施例1から6のいずれかに記載の装置を含み、コントローラおよびNANDベースの記憶媒体はソリッドステートドライブに組み込まれている。
【0072】
実施例8は電子ストレージシステムを含み、本システムは、第1のレベル数を有する第1のセル領域および第1のレベル数と異なる第2のレベル数を有する第2の領域を含んだNANDベースの記憶媒体、およびNANDベースの記憶媒体に通信可能に連結されたコントローラ、ここでコントローラはロジックを含み、ロジックは、ユーザ設定可能な容量プレースホルダに対応する論理ブロックアドレス位置を決定し、論理ブロックアドレス位置に基づいてランタイム時に第1のセル領域および第2のセル領域のそれぞれのサイズを調整する、を備える。
【0073】
実施例9は実施例8に記載のシステムを含み、ロジックはさらに、コマンドに応答して第1のセル領域のサイズをユーザ設定する機能を有効にする。
【0074】
実施例10は実施例9に記載のシステムを含み、ロジックはさらに、第1のセル領域および第2のセル領域の間の容量変換を管理するために、ある範囲の論理ブロックアドレスを確保する。
【0075】
実施例11は実施例9から10のいずれかに記載のシステムを含み、ロジックはさらに、この機能が有効なときに、NANDベースの記憶媒体にユーザデータを保存する。
【0076】
実施例12は実施例11に記載のシステムを含み、ロジックはさらに、第2のセル領域のブロックを第1のセル領域のブロックに変換する。
【0077】
実施例13は実施例12に記載のシステムを含み、ロジックはさらに、第2のセル領域のデータを第1のセル領域の変換されたブロックに移動する。
【0078】
実施例14は実施例8から13のいずれかに記載のシステムを含み、コントローラおよびNANDベースの記憶媒体はソリッドステートドライブに組み込まれている。
【0079】
実施例15はストレージを制御する方法を含み、本方法は、第1のレベル数を有する第1のセル領域および第1のレベル数と異なる第2のレベル数を有する第2の領域を含んだNANDベースの記憶媒体へのアクセスを制御する段階、ユーザ設定可能な容量プレースホルダに対応する論理ブロックアドレス位置を決定する段階、および論理ブロックアドレス位置に基づいてランタイム時に第1のセル領域および第2のセル領域のそれぞれのサイズを調整する段階を備える。
【0080】
実施例16は実施例15に記載の方法を含み、さらに、コマンドに応答して第1のセル領域のサイズをユーザ設定する機能を有効にする段階を備える。
【0081】
実施例17は実施例16に記載の方法を含み、さらに、第1のセル領域および第2のセル領域の間の容量変換を管理するために、ある範囲の論理ブロックアドレスを確保する段階を備える。
【0082】
実施例18は実施例16から17のいずれかに記載の方法を含み、さらに、この機能が有効なときに、NANDベースの記憶媒体にユーザデータを保存する段階を備える。
【0083】
実施例19は実施例18に記載の方法を含み、さらに、第2のセル領域のブロックを第1のセル領域のブロックに変換する段階を備える。
【0084】
実施例20は実施例19に記載の方法を含み、さらに、第2のセル領域のデータを第1のセル領域の変換されたブロックに移動する段階を備える。
【0085】
実施例21は実施例15から20のいずれかに記載の方法を含み、NANDベースの記憶媒体はソリッドステートドライブに組み込まれている。
【0086】
実施例22は少なくとも1つの非一時的マシン可読媒体を含み、本媒体は複数の命令を備え、本命令は、コンピューティングデバイスで実行されたことに応答して、コンピューティングデバイスに、第1のレベル数を有する第1のセル領域および第1のレベル数と異なる第2のレベル数を有する第2の領域を含んだNANDベースの記憶媒体へのアクセスを制御させ、ユーザ設定可能な容量プレースホルダに対応する論理ブロックアドレス位置を決定させ、論理ブロックアドレス位置に基づいてランタイム時に第1のセル領域および第2のセル領域のそれぞれのサイズを調整させる。
【0087】
実施例23は実施例22に記載の少なくとも1つの非一時的マシン可読媒体を含み、コンピューティングデバイスで実行されたことに応答して、コンピューティングデバイスに、コマンドに応答して第1のセル領域のサイズをユーザ設定する機能を有効にさせる複数のさらなる命令を備える。
【0088】
実施例24は実施例23に記載の少なくとも1つの非一時的マシン可読媒体を含み、コンピューティングデバイスで実行されたことに応答して、コンピューティングデバイスに、第1のセル領域および第2のセル領域の間の容量変換を管理するために、ある範囲の論理ブロックアドレスを確保させる複数のさらなる命令を備える。
【0089】
実施例25は実施例23から24のいずれかに記載の少なくとも1つの非一時的マシン可読媒体を含み、コンピューティングデバイスで実行されたことに応答して、コンピューティングデバイスに、この機能が有効なときに、NANDベースの記憶媒体にユーザデータを保存させる複数のさらなる命令を備える。
【0090】
実施例26は実施例25に記載の少なくとも1つの非一時的マシン可読媒体を含み、コンピューティングデバイスで実行されたことに応答して、コンピューティングデバイスに、第2のセル領域のブロックを第1のセル領域のブロックに変換させる複数のさらなる命令を備える。
【0091】
実施例27は実施例26に記載の少なくとも1つの非一時的マシン可読媒体を含み、コンピューティングデバイスで実行されたことに応答して、コンピューティングデバイスに、第2のセル領域のデータを第1のセル領域の変換されたブロックに移動させる複数のさらなる命令を備える。
【0092】
実施例28は実施例22から27のいずれかに記載の少なくとも1つの非一時的マシン可読媒体を含み、NANDベースの記憶媒体はソリッドステートドライブに組み込まれている。
【0093】
実施例29はストレージコントローラ装置を含み、本装置は、第1のレベル数を有する第1のセル領域および第1のレベル数と異なる第2のレベル数を有する第2の領域を含んだNANDベースの記憶媒体へのアクセスを制御するための手段、ユーザ設定可能な容量プレースホルダに対応する論理ブロックアドレス位置を決定するための手段、および論理ブロックアドレス位置に基づいてランタイム時に第1のセル領域および第2のセル領域のそれぞれのサイズを調整するための手段を備える。
【0094】
実施例30は実施例29に記載の装置を含み、さらに、コマンドに応答して第1のセル領域のサイズをユーザ設定する機能を有効にするための手段を備える。
【0095】
実施例31は実施例30に記載の装置を含み、さらに、第1のセル領域および第2のセル領域の間の容量変換を管理するために、ある範囲の論理ブロックアドレスを確保するための手段を備える。
【0096】
実施例32は実施例30から31のいずれかに記載の装置を含み、さらに、この機能が有効なときに、NANDベースの記憶媒体にユーザデータを保存するための手段を備える。
【0097】
実施例33は実施例32に記載の装置を含み、さらに、第2のセル領域のブロックを第1のセル領域のブロックに変換するための手段を備える。
【0098】
実施例34は実施例33に記載の装置を含み、さらに、第2のセル領域のデータを第1のセル領域の変換されたブロックに移動するための手段を備える。
【0099】
実施例35は実施例29から34のいずれかに記載の装置を含み、NANDベースの記憶媒体はソリッドステートドライブに組み込まれている。
【0100】
「連結される」という用語は、本明細書では、問題となっているコンポーネント同士の間の直接的または間接的な任意の種類の関係を指すのに用いられてよく、電気的接続、機械的接続、流体的接続、光学的接続、電磁的接続、電気機械的接続、または他の接続に適用することができる。さらに、「第1」、「第2」などの用語は、説明を容易にするために限り本明細書で用いられることがあり、別段の指示がない限り、特定の時間的意味または経時的意味を持たない。
【0101】
本願および特許請求の範囲において、「~のうち1つまたは複数」という用語につながった一連の項目は、記載された用語の任意の組み合わせを意味してよい。例えば「A、B、およびCのうち1つまたは複数」という文言、および、「A、B、またはCのうち1つまたは複数」という文言は両方とも、A;B;C;AおよびB;AおよびC;BおよびC;またはA、B、およびCを意味してよい。本明細書で説明したシステムの様々なコンポーネントが、ソフトウェア、ファームウェア、および/またはハードウェア、および/またはこれらの任意の組み合わせで実現されてよい。例えば、本明細書で説明したシステムまたはデバイスの様々なコンポーネントが、少なくとも部分的に、例えば、スマートフォンなどのコンピューティングシステムの中に見られることがあるようなコンピューティングSoCのハードウェアで提供されてよい。当業者であれば、本明細書で説明したシステムが、対応する図に描かれていない追加のコンポーネントを含んでよいことを認識するであろう。例えば、本明細書で説明したシステムは、明確にするために描かれていないビットストリームマルチプレクサまたはデマルチプレクサモジュールなどといった追加のコンポーネントを含んでよい。
【0102】
本明細書で説明した例示的なプロセスの実現には、図示した順序で示す全てのオペレーションの実行が含まれてよいが、本開示はこの点に関して限定されることはなく、様々な例において、本明細書における例示的なプロセスの実現には、示したオペレーションのサブセットのみ、図示したのとは異なる順序で行われるオペレーション、または追加のオペレーションが含まれてよい。
【0103】
さらに、本明細書で説明したオペレーションのうちいずれか1つまたは複数は、1つまたは複数のコンピュータプログラム製品により提供される命令に応答して実行されてよい。そのようなプログラム製品は、例えばプロセッサにより実行されると、本明細書で説明した機能をもたらし得る命令を提供する信号担持媒体を含んでよい。コンピュータプログラム製品は、任意の形式の1つまたは複数のマシン可読媒体で提供されてよい。したがって、例えば、1つまたは複数の画像処理装置またはプロセッサコアを含んだプロセッサが、1つまたは複数のマシン可読媒体によりプロセッサに送られるプログラムコードおよび/または命令または命令セットに応答して、本明細書における例示的なプロセスのブロックのうち1つまたは複数を実行してよい。一般に、マシン可読媒体は、本明細書で説明したオペレーションの少なくとも一部、および/または本明細書で説明したデバイス、システム、または任意のモジュールまたはコンポーネントの任意の部分を、本明細書で説明したデバイスおよび/またはシステムのいずれかに実現させることができるプログラムコードおよび/または命令または命令セットの形式で、ソフトウェアを運ぶことができる。
【0104】
本明細書で説明した任意の実装例において、「モジュール」という用語は、本明細書で説明した機能を提供するように構成されたソフトウェアロジック、ファームウェアロジック、ハードウェアロジック、および/または回路の任意の組み合わせを指す。ソフトウェアは、ソフトウェアパッケージ、コード、および/または命令セットまたは命令として具現化されてよく、本明細書で説明した任意の実装例において、「ハードウェア」は、例えば、ハードワイヤード回路、プログラマブル回路、ステートマシン回路、固定機能回路、実行ユニット回路、および/またはプログラマブル回路により実行される命令を格納したファームウェアを、単独でまたは任意の組み合わせで含んでよい。これらのモジュールは、より大きいシステムの一部を形成する回路(例えば、集積回路(IC)およびシステムオンチップ(SoC)など)として、まとめてまたは個別に具現化されてよい。
【0105】
様々な実施形態が、ハードウェア要素、ソフトウェア要素、またはその両方の組み合わせを用いて実現されてよい。ハードウェア要素の例としては、プロセッサ、マイクロプロセッサ、回路、回路素子(例えば、トランジスタ、抵抗、コンデンサ、およびインダクタなど)、集積回路、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、ロジックゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、およびチップセットなどが挙げられてよい。ソフトウェアの例としては、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、方法、手順、ソフトウェアインタフェース、アプリケーションプログラムインタフェース(API)、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、またはそれらの任意の組み合わせが挙げられてよい。一実施形態がハードウェア要素および/またはソフトウェア要素のいずれを用いて実現されるのかの判断は、所望の計算レート、電力レベル、耐熱性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバス速度、および他の設計上または性能上の制約といった任意の数の要因によって異なる場合がある。
【0106】
少なくとも1つの実施形態の1つまたは複数の態様が、マシン可読媒体に格納された、プロセッサ内の様々なロジックを表す代表的な命令によって実現されてよく、この命令は、マシンによって読み取られると、本明細書で説明した手法を行うためのロジックをマシンに作成させる。そのような表現は、IPコアとして知られており、ロジックまたはプロセッサを実際に作る製造機械にロードするために、有形のマシン可読媒体に格納されて、様々な顧客または製造施設に供給されてよい。
【0107】
本明細書に記載された特定の特徴を、様々な実装例を参照して説明してきたが、この説明は、限定的な意味で解釈されるように意図したものではない。したがって、本明細書で説明した実装例の様々な変更および他の実装例は、本開示が関連する当業者には明らかであるが、本開示の趣旨および範囲の中にあるとみなされる。
【0108】
これらの実施形態は、そのように説明した実施形態に限定されないが、添付した特許請求の範囲の範囲から逸脱することなく変更および改変を伴って実施されてもよいことが認識されるであろう。例えば、上記実施形態は、特徴の特定の組み合わせを含んでよい。しかしながら、上記実施形態は、この点に関して限定されることはなく、様々な実装例において、上記実施形態は、そのような特徴のサブセットのみの実行、そのような特徴の異なる順序での実行、そのような特徴の異なる組み合わせでの実行、および/または明示的に記載されたそれらの特徴に対する追加の特徴の実行を含んでよい。したがって、これらの実施形態の範囲は、添付した特許請求の範囲を、そのような特許請求の範囲が権利を有する等価物の全範囲と共に参照して判断されるべきである。
図1
図2
図3
図4
図5
図6
図7
図8
【国際調査報告】