【手続補正書】
【提出日】平成20年5月19日(2008.5.19)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【書類名】  明細書
【発明の名称】  ホスト互換性を有し、同時にプログラム可能なマルチフラッシュメモリバンクを実現するメモリアーキテクチャ
【特許請求の範囲】
【請求項１】
複数の独立した、個別にアドレス指定可能なメモリバンクを備えるフラッシュメモリシステムにおいて、各メモリバンクは、
ａ．個別にアドレス指定可能で、個別にプログラム可能な不揮発性の複数のデータ記憶領域と、
ｂ．一次ＲＡＭレジスタと、
ｃ．スタートアップ時にハンドシェイクデータパケットに販売業者固有の値をロードするロード手段を含む販売業者固有の値とを備え、
当該フラッシュメモリシステムは、上記販売業者固有の値に応じて、データ記憶のディフォルトモードである第１のモードと、第２のモードとで選択的に動作し、
上記第１のモードでは、データは、単一のプログラミングサイクルで、単一のページにデータをプログラミングするための単一のＲＡＭデータレジスタに記憶されることを特徴とするフラッシュメモリシステム。
【請求項２】
ホストインタフェース回路と、ＲＡＭデータバッファと、メモリインタフェース回路とを有するコントローラを更に備え、
上記ＲＡＭデータバッファは、上記ホストインタフェース回路と上記メモリインタフェース回路とに機能的に接続されており、上記メモリインタフェース回路は、データバスを介して、上記複数のメモリバンクのそれぞれの一次ＲＡＭレジスタに機能的に接続されており、
上記コントローラは、上記複数のメモリバンクのそれぞれに関連した一次ＲＡＭレジスタを介して、上記複数のメモリバンクに亘って分散された上記複数のデータ記憶領域へのデータのプログラミングを制御することを特徴とする請求項１記載のフラッシュメモリシステム。
【請求項３】
上記複数のメモリバンク内のデータ記憶領域は、それぞれ複数のページからなる複数の物理データブロックを含むことを特徴とする請求項２記載のフラッシュメモリシステム。
【請求項４】
上記第２のモードでは、データは、単一のプログラミングサイクルで、上記ＲＡＭデータバッファから複数のＲＡＭデータレジスタに記憶され、
上記複数のＲＡＭデータレジスタは、上記複数のページのそれぞれに、データを同時にプログラミングすることを特徴とする請求項３記載のフラッシュメモリシステム。
【請求項５】
ａ．ホストと、
ｂ．スタートアップ時にハンドシェイクデータパケットを上記ホストに送信する送信手段とを更に備える請求項４記載のフラッシュメモリシステム。
【請求項６】
上記コントローラは、上記ホストからのハンドシェイク応答がない場合、入力ユーザデータを上記第１のモードに従って記憶することを特徴とする請求項５記載のフラッシュメモリシステム。
【請求項７】
上記コントローラは、上記ホストからのハンドシェイク応答を受信した場合、入力ユーザデータを上記第２のモードに従って記憶することを特徴とする請求項６記載のフラッシュメモリシステム。
【請求項８】
上記ＲＡＭデータレジスタは、１つの物理ページをプログラミングするのに十分なメモリ容量を有することを特徴とする請求項７記載のフラッシュメモリシステム。
【請求項９】
動作サイクル期間中に、当該フラッシュメモリシステム内の別々のページにプログラミングする入力データの複数の論理ブロックを選択する選択手段を更に備える請求項７記載のフラッシュメモリシステム。
【請求項１０】
上記複数の論理ブロックを選択する選択手段は、上記ホスト内に配設されていることを特徴とする請求項９記載のフラッシュメモリシステム。
【請求項１１】
上記ホストは、デジタルカメラであることを特徴とする請求項１０記載のフラッシュメモリシステム。
【請求項１２】
上記複数の論理ブロックを選択する選択手段は、当該フラッシュメモリシステム内に配設されていることを特徴とする請求項９記載のフラッシュメモリシステム。
【請求項１３】
上記ＲＡＭデータバッファは、入力ユーザデータのファイル全体を格納するのに十分なメモリ容量を有することを特徴とする請求項１１記載のフラッシュメモリシステム。
【請求項１４】
上記各メモリバンクは、それぞれ補助ＲＡＭデータレジスタを備え、第１の補助ＲＡＭデータレジスタは、第１のメモリバンク内のデータ記憶領域にデータをプログラミングでき、第２の補助ＲＡＭデータレジスタは、第２のメモリバンク内のデータ記憶領域にデータをプログラミングできることを特徴とする請求項１１記載のフラッシュメモリシステム。
【請求項１５】
販売業者固有の値と、フラッシュメモリユニットと、該フラッシュメモリユニットに機能的に接続されたコントローラとを備え、該コントローラは、メモリインタフェース回路に機能的に接続されたＲＡＭデータバッファを備え、該フラッシュメモリユニットは、複数の独立した、個別にアドレス指定可能なメモリバンクを備え、該各メモリバンクは、一次ＲＡＭデータレジスタと、個別にアドレス指定可能で、個別にプログラム可能な複数の物理データブロックとを備え、該各物理データブロックは、個別にアドレス指定可能で、個別にプログラム可能な複数のページを備えるマルチバンクフラッシュメモリシステムにおいて、入力データをプログラミングするプログラミング方法において、
ａ．ハンドシェイクデータパケットを生成するステップと、
ｂ．上記フラッシュメモリシステム内の販売業者固有の値を上記ハンドシェイクデータパケットにロードするステップと、
ｃ．上記フラッシュメモリシステムから上記ハンドシェイクデータパケットをホストに送信するステップと、
ｄ．上記フラッシュメモリシステムを第１のデータ記憶構成にディフォルト設定するステップと、
ｅ．上記入力データを上記フラッシュメモリシステムに第１のデータ記憶方法に従ってプログラミングするステップとを有し、
上記第１のデータ記憶方法は、各プログラミングサイクル毎に１ページ分のユーザデータをプログラミングし、
上記フラッシュメモリシステムは、上記販売業者固有の値に応じて、データ記憶のディフォルトモードである第１のモードと、第２のモードとで選択的に動作することを特徴とするプログラミング方法。
【請求項１６】
ａ．上記ホストから上記フラッシュメモリシステムにハンドシェイク応答を送信するステップと、
ｂ．上記フラッシュメモリシステムを第２のデータ記憶構成に設定するステップと、
ｃ．上記入力データを上記フラッシュメモリシステムに第２のデータ記憶方法に従ってプログラミングするステップとを更に有し、
上記第２のデータ記憶方法は、各プログラミングサイクル毎に複数のページのデータを複数のメモリバンクに同時にプログラミングすることを特徴とする請求項１５記載のプログラミング方法。
【請求項１７】
上記入力データをフラッシュメモリシステムに第２のデータ記憶方法に従ってプログラミングするステップは、
ａ．第１の仮想論理ブロックアドレスによって定義される第１の最初の論理ブロックを、第１のメモリバンク内の第１の一次ＲＡＭデータレジスタにロードするステップと、
ｂ．第２の仮想論理ブロックアドレスによって定義される第２の最初の論理ブロックを、第２のメモリバンク内の第２の一次ＲＡＭデータレジスタにロードするステップと、
ｃ．（１）上記第１の一次ＲＡＭデータレジスタ内の第１の最初の論理ブロックを、上記第１のメモリバンク内の第１の物理データブロックの第１の最初のページにプログラミングする処理と、（２）上記第２の一次ＲＡＭデータレジスタ内の第２の最初の論理ブロックを、上記第２のメモリバンク内の第２の物理データブロックの第２の最初のページにプログラミングする処理とを同時に実行するステップとを有する請求項１６記載のプログラミング方法。
【請求項１８】
ａ．上記第１の仮想論理ブロックアドレスによって定義される第１の後続する論理ブロックを、上記第１のメモリバンク内の上記第１の一次ＲＡＭデータレジスタにロードするステップと、
ｂ．上記第２の仮想論理ブロックアドレスによって定義される第２の後続する論理ブロックを、上記第２のメモリバンク内の上記第２の一次ＲＡＭデータレジスタにロードするステップと、
ｃ．（１）上記第１の一次ＲＡＭデータレジスタ内の第１の後続する論理ブロックを、上記第１のメモリバンク内の第１の物理データブロックの第１の後続するページにプログラミングする処理と、（２）上記第２の一次ＲＡＭデータレジスタ内の第２の後続する論理ブロックを、上記第２のメモリバンク内の第２の物理データブロックの第２の後続するページにプログラミングする処理とを同時に実行するステップとを有する請求項１７記載のプログラミング方法。
【請求項１９】
ａ．上記第１の最初の論理ブロックと上記第１の後続する論理ブロックとは、上記第１の仮想論理ブロック内における連続する仮想論理ブロックアドレスによって定義され、
ｂ．上記第２の最初の論理ブロックと上記第２の後続する論理ブロックとは、上記第２の仮想論理ブロック内における連続する仮想論理ブロックアドレスによって定義され、
ｃ．上記第１の後続する論理ブロックを第１の一次ＲＡＭレジスタにロードするステップは、上記第１の最初の論理ブロックを第１の一次ＲＡＭレジスタにロードするステップに連続して実行され、
ｄ．上記第２の後続する論理ブロックを第２の一次ＲＡＭレジスタにロードするステップは、上記第２の最初の論理ブロックを第２の一次ＲＡＭレジスタにロードするステップに連続して実行され、
ｅ．上記第１の最初のページと上記第１の後続するページとは、上記第１の物理データブロック内の連続する物理ブロックアドレスによって定義され、
ｆ．上記第２の最初のページと上記第２の後続するページとは、上記第２の物理データブロック内の連続する物理ブロックアドレスによって定義されることを特徴とする請求項１８記載のプログラミング方法。
【請求項２０】
上記フラッシュメモリシステム内の複数のメモリバンク内の各物理データブロックは、同数のページを有し、各物理データブロックの各ページは、同一のページアドレス方式によってアドレス指定されることを特徴とする請求項１９記載のプログラミング方法。
【請求項２１】
上記第１の物理データブロック内の第１の最初のページと、上記第２の物理データブロック内の第２の最初のページとは、同じページアドレスによって定義されることを特徴とする請求項２０記載のプログラミング方法。
【請求項２２】
上記各メモリバンクは、同数の物理データブロックを有し、該各メモリバンクの各物理データブロックは、同一のブロックアドレス方式によってアドレス指定されることを特徴とする請求項２１記載のプログラミング方法。
【請求項２３】
上記第１の物理データブロックと上記第２の物理データブロックとは、同じ物理ブロックアドレスによって定義されることを特徴とする請求項２２記載のプログラミング方法。
【請求項２４】
上記第１のメモリバンクのアドレスと上記第２のメモリバンクのアドレスとは、連続するアドレスであることを特徴とする請求項２３記載のプログラミング方法。
【請求項２５】
上記複数の独立した、個別にアドレス指定可能なメモリバンクは、それぞれ補助ＲＡＭデータレジスタを備え、
ａ．上記第１の仮想論理ブロックアドレスによって定義される第１の後続するブロックを、上記第１のメモリバンク内の第１の補助ＲＡＭデータレジスタにロードするステップと、
ｂ．上記第２の仮想論理ブロックアドレスによって定義される第２の後続する論理ブロックを、上記第２のメモリバンク内の第２の補助ＲＡＭデータレジスタにロードするステップと、
ｃ．（１）上記第１の補助ＲＡＭデータレジスタ内の第１の後続する論理ブロックを、上記第１のメモリバンク内の第１の物理データブロックの第１の後続するページにプログラミングする処理と、（２）上記第２の補助ＲＡＭデータレジスタ内の第２の後続する論理ブロックを、上記第２のメモリバンク内の第２の物理データブロックの第２の後続するページにプログラミングする処理とを同時に実行するステップとを有する請求項２４記載のプログラミング方法。
【請求項２６】
ａ．上記第１の最初の論理ブロックと上記第１の後続する論理ブロックとは、上記第１の仮想論理ブロック内における連続する仮想論理ブロックアドレスによって定義され、
ｂ．上記第２の最初の論理ブロックと上記第２の後続する論理ブロックとは、上記第２の仮想論理ブロック内における連続する仮想論理ブロックアドレスによって定義され、
ｃ．上記第１の最初の論理ブロックをロードするステップ及び上記第１の後続する論理ブロックをロードするステップは、上記第１のメモリバンク内の複数のＲＡＭデータレジスタにデータを連続的にロードするステップを含み、
ｄ．上記第２の最初の論理ブロックをロードするステップ及び上記第２の後続する論理ブロックをロードするステップは、上記第２のメモリバンク内の複数のＲＡＭデータレジスタにデータを連続的にロードするステップを含み、
ｅ．上記第１の最初のページと上記第１の後続するページとは、上記第１の物理データブロック内の連続する物理ブロックアドレスによって定義され、
ｆ．上記第２の最初のページと上記第２の後続するページとは、上記第２の物理データブロック内の連続する物理ブロックアドレスによって定義されることを特徴とする請求項２５記載のプログラミング方法。
【請求項２７】
上記入力データを第１のデータ記憶方法に従ってフラッシュメモリシステムにプログラミングするステップは、
ａ．第１の論理ブロックアドレスによって定義されるデータを、物理データブロックの第１のページにプログラミングするステップと、
ｂ．第２の論理ブロックアドレスによって定義されるデータを、上記物理データブロックの第２のページにプログラミングするステップとを連続して実行するステップを有し、
上記第１の論理ブロックアドレスと上記第２の論理ブロックアドレスとは、同じ仮想論理ブロックアドレス内の連続するアドレスによって定義され、上記第１のページと上記第２のページとは、同じ物理データブロック内の連続する物理ブロックアドレスによって定義されることを特徴とする請求項１５記載のプログラミング方法。
【請求項２８】
ホストからの入力データをフラッシュメモリシステムにプログラミングするプログラミング方法において、
ａ．フラッシュメモリユニットとホストとを機能的に接続するステップと、
ｂ．上記フラッシュメモリシステムから受信されたハンドシェイクデータパケットを調べるステップとを有し、
上記フラッシュメモリシステムは、販売業者固有の値に応じて、データ記憶のディフォルトモードである第１のモードと、第２のモードとで選択的に動作し、
上記ハンドシェイクデータパケットに、上記販売業者固有の値が含まれていない場合、上記ホストを標準動作モードに設定し、上記フラッシュメモリシステムにおいて該標準動作モードに従ってデータを記憶するステップを更に有するプログラミング方法。
【請求項２９】
上記ハンドシェイクデータパケットに、上記販売業者固有の値が含まれている場合、上記ホストを高性能動作モードに設定し、上記フラッシュメモリシステムにおいて該高性能動作モードに従ってデータを記憶するステップを更に有する請求項２８記載のプログラミング方法。
【請求項３０】
上記フラッシュメモリシステムにおいて高性能動作モードに従ってデータを記憶するステップは、
ａ．第１の仮想論理ブロックアドレスによって定義される第１の最初の論理ブロックを、第１のメモリバンク内の第１の一次ＲＡＭデータレジスタにロードするステップと、
ｂ．第２の仮想論理ブロックアドレスによって定義される第２の最初の論理ブロックを、第２のメモリバンク内の第２の一次ＲＡＭテータレジスタにロードするステップと、
ｃ．（１）上記第１の一次ＲＡＭデータレジスタ内の第１の最初の論理ブロックを、上記第１のメモリバンク内の第１の物理データブロックの第１の最初のページにプログラミングする処理と、（２）上記第２の一次ＲＡＭデータレジスタ内の第２の最初の論理ブロックを、上記第２のメモリバンク内の第２の物理データブロックの第２の最初のページにプログラミングする処理とを同時に実行するステップとを有する請求項２９記載のプログラミング方法。
【請求項３１】
ａ．上記第１の仮想論理ブロックアドレスによって定義される第１の後続するブロックを、上記第１のメモリバンク内の上記第１の一次ＲＡＭデータレジスタにロードするステップと、
ｂ．上記第２の仮想論理ブロックアドレスによって定義される第２の後続する論理ブロックを、上記第２のメモリバンク内の上記第２の一次ＲＡＭデータレジスタにロードするステップと、
ｃ．（１）上記第１の一次ＲＡＭデータレジスタ内の第１の後続する論理ブロックを、上記第１のメモリバンク内の第１の物理データブロックの第１の後続するページにプログラミングする処理と、（２）上記第２の一次ＲＡＭデータレジスタ内の第２の後続する論理ブロックを、上記第２のメモリバンク内の第２の物理データブロックの第２の後続するページにプログラミングする処理とを同時に実行するステップとを有する請求項３０記載のプログラミング方法。
【請求項３２】
ａ．上記第１の最初の論理ブロックと上記第１の後続する論理ブロックとは、上記第１の仮想論理ブロック内における連続する仮想論理ブロックアドレスによって定義され、
ｂ．上記第２の最初の論理ブロックと上記第２の後続する論理ブロックとは、上記第２の仮想論理ブロック内における連続する仮想論理ブロックアドレスによって定義され、
ｃ．上記第１の後続する論理ブロックを第１の一次ＲＡＭデータレジスタにロードするステップは、上記第１の最初の論理ブロックを第１の一次ＲＡＭデータレジスタにロードするステップに連続して実行され、
ｄ．上記第２の後続する論理ブロックを第２の一次ＲＡＭデータレジスタにロードするステップは、上記第２の最初の論理ブロックを第２の一次ＲＡＭデータレジスタにロードするステップに連続して実行され、
ｅ．上記第１の最初のページと上記第１の後続するページとは、上記第１の物理データブロック内の連続する物理ブロックアドレスによって定義され、
ｆ．上記第２の最初のページと上記第２の後続するページは、上記第２の物理データブロック内の連続する物理ブロックアドレスによって定義されることを特徴とする請求項３１記載のプログラミング方法。
【請求項３３】
上記フラッシュメモリシステム内の複数のメモリバンク内の各物理データブロックは、同数のページを有し、各物理データブロックの各ページは、同一のページアドレス方式によってアドレス指定されることを特徴とする請求項３２記載のプログラミング方法。
【請求項３４】
上記第１の物理データブロック内の第１の最初のページと、上記第２の物理データブロック内の第２の最初のページとは、同じページアドレスによって定義されることを特徴とする請求項３３記載のプログラミング方法。
【請求項３５】
上記各メモリバンクは、同数の物理データブロックを有し、該各メモリバンクの各物理データブロックは、同一のブロックアドレス方式によってアドレス指定されていることを特徴とする請求項３４記載のプログラミング方法。
【請求項３６】
上記第１の物理データブロックと上記第２の物理データブロックとは、同じ物理ブロックアドレスによって定義されることを特徴とする請求項３５記載のプログラミング方法。
【請求項３７】
上記フラッシュメモリシステムにおいて標準動作モードに従ってデータを記憶するステップは、
ａ．第１の論理ブロックアドレスからのデータを物理データブロックの第１のページにプログラミングするステップと、
ｂ．第２の論理ブロックアドレスからのデータを上記物理データブロックの第２のページにプログラミングするステップとを有し、
上記第１の論理ブロックアドレスと上記第２の論理ブロックアドレスとは、同じ仮想論理ブロック内の連続するアドレスであり、上記第１のページと上記第２のページとは、連続する物理ブロックアドレスによって定義されることを特徴とする請求項２８記載のプログラミング方法。
【請求項３８】
ａ．複数の独立した、個別にアドレス指定可能なメモリバンクと、
ｂ．一次ＲＡＭデータレジスタと、
ｃ．スタートアップ時にハンドシェイクデータパケットに販売業者固有の値をロードするロード手段と、上記フラッシュメモリシステムによって送信された該ハンドシェイクデータパケットを調べる手段とを含む販売業者固有の値と、
ｄ．プログラミング時間が減少するように、所定の販売業者固有の値に応じて、上記一次ＲＡＭデータレジスタからの複数のデータを、インタリーブして、上記複数のメモリバンクに同時に記憶する手段と、
ｅ．上記所定の販売業者固有の値がない場合には、上記複数のデータを、インタリーブしないで、上記複数のメモリバンクに順次記憶する手段とを備えるフラッシュメモリシステム。
【請求項３９】
ａ．複数の独立した、個別にアドレス指定可能なメモリバンクと、
ｂ．一次ＲＡＭレジスタと、
ｃ．スタートアップ時にハンドシェイクデータパケットに販売業者固有の値をロードするロード手段と、上記フラッシュメモリシステムによって送信された該ハンドシェイクデータパケットを調べる手段とを含む販売業者固有の値と、
ｄ．上記所定の販売業者固有の値がない場合には、データを、インタリーブしないで、上記複数のメモリバンクに順次記憶する手段とを備え、
当該フラッシュメモリシステムは、複数のページのデータを、高性能フラッシュメモリ動作が可能なホスト用の上記複数のメモリバンクに同時にプログラムすることを特徴とするフラッシュメモリシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、フラッシュメモリシステムに関する。詳しくは、本発明は、ホストシステムとインタフェースするフラッシュメモリシステムに関する。
【０００２】
【従来の技術】
フラッシュメモリは、電気的に書込可能な不揮発性デジタルメモリ媒体である。フラッシュメモリは、不揮発性であるため、メモリ内に記憶されているデジタルデータを保持するための保持電圧（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：ＲＡＭ）に引けを取らない。一方、フラッシュメモリのプログラミング速度又は書込速度は、ミリ秒単位であり、これは、一般的なＲＡＭのプログラミング速度の１／１０程度の速度である。したがって、ＲＡＭデータバッファ２０４は、不揮発性メモリユニット２０６がデータを受け取るよりも遙かに高速にデジタルデータを受け取り、出力する。このように、フラッシュメモリのプログラミングフェーズは、フラッシュメモリコンポーネントを組み込んだ集積回路及びＭＯＳシステムにおける潜在的な処理速度を制限する主要な要因となっている。
【００２２】
フラッシュメモリのプログラミング速度は、図６に示すようなマルチバンクフラッシュメモリシステムによって実質的に向上する。フラッシュメモリシステム６００は、例えば、コンピュータ又はデジタルカメラ等であるホストシステム６０１に機能的に接続されている。フラッシュコントローラ６０４は、ホストインタフェース回路６０５と、データバッファ６０７と、メモリインタフェース回路６０９とを備え、フラッシュメモリユニット６０２に機能的に接続されている。フラッシュメモリユニット６０２は、複数のメモリバンク６２１〜６２７を備える。第１のバンク６２１は、複数の物理データブロック６３１〜６３７と、１つのＲＡＭデータレジスタ６１３とを備える。第２のバンク６２３は、複数の物理データブロック６４１〜６４７と、１つのＲＡＭデータレジスタ６１５とを備える。第３のバンク６２５は、複数の物理データブロック６５１〜６５７と、１つのＲＡＭデータレジスタ６１７とを備える。第４のバンク６２７は、複数の物理データブロック６６１〜６６７と、１つのＲＡＭデータレジスタ６１９とを備える。各メモリバンク６２１〜６２７は、通常、同数の物理データブロックを備える。また、各ＲＡＭデータレジスタ６１３〜６１９は、通常、物理メモリの１ページ分に等しいデータ容量を有し、このデータ容量は、通常、ユーザデータ用の５１２バイトにオーバーヘッドデータ用の１６バイトを加えた値である。図６に示すフラッシュメモリユニット６０２は、４つのメモリバンク６２１〜６２７を備えているが、この構成は例示的なものである。マルチバンクフラッシュは、幾つのメモリバンクを備えていてもよい。同様に、データフィールド及びメモリ領域のサイズも、従来より用いられている一般的な構成に基づいて例示的に示しているにすぎない。ここに示す従来の技術及びこの技術の本発明への応用の説明は、いずれも本発明におけるメモリバンクの数を特定の数に限定するものではない。同様に、この説明は、物理的又は論理的データフィールド又はレジスタのサイズを限定するものではなく、及び書き込まれ又は処理される入力データのデータ量を制限するものでもない。ここ示すデータフィールドのサイズ、より大きなメモリコンポーネントを構成する物理メモリのサブグループの数等のパラメータは、当該分野において一般的に用いられている値に基づいて選択されたものであり、例示的に示しているにすぎない。
【００２３】
マルチバンクのフラッシュメモリシステム６００においては、ＲＡＭデータバッファ６０７は、フラッシュメモリブロック６３１〜６６７に直接データを格納しない。ここでは、ＲＡＭデータバッファ６０７は、複数のＲＡＭデータレジスタ６１３〜６１９にデータをロードし、これらのＲＡＭデータレジスタ６１３〜６１９が同時にユーザデータをそれぞれの対応するメモリバンク６２１〜６２７にロードする。各ＲＡＭデータレジスタ６１３、６１５、６１７、６１９は、通常、１ページ分のデータを格納又はプログラミングする容量を有している。
【００２４】
フラッシュメモリコントローラ６０４がホストシステム６０１から情報を受け取ると、ホストインタフェース回路６０５は、この情報をＲＡＭデータバッファ６０７の待ち行列に入れる（queue）。ＲＡＭデータバッファ６０７が所定量のデータによって満たされると、メモリインタフェース回路６０９は、ＲＡＭデータバッファ６０７からのデータをフラッシュメモリユニット６０２内の複数のＲＡＭデータレジスタ６１３、６１５、６１７、６１９のうちの選択されたＲＡＭデータレジスタに書き込む処理を開始する。図６に示す４バンクのフラッシュメモリユニット６０２では、バッファ６０７は、通常、４ページ分のデータを格納する。最も効率的な設計では、選択されたＲＡＭデータレジスタの数は、入力データの仮想論理ブロックの数に等しい。データバス６１１は、データバッファ６０７からデータレジスタ６１３、６１５、６１７、６１９にデータを供給するパラレルバス構造を有している。ＲＡＭデータバッファ６０７及びＲＡＭデータレジスタ６１３、６１５、６１７、６１９は、ランダムアクセスメモリ構造を有しているため、これらの構造間の読出及び書込速度は極めて速い。選択されたＲＡＭデータレジスタ６１３〜６１９が満たされると、各ＲＡＭデータレジスタ６１３〜６１９は、同時に、それぞれのメモリバンク６２１〜６２７内のフラッシュメモリ領域へのデータの書込を開始する。４バンクシステムにおいては、プログラミング時間は、通常のフラッシュメモリユニットに必要なプログラミング時間の約１／４に短縮される。同様に、１０バンクシステムにおいては、プログラミング時間は、通常のフラッシュメモリユニットに必要なプログラミング時間の約１／１０に短縮される。このように、マルチバンクシステムは、ユーザデータをフラッシュメモリユニットに同時にプログラミングするＲＡＭデータレジスタの数をＭとすると、通常のフラッシュメモリユニットより、約Ｍ倍速く動作する。
【００２５】
ＲＡＭデータバッファ６０７からＲＡＭデータレジスタ６１３〜６１９への信号供給及びプログラミング時間は、フラッシュメモリセルへのプログラミング時間に比べれば無視できる程度のものであるが、より高度な設計では、ＲＡＭデータバッファ６０７からＲＡＭデータレジスタ６１３〜６１９にユーザデータを書き込むために消費される時間を実質的に短縮することができる。図７は、複数のメモリバンク７０２、７０４、７０６、７０８を備えるメモリユニットの構成を示している。この具体例の特徴は、それぞれ各メモリバンク７０２〜７０８に割り当てられた二重ＲＡＭデータレジスタ（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）としては存在しない。論理ブロック自体は、データの集合又はデータの集合を含むエンベロープとみなすことができる。連続する論理ブロックアドレスは、共通のデータのエンベロープ（仮想論理ブロック）又は共通のアドレス（仮想論理ブロックアドレス）に属するものとみなされる。「連続する」という用語は、それ自体で、連続するアドレス（例えば、連続したＬＢＡ）、連続するデータエンベロープ（例えば、連続する論理ブロック）、又は連続するアドレスによって定義される連続するエンベロープ内の連続するデータの集合を表すこともある。例えばここに示す具体例において、特に伝送されるデータの流動性のため、データ、データエンベロープ及びデータ／エンベロープアドレスの間の関係を記述する「正しい」表現が１つのみではない場合が多々ある。以下では、ここに説明する処理又は構造を最も明瞭にするよう慎重に表現を選択しているが、データ、エンベロープ、及びこれらのそれぞれのアドレスの関係、処理及び格納に関する記述は、その記述が行われているコンテキストに照らし合わせて理解される。
【００４１】
本発明の一目的は、単一の仮想論理ブロックのデータが単一の物理データブロック内に格納され、連続する論理ブロックアドレスに対応するデータが連続する物理ブロックアドレスに格納されて、これにより従来の手法によってデータを読み出すために必要な連続的な一対一の関係が維持されるように、マルチバンクフラッシュメモリカードを同時にプログラミングする手法を提供することである。このような高性能なプログラミング法は、従来のデータ処理を説明した図８を用いて説明できる。本発明においては、供給された４つの論理ブロック８０３、８０４、８０５、８０６のデータは、格納又は記憶処理においては断片化されない。格納される前に同じ仮想論理ブロック内で連続的なアドレスが付されていた論理ブロックデータは、物理メモリに格納される際、連続的な物理アドレスを維持する。例えば、第２１のＶＬＢＡ８０３を構成する連続的にアドレスが付された論理ブロック８１０、８１１・・・８１４は、同じ物理データブロック８５０内における連続する物理ブロックアドレス８５８、８５９・・・８６０にそれぞれ格納される。物理メモリ内において、断片化されない格納を実現するために、データをＲＡＭデータバッファ８３０から複数のＲＡＭデータレジスタ８４０〜８４６に供給する際、データをインタリーブすることはできない。マルチバンクメモリ方式においてデータを断片化せずに保存する処理は、各プログラミングサイクル毎にＶＬＢからの１つの論理ブロックを保存する処理を含む。全ての任意のサイクルにおいて同時にプログラミングされる複数の論理ブロックアドレスは、同一である。後続するプログラミングでは、処理は、連続的にアドレスが付された論理ブロック間を移動する。共通のＶＬＢＡによって定義された論理ブロックアドレスは、常に同じＲＡＭデータレジスタに供給され、共通の物理データブロックに格納され、これにより、ここに説明するように、連続的な論理ブロックアドレスからのデータは、連続的な物理ブロックアドレスに格納される。
【００４２】
第１のサイクルにおいて、第１のＶＬＢ８０３の第１の論理ブロック８１０からのデータは、第１のＲＡＭデータレジスタ８４０にロードされる。第２のＶＬＢ８０４の第１の論理ブロック８１５は、第２のＲＡＭデータレジスタ８４２にロードされる。第３のＶＬＢ８０５の第１の論理ブロック８１９は、第３のＲＡＭデータレジスタ８４４にロードされ、第４のＶＬＢ８０６の第１の論理ブロック８２３は、第４のＲＡＭデータレジスタ８４６にロードされる。そして、４つのＲＡＭデータレジスタ８４０〜８４６は、自らのコンテンツをそれぞれ対応する物理ページ８５８、８６１、８６４、８７０に同時にプログラミングする。
【００４３】
第２のサイクルにおいては、４つの仮想論理ブロック８０３、８０４、８０５、８０６のそれぞれの第２の論理ブロック８１１、８１６、８２０、８２４は、それぞれ４つのＲＡＭデータレジスタ８４０〜８４６の１つにロードされ、これらのＲＡＭデータレジスタ８４０〜８４６は、それぞれのコンテンツをそれぞれ対応する物理ページ８５９、８６２、８６５、８７１に同時にプログラミングする。
【００４４】
このような処理は、４つの仮想論理ブロック８０３、８０４、８０５、８０６のそれぞれの最後の論理ブロック８１４、８１８、８２２、８２６が４つのメモリバンク８３２、８３４、８３６、８３８に亘って分散されている４つの物理データブロック８５０、８５２、８５４、８５６のそれぞれの最後のページ８６０、８６３、８６６、８７２にプログラミングされるまで繰り返し実行される。このような処理により、各ＶＬＢ内で連続する論理ブロックの本来の連続性が物理データブロックの連続するページにおいても維持される。
【００４５】
上述のようなデータ構成を実現するための処理を図９に示すフローチャートを用いて説明する。なお、このフローチャートは、上述の目的を達成するためのイベントのシーケンスの一例を示しているにすぎない。当業者は、ここに示す処理と機能的には同一であるが、特定のステップが異なるアルゴリズムを想到することができる。したがって、図９に示すフローチャートは、本発明に基づくデータ記憶方法を制限するものではない。ホストが特定され、記憶するデータが供給されると、データのファイルの第１の仮想論理ブロックから処理が開始される。ステップ９０２において、プロセッサは、入力データに含まれる最下位の論理ブロックアドレスを特定する。このアドレスが選択された論理ブロックアドレス（select Logical Block Address）となる。ステップ９０４において、フラッシュメモリシステムのコントローラは、現在の仮想論理ブロック内の現在の論理ブロックからのデータをＲＡＮデータバッファの第１の「ページ」に格納する。ステップ９０６において、仮想論理ブロックアドレスが１インクリメントされる（ここでは、説明を簡潔に行うために、入力データのファイルを構成する仮想論理ブロックは、連続する仮想論理ブロックアドレスを有するものとするが、以下の説明により、当業者は、本発明のアルゴリズムを用いて、連続しない仮想論理ブロックアドレスを有するユーザデータをどのように保存するかについても容易に知ることができる。）。ステップ９０８において、ＲＡＭデータバッファ内の「ページ」が１インクリメントされる。ステップ９０７において、プロセッサは、ＬＢＡオフセットをＶＬＢＡに結合し、選択されたＬＢＡ（select LBA）を生成する。ステップ９１０において、現在のＬＢＡ及び現在のＶＬＢＡに基づいて定義されたデータをＲＡＭデータバッファの現在のページに格納する。ステップ９１２において、プロセッサは、現在のＶＬＢＡが入力データファイル内の最後のＶＬＢＡであるか否かを判定する。現在のＶＬＢＡが最後のＶＬＢＡではない場合、プロセッサは、ステップ９０６に戻り、ここから上述の手順を繰り返す。一方、現在のＶＬＢＡが入力データファイルの最後のＶＬＢＡである場合、プロセッサは、ステップ９１４に進み、ＲＡＭデータバッファ内の連続するページを連続するＲＡＭデータレジスタに記憶する。ステップ９１６においては、コントローラは、現在のデータファイルを保存するための仮想物理ブロックアドレスを既に選択しているか否かを判定する。ＶＰＢＡが選択されていない場合、プロセッサは、ステップ９１８において、空いているＶＰＢＡを選択する。一方、プロセッサが既に空いているＶＰＢＡを選択している場合は、ステップ９２０において、プロセッサは、現在のＶＬＢオフセットを現在のＶＰＢＡに結合し、現在のＰＢＡを生成する。ステップ９２２において、ＲＡＭデータレジスタは、現在の物理ブロックアドレスによって定義されている各メモリバンク内のページにそれぞれのコンテンツをプログラミングする。ステップ９２４においては、プロセッサは、現在のＬＢＡが入力データファイルの最後のＬＢＡであるか否かを判定する。最後の論理ブロックのデータが格納された場合、処理はステップ９３２に進み、終了する。���方、格納されたデータが入力データファイルの最後のＬＢＡではない場合、プロセッサは、ステップ９２６において、ＬＢＡをインクリメントし、ステップ９２８においてＶＬＢＡを入力データファイルの最初のＶＬＢＡにリセットし、ステップ９３０において、ＲＡＭデータバッファを最初のページにリセットする。そして、プロセッサは、ステップ９０７に戻り、データ格納処理を継続する。
【００４６】
ここに説明する構成のデータ記憶アルゴリズムは、データ記憶の各サイクルにおいて、供給されたユーザデータのファイル全体に亘る複数の仮想論理ブロックからデータを引き出すものであるが、上述のような処理を図６に示すフラッシュメモリシステム６００において排他的に実行する場合、ＲＡＭデータバッファ６０７、８３０は、入力ユーザデータ８００のファイル全体を格納する十分な容量を有している必要がある。そこで、本発明の好ましい具体例においては、データの論理ブロックは、各プログラミングサイクル毎にホストシステム６０１によって選択され、ＲＡＭデータバッファ６０７に供給される。これにより、ＲＡＭデータバッファ６０７のサイズを実質的に小さくすることができ、フラッシュメモリシステム６００内の貴重なメモリ空間を有効に活用することができる。好ましい具体例においては、ＲＡＭデータバッファ６０７は、フラッシュメモリシステム内のＲＡＭデータレジスタ６１３〜６１９の全メモリ容量に等しいメモリ容量を有している。フラッシュメモリシステム内のランダムアクセスメモリの容量は、フラッシュメモリシステム６００から図３に示すＲＡＭ空間マネージャ３７０を削除し、図１０に示すように、相関データ１００６をホスト１０００２に格納することにより更に低減することができる。
【００４７】
この具体例に示す高性能非インタリーブデータ記憶処理（high-performance non interleaved data storage process）では、従来型の「シングルバンク」フラッシュメモリシステム又は従来型のホストとの互換性に問題が残る。この具体例では、各プログラミングサイクル毎に複数のＶＬＢから論理ブロックのデータを選択する。一方、従来型のフラッシュメモリシステムは、１サイクル毎に１つの論理ブロックを保存し、論理ブロックを連続的に選択している。すなわち、第１のＶＬＢの全てのデータが格納されるまでは、第２のＶＬＢのデータの格納は開始されない。
【００４８】
したがって、従来型のホストを用いても、高性能ホストを用いても物理メモリに格納されるデータの構成は同様又は類似するが、この２つの環境間では、データを格納する処理は大きく異なる。従来の具体例では、順次的に受け取られた論理ブロックのデータは、同じ物理データブロック内の連続する物理ブロックアドレスにプログラミングされる。一方、高性能な具体例では、順次的に受け取られた論理ブロックのデータは、個別の複数のメモリバンクに亘って分散された個別の複数の物理データブロックに同時にプログラミングされる。フラッシュメモリシステムが従来型のホストから供給されたデータを、上述した本発明に基づく高性能な手法に基づいて格納しようとした場合、従来型のホストから供給されたデータは、インタリーブ処理の場合と同様に断片化されてしまい、本発明の本来の目的が達成できなくなる。フラッシュメモリシステムは、従来型のホストと高性能ホストの異なるデータアルゴリズムの両方に適応する必要があるため、フラッシュメモリシステムは、接続されたホストが従来型であるか、高性能型であるかを判定できる必要がある。この判定の後、フラッシュメモリシステムは、接続されたホストに応じた適切な手法でデータを格納するために自らを構成する必要がある。本発明では、電源投入時にハンドシェイク処理及びコンフィグレーション処理が実行される。ハンドシェイク処理においては、フラッシュメモリシステムとホストとの間で情報が交換される。図１１は、スタートアップ時にフラッシュメモリシステムからホストに送信されるデータのデータエンベロープ１１００を示している。データエンベロープ１１００は、通常５１２バイトであり、ヘッダ１１０２と、通常スタートアップ時に送信される従来型データ１１０４と、大きな未使用領域１１０６とから構成されている。従来型のホストがスタートアップ時にデータエンベロープ１１００を受け取ると、従来型のホストは、データエンベロープ１１００の未使用領域１１０６を処理せず、また未使用領域１１０６に何が保存されているかも感知しない。そこで、本発明では、マルチバンクメモリ方式は、スタートアップ時にホストに送信されるデータエンベロープ１１００の未使用領域１１０６に販売業者固有の値（Vendor Unique Value）を挿入する。
【００４９】
第１のシナリオにおいては、従来型の「メモリスティック」又はフラッシュメモリシステムは、スタートアップ時に高性能ホストにハンドシェイクエンベロープを送信する。従来型のメモリスティックは、販売業者固有の値を有しておらず、また、そのような情報をデータエンベロープ１１００の未使用領域１１０６に書き込む機能も有していない。高性能ホストは、ハンドシェイクエンベロープであるデータエンベロープ１１００を受け取ると、データエンベロープ１１００の未使用領域１１０６を調べ、メモリスティックが従来型のメモリスティックであると判定する。これにより、ホストは、自らを連続する論理ブロックアドレスからデータを供給する従来型の構成にディフォルト設定する。
【００５０】
第２のシナリオにおいては、高性能メモリスティックは、スタートアップ時にデータエンベロープ１１００の未使用領域１１０６に販売業者固有の値を書き込み、このパケットを従来型のホストに供給する。このホストは、高性能ホストではないため、このホストは、販売業者固有の値を読み取り、又は処理することができず、したがって、自らが高性能ホストであることを示す応答を行わない。高性能メモリスティックのディフォルト状態は、標準モードであり、この標準モードでは、連続する論理ブロックアドレスは、連続する物理ブロックアドレスに格納される。この場合、ホストは、ハンドシェイク応答において販売業者固有の値に対する肯定応答を行わないので、高性能メモリスティックは、ディフォルトの標準モードで動作し、独立した複数のメモリバンクに対する同時のプログラミングは行われない。
【００５１】
第３のシナリオにおいては、高性能メモリスティックは、スタートアップ時にデータエンベロープ１１００の未使用領域１１０６に販売業者固有の値を書き込み、このパケットを高性能ホストに供給する。高性能ホストは、データエンベロープ１１００の未使用領域１１０６に書き込まれた販売業者固有の値を読み取り、高性能メモリスティックに対し、自らが高性能ホストであることを示すハンドシェイク応答を送信する。このホストは、各プログラミングサイクル毎に複数のＶＬＢからデータを供給するよう自らを設定する。高性能メモリスティックは、高性能ホストからの正しい応答を受け取り、本発明に基づいて、入力データを上述したように連続するメモリバンクに格納するよう自らを設定する。
【００５２】
変形例においては、高性能フラッシュメモリシステムのＲＡＭデータバッファ６０７は、入力ユーザデータ全体を格納するのに十分大きな容量を有する。このような変形例では、ＲＡＭデータバッファ６０７のために多くのメモリが消費されてしまうという難点がある。しかしながら、このような変形例では、従来型のホストからユーザデータのファイル全体をダウンロードし、ユーザデータをマルチバンクに同時に格納することができ、したがって、従来型のホストについてもマルチバンクフラッシュメモリシステムの利益を享受できるという利点を有する。
【００５３】
以上、本発明の構成及び動作の原理を明瞭に説明するために、本発明の特定の具体例を多くの特定の詳細とともに記述した。ここで説明した特定の具体例及びその詳細は、添付の請求の範囲を制限するものではない。本発明の思想及び範囲から逸脱することなく、上述した具体例を様々に変形できることは、当業者にとって明らかである。
【図面の簡単な説明】
【図１】
複数のページを有する物理メモリブロックグループを示す図である。
【図２】
ホストに接続されたリムーバブルフラッシュメモリの従来の構成を示す図である。
【図３】
データ相関及び格納に用いられる様々なレジスタ及びフィールドを示す図である。
【図４】
データ記憶の際に物理アドレス及び論理アドレスを関係付ける処理を説明するフローチャートである。
【図５】
データの読出動作を説明するフローチャートである。
【図６】
各バンクが単一のＲＡＭデータレジスタを有する複数のメモリバンクを備えるフラッシュメモリシステムの構成を示す図である。
【図７】
各バンクが２つのＲＡＭデータレジスタを有する複数のメモリバンクを備えるフラッシュメモリシステムの構成を示す図である。
【図８】
複数のメモリバンクを備えるフラッシュメモリユニットの構成を示す図である。
【図９】
本発明に基づく高性能マルチメモリバンク記憶アルゴリズムの具体例を示すフローチャートである。
【図１０】
相関データを有するホストを含むフラッシュメモリシステムの構成を示す図である。
【図１１】
ハンドシェイクデータエンベロープのデータ構成を示す図である。