(57)【要約】本発明の一実施形態によれば、不揮発性メモリと、複数の使用可能なアレイから一度にアクセスされる不揮発性メモリアレイの数を制限するためのコントローラとを有する、メモリシステム内で使用するための方法および装置が提供され、この方法は、不揮発性メモリアレイとの間でのデータを転送するためにパイプラインシーケンスを実施すること、および一度に動作するアクティブアレイの数を制限することを含み、コントローラはアレイのうちの少なくとも１つが完了するまで待機し、その後で他のアレイとの間の転送を開始するような配置構成である。
2005504388.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、該不揮発性メモリ内で、複数の使用可能アレイから一度にアクセスされる不揮発性メモリアレイの数を制限するためのコントローラとを有する、メモリシステムで使用するための方法であって、
前記不揮発性メモリアレイとの間でデータを転送するためのパイプラインシーケンスを実施するステップと、
一度に動作するアクティブアレイの数を制限するステップであって、その配置構成が、少なくとも１つの前記アレイが完了するまで待機した後に、前記コントローラが他のアレイとの間の転送を開始するような配置構成であるステップとを備え、
それにより、異なるフラッシュメモリアレイ内で並行オペレーションを使用するように構成されたメモリシステム内のフラッシュメモリアクセスを制御し、異なるフラッシュアレイ内の並行フラッシュオペレーションをサポートしているシステム内の性能を容易に変更できる
ことを特徴とする方法。
【請求項２】
不揮発性メモリシステムであって、
複数のメモリアレイを組み込んだ不揮発性メモリと、
前記不揮発性メモリアレイとの間でデータを転送するためのパイプラインシーケンスを実施するための手段と、
一度に動作するアクティブアレイの数を制限するための手段であって、その配置構成が、少なくとも１つの前記アレイが完了するまで待機した後に、前記コントローラが他のアレイとの間の転送を開始するような配置構成である手段と
を含むコントローラとを備え、
それにより、異なるフラッシュメモリアレイ内で並行オペレーションを使用するように構成されたメモリシステム内のフラッシュメモリアクセスを制御し、異なるフラッシュアレイ内の並行フラッシュオペレーションをサポートしているシステム内の性能を容易に変更できる
ことを特徴とする不揮発性メモリシステム。
【請求項３】
請求項１に記載の方法を実行するためにプロセッサを制御するためのプロセッサ実施可能命令を格納したことを特徴とする記憶媒体。
【請求項４】
添付の図面の図２から１２を参照しながら本明細書で記載し、これらの図面のうちのいずれかに示されたものと実質上同じことを特徴とする方法。
【請求項５】
添付の図面を参照しながら本明細書で記載し、これらの図面のうちのいずれかに示されたものと実質上同じことを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの記憶および検索のためのソリッドステートメモリシステム、ならびにソリッドステートメモリシステムの不揮発性メモリへのアクセスを制御するためのメモリコントローラに関する。具体的に言えば、本発明は、フラッシュメモリアクセスの制御を含む、電力消費の精密な制御による、メモリシステムでのデータへの高速アクセス方法に関する。
【背景技術】
【０００２】
コンピュータシステムにおいて磁気ディスク記憶デバイスをエミュレートしようとする場合に、ソリッドステートメモリシステムを使用することが知られている。磁気ディスク記憶をよりよくエミュレートするために、ソリッドステートメモリシステムのオペレーション速度を上げようとすることが、業界の目標である。
【０００３】
典型的なメモリシステムには、不揮発性（フラッシュ）メモリおよびコントローラが含まれる。メモリには、個々にアドレス指定可能なセクタがあり、ここでメモリセクタとは、１つの論理セクタを記憶するために割り振られるフラッシュメモリ位置のグループである。メモリセクタは、フラッシュメモリ内の物理区画でも隣接したフラッシュメモリ位置でもある必要はないため、メモリセクタアドレスは、コントローラが便利に使用する仮想アドレスであってよい。コントローラは、データ構造のメモリへの書込みおよびデータ構造のメモリから読取りを行い、さらにホストから受け取った論理アドレスを、メモリ内のメモリセクタの物理（仮想）アドレスに変換する。
【０００４】
こうしたメモリシステムの一例が示されている文献がある（例えば、特許文献１参照）。図１（従来技術）には、メモリシステム（特許文献１参照）に関して記述されたフラッシュアレイを形成するインタリーブ型フラッシュチップへの、マルチセクタの書込みに関連する、様々なオペレーションのタイミングが示されている。
【０００５】
【特許文献１】
国際公開第００／４９４、８８号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、多くのシステムでは、またポータブルコンピュータなどの特定のシステムでは、電流の最高レベルが、システムの設計、効率、およびコストを定義する非常に重要なパラメータである。メモリ記憶デバイスを含むシステムの場合、その時点でアクティブなフラッシュメモリチップの数が、電流のレベルを定義する重要な要素である。したがって、ピークが高くなり、ホストシステムの電源に対する要求基準を高くしてしまうのを避けるために、電流レベルの最大値を制御することが重要である。また、最高電流レベルを変更できること、および必要であれば性能について妥協できることも重要である。
【０００７】
本発明の目的は、異なるフラッシュメモリアレイでの同時オペレーションを使用するように構成されたメモリシステムで、フラッシュメモリアクセスを制御し、異なるフラッシュアレイでの同時フラッシュオペレーションをサポートするシステムで、性能を簡単に変更できるようにする方法を提供することである。
【課題を解決するための手段】
【０００８】
本発明によれば、不揮発性メモリと、複数の使用可能なアレイから一度にアクセスされる不揮発性メモリアレイの数を制限するためのコントローラとを有する、メモリシステム内で使用するための方法が提供され、この方法は、不揮発性メモリアレイとの間でのデータを転送するためにパイプラインシーケンスを実施すること、および一度に動作するアクティブアレイの数を制限することを含み、コントローラがアレイのうちの少なくとも１つが完了するまで待機し、その後で他のアレイとの間の転送を開始するような配置構成である。
【０００９】
さらに本発明は、複数のメモリアレイと、直前の段落の方法を実施するように配置構成されたコントローラを組み込んだ、不揮発性メモリを有するメモリシステムも提供する。
【００１０】
本発明のこれらおよび他の態様は、添付の図面と組み合わせて以下の説明を読めば明らかになるであろう。
【発明を実施するための最良の形態】
【００１１】
図２に示されるように、フラッシュディスクデバイスは、ディスク記憶デバイスの論理的特徴をホストシステム１２に提示し、フラッシュ半導体メモリ２０をその物理データ記憶媒体として使用する、メモリシステムである。フラッシュディスクメモリシステム１０は、ディスクの論理的特徴を形成するアルゴリズムに従って、システム１０の物理記憶媒体を管理するように、コントローラ１２に要求するものであり、この場合は、メモリシステム１０を形成する、物理インタフェース１８によって接続されるフラッシュメモリ２０およびコントローラ１６である。メモリシステム１０のコントローラ１６は、論理インタフェース１４を介して、システム１０をホスト１２に接続する。
【００１２】
この場合、フラッシュメモリ２０は、複数のフラッシュブロックからなる複数のフラッシュチップを含む。メモリシステム１０への論理インタフェース１４は、ランダムにアクセス可能な、それぞれ５１２バイトのデータを含むセクタと呼ばれる固定サイズの単位で、データをシステム１０に書き込むことおよびシステム１０から読み取ることを可能にするものである。各セクタは、この場合は逐次論理ブロックアドレス（Logical Block Address；ＬＢＡ）である、論理アドレスによって識別される。
【００１３】
本配置構成では、たとえセクタがすでにデータを含んでいる場合であっても、データをセクタに書き込むことができる。論理インタフェース１４でのプロトコルは、この場合、論理的に隣接したセクタアドレスのマルチセクタブロックでの、システムへのアクセスのサポート、読取り、または書込みが可能であり、これらのプロトコルは、ＡＴＡ、ＣｏｍｐａｃｔＦｌａｓｈ、またはＭｕｌｔｉＭｅｄｉａＣａｒｄなどの業界標準に準拠したものであるため、メモリシステム１０は様々なホストシステム間で交換可能となり、ホスト１２での使用に限定されることはない。
【００１４】
コントローラ１６からフラッシュメモリ２０への物理インタフェース１８は、ホストシステムからの５１２バイトのデータに加えて、コントローラ１６によって付加される１６バイトのオーバヘッドデータについて、典型的には十分な容量を有し、この場合には物理セクタと呼ばれ、それぞれにランダムにアクセス可能な、固定サイズの単位で、データのフラッシュメモリ２０への書込みおよびフラッシュメモリ２０からの読取りを可能にするものである。各物理セクタは、物理セクタアドレスによって識別され、通常、それぞれが、メモリサブシステム内のフラッシュチップ、フラッシュチップ内のフラッシュブロック、および物理セクタが書き込まれるメモリ２０のフラッシュブロック内の物理セクタを識別する、別々の構成要素を有する。
【００１５】
図示されたシステム１０内では、セクタが以前に消去されている場合に、データは物理セクタへのみ書込み可能である。フラッシュメモリ２０は、物理インタフェースのコマンドに応答して、典型的には３２の物理セクタを含むフラッシュブロックの単位で消去される。フラッシュシステム１０内で、物理セクタを読み取り、物理セクタをプログラミングし、フラッシュブロックを消去するオペレーションを実行するための相対的な時間は、典型的には、１：２０：２００の比率である。
【００１６】
図２の配置構成では、コントローラ１６はフラッシュ媒体管理コントローラであり、これは、使用の均一な配分を保証する方法が実施される循環（ｃｙｃｌｉｃ）記憶コントローラであって、この方法を実施する媒体管理アルゴリズムは、コントローラ内のプロセッサによってファームウェアとして実施される。
【００１７】
図３を参照すると、循環記憶コントローラ１６に関して定義される、最適なハードウェアアーキテクチャが示されている。この場合、コントローラハードウェアは、別の集積回路内の専用アーキテクチャである。
【００１８】
コントローラ１６は、ホストインタフェース制御ブロック２２、マイクロプロセッサ２４、フラッシュインタフェース制御ブロック２６、ＲＯＭ  ２８、ＳＲＡＭ  ３０、および拡張ポート３２を備え、それぞれが、メモリアクセス制御バス３４によって相互接続されている。
【００１９】
循環記憶フラッシュ媒体管理アルゴリズムは、マイクロプロセッサ２４上で動作するファームウェアによって実施され、コントローラ１６は、すべてのフラッシュ媒体管理機能およびホスト１２へ示される論理インタフェース１４の特徴に関して責務を負うものである。
【００２０】
ホストインタフェース制御ブロック２２は、論理インタフェース１４を介したホストシステム１２との間のデータフローにパスを提供するものである。
【００２１】
この場合、コントローラ１６は専用集積回路の形を取るため、ホストインタフェース制御ブロック２２は、業界標準プロトコルに準拠した論理インタフェース１４を提供し、ならびに、インタフェース１４の論理的特徴を制御するためにマイクロプロセッサ２４に経路を提供する、コマンドレジスタおよびタスクファイルレジスタのセットを提供する。
【００２２】
ホストインタフェース制御ブロック２２は、データのセクタが、論理インタフェース１４を横切って、ホストシステム１２とコントローラのＳＲＡＭ  ３０との間で、マイクロプロセッサ２４からの介入なしに、直接メモリアクセス（ＤＭＡ）オペレーションによって、どちらの方向にも転送できるようにするものでもある。
【００２３】
フラッシュインタフェース制御ブロック２６は、フラッシュメモリ２０との間のデータフローにパスを提供し、フラッシュメモリ２０内で実行されるすべてのオペレーションを制御する。フラッシュメモリ２０内で実行されるオペレーションは、パラメータおよびアドレス情報をフラッシュインタフェース制御ブロック２６にロードするマイクロプロセッサ２４によって、定義および開始される。
【００２４】
典型的に実行されるオペレーションのセットは、フラッシュメモリ２０への物理セクタの転送、フラッシュメモリ２０からの物理セクタの転送、フラッシュメモリ２０への物理セクタのプログラミング、フラッシュブロックの消去、およびフラッシュメモリ２０の状況の読取りである。
【００２５】
同様に、データの物理セクタは、物理インタフェース１８を横切って、フラッシュメモリ２０とコントローラのＳＲＡＭ  ３０との間で、マイクロプロセッサ２４からの介入なしにＤＭＡオペレーションによって、どちらの方向にも転送可能である。フラッシュメモリ２０に転送される物理セクタ内の、５１２バイトのホストデータおよび１６バイトのオーバヘッドデータの編成は、マイクロプロセッサ２４によってロードされるパラメータの制御の下で、フラッシュインタフェース制御ブロック２６内で決定される。
【００２６】
フラッシュインタフェース制御ブロック２６は、フラッシュメモリ２０に転送され、各物理セクタ内でオーバヘッドデータとしてプログラミングされる、１２バイトのエラー修正コード（ＥＣＣ）も生成し、さらにこれは、フラッシュメモリ２０から物理セクタが転送されるときに検証される。
【００２７】
マイクロプロセッサ２４は、メモリアクセス制御バスまたはデータバス３４を介したデータセクタの、あるいはコントローラ１６のフローを制御し、セクタを定義するフラッシュ媒体管理アルゴリズムを実施し、フラッシュメモリ２０内のデータ記憶編成を制御し、ホストシステム１２に対して論理インタフェース１４の特徴を定義する。この場合、マイクロプロセッサ２４は、３２ビットＲＩＳＣプロセッサである。
【００２８】
メモリアクセス制御バス３４は、マイクロプロセッサ２４、ホストインタフェース制御ブロック２２、およびフラッシュインタフェース制御ブロック２６の間、ならびに、ホストインタフェース制御ブロック２２、フラッシュインタフェース制御ブロック２６、およびメモリブロック３０の間での情報の転送を可能にする。
【００２９】
マイクロプロセッサ２４、ホストインタフェース制御ブロック２２、およびフラッシュインタフェース制御ブロック２６は、それぞれ、メモリアクセス制御バス３４上でのトランザクションに関するマスタであってよい。要求元マスタには、サイクルごとに、バスアクセスが認められる。
【００３０】
ＳＲＡＭブロック３０は、すべての一時情報をコントローラ１６に格納し、この格納機能には、セクタデータのバッファリング、制御データ構造および変数ならびにファームウェアコードの格納が含まれる。
【００３１】
ＲＯＭ  ２８は、マイクロプロセッサ２４が実行するためのコード、または、コントローラ内の他のハードウェアブロックによって要求される情報を格納するために、コントローラ１６に含まれる。
【００３２】
コントローラアーキテクチャに拡張ポート３２を含めることによって、メモリシステム１０から、外部ハードウェア機能、ＲＡＭ、またはＲＯＭにアクセスすることができる。
【００３３】
コントローラのオペレーション中に、論理インタフェース１４からホストシステム１２の間、および物理インタフェース１８からフラッシュメモリ２０の間で転送される、すべてのセクタデータは、ＳＲＡＭ  ３０にバッファリングされる。ＳＲＡＭ  ３０では、ホストおよびフラッシュインタフェースでの連続するセクタの同時転送を可能にするために、データの２つのセクタをバッファリングするための十分な容量が割り振られる。論理ホストインタフェース１４とＳＲＡＭ  ３０との間のデータ転送は、バスマスタとして働くホストインタフェース制御ブロック２２によるＤＭＡによって実行される。
【００３４】
物理フラッシュインタフェース１８とＳＡＲＭ  ３０との間のデータ転送は、バスマスタとして働くフラッシュインタフェース制御ブロック２６によるＤＭＡによって実行される。フラッシュメモリ２０内のセクタに書き込まれるデータは、ＳＲＡＭメモリ３０に格納され、直接メモリアクセスにより、フラッシュインタフェース制御ブロック２６の制御の下で、物理インタフェースを介してフラッシュメモリ２０に転送される。セクタ内に書き込まれる５１２バイトのユーザデータは、論理インタフェース１４を介してホストシステム１２によって以前に供給され、直接メモリアクセスにより、ホストインタフェース制御ブロック２２の制御の下で、ＳＲＡＭメモリ３０に転送されたものである。フラッシュメモリ２０のセクタ内でのデータのプログラミングは、物理インタフェース１８で、アドレスおよびコマンドシーケンス、それに続く５２８バイトのデータとＥＣＣ、それに続くプログラムコマンドコードを送信することにより、コントローラ１６によって実施される。
【００３５】
ホストシステムとコントローラのＳＲＡＭ  ３０との間、およびＳＲＡＭ  ３０とフラッシュメモリとの間での、セクタに関するデータの転送は、マイクロプロセッサ２４上で実行されているファームウェアによって制御され、コントローラ１６は、すべてのフラッシュ媒体管理機能およびホスト１２へ示される論理インタフェース１４の特徴に関して責務を負うものである。
【００３６】
コントローラ１６は専用集積回路の形を取るため、ホストインタフェース制御ブロック２２は、業界標準プロトコルに準拠した論理インタフェース、ならびに、インタフェース１４の論理的特徴を制御するためにマイクロプロセッサ２４に経路を提供する、コマンドレジスタおよびタスクファイルレジスタのセットを提供する。コマンド、アドレス、およびパラメータ情報は、ホスト１２によってこれらのタスクファイルレジスタに書き込まれ、コマンドを実行するためにマイクロプロセッサ２４によって読み取られる。情報は、ホスト１２に戻すために、マイクロプロセッサ２４によってレジスタにも書き込まれる。
【００３７】
図４には、循環記憶フラッシュ媒体管理オペレーションを実行する、ファームウェアの階層化構造が示されている。ファームウェアには３つの層があり、第１の層はホストインタフェース層４０、第２の層４２はセクタ転送シーケンサ４２ａおよび媒体管理層４２ｂを有し、第３の層はフラッシュ制御層４４である。
【００３８】
これら３つのファームウェア層４０、４２、および４４は、論理インタフェース１４からホスト１２および物理インタフェース１８からフラッシュメモリ２０の間のデータセクタの転送を制御する。ただし、ファームウェア層が直接データを渡すのではなく、代わりにデータセクタはコントローラ１６のハードウェアブロックによって転送されるため、マイクロプロセッサ２４を介して渡されることはない。
【００３９】
ホストインタフェース層４０は、ホストプロトコルに関するフルセットコマンドをサポートする。これは、ホストインタフェース１４でコマンドを解釈し、ホストプロトコルに従ってインタフェース１４の論理的挙動を制御し、データの転送に関連付けられていないホストコマンドを実行し、以下の層で呼び出されるフラッシュメモリ内のデータに関するホストコマンドを渡す。こうしたコマンドの例は、次のとおりである。
【００４０】
論理セクタ（単一または複数）読取り、
論理セクタ（単一または複数）書込み、
論理セクタ（単一または複数）消去、ならびに、他のディスクフォーマットおよび識別コマンド。
【００４１】
セクタ転送シーケンサ４２ａは、論理データセクタに関する解釈済みコマンドをホストインタフェース層４０から受け取り、論理／物理変換オペレーションのためにフラッシュ媒体管理層４２ｂを呼び出して、フラッシュメモリとの間の物理セクタの転送のためにフラッシュ制御層４４を呼び出す。セクタ転送シーケンサ４２ａは、セクタバッファメモリ管理も実行する。シーケンサ４２ａの他の機能は、ホスト１２から受け取ったコマンドおよびフラッシュメモリ２０用に構成された現在のオペレーションのレベルに従って、ホストインタフェース１４およびフラッシュメモリインタフェース１８でのセクタ転送のシーケンス、ならびに媒体管理層４２ｂでのオペレーションのシーケンスを作成することである。
【００４２】
媒体管理層４２ｂは、単一論理セクタの書込み、読取り、または消去をサポートするために必要な、論理／物理変換オペレーションを実行する。この層は、循環記憶媒体管理アルゴリズムの実施に関する責務を負う。
【００４３】
フラッシュ制御層４４は、セクタ転送シーケンサ４２ａまたは媒体管理層４２ｂからの呼び出しに従ってオペレーションを実行するように、フラッシュインタフェース制御ブロック２６のハードウェアを構成する。
【００４４】
コントローラファームウェアの媒体管理層４２ｂ内で実施される媒体管理機能は、フラッシュ半導体メモリ２０を物理データ記憶媒体として使用する、メモリシステム１０内のディスク記憶デバイスの論理的特徴を作成する。
【００４５】
媒体管理層４２ｂの媒体管理機能によって実行される媒体管理の有効性は、メモリシステム１０へのデータの持続書込み（ｓｕｓｔａｉｎｅｄ  ｗｒｉｔｉｎｇ）を実行するためのその速度、異なるファイルシステムで、およびこの場合はホスト１２で動作するときのその性能レベルを維持する効率、ならびに、フラッシュメモリ２０の長期信頼性によって測られる。
【００４６】
データ書込み速度は、連続する大量のデータをメモリシステム１０に書き込む際に持続可能な速度として定義される。場合によっては、メモリシステムの持続データ書込み速度がテストされる際に、書き込まれるデータの量がメモリシステム１０の容量を超えるため、論理アドレスが繰り返されることがある。
【００４７】
持続書込み速度は、ホスト１２への論理インタフェース１４、およびフラッシュメモリ２０への物理インタフェース１８での、セクタデータ転送速度、ならびに、論理インタフェース１４でホスト１２によって書き込まれるデータセクタの格納に直接関連付けられていない、フラッシュページ読取りおよび書込みオペレーション、ならびにフラッシュブロック消去オペレーションに関する、物理インタフェース１８でのフラッシュメモリ２０へのアクセスのオーバヘッド割合によって決定される。この場合、使用される制御データ構造およびアルゴリズムは、制御機能に関するフラッシュメモリ２０へのアクセスが、ホストセクタ書込みに関するものよりもかなり少ない頻度で要求されることを保証するものでなければならない。持続書込み速度は、媒体管理オペレーションに関するコントローラ１６内での処理時間、ページ読取りおよびプログラム時間、ならびにフラッシュメモリ２０内でのブロック消去時間によっても決定される。
【００４８】
様々な特徴を持つファイルシステムを有するメモリシステムを効率良く動作させるために、フラッシュメモリ２０上のホストデータおよび制御データ構造の編成に関する媒体管理アルゴリズムが適切に定義され、データ書込み性能はそれぞれの環境で維持される。
【００４９】
第１の実施形態では、ＭＳ−ＤＯＳ標準を実施しているファイルシステムには、ホスト１２がマルチセクタ書込みコマンドを使用してデータセクタ群を書き込む、ホスト１２が単一セクタ書込みコマンドを使用してデータセクタを書き込む、ホスト１２がクラスタ化されたファイルデータと共用のアドレススペース内で単一セクタ書込みコマンドを使用して何らかのセクタを書き込む、ホスト１２が単一セクタ書込みコマンドを使用してＭＳ−ＤＯＳディレクトリおよびＦＡＴエントリに関する非隣接セクタを書き込む、ホスト１２がファイルデータ用の隣接セクタが点在するＭＳ−ＤＯＳディレクトリおよびＦＡＴエントリに関する非隣接セクタを書き込む、および／または、ホストが頻繁にＭＳ−ＤＯＳディレクトリおよびＦＡＴエントリに関するセクタを書き換える可能性がある、という特徴のうちの少なくとも１つが与えられる。
【００５０】
セルの物理構造内に磨耗したメカニズムがあり、オペレーションの数が累積されていくと、それによってフラッシュメモリのブロックが障害を起こす可能性があるというのが、フラッシュメモリ、この場合はメモリシステム１０のフラッシュメモリ２０の特徴である。典型的には、これは１００，０００から１，０００，０００プログラム／消去サイクルの範囲である。このことに鑑みて、本配置構成の循環記憶コントローラ１６は、フラッシュメモリ２０の物理アドレススペース内に「ホットスポット」が発生しないこと、および、フラッシュブロックの使用がオペレーションの延長期間にわたって均一に分散されることを保証するために、磨耗均一化のプロセスを実施する。
【００５１】
循環記憶媒体管理アルゴリズムは、メモリシステム１０内で実施され、システム１０内の物理フラッシュメモリ２０の媒体管理オペレーションを実行する。循環記憶媒体管理アルゴリズムは、ホスト情報を書き込む場所を制御するデータ書込みアルゴリズム、古くなった情報を含むフラッシュメモリ２０の領域の消去を制御するブロック消去アルゴリズム、情報を格納するためのフラッシュブロックの使用シーケンスを制御するブロックシーケンシングアルゴリズム、ならびにホストの論理アドレスの物理メモリアドレスへのマッピングを制御するアドレス変換アルゴリズムという、４つの別々のアルゴリズムを含む。
【００５２】
これらのアルゴリズムによって実施される循環記憶媒体管理の方法は、データが書き込まれたシーケンスと同じ順序に従って、フラッシュメモリ２０内の物理セクタ位置でデータが書き込まれるという原理を具体化するものである。これは、循環書込みポインタによって定義された物理セクタ位置で、各論理データセクタを書き込むことによって達成される。
【００５３】
循環記憶媒体管理方法の書込みオペレーションを示す概略図が、図５Ａに示されている。書込みポインタ、この場合には書き込みポインタ（ＤＷＰ）４６は、フラッシュメモリ２０内のフラッシュブロックＸのセクタ位置を順番に通って移動し、ブロックシーケンシングアルゴリズムによって定義された方法で、ブロックＹおよびＺのチェーンを通って続行する。各ブロックＸ、Ｙ、およびＺは、フラッシュメモリ２０の物理構造であり、この場合は、単一のオペレーションで消去可能な３２のセクタ位置を含む。
【００５４】
図５Ｂに示されるように、論理データセクタは通常、ホスト１２のファイルシステムによってファイルに書き込まれ、循環記憶データ書込みアルゴリズムは、前のファイルの最後のセクタに続く次の使用可能物理セクタ位置で、ファイルの第１のセクタを位置付けする。有効なデータがデバイス内にすでに存在する論理セクタを使用して、ホスト１２がファイルを書き込む場合、前のバージョンのセクタは古くなり、それらを含むブロックは、ブロック消去アルゴリズムに従って消去される。古いファイルセクタを含むブロックを消去するためには、場合によっては、他のファイルの何らかの有効なセクタを再配置する必要がある。これは通常、ブロックがファイルのヘッドのセクタ、ならびに異なるファイルの末尾からの無関係な論理アドレスを備えたセクタを含む場合に発生する。
【００５５】
第２の書込みポインタ、この場合はデータ再配置ポインタＤＲＰ  ４７は、１つのファイルのセクタが他のファイルのセクタを含むブロックを断片化しないように、再配置されたセクタを書き込むために使用される。別々の再配置ポインタを使用すると、ファイルを含むブロックの断片化が大幅に削減され、その結果、セクタの再配置に関する要件が最小になり、ファイル書込み性能が最大になる。
【００５６】
ＤＯＳファイルシステムのディレクトリまたはＦＡＴセクタなどの、システム情報を含むセクタも書き込む、ホストファイルシステムが使用され、これらは通常、ファイルを形成するセクタグループの直前および直後に書き込まれる。別のシステムポインタである、システム書込みポインタＳＷＰ  ４８は、システムセクタをファイルデータセクタから分離し、それらが同じ方法で扱われることのないように、それらの論理アドレスによって識別されるシステムセクタの物理書込み位置を定義するために、このホストファイルシステムに対して使用される。これによって、システムセクタの小グループが、１つのファイルの末尾と他のファイルの先頭との間に「はさまれる」ことがない。これらのシステムセクタは多くのファイルに関する情報を含み、通常は、１つのファイルに関するデータよりもかなり高い頻度で書き換えられる。「はさまれた」システムセクタによって、ファイルデータセクタの頻繁な再配置が生じることになり、システムポインタＳＷＰ  ４８を使用することで、データセクタ再配置に関する要件が最小になり、ファイル書込み性能が最大になる。
【００５７】
４番目のポインタであるシステム再配置ポインタＳＲＰ  ４９は、ファイルデータセクタの再配置ポインタＤＲＰ  ４７に類似した、システムセクタの再配置に使用される。
【００５８】
要約すると、４つの書込みポインタは、
ホストシステムによって伝送されるファイルデータセクタを書き込むための物理位置を定義する際に使用される、データ書込みポインタ、ＤＷＰ  ４６と、
使用中のホストファイルシステムの特徴に従って、論理アドレスによってシステムセクタが識別される、ホストシステムによって伝送されるシステムセクタを書き込むための物理位置を定義する際に使用される、システム書込みポインタ、ＳＷＰ  ４８と、
古いファイルデータセクタによって占有されている容量を回復するために、ブロック消去の前に時折再配置しなければならない、ファイルデータセクタを書き込むための物理位置を定義する際に使用される、データ再配置ポインタ、ＤＲＰ  ４７と、
古いシステムセクタによって占有されている容量を回復するためのブロック消去の前に再配置しなければならない、システムセクタを書き込むための物理位置を定義する際に使用される、システム再配置ポインタ、ＳＲＰ  ４９である。
【００５９】
ブロックは、単一書込みポインタのみに関連付けられたデータを含まなければならず、その結果、各書込みポインタにつき１つずつ、すなわち４つの別々のブロックチェーンが存在することになる。ただし、循環記憶アルゴリズムの同じ書込みおよび再配置アルゴリズムが、各書込みポインタ４６、４７、４８、および４９に適用される。
【００６０】
複数の書込みポインタの使用と組み合わされた、先行セクタに続く最初の使用可能位置に書き込まれるセクタを位置付けるためのこのスキームは、完全にフレキシブルであり、単一セクタデータおよび任意のサイズのデータ群を含む、すべてのホスト書込み構成に関して、高い性能および完全な互換性を与えるものである。
【００６１】
ただし、循環記憶媒体管理方法が定義されるのは、多数の古いデータセクタの存在を許容するためでもなければ、ガーベージコレクションなどの機能のためのバックグラウンドオペレーションを実施するためでもない。典型的には、データ書込みポインタＤＷＰ  ４６およびシステム書込みポインタＳＷＰ  ４８のそれぞれについて、古いセクタを含む２つのブロックのみが存在可能であり、ブロック消去は、セクタ書込みシーケンス中にフォアグラウンドオペレーションとして実行される。
【００６２】
この管理方法は、大容量の古いデータが存在できるようにフラッシュメモリの論理容量を削減する必要がないこと、ホストによって開始されるパワーダウンによって中断されやすいバックグラウンドオペレーションがないことによって、データの整合性が大幅に改善されること、および、一度に１つのブロックについてのみ消去オペレーションが必要であるため、データ書込みシーケンス中の休止が短いことを意味する。
【００６３】
古いデータセクタが、いずれかの書込みポインタに関連付けられた新しいブロック内に作成されると、既存の「古いブロック」は消去によって削除され、その後、必要であればブロック内でセクタが再配置される。
【００６４】
ホスト１２から送られるセクタ消去コマンドは、ターゲットセクタを古いものとしてマーク付けし、その後、ブロック消去アルゴリズムに従ってその消去を実行できるようにすることによってサポートされる。
【００６５】
循環記憶ブロックシーケンシングアルゴリズムは、新しいかまたは再配置されたデータの書込みにフラッシュメモリ２０内のブロックが使用されるシーケンスを判定するものであり、したがって、使用されるフラッシュメモリシステム１０に対して指定された持続時間を超えるいくつかの書込み／消去サイクルを経験するブロックがないことを保証する責務を負う。
【００６６】
論理セクタがホストによって書き込まれる場合、メモリシステム内に存在するどんな以前のバージョンも、古いデータとして取り扱われる。ブロック消去アルゴリズムは、古いデータセクタによって占有される容量を回復できるようにするために、これらのセクタを含むブロックが即時に消去されることを保証する。したがって、システム１０の物理メモリ容量は、ホストによって書き込まれる論理セクタに関する有効データに加えて、少数の所有権を主張できる循環記憶制御データ構造およびいくつかの消去済みブロックによって占有される。フラッシュメモリ２０の初期フォーマット化直後、メモリ２０の容量は、ほぼすべてが消去済みブロックからなる。ホスト１２が、その論理アドレススペース内のすべてのセクタに対して少なくとも１回書き込むと、デバイスは論理的にいっぱいであるとみなされ、その物理容量はほぼすべてが、正しいデバイスオペレーションのために維持される少数の消去済みブロックを備えた、有効なデータセクタで占有される。ホスト１２が論理セクタを消去するためのコマンドを実行した場合にのみ、消去済みブロックの数が増えることになる。
【００６７】
書込みポインタのうちの１つによる使用のため、または制御データ構造を格納するために割り振られる消去済みブロックは、使用可能な消去済みブロックのプールから取り出される。ブロックは、その特定のブロックに対して書込みオペレーションを実行する必要性に応答して消去されるものでは決してなく、ブロックシーケンシングアルゴリズムは、消去済みプール内のブロックのデータ書込みオペレーションのための割振り順序を判定する。アルゴリズムに従って、要件が、書込みポインタのうちの１つによって使用されるためか、または制御データ構造用であるかにかかわらず、次に使用可能なブロックが割り振られる。
【００６８】
循環記憶媒体管理を実行するこれらのアルゴリズムを実施すると、フラッシュメモリ２０の個々のセクタ上で動作すること、およびその論理アドレススペース内のあらゆるセクタの論理／物理アドレスマッピングを別々に追跡することによって、システムの柔軟性が増加する。あらゆる論理セクタの物理アドレスを含むセクタアドレステーブルは、フラッシュメモリ２０内に維持される。さらに、あらゆるセクタは、その論理アドレスを含むヘッダと共に書き込まれ、セクタのアイデンティティを検証し最高のデータ保全性を保証する手段を提供する。
【００６９】
データ書込みアルゴリズムをその循環書込みポインタと共に使用すると、順次物理位置内のセクタのヘッダにある論理アドレスを使用して、セクタ書込みのシーケンスを追跡する機能が提供される。この機能は、たとえ、最近書き込まれたセクタに関する論理／物理アドレスマッピング記録が揮発性のコントローラのメモリＳＲＡＭ  ３０内に一時的に保持され、フラッシュメモリ２０内には保持されない場合であっても、トータルなデータセキュリティを提供する。こうした一時記録は、循環記憶アルゴリズムが実施されるシステム１０が初期設定されるときに、フラッシュメモリ２０内のデータセクタから再構築することができる。したがって、フラッシュメモリ２０内のセクタアドレステーブルは、頻繁ではなく更新することが可能であり、制御データの書込みオペレーションのオーバヘッドの割合が下がり、データ書込みの持続率が上がることになる。
【００７０】
図６には、メモリシステム１０で実行される３レベル階層のマッピング構造５０を使用する、アドレス変換プロセスの概略図が示されている。
【００７１】
３レベル階層とは、セクタアドレステーブル５２、一時セクタアドレステーブル５４、およびセクタアドレスレコード５６である。
【００７２】
マッピング構造の最上位階層はセクタアドレステーブル５２であり、これは、システム１０に格納されたあらゆる論理セクタに関する物理アドレスを含むマスタテーブルであり、フラッシュメモリ２０に格納される。階層の２つの低位層５４および５６内の構造が、セクタアドレステーブルに対して書込みオペレーションを実行しなければならない頻度を減らすための手段を提供する。
【００７３】
セクタアドレスレコード５６は、コントローラの揮発性メモリＳＲＡＭ  ３０に格納された、システム１０に書き込まれた論理的に隣接するセクタのリストである。このリストにより、フラッシュメモリ２０にアクセスする必要なしに、それに含める任意の論理セクタの物理アドレスを判定することができる。これは、デバイスの初期設定時に、フラッシュメモリ２０内で追跡可能な最近書き込まれたセクタのシーケンスから再構築することも可能である。中間の一時セクタアドレステーブル５４は、フラッシュメモリ２０内に含まれ、リストがいっぱいになったときに、セクタアドレスレコード５６の内容を使用して更新される。中間の一時セクタアドレステーブル５４は、セクタアドレステーブル５２と同じ形式であり、より効率的なテーブル書込みプロセスが実行可能なように、セクタアドレステーブル５２の特定のブロックに対する物理アドレスデータの更新を累算することができる。一時テーブル５４は、セクタアドレステーブル５２にアクセスする必要なしに、それに含める論理セクタの物理アドレスを判定できるようにするものである。
【００７４】
このマッピング構造階層５０は、フラッシュメモリに対する書込みオペレーションの頻度が少ないという要件で維持され、たとえシステム１０から電源が予期せずに除去された場合であっても、セクタアドレス情報のトータルなセキュリティが提供されるような方法で、論理／物理アドレス変換を効率的にサポートする。
【００７５】
循環記憶媒体管理アルゴリズムをサポートするために必要なデータ構造は、かなり制限された量の制御データのみを制御プロセッサの揮発性ＲＡＭ  ３０内に一時的に保持しながら、ホストデータセクタと共に主としてフラッシュメモリ２０内に格納される。揮発性メモリ３０内に保持された情報は重要ではなく、電源が中断された場合はフラッシュメモリ２０から再構築することができる。
【００７６】
上記で述べたように、フラッシュメモリシステム１０内のコントローラ１６は、一度にフラッシュメモリ２０内の１つのアレイ上でしか動作できない。各アレイは、フラッシュメモリ記憶セルのグループであり、その中では、一度に単一のセクタプログラムオペレーションまたはブロック消去オペレーションしか実行できない。この場合、アレイは完全なフラッシュチップである。コントローラは、異なるアレイ内のセクタ上でプログラムオペレーションを同時に実行できるか、または、異なるアレイ内のブロック上で消去オペレーションを同時に実行できるように設計される。コントローラ１６は、フラッシュメモリ２０内の任意のアレイの現在の状況を、他のアレイとは独立に、アドレス指定、プログラム、およびチェックすることができる。
【００７７】
各セクタは、単一オペレーションでプログラミングされるフラッシュメモリ２０内の物理記憶の単位である。ＮＡＮＤフラッシュメモリチップを含む本配置構成では、フラッシュアレイ内のページと等価のセクタは、５２８バイトの容量を有する。この場合、各フラッシュチップは４つのアレイを含むとみなされ、それぞれが、いつでも１つのセクタでプログラミング可能である。
【００７８】
転送のスケジューリング、すなわちセクタデータの順序付けは、図４に示されたセクタ転送シーケンサブロック４２ａによって制御されるものであり、図７から１１を参照しながら、より詳細に説明する。ホストインタフェース１４でのデータの転送は、メモリシステム１０のフラッシュメモリへの物理インタフェース１８でのデータ転送とは独立しており、ホストインタフェースでのバースト転送速度は、ホスト１２によって決定される。セクタデータの転送をスケジューリングするいくつかの異なる方法は、フラッシュメモリ２０内のブロックおよびページがコントローラ１６によってアドレス指定される方法に応じて、セクタ転送シーケンサファームウェアによって実施可能である。記載された方法は、セクタデータがホストによって供給され、前述のように、フラッシュメモリ２０に転送するためにセクタデータを供給するのに十分な速度でＳＲＡＭ  ３０内に格納されることを想定したものである。
【００７９】
図７を参照すると、コントローラがメモリシステム１０内のブロックおよびページをアドレス指定するのに使用可能な、セクタデータの転送をスケジューリングする方法の第１の実施形態が示されており、フラッシュメモリ２０は４つのフラッシュアレイ０、１、２、および３を含み、コントローラ１６は、並行するページプログラムまたはブロック消去オペレーションを２つのアレイ内で同時に開始する必要がある。アレイはペアでリンクされており、リンクされたアレイ内で同じアドレスを持つ対応するブロック０は、単一の仮想ブロック０として扱われる。図に示されるように、フラッシュアレイ０内のブロック０は、フラッシュアレイ１内のブロック０とリンクされて、仮想ブロック０を形成する。フラッシュアレイ０および１のそれぞれにおいてＮ個のブロックがリンクされ、０からＮ−１までのラベルが付けられたＮ個の仮想ブロックを形成しており、さらに、フラッシュアレイ３および２のそれぞれにおいてＮ個のブロックがリンクされ、Ｎから２Ｎ−１までのラベルが付けられたＮ個の仮想ブロックをさらに形成している。各仮想ブロック内でのセクタの書込み順序は、仮想ブロック内のセクタを順に通過して移動する際に構成ブロック間で交互になる、書込みポインタの動きによって決められる。
【００８０】
図８では、メモリシステム１０内のブロックおよびページをアドレス指定する際にコントローラが使用できる方法の第２の実施形態が示されており、フラッシュメモリ２０は４つのフラッシュアレイを含み、コントローラ１６は、４つのアレイでページプログラムまたはブロック消去オペレーションを並行して開始する必要がある。４つのアレイはすべてリンクされており、リンクされたアレイそれぞれで同じアドレスを持つ対応するブロックは、単一の仮想ブロックとして扱われる。図を見ればわかるように、フラッシュアレイ０から３内のブロック０がリンクされ、仮想ブロック０を形成している。フラッシュアレイ０から３のそれぞれにおいてＮ個のブロックがリンクされ、０からＮ−１のラベルが付けられたＮ個の仮想ブロックを形成している。仮想ブロック内でのセクタの書込み順序は、ブロック０から３の対応するセクタを通過して移動する書込みポインタの動きによって決められ、その後、仮想ブロック内のセクタを順に通過して移動する際に、ブロック０内の次のセクタへ増分する。
【００８１】
仮想ブロックを形成するためにリンクされた個々のフラッシュアレイ内のブロックは、それ自体が、互いに積み重ねられた複数の小さな隣接する物理ブロックを含む。
【００８２】
プログラムオペレーションは、仮想ブロックを形成する構成ブロックのそれぞれから、１つのセクタ上でほぼ同時に実行することができる。
【００８３】
図９を参照すると、図８のフラッシュアレイ０、１、２、および３に示されたセクタ０、１、２、および３を、同時にプログラミングする方法の第３の実施形態が示されている。セクタ０に関するデータは、フラッシュメモリ２０への物理インタフェースを通って、フラッシュアレイ０へバイト順（ｂｙｔｅ  ｓｅｒｉａｌｌｙ）に転送され、その後、コントローラ１２によって、プログラムオペレーションを開始するためのプログラムコマンドがフラッシュアレイ０に送られる。セクタ０がプログラミングされている間、コントローラ１２はセクタ１に関するデータをフラッシュアレイ１に転送し、それに関するプログラムオペレーションを開始する。同じことがセクタ２および３について実行される。セクタ０から３は、フラッシュアレイ０から３内で互いにほぼ同時にプログラミングされ、フラッシュメモリ内のセクタにデータを転送してプログラミングする速度は、一度に１つのフラッシュアレイのみをプログラミングすることによって達成できる速度よりも、格段に早い。フラッシュアレイ０から３内でのプログラムオペレーションがすべて完了すると、このプロセスはセクタ４から７に対して繰り返される。すべてのアレイが、セクタ０から３のプログラミングを完了したとき、およびアクティブなフラッシュアレイがないときに、フラッシュアレイからの共用のビジー／レディ（ｂｕｓｙ／ｒｅａｄｙ）回線を使用して、信号を送ることができる。ただし、別法として、すべてのアレイの状況を独立してポーリングすることができる。
【００８４】
図１０には、フラッシュアレイ０から３で、セクタデータを転送するため、およびプログラミングオペレーションを開始するためのシーケンスの、第４の実施形態が示されている。図９を参照しながらセクタ０から３について説明したシーケンスが実行されるが、フラッシュアレイでのプログラミングオペレーションが完了すると、セクタデータは、そのアレイでの次のプログラミングオペレーションのために即時に転送される。アレイ内でのオペレーションが完了したことを見つけるために、各アレイの状況は独立してポーリングされる。あるいは、あらゆるアレイからの独立したビジー／レディ信号を使用することができる。このようにセクタデータの転送およびセクタプログラミングのパイプラインが増加すると、フラッシュメモリ内にセクタデータを書き込むための速度も増加する。
【００８５】
上記に記載された実施形態で詳細に述べたこれらの方法は、それぞれ、フラッシュメモリ内の他のセクタから再配置されるセクタデータ、ならびにホストシステムによって供給されたセクタデータを書き込むために使用することができる。
【００８６】
異なるフラッシュアレイ内に同時にプログラミングされるセクタの順序は、図８に示された順序に従う必要はなく、すなわち、逐次順を使用する必要はない。同じアレイからの２つのセクタが使用されていないことを条件として、フラッシュアレイからの任意のセクタを、他のアレイからの任意の他のセクタと同時にプログラムすることが可能である。例えば、図８の４つのセクタのグループを、セクタ１０、セクタ３、セクタ１、次いでセクタ４の順で、転送およびプログラミングすることが可能となる。ただし、仮想ブロックのアドレスを順に通過して移動する循環書込みポインタを使用する場合は、セクタアドレスが逐次順となるのが最も一般的である。データが同時に転送およびプログラミングされる４つのセクタのグループの第１のセクタが、フラッシュアレイ０に配置されている必要はない。例えばセクタは、セクタ２、セクタ３、セクタ４、およびセクタ５の順に転送することができる。
【００８７】
セクタのクラスタに関する書込み時間は、セクタデータに関するフラッシュメモリ２０への転送時間と、フラッシュメモリ２０内のセクタに関するプログラミング時間の関数として表すことができる。プログラミング時間は通常２００マイクロ秒であり、通常およそ３０マイクロ秒である転送時間よりもかなり長い。コントローラによるフラッシュチップのアドレス指定およびデータの転送およびプログラミングの開始に関連付けられた時間は、通常は重要でない。図９に示された例では、クラスタ書込み時間は、
クラスタ書込み時間＝８＊セクタデータ転送時間＋２＊プログラミング時間
によって得られる。
【００８８】
図１０に示された例では、クラスタ書込み時間は、
クラスタ書込み時間＝５＊セクタデータ転送時間＋２＊プログラミング時間
によって得られる。
【００８９】
上記で詳細に説明したように、４つのフラッシュメモリアレイすべてにアクセスしており、その結果、電流レベルが高くなり（＝４＊アレイ電流）、同時に性能が最大になる。
【００９０】
図１１を参照すると、電流を制御するために、一度にアクセスされるフラッシュメモリアレイの数を制限することのできる方法の、第１の実施形態が示されている。図を見るとわかるように、図１１は、フラッシュアレイ０から３で、セクタデータを転送するため、およびプログラミングオペレーションを開始するための、パイプラインシーケンスを示す図であるが、アクティブなフラッシュメモリアレイの最大数は３に限定されている。図９および１０を参照しながらセクタ０から２について記述したシーケンスが実行されるが、その後、アクティブアレイの数が３に限定され、したがってコントローラ１６は、アレイのうちの少なくとも１つ、この場合はチップ０が完了するのを待つ。アクティブアレイの数が３より少なくなると必ず、セクタデータは、次のチップでの後続のプログラミングオペレーションのために即時に転送される。言い換えれば、任意のフラッシュアレイにアクセスする前に、この場合は３である許容制限に照らして、現在アクティブなアレイの数が必ずチェックされる。このようにして、電流レベルが調整される。
【００９１】
図１１に示された例では、クラスタ時間は
クラスタ書込み時間＝４＊セクタデータ転送時間＋３＊プログラミング時間
となる。
【００９２】
同様に、アクティブアレイの数を２または１に制限することもできる。アクティブアレイ制限が２である４ウェイのインタリーブ型メモリシステム（図示せず）の場合と同様に、そのクラスタ時間は、
クラスタ書込み時間＝５＊セクタデータ転送時間＋４＊プログラミング時間
となる。
【００９３】
システム１０のフラッシュメモリ２０が、異なるフラッシュオペレーションについて異なる電気パラメータを有する場合、すなわち読取り、転送、プログラミング、および消去オペレーションについての電気パラメータがすべて異なる場合、電流の制御を実行する、より複雑な方法を使用することができる。話を簡単にするために、アレイは前述と同様に、０から３の順にプログラムされるものとする。チップが完了した時間を見つけるために、あらゆるアレイの状況が独立してポーリングされる。そうでない場合は、あらゆるアレイからの独立したレディ／ビジー信号を使用することができる。この方法は同じパイプライン方法を使用するが、電気レベルを制限するために、特別に故意の遅延を作成する。
【００９４】
フラッシュアクセス制御をパイプラインと組み合わせることで、フラッシュメモリ性能をかなり効率良く使用することが可能となり、電力を制限しながらも、フラッシュメモリ内でセクタデータを書き込む速度は依然として高速のままである。この方法によって、ほぼ常に、定義されたアクティブアレイの数、この場合は３が可能である。同じ方法を、読取りおよび消去などの、任意の他のフラッシュオペレーションに適用することができる。
【００９５】
アクティブメモリアレイの最大数は、書込み性能と電流レベルとの間の比率を定義するために、ホストによってフレキシブルに変更／プログラミングすることができる。一部のホストは、標準定義の電力管理機能を実行可能にすること、および電力消費と性能との間の妥協レベルを定義することによって、これが実施可能である。ただし、一部のホストシステムは、電流レベルの低い低速のメモリデバイスを好むことがあり、場合によっては、同じホストシステムが異なるオペレーティングモードで異なる性能と電力消費の組合せを好むことさえもある。これらの配置構成には、それぞれ、上記の方法を使用して応えることができる。
【００９６】
本発明の範囲を逸脱することなく、前述の配置構成に様々な修正を行うことができる。例えば、フラッシュディスクデバイスを組み込んだシステムを、システムアーキテクチャに従って、いくつかの方法で物理的に区分することができるが、すべてのシステムは通常、上記で述べた構造に準拠する。例えば、フラッシュメモリ２０は、図２では、メモリシステム１０の一部であるものとして示されているが、代わりに、リムーバブルカード上にあり、前述のような工業規格プロトコルに準拠した論理インタフェース１４を介してホストシステムに接続されていてもよい。こうした工業規格の例が、ＰＣＭＣＩＡ  ＡＴＡ、ＣｏｍｐａｃｔＦｌａｓｈ、およびＭｕｌｔｉＭｅｄｉａＣａｒｄである。こうした配置構成では、コントローラはリムーバブルカード上にあってよく、この場合、コントローラは通常、単一の集積回路である。フラッシュメモリ１０は１つまたは複数の集積回路からなり、コントローラは、フラッシュメモリと同じ集積回路上に統合することができる。
【００９７】
ホストおよびフラッシュシステムが物理的に区分され、その結果、フラッシュメモリのみがリムーバブルカード上にあって、ホストシステムへの物理インタフェースを有するような場合も可能である。この配置構成の階層が、図１２に示されている。こうしたリムーバブルフラッシュメモリカードの一例が、ＳｍａｒｔＭｅｄｉａ（登録商標）である。コントローラはホストシステム１１内に配置され、集積回路または、ホストシステム内のプロセッサによって実行されるファームウェアの形をとることができる。
【００９８】
あるいは、本発明の方法を、ホストシステムから物理的にリムーバブルでない組込み型メモリシステムで実施することもできる。こうしたシステムは、リムーバブルカード上のメモリシステムに使用されるものと同じ区画を有することが可能であり、コントローラは集積回路の形を取り、論理インタフェースは工業規格プロトコルに準拠している。ただし、コントローラは、ホストシステム内の他の機能と統合することも可能である。
【００９９】
記載された配置構成では、各セクタはＬＢＡによって識別されるが、本来は磁気ディスクデバイスで使用されるシリンダ／ヘッド／セクタ（ＣＨＳ）形式のアドレスによって識別することもできる。さらに記載された配置構成では、コントローラハードウェアは、別々の集積回路における専用アーキテクチャであるが、マイクロプロセッサなどのコントローラハードウェアの要素を、ホストシステム内の他の機能と共用することができる。さらに、循環記憶管理アルゴリズムをホストシステム内のマイクロプロセッサで実施するか、または、専用のコントローラハードウェアなしに、標準マイクロプロセッサ入出力ポートを介してプロセスを実行することができる。コントローラが組込み型メモリシステムの一部であり、そのマイクロプロセッサをホストシステムの他の機能と共用している場合、メモリシステムの制御のための論理インタフェースは、プロセッサによって実行されるファームウェア内で直接実施することが可能であり、これは、ハードウェアレジスタを削除して、ファームウェアコード内のホスト関数と呼ばれることのあるコントローラ関数に、変数を直接渡すことができることを意味する。
【０１００】
上記で述べたフラッシュメモリシステムでは、ホストまたはフラッシュインタフェースとＳＲＡＭとの間のデータ転送はＤＭＡによって実行されるが、代替の実施形態では、セクタデータのバッファリング専用に、別のメモリブロックを使用することができる。通常、このメモリブロックは、ホストインタフェース制御ブロックおよびフラッシュインタフェース制御ブロックによる独立したアクセスがポートに割り振られた、デュアルポートＲＡＭであってよい。
【０１０１】
記載された配置構成では、メモリセクタが配置されたメモリブロックが、１６のセクタ位置を含むフラッシュメモリ内の物理構造であるものとして記載されたが、これらのメモリブロックは、３２のフラッシュ位置を含むことも可能である。さらに別法として、メモリブロックは、複数のフラッシュチップ、またはコントローラによる単一オペレーションで消去される同じチップ内にある複数の独立アレイにわたって分散された物理ブロックを含む、仮想ブロックであってもよい。仮想ブロックがＭ個の物理ブロックを含み、それぞれがＮ個のセクタ容量を備えている場合、仮想ブロックの容量はＭ＊Ｎセクタである。仮想ブロックは、循環記憶媒体管理アルゴリズムによって、物理ブロックとまったく同様に扱われる。
【０１０２】
また、メモリシステムのＲＯＭおよびコントローラの拡張ポートは、オプションの機能であり、含まれる必要はないことに留意されたい。
【０１０３】
さらに上記では、フラッシュメモリ内の各アレイが完全なフラッシュチップであるものとして説明したが、各アレイは、何らかの５１２ＭビットのＮＡＮＤフラッシュデザインなどの何らかのフラッシュチップが、１つのチップ内に複数のアレイを組み込むようなチップの構成部分であってよく、別々のセクタプログラムオペレーションをチップ内の異なるアレイで独立して開始することができる場合もある。説明では、フラッシュアレイ内のページがセクタと等価であるように記述してきたが、一部のＡＮＤフラッシュメモリチップでは、ページは４つのセクタを含み、２１１２バイトの容量を有するものであってよく、どちらの場合も、ページは単一のオペレーションでプログラミングされる。さらに、セクタデータの各グループは、ファイルの最初の４セクタデータであるように記載してきたが、別法として、ファイル断片であってもよい。さらにホストシステムは、メモリシステムにデータをクラスタ単位で書き込むことも可能であり、各クラスタは、単一セクタとしてメモリシステムに書き込まれるデータとは反対に、整数（ｉｎｔｅｇｒａｌ  ｎｕｍｂｅｒ）グループとしてのコントローラのように扱われることになる。
【０１０４】
本発明は、メモリシステムのマイクロプロセッサ上で動作するコンピュータプログラムによって実施される。本発明の一態様は、上記に記載された方法を実施するためにプロセッサを制御するための、プロセッサ実施可能命令を格納する記憶媒体を提供する。
【図面の簡単な説明】
【０１０５】
【図１】従来技術のメモリシステムのタイミングオペレーションを示す概略図である。
【図２】本発明が実施されるメモリシステムおよび関連付けられたホストシステムを示す図である。
【図３】図２のメモリシステムのコントローラのハードウェアアーキテクチャを示す概略図である。
【図４】図３のコントローラのマイクロプロセッサ内で実行されるファームウェアを示す概略図である。
【図５Ａ】図３のコントローラによって使用されるデータ書込みオペレーションを示す概略図である。
【図５Ｂ】読取りおよび書込みポインタオペレーションを示す図である。
【図６】図３のコントローラによって使用されるアドレス変換プロセスの階層マッピング構造を示す概略図である。
【図７】本発明の第１の実施形態に従って、セクタデータの転送をスケジューリングする方法を示す概略図である。
【図８】本発明の第２の実施形態に従って、セクタデータの転送をスケジューリングする方法を示す概略図である。
【図９】本発明の第３の実施形態に従って、セクタデータの転送をスケジューリングする方法を示す概略図である。
【図１０】本発明の第４の実施形態に従って、セクタデータの転送をスケジューリングする方法を示す概略図である。
【図１１】本発明に従ってアクティブアレイの数を制限しながらデータの転送をスケジューリングする方法を示す概略図である。
【図１２】本発明が実施可能な代替のメモリシステム配置構成を示す図である。
【図１】
2005504388.tif 000003
【図２】
2005504388.tif 000004
【図３】
2005504388.tif 000005
【図４】
2005504388.tif 000006
【図５Ａ】
2005504388.tif 000007
【図５Ｂ】
2005504388.tif 000008
【図６】
2005504388.tif 000009
【図７】
2005504388.tif 000010
【図８】
2005504388.tif 000011
【図９】
2005504388.tif 000012
【図１０】
2005504388.tif 000013
【図１１】
2005504388.tif 000014
【図１２】
2005504388.tif 000015
【国際公開パンフレット】
2005504388.tif 000016
2005504388.tif 000017
2005504388.tif 000018
2005504388.tif 000019
2005504388.tif 000020
2005504388.tif 000021
2005504388.tif 000022
2005504388.tif 000023
2005504388.tif 000024
2005504388.tif 000025
2005504388.tif 000026
2005504388.tif 000027
2005504388.tif 000028
2005504388.tif 000029
2005504388.tif 000030
2005504388.tif 000031
2005504388.tif 000032
2005504388.tif 000033
2005504388.tif 000034
2005504388.tif 000035
2005504388.tif 000036
2005504388.tif 000037
2005504388.tif 000038
2005504388.tif 000039
2005504388.tif 000040
2005504388.tif 000041
2005504388.tif 000042
2005504388.tif 000043
2005504388.tif 000044
2005504388.tif 000045
2005504388.tif 000046
2005504388.tif 000047
2005504388.tif 000048
2005504388.tif 000049
2005504388.tif 000050
2005504388.tif 000051
2005504388.tif 000052
2005504388.tif 000053
2005504388.tif 000054
2005504388.tif 000055
2005504388.tif 000056
2005504388.tif 000057
2005504388.tif 000058
2005504388.tif 000059
2005504388.tif 000060
2005504388.tif 000061
2005504388.tif 000062
2005504388.tif 000063
2005504388.tif 000064
2005504388.tif 000065
2005504388.tif 000066
2005504388.tif 000067
2005504388.tif 000068
2005504388.tif 000069
【国際公開パンフレット（コレクトバージョン）】
2005504388.tif 000070
【国際調査報告】
2005504388.tif 000071
2005504388.tif 000072