(57)【要約】【課題】ソリッドステートドライブについて動的帯域幅報告を実現する。【解決手段】装置はメモリおよびコントローラを含む。メモリはデータを記憶するように構成され得る。コントローラは複数のテーブルを有し得る。コントローラは概して、メモリに対する読出／書込を求める複数の入出力要求を処理し、メモリの複数の統計を追跡し、複数のテーブルをメモリの複数の統計で索引付けして複数のパラメータを求め、ホストから隠されている１つ以上のタスクを有するメモリにサービスしている間にコントローラが消費する第１の帯域幅を複数のパラメータに基づいて算出し、コントローラが消費する第１の帯域幅に基づいて、ホストが利用可能なメモリの第２の帯域幅をホストに報告するように構成される。【選択図】図１
2018010615.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するように構成されたメモリと、
複数のテーブルを有するコントローラとを備える装置であって、前記コントローラは、前記メモリに対する読出／書込を求める複数の入出力要求を処理し、前記メモリの複数の統計を追跡し、前記複数のテーブルを前記メモリの前記複数の統計で索引付けして複数のパラメータを求め、ホストから隠されている１つ以上のタスクを有する前記メモリにサービスしている間に前記コントローラが消費する第１の帯域幅を前記複数のパラメータに基づいて算出し、前記コントローラが消費する前記第１の帯域幅に基づいて、前記ホストが利用可能な前記メモリの第２の帯域幅を前記ホストに報告するように構成される、装置。
【請求項２】
前記メモリおよび前記コントローラはソリッドステートドライブの一部を形成する、請求項１に記載の装置。
【請求項３】
前記コントローラはさらに、動的イベント、周期的なイベント、前記ホストからの問合せ、パワーオンイベント、ガーベッジコレクションタスクの開始、および前記ガーベッジコレクションタスクの終了、の少なくとも１つに応答して前記第２の帯域幅を前記ホストに報告するように構成される、請求項１に記載の装置。
【請求項４】
前記ホストに報告される前記第２の帯域幅は、前記ホストと前記コントローラとの間で毎秒転送され得るデータの量を示す、請求項１に記載の装置。
【請求項５】
前記コントローラはさらに、前記ホストから１つ以上の指示を受信し、前記１つ以上の指示に基づいて、前記メモリの前記複数の統計の１つ以上がどのように追跡されるかを制御するように構成される、請求項１に記載の装置。
【請求項６】
前記コントローラはさらに、前記ホストによる付加的な帯域幅の仮定の消費を受信し、前記仮定の消費に基づいて、前記ホストに報告される前記第２の帯域幅を更新するように構成される、請求項１に記載の装置。
【請求項７】
前記メモリの前記複数の統計は、前記メモリが電源投入された合計時間、実行されたプログラム／消去サイクルの総数、現在利用可能なオーバープロビジョニングの量、および現在利用可能な空き空間の量、の２つ以上を含む、請求項１に記載の装置。
【請求項８】
前記第２の帯域幅は、前記ホストが利用可能な読出帯域幅および前記ホストが利用可能な書込帯域幅として報告される、請求項１に記載の装置。
【請求項９】
前記コントローラはさらに、前記メモリと前記コントローラとの間で転送されているユーザデータのサイズを修正する１つ以上の動作に基づいて、前記メモリの前記複数の統計の１つ以上を推定するように構成される、請求項１に記載の装置。
【請求項１０】
前記１つ以上の動作は、エラー訂正コード動作、圧縮動作、およびトリム動作において用いられる符号化率の１つ以上を含む、請求項９に記載の装置。
【請求項１１】
ホストへの動的帯域幅報告のための方法であって、
メモリに対する読出／書込を求める複数の入出力要求をコントローラにおいて処理するステップと、
前記メモリの複数の統計を追跡するステップと、
前記コントローラ内の複数のテーブルを前記メモリの前記複数の統計で索引付けして複数のパラメータを求めるステップと、
前記ホストから隠されている１つ以上のタスクを有する前記メモリにサービスしている間に前記コントローラが消費する第１の帯域幅を、前記複数のパラメータに基づいて算出するステップと、
前記コントローラが消費する前記第１の帯域幅に基づいて、前記ホストが利用可能な前記メモリの第２の帯域幅を前記ホストに報告するステップとを備える、方法。
【請求項１２】
前記ステップはソリッドステートドライブにおいて実行される、請求項１１に記載の方法。
【請求項１３】
前記第２の帯域幅は、動的イベント、周期的なイベント、前記ホストからの問合せ、パワーオンイベント、ガーベッジコレクションタスクの開始、および前記ガーベッジコレクションタスクの終了、の少なくとも１つに応答して前記ホストに報告される、請求項１１に記載の方法。
【請求項１４】
前記ホストに報告される前記第２の帯域幅は、前記ホストと前記コントローラとの間で毎秒転送され得るデータの量を示す、請求項１１に記載の方法。
【請求項１５】
前記ホストから１つ以上の指示を受信するステップと、
前記１つ以上の指示に基づいて、前記メモリの前記複数の統計の１つ以上がどのように追跡されるかを制御するステップとをさらに備える、請求項１１に記載の方法。
【請求項１６】
前記ホストによる付加的な帯域幅の仮定の消費を受信するステップと、
前記仮定の消費に基づいて、前記ホストに報告される前記第２の帯域幅を更新するステップとをさらに備える、請求項１１に記載の方法。
【請求項１７】
前記メモリの前記複数の統計は、前記メモリが電源投入された合計時間、実行されたプログラム／消去サイクルの総数、現在利用可能なオーバープロビジョニングの量、および現在利用可能な空き空間の量、の２つ以上を含む、請求項１１に記載の方法。
【請求項１８】
前記第２の帯域幅は、前記ホストが利用可能な読出帯域幅および前記ホストが利用可能な書込帯域幅として報告される、請求項１１に記載の方法。
【請求項１９】
前記メモリと前記コントローラとの間で転送されているユーザデータのサイズを修正する１つ以上の動作に基づいて、前記メモリの前記複数の統計の１つ以上を推定するステップをさらに備え、
前記１つ以上の動作は、エラー訂正コード動作、圧縮動作、およびトリム動作において用いられる符号化率の１つ以上を含む、請求項１１に記載の方法。
【請求項２０】
メモリに対する複数の読出／書込動作を処理するように構成されたインターフェイスと、
複数のテーブルを有する制御回路とを備える装置であって、前記制御回路は、前記メモリの複数の統計を追跡し、前記複数のテーブルを前記メモリの前記複数の統計で索引付けして複数のパラメータを求め、ホストから隠されている１つ以上のタスクを有する前記メモリにサービスしている間に前記制御回路が消費する第１の帯域幅を前記複数のパラメータに基づいて算出し、前記制御回路が消費する前記第１の帯域幅に基づいて、前記ホストが利用可能な前記メモリの第２の帯域幅を前記ホストに報告するように構成される、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
本発明は概してソリッドステートドライブに関し、より特定的には、ソリッドステートドライブについて動的帯域幅報告を実現するための方法および／または装置に関する。
【背景技術】
【０００２】
背景
ストレージへのアクセスは、従来のサーバ仮想化システムの一部である。サーバ仮想化システムでは、サーバは、情報技術インフラストラクチャの効率的で費用効果の高い利用を可能にする仮想マシンを実行する。各サーバは、中央処理装置、メモリ、ネットワークインターフェイス、およびストレージの基礎をなすハードウェアインフラストラクチャの利用を最大化することを目標として、多数の仮想マシンをホストし得る。１つのサーバ上でホストする仮想マシンが多過ぎると、仮想マシンについて許容できないレベルのパフォーマンス劣化につながることが多い。ホストする仮想マシンの数が控えめであると、インフラストラクチャが十分に利用されない。
【０００３】
ストレージに関連するホストの考慮事項は単純明快ではない。ストレージインフラストラクチャに関する２つのファクタは、容量および帯域幅である。記憶容量は要求に応じて割当てられ得、より多くの仮想マシンをサポートするために薄くプロビジョンされ得る。記憶帯域幅基準を予測することは困難である。さまざまな仮想マシンが広範な入出力作業負荷および帯域幅要求を生成する。記憶帯域幅は、システム内のキャッシングアプライアンスの有無にも影響される。利用可能な記憶帯域幅が動的に分かる場合、システムソフトウェアは要求と可用性とを最適にマッチングさせることを試み得る。現在、所与の時間にどれほどの記憶帯域幅が利用可能であるかをシステムソフトウェアが知ることができる動的で信頼性の高いメカニズムは分かっていない。
【０００４】
ソリッドステートドライブについて動的帯域幅報告を実現することが望ましいであろう。
【発明の概要】
【課題を解決するための手段】
【０００５】
要約
本発明は、メモリおよびコントローラを含む装置に関する。メモリはデータを記憶するように構成され得る。コントローラは複数のテーブルを有し得る。コントローラは概して、メモリに対する読出／書込を求める複数の入出力要求を処理し、メモリの複数の統計を追跡し、複数のテーブルをメモリの複数の統計で索引付けして複数のパラメータを求め、ホストから隠されている１つ以上のタスクを有するメモリにサービスしている間にコントローラが消費する第１の帯域幅を複数のパラメータに基づいて算出し、コントローラが消費する第１の帯域幅に基づいてホストが利用可能なメモリの第２の帯域幅をホストに報告するように構成される。
【０００６】
本発明の実施形態は、以下の詳細な説明ならびに添付の特許請求の範囲および図面から明らかになるであろう。
【図面の簡単な説明】
【０００７】
【図１】装置のブロック図である。
【図２】コントローラのブロック図である。
【図３】オーバープロビジョニングの関数としてのガーベッジコレクション動作によるサービス帯域幅のグラフの図である。
【図４】現在実行中のプログラム／消去サイクルの関数としての符号化率によるサービス帯域幅のグラフの図である。
【図５】パワーオン時間の関数としての雑多動作によるサービス帯域幅のグラフの図である。
【図６】動的帯域幅報告のための方法のフロー図である。
【図７】報告セットアップのフロー図である。
【図８】追跡セットアップのフロー図である。
【図９】図６の追跡ステップの詳細なフロー図である。
【発明を実施するための形態】
【０００８】
実施形態の詳細な説明
本発明の実施形態は、（ｉ）ドライブ内でサービス動作を実行するコントローラが消費するメモリ帯域幅を推定し得、（ii）コントローラがドライブ統計をどのように集めるかを制御する能力をホストに与え得、（iii）帯域幅計算において仮定シナリオを説明し得、および／または（iv）１つ以上の集積回路として実現され得るソリッドステートドライブついて動的帯域幅報告を提供することを含む。
【０００９】
ホスト使用に利用可能なメモリ帯域幅は、メモリ内の媒体の性質によって動的に変化し得る。媒体は一般に時間および使用と共に摩耗し、エラー訂正労力が増加する。また、媒体は、時間と共に異なる量でメモリ帯域幅を消費する連続的なリサイクル動作（たとえばガーベッジコレクション）および他の内部管理動作を受け得る。メモリは概して、存在する読出／書込チャネルの数およびインターフェイス周波数に基づいて、利用可能な一定量の媒体インターフェイス帯域幅を有する。内部のハウスキーピングの目的で、利用可能なメモリ帯域幅のさまざまな部分がメモリコントローラによって消費され得る。内部のハウスキーピング（またはサービス）目的によってどれほどのメモリ帯域幅が消費されるかを計算することによって、メモリコントローラは、ホストが使用するのに依然として残っているメモリ帯域幅の推定量をホストに報告し得る。
【００１０】
図１を参照して、装置９０の例示的な実現のブロック図が示されている。装置（または回路またはデバイスまたは集積回路）９０は、メモリ回路を有するコンピュータを実現する。装置９０は概して、ブロック（または回路）９２およびブロック（または回路）１００を含む。回路１００は概して、ブロック（または回路）１０２およびブロック（または回路）１０４を含む。ブロック１０４は１つ以上のブロック（または回路）１０６ａ〜１０６ｎを含み得る。
【００１１】
信号（たとえばＨＯＳＴＩＯ）が回路９２と回路１０２との間で交換され得る。信号ＨＯＳＴＩＯは１つ以上のホスト入出力信号（または成分）を含み得る。信号ＨＯＳＴＩＯの成分は概して、回路１００内のデータにアクセスするのに用いられる論理アドレス成分と、回路１００を制御するホストコマンド成分と、回路９２から回路１０２に書込データを転送する書込データ成分と、回路１０２から回路９２にエラー訂正された読出データを転送する読出データ成分とを含むがこれらに限定されない。
【００１２】
信号（たとえばＮＶＭＩＯ）が回路１０２と回路１０４との間で交換され得る。信号ＮＶＭＩＯは１つ以上の不揮発性メモリ入出力信号（または成分）を含み得る。信号ＮＶＭＩＯの成分は概して、回路１０４内のデータにアクセスするのに用いられる物理アドレス成分と、回路１０４を制御するメモリコマンド成分（たとえば読出または書込コマンド）と、回路１０２から書込まれた、エラー訂正コード化されて周期的冗長検査保護された書込コードワードを回路１０４内に運ぶ書込コードワード成分と、回路１０４から読出されたエラー訂正コード化されたコードワードを回路１０２に運ぶ読出コードワード成分とを含むがこれらに限定されない。
【００１３】
回路９２はホストを実現し得る。ホスト９２は概して、回路１０２を介して回路１０４からデータを読出し、かつ回路１０４にデータを書込むように動作する。読出または書込時、ホスト９２は論理アドレス値を信号ＨＯＳＴＩＯ内に転送して、どのデータセットを回路１０４に書込むべきかまたは回路１０４から読出すべきかを特定し得る。論理アドレス値は概して、回路１００の論理アドレス範囲内にある。論理アドレス値は、ＳＡＴＡ（たとえばシリアルアドバンスドテクノロジアタッチメント（serial-advanced technology attachment））セクタなどの個々のデータユニットをアドレス指定し得る。
【００１４】
回路１００はソリッドステートドライブ（ＳＳＤ）を実現し得る。ドライブ１００は概して、ホスト９２によって生成されたデータを記憶し、かつ当該データをホスト９２に戻すように動作する。さまざまな実施形態によると、ドライブ１００は、ＮＡＮＤフラッシュデバイス、位相変化メモリ（たとえばＰＣＭ）デバイス、もしくは抵抗性ＲＡＭ（たとえばＲｅＲＡＭ）デバイスなどの不揮発性半導体デバイス；１つ以上の不揮発性デバイスを有するソリッドステートドライブの部分；およびその他の揮発性または不揮発性記憶媒体、の１つ以上を含み得る。
【００１５】
回路１０２はコントローラを実現し得る。コントローラ１０２は概して、回路１０４からの読出し、回路１０４への書込み、および回路１０４のサービスを制御するように動作する。コントローラ１０２は、回路１０４から受信した、読出されたコードワードをデコードする能力を含み得る。結果として得られるデコードされたデータは、信号ＨＯＳＴＩＯを介してホスト９２に提示され得、および／または再エンコードされて信号ＮＶＭＩＯを介して回路１０４に書戻され得る。コントローラ１０２はさらに、ホスト９２から受信したおよび／またはメモリ１０４からデコードされたデータをエンコードして書込コードワードを生成するように構成され得る。結果として得られる書込コードワードは、信号ＮＶＭＩＯを介してメモリ１０４に提示されて記憶され得る。コントローラ１０２は概して、１つ以上のソリッドステートドライブ、埋込型記憶装置、または他の好適な制御アプリケーションのコントローラを実現する１つ以上の集積回路（もしくはチップもしくはダイ）を含む。
【００１６】
回路１０４は１つ以上の回路１０６ａ〜１０６ｎを含むメモリを実現し得る。回路１０６ａ〜１０６ｎはメモリ回路（またはチップ、またはダイ、またはデバイス）として実現され得る。さまざまな実施形態によると、メモリ１０４は概して１つ以上の不揮発性半導体メモリデバイスを含む。いくつかの実施形態では、メモリ１０４は１つ以上の揮発性半導体メモリデバイスを含み得る。メモリ１０４は、揮発性および／または不揮発性条件でデータを記憶するように動作し得る。メモリ１０４からデータが読出されるかメモリ１０４にデータが書込まれると、メモリ１０４は、信号ＮＶＭＩＯ内のアドレス（たとえば物理アドレス）によって特定されているメモリセル（たとえば複数のビット）のセットにアクセスし得る。当該アドレスは概して、メモリ１０４の物理アドレス範囲内にある。いくつかの実施形態では、メモリ１０４は揮発性メモリおよび／または不揮発性メモリとして実現され得る。
【００１７】
さまざまな実施形態において、回路１０６ａ〜１０６ｎは、ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、ポリシリコンまたは窒化シリコン技術に基づく電荷蓄積セルを用いるフラッシュメモリ、二次元または三次元技術に基づく不揮発性メモリ、強磁性メモリ、位相変化メモリ、レーストラックメモリ、スタックドメモリ、抵抗性ランダムアクセスメモリ、磁気ランダムアクセスメモリ、ならびに同様の種類のメモリデバイスおよび／または記憶媒体として実現され得る。しかし、特定の用途の基準を満たすために他の不揮発性メモリ技術が実現されてもよい。いくつかの実施形態では、回路１０６ａ〜１０６ｎは揮発性メモリ回路および／または不揮発性メモリ回路として実現され得る。
【００１８】
メモリ１０４を制御する一部として、コントローラ１０２は、メモリ１０４に対する読出／書込を求める複数の入出力要求を処理するように構成され得る。コントローラ１０２はさらに、メモリ１０４の複数の統計を追跡し、複数のテーブルをメモリ１０４の統計で索引付けして複数のパラメータを求め、複数のパラメータを利用して、ホスト９２から隠されている１つ以上のタスクを有するメモリ１０４にサービスしている間にコントローラ１０２が消費するサービス帯域幅を算出し、コントローラ１０２が消費するサービス帯域幅に基づいてホスト９２が利用可能なメモリ１０４の推定帯域幅をホスト９２に報告し得る。ホスト９２に報告される推定帯域幅は概して、１つ以上のレイテンシにおいてホスト９２とコントローラ１０２との間で毎秒転送され得るデータの量を示す。推定帯域幅は、ホスト９２が利用可能な読出帯域幅およびホスト９２が利用可能な書込帯域幅として報告され得る。
【００１９】
さまざまな実施形態において、コントローラ１０２は、１つ以上の条件が発生すると推定帯域幅をホスト９２に報告するように構成され得る。当該条件は、動的イベント、周期的なイベント、ホスト９２からの問合せ、パワーオンイベント、リサイクル（たとえばガーベッジコレクション）タスクの開始、および／またはリサイクルタスクの終了を含み得るがこれらに限定されない。特定の用途の設計基準を満たすために他の条件が実現されてもよい。
【００２０】
いくつかの実施形態では、コントローラ１０２はホスト９２から１つ以上の指示を受信し得る。コントローラ１０２は、受信した指示に基づいて、メモリ１０４の統計の１つ以上がどのように追跡されるかを制御し得る。いくつかの実施形態では、コントローラ１０２は、ホスト９２による付加的な帯域幅の仮定の消費を受信し得る。コントローラ１０２は、仮定の消費に基づいて、ホスト９２に報告される推定帯域幅を更新し得る。
【００２１】
メモリ１０４の統計（または状態）は概して、メモリ１０４が電源投入された合計時間、実行されたプログラム／消去サイクルの総数、利用可能な記憶空間の現在のオーバープロビジョニング量、および／または現在利用可能な空き記憶空間の量を含む。コントローラ１０２は、メモリ１０４とコントローラ１０２との間で転送されているユーザデータのサイズを修正する動作に基づいて、メモリ１０４の統計の１つ以上を推定し得る。データサイズ修正動作は、エラー訂正コード動作、圧縮動作、および／またはトリム動作において用いられる符号化率を含み得るがこれらに限定されない。特定の用途の設計基準を満たすために他の動作が実現されてもよい。
【００２２】
図２を参照して、コントローラ１０２の例示的な実現のブロック図が本発明の実施形態に従って示されている。コントローラ１０２は概して、ブロック（または回路）１１０、ブロック（または回路）１１２およびブロック（または回路）１１４を含む。回路１１４は概して、ブロック（または回路）１１６、ブロック（または回路）１１８、ブロック（または回路）１２０、ブロック（または回路）１２２、ブロック（または回路）１２４、ブロック（または回路）１２６、およびブロック（または回路）１２８を含む。信号ＨＯＳＴＩＯが回路１１０との間で交換され得る。信号ＮＶＭＩＯが回路１１２との間で交換され得る。
【００２３】
回路１１０はホストインターフェイス回路を実現し得る。ホストインターフェイス１１０は概して、信号ＨＯＳＴＩＯを介してホスト９２との通信を提供するように動作する。特定の用途の基準を満たすためにホスト９２とホストインターフェイス１１０との間で他の信号が実現されてもよい。さまざまな実施形態において、ホストインターフェイス１１０はホスト９２への／ホスト９２からの複数のアクセス動作を処理し得る。
【００２４】
回路１１２は不揮発性メモリ（たとえばフラッシュ）インターフェイス回路を実現し得る。メモリインターフェイス１１２は概して、信号ＮＶＭＩＯを介してメモリ１０４との通信を提供するように動作する。特定の用途の設計基準を満たすためにメモリ１０４とメモリインターフェイス１１２との間で他の信号が実現されてもよい。さまざまな実施形態において、メモリインターフェイス１１２はメモリ１０４に対する複数の読出／書込動作を処理し得る。
【００２５】
回路１１４は制御回路を実現し得る。制御回路１１４は概して、ホスト９２から受信したデータをメモリ１０４に書込むこと、ホスト９２に転送するためにメモリ１０４からデータを読出すこと、メモリ１０４にサービスすること、およびホスト９２が利用可能なメモリ１０４の推定帯帯域幅を計算することを制御するように動作する。制御回路１１４は概して、メモリインターフェイス１１２を介してメモリ１０４と通信する。ホスト９２はホストインターフェイス１１０を介して制御回路１１４と通信し得る。
【００２６】
回路１１６はプロセッサを実現し得る。プロセッサ１１６は概して、複数の読出／書込要求を命令するおよび／または補助するように、かつメモリ１０４内に用いられる１つ以上の基準電圧を制御してデータ（またはコードワード）を読出すように動作する。さまざまな実施形態において、プロセッサ１１６は、メモリ１０４にサービスしている間に消費されるサービス帯域幅を計算するように動作し得る。プロセッサ１１６はさらに、ホスト９２が利用可能なメモリ１０４の推定帯域幅を計算するように動作し得る。サービス帯域幅はホストインターフェイス１１０を通ってホスト９２に転送され得る。
【００２７】
回路１１８は１つ以上のルックアップテーブル（ＬＵＴ）を実現し得る。ＬＵＴ１１８は、メモリ１０４の統計をパラメータに変換するデータを記憶するように動作し得、プロセッサ１１６は当該パラメータを用いてサービス帯域幅および推定帯域幅を計算する。さまざまな実施形態において、各ＬＵＴ１１８は別個に記憶されてもよい。他の実施形態では、ＬＵＴ１１８の１つ以上は互いに統合されてもよい。
【００２８】
回路１２０は読出／書込データパスを実現し得る。データパス１２０は、メモリ１０４とホスト９２との間でデータを転送するように動作し得る。当該転送は、ホストインターフェイス１１０を利用してホスト９２と通信し、メモリインターフェイス１１２を利用してメモリ１０４と通信し得る。
【００２９】
回路１２２はキャッシュ回路を実現し得る。キャッシュ１２２は、メモリ１０４に書込まれたおよび／またはメモリ１０４から読出されたデータをキャッシュするように動作し得る。さまざまな実施形態において、キャッシュ１２２はユーザデータのための単層キャッシュとして配置され得る。随時、キャッシュ１２２内のデータがメモリ１０４にオフロードされ得る。キャッシュオフロード動作は、コントローラ１０２とメモリ１０４との間の大量の帯域幅を消費し得る。キャッシュ１２２は、さまざまな書込ポリシー、セット関連付け、および／または置換ポリシーを実現し得る。書込ポリシーは、ライトスルーおよびライトバック（またはライトビハインド）を含み得るがこれらに限定されない。置換ポリシーは概して、最長未使用時間、最短未使用時間、最低使用頻度、ランダム置換、セグメント化された最長未使用時間および／または擬似最長未使用時間を含む。特定の用途の設計基準を満たすために他の配置ポリシーが実現されてもよい。セット関連付けは概して、直接マップされた、２方向セット連想、および／またはｎ方向セット連想を含むがこれらに限定されない。
【００３０】
回路１２４はフラッシュトランスレーションレイヤ（ＦＴＬ）回路を実現し得る。フラッシュトランスレーションレイヤ１２４は、マップテーブルおよび他の関連のデータ構造を用いて論理アドレス−物理アドレス変換を実行するように動作し得る。各書込は概してメモリ１０４内の新たな場所で起こるため、マップテーブルおよび関連のデータ構造は絶えず変化し得る。マップおよび／またはデータ構造の変更部分またはダーティ部分は、メモリ１０４に周期的に書込まれて不揮発的に記憶され得る。書込は概して、コントローラ１０２とメモリ１０４との間の付加的な帯域幅を消費する。マップおよびデータ構造の不揮発的な記憶によって、予期せぬ停電が起こった場合にロバストで高速なドライブ回復が提供され得る。
【００３１】
回路１２６はリサイクル回路を実現し得る。リサイクル回路１２６は、リサイクル（たとえばガーベッジコレクション）動作を実現するように動作し得る。リサイクル動作は、コントローラ１０２とメモリ１０４との間の大量の帯域幅を消費し得る。ブロックが消去される前、そのブロック内に存在する有効なユーザデータはすべてリサイクル動作によって別のブロックに移動させられ得る。メモリ１０４内の各ページは、新たなデータが書込まれ得る（またはプログラムされ得る）前に消去される。消去動作はブロックレベルで実行され得、各ブロックは多くのページを含んでいる。ブロックのこのようなリサイクルが定期的に実行されて空き空間が作られ得る。リサイクル動作の速度、および引いては消費されるメモリ帯域幅の量は概して、オーバープロビジョニングされる容量に依存する。オーバープロビジョニングされる容量が大きいほどガーベッジコレクション速度が概して遅くなり、したがってリサイクル動作によって消費され得るメモリ帯域幅が小さくなる。
【００３２】
回路１２８は、メモリ１０４のサービス帯域幅に影響を与える他の動作を表わし得る。たとえば、ソリッドステートドライブアーキテクチャの中にはユーザデータを圧縮するものがあり得る。データ圧縮によって概して、ユーザデータがメモリ１０４内で消費する空間が減少するため、有効なオーバープロビジョニングレベルが増加する。データ圧縮の実際のレベルは、書込まれているユーザデータのエントロピに依存し得る。結果として得られる有効なオーバープロビジョニングレベルは、ホスト９２が利用可能な推定帯域幅に大きな影響を与え得る動的な複素変数であり得る。
【００３３】
図３を参照して、ガーベッジコレクション（ＧＣ）動作によるサービス帯域幅（Ｂ／Ｗ）とオーバープロビジョニング（ＯＰ）の関数との関係の例のグラフ１４０が示されている。この例に示されるように、オーバープロビジョニングが増加するにつれて、ガーベッジコレクション動作のサービス帯域幅に対する効果は減少する。当該効果は非線形の関係を有し得る。特定の用途の設計基準を満たすために他の関係が実現されてもよい。関係を表わす値のテーブルがグラフ１４０について生成されてＬＵＴ１１８に記憶され得る。
【００３４】
図４を参照して、符号化率によるサービス帯域幅と現在実行中のプログラム／消去（Ｐ／Ｅ）サイクルの関数との例示的な関係のグラフ１５０が示されている。時間と共に、現在実行中のプログラム／消去サイクルの総数として測定すると、フラッシュメモリ耐久性が劣化して生のビット誤り率（ＲＢＥＲ）が増加し得る。生のビット誤り率の増加は、コントローラ１０２内で費やされるエラー訂正労力に影響し得る。生のビット誤り率の増加によってサービス帯域幅も増加し、ホスト９２内で実行されるホストアプリケーションによって見られるレイテンシも増加し得る。プログラム／消去サイクルの符号化率に対する効果は非線形の関係を有し得る。特定の用途の設計基準を満たすために他の関係が実現されてもよい。関係を表わす値のテーブルがグラフ１５０について生成されてＬＵＴ１１８に記憶され得る。
【００３５】
図５を参照して、雑多（ＭＩＳＣ）動作によるサービス帯域幅（Ｂ／Ｗ）とパワーオン時間（ＰＯＨ）の関数との例示的な関係のグラフ１６０が示されている。フラッシュメモリの耐久性は、パワーオン時間として測定されると時間と共に劣化し得る。この劣化によって概して生のビット誤り率が増加する。時間と共に劣化する耐久性の効果は、エラー訂正符号化率使用の観点で見ることができる。フラッシュ品質が次第に劣化することによってビット誤り率が増加するので、より強いエラー訂正コードがコントローラ１０２によって用いられ、符号化率が低下し得る。符号化率が低下すると概して、有効なオーバープロビジョニングが減少する。有効なオーバープロビジョニングの減少によって次に、書込増幅が増加し得る。すべてのこのようなファクタの正味の効果は、ホストアプリケーションが利用可能な推定帯域幅の減少であり得る。当該効果は非線形の関係を有し得る。特定の用途の設計基準を満たすために他の関係が実現されてもよい。関係を表わす値のテーブルがグラフ１６０について生成されてＬＵＴ１１８に記憶され得る。
【００３６】
キャッシュ、ＦＴＬ、リサイクル、ならびに他の機能およびファクタはともに、メモリ１０４にサービスする際に大量のメモリ帯域幅を占め得る。消費されるメモリ帯域幅は、時間と共に固定されたままである／変化しないままであるとは限らない。ホスト９２が利用可能な推定帯域幅（Ｂ／Ｗ）は以下のように式１によって提供され得る：
ホストＢ／Ｗ  ＝  フラッシュＢ／Ｗ  −  （リサイクルＢ／Ｗ  ＋  ＦＴＬ  Ｂ／Ｗ  ＋  キャッシュオフロードＢ／Ｗ  ＋  雑多Ｂ／Ｗ）  （１）
フラッシュＢ／Ｗ値はメモリ１０４の固定値であり得、概してメモリ１０４の設計に基づいている。リサイクルＢ／Ｗ値は、ガーベッジコレクション動作によって消費されるサービス帯域幅であり得る。ＦＴＬ  Ｂ／Ｗ値は、フラッシュトランスレーションレイヤ動作によって消費されるサービス帯域幅であり得る。キャッシュオフロードＢ／Ｗ値は、キャッシュ１２２からメモリ１０４にデータをオフロードしている間に消費される平均サービス帯域幅であり得る。雑多Ｂ／Ｗ値は、コントローラ１０２が消費するサービス帯域幅を増加させる他の動作の合計であり得る。
【００３７】
コントローラ１０２は、式１における個々の項を算出し得る。算出は複雑であり得、さまざまな実施形態において、何らかの近似が採用され得る。伴うファクタのうちのいくつかは、特徴付けテーブルとしてＬＵＴ１１８内でプログラムされ得る。コントローラ１０２は、パワーオン時間値、プログラム／消去サイクルカウント、および現在のオーバープロビジョニングレベルを追跡し得る。パラメータは、ＬＵＴ１１８に記憶されている特徴付けテーブル内の索引として用いられ、コントローラ１０２内の内部サービス機能によって用いられるメモリ帯域幅の算出を助け得る。サービス帯域幅が算出されると、ホスト９２が利用可能なメモリ１０４の推定帯域幅が計算されて報告され得る。
【００３８】
いくつかの（たとえば３つの）グループが帯域幅報告計算において用いられ得る。１つのグループは、使用中の現在の帯域幅を計算する現在の帯域幅計算であり得る。別のグループは、選択された１つ以上の式の組合せを用いて算出される残りの利用可能な帯域幅であり得る。さらに別のグループは、現在の帯域幅計算グループおよび残りの利用可能な帯域幅グループと併用されて、新たな作業負荷が追加されると帯域幅要件を推定するシナリオプランニング帯域幅計算であり得る。
【００３９】
概して、ホスト９２は、全帯域幅、現在の帯域幅、新たな作業負荷が適用されると帯域幅がどのようになり得るか、および／または作業負荷が除去されると新たな帯域幅がどのようになり得るか、に関心があり得る。さまざまな実施形態において、ホスト９２への推定帯域幅報告は「調整済の」帯域幅および「生の」帯域幅として特徴付けられ得る。生の帯域幅が報告されると、ホスト９２は生の帯域幅から調整済みの帯域幅を推測し得る。ホスト９２によってメモリ１０４から４，０００バイト（４Ｋ）のデータが読出される例を考えてみる。４Ｋのデータを取出すためにメモリ１０４から読出されるデータの量は、エラー訂正符号化率および／または４Ｋのデータがいくつのコードワードに跨っているかに基づいて異なり得る。コードワードのカウントおよびそれぞれのサイズは概して、４Ｋのデータを読出すために消費される生の帯域幅を表わす。
【００４０】
ドライブ１００上で消費される現在の帯域幅を求めることは、指定された間隔にわたってドライブ１００上の帯域幅を収集することによって達成され得る。さまざまな実施形態において、当該間隔は構成パラメータであり得る。さらに他の実施形態では、当該間隔はホスト９２によって設定され得る。さらに他の実施形態では、収集間隔はホスト９２のサンプリング間隔によって決定され得る。さまざまな実施形態において、報告される消費帯域幅情報は概して、読出帯域幅、書込帯域幅、およびドライブ１００全体についてサンプリング間隔にわたって内部動作によって消費される帯域幅で構成される。内部動作は、ガーベッジコレクション、摩耗レベリング、読出妨害処理、保持管理、ならびにＦＴＬおよび媒体上に記憶される媒体管理構造の保守を含み得るがこれらに限定されない。
【００４１】
さまざまな実施形態において、帯域幅消費は、調整済の形態および生の形態の両方で追跡され得る。帯域幅の調整済の形態は概して、ホスト９２によって観察される帯域幅で構成される。生の帯域幅は、コントローラ１０２上で用いられる実際のリソースで構成され得る。生データを追跡して、残りの利用可能な帯域幅計算が単純化され得る。
【００４２】
ホスト９２上で実行される１つ以上のアプリケーションに対応する報告帯域幅が作成され得る。アプリケーションの実行と関連付けられている帯域幅の特定は概して、当該アプリケーションと関連付けられている記憶領域に基づいている。このような場合、利用されるストレージは各アプリケーションと関連付けられ得る。いくつかの実施形態では、関連付けは、どのアプリケーションがどの領域を所有しているかについて、ホスト９２から提供され得る。他の実施形態では、ホスト９２は要求を特定のアプリケーションからのものであるとタグ付けし得る。
【００４３】
さまざまな実施形態において、有効なオーバープロビジョニングがさらに報告され得る。有効なオーバープロビジョニングは、ドライブ１００のフォーマットされた容量に対するドライブ１００上の未使用空間のパーセンテージと定義され得、予備容量に加えて、トリムされた空間、未使用空間、および無効データを含む空間を考慮し得る。有効なオーバープロビジョニング（ＯＰ）は以下のように式２によって近似され得る：
【００４４】
【数１】
2018010615.tif 000003
【００４５】
式中、生の容量はメモリ１０４の生の容量であり得；フォーマットされた容量はホスト９２に報告されるドライブ１００の容量であり得；トリムされたデータは、ホスト９２がドライブ１００に報告した、ホスト９２がもはや使用していないデータであり得；平均エントロピは、コントローラ１０２によって圧縮が利用された場合の、ドライブ１００上に記憶されている全データにわたるデータの平均圧縮率であり得；ＦＴＬオーバーヘッドは、ＦＴＬ構造および統計が占めるメモリ１０４上の空間の量であり得；平均符号化率は、ドライブ１００上に記憶されているデータについて用いられる平均エラー訂正符号化率であり得；平均ＦＴＬ符号化率は概して、ＦＴＬ構造および統計について用いられる平均エラー訂正符号化率である。さまざまな実施形態において、有効なオーバープロビジョニング計算は、ブロック、平面および／またはダイ破損から保護するために用いられる外部コードについてのオーバーヘッドを考慮に入れ得る。
【００４６】
残りの利用可能な帯域幅（ＢＷ）算出は以下のように式３によって提供され得る：
残りの利用可能なＢＷ  ＝  利用可能な全ＢＷ  −  現在のＢＷ  （３）
残りの利用可能な帯域幅は概して、多数のファクタおよび入力に基づく分析計算である。残りの生の帯域幅およびリソースは、生の全帯域幅、読出および書込について残っている生のフラッシュ帯域幅、残っている生のフラッシュバス帯域幅、残っている生の中央処理装置（ＣＰＵ）リソース、残っている生のバッファ空間および帯域幅、残っている生の内部バス帯域幅、ならびに残っている生のホストインターフェイス帯域幅から、現在の生の帯域幅を引くことによって計算され得る。剰余は概してコントローラ１０２上の残りのリソースおよび帯域幅を表わす。その後、コントローラ利用およびリソースに基づいて、以下の統計を用いて、選択された作業負荷に基づいて残りの帯域幅が求められ得る：ＣＰＵ利用；有効なオーバープロビジョニング（残りの書込帯域幅を算出するために用いられる）；空きメモリ空間クレジットが得られる速度も、分布が異なり得るために考慮され得る；読出帯域幅に影響を与え得る平均符号化率およびプログラム／消去サイクル；ならびに、さまざまな有効なオーバープロビジョニングレベルおよび容量で収集された１つ以上のアプリケーションパフォーマンスプロファイル。当該プロファイルはテーブルに記憶され得る。ホスト９２は、どのアプリケーションがどの領域を使用しているかを、対応するプロファイルと共に特定し得る。
【００４７】
利用可能なドライブ帯域幅を計算するおよび／または推定するためのさまざまな方法が実現され得る。たとえば、さまざまな代表的な作業負荷がドライブ１００に対して実行され得、作業負荷について利用可能な帯域幅およびレイテンシが記録される。作業負荷による利用は０％から１００％でスケーリングされてから作業負荷テーブルに記憶され得る。シナリオプランニングは、残りの帯域幅を取り、作業負荷テーブルを索引付けしてその効果を見ることによって導出され得る。ホスト９２は、特定の作業負荷を追加することが、ドライブ１００上で実行されている現在の作業負荷に決定的に影響を与え得ることを見出し得る。ホスト９２はさらに、所与の作業負荷を移動させて他の作業負荷に良い効果が与えられるか否かを確認し得るシナリオ問合せを考慮し得る。
【００４８】
図６を参照して、動的帯域幅報告のための例示的な方法１７０のフロー図が示されている。方法（またはプロセス）１７０はドライブ１００内で実現され得る。方法１７０は概して、ステップ（または状態）１７２、決定ステップ（または状態）１７４、ステップ（または状態）１７６、ステップ（または状態）１７８、ステップ（または状態）１８０、ステップ（または状態）１８２、決定ステップ（または状態）１８４、ステップ（または状態）１８６、およびステップ（または状態）１８８を含む。
【００４９】
ステップ１７２において、コントローラ１０２（たとえば制御回路１１４および／またはメモリインターフェイス１１２）は、メモリ１０４に対する複数の読出／書込動作を処理し得る。読出／書込動作を処理している間、コントローラ１０２はステップ１７４において、１つ以上のトリガイベントが発生するかどうかドライブ１００を監視し得る。トリガイベント（または条件）が検出されない場合、コントローラ１０２はステップ１７２において読出／書込（または入出力）要求を処理し続け得る。トリガイベントは概して、１つ以上の動的イベント、１つ以上の周期的なイベント、ホスト９２からの１つ以上の問合せ、各パワーオンイベント、ガーベッジコレクションタスクの各開始、および／またはガーベッジコレクションタスクの各終了を含む。特定の用途の設計基準を満たすために他の条件が実現されてもよい。
【００５０】
トリガイベントが検出されると、コントローラ１０２はステップ１７６において、ドライブ１００の１つ以上の統計の追跡を更新し得る。更新された統計に基づいて、コントローラ１０２はステップ１７８において、統計に対応するパラメータを算出し得る。ステップ１８０において、パラメータに基づいてコントローラ１０２が消費するサービス帯域幅がコントローラ１０２によって算出され得る。サービス帯域幅が分かると、コントローラ１０２はステップ１８２において、ホスト９２が利用可能な推定帯域幅およびレイテンシを算出し得る。
【００５１】
ホスト９２が仮定（または「what if」）シナリオをコントローラ１０２に提供したか否かを確認するために、決定ステップ１８４において検査が行なわれ得る。ホスト９２が、コントローラ１０２が考慮すべき仮定条件を提示している場合、コントローラ１０２はステップ１８６において、推定帯域幅およびレイテンシを更新し得る。推定帯域幅およびレイテンシが更新されると、または仮定ケースを受信していない場合は、コントローラ１０２は概してステップ１８８において、推定帯域幅およびレイテンシをホスト９２に報告する。
【００５２】
いくつかの実施形態において、ホスト９２は、付加的な容量の実際の割当てが行なわれる前に、現在使用中のドライブ１００内の帯域幅可用性に対する付加的な容量割当ての仮定の効果を検査し得る。コントローラ１０２は、新たな潜在的な割当てに基づいて推定帯域幅がどのようになり得るかを折り返し報告し得る。さまざまな実施形態において、「what if」分析は、結果として得られるドライブ１００のパフォーマンスを評価するために、追加された読出／書込作業負荷を含む、付加的なリソース利用についての情報を含み得る。報告内のフィードバックに基づいて、ホスト９２はドライブ１００から付加的な容量を割当てるように、ドライブ１００から付加的な容量の一部を割当てるように、またはドライブ１００から付加的な容量を割当てないように適切なアクションを取り得る。動的帯域幅報告特徴は概して、記憶インフラストラクチャの最適な利用に有用であり得るホスト９２についてのこのような分析を可能にする。
【００５３】
帯域幅算出が達成されると、ホスト９２が利用可能なメモリ１０４の推定帯域幅がホスト９２に報告され得る。さまざまな実施形態において、この報告は、コントローラ１０２によって生成されてホスト９２によって読出可能なベンダー固有のログページとして実現され得る。不揮発性メモリホストコントローラインターフェイス仕様エクスプレス（ＮＶＭｅ）、シリアルアタッチドスモールコンピュータシステムインターフェイス（serial attached small computer system interface：ＳＡＳ）、および／またはシリアルアドバンスドテクノロジアタッチメント（ＳＡＴＡ）などのさまざまなホストインターフェイスプロトコルは概して、ホスト９２がベンダー固有のログページを読出すことを可能にする。ベンダー固有のログページ報告エントリの例は、以下のように表Ｉに提供され得る：
【００５４】
【表１】
2018010615.tif 000004
【００５５】
左の欄の値Ｎ：０は概して、利用可能な帯域幅を報告するために用いられるログエントリのサイズを表わす（たとえば、３２ビットのログエントリについてはＮ＝３１であり、帯域幅について１６ビットに、レイテンシについて１６ビットに分割され得る）。真ん中の欄の値は、ホスト９２が利用可能なメモリ１０４の推定帯域幅を表わし得る。推定帯域幅はメガビット／秒（ＭＢＰＳ）単位で表現され得る。右の欄の値は、ホスト９２が予期し得る推定記憶レイテンシを表わし得る。記憶レイテンシはマイクロ秒単位で表現され得る。特定の用途の設計基準を満たすために他のベンダー固有のログページおよび／または報告メカニズムが実現されてもよい。
【００５６】
図７を参照して、報告動作の例示的なセットアップのフロー図２００が示されている。方法（またはプロセス）２００はドライブ１００内で実現され得る。方法２００は概して、ステップ（または状態）２０２、ステップ（または状態）２０４、およびステップ（または状態）２０６を含む。
【００５７】
コントローラ１０２は、周期的なイベントにおいて、および／または一定のトリガイベント（もしくは点）において、ホスト９２の要求に応じて推定記憶帯域幅を報告し得る。トリガイベントの例として、時間ベースのイベント（たとえば、１０秒毎、毎分、毎時、等）が挙げられ得るがこれらに限定されない。非周期的なイベントの例として、パワーオン条件、ならびにガーベッジコレクションの開始、ガーベッジコレクションの終了、および／またはキャッシュオフロードの開始などの内部イベントが挙げられ得る。特定の用途の設計基準を満たすために他のイベントが実現されてもよい。
【００５８】
ステップ２０２において、コントローラ１０２はホスト９２からトリガ情報を受信し得る。プロセッサ１１６はステップ２０４において、ホスト９２から受信したトリガ情報に従ってトリガイベントの有無を監視するように構成され得る。ステップ２０６において、コントローラ１０２は概して、トリガイベントのいずれか１つ以上が発生するかどうかドライブ１００を監視する（たとえば図６のステップ１７４）。
【００５９】
図８を参照して、追跡の例示的なセットアップのフロー図２２０が示されている。方法（またはプロセス）２２０はドライブ１００内で実現され得る。方法２２０は概して、ステップ（または状態）２２２、ステップ（または状態）２２４、およびステップ（または状態）２２６を含む。
【００６０】
コントローラ１０２はステップ２２２において、ホスト９２から追跡情報を受信し得る。プロセッサ１１６はステップ２２４において、ホスト９２から受信した追跡情報に従ってメモリ１０４の統計を追跡するように構成され得る。ステップ２２６において、コントローラ１０２は概して追跡情報に従ってメモリ１０４の統計を追跡する（たとえば図６のステップ１７６）。
【００６１】
追跡されるメモリ１０４の統計は、コントローラ１０２について予め定義され得る（たとえば製造時に予めプログラムされ得る）。統計をどのように追跡するかはホスト９２によってプログラム可能であってもよい。たとえば、コントローラ１０２は、ある期間にわたってキャッシュオフロードについて消費されるサービス帯域幅を測定している場合がある。ホスト９２上で実行される仮想マシンによるアクティビティのバーストを考えてみる。バーストによって、ウインドウ時のキャッシュオフロードの速度が高くなり得る。キャッシュオフロードについての測定期間がバーストウインドウと比べて長い場合、バーストは、キャッシュオフロードのためにコントローラ１０２が消費する計算されたサービス帯域幅の平均をわずかに増加させ得る。測定期間がバーストウインドウとほぼ同じ長さである場合、コントローラ１０２が消費する計算されたサービス帯域幅はバースト時に大幅に増加し得る。いくつかの実施形態では、ホスト９２は、短い測定期間に基づいて利用可能な平均推定帯域幅を知りたい場合がある。他の実施形態では、ホスト９２は、長い測定期間に基づいて利用可能な平均推定帯域幅を知りたい場合がある。特定の用途の設計基準を満たすために、さまざまなホスト９２がコントローラ１０２内に測定期間（どのようにキャッシュオフロード統計を集めるか）をプログラムしてもよい。
【００６２】
図９を参照して、追跡ステップ１７６の詳細なフロー図が示されている。ステップ（または方法またはプロセス）１７６はドライブ１００内で実現され得る。ステップ１７６は概して、ステップ（または状態）２４２、ステップ（または状態）２４４、およびステップ（または状態）２４６を含む。
【００６３】
ステップ２４２において、コントローラ１０２は、ドライブ１００内で実行される動作に基づいてサービス帯域幅消費の要素を推定し得る。当該動作は、エラー訂正コード動作、圧縮動作、およびトリム動作において用いられる符号化率を含み得るがこれらに限定されない。コントローラ１０２はステップ２４４において、メモリ１０４のいくつかの統計を直接測定し得る。測定される統計は、メモリ１０４が電源投入された合計時間、実行されたプログラム／消去サイクルの総数、現在利用可能なオーバープロビジョニングの量、および現在利用可能な空き空間の量を含み得るがこれらに限定されない。
【００６４】
帯域幅監視の他の使用がコントローラ１０２および／またはホスト９２に含まれていてもよい。たとえば、ステップ２４６において、コントローラ１０２またはホスト９２は時間と共に報告される記憶帯域幅のスナップショットを記憶し得る。その後、スナップショットを用いて、ドライブ１００がどのように挙動しているかが分析され、パフォーマンスが微調整され、および／または帯域幅を利用するためのより良い技術が開発され得る。
【００６５】
図１から図９の図表に示されている機能および構造は、関連技術の当業者に明らかであるように、本明細書の教示に従ってプログラムされた、従来の汎用プロセッサ、デジタルコンピュータ、マイクロプロセッサ、マイクロコントローラ、分散型コンピュータリソースおよび／または同様の計算機械の１つ以上を用いて設計され得、モデル化され得、エミュレートされ得、および／またはシミュレートされ得る。これも関連技術の当業者に明らかであるように、適切なソフトウェア、ファームウェア、コーディング、ルーチン、指示、オプコード、マイクロコード、および／またはプログラムモジュールが本開示の教示に基づいて熟練のプログラマによって容易に準備され得る。ソフトウェアは概して、たとえば非一時的な記憶媒体などの１つまたはいくつかの媒体において具体化され、順次または並行してプロセッサの１つ以上によって実行され得る。
【００６６】
また、本発明の実施形態は、ＡＳＩＣ（特定用途向け集積回路）、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）、ＰＬＤ（プログラマブルロジックデバイス）、ＣＰＬＤ（コンプレックスプログラマブルロジックデバイス）、シーオブゲート、ＡＳＳＰ（特定用途向け標準品）、および集積回路の１つ以上において実現されてもよい。当該回路は、１つ以上のハードウェア記述言語に基づいて実現されてもよい。本発明の実施形態は、フラッシュメモリ、不揮発性メモリ、ランダムアクセスメモリ、読出専用メモリ、磁気ディスク、フロッピー（登録商標）ディスク、ＤＶＤおよびＤＶＤ  ＲＡＭなどの光ディスク、光磁気ディスクならびに／または分散型記憶システムに関連して利用されてもよい。
【００６７】
本明細書において「である（is（are）」および動詞と共に使用される場合の「あり得る（may）」および「概して（generally）」という用語は、説明が例示的なものであり、本開示に提示されている具体例および開示に基づいて導出され得る代替例の両方を包含するのに十分広いと考えられるという意図を伝えることを意味している。本明細書に使用される「あり得る」および「概して」という用語は、対応する要素を省略する望ましさまたは可能性を必ずしも暗示していると解釈されるべきでない。本明細書に使用される「同時に」という用語は、何らかの共通期間を共有するイベントを示すことを意味しているが、当該用語は同じ時間に開始する、同じ時間に終了する、または同じ期間を有するイベントに限定されることを意味していない。
【００６８】
本発明は特にその実施形態を参照して図示および説明されたが、本発明の範囲から逸脱することなく形態および詳細のさまざまな変更がなされ得ることが当業者に理解されるであろう。
【符号の説明】
【００６９】
９０  装置、９２  ホスト、１００  ソリッドステートドライブ、１０２  コントローラ、１０４  メモリ、１０６ａ〜１０６ｎ  回路、１１０ホストインターフェイス、１１２  メモリインターフェイス、１１４  制御回路、１１６  プロセッサ、１１８  ルックアップテーブル、１２０  データパス、１２２  キャッシュ、１２４  フラッシュトランスレーションレイヤ、１２６  リサイクル回路、１２８  回路。
【図１】
2018010615.tif 000005
【図２】
2018010615.tif 000006
【図３】
2018010615.tif 000007
【図４】
2018010615.tif 000008
【図５】
2018010615.tif 000009
【図６】
2018010615.tif 000010
【図７】
2018010615.tif 000011
【図８】
2018010615.tif 000012
【図９】
2018010615.tif 000013
【外国語明細書】
2018010615000001.pdf