(57)【要約】      （修正有）【課題】ガベージコレクション処理の発生頻度を低減するメモリ制御技術を提供する。【解決手段】メモリコントローラがホストシステムに提供する論理空間を構成する複数の論理領域の各々のサイズが、論理領域にマッピングされる単位である物理領域群（１以上のメモリが有する１以上の物理領域）のサイズよりも小さく、書込み先の論理領域３００にマッピングされている物理領域群３２１が満杯であれば、キャッシュ物理領域群３１０にデータを書き込み、所定の条件が満たされた場合にキャッシュ物理領域群内の有効データをいずれかの物理領域群３２１に集約する。【選択図】図３
2015191295.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムから書込みコマンドを受ける複数の物理領域群を有するメモリ群にデータを書き込むメモリコントローラであって、
前記ホストシステムに対するインタフェースと、
複数の論理領域で構成された論理空間を前記ホストシステムに提供し、前記書込みコマンドに従う書込み先の論理領域にマッピングされている物理領域群が満杯であれば、キャッシュ物理領域群にデータを書き込むプロセッサと
を有し、
前記プロセッサは、所定の条件が満たされた場合に、前記キャッシュ物理領域群内の有効データをいずれかの物理領域群に集約する処理を行い、
前記複数の論理領域の各々のサイズは、前記物理領域群のサイズよりも小さい、
メモリコントローラ。
【請求項２】
前記メモリ群は、Ｎ個のメモリであり（Ｎは２以上の整数）、
各物理領域群は、前記Ｎ個のメモリがそれぞれ有するＮ個の物理領域により構成された仮想領域である、
請求項１記載のメモリコントローラ。
【請求項３】
前記プロセッサは、
前記書込みコマンドに従う書込み対象データのサイズである書込みサイズが閾値未満か否かを判断し、
前記判断の結果が否定の場合、前記書込みコマンドに従う書込み先の論理領域にマッピングされている仮想領域を構成する複数の物理領域に、前記書込み対象データを構成する複数のデータ要素をそれぞれ並列に書き込み、
前記判断の結果が肯定の場合、前記書込みコマンドに従う書込み先の論理領域にマッピングされている仮想領域の一部の物理領域に、前記書込み対象データを書き込む、
請求項２記載のメモリコントローラ。
【請求項４】
各物理領域は、複数のサブ物理領域を有し、
各仮想領域は、複数のサブ仮想領域を有し、
各仮想領域の各サブ仮想領域は、その仮想領域を構成するＮ個の物理領域がそれぞれ有するＮ個のサブ物理領域であり、
サブ仮想領域単位又はサブ物理領域単位でデータが書き込まれるようになっており、
前記閾値は、サブ物理領域サイズのＭ倍である（Ｍは２以上の整数、且つ、Ｎ以下）、
請求項３記載のメモリコントローラ。
【請求項５】
前記プロセッサは、前記書込み対象データの書込み先が、前記書込み先の論理領域にマッピングされている仮想領域のうちの余剰領域の場合に、前記プロセッサは、前記判断を行い、
前記余剰領域は、前記書込み先の論理領域にマッピングされている仮想領域と前記書込み先の論理領域との差分としての領域である、
請求項３又は４記載のメモリコントローラ。
【請求項６】
請求項１乃至５のうちのいずれか１項に記載のメモリコントローラと、
前記メモリコントローラに接続された１以上のメモリであるメモリ群と
を有するメモリシステム。
【請求項７】
ホストシステムから書込みコマンドを受ける複数の物理領域群を有するメモリ群にデータを書き込むメモリ制御方法であって、
複数の論理領域で構成された論理空間を前記ホストシステムに提供し、
前記書込みコマンドに従う書込み先の論理領域にマッピングされている物理領域群が満杯であれば、キャッシュ物理領域群にデータを書込み、
所定の条件が満たされた場合に、前記キャッシュ物理領域群内の有効データをいずれかの物理領域群に集約するガベージコレクション処理を行い、
前記複数の論理領域の各々のサイズは、前記物理領域群のサイズよりも小さい、
メモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、メモリ制御に関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリは、一般に、複数の物理ブロックにより構成され、各物理ブロックは、複数の物理ページにより構成される。ＮＡＮＤ型フラッシュメモリでは、ページ（物理ページ）単位でデータが入出力され、ブロック（物理ブロック）単位でデータが消去される。
【０００３】
ＮＡＮＤ型フラッシュメモリに関し、特許文献１の技術が知られている。特許文献１では、論理ブロックにマッピングされている物理ブロックにデータが満杯であれば、キャッシュブロックにデータが書き込まれる。キャッシュブロックが満杯になれば、キャッシュブロック内の有効データを別の物理ブロックに集約するガベージコレクション処理が行われる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１５６６３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ガベージコレクション処理は、ＮＡＮＤ型フラッシュメモリ以外のメモリについても行われ得る処理であるが、この処理はフラッシュメモリのコントローラにかかる負荷が大きい。
【０００６】
従って、本発明の目的は、ガベージコレクション処理の発生頻度を低減するメモリ制御技術を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明のメモリコントローラは、ホストシステムから書込みコマンドを受ける複数の物理領域群を有するメモリ群にデータを書き込むメモリコントローラであって、ホストシステムに対するインタフェースと、複数の論理領域で構成された論理空間をホストシステムに提供し、書込みコマンドに従う書込み先の論理領域にマッピングされている物理領域群が満杯であれば、キャッシュ物理領域群にデータを書き込むプロセッサとを有する。プロセッサは、所定の条件が満たされた場合に（例えばキャッシュ物理領域群にデータが満杯の場合に）、キャッシュ物理領域群内の有効データをいずれかの物理領域群に集約する処理を行う。複数の論理領域の各々のサイズは、物理領域群サイズよりも小さい。
【発明の効果】
【０００８】
論理領域のサイズが、論理領域に対するマッピングの単位である物理領域群のサイズより小さい。このため、論理領域のサイズ分のデータが書き込まれても、物理領域群には未だ空きの領域が残っている。このため、論理領域のサイズ分のデータが書き込まれた後にその論理領域に対する書込みが発生した場合、書込み対象のデータを物理領域群に残っている空きの領域に書き込むことができる。つまり、論理領域のサイズ分のデータが書き込まれた後にその論理領域に対する書込みが発生しても、キャッシュ物理領域は必ずしも使用されない。故に、キャッシュ物理領域の使用頻度が低減され、以って、ガベージコレクションの発生頻度が低減される。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態に係るフラッシュメモリシステムの構成を示す。
【図２】本発明の実施形態に係るワークエリアに記憶される情報の一例を示す。
【図３】本発明の実施形態に係る領域関係を示す。
【図４】本発明の実施形態に係る仮想ページ単位書込みを示す。
【図５】本発明の実施形態に係る物理ページ単位書込みを示す。
【図６】本発明の実施形態に係る書込み処理のフローチャートである。
【発明を実施するための形態】
【００１０】
以下、一実施形態に係るメモリシステムが適用されたフラッシュメモリシステムを説明する。なお、本発明は以下の実施形態に限定されるものではない。また以下に記載した構成要素には、当業者が容易に想定できるもの、実質的に同一のものが含まれる。
【００１１】
図１は、本発明の実施形態に係るフラッシュメモリシステムの構成を示す。
【００１２】
フラッシュメモリシステム１は、メモリ群の一例であるＮ個のフラッシュメモリ２と（Ｎは２以上の整数）、それを制御するメモリコントローラ３とで構成されている。メモリコントローラ３は、Ｎ個のフラッシュメモリ２に並列にアクセス可能である。本実施形態では、Ｎ＝４である。
【００１３】
フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続されている。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central  Processing  Unit）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００１４】
メモリコントローラ３は、マイクロプロセッサ６と、ホストインタフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインタフェースブロック１０と、ＥＣＣ（Error  Correcting  Code）ブロック１１と、ＲＯＭ（Read  Only  Memory）１２とから構成される。メモリコントローラ３は、内部バス１４を介してフラッシュメモリ２と接続されている。これら機能ブロックによって構成されるメモリコントローラ３は、一つの半導体チップ上に集積される。以下、各機能ブロックについて説明する。
【００１５】
ホストインタフェースブロック７は、ホストシステム４との間でデータ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。外部コマンドとは、ホストシステム４がフラッシュメモリシステム１に対して処理の実行を指示するためのコマンドである。ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインタフェースブロック７を入口としてフラッシュメモリシステム１の内部（例えば、バッファ９）に取り込まれる。また、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインタフェースブロック７を出口としてホストシステム４に供給される。
【００１６】
ホストインタフェースブロック７は、コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３を備えている。コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３には、ホストシステム４から与えられる情報が書き込まれる。コマンドレジスタＲ１には、書込みコマンド、読出しコマンド等の外部コマンドが書き込まれる。セクタ数レジスタＲ２には、アクセス対象領域のセクタ数が書き込まれる。ＬＢＡレジスタＲ３には、アクセス対象領域の先頭のＬＢＡ（Logical  Block  Address）が書き込まれる。
【００１７】
ワークエリア８は、フラッシュメモリ２の制御に必要なデータを一時的に格納する作業領域であり、例えば複数のＳＲＡＭ（Static  Random  Access  Memory）セルによって構成されている。ワークエリア８には、例えば、論理ブロックと物理ブロックとの対応関係を示したアドレス変換テーブル等が記憶される。アドレス変換テーブルを用いて、論理アドレスを物理アドレスに変換することができる（アクセス先の論理ブロックにマッピングされている物理ブロックを特定することができる）。
【００１８】
バッファ９は、フラッシュメモリ２から読出したデータを、ホストシステム４が受け取り可能な状態となるまで保持する。また、バッファ９は、フラッシュメモリ２に書き込むデータを、フラッシュメモリ２が書込み可能な状態となるまで保持する。
【００１９】
フラッシュメモリインタフェースブロック１０は、内部バス１４を介して、フラッシュメモリ２との間でデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。ここで、内部コマンドとは、メモリコントローラ３がフラッシュメモリ２に処理の実行を指示するためのコマンドであり、フラッシュメモリ２は、メモリコントローラ３から与えられる内部コマンドに従って動作する。
【００２０】
ＥＣＣブロック１１は、フラッシュメモリ２に書き込むデータに付加される誤り訂正符号（ＥＣＣ：Error  Correcting  Code）を生成するとともに、読出したデータに付加されている誤り訂正符号に基づいて、読出したデータに含まれる誤りを検出・訂正する。
【００２１】
ＲＯＭ１２は、マイクロプロセッサ６による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムが格納されている。
【００２２】
マイクロプロセッサ６は、ＲＯＭ１２に記憶されているプログラムに従って、メモリコントローラ３の全体の動作を制御する。例えば、マイクロプロセッサ６は、ＲＯＭ１２から読出した各種処理を定義したコマンドセットに基づいてフラッシュメモリインタフェースブロック１０に処理を実行させる。
【００２３】
Ｎ個のフラッシュメモリ２の各々は、ＮＡＮＤ型フラッシュメモリからなる。ＮＡＮＤ型フラッシュメモリは、レジスタと、複数のメモリセルが２次元的に配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。ここで、メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、レジスタから選択されたメモリセルへのデータの書込み又は選択されたメモリセルからレジスタへのデータの読出しが行われる。ＮＡＮＤ型フラッシュメモリでは、データ読出し動作及びデータ書込み動作はページ（物理ページ）単位で行われ、データ消去動作はブロック（物理ブロック）単位で行われる。物理ブロックは、複数の物理ページで構成される。本実施形態では、後述するように、並列にアクセス可能なＮ個のフラッシュメモリ２がそれぞれ有するＮ個の物理ブロックを１つに纏めた仮想ブロックが、論理ブロックにマッピングされるようになっており、また、Ｎ個のフラッシュメモリ２がそれぞれ有するＮ個の物理ページである仮想ページの単位で、データ読出し動作及びデータ書込み動作が行われる。マイクロプロセッサ６は、書込み先の論理ブロックにマッピングされている仮想ブロックにデータが満杯であれば、後述するキャッシュ仮想ブロックにデータを書き込むようになっている。また、マイクロプロセッサ６は、所定の条件が満たされた場合に（例えば、所定個数のキャッシュ仮想ブロックにデータが満杯になった場合に）、キャッシュ仮想ブロック内の有効データを、論理ブロックにマッピングされることになる仮想ブロックに集約するガベージコレクション処理を行うようになっている。論理ブロックに属する論理アドレス毎に、その論理アドレスについての最新のデータが「有効データ」であり、最新のデータより旧いデータは「無効データ」である。ガベージコレクション処理により、キャッシュ仮想ブロック内のデータを全て無効データとすることができる。無効データのみが記憶されている仮想ブロックに対しては、データ消去動作を行うことができ、データ消去動作が行われた仮想ブロックは、空き状態となるので、再びデータの書込み先として使用可能となる。
【００２４】
本実施形態の書込み処理では、ホストシステム４によって、コマンドレジスタＲ１に、書込みコマンドを示すコマンドコードが書き込まれ、セクタ数レジスタＲ２に、書き込むデータのセクタ数が書き込まれ、ＬＢＡレジスタＲ３には、書き込みを開始する先頭データに対応するＬＢＡが書き込まれる。セクタ数レジスタＲ２及びＬＢＡレジスタＲ３に書き込まれた情報に基づいて、アクセス対象の領域である論理アクセス領域が判別され、その論理アクセス領域が含まれる論理ブロックに対応する仮想ブロックにホストシステム４から与えられるデータが書き込まれる。ホストシステム４側のアドレス空間は、セクタ（５１２バイト）単位で分割した領域（以下、論理セクタ領域と言う）に付けた通番であるＬＢＡで管理されている。また、複数個の論理セクタ領域で構成された論理ブロックが形成され、この論理ブロックに対して、仮想ブロック（Ｎ個の物理ブロック）が割り当てられる。論理ブロックと仮想ブロックの対応関係、及び、仮想ブロックと物理ブロックの対応関係等は、管理情報を用いて管理される。管理情報は、例えばワークエリア８に記憶される。
【００２５】
図２は、ワークエリア８に記憶される情報の一例を示す。
【００２６】
ワークエリア８には、例えば、物理ブロック管理テーブル２０１、第１アドレス変換テーブル２０５及び第２アドレス変換テーブル２０６といった管理情報が記憶される。
【００２７】
物理ブロック管理テーブル２０１は、仮想ブロックと物理ブロックの対応関係、及び、各仮想ブロックの種類等を保持している。仮想ブロックと物理ブロックの対応関係とは、例えば、仮想ブロック毎に、仮想ブロックのＶＢＮ（仮想ブロック番号）とその仮想ブロックの構成する各物理ブロックのＰＢＡ（物理ブロックアドレス）との対応関係である。各物理ブロックのＰＢＡは、例えば、その物理ブロックを有するフラッシュメモリ２のＩＤと、そのフラッシュメモリ２における物理ブロックの番号との組合せでよい。仮想ブロック（種類）としては、例えば、使用中仮想ブロック（いずれかの論理ブロックにマッピングされている仮想ブロック）と、スペア仮想ブロック（マッピング可能な状態（空き状態）の仮想ブロック）と、キャッシュ仮想ブロック（キャッシュ領域として使用されることになっている又はキャッシュ領域として使用中の仮想ブロック）とがある。キャッシュ仮想ブロックは、予め決められていてもよいし、マイクロプロセッサ６により選択されたスペア仮想ブロックであってもよい。具体的には、例えば、複数の仮想ブロックの一部分が、ユーザデータ（ホストシステム４から受信する書込み対象のデータ）が書き込まれるユーザ仮想ブロックの集合でもよいし、複数の仮想ブロックの別の部分が、キャッシュ領域として使用されるキャッシュ仮想ブロックの集合でもよい。或いは、複数の仮想ブロックの各々が、ユーザ仮想ブロックとして使用されることもあればキャッシュ仮想ブロックとして使用されることもあってもよい。
【００２８】
第１アドレス変換テーブル２０５は、論理ブロックと仮想ブロックとの対応関係を保持している。論理ブロックと仮想ブロックとの対応関係とは、例えば、論理ブロック毎に、論理ブロックのＬＢＮ（論理ブロック番号）と、その論理ブロックにマッピングされている仮想ブロックのＶＢＮとの対応関係でよい。第１アドレス変換テーブル２０５は、更に、図２に例示するように、マッピングされている仮想ブロックを構成するＮ個（Ｎ＝４）の物理ブロックの各々のＰＢＡを有してもよい。
【００２９】
第２アドレス変換テーブル２０６は、論理アドレスと物理ページとの対応関係を保持している。第２アドレス変換テーブル２０６は、例えば、論理ブロック毎に用意される。論理アドレスと物理ページとの対応関係とは、例えば、論理アドレス群毎に、その論理アドレス群（例えば１以上のＬＢＡ）に対応する１以上の物理ページの各々のＰＰＡ（物理ページアドレス）でよい。本実施形態では、後述するように、仮想ページ単位でデータが書き込まれることもあれば、物理ページ単位でデータが書き込まれることもある。このため、例えば、仮想ページ単位でデータが書き込まれている場合、仮想ページに対応する論理アドレス群は、その仮想ページに対応する論理ページ全体に属する全ての論理アドレスである。一方、物理ページ単位でデータが書き込まれている場合、物理ページに対応する論理アドレス群は、その物理ページに対応する論理ページ部分に属する論理アドレスである。
【００３０】
図３は、本実施形態に係る領域関係を示す。
【００３１】
仮想ブロック３１０は、Ｎ＝４個の物理ブロック３２０を１つに纏めたものである。仮想ブロック単位で、論理ブロック３００に対するマッピングが行われる。論理ブロック３００が、論理領域の一例であり、仮想ブロック３１０が、物理領域群の一例であり、物理ブロック３２０が、物理領域の一例である。また、仮想ページ４１０（図４参照）が、サブ物理領域群の一例であり、物理ページ４２０（図４参照）が、サブ物理領域の一例である。
【００３２】
本実施形態では、論理ブロック３００のサイズは、仮想ブロック３１０のサイズ（Ｎ＝４個の物理ブロック３２０の合計サイズ）よりも小さい。このため、図３に示すように、仮想ブロック３１０は、論理ブロック３００の範囲に対応する領域３１１の他に、論理ブロック３００の範囲に対応しない領域（論理ブロック３００との差分に相当する領域）である余剰領域３１２を持つことになる。従って、Ｎ＝４個の物理ブロック３２０の各々も、論理ブロック３００の範囲に対応した領域３２１の他に、論理ブロックの範囲に対応しない余剰領域３２２を持つことになる。仮想ブロック３１０内の余剰領域３１２のサイズは、Ｎ＝４個の余剰領域３２２（物理ブロック３２０内の余剰領域３２２）の合計に等しい。仮想ブロック３１０内の余剰領域３１２のサイズは、論理ブロックサイズより小さいが、少なくとも物理ページサイズ以上である。仮想ブロック３１０内の余剰領域３１２のサイズは、例えば、仮想ページサイズ以上でよく、具体的には、仮想ページサイズの整数倍でよい。
【００３３】
論理ブロックサイズが仮想ブロックサイズより小さいために、キャッシュ仮想ブロック（図示せず）の使用頻度が低減され、以って、ガベージコレクション処理の発生頻度が低減される。具体的には、論理ブロックサイズ分のデータが書き込まれても（例えば論理ブロック３００の全域にデータが書き込まれても）、その書込み先の論理ブロック３００にマッピングされている仮想ブロック３１０には、未だ空き領域（例えば、幾つかの空き仮想ページ４１０）が残っている。従って、本実施形態では、マイクロプロセッサ６は、論理ブロックサイズ以上のサイズのデータが書き込まれた論理ブロック３００に更なる書込みが発生した場合、書込みサイズ（書込み対象のデータのサイズ）が、その論理ブロック３００にマッピングされている仮想ブロック３１０に残っている空き領域（余剰領域３１２のサイズ以下のサイズの領域）のサイズ以下であれば、その空き領域に、書込み対象データを書き込む。これにより、論理ブロックサイズ以上のサイズのデータが書き込まれた論理ブロック３００に更なる書込みが発生しても、キャッシュ仮想ブロックが使用されないことがある。故に、キャッシュ仮想ブロックの使用頻度が低減され、以って、ガベージコレクション処理の発生頻度が低減される。
【００３４】
また、本実施形態では、マイクロプロセッサ６は、仮想ページ単位書込みと物理ページ単位書込みとのいずれも行うことができる。
【００３５】
図４は、仮想ページ単位書込みを示す。
【００３６】
図示の通り、仮想ブロック３１０が、異なる４個のフラッシュメモリ２がそれぞれ有する４個の物理ブロック３２０により構成されており、仮想ページ４１０が、異なる４個のフラッシュメモリ２がそれぞれ有する４個の物理ページ４２０により構成されている。また、各物理ページ４２０は、複数個（例えば８個）の物理セクタ４２１により構成されている。物理セクタ４２１内の番号は、データを構成する複数のデータ要素の並び順を表す。
【００３７】
仮想ページ単位書込みによれば、マイクロプロセッサ６は、異なる４個のフラッシュメモリ２がそれぞれ有する４個の物理ページ４２０に、書込み対象のデータのうちの４個のデータ要素を並列に書き込む。このため、データを高速に書き込むことができる。
【００３８】
しかし、仮想ページサイズより小さいサイズのデータが仮想ページ単位書込みされた場合には、仮想ページ４１０に空き領域が生じるが、この空き領域には次のデータを書き込むことはできない無効領域である。仮想ページ単位書込みにより書き込まれたデータのサイズによっては、物理ページサイズ以上の無効領域が生じることもある。
【００３９】
物理ページサイズ以上の無効領域が仮想ページ４１０に生じることを避けるべく、マイクロプロセッサ６は、仮想ページ単位書込みに代えて、物理ページ単位書込みを行うことができる。
【００４０】
図５は、物理ページ単位書込みを示す。
【００４１】
物理ページ単位書込みによれば、マイクロプロセッサ６は、仮想ページ４１０における物理ページ４２０にデータを書き込み、次に、同一（又は異なる）仮想ページ４１０における物理ページ４２０にデータを書き込む。物理ページ単位書込みによれば、同一サイズのデータを書き込む速度は、仮想ページ単位書込みよりも遅いが、無効領域のサイズは、仮想ページ単位書込みよりも小さくすることができる。
【００４２】
図６は、本実施形態に係る書込み処理のフローチャートである。
【００４３】
マイクロプロセッサ６は、ホストシステム４から書込みコマンドを受信し、書込みサイズ（書込みコマンドに従う書込み対象データのサイズ）が閾値未満か否かを判断する（Ｓ６０１）。書込み対象データは、ユーザデータのみであってもよいし、ユーザデータに加えて所定の管理データ（論理アドレス等のデータ）を含んでいてもよい。
【００４４】
Ｓ６０１の判断の結果が肯定の場合（Ｓ６０１：ＹＥＳ）、マイクロプロセッサ６は、物理ページ単位書込みにより、書込み対象データを、書込みコマンドに従う書込み先の論理ブロック３００にマッピングされている仮想ブロック３１０に書き込む（Ｓ６０２）。
【００４５】
Ｓ６０１の判断の結果が否定の場合（Ｓ６０１：ＮＯ）、マイクロプロセッサ６は、仮想ページ単位書込みにより、書込み対象データを、書込みコマンドに従う書込み先の論理ブロック３００にマッピングされている仮想ブロック３１０に書き込む（Ｓ６０３）。
【００４６】
図６の書込み処理によれば、小サイズのデータは、なるべく仮想ブロックの空き領域（論理ブロックサイズ分のデータの書込み後は、仮想ブロック３１０の余剰領域３１２）に書き込まれることになる。これにより、キャッシュ仮想ブロックの使用頻度が低減され、以って、ガベージコレクション処理の発生頻度を低減できる。
【００４７】
なお、Ｓ６０１で使用される閾値は、例えばワークエリア８に記憶されていてよい。その閾値は、仮想ページサイズの整数倍であってもよいし、物理ページサイズのＭ倍でもよい（Ｍは２以上の整数、且つ、仮想ページ４１０を構成する物理ページ４２０の数Ｎ以下）。また、マイクロプロセッサ６は、各論理ブロック３００について、論理ブロックサイズ分のデータを書き込むまでは、常に仮想ページ単位書込みによりデータを書き込み、論理ブロックサイズ分のデータを書き込んだ後の書込みのときにだけ、Ｓ６０１の判断を行ってよい。
【００４８】
以上、本発明の一実施形態を説明したが、これは、本発明の説明のための例示であって、本発明の範囲をこの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施する事が可能である。
【００４９】
例えば、上述したフラッシュメモリシステム１は、フラッシュメモリ以外のメモリ（揮発性メモリ又は不揮発性メモリ）を有するメモリシステム全般に適用することができる。また、メモリコントローラが有するプロセッサは、典型的にはマイクロプロセッサでよいが、処理の一部を実行するハードウェア回路を含んでいてもよい。
【００５０】
また、例えば、本発明は、１つの論理ブロック３００に１つの物理ブロック３２０がマッピングされるシステムにも当然に適用できる。そのシステムでは、論理ブロック３００のサイズは、マッピング単位である物理ブロック３２０のサイズより小さい。そのシステムにおいて、物理ブロック３２０が、物理領域群の一例であり、物理ページ４２０が、サブ物理領域群の一例である。
【符号の説明】
【００５１】
１：フラッシュメモリシステム
【図１】
2015191295.tif 000003
【図２】
2015191295.tif 000004
【図３】
2015191295.tif 000005
【図４】
2015191295.tif 000006
【図５】
2015191295.tif 000007
【図６】
2015191295.tif 000008