(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6321682
(24)【登録日】2018年4月13日
(45)【発行日】2018年5月9日
(54)【発明の名称】ソリッドステートメモリにおける動作のモードを構成するシステム及び方法
(51)【国際特許分類】
G06F 12/02 20060101AFI20180423BHJP
G06F 12/00 20060101ALI20180423BHJP
G06F 12/16 20060101ALI20180423BHJP
G06F 3/08 20060101ALI20180423BHJP
【FI】
G06F12/02 510A
G06F12/00 597U
G06F12/16 310A
G06F3/08 H
【請求項の数】42
【全頁数】24
(21)【出願番号】特願2015-552867(P2015-552867)
(86)(22)【出願日】2014年1月13日
(65)【公表番号】特表2016-508276(P2016-508276A)
(43)【公表日】2016年3月17日
(86)【国際出願番号】US2014011352
(87)【国際公開番号】WO2014110535
(87)【国際公開日】20140717
【審査請求日】2016年12月20日
(31)【優先権主張番号】13/741,299
(32)【優先日】2013年1月14日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】504056130
【氏名又は名称】ウェスタン デジタル テクノロジーズ インコーポレーテッド
(74)【代理人】
【識別番号】110002572
【氏名又は名称】特許業務法人平木国際特許事務所
(72)【発明者】
【氏名】ジーン セバスティアン エー.
(72)【発明者】
【氏名】ホーン ロバート エル.
【審査官】
塚田 肇
(56)【参考文献】
【文献】
特開2000−173281(JP,A)
【文献】
特表2012−512469(JP,A)
【文献】
特開平11−345491(JP,A)
【文献】
特開2011−186563(JP,A)
【文献】
特開2012−068986(JP,A)
【文献】
特開2008−276733(JP,A)
【文献】
特開2007−242163(JP,A)
【文献】
米国特許出願公開第2010/0122016(US,A1)
【文献】
米国特許出願公開第2012/0246391(US,A1)
【文献】
米国特許出願公開第2010/0327923(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00−12/16
G06F 3/08
(57)【特許請求の範囲】
【請求項1】
不揮発性データストレージシステムであって、
コントローラと、
1以上のソリッドステートメモリストレージデバイスのアレイであって、前記メモリストレージデバイスは、マルチレベルセル(MLC)モード及びシングルレベルセル(SLC)モードで動作可能な複数のマルチレベルセル(MLC)メモリデータロケーションを含む、ソリッドステートメモリストレージデバイスのアレイと、
前記アレイと接続されるブリッジデバイスと、を備え、
前記ブリッジデバイスは、前記MLCメモリデータロケーションの少なくともいくつかに第1及び第2の領域を定義するように構成され、
前記第1の領域は、前記SLC又は前記MLCモードのいずれかで動作するデータロケーションを含み、
前記第2の領域は、前記SLC又は前記MLCモードのいずれかで動作するために割り当てられるように構成されるデータロケーションを含み、前記第2の領域は初期開始アドレスおよび初期終了アドレスによって定義されており、
前記ブリッジデバイスは、
前記コントローラからのコマンドに応じて、前記SLC又は前記MLCモードで動作するために前記第2の領域にデータロケーションのセットを割り当てて、前記初期開始アドレスを新たな開始アドレスに調整するかまたは前記初期終了アドレスを新たな初期終了アドレスに調整し、
前記第2の領域の前記データロケーションが前記SLC又は前記MLCモードのいずれかで動作するように割り当てられるまで、前記第2の領域の前記データロケーションへのデータアクセスを防ぐ
ように構成される、データストレージシステム。
【請求項2】
前記初期開始アドレスは、前記第1の領域と前記第2の領域との境界を示す請求項1に記載のデータストレージシステム。
【請求項3】
前記ブリッジデバイスは、少なくとも、
前記初期開始アドレスを前記新たな開始アドレスに調整し、
前記SLC又は前記MLCモードのいずれかで動作するために、前記初期開始アドレスと前記新たな開始アドレスとの間の前記第2の領域に位置付けられる前記データロケーションの前記セットを割り当て、前記初期開始アドレスに隣接する前記第1の領域の前記データロケーションの動作モードを一致させ、
新たに割り当てられたデータロケーションへのデータアクセスを可能にする
ことにより、前記SLC又は前記MLCモードのいずれかで動作するために前記第2の領域にデータロケーションを割り当てるように更に構成される、請求項1に記載のデータストレージシステム。
【請求項4】
前記データアクセスを可能にすることは、
前記初期開始アドレスを前記新たな開始アドレスに調整するための前記コントローラからのコマンドを受信すると直ぐに、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、
アクセスをアクティベートするための前記コントローラからのコマンドを受信すると、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、及び
前記コントローラからの、アクセスアクティベーション用に特化しないコマンドを受信すると、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、
のうち1つを含む、請求項3に記載のデータストレージシステム。
【請求項5】
前記ブリッジデバイスは、
前記コントローラからのコマンドに応じて、新たな開始アドレスへ逐次調整し、各新たな開始アドレスは、以前の開始アドレスよりも大きく、
前記新たな開始アドレスへのそれぞれの逐次調整後に、1つのモードで動作するために前記新たな開始アドレスと前記以前の開始アドレスとの間に位置付けられる前記データロケーションを割り当て、前記以前の開始アドレスに隣接する前記第1の領域の前記データロケーションの動作モードを一致させる
ように更に構成される、請求項3に記載のデータストレージシステム。
【請求項6】
前記ブリッジデバイスは、製造者の保証制約に従って設定された閾値を超えるとき、前記新たな開始アドレスに調整しないように更に構成される、請求項3に記載のデータストレージシステム。
【請求項7】
前記ブリッジデバイスは、前記コントローラからのコマンドで、前記新たな開始アドレスを前記初期開始アドレスにリセットするように更に構成される、請求項3に記載のデータストレージシステム。
【請求項8】
前記ブリッジデバイスは、リセットされると、リセットフラグを設定するように更に構成される、請求項7に記載のデータストレージシステム。
【請求項9】
前記ブリッジデバイスは、少なくともいくつかのMLCメモリデータロケーション内に、前記SLC又は前記MLCモードのいずれかで動作するデータロケーションを含む第3の領域を定義するように更に構成され、前記初期終了アドレスは、前記第2の領域と前記第3の領域との境界を示す、請求項1に記載のデータストレージシステム。
【請求項10】
前記ブリッジデバイスは、少なくとも、
前記初期終了アドレスを前記新たな終了アドレスに調整し、
前記SLC又は前記MLCモードのいずれかで動作するために前記初期終了アドレスと前記新たな終了アドレスとの間の前記第2の領域に位置付けられる前記データロケーションのセットを割り当て、前記初期終了アドレスに隣接する前記第3の領域の前記データロケーションの動作モードと一致させ、
新たに割り当てられたデータロケーションへのデータアクセスを可能にする、
ことにより、前記SLC又は前記MLCモードのいずれかで動作するために前記第2の領域にデータロケーションを割り当てるように構成される、請求項9に記載のデータストレージシステム。
【請求項11】
前記データアクセスを可能にすることは、
前記初期終了アドレスを前記新たな終了アドレスに調整するための前記コントローラからのコマンドを受信すると直ぐに、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、
アクセスをアクティベートするための前記コントローラからのコマンドを受信すると、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、及び
前記コントローラからの、アクセスアクティベーション用に特化しないコマンドを受信すると、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、
のうち1つを含む、請求項10に記載のデータストレージシステム。
【請求項12】
前記ブリッジデバイスは、
前記コントローラからのコマンドに応じて、新たな終了アドレスへ逐次調整し、各新たな開始アドレスは、以前の終了アドレスよりも小さく、
前記新たな終了アドレスへのそれぞれの逐次調整後に、1つのモードで動作するために前記新たな終了アドレスと前記以前の終了アドレスとの間に位置付けられる前記データロケーションを割り当て、前記以前の終了アドレスに隣接する前記第3の領域の前記データロケーションの動作モードに一致させる
ように更に構成される、請求項10に記載のデータストレージシステム。
【請求項13】
前記ブリッジデバイスは、製造者の保証制約に従って設定された閾値を超えるとき、前記新たな終了アドレスに調整しないように更に構成される、請求項10に記載のデータストレージシステム。
【請求項14】
前記ブリッジデバイスは、前記コントローラからのコマンドで、前記新たな終了アドレスを前記初期終了アドレスにリセットするように更に構成される、請求項10に記載のデータストレージシステム。
【請求項15】
前記ブリッジデバイスは、リセットされると、リセットフラグを設定するように更に構成される、請求項14に記載のデータストレージシステム。
【請求項16】
前記第1の領域は、前記SLCモードで動作するデータロケーションを含み、前記第3の領域は、前記MLCモードで動作するデータロケーションを含む、請求項9に記載のデータストレージシステム。
【請求項17】
前記ブリッジデバイスは、1以上のコンフィグレーションレジスタを含み、前記コントローラからのコマンドは、前記1以上のコンフィグレーションレジスタの設定により示される、請求項1に記載のデータストレージシステム。
【請求項18】
前記ブリッジデバイスは、
少なくともいくつかのMLCメモリデータロケーション内に、前記SLC又は前記MLCモードのいずれかで動作するために割り当てられるように構成されるデータロケーションを含む第4の領域を定義し、
前記コントローラからのコマンドに応じて、前記SLC又は前記MLCモードのいずれかで動作するために前記第4の領域にデータロケーションのセットを割り当て、
前記第4の領域の前記データロケーションが前記SLC又は前記MLCモードのいずれかで動作するように割り当てられるまで、前記第4の領域の前記データロケーションへのデータアクセスを防ぐように更に構成される、請求項1に記載のデータストレージシステム。
【請求項19】
前記第2の領域及び前記第4の領域は、互いに隣接しない、請求項18に記載のデータストレージシステム。
【請求項20】
前記コントローラの制御下で磁気媒体を回転することを更に備える請求項1に記載のデータストレージシステム。
【請求項21】
(1)コントローラと、(2)1以上のソリッドステートメモリストレージデバイスのアレイであって、前記メモリストレージデバイスが、マルチレベルセル(MLC)モード及びシングルレベルセル(SLC)モードで動作可能な複数のマルチレベルセル(MLC)メモリデータロケーションを含む、ソリッドステートメモリストレージデバイスのアレイと、(3)前記アレイと接続されるブリッジデバイスと、を備える不揮発性データストレージシステムにおけるブリッジデバイスを動作する方法であって、
前記MLCメモリデータロケーションの少なくともいくつかに第1及び第2の領域を定義するステップであって、
前記第1の領域が、前記SLC又は前記MLCモードのいずれかで動作するデータロケーションを含み、
前記第2の領域が、前記SLC又は前記MLCモードのいずれかで動作するために割り当てられるように構成されるデータロケーションを含み、前記第2の領域は初期開始アドレスおよび初期終了アドレスによって定義されている、ステップと、
前記コントローラからのコマンドに応じて、前記SLC又は前記MLCモードで動作するために前記第2の領域にデータロケーションを割り当て、前記初期開始アドレスを新たな開始アドレスに調整するかまたは前記初期終了アドレスを新たな初期終了あどれすに調整するステップと、
前記第2の領域の前記データロケーションが前記SLC又は前記MLCモードのいずれかで動作するように割り当てられるまで、前記第2の領域の前記データロケーションへのデータアクセスを防ぐステップと、
を備える方法。
【請求項22】
前記初期開始アドレスは、前記第1の領域と前記第2の領域との境界を示す請求項21に記載の方法。
【請求項23】
前記SLC又は前記MLCモードのいずれかで動作するために前記第2の領域にデータロケーションのセットを割り当てるステップは、
前記初期開始アドレスを前記新たな開始アドレスに調整するステップと、
前記SLC又は前記MLCモードのいずれかで動作するために、前記初期開始アドレスと前記新たな開始アドレスとの間の前記第2の領域に位置付けられる前記データロケーションを割り当て、前記初期開始アドレスに隣接する前記第1の領域の前記データロケーションの動作モードを一致させるステップと、
新たに割り当てられたデータロケーションへのデータアクセスを可能にするステップと、
を更に含む請求項21に記載の方法。
【請求項24】
前記データアクセスを可能にするステップは、
前記初期開始アドレスを前記新たな開始アドレスに調整するために前記コントローラからのコマンドを受信すると直ぐに、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、
アクセスをアクティベートするために前記コントローラからのコマンドを受信すると、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、及び
前記コントローラからの、アクセスアクティベーション用に特化しないコマンドを受信すると、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、
のうち1つを含む、請求項23に記載の方法。
【請求項25】
前記コントローラからのコマンドに応じて、新たな開始アドレスへ逐次調整するステップであって、各新たな開始アドレスは、以前の開始アドレスよりも大きい、ステップと、
前記新たな開始アドレスへのそれぞれの逐次調整後に、1つのモードで動作するために前記新たな開始アドレスと前記以前の開始アドレスとの間に位置付けられる前記データロケーションを割り当て、前記以前の開始アドレスに隣接する前記第1の領域の前記データロケーションの動作モードを一致させるステップと、
を更に備える請求項23に記載の方法。
【請求項26】
製造者の保証制約に従って設定された閾値を超えるとき、前記新たな開始アドレスに調整しないステップを更に備える請求項23に記載の方法。
【請求項27】
前記コントローラからのコマンドで、前記新たな開始アドレスを前記初期開始アドレスにリセットするステップを更に備える請求項23に記載の方法。
【請求項28】
リセットされると、リセットフラグを設定するステップを更に備える請求項27に記載の方法。
【請求項29】
少なくともいくつかのMLCメモリデータロケーション内に、前記SLC又は前記MLCモードのいずれかで動作するデータロケーションを含む第3の領域を定義するステップを更に備え、前記初期終了アドレスは、前記第2の領域と前記第3の領域との境界を示す、請求項21に記載の方法。
【請求項30】
前記SLC又は前記MLCモードのいずれかで動作するために前記第2の領域にデータロケーションの前記セットを割り当てるステップは、
前記初期終了アドレスを前記新たな終了アドレスに調整するステップと、
前記SLC又は前記MLCモードのいずれかで動作するために前記初期終了アドレスと前記新たな終了アドレスとの間の前記第2の領域に位置付けられる前記データロケーションを割り当て、前記初期終了アドレスに隣接する前記第3の領域の前記データロケーションの動作モードを一致させるステップと、
新たに割り当てられたデータロケーションへのデータアクセスを可能にするステップと、
を更に備える請求項29に記載の方法。
【請求項31】
前記データアクセスを可能にするステップは、
前記初期終了アドレスを前記新たな終了アドレスに調整するための前記コントローラからのコマンドを受信すると直ぐに、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、
アクセスをアクティベートするための前記コントローラからのコマンドを受信すると、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、及び
前記コントローラからの、アクセスアクティベーション用に特化しないコマンドを受信すると、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、
のうちの1つを含む請求項30に記載の方法。
【請求項32】
前記コントローラからのコマンドに応じて、新たな終了アドレスを逐次調整するステップであって、各新たな開始アドレスは、以前の終了アドレスよりも小さい、ステップと、
前記新たな終了アドレスのそれぞれの逐次調整後に、1つのモードで動作するために前記新たな終了アドレスと前記以前の終了アドレスとの間に位置付けられる前記データロケーションを割り当て、前記以前の終了アドレスに隣接する前記第3の領域の前記データロケーションの動作モードを一致させるステップと、
を更に備える請求項30に記載の方法。
【請求項33】
製造者の保証制約に従って設定された閾値を超えるとき、前記新たな終了アドレスに調整しないステップを更に備える請求項30に記載の方法。
【請求項34】
前記コントローラからのコマンドで、前記新たな終了アドレスを前記初期終了アドレスにリセットするステップを更に備える請求項30に記載の方法。
【請求項35】
リセットされると、リセットフラグを設定するステップを更に備える請求項34に記載の方法。
【請求項36】
前記第1の領域は、前記SLCモードで動作するデータロケーションを含み、前記第3の領域は、前記MLCモードで動作するデータロケーションを含む、請求項29に記載の方法。
【請求項37】
前記ブリッジデバイスは、1以上のコンフィグレーションレジスタを含み、前記コントローラからのコマンドは、前記1以上のコンフィグレーションレジスタの設定により示される、請求項21に記載の方法。
【請求項38】
少なくともいくつかのMLCメモリデータロケーション内に、前記SLC又は前記MLCモードで動作するために割り当てられるように構成されるデータロケーションを含む第4の領域を定義するステップと、
前記コントローラからのコマンドに応じて、前記SLC又は前記MLCモードのいずれかで動作するために前記第4の領域にデータロケーションのセットを割り当てるステップと、
前記第4の領域の前記データロケーションが前記SLC又は前記MLCモードのいずれかで動作するように割り当てられるまで、前記第4の領域の前記データロケーションへのデータアクセスを防ぐステップと、
を更に備える請求項21に記載の方法。
【請求項39】
前記第2の領域及び前記第4の領域は、互いに隣接しない、請求項38に記載の方法。
【請求項40】
前記データストレージシステムは、前記コントローラの制御下で磁気媒体を回転することを更に備える請求項21に記載の方法。
【請求項41】
(1)ソリッドステートメモリストレージデバイスが、マルチレベルセル(MLC)モード及びシングルレベルセル(SLC)モードで動作可能な複数のマルチレベルセル(MLC)メモリデータロケーションを含む、1以上のソリッドステートメモリストレージデバイスのアレイと、(2)不揮発性データストレージシステムにおけるコントローラと、接続されるように構成されるブリッジデバイスであって、
前記MLCメモリデータロケーションの少なくともいくつかに第1及び第2の領域を定義するように構成され、
前記第1の領域は、前記SLC又は前記MLCモードのいずれかで動作するデータロケーションを含み、
前記第2の領域は、前記SLC又は前記MLCモードのいずれかで動作するために割り当てられるように構成されるデータロケーションを含み、前記第2の領域は初期開始アドレスおよび初期終了アドレスによって定義されており、
前記コントローラからのコマンドに応じて、前記SLC又は前記MLCモードで動作するために前記第2の領域にデータロケーションのセットを割り当て、前記初期開始アドレスを新たな開始アドレスに調整するかまたは前記初期終了アドレスを新たな終了アドレスに調整するように構成され、
前記第2の領域の前記データロケーションが前記SLC又は前記MLCモードのいずれかで動作するように割り当てられるまで、前記第2の領域の前記データロケーションへのデータアクセスを防ぐように構成される、ブリッジデバイス。
【請求項42】
不揮発性データストレージシステムであって、
コントローラと、
1以上のソリッドステートメモリストレージデバイスのアレイであって、前記メモリストレージデバイスは、複数のマルチレベルセル(MLC)モード及びシングルレベルセル(SLC)モードで動作可能な複数のマルチレベルセル(MLC)メモリデータロケーションを含む、ソリッドステートメモリストレージデバイスのアレイと、
前記アレイと接続されるブリッジデバイスと、を備え、
前記ブリッジデバイスは、
前記MLCメモリデータロケーションの少なくともいくつかに第1及び第2の領域を定義するように構成され、
前記第1の領域は、前記SLCモード又は前記複数のMLCモードの1つのいずれかで動作するデータロケーションを含み、
前記第2の領域は、前記SLCモード又は前記複数のMLCモードの1つで動作するようために割り当てられるように構成されるデータロケーションを含み、前記第2の領域は初期開始アドレスおよび初期終了アドレスによって定義されており、
前記ブリッジデバイスは、
前記コントローラからのコマンドに応じて、前記SLCモード又は前記複数のMLCモードの1つのいずれかで動作するために前記第2の領域にデータロケーションのセットを割り当て、前記初期開始アドレスを新たな開始アドレスに調整するかまたは前記初期終了アドレスを新たな初期終了アドレスに調整し、
前記第2の領域の前記データロケーションが前記SLCモード又は前記複数のMLCモードの1つのいずれかで動作するように割り当てられるまで、前記第2の領域の前記データロケーションへのデータアクセスを防ぐ
ように構成される、データストレージシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、フラッシュドライブを含むがこれに限定されない不揮発性ストレージシステムに関する。より具体的には、本開示は、ソリッドステートドライブにおける強化されたコントローラアーキテクチャのためのシステム及び方法に関する。
【背景技術】
【0002】
様々な種類のコントローラアーキテクチャがフラッシュメディアの制御用に存在する。Open NAND Flash Interface(ONFI)は、フラッシュメモリ製造者がサポートするべきコマンドのいくつかの共通セットを特定する標準的なインターフェースである。ONFIは、例えば、ページ書き込み/読み出し及びブロック消去を含みうるいくつかのローレベルな基本的I/Oオペレーションをサポートする。
【発明の概要】
【0003】
しかし、有効なフラッシュメディア管理は、しばしば、論理‐物理マッピング、ガベージコレクション及びウェアレベリングのような複数のハイレベルかつ潜在的なプロセッサ集中機能を含む。これらの機能は、ONFIの範囲を超え、そのため、有効なコントローラアーキテクチャは、これらのニーズを解決しつつ、ハイレベルのデータスループットパフォーマンスをホストに提供することを必要としている。
【図面の簡単な説明】
【0004】
本発明の多様な特徴を実施するシステム及び方法は、以下の図面を参照して説明される。
【
図1A】
図1A−1Cは、いくつかのソリッドステートドライブ(SSD)コントローラアーキテクチャを示す。
【
図1B】
図1A−1Cは、いくつかのソリッドステートドライブ(SSD)コントローラアーキテクチャを示す。
【
図1C】
図1A−1Cは、いくつかのソリッドステートドライブ(SSD)コントローラアーキテクチャを示す。
【
図1D】
図1Dは、一実施形態に係るコントローラアーキテクチャを示すブロック図である。
【
図2A】
図2A及び2Bは、一部の実施形態に係るコントローラアーキテクチャを示すブロック図である。
【
図2B】
図2A及び2Bは、一部の実施形態に係るコントローラアーキテクチャを示すブロック図である。
【
図3】
図3は、一実施形態に係るコントローラとブリッジデバイスとの間のコマンド処理コンポーネントを示すブロック図である。
【
図4】
図4は、一実施形態に係る、ブリッジデバイスが、コントローラからのモードコンフィグレーションコマンドにどのように対応するかを示すブロック図である。
【
図5A】
図5A及び5Bは、一実施形態に係るデータロケーションの動作モードコンフィグレーション設定の例を示す。
【
図5B】
図5A及び5Bは、一実施形態に係るデータロケーションの動作モードコンフィグレーション設定の例を示す。
【
図6】
図6は、一実施形態に係るデータロケーションの動作モードを構成する処理を示すフローチャートである。
【
図7】
図7A及び7Bは、各種実施形態に係るデータロケーションの複数の範囲についての動作モードコンフィグレーション設定の例を示す。
【
図8】
図8A及び8Bは、各種実施形態に係る複数のメモリデバイスに亘るコンフィグレーションの例を示す。
【発明を実施するための形態】
【0005】
特定の実施形態が説明されるが、これらの実施形態は例示のみを目的とするもので保護範囲を限定する意図はない。実際、本稿において説明される新規の方法及びシステムは他の様々な形態で実施され得る。更に、本稿において説明される方法及びシステムの形態には、多様な省略、置換、変更が、保護範囲を逸脱すること無く行われ得る。
【0006】
I. コントローラ/ブリッジ設計
図1A−1Cは、複数のSSDコントローラアーキテクチャを示す。
図1Aは、ONFI(Open NAND Flash Interface)インターフェースを含むSSDコントローラを示す。ONFIインターフェースは、ホストコントローラのような拡張コンポーネントが、NANDにおけるオペレーションを制御することを可能にするために基本的なコマンドサポートを提供する、ローレベルな、パラレルI/Oインターフェースである。
図1Aは、ONFIをサポートする不揮発性メモリ(NVM)ユニットを制御するONFIインターフェースを含むSSDコントローラを含むコンピュータのようなホストデバイスでの典型的なセットアップを示す。ONFIインターフェースは、ページプログラム、ページ読み出し、ブロック消去等のような動作においていくつかの基本的なレベルの制御を提供する。ONFIの現在のバージョンは、ダイ及びプレーン当たり1つのコマンドをサポートし、“複数読み出し(read multiple)”及び“複数書き込み(write multiple)”コマンドのようなコマンドを通じていくつかの基本的なキューイング(queuing)機能を提供する。しかし、異なる種類のコマンドの混成は存在し得ない。また、コマンドは、バッチ処理され、これは、コマンドが、より多くのコマンドが受け付けられうる前に、キュー(queue)を完全にクリアしなければならないことを意味する。このアプローチでのSSDコントローラは、ガベージコレクション、ウェアレベリング、マッピング等のようなハイレベルなNVMマネージメント機能を行う。
【0007】
図1Bは、NAND及び信号処理のいくつかのレベルの基本的なチャネルマネージメントを行うブリッジコントローラ/デバイスに接続されるNVMにおける別のアプローチを示す。ブリッジは、ONFI又はONFI相当のインターフェースをSSDコントローラに提供してもよい。しかし、このインターフェースは、標準的なONFIインターフェースから変更されており、複数のコマンドをサポートすることのような追加機能をサポートする場合がある。この設計において、SSDコントローラは、依然として、ガベージコレクションのようなハイレベルNANDマネージメントを行っており、ONFI又はONFI相当のインターフェースを介してブリッジと通信する。
【0008】
図1Cは、NVMが、ストレージシステムにおけるブリッジに接続される第3のアプローチを示す。このアプローチでは、ブリッジは、ガベージコレクション、ウェアレベリング、マッピングのような複数のハイレベルNVMマネージメント機能を実行すると共に、チャネルマネージメント、信号処理のようなローレベル機能も実行する。ストレージシステムは、eMMC又はUFSのようなハイレベルI/Oインターフェースを通じてホストデバイスと接続される。これは、多くのメモリカード製品で見受けられる共通設計である。ホストは、ロジカルアドレッシング(logical addressing)を用いて、ストレージシステムへのコマンド(例えば、読み出し及び書き込みコマンド)を送信する。アドバンストコマンドキューイング、ヘルスレポーティング及び詳細エラーレポーティングのような機能がサポートされてもよい。
【0009】
II. システム概要
図1Dは、本発明の一部の実施形態に係るコントローラデザインアーキテクチャを示すブロック図である。
図1Dは、ガベージコレクション、ウェアレベリング等のようなハイレベルなNVMマネージメント機能を実行するSSDコントローラを示す。一実施形態では、SSDコントローラは、PCIe及びeMMCのようなハイレベルで、ハイスピードなインターフェースでNVMストレージシステムと接続される。PCIe又はeMMCに代えて、他の標準的な及び/又は独自インターフェースは、このバスインターフェースとしての使用のために拡張されうる。一実施形態では、NVMストレージシステムは、ハイレベル、ハイスピードインターフェースを介してSSDコントローラと通信するブリッジを含み、ONFIのようなローレベルインターフェースでNANDメモリを制御する。示されるように、アドバンストコマンドキューイング、ヘルスレポーティング及び詳細エラーレポーティングのような追加機能は、ハイレベルインターフェースでサポートされてもよい。
【0010】
上述した設計とは異なり、このアーキテクチャでのコントローラは、PCIeのような洗練され、かつ高速なインターフェースでNVMの個々の要素に亘る制御(例えば、ページレベル制御)の物理レベルのリッチなセットを提供される。ブリッジは、電力の問題によりパフォーマンスが低いプロセッサに実装される一方で、コントローラは、低電力の問題に直面する環境にあることが、多くのコントローラ−ブリッジ型の設計で観察される。プロセッサ集中機能が、より高い性能のコントローラにシフトされる場合、全体の待ち時間が低減されうる。よって、一部の実施形態では、コントローラは、典型的には、アドバンストNVMマネージメント機能をサポートしうる高電力プロセッサに実装される。一方、ブリッジは、一部の実施形態では、NVMストレージモジュール/ユニット全体のエネルギー使用を最小化するために、低電力プロセッサに実装される。その結果、ブリッジは、NVMの基本的な信号処理及びチャネルマネージメントを実行すると共に、いくつかの基本的な誤り訂正機能及びXORパリティ累積を実行する。一部の実施形態では、コントローラは、論理物理アドレスマッピング、ガベージコレクション、ウェアレベリング、(ブリッジにおけるパリティアキュムレータの制御を介した)パリティマネージメント、RAIDストライピング等を実行する。この作業分担は、コントローラに直接、NVMの物理(例えば、ページレベル)制御を提供し、PCIeのような高速で、ハイレベルなインターフェースでページ及びブロックレベル両方でのNVMのコントローラ管理をもたらす。一実施形態では、コントローラは、ブロックにおけるXORパリティアキュムレータのような他のインテグレートサービスも管理する。
【0011】
一実施形態では、マネージメントタスクのアーキテクチャの分担の別の利点は、NVM業界のトレンドに関連する。NVMの物理マネージメントは、例えば、MLC(Multi−Level Cell)NANDのような最も一般的な種類のNVMとして益々重要になってきており、耐久性を犠牲にして高い性能を提供するために進化し続けている。例えば、5,000P/Eサイクルの耐久性を有する今日のMLC製品は、1,500−2,000P/Eサイクルの耐久性を有する次世代MLC製品に置き換えられる。一般的に、ブリッジ設計者は、NVMの物理特性を理解し、様々な耐久性強化/管理機能を実装することによりその寿命を伸ばすためにどれが最も良好かを理解するために最も適した立場にある。この技術的な背景の急激な変化、及び個々のNVM製造者が、このような耐久性強化/管理機能を別々に要求するため、これらの機能は、NVM製品の多様な、刻々と変化する種類に適合するために、絶えず微調整を必要とする。よって、一部の実施形態のアーキテクチャは、ブリッジにおけるこれらの機能を隔て、かつコントローラ設計者に、ハイレベルなデータマネジメント機能を集中可能にすることにより、その分業において別の利点を提供する。言い換えれば、コントローラ及びブリッジが、異なる設計制約及び優先度を有するため、各アーキテクチャ下で、全体の完全な再設計を行わずに、異なるスケジュール及び方法に従って更新される。
【0012】
設計により提供される、低減された待ち時間により、ブリッジは、より低廉な媒体とペアになってもよい。例えば、ブリッジは、SLC(Single−Level Cell)NANDではなくMLC NANDとペアになりつつ、消費者により要求される性能メリットを満たす。また、一部の実施形態では、上述したコントローラ−ブリッジ設計は、フラッシュメモリ及びハードディスクコンポーネントを含むハイブリッドドライブでの使用に適用されうる。これらの実施形態では、コントローラは、ブリッジを通じたNVMへのデータアクセスの管理に加えて、1以上のハードドライブへのデータアクセスも管理する。この設計の更なる特徴は、以下の本発明の実施形態の各種図面及び説明により更に説明されるであろう。
【0013】
II.A. コントローラ‐ブリッジ実装
図2Aは、
図1Dで前述されたコントローラ‐ブリッジアーキテクチャの実施形態を示す。示されるように、ソリッドステート不揮発性ストレージシステム120は、ホストシステム110に接続される。ホストシステム110は、ストレージインターフェース112を用いて不揮発性ストレージシステム120と通信する。ホストのストレージインターフェース112は、SATA、SCSI、SAS、USB、Fibre Channel、PCIe、eMMC等のような既存の通信プロトコルを用いて、不揮発性ストレージシステム120と通信しうる。
【0014】
一実施形態では、不揮発性ストレージシステム120は、コントローラ130及びNVMストレージモジュール150を含む。一実施形態では、コントローラ130は、(バスロジック/インターフェース140を通じて)PCIeのようなハイレベルなインターフェースを介してNVMストレージモジュール150内のブリッジデバイス152と通信する。一実施形態では、PCIeは、ルーティング及びQuality of Service (QoS)インフラストラクチャベースのリッチなパケットを定義し、ハイスピードインターフェースを提供するように使用される。コントローラは、データ機能を制御するためにプロセッサ136を含んでもよく、コアは、スタティックメモリ132及びダイナミックメモリ134と接続されてもよい。コントローラ130は、また、ホストシステム110からのデータアクセスコマンドに関連するデータ処理/転送のためのデータパス138も含んでもよい。一実施形態では、コントローラ130は、SoC(System on Chip)に実装されるが、他のハードウェア/ファームウェア実装が可能であると当業者には理解されるであろう。
【0015】
一実施形態では、PCIeの使用は、デバイス機能に割り当てられるアドレス範囲が、ファブリック上、及びデバイス内の両方でのパケットルーティングのために使用される。一実施形態では、PCIeトランザクションレイヤは、ファームウェアにより読み出される内部レジスタインターフェースへパケットを伝達する。アドバンストデバイスは、頻繁に、内部RAM又はハードウェアアクセラレーションモジュールへ着信パケットを移動させる。
【0016】
一実施形態では、ブリッジデバイス152は、ハイレベルインターフェースバスで(コントローラ130上の)バスロジック/インターフェース140と通信するためのバスロジック/インターフェース154を備える。ブリッジの他端では、ブリッジデバイス152は、NVMストレージ160(例えば、NAND)と通信するためのONFIのようなローレベルインターフェース158を含み、これは、フラッシュダイ162,164,166及び168のような複数のストレージデバイスを含んでもよい。ONFIがこの実施形態で示されるが、他の適切なフラッシュメモリインターフェースが使用されてもよい。別の実施形態では、ブリッジは、NVMストレージ160と通信する又はダイレクトコマンドをストレージへ送信するためにトグル又は独自のインターフェースのような異なるインターフェースを使用してもよい。
【0017】
II.B. 分業
NVMマネージメントを分業する利点を上記のセクションIIで概説した。特に、アーキテクチャは、待ち時間を低減し、各種の設計制約を解決しつつ、コントローラ及びブリッジ設計者が、アーキテクチャのそれらの各部分を最適化することを可能にする。一実施形態では、コントローラは、ブロックレベルマネージメント、パリティストライプレイアウト、ガベージコレクション、ウェアレベリング、ハンドリングリードディスターブ及びエラーリカバリを担当する。一実施形態では、ブリッジデバイスは、raw NVMフラッシュインターフェースを管理する。コマンドキューイング、誤り訂正、XORパリティアキュムレータ、データプロテクション及びブロック耐久性の強化の1以上を提供してもよい。一実施形態では、ブリッジとコントローラとの間のインターフェースは、ライトウェイトのPCIeベースのデータ及びマネージメントインターフェースである。コントローラは、ブリッジ及びデータコマンドを構成するためにインターフェースコントロールコマンドを使用し、NVMメディアにアクセスする。
【0018】
コントローラは、既存のコントローラ‐ブリッジ設計に共通なロジカルなものに変わる物理ページアドレッシングを使用することも留意される。ブリッジは、ページ間、ブロック間、プレーン間、及びダイ間の関係を特定しうる。これは、コントローラに、RAIDストライプレイアウトを生成し、データの移動を行い、不良ブロックをハンドリングするための多大な柔軟性(flexibility)を与える。これらの詳細は、ブリッジから要約されたものである。ダイレクトアドレッシングを用いるとき、コントローラは、単に、コマンドヘッダにおけるダイレクトページアドレスのセットをブリッジに提供する。一実施形態では、ページは、逐次又は同一のブロックでさえ必要ではない。最も多くの場合、コントローラは、同時ハードウェアアクセスを最大限にするために、複数のプレーン及び複数のダイに亘って広がるページにアクセスするであろう。
【0019】
II.C. ハイブリッドアプリケーション
コントローラ‐ブリッジアーキテクチャの一部の実施形態は、別の仕様のために適合されうる。例えば、
図2Bは、上述したNVM及びブリッジコンポーネントに追加されるハイブリッドドライブ122におけるコントローラアーキテクチャの使用を示しており、回転式ハードディスクドライブ(HDD)のような磁気媒体184を有する磁気ストレージモジュール180を含む。この実施形態では、コントローラ130は、NVMストレージモジュール150及び磁気ストレージモジュール180の両方へのデータアクセスを管理する。一実施形態では、インターフェース140とは異なるインターフェースは、コントローラ130を磁気ストレージモジュール180に接続するために使用されてもよい。
【0020】
ハイブリッドアプリケーションは、コントローラアーキテクチャの別の利点を示す。ハイブリッドドライブは、典型的には、SSD内のNVMを特定するためのマッピングテーブルを有するその独自の内部コントローラを有するSSDを含む。ハイブリッドのHDD部分が、典型的には、直接特定されるが、ハイブリッドコントローラは、データがSSD又はHDDにあるかどうかを判定するために特別なマッピングテーブルを使用する。内部SSDをマッピングテーブルと共にこの特別なマッピングテーブルを使用することは、2つのマッピングテーブルが存在し、かつ各テーブルの維持に関連する多大なコストが存在するため、データがハイブリッドのSSD部分にアクセスされる場合に、二重のオーバーヘッドを発生させる。
【0021】
対照的に、本アーキテクチャにおけるコントローラ130は、ブロック及びページレベルにおけるNVM及び磁気媒体の両方を管理し、単一のローケーションにおけるフラッシュ及び磁気媒体に亘る均一化されたアドレス管理を提供しうる。故に、上記で述べられた2つのテーブルを有する必要がない。これは、重複したテーブルックアップ及び別個のマッピングテーブルを維持することに関する全ての関連するコスト/複雑性を低減するという利点を有する。ダイレクトページアドレッシングは、単一化マッピングスキームで使用される。
【0022】
また、ハイブリッドアプリケーションでは、NVMは、大量の不良ブロック(例えば、50%)を有するときでさえ、有効なパフォーマンス強化を提供する。一つのハイブリッドな実施形態では、コントローラは、また、(不良ブロックにより生じるギャップでの)効果的なアドレスギャップハンドリング能力を有する。別のハイブリッド実施形態では、単一化マッピングスキームは、コントローラと共に機能するためにブリッジを必ずしも必要としない。コントローラは、NVMにアクセスするためにraw NVMインターフェース(例えば、ONFI)を使用する可能性がある。
【0023】
III. データコマンド処理
図3は、一実施形態に係るコントローラとブリッジデバイスとの間のコマンド処理コンポーネントを示すブロック図である。PCIeインターフェース(又は他の同等のインターフェース)の構成を用いて、コントローラ及びブリッジの両方は、他のデバイスにより特定されうるそれらの各デバイスメモリにおけるその独自のアドレス空間(210,250)を実装する。メッセージは、アドレススペース内の特定のアドレス内に位置付けられるキュー(queues)へ書き込むことにより伝えられ、一実施形態では、アドレスは、コンフィグレーション及びステータスレジスタ252に格納される。データアクセスコマンド及びコントローラとブリッジとの通信を扱うための個々のキュー(queues)の使用は、以下に更に説明されるであろう。
【0024】
III.A. コマンド及び管理キュー‐ブリッジ
一実施形態では、コントローラは、ブリッジデバイスにおけるコマンドキュー(command queue)262へデータアクセスコマンドを送信する。これは、データコマンドメッセージをブリッジへ送信するコントローラ(コマンドキューBAR(ベースアドレスレジスタ)への書き込みによる)により行われる。一実施形態では、コマンドキューは、6つのメッセージのためのルームを有するが、別の実施形態では、複数のメッセージが変化しうる。コマンドキューは、複数の手段で実装されうる。1つのオプションは、コントローラが固定オフセットに書き込むフルハードウェアオートメーションである。それに代えて、リングバッファ又はリンクされたリストベースのアレイを用いてメモリ内に実装されうる。一実施形態では、実装は、効果的な挿入及び最小限バストラフィックによる通知を可能にしなければならない。一実施形態では、コントローラは、ブリッジが返送する複数のステータス応答に基づく現在のキューデプス(current queue depth)を知る。データコマンドは、実際のデータよりも短いことに留意する。キューにおける与えられたレコードスロットは、ブリッジが、完全な状態又はエラーレポートに返送されると、利用可能になるとみなされる。
【0025】
図3に示される実施形態では、ブリッジサイド250は、コンフィグレーション及びステータスレジスタ(configuration and status registers(CSR))252と共に、コントローラからの、コマンドキューの動作に関連するコマンドメッセージ(例えば、コマンドキューを中止するメッセージ)又は通常のブロックの動作に関する管理上のメッセージを受信するための管理キュー(admin queue)258も実装する。管理キュー258は、フルハードウェアオートメーション又はリングバッファを通じるような、コマンドキューと同様の形態で実装されてもよい。また、コマンドキューのように、管理キューは、最小限のバストラフィックによる効果的な挿入及び通知のために構成されてもよい。コマンドキューのように、コントローラは、ブリッジからの応答に基づいて現在のキューデプス(current queue depth)及び利用可能なスロットを導出しうる。
【0026】
III.B. ステータスキュー‐コントローラ
コントローラサイド210では、データアドレス212におけるデータポート214のセット及び複数のステータスキュー(status queues)である。一実施形態では、ステータスキューは、エラーキュー(error queue)218と、情報キュー(information queue)222と、コマンド完了キュー(command completion queue)226と、を含む。これらのキューは、コマンド処理についてのブリッジからのメッセージと共に、ブリッジ及びNVMの現在の状態の受信を担当する。
【0027】
III.C. コントローラとブリッジとの通信
コントローラとブリッジとの通信は、一実施形態では、トランザクションレイヤ(232,242)、データリンクレイヤ(234,240)及び物理レイヤ(236,238)を含む、両方の側の複数のレイヤを含むPCIeプロトコルスタック230を通じてもたらされる。コントローラ及びブリッジの動作を示すために本開示ではPCIeが使用されるが、他の同様の標準も同様に使用されうる。
【0028】
PCIeトランザクションレイヤは、どの程度の数のルームがそのバーチャルチャネル(Virtual Channel(VC))バッファスペースに残るかに基づいて、送信クレジットを割り当てる。PCIe仕様に従い、デバイスは、VC0を実装しなければならないが、一部のデバイスは、高優先度メッセージが専用リソースを有することを確実にするために別のVCを実装する。パケットは、それらのトラフィッククラス(Traffic Class(TC))に基づいて適切なVCに向けられる。TCは、パケットがPCIeファブリックに亘って流れるときの優先度を決定するためにも使用される。より速いTCパケットは、一般的に、ルートコンプレックス、スイッチ及びエンドデバイスにより優先度を与えられる。
【0029】
一実施形態では、コントローラは、VC0のみに使用して動作するように設計される。一実施形態では、ブリッジは、別のVCを実装するが、単一のVCモードで動作しうるように構成可能でなければならない。コントローラとブリッジとの間で通信されるメッセージは、以下のデータ処理フローの詳細な説明を見ることでよりよく理解されるであろう。ホストからの読み出しコマンドを提供するために、コントローラは、初めに、コマンドメッセージをブリッジのコマンドキューへ送信してもよい。ブリッジがコマンドメッセージを処理すると、コントローラは、NVMからの、要求されたデータを読み出し、読み出したデータを、コントローラ側の対応するデータポートへ送り戻す。このアクションは、コントローラ上のデータ経路をトリガーとし、ホストへ返送されるデータを導く。逆に、ホストからの書き込みコマンドを提供するために、コントローラは、初めに、コマンドメッセージをブリッジのコマンドキューへ送信してもよい。ブリッジがコマンドメッセージを処理すると、コントローラは、コントローラ側の対応するデータポートから読み出す。このアクションは、コントローラ上のデータ経路をトリガーとし、NVMへの書き込みのために、コントローラのバッファからブリッジへ送信される書き込みデータを導く。
【0030】
一実施形態では、コントローラは、優先度増加の3つのメッセージタイプを用いるブリッジと通信する:書き込みコマンド用のNVMへ書き込まれるデータ(0)、ブリッジのコマンドキュー用のメッセージ(1)、及びブリッジの管理キュー用のメッセージ(2)。異なる優先度は、これらのメッセージに割り当てられ、メッセージは、実装に応じて、より少ないタイプに組み合わせられる又はより多くのタイプに分割されることを当業者には理解されるであろう。一実施形態では、通常条件下では、コントローラは、ブリッジへのデータパケットの一定のストリームを送信する。
【0031】
一実施形態では、コントローラは、優先度付されたメッセージタイプのその即時のセットを用いてコントローラとインタラクトする:読み出しコマンド用のNVMからのデータ読み出し(0)、コントローラの完了/情報キュー(1)用のメッセージ、及びコントローラのエラーキュー用のメッセージ(2)。異なる優先度は、これらのメッセージに割り当てられ、メッセージは、実装に応じて、より少ないタイプに組み合わせられる又はより多くのタイプに分割されることを当業者は理解するであろう。以下に更に詳細に説明されるように、データアクセスコマンドの高速処理を容易にするために、コントローラにおけるデータポートへの、ブリッジによる読み出し又は書き込みは、コントローラにおけるデータパスを自動的にトリガーする。一実施形態では、いくつかのコマンドで並列処理することはブリッジにとって稀ではない。一実施形態では、ブリッジは、コマンドが完了したときに、コントローラに通知するために、完了キュー(completion queue)226を使用する。また、重要でないメッセージは、情報キュー222へ送信されるが、詳細なエラーレポートは、エラーキュー218へ送信される。別の実施形態では、これらのキューは、(特別なフラグにより区別される又はアドレス値を意味する異なるメッセージタイプ)いくつかのキューに組み合わせられてもよく、又はより多くのキュー(例えば、異なる種類のエラー用の異なるエラーキュー又はブリッジからリターンされた異なる種類の情報用の異なる情報キュー)に分割されてもよい。
【0032】
PCIe以外の異なるインターフェースが使用される別の実施形態では、PCIeプロトコルスタックは、当該インターフェースの適切なスタック/レイヤに置き換えられてもよい。他の同等の標準化されたインターフェース(例えば、eMMC)は、PCIeを置き換えるように適合されてもよいことが当業者に理解されるであろう。別の実施形態では、カスタム/独自インターフェースは、コントローラとブリッジとの通信を扱うために使用されてもよい。
【0033】
IV. SLC/MLCモード管理
ソリッドステートメモリで使用される共通のタイプは、マルチレベルセル(Multi−Level Cell(MLC))NANDメモリであり、これは、通常、少なくとも1つのマルチレベルセル(Multi−Level Cell(MLC))モード又はシングルレベルセルSingle−Level Cell(SLC)モードで動作可能である。一実施形態では、上記で説明されたNVMブリッジアーキテクチャは、フラッシュダイにおける特定のデータロケーションが、(1)データアクセスが防がれた予約モードへ配置される、(2)コントローラコマンドに応じて、SLCモード又はMLCモードに割り当てられる、(3)モードの割り当て後にデータアクセス用に利用可能となる、ことを可能にする。この柔軟性は、ランタイム条件及び/又はプロダクトコンフィグレーションに基づいてSLCモード又はMLCモードモードデータロケーションを増加させる方法をコントローラに与え得ることを含む、いくつかの手法のシステム全体の機能性を強化する。一実施形態では、予約されたデータ位置の割り当ては、メモリベンダーによって課された保証条件のような拡張制約が、監視されることを確実にするための手法で行われる。
【0034】
IV.A. 概要
図4は、一実施形態に係る、ブリッジデバイスが、コントローラからのモードコンフィグレーションコマンドにどのように対応するかを示すブロック図である。上述したように、一実施形態では、ブリッジデバイス152は、1以上のフラッシュダイを含むNVMストレージ160と接続される。一実施形態では、ブリッジデバイスは、バス(例えば、上述したPCIeバス)に亘るコントローラ130からのコマンドを取得し、NVMストレージ160におけるデータアクセスコマンドを実行する。バスプロトコルのタイプは、PCIeに限定されず、別の実施形態では、他のプロトコルが使用されてもよい。ブリッジデバイス152は、フラッシュダイの寿命をどの程度延ばせるかについていくつかの情報を有していてもよい。
【0035】
フラッシュダイは、MLC又はSLCモードで動作しうるMLCセルを含んでもよい。例えば、セル当たり2ビットのデータまで格納しうるMLCセルでは、SLCモードでブロックを配置することは、セル当たり2ビットからセル当たり1ビットにデータキャパシティを減少させる。一方、SLCモードでの動作は、より優れたプログラム/消去(P/E)耐久性を生じる。メモリ製造者により課せられた保証制約の結果として、ストレージデバイスが使用分野制限に達する前に、1つのモード又は別のモードで動作するように設定されたMLCセルを有することが一般的である。本開示では、用語MLCは、セル当たり2ビット以上を格納することが可能であるメモリセルをいう。セル当たり2ビット以上での実装では、いくつかのレベルのMLCモードが存在し、本明細書に開示される調整方法は、セルに割り当てるために適用可能であり、これらの異なるMLCレベルで動作する。例えば、3ビット・パー・セルモードが利用可能であるメモリでは、予約領域は、3ビット・パー・セルモード、2ビット・パー・セルモード又はSLCモードで動作するように割り当てられてもよい。
【0036】
本発明の一部の実施形態は、必要に応じて、ストレージ容量を低減することを犠牲にして耐久性、パフォーマンス及び信頼性を改善するためにコントローラ130により使用される予約領域において、特定のメモリブロックを配置することを可能にする。一部の実施例は、ハイアクセスホットスポット(high−access hotspots)を管理し、重要なシステムデータを格納することを含んでもよい。MLCモード又はSLCモードのいずれかに対する予約されたブロックの拘束(Commitment)は、ストレージデバイスの寿命の初期でなされる必要はなく、コントローラは、寿命のうちでどの程度多く割り当てられるかを選択するために柔軟性を有する。これを実現するために、一実施形態では、ブリッジデバイスは、コントローラが、ランタイム時にSLC又はMLCモードモードへ予約データロケーションの範囲を配置することを可能にする方法を提供する。例えば、コントローラは、1以上のコマンドをブリッジデバイスへ送信することによりモードを設定しうる。例えば、PCIeが使用される場合、
図3に示されるようなCSR 252は、CSRの内部のフィールドの設定を通じて、コマンドが通信されることを可能にするために用いられる。
【0037】
一実施形態では、2つのレジスタフィールドは、予約データロケーションの範囲を実現するために使用される:開始アドレス(例えば、min_slc_block)及び終了アドレス(例えば、max_slc_block)。開始及び終了アドレスは、予約領域を定義する。別の実施形態では、コントローラ130は、レジスタの使用(例えば、SATAのようなプロトコルを有するバスにおけるコマンドの送信)に代えて、1以上のコマンドを通じて予約領域の範囲を示すことができる。
【0038】
図4のテーブル400に示されるように、一実施形態では、開始及び終了アドレス値は、SLC、予約(Reserved)済み、及びMLCの3つの領域402を定義する。SLC及びMLC領域の両方は、アクセス値406により示されるように、正常に、アクセスされうる。予約領域のアクセス値は、領域内のブロックを使用することを防ぐために、アクセスされないことを示す。テーブル400は、概念を示すことを意図した教示例であり、同一のコンフィグレーションを実現するために、レジスタに記憶される又はコマンドにより送信される実際の値又は値の種類が異なってもよいことを留意する。
【0039】
一実施形態では、領域は、
図7A及び7Bに更に示されるように、異なるコンフィグレーションのものでありうる。一実施形態では、コンフィグレーションは、全てのダイに亘って各プレーンに適用される。別の実施形態では、各ダイ又は各ダイのサブセットは、
図8A及び8Bに示されるように、その独自の領域のコンフィグレーションを有してもよい。
【0040】
IV.B. MLC又はSLC領域の成長手順
図5A及び5Bは、一実施形態に係るデータロケーションの動作モードコンフィグレーション設定の例を示す。
図5Aの説明
図1は、アドレス範囲の初期設定を示す。当該範囲は、予約領域(0からSLC_Max)及びMLC領域(SLC_Max+1からNAND_Max)に分割され、ここで、SLC_Max及びNAND_Maxは、当該範囲におけるアドレスである。例えば、SLC_Maxは、255であり、NAND_Maxは、1024データブロック/データロケーションを有する1つのダイにおいて1023であってもよい。説明
図1の左側は、開始アドレス(Min Block=0)及び終了アドレス(Max Block=SLC_Max)の、予約領域の境界値である。上述したように、ブリッジデバイスは、予約領域内のデータロケーションへのアクセスを防ぐ。
【0041】
予約領域のサイズ(及び隣接する予約されていない領域のサイズ)を変更するために、開始及び終了アドレス値は、コントローラからのコマンドを通じて又はブリッジデバイスにおけるレジスタ値の設定を通じて変更されてもよい。説明
図2では、開始アドレス(Min Block)は、0から30に変更される。説明
図3では、予約領域が調整され、ここでは30で開始する。範囲0から29におけるデータロケーションは、SLC領域に割り当てられ(つまり、SLCモードで動作するように割り当てられ)、データアクセスは、ここで可能になる。言い換えれば、SLC領域は、0データロケーションから30データロケーションに成長(grown)している(0−29)。
【0042】
IV.B.I アクセス可能オプション
説明
図2から3への遷移は、複数の方法で生じうる。一実施形態では、新たに割り当てられたデータロケーションへのデータアクセス(例えば、説明
図2−3の0−29)は、コントローラからコマンドを受信するとすぐに生じ、初期開始アドレスを新たな開始アドレスに調整する。別の実施形態では、新たに割り当てられたデータロケーションへのデータアクセスは、直接又は間接的な手法で遅延されうる。一実施形態では、アクセスをアクティベートするためにコントローラから後のコマンドを直接受信すると、アクセスは可能になる。別の実施形態では、アクセスアクティベーション用に特化しない、後のコマンド(later command)を間接的に受信するとアクセスは可能になる。例えば、これは、コントローラから、新たに割り当てられたデータロケーションの1つへのデータアクセス(例えば、書き込み)コマンドでありうる。
【0043】
説明
図4では、予約領域の終了アドレスが調整され(Max Blockが80に設定される)、説明
図5では、MLC領域は、以前、予約領域にあったそれらのロケーション(80‐SLC_Max)を含むために成長する。説明2から3への遷移と同様に、MLCモードで動作するために新たに割り当てられたそれらのデータロケーションへのデータアクセスは、上述したように、直接又は間接的なメカニズムを通じて遅延された状態で、直ぐに可能となってもよい。
【0044】
IV.B.II 成長ルール
一実施形態では、ブリッジデバイスは、開始又は終了アドレスの繰り返し調整を可能にするように構成され、予約領域のデータロケーションを、SLC又はMLC領域にいずれかへ割り当てることを留意する。例えば、コントローラからのコマンドに応じて、ブリッジデバイスは、以前の開始アドレスよりも大きい新たな開始アドレスへ調整し(例えば、説明
図2から3)、各調整の後、1つのモードで動作するために新たな開始アドレスと以前の開始アドレスとの間に位置付けられるデータロケーションを割り当て、以前の開始アドレス(この例ではSLCモード)に隣接する領域におけるデータロケーションの動作モードを一致させる。MLC領域側/終了アドレス側で同一の受信がなされうる。これらの説明におけるレイアウトは、MLC領域が低い(lower)アドレス範囲であり、SLC領域が高い(higher)アドレス範囲であるように、予約されてもよい。
【0045】
一実施形態では、ブリッジデバイスは、調整が、予約領域のサイズの低減についてのみになされることを確実にする。すなわち、予約領域におけるデータロケーションは、隣接するSLC又はMLC領域の成長に適応するためにSLC又はMLCモードで動作するように割り当てられることができるが、隣接するSLC又はMLC領域からのデータロケーションは、予約領域となるように再設計されない。この処理は、メモリが、保証規約のような一部の製造者により定められるルールによる監視に使用されることを可能にし、これは、1つのモードが選択され、かつ選択されたモードでデータロケーションが使用されている動作の異なるモードに、データロケーションがリセットされることを禁止する。
【0046】
IV.B.III リセットオプション
一実施形態では、ブリッジデバイスは、動作モードのこのようなリセットが、例えば、コントローラ130からのコマンドに基づいて実行されるリッセット機能を通じて生じることを付加的に可能にする。
図5Bの説明
図6に示されるように、予約領域の境界は、リセットされる。よって、隣接する領域をつなぐように前に割り当てられたデータロケーションは、予約領域に戻る。例えば、SLCモードで動作するように設定されている説明
図3に示されていたデータロケーション30は、ここでは、MLCモードで動作するために再割り当てされるようにフリーである。
【0047】
任意に、リセットフラグは、このようなリセットが生じていることを示すために設定されてもよい。このフラグの設定は、動作規約がこのような耐久性保証を無効にしていることを示す。一部の例では、リセット機能は、テスト/開発目的のためには有益であるが、使用することはできない。
【0048】
IV.B.IV 成長サマリー、活用事例
調整工程は、
図6のフローチャートに集約される。図示される処理500は、コントローラ及び/又はブリッジデバイスにより実行されてもよい。ブロック504では、ブリッジデバイス及び/又はコントローラは、予約領域の初期セットアップを行う(例えば、境界設定等)。ブロック506及び508では、予約領域におけるデータロケーションは、SLC又はMLCモードのいずれかで動作するように割り当てられ、
図5A及び5Bの例に示されるようなそのモードの隣接する領域の成長を容易にする。フローチャートに示されるように、いずれかの割り当ては、連続した順序で、又は混合されたシーケンスで複数回繰り返されうる。付加的に、リセットは、ブロック510で行われ、リセットフラグは、ブロック512で行われてもよい。
【0049】
一実施形態では、予約領域へのMLC又はSLC領域の成長は、閾値により制限される。そのため、ブリッジデバイスは、新たな開始アドレスに調整しないように設定されてもよい。
【0050】
同一のストレージデバイスのソリッドステートメモリダイが、耐久性及び品質(例えば、遭遇した読み出しエラー)のような態様で異なるとき、予約領域は、コントローラ及び/又はブリッジデバイスが、メモリダイで遭遇するこのようなバリエーションを調整することを可能にする。例えば、一部の実施形態では、コントローラ及び/又はブリッジデバイスは、物理メモリ位置に対応するSLCモードとなる高い性能を要請するように決定されるデータロケーションを指定してもよい。このようなデータロケーションは、システムデータ又はアクセス時間及び耐久性を改善するために重要であるとみなされる他のユーザデータのような重要なデータを格納するために予約されてもよい。具体的な例として、一部のストレージシステムは、SLCモードである特定のデータロケーションをプログラムし、システムテーブルのようなシステムクリティカルデータを格納する。対照的に、一部の実施形態では、予約領域は、コントローラ及び/又はブリッジデバイスが、初めの10メモリブロックにおける品質問題に遭遇した場合に、フィールドの各コントローラ及び/又はブリッジデバイスに、システムクリティカルデータを格納するSLC領域にシフトするための性能を提供する。一部の実施形態では、コントローラ及び/又はブリッジデバイスは、MLCモードとなる高品質な物理メモリロケーションに対応するデータロケーションを指定し、SLCモードに対するMLCモードの固有の耐久性の欠点を補ってもよい。更に、予約領域は、システムが消耗したときに、コントローラ及び/又はブリッジデバイスに、システム全体の利用を調整するための機会を与える役割も果たす。更に別の実施形態では、コントローラ及び/又はブリッジデバイスは、SLCモードにおけるデータロケーションの範囲を設定するために予約領域を活用し、システムが低い知識状態(low knowledge)(例えば、システムがブートアップしており、全ての機能がアクティベートされていない場合)にあるときになりうるデータを格納する。これらの機能は、コントローラ及び/又はブリッジデバイスが、使用パターン、メディア消耗及び外部制約のような条件に応じて、メモリ領域を動的にチューニングすることを可能にする。
【0051】
IV.C. 変形例
図7A及び7Bは、各種実施形態に係るデータロケーションの複数の範囲についての動作モードコンフィグレーション設定の例を示す。
図7Aは、一般的なコンフィグレーションを示す。動作モードが設定された予約領域が、2つの領域間にありうる(例えば、MLC又はSLCモード、又は2つの異なるMLCモード、2つの同一モード)。
図5A及び5Bに示されるコンフィグレーションは、この一般的なコンフィグレーションの特定のケースである。
図5A(説明
図1)で前述されたように、予約領域は、初めに、0アドレスで開始されてもよい。一実施形態では、領域境界を示す値は、格納され、かつ予約領域のデータロケーションの割り当てに調整され、隣接する領域の成長に適合する。例えば、
図7Aの配置では、各MLC/SLCの予約されない領域は、それが占有するアドレスの範囲を示す一対のトップ/ボトム値を有してもよい。それに代えて又は加えて、予約領域の境界は、保持されてもよい。
【0052】
図7Bは、アドレス範囲に亘る複数の予約領域が存在、かつ予約領域が互いに隣接しない、
図7Aの概念の拡張を示す。トップ/ボトム値の各ペアは、予約されない領域の境界をトラック(track)する。それに代えて又は加えて、予約領域の境界は、保持されてもよい。
図7Bの予約されない領域は、初めから終わりまで散乱した予約領域を使い果たすためにフレキシブルに成長しうる。
【0053】
アドレス範囲の全体にわたる予約領域の使用は、多くの状況で有益である。例えば、ストレージデバイスは、特定のサブレンジ(certain sub−range)へのアクセスを有する各バスで、複数のバスによりアクセスされるように構成されてもよい。その状況では、各サブレンジは、それらの領域により提供される柔軟性が、バスと関連付けられる個々のコントローラに提供されるように、1以上の予約領域に割り当てられてもよい。より一般的には、本願明細書で説明された各種のコンフィグレーションは、任意のコントローラに、その需要に適したMLC/SLCモードへのデータロケーションの割り当てを調整する性能を提供する。
【0054】
図8A及び8Bは、異なる実施形態で使用される異なるコンフィグレーションを示す。
図8Aは、全てのダイ(又はダイに亘る全てのプレーン)は、同一のコンフィグレーションを共有し、予約領域境界への変化がダイに亘って行われる。
図8Bは、各ダイが、異なるコンフィグレーションを有することを許可し、個別に変化することが許可された実施形態を示す。一部の実施形態では、ダイは、同一サブセットのダイが、同一のコンフィグレーションを共有し、かつ境界が共有コンフィグレーション内で変化するとき同一の手法でもたらされるサブセットに分割されてもよい。
【0055】
V. 別の実施形態;結論
本願で使用されるような、“不揮発性メモリ”は、典型的には、NANDフラッシュのようなソリッドステートメモリと呼ばれる。しかし、本開示のシステム及び方法は、従来のハードドライブ、並びにソリッドステート及びハードドライブコンポーネントを含むハイブリッドドライブでも有益である。よって、特定の内部オペレーションは、典型的には“ウェアレベリング”及び“ガベージコレクション”のようなソリッドステートドライブと関連付けて呼ばれるが、ハードドライブ用の類似オペレーションも本開示の一部の実施形態で活用されうる。不揮発性メモリは、フラッシュ集積回路、カルコゲナイドRAM(C−RAM)、相変化メモリ(PC−RAM又はPRAM)、プログラマブルメタライゼーションセルRAM(PMC−RAM又はPMCm)、Ovonic Unified Memory(OUM)、抵抗RAM(RRAM(登録商標))、NANDメモリ、NORメモリ、EEPROM、強誘電体メモリ(FeRAM)、又はその他のディスクリートNVM(不揮発性メモリ)チップのような多様な種類の技術を含んでもよい。ソリッドステートストレージデバイス(例えば、ダイ)は、既に知られているように、プレーン、ブロック、ページ及びセクタに物理的に分割されてもよい。他の形態のストレージ(例えば、バッテリバックアップ揮発性DRAM又はSRAMデバイス、磁気ディスクドライブ等)は、追加又は代替的に使用されてもよい。
【0056】
特定の実施形態が記載されたが、これらの実施形態は例示のためにのみ提供されたものであり、保護の範囲を限定することを意図しない。実際に、本稿に記載の新規な方法及びシステムは他の多様な形態で実施され得る。更に、本稿に記載の方法及びシステムの形態の様々な省略、置換、及び変更が、保護の精神から逸脱することなく加えられ得る。添付の請求の範囲及びその等価物は、このような形態又は変形をも、本開示の精神及び範囲に含まれるものとして包含するよう意図されている。例えば、
図1D、2A、2B、3及び4に示される各種コンポーネントは、プロセッサ、ASIC/FPGA又は専用ハードウェア上のソフトウェア及び/又はファームウェアとして実装されてもよい。例えば、一部の実施形態では、
図6に示される処理の実際のステップは、図示されるものとは異なることを当業者は理解するであろう。実施形態に応じて、上記の例で説明される特定のステップが削除され、他のものが追加され、ステップのシーケンスが変更及び/又は並列に行われてもよい。更に、上述した特定の実施形態の機能及び属性は、異なる方法で組み合わせられて追加の実施形態を成立し得て、その全てが、本開示の範囲に包含される。本開示は特定の好適な実施形態及び応用を提供しているが、本稿に記載の全ての機能及び利点を提供しない実施形態を含む、当業者にとって明白なその他の実施形態も、本開示の範囲に包含される。したがって、本開示の範囲は、添付の請求の範囲を参照することによってのみ定義されるように意図される。