(57)【特許請求の範囲】
【請求項１】
データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、
前記ライトデータの書込みに必要なデータ領域と前記ブロックのデータ領域とを比較し、前記ライトデータのデータ領域が該ブロックのそれより小さいと、該ブロックの全データを前記バッファ部に転送して該バッファ部上のデータを前記ライトデータに書換え、前記ライトデータのデータ領域が前記ブロックのそれと一致すると、該ブロックのデータを前記バッファ部に転送せずに該バッファ部に前記ライトデータを直接書込み、前記フラッシュメモリ部のデータの消去後の前記ブロックに、前記バッファ部の全データを書込む転送制御部を更に備えることを特徴とする半導体記憶装置。
【請求項２】
データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、
前記フラッシュメモリ部の各ブロック毎にデータの書込領域を示す領域指示データが格納されているブロック制御テーブル部と、
該ブロック制御テーブル部の書換え対象のブロックの前記領域指示データに基づいて該ブロックの前記書込領域のデータを前記バッファ部に転送して該バッファ部上のデータを前記ライトデータにより書換え、前記フラッシュメモリ部のデータの消去後の前記ブロックに前記バッファ部のデータを書込むと共に前記ライトデータの書換えにより該ブロックの前記書込領域が変化すると前記ブロック制御テーブル部の対応するブロックの領域指示データを変化した書込領域を示す領域指示データに更新するブロック制御部とを含むことを特徴とする半導体記憶装置。
【請求項３】
データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、
前記フラッシュメモリ部の各ブロック毎に、書込領域を分けた各セクタに対しデータの有無を示すデータ有無指示データが格納されているセクタ制御テーブル部と、
該セクタ制御テーブル部の書換え対象のブロックの前記データ有無指示データに基づいて該ブロックのデータを有するセクタのデータのみを前記バッファ部に転送して該バッファ部上のデータを前記ライトデータにより書換えると共に該書換えにより新たにデータの書込まれたセクタが生じると前記セクタ制御テーブル部の対応するセクタのデータ有無指示データをデータ有りとして更新し、更新後の前記セクタ制御テーブル部のデータ有無指示データに基づいて前記バッファ部上のデータを転送して前記フラッシュメモリ部のデータの消去後の前記ブロックに書込むセクタ制御部とを含むことを特徴とする半導体記憶装置。
【請求項４】
データがブロック単位で消去可能に書込まれているフラッシュメモリ部に対し書換え対象のブロックのデータをバッファ部に転送し、該バッファ部のデータをホストから受信したライトデータ群より書換え、該書換えたバッファ部のデータを前記フラッシュメモリ部のデータの消去後の前記ブロックに書込むメモリ制御方法であって、
前記ホストから現在のライトデータを受信して次のライトデータを受信するまでの間に、前記フラッシュメモリ部の前記ブロックのデータを前記バッファ部に転送し、かつ該バッファ部に前記現在のライトデータを書換えのために転送することを特徴とするメモリ制御方法。
【請求項５】
データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、
前記ホストからライトデータを受信する毎に該ライトデータを格納するインタフェース部と、
前記インタフェース部に格納されたライトデータを読み取って、当該ライトデータにより前記バッファ部のデータを書換えると共に、前記フラッシュメモリ部のデータ消去後のブロックに前記バッファ部上のデータを書戻すプロセッサ部と、
前記プロセッサ部と前記インタフェース部とを接続する内部バスとは異なるバスによって、前記フラッシュメモリ部と前記バッファ部とのデータ転送動作を制御し、前記プロセッサ部が前記インタフェース部からライトデータを読み込んでいる間に、前記フラッシュメモリ部のブロックのデータを前記バッファ部に転送するメモリ管理部とを備えたことを特徴とする半導体記憶装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、フラッシュメモリを用いた半導体記憶装置に関し、特にそのデータ書換え制御に関するものである。
【０００２】
【従来の技術】
近年、不揮発性メモリチップとして、フラッシュメモリ、即ちフラッシュＥＥＰＲＯＭ（ＦＥＥＰＲＯＭ）が実用化されるようになり、このチップを使用した半導体ディスク装置の開発が盛んに行われている。
このフラッシュメモリとは、ＥＥＰＲＯＭ（電気的消去、再書込み可能リード・オンリ・メモリ）の一種であり、電気的に消去ができ、かつ、バイト毎にプログラム書込みができ、また電源を必要とせず、メモリの内容が保証できるという長所を持つ。
【０００３】
【発明が解決しようとする課題】
しかしながら、上記の長所とは逆に、次のような短所を有している。
即ち、メモリへの書込みの際に、上書きができないため、一旦消去してからバイト毎に書込み（データを書換える）を行う必要がある。なお、ここで消去する単位は、チップによって異なるが、チップ単位に消去を行うものが主流である。
フラッシュメモリを用いた半導体記憶装置は、上記のようなフラッシュメモリのデータ書換え時に、そのメモリ部のデータを必ず消去しなければならないといった特性のため、半導体記憶装置の特長である高速アクセスの妨げとなっており、このような、データ書換え時の性能向上を図ることのできる半導体記憶装置の実現が望まれていた。
【０００４】
【課題を解決するための手段】
本発明は、データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、前記ライトデータの書込みに必要なデータ領域と前記ブロックのデータ領域とを比較し、前記ライトデータのデータ領域が該ブロックのそれより小さいと、該ブロックの全データを前記バッファ部に転送して該バッファ部上のデータを前記ライトデータに書換え、前記ライトデータのデータ領域が前記ブロックのそれと一致すると、該ブロックのデータを前記バッファ部に転送せずに該バッファ部に前記ライトデータを直接書込み、前記フラッシュメモリ部のデータの消去後の前記ブロックに、前記バッファ部の全データを書込む転送制御部を更に備えることを特徴とする半導体記憶装置。
他の発明は、データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、前記ブロックの前記ライトデータによる書換えるべき領域を判定し、該ブロックの前記判定した領域以外の領域のデータを前記バッファ部に転送して該バッファ部上の前記書換えるべき領域に対応する領域に前記ライトデータを書込み、前記フラッシュメモリ部のデータの消去後の前記ブロックに、前記バッファ部の全データを書込む転送データ管理部を更に備えることを特徴とする半導体記憶装置。
また、他の発明は、データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、前記フラッシュメモリ部の各ブロック毎にデータの書込領域を示す領域指示データが格納されているブロック制御テーブル部と、該ブロック制御テーブル部の書換え対象のブロックの前記領域指示データに基づいて該ブロックの前記書込領域のデータを前記バッファ部に転送して該バッファ部上のデータを前記ライトデータにより書換え、前記フラッシュメモリ部のデータの消去後の前記ブロックに前記バッファ部のデータを書込むと共に前記ライトデータの書換えにより該ブロックの前記書込領域が変化すると前記ブロック制御テーブル部の対応するブロックの領域指示データを変化した書込領域を示す領域指示データに更新するブロック制御部とを含むことを特徴とする半導体記憶装置。
【０００５】
更に他の発明は、データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、前記フラッシュメモリ部の各ブロック毎に、書込領域を分けた各セクタに対しデータの有無を示すデータ有無指示データが格納されているセクタ制御テーブル部と、該セクタ制御テーブル部の書換え対象のブロックの前記データ有無指示データに基づいて該ブロックのデータを有するセクタのデータのみを前記バッファ部に転送して該バッファ部上のデータを前記ライトデータにより書換えると共に該書換えにより新たにデータの書込まれたセクタが生じると前記セクタ制御テーブル部の対応するセクタのデータ有無指示データをデータ有りとして更新し、更新後の前記セクタ制御テーブル部のデータ有無指示データに基づいて前記バッファ部上のデータを転送して前記フラッシュメモリ部のデータの消去後の前記ブロックに書込むセクタ制御部とを含むことを特徴とする半導体記憶装置。
また、他の発明は、データがブロック単位で消去可能に書込まれているフラッシュメモリ部に対し書換え対象のブロックのデータをバッファ部に転送し、該バッファ部のデータをホストから受信したライトデータ群より書換え、該書換えたバッファ部のデータを前記フラッシュメモリ部のデータの消去後の前記ブロックに書込むメモリ制御方法であって、前記ホストから現在のライトデータを受信して次のライトデータを受信するまでの間に、前記フラッシュメモリ部の前記ブロックのデータを前記バッファ部に転送し、かつ該バッファ部に前記現在のライトデータを書換えのために転送することを特徴とするメモリ制御方法。
また、更に他の発明は、データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、前記ホストからライトデータを受信する毎に該ライトデータを格納するインタフェース部と、前記インタフェース部に格納されたライトデータを読み取って、当該ライトデータにより前記バッファ部のデータを書換えると共に、前記フラッシュメモリ部のデータ消去後のブロックに前記バッファ部上のデータを書戻すプロセッサ部と、前記プロセッサ部と前記インタフェース部とを接続する内部バスとは異なるバスによって、前記フラッシュメモリ部と前記バッファ部とのデータ転送動作を制御し、前記プロセッサ部が前記インタフェース部からライトデータを読み込んでいる間に、前記フラッシュメモリ部のブロックのデータを前記バッファ部に転送するメモリ管理部とを備えたことを特徴とする半導体記憶装置。
【０００６】
【実施例】
以下、本発明の実施例を図面を用いて詳細に説明する。
図１は、本発明の半導体記憶装置における実施例１を示すブロック図であるが、この説明に先立ち、基本的な半導体記憶装置の構成および動作を説明する。
【０００７】
《基本的な半導体記憶装置の構成》
図２は、フラッシュメモリ（ＦＥＥＰＲＯＭ）を用いた半導体記憶装置のブロック図を示す。
図において、１は半導体記憶装置（不揮発性半導体ディスク装置）、２はこの半導体記憶装置１を接続するホストコンピュータ（図示省略）のシステムバスである。
半導体記憶装置１は、インタフェース部３、プロセッサ部４、プロセッサメモリ部５、フラッシュメモリ部６、バッファ部７、内部バス８から構成されている。
【０００８】
インタフェース部３は、ホストコンピュータとのインタフェース制御を行う部分である。プロセッサ部４は、ホストコンピュータからのコマンドを解釈し、半導体記憶装置１を磁気ディスク装置と同様に見せるように制御し、フラッシュメモリ部６およびバッファ部７に対するデータ書換えの制御を行う機能を備えている。また、プロセッサメモリ部５は、プロセッサ部４が実行するプログラムが格納されているメモリである。
【０００９】
フラッシュメモリ部６は、半導体記憶装置１の記憶媒体であり、フラッシュメモリ（ＦＥＥＰＲＯＭ）で構成されている。バッファ部７は、フラッシュメモリ部６内の１ブロックのデータを書換えるために消去する場合、データを一時的に退避させておくためのメモリであり、１ブロック分の容量を持つ。尚、ここで、１ブロックとは、消去する最低の単位を指している。
【００１０】
図３は、このようなフラッシュメモリ部６とバッファ部７との関係を示す説明図である。
即ち、フラッシュメモリ部６は、１〜ｍ個のブロックから構成され、バッファ部７は、その一つ分のブロックの容量となっている。
【００１１】
また、図２に示す内部バス８は、半導体記憶装置１内の構成要素を接続するためのバスである。
【００１２】
次に、上記の半導体記憶装置１の動作について説明する。
半導体記憶装置１の動作は、大きく分けてホストコンピュータが半導体記憶装置１からデータを読み出すリードと、ホストコンピュータが半導体記憶装置１へデータを書込むライトがある。
【００１３】
［リード動作］
図４は、上記半導体記憶装置１のリード動作を示したフローチャートである。
図示しないホストコンピュータは、半導体記憶装置１に対してリード要求を行う場合は、システムバス２を介して半導体記憶装置１へ、リードコマンド、リードデータ数、先頭アドレスを送る。
【００１４】
半導体記憶装置１は、ホストコンピュータからの情報をシステムバス２を介し、インタフェース部３で受け取る。インタフェース部３は、上記のリードコマンド、リードデータ数、先頭アドレスを、インタフェース部３内の図示しないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタにセットする。また、ホストコンピュータより情報がきたことを、プロセッサ部４に通知する（ステップＳ１０１）。
【００１５】
プロセッサ部４は、コマンドレジスタをリードして、ホストコンピュータがリード要求したことを認識する（ステップＳ１０２）。また、データ数レジスタと先頭アドレスレジスタをリードして、フラッシュメモリ部６内のどの領域がリード要求されたかを認識する（ステップ１０３）。
次に、プロセッサ部４は、フラッシュメモリ部６内のリード要求された領域から、１ワードのデータをリードし、インタフェース部３へデータ転送を開始する（ステップＳ１０４）。インタフェース部３は、ホストコンピュータにデータが転送できることを通知し、この通知を受けたホストコンピュータは、システムバス２を介して、インタフェース部３よりデータを読み出す（ステップＳ１０５）。このようにして、リード要求された領域からデータ転送を繰り返す。
【００１６】
必要なデータ数をホストコンピュータに転送し終えると（ステップＳ１０６）、プロセッサ部４は、インタフェース部３を介してリード動作の終了をホストコンピュータへ通知する（ステップＳ１０７）。
ホストコンピュータは、終了通知を受け、リード動作を終了する。
【００１７】
［ライト動作］
図５、６は、上記半導体記憶装置１におけるライト動作を示したフローチャートである。
ホストコンピュータが半導体記憶装置１に対してライト要求を行う場合は、上述したリード動作と同様に、半導体記憶装置１に、ライトコマンド、ライトデータ数、先頭アドレスを送る。
【００１８】
インタフェース部３は、上記のライトコマンド、ライトデータ数、先頭アドレスをインタフェース部３内の図示されていないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタにセットする。また、インタフェース部３は、プロセッサ部４にホストコンピュータからコマンドがきたことを知らせる（ステップＳ２０１）。
プロセッサ部４は、コマンドレジスタをリードし、ホストコンピュータがライト要求してきたことを認識する（ステップＳ２０２）。また、データ数レジスタと先頭アドレスレジスタをリードし、フラッシュメモリ部６内のどの領域がライト要求されたかを認識し（ステップＳ２０３）、その領域への上書きが可能か否かを判断する（ステップＳ２０４）。
【００１９】
フラッシュメモリ部６内のライト要求された領域への上書きが不可能な場合、プロセッサ部４は、フラッシュメモリ部６内のライト要求された領域が含まれる１ブロック内の全てのデータをバッファ部７に転送する（ステップＳ２０５）。そして、フラッシュメモリ部６内のライト要求された領域が含まれるブロック内の全てのデータの転送を終えると、そのブロックを消去する（ステップＳ２０６）。
【００２０】
次に、プロセッサ部４は、インタフェース部３を介してホストコンピュータへ書込むデータを転送する許可を出す。通知を受けたホストコンピュータは、半導体記憶装置１へ１ワードずつデータ転送を開始する（ステップＳ２０７）。
半導体記憶装置１は、ホストコンピュータからのデータをシステムバス２を介し、インタフェース部３で受け取る。プロセッサ部４は、ホストコンピュータから送られてきたデータを、インタフェース部３からライト要求された領域に対応するバッファ部７内の領域へ１ワードずつ転送する（ステップＳ２０８）。そして、この必要なデータ数をホストコンピュータから転送し終えるまで繰り返す。
【００２１】
必要なデータ数をホストコンピュータから転送し終えると（ステップＳ２０９）、バッファ部７のライト要求された領域を含むブロックのデータを、フラッシュメモリ部６内のライト要求された領域を含むブロックに転送する（ステップＳ２１０）。
プロセッサ部４は、インタフェース部３を介してホストコンピュータへライト動作の終了を通知する（ステップＳ２１１）。
これにより、ホストコンピュータは、終了通知を受け、ライト動作を終了する。
【００２２】
また、上記ステップＳ２０４において、フラッシュメモリ部６内のライト要求された領域への上書きが可能な場合、プロセッサ部４は、インタフェース部３を介してホストコンピュータに書込むデータの転送する許可を出す。通知を受けたホストコンピュータは、半導体記憶装置１へデータ転送を開始する（ステップＳ２１２）。プロセッサ部４は、ホストコンピュータから送られてきたデータを、インタフェース部３からフラッシュメモリ部６のライト要求された領域に対応する領域へ転送する（ステップＳ２１３）。そして、この転送動作を、必要なデータ数をホストコンピュータから転送し終えるまで繰り返す。
【００２３】
必要なデータ数をホストコンピュータから転送し終えると（ステップＳ２１４）、プロセッサ部４は、インタフェース部３を介してホストコンピュータへライト動作の終了を通知する（ステップＳ２１１）。
そして、ホストコンピュータは、終了通知を受け、ライト動作を終了する。
【００２４】
次に、このような半導体記憶装置１に対して、転送制御部を設けた実施例１を図１を用いて説明する。
《実施例１》
図１において、１１は半導体記憶装置、２はこの半導体記憶装置１１が図示しないホストコンピュータと接続されるためのシステムバスである。また、半導体記憶装置１１は、インタフェース部１３、プロセッサ部１４、プロセッサメモリ部１５、フラッシュメモリ部１６、バッファ部１７、内部バス１８から構成されている。
【００２５】
インタフェース部１３は、上述した構成の半導体記憶装置１におけるインタフェース部３と同様に、ホストコンピュータとのインタフェース制御を行う部分である。
【００２６】
プロセッサ部１４は、ホストコンピュータからのコマンドを解釈し、半導体記憶装置１１をディスク装置に見せるように制御し、フラッシュメモリ部１６およびバッファ部１７に対するデータ書換えの制御を行う部分であり、転送制御部１４ａを備えている。この転送制御部１４ａは、ホストコンピュータからのライトデータが、フラッシュメモリ部１６の１ブロック分なかった場合は、そのデータを含むブロックをフラッシュメモリ部１６からバッファ部１７へ転送して、バッファ部１７上で書換えを行い、フラッシュメモリ部１６の該当ブロックの消去を行った後、バッファ部１７上で書換えた１ブロック分のデータを書戻し、かつ、ホストコンピュータからのライトデータが、１ブロック分あった場合は、そのブロック分のデータをフラッシュメモリ部１６からバッファ部１７へ転送せず、フラッシュメモリ部１６の該当ブロックの消去を行った後、ライトデータを直接書込む機能を備えているものである。
【００２７】
また、プロセッサメモリ部１５〜バッファ部１７の構成は、上記半導体記憶装置におけるプロセッサメモリ部５〜バッファ部７の構成と同様であるため、ここでの説明は省略する。尚、フラッシュメモリ部１６とバッファ部１７の容量は、図３で示したように構成されている。
【００２８】
次に、上記実施例１の半導体記憶装置１１の動作を説明する。
［リード動作］
ここで、本実施例のリード動作は、上記半導体記憶装置１の動作フローと同様である。即ち、その動作は図４に示したフローチャートと同様であるため、ここでの説明は省略する。
【００２９】
［ライト動作］
図７はライト動作のフローチャートである。
ホストコンピュータがライト動作を要求する場合、半導体記憶装置１１に対し、ライトコマンド、ライトデータ数、先頭アドレスを発行する。
インタフェース部１３は、リード動作同様、インタフェース部１３内の図示しないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタに、これらライトコマンド、ライトデータ数、先頭アドレスをセットし、プロセッサ部１４に割り込みを上げる（ステップＳ３０１）。
【００３０】
プロセッサ部１４の転送制御部１４ａは、割り込みを受け付けると、コマンドレジスタをリードし、ホストコンピュータがライトコマンドを発行したことを認識する（ステップＳ３０２）。次に、転送制御部１４ａはデータ数レジスタと先頭アドレスレジスタをリードし、フラッシュメモリ部１６へ書込みを行う領域を知り（ステップＳ３０３）、フラッシュメモリ部１６内の該領域への上書きが可能か否か、即ち、ライトする領域が未使用か否かを判断する（ステップＳ３０４）。
【００３１】
ステップＳ３０４において、フラッシュメモリ部１６への上書きが不可能な場合は、ステップＳ３０５へ進み、フラッシュメモリ部１６へ書込みを行うライトデータ領域が１ブロック分であり、かつ、その１ブロック分がフラッシュメモリ部１６のブロックに対応しているか否かを転送制御部１４ａは判断する。
ステップＳ３０５において、フラッシュメモリ部１６へ書込みを行うライトデータ領域が１ブロック分でない、または、１ブロック分であるがその１ブロック分がフラッシュメモリ部１６のブロックに対応していない場合は、ステップＳ３０６へ進み、フラッシュメモリ部１６内の上書きが必要な領域が含まれる１ブロック分のデータを転送し、バッファ部１７に格納する。そして、このデータ転送後、フラッシュメモリ部１６内の上書きが必要な領域が含まれるブロック分のデータを消去する（ステップＳ３０７）。
【００３２】
また、ステップＳ３０５において、フラッシュメモリ部１６へ書込みを行うライトデータ領域が１ブロック分であり、かつ、その１ブロックがフラッシュメモリ部１６のブロックに対応している場合は、フラッシュメモリ部１６内の該当ブロックのデータを転送せず、そのまま、ステップＳ３０７に進んで、フラッシュメモリ部１６内の上書きが必要な領域が含まれる１ブロック分のデータを消去する。
【００３３】
その後は、上述した半導体記憶装置１のライト動作と同様に、プロセッサ部１４が、インタフェース部１３を介してホストコンピュータへ書込むデータを転送する許可を出し、通知を受けたホストコンピュータは、半導体記憶装置１１へ１ワードずつデータ転送を開始する（ステップＳ３０８）。
半導体記憶装置１１は、ホストコンピュータからのデータをシステムバス２を介し、インタフェース部１３で受け取る。プロセッサ部１４は、ホストコンピュータから送られてきたデータを、インタフェース部１３からライト要求された領域に対応するバッファ部１７内の領域へ１ワードずつ転送する（ステップＳ３０９）。そして、この必要なデータ数をホストコンピュータから転送し終えるまで繰り返す。
【００３４】
必要なデータ数をホストコンピュータから転送し終えると（ステップＳ３１０）、バッファ部１７のライト要求された領域を含むブロックのデータを、フラッシュメモリ部１６内のライト要求された領域を含むブロックに転送する（ステップＳ３１１）。
プロセッサ部４は、インタフェース部３を介してホストコンピュータへライト動作の終了を通知する（ステップＳ３１２）。
これにより、ホストコンピュータは、終了通知を受け、ライト動作を終了する。
【００３５】
また、上記ステップＳ３０４において、フラッシュメモリ部１６内のライト要求された領域への上書きが可能な場合は、上述した半導体記憶装置１と同様に図６に示すステップへ進むため、その後の動作については説明を省略する。
【００３６】
このように、実施例１によれば、フラッシュメモリ部１６に書込みを行うライトデータ領域が１ブロック分あり、かつ、その１ブロックがフラッシュメモリ部１６のブロックに対応している場合は、フラッシュメモリ部１６からバッファ部１７への該当ブロックのデータ転送を行わないようにしたので、このような場合のフラッシュメモリ部１６からバッファ部１７へのデータ転送処理がなくなり、ライト動作時の高速化が図れ、装置としての性能向上となる。
【００３７】
次に、基本的な構成の半導体記憶装置１に対して、転送データ管理部を設けた実施例２を説明する。
《実施例２》
図８は、その構成を示すブロック図である。
この図８において、２１は半導体記憶装置、２はこの半導体記憶装置２１が図示しないホストコンピュータと接続されるためのシステムバスである。また、半導体記憶装置２１は、インタフェース部２３、プロセッサ部２４、プロセッサメモリ部２５、フラッシュメモリ部２６、バッファ部２７、内部バス２８から構成されている。
【００３８】
また、この実施例２において、インタフェース部２３、プロセッサメモリ部２５〜内部バス２８の構成は、上記実施例１におけるインタフェース部１３、プロセッサメモリ部１５〜内部バス１８の構成と同様であるため、ここでの説明は省略する。
【００３９】
プロセッサ部２４は、上記実施例１と同様に、ホストコンピュータからのコマンドを解釈し、半導体記憶装置２１をディスク装置に見せるように制御し、フラッシュメモリ部２６およびバッファ部２７に対するデータ書換えの制御を行う部分である。また、このプロセッサ部２４は、転送データ管理部２４ａを備えている。この転送データ管理部２４ａは、ホストコンピュータからのライト要求があった場合、対応するフラッシュメモリ部２６のアドレスに基づき、上書きを行うライトデータ領域のデータを除いて１ブロック分のデータ転送を行い、かつ、バッファ部２７上でライトデータ領域の書込みを行い、フラッシュメモリ部２６の該当ブロックの消去を行った後、バッファ部７上の１ブロック分のデータを書戻す機能を備えているものである。
【００４０】
次に、上記実施例２の半導体記憶装置２１の動作を説明する。
［リード動作］
ここで、本実施例のリード動作は、基本的な構成の半導体記憶装置１の動作フローと同様である。即ち、その動作は図４に示したフローチャートと同様であるため、ここでの説明は省略する。
【００４１】
［ライト動作］
図９はライト動作のフローチャートである。
ホストコンピュータがライト動作を要求する場合、半導体記憶装置２１に対し、ライトコマンド、ライトデータ数、先頭アドレスを発行する。
インタフェース部２３は、リード動作同様、インタフェース部２３内の図示しないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタに、これらライトコマンド、ライトデータ数、先頭アドレスをセットし、プロセッサ部２４に割り込みを上げる（ステップＳ４０１）。
【００４２】
プロセッサ部２４は、割り込みを受け付けると、コマンドレジスタをリードし、ホストコンピュータがライトコマンドを発行したことを認識する（ステップＳ４０２）。次に、プロセッサ部２４はデータ数レジスタと先頭アドレスレジスタをリードし、フラッシュメモリ部２６へ書込みを行う領域を知り（ステップＳ４０３）、フラッシュメモリ部２６内の該領域への上書きが可能か否かを判断する（ステップＳ４０４）。
ステップＳ４０４において、フラッシュメモリ部２６への上書きが不可能な場合は、ステップＳ４０５へ進み、フラッシュメモリ部２６内の上書きが必要な領域が含まれる１ブロック分のデータにおいて、上書きを行うライトデータ領域のデータを除いた１ブロック分のデータを転送し、バッファ部２７に格納する。
【００４３】
図１０は、その転送動作の説明図である。
即ち、フラッシュメモリ部２６のあるブロック（ブロックｉとする）にデータが格納されており、そのデータ領域に上書き要求があったとする。このような場合、転送データ管理部２４ａは、上書き要求のアドレスに基づき、ブロックｉにおける上書き領域以外の領域のみをバッファ部２７に転送するものである。
【００４４】
その後は、基本的な構成の半導体記憶装置１のライト動作と同様に、フラッシュメモリ部２６内の該当するブロックのデータを消去する（ステップＳ４０６）。
そして、これ以降のステップＳ４０７〜Ｓ４１１の動作は、図５におけるステップＳ２０７〜Ｓ２１１および図８におけるステップＳ３０８〜Ｓ３１２の動作と同様であるため、ここでの説明は省略する。
また、上記ステップＳ４０４において、フラッシュメモリ部２６内のライト要求された領域への上書きが可能な場合は、上述した基本的な構成の半導体記憶装置１と同様に図６に示すステップへ進むため、その後の動作については説明を省略する。
【００４５】
このように、実施例２によれば、ホストコンピュータからのライト要求時、該当ブロックにおける上書き領域のデータは、フラッシュメモリ部２６からバッファ部２７へ退避させないようにしたので、このような場合のフラッシュメモリ部２６からバッファ部２７へのデータ転送量を少なくすることができ、従って、ライト動作時の高速化が図れ、装置としての性能向上となる。
【００４６】
次に、基本的な構成の半導体記憶装置１に対して、ブロック制御テーブル部とブロック制御部とを設けた実施例３を説明する。
《実施例３》
図１１は、その構成を示すブロック図である。
この図１１において、３１は半導体記憶装置、２はこの半導体記憶装置３１が図示しないホストコンピュータと接続されるためのシステムバスである。また、半導体記憶装置３１は、インタフェース部３３、プロセッサ部３４、プロセッサメモリ部３５、フラッシュメモリ部３６、バッファ部３７、ブロック制御テーブル部３８、内部バス３９から構成されている。
【００４７】
また、この実施例３において、インタフェース部３３、プロセッサメモリ部３５、フラッシュメモリ部３６、バッファ部３７および内部バス３９の構成は、上記実施例１におけるインタフェース部１３、プロセッサメモリ部１５、フラッシュメモリ部１６、バッファ部１７および内部バス１８の構成と同様であるため、ここでの説明は省略する。
【００４８】
プロセッサ部３４は、上記実施例１、２と同様に、ホストコンピュータからのコマンドを解釈し、半導体記憶装置３１をディスク装置に見せるように制御し、フラッシュメモリ部３６およびバッファ部３７に対するデータ書換えの制御を行う部分である。また、このプロセッサ部３４は、ブロック制御部３４ａを備えている。このブロック制御部３４ａは、ホストコンピュータからのライト要求があった場合、ブロック制御テーブル部３８の内容に基づき、フラッシュメモリ部３６の該当ブロックにおいて、データが格納されている範囲以外の領域はバッファ部３７に退避させないようデータ転送制御を行う機能を備えているものである。
【００４９】
また、ブロック制御テーブル部３８は、次のように構成されている。
図１２は、ブロック制御テーブル部３８の説明図である。
ブロック制御テーブル部３８は、フラッシュメモリ部３６を構成しているＦＥＥＰＲＯＭの消去単位であるブロック単位で管理するよう構成されている。即ち、ブロックNo部３８ａ、先頭アドレス部３８ｂおよびデータ範囲部３８ｃとで構成されており、これらのブロックNo部３８ａ、先頭アドレス部３８ｂおよびデータ範囲部３８ｃは、フラッシュメモリ部３６のブロックに対応した数が設けられている。ここで、ブロックNo部３８ａの値１〜ｍは、フラッシュメモリ部３６の各ブロック１〜ｍに対応しており、先頭アドレス部３８ｂの値は、各ブロック内のデータ格納領域の先頭アドレスを示し、データ範囲部３８ｃの値は、先頭アドレスから、そのブロック内におけるデータ格納領域の最後のアドレスまでの範囲を示している。
【００５０】
例えば、図示状態のように、あるブロックｉには、データ格納領域がアドレスｉ１〜ｉ２とアドレスｉ３〜ｉ４の二つあるとした場合、ブロックNo部３８ａの「ｉ」の先頭アドレス部３８ｂは、データ格納領域ｉ１〜ｉ２の先頭アドレスであるアドレスｉ１であり、また、データ範囲部３８ｃの値は、アドレスｉ１からデータ格納領域ｉ３〜ｉ４の末尾アドレスｉ４までのデータ量ｄとなっている。
【００５１】
次に、上記実施例３の半導体記憶装置３１の動作を説明する。
［リード動作］
ここで、本実施例のリード動作は、基本的な構成の半導体記憶装置１の動作フローと同様である。即ち、その動作は図４に示したフローチャートと同様であるため、ここでの説明は省略する。
【００５２】
［ライト動作］
図１３および図１４はライト動作のフローチャートである。
ホストコンピュータがライト動作を要求する場合、半導体記憶装置３１に対し、ライトコマンド、ライトデータ数、先頭アドレスを発行する。
インタフェース部３３は、リード動作同様、インタフェース部３３内の図示しないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタに、これらライトコマンド、ライトデータ数、先頭アドレスをセットし、プロセッサ部３４に割り込みを上げる（ステップＳ５０１）。
【００５３】
プロセッサ部３４は、割り込みを受け付けると、コマンドレジスタをリードし、ホストコンピュータがライトコマンドを発行したことを認識する（ステップＳ５０２）。次に、プロセッサ部３４はデータ数レジスタと先頭アドレスレジスタをリードし、フラッシュメモリ部３６へ書込みを行う領域を知り（ステップＳ５０３）、フラッシュメモリ部３６内の該領域への上書きが可能か否かを判断する（ステップＳ５０４）。
尚、ここまでの動作は上記各実施例の動作と同様である。
【００５４】
ステップＳ５０４において、フラッシュメモリ部３６への上書きが不可能な場合、ブロック制御部３４ａは、ブロック制御テーブル部３８を参照し、先頭アドレス部３８ｂで示される先頭アドレスからデータ範囲部３８ｃで示されるデータ数分だけのフラッシュメモリ部３６内のデータをバッファ部３７に転送する（ステップＳ５０５）。
【００５５】
その後のステップＳ５０６〜Ｓ５０９の動作は、上記各実施例の動作と同様に、フラッシュメモリ部３６内の上書きが必要な領域が含まれる１ブロック分のデータを消去し（ステップＳ５０６）、更に、インタフェース部３３を介してホストコンピュータに割り込みを上げてデータを要求する。これにより、ホストコンピュータは、１ワードのデータをインタフェース部３３にライトする（ステップＳ５０８）。そして、プロセッサ部３４は、ホストコンピュータから送られてくるデータを、フラッシュメモリ部３６へ書込みを行う領域に合わせてバッファ部３７内の所定の領域に１ワードずつ書込む（ステップＳ５０８）。
【００５６】
そして、ホストコンピュータから必要なデータ数分のライト処理が終了したかを判定し（ステップＳ５０９）、終了した場合は、ブロック制御テーブル部３８に対して、ホストコンピュータからの書込み要求が未書込み領域に及んでいた場合は、先頭アドレス部３８ｂとデータ範囲部３８ｃの値を更新する（ステップＳ５１０）。
【００５７】
次に、ブロック制御テーブル部３８を参照し、先頭アドレス部３８ｂで示される先頭アドレスからデータ範囲部３８ｃで示されるデータ数分だけのバッファ部３７内のデータを転送し、フラッシュメモリ部３６内の該当ブロックに格納し（ステップＳ５１１）、プロセッサ部３４はホストコンピュータに対して終了を通知するため、割り込みをインタフェース部３３を介して上げる（ステップＳ５１２）。
【００５８】
また、ステップＳ５０３において、フラッシュメモリ部３６への上書きが可能な場合は、図１４に示すステップに進み、プロセッサ部３４はインタフェース部３３を介してホストコンピュータに割り込みを上げてデータを要求し、ホストコンピュータのライト処理が終了すると（ステップＳ５１３）、プロセッサ部３４はホストコンピュータから送られてきたデータをバッファ部３７を介さず直接フラッシュメモリ部３６に書込む（ステップＳ５１５）。
【００５９】
必要なデータ数がフラッシュメモリ部３６に書込まれると（ステップＳ５１５）、プロセッサ部３４のブロック制御部３４ａは、ブロック制御テーブル部３８に対して、ホストコンピュータからの書込み要求が未書込み領域に及んでいた場合は、先頭アドレス部６２とデータ範囲部６３を更新し（ステップＳ５１６）、プロセッサ部３４はホストコンピュータに対し、終了を通知するための割り込みをインタフェース部３３を介して行う（ステップＳ５１７）。
【００６０】
このように、実施例３によれば、ホストコンピュータからのライト要求時、該当ブロックにおけるデータ範囲のみを、フラッシュメモリ部３６からバッファ部３７へ退避させるようにしたので、不要な部分の転送処理を行うことがないことから、フラッシュメモリ部３６からバッファ部３７へのデータ転送量を少なくすることができ、従って、ライト動作時の高速化が図れ、装置としての性能向上となる。
【００６１】
次に、基本的な構成の半導体記憶装置１に対して、セクタ制御テーブル部とセクタ制御部とを設けた実施例４を説明する。
《実施例４》
図１５は、その構成を示すブロック図である。
この図１５において、４１は半導体記憶装置、２はこの半導体記憶装置４１が図示しないホストコンピュータと接続されるためのシステムバスである。また、半導体記憶装置４１は、インタフェース部４３、プロセッサ部４４、プロセッサメモリ部４５、フラッシュメモリ部４６、バッファ部４７、セクタ制御テーブル部４８、内部バス４９から構成されている。
【００６２】
また、この実施例４において、インタフェース部４３、プロセッサメモリ部４５、フラッシュメモリ部４６、バッファ部４７および内部バス４９の構成は、上記実施例１におけるインタフェース部１３、プロセッサメモリ部１５、フラッシュメモリ部１６、バッファ部１７および内部バス１８の構成と同様であるため、ここでの説明は省略する。
【００６３】
プロセッサ部４４は、上記各実施例と同様に、ホストコンピュータからのコマンドを解釈し、半導体記憶装置４１をディスク装置に見せるように制御し、フラッシュメモリ部４６およびバッファ部４７に対するデータ書換えの制御を行う部分である。また、このプロセッサ部４４は、セクタ制御部４４ａを備えている。このセクタ制御部４４ａは、ホストコンピュータからのライト要求があった場合、セクタ制御テーブル部４８の内容に基づき、フラッシュメモリ部４６の該当ブロックにおいて、データが格納されているセクタのデータのみバッファ部４７に退避させるようデータ転送制御を行う機能を備えているものである。
【００６４】
また、セクタ制御テーブル部４８は、次のように構成されている。
図１６は、セクタ制御テーブル部４８の説明図である。
セクタ制御テーブル部４８は、ホストコンピュータからのライト要求において最小のデータ数単位であるセクタで管理されており、各セクタに対応したバリッドビット部７２を有する。このバリッドビットは、該当するセクタにデータが書込まれている場合は“１”、該当するセクタにデータが書込まれていない場合は“０”にセットされる。また、セクタNo部７１は、フラッシュメモリ部４６の一つのブロック内のセクタに対応している。
【００６５】
次に、上記実施例４の半導体記憶装置４１の動作を説明する。
［リード動作］
ここで、本実施例のリード動作は、基本的な構成の半導体記憶装置１の動作フローと同様である。即ち、その動作は図４に示したフローチャートと同様であるため、ここでの説明は省略する。
【００６６】
［ライト動作］
図１７および図１８はライト動作のフローチャートである。
ホストコンピュータがライト動作を要求する場合、半導体記憶装置４１に対し、ライトコマンド、ライトデータ数、先頭アドレスを発行する。
インタフェース部４３は、リード動作同様、インタフェース部４３内の図示しないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタに、これらライトコマンド、ライトデータ数、先頭アドレスをセットし、プロセッサ部４４に割り込みを上げる（ステップＳ６０１）。
【００６７】
プロセッサ部４４は、割り込みを受け付けると、コマンドレジスタをリードし、ホストコンピュータがライトコマンドを発行したことを認識する（ステップＳ６０２）。次に、プロセッサ部４４はデータ数レジスタと先頭アドレスレジスタをリードし、フラッシュメモリ部４６へ書込みを行う領域を知り（ステップＳ６０３）、フラッシュメモリ部４６内の該領域への上書きが可能か否かを判断する（ステップＳ６０４）。
尚、ここまでの動作は上記各実施例の動作と同様である。
【００６８】
ステップＳ６０４において、フラッシュメモリ部４６への上書きが不可能な場合、セクタ制御部４４ａは、セクタ制御テーブル部４８における該当ブロックを参照し、バリットビットが“１”となっているセクタのデータだけを、フラッシュメモリ部４６からバッファ部４７に転送する（ステップＳ６０５）。
【００６９】
また、その後のステップＳ６０６〜Ｓ６０９の動作は、上記各実施例の動作と同様である。即ち、フラッシュメモリ部４６内の上書きが必要な領域が含まれる１ブロック分のデータを消去し（ステップＳ６０６）、更に、インタフェース部４３を介してホストコンピュータに割り込みを上げてデータを要求する。これにより、ホストコンピュータは、１ワードのデータをインタフェース部４３にライトする（ステップＳ６０８）。そして、プロセッサ部４４は、ホストコンピュータから送られてくるデータを、フラッシュメモリ部４６へ書込みを行う領域に合わせてバッファ部４７内の所定の領域に１ワードずつ書込む（ステップＳ６０８）。
【００７０】
そして、ホストコンピュータから必要なデータ数分のライト処理が終了したかを判定し（ステップＳ６０９）、終了した場合は、セクタ制御テーブル部４８に対して、ホストコンピュータからの書込み要求が未書込み領域（バリットビット部７２の値が“０”）に及んでいた場合は、そのバリットビット部７２の値を“１”に更新する。
【００７１】
次に、セクタ制御テーブル部４８を参照し、バッファ部４７内のデータおける、バリットビット部７２が“１”のセクタのデータだけを転送し、フラッシュメモリ部４６内の該当ブロックに格納し（ステップＳ６１１）、プロセッサ部４４はホストコンピュータに対して終了を通知するため、割り込みをインタフェース部４３を介して上げる（ステップＳ６１２）。
【００７２】
また、ステップＳ６０３において、フラッシュメモリ部４６への上書きが可能な場合は、図１８に示すステップに進み、プロセッサ部４４はインタフェース部４３を介してホストコンピュータに割り込みを上げてデータを要求し、ホストコンピュータのライト処理が終了すると（ステップＳ６１３）、プロセッサ部４４はホストコンピュータから送られてきたデータをバッファ部４７を介さず直接フラッシュメモリ部４６に書込む（ステップＳ６１５）。
【００７３】
必要なデータ数がフラッシュメモリ部４６に書込まれると（ステップＳ６１５）、プロセッサ部４４のセクタ制御部４４ａは、セクタ制御テーブル部４８に対して、ホストコンピュータからの書込み要求が未書込み領域に及んでいた場合は、バリットビット部７２の値を“１”に更新し（ステップＳ６１６）、プロセッサ部４４はホストコンピュータに対し、終了を通知するための割り込みをインタフェース部４３を介して行う（ステップＳ６１７）。
【００７４】
このように、実施例４によれば、フラッシュメモリ部４６のデータをセクタ単位で管理し、ホストコンピュータからのライト要求時、該当ブロックにおけるデータの書込まれているセクタのみを、フラッシュメモリ部４６からバッファ部４７へ退避させるようにしたので、不要な部分の転送処理を行うことがないことから、フラッシュメモリ部４６からバッファ部４７へのデータ転送量を少なくすることができ、従って、ライト動作時の高速化が図れ、装置としての性能向上となる。
【００７５】
次に、プロセッサ部がインタフェース部からライトデータをリードしている間に、フラッシュメモリ部からバッファ部へデータを退避させるようにした実施例５を説明する。
《実施例５》
図１９は、その構成を示すブロック図である。
この図１９において、５１は半導体記憶装置、２は半導体記憶装置５１が図示しないホストコンピュータと接続されるためのシステムバスである。また、半導体記憶装置５１は、インタフェース部５３、プロセッサ部５４、プロセッサメモリ部５５、フラッシュメモリ部５６、バッファ部５７、内部バス５８ａ、メモリバス５８ｂ、メモリ管理部５９から構成されている。
【００７６】
また、この実施例５において、インタフェース部５３、プロセッサメモリ部５５、フラッシュメモリ部５６、バッファ部５７および内部バス５８ａの構成は、上記実施例１におけるインタフェース部１３、プロセッサメモリ部１５、フラッシュメモリ部１６、バッファ部１７および内部バス１８の構成と同様であるため、ここでの説明は省略する。
プロセッサ部５４は、上記各実施例と同様に、ホストコンピュータからのコマンドを解釈し、半導体記憶装置５１をディスク装置に見せるように制御すると共に、メモリ管理部５９に対して、フラッシュメモリ部４６およびバッファ部４７に対するデータ書換えの制御指示を行う部分である。
【００７７】
メモリ管理部５９は、内部バス５８ａを介してインタフェース部５３、プロセッサ部５４およびプロセッサメモリ部５５と接続されると共に、内部バス５８ａとは異なるバスであるメモリバス５８ｂを介してフラッシュメモリ部５６とバッファ部５７とに接続されている。このメモリ管理部５９は、プロセッサ部５４からのライトデータをバッファ部５７やフラッシュメモリ部５６に転送制御すると共に、プロセッサ部５４がインタフェース部５３からライトデータを読み取っている間に、メモリバス５８ｂを介してフラッシュメモリ部５６からバッファ部５７にデータ転送を行う機能を有している。
【００７８】
図２０は、上記メモリ管理部５９の内部構成を示すブロック図である。
メモリ管理部５９は、メモリリード回路１０２、メモリライト回路１０３、メモリ・バッファコピー回路１０４、バッファリード回路１０５、バッファライト回路１０６、および、これらメモリリード回路１０２〜バッファライト回路１０６を制御する制御回路１０１からなる。
【００７９】
このような構成において、先ず、半導体記憶装置５１がリード動作を行う場合は、メモリリード回路１０２が動作し、プロセッサ部５４からの要求に合わせてフラッシュメモリ部５６から内部バス５８ａ側にデータを転送する。つまり、プロセッサ部５４からは、フラッシュメモリ部５６が内部バス５８ａに直結しているように見える。
【００８０】
次に、半導体記憶装置がライト動作を行う場合、ライト要求された領域への上書きが不可能な時は、プロセッサ部５４がインタフェース部５３よりバッファ部５７へデータを転送する。これは、プロセッサ部５４がインタフェース部５３よりデータをリードする動作と、プロセッサ部５４がバッファ部５７へデータをライトする動作からなる。
メモリ管理部５９は、予め、フラッシュメモリ部５６内のデータをバッファ部５７に転送する命令をプロセッサ部５４から受ける。プロセッサ部５４がインタフェース部５３よりデータをリードする時には、制御回路１０１は、メモリ・バッファコピー回路１０４を動作させ、順次フラッシュメモリ部５６からバッファ部５７へメモリバス５８ｂを介してデータを転送する。
【００８１】
また、プロセッサ部５４がインタフェース部５３から読み出したデータをバッファ部５７へライトする時には、制御回路１０１は、バッファライト回路１０６を動作させ、バッファ部５７にデータを転送する。これにより、インタフェース部５３からバッファ部５７へのデータ転送と、フラッシュメモリ部５６からバッファ部５７へのデータ転送とを同時に実行することができる。
【００８２】
また、バッファ部５７からフラッシュメモリ部５６へのデータ転送時には、メモリライト回路１０３とバッファリード回路１０５を、プロセッサ部５４からの要求に合わせて動作させ、バッファ部５７からフラッシュメモリ部５６へデータを転送する。
更に、半導体記憶装置５１がライト動作を行う場合、ライト要求された領域への上書きが可能な場合には、メモリライト回路１０３を動作させ、プロセッサ部５４がインタフェース部５３より転送してくるデータをフラッシュメモリ部５６へ転送する。つまり、この場合、プロセッサ部５４からは、フラッシュメモリ部５６が内部バス５８ａに直結しているように見える。
【００８３】
次に、上記実施例５のメモリ制御方法である半導体記憶装置５１の動作について説明する。
［リード動作］
本実施例のリード動作は、メモリ管理部５９が、内部バス５８ａとフラッシュメモリ部５６とが直接接続されているように見せかけるため、基本的な構成の半導体記憶装置１の動作フローと同様である。即ち、その動作は図４に示したフローチャートと同様であるため、ここでの説明は省略する。
【００８４】
［ライト動作］
図２１はライト動作のフローチャートである。
ホストコンピュータが、半導体記憶装置５１に対しライト要求する場合、リード動作と同様に、半導体記憶装置５１へライトコマンド、ライトデータ数、先頭アドレスを送る（ステップＳ７０１）。
【００８５】
インタフェース部５３は、前記のライトコマンド、ライトデータ数、先頭アドレスを、インタフェース部５３内の図示されていないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタにセットする。また、プロセッサ部５４にホストコンピュータからコマンドがきたことを知らせる。プロセッサ部５４は、コマンドレジスタをリードし、ホストコンピュータがライト要求してきたことを認識する（ステップＳ７０２）。また、データ数レジスタと先頭アドレスレジスタをリードし、フラッシュメモリ部５６内のどの領域がライト要求されたかを認識し（ステップＳ７０３）、その領域への上書きが可能か否かを判断する（ステップＳ７０４）。
【００８６】
フラッシュメモリ部５６内のライト要求された領域への上書きが不可能な場合は、プロセッサ部５４は、インタフェース部５３を介してホストコンピュータへデータを転送する許可を出す。通知を受けたホストコンピュータは、半導体記憶装置５１へデータ転送を開始する（ステップＳ７０５）。
尚、以上の動作は、上記各実施例のライト動作と同様である。
【００８７】
半導体記憶装置５１は、ホストコンピュータからのデータをシステムバス１２を介し、インタフェース部５３で受け取る。プロセッサ部５４は、メモリ管理部５９に対し、フラッシュメモリ部５６内のライト要求された領域が含まれる１ブロック内の全てのデータを、バッファ部５７に転送する命令を出す。これにより、メモリ管理部５９は、フラッシュメモリ部５６から、ライト要求された領域を含むブロックのデータをバッファ部５７へ転送する。一方、メモリ管理部５９によるデータ転送を行っている間、プロセッサ部５４は、インタフェース部５３の１ワードのデータを読み取る（ステップＳ７０６）。
【００８８】
そして、プロセッサ部５４が、ホストコンピュータから送られてきたデータを、１ワードずつメモリ管理部５９へ転送する。メモリ管理部５９は、プロセッサ部５４によってインタフェース部５３から転送されてくるデータをライト要求された領域に対応するバッファ部５７内の領域へ転送する（ステップＳ７０７）。
【００８９】
このような動作を繰り返すことによって、要求されたデータ数を転送したか否かをプロセッサ部５４が監視し（ステップＳ７０８）、必要なデータ数をホストコンピュータから転送し終えると、フラッシュメモリ部５６内のライト要求された領域が含まれるブロックを消去する（ステップＳ７０９）。
その後、バッファ部５７のライト要求された領域を含むブロックのデータを、フラッシュメモリ部５６内の該当ブロックに転送する（ステップＳ７１０）。そして、プロセッサ部５４は、インタフェース部５３を介してホストコンピュータへライト動作の終了を通知する（ステップＳ７１１）。
ホストコンピュータは、終了通知を受け、ライト動作を終了する。
【００９０】
一方、フラッシュメモリ部５６内のライト要求された領域への上書きが可能な場合の本実施例のライト動作は、メモリ管理部５９が内部バス５８とフラッシュメモリ部５６が直接接続されているように見せかけるため、基本的な構成の半導体記憶装置のライト動作と同様である。即ち、図６に示すステップに進むため、その動作については、説明を省略する。
【００９１】
このように、実施例５によれば、プロセッサ部５４によるインタフェース部５３からのライトデータのリード動作と、メモリ管理部５９によるフラッシュメモリ部５６からバッファ部５７へのデータ転送を同時に行うようにしたので、ライト動作時における処理時間が短縮され、装置としての性能向上となる。
【００９２】
次に、プロセッサ部がバッファ部にライトデータを転送している間にフラッシュメモリ部の該当ブロックの消去を行うようにした実施例６を説明する。
《実施例６》
図２２は、その構成を示すブロック図である。
図において、６１は半導体記憶装置、２は半導体記憶装置６１を接続するホストコンピュータのシステムバスである。半導体記憶装置６１は、インタフェース部６３、プロセッサ部６４、プロセッサメモリ部６５、フラッシュメモリ部６６、バッファ部６７、内部バス６８、メモリ消去制御部６９から構成される。
【００９３】
また、この実施例６において、インタフェース部６３、プロセッサメモリ部６５、フラッシュメモリ部６６、バッファ部６７および内部バス６８の構成は、上記実施例１におけるインタフェース部１３、プロセッサメモリ部１５、フラッシュメモリ部１６、バッファ部１７および内部バス１８の構成と同様であるため、ここでの説明は省略する。
【００９４】
プロセッサ部６４は、上記各実施例と同様に、ホストコンピュータからのコマンドを解釈し、半導体記憶装置６１をディスク装置に見せるように制御すると共に、メモリ消去制御部６９に対して、フラッシュメモリ部４６の該当ブロックの消去指示を行う部分である。
メモリ消去制御部６９は、プロセッサ部６４より命令を受けて、フラッシュメモリ部６６の消去を開始し、その状態を監視する機能を有するものである。また、消去の終了や異常発生等はプロセッサ部６４がメモリ消去制御部６９内の図示しないステータスレジスタをリードすることにより行う。
【００９５】
次に、上記実施例６のメモリ制御方法である半導体記憶装置６１の動作について説明する。
［リード動作］
本実施例のリード動作は、基本的な構成の半導体記憶装置１の動作フローと同様である。即ち、その動作は図４に示したフローチャートと同様であるため、ここでの説明は省略する。
【００９６】
［ライト動作］
図２３はライト動作のフローチャートである。
ホストコンピュータが、半導体記憶装置６１に対しライト要求する場合、リード動作と同様に、半導体記憶装置６１へライトコマンド、ライトデータ数、先頭アドレスを送る（ステップＳ８０１）。
【００９７】
インタフェース部６３は、前記のライトコマンド、ライトデータ数、先頭アドレスを、インタフェース部６３内の図示されていないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタにセットする。また、プロセッサ部６４にホストコンピュータからコマンドがきたことを知らせる。プロセッサ部６４は、コマンドレジスタをリードし、ホストコンピュータがライト要求してきたことを認識する（ステップＳ８０２）。また、データ数レジスタと先頭アドレスレジスタをリードし、フラッシュメモリ部６６内のどの領域がライト要求されたかを認識し（ステップＳ８０３）、その領域への上書きが可能か否かを判断する（ステップＳ８０４）。
尚、ここまでの動作は、上記各実施例のライト動作と同様である。
【００９８】
フラッシュメモリ部６６内のライト要求された領域への上書きが不可能な場合、プロセッサ部６４は、フラッシュメモリ部６６内のライト要求された領域が含まれる１ブロック内の全てのデータを、バッファ部６７に転送する（ステップＳ８０５）。
そして、フラッシュメモリ部６６内のライト要求された領域が含まれるブロック内の全てのデータの転送を終えると、プロセッサ部６４は、そのブロックを消去する命令をメモリ消去制御部６９に発行する（ステップＳ８０６）。
これにより、メモリ消去制御部６９は、フラッシュメモリ部６６の消去動作を行い、フラッシュメモリ部６９は該当ブロックの消去動作を実行する。
【００９９】
一方、プロセッサ部６４は、インタフェース部６３を介してホストコンピュータへ書込むデータを転送する許可を出す。通知を受けたホストコンピュータは、半導体記憶装置６１へデータ転送を開始する（ステップＳ８０７）。半導体記憶装置６１は、ホストコンピュータからのデータをシステムバス２を介し、インタフェース部６３で受け取る。プロセッサ部６４は、ホストコンピュータから送られてきたデータを、インタフェース部６３からライト要求された領域に対応するバッファ部６７内の領域へ転送する（ステップＳ８０８）。そして、この動作を、必要なデータ数をホストコンピュータから転送し終えるまで繰り返す。
【０１００】
必要なデータ数をホストコンピュータから転送し終えると（ステップＳ８０９）、プロセッサ部６４は、フラッシュメモリ部６６内のライト要求された領域を含むブロックが消去されたかメモリ消去制御部６９に確認する（ステップＳ８１０）。
【０１０１】
尚、フラッシュメモリ部６９は、その消去が終了すると、消去フラグをセットするようになっており、メモリ消去制御部６９は、ある一定間隔でこのフラグの確認を行うことによって、フラッシュメモリ部６９の該当ブロックが消去されたかどうかを確認するものである。
【０１０２】
上記ステップＳ８１０において、消去が終了していなければ、終了するまで待つ。消去が完了していれば、バッファ部６７のライト要求された領域を含むブロックのデータを、フラッシュメモリ部６６内の該当ブロックに転送する（ステップＳ８１１）。プロセッサ部６４は、インタフェース部６３を介してホストコンピュータへライト動作の終了を通知する（ステップＳ８１２）。
ホストコンピュータは、終了通知を受け、ライト動作を終了する。
【０１０３】
一方、フラッシュメモリ部６６内のライト要求された領域への上書きが可能な場合の本実施例のライト動作は、基本的な構成の半導体記憶装置のライト動作と同様である。即ち、図６に示すステップに進むため、その動作については、説明を省略する。
【０１０４】
このように、実施例６によれば、プロセッサ部６４からバッファ部６７へのデータ転送動作中に、フラッシュメモリ部６６におけるライト要求されたデータを含むブロックの消去動作を実行するようにしたので、ライト動作時における処理時間が短縮され、装置としての性能向上となる。
【０１０５】
【発明の効果】
以上、詳細に説明したように、本発明の半導体記憶装置とメモリ制御方法によれば、フラッシュメモリ部のデータ書換えを行う場合に、バッファ部への転送制御やフラッシュメモリ部のブロック消去制御を行うようにしたので、データ書換え時の動作を高速化することができ、従って、半導体記憶装置としての性能向上を図ることができる。
【図面の簡単な説明】
【図１】本発明の半導体記憶装置における実施例１のブロック図である。
【図２】半導体記憶装置の基本的な構成を示すブロック図である。
【図３】半導体記憶装置のフラッシュメモリ部とバッファ部の容量の関係説明図である。
【図４】半導体記憶装置のリード動作を示すフローチャートである。
【図５】半導体記憶装置のライト動作を示すフローチャート（その１）である。
【図６】半導体記憶装置のライト動作を示すフローチャート（その２）である。
【図７】本発明の半導体記憶装置における実施例１のライト動作を示すフローチャートである。
【図８】本発明の半導体記憶装置における実施例２の構成を示すブロック図である。
【図９】本発明の半導体記憶装置における実施例２のライト動作を示すフローチャートである。
【図１０】本発明の半導体記憶装置における実施例２のデータ転送動作の説明図である。
【図１１】本発明の半導体記憶装置における実施例３の構成を示すブロック図である。
【図１２】本発明の半導体記憶装置における実施例３のブロック制御テーブル部の説明図である。
【図１３】本発明の半導体記憶装置における実施例３のライト動作を示すフローチャート（その１）である。
【図１４】本発明の半導体記憶装置における実施例３のライト動作を示すフローチャート（その２）である。
【図１５】本発明の半導体記憶装置における実施例４の構成を示すブロック図である。
【図１６】本発明の半導体記憶装置における実施例４のセクタ制御テーブル部の説明図である。
【図１７】本発明の半導体記憶装置における実施例４のライト動作を示すフローチャート（その１）である。
【図１８】本発明の半導体記憶装置における実施例４のライト動作を示すフローチャート（その２）である。
【図１９】本発明の半導体記憶装置における実施例５の構成を示すブロック図である。
【図２０】本発明の半導体記憶装置における実施例５のメモリ管理部のブロック図である。
【図２１】本発明の半導体記憶装置における実施例５のライト動作を示すフローチャートである。
【図２２】本発明の半導体記憶装置における実施例６の構成を示すブロック図である。
【図２３】本発明の半導体記憶装置における実施例６のライト動作を示すフローチャートである。
【符号の説明】
１１、２１、３１、４１、５１、６１  半導体記憶装置
１３、２３、３３、４３、５３、６３  インタフェース部
１４、２４、３４、４４、５４、６４  プロセッサ部
１４ａ  転送制御部
１６、２６、３６、４６、５６、６６  フラッシュメモリ部
１７、２７、３７、４７、５７、６７  バッファ部
１８、２８、３９、４８、５８ａ、６８  内部バス
２４ａ  転送データ管理部
３４ａ  ブロック制御部
３８  ブロック制御テーブル部
４４ａ  セクタ制御部
４８  セクタ制御テーブル部
５８ｂ  メモリバス
６９  メモリ消去制御部
【図１】
0003539752.tif 000002
【図２】
0003539752.tif 000003
【図３】
0003539752.tif 000004
【図８】
0003539752.tif 000005
【図４】
0003539752.tif 000006
【図５】
0003539752.tif 000007
【図６】
0003539752.tif 000008
【図７】
0003539752.tif 000009
【図９】
0003539752.tif 000010
【図１０】
0003539752.tif 000011
【図１１】
0003539752.tif 000012
【図１２】
0003539752.tif 000013
【図１３】
0003539752.tif 000014
【図１４】
0003539752.tif 000015
【図１５】
0003539752.tif 000016
【図１９】
0003539752.tif 000017
【図１６】
0003539752.tif 000018
【図１７】
0003539752.tif 000019
【図１８】
0003539752.tif 000020
【図２０】
0003539752.tif 000021
【図２１】
0003539752.tif 000022
【図２２】
0003539752.tif 000023
【図２３】
0003539752.tif 000024