(57)【特許請求の範囲】
【請求項１】
フラッシュメモリで構成されたメモリ部と、
前記メモリ部に格納されたデータが有効か無効かを示すバリッド情報と、当該データに対応したポインタとを有するディレクトリ格納部と、
前記ディレクトリ格納部のポインタに対応した前記メモリ部のデータアドレスを示すファイル・アロケーション・テーブル格納部と、
前記メモリ部の任意のデータに対して消去要求を受け付けた場合、前記ディレクトリ格納部における前記データに対応したバリッド情報を無効とすると共に、前記ファイル・アロケーション・テーブル格納部における前記データのポインタをリセット状態のアドレスに書き換え、かつ、前記メモリ部の前記データを消去するメモリ消去制御部とを備えたことを特徴とする半導体記憶装置。
【請求項２】
請求項１記載の半導体記憶装置において、
メモリ部の消去すべきデータの位置情報を、当該データの消去単位の位置情報として格納する消去位置格納部と、
前記消去位置格納部に格納されたデータの消去単位の個数が、予め設定されたしきい値を越えた場合は、当該消去位置格納部に格納されているデータの位置情報に基づき、前記メモリ部の消去すべきデータを消去するメモリ消去制御部とを備えたことを特徴とする半導体記憶装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、フラッシュメモリを用いた半導体記憶装置に関し、特にそのデータ書き込み時や消去時の制御に関するものである。
【０００２】
【従来の技術】
近年、不揮発性メモリチップとして、フラッシュメモリ、即ちフラッシュＥＥＰＲＯＭが実用化されるようになり、このチップを使用した半導体ディスク装置の開発が盛んに行われている。
このフラッシュメモリとは、ＥＥＰＲＯＭ（電気的消去、再書き込み可能リード・オンリ・メモリ）の一種であり、電気的に消去ができ、かつ、バイト毎にプログラム書き込みができ、また電源を必要とせず、メモリの内容が保証できるという長所を持つ。
【０００３】
【発明が解決しようとする課題】
しかしながら、上記の長所とは逆に、次のような短所を有している。
即ち、メモリへの書き込みの際に、そのままの状態では上書きができないため、一旦消去してからバイト毎に書き込み（データを書き換える）を行う必要がある。なお、ここで消去する単位は、チップによって異なるが、チップ単位に消去を行うものが主流である。
【０００４】
従って、このような特性から以下のような課題を有していた。
▲１▼メモリ階層構造のディレクトリの下位に位置するサブディレクトリの情報が、フラッシュメモリで構成されているメモリ部上にあるため、サブディレクトリ配下のファイル削除、またはファイル内に現データ容量より大きな容量のデータを書き込む場合、メモリ部の書き換えが頻繁に発生することになり、このような場合の性能向上を図ることが望まれていた。
【０００５】
▲２▼メモリ部に書き込まれているファイルを削除する場合は、そのファイルのメモリ部上の格納位置を示すためのディレクトリ格納部と、ファイル・アロケーション・テーブル（ＦＡＴ）格納部だけを制御し、メモリ部の該当領域そのものは消去しないため、この領域に対する書き込み処理が発生した場合、書き込み処理の前に消去処理が必要となり、装置としての性能が落ちてしまう。従って、このような書き込み時でも性能を向上することができる半導体記憶装置が望まれていた。
【０００６】
▲３▼半導体記憶装置に対して、論理フォーマットを実施する場合、メモリ部上にある特定データパターンを書き込んでしまうため、それ以降本装置に対する書き込み処理が発生した場合、書き込み処理の前に消去処理が必須となり、装置としての性能が落ちてしまう。従って、このような論理フォーマットを実施した後に、書き込み処理が発生した場合でも性能が低下することのない半導体記憶装置が望まれていた。
【０００７】
▲４▼メモリ部に対して上書きを行う場合、該当するデータが書き込まれている領域そのものに対して実施する（上書きを行う）ため、装置としての性能が落ちてしまう。従って、このような上書きを行う場合でも性能が低下することのない半導体記憶装置が望まれていた。
【０００８】
【課題を解決するための手段】
フラッシュメモリで構成されたメモリ部と、前記メモリ部に格納されたデータが有効か無効かを示すバリッド情報と、当該データに対応したポインタとを有するディレクトリ格納部と、
前記ディレクトリ格納部のポインタに対応した前記メモリ部のデータアドレスを示すファイル・アロケーション・テーブル格納部と、前記メモリ部の任意のデータに対して消去要求を受け付けた場合、前記ディレクトリ格納部における前記データに対応したバリッド情報を無効とすると共に、前記ファイル・アロケーション・テーブル格納部における前記データのポインタをリセット状態のアドレスに書き換え、かつ、前記メモリ部の前記データを消去するメモリ消去制御部とを備えたことを特徴とする半導体記憶装置。
【００１３】
【作用】
本発明の半導体記憶装置においては、メモリ部の任意のデータに対して消去要求を受けた場合は、ディレクトリ格納部の該当するデータのバリッド情報を無効とし、また、ファイル・アロケーション・テーブル格納部の該当するデータのポインタをリセット状態のアドレスに書き換える。そして、メモリ部の消去要求を受けたデータを消去する。
【００１４】
本発明の半導体記憶装置においては、消去位置格納部に、メモリ部の消去すべきデータの位置情報を格納し、メモリ消去制御部は、消去位置格納部に格納されたデータの個数が、予め設定したしきい値を越えた場合は、該当するメモリ部のデータを消去する。
【００１８】
【実施例】
以下、本発明の実施例を図面を用いて詳細に説明する。
図１は本発明の実施例１による半導体記憶装置を示すブロック図であるが、この説明に先立ち、半導体記憶装置の比較例を説明する。
【００１９】
《比較例の半導体記憶装置の構成》
図２は、半導体記憶装置の比較例の構成を示すブロック図である。
図において、１は半導体記憶装置（不揮発性半導体ディスク装置）、２はこの半導体記憶装置１を接続するホストコンピュータ（図示省略）のシステムバスである。
半導体記憶装置１は、ホストインタフェース部３、プロセッサ部４、プロセッサメモリ部５、フラッシュメモリ部６、バッファ部７、ファイル・アロケーション・テーブル（File Allocation TAble ）格納部（以下、ＦＡＴ格納部という）８、ディレクトリ格納部９、内部バス１０から構成されている。
【００２０】
ホストインタフェース部３は、半導体記憶装置１の上位装置であるホストとのインタフェース制御を行う部分であり、プロセッサ部４は、ホストからのコマンドを解釈し、半導体記憶装置１をディスク装置に見せるような制御等を行う部分である。
また、プロセッサメモリ部５は、プロセッサ部４が実行するプログラムが格納されているメモリである。
メモリ部６は、半導体記憶装置１の記憶媒体であり、フラッシュメモリ（ＦＥＥＰＲＯＭ）で構成され、消去単位にブロック分割されている。
【００２１】
バッファ部７は、バイトアクセス可能な揮発性メモリで構成され、その機能としてメモリ部６に対してデータの上書きを行う際、メモリ部６を消去する前にその内容を一旦退避させておくためのものである。
また、ＦＡＴ格納部８、ディレクトリ格納部９は、メモリ部６におけるデータやサブディレクトリ情報の格納位置を示すための機能を有し、バイト単位に上書きが可能なＥＥＰＲＯＭ等の不揮発性メモリチップで構成されている。
尚、内部バス１０は、半導体記憶装置１内の構成要素を接続するためのバスである。
【００２２】
図３は、ＦＡＴ格納部８、ディレクトリ格納部９、メモリ部６の詳細を示す説明図である。
図４は、図３に示したサブディレクトリの詳細を示す説明図である。
これらの図に示すように、メモリ部６内のデータ、またはサブディレクトリの格納位置は、ＦＡＴ格納部８とディレクトリ部９で制御される。
【００２３】
ディレクトリ部９において、９１は後述する９２〜９４の情報が有効であるか否かを示すバリッド情報部であり、１＝有効、０＝無効である。
９２は、メモリ部６に格納する、あるいは現在格納されている情報がデータかサブディレクトリかを示す格納情報識別部であり、０＝データ、１＝サブディレクトリとなっている。
９３は、メモリ部６に格納する情報の名前を格納するファイル名識別部、９４は、ＦＡＴ格納部８へのポインタを示す。
【００２４】
ＦＡＴ格納部８における８１は、メモリ部６へのポインタを示している。
また、ポインタ８１に対応するメモリ部６は消去単位に分割されており、分割単位をクラスタと呼ぶ。尚、メモリ部６における６１は、格納されている情報内容を示している。
【００２５】
次に、このような構成の半導体記憶装置１におけるデータ書き込みを説明する。
ここで、ファイル２のデータ書き込み（データ容量は２クラスタ）の例を説明する。この場合、ホストは、先ず、ディレクトリ部９のファイル名識別部９３を調べ、ファイル２が格納されているか否かをチェックする。ここでは、ファイル２が存在するため、次に、このファイル名に対応するバリッド情報部９１と格納情報識別部９２を調べ、本情報が有効データであることを確かめる。
【００２６】
次に、ポインタ９４を調べ、本有効データのＦＡＴ格納部８上の位置（この場合は、００４Ｈ）を確かめる。そして、ＦＡＴ格納部８上のポインタ８１の情報を元にリンクしていく。この場合、リンク情報は、００４Ｈ→００５Ｈであるので、ＦＡＴ格納部８のポインタ８１に該当するメモリ部６には、ファイル２−(1) 、ファイル２−(2) が格納されていることが分かる。
また、ポインタ８１の情報において、“０００Ｈ”はメモリ部６上の該当領域の情報が意味を持たないこと（＝リセット状態のアドレス）を示し、“ＦＦＦＨ”はＦＡＴ格納部８内のリンクが終了していることを示す情報である。
【００２７】
次にホストが、例えば、上記のファイル２−(1) 、ファイル２−(2) の領域にデータを書き込む場合を説明する。
この場合、半導体記憶装置１は、一旦、データをバッファ部７に退避させておき、次にバッファ部７上でホストから送られてきたデータを書き換え、同時にメモリ部６上の該当領域（この場合は、ファイル２−(1) 、ファイル２−(2) が格納されている領域）を消去し、バッファ部７上のデータをメモリ部６上の該当領域に格納する。
【００２８】
次に、サブディレクトリ１配下のファイル４のデータ書き込み（データ容量は１クラスタ分）の場合を説明する。
この場合、ホストは、先ずディレクトリ部のファイル名識別部９３を調べ、サブディレクトリ１が格納されているか否かをチェックする。この場合、サブディレクトリ１が存在しているので、次に、バリッド情報部９１と、格納情報識別部９２を調べ、本情報が有効サブディレクトリであることを確かめる。
次に、ポインタ９４を調べ、本有効サブディレクトリのＦＡＴ格納部８上の位置（この場合００６Ｈ）を確かめる。次に、ＦＡＴ格納部８上のポインタ８１の情報を元にリンクしていく。この場合、リンク情報は、００６ＨのみなのでＦＡＴ格納部８に該当するメモリ部６上にサブディレクトリ１が格納されていることが分かる。
【００２９】
次に、サブディレクトリ１内の情報（尚、フォーマットはディレクトリ格納部９と同等になっている）を元に、上記のディレクトリ情報を元にファイル格納領域を検出した要領で、このサブディレクトリからファイル４の格納領域を検出する。
この場合、ファイル４は存在しないため、サブディレクトリ内のバリッド情報部９１ａに“１”、格納情報識別部９２ａに“０”、ファイル名識別部９３ａに“ファイル４”、ポインタ９４ａに“００ＡＨ”を書き込む。
そして、ＦＡＴ格納部８内の、メモリ部６への該当ポインタ８１（この場合は００ＡＨ）に“ＦＦＦＨ”を書き込み、最後に、前記領域にデータを書き込む。
【００３０】
次にファイルの削除処理の説明を行う。
図５および図６は、そのファイル削除処理の説明図およびサブディレクトリの詳細説明図である。
ファイル１を削除する場合、ホストは先ずディレクトリ格納部９のファイル名識別部９３を調べ、ファイル１が格納されているか否かをチェックする。この場合、格納されているので、バリッド情報部９１と格納情報識別部９２を調べ、本情報が有効ファイルであることを確かめ、該当する有効／無効を示すバリッド情報部９１のデータを無効にする（“１”→“０”）。
【００３１】
次に、ポインタ９４を調べ、本ファイルのＦＡＴ格納部８上の位置（この場合、００２Ｈ）を確かめる。そして、ＦＡＴ格納部８上のポインタ８１の情報を元にリンクしていく。この場合、リンク情報は、００２Ｈ→００３Ｈ→００８Ｈなので、そのリンク情報を０００Ｈに書き換える（メモリ部６のデータは消去しない）。
【００３２】
次に、本装置への論理フォーマットの場合を説明する。
図７は、論理フォーマットの場合の説明図である。
ホストが、半導体記憶装置１に対して論理フォーマットを指示する場合、ホストは、ディレクトリ格納部９、ＦＡＴ格納部８の全情報のリセット（０００Ｈ）指示、次にメモリ部６の全領域に、ある特定データパターンを書き込む指示を与える。
半導体記憶装置１は、この指示を受けて、ディレクトリ格納部９のポインタを全て“０００Ｈ”とし、かつ、ＦＡＴ格納部８のポインタ８１も全て“０００Ｈ”とする。そして、メモリ部６は、ある特定のデータパターンを書き込む。
尚、図７におけるサブディレクトリの詳細は、図６と同様であるため、その図示は省略する。
【００３３】
次に、このような比較例に対する本発明の実施例を説明する。
《実施例１》
図１は、上述したように、本発明の半導体記憶装置における実施例１を示すものである。
図１中、１０１は半導体記憶装置（不揮発性半導体ディスク装置）、２はこの半導体記憶装置１０１が図示しないホストと接続されるためのシステムバスである。
【００３４】
半導体記憶装置１０１は、ホストインタフェース部１０３、プロセッサ部１０４、プロセッサメモリ部１０５、メモリ部１０６、バッファ部１０７、ＦＡＴ格納部１０８、ディレクトリ格納部１０９、内部バス１１０、サブディレクトリ格納部１１１から構成されている。
ここで、ホストインタフェース部１０３、プロセッサ部１０４、プロセッサメモリ部１０５、メモリ部１０６、バッファ部１０７、ＦＡＴ格納部１０８、ディレクトリ格納部１０９、内部バス１１０は、上述した比較例の半導体記憶装置のホストインタフェース部３、プロセッサ部４、プロセッサメモリ部５、フラッシュメモリ部６、バッファ部７、ＦＡＴ格納部８、ディレクトリ格納部９、内部バス１０と同様な機能を有する。
【００３５】
また、サブディレクトリ格納部１１１は、ＦＡＴ格納部１０８、ディレクトリ格納部１０９同様、バイト単位に上書きが可能な不揮発性メモリチップで構成され、ホストからのサブディレクトリへの書き込み要求が与えられた場合、その書き込みデータを格納するための記憶部である。
【００３６】
次に、新しいサブディレクトリ（サブディレクトリ２）配下に、新規ファイル（ファイル５、データ容量は１クラスタ分）を書き込む要求がなされた場合の処理を説明する。
図８および図９は、この場合の説明図である。
尚、これら図８、図９において、ディレクトリ格納部１０９のバリッド情報部９１〜ポインタ９４、ＦＡＴ格納部１０８のポインタ８１、メモリ部１０６の情報内容６１およびサブディレクトリ格納部１１１のバリッド情報部９１ａ〜ポインタ９４ａは、図３〜図７中の各構成と同様である。また、サブディレクトリ格納部１１１の９５ａは、サブディレクトリ格納部１１１とＦＡＴ格納部１０８のリンクを示すサブディレクトリリンク情報である。
【００３７】
ホストは、先ずディレクトリ格納部１０９のファイル名識別部９３を調べ、サブディレクトリ２が存在するか否かをチェックする（この場合、存在しない）。次に、サブディレクトリ名をファイル名識別部９３に格納し、ＦＡＴ格納部１０８の空き領域を調べる。この場合、００ＢＨ以降が空きであるので、ポインタ９４に、“００ＢＨ”を、また、ＦＡＴ格納部１０８における００ＢＨのポインタ８１に“ＦＦＦＨ”を書き込む。
【００３８】
次に、ホストが、ポインタ８１の００ＢＨに対応するメモリ部６の位置にサブディレクトリ情報を格納する場合、本装置はメモリ部６に格納せず、以下のように行う。
即ち、先ず、サブディレクトリ格納部１１１のバリッド情報部９１ａに“１”、格納情報識別部９２ａに“０”、ファイル名識別部９３ａに“ファイル５”を書き込むと共に、サブディレクトリリンク情報９５ａに、ＦＡＴ格納部１０８とのリンク情報である“００ＢＨ”を書き込む。そして、サブディレクトリ格納部１１１のリンク情報としてのポインタ９４ａに、対応するＦＡＴ格納部１０８のアドレスを書き込む（この場合、“００ＣＨ”）。
次に、ホストは、ＦＡＴ格納部１０８に、対応するメモリ部１０６の情報を書き込み（この場合、ポインタ８１の００ＣＨに“ＦＦＦＨ”）、メモリ部６上の該当領域に書き込みデータを格納する（この場合、ファイル５−(1) ）。
【００３９】
このように、実施例１によれば、サブディレクトリの書き込み要求を受けた場合は、比較例のようにメモリ部１０６上に情報を書き込まず、サブディレクトリ格納部１１１に書き込むように構成したので、サブディレクトリ配下のファイル削除や現データ容量より大きな容量のデータ書き込みが発生した場合でも、メモリ部１０６の書き換えを抑えることができ、従って装置としての性能向上を図ることができる。
【００４０】
次に、実施例２を説明する。
《実施例２》
図１０は、実施例２による半導体記憶装置の構成を示すブロック図である。
図において、２０１は半導体記憶装置（不揮発性半導体ディスク装置）、２はこの半導体記憶装置２０１が図示しないホストと接続されるためのシステムバスである。
【００４１】
また、半導体記憶装置２０１におけるホストインタフェース部２０３、プロセッサ部２０４、プロセッサメモリ部２０５、メモリ部２０６、バッファ部２０７、ＦＡＴ格納部２０８、ディレクトリ格納部２０９、内部バス２１０は、上記実施例１のホストインタフェース部１０３、プロセッサ部１０４、プロセッサメモリ部１０５、メモリ部１０６、バッファ部１０７、ＦＡＴ格納部１０８、ディレクトリ格納部１０９、内部バス１１０と同様に構成されている。
【００４２】
更に、プロセッサ部２０４は、メモリ消去制御部２０４ａを備えている。このメモリ消去制御部２０４ａは、メモリ部の任意のデータに対して消去要求を受け付けた場合、ディレクトリ格納部２０９におけるそのデータに対応したバリッド情報部９１の値を“無効”とすると共に、ＦＡＴ格納部２０８におけるデータのポインタをリセット状態のアドレスに書き換え、その後、メモリ部２０６のデータを消去するよう制御を行う機能を備えている。
【００４３】
次に、上記実施例２の半導体記憶装置２０１の動作について説明する。
図１１は、ファイルの削除処理の説明図である。
一例として、ファイル１を削除する場合を説明する。
ホストは、先ず、ディレクトリ格納部２０９のファイル名識別部９３を調べ、ファイル１が格納されているか否かをチェックする。この場合、格納されているので、バリッド情報部９１と格納情報識別部９２を調べ、本情報が有効ファイルであることを確かめ、該当する有効／無効を示すバリッド情報部９１のデータを無効にする（“１”→“０”）。
【００４４】
次に、ポインタ９４を調べ、本ファイルのＦＡＴ格納部２０８上の位置（この場合、００２Ｈ）を確かめる。そして、ＦＡＴ格納部２０８上のポインタ８１の情報を元にリンクしていく。この場合、リンク情報は、００２Ｈ→００３Ｈ→００８Ｈなので、ＦＡＴ格納部２０８上のデータ部へのリンク情報を０００Ｈに書き換える。
次に、本装置は、ＦＡＴ格納部２０８上のリンク情報（００２Ｈ→００３Ｈ→００８Ｈ）に該当するメモリ部２０６上のデータを消去する。
【００４５】
このように、実施例２では、ホストからファイルの削除要求があった場合は、ＦＡＴ格納部２０８の対応するポインタを０００Ｈとし、かつ、メモリ部２０６の対応する領域を消去するようにしたので、例えば、次にメモリ部２０６の該当領域に対して書き込みを行う場合は、そのまま、書き込み処理を行うことができ、半導体記憶装置としての性能向上を図ることができる。
【００４６】
次に、上記実施例２において、定期的にメモリ部のデータを消去するようにした半導体記憶装置を実施例３として説明する。
《実施例３》
図１２は、実施例３の半導体記憶装置３０１の構成を示すブロック図である。図において、ホストインタフェース部３０３〜ディレクトリ格納部３０９の構成は、上記実施例２におけるホストインタフェース部２０３〜ディレクトリ格納部２０９と同様であるため、ここでの説明は省略する。また、消去位置格納部３１１は、メモリ部３０６の消去すべきデータの位置情報を格納するものである。
【００４７】
図１３に消去位置格納部３１１の詳細を示す。
消去位置格納部３１１は、リードポインタ３１１ａ、ライトポインタ３１１ｂ、ＦＡＴアドレス格納部３１１ｃとで構成されている。
リードポインタ３１１ａは、ＦＡＴアドレス格納部３１１ｃからデータをリードするためのポインタ、ライトポインタ３１１ｂは、ＦＡＴアドレス格納部３１１ｃにデータをライトするためのライトポインタであり、これらの初期値は“２”である。また、ＦＡＴアドレス格納部３１１ｃは、消去するメモリ部３０６の領域に該当するＦＡＴ格納部３０８のアドレスを格納する部分であり、その領域は任意の大きさとなっている。
【００４８】
次に、上記実施例３の消去処理動作を説明する。
図１４は、そのフローチャートである。
このフローチャートはファイルの削除処理に関して、削除する位置を消去位置格納部３１１に格納し、格納データ数があるしきい値を越した場合にメモリ部３０６の該当領域を全て消去する処理を示したものである。
【００４９】
先ず、ライトポインタ３１１ｂをリードし（ステップＳ１）、削除を行うメモリ部３０６の領域に該当するＦＡＴ格納部３０８のアドレスをＦＡＴアドレス格納部３１１ｃに格納する（ステップＳ２）。
次に、ライトポインタ３１１ｂを更新し（ステップＳ３）、オーバフローした場合は、ライトポインタ３１１ｂを初期化する（ステップＳ４、Ｓ５）。更に、ライトポインタ３１１ｂとリードポインタ３１１ａとの差を求め（ステップＳ６）、あるしきい値を越えている場合、即ち、ＦＡＴアドレス格納部３１１ｃに格納されているデータの数があるしきい値を越えている場合は（ステップＳ７）、次のステップＳ８に進む。尚、しきい値を越えてない場合は、処理を終了する。
【００５０】
上記ステップＳ７において、あるしきい値を越えている場合は、リードポインタをリードし（ステップＳ８）、削除を行うメモリ部３０６の領域に該当するＦＡＴ格納部３０８のアドレスをＦＡＴアドレス格納部３１１ｃからリードする（ステップＳ９）。
次に、ＦＡＴアドレス格納部３１１ｃから得られたメモリ部３０６の該当領域を消去する（ステップＳ１０）。そして、リードポインタ３１１ａを更新し（ステップＳ１１）、オーバフローした場合はリードポインタ３１１ａを初期化する（ステップＳ１２、Ｓ１３）。
そして、ライトポインタ３１１ｂとリードポインタ３１１ａが一致しているか否か、即ち、ＦＡＴアドレス格納部３１１ｃに有効データが格納されているかを調べる（ステップＳ１４）。そして、このステップＳ１４において、一致していない場合（有効データがまだ格納されている）はステップＳ８に戻り、一致している場合（有効データ無し）は終了する。
【００５１】
このように、実施例３の半導体記憶装置３０１は、上記実施例２の半導体記憶装置２０１において、該当するメモリ部３０６上の消去を行う領域の数が、あるしきい値を越えた場合に消去を実行するように構成したので、上記実施例２の効果に加えて、メモリ部３０６の消去処理が集中して行え、従って、本装置へのアクセスが集中した場合でも、メモリ部３０６の消去処理による性能低下を最小限に抑えることができる。
【００５２】
次に、論理フォーマット要求時にはメモリ部の全領域を消去するようにした半導体記憶装置を実施例４として説明する。
《実施例４》
図１５は、実施例４の半導体記憶装置の構成を示すブロック図である。
図において、ホストインタフェース部４０３〜ディレクトリ格納部４０９の構成は、上記各実施例におけるホストインタフェース部〜ディレクトリ格納部と同様であるため、ここでの説明は省略する。
また、プロセッサ部４０４は、フォーマット制御部４０４ａを備えている。このフォーマット制御部４０４ａは、上記装置であるホストから論理フォーマット要求を受けた場合に、メモリ部４０６に対して特定のパターンの書き込みを行わず、メモリ部４０６の消去のみを行う機能を有しているものである。
【００５３】
次に、上記構成の半導体記憶装置４０１の動作を説明する。
図１６は、論理フォーマット処理の説明図である。
ホストが論理フォーマットを指示すると、本装置は、ディレクトリ格納部４０９、ＦＡＴ格納部４０８の全情報のリセット（０００Ｈ）指示を受け付けるので、この指示をプロセッサ部４０４が検出すると、フォーマット制御部４０４ａがフォーマット制御を行う。
即ち、ディレクトリ格納部４０９のポインタ９４を全て“０”とし、ＦＡＴ格納部４０８のポインタ８１を全て“０００Ｈ”とする。そして、次にメモリ部４０６の全領域に、ある特定データパターンの書き込み指示を受け付けた場合、フォーマット制御部４０４ａは、その特定データパターンの書き込みは行わず、メモリ部４０６の全領域の消去のみを行う。
【００５４】
このように、実施例４では、論理フォーマット要求を受けた場合は、メモリ部４０６の全ての領域に対して特定データパターンの書き込みを行うといった動作は行わず、従って、メモリ部４０６への書き込み要求を受け付けた場合でも、一旦消去処理を行うといった必要がなく、そのまま、データを書き込むことができる。
従って、このような場合の装置としての性能向上を図ることができる。
【００５５】
次に、実施例５を説明する。
《実施例５》
図１７は、実施例５の半導体記憶装置の構成を示すブロック図である。
図において、ホストインタフェース部５０３〜ディレクトリ格納部５０９の構成は、上記各実施例におけるホストインタフェース部〜ディレクトリ格納部と同様であるため、ここでの説明は省略する。また、プロセッサ部５０４は、書き込み制御部５０４ａを備えている。この書き込み制御部５０４ａは、メモリ部５０６の上書き（データ書き換え）を行う必要が生じた場合、メモリ部５０６のデータ未格納領域にその上書きデータを書き込んで、ＦＡＴ格納部５０８およびディレクトリ格納部５０９のポインタ８１、９４を新たにデータを書き込んだアドレスに書き換え、その後、既に書き込まれている領域を消去する機能を有しているものである。
【００５６】
次に、上記構成の半導体記憶装置５０１の動作を説明する。
図１８は、そのデータ書き込み処理の説明図である。
ここでは、その一例として、ファイル２のデータ書き込み処理（データ容量は２クラスタ分）の説明を行う。
ホストは、先ず、ディレクトリ格納部５０９のファイル名識別部９３を調べ、ファイル２が格納されているか否かをチェックする。この場合、格納されているので、次にバリッド情報部９１と格納情報識別部９２を調べ、本情報が有効データであることを確かめる。
【００５７】
次にポインタ９４を調べ、本有効データのＦＡＴ格納部５０８上の位置（この場合００４Ｈ）を確かめる。そして、ＦＡＴ格納部５０８上のポインタ８１の情報を元にリンクしていく。この場合、本装置は、リンク情報が００４Ｈ→００５Ｈであるので、メモリ部５０６上への上書き処理が必要であると判断できる。そこで本装置は、メモリ部５０６上において未書き込み領域を検出し、該当する情報をＦＡＴ格納部５０８内のポインタ８１に書き込み（この場合は、００ＢＨに“００ＣＨ”を、００ＣＨに“ＦＦＦＨ”を書き込む）。
そして、ディレクトリ格納部５０９の該当するポインタ９４を書き換え（この場合、００４Ｈ→００ＢＨ）、該当するメモリ部５０６にファイル２−(1) 、ファイル２−(2) を書き込み、最後に、ＦＡＴ格納部５０８上のリンク情報（００４Ｈ→００５Ｈ）に該当するメモリ部５０６上のデータを消去する。
【００５８】
以上のように実施例５によれば、メモリ部５０６のデータに対して上書き要求を受けた場合は、その上書きデータをメモリ部５０６のデータ未格納領域に書き込んで、ＦＡＴ格納部５０８とディレクトリ格納部５０９のポインタを書き換え、その後、上書き要求のデータが格納されていた領域を消去するようにしたので、上書き要求の場合も、データの書き込み処理を最初に行えることから、例えばこの時点でホスト側に書き込み終了の応答を行う等の手段をとることにより、データ書き換え時の性能向上を図ることができる。
【００５９】
次に、上記実施例５において、定期的にメモリ部のデータを消去するようにした半導体記憶装置を実施例６として説明する。
《実施例６》
図１９は、実施例６の半導体記憶装置の構成を示すブロック図である。
図において、ホストインタフェース部６０３〜ディレクトリ格納部６０９の構成は、上記各実施例におけるホストインタフェース部〜ディレクトリ格納部と同様であるため、ここでの説明は省略する。また、消去位置格納部６１１は、メモリ部６０６の消去すべきデータのアドレスを格納するための格納部であり、これについては後述する。
【００６０】
プロセッサ部６０４は、書き込み制御部６０４ａと消去制御部６０４ｂを備えている。この書き込み制御部６０４ａは、メモリ部６０６に格納されている任意のデータに対して上書き要求を受けた場合、その上書きデータを、メモリ部６０６のデータ未格納領域に書き込み、ＦＡＴ格納部６０８およびディレクトリ格納部６０９のポインタ８１、９４を新たにデータを書き込んだアドレスに書き換える機能を備えている。
また、消去管理部６０４ｂは、後述する消去位置格納部６１１に格納されたデータを、メモリ部６０６へのアクセスが一定時間なかった場合に消去する機能を備え、これについては後に詳述する。
【００６１】
図２０に消去位置格納部６１１の詳細を示す。
消去位置格納部６１１は、空きフラグ６１１ａ、リードポインタ６１１ｂ、ライトポインタ６１１ｃ、ＦＡＴアドレス格納部６１１ｄで構成されている。
空きフラグ６１１ａは、ＦＡＴアドレス格納部６１１ｄに有効データが格納されているか否かを示すものであり、セット状態＝ＦＡＴアドレス格納部６１１ｄに有効データ無し、リセット状態＝ＦＡＴアドレス格納部６１１ｄに有効データ有りを示す。また、初期値は“セット状態”である。
リードポインタ６１１ｂは、ＦＡＴアドレス格納部６１１ｄからデータをリードするためのリードポインタであり、初期値は“３”である。また、ライトポインタ６１１ｃは、ＦＡＴアドレス格納部６１１ｄにデータをライトするためのライトポインタであり、初期値は“３”である。
また、ＦＡＴアドレス格納部６１１ｄは、消去するメモリ部６０６の領域に該当するＦＡＴ格納部６０８のアドレスを格納する部分であり、その領域は任意の大きさになっている。
【００６２】
次に、上記構成の半導体記憶装置６０１の動作を説明する。
図２１は、その動作フローチャートである。
このフローチャートは、メモリ部６０６上の書き換えを行う際に、書き込み済み領域の削除処理に関して、削除する位置を消去位置格納部６１１に格納する処理｛図の（ａ）｝、および、定期的に消去位置格納部６１１に格納されているデータに従ってメモリ部６０６の該当領域を消去する処理｛図の（ｂ）｝を示したものである。
【００６３】
尚、ここで“定期的”とは、本装置がホストから任意のコマンドを受付後、ある一定時間後に発生するものである。またコマンド受付後、ある一定時間以内に別のコマンドを受け付けた場合は、新しいコマンドの受付からある一定時間後に発生するものである。即ち、メモリ部６０６へのアクセスが一定時間なかった場合にメモリ部６０６の該当領域を消去するようにしている。
【００６４】
最初に、削除する位置を消去位置格納部６１１に格納する処理｛図の（ａ）｝について説明する。
先ず、空きフラグ６１１ａをリセットして（ステップＳ１１）、ライトポインタ６１１ｃをリードし（ステップＳ１２）、削除を行うメモリ部６０６の領域に該当するＦＡＴ格納部６０８のアドレスをＦＡＴアドレス格納部６１１ｄに格納する（ステップＳ１３）。次に、ライトポインタ６１１ｃを更新し（ステップＳ１４）、オーバフローした場合は、ライトポインタ６１１ｃを初期化する（ステップＳ１５、Ｓ１６）。
【００６５】
次に、定期的に、消去位置格納部６１１に格納されているデータに従ってメモリ部６０６の該当領域を消去する処理｛図の（ｂ）｝について説明する。
先ず、空きフラグ６１１ａがセット状態であるか否かを調べる（ステップＳ２１）。即ち、ＦＡＴアドレス格納部６１１ｄに有効データが格納されているか否かを調べる。
このステップＳ２１において、セット状態の場合（有効データ無し）は終了し、リセット状態の場合（有効データ有り）は、リードポインタ６１１ｂをリードし（ステップＳ２２）、削除を行うメモリ部６０６の領域に該当するＦＡＴ格納部６８のアドレスをＦＡＴアドレス格納部６１１ｄからリードする（ステップＳ２３）。
【００６６】
次に、ＦＡＴアドレス格納部６１１ｄのアドレスから得られる該当メモリ部６０６の領域を消去する（ステップＳ２４）。その後、リードポインタ６１１ｂを更新し（ステップＳ２５）、オーバフローした場合は、リードポインタ６１１ｂを初期化する（ステップＳ２６、Ｓ２７）。
次に、ライトポインタ６１１ｃとリードポインタ６１１ｂが一致しているか否かを調べ（即ち、ＦＡＴアドレス格納部６１１ｄにまだ有効データが格納されているか否かを調べ）（ステップＳ２８）、一致していない場合（有効データがまだ格納されている場合）は終了する。一方、一致している場合（有効データは格納されていない場合）は空きフラグ６１１ａをリセットし（ステップＳ２９）、処理を終了する。
【００６７】
以上のように実施例６によれば、上記実施例５と同様に、メモリ部６０６のデータに対して上書き要求を受けた場合は、その上書きデータをメモリ部６０６のデータ未格納領域に書き込んで、ＦＡＴ格納部６０８とディレクトリ格納部６０９のポインタを書き換えると共に、メモリ部６０６に対して一定時間アクセスがない場合に、メモリ部６０６の該当領域の消去を行うようにしたので、実施例５と同様の効果を奏すると共に、メモリ部６０６の消去処理を、他の処理を行っていない場合に行うため、本装置へのデータ書き換え要求が集中した場合でも、処理が速やかに行え、このような場合の性能向上を図ることができる。
【００６８】
尚、上記実施例６では、定期的にメモリ部６０６の該当領域を消去する構成として、メモリ部６０６に一定時間アクセスがなかった場合に消去を行うよう構成したが、これ以外にも、消去処理の実行を一定周期に設定すると共に、処理の待ち行列を設け、消去処理のタイミングで他の処理を行っていた場合は、消去処理を待ち行列に加え、この待ち行列に従って、消去処理を含む各処理を行うよう構成してもよい。
【００６９】
また、上記実施例６においても、実施例３と同様に、ＦＡＴアドレス格納部６１１ｄに格納されたデータの個数があるしきい値を越えた場合に消去処理を行うよう構成してもよい。
更に、これとは逆に、実施例３においても、実施例６と同様に、メモリ部３０６の該当領域の消去処理を、メモリ部３０６に一定時間アクセスがなかった場合に実行するよう構成してもよい。
【００７０】
【発明の効果】
以上詳細に説明したように、第１発明の半導体記憶装置によれば、サブディレクトリへの書き込み要求を受けた場合は、メモリ部上に情報を書き込まずに、サブディレクトリ格納部に格納するようにしたので、メモリ部上のサブディレクトリへのライトアクセスが不要となり、このような場合の性能向上を図ることができる。
【００７１】
第２発明の半導体記憶装置によれば、ファイル削除要求時、ディレクトリ格納部とファイル・アロケーション・テーブル格納部を制御した後、メモリ部の該当領域を消去するように構成したので、新たにメモリ部上の該当領域に対して書き込みを行う際、消去処理が不要となり、装置としての性能向上を図ることができる。
また、第３発明の半導体記憶装置によれば、第２発明の半導体記憶装置において、メモリ部上の消去すべき領域を、その個数があるしきい値を越えた場合に行うよう構成したので、第２発明の効果に加えて、消去処理が集中して行えるため、本装置へのアクセスが集中した場合でも、メモリ部の消去処理による性能低下を最小限に抑えることができる。
【００７２】
第４発明の半導体記憶装置によれば、論理フォーマット要求を受けた場合は、メモリ部上の全領域を消去するように構成したので、新たにメモリ部にデータを書き込む際の、消去処理が不要となり、装置としての性能向上を図ることができる。
【００７３】
第５発明の半導体記憶装置によれば、メモリ部上の領域の上書きを行う場合、その上書きデータをメモリ部の未書き込み領域に書き込み、その後、上書き要求された領域の消去を行うように構成したので、上書き要求の場合も、データの書き込み処理を最初に行えることから、このような場合の性能向上を図ることができる。
また、第６発明の半導体記憶装置によれば、第５発明の半導体記憶装置において、メモリ部上の該当領域の消去を、メモリ部に一定時間アクセスがなかった場合に行うよう構成したので、本装置へのデータ書き換え要求が集中した場合でも、処理が速やかに行え、このような場合の性能向上を図ることができる。
【図面の簡単な説明】
【図１】本発明の半導体記憶装置の実施例１のブロック図である。
【図２】半導体記憶装置の比較例のブロック図である。
【図３】比較例の半導体記憶装置における各部の詳細説明図である。
【図４】図３におけるサブディレクトリの詳細説明図である。
【図５】比較例の半導体記憶装置におけるファイル消去処理の説明図である。
【図６】図５におけるサブディレクトリの詳細説明図である。
【図７】比較例の半導体記憶装置における論理フォーマット処理の説明図である。
【図８】本発明の半導体記憶装置の実施例１の動作説明図である。
【図９】本発明の半導体記憶装置の実施例１におけるサブディレクトリ格納部の詳細説明図である。
【図１０】本発明の半導体記憶装置の実施例２の構成を示すブロック図である。
【図１１】本発明の半導体記憶装置の実施例２におけるファイル消去処理の説明図である。
【図１２】本発明の半導体記憶装置の実施例３の構成を示すブロック図である。
【図１３】本発明の半導体記憶装置の実施例３における消去位置格納部の詳細説明図である。
【図１４】本発明の半導体記憶装置の実施例３における消去処理のフローチャートである。
【図１５】本発明の半導体記憶装置の実施例４の構成を示すブロック図である。
【図１６】本発明の半導体記憶装置の実施例４における論理フォーマット処理の説明図である。
【図１７】本発明の半導体記憶装置の実施例５の構成を示すブロック図である。
【図１８】本発明の半導体記憶装置の実施例５におけるデータ書き込み処理の説明図である。
【図１９】本発明の半導体記憶装置の実施例６の構成を示すブロック図である。
【図２０】本発明の半導体記憶装置の実施例６における消去位置格納部の詳細説明図である。
【図２１】本発明の半導体記憶装置の実施例６の動作フローチャートである。
【符号の説明】
１０１、２０１、３０１、４０１、５０１、６０１  半導体記憶装置
１０６、２０６、３０６、４０６、５０６、６０６  メモリ部
１０８、２０８、３０８、４０８、５０８、６０８  ファイル・アロケーション・テーブル（ＦＡＴ）格納部
１０９、２０９、３０９、４０９、５０９、６０９  ディレクトリ格納部
１１１  サブディレクトリ格納部
２０４ａ、３０４ａ  メモリ消去制御部
３１１、６１１  消去位置格納部
４０４ａ  フォーマット制御部
５０４ａ、６０４ａ  書き込み制御部
６０４ｂ  消去管理部
【図１】
0003784844.tif 000002
【図２】
0003784844.tif 000003
【図３】
0003784844.tif 000004
【図４】
0003784844.tif 000005
【図６】
0003784844.tif 000006
【図５】
0003784844.tif 000007
【図７】
0003784844.tif 000008
【図８】
0003784844.tif 000009
【図９】
0003784844.tif 000010
【図１０】
0003784844.tif 000011
【図１１】
0003784844.tif 000012
【図１２】
0003784844.tif 000013
【図１３】
0003784844.tif 000014
【図１４】
0003784844.tif 000015
【図１５】
0003784844.tif 000016
【図１６】
0003784844.tif 000017
【図１７】
0003784844.tif 000018
【図１８】
0003784844.tif 000019
【図１９】
0003784844.tif 000020
【図２０】
0003784844.tif 000021
【図２１】
0003784844.tif 000022