(57)【要約】【課題】実効的な書き込み速度を向上し、長寿命化を行える半導体記憶装置および半導体記憶装置の制御方法を提供する。【解決手段】ＮＡＮＤ型フラッシュメモリ１００を含む半導体記憶装置１０において、一時記憶部２００を設け、外部から送信された書き込みデータを一時記憶部２００に格納する。ＮＡＮＤ型フラッシュメモリ１００のどのブロックに書き込まれるかにより当該書き込みデータをエントリ単位に分類し、当該エントリごとのデータ量、書き込みが行われた順番により、どのエントリをＮＡＮＤ型フラッシュメモリ１００へ書き込むか決定する。【選択図】図１
2008197981.tif 000002
【特許請求の範囲】
【請求項１】
１回のブロック消去ごとに１回だけデータを書き込むことができ、前記ブロック消去の最小サイズが書き込みデータの最小サイズよりも大きいフラッシュメモリと、
外部装置から送信された複数の書き込みデータが一時的に記憶される第１のメモリと、
前記第１のメモリに記憶された前記書き込みデータの記憶位置と、前記外部装置から前記フラッシュメモリに対して出力された前記書き込みデータの記憶位置との対応関係が記憶される第２のメモリと、
前記書き込みデータが書き込まれる前記フラッシュメモリの消去ブロックに対応づけて前記第１のメモリに記憶された前記書き込みデータの量が記憶される第３のメモリと、 
前記外部装置から前記フラッシュメモリへの書き込み要求の順序が前記消去ブロック単位に付与され記憶される第４のメモリと、
前記第３のメモリに記憶される前記書き込みデータの量と前記第４のメモリに記憶される前記書き込み要求の順序とに基づいて前記第１のメモリから前記フラッシュメモリに書き込む前記書き込みデータを少なくとも１つ選択し、前記第２のメモリに記憶される前記対応関係に基づいて指定される前記フラッシュメモリの記憶位置へ選択した前記書き込みデータを書き込む制御部と
を有することを特徴とする半導体記憶装置。
【請求項２】
前記制御部は、前記第４のメモリに記憶される前記書き込み要求の順序が第１の規定順序である書き込み要求以前の書き込み要求により書き込まれ、かつ、前記第３のメモリに記憶される前記書き込みデータの量が最大である書き込みデータを前記第１のメモリから選択して前記フラッシュメモリに書き込むことを特徴とする請求項１に記載の半導体記憶装置。
【請求項３】
前記制御部は、前記第４のメモリに記憶される前記書き込み要求の順序が第１の規定順序である書き込み要求より新しい書き込み要求により書き込まれ、かつ、前記第３のメモリに記憶される前記書き込みデータの量が第２の既定値以上である前記書き込みデータを前記第１のメモリから選択して前記フラッシュメモリに書き込むこと特徴とする請求項１に記載の半導体記憶装置。
【請求項４】
前記制御部は、前記第４のメモリに記憶される前記書き込み要求の順序が第１の規定順序である書き込み要求より新しい書き込み要求により書き込まれ、かつ、前記第３のメモリに記憶される前記書き込みデータの量が第２の既定値以上である前記書き込みデータ、および、前記第４のメモリに記憶される前記書き込み要求の順序の中で最も古い書き込み要求により書き込まれた前記書き込みデータを前記第１のメモリから選択して前記フラッシュメモリに書き込むことを特徴とする請求項１に記載の半導体記憶装置。
【請求項５】
前記制御部は、前記第４のメモリに記憶される前記書き込み要求の順序が第１の規定順序である書き込み要求以前の書き込み要求により書き込まれ、かつ、前記第３のメモリに記憶される前記書き込みデータの量が最大である前記書き込みデータ、および、前記第４のメモリに記憶される前記書き込み要求の順序が第１の規定順序である書き込み要求より新しい書き込み要求により書き込まれ、かつ、前記第３のメモリに記憶される前記書き込みデータの量が第２の既定値以上である前記書き込みデータを前記第１のメモリから選択して前記フラッシュメモリに書き込むことを特徴とする請求項１に記載の半導体記憶装置。
【請求項６】
前記第２の既定値が１つの前記消去ブロックに書き込み可能な最大のデータ量であることを特徴とする請求項３乃至請求項５のいずれか１項に記載の半導体記憶装置。
【請求項７】
前記第１の既定順序が、前記第４のメモリに記憶される前記書き込み要求の順序の中で３番目に新しい書き込み要求を示すことを特徴とする請求項２乃至請求項６のいずれか１項に記載の半導体記憶装置。
【請求項８】
前記制御部は、隣接する２つ以上の前記消去ブロックにまたがって格納すべき連続データの有無を判断し、前記連続データが存在すると判断した場合には、前記第１のメモリから当該連続データを選択して前記フラッシュメモリに書き込むことを特徴とする請求項１乃至請求項５のいずれか１項に記載の半導体記憶装置。
【請求項９】
前記制御部は、前記第１のメモリに記憶された前記書き込みデータを前記フラッシュメモリに書き込む際に、当該書き込みデータの属する消去ブロックと隣接する消去ブロックとにまたがって格納すべき連続データの有無を判断し、前記連続データが存在すると判断した場合には、前記第１のメモリから当該連続データを選択して前記フラッシュメモリに書き込むことを特徴とする請求項１乃至請求項５のいずれか１項に記載の半導体記憶装置。
【請求項１０】
前記制御部は、前記外部装置からの書き込み／読み出し要求を一定期間受信しないと予測した場合に、前記第４のメモリに記憶される前記書き込み要求の順序が第３の既定値以上であり、前記第３のメモリに記憶される前記書き込みデータの量が最小である前記書き込みデータを前記第１のメモリから選択して前記フラッシュメモリに書き込むことを特徴とする請求項１に記載の半導体記憶装置。
【請求項１１】
前記制御部は、前記外部装置から送信される書き込みデータを記憶する領域が前記第１のメモリに存在しない場合に、選択した前記書き込みデータを前記第１のメモリから前記フラッシュメモリに書き込むことを特徴とする請求項１に記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリを備える半導体記憶装置に関するものである。
【背景技術】
【０００２】
携帯用音楽プレイヤーやデジタルカメラなどのデジタル機器の急速な普及に伴い、フラッシュメモリ、例えば、ＮＡＮＤ型フラッシュメモリが広く使われるようになってきた。ここで、ＮＡＮＤ型フラッシュメモリは、１回の消去ごとに１度だけデータを書き込むことができるが、ブロックと呼ばれるまとまった単位ごとにしかデータを消去できないという問題点がある。
【０００３】
ブロック消去の動作としては、書き込みのデータサイズよりも大きく、書き込みデータサイズ以上のブロック消去が行われることがある。消去対象のブロック内に有効なデータが保存されている場合には、ブロック消去の前に有効なデータを他のブロックに書き込み、有効な情報が消去されないように注意する必要がある。また、NAND型フラッシュメモリのブロック消去の回数には制限があるため、消去回数の増加を防ぎつつデータを書き込む方法が重要になる。
【０００４】
この問題を解決するために、消去回数の上限値がNAND型フラッシュメモリよりも十分に大きい不揮発性メモリとＮＡＮＤ型フラッシュメモリとを組み合わせて使用する方法が提案されている（例えば、特許文献１参照。）。
【０００５】
上記の特許文献１に記載される発明は、ＮＡＮＤ型フラッシュメモリに書き込むデータを不揮発性メモリに蓄積し、NAND型フラッシュメモリへの書き込み回数を削減するというものである。しかしながら、不揮発性メモリに蓄積したデータのうちいずれをＮＡＮＤ型フラッシュメモリに書き込むかについては考慮されていない。
【特許文献１】特開２００５−３０１５９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ＮＡＮＤ型フラッシュメモリでは、消去回数の増加を抑制しながらデータの書き込みを行えることが望ましい。
【０００７】
しかしながら、上述した特許文献１の方法では、不揮発性メモリに一定量のデータを一時的に蓄積させ、ＮＡＮＤ型フラッシュメモリに対してデータの書き込みを行っているに過ぎない。
【０００８】
そのため、ＮＡＮＤ型フラッシュメモリにおいて、消去回数の増加を十分に抑制できず、書き込み時のオーバーヘッドを効果的に削減できないという問題があった。
【０００９】
本発明は、上記問題点を解決するためになされたものであって、ＮＡＮＤ型フラッシュメモリに対して行う書き込み動作のオーバーヘッドを効果的に削減可能な半導体記憶装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の第１の実施形態に係る半導体記憶装置は、１回のブロック消去ごとに１回だけデータを書き込むことができ、前記ブロック消去の最小サイズが書き込みデータの最小サイズよりも大きいフラッシュメモリと、外部装置から送信された複数の書き込みデータが一時的に記憶される第１のメモリと、前記第１のメモリに記憶された前記書き込みデータの記憶位置と、前記外部装置から前記フラッシュメモリに対して出力された記憶位置との対応関係が記憶される第２のメモリと、前記フラッシュメモリの消去ブロックに対応して前記第１のメモリに記憶された前記書き込みデータの量が記憶される第３のメモリと、前記フラッシュメモリの消去ブロックに対する、前記外部装置からの書き込み要求の順序が前記消去ブロック単位に記憶される第４のメモリと、前記第３のメモリに記憶される前記書き込みデータの量と前記第４のメモリに記憶される前記書き込み要求の順序とに基づいて前記第１のメモリから前記フラッシュメモリに書き込む前記書き込みデータを少なくとも１つ選択し、前記第２のメモリに記憶される前記対応関係に基づいて指定される前記フラッシュメモリの記憶位置に選択した前記書き込みデータを書き込む制御部とを有することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、ＮＡＮＤ型フラッシュメモリに対して行う書き込み動作のオーバーヘッドを効果的に削減可能な半導体記憶装置を提供することが可能となる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明に係る半導体装置の実施の形態について、図面に基づいて説明する。
【００１３】
図１は、本実施の形態に係る半導体記憶装置の構成に示すブロック図である。半導体記憶装置１０は、ＮＡＮＤ型フラッシュメモリ１００と、外部装置１１から送信された書き込みデータを一時的に記憶する一時記憶部２００と、ＮＡＮＤ型フラッシュメモリ１００と一時記憶部２００の制御を行うコントローラ３００とを備えている。
【００１４】
ＮＡＮＤ型フラッシュメモリ１００は、１回の消去ごとに１度だけデータを書き込むことができる。消去回数には上限があり、上限回数を超過すると正しくデータが書き込めなくなる。消去処理を行う最小単位をブロック、書き込みおよび読み出し処理を行う最小単位をページと呼ぶ。
【００１５】
図２は、ブロックとページの関係を示した図である。本実施の形態では、１ブロックサイズを５１２ｋＢｙｔｅ、１ページサイズを８ｋＢｙｔｅとした。
【００１６】
図３は、ＮＡＮＤ型フラッシュメモリ１００をアクセスするためのアドレス構成を示す図である。ここで、例えば、ＮＡＮＤ型フラッシュメモリ１００の記憶容量を８ＧＢｙｔｅとすると、外部装置１１からの２４ｂｉｔのアドレスによってその記憶領域が指定される。そして、２４ｂｉｔのアドレスのうち、１４ｂｉｔのブロック番号、６ｂｉｔのブロック内のページ番号、４ｂｉｔのページ内のセクタ番号によって記憶領域が一意に決定される。
【００１７】
図１の説明に戻り、一時記憶部２００には、ＤＲＡＭ、ＳＲＡＭなどの揮発性メモリや、ＭＲＡＭ、ＦｅＲＡＭなどの不揮発性メモリが用いられる。一時記憶部２００は、外部装置１１から書き込み要求と共に送信されるデータを一時的に記憶する書き込み用バッファメモリ２１０と、外部装置１１からの読み出し要求に対しＮＡＮＤ型フラッシュメモリ１００のデータをキャッシュする読み出し用キャッシュメモリ２２０とを有する。
【００１８】
図４は、書き込み用バッファメモリ２１０と読み出し用キャッシュメモリ２２０の空き領域の構成を示す図である。書き込み用バッファメモリ２１０と読み出し用キャッシュメモリ２２０は、１ページ単位（例えば、１６セクタ）で空き領域が割り当てられており、その空き領域にデータが格納される。
【００１９】
書き込み用バッファメモリ２１０は、外部装置１１から半導体記憶装置１０に対する書き込みの速度と、書き込み用バッファメモリ２１０からＮＡＮＤ型フラッシュメモリ１００に対する書き込みの速度との差を吸収するためのものである。さらに、書き込み用バッファメモリ２１０は、外部装置１１から半導体記憶装置１０に対する書き込み要求時に出力された書き込みデータを記憶し、ＮＡＮＤ型フラッシュメモリ１００に対する効率的な書き込みを実現するためのものである。
【００２０】
読み出し用キャッシュメモリ２２０は、ＮＡＮＤ型フラッシュメモリ１００からの実効的な読み出し速度を向上させるために、ＮＡＮＤ型フラッシュメモリ１００からキャッシュしたデータを記憶する。読み出し用キャッシュメモリ２２０の記憶容量は１ブロックサイズと同じとする。これは、ＮＡＮＤ型フラッシュメモリ１００へのデータ書き込み時に使用するためである。
【００２１】
コントローラ３００は、外部装置１１から送信されるコマンド、アドレスを受信し、それらに応じた処理を行う。外部装置１１から読み出し及び書き込みコマンド（以下、読み出し／書き込みと記載する）コマンドが送信される場合には、同時に転送データ長と読み出し／書き込みアドレスが供給される。
【００２２】
本実施の形態では、外部装置１１からの読み出し／書き込み単位をセクタと呼び、１セクタサイズを例えば５１２Ｂｙｔｅとした。ここで例えば、読み出しコマンドにおいて、読み出しアドレスが「０番地」で、転送データ長が「３」の場合には、ＮＡＮＤ型フラッシュメモリ１００の０番目の記憶位置から１．５ｋＢｙｔｅのデータの読み出し要求となる。
【００２３】
コントローラ３００は、ＮＡＮＤ型フラッシュメモリ１００と一時記憶部２００とに対する読み出し、書き込み、および消去を制御する制御部３１０と、書き込み用バッファメモリ２１０に格納されたデータの中からどのデータをＮＡＮＤ型フラッシュメモリ１００に書き込むかを判断する判断部３２０とを有している。また制御部３１０は、書き込み用バッファ利用可能位置記憶部３３０と書き込みデータ情報記憶部３５０とを使用して書き込み用バッファメモリ２１０への書き込み処理を制御する。また判断部３２０は、書き込み順序記憶部３６０と書き込み情報量記憶部３７０とを使用して、書き込み用バッファメモリ２１０に格納されたデータの中からどのデータをＮＡＮＤ型フラッシュメモリ１００に書き込むかを判断する。判断部３２０の判断結果は制御部３１０へと送信され、制御部３１０はその判断結果に基づいて動作する。
【００２４】
図５は、書き込み用バッファ利用可能位置記憶部３３０の構成を示すブロック図である。この書き込み用バッファ利用可能位置記憶部３３０には、書き込み用バッファメモリ２１０の空き領域（図４を参照）の先頭アドレスが順番に記憶されている。書き込み用バッファ利用可能位置記憶部３３０は、書き込み用バッファメモリ２１０の空き領域の先頭アドレスをＦＩＦＯ構造で管理する。そして、書き込み用バッファメモリ２１０にデータを書き込む際の空き領域の割り当ては、書き込み用バッファ利用可能位置記憶部３３０の利用ポインタが示す位置から書き込み用バッファメモリ２１０の先頭アドレスを取得する。利用ポインタの位置は、割り当て動作後に更新（インクリメント）される。一方、書き込み用バッファメモリ２１０からＮＡＮＤ型フラッシュメモリ１００に対してデータの書き込みが行われ、それにより不必要になった先頭アドレスは書き込み用バッファ利用可能位置記憶部３３０の登録ポインタが示す位置に書き込まれる。登録ポインタの位置は、登録動作の都度更新（インクリメント）される。これにより、書き込み用バッファ利用可能位置記憶部３３０には、書き込み用バッファメモリ２１０の先頭アドレスが常に確保されることになる。
【００２５】
図６は、書き込みデータ情報記憶部３５０の構成を示すブロック図である。書き込みデータ情報記憶部３５０には、書き込みデータの書き込み用バッファメモリ２１０での記憶位置とＮＡＮＤ型フラッシュメモリ１００での記憶位置との対応関係を示す情報が記憶される。これにより、書き込み用バッファメモリ２１０に格納された書き込みデータを、アドレスの上位１４ｂｉｔ（ブロック番号）ごとに分類する。ブロック番号ごとに分類された書き込みデータは、エントリ番号により管理される。
【００２６】
書き込みデータ情報記憶部３５０は、エントリ番号ごとに有効ビットフィールドと、ブロック番号フィールドと、書き込み用バッファアドレスフィールドと、ビットマップフィールドとを備える。図６に示すように、１行が１つのエントリ番号に対応する。
【００２７】
以下、４つのフィールドについて説明する。有効ビットフィールドには、各エントリの有効／無効が示す値が格納される。有効ビットフィールドが“１”であるエントリは有効であり、“０”であるエントリは無効である。ブロック番号フィールドには、ＮＡＮＤ型フラッシュメモリ１００のブロック番号が格納される。
【００２８】
書き込み用バッファアドレスフィールドには、ブロック番号によって指定されたＮＡＮＤ型フラッシュメモリ１００のブロックに含まれる、ページ番号（０乃至６３ページ）ごとに書き込み用バッファメモリ２１０の先頭アドレスが格納される。このエントリ番号ごとに格納された先頭アドレスを識別するページ番号とブロック番号フィールドのブロック番号により、ＮＡＮＤ型フラッシュメモリ１００の特定ブロックの特定ページが指定される。一方、対応する書き込み用バッファメモリ２１０の空きメモリ領域が存在しない場合、そのページには空きメモリ領域不存在を示す０ｘＦＦＦＦＦＦＦＦなどの値が格納される。
【００２９】
ビットマップフィールドには、ブロック番号によって指定されたＮＡＮＤ型フラッシュメモリ１００の１ブロックに含まれるページ番号（０乃至６３ページ）ごとにビットマップ情報が格納される。ここでビットマップ情報とは、書き込み用バッファメモリ２１０の１ブロックに含まれるページ番号（０乃至６３ページ）ごとに書き込みデータの有無を、ページ内のセクタ単位（０乃至１５セクタ）で示すものである。例えば、「書き込みデータあり」を“１”、「書き込みデータ無し」を“０”とする。本実施の形態では、１ページサイズが８ｋＢｙｔｅ、１セクタサイズが５１２Ｂｙｔｅであるため、ビットマップ格納領域は１６ｂｉｔのビットマップ情報として表すことができる。図６では、あるブロックのページ０のセクタ０、１、１５は書き込みデータなし“０”が設定され、セクタ２乃至１４は書き込みデータあり“１”が設定されていることを例示している。
【００３０】
図７は、読み出しデータ情報記憶部３４０の構成を示すブロック図である。読み出しデータ情報記憶部３４０は、読み出し用キャッシュメモリ２２０に記憶されるデータとＮＡＮＤ型フラッシュメモリ１００の記憶位置の対応関係を示す情報を記憶する。読み出しデータ情報記憶部３４０は、読み出し用キャッシュメモリ２２０のエントリ番号ごとに有効ビットフィールドと、ページ番号フィールドとを備える。即ち、読み出しデータ情報記憶部３４０は、有効ビットフィールドおよびページ番号フィールドを、読み出し用キャッシュメモリ２２０に格納可能なエントリ（ページ）の数だけ記憶する。有効ビットフィールドには、読み出しキャッシュメモリ２２０に格納されるページ単位のデータが有効である場合“１”が、無効である場合“０”が格納される。ページ番号フィールドには、ＮＡＮＤ型フラッシュメモリ１００のページを一意に識別するためのフィールド番号（ブロック番号とページ番号とに対応する番号）が格納される。
【００３１】
図８は、書き込み順序記憶部３６０の構成を示すブロック図である。書き込み順序記憶部３６０には、書き込みデータ情報記憶部３５０と同一のエントリ番号ごとに、外部装置１１０から送信される書き込み要求の順序（書き込み順序）が記憶される。ここで書き込み順序は、書き込み要求における書き込み位置を示すアドレスの上位１４ｂｉｔ（ブロック番号）と対応するエントリ番号を、順序番号ごとに格納することで記憶される。即ち、図８に示す例では、小さい順序番号に示される領域に格納されたエントリ番号ほど、新しい書き込み要求により書き込まれたことを意味する。ただし、書き込み順序を算出する上で同じエントリ番号を複数回カウントしない。そのため、書き込み順序記憶部３６０は、異なる順序番号が示す位置に同じエントリ番号が記憶されることはない。
【００３２】
ここで書き込み用バッファメモリ２１０に、エントリ番号：５に対応する書き込みデータが書き込まれたとする。その後、順次、エントリ番号：１、６、０、３、２、４、３の順番で、それぞれのエントリ番号に対応する書き込みデータが書き込み用バッファメモリ２１０に書き込まれたとする。この場合、書き込み順序記憶部３６０が保持する内容は図８に示す通りであり、順序番号０の領域にはエントリ番号：３が格納される。以下、同様に、書き込み順序記憶部３６０の順序番号１の領域にはエントリ番号：４、順序番号２の領域にはエントリ番号：２・・・が、それぞれ格納される。なお、同じエントリ番号を複数回カウントしないため、順序番号３の領域にエントリ番号：３は格納されない。また、格納するエントリ番号がない順序番号７の領域には、エントリ番号の対象なしを示す値が格納される。
【００３３】
図９は、書き込み情報量記憶部３７０の構成を示すブロック図である。書き込み情報量記憶部３７０には、書き込みデータ情報記憶部３５０と同一のエントリ番号ごとに、書き込み用バッファメモリ２１０に格納した書き込みデータ量が記憶される。ここで書き込みデータ量は、１つのエントリ番号に対応する６４ページのうち、書き込みデータが存在するページの数（０乃至６４）で表現される。例えば、エントリ番号：６のデータ量は２ページ、エントリ番号：５のデータ量は１ページ、‥エントリ番号：０のデータ量は２５ページである。
【００３４】
ここで、書き込み用バッファ利用可能位置記憶部３３０、読み出しデータ情報記憶部３４０、書き込みデータ情報記憶部３５０、書き込み順序記憶部３６０、および書き込み情報量記憶部３７０は、ＤＲＡＭ、ＳＲＡＭなどの揮発性メモリ、ＭＲＡＭ、ＦｅＲＡＭなどの不揮発性メモリが用いることができる。なお、制御部３１０や判断部３２０はハードウェア又はソフトウェアによって実現される。
【００３５】
次に、本実施の形態に係る半導体記憶装置の動作の説明を行う。
【００３６】
本実施の半導体記憶装置１０の動作について、半導体記憶装置１０からのデータの読み出し、書き込み用バッファメモリ２１０へのデータの書き込み、ＮＡＮＤ型フラッシュメモリ１００へのデータの書き込みの３つに分けて説明を行う。
【００３７】
（半導体記憶装置１０からのデータの読み出し動作）
まず、半導体記憶装置１０からのデータの読み出し動作について、図１０のフローチャートを用いて説明する。
【００３８】
半導体記憶装置１０からのデータ読み出し動作は、外部装置１０からの読み出しコマンド、読み出しアドレス、転送データ長などを制御部３１０が受信することにより、開始される（ステップＳ１０１）。
【００３９】
制御部３１０は、受信したアドレスに対応するデータが、読み出し用キャッシュメモリ２２０にキャッシュされているかを判断する（ステップＳ１０２、Ｓ１０３）。キャッシュされているか否かの判断は、図７の読み出しデータ情報記憶装置３４０に格納されている情報を参照して行われる。
【００４０】
即ち、制御部３１０は、読み出しデータ情報記憶装置３４０に格納されているページ番号フィールドの内容と外部装置１０から受信したアドレスが一致し、かつ有効ビットフィールドが有効“１”である場合、読み出し用キャッシュメモリ２２０に対応するデータがキャッシュされていると判断する。しかしながら、ページ番号フィールドの内容と外部装置１０から受信したアドレスが一致しない場合や、一致しても有効ビットフィールドが無効“０”に設定されている場合は、読み出し用キャッシュメモリ２２０に対応するデータがキャッシュされていないと判断する。
【００４１】
制御部３１０は、読み出し用キャッシュメモリ２２０に対応するデータがキャッシュされていると判断した場合、読み出し用キャッシュメモリ２２０から当該データを読み出し、外部装置１１に送信して動作を終了する（ステップＳ１０４）。
【００４２】
一方、読み出し用キャッシュメモリ２２０に対応するデータがキャッシュされていない場合、制御部３１０は、外部装置１０から受信したアドレスをＮＡＮＤ型フラッシュメモリ１００に転送し、ＮＡＮＤ型フラッシュメモリ１００から読み出したデータを外部装置１１に送信して動作を終了する（ステップＳ１０５）。その際、制御部３１０は、読み出したデータを読み出し用キャッシュメモリ２２０に格納（コピー）すると同時に、それに対応して読み出しデータ情報記憶部３４０に読み出しアドレスを登録する。これにより、次に同じアドレスの読み出しが行われた場合、高速読み出しを可能とする。
【００４３】
（フラッシュメモリ１００に対するデータ書き込み動作）
次に、外部装置１１から書き込み用バッファメモリ２１０を介してＮＡＮＤ型フラッシュメモリ１００に対するデータ書き込み動作を説明する。まず、外部装置１１から書き込み用バッファメモリ２１０へのデータ書き込み動作を、図１１のフローチャートを用いて説明する。
【００４４】
半導体記憶装置１０に対するデータ書き込み動作は、外部装置１１からの書き込みコマンド、書き込みアドレス、転送データ長などを制御部３１０が受信することにより、開始される（ステップＳ２０１）。
【００４５】
制御部３１０は、受信した書き込みデータを格納するための書き込み用バッファメモリ２１０のメモリ領域が既に確保されているか判断する（ステップＳ２０２）。領域が存在するか否かの判断は、図６の書き込みデータ情報記憶装置３５０に格納されている情報を参照して行われる。
【００４６】
即ち、制御部３１０は、書き込みデータ情報記憶部３５０に格納されているブロック番号フィールドの内容と外部装置１０から受信したアドレスのブロック番号が一致し、かつ有効ビットフィールドが有効“１”であるエントリにおいて、受信した書き込みアドレスのブロック内ページ番号（図３の４ｂｉｔ目〜９ｂｉｔ目）で指定される書き込みデータ情報記憶部３５０の書き込み用バッファアドレスフィールドに有効なアドレスが格納されている場合に、受信した書き込みデータを格納するための書き込み用バッファメモリ２１０のメモリ領域が既に確保されていると判断する。
【００４７】
しかしながら、ブロック番号フィールドの内容と外部装置１０から受信したアドレスのブロック番号が一致しない場合や、一致しても有効ビットフィールドが無効“０”に設定されている場合、書き込みデータ情報記憶部３５０の書き込み用バッファアドレスフィールドに有効なアドレスが格納されていない場合は、受信した書き込みデータを格納するための書き込み用バッファメモリ２１０のメモリ領域は確保されていないと判断する。
【００４８】
制御部３１０は、受信した書き込みデータを格納するための書き込み用バッファメモリ２１０のメモリ領域が既に確保されていると判断した場合、書き込み用バッファメモリ２１０に対する書き込みデータの書き込み処理を行う（ステップＳ２０７）。そして、書き込みデータ情報記憶部３５０、書き込み順序記憶部３６０、および書き込み情報量記憶部３７０の情報を更新する（ステップＳ２０８）。
【００４９】
一方、受信した書き込みデータを格納するための書き込み用バッファメモリ２１０のメモリ領域は確保されていないと判断した場合、次に、制御部３１０は、書き込みデータ情報記憶部３５０の有効ビットフィールドおよびブロック番号フィールドを参照して、受信したアドレスのブロック番号に対応する有効なエントリが存在するか判断する（ステップＳ２０３）。この判断は、図６の書き込みデータ情報記憶装置３５０を参照して同様に行われるため、その説明は省略する。
【００５０】
そして、受信したアドレスのブロック番号に対応する有効なエントリが書き込みデータ情報記憶部３５０に存在しない場合には、制御部３１０は、書き込みデータ情報記憶部３５０の有効ビットフィールドが無効“０”であるエントリを選択し、そのエントリを確保する（ステップＳ２０４）。即ち、制御部３１０は、書き込みデータ情報記憶部３５０の確保したエントリの有効ビットフィールドを有効“１”に設定し、またブロック番号フィールドには受信したアドレスの上位１４ｂｉｔ（ブロック番号）を格納する。なお、ステップＳ２０４において、制御部３１０が書き込みデータ情報記憶部３５０の有効ビットフィールドが無効“０”であるエントリを発見できなかった場合には、書き込み用バッファメモリ２１０に記憶されたデータをＮＡＮＤ型フラッシュメモリ１００に書き込み、書き込みデータ情報記憶部３５０の有効ビットフィールドが無効“０”であるエントリを作成してもよい。
【００５１】
ステップＳ２０３で、受信したアドレスのブロック番号に対応する有効なエントリが書き込みデータ情報記憶部３５０に存在すると判断した場合、あるいはステップＳ２０４で書き込みデータ情報記憶部３５０のエントリを新たに確保した場合、次に、制御部３１０は、書き込み用バッファメモリ２１０に空き領域が存在するかを判断する（ステップＳ２０５）。書き込み用バッファメモリ２１０に空き領域が存在するか否かの判断は、図５の書き込み用バッファ利用可能位置記憶部３３０に格納されている情報を参照して行われる。
【００５２】
即ち、制御部３１０は、書き込み用バッファ利用可能位置記憶部３３０の利用ポインタが示す位置に有効なアドレスが格納されている場合に、書き込み用バッファメモリ２１０に空き領域が存在すると判断する。
【００５３】
しかしながら、書き込み用バッファ利用可能位置記憶部３３０の利用ポインタが示す位置に有効なアドレスが格納されていない場合には、書き込み用バッファメモリ２１０に空き領域が存在しないと判断する。書き込み用バッファメモリ２１０に空き領域が存在しない場合には、制御部３１０は、書き込み用バッファメモリ２１０が保持するデータをＮＡＮＤ型フラッシュメモリ１００に書き込み、書き込み用バッファメモリ２１０に空き領域を作成する（ステップＳ２０６）。
【００５４】
一方、書き込み用バッファメモリ２１０に空き領域が存在すると判断した場合、あるいは、書き込み用バッファメモリ２１０が保持するデータをＮＡＮＤ型フラッシュメモリ１００に書き込み、書き込み用バッファメモリ２１０に空き領域を作成した場合、次に、制御部３１０は、外部装置１１から受信した書き込みデータを書き込み用バッファメモリ２１０に書き込む（ステップＳ２０７）。
【００５５】
書き込み用バッファメモリ２１０への書き込み処理は、ステップＳ２０２で、書き込みデータを格納するための書き込み用バッファメモリ２１０のメモリ領域が既に確保されている場合は、その領域に対して行われる。一方、ステップＳ２０２で、書き込みデータを格納するための書き込み用バッファメモリ２１０のメモリ領域が確保されていない場合は、書き込み用バッファ利用可能位置記憶部３３０の利用ポインタの示す位置からアドレスを取得し、そのアドレスに指定される書き込み用バッファメモリ２１０の領域に書き込み処理が行われる。
【００５６】
ここで、書き込み用バッファ利用可能位置記憶部３３０から取得したアドレスは、上記書き込み処理を行った書き込みデータのエントリ番号とページ番号とによって指定される書き込みデータ情報記憶部３５０の書き込み用バッファアドレスフィールドに格納される。
【００５７】
その後、制御部３１０は、書き込み用バッファメモリ２１０に対して行った書き込み処理に応じて、書き込み順序記憶部３６０と、書き込み情報量記憶部３７０と、書き込みデータ情報記憶部３５０の内容を更新する（ステップＳ２０８）。
【００５８】
即ち、制御部３１０は、書き込みデータ情報記憶部３５０に対し、書き込み処理を行った領域（セクタ単位）に対応するビットマップフィールドに「書き込みデータ無し」“０”が格納されていた場合には、「書き込みデータ有り」“１”を格納する。
【００５９】
また、制御部３１０は、受信した書き込み要求に基づき、書き込み順序記憶部３６０に格納されている書き込み順序を更新する。即ち、書き込み処理を行った書き込みデータのエントリ番号を順序番号０が示す領域に格納する。そして、それまで順序番号０が示す領域に格納されていたエントリ番号を順序番号１が示す領域に移動する。さらに、それまで順序番号１が示す領域に格納されていたエントリ番号を順序番号２が示す領域に移動する。以下、同様にそれまで格納されていたエントリ番号を１つ大きい順序番号が示す領域に移動させる。なお、エントリ番号の移動は、順序番号０から順番に、「対象なし」あるいは「書き込み処理を行った書き込みデータのエントリ番号」と同じエントリ番号が格納されている順序番号まで行われる。
【００６０】
また、制御部３１０は、書き込み情報量記憶部３７０において、書き込みを行った書き込みデータのエントリ番号と対応する領域に格納されている値を、書き込み処理（ステップＳ２０７）後のメモリ領域を割り当てている総ページ数に更新する。
【００６１】
（書き込み用バッファメモリ２１０からフラッシュメモリ１００への書き込み動作）
次に、書き込み用バッファメモリ２１０からＮＡＮＤ型フラッシュメモリ１００へのデータの書き込み動作を図１２のフローチャートを用いて説明する。
【００６２】
ここでは、書き込み用バッファメモリ２１０からＮＡＮＤ型フラッシュメモリ１００へのデータの書き込み動作が開始され、判断部３２０が書き込みエントリを選択した後の動作（ステップＳ３０３〜Ｓ３０７）を先に説明する。
【００６３】
制御部３１０は、書き込み先であるブロックに格納されているデータの中で、書き込み対象となっていないデータ（即ち、書き込み用バッファメモリ２１０に格納されていないデータ）をＮＡＮＤ型フラッシュメモリ１００から読み出し、読み出し用キャッシュメモリ２２０にコピーする（ステップＳ３０３）。当該ブロックに格納されているデータの中で、書き込み対象となっていないデータが存在するか否かの判断は、図６の書き込みデータ情報記憶装置３５０に格納されているビットマップを参照して行われる。
【００６４】
即ち、制御部３１０は、書き込みデータ情報記憶部３５０を参照して、書き込みを行うエントリ番号のビットマップフィールドの中で、１６個のセクタすべてに「書き込みデータ有り」“１”が格納されているページ番号があれば、それを特定する。制御部３１０は、そのページ番号およびエントリ番号（ブロック番号）に指定される領域については、書き込みバッファメモリ２１０に書き込みデータが存在すると判断する。したがって、この領域のＮＡＮＤ型フラッシュメモリ１００からは読み出しが行われず、読み出し用キャッシュメモリ２２０にはコピーされない。
【００６５】
一方、書き込みデータ情報記憶部３５０の書き込みを行うエントリ番号のビットマップフィールドの中で、１６個のセクタのうち１つでも「書き込みデータ無し」“０”が格納されているページ番号があれば、それを特定する。制御部３１０は、そのページ番号およびエントリ番号（ブロック番号）に指定されるデータは書き込み対象となっておらず、書き込みバッファメモリ２１０にもデータが格納されていないと判断する。したがって、制御部３１０は、この領域のＮＡＮＤ型フラッシュメモリ１００からデータを読み出し、読み出し用キャッシュメモリ２２０にコピーする。ここで、読み出し用キャッシュメモリ２２０に読み出されるデータの記憶容量は１ブロック分であるので、常にデータをコピーすることができる。
【００６６】
ステップＳ３０３において、読み出し用キャッシュメモリ２２０にデータをコピーした後、制御部３１０は読み出しデータ情報記憶部３４０のコピーした領域に対応する有効ビットフィールドを「無効」“０”に設定する（ステップＳ３０４）。
【００６７】
次に、制御部１１０は、ＮＡＮＤ型フラッシュメモリ１００の書き込み先である領域のブロック消去を行う（ステップＳ３０５）。
【００６８】
ブロック消去を行った領域に対して、制御部１１０は、読み出し用キャッシュメモリ２２０にコピーしたデータと書き込み用バッファメモリ２１０に格納した書き込みデータとをマージして書き込みを行う（ステップＳ３０６）。書き込み時におけるマージは、図６の書き込みデータ情報記憶装置３５０に格納されているビットマップフィールドを参照して行われる。
【００６９】
即ち、制御部１１０は、書き込みデータ情報記憶装置３５０のビットマップフィールドに「書き込みデータ有り」“１”が設定されているセクタについては書き込み用バッファメモリ２１０からのデータをＮＡＮＤ型フラッシュメモリ１００に書き込む。一方、書き込みデータ情報記憶装置３５０のビットマップフィールドに「書き込みデータ無し」“０”が設定されているセクタについては読み出し用キャッシュメモリ２２０からのデータをＮＡＮＤ型フラッシュメモリ１００に書き込む。
【００７０】
その後、制御部３１０は、ＮＡＮＤ型フラッシュメモリ１００に対して行った書き込み処理に応じて、書き込み用バッファ利用可能位置記憶部３３０と、書き込み順序記憶部３６０と、書き込み情報量記憶部３７０と、書き込みデータ情報記憶部３５０の内容を更新する（ステップＳ３０７）。
【００７１】
即ち、制御部３１０は、書き込みデータ情報記憶部３５０において、書き込みを行った書き込みデータのエントリ番号に指定されるエントリの有効ビットフィールドとビットマップフィールドとをすべて“０”に初期化する。
【００７２】
また、制御部３１０は、書き込みデータ情報記憶部３５０の前記エントリ番号に指定されるエントリの書き込み用バッファアドレスフィールドに格納されているアドレスを書き込み用バッファ利用可能位置記憶部３３０の登録ポインタの示す位置に再登録する。
【００７３】
また、制御部３１０は、書き込み順序記憶部３６０の書き込みを行った書き込みデータのエントリ番号を削除する。その際に、削除するエントリ番号が格納されていた順序番号の領域は空となる。そこで、制御部３１０は、空きになった順序番号よりも大きい順序番号に格納されているエントリ番号を、１つ小さい順序番号に指定される領域に移動させる。
【００７４】
また、制御部３１０は、書き込み情報量記憶部３７０の書き込みを行った書き込みデータのエントリ番号に対応する書き込み情報量を「０」に初期化する。
【００７５】
（書き込みエントリを選択）
次に、判断部３２０が書き込み順序記憶部３６０、書き込み情報量記憶部３７０に基づいて、ＮＡＮＤ型フラッシュメモリ１００に書き込むエントリを選択する動作（ステップＳ３０１）について、図８、図９を用いて説明する。なお、書き込み順序は図８に示す例、書き込み情報量は図９に示す例であるものとする。
【００７６】
第１の判断手法を説明する。判断部３２０は、書き込み順序記憶部３６０の順序番号が第１の既定値以上であるエントリ番号の中で、書き込み情報量が最大であるエントリ番号を選択する。ここで、例えば第１の既定値を「２」とする。
【００７７】
この場合、図８の書き込み順序記憶部３６０から書き込み順序の順序番号が２以上のエントリ番号は２、０、６、１、５である。それらのエントリ番号の中で書き込み情報量が最大であるエントリ番号は、図９の書き込み情報量記憶部３７０からエントリ番号：１の書き込み情報量「５５」である。そのため、判断部３２０はエントリ番号：１が書き込みエントリとして選択する。
【００７８】
ここで、エントリ番号：３、４の書き込み情報量はそれぞれ「６４」、「６２」であり、これを書き込みエントリとして選択したほうが良いよいに思われる。しかし、メモリアクセスにおける参照の位置と時間の局所性により、エントリ番号：３、４のエントリは再び書き込みデータが追加される可能性が高く、後にＮＡＮＤ型フラッシュメモリ１００に書き込みを行ったほうが効率がよいとの判断にて第１の既定値を「２」が設定されている。
【００７９】
以上のような、第１の判断手法を採用することにより、アクセスが頻発しているエントリを避けて、書き込み情報量が大きいエントリをＮＡＮＤ型フラッシュメモリ１００に書き込むことができるため、実効的書き込み速度の向上と長寿命化を実現できる。
【００８０】
次に、第２の判断手法を説明する。判断部３２０は、書き込み順序記憶部３６０の順序番号が第１の既定値未満であり、かつ、書き込み情報量が第２の既定値以上であるエントリを選択する。ここで、例えば第１の既定値を「２」とし、例えば第２の既定値を「６４」（最大）とする。
【００８１】
この場合、図８の書き込み順序記憶部３６０から書き込み順序の順序番号が２未満であるという条件より、エントリ番号：３、４が選択される。さらに図９の書き込み情報量記憶部３７０から、これら２つのエントリ番号の中で書き込み情報量が「６４」以上であるエントリ番号：３が書き込みエントリとして選択される。
【００８２】
ここで、書き込み順序の順序番号が第１の既定値「２」よりも小さいエントリであっても、書き込み情報量が最大であるエントリはデータが追加される可能性が小さいと推測される。この第２の判断手法は、特に容量の大きなデータの書き込みを頻繁に行うシステムに良く適合する。
【００８３】
以上のような、第２の判断手法を採用することにより、順序番号は小さくても、データが追加される可能性が小さいエントリを書き込みエントリとして選択することができる。このため、データが追加される可能性が小さく、書き込み情報量が大きいエントリを選択することができるため、実効的書き込み速度の向上が実現できる。なお、第２の既定値を６４（最大）としたが、上記の効果を実現するにあたり、システムの特性に応じて、第２の既定値を最適化することができる。
【００８４】
また、第２の判断手法はＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）動作と併用することができる。ＬＲＵ動作とは、書き込み順序記憶部３６０において順序番号が最大のエントリを選択する方式である。
【００８５】
ＬＲＵ動作は、順序番号が最大であり、データの追加される可能性が小さいエントリを書き込みエントリとして選択するため、ＮＡＮＤ型フラッシュメモリ１００に対して効率的な書き込みを実現できるように思われる。しかし、ＬＲＵ動作のみでＮＡＮＤ型フラッシュメモリ１００に書き込みを行うと、順序番号が小さく書き込み情報量の大きいエントリは選択されない。その結果、選択されないエントリが書き込み用バッファメモリ２１０の領域を多く専有することになる。
【００８６】
そこで、まず第２の判断手法を実行し、条件を満足するエントリを選択する。そして、第２の判断手法の条件を満足するエントリがなければ、ＬＲＵ動作をする構成をとる。ここで、例えば第１の既定値を「２」とし、例えば第２の既定値を「６４」（最大）とすると、まず、第２の判断手法によりエントリ番号：３のエントリが書き込みエントリとして選択される。さらに、書き込みエントリの選択を行う場合には、ＬＲＵ動作によりエントリ番号：５、１、６、０・・と順次書き込み順序番号の順序番号が最大であるエントリが書き込みエントリとして選択される。
【００８７】
以上のように、第２の判断手法とＬＲＵ動作を併用させると、順序番号が小さく、かつ、書き込み情報量が大きいエントリをＮＡＮＤ型フラッシュメモリ１００に効率的に書き込みできる上、一時記憶手段２００の領域を有効に活用し、ＮＡＮＤ型フラッシュメモリ１００に対する書き込みの効率を高く保持することができる。
【００８８】
また、第１の判断手法と第２の判断手法を併用することができる。即ち、第1の既定値を「２」、第２の規定値を「６４」とし、1つ目の判断手法と第２の判断手法の効果を合わせて実現することが可能である。そして、最初に第２の判断手法を適用し、条件に満足するエントリ番号が無ければ、次に第１の判断出法を適用する構成とすると効果的である。
【００８９】
この場合、書き込みエントリとして選択されるエントリ番号は、最初にエントリ番号：３、次にエントリ番号：１、その次にエントリ番号：０となる。
【００９０】
以上のように、第１の判断手法と第２の判断手法を併用することにより、データが追加される可能性の小さいエントリ番号であって、書き込み情報量の大きいエントリ番号を選択できるため、実効的書き込み速度の向上と長寿命化が実現できる。
【００９１】
ここで、第１の判断手法において、例えば第１の既定値を「２」とすると、メモリアクセスで２つのエントリに対して書き込みが交互に行われる場合により実効的書き込み速度の向上と長寿命化という効果が強まる。即ち、２つのエントリに対する書き込みが交互に行われているとき、順序番号０と順序番号１のエントリ番号の書き込み情報量が増大する。ここで、順序番号０と順序番号１のエントリ番号は、データが再び書き込まれる可能性が極めて大きく書き込みエントリとして選択すべきではない。ここで、第１の判断手法において、第１の既定値が「２」と設定されていると、順序番号０と順序番号１のエントリ番号が書き込みエントリとして選択されることはない。よって、それらのエントリ番号の順序番号が「２」よりも大きな値となり、アクセスが一通り終了した後に第１の判断手法により書き込みエントリとして選択することができる。
【００９２】
同様の理由により、３つのエントリに対する書き込みが頻発するシステムでは第１の規定値を「３」とすると良い。４つのエントリに対する書き込みが頻発するシステムでは第１の既定値を「４」とすると良い。それ以降についても同様である。
【００９３】
また、書き込み用バッファメモリ２１０の空き領域が無いとき、および少ないときに、上記判断手法でエントリが選択されなかった場合には、書き込み情報量が最大のエントリを選択することとする。書き込み用バッファメモリ２１０の空き領域を迅速に作成することが必要だからである。
【００９４】
さらに、上記に示した判断部３２０が書き込みエントリを選択する手法を複数組み合わせることができる。
【００９５】
例えば、１番目に順序番号０、１、２、かつ、書き込み情報量が「６４」であるエントリの書き込みを行う。この条件を満足するエントリが無ければ、２番目に順序番号３〜１０、かつ、書き込み情報量が「４０」以上のエントリの書き込みを行う。同様に条件を満足するエントリが無ければ、順序番号１１以上、かつ、書き込み情報量が「１０」以下および２０以上のエントリを書き込む。以上のように、複数の場合わけと異なる条件を設定することが可能である。
【００９６】
このように、書き込みエントリを選択する判断手法を複数組み合わせることにより、それぞれの判断手法の効果をシステムの特性に合わせて発揮することができる。
【００９７】
次に、判断部３２０が書き込みエントリを選択し、制御部３１０が選択した書き込みエントリをＮＡＮＤ型フラッシュメモリ１００に書き込む際に、制御部３１０が付随して行う動作について述べる。
【００９８】
制御部３１０は、書き込みブロックと隣接するブロック（隣接ブロック）に１つの連続するデータがまたがって格納されているか否かを判断する。制御部３１０は、連続するデータ（連続データ）の存在を確認したときは、連続データが格納されている隣接ブロックに対応するエントリについてもＮＡＮＤ型フラッシュメモリ１００に書き込みを行う。
【００９９】
次に、連続データの存在の有無を判断する方法について以下に述べる。
【０１００】
第１の方法は、隣接ブロックに対応するエントリの書き込み情報量が一定以上の場合、連続データの存在有りと判断する。
【０１０１】
第２の方法は、ブロック番号「書き込みを行うブロック番号＋１」のページ番号０に対応するビットマップフィールドにおいて、「書き込みデータあり」“１”の数が一定以上ある場合、連続データの存在有りと判断する。また、ブロック番号「書き込みを行うブロック番号−１」のページ番号６３（ページ番号最大）に対応するビットマップフィールドにおいて、「書き込みデータあり」“１”の数が一定以上ある場合、連続データの存在有りと判断する。
【０１０２】
第３の方法は、ブロック番号「書き込みを行うブロック番号＋１」のページ番号０の０番目のビットマップフィールドが「書き込みデータあり」“１”のとき、連続データの存在有りと判断する。また、ブロック番号「書き込みを行うブロック番号−１」のページ番号６３（ページ番号最大）の１５番目（最後の番号）のビットマップフィールドが「書き込みデータあり」“１”のとき、連続データの存在有りと判断する。
【０１０３】
第４の方法は、ブロック番号「書き込みを行うブロック番号＋１」のページ番号０の第１特定番号あるいは０〜第１特定番号までのすべてのビットマップフィールドが「書き込みデータあり」“１”のとき、連続データの存在有りと判断する。また、ブロック番号「書き込みを行うブロック番号−１」のページ番号６３（ページ番号最大）の第２特定番号あるいは第２特定番号〜１５番目（最後の番号）までのすべてのビットマップフィールドが「書き込みデータあり」“１”のとき、連続データの存在有りと判断する。
【０１０４】
以上４種類の方法のいずれかの方法により複数のブロックにまたがって格納された連続データの有無の判断を行う。連続データが存在すると判断されたときに、連続データが格納されている隣接ブロックに対応するエントリの書き込みを行うことにより、当該連続データの一部が書き込まれているものの、その後データが追加される可能性が小さいエントリの書き込みを行うことができる。よって、書き込み用バッファメモリ２１０を効率的に使用できる。
【０１０５】
次に、外部装置１１からのコマンドを一定時間受信しなかった場合や、休止モードとするコマンドを受信した場合など、外部装置１１からの書き込み／読み出し要求を一定期間受信しないと予想されるときの処理について説明する。
【０１０６】
ここで、判断部３２０は、書き込み順序記憶部３６０における順序番号が第３の既定値以上であるエントリ番号のうち、書き込み情報量が最小であるものをＮＡＮＤ型フラッシュメモリ１００に書き込む。ここで、第３の既定値を「４」とする。
【０１０７】
この場合、書き込み順序の順序番号が「４」以上の条件より、図８の例ではエントリ番号：１、５、６が選択される。それらのエントリ番号の中で書き込み情報量が最小であるエントリは、エントリ番号：５の書き込み情報量「１」である。そのため、エントリ番号：５が書き込みエントリとして選択される。
【０１０８】
ここで、書き込み情報量が「１」以上の他のエントリ番号を書き込みエントリとして選択したほうが良いように思われる。しかし、順序番号が第３の既定値以上であり、データが追加されてからの時間経過が大きく、再びデータが追加される可能性が小さい。しかも、エントリ番号：５の書き込み情報量は「１」であるため、書き込みエントリとして選択されにくい。その結果、エントリ番号：５のエントリは、一時記憶手段２００に長期間記憶されることになり、一時記憶手段２００の記憶領域に事実上使用不可能なデッドスペースが発生する。
【０１０９】
さらに、上記のような書き込み用バッファメモリ２１０に長期間記憶されるエントリが多数蓄積し、書き込み用バッファメモリ２１０が事実上使用不可能なデッドスペースに埋め尽くされたとき、極めて深刻な問題を引き起こす。すなわち、書き込み用バッファメモリ２１０に書き込み情報量の小さいエントリしか存在しないために、データを書き込むための空き領域を作成するのに大きな時間がかかり、半導体記憶装置１０全体に対する実効的な書き込み速度が極度に低下する問題である。
【０１１０】
よって、外部装置１１からの書き込み／読み出し要求を一定期間受信しないと予想されるときに、順序番号が第３の既定値以上であり、かつ、書き込み情報量が最小のエントリを書き込みエントリとして選択する。このような書き込み処理を行うことにより、順序番号が大きくデータの追加が行われる可能性が小さく、書き込み情報量も小さいエントリの蓄積を防止することができる。
【０１１１】
次に、書き込み用バッファメモリ２１０からＮＡＮＤ型フラッシュメモリ１００に対して書き込みを行うタイミング（ステップＳ３０２）について説明する。
【０１１２】
まず、書き込み用バッファメモリ２１０の空き領域が無いあるいは少ないとき、また、書き込みデータ情報記憶部３５０に有効ビットフィールドが「０」であるエントリが存在しないときである。この場合は、第１の判断手法あるいは第２の判断手法など、書き込み情報量が一定値以上、あるいは最大であるエントリを選択する判断手法を用いる。書き込み用バッファメモリ２１０の空き領域を迅速に作成するためである。
【０１１３】
次に、書き込み要求を受信したときである。この場合は、書き込み用バッファメモリ２１０の空き領域が無い、あるいは少ないときを除いて、任意の手法を採用できる。この場合、書き込み用バッファメモリ２１０からＮＡＮＤ型フラッシュメモリ１００に対してデータの書き込みを行うことにより書き込み用バッファメモリ２１０に空き領域を作成しながら、同時に外部装置１１からのデータを書き込み用バッファメモリ２１０に作成された空き領域に書き込むことができる。
【０１１４】
そして、外部装置１１からの書き込み／読み出し要求を一定期間受信しないと予想されるときである。この場合も、システムの特性に応じて任意の手法を採用することができる。
【０１１５】
また、半導体記憶装置１０に一時記憶部２００を備えた場合、外部装置１１がＮＡＮＤ型フラッシュメモリ１００に直接書き込みを行う必要がなくなるので、インターフェースがシンプルとなる。加えて、一時記憶部２００である書き込み用バッファメモリ２１０、読み込み用バッファメモリ、コントローラ３００の一部である書き込み用バッファ利用可能位置記憶部３３０、読み出しデータ情報記憶部３４０、書き込みデータ情報記憶部３５０、書き込み順序記憶部３６０、書き込み情報量記憶部３７０、制御部３１０、判断部３２０が使用するプログラムやデータなどを記憶する記憶部を不揮発性メモリで作成することができる。
【０１１６】
以上のような構成をとることにより、電源瞬断時などでも書き込み用バッファメモリ２１０に格納された情報やデータの記憶位置の対応関係などの情報を消失することがなく、耐久性が高い。また、電源立ち下げ時などに書き込み用バッファメモリ２１０に格納された情報を書き込む必要が無くなり、ＮＡＮＤ型フラッシュメモリ１００の書き換え回数を抑制できる。
【０１１７】
さらに、本発明は以上の構成に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化可能である。また、本実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、本実施の形態に示される全構成要素からいくつかの要素を削除しても良い。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【図面の簡単な説明】
【０１１８】
【図１】本発明の実施の形態に係る半導体記憶装置の構成を示すブロック図。
【図２】実施形態に係るＮＡＮＤ型フラッシュメモリ１００のブロックとページの関係を示す図。
【図３】実施形態に係るＮＡＮＤ型フラッシュメモリ１００のアドレスを示す図。
【図４】実施形態に係る一時記憶部２００の構成を示す図。
【図５】実施形態に係る書き込み用バッファ利用可能位置記憶部３３０の構成を示す図。
【図６】実施形態に係る書き込みデータ情報記憶部３５０の構成を示す図。
【図７】実施形態に係る読み出しデータ情報記憶部３４０の構成を示す図。
【図８】実施形態に係る書き込み順序記憶部３６０の構成を示す図。
【図９】実施形態に係る書き込み情報量記憶部３７０の構成を示す図。
【図１０】実施形態に係る半導体記憶装置からのデータ読み出し動作を示すフローチャート。
【図１１】実施形態に係る書き込み用バッファメモリ２１０に対するデータ書き込み動作を示すフローチャート。
【図１２】実施形態に係るＮＡＮＤ型フラッシュメモリ１００に対するデータ書き込み動作を示すフローチャート。
【符号の説明】
【０１１９】
１００  ＮＡＮＤ型フラッシュメモリ
２００  一時記憶手段
２１０  書き込み用バッファメモリ
２２０  読み出し用キャッシュメモリ
３００  コントローラ
３１０  制御部
３２０  判断部
３３０  書き込み用バッファ利用可能位置記憶部
３４０  読み出しデータ情報記憶部
３５０  書き込みデータ情報記憶部
３６０  書き込み順序記憶部
３７０  書き込み情報量記憶部
【図１】
2008197981.tif 000003
【図２】
2008197981.tif 000004
【図３】
2008197981.tif 000005
【図４】
2008197981.tif 000006
【図５】
2008197981.tif 000007
【図６】
2008197981.tif 000008
【図７】
2008197981.tif 000009
【図８】
2008197981.tif 000010
【図９】
2008197981.tif 000011
【図１０】
2008197981.tif 000012
【図１１】
2008197981.tif 000013
【図１２】
2008197981.tif 000014