(57)【特許請求の範囲】
【請求項１】
フラッシュメモリユニットと、
上記フラッシュメモリユニットに接続されたコントローラとを備え、
上記コントローラは、
ＲＡＭデータバッファを備え、
上記フラッシュメモリユニットは、
個別の、独立してアドレス可能な複数のメモリバンクを備え、
上記複数のメモリバンクのそれぞれは、
少なくとも１つのＲＡＭデータレジスタと、
独立してアドレス可能であり、独立してプログラム可能な不揮発性の複数のデータ記憶領域とを備え、
上記複数のメモリバンク内のそれぞれのデータ記憶領域は、複数のページからなる複数の物理データブロックを含み、
上記コントローラは、スタートアップ時に、上記販売業者固有の値をハンドシェイクデータパケットにロードしてホストに送信し、
当該フラッシュメモリシステムは、上記ホストに送信したハンドシェイクデータパケットに対する応答であるハンドシェイク応答を該ホストから受信しない場合、入力ユーザデータを第１のデータ記憶モードに従って記憶し、該ハンドシェイク応答を受信した場合、入力ユーザデータを上記第２のデータ記憶モードに従って記憶し、
上記第１のデータ記憶モードでは、１プログラミングサイクルで、１ページにプログラミングするデータを、１つのメモリバンクのＲＡＭデータレジスタに記憶し、
上記第２のデータ記憶モードでは、上記１プログラミングサイクルで、複数のページに記憶するデータを、上記ＲＡＭデータバッファから上記複数のメモリバンクのＲＡＭデータレジスタに記憶することを特徴とするフラッシュメモリシステム。
【請求項２】
上記コントローラは、
ホストインタフェース回路と、
メモリインタフェース回路とを更に備え、
上記ＲＡＭデータバッファは、上記ホストインタフェース回路と上記メモリインタフェース回路とに接続されており、上記メモリインタフェース回路は、データバスを介して、上記複数のメモリバンクのそれぞれのＲＡＭデータレジスタに接続されており、
上記コントローラは、上記複数のメモリバンクのそれぞれに関連したＲＡＭデータレジスタを介して、該複数のメモリバンクに亘って分散された上記複数のデータ記憶領域へのデータのプログラミングを制御することを特徴とする請求項１記載のフラッシュメモリシステム。
【請求項３】
上記第２のデータ記憶モードでは、複数のＲＡＭデータレジスタに記憶されたデータを、上記複数のページのそれぞれに同時にプログラミングすることを特徴とする請求項２記載のフラッシュメモリシステム。
【請求項４】
上記ＲＡＭデータレジスタは、１つの物理ページをプログラミングするのに十分なメモリ容量を有することを特徴とする請求項３記載のフラッシュメモリシステム。
【請求項５】
当該フラッシュメモリシステム内の別々のページにプログラミングする入力データの複数の論理ブロックを選択する選択手段を更に備える請求項３記載のフラッシュメモリシステム。
【請求項６】
上記複数の論理ブロックを選択する選択手段は、上記ホスト内に配設されていることを特徴とする請求項５記載のフラッシュメモリシステム。
【請求項７】
上記ホストは、デジタルカメラであることを特徴とする請求項６記載のフラッシュメモリシステム。
【請求項８】
上記複数の論理ブロックを選択する選択手段は、当該フラッシュメモリシステム内に配設されていることを特徴とする請求項５記載のフラッシュメモリシステム。
【請求項９】
上記ＲＡＭデータバッファは、入力ユーザデータのファイル全体を格納するのに十分なメモリ容量を有することを特徴とする請求項７記載のフラッシュメモリシステム。
【請求項１０】
上記複数のメモリバンクのそれぞれのＲＡＭデータレジスタは、主ＲＡＭデータレジスタであり、各メモリバンクは、補助ＲＡＭデータレジスタを更に備え、
上記複数のメモリバンクのうちの第１のメモリバンク内の第１の補助ＲＡＭデータレジスタは、該第１のメモリバンク内のデータ記憶領域にデータをプログラミングし、該複数のメモリバンクのうちの第２のメモリバンク内の第２の補助ＲＡＭデータレジスタは、該第２のメモリバンク内のデータ記憶領域にデータをプログラミングすることを特徴とする請求項７記載のフラッシュメモリシステム。
【請求項１１】
入力データをフラッシュメモリシステムにプログラミングするプログラミング方法において、
上記フラッシュメモリシステムは、販売業者固有の値と、フラッシュメモリユニットと、該フラッシュメモリユニットに接続されたコントローラとを備え、該コントローラは、メモリインタフェース回路に接続されたＲＡＭデータバッファを備え、該フラッシュメモリユニットは、個別の、独立してアドレス可能な複数のメモリバンクを備え、該複数のメモリバンクのそれぞれは、ＲＡＭデータレジスタと、独立してアドレス可能であり、独立してプログラム可能な複数の物理データブロックとを備え、該複数の物理データブロックのそれぞれは、独立してアドレス可能であり、独立してプログラム可能な複数のページを備え、
ハンドシェイクデータパケットを生成するステップと、
上記フラッシュメモリシステム内の販売業者固有の値を、上記ハンドシェイクデータパケットにロードするステップと、
上記フラッシュメモリシステムから上記ハンドシェイクデータパケットをホストに送信するステップと、
上記フラッシュメモリシステムを第１のデータ記憶モードにディフォルト設定するステップと、
上記入力データを上記フラッシュメモリシステムに、上記第１のデータ記憶モード又は第２のデータ記憶モードに従ってプログラミングするステップとを有し、
上記フラッシュメモリシステムは、上記ホストに送信したハンドシェイクデータパケットに対する応答であるハンドシェイク応答を該ホストから受信しない場合、データ記憶のディフォルトモードである上記第１のデータ記憶モードで動作し、該ハンドシェイク応答を受信した場合、上記第２のデータ記憶モードで動作し、
上記第１のデータ記憶モードは、プログラミングサイクル毎に、１ページのユーザデータをプログラミングするモードであり、
上記第２のデータ記憶モードは、各プログラミングサイクル毎に、複数のページのユーザデータを上記複数のメモリバンクに同時にプログラミングするモードであることを特徴とするプログラミング方法。
【請求項１２】
上記ホストから上記ハンドシェイク応答を受信した場合、上記フラッシュメモリシステムを上記第２のデータ記憶モードに設定するステップと、
上記入力データを上記フラッシュメモリシステムに上記第２のデータ記憶モードに従ってプログラミングするステップとを更に有する請求項１１記載のプログラミング方法。
【請求項１３】
上記入力データをフラッシュメモリシステムに第２のデータ記憶モードに従ってプログラミングするステップは、
第１の仮想論理ブロックアドレスによって定義される第１の最初の論理ブロックのデータを、上記複数のメモリバンクのうちの第１のメモリバンク内の第１のＲＡＭデータレジスタにロードするステップと、
第２の仮想論理ブロックアドレスによって定義される第２の最初の論理ブロックのデータを、上記複数のメモリバンクのうちの第２のメモリバンク内の第２のＲＡＭデータレジスタにロードするステップと、
（１）上記第１のＲＡＭデータレジスタ内の上記第１の最初の論理ブロックのデータを、上記第１のメモリバンク内の第１の物理データブロックの第１の最初のページにプログラミングする処理と、（２）上記第２のＲＡＭデータレジスタ内の上記第２の最初の論理ブロックのデータを、上記第２のメモリバンク内の第２の物理データブロックの第２の最初のページにプログラミングする処理とを同時に実行するステップとを更に有することを特徴とする請求項１２記載のプログラミング方法。
【請求項１４】
上記入力データをフラッシュメモリシステムに第２のデータ記憶モードに従ってプログラミングするステップは、
上記第１の仮想論理ブロックアドレスによって定義される第１の後続する論理ブロックのデータを、上記第１のメモリバンク内の上記第１のＲＡＭデータレジスタにロードするステップと、
上記第２の仮想論理ブロックアドレスによって定義される第２の後続する論理ブロックのデータを、上記第２のメモリバンク内の上記第２のＲＡＭデータレジスタにロードするステップと、
（１）上記第１のＲＡＭデータレジスタ内の上記第１の後続する論理ブロックのデータを、上記第１のメモリバンク内の上記第１の物理データブロック内の第１の後続するページにプログラミングする処理と、（２）上記第２のＲＡＭデータレジスタ内の上記第２の後続する論理ブロックのデータを、上記第２のメモリバンク内の上記第２の物理データブロック内の第２の後続するページにプログラミングする処理とを同時に実行するステップとを更に有することを特徴とする請求項１３記載のプログラミング方法。
【請求項１５】
上記第１の最初の論理ブロックと上記第１の後続する論理ブロックは、上記第１の仮想論理ブロック内の連続した論理ブロックアドレスによって定義され、
上記第２の最初の論理ブロックと上記第２の後続する論理ブロックは、上記第２の仮想論理ブロック内の連続した論理ブロックアドレスによって定義され、
上記第１の後続する論理ブロックのデータを第１のＲＡＭデータレジスタにロードするステップは、上記第１の最初の論理ブロックのデータを第１のＲＡＭデータレジスタにロードするステップに連続して実行され、
上記第２の後続する論理ブロックのデータを第２のＲＡＭデータレジスタにロードするステップは、上記第２の最初の論理ブロックのデータを第２のＲＡＭデータレジスタにロードするステップに連続して実行され、
上記第１の最初のページと上記第１の後続するページは、上記第１の物理データブロック内の連続した物理ブロックアドレスによって定義され、
上記第２の最初のページと上記第２の後続するページは、上記第２の物理データブロック内の連続した物理ブロックアドレスによって定義されることを特徴とする請求項１４記載のプログラミング方法。
【請求項１６】
上記フラッシュメモリシステムの複数のメモリバンク内の各物理データブロックは、同数のページを有し、各物理データブロックの各ページは、同一のページアドレス方式によってアドレス指定されることを特徴とする請求項１５記載のプログラミング方法。
【請求項１７】
上記第１の物理データブロック内の第１の最初のページと上記第２の物理データブロック内の第２の最初のページは、同じページアドレスによって定義されることを特徴とする請求項１６記載のプログラミング方法。
【請求項１８】
上記複数のメモリバンクのそれぞれは、同数の物理データブロックを有し、各メモリバンク内の各物理データブロックは、同一のブロックアドレス方式によってアドレス指定されることを特徴とする請求項１７記載のプログラミング方法。
【請求項１９】
上記第１の物理データブロックと上記第２の物理データブロックは、同じ物理ブロックアドレスによって定義されることを特徴とする請求項１８記載のプログラミング方法。
【請求項２０】
上記第１のメモリバンクのアドレスと上記第２のメモリバンクのアドレスは、連続したアドレスであることを特徴とする請求項１９記載のプログラミング方法。
【請求項２１】
上記複数のメモリバンクのそれぞれのＲＡＭデータレジスタは、主ＲＡＭデータレジスタであり、各メモリバンクは、補助ＲＡＭデータレジスタを更に備え、
上記入力データをフラッシュメモリシステムに第２のデータ記憶モードに従ってプログラミングするステップは、
上記第１の仮想論理ブロック内の上記第１の後続する論理ブロックのデータを、上記第１のメモリバンク内の第１の補助ＲＡＭデータレジスタにロードするステップと、
上記第２の仮想論理ブロック内の上記第２の後続する論理ブロックのデータを、上記第２のメモリバンク内の第２の補助ＲＡＭデータレジスタにロードするステップと、
（１）上記第１の補助ＲＡＭデータレジスタ内の上記第１の後続する論理ブロックのデータを、上記第１のメモリバンク内の上記第１の物理データブロック内の第１の後続するページにプログラミングする処理と、（２）上記第２の補助ＲＡＭデータレジスタ内の上記第２の後続する論理ブロックのデータを、上記第２のメモリバンク内の上記第２の物理データブロック内の第２の後続するページにプログラミングする処理とを同時に実行するステップとを更に有することを特徴とする請求項２０記載のプログラミング方法。
【請求項２２】
上記第１の最初の論理ブロックと上記第１の後続する論理ブロックは、上記第１の仮想論理ブロック内で連続してアドレスが付けられており、
上記第２の最初の論理ブロックと上記第２の後続する論理ブロックは、上記第２の仮想論理ブロック内で連続してアドレスが付けられており、
上記第１の最初の論理ブロックのデータをロードするステップ及び上記第１の後続する論理ブロックのデータをロードするステップは、上記第１のメモリバンク内の第１の主ＲＡＭデータレジスタと第１の補助ＲＡＭデータレジスタにデータを連続してロードするステップを含み、
上記第２の最初の論理ブロックのデータをロードするステップ及び上記第２の後続する論理ブロックのデータをロードするステップは、上記第２のメモリバンク内の第２の主ＲＡＭデータレジスタと第２の補助ＲＡＭデータレジスタにデータを連続してロードするステップを含み、
上記第１の最初のページと上記第１の後続するページは、上記第１の物理データブロック内で連続してアドレスが付けられており、
上記第２の最初のページと上記第２の後続するページは、上記第２の物理データブロック内で連続してアドレスが付けられていることを特徴とする請求項２１記載のプログラミング方法。
【請求項２３】
上記入力データをフラッシュメモリシステムに第１のデータ記憶モードに従ってプログラミングするステップは、
第１の論理ブロックアドレスによって定義されるデータを、物理データブロックの第１のページにプログラミングするステップと、
第２の論理ブロックアドレスによって定義されるデータを、上記物理データブロックの第２のページにプログラミングするステップとを有し、
上記第１の論理ブロックアドレスと上記第２の論理ブロックアドレスは、同じ仮想論理ブロックアドレス内の連続したアドレスによって定義され、
上記第１のページと上記第２のページは、同じ物理データブロック内の連続した物理ブロックアドレスによって定義されることを特徴とする請求項１２記載のプログラミング方法。
【請求項２４】
ホストからの入力データをフラッシュメモリシステムにプログラミングするプログラミング方法において、
上記フラッシュメモリユニットを上記ホストに接続するステップと、
上記フラッシュメモリシステムによって送信されてきたハンドシェイクデータパケットを調べるステップとを有し、
上記フラッシュメモリシステムは、販売業者固有の値に応じて、データ記憶のディフォルトモードである第１のデータ記憶モードと、第２のデータ記憶モードとで選択的に動作し、
上記ハンドシェイクデータパケットに、上記販売業者固有の値が含まれていないとき、上記ホストの動作モードを標準モードに設定し、上記フラッシュメモリシステムは、上記第１のデータ記憶モードに従ってデータを記憶するステップと、
上記ハンドシェイクデータパケットに、上記販売業者固有の値が含まれているとき、上記ホストの動作モードを高性能モードに設定し、上記フラッシュメモリシステムは、上記第２のデータ記憶モードに従ってデータを記憶するステップとを更に有し、
上記第１のデータ記憶モードは、プログラミングサイクル毎に、１ページのユーザデータをプログラミングするモードであり、
上記第２のデータ記憶モードは、上記プログラミングサイクル毎に、複数のページのデータを複数のメモリバンクに同時にプログラミングするモードであり、
上記標準モードでは、上記ホストは、１つの仮想論理ブロックからのデータをプログラミングサイクル毎に送信し、
上記高性能モードでは、上記ホストは、複数の仮想論理ブロックからのデータをプログラミングサイクル毎に送信することを特徴とするプログラミング方法。
【請求項２５】
上記フラッシュメモリシステムが第２のデータ記憶モードに従ってデータを記憶するステップは、
第１の仮想論理ブロックアドレスによって定義される第１の最初の論理ブロックのデータを、第１のメモリバンク内の第１のＲＡＭデータレジスタにロードするステップと、
第２の仮想論理ブロックアドレスによって定義される第２の最初の論理ブロックのデータを、第２のメモリバンク内の第２のＲＡＭデータレジスタにロードするステップと、
（１）上記第１のＲＡＭデータレジスタ内の上記第１の最初の論理ブロックのデータを、上記第１のメモリバンク内の第１の物理データブロックの第１の最初のページにプログラミングする処理と、（２）上記第２のＲＡＭデータレジスタ内の上記第２の最初の論理ブロックのデータを、上記第２のメモリバンク内の第２の物理データブロックの第２の最初のページにプログラミングする処理とを同時に実行するステップとを有する請求項２４記載のプログラミング方法。
【請求項２６】
上記フラッシュメモリシステムが第２のデータ記憶モードに従ってデータを記憶するステップは、
上記第１の仮想論理ブロックアドレスによって定義される第１の後続する論理ブロックのデータを、上記第１のメモリバンク内の上記第１のＲＡＭデータレジスタにロードするステップと、
上記第２の仮想論理ブロックアドレスによって定義される第２の後続する論理ブロックのデータを、上記第２のメモリバンク内の上記第２のＲＡＭデータレジスタにロードするステップと、
（１）上記第１のＲＡＭデータレジスタ内の上記第１の後続する論理ブロックのデータを、上記第１のメモリバンク内の上記第１の物理データブロックの第１の後続するページにプログラミングする処理と、（２）上記第２のＲＡＭデータレジスタ内の上記第２の後続する論理ブロックのデータを、上記第２のメモリバンク内の上記第２の物理データブロックの第２の後続するページにプログラミングする処理とを同時に実行するステップとを更に有することを特徴とする請求項２５記載のプログラミング方法。
【請求項２７】
上記第１の最初の論理ブロックと上記第１の後続する論理ブロックは、上記第１の仮想論理ブロック内の連続した論理ブロックアドレスによって定義され、
上記第２の最初の論理ブロックと上記第２の後続する論理ブロックは、上記第２の仮想論理ブロック内の連続した論理ブロックアドレスによって定義され、
上記第１の後続する論理ブロックのデータを第１のＲＡＭデータレジスタにロードするステップは、上記第１の最初の論理ブロックのデータを第１のＲＡＭデータレジスタにロードするステップに連続して実行され、
上記第２の後続する論理ブロックのデータを第２のＲＡＭデータレジスタにロードするステップは、上記第２の最初の論理ブロックのデータを第２のＲＡＭデータレジスタにロードするステップに連続して実行され、
上記第１の最初のページと上記第１の後続するページは、上記第１の物理データブロック内の連続した物理ブロックアドレスによって定義され、
上記第２の最初のページと上記第２の後続するページは、上記第２の物理データブロック内の連続した物理ブロックアドレスによって定義されることを特徴とする請求項２６記載のプログラミング方法。
【請求項２８】
上記フラッシュメモリシステムの複数のメモリバンク内の各物理データブロックは、同数のページを有し、各物理データブロックの各ページは、同一のページアドレス方式によってアドレス指定されることを特徴とする請求項２７記載のプログラミング方法。
【請求項２９】
上記第１の物理データブロック内の第１の最初のページと上記第２の物理データブロック内の第２の最初のページは、同じページアドレスによって定義されることを特徴とする請求項２８記載のプログラミング方法。
【請求項３０】
上記複数のメモリバンクのそれぞれは、同数の物理データブロックを有し、各メモリバンク内の各物理データブロックは、同一のブロックアドレス方式によってアドレス指定されていることを特徴とする請求項２９記載のプログラミング方法。
【請求項３１】
上記第１の物理データブロックと上記第２の物理データブロックは、同じ物理ブロックアドレスによって定義されることを特徴とする請求項３０記載のプログラミング方法。
【請求項３２】
上記フラッシュメモリシステムが第１のデータ記憶モードに従ってデータを記憶するステップは、
第１の論理ブロックアドレスからのデータを、物理データブロックの第１のページにプログラミングするステップと、
第２の論理ブロックアドレスからのデータを、上記物理データブロックの第２のページにプログラミングするステップとを有し、
上記第１の論理ブロックアドレスと上記第２の論理ブロックアドレスは、同じ仮想論理ブロック内の連続したアドレスであり、
上記第１のページと上記第２のページは、連続した物理ブロックアドレスによって定義されることを特徴とする請求項２４記載のプログラミング方法。
【請求項３３】
個別の、独立してアドレス可能な複数のメモリバンクと、
ＲＡＭデータレジスタと、
スタートアップ時に、販売業者固有の値をハンドシェイクデータパケットにロードするロード手段と、
上記ハンドシェイクデータパケットをホストに送信する送信手段と、
上記ホストからハンドシェイク応答を受信したとき、上記ＲＡＭデータレジスタからの複数のデータを、インタリーブして、上記複数のメモリバンクに同時に記憶する手段と、
上記ホストからハンドシェイク応答を受信しないとき、データを、インタリーブしないで、上記複数のメモリバンクに順次記憶する手段とを備えるフラッシュメモリシステム。
【請求項３４】
個別の、独立してアドレス可能な複数のメモリバンクと、
ＲＡＭデータレジスタと、
スタートアップ時に、販売業者固有の値をハンドシェイクデータパケットにロードするロード手段と、
上記ハンドシェイクデータパケットをホストに送信する手段と、
上記ホストからハンドシェイク応答を受信しないとき、データを、インタリーブしないで、上記複数のメモリバンクに順次記憶する記憶手段とを備え、
上記ホストが高性能フラッシュメモリ動作が可能なホストであるとき、上記記億手段は、複数のページのデータを、上記複数のメモリバンクに同時にプログラムすることを特徴とするフラッシュメモリシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、フラッシュメモリシステム及びプログラミング方法に関する。詳しくは、本発明は、ホストシステムとインタフェースするフラッシュメモリシステム及びプログラミング方法に関する。
【０００２】
【従来の技術】
フラッシュメモリは、電気的に書込可能な不揮発性デジタルメモリ媒体である。フラッシュメモリは、不揮発性であるため、メモリ内に記憶されているデジタルデータを保持するための保持電圧（sustained voltage）を必要としない。フラッシュメモリセルは、通常、浮遊ゲートに電荷を注入することにより、バイナリ状態方式における第１の論理状態を表し、また、浮遊ゲートから電荷を取り除くことにより、バイナリ状態方式における第２の論理状態を表す。フラッシュメモリセルは、通常、書込動作、読出動作及び消去動作をサポートしている。
【０００３】
フラッシュメモリ技術の進歩に伴い、様々なアプリケーションが実現されている。特に、従来の回転磁気媒体、例えばホストコンピュータシステム又は他のホストデジタルシステムに接続されたハードディスクドライブ又はフロッピディスクドライブの大容量記憶機能をエミュレートするフラッシュメモリの実現が広く受け入れられている。ハードディスクドライブ及びフロッピディスクドライブは、フラッシュメモリ技術では生じない幾つかの問題を有している。先ず、ハードディスクドライブ及びフロッピディスクドライブは、多くの可動部品、例えば電動モータ、スピンドルシャフト、読出／書込ヘッド、回転磁気ディスクを備えている。これらの部品のために信頼性に問題が生じ、ハードディスクドライブやフロッピディスクドライブは、落下又は衝突による振動及び衝撃により故障しやすい。次に、モータにより駆動されるディスクドライブは、消費電力が大きく、このため、バッテリの充電から次の充電までの動作時間を実質的に短くしている。最後に、ハードディスク又はフロッピディスクに記録されたデータへのアクセス時間が長いという問題もある。
【０００４】
一方、フラッシュメモリシステムは、これらの回転記録ディスクに対して多くの利点を有している。一般的なフラッシュメモリシステムは、可動部品を有しておらず、このため信頼性が高い。更に、フラッシュメモリシステムの構造は簡単であるため、フラッシュメモリシステムは、ハードディスクドライブやフロッピディスクドライブの場合であれば深刻な結果を招くような環境条件及び物理的誤操作にも耐えることができる。また、ユーザは、フラッシュメモリシステムに記憶されているデータに非常に高速にアクセスすることができる。更に、フラッシュメモリシステムの消費電力は、ハードディスクドライブ及びフロッピディスクドライブの消費電力よりも著しく少ない。
【０００５】
【発明が解決しようとする課題】
回転記録媒体、例えばハードディスクドライブが市場に浸透し、汎用的に用いられているので、市場のシェア獲得を模索するより高性能な処理又は装置も、既存のソフトウェア及びオペレーティングシステムに互換性を有する必要がある。従来の回転大容量記憶装置にデータを記録するシステムとの互換性を保つために、フラッシュメモリは、５１２バイトのユーザデータと、１６バイトのオーバヘッドデータとを格納する一連のデータフィールドに分割され、これにより、市販されているハードディスクにおいて利用できるデータフィールドのサイズがエミュレートされている。図１は、フラッシュメモリ素子内の不揮発性メモリアレイを示している。一連の物理セクタ（Physical Sectors）、すなわち物理ページ（Physical Pages）１０８〜１１２は、一般的回転大容量記憶装置のセクタの記憶容量に一致するように、５１２バイトのユーザデータと、１６バイトのオーバヘッドデータとを格納する。複数の、通常１６個又は３２個の物理ページ１０８〜１１２は、物理データブロック（Physical Data Block）１０２〜１０６を構成している。
【０００６】
従来のフラッシュメモリシステムは、複数の物理データブロック１０２〜１０６を備える１つのメモリ構造１００を有している。各物理データブロック１０２〜１０６には、フラッシュメモリシステムを構成する複数の物理データブロックを識別及び区別する固有の仮想物理ブロックアドレス（Virtual Physical Block Address：以下、ＶＰＢＡという。）が割り当てられる。各物理データブロック１０２〜１０６は、通常、選択的にプログラム可能であり、消去可能である。
【０００７】
従来のフラッシュメモリアーキテクチャの一具体例を図２に示す。ホスト２１５、例えばコンピュータ又はデジタルカメラは、リムーバブルフラッシュメモリカード２０１とデータを送受信する。ホスト２１５からフラッシュメモリシステム２００へのデータの送信中、ホスト２１５は、データに論理ブロックアドレスを割り当てる。データの読出時には、ホスト２１５は、以前に割り当てた論理ブロックアドレスに基づいてデータを要求する。データは、通常、パラレルバスアーキテクチャを有するホストインタフェースバス２２０を介して、フラッシュメモリコントローラ（以下、単にコントローラという。）２０２のホストインタフェース回路２０３に供給される。ホストインタフェース回路２０３は、ＲＡＭデータバッファ２０４を用いて、入力データの記憶を制御する。ＲＡＭデータバッファ２０４に所定のデータ量が格納されたとき、メモリインタフェース回路２０５は、データバス２３０を介して、図１にその詳細を示す不揮発性のフラッシュメモリユニット２０６にデータを供給する。データバス２３０は、通常、パラレルバス構造を有している。ＲＡＭデータバッファ２０４のサイズは、幾つかの不揮発性メモリフィールド、例えば図１に示す合計約５２８バイトのデータを含む物理ページの倍数に等しいデータ量を格納するように設計することが望ましい。
【０００８】
現在までの技術では、フラッシュメモリシステムは、「消耗（wearing out）」までのプログラミングサイクルの数が制限されている。消耗の問題を改善するために、図２を用いて後で詳細に説明するコントローラ２０２は、第１の位置に戻る前に、利用可能なメモリ位置を巡回（cycle through）するように試みる。セル間の消耗率を調整することにより、コントローラ２０２は、フラッシュメモリシステムの一領域に消耗が集中するような不均一な消耗を防止する。このような消耗均等化プログラム（wear-leveling program）により、フラッシュメモリシステム内の全てのセルは、通常、同じ速度で消耗する。すなわち、消耗均等化プログラムにより、１つの領域が過剰に使用されることによる局所的なメモリ領域の劣化が生じないようにされる。これにより、フラッシュメモリシステム全体が、その寿命に亘って均等な信頼性を有するようになる。ハードディスクの記憶機構では、性能を劣化させることなく、事実上、無制限にプログラミング／書込動作を行うことができるので、ハードディスクの場合は、このような消耗均等化は不要である。このような相異から、フラッシュメモリにおいて使用されているアドレス指定方式と、ハードディスクドライブ又はフロッピディスクドライブにおいて使用されているアドレス指定方式とは異なるものとなる。
【０００９】
ハードディスクドライブ及びフラッシュメモリシステムのいずれにおいても、メモリに割り当てられる物理アドレスは、メモリ装置内の幾何学的構造に従っている。すなわち、物理アドレスは、通常、連続したメモリ位置に亘って順次インクリメントするように付される。メモリ装置にユーザデータが供給されると、このメモリ装置がフラッシュメモリであってもハードディスクであっても、ホストシステムは、通常、入力データにアドレスを割り当てる。ハードディスクドライブでは、データは、通常、ホストシステムによって定義された論理アドレスに物理アドレスが一致するセクタに記録される。特定の論理アドレスによって以前に定義したユーザデータをホストシステムが更新すると、新たなデータは、先に指定されたアドレスにおいて、元のデータに上書きされる。
【００１０】
一方、フラッシュメモリシステムにおいては、消耗均等化アルゴリズムに基づいてフラッシュメモリ内の様々な領域を巡回する必要があるため、新たな物理アドレスによって定義される物理領域が、絶えず埋められる。したがって、ホストシステムが特定の論理アドレスによって定義されているユーザデータを更新し、この更新されたデータをフラッシュメモリに供給すると、消耗均等化プログラムは、入力ユーザデータを、同じ論理アドレスを有するユーザデータが以前に格納されていた物理位置とは無関係な物理位置に書き込む。すなわち、特定の論理アドレスに関連付けられている古いデータは、同じ論理アドレスを有する入力データによって、直ちには上書きされない。この古いデータは、単に使用されなくなるだけであり、入力データは、次に利用可能な物理データブロック、すなわち次にアドレス可能な空いている欠陥がない物理データブロックに書き込まれる。この結果、ホストは、フラッシュメモリがそのデータを最終的に書き込むアドレスとは何の関係も有さないアドレスを、データに割り当てることとなる。一般的なフラッシュメモリシステムによって実現される消耗均等化データ記憶プログラムの顕著な特徴は、ホストによって割り当てられる論理アドレスと、フラッシュメモリシステムによって実際に使用される物理アドレスとの間の関係が絶えず変化する点にある。フラッシュメモリシステムは、この二重メモリ処理（dual memory process）によって、データの書込及び読出に関するハードディスクドライブと、ホストとの間の関係を機能的にエミュレートし、これにより、既存のソフトウェアとの互換性を保っている。
【００１１】
図３は、入力データを受け取り、受け取ったデータをフラッシュメモリユニット２０６（図２）内に保存するために使用される様々なレジスタ及びフィールドを示している。ここで、ホストシステムによってユーザデータの読出を容易にするために、論理アドレスと物理アドレスとの間に相互関係（correlation）が存在しなければならない。この相互関係は、通常、フラッシュメモリシステム２００内の各物理ページ１０８〜１１２のオーバヘッド部及びＲＡＭ空間マネージャ（RAM Space Manager）３７０に記憶される。ホスト２１５が、１組の論理ブロックアドレス３０２〜３０８によって識別されるユーザデータ３１０〜３１６をフラッシュメモリシステム２００に送信したとき、フラッシュメモリシステム２００は、ある物理位置（以下、物理ページともいう。）３２２〜３２８にデータを格納し、そして、特別に指定された関連付けレジスタ又はフィールド、例えばＲＡＭ空間マネージャ３７０に、そのデータの論理ブロックアドレス３０２〜３０８と物理ブロックアドレス３３０〜３３６とを関連付ける。その後、ホスト２１５が特定の論理ブロックアドレスによって識別されるデータを要求したとき、フラッシュメモリシステム２００は、論理ブロックアドレスと物理ブロックアドレスとを関連付ける様々なレジスタ、フィールド又はファイルを調べる。ホスト２１５によって要求された論理ブロックアドレスを見つけると、フラッシュメモリシステム２００は、その論理ブロックアドレスに関連した物理ブロックアドレスを特定することができる。フラッシュメモリシステム２００は、その物理ブロックアドレスから、ユーザデータを読み出す。
【００１２】
書込及び読出処理は、様々なアドレスレジスタ内の様々なビットをマスキング及び連結（concatenating）する一連の動作を含む。論理ブロックアドレス（Logical Block Address：以下、ＬＢＡともいう。）を格納するために使用されるビットレジスタは、一時的ＬＢＡレジスタ（LBA temporary register）３４０における上位ビットフィールド３４２と下位ビットフィールド３４４とである２つのサブレジスタに分割されている。通常１６個又は３２個のユーザデータ３１０〜３１６からなる論理ブロック（以下、論理ブロック３１０〜３１６ともいう。）のグループは、上位ビットフィールド３４２内の共通アドレスによって定義され、仮想論理ブロック（Virtual Logical Block）３００を構成している。すなわち、上位ビットフィールド３４２の値は、仮想論理ブロックアドレスである。構成要素である論理ブロック（component Logical Blocks）間の下位ビットフィールド３４４の値は、個々の論理ブロックを区別するＬＢＡオフセットである。下位ビットフィールド３４４のアドレス、すなわちＬＢＡオフセットは、通常、０〜１５又は０〜３１の間でインクリメントされる。なお、仮想論理ブロック３００のサイズは、これらに限定されず、いかなるサイズであってもよい。このように、一時的ＬＢＡレジスタ３４０によって示す上位ビットフィールド３４２と下位ビットフィールド３４４とにより論理ブロックアドレスが定義される。したがって、仮想論理ブロック３００内の構成要素である論理ブロック３１０〜３１６は、論理ブロックアドレス（ＬＢＡ）によって定義される。
【００１３】
仮想論理ブロックアドレス（Virtual Logical Block Address：以下、ＶＬＢＡともいう。）によって定義されるデータの仮想論理ブロック（Virtual Logical Block：以下、ＶＬＢともいう。）３００は、仮想物理ブロックアドレス（Virtual Physical Block Address：以下、ＶＰＢＡともいう。）によって定義される物理データブロック３２０として知られている物理領域に等しいデータ量を表している。ＶＰＢＡは、相補的（complement）物理ページからなっている。ＶＰＢＡ内の連続した物理ページは、ＰＢＡオフセットによって区別される。ＶＰＢＡ及びＰＢＡオフセットは、各物理ページ毎の固有のＰＢＡ、すなわち物理ブロックアドレス３３０〜３３６を定義している。各論理ブロック３１０〜３１６は、物理ページ３２２〜３２８に等しいデータ量を表している。論理アドレスと物理アドレスを関連付ける専用のデータフィールド又はレジスタ、例えばＲＡＭ空間マネージャ３７０は、本来ユーザデータを格納することができるはずの、フラッシュメモリシステム２００内の貴重なメモリ空間を消費する。フラッシュメモリシステム２００において、各ＶＬＢＡ３４５、３４６等を各ＰＢＡ３３０〜３３６に関連付けるために十分な数の関連付けレジスタ３８０〜３８４を設けてしまうと、フラッシュメモリの多くの部分が関連付け機能のために消費され、ユーザデータを格納するために使用できるメモリが少なくなってしまう。このような詳細な関連付けは、例えば仮想論理ブロック３００のユーザデータが１６個又は３２個の構成要素であるＬＢＡ３０２〜３０８に分割され、フラッシュメモリシステム２００内の異なる物理アドレスデータブロック内に分散された１６個又は３２個の異なる物理ページに格納される場合に、必要となる。
【００１４】
関連付けをより大きなデータのグループのみに制限する、例えば仮想論理ブロックアドレスを、物理メモリの大きなブロックを定義する仮想物理ブロックアドレスに関連付けることにより、関連付けデータ専用に消費されるメモリ空間を最小化することができる。また、ＶＬＢ３００の連続してアドレスが付された論理ブロックのユーザデータ３１０〜３１６を、物理データブロック３２０内の連続してアドレスが付された物理ページ３２２〜３２８に順次格納することにより、全ての論理ブロックを含む関連付けレジスタの数を乗算的に増加させることなく、ＶＬＢ３００の構成要素である論理ブロックと、物理データブロック３２０の個々の物理ページとの間の相互関係を維持することができる。したがって、物理データブロック３２０内の連続した物理ブロックアドレス３３０〜３３６と、仮想論理ブロック３００内の連続した論理ブロックアドレス３０２〜３０８との間の一対一の関係は、空間的配列又は準空間的配列（quasi-spacial arrangement）によって維持される。この場合、個々のＬＢＡを個々の物理ページアドレスに関連付ける専用のレジスタは不要である。上位ビットフィールド３４２のＶＬＢＡのみを、物理データブロックを表すＶＰＢＡに関連付けるだけでよい。
【００１５】
図４は、入力ユーザデータを、図３に示すデータフィールド及びレジスタに基づいて保存する処理を説明するためのフローチャートである。ステップ４０２において、不揮発性のフラッシュメモリユニット２０６（図２）に書き込む仮想論理ブロック３００（図３）の１７がホスト２１５から供給される。次のステップ４０４において、コントローラ２０２は、第１のＬＢＡ３０２を一時的ＬＢＡレジスタ３４０に移動する。ステップ４０６において、コントローラ２０２は、一時的ＬＢＡレジスタ３４０内の下位ビットフィールド３４４をマスクし、上位ビットフィールド３４２のＶＬＢＡを一時的ＶＬＢＡレジスタ３６０に移動する。ステップ４０８において、コントローラ２０２は、ＲＡＭ空間マネージャ３７０を調べ、一時的ＶＬＢＡレジスタ３６０に示されている現在のＶＬＢＡ３４９に対応するＶＰＢＡの関連付けレジスタ３８４を識別する。ステップ４１２において、コントローラ２０２は、新たなＶＰＢＡによって識別される欠陥がない空きの物理データブロック３２０を識別する。ステップ４１４において、コントローラ２０２は、ＲＡＭ空間マネージャ３７０の関連付けレジスタ３８４に新たなＶＰＢＡを書き込む。
【００１６】
ここで、コントローラ２０２は、選択された物理データブロック３２０内において、入力仮想論理ブロック３００内の入力ユーザデータを格納する特定の物理ページ３２２〜３２８を識別することができるようになる。仮想論理ブロック３００内の連続した論理ブロック３１０〜３１６と、連続した物理ブロックアドレス３３０〜３３６との間の一対一の関係を達成するために、コントローラ２０２は、物理データブロック３２０のＶＰＢＡと現在のＬＢＡ３０２〜３０８のＬＢＡオフセットとを組み合わせる。ステップ４１５において、コントローラ２０２は、選択された物理データブロック３２０のＶＰＢＡを一時的ＰＢＡレジスタ３５１に格納する。ステップ４１６において、コントローラ２０２は、一時的ＬＢＡレジスタ３４０の上位ビットフィールド（以下、上位ビットレジスタという。）３４２をマスクし、ＬＢＡオフセットが格納された下位ビットフィールド（以下、下位ビットレジスタという。）３４４を一時的ＰＢＡレジスタ３５１の下位ビットレジスタ３５４に連結する。一時的ＰＢＡレジスタ３５１から組み合わされた上位ビットレジスタ３５２及び下位ビットレジスタ３５４は、物理ブロックアドレスを形成する。そして、ステップ４１８において、コントローラ２０２は、一時的ＬＢＡレジスタ３４０によって識別される論理ブロックのユーザデータ３１０〜３１６を、一時的ＰＢＡレジスタ３５１によって識別される物理ページ３２２〜３２８にプログラミングする。
【００１７】
ステップ４２０において、コントローラ２０２は、入力データの次の論理ブロックを調べ、入力論理ブロックのＬＢＡを一時的ＬＢＡレジスタ３４０に移動する。ステップ４２２において、一時的ＶＬＢＡレジスタ３６０の値が変更されていない場合、コントローラ２０２は、ステップ４１６に戻る。一方、ホスト２１５から、新たなＶＬＢＡを有する新たなユーザデータが供給された場合、コントローラ２０２は、ステップ４０２に戻り、上述の処理を繰り返す。
【００１８】
図４に示すステップの一部の順序を入れ替えても、同様の結果を得ることができる。特定の記憶機構は、多数の同等な手法により実現できるものであり、図４に示す処理は、従来の全ての相互関係がある記憶処理が厳密にここに示す手順で行われていることを示すものではない。ここで説明した詳細は、ＬＢＡとＰＢＡの自然な相互関係を維持するデータ記憶処理を実現するための一例を例示的に示したにすぎない。上述の処理では、下位ビットレジスタ３４４のＬＢＡオフセットは、ＶＬＢを物理ページに格納する際のＰＢＡオフセットとして使用されている。この手法では、記憶、すなわち書込処理において所定の順序を維持しているので、フラッシュメモリシステム２００は、ホスト２１５によって要求された個々のＬＢＡを読み出すことができる。
【００１９】
図５は、ホスト２１５からの要求に応じて、フラッシュメモリユニット２０６からデータを読み出す従来の処理を説明するためのフローチャートである。なお、ここに説明する読出動作も、従来の処理の一例にすぎない。ステップ５０２において、コントローラ２０２（図２）は、ＬＢＡのグループ、すなわち特定のＬＢＡ３０２〜３０８（図３）に基づいて定義されるデータの読出を要求する。ステップ５０４において、コントローラ２０２は、要求されたＬＢＡ３０２〜３０８を、概念的に上位ビット用の上位ビットレジスタ３４２と下位ビット用の下位ビットレジスタ３４４から構成される一時的ＬＢＡレジスタ３４０に移動する。ステップ５０６において、コントローラ２０２は、一時的ＬＢＡレジスタ３４０の下位ビットレジスタ３４４をマスクし、上位ビットレジスタ３４２内の値に基づいて、要求されたＶＬＢＡを一時的ＶＬＢＡレジスタ３６０に定義する。ステップ５０８において、コントローラ２０２は、ＲＡＭ空間マネージャ３７０を、一時的ＶＬＢＡレジスタ３６０内のＶＬＢＡにインクリメントし、これにより、一時的ＶＬＢＡレジスタ３６０内で検出されるＶＬＢＡに対応する現在の関連付けレジスタ３８４にアクセスする。ステップ５１０において、コントローラ２０２は、現在の関連付けレジスタ３８４に記憶されているＶＰＢＡを、一時的ＰＢＡレジスタ３５１の上位ビットレジスタ３５２にコピーする。ステップ５１２において、コントローラ２０２は、一時的ＬＢＡレジスタ３４０の上位ビットレジスタ３４２内の上位ビットをマスクし、ＬＢＡオフセットを含む下位ビットレジスタ３４４内の下位ビットを、一時的ＰＢＡレジスタ３５１の下位ビットレジスタ３５４に連結する。このようにして形成された一時的ＰＢＡレジスタ３５１の上位ビットレジスタ３５２及び下位ビットレジスタ３５４は、物理ブロックアドレスを形成する。これにより、コントローラ２０２は、ステップ５１４において、一時的ＰＢＡレジスタ３５１内に形成された物理ブロックアドレスによって定義される物理データブロックにアクセスし、この物理データブロックに格納されているユーザデータをホスト２１５に転送することができる。ステップ５１６において、コントローラ２０２は、また、一時的ＬＢＡレジスタ３４０内の論理ブロックアドレスをホスト２１５に転送し、これにより、ホスト２１５によってユーザデータに割り当てられていた元のアドレスに基づいて、ユーザデータの論理ブロックを定義する。
【００２０】
書込処理及び読出処理中に、ＬＢＡオフセットをＶＰＢＡに連結することにより、コントローラ２０２は、要求に応じて、ＰＢＡに対するＬＢＡの相互関係を形成することができ、フラッシュメモリシステム２００にはＶＬＢＡとＶＰＢＡの相互関係のみを保存すればよく、本来保存すべき相互関係の一部のみを保存すればよくなり、相互関係を保存するために使用されるメモリ量が削減される。したがって、ホストが一連の論理ブロックアドレスによって定義されるデータを要求したとき、フラッシュメモリシステムは、物理位置からユーザデータを読み出し、このユーザデータをホストに返す。したがって、ホストがデータを読み出すとき、ホストに送られるデータは、ホストが要求したアドレスと同じアドレスによって識別される。フラッシュメモリシステム内で用いられている二重アドレス方式（dual addressing scheme）及び相互参照（cross referencing）は、ホスト側からは見えない。
【００２１】
フラッシュメモリは、通常、回転記録媒体よりも非常に高速のアクセス速度を有しているが、フラッシュメモリにおける「読出」速度と「書込」速度との間には、大きな差がある。フラッシュメモリの読出速度は、マイクロ秒程度であり、ランダムアクセスメモリ（random access memory：ＲＡＭ）に引けを取らない。一方、フラッシュメモリのプログラミング速度、すなわち書込速度は、ミリ秒程度であり、これは、一般的なＲＡＭのプログラミング速度の１／１０程度の速度である。したがって、ＲＡＭデータバッファ２０４は、不揮発性のフラッシュメモリユニット２０６がデータを受信できるよりも遙かに高速にデジタルデータを受信して、転送する。したがって、フラッシュメモリのプログラミングフェーズは、フラッシュメモリ素子を組み込んだ集積回路及びＭＯＳシステムにおける潜在的な処理速度を制限する主要な要因となっている。
【００２２】
フラッシュメモリのプログラミング速度は、図６に示すようなマルチバンクフラッシュメモリシステム（multi bank Flash Memory System）の開発によって、実質的に向上されている。フラッシュメモリシステム６００は、ホストシステム６０１、例えばコンピュータ又はデジタルカメラに機能的に接続されている。フラッシュメモリコントローラ６０４は、ホストインタフェース回路６０５と、ＲＡＭデータバッファ６０７と、メモリインタフェース回路６０９とを備え、フラッシュメモリユニット６０２に機能的に接続されている。フラッシュメモリユニット６０２は、複数のメモリバンク６２１〜６２７を備える。第１のメモリバンク６２１は、複数の物理データブロック６３１〜６３７と、１つのＲＡＭデータレジスタ６１３とを備える。第２のメモリバンク６２３は、複数の物理データブロック６４１〜６４７と、１つのＲＡＭデータレジスタ６１５とを備える。第３のメモリバンク６２５は、複数の物理データブロック６５１〜６５７と、１つのＲＡＭデータレジスタ６１７とを備える。第４のメモリバンク６２７は、複数の物理データブロック６６１〜６６７と、１つのＲＡＭデータレジスタ６１９とを備える。各メモリバンク６２１〜６２７は、通常、同数の物理データブロックを備える。各ＲＡＭデータレジスタ６１３〜６１９は、通常、物理メモリの１ページ分に等しいデータ容量を有し、このデータ容量は、通常、ユーザデータの５１２バイトに、オーバヘッドデータの１６バイトを加えた値である。図６に示すフラッシュメモリユニット６０２は、４つのメモリバンク６２１〜６２７を備えているが、この構成は例示的なものである。マルチバンクフラッシュメモリシステムは、幾つのメモリバンクを備えていてもよい。同様に、データフィールド及びメモリ領域のサイズも、従来より用いられている一般的な構成に基づいて例示的に示しているにすぎない。ここに示す従来の技術及びこの技術の本発明への応用の説明は、いずれも本発明におけるメモリバンクの数を特定の数に限定するものではない。同様に、この説明は、物理的又は論理的データフィールド又はレジスタのサイズを限定するものではなく、及び書き込まれ又は処理される入力データのデータ量を制限するものでもない。特定のパラメータ、例えばデータフィールドのサイズ、より大きなメモリ素子を構成する物理メモリのサブグループの数、すなわちデータのより大きなグループを構成するサブグループの数は、当該分野において一般的に用いられている値に基づいて選択されたものであり、例示的に示しているにすぎない。
【００２３】
マルチバンクのフラッシュメモリシステム６００においては、ＲＡＭデータバッファ６０７は、データを、直接物理データブロック６３１〜６６７に格納しない。ここでは、ＲＡＭデータバッファ６０７は、データを、複数のＲＡＭデータレジスタ６１３〜６１９にロードさせ、そして、ＲＡＭデータレジスタ６１３〜６１９は、同時にユーザデータをそれぞれ対応するメモリバンク６２１〜６２７にロードさせる。各ＲＡＭデータレジスタ６１３、６１５、６１７、６１９は、通常、１ページのデータを格納又はプログラミングする容量を有している。
【００２４】
フラッシュメモリコントローラ６０４がホストシステム６０１から情報を受け取ると、ホストインタフェース回路６０５は、この情報をＲＡＭデータバッファ６０７の待ち行列に入れる（queue）。ＲＡＭデータバッファ６０７が所定のデータ量によって満たされたとき、メモリインタフェース回路６０９は、ＲＡＭデータバッファ６０７からのデータを、フラッシュメモリユニット６０２内の複数のＲＡＭデータレジスタ６１３、６１５、６１７、６１９のうちの選択されたＲＡＭデータレジスタに書き込む処理を開始する。図６に示す４バンクのフラッシュメモリユニット６０２では、ＲＡＭデータバッファ６０７は、通常、４ページのデータを格納する。最も効率的な設計では、選択されるＲＡＭデータレジスタの数は、入力データの仮想論理ブロックの数に等しい。データバス６１１は、ＲＡＭデータバッファ６０７からＲＡＭデータレジスタ６１３、６１５、６１７、６１９にデータを供給するパラレルバス構造を有している。ＲＡＭデータバッファ６０７及びＲＡＭデータレジスタ６１３、６１５、６１７、６１９は、ランダムアクセスメモリ構造を有しているので、これらの構造間の読出及び書込時間は極めて速い。選択されたＲＡＭデータレジスタ６１３〜６１９が満たされ後、個々のＲＡＭデータレジスタ６１３〜６１９は、同時に、それぞれのメモリバンク６２１〜６２７内のフラッシュメモリ領域へのデータの書込を開始する。４バンクシステムにおいては、プログラミング時間は、従来のフラッシュメモリユニットにおいて必要とされる時間の約１／４に短縮される。同様に、１０バンクシステムにおいては、プログラミング時間は、従来のフラッシュメモリユニットにおいて必要とされる時間の約１／１０に短縮される。したがって、マルチバンクシステムは、従来のフラッシュメモリユニットよりも、ユーザデータをフラッシュメモリユニットに同時にプログラミングする際に係わるＲＡＭデータレジスタの数に等しい係数倍速い。
【００２５】
ＲＡＭデータバッファ６０７からＲＡＭデータレジスタ６１３〜６１９への転送及びプログラミング時間は、フラッシュメモリセルへのプログラミング時間に比べれば無視できるが、最新設計では、ＲＡＭデータバッファ６０７からＲＡＭデータレジスタ６１３〜６１９にユーザデータを書き込むために費やされる時間を実質的に短縮することができる。図７は、複数のメモリバンク７０２、７０４、７０６、７０８を備えるメモリユニットの構成を示している。なお、この実施の形態の特徴は、個々のメモリバンク７０２〜７０８にそれぞれ割り当てられた二重ＲＡＭデータレジスタ（dual RAM Data Registers）７１０・７２０、７１２・７２２、７１４・７２４、７１６・７２６が存在する点である。各メモリバンク７０２〜７０８は、それぞれ主ＲＡＭデータレジスタ７１０、７１２、７１４、７１６と、補助ＲＡＭデータレジスタ７２０、７２２、７２４、７２６とを備える。この実施の形態では、ＲＡＭデータバッファ７３０は、それぞれのメモリバンク７０２、７０４、７０６、７０８のフラッシュメモリセルに記憶するデータを、４つのそれぞれの主ＲＡＭデータレジスタ７１０、７１２、７１４、７１６にロードさせる。また、比較のために、入力ユーザデータの合計４つの仮想論理ブロックがあり、各ＶＬＢは、ユーザデータの３２個の論理ブロックからなり、３２個の論理ブロックのユーザデータは、４つのメモリバンク７０２、７０４、７０６、７０８に亘って分散されて格納されるものとする。したがって、各メモリバンク７０２、７０４、７０６、７０８は、１つの仮想論理ブロック、すなわち３２個の論理ブロックのデータを受け取り、これらは、各ページに関連するオーバヘッドとともに、１ページに同時にプログラミングされる。この処理は、３２サイクルに亘って繰り返される。
【００２６】
主ＲＡＭデータレジスタ７１０、７１２、７１４、７１６と、補助ＲＡＭデータレジスタ７２０、７２２、７２４、７２６とを交互に使用することにより、ＲＡＭデータバッファ７３０からＲＡＭデータレジスタ７１０〜７２６への書込における時間遅延は、最初の４ページのデータを４つのそれぞれのＲＡＭデータレジスタに書き込む最初のサイクルにおいてのみ生じる。それぞれのメモリバンク７０２〜７０８のフラッシュメモリにプログラミングする時間は、１ページのデータをＲＡＭデータレジスタにローディングさせる時間よりも遙かに長い。したがって、主ＲＡＭデータレジスタ７１０〜７１６が、それぞれのページのデータを各メモリバンク７０２〜７０８の対応するフラッシュメモリセルにプログラミングしている間に、ＲＡＭデータバッファ７３０は、次の４ページのデータを４つの補助ＲＡＭデータレジスタ７２０〜７２６にロードさせることができる。この処理は、フラッシュメモリセルがそれぞれの主ＲＡＭデータレジスタ７１０〜７１６によってプログラミングされている間に行われるので、補助ＲＡＭデータレジスタ７２０〜７２６へのデータの書込による実際の遅延は生じない。主ＲＡＭデータレジスタ７１０〜７１６によるそれぞれのページのデータの各メモリバンク７０２〜７０８のフラッシュメモリセルへのローディングが完了したとき、補助ＲＡＭデータレジスタ７２０〜７２６は、それぞれのページのデータの対応するメモリバンク７０２〜７０８のフラッシュメモリセルへのローディングを直ちに開始する。補助ＲＡＭデータレジスタ７２０〜７２６からそれぞれの物理データブロックへのプログラミング中に、ＲＡＭデータバッファ７３０は、同時に、次のサイクルのデータを主ＲＡＭデータレジスタ７１０〜７１６にロードさせることができる。一方の組のＲＡＭデータレジスタにデータをロードするのと同時に、他方の組のＲＡＭデータレジスタが、選択されたフラッシュメモリセルをプログラミングするこの処理は、選択されたデータがフラッシュメモリセルにロードされるまで繰り返される。上述のように、ＲＡＭデータバッファ７３０からそれぞれの主ＲＡＭデータレジスタ７１０〜７１６へのデータのローディングによる遅延は、最初のサイクルにおいてのみ生じる。
【００２７】
各ＲＡＭデータレジスタが、１論理ブロックのユーザデータに略等しい１ページのデータの容量を有しているとすると、Ｎを本発明に基づくプログラミング動作において使用されるメモリバンクの総数とし、ｐをロードするページの総数とし、ｔを１ページのデータを１つのＲＡＭデータレジスタ又はＲＡＭデータバッファにロードする時間とし、Ｔを１ページのデータをフラッシュメモリにプログラミングするために必要な時間として、図２に示す従来のプログラミング速度と、本発明に基づくメモリバンク毎に１つのＲＡＭデータレジスタを有する複数のメモリバンク（図６）のプログラミング速度と、本発明に基づく二重ＲＡＭデータレジスタを有する複数のメモリバンクにおけるプログラミング速度との関係は、以下のようになる。
総プログラミング時間（ＰｒｏｇＴｉｍｅ）
Ａ．図２に示す従来のフラッシュメモリシステム
ＰｒｏｇＴｉｍｅ＝ｐ（ｔ＋Ｔ）
Ｂ．図６に示すマルチバンクフラッシュメモリシステム
ＰｒｏｇＴｉｍｅ＝ｐ（ｔ＋Ｔ／Ｎ）
Ｃ．図７に示す二重ＲＡＭフラッシュメモリシステム
ＰｒｏｇＴｉｍｅ＝Ｎｔ＋ｐ（Ｔ／Ｎ）
この表のプログラミング時間は、マルチバンクフラッシュメモリシステムのデータバス６１１、７４０が、従来のフラッシュメモリユニットのデータバス２３０と同じ速度でデータを搬送するものとして算出されたものである。本発明に基づくデータバス６１１、７４０が、パラレル構成によって、全ての主ＲＡＭデータレジスタ７１０〜７１６を同時にプログラミングできる場合、上述の式は、若干変更される。
【００２８】
この説明からわかるように、図６に示す構成では、フラッシュメモリユニット毎にＮ個のメモリバンクを用いることにより、総プログラミング速度は、従来のフラッシュメモリシステムの場合に比べて、Ｎ倍に向上する。このため、メモリバンクの数は多ければ多いほどよいかのように見える。実際、マルチバンクフラッシュメモリユニットに組み込まれるメモリバンクの数については、理論上の制限はないが、特定の用途に基づく動作パラメータにより、通常、効率的に使用できるメモリバンクの数は、現実的な数に制限される。
【００２９】
従来の技術に基づくマルチバンクフラッシュメモリユニットは、図８に示すインタリーブ処理によってプログラミングされていた。以下では、説明のために、各ＶＬＢ８０３、８０４、８０５、８０６が、４つの物理データブロックにおいて３２個のそれぞれの論理ブロックを有するものとする。更に、説明のために、各ＲＡＭデータレジスタ８４０〜８４６は、１サイクル毎に、１論理ブロックのユーザデータに対応した１ページのユーザデータをプログラミングするものとする。４つの連続したＶＬＢのユーザデータは、１２８個の論理ブロック８１０〜８２６のデータを含み、これらの論理ブロック８１０〜８２６は、アドレス、あるいは入力ユーザデータのセット８００における論理ブロックの総数に対して計ったオフセット番号によって表すことができる。例えば、第４の仮想論理ブロック８０６内の第３の論理ブロック８２５は、ＶＬＢＡが２４、オフセットが２を表すアドレス２４：２によって表すことができ、あるいは単に入力ユーザデータのセット８００における１２８個の全ての論理ブロックに対して計った総オフセット番号９８によって表すことができる。入力ユーザデータのセット８００を構成する４つの連続したＶＬＢ８０３、８０４、８０５、８０６は、フラッシュメモリコントローラ６０４（図６）によって処理され、実質的に１つの連続した入力データのスタックを形成している。
【００３０】
このような従来のマルチバンク構造にデータが格納されるとき、インタリーブ処理によって、１つの仮想論理ブロックのデータが複数の物理データブロックに分割される。以下、図８を参照して、この処理を説明する。同じ仮想論理ブロック８０３内の連続した論理ブロック８１０、８１１、８１２、８１３は、データ格納のために、ＲＡＭデータレジスタ８４０、８４２、８４４、８４６に連続してロードされる。第１のサイクルにおいて、アドレスが２１：０の論理ブロック８１０が、第１のＲＡＭデータレジスタ８４０にロードされ、アドレスが２１：１の論理ブロック８１１が、第２のＲＡＭデータレジスタ８４２にロードされ、アドレスが２１：２の論理ブロック８１２が、第３のＲＡＭデータレジスタ８４４にロードされ、アドレスが２１：３の論理ブロック８１３が、第４のＲＡＭデータレジスタ８４６にロードされる。そして、４つのＲＡＭデータレジスタ８４０〜８４６の内容は、それぞれのメモリバンク８３２、８３４、８３６、８３８内の４つの独立した異なる物理データブロック８５０、８５２、８５４、８５６の第１の物理ページ８５８、８６１、８６４、８７０に同時にプログラミングされる。したがって、このインタリーブ処理によってデータを格納することにより、１つの仮想論理ブロックのデータは、４つの独立したメモリバンク８３２、８３４、８３６、８３８内に設けられた４つの独立した物理データブロック８５０、８５２、８５４、８５６に亘って断片化（fragment）される。データを読み出すときには、この逆の処理によって、データを正確に再構築することができる。しかしながら、逆インタリーブ処理を用いない場合、ユーザデータの再構築に問題が生じることになる。ＬＢＡとＰＢＡとを関連付ける詳細な関連付けフィールドによって、ユーザデータを再構築することができるが、結果としてメモリを消費し、この選択肢は、ほとんど実行不可能である。
【００３１】
インタリーブ処理は、ホストの動作の一部として行われるので、標準の、すなわちシングルバンクフラッシュメモリユニットと連携して動作するように設計されたホストは、１つのＶＬＢを１つのＶＰＢに格納し、ＬＢＡとＰＢＡ間に一対一の関係を確立したときだけ、ユーザデータのファイルを再構築することができる。したがって、従来のホストは、断片化、すなわちインタリーブ方式により、データを格納した複数のメモリバンクからはデータを読み出すことはできない。すなわち、システムは、単に互換性を有していない。この問題は、理論的には、図８に示すように、４つの入力仮想論理ブロック８０３〜８０６のデータを格納するのに十分な容量を有するＲＡＭデータバッファ８３０を備えるマルチバンクフラッシュメモリスティックを設計し、このマルチバンクフラッシュメモリスティック内においてインタリーブ処理を透過的に行うことにより、解決することができる。この場合、ホストは、単に、データをフラッシュメモリシステムのＲＡＭデータバッファに連続してロードさせる。フラッシュメモリシステムがどのようにデータを処理するかは、ホストに対して透過的になり、したがって、無関係となる。しかしながら、明らかな欠点は、ＲＡＭデータバッファとして使用するために、多くのメモリ容量を確保しなくてはならないことである。同様に、上述の問題は、フラッシュメモリシステム内の多くのメモリ容量をＲＡＭ空間マネージャに割り当てることによって、解決することができる。全てのＬＢＡが全てのＰＢＡに関連付けられている場合、断片化は、データの再構築の妨げとはならない。しかしながら、貴重なメモリの多くの容量がフラッシュメモリシステム内のランダムアクセスメモリに割り当てられ、フラッシュメモリ自体の実容量が低減される。これらの解決方法のいずれも、様々なホストに互換性を有するようにフラッシュメモリシステムを設計する際の問題を解決するが、フラッシュメモリの用途には余り役に立たない。
【００３２】
そこで、速度の利点がある速いマルチバンクフラッシュメモリユニットを備えるとともに、従来のシングルバンクメモリスティック用に設計された従来のホストに対して下位互換性を有するマルチバンクフラッシュメモリスティックが必要とされている。更に、マルチバンクフラッシュメモリユニットの速度の利点を利用できるとともに、後に従来のホストによってデータを読み出すことができるような配置で、データを格納できるホストが必要とされている。更に、データを格納するためにデータを供給するホストの能力及びフォーマットに基づいて、適切な配置でデータを格納するフラッシュメモリシステムを構成するユーザフレンドリな手法（User friendly means）が必要とされている。更に、従来のシングルバンクフラッシュメモリスティック及びマルチバンクフラッシュメモリスティックの両方に対して互換性を有するフォーマット又はプロトコルで、データを書き込み及び読み出すホストを構成するユーザフレンドリな手法が必要とされている。更に、互換性を達成するとともに、ＲＡＭデータバッファに費やされるメモリ容量を最小にする手法が必要とされている。更に、多種多様なホストに対して互換性を達成するとともに、ＲＡＭ空間マネージャに費やされるメモリ容量を最小にする手法が必要とされている。
【００３３】
【課題を解決するための手段】
本発明は、入力ユーザデータをマルチバンクフラッシュメモリシステムに格納するプログラミング方法及びフラッシュメモリシステムを提供する。このマルチバンクフラッシュメモリシステムは、速度の利点があるマルチバンクユニットを備えるとともに、仮想論理ブロックのデータを断片化せずに格納し、これにより、従来のシングルメモリバンクスティックに対応して設計された従来のソフトウェアに対する下位互換性を維持している。更に、本発明は、処理速度の点で優れたマルチバンクユニットの速度の利点を利用するとともに、従来のホストによってアクセス可能な配置でデータを格納するプログラミング方法及びフラッシュメモリシステムを提供する。更に、本発明は、格納のためにデータを供給するホストの能力及びフォーマットに応じて、適切にデータを格納するマルチバンクフラッシュメモリシステムを構成するプログラミング方法及びフラッシュメモリシステムを提供する。更に、本発明は、従来のシングルバンクメモリスティック及びマルチバンクフラッシュメモリスティックの両方に互換性を有するフォーマット又はプロトコルでデータを書き込み又は読み出す高性能ホストを構成するプログラミング方法及びフラッシュメモリシステムを提供する。更に、本発明は、ＲＡＭデータバッファによって占有されるメモリ量を最小化するとともに、従来型ホスト及び高性能ホストの両方に対する互換性を実現するプログラミング方法及びフラッシュメモリシステムを提供する。更に、本発明は、ＲＡＭ空間マネージャによって占有されるメモリ量を最小化するとともに、従来型ホスト及び高性能ホストの両方に対する互換性を実現するプログラミング方法及びフラッシュメモリシステムを提供する。
【００３４】
本発明の一実施の形態では、本発明に基づくフラッシュメモリシステムは、フラッシュメモリユニットと、フラッシュメモリユニットに接続されたコントローラとを備える。コントローラは、ＲＡＭデータバッファを備える。フラッシュメモリユニットは、個別の、独立してアドレス可能な複数のメモリバンクを備える。各メモリバンクは、独立してアドレス可能であり、独立してプログラム可能な不揮発性の複数のデータ記憶領域と、少なくとも１つのＲＡＭデータレジスタとを備える。複数のメモリバンク内のそれぞれのデータ記憶領域は、複数のページからなる複数の物理データブロックを含む。コントローラは、スタートアップ時に、販売業者固有の値をハンドシェイクデータパケットにロードしてホストに送信する。当該フラッシュメモリシステムは、ホストに送信したハンドシェイクデータパケットに対する応答であるハンドシェイク応答をホストから受信しない場合、入力ユーザデータを第１のデータ記憶モードに従って記憶し、ハンドシェイク応答を受信した場合、入力ユーザデータを上記第２のデータ記憶モードに従って記憶する。第１のデータ記憶モードでは、１プログラミングサイクルで、１ページにプログラミングするデータを、１つのメモリバンクのＲＡＭデータレジスタに記憶し、第２のデータ記憶モードでは、１プログラミングサイクルで、複数のページに記憶するデータを、ＲＡＭデータバッファから複数のメモリバンクのＲＡＭデータレジスタに記憶する。
【００３５】
本発明の一実施の形態では、本発明に基づくフラッシュメモリシステムは、個別の、独立してアドレス可能な複数のメモリバンクと、ＲＡＭデータレジスタと、スタートアップ時に、販売業者固有の値をハンドシェイクデータパケットにロードするロード手段と、ハンドシェイクデータパケットをホストに送信する送信手段と、ホストからハンドシェイク応答を受信したとき、ＲＡＭデータレジスタからの複数のデータを、インタリーブして、複数のメモリバンクに同時に記憶する手段と、ホストからハンドシェイク応答を受信しないとき、データを、インタリーブしないで、複数のメモリバンクに順次記憶する手段とを備える。また、本発明に基づくフラッシュメモリシステムは、個別の、独立してアドレス可能な複数のメモリバンクと、ＲＡＭデータレジスタと、スタートアップ時に、販売業者固有の値をハンドシェイクデータパケットにロードするロード手段と、ハンドシェイクデータパケットをホストに送信する手段と、ホストからハンドシェイク応答を受信しないとき、データを、インタリーブしないで、複数のメモリバンクに順次記憶する記憶手段とを備える。ホストが高性能フラッシュメモリ動作が可能なホストであるとき、記億手段は、複数のページのデータを、複数のメモリバンクに同時にプログラムする。
【００３６】
本発明の一実施の形態では、本発明に基づくプログラミング方法は、スラッシュメモリシステムは、販売業者固有の値と、フラッシュメモリユニットと、フラッシュメモリユニットに接続されたコントローラとを備え、コントローラは、メモリインタフェース回路に接続されたＲＡＭデータバッファを備え、フラッシュメモリユニットは、個別の、独立してアドレス可能な複数のメモリバンクを備え、各メモリバンクは、ＲＡＭデータレジスタと、独立してアドレス可能であり、独立してプログラム可能な複数の物理データブロックとを備え、各物理データブロックは、独立してアドレス可能であり、独立してプログラム可能な複数のページを備え、ハンドシェイクデータエンベロープを生成するステップと、フラッシュメモリシステム内の販売業者固有の値を、ハンドシェイクデータエンベロープにロードするステップと、フラッシュメモリシステムからホストにハンドシェイクデータエンベロープを送信するステップと、フラッシュメモリシステムを第１のデータ記憶モードにディフォルト設定するステップと、入力データをフラッシュメモリシステムに、第１のデータ記憶モード又は第２のデータ記憶モードに従ってプログラミングするステップとを有する。フラッシュメモリシステムは、ホストに送信したハンドシェイクデータパケットに対する応答であるハンドシェイク応答をホストから受信しない場合、データ記憶のディフォルトモードである第１のデータ記憶モードで動作し、ハンドシェイク応答を受信した場合、第２のデータ記憶モードで動作する。第１のデータ記憶モードは、プログラミングサイクル毎に、１ページのユーザデータをプログラミングするモードである。一方、第２のデータ記憶モードは、各プログラムサイクル毎に、複数のページのユーザデータを複数のメモリバンクに同時にプログラミングするモードである。第２のデータ記憶モードでは、プログラミングは、インタリーブなしで行われ、すなわち、同一の仮想論理ブロック内の連続した論理ブロックアドレスのデータは、同一の物理データブロック内の連続した物理ブロックアドレスに格納される。
【００３７】
本発明の一実施の形態では、本発明に基づくプログラミング方法は、フラッシュメモリユニットを上記ホストに接続するステップと、フラッシュメモリシステムによって送信されてきたハンドシェイクデータパケットを調べるステップとを有する。フラッシュメモリシステムは、販売業者固有の値に応じて、データ記憶のディフォルトモードである第１のデータ記憶モードと、第２のデータ記憶モードとで選択的に動作する。このプログラミング方法は、ハンドシェイクデータパケットに、販売業者固有の値が含まれていないとき、ホストの動作モードを標準モードに設定し、フラッシュメモリシステムは、第１のデータ記憶モードに従ってデータを記憶するステップと、ハンドシェイクデータパケットに、販売業者固有の値が含まれているとき、ホストの動作モードを高性能モードに設定し、フラッシュメモリシステムは、第２のデータ記憶モードに従ってデータを記憶するステップとを更に有する。第１のデータ記憶モードは、プログラミングサイクル毎に、１ページのユーザデータをプログラミングするモードである。一方、第２のデータ記憶モードは、プログラムサイクル毎に、複数のページのデータを複数のメモリバンクに同時にプログラミングするモードである。標準モードでは、ホストは、１つの仮想論理ブロックからのデータをプログラミングサイクル毎に送信し、高性能モードでは、ホストは、複数の仮想論理ブロックからのデータをプログラミングサイクル毎に送信する。第２のデータ記憶モードでは、プログラミングは、インタリーブなしで行われ、すなわち、同一の仮想論理ブロック内の連続した論理ブロックアドレスのデータは、同一の物理データブロック内の連続した物理ブロックアドレスに格納される。連続したプログラミングサイクルは、主ＲＡＭデータレジスタと補助ＲＡＭデータレジスタを交互に用いてデータを格納する。
【００３８】
【発明の実施の形態】
以下、本発明の好ましい実施の実施の形態について、図面に示す具体例を参照して詳細に説明する。以下では、本発明を好ましい実施の形態に基づいて説明するが、本発明は、これらの実施の形態に限定されるものではない。すなわち、本発明は、請求の範囲によって定義された本発明の思想及び範囲に含まれる変形例、変更例及び等価物の全てを包含する。例えば、以下の説明では、データの集合を、構成要素である論理ブロックのデータからなる仮想論理ブロックのデータと呼ぶことができる。これらの用語を用いた説明は、本発明を、現在当該分野で一般的に使用されている特定のユニットのデータに限定するものではなく、当業者に馴染みの用語によって、データをグループ化及びサブグループ化する機能を単に示すものである。これは、物理メモリ、例えば物理データブロック及び物理データブロック内の構成要素であるページの特定のグループ化についても同様であり、このグループ化は、アドレス可能なメモリ領域がより小さなメモリ領域によってどのように構成されるかを示す一例にすぎない。更に、以下の説明では、本発明をより明瞭にするために、様々な特定の詳細について述べる。しかしながら、本発明は、これらの詳細によらず実施できることは、当業者にとって明らかである。一方、本発明の特徴を明瞭にするために、周知の方法、処理、部品、回路については、詳細には説明しない。
【００３９】
以下の詳細な説明の一部は、コンピュータメモリ内のデータビットに対する手続（procedure）、論理ブロック（logic block）、処理（processing）及び動作の抽象的表現（symbolic representation）として表される。これらの説明及び表記は、データ処理技術分野の技術者が当業者に技術内容を最も効率的に伝えるために用いる手法である。手続、論理ブロック、処理等は、ここでも、一般的にも、所望の結果を導く一貫したステップ又はインストラクションのシーケンスであると考えられる。これらのステップは、物理量の物理的操作を必要とするステップである。コンピュータ等の装置、部品、構造又は動作を説明するとき、主に共通して使用するとき、これらの信号をビット（bit）、ビットストリーム（bit stream）、エンベロープ（envelope）、パケット（packet）、レジスタ（register）、フィールド（field）、バイト（byte）、値（value）、要素（element）、記号（symbol）、文字（character）、用語（term）、数字（number）等として表すことが便利である。
【００４０】
なお、電気部品の説明において、用語「接続（connected）された」、「機能的に接続された（operatively connected）」、「電気的に接続された（electrically connected）」等は、２つの部品間の電気経路を示している。なお、これらの用語は、２つの元の部品間に更なる部品が存在することを否定するものではなく、更なる部品が、２つの元の部品間の信号又はデータ伝送を中断し又は影響する可能性がある場合であっても、同様である。用語「直接接続された」等のみが、２つの元の部品間に電気導体以外の更なる部品が挿入されないことを表している。更に、伝送するデータは、少なくとも３つの異なる要素、すなわち、データと、多くの場合論理ブロック又は仮想論理ブロックと呼ばれるデータを含むエンベロープと、アドレスとを含んでいる。アドレス、例えばＬＢＡは、データの集合又はデータが格納されているエンベロープ（論理ブロック）を識別するものとみなすことができる。実アドレスは、データパケット内のビットとして存在してもよく、又は受信プロセッサが、受信データパケットを連続してカウントすることによって発生されてもよい。この場合、アドレスは、実体（real entity）としては存在しない。論理ブロック自体は、データの集合又はデータの集合を含むエンベロープとみなすことができる。連続した論理ブロックアドレスは、データの共通エンベロープ（仮想論理ブロック）又は共通アドレス（仮想論理ブロックアドレス）に属するものとみなされる。用語「連続した（consecutive）」は、それ自体で、連続したアドレス（例えば、連続したＬＢＡ）、連続したデータエンベロープ（例えば、連続した論理ブロック）、又は連続したアドレスによって定義される連続したエンベロープ内の連続したデータの集合を表すこともある。例えばここに示すように、データ、特に伝送中のデータの短命性（ephemeral nature）のために、多くの場合、データ、データエンベロープ及びデータ／エンベロープアドレス間の関係を記述する「正しい（right）」方法が１つのみではない場合がある。ここに説明する処理又は構造が最も明瞭なるように、慎重に用語を選択しているが、データ、エンベロープ及びこれらのそれぞれのアドレスの関係、処理及び格納に関する説明は、常に、その説明が行われている文脈に照らし合わせて理解されなければならない。
【００４１】
本発明の一目的は、一単位の仮想論理ブロックのデータが一単位の物理データブロック内に格納され、連続した論理ブロックアドレスのデータが連続した物理ブロックアドレスに格納されて、これにより、従来の技術によってデータを読み出すために必要な連続した一対一の関係が維持されるように、マルチバンクフラッシュメモリカードを同時にプログラミングする方法を提供することである。この高性能プログラミング方法は、従来の技術に基づいたデータ処理を説明した図８を用いて説明することができる。本発明においては、４つの入力仮想論理ブロック８０３、８０４、８０５、８０６のデータは、格納又はプログラミング処理中には、断片化されない。格納される前に同じ仮想論理ブロック内で連続してアドレスが付されていた論理ブロックのデータは、物理メモリに格納されるときに、連続した物理アドレスを維持する。例えば、ＶＬＢＡが２１の仮想論理ブロック８０３を構成する連続してアドレスが付された論理ブロック８１０、８１１・・・８１４は、同じ物理データブロック８５０内の連続して物理ブロックアドレスが付けられた物理ページ８５８、８５９・・・８６０にそれぞれ格納される。物理メモリ内において、非断片化格納（non-fragmented storage）を行うためには、データをＲＡＭデータバッファ８３０から複数のＲＡＭデータレジスタ８４０〜８４６に供給するときに、データをインタリーブすることはできない。マルチバンクメモリシステム内で非断片化格納を行うことができる処理は、プログラミングサイクル毎に、各ＶＬＢからの１つの論理ブロックを保存する処理を含む。ある所定のサイクルにおいてプログラミングされる複数の論理ブロックアドレスは、同一である。次のプログラミングステップでは、処理は、連続してアドレスが付された論理ブロック間を移動する。共通のＶＬＢＡによって定義される論理ブロックアドレスのデータは、常に、同じＲＡＭデータレジスタに供給され、共通の物理データブロックに格納され、以下に説明するように、連続した論理ブロックアドレスからのデータは、連続した物理ブロックアドレスに格納される。
【００４２】
第１のサイクルにおいて、第１のＶＬＢ８０３の第１の論理ブロック８１０からのデータは、第１のＲＡＭデータレジスタ８４０にロードされる。第２のＶＬＢ８０４の第１の論理ブロック８１５は、第２のＲＡＭデータレジスタ８４２にロードされる。第３のＶＬＢ８０５の第１の論理ブロック８１９は、第３のＲＡＭデータレジスタ８４４にロードされ、第４のＶＬＢ８０６の第１の論理ブロック８２３は、第４のＲＡＭデータレジスタ８４６にロードされる。そして、４つのＲＡＭデータレジスタ８４０〜８４６は、それぞれの内容をそれぞれ物理ページ８５８、８６１、８６４、８７０に同時にプログラミングする。
【００４３】
第２のサイクルにおいては、４つの仮想論理ブロック８０３、８０４、８０５、８０６のそれぞれの第２の論理ブロック８１１、８１６、８２０、８２４からのデータは、それぞれ４つのＲＡＭデータレジスタ８４０〜８４６にロードされ、そして、ＲＡＭデータレジスタ８４０〜８４６は、それぞれの内容をそれぞれ物理ページ８５９、８６２、８６５、８７１に同時にプログラミングする。
【００４４】
この処理は、４つの仮想論理ブロック８０３、８０４、８０５、８０６のそれぞれの最後の論理ブロック８１４、８１８、８２２、８２６からのデータが、４つのメモリバンク８３２、８３４、８３６、８３８に亘って分散されている４つの物理データブロック８５０、８５２、８５４、８５６のそれぞれの最後の物理ページ８６０、８６３、８６６、８７２にプログラミングされるまで、繰り返される。この処理により、各ＶＬＢ内の連続した論理ブロックの元の配置（original orientation）は、物理データブロックの連続した物理ページにおいても維持される。
【００４５】
このデータ配置を達成する一方法を図９に示すフローチャートを用いて説明する。なお、このフローチャートは、上述の目的を達成するためのイベントのシーケンスの一例を示しているにすぎない。当業者は、ここに示すステップと異なる特定のステップによって、機能的には同一であるアルゴリズムを想到することができる。したがって、図９に示すフローチャートは、本発明に基づくデータ記憶方法を限定するものではない。ホストが、記憶する入力データを識別したとき、処理は、データのファイルの第１の仮想論理ブロックから開始する。ステップ９０２において、ホストのプロセッサは、入力データに含まれる最小の論理ブロックアドレスを識別する。このアドレスが、選択された論理ブロックアドレス（select Logical Block Address）となる。ステップ９０４において、フラッシュメモリシステムのコントローラは、現在の仮想論理ブロック内の現在の論理ブロックからのデータを、ＲＡＮデータバッファの第１の「ページ」に記憶する。ステップ９０６において、仮想論理ブロックアドレスが１インクリメントされる（ここでは、説明を簡単にするために、入力データのファイルを構成する仮想論理ブロックは、連続した仮想論理ブロックアドレスを有するものとするが、以下の説明により、当業者は、本発明のアルゴリズムを用いて、連続しない仮想論理ブロックアドレスを有するユーザデータをどのように格納するかについても容易に知ることができる。）。ステップ９０８において、ＲＡＭデータバッファ内の「ページ」が１インクリメントされる。ステップ９０７において、プロセッサは、ＬＢＡオフセットをＶＬＢＡに連結して、選択されたＬＢＡ（select LBA）を形成する。ステップ９１０において、現在のＬＢＡ及び現在のＶＬＢＡに基づいて定義されるデータが、ＲＡＭデータバッファの現在のページに記憶される。ステップ９１２において、プロセッサは、現在のＶＬＢＡが入力データファイル内の最後のＶＬＢＡであるか否かを判定する。現在のＶＬＢＡが最後のＶＬＢＡではない場合、プロセッサは、ステップ９０６に戻り、ここから上述の手順を繰り返す。一方、現在のＶＬＢＡが入力データファイルの最後のＶＬＢＡである場合、処理は、ステップ９１４に進み、ＲＡＭデータバッファ内の連続したページのデータが、連続したＲＡＭデータレジスタに記憶される。ステップ９１６において、コントローラは、現在のデータファイルを格納する仮想物理ブロックアドレスを既に選択しているか否かを判定する。ＶＰＢＡが選択されていない場合、コントローラは、ステップ９１８において、空いているＶＰＢＡを選択する。一方、コントローラが空いているＶＰＢＡを既に選択しているとき、ステップ９２０において、コントローラは、現在のＶＬＢオフセットを現在のＶＰＢＡに連結して、現在のＰＢＡを形成する。ステップ９２２において、ＲＡＭデータレジスタは、それぞれの内容を、現在の物理ブロックアドレスによって定義されるそれぞれのメモリバンク内のページにプログラミングする。ステップ９２４においては、コントローラは、現在のＬＢＡが入力データファイルの最後のＬＢＡであるか否かを判定する。最後の論理ブロックのデータが格納された場合、処理はステップ９３２に進���、終了する。一方、格納されたデータが、入力データファイルの最後のＬＢＡでない場合、プロセッサは、ステップ９２６において、ＬＢＡをインクリメントし、ステップ９２８において、ＶＬＢＡを、入力データファイルの最初のＶＬＢＡにリセットし、ステップ９３０において、ＲＡＭデータバッファ内の最初のページをリセットする。そして、プロセッサは、ステップ９０７に戻り、データ記憶処理を継続する。
【００４６】
ここに説明する高性能データ記憶アルゴリズムは、データ記憶の各サイクルにおいて、入力ユーザデータのファイル全体に亘る複数の仮想論理ブロックからデータを取り出すので、上述のような処理が、図６に示すフラッシュメモリシステム６００だけで行われる場合、ＲＡＭデータバッファ６０７、８３０は、入力ユーザデータ８００のファイル全体を保持するのに十分な容量を有している必要がある。したがって、本発明の好ましい実施の形態において、データの論理ブロックは、プログラミングサイクル毎に、ホストシステム６０１によって選択され、ＲＡＭデータバッファ６０７に供給される。これにより、ＲＡＭデータバッファ６０７のサイズを実質的に小さくすることができ、フラッシュメモリシステム６００内の貴重なメモリ空間を解放することができる。好ましい実施の形態において、ＲＡＭデータバッファ６０７は、フラッシュメモリシステム６００内のＲＡＭデータレジスタ６１３〜６１９の全メモリ容量に等しいメモリ容量を有している。フラッシュメモリシステム６００内のランダムアクセスメモリの容量は、フラッシュメモリシステム６００から図３に示すＲＡＭ空間マネージャ３７０を削除し、図１０に示すように、関連付けデータ１００６をホスト１０００２内に格納することにより、更に低減することができる。
【００４７】
本発明に基づく高性能非インタリーブデータ記憶処理（high-performance non interleaved data storage process）では、従来の「シングルバンク」フラッシュメモリシステム又は従来のホストとの互換性に問題が残る。この本発明では、プログラミングサイクル毎に、複数のＶＬＢから論理ブロックのデータを選択する。一方、従来のフラッシュメモリシステムは、１サイクル毎に、１つの論理ブロックを保存し、論理ブロックを連続して選択している。すなわち、第１のＶＬＢの全てのデータが格納されるまでは、第２のＶＬＢのデータの格納は開始されない。
【００４８】
したがって、従来のホストを用いても、高性能ホストを用いても、物理メモリ内に格納されるデータの配置は類似又は同一であるが、両方の場合におけるデータを格納する処理は、根本的に異なる。従来のホストを用いた例では、順次受信された論理ブロックのデータは、同じ物理データブロック内の連続した物理ブロックアドレスにプログラミングされる。一方、高性能ホストを用いた実施の形態では、順次受信された論理ブロックのデータは、独立したメモリバンク間に分散された独立した物理データブロックに同時にプログラミングされる。フラッシュメモリシステムが、従来のホストからの入力データを、上述した本発明に基づく高性能プログラミング方法に基づいて格納する場合、従来のホストから供給されるデータは、インタリーブ処理の場合と同様に断片化されてしまい、本発明の本来の目的が達成できなくなる。フラッシュメモリシステムは、従来のホストと高性能ホストの異なるデータアルゴリズムの両方に適応しなければならないので、フラッシュメモリシステムは、接続されたホストが従来のホストであるか、高性能ホストであるかを判定しなければならない。この判定の後、フラッシュメモリシステムは、接続されたホストに適した方法に基づいてデータを記憶するように、それ自体を設定する（configure）ことができなければならない。本発明では、電源投入時に、ハンドシェイク処理及び設定処理が実行される。ハンドシェイク処理中に、フラッシュメモリシステムとホスト間で情報が交換される。図１１は、スタートアップ時にフラッシュメモリシステムからホストに転送されるデータのエンベロープ（以下、データエンベロープという。）１１００を示している。データエンベロープ１１００は、通常、５１２バイトからなり、ヘッダ１１０２と、通常スタートアップ時に転送される従来のデータ１１０４と、大きな未使用領域１１０６とを含んでいる。従来のホストがスタートアップ時にデータエンベロープ１１００を受信したとき、従来のホストは、データエンベロープ１１００の未使用領域１１０６を処理せず、あるいは未使用領域１１０６に何が保存されているかを感知しない。したがって、本発明に基づくマルチバンクメモリシステムは、販売業者固有の値（Vendor Unique Value）をデータエンベロープ１１００の未使用領域１１０６に挿入し、この販売業者固有の値は、スタートアップ時にホストに送信される。スタートアップには、３つのシナリオがある。
【００４９】
第１のシナリオにおいては、従来の「メモリスティック」又はフラッシュメモリシステムは、スタートアップ時に、ハンドシェイクエンベロープを高性能ホストに送信する。従来のメモリスティックは、販売業者固有の値を有しておらず、また、そのような値をデータエンベロープ１１００の未使用領域１１０６に書き込む機能も有していない。高性能ホストは、ハンドシェイクエンベロープであるデータエンベロープ１１００を受信したとき、データエンベロープ１１００の未使用領域１１０６を調べ、メモリスティックが従来のメモリスティックであるかを判定する。そして、高性能ホストは、それ自体を、連続した論理ブロックアドレスからのデータを送信する従来の構成にディフォルト設定する。
【００５０】
第２のシナリオにおいては、高性能メモリスティックは、スタートアップ時に、販売業者固有の値をデータエンベロープ１１００の未使用領域１１０６に書き込み、このパケットを従来のホストに送信する。このホストは、高性能ホストではないので、従来のホストは、販売業者固有の値を読み出し、又は処理することができず、それ自体を高性能ホストとして識別することによる応答を行わない。高性能メモリスティックのディフォルト状態は、標準モードであり、この標準モードでは、連続した論理ブロックアドレスのデータは、連続した物理ブロックアドレスに格納される。従来のホストは、ハンドシェイク応答において、販売業者固有の値に対する肯定応答を行わないので、高性能メモリスティックは、ディフォルトの標準モードで動作し、独立した複数のメモリバンクに対する同時のプログラミングは行われない。
【００５１】
第３のシナリオにおいては、高性能メモリスティックは、スタートアップ時に、販売業者固有の値をデータエンベロープ１１００の未使用領域１１０６に書き込み、このパケットを高性能ホストに送信する。高性能ホストは、パケットを受信したとき、データエンベロープ１１００の未使用領域１１０６に書き込まれた販売業者固有の値を読み出し、高性能メモリスティックに対して、それ自体が高性能ホストであることを示すハンドシェイク応答を送信する。また、高性能ホストは、それ自体を、複数のＶＬＢからのデータをプログラミングサイクル毎に送信するように設定する。高性能メモリスティックは、高性能ホストからの適切な応答を受信したとき、それ自体を、本発明に基づいて、入力データを上述したように連続したメモリバンクに格納するように設定する。
【００５２】
他の実施の形態において、高性能フラッシュメモリシステム内のＲＡＭデータバッファ６０７は、入力ユーザデータのファイル全体を格納するのに十分な容量を有する。この実施の形態の不利な点は、ＲＡＭデータバッファ６０７によって多くのメモリ容量が消費されることである。この実施の形態の利点は、従来のホストからユーザデータのファイル全体をダウンロードして、ユーザデータをマルチバンクに同時に格納することができ、それによって、従来のホストがマルチバンクフラッシュメモリシステムの速度の利点を利用できることである。
【００５３】
以上、本発明の構成及び動作の原理を明瞭に説明するために、本発明の特定の具体例を多くの特定の詳細とともに記述した。ここで説明した特定の具体例及びその詳細は、添付の請求の範囲を制限するものではない。本発明の思想及び範囲から逸脱することなく、上述した具体例を様々に変形できることは、当業者にとって明らかである。
【図面の簡単な説明】
【図１】  複数のページを有する物理データブロックのグループを示す図である。
【図２】  従来の技術に基づく、ホストに接続されたリムーバブルフラッシュメモリの構成を示す図である。
【図３】  データの関連付け及び格納に用いられる様々なレジスタ及びフィールドを示す図である。
【図４】  データの記憶中に物理アドレスと論理アドレスを関連付ける処理を説明するフローチャートである。
【図５】  データを読み出す方法を説明するフローチャートである。
【図６】  １つのＲＡＭデータレジスタをそれぞれ有する複数のメモリバンクを備えるフラッシュメモリシステムの構成を示す図である。
【図７】  ２つのＲＡＭデータレジスタをそれぞれ有する複数のメモリバンクを備えるフラッシュメモリシステムの構成を示す図である。
【図８】  複数のメモリバンクを備えるフラッシュメモリユニットの構成を示す図である。
【図９】  本発明に基づく、高性能の複数のメモリバンク記憶アルゴリズムを実現する方法を示すフローチャートである。
【図１０】  関連付けデータを有するホストを含むフラッシュメモリシステムの構成を示す図である。
【図１１】  ハンドシェイクデータエンベロープのデータ構成を示す図である。
【図１】
0004945792.tif 000002
【図２】
0004945792.tif 000003
【図３】
0004945792.tif 000004
【図４】
0004945792.tif 000005
【図５】
0004945792.tif 000006
【図６】
0004945792.tif 000007
【図７】
0004945792.tif 000008
【図８】
0004945792.tif 000009
【図９】
0004945792.tif 000010
【図１０】
0004945792.tif 000011
【図１１】
0004945792.tif 000012