(57)【要約】【課題】データ書き込みの途中で電源が落ちた場合などでも、不完全な書込みデータによりデータ領域が壊れたままの状態とならないようにする。【解決手段】物理チャンクごとに、データ領域の誤り訂正を行う誤り訂正符号と、物理チャンクに対応する論理チャンクと、書き換えたデータの新旧を表わす更新番号を格納する管理データを備えたフラッシュメモリ２１と、前記論理チャンクと物理チャンクを対応付けるアドレステーブル３０を格納する不揮発性メモリ１２と、前記フラッシュメモリおよび不揮発性メモリを制御する制御手段１１と、を備え、起動時のアドレステーブル３０の再構成時の処理のときに、前記物理チャンクのデータ領域の誤り訂正処理を行って誤りがない場合のみ、前記アドレステーブル３０に同じ物理チャンクがあるときはそれぞれの前記更新番号により新しい番号の物理チャンクにてアドレステーブル３０を更新するようにした。【選択図】図１
2011123560.tif 000002
【特許請求の範囲】
【請求項１】
所定の容量ごとに、データの誤り訂正を行う誤り訂正符号と、物理アドレスに対応する論理アドレスと、書き換えたデータの新旧を表わす更新番号を格納する管理データを備えたフラッシュメモリと、
前記論理アドレスと物理アドレスを対応付けるアドレステーブルを格納する不揮発性メモリと、
前記フラッシュメモリおよび不揮発性メモリを制御する制御手段と、を備え、
起動時のアドレステーブル再構成時の処理のときに、前記物理アドレスのデータの誤り訂正処理を行って誤りがない場合のみ、前記アドレステーブルに同じ物理アドレスがあるときはそれぞれの前記更新番号により新しい番号の物理アドレスにてアドレステーブルを更新するようにしたことを特徴とするフラッシュメモリ装置。
【請求項２】
前記所定の容量は、複数のページからなるチャンクとし、前記アドレスをチャンク番号としたことを特徴とする請求項１記載のフラッシュメモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体ディスク装置、特にフラッシュメモリを使用したフラッシュディスク装置に関する。
【背景技術】
【０００２】
近年の不揮発性メモリの大容量化、低コスト化に伴い、不揮発性メモリを使用したディスクであるフラッシュディスク装置が開発され、多くの製品が市場に流通し始めている。
【０００３】
フラッシュメモリは複数のブロックにより構成され、更にこれらの各ブロックが、複数のページにより構成されている。ページは、リード／ライトの単位であり、通常、磁気ディスク装置等のハードディスク装置におけるリード／ライトの最小単位であるセクタと同じ大きさで、５１２バイトである。
【０００４】
ページ内のデータを書換える場合は、通常、前データを消去した後、新たなデータを書込む。ブロックは消去の単位であり、一般的には１６Ｋバイトあり、書換えがこのブロック内の一部のページであっても、この１つのブロック全部を消去する必要がある。
【０００５】
このようなフラッシュメモリを使用したフラッシュディスク装置では、フラッシュメモリに保存されたデータが或る一定の確率でビットエラーを発生すること、及び、ブロック単位で消去を行うがブロック毎に消去回数の寿命が例えば１０万回〜１００万回の短寿命であるという制約がある。
【０００６】
これらの制約を解決するために、ホストの中央処理装置（以下「ＣＰＵ」という。）から指定される論理アドレスに関係無く、フラッシュディスク装置内に空き領域を予め用意し、ホストＣＰＵから指定されるライトデータの論理アドレスを、論理アドレスを物理アドレスに変換するためのアドレステーブルにより、フラッシュメモリ上の空き領域の物理アドレスに変換し、この物理アドレスの空き領域にライトデータを順次書込んでいく方式が提案されている。
【０００７】
そして、フラッシュメモリの複数ページから構成される物理チャンクごとの冗長ビット部分である管理データ部分に、当該物理チャンクに対応する論理チャンク番号とデータ書込み完了ごとにデータの新旧を表わす更新番号を保持し、アドレステーブルをフラッシュメモリとは別の不揮発性メモリに格納するようにして、アドレステーブルやアドレステーブルログをフラッシュメモリに書出すためのオーバヘッドをなくし、しかも、データとともに論理チャンクや更新番号等の管理データをフラッシュメモリのそれぞれの物理チャンクに同時に書込み、常にデータと管理データの整合性を保つ技術が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００５−２４２８９７号公報  （第１４−１６頁、第１４図、第１５図）
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上記従来の技術では、起動時に行うアドレスデータ再構成において、前記管理データ部分の読み出しを行い、管理データ部分のチェックしか行わないため、データ書き込みの途中で電源が落ちた場合などでは、管理データ部分は正常となり、不完全な書込みデータが有効データとして扱われ、データ領域が壊れたままの状態となってしまうという問題があった。
【課題を解決するための手段】
【００１０】
本発明は、前述の課題を解決するため次の手段を採用する。すなわち、所定の容量ごとに、データの誤り訂正を行う誤り訂正符号と、物理アドレスに対応する論理アドレスと、書き換えたデータの新旧を表わす更新番号を格納する管理データを備えたフラッシュメモリと、前記論理アドレスと物理アドレスを対応付けるアドレステーブルを格納する不揮発性メモリと、前記フラッシュメモリおよび不揮発性メモリを制御する制御手段と、を備え、起動時のアドレステーブル再構成時の処理のときに、前記物理アドレスのデータの誤り訂正処理を行って誤りがない場合のみ、前記アドレステーブルに同じ物理アドレスがあるときはそれぞれの前記更新番号により新しい番号の物理アドレスにてアドレステーブルを更新するようにした。
【発明の効果】
【００１１】
本発明のフラッシュメモリ装置によれば、所定の容量ごとに、データの誤り訂正を行う誤り訂正符号と、物理アドレスに対応する論理アドレスと、書き換えたデータの新旧を表わす更新番号を格納する管理データを備えたフラッシュメモリと、前記論理アドレスと物理アドレスを対応付けるアドレステーブルを格納する不揮発性メモリと、前記フラッシュメモリおよび不揮発性メモリを制御する制御手段と、を備え、起動時のアドレステーブル再構成時の処理のときに、前記物理アドレスのデータの誤り訂正処理を行って誤りがない場合のみ、前記アドレステーブルに同じ物理アドレスがあるときはそれぞれの前記更新番号により新しい番号の物理アドレスにてアドレステーブルを更新するようにしたので、データ書き込みの途中で電源が落ちた場合などでも不完全な書込みデータによりデータ領域が壊れたままの状態とならないようにすることができる。
【図面の簡単な説明】
【００１２】
【図１】実施例１のフラッシュディスク装置の構成図である。
【図２】実施例１のフラッシュメモリの論理構成図である。
【図３】実施例１のフラッシュメモリおよびアドレステーブルの例示図である。
【図４】実施例１のフラッシュディスク装置の起動時の動作フローチャート図である。
【発明を実施するための形態】
【００１３】
以下、本発明に係わる実施の形態例を、図面を用いて説明する。図面に共通する要素には同一の符号を付す。
【実施例１】
【００１４】
（構成）
図１は、実施例１のフラッシュディスク装置の概略構成図であり、図２は図１のフラッシュメモリの論理構成図である。まず、図１に示したように、ホストＣＰＵ等のホストマシン１には、ホストのインタフェース（以下、「Ｉ／Ｆ」という）バス２により、本実施例で使用されるフラッシュディスク装置１０が接続されている。フラッシュディスク装置１０は、フラッシュメモリおよび不揮発性メモリ等の制御手段として機能する、例えばマイクロプロセッサユニット（以下、「ＭＰＵ」という）１１を有している。
【００１５】
ＭＰＵ１１は、ＲＡＭ１１ａ、読出し専用メモリ（以下、「ＲＯＭ」という）１１ｂ、及び入／出力（以下、「Ｉ／Ｏ」という）ポート１１ｃ等により構成され、これには不揮発性メモリ１２が接続されている。
【００１６】
不揮発性メモリ１２は、ＭＰＵ１１によりアクセス制御され、管理用のテーブルやリスト等を保持するために、アクセス制御が容易であるＲＡＭ等のようなワード単位での書換えの可能なメモリ構造（ＦＲＡＭ、ＭＲＡＭ等）になっている。
【００１７】
フラッシュディスク装置１０には、ホストＩ／Ｆバス２に接続されたホストＩ／Ｆコントローラ１３が設けられている。ホストＩ／Ｆコントローラ１３は、ホストＩ／Ｆのプロトコルを処理してホストマシン１との間でデータの授受を行う回路であり、これには内部データバス１４を介してバッファメモリ１５が接続されている。
【００１８】
バッファメモリ１５は、ホストマシン１からのリード／ライトデータを一時的に保存し処理するメモリである。内部データバス１４には、フラッシュメモリコントローラ１６が接続され、このフラッシュメモリコントローラ１６に、フラッシュメモリバス１７を介して１つ又は複数のフラッシュメモリ２０が接続されている。
【００１９】
フラッシュメモリコントローラ１６は、ＭＰＵ１１からの命令に従ってフラッシュメモリ２０をアクセス制御する回路であり、データ読出し部１６ａ、データ書込み部１６ｂ及びブロック消去部１６ｃ等により構成されている。１つ又は複数のフラッシュメモリ２０は、ホストマシン１からのライトデータを不揮発に保存するメモリである。
【００２０】
次に、図２を用いて前述の図１のフラッシュメモリ２０の論理構成を説明する。同図に示したように、フラッシュメモリ２０は、消去の単位であるデータ格納用の複数のブロック２１−０、・・・、２１−Ｎを有している。各ブロック２１は、リード／ライトの単位であるデータ格納用の複数のページを有している。
【００２１】
１ページは、例えば、５１２バイト等の記憶容量を有している。このようなフラッシュメモリ２０では、書換えがブロック２１内の一部のページであっても、１つのブロック全体を消去する必要がある。
【００２２】
そして、複数のセクタ（ページ）を纏めてチャンクという単位で管理するために、ホストマシン１からフラッシュメモリ２０へのリード／ライトをチャンク単位にしている。すなわち、ホストマシン１の論理アドレス２５において、複数の論理セクタを纏めて論理チャンクという単位でアクセスする構成となっている。本実施例では、８ページを纏めて１チャンクとした場合を一例として以下説明するが、１６ページを纏めて１チャンクとしてもよいし、さらに多く或いは逆に４ページなどのように少なくするようにしてもよい。８ページを纏めて１チャンクとした場合では、８＊５１２バイト＝４０９６バイトが１チャンクのデータとなる。
【００２３】
不揮発性メモリ１２内には、アドレステーブル３０が格納されている。アドレステーブル３０内には、ホストマシン１から指定される論理チャンクを、フラッシュメモリ２０上の物理アドレスである物理チャンクに変換するための複数のアドレス変換情報が格納されている。
【００２４】
また、アドレステーブル３０内には、データの書込まれていない物理チャンクのリストである空きチャンク情報３０ａが格納されている。なお、空きチャンク情報３０ａは、後述の図３のようにそれぞれの論理チャンクごとに持つ形態としてもよい。
【００２５】
フラッシュメモリ２０は、消去の単位であるデータ格納用の複数のブロック２１−０、２１−１、・・・を有しており、各ブロック２１−０、２１−１、・・・は、複数のページ（本例では前述のように８ページ）を纏めた物理チャンクを複数有している。
【００２６】
図３は、フラッシュメモリ上のデータ内容と、アドレステーブル３０の内容の例示図である。同図に示したように、各物理チャンクには、４０９６バイトのデータ２１ｄとこれを管理する例えば１６バイトの管理データ２１ｋが格納される。
【００２７】
そして、管理データ２１ｋは、データの誤り訂正のための誤り訂正符号と、当該物理チャンクに対応する論理チャンク番号と、当該物理チャンクのデータ書込みを完了する都度に例えば＋１加算して更新する更新番号、当該物理チャンクの消去状態などの状態を示す状態フラッグを格納できるような構成となっている。
【００２８】
図３において、最初の物理チャンク０は、論理チャンク番号として“４”が格納されており、したがって論理チャンク４と対応付けられ、更新番号が”１０”で、状態フラッグが”０”で書込み状態であることを示している。そして、最後の物理チャンクＭは、論理チャンク番号として“１”が格納されており、したがって論理チャンク１と対応付けられ、更新番号が”６”で、状態フラッグが”０”で書込み状態であることを示している。
【００２９】
次の物理チャンク１は、対応付けられる論理チャンクはなく、すべて”１”となっており、未使用の状態であることを示している。
【００３０】
また、物理チャンク９は、データ書込みの際に電源がオフされた場合の一例として、物理チャンク０と同じ論理チャンク４に対応付けられ、更新番号が”１１”で、状態フラッグが”０”で書込み状態であることを示している。
【００３１】
（動作）
以上の構成により実施例１のフラッシュディスク装置は、以下のように動作する。このフラッシュディスク装置の立上げ時に行うアドレステーブル３０の再構成の動作を図３のフラッシュメモリおよびアドレステーブルの例示図、図４の起動時の動作フローチャート図を用いて以下詳細に説明する。なお、リード／ライト動作については、特許文献１のフラッシュメモリ装置と同様であるので、その詳細な説明は省略する。
【００３２】
まず、立上げ処理が開始されると、物理チャンク番号となるＩを”０”に初期化し、最後の物理チャンク番号をＭに設定する（ステップＳ０１）。
【００３３】
次に、物理チャンク番号ＩがＭより大きいかどうかを判定し（ステップＳ０２）、ＩがＭより大きい場合は、すべての物理チャンクの処理を終了したとし、本処理を終了する。
【００３４】
一方、物理チャンク番号ＩがＭ以下の場合は、当該物理チャンクに記録されている論理チャンク番号と更新番号を読み出す（ステップＳ０３）。
【００３５】
この場合、Ｉ＝０であるので、物理チャンク０の管理データ２１ｋ０から、論理チャンク番号として”４”と、更新番号として”１０”が読み出される。
【００３６】
次に、管理データ２１ｋ０から読み出された論理チャンク番号からアドレステーブル３０の論理チャンクの内容が”空き”であるかを判定し（ステップＳ０４）、この場合、論理チャンク番号が”４”であり、論理チャンク４は”空き”ではなく、”物理チャンク０”が格納されているのでステップＳ０５に進み、当該物理チャンク、すなわち物理チャンク０の誤り訂正処理を行い。ビットエラーがないかどうかを確認する（ステップＳ０６）。
【００３７】
そして、ステップＳ０６にて、物理チャンク０のデータにビットエラーがないときは、物理チャンク０に対応する論理チャンク４としてアドレステーブル３０に登録されている物理チャンク番号を参照し、登録済みの物理チャンク番号として”０”を取得し、これと物理チャンク番号（Ｉ＝０）とを比較し（ステップＳ０７）、同じときは、重複して別に登録された物理チャンクはないと判定しステップ０９に進み、Ｉをインクリメントして、ステップＳ０２に戻り、次の物理チャンクの処理を同様に行う。
【００３８】
一方、例えば、物理チャンク９（Ｉ＝９）のときの場合では、対応する論理チャンク番号が”４”で、アドレステーブル３０にこの論理チャンク番号として記載されている物理チャンク番号が”０”で当該物理チャンク番号（Ｉ＝９）と異なるときは、重複してすでに登録された物理チャンクがあるので、登録済みの物理チャンク０の更新番号（”１０”）と当該物理チャンク９の更新番号（”１１”）と比較し（ステップＳ０７）、更新番号が大きく新しい物理チャンクの方の番号、この場合、物理チャンク番号“９”にてアドレステーブルを更新し（ステップＳ０８）、Ｉをインクリメントして（ステップＳ０９）、ステップＳ０２に戻り、次の物理チャンクの処理を行う。なお、図示していないが、更新番号が小さい方の物理チャンク、この場合では物理チャンク０の方は空きとし、すべて”１”を書込むようにする。
【００３９】
再びステップ０４に戻って、ステップ０４にて、Ｉ＝１の場合のように、物理チャンク１が空きで、すべて”１”の場合は、ステップＳ０８に進み、アドレステーブル３０を参照し、空きとなっている論理チャンク、例えば論理チャンク３を選出し、論理チャンク３の物理チャンク番号として“１”をアドレステーブル３０に格納するとともに、論理チャンク番号として“３”を物理チャンク１の管理データ２１ｋ１に格納する（ステップＳ０８）。そして、Ｉをインクリメントして（ステップＳ０９）、ステップＳ０２に戻り、次の物理チャンクの処理を同様に行う。
【００４０】
（実施例１の効果）
以上のように、実施例１のフラッシュディスク装置によれば、起動時のアドレステーブル再構成時の処理のときに、物理チャンクのデータ領域の誤り訂正処理を行って誤りがない場合のみ、前記アドレステーブルに同じ物理チャンク番号があるときはそれぞれの前記更新番号により新しい番号の物理チャンク番号にてアドレステーブルを更新するようにしたので、データ書き込みの途中で電源が落ちた場合などでも不完全な書込みデータによりデータ領域が壊れたままの状態とならないようにすることができる。
【産業上の利用可能性】
【００４１】
以上述べたように、本発明は、複数回書換え可能な不揮発性メモリからなるフラッシュメモリ装置などの不揮発性記憶装置に広く利用することができる。
【符号の説明】
【００４２】
１    ホストマシン
１０  フラッシュディスク
１１  ＭＰＵ
１２  不揮発性メモリ
１６  フラッシュメモリコントローラ
２１  フラッシュメモリ
２１ｄ  データ領域
２１ｋ  管理データ
３０    アドレステーブル
【図１】
2011123560.tif 000003
【図２】
2011123560.tif 000004
【図３】
2011123560.tif 000005
【図４】
2011123560.tif 000006