(57)【要約】    【課題】代替領域を用いずに故障に対処する。    【解決手段】フラッシュメモリ１００は記憶部１０および制御部２０から構成されている。各記憶ブロック１１はそれぞれデータ領域１２および管理領域１３からなっている。制御部２０は、記憶部１０の記憶ブロック１１へのアクセスを制御するものであり、故障があるブロックに対しては管理領域に故障の情報が付加され、これに基づいて、アクセス対象ブロックが次ブロックに代替される。また、書き込み、消去時に故障を検出して当該ブロックが次ブロックに代替される。【選択図】図３
2009288914.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶ブロックからなるデータ記憶部と、
上記データ記憶部に対するデータアクセスを制御する制御部とを有し、
上記記憶ブロックの各々はデータ領域と、当該記憶ブロックが故障を含むかどうかを表す故障情報を含む管理領域とを具備し、
上記制御部は上記データ記憶部中の上記複数の記憶ブロックを予め定められた順番に書き込みアクセスおよび読み出しアクセスを行ない、
さらに、上記制御部は、書き込みアクセス対象の記憶ブロックの管理領域中の故障情報を参照し、故障情報が当該記憶ブロックに故障が含まれることを示す場合には、書き込みアクセス対象をつぎの順番の記憶ブロックに設定し、さらに、上記故障情報が当該記憶ブロックに故障が含まれることを示さない場合には、当該書き込みアクセスに伴って当該記憶ブロックに新たに故障があるかどうかを検出し、新たな故障が検出されない場合にはそのまま当該記憶ブロックのデータ領域に対して書き込みアクセスを行ない、故障が検出される場合には当該記憶ブロックの管理領域に故障であることを表す故障情報を含ませ、かつ、書き込みアクセス対象をつぎの順番の記憶ブロックに設定するフラッシュメモリ。
【請求項２】
上記書き込みアクセスはデータ書き込みの前にデータの消去操作を伴い、
上記制御部は、消去操作対象の記憶ブロックの管理領域中の故障情報を参照し、故障情報が当該記憶ブロックに故障が含まれることを示す場合には、消去操作対象をつぎの順番の記憶ブロックに設定し、さらに、上記故障情報が当該記憶ブロックに故障が含まれることを示さない場合には、当該消去操作に伴って当該記憶ブロックに新たに故障があるかどうかを検出し、新たな故障が検出されない場合にはそのまま当該記憶ブロックのデータ領域に対して消去操作を行ない、故障が検出される場合には当該記憶ブロックの管理領域に故障であることを表す故障情報を含ませ、かつ、消去操作対象をつぎの順番の記憶ブロックに設定する請求項１記載のフラッシュメモリ。
【請求項３】
上記制御部は、読み出しアクセス対象の記憶ブロックの管理領域中の故障情報を参照し、故障情報が当該記憶ブロックに故障が含まれることを示す場合には、読み出しアクセス対象をつぎの順番の記憶ブロックに設定し、さらに、上記故障情報が当該記憶ブロックに故障が含まれることを示さない場合には、当該読み出しアクセスに伴って当該記憶ブロックに新たに故障があるかどうかを検出し、新たな故障が検出されない場合にはそのまま当該記憶ブロックのデータ領域に対して読み出しアクセスを行ない、故障が検出される場合には当該記憶ブロックの管理領域に故障であることを表す故障情報を含ませ、かつ、当該記憶ブロックから読み出したデータがエラー訂正可能な場合には、つぎの順番の記憶ブロックのデータを退避させて当該つぎの順番の記憶ブロックに訂正したデータを移動させて読み出しアクセスを継続する請求項１または２記載のフラッシュメモリ。
【請求項４】
請求項１〜３のいずれかに記載のフラッシュメモリを具備し当該フラッシュメモリにブートデータを記憶する電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、フラッシュメモリおよび電子機器に関する。
【背景技術】
【０００２】
フラッシュメモリは、従来、故障に備えて代替領域ないし代替ブロックを備えている。故障管理用のテーブルが故障ブロックと代替ブロックとを対応させて、故障ブロックにかえて代替ブロックを用いるようになっている。
【０００３】
図１は、従来の故障発生時の代替処理を模式的に示している。また、図２はこの代替処理の動作例を示している。この例では、ＲＡＭに記憶されているデータ（論理アドレスｓｒｃＡｄｄｒ、サイズがｓｉｚｅ）をフラッシュメモリ（論理アドレスｄｓｔＡｄｄｒ）に書き込む命令（ｆｌａｓｈｗｒｉｔｅ）を実行する例を示す。
【０００４】
この例では、フラッシュメモリの宛て先論理アドレス（ｄｓｔＡｄｄｒ）に対応するブロックの物理アドレスを求め、そのブロックについて故障管理テーブルを参照して故障かどうかを判別して、故障の場合には対応する代替ブロックを表引きして代替ブロックに書き込み（消去後書き込み）を行う。例えば、書き込みの宛て先のブロックの番号が「２９」で故障管理テーブルに含まれている場合には、対応する代替ブロック「５１０」を判別して、この代替ブロックにデータ書き込みを代替させる。書き込み中に故障が検出された場合には、新たに故障ブロックおよびその代替ブロックを故障管理テーブルに登録してデータ書き込みを行う。
【０００５】
具体的な図２の処理例は以下のとおりである。
【０００６】
［ステップＳ１０］：制御部（メモリコントローラともいう）が、上位ソフトウェアからデータ書き込みの指示ｆｌａｓｈＷｒｉｔｅ（ｓｒｃＡｄｄｒ，ｄｓｔＡｄｄｒ，ｓｉｚｅ）を受け取る。
［ステップＳ１１］：宛て先アドレスｄｓｔＡｄｄｒから、フラッシュメモリの書き込み開始ブロックｂｌｏｃｋＡｄｄｒを算出する。
［ステップＳ１２］：書き込みブロックｂｌｏｃｋＡｄｄｒを故障管理テーブルにおいて検索する。
［ステップＳ１３］：検索結果に基づいて故障かどうかを判別し（ヒットであれば故障）、故障であればステップＳ１４へ進み、そうでなければステップＳ１５へ進む。
［ステップＳ１４］：書き込みブロックを代替ブロックに置き換えてステップＳ１５へ進む。
［ステップＳ１５］：当該ブロックを消去する。
［ステップＳ１６］：消去中に故障が発生したらステップＳ１７へ進み、消去が成功したらステップＳ２１へ進む。
［ステップＳ１７］：故障ブロックを故障管理テーブルに登録する。
［ステップＳ１８］：未使用の代替ブロックを検索する。
［ステップＳ１９］：代替ブロックが利用可能であればそれを故障管理テーブルに登録してステップＳ１５へ戻り処理を繰り返し、利用可能でなければステップＳ２０へ進む。
［ステップＳ２０］：エラーを通知して処理を終了する。
［ステップＳ２１］：当該ブロックに書き込みを行う。
［ステップＳ２２］：書き込み中に故障が発生したらステップＳ１７へ戻り処理を繰り返し、成功したらステップＳ２３へ進む。
［ステップＳ２３］：書き込みサイズ確認する。
［ステップＳ２４］：書き込みが完了したら処理を終了し、完了しなかったらステップＳ１２へ戻り処理を繰り返す。
【０００７】
このように、フラッシュメモリの消去でエラーが発生したとき、代替用に予め確保された代替領域を使用するため、故障管理テーブルの更新が行われる。また、フラッシュメモリへのデータ書き込みでエラーが発生したとき、代替用に予め確保された代替領域にデータの格納が行われる。かつ、故障管理テーブルの更新が行われる。なお、フラッシュメモリからのデータ読み出しでエラーが発生したとき、代替用に予め確保された代替領域にデータの移動が行われる。かつ、故障管理テーブルの更新が行われる。
【０００８】
ところで、このような従来のフラッシュメモリでは、代替領域を予め確保する必要があり、フラッシュメモリの容量から代替領域分少ない領域が通常使用領域になる。このため実質的な使用容量が少なくなるという問題点があった。また、代替領域を予め確保するためフラッシュメモリ性能等の仕様から代替領域の容量を算出する必要があり、代替領域の容量を少なく算出すると代替できない状態（通常使用領域には空きがあるが、代替領域はすべて使用済み）に陥るといった問題点があった。また、故障ブロックの管理と代替処理を行うため、故障管理テーブルの領域と更新処理が必要であるといった問題点があった。かつ、故障管理テーブル領域分少ない領域が通常使用領域になるといった問題点があった。さらに、故障管理テーブルの領域が故障してしまうと代替処理が行えず、フラッシュメモリが使用不能になるといった問題点があった。
【０００９】
なお、この発明と関連する特許文献としては以下のものがある。
【００１０】
特許文献１の「記憶装置」および特許文献２の「メモリ管理システム」は、ユーザデータを格納するユーザブロックと、代替用に予め確保された代替ブロックと、論理アドレスに対応するユーザブロックの物理アドレスを格納する変換テーブルと、代替ブロックの物理アドレスを格納する代替テーブルとを含むフラッシュメモリにおいて、コントローラが、変換テーブルを参照してユーザブロック内のページにユーザデータを書込む際、当該ページが書込み済みの場合には、代替テーブルを参照して代替ブロック内のページにユーザデータを書込んで新たなユーザブロックとし、元のユーザブロックを代替ブロックとして、ユーザデータの書換えを高速に行なうことを提案している。
【００１１】
特許文献３の「フライトレコーダにおける記録方法」は、フラッシュメモリの消去ブロック単位で故障を管理し、故障しているブロックのみを飛ばして記録することで膨大な記録エリアの損失を防止し、メモリを有効に利用し、かつ、それによってデータ損失量を最少にするフライトレコーダにおける記録方法を提案している。
【００１２】
特許文献４の「半導体メモリ装置」は、論理アドレスと物理アドレスとの変換に必要なメモリが小型なもので済み、また最長アクセス時間が短い半導体メモリ装置を提案している。この提案では、フラッシュメモリ内の冗長領域（管理領域）に物理ブロックに割り当てられる論理アドレスと位置情報（次アクセス先）を置き、各ブロックの連鎖を管理している。冗長領域に故障情報が書き込まれていた場合、予め確保してある予備領域を使用する。
【００１３】
なお、上述の従来技術やその問題点は、この発明の背景の一部を説明するためにのみ説明している。この発明は上述の従来技術や問題点に限定されるものではない点に留意されたい。
【特許文献１】特開２００４−１３３６７７号公報
【特許文献２】特開２００４−３０２９３８号公報
【特許文献３】特開平９−２８２８６３号公報
【特許文献４】特開平１０−４９４４７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
この発明は、代替領域を確保することなく、データアクセスが可能なフラッシュメモリを提供することを目的としている。また、この発明はそのようなフラッシュメモリをブートデータの記憶装置として採用する電子機器を提供することを目的としている。
【課題を解決するための手段】
【００１５】
この発明によれば、上述の目的を達成するために、特許請求の範囲に記載のとおりの構成を採用している。ここでは、発明を詳細に説明するのに先だって、特許請求の範囲の記載について補充的に説明を行なっておく。
【００１６】
すなわち、請求項１の発明によれば、フラッシュメモリは、複数の記憶ブロックからなるデータ記憶部と、上記データ記憶部からのデータアクセスを制御する制御部とを有し、上記記憶ブロックの各々はデータ領域と、当該記憶ブロックが故障を含むかどうかを表す故障情報を含む管理領域とを具備し、上記制御部は上記データ記憶部中の上記複数の記憶ブロックを予め定められた順番に書き込みアクセスおよび読み出しアクセスを行ない、さらに、上記制御部は、書き込みアクセス対象の記憶ブロックの管理領域中の故障情報を参照し、故障情報が当該記憶ブロックに故障が含まれることを示す場合には、書き込みアクセス対象をつぎの順番の記憶ブロックに設定し、さらに、上記故障情報が当該記憶ブロックに故障が含まれることを示さない場合には、当該書き込みアクセスに伴って当該記憶ブロックに新たに故障があるかどうかを検出し、新たな故障が検出されない場合にはそのまま当該記憶ブロックのデータ領域に対して書き込みアクセスを行ない、故障が検出される場合には当該記憶ブロックの管理領域に故障であることを表す故障情報を含ませ、かつ、書き込みアクセス対象をつぎの順番の記憶ブロックに設定するようにしている。
【００１７】
請求項２の発明によれば、請求項１の発明において、上記書き込みアクセスはデータ書き込みの前にデータの消去操作を伴うようにし、上記制御部は、消去操作対象の記憶ブロックの管理領域中の故障情報を参照し、故障情報が当該記憶ブロックに故障が含まれることを示す場合には、消去操作対象をつぎの順番の記憶ブロックに設定し、さらに、上記故障情報が当該記憶ブロックに故障が含まれることを示さない場合には、当該消去操作に伴って当該記憶ブロックに新たに故障があるかどうかを検出し、新たな故障が検出されない場合にはそのまま当該記憶ブロックのデータ領域に対して消去操作を行ない、故障が検出される場合には当該記憶ブロックの管理領域に故障であることを表す故障情報を含ませ、かつ、消去操作対象をつぎの順番の記憶ブロックに設定するようにしている。
【００１８】
請求項３の発明によれば、請求項１または２の発明において、上記制御部は、読み出しアクセス対象の記憶ブロックの管理領域中の故障情報を参照し、故障情報が当該記憶ブロックに故障が含まれることを示す場合には、読み出しアクセス対象をつぎの順番の記憶ブロックに設定し、さらに、上記故障情報が当該記憶ブロックに故障が含まれることを示さない場合には、当該読み出しアクセスに伴って当該記憶ブロックに新たに故障があるかどうかを検出し、新たな故障が検出されない場合にはそのまま当該記憶ブロックのデータ領域に対して読み出しアクセスを行ない、故障が検出される場合には当該記憶ブロックの管理領域に故障であることを表す故障情報を含ませ、かつ、当該記憶ブロックから読み出したデータがエラー訂正可能な場合には、つぎの順番の記憶ブロックのデータを退避させて当該つぎの順番の記憶ブロックに訂正したデータを移動させて読み出しアクセスを継続するようにしている。
【００１９】
また、請求項４の発明によれば、請求項１〜４のいずれかに記載のフラッシュメモリを具備し当該フラッシュメモリにブートデータを記憶する電子機器を実現している。
【００２０】
この発明の上述の側面および他の側面は特許請求の範囲に記載され以下実施例を用いて詳述される。
【発明の効果】
【００２１】
請求項１〜３の発明によれば、代替領域を確保することなくフラッシュメモリのアクセスを行なえる。
【００２２】
請求項４の発明によれば、電子機器のブートデータを効率よく格納することが可能になる。
【発明を実施するための最良の形態】
【００２３】
以下、この発明の実施例について説明する。
【実施例１】
【００２４】
図３は、この発明の実施例１のフラッシュメモリ１００を全体として示しており、この図において、フラッシュメモリ１００は記憶部１０および制御部２０から構成されている。記憶部１０は典型的にはＮＡＮＤ型付揮発性メモリ素子から構成されており、複数の記憶ブロック１１１〜１１Ｎからなっており、各記憶ブロック１１１〜１１Ｎはそれぞれデータ領域１２１〜１２Ｎおよび管理領域１３１〜１３Ｎからなっている。制御部２０は、記憶部１０の記憶ブロック１１へのアクセスを制御するものであり、データ領域と管理領域を個別に消去、書き込み、読み出しを行う機能を有する。または、制御部２０は、両領域を同時に消去、書き込み、読み出しを行う機能を有する。また、制御部２０は、消去、書き込み、読み出し動作において、エラー検出を行なう機能を有する。
【００２５】
図４は、実施例のフラッシュメモリ１００における代替処理例を示している。図４の例では、ＲＡＭのｓｒｃＡｄｄｒからフラッシュメモリ１００へ書き込みを行なう。この例では、故障があるブロックに対しては管理領域に故障の情報が付加され、これに基づいて、アクセス対象ブロックが次ブロックに代替される。また、書き込み、消去時に故障を検出して当該ブロックが次ブロックに代替される。
【００２６】
制御部２０はつぎのように機能する。
【００２７】
（１）フラッシュメモリのデータ領域の消去を行う時、消去を行うブロックの管理領域の情報を参照し、故障しているか判定を行い、故障していなければ消去を行い、故障していれば、隣接するブロックを代替ブロックとする。隣接するブロックが故障しているかは、同様に判定を行う。
（２）フラッシュメモリのデータ領域の消去でエラーを検出したとき、エラーを検出したブロックの管理領域に故障を意味する情報を付加する。次に、隣接するブロックを代替ブロックとして使用するため、その代替ブロックのデータ領域の消去を行う。
（３）フラッシュメモリへのデータ書き込みを行う時、書き込みを行うブロックの管理領域の情報を参照し、故障しているか判定を行い、故障していなければ書き込みを行い、故障していれば隣接するブロックを代替ブロックとする。隣接するブロックが故障しているかは、同様に判定を行う。代替ブロックを使用する場合は、消去してから書き込みを行う。
（４）フラッシュメモリへのデータ書き込みでエラーを検出したとき、エラーを検出したブロックの管理領域に故障を意味する情報を付加する。次に、隣接するブロックを代替ブロックとして使用する。代替ブロックは、データ領域を消去してから書き込みを行う。
（５）フラッシュメモリからデータ読み出しを行う時、読み出しを行うブロックの管理領域の情報を参照し、故障しているか判定を行い、故障していなければ読み込みを行い、故障していれば隣接するブロックを代替ブロックとする。隣接するブロックが故障しているかは、同様に判定を行う。代替ブロックを使用する場合は、消去してからデータの移動を行い、移動が終了したら読み出しを行う。
（６）フラッシュメモリからのデータ読み出しでエラーを検出したとき、エラーを検出したブロックの管理領域に故障を意味する情報を付加する。次に、隣接するブロックを代替ブロックとして使用する。代替ブロックは、データ領域を消去してからデータの移動を行い、移動が終了したら読み出しを行う。
（７）フラッシュメモリからのデータ読み出しでエラーを検出したとき、データ訂正が可能なエラーであれば自動的に隣接するブロックを代替ブロックとして使用する。ただ、自動的に隣接するブロックを代替ブロックとして使用するかは、設定を切り替えることを可能とする。
【００２８】
図５はこのときの処理例を示し、その詳細は以下のとおりである。
【００２９】
［ステップＳ３０］：制御部２０が、上位ソフトウェアからデータ書き込みの指示ｆｌａｓｈＷｒｉｔｅ（ｓｒｃＡｄｄｒ，ｄｓｔＡｄｄｒ，ｓｉｚｅ）を受け取る。
［ステップＳ３１］：宛て先アドレスｄｓｔＡｄｄｒから、フラッシュメモリの書き込み開始ブロックｂｌｏｃｋＡｄｄｒを算出する。
［ステップＳ３２］：算出されたブロックの管理領域を参照して故障かどうかを確認する。
［ステップＳ３３］：確認結果に基づいて故障であればステップＳ３４へ進み、故障でなければステップＳ３５へ進む。
［ステップＳ３４］：対象ブロックを次ブロックに置き換え、ステップＳ３２へ戻り処理を繰り返す。
［ステップＳ３５］：対象ブロックを消去処理する。
［ステップＳ３６］：消去処理において故障が発生したかどうか判別し、発生したらステップＳ３７へ進み、そうでなければステップＳ３９へ進む。
［ステップＳ３７］：当該ブロックの管理領域に故障情報を付加してステップＳ３８へ進む。
［ステップＳ３８］：当該ブロックを次ブロックに置き換えステップＳ３２へ戻り処理を繰り返す。
［ステップＳ３９］：対象ブロックに書き込み処理を行なう。ステップＳ４０へ進む。
［ステップＳ４０］：書き込み処理において故障が発生したかどうか判別し、発生したらステップＳ３７へ戻り処理を繰り返し、そうでなければステップＳ４１へ進む。
［ステップＳ４１］書き込みサイズ確認し、ステップＳ４２へ進む。
［ステップＳ４２］：書き込みが完了したら処理を終了し、完了しなかったらステップＳ３２へ戻り処理を繰り返す。
【００３０】
なお、読み出し時にも、管理領域の故障情報および読み出し時の故障検出に基づいて同様に次ブロックを読み出し領域としてよい。この場合、故障検出時のデータをエラー訂正して次ブロックに書き込み、その後、読み出しを行なう。この場合、故障のない次ブロックのデータを所定のメモリ領域に退避させておく必要がある。以降、故障のない次ブロックのデータを順次に退避させる必要がある。読み出し時に故障が検出された場合には、そのままエラーを出力しても良い。設定によりいずれかを選択できるようにしても良い。
【００３１】
この実施例によれば、代替領域を予め確保する必要がなくなった。このためフラッシュメモリの全領域を、通常使用領域になった。また、代替領域の容量を算出する必要がなくなった。また、故障管理テーブルの領域を確保する必要がなくなった。さらに、故障管理テーブルを更新する必要がなくなった。さらに、故障管理テーブルが必要ないため、フラッシュメモリが使用不能に陥ることがなくなった。しかも、複雑な代替処理が必要なくなった。
【実施例２】
【００３２】
つぎにこの発明を電子機器に適用した実施例２について説明する。
【００３３】
図６は、実施例１のフラッシュメモリ１００を採用した電子機器２００を示し、この図において電子機器２００はフラッシュメモリ１００、ＣＰＵ３０、主メモリ４０等をバス５０に接続してなる。フラッシュメモリ１００は実施例１と同様のものであり、記憶部１０および制御部２０を有している。この実施例では、フラッシュメモリ１００にブートデータを記憶させている。電子機器２００に電源を投入するとフラッシュメモリ１００にシーケンシャルに記憶されているブートデータが順次読み出されて主メモリにロードされ、電子機器２００が動作可能になる。ブートデータはシーケンシャルに読み出されるので実施例１のフラッシュメモリ１００を用いて最適である。
【００３４】
なお、この発明は特許請求の範囲の記載に基づいて決定されるものであり、実施例の具体的な構成、課題、および効果には限定されない。この発明は上述の実施例に限定されるものではなくその趣旨を逸脱しない範囲で種々変更が可能である。
【図面の簡単な説明】
【００３５】
【図１】従来のフラッシュメモリを説明する模式図である。
【図２】従来のフラッシュメモリの動作例を説明するフローチャートである。
【図３】この発明の実施例１のフラッシュメモリの全体構成を示す図である。
【図４】上述実施例１のフラッシュメモリの代替処理を説明する模式図である。
【図５】上述実施例１のフラッシュメモリの動作例を説明するフローチャートである。
【図６】この発明の実施例２の電子機器を説明する図である。
【符号の説明】
【００３６】
１０    記憶部
１１    記憶ブロック
１２    データ領域
１３    管理領域
２０    制御部
３０    ＣＰＵ
４０    主メモリ
５０    バス
１００  フラッシュメモリ
２００  電子機器
【図２】
2009288914.tif 000003
【図３】
2009288914.tif 000004
【図５】
2009288914.tif 000005
【図６】
2009288914.tif 000006
【図１】
2009288914.tif 000007
【図４】
2009288914.tif 000008