(57)【要約】【課題】不揮発性半導体メモリ内に形成されたキャッシュ領域からストレージ領域に対するデータの移動に要する時間を短縮し、書き込み速度を向上させる。【解決手段】第２の記憶部に記憶されたデータが許容値を超える移動条件が成立したときにおける第２の記憶部から第３の記憶部への第１のデータの移動が、論理ブロックの途中ページまでの書き込みである場合、移動する第１のデータの終端論理アドレスを記憶し、その後前記移動条件が成立したとき、記憶した終端論理アドレスに続く論理アドレスを持つ第２のデータが第２の記憶部に記憶されている場合は、論理ブロックの途中ページに続けて前記第２のデータを追記する。【選択図】          図６
2013161132.tif 000002
【特許請求の範囲】
【請求項１】
揮発性半導体メモリに含まれるキャッシュメモリとしての第１の記憶部と、
ページ単位で読み出し及び書き込みが行われ、前記ページ単位の２以上の自然数倍の大きさである物理ブロック単位で消去が行われる不揮発性半導体メモリに含まれる、キャッシュメモリとしての第２の記憶部と、
前記不揮発性半導体メモリに含まれる、データストレージ領域としての第３の記憶部と、
前記不揮発性半導体メモリの記憶領域を、１以上の前記物理ブロックに対応付けられた論理ブロック単位で前記第３の記憶部に割り当て、前記論理ブロック単位で論理アドレスに対応してデータを第３の記憶部に記憶させるコントローラと、
を備え、
前記コントローラは、
セクタ単位の複数のデータを前記第１の記憶部に書き込み、前記第１の記憶部に書き込まれた複数のデータを前記第２の記憶部に追い出す第１の制御部と、
前記第２の記憶部に記憶されたデータが許容値を超える移動条件が成立した場合に、前記第２の記憶部に記憶された複数のデータを第３の記憶部に所属する論理ブロックに移動する第２の制御部と、
を備え、
前記第２の制御部は、前記移動条件が成立したときにおける前記第２の記憶部から第３の記憶部への第１のデータの移動が、前記論理ブロックの途中ページまでの書き込みである場合、移動する第１のデータの終端論理アドレスを記憶し、その後前記移動条件が成立したとき、前記記憶した終端論理アドレスに続く論理アドレスを持つ第２のデータが第２の記憶部に記憶されている場合は、前記論理ブロックの前記途中ページに続けて前記第２のデータを追記するデータ移動制御を実行する
ことを特徴とする半導体記憶装置。
【請求項２】
前記第２の制御部は、第２の記憶部に所定量以上の連続データが存在しているか否かを判定し、第２の記憶部に所定量以上の連続データが存在しているときに、所定量以上の連続データに対して前記データ移動制御を実行することを特徴とする請求項１に記載の半導体記憶装置。
【請求項３】
前記第２の制御部は、前記所定量以上のデータが存在しているか否かを判定する際、有効データが存在しない空隙部分に上限値を設定し、空隙が上限値未満である場合は、データが連続であると判定し、空隙が上限値以上ある場合にデータが不連続であると判定することを特徴とする請求項１または２に記載の半導体記憶装置。
【請求項４】
前記第２の制御部は、移動条件が成立したときに途中ページまでの書き込みを行うことを許容する論理ブロック数に上限を設けることを特徴とする請求項１乃至請求項３の何れか一つに記載の半導体記憶装置。
【請求項５】
前記第２の記憶部は、前記第１の記憶部に書き込まれた複数のデータが追い出される第１のキャッシュと、第１のキャッシュに記憶されたデータが移動される第２のキャッシュとを備え、
第１の制御部は、前記第１の記憶部に書き込まれた複数のデータを前記第１のキャッシュに追い出し、
前記第２の制御部は、第２のキャッシュに記憶されたデータが許容値を超える移動条件が成立した場合に、前記第２のキャッシュに記憶された複数のデータを第３の記憶部に所属する論理ブロックに移動する
ことを特徴とする請求項１乃至請求項４の何れか一つに記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性半導体メモリを備えた半導体記憶装置に関する。
【背景技術】
【０００２】
不揮発性半導体メモリとしてのフラッシュメモリを搭載したメモリカードにおいて、ホストからライト要求されたデータを、揮発性のメモリおよびフラッシュメモリ内に形成されたキャッシュ領域を経由してフラッシュメモリ内に形成されたストレージ領域に格納するように構成されたシステムがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−５２１７１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、不揮発性半導体メモリ内に形成されたキャッシュ領域からストレージ領域に対するデータの移動に要する時間を短縮し、書き込み速度を向上させることが可能な半導体記憶装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一つの実施形態によれば、半導体記憶装置は、揮発性半導体メモリに含まれるキャッシュメモリとしての第１の記憶部と、ページ単位で読み出し及び書き込みが行われ、前記ページ単位の２以上の自然数倍の大きさである物理ブロック単位で消去が行われる不揮発性半導体メモリに含まれる、キャッシュメモリとしての第２の記憶部と、前記不揮発性半導体メモリに含まれる、データストレージ領域としての第３の記憶部と、前記不揮発性半導体メモリの記憶領域を、１以上の前記物理ブロックに対応付けられた論理ブロック単位で前記第３の記憶部に割り当て、前記論理ブロック単位で論理アドレスに対応してデータを第３の記憶部に記憶させるコントローラとを備える。前記コントローラは、セクタ単位の複数のデータを前記第１の記憶部に書き込み、前記第１の記憶部に書き込まれた複数のデータを前記第２の記憶部に追い出す第１の制御部と、前記第２の記憶部に記憶されたデータが許容値を超える移動条件が成立した場合に、前記第２の記憶部に記憶された複数のデータを第３の記憶部に所属する論理ブロックに移動する第２の制御部とを備える。前記第２の制御部は、前記移動条件が成立したときにおける前記第２の記憶部から第３の記憶部への第１のデータの移動が、前記論理ブロックの途中ページまでの書き込みである場合、移動する第１のデータの終端論理アドレスを記憶し、その後前記移動条件が成立したとき、前記記憶した終端論理アドレスに続く論理アドレスを持つ第２のデータが第２の記憶部に記憶されている場合は、前記論理ブロックの前記途中ページに続けて前記第２のデータを追記するデータ移動制御を実行する。
【図面の簡単な説明】
【０００６】
【図１】図１は、実施の形態にかかる半導体記憶装置の構成を示すブロック図である。
【図２】図２は、ＮＡＮＤフラッシュのより詳細なハードウェア的な内部構成を示す図である。
【図３】図３は、揮発キャッシュおよびＮＡＮＤフラッシュのより詳細な機能的な内部構成を示す図である。
【図４】図４は、ＬＢＡと管理単位との関係を示す図である。
【図５】図５は、比較例のＭＳ掃き出し処理を説明する図である。
【図６】図６は、本実施形態のＭＳ掃き出し処理を説明する図である。
【図７】図７は、本実施形態のＭＳ掃き出し処理の動作手順を示すフローチャートである。
【図８】図８は、書き込み速度を測定するために用いたデータシーケンスを示す図である。
【発明を実施するための形態】
【０００７】
フラッシュメモリに形成されたキャッシュ領域のデータが満杯になると、キャッシュ領域のデータをフラッシュメモリに形成されたストレージ領域に移動する。ストレージ領域では、１以上の物理ブロックに対応付けられた論理ブロック単位でデータの論物変換を行う。すなわち、論理ブロック内においては、データがホストから与えられる論理アドレス順にかつ論理アドレスに対応する位置に記憶されている。
【０００８】
キャッシュ領域からストレージ領域へのデータの移動の際に、移動対象の論理ブロックで論物変換を行うべき全てのデータを複数回に分けて移動する手法がある。この手法では、複数回のデータ移動の度に、別の論理ブロック（用途未割り当てのフリーブロック）を使用するので、データの移動に要する時間が長くなり、書き込み速度が低下する。
【０００９】
そこで、本実施形態においては、キャッシュ領域からストレージ領域へのデータ移動条件が成立したとき、前記データ移動が論理ブロックの途中までの書き込みであるか否かを判定し、途中までの書き込みであると判定した場合は、移動するデータの終端論理アドレスを記憶し、その後でデータ移動条件が再び成立したとき、記憶した終端論理アドレスに続く論理アドレスを持つデータがキャッシュ領域に記憶されている場合は、前記論理ブロックの途中から後続のデータを追記することとする。
【００１０】
このように本実施形態においては、１つの論理ブロックを使用して複数回のデータ移動を行うので、データの移動に要する時間が短くなり、書き込み速度も向上する。
【００１１】
以下に添付図面を参照して、実施形態にかかる半導体記憶装置を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【００１２】
図１は、実施の形態にかかる半導体記憶装置の構成を示すブロック図である。ここでは、半導体記憶装置の一例としてメモリカードを例に挙げて説明するが、本実施の形態の適用対象はメモリカードに限定しない。
【００１３】
メモリカード１００は、ホスト装置（以下ホストともいう）１と接続され、ホスト１の外部記憶装置として機能する。ホスト１としては、パーソナルコンピュータのＣＰＵ、スチルカメラ、ビデオカメラなどの撮像装置のＣＰＵなどがあげられる。メモリカード１００は、不揮発性半導体メモリとしてのＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤフラッシュと略す）１０と、揮発性半導体メモリとしてのバッファＲＡＭ２０（Random Access Memory）と、バッファＲＡＭ２０−ホスト１間のデータ転送制御を行うホストインタフェースモジュール（ＨＩＭ）３０と、バッファＲＡＭ２０−ＮＡＮＤフラッシュ１０間のデータ転送制御を行うＮＡＮＤコントローラ４０と、ＮＡＮＤフラッシュ１０に対してリード／ライトするデータに対する誤り訂正処理を行うＥＣＣ（Error Correcting Code）回路４１と、論理（Logical）・物理（physical）変換情報をハードウェア検索するためのハードウェア論物変換器（ＨＷＬＰ）４２と、メモリカード１００の構成要素を全体的に管理制御するファームウェアによって動作するＣＰＵ５０と、バスコントローラ５１とを備える。
【００１４】
ホスト１はメモリカード１００に対し、リード要求またはライト要求を発行する際には、論理アドレスとしてのＬＢＡ（Logical Block Addressing）をコマンドに付加する。ＬＢＡは、セクタ（サイズ：例えば５１２Ｂ）に対して０からの通し番号をつけた論理アドレスである。この実施形態では、ホスト１からは、最大、２ｉー１個のセクタで構成されるサイズを持つデータパケットが送信されるとする。ｉは２以上の自然数である。１つのデータパケット内では、データはＬＢＡ順に並んでいる。
【００１５】
ＮＡＮＤフラッシュ１０は、ホスト１によって指定されたユーザデータを記憶したり、ＨＷＬＰ４２で検索される論物変換情報やバッファＲＡＭ２０で管理される管理情報をバックアップ用に記憶したりする。ＮＡＮＤフラッシュ１０は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。ＮＡＮＤフラッシュ１０は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、ＮＡＮＤ１０では、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。なお、同一物理ページに対する上書きは、当該物理ページを含む物理ブロック全体を一旦消去した後に行う必要がある。また、ＮＡＮＤフラッシュ１０を構成する並列動作可能な複数のチップから１個または複数個ずつブロックを夫々選択し、これら複数のブロックを組みにして一括消去単位としてもよい。一括消去単位のブロックを論理ブロックと呼称する。同様に、ＮＡＮＤフラッシュ１０を構成する並列動作可能な複数のチップから１個ずつページを選択し、これら複数のページを組みにして一括書き込み、一括読み出し単位としてもよい。一括書き込み単位、一括読み出し単位のページを論理ページと呼称する。
【００１６】
この実施形態では、ページサイズは２ｉ個分のセクタサイズと同じ、すなわちホスト１からのデータパケットの最大サイズの２倍であるとする。
【００１７】
バッファＲＡＭ２０は、ホスト１とＮＡＮＤフラッシュ１０間でのデータ転送用キャッシュ、作業領域用メモリとして機能する。バッファＲＡＭ２０内の揮発キャッシュ２１は、ホスト１からのライトデータを記憶するライトキャッシュとして機能する。
【００１８】
ホストインタフェースモジュール（ＨＩＭ）３０は、ホスト１とのインタフェースを制御するものであり、コマンドの解釈、必要なデータの暗号、復号を行い、ホスト１とバッファＲＡＭ２０間でのデータの転送制御を行う。
【００１９】
ＮＡＮＤコントローラ４０は、バァファＲＡＭ２０とＮＡＮＤフラッシュ１０間でのデータ転送制御を行う。ＥＣＣ回路４１は、ＮＡＮＤフラッシュ１０にライトするデータに対して、誤り訂正処理におけるエンコード処理を行い、エンコード結果をデータに付加してＮＡＮＤコントローラ４０に出力する。また、ＥＣＣ回路４１は、ＮＡＮＤフラッシュ１０からリードされたデータに対して、誤り訂正処理におけるデコード処理を行い、誤り訂正されたデータをＮＡＮＤコントローラ４０に出力する。
【００２０】
ＨＷＬＰ４２は、ホストが指定する論理アドレスとしてのＬＢＡと、ＮＡＮＤフラッシュ１０上でのデータの記憶位置との対応関係を示す論物変換情報を含む管理情報を検索するための検索装置をハードウェア的に実現したものであり、ＣＰＵ５０上で動作するメモリカードコントローラとしてのファームウェアは、ＨＷＬＰ４２を用いて論物変換情報などの管理情報を取得する。ＨＷＬＰ４２で検索される管理情報は、ＮＡＮＤフラッシュ１０でバックアップされている。
【００２１】
バスコントローラ５１は、バス接続されるメモリカード１００内の構成要素間のデータ転送制御を実行する。ＣＰＵ５０は、ＣＰＵ５０上で実行されるファームウエアによってメモリカードコントローラとしての機能を実現する。ファームウエアが実現する機能としては、ホスト１からのライト要求、リード要求等の各種コマンドへの応答と、ＨＷＬＰ４２で検索される論物変換情報の取得および更新と、ＮＡＮＤフラッシュ１０の整理（ガベージコレクション）などがある。
【００２２】
図２は、ＮＡＮＤフラッシュ１０のより詳細なハードウェア的な内部構成を示すものである。この実施形態では、ＮＡＮＤコントローラ４０とＮＡＮＤフラッシュ１０は、１つのＩ／Ｏチャネルを介して接続されているとする。また、この実施形態では、便宜上、ＮＡＮＤフラッシュ１０は、２つのメモリチップ（ｃｈｉｐ０，ｃｈｉｐ１）で構成されているとする。各メモリチップ（ｃｈｉｐ０，ｃｈｉｐ１）は、例えば、それぞれ複数の物理ブロックＢＬＫを含むプレーン０（ｐｌａｎｅ０）、プレーン１（ｐｌａｎｅ１）の２つの領域（District）に分割されている。プレーン０及びプレーン１は、互いに独立した周辺回路（例えば、ロウデコーダ、カラムデコーダ、ページバッファ、データキャッシュ等）を備えており、同時に消去／書き込み／読み出しを行うことが可能である。１つのプレーンは、複数の物理ブロックで構成されており、１つの物理ブロックは、複数の物理ページで構成されている。
【００２３】
ＮＡＮＤコントローラ４０は、１つのＩ／Ｏチャネルを共用する２つのメモリチップ（ｃｈｉｐ０，ｃｈｉｐ１）を２本のチップイネーブル信号（ＣＥ０，ＣＥ１）で個別に制御する。また、チップイネーブル信号（ＣＥ０，ＣＥ１）を用いて、２つのメモリチップ（ｃｈｉｐ０，ｃｈｉｐ１）をインタリーブ制御することで、２つのメモリチップ（ｃｈｉｐ０，ｃｈｉｐ１）をほぼ並列に動作させる。このように、本実施形態では、２つのプレーン（Ｐｌａｎｅ０，Ｐｌａｎｅ１）による並列動作と、２つのメモリチップ（ｃｈｉｐ０，ｃｈｉｐ１）を用いたチップインタリーブによる並列動作を行わせることで、例えば、図２にハッチングを付した４つの物理ブロックで構成される前述の論理ブロックを構成している。また、同様の並列動作を行わせることで、４つの物理ページで構成される論理ページを構成する。
【００２４】
図３は、揮発キャッシュ２１およびＮＡＮＤフラッシュ１０のより詳細な機能的な内部構成を示すものである。まず、ライトキャッシュとして機能する揮発キャッシュ２１は、入力バッファ部２１ａと、内部キャッシュ２１ｂを有する。入力バッファ部２１ａは、ホスト１からのデータパケットが入力される入力バッファとして機能する。内部キャッシュ２１ｂは、入力バッファ部２１ａのデータが転送されて、ライトキャッシュとして機能する。入力バッファ部２１ａ、内部キャッシュ２１ｂの記憶容量としては、任意の容量を選択可能であるが、この実施形態では、入力バッファ部２１ａは、ホスト１からの最大データパケットサイズに合わせて２ｉー１個のセクタサイズ分の記憶容量を持つとし、内部キャッシュ２１ｂは、２ｉ個分のセクタサイズ分の記憶容量、すなわちページサイズと同じ容量をもつとする。したがって、入力バッファ部２１ａに入力された最大２ｉー１個のセクタサイズ分のライトデータは、内部キャッシュ２１ｂで最大２ｉ個分のセクタサイズ分の連続したＬＢＡを有するデータに成形される。
【００２５】
ＮＡＮＤフラッシュ１０には、第１ＮＡＮＤキャッシュ１１と、第２ＮＡＮＤキャッシュ１２と、メインストレージ（ＭＳ）１３とから構成される３つの管理領域が定義されている。ＭＳ１３はメインのストレージ領域であり、ほとんどのユーザデータがＭＳ１３に格納される。第１ＮＡＮＤキャッシュ１１および第２ＮＡＮＤキャッシュ１２は、ＮＡＮＤフラッシュ１０上に形成されたキャッシュメモリ領域である。
【００２６】
揮発キャッシュ２１の内部キャッシュ２１ｂでバッファリングされたデータは、図３に矢印で示すように、ＭＳ１３に直接追い出される場合と、第１ＮＡＮＤキャッシュ１１、第２ＮＡＮＤキャッシュ１２を経由してＭＳ１３に追い出される場合とがある。ホスト１から受信した書き込み要求コマンドに含まれるデータサイズ（セクタカウント）が所定の閾値より大きい場合に、揮発キャッシュ２１のデータがＭＳ１３に直接追い出される。それ以外は、第１ＮＡＮＤキャッシュ１１、第２ＮＡＮＤキャッシュ１２を経由してＭＳ１３に追い出される。
【００２７】
（第１ＮＡＮＤキャッシュ）
この実施形態では、第１ＮＡＮＤキャッシュ１１として、図３に示すように、例えば、２つの物理ブロックＢＬＫｏ、ＢＬＫｅが使用される。各ブロックＢＬＫｏ、ＢＬＫｅ内の１つの区画が１ページ分を示している。第１ＮＡＮＤキャッシュ１１では、第１ＮＡＮＤキャッシュ１１に記憶されるデータのＬＢＡを第１の管理単位Ｄ１をもって管理する。この実施形態では、第１の管理単位Ｄ１として、ページサイズと同じサイズ（２ｉ個分のセクタサイズ）を採用する。したがって、第１の管理単位アドレスＤ１は、図４に示すように、ＬＢＡの（ｉ＋１）ビット目から上位のビット列で構成される。別言すれば、第１ＮＡＮＤキャッシュ１１は、ページサイズと同じサイズの分解能をもって第１ＮＡＮＤキャッシュ１１に記憶されるデータのＬＢＡを管理する。一方の物理ブロックＢＬＫｏには、奇数の第１の管理単位アドレスＤ１をもつ奇数データが記憶され、他方の物理ブロックＢＬＫｌｅには、偶数の第１の管理単位アドレスＤ１をもつ偶数データが記憶される。
【００２８】
第１ＮＡＮＤキャッシュ１１には、２つの物理ブロックが用いられるが、この実施形態では、有効なデータとして扱われるのは、そのうちの連続した第１の管理単位アドレスをもつ、奇数データおよび偶数データで構成される最大２ページサイズ分の最新データのみであるとする。図３では、ハッチングを付した部分が有効データ（セクタ）部分を示している。有効な最大２ページ分以外のデータは、第２ＮＡＮＤキャッシュ１２に追い出される。すなわち、第１ＮＡＮＤキャッシュ１１では、物理ブロックＢＬＫｏ、ＢＬＫｅの各ページに対し、揮発キャッシュ２１から追い出されたデータを、夫々最大１ページ分ずつのデータとして追記していくが、そのうちの最新の追記データのみが、有効データとして取り扱われ、それ以外は、無効なデータとして取り扱われる。勿論、第１ＮＡＮＤキャッシュ１１の有効データサイズがもっと大きくなるように、第１ＮＡＮＤキャッシュ１１を管理するようにしてもよい。
【００２９】
（第２ＮＡＮＤキャッシュ）
この実施形態では、第２ＮＡＮＤキャッシュ１２として、例えば、４つの物理ブロックＢＬＫ１ｏ、ＢＬＫ２ｏ、ＢＬＫ１ｅ、ＢＬＫ２ｅが使用される。第２ＮＡＮＤキャッシュ１２では、第２ＮＡＮＤキャッシュ１２に記憶されるデータのＬＢＡを第２の管理単位Ｄ２をもって管理する。第２の管理単位Ｄ２としては、ページサイズの整数倍を採用する。この実施形態では、第２の管理単位Ｄ２としては、ページサイズの２倍を採用する。したがって、第２の管理単位アドレスＤ２は、図４に示すように、ＬＢＡの（ｉ＋２）ビット目から上位のビット列で構成される。別言すれば、第２ＮＡＮＤキャッシュ１２は、ページサイズの２倍の分解能をもって第２ＮＡＮＤキャッシュ１２に記憶されるデータのＬＢＡを管理する。物理ブロックＢＬＫ１ｏ、ＢＬＫ２ｏには、奇数の第２の管理単位アドレスＤ２をもつ奇数データを１エントリとして、奇数データが複数エントリ分記憶され、物理ブロックＢＬＫ１ｅ、ＢＬＫ２ｅには、偶数の第２の管理単位アドレスＤ２をもつ偶数データを１エントリとして、偶数データが複数エントリ分記憶される。物理ブロックＢＬＫ１ｏ、ＢＬＫ２ｏのペアは、同一メモリチップ内の２つのプレーンから選択する。物理ブロックＢＬＫ１ｅ、ＢＬＫ２ｅのペアも同様であり、同一メモリチップ内の２つのプレーンから選択する。
【００３０】
第２ＮＡＮＤキャッシュ１２では、複数のエントリが満杯になると、ＭＳにデータを追い出すＭＳ掃き出し条件が成立したとして、ＭＳ１３にデータを追い出す。第２ＮＡＮＤキャッシュ１２において、複数のエントリが満杯になる前に、ガベージコレクションを行うようにしてもよい。
【００３１】
（メインストレージ）
メインストレージ（ＭＳ）１３では、前述したように、４つの物理ブロックに対応付けられた論理ブロック単位でデータの論物変換を行う。すなわち、論理ブロック内においては、データがＬＢＡ順にかつＬＢＡに対応する位置に記憶されている。したがって、ＭＳ１３では、論理ブロックに記憶されるデータのＬＢＡを論理ブロックと同じサイズを持つ第３の管理単位Ｄ３をもって管理する。第３の管理単位Ｄ３としては、例えば、６４ページ分のサイズ、１２８ページ分のサイズ、２５６ページ分のサイズ、…などが採用される。
【００３２】
このように、この実施形態では、第１ＮＡＮＤキャッシュの管理単位（第１の管理単位Ｄ１）＜第２ＮＡＮＤキャッシュの管理単位（第２の管理単位Ｄ２）＜メインストレージの管理単位（第３の管理単位Ｄ３）となっている。具体的には、第１の管理単位Ｄ１はページサイズと同サイズであり、第２の管理単位Ｄ２は第１の管理単位の２倍サイズ、第３の管理単位Ｄ３は論理ブロックと同じサイズとなっている。
【００３３】
前述したように、ＮＡＮＤフラッシュ１０に保存されているデータの消去は、物理ブロック単位で行われる。また、ＮＡＮＤフラッシュ１０にデータを書き込む場合は、物理ブロックを一定サイズに区切ったページという単位で、消去済みの物理ブロックの先頭から書き込む必要がある。さらに、一度書き込んだページに対しては上書きすることはできない。このため、一定サイズ未満のデータ書込みや、不連続なデータ書き込みがあった場合、データのマージ処理や別のブロックへの引越し処理が必要となる。
【００３４】
マージ処理では、ＮＡＮＤフラッシュ１０の記憶データを読み取って、変更を加えて、ＮＡＮＤフラッシュ１０に書き戻すリード・モディファイ・ライト（ＲＭＷ）が実行される。マージ処理では、更新データを含むページまたはブロックをＮＡＮＤフラッシュ１０からリードし、リードしたデータを、例えばホストから受信した更新データと統合する。そして、この統合データをＮＡＮＤフラッシュ１０の新たなページまたは新たなブロックに書き込む。
【００３５】
また、例えば、同じＬＢＡアドレス上のデータを上書きする場合に、つぎのような引っ越し処理が行われる。論理アドレスＡ１に有効なデータが保存されており、記憶領域としてはブロックＢ１が使用されていたとする。ホスト１から論理アドレスＡ１のデータ（サイズはブロックと同じとする）を上書きするコマンドを受信した場合、用途未割り当てのブロックとしてのフリーブロック（ブロックＢ２とする）を１個確保し、そのフリーブロックにホスト１から受信したデータを書き込む。その後、論理アドレスＡ１とブロックＢ２を関係付ける。その結果、ブロックＢ２は、用途割り当てが存在するアクティブブロックになり、ブロックＢ１に保存されたデータは無効になるためブロックＢ１はフリーブロックとなる。
【００３６】
つぎに、メモリカード１００でのライト処理について説明する。なお、以下では、揮発キャッシュ２１、第１ＮＡＮＤキャッシュ１１、第２ＮＡＮＤキャッシュ１２を経由したＭＳ１３へのデータ書き込みについて説明する。
【００３７】
ホスト１からライト要求が発生すると、ＣＰＵ５０上で実行されるファームウェアとしてのコントローラは、この書き込み要求に含まれるライトアドレスとしてのＬＢＡが、揮発キャッシュ２１の内部キャッシュ２１ｂのデータにヒットするか否かをＨＷＬＰ４２を用いて判定する。ライトデータが、内部キャッシュ２１ｂのデータにヒットした場合、コントローラは、入力バッファ部２１ａに書き込まれたライトデータを内部キャッシュ２１ｂのデータに上書きあるいはマージする。
【００３８】
入力バッファ部２１ａに書き込まれたライトデータが、内部キャッシュ２１ｂのデータにヒットしない場合、コントローラは、内部キャッシュ２１ｂに記憶されている最大１ページサイズのデータをＮＡＮＤフラッシュ１０の第１ＮＡＮＤキャッシュ１１にフラッシュする（追い出す）。その後、コントローラは、入力バッファ部２１ａに書き込まれたライトデータと、ＮＡＮＤフラッシュ１０に記憶されたデータとのマージ処理を行い、マージ処理後のデータを内部キャッシュ２１ｂに書き込む。すなわち、このマージ処理では、入力バッファ部２１ａに書き込まれたライトデータのＬＢＡが所属するＬＢＡを有するデータを、ＮＡＮＤフラッシュ１０の第１ＮＡＮＤキャッシュ１１または第２ＮＡＮＤキャッシュ１２またはＭＳ１３から読み出し、読み出したデータと入力バッファ部２１ａに書き込まれたライトデータとのマージを行う。
【００３９】
その後、ホスト１からライト要求が再度発生して、内部キャッシュ２１ｂにキャッシュされている最大１ページ分のデータをＮＡＮＤフラッシュ１０の第１ＮＡＮＤキャッシュ１１にフラッシュする必要が生じた際に、このフラッシュするデータが第１ＮＡＮＤキャッシュ１１のデータにヒットした場合、すなわちフラッシュするデータのＬＢＡが第１ＮＡＮＤキャッシュ１１に有効データとしてエントリされている最大２ページ分のデータのＬＢＡに含まれている場合は、内部キャッシュ２１ｂのデータと第１ＮＡＮＤキャッシュ１１のデータとをＲＡＭ２０でマージし、マージ後のデータを第１ＮＡＮＤキャッシュ１１の別のページに有効データとして追記する。第１ＮＡＮＤキャッシュ１１に有効データとしてエントリされていたマージ対象のデータは、無効化される。
【００４０】
一方、内部キャッシュ２１ｂのデータを第１ＮＡＮＤキャッシュ１１にフラッシュする必要が生じた際に、このフラッシュするデータが第１ＮＡＮＤキャッシュ１１のデータにヒットしない場合は、第１ＮＡＮＤキャッシュ１１のデータを第２ＮＡＮＤキャッシュ１２に追記した後、内部キャッシュ２１ｂのデータを第１ＮＡＮＤキャッシュ１１の別のページに有効データとして追記する。第１ＮＡＮＤキャッシュ１１から第２ＮＡＮＤキャッシュ１２に移動されたデータは、無効化される。
【００４１】
このような処理が繰り返される。その後、第２ＮＡＮＤキャッシュ１２に一定のエントリが溜まると、コントローラは、ＭＳ掃き出し条件が成立したとして、それまで第２ＮＡＮＤキャッシュ１２に保存してきたデータをＭＳ１３に掃き出すＭＳ掃き出し処理を行う。なお、第２ＮＡＮＤキャッシュ１２に一定量のシーケンシャルデータ（ＬＢＡが連続しているデータ）が連続して書き込まれている場合は、それ以降のデータは不連続になるまで、内部キャッシュ２１ｂ、第１ＮＡＮＤキャッシュ１１、第２ＮＡＮＤキャッシュ１２を経由することなく、入力バッファ部２１ａから直接ＭＳ１３に書き込まれる。
【００４２】
（ＭＳ掃き出し処理）
つぎに、ＭＳ掃き出し処理についてより詳細に説明する。図５は、比較例としてのＭＳ掃出し処理を示すものである。ＭＳ掃き出し処理においては、第２ＮＡＮＤキャッシュ１２にキャッシュされたデータと、第２ＮＡＮＤキャッシュ１２にキャッシュされたデータのＬＢＡが所属するＬＢＡを有する既存データが記憶されているＭＳ１３の論理ブロックのデータとをマージして、用途未割り当ての新たな論理ブロック（フリーブロック）に書き込む前述の引っ越し処理が行われる。比較例では、ＭＳ掃出し処理が開始されると、データの書き込み対象であるフリーブロックに対し、このフリーブロックに書き込むべき第２ＮＡＮＤキャッシュ１２にキャッシュされたデータと、このフリーブロックに書き込むべきＭＳ１３の論理ブロックに記憶されている既存データとを、全て最後まで書き込むようにしていた。
【００４３】
図５（ａ）は、比較例における１回目のＭＳ掃き出し処理を示すもので、ＭＳ１３に所属する論理ブロックＡには既存データ（左下がりハッチングで示す）が記憶されており、第２ＮＡＮＤキャッシュ１２には、論理ブロックＡに記憶されている既存データのＬＢＡの範囲内のデータ（右下がりのハッチングで示す）がキャッシュされている。第２ＮＡＮＤキャッシュ１２に一定のエントリが溜まるＭＳ掃き出し条件が成立して、第２ＮＡＮＤキャッシュ１２のデータをＭＳ１３に掃き出す際には、用途未割り当てのフリーブロック（論理ブロックＢ）を取得し、この論理ブロックＢに対し、第２ＮＡＮＤキャッシュ１２のデータと、論理ブロックＡにおける第２ＮＡＮＤキャッシュ１２のデータにＬＢＡが重複しない部分の全ての既存データを夫々ＬＢＡに対応する記憶位置に書き込む。すなわち、論理ブロックＡおよび第２ＮＡＮＤキャッシュ１２から有効データを全てＬＢＡ順に読み出してＲＡＭ２０に書き込み、ＲＡＭ２０に書き込んだ全てのデータをＬＢＡ順にフリーブロック（論理ブロックＢ）に書き込む。
【００４４】
この１回目のＭＳ掃き出し処理の最中に、あるいは１回目のＭＳ掃き出し処理の後で、第１回目のＭＳ掃き出し処理で第２ＮＡＮＤキャッシュ１２からＭＳ１３に掃き出したデータのＬＢＡに連続するＬＢＡを有するデータが第２ＮＡＮＤキャッシュ１２に溜められる場合がある。このような場合、１回目の掃き出し処理の終了後、つぎのＭＳ掃き出し条件が成立したときに、２回目のＭＳ掃き出し処理が行われる。図５（ｂ）は、比較例における２回目のＭＳ掃き出し処理を示すもので、ＭＳ１３に所属する論理ブロックＢには、１回目の掃き出し処理によって書き込まれたデータが記憶されており、第２ＮＡＮＤキャッシュ１２には、第１回目のＭＳ掃き出し処理で掃き出したデータにＬＢＡが連続するデータ（クロスハッチングで示す）がキャッシュされている。２回目の掃き出し処理では、フリーブロック（論理ブロックＣ）を新たに取得し、この論理ブロックＣに対し、第２ＮＡＮＤキャッシュ１２のデータと、論理ブロックＢにおける第２ＮＡＮＤキャッシュ１２のデータにＬＢＡが重複しない部分の全ての既存データを夫々ＬＢＡに対応する記憶位置に書き込む。すなわち、論理ブロックＢおよび第２ＮＡＮＤキャッシュ１２から全ての有効データをＬＢＡ順に読み出してＲＡＭ２０に書き込み、ＲＡＭ２０に書き込んだデータをＬＢＡ順にフリーブロック（論理ブロックＣ）に書き込む。
【００４５】
このように、比較例におけるＭＳ掃き出し処理では、データの書き込み対象であるフリーブロックの最後まで、ＭＳ１３の論理ブロックに記憶されていた既存データを書き込むようにしていたので、ＭＳ掃き出し処理の最中あるいはＭＳ掃き出し処理の後で、このＭＳ掃き出し処理のデータに連続するデータが第２ＮＡＮＤキャッシュ１２にキャッシュされた場合、２個以上のフリーブロックを使用して掃き出し処理を行うこととなり、フリーブロックの使用個数が多くなり、また図５（ｂ）における論理ブロックＢから論理ブロックＣへのデータ移動時間を要するため、ＭＳ掃き出し処理の処理時間が長くなり、また書き込み速度の低下につながっていた。
【００４６】
そこで、本実施形態のＭＳ掃き出し処理においては、複数回に分けてデータを第２ＮＡＮＤキャッシュ１２からＭＳ１３に移動するのは、比較例と同様であるが、本実施形態では、ＭＳ掃き出し条件が成立した際、データの書き込み対象であるフリーブロックに対し、ＭＳ１３の論理ブロックに記憶されていた既存データをフリーブロックの最後まで書き込むのではなく、第２ＮＡＮＤキャッシュ１２にキャッシュされたデータ部分までの書き込みに留めておき、このフリーブロックに対するＭＳ掃き出し処理を一旦中断する。そして、第２ＮＡＮＤキャッシュ１２からＭＳ１３のフリーブロックに移動されたデータの終端ＬＢＡを記憶しておく。その後、つぎのＭＳ掃き出し条件が成立した際に、記憶した終端ＬＢＡに続くデータが、第２ＮＡＮＤキャッシュ１２にキャッシングされていた場合は、１回目のＭＳ掃き出し処理のときに用いたフリーブロックに対し、後続データを追記する。
【００４７】
図６を用いて、本実施形態のＭＳ掃き出し処理を説明する。図６（ａ）は１回目のＭＳ掃き出し処理を示すもので、ＭＳ１３に所属する論理ブロックＡには既存データ（左下がりハッチングで示す）が記憶されており、第２ＮＡＮＤキャッシュ１２には、論理ブロックＡに記憶されている既存データのＬＢＡの範囲内のデータ（右下がりのハッチングで示す）がキャッシュされている。ＭＳ掃き出し条件が成立して、第２ＮＡＮＤキャッシュ１２のデータをＭＳ１３に掃き出す際には、第２ＮＡＮＤキャッシュ１２のデータの終端ＬＢＡの情報をストップポインタ情報ＳＰとして記憶し、さらにフリーブロック（論理ブロックＢ）を取得し、この論理ブロックＢに対し、論理ブロックＡの既存データおよび第２ＮＡＮＤキャッシュ１２のデータを夫々ＬＢＡに対応する記憶位置に書き込む。ただし、論理ブロックＢに対する書き込みは、第２ＮＡＮＤキャッシュ１２にキャッシュされたデータ部分までの書き込みに留めておき、この論理ブロックＢに対するＭＳ掃き出し処理を一旦中断する。このため、図６（ａ）に示す、１回目のＭＳ掃き出し処理では、論理ブロックＢのストップポインタＳＰで指示された箇所以降のページは白抜きとなっており、この白抜きページには、この後データを追記することが可能である。別言すれば、この実施形態では、論理ブロックＢのストップポインタＳＰで指示された箇所以降のページに対し、論理ブロックＡの既存データを書き込まない。
【００４８】
この時点で、論理ブロックＡのストップポインタで指示された箇所（ＬＢＡ）以降のページには、最新の有効データが記憶されているので、この時点では、論理ブロックＡは、フリーブロックにすることなく、このまま既存データを保持させておく。
【００４９】
この１回目のＭＳ掃き出し処理の最中に、あるいは１回目のＭＳ掃き出し処理の後で、第１回目のＭＳ掃き出し処理で第２ＮＡＮＤキャッシュ１２からＭＳ１３に掃き出したデータのＬＢＡに連続するＬＢＡを有するデータが第２ＮＡＮＤキャッシュ１２に溜められたとする。このような場合、次のＭＳ掃き出し条件が成立したときに、２回目のＭＳ掃き出し処理が行われる。図６（ｂ）は、２回目のＭＳ掃き出し処理を示すもので、第２ＮＡＮＤキャッシュ１２には、第１回目のＭＳ掃き出し処理で掃き出したデータにＬＢＡが連続するデータ（クロスハッチングで示す）がキャッシュされている。２回目の掃き出し処理では、ストップポインタ情報ＳＰを参考にし、第２ＮＡＮＤキャッシュ１２のデータを論理ブロックＢの後続ページ（図６（ａ）の白抜きのページ）に追記し（矢印Ｋ１）、さらに論理ブロックＡの最終ＬＢＡを持つ２ページ分のデータを論理ブロックＢの最終の２ページに追記する（矢印Ｋ２）。詳細には、まず、最初の後続データの４ページ分を第２ＮＡＮＤキャッシュ１２から読み出して、論理ブロックＢの後続ページ（図６（ａ）の白抜きのページ）に追記する。さらに第２ＮＡＮＤキャッシュ１２から残り２ページ分のデータを読み出し、また論理ブロックＡから最終の２ページのデータを読み出し、これらを統合して論理ブロックＢの次のページに対し追記する。
【００５０】
図６の場合は、論理ページ（４つの物理ページ）単位でインタリーブ書き込みを行うＭＳ１３を採用しているので、ストップポインタの更新単位（＋１単位）を１論理ページ（４ページ）としている。このため、図６の場合は、論理ブロックＢの最終論理ページに対しては、論理ブロックＡのデータと第２ＮＡＮＤキャッシュ１２のデータを統合して書き込むようにしている。
【００５１】
しかし、１ページあるいは２ページ単位で書き込みを行うＭＳ１３が採用されている場合は、これに応じてストップポインタの更新単位を１ページまたは２ページとしてもよい。この場合は、矢印ＳＰ２の箇所に、ストップポインタを設定して２回目のＭＳ掃き出し処理を中断し、その後第２ＮＡＮＤキャッシュ１２に、第２回目のＭＳ掃き出し処理で第２ＮＡＮＤキャッシュ１２からＭＳ１３に掃き出したデータのＬＢＡに連続するＬＢＡを有するデータが溜められた場合は、第３回目のＭＳ掃き出し処理の際に、後続データを論理ブロックＢに対し追記するようにすればよい。
【００５２】
このように本実施形態のＭＳ掃き出し処理では、ＭＳ掃き出し処理の最中あるいはＭＳ掃き出し処理の後に、この掃き出し処理のデータに連続するデータが第２ＮＡＮＤキャッシュ１２にキャッシュされた場合でも、１個のフリーブロックを使用して掃き出し処理を行うこととなり、フリーブロックの使用個数が少なくなり、また、比較例で行っていたある論理ブロックから他の論理ブロック（フリーブロック）へのデータ移動が無くなり、ＭＳ掃き出し処理の処理時間を短くすることが可能となり、書き込み速度が向上する。
【００５３】
図７は、本実施形態のＭＳ掃き出し処理の動作手順を示すものである。図７に示すＭＳ掃き出し処理においては、第２ＮＡＮＤキャッシュ１２に連続したＬＢＡを有する一定サイズ以上のデータが保存されていた場合には、図６に示した本実施形態のＭＳ掃き出し処理を実行するが、そうでない場合は、図５に示した比較例でのＭＳ掃き出し処理を実行することとする。
【００５４】
ＣＰＵ５０に搭載されるファームウェアとしてのコントローラは、第２ＮＡＮＤキャッシュ１２の複数のエントリが満杯になったときに、ＭＳ掃き出し条件が成立したとして、ＭＳ掃き出し処理を実行する（ステップＳ１００）。コントローラは、ＭＳ掃き出し条件が成立すると、第２ＮＡＮＤキャッシュ１２の複数のエントリにキャッシュされたデータを、連続したＬＢＡを有する一定サイズ以上のデータ（シーケンシャルデータ）を有する第１グループデータと、それ以外の第２グループデータとにグループ分けする（ステップＳ１１０）。
【００５５】
そして、コントローラは、第２ＮＡＮＤキャッシュ１２の複数のエントリにキャッシュされたデータのうち、第２グループに属するデータについては、図５に示した比較例でのＭＳ掃き出し処理（第２のＭＳ掃き出し処理）を実行する（ステップＳ１２０ ＮＯ、ステップＳ１３０）。また、コントローラは、第２ＮＡＮＤキャッシュ１２の複数のエントリにキャッシュされたデータのうち、第１グループに属するデータについては、図６に示した本実施形態でのＭＳ掃き出し処理（第１のＭＳ掃き出し処理）を実行する（ステップＳ１２０ ＹＥＳ、ステップＳ１４０）。
【００５６】
第１のＭＳ掃き出し処理においては、ＭＳ掃き出し条件が成立したときに、一定サイズのデータが連続して第２ＮＡＮＤキャッシュ１２に保存されていた場合、その終端データのＬＢＡをストップポインタ情報ＳＰとして記憶して、連続データを終端までフリーブロックに書き込んで、このフリーブロックに対する書き込みをここで一旦中断する。そして、その後、ＭＳ掃き出し条件が成立したときに、記憶しているストップポインタ情報ＳＰを参照することで、ＭＳ掃き出し処理を中断していたデータにＬＢＡが続く後続データが、一定サイズ以上の連続データとして、第２ＮＡＮＤキャッシュ１２に保存されていた場合は、第１回目のＭＳ掃き出し処理に使用したフリーブロックに対し、後続データを追記する。第２ＮＡＮＤキャッシュ１２のキャッシュデータによってフリーブロックの終端ページまで追記された場合は、このフリーブロックに対するＭＳ掃き出しを終了する。第２ＮＡＮＤキャッシュ１２のキャッシュデータによるフリーブロックの途中ページまでの追記である場合は、再びその終端データのＬＢＡをストップポインタ情報ＳＰとして記憶して、後続データを終端までフリーブロックに書き込んで、このフリーブロックに対する書き込みをここで再び一旦中断する。以下、フリーブロックの終端ページまで追記されるまで、同様の掃き出し処理が繰り返される。
【００５７】
このように、一定サイズのデータが連続して第２ＮＡＮＤキャッシュ１２に保存されていた場合にのみ、図６に示した本実施形態のＭＳ掃き出し処理を実行することとしたので、シーケンシャルデータの書き込みの際に、特にその効果を発揮する。
【００５８】
図８は、書き込み速度を測定するために用いたデータシーケンスを示すものである。このデータシーケンスでは、セクタカウントが１２８のシーケンシャルデータの間に、ＬＢＡが異なるセクタカウント３２の管理データを挟んでいる。このデータシーケンスを用いたパフォーマンス測定によれば、図７のフローチャートに従った本実施形態の手法（図６の手法）では、図５に示した比較例に比べ、書き込み速度を、１５．６％ほど向上させることができた。
【００５９】
ここで、図７のステップＳ１１０、Ｓ１２０において、第２ＮＡＮＤキャッシュ１２に保存されているデータの連続性を判定する場合、有効データが存在しない空隙部分が多少は存在してもデータが連続であると判定してもよい。このため、連続であるか否かを判定する空隙部分の大きさに上限値を設定し、空隙が上限値未満である場合は、データが連続であると判定し、空隙が上限値以上ある場合、データが不連続であると判定する。データが不連続であると判定された場合は、不連続と判定された箇所から新たにデータの連続性を判定することとなる。
【００６０】
また、ＭＳ掃き出しを途中で中断した状態にあることを許容する論理ブロック数（フリーブロック数）に上限値を設けるようにしてもよい。すなわち、図６（ａ）に示す論理ブロックＢは、ＭＳ掃き出しが途中で中断された状態にあるが、このような論理ブロックが上限無く増加すると、利用できる論理ブロック数が少なくなるので、ＭＳ掃き出しが途中で中断された状態にあることを許容する論理ブロック数に上限を設ける。なお、ＭＳ掃き出しを途中で中断した状態にあることを許容する論理ブロック数に上限を設けないようにしてもよい。
【００６１】
なお、ＮＡＮＤフラッシュ１０に設けられるキャッシュメモリとしては、第１ＮＡＮＤキャッシュ１１を無くし、第２ＮＡＮＤキャッシュ１２のみで構成するようにしてもよい。
【００６２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６３】
１  ホスト、１０  ＮＡＮＤフラッシュ、１１  第１ＮＡＮＤキャッシュ、１２  第２ＮＡＮＤキャッシュ、１３  メインストレージ（ＭＳ）、２０  バッファＲＡＭ、２１  揮発キャッシュ、２１ａ  入力バッファ部、２１ｂ  内部キャッシュ、４０  ＮＡＮＤコントローラ、５０  ＣＰＵ、１００  メモリカード。
【図１】
2013161132.tif 000003
【図２】
2013161132.tif 000004
【図３】
2013161132.tif 000005
【図４】
2013161132.tif 000006
【図５】
2013161132.tif 000007
【図６】
2013161132.tif 000008
【図７】
2013161132.tif 000009
【図８】
2013161132.tif 000010