(57)【要約】      （修正有）【課題】ホスト装置からの所定量のデータの書込みを優先的に行うメモリコントローラ、不揮発性記憶装置、システム及びメモリ制御方法を提供する。【解決手段】複数の物理ブロックを有する不揮発性メモリ１２０を制御するメモリコントローラ１１０である。メモリコントローラは、制御部１０１と、ホストインタフェース部１１１とを備える。制御部は、物理ブロックにデータの書込みを行う。制御部は、物理ブロック管理テーブル１１７ｂに基づいて、第１及び第２の空きブロックを管理する。第１の空きブロックは、ガベージコレクション処理に使用できる物理ブロックである。第２の空きブロックは、ガベージコレクション処理には使用されない物理ブロックである。制御部は、外部装置から指示を受信していないときに、第２の空きブロックの量を増大させ、外部装置からデータの書込み指示を受信したときに、第２の空きブロックにデータの書込みを行う。【選択図】図１
2017174387.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理ブロックを有する不揮発性メモリを制御するメモリコントローラであって、
前記物理ブロックにデータの書込みを行う制御部と、
外部装置と接続し、データの送受信を行うホストインタフェース部とを備え、
前記制御部は、前記複数の物理ブロックの状態を管理する物理ブロック管理テーブルに基づいて、第１の空きブロックと第２の空きブロックとを管理し、
前記第１の空きブロックは、前記不揮発性メモリに格納されたデータを整理するガベージコレクション処理に使用できる物理ブロックであり、
前記第２の空きブロックは、前記ガベージコレクション処理には使用されない物理ブロックであり、
前記制御部は、
前記外部装置から指示を受信していないときに、前記第２の空きブロックの量を増大させ、
前記外部装置からデータの書込み指示を受信したときに、前記第２の空きブロックにデータの書込みを行う
メモリコントローラ。
【請求項２】
前記制御部は、前記外部装置から指示を受信していないときに、所定の設定値を含む優先書込み量情報に基づいて、前記設定値まで、前記第２の空きブロックの量を増大させる
請求項１に記載のメモリコントローラ。
【請求項３】
前記優先書込み量情報は、現在の第２の空きブロックの量を示す情報を含み、
前記制御部は、
前記外部装置からデータの書込み指示を受信したとき、前記優先書込み量情報を参照し、
前記現在の第２の空きブロックの量が所定値以下でない場合、前記第２の空きブロックにデータの書込みを行い、
前記現在の第２の空きブロックの量が所定値以下である場合、前記第１の空きブロックを用いてデータの書込みを行う
請求項２に記載のメモリコントローラ。
【請求項４】
前記制御部は、前記現在の第２の空きブロックの量が所定値以下であり、且つ前記第１の空きブロックが所定条件に該当する場合、前記第１の空きブロックを用いてガベージコレクション処理を実行して、書込み可能な物理ブロックを生成する
請求項３に記載のメモリコントローラ。
【請求項５】
前記制御部は、前記第２の空きブロックの量を増大させる処理を行っているときに、前記外部装置からの指示を受信すると、前記第２の空きブロックの量を増大させる処理を中断する
請求項４に記載のメモリコントローラ。
【請求項６】
前記制御部は、前記外部装置からの指示で前記優先書込み量情報に関する情報を前記外部装置に出力する
請求項２〜５のいずれか１項に記載のメモリコントローラ。
【請求項７】
前記制御部は、前記外部装置からの指示された値に基づき、前記優先書込み量情報における設定値を決定する
請求項２〜６のいずれか１項に記載のメモリコントローラ。
【請求項８】
請求項１〜７のいずれか１項に記載のメモリコントローラと、
前記メモリコントローラに接続され、前記メモリコントローラによりデータが記録される不揮発性メモリと
を備える不揮発性記憶装置。
【請求項９】
請求項１〜７のいずれか１項に記載のメモリコントローラと、
前記メモリコントローラに接続され、前記メモリコントローラによりデータが記録される不揮発性メモリと、
前記メモリコントローラに接続され、前記メモリコントローラに対し前記不揮発性メモリに対するデータの書込み指示を送信する外部装置と
を備える不揮発性記憶システム。
【請求項１０】
前記外部装置は、前記メモリコントローラから第２の物理ブロックの量を示す情報を取得し、取得した情報が示す第２の物理ブロックの量以下の書込みデータを前記メモリコントローラに転送する
請求項９に記載の不揮発性記憶システム。
【請求項１１】
メモリコントローラが複数の物理ブロックを有する不揮発性メモリを制御するメモリ制御方法であって、
前記メモリコントローラが、前記複数の物理ブロックの状態を管理する物理ブロック管理テーブルに基づいて、第１の空きブロックと第２の空きブロックとを管理するステップを含み、
前記第１の空きブロックは、前記複数の物理ブロックに格納されたデータを整理するガベージコレクション処理に使用できる物理ブロックであり、
前記第２の空きブロックは、前記ガベージコレクション処理には使用されない物理ブロックであり、
前記メモリコントローラが、
外部装置から指示を受信していないときに、前記第２の空きブロックの量を増大させるステップと、
前記外部装置からデータの書込み指示を受信したときに、前記第２の空きブロックにデータの書込みを行うステップと
を含むメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データの書換えが可能な不揮発性メモリを制御するメモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びメモリ制御方法に関する。
【背景技術】
【０００２】
従来、複数の物理ブロックをデータの消去単位として備える半導体記憶装置において、利用可能な物理ブロックが枯渇したときに、データの整理を行って利用可能な物理ブロックを生成するガベージコレクションと呼ばれる方法が知られている。ホスト装置から不揮発性記憶装置へのデータ書込み中に、不揮発性記憶装置においてガベージコレクション処理が実行されると、データ書込み速度が大幅に低下してしまう。
【０００３】
特許文献１は、ガベージコレクションを行うメモリシステムを開示している。特許文献１のメモリシステムは、ガベージコレクションによる空きブロックの生成速度とデータ書き込みによる空きブロックの消費速度とのバランスに基づいて、転送速度の設定値を決定している。これにより、ガベージコレクションが完了するまでホスト装置に対する転送に係る処理を停止する場合よりも、ホスト装置からのコマンドが端的に待たされる状況を抑制することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１３２５０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本開示は、ホスト装置からの所定量のデータの書込みを優先的に行うことが可能なメモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びメモリ制御方法を提供する。
【課題を解決するための手段】
【０００６】
本開示の一態様におけるメモリコントローラは、複数の物理ブロックを有する不揮発性メモリを制御するメモリコントローラである。メモリコントローラは、制御部と、ホストインタフェース部とを備える。制御部は、物理ブロックにデータの書込みを行う。ホストインタフェース部は、外部装置と接続し、データの送受信を行う。制御部は、複数の物理ブロックの状態を管理する物理ブロック管理テーブルに基づいて、第１の空きブロックと第２の空きブロックとを管理する。第１の空きブロックは、不揮発性メモリに格納されたデータを整理するガベージコレクション処理に使用できる物理ブロックである。第２の空きブロックは、ガベージコレクション処理には使用されない物理ブロックである。制御部は、外部装置から指示を受信していないときに、第２の空きブロックの量を増大させ、外部装置からデータの書込み指示を受信したときに、第２の空きブロックにデータの書込みを行う。
【０００７】
本開示の一態様における不揮発性記憶装置は、メモリコントローラと、不揮発性メモリとを備える。不揮発性メモリは、メモリコントローラに接続され、メモリコントローラによりデータが記録される。
【０００８】
本開示の一態様における不揮発性記憶システムは、メモリコントローラと、不揮発性メモリと、外部装置とを備える。外部装置は、メモリコントローラに接続され、メモリコントローラに対し不揮発性メモリに対するデータの書込み指示を送信する。
【０００９】
本開示の一態様におけるメモリ制御方法は、メモリコントローラが複数の物理ブロックを有する不揮発性メモリを制御する方法である。
【発明の効果】
【００１０】
本開示におけるメモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びメモリ制御方法は、ホスト装置からの所定量のデータの書込みを優先的に行うことができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１における不揮発性記憶システムの構成を示す図
【図２】実施の形態１における論物変換テーブルの構成を示す図
【図３】実施の形態１における物理ブロック管理テーブルの構成を示す図
【図４】実施の形態１における優先書込み量情報の構成を示す図
【図５】実施の形態１における不揮発性メモリの記録領域である物理ブロックの構成を示す図
【図６】実施の形態１における物理ブロックにおける物理ページの構成を示す図
【図７】実施の形態１におけるホスト装置の構成を示す図
【図８】実施の形態１における不揮発性記憶装置の電源オン後の動作を示すフローチャート
【図９】実施の形態１における不揮発性記憶装置のデータの書込み動作を示すフローチャート
【図１０】ステップＳ９０５後の論物変換テーブルの例を示す図
【図１１】ステップＳ９０５後の物理ブロック管理テーブルの例を示す図
【図１２】ステップＳ９０５後の優先書込み量情報の例を示す図
【図１３】ステップＳ９０８のガベージコレクションの動作例を示す図
【図１４】ステップＳ９０８後の論物変換テーブルの例を示す図
【図１５】ステップＳ９０８後の物理ブロック管理テーブルの例を示す図
【図１６】ステップＳ９０９後の論物変換テーブルの例を示す図
【図１７】ステップＳ９０９後の物理ブロック管理テーブルの例を示す図
【図１８】実施の形態１における不揮発性記憶装置の優先書込み量増大処理を示すフローチャート
【図１９】ステップＳ１００２後の論物変換テーブルの例を示す図
【図２０】ステップＳ１００２後の優先書込み量情報の例を示す図
【図２１】ステップＳ１００３のガベージコレクション処理を説明するためのフローチャート
【図２２】実施の形態１における不揮発性記憶装置の優先書込み量取得動作を示すフローチャート
【図２３】実施の形態１における不揮発性記憶装置の優先書込み量設定動作を示すフローチャート
【図２４】ステップＳ２２０２後の優先書込み量情報の例を示す図
【図２５】実施の形態１におけるホスト装置の電源オン後の動作を示すフローチャート
【発明を実施するための形態】
【００１２】
以下、適宜図面を参照しながら、実施の形態を詳細に説明する。但し、必要以上に詳細な説明は省略する場合がある。例えば、既によく知られた事項の詳細説明や実質的に同一の構成に対する重複説明を省略する場合がある。これは、以下の説明が不必要に冗長になるのを避け、当業者の理解を容易にするためである。
【００１３】
なお、添付図面及び以下の説明は、当業者が本開示を十分に理解するために、提供されるのであって、これらにより特許請求の範囲に記載の主題を限定することは意図されていない。
【００１４】
（実施の形態１）
以下、図１〜２５を用いて、実施の形態１を説明する。
【００１５】
［１−１．構成］
［１−１−１．不揮発性記憶システムの構成］
図１は、本実施の形態における不揮発性記憶システムの構成を示す図である。図１において、不揮発性記憶システム１は、不揮発性記憶装置１００と上位装置であるホスト装置２００とを含んでいる。
【００１６】
不揮発性記憶装置１００は、例えば、半導体メモリデバイスであるＳｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ（ＳＳＤ）である。又は、不揮発性記憶装置１００は、ＳＤメモリカード、コンパクトフラッシュ（ＣｏｍｐａｃｔＦｌａｓｈ（登録商標））、フラッシュドライブ、或いは組込み用メモリデバイスなどであってもよい。不揮発性記憶装置１００は、動画、静止画、音声、及びテキスト等の種々コンテンツのデジタルデータ（以下「コンテンツデータ」と称す）を格納することができる。不揮発性記憶装置１００は、上位装置であるホスト装置２００と接続可能である。ホスト装置２００は、外部装置の一例である。
【００１７】
不揮発性記憶装置１００は、図１に示すように、メモリコントローラ１１０と、不揮発性メモリ１２０とを備える。
【００１８】
ホスト装置２００は、コンテンツデータを不揮発性記憶装置１００に記録し、また、不揮発性記憶装置１００からコンテンツデータを読み出す。ホスト装置２００は、例えば、デジタルカメラ、パーソナルコンピュータ、スマートフォン、タブレット端末、或いはテレビ等の電子機器である。
【００１９】
不揮発性メモリ１２０は、電源供給がない状態であってもコンテンツデータの保持が可能な記録素子である。不揮発性メモリ１２０は、例えば、ＮＡＮＤフラッシュメモリにより構成される。
【００２０】
［１−１−２．メモリコントローラの構成］
次に不揮発性記憶装置１００のメモリコントローラ１１０の構成について詳細に説明する。メモリコントローラ１１０は、ホスト装置２００からのコマンドを受信して不揮発性メモリ１２０に対するコンテンツデータの書込み及び読出しを制御する。
【００２１】
メモリコントローラ１１０は、制御部又はプロセッサであるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１と、ホストインタフェース部１１１と、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）回路１１５と、メモリインタフェース部１１６と、制御情報記憶部１１７と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１１８と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１１９とを含み、これらがバスを介して接続されている。
【００２２】
ＣＰＵ１０１は、各種プログラム等を実行する演算ユニットである。
【００２３】
ホストインタフェース部１１１は、ＣＰＵ１０１の制御によりホスト装置２００との間でコマンドやコンテンツデータ等のデータの送受信を行うインタフェースである。
【００２４】
メモリインタフェース部１１６は、ＣＰＵ１０１の制御により不揮発性メモリ１２０に対するデータの書込み、読出し、及び消去の制御を行うインタフェースである。
【００２５】
ＥＣＣ回路１１５は、記憶するデータの符号化処理及び記憶されたデータの復号化処理を行う誤り訂正回路である。ＥＣＣ回路１１５により機能する誤り訂正制御部１１５ａは、不揮発性メモリ１２０に書込まれたコンテンツデータに生じた誤りを復元する。
【００２６】
制御情報記憶部１１７は、ＣＰＵ１０１により処理される制御情報や不揮発性メモリ１２０の管理情報を記憶するメモリである。制御情報記憶部１１７は、例えばＮＡＮＤフラッシュメモリにより構成される。
【００２７】
ＲＡＭ１１８は、ＣＰＵ１０１の処理において実行されるプログラム、及びプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用される。
【００２８】
ＲＯＭ１１９は、ＣＰＵ１０１が実行するプログラム、或いは演算パラメータとしての固定データを格納する。
【００２９】
ＣＰＵ１０１は、書込み制御部１１２、読出し制御部（図示せず）、優先書込み量制御部１１３、及び空きブロック管理部１１４を機能させる。
【００３０】
書込み制御部１１２は、ホストインタフェース部１１１で受信したコンテンツデータを不揮発性メモリ１２０へ書き込むための制御を行う。
【００３１】
読出し制御部（図示せず）は、不揮発性メモリ１２０に格納されたコンテンツデータをホストインタフェース部１１１経由でホスト装置２００へ出力するための制御を行う。
【００３２】
優先書込み量制御部１１３は、優先書込み量の制御を行う。優先書込み量とは、不揮発性記憶装置１００において、ホスト装置２００からのデータ書込みを優先的に行う量である。詳細は後述するが、ホスト装置２００が現在の優先書込み量（優先書込み量現在値３０８）で示される値以下のサイズの書込みを行った場合には、不揮発性記憶装置１００はガベージコレクション処理を行わずに、優先的に、ホスト装置２００からの書込みを実施する。
【００３３】
空きブロック管理部１１４は、不揮発性メモリ１２０にある物理ブロック１２１を管理し、ホストインタフェース部１１１で受信したコンテンツデータを不揮発性メモリ１２０へ書き込むために必要となる空きの物理ブロック１２１を生成する。以下、データの書込みが可能な状態である空きの物理ブロックを、「空きブロック」という。
【００３４】
制御情報記憶部１１７は、論物変換テーブル１１７ａと、物理ブロック管理テーブル１１７ｂと、優先書込み量情報１１７ｃとを格納する記憶領域を構成する。制御情報記憶部１１７に格納される各種情報１１７ａ，１１７ｂ，１１７ｃについては後述する。
【００３５】
なお、制御情報記憶部１１７はメモリコントローラ１１０上ではなく、不揮発性メモリ１２０上に設けられても良いし、メモリコントローラ１１０からアクセス可能なＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を用意して、そのＤＲＡＭ上に設けられても良い。
【００３６】
図２は、本実施の形態における論物変換テーブル１１７ａの構成を示す図である。論物変換テーブル１１７ａは、ホスト装置２００などの外部装置が指定する論理アドレスと、不揮発性メモリ１２０における物理ブロックとの対応を管理するデータテーブルである。論物変換テーブル１１７ａは、ホスト装置２００が使用する論理アドレス３０１と、不揮発性メモリ１２０の物理アドレス、すなわち物理ブロックアドレス３０２、及び、物理ページアドレス３０３との対応を示す情報を格納する。
【００３７】
図２において、論物変換テーブル１１７ａは、論理アドレス「０」に対して、物理ブロックアドレス「４」及び物理ページアドレス「６３」を対応付け、論理アドレス「１」に対して、物理ブロックアドレス「２６」及び物理ページアドレス「１５１」を対応付けている。論理アドレス「２」以降についても同様に、物理ブロックアドレスと物理ページアドレスとの対応が格納されている。なお、詳細は後述するが、本実施の形態では、１つの物理ブロックは、２５６ページの物理ページで構成されるものとする。
【００３８】
図３は、本実施の形態における物理ブロック管理テーブル１１７ｂの構成を示す図である。物理ブロック管理テーブル１１７ｂは、不揮発性メモリ１２０における複数の物理ブロックの状態を管理するデータテーブルである。物理ブロック管理テーブル１１７ｂは、不揮発性メモリ１２０を構成する物理ブロック毎の使用状況を管理するために、物理ブロックアドレス３０２と物理ブロック用途３０４と有効データページ数３０５と未書込み（空き）ページ数３０６とを対応付けて格納する。
【００３９】
図３において、物理ブロック用途３０４は、物理ブロックアドレス３０２で表される物理ブロック毎の種々の用途を格納する。種々の用途は、「システム」、「データ」、「未（不良）」、「空き（通常）」、「空き（優先）」、及び「書込み中」などを含む。以下、物理ブロック用途３０４に格納される各用途について説明する。
【００４０】
「システム」は、該物理ブロックに、不揮発性記憶装置１００が内部的に管理しているシステム情報を格納していることを示す。システム情報は、各種パラメータ情報、ＲＡＭ１１８にロードするプログラム、制御情報記憶部１１７にロードする論物変換テーブル１１７ａや物理ブロック管理テーブル１１７ｂや優先書込み量情報１１７ｃに関連する情報等を含む。
【００４１】
「データ」は、該物理ブロックのうち少なくとも一部の物理ページに、ホスト装置２００が書き込んだデータを格納していることを示す。
【００４２】
「未（不良）」は、該物理ブロックが先天的または後天的な不良ブロックであり、データ格納に使用されていないことを示す。
【００４３】
「空き（通常）」は、該物理ブロックが空き（未使用）の空きブロックであり、ホスト装置２００からの新たなデータ書込みやガベージコレクション処理におけるデータ書込みに使用できることを示す。以下、物理ブロック用途３０４を「空き（通常）」として管理される空きブロックを「通常用の空きブロック」という。通常用の空きブロックは、ガベージコレクション処理、及び外部装置からのデータの書込みに使用できる第１の空きブロックの一例である。
【００４４】
「空き（優先）」は、該物理ブロックが空き（未使用）の空きブロックであり、ホスト装置２００からの新たなデータ書込みに優先的に使用するために予約されていることを示す。以下、物理ブロック用途３０４を「空き（優先）」として管理される空きブロックを「優先書込み用の空きブロック」という。優先書込み用の空きブロックは、ガベージコレクション処理には使用されず、外部装置からのデータの書込みに使用できる第２の空きブロックの一例である。
【００４５】
「書込み中」（図１５参照）は、該物理ブロックの一部の物理ページにホスト装置２００が書き込んだデータを格納しており、さらに別の物理ページがホスト装置２００からの新たなデータ書込みに使用できることを示す。
【００４６】
図３において、有効データページ数３０５は、物理ブロックアドレス３０２で表される物理ブロックの物理ブロック用途３０４が「システム」または「データ」のときに、該物理ブロックに含まれる物理ページのうち、有効なデータが存在するページ数を格納する。物理ブロック用途３０４が「システム」の場合、有効なデータとは、システム情報を指す。物理ブロック用途３０４が「データ」の場合、有効なデータとは、ホスト装置２００が同一の論理アドレスに対して書込んだデータのうち、最新のデータを指す。例えば、ホスト装置２００が同一の論理アドレスに対して、３回の書込みをおこなった場合、３回目に書込んだデータのみが有効なデータであり、１回目及び２回目に書込んだデータは有効なデータではないデータ、すなわち無効なデータである。
【００４７】
図３において、未書込み（空き）ページ数３０６は、物理ブロックアドレス３０２で表される物理ブロックにおける、未書込みの物理ページの数を格納する。
【００４８】
図３における物理ブロック管理テーブル１１７ｂによると、物理ブロックアドレス３０２の「０」に対して、物理ブロック用途３０４の「システム」と、有効データページ数３０５の「６４」と、未書込み（空き）ページ数３０６の「０」とが対応付けされている。これにより、物理ブロックアドレス「０」の物理ブロックは、全ページ数は２５６において、有効データページ数「６４」、及び未書込み（空き）ページ数「０」を有し、１９２（＝２５６−０−６４）ページについては無効なデータが記録されていることがわかる。
【００４９】
また、物理ブロック管理テーブル１１７ｂにおいては、物理ブロックアドレス「１」に対して、物理ブロック用途「データ」と、有効データページ数「６」と、未書込み（空き）ページ数「０」とが対応付けされている。物理ブロックアドレス「２」以降についても、同様に、物理ブロック用途と有効データページ数、未書込み（空き）ページ数の情報が格納されている。
【００５０】
図４は、本実施の形態における優先書込み量情報１１７ｃの構成を示す図である。優先書込み量情報１１７ｃは、ホスト装置２００などの外部装置からの書込みを優先的に行うことができる優先書込み量を管理する情報である。優先書込み量情報１１７ｃは、不揮発性記憶装置１００が確保すべき優先書込み量を示す優先書込み量設定値３０７と、不揮発性記憶装置１００が現在確保している優先書込み量を示す優先書込み量現在値３０８とを格納する。
【００５１】
図４において、優先書込み量情報１１７ｃは、一例として、優先書込み量設定値３０７が「１０２４ＭＢ」であり、優先書込み量現在値３０８が「１９２ＭＢ」であることを示している。
【００５２】
［１−１−３．不揮発性メモリの構成］
次に、不揮発性記憶装置１００の不揮発性メモリ１２０の構成について説明する。図５は、本実施の形態における不揮発性メモリ１２０の記録領域である物理ブロックの構成を示す図である。
【００５３】
不揮発性メモリ１２０は、複数の物理ブロック１２１で構成される。物理ブロック１２１は不揮発性メモリ１２０における消去単位であり、この単位でデータの消去が実行される。
【００５４】
図６は、本実施の形態における物理ブロック１２１の構成を示す図である。
【００５５】
物理ブロック１２１は、複数の物理ページ１２２で構成される。物理ページ１２２は物理ブロック１２１へのデータの書込み単位である。ただし、すでにデータが書込まれている物理ページ１２２に対して、さらにデータを書込むことはできない、すなわち上書きすることはできない。したがって、データが書込まれた物理ページ１２２に対して上書きをしようとするときには、まず書込み先の物理ページ１２２を含む物理ブロック１２１の単位でデータの消去を行った後、データを書込む必要がある。
【００５６】
本実施の形態では、不揮発性メモリ１２０において、物理ページの単位を１６ｋＢとし、物理ブロックの単位を４ＭＢ（すなわち、１６ｋＢ×２５６ページ）とする。
【００５７】
［１−１−４．ホスト装置の構成］
次にホスト装置２００の構成について説明する。図７は、本実施の形態におけるホスト装置２００を示した構成図である。
【００５８】
ホスト装置２００は、不揮発性記憶装置１００と接続可能な装置である。
【００５９】
ホスト装置２００は、ＣＰＵ２１１と、ＲＡＭ２１２と、ＲＯＭ２１３と、メモリインタフェース部２１４とを含み、これらがバスを介して接続されている。ホスト装置２００はまた、入力部２１５と、表示部２１６と、記憶部２１７とを含み、これらが所定のインタフェースを介してバスを介して接続されている。
【００６０】
ＣＰＵ２１１は、各種アプリケーションプログラム等を実行する演算ユニットである。
【００６１】
ＲＡＭ２１２は、ＣＰＵ２１１の処理において実行されるプログラム、及びプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用される。
【００６２】
ＲＯＭ２１３は、ＣＰＵ２１１が実行するプログラム、及び演算パラメータとしての固定データを格納する。
【００６３】
メモリインタフェース部２１４は、ＣＰＵ２１１の制御により不揮発性記憶装置１００に対して、コマンドやコンテンツデータ等のデータの送受信を行うインタフェースである。
【００６４】
入力部２１５は、ＣＰＵ２１１に各種の指令を入力するためにユーザにより操作されるキー、ボタン、タッチパネル、マウス、キーボード等である。
【００６５】
表示部２１６は、例えば液晶ディスプレイや有機ＥＬ（ＥｌｅｃｔｒｏＬｕｍｉｎｅｓｃｅｎｃｅ）ディスプレイ等であり、各種情報をテキスト又はイメージ等により表示する。
【００６６】
記憶部２１７は、情報記憶媒体としての例えばフラッシュメモリ、ハードディスクを有する。
【００６７】
［１−２．動作］
以上のように構成された不揮発性記憶システム１の動作を以下に説明する。
【００６８】
［１−２−１．動作の概要］
まず、本実施の形態に係る不揮発性記憶システム１の動作の概要について説明する。
【００６９】
従来の不揮発性記憶システムにおいては、ホスト装置側から不揮発性記憶装置におけるガベージコレクション処理の発生タイミングを制御することはできなかった。このため、ホスト装置からのコンテンツデータの書込み中に不揮発性記憶装置においてガベージコレクション処理が実行され、データ書込み速度が大幅に低下することがあった。
【００７０】
そこで、本実施の形態では、不揮発性記憶装置１００のメモリコントローラ１１０が、通常用の空きブロックと優先書込み用の空きブロックとを管理し、ガベージコレクション処理よりも優先的にホスト装置２００からのデータの書込みを行う優先書込みを実現する。また、ホスト装置２００側からは、優先書込み量制御部１１３において優先書込み量、すなわち、ガベージコレクション処理を実行せずに書込みを行える書込みのデータ量を取得及び設定可能にする。
【００７１】
メモリコントローラ１１０は、ホスト装置２００からのコマンド受信がないときに予め、ホスト装置２００が設定した量（優先書込み量設定値３０７）まで優先書込み用の空きブロックの量を増大させる処理を行う。メモリコントローラ１１０は、ホスト装置２００からのデータ書込みコマンドを受信したときには、予め確保した優先書込み量現在値３０８を上限として、ガベージコレクション処理を実行せずに高速に書込みを行う。
【００７２】
以下、本実施の形態に係る不揮発性記憶システム１の動作の詳細を説明する。
【００７３】
［１−２−２．不揮発性記憶装置の動作］
不揮発性記憶システム１における不揮発性記憶装置１００の動作について、以下説明する。
【００７４】
［１−２−２−１．電源オン後の動作］
まず、不揮発性記憶装置１００における電源オン後の動作について、図８を参照して説明する。
【００７５】
図８は、本実施の形態における不揮発性記憶装置１００の電源オン後の動作を示すフローチャートである。
【００７６】
図８のフローチャートは、例えばホスト装置２００が不揮発性記憶装置１００に対して、コンテンツデータの書込み、または、コンテンツデータの読出しを行う前に予め、不揮発性記憶装置１００の電源をオンすることによって、開始される。
【００７７】
（ステップＳ８０１）  まず、不揮発性記憶装置１００は、電源オン後にメモリコントローラ１１０の初期化処理を行う（Ｓ８０１）。具体的に、メモリコントローラ１１０のＣＰＵ１０１は、ＲＯＭ１１９に格納されたプログラムの実行、不揮発性メモリ１２０にアクセスするための初期化処理、不揮発性メモリ１２０に格納されたシステム情報の読出し、ＲＡＭ１１８へのプログラムのロード、および制御情報記憶部１１７への情報設定などを行う。ステップＳ８０１の初期化処理により、メモリコントローラ１１０は、ホスト装置２００からの各種コマンドを受付け可能な状態になる。
【００７８】
（ステップＳ８０２）  次に、メモリコントローラ１１０は、ホスト装置２００からコマンドを受信したか否かを確認する（Ｓ８０２）。メモリコントローラ１１０において、ＣＰＵ１０１は、ホストインタフェース部１１１によるホスト装置２００からのコマンドの受信状況を確認する。
【００７９】
（ステップＳ８０３）  メモリコントローラ１１０は、ホスト装置２００からコマンドを受信した場合（Ｓ８０２でＹｅｓ）、受信したコマンドの種類を確認し、コマンドの種類に応じた処理を実施する（Ｓ８０３）。各種のコマンドは、例えば、データ書込みコマンド、優先書込み量取得コマンド、及び優先書込み量設定コマンドなどを含む。各種コマンドに応じた処理については後述する。メモリコントローラ１１０は、ステップＳ８０３の処理の実施後、ステップＳ８０２に戻る。
【００８０】
（ステップＳ８０４）  一方、メモリコントローラ１１０は、ホスト装置２００からコマンドを受信していない場合（Ｓ８０２でＮｏ）、制御情報記憶部１１７の優先書込み量情報１１７ｃを参照し、優先書込み量現在値３０８が優先書込み量設定値３０７よりも少ないか否かを判定する（Ｓ８０４）。メモリコントローラ１１０は、優先書込み量現在値３０８が優先書込み量設定値３０７以上である場合（Ｓ８０４でＮｏ）、ステップＳ８０２に戻る。
【００８１】
（ステップＳ８０５）  優先書込み量現在値３０８が優先書込み量設定値３０７よりも少ない場合（Ｓ８０４でＹｅｓ）、メモリコントローラ１１０は、優先書込み量増大処理を実施する（Ｓ８０５）。優先書込み量増大処理は、不揮発性記憶装置１００においてメモリコントローラ１１０が不揮発性メモリ１２０における優先書込み用の空きブロックの量を増大させる処理である。優先書込み量増大処理の詳細は後述する。メモリコントローラ１１０は、ステップＳ８０５の処理の実施後、ステップＳ８０２に戻る。
【００８２】
メモリコントローラ１１０は、ステップＳ８０２以降の処理を例えば所定の周期で繰り返し実行する。
【００８３】
以上の処理によると、不揮発性記憶装置１００のメモリコントローラ１１０は、ホスト装置２００からのコマンドを受信していない間に、優先書込み量現在値３０８が優先書込み量設定値３０７に到達するまで優先書込み用の空きブロックの量を増大させる（Ｓ８０５）。これにより、不揮発性記憶装置１００において、ホスト装置２００からのデータ書込みコマンドを受信したときに用いられる優先書込み用の空きブロックを確保することができる。
【００８４】
［１−２−２−２．データの書込み動作］
次に、図８のステップＳ８０３において、ホスト装置２００からのデータ書込みコマンドに基づき不揮発性記憶装置１００が行うデータの書込み動作について、図９〜図１７を参照して説明する。
【００８５】
図９は、本実施の形態における不揮発性記憶装置１００のデータの書込み動作を示すフローチャートである。
【００８６】
本フローチャートは、図８のステップＳ８０２において、不揮発性記憶装置１００のメモリコントローラ１１０が、ホスト装置２００からデータ書込みコマンドを受信した場合に開始される。ホスト装置２００は、コンテンツデータを不揮発性記憶装置１００に書込む際に、データ書込みコマンドを発行する。データ書込みコマンドは、書込みアドレスを指定してホスト装置２００からのデータの書込み指示をメモリコントローラ１１０に通知する。
【００８７】
以下の説明では、本フローチャートの開始時点において、論物変換テーブル１１７ａは図２に示す状態であり、物理ブロック管理テーブル１１７ｂは図３に示す状態であり、優先書込み量情報１１７ｃは図４に示す状態であることとする。
【００８８】
（ステップＳ９０１）  まず、メモリコントローラ１１０は、ホスト装置２００からのデータ書込みコマンドによる書込み対象の論理アドレスを取得する（Ｓ９０１）。メモリコントローラ１１０のホストインタフェース部１１１は、データ書込みコマンドと書込み先の論理アドレスとを受信する。メモリコントローラ１１０のＣＰＵ１０１は、ホストインタフェース部１１１から受信した各情報を取得する。
【００８９】
以下では、一例として、書込み先の論理アドレスが「９」から「２６５」までの２５６区間の場合の動作例について説明する。また、本実施の形態では論理アドレスの１区間が１６ｋＢであり、１つの物理ページに１論理アドレスのデータが収まることとする。
【００９０】
（ステップＳ９０２）  次に、ＣＰＵ１０１において、優先書込み量制御部１１３は、制御情報記憶部１１７の優先書込み量情報１１７ｃを参照し、優先書込み量現在値３０８が０よりも大きいか否かを判定する（Ｓ９０２）。本実施の形態では、ステップＳ９０２において「Ｙｅｓ」に進んだ場合、ホスト装置２００からのデータの優先書込みが行われる（ステップＳ９０３〜Ｓ９０５）。一方、ステップＳ９０２において「Ｎｏ」に進んだ場合、通常の書込みが行われる（ステップＳ９０７〜Ｓ９１１）。以下、メモリコントローラ１１０による優先書込み、及び通常の書き込みについてそれぞれ説明する。
【００９１】
（１）優先書込みについて
（ステップＳ９０３）  優先書込み量現在値３０８が０よりも大きい場合（Ｓ９０２でＹｅｓ）、ＣＰＵ１０１において、空きブロック管理部１１４は、書込み先の物理ブロックとして１つの優先書込み用の空きブロックを選択する（Ｓ９０３）。空きブロック管理部１１４は、制御情報記憶部１１７の物理ブロック管理テーブル１１７ｂを参照し、物理ブロック用途３０４が「空き（優先）」である物理ブロックの１つを選択し、該物理ブロックの消去を行う。以下では、図３に示す状態の物理ブロック管理テーブル１１７ｂから、物理ブロックアドレス「６」の物理ブロックが選択された場合の動作例について説明する。
【００９２】
（ステップＳ９０４）  次に、ＣＰＵ１０１において、書込み制御部１１２は、ホストインタフェース部１１１を介して受信したホスト装置２００からの書込みデータを、ステップＳ９０３で選択した空きブロックに書込む（Ｓ９０４）。本例では、ステップＳ９０１で２５６区間の論理アドレスが受信されたことにより、書込み制御部１１２は、ステップＳ９０３で選択した物理ブロックアドレス「６」の物理ブロックに、１６ｋＢ×２５６区間で４ＭＢ、すなわち物理ブロックと同じサイズのデータを書込む。
【００９３】
（ステップＳ９０５）  次に、ＣＰＵ１０１において書込み制御部１１２は、ステップＳ９０４における書込みに応じて、制御情報記憶部１１７の論物変換テーブル１１７ａ、物理ブロック管理テーブル１１７ｂ、及び優先書込み量情報１１７ｃを更新する（Ｓ９０５）。図１０〜図１２に、ステップＳ９０５による更新後の各種情報を例示する。
【００９４】
図１０は、図２に示す状態からの更新後の論物変換テーブル１１７ａ２の例を示している。図１０に例示する更新後の論物変換テーブル１１７ａ２においては、ステップＳ９０１で受信した論理アドレス「９」、「１０」、…に対して、ステップＳ９０４で書込みを行った物理ブロックアドレス「６」の物理ページアドレス「０」、「１」、…が対応付けられた状態に更新されている。
【００９５】
図１１は、図３に示す状態からの更新後の物理ブロック管理テーブル１１７ｂ２の例を示している。図１１に例示する更新後の物理ブロック管理テーブル１１７ｂ２においては、ステップＳ９０４で書込みを行った物理ブロックアドレス「６」に関して、物理ブロック用途３０４が「空き（優先）」から「データ」に更新され、有効データページ数３０５が「０」から「２５６」に更新されている。
【００９６】
図１２は、図４に示す状態からの更新後の優先書込み量情報１１７ｃ２の例を示している。図１２に例示する更新後の優先書込み量情報１１７ｃ２においては、優先書込み量現在値３０８の値が、ステップＳ９０４で書込みを行ったデータのサイズ（４ＭＢ）だけ減って、「１８８ＭＢ」に更新されている。
【００９７】
（ステップＳ９０６）  図９に戻り、次に、ＣＰＵ１０１において書込み制御部１１２は、ホスト装置２００から指定された書込みアドレスの全てに対して書込みを完了したか否かを判定する（Ｓ９０６）。書込み制御部１１２は、全ての書込みを完了している場合（Ｓ９０６でＹｅｓ）、データ書込みコマンドに基づく処理を終了する。
【００９８】
一方、まだ書込みすべきアドレスが残っている場合（Ｓ９０６でＮｏ）、書込み制御部１１２が、残っているアドレスに対して処理を行うためにステップＳ９０１の処理に戻る。例えば、ＣＰＵ１０１は、指定された書込みアドレスの全体と書込みが完了した範囲とに基づき、残りの書込みアドレスの内の１つの物理ブロックに対応する論理アドレスを取得し（Ｓ９０１）、ステップＳ９０１以降の処理を物理ブロック単位で行う。
【００９９】
（２）通常の書込みについて
（ステップＳ９０７）  また、優先書込み量現在値３０８が０である場合（Ｓ９０２でＮｏ）、ＣＰＵ１０１は、通常の書込みを行うために、通常用の空きブロックの数が所定の閾値Ｘよりも多いか否かを判定する（Ｓ９０７）。具体的に、ＣＰＵ１０１において空きブロック管理部１１４は、制御情報記憶部１１７の物理ブロック管理テーブル１１７ｂを参照し、物理ブロック用途３０４が「空き（通常）」である物理ブロックの数をカウントして、カウントした数を閾値Ｘと比較する。閾値Ｘは、システム情報の１つであり、例えば１以上である。
【０１００】
通常用の空きブロックの数が閾値Ｘよりも多い場合（Ｓ９０７でＹｅｓ）、ＣＰＵ１０１は、ステップＳ９０８の処理を行うことなく、ステップＳ９０９の処理に進む。
【０１０１】
（ステップＳ９０８）  一方、通常用の空きブロックの数が閾値Ｘ以下である場合（Ｓ９０７でＮｏ）、ＣＰＵ１０１において、空きブロック管理部１１４は、ガベージコレクション処理を実行する（Ｓ９０８）。ガベージコレクション処理は、不揮発性メモリ１２０に格納されたデータを整理して、新たな書込みを行うための空きの領域を増大させる処理である。空きの領域は、空きブロック、あるいは物理ブロック内の未書込み（空き）ページである。以下では、一例として、１回当たりに一つの空きブロックを生成するガベージコレクション処理を説明する。ステップＳ９０８のガベージコレクション処理について、図１３を用いて説明する。
【０１０２】
図１３は、ステップＳ９０８のガベージコレクション処理の動作例を示している。空きブロック管理部１１４は、制御情報記憶部１１７の物理ブロック管理テーブル１１７ｂを参照し、例えば物理ブロック用途３０４が「データ」である物理ブロックのうち、有効データページ数３０５の値が最小の物理ブロックを選択する。図１３の例では、図３に示す状態の物理ブロック管理テーブル１１７ｂから、有効データページ数３０５が「２」である物理ブロックアドレス「４」の物理ブロックが選択されている。物理ブロックアドレス「４」の物理ブロックに含まれる全ページ数は２５６であり、有効データページ数３０５が「２」であり、未書込み（空き）ページ数３０６が「０」である（図３）。このため、当該物理ブロックに含まれる２５４（＝２５６−０−２）ページが、無効なデータが記録されたページであることがわかる。
【０１０３】
さらに、空きブロック管理部１１４は、制御情報記憶部１１７の物理ブロック管理テーブル１１７ｂを参照し、物理ブロック用途３０４が「空き（通常）」である物理ブロック、即ち通常用の空きブロックの中から１つの空きブロックを選択する。図１３の例では、物理ブロックアドレス「８」の物理ブロックが選択されている。
【０１０４】
図１３に示すように、空きブロック管理部１１４は、前者（物理ブロックアドレス「４」）の物理ブロックにある有効なデータ（２ページ分）を後者（物理ブロックアドレス「８」）の空きページにコピーする。さらに、空きブロック管理部１１４は、前者（物理ブロックアドレス「４」）の物理ブロックの消去を行い、物理ブロック用途３０４を「空き（通常）」にする（図１５参照）。物理ブロックアドレス「４」の物理ブロックの消去により、他の物理ブロックへコピー済みの有効なデータが記録されていた２ページ及び無効なデータが記録されていた２５４ページが消去され、２５６ページ全体が未書込み（空き）となる。図１４及び図１５に、ステップＳ９０８のガベージコレクション処理後の各種情報を例示する。
【０１０５】
図１４は、図２に示す状態からのガベージコレクション処理後の論物変換テーブル１１７ａ３の例を示している。ガベージコレクション処理後の論物変換テーブル１１７ａ３において、論理アドレス「０」及び「４」のデータは、ガベージコレクション処理前（図２）の物理ブロックアドレス「４」から、図１４に示すように物理ブロックアドレス「８」に移動している。
【０１０６】
図１５は、図３に示す状態からのガベージコレクション処理後の物理ブロック管理テーブル１１７ｂ３の例を示している。ガベージコレクション処理後の物理ブロック管理テーブル１１７ｂ３において、物理ブロックアドレス「４」の物理ブロック用途３０４は、ガベージコレクション処理前（図３）の「データ」から、図１５に示すように「空き（通常）」に更新されている。また、ガベージコレクション処理前後の物理ブロックアドレス「４」に関して、有効データページ数３０５は「２」から「０」に更新され、未書込み（空き）ページ数３０６は「０」から「２５６」に更新されている。
【０１０７】
さらに、物理ブロックアドレス「８」の物理ブロック用途３０４は、ガベージコレクション処理前（図３）の「空き（通常）」から、図１５に示すように「書込み中」に更新されている。また、ガベージコレクション処理前後の物理ブロックアドレス「８」に関して、有効データページ数３０５は「０」から「２」に更新され、未書込み（空き）ページ数３０６は「２５６」から「２５４」に更新されている。従って、ステップＳ９０８のガベージコレクション処理の対象の２つの物理ブロックにおける空きページ数３０６の合計は、「２５６（＝０＋２５６）」から「５１０（＝２５６＋２５４）」に増加している。
【０１０８】
（ステップＳ９０９）  図９に戻り、次に、ＣＰＵ１０１において空きブロック管理部１１４は、制御情報記憶部１１７の物理ブロック管理テーブル１１７ｂ３を参照し、書込み先の物理ブロックを選択する（Ｓ９０９）。図１５の例における物理ブロックアドレス「８」の物理ブロックのように、物理ブロック用途３０４が「書込み中」である物理ブロックがある場合、空きブロック管理部１１４は、当該物理ブロックを選択する。一方、物理ブロック用途３０４が「書込み中」である物理ブロックがない場合、空きブロック管理部１１４は、物理ブロック用途３０４が「空き（通常）」である物理ブロックの１つを選択する。
【０１０９】
（ステップＳ９１０）  次に、ＣＰＵ１０１において、書込み制御部１１２は、ホストインタフェース部１１１を介して受信したホスト装置２００からの書込みデータを、ステップＳ９０９で選択した物理ブロックに書込む（Ｓ９１０）。ここで、ステップＳ９０１で２５６区間の論理アドレスが受信されている場合に、図１５の例の物理ブロックアドレス「８」の物理ブロックがステップＳ９０９で選択されると、未書込み（空き）ページ数は２５４しかないこととなる。このような場合、書込み制御部１１２は、２５６区間中の２区間を残して２５４区間分のデータの書込みを行って（Ｓ９１０）、ステップＳ９１１に進む。残りの２区間の書込みは、ステップＳ９０１以降の処理が繰り返されることによって行われる。
【０１１０】
（ステップＳ９１１）  次に、ＣＰＵ１０１において、書込み制御部１１２は、ステップＳ９１０での書込みに応じて制御情報記憶部１１７の論物変換テーブル１１７ａ３、及び物理ブロック管理テーブル１１７ｂ３を更新する（Ｓ９１１）。図１６及び図１７に、ステップＳ９１１による更新後の各種情報を例示する。
【０１１１】
図１６は、図１４に示す状態からの更新後の論物変換テーブル１１７ａ４の例を示している。図１６に例示する更新後の論物変換テーブル１１７ａ４においては、ステップＳ９０１で受信した論理アドレス「９」、「１０」、…に対して、ステップＳ９１０で書込みを行った物理ブロックアドレス「８」の物理ページアドレス「２」、「３」、…が対応付けられた状態に更新されている。
【０１１２】
図１７は、図１５に示す状態からの更新後の物理ブロック管理テーブル１１７ｂ４の例を示している。図１７に例示する更新後の物理ブロック管理テーブル１１７ｂ４においては、ステップＳ９１０で書込みを行った物理ブロックアドレス「８」の物理ブロック用途３０４が「書込み中」から「データ」に更新されている。また、物理ブロックアドレス「８」の有効データページ数３０５が「２５４」から「０」に更新されている。
【０１１３】
図９に戻り、書込み制御部１１２がステップＳ９１１の処理を行った後、ＣＰＵ１０１はステップＳ９０６の処理に進む。例えば上述のように、ステップＳ９１０で２５６区間中の２５４区間が書込まれ、２区間が残っている場合、ＣＰＵ１０１はステップＳ９０６で「Ｎｏ」に進み、ステップＳ９０１以降の処理を繰り返す。
【０１１４】
ホスト装置２００から指定された全ての書込みが完了した場合（Ｓ９０６でＹｅｓ）、本フローチャートによる処理（図８のステップＳ８０３）を終了し、図８のステップＳ８０２に戻る。
【０１１５】
以上の処理によると、優先書込み量の現在値が０よりも大きい場合には（Ｓ９０２）、優先書込み用の物理ブロックを用いて、ガベージコレクション処理が発生しない優先書込みが行われる（Ｓ９０３〜Ｓ９０５）。ガベージコレクション処理の実施は、優先書込み量の現在値が０以下で、且つ通常用の物理ブロックが所定条件に該当する場合（Ｓ９０７でＮｏ）に制限される。これにより、ガベージコレクション処理よりも優先書込み量分のデータの書込みを優先することができる。
【０１１６】
以上の説明では、ステップＳ９０２において、優先書込み量制御部１１３は、優先書込み量現在値３０８が０よりも大きいか否かを判定したが、これに限らず、例えば０よりも大きい所定値を判定基準として、ステップＳ９０２の判定が行われてもよい。
【０１１７】
［１−２−２−３．優先書込み量増大処理］
次に、図８のステップＳ８０５の優先書込み量増大処理の詳細について、図１８〜図２０を用いて説明する。
【０１１８】
図１８は、本実施の形態における不揮発性記憶装置１００の優先書込み量増大処理を示すフローチャートである。
【０１１９】
以下の説明では、本フローチャートの開始時点において、論物変換テーブル１１７ａは図２に示す状態であり、物理ブロック管理テーブル１１７ｂは図３に示す状態であり、優先書込み量情報１１７ｃは図４に示す状態であることとする。
【０１２０】
（ステップＳ１００１）  まず、メモリコントローラ１１０のＣＰＵ１０１は、通常用の空きブロックの数が閾値Ｘよりも多いか否かを判定する（Ｓ１００１）。具体的に、ＣＰＵ１０１において空きブロック管理部１１４は、制御情報記憶部１１７の物理ブロック管理テーブル１１７ｂを参照し、物理ブロック用途３０４が「空き（通常）」である物理ブロックの数をカウントし、カウントした数を閾値Ｘと比較する。
【０１２１】
（ステップＳ１００２）  通常用の空きブロックの数が閾値Ｘよりも多い場合（Ｓ１００１でＹｅｓ）、ＣＰＵ１０１は、通常用の空きブロックの一つを優先書込み用の空きブロックに変更する（Ｓ１００２）。具体的に、ＣＰＵ１０１において、優先書込み量制御部１１３は、制御情報記憶部１１７の物理ブロック管理テーブル１１７ｂを参照し、物理ブロック用途３０４が「空き（通常）」である物理ブロックの一つを「空き（優先）」に更新する。また、優先書込み量制御部１１３は、一つの物理ブロックについて「空き（通常）」を「空き（優先）」に更新する毎に、制御情報記憶部１１７の優先書込み量情報１１７ｃの優先書込み量現在値３０８を、一つの物理ブロックのサイズである４ＭＢ分増加させる。図１９及び図２０に、ステップＳ１００２による更新後の各種情報を例示する。
【０１２２】
図１９は、図３に示す状態から優先書込み量増大処理により物理ブロックアドレス「８」の物理ブロックを更新後の物理ブロック管理テーブル１１７ｂ５の例を示している。更新後の物理ブロック管理テーブル１１７ｂ５においては、物理ブロックアドレス「８」の物理ブロック用途３０４が、更新前（図３）の「空き（通常）」から、図１９に示すように「空き（優先）」に更新されている。
【０１２３】
図２０は、図４に示す状態から優先書込み量増大処理により物理ブロックアドレス「８」の物理ブロックを更新後の優先書込み量情報１１７ｃ５の例を示している。更新後の優先書込み量情報１１７ｃ５においては、優先書込み量現在値３０８の値が、更新前（図４）の「１９２ＭＢ」から、図２０に示すように、一つの物理ブロック分（４ＭＢ）増大した「１９６ＭＢ」に更新されている。
【０１２４】
（ステップＳ１００３）  図１８に戻り、通常用の空きブロックの数が閾値Ｘ以下の場合（Ｓ１００１でＮｏ）、ＣＰＵ１０１において、空きブロック管理部１１４は、優先書込用の空きブロックを一つ分増やすためのガベージコレクション処理を実行する（Ｓ１００３）。ステップＳ１００３のガベージコレクション処理においては、ステップＳ９０８と同内容の処理が、ホスト装置２００からコマンド受信した場合には中断するように行われる。ステップＳ１００３のガベージコレクション処理の詳細については後述する。
【０１２５】
ＣＰＵ１０１は、ステップＳ１００２又はステップＳ１００３の処理を完了することにより、本フローチャートによる処理（図８のステップＳ８０５）を終了し、図８のステップＳ８０２に戻る。
【０１２６】
以上の処理によると、コマンドの受信がない期間中（Ｓ８０２でＮｏ）、優先書込み量増大処理（Ｓ８０５）が繰り返し実行されることで、優先書込み用の空きブロックが一つずつ増大する。例えば、通常用の空きブロックから優先書込み用の空きブロックへの変更（Ｓ１００２）が、
＜Ａ＞優先書込み量現在値３０８が優先書込み量設定値３０７以上になる（Ｓ８０４でＮｏ）、または、
＜Ｂ＞通常用の空きブロックの数が閾値Ｘ以下になる（Ｓ１００１でＮｏ）
まで、繰り返され、優先書込み用の空きブロックが確保される。
【０１２７】
また、通常用の空きブロックの数が閾値Ｘ以下になると（Ｓ１００１でＮｏ）、ガベージコレクション処理（Ｓ１００２）を行って、優先書込み用の空きブロックが生成される。なお、ステップＳ１００２の処理に用いる閾値Ｘは、図９のステップＳ９０７で用いた閾値Ｘとは別に設定されてもよい。
【０１２８】
以上の処理におけるステップＳ１００３のガベージコレクション処理の詳細について、図２１を参照して説明する。なお、ステップＳ９０８の処理と同内容の説明については省略する。
【０１２９】
図２１は、ステップＳ１００３のガベージコレクション処理を説明するためのフローチャートである。
【０１３０】
（ステップＳ１１０１）  まず、メモリコントローラ１１０のＣＰＵ１０１は、ホストインタフェース部１１１を介して、ホスト装置２００からコマンドを受信したか否かを判断する（Ｓ１１０１）。
【０１３１】
（ステップＳ１１０２）  ＣＰＵ１０１は、ホスト装置２００からコマンドを受信していないと判断した場合（Ｓ１１０１でＮｏ）、ガベージコレクション処理を１ページ分、実行する（Ｓ１１０２）。例えば、ＣＰＵ１０１は、１ページの有効なデータをコピーするための書込みを通常用の空きブロックに対して行う。
【０１３２】
（ステップＳ１１０３）  次に、ＣＰＵ１０１は、例えば一つの空きブロックを生成するためのガベージコレクション処理が完了したか否かを判断する（Ｓ１１０３）。ＣＰＵ１０１は、一つの空きブロック分のガベージコレクション処理が完了していないと判断すると（Ｓ１１０３でＮｏ）、ステップＳ１１０１の処理に戻る。
【０１３３】
一方、ＣＰＵ１０１は、一つの空きブロック分のガベージコレクション処理が完了したと判断すると（Ｓ１１０３でＹｅｓ）、図１８のステップＳ１００３の処理を終了する。この際、ＣＰＵ１０１において、空きブロック管理部１１４は、物理ブロック管理テーブル１１７ｂにおいて、ガベージコレクション処理によって生成された新たな空きブロックの物理ブロック用途３０４を「空き（優先）」に更新する。また、空きブロック管理部１１４は、優先書込み量情報１１７ｃの優先書込み量現在値３０８を一つの物理ブロック分、増大させる。
【０１３４】
（ステップＳ１１０４）  また、ＣＰＵ１０１は、ホスト装置２００からコマンドを受信したと判断すると（Ｓ１１０１でＹｅｓ）、ステップＳ１００３のガベージコレクション処理を中断する（Ｓ１１０４）。この際、ＣＰＵ１０１は、例えばガベージコレクション処理を中断した中断位置を示す情報をＲＡＭ１１８等に格納し、その後に中断位置からガベージコレクション処理を再開できるようにする。
【０１３５】
メモリコントローラ１１０は、ステップＳ１００３のガベージコレクション処理を中断すると（Ｓ１１０４）、優先書込み量増大処理（図８のステップＳ８０５）を終了する。この場合、図８のステップＳ８０２で「Ｙｅｓ」に進み、ステップＳ８０３の処理が適宜、実行される。
【０１３６】
以上の処理によると、ステップＳ１００３のガベージコレクション処理の実施中に、ホスト装置２００からの新たなコマンド受信が検知された場合（Ｓ１００１でＹｅｓ）には、ガベージコレクション処理を速やかに中断もしくは終了することにより、優先書込み量増大処理が終了する。これにより、ホスト装置２００に対するコマンド応答時間が長くなることを避けることができる。
【０１３７】
［１−２−２−４．優先書込み量取得動作］
次に、図８のステップＳ８０３において、ホスト装置２００からの優先書込み量取得コマンドに基づき不揮発性記憶装置１００が行う優先書込み量取得動作について、図２２を参照して説明する。
【０１３８】
図２２は、本実施の形態における不揮発性記憶装置１００の優先書込み量取得動作を示すフローチャートである。
【０１３９】
本フローチャートは、図８のステップＳ８０２において、不揮発性記憶装置１００のメモリコントローラ１１０が、ホスト装置２００から優先書込み量取得コマンドを受信した場合に開始される。ホスト装置２００は、コンテンツデータを不揮発性記憶装置１００に書込む前に、優先書込み量取得コマンドを発行する。優先書込み量取得コマンドは、ホスト装置２００からの優先書込み量を取得する指示をメモリコントローラ１１０に通知する。
【０１４０】
（ステップＳ２１０１）  まず、メモリコントローラ１１０のホストインタフェース部１１１は、優先書込み量取得コマンドを受信したことをＣＰＵ１０１に通知する。ＣＰＵ１０１において、優先書込み量制御部１１３は、制御情報記憶部１１７の優先書込み量情報１１７ｃを参照し、優先書込み量現在値３０８の値を取得する（Ｓ２１０１）。
【０１４１】
（ステップＳ２１０２）  次に、ホストインタフェース部１１１は、ＣＰＵ１０１の制御により、ホスト装置２００にステップＳ２１０１で取得した優先書込み量現在値３０８の値を出力する（Ｓ２１０２）。
【０１４２】
メモリコントローラ１１０は、ホスト装置２００に優先書込み量現在値３０８の値を出力することにより（Ｓ２１０２）、本フローチャートによる処理（図８のステップＳ８０３）を終了し、図８のステップＳ８０２に戻る。
【０１４３】
以上の処理によると、不揮発性記憶装置１００の動作中にリアルタイムの優先書込み量現在値３０８の値を、ホスト装置２００から取得することができるようになる。
【０１４４】
［１−２−２−５．優先書込み量設定動作］
次に、図８のステップＳ８０３において、ホスト装置２００からの優先書込み量設定コマンドに基づき不揮発性記憶装置１００が行う優先書込み量設定動作について、図２３及び図２４を参照して説明する。
【０１４５】
図２３は、本実施の形態における不揮発性記憶装置１００の優先書込み量設定動作を示すフローチャートである。
【０１４６】
本フローチャートは、図８のステップＳ８０２において、不揮発性記憶装置１００のメモリコントローラ１１０が、ホスト装置２００から優先書込み量設定コマンドを受信した場合に開始される。ホスト装置２００は、例えば不揮発性記憶装置１００の電源オン時などのコンテンツデータを不揮発性記憶装置１００に書込む前にあらかじめ、優先書込み量設定コマンドを発行する。優先書込み量設定コマンドは、確保すべき優先書込み量を指定してホスト装置２００からの優先書込み量を設定する指示をメモリコントローラ１１０に通知する。
【０１４７】
以下の説明では、本フローチャートの開始時点において、優先書込み量情報１１７ｃは図４に示す状態であることとする。
【０１４８】
（ステップＳ２２０１）  まず、メモリコントローラ１１０のＣＰＵ１０１は、ホストインタフェース部１１１を介してホスト装置２００から受信した設定値を取得する（Ｓ２２０１）。ホストインタフェース部１１１は、優先書込み量設定コマンドを受信したことと、受信した設定値（例えば、２０４８ＭＢ）をＣＰＵ１０１に通知する。
【０１４９】
（ステップＳ２２０２）  次に、ＣＰＵ１０１において、優先書込み量制御部１１３は、制御情報記憶部１１７の優先書込み量情報１１７ｃの優先書込み量設定値３０７を、ホスト装置２００が指定した優先書込み量の値に更新する。図２４に、ステップＳ２２０２による更新後の優先書込み量情報１１７ｃ６を例示する。
【０１５０】
図２４は、図４に示す状態からの更新後の優先書込み量情報１１７ｃ６の例を示している。図２４に例示する更新後の優先書込み量情報１１７ｃ６においては、優先書込み量設定値３０７の値が、更新前（図４）の「１０２４ＭＢ」から「２０４８ＭＢ」に更新されている。
【０１５１】
メモリコントローラ１１０は、優先書込み量設定値３０７を更新することにより（Ｓ２２０２）、本フローチャートによる処理（図８のステップＳ８０３）を終了し、図８のステップＳ８０２に戻る。
【０１５２】
以上の処理によると、不揮発性記憶装置１００が優先書込み用の空きブロックの量を増大させる目標となる優先書込み量設定値３０７を、ホスト装置２００側から設定することができるようになる。
【０１５３】
［１−２−３．ホスト装置の動作］
次に、不揮発性記憶システム１におけるホスト装置２００の動作を以下に説明する。
【０１５４】
［１−２−３−１．電源オン後の動作］
ホスト装置２００における電源オン後の動作について、図２５を参照して説明する。
【０１５５】
図２５は、本実施の形態におけるホスト装置２００の電源オン後の動作を示すフローチャートである。
【０１５６】
（ステップＳ２４０１）  まず、ホスト装置２００は、電源オン後に初期化処理を行う（Ｓ２４０１）。具体的に、ホスト装置２００のＣＰＵ２１１は、ＲＯＭ２１３に格納されたプログラムの実行、記憶部２１７に格納された情報の読出し、ＲＡＭ２１２へのプログラムのロード、メモリインタフェース部２１４の設定等を行い、不揮発性記憶装置１００への各種コマンドを発行可能な状態にする。
【０１５７】
この際、ホスト装置２００は、予め必要とする優先書込み量を決定し、不揮発性記憶装置１００に対して、優先書込み量設定コマンドを発行する。例えば、優先書込み量として、コンテンツデータの１回あたりの書込み単位よりも大きい値を指定することにより、コンテンツデータの１回の書込みを高速に（即ち優先的に）行うことが期待できる。
【０１５８】
本実施の形態では、ホスト装置２００が書き込むコンテンツデータの最大サイズを１０２４ＭＢとし、ホスト装置２００はコンテンツデータを４ＭＢの単位で書込むものとする。また、１つのコンテンツデータの書込みを常に高速に行うことを期待して、ホスト装置２００は、優先書込み量設定コマンドで指示する優先書込み量として１０２４ＭＢを設定するものとする。
【０１５９】
その後、ホスト装置２００は、入力部２１５等の情報等をトリガーに種々の処理を行う。ホスト装置２００は、種々の処理を行う中でコンテンツデータ書込みを行う場合において、ステップＳ２４０２の処理に進む。
【０１６０】
（ステップＳ２４０２）  次に、ホスト装置２００のＣＰＵ２１１は、所定の書込み条件が成立したか否かを判定する（Ｓ２４０２）。書込み条件は、不揮発性記憶装置１００へのデータの書込みを行うために必要な条件であり、例えば書込むべきコンテンツデータがホスト装置２００のＲＡＭ２１２上に準備できたこと等を含む。ホスト装置２００のＣＰＵ２１１は、書込み条件が未だ成立していない場合（Ｓ２４０２でＮｏ）、書込み条件が成立するまで待つ。
【０１６１】
（ステップＳ２４０３ａ）  書込み条件が成立した場合（Ｓ２４０２でＹｅｓ）、ホスト装置２００は、不揮発性記憶装置１００に対して、優先書込み量取得コマンドを発行する（Ｓ２４０３ａ）。これに応じて、不揮発性記憶装置１００のメモリコントローラ１１０は優先書込み量取得動作（図２２）を行い、優先書込み量現在値３０８の値をホスト装置２００に出力する。
【０１６２】
（ステップＳ２４０３ｂ）  次に、ホスト装置２００は、不揮発性記憶装置１００のメモリコントローラ１１０から、メモリインタフェース部２１４を介して不揮発性記憶装置１００の優先書込み量現在値３０８の値を取得する（Ｓ２４０３ｂ）。
【０１６３】
（ステップＳ２４０３ｃ）  次に、ホスト装置２００のＣＰＵ２１１は、取得した優先書込み量現在値３０８の値が０よりも大きいか否かを判断する（Ｓ２４０３ｃ）。例えば、取得した優先書込み量現在値３０８の値が０である場合、ホスト装置２００はステップＳ２４０３ｄに進む。なお、ステップＳ２４０３ｃの判定は、例えば０よりも大きい所定値を用いて行われてもよい。
【０１６４】
（ステップＳ２４０３ｄ）  ホスト装置２００のＣＰＵ２１１は、取得した優先書込み量現在値３０８の値が０よりも大きくないと判断した場合（Ｓ２４０３ｃでＮｏ）、所定期間、待って（Ｓ２４０３ｄ）、ステップＳ２４０２に戻る。ステップＳ２４０３ｄで待っている期間中、ホスト装置２００おいては他の種々の処理が行われてもよい。
【０１６５】
（ステップＳ２４０４）  一方、ホスト装置２００のＣＰＵ２１１は、取得した優先書込み量現在値３０８の値が０よりも大きいと判断した場合（Ｓ２４０３ｃでＹｅｓ）、データ書込みコマンドにおける書込み量を決定する（Ｓ２４０４）。具体的に、ＣＰＵ２１１は、ステップＳ２４０３ａで取得した優先書込み量現在値３０８の値（データの量）と、ホスト装置２００が準備済の書込みデータの量とを比較する。比較結果に基づき、ＣＰＵ２１１は、小さいデータの量を今回の書込みデータの量として決定する。
【０１６６】
（ステップＳ２４０５）  次に、ホスト装置２００は不揮発性記憶装置１００に対して、決定した書込み量を有するデータ書込みコマンドを発行することにより、不揮発性記憶装置１００への書込み処理を行う（Ｓ２４０５）。これにより、不揮発性記憶装置１００において、ステップＳ２４０４で決定した書込みデータの量だけ、準備済みの書込みデータを書込むデータの書込み動作が行われる（図９参照）。
【０１６７】
（ステップＳ２４０６）  次に、ホスト装置２００は準備済みの全ての書込みデータの書込みを完了したか否かを判定する（Ｓ２４０６）。ホスト装置２００は、全ての書込みデータの書込みを完了していない場合（Ｓ２４０６でＮｏ）、ステップＳ２４０２の処理に戻り、残りの書込みデータに関してステップＳ２４０２以降の処理を行う。
【０１６８】
一方、ホスト装置２００は、全ての書込みデータの書込みを完了している場合（Ｓ２４０６でＹｅｓ）、書込み処理を終了する。
【０１６９】
以上の処理によると、本実施の形態に係るホスト装置２００は、コンテンツデータの書込み前に不揮発性記憶装置１００から優先書込み量現在値３０８を取得し、書込みデータ量が優先書込み量現在値３０８を超えないように調整する（Ｓ２４０３ａ〜Ｓ２４０３ｄ，Ｓ２４０４）。これにより、本実施の形態に係るホスト装置２００は、不揮発性記憶装置１００に対して常に高速に（すなわち、ガベージコレクション処理を実行させずに）書込みを行うことが可能である。優先書込み量現在値３０８が不足している場合には、データ書込みコマンドを発行せず、別の処理を実行することで、不揮発性記憶システム１の全体的な効率を最適化することが可能である。
【０１７０】
［１−３．効果等］
以上のように、本実施形態におけるメモリコントローラ１１０は、複数の物理ブロック１２１を有する不揮発性メモリ１２０を制御する。メモリコントローラ１１０は、ＣＰＵ１０１と、ホストインタフェース部１１１とを備える。ＣＰＵ１０１は、物理ブロック１２１にデータの書込みを行う。ホストインタフェース部１１１は、ホスト装置２００と接続し、データの送受信を行う。ＣＰＵ１０１は、複数の物理ブロック１２１の状態を管理する物理ブロック管理テーブル１１７ｂに基づいて、通常用の空きブロックと優先書込み用の空きブロックとを管理する。通常用の空きブロックは、不揮発性メモリ１２０に格納されたデータを整理するガベージコレクション処理に使用できる物理ブロックである。優先書込み用の空きブロックは、ガベージコレクション処理には使用されない物理ブロックである。ＣＰＵ１０１は、ホスト装置２００から指示を受信していないときに、優先書込み用の空きブロックの量を増大させ（Ｓ８０５）、ホスト装置２００からデータの書込み指示を受信したときに、優先書込み用の空きブロックにデータの書込みを行う（Ｓ９０４）。
【０１７１】
以上のメモリコントローラ１１０によると、ホスト装置２００から指示を受信していないときに増大させて確保した優先書込み用の空きブロックに対して、データの書込み指示を受信したときに、ガベージコレクション処理を行わずにデータの書込みを行える。これにより、ホスト装置２００からの所定量のデータの書込みを優先的に行うことができる。
【０１７２】
本実施形態において、ＣＰＵ１０１は、ホスト装置２００から指示を受信していないときに、優先書込み量設定値３０７を含む優先書込み量情報１１７ｃに基づいて、優先書込み量設定値３０７まで、優先書込み用の空きブロックの量を増大させる。これにより、優先書込み量情報１１７ｃに基づいて、ガベージコレクション処理を発生させない優先書込みが行えると想定されるデータの量を設定することができる。
【０１７３】
また、本実施形態において、優先書込み量情報１１７ｃは、現在の優先書込み用の空きブロックの量表す情報である優先書込み量現在値３０８を含む。ＣＰＵ１０１は、ホスト装置２００からデータの書込み指示を受信したとき、優先書込み量情報を参照する（Ｓ９０２）。ＣＰＵ１０１は、優先書込み量現在値３０８が（０以上等の）所定値以下でない場合、優先書込み用の空きブロックにデータの書込みを行う（Ｓ９０３〜Ｓ９０４）。ＣＰＵ１０１は、優先書込み量現在値３０８が所定値以下である場合、通常用の空きブロックを用いてデータの書込みを行う（Ｓ９０９〜Ｓ９１０）。
【０１７４】
これにより、優先書込み量現在値３０８を上限として、ガベージコレクション処理を発生させない優先書込みを行うことができる。
【０１７５】
また、本実施形態において、ＣＰＵ１０１は、優先書込み量現在値３０８が所定値以下であり、且つ通常用の空きブロックが所定条件（閾値Ｘ以下）に該当する場合（Ｓ９０７でＮｏ）、通常用の空きブロックを用いてガベージコレクション処理を実行して、書込み可能な物理ブロックを生成する（Ｓ９０８）。
【０１７６】
これにより、ガベージコレクション処理が発生するタイミングを通常用の空きブロックが枯渇した場合に制限することができる。
【０１７７】
また、本実施形態において、ＣＰＵ１０１は、優先書込み用の空きブロックの量を増大させる処理（Ｓ８０５）を行っているときに、ホスト装置２００からの指示を受信すると、優先書込み用の空きブロックの量を増大させる処理を中断する（Ｓ１１０３）。これにより、ホスト装置２００からの指示を待たせる事態を回避することができる。
【０１７８】
また、本実施形態において、ＣＰＵ１０１は、ホスト装置２００からの指示で優先書込み情報に関する情報である優先書込み量現在値３０８の値をホスト装置２００に出力する（Ｓ２１０１，Ｓ２１０２）。優先書込み量現在値３０８の値に限らず、例えば優先書込み量設定値３０７が、ホスト装置２００に出力されてもよい。
【０１７９】
また、本実施形態において、ＣＰＵ１０１は、ホスト装置２００からの指示された値に基づき、優先書込み量設定値３０７を決定する（Ｓ２２０１，Ｓ２２０２）。これにより、ホスト装置２００が、優先書込み量増大処理（Ｓ８０５）において優先書込み用の空きブロックの量を増大させる目標となる優先書込み量設定値３０７を設定することで、ガベージコレクション処理が発生しない状態を制御できる。
【０１８０】
また、本実施形態における不揮発性記憶装置１００は、メモリコントローラ１１０と、不揮発性メモリ１２０とを備える。不揮発性メモリ１２０は、メモリコントローラ１１０に接続され、メモリコントローラ１１０によりデータが記録される。
【０１８１】
また、本実施形態における不揮発性記憶システム１は、メモリコントローラ１１０と、不揮発性メモリ１２０と、ホスト装置２００とを備える。ホスト装置２００は、メモリコントローラ１１０に接続され、メモリコントローラ１１０に対し不揮発性メモリ１２０に対するデータの書込み指示を送信する。
【０１８２】
また、本実施形態において、ホスト装置２００は、メモリコントローラ１１０から優先書込み用の空きブロックの量を示す情報である優先書込み量現在値３０８を取得し、取得した優先書込み量現在値３０８以下の書込みデータをメモリコントローラ１１０に転送する（Ｓ２４０４）。これにより、ホスト装置２００が、ガベージコレクション処理を発生させないようにデータの書込み指示を行うことができる。
【０１８３】
また、本実施形態におけるメモリ制御方法は、メモリコントローラ１１０が複数の物理ブロック１２１を有する不揮発性メモリ１２０を制御する方法である。本方法は、メモリコントローラ１１０が、複数の物理ブロックの状態を管理する物理ブロック管理テーブル１１７ｂに基づいて、通常用の空きブロックと優先書込み用の空きブロックとを管理するステップを含む。メモリコントローラ１１０は、ホスト装置２００から指示を受信していないときに、優先書込み用の空きブロックの量を増大させる（Ｓ８０５）。メモリコントローラ１１０は、ホスト装置２００からデータの書込み指示を受信したときに、優先書込み用の空きブロックにデータの書込みを行う（Ｓ９０４）。
【０１８４】
以上のメモリ制御方法によると、ホスト装置２００からの所定量のデータの書込みをガベージコレクション処理よりも優先的に行うことができる。
【０１８５】
（他の実施の形態）
以上のように、本開示の技術の例示として、実施の形態１を説明した。しかしながら、本開示における技術は、これに限定されず、適宜、変更、置き換え、付加、省略等を行った実施の形態にも適用可能である。
【０１８６】
そこで、以下、他の実施の形態を例示する。
【０１８７】
実施の形態１におけるメモリコントローラ１１０及びホスト装置２００において、各種機能ブロックは、ＬＳＩ（Ｌａｒｇｅ―Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等の半導体回路により個別に１チップ化されても良いし、一部又は全部を含むように１チップ化されても良い。半導体回路は、所定の機能をハードウェア構成のみで実現してもよいし、又はソフトウェアと協働して所定の機能を実現するように構成されてもよい。例えば、半導体回路は、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、ＣＰＵ、ＭＰＵ（Ｍｉｃｒｏ−Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、マイクロコンピュータで構成される。
【０１８８】
なお、上記では、ＬＳＩとしたが、集積度の違いにより、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡや、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【０１８９】
実施の形態１における処理方法の実行順序は、必ずしも、上記実施の形態の記載に制限されるものではなく、本開示の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
【０１９０】
実施の形態１に係るメモリコントローラ１１０、メモリコントローラ１１０と不揮発性メモリ１２０とを含む不揮発性記憶装置１００、不揮発性記憶装置１００とホスト装置２００とを含む不揮発性記憶システム１、実施の形態１において実行されるメモリ制御方法、かかるメモリ制御方法をコンピュータに実行させるコンピュータプログラム、及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本開示の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ）、半導体メモリを挙げることができる。
【０１９１】
上記コンピュータプログラムは、上記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
【０１９２】
以上のように、本開示における技術の例示として、実施の形態を説明した。そのために、添付図面及び詳細な説明を提供した。
【０１９３】
したがって、添付図面及び詳細な説明に記載された構成要素の中には、課題解決のために必須な構成要素だけでなく、上記技術を例示するために、課題解決のためには必須でない構成要素も含まれ得る。そのため、それらの必須ではない構成要素が添付図面や詳細な説明に記載されていることをもって、直ちに、それらの必須ではない構成要素が必須であるとの認定をするべきではない。
【０１９４】
上述の実施の形態は、本開示における技術を例示するためのものであるから、特許請求の範囲又はその均等の範囲において種々の変更、置き換え、付加、省略等を行うことができる。
【産業上の利用可能性】
【０１９５】
本開示は、ガベージコレクション処理を行う不揮発性メモリを組み込んだ記録装置に適用可能である。具体的には、ＳＳＤ、メモリカード、フラッシュドライブ、組込み用メモリデバイス等に適用可能である。
【符号の説明】
【０１９６】
１  不揮発性記憶システム
１００  不揮発性記憶装置
１０１  ＣＰＵ
１１０  メモリコントローラ
１１１  ホストインタフェース部
１１２  書込み制御部
１１３  優先書込み量制御部
１１４  空きブロック管理部
１１５  ＥＣＣ回路
１１５ａ  誤り訂正制御部
１１６  メモリインタフェース部
１１７  制御情報記憶部
１１７ａ、１１７ａ２、１１７ａ３、１１７ａ４  論物変換テーブル
１１７ｂ、１１７ｂ２、１１７ｂ３、１１７ｂ４、１１７ｂ５  物理ブロック管理テーブル
１１７ｃ、１１７ｃ２、１１７ｃ５、１１７ｃ６  優先書込み量情報
１１８  ＲＡＭ
１１９  ＲＯＭ
１２０  不揮発性メモリ
１２１  物理ブロック
１２２  物理ページ
２００  ホスト装置
２１１  ＣＰＵ
２１２  ＲＡＭ
２１３  ＲＯＭ
２１４  メモリインタフェース部
２１５  入力部
２１６  表示部
２１７  記憶部
３０１  論理アドレス
３０２  物理ブロックアドレス
３０３  物理ページアドレス
３０４  物理ブロック用途
３０５  有効データページ数
３０６  未書込み（空き）ページ数
３０７  優先書込み量設定値
３０８  優先書込み量現在値
【図１】
2017174387.tif 000003
【図２】
2017174387.tif 000004
【図３】
2017174387.tif 000005
【図４】
2017174387.tif 000006
【図５】
2017174387.tif 000007
【図６】
2017174387.tif 000008
【図７】
2017174387.tif 000009
【図８】
2017174387.tif 000010
【図９】
2017174387.tif 000011
【図１０】
2017174387.tif 000012
【図１１】
2017174387.tif 000013
【図１２】
2017174387.tif 000014
【図１３】
2017174387.tif 000015
【図１４】
2017174387.tif 000016
【図１５】
2017174387.tif 000017
【図１６】
2017174387.tif 000018
【図１７】
2017174387.tif 000019
【図１８】
2017174387.tif 000020
【図１９】
2017174387.tif 000021
【図２０】
2017174387.tif 000022
【図２１】
2017174387.tif 000023
【図２２】
2017174387.tif 000024
【図２３】
2017174387.tif 000025
【図２４】
2017174387.tif 000026
【図２５】
2017174387.tif 000027