(57)【要約】【課題】消去単位の異なる２種類のフラッシュメモリを管理するための半導体補助記憶装置の制御方法を提供する。【解決手段】アクセス対象のフラッシュメモリの種別を判定し（ステップＳ１）、１ブロック単位で消去するタイプＡの場合は、消去対象のブロックのみを消去する（ステップＳ２）。２ブロック単位で消去するタイプＢの場合は、連続するブロック番号の内の消去対象ではない他方のブロックに有効なデータが格納されているか否かを判定し（ステップＳ４，Ｓ９）、格納されていなければ２ブロックを一括消去する（ステップＳ５，Ｓ１０）。有効データが格納されていれば、それを退避バッファに退避し（ステップＳ６，Ｓ１１）、２ブロックを一括消去した（ステップＳ７，Ｓ１２）後、この退避バッファのデータを元のブロックに書き戻す（ステップＳ８，Ｓ１３）。【選択図】図１
2010003055.tif 000002
【特許請求の範囲】
【請求項１】
一定の記憶容量を有するページ単位での読み書きと連続する複数ページからなるブロック単位での消去が可能な第１のフラッシュメモリと、前記第１のフラッシュメモリと同様にページ単位での読み書きが可能であるが、連続する２ブロック単位で消去が行われる第２のフラッシュメモリとを備えた半導体補助記憶装置の制御方法であって、
消去対象のブロックが前記第１及び第２のフラッシュメモリの内のいずれに存在するかを判定する判定処理と、
前記消去対象のブロックが前記第１のフラッシュメモリ内に存在する時には、該第１のフラッシュメモリ内の該当するブロックを消去し、該消去対象のブロックが前記第２のフラッシュメモリ内に存在する時には、該第２のフラッシュメモリ内の該当するブロックの対となるブロックを救済して、その該当するブロックと対になるブロックを一括消去する消去処理とを、
行うことを特徴とする半導体補助記憶装置の制御方法。
【請求項２】
前記消去対象のブロックが前記第２のフラッシュメモリ内に存在する時には、該消去対象のブロックと対になるブロックに有効なデータが格納されているか否かを判定して有効なデータが存在する時にはそのデータを退避バッファに退避する処理と、
前記消去対象のブロックと対になるブロックとを一括して消去する処理と、
前記退避バッファにデータを退避した時には、該退避バッファ内のデータを消去後の対応するブロックに書き戻す処理とを、
順次行うことを特徴とする請求項１記載の半導体補助記憶装置の制御方法。
【請求項３】
一定の記憶容量を有するページ単位での読み書きと連続する複数ページからなるブロック単位での消去が可能な第１のフラッシュメモリと、前記第１のフラッシュメモリと同様にページ単位での読み書きが可能であるが、連続する２ブロック単位で消去が行われる第２のフラッシュメモリとを備えた半導体補助記憶装置の制御方法であって、
書き込み処理が正常に終了しない場合に、バッドブロックが前記第１または第２のフラッシュメモリの内のいずれに存在するかを判定する判定処理と、
前記バッドブロックが前記第１のフラッシュメモリ内に存在する時には、該第１のフラッシュメモリ内の該当するブロックをバッドブロック登録し、該バッドブロックが前記第２のフラッシュメモリ内に存在する時には、該第２のフラッシュメモリ内の該当するブロックと対になるブロックとをバッドブロック登録する登録処理とを、
行うことを特徴とする半導体補助記憶装置の制御方法。
【請求項４】
一定の記憶容量を有するページ単位での読み書きと連続する複数ページからなるブロック単位での消去が可能な第１のフラッシュメモリと、前記第１のフラッシュメモリと同様にページ単位での読み書きが可能であるが、連続する２ブロック単位で消去が行われる第２のフラッシュメモリとを備えた半導体補助記憶装置の制御方法であって、
書き込み対象のブロックが前記第１及び第２のフラッシュメモリの内のいずれに存在するかを判定する判定処理と、
前記書き込み対象のブロックが前記第１のフラッシュメモリ内に存在する時には、該第１のフラッシュメモリ内の該当するブロックにデータを書き込み、該書き込み対象のブロックが前記第２のフラッシュメモリ内に存在する時には、該第２のフラッシュメモリ内の消去単位となる連続する２つのブロックの内の最初のブロックから順番にデータを書き込む書き込み処理とを、
行うことを特徴とする半導体補助記憶装置の制御方法。
【請求項５】
前記第２のフラッシュメモリへの書き込み処理の結果、その書き込み処理が正常に終了しない場合に、バッドブロックが前記連続する２つのブロックの内の最初のブロックか後のブロックかを判定する処理と、
前記バッドブロックが最初のブロックである時には、該最初のブロックと後のブロックとをバッドブロック登録すると共に、書き込み処理が正常にできなかったデータを代替ブロックに書き込み、該バッドブロックが後のブロックである時には、該最初のブロックを救済してそのブロックと対になるブロックとをバッドブロック登録すると共に、該最初のブロックと後のブロックのデータを代替ブロックに書き込む処理とを、
順次行うことを特徴とする請求項４記載の半導体補助記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリを使用する半導体補助記憶装置の制御方法、特に消去単位のサイズが異なるフラッシュメモリの制御に関するものである。
【背景技術】
【０００２】
近年の半導体メモリの大容量化及び低コスト化に伴い、フラッシュメモリを使用したＵＳＢメモリやコンパクトフラッシュ（登録商標）等の半導体補助記憶装置が広く使用されるようになった。フラッシュメモリは、浮遊ゲートを有する絶縁ゲート型電界効果トランジスタを記憶素子とするＥＥＰＲＯＭ（電気的に書き替え可能な不揮発性メモリ）の一種である。いわゆるＥＥＰＲＯＭは、任意のアドレスに対するデータの書き換えが自由にできる回路構成となっているが、大容量・低価格を目的としたフラッシュメモリでは、ページと呼ばれる最小単位でユーザデータを読み書きすると共に、連続する複数ページ(例えば、４ｋバイト)を１ブロックとしてデータの消去を行うように構成されている。
【０００３】
フラッシュメモリにおけるデータの書き込みは、例えば、データ“０”を書き込むべき記憶素子の制御ゲートに書き込み用の高電圧を印加することにより、該当する記憶素子の浮遊ゲートに電荷を蓄積させることで行われる。なお、この場合、データ“１”を書き込むべき記憶素子の制御ゲートには書き込み用の高電圧は印加しない。一方、データの消去は、該当するブロックの記憶素子の各制御ゲートに書き込み用とは逆極性の消去用の高電圧を印加することで、ブロック全体の記憶素子の浮遊ゲートに蓄積された電荷を放出することによって行われる。これにより、消去されたブロックのデータはすべて“１”となる。
【０００４】
従って、フラッシュメモリでは、消去済みのページに対する書き込みは自由に行うことができるが、書き込まれたページにおけるデータの書き換えは、書き換えが１ページだけであっても、そのページを含むブロック全体を消去する必要がある。なお、フラッシュメモリにおけるデータ管理の一例は、下記特許文献１の段落００３２〜００３７に記載されている。
【０００５】
【特許文献１】特開平５−２７９２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
前記特許文献１にも記載されているように、フラッシュメモリにおける消去の単位は、例えば、４ｋバイトのブロック単位に固定されている。しかしながら、フラッシュメモリの大容量化により、消去の単位が１ブロックではなく２ブロック単位に行われるようなものも想定される。従って、今後のフラッシュメモリの大容量化に備えて、消去単位の異なる２種類のフラッシュメモリが混在するシステムを考慮した制御方法を予め開発しておく必要がある。
【０００７】
本発明は、消去単位の異なる２種類のフラッシュメモリを管理するための半導体補助記憶装置の制御方法を提供することを目的としている。
【課題を解決するための手段】
【０００８】
本発明は、一定の記憶容量を有するページ単位での読み書きと連続する複数ページからなるブロック単位での消去が可能な第１のフラッシュメモリと、前記第１のフラッシュメモリと同様にページ単位での読み書きが可能であるが、連続する２ブロック単位で消去が行われる第２のフラッシュメモリとを備えた半導体補助記憶装置の制御方法であって、消去対象のブロックが前記第１及び第２のフラッシュメモリの内のいずれに存在するかを判定する判定処理と、前記消去対象のブロックが前記第１のフラッシュメモリ内に存在する時には、該第１のフラッシュメモリ内の該当するブロックを消去し、該消去対象のブロックが前記第２のフラッシュメモリ内に存在する時には、該第２のフラッシュメモリ内の該当するブロックの対となるブロックを救済して、その該当するブロックと対になるブロックを一括消去する消去処理とを行うことを特徴としている。
【発明の効果】
【０００９】
本発明では、消去対象のブロックが、１ブロック単位で消去を行う第１のフラッシュメモリか、連続する２ブロック単位で消去を行う第２のフラッシュメモリのいずれに存在するかを判定し、消去対象のブロックが第１のフラッシュメモリ内に存在する時にはその該当するブロックを消去し、消去対象のブロックが第２のフラッシュメモリ内に存在する時には、この第２のフラッシュメモリ内の該当するブロックの対となるブロックを救済して、該当するブロックと対になるブロックを一括消去するようにしている。これにより、消去単位の異なる２種類のフラッシュメモリを、１つの制御方式で管理することができるという効果がある。
【発明を実施するための最良の形態】
【００１０】
この発明の前記並びにその他の目的と新規な特徴は、次の好ましい実施例の説明を添付図面と照らし合わせて読むと、より完全に明らかになるであろう。但し、図面は、もっぱら解説のためのものであって、この発明の範囲を限定するものではない。
【実施例１】
【００１１】
図１は、本発明の実施例１を示すブロック消去処理のフローチャートであり、図２は、この図１の処理が行われるシステムの一例を示す構成図である。
【００１２】
図２に示すように、このシステムは、システム全体の演算処理制御を行う中央処理装置（以下、「ＣＰＵ」という）１、このＣＰＵ１が実行するプログラムや実行中のデータを記憶する主記憶装置２、この主記憶装置２に呼び出されて実行されるプログラムやユーザデータ等をファイル形式で格納するための補助記憶装置３，４、及びキーボードやディスプレイ等の各種の入出力装置５ａ〜５ｍを備えており、これらがシステムバス６を介して相互に接続されている。
【００１３】
なお、主記憶装置２は、電源が遮断されても記憶内容が保持されるＲＯＭ(Read  Only  Memory)２ａと、電源が遮断されると記憶内容が消失するＲＡＭ(Random  Access  Memory)２ｂで構成されている。また、補助記憶装置３，４は、従来の磁気ディスク装置に代えてフラッシュメモリで構成されている。これらのフラッシュメモリは、ページと呼ばれる最小単位でユーザデータを読み書きすると共に、連続する複数ページを一括してデータの消去を行うものである。
【００１４】
このうち補助記憶装置３は、例えば、４ｋバイトを１ブロックとして、１ブロック単位での消去を行うもの（以下、タイプＡとする）である。一方、補助記憶装置４は、連続する偶数番目と奇数番目の２ブロック単位で一括消去を行う（以下、タイプＢとする）ものである。なお、ここでは、補助記憶装置３，４のブロック番号ｉは、０（偶数）からｎ（奇数）まで順番に付与されているものとする。
【００１５】
図２のシステムにおいて、主記憶装置２のＲＡＭ２ｂにロードされたアプリケーションプログラム等によって、補助記憶装置３（または４）内のファイルを消去する命令が実行されると、このＲＡＭ２ｂ内に常駐しているファイル管理プログラムにより、図１のフローチャートに従った処理が開始される。
【００１６】
ステップＳ１において、ファイル管理プログラムは、補助記憶装置３，４の先頭部分に設けられたファイル割当テーブルを参照して、アクセス対象のファイルが存在する補助記憶装置の種別（タイプＡまたはタイプＢ）を判定する。アクセス対象のファイルがタイプＡの補助記憶装置３内に存在すればステップＳ２へ進み、タイプＢの補助記憶装置４内に存在すればステップＳ３へ進む。
【００１７】
ステップＳ２では、補助記憶装置３のファイル割当テーブルを参照して、消去対象のファイルが格納されているブロック番号を調べ、該当する消去対象ブロックｉを消去し、ファイル割当テーブルを更新して消去処理を終了する。
【００１８】
アクセス対象のファイルがタイプＢの補助記憶装置４内に存在する場合には、ステップＳ３において、この補助記憶装置４のファイル割当テーブルを参照して、消去対象のファイルが格納されているブロック番号ｉが偶数であるか奇数であるかを調べる。ブロック番号ｉが偶数であれば、ステップＳ４へ進み、奇数であればステップＳ９へ進む。
【００１９】
ステップＳ４において、ブロック番号ｉ（偶数）と対になる次のブロック番号ｉ＋１（奇数）に有効なデータが格納されているか否かを判定する。ブロック番号ｉ＋１に有効なデータが格納されていなければ、ステップＳ５へ進み、格納されていればステップＳ６へ進む。
【００２０】
ステップＳ５に進んだ場合は、ブロック番号ｉとブロック番号ｉ＋１を一括して消去し、ファイル割当テーブルを更新して消去処理を終了する。
【００２１】
ステップＳ６に進んだ場合は、ブロック番号ｉ＋１のデータを主記憶装置２内のＲＡＭ２ｂに設けられた退避バッファに書き込むことによって一時的に退避し、ステップＳ７においてブロック番号ｉとブロック番号ｉ＋１を一括して消去した後、ステップＳ８において退避バッファのデータをブロック番号ｉ＋１に書き戻す。その後、ファイル割当テーブルを更新して消去処理を終了する。
【００２２】
消去対象のファイルが格納されているブロック番号ｉが奇数の場合は、ステップＳ９において、ブロック番号ｉ（奇数）と対になる前のブロック番号ｉ−１（偶数）に有効なデータが格納されているか否かを判定する。ブロック番号ｉ−１に有効なデータが格納されていなければ、ステップＳ１０へ進み、格納されていればステップＳ１１へ進む。
【００２３】
ステップＳ１０に進んだ場合は、ブロック番号ｉ−１とブロック番号ｉを一括して消去し、ファイル割当テーブルを更新して消去処理を終了する。
【００２４】
ステップＳ１１に進んだ場合は、ブロック番号ｉ−１のデータを主記憶装置２内のＲＡＭ２ｂに設けられた退避バッファに一時的に退避し、ステップＳ１２においてブロック番号ｉ−１とブロック番号ｉを一括して消去した後、ステップＳ１３において退避バッファのデータをブロック番号ｉ−１に書き戻す。その後、ファイル割当テーブルを更新して消去処理を終了する。
【００２５】
以上のように、この実施例１のブロック消去処理は、補助記憶装置４のブロックを消去する場合には、対となるブロックを救済した上で連続する２ブロックを消去するようにしているので、連続する２ブロック単位で実際のブロック消去が実行される補助記憶装置４においても、通常の補助記憶装置３と同じ１つの制御方式で管理することができるという利点がある。
【実施例２】
【００２６】
図３は、本発明の実施例２を示すバッドブロック処理のフローチャートである。バッドブロックとは、正常に書き込み処理ができないブロックをいい、バッドブロック処理とは、データ書き込みにおいて書き込みエラー情報が出力された場合に、該当するブロックを使用禁止にするためにバッドブロック登録を行うことをいう。なお、書き込みエラー情報は、例えば、フラッシュメモリに１バイト単位にデータを書き込んだときに、ハードウエアによって入力されたデータと書き込み後のデータとの検証が行われ、異常が検出されたときに出力される情報である。
【００２７】
図２のシステムにおいて、主記憶装置２のＲＡＭ２ｂにロードされたアプリケーションプログラム等によって、補助記憶装置３または４にファイルを書き込む命令が実行されると、このＲＡＭ２ｂ内に常駐しているファイル管理プログラムにより、補助記憶装置３，４の先頭部分に設けられたファイル割当テーブルを参照して、消去済みの未使用ブロックが探索される。そして、探索した未使用ブロックへファイルの書き込みが行われる。ファイルの書き込み後、書き込み状態がチェックされ、書き込みエラー情報が出力されている場合には、図３のフローチャートに従った処理が開始される。
【００２８】
ステップＳ２１において、バッドブロック処理対象のブロックが存在する補助記憶装置の種別（タイプＡまたはタイプＢ）を判定する。処理対象のブロックが補助記憶装置３内に存在すればステップＳ２２へ進み、補助記憶装置４内に存在すればステップＳ２３へ進む。
【００２９】
ステップＳ２２において、バッドブロック処理対象のブロック番号をそのままバッドブロック登録し、処理を終了する。
【００３０】
バッドブロック処理対象のブロックがタイプＢの補助記憶装置４内に存在する場合には、ステップＳ２３において、そのブロック番号ｉが偶数であるか奇数であるかを調べる。ブロック番号ｉが偶数の時は、ステップＳ２４へ進み、奇数の時はステップＳ２５へ進む。
【００３１】
ステップＳ２４において、検出されたバッドブロックのブロック番号ｉと、対になるブロック番号ｉ＋１を共にバッドブロック登録し、処理を終了する。一方、ステップＳ２５では、検出されたバッドブロックのブロック番号ｉと、対になるブロック番号ｉ−１を共にバッドブロック登録し、処理を終了する。
【００３２】
以上のように、この実施例２のバッドブロック処理は、補助記憶装置４のブロックをバッドブロック登録する場合には、対となるブロックも同時にバッドブロック登録するようにしているので、実施例１と同様の利点がある。
【実施例３】
【００３３】
図４は、本発明の実施例３を示す新規ファイル書き込み処理のフローチャートである。
この新規ファイルの書き込み処理は、実施例１に示したように、２ブロック単位で消去を行う補助記憶装置４において、１つのブロックを消去する時に対となるブロックのデータを救済する必要があることに鑑み、消去単位となる連続する２つのブロックに別々のファイルを書き込まないようにしたものである。
【００３４】
図２のシステムにおいて、主記憶装置２のＲＡＭ２ｂにロードされたアプリケーションプログラム等によって、補助記憶装置３または４にファイルを書き込む命令が実行されると、このＲＡＭ２ｂ内に常駐しているファイル管理プログラムにより、補助記憶装置３，４の先頭部分に設けられたファイル割当テーブルを参照して、消去済みの未使用ブロックが探索される。
【００３５】
ステップＳ３１において、未使用ブロックが存在する補助記憶装置の種別（タイプＡまたはタイプＢ）を判定する。未使用ブロックが補助記憶装置３内に存在すればステップＳ３２へ進み、補助記憶装置４内に存在すればステップＳ３３へ進む。
【００３６】
ステップＳ３２において、未使用ブロックにファイルを書き込み、ファイル割当テーブルを更新して書き込み処理を終了する。なお、特に図示していないが、書き込みエラーが発生したには、従来通りのバッドブロック登録処理と、別の未使用ブロックに対するファイルの再書き込み処理が行われる。
【００３７】
未使用のブロックがタイプＢの補助記憶装置４内に存在する場合には、ステップＳ３３において、ブロック番号ｉが偶数の未使用ブロックを選定してファイルの書き込みを行う。その後、ステップＳ３４において、書き込み処理が正常に行われているか否かの判定を行う。正常に書き込み処理が行われていれば、ファイル割当テーブルを更新して書き込み処理を終了し、バッドブロックが発生して書き込みが正常に終了していなければ、ステップＳ３５に進む。
【００３８】
ステップＳ３５において、バッドブロックが発生したブロック番号ｉが奇数であるか偶数であるかを判定し、奇数であればステップＳ３６へ進み、偶数であればステップＳ３９へ進む。
【００３９】
ステップＳ３６において、奇数のブロック番号ｉの対となる１つ前のブロック番号ｉ−１に書き込んだデータを救済するために、このブロック番号ｉ−１のデータを読み出して主記憶装置２内のＲＡＭ２ｂに設けられた退避バッファに一時的に退避する。次に、ステップＳ３７においてブロック番号ｉ−１とブロック番号ｉをバッドブロック登録した後、ステップＳ３８において退避バッファに退避したデータと、ブロック番号ｉに書き込むべきデータを、代替ブロックに書き込む。その後、ファイル割当テーブルを更新して書き込み処理を終了する。
【００４０】
一方、ステップＳ３９では、偶数のブロック番号ｉと対になる１つ後のブロック番号ｉ＋１をバッドブロック登録した後、ステップＳ４０において、ブロック番号ｉに書き込むべきデータを、代替ブロックに書き込む。その後、ファイル割当テーブルを更新して書き込み処理を終了する。
【００４１】
以上のように、この実施例３の新規ファイル書き込み処理は、新しいファイルを補助記憶装置４に書き込む場合には、消去単位の２つのブロックの内の初めのブロック（即ち、ブロック番号が偶数）から書き始めるようにしている。これにより、消去単位となる連続する２つのブロックに別々のファイルが書き込まれることが回避されるので、実施例１と同様の利点に加えて、１つのブロックを消去する時に対となるブロックのデータを救済する必要がなくなって処理速度が向上するという利点がある。
【００４２】
なお、本発明は、上記実施例に限定されず、種々の変形が可能である。この変形例としては、例えば、次のようなものがある。
（ａ）  消去単位が異なる２種類のフラッシュメモリを使用した補助記憶装置３，４を搭載したシステムを例にして説明したが、１種類しか搭載しない場合でも、本発明の制御方法を採用すれば、同一ソフトウエアにより、消去単位が２倍のフラッシュメモリへの部品置換が可能になる。
（ｂ）  ブロックのサイズは４ｋバイトとして説明したが、このブロックのサイズは任意である。
（ｃ）  補助記憶装置３，４の全体の記憶容量は、同一である必要はない。
【図面の簡単な説明】
【００４３】
【図１】本発明の実施例１を示すブロック消去処理のフローチャートである。
【図２】図１の処理が行われるシステムの一例を示す構成図である。
【図３】本発明の実施例２を示すバッドブロック処理のフローチャートである。
【図４】本発明の実施例３を示す新規ファイル書き込み処理のフローチャートである。
【符号の説明】
【００４４】
１    ＣＰＵ
２    主記憶装置
２ａ    ＲＯＭ
２ｂ    ＲＡＭ
３，４    補助記憶装置
５ａ〜５ｍ    入出力装置
６    システムバス
【図１】
2010003055.tif 000003
【図２】
2010003055.tif 000004
【図３】
2010003055.tif 000005
【図４】
2010003055.tif 000006