(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023106490
(43)【公開日】2023-08-01
(54)【発明の名称】ストレージデバイスの容量利用率の関数であるプログラミング済みセル記憶密度モードを有するストレージデバイス
(51)【国際特許分類】
G06F 12/02 20060101AFI20230725BHJP
G06F 12/00 20060101ALI20230725BHJP
G11C 11/56 20060101ALI20230725BHJP
【FI】
G06F12/02 510A
G06F12/00 597U
G11C11/56 210
【審査請求】有
【請求項の数】21
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023080743
(22)【出願日】2023-05-16
(62)【分割の表示】P 2018190060の分割
【原出願日】2018-10-05
(31)【優先権主張番号】15/857,530
(32)【優先日】2017-12-28
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】シャンカー ナタラジャン
(72)【発明者】
【氏名】ラムカーシック ガネサン
(57)【要約】 (修正有)
【課題】高密度であるが低速なセルを有するメモリチップから構成されるストレージデバイスの性能を高速化するための装置、コンピューティングシステム、プログラム及びコンピュータ可読ストレージ媒体を提供する。
【解決手段】ストレージデバイスであるソリッドステートドライブ(SSD)は、コントローラと複数のフラッシュメモリチップを有する。複数のフラッシュメモリチップは、マルチビットストレージセルの3次元スタックを含み、マルチビットストレージセルは、複数の記憶密度モードを有する。コントローラは、少なくとも25%というストレージデバイスの記憶容量閾値までマルチビットストレージセルを低密度記憶モードにプログラミングし、ひとたび記憶容量閾値に到達すると、マルチビットストレージセルを高密度記憶モードにプログラミングする。
【選択図】
図4
【特許請求の範囲】
【請求項1】
ストレージデバイスを備え、
前記ストレージデバイスは、コントローラと、複数のフラッシュメモリチップとを有し、
前記複数のフラッシュメモリチップは、マルチビットストレージセルの3次元スタックを含み、
前記マルチビットストレージセルは、複数の記憶密度モードを有し、
前記コントローラは、少なくとも、
前記複数の記憶密度モードからの低密度記憶モードで、第1のマルチビットストレージセルに第1のデータを書き込み、
前記第1のデータを書き込むことに応じて、前記ストレージデバイスの記憶容量が記憶容量閾値に達したことを決定し、
前記低密度記憶モードで格納された第2のデータが低い頻繁でアクセスされていることを決定し、 前記ストレージデバイスの前記記憶容量が前記記憶容量閾値に達したことの決定に応じて、かつ、前記低密度記憶モードで格納された前記第2のデータが低い頻度でアクセスされていることの決定に応じて、前記複数の記憶密度モードからの高密度記憶モードで、前記第1のマルチビットストレージセルに前記第1のデータと第2のデータとを含むビットの組み合わせを書き込む
ように構成され、
前記高密度記憶モードで前記第1のマルチビットストレージセルに前記ビットの組み合わせを書き込むことは、
第2のマルチビットストレージセルから、前記低密度記憶モードで格納された前記第2のデータを読み出すことと、
前記第1のデータと前記第2のデータとを含む前記ビットの組み合わせを生成することと、
前記第1のマルチビットストレージセルに、前記高密度記憶モードで前記ビットの組み合わせを書き込むことと、を含む、
装置。
【請求項2】
前記低密度記憶モードはマルチレベルセル(MLC)モードである、
請求項1に記載の装置。
【請求項3】
前記高密度記憶モードはクワッドレベルセル(QLC)モードである、
請求項2に記載の装置。
【請求項4】
前記記憶容量閾値は少なくとも25%である、
請求項3に記載の装置。
【請求項5】
前記記憶容量閾値は25%以上75%以下の範囲内である、
請求項1から3のいずれか一項に記載の装置。
【請求項6】
前記高密度記憶モードはQLCモードである、
請求項1に記載の装置。
【請求項7】
前記ストレージデバイスはソリッドステートドライブである、
請求項1から6のいずれか一項に記載の装置。
【請求項8】
装置であって、
複数のフラッシュメモリチップの書き込みレベルを少なくとも決定するように構成されたコントローラを備え、
前記複数のフラッシュメモリチップは、マルチビットストレージセルの3次元スタックを含み、
前記マルチビットストレージセルは、複数の記憶密度モードを有し、
前記コントローラは、少なくとも、
前記複数の記憶密度モードからの低密度記憶モードで、第1のマルチビットストレージセルに第1のデータを書き込み、
前記第1のデータを書き込むことに応じて、前記装置の記憶容量が記憶容量閾値に達したことを決定し、
前記低密度記憶モードで格納された第2のデータが低い頻繁でアクセスされていることを決定し、
前記装置の前記記憶容量が前記記憶容量閾値に達したことの決定に応じて、かつ、前記低密度記憶モードで格納された前記第2のデータが低い頻度でアクセスされていることの決定に応じて、前記複数の記憶密度モードからの高密度記憶モードで、前記第1のマルチビットストレージセルに前記第1のデータと第2のデータとを含むビットの組み合わせを書き込む
ように構成され、
前記高密度記憶モードで前記第1のマルチビットストレージセルに前記ビットの組み合わせを書き込むことは、
第2のマルチビットストレージセルから、前記低密度記憶モードで格納された前記第2のデータを読み出すことと、
前記第1のデータと前記第2のデータとを含む前記ビットの組み合わせを生成することと、
前記第1のマルチビットストレージセルに、前記高密度記憶モードで前記ビットの組み合わせを書き込むことと、を含む、
装置。
【請求項9】
前記低密度記憶モードはマルチレベルセル(MLC)モードである、
請求項8に記載の装置。
【請求項10】
前記高密度記憶モードはクワッドレベルセル(QLC)モードである、
請求項9に記載の装置。
【請求項11】
前記記憶容量閾値は少なくとも25%である、
請求項10に記載の装置。
【請求項12】
前記記憶容量閾値は25%以上75%以下の範囲内である、
請求項8から10のいずれか一項に記載の装置。
【請求項13】
前記高密度記憶モードはQLCモードである、
請求項8に記載の装置。
【請求項14】
前記装置はソリッドステートドライブである、
請求項8から13のいずれか一項に記載の装置。
【請求項15】
複数の処理コアと、
メインメモリと、
前記複数の処理コアと前記メインメモリとの間に結合されたメモリコントローラと、
周辺ハブコントローラと、
前記周辺ハブコントローラに結合されたソリッドステートドライブと
を備え、
前記ソリッドステートドライブは、コントローラと、複数のフラッシュメモリチップとを有し、
前記複数のフラッシュメモリチップは、マルチビットストレージセルの3次元スタックを含み、
前記マルチビットストレージセルは、複数の記憶密度モードを有し、
前記コントローラは、少なくとも、
前記複数の記憶密度モードからの低密度記憶モードで、第1のマルチビットストレージセルに第1のデータを書き込み、
前記第1のデータを書き込むことに応じて、前記ソリッドステートドライブの記憶容量が記憶容量閾値に達したことを決定し、
前記低密度記憶モードで格納された第2のデータが低い頻繁でアクセスされていることを決定し、
前記ソリッドステートドライブの前記記憶容量が前記記憶容量閾値に達したことの決定に応じて、かつ、前記低密度記憶モードで格納された前記第2のデータが低い頻度でアクセスされていることの決定に応じて、前記複数の記憶密度モードからの高密度記憶モードで、前記第1のマルチビットストレージセルに前記第1のデータと第2のデータとを含むビットの組み合わせを書き込む
ように構成され、
前記高密度記憶モードで前記第1のマルチビットストレージセルに前記ビットの組み合わせを書き込むことは、
第2のマルチビットストレージセルから、前記低密度記憶モードで格納された前記第2のデータを読み出すことと、
前記第1のデータと前記第2のデータとを含む前記ビットの組み合わせを生成することと、
前記第1のマルチビットストレージセルに、前記高密度記憶モードで前記ビットの組み合わせを書き込むことと、を含む、
コンピューティングシステム。
【請求項16】
前記低密度記憶モードはマルチレベルセル(MLC)モードである、
請求項15に記載のコンピューティングシステム。
【請求項17】
前記高密度記憶モードはクワッドレベルセル(QLC)モードである、
請求項16に記載のコンピューティングシステム。
【請求項18】
前記記憶容量閾値は少なくとも25%である、
請求項17に記載のコンピューティングシステム。
【請求項19】
前記記憶容量閾値は25%以上75%以下の範囲内である、
請求項15から17のいずれか一項に記載のコンピューティングシステム。
【請求項20】
複数のフラッシュメモリチップを有するストレージデバイスのコントローラにより処理された場合、
複数の記憶密度モードからの低密度記憶モードで、第1のマルチビットストレージセルに第1のデータを書き込むことと、
前記第1のデータを書き込むことに応じて、前記ストレージデバイスの記憶容量が記憶容量閾値に達したことを決定することと、
前記低密度記憶モードで格納された第2のデータが低い頻繁でアクセスされていることを決定することと、
前記ストレージデバイスの前記記憶容量が前記記憶容量閾値に達したことの決定に応じて、かつ、前記低密度記憶モードで格納された前記第2のデータが低い頻度でアクセスされていることの決定に応じて、前記複数の記憶密度モードからの高密度記憶モードで、前記第1のマルチビットストレージセルに前記第1のデータと第2のデータとを含むビットの組み合わせを書き込むことと
を含む方法を前記ストレージデバイスに実行させ、
前記高密度記憶モードで前記第1のマルチビットストレージセルに前記ビットの組み合わせを書き込むことは、
第2のマルチビットストレージセルから、前記低密度記憶モードで格納された前記第2のデータを読み出すことと、
前記第1のデータと前記第2のデータからの少なくとも1つのビットとを含む前記ビットの組み合わせを生成することと、
前記第1のマルチビットストレージセルに、前記高密度記憶モードで前記ビットの組み合わせを書き込むことと
を含む、
プログラム。
【請求項21】
請求項20に記載のプログラムを記憶するコンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は概して、ストレージデバイスの容量利用率の関数であるプログラミング済みセル記憶密度モードを有するストレージデバイスに関する。
【背景技術】
【0002】
コンピューティングシステムがますます強力になり、それらの記憶装置は成長し続ける必要がある。この動向に応じて、大容量ストレージ半導体チップの製造業者が、ストレージセル1個に1ビット超を記憶するための手法を開発中である。残念ながら、そのようなセルは、それらのバイナリストレージセルの先行品と比較してより低速なプログラミング時間を示し得る。それ故、大容量ストレージデバイスの製造業者は、より高密度であるが低速なセルを有するメモリチップから構成されるストレージデバイスの性能を高速化するための新しい技術を開発している。
【図面の簡単な説明】
【0003】
以下の図面と併せた以下の詳細な説明から、本発明のより良い理解が得られ得る。
【0004】
【
図1a】マルチビットフラッシュストレージセルをプログラミングするためのパターンをSSD記憶容量利用率の関数として示す。
【
図1b】マルチビットフラッシュストレージセルをプログラミングするためのパターンをSSD記憶容量利用率の関数として示す。
【
図1c】マルチビットフラッシュストレージセルをプログラミングするためのパターンをSSD記憶容量利用率の関数として示す。
【
図1d】マルチビットフラッシュストレージセルをプログラミングするためのパターンをSSD記憶容量利用率の関数として示す。
【
図1e】マルチビットフラッシュストレージセルをプログラミングするためのパターンをSSD記憶容量利用率の関数として示す。
【
図1f】マルチビットフラッシュストレージセルをプログラミングするためのパターンをSSD記憶容量利用率の関数として示す。
【
図1g】マルチビットフラッシュストレージセルをプログラミングするためのパターンをSSD記憶容量利用率の関数として示す。
【0005】
【
図2】MLCモードからQLCモードへの電荷転送を示す。
【0006】
【
図3】
図1aから
図1gの書き込みパターンを実装できるSSDを示す。
【0007】
【0008】
【発明を実施するための形態】
【0009】
フラッシュメモリデバイスの構造は、半導体基板の上で鉛直に延在する、互いに積み重ねられた多数の別個のストレージセルを各々が含む列のアレイから構成されるストレージセルの3次元配置と理解され得る。記憶ブロックが多数のそのような列に対応する。記憶セルブロック内のストレージセルの特定のいくつかにアクセスすべく、ワードラインワイヤ構造(「ワードライン」)が、記憶セルブロックの異なる列内の同じ鉛直方向に位置するストレージセルに結合される。
【0010】
例えば、記憶ブロックの列の各々が8つのストレージセルの鉛直型積層体から構成されている場合、8つの異なるワードラインが、8つの異なる記憶レベルの記憶ブロックの列におけるそれぞれのセルにアクセスするために用いられ得る(例えば、第1ワードラインがその列の各々における最も低いセルに結合され得、2番目のワードラインがその列の各々における2番目に最も低いセルに結合され得る等である)。ストレージセルの各々が1ビット超記憶し得るフラッシュメモリの場合、単一のワードラインを通じて、情報の複数のページにアクセスし得る。ここで、大容量ストレージデバイスは従来、各々が複数のページから構成されるデータのブロックにおいてアクセス(読み出し/書き込み)がなされてきた。ストレージセル1個当たり1ビット超を記憶し得るフラッシュメモリデバイスは典型的には、ページが記憶されている記憶ブロック内の単一のワードラインをアクティブ化することにより、異なるページにアクセスできる。
【0011】
記憶ブロックは概して、ストレージセルが消去され得る(同じブロックのセルが共に消去される)最小単位であり、ページは概して、セルが書き込まれ得るか、または「プログラミング」され得る最小単位である。従って、例えば、多数のページを書き込むようホストがSSDにコマンドした場合、単一のワードラインをアクティブ化することにより、それらのページの複数が、同じ記憶ブロック内でプログラミングされ得る。書き込みコマンドを完全に実行すべくアクティブ化されるワードラインの数は、何ページがその書き込みに関連しているか、およびワードライン1本当たり何ページがアクセス可能であるかに依存する。単一のフラッシュメモリチップも典型的には、複数の面から構成される。各面は、チップ内の固有の記憶ブロックセットを含む。
【0012】
上述のように、異なるフラッシュメモリ技術は概して、ストレージセル1個当たり何ビットが記憶され得るかにより特徴付けられる。具体的には、単一レベルセル(SLC)はセル1個当たり1ビットを記憶し、複数レベルセル(MLC)はセル1個当たり2ビットを記憶し、三進レベルセル(TLC)はセル1個当たり3ビットを記憶し、クワッドレベルセル(QLC)はセル1個当たり4ビットを記憶する。SLCセルのみがセル1個当たり2つの論理状態(「1」または「0」)を記憶できるのに対し、異なるタイプの「マルチビット」ストレージセルとして特徴付けられ得るMLCセルタイプ、TLCセルタイプおよびQLCセルタイプの各々は、フラッシュデバイスの記憶容量を大幅に拡張する。なぜなら、単一のセルに2つより多くのデジタル状態が記憶され得るからである(例えば、MLCセル1個に4つのデジタル状態が記憶され得、TLCセル1個に8つのデジタル状態が記憶され得、QLCセル1個に16の論理状態が記憶され得る)。
【0013】
しかしながら、セル1個当たりの記憶密度およびセル1個当たりのアクセス時間に関して、トレードオフが存在する。すなわち、概して、ストレージセルがより多くのビットを記憶するほど、情報をセルに書き込むために必要な時間の量は長くなる。ここで、より多くのビットを記憶するストレージセルは、より少ないビットを記憶するストレージセルより厳しい電荷記憶許容値を有するものと理解され得る。すなわち、より多くのビットを記憶するセルは、そのセルが記憶し得る異なる論理状態間の差を示すより少量の電荷を有するのに対し、より少ないビットを記憶するセルは、そのセルが記憶し得る論理状態間差を示すより大量の電荷を有する。
【0014】
フラッシュセルは、電荷でポンピングすることによりプログラミングまたは消去される。呼び出し1回当たりでより少ないビットを記憶するセルは、それらの記憶された電荷状態間でセル1個当たりより多くのビットを記憶するセルよりも大きい差を有し、より「粗粒度の」ポンピング処理を用いる。このポンピング処理は、セル1個当たりより多くのビットを記憶する、より「細粒度の」ポンピング処理を用いるセルよりも少ないポンピングサイクルでより大きい電荷増加を適用する。このポンピング処理は、より多くのポンピングサイクルでより少ない電荷増加(少なくとも最大ポンピング電荷量)を適用する。より少ないビットを記憶するセルに関連するポンピングサイクルがより少ないと、そのようなセルは、より多いビットを記憶するセルと比較して平均でより少ないプログラムアクセス時間を示すことになる。
【0015】
従って、次世代フラッシュの製造技術はセル1個当たりの記憶容量に関する性能の向上をもたらすが、同時に、性能がセル1個当たりの平均プログラム時間に関して減少する。
【0016】
このトレードオフに対処すべく、ソリッドステートドライブ(SSD)などのフラッシュベースのストレージデバイスは、それらの基礎となる製造技術が記憶できるものより1個当たり少ないビットを記憶するセルから構成される記憶バッファを実装している。例えば、QLCフラッシュメモリチップから構成されるSSDは、SLCモードまたはMLCモードで動作するのにQLCセルの何割かを用いる。低密度モードで動作するセルは、新たに入力されたデータが書き込まれるキャッシュのようなバッファとして、SSDにより用いられる。密度はより低いがより高速なセルから構成されるバッファに新しい入力データを書き込むことにより、SSDの未処理のプログラムアクセス時間は、より高速であることが認められる。
【0017】
しかしながら、そのようなバッファの実装に関する問題が存在する。1番目の問題は、バックグラウンド処理としてコンテンツを高密度セルにライトバックすることにより、バッファのコンテンツが絶えず「クリアされて」いなければならないことである。ここで、概して、SSDバッファは、SSDの全記憶容量の1パーセントまたは2パーセント超のみを占める。バッファのコンテンツが高密度セルに規則的にライトバックされない場合、バッファは、一杯になり、SSDへの次の書き込み用に利用可能ではなくなる。残念ながら、バックグラウンド処理自体が、新しい書き込みコマンドのバッファをブロックし得る(新しい書き込みコマンドが到着した時にバッファがクリアされている場合、その書き込みコマンドは、バッファがクリアされるか、またはバックグラウンド処理が中断され得るまで待機しなければならない)。加えて、バックグラウンド処理によりSSDの動作の全体的な複雑さが増し、例えば、電力消費、コストおよび/または故障メカニズムが増すことになる。
【0018】
図1aから
図1fは、デバイスの高密度ストレージセルのはるかに大きい割合を用いる改善されたSSD設計の低密度モードでの動作を示す。加えて、これらのセルは、デバイスの標準的なストレージセルより動作が多く、上述のデバイスのバッファより動作が少ない。結果として、高度の管理を要するバックグラウンド処理の継続的な実行に関して直前に説明された課題は減少するはずである。
【0019】
図1aに示されるように、SSDは、各々がN個の記憶ブロックから構成される複数のフラッシュメモリチップから構成されるものとして見え得る。簡単にするために、
図1aの例示的なアーキテクチャは、SSD内に2つのフラッシュメモリチップ(ダイ_0およびダイ_1)のみが存在すると仮定している。しかしながら、当業者であれば、本明細書において説明される例示的なデバイスの教示を、2つより多くのフラッシュメモリチップを含む他のデバイスに容易に適用できよう。これらのメモリデバイスは両方とも、4つの面(面_0から面_3)から構成される。各面は、N個の記憶ブロックを含む(従って、メモリデバイス1個当たりに4×N個の記憶ブロックが存在する)。各記憶ブロックはM本のワードラインを含み、各ワードラインは、その最高密度QLCモードで動作する場合、4つの異なるページ(下(L)、上(U)、予備(X)およびトップ(T))へのアクセスをサポートする。
図1aは、例えば、デバイスが初めて用いられ、いかなるランダム顧客データもまだ記憶されていない時の初期状態を示す。
【0020】
図1bは、最初のページ数101がデバイスにプログラミングされた後のSSDの状態を示す。ここで、SSDは、論理アドレスを物理アドレスにマッピングするマッピングテーブル(アドレス変換テーブルとも称される)を管理するコントローラを含む。SSDに書き込まれるデータのブロックをホストが送信する場合、ホストは、このデータにブロックアドレスも付加する。このブロックアドレスは、論理ブロックアドレス(LBU)と称される。次に、SSDは、このデータブロックをSSDに書き込み、マッピングテーブル内で、このデータのLBUを、このブロックのデータのページが記憶されているSSD内の物理位置に関連付ける。これらの特定の物理位置は、ページが記憶されているSSD内の1または複数のダイ、面、ブロック、ワードラインおよびページリソースを一意に特定する物理ブロックアドレス(PBA)で指定される。
【0021】
図1bから分かるように、例示的なSSDは、異なる面および異なるメモリチップにわたる同じ記憶ブロックおよびワードライン(WL)位置に入力ページを順次プログラミングし、これにより、消費された記憶量が、
図1bにおける同じブロック位置およびワードライン位置にわたって左から右へと横に拡張していることが認められる。異なるSSD実装は異なる書き込みパターンを使用し得る。例えば、別のアプローチにおいて、SSDは、異なるブロックおよびワードラインにわたる同じダイおよび面リソースにわたって、入力ページを順次書き込み得る(この場合、消費された記憶容量は、同じダイ内で同じ面に沿って上から下へと鉛直に拡張することが認められるであろう)。
【0022】
図1bから分かるように、これら最初の数ページのプログラミングは、基礎となる製造技術が最高密度としてサポートするもの(QLC)よりも少ないセル1つ当たり記憶容量(MLC)で動作しているセルへの書き込みを含む。低密度のMLCモードで動作するセルにページを書き込むことにより、最高密度のQLCモードで動作するセルのみにページが書き込まれるアプローチと比較して、SSDのプログラムアクセス時間性能が向上する。すなわち、上述のように、低記憶容量のセルは、書き込みアクセス時間が高密度セルより少ない。
【0023】
加えて、記憶密度 がより低いことが原因で、ワードライン1本当たりのページ容量の半分のみが消費される。すなわち、例えば、セル1個当たり2ビットのみが記憶されるMLCモードで動作するセルを用いると、ワードライン1本当たり2ページのみが記憶され得る。以下でさらにより詳細に説明されるように、ページの記憶容量の未使用の半分は、SSDのストレージセルの全容量の閾値量が消費された場合に消費され得、その結果として、これらのセルを低密度MLCモードから高密度QLCモードに切り替える正当な理由となり得る。
【0024】
ワードライン1本の潜在的なページ記憶の半分のみへの書き込みのパターンが、ブロックアドレス0(BA=0)およびワードラインアドレス0(WL=0)の2ページ(LおよびU)のみが複数の面およびダイにわたって書き込まれているという点で、
図1bから直接的に見てとれる。ここで、SSDへのページの初期プログラミング101中に記憶ブロックの潜在的な容量の50%が未使用なので、4ページの情報を書き込むためには(たとえ、4ページの情報がQLCモードで単一のブロックの単一のワードラインに記憶され得るとしても)2つのブロックが必要である。すなわち、セルが低密度モード(セルモード当たり2ビット)で動作しているので、各ブロックは、ワードライン1本当たり2ページのみを記憶できる。それ故、2番目のブロックおよびワードラインの組み合わせは、3番目のページおよび4番目のページを記憶する必要がある。これに対し、セルが高密度モード(セルモード当たり4ビット)で動作していた場合には、ブロックおよびワードラインの組み合わせ1つ当たり4ページがプログラミングされ得る。
【0025】
再びであるが、同じ面およびダイの異なるブロックおよびワードラインにわたってデータが順次書き込まれる書き込みパターンを用いる代替的な実装では、ページLおよびUがダイ1の面0のBA=0およびWL=0に書き込まれた後、SSDは、例えば、ダイ1の面0のBA=0およびWL=1にページLおよびUを書き込み得る。この特定の実施形態では、再びであるが、特定のワードラインに沿った潜在的な記憶容量の半分のみがプログラミングされる。従って、無数の異なる記憶ブロックおよびワードラインの組み合わせのシーケンスが存在し、これらは、特定のプログラミングパターンを、SSDに書き込まれている新しいページとして定義するために用いられ得る。議論を容易にするために、本説明の残りでは主に、ページ書き込みパターンが
図1bから
図1fに示される実施形態のみに言及する。
【0026】
図1cは、追加の新しいページが低密度モードでSSDにプログラミングされた後のSSDのさらなる状態を示す。ここで、
図1cから理解され得るように、BA=0およびWL=0でのLページ位置およびUページ位置の全てが、SSD内の両方のダイの全ての面にわたって、より低いセル当たり記憶密度で書き込まれている。従って、SSDにわたる位置BA=0およびWL=0における全てのセルが低密度モードで書き込まれているので、そのようなセルは、それらの現在のモードの最大容量(ワードライン1本当たり2ページ)となっているが、それらの潜在的な最大容量(ワードライン1本当たり4ページ)とはなっていない。すなわち、
図1cから分かるように、ページ位置XおよびTには、これらの同じ記憶ブロック、面およびダイにわたって何も書き込まれておらず、このことが、これらのブロックの潜在的な最大記憶容量の利用率の50%の低下をもたらしている。しかしながら、ストレージセルがより低い密度の記憶モードで動作したことが原因で、これらのページのプログラミングをより少ない時間で行うことができている。
【0027】
図1dは、組み合わされたデータの量がSSDの最大容量のうちの50%の容量に対応する追加のページ数が前述の書き込みパターンに従ってSSDにプログラミングされた後のSSDの別のさらなる状態を示す。ここで、再びであるが、書き込まれたセルは、SSDの書き込みアクセス時間がSSDの記憶容量の利用率50%まで改善された低密度モードで動作している。伝統的なSSDバッファが典型的にはSSDのストレージセルの1%または2%を用いるに過ぎないという本説明の出だしでの議論を振り返り、本明細書において説明される改善されたアプローチは、SSDが、SSDのストレージセルの50%を消費したバッファから構成されている「かのように」SSD性能を示すはずであることに留意されたい。
【0028】
重要なことには、そのような大きい有効バッファを用いると、バッファのサイズが小さいことに起因して、利用可能な領域を生成するためにバッファから情報を絶えず読み出している、コストが高く高度の管理を要するバックグラウンド処理を実装する必要はほとんど/全くない。むしろ、改善されたアプローチの有効バッファは、SSDの記憶容量の50%である初期容量を有する。そのような大きい有効バッファを用いると、少なくとも初めのうちは、データを有効バッファから連続して読み出す必要はなく、むしろ、プログラミングされたデータは、標準的なセル記憶使用量モデルに従って単に所定の位置に留まり得る。
【0029】
図1eから
図1fは、SSDがさらに多くのページをSSDにプログラミングした後の
図1dの状態から先へと継続する書き込みパターンを示す。ここで、SSDの記憶容量の50%が消費されたがストレージセルの100%がそれらの最大記憶容量の50%で使用されている
図1dの状態の後、セルは、より多くのページの記憶を受け入れるべく、MLCモードからそれらの完全なQLCモードに切り替えられる必要がある。
【0030】
それ故、
図1eにおいて認められるように、書き込みパターンは、2番目のパスについて、しかし、MLC密度モードではなくQLC密度モードで反復する。それ故、さらに2ページ分の記憶容量が、SSDの異なる面およびダイにわたる全てのBA=0およびWL=0の位置に沿って利用可能である。具体的には、
図1eは、SSDの異なる面およびダイにわたるBA=0およびWL=0の位置のページ位置XおよびTにおけるデータで消費されているこれらの位置のそれまでに未使用の容量を示す。最大セル密度モードでのページの書き込みにより、QLCモードに関連する書き込み時間が長くなることが原因で、SSDの性能が、最初のセル利用率50%と比較して低速化し得る。上記の別の手法では、SSDは、MLCのようなSSDの容量利用率の最初の50%への高速化を示す。(
図1dから
図1eに)SSDの記憶容量の最初の50%が利用された後、SSDの性能は、低速のQLCプログラミング処理を導入したことに起因する何らかの低下を経験する。
【0031】
1つのアプローチによれば、MLCデータをQLCデータと共に記憶するセルをプログラミングすべく、元のMLCモードでの電荷分布は、
図2において提供される電荷分布転送図に従って、QLCモードに変換される。ここで、分かるように、セル1個当たりに記憶された2ビットは、4ビットQLCモードで2つの最下位ビットに変換される。
図2を
図1aから
図1fと比較すると、LページおよびUページが新しいQLCモードで記憶された4つのビットの最下位ビットを占有しているのに対し、新たに書き込まれたページのうちのXページおよびTページは、QLCモードで記憶された4ビットのうちの2つの最高位ビットを占有している。一実施形態において、セル1個当たり4つの記憶されたビットが、それらがT、X、U、Lとして最高位ビットから最下位ビットまで表すページに関して編成される。
【0032】
様々な実施形態において、書き込みパターンの2番目のパスをQLC密度で書き込む場合にMLCからQLCへの電荷の再分配を適切に実行すべく、当初は1番目のパスがMLCモードである間中あるセルに記憶されていたビットのペアが、そのセルから読み出され、次に、そのセルに書き込まれるべき新しいデータと組み合わされる。次に、組み合わされた4ビット(元の2ビットおよび新しい2ビット)は、そのセルにプログラミングされる。
【0033】
図1fおよび
図1gは、追加の記憶されたページ数に関して
図1cおよび
図1dとそれぞれ同等である以下の状態を示す。
図1fおよび
図1gから分かるように、SSDにおけるセルは、2番目のパスがセル当たり最大記憶密度モードである間中、継続的に上書きされ、これにより、各セルの記憶容量が、2つの追加のページXおよびTの各々から追加の2ビットだけ拡張される。従って、
図1gのSSDの状態の時点で、SSDの全記憶容量に到達している。
【0034】
様々な実施形態において、SSDのウェアレベリング機能により維持される情報は、高密度かつ低速なセルへの切り替えの結果としてのSSDに対する認められた性能ヒットを最小化するために用いられ得る。ここで、当該技術分野において公知であるように、スより高い頻度で書き込まれるストレージセルは、より低い頻度で書き込まれるセルよりも速く消耗する。
【0035】
故に、SSDのコントローラは、ウェアレベリングを実行して、情報のうち頻繁にアクセスされる「ホット」ブロックを、まれにアクセスされたに過ぎない「よりコールドな」ブロックに再マッピングする。ここで、コントローラは、SSDの物理アドレスのアクセスレート(および/または総アクセス数)をモニタリングし、これらの物理アドレスをホストにより提供される元のLBUにマッピングした内部マップを維持する。モニタリングされたレートおよび/またはカウントに基づいて、コントローラは、いつ特定のブロックが「ホット」とみなされてそれらの関連データのスワッピングが必要になったかを決定するとともに、いつ特定のブロックが「コールド」とみなされてデータのホットブロックを受け取り得るかを決定する。伝統的なウェアレベリングアプローチにおいて、よりコールドなブロックの情報も、ホットブロックにスワッピングされ得る。
【0036】
ひとたび高密度セル記憶モードの利用が始まると認められる、プログラミング性能の低下の影響を減らすべく、ウェアレベリング機能により維持されるホットブロックデータおよびコールドブロックデータも、MLCモードで動作しているセルにおけるホットページを維持するために、また、QLCモードで動作しているストレージセルにおけるコールドページを維持するために用いられ得る。ここで、例えば、
図1eはSSDを示す。SSDのストレージセルのうちのかなりの割合がMLCモードで動作しており、SSDのストレージセルのうちのかなりの割合がQLCモードで動作している。従って、低速QLCセル内に十分な数のホットブロックが存在し得、高速MLCセル内に十分な数のコールドブロックが存在し得る。コントローラにより維持されるウェアレベリングデータは、ホットブロックが高速MLCセルへと動かされ、コールドブロックが低速QLCセルへと動かされるようにこれらのページの位置をインテリジェントにスワップするために用いられ得る。
【0037】
容量利用率が50%またはそれより低く落ち込むと、SSDは完全にMLCモードで動作する状態に戻り得ることに留意されたい。
【0038】
図3は、上記で提供される教示と一致して動作し得るSSD301の実施形態を示す。
図3において認められるように、SSDは、1ビットより多くを記憶できる多くのストレージセル302を含む。加えて、SSDのストレージセルのほとんどまたは全ては、MLCモードおよびQLCモードの両方で動作可能である。これらのセルの特定の1つがこれらのモードのうちのどの1つで動作するかは、SSDの記憶容量利用率に依存する(例えば、全容量利用率の50%またはそれ未満では、全てのセルがMLCモードで動作し、容量利用率50%から100%の間では、いくつかのセルがMLCモードで動作し、一方、他のセルがQLCモードで動作し、容量利用率100%では、全てのセルがQLCモードで動作する)。
【0039】
SSDは、コントローラ306を含む。コントローラ306は、どのセルがMLCモードで動作するか、およびどのセルがQLCモードで動作するかの決定を担う。詳細に上述される一実施形態によれば、最初のプログラミングパスが、MLCモードで動作する全てのセルに適用され、次に、2番目のパスが、QLCモードで動作する全てのセルに適用される。容量利用率情報および/またはどのセルがどのモード311で動作しているかを特定する情報は、例えば、コントローラ306内で結合および/または統合されたメモリ領域および/またはレジスタ領域310において維持される。一実施形態において、そのような情報は、セルのセットがそれらの動作のMLCモード/QLCモードに関して共通のグループとして同一に扱われる各物理アドレスまたは何らかの粒度(例えば、ブロックID)について、MLCビット/QLCビットまたは類似のデジタル記録で表される。
【0040】
従って、そのような粒度がブロックレベルである場合、各ブロックは、情報311において特定され、これらのブロックの各々が初めてプログラミングされる時点をMLCについてさらに指定する。上50%超の容量利用率では、SSDがMLCセルからQLCセルへの変換を始めた場合、情報311は、QLCモードをQLCモードで新たに上書きされた各MLCブロックと共に示すように変更される。容量利用率100%に到達する時までに、全てのブロックの情報311がQLCモードを示すはずである。情報311は、どのブロックが実際に書き込まれるかも指定し得る。これにより、コントローラ306は、容量利用率の割合を決定し得る。その上、上述のように、情報311は、コントローラ306により実行されるウェアレベリングアルゴリズムを強化するために用いられ得る。具体的には、コントローラ306により実行されるウェアレベリングアルゴリズムは、ホットブロックをQLCブロックからMLCブロックへとスワップし得、コールドブロックをMLCブロックからQLCブロックへとスワップし得る。
【0041】
コントローラ306は、電荷ポンピング回路307にも結合される。電荷ポンピング回路307は、QLCモードおよびMLCモードについて異なる電荷ポンピング信号シーケンスを生成するように設計されている。ここで、コントローラ306は、書き込まれているセルにはどの動作モードが適切であるかについてのSSDの容量利用率に基づくコントローラの決定に従って任意の特定のプログラミングシーケンスにどの信号(MLCまたはQLC)を適用すべきかを電荷ポンピング回路307に通知する。
【0042】
コントローラは、専用ハードワイヤード論理回路(例えば、ハードワイヤード特定用途向け集積回路(ASIC)ステートマシンおよびサポート回路)、プログラマブル論理回路(例えば、フィールドプログラマブルゲートアレイ(FPGA))、プログラマブル論理デバイス(PLD)、プログラムコードを実行するように設計された論理回路(例えば、エンベデッドプロセッサ、エンベデッドコントローラ等)またはこれらの任意の組み合わせとして実装され得る。コントローラ306の少なくともいくつかの部分がプログラムコードを実行するように設計される実施形態において、プログラムコードは、ローカルメモリ(例えば、情報311が維持される同じメモリ)に記憶され、そこからコントローラにより実行される。I/Oインターフェース312が、コントローラ306に結合され、業界標準の周辺インターフェースまたはストレージインターフェース(例えば、周辺コンポーネントインターコネクト(PCIe)、ATA/IDE(Advanced Technology Attachment/Integrated Drive Electronics)、ユニバーサルシリアルバス(USB)、IEEE1394(「ファイヤワイヤ」)等)との互換性を有し得る。
【0043】
これは、他の実施形態が、本明細書において提供される教示を、たとえそれらが上述の特定の実施形態からいく分逸脱していたとしても利用し得る旨を認識することに関連する。特に、他の実施形態は、SSDの動作により新しいプログラミングがMLCモードからQLCモードに変わるSSD容量利用率の割合を変更し得る。例えば、一実施形態において、容量が50%(または25%から50%の間の任意の容量)ではなく25%に到達した時に、セルの書き込みがQLCモードで始まる。この場合、例えば、
図1dの状態に到達する前に、QLCモードでのプログラミングが開始される。また、様々な実施形態は、ユーザ/ホストに、どの容量利用率でQLCモードへの切り替えが始まるかを設定するようにさせ得る。例えば、SSDは、25%、30%、33%、40%および50%、または25%以上50%以下の間の任意の容量利用率という設定可能なオプションをサポートし得る。おそらく、25%未満の容量利用率も、QLCモードへの切り替えをトリガするために用いられ得る。
【0044】
これは、MLCの低密度モードおよびQLCの高密度モードが例示的なものに過ぎず、他の実施形態が異なる低密度モードおよび/または異なる高密度モードを有し得る旨を認識することにも関する。例えば、一実施形態において、低密度がTLCであり、高密度がQLCである。この実施形態において、高密度モードへの切り替えは、容量利用率が例えば75%(全てのセルがセル1個当たり3ビットでプログラミングされた時)またはそれ未満に到達した時に生じ得ることに留意されたい。別の実施形態において、低密度がSLCであり、高密度がQLCである。この実施形態において、高密度モードへの切り替えは、容量利用率が25%に到達した時(全てのセルがセル1個当たり1ビットでプログラミングされた時)に生じ得ることに留意されたい。以前のTLC/QLC SSDは、より少ないが高速の有効バッファを有するSLC/QLC SSDよりも多いが低速の有効バッファを有していた。従って、高密度モードへの切り替えが生じる場合の正確な割合は、利用される特定の低密度モードおよび高密度モードの機能でもあり得る。
【0045】
本明細書における教示は、
図3に関連して上述された特定のSSD以外のシステムにも適用され得る。例えば、上述のコントローラ306の機能は、部分的に、または全体的にホストシステムに統合され得る。
【0046】
図4は上述の方法を示す。方法は、複数のフラッシュメモリチップのマルチビットストレージセルを低密度記憶モードにプログラミングする段階(401)を含む。方法は、複数のフラッシュメモリチップの記憶容量の少なくとも25%がプログラミングされた後に、複数のフラッシュメモリチップのマルチビットストレージセルを高密度記憶モードにプログラミングする段階(402)も含む。
【0047】
図5は、コンピューティングシステム500(例えば、スマートフォン、タブレット型コンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、サーバコンピュータ等)の例示的な図を提供する。
図5において認められるように、ベーシックコンピューティングシステム500は、(例えば、複数の汎用処理コア515_1から515_Xを含み得る)中央処理装置501と、マルチコアプロセッサまたはアプリケーションプロセッサ上に配置されたメインメモリコントローラ517と、システムメモリ502と、ディスプレイ503(例えば、タッチスクリーン、フラットパネル)と、ローカル有線ポイントツーポイントリンク(例えば、USBインターフェース504)と、様々なネットワークI/O機能505(Ethernet(登録商標)インターフェースおよび/またはセルラーモデムサブシステムなど)と、無線ローカルエリアネットワーク(例えば、WiFi)インターフェース506と、無線ポイントツーポイントリンク(例えば、Bluetooth(登録商標))インターフェース507と、全地球測位システムインターフェース508と、様々なセンサ509_1から509_Yと、1または複数のカメラ510と、バッテリ511と、電力管理制御ユニット512と、スピーカおよびマイク513とオーディオコーダ/デコーダ514とを含み得る。
【0048】
アプリケーションプロセッサまたはマルチコアプロセッサ550は、そのCPU501内の1または複数の汎用処理コア515と、1または複数のグラフィック処理ユニット516と、メモリ管理機能517(例えば、メモリコントローラ)と、I/O制御機能518とを含み得る。汎用処理コア515は典型的には、コンピューティングシステムのオペレーティングシステムおよびアプリケーションソフトウェアの動作を実行する。グラフィック処理ユニット516は典型的には、例えば、ディスプレイ503に表示されるグラフィック情報を生成するグラフィック集約機能 を実行する。メモリ制御機能517は、システムメモリ502とインターフェースして、システムメモリ502との間でデータの書き込み/読み出しを行う。電力管理制御ユニット512は概して、システム500の電力消費を制御する。
【0049】
タッチスクリーンディスプレイ503、通信インターフェース504-707、GPSインターフェース508、センサ509、カメラ510およびスピーカ/マイクコーデック513、514の各々は、必要に応じて統合型周辺デバイス(例えば、1または複数のカメラ510)も含むコンピューティングシステム全体に対する様々な形式のI/O(入力および/または出力)として見られ得る。実装に応じて、これらのI/Oコンポーネントのうちの様々なものが、アプリケーションプロセッサ/マルチコアプロセッサ550上で統合され得るか、またはダイの外またはアプリケーションプロセッサ/マルチコアプロセッサ550のパッケージの外に配置され得る。
【0050】
コンピューティングシステムは、システムの大容量ストレージコンポーネントであり得る不揮発性ストレージ520も含む。ここで、例えば、大容量ストレージは、上記で詳細に説明されるように、SSDの容量利用率に応じてそのマルチビットストレージセルが異なる記憶密度でプログラミングされるフラッシュメモリチップから構成される1または複数のSSDから構成され得る。
【0051】
本発明の実施形態は、上記の様々な処理を含み得る。これらの処理は、機械実行可能命令において具現化され得る。この命令は、汎用プロセッサまたは特定用途向けプロセッサに特定の処理を実行させるために用いられ得る。代替的に、これらの処理は、処理を実行するためのハードワイヤード論理回路またはプログラマブル論理回路(例えば、FPGA、PLD)を含む特定ハードウェアコンポーネント/カスタムハードウェアコンポーネントにより、またはプログラミングされたコンピュータコンポーネントおよびカスタムハードウェアコンポーネントの任意の組み合わせにより実行され得る。
【0052】
本発明の要素は、機械実行可能命令を記憶するための機械可読媒体としても提供され得る。機械可読媒体は、限定はされないが、フロッピー(登録商標)ディスケット、光ディスク、CD-ROM、磁気光ディスク、フラッシュメモリ、ROM、RAM、EPROM、EEPROM、磁気カードもしくは光カード、伝播媒体、または電子命令を記憶するのに適した他のタイプの媒体/機械可読媒体を含み得る。例えば、本発明は、通信リンク(例えば、モデム接続またはネットワーク接続)を介して搬送波または他の伝播媒体に具現化されるデータ信号を用いて、リモートコンピュータ(例えば、サーバ)から要求しているコンピュータ(例えば、クライアント)に転送され得るコンピュータプログラムとしてダウンロードされ得る。
【0053】
上述の明細書において、本発明は、その特定の例示的な実施形態を参照して説明されている。しかしながら、添付の特許請求の範囲に記載される本発明のより広い趣旨および範囲から逸脱することなく、様々な修正および変更がなされ得ることは明らかであろう。よって、本明細書および図面は、限定的な意味ではなく、例示的な意味で解釈されるべきである。
【0054】
[項目1]
ストレージデバイスを備え、
上記ストレージデバイスは、コントローラと、複数のフラッシュメモリチップとを有し、
上記複数のフラッシュメモリチップは、マルチビットストレージセルの3次元スタックを含み、
上記マルチビットストレージセルは、複数の記憶密度モードを有し、
上記コントローラは、少なくとも25%という上記ストレージデバイスの記憶容量閾値まで上記セルを低密度記憶モードにプログラミングし、ひとたび上記容量閾値に到達すると、上記セルを高密度モードにプログラミングする、
装置。
[項目2]
上記低密度記憶モードはマルチレベルセル(MLC)である、
項目1に記載の装置。
[項目3]
上記高密度記憶モードはクワッドレベルセル(QLC)である、
項目2に記載の装置。
[項目4]
上記記憶容量閾値は50%である、
項目3に記載の装置。
[項目5]
上記記憶容量閾値は25%以上75%以下の範囲内である、
項目1に記載の装置。
[項目6]
上記高密度記憶モードはQLCである、
項目1に記載の装置。
[項目7]
上記ストレージデバイスはソリッドステートドライブである、
項目1に記載の装置。
[項目8]
複数のフラッシュメモリチップのプログラミングレベルを決定するコントローラを備え、
上記複数のフラッシュメモリチップは、マルチビットストレージセルの3次元スタックを含み、
上記マルチビットストレージセルは、複数の記憶密度モードを有し、
上記コントローラは、少なくとも25%という上記フラッシュメモリチップの記憶容量閾値まで上記セルを低密度記憶モードにプログラミングし、ひとたび上記容量閾値に到達すると、上記セルを高密度記憶モードにプログラミングする、
装置。
[項目9]
上記低密度記憶モードはマルチレベルセル(MLC)である、
項目8に記載の装置。
[項目10]
上記高密度記憶モードはクワッドレベルセル(QLC)である、
項目9に記載の装置。
[項目11]
上記記憶容量閾値は50%である、
項目10に記載の装置。
[項目12]
上記記憶容量閾値は25%以上75%以下の範囲内である、
項目8に記載の装置。
[項目13]
上記高密度記憶モードはQLCである、
項目8に記載の装置。
[項目14]
上記ストレージデバイスはソリッドステートドライブである、
項目8に記載の装置。
[項目15]
複数の処理コアと、
メインメモリと、
上記複数の処理コアと上記メインメモリとの間に結合されたメモリコントローラと、
周辺ハブコントローラと、
上記周辺ハブコントローラに結合されたソリッドステートドライブと
を備え、
上記ソリッドステートドライブは、コントローラと、複数のフラッシュメモリチップとを有し、
上記複数のフラッシュメモリチップは、マルチビットストレージセルの3次元スタックを含み、
上記マルチビットストレージセルは、複数の記憶密度モードを有し、
上記コントローラは、少なくとも25%という上記ストレージデバイスの記憶容量閾値まで上記セルを低密度記憶モードにプログラミングし、ひとたび上記容量閾値に到達すると、上記セルを高密度記憶モードにプログラミングする、
コンピューティングシステム。
[項目16]
上記低密度記憶モードはマルチレベルセル(MLC)である、
項目15に記載のコンピューティングシステム。
[項目17]
上記高密度記憶モードはクワッドレベルセル(QLC)である、
項目16に記載のコンピューティングシステム。
[項目18]
上記記憶容量閾値は50%である、
項目17に記載のコンピューティングシステム。
[項目19]
上記記憶容量閾値は25%以上75%以下の範囲内である、
項目15に記載のコンピューティングシステム。
[項目20]
複数のフラッシュメモリチップを有するストレージデバイスのコントローラにより処理された場合、
上記複数のフラッシュメモリチップのマルチビットストレージセルを低密度記憶モードにプログラミングする手順と、
上記複数のフラッシュメモリチップの上記記憶容量の少なくとも25%がプログラミングされた後に、上記複数のフラッシュメモリチップの上記マルチビットストレージセルを高密度記憶モードにプログラミングする手順と
を含む方法を上記ストレージデバイスに実行させる記憶されたプログラムコード
を備える製造品。
【外国語明細書】