(57)【要約】  メモリ領域をより有効に利用できるようにすべくメモリデバイスは、ファイルの制御情報（ＦＡＴ）を記憶するＦＡＴ領域（１５１）およびユーザデータ（ＵＤ）を記憶するＵＤ領域（１５２）を有するフラッシュメモリ（１５０）と、少なくともＦＡＴの一部または全部を記憶するＦＡＴ用キャッシュ領域（１４１）を有するキャッシュメモリ（１４０）と、ＦＡＴまたはＵＤの書き込みを行うための書き込みコマンドを受け付けるＩ／Ｆ部（１１０）と、書き込みコマンドに含まれるアドレスに基づき、書き込み対象のデータがＦＡＴであるかＵＤであるかの判定を行い、ＦＡＴであると判定された頻度または回数に基づいて、ＦＡＴ用キャッシュ領域（１４１）のサイズを決定するメモリ制御部（１３０）とを備える。
2016038765.tif 000002
【特許請求の範囲】
【請求項１】
ファイルの制御情報を記憶する制御情報用領域およびユーザデータを記憶するユーザデータ領域を有する第一不揮発性メモリと、
前記制御情報の一部または全部を記憶する制御情報用キャッシュ領域を有する第二不揮発性メモリと、
前記制御情報または前記ユーザデータの書き込みを行うための書き込みコマンドを受け付けるアクセス制御部と、
前記制御情報用キャッシュ領域のサイズを決定するメモリ制御部とを備え、
前記メモリ制御部は、
前記書き込みコマンドに含まれるアドレスに基づき、書き込み対象のデータが前記制御情報であるか前記ユーザデータであるかの判定を行う判定部と、
前記判定部において前記制御情報であると判定された頻度または回数に基づいて、前記制御情報用キャッシュ領域のサイズを決定する領域決定部とを有する、
メモリデバイス。
【請求項２】
前記第一不揮発性メモリは、ページ単位で一括して前記書き込みを行うように構成され、かつ、前記書き込みの回数に制限が設けられたメモリであり、
前記第二不揮発性メモリは、ページ単位以外の単位での前記書き込みが可能なメモリであり、
前記領域決定部は、ページ単位で前記制御情報用キャッシュ領域のサイズを決定する、
請求項１記載のメモリデバイス。
【請求項３】
前記第一不揮発性メモリは、フラッシュメモリであり、
前記第二不揮発性メモリは、抵抗変化メモリである、
請求項１記載のメモリデバイス。
【請求項４】
前記メモリ制御部は、現在の前記制御情報用キャッシュ領域の先頭アドレスを、前回の前記制御情報用キャッシュ領域の先頭アドレスとは異なるアドレスに割り当てる、
請求項３記載のメモリデバイス。
【請求項５】
前記領域決定部は、前記頻度または前記回数が多いほど前記制御情報用キャッシュ領域のサイズが大きくなるように、前記制御情報用キャッシュ領域のサイズを決定する、
請求項１記載のメモリデバイス。
【請求項６】
前記制御情報の前記書き込みは、予め定められた単位サイズで実行され、
前記ユーザデータの前記書き込みは、前記制御情報の単位サイズとは異なる単位サイズで実行される、
請求項１記載のメモリデバイス。
【請求項７】
前記領域決定部は、前記メモリデバイスの起動後、予め定められた数の前記書き込みコマンドに対する前記判定を用いて、前記制御情報用キャッシュ領域のサイズを決定する、
請求項１記載のメモリデバイス。
【請求項８】
ファイルの制御情報を記憶する制御情報領域およびユーザデータを記憶するユーザデータ領域を有する第一不揮発性メモリと、
前記制御情報の一部または全部を記憶する制御情報用キャッシュ領域を有する第二不揮発性メモリと、
前記制御情報または前記ユーザデータの書き込みを行うための書き込みコマンドを受け付けるアクセス制御部と、
前記制御情報用キャッシュ領域のサイズを決定するメモリ制御部とを備えるメモリデバイスにおいて実行されるメモリデバイスの制御方法であって、
前記メモリ制御部が、前記書き込みコマンドに含まれるアドレスに基づき、書き込み対象のデータが前記制御情報であるか前記ユーザデータであるかの判定を行うステップと、
前記メモリ制御部が、前記判定を行うステップにおいて前記制御情報であると判定された頻度または回数に基づいて、前記制御情報用キャッシュ領域のサイズを決定するステップとを実行する、
メモリデバイスの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、キャッシュメモリを備えたメモリデバイスおよびメモリデバイスの制御方法に関する。
【背景技術】
【０００２】
特許文献１には、例えば、主記憶メモリと、補助記憶メモリを備え、アクセス装置から入力されるデータを記憶する不揮発性記憶装置（メモリデバイス）が開示されている。メモリデバイスは、例えば、ＵＳＢメモリ等、持ち運び可能な補助記憶装置である。アクセス装置は、例えば、ＰＣ（ｐｅｒｓｏｎａｌ  ｃｏｍｐｕｔｅｒ）等のコンピュータ、カーナビゲーションシステム、あるいは、音響機器等である。【０００３】
メモリデバイスの主記憶メモリは、例えば、フラッシュメモリ等の不揮発性メモリを用いて構成される。補助記憶メモリは、ＲｅＲＡＭ（Ｒｅｓｉｓｔａｎｃｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）あるいはＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等を用いて構成される。【０００４】
アクセス装置から入力されるデータには、ＦＡＴ（ファイルアロケーションテーブル）およびユーザデータ（以降、適宜「ＵＤ」と略称する）が含まれる。ＦＡＴは、ファイルシステムを管理するためのテーブルである。ＵＤは、例えば、写真あるいはドキュメント等、コンテンツそのもののデータである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第４４１８４３９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来のメモリデバイスでは、メモリの有効利用が十分ではないという問題がある。【０００７】
本開示は、メモリ領域をより有効に利用することができるメモリデバイスおよびメモリデバイスの制御方法を提供する。
【課題を解決するための手段】
【０００８】
本開示におけるメモリデバイスは、ファイルの制御情報を記憶する制御情報用領域およびユーザデータを記憶するユーザデータ領域を有する第一不揮発性メモリと、前記制御情報の一部または全部を記憶する制御情報用キャッシュ領域を有する第二不揮発性メモリと、前記制御情報または前記ユーザデータの書き込みを行うための書き込みコマンドを受け付けるアクセス制御部と、前記制御情報用キャッシュ領域のサイズを決定するメモリ制御部とを備え、前記メモリ制御部は、前記書き込みコマンドに含まれるアドレスに基づき、書き込み対象のデータが前記制御情報であるか前記ユーザデータであるかの判定を行う判定部と、前記判定部において前記制御情報であると判定された頻度または回数に基づいて、前記制御情報用キャッシュ領域のサイズを決定する領域決定部とを有する。【０００９】
また、本開示におけるメモリデバイスの制御方法は、ファイルの制御情報を記憶する制御情報領域およびユーザデータを記憶するユーザデータ領域を有する第一不揮発性メモリと、前記制御情報の一部または全部を記憶する制御情報用キャッシュ領域を有する第二不揮発性メモリと、前記制御情報または前記ユーザデータの書き込みを行うための書き込みコマンドを受け付けるアクセス制御部と、前記制御情報用キャッシュ領域のサイズを決定するメモリ制御部とを備えるメモリデバイスにおいて実行されるメモリデバイスの制御方法であって、前記メモリ制御部が、前記書き込みコマンドに含まれるアドレスに基づき、書き込み対象のデータが前記制御情報であるか前記ユーザデータであるかの判定を行うステップと、前記メモリ制御部が、前記判定を行うステップにおいて前記制御情報であると判定された頻度または回数に基づいて、前記制御情報用キャッシュ領域のサイズを決定するステップとを実行する。
【発明の効果】
【００１０】
本開示におけるメモリデバイスおよびメモリデバイスの制御方法では、メモリ領域をより有効に利用することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施の形態１における不揮発性記憶装置（メモリデバイス）の構成を示すブロック図である。
【図２】図２は、キャッシュメモリの構成の一例を示す図である。
【図３】図３は、実施の形態における不揮発性記憶装置の動作の概要を示すフローチャートである。
【図４】図４は、第一書き込み処理および第二書き込み処理を含む書き込み処理の流れを時系列に示す図である。
【図５】図５は、実施の形態１において不揮発性記憶装置により実行される第一書き込み処理の処理手順を示すフローチャートである。
【図６Ａ】図６Ａは、第一書き込み処理におけるページアドレス（＝論理セクタアドレス）毎の書き込み回数の分布の一例を示すグラフである。
【図６Ｂ】図６Ｂは、図６Ａに示す書き込み回数の分布から求められるＦＡＴ用キャッシュ領域の割り当ての例を示す図である。
【図７Ａ】図７Ａは、第一書き込み処理におけるページアドレス毎の書き込み回数の分布の他の一例を示すグラフである。
【図７Ｂ】図７Ｂは、図７Ａに示す書き込み回数の分布から求められるＦＡＴ用キャッシュ領域の割り当ての例を示す図である。
【図８】図８は、実施の形態１において不揮発性記憶装置により実行される第二書き込み処理の処理手順を示すフローチャートである。
【図９】図９は、実施の形態１においてバッファに格納されたライトデータの一例を示す図である。
【図１０】図１０は、実施の形態１においてバッファに格納されたライトデータの一例を示す図である。
【図１１Ａ】図１１Ａは、実施の形態１におけるキャッシュメモリの状態を示す図である。
【図１１Ｂ】図１１Ｂは、実施の形態１におけるキャッシュメモリの状態を示す図である。
【図１１Ｃ】図１１Ｃは、実施の形態１におけるキャッシュメモリの状態を示す図である。
【図１２Ａ】図１２Ａは、実施の形態２における１回目の起動時のキャッシュメモリの状態を示す図である。
【図１２Ｂ】図１２Ｂは、実施の形態２における１回目の起動時のキャッシュメモリの状態を示す図である。
【図１３】図１３は、変形例においてフラッシュメモリが複数のメモリチップを用いて構成されている場合のデータの格納方法について示す図である。
【発明を実施するための形態】
【００１２】
［課題の詳細］
上述したメモリデバイスに用いられるフラッシュメモリは、書き込み済のビットに対して上書きができない。フラッシュメモリでは、既にデータが記憶されている記憶領域に新たにデータを上書き記憶するためには、まず新たなデータ消去済みブロック（新ブロック）を確保する必要がある。そして、更新するデータを前記新ブロックに書き込むだけでなく、更新しないデータを、現在記録されているブロックから前記新ブロックにコピーする。新ブロックへのコピーが完了したブロックは適切なタイミングでデータの消去が行われる。
【００１３】
また、フラッシュメモリの書き込み回数は、例えばＭＬＣ（Ｍｕｌｔｉｐｌｅ  Ｌｅｖｅｌ  Ｃｅｌｌ）では２〜３千回程度に限られているため、書き込み回数を可能な限り削減することが、メモリデバイスの利用可能期間を長くするという観点で重要である。
【００１４】
特許文献１に記載のメモリデバイスでは、頻繁に書き換えられるＦＡＴの主記憶メモリへの記録優先度を、ＵＤの記録優先度よりも低く設定することで、フラッシュメモリの書き換え回数を抑制している。
【００１５】
この場合、補助記憶メモリは、キャッシュメモリとして利用される。また、このようなキャッシュメモリは、例えば、抵抗変化メモリ（ＲｅＲＡＭ）等、フラッシュメモリよりも書き込み制限回数が多く、ビット単位での上書きが可能なメモリが利用される。この場合、一般的に、ＦＡＴあるいはＵＤに限らず、アクセス装置から入力されたデータを一旦補助記憶メモリ（例えば、キャッシュメモリ）に保持しておくと、以後、同じアドレスのデータを受信した際、補助記憶メモリに保持しておいたデータに対して上書きが可能である。
【００１６】
ここで、従来は、キャッシュメモリにおいて、ＦＡＴに割り当てられるＦＡＴ用キャッシュ領域のサイズとＵＤに割り当てられるＵＤ用キャッシュ領域のサイズとは固定されていた。なお、特許文献１には、入力されたＦＡＴおよびＵＤに対してそれぞれどれくらいのサイズの領域が割り当てられているのかは開示されていない。
【００１７】
本発明者は、ＦＡＴには、頻繁に書き換えられるデータと比較的書き換え回数の少ないデータとがあり、ＦＡＴのうち、頻繁に書き換えられるアドレスが、メモリデバイスが装着されるアクセス装置の構成等に応じて変化することを見いだした。ＦＡＴ領域のサイズが固定されていると、ＦＡＴのうち頻繁に書き換えられるデータのサイズがＦＡＴ領域のサイズよりも小さい場合、ＦＡＴ領域のうちの一部の領域は、データの書き換えがほとんど発生せず有効利用されないという問題がある。さらに、ＦＡＴのうち頻繁に書き換えられるデータのサイズがＦＡＴ領域のサイズよりも大きい場合、キャッシュ領域が満杯のために、キャッシュに格納していないアドレスデータを受信したとき、キャッシュ領域の一部のデータをフラッシュに記憶させて、新たに受信したＦＡＴデータのためにキャッシュ領域を開放する必要が生じ、フラッシュメモリの書き換え回数が大きくなるという問題がある。
【００１８】
より具体的には、例えばキャッシュメモリの容量を５１２ＫＢとし、ＦＡＴのみキャッシュメモリに格納できるとする。このとき、特定の６４ＫＢの範囲のデータが、頻繁に上書きを繰り返されるようなデータである場合は、５１２ＫＢのキャッシュのうち６４ＫＢ分しか有効利用されないという問題がある。このような場合には、例えば、キャッシュメモリの領域のうち、頻繁に書き換えられる６４ＫＢ分の領域の残りの領域をＵＤ領域として設定すれば、キャッシュメモリの有効利用が可能になると考えられる。さらに、ＵＤの同じアドレスへの書込みの際は、キャッシュへの上書きが可能になるので、フラッシュメモリの書き換え回数を削減することができる。
【００１９】
挿抜可能なメモリデバイスの場合、多様なアクセス装置に装着される。前記メモリデバイスへの書き込みパターン、つまり、ＦＡＴにおいて頻繁に書き換えられるデータのアドレスおよびサイズはアクセス装置により千差万別である。このため、ＦＡＴを保持できるＦＡＴ領域のサイズを予め設定した場合、前述の通りキャッシュ領域を有効に利用できない、あるいは、キャッシュ領域が満杯で都度フラッシュへの書き込みが必要になるなど、結果的に最適なフラッシュ書き込みが実現できないという問題がある。
【００２０】
以下、適宜図面を参照しながら、実施の形態を詳細に説明する。但し、必要以上に詳細な説明は省略する場合がある。例えば、既によく知られた事項の詳細説明や実質的に同一の構成に対する重複説明を省略する場合がある。これは、以下の説明が不必要に冗長になるのを避け、当業者の理解を容易にするためである。
【００２１】
なお、発明者は、当業者が本開示を十分に理解するために添付図面および以下の説明を提供するのであって、これらによって請求の範囲に記載の主題を限定することを意図するものではない。
【００２２】
（実施の形態１）
以下、図１〜８を用いて、実施の形態１を説明する。
【００２３】
本実施の形態のメモリデバイスは、キャッシュメモリおよびフラッシュメモリを備える不揮発性記憶装置である。また、アクセス装置は、ＦＡＴおよびＵＤを送信する装置である。
【００２４】
［１−１．構成］
図１は、実施の形態１にかかる不揮発性記憶装置に関するブロック図である。
【００２５】
本実施の形態における不揮発性記憶装置１００は、Ｉ／Ｆ（インタフェース）部１１０、バッファ１２０、メモリ制御部１３０、キャッシュメモリ１４０、および、フラッシュメモリ１５０を備えている。またこれらの構成要素は、不揮発性記憶装置１００内でメモリバス１６０によって互いに接続されている。
【００２６】
本実施の形態では、ＦＡＴおよびＵＤを含むデータは、ページ単位で管理されている。本実施の形態では、１ページは１６ＫＢである。
【００２７】
ＦＡＴは、上述したように、ファイルの制御情報の一例である。ＦＡＴは、１ページのサイズ（１６ＫＢ）よりも小さなサイズで更新される場合が多いため、１ページ単位で処理される。ＦＡＴの処理単位をＦＡＴページと称する。
【００２８】
ＵＤは、上述したように、ユーザデータであり、ＦＡＴに対し比較的大きなサイズのデータを高速に読み書きする必要があることから、複数ページを単位として（本実施の形態では２ページ単位とする）処理される。ＵＤの処理単位をＵＤページと称する。なお、後述する「フラッシュメモリの構成」の説明において詳述するが、ＵＤの処理単位（例えば、書き込み単位）は、フラッシュメモリ１５０を構成するメモリチップの並列数に依存する。
【００２９】
［１−１−１．Ｉ／Ｆ部の構成］
Ｉ／Ｆ部１１０は、ＦＡＴまたはＵＤの書き込みを行うための書き込みコマンドを含むコマンドを受け付けるアクセス制御部の一例である。Ｉ／Ｆ部１１０は、アクセス装置２００に接続され、アクセス装置２００から入力されるコマンドおよびデータを受け付けるように構成されている。Ｉ／Ｆ部１１０は、アクセス装置２００から送信されたコマンドを解析する。Ｉ／Ｆ部１１０は、当該コマンドがデータの書き込み処理を指示するライトコマンドであるか、データの読み出し処理を指示するリードコマンドであるか、あるいは、その他のコマンドであるかを示すコマンドの解析結果をメモリ制御部１３０に伝達する。
【００３０】
アクセス装置２００から送信されたコマンドがライトコマンドであるときは、Ｉ／Ｆ部１１０は、引き続きアクセス装置２００から送信される書き込み対象のライトデータを受信してバッファ１２０に格納する。アクセス装置２００から受け付けたコマンドがリードコマンドであるときは、Ｉ／Ｆ部１１０は、メモリ制御部１３０によりバッファ１２０に格納されたデータを読み出し対象のリードデータとして、アクセス装置２００に送信する。
【００３１】
［１−１−２．バッファおよびデータ（ＵＤ、ＦＡＴ）の構成］
バッファ１２０は、Ｉ／Ｆ部１１０から入力されたライトデータまたはＩ／Ｆ部１１０に対して出力されるリードデータを一時的に保持するメモリである。
【００３２】
［１−１−３．キャッシュメモリの構成］
キャッシュメモリ１４０は、図１に示すように、ＦＡＴの一部または全部を記憶するＦＡＴ用キャッシュ領域１４１を有する第二不揮発性メモリの一例である。ＦＡＴ用キャッシュ領域１４１は、制御情報用キャッシュ領域の一例である。キャッシュメモリ１４０は、さらに、ＵＤの一部または全部を記憶するＵＤ用キャッシュ領域１４２を有する場合がある。キャッシュメモリ１４０は、ＲｅＲＡＭ（Ｒｅｓｉｓｔａｎｃｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）をはじめとする、ビット単位でアクセスが可能な高速の不揮発性メモリを用いて構成される。なお、本実施の形態では、ＦＡＴ用キャッシュ領域１４１のサイズは可変である。これに伴い、ＵＤ用キャッシュ領域１４２のサイズも可変になる。
【００３３】
図２は、キャッシュメモリの構成の一例を示す図である。図２に示すように、キャッシュメモリ１４０のメモリ領域には、ＦＡＴ用キャッシュ領域１４１と、ＵＤ用キャッシュ領域１４２とが含まれる。
【００３４】
図２では、ＦＡＴ用キャッシュ領域１４１は、ＦＡＴの書き込み単位が１ページ単位であるため、１ページ（本実施の形態では１６ＫＢ）を１単位として管理される（以後、この管理単位を面と呼ぶ）。言い換えると、ＦＡＴ用キャッシュ領域１４１は、１または複数のＦＡＴページで構成される。ＦＡＴページのサイズは、全て１ページである。また、図２では、ＵＤ用キャッシュ領域１４２は、ＵＤの書き込み単位が２ページ単位であるため、２ページ（本実施の形態では、３２ＫＢ）を１単位（１面）として管理される。言い換えると、ＵＤ用キャッシュ領域１４２は、１または複数のＵＤページで構成される。１面あたりのＵＤページのサイズは、全て２ページである。
【００３５】
図２では、例えば、キャッシュメモリ１４０のサイズを５１２ＫＢとし、ＦＡＴ用キャッシュ領域１４１として、１２８ＫＢの領域を確保した場合を示している。このとき、ＦＡＴ用キャッシュ領域１４１は、１２８ＫＢ／１６ＫＢ＝８面のＦＡＴページ１４１ａ〜１４１ｈで管理される。
【００３６】
また、この時、ＵＤ用キャッシュ領域１４２には、５１２ＫＢ−１２８ＫＢ＝３８４ＫＢの領域が確保される。このため、ＵＤ用キャッシュ領域１４２は、３８４ＫＢ／３２ＫＢ＝１２面のＵＤページ１４２ａ〜１４２ｌで管理される。
【００３７】
［１−１−４．フラッシュメモリの構成］
フラッシュメモリ１５０は、ＦＡＴを記憶するＦＡＴ領域１５１およびＵＤを記憶するＵＤ領域１５２を有する第一不揮発性メモリの一例である。ＦＡＴ領域は、制御情報領域の一例である。ＵＤ領域は、ユーザデータ領域の一例である。
【００３８】
フラッシュメモリ１５０は、複数のメモリチップを用いて構成されている。なお、昨今の不揮発性記憶装置１００においては、高速な読み書きを実現するために、メモリバス１６０に対して複数のメモリチップを並列に配置して１つのフラッシュメモリ１５０を構成することが一般的である。本実施の形態では、フラッシュメモリ１５０が複数のメモリチップを備える場合について説明する。
【００３９】
図１３は、フラッシュメモリ１５０が複数のメモリチップを用いて構成されている場合のデータの格納方法について示す図である。
【００４０】
図１３の例では、メモリ制御部１３０に対して、２個のフラッシュメモリチップ１５０ａおよび１５０ｂを配置してフラッシュメモリ１５０を構成している。このとき並列数が２であると言う。
【００４１】
フラッシュメモリチップ１５０ａおよび１５０ｂは１ページ単位で分割され、各々にページ番号が付与されている。図１３において、（）内の数値がページ番号である。本実施の形態では、ページサイズは１６ＫＢとする。
【００４２】
ＵＤページは、フラッシュメモリチップ１５０ａおよび１５０ｂの同じページ番号に属する複数のページから構成される。図１３の例では、ＵＤページの１つは、例えば、フラッシュメモリチップ１５０ａのページ番号（２）のページと、フラッシュメモリチップ１５０ｂのページ番号（２）のページとで構成される。したがって、図１３の例では、１ページのサイズが１６ＫＢであり、並列数が２としているので、ＵＤページのサイズは１６ＫＢ×２＝３２ＫＢとなる。
【００４３】
ＦＡＴページは、本実施の形態では、１６ＫＢ単位で管理される。したがって、例えば、ＦＡＴページの１つは、フラッシュメモリチップ１５０ａのページアドレス（１）のページで構成される。なお本実施の形態においては、複数のフラッシュメモリチップ１５０ａおよび１５０ｂからなるフラッシュメモリ１５０であっても、ＦＡＴページは１個のフラッシュメモリチップ１５０ａまたは１５０ｂに割り当てられるが、他の割り当て方法であっても構わない。
【００４４】
フラッシュメモリ１５０では、ＦＡＴ領域１５１およびＵＤ領域１５２のサイズ、ここでは、ページ数は固定されている。このため、ＦＡＴ領域１５１およびＵＤ領域１５２は、論理セクタアドレスにより一意的に分割される。本実施の形態においては、論理セクタアドレスの先頭（図１では０ｘ００００００００）から第一の論理セクタアドレス（同０ｘ００００３ＦＦＦ）までをＦＡＴ領域１５１とする。さらに、第一の論理セクタアドレスに続く論理セクタアドレス（同０ｘ００００４０００）から第二の論理セクタアドレス（同０ｘ００ＦＦＦＦＦＦ）までをＵＤ領域１５２とする。なお、ＦＡＴ領域１５１およびＵＤ領域１５２の分け方は本実施の形態の方式に限らない。
【００４５】
なお、論理セクタアドレスとフラッシュメモリ１５０上の実アドレスとは必ずしも一致せず、アドレス管理部１３１により対応関係が管理されている。
【００４６】
［１−１−５．メモリ制御部の構成］
メモリ制御部１３０は、Ｉ／Ｆ部１１０から伝達されたコマンドの解析結果を受け付け、キャッシュメモリ１４０およびフラッシュメモリ１５０へのデータの書込みおよびキャッシュメモリ１４０およびフラッシュメモリ１５０からのデータの読み出しを制御する。
【００４７】
メモリ制御部１３０は、アクセス装置２００から発行されたコマンドがライトコマンドである場合は、ライトコマンドに含まれるアドレスに基づいて、Ｉ／Ｆ部１１０により受信されバッファ１２０にいったん格納されたライトデータを、キャッシュメモリ１４０またはフラッシュメモリ１５０に書き込む書き込み処理を実行する。当該書き込み処理の詳細については後述する。
【００４８】
メモリ制御部１３０は、アクセス装置２００から発行されたコマンドがリードコマンドである場合は、リードコマンドに含まれる論理セクタアドレス（セクタは５１２バイト、以下、適宜「セクタアドレス」と略称する）により示されるデータを、キャッシュメモリ１４０またはフラッシュメモリ１５０から読み出してバッファ１２０に記憶する。
【００４９】
メモリ制御部１３０は、アドレス管理部１３１と、キャッシュ管理部１３２とを備える。キャッシュ管理部１３２は、ＦＡＴサイズ決定部１３３を備える。
【００５０】
アドレス管理部１３１は、ライトコマンドから取得されるライトデータの論理セクタアドレスと、実際にデータが書き込まれるキャッシュメモリ１４０およびフラッシュメモリ１５０のアドレスである実アドレスとの対応関係を管理している。言い換えると、アドレス管理部１３１は、論理セクタアドレス毎に、当該論理セクタアドレスのデータを記憶する領域を示す実アドレスが記憶されたテーブルを保持している。アドレス管理部１３１を設けることで、アクセス装置２００がキャッシュメモリ１４０を意識することなく当該不揮発性記憶装置１００を利用できる。
【００５１】
本実施の形態のアドレス管理部１３１は、さらに、論理セクタアドレスに基づき、ライトデータがＦＡＴであるかＵＤであるかを判定する判定部として動作する。
【００５２】
なお、本実施形態では、論理セクタアドレスに基づき、ライトデータがＦＡＴであるかＵＤであるかを判定しているが、ライトコマンドにＦＡＴかＵＤかを示す情報を付加し、その付加情報を基に判定してもよい。
【００５３】
キャッシュ管理部１３２は、キャッシュメモリ１４０の管理を行う。キャッシュ管理部１３２は、ＦＡＴサイズ決定部１３３を備える。ＦＡＴサイズ決定部１３３は、アドレス管理部１３１においてＦＡＴであると判定された頻度または回数に基づいて、ＦＡＴ用キャッシュ領域１４１のサイズを決定する領域決定部の一例である。本実施の形態では、ＦＡＴサイズ決定部１３３は、ＦＡＴの書き込み処理の単位がＦＡＴページ（１ページ）単位であるため、ＦＡＴ用キャッシュ領域のサイズを１ページ単位で決定する。
【００５４】
［１−２．動作］
不揮発性記憶装置１００の動作について説明する。
【００５５】
［１−２−１．全体動作］
図３は、本実施の形態における不揮発性記憶装置１００の動作の概要を示すフローチャートである。図４は、第一書き込み処理および第二書き込み処理を含む書き込み処理の流れを時系列に示す図である。図４において、右向きのホームベース型の矢印により表わされるライトコマンド４００、ライトデータ４２０および停止コマンド４３０は、アクセス装置２００から不揮発性記憶装置１００に対して出力されるデータを示している。左向きのホームベース型の矢印により表わされるレスポンス４１０は、不揮発性記憶装置１００からアクセス装置２００に対して出力されるデータを示している。
【００５６】
不揮発性記憶装置１００は、アクセス装置２００により起動されたときに、初期化処理を実行する（Ｓ１０）。初期化処理では、不揮発性記憶装置１００は、少なくとも、キャッシュメモリ１４０に記録されている有効なデータをフラッシュメモリ１５０の所定のアドレスに書き込む処理、および、有効なデータをフラッシュメモリ１５０に書き込んだ後に、キャッシュメモリ１４０のデータをすべて無効化（すなわちすべてのキャッシュ面を空き状態とする）する処理を実施する。
【００５７】
初期化処理の終了後、アクセス装置２００からコマンドが発行されると（Ｓ１１のＹｅｓ）、不揮発性記憶装置１００は、Ｉ／Ｆ部１１０により、当該コマンドの解析を行う（Ｓ１２）。当該コマンドには、図４に示すように、コマンドインデックス４０１あるいは４０３と、論理セクタアドレス４０２とが含まれる。コマンドインデックスは、コマンドの種別を示すデータであり、本実施の形態では、ライトコマンド、停止コマンドおよびリードコマンドが含まれる。停止コマンドは、ライトコマンドによる書き込み処理を停止させるためのコマンドである。コマンドがライトコマンドである場合、論理セクタアドレスには、書き込み処理を開始する先頭の論理セクタアドレスが格納される。コマンドがリードコマンドである場合、論理セクタアドレスには、読み出し処理を開始する先頭の論理セクタアドレスが格納される。コマンドが停止コマンドである場合は、論理セクタアドレスが格納される領域には、ダミーデータが格納される。コマンドが停止コマンドである場合、論理セクタアドレスが格納される領域にライトデータのサイズ等、他のデータを格納しても構わない。
【００５８】
不揮発性記憶装置１００は、Ｉ／Ｆ部１１０によるコマンドインデックスの解析から、コマンドがライトコマンド４００であると判定すると（図３のＳ１３のライトコマンド）、ライトコマンド４００を受信したことを示すレスポンス４１０をアクセス装置２００に対して出力する（Ｓ１４）。さらに、Ｉ／Ｆ部１１０においてコマンドがライトコマンド４００であると判定された場合、アドレス管理部１３１は、ライトコマンド４００に含まれる論理セクタアドレス４０２から、ライトデータがＦＡＴであるかＵＤであるかを判定する。アドレス管理部１３１は、例えば、論理セクタアドレス４０２が０ｘ００００００００〜０ｘ００００３ＦＦＦの場合、ライトデータがＦＡＴであると判定する。アドレス管理部１３１は、論理セクタアドレス４０２が０ｘ００００４０００〜０ｘ００ＦＦＦＦＦＦの場合、ライトデータがＵＤであると判定する。
【００５９】
不揮発性記憶装置１００は、ライトコマンド４００を受信すると、書き込み処理を実行する。ここで、書き込み処理には、ＦＡＴ用キャッシュ領域１４１のサイズが決定される前に実行される第一書き込み処理と、ＦＡＴ用キャッシュ領域１４１のサイズが決定された後に実行される第二書き込み処理とが含まれる。第一書き込み処理には、ＦＡＴ用キャッシュ領域１４１のサイズを決定するためのＦＡＴサイズ決定処理が含まれる。キャッシュメモリ１４０におけるＦＡＴ用キャッシュ領域１４１のサイズは、第一書き込み処理の総数に対する論理セクタアドレス毎のＦＡＴ領域への書き込み頻度に応じて決定される。従って、不揮発性記憶装置１００は、不揮発性記憶装置１００がアクセス装置に装着された時等、不揮発性記憶装置１００への電源の供給が開始されたときから、アクセス装置２００により予め定められた規定数のライトコマンドが発行されるまで第一書き込み処理を実行し、その後、ＦＡＴサイズ決定処理を実行する。ＦＡＴサイズ決定処理の実行後は、ライトコマンドの発行に対して第二書き込み処理を実行する。
【００６０】
不揮発性記憶装置１００は、ライトコマンドを受信した回数、つまり、ライトコマンドの発行数が予め定められた規定数以下の場合は（Ｓ１５の規定数以下）、第一書き込み処理を実行する（Ｓ１６）。第一書き込み処理では、ライトコマンドの発行数が規定数である場合に、ＦＡＴサイズ決定処理を実行する。不揮発性記憶装置１００は、ライトコマンドの発行数が規定数よりも大きい場合は（Ｓ１５の規定数より大）、第二書き込み処理を実行する（Ｓ１７）。第一書き込み処理、ＦＡＴサイズ決定処理および第二書き込み処理の詳細については後述する。
【００６１】
不揮発性記憶装置１００は、Ｉ／Ｆ部１１０によるコマンドインデックスの解析から、コマンドがリードコマンドであると判定すると（Ｓ１３のリードコマンド）、リードコマンドを受信したことを示すレスポンスをアクセス装置２００に対して出力する（Ｓ１８）。不揮発性記憶装置１００は、論理セクタアドレスを用いて読み出し処理を開始する（Ｓ１９）。
【００６２】
［１−２−２．第一書き込み処理］
図５は、本実施の形態において不揮発性記憶装置１００により実行される第一書き込み処理の処理手順を示すフローチャートである。
【００６３】
第一書き込み処理では、ライトデータは全てフラッシュメモリ１５０に書き込まれる。
【００６４】
不揮発性記憶装置１００は、Ｉ／Ｆ部１１０により、図４に示すレスポンス４１０を送信した後にアクセス装置２００から出力されたデータが、ライトデータ４２０であるか停止コマンドであるかを解析する（図５のＳ２１）。Ｉ／Ｆ部１１０は、図４に示すコマンドインデックス４３１が受信したデータに含まれる場合に停止コマンドであると判定し、これ以外の場合は、ライトデータであると判定する。
【００６５】
メモリ制御部１３０は、図５に示すように、ライトデータ４２０がＦＡＴである場合（Ｓ２２のＹｅｓ）、ＦＡＴ用キャッシュ領域１４１にライトデータ４２０を書き込む（Ｓ２３）。ライトデータ４２０がＦＡＴであるかＵＤであるかは、ステップＳ１４におけるアドレス管理部１３１の判定結果を利用する。
【００６６】
メモリ制御部１３０は、ＦＡＴ用キャッシュ領域１４１に、同じアドレスのライトデータが記憶されている場合は、当該ライトデータを上書きする。メモリ制御部１３０は、ＦＡＴ用キャッシュ領域１４１に同じアドレスのライトデータが記憶されていない場合であって、ＦＡＴ用キャッシュ領域１４１に空き領域があるときは、ＦＡＴ用キャッシュ領域１４１の空き領域に当該ライトデータを書き込む。メモリ制御部１３０は、ＦＡＴ用キャッシュ領域１４１に同じアドレスのライトデータが記憶されていない場合であって、ＦＡＴ用キャッシュ領域１４１に空き領域がないときは（ＦＡＴ用キャッシュ領域においてキャッシュあふれが生じたときは）、ＦＡＴ用キャッシュ領域１４１に記憶されているデータのうち、更新時間が最も古いデータをフラッシュメモリ１５０に移動させる。さらに、メモリ制御部１３０は、移動させたデータが記憶されていた領域に、当該ライトデータを上書きする。
【００６７】
不揮発性記憶装置１００は、ライトデータ４２０がＵＤである場合（Ｓ２２のＮｏ）、ＵＤ領域１５２にライトデータ４２０を書き込む（Ｓ２４）。
【００６８】
不揮発性記憶装置１００は、受信したデータが停止コマンドである場合（Ｓ２１の停止コマンド）、ライトコマンドの発行回数を計数する（Ｓ２５）。さらに、不揮発性記憶装置１００は、停止コマンドにより停止されたライトコマンドにより書き込まれたデータがＦＡＴである場合、ページ毎にライトコマンドの発行回数を計数する。具体的には、ＦＡＴサイズ決定部１３３は、ライトコマンド４００に含まれている論理セクタアドレスから１６ＫＢ＝０ｘ２０セクタに満たない値は切り捨てたページアドレスを記録する。
【００６９】
不揮発性記憶装置１００は、ライトコマンドの発行回数が規定数に達した場合は、ＦＡＴサイズ決定処理を実行する（Ｓ３０）。
【００７０】
［１−２−３．ＦＡＴ用キャッシュ領域のサイズの決定（ＦＡＴサイズ決定処理）］
ＦＡＴサイズ決定部１３３は、ＦＡＴのページアドレス毎の第一書き込み処理における書き込み回数の分布から、キャッシュメモリ１４０のうち、ＦＡＴ用キャッシュ領域１４１に割り当てる面数を決定する。
【００７１】
ここでは、ＦＡＴサイズ決定部１３３は、更新頻度の高い、つまり、書き込み回数の大きいページアドレス（＝論理セクタアドレス）から順に書き込み回数を加算し、その合計が所定値以上となったときのページアドレスの面数をＦＡＴ用キャッシュの面数とする。
【００７２】
具体的には、ＦＡＴサイズ決定部１３３は、書き込み回数の大きいページアドレスから順に、書き込み回数を加算していく。ＦＡＴサイズ決定部１３３は、書き込み回数の累積値が９０％以上になったときに、書き込み回数の累積を行ったページアドレスの数を、キャッシュメモリ１４０においてＦＡＴ用キャッシュ領域１４１に割り当てる面数に設定する。
【００７３】
図６Ａは、第一書き込み処理におけるページアドレス（＝論理セクタアドレス）毎の書き込み回数の分布の一例を示すグラフである。図６Ａでは、第一書き込み処理を実行する規定数を１００回としている。図６Ａでは、ページアドレス０ｘ００００２０００、０ｘ００００２０３０、０ｘ００００２０１０、０ｘ００００２０２０、０ｘ００００２０４０の順に書き込み回数が多くなっている。図６Ａでは、書込み回数の大きいページアドレスから順に書込み回数を加算すると、ページアドレス０ｘ００００２０２０までの書き込み回数を加算したときに、１００回の９０％である９０回に達する。このときのページアドレス数は、０ｘ００００２０００、０ｘ００００２０３０、０ｘ００００２０１０および０ｘ００００２０２０の４となる。この数を、キャッシュメモリ１４０においてＦＡＴ用キャッシュ領域１４１に割り当てる面数とする。
【００７４】
この結果、キャッシュメモリ１４０のサイズが５１２ＫＢのとき、ＦＡＴ用キャッシュ領域１４１は４面、すなわち合計６４ＫＢとなる。一方ＵＤ用キャッシュ領域１４２のサイズは、５１２ＫＢ−６４ＫＢ＝４４８ＫＢであり、ＵＤ用キャッシュの面数は４４８ＫＢ／３２ＫＢ＝１４面となる。
【００７５】
図６Ｂは、図６Ａに示す書き込み回数の分布から求められるＦＡＴ用キャッシュ領域１４１の割り当ての例を示す図である。図６Ｂでは、ＦＡＴ用キャッシュ領域１４１として、４面のＦＡＴページ１４１ａ〜１４１ｄが割り当てられている。また、ＵＤ用キャッシュ領域１４２として、１４面のＵＤページ１４２ａ〜１４２ｎが割り当てられている。
【００７６】
図７Ａは、第一書き込み処理におけるページアドレス毎の書き込み回数の分布の他の一例を示すグラフである。図７Ａでは、図６Ａの場合と同様に、第一書き込み処理を実行する規定数を１００回としている。図７Ａでは、書き込み回数の大きい上位９ページアドレス分の書き込み回数を加算すると９０になる。よって、ＦＡＴ用キャッシュ領域１４１として少なくとも９面分のＦＡＴページを確保すればよいことがわかる。
【００７７】
ここで、ＦＡＴ用キャッシュ領域１４１として１６ＫＢ×９面確保した場合、ＵＤ用キャッシュ領域１４２として割り当てられる容量は、５１２ＫＢ−１６ＫＢ×９＝３６８ＫＢとなる。このとき、ＵＤ用キャッシュ領域１４２の面数は３６８ＫＢ／３２ＫＢ＝１１．５となり、この０．５面分は、ＵＤ用キャッシュ領域１４２として利用できない。
【００７８】
また、一般に、キャッシュメモリ１４０においてＦＡＴ用キャッシュ領域１４１を除く領域をＵＤ用キャッシュ領域１４２として割り当てることから、ＵＤ用キャッシュ領域１４２に割り当てる領域のサイズが、ＵＤページのサイズの倍数となるように、ＦＡＴ用キャッシュの面数を確保することが好ましい。また、上記のようにＵＤ用キャッシュ領域１４２に割り当てられない場合には、ＦＡＴ用キャッシュ領域１４１として割り当てることが好ましい。
【００７９】
したがって、図７Ａにおいて、書き込み回数の合計が９０になる上位９ページアドレス分ではなく、書き込み回数の合計が９５になる上位１０ページアドレス分のＦＡＴページを確保、つまり、ＦＡＴ用キャッシュ領域１４１に割り当てる面数を１０に設定すればよい。
【００８０】
図７Ｂは、図７Ａに示す書き込み回数の分布から求められるＦＡＴ用キャッシュ領域１４１の割り当ての例を示す図である。図７Ａに示す例においては、ＦＡＴ用キャッシュ領域１４１の面数を、２ページ単位で設定する。２ページは、ＦＡＴの処理単位のページ数１とＵＤの処理単位のページ数２の最小公倍数である。ＦＡＴサイズ決定部１３３は、図７Ａの場合、ＦＡＴ用キャッシュ領域１４１のサイズを１０面（ＦＡＴページ１４１ａ〜１４１ｊ）に決定する。ＦＡＴサイズ決定部１３３は、ＵＤ用キャッシュ領域１４２のサイズを１１面に決定する。これにより、必要なＦＡＴ用キャッシュ領域１４１の面数を確保しつつ、利用されない領域が発生せず、キャッシュメモリ１４０を有効に利用できる。
【００８１】
メモリ制御部１３０は、更新頻度の高いページアドレスのデータをフラッシュメモリ１５０からキャッシュメモリ１４０上に移動させ、必要に応じてＦＡＴ領域が連続するように、フラッシュメモリ１５０内でＦＡＴの移動を行う。
【００８２】
ＦＡＴ用キャッシュ領域１４１のサイズの決定後、さらにライトコマンドを受信したときは、ＦＡＴおよびＵＤそれぞれについて、後述する第二書き込み処理を実行する。
【００８３】
［１−２−４．第二書き込み処理］
図８は、本実施の形態において不揮発性記憶装置１００により実行される第二書き込み処理の処理手順を示すフローチャートである。第二書き込み処理では、ライトデータは、キャッシュメモリ１４０およびフラッシュメモリ１５０に書き込まれる。ここでは、図６Ａおよび図６Ｂに示すように、ＦＡＴ用キャッシュ領域１４１のサイズが４面である場合を例に説明する。
【００８４】
アクセス装置２００からデータが出力されると、不揮発性記憶装置１００は、当該データがライトデータ４２０であるか停止コマンドであるかを判定する（Ｓ４１）。
【００８５】
アクセス装置２００から出力されたデータが図４に示すライトデータ４２０である場合（Ｓ４１のライトデータ）、不揮発性記憶装置１００は、ライトデータ４２０をバッファ１２０に一時的に保持する。なお、ライトデータ４２０は一度に送信される場合もあれば、いくつかのブロックに分割されて送信される場合もある。
【００８６】
さらに、アドレス管理部１３１は、ライトデータ４２０がＦＡＴであるかＵＤであるかを判定する（Ｓ４２）。バッファ１２０に格納されたライトデータ４２０は、アドレス管理部１３１による判定結果に応じて、キャッシュメモリ１４０もしくはフラッシュメモリ１５０に書き込まれる（Ｓ４３、Ｓ４４）。なお、バッファ１２０も、例えば、１ページ毎等、所定のサイズ毎の小領域に分割されて管理されている。
【００８７】
図９および図１０は、本実施の形態においてバッファ１２０に格納されたライトデータ４２０の一例を示す図である。
【００８８】
図９および図１０に示すように、ライトデータ４２０は、ＦＡＴページもしくはＵＤページ（前者は１６ＫＢ、後者は３２ＫＢ）の境界にアラインされた形でバッファ１２０に格納される。また、不揮発性記憶装置１００は、ライトデータ４２０を順次バッファ１２０に格納する際に、ライトデータ４２０が次のＦＡＴもしくはＵＤの書き込み境界を越えたとき、書き込み境界より前のデータはキャッシュメモリ１４０に保持せず、直接フラッシュメモリ１５０に書き込む。
【００８９】
ライトデータ４２０が書き込み境界を越えない段階で停止コマンド４３０を受信したとき、不揮発性記憶装置１００は、ライトデータ４２０を上述した書き込み単位でキャッシュメモリ１４０に書き込む。
【００９０】
ここで、図９に示すように、セクタアドレスが０ｘ０００１００３Ａの場合を考える。このとき、０ｘ０００１００３Ａは０ｘ００００３ＦＦＦよりも大きいため、当該セクタアドレスに格納されるデータは、アドレス管理部１３１により、ＵＤであると判定される。従って、バッファ１２０において、ＵＤの処理単位であるＵＤページ（３２ＫＢ＝０ｘ４０セクタ）の境界にアラインするために、バッファアドレス０ｘ３Ａよりライトデータ４２０を格納する。
【００９１】
ライトデータ４２０の書き込みが、バッファアドレス０ｘ００４０、すなわちＵＤの書き込み単位の境界に達しても停止コマンド４３０を受信しなかったとき、不揮発性記憶装置１００は、継続してライトデータ４２０をバッファ１２０に格納する。このとき、バッファ１２０上の０ｘ００３Ａから０ｘ００４０までのデータは、キャッシュメモリ１４０に格納されずに、フラッシュメモリ１５０の所定のセクタアドレスに対して直接書き込まれる。
【００９２】
一方、ライトデータ４２０がバッファアドレス０ｘ００６０に達したときに停止コマンド４３０を受信したとき、バッファ１２０上の０ｘ００４０から０ｘ００６０までのデータはキャッシュメモリ１４０へ転送される。
【００９３】
また、他の一例として、図１０に示すように、セクタアドレスが０ｘ００００１０１２の場合を考える。このとき、０ｘ００００１０１２は０ｘ００００３ＦＦＦよりも小さいため、当該セクタアドレスに格納されるデータは、アドレス管理部１３１により、ＦＡＴであると判定される。従ってバッファ１２０において、ＦＡＴの書き込み単位であるページ（１６ＫＢ＝０ｘ２０セクタ）の境界にアラインするために、バッファアドレス０ｘ１２より受信したライトデータを格納する。
【００９４】
当該ライトデータの書き込みが、バッファアドレス０ｘ００２０に達したときに停止コマンド４３０を受信したとき、バッファ１２０上の０ｘ００１２から０ｘ００２０までのデータはキャッシュメモリ１４０へ転送される。なお、本実施の形態では、ＦＡＴの場合、境界を越えない場合を例に説明する。メモリ制御部１３０は、ライトコマンドに含まれるセクタアドレスに対応するデータが、既にキャッシュメモリ１４０に記憶されている場合は、当該キャッシュメモリ１４０に記憶されたデータにＩ／Ｆ部１１０が受け付けたライドデータを上書きする。キャッシュメモリ１４０にライトコマンドに含まれるセクタアドレスに対応するデータが記憶されていない場合は、更新順が最も古いデータをフラッシュメモリ１５０に転送し、当該古いデータが格納されていた領域にライトデータを上書きする。
【００９５】
図１１Ａ〜図１１Ｃは、本実施の形態におけるキャッシュメモリ１４０の状態を示す図である。なお、ここではＦＡＴの場合について記載するが、ＵＤの場合でも同様である。図１１Ａ〜図１１Ｃでは、説明のため、ＦＡＴ用キャッシュ領域１４１として、１６ＫＢのＦＡＴページが８面存在する場合を示している。
【００９６】
キャッシュ管理部１３２は、キャッシュメモリ１４０の各面について、各面に書き込まれているデータのセクタアドレス、および更新インデックスを管理している。図１１Ａ〜図１１Ｃにおいて、各領域内の数値（１６進数）は当該領域に記憶されたデータの論理セクタアドレスを示している。なおセクタアドレスは、アクセス装置２００が書き込み処理または読み出し処理を行うときに用いる論理セクタアドレスであり、１６ＫＢ（＝０ｘ２０セクタ）単位で管理されている。また更新順インデックスは、当該キャッシュ面のデータが更新されたタイミングの指標であり、値が小さい方がより古いタイミングで更新されていることを示す。なお更新インデックスの代わりに、キャッシュ面が更新されたときの内部のクロック値を用いることも可能である。
【００９７】
図１１Ａは、ＦＡＴ用キャッシュ領域１４１の８面中５面のＦＡＴページにデータが格納されているときに、既にデータが格納されているＦＡＴページを更新する場合の例を示している。図１１Ａでは、４面のＦＡＴページに、セクタアドレス０ｘ００００００Ａ０、０ｘ０００００３８０、０ｘ００００１ＤＣ０、０ｘ０００００５００、および、０ｘ００００１７６０のデータがこの順に格納されている。図１１Ａでは、バッファ１２０に格納されている新たなセクタアドレス０ｘ００００１ＤＣ０のデータを、キャッシュメモリ１４０のセクタアドレス０ｘ００００１ＤＣ０の古いデータが格納されているＦＡＴページに上書きする。なお、０ｘ００００１ＤＣ８以降のセクタデータの更新が必要な場合、０ｘ００００１ＤＣ０から０ｘ００００１ＤＣ７までのデータはキャッシュ上で更新されない。キャッシュメモリ１４０としてＲｅＲＡＭのようなビット単位で上書き可能なデバイスを使用すると、巻き込み退避などの付加的な処理が不要になるので大変好ましい。
【００９８】
さらに、メモリ制御部１３０は、更新順インデックスを更新する。具体的には、セクタアドレス０ｘ００００１ＤＣ０のデータが記憶されたＦＡＴページに対応付けられた更新順インデックスの値を、現在設定されている更新順インデックスの中で最も大きな値に更新する。また、セクタアドレス０ｘ００００１ＤＣ０以外の面に対応付けられた更新順インデックスの値を１つデクリメントする。なお、この処理は、すべての面にページデータが格納されている場合にも適用する。
【００９９】
図１１Ｂは、ＦＡＴ用キャッシュ領域１４１の８面中５面のＦＡＴページにデータが格納されているときに、キャッシュに格納されていないセクタアドレスのデータを追加する場合の例を示している。図１１Ｂでは、セクタアドレス０ｘ０００００Ｂ２０のデータを追加する。この場合は、未格納のＦＡＴページに、当該セクタアドレス０ｘ０００００Ｂ２０のデータを格納する。そして、当該ＦＡＴページの更新順インデックスの値を、現在設定されている更新順インデックスの最大値より１大きい値に設定する。言い換えると、データが追加されたＦＡＴページの更新順インデックスの値は、最大値となる。
【０１００】
図１１Ｃは、ＦＡＴ用キャッシュ領域１４１のすべてのＦＡＴページにデータが格納されているときに、キャッシュメモリ１４０に格納されていないデータを書き込む場合の例を示している。図１１Ｃでは、セクタアドレス０ｘ０００００ＡＥ０のデータを書き込む場合を示している。この場合は、更新順インデックスの値が最も小さい（すなわち最も古くに更新された）セクタアドレス０ｘ０００００Ａ０のデータをキャッシュメモリ１４０から追い出してフラッシュメモリ１５０に書き込む。そして、空いたＦＡＴページにバッファ１２０から供給されたセクタアドレス０ｘ０００００ＡＥ０のデータを書き込む。さらに、セクタアドレス０ｘ０００００ＡＥ０のデータが一番新しく更新されたことを示すよう、更新順インデックスの値を更新する。詳細には、セクタアドレス０ｘ０００００ＡＥ０の面における更新順インデックスの値を最大値とし、他の面における更新順インデックスの値を１デクリメントする。
【０１０１】
なお、キャッシュメモリ１４０からページデータを追い出してフラッシュメモリ１５０に書き込むタイミングは、図１１Ｃの場合に限らない。例えば、フラッシュメモリ１５０で巻き込み退避を実行するとき、上記巻き込み退避の対象となるＦＡＴページ（もしくはＵＤページ）のデータがキャッシュメモリ１４０に格納されているときは、当該データをフラッシュメモリ１５０に供給した後、該当のキャッシュ面を未使用状態とすることも可能である。
【０１０２】
図８に戻り、アクセス装置２００から出力されたデータが停止コマンドである場合（Ｓ４１の停止コマンド）、不揮発性記憶装置１００は書き込み処理を終了する。なお、停止コマンドは、アクセス装置２００により、ライトコマンド４００によるライトデータ４２０の転送が終了したとき、もしくは、転送を中断する場合に発行される。停止コマンド４３０は、少なくともコマンドの種別を識別するコマンドインデックス４３１が含まれている。上述したように、他のコマンドとフォーマットの整合を取るためにダミーデータ４３２が含まれている場合もある。
【０１０３】
停止コマンド４３０は、Ｉ／Ｆ部１１０で受信され、コマンドインデックス４３１がデコードされる。その結果停止コマンドであると判明したとき、ライトコマンド処理の停止を行う。
【０１０４】
なおライトコマンド４００にライトデータサイズを埋め込む、もしくはライトコマンド４００の前にライトデータサイズを通知するコマンドを送信することで、不揮発性記憶装置１００にライトデータサイズを通知する方法もある。
【０１０５】
［１−３．効果等］
以上のように、本実施の形態では、データの更新頻度の高いＦＡＴページの面数に応じて、キャッシュメモリ１４０に割り当てるＦＡＴ用キャッシュ領域のサイズを適応的に変更する。より具体的には、本実施の形態の不揮発性記憶装置１００は、起動後から予め定められた規定数の書き込み処理をモニタし、ページアドレス毎に書き込み回数を測定することにより、更新頻度（更新回数）を求める。
【０１０６】
本実施の形態の不揮発性記憶装置１００は、ＦＡＴ用キャッシュ領域のサイズを、アクセス装置からのＦＡＴ更新パターンをモニタすることにより決定するので、アクセス装置からＦＡＴ用キャッシュ領域のサイズを取得するための特別なデータを得ることなく、最適なキャッシュ領域の割り当てが可能となる。これは、不揮発性記憶装置がＳＤカードやＵＳＢメモリのように、アクセス装置に対して挿抜可能な場合に特に有効である。
【０１０７】
また、更新頻度の高い面数は、アクセス装置２００の構成等に応じて変化するため、起動後など接続されるアクセス装置が変更されたと考えられるときに更新頻度の測定を行うことで、アクセス装置２００の構成に応じたキャッシュメモリ１４０の割り当てが可能になる。これにより、更新頻度の比較的低いデータがキャッシュメモリ１４０に常駐するのを抑え、キャッシュメモリ１４０をより有効に利用することが可能になる。
【０１０８】
また、上記実施の形態の不揮発性記憶装置１００は、更新頻度の比較的低いデータをフラッシュメモリ１５０に格納できるので、フラッシュメモリ１５０の書き込み回数を適切に削減することができる。この結果、フラッシュメモリ１５０、ひいては不揮発性記憶装置１００の寿命（利用可能期間）を長くすることができる。
【０１０９】
さらに本実施の形態においては、ＦＡＴ用キャッシュ領域として割り当てなかったキャッシュメモリ１４０の面をＵＤ用キャッシュ領域として割り当てることで、ＵＤの上書きの場合にフラッシュメモリ１５０への書き込みを抑制することができる。
【０１１０】
（実施の形態２）
実施の形態１では、ＦＡＴ用キャッシュ領域１４１をキャッシュメモリ１４０のどの領域に割り当てるかは明示していない。これに対し、本実施の形態では、ＦＡＴ用キャッシュ領域１４１の先頭アドレスを、前回の起動時に設定されていたＦＡＴ用キャッシュ領域１４１の先頭アドレスとは異なるアドレスに設定する。
【０１１１】
以下、図１２を用いて、実施の形態２について、主として実施の形態１と異なる部分について説明する。本実施の形態では、前回の起動時に設定されていたＦＡＴ用キャッシュ領域１４１における最後のバイトアドレスの次のバイトアドレスを、今回の起動におけるＦＡＴ用キャッシュ領域１４１の先頭のバイトアドレスに設定する。
【０１１２】
図１２Ａは、本実施の形態における１回目の起動時のキャッシュメモリの状態を示す図であり、図１２Ｂは、本実施の形態における２回目の起動時のキャッシュメモリの状態を示す図である。
【０１１３】
本実施の形態において、１回目の起動時（例えば出荷後最初の起動時）におけるＦＡＴの書き込み回数の測定結果が図６Ａに示す結果になったとする。このとき、実施の形態１で説明したように、メモリ制御部１３０によりＦＡＴ用キャッシュ領域１４１として確保される面数は４面である。このとき、図１２Ａに示すように、キャッシュメモリ１４０の先頭アドレスから４面（４ＦＡＴページ）連続でＦＡＴ用キャッシュ領域１４１が確保される。すなわち、キャッシュメモリ１４０のうち、バイトアドレス０ｘ００００００００〜０ｘ００００ＦＦＦＦの領域がＦＡＴ用キャッシュ領域１４１となる。
【０１１４】
その後、２回目の起動時におけるＦＡＴの書き込み回数の測定結果が図７Ａに示す結果になったとする。このとき、メモリ制御部１３０によりＦＡＴ用キャッシュ領域１４１として確保される面数は１０面である。このとき、図１２Ｂに示すように、１回目の起動時にＦＡＴ用キャッシュ領域１４１として使用していたバイトアドレス０ｘ００００ＦＦＦＦのＦＡＴページに続くバイトアドレス０ｘ０００１００００から０ｘ０００３７ＦＦＦまでの１０面を２回目起動時のＦＡＴ用キャッシュ領域１４１として割り当てる。残りの０ｘ０００３８０００から０ｘ０００７ＦＦＦＦの９面と、バイトアドレス０ｘ００００００００から０ｘ００００ＦＦＦＦまでの２面とがＵＤ用キャッシュ領域１４２として割り当てられる。
【０１１５】
以後同様に、前回の起動時に設定されていたＦＡＴ用キャッシュ領域１４１の末端のバイトアドレスの次のバイトアドレスを、今回の起動におけるＦＡＴ用キャッシュ領域１４１の先頭アドレスとして割り当てる。なお、ＦＡＴ用キャッシュ領域１４１の終端に達した場合は先頭に戻る。
【０１１６】
キャッシュメモリ１４０として使用するビット単位でアクセスが可能なメモリの中には、ＲｅＲＡＭのように書き込み可能回数の制限をもつメモリデバイスも存在する（ただしフラッシュメモリ１５０に比べれば書き込み可能回数ははるかに大きい）。
【０１１７】
そのようなメモリデバイスをキャッシュメモリ１４０として使用する場合、本実施の形態によれば、キャッシュメモリ１４０内におけるＦＡＴページ間の書き込み回数を平均化することで、キャッシュメモリ１４０、ひいては不揮発性記憶装置１００の寿命を長くすることができる。
【０１１８】
（他の実施の形態）
（１）上記実施の形態１または２で説明した、ページサイズ、並列数、もしくはＦＡＴ用キャッシュ領域の面数の決定における規定数（本実施の形態では１００回）や上位アクセス回数の合計値の閾値（本実施の形態では９０回）等の各種パラメータは、使用するデバイスや想定されるアクセスパターンに応じて設計者が自由に選択できる。また前記パラメータの一部は、本発明の不揮発性記憶装置の出荷後であっても変更可とする構成も可能である。
【０１１９】
（２）上記実施の形態１および２では、ＦＡＴ用キャッシュ領域１４１のサイズを、ＦＡＴの書き込みの頻度に応じて決定したが、これに限るものではない。例えば、所定回数以上（閾値以上）の書き込みがあったページアドレスの数に応じて、ＦＡＴ用キャッシュ領域１４１のサイズを決定しても構わない。例えば、図６Ａにおいて、１０回以上の書き込みがあったページのページ数をＦＡＴ用キャッシュ領域１４１のサイズとして求める場合、ＦＡＴ用キャッシュ領域１４１のサイズは、４面となる。
【０１２０】
（３）また、上記実施の形態１および２では、ＦＡＴおよびＵＤがページ単位で書き込み処理される場合について示したが、これに限られるものではない。ＦＡＴおよびＵＤは、ページ単位ではなく、任意の単位で管理されていても構わない。
【０１２１】
（４）上記実施の形態１および２では、フラッシュメモリ１５０が２つのメモリチップで構成されている場合について説明したが、これに限るものではない。フラッシュメモリ１５０は、１つのメモリチップあるいは３以上のメモリチップで構成されていても構わない。
【０１２２】
この場合において、ＵＤデータのサイズは、並列数に依存していても構わない。ＵＤデータのサイズは、例えば、１ページのサイズ×並列数で表わされる。例えば、フラッシュメモリ１５０が４つのメモリチップを備える場合（並列数が４の場合）、ＵＤの処理単位のサイズは、１６ＫＢ×４＝６４ＫＢとなる。
【０１２３】
（５）上記実施の形態１および２では、図５のステップＳ２３において、ＦＡＴ用キャッシュ領域１４１にライトデータを書き込む場合について説明したが、ＦＡＴ領域１５１に書き込むように構成しても構わない。
【０１２４】
また、例えば、ＦＡＴ用キャッシュ領域１４１およびＵＤ用キャッシュ領域１４２の初期サイズを予め設定しておいても構わない。この場合、ステップＳ２３のＦＡＴの場合と同じ方法で、ステップＳ２４のＵＤの場合においても入力されたライトデータをＵＤ用キャッシュ領域１４２に書き込み、ＵＤ用キャッシュ領域１４２のキャッシュあふれが生じた場合に、例えばＦＡＴの場合と同様の手順でフラッシュメモリ１５０にＵＤを記憶する。
【０１２５】
なお、上記実施の形態１および２は、ＦＡＴ用キャッシュ領域１４１のサイズの初期値がキャッシュメモリ１４０のサイズに設定されている場合に相当する。ステップＳ３０のＦＡＴ用キャッシュ領域のサイズの決定では、ＦＡＴ用キャッシュ領域のサイズが、初期設定から、ライトコマンドの発行回数に応じて決定されたサイズに再設定される（変更される）ことになる。
【０１２６】
以上のように、本開示における技術の例示として、実施の形態を説明した。そのために、添付図面および詳細な説明を提供した。
【０１２７】
したがって、添付図面および詳細な説明に記載された構成要素の中には、課題解決のために必須な構成要素だけでなく、上記技術を例示するために、課題解決のためには必須でない構成要素も含まれ得る。そのため、それらの必須ではない構成要素が添付図面や詳細な説明に記載されていることをもって、直ちに、それらの必須ではない構成要素が必須であるとの認定をするべきではない。
【０１２８】
また、上述の実施の形態は、本開示における技術を例示するためのものであるから、請求の範囲またはその均等の範囲において種々の変更、置き換え、付加、省略などを行うことができる。
【産業上の利用可能性】
【０１２９】
本開示は、フラッシュメモリを用いたメモリデバイス等に適用可能である。特にアクセス装置に対して挿抜可能なメモリデバイスの場合に多大なる効果を発揮する。具体的にはＳＤカード、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＵＳＢメモリに本開示は有効である。
【符号の説明】
【０１３０】
１００  不揮発性記憶装置
１１０  Ｉ／Ｆ部
１２０  バッファ
１３０  メモリ制御部
１３１  アドレス管理部
１３２  キャッシュ管理部
１３３  ＦＡＴサイズ決定部
１４０  キャッシュメモリ
１４１  ＦＡＴ用キャッシュ領域
１４１ａ  ＦＡＴページ
１４２  ＵＤ用キャッシュ領域
１４２ａ  ＵＤページ
１５０  フラッシュメモリ
１５０ａ、１５０ｂ  フラッシュメモリチップ
１５１  ＦＡＴ領域
１５２  ＵＤ領域
１６０  メモリバス
２００  アクセス装置
４００  ライトコマンド
４０１、４３１  コマンドインデックス
４０２  セクタアドレス
４１０  レスポンス
４２０  ライトデータ
４３０  停止コマンド
４３２  ダミーデータ
【図１】
2016038765.tif 000003
【図２】
2016038765.tif 000004
【図３】
2016038765.tif 000005
【図４】
2016038765.tif 000006
【図５】
2016038765.tif 000007
【図６Ａ】
2016038765.tif 000008
【図６Ｂ】
2016038765.tif 000009
【図７Ａ】
2016038765.tif 000010
【図７Ｂ】
2016038765.tif 000011
【図８】
2016038765.tif 000012
【図９】
2016038765.tif 000013
【図１０】
2016038765.tif 000014
【図１１Ａ】
2016038765.tif 000015
【図１１Ｂ】
2016038765.tif 000016
【図１１Ｃ】
2016038765.tif 000017
【図１２Ａ】
2016038765.tif 000018
【図１２Ｂ】
2016038765.tif 000019
【図１３】
2016038765.tif 000020
【国際調査報告】
2016038765.tif 000021
2016038765.tif 000022