JP3539752B2 - 半導体記憶装置とメモリ制御方法 - Google Patents
半導体記憶装置とメモリ制御方法 Download PDFInfo
- Publication number
- JP3539752B2 JP3539752B2 JP05665594A JP5665594A JP3539752B2 JP 3539752 B2 JP3539752 B2 JP 3539752B2 JP 05665594 A JP05665594 A JP 05665594A JP 5665594 A JP5665594 A JP 5665594A JP 3539752 B2 JP3539752 B2 JP 3539752B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- unit
- block
- flash memory
- write
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
Description
【0001】
【産業上の利用分野】
本発明は、フラッシュメモリを用いた半導体記憶装置に関し、特にそのデータ書換え制御に関するものである。
【0002】
【従来の技術】
近年、不揮発性メモリチップとして、フラッシュメモリ、即ちフラッシュEEPROM(FEEPROM)が実用化されるようになり、このチップを使用した半導体ディスク装置の開発が盛んに行われている。
このフラッシュメモリとは、EEPROM(電気的消去、再書込み可能リード・オンリ・メモリ)の一種であり、電気的に消去ができ、かつ、バイト毎にプログラム書込みができ、また電源を必要とせず、メモリの内容が保証できるという長所を持つ。
【0003】
【発明が解決しようとする課題】
しかしながら、上記の長所とは逆に、次のような短所を有している。
即ち、メモリへの書込みの際に、上書きができないため、一旦消去してからバイト毎に書込み(データを書換える)を行う必要がある。なお、ここで消去する単位は、チップによって異なるが、チップ単位に消去を行うものが主流である。
フラッシュメモリを用いた半導体記憶装置は、上記のようなフラッシュメモリのデータ書換え時に、そのメモリ部のデータを必ず消去しなければならないといった特性のため、半導体記憶装置の特長である高速アクセスの妨げとなっており、このような、データ書換え時の性能向上を図ることのできる半導体記憶装置の実現が望まれていた。
【0004】
【課題を解決するための手段】
本発明は、データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、前記ライトデータの書込みに必要なデータ領域と前記ブロックのデータ領域とを比較し、前記ライトデータのデータ領域が該ブロックのそれより小さいと、該ブロックの全データを前記バッファ部に転送して該バッファ部上のデータを前記ライトデータに書換え、前記ライトデータのデータ領域が前記ブロックのそれと一致すると、該ブロックのデータを前記バッファ部に転送せずに該バッファ部に前記ライトデータを直接書込み、前記フラッシュメモリ部のデータの消去後の前記ブロックに、前記バッファ部の全データを書込む転送制御部を更に備えることを特徴とする半導体記憶装置。
他の発明は、データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、前記ブロックの前記ライトデータによる書換えるべき領域を判定し、該ブロックの前記判定した領域以外の領域のデータを前記バッファ部に転送して該バッファ部上の前記書換えるべき領域に対応する領域に前記ライトデータを書込み、前記フラッシュメモリ部のデータの消去後の前記ブロックに、前記バッファ部の全データを書込む転送データ管理部を更に備えることを特徴とする半導体記憶装置。
また、他の発明は、データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、前記フラッシュメモリ部の各ブロック毎にデータの書込領域を示す領域指示データが格納されているブロック制御テーブル部と、該ブロック制御テーブル部の書換え対象のブロックの前記領域指示データに基づいて該ブロックの前記書込領域のデータを前記バッファ部に転送して該バッファ部上のデータを前記ライトデータにより書換え、前記フラッシュメモリ部のデータの消去後の前記ブロックに前記バッファ部のデータを書込むと共に前記ライトデータの書換えにより該ブロックの前記書込領域が変化すると前記ブロック制御テーブル部の対応するブロックの領域指示データを変化した書込領域を示す領域指示データに更新するブロック制御部とを含むことを特徴とする半導体記憶装置。
【0005】
更に他の発明は、データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、前記フラッシュメモリ部の各ブロック毎に、書込領域を分けた各セクタに対しデータの有無を示すデータ有無指示データが格納されているセクタ制御テーブル部と、該セクタ制御テーブル部の書換え対象のブロックの前記データ有無指示データに基づいて該ブロックのデータを有するセクタのデータのみを前記バッファ部に転送して該バッファ部上のデータを前記ライトデータにより書換えると共に該書換えにより新たにデータの書込まれたセクタが生じると前記セクタ制御テーブル部の対応するセクタのデータ有無指示データをデータ有りとして更新し、更新後の前記セクタ制御テーブル部のデータ有無指示データに基づいて前記バッファ部上のデータを転送して前記フラッシュメモリ部のデータの消去後の前記ブロックに書込むセクタ制御部とを含むことを特徴とする半導体記憶装置。
また、他の発明は、データがブロック単位で消去可能に書込まれているフラッシュメモリ部に対し書換え対象のブロックのデータをバッファ部に転送し、該バッファ部のデータをホストから受信したライトデータ群より書換え、該書換えたバッファ部のデータを前記フラッシュメモリ部のデータの消去後の前記ブロックに書込むメモリ制御方法であって、前記ホストから現在のライトデータを受信して次のライトデータを受信するまでの間に、前記フラッシュメモリ部の前記ブロックのデータを前記バッファ部に転送し、かつ該バッファ部に前記現在のライトデータを書換えのために転送することを特徴とするメモリ制御方法。
また、更に他の発明は、データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、前記ホストからライトデータを受信する毎に該ライトデータを格納するインタフェース部と、前記インタフェース部に格納されたライトデータを読み取って、当該ライトデータにより前記バッファ部のデータを書換えると共に、前記フラッシュメモリ部のデータ消去後のブロックに前記バッファ部上のデータを書戻すプロセッサ部と、前記プロセッサ部と前記インタフェース部とを接続する内部バスとは異なるバスによって、前記フラッシュメモリ部と前記バッファ部とのデータ転送動作を制御し、前記プロセッサ部が前記インタフェース部からライトデータを読み込んでいる間に、前記フラッシュメモリ部のブロックのデータを前記バッファ部に転送するメモリ管理部とを備えたことを特徴とする半導体記憶装置。
【0006】
【実施例】
以下、本発明の実施例を図面を用いて詳細に説明する。
図1は、本発明の半導体記憶装置における実施例1を示すブロック図であるが、この説明に先立ち、基本的な半導体記憶装置の構成および動作を説明する。
【0007】
《基本的な半導体記憶装置の構成》
図2は、フラッシュメモリ(FEEPROM)を用いた半導体記憶装置のブロック図を示す。
図において、1は半導体記憶装置(不揮発性半導体ディスク装置)、2はこの半導体記憶装置1を接続するホストコンピュータ(図示省略)のシステムバスである。
半導体記憶装置1は、インタフェース部3、プロセッサ部4、プロセッサメモリ部5、フラッシュメモリ部6、バッファ部7、内部バス8から構成されている。
【0008】
インタフェース部3は、ホストコンピュータとのインタフェース制御を行う部分である。プロセッサ部4は、ホストコンピュータからのコマンドを解釈し、半導体記憶装置1を磁気ディスク装置と同様に見せるように制御し、フラッシュメモリ部6およびバッファ部7に対するデータ書換えの制御を行う機能を備えている。また、プロセッサメモリ部5は、プロセッサ部4が実行するプログラムが格納されているメモリである。
【0009】
フラッシュメモリ部6は、半導体記憶装置1の記憶媒体であり、フラッシュメモリ(FEEPROM)で構成されている。バッファ部7は、フラッシュメモリ部6内の1ブロックのデータを書換えるために消去する場合、データを一時的に退避させておくためのメモリであり、1ブロック分の容量を持つ。尚、ここで、1ブロックとは、消去する最低の単位を指している。
【0010】
図3は、このようなフラッシュメモリ部6とバッファ部7との関係を示す説明図である。
即ち、フラッシュメモリ部6は、1〜m個のブロックから構成され、バッファ部7は、その一つ分のブロックの容量となっている。
【0011】
また、図2に示す内部バス8は、半導体記憶装置1内の構成要素を接続するためのバスである。
【0012】
次に、上記の半導体記憶装置1の動作について説明する。
半導体記憶装置1の動作は、大きく分けてホストコンピュータが半導体記憶装置1からデータを読み出すリードと、ホストコンピュータが半導体記憶装置1へデータを書込むライトがある。
【0013】
[リード動作]
図4は、上記半導体記憶装置1のリード動作を示したフローチャートである。
図示しないホストコンピュータは、半導体記憶装置1に対してリード要求を行う場合は、システムバス2を介して半導体記憶装置1へ、リードコマンド、リードデータ数、先頭アドレスを送る。
【0014】
半導体記憶装置1は、ホストコンピュータからの情報をシステムバス2を介し、インタフェース部3で受け取る。インタフェース部3は、上記のリードコマンド、リードデータ数、先頭アドレスを、インタフェース部3内の図示しないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタにセットする。また、ホストコンピュータより情報がきたことを、プロセッサ部4に通知する(ステップS101)。
【0015】
プロセッサ部4は、コマンドレジスタをリードして、ホストコンピュータがリード要求したことを認識する(ステップS102)。また、データ数レジスタと先頭アドレスレジスタをリードして、フラッシュメモリ部6内のどの領域がリード要求されたかを認識する(ステップ103)。
次に、プロセッサ部4は、フラッシュメモリ部6内のリード要求された領域から、1ワードのデータをリードし、インタフェース部3へデータ転送を開始する(ステップS104)。インタフェース部3は、ホストコンピュータにデータが転送できることを通知し、この通知を受けたホストコンピュータは、システムバス2を介して、インタフェース部3よりデータを読み出す(ステップS105)。このようにして、リード要求された領域からデータ転送を繰り返す。
【0016】
必要なデータ数をホストコンピュータに転送し終えると(ステップS106)、プロセッサ部4は、インタフェース部3を介してリード動作の終了をホストコンピュータへ通知する(ステップS107)。
ホストコンピュータは、終了通知を受け、リード動作を終了する。
【0017】
[ライト動作]
図5、6は、上記半導体記憶装置1におけるライト動作を示したフローチャートである。
ホストコンピュータが半導体記憶装置1に対してライト要求を行う場合は、上述したリード動作と同様に、半導体記憶装置1に、ライトコマンド、ライトデータ数、先頭アドレスを送る。
【0018】
インタフェース部3は、上記のライトコマンド、ライトデータ数、先頭アドレスをインタフェース部3内の図示されていないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタにセットする。また、インタフェース部3は、プロセッサ部4にホストコンピュータからコマンドがきたことを知らせる(ステップS201)。
プロセッサ部4は、コマンドレジスタをリードし、ホストコンピュータがライト要求してきたことを認識する(ステップS202)。また、データ数レジスタと先頭アドレスレジスタをリードし、フラッシュメモリ部6内のどの領域がライト要求されたかを認識し(ステップS203)、その領域への上書きが可能か否かを判断する(ステップS204)。
【0019】
フラッシュメモリ部6内のライト要求された領域への上書きが不可能な場合、プロセッサ部4は、フラッシュメモリ部6内のライト要求された領域が含まれる1ブロック内の全てのデータをバッファ部7に転送する(ステップS205)。そして、フラッシュメモリ部6内のライト要求された領域が含まれるブロック内の全てのデータの転送を終えると、そのブロックを消去する(ステップS206)。
【0020】
次に、プロセッサ部4は、インタフェース部3を介してホストコンピュータへ書込むデータを転送する許可を出す。通知を受けたホストコンピュータは、半導体記憶装置1へ1ワードずつデータ転送を開始する(ステップS207)。
半導体記憶装置1は、ホストコンピュータからのデータをシステムバス2を介し、インタフェース部3で受け取る。プロセッサ部4は、ホストコンピュータから送られてきたデータを、インタフェース部3からライト要求された領域に対応するバッファ部7内の領域へ1ワードずつ転送する(ステップS208)。そして、この必要なデータ数をホストコンピュータから転送し終えるまで繰り返す。
【0021】
必要なデータ数をホストコンピュータから転送し終えると(ステップS209)、バッファ部7のライト要求された領域を含むブロックのデータを、フラッシュメモリ部6内のライト要求された領域を含むブロックに転送する(ステップS210)。
プロセッサ部4は、インタフェース部3を介してホストコンピュータへライト動作の終了を通知する(ステップS211)。
これにより、ホストコンピュータは、終了通知を受け、ライト動作を終了する。
【0022】
また、上記ステップS204において、フラッシュメモリ部6内のライト要求された領域への上書きが可能な場合、プロセッサ部4は、インタフェース部3を介してホストコンピュータに書込むデータの転送する許可を出す。通知を受けたホストコンピュータは、半導体記憶装置1へデータ転送を開始する(ステップS212)。プロセッサ部4は、ホストコンピュータから送られてきたデータを、インタフェース部3からフラッシュメモリ部6のライト要求された領域に対応する領域へ転送する(ステップS213)。そして、この転送動作を、必要なデータ数をホストコンピュータから転送し終えるまで繰り返す。
【0023】
必要なデータ数をホストコンピュータから転送し終えると(ステップS214)、プロセッサ部4は、インタフェース部3を介してホストコンピュータへライト動作の終了を通知する(ステップS211)。
そして、ホストコンピュータは、終了通知を受け、ライト動作を終了する。
【0024】
次に、このような半導体記憶装置1に対して、転送制御部を設けた実施例1を図1を用いて説明する。
《実施例1》
図1において、11は半導体記憶装置、2はこの半導体記憶装置11が図示しないホストコンピュータと接続されるためのシステムバスである。また、半導体記憶装置11は、インタフェース部13、プロセッサ部14、プロセッサメモリ部15、フラッシュメモリ部16、バッファ部17、内部バス18から構成されている。
【0025】
インタフェース部13は、上述した構成の半導体記憶装置1におけるインタフェース部3と同様に、ホストコンピュータとのインタフェース制御を行う部分である。
【0026】
プロセッサ部14は、ホストコンピュータからのコマンドを解釈し、半導体記憶装置11をディスク装置に見せるように制御し、フラッシュメモリ部16およびバッファ部17に対するデータ書換えの制御を行う部分であり、転送制御部14aを備えている。この転送制御部14aは、ホストコンピュータからのライトデータが、フラッシュメモリ部16の1ブロック分なかった場合は、そのデータを含むブロックをフラッシュメモリ部16からバッファ部17へ転送して、バッファ部17上で書換えを行い、フラッシュメモリ部16の該当ブロックの消去を行った後、バッファ部17上で書換えた1ブロック分のデータを書戻し、かつ、ホストコンピュータからのライトデータが、1ブロック分あった場合は、そのブロック分のデータをフラッシュメモリ部16からバッファ部17へ転送せず、フラッシュメモリ部16の該当ブロックの消去を行った後、ライトデータを直接書込む機能を備えているものである。
【0027】
また、プロセッサメモリ部15〜バッファ部17の構成は、上記半導体記憶装置におけるプロセッサメモリ部5〜バッファ部7の構成と同様であるため、ここでの説明は省略する。尚、フラッシュメモリ部16とバッファ部17の容量は、図3で示したように構成されている。
【0028】
次に、上記実施例1の半導体記憶装置11の動作を説明する。
[リード動作]
ここで、本実施例のリード動作は、上記半導体記憶装置1の動作フローと同様である。即ち、その動作は図4に示したフローチャートと同様であるため、ここでの説明は省略する。
【0029】
[ライト動作]
図7はライト動作のフローチャートである。
ホストコンピュータがライト動作を要求する場合、半導体記憶装置11に対し、ライトコマンド、ライトデータ数、先頭アドレスを発行する。
インタフェース部13は、リード動作同様、インタフェース部13内の図示しないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタに、これらライトコマンド、ライトデータ数、先頭アドレスをセットし、プロセッサ部14に割り込みを上げる(ステップS301)。
【0030】
プロセッサ部14の転送制御部14aは、割り込みを受け付けると、コマンドレジスタをリードし、ホストコンピュータがライトコマンドを発行したことを認識する(ステップS302)。次に、転送制御部14aはデータ数レジスタと先頭アドレスレジスタをリードし、フラッシュメモリ部16へ書込みを行う領域を知り(ステップS303)、フラッシュメモリ部16内の該領域への上書きが可能か否か、即ち、ライトする領域が未使用か否かを判断する(ステップS304)。
【0031】
ステップS304において、フラッシュメモリ部16への上書きが不可能な場合は、ステップS305へ進み、フラッシュメモリ部16へ書込みを行うライトデータ領域が1ブロック分であり、かつ、その1ブロック分がフラッシュメモリ部16のブロックに対応しているか否かを転送制御部14aは判断する。
ステップS305において、フラッシュメモリ部16へ書込みを行うライトデータ領域が1ブロック分でない、または、1ブロック分であるがその1ブロック分がフラッシュメモリ部16のブロックに対応していない場合は、ステップS306へ進み、フラッシュメモリ部16内の上書きが必要な領域が含まれる1ブロック分のデータを転送し、バッファ部17に格納する。そして、このデータ転送後、フラッシュメモリ部16内の上書きが必要な領域が含まれるブロック分のデータを消去する(ステップS307)。
【0032】
また、ステップS305において、フラッシュメモリ部16へ書込みを行うライトデータ領域が1ブロック分であり、かつ、その1ブロックがフラッシュメモリ部16のブロックに対応している場合は、フラッシュメモリ部16内の該当ブロックのデータを転送せず、そのまま、ステップS307に進んで、フラッシュメモリ部16内の上書きが必要な領域が含まれる1ブロック分のデータを消去する。
【0033】
その後は、上述した半導体記憶装置1のライト動作と同様に、プロセッサ部14が、インタフェース部13を介してホストコンピュータへ書込むデータを転送する許可を出し、通知を受けたホストコンピュータは、半導体記憶装置11へ1ワードずつデータ転送を開始する(ステップS308)。
半導体記憶装置11は、ホストコンピュータからのデータをシステムバス2を介し、インタフェース部13で受け取る。プロセッサ部14は、ホストコンピュータから送られてきたデータを、インタフェース部13からライト要求された領域に対応するバッファ部17内の領域へ1ワードずつ転送する(ステップS309)。そして、この必要なデータ数をホストコンピュータから転送し終えるまで繰り返す。
【0034】
必要なデータ数をホストコンピュータから転送し終えると(ステップS310)、バッファ部17のライト要求された領域を含むブロックのデータを、フラッシュメモリ部16内のライト要求された領域を含むブロックに転送する(ステップS311)。
プロセッサ部4は、インタフェース部3を介してホストコンピュータへライト動作の終了を通知する(ステップS312)。
これにより、ホストコンピュータは、終了通知を受け、ライト動作を終了する。
【0035】
また、上記ステップS304において、フラッシュメモリ部16内のライト要求された領域への上書きが可能な場合は、上述した半導体記憶装置1と同様に図6に示すステップへ進むため、その後の動作については説明を省略する。
【0036】
このように、実施例1によれば、フラッシュメモリ部16に書込みを行うライトデータ領域が1ブロック分あり、かつ、その1ブロックがフラッシュメモリ部16のブロックに対応している場合は、フラッシュメモリ部16からバッファ部17への該当ブロックのデータ転送を行わないようにしたので、このような場合のフラッシュメモリ部16からバッファ部17へのデータ転送処理がなくなり、ライト動作時の高速化が図れ、装置としての性能向上となる。
【0037】
次に、基本的な構成の半導体記憶装置1に対して、転送データ管理部を設けた実施例2を説明する。
《実施例2》
図8は、その構成を示すブロック図である。
この図8において、21は半導体記憶装置、2はこの半導体記憶装置21が図示しないホストコンピュータと接続されるためのシステムバスである。また、半導体記憶装置21は、インタフェース部23、プロセッサ部24、プロセッサメモリ部25、フラッシュメモリ部26、バッファ部27、内部バス28から構成されている。
【0038】
また、この実施例2において、インタフェース部23、プロセッサメモリ部25〜内部バス28の構成は、上記実施例1におけるインタフェース部13、プロセッサメモリ部15〜内部バス18の構成と同様であるため、ここでの説明は省略する。
【0039】
プロセッサ部24は、上記実施例1と同様に、ホストコンピュータからのコマンドを解釈し、半導体記憶装置21をディスク装置に見せるように制御し、フラッシュメモリ部26およびバッファ部27に対するデータ書換えの制御を行う部分である。また、このプロセッサ部24は、転送データ管理部24aを備えている。この転送データ管理部24aは、ホストコンピュータからのライト要求があった場合、対応するフラッシュメモリ部26のアドレスに基づき、上書きを行うライトデータ領域のデータを除いて1ブロック分のデータ転送を行い、かつ、バッファ部27上でライトデータ領域の書込みを行い、フラッシュメモリ部26の該当ブロックの消去を行った後、バッファ部7上の1ブロック分のデータを書戻す機能を備えているものである。
【0040】
次に、上記実施例2の半導体記憶装置21の動作を説明する。
[リード動作]
ここで、本実施例のリード動作は、基本的な構成の半導体記憶装置1の動作フローと同様である。即ち、その動作は図4に示したフローチャートと同様であるため、ここでの説明は省略する。
【0041】
[ライト動作]
図9はライト動作のフローチャートである。
ホストコンピュータがライト動作を要求する場合、半導体記憶装置21に対し、ライトコマンド、ライトデータ数、先頭アドレスを発行する。
インタフェース部23は、リード動作同様、インタフェース部23内の図示しないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタに、これらライトコマンド、ライトデータ数、先頭アドレスをセットし、プロセッサ部24に割り込みを上げる(ステップS401)。
【0042】
プロセッサ部24は、割り込みを受け付けると、コマンドレジスタをリードし、ホストコンピュータがライトコマンドを発行したことを認識する(ステップS402)。次に、プロセッサ部24はデータ数レジスタと先頭アドレスレジスタをリードし、フラッシュメモリ部26へ書込みを行う領域を知り(ステップS403)、フラッシュメモリ部26内の該領域への上書きが可能か否かを判断する(ステップS404)。
ステップS404において、フラッシュメモリ部26への上書きが不可能な場合は、ステップS405へ進み、フラッシュメモリ部26内の上書きが必要な領域が含まれる1ブロック分のデータにおいて、上書きを行うライトデータ領域のデータを除いた1ブロック分のデータを転送し、バッファ部27に格納する。
【0043】
図10は、その転送動作の説明図である。
即ち、フラッシュメモリ部26のあるブロック(ブロックiとする)にデータが格納されており、そのデータ領域に上書き要求があったとする。このような場合、転送データ管理部24aは、上書き要求のアドレスに基づき、ブロックiにおける上書き領域以外の領域のみをバッファ部27に転送するものである。
【0044】
その後は、基本的な構成の半導体記憶装置1のライト動作と同様に、フラッシュメモリ部26内の該当するブロックのデータを消去する(ステップS406)。
そして、これ以降のステップS407〜S411の動作は、図5におけるステップS207〜S211および図8におけるステップS308〜S312の動作と同様であるため、ここでの説明は省略する。
また、上記ステップS404において、フラッシュメモリ部26内のライト要求された領域への上書きが可能な場合は、上述した基本的な構成の半導体記憶装置1と同様に図6に示すステップへ進むため、その後の動作については説明を省略する。
【0045】
このように、実施例2によれば、ホストコンピュータからのライト要求時、該当ブロックにおける上書き領域のデータは、フラッシュメモリ部26からバッファ部27へ退避させないようにしたので、このような場合のフラッシュメモリ部26からバッファ部27へのデータ転送量を少なくすることができ、従って、ライト動作時の高速化が図れ、装置としての性能向上となる。
【0046】
次に、基本的な構成の半導体記憶装置1に対して、ブロック制御テーブル部とブロック制御部とを設けた実施例3を説明する。
《実施例3》
図11は、その構成を示すブロック図である。
この図11において、31は半導体記憶装置、2はこの半導体記憶装置31が図示しないホストコンピュータと接続されるためのシステムバスである。また、半導体記憶装置31は、インタフェース部33、プロセッサ部34、プロセッサメモリ部35、フラッシュメモリ部36、バッファ部37、ブロック制御テーブル部38、内部バス39から構成されている。
【0047】
また、この実施例3において、インタフェース部33、プロセッサメモリ部35、フラッシュメモリ部36、バッファ部37および内部バス39の構成は、上記実施例1におけるインタフェース部13、プロセッサメモリ部15、フラッシュメモリ部16、バッファ部17および内部バス18の構成と同様であるため、ここでの説明は省略する。
【0048】
プロセッサ部34は、上記実施例1、2と同様に、ホストコンピュータからのコマンドを解釈し、半導体記憶装置31をディスク装置に見せるように制御し、フラッシュメモリ部36およびバッファ部37に対するデータ書換えの制御を行う部分である。また、このプロセッサ部34は、ブロック制御部34aを備えている。このブロック制御部34aは、ホストコンピュータからのライト要求があった場合、ブロック制御テーブル部38の内容に基づき、フラッシュメモリ部36の該当ブロックにおいて、データが格納されている範囲以外の領域はバッファ部37に退避させないようデータ転送制御を行う機能を備えているものである。
【0049】
また、ブロック制御テーブル部38は、次のように構成されている。
図12は、ブロック制御テーブル部38の説明図である。
ブロック制御テーブル部38は、フラッシュメモリ部36を構成しているFEEPROMの消去単位であるブロック単位で管理するよう構成されている。即ち、ブロックNo部38a、先頭アドレス部38bおよびデータ範囲部38cとで構成されており、これらのブロックNo部38a、先頭アドレス部38bおよびデータ範囲部38cは、フラッシュメモリ部36のブロックに対応した数が設けられている。ここで、ブロックNo部38aの値1〜mは、フラッシュメモリ部36の各ブロック1〜mに対応しており、先頭アドレス部38bの値は、各ブロック内のデータ格納領域の先頭アドレスを示し、データ範囲部38cの値は、先頭アドレスから、そのブロック内におけるデータ格納領域の最後のアドレスまでの範囲を示している。
【0050】
例えば、図示状態のように、あるブロックiには、データ格納領域がアドレスi1〜i2とアドレスi3〜i4の二つあるとした場合、ブロックNo部38aの「i」の先頭アドレス部38bは、データ格納領域i1〜i2の先頭アドレスであるアドレスi1であり、また、データ範囲部38cの値は、アドレスi1からデータ格納領域i3〜i4の末尾アドレスi4までのデータ量dとなっている。
【0051】
次に、上記実施例3の半導体記憶装置31の動作を説明する。
[リード動作]
ここで、本実施例のリード動作は、基本的な構成の半導体記憶装置1の動作フローと同様である。即ち、その動作は図4に示したフローチャートと同様であるため、ここでの説明は省略する。
【0052】
[ライト動作]
図13および図14はライト動作のフローチャートである。
ホストコンピュータがライト動作を要求する場合、半導体記憶装置31に対し、ライトコマンド、ライトデータ数、先頭アドレスを発行する。
インタフェース部33は、リード動作同様、インタフェース部33内の図示しないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタに、これらライトコマンド、ライトデータ数、先頭アドレスをセットし、プロセッサ部34に割り込みを上げる(ステップS501)。
【0053】
プロセッサ部34は、割り込みを受け付けると、コマンドレジスタをリードし、ホストコンピュータがライトコマンドを発行したことを認識する(ステップS502)。次に、プロセッサ部34はデータ数レジスタと先頭アドレスレジスタをリードし、フラッシュメモリ部36へ書込みを行う領域を知り(ステップS503)、フラッシュメモリ部36内の該領域への上書きが可能か否かを判断する(ステップS504)。
尚、ここまでの動作は上記各実施例の動作と同様である。
【0054】
ステップS504において、フラッシュメモリ部36への上書きが不可能な場合、ブロック制御部34aは、ブロック制御テーブル部38を参照し、先頭アドレス部38bで示される先頭アドレスからデータ範囲部38cで示されるデータ数分だけのフラッシュメモリ部36内のデータをバッファ部37に転送する(ステップS505)。
【0055】
その後のステップS506〜S509の動作は、上記各実施例の動作と同様に、フラッシュメモリ部36内の上書きが必要な領域が含まれる1ブロック分のデータを消去し(ステップS506)、更に、インタフェース部33を介してホストコンピュータに割り込みを上げてデータを要求する。これにより、ホストコンピュータは、1ワードのデータをインタフェース部33にライトする(ステップS508)。そして、プロセッサ部34は、ホストコンピュータから送られてくるデータを、フラッシュメモリ部36へ書込みを行う領域に合わせてバッファ部37内の所定の領域に1ワードずつ書込む(ステップS508)。
【0056】
そして、ホストコンピュータから必要なデータ数分のライト処理が終了したかを判定し(ステップS509)、終了した場合は、ブロック制御テーブル部38に対して、ホストコンピュータからの書込み要求が未書込み領域に及んでいた場合は、先頭アドレス部38bとデータ範囲部38cの値を更新する(ステップS510)。
【0057】
次に、ブロック制御テーブル部38を参照し、先頭アドレス部38bで示される先頭アドレスからデータ範囲部38cで示されるデータ数分だけのバッファ部37内のデータを転送し、フラッシュメモリ部36内の該当ブロックに格納し(ステップS511)、プロセッサ部34はホストコンピュータに対して終了を通知するため、割り込みをインタフェース部33を介して上げる(ステップS512)。
【0058】
また、ステップS503において、フラッシュメモリ部36への上書きが可能な場合は、図14に示すステップに進み、プロセッサ部34はインタフェース部33を介してホストコンピュータに割り込みを上げてデータを要求し、ホストコンピュータのライト処理が終了すると(ステップS513)、プロセッサ部34はホストコンピュータから送られてきたデータをバッファ部37を介さず直接フラッシュメモリ部36に書込む(ステップS515)。
【0059】
必要なデータ数がフラッシュメモリ部36に書込まれると(ステップS515)、プロセッサ部34のブロック制御部34aは、ブロック制御テーブル部38に対して、ホストコンピュータからの書込み要求が未書込み領域に及んでいた場合は、先頭アドレス部62とデータ範囲部63を更新し(ステップS516)、プロセッサ部34はホストコンピュータに対し、終了を通知するための割り込みをインタフェース部33を介して行う(ステップS517)。
【0060】
このように、実施例3によれば、ホストコンピュータからのライト要求時、該当ブロックにおけるデータ範囲のみを、フラッシュメモリ部36からバッファ部37へ退避させるようにしたので、不要な部分の転送処理を行うことがないことから、フラッシュメモリ部36からバッファ部37へのデータ転送量を少なくすることができ、従って、ライト動作時の高速化が図れ、装置としての性能向上となる。
【0061】
次に、基本的な構成の半導体記憶装置1に対して、セクタ制御テーブル部とセクタ制御部とを設けた実施例4を説明する。
《実施例4》
図15は、その構成を示すブロック図である。
この図15において、41は半導体記憶装置、2はこの半導体記憶装置41が図示しないホストコンピュータと接続されるためのシステムバスである。また、半導体記憶装置41は、インタフェース部43、プロセッサ部44、プロセッサメモリ部45、フラッシュメモリ部46、バッファ部47、セクタ制御テーブル部48、内部バス49から構成されている。
【0062】
また、この実施例4において、インタフェース部43、プロセッサメモリ部45、フラッシュメモリ部46、バッファ部47および内部バス49の構成は、上記実施例1におけるインタフェース部13、プロセッサメモリ部15、フラッシュメモリ部16、バッファ部17および内部バス18の構成と同様であるため、ここでの説明は省略する。
【0063】
プロセッサ部44は、上記各実施例と同様に、ホストコンピュータからのコマンドを解釈し、半導体記憶装置41をディスク装置に見せるように制御し、フラッシュメモリ部46およびバッファ部47に対するデータ書換えの制御を行う部分である。また、このプロセッサ部44は、セクタ制御部44aを備えている。このセクタ制御部44aは、ホストコンピュータからのライト要求があった場合、セクタ制御テーブル部48の内容に基づき、フラッシュメモリ部46の該当ブロックにおいて、データが格納されているセクタのデータのみバッファ部47に退避させるようデータ転送制御を行う機能を備えているものである。
【0064】
また、セクタ制御テーブル部48は、次のように構成されている。
図16は、セクタ制御テーブル部48の説明図である。
セクタ制御テーブル部48は、ホストコンピュータからのライト要求において最小のデータ数単位であるセクタで管理されており、各セクタに対応したバリッドビット部72を有する。このバリッドビットは、該当するセクタにデータが書込まれている場合は“1”、該当するセクタにデータが書込まれていない場合は“0”にセットされる。また、セクタNo部71は、フラッシュメモリ部46の一つのブロック内のセクタに対応している。
【0065】
次に、上記実施例4の半導体記憶装置41の動作を説明する。
[リード動作]
ここで、本実施例のリード動作は、基本的な構成の半導体記憶装置1の動作フローと同様である。即ち、その動作は図4に示したフローチャートと同様であるため、ここでの説明は省略する。
【0066】
[ライト動作]
図17および図18はライト動作のフローチャートである。
ホストコンピュータがライト動作を要求する場合、半導体記憶装置41に対し、ライトコマンド、ライトデータ数、先頭アドレスを発行する。
インタフェース部43は、リード動作同様、インタフェース部43内の図示しないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタに、これらライトコマンド、ライトデータ数、先頭アドレスをセットし、プロセッサ部44に割り込みを上げる(ステップS601)。
【0067】
プロセッサ部44は、割り込みを受け付けると、コマンドレジスタをリードし、ホストコンピュータがライトコマンドを発行したことを認識する(ステップS602)。次に、プロセッサ部44はデータ数レジスタと先頭アドレスレジスタをリードし、フラッシュメモリ部46へ書込みを行う領域を知り(ステップS603)、フラッシュメモリ部46内の該領域への上書きが可能か否かを判断する(ステップS604)。
尚、ここまでの動作は上記各実施例の動作と同様である。
【0068】
ステップS604において、フラッシュメモリ部46への上書きが不可能な場合、セクタ制御部44aは、セクタ制御テーブル部48における該当ブロックを参照し、バリットビットが“1”となっているセクタのデータだけを、フラッシュメモリ部46からバッファ部47に転送する(ステップS605)。
【0069】
また、その後のステップS606〜S609の動作は、上記各実施例の動作と同様である。即ち、フラッシュメモリ部46内の上書きが必要な領域が含まれる1ブロック分のデータを消去し(ステップS606)、更に、インタフェース部43を介してホストコンピュータに割り込みを上げてデータを要求する。これにより、ホストコンピュータは、1ワードのデータをインタフェース部43にライトする(ステップS608)。そして、プロセッサ部44は、ホストコンピュータから送られてくるデータを、フラッシュメモリ部46へ書込みを行う領域に合わせてバッファ部47内の所定の領域に1ワードずつ書込む(ステップS608)。
【0070】
そして、ホストコンピュータから必要なデータ数分のライト処理が終了したかを判定し(ステップS609)、終了した場合は、セクタ制御テーブル部48に対して、ホストコンピュータからの書込み要求が未書込み領域(バリットビット部72の値が“0”)に及んでいた場合は、そのバリットビット部72の値を“1”に更新する。
【0071】
次に、セクタ制御テーブル部48を参照し、バッファ部47内のデータおける、バリットビット部72が“1”のセクタのデータだけを転送し、フラッシュメモリ部46内の該当ブロックに格納し(ステップS611)、プロセッサ部44はホストコンピュータに対して終了を通知するため、割り込みをインタフェース部43を介して上げる(ステップS612)。
【0072】
また、ステップS603において、フラッシュメモリ部46への上書きが可能な場合は、図18に示すステップに進み、プロセッサ部44はインタフェース部43を介してホストコンピュータに割り込みを上げてデータを要求し、ホストコンピュータのライト処理が終了すると(ステップS613)、プロセッサ部44はホストコンピュータから送られてきたデータをバッファ部47を介さず直接フラッシュメモリ部46に書込む(ステップS615)。
【0073】
必要なデータ数がフラッシュメモリ部46に書込まれると(ステップS615)、プロセッサ部44のセクタ制御部44aは、セクタ制御テーブル部48に対して、ホストコンピュータからの書込み要求が未書込み領域に及んでいた場合は、バリットビット部72の値を“1”に更新し(ステップS616)、プロセッサ部44はホストコンピュータに対し、終了を通知するための割り込みをインタフェース部43を介して行う(ステップS617)。
【0074】
このように、実施例4によれば、フラッシュメモリ部46のデータをセクタ単位で管理し、ホストコンピュータからのライト要求時、該当ブロックにおけるデータの書込まれているセクタのみを、フラッシュメモリ部46からバッファ部47へ退避させるようにしたので、不要な部分の転送処理を行うことがないことから、フラッシュメモリ部46からバッファ部47へのデータ転送量を少なくすることができ、従って、ライト動作時の高速化が図れ、装置としての性能向上となる。
【0075】
次に、プロセッサ部がインタフェース部からライトデータをリードしている間に、フラッシュメモリ部からバッファ部へデータを退避させるようにした実施例5を説明する。
《実施例5》
図19は、その構成を示すブロック図である。
この図19において、51は半導体記憶装置、2は半導体記憶装置51が図示しないホストコンピュータと接続されるためのシステムバスである。また、半導体記憶装置51は、インタフェース部53、プロセッサ部54、プロセッサメモリ部55、フラッシュメモリ部56、バッファ部57、内部バス58a、メモリバス58b、メモリ管理部59から構成されている。
【0076】
また、この実施例5において、インタフェース部53、プロセッサメモリ部55、フラッシュメモリ部56、バッファ部57および内部バス58aの構成は、上記実施例1におけるインタフェース部13、プロセッサメモリ部15、フラッシュメモリ部16、バッファ部17および内部バス18の構成と同様であるため、ここでの説明は省略する。
プロセッサ部54は、上記各実施例と同様に、ホストコンピュータからのコマンドを解釈し、半導体記憶装置51をディスク装置に見せるように制御すると共に、メモリ管理部59に対して、フラッシュメモリ部46およびバッファ部47に対するデータ書換えの制御指示を行う部分である。
【0077】
メモリ管理部59は、内部バス58aを介してインタフェース部53、プロセッサ部54およびプロセッサメモリ部55と接続されると共に、内部バス58aとは異なるバスであるメモリバス58bを介してフラッシュメモリ部56とバッファ部57とに接続されている。このメモリ管理部59は、プロセッサ部54からのライトデータをバッファ部57やフラッシュメモリ部56に転送制御すると共に、プロセッサ部54がインタフェース部53からライトデータを読み取っている間に、メモリバス58bを介してフラッシュメモリ部56からバッファ部57にデータ転送を行う機能を有している。
【0078】
図20は、上記メモリ管理部59の内部構成を示すブロック図である。
メモリ管理部59は、メモリリード回路102、メモリライト回路103、メモリ・バッファコピー回路104、バッファリード回路105、バッファライト回路106、および、これらメモリリード回路102〜バッファライト回路106を制御する制御回路101からなる。
【0079】
このような構成において、先ず、半導体記憶装置51がリード動作を行う場合は、メモリリード回路102が動作し、プロセッサ部54からの要求に合わせてフラッシュメモリ部56から内部バス58a側にデータを転送する。つまり、プロセッサ部54からは、フラッシュメモリ部56が内部バス58aに直結しているように見える。
【0080】
次に、半導体記憶装置がライト動作を行う場合、ライト要求された領域への上書きが不可能な時は、プロセッサ部54がインタフェース部53よりバッファ部57へデータを転送する。これは、プロセッサ部54がインタフェース部53よりデータをリードする動作と、プロセッサ部54がバッファ部57へデータをライトする動作からなる。
メモリ管理部59は、予め、フラッシュメモリ部56内のデータをバッファ部57に転送する命令をプロセッサ部54から受ける。プロセッサ部54がインタフェース部53よりデータをリードする時には、制御回路101は、メモリ・バッファコピー回路104を動作させ、順次フラッシュメモリ部56からバッファ部57へメモリバス58bを介してデータを転送する。
【0081】
また、プロセッサ部54がインタフェース部53から読み出したデータをバッファ部57へライトする時には、制御回路101は、バッファライト回路106を動作させ、バッファ部57にデータを転送する。これにより、インタフェース部53からバッファ部57へのデータ転送と、フラッシュメモリ部56からバッファ部57へのデータ転送とを同時に実行することができる。
【0082】
また、バッファ部57からフラッシュメモリ部56へのデータ転送時には、メモリライト回路103とバッファリード回路105を、プロセッサ部54からの要求に合わせて動作させ、バッファ部57からフラッシュメモリ部56へデータを転送する。
更に、半導体記憶装置51がライト動作を行う場合、ライト要求された領域への上書きが可能な場合には、メモリライト回路103を動作させ、プロセッサ部54がインタフェース部53より転送してくるデータをフラッシュメモリ部56へ転送する。つまり、この場合、プロセッサ部54からは、フラッシュメモリ部56が内部バス58aに直結しているように見える。
【0083】
次に、上記実施例5のメモリ制御方法である半導体記憶装置51の動作について説明する。
[リード動作]
本実施例のリード動作は、メモリ管理部59が、内部バス58aとフラッシュメモリ部56とが直接接続されているように見せかけるため、基本的な構成の半導体記憶装置1の動作フローと同様である。即ち、その動作は図4に示したフローチャートと同様であるため、ここでの説明は省略する。
【0084】
[ライト動作]
図21はライト動作のフローチャートである。
ホストコンピュータが、半導体記憶装置51に対しライト要求する場合、リード動作と同様に、半導体記憶装置51へライトコマンド、ライトデータ数、先頭アドレスを送る(ステップS701)。
【0085】
インタフェース部53は、前記のライトコマンド、ライトデータ数、先頭アドレスを、インタフェース部53内の図示されていないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタにセットする。また、プロセッサ部54にホストコンピュータからコマンドがきたことを知らせる。プロセッサ部54は、コマンドレジスタをリードし、ホストコンピュータがライト要求してきたことを認識する(ステップS702)。また、データ数レジスタと先頭アドレスレジスタをリードし、フラッシュメモリ部56内のどの領域がライト要求されたかを認識し(ステップS703)、その領域への上書きが可能か否かを判断する(ステップS704)。
【0086】
フラッシュメモリ部56内のライト要求された領域への上書きが不可能な場合は、プロセッサ部54は、インタフェース部53を介してホストコンピュータへデータを転送する許可を出す。通知を受けたホストコンピュータは、半導体記憶装置51へデータ転送を開始する(ステップS705)。
尚、以上の動作は、上記各実施例のライト動作と同様である。
【0087】
半導体記憶装置51は、ホストコンピュータからのデータをシステムバス12を介し、インタフェース部53で受け取る。プロセッサ部54は、メモリ管理部59に対し、フラッシュメモリ部56内のライト要求された領域が含まれる1ブロック内の全てのデータを、バッファ部57に転送する命令を出す。これにより、メモリ管理部59は、フラッシュメモリ部56から、ライト要求された領域を含むブロックのデータをバッファ部57へ転送する。一方、メモリ管理部59によるデータ転送を行っている間、プロセッサ部54は、インタフェース部53の1ワードのデータを読み取る(ステップS706)。
【0088】
そして、プロセッサ部54が、ホストコンピュータから送られてきたデータを、1ワードずつメモリ管理部59へ転送する。メモリ管理部59は、プロセッサ部54によってインタフェース部53から転送されてくるデータをライト要求された領域に対応するバッファ部57内の領域へ転送する(ステップS707)。
【0089】
このような動作を繰り返すことによって、要求されたデータ数を転送したか否かをプロセッサ部54が監視し(ステップS708)、必要なデータ数をホストコンピュータから転送し終えると、フラッシュメモリ部56内のライト要求された領域が含まれるブロックを消去する(ステップS709)。
その後、バッファ部57のライト要求された領域を含むブロックのデータを、フラッシュメモリ部56内の該当ブロックに転送する(ステップS710)。そして、プロセッサ部54は、インタフェース部53を介してホストコンピュータへライト動作の終了を通知する(ステップS711)。
ホストコンピュータは、終了通知を受け、ライト動作を終了する。
【0090】
一方、フラッシュメモリ部56内のライト要求された領域への上書きが可能な場合の本実施例のライト動作は、メモリ管理部59が内部バス58とフラッシュメモリ部56が直接接続されているように見せかけるため、基本的な構成の半導体記憶装置のライト動作と同様である。即ち、図6に示すステップに進むため、その動作については、説明を省略する。
【0091】
このように、実施例5によれば、プロセッサ部54によるインタフェース部53からのライトデータのリード動作と、メモリ管理部59によるフラッシュメモリ部56からバッファ部57へのデータ転送を同時に行うようにしたので、ライト動作時における処理時間が短縮され、装置としての性能向上となる。
【0092】
次に、プロセッサ部がバッファ部にライトデータを転送している間にフラッシュメモリ部の該当ブロックの消去を行うようにした実施例6を説明する。
《実施例6》
図22は、その構成を示すブロック図である。
図において、61は半導体記憶装置、2は半導体記憶装置61を接続するホストコンピュータのシステムバスである。半導体記憶装置61は、インタフェース部63、プロセッサ部64、プロセッサメモリ部65、フラッシュメモリ部66、バッファ部67、内部バス68、メモリ消去制御部69から構成される。
【0093】
また、この実施例6において、インタフェース部63、プロセッサメモリ部65、フラッシュメモリ部66、バッファ部67および内部バス68の構成は、上記実施例1におけるインタフェース部13、プロセッサメモリ部15、フラッシュメモリ部16、バッファ部17および内部バス18の構成と同様であるため、ここでの説明は省略する。
【0094】
プロセッサ部64は、上記各実施例と同様に、ホストコンピュータからのコマンドを解釈し、半導体記憶装置61をディスク装置に見せるように制御すると共に、メモリ消去制御部69に対して、フラッシュメモリ部46の該当ブロックの消去指示を行う部分である。
メモリ消去制御部69は、プロセッサ部64より命令を受けて、フラッシュメモリ部66の消去を開始し、その状態を監視する機能を有するものである。また、消去の終了や異常発生等はプロセッサ部64がメモリ消去制御部69内の図示しないステータスレジスタをリードすることにより行う。
【0095】
次に、上記実施例6のメモリ制御方法である半導体記憶装置61の動作について説明する。
[リード動作]
本実施例のリード動作は、基本的な構成の半導体記憶装置1の動作フローと同様である。即ち、その動作は図4に示したフローチャートと同様であるため、ここでの説明は省略する。
【0096】
[ライト動作]
図23はライト動作のフローチャートである。
ホストコンピュータが、半導体記憶装置61に対しライト要求する場合、リード動作と同様に、半導体記憶装置61へライトコマンド、ライトデータ数、先頭アドレスを送る(ステップS801)。
【0097】
インタフェース部63は、前記のライトコマンド、ライトデータ数、先頭アドレスを、インタフェース部63内の図示されていないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタにセットする。また、プロセッサ部64にホストコンピュータからコマンドがきたことを知らせる。プロセッサ部64は、コマンドレジスタをリードし、ホストコンピュータがライト要求してきたことを認識する(ステップS802)。また、データ数レジスタと先頭アドレスレジスタをリードし、フラッシュメモリ部66内のどの領域がライト要求されたかを認識し(ステップS803)、その領域への上書きが可能か否かを判断する(ステップS804)。
尚、ここまでの動作は、上記各実施例のライト動作と同様である。
【0098】
フラッシュメモリ部66内のライト要求された領域への上書きが不可能な場合、プロセッサ部64は、フラッシュメモリ部66内のライト要求された領域が含まれる1ブロック内の全てのデータを、バッファ部67に転送する(ステップS805)。
そして、フラッシュメモリ部66内のライト要求された領域が含まれるブロック内の全てのデータの転送を終えると、プロセッサ部64は、そのブロックを消去する命令をメモリ消去制御部69に発行する(ステップS806)。
これにより、メモリ消去制御部69は、フラッシュメモリ部66の消去動作を行い、フラッシュメモリ部69は該当ブロックの消去動作を実行する。
【0099】
一方、プロセッサ部64は、インタフェース部63を介してホストコンピュータへ書込むデータを転送する許可を出す。通知を受けたホストコンピュータは、半導体記憶装置61へデータ転送を開始する(ステップS807)。半導体記憶装置61は、ホストコンピュータからのデータをシステムバス2を介し、インタフェース部63で受け取る。プロセッサ部64は、ホストコンピュータから送られてきたデータを、インタフェース部63からライト要求された領域に対応するバッファ部67内の領域へ転送する(ステップS808)。そして、この動作を、必要なデータ数をホストコンピュータから転送し終えるまで繰り返す。
【0100】
必要なデータ数をホストコンピュータから転送し終えると(ステップS809)、プロセッサ部64は、フラッシュメモリ部66内のライト要求された領域を含むブロックが消去されたかメモリ消去制御部69に確認する(ステップS810)。
【0101】
尚、フラッシュメモリ部69は、その消去が終了すると、消去フラグをセットするようになっており、メモリ消去制御部69は、ある一定間隔でこのフラグの確認を行うことによって、フラッシュメモリ部69の該当ブロックが消去されたかどうかを確認するものである。
【0102】
上記ステップS810において、消去が終了していなければ、終了するまで待つ。消去が完了していれば、バッファ部67のライト要求された領域を含むブロックのデータを、フラッシュメモリ部66内の該当ブロックに転送する(ステップS811)。プロセッサ部64は、インタフェース部63を介してホストコンピュータへライト動作の終了を通知する(ステップS812)。
ホストコンピュータは、終了通知を受け、ライト動作を終了する。
【0103】
一方、フラッシュメモリ部66内のライト要求された領域への上書きが可能な場合の本実施例のライト動作は、基本的な構成の半導体記憶装置のライト動作と同様である。即ち、図6に示すステップに進むため、その動作については、説明を省略する。
【0104】
このように、実施例6によれば、プロセッサ部64からバッファ部67へのデータ転送動作中に、フラッシュメモリ部66におけるライト要求されたデータを含むブロックの消去動作を実行するようにしたので、ライト動作時における処理時間が短縮され、装置としての性能向上となる。
【0105】
【発明の効果】
以上、詳細に説明したように、本発明の半導体記憶装置とメモリ制御方法によれば、フラッシュメモリ部のデータ書換えを行う場合に、バッファ部への転送制御やフラッシュメモリ部のブロック消去制御を行うようにしたので、データ書換え時の動作を高速化することができ、従って、半導体記憶装置としての性能向上を図ることができる。
【図面の簡単な説明】
【図1】本発明の半導体記憶装置における実施例1のブロック図である。
【図2】半導体記憶装置の基本的な構成を示すブロック図である。
【図3】半導体記憶装置のフラッシュメモリ部とバッファ部の容量の関係説明図である。
【図4】半導体記憶装置のリード動作を示すフローチャートである。
【図5】半導体記憶装置のライト動作を示すフローチャート(その1)である。
【図6】半導体記憶装置のライト動作を示すフローチャート(その2)である。
【図7】本発明の半導体記憶装置における実施例1のライト動作を示すフローチャートである。
【図8】本発明の半導体記憶装置における実施例2の構成を示すブロック図である。
【図9】本発明の半導体記憶装置における実施例2のライト動作を示すフローチャートである。
【図10】本発明の半導体記憶装置における実施例2のデータ転送動作の説明図である。
【図11】本発明の半導体記憶装置における実施例3の構成を示すブロック図である。
【図12】本発明の半導体記憶装置における実施例3のブロック制御テーブル部の説明図である。
【図13】本発明の半導体記憶装置における実施例3のライト動作を示すフローチャート(その1)である。
【図14】本発明の半導体記憶装置における実施例3のライト動作を示すフローチャート(その2)である。
【図15】本発明の半導体記憶装置における実施例4の構成を示すブロック図である。
【図16】本発明の半導体記憶装置における実施例4のセクタ制御テーブル部の説明図である。
【図17】本発明の半導体記憶装置における実施例4のライト動作を示すフローチャート(その1)である。
【図18】本発明の半導体記憶装置における実施例4のライト動作を示すフローチャート(その2)である。
【図19】本発明の半導体記憶装置における実施例5の構成を示すブロック図である。
【図20】本発明の半導体記憶装置における実施例5のメモリ管理部のブロック図である。
【図21】本発明の半導体記憶装置における実施例5のライト動作を示すフローチャートである。
【図22】本発明の半導体記憶装置における実施例6の構成を示すブロック図である。
【図23】本発明の半導体記憶装置における実施例6のライト動作を示すフローチャートである。
【符号の説明】
11、21、31、41、51、61 半導体記憶装置
13、23、33、43、53、63 インタフェース部
14、24、34、44、54、64 プロセッサ部
14a 転送制御部
16、26、36、46、56、66 フラッシュメモリ部
17、27、37、47、57、67 バッファ部
18、28、39、48、58a、68 内部バス
24a 転送データ管理部
34a ブロック制御部
38 ブロック制御テーブル部
44a セクタ制御部
48 セクタ制御テーブル部
58b メモリバス
69 メモリ消去制御部
【産業上の利用分野】
本発明は、フラッシュメモリを用いた半導体記憶装置に関し、特にそのデータ書換え制御に関するものである。
【0002】
【従来の技術】
近年、不揮発性メモリチップとして、フラッシュメモリ、即ちフラッシュEEPROM(FEEPROM)が実用化されるようになり、このチップを使用した半導体ディスク装置の開発が盛んに行われている。
このフラッシュメモリとは、EEPROM(電気的消去、再書込み可能リード・オンリ・メモリ)の一種であり、電気的に消去ができ、かつ、バイト毎にプログラム書込みができ、また電源を必要とせず、メモリの内容が保証できるという長所を持つ。
【0003】
【発明が解決しようとする課題】
しかしながら、上記の長所とは逆に、次のような短所を有している。
即ち、メモリへの書込みの際に、上書きができないため、一旦消去してからバイト毎に書込み(データを書換える)を行う必要がある。なお、ここで消去する単位は、チップによって異なるが、チップ単位に消去を行うものが主流である。
フラッシュメモリを用いた半導体記憶装置は、上記のようなフラッシュメモリのデータ書換え時に、そのメモリ部のデータを必ず消去しなければならないといった特性のため、半導体記憶装置の特長である高速アクセスの妨げとなっており、このような、データ書換え時の性能向上を図ることのできる半導体記憶装置の実現が望まれていた。
【0004】
【課題を解決するための手段】
本発明は、データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、前記ライトデータの書込みに必要なデータ領域と前記ブロックのデータ領域とを比較し、前記ライトデータのデータ領域が該ブロックのそれより小さいと、該ブロックの全データを前記バッファ部に転送して該バッファ部上のデータを前記ライトデータに書換え、前記ライトデータのデータ領域が前記ブロックのそれと一致すると、該ブロックのデータを前記バッファ部に転送せずに該バッファ部に前記ライトデータを直接書込み、前記フラッシュメモリ部のデータの消去後の前記ブロックに、前記バッファ部の全データを書込む転送制御部を更に備えることを特徴とする半導体記憶装置。
他の発明は、データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、前記ブロックの前記ライトデータによる書換えるべき領域を判定し、該ブロックの前記判定した領域以外の領域のデータを前記バッファ部に転送して該バッファ部上の前記書換えるべき領域に対応する領域に前記ライトデータを書込み、前記フラッシュメモリ部のデータの消去後の前記ブロックに、前記バッファ部の全データを書込む転送データ管理部を更に備えることを特徴とする半導体記憶装置。
また、他の発明は、データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、前記フラッシュメモリ部の各ブロック毎にデータの書込領域を示す領域指示データが格納されているブロック制御テーブル部と、該ブロック制御テーブル部の書換え対象のブロックの前記領域指示データに基づいて該ブロックの前記書込領域のデータを前記バッファ部に転送して該バッファ部上のデータを前記ライトデータにより書換え、前記フラッシュメモリ部のデータの消去後の前記ブロックに前記バッファ部のデータを書込むと共に前記ライトデータの書換えにより該ブロックの前記書込領域が変化すると前記ブロック制御テーブル部の対応するブロックの領域指示データを変化した書込領域を示す領域指示データに更新するブロック制御部とを含むことを特徴とする半導体記憶装置。
【0005】
更に他の発明は、データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、前記フラッシュメモリ部の各ブロック毎に、書込領域を分けた各セクタに対しデータの有無を示すデータ有無指示データが格納されているセクタ制御テーブル部と、該セクタ制御テーブル部の書換え対象のブロックの前記データ有無指示データに基づいて該ブロックのデータを有するセクタのデータのみを前記バッファ部に転送して該バッファ部上のデータを前記ライトデータにより書換えると共に該書換えにより新たにデータの書込まれたセクタが生じると前記セクタ制御テーブル部の対応するセクタのデータ有無指示データをデータ有りとして更新し、更新後の前記セクタ制御テーブル部のデータ有無指示データに基づいて前記バッファ部上のデータを転送して前記フラッシュメモリ部のデータの消去後の前記ブロックに書込むセクタ制御部とを含むことを特徴とする半導体記憶装置。
また、他の発明は、データがブロック単位で消去可能に書込まれているフラッシュメモリ部に対し書換え対象のブロックのデータをバッファ部に転送し、該バッファ部のデータをホストから受信したライトデータ群より書換え、該書換えたバッファ部のデータを前記フラッシュメモリ部のデータの消去後の前記ブロックに書込むメモリ制御方法であって、前記ホストから現在のライトデータを受信して次のライトデータを受信するまでの間に、前記フラッシュメモリ部の前記ブロックのデータを前記バッファ部に転送し、かつ該バッファ部に前記現在のライトデータを書換えのために転送することを特徴とするメモリ制御方法。
また、更に他の発明は、データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、前記ホストからライトデータを受信する毎に該ライトデータを格納するインタフェース部と、前記インタフェース部に格納されたライトデータを読み取って、当該ライトデータにより前記バッファ部のデータを書換えると共に、前記フラッシュメモリ部のデータ消去後のブロックに前記バッファ部上のデータを書戻すプロセッサ部と、前記プロセッサ部と前記インタフェース部とを接続する内部バスとは異なるバスによって、前記フラッシュメモリ部と前記バッファ部とのデータ転送動作を制御し、前記プロセッサ部が前記インタフェース部からライトデータを読み込んでいる間に、前記フラッシュメモリ部のブロックのデータを前記バッファ部に転送するメモリ管理部とを備えたことを特徴とする半導体記憶装置。
【0006】
【実施例】
以下、本発明の実施例を図面を用いて詳細に説明する。
図1は、本発明の半導体記憶装置における実施例1を示すブロック図であるが、この説明に先立ち、基本的な半導体記憶装置の構成および動作を説明する。
【0007】
《基本的な半導体記憶装置の構成》
図2は、フラッシュメモリ(FEEPROM)を用いた半導体記憶装置のブロック図を示す。
図において、1は半導体記憶装置(不揮発性半導体ディスク装置)、2はこの半導体記憶装置1を接続するホストコンピュータ(図示省略)のシステムバスである。
半導体記憶装置1は、インタフェース部3、プロセッサ部4、プロセッサメモリ部5、フラッシュメモリ部6、バッファ部7、内部バス8から構成されている。
【0008】
インタフェース部3は、ホストコンピュータとのインタフェース制御を行う部分である。プロセッサ部4は、ホストコンピュータからのコマンドを解釈し、半導体記憶装置1を磁気ディスク装置と同様に見せるように制御し、フラッシュメモリ部6およびバッファ部7に対するデータ書換えの制御を行う機能を備えている。また、プロセッサメモリ部5は、プロセッサ部4が実行するプログラムが格納されているメモリである。
【0009】
フラッシュメモリ部6は、半導体記憶装置1の記憶媒体であり、フラッシュメモリ(FEEPROM)で構成されている。バッファ部7は、フラッシュメモリ部6内の1ブロックのデータを書換えるために消去する場合、データを一時的に退避させておくためのメモリであり、1ブロック分の容量を持つ。尚、ここで、1ブロックとは、消去する最低の単位を指している。
【0010】
図3は、このようなフラッシュメモリ部6とバッファ部7との関係を示す説明図である。
即ち、フラッシュメモリ部6は、1〜m個のブロックから構成され、バッファ部7は、その一つ分のブロックの容量となっている。
【0011】
また、図2に示す内部バス8は、半導体記憶装置1内の構成要素を接続するためのバスである。
【0012】
次に、上記の半導体記憶装置1の動作について説明する。
半導体記憶装置1の動作は、大きく分けてホストコンピュータが半導体記憶装置1からデータを読み出すリードと、ホストコンピュータが半導体記憶装置1へデータを書込むライトがある。
【0013】
[リード動作]
図4は、上記半導体記憶装置1のリード動作を示したフローチャートである。
図示しないホストコンピュータは、半導体記憶装置1に対してリード要求を行う場合は、システムバス2を介して半導体記憶装置1へ、リードコマンド、リードデータ数、先頭アドレスを送る。
【0014】
半導体記憶装置1は、ホストコンピュータからの情報をシステムバス2を介し、インタフェース部3で受け取る。インタフェース部3は、上記のリードコマンド、リードデータ数、先頭アドレスを、インタフェース部3内の図示しないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタにセットする。また、ホストコンピュータより情報がきたことを、プロセッサ部4に通知する(ステップS101)。
【0015】
プロセッサ部4は、コマンドレジスタをリードして、ホストコンピュータがリード要求したことを認識する(ステップS102)。また、データ数レジスタと先頭アドレスレジスタをリードして、フラッシュメモリ部6内のどの領域がリード要求されたかを認識する(ステップ103)。
次に、プロセッサ部4は、フラッシュメモリ部6内のリード要求された領域から、1ワードのデータをリードし、インタフェース部3へデータ転送を開始する(ステップS104)。インタフェース部3は、ホストコンピュータにデータが転送できることを通知し、この通知を受けたホストコンピュータは、システムバス2を介して、インタフェース部3よりデータを読み出す(ステップS105)。このようにして、リード要求された領域からデータ転送を繰り返す。
【0016】
必要なデータ数をホストコンピュータに転送し終えると(ステップS106)、プロセッサ部4は、インタフェース部3を介してリード動作の終了をホストコンピュータへ通知する(ステップS107)。
ホストコンピュータは、終了通知を受け、リード動作を終了する。
【0017】
[ライト動作]
図5、6は、上記半導体記憶装置1におけるライト動作を示したフローチャートである。
ホストコンピュータが半導体記憶装置1に対してライト要求を行う場合は、上述したリード動作と同様に、半導体記憶装置1に、ライトコマンド、ライトデータ数、先頭アドレスを送る。
【0018】
インタフェース部3は、上記のライトコマンド、ライトデータ数、先頭アドレスをインタフェース部3内の図示されていないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタにセットする。また、インタフェース部3は、プロセッサ部4にホストコンピュータからコマンドがきたことを知らせる(ステップS201)。
プロセッサ部4は、コマンドレジスタをリードし、ホストコンピュータがライト要求してきたことを認識する(ステップS202)。また、データ数レジスタと先頭アドレスレジスタをリードし、フラッシュメモリ部6内のどの領域がライト要求されたかを認識し(ステップS203)、その領域への上書きが可能か否かを判断する(ステップS204)。
【0019】
フラッシュメモリ部6内のライト要求された領域への上書きが不可能な場合、プロセッサ部4は、フラッシュメモリ部6内のライト要求された領域が含まれる1ブロック内の全てのデータをバッファ部7に転送する(ステップS205)。そして、フラッシュメモリ部6内のライト要求された領域が含まれるブロック内の全てのデータの転送を終えると、そのブロックを消去する(ステップS206)。
【0020】
次に、プロセッサ部4は、インタフェース部3を介してホストコンピュータへ書込むデータを転送する許可を出す。通知を受けたホストコンピュータは、半導体記憶装置1へ1ワードずつデータ転送を開始する(ステップS207)。
半導体記憶装置1は、ホストコンピュータからのデータをシステムバス2を介し、インタフェース部3で受け取る。プロセッサ部4は、ホストコンピュータから送られてきたデータを、インタフェース部3からライト要求された領域に対応するバッファ部7内の領域へ1ワードずつ転送する(ステップS208)。そして、この必要なデータ数をホストコンピュータから転送し終えるまで繰り返す。
【0021】
必要なデータ数をホストコンピュータから転送し終えると(ステップS209)、バッファ部7のライト要求された領域を含むブロックのデータを、フラッシュメモリ部6内のライト要求された領域を含むブロックに転送する(ステップS210)。
プロセッサ部4は、インタフェース部3を介してホストコンピュータへライト動作の終了を通知する(ステップS211)。
これにより、ホストコンピュータは、終了通知を受け、ライト動作を終了する。
【0022】
また、上記ステップS204において、フラッシュメモリ部6内のライト要求された領域への上書きが可能な場合、プロセッサ部4は、インタフェース部3を介してホストコンピュータに書込むデータの転送する許可を出す。通知を受けたホストコンピュータは、半導体記憶装置1へデータ転送を開始する(ステップS212)。プロセッサ部4は、ホストコンピュータから送られてきたデータを、インタフェース部3からフラッシュメモリ部6のライト要求された領域に対応する領域へ転送する(ステップS213)。そして、この転送動作を、必要なデータ数をホストコンピュータから転送し終えるまで繰り返す。
【0023】
必要なデータ数をホストコンピュータから転送し終えると(ステップS214)、プロセッサ部4は、インタフェース部3を介してホストコンピュータへライト動作の終了を通知する(ステップS211)。
そして、ホストコンピュータは、終了通知を受け、ライト動作を終了する。
【0024】
次に、このような半導体記憶装置1に対して、転送制御部を設けた実施例1を図1を用いて説明する。
《実施例1》
図1において、11は半導体記憶装置、2はこの半導体記憶装置11が図示しないホストコンピュータと接続されるためのシステムバスである。また、半導体記憶装置11は、インタフェース部13、プロセッサ部14、プロセッサメモリ部15、フラッシュメモリ部16、バッファ部17、内部バス18から構成されている。
【0025】
インタフェース部13は、上述した構成の半導体記憶装置1におけるインタフェース部3と同様に、ホストコンピュータとのインタフェース制御を行う部分である。
【0026】
プロセッサ部14は、ホストコンピュータからのコマンドを解釈し、半導体記憶装置11をディスク装置に見せるように制御し、フラッシュメモリ部16およびバッファ部17に対するデータ書換えの制御を行う部分であり、転送制御部14aを備えている。この転送制御部14aは、ホストコンピュータからのライトデータが、フラッシュメモリ部16の1ブロック分なかった場合は、そのデータを含むブロックをフラッシュメモリ部16からバッファ部17へ転送して、バッファ部17上で書換えを行い、フラッシュメモリ部16の該当ブロックの消去を行った後、バッファ部17上で書換えた1ブロック分のデータを書戻し、かつ、ホストコンピュータからのライトデータが、1ブロック分あった場合は、そのブロック分のデータをフラッシュメモリ部16からバッファ部17へ転送せず、フラッシュメモリ部16の該当ブロックの消去を行った後、ライトデータを直接書込む機能を備えているものである。
【0027】
また、プロセッサメモリ部15〜バッファ部17の構成は、上記半導体記憶装置におけるプロセッサメモリ部5〜バッファ部7の構成と同様であるため、ここでの説明は省略する。尚、フラッシュメモリ部16とバッファ部17の容量は、図3で示したように構成されている。
【0028】
次に、上記実施例1の半導体記憶装置11の動作を説明する。
[リード動作]
ここで、本実施例のリード動作は、上記半導体記憶装置1の動作フローと同様である。即ち、その動作は図4に示したフローチャートと同様であるため、ここでの説明は省略する。
【0029】
[ライト動作]
図7はライト動作のフローチャートである。
ホストコンピュータがライト動作を要求する場合、半導体記憶装置11に対し、ライトコマンド、ライトデータ数、先頭アドレスを発行する。
インタフェース部13は、リード動作同様、インタフェース部13内の図示しないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタに、これらライトコマンド、ライトデータ数、先頭アドレスをセットし、プロセッサ部14に割り込みを上げる(ステップS301)。
【0030】
プロセッサ部14の転送制御部14aは、割り込みを受け付けると、コマンドレジスタをリードし、ホストコンピュータがライトコマンドを発行したことを認識する(ステップS302)。次に、転送制御部14aはデータ数レジスタと先頭アドレスレジスタをリードし、フラッシュメモリ部16へ書込みを行う領域を知り(ステップS303)、フラッシュメモリ部16内の該領域への上書きが可能か否か、即ち、ライトする領域が未使用か否かを判断する(ステップS304)。
【0031】
ステップS304において、フラッシュメモリ部16への上書きが不可能な場合は、ステップS305へ進み、フラッシュメモリ部16へ書込みを行うライトデータ領域が1ブロック分であり、かつ、その1ブロック分がフラッシュメモリ部16のブロックに対応しているか否かを転送制御部14aは判断する。
ステップS305において、フラッシュメモリ部16へ書込みを行うライトデータ領域が1ブロック分でない、または、1ブロック分であるがその1ブロック分がフラッシュメモリ部16のブロックに対応していない場合は、ステップS306へ進み、フラッシュメモリ部16内の上書きが必要な領域が含まれる1ブロック分のデータを転送し、バッファ部17に格納する。そして、このデータ転送後、フラッシュメモリ部16内の上書きが必要な領域が含まれるブロック分のデータを消去する(ステップS307)。
【0032】
また、ステップS305において、フラッシュメモリ部16へ書込みを行うライトデータ領域が1ブロック分であり、かつ、その1ブロックがフラッシュメモリ部16のブロックに対応している場合は、フラッシュメモリ部16内の該当ブロックのデータを転送せず、そのまま、ステップS307に進んで、フラッシュメモリ部16内の上書きが必要な領域が含まれる1ブロック分のデータを消去する。
【0033】
その後は、上述した半導体記憶装置1のライト動作と同様に、プロセッサ部14が、インタフェース部13を介してホストコンピュータへ書込むデータを転送する許可を出し、通知を受けたホストコンピュータは、半導体記憶装置11へ1ワードずつデータ転送を開始する(ステップS308)。
半導体記憶装置11は、ホストコンピュータからのデータをシステムバス2を介し、インタフェース部13で受け取る。プロセッサ部14は、ホストコンピュータから送られてきたデータを、インタフェース部13からライト要求された領域に対応するバッファ部17内の領域へ1ワードずつ転送する(ステップS309)。そして、この必要なデータ数をホストコンピュータから転送し終えるまで繰り返す。
【0034】
必要なデータ数をホストコンピュータから転送し終えると(ステップS310)、バッファ部17のライト要求された領域を含むブロックのデータを、フラッシュメモリ部16内のライト要求された領域を含むブロックに転送する(ステップS311)。
プロセッサ部4は、インタフェース部3を介してホストコンピュータへライト動作の終了を通知する(ステップS312)。
これにより、ホストコンピュータは、終了通知を受け、ライト動作を終了する。
【0035】
また、上記ステップS304において、フラッシュメモリ部16内のライト要求された領域への上書きが可能な場合は、上述した半導体記憶装置1と同様に図6に示すステップへ進むため、その後の動作については説明を省略する。
【0036】
このように、実施例1によれば、フラッシュメモリ部16に書込みを行うライトデータ領域が1ブロック分あり、かつ、その1ブロックがフラッシュメモリ部16のブロックに対応している場合は、フラッシュメモリ部16からバッファ部17への該当ブロックのデータ転送を行わないようにしたので、このような場合のフラッシュメモリ部16からバッファ部17へのデータ転送処理がなくなり、ライト動作時の高速化が図れ、装置としての性能向上となる。
【0037】
次に、基本的な構成の半導体記憶装置1に対して、転送データ管理部を設けた実施例2を説明する。
《実施例2》
図8は、その構成を示すブロック図である。
この図8において、21は半導体記憶装置、2はこの半導体記憶装置21が図示しないホストコンピュータと接続されるためのシステムバスである。また、半導体記憶装置21は、インタフェース部23、プロセッサ部24、プロセッサメモリ部25、フラッシュメモリ部26、バッファ部27、内部バス28から構成されている。
【0038】
また、この実施例2において、インタフェース部23、プロセッサメモリ部25〜内部バス28の構成は、上記実施例1におけるインタフェース部13、プロセッサメモリ部15〜内部バス18の構成と同様であるため、ここでの説明は省略する。
【0039】
プロセッサ部24は、上記実施例1と同様に、ホストコンピュータからのコマンドを解釈し、半導体記憶装置21をディスク装置に見せるように制御し、フラッシュメモリ部26およびバッファ部27に対するデータ書換えの制御を行う部分である。また、このプロセッサ部24は、転送データ管理部24aを備えている。この転送データ管理部24aは、ホストコンピュータからのライト要求があった場合、対応するフラッシュメモリ部26のアドレスに基づき、上書きを行うライトデータ領域のデータを除いて1ブロック分のデータ転送を行い、かつ、バッファ部27上でライトデータ領域の書込みを行い、フラッシュメモリ部26の該当ブロックの消去を行った後、バッファ部7上の1ブロック分のデータを書戻す機能を備えているものである。
【0040】
次に、上記実施例2の半導体記憶装置21の動作を説明する。
[リード動作]
ここで、本実施例のリード動作は、基本的な構成の半導体記憶装置1の動作フローと同様である。即ち、その動作は図4に示したフローチャートと同様であるため、ここでの説明は省略する。
【0041】
[ライト動作]
図9はライト動作のフローチャートである。
ホストコンピュータがライト動作を要求する場合、半導体記憶装置21に対し、ライトコマンド、ライトデータ数、先頭アドレスを発行する。
インタフェース部23は、リード動作同様、インタフェース部23内の図示しないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタに、これらライトコマンド、ライトデータ数、先頭アドレスをセットし、プロセッサ部24に割り込みを上げる(ステップS401)。
【0042】
プロセッサ部24は、割り込みを受け付けると、コマンドレジスタをリードし、ホストコンピュータがライトコマンドを発行したことを認識する(ステップS402)。次に、プロセッサ部24はデータ数レジスタと先頭アドレスレジスタをリードし、フラッシュメモリ部26へ書込みを行う領域を知り(ステップS403)、フラッシュメモリ部26内の該領域への上書きが可能か否かを判断する(ステップS404)。
ステップS404において、フラッシュメモリ部26への上書きが不可能な場合は、ステップS405へ進み、フラッシュメモリ部26内の上書きが必要な領域が含まれる1ブロック分のデータにおいて、上書きを行うライトデータ領域のデータを除いた1ブロック分のデータを転送し、バッファ部27に格納する。
【0043】
図10は、その転送動作の説明図である。
即ち、フラッシュメモリ部26のあるブロック(ブロックiとする)にデータが格納されており、そのデータ領域に上書き要求があったとする。このような場合、転送データ管理部24aは、上書き要求のアドレスに基づき、ブロックiにおける上書き領域以外の領域のみをバッファ部27に転送するものである。
【0044】
その後は、基本的な構成の半導体記憶装置1のライト動作と同様に、フラッシュメモリ部26内の該当するブロックのデータを消去する(ステップS406)。
そして、これ以降のステップS407〜S411の動作は、図5におけるステップS207〜S211および図8におけるステップS308〜S312の動作と同様であるため、ここでの説明は省略する。
また、上記ステップS404において、フラッシュメモリ部26内のライト要求された領域への上書きが可能な場合は、上述した基本的な構成の半導体記憶装置1と同様に図6に示すステップへ進むため、その後の動作については説明を省略する。
【0045】
このように、実施例2によれば、ホストコンピュータからのライト要求時、該当ブロックにおける上書き領域のデータは、フラッシュメモリ部26からバッファ部27へ退避させないようにしたので、このような場合のフラッシュメモリ部26からバッファ部27へのデータ転送量を少なくすることができ、従って、ライト動作時の高速化が図れ、装置としての性能向上となる。
【0046】
次に、基本的な構成の半導体記憶装置1に対して、ブロック制御テーブル部とブロック制御部とを設けた実施例3を説明する。
《実施例3》
図11は、その構成を示すブロック図である。
この図11において、31は半導体記憶装置、2はこの半導体記憶装置31が図示しないホストコンピュータと接続されるためのシステムバスである。また、半導体記憶装置31は、インタフェース部33、プロセッサ部34、プロセッサメモリ部35、フラッシュメモリ部36、バッファ部37、ブロック制御テーブル部38、内部バス39から構成されている。
【0047】
また、この実施例3において、インタフェース部33、プロセッサメモリ部35、フラッシュメモリ部36、バッファ部37および内部バス39の構成は、上記実施例1におけるインタフェース部13、プロセッサメモリ部15、フラッシュメモリ部16、バッファ部17および内部バス18の構成と同様であるため、ここでの説明は省略する。
【0048】
プロセッサ部34は、上記実施例1、2と同様に、ホストコンピュータからのコマンドを解釈し、半導体記憶装置31をディスク装置に見せるように制御し、フラッシュメモリ部36およびバッファ部37に対するデータ書換えの制御を行う部分である。また、このプロセッサ部34は、ブロック制御部34aを備えている。このブロック制御部34aは、ホストコンピュータからのライト要求があった場合、ブロック制御テーブル部38の内容に基づき、フラッシュメモリ部36の該当ブロックにおいて、データが格納されている範囲以外の領域はバッファ部37に退避させないようデータ転送制御を行う機能を備えているものである。
【0049】
また、ブロック制御テーブル部38は、次のように構成されている。
図12は、ブロック制御テーブル部38の説明図である。
ブロック制御テーブル部38は、フラッシュメモリ部36を構成しているFEEPROMの消去単位であるブロック単位で管理するよう構成されている。即ち、ブロックNo部38a、先頭アドレス部38bおよびデータ範囲部38cとで構成されており、これらのブロックNo部38a、先頭アドレス部38bおよびデータ範囲部38cは、フラッシュメモリ部36のブロックに対応した数が設けられている。ここで、ブロックNo部38aの値1〜mは、フラッシュメモリ部36の各ブロック1〜mに対応しており、先頭アドレス部38bの値は、各ブロック内のデータ格納領域の先頭アドレスを示し、データ範囲部38cの値は、先頭アドレスから、そのブロック内におけるデータ格納領域の最後のアドレスまでの範囲を示している。
【0050】
例えば、図示状態のように、あるブロックiには、データ格納領域がアドレスi1〜i2とアドレスi3〜i4の二つあるとした場合、ブロックNo部38aの「i」の先頭アドレス部38bは、データ格納領域i1〜i2の先頭アドレスであるアドレスi1であり、また、データ範囲部38cの値は、アドレスi1からデータ格納領域i3〜i4の末尾アドレスi4までのデータ量dとなっている。
【0051】
次に、上記実施例3の半導体記憶装置31の動作を説明する。
[リード動作]
ここで、本実施例のリード動作は、基本的な構成の半導体記憶装置1の動作フローと同様である。即ち、その動作は図4に示したフローチャートと同様であるため、ここでの説明は省略する。
【0052】
[ライト動作]
図13および図14はライト動作のフローチャートである。
ホストコンピュータがライト動作を要求する場合、半導体記憶装置31に対し、ライトコマンド、ライトデータ数、先頭アドレスを発行する。
インタフェース部33は、リード動作同様、インタフェース部33内の図示しないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタに、これらライトコマンド、ライトデータ数、先頭アドレスをセットし、プロセッサ部34に割り込みを上げる(ステップS501)。
【0053】
プロセッサ部34は、割り込みを受け付けると、コマンドレジスタをリードし、ホストコンピュータがライトコマンドを発行したことを認識する(ステップS502)。次に、プロセッサ部34はデータ数レジスタと先頭アドレスレジスタをリードし、フラッシュメモリ部36へ書込みを行う領域を知り(ステップS503)、フラッシュメモリ部36内の該領域への上書きが可能か否かを判断する(ステップS504)。
尚、ここまでの動作は上記各実施例の動作と同様である。
【0054】
ステップS504において、フラッシュメモリ部36への上書きが不可能な場合、ブロック制御部34aは、ブロック制御テーブル部38を参照し、先頭アドレス部38bで示される先頭アドレスからデータ範囲部38cで示されるデータ数分だけのフラッシュメモリ部36内のデータをバッファ部37に転送する(ステップS505)。
【0055】
その後のステップS506〜S509の動作は、上記各実施例の動作と同様に、フラッシュメモリ部36内の上書きが必要な領域が含まれる1ブロック分のデータを消去し(ステップS506)、更に、インタフェース部33を介してホストコンピュータに割り込みを上げてデータを要求する。これにより、ホストコンピュータは、1ワードのデータをインタフェース部33にライトする(ステップS508)。そして、プロセッサ部34は、ホストコンピュータから送られてくるデータを、フラッシュメモリ部36へ書込みを行う領域に合わせてバッファ部37内の所定の領域に1ワードずつ書込む(ステップS508)。
【0056】
そして、ホストコンピュータから必要なデータ数分のライト処理が終了したかを判定し(ステップS509)、終了した場合は、ブロック制御テーブル部38に対して、ホストコンピュータからの書込み要求が未書込み領域に及んでいた場合は、先頭アドレス部38bとデータ範囲部38cの値を更新する(ステップS510)。
【0057】
次に、ブロック制御テーブル部38を参照し、先頭アドレス部38bで示される先頭アドレスからデータ範囲部38cで示されるデータ数分だけのバッファ部37内のデータを転送し、フラッシュメモリ部36内の該当ブロックに格納し(ステップS511)、プロセッサ部34はホストコンピュータに対して終了を通知するため、割り込みをインタフェース部33を介して上げる(ステップS512)。
【0058】
また、ステップS503において、フラッシュメモリ部36への上書きが可能な場合は、図14に示すステップに進み、プロセッサ部34はインタフェース部33を介してホストコンピュータに割り込みを上げてデータを要求し、ホストコンピュータのライト処理が終了すると(ステップS513)、プロセッサ部34はホストコンピュータから送られてきたデータをバッファ部37を介さず直接フラッシュメモリ部36に書込む(ステップS515)。
【0059】
必要なデータ数がフラッシュメモリ部36に書込まれると(ステップS515)、プロセッサ部34のブロック制御部34aは、ブロック制御テーブル部38に対して、ホストコンピュータからの書込み要求が未書込み領域に及んでいた場合は、先頭アドレス部62とデータ範囲部63を更新し(ステップS516)、プロセッサ部34はホストコンピュータに対し、終了を通知するための割り込みをインタフェース部33を介して行う(ステップS517)。
【0060】
このように、実施例3によれば、ホストコンピュータからのライト要求時、該当ブロックにおけるデータ範囲のみを、フラッシュメモリ部36からバッファ部37へ退避させるようにしたので、不要な部分の転送処理を行うことがないことから、フラッシュメモリ部36からバッファ部37へのデータ転送量を少なくすることができ、従って、ライト動作時の高速化が図れ、装置としての性能向上となる。
【0061】
次に、基本的な構成の半導体記憶装置1に対して、セクタ制御テーブル部とセクタ制御部とを設けた実施例4を説明する。
《実施例4》
図15は、その構成を示すブロック図である。
この図15において、41は半導体記憶装置、2はこの半導体記憶装置41が図示しないホストコンピュータと接続されるためのシステムバスである。また、半導体記憶装置41は、インタフェース部43、プロセッサ部44、プロセッサメモリ部45、フラッシュメモリ部46、バッファ部47、セクタ制御テーブル部48、内部バス49から構成されている。
【0062】
また、この実施例4において、インタフェース部43、プロセッサメモリ部45、フラッシュメモリ部46、バッファ部47および内部バス49の構成は、上記実施例1におけるインタフェース部13、プロセッサメモリ部15、フラッシュメモリ部16、バッファ部17および内部バス18の構成と同様であるため、ここでの説明は省略する。
【0063】
プロセッサ部44は、上記各実施例と同様に、ホストコンピュータからのコマンドを解釈し、半導体記憶装置41をディスク装置に見せるように制御し、フラッシュメモリ部46およびバッファ部47に対するデータ書換えの制御を行う部分である。また、このプロセッサ部44は、セクタ制御部44aを備えている。このセクタ制御部44aは、ホストコンピュータからのライト要求があった場合、セクタ制御テーブル部48の内容に基づき、フラッシュメモリ部46の該当ブロックにおいて、データが格納されているセクタのデータのみバッファ部47に退避させるようデータ転送制御を行う機能を備えているものである。
【0064】
また、セクタ制御テーブル部48は、次のように構成されている。
図16は、セクタ制御テーブル部48の説明図である。
セクタ制御テーブル部48は、ホストコンピュータからのライト要求において最小のデータ数単位であるセクタで管理されており、各セクタに対応したバリッドビット部72を有する。このバリッドビットは、該当するセクタにデータが書込まれている場合は“1”、該当するセクタにデータが書込まれていない場合は“0”にセットされる。また、セクタNo部71は、フラッシュメモリ部46の一つのブロック内のセクタに対応している。
【0065】
次に、上記実施例4の半導体記憶装置41の動作を説明する。
[リード動作]
ここで、本実施例のリード動作は、基本的な構成の半導体記憶装置1の動作フローと同様である。即ち、その動作は図4に示したフローチャートと同様であるため、ここでの説明は省略する。
【0066】
[ライト動作]
図17および図18はライト動作のフローチャートである。
ホストコンピュータがライト動作を要求する場合、半導体記憶装置41に対し、ライトコマンド、ライトデータ数、先頭アドレスを発行する。
インタフェース部43は、リード動作同様、インタフェース部43内の図示しないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタに、これらライトコマンド、ライトデータ数、先頭アドレスをセットし、プロセッサ部44に割り込みを上げる(ステップS601)。
【0067】
プロセッサ部44は、割り込みを受け付けると、コマンドレジスタをリードし、ホストコンピュータがライトコマンドを発行したことを認識する(ステップS602)。次に、プロセッサ部44はデータ数レジスタと先頭アドレスレジスタをリードし、フラッシュメモリ部46へ書込みを行う領域を知り(ステップS603)、フラッシュメモリ部46内の該領域への上書きが可能か否かを判断する(ステップS604)。
尚、ここまでの動作は上記各実施例の動作と同様である。
【0068】
ステップS604において、フラッシュメモリ部46への上書きが不可能な場合、セクタ制御部44aは、セクタ制御テーブル部48における該当ブロックを参照し、バリットビットが“1”となっているセクタのデータだけを、フラッシュメモリ部46からバッファ部47に転送する(ステップS605)。
【0069】
また、その後のステップS606〜S609の動作は、上記各実施例の動作と同様である。即ち、フラッシュメモリ部46内の上書きが必要な領域が含まれる1ブロック分のデータを消去し(ステップS606)、更に、インタフェース部43を介してホストコンピュータに割り込みを上げてデータを要求する。これにより、ホストコンピュータは、1ワードのデータをインタフェース部43にライトする(ステップS608)。そして、プロセッサ部44は、ホストコンピュータから送られてくるデータを、フラッシュメモリ部46へ書込みを行う領域に合わせてバッファ部47内の所定の領域に1ワードずつ書込む(ステップS608)。
【0070】
そして、ホストコンピュータから必要なデータ数分のライト処理が終了したかを判定し(ステップS609)、終了した場合は、セクタ制御テーブル部48に対して、ホストコンピュータからの書込み要求が未書込み領域(バリットビット部72の値が“0”)に及んでいた場合は、そのバリットビット部72の値を“1”に更新する。
【0071】
次に、セクタ制御テーブル部48を参照し、バッファ部47内のデータおける、バリットビット部72が“1”のセクタのデータだけを転送し、フラッシュメモリ部46内の該当ブロックに格納し(ステップS611)、プロセッサ部44はホストコンピュータに対して終了を通知するため、割り込みをインタフェース部43を介して上げる(ステップS612)。
【0072】
また、ステップS603において、フラッシュメモリ部46への上書きが可能な場合は、図18に示すステップに進み、プロセッサ部44はインタフェース部43を介してホストコンピュータに割り込みを上げてデータを要求し、ホストコンピュータのライト処理が終了すると(ステップS613)、プロセッサ部44はホストコンピュータから送られてきたデータをバッファ部47を介さず直接フラッシュメモリ部46に書込む(ステップS615)。
【0073】
必要なデータ数がフラッシュメモリ部46に書込まれると(ステップS615)、プロセッサ部44のセクタ制御部44aは、セクタ制御テーブル部48に対して、ホストコンピュータからの書込み要求が未書込み領域に及んでいた場合は、バリットビット部72の値を“1”に更新し(ステップS616)、プロセッサ部44はホストコンピュータに対し、終了を通知するための割り込みをインタフェース部43を介して行う(ステップS617)。
【0074】
このように、実施例4によれば、フラッシュメモリ部46のデータをセクタ単位で管理し、ホストコンピュータからのライト要求時、該当ブロックにおけるデータの書込まれているセクタのみを、フラッシュメモリ部46からバッファ部47へ退避させるようにしたので、不要な部分の転送処理を行うことがないことから、フラッシュメモリ部46からバッファ部47へのデータ転送量を少なくすることができ、従って、ライト動作時の高速化が図れ、装置としての性能向上となる。
【0075】
次に、プロセッサ部がインタフェース部からライトデータをリードしている間に、フラッシュメモリ部からバッファ部へデータを退避させるようにした実施例5を説明する。
《実施例5》
図19は、その構成を示すブロック図である。
この図19において、51は半導体記憶装置、2は半導体記憶装置51が図示しないホストコンピュータと接続されるためのシステムバスである。また、半導体記憶装置51は、インタフェース部53、プロセッサ部54、プロセッサメモリ部55、フラッシュメモリ部56、バッファ部57、内部バス58a、メモリバス58b、メモリ管理部59から構成されている。
【0076】
また、この実施例5において、インタフェース部53、プロセッサメモリ部55、フラッシュメモリ部56、バッファ部57および内部バス58aの構成は、上記実施例1におけるインタフェース部13、プロセッサメモリ部15、フラッシュメモリ部16、バッファ部17および内部バス18の構成と同様であるため、ここでの説明は省略する。
プロセッサ部54は、上記各実施例と同様に、ホストコンピュータからのコマンドを解釈し、半導体記憶装置51をディスク装置に見せるように制御すると共に、メモリ管理部59に対して、フラッシュメモリ部46およびバッファ部47に対するデータ書換えの制御指示を行う部分である。
【0077】
メモリ管理部59は、内部バス58aを介してインタフェース部53、プロセッサ部54およびプロセッサメモリ部55と接続されると共に、内部バス58aとは異なるバスであるメモリバス58bを介してフラッシュメモリ部56とバッファ部57とに接続されている。このメモリ管理部59は、プロセッサ部54からのライトデータをバッファ部57やフラッシュメモリ部56に転送制御すると共に、プロセッサ部54がインタフェース部53からライトデータを読み取っている間に、メモリバス58bを介してフラッシュメモリ部56からバッファ部57にデータ転送を行う機能を有している。
【0078】
図20は、上記メモリ管理部59の内部構成を示すブロック図である。
メモリ管理部59は、メモリリード回路102、メモリライト回路103、メモリ・バッファコピー回路104、バッファリード回路105、バッファライト回路106、および、これらメモリリード回路102〜バッファライト回路106を制御する制御回路101からなる。
【0079】
このような構成において、先ず、半導体記憶装置51がリード動作を行う場合は、メモリリード回路102が動作し、プロセッサ部54からの要求に合わせてフラッシュメモリ部56から内部バス58a側にデータを転送する。つまり、プロセッサ部54からは、フラッシュメモリ部56が内部バス58aに直結しているように見える。
【0080】
次に、半導体記憶装置がライト動作を行う場合、ライト要求された領域への上書きが不可能な時は、プロセッサ部54がインタフェース部53よりバッファ部57へデータを転送する。これは、プロセッサ部54がインタフェース部53よりデータをリードする動作と、プロセッサ部54がバッファ部57へデータをライトする動作からなる。
メモリ管理部59は、予め、フラッシュメモリ部56内のデータをバッファ部57に転送する命令をプロセッサ部54から受ける。プロセッサ部54がインタフェース部53よりデータをリードする時には、制御回路101は、メモリ・バッファコピー回路104を動作させ、順次フラッシュメモリ部56からバッファ部57へメモリバス58bを介してデータを転送する。
【0081】
また、プロセッサ部54がインタフェース部53から読み出したデータをバッファ部57へライトする時には、制御回路101は、バッファライト回路106を動作させ、バッファ部57にデータを転送する。これにより、インタフェース部53からバッファ部57へのデータ転送と、フラッシュメモリ部56からバッファ部57へのデータ転送とを同時に実行することができる。
【0082】
また、バッファ部57からフラッシュメモリ部56へのデータ転送時には、メモリライト回路103とバッファリード回路105を、プロセッサ部54からの要求に合わせて動作させ、バッファ部57からフラッシュメモリ部56へデータを転送する。
更に、半導体記憶装置51がライト動作を行う場合、ライト要求された領域への上書きが可能な場合には、メモリライト回路103を動作させ、プロセッサ部54がインタフェース部53より転送してくるデータをフラッシュメモリ部56へ転送する。つまり、この場合、プロセッサ部54からは、フラッシュメモリ部56が内部バス58aに直結しているように見える。
【0083】
次に、上記実施例5のメモリ制御方法である半導体記憶装置51の動作について説明する。
[リード動作]
本実施例のリード動作は、メモリ管理部59が、内部バス58aとフラッシュメモリ部56とが直接接続されているように見せかけるため、基本的な構成の半導体記憶装置1の動作フローと同様である。即ち、その動作は図4に示したフローチャートと同様であるため、ここでの説明は省略する。
【0084】
[ライト動作]
図21はライト動作のフローチャートである。
ホストコンピュータが、半導体記憶装置51に対しライト要求する場合、リード動作と同様に、半導体記憶装置51へライトコマンド、ライトデータ数、先頭アドレスを送る(ステップS701)。
【0085】
インタフェース部53は、前記のライトコマンド、ライトデータ数、先頭アドレスを、インタフェース部53内の図示されていないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタにセットする。また、プロセッサ部54にホストコンピュータからコマンドがきたことを知らせる。プロセッサ部54は、コマンドレジスタをリードし、ホストコンピュータがライト要求してきたことを認識する(ステップS702)。また、データ数レジスタと先頭アドレスレジスタをリードし、フラッシュメモリ部56内のどの領域がライト要求されたかを認識し(ステップS703)、その領域への上書きが可能か否かを判断する(ステップS704)。
【0086】
フラッシュメモリ部56内のライト要求された領域への上書きが不可能な場合は、プロセッサ部54は、インタフェース部53を介してホストコンピュータへデータを転送する許可を出す。通知を受けたホストコンピュータは、半導体記憶装置51へデータ転送を開始する(ステップS705)。
尚、以上の動作は、上記各実施例のライト動作と同様である。
【0087】
半導体記憶装置51は、ホストコンピュータからのデータをシステムバス12を介し、インタフェース部53で受け取る。プロセッサ部54は、メモリ管理部59に対し、フラッシュメモリ部56内のライト要求された領域が含まれる1ブロック内の全てのデータを、バッファ部57に転送する命令を出す。これにより、メモリ管理部59は、フラッシュメモリ部56から、ライト要求された領域を含むブロックのデータをバッファ部57へ転送する。一方、メモリ管理部59によるデータ転送を行っている間、プロセッサ部54は、インタフェース部53の1ワードのデータを読み取る(ステップS706)。
【0088】
そして、プロセッサ部54が、ホストコンピュータから送られてきたデータを、1ワードずつメモリ管理部59へ転送する。メモリ管理部59は、プロセッサ部54によってインタフェース部53から転送されてくるデータをライト要求された領域に対応するバッファ部57内の領域へ転送する(ステップS707)。
【0089】
このような動作を繰り返すことによって、要求されたデータ数を転送したか否かをプロセッサ部54が監視し(ステップS708)、必要なデータ数をホストコンピュータから転送し終えると、フラッシュメモリ部56内のライト要求された領域が含まれるブロックを消去する(ステップS709)。
その後、バッファ部57のライト要求された領域を含むブロックのデータを、フラッシュメモリ部56内の該当ブロックに転送する(ステップS710)。そして、プロセッサ部54は、インタフェース部53を介してホストコンピュータへライト動作の終了を通知する(ステップS711)。
ホストコンピュータは、終了通知を受け、ライト動作を終了する。
【0090】
一方、フラッシュメモリ部56内のライト要求された領域への上書きが可能な場合の本実施例のライト動作は、メモリ管理部59が内部バス58とフラッシュメモリ部56が直接接続されているように見せかけるため、基本的な構成の半導体記憶装置のライト動作と同様である。即ち、図6に示すステップに進むため、その動作については、説明を省略する。
【0091】
このように、実施例5によれば、プロセッサ部54によるインタフェース部53からのライトデータのリード動作と、メモリ管理部59によるフラッシュメモリ部56からバッファ部57へのデータ転送を同時に行うようにしたので、ライト動作時における処理時間が短縮され、装置としての性能向上となる。
【0092】
次に、プロセッサ部がバッファ部にライトデータを転送している間にフラッシュメモリ部の該当ブロックの消去を行うようにした実施例6を説明する。
《実施例6》
図22は、その構成を示すブロック図である。
図において、61は半導体記憶装置、2は半導体記憶装置61を接続するホストコンピュータのシステムバスである。半導体記憶装置61は、インタフェース部63、プロセッサ部64、プロセッサメモリ部65、フラッシュメモリ部66、バッファ部67、内部バス68、メモリ消去制御部69から構成される。
【0093】
また、この実施例6において、インタフェース部63、プロセッサメモリ部65、フラッシュメモリ部66、バッファ部67および内部バス68の構成は、上記実施例1におけるインタフェース部13、プロセッサメモリ部15、フラッシュメモリ部16、バッファ部17および内部バス18の構成と同様であるため、ここでの説明は省略する。
【0094】
プロセッサ部64は、上記各実施例と同様に、ホストコンピュータからのコマンドを解釈し、半導体記憶装置61をディスク装置に見せるように制御すると共に、メモリ消去制御部69に対して、フラッシュメモリ部46の該当ブロックの消去指示を行う部分である。
メモリ消去制御部69は、プロセッサ部64より命令を受けて、フラッシュメモリ部66の消去を開始し、その状態を監視する機能を有するものである。また、消去の終了や異常発生等はプロセッサ部64がメモリ消去制御部69内の図示しないステータスレジスタをリードすることにより行う。
【0095】
次に、上記実施例6のメモリ制御方法である半導体記憶装置61の動作について説明する。
[リード動作]
本実施例のリード動作は、基本的な構成の半導体記憶装置1の動作フローと同様である。即ち、その動作は図4に示したフローチャートと同様であるため、ここでの説明は省略する。
【0096】
[ライト動作]
図23はライト動作のフローチャートである。
ホストコンピュータが、半導体記憶装置61に対しライト要求する場合、リード動作と同様に、半導体記憶装置61へライトコマンド、ライトデータ数、先頭アドレスを送る(ステップS801)。
【0097】
インタフェース部63は、前記のライトコマンド、ライトデータ数、先頭アドレスを、インタフェース部63内の図示されていないコマンドレジスタ、データ数レジスタ、先頭アドレスレジスタにセットする。また、プロセッサ部64にホストコンピュータからコマンドがきたことを知らせる。プロセッサ部64は、コマンドレジスタをリードし、ホストコンピュータがライト要求してきたことを認識する(ステップS802)。また、データ数レジスタと先頭アドレスレジスタをリードし、フラッシュメモリ部66内のどの領域がライト要求されたかを認識し(ステップS803)、その領域への上書きが可能か否かを判断する(ステップS804)。
尚、ここまでの動作は、上記各実施例のライト動作と同様である。
【0098】
フラッシュメモリ部66内のライト要求された領域への上書きが不可能な場合、プロセッサ部64は、フラッシュメモリ部66内のライト要求された領域が含まれる1ブロック内の全てのデータを、バッファ部67に転送する(ステップS805)。
そして、フラッシュメモリ部66内のライト要求された領域が含まれるブロック内の全てのデータの転送を終えると、プロセッサ部64は、そのブロックを消去する命令をメモリ消去制御部69に発行する(ステップS806)。
これにより、メモリ消去制御部69は、フラッシュメモリ部66の消去動作を行い、フラッシュメモリ部69は該当ブロックの消去動作を実行する。
【0099】
一方、プロセッサ部64は、インタフェース部63を介してホストコンピュータへ書込むデータを転送する許可を出す。通知を受けたホストコンピュータは、半導体記憶装置61へデータ転送を開始する(ステップS807)。半導体記憶装置61は、ホストコンピュータからのデータをシステムバス2を介し、インタフェース部63で受け取る。プロセッサ部64は、ホストコンピュータから送られてきたデータを、インタフェース部63からライト要求された領域に対応するバッファ部67内の領域へ転送する(ステップS808)。そして、この動作を、必要なデータ数をホストコンピュータから転送し終えるまで繰り返す。
【0100】
必要なデータ数をホストコンピュータから転送し終えると(ステップS809)、プロセッサ部64は、フラッシュメモリ部66内のライト要求された領域を含むブロックが消去されたかメモリ消去制御部69に確認する(ステップS810)。
【0101】
尚、フラッシュメモリ部69は、その消去が終了すると、消去フラグをセットするようになっており、メモリ消去制御部69は、ある一定間隔でこのフラグの確認を行うことによって、フラッシュメモリ部69の該当ブロックが消去されたかどうかを確認するものである。
【0102】
上記ステップS810において、消去が終了していなければ、終了するまで待つ。消去が完了していれば、バッファ部67のライト要求された領域を含むブロックのデータを、フラッシュメモリ部66内の該当ブロックに転送する(ステップS811)。プロセッサ部64は、インタフェース部63を介してホストコンピュータへライト動作の終了を通知する(ステップS812)。
ホストコンピュータは、終了通知を受け、ライト動作を終了する。
【0103】
一方、フラッシュメモリ部66内のライト要求された領域への上書きが可能な場合の本実施例のライト動作は、基本的な構成の半導体記憶装置のライト動作と同様である。即ち、図6に示すステップに進むため、その動作については、説明を省略する。
【0104】
このように、実施例6によれば、プロセッサ部64からバッファ部67へのデータ転送動作中に、フラッシュメモリ部66におけるライト要求されたデータを含むブロックの消去動作を実行するようにしたので、ライト動作時における処理時間が短縮され、装置としての性能向上となる。
【0105】
【発明の効果】
以上、詳細に説明したように、本発明の半導体記憶装置とメモリ制御方法によれば、フラッシュメモリ部のデータ書換えを行う場合に、バッファ部への転送制御やフラッシュメモリ部のブロック消去制御を行うようにしたので、データ書換え時の動作を高速化することができ、従って、半導体記憶装置としての性能向上を図ることができる。
【図面の簡単な説明】
【図1】本発明の半導体記憶装置における実施例1のブロック図である。
【図2】半導体記憶装置の基本的な構成を示すブロック図である。
【図3】半導体記憶装置のフラッシュメモリ部とバッファ部の容量の関係説明図である。
【図4】半導体記憶装置のリード動作を示すフローチャートである。
【図5】半導体記憶装置のライト動作を示すフローチャート(その1)である。
【図6】半導体記憶装置のライト動作を示すフローチャート(その2)である。
【図7】本発明の半導体記憶装置における実施例1のライト動作を示すフローチャートである。
【図8】本発明の半導体記憶装置における実施例2の構成を示すブロック図である。
【図9】本発明の半導体記憶装置における実施例2のライト動作を示すフローチャートである。
【図10】本発明の半導体記憶装置における実施例2のデータ転送動作の説明図である。
【図11】本発明の半導体記憶装置における実施例3の構成を示すブロック図である。
【図12】本発明の半導体記憶装置における実施例3のブロック制御テーブル部の説明図である。
【図13】本発明の半導体記憶装置における実施例3のライト動作を示すフローチャート(その1)である。
【図14】本発明の半導体記憶装置における実施例3のライト動作を示すフローチャート(その2)である。
【図15】本発明の半導体記憶装置における実施例4の構成を示すブロック図である。
【図16】本発明の半導体記憶装置における実施例4のセクタ制御テーブル部の説明図である。
【図17】本発明の半導体記憶装置における実施例4のライト動作を示すフローチャート(その1)である。
【図18】本発明の半導体記憶装置における実施例4のライト動作を示すフローチャート(その2)である。
【図19】本発明の半導体記憶装置における実施例5の構成を示すブロック図である。
【図20】本発明の半導体記憶装置における実施例5のメモリ管理部のブロック図である。
【図21】本発明の半導体記憶装置における実施例5のライト動作を示すフローチャートである。
【図22】本発明の半導体記憶装置における実施例6の構成を示すブロック図である。
【図23】本発明の半導体記憶装置における実施例6のライト動作を示すフローチャートである。
【符号の説明】
11、21、31、41、51、61 半導体記憶装置
13、23、33、43、53、63 インタフェース部
14、24、34、44、54、64 プロセッサ部
14a 転送制御部
16、26、36、46、56、66 フラッシュメモリ部
17、27、37、47、57、67 バッファ部
18、28、39、48、58a、68 内部バス
24a 転送データ管理部
34a ブロック制御部
38 ブロック制御テーブル部
44a セクタ制御部
48 セクタ制御テーブル部
58b メモリバス
69 メモリ消去制御部
Claims (5)
- データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、
前記ライトデータの書込みに必要なデータ領域と前記ブロックのデータ領域とを比較し、前記ライトデータのデータ領域が該ブロックのそれより小さいと、該ブロックの全データを前記バッファ部に転送して該バッファ部上のデータを前記ライトデータに書換え、前記ライトデータのデータ領域が前記ブロックのそれと一致すると、該ブロックのデータを前記バッファ部に転送せずに該バッファ部に前記ライトデータを直接書込み、前記フラッシュメモリ部のデータの消去後の前記ブロックに、前記バッファ部の全データを書込む転送制御部を更に備えることを特徴とする半導体記憶装置。 - データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、
前記フラッシュメモリ部の各ブロック毎にデータの書込領域を示す領域指示データが格納されているブロック制御テーブル部と、
該ブロック制御テーブル部の書換え対象のブロックの前記領域指示データに基づいて該ブロックの前記書込領域のデータを前記バッファ部に転送して該バッファ部上のデータを前記ライトデータにより書換え、前記フラッシュメモリ部のデータの消去後の前記ブロックに前記バッファ部のデータを書込むと共に前記ライトデータの書換えにより該ブロックの前記書込領域が変化すると前記ブロック制御テーブル部の対応するブロックの領域指示データを変化した書込領域を示す領域指示データに更新するブロック制御部とを含むことを特徴とする半導体記憶装置。 - データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、
前記フラッシュメモリ部の各ブロック毎に、書込領域を分けた各セクタに対しデータの有無を示すデータ有無指示データが格納されているセクタ制御テーブル部と、
該セクタ制御テーブル部の書換え対象のブロックの前記データ有無指示データに基づいて該ブロックのデータを有するセクタのデータのみを前記バッファ部に転送して該バッファ部上のデータを前記ライトデータにより書換えると共に該書換えにより新たにデータの書込まれたセクタが生じると前記セクタ制御テーブル部の対応するセクタのデータ有無指示データをデータ有りとして更新し、更新後の前記セクタ制御テーブル部のデータ有無指示データに基づいて前記バッファ部上のデータを転送して前記フラッシュメモリ部のデータの消去後の前記ブロックに書込むセクタ制御部とを含むことを特徴とする半導体記憶装置。 - データがブロック単位で消去可能に書込まれているフラッシュメモリ部に対し書換え対象のブロックのデータをバッファ部に転送し、該バッファ部のデータをホストから受信したライトデータ群より書換え、該書換えたバッファ部のデータを前記フラッシュメモリ部のデータの消去後の前記ブロックに書込むメモリ制御方法であって、
前記ホストから現在のライトデータを受信して次のライトデータを受信するまでの間に、前記フラッシュメモリ部の前記ブロックのデータを前記バッファ部に転送し、かつ該バッファ部に前記現在のライトデータを書換えのために転送することを特徴とするメモリ制御方法。 - データがブロック単位で消去可能に書込まれているフラッシュメモリ部と、該フラッシュメモリ部の書換え対象のブロックのデータをホストから受信したライトデータに書換えるために用いるバッファ部とを備える半導体記憶装置において、
前記ホストからライトデータを受信する毎に該ライトデータを格納するインタフェース部と、
前記インタフェース部に格納されたライトデータを読み取って、当該ライトデータにより前記バッファ部のデータを書換えると共に、前記フラッシュメモリ部のデータ消去後のブロックに前記バッファ部上のデータを書戻すプロセッサ部と、
前記プロセッサ部と前記インタフェース部とを接続する内部バスとは異なるバスによって、前記フラッシュメモリ部と前記バッファ部とのデータ転送動作を制御し、前記プロセッサ部が前記インタフェース部からライトデータを読み込んでいる間に、前記フラッシュメモリ部のブロックのデータを前記バッファ部に転送するメモリ管理部とを備えたことを特徴とする半導体記憶装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP05665594A JP3539752B2 (ja) | 1994-03-02 | 1994-03-02 | 半導体記憶装置とメモリ制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP05665594A JP3539752B2 (ja) | 1994-03-02 | 1994-03-02 | 半導体記憶装置とメモリ制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07244992A JPH07244992A (ja) | 1995-09-19 |
JP3539752B2 true JP3539752B2 (ja) | 2004-07-07 |
Family
ID=13033398
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP05665594A Expired - Fee Related JP3539752B2 (ja) | 1994-03-02 | 1994-03-02 | 半導体記憶装置とメモリ制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3539752B2 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09319645A (ja) | 1996-05-24 | 1997-12-12 | Nec Corp | 不揮発性半導体記憶装置 |
US6571312B1 (en) * | 1999-02-19 | 2003-05-27 | Mitsubishi Denki Kabushiki Kaisha | Data storage method and data processing device using an erasure block buffer and write buffer for writing and erasing data in memory |
US7617352B2 (en) * | 2000-12-27 | 2009-11-10 | Tdk Corporation | Memory controller, flash memory system having memory controller and method for controlling flash memory device |
JP2004318933A (ja) * | 2003-04-11 | 2004-11-11 | Renesas Technology Corp | 半導体記憶装置 |
JP5130646B2 (ja) | 2005-06-06 | 2013-01-30 | ソニー株式会社 | 記憶装置 |
KR100758301B1 (ko) * | 2006-08-04 | 2007-09-12 | 삼성전자주식회사 | 메모리 카드 및 그것의 데이터 저장 방법 |
JP4582232B2 (ja) * | 2008-09-30 | 2010-11-17 | Tdk株式会社 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
DE102008061091A1 (de) * | 2008-12-08 | 2010-06-10 | Robert Bosch Gmbh | Verfahren zur Durchführung eines sequentiellen Datenzugriffes |
JP4829365B1 (ja) | 2010-05-31 | 2011-12-07 | 株式会社東芝 | データ記憶装置及びデータ書き込み方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3000606B2 (ja) * | 1990-02-20 | 2000-01-17 | ミノルタ株式会社 | データ処理装置 |
JPH0484216A (ja) * | 1990-07-26 | 1992-03-17 | Toshiba Corp | 半導体ディスク装置のデータ消去方法 |
JP3017524B2 (ja) * | 1990-10-09 | 2000-03-13 | 富士写真フイルム株式会社 | Icメモリカードにおけるデータ記録方法およびicメモリカードシステム |
JP2582487B2 (ja) * | 1991-07-12 | 1997-02-19 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 半導体メモリを用いた外部記憶システム及びその制御方法 |
JP3229345B2 (ja) * | 1991-09-11 | 2001-11-19 | ローム株式会社 | 不揮発性icメモリ |
JP3178909B2 (ja) * | 1992-01-10 | 2001-06-25 | 株式会社東芝 | 半導体メモリ装置 |
JPH05250884A (ja) * | 1992-03-04 | 1993-09-28 | Oki Electric Ind Co Ltd | 不揮発性記憶装置 |
JP3485938B2 (ja) * | 1992-03-31 | 2004-01-13 | 株式会社東芝 | 不揮発性半導体メモリ装置 |
JPH065094A (ja) * | 1992-06-17 | 1994-01-14 | Toshiba Corp | 不揮発性半導体記憶装置 |
JP3672576B2 (ja) * | 1992-07-01 | 2005-07-20 | 株式会社東芝 | 不揮発性半導体メモリ装置 |
-
1994
- 1994-03-02 JP JP05665594A patent/JP3539752B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH07244992A (ja) | 1995-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3898305B2 (ja) | 半導体記憶装置、半導体記憶装置の制御装置及び制御方法 | |
US6571312B1 (en) | Data storage method and data processing device using an erasure block buffer and write buffer for writing and erasing data in memory | |
JP3588231B2 (ja) | データ処理システム及びブロック消去型記憶媒体 | |
KR100578143B1 (ko) | 버퍼 메모리에 저장된 데이터를 무효화시키는 스킴을 갖는저장 시스템 및 그것을 포함한 컴퓨팅 시스템 | |
JP4713867B2 (ja) | メモリコントローラ,メモリ装置及びメモリコントローラの制御方法 | |
US20070245069A1 (en) | Storage Device, Memory Management Method and Program | |
US8185705B2 (en) | Information recording medium, information recording medium accessing apparatus and accessing method | |
JP2008033788A (ja) | 不揮発性記憶装置、データ記憶システム、およびデータ記憶方法 | |
KR19990029196A (ko) | 반도체 기억 장치 및 그 데이터 관리 방법 | |
US6510495B1 (en) | Data write method into nonvolatile memory, information processing device and recording medium | |
JP2003242470A (ja) | 外部接続機器及びホスト機器 | |
JP3539752B2 (ja) | 半導体記憶装置とメモリ制御方法 | |
JP2000020252A (ja) | 不揮発性半導体メモリを用いた記憶装置 | |
JP2003241908A (ja) | 外部接続機器及びホスト機器 | |
JP4242245B2 (ja) | フラッシュrom制御装置 | |
JP2003280979A (ja) | 情報記憶装置 | |
CN113407111A (zh) | 闪存控制器、闪存控制器的方法及记忆装置 | |
JP2000181784A (ja) | 書き換え可能な不揮発性記憶装置 | |
JP2005115562A (ja) | フラッシュrom制御装置 | |
JP4710274B2 (ja) | メモリ装置、メモリ装置の制御方法およびデータ処理システム | |
JP5180726B2 (ja) | 記憶装置およびデータ書き込み制御方法 | |
JPH05250884A (ja) | 不揮発性記憶装置 | |
US6898680B2 (en) | Minimization of overhead of non-volatile memory operation | |
JPH11305954A (ja) | 半導体記憶装置及び半導体記憶装置の書き換え制御方法 | |
JPH07271645A (ja) | 半導体記憶装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20031225 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20040204 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040316 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040323 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |