(57)【特許請求の範囲】
【請求項１】
不揮発性データストレージシステムであって、
コントローラと、
１以上のソリッドステートメモリストレージデバイスのアレイであって、前記メモリストレージデバイスは、マルチレベルセル（ＭＬＣ）モード及びシングルレベルセル（ＳＬＣ）モードで動作可能な複数のマルチレベルセル（ＭＬＣ）メモリデータロケーションを含む、ソリッドステートメモリストレージデバイスのアレイと、
前記アレイと接続されるブリッジデバイスと、を備え、
前記ブリッジデバイスは、前記ＭＬＣメモリデータロケーションの少なくともいくつかに第１及び第２の領域を定義するように構成され、
前記第１の領域は、前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するデータロケーションを含み、
前記第２の領域は、前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するために割り当てられるように構成されるデータロケーションを含み、前記第２の領域は初期開始アドレスおよび初期終了アドレスによって定義されており、
前記ブリッジデバイスは、
前記コントローラからのコマンドに応じて、前記ＳＬＣ又は前記ＭＬＣモードで動作するために前記第２の領域にデータロケーションのセットを割り当てて、前記初期開始アドレスを新たな開始アドレスに調整するかまたは前記初期終了アドレスを新たな初期終了アドレスに調整し、
前記第２の領域の前記データロケーションが前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するように割り当てられるまで、前記第２の領域の前記データロケーションへのデータアクセスを防ぐ
ように構成される、データストレージシステム。
【請求項２】
前記初期開始アドレスは、前記第１の領域と前記第２の領域との境界を示す請求項１に記載のデータストレージシステム。
【請求項３】
前記ブリッジデバイスは、少なくとも、
前記初期開始アドレスを前記新たな開始アドレスに調整し、
前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するために、前記初期開始アドレスと前記新たな開始アドレスとの間の前記第２の領域に位置付けられる前記データロケーションの前記セットを割り当て、前記初期開始アドレスに隣接する前記第１の領域の前記データロケーションの動作モードを一致させ、
新たに割り当てられたデータロケーションへのデータアクセスを可能にする
ことにより、前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するために前記第２の領域にデータロケーションを割り当てるように更に構成される、請求項１に記載のデータストレージシステム。
【請求項４】
前記データアクセスを可能にすることは、
前記初期開始アドレスを前記新たな開始アドレスに調整するための前記コントローラからのコマンドを受信すると直ぐに、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、
アクセスをアクティベートするための前記コントローラからのコマンドを受信すると、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、及び
前記コントローラからの、アクセスアクティベーション用に特化しないコマンドを受信すると、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、
のうち１つを含む、請求項３に記載のデータストレージシステム。
【請求項５】
前記ブリッジデバイスは、
前記コントローラからのコマンドに応じて、新たな開始アドレスへ逐次調整し、各新たな開始アドレスは、以前の開始アドレスよりも大きく、
前記新たな開始アドレスへのそれぞれの逐次調整後に、１つのモードで動作するために前記新たな開始アドレスと前記以前の開始アドレスとの間に位置付けられる前記データロケーションを割り当て、前記以前の開始アドレスに隣接する前記第１の領域の前記データロケーションの動作モードを一致させる
ように更に構成される、請求項３に記載のデータストレージシステム。
【請求項６】
前記ブリッジデバイスは、製造者の保証制約に従って設定された閾値を超えるとき、前記新たな開始アドレスに調整しないように更に構成される、請求項３に記載のデータストレージシステム。
【請求項７】
前記ブリッジデバイスは、前記コントローラからのコマンドで、前記新たな開始アドレスを前記初期開始アドレスにリセットするように更に構成される、請求項３に記載のデータストレージシステム。
【請求項８】
前記ブリッジデバイスは、リセットされると、リセットフラグを設定するように更に構成される、請求項７に記載のデータストレージシステム。
【請求項９】
前記ブリッジデバイスは、少なくともいくつかのＭＬＣメモリデータロケーション内に、前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するデータロケーションを含む第３の領域を定義するように更に構成され、前記初期終了アドレスは、前記第２の領域と前記第３の領域との境界を示す、請求項１に記載のデータストレージシステム。
【請求項１０】
前記ブリッジデバイスは、少なくとも、
前記初期終了アドレスを前記新たな終了アドレスに調整し、
前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するために前記初期終了アドレスと前記新たな終了アドレスとの間の前記第２の領域に位置付けられる前記データロケーションのセットを割り当て、前記初期終了アドレスに隣接する前記第３の領域の前記データロケーションの動作モードと一致させ、
新たに割り当てられたデータロケーションへのデータアクセスを可能にする、
ことにより、前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するために前記第２の領域にデータロケーションを割り当てるように構成される、請求項９に記載のデータストレージシステム。
【請求項１１】
前記データアクセスを可能にすることは、
前記初期終了アドレスを前記新たな終了アドレスに調整するための前記コントローラからのコマンドを受信すると直ぐに、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、
アクセスをアクティベートするための前記コントローラからのコマンドを受信すると、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、及び
前記コントローラからの、アクセスアクティベーション用に特化しないコマンドを受信すると、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、
のうち１つを含む、請求項１０に記載のデータストレージシステム。
【請求項１２】
前記ブリッジデバイスは、
前記コントローラからのコマンドに応じて、新たな終了アドレスへ逐次調整し、各新たな開始アドレスは、以前の終了アドレスよりも小さく、
前記新たな終了アドレスへのそれぞれの逐次調整後に、１つのモードで動作するために前記新たな終了アドレスと前記以前の終了アドレスとの間に位置付けられる前記データロケーションを割り当て、前記以前の終了アドレスに隣接する前記第３の領域の前記データロケーションの動作モードに一致させる
ように更に構成される、請求項１０に記載のデータストレージシステム。
【請求項１３】
前記ブリッジデバイスは、製造者の保証制約に従って設定された閾値を超えるとき、前記新たな終了アドレスに調整しないように更に構成される、請求項１０に記載のデータストレージシステム。
【請求項１４】
前記ブリッジデバイスは、前記コントローラからのコマンドで、前記新たな終了アドレスを前記初期終了アドレスにリセットするように更に構成される、請求項１０に記載のデータストレージシステム。
【請求項１５】
前記ブリッジデバイスは、リセットされると、リセットフラグを設定するように更に構成される、請求項１４に記載のデータストレージシステム。
【請求項１６】
前記第１の領域は、前記ＳＬＣモードで動作するデータロケーションを含み、前記第３の領域は、前記ＭＬＣモードで動作するデータロケーションを含む、請求項９に記載のデータストレージシステム。
【請求項１７】
前記ブリッジデバイスは、１以上のコンフィグレーションレジスタを含み、前記コントローラからのコマンドは、前記１以上のコンフィグレーションレジスタの設定により示される、請求項１に記載のデータストレージシステム。
【請求項１８】
前記ブリッジデバイスは、
少なくともいくつかのＭＬＣメモリデータロケーション内に、前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するために割り当てられるように構成されるデータロケーションを含む第４の領域を定義し、
前記コントローラからのコマンドに応じて、前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するために前記第４の領域にデータロケーションのセットを割り当て、
前記第４の領域の前記データロケーションが前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するように割り当てられるまで、前記第４の領域の前記データロケーションへのデータアクセスを防ぐように更に構成される、請求項１に記載のデータストレージシステム。
【請求項１９】
前記第２の領域及び前記第４の領域は、互いに隣接しない、請求項１８に記載のデータストレージシステム。
【請求項２０】
前記コントローラの制御下で磁気媒体を回転することを更に備える請求項１に記載のデータストレージシステム。
【請求項２１】
（１）コントローラと、（２）１以上のソリッドステートメモリストレージデバイスのアレイであって、前記メモリストレージデバイスが、マルチレベルセル（ＭＬＣ）モード及びシングルレベルセル（ＳＬＣ）モードで動作可能な複数のマルチレベルセル（ＭＬＣ）メモリデータロケーションを含む、ソリッドステートメモリストレージデバイスのアレイと、（３）前記アレイと接続されるブリッジデバイスと、を備える不揮発性データストレージシステムにおけるブリッジデバイスを動作する方法であって、
前記ＭＬＣメモリデータロケーションの少なくともいくつかに第１及び第２の領域を定義するステップであって、
前記第１の領域が、前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するデータロケーションを含み、
前記第２の領域が、前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するために割り当てられるように構成されるデータロケーションを含み、前記第２の領域は初期開始アドレスおよび初期終了アドレスによって定義されている、ステップと、
前記コントローラからのコマンドに応じて、前記ＳＬＣ又は前記ＭＬＣモードで動作するために前記第２の領域にデータロケーションを割り当て、前記初期開始アドレスを新たな開始アドレスに調整するかまたは前記初期終了アドレスを新たな初期終了あどれすに調整するステップと、
前記第２の領域の前記データロケーションが前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するように割り当てられるまで、前記第２の領域の前記データロケーションへのデータアクセスを防ぐステップと、
を備える方法。
【請求項２２】
前記初期開始アドレスは、前記第１の領域と前記第２の領域との境界を示す請求項２１に記載の方法。
【請求項２３】
前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するために前記第２の領域にデータロケーションのセットを割り当てるステップは、
前記初期開始アドレスを前記新たな開始アドレスに調整するステップと、
前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するために、前記初期開始アドレスと前記新たな開始アドレスとの間の前記第２の領域に位置付けられる前記データロケーションを割り当て、前記初期開始アドレスに隣接する前記第１の領域の前記データロケーションの動作モードを一致させるステップと、
新たに割り当てられたデータロケーションへのデータアクセスを可能にするステップと、
を更に含む請求項２１に記載の方法。
【請求項２４】
前記データアクセスを可能にするステップは、
前記初期開始アドレスを前記新たな開始アドレスに調整するために前記コントローラからのコマンドを受信すると直ぐに、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、
アクセスをアクティベートするために前記コントローラからのコマンドを受信すると、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、及び
前記コントローラからの、アクセスアクティベーション用に特化しないコマンドを受信すると、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、
のうち１つを含む、請求項２３に記載の方法。
【請求項２５】
前記コントローラからのコマンドに応じて、新たな開始アドレスへ逐次調整するステップであって、各新たな開始アドレスは、以前の開始アドレスよりも大きい、ステップと、
前記新たな開始アドレスへのそれぞれの逐次調整後に、１つのモードで動作するために前記新たな開始アドレスと前記以前の開始アドレスとの間に位置付けられる前記データロケーションを割り当て、前記以前の開始アドレスに隣接する前記第１の領域の前記データロケーションの動作モードを一致させるステップと、
を更に備える請求項２３に記載の方法。
【請求項２６】
製造者の保証制約に従って設定された閾値を超えるとき、前記新たな開始アドレスに調整しないステップを更に備える請求項２３に記載の方法。
【請求項２７】
前記コントローラからのコマンドで、前記新たな開始アドレスを前記初期開始アドレスにリセットするステップを更に備える請求項２３に記載の方法。
【請求項２８】
リセットされると、リセットフラグを設定するステップを更に備える請求項２７に記載の方法。
【請求項２９】
少なくともいくつかのＭＬＣメモリデータロケーション内に、前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するデータロケーションを含む第３の領域を定義するステップを更に備え、前記初期終了アドレスは、前記第２の領域と前記第３の領域との境界を示す、請求項２１に記載の方法。
【請求項３０】
前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するために前記第２の領域にデータロケーションの前記セットを割り当てるステップは、
前記初期終了アドレスを前記新たな終了アドレスに調整するステップと、
前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するために前記初期終了アドレスと前記新たな終了アドレスとの間の前記第２の領域に位置付けられる前記データロケーションを割り当て、前記初期終了アドレスに隣接する前記第３の領域の前記データロケーションの動作モードを一致させるステップと、
新たに割り当てられたデータロケーションへのデータアクセスを可能にするステップと、
を更に備える請求項２９に記載の方法。
【請求項３１】
前記データアクセスを可能にするステップは、
前記初期終了アドレスを前記新たな終了アドレスに調整するための前記コントローラからのコマンドを受信すると直ぐに、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、
アクセスをアクティベートするための前記コントローラからのコマンドを受信すると、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、及び
前記コントローラからの、アクセスアクティベーション用に特化しないコマンドを受信すると、前記新たに割り当てられたデータロケーションへのデータアクセスを可能にすること、
のうちの１つを含む請求項３０に記載の方法。
【請求項３２】
前記コントローラからのコマンドに応じて、新たな終了アドレスを逐次調整するステップであって、各新たな開始アドレスは、以前の終了アドレスよりも小さい、ステップと、
前記新たな終了アドレスのそれぞれの逐次調整後に、１つのモードで動作するために前記新たな終了アドレスと前記以前の終了アドレスとの間に位置付けられる前記データロケーションを割り当て、前記以前の終了アドレスに隣接する前記第３の領域の前記データロケーションの動作モードを一致させるステップと、
を更に備える請求項３０に記載の方法。
【請求項３３】
製造者の保証制約に従って設定された閾値を超えるとき、前記新たな終了アドレスに調整しないステップを更に備える請求項３０に記載の方法。
【請求項３４】
前記コントローラからのコマンドで、前記新たな終了アドレスを前記初期終了アドレスにリセットするステップを更に備える請求項３０に記載の方法。
【請求項３５】
リセットされると、リセットフラグを設定するステップを更に備える請求項３４に記載の方法。
【請求項３６】
前記第１の領域は、前記ＳＬＣモードで動作するデータロケーションを含み、前記第３の領域は、前記ＭＬＣモードで動作するデータロケーションを含む、請求項２９に記載の方法。
【請求項３７】
前記ブリッジデバイスは、１以上のコンフィグレーションレジスタを含み、前記コントローラからのコマンドは、前記１以上のコンフィグレーションレジスタの設定により示される、請求項２１に記載の方法。
【請求項３８】
少なくともいくつかのＭＬＣメモリデータロケーション内に、前記ＳＬＣ又は前記ＭＬＣモードで動作するために割り当てられるように構成されるデータロケーションを含む第４の領域を定義するステップと、
前記コントローラからのコマンドに応じて、前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するために前記第４の領域にデータロケーションのセットを割り当てるステップと、
前記第４の領域の前記データロケーションが前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するように割り当てられるまで、前記第４の領域の前記データロケーションへのデータアクセスを防ぐステップと、
を更に備える請求項２１に記載の方法。
【請求項３９】
前記第２の領域及び前記第４の領域は、互いに隣接しない、請求項３８に記載の方法。 
【請求項４０】
前記データストレージシステムは、前記コントローラの制御下で磁気媒体を回転することを更に備える請求項２１に記載の方法。
【請求項４１】
（１）ソリッドステートメモリストレージデバイスが、マルチレベルセル（ＭＬＣ）モード及びシングルレベルセル（ＳＬＣ）モードで動作可能な複数のマルチレベルセル（ＭＬＣ）メモリデータロケーションを含む、１以上のソリッドステートメモリストレージデバイスのアレイと、（２）不揮発性データストレージシステムにおけるコントローラと、接続されるように構成されるブリッジデバイスであって、
前記ＭＬＣメモリデータロケーションの少なくともいくつかに第１及び第２の領域を定義するように構成され、
前記第１の領域は、前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するデータロケーションを含み、
前記第２の領域は、前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するために割り当てられるように構成されるデータロケーションを含み、前記第２の領域は初期開始アドレスおよび初期終了アドレスによって定義されており、
前記コントローラからのコマンドに応じて、前記ＳＬＣ又は前記ＭＬＣモードで動作するために前記第２の領域にデータロケーションのセットを割り当て、前記初期開始アドレスを新たな開始アドレスに調整するかまたは前記初期終了アドレスを新たな終了アドレスに調整するように構成され、
前記第２の領域の前記データロケーションが前記ＳＬＣ又は前記ＭＬＣモードのいずれかで動作するように割り当てられるまで、前記第２の領域の前記データロケーションへのデータアクセスを防ぐように構成される、ブリッジデバイス。
【請求項４２】
不揮発性データストレージシステムであって、
コントローラと、
１以上のソリッドステートメモリストレージデバイスのアレイであって、前記メモリストレージデバイスは、複数のマルチレベルセル（ＭＬＣ）モード及びシングルレベルセル（ＳＬＣ）モードで動作可能な複数のマルチレベルセル（ＭＬＣ）メモリデータロケーションを含む、ソリッドステートメモリストレージデバイスのアレイと、
前記アレイと接続されるブリッジデバイスと、を備え、
前記ブリッジデバイスは、
前記ＭＬＣメモリデータロケーションの少なくともいくつかに第１及び第２の領域を定義するように構成され、
前記第１の領域は、前記ＳＬＣモード又は前記複数のＭＬＣモードの１つのいずれかで動作するデータロケーションを含み、
前記第２の領域は、前記ＳＬＣモード又は前記複数のＭＬＣモードの１つで動作するようために割り当てられるように構成されるデータロケーションを含み、前記第２の領域は初期開始アドレスおよび初期終了アドレスによって定義されており、
前記ブリッジデバイスは、
前記コントローラからのコマンドに応じて、前記ＳＬＣモード又は前記複数のＭＬＣモードの１つのいずれかで動作するために前記第２の領域にデータロケーションのセットを割り当て、前記初期開始アドレスを新たな開始アドレスに調整するかまたは前記初期終了アドレスを新たな初期終了アドレスに調整し、
前記第２の領域の前記データロケーションが前記ＳＬＣモード又は前記複数のＭＬＣモードの１つのいずれかで動作するように割り当てられるまで、前記第２の領域の前記データロケーションへのデータアクセスを防ぐ
ように構成される、データストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、フラッシュドライブを含むがこれに限定されない不揮発性ストレージシステムに関する。より具体的には、本開示は、ソリッドステートドライブにおける強化されたコントローラアーキテクチャのためのシステム及び方法に関する。
【背景技術】
【０００２】
様々な種類のコントローラアーキテクチャがフラッシュメディアの制御用に存在する。Ｏｐｅｎ  ＮＡＮＤ  Ｆｌａｓｈ  Ｉｎｔｅｒｆａｃｅ（ＯＮＦＩ）は、フラッシュメモリ製造者がサポートするべきコマンドのいくつかの共通セットを特定する標準的なインターフェースである。ＯＮＦＩは、例えば、ページ書き込み／読み出し及びブロック消去を含みうるいくつかのローレベルな基本的Ｉ／Ｏオペレーションをサポートする。
【発明の概要】
【０００３】
しかし、有効なフラッシュメディア管理は、しばしば、論理‐物理マッピング、ガベージコレクション及びウェアレベリングのような複数のハイレベルかつ潜在的なプロセッサ集中機能を含む。これらの機能は、ＯＮＦＩの範囲を超え、そのため、有効なコントローラアーキテクチャは、これらのニーズを解決しつつ、ハイレベルのデータスループットパフォーマンスをホストに提供することを必要としている。
【図面の簡単な説明】
【０００４】
本発明の多様な特徴を実施するシステム及び方法は、以下の図面を参照して説明される。
【図１Ａ】図１Ａ−１Ｃは、いくつかのソリッドステートドライブ（ＳＳＤ）コントローラアーキテクチャを示す。
【図１Ｂ】図１Ａ−１Ｃは、いくつかのソリッドステートドライブ（ＳＳＤ）コントローラアーキテクチャを示す。
【図１Ｃ】図１Ａ−１Ｃは、いくつかのソリッドステートドライブ（ＳＳＤ）コントローラアーキテクチャを示す。
【図１Ｄ】図１Ｄは、一実施形態に係るコントローラアーキテクチャを示すブロック図である。
【図２Ａ】図２Ａ及び２Ｂは、一部の実施形態に係るコントローラアーキテクチャを示すブロック図である。
【図２Ｂ】図２Ａ及び２Ｂは、一部の実施形態に係るコントローラアーキテクチャを示すブロック図である。
【図３】図３は、一実施形態に係るコントローラとブリッジデバイスとの間のコマンド処理コンポーネントを示すブロック図である。
【図４】図４は、一実施形態に係る、ブリッジデバイスが、コントローラからのモードコンフィグレーションコマンドにどのように対応するかを示すブロック図である。
【図５Ａ】図５Ａ及び５Ｂは、一実施形態に係るデータロケーションの動作モードコンフィグレーション設定の例を示す。
【図５Ｂ】図５Ａ及び５Ｂは、一実施形態に係るデータロケーションの動作モードコンフィグレーション設定の例を示す。
【図６】図６は、一実施形態に係るデータロケーションの動作モードを構成する処理を示すフローチャートである。
【図７】図７Ａ及び７Ｂは、各種実施形態に係るデータロケーションの複数の範囲についての動作モードコンフィグレーション設定の例を示す。
【図８】図８Ａ及び８Ｂは、各種実施形態に係る複数のメモリデバイスに亘るコンフィグレーションの例を示す。
【発明を実施するための形態】
【０００５】
特定の実施形態が説明されるが、これらの実施形態は例示のみを目的とするもので保護範囲を限定する意図はない。実際、本稿において説明される新規の方法及びシステムは他の様々な形態で実施され得る。更に、本稿において説明される方法及びシステムの形態には、多様な省略、置換、変更が、保護範囲を逸脱すること無く行われ得る。
【０００６】
Ｉ．  コントローラ／ブリッジ設計
図１Ａ−１Ｃは、複数のＳＳＤコントローラアーキテクチャを示す。図１Ａは、ＯＮＦＩ（Ｏｐｅｎ  ＮＡＮＤ  Ｆｌａｓｈ  Ｉｎｔｅｒｆａｃｅ）インターフェースを含むＳＳＤコントローラを示す。ＯＮＦＩインターフェースは、ホストコントローラのような拡張コンポーネントが、ＮＡＮＤにおけるオペレーションを制御することを可能にするために基本的なコマンドサポートを提供する、ローレベルな、パラレルＩ／Ｏインターフェースである。図１Ａは、ＯＮＦＩをサポートする不揮発性メモリ（ＮＶＭ）ユニットを制御するＯＮＦＩインターフェースを含むＳＳＤコントローラを含むコンピュータのようなホストデバイスでの典型的なセットアップを示す。ＯＮＦＩインターフェースは、ページプログラム、ページ読み出し、ブロック消去等のような動作においていくつかの基本的なレベルの制御を提供する。ＯＮＦＩの現在のバージョンは、ダイ及びプレーン当たり１つのコマンドをサポートし、“複数読み出し（ｒｅａｄ  ｍｕｌｔｉｐｌｅ）”及び“複数書き込み（ｗｒｉｔｅ  ｍｕｌｔｉｐｌｅ）”コマンドのようなコマンドを通じていくつかの基本的なキューイング（ｑｕｅｕｉｎｇ）機能を提供する。しかし、異なる種類のコマンドの混成は存在し得ない。また、コマンドは、バッチ処理され、これは、コマンドが、より多くのコマンドが受け付けられうる前に、キュー（ｑｕｅｕｅ）を完全にクリアしなければならないことを意味する。このアプローチでのＳＳＤコントローラは、ガベージコレクション、ウェアレベリング、マッピング等のようなハイレベルなＮＶＭマネージメント機能を行う。
【０００７】
図１Ｂは、ＮＡＮＤ及び信号処理のいくつかのレベルの基本的なチャネルマネージメントを行うブリッジコントローラ／デバイスに接続されるＮＶＭにおける別のアプローチを示す。ブリッジは、ＯＮＦＩ又はＯＮＦＩ相当のインターフェースをＳＳＤコントローラに提供してもよい。しかし、このインターフェースは、標準的なＯＮＦＩインターフェースから変更されており、複数のコマンドをサポートすることのような追加機能をサポートする場合がある。この設計において、ＳＳＤコントローラは、依然として、ガベージコレクションのようなハイレベルＮＡＮＤマネージメントを行っており、ＯＮＦＩ又はＯＮＦＩ相当のインターフェースを介してブリッジと通信する。
【０００８】
図１Ｃは、ＮＶＭが、ストレージシステムにおけるブリッジに接続される第３のアプローチを示す。このアプローチでは、ブリッジは、ガベージコレクション、ウェアレベリング、マッピングのような複数のハイレベルＮＶＭマネージメント機能を実行すると共に、チャネルマネージメント、信号処理のようなローレベル機能も実行する。ストレージシステムは、ｅＭＭＣ又はＵＦＳのようなハイレベルＩ／Ｏインターフェースを通じてホストデバイスと接続される。これは、多くのメモリカード製品で見受けられる共通設計である。ホストは、ロジカルアドレッシング（ｌｏｇｉｃａｌ  ａｄｄｒｅｓｓｉｎｇ）を用いて、ストレージシステムへのコマンド（例えば、読み出し及び書き込みコマンド）を送信する。アドバンストコマンドキューイング、ヘルスレポーティング及び詳細エラーレポーティングのような機能がサポートされてもよい。
【０００９】
ＩＩ．  システム概要
図１Ｄは、本発明の一部の実施形態に係るコントローラデザインアーキテクチャを示すブロック図である。図１Ｄは、ガベージコレクション、ウェアレベリング等のようなハイレベルなＮＶＭマネージメント機能を実行するＳＳＤコントローラを示す。一実施形態では、ＳＳＤコントローラは、ＰＣＩｅ及びｅＭＭＣのようなハイレベルで、ハイスピードなインターフェースでＮＶＭストレージシステムと接続される。ＰＣＩｅ又はｅＭＭＣに代えて、他の標準的な及び／又は独自インターフェースは、このバスインターフェースとしての使用のために拡張されうる。一実施形態では、ＮＶＭストレージシステムは、ハイレベル、ハイスピードインターフェースを介してＳＳＤコントローラと通信するブリッジを含み、ＯＮＦＩのようなローレベルインターフェースでＮＡＮＤメモリを制御する。示されるように、アドバンストコマンドキューイング、ヘルスレポーティング及び詳細エラーレポーティングのような追加機能は、ハイレベルインターフェースでサポートされてもよい。
【００１０】
上述した設計とは異なり、このアーキテクチャでのコントローラは、ＰＣＩｅのような洗練され、かつ高速なインターフェースでＮＶＭの個々の要素に亘る制御（例えば、ページレベル制御）の物理レベルのリッチなセットを提供される。ブリッジは、電力の問題によりパフォーマンスが低いプロセッサに実装される一方で、コントローラは、低電力の問題に直面する環境にあることが、多くのコントローラ−ブリッジ型の設計で観察される。プロセッサ集中機能が、より高い性能のコントローラにシフトされる場合、全体の待ち時間が低減されうる。よって、一部の実施形態では、コントローラは、典型的には、アドバンストＮＶＭマネージメント機能をサポートしうる高電力プロセッサに実装される。一方、ブリッジは、一部の実施形態では、ＮＶＭストレージモジュール／ユニット全体のエネルギー使用を最小化するために、低電力プロセッサに実装される。その結果、ブリッジは、ＮＶＭの基本的な信号処理及びチャネルマネージメントを実行すると共に、いくつかの基本的な誤り訂正機能及びＸＯＲパリティ累積を実行する。一部の実施形態では、コントローラは、論理物理アドレスマッピング、ガベージコレクション、ウェアレベリング、（ブリッジにおけるパリティアキュムレータの制御を介した）パリティマネージメント、ＲＡＩＤストライピング等を実行する。この作業分担は、コントローラに直接、ＮＶＭの物理（例えば、ページレベル）制御を提供し、ＰＣＩｅのような高速で、ハイレベルなインターフェースでページ及びブロックレベル両方でのＮＶＭのコントローラ管理をもたらす。一実施形態では、コントローラは、ブロックにおけるＸＯＲパリティアキュムレータのような他のインテグレートサービスも管理する。
【００１１】
一実施形態では、マネージメントタスクのアーキテクチャの分担の別の利点は、ＮＶＭ業界のトレンドに関連する。ＮＶＭの物理マネージメントは、例えば、ＭＬＣ（Ｍｕｌｔｉ−Ｌｅｖｅｌ  Ｃｅｌｌ）ＮＡＮＤのような最も一般的な種類のＮＶＭとして益々重要になってきており、耐久性を犠牲にして高い性能を提供するために進化し続けている。例えば、５，０００Ｐ／Ｅサイクルの耐久性を有する今日のＭＬＣ製品は、１，５００−２，０００Ｐ／Ｅサイクルの耐久性を有する次世代ＭＬＣ製品に置き換えられる。一般的に、ブリッジ設計者は、ＮＶＭの物理特性を理解し、様々な耐久性強化／管理機能を実装することによりその寿命を伸ばすためにどれが最も良好かを理解するために最も適した立場にある。この技術的な背景の急激な変化、及び個々のＮＶＭ製造者が、このような耐久性強化／管理機能を別々に要求するため、これらの機能は、ＮＶＭ製品の多様な、刻々と変化する種類に適合するために、絶えず微調整を必要とする。よって、一部の実施形態のアーキテクチャは、ブリッジにおけるこれらの機能を隔て、かつコントローラ設計者に、ハイレベルなデータマネジメント機能を集中可能にすることにより、その分業において別の利点を提供する。言い換えれば、コントローラ及びブリッジが、異なる設計制約及び優先度を有するため、各アーキテクチャ下で、全体の完全な再設計を行わずに、異なるスケジュール及び方法に従って更新される。
【００１２】
設計により提供される、低減された待ち時間により、ブリッジは、より低廉な媒体とペアになってもよい。例えば、ブリッジは、ＳＬＣ（Ｓｉｎｇｌｅ−Ｌｅｖｅｌ  Ｃｅｌｌ）ＮＡＮＤではなくＭＬＣ  ＮＡＮＤとペアになりつつ、消費者により要求される性能メリットを満たす。また、一部の実施形態では、上述したコントローラ−ブリッジ設計は、フラッシュメモリ及びハードディスクコンポーネントを含むハイブリッドドライブでの使用に適用されうる。これらの実施形態では、コントローラは、ブリッジを通じたＮＶＭへのデータアクセスの管理に加えて、１以上のハードドライブへのデータアクセスも管理する。この設計の更なる特徴は、以下の本発明の実施形態の各種図面及び説明により更に説明されるであろう。
【００１３】
ＩＩ．Ａ．  コントローラ‐ブリッジ実装
図２Ａは、図１Ｄで前述されたコントローラ‐ブリッジアーキテクチャの実施形態を示す。示されるように、ソリッドステート不揮発性ストレージシステム１２０は、ホストシステム１１０に接続される。ホストシステム１１０は、ストレージインターフェース１１２を用いて不揮発性ストレージシステム１２０と通信する。ホストのストレージインターフェース１１２は、ＳＡＴＡ、ＳＣＳＩ、ＳＡＳ、ＵＳＢ、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ、ＰＣＩｅ、ｅＭＭＣ等のような既存の通信プロトコルを用いて、不揮発性ストレージシステム１２０と通信しうる。
【００１４】
一実施形態では、不揮発性ストレージシステム１２０は、コントローラ１３０及びＮＶＭストレージモジュール１５０を含む。一実施形態では、コントローラ１３０は、（バスロジック／インターフェース１４０を通じて）ＰＣＩｅのようなハイレベルなインターフェースを介してＮＶＭストレージモジュール１５０内のブリッジデバイス１５２と通信する。一実施形態では、ＰＣＩｅは、ルーティング及びＱｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ  （ＱｏＳ）インフラストラクチャベースのリッチなパケットを定義し、ハイスピードインターフェースを提供するように使用される。コントローラは、データ機能を制御するためにプロセッサ１３６を含んでもよく、コアは、スタティックメモリ１３２及びダイナミックメモリ１３４と接続されてもよい。コントローラ１３０は、また、ホストシステム１１０からのデータアクセスコマンドに関連するデータ処理／転送のためのデータパス１３８も含んでもよい。一実施形態では、コントローラ１３０は、ＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）に実装されるが、他のハードウェア／ファームウェア実装が可能であると当業者には理解されるであろう。
【００１５】
一実施形態では、ＰＣＩｅの使用は、デバイス機能に割り当てられるアドレス範囲が、ファブリック上、及びデバイス内の両方でのパケットルーティングのために使用される。一実施形態では、ＰＣＩｅトランザクションレイヤは、ファームウェアにより読み出される内部レジスタインターフェースへパケットを伝達する。アドバンストデバイスは、頻繁に、内部ＲＡＭ又はハードウェアアクセラレーションモジュールへ着信パケットを移動させる。
【００１６】
一実施形態では、ブリッジデバイス１５２は、ハイレベルインターフェースバスで（コントローラ１３０上の）バスロジック／インターフェース１４０と通信するためのバスロジック／インターフェース１５４を備える。ブリッジの他端では、ブリッジデバイス１５２は、ＮＶＭストレージ１６０（例えば、ＮＡＮＤ）と通信するためのＯＮＦＩのようなローレベルインターフェース１５８を含み、これは、フラッシュダイ１６２，１６４，１６６及び１６８のような複数のストレージデバイスを含んでもよい。ＯＮＦＩがこの実施形態で示されるが、他の適切なフラッシュメモリインターフェースが使用されてもよい。別の実施形態では、ブリッジは、ＮＶＭストレージ１６０と通信する又はダイレクトコマンドをストレージへ送信するためにトグル又は独自のインターフェースのような異なるインターフェースを使用してもよい。
【００１７】
ＩＩ．Ｂ．  分業
ＮＶＭマネージメントを分業する利点を上記のセクションＩＩで概説した。特に、アーキテクチャは、待ち時間を低減し、各種の設計制約を解決しつつ、コントローラ及びブリッジ設計者が、アーキテクチャのそれらの各部分を最適化することを可能にする。一実施形態では、コントローラは、ブロックレベルマネージメント、パリティストライプレイアウト、ガベージコレクション、ウェアレベリング、ハンドリングリードディスターブ及びエラーリカバリを担当する。一実施形態では、ブリッジデバイスは、ｒａｗ  ＮＶＭフラッシュインターフェースを管理する。コマンドキューイング、誤り訂正、ＸＯＲパリティアキュムレータ、データプロテクション及びブロック耐久性の強化の１以上を提供してもよい。一実施形態では、ブリッジとコントローラとの間のインターフェースは、ライトウェイトのＰＣＩｅベースのデータ及びマネージメントインターフェースである。コントローラは、ブリッジ及びデータコマンドを構成するためにインターフェースコントロールコマンドを使用し、ＮＶＭメディアにアクセスする。
【００１８】
コントローラは、既存のコントローラ‐ブリッジ設計に共通なロジカルなものに変わる物理ページアドレッシングを使用することも留意される。ブリッジは、ページ間、ブロック間、プレーン間、及びダイ間の関係を特定しうる。これは、コントローラに、ＲＡＩＤストライプレイアウトを生成し、データの移動を行い、不良ブロックをハンドリングするための多大な柔軟性（ｆｌｅｘｉｂｉｌｉｔｙ）を与える。これらの詳細は、ブリッジから要約されたものである。ダイレクトアドレッシングを用いるとき、コントローラは、単に、コマンドヘッダにおけるダイレクトページアドレスのセットをブリッジに提供する。一実施形態では、ページは、逐次又は同一のブロックでさえ必要ではない。最も多くの場合、コントローラは、同時ハードウェアアクセスを最大限にするために、複数のプレーン及び複数のダイに亘って広がるページにアクセスするであろう。
【００１９】
ＩＩ．Ｃ．  ハイブリッドアプリケーション
コントローラ‐ブリッジアーキテクチャの一部の実施形態は、別の仕様のために適合されうる。例えば、図２Ｂは、上述したＮＶＭ及びブリッジコンポーネントに追加されるハイブリッドドライブ１２２におけるコントローラアーキテクチャの使用を示しており、回転式ハードディスクドライブ（ＨＤＤ）のような磁気媒体１８４を有する磁気ストレージモジュール１８０を含む。この実施形態では、コントローラ１３０は、ＮＶＭストレージモジュール１５０及び磁気ストレージモジュール１８０の両方へのデータアクセスを管理する。一実施形態では、インターフェース１４０とは異なるインターフェースは、コントローラ１３０を磁気ストレージモジュール１８０に接続するために使用されてもよい。
【００２０】
ハイブリッドアプリケーションは、コントローラアーキテクチャの別の利点を示す。ハイブリッドドライブは、典型的には、ＳＳＤ内のＮＶＭを特定するためのマッピングテーブルを有するその独自の内部コントローラを有するＳＳＤを含む。ハイブリッドのＨＤＤ部分が、典型的には、直接特定されるが、ハイブリッドコントローラは、データがＳＳＤ又はＨＤＤにあるかどうかを判定するために特別なマッピングテーブルを使用する。内部ＳＳＤをマッピングテーブルと共にこの特別なマッピングテーブルを使用することは、２つのマッピングテーブルが存在し、かつ各テーブルの維持に関連する多大なコストが存在するため、データがハイブリッドのＳＳＤ部分にアクセスされる場合に、二重のオーバーヘッドを発生させる。
【００２１】
対照的に、本アーキテクチャにおけるコントローラ１３０は、ブロック及びページレベルにおけるＮＶＭ及び磁気媒体の両方を管理し、単一のローケーションにおけるフラッシュ及び磁気媒体に亘る均一化されたアドレス管理を提供しうる。故に、上記で述べられた２つのテーブルを有する必要がない。これは、重複したテーブルックアップ及び別個のマッピングテーブルを維持することに関する全ての関連するコスト／複雑性を低減するという利点を有する。ダイレクトページアドレッシングは、単一化マッピングスキームで使用される。
【００２２】
また、ハイブリッドアプリケーションでは、ＮＶＭは、大量の不良ブロック（例えば、５０％）を有するときでさえ、有効なパフォーマンス強化を提供する。一つのハイブリッドな実施形態では、コントローラは、また、（不良ブロックにより生じるギャップでの）効果的なアドレスギャップハンドリング能力を有する。別のハイブリッド実施形態では、単一化マッピングスキームは、コントローラと共に機能するためにブリッジを必ずしも必要としない。コントローラは、ＮＶＭにアクセスするためにｒａｗ  ＮＶＭインターフェース（例えば、ＯＮＦＩ）を使用する可能性がある。
【００２３】
ＩＩＩ．  データコマンド処理
図３は、一実施形態に係るコントローラとブリッジデバイスとの間のコマンド処理コンポーネントを示すブロック図である。ＰＣＩｅインターフェース（又は他の同等のインターフェース）の構成を用いて、コントローラ及びブリッジの両方は、他のデバイスにより特定されうるそれらの各デバイスメモリにおけるその独自のアドレス空間（２１０，２５０）を実装する。メッセージは、アドレススペース内の特定のアドレス内に位置付けられるキュー（ｑｕｅｕｅｓ）へ書き込むことにより伝えられ、一実施形態では、アドレスは、コンフィグレーション及びステータスレジスタ２５２に格納される。データアクセスコマンド及びコントローラとブリッジとの通信を扱うための個々のキュー（ｑｕｅｕｅｓ）の使用は、以下に更に説明されるであろう。
【００２４】
ＩＩＩ．Ａ．  コマンド及び管理キュー‐ブリッジ
一実施形態では、コントローラは、ブリッジデバイスにおけるコマンドキュー（ｃｏｍｍａｎｄ  ｑｕｅｕｅ）２６２へデータアクセスコマンドを送信する。これは、データコマンドメッセージをブリッジへ送信するコントローラ（コマンドキューＢＡＲ（ベースアドレスレジスタ）への書き込みによる）により行われる。一実施形態では、コマンドキューは、６つのメッセージのためのルームを有するが、別の実施形態では、複数のメッセージが変化しうる。コマンドキューは、複数の手段で実装されうる。１つのオプションは、コントローラが固定オフセットに書き込むフルハードウェアオートメーションである。それに代えて、リングバッファ又はリンクされたリストベースのアレイを用いてメモリ内に実装されうる。一実施形態では、実装は、効果的な挿入及び最小限バストラフィックによる通知を可能にしなければならない。一実施形態では、コントローラは、ブリッジが返送する複数のステータス応答に基づく現在のキューデプス（ｃｕｒｒｅｎｔ  ｑｕｅｕｅ  ｄｅｐｔｈ）を知る。データコマンドは、実際のデータよりも短いことに留意する。キューにおける与えられたレコードスロットは、ブリッジが、完全な状態又はエラーレポートに返送されると、利用可能になるとみなされる。
【００２５】
図３に示される実施形態では、ブリッジサイド２５０は、コンフィグレーション及びステータスレジスタ（ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｓｔａｔｕｓ  ｒｅｇｉｓｔｅｒｓ（ＣＳＲ））２５２と共に、コントローラからの、コマンドキューの動作に関連するコマンドメッセージ（例えば、コマンドキューを中止するメッセージ）又は通常のブロックの動作に関する管理上のメッセージを受信するための管理キュー（ａｄｍｉｎ  ｑｕｅｕｅ）２５８も実装する。管理キュー２５８は、フルハードウェアオートメーション又はリングバッファを通じるような、コマンドキューと同様の形態で実装されてもよい。また、コマンドキューのように、管理キューは、最小限のバストラフィックによる効果的な挿入及び通知のために構成されてもよい。コマンドキューのように、コントローラは、ブリッジからの応答に基づいて現在のキューデプス（ｃｕｒｒｅｎｔ  ｑｕｅｕｅ  ｄｅｐｔｈ）及び利用可能なスロットを導出しうる。
【００２６】
ＩＩＩ．Ｂ．  ステータスキュー‐コントローラ
コントローラサイド２１０では、データアドレス２１２におけるデータポート２１４のセット及び複数のステータスキュー（ｓｔａｔｕｓ  ｑｕｅｕｅｓ）である。一実施形態では、ステータスキューは、エラーキュー（ｅｒｒｏｒ  ｑｕｅｕｅ）２１８と、情報キュー（ｉｎｆｏｒｍａｔｉｏｎ  ｑｕｅｕｅ）２２２と、コマンド完了キュー（ｃｏｍｍａｎｄ  ｃｏｍｐｌｅｔｉｏｎ  ｑｕｅｕｅ）２２６と、を含む。これらのキューは、コマンド処理についてのブリッジからのメッセージと共に、ブリッジ及びＮＶＭの現在の状態の受信を担当する。
【００２７】
ＩＩＩ．Ｃ．  コントローラとブリッジとの通信
コントローラとブリッジとの通信は、一実施形態では、トランザクションレイヤ（２３２，２４２）、データリンクレイヤ（２３４，２４０）及び物理レイヤ（２３６，２３８）を含む、両方の側の複数のレイヤを含むＰＣＩｅプロトコルスタック２３０を通じてもたらされる。コントローラ及びブリッジの動作を示すために本開示ではＰＣＩｅが使用されるが、他の同様の標準も同様に使用されうる。
【００２８】
ＰＣＩｅトランザクションレイヤは、どの程度の数のルームがそのバーチャルチャネル（Ｖｉｒｔｕａｌ  Ｃｈａｎｎｅｌ（ＶＣ））バッファスペースに残るかに基づいて、送信クレジットを割り当てる。ＰＣＩｅ仕様に従い、デバイスは、ＶＣ０を実装しなければならないが、一部のデバイスは、高優先度メッセージが専用リソースを有することを確実にするために別のＶＣを実装する。パケットは、それらのトラフィッククラス（Ｔｒａｆｆｉｃ  Ｃｌａｓｓ（ＴＣ））に基づいて適切なＶＣに向けられる。ＴＣは、パケットがＰＣＩｅファブリックに亘って流れるときの優先度を決定するためにも使用される。より速いＴＣパケットは、一般的に、ルートコンプレックス、スイッチ及びエンドデバイスにより優先度を与えられる。
【００２９】
一実施形態では、コントローラは、ＶＣ０のみに使用して動作するように設計される。一実施形態では、ブリッジは、別のＶＣを実装するが、単一のＶＣモードで動作しうるように構成可能でなければならない。コントローラとブリッジとの間で通信されるメッセージは、以下のデータ処理フローの詳細な説明を見ることでよりよく理解されるであろう。ホストからの読み出しコマンドを提供するために、コントローラは、初めに、コマンドメッセージをブリッジのコマンドキューへ送信してもよい。ブリッジがコマンドメッセージを処理すると、コントローラは、ＮＶＭからの、要求されたデータを読み出し、読み出したデータを、コントローラ側の対応するデータポートへ送り戻す。このアクションは、コントローラ上のデータ経路をトリガーとし、ホストへ返送されるデータを導く。逆に、ホストからの書き込みコマンドを提供するために、コントローラは、初めに、コマンドメッセージをブリッジのコマンドキューへ送信してもよい。ブリッジがコマンドメッセージを処理すると、コントローラは、コントローラ側の対応するデータポートから読み出す。このアクションは、コントローラ上のデータ経路をトリガーとし、ＮＶＭへの書き込みのために、コントローラのバッファからブリッジへ送信される書き込みデータを導く。
【００３０】
一実施形態では、コントローラは、優先度増加の３つのメッセージタイプを用いるブリッジと通信する：書き込みコマンド用のＮＶＭへ書き込まれるデータ（０）、ブリッジのコマンドキュー用のメッセージ（１）、及びブリッジの管理キュー用のメッセージ（２）。異なる優先度は、これらのメッセージに割り当てられ、メッセージは、実装に応じて、より少ないタイプに組み合わせられる又はより多くのタイプに分割されることを当業者には理解されるであろう。一実施形態では、通常条件下では、コントローラは、ブリッジへのデータパケットの一定のストリームを送信する。
【００３１】
一実施形態では、コントローラは、優先度付されたメッセージタイプのその即時のセットを用いてコントローラとインタラクトする：読み出しコマンド用のＮＶＭからのデータ読み出し（０）、コントローラの完了／情報キュー（１）用のメッセージ、及びコントローラのエラーキュー用のメッセージ（２）。異なる優先度は、これらのメッセージに割り当てられ、メッセージは、実装に応じて、より少ないタイプに組み合わせられる又はより多くのタイプに分割されることを当業者は理解するであろう。以下に更に詳細に説明されるように、データアクセスコマンドの高速処理を容易にするために、コントローラにおけるデータポートへの、ブリッジによる読み出し又は書き込みは、コントローラにおけるデータパスを自動的にトリガーする。一実施形態では、いくつかのコマンドで並列処理することはブリッジにとって稀ではない。一実施形態では、ブリッジは、コマンドが完了したときに、コントローラに通知するために、完了キュー（ｃｏｍｐｌｅｔｉｏｎ  ｑｕｅｕｅ）２２６を使用する。また、重要でないメッセージは、情報キュー２２２へ送信されるが、詳細なエラーレポートは、エラーキュー２１８へ送信される。別の実施形態では、これらのキューは、（特別なフラグにより区別される又はアドレス値を意味する異なるメッセージタイプ）いくつかのキューに組み合わせられてもよく、又はより多くのキュー（例えば、異なる種類のエラー用の異なるエラーキュー又はブリッジからリターンされた異なる種類の情報用の異なる情報キュー）に分割されてもよい。
【００３２】
ＰＣＩｅ以外の異なるインターフェースが使用される別の実施形態では、ＰＣＩｅプロトコルスタックは、当該インターフェースの適切なスタック／レイヤに置き換えられてもよい。他の同等の標準化されたインターフェース（例えば、ｅＭＭＣ）は、ＰＣＩｅを置き換えるように適合されてもよいことが当業者に理解されるであろう。別の実施形態では、カスタム／独自インターフェースは、コントローラとブリッジとの通信を扱うために使用されてもよい。
【００３３】
ＩＶ．  ＳＬＣ／ＭＬＣモード管理
ソリッドステートメモリで使用される共通のタイプは、マルチレベルセル（Ｍｕｌｔｉ−Ｌｅｖｅｌ  Ｃｅｌｌ（ＭＬＣ））ＮＡＮＤメモリであり、これは、通常、少なくとも１つのマルチレベルセル（Ｍｕｌｔｉ−Ｌｅｖｅｌ  Ｃｅｌｌ（ＭＬＣ））モード又はシングルレベルセルＳｉｎｇｌｅ−Ｌｅｖｅｌ  Ｃｅｌｌ（ＳＬＣ）モードで動作可能である。一実施形態では、上記で説明されたＮＶＭブリッジアーキテクチャは、フラッシュダイにおける特定のデータロケーションが、（１）データアクセスが防がれた予約モードへ配置される、（２）コントローラコマンドに応じて、ＳＬＣモード又はＭＬＣモードに割り当てられる、（３）モードの割り当て後にデータアクセス用に利用可能となる、ことを可能にする。この柔軟性は、ランタイム条件及び／又はプロダクトコンフィグレーションに基づいてＳＬＣモード又はＭＬＣモードモードデータロケーションを増加させる方法をコントローラに与え得ることを含む、いくつかの手法のシステム全体の機能性を強化する。一実施形態では、予約されたデータ位置の割り当ては、メモリベンダーによって課された保証条件のような拡張制約が、監視されることを確実にするための手法で行われる。
【００３４】
ＩＶ．Ａ．  概要
図４は、一実施形態に係る、ブリッジデバイスが、コントローラからのモードコンフィグレーションコマンドにどのように対応するかを示すブロック図である。上述したように、一実施形態では、ブリッジデバイス１５２は、１以上のフラッシュダイを含むＮＶＭストレージ１６０と接続される。一実施形態では、ブリッジデバイスは、バス（例えば、上述したＰＣＩｅバス）に亘るコントローラ１３０からのコマンドを取得し、ＮＶＭストレージ１６０におけるデータアクセスコマンドを実行する。バスプロトコルのタイプは、ＰＣＩｅに限定されず、別の実施形態では、他のプロトコルが使用されてもよい。ブリッジデバイス１５２は、フラッシュダイの寿命をどの程度延ばせるかについていくつかの情報を有していてもよい。
【００３５】
フラッシュダイは、ＭＬＣ又はＳＬＣモードで動作しうるＭＬＣセルを含んでもよい。例えば、セル当たり２ビットのデータまで格納しうるＭＬＣセルでは、ＳＬＣモードでブロックを配置することは、セル当たり２ビットからセル当たり１ビットにデータキャパシティを減少させる。一方、ＳＬＣモードでの動作は、より優れたプログラム／消去（Ｐ／Ｅ）耐久性を生じる。メモリ製造者により課せられた保証制約の結果として、ストレージデバイスが使用分野制限に達する前に、１つのモード又は別のモードで動作するように設定されたＭＬＣセルを有することが一般的である。本開示では、用語ＭＬＣは、セル当たり２ビット以上を格納することが可能であるメモリセルをいう。セル当たり２ビット以上での実装では、いくつかのレベルのＭＬＣモードが存在し、本明細書に開示される調整方法は、セルに割り当てるために適用可能であり、これらの異なるＭＬＣレベルで動作する。例えば、３ビット・パー・セルモードが利用可能であるメモリでは、予約領域は、３ビット・パー・セルモード、２ビット・パー・セルモード又はＳＬＣモードで動作するように割り当てられてもよい。
【００３６】
本発明の一部の実施形態は、必要に応じて、ストレージ容量を低減することを犠牲にして耐久性、パフォーマンス及び信頼性を改善するためにコントローラ１３０により使用される予約領域において、特定のメモリブロックを配置することを可能にする。一部の実施例は、ハイアクセスホットスポット（ｈｉｇｈ−ａｃｃｅｓｓ  ｈｏｔｓｐｏｔｓ）を管理し、重要なシステムデータを格納することを含んでもよい。ＭＬＣモード又はＳＬＣモードのいずれかに対する予約されたブロックの拘束（Ｃｏｍｍｉｔｍｅｎｔ）は、ストレージデバイスの寿命の初期でなされる必要はなく、コントローラは、寿命のうちでどの程度多く割り当てられるかを選択するために柔軟性を有する。これを実現するために、一実施形態では、ブリッジデバイスは、コントローラが、ランタイム時にＳＬＣ又はＭＬＣモードモードへ予約データロケーションの範囲を配置することを可能にする方法を提供する。例えば、コントローラは、１以上のコマンドをブリッジデバイスへ送信することによりモードを設定しうる。例えば、ＰＣＩｅが使用される場合、図３に示されるようなＣＳＲ  ２５２は、ＣＳＲの内部のフィールドの設定を通じて、コマンドが通信されることを可能にするために用いられる。
【００３７】
一実施形態では、２つのレジスタフィールドは、予約データロケーションの範囲を実現するために使用される：開始アドレス（例えば、ｍｉｎ＿ｓｌｃ＿ｂｌｏｃｋ）及び終了アドレス（例えば、ｍａｘ＿ｓｌｃ＿ｂｌｏｃｋ）。開始及び終了アドレスは、予約領域を定義する。別の実施形態では、コントローラ１３０は、レジスタの使用（例えば、ＳＡＴＡのようなプロトコルを有するバスにおけるコマンドの送信）に代えて、１以上のコマンドを通じて予約領域の範囲を示すことができる。
【００３８】
図４のテーブル４００に示されるように、一実施形態では、開始及び終了アドレス値は、ＳＬＣ、予約（Ｒｅｓｅｒｖｅｄ）済み、及びＭＬＣの３つの領域４０２を定義する。ＳＬＣ及びＭＬＣ領域の両方は、アクセス値４０６により示されるように、正常に、アクセスされうる。予約領域のアクセス値は、領域内のブロックを使用することを防ぐために、アクセスされないことを示す。テーブル４００は、概念を示すことを意図した教示例であり、同一のコンフィグレーションを実現するために、レジスタに記憶される又はコマンドにより送信される実際の値又は値の種類が異なってもよいことを留意する。
【００３９】
一実施形態では、領域は、図７Ａ及び７Ｂに更に示されるように、異なるコンフィグレーションのものでありうる。一実施形態では、コンフィグレーションは、全てのダイに亘って各プレーンに適用される。別の実施形態では、各ダイ又は各ダイのサブセットは、図８Ａ及び８Ｂに示されるように、その独自の領域のコンフィグレーションを有してもよい。
【００４０】
ＩＶ．Ｂ．  ＭＬＣ又はＳＬＣ領域の成長手順
図５Ａ及び５Ｂは、一実施形態に係るデータロケーションの動作モードコンフィグレーション設定の例を示す。図５Ａの説明図１は、アドレス範囲の初期設定を示す。当該範囲は、予約領域（０からＳＬＣ＿Ｍａｘ）及びＭＬＣ領域（ＳＬＣ＿Ｍａｘ＋１からＮＡＮＤ＿Ｍａｘ）に分割され、ここで、ＳＬＣ＿Ｍａｘ及びＮＡＮＤ＿Ｍａｘは、当該範囲におけるアドレスである。例えば、ＳＬＣ＿Ｍａｘは、２５５であり、ＮＡＮＤ＿Ｍａｘは、１０２４データブロック／データロケーションを有する１つのダイにおいて１０２３であってもよい。説明図１の左側は、開始アドレス（Ｍｉｎ  Ｂｌｏｃｋ＝０）及び終了アドレス（Ｍａｘ  Ｂｌｏｃｋ＝ＳＬＣ＿Ｍａｘ）の、予約領域の境界値である。上述したように、ブリッジデバイスは、予約領域内のデータロケーションへのアクセスを防ぐ。
【００４１】
予約領域のサイズ（及び隣接する予約されていない領域のサイズ）を変更するために、開始及び終了アドレス値は、コントローラからのコマンドを通じて又はブリッジデバイスにおけるレジスタ値の設定を通じて変更されてもよい。説明図２では、開始アドレス（Ｍｉｎ  Ｂｌｏｃｋ）は、０から３０に変更される。説明図３では、予約領域が調整され、ここでは３０で開始する。範囲０から２９におけるデータロケーションは、ＳＬＣ領域に割り当てられ（つまり、ＳＬＣモードで動作するように割り当てられ）、データアクセスは、ここで可能になる。言い換えれば、ＳＬＣ領域は、０データロケーションから３０データロケーションに成長（ｇｒｏｗｎ）している（０−２９）。
【００４２】
ＩＶ．Ｂ．Ｉ  アクセス可能オプション
説明図２から３への遷移は、複数の方法で生じうる。一実施形態では、新たに割り当てられたデータロケーションへのデータアクセス（例えば、説明図２−３の０−２９）は、コントローラからコマンドを受信するとすぐに生じ、初期開始アドレスを新たな開始アドレスに調整する。別の実施形態では、新たに割り当てられたデータロケーションへのデータアクセスは、直接又は間接的な手法で遅延されうる。一実施形態では、アクセスをアクティベートするためにコントローラから後のコマンドを直接受信すると、アクセスは可能になる。別の実施形態では、アクセスアクティベーション用に特化しない、後のコマンド（ｌａｔｅｒ  ｃｏｍｍａｎｄ）を間接的に受信するとアクセスは可能になる。例えば、これは、コントローラから、新たに割り当てられたデータロケーションの１つへのデータアクセス（例えば、書き込み）コマンドでありうる。
【００４３】
説明図４では、予約領域の終了アドレスが調整され（Ｍａｘ  Ｂｌｏｃｋが８０に設定される）、説明図５では、ＭＬＣ領域は、以前、予約領域にあったそれらのロケーション（８０‐ＳＬＣ＿Ｍａｘ）を含むために成長する。説明２から３への遷移と同様に、ＭＬＣモードで動作するために新たに割り当てられたそれらのデータロケーションへのデータアクセスは、上述したように、直接又は間接的なメカニズムを通じて遅延された状態で、直ぐに可能となってもよい。
【００４４】
ＩＶ．Ｂ．ＩＩ  成長ルール
一実施形態では、ブリッジデバイスは、開始又は終了アドレスの繰り返し調整を可能にするように構成され、予約領域のデータロケーションを、ＳＬＣ又はＭＬＣ領域にいずれかへ割り当てることを留意する。例えば、コントローラからのコマンドに応じて、ブリッジデバイスは、以前の開始アドレスよりも大きい新たな開始アドレスへ調整し（例えば、説明図２から３）、各調整の後、１つのモードで動作するために新たな開始アドレスと以前の開始アドレスとの間に位置付けられるデータロケーションを割り当て、以前の開始アドレス（この例ではＳＬＣモード）に隣接する領域におけるデータロケーションの動作モードを一致させる。ＭＬＣ領域側／終了アドレス側で同一の受信がなされうる。これらの説明におけるレイアウトは、ＭＬＣ領域が低い（ｌｏｗｅｒ）アドレス範囲であり、ＳＬＣ領域が高い（ｈｉｇｈｅｒ）アドレス範囲であるように、予約されてもよい。
【００４５】
一実施形態では、ブリッジデバイスは、調整が、予約領域のサイズの低減についてのみになされることを確実にする。すなわち、予約領域におけるデータロケーションは、隣接するＳＬＣ又はＭＬＣ領域の成長に適応するためにＳＬＣ又はＭＬＣモードで動作するように割り当てられることができるが、隣接するＳＬＣ又はＭＬＣ領域からのデータロケーションは、予約領域となるように再設計されない。この処理は、メモリが、保証規約のような一部の製造者により定められるルールによる監視に使用されることを可能にし、これは、１つのモードが選択され、かつ選択されたモードでデータロケーションが使用されている動作の異なるモードに、データロケーションがリセットされることを禁止する。
【００４６】
ＩＶ．Ｂ．ＩＩＩ  リセットオプション
一実施形態では、ブリッジデバイスは、動作モードのこのようなリセットが、例えば、コントローラ１３０からのコマンドに基づいて実行されるリッセット機能を通じて生じることを付加的に可能にする。図５Ｂの説明図６に示されるように、予約領域の境界は、リセットされる。よって、隣接する領域をつなぐように前に割り当てられたデータロケーションは、予約領域に戻る。例えば、ＳＬＣモードで動作するように設定されている説明図３に示されていたデータロケーション３０は、ここでは、ＭＬＣモードで動作するために再割り当てされるようにフリーである。
【００４７】
任意に、リセットフラグは、このようなリセットが生じていることを示すために設定されてもよい。このフラグの設定は、動作規約がこのような耐久性保証を無効にしていることを示す。一部の例では、リセット機能は、テスト／開発目的のためには有益であるが、使用することはできない。
【００４８】
ＩＶ．Ｂ．ＩＶ  成長サマリー、活用事例
調整工程は、図６のフローチャートに集約される。図示される処理５００は、コントローラ及び／又はブリッジデバイスにより実行されてもよい。ブロック５０４では、ブリッジデバイス及び／又はコントローラは、予約領域の初期セットアップを行う（例えば、境界設定等）。ブロック５０６及び５０８では、予約領域におけるデータロケーションは、ＳＬＣ又はＭＬＣモードのいずれかで動作するように割り当てられ、図５Ａ及び５Ｂの例に示されるようなそのモードの隣接する領域の成長を容易にする。フローチャートに示されるように、いずれかの割り当ては、連続した順序で、又は混合されたシーケンスで複数回繰り返されうる。付加的に、リセットは、ブロック５１０で行われ、リセットフラグは、ブロック５１２で行われてもよい。
【００４９】
一実施形態では、予約領域へのＭＬＣ又はＳＬＣ領域の成長は、閾値により制限される。そのため、ブリッジデバイスは、新たな開始アドレスに調整しないように設定されてもよい。
【００５０】
同一のストレージデバイスのソリッドステートメモリダイが、耐久性及び品質（例えば、遭遇した読み出しエラー）のような態様で異なるとき、予約領域は、コントローラ及び／又はブリッジデバイスが、メモリダイで遭遇するこのようなバリエーションを調整することを可能にする。例えば、一部の実施形態では、コントローラ及び／又はブリッジデバイスは、物理メモリ位置に対応するＳＬＣモードとなる高い性能を要請するように決定されるデータロケーションを指定してもよい。このようなデータロケーションは、システムデータ又はアクセス時間及び耐久性を改善するために重要であるとみなされる他のユーザデータのような重要なデータを格納するために予約されてもよい。具体的な例として、一部のストレージシステムは、ＳＬＣモードである特定のデータロケーションをプログラムし、システムテーブルのようなシステムクリティカルデータを格納する。対照的に、一部の実施形態では、予約領域は、コントローラ及び／又はブリッジデバイスが、初めの１０メモリブロックにおける品質問題に遭遇した場合に、フィールドの各コントローラ及び／又はブリッジデバイスに、システムクリティカルデータを格納するＳＬＣ領域にシフトするための性能を提供する。一部の実施形態では、コントローラ及び／又はブリッジデバイスは、ＭＬＣモードとなる高品質な物理メモリロケーションに対応するデータロケーションを指定し、ＳＬＣモードに対するＭＬＣモードの固有の耐久性の欠点を補ってもよい。更に、予約領域は、システムが消耗したときに、コントローラ及び／又はブリッジデバイスに、システム全体の利用を調整するための機会を与える役割も果たす。更に別の実施形態では、コントローラ及び／又はブリッジデバイスは、ＳＬＣモードにおけるデータロケーションの範囲を設定するために予約領域を活用し、システムが低い知識状態（ｌｏｗ  ｋｎｏｗｌｅｄｇｅ）（例えば、システムがブートアップしており、全ての機能がアクティベートされていない場合）にあるときになりうるデータを格納する。これらの機能は、コントローラ及び／又はブリッジデバイスが、使用パターン、メディア消耗及び外部制約のような条件に応じて、メモリ領域を動的にチューニングすることを可能にする。
【００５１】
ＩＶ．Ｃ．  変形例
図７Ａ及び７Ｂは、各種実施形態に係るデータロケーションの複数の範囲についての動作モードコンフィグレーション設定の例を示す。図７Ａは、一般的なコンフィグレーションを示す。動作モードが設定された予約領域が、２つの領域間にありうる（例えば、ＭＬＣ又はＳＬＣモード、又は２つの異なるＭＬＣモード、２つの同一モード）。図５Ａ及び５Ｂに示されるコンフィグレーションは、この一般的なコンフィグレーションの特定のケースである。図５Ａ（説明図１）で前述されたように、予約領域は、初めに、０アドレスで開始されてもよい。一実施形態では、領域境界を示す値は、格納され、かつ予約領域のデータロケーションの割り当てに調整され、隣接する領域の成長に適合する。例えば、図７Ａの配置では、各ＭＬＣ／ＳＬＣの予約されない領域は、それが占有するアドレスの範囲を示す一対のトップ／ボトム値を有してもよい。それに代えて又は加えて、予約領域の境界は、保持されてもよい。
【００５２】
図７Ｂは、アドレス範囲に亘る複数の予約領域が存在、かつ予約領域が互いに隣接しない、図７Ａの概念の拡張を示す。トップ／ボトム値の各ペアは、予約されない領域の境界をトラック（ｔｒａｃｋ）する。それに代えて又は加えて、予約領域の境界は、保持されてもよい。図７Ｂの予約されない領域は、初めから終わりまで散乱した予約領域を使い果たすためにフレキシブルに成長しうる。
【００５３】
アドレス範囲の全体にわたる予約領域の使用は、多くの状況で有益である。例えば、ストレージデバイスは、特定のサブレンジ（ｃｅｒｔａｉｎ  ｓｕｂ−ｒａｎｇｅ）へのアクセスを有する各バスで、複数のバスによりアクセスされるように構成されてもよい。その状況では、各サブレンジは、それらの領域により提供される柔軟性が、バスと関連付けられる個々のコントローラに提供されるように、１以上の予約領域に割り当てられてもよい。より一般的には、本願明細書で説明された各種のコンフィグレーションは、任意のコントローラに、その需要に適したＭＬＣ／ＳＬＣモードへのデータロケーションの割り当てを調整する性能を提供する。
【００５４】
図８Ａ及び８Ｂは、異なる実施形態で使用される異なるコンフィグレーションを示す。図８Ａは、全てのダイ（又はダイに亘る全てのプレーン）は、同一のコンフィグレーションを共有し、予約領域境界への変化がダイに亘って行われる。図８Ｂは、各ダイが、異なるコンフィグレーションを有することを許可し、個別に変化することが許可された実施形態を示す。一部の実施形態では、ダイは、同一サブセットのダイが、同一のコンフィグレーションを共有し、かつ境界が共有コンフィグレーション内で変化するとき同一の手法でもたらされるサブセットに分割されてもよい。
【００５５】
Ｖ．  別の実施形態；結論
本願で使用されるような、“不揮発性メモリ”は、典型的には、ＮＡＮＤフラッシュのようなソリッドステートメモリと呼ばれる。しかし、本開示のシステム及び方法は、従来のハードドライブ、並びにソリッドステート及びハードドライブコンポーネントを含むハイブリッドドライブでも有益である。よって、特定の内部オペレーションは、典型的には“ウェアレベリング”及び“ガベージコレクション”のようなソリッドステートドライブと関連付けて呼ばれるが、ハードドライブ用の類似オペレーションも本開示の一部の実施形態で活用されうる。不揮発性メモリは、フラッシュ集積回路、カルコゲナイドＲＡＭ（Ｃ−ＲＡＭ）、相変化メモリ（ＰＣ−ＲＡＭ又はＰＲＡＭ）、プログラマブルメタライゼーションセルＲＡＭ（ＰＭＣ−ＲＡＭ又はＰＭＣｍ）、Ｏｖｏｎｉｃ  Ｕｎｉｆｉｅｄ  Ｍｅｍｏｒｙ（ＯＵＭ）、抵抗ＲＡＭ（ＲＲＡＭ（登録商標））、ＮＡＮＤメモリ、ＮＯＲメモリ、ＥＥＰＲＯＭ、強誘電体メモリ（ＦｅＲＡＭ）、又はその他のディスクリートＮＶＭ（不揮発性メモリ）チップのような多様な種類の技術を含んでもよい。ソリッドステートストレージデバイス（例えば、ダイ）は、既に知られているように、プレーン、ブロック、ページ及びセクタに物理的に分割されてもよい。他の形態のストレージ（例えば、バッテリバックアップ揮発性ＤＲＡＭ又はＳＲＡＭデバイス、磁気ディスクドライブ等）は、追加又は代替的に使用されてもよい。
【００５６】
特定の実施形態が記載されたが、これらの実施形態は例示のためにのみ提供されたものであり、保護の範囲を限定することを意図しない。実際に、本稿に記載の新規な方法及びシステムは他の多様な形態で実施され得る。更に、本稿に記載の方法及びシステムの形態の様々な省略、置換、及び変更が、保護の精神から逸脱することなく加えられ得る。添付の請求の範囲及びその等価物は、このような形態又は変形をも、本開示の精神及び範囲に含まれるものとして包含するよう意図されている。例えば、図１Ｄ、２Ａ、２Ｂ、３及び４に示される各種コンポーネントは、プロセッサ、ＡＳＩＣ／ＦＰＧＡ又は専用ハードウェア上のソフトウェア及び／又はファームウェアとして実装されてもよい。例えば、一部の実施形態では、図６に示される処理の実際のステップは、図示されるものとは異なることを当業者は理解するであろう。実施形態に応じて、上記の例で説明される特定のステップが削除され、他のものが追加され、ステップのシーケンスが変更及び／又は並列に行われてもよい。更に、上述した特定の実施形態の機能及び属性は、異なる方法で組み合わせられて追加の実施形態を成立し得て、その全てが、本開示の範囲に包含される。本開示は特定の好適な実施形態及び応用を提供しているが、本稿に記載の全ての機能及び利点を提供しない実施形態を含む、当業者にとって明白なその他の実施形態も、本開示の範囲に包含される。したがって、本開示の範囲は、添付の請求の範囲を参照することによってのみ定義されるように意図される。
【図１Ａ】
0006321682.tif 000002
【図１Ｂ】
0006321682.tif 000003
【図１Ｃ】
0006321682.tif 000004
【図１Ｄ】
0006321682.tif 000005
【図２Ａ】
0006321682.tif 000006
【図２Ｂ】
0006321682.tif 000007
【図３】
0006321682.tif 000008
【図４】
0006321682.tif 000009
【図５Ａ】
0006321682.tif 000010
【図５Ｂ】
0006321682.tif 000011
【図６】
0006321682.tif 000012
【図７】
0006321682.tif 000013
【図８】
0006321682.tif 000014