(57)【特許請求の範囲】
【請求項１】
データ記憶についての方法であって、
ホストと、前記ホストとは別個であり、前記ホストのためにデータを不揮発性メモリに記憶するメモリコントローラとを含むシステムにおいて、コンパクションのために前記不揮発性メモリからの１つ以上のソースブロックを前記メモリコントローラから前記ホストに、転送することと、
前記ソースブロックから１つ以上の宛先ブロックに有効データをコピーすることによって、前記ホスト内で前記ソースブロックをコンパクションすることと、
前記ホストから前記メモリコントローラに前記宛先ブロックを転送することと、
前記メモリコントローラによって、前記宛先ブロックを前記不揮発性メモリに記憶すること、を含み、
前記１つ以上のソースブロックを前記メモリコントローラから前記ホストに転送することは、
ハードウェア信号を使用して、前記メモリコントローラが、前記ホストに前記メモリコントローラと情報を交換する要求を送信することと、
前記要求に応じて、前記ホストへ少なくとも１つのソースブロックの交換を開始することを含む
ことを特徴とする方法。
【請求項２】
前記ソースブロックを転送することが、前記ソースブロックを前記ホストのランダムアクセスメモリ（ＲＡＭ）に記憶することを含み、
前記ソースブロックをコンパクションすることが、前記ホストのプロセッサを使用して前記宛先ブロックを生成することと、前記宛先ブロックを前記ＲＡＭに記憶することとを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記有効データをコピーすることが、前記ソースブロックからの読み出し動作の第１のシーケンスを実行し、次いで、前記宛先ブロックへの書き込み動作の第２のシーケンスを実行することを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記宛先ブロックを記憶することが、前記不揮発性メモリ中の前記宛先ブロックのそれぞれの物理的記憶位置を指示するために、論理−物理アドレスマッピングを更新することを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記ソースブロックを転送することが、前記有効データを識別する指示を前記ホストに送信することを含み、前記ソースブロックをコンパクションすることが、前記指示に基づいて、前記ソースブロックから前記有効データを読み出すことを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記ソースブロックを転送することが、前記有効データのみを前記ソースブロックから前記ホストに送信することを含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記ソースブロック及び前記宛先ブロックを転送することが、前記メモリコントローラと前記ホストとの間でメモリアクセスコマンドを交換するために使用される第２の物理インタフェースとは別個の第１の物理インタフェースを介して、前記ソースブロック及び前記宛先ブロックを送信することを含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記ソースブロック及び前記宛先ブロックを転送することが、前記ソースブロック及び前記宛先ブロックの転送に関する何れの動作も前記ホストが実行することなく、前記メモリコントローラによって前記ソースブロックを送信することと前記宛先ブロックをフェッチすることとを含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記ソースブロック及び前記宛先ブロックを転送することが、前記メモリコントローラと前記ホストとの間でメモリアクセスコマンドを交換するためにも使用される共通物理インタフェースを介して、前記ソースブロック及び前記宛先ブロックを送信することを含むことを特徴とする請求項１に記載の方法。
【請求項１０】
不揮発性メモリと通信するように構成される第１のインタフェースと、
ホストと通信するように構成される第２のインタフェースと、
コンパクションのために前記不揮発性メモリから前記ホストに１つ以上のソースブロックを転送し、前記ソースブロックから宛先ブロックに有効データをコピーすることによって前記ホスト内で生成された１つ以上の宛先ブロックを前記ホストから受信し、前記宛先ブロックを前記不揮発性メモリに記憶するように構成されるプロセッサと、を備え、
前記１つ以上のソースブロックを前記ホストへ転送するために、前記プロセッサは更に、
ハードウェア信号を使用して、前記プロセッサと情報を交換するために前記ホストへ要求を送信し、
前記要求に応じて、前記ホストへ少なくとも１つのソースブロックの交換を開始する
ことを特徴とするデータ記憶装置。
【請求項１１】
前記プロセッサが更に、前記不揮発性メモリ中の前記宛先ブロックのそれぞれの物理的記憶位置を指示するために論理−物理アドレスマッピングを更新するように構成されることを特徴とする請求項１０に記載のデータ記憶装置。
【請求項１２】
前記有効データをコピーするために、前記プロセッサが更に、前記ソースブロックからの読み出し動作の第１のシーケンスを実行し、次いで、前記宛先ブロックへの書き込み動作の第２のシーケンスを実行するように構成されることを特徴とする請求項１０に記載のデータ記憶装置。
【請求項１３】
前記プロセッサが更に、前記有効データを識別する指示を前記ホストに送信し、それにより、前記ホストが、前記指示に基づいて前記ソースブロックから前記有効データを読み出すことが可能になるように構成されることを特徴とする請求項１０に記載のデータ記憶装置。
【請求項１４】
前記プロセッサが更に、前記ソースブロックから前記有効データのみを前記ホストに送信するように構成されることを特徴とする請求項１０に記載のデータ記憶装置。
【請求項１５】
前記プロセッサが更に、前記ホストとメモリアクセスを交換するために使用される第２の物理インタフェースとは別個の第１の物理インタフェースを介して、前記ソースブロック及び前記宛先ブロックを転送するように構成されることを特徴とする請求項１０に記載のデータ記憶装置。
【請求項１６】
前記プロセッサが更に、前記ソースブロック及び前記宛先ブロックの転送に関する何れの動作も前記ホストが実行することなく、前記ソースブロックを送信し前記宛先ブロックをフェッチするように構成されることを特徴とする請求項１０に記載のデータ記憶装置。
【請求項１７】
前記プロセッサが更に、前記プロセッサと前記ホストとの間でメモリアクセスコマンドを交換するためにも使用される共通物理インタフェースを介して、前記ソースブロック及び前記宛先ブロックを転送するように構成されることを特徴とする請求項１０に記載のデータ記憶装置。
【請求項１８】
複数のメモリブロックを備える不揮発性メモリと、
コンパクションのために前記不揮発性メモリの１つ以上のソースブロックを受信し、前記ソースブロックから１つ以上の宛先ブロックに有効データをコピーすることによって、前記ソースブロックをコンパクションするように構成されるホストと、
コンパクションのために前記ソースブロックを選択し、
前記ソースブロックを前記ホストに転送し、
前記ホストから前記宛先ブロックを受信し、
前記宛先ブロックを前記不揮発性メモリに記憶するように構成されるメモリコントローラと、を備え、
前記ソースブロックを前記ホストへ転送するために、前記メモリコントローラは更に、
ハードウェア信号を使用して、前記メモリコントローラと情報を交換するために前記ホストへ要求を送信し、
前記要求に応じて、前記ホストへ少なくとも１つのソースブロックの交換を開始することを含む
ことを特徴とするシステム。
【請求項１９】
前記有効データをコピーするために、前記ホストが更に、前記ソースブロックからの読み出し動作の第１のシーケンスを実行し、次いで、前記宛先ブロックへの書き込み動作の第２のシーケンスを実行するように構成されることを特徴とする請求項１８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的に、データ記憶に関し、特に、ホストシステムリソースを使用するメモリコントローラに関する。
【背景技術】
【０００２】
フラッシュメモリなどのいくつかの種類のメモリデバイスは、データを記憶するためにアナログメモリセルのアレイを使用する。各アナログメモリセルは、電荷又は電圧など、記憶値とも呼ばれるアナログ値の量を記憶する。このアナログ値は、セルに記憶された情報を表す。例えば、フラッシュメモリでは、各アナログメモリセルは、特定量の電荷を保持する。可能なアナログ値の範囲は、典型的には区間に分割され、各区間が１つ以上のデータビット値に対応する。所望のビットに対応する公称アナログ値を書き込むことによって、アナログメモリセルにデータが書き込まれる。
【０００３】
シングルレベルセル（ＳＬＣ）デバイスと一般に呼ばれるいくつかのメモリデバイスは、各メモリセルにシングルビットの情報を記憶し、すなわち、各メモリセルは、２つの可能なプログラミングレベルをとるようにプログラムすることができる。マルチレベルセル（ＭＬＣ）デバイスとしばしば呼ばれるより高密度のデバイスは、メモリセル当たり２ビット以上を記憶し、すなわち、３つ以上の可能なプログラミングレベルをとるようにプログラムすることができる。
【０００４】
フラッシュメモリについては、例えば、この参照により本明細書内に組み込まれる、「Ｉｎｔｒｏｄｕｃｔｉｏｎ  ｔｏ  Ｆｌａｓｈ  Ｍｅｍｏｒｙ」，Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ＩＥＥＥ，ｖｏｌｕｍｅ  ９１，ｎｕｍｂｅｒ  ４，Ａｐｒｉｌ，２００３，ｐａｇｅｓ  ４８９−５０２の中で、Ｂｅｚ等によって説明されている。マルチレベルフラッシュセル及びそのデバイスについては、例えば、この参照により本明細書内に組み込まれる、「Ｍｕｌｔｉｌｅｖｅｌ  Ｆｌａｓｈ  Ｃｅｌｌｓ  ａｎｄ  ｔｈｅｉｒ  Ｔｒａｄｅ−Ｏｆｆｓ」，Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  １９９６  ＩＥＥＥ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｅｌｅｃｔｒｏｎ  Ｄｅｖｉｃｅｓ  Ｍｅｅｔｉｎｇ（ＩＥＤＭ），Ｎｅｗ  Ｙｏｒｋ，Ｎｅｗ  Ｙｏｒｋ，ｐａｇｅｓ  １６９−１７２の中で、Ｅｉｔａｎ等によって説明されている。この論文は、共通グランドセル、ＤＩＮＯＲセル、ＡＮＤセル、ＮＯＲセル、及びＮＡＮＤセルなどの数種類のマルチレベルフラッシュセルを比較している。
【０００５】
Ｅｉｔａｎ等は、この参照により本明細書内に組み込まれる「Ｃａｎ  ＮＲＯＭ，ａ  ２−ｂｉｔ，Ｔｒａｐｐｉｎｇ  Ｓｔｏｒａｇｅ  ＮＶＭ  Ｃｅｌｌ，Ｇｉｖｅ  ａ  Ｒｅａｌ  Ｃｈａｌｌｅｎｇｅ  ｔｏ  Ｆｌｏａｔｉｎｇ  Ｇａｔｅ  Ｃｅｌｌｓ？」，Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  １９９９  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｅｖｉｃｅｓ  ａｎｄ  Ｍａｔｅｒｉａｌｓ（ＳＳＤＭ），Ｔｏｋｙｏ，Ｊａｐａｎ，Ｓｅｐｔｅｍｂｅｒ  ２１−２４，ｐａｇｅｓ  ５２２−５２４の中で、ナイトライド（ｎｉｔｒｉｄｅ）リードオンリメモリ（ＮＲＯＭ）と呼ばれる別の種類のアナログメモリセルについて説明している。ＮＲＯＭセルはまた、この参照により本明細書内に組み込まれる、「Ａ  ５１２  Ｍｂ  ＮＲＯＭ  Ｆｌａｓｈ  Ｄａｔａ  Ｓｔｏｒａｇｅ  Ｍｅｍｏｒｙ  ｗｉｔｈ  ８  ＭＢ／ｓ  Ｄａｔａ  Ｒａｔｅ」，Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ２００２  ＩＥＥＥ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｃｉｒｃｕｉｔｓ  Ｃｏｎｆｅｒｅｎｃｅ（ＩＳＳＣＣ  ２００２），Ｓａｎ  Ｆｒａｎｃｉｓｃｏ，Ｃａｌｉｆｏｒｎｉａ，Ｆｅｂｒｕａｒｙ  ３−７，２００２，ｐａｇｅｓ  １００−１０１の中で、Ｍａａｙａｎ等によっても説明されている。その他の例示的な種類のアナログメモリセルとしては、フローティングゲート（ＦＧ）セル、強誘電体ＲＡＭ（ＦＲＡＭ）セル、磁気ＲＡＭ（ＭＲＡＭ）セル、チャージトラップ型フラッシュ（ＣＴＦ）セル及び相転移ＲＡＭ（ＰＲＡＭ。また相転移メモリ（ＰＣＭ）とも呼ぶ）セルがある。ＦＲＡＭ、ＭＲＡＭ、及びＰＲＡＭセルについては、例えば、この参照により本明細書内に組み込まれる、「Ｆｕｔｕｒｅ  Ｍｅｍｏｒｙ  Ｔｅｃｈｎｏｌｏｇｙ  ｉｎｃｌｕｄｉｎｇ  Ｅｍｅｒｇｉｎｇ  Ｎｅｗ  Ｍｅｍｏｒｉｅｓ」，Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ２４ｔｈ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｍｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ（ＭＩＥＬ），Ｎｉｓ，Ｓｅｒｂｉａ  ａｎｄ  Ｍｏｎｔｅｎｅｇｒｏ，Ｍａｙ  １６−１９，２００４，ｖｏｌｕｍｅ  １，ｐａｇｅｓ  ３７７−３８４の中で、Ｋｉｍ及びＫｏｈによって説明されている。
【発明の概要】
【０００６】
本明細書で説明する本発明の一実施形態は、ホストと、ホストとは別個であり、ホストのためにデータを不揮発性メモリに記憶するメモリコントローラとを含むシステムにおけるデータ記憶のための方法を提供する。方法は、コンパクション（ｃｏｍｐａｃｔｉｏｎ）のために不揮発性メモリからの１つ以上のソースブロックを、メモリコントローラからホストに転送することを含む。ソースブロックは、ソースブロックから１つ以上の宛先ブロックに有効データをコピーすることによって、ホスト内でコンパクションされる。宛先ブロックは、ホストからメモリコントローラに転送され、宛先ブロックは、メモリコントローラによって不揮発性メモリに記憶される。
【０００７】
いくつかの実施形態において、ソースブロックを転送することは、ソースブロックをホストのランダムアクセスメモリ（ＲＡＭ）に記憶することを含み、ソースブロックをコンパクションすることは、ホストのプロセッサを使用して宛先ブロックを生成することと、宛先ブロックをＲＡＭに記憶することとを含む。一実施形態において、有効データをコピーすることは、ソースブロックからの読み出し動作の第１のシーケンスを実行し、次いで、宛先ブロックへの書き込み動作の第２のシーケンスを実行することを含む。
【０００８】
開示する実施形態において、宛先ブロックを記憶することは、不揮発性メモリ中の宛先ブロックの対応する物理的記憶位置を指示するように、論理−物理アドレスマッピングを更新することを含む。別の実施形態では、ソースブロックを転送することは、有効データを識別する指示をホストに送信することを含み、ソースブロックをコンパクションすることは、その指示に基づいて、ソースブロックから有効データを読み出すことを含む。代替実施形態では、ソースブロックを転送することは、有効データのみをソースブロックからホストに送信することを含む。
【０００９】
別の実施形態では、ソースブロック及び宛先ブロックを転送することは、メモリコントローラとホストとの間でメモリアクセスコマンドを交換するために使用される第２の物理インタフェースとは別個の第１の物理インタフェースを介して、ソースブロック及び宛先ブロックを送信することを含む。更に別の実施形態では、ソースブロック及び宛先ブロックを転送することは、ソースブロック及び宛先ブロックの転送に関する任意の動作をホストが実行することなく、メモリコントローラによってソースブロックを送信し宛先ブロックをフェッチすることとを含む。
【００１０】
いくつかの実施形態において、ソースブロック及び宛先ブロックを転送することは、メモリコントローラとホストとの間でメモリアクセスコマンドを交換するためにも使用される共通物理インタフェースを介して、ソースブロック及び宛先ブロックを送信することを含む。共通物理インタフェースは、ＮＡＮＤインタフェース仕様、Ｍｉｃｒｏ−ＳＤ（μＳＤ）インタフェース仕様、エンベデッドマルチメディアカード（ｅＭＭＣ）インタフェース仕様、ユニバーサルフラッシュストレージ（ＵＦＳ）インタフェース仕様、シリアルＡＴＡ（ＳＡＴＡ）インタフェース仕様、ユニバーサルシリアルバス（ＵＳＢ）インタフェース仕様、又はペリフェラルコンポーネントインターコネクト（ＰＣＩ）インタフェースに準拠することができる。
【００１１】
一実施形態において、ソースブロック及び宛先ブロックを転送することは、ハードウェア信号を使用して、メモリコントローラと情報に交換するように、メモリコントローラからホストに要求を送信することと、その要求に応答して、ホストによる少なくとも１つのソースブロック又は少なくとも１つの宛先ブロックの交換を開始することとを含む。別の実施形態では、ソースブロックを転送することが、メモリコントローラからホストに送信される応答中でソースブロックを送信することを含み、宛先ブロックを転送することが、ホストからメモリコントローラに送信される１つ以上のホストコマンド中で宛先ブロックを送信することを含む。
【００１２】
更に、本発明の一実施形態に従って、第１のインタフェースと第２のインタフェースとプロセッサとを含むデータ記憶装置が提供される。第１のインタフェースは、不揮発性メモリと通信するように構成される。第２のインタフェースは、ホストと通信するように構成される。プロセッサは、コンパクションのために不揮発性メモリからホストに１つ以上のソースブロックを転送し、ソースブロックから宛先ブロックに有効データをコピーすることによってホスト内で生成された１つ以上の宛先ブロックをホストから受信し、宛先ブロックを不揮発性メモリに記憶するように構成される。
【００１３】
また、本発明の一実施形態に従って、不揮発性メモリとホストとメモリコントローラとを含むデータ記憶装置が提供される。不揮発性メモリは、複数のメモリブロックを含む。ホストは、コンパクションのために不揮発性メモリの１つ以上のソースブロックを受信し、ソースブロックから１つ以上の宛先ブロックに有効データをコピーすることによってソースブロックをコンパクションするように構成される。メモリコントローラは、コンパクションのためにソースブロックを選択し、ソースブロックをホストに転送し、ホストから宛先ブロックを受信し、宛先ブロックを不揮発性メモリに記憶するように構成される。
【００１４】
本発明は、下記の図面と併せて以下の本発明の実施形態の詳細な説明からより完全に理解できるであろう。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態に係る、データ記憶システムを模式的に示すブロック図である。
【図２】本発明の一実施形態に係る、ホストシステムリソースを使用してデータを不揮発性メモリに記憶するための方法を模式的に示すフローチャートである。
【図３】本発明の一実施形態に係る、ホストプロセッサとメモリコントローラとの間で情報を交換するための方法を模式的に示すフローチャートである。
【図４】本発明の一実施形態に係る、ホスト支援型ブロックコンパクションのための方法を模式的に示すフローチャートである。
【発明を実施するための形態】
【００１６】
概要
いくつかのデータ記憶アプリケーションにおいて、メモリコントローラは、ホストシステムに接続され、ホストシステムについてのデータを不揮発性メモリに記憶する。例えば、モバイル電話又はメディアプレーヤは、マイクロセキュアデジタル（μＳＤ）カード、エンベデッドマルチメディアカード（ｅＭＭＣ）又はユニバーサルフラッシュストレージ（ＵＦＳ）デバイスにデータを記憶することができる。パーソナルコンピュータは、ソリッドステートドライブ（ＳＳＤ）にデータを記憶することができる。多くの場合、ホストシステムは、メモリコントローラの内部リソースよりも多くのハードウェアリソース（例えば、メモリ空間及び計算能力）を有する。
【００１７】
以下に説明される本発明の実施形態は、データ記憶のための向上した方法及びシステムを提供する。これらの方法及びシステムにおいて、メモリコントローラは、記憶性能を向上させるためにホストシステムのリソースを使用する。
【００１８】
いくつかの実施形態において、メモリコントローラは、フラッシュメモリなどの不揮発性メモリに、ホストのためにデータを記憶する。更に、メモリコントローラは、不揮発性メモリのメモリブロックのコンパクションを含む、種々のメモリ管理タスクを実行する。コンパクションプロセスは、「ガベージコレクション」とも呼ばれる。コンパクションは、典型的には、有効データと無効データの両方を含む１つ以上のソースブロックを選択することと、ソースブロックから有効データのみを１つ以上の宛先ブロックにコンパクトな様式でコピーすることとを含む。ソースブロックは、その後、消去及び再使用のために利用可能である。
【００１９】
いくつかの開示された実施形態において、メモリコントローラは、コンパクションのためのソースブロックを選択し、その後、コンパクションされた宛先ブロックを不揮発性メモリに記憶するが、実際のコンパクションプロセス（すなわち、ソースブロックから宛先ブロックへの有効データのコピー）は、ホストにより実行される。この目的のために、メモリコントローラ及びホストは、それらの間でソースブロック及び宛先ブロックを転送する。
【００２０】
典型的には、ホストは、メモリコントローラよりも大きいメモリ空間と、メモリコントローラよりも高い計算能力とを有するので、ホストにコンパクションプロセスを委ねることにより、コンパクション性能が大幅に向上する。特に、メモリ空間が大きいことにより、ホストは、読み出し動作の長いシーケンスの後に書き込み動作の長いシーケンスを実行することによって、有効データをコピーすることが可能になる。この種の順次動作は、コンパクションプロセスの効率を大幅に向上させる。
【００２１】
更に、メモリ空間が大きいことにより、ホストは、多数のソースブロック及び宛先ブロックを同時に処理し、したがって、コンパクション性能を最適化することが可能になる。ホストの計算能力が高いことにより、コンパクションプロセスのレイテンシが短くなる。更に、集中的な管理タスクをホストに委ねることにより、メモリコントローラのコスト、サイズ及び電力消費の低減が可能になる。別の利益として、ホストがコンパクションプロセスを実行するので、メモリコントローラにコンパクションされたブロックを送信するときに論理アドレスを再マッピングすることができる。
【００２２】
システムの説明
図１は、本発明の一実施形態に係るデータ記憶システム２０を模式的に示すブロック図である。システム２０は、メモリシステム２２とホストシステム２４とを備える。メモリシステム２２は、ホストシステム２４から記憶のためのデータを受け入れ、それをメモリに記憶し、かつ、メモリからデータを取り出し、ホストシステムにそれを提供する。本実施例では、システム２２は、セルラー電話、メディアプレーヤ、デジタルカメラ又は他のホストのためにデータを記憶するマイクロセキュアデジタル（μＳＤ）カードを備える。しかしながら、代替実施形態では、システム２２は、任意の他の好適なアプリケーションにおいて、任意の他の好適なホストシステムとともに使用され得る。例えば、ＳＳＤにデータを記憶するモバイルコンピュータなどのコンピューティング装置の中、ＷｉＦｉ（登録商標）端末又は他の通信端末の中、全地球測位システム（ＧＰＳ）ユニット、ディスクオンキー（ＤＯＫ）デバイス、セキュアデジタル（ＳＤ）カード、マルチメディアカード（ＭＭＣ）及びエンベデッドＭＭＣ（ｅＭＭＣ）などのリムーバブルメモリモジュール、デジタルカメラ、ポータブルメディアプレーヤー（ＰＭＰ）などの音楽プレーヤ及び他のメディアプレーヤ、並びに／あるいは、データが記憶され取り出される任意の他のシステム又はデバイス、などである。
【００２３】
メモリシステム２２は、各々が複数のアナログメモリセルを備える複数のメモリデバイス２８を備える。本実施例では、デバイス２８は、不揮発性ＮＡＮＤフラッシュデバイスを備えるが、ＮＯＲフラッシュセル及びチャージトラップ型フラッシュ（ＣＴＦ）フラッシュセル、相転移ＲＡＭ（ＰＲＡＭ、相転移メモリ−ＰＣＭ−とも呼ばれる）、ナイトライドリードオンリメモリ（ＮＲＯＭ）、強誘電体ＲＡＭ（ＦＲＡＭ）、及び／又は、磁気ＲＡＭ（ＭＲＡＭ）などの任意の他の好適なメモリ種類も使用することができる。
【００２４】
本特許出願の文脈及び特許請求の範囲において、「アナログメモリセル」という用語は、電圧又は電荷などの物理パラメータの連続的なアナログ値を保持する任意のメモリセルについて説明するために使用される。上記に列挙した種類などの任意の好適な種類のアナログメモリセルを使用することができる。本実施例では、各メモリデバイス２８は、ＮＡＮＤフラッシュセルの不揮発性メモリを備える。本明細書では、セルに記憶された電荷レベル、並びに／あるいはセルに書き込まれ、そこから読み出されるアナログ電圧又は電流を、アナログ値又は記憶値と総称する。本明細書で説明する実施形態は、主に、しきい値電圧を対象とするが、本明細書で説明する方法及びシステムは、任意の他の好適な種類の記憶値とともに使用してもよい。
【００２５】
システム２２は、プログラミングレベルとも呼ばれる対応するメモリ状態をとるようにセルをプログラムすることによって、アナログメモリセルにデータを記憶する。プログラミングレベルは、とり得るレベルの有限のセットから選択され、各レベルは、特定の公称記憶値に対応する。例えば、２ビット／セルのＭＬＣは、４つのとり得る公称記憶値のうちの１つをセルに書き込むことよって、４つのとり得るプログラミングレベルのうちの１つをとるようにプログラムすることができる。メモリセルは、典型的には、行及び列に配列される。典型的には、所与のメモリデバイスは、（メモリブロックとも呼ばれる）複数の消去ブロック、すなわち、一緒に消去されるメモリセルのグループを備える。
【００２６】
各メモリデバイス２８は、パッケージ化されたデバイス、又はパッケージ化されていない半導体チップ若しくはダイを備えることができる。一般に、メモリシステム２２は、任意の望ましい種類及びサイズの任意の好適な数のメモリデバイスを備えることができる。図１のシステム構成は複数のメモリデバイスを備えるが、本明細書で説明する方法及びシステムのうちのいくつかは、単一のメモリデバイスのみを有するシステムにおいて使用することもできる。
【００２７】
メモリシステム２２は、ホストシステム２４からデータを受け入れ、それをメモリデバイス２８に記憶し、かつ、メモリデバイスからデータを取り出し、それをホストシステムに提供するメモリコントローラ３２を備える。メモリコントローラ３２は、ホストシステム２４と通信するためのホストインタフェース３６と、メモリデバイス２８と通信するためのメモリインタフェース４０と、記憶されたデータ及び取り出されたデータを処理するプロセッサ４４とを備える。例えば、プロセッサ４４は、記憶のためのデータを誤り訂正符号（ＥＣＣ）とともに符号化し、メモリから読み出したデータのＥＣＣを復号することができる。プロセッサ４４の機能は、例えば、好適な中央処理装置（ＣＰＵ）上で実行するソフトウェアを使用して、ハードウェア（例えば、ステートマシン若しくは他の論理）を使用して、又はソフトウェア要素とハードウェア要素との組み合わせを使用して実装することができる。
【００２８】
いくつかの実施形態において、メモリコントローラ３２は、メモリデバイス２８にアクセスするメモリアクセス動作（例えば、読み出し動作又は書き込み動作）を実行するために、ホストシステム２４のハードウェアリソースを使用する。図１の実施形態では、ホストシステム２４は、ホストプロセッサ４８とホストメモリとを備え、本実施例では、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）５２を備える。ＤＲＡＭ５２は、ホストプロセッサ４８により、データを記憶するために、プログラム命令を記憶するために、又は任意の他の目的のために使用することができる。いくつかの実施形態において、ＤＲＡＭ５２中の記憶空間のうちの一部は、メモリコントローラ３２が使用する情報を記憶するために使用される。図１の例では、メモリコントローラ３２は、ホストバス５６を使用して（ホストインタフェース３６を介して）ホストプロセッサ４８と通信する。更に、メモリコントローラ３２のプロセッサ４４は、専用のインタフェース６０を使用して、ＤＲＡＭ５２と直接通信する。代替実施形態では、メモリコントローラ３２は、ホストプロセッサ４８及びＤＲＡＭ５２とホストバス５６を使用して通信し、その場合には、インタフェース６０は省略される。
【００２９】
メモリコントローラ３２、中でも特にプロセッサ４４は、ハードウェアで実装することができる。あるいは、メモリコントローラは、好適なソフトウェアを実行するマイクロプロセッサ、又はハードウェア要素及びソフトウェア要素の組み合わせを含むことができる。いくつかの実施形態において、プロセッサ４４は、本明細書で説明する機能を実行するようにソフトウェアでプログラムされる汎用プロセッサを備える。ソフトウェアは、例えば、ネットワークを介して、電子形式でプロセッサにダウンロードすることができ、又は、それに代えて、若しくはそれに加えて、磁気メモリ、光学メモリ若しくは電子メモリなどの有形媒体上に提供する及び／若しくは記憶することができる。
【００３０】
図１のシステム構成は、単に概念を明らかにするために示される例示的な構成である。その他の任意の好適なメモリシステムの構成を使用することもできる。例えば、いくつかの実施形態では、２つ以上のメモリコントローラ３２を同一のホストプロセッサに接続してもよい。本明細書で説明する実施形態はＤＲＡＭを参照しているが、ホストシステム２４は、任意の他の好適な種類の揮発性ホストメモリ及び／又は不揮発性ホストメモリを備えることができる。種々のインタフェース、アドレス指定回路、タイミング及びシーケンス回路、並びにデバッギング回路などの、本発明の原理を理解する上で必要ではない要素は、明瞭性のために図から省略されている。
【００３１】
図１に示した例示的なシステム構成において、メモリデバイス２８とメモリコントローラ３２とは、別個の集積回路（ＩＣ）として実装される。ただし、代替実施形態では、メモリデバイス及びメモリコントローラは、単一のマルチチップパッケージ（ＭＣＰ）又はシステムオンチップ（ＳｏＣ）中の別個の半導体ダイ上に集積することができ、内部バスによって相互接続してもよい。更に代替的には、メモリコントローラ回路の一部又は全部が、メモリデバイスのうちの１つ以上が配設された同一のダイ上に常駐することができる。更に代替的には、メモリコントローラ３２の機能のうちの一部又は全部は、ソフトウェアで実装することができ、ホストプロセッサ４８又はホストシステム２４の他の要素によって、又は、他の種類のメモリコントローラによって実行することができる。いくつかの実施形態において、ホストプロセッサ４８及びメモリコントローラ３２は、同じダイ上に作りこんでも、又は同一のデバイスパッケージ中の別個のダイ上に作りこんでもよい。
【００３２】
ホストシステムリソースを使用した不揮発性メモリへのデータ記憶
多くの実際の適用例では、ホストシステム２４は、メモリコントローラ３２の内部で利用可能なものよりも相当に多くのハードウェアリソースを有する。いくつかのモバイル電話では、例えば、メモリコントローラ３２は、制限されたメモリリソース及び制限された計算能力を有するＳＤコントローラ又はｅＭＭＣコントローラを備える。一方、ホストシステムはしばしば、強力なプロセッサ及び相当量のＤＲＡＭ記憶空間を備える。本発明のいくつかの実施形態では、メモリコントローラ３２は、メモリデバイス２８にアクセスするために、ホストシステム２４のより豊富なハードウェアリソースを使用する。図１の例では、ハードウェアリソースは、ホストメモリ（ＤＲＡＭ）記憶空間を備えるが、ホストシステムの種々の他のハードウェアリソースを使用することもできる。
【００３３】
いくつかの実施形態において、メモリデバイス２８にアクセスする際にメモリコントローラ３２が使用する情報項目を記憶するために、ＤＲＡＭ５２において記憶空間が割り当てられる。更に、メモリコントローラは、ＤＲＡＭに記憶された情報項目を使用して、メモリデバイス２８にアクセスする１つ以上の動作をサポートする。情報項目は、例えば、記憶パラメータ及び構成、論理−物理アドレス変換テーブル、又はメモリデバイスにアクセスする（例えば、読み出す、書き込む、若しくは消去する）際にメモリコントローラにとって有用である任意の他の情報を含むことができる。この種の所与の動作を実行するとき、通常、ホストコマンドに応答して、メモリコントローラは、ＤＲＡＭ５２から適切な情報を取り出し、次いで、取り出した情報を使用してメモリデバイス２８にアクセスする。
【００３４】
いくつかの実施形態において、ＤＲＡＭ５２に記憶された情報項目は、メモリセルの対応するグループについての記憶パラメータを含む。情報項目は、メモリデバイスごとに、メモリダイごとに、消去ブロックごとに、ワードライン又はページごとに、あるいはメモリセルの任意の他の好適なグループごとに記憶することができる。デバイス２８中のメモリセルの所与のグループにアクセスする（例えば、読み出す、書き込む、又は消去する）準備がととのったとき、メモリコントローラは、このメモリセルグループの記憶パラメータをＤＲＡＭ５２から取り出し、次いで、取り出した記憶パラメータを使用して、グループ中のメモリセルにアクセスする。ＤＲＡＭ５２中の利用可能な記憶空間は、しばしば、プロセッサ４４中の内部記憶空間よりも相当に大きいので、この技術により、メモリコントローラは、記憶パラメータを、アクセスされるメモリセルの実際のグループによりうまくマッチさせることが可能になる。任意の好適な記憶パラメータを使用してもよい。
【００３５】
例えば、メモリデバイス２８は、それらの記憶値を特定の読み出ししきい値と比較することによって読み出されるアナログメモリセル（例えば、フラッシュセル）を備えることができる。これらの実施形態では、メモリコントローラ３２は、メモリセルの異なるグループごとの（例えば、異なる消去ブロックについての）読み出ししきい値をＤＲＡＭ５２に記憶することができる。メモリコントローラは、デバイス２８中のメモリセルの特定のグループに適用可能な読み出ししきい値をＤＲＡＭ５２から取り出し、次いで、取り出した読み出ししきい値を使用してそのグループからデータを読み出すことによって、その特定のグループからデータを読み出す、読み出し動作をサポートする。
【００３６】
別の例として、メモリデバイス２８中のメモリセルは、反復的なプログラミング及び検証（Ｐ＆Ｖ）プロセスを使用してプログラムすることができる。典型的なＰ＆Ｖプロセスでは、メモリページ全体は、このページにマッピングされるメモリセルのグループにプログラミングパルスのシーケンスを印加することによって書き込まれる。プログラミングパルスのレベルは、１パルスごとに増分的に増大する。セルにおいてプログラムされる記憶値は、各パルスの後に読み出され（「検証され」）、望ましいレベルに達するまで反復し続ける。いくつかの実施形態において、メモリセルの異なるグループに適用可能であるＰ＆Ｖプロセスのパラメータは、ホストシステム２４のＤＲＡＭ５２に記憶される。メモリコントローラは、ＤＲＡＭ５２から対応するＰ＆Ｖパラメータを取り出し、次いで、取り出したＰ＆Ｖパラメータを使用してメモリセルのグループをプログラムすることによって、メモリセルの特定のグループにデータを記憶する、書き込み動作をサポートする。
【００３７】
ＤＲＡＭ５２に記憶され得るＰ＆Ｖパラメータは、例えば、メモリセルに書き込まれた記憶値を検証するために使用される検証しきい値、インクリメンタルステップサイズ（すなわち、連続するプログラミングパルス間の増分、インクリメンタルステップパルスプログラミング−ＩＳＰＰ−とも呼ばれる）、イニシャルプログラミングパルス振幅、及び／又は任意の他の好適なパラメータを含むことができる。
【００３８】
更に別の例として、デバイス２８中のメモリセルは消去し、次いで、特定の消去検証しきい値に対して検証することができる。いくつかの実施形態において、メモリコントローラは、異なるメモリセルグループについての異なる消去検証しきい値をＤＲＡＭ５２に記憶する。メモリコントローラは、このセルグループの消去検証しきい値をＤＲＡＭ５２から取り出し、取り出したしきい値を使用してセルグループを消去する消去動作をサポートすることができる。
【００３９】
ＤＲＡＭ５２に記憶することができる情報項目の他の例は、デバイス２８中のメモリセルの対応するグループの損耗レベル又は健全性レベル、あるいはメモリセルの他の履歴性能指数を示す。そのような情報項目は、例えば、メモリセルの各グループが完了したプログラミング及び消去（Ｐ／Ｅ）サイクルの数、又はメモリセルの各グループの最後のプログラミングからの経過時間を含むことができる。
【００４０】
他の情報項目は、デバイス２８中のメモリセルの各グループに存在する歪みレベルを示し得る。そのようなパラメータは、例えば、メモリセルの異なるグループについての、クロスカップリング干渉の推定値、セルの記憶値の推定ドリフト、又は推定温度−時間積分（経時的に積分される動作温度）を含むことができる。ＤＲＡＭ５２に記憶することができる情報項目の更に別の例は、各消去ブロックに記憶された最終ページのインデックスを含む。これらの情報項目のすべては、メモリセルを読み出す及び／又はプログラムする方法を判定する際に有用であり得る。この種の例示的な技術は、例えば、それらの開示が参照により本明細書に組み込まれるＰＣＴ国際公開公報ＷＯ２００７／１３２４５３、ＷＯ  ２００７／１３２４５７、ＷＯ２００８／０２６２０３、ＷＯ２００８／０５３４７２及びＷＯ２００８／１１１０５８で説明されている。
【００４１】
いくつかの実施形態において、メモリコントローラ３２は、異なる記憶構成を使用して、デバイス２８中のメモリセルの異なるグループにデータを記憶する。例えば、メモリコントローラは、プログラミング状態（プログラミングレベル）の数及び／又は誤り訂正符号（ＥＣＣ）をメモリセルグループごとに変更することができる。この種の例示的な技術は、例えば、その開示が参照により本明細書に組み込まれるＰＣＴ国際公開公報ＷＯ２００７／１３２４５６で説明されている。別の例として、メモリコントローラは、例えば、誤り訂正機能とレイテンシとの間に様々なトレードオフを提供するために、様々なＥＣＣブロックサイズを使用することができる。例示的な実施形態では、メモリコントローラは、２ＫＢブロックを使用して、いくつかのページを符号化することができ、４ＫＢブロックを使用して、他のページを符号化することができる。
【００４２】
いくつかの実施形態において、メモリコントローラ３２は、デバイス２８の異なるメモリセルグループで適用される記憶構成（例えば、プログラミングレベルの数、ＥＣＣの種類、及び／又は各消去ブロック、ワードライン若しくはページにおいて使用されるＥＣＣブロックサイズ）をＤＲＡＭ５２に記憶する。メモリコントローラは、所与のメモリセルグループについての記憶構成をＤＲＡＭ５２から取り出し、次いで、取り出した記憶構成を使用してセルグループを読み出す又はプログラムする、読み出し及び書き込み動作をサポートする。
【００４３】
いくつかの実施形態において、メモリコントローラは、論理アドレス（仮想アドレスとも呼ばれる）を使用して指定される読み出し／書き込みコマンドをホストシステム２４から受信する。メモリコントローラは、論理アドレスをメモリデバイス２８の物理的記憶位置に変換し、そのデータを適切な物理的記憶位置から読み出す、又はそのデータを適切な物理的記憶位置に書き込む。論理アドレスと物理的記憶位置との間の変換は、典型的には、メモリコントローラが管理する変換テーブルを問い合わせることによって実行される。
【００４４】
いくつかの実施形態において、メモリコントローラ３２は、論理アドレスと物理的記憶位置とのマッピングをＤＲＡＭ５２に記憶する。論理−物理マッピングは、１つ以上のテーブルによって、又は任意の他の好適なデータ構造を使用して表すことができる。マッピングは、論理アドレスを物理的記憶位置にマッピングすること、物理的記憶位置を論理アドレスにマッピングすること、又はその両方を行うことができる。これらの実施形態では、メモリコントローラは、ＤＲＡＭ５２に記憶されたマッピングを問い合わせることによって、論理アドレスと物理的記憶位置との間の変換を行う読み出し及び書き込み動作をサポートする。
【００４５】
例えば、論理アドレスの所与の範囲からの読出しを要求するホストシステムからの読み出しコマンドに応答して、メモリコントローラは、要求された論理アドレスに対応する物理的記憶位置を取得するように、ＤＲＡＭ５２中のマッピングを問い合わせる読み出し動作を実行することができる。次いで、その動作は、メモリデバイス２８中のこれらの物理的記憶位置からデータを読み出す。書き込み動作についても類似するフローを同様に規定することができる。この技術により、メモリコントローラは、最小限の内部メモリを用いて、不揮発性メモリデバイス２８にマッピングを記憶する必要なく、論理−物理アドレス変換を実行することが可能になる。システム２２の読み出し／書き込み速度は、マッピングをデバイス２８に記憶する場合と比較して大幅に向上する。速度の向上は、多数のランダムな読み出し／書き込み動作を実行するときに特に高くなる。
【００４６】
論理−物理アドレスマッピングをホストメモリに記憶することは、μＳＤコントローラなど、制限された内部メモリを有するメモリコントローラ適用例において特に有利である。この技術を使用するときには、読み出し及び書き込み動作は、適切なアドレス変換を判定するために、及び／又は変換を更新するために、追加の読み出し及び書き込み動作を含まない。その結果、読み出し及び書き込みスループットが増大する。更に、書き込み動作の数及び読み出しディスターブの量が低減され、したがって、不揮発性メモリの寿命が延びる。
【００４７】
多くの場合、デバイス２８中のメモリセルは、干渉、例えば、隣接メモリセルからのクロスカップリング干渉を受ける。いくつかの実施形態において、メモリセルからデータを読み出すときに、メモリコントローラ３２は干渉キャンセルプロセスを適用する。干渉キャンセルプロセスは、典型的には、デバイス２８中の他のメモリセル（通常、隣接メモリセル）の記憶値又はデータに基づいて、メモリセルの所与のグループにおける干渉を推定し、それを補正する。例示的な干渉キャンセル技術は、上記で参照したＰＣＴ国際公開公報ＷＯ２００７／１３２４５３、ＷＯ２００７／１３２４５７及びＷＯ２００８／０２６２０３で説明されている。
【００４８】
いくつかの実施形態において、メモリコントローラ３２は、隣接メモリセルのデータをＤＲＡＭ５２から取り出す。メモリコントローラは、メモリデバイス２８のうちのメモリセルの所与のグループからデータを読み出し、隣接セルデータをＤＲＡＭ５２から取り出し、ＤＲＡＭ５２から取得された隣接セルデータを使用して、読み出したデータ中の干渉をキャンセルする読み出し動作をサポートする。隣接セルデータは、例えば、隣接ページが記憶されたときから、ＤＲＡＭ５２において利用可能であり得る。この技術により、メモリコントローラは、メモリデバイス２８から隣接メモリセルを読み出す必要が軽減される。その結果、システム２２の全体的な読み出し速度を向上させることができる。
【００４９】
いくつかの実施形態において、メモリコントローラ３２は、より大量のデータをメモリデバイス２８に順次書き込むために、より大きいサイズのＤＲＡＭ５２を使用する。例えば、メモリコントローラは、メモリデバイス２８中の特定のソースロケーションから特定の宛先ロケーションに複数のページ（例えば、消去ブロック全体）をコピーするブロックコピーバック動作をサポートすることができる。このコマンドを実行するとき、メモリコントローラは、最初に、ソースロケーションから複数のページを順次読み出し、それらをＤＲＡＭ５２にキャッシュする。次いで、メモリコントローラは、ＤＲＡＭ５２から複数のページを読み出し、それらをメモリデバイス２８中の宛先ロケーションに順次書き込む。一度に１ページをコピーするのではなく、複数のページを順次読み出し、書き込むことによって、コピーバック動作の所要時間が大幅に短くなる。別の例として、順次データブロックが生成されるまで、断続的に到着する記憶のためのデータを累積するために（メモリコントローラ又はホストのいずれかによって）ＤＲＡＭ５２を使用することができる。次いで、メモリコントローラは、累積されたブロックをメモリデバイス２８に順次書き込むことができる。
【００５０】
それに加えて、又は代替として、メモリコントローラは、任意の他の好適な情報をＤＲＡＭ５２に記憶し、次いで、メモリデバイス２８にアクセスする際にこの情報を使用することができる。本明細書で説明する実施形態は、主に、ＤＲＡＭリソースを参照しているが、メモリコントローラ３２は、ホストシステム２４の任意の他の好適なハードウェアリソースを使用することができる。例示的なリソースについて以下に更に説明する。
【００５１】
図２は、本発明の一実施形態に係る、メモリコントローラ３２によりホストシステム２４のＤＲＡＭリソースを使用して、不揮発性メモリデバイス２８にデータを記憶するための方法を模式的に示すフローチャートである。方法は、メモリ割り当てステップ７０において、メモリコントローラ３２が使用するためのホストシステム２４のＤＲＡＭ５２中の記憶空間を割り当てることにより始まる。メモリコントローラ３２は、ＤＲＡＭ記憶ステップ７４において、デバイス２８のアナログメモリセルの対応するグループに関する情報項目をＤＲＡＭ５２に記憶する。前述したように、情報項目は、例えば、記憶パラメータ及び構成、論理−物理アドレスマッピング、並びに／又は隣接セルデータを含むことができる。
【００５２】
特定の時点に、メモリコントローラ３２は、コマンド受信ステップ７８において、ホストシステム２４からコマンドを受信する。そのコマンドにより、メモリコントローラは、デバイス２８のアナログメモリセルの所与のグループにアクセスする。例えば、コマンドは、特定のデータ項目の記憶又は読出しを要求することができる。そのコマンドに応答して、メモリコントローラ３２は、動作実行ステップ８２において、ＤＲＡＭ５２から取り出した情報を使用してメモリデバイス２８にアクセスする動作を実行する。典型的には、メモリコントローラは、デバイス２８中のアクセスすべきアナログメモリセルのグループを識別し、このメモリセルグループに関係する（１つ以上の）情報項目をＤＲＡＭ５２から取り出し、取り出した情報を使用してグループ中のメモリセルにアクセスする。
【００５３】
ホストシステムとメモリコントローラとの間のインタフェース
上述の技術を実行するとき、メモリコントローラ３２は、任意の好適なインタフェースを使用して、ＤＲＡＭ５２に情報を記憶し、それを読み出すことができる。上記の図１の例では、メモリコントローラは、専用のインタフェース６０を使用して（すなわち、メモリコントローラとホストプロセッサとの間の通信のために使用される物理インタフェースとは別個の物理インタフェースを使用して）、ＤＲＡＭ５２と直接通信する。これらの実施形態では、メモリコントローラとＤＲＡＭとが直接通信するので、ＤＲＡＭ５２からの情報の取り出しは、ホストプロセッサのいかなる動作も伴わない。メモリコントローラ及び／又はホストシステムは、プロセッサ４４及びプロセッサ４８によるＤＲＡＭ５２へのアクセスを制御するために好適な調整論理を備える。
【００５４】
代替実施形態では、メモリコントローラ３２は、ホストバス５６を使用して（すなわち、メモリコントローラとホストプロセッサとの間の通信のために使用される同一の物理インタフェースを介して）、ＤＲＡＭ５２に情報を記憶し、読み出す。ホストバス５６は、例えば、ＮＡＮＤインタフェース、Ｍｉｃｒｏ−ＳＤ（μＳＤ）インタフェース、エンベデッドマルチメディアカード（ｅＭＭＣ）インタフェース、ユニバーサルフラッシュストレージ（ＵＦＳ）インタフェース、シリアルＡＴＡ（ＳＡＴＡ）インタフェース、ユニバーサルシリアルバス（ＵＳＢ）、ＰＣＩエクスプレス（ＰＣＩｅ）、又は任意の他の好適なインタフェースなど、任意の好適な規格又はプロトコルに従って動作することができる。
【００５５】
μＳＤインタフェースは、例えば、この参照により本明細書に組み込まれる「ＳＤ  Ｓｐｅｃｉｆｉｃａｔｉｏｎｓ」（Ｐａｒｔ  １、Ｐｈｙｓｉｃａｌ  Ｌａｙｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ、Ｖｅｒｓｉｏｎ  ３．０１  Ｄｒａｆｔ  １．００、２００９年１１月９日）で規定される。ｅＭＭＣインタフェースは、例えば、この参照により本明細書に組み込まれる、に、「Ｅｍｂｅｄｄｅｄ  ＭｕｌｔｉＭｅｄｉａＣａｒｄ（ｅＭＭＣ）Ｍｅｃｈａｎｉｃａｌ  Ｓｔａｎｄａｒｄ  ｗｉｔｈ  Ｏｐｔｉｏｎａｌ  Ｒｅｓｅｔ  Ｓｉｇｎａｌ」（ＪＥＤＥＣ  Ｓｔａｎｄａｒｄ  ＪＥＳＤ８４−Ｃ４４、２００９年７月）で規定される。ＵＦＳインタフェースは、例えば、この参照により本明細書に組み込まれる「ＵＦＳ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ」（ｖｅｒｓｉｏｎ  ０．１、２００９年１１月１１日）で規定される。ＳＡＴＡインタフェースは、例えば、この参照により本明細書に組み込まれる「Ｓｅｒｉａｌ  ＡＴＡ  Ｒｅｖｉｓｉｏｎ  ３．０」（２００９年６月２日）で規定される。ＵＳＢインタフェースは、例えば、この参照により本明細書に組み込まれる「Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ」（Ｒｅｖｉｓｉｏｎ  ２．０、２０００年４月２７日）で規定される。
【００５６】
上記に列挙した通信プロトコルでは、ホストプロセッサがマスターとして定義され、メモリコントローラがスレーブとして定義される。したがって、メモリコントローラは、情報を記憶又は取り出すことを要求するコマンドを開始し、それらをホストプロセッサに送ることができない。いくつかの実施形態において、メモリコントローラ３２は、メモリコントローラとホストプロセッサとの間でハードウェア配線を介して信号を送ることによって、ＤＲＡＭ５２と情報を交換するようにホストプロセッサ４８に要求する。いくつかの実施形態において、この目的のために、メモリコントローラとホストプロセッサとの間に専用のハードウェア配線を接続することができる。代替的には、メモリコントローラは、データ交換が要求されることをホストプロセッサに指示するために、レディ／ビジー配線などの既存のハードウェア配線を使用することができる。ホストプロセッサは、この指示を受信すると、情報交換プロセスを開始する。
【００５７】
図３は、本発明の一実施形態に係る、ホストプロセッサとメモリコントローラとの間で情報を交換するための方法を模式的に示すフローチャートである。方法は、指示ステップ９０において、メモリコントローラ３２が、ＤＲＡＭ５２との情報交換が要求されることをホストプロセッサ４８に指示することから始まる。メモリコントローラは、メモリコントローラとホストプロセッサとの間に接続されたハードウェア信号（例えば、個別のハードウェア配線又はピン）を介して、この指示を信号で送る。
【００５８】
指示を受信すると、ホストプロセッサ４８は、問い合わせステップ９４において、要求される情報交換の種類を問い合わせるメッセージをメモリコントローラ３２に送信する。問い合わせメッセージは、ＤＲＡＭから情報を読み出すように要求するか、あるいはＤＲＡＭに情報を記憶するように要求するかを指示するように、メモリコントローラに要求する。
【００５９】
問い合わせメッセージを送信した後、ホストプロセッサ４８は、読出しステップ９８において、メモリコントローラ３２から、要求された情報交換の種類を指示するデータ読み出す。例えば、データは、要求された動作がＤＲＡＭから情報を読み出すか、あるいは、ＤＲＡＭに情報を書き込むか指示する。また、データは、情報を読み出す又は書き込むためのＤＲＡＭ５２におけるアドレスの範囲を指示する。要求がＤＲＡＭに情報を記憶することであるとき、データは、記憶すべき情報も備える。
【００６０】
ステップ９８においてメモリコントローラから読み出したデータに基づいて、ホストプロセッサは、実行ステップ１０２において、要求された情報交換を実行する。メモリコントローラが、ＤＲＡＭに情報を記憶することを要求した場合、ホストプロセッサは、ＤＲＡＭ中の指示されたアドレスに情報を記憶し、メモリコントローラに確認応答メッセージを送信する。メモリコントローラが、ＤＲＡＭから情報を読み出すことを要求した場合、ホストプロセッサは、指示されたアドレスから情報を読み出し、その情報をメモリコントローラに送信する。
【００６１】
代替実施形態において、メモリコントローラは、ホストコマンド及び対応する応答中に含まれるメタデータを使用して、ホストプロセッサを介してＤＲＡＭと情報を交換することができる。メモリコントローラは、ホストシステムに送信される応答にメタデータ（例えば、読み出しコマンド又は確認応答又は書き込みコマンドの結果）を加えることによって、ＤＲＡＭに情報を要求すること、又は記憶のための情報をＤＲＡＭに送信することができる。ホストプロセッサは、ホストシステムがメモリコントローラに送信する読み出しコマンド又は書き込みコマンド中に含まれるメタデータとして、要求された情報をＤＲＡＭからメモリコントローラに送信することができる。
【００６２】
いくつかの実施形態において、メモリコントローラとホストプロセッサとは、コマンドと、適用可能なＤＲＡＭ情報を含む応答とを交換する。例えば、メモリコントローラは、特定のメモリページを読み出すとき、読み出し動作で使用される読み出ししきい値を、読み出し結果とともにホストプロセッサに送信することができる。それに応答して、ホストプロセッサは、読み出ししきい値をＤＲＡＭに記憶する。ホストプロセッサは、読み出しコマンドをメモリコントローラに送信するとき、（ＤＲＡＭから読み出される）適用可能な読み出ししきい値を、読み出しコマンドの一部としてメモリコントローラに送信することができる。
【００６３】
本明細書で説明する実施形態は、主に、ホストＤＲＡＭの使用を対象とするが、本明細書で説明する方法及びシステムは、スタティックＲＡＭ（ＳＲＡＭ）などの他の種類のホストメモリを利用してもよい。ホストメモリを割り当てること及びそれを使用することに加えて、又はその代替として、メモリコントローラは、不揮発性メモリにアクセスするために、ホストの種々の他のリソースを使用することができる。例えば、メモリコントローラは、不揮発性メモリへのアクセスの一部として種々の論理演算（例えば、ＸＯＲ演算又は比較）を実行するために、ホスト内のハードウェア論理回路を使用することができる。別の例として、メモリコントローラは、その供給電圧をホストから受け取ることができる。そのような実施形態では、ホストは、安定し、調整された供給電圧、及び／又はフィルタリングされた供給電圧をメモリコントローラに提供することができ、それにより、メモリコントローラは、そのオンチップ調整回路、安定化回路、及び／又はフィルタリング回路を最小化することができる。その結果、メモリコントローラの電力効率を増大させることができ、その放熱を低減させることができる。例えば、メモリコントローラは、１．８Ｖ又は３．３Ｖの供給電圧を受け取り、それを内部で低下させるのではなく、ホストから調整済みの１．２Ｖの供給電圧を受け取ることができる。
【００６４】
更に別の例として、メモリコントローラは、不揮発性メモリから読み出したデータに対して干渉キャンセル計算を実行するために、ホストを呼び出すことができる。そのような実施形態では、ホストは、不揮発性メモリから読み出した１つ以上のページの読み出し結果並びに隣接ページの読み出し結果を提供され得る。ホストは、次いで、隣接ページの読み出し結果に基づいて読み出し結果中の干渉をキャンセルし、それにより、干渉のないデータを生成することができる。
【００６５】
更に別の例として、ＥＣＣ復号を実行するために、ホストを呼び出すことができる。いくつかの実施形態において、高性能ＥＣＣ復号器（例えば、ソフト復号器）は、ホストのより高い固有の計算量を使用して、及び／又は専用のハードウェアを使用して、ホストで実装することができる。これらの実施形態では、メモリコントローラは、不揮発性メモリから読み出された符号語をホストに提供する。次いで、ホストはＥＣＣを復号し、それにより、データが再構成される。例示的な実施形態では、メモリコントローラは特定のＥＣＣ復号器を備え、ホストは別のＥＣＣ復号器を備える。ホスト内の復号器は、より複雑であり、メモリコントローラ中の復号器よりも高い誤り訂正能力を有する。例えば、メモリコントローラ中の復号器は、ハード復号を適用することができ、ホスト内の復号器はソフト復号を適用することができる。これらの実施形態では、メモリコントローラは、最初に、そのローカルＥＣＣ復号器を使用して、所与の符号語の復号を試行する。最初の試行が失敗した場合、メモリコントローラは、符号語を復号するためにホスト内のより高性能のＥＣＣ復号器を呼び出す。
【００６６】
ホスト支援型ブロックコンパクション
典型的なフラッシュメモリにおいて、データはページ単位でメモリデバイス２８に書き込まれるが、消去はメモリブロック全体に適用される。データは消去されたページのみに書き込まれ、したがって、インプレースでデータを更新することはできない。データを更新することは、更新されたデータをフラッシュメモリ中の別の物理的記憶位置に書き込むこと、データの前のバージョンに無効であるとマークすること、及びデータの論理アドレスをデータが記憶される物理的格納位置に変換する論理−物理アドレスマッピングを動的に更新することを伴う。
【００６７】
上記の特性のために、メモリデバイス２８のメモリブロックは、無効データページを徐々に累積する。無効データページの更新されたバージョンは、他の物理的記憶位置に記憶されている。無効ページの数を低減するために、メモリコントローラ３２のプロセッサ４４は、コンパクション又は「ガベージコレクション」プロセスを実行する。このバックグラウンドプロセスは、コンパクションのために（ソースブロックと呼ばれる）１つ以上のメモリブロックを選択し、選択されたソースブロックから、（ターゲットブロックと呼ばれる）１つ以上の他のブロック中の他の記憶位置に有効データをコピーし、次いで、ソースブロックを消去する。すると、消去されたブロックは、後続のプログラミングが行える状態になる。
【００６８】
図４は、本発明の一実施形態に係る、ホスト支援型ブロックコンパクションのための方法を模式的に示すフローチャートである。方法は、メモリコントローラ３２のプロセッサ４４が、ソースブロック選択ステップ１１０において、コンパクションのために１つ以上のソースブロックを選択することから始まる。各ソースブロックは、典型的には、有効データと無効データとを含む。メモリコントローラは、任意の好適な基準を使用してソースブロックを選択することができ、例えば、無効データの量が最も多いブロックを選択することができる。
【００６９】
プロセッサ４４は、ソース転送ステップ１１４において、選択したソースブロックをホストシステム４４に転送する。プロセッサ４４は、ソースブロックを、上述のインタフェース及び転送スキームのいずれかを使用して、例えば、ホストバス５６を使用してホストプロセッサ４８に、又は専用のインタフェース６０を使用して直接ＤＲＡＭ５２に転送することができる。
【００７０】
いくつかの実施形態において、プロセッサ４４はまた、有効データを識別する指示をホストに送信し、それにより、ホストは、その指示に基づいて、ソースブロックから有効データのみを読み出すことが可能である。任意の好適な種類の指示を、ソースブロックの一部として、又は別々に送信することができ、任意の好適なインタフェースを使用して、その指示をホストに送信することができる。代替実施形態では、メモリコントローラは、ソースブロック全体ではなく、ソースブロックのうちの有効データのみをホストに転送する。本特許出願の文脈及び特許請求の範囲において、有効データのみを転送することも、コンパクションのためにソースブロックを転送することとみなされる。
【００７１】
ホストプロセッサ４８は、コンパクションステップ１１８において、ソースブロックをコンパクションする。典型的には、ホストプロセッサは、ソースブロックから有効データをコピーし、それを１つ以上の宛先ブロックに順次記憶する。その結果、無効データの領域をなくしながら、有効データがコンパクトな様式で宛先ブロックに記憶される。宛先ブロックは、ＤＲＡＭ５２に記憶される。
【００７２】
宛先転送ステップ１２２において、ホストシステム２４からメモリコントローラ３２に宛先ブロックを転送する。宛先ブロックの転送は、上述のインタフェース及び転送スキームのいずれかを使用して、例えば、ホストバス５６を使用してホストプロセッサ４８から、又は専用のインタフェース６０を使用して直接ＤＲＡＭ５２から実行することができる。
【００７３】
メモリコントローラ３２のプロセッサ４４は、記憶ステップ１２６において、宛先ブロックをメモリデバイス２８に記憶する。更に、プロセッサ４４は、有効データの新しい物理的記憶位置を指示するように、論理−物理アドレスマッピングを更新する。コンパクションプロセスが完了した後、プロセッサ４４は、典型的には、ソースブロックを消去する。そのようにすると、これらのブロックは、新しいプログラミングのために利用可能である。
【００７４】
ホストのＤＲＡＭ５２は、典型的には、メモリコントローラ３２の内部メモリよりもはるかに大きいので、ホストによってコンパクションを実行することは、メモリコントローラによって実行するよりも著しく効率的である。例えば、より大きなメモリ空間のおかげで、ホストプロセッサ４８は、（ソースブロックからの）読み出し動作の長いシーケンス、その後に（宛先ブロックへの）書き込み動作の長いシーケンスを実行することによって、有効データをコピーすることが可能である。この種の順次動作は、コンパクションプロセスの効率を大幅に向上させる。
【００７５】
ＤＲＡＭ５２中のメモリ空間が大きいことにより、ホストプロセッサ４８は、多数のソースブロックと宛先ブロックとを同時に処理し、したがって、コンパクション性能を最適化することが可能になる。更に、ホストプロセッサの計算能力が高いことにより、コンパクションプロセスのレイテンシが短くなる。
【００７６】
したがって、上述の実施形態は例として挙げられており、本発明は、以上に具体的に図示され説明されたものに限定されないことが理解されるであろう。むしろ、本発明の範囲は、以上に説明した様々な特徴の組み合わせ及び部分的組み合わせの両方、並びに当業者であれば前述の説明を読むことによって想到するであろう、従来技術に開示されていないそれらの変型及び修正を含む。
【図１】
0005976939.tif 000002
【図２】
0005976939.tif 000003
【図３】
0005976939.tif 000004
【図４】
0005976939.tif 000005