(57)【特許請求の範囲】
【請求項１】
不揮発性メモリ（ＮＶＭ）装置において、
そのＮＶＭ装置に結合されたホストコントローラからの読み取りコマンド及び読み取り状態要求を受け取るように構成されたインターフェイスと、
複数のブロックを各々含む複数の同時アドレス可能なメモリユニットであって、各同時アドレス可能なメモリユニットは、他の同時アドレス可能なメモリユニットに関して同時に読み取り可能であり、前記読み取りコマンドは、データが読み取られる一つ以上の前記同時アドレス可能なメモリユニットの一つ以上のブロックを特定する、前記複数の同時アドレス可能なメモリユニットと、
前記インターフェイス及び前記複数の同時アドレス可能なメモリユニットに結合されたコントローラと、
を備え、前記コントローラは、
前記読み取りコマンドによって指定された前記複数の同時アドレス可能なメモリユニットの１つ以上のブロックからデータを読み取り、
前記１つ以上のブロックからから読み取られる前記データの一部分をエラー修正し、
前記データのエラー修正された部分を、前記データの他の部分を次にエラー修正して転送可能にする前に、転送可能にし、
前記読み取り状態要求に、前記データの前記エラー修正された部分が転送可能であることを指示する情報で応答する、
ように構成された、不揮発性メモリ（ＮＶＭ）装置。
【請求項２】
前記情報は、エラー修正コード遅延を指示する１つ以上のビットを含む、請求項１に記載の不揮発性メモリ（ＮＶＭ）装置。
【請求項３】
前記情報は、前記ＮＶＭ装置のメモリアレイからデータが適切に読み取られたことを指示する１つ以上のビットを含む、請求項１に記載の不揮発性メモリ（ＮＶＭ）装置。
【請求項４】
前記情報は、前記ＮＶＭ装置から前記ホストコントローラへデータを転送する準備ができたことを指示する１つ以上のビットを含む、請求項１に記載の不揮発性メモリ（ＮＶＭ）装置。
【請求項５】
不揮発性メモリ（ＮＶＭ）装置に結合するように構成されたホストコントローラにおいて、
前記ＮＶＭ装置に結合するように構成されたインターフェイスと、
前記インターフェイスに結合されたコントローラであって、
前記ＮＶＭ装置へ読み取りコマンド及び読み取り状態要求を送信し、
前記ＮＶＭ装置において前記読み取りコマンドに基づき読み取られるデータのエラー修正された部分が、前記データの他の部分が次にエラー修正されて転送可能である前に、転送可能であるかを示す情報を、前記読み取り状態要求の応答として、受け取り、
前記データのエラー修正された部分を、前記データの他の部分を転送する前に、前記ＮＶＭ装置から前記コントローラに転送するように構成されたコントローラと、
を備える、ホストコントローラ。
【請求項６】
不揮発性メモリ（ＮＶＭ）装置により遂行される方法において、
そのＮＶＭ装置に結合されたホストコントローラからの読み取りコマンド及び読み取り状態要求を受け取る段階と、
前記読み取りコマンドによって識別される前記ＮＶＭ装置における複数の同時アドレス可能なメモリユニットからデータを読み取る段階であって、各同時アドレス可能なメモリユニットは、他の同時アドレス可能なメモリユニットに関して同時に読み取り可能であるように構成されている、前記データを読み取る段階と、
複数の同時アドレス可能なメモリユニットから読み取られる前記データの一部分をエラー修正する段階と、
前記データのエラー修正された部分を、前記データの他の部分を次にエラー修正して転送可能にする前に、前記ホストコントローラへの転送に使用できるようにする段階と、
前記読み取り状態要求に、前記データのエラー修正された部分が転送可能であるかを指示する情報で応答する段階と、
を備えた方法。
【請求項７】
前記情報は、エラー修正コード遅延を指示する１つ以上のビットを含む、請求項６に記載の方法。
【請求項８】
前記情報は、前記ＮＶＭ装置のメモリアレイからデータが適切に読み取られたことを指示する１つ以上のビットを含む、請求項６に記載の方法。
【請求項９】
前記情報は、前記ＮＶＭ装置から前記ホストコントローラへデータを転送する準備ができたことを指示する１つ以上のビットを含む、請求項６に記載の方法。
【請求項１０】
不揮発性メモリ（ＮＶＭ）装置に結合するように構成されたホストコントローラにより遂行される方法において、
前記ＮＶＭ装置へ読み取りコマンド及び読み取り状態要求を送信する段階と、
前記ＮＶＭ装置において前記読み取りコマンドに基づき読み取られるデータのエラー修正された部分が、前記データの他の部分が次にエラー修正されて転送可能である前に、転送可能であることを指示する情報を、前記読み取り状態要求の応答として、受け取り、
前記データのエラー修正された部分を、前記データの他の部分を転送する前に、前記ＮＶＭ装置から前記ホストコントローラに転送する、方法。
【請求項１１】
前記ホストコントローラは、前記情報に応答して前記ＮＶＭ装置へ別の読み取りコマンドを送信する、請求項１０に記載の方法。
【請求項１２】
前記情報は、エラー修正コード遅延を指示する１つ以上のビットを含む、請求項１０に記載の方法。
【請求項１３】
前記情報は、前記ＮＶＭ装置からデータが適切に読み取られたことを指示する１つ以上のビットを含む、請求項１０に記載の方法。
【請求項１４】
前記情報は、前記ＮＶＭ装置から前記ホストコントローラへデータを転送する準備ができたことを指示する１つ以上のビットを含む、請求項１０に記載の方法。
【請求項１５】
前記情報は、前記ホストコントローラへデータが転送される前に前記ＮＶＭ装置から送信される、請求項１０に記載の方法。
【請求項１６】
前記情報は、多数のエラー修正コードセグメントを前記ホストコントローラへの転送に使用できるようにする、請求項１０に記載の方法。
【請求項１７】
ホストコントローラと、
不揮発性メモリ（ＮＶＭ）装置と、
前記ホストコントローラ及びＮＶＭ装置を結合するインターフェイスであって、前記ホストコントローラは、このインターフェイスを経て前記ホストコントローラから前記ＮＶＭ装置へ読み取りコマンド及び読み取り状態要求を送信するように構成されているインターフェイスと、
複数のブロックを含み、前記ＮＶＭ装置に含まれた複数の同時アドレス可能なメモリユニットであって、各同時アドレス可能なメモリユニットは、他の同時アドレス可能なメモリユニットに関して同時に読み取り可能であり、前記読み取りコマンドは、データが読み取られる一つ以上の前記同時アドレス可能なメモリユニットの一つ以上のブロックを特定する、前記複数の同時アドレス可能なメモリユニットと、
前記複数の同時アドレス可能なメモリユニットに結合されたＮＶＭ装置のコントローラと、
を備え、前記コントローラは、
前記読み取りコマンドによって指定された前記複数の同時アドレス可能なメモリユニットの複数のブロックからデータを読み取り、
前記複数のブロックから読み取られるデータの一部分をエラー修正し、
前記データのエラー修正された部分を、前記データの他の部分を次にエラー修正して転送可能にする前に、前記ＮＶＭ装置から前記インターフェイスを経て前記ホストコントローラへの転送に使用できるようにし、
前記読み取り状態要求に、前記データのエラー修正された部分が転送可能であることを指示する情報で応答する、
ように構成されている、メモリシステム。
【請求項１８】
前記情報は、前記ＮＶＭ装置から前記ホストコントローラへデータを転送する準備ができたことを指示する１つ以上のビットを含む、請求項１７に記載のシステム。
【請求項１９】
前記情報は、前記ホストコントローラへデータを転送する前に前記ＮＶＭ装置から送信される、請求項１７に記載のシステム。
【請求項２０】
前記情報は、前記ホストコントローラへ転送するのに使用できるエラー修正コードセグメントの数を指示する、請求項１７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に、管理型不揮発性メモリ（ＮＶＭ）のアクセス及び管理に係る。
【背景技術】
【０００２】
フラッシュメモリは、電気的に消去可能なプログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）の一形式である。フラッシュメモリは、不揮発性で、比較的高密度であるから、ハンドヘルドコンピュータ、移動電話、デジタルカメラ、ポータブル音楽プレーヤ、及び他の記憶解決策（例えば、磁気ディスク）では不適当な多数の他の装置において、ファイル及び他の持続的オブジェクトを記憶するのに使用される。
【０００３】
ＮＡＮＤは、ハードディスク又はメモリカード等、ブロック装置のようにアクセスできるフラッシュメモリの一形式である。各ブロックは、多数のページ（例えば、６４ないし１２８ページ）で構成される。典型的なブロックサイズは、４ＫＢ−８ＫＢバイトである。ＮＡＮＤ装置は、各々４０９６ないし８１９２個のブロックを有する複数のダイを有することができる。各ページには、エラー検出及び修正チェック和の記憶に使用される多数のバイト（例えば、１２−１６バイト）が関連付けられる。読み取り及びプログラミングは、ページベースで行われ、消去は、ブロックベースで行われ、そしてブロックのデータは、順次に書き込むことしかできない。ＮＡＮＤは、通常の装置動作中にフリップすることのあるビットを修正するためにエラー修正コード（ＥＣＣ）に依存する。消去又はプログラム動作を行うときには、ＮＡＮＤ装置は、プログラム又は消去し損なったブロックを検出して、それらブロックを不良ブロックマップに不良とマークすることができる。データは、異なる良好なブロックに書き込むことができ、不良ブロックは、更新することができる。
【０００４】
管理型ＮＡＮＤ装置は、生のＮＡＮＤをメモリコントローラと結合し、ＮＡＮＤメモリのエラー修正及び検出、並びにメモリ管理機能を取り扱う。管理型ＮＡＮＤは、マルチメディアカード（ＭＭＣ）及びセキュアなデジタル（ＳＤ）カードのような標準的プロセッサインターフェイスをサポートするボールグリッドアレイ（ＢＧＡ）パッケージ又は他の集積回路（ＩＣ）パッケージにおいて商業的に入手できる。管理型ＮＡＮＤ装置は、１つ以上のチップセレクト信号を使用してアクセスできる多数のＮＡＮＤ装置又はダイを含むことができる。チップセレクトは、同じバスに選択された多数のチップのうちの１つのチップを選択するためにデジタル電子装置において使用される制御ラインである。チップセレクトは、典型的に、ほとんどのＩＣパッケージ上にあるコマンドピンで、装置の入力ピンをその装置の内部回路へと接続するものである。チップセレクトピンがインアクティブ状態に保持されるときは、チップ又は装置は、その入力ピンの状態を無視する。チップセレクトピンがアクティブ状態に保持されるときは、チップ又は装置は、バス上の唯一のチップであるかのように応答する。
【０００５】
オープンＮＡＮＤフラッシュインターフェイスワーキンググループ（ＯＮＦＩ）は、異なるベンダーからの適合ＮＡＮＤ装置間の相互動作を許すためにＮＡＮＤフラッシュチップ用の標準低レベルインターフェイスを開発した。ＯＮＦＩ仕様バージョン１．０は、次のものを指定している。即ち、ＴＳＯＰ−４８、ＷＳＯＰ−４８、ＬＧＡ−５２及びＢＧＡ-６３パッケージ内のＮＡＮＤフラッシュのための標準物理的インターフェイス（ピンアウト）；ＮＡＮＤフラッシュチップを読み取り、書き込み及び消去するための標準コマンドセット；及び自己識別のメカニズム。ＯＮＦＩ仕様バージョン２．０は、奇数チップセレクト（チップイネーブル又は“ＣＥ”とも称される）がチャンネル１に接続されそして偶数ＣＥがチャンネル２に接続されたデュアルチャンネルインターフェイスをサポートする。この物理的なインターフェイスは、全パッケージに対してＣＥが８個以下でなければならない。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＯＮＦＩ仕様は、相互動作を許すが、現在のＯＮＦＩ仕様は、管理型ＮＡＮＤ解決策の完全な利点を取り入れていない。
【課題を解決するための手段】
【０００７】
メモリシステムにおいて、ホストコントローラは、不揮発性メモリ（ＮＶＭ）パッケージ（例えば、ＮＡＮＤ装置）に結合される。ホストコントローラは、低レイテンシの読み取り動作を要求する読み取りコマンドをＮＶＭパッケージへ送信する。読み取りコマンドに応答して、ＮＶＭパッケージのコントローラは、データを検索し、そしてデータを修正のためにＥＣＣエンジンへ送信する。読み取りコマンドに続いて、ホストコントローラは、読み取り状態要求コマンドをＮＶＭパッケージのコントローラへ送信する。その読み取り状態要求に応答して、コントローラは、幾つかの又は全てのデータをホストコントローラへの転送に利用できることを指示する状態レポートをホストコントローラへ送信する。このレポートに応答して、ホストコントローラは、データを転送する。
【０００８】
ある具現化において、ＮＶＭパッケージのコントローラによりアンダーラン状態が決定され、読み取り動作の終わりにホストコントローラにより送られる読み取り動作状態要求コマンドに応答してホストコントローラへ報告される。ＮＶＭパッケージにより報告される読み取り動作状態は、非修正データがホストコントローラへ転送された場合にアンダーランがあったかどうか及びデータが修正可能か修正不能かを指示する。読み取り動作状態に基づいて、ホストコントローラは、低レイテンシに関わりなく別の読み取り動作を行う、等のアクションをとることができる。
【発明の効果】
【０００９】
ここに開示する低レイテンシ読み取り動作の効果は、要求された全てのデータがバッファにロードされて修正された後に、任意のデータがホストコントローラへ転送されるという従来の不揮発性メモリシステムに比して、要求されたデータの修正された部分をホストコントローラへ転送できることである。
【図面の簡単な説明】
【００１０】
【図１】管理型ＮＶＭパッケージに結合されたホストプロセッサを含む規範的メモリシステムのブロック図である。
【図２】図１の管理型ＮＶＭパッケージのための規範的アドレスマッピングを示す。
【図３】不良ブロック交換を含む図２のアドレスマッピングを示す。
【図４】管理型不揮発性メモリの低レイテンシ読み取りの規範的方法を示す。
【図５】低レイテンシ読み取り動作におけるアンダーラン状態を決定するための規範的プロセスを示す。
【図６】管理型不揮発性メモリの低レイテンシ読み取りの別の規範的方法を示す。
【図７】ホストコントローラにより遂行される低レイテンシ読み取り動作のフローチャートである。
【図８】ＮＶＭコントローラにより遂行される低レイテンシ読み取り動作のフローチャートである。
【発明を実施するための形態】
【００１１】
メモリシステムの概略
図１は、管理型ＮＶＭパッケージ１０４（例えば、ＮＡＮＤ装置）に結合されたホストコントローラ１０２を含む規範的なメモリシステム１００のブロック図である。ＮＶＭパッケージ１０４は、複数のＮＶＭ装置１０８（例えば、複数の生のＮＡＮＤ装置）を含むＢＧＡパッケージ又は他のＩＣパッケージである。メモリシステム１００は、これに限定されないが、ハンドヘルドコンピュータ、移動電話、デジタルカメラ、ポータブル音楽プレーヤ、玩具、サムドライブ、ｅ−メール装置、及び不揮発性メモリが望まれ又は要求される他の装置を含む種々の装置に使用することができる。ここに使用する「生のＮＶＭ」は、外部のホストプロセッサにより管理されるメモリ装置又はパッケージであり、そして管理型ＮＶＭは、少なくとも１つの内部メモリ管理機能、例えば、エラー修正、ウェアレベリング、不良ブロック管理、等を含むメモリ装置又はパッケージである。
【００１２】
ある具現化において、ＮＶＭパッケージ１０４は、内部チップセレクト信号を使用して内部チャンネルを経てＮＶＭ装置１０８にアクセスしそして管理するためのコントローラ１０６を備えることができる。内部チャンネルは、コントローラ１０６とＮＶＭ装置１０８との間のデータ経路である。コントローラ１０６は、メモリ管理機能（例えば、ウェアレベリング、不良ブロック管理）を行うことができ、そしてデータエラー（例えば、フリップしたビット）を検出し修正するためのエラー修正（ＥＣＣ）エンジン１１０を含むことができる。ある具現化において、ＥＣＣエンジン１１０は、コントローラ１０６におけるハードウェアコンポーネントとして、又はコントローラ１０６により実行されるソフトウェアコンポーネントとして具現化することができる。ある具現化において、ＥＣＣエンジン１１０は、ＮＶＭ装置１０８に配置することができる。
【００１３】
ある具現化において、ホストコントローラ１０２及びＮＶＭパッケージ１０４は、ホスト（ホストチャンネル）に見える通信チャンネルを経て情報（例えば、制御コマンド、アドレス、データ）を通信することができる。ホストチャンネルは、ＯＮＦＩ仕様バージョン２．０に述べられたように、生のＮＡＮＤインターフェイス又はデュアルチャンネルインターフェイスのような標準インターフェイスをサポートすることができる。又、ホストコントローラ１０２は、ホストチップイネーブル（ＣＥ）信号を与えることもできる。ホストＣＥは、ホストコントローラ１０２を見て、ホストチャンネルを選択することができる。
【００１４】
規範的なメモリシステム１００において、ＮＶＭパッケージ１０４は、ＣＥハイディング(hiding)をサポートする。ＣＥハイディングは、ＮＶＭパッケージ１０４の各内部チャンネルに対して単一のホストＣＥを使用して、ＮＶＭパッケージ１０４のインターフェイスをサポートするのに必要な信号の数を減少することができる。メモリアクセスは、図２及び３を参照して述べるように、アドレススペース及びアドレスマッピングを使用して、内部チャンネル及びＮＶＭ装置１０８へマップさせることができる。個々のＮＶＭ装置１０８は、コントローラ１０６により発生された内部ＣＥ信号を使用してイネーブルすることができる。
【００１５】
規範的なアドレスマッピング
図２は、図１の管理型ＮＶＭパッケージ１０４のための規範的なアドレスマッピングを示す。特に、マッピングは、潜在的に複数の平面を各々含む複数のダイを備えた管理型ＮＶＭ装置に使用することができる。ある具現化において、アドレスマッピングは、同時アドレス可能なユニット（ＣＡＵ）において動作される。ＣＡＵは、ＮＶＭパッケージ内の他のＣＡＵと同時に又はそれと並列に読み取られ、プログラムされ又は消去される単一のホストチャンネルからアクセスできる物理的記憶装置の一部分である。ＣＡＵは、例えば、単一平面又は単一ダイでよい。ＣＡＵサイズは、ＣＡＵにおける消去可能なブロックの数である。
【００１６】
マッピングは、図２の規範的メモリアーキテクチャーを使用して説明する。この規範的アーキテクチャーについては、ブロックサイズは、消去可能なブロックにおけるページの数として定義される。ある具現化では、４キロバイトのデータごとに１６バイトのメタデータが使用できる。他のメモリアーキテクチャーも考えられる。例えば、メタデータは、より多くの又はより少ないバイトが割り当てられてもよい。
【００１７】
図２に示されたアドレスマッピングは、ＮＡＮＤブロックを読み取り／プログラムし／消去するための生のＮＡＮＤプロトコル、及び最適な性能を可能にする付加的なコマンドの使用を許す。ＮＶＭパッケージ１０４は、ＮＡＮＤのデータ信頼性を管理するためのＥＣＣエンジン（例えば、ＥＣＣエンジン１１０）を備えている。従って、ホストコントローラ１０２は、ＥＣＣエンジン１１０を含んだり又は信頼性の目的でデータを処理したりする必要はない。
【００１８】
ＮＶＭパッケージ１０４は、ＣＡＵを、他のＣＡＵと同時に又はそれと並列にアクセスできる（例えば、ＮＡＮＤメモリセルから内部レジスタへデータを移動する）エリアとして定義する。この規範的アーキテクチャーでは、全てのＣＡＵが同数のブロックを含むと仮定する。他の具現化では、ＣＡＵは、異なる数のブロックを有することができる。以下のテーブルＩは、ＣＡＵのページにアクセスするための規範的な行アドレスフォーマットを示す。
【表１】
0005591917.tif 000002
【００１９】
テーブルＩを参照すれば、規範的なｎビット（例えば、２４ビット）行アドレスは、次のフォーマット、即ち［ＣＡＵ：Ｂｌｏｃｋ：Ｐａｇｅ］でＮＡＮＤ装置のコントローラへ与えることができる。ＣＡＵは、ダイ或いは平面を表す数字（例えば、整数）である。Ｂｌｏｃｋは、ＣＡＵ数字で識別されたＣＡＵのブロックオフセットであり、そしてＰａｇｅは、Ｂｌｏｃｋで識別されたページオフセットである。例えば、ブロック当たり１２８ページ、ＣＡＵ当たり８１９２ブロック及び６個のＣＡＵをもつ装置では、Ｘが７（２７＝１２８）となり、Ｙが１３（２１３＝８１９２）となり、そしてＺが３（２２＜６＜２３）となる。
【００２０】
図２に示す規範的なＮＶＭパッケージ１０４は、２つのＮＡＮＤダイ２０４ａ、２０４ｂを含み、そして各ダイは、２つの平面を有する。例えば、ダイ２０４ａは、平面２０６ａ、２０６ｂを含む。そして、ダイ２０４ｂは、平面２０６ｃ、２０６ｄを含む。この例では、各平面はＣＡＵであり、そして各ＣＡＵは、２０４８個のマルチレベルセル（ＭＬＣ）ブロックを有し、ブロック当たり１２８ページである。プログラム及び消去動作は、ブロックのストライド（各ＣＡＵからのブロック）で行うことができる。ストライドは、異なるＣＡＵから各々到来するブロックのアレイとして定義される。ここに示す例では、「ストライド０」は、ＣＡＵ０−３の各々からのブロック０を定義し、「ストライド１」は、ＣＡＵ０−３の各々からのブロック１を定義し、「ストライド２」は、ＣＡＵ０−３の各々からのブロック２を定義し、等々である。
【００２１】
ＮＶＭパッケージは、制御バス２０８及びアドレス／データバス２１０を通してＣＡＵと通信するＮＶＭコントローラ２０２を備えている。動作中に、ＮＶＭコントローラ２０２は、ホストコントローラ（図示せず）からコマンドを受け取り、そしてそのコマンドに応答して、制御バス２０８に制御信号を及びアドレス／データバス２１０にアドレス又はデータをアサートし、１つ以上のＣＡＵに対する動作（例えば、読み取り、プログラム又は消去動作）を遂行する。ある具現化では、コマンドは、図２を参照して述べるように、［ＣＡＵ：Ｂｌｏｃｋ：Ｐａｇｅ］の形態の行アドレスを含む。
【００２２】
図３は、不良ブロック交換を含む図２のアドレスマッピングを示す。この例では、ホストコントローラ１０２は、３つのＣＡＵを含むＮＶＭパッケージ１０４のためのストライドアドレスを発行し、ＣＡＵの１つは、ストライドブロックオフセットに不良ブロックを保持する。「ストライド４」アドレスは、通常、ＣＡＵ０：Ｂｌｏｃｋ４、ＣＡＵ１：Ｂｌｏｃｋ４、及びＣＡＵ２：Ｂｌｏｃｋ４にアクセスする。しかしながら、この例では、不良ブロックＣＡＵ１：Ｂｌｏｃｋ４は、ＣＡＵ１：Ｂｌｏｃｋ２０００に置き換えられる。
【００２３】
規範的な低レイテンシ読み取り動作
図４は、管理型不揮発性メモリのための低レイテンシ読み取り動作の規範的な方法を示す。低レイテンシの読み取り状態機能は、データのページの一部分が準備されるや否や、読み取り動作に続いて、ホストコントローラがデータのバイトの転送をスタートできるようにする。この読み取り状態動作は、データの第１部分が準備されたときを指示する。ホストコントローラ及びＮＶＭコントローラが同様のタイミングを使用し、そしてＥＣＣ手順が読み取り動作全体にわたりレイテンシに著しく影響しないと仮定すれば、セグメントが準備されるや否やＥＣＣセグメントの転送をスタートすれば、レイテンシを著しく改善することができる。
【００２４】
ページが正しく配送されたことを検証するため、ホストコントローラは、データの転送の前後に、ＮＶＭコントローラにより与えられる状態を読み取ることができる。状態所有者に関する混乱を防止するために、プロトコルは、同じ行アドレスを使用して実行される２つのペンディングコマンドを有する不法状態として指定することができる。次のテーブルIIは、上述した動作読み取り状態機能により返送される規範的な情報を示す。この例では、８ビット返送値が仮定される。
【表２】
0005591917.tif 000003
【００２５】
前記テーブルIIを参照すれば、ＮＶＭコントローラが“０”を返送する場合には、ＥＣＣ遅延が生じている。ホストコントローラは、ページの一部分を、その一部分がＥＣＣエンジンにより処理される前に読み取る。この状態が生じた場合には、ホストコントローラは、動作読み取り状態を使用し、そして潜在的にページを再読み取りする。ＮＶＭコントローラが“１”を返送する場合には、データがＮＶＭパッケージから不適切に読み取られている。ホストコントローラは、付加的な状態情報のための別の読み取り状態コマンドを発行することができる。ある状態において必要に応じてＮＶＭパッケージから他の情報を返送することができる。
【００２６】
再び、図４を参照すれば、内部バス、ＮＶＭコントローラ、低レイテンシ外部バス及び通常の外部バスによる低レイテンシ読み取り動作中に遂行される低レイテンシ読み取りイベントの４つのスタック行が示されている。時間は、ｘ軸に沿って左から右へ経過する。内部バス及びＮＶＭコントローラは、ＮＶＭパッケージ（例えば、ＮＡＮＤ装置）に配置される。低レイテンシ及び通常の外部バスは、ホストコントローラ（例えば、ホストコントローラ１０２）をＮＶＭパッケージへ結合する。
【００２７】
図４を参照すれば、低レイテンシ読み取りコマンドがホストコントローラから低レイテンシ外部バスを経てＮＶＭコントローラへ送信される。この読み取りコマンドは、ＮＶＭコントローラにより処理される。この例では、ＮＶＭ装置は、図２を参照して述べたマップアドレッシングを使用してアクセスできる３つのＣＡＵを備えている。ＮＶＭコントローラは、ＣＡＵから読み取られたデータのＥＣＣセグメントの処理を開始する。データのセグメント（例えば、１つ以上のページ）は、メモリセルからバッファへ転送される。ＥＣＣセグメントは、データ及びメタデータを含む修正可能な単位サイズとして定義することができる。セグメントがバッファにあると、セグメントは、ＥＣＣエンジンにより処理することができ、そしてセグメントがＥＣＣエンジンにより修正されたか又は修正不能であるかの指示を記録することができる。
【００２８】
ホストコントローラは、それが読み取りコマンドを発行した後に、ＥＣＣセグメントが得られるかどうか決定するためにＮＶＭコントローラへ低レイテンシ状態要求コマンド（ＬＬ状態）を発行する。ＮＶＭコントローラは、ホストコントローラへ転送するためのＥＣＣセグメントが得られることを指示する状態、又はデータに問題があることを指示するエラーコードで応答する。ＥＣＣセグメントが得られることを状態が指示する場合には、ホストコントローラは、外部バスを経てホストコントローラへＥＣＣセグメントを転送するための外部転送コマンド（ＥｘｔＸｆｅｒ）を発行する。このプロセスは、読み取り動作が完了したことを指示するＥＣＣセグメントがもはやなくなるまで、それ自身繰り返される。状態がエラーを指示する場合には、不良データを取り扱う通常のプロセスを遂行することができる（例えば、不良ブロックの置き換え）。
【００２９】
低レイテンシ読み取り動作中に、データのセグメントが、ＥＣＣエンジンにより最初に処理されずに外部バスへ転送されることが考えられる。というのは、ＥＣＣエンジンは、ホストコントローラへの外部転送に間に合うようにＥＣＣプロセスを完了できないからである。これは、「アンダーラン」と称される。この問題に対処するために、ホストコントローラは、ＥＣＣ処理を受けなかったデータが転送されたかどうか、又は不良データが修正不能であったかどうか決定するために最終的な状態要求コマンドを発行する。アンダーランを指示する状態、又はセグメントが修正不能な不良データを含むことを指示する状態をＮＶＭコントローラが与える場合には、ホストコントローラ及びＮＶＭコントローラは、通常の外部バスプロトコルを使用して通常の読み取り動作を遂行する。ある具現化において、通常の読み取り動作は、読み取られるデータをバッファへ完全に転送させる。次いで、全データバッファをＥＣＣエンジンにより処理した後に、通常の外部バスを経てホストコントローラへ転送する。通常の読み取り動作は、図４の最下行により示されている。
【００３０】
規範的なアンダーラン状態の決定
図５は、低レイテンシ読み取り動作においてアンダーラン状態を決定するための規範的なプロセスを示す。ある具現化において、ホスト読み取りバイトポインタ５０２及び最高アドレス有効バイトポインタ５０４の２つのポインタが維持される。ポインタ５０２は、ｎビットフリップ−フロップを使用して具現化することができる。ポインタ５０２は、ホストバス巾チャンクで増加する（例えば、バイトで増加する）。ポインタ５０２は、ホストコントローラにより送信される読み取りコマンドに含まれる行アドレス［ＣＡＵ：Ｂｌｏｃｋ：Ｐａｇｅ］で指定されたページオフセットアドレスに初期化することができる。又、ポインタ５０４は、ｎビットフリップ−フロップを使用して具現化することもできる。ポインタ５０４は、ＥＣＣセグメントで増加する。ポインタ５０４は、ＥＣＣセグメントが修正されるか又は修正不能であるか分かるときに増加する。
【００３１】
ポインタ５０２、５０４は、ポインタ５０２の値がポインタ５０４の値より大きくて、アンダーランを指示するかどうか決定するために、比較器５０６により比較される。アンダーランが検出された場合には、アンダーランフリップ−フロップを“１”にセットすることができる。この例では、アンダーランフリップ−フロップが“０”に初期化されたと仮定する。アンダーランロジックに対して４つの結果が生じ、以下のテーブルIIIに列挙する。
【表３】
0005591917.tif 000004
【００３２】
アンダーランがなく、データが良好である場合には、読み取り動作が通常通りに進行する。アンダーランがなく、修正不能の不良データがある場合にも、読み取り動作は、通常通りに進行することができる（例えば、不良ブロックの置き換えを行う）。アンダーランがあり、データが良好である場合には、ホストコントローラへのＥＣＣセグメントの初期の転送を行わずに読み取り動作を再試みすることができる。アンダーランがあり、データが修正不能である場合には、読み取り動作は通常通りに行うか又は再試みすることができる。
【００３３】
別の低レイテンシ読み取り動作
図６は、管理型不揮発性メモリの低レイテンシ読み取りの別の規範的方法を示す。図６は、図５と同様の形態であり、図５と同じであると解釈されたい。この規範的な方法では、読み取りコマンドが外部の低レイテンシバスを経てＮＶＭコントローラへ送信される。読み取りコマンドは、内部バスを経てＮＶＭコントローラへ転送される。ＮＶＭコントローラは、要求されたデータをバッファへ転送し、そしてバッファのデータに基づいてＥＣＣ動作を遂行する。この例では、読み取り状態コマンドがＮＶＭコントローラへ送信される。ＮＶＭコントローラは、ホストコントローラへの転送に使用できるＥＣＣセグメントの数を指示する状態を返送する。ホストコントローラは、使用可能なＥＣＣセグメントの転送を開始する。転送の完了後に、最終的な読み取り状態がホストプロセッサにより要求される。従って、転送の前に全データが処理されるのを待機するのではなく、図６に示す方法は、セグメントが準備されるや否やＥＣＣセグメントを転送することが許される。ＥＣＣエンジンによりデータが処理されるまでデータを転送することが許されないので、この方法を使用すると、アンダーランが生じない。
【００３４】
ホストプロセッサにより遂行される規範的なプロセス
図７は、ホストコントローラ（例えば、ホストコントローラ１０２）により遂行される低レイテンシ読み取り動作７００、７２２のフローチャートである。プロセス７００は、方法Ａ（ホスト）とも称され、プロセス７２２は、方法Ｂ（ホスト）とも称される。
【００３５】
ある具現化において、プロセス７００は、ホストコントローラが読み取りコマンドをＮＶＭコントローラへ送信するときに開始される（７０２）。読み取りコマンドに続いて、ホストコントローラは、読み取り状態要求コマンドをＮＶＭコントローラへ送信する（７０４）。ホストコントローラは、ＮＶＭコントローラから状態レポートを受け取る（７０６）。状態レポートは、ＥＣＣセグメントが転送の準備ができたかどうか指示する（７０８）。ＥＣＣセグメントが転送の準備ができない場合には、プロセス７００は、ステップ７０４へ復帰する。さもなければ、データがＮＶＭパッケージから読み取られ（７１０）そしてホストコントローラへ送信される。
【００３６】
最後のセグメントが読み取られたかどうかの決定がなされる（７１２）。最後のセグメントが読み取られていない場合には、プロセスは、ステップ７０４へ復帰する。さもなければ、ホストコントローラは、修正不能なＥＣＣセグメントがあるかどうか決定するための最終的読み取り状態を要求する（７１４）。ホストコントローラは、動作状態を受け取る（７１６）。その状態が修正不能なＥＣＣセグメントを指示する場合には（７１８）、修正不能なＥＣＣポリシーが具現化される（７２０）。さもなければ、プロセス７００は、終了となる。
【００３７】
プロセス７００は、データのＥＣＣセグメントの転送の準備を報告し、そしてホストコントローラは、修正されるか又は修正不能と分かったデータのみを転送することに注意されたい。
【００３８】
ある具現化において、プロセス７２２は、ホストコントローラが読み取りコマンドをＮＶＭコントローラへ送信するときに開始される（７２４）。読み取りコマンドに続いて、ホストコントローラは、読み取り状態要求コマンドをＮＶＭコントローラへ送信する（７２６）。ホストコントローラは、ＮＶＭコントローラから状態レポートを受け取る（７２８）。状態レポートは、ＥＣＣセグメントが早期転送に対して準備ができたかどうか指示する（７３０）。ＥＣＣセグメントが早期転送に対して準備ができない場合には、プロセス７２２は、ステップ７２６へ復帰する。さもなければ、ＥＣＣセグメントは、装置から読み取られ（７３２）、ホストコントローラへ転送される。ホストコントローラは、修正不能なＥＣＣセグメント又はアンダーランがあるかどうか決定するために読み取り状態を要求する（７３４）。
【００３９】
ホストコントローラは、ＮＶＭコントローラから状態を受け取る（７３６）。アンダーランが生じたか修正不能なＥＣＣであるかの決定がなされる（７３８）。アンダーランが生じた場合には、ホストコントローラは、ホストコントローラへのデータの早期転送を伴わずに通常の読み取り動作を遂行する（通常のレイテンシでの動作）（７４０）。修正不能なＥＣＣがある場合には（７４２）、修正不能なＥＣＣのポリシーが遂行される（７４４）。さもなければ、プロセス７２２は、終了となる。
【００４０】
プロセス７２２において、ＮＶＭコントローラは、データが修正されたか又は修正不能であるか依然不確定である間にデータの転送を開始できることをホストコントローラに報告するが、それがホストコントローラよりも前に留まるとＮＶＭコントローラが考えるに充分なほど後であることに注意されたい。又、プロセス７２２は、ホストコントローラがＮＶＭコントローラのＥＣＣデータ処理の前を走る、「アンダーラン」と称される、かどうか決定する方法も含む。
【００４１】
ＮＶＭコントローラにより遂行される規範的なプロセス
図８は、ＮＶＭコントローラにより遂行される低レイテンシ読み取り動作８００、８１６のフローチャートである。又、プロセス８００は、方法Ａ（装置）とも称され、プロセス８１６は、方法Ｂ（装置）とも称される。
【００４２】
ある具現化において、プロセス８００は、ＮＶＭコントローラが読み取りコマンドを受信したときに開始される（８０２）。この読み取りコマンドに応答して、ＮＶＭコントローラは、ＥＣＣセグメント（「チャンク」とも称される）を内部バッファへ読み込む（８０４）。バッファのコンテンツは、ＥＣＣセグメントを修正するためにＥＣＣエンジンにより処理される（８０６）。ある具現化において、現在のＥＣＣセグメントがＥＣＣエンジンにより処理される間に次のＥＣＣセグメントを読み取ることができる。
【００４３】
次いで、ＮＶＭコントローラは、読み取り状態要求を受け取り、その要求に応答して、転送に使用できるデータを報告する（８０８）。そのレポートは、転送の準備ができたバイトの数、又は次のチャンクに対する修正不能なＥＣＣ状態を含むことができる。転送が完了したかどうかの決定がなされる（８１０）。転送が完了した場合には、ホストコントローラによる最終的な状態要求に応答して、ＮＶＭコントローラは、修正可能／修正不能状態のレポートをホストコントローラに与える（８１４）。さもなければ、データがホストコントローラへ転送され（８１２）、プロセス８００は、ステップ８０８に復帰する。ある具現化において、ステップ８０６で述べたホスト要求における読み取りループと同時にデータが転送される。設計上、プロセス８００については、アンダーランが生じない。
【００４４】
ある具現化において、プロセス８１６は、ＮＶＭコントローラが読み取りコマンドを受信したときに開始される（８１８）。この読み取りコマンドに応答して、ＮＶＭコントローラは、ＥＣＣセグメント／チャンクを内部バッファへ読み込む（８２０）。バッファのコンテンツは、ＥＣＣセグメントを修正するためにＥＣＣエンジンにより処理される（８２２）。ある具現化において、現在のＥＣＣセグメントがＥＣＣエンジンにより処理される間に次のＥＣＣセグメントを読み取ることができる。
【００４５】
次いで、早期転送のための充分なデータがあるかどうかの決定がなされる（８２４）。ホストコントローラからの読み取り状態要求コマンドに応答して、データの早期転送を開始できるというレポートがＮＶＭコントローラにより与えられる（８２６）。データは、ホストコントローラへ転送される（８２８）。ある具現化において、ステップ８２２で述べたホスト要求において読み取りループと同時に転送される。ホストコントローラからの最終的な読み取り状態要求コマンドに応答して、ＮＶＭコントローラは、アンダーラン状態及び修正可能／修正不能状態をホストコントローラへ報告する（８３０）。
【００４６】
本書は、多数の仕様を含むが、それは、特許請求の範囲を限定するものではなく、特定の実施形態特有の特徴を説明したものである。別々の実施形態に関して本書に述べた幾つかの特徴は、単一の実施形態において組み合わせて具現化できるものである。逆に、単一の実施形態に関して説明した種々の特徴を複数の実施形態において別々に又は適当な準組み合わせで具現化することもできる。更に、それらの特徴は、幾つかの組み合わせで作用するものとして上述され、最初にそのように請求されるが、請求された組み合わせからの１つ以上の特徴を、あるケースでは、その組み合わせから削除してもよく、又、請求された組み合わせを準組み合わせ又は準組み合わせの変形へと向けてもよい。
【００４７】
同様に、動作は、図面に特定の順序で示したが、そのような動作を、図示された特定の順序又は逐次の順序で遂行すること、或いは図示された全ての動作を遂行して希望の結果を得ることが要求されると理解してはならない。ある環境では、マルチタスク及び並列処理が効果的である。更に、上述した実施形態における種々のシステムコンポーネントの分離は、全ての実施形態においてそのような分離が要求されると理解してはならず、又、ここに述べたプログラムコンポーネント及びシステムは、一般的に、単一のソフトウェア製品に一緒に一体化したり、又は複数のソフトウェア製品へパッケージしたりできることも理解されたい。
【００４８】
以上、特定の実施形態について説明した。特許請求の範囲内で他の実施形態も考えられる。
【符号の説明】
【００４９】
１００：メモリシステム
１０２：ホストコントローラ
１０４：ＮＶＭパッケージ
１０６：コントローラ
１０８：ＮＶＭ装置
１１０：ＥＣＣエンジン
２０２：ＮＶＭコントローラ
２０４：ダイ
２０６：平面
２０８：制御バス
２１０：アドレス／データバス
【図１】
0005591917.tif 000005
【図２】
0005591917.tif 000006
【図３】
0005591917.tif 000007
【図４】
0005591917.tif 000008
【図５】
0005591917.tif 000009
【図６】
0005591917.tif 000010
【図７】
0005591917.tif 000011
【図８】
0005591917.tif 000012