(57)【要約】【課題】キャッシュ機能を用いないで、不揮発性半導体記憶装置における小容量書込みの高速化を図る。【解決手段】本発明の代表的な実施の形態に係る不揮発性半導体記憶装置（１）は、ホストシステム（２）に接続可能とされ、不揮発性記憶部（１１）と、その動作制御を行うコントローラ（１２）とを含む。上記コントローラは、論理アドレスと物理アドレスとの対応関係を、上記ホストシステム側のアクセス単位と、上記不揮発性記憶部側のアクセス単位とに分けて管理し、上記ホストシステムからの書込み指示に係るデータのサイズに応じて、上記ホストシステム側のアクセス単位での管理と、上記不揮発性記憶部側のアクセス単位での管理とを判定し、上記不揮発性記憶部における対応領域にデータを書込むことで、バッファメモリへのデータ退避を不要とする。【選択図】図１
2012164114.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムに接続可能な不揮発性半導体記憶装置であって、
不揮発性記憶部と、その動作制御を行うコントローラと、を含み、
上記コントローラは、上記ホストシステム側の論理アドレスと上記不揮発性記憶部側の物理アドレスとの対応関係を、上記ホストシステム側のアクセス単位と、上記不揮発性記憶部側のアクセス単位とに分けて管理し、上記ホストシステムからの書込み指示に係るデータのサイズに応じて、上記ホストシステム側のアクセス単位での管理と、上記不揮発性記憶部側のアクセス単位での管理とを判定し、それに基づいて、上記不揮発性記憶部における対応領域に、上記ホストシステムからの書込み指示に係るデータを書込むことを特徴とする不揮発性半導体記憶装置。
【請求項２】
上記不揮発性記憶部の消去単位をブロックとし、上記不揮発性記憶部の書込み単位をページとし、上記ホストシステムからの書込み単位をセクタとするとき、上記コントローラは、上記ホストシステム側の論理アドレスと上記不揮発性記憶部側の物理アドレスとの対応関係を、上記ブロック単位と、上記ページ単位と、上記セクタ単位とに分けて管理する請求項１記載の不揮発性半導体記憶装置。
【請求項３】
上記不揮発性記憶部は、上記ブロック単位での管理に対応する第１領域と、上記ページ単位での管理に対応する第２領域と、上記セクタ単位での管理に対応する第３領域とを含み、
上記コントローラは、上記ホストシステムからの書込み指示に係るデータのサイズが上記ブロックのサイズより大きい場合には上記第１領域に上記データを書込み、上記ホストシステムからの書込み指示に係るデータのサイズが上記ブロックのサイズより小さく、且つ、上記ページのサイズより大きい場合には上記第２領域に上記データを書込み、上記ホストシステムからの書込み指示に係るデータのサイズが上記ブロックのサイズより小さく、且つ、上記ページのサイズより小さい場合には上記第３領域に上記データを書込む請求項２記載の不揮発性半導体記憶装置。
【請求項４】
上記コントローラは、上記第２領域に対応するブロック又は上記第３領域に対応するブロックにおける有効データを別の領域に移動することによって、上記第２領域又は上記第３領域の空きを増やすためのガベージコレクション処理を実行する請求項３記載の不揮発性半導体記憶装置。
【請求項５】
上記コントローラは、リセット処理毎に上記ガベージコレクション処理を実行する請求項４記載の不揮発性半導体記憶装置。
【請求項６】
上記コントローラは、上記フラッシュメモリとの間で信号のやり取りを可能とするバスがアイドル状態の際に上記ガベージコレクション処理を実行する請求項４記載の不揮発性半導体記憶装置。
【請求項７】
上記コントローラは、上記第２領域又は上記第３領域の書込み可能ページ数が所定数よりも小さい場合に上記ガベージコレクション処理を実行する請求項４記載の不揮発性半導体記憶装置。
【請求項８】
不揮発性半導体記憶装置と、上記不揮発性半導体記憶装置にアクセス可能なホストシステムと、を含むデータ処理システムであって、
上記不揮発性半導体記憶装置は、不揮発性記憶部と、その動作制御を行うコントローラと、を含み、
上記コントローラは、上記ホストシステム側の論理アドレスと上記不揮発性記憶部側の物理アドレスとの対応関係を、上記ホストシステム側のアクセス単位と、上記不揮発性記憶部側のアクセス単位とに分けて管理し、上記ホストシステムからの書込み指示に係るデータのサイズに応じて、上記ホストシステム側のアクセス単位での管理と、上記不揮発性記憶部側のアクセス単位での管理とを判定し、それに基づいて、上記不揮発性記憶部における対応領域に、上記ホストシステムからの書込み指示に係るデータを書込むことを特徴とするデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体記憶装置及びそれを備えたデータ処理システムに係り、不揮発性半導体記憶装置における小容量書込みの高速化技術に関する。
【背景技術】
【０００２】
特許文献１には、不揮発性メモリの書き換え技術が記載されている。それによれば、フラッシュメモリの各セクタを順次処理対象として書込み済みデータの消去及びダウンロードデータの書込みを繰り返すことによりフラッシュメモリの書き換え処理を実行するに際し、各セクタの書込み済みデータのチェックサムを示すチェックサムテーブルをフラッシュメモリに記憶しておく。各セクタに対応する記憶容量単位で作成されたダウンロードデータのチェックサムテーブルを取得して、各セクタに対応するチェックサムテーブルとチェックサムテーブルとを比較し、値が一致すると判定されたセクタを処理対象とした前記消去及び書込みの実行を省略して、書き換え処理が実行される毎にチェックサムテーブルを更新する。
【０００３】
特許文献２には、非選択データの冗長な書込み操作を不要とでき、ページの配列を書き換えに効率の良い状態に最適化することが可能な記憶装置が記載されている。それによれば、外部との入出力インタフェース回路には内部バスＢＳを介してＮＡＮＤ型フラッシュメモリよりなる大容量のメインメモリと、強誘電体メモリよりなる比較的小容量の補助メモリが接続されている。さらにメインメモリは内部が高並列化されており、３２ｋＢのデータ群が単位ページとして同時にアクセスされ、内部バスＢＳに入出力転送される。装置内部にはページを管理単位としたアドレステーブルが構築されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１９９９８５号公報
【特許文献２】特開２００６−２３６３０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
不揮発性半導体記憶装置の一例として、フラッシュＳＳＤ（Solid State Drive）を挙げることができる。フラッシュＳＳＤは、半導体記憶素子であるフラッシュメモリを使用した記憶装置であり、ハードディスクドライブの機能をエミュレートする仕様であり、ハードディスクドライブと同等のインタフェースを持つ。デバイス内には、フラッシュメモリの他、専用のコントローラなどが組み込まれ、利用上はハードディスクドライブと大差はないと考えられる。フラッシュＳＳＤ内のフラッシュメモリには、ＮＡＮＤ型が用いられる。フラッシュＳＳＤは、ハードディスクドライブと比較して、小容量の高速アクセスが可能という特徴があり、それはフラッシュＳＳＤの性能を表す重要な指標となっている。小容量の高速アクセスは、ＮＡＮＤ型のフラッシュメモリよりも高速アクセス可能なＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）のような揮発性メモリに一時的にデータを保存するキャッシュ機能を用いて実現される。
【０００６】
しかしながら、ＮＡＮＤ型フラッシュメモリにおけるキャッシュは、ＤＲＡＭなどの揮発性メモリであるため、不所望な電源遮断により、キャッシュ内のデータが消失するおそれがある。従って、フラッシュＳＳＤの用途によっては、キャッシュ機能を用いないで、小容量書込みの高速化を図ることが強く望まれる。
【０００７】
また、従来のフラッシュＳＳＤにおいては、ＮＡＮＤ型フラッシュメモリの消去単位やプログラム（書込み）単位毎に論理アドレスを管理している。論理アドレスの単位はセクタとされる。プログラム（書込み）単位は、「ページ」とされ、一つのページは、複数のセクタで構成される。このため、ホストシステムからフラッシュＳＳＤ内のＮＡＮＤ型フラッシュメモリに１セクタ分のデータを書込む場合には、当該セクタを含むページのデータがＮＡＮＤ型フラッシュメモリからバッファメモリに読出され、このバッファメモリ内の該当するセクタのデータが更新される。このデータ更新後にバッファメモリ内のデータが、ＮＡＮＤ型フラッシュメモリ内の別のアドレスに書込まれ、その書込みが完了した後に、論理アドレスと物理アドレスの変換を行うテーブルが更新される。
【０００８】
しかしながら、上記のように、ホストシステムからフラッシュＳＳＤ内のＮＡＮＤ型フラッシュメモリに１セクタ分のデータを書込む場合に、当該セクタを含むページのデータがＮＡＮＤ型フラッシュメモリからバッファメモリに読出す必要があるため、小容量の書込みが低速化するおそれがある。
【０００９】
本発明の目的は、キャッシュ機能を用いないで、不揮発性半導体記憶装置における小容量書込みの高速化を図るための技術を提供する。
【００１０】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１２】
すなわち、ホストシステムに接続可能とされ不揮発性半導体記憶装置は、不揮発性記憶部と、その動作制御を行うコントローラとを含む。上記コントローラは、上記ホストシステム側の論理アドレスと上記不揮発性記憶部側の物理アドレスとの対応関係を、上記ホストシステム側のアクセス単位と、上記不揮発性記憶部側のアクセス単位とに分けて管理し、上記ホストシステムからの書込み指示に係るデータのサイズに応じて、上記ホストシステム側のアクセス単位での管理と、上記不揮発性記憶部側のアクセス単位での管理とを判定する。そして上記コントローラは、上記判定結果に基づいて、上記不揮発性記憶部における対応領域に、上記ホストシステムからの書込み指示に係るデータを書込む。
【発明の効果】
【００１３】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１４】
すなわち、キャッシュ機能を用いないで、不揮発性半導体記憶装置における小容量書込みの高速化を図ることができる。
【図面の簡単な説明】
【００１５】
【図１】本発明にかかるデータ処理システムの構成例ブロック図である。
【図２】図１に示されるデータ処理システムに含まれるフラッシュＳＳＤで参照されるテーブルの説明図である。
【図３】図１に示されるデータ処理システムに含まれるフラッシュＳＳＤにおけるフラッシュアレイのデータ構成についての説明図である。
【図４】図１に示されるデータ処理システムに含まれるフラッシュＳＳＤにおけるライト処理のフローチャートである。
【図５】図４に示されるライト処理のフローチャートにおける主要部の詳細を示すフローチャートである。
【図６】図４に示されるライト処理のフローチャートにおける主要部の詳細を示すフローチャートである。
【図７】図４に示されるライト処理のフローチャートにおける主要部の詳細を示すフローチャートである。
【図８】ブロック単位に管理する領域の論物変換テーブルの説明図である。
【図９】消去可能ＰＢＡテーブルの説明図である。
【図１０】ページ単位に管理する領域の論物変換テーブルの説明図である。
【図１１】書込み可能ページテーブルの説明図である。
【図１２】セクタ単位に管理する領域の論物変換テーブルの説明図である。
【図１３Ａ】ガベージコレクションをリセット処理毎に実行する場合のフローチャートである。
【図１３Ｂ】ガベージコレクションをリセット処理毎に実行する場合のフローチャートである。
【図１４】本発明にかかるデータ処理システムの別の構成例ブロック図である。
【図１５Ａ】図１４に示されるデータ処理システムで行われるガベージコレクションのフローチャートである。
【図１５Ｂ】図１４に示されるデータ処理システムで行われるガベージコレクションのフローチャートである。
【図１６】「ブロックより小さい単位で論物変換する領域」に書込むための領域が不足する場合のガベージコレクションのフローチャートである。
【図１７】消去回数カウント値テーブルの説明図である。
【図１８】図１７に示される消去回数カウント値テーブルを用いたガベージコレクションのフローチャートである。
【発明を実施するための形態】
【００１６】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１７】
〔１〕本発明の代表的な実施の形態に係る不揮発性半導体記憶装置（１）は、ホストシステム（２）に接続可能とされ、不揮発性記憶部（１１）と、その動作制御を行うコントローラ（１２）とを含む。上記コントローラは、上記ホストシステム側の論理アドレスと上記不揮発性記憶部側の物理アドレスとの対応関係を、上記ホストシステム側のアクセス単位と、上記不揮発性記憶部側のアクセス単位とに分けて管理し、上記ホストシステムからの書込み指示に係るデータのサイズに応じて、上記ホストシステム側のアクセス単位での管理と、上記不揮発性記憶部側のアクセス単位での管理とを判定する。そして上記コントローラは、上記判定結果に基づいて、上記不揮発性記憶部における対応領域に、上記ホストシステムからの書込み指示に係るデータを書込む。
【００１８】
ここで従来装置でのデータ書込みにおいてバッファメモリへのデータ退避が必要となるのは、上記ホストシステム側の論理アドレスと上記不揮発性記憶部側の物理アドレスとの対応関係を、上記ホストシステム側のアクセス単位で管理していないことに起因する。この結果、例えばホストシステムから１セクタ分のデータを書込む場合には、当該セクタを含むページのデータをバッファメモリに読出し、このバッファメモリにおいて、該当する１セクタ分のデータを更新する必要がある。
【００１９】
これに対して、本発明の代表的な実施の形態に係る不揮発性半導体記憶装置によれば、上記ホストシステムからの書込み指示に係るデータのサイズに応じて、上記ホストシステム側のアクセス単位での管理と、上記不揮発性記憶部側のアクセス単位での管理とが判定され、その判定結果に基づいて、上記データの上記不揮発性記憶部における書込み先が決定される。このように上記ホストシステムからの書込み指示に係るデータのサイズに応じて、上記不揮発性記憶部における書込み先として適切な領域が決定されることにより、バッファメモリへのデータ退避が不要とされるので、ホストシステムから不揮発性半導体記憶装置への小容量書込みの高速化を図ることができる。また、このような小容量書込みの高速化は、ＤＲＡＭ等のキャッシュ機能を用いるものではないので、キャッシュ内のデータが不所望な電源遮断により消失することを心配する必要もない。
【００２０】
〔２〕上記〔１〕において、上記不揮発性記憶部の消去単位をブロックとし、上記不揮発性記憶部の書込み単位をページとし、上記ホストシステムからの書込み単位をセクタとするとき、上記コントローラは、上記ホストシステム側の論理アドレスと上記不揮発性記憶部側の物理アドレスとの対応関係を、上記ブロック単位と、上記ページ単位と、上記セクタ単位とに分けて管理することができる。
【００２１】
〔３〕上記〔２〕において、上記不揮発性記憶部には、上記ブロック単位での管理に対応する第１領域と、上記ページ単位での管理に対応する第２領域と、上記セクタ単位での管理に対応する第３領域とを形成することができる。このとき上記コントローラは、上記ホストシステムからの書込み指示に係るデータのサイズが上記ブロックのサイズより大きい場合には上記第１領域に上記データを書込む。また上記コントローラは、上記ホストシステムからの書込み指示に係るデータのサイズが上記ブロックのサイズより小さく、且つ、上記ページのサイズより大きい場合には上記第２領域に上記データを書込む。さらに上記コントローラは、上記ホストシステムからの書込み指示に係るデータのサイズが上記ブロックのサイズより小さく、且つ、上記ページのサイズより小さい場合には上記第３領域に上記データを書込む。
【００２２】
〔４〕上記〔３〕において、上記コントローラは、上記第２領域に対応するブロック又は上記第３領域に対応するブロックにおける有効データを別の領域に移動することによって、上記第２領域又は上記第３領域の空きを増やすためのガベージコレクション処理を実行するように構成することができる。
【００２３】
〔５〕上記〔４〕において、リセット処理毎に上記ガベージコレクション処理を実行させることができる（図１３Ａ，図１３Ｂ）。
【００２４】
〔６〕上記〔４〕において、上記フラッシュメモリとの間で信号のやり取りを可能とするバスがアイドル状態のときに上記ガベージコレクション処理を実行させることができる（図１５Ａ，図１５Ｂ）。
【００２５】
〔７〕上記〔４〕において、上記第２領域又は上記第３領域の書込み可能ページ数が所定数よりも小さい場合に上記ガベージコレクション処理を実行させることができる（図１６）。
【００２６】
〔８〕本発明の代表的な実施の形態に係るデータ処理システム（１００）は、不揮発性半導体記憶装置（１）と、上記不揮発性半導体記憶装置にアクセス可能なホストシステム（２）とを含む。上記不揮発性半導体記憶装置は、不揮発性記憶部（１１）と、その動作制御を行うコントローラ（１２）とを含む。上記コントローラは、上記ホストシステム側の論理アドレスと上記不揮発性記憶部側の物理アドレスとの対応関係を、上記ホストシステム側のアクセス単位と、上記不揮発性記憶部側のアクセス単位とに分けて管理し、上記ホストシステムからの書込み指示に係るデータのサイズに応じて、上記ホストシステム側のアクセス単位での管理と、上記不揮発性記憶部側のアクセス単位での管理とを判定し、それに基づいて、上記不揮発性記憶部における対応領域に、上記ホストシステムからの書込み指示に係るデータを書込む。
【００２７】
上記の構成のデータ処理システムによれば、上記ホストシステムからの書込み指示に係るデータのサイズに応じて、上記ホストシステム側のアクセス単位での管理と、上記不揮発性記憶部側のアクセス単位での管理とが判定され、その判定結果に基づいて、上記データの上記不揮発性記憶部における書込み先が決定される。このように上記ホストシステムからの書込み指示に係るデータのサイズに応じて、上記不揮発性記憶部における書込み先として適切な領域が決定されることにより、バッファメモリへのデータ退避が不要とされるので、ホストシステムから不揮発性半導体記憶装置への小容量書込みの高速化を図ることができる。また、このような小容量書込みの高速化は、ＤＲＡＭ等のキャッシュ機能を用いるものではないので、キャッシュ内のデータが不所望な電源遮断により消失することを心配する必要もない。
【００２８】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００２９】
《実施の形態１》
図１には、本発明にかかるデータ処理システムが示される。図１に示されるデータ処理システム１００は、フラッシュＳＳＤ１と、このフラッシュＳＳＤ１にアクセス可能なホストシステム（単に「ホスト」という）２とを含む。
【００３０】
ホスト２は、特に制限されないが、携帯して利用できるコンピュータシステム（モバイルＰＣ）や、デジタルカメラとされる。このホスト２には、端子を介してフラッシュＳＳＤ１が結合されている。
【００３１】
フラッシュＳＳＤ１は、フラッシュメモリ１１、コントローラ１２、及び外部ＲＡＭ１３を含み、ホスト２によってリード／ライト可能とされる。フラッシュメモリ１１、コントローラ１２、及び外部ＲＡＭ１３は、それぞれ公知の半導体集積回路製造技術により、例えば単結晶シリコン基板などの一つの半導体基板に形成されている。
【００３２】
フラッシュメモリ１１は、特に制限されないが、ＮＡＮＤ型とされ、バッファ１１１と、フラッシュアレイ１１２とを含む。フラッシュアレイ１１２へのデータ書込みや、フラッシュアレイ１１２からのデータ読出しは、バッファ１１１を介して行われる。フラッシュアレイ１１２に対する書込み単位（「ページ」という）は、例えば図３に示されるように、２ｋＢ＋６４Ｂとされ、消去単位（「ブロック」という）は６４ページとなっている。また、ホスト２からの書込みの最小単位（「セクタ」という）は、５１２Ｂとなっている。尚、セクタ、ページ、及びブロックのサイズは任意に設定することができる。フラッシュメモリ１１とコントローラ１２とは、バスＢＳを介して結合されている。
【００３３】
コントローラ１２は、ホスト２から与えられたコマンドを解釈してフラッシュメモリ１１の動作制御を行う。このコントローラ１２は、特に制限されないが、ＲＯＭ（リード・オンリー・メモリ）１２１、ＲＡＭ（ランダム・アクセス・メモリ）１２２、ＣＰＵ（中央処理装置）１２３、ＥＣＣ（エラー検出訂正）回路１２４、フラッシュインタフェース１２５、ページバッファ１２６、バッファインタフェース１２７、ホストインタフェース１２８を含む。ＲＯＭ１２１には、ＣＰＵ１２３で実行されるプログラムが格納される。ＣＰＵ１２３は、ＲＯＭ１２１内のプログラムを実行することによって、各部の動作制御を行う。ＲＡＭ１２２は、ＣＰＵ１２３でプログラムが実行される際の作業領域などに利用される。ＥＣＣ回路１２４は、フラッシュメモリ１から読出されるデータに符号誤り（エラー）が発生した場合にそれを検出して訂正する。フラッシュインタフェース１２５は、ＣＰＵ１２３、ＥＣＣ回路１２４、バッファインタフェース１２７と、フラッシュメモリ１１との間の情報のやり取りを仲介する。ページバッファ１２６は、フラッシュメモリ１１の書込み単位に相当する記憶容量を有する。バッファインタフェース１２７は、フラッシュインタフェース１２５、ホストインタフェース１２８、外部ＲＡＭ１３と、ページバッファ１２６との間の情報のやり取りを仲介する。ホストインタフェース１２８は、ＣＰＵ１２３、バッファインタフェース１２７と、ホスト２との間の情報のやり取りを仲介する。
【００３４】
外部ＲＡＭ１３は、一定周期のクロック信号に同期して動作するＳＤＲＡＭとされる。ホスト２は、特に制限されないが、コンピュータシステムとされる。ホスト２から書込まれるデータは、外部ＲＡＭ１３又はページバッファ１２６に一時格納され、フラッシュメモリ１１のバッファ１１１を介して、フラッシュアレイ１１２に書込まれる。ここで、フラッシュアレイ１１２の各ブロックは、消去後に、データの書込みが可能になる。ホスト２がフラッシュメモリ１１からデータを読み出す場合には、フラッシュアレイ１１２からバッファ１１１を介して、外部ＲＡＭ１３又はページバッファ１２６に格納され、その後、ホスト２に出力される。
【００３５】
ＣＰＵ１２３による演算処理においては、各種テーブルが参照される。上記各種テーブルとしては、例えば図２に示されるように、ブロック単位で管理する領域の論物変換テーブルＴＢ１、消去可能ＰＢＡテーブルＴＢ２、ページ単位で管理する領域の論物変換テーブルＴＢ３、書込み可能ページテーブルＴＢ４、セクタ単位で管理する領域の論物変換テーブルＴＢ５を挙げることができる。
【００３６】
図８には、ブロック単位で管理する領域の論物変換テーブルＴＢ１の構成例が示される。
【００３７】
ブロック単位で管理する領域の論物変換テーブルＴＢ１は、ブロック単位で管理する領域の論理アドレスと物理アドレスとの対応を把握可能とするもので、そのサイズは２０４８Ｂｙｔｅである。論物変換テーブルには、複数のエントリー（Ｅｎｔｒｙ−０〜Ｅｎｔｒｙ−１０２３）が形成される。Ｅｎｔｒｙ−０〜Ｅｎｔｒｙ−１０２３は、物理情報とされ、それぞれ１ブロックを管理するためのテーブル上の領域である。一つのＥｎｔｒｙは、１６ｂｉｔ（＝２Ｂ）とされる。各Ｅｎｔｒｙは、そのうちの一つが拡大して示されるように、ＰＢＡの格納領域（１１ｂｉｔ）とフラッシュアレイのチップ（Ｃｈｉｐ）番号の格納領域（５ｂｉｔ）が形成される。ＰＢＡは０〜７ＦＦｈで示され、チップ番号は０〜１Ｆｈで示される。論物変換テーブルの縦軸には、論理情報であるＬＢＡが割り当てられる。Ｅｎｔｒｙの添え字（０〜１０２３）に対応してＬＢＡが昇順に割り当てられる。例えばＥｎｔｒｙ−０は、ＬＢＡ＝０から１エントリー分のサイズが割り当てられ、Ｅｎｔｒｙ−１は、Ｅｎｔｒｙ−０の次のアドレスから１Ｅｎｔｒｙ分のサイズが割り当てられる。例えばホスト２がフラッシュメモリ１１にＬＢＡ０のデータを書込む場合、Ｅｎｔｒｙ−０の内容が書き替えられることで、論物変換テーブルが更新される。
【００３８】
図９には、消去可能ＰＢＡテーブルＴＢ２の構成例が示される。
【００３９】
消去可能ＰＢＡテーブルＴＢ２は、論理アドレスにかかるデータが格納されていないブロックがどのチップのどの物理アドレスにあるかを把握可能とするテーブルとされ、そのサイズは、２０４８Ｂｙｔｅ（バイト）とされる。消去可能ＰＢＡテーブルＴＢ２には、複数のエントリー（Ｅｎｔｒｙ−０〜Ｅｎｔｒｙ−１０２３）が形成される。Ｅｎｔｒｙ−０〜Ｅｎｔｒｙ−１０２３は、物理情報とされ、それぞれ１ブロックを管理するためのテーブル上の領域である。一つのＥｎｔｒｙは、１６ｂｉｔ（＝２Ｂ）とされる。各Ｅｎｔｒｙは、そのうちの一つが拡大して示されるように、ＰＢＡの格納領域（１１ｂｉｔ）とフラッシュアレイのチップ（Ｃｈｉｐ）番号の格納領域（５ｂｉｔ）が形成される。ＰＢＡは０〜７ＦＦｈで示され、チップ番号は０〜１Ｆｈで示される。尚、消去可能ＰＢＡテーブルＴＢ２は、論理アドレスにかかるデータ格納されていないブロックがどのチップのどの物理アドレスにあるかを把握するためのテーブルとされ、論理情報は不要であるため、ＬＢＡは割り当てられていない。
【００４０】
図１０には、ページ単位で管理する領域の論物変換テーブルＴＢ３の構成例が示される。
【００４１】
ページ単位で管理する領域の論物変換テーブルＴＢ３は、ページ単位で管理する領域の論理アドレスと物理アドレスとの対応を把握可能とするもので、そのサイズは、２０４８Ｂｙｔｅとされる。ページ単位で管理する領域の論物変換テーブルＴＢ３には、複数のエントリー（Ｅｎｔｒｙ−０〜Ｅｎｔｒｙ−１６８）が形成される。Ｅｎｔｒｙ−０〜Ｅｎｔｒｙ−１６８は、それぞれ１ページを管理するためのテーブル上の領域である。一つのＥｎｔｒｙは、７０ｂｉｔとされる。各Ｅｎｔｒｙは、そのうちの一つが拡大して示されるように、ＬＢＡの格納領域（４８ｂｉｔ）、ＰＢＡの格納領域（１１ｂｉｔ）、ページアドレスを意味するページ番号の格納領域（６ｂｉｔ）、フラッシュアレイのチップ（Ｃｈｉｐ）番号の格納領域（５ｂｉｔ）が形成される。ＰＢＡは０〜７ＦＦＦ  ＦＦＦＦ  ＦＦＦＦｈで示され、ＰＢＡは０〜７ＦＦｈで示され、ページ番号は０〜３Ｆｈで示され、チップ番号は０〜１ＦＦｈで示される。
【００４２】
図１１には、書込み可能ページテーブルＴＢ４の構成例が示される。
【００４３】
書込み可能ページテーブルＴＢ４は、書込み可能なページを把握可能とするテーブルであり、そのサイズは、２０４８Ｂｙｔｅとされる。書込み可能ページテーブルＴＢ４には、複数のエントリー（Ｅｎｔｒｙ−０〜Ｅｎｔｒｙ−６８１）が形成される。Ｅｎｔｒｙ−０〜Ｅｎｔｒｙ−６８１は、それぞれ１ページを管理するためのテーブル上の領域である。一つのＥｎｔｒｙは、２２ｂｉｔとされる。各Ｅｎｔｒｙは、そのうちの一つが拡大して示されるように、ＰＢＡの格納領域（１１ｂｉｔ）、ページアドレスを意味するページ（Ｐａｇｅ）番号の格納領域（６ｂｉｔ）、フラッシュアレイのチップ（Ｃｈｉｐ）番号の格納領域（５ｂｉｔ）が形成される。ＰＢＡは０〜７ＦＦｈで示され、ページ番号は０〜３Ｆｈで示され、チップ番号は０〜１ＦＦｈで示される。
【００４４】
図１２には、セクタ単位で管理する領域の論物変換テーブルＴＢ５の構成例が示される。
【００４５】
セクタ単位で管理する領域の論物変換テーブルＴＢ５は、セクタ単位で管理する領域における論理アドレスと物理アドレスとの対応を把握可能とするもので、そのサイズは、２０４８Ｂｙｔｅとされる。セクタ単位で管理する領域の論物変換テーブルＴＢ５には、複数のエントリー（Ｅｎｔｒｙ−０〜Ｅｎｔｒｙ−１６８）が形成される。Ｅｎｔｒｙ−０〜Ｅｎｔｒｙ−１６８は、それぞれ１セクタを管理するためのテーブル上の領域である。一つのＥｎｔｒｙは、７２ｂｉｔとされる。各Ｅｎｔｒｙは、そのうちの一つが拡大して示されるように、ＬＢＡの格納領域（４８ｂｉｔ）、ＰＢＡの格納領域（１１ｂｉｔ）、ページアドレスを意味するページ（Ｐａｇｅ）番号の格納領域（６ｂｉｔ）、フラッシュアレイのチップ（Ｃｈｉｐ）番号の格納領域（５ｂｉｔ）、セクタ数（２ｂｉｔ）が形成される。ＬＢＡは０〜ＦＦＦＦ  ＦＦＦＦ  ＦＦＦＦｈで示され、ＰＢＡは０〜７ＦＦｈで示され、ページ番号は０〜３Ｆｈで示され、チップ番号は０〜１ＦＦｈで示され、セクタ数は０〜３ｈで示される。
【００４６】
上記ブロック単位で管理する領域の論物変換テーブルＴＢ１、消去可能ＰＢＡテーブルＴＢ２、ページ単位で管理する領域の論物変換テーブルＴＢ３、書込み可能ページテーブルＴＢ４、セクタ単位で管理する領域の論物変換テーブルＴＢ５は、フラッシュアレイ１１２内に格納されており、フラッシュＳＳＤ１の初期化処理においてページバッファ１２６又は外部ＲＡＭ１３にロードされるようになっている。ＣＰＵ１２３によるテーブル参照やテーブル情報の更新は、ページバッファ１２６又は外部ＲＡＭ１３にロードされたテーブルに対して行われる。そしてテーブル情報が更新された場合には、それに応じてフラッシュアレイ１１２内のテーブルが更新される。
【００４７】
図４には、上記フラッシュＳＳＤ１におけるライト処理の流れが示される。
【００４８】
ホスト２からフラッシュＳＳＤ１に対してライトコマンドが発行される（Ｓ３０１）。フラッシュＳＳＤ１内のＣＰＵ１２３は、上記ライトコマンドを解析して、書込み先ＬＢＡ（Logical Block Address）と書込みセクタ数とを取得し（Ｓ３０２）、この書込みセクタ数を「ホストが指定したセクタ数」とする（Ｓ３０３）。ここで、「ＬＢＡ」とは、ホスト側の論理的なブロックアドレスを意味する。書込み用データは、ホストインタフェース１２８及びバッファインタフェース１２７を介してページバッファ１２６に一時的に保存される。そしてＣＰＵ１２３は、書込みセクタ数がブロックサイズより大きいか否かの判別を行う（Ｓ３０４）。この判別において、書込みセクタ数がブロックサイズより大きい（Ｙｅｓ）と判断された場合には、上記ステップＳ３０２で取得された書込み先ＬＢＡにかかる書込みデータを、ブロックで管理する領域に書込むための処理がＣＰＵ１２３で実行される（Ｓ３０６）。また、上記ステップＳ３０４の判別において、書込みセクタ数がブロックサイズより小さい（Ｎｏ）と判断された場合には、書込みサイズがページサイズより大きいか否かの判別がＣＰＵ１２３で行われる（Ｓ３０５）。この判別において、書込みサイズがページサイズより大きい（Ｙｅｓ）と判断された場合には、上記ステップＳ３０２で取得された書込み先ＬＢＡをブロックで管理する領域に書込むための処理がＣＰＵ１２３で実行される（Ｓ３０７）。また上記ステップＳ３０５の判別において、書込みサイズがページサイズより小さい（Ｎｏ）と判断された場合には、上記ステップＳ３０２で取得された書込み先ＬＢＡをセクタ単位で管理する領域に書込むための処理がＣＰＵ１２３で実行される（Ｓ３０８）。尚、上記ステップＳ３０６、Ｓ３０７、Ｓ３０８の各処理については後に詳述する。
【００４９】
上記ステップＳ３０６、Ｓ３０７、Ｓ３０８の各処理の後に、書込みセクタ数から、実際に書込んだセクタ数が減算され、書込みセクタ数が０より大きいか否かの判別が行われる（Ｓ３１０）。この判別において、書込みセクタ数が０より大きい（Ｙｅｓ）と判断された場合には、未だ書込み可能であるため、上記ステップＳ３０４の判別に戻る。また、上記ステップＳ３１０の判別において、書込みセクタ数が０より大きくない（Ｎｏ）と判断された場合には、書込みが不可能であるため、本フローチャートによる処理が終了される。
【００５０】
図５には、図４におけるステップＳ３０６における書込み処理（書込み先ＬＢＡにかかる書込み用データを、ブロック単位で管理する領域に書込むための処理）の詳細が示される。
【００５１】
書込み先ＬＢＡにかかる書込み用データを、ブロック単位で管理する領域に書込むための処理において、先ず、ＣＰＵ１２３によって、消去可能ＰＢＡ（Physical Block Address）テーブルが参照されて、消去可能ブロックのアドレスが取得され（Ｓ４０１）、当該アドレスに対応する消去可能ブロックが消去される。ＣＰＵ１２３は、上記ステップ４０２で消去されたブロックに対して、上記ページバッファ１２６に保存されているホスト転送データを書込む（Ｓ４０３）。その後、ＣＰＵ１２３によって、ブロック単位で管理する領域の論物変換テーブルＴＢ１と、消去可能ＰＢＡテーブルＴＢ２が更新される（Ｓ４０４）。ここで、ブロック単位で管理する領域の論物変換テーブルＴＢ１は、ブロック単位で管理する領域における論理アドレスと物理アドレスとの変換を可能にするもので、ページバッファ１２６又は外部ＲＡＭ１３に形成される。
【００５２】
図６には、図４におけるステップＳ３０７の処理（書込み先ＬＢＡにかかる書込み用データを、ブロック単位で管理する領域に書込むための処理）の詳細が示される。
【００５３】
書込み先ＬＢＡにかかる書込み用データを、ブロック単位で管理する領域に書込むための処理において、先ず、ＣＰＵ１２３は、書込み可能ページテーブルＴＢ４を参照して書込み可能ページのアドレスを取得する（Ｓ５０１）。書込み可能ページテーブルＴＢ４は、ページバッファ１２６又は外部ＲＡＭ１３に形成される。そしてＣＰＵ１２３は、書込み可能ページがあるか否かの判別を行う（Ｓ５０２）。書込み可能ページがある（Ｙｅｓ）と判断した場合、ページバッファ１２６に一時的に保存されているホスト転送データをフラッシュアレイ１１２へ書込む（Ｓ５０６）。またＣＰＵ１２３は、上記ステップＳ５０２の判別において、書込み可能ページが無い（Ｎｏ）と判断した場合、消去可能ＰＢＡテーブルＴＢ２を参照して、消去可能ブロックのアドレスを取得し（Ｓ５０３）、当該消去可能ブロックを消去し（Ｓ５０４）、その後、消去したブロックから書込み可能ページを取得する（Ｓ５０５）。そして、取得した着込み可能ページに対してホスト転送データの書込みが行われる（Ｓ５０６）。ＣＰＵ１２３は、消去を実行したか否かの判別を行う（Ｓ５０７）。この判別において、消去を実行していない（Ｎｏ）と判断された場合、「ページ単位で管理する領域」の論物変換テーブルと、書込み可能ページテーブルＴＢ４を更新する（Ｓ５０８）。また、上記ステップＳ５０７の判別において消去を実行した（Ｙｅｓ）と判断された場合、「ページ単位で管理する領域」の論物変換テーブルと書込み可能ページテーブルＴＢ４と消去可能ＰＢＡテーブルＴＢ２とを更新する（Ｓ５０９）。
【００５４】
図７には、図４におけるステップＳ３０８の処理（書込み先ＬＢＡにかかる書込み用データを、セクタ単位で管理する領域に書込むための処理）の詳細が示される。
【００５５】
書込み先ＬＢＡにかかる書込み用データを、セクタ単位で管理する領域に書込むための処理において、先ず、ＣＰＵ１２３は、書込み可能ページテーブルＴＢ４を参照して書込み可能ページのアドレスを取得する（Ｓ６０１）。そしてＣＰＵ１２３は、書込み可能ページがあるか否かの判別を行う（Ｓ６０２）。書込み可能ページがある（Ｙｅｓ）と判断した場合、ページバッファ１２６に一時的に保存されているホスト転送データをフラッシュアレイ１１２へ書込む（Ｓ６０６）。またＣＰＵ１２３は、上記ステップＳ６０２の判別において、書込み可能ページが無い（Ｎｏ）と判断した場合、消去可能ＰＢＡテーブルＴＢ２を参照して、消去可能ブロックのアドレスを取得し（Ｓ６０３）、当該消去可能ブロックを消去し（Ｓ６０４）、その後、消去したブロックから書込み可能ページを取得する（Ｓ６０５）。そして、取得した着込み可能ページに対してホスト転送データの書込みが行われる（Ｓ６０６）。ＣＰＵ１２３は、消去を実行したか否かの判別を行う（Ｓ６０７）。この判別において、消去を実行していない（Ｎｏ）と判断された場合、「セクタ単位で管理する領域」の論物変換テーブルと、書込み可能ページテーブルＴＢ４を更新する（Ｓ６０８）。また、上記ステップＳ６０７の判別において消去を実行した（Ｙｅｓ）と判断された場合、「セクタ単位で管理する領域」の論物変換テーブルと書込み可能ページテーブルＴＢ４と消去可能ＰＢＡテーブルＴＢ２とを更新する（Ｓ６０９）。
【００５６】
次に、ガベージコレクションについて説明する。
【００５７】
「ブロックより小さい単位で論物変換する領域」は、フラッシュＳＳＤ１の全容量より少ない領域に限定される場合があるため、ホスト２から連続して書込みが行われると、空きページが無くなることがある。このため、コントローラ１２では、「ブロックより小さい単位で論物変換する領域」に空きページを作るためのガベージコレクションが実行される。ガベージコレクションは、（１）フラッシュＳＳＤ１のリセット処理毎に実行することができる。
【００５８】
先ず、ガベージコレクションをフラッシュＳＳＤ１のリセット処理毎に実行する場合について説明する。
【００５９】
図１３Ａ及び図１３Ｂには、ガベージコレクションをリセット処理毎に実行する場合のフローチャートが示される。尚、図１３Ａ及び図１３Ｂにおいて、「ＣＯＮ１」は、処理が連続していることを示している。
【００６０】
フラッシュＳＳＤ１に対する電源投入や、リセット信号がアサートされた場合に、所定のリセット処理が起動される（Ｓ１３０１）。つまり、ＣＰＵ１２３によって所定のリセットプログラムが実行される。フラッシュＳＳＤ１においてリセット処理が行われている期間は、ホスト２に対してビジー状態になる。このビジー状態が解除される前に、以下の処理がＣＰＵ１２３によって行われる。
【００６１】
先ず「ブロックより小さい単位で論物変換する領域」の空きページ数の確認がＣＰＵ１２３によって行われる（Ｓ１３０２）。この確認は、ページ単位で管理する領域の論物変換テーブルＴＢ３及びセクタ単位で管理する領域の論物変換テーブルＴＢ５を参照することで行われる。そして、「ブロックより小さい単位で論物変換する領域」の空きページ数が規定値以下であるか否かの判別が行われる（Ｓ１３０３）。この判別において、「ブロックより小さい単位で論物変換する領域」の空きページ数が規定値以下である（Ｙｅｓ）と判断された場合には、ガベージコレクションの必要があるため、消去可能ＰＢＡテーブルＴＢ２が参照されることにより、消去可能ＰＢＡの取得が行われ（Ｓ１３０４）、取得された消去可能ＰＢＡが消去される（Ｓ１３０５）。次に、「ブロックより小さい単位で論物変換する領域」のブロックで、空きページ数が規定値以下のブロックが選択され（Ｓ１３０６）、処理ページ番号を「０」にする。ここで、「処理ページ番号」とは、内部的な変数を意味する。そして、ガベージコレクション処理に要する時間が、規定時間を越えるか否かの判別が行われる（Ｓ１３０８）。ここで、「規定時間」とは、例えばリセット処理のために許容される時間を意味する。ガベージコレクション処理は、このリセット処理のために許容される時間内に終了する必要がある。ガベージコレクション処理に要する時間が、規定時間を越えない（Ｎｏ）と判断された場合には、処理ページ数が当該ブロックにおける最大ページ数未満であるか否かの判別が行われる（Ｓ１３０９）。つまり、これから処理しようとするページ番号が、上記ステップＳ１３０５で消去されたブロックにおける最大ページ数に達したか否かが判別される。この判別において、処理ページ数が当該ブロックにおける最大ページ数未満である（Ｙｅｓ）と判断された場合には、当該ページに有効なデータがあるか否かの判別が行われる（Ｓ１３１０）。この判別において、当該ページに有効なデータがある（Ｙｅｓ）と判断された場合には、その有効データがページバッファ１２６に読出される（Ｓ１３１２）。そして、ページバッファ１２６に読出された上記データはページサイズ以上であるか否かの判別が行われる（Ｓ１３１３）。この判別において、ページバッファ１２６に読出された上記データがページサイズ以上である（Ｙｅｓ）と判断された場合には、ページバッファ１２６に読出された上記データが、上記ステップＳ１３０５で消去されたＰＢＡに書込まれる（Ｓ１３１４）。その後、処理ページ番号がインクリメントされた後に（Ｓ１３１１）、上記ステップＳ１３０８の判別に戻されることにより、次の処理ページ番号についてのガベージコレクション処理が行われる。
【００６２】
上記ステップＳ１３０３の判別において、「ブロックより小さい単位で論物変換する領域」の空きページ数が規定値以下ではない（Ｎｏ）と判断された場合には、「ブロックより小さい単位で論物変換する領域」の空きページ数が十分に残っており、ガベージコレクションは不要である。この場合、ページバッファ１２６上にデータが残っているか否かの判別が行われる（Ｓ１３１５）。この判別において、ページバッファ１２６上にデータが残っている（Ｙｅｓ）（Ｙｅｓ）と判断された場合には、当該データが、上記ステップＳ１３０５で消去されたＰＢＡに書込まれる（Ｓ１３１６）。その後、ガベージコレクションでデータが移動されたか否かの判別が行われる（Ｓ１３１７）。この判別において、ガベージコレクションでデータが移動された（Ｙｅｓ）と判断された場合には、「ブロックより小さい単位で論物変換する領域」の論物変換テーブル、すなわち、ページ単位で管理する領域の論物変換デーブルＴＢ３及びセクタ単位で管理する領域の論物変換テーブルＴＢ５、ブロック単位で管理する領域の領域の論物変換テーブルＴＢＴＢ１、消去可能ＰＢＡテーブルＴＢ２、書込み可能ページテーブルＴＢ４が更新され（Ｓ１３１８）、その後、リセットビジーが解除されることで、リセット処理の終了がホスト２に伝えられる（Ｓ１３１９）。
【００６３】
また、上記ステップＳ１３０８の判別において、ガベージコレクション処理に要する時間が、規定時間を越える（Ｙｅｓ）と判断された場合には、ガベージコレクション処理を行うべきではないので、上記ステップＳ１３０３で「ブロックより小さい単位で論物変換する領域」の空きページ数が規定値以下ではない（Ｎｏ）と判断された場合と同様に、ページバッファ１２６上にデータが残っているか否かの判別に遷移される（Ｓ１３１５）。
【００６４】
上記ステップＳ１３１０の判別において、当該ページに有効なデータが無い（Ｎｏ）と判断された場合には、処理ページ番号がインクリメントされた後に（Ｓ１３１１）、上記ステップＳ１３０８の判別に戻されることにより、次の処理ページ番号についてのガベージコレクション処理が行われる。また、上記ステップＳ１３１３の判別で、ページバッファ上のデータはページサイズ以上ではない（Ｎｏ）と判断された場合には、ステップＳ１３１４のデータ書込みを行うことなく、処理ページ番号がインクリメントされた後に（Ｓ１３１１）、上記ステップＳ１３０８の判別に戻されることにより、次の処理ページ番号についてのガベージコレクション処理が行われる。そして上記ステップＳ１３０９の判別において、処理ページ数が当該ブロックにおける最大ページ数未満ではない（Ｎｏ）と判断された場合には、全ての処理ページ番号についてのガベージコレクション処理が終了したことから、上記ステップＳ１３０２の確認処理に戻される。
【００６５】
尚、ホスト２からリードコマンドが発行された場合には、コントローラ１２によって論物変換テーブルＴＢ１、ＴＢ３、又はＴＢ５が参照され、当該リードコマンドにかかるデータがフラッシュメモリ１１から読出されて、ホスト２に伝達される。
【００６６】
この実施の形態によれば、以下の効果を得ることができる。
【００６７】
従来システムに従えば、フラッシュメモリの消去単位やプログラム（書込み）単位毎に論理アドレスを管理していることから、ホストシステムからフラッシュＳＳＤ内のフラッシュメモリに１セクタ分のデータを書込む場合には、当該セクタを含むページのデータがフラッシュメモリからバッファメモリに読出され、その後このバッファメモリ内の該当するセクタのデータが更新され、このデータ更新後にバッファメモリ内のデータがフラッシュメモリ内の別のアドレスに書込まれる。このようにホストシステムからフラッシュＳＳＤ内のフラッシュメモリに１セクタ分のデータを書込む場合には、ホストシステムが書込みたいセクタ以外のデータをフラッシュメモリから読出さなければならず、それによって、フラッシュＳＳＤにおける小容量書込みの高速化が阻害される。
【００６８】
これに対して図１に示されるフラッシュＳＳＤ１においては、書込みセクタ数に応じて、データの上記不揮発性記憶部における書込み先が決定される。例えばフラッシュメモリ１１に対して１セクタのデータ書込みを実行する場合には、セクタ単位で管理する領域にデータ書込みが行われることになり、上記従来システムでのデータ書込みの場合のように、バッファメモリへのデータ退避を行う必要がないので、小容量書込みの高速化を図ることができる。
【００６９】
また、リセット処理毎にガベージコレクション処理が行われることにより、ブロック内に有効データが有る場合に、それが全て別の領域に移動され、当該ブロックは、消去によって再度書込み可能状態とされる。これにより、書込み可能な空き容量を増やすことができる。
【００７０】
《実施の形態２》
図１４には、本発明にかかる不揮発性半導体記憶装置の一例とされるフラッシュＳＳＤ１の別の構成例が示される。
【００７１】
図１４に示されるフラッシュＳＳＤ１が、図１に示されるのと大きく相違するのは、複数のフラッシュメモリ１１Ａ，１１Ｂ，１１Ｃ，１１Ｄが設けられている点である。フラッシュメモリ１１Ａ，１１Ｂ，１１Ｃ，１１Ｄは、それぞれ公知の半導体集積回路製造技術により、例えば単結晶シリコン基板などの一つの半導体基板に形成されている。コントローラ１２内のフラッシュインタフェース１２５と、フラッシュメモリ１１Ａ，１１Ｂ，１１Ｃ，１１Ｄとは、それぞれ専用のバスＢＳ１，ＢＳ２，ＢＳ３，ＢＳ４によって互いに結合されている。コントローラ１２は、バスＢＳ１，ＢＳ２，ＢＳ３，ＢＳ４を介してフラッシュメモリ１１Ａ，１１Ｂ，１１Ｃ，１１Ｄの動作制御を行う。各フラッシュメモリ１１Ａ，１１Ｂ，１１Ｃ，１１Ｄに対する動作制御の基本的な内容は、図１に示されるフラッシュＳＳＤ１の場合と同様である。
【００７２】
図１４に示される構成において、バスＢＳ１，ＢＳ２，ＢＳ３，ＢＳ４が常に使用されているわけではない。例えばフラッシュメモリ１１Ａ〜１１Ｃに対してはデータの書込みが行われているが、フラッシュメモリ１１Ｄに対してはデータの書込みが行われていない場合には、バスＢＳ４がアイドル状態（空き状態）であることが考えられる。そこでアイドル状態のバスが存在する場合に、当該バスを利用して、対応するフラッシュメモリ１１Ａ，１１Ｂ，１１Ｃ，１１Ｄについてのガベージコレクション処理を実行することができる。
【００７３】
図１５Ａ及び図１５Ｂには、アイドル状態のバスを用いてガベージコレクション処理を実行する場合のフローチャートが示される。尚、図１５Ａ及び図１５Ｂにおいて、「ＣＯＮ２」は、処理が連続していることを示している。このガベージコレクション処理は、ＣＰＵ１２３によって行われる。
【００７４】
ホスト２からコマンドが受信された後に、書込むＬＢＡとセクタ数が取得され（Ｓ１４０１，Ｓ１４０２）、アイドル状態のバスが存在するか否かの判別が行われる（Ｓ１４０３）。ステップＳ１４０２で取得された情報（書込むＬＢＡとセクタ数）によって書込み先が決定される。書込み先が決定すれば、そのとき使用されるバスが判明するため、それに基づいて、アイドル状態のバスが存在するか否かの判別が可能になる。アイドル状態のバスが無い（Ｎｏ）と判断された場合には、ガベージコレクションは実行されない。空きのバスがあると判断された場合には、書込み可能ページテーブルＴＢ４を参照して、当該バスに対応するフラッシュメモリにおいて空きページ数が規定値以下のブロックがあるか否かの確認が行われる（Ｓ１４０４，Ｓ１４０５）。ステップＳ１４０５の判別において、空きページ数が規定値以下のブロックがある（Ｙｅｓ）と判断された場合、消去可能ＰＢＡテーブルＴＢ２を参照して、消去可能ＰＢＡが取得されて、対応データが消去される（Ｓ１４０６，１４０７）。
【００７５】
ガベージコレクションによるデータの移動を行う前に、ホスト２から与えられたコマンドの処理が終了しているか否かの確認が行われる（Ｓ１４１０）。コマンド処理が終了している（Ｙｅｓ）と判断された場合には、ガベージコレクションは行われない。ホスト２から与えられたコマンドの処理が終了していない（Ｎｏ）と判断された場合には、ガベージコレクションが実行される（Ｓ１４１１〜Ｓ１４１６）。ステップＳ１４１１〜Ｓ１４１６のガベージコレクション処理は、図１３ＡにおけるステップＳ１３０９〜Ｓ１３１４の処理に対応する。すなわち、ブロックより小さい単位で論物変換する領域の論物変換テーブル（ＴＢ３，ＴＢ５）を参照して、選択したブロック内の有効なデータがあるか確認され（Ｓ１４１２）、有効なデータがある場合は、当該データをページバッファに読出される。ページバッファにページサイズ以上のデータを読み出したか否かの確認が行われ（Ｓ１４１５）、ページサイズ以上のデータが読出された場合に、当該データの書込み行われる（Ｓ１４１６）。ページサイズ未満の場合は、書込みは行われずに、ガベージコレクションが継続される。
【００７６】
ガベージコレクションの終了条件になった場合、書込んでいないデータがページバッファ１２６上に残っているか否かの確認が行われ（Ｓ１４１７）、データが残っている場合のみ、読み出したデータの書込みが実行される（Ｓ１４１８）。その後、ガベージコレクション中にデータの移動を行ったか否かの判定が行われ（Ｓ１４１９）、データ移動を行った場合に、ブロックより小さい単位で論物変換する領域の論物変換テーブル（ＴＢ３，ＴＢ５）、ブロック単位に管理する領域の論物変換テーブルＴＢ１、消去可能ＰＢＡテーブルＴＢ２を更新して論物変換の対応関係が変更される（Ｓ１４２０）。
【００７７】
このようにアイドル状態のバスを利用することにより、フラッシュメモリのリード／ライト動作に支障を与えることなく、ガベージコレクション処理を実行することができる。
【００７８】
《実施の形態３》
図１や図１４に示される構成において、「ブロックより小さい単位で論物変換する領域」がフラッシュＳＳＤ１の全容量より少ない場合や、「ブロックより小さい単位で論物変換する領域」に書込むための領域が不足する場合にもガベージコレクションを実行することができる。
【００７９】
図１６には、「ブロックより小さい単位で論物変換する領域」に書込むための領域が不足する場合のガベージコレクションのフローチャートが示される。
【００８０】
ホストからライトコマンドが受信された後（Ｓ１５０１）、「ブロックより小さい単位で論物変換する領域」に書込むための書込み可能ページが存在するか否かの判別が行われる（Ｓ１５０２）。この判別において、書込み可能ページが存在する（Ｙｅｓ）と判断された場合には、その書込み可能ページへの書込みが実行され（Ｓ１５１０）、「ブロックより小さい単位で論物変換する領域」の論物変換テーブル（ＴＢ３，ＴＢ５）、書込み可能ページテーブルＴＢ４が更新されて（Ｓ１５１１）、本フローチャートによる処理が終了される。上記ステップＳ１５０２の判別において、書込み可能ページが存在しない（Ｎｏ）と判断された場合には、消去可能ＰＢＡが規定以下か否かの判定が行われる（Ｓ１５０３）。この判別において、規定値以下ではない（Ｎｏ）と判断された場合には、消去可能ページが消去され（Ｓ１５０４）、消去した領域が書込み可能ページとされて、上記ステップＳ１５１０の書込み処理に遷移される。上記ステップＳ１５０３の判別において、消去可能ＰＢＡが規定値以下である（Ｙｅｓ）と判断された場合には、「ブロックより小さい単位で論物変換する領域」の論物変換テーブル（ＴＢ３，ＴＢ５）が参照されて、有効なデータが最小のブロックの選択が行われる（Ｓ１５０５）。選択したブロックの有効なデータがページバッファ１２６に読出され（Ｓ１５０６）、消去可能ＰＢＡが消去され（Ｓ１５０７）、ページバッファ１２６上の有効なデータが、消去されたブロックに書込まれる（Ｓ１５０８）。そして「ブロックより小さい単位で論物変換する領域」の論物変換テーブル（ＴＢ３，ＴＢ５）、書込み可能ページテーブルＴＢ４、消去可能ＰＢＡテーブル（ＴＢ４）が更新される（Ｓ１５０９）。これにより、有効なデータが最小のブロックを消去可能ＰＢＡとすることができ、書込みができない無効なデータを保存した領域を空けることができる。そして上記ステップＳ１５０９の処理後に、上記ステップＳ１５１０の書込み処理に遷移される。このように、図１６に示される処理によれば、「ブロックより小さい単位で論物変換する領域」がフラッシュＳＳＤ１の全容量より少ない場合や、「ブロックより小さい単位で論物変換する領域」に書込むための領域が不足する場合にもガベージコレクションを実行することができる。
【００８１】
《実施の形態４》
フラッシュメモリの記憶素子は動作原理上絶縁体となる酸化膜を貫通する電子により劣化するため、消去回数が限られている。そこでフラッシュＳＳＤ１の製品寿命を延ばすには、ブロック毎の消去回数を平準化するのが望ましい。ブロック毎の消去回数を平準化するには、消去可能ＰＢＡテーブルＴＢ２の他に図１７に示されるような消去回数の管理するテーブルを持つ構成にすると良い。図１７に示される消去回数カウント値テーブルは、図９に示されるエントリー（Ｅｎｔｒｙ−０〜Ｅｎｔｒｙ−１０２３）毎に、消去回数をカウントする。
【００８２】
図１８には、図１７に示される消去回数カウント値テーブルを用いた処理の流れが示される。
【００８３】
先ず、図１７に示される消去回数カウント値テーブルを参照して、消去回数が最小のＰＢＡがガベージコレクション実行ＰＢＡとして取得され（Ｓ１７０１）、論物変換テーブル（ＴＢ１，ＴＢ３，ＴＢ５）にガベージコレクション実行ＰＢＡが登録されていないことを確認することで、ガベージコレクション実行ＰＢＡに有効なデータが存在するか否かの判別が行われる（Ｓ１７０２）。この判別において、ガベージコレクション実行ＰＢＡに有効なデータが存在しない（Ｎｏ）と判断された場合には、ガベージコレクション実行ＰＢＡを用いてガベージコレクションが実行される（Ｓ１７０６）。このガベージコレクションの具体的な処理内容は、図１３Ａ，１３Ｂや、図１５Ａ，１５Ｂを用いて説明した通りである。そして消去回数カウント値テーブルにおける、消去を行なったＰＢＡの消去回数がインクリメントされる（Ｓ１７０７）。
【００８４】
上記ステップＳ１７０２の判別において、ガベージコレクション実行ＰＢＡに有効なデータが存在する（Ｙｅｓ）と判断された場合には、消去回数が最大の消去可能ＰＢＡが消去され（Ｓ１７０３）、ガベージコレクション実行ＰＢＡに保存されている有効データが、上記ステップＳ１７０３で消去されたＰＢＡに移動される（Ｓ１７０４）。そして、論物変換テーブルＴＢ１，ＴＢ３，ＴＢ５、消去可能ＰＢＡテーブルＴＢ２、書込み可能ページテーブルＴＢ５が更新されることで、ガベージコレクション実行ＰＢＡが消去可能ＰＢＡに変更される（Ｓ１７０５）。
【００８５】
図１８に示される処理が定期的に行われることで、ホスト２からのコマンドによるデータ書込みが著しく少ないブロックについても、ステップＳ１７０４での処理により定期的にデータが移動され、消去可能ＰＢＡテーブルＴＢ２や、書込み可能ページテーブルＴＢ５に記述されることになるため、フラッシュメモリ内の全ブロックが定期的に消去対象となる。これにより、ブロック毎の消去回数を平準化することができるので、フラッシュＳＳＤ１の製品寿命を延ばすことができる。
【００８６】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【符号の説明】
【００８７】
１  フラッシュＳＳＤ
２  ホスト
１１，１１Ａ〜１１Ｄ  フラッシュメモリ
１２  コントローラ
１３  外部ＲＡＭ
１１１  バッファ
１１２  フラッシュアレイ
１２１  ＲＯＭ
１２２  ＲＡＭ
１２３  ＣＰＵ
１２４  ＥＣＣ
１２５  フラッシュインタフェース
１２６  ページバッファ
１２７  バッファインタフェース
１２８  ホストインタフェース
ＢＳ，ＢＳ１〜ＢＳ４  バス
【図１】
2012164114.tif 000003
【図２】
2012164114.tif 000004
【図３】
2012164114.tif 000005
【図４】
2012164114.tif 000006
【図５】
2012164114.tif 000007
【図６】
2012164114.tif 000008
【図７】
2012164114.tif 000009
【図８】
2012164114.tif 000010
【図９】
2012164114.tif 000011
【図１０】
2012164114.tif 000012
【図１１】
2012164114.tif 000013
【図１２】
2012164114.tif 000014
【図１３Ａ】
2012164114.tif 000015
【図１３Ｂ】
2012164114.tif 000016
【図１４】
2012164114.tif 000017
【図１５Ａ】
2012164114.tif 000018
【図１５Ｂ】
2012164114.tif 000019
【図１６】
2012164114.tif 000020
【図１７】
2012164114.tif 000021
【図１８】
2012164114.tif 000022