(57)【要約】【課題】  アドレステーブルの内容の頻繁な変更をなくすと共に、特定の領域における書換え回数の増加を抑制するために、書換え回数を平準化して寿命低下を防止する。【解決手段】  ホストマシン１から指定される論理アドレスに関係なく、フラッシュメモリ２０上にデータ格納用の空き領域を予め用意し、ホストマシン１からのライトデータを順次書込み、平行してバックグランドでデータの無効となったブロック２１を消去していくが、その際に論理アドレスと物理アドレスの関係を保持するアドレステーブル３０を、ＲＡＮのようなワード単位での書換え可能な不揮発性メモリ１２に保持する。【選択図】      図１
2005242897.tif 000002
【特許請求の範囲】
【請求項１】
物理アドレスが付された複数のデータ格納用のページにより構成されるブロックを複数有し、前記ページ単位でデータの書込みと読出しが行われ、前記ブロック単位でデータの消去を行った後にその消去されたブロック中の所定のページに対してデータの書込みが行われるフラッシュメモリと、
ホストから指定される論理アドレスを前記物理アドレスに変換するための情報が記録されたアドレステーブルを保持する、ワード単位での書換え可能な不揮発性メモリと、
前記ホストからの命令に基づいて装置全体を制御する制御手段とを備え、
前記論理アドレスに関係無く前記フラッシュメモリ上にデータ格納用の空き領域を予め用意し、この用意された空き領域に前記ホストからのデータを順次書込む構成にしたことを特徴とするフラッシュディスク装置。
【請求項２】
物理アドレスが付された複数のデータ格納用のページにより構成されるブロックを複数有し、前記ページ単位でデータの書込みと読出しが行われ、前記ブロック単位でデータの消去を行った後にその消去されたブロック中の所定のページに対してデータの書込みが行われるフラッシュメモリと、
ホストからの命令に基づいて装置全体を制御し、且つ、前記ホストから指定される論理アドレスを前記物理アドレスに変換するためのアドレステーブルを生成して前記フラッシュメモリの特定領域に保存させる制御手段とを備え、
前記論理アドレスに関係無く前記フラッシュメモリ上にデータ格納用の空き領域を予め用意し、この用意された空き領域に前記ホストからのデータを順次書込み、且つ、前記アドレステーブルの変更は前記制御手段にて行い、その変更後のアドレステーブルを前記フラッシュメモリの特定領域にログのように順次追加する構成にしたことを特徴とするフラッシュディスク装置。
【請求項３】
物理アドレスが付された複数のデータ格納用のページにより構成されるブロックを複数有し、前記ページ単位でデータの書込みと読出しが行われ、前記ブロック単位でデータの消去を行った後にその消去されたブロック中の所定のページに対してデータの書込みが行われるフラッシュメモリと、
ホストからの命令に基づいて装置全体を制御し、且つ、前記ホストから指定される論理アドレスを前記物理アドレスに変換するためのアドレステーブルを生成して前記フラッシュメモリの特定領域に保存させる制御手段とを備え、
前記論理アドレスに関係無く前記フラッシュメモリ上にデータ格納用の空き領域を予め用意し、この用意された空き領域に前記ホストからのデータを順次書込み、且つ、前記アドレステーブルの変更は前記制御手段にて行い、その変更部分を前記フラッシュメモリの特定領域にログのように順次追加する構成にしたことを特徴とするフラッシュディスク装置。
【請求項４】
物理アドレスが付された複数のデータ格納用のページにより構成されるブロックを複数有し、前記ページ単位でデータの書込みと読出しが行われ、前記ブロック単位でデータの消去を行った後にその消去されたブロック中の所定のページに対してデータの書込みが行われるフラッシュメモリと、
ホストからの命令に基づいて装置全体を制御する制御手段とを備え、
前記ホストから指定される論理アドレスに関係無く前記フラッシュメモリ上にデータ格納用の空き領域を予め用意し、この用意された空き領域に前記ホストからのデータと前記論理アドレスの情報とを順次書込み、且つ、装置立上げ時に、前記制御手段により、前記フラッシュメモリに書込まれた前記論理アドレスの情報に基づき、前記論理アドレスを前記物理アドレスに変換するためのアドレステーブルを生成し、このアドレステーブルを用いて前記フラッシュメモリに対するアクセス制御を行う構成にしたことを特徴とするフラッシュディスク装置。
【請求項５】
請求項１〜３のいずれか１項に記載のフラッシュディスク装置において、
前記ブロックを管理するブロック管理テーブルを設け、前記ブロック管理テーブルに前記ブロックの書換え数の値を保持し、次に消去すべきブロックの選択に使用する構成にしたことを特徴とするフラッシュディスク装置。
【請求項６】
請求項４記載のフラッシュディスク装置において、
前記データを前記フラッシュメモリのブロックに書込む際に、同時に当該ブロックに書換え数の値を保持し、次に消去すべきブロックの選択に使用する構成にしたことを特徴とするフラッシュディスク装置。
【請求項７】
前記複数のページを纏めた或る大きさの単位でアクセス制御を行う構成にしたことを特徴とする請求項１〜６のいずれか１項に記載のフラッシュディスク装置。
【請求項８】
物理アドレスが付された複数のデータ格納用のページにより構成されるブロックを複数有し、前記ページ単位でデータの書込みと読出しが行われ、前記ブロック単位でデータの消去を行った後にその消去されたブロック中の所定のページに対してデータの書込みが行われるフラッシュメモリと、
ホストから指定される論理アドレスを前記物理アドレスに変換するための情報が記録されたアドレステーブルを用いて、前記フラッシュメモリに対するデータの書込み及び読出しを制御する制御手段とを備え、
前記複数のブロックにおける書換え回数に所定の差が生じたときに、書換え回数の少ないブロックのデータを他の空きブロックにコピーし、このブロックを使用可能にする構成にしたことを特徴とするフラッシュディスク装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリであるフラッシュメモリを使用した半導体ディスク装置であるフラッシュディスク装置に関するものである。
【背景技術】
【０００２】
従来、フラッシュディスク装置に関する技術としては、例えば、次のような文献に記載されるものがあった。
【０００３】
【特許文献１】特開平２−２９２７９８号公報（特許３２２６０４２号）「フラッシ              ュＥＥｐｒｏｍシステム」
【特許文献２】特開平１１−３３９４８５号公報「フラッシュＥＥｐｒｏｍシステム              」
【特許文献３】特開平６−１２４５９６号公報「フラッシュメモリを使用した記憶装              置」
【特許文献４】特開平５−２７９２４号公報「半導体メモリを用いた外部記憶システ              ム及びその制御方法」
【０００４】
近年の不揮発性メモリの大容量化、低コスト化に伴い、不揮発性メモリを使用した半導体ディスク装置であるフラッシュディスク装置が作られるようになった。フラッシュディスク装置に一般的に使用されている大容量の不揮発性メモリ素子は、ＡＮＤ型／ＮＡＮＤ型等のフラッシュメモリである。
【０００５】
フラッシュメモリは複数のブロックにより構成され、更にこれらの各ブロックが、複数のページにより構成されている。ページは、リード（書込み）／ライト（読出し）の単位であり、通常、磁気ディスク装置等のハードディスク装置におけるリード／ライトの最小単位であるセクタと同じ大きさで、５１２バイト（Ｂｙｔｅ）である。ページ内のデータを書換える場合は、通常、前データを消去した後、新たなデータを書込む。ブロックは消去の単位（一般的には１６ＫＢｙｔｅ）であり、書換えがこのブロック内の一部のページであっても、この１つのブロック全部を消去する必要がある。
【０００６】
このようなフラッシュメモリを使用したフラッシュディスク装置では、フラッシュメモリに保存されたデータが或る一定の確率でビットエラーを発生すること、及び、ブロックと呼ばれる単位で消去を行うが、各ブロック毎に消去回数の寿命が例えば１０万回〜１００万回の短寿命であるという制約がある。
【０００７】
これらの制約を解決するために、特許文献１及び特許文献２の技術では、フラッシュメモリの全領域の内、一部のブロックを故障時の代替用に用意し、又、各ページに冗長の複数ビット（ｂｉｔ）を付加し、誤り訂正コードやビットエラーの代替情報（ページ内でビットの代替を行う）、更にはブロックの代替情報を保持し、前記制約の解決を行っている。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来のフラッシュディスク装置では、次のような課題があった。
【０００９】
フラッシュディスク装置をコンピュータシステムの２次記憶装置（補助記憶装置或いは外部記憶装置）として使用すると、オペレーティングシステム（ＯＳ）、アプリケーションプログラム、データ等が保存され、ディスク上の任意の箇所がリード／ライトされる。通常、こうしたコンピュータシステムでのライトは、特定の記憶領域に集中する。この場合、書込みが行われている記憶領域のブロックと、代替ブロックとして用意した分のブロックしかライトに使用できない。例えば、ブロック書換え制限が１０万回の一般的なＮＡＮＤ型のフラッシュメモリを使用した場合、代替ブロックが２０ブロックで、ライトが１０ブロックに集中した場合は、３０ブロック×１０万回＝３００万回のライトしか出来ず、コンピュータシステムの寿命のネックとなる。
【００１０】
又、フラッシュディスク装置おける或るブロック中の或るページへデータをライトする場合、通常は、該当するページの前データを消去してから新たなデータをライトする必要がある。この際、ライトデータ量が小さい場合でも、当該ページを含むブロック全体のデータの消去が必要（ブロック単位の消去が必要）となり、当該ブロックでライトを行わない部分（ページ）についても消去前のデータを再びライトする必要がある。一般的なＮＡＮＤ型フラッシュメモリを使用したフラッシュディスク装置の場合、１ページのリードは１００μｓ程度で完了するが、ライトは１０ｍｓ以上掛かる。
【００１１】
一方でこうした問題を解決するために、特許文献３、４では、ホストの中央処理装置（以下「ＣＰＵ」という。）から指定される論理アドレスに関係無く、フラッシュディスク装置内に空き領域を予め用意し、ホストＣＰＵから指定されるライトデータの論理アドレスを、アドレステーブル（論理アドレスを実アドレスに変換するためのデーブル）により、フラッシュメモリ上の空き領域の物理アドレスに変換し、この物理アドレスの空き領域にライトデータを順次書込んでいく方式が提案されている。しかし、この方式では、論理アドレスとフラッシュメモリ上の物理アドレスとの関係が頻繁に変化するために、その都度、アドレステーブルの内容を変更する必要がある。そのため、特許文献３の技術では、バッテリバックアップを行って、フラッシュメモリの特定の領域にアドレステーブルを退避し、特許文献４の技術では、既に書込まれている箇所への上書きが複数回可能な特殊なフラッシュメモリを使用することで対処しているが、何れも不利不便であって実現にあたっての制約となっている。
【００１２】
本発明は、前記従来技術の課題を解決し、アドレステーブルの内容の頻繁な変更をなくすと共に、特定の領域における書換え回数の増加を抑制するために、装置全体の書換え回数を平準化して寿命低下を防止出来るフラッシュディスク装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
前記課題を解決するために、本発明のフラッシュディスク装置では、次の（ａ）〜（ｅ）のように構成している。
【００１４】
（ａ）  ホストから指定される論理アドレスに関係なく、フラッシュメモリ上にデータ格納用の空き領域を予め用意し、ホストからのライトデータを順次書込み、平行してバックグランドでデータの無効となったブロックを消去して行くが、その際に論理アドレスと物理アドレスの関係を保持するアドレステーブルを、随時読み書き可能なメモリ（以下「ＲＡＭ」という。）のようなワード単位での書換え可能な不揮発性メモリに保持する。ワード単位での書換えとは、ＲＡＭ等のメモリが１回のアクセスサイクルでアクセスできるデータの単位がワードであり、これは通常８ビット（ｂｉｔ）や１６ｂｉｔといった単位のデータであり、この単位での書換えをいう。
【００１５】
（ｂ）  フラッシュメモリの特定領域に、アドレステーブルの変更内容をログのように順次追加する。ログとは、データベース管理等で使用しているログと同じ概念である。例えば、データベースのデータを書換える場合、実際のデータを書換えるのと同時に、「どの場所のデータをどの値で書換えた」という情報を残すが、これがログと呼ばれるものであり、ログ用の領域にライトデータをどんどん追加していき、ライトデータが壊れた場合でもログを用いてそのデータを復元出来る。本発明において、アドレステーブルを収めるには、フラッシュメモリの特性上、頻繁な書換えを行うと寿命が低下するので、消去してから書込むのではなく、変更した情報をログとして追加していって従来の課題を解決している。
【００１６】
（ｃ）  データをフラッシュメモリに書込む際に、一緒に論理アドレスの情報を保持することにより、アドレステーブルの頻繁な内容の変更を抑制する。
【００１７】
（ｄ）  特定領域だけに書換えが集中しないように書換え回数の平準化を行うために、データをフラッシュメモリのブロックに書込む際に、同時に当該ブロックに書換え回数の値を保持し、次に消去すべきブロックの選択に使用する。
【００１８】
（ｅ）  ＯＳ等のように更新が行われずに固定されているデータを保持するフラッシュメモリのブロックを有効に使用するために、書換え回数に或一定の差が生じた時に、書換え回数の少ないブロックのデータを他の空きブロックにコピーし、この固定されているデータを保持していたブロックを使えるようにすることにより、全体の書換え回数の平準化を行う。
【発明の効果】
【００１９】
請求項１に係る発明によれば、論理アドレスに関係なくフラッシュメモリ上に空き領域を予め用意し、ホストからのライトデータを順次書込み、その際に論理アドレスと物理アドレスの関係を保持するアドレステーブルをワード単位での書換えの可能な不揮発性メモリに保持するようにしている。そのため、ホストからフラッシュメモリの特定の領域にライトアクセスが集中する場合でも、そのフラッシュメモリ内の特定の領域が、他の領域よりも摩耗することを防止することが出来る。これにより、フラッシュディスク装置全体の寿命低下を抑制出来る。
【００２０】
請求項２に係る発明によれば、フラッシュメモリの特定領域に、アドレステーブルをログのように順次追加するようにしているので、アドレステーブルの変更をフラッシュメモリに追加して行くことにより、高価なワード単位での書換え可能な不揮発性メモリを削除し、コストを削減することが出来る。
【００２１】
請求項３に係る発明によれば、フラッシュメモリの特定領域に、アドレステーブルの差分のみをログのように順次追加するようにしているので、アドレステーブルの変更部分のログ（アドレステーブルログ）を、フラッシュメモリに保存する構成により、ホストからのライトが特定のセクタに集中した場合でも、アドレステーブルログのフラッシュメモリ上のエリアは均一に書換えられ、特定エリアの消耗を防ぐことが出来る。
【００２２】
請求項４に係る発明によれば、データをフラッシュメモリに書込む際に一緒に論理アドレスの情報を保持して、立上げ時にアドレステーブルを構成することにより、アドレステーブルの保存を無くすようにしているので、アドレステーブルやアドレステーブルログをフラッシュメモリに書出すためのオーバヘッドを削除出来、しかも、データとアドレス等の情報がフラッシュメモリの１つのページに同時に書込まれるため、常に整合が保たれる。更に、フラッシュメモリの上書きの回数制限に制約されずに、使用するフラッシュメモリを選択することが出来る。
【００２３】
請求項５に係る発明によれば、書換え回数の平準化を行うため、ブロック管理テーブルに書換え数の値を保持し、次に消去すべきブロックの選択に使用するようにしているので、各ブロックの書換え回数を管理して書換え回数の少ないブロックから使用することにより、各ブロックの消耗を均一化して、フラッシュディスク装置の寿命を延ばすことが出来る。
【００２４】
請求項６に係る発明によれば、書換え回数の平準化を行うため、データをフラッシュメモリのブロックに書込む際に同時に当該ブロックに書換え数の値を保持し、次に消去すべきブロックの選択に使用するようにしているので、フラッシュメモリ上のブロック管理テーブルの書換えがブロック故障の時に限られ、ホストからの通常のデータの書込みではブロック管理テーブルの書換えが発生しなくなるため、オーバヘッドが削減される。
【００２５】
請求項７に係る発明によれば、複数のセクタを纏めてリード／ライトの単位として、アドレステーブルの圧縮を行うようにしているので、複数のセクタを１つの纏まりとして管理することにより、高価なワード単位での書換え可能な不揮発性メモリの使用量を削減することが出来る。更に、サイズの大きいリード／ライトの処理を、１つの或る大きさ（以下「チャンク」という。）分のデータを一緒にフラッシュメモリにリード／ライトすることにより、オーバヘッドを削減することが出来る。
【００２６】
請求項８に係る発明によれば、更新が行われずに固定されているデータを保持するフラッシュメモリのブロックを有効に使用するため、書換え回数に或る一定の差が生じた時に、書換え回数の少ないブロックのデータを他の空きブロックにコピーし、このブロックを使えるようにしたので、最初のインストール以降、ホストから更新されないフラッシュメモリの領域があった場合、そのデータが書込まれていたフラッシュメモリの領域も、運用中に順次ホストから更新されるデータの領域として使えるようになる。よって、本フラッシュディスク装置の書換え回数の全体量が増大する。
【発明を実施するための最良の形態】
【００２７】
本発明のフラッシュディスク装置では、フラッシュメモリと、制御手段とを備えている。前記フラッシュメモリでは、物理アドレスが付された複数のデータ格納用のページにより構成されるブロックを複数有し、前記ページ単位でデータの書込みと読出しが行われ、前記ブロック単位でデータの消去を行った後にその消去されたブロック中の所定のページに対してデータの書込みが行われる。前記制御手段では、ホストから指定される論理アドレスを前記物理アドレスに変換するためのアドレステーブルを用いて、前記フラッシュメモリに対するデータの書込み及び読出しを制御する。前記アドレステーブルは、ワード単位での書換え可能な不揮発性メモリ、或いは前記フラッシュメモリに保存されている。又は、前記アドレステーブルは、前記フラッシュメモリに書込まれた論理アドレスの情報に基づいて前記制御手段により生成される。
【実施例１】
【００２８】
（構成）
図１（Ａ）、（Ｂ）は本発明の実施例を示すフラッシュディスク装置の概略の構成図であり、同図（Ａ）は全体の構成図、及び同図（Ｂ）は同図（Ａ）中のフラッシュメモリの概略の構成図である。
【００２９】
図１（Ａ）において、ホストＣＰＵ等のホストマシン１には、ホストのインタフェース（以下）「Ｉ／Ｆ」という。）バス２により、本実施例で使用されるフラッシュディスク装置１０が接続されている。フラッシュディスク装置１０は、装置全体を制御する制御手段である例えばマイクロプロセッサユニット（以下「ＭＰＵ」という。）１１を有している。ＭＰＵ１１は、ＲＡＭ１１ａ、読出し専用メモリ（以下「ＲＯＭ」という。）１１ｂ、及び入／出力（以下「Ｉ／Ｏ」という。）ポート１１ｃ等により構成され、これには不揮発性メモリ１２が接続されている。不揮発性メモリ１２は、ＭＰＵ１１によりアクセス制御され、管理用のテーブルやリスト等を保持するために、アクセス制御が容易であるＲＡＭ等のようなワード単位での書換えの可能なメモリ構造（ＦＲＡＭ、ＭＲＡＭ等）になっている。
【００３０】
フラッシュディスク装置１０には、ホストＩ／Ｆバス２に接続されたホストＩ／Ｆコントローラ１３が設けられている。ホストＩ／Ｆコントローラ１３は、ホストＩ／Ｆのプロトコルを処理してホストマシン１との間でデータの授受を行う回路であり、これには内部データバス１４を介してバッファメモリ１５が接続されている。バッファメモリ１５は、ホストマシン１からのリード／ライトデータを一時的に保存し処理するメモリである。内部データバス１４には、フラッシュメモリコントローラ１６が接続され、このフラッシュメモリコントローラ１６に、フラッシュメモリバス１７を介して１つ又は複数のフラッシュメモリ２０が接続されている。
【００３１】
フラッシュメモロコントローラ１６は、ＭＰＵ１１からの命令に従ってフラッシュメモリ２０をアクセス制御する回路であり、データ読出し部１６ａ、データ書込み部１６ｂ、及びブロック消去部１６ｃ等により構成されている。１つ又は複数のフラッシュメモリ２０は、ホストマシン１からのライトデータを不揮発に保存するメモリである。
【００３２】
図１（Ｂ）において、フラッシュメモリ２０は、消去の単位であるデータ格納用の複数のブロック２１−Ｎ，２１−（Ｎ＋１），・・・を有している。各ブロック２１は、リード／ライトの単位であるデータ格納用の複数のページ２２−０，２２−１，・・・，２２−３１を有している。１ページ２２は、例えば、５１２Ｂｙｔｅ等の記憶容量を有している。このようなフラッシュメモリ２０では、書換えがブロック２１内の一部のページ２２であっても、１つのブロック全体を消去する必要がある。
【００３３】
図２は、本発明の実施例１を示すものであって、図１（Ａ）のフラッシュディスク装置１０の論理構成図である。
【００３４】
ホストマシン１から見える（即ち、指定される）セクタアドレス（即ち、論理アドレス）２５である論理セクタナンバ（以下、このナンバを「Ｎｏ．」という。）０，１，２，・・・，Ｊを、フラッシュメモリ２０上の物理アドレスであるページアドレスに変換するために、図１の不揮発性メモリ１２内には、アドレステーブル３０が格納されている。アドレステーブル３０内には、論理セクタを物理ページに変換するための複数のアドレス変換データ３１−０，３１−１，３１−２，・・・，３１−Ｋが格納されている。更に、不揮発性メモリ１２内には、フラッシュメモリ２０内の空きページを管理する空きページリスト３２と、フラッシュメモリ２０内のブロック２１−０，２１−１，・・・，２１−Ｌを管理するブロック管理テーブル３３とが格納されている。フラッシュメモリ２０に格納される複数のブロック２１−０〜２１−Ｌは、それぞれ複数のページ２２−０，２２−１，・・・，２２−Ｍを有している。
【００３５】
本実施例１では、不揮発性メモリ１２内にアドレステーブル３０を用意し、ホストマシン１から見えるセクタアドレスである論理セクタＮｏ．から、フラッシュメモリ２０上の物理的なページＮｏ．への写像を保持する。フラッシュメモリ２０には、余分なページ２２−ｉを複数用意し、空きページリスト３２に登録して管理する。
【００３６】
（動作）
フラッシュメモリ２０からのリード動作（１）、フラッシュメモリ２０へのライト動作（２）、フラッシュメモリ２０のガベージコレクション動作（３）、及びその他の動作（４）を説明する。
【００３７】
（１）  リード動作
図３は、図２のフラッシュディスク装置１０のリード動作を示すフローチャートである。
【００３８】
ホストマシン１からの指示に従い、フラッシュメモリ２０の記憶データをリードする場合、ＭＰＵ１１の制御によって次のような処理が行われる。
【００３９】
リード処理が開始されると、ステップＳ１において、ホストマシン１から指定された論理アドレス２５である論理セクタＮｏ．（例えば、論理セクタＮｏ．１）を得る。この論理セクタＮｏ．１は、ホストＩ／Ｆコントローラ１３を介してＭＰＵ１１へ送られる。ステップＳ２において、ＭＰＵ１１は、不揮発性メモリ１２内のアドレステーブル３０から、指定された論理セクタＮｏ．１に対応する物理ページＮｏ．（例えば、アドレス変換データ３１−１）を得て、これに対応するブロック（例えば、２１−０）内のページＮｏ．（例えば、２２−０）を得る。このページＮｏ．がフラッシュメモリコントローラ１６へ送られる。
【００４０】
ステップＳ３において、フラッシュメモリコントローラ１６内のデータ読出し部１６ａでは、ページＮｏ．（２２−０）の記憶データを読出し、バッファメモリ１５に一時的に保存する。ステップＳ４において、バッファメモリ１５に保存されたリードデータは、ホストＩ／Ｆコントローラ１３及びホストＩ／Ｆバス２を介してホストマシン１へ転送される。これにより、リード処理が終了する。
【００４１】
（２）  ライト動作
図４は、図２のフラッシュディスク装置１０のライト動作を示すフローチャートである。
【００４２】
ホストマシン１からの指示に従い、このホストマシン１からの書込みデータをフラッシュメモリ２０にライトする場合、ＭＰＵ１１の制御によって次のような処理が行われる。
【００４３】
ライト処理が開始されると、ステップＳ１１において、ホストＩ／Ｆコントローラ１３は、ホストマシン１から論理アドレス２５である論理セクタＮｏ．（例えば、論理セクタＮｏ．１）と書込みデータを受取る。受取った論理セクタＮｏ．１及び書込みデータの内、論理セクタＮｏ．はＭＰＵ１１へ送られ、書込みデータは一時的にバッファメモリ１５に保存される。ステップＳ１２において、ＭＰＵ１１は、不揮発性メモリ１２内の空きページリスト３２より、使えるブロック（例えば、２１−Ｌ）内のページＮｏ．（例えば、２２−ｉ）を得て、フラッシュメモリコントローラ１３内のデータ書込み部１１ｂへ送る。
【００４４】
ステップＳ１３において、データ書込み部１１ｂは、バッファメモリ１５に保存された書込みデータを、当該ページＮｏ．（２２−ｉ）のフラッシュメモリ箇所に書込む。ＭＰＵ１１は、ステップＳ１４において、空きページリスト３２より当該ページＮｏ．（２２−ｉ）を削除すると共に、次のステップＳ１５において、アドレステーブル３０上の写像を変更（即ち、アドレス変換データを更新）し、ライト処理を終了する。
【００４５】
（３）  ガベージコレクション動作
図５は、図２のフラッシュディスク装置１０のガベージコレクション動作を示すフローチャートである。
【００４６】
ライトを行っていると、フラッシュメモリ２０内の空いているページが無くなるので、一定量の空きページを確保するために、定期的にガベージコレクションが行われる。ホストマシン１からのアクセスが一定時間無いときや、フラッシュメモリ２０内の空きページが一定量以下になったときに、ＭＰＵ１１の制御によって次のようなガベージコレクション処理が行われる。
【００４７】
ガベージコレクション処理が開始されると、ＭＰＵ１１は、ステップＳ２１において、各ページの状態を示すリスト（一時ページリスト）を作成する。ステップＳ２２において、アドレステーブル３０で使用されていないページに該当する一時ページリストに未使用フラグを立てる。ステップ２３において、一時ページリストより、全てのページ２２−０〜２２−Ｍが未使用のブロック２１を検索し、ブロック消去部１６ｃで消去し、該当ページ２２−０〜２２−Ｍのフラグを消去済みにし、空きページリスト３２に追加する。ＭＰＵ１１は、ステップＳ２４において、空きページ２２が一定量以上か否かを判定し、イエスのときには、ガベージコレクション処理を終了し、ノーのときには、結合子１を介してステップＳ２５へ進む。
【００４８】
ＭＰＵ１１は、ステップＳ２５において、一時ページリストより、未使用ページ２２の多いブロック２１を検索する。ステップＳ２６において、当該ブロック２１の有効なページ２２のデータを読出し、一時ページリストで未使用のフラグを立てる。ＭＰＵ１１は、ステップＳ２７において、読出したデータを空きページリスト３２で書込み可能なページ２２を見つけて書出し、空きページリスト３２、及びアドレステーブル３０を更新し、結合子２を介してステップＳ２３へ戻り、上記の処理を繰返す。
【００４９】
このように、ガベージコレクション処理では、アドレステーブル３０上で無効となったページ２２を検索し、或ブロック２１中の全てのページ２２−０〜２２−Ｍが無効である場合は、そのブロック２１を消去し、当該ページ２２−０〜２２−Ｍを空きページリスト３２に登録する。全てのページ２２−０〜２２−Ｍが無効であるようなブロック２１が見つからない場合、一部の有効ページ２２のデータを空きページ２２に転送して、アドレステーブル３０、及び空きページリスト３２の整合をとる。こうして全てのページ２２−０〜２２−Ｍが無効になったところで、ブロック消去部１６ｃによりブロック２１の消去を行う。
【００５０】
（４）  その他の動作
フラッシュメモリ２０のブロック２１の故障は、消去時又は書込み時に発生するが、フラッシュメモリ２０からＭＰＵ１１へエラーステータスが返ることで検出される。ＭＰＵ１１では、ブロック２１の故障があった場合は、ブロック管理デーブル３３に故障であることを示すフラグを立て、以降そのブロック２１を使用しないように管理する。
【００５１】
なお、アドレステーブル３０、空きページリスト３２、及びブロック管理テーブル３３は、ワード単位での書換えの可能なＦＲＡＭ、ＭＲＡＭ等の不揮発性メモリ１２に保存されるので、任意のタイミングで電源をオフしても、データが損なわれることは無い。
【００５２】
（効果）
本実施例１では、ホストマシン１からフラッシュメモリ２０内の特定の領域にライトアクセスが集中する場合でも、そのフラッシュメモリ２０内の特定の領域が、他の領域よりも摩耗することを防止することが出来る。これにより、フラッシュディスク装置全体の寿命低下を抑制出来る。
【実施例２】
【００５３】
実施例１では、フラッシュメモリ全体の容量が大きくなった場合、不揮発性メモリ１２内に格納されるアドレステーブル３０も大きくなるが、一般にワード単位での書換え可能な不揮発性メモリはビットコストが高いため、フラッシュディスク装置１０が高価となる。又、通常のコンピュータシステムでは、ディスク装置へのアクセス単位が４セクタや１６セクタ等、決まっている場合があるが、この場合、セクタ単位（即ち、ページ単位）でディスク管理を行うと、オーバヘッドが大きくなる。ここで、オーバヘッドとは、例えば、コンピュータがユーザプログラムを実行するに際して、直接的な関わりを持たない記憶領域や処理時間のことをいう。
【００５４】
そこで、本実施例２では、オーバヘッドを小さくするために、複数のセクタを纏めてディスク管理をする構成にしている。
【００５５】
（構成）
図６は、本発明の実施例２を示すものであって、図１（Ａ）のフラッシュディスク装置１０の論理構成図である。
【００５６】
複数のセクタ（又はページ）を纏めてチャンクという単位で管理するために、ホストマシン１からフラッシュメモリ２０へのリード／ライトをチャンク単位にしている（即ち、ホストマシン１の論理アドレス２５Ａにおいて、複数の論理セクタを纏めて論理チャンクという単位でアクセスする構成にしている）。不揮発性メモリ１２内には、アドレステーブル３０Ａ、及び空きチャンクリスト３２Ａが格納されている。アドレステーブル３０Ａ内には、ホストマシン１から指定される論理チャンクを、フラッシュメモリ２０上の物理アドレスである物理チャンクに変換するための複数のアドレス変換情報が格納されている（即ち、チャンクに対する写像を持っている）。空きチャンクリスト３２Ａは、データの書込まれていない物理チャンクのリストである。
【００５７】
フラッシュメモリ２０は、消去の単位であるデータ格納用の複数のフラッシュブロック（以下「Ｆｌａｓｈブロック」という。）２１Ａ−０，２１Ａ−１，・・・を有している。各Ｆｌａｓｈブロック２１Ａ−０，２１Ａ−１，・・・は、複数のページを纏めた物理チャンクを複数有している。
【００５８】
（動作）
フラッシュメモリ２０からのリード動作（１）、及びフラッシュメモリ２０へのライト動作（２）を説明する。
【００５９】
（１）  リード動作
図７は、図６のフラッシュディスク装置１０のリード動作を示すフローチャートである。
【００６０】
ホストマシン１からの指示に従い、フラッシュメモリ２０の記憶データをリードする場合、ＭＰＵ１１の制御によって次のような処理が行われる。
【００６１】
リード処理が開始されると、ステップＳ３１において、ホストマシン１から指定された論理セクタＮｏ．をＭＰＵ１１で得る。ステップＳ３２において、ＭＰＵ１１は、論理セクタＮｏ．を含む論理チャンクＮｏ．より、アドレステーブル３０Ａで物理チャンクＮｏ．を得る。ステップＳ３３において、ＭＰＵ１１は、フラッシュメモリ２０における物理チャンクのデータを読出し、バッファメモリ１５に一時保存する。ステップＳ３４において、ホストマシン１の要求する論理セクタＮｏ．に該当するデータが、バッファメモリ１５からホストマシン１へ転送され、リード処理が終了する。
【００６２】
（２）  ライト動作
図８は、図６のフラッシュディスク装置１０のライト動作を示すフローチャートである。
【００６３】
ホストマシン１からの指示に従い、このホストマシン１からの書込みデータをフラッシュメモリ２０にライトする場合、ＭＰＵ１１の制御によって次のような処理が行われる。
【００６４】
ライト処理が開始されると、ステップＳ４１において、ホストマシン１より論理セクタＮｏ．と書込むデータとをＭＰＵ１１で受取る。ステップＳ４３において、ＭＰＵ１１は、フラッシュメモリ２０における物理チャンクのデータを読出し、バッファメモリ１５に一時保存する。ステップＳ４４において、ＭＰＵ１１は、読出したデータの論理セクタＮｏ．に該当する箇所を、ホストマシン１から受取ったデータで書換える（即ち、一部の書換えであるモディファイを行う）。ステップＳ４５において、ＭＰＵ１１は、空きチャンクリスト３２Ａを検索し、データを物理チャンクに書戻し、空きチャンクリスト３２Ａ、及びアドレステーブル３０Ａを更新する。このように、ライトの場合は、バッファメモリ１５上で当該物理チャンクのリード／モディファイ／ライトが行われ、ライト処理が終了する。
【００６５】
（効果）
本実施例２では、複数のセクタを１つの纏まりとして管理することにより、高価なワード単位での書換え可能な不揮発性メモリ１２の使用量を削減することが出来る。更に、サイズの大きいリード／ライトの処理を、１つのチャンク分のデータを一緒にフラッシュメモリ２０にリード／ライトすることにより、オーバヘッドを削減することが出来る。
【実施例３】
【００６６】
実施例１、２では、アドレステーブル３０，３０Ａやブロック管理テーブル３３を保存するために、高価なワード単位での書換え可能な不揮発性メモリ１２を使用している。低コスト化を図るための対策として、不揮発性メモリ１２を削除することが考えられる。しかし、アドレステーブル３０，３０Ａは更新が頻繁なため、そのままではアドレステーブル３０，３０Ａを保存するエリアが書換え制限のネックになり、又、その書換えのオーバヘッドが発生する。
【００６７】
フラッシュメモリ２０は、消去状態の値が“１”で、そこに“０”を書込むか、そのままにするかにより、値を保持する特徴を有している。そこで、このような特徴を使い、本実施例３では、アドレステーブル３０の更新を行い、低コスト化を図ろうとしている。
【００６８】
（構成）
図９は、本発明の実施例３を示すものであって、図１（Ａ）のフラッシュディスク装置１０に用いられるアドレステーブル３０Ｂの論理構成図である。
【００６９】
このアドレステーブル３０Ｂは、ＭＰＵ１１内の揮発性メモリであるＲＡＭ１１ａに形成され、その内容がフラッシュメモリ２０の割当てられたエリアに保存される。即ち、ホストマシン１から指定される各論理チャンクＮ，Ｎ＋１，Ｎ＋２，・・・に対して、フラッシュメモリ２０の物理チャンクＮｏ．を保持するワードを複数用意する。最初は確定している物理チャンクを１つ保持し、その他は値“１”で埋める。このようなアドレステーブル３０Ｂを、そのままフラッシュメモリ２０の割当てられたエリアに保存する構成になっている。
【００７０】
（動作）
図１０は、図９のアドレステーブル３０Ｂの更新動作を示すフローチャートである。
【００７１】
書換えによりアドレステーブル３０Ｂを更新する場合、ＭＰＵ１１の制御によって次のような処理が行われる。
【００７２】
更新処理が開始されると、ステップＳ５１において、ＭＰＵ１１は、ＲＡＭ１１ａ上のアドレステーブル３０Ｂにおける論理チャンク（例えば、図９のチャンクＮｏ．Ｎ＋２）において、物理チャンクＮｏ．を追加する場所が余っているか否かを判定する。論理チャンクＮ＋２では、物理チャンクＮｏ．を追加する場所（消去状態の“１”の領域）が余っているので、ステップＳ５２において、ＲＡＭ１１ａ上のアドレステーブル３０Ｂで当該論理チャンクの行（図９の横軸）に物理チャンクＮｏ．（例えば、物理チャンクのデータ０１０・・・）を追加する。その後、ステップＳ５３において、更新されたＲＡＭ１１ａの箇所に該当するフラッシュメモリ２０のページを上書きする。つまり、フラッシュメモリ２０への書込みの最小単位で、更新のあった箇所を含むアドレステーブル３０Ｂの一部を書込む。その結果、フラッシュメモリ２０の特徴により、消去無しで追加された物理チャンクＮｏ．を保存でき、更新処理が終了する。
【００７３】
ステップＳ５１において、論理チャンクＮ，Ｎ＋１，Ｎ＋２，・・・の内の一部の行で、物理チャンクを保持する場所が無くなった場合は、ステップＳ５４へ進む。ステップＳ５４において、ＭＰＵ１１は、ＲＡＭ１１ａ上で更新すべき箇所に該当するフラッシュメモリ２０上のブロックＮｏ．（例えば、図２の２１−０）を得る。ステップＳ５５において、ＭＰＵ１１は、当該ブロックＮｏ．２１−０に該当するＲＡＭ１１ａ上のアドレステーブル３０Ｂのエリア（例えば、図９の論理チャンクＮ）を、最新の物理チャンク１つを残してクリアする（“１”を書込む）。その後、ステップＳ５６において、ＭＰＵ１１は、フラッシュメモリ２０の当該ブロック２１−０を消去し、該当するＲＡＭ１１ａ上のアドレステーブル３０Ｂを書込む。
【００７４】
このように、一部の行で物理チャンクを保持する場所が無くなった場合は、ステップＳ５４〜Ｓ５６の処理において、ＲＡＭ１１ａ上の最初の状態（物理チャンクを１つだけ保持している状態）にし、フラッシュメモリ２０の消去・書込みを行う。なお、この時にはフラッシュメモリ２０の消去単位の大きさに該当するアドレステーブル３０Ｂの各項目を最初の状態にする。これにより、更新処理が終了する。
【００７５】
ここで、フラッシュメモリ２０のブロック２１−０，・・・を管理するブロック管理テーブル（例えば、図２の３３）は、更新の頻度がブロックの故障発生時に限られるため、更新の度にフラッシュメモリ２０の割当てられた領域を消去して書出す。
【００７６】
又、本フラッシュディスク装置１０の立上げ時は、ＭＰＵ１１により、フラッシュメモリ２０に保存されているアドレステーブル３０Ｂとブロック管理テーブル（例えば、図２の３３）とを読出してＲＡＭ１１ａ上に置く。空きページリスト（例えば、図２の３２）は、アドレステーブル３０Ｂを検索して割当てられていない物理チャンクを見つけることにより、ＲＡＭ１１ａ上に構成する。
【００７７】
（効果）
本実施例３では、アドレステーブル３０Ｂの変更をフラッシュメモリ２０に追加して行くことにより、高価なワード単位での書換え可能な不揮発性メモリ１２を削除し、コストを削減することが出来る。
【実施例４】
【００７８】
実施例３では、特定のセクタに書換えが集中した場合に、フラッシュメモリ２０上のアドレステーブル３０Ｂの消去・書込みが頻繁に発生し、書換え回数・性能のネックとなる。
【００７９】
そこで、本実施例４では、アドレステーブル３０Ｂの更新の際、その変更部分のみログのように保存する。
【００８０】
（構成）
図１１は、本発明の実施例４で用いられるアドレステーブルログの論理構成図である。
【００８１】
本実施例４において、アドレステーブル３０Ｃは、初期状態では実施例１での基本となる形式のもの（図２のアドレステーブル３０）をＲＡＭ１１ａとフラッシュメモリ２０上に保持する。更に、図１１に示すように、論理チャンクから物理チャンクへの変換データを有するアドレステーブルログ３４を、ＲＡＭ１１ａ上に構成し、これを保存するためのエリアをフラッシュメモリ２０上に用意する。これらのアドレステーブル３０Ｃ及びアドレステーブルログ３４は、ＭＰＵ１１によって更新される。
【００８２】
（動作）
ＭＰＵ１１の制御により次のようにして、アドレステーブル３０Ｃの更新動作（１）と、定期的に実施する動作（２）とが行われる。
【００８３】
（１）  アドレステーブル３０Ｃの更新動作
図１２は、図１１のアドレステーブル３０Ｃの更新動作を示すフローチャートである。
【００８４】
アドレステーブル３０Ｃの更新処理が開始されると、ステップＳ６１において、ＲＡＭ１１ａ上のアドレステーブル３０Ｃで物理チャンクＮｏ．を更新する。ステップＳ６１において、論理チャンクと物理チャンクの対を、ＲＡＭ１１ａ上のアドレステーブルログ３４における“１”の領域に追加する。ステップＳ６３において、追加されたログに該当するフラッシュメモリ２０上のページに上書きする。
【００８５】
このように、アドレステーブル３０Ｃが更新される場合は、ＲＡＭ１１ａ上の項目は更新するが、フラッシュメモリ２０上の項目は更新しない。その代わり、更新された論理チャンクと物理チャンクの対をログの１つの項目として、ＲＡＭ１１ａ上のアドレステーブルログ３４に追加し、それをフラッシュメモリ２０に書込む。これにより、更新処理が終了する。
【００８６】
（２）  定期的に実施する動作
図１３は、図１１の定期的に実施する動作を示すフローチャートである。
【００８７】
定期的に実施する動作処理が開始されると、ステップＳ６５において、フラッシュメモリ２０上のアドレステーブル３０Ｃとアドレステーブルログ３４のエリアを消去する。ステップＳ６６において、ＲＡＭ１１ａ上のアドレステーブル３０Ｃのデータをフラッシュメモリ２０に書出す。その後、ステップＳ６７において、ＲＡＭ１１ａ上のアドレステーブルログ３４のエリアをクリアする（“１”を書込む）。
【００８８】
このように、定期的にＲＡＭ１１ａ上のアドレステーブル３０Ｃのデータをフラッシュメモリ２０に消去・書込みを行い、同時にＲＡＭ１１ａ上、フラッシュメモリ２０上のアドレステーブルログ３４のクリアを行う（ＲＡＭ１１ａ上は“１”で埋め、フラッシュメモリ２０は消去を行う）。これにより、処理が終了する。
【００８９】
なお、本フラッシュディスク装置１０の立上げ時には、ＲＡＭ１１ａ上に、先ずフラッシュメモリ２０に保存されているアドレステーブル３０Ｃのデータを読込んだ後、フラッシュメモリ２０上のアドレステーブルログ３４を読出し、ＲＡＭ１１ａ上で値を更新することにより、電源オフ直前のアドレステーブル３０Ｃを復元することが出来る。
【００９０】
（効果）
本実施例４では、アドレステーブル３０Ｃの変更部分のログ（アドレステーブルログ３４）を、フラッシュメモリ２０に保存するようにしているので、ホストマシン１からのライトが特定のセクタに集中した場合でも、アドレステーブルログ３４のフラッシュメモリ２０上のエリアは均一に書換えられるため、特定エリアの消耗を防ぐことが出来る。
【実施例５】
【００９１】
実施例１〜４までの構成では、フラッシュメモリ２０上のアドレステーブル３０，３０Ａ，３０Ｂ，３０Ｃやアドレステーブルログ３４の更新にオーバヘッドが伴い、又、データの更新とアドレステーブル３０，３０Ａ，３０Ｂ，３０Ｃやアドレステーブルログ３４の更新タイミングが異なるために、その間に電源が切れる等の際に整合が取れなくなる場合がある。又、フラッシュメモリ２０の種類によってはページへの上書き回数に制約が有るものがある。
【００９２】
そこで、これらを解決するために、本実施例５では、フラッシュメモリ２０上のアドレステーブル３０，３０Ａ，３０Ｂ，３０Ｃやこのアドレステーブルログ３４を不要とする構成にしている。
【００９３】
（構成）
図１４（Ａ）、（Ｂ）は、本発明の実施例５を示す論理構成図であり、同図（Ａ）はＲＡＭ上のアドレステーブルの構成図、及び同図（Ｂ）はフラッシュメモリ上の１ページの内容を示す構成図である。
【００９４】
図１４（Ａ）において、ＲＡＭ１１ａ上のアドレステーブル３０Ｄは、図６、図９、図１１の物理チャンクＮｏ．に加え、初期化以降にその論理チャンクが何度目の更新を行ったかを示す更新Ｎｏ．を保存する。
【００９５】
図１４（Ｂ）において、フラッシュメモリ２０の各ページ２２Ａの冗長ビットは、例えば、ＮＡＮＤフラッシュメモリの場合は通常１６Ｂｙｔｅあり、そこに管理データを保存する。管理データには、データの誤り訂正符号等、このページに対応する論理チャンクＮｏ．、及びこの論理チャンクＮｏ．に対応する更新Ｎｏ．を保存する。なお、誤り訂正符号には、管理データに対する符号を含めることも出来る。
【００９６】
（動作）
本フラッシュディスク装置１０の立上げ時の動作（１）、及びデータ書込み時の動作（２）を説明する。
【００９７】
（１）  立上げ時の動作
図１５は、図１のフラッシュディスク装置１０の立上げ時の動作を示すフローチャートである。
【００９８】
フラッシュディスク装置１０の立上げ時においては、ＭＰＵ１１ａの制御によって次のような処理が行われる。
【００９９】
立上げ処理が開始されると、ステップＳ７１において、物理チャンクＮｏ．Ｉを値０に設定すると共に、最後の物理チャンクＮｏ．Ｍを検索する。ステップＳ７２において、Ｉ＜Ｍか否かの判定を行い、イエスのときには立上げ処理を終了し、ノーのときにはステップＳ７３へ進む。ステップＳ７３において、物理チャンクＩの先頭ページの論理チャンクＮｏ．と更新Ｎｏ．を読出す。ステップＳ７４において、アドレステーブル３０Ｄの当該倫理チャンクＮｏ．Ｉは登録済み且つ更新Ｎｏ．が大きいか否かを判定し、ノーのときにはステップＳ７５へ進み、イエスのときにはステップＳ７６へ進む。ステップＳ７５において、読出した論理チャンクＮｏ．と更新Ｎｏ．でアドレステーブル３０Ｄを更新し、ステップＳ７６において、物理チャンクＮｏ．Ｉに＋１加算（インクリメント）してステップＳ７２へ戻り、上記の処理を繰返す。
【０１００】
このように、本フラッシュディスク装置１０の立上げ時には、フラッシュメモリ２０の各ページ２０Ａの管理データを読出し、保存されていた論理チャンクＮｏ．に相当するアドレステーブル３０Ｄ上で、物理チャンクＮｏ．と更新Ｎｏ．を書込む。各ページ２０Ａを読出している過程で、既にアドレステーブル３０Ｄ上で作成されている論理チャンクＮｏ．と同じものがあった場合は、更新Ｎｏ．の大きい方を採用する。全てのページ２０Ａを処理し終わったところでアドレステーブル３０Ｄが完成する。なお、チャンクのサイズがフラッシュメモリ２０のページ２０Ａのサイズよりも大きい場合、各ページ２０Ａの管理データの内、論理チャンクＮｏ．、及び更新Ｎｏ．はチャンクの先頭のページ２０Ａにのみ書込みを行い、立上げの際もそのページ２０Ａのみ読出すことで、高速化を図ることが出来る。
【０１０１】
（２）    データ書込み時の動作
図１６は、図１のフラッシュディスク装置１０におけるデータ書込み時の動作を示すフローチャートである。
【０１０２】
データ書込み時においては、ＭＰＵ１１ａの制御によって次のような処理が行われる。
【０１０３】
データ書込み処理が開始されると、ＭＰＵ１１ａは、ホストマシン１から指示された論理チャンクＮｏ．に従い、ステップＳ８１において、書込む物理チャンクＮｏ．と更新Ｎｏ．をアドレステーブル３０Ｄより求める。ステップＳ８２において、更新Ｎｏ．をインクリメントし、ステップＳ８３において、書込むデータに、論理チャンクＮｏ．と更新Ｎｏ．で構成される管理データを加える。ステップＳ８４において、データをフラッシュメモリ２０に書込み、ＲＡＭ１１ａ上の空きチャンクリストを更新し、アドレステーブル３０Ｄを新しい更新Ｎｏ．により更新し、データ書込み処理を終了する。
【０１０４】
このように、データの書込みがあった際は、アドレステーブル３０Ｄの物理チャンクＮｏ．を更新すると共に、更新Ｎｏ．をインクリメントする。そして、フラッシュメモリ２０のページ２０Ａにデータを書込む際に、一緒に管理データを準備してフラッシュメモリ２０に転送する。
【０１０５】
（効果）
本実施例５では、フラッシュメモリ２０のページ２０Ａの冗長ビット部分（管理データ部分）に、当該ページ２０Ａに対応する論理チャンクＮｏ．と更新Ｎｏ．を保持することにより、実施例１〜４のようにアドレステーブル３０，３０Ａ，３０Ｂ，３０Ｃやアドレステーブルログ３４をフラッシュメモリ２０に書出すためのオーバヘッドを削除出来、しかも、データとアドレス等の情報がフラッシュメモリ２０の１つのページ２２Ａに同時に書込まれるため、常に整合が保たれる。更に、フラッシュメモリ２０の上書きの回数制限に制約されずに、使用するフラッシュメモリを選択することが出来る。
【実施例６】
【０１０６】
実施例５では、空きブロックを順番（ローテーション）で使用するため、フラッシュメモリ２０内の個々のブロックの書換え回数に差が生じ、早く故障ブロックが発生する可能性があり、その結果、空き領域が少なくなり、性能が劣化する虞がある。
【０１０７】
そこで、本実施例６では、空きブロックの使用順序として、書換え回数の少ないブロックを優先させる構成にしている。
【０１０８】
（構成）
図１７（Ａ）、（Ｂ）は、本発明の実施例６を示すブロック管理テーブルの論理構成図であり、同図（Ａ）はＲＡＭ上のブロック管理テーブルの論理構成図、及び同図（Ｂ）はフラッシュメモリ上のブロック管理テーブルの論理構成図である。
【０１０９】
図１７（Ａ）のブロック管理テーブル３３Ａは、ＲＡＭ１１ａ上に設けられ、管理対象となる各ブロックのフラグ、書換え数、及び書換え数ＳＵＢを有している。図１７（Ｂ）のブロック管理テーブル３３Ｂは、フラッシュメモリ２０上に設けられ、管理対象となる各ブロックのフラグ、及び書換え数を有している。フラグは、当該ブロックが故障かどうかを示す。書換え数は、実際の書換え回数を或数αで割った数を保持する。或数αは、例えば、１００とする。書換え数ＳＵＢは、０〜αまでの書換え回数を保持する。結果として、当該ブロックの実際の書換え回数は、
書換え数×α＋書換え数ＳＵＢ
で示される。
【０１１０】
（動作）
図１８は、図１のフラッシュディスク装置１０におけるガベージコレクションでのブロック消去時の動作を示すフローチャートである。
【０１１１】
ガベージコレクションでブロックの消去が行われた時は、ＭＰＵ１１の制御により、次のような処理が行われる。
【０１１２】
処理が開始されると、ステップＳ９１において、ＲＡＭ１１ａ上のブロック管理テーブル３３Ａにおける消去したブロックの書換え数ＳＵＢをインクリメントする。ステップＳ９２において、書換え数ＳＵＢ＞αか否かが判定され、ノーの時には処理が終了し、イエスの時にはステップＳ９３へ進む。ステップＳ９３において、ＲＡＭ１１ａ上のブロック管理テーブル３３Ａにおける書換え数をインクリメントし、書換え数ＳＵＢをクリアする。ステップＳ９４において、フラッシュメモリ２０上のブロック管理テーブル３３Ｂを消去し、ＲＡＭ１１ａ上のブロック管理テーブル３３Ａを書込み、処理を終了する。
【０１１３】
このように、本実施例６では、ガベージコレクションでブロックの消去が行われた時は、書換え数ＳＵＢのインクリメントを行う。当該ブロックの書込み・消去が何度か行われ、書換え数ＳＵＢが或数α（＝１００）に達した時は書換え数をインクリメントし、書換え数ＳＵＢはクリアする。この時、ＲＡＭ１１ａ上のブロック管理テーブル３３Ａの内、フラグと書換え数の項目をフラッシュメモリ２０におけるブロック管理テーブル３３Ｂのエリアに消去・書込みを行う。
【０１１４】
電源オフで書換え数ＳＵＢの値は失われるが、各ブロックの書換え回数仕様１０万回の内の０〜αの範囲であるため問題は無い。データへの書込みの際、書換え数と書換え数ＳＵＢより算出される書換え回数の少ないブロックから使用する。
【０１１５】
（効果）
本実施例６では、各ブロックの書換え回数を管理して書換え回数の少ないブロックから使用することにより、各ブロックの消耗を均一化して、フラッシュディスク装置１０の寿命を延ばすことが出来る。
【実施例７】
【０１１６】
実施例６では、ホストマシン１からの書込みが多い場合に、（ブロックのデータサイズ×α）のデータの書込みに１回の割合で、フラッシュメモリ２０上のブロック管理テーブル３３Ｂの書換えが発生するため、大きなオーバヘッドになる。
【０１１７】
そこで、本実施例７では、フラッシュメモリ２０のページ内の管理データの中に書換え数に関する情報を保持する構成にしている。
【０１１８】
（構成）
図１９（Ａ）〜（Ｃ）は、本発明の実施例７を示すブロック管理テーブル及びページの論理構成図であり、同図（Ａ）はＲＡＭ上のブロック管理テーブルの論理構成図、同図（Ｂ）はフラッシュメモリ上のブロック管理テーブルの論理構成図、及び同図（Ｃ）はフラッシュメモリ上のページの論理構成図である。
【０１１９】
図１９（Ａ）のブロック管理テーブル３３Ｃは、ＲＡＭ１１ａ上に設けられ、管理対象となる各ブロックのフラグ、及び書換え数を有している。書換え数は、当該ブロックの書換え回数の実数を表す。実施例６の図１７（Ａ）に示す管理テーブル３３Ａに対し、書換え数ＳＵＢが不要となる。
【０１２０】
図１９（Ｂ）のブロック管理テーブル３３Ｄは、フラッシュメモリ２０上に設けられ、管理対象となる各ブロックのフラグだけを有している。フラグは、ブロックの故障を示し、ブロックの故障があったときのみ更新される。実施例６の図１７（Ｂ）に示すブロック管理テーブル３３Ｂに対し、書換え数が不要となる。
【０１２１】
図１９（Ｃ）におけるフラッシュメモリ２０上の各ページ２２Ｂは、実施例５の図１４（Ｂ）に示すページ２２Ａに対して、管理データに書換え数が追加されている。即ち、各ページ２２Ｂの冗長ビットは、例えば、ＮＡＮＤフラッシュメモリの場合は通常１６Ｂｙｔｅあり、そこに管理データを保存する。管理データには、データの誤り訂正符号等、このページに対応する論理チャンクＮｏ．、この論理チャンクＮｏ．に対応する更新Ｎｏ．、及び新たに追加された書換え数を保存する。
【０１２２】
（動作）
図１のフラッシュディスク装置１０におけるデータ書込み時の動作（１）、及び立上げ時の動作（２）を説明する。
【０１２３】
（１）  データ書込み時の動作
図２０は、図１のフラッシュディスク装置１０におけるデータ書込み時の動作を示すフローチャートである。
【０１２４】
データ書込み時においては、ＭＰＵ１１ａの制御によって次のような処理が行われる。
【０１２５】
ホストマシン１から与えられる論理アドレスに対するデータ書込み処理が開始されると、ステップＳ１０１において、ＲＡＭ１１ａ上のアドレステーブル（例えば、図１４（Ａ）の３０Ｄ）より、書込む物理チャンクＮｏ．と更新Ｎｏ．を求め、ＲＡＭ１１ａ上のブロック管理テーブル３３Ｃより、書換え数を求める。ステップＳ１０２において、更新Ｎｏ．と書換え数をインクリメントする。ステップＳ１０３において、図１９（Ｃ）に示すように、書込むデータに管理データとして論理チャンクＮｏ．、更新Ｎｏ．、及び書換え数等を加える。その後、ステップＳ１０４において、データをフラッシュメモリ２０に書込み、空きチャンクリスト（例えば、図６の３２Ａ）を更新する。更に、アドレステーブル（例えば、図１４の３０Ｄ）を新しい更新Ｎｏ．により更新し、ブロック管理テーブル３３Ｃの書換え数を更新し、データ書込み動作を終了する。
【０１２６】
このように、フラッシュメモリ２０のブロックへのデータの書込みが行われる際は、フラッシュメモリ２０上のページ２２Ｂ中の管理データに、ブロック管理テーブル３３Ｃから得られる当該ブロックの書換え数を付加する。
【０１２７】
なお、ガベージコレクションでブロックの消去が行われた時は、ＲＡＭ１１ａ上のブロック管理テーブル３３Ｃにおける当該ブロックの書換え数がインクリメントされる。
【０１２８】
（２）  立上げ時の動作
図２１は、図１のフラッシュディスク装置１０における立上げ時の動作を示すフローチャートである。
【０１２９】
フラッシュディスク装置１０の立上げ時においては、ＭＰＵ１１ａの制御によって次のような処理が行われる。
【０１３０】
立上げ処理が開始されると、ステップＳ１１１において、フラッシュメモリ２０上のブロック管理テーブル３３Ｄを読出し、ＲＡＭ１１ａ上のブロック管理テーブル３３Ｃ中のフラグを構成する。ステップＳ１１２において、物理チャンクＮｏ．Ｉに値０を設定すると共に、最後の物理チャンクＮｏ．の値Ｍを設定する。ステップＳ１１３において、Ｉ＜Ｍか否かを判定し、イエスのときには処理を終了し、ノーのときにはステップＳ１１３へ進む。ステップＳ１１３において、物理チャンクＩの先頭ページの書換え数を読出す。次に、ステップＳ１１４において、ＲＡＭ１１ａ上のブロック管理テーブル３３Ｃ中の書換え数に読出した値を入れる。その後、物理チャンクＮｏ．の値ＩをインクリメントしてステップＳ１１３へ戻り、上記の処理を繰返す。
【０１３１】
このように、本フラッシュディスク装置１０の立上げ時では、先ず、フラッシュメモリ２０上のブロック管理テーブル３３Ｄを読出し、ＲＡＭ１１ａ上におけるブロック管理テーブル３３Ｃのフラグを作成した後、フラッシュメモリ２０上の各ページ２２Ｂの管理データを読出し、書換え数より、ＲＡＭ１１ａ上のブロック管理テーブル３３Ｃにおける当該ブロックの書換え数を作成する。
【０１３２】
（効果）
本実施例７では、フラッシュメモリ２０上のブロック管理テーブル３３Ｄの書換えがブロック故障の時に限られ、ホストマシン１からの通常のデータの書込みではブロック管理テーブル３３Ｄの書換えが発生しなくなるため、オーバヘッドが削減される。
【実施例８】
【０１３３】
フラッシュディスク装置１０をシステムで使用すると、一般に最初のインストールの時のみフラッシュメモリ２０へプログラムの書込みが行われ、実際の運用ではフラッシュメモリ２０において書換の行われない領域が存在する。その箇所に対応するフラッシュメモリ２０上のブロック２１は書換えが行われないため、一部の書換えの行われているブロックのみが消耗し、フラッシュディスク装置１０としての書換え回数のネックとなる。
【０１３４】
そこで、本実施例８では、書換えの行われないブロックを置換える構成にしている。
【０１３５】
（構成）
図２２は、本発明の実施例８における固定ブロックの内容を空きブロックに書換える様子を示す論理構成図である。
【０１３６】
図２２において、ホストマシン１で指定される論理アドレス２５の内、斜線部分の論理アドレス２５−０，２５−ｉは、書換えの行われる箇所である。又、フラッシュメモリ２０のブロック２１（２１−０，２１−１，・・・，２１−１４，・・・）の内、斜線部分のブロック２１−０，２１−１，・・・は、書換えの行われる箇所である。斜線の無い空白部分のブロック２１−２，２１−３，・・・は、運用中に書換えが行われていない空きブロックである。
【０１３７】
（動作）
図２３は、本フラッシュディスク装置１０のブロック置換え動作を示すフローチャートである。
【０１３８】
本フラッシュディスク装置１０のブロック置換え時においては、ＭＰＵ１１の制御によって次のような処理が行われる。
【０１３９】
本フラッシュディスク装置１０の立上げ時にブロック管理テーブル（例えば、図２の３３）が作成されたところ、及び、１回の電源オン中に装置全体で或る一定量の書換えが行われたところ（例えば、１万回毎）で、ブロック置換え処理が開始され、ステップＳ１２１へ進む。ステップＳ１２１において、ブロック管理テーブル３３を検索し、有効データが埋まっているブロックで書換え数が最小のもの（例えば、２１−５）と、空きブロックで書換え数が最大のもの（例えば、２１−１３）を求める。ステップＳ１２２において、書換え数の最大値と最小値の差が一定値（例えば、１万回）以上あるか否かを判定し、ノーのときには処理を終了し、イエスのときにはステップＳ１２３へ進む。
【０１４０】
ステップＳ１２３において、求めた書換え数最小のブロック（例えば、２１−５）よりデータを読出し、当該ブロック２１−５を消去して空きブロックにする。ステップＳ１２４において、求めた最大の空きブロック（例えば、２１−１３）にデータを書込み、ブロック管理テーブル３３の書換え数を更新する。なお、通常のデータの書込みの際は、空きブロック２１−２，・・・の内の書換え回数の少ないものを使用するが、この固定ブロックの書換えの際には、書換え回数の大きな空きブロック（例えば、２１−１３）に対してデータを書写す。その後、ステップＳ１２５において、アドレステーブル（例えば、図６の３０Ａ）と空きチャンクリスト（例えば、図６の３２Ａ）を更新し、ブロック置換え処理を終了する。
【０１４１】
（効果）
本実施例８では、最初のインストール以降、ホストマシン１から更新されないフラッシュメモリ２０の領域が例えば５０％あった場合、そのデータが書込まれていたフラッシュメモリ２０の領域も、運用中に順次ホストマシン１から更新されるデータの領域として使えるようになるため、本フラッシュディスク装置１０の書換え回数の全体量が２倍になる。
【図面の簡単な説明】
【０１４２】
【図１】本発明の実施例を示すフラッシュディスク装置の構成図である。
【図２】本発明の実施例１を示すフラッシュディスク装置の論理構成図である。
【図３】図２のフラッシュディスク装置のリード動作を示すフローチャートである。
【図４】図２のフラッシュディスク装置のライト動作を示すフローチャートである。
【図５】図２のフラッシュディスク装置のガベージコレクション動作を示すフローチャートである。
【図６】本発明の実施例２を示すフラッシュディスク装置の論理構成図である。
【図７】図６のフラッシュディスク装置のリード動作を示すフローチャートである。
【図８】図６のフラッシュディスク装置のライト動作を示すフローチャートである。
【図９】本発明の実施例３を示すアドレステーブルの論理構成図である。
【図１０】図９のアドレステーブルの更新動作を示すフローチャートである。
【図１１】本発明の実施例４で用いられるアドレステーブルログの論理構成図である。
【図１２】本発明の実施例４で用いられるアドレステーブルの更新動作を示すフローチャートである。
【図１３】本発明の実施例４における定期的に実施する動作を示すフローチャートである。
【図１４】本発明の実施例５を示す論理構成図である。
【図１５】本発明の実施例５における立上げ時の動作を示すフローチャートである。
【図１６】本発明の実施例５におけるデータ書込み時の動作を示すフローチャートである。
【図１７】本発明の実施例６を示すブロック管理テーブルの論理構成図である。
【図１８】本発明の実施例６におけるガベージコレクションでのブロック消去時の動作を示すフローチャートである。
【図１９】本発明の実施例７を示すブロック管理テーブル及びページの論理構成図である。
【図２０】本発明の実施例７におけるデータ書込み時の動作を示すフローチャートである。
【図２１】本発明の実施例７における立上げ時の動作を示すフローチャートである。
【図２２】本発明の実施例８における固定ブロックの内容を空きブロックに書換える様子を示す論理構成図である。
【図２３】本発明の実施例８におけるブロック書換え動作を示すフローチャートである。
【符号の説明】
【０１４３】
１    ホストマシン
１０    フラッシュディスク装置
１１    ＭＰＵ
１１ａ    ＲＡＭ
１２    不揮発性メモリ
１６    フラッシュメモリコントローラ
２０    フラッシュメモリ
２１，２１−０，２１−１，２１Ａ−０，２１Ａ−１，・・・   ブロック
２２，２２Ａ，２２Ｂ，２２−０，２２−１，・・・    ページ
２５，２５Ａ    論理アドレス
３０，３０Ａ，３０Ｂ，３０Ｃ，３０Ｄ    アドレステーブル
３２，３２Ａ      空きページリスト
３３，３３Ａ，３３Ｂ，３３Ｃ，３３Ｄ    ブロック管理テーブル
３４    アドレステーブルログ
【図１】
2005242897.tif 000003
【図２】
2005242897.tif 000004
【図３】
2005242897.tif 000005
【図４】
2005242897.tif 000006
【図５】
2005242897.tif 000007
【図６】
2005242897.tif 000008
【図７】
2005242897.tif 000009
【図８】
2005242897.tif 000010
【図９】
2005242897.tif 000011
【図１０】
2005242897.tif 000012
【図１１】
2005242897.tif 000013
【図１２】
2005242897.tif 000014
【図１３】
2005242897.tif 000015
【図１４】
2005242897.tif 000016
【図１５】
2005242897.tif 000017
【図１６】
2005242897.tif 000018
【図１７】
2005242897.tif 000019
【図１８】
2005242897.tif 000020
【図１９】
2005242897.tif 000021
【図２０】
2005242897.tif 000022
【図２１】
2005242897.tif 000023
【図２２】
2005242897.tif 000024
【図２３】
2005242897.tif 000025