(57)【特許請求の範囲】
【請求項１】
不揮発性メモリ（ＮＶＭ）と、
前記ＮＶＭに第１のバスを介して通信可能に結合されたメモリコントローラと、
前記メモリコントローラに第２のバスを介して通信可能に結合された、少なくとも１つの記憶要素を有するホスト装置と、を備え、
前記ホスト装置が、
前記少なくとも１つの記憶要素内に、アドレス固有の正常性情報を記憶した前記ＮＶＭの正常性情報データベースを保持し、
アクセス要求、アドレス及びアドレス固有の正常性情報を含むコマンドを、前記第２のバスを介して前記メモリコントローラに送信し、
前記メモリコントローラが、さらに、
前記コマンドから前記アドレス固有の正常性情報を抽出し、
前記アドレス固有の正常性情報を処理して少なくとも１つのＮＶＭ動作パラメータを取得し、
前記少なくとも１つのＮＶＭ動作パラメータに従って前記アクセス要求を実行する、ように構成される、ことを特徴とするシステム。
【請求項２】
前記不揮発性メモリが、ＮＡＮＤフラッシュメモリを含む、ことを特徴とする請求項１に記載のシステム。
【請求項３】
前記メモリコントローラがさらに、前記アドレス固有の正常性情報を更新し、該更新したアドレス固有の正常性情報を前記ホスト装置に提供する、ことを特徴とする請求項１に記載のシステム。
【請求項４】
前記ホスト装置が、さらに、前記更新したアドレス固有の正常性情報を前記正常性情報データベースに記憶する、ことを特徴とする請求項３に記載のシステム。
【請求項５】
前記ホスト装置が、前記正常性情報データベースに記憶されたいずれのアドレス固有の正常性情報とも関係なく動作する、ことを特徴とする請求項１に記載のシステム。
【請求項６】
前記ホスト装置が、前記正常性情報データベース内のいずれのアドレス固有の正常性情報も単独で修正しない、ことを特徴とする請求項１に記載のシステム。
【請求項７】
前記アドレス固有の正常性情報が、誤り訂正パラメータ、プログラムパラメータ、読み取りパラメータ、又はこれらのあらゆる組み合わせを含む、ことを特徴とする請求項１に記載のシステム。
【請求項８】
前記ホスト装置が、さらに、
ファイルシステムからファイルシステムコマンドを受け取り、
前記ファイルシステムコマンドから、アクセスすべき物理アドレスを判断し、
前記正常性情報データベースにアクセスして、前記物理アドレスに対応するアドレス固有の正常性情報を取り出し、
前記取り出したアドレス固有の正常性情報及び前記物理アドレスを、前記メモリコントローラに提供する前記コマンドに組み入れる、ことを特徴とする請求項１に記載のシステム。
【請求項９】
不揮発性メモリ（ＮＶＭ）と通信するメモリコントローラにより実施される方法であって、
アクセス要求と、
アドレスと、
前記アドレスに関連するアドレス固有の正常性情報と、
を含むコマンドをメモリコントローラにおいてホスト装置から受け取るステップであって、前記アドレス固有の正常性情報は、前記ホスト装置内に含まれるメモリに保存される正常性情報データベースで保持される、ステップと、
前記アドレス固有の正常性情報を処理して少なくとも１つのＮＶＭ動作パラメータを取得するステップと、
前記少なくとも１つのＮＶＭ動作パラメータに従って前記アクセス要求を実行するステップと、を含むことを特徴とする方法。
【請求項１０】
前記アクセス要求を実行するために前記少なくとも１つのＮＶＭ動作パラメータに変更が必要であったかどうかを判定するステップと、
前記アクセス要求を実行するために前記少なくとも１つのＮＶＭ動作パラメータに変更が必要であったと判定された場合、前記少なくとも１つのＮＶＭ動作パラメータに前記変更を含めるように前記正常性情報を更新するステップと、
前記更新した正常性情報及び前記アドレスを前記ホスト装置に送信するステップと、をさらに含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記少なくとも１つのＮＶＭ動作パラメータが、誤り訂正符号（ＥＣＣ）パラメータを含む、ことを特徴とする請求項９に記載の方法。
【請求項１２】
前記少なくとも１つのＮＶＭ動作パラメータが、読み取りパラメータを含む、ことを特徴とする請求項９に記載の方法。
【請求項１３】
前記少なくとも１つのＮＶＭ動作パラメータが、プログラムパラメータを含む、ことを特徴とする請求項９に記載の方法。
【請求項１４】
前記アクセス要求が、読み取り要求又はプログラム要求である、ことを特徴とする請求項９に記載の方法。
【請求項１５】
ホストと通信するためのインターフェイスと、
不揮発性メモリ（ＮＶＭ）と、
前記インターフェイス及び前記ＮＶＭに結合されたコントローラと、を含み、
前記コントローラが、
前記インターフェイスから、アクセス要求、アドレス及び正常性情報を含むコマンドを受け取り、前記正常性情報は、前記アドレスに関連する前記ＮＶＭの少なくとも一部の劣化の可能性を示す情報を含み、
前記正常性情報を処理して少なくとも１つのＮＶＭ動作パラメータを取得し、
前記少なくとも１つのＮＶＭ動作パラメータに従って前記アクセス要求を実行する、ことを特徴とする不揮発性メモリパッケージ。
【請求項１６】
前記コントローラが、さらに、
前記アクセス要求を実行するために前記少なくとも１つのＮＶＭ動作パラメータに変更が必要であったかどうかを判定し、
前記アクセス要求を実行するために前記少なくとも１つのＮＶＭ動作パラメータに変更が必要であったと判定された場合、前記少なくとも１つのＮＶＭ動作パラメータに前記変更を含めるように前記正常性情報を更新し、
前記更新した正常性情報及び前記アドレスを前記インターフェイスに送信する、ことを特徴とする請求項１５に記載の不揮発性メモリパッケージ。
【請求項１７】
前記少なくとも１つのＮＶＭ動作パラメータが、誤り訂正符号（ＥＣＣ）パラメータを含む、ことを特徴とする請求項１５に記載の不揮発性メモリパッケージ。
【請求項１８】
前記少なくとも１つのＮＶＭ動作パラメータが、読み取りパラメータを含む、ことを特徴とする請求項１５に記載の不揮発性メモリパッケージ。
【請求項１９】
前記少なくとも１つのＮＶＭ動作パラメータが、プログラムパラメータを含む、ことを特徴とする請求項１５に記載の不揮発性メモリパッケージ。
【請求項２０】
前記コントローラに結合された誤り訂正符号（ＥＣＣ）エンジンをさらに含み、前記コントローラが、前記ＥＣＣエンジンに前記ＥＣＣパラメータを使用するように指示する、ことを特徴とする請求項１７に記載の不揮発性メモリパッケージ。
【発明の詳細な説明】
【技術分野】
【０００１】
本文献は、不揮発性メモリの正常性（health）情報を取得して使用するためのシステム及び方法に関する。
【背景技術】
【０００２】
大容量記憶装置には、フラッシュメモリ（例えば、ＮＡＮＤフラッシュメモリ及びＮＯＲフラッシュメモリ）などの、様々な種類の不揮発性メモリ（「ＮＶＭ」）を使用することができる。例えば、（ポータブルメディアプレーヤなどの）消費者向け電子機器は、音楽、ビデオ、画像、及びその他のメディア又はタイプの情報を含むデータを記憶するためにフラッシュメモリを使用する。
【０００３】
一部のフラッシュメモリシステムでは、ホストシステムが論理ブロックアドレス（ＬＢＡ）の読み取り動作及びプログラム動作を要求し、このＬＢＡがフラッシュメモリの物理ブロックアドレスにマッピング又は変換される。このマッピングにより、ホストオペレーティングシステムが、ディスクドライブと同様の方法でフラッシュメモリにアクセスできるようになる。フラッシュメモリは、ランダムアクセス方式で一度に１バイト又は１ワードを読み取り又はプログラムすることができるが、通常は一度に１ブロックが消去される。新たに消去されたブロックから開始して、このブロック内のあらゆるバイトをプログラムすることができる。バイトは、一旦プログラムされると、通常はブロック全体が消去されるまで再プログラムすることができない。フラッシュメモリの消去プログラムのサイクル数には限りがあるので、フラッシュメモリの寿命を引き延ばすには、消去プログラムのサイクル数を最小にすることが望ましい。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述したフラッシュメモリの固有の特性を背景として、フラッシュメモリ及びその他のＮＶＭの正常性情報を効率的に取得して使用できるシステム、方法及び装置が必要とされている。
【課題を解決するための手段】
【０００５】
不揮発性フラッシュメモリ（ＮＶＭ）の正常性（health）情報を取得して使用するためのシステム及び方法を開示する。本発明の実施形態は、ホスト及び不揮発性メモリパッケージを有するシステムで動作することができる。ホストは揮発性メモリを含み、論理対物理マッピングの維持、プログラムの発行、ＮＶＭパッケージに対するコマンドの読み取り又は消去、及びウェアレベリング及びガベージコレクションの実行などの不揮発性メモリの機能を実行することができる。ホストは、本発明の実施形態による正常性データベースを維持することもできる。ＮＶＭパッケージは、ホストに通信可能に結合され、メモリコントローラ及び（ＮＡＮＤフラッシュなどの）不揮発性メモリを含むことができる。いくつかの実施形態では、ＮＶＭパッケージが、誤り訂正符号エンジンを含むこともできる。
【０００６】
正常性データベースは、ＮＶＭに関する情報を記憶することができる。すなわち、ＮＶＭ内の（ページ又はブロックなどの）物理的位置ごとに、この物理的位置に特有の正常性情報がデータベースに記憶される。データベースに記憶される正常性情報は、ＮＶＭの特定のアドレス位置にアクセスするために使用する様々なソフトウェア及び／又はハードウェアパラメータを指定するアドレス固有の正常性情報とすることができる。正常性情報は、例えば、ページの正確性、閾値電圧、読み取り、プログラム及び消去を行うために必要なサイクル時間及び／又はサイクル数、使用する誤り訂正符号などを含むことができる。正常性情報は、メモリコントローラにより生成することができるが、ホストによって保持されるデータベースに記憶される。正常性情報をホスト上に記憶することはできるが、ホストは、ＮＶＭを管理するために正常性情報を解釈し、修正し、又は使用することは決してない。
【０００７】
ホストは、ＮＶＭにアクセスしたいと望む場合、（読み取りコマンド又はプログラムコマンドなどの）アクセスコマンド、アドレス及びアドレス固有の正常性情報を含むコマンドパケットを構築し、このコマンドパケットをメモリコントローラに提供することができる。ホストは、正常性情報データベースにアクセスして、コマンドパケットに含めるためのアドレスに基づいてアドレス固有の正常性情報を取り出す。メモリコントローラは、コマンドパケットを受け取ると正常性情報を抽出し、ＮＶＭ内のアクセスされる物理的位置に対して指定されたソフトウェア及び／又はハードウェアパラメータに従ってアクセス要求を実行することができる。
【０００８】
コマンドが実行された後、メモリコントローラは、アクセス要求を実行するために１又はそれ以上の動作パラメータに変更が必要であったかどうかを判定することができる。変更が必要であった場合、メモリコントローラは正常性情報を更新し、この更新した正常性情報及びＮＶＭアドレスをホスト装置へ送信することができる。その後、ホストは、更新した正常性情報をデータベースに記憶することができる。
【０００９】
全体を通じて同じ参照番号が同じ部分を示す添付図面とともに以下の詳細な説明を検討すれば、本発明の上記の及びその他の態様、その特質及び様々な特徴がより明らかになるであろう。
【図面の簡単な説明】
【００１０】
【図１】本発明の様々な実施形態による、ホストとメモリコントローラを有するＮＶＭパッケージとを含む例示的なシステムを示す図である。
【図２】本発明の様々な実施形態による例示的なシステムを示す図である。
【図３】本発明の様々な実施形態による例示的なデータ構造を示す図である。
【図４】本発明のいくつかの実施形態による、正常性情報を取得して使用する例示的な処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
図１は、ＮＶＭパッケージ１０４及びホスト１０２を含むシステム１００を示す図である。ホスト１０２は、メモリコントローラ１０６と、ホストインターフェイス１１０と、対応するＮＶＭｓ１２８ａ〜ｎを有するメモリチップ１１２ａ〜ｎとを含むことができるＮＶＭパッケージ１０４に正常性情報を提供するように構成することができる。例えば、システム例１００に示すように、ホスト１０２は、ＮＶＭパッケージ１０４に正常性情報を提供することができ、ＮＶＭパッケージ１０４は、この正常性情報を使用して（読み取り動作、プログラム動作、消去動作などの）アクセス要求及び（ウェアレベリング及びガベージコレクションなどの）メモリ管理機能を実行し、これによりシステム１００の性能、信頼性及び／又は電力使用を改善することができる。ＮＶＭパッケージ１０４は正常性情報を更新し、これをホスト１０２に戻して正常性情報データベースに記憶されるようにすることもできる。
【００１２】
ホスト１０２は、ポータブルメディアプレーヤ、携帯電話機、ポケットサイズパーソナルコンピュータ、携帯情報端末（「ＰＤＡ」）、デスクトップコンピュータ、ラップトップコンピュータ、及び／又はタブレットコンピュータ装置などの様々なホスト装置及び／又はシステムのいずれかとすることができる。ＮＶＭパッケージ１０４は、（例えば、メモリチップ１１２ａ〜ｎ内に）ＮＶＭ１２８ａ〜ｎを含むことができ、ボールグリッドアレイパッケージ又はその他の好適な種類の集積回路（「ＩＣ」）パッケージとすることができる。ＮＶＭパッケージ１０４は、ホスト１０２の一部であっても、及び／又はこれとは別個のものであってもよい。例えば、ホスト１０２を基板レベルの装置とし、ＮＶＭパッケージ１０４を、この基板レベルの装置上に取り付けられたメモリサブシステムとすることができる。他の実施形態では、ＮＶＭパッケージ１０４を、（ＳＡＴＡなどの）有線インターフェイス又は（Ｂｌｕｅｔｏｏｔｈ（登録商標）などの）無線インターフェイスを使用してホスト１０２に結合することができる。
【００１３】
ホスト１０２は、ＮＶＭパッケージ１０４と相互作用するように構成されたホストコントローラ１１４を含むことができる。例えば、ホスト１０２は、読み取り動作、プログラム動作及び消去動作などの様々なアクセス要求をＮＶＭパッケージ１０４に送信することができる。ホストコントローラ１１４は、ソフトウェア及び／又はファームウェア命令の実行に基づいて動作を行うように構成された１又はそれ以上のプロセッサ及び／又はマイクロプロセッサを含むことができる。これに加えて及び／又はこれとは別に、ホストコントローラ１１４は、様々な動作を行うように構成された特定用途向け集積回路（「ＡＳＩＣ」）などのハードウェアベースの構成要素を含むこともできる。ホストコントローラ１１４は、ＮＶＭパッケージ１０４に送信する（コマンド、データなどの）情報を、ホスト１０２とＮＶＭパッケージ１０４の間で共用される通信プロトコルに従ってフォーマットすることができる。
【００１４】
ホスト１０２は、揮発性メモリ１０８を含む記憶要素１３４を含むことができる。揮発性メモリ１０８は、キャッシュメモリ又はＲＡＭなどの様々な揮発性メモリタイプのいずれかとすることができる。ホスト１０２は、揮発性メモリ１０８を使用して、メモリ動作を実行し、及び／又はＮＶＭパッケージ１０４から読み取っている及び／又はＮＶＭパッケージ１０４に書き込んでいるデータを一時的に記憶することができる。例えば、揮発性メモリ１０８は、ＮＶＭパッケージ１０４に送信するメモリ動作の待ち行列を一時的に記憶すること、又はＮＶＭパッケージ１０４から受け取ったデータを記憶することができる。また、揮発性メモリ１０８は、本発明の実施形態による正常性情報データベースを記憶することもできる。ホストコントローラ１１４は、正常性情報データベースにアクセスして、メモリコントローラ１０６に出すコマンドに含めるためのアドレス固有の正常性情報を取り出すことができる。十分な量の揮発性メモリをＮＶＭパッケージ１０４内に保持するとコストが掛かり過ぎるので、ＮＶＭパッケージ１０４上の揮発性メモリとは対照的に、一般的にはホスト１０２上の揮発性メモリ内に正常性情報データベースを保持することが必要である。
【００１５】
ホスト１０２は、通信チャネル１１６を介して、ホストインターフェイス１１０及びメモリコントローラ１０６を使用してＮＶＭパッケージ１０４と通信することができる。通信チャネル１１６は、双方向通信に適したいずれのバスであってもよい。通信チャネル１１６は、固定式であっても、着脱式であっても、又は無線方式であってもよい。例えば、通信チャネル１１６は、ユニバーサルシリアルバス（ＵＳＢ）、シリアルアドバンスドテクノロジ（ＳＡＴＡ）バス、又はその他のあらゆる好適なバスとすることができる。
【００１６】
メモリコントローラ１０６は、ソフトウェア命令及び／又はファームウェア命令の実行に基づいて動作を行うように構成された１又はそれ以上のプロセッサ及び／又はマイクロプロセッサ１２０を含むことができる。これに加えて及び／又はこれとは別に、メモリコントローラ１０６は、様々な動作を行うように構成されたＡＳＩＣなどのハードウェアベースの構成要素を含むこともできる。メモリコントローラ１０６は、ホスト１０２によって出されたコマンドを実行することなどの様々な動作を行うことができる。
【００１７】
ホストコントローラ１１４及びメモリコントローラ１０６は、単独で又は組み合わせて、ガベージコレクション及びウェアレベリングなどの様々なメモリ管理機能を実行することができる。メモリコントローラ１０６が少なくともいくつかのメモリ管理機能を実行するように構成された実施構成では、ＮＶＭパッケージ１０４を、「ｍａｎａｇｅｄ  ＮＶＭ」（又はＮＡＮＤフラッシュメモリの場合には「ｍａｎａｇｅｄ  ＮＡＮＤ」）と呼ぶことができる。これは、ＮＶＮパッケージ１０４の外部にあるホストコントローラ１１４がＮＶＭパッケージ１０４のメモリ管理機能を実行する「ｒａｗ  ＮＶＭ」（又はＮＡＮＤフラッシュメモリの場合には「ｒａｗ  ＮＡＮＤ」）とは対照的なものとすることができる。
【００１８】
いくつかの実施形態では、メモリコントローラ１０６を、メモリチップ１１２ａ〜ｎと同じパッケージに組み込むことができる。他の実施形態では、メモリコントローラ１０６を、ホスト１０２と別個の又は同じパッケージ内に物理的に配置することができる。いくつかの実施形態では、メモリコントローラ１０６を省き、通常はメモリコントローラ１０６によって行われる（ガベージコレクション及びウェアレベリングなどの）全てのメモリ管理機能を（ホストコントローラ１１４などの）ホストコントローラによって行うことができる。
【００１９】
メモリコントローラ１０６は、揮発性メモリ１２２を含むことができる。揮発性メモリ１２２は、キャッシュメモリ又はＲＡＭなどの様々な揮発性メモリタイプのいずれかとすることができる。メモリコントローラ１０６は、揮発性メモリ１２２を使用して、アクセス要求を実行し、及び／又はメモリチップ１１２ａ〜ｎ内のＮＶＭ１２８ａ〜ｎから読み取っているデータ及びここに書き込んでいるデータを一時的に記憶することができる。例えば、揮発性メモリ１２２はファームウェアを記憶することができ、メモリコントローラ１０６は、このファームウェアを使用して、ＮＶＭパッケージ１０４上の（読み取り／プログラム動作などの）動作を行うことができる。揮発性メモリ１２２は、ＮＶＭパッケージ１０４内のＮＶＭに関連する正常性情報を一時的に記憶することもできる。メモリコントローラ１０６は、ＮＶＭ１２８ａ〜ｎを使用して、デバッグログ、命令、及びＮＶＭパッケージ１０４が動作するために使用するファームウェアなどの様々な情報を永続的に記憶することができる。
【００２０】
メモリコントローラ１０６は、永続的データ記憶に使用できるＮＶＭｓ１２８ａ〜ｎに、共有内部バス１２６を使用してアクセスすることができる。ＮＶＭパッケージ１０４内には１つの共有内部バス１２６しか示していないが、ＮＶＭパッケージは、１つよりも多くの共有内部バスを含むことができる。各内部バスは、メモリチップ１１２ａ〜ｎに関して示すように（２個、３個、４個、８個、３２個などの）複数のメモリチップに接続することができる。メモリチップ１１２ａ〜ｎは、積層構成を含む様々な構成で物理的に配置することができ、いくつかの実施形態によれば集積回路（ＩＣ）チップとすることができる。
【００２１】
ＮＶＭ１２８ａ〜ｎは、フローティングゲート技術又は電荷トラップ技術に基づくＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、消去可能プログラム可能読み取り専用メモリ（「ＥＰＲＯＭ」）、電気的消去可能プログラム可能読み取り専用メモリ（「ＥＥＰＲＯＭ」）、強誘電性ＲＡＭ（「ＦＲＡＭ（登録商標）」）、磁気抵抗性ＲＡＭ（「ＭＲＡＭ」）、相変化メモリ（「ＰＣＭ」）などの様々なＮＶＭのいずれか、又はこれらのいずれかの組み合わせとすることができる。
【００２２】
図２は、電子装置２００のブロック図であり、この図には、様々な実施形態によるシステム１００（図１）のファームウェア、ソフトウェア及び／又はハードウェア構成要素のいくつかをより詳細に示すことができる。電子装置２００は、図１に関連して上述した特徴及び機能のいずれかを有することができ、逆もまた同様である。図示のように、破線で層の境界を定めている。どの構成要素が境界線内に入るかについての描写は例示にすぎず、１又はそれ以上の構成要素が異なる層に属することもできると理解されたい。
【００２３】
電子装置２００は、ファイルシステム２１０、ホストコントローラ２１２、ＮＶＭバスコントローラ２１６、メモリコントローラ２２０、及びＮＶＭ２３０を含むことができる。いくつかの実施形態では、ファイルシステム２１０及びホストコントローラ２１２をソフトウェア又はファームウェアモジュールとすることができ、ＮＶＭバスコントローラ２１６、メモリコントローラ２２０及びＮＶＭ２３０をハードウェアモジュールとすることができる。従って、これらの実施形態では、ホストコントローラ２１２が、ＮＶＭインターフェイス２１８のソフトウェア又はファームウェアの側面を表すことができ、ＮＶＭバスコントローラ２１６が、ＮＶＭインターフェイス２１８のハードウェアの側面を表すことができる。
【００２４】
ファイルシステム２１０は、ファイルアロケーションテーブル（「ＦＡＴ」）ファイルシステム又は階層型ファイルシステムプラス（「ＨＦＳ＋」）などのいずれかの好適な種類のファイルシステムを含むことができ、電子装置２００のオペレーティングシステムの一部（例えば、図１のＳｏＣ制御回路１１２の一部）とすることもできる。いくつかの実施形態では、ファイルシステム２１０が、ページの論理対物理マッピングを行うフラッシュファイルシステムを含むことができる。これらの実施形態では、ファイルシステム２１０が、以下で説明するホストコントローラ２１２の機能の一部又は全部を実行することができ、従ってファイルシステム２１０とホストコントローラ２１２は、別個のモジュールであっても又はそうでなくてもよい。
【００２５】
ファイルシステム２１０は、アプリケーション及びオペレーティングシステムのファイル及びフォルダ構造を管理することができる。ファイルシステム２１０は、電子装置２００上で実行されるアプリケーション又はオペレーティングシステムの制御下で動作することができ、このアプリケーション又はオペレーティングシステムが、ＮＶＭ２３０から情報を読み取ること又はＮＶＭ２３０に情報を記憶することを要求した場合、ホストコントローラ２１２に書き込み及び読み取りコマンドを提供することができる。ファイルシステム２１０は、各書き込み又は読み取りコマンドとともに、ユーザデータをどこから読み取るべきか又はどこに書き込むべきかを示すための、論理ページアドレス及びページをオフセットしたＬＢＡなどの論理アドレスを提供することができる。
【００２６】
ファイルシステム２１０は、ＮＶＭと直接的に互換性がない読み取り及び書き込み要求をホストコントローラ２１２に提供することができる。例えば、論理アドレスには、ハードドライブベースのシステムに特有の規則又はプロトコルを使用することができる。ハードドライブベースのシステムは、フラッシュメモリとは異なり、最初にブロックの消去を行わずに記憶域を上書きすることができる。さらに、ハードドライブは、装置の寿命を延ばすためにウェアレベリングを必要としなくてよい。従って、ＮＶＭインターフェイス２１８は、メモリ固有の、ベンダー固有の、又はこれらの両方のあらゆる機能を実行して、ファイルシステム要求の処理及びその他の管理機能をＮＶＭに適した形で行うことができる。
【００２７】
ホストコントローラ２１２は、トランスレーションレイヤ２１４を含むことができる。いくつかの実施形態では、トランスレーションレイヤ２１４をフラッシュトランスレーションレイヤ（「ＦＴＬ」）とすることができ、又はこのＦＴＬを含むことができる。書き込みコマンド時には、トランスレーションレイヤ２１４が、提供された論理アドレスを、ＮＶＭ上の空いている消去済みの物理的位置にマッピングすることができる。読み取りコマンド時には、トランスレーションレイヤ２１４が、提供された論理アドレスを使用して、要求されるデータが記憶されている場所の物理アドレスを特定することができる。各ＮＶＭは、ＮＶＭのサイズ又はベンダーに応じて異なるレイアウトを有することができるので、このマッピング動作は、メモリ及び／又はベンダー固有のものとなり得る。トランスレーションレイヤ２１４は、論理対物理アドレスマッピングに加え、他のあらゆる好適な機能を実行することもできる。例えば、トランスレーションレイヤ２１４は、ガベージコレクション（「ＧＣ」）及びウェアレベリングなどの、フラッシュトランスレーションレイヤに特有のものとすることができる他の機能のいずれかを実行することができる。
【００２８】
例えば、トランスレーションレイヤ２１４は、ガベージコレクションを実行して、ＮＶＭ２３０のプログラム済みブロックを消去のために解放することができる。解放され消去されると、このメモリ位置を使用して、例えばファイルシステム２１０から受け取った新たなユーザデータを記憶することができる。場合によっては、ＧＣプロセスが、プログラム済みブロックから消去済みのメモリ位置を有する別のブロックに有効なデータをコピーして、これによりプログラム済みブロック内の有効データを無効化することに関与することができる。プログラム済みブロック内のメモリ位置が全て無効になると、トランスレーションレイヤ２１４は、ＮＶＭバスコントローラ２１６に、これらのプログラム済みブロック上で消去動作を行うように指示することができる。本明細書で使用する「有効なデータ」とは、（ＬＢＡなどの）１又はそれ以上の論理アドレスに対応する直近の書き込み要求に応答してプログラムされたユーザデータを意味することができ、従って１又はそれ以上の論理アドレスに対応する有効なバージョンのユーザデータとすることができる。
【００２９】
ホストコントローラ２１２は、アドレス固有の正常性情報を記憶するための正常性データベース２１５を含むことができる。正常性データベース２１５は、ＮＶＭ２３０内の物理的位置に対応する情報の参照テーブルを含むことができる。ファイルシステム２１０が、ホストコントローラ２１２にコマンド及び論理アドレスを送ると、トランスレーションレイヤ２１４が、ＮＶＭ２３０内の物理的位置を特定し、ホストコントローラ２１２が、この物理的位置を使用して、正常性データベース２１５からアドレス固有の正常性情報を取得する。いくつかの実施形態では、ホストコントローラ２１２が、メモリコントローラ２２０に提供するコマンドパケットに、正常性データベース２１５から取得した正常性情報を含める。この実施形態では、ホストコントローラ２１２が、データ検索エージェントとして機能し、正常性情報を使用してＮＶＭの管理上の決定を行うことはない。ホストコントローラ２１２は、メモリコントローラ２２０から受け取った正常性情報を使用して正常性データベース２１５を更新することにより、データ投入エージェントとして機能することもできる。
【００３０】
メモリコントローラ２２０は、正常性情報を生成し、これを正常性データベース２１５に記憶する。この結果、メモリコントローラ２２０のみが正常性情報を解釈して使用することができる。ホストコントローラ２１２は、正常性情報をデータベース２１５に記憶することはできるが、これを使用してＮＶＭの管理上の決定を行うことはできない。
【００３１】
（図１の揮発性メモリ１０８内に存在できる）正常性データベースに記憶された正常性情報は、ＮＶＭインターフェイス２１８又はホストインターフェイス１１０の下流のソフトウェア及び／又はハードウェア構成要素が、ＮＶＭ２３０のあらゆる特定の物理的位置に対するコマンド要求をより効率的に処理できるようにする情報とすることができる。例えば、正常性情報は、例えばＮＶＭパッケージ１０４上に存在するＥＣＣエンジンがいずれの誤り訂正符号を実施すべきかを指定することができる。別の例として、正常性情報は、プログラム電圧、プログラム／検証サイクルの数、及びＮＶＭ内の特定の物理的位置に必要なプログラム分解能などの、メモリコントローラハードウェアの設定を記憶することができる。
【００３２】
正常性情報は、ＮＶＭの一部の劣化及び／又は障害の可能性を示すあらゆるデータを含むことができる。一般に、正常性情報は、ＮＶＭの効率的かつ信頼できる使用に関する決定を行うために使用できる、ＮＶＭに関するあらゆるデータを含むことができる。メモリコントローラ１０６又は２２０は、重要な性能及び較正パラメータを記憶することにより、コマンド要求を実行する方法を、不必要な待ち時間及びデータ破損を避けるように変更することができる。
【００３３】
１つの特定の例では、正常性情報を使用して、ホストにより開始される読み取り動作を事前に補正することができる。ホストは、ＮＶＭの（ブロックなどの）特定の部分の読み取り動作を開始することができる。メモリコントローラは、この読み取り動作を受け取って、ＮＶＭの（ブロック又はページなどの）物理アドレスに関連する正常性情報を調べることができる。正常性情報は、ブロックを読み取った最後の時間、及び読み取り動作に複数の読み取りサイクルが必要であったことを示すことができる。例えば、読み取り動作に８回の読み取りサイクルを要し、使用した各読み取りサイクルで徐々に読み取り条件を変更した（例えば、閾値電圧値を徐々にシフトさせた）かもしれない。この正常性情報に基づいて、メモリコントローラは、最後の既知の成功した（単複の）読み取り条件を使用して、要求される物理的位置上の読み取り動作を実行すると決定することができる。読み取り動作がうまくいった場合、メモリコントローラは、その物理的位置（ブロックなど）に関する正常性情報をそのままホストに戻すことができる。しかしながら、読み取り動作にさらなる読み取りサイクルが必要であった場合、メモリコントローラは、その物理的位置（ブロックなど）に関する正常性情報を更新し、この更新した正常性情報をホストに戻すことができる。
【００３４】
別の例では、正常性情報を使用して、ホストがプログラム動作を開始した時にＮＶＭの一部をより効率的にプログラムすることができる。（ＮＡＮＤフラッシュメモリなどの）ＮＶＭは、時間、使用（読み取り／プログラムサイクル数など）、及び動作温度とともに劣化する傾向にある。この劣化は、例えばメモリセルの閾値電圧の変位の形で表れることがある。従って、正常性情報は、ＮＶＭの一部のこれらの重要なパラメータを追跡することができる。メモリコントローラ１０６は、ＮＶＭ１２８ａ〜ｎの特定部分にデータをプログラムする要求をホスト１０２から受け取ると、このメモリ部分に関する正常性情報を参照して、プログラム済みのセルがどれほどの程度及びどれほど速く劣化しそうであるかを判断することができる。例えば、ホスト１０２が、（例えば、正常性情報内の時間、温度、及びサイクルデータによって示される）すぐに劣化しそうなメモリ部分に対してプログラム動作を開始した場合、メモリコントローラ１０６は、プログラム電圧を、予想閾値電圧ドリフトを補償するように変化させるよう決定することができる。
【００３５】
いくつかの実施形態による、取得して使用できる正常性情報のさらなる例として、ＮＶＭの一部における不良ビット数、ＤＬＬタイミング設定、及び／又はデータのプログラム又は読み取りに必要なサイクル時間又はサイクル数を反映するビット誤り率データを挙げることができる。検出されたエラーを補正するためのメモリ装置の容量を示すことができるページの正確性に関して正常性情報を蓄積することもできる。例えば、エラーの訂正に必要な誤り訂正符号（「ＥＣＣ」）サイクルの数、又は（高ビットフリップＥＣＣ、低ビットフリップＥＣＣ、ソフトウェアＥＣＣなどの）使用するＥＣＣ技術が、ＮＶＭの一部の正常性を示すことができる。
【００３６】
ホストコントローラ２１２は、（プログラム、読み取り及び消去コマンドなどの）ＮＶＭアクセスコマンドを完了するために、ＮＶＭバスコントローラ２１６と相互連結することができる。ＮＶＭバスコントローラ２１６は、メモリコントローラ２２０へのハードウェアインターフェイスとして機能し、バスプロトコル、データ転送率及びその他の仕様を使用してメモリコントローラ２２０と通信することができる。
【００３７】
ＮＶＭインターフェイス２１８は、本明細書では「メタデータ」と呼ぶこともあるメモリ管理データに基づいてＮＶＭ２３０を管理することができる。このメタデータは、ホストコントローラ２１２によって生成することも、又はホストコントローラ２１２の制御下で動作するモジュールによって生成することもできる。例えば、メタデータは、論理アドレスと物理アドレスの間のマッピング、不良ブロック管理、ウェアレベリング、データエラーを検出又は訂正するために使用する誤り訂正符号（「ＥＣＣ」）データ、又はこれらのいずれかの組み合わせを管理するために使用するあらゆる情報を含むことができる。メタデータは、ファイルシステム２１０により提供されるデータ、及び論理アドレスなどのユーザデータを含むことができる。従って、一般に「メタデータ」は、ユーザデータについての又はユーザデータに関する、或いは不揮発メモリの動作及びメモリ位置を管理するために一般的に使用されるあらゆる情報を意味することができる。いくつかの実施形態では、メタデータ及び正常性情報が互いに排他的である。
【００３８】
ＮＶＭインターフェイス２１８は、ＮＶＭ２３０にメタデータを記憶するように構成することができる。いくつかの実施形態では、ＮＶＭインターフェイス２１８が、ユーザデータに関連するメタデータを、ユーザデータが記憶されているメモリ位置と同じメモリ位置（ページなど）に記憶することができる。例えば、ＮＶＭインターフェイス２１８は、ユーザデータ、その関連する論理アドレス、及びユーザデータのためのＥＣＣデータをＮＶＭ２３０の１又はそれ以上のメモリ位置に記憶することができる。ＮＶＭインターフェイス２１８は、ユーザデータに関する他の種類のメタデータを同じメモリ位置に記憶することもできる。
【００３９】
ＮＶＭインターフェイス２１８は、ＮＶＭ２３０に正常性情報を記憶することもできる。ＮＶＭインターフェイス２１８は、正常性データベース２１５のコンテンツをＮＶＭ２３０に定期的に、又は電源切断イベント中（例えば装置をオフにした時）に記憶することができる。ＮＶＭ２３０に正常性情報を記憶した場合、電源投入中にこの情報を取り出して正常性データベース２１５に投入することができる。
【００４０】
ＮＶＭインターフェイス２１８は論理アドレスを記憶して、ＮＶＭ２３０の電源投入時又はＮＶＭ２３０の動作中に、電子装置２００がその位置にどのようなデータが存在するかを判断できるようにすることができる。具体的に言えば、ファイルシステム２１０は、ユーザデータをその物理的位置ではなくその論理的位置に従って参照できるので、ＮＶＭインターフェイス２１８は、ユーザデータと論理アドレスをともに記憶してこれらの関連性を維持することができる。このようにして、たとえＮＶＭ２３０内の物理対論理マッピングを維持するインデックステーブルが期限切れになっても、ＮＶＭインターフェイス２１８は、例えば電子装置２００の電源投入時又は再起動時に依然として正しいマッピングを判断することができる。
【００４１】
図３は、（図１のホスト１０２などの）ホスト装置と（図１のメモリコントローラ１０６などの）メモリコントローラの間で転送できるコマンドパケット３００の例示的な図である。コマンドパケット３００は、コマンドアクセス要求３３１、アドレス３３３、正常性情報３３５、データ３３７、及びメタデータ３３９を含むことができる。コマンドアクセス要求３３１は、例えば読み取り要求、プログラム要求又は消去要求などの、ホスト装置によってメモリコントローラに提供されるあらゆる好適な命令とすることができる。アドレス３３３は、アクセスされるＮＶＭ内の（単複の）物理アドレスとすることができる。例えば、この（単複の）アドレスは、（トランスレーションレイヤ２１４などの）トランスレーションレイヤから導出することができる。
【００４２】
コマンドパケットは、正常性情報３３５を含むこともできる。正常性情報３３５は、アドレス３３３に関連付けることができ、従って本明細書ではアドレス固有の正常性情報と呼ぶことができる。ホストコントローラは、このアドレス固有の正常性情報を（正常性データベース２１５などの）正常性データベースから取り出して、これをコマンドパケット３００に含めることができる。メモリコントローラは、コマンドパケット３００を受け取ると、正常性情報３３５を抽出し、これを処理し、これに応じてコマンドアクセス要求３３１を実行することができる。いくつかの実施形態によれば、正常性情報３３５が、ページの正確性、閾値電圧、ＮＶＭの該当部分を読み取り、プログラムし、又は消去するために必要なサイクル時間及び／又はサイクル数などの、アドレス固有のＮＶＭ正常性インジケータを含むことができる。他の実施形態では、正常性情報３３５を正常性等級とすることができ、この正常性等級は、個々のＮＶＭ正常性インジケータから計算したＮＶＭの一般化した正常性指示とすることができる。正常性情報３３５は、メモリコントローラ２２０に特有のものとすることができ、従ってメモリコントローラのみがこれを解釈して使用することができる。従って、どのメーカーがメモリコントローラ及びＮＶＭを生産したかに関わらず、メモリコントローラは、コマンドパケット３００に含まれる正常性情報を受け取り、これを処理して使用することができる。さらに、ホストコントローラは、正常性情報の内容については全く知ることができない。
【００４３】
データ構造３３０は、データ３３７及びメタデータ３３９を含むこともできる。例えば、アクセス要求がプログラム要求である場合、データ３３７は、ＮＶＭに対してプログラムされたデータであることができる。データ３３７は、あらゆる好適な種類のデータとすることができる。ホスト装置がメディアプレーヤである実施形態では、データ３３７が、（楽曲、ビデオ、画像、ｅブックなどの）１又はそれ以上のメディアファイルを表すことができる。メタデータ３３９は、論理アドレスと物理アドレスの間のマッピング管理、不良ブロック管理、ウェアレベリング、データエラーを検出して補正するために使用される誤り訂正符号（「ＥＣＣ」）データ、又はこれらのいずれかの組み合わせを管理するために使用されるあらゆる情報を含むことができる。
【００４４】
例示的なコマンドプログラム要求では、メモリコントローラが、最初のバスサイクルで（図１の通信チャネル１１６などの）通信チャネルを介してホスト装置からプログラムコマンドパケットを受け取り、これをコマンドレジスタ（揮発性メモリ１２２など）に記憶することができる。次に、１又はそれ以上のバスサイクルを使用して、揮発性メモリのアドレスレジスタにアドレス３３３を入力することができる。次に、ページバッファ内にデータ３３７及びメタデータ３３９をロードして、アドレスレジスタに記憶されたＮＶＭのアドレスにプログラムすることができる。
【００４５】
例示的なコマンド読み取り要求では、メモリコントローラが、最初のバスサイクルで通信チャネルを介してホスト装置からコマンド読み取りパケットを取り出してコマンドレジスタに記憶することができる。１又はそれ以上のバスサイクルを使用して、アドレスレジスタにアドレス３３３を入力することができる。次に、ＮＶＭのアドレス３３３に記憶されたデータをページバッファに転送し、バスの準備ができたらホストに転送することができる。
【００４６】
図４は、本発明の実施形態による、システムが正常性情報をどのように使用するかについてのステップを示す例示的なフローチャートである。このシステムは、とりわけ（ホスト１０２などの）ホスト装置、（メモリコントローラ１０６などの）メモリコントローラ、及び（ＮＶＭ１２８などの）ＮＶＭを含むことができる。ステップ４１０において、ＮＶＭの正常性情報データベースが少なくとも１つの記憶要素内に保持される。この少なくとも１つの記憶要素は、ホスト装置に付随する揮発性メモリとすることができる。正常性情報データベースは、物理アドレス固有の正常性情報を記憶する。
【００４７】
ステップ４２０において、メモリコントローラにコマンドが提供され、各コマンドは、コマンドアクセス要求、アドレス、及びアドレス固有の正常性情報を含む。ホスト装置は、（トランスレーションレイヤ２１４などの）トランスレーションレイヤから物理アドレスを取得することによってコマンドをパッケージ化し、この物理アドレスを使用して正常性情報データベースからアドレス固有の正常性情報を取り出すことができる。このホストにより編成されるコマンドパケットは、図３に関連して上述したコマンドパケットと同様のものとすることができる。
【００４８】
ステップ４３０において、メモリコントローラが、コマンドからアドレス固有の正常性情報を抽出することができる。ステップ４４０において、メモリコントローラが、このアドレス固有の正常性情報に従ってアクセス要求を実行することができる。例えば、メモリコントローラは、ＮＶＭの物理アドレスに対するコマンドを実行する際に、アドレス固有の正常性情報内に存在するあらゆるハードウェア及び／又はソフトウェアパラメータを考慮する。プログラムコマンドが実行されている場合、正常性情報は、プログラミングをどれほど細かく調整すべきかを指定することができ、又は所与の位置に関するプログラム時間又は最終的なプログラム電圧レベルをどのようにすべきかを指定することができる。コントローラは、この情報を使用して、その意図される位置に最も適した形でデータをプログラムすることができる。
【００４９】
ステップ４５０において、アドレス固有の正常性情報に従ってアクセス要求が実行されたかどうかを判定する。アドレス固有の正常性情報に従ってアクセス要求が実行された場合、プロセスはステップ４８０において終了する。アドレス固有の正常性情報に従ってアクセス要求が実行されなかった場合、プロセスはステップ４６０へ進む。例えば、アドレス固有の正常性情報に含まれているパラメータとは異なるソフトウェア及び／又はハードウェアパラメータがアクセス要求の実行に必要な場合に、プロセスはステップ４６０へ進むことができる。例えば、メモリコントローラは、使用した実際のパラメータを正常性情報が示唆するパラメータと比較することができる。
【００５０】
ステップ４６０において、メモリコントローラは、変更した（単複の）パラメータをパケット内にパッケージ化することによって正常性情報を更新し、これをホスト装置に提供することができる。パケットは、アドレス及び更新済みの正常性情報を含むことができる。ステップ４７０において、ホスト装置は、メモリコントローラから受け取った変更済みの（単複の）パラメータを使用して、正常性情報データベース内の正常性情報を更新することができる。
【００５１】
図４に示すステップは例示にすぎず、既存のステップを修正又は省略すること、追加のステップを加えること、いくつかのステップの順序を変更することができると理解されたい。
【００５２】
不揮発性メモリの正常性情報を取得して使用するためのシステム及び方法について説明したが、本発明の思想及び範囲から逸脱することなく多くの変更を行うことができると理解されたい。既知のものではなくすなわち後から考案される、当業者から見た本主題からのわずかな変化も、同等に特許請求の範囲に含まれることが明確に企図される。従って、現在当業者に公知の、及び将来的に当業者に知られる明白な置換は、規定の構成要素の範囲に含まれると定義される。
【００５３】
説明した本発明の実施形態は、限定ではなく例示目的で示したものである。
【図１】
0005749237.tif 000002
【図２】
0005749237.tif 000003
【図３】
0005749237.tif 000004
【図４】
0005749237.tif 000005