(57)【要約】【課題】複数の記憶装置を適切に一元管理する記憶装置管理装置を提供する。【解決手段】記憶装置管理装置３は、ランダムアクセスメモリ４ａと、これより少ない書き換え上限回数の第１記憶装置４ｂと接続される。記憶装置管理装置は、ランダムアクセスメモリが書き込みデータを格納できる空き領域を有している場合、書き込みデータをランダムアクセスメモリにおいて格納し、ランダムアクセスメモリ内のデータを最後にアクセスされてからの時間順に第１記憶装置内にコピーし、ランダムアクセスメモリ内のコピーされたデータを格納していた領域を開放する。記憶装置管理装置は、読み出しデータがランダムアクセスメモリに格納されている場合、読み出しデータをランダムアクセスメモリから読み出し、読み出しデータが第１記憶装置に格納されている場合、読み出しデータをランダムアクセスメモリにコピーし、読み出しデータをランダムアクセスメモリから読み出す。【選択図】      図１
2011145838.tif 000002
【特許請求の範囲】
【請求項１】
ランダムアクセスメモリと、前記ランダムアクセスメモリよりも少ない書き換え上限回数を有する第１記憶装置と、情報処理装置と接続される記憶装置管理装置であって、
前記ランダムアクセスメモリが、前記情報処理装置からの書き込み要求対象である書き込みデータを格納するのに足る空き領域を有している場合、前記書き込みデータを前記ランダムアクセスメモリにおいて格納し、
前記ランダムアクセスメモリ内のデータを、最後にアクセスされてからの時間が長いものから順に前記第１記憶装置内にコピーし、前記ランダムアクセスメモリ内の前記コピーされたデータを格納していた領域を開放し、
前記情報処理装置からの読み出し要求対象である読み出しデータが前記ランダムアクセスメモリに格納されている場合、前記読み出しデータを前記ランダムアクセスメモリから前記情報処理装置に読み出し、
前記読み出しデータが前記第１記憶装置に格納されている場合、前記読み出しデータを前記ランダムアクセスメモリにコピーし、前記読み出しデータを前記ランダムアクセスメモリから前記情報処理装置に読み出す、
ことを特徴とする記憶装置管理装置。
【請求項２】
前記第１記憶装置よりも少ない書き換え上限回数を有する第２記憶装置と接続され、
前記第１記憶装置内の有効データを、最後にアクセスされてからの時間が長いものから順に前記第２記憶装置内にコピーし、前記第１記憶装置内の前記コピーされたデータを格納していた領域を開放し、
前記読み出しデータが前記第２記憶装置に格納されている場合、前記読み出しデータを前記ランダムアクセスメモリにコピーし、前記読み出しデータを前記ランダムアクセスメモリから前記情報処理装置に読み出す、
ことを特徴とする請求項１に記載の記憶装置管理装置。
【請求項３】
前記第１記憶装置が、１メモリセルで１ビットを記憶するＮＡＮＤ型フラッシュメモリであり、
前記第２記憶装置が、１メモリセルで２ビット以上を記憶するＮＡＮＤ型フラッシュメモリである、
請求項２の記憶管理装置。
【請求項４】
ランダムアクセスメモリおよび前記ランダムアクセスメモリよりも少ない書き換え上限回数を有する第１記憶装置の管理方法であって、
前記ランダムアクセスメモリが前記情報処理装置からの書き込み要求対象である書き込みデータを格納するのに足る空き領域を有している場合、前記書き込みデータを前記ランダムアクセスメモリにおいて格納し、
前記ランダムアクセスメモリ内のデータを、最後にアクセスされてからの時間が長いものから順に前記第１記憶装置内にコピーし、前記ランダムアクセスメモリ内の前記コピーされたデータを格納していた領域を開放し、
前記情報処理装置からの読み出し要求対象である読み出しデータが前記ランダムアクセスメモリに格納されている場合、前記読み出しデータを前記ランダムアクセスメモリから前記情報処理装置に読み出し、
前記読み出しデータが前記第１記憶装置に格納されている場合、前記読み出しデータを前記ランダムアクセスメモリにコピーし、前記読み出しデータを前記ランダムアクセスメモリから前記情報処理装置に読み出す、
ことを具備することを特徴とする記憶装置の管理方法。
【請求項５】
前記第１記憶装置内の有効データを前記第１記憶装置よりも少ない書き換え上限回数を有する第２記憶装置内にコピーし、前記第１記憶装置内の前記コピーされたデータを格納していた領域を開放し、
前記読み出しデータが前記第２記憶装置に格納されている場合、前記読み出しデータを前記ランダムアクセスメモリにコピーし、前記読み出しデータを前記ランダムアクセスメモリから前記情報処理装置に読み出す、
ことをさらに具備することを特徴とする請求項４に記載の記憶装置の管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の記憶装置の記憶状態を管理する記憶装置管理装置および記憶装置の管理方法に関する。
【背景技術】
【０００２】
コンピュータでは、通常、複数の種類のメモリ、例えばキャッシュメモリ、メインメモリ、２次記憶装置（ハードディスクドライブなど）が設けられる。メモリは、高速にアクセス可能なものほど容量は小さく、高価である。上記の例の場合、キャッシュメモリ、メインメモリ、２次記憶装置の順で、アクセス速度は速く、記憶容量は小さい。そこで、複数の種類のメモリが階層化される。具体的には、使用頻度の高いデータはキャッシュメモリに記憶され、使用頻度が中レベルのデータは主記憶装置に記憶され、使用頻度の低いデータは２次記憶装置に記憶される。このようにメモリの特性に応じてデータの保存先が選択されることによって、メモリがコンピュータによって有効に活用される。
【０００３】
例えば、特許文献１（特開２００８−２４２９４４号公報）には、キャッシュメモリとメインメモリに対するアクセスを一元管理する統合メモリ管理装置をコンピュータに設けることが記載されている。
【０００４】
また、特許文献２（特開２００９−１５１６０３号公報）には、ＭＲＡＭを主記憶装置として使用し、別の不揮発性メモリをバックアップとして使用する技術が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２４２９４４号公報
【特許文献２】特開２００９−１５１６０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、複数の記憶装置を適切に一元管理できる記憶装置管理装置、および記憶装置の管理方法を提供しようとするものである。
【課題を解決するための手段】
【０００７】
本発明の一態様による記憶管理装置は、ランダムアクセスメモリと、前記ランダムアクセスメモリよりも少ない書き換え上限回数を有する第１記憶装置と、情報処理装置と接続される記憶装置管理装置であって、前記ランダムアクセスメモリが、前記情報処理装置からの書き込み要求対象である書き込みデータを格納するのに足る空き領域を有している場合、前記書き込みデータを前記ランダムアクセスメモリにおいて格納し、前記ランダムアクセスメモリ内のデータを、最後にアクセスされてからの時間が長いものから順に前記第１記憶装置内にコピーし、前記ランダムアクセスメモリ内の前記コピーされたデータを格納していた領域を開放し、前記情報処理装置からの読み出し要求対象である読み出しデータが前記ランダムアクセスメモリに格納されている場合、前記読み出しデータを前記ランダムアクセスメモリから前記情報処理装置に読み出し、前記読み出しデータが前記第１記憶装置に格納されている場合、前記読み出しデータを前記ランダムアクセスメモリにコピーし、前記読み出しデータを前記ランダムアクセスメモリから前記情報処理装置に読み出す、ことを特徴とする。
【０００８】
本発明の一態様による記憶装置の管理方法は、ランダムアクセスメモリおよび前記ランダムアクセスメモリよりも少ない書き換え上限回数を有する第１記憶装置の管理方法であって、前記ランダムアクセスメモリが前記情報処理装置からの書き込み要求対象である書き込みデータを格納するのに足る空き領域を有している場合、前記書き込みデータを前記ランダムアクセスメモリにおいて格納し、前記ランダムアクセスメモリ内のデータを、最後にアクセスされてからの時間が長いものから順に前記第１記憶装置内にコピーし、前記ランダムアクセスメモリ内の前記コピーされたデータを格納していた領域を開放し、前記情報処理装置からの読み出し要求対象である読み出しデータが前記ランダムアクセスメモリに格納されている場合、前記読み出しデータを前記ランダムアクセスメモリから前記情報処理装置に読み出し、前記読み出しデータが前記第１記憶装置に格納されている場合、前記読み出しデータを前記ランダムアクセスメモリにコピーし、前記読み出しデータを前記ランダムアクセスメモリから前記情報処理装置に読み出す、ことを具備することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、複数の記憶装置を適切に一元管理できる記憶装置管理装置、および記憶装置の管理方法を提供できる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態に係るメモリシステムを示すブロック図。
【図２】実施形態のメモリコントローラによって用いられるページテーブル。
【図３】実施形態のメモリコントローラによって用いられるＲＡＭ物理ページ管理テーブル
【図４】実施形態のメモリコントローラによって用いられるＳＬＣ型ＮＡＮＤフラッシュ物理ページ管理テーブル。
【図５】実施形態のメモリコントローラによって用いられるＭＬＣ型ＮＡＮＤフラッシュ物理ページ管理テーブル。
【図６】実施形態のメモリコントローラよるメモリ領域の割り当てのフローチャート。
【図７】実施形態のメモリコントローラによるＳＬＣ型ＮＡＮＤフラッシュのガベージコレクションのフローチャート。
【図８】実施形態のメモリコントローラによるＭＬＣ型ＮＡＮＤフラッシュのガベージコレクションのフローチャート。
【図９】メモリシステム内のデータの更新要求に対する、実施形態のメモリコントローラによる処理のフローチャート。
【図１０】メモリシステム内のデータの読み出し要求に対する、実施形態のメモリコントローラによる処理のフローチャート。
【図１１】メモリシステム内のデータへの更新要求に対する、実施形態のメモリコントローラによる処理の一部のフローチャート。
【図１２】本発明の別の実施形態に係るメモリシステムを示すブロック図。
【発明を実施するための形態】
【００１１】
以下に本発明の実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【００１２】
図１は、本発明の一実施形態に係るメモリシステム、およびプロセッサを示すブロック図である。図１に示すように、メモリシステム２は、プロセッサ（情報処理装置）１と接続されている。メモリシステム２は、メモリコントローラ３および複数のメモリ４ａ乃至４ｃを含んでいる。
【００１３】
プロセッサ１は、メモリコントローラ（メモリ管理装置）３と、バスを介して接続されている。メモリコントローラ３は、複数のメモリと接続されている。図１では、３つのメモリ４ａ乃至４ｃが例示されている。メモリコントローラ３およびメモリ４ａ乃至４ｃは、メモリシステム２を構成する。メモリ４ａ乃至４ｃは、メモリシステム２のメインメモリを構成する。
【００１４】
次に、各部の構成および動作について、より詳しく説明する。プロセッサ１は、キャッシュメモリ１１を有している。通常のデータキャッシュまたは命令キャッシュとして機能する。プロセッサ１は、メモリ４ａ乃至４ｃまたは２次記憶装置（図示せず）に格納されているデータ（プログラム、コマンド等を含む）を読み出して、このデータに従い、またこのデータを用いて、例えばユーザからアプリケーション（オペレーティングシステムを含む）を介して依頼される処理を実行する。
【００１５】
メモリコントローラ３は、メモリ４ａ乃至４ｃまたは２次記憶装置（図示せず）に格納されているデータ（プログラム、コマンド等を含む）を読み出して、このデータに従い、またこのデータを用いて、メモリ４ａ乃至４ｃによるデータの格納方法を管理する（後に詳述する）。メモリコントローラ３は、プロセッサ１から依頼されるデータの読み出し、およびデータの書き込みを実行する。メモリコントローラ３の動作の詳細については後述する。
【００１６】
メモリ４ａ乃至４ｃは、種類および特性の異なるメモリからそれぞれ構成される。メモリ４ａ、４ｂ、４ｃは、この記述された順に、データの書き込みおよび読み出しを高速に実行可能であり、小さな容量を有し、大きな書き換え上限回数を有する。すなわち、メモリ４ａは、メモリ４ｂよりも、高速にデータの書き込みおよび読み出しが可能であり、小さな容量を有し、大きな書き換え上限回数を有する。同様に、メモリ４ｂは、メモリ４ｃよりも、高速にデータの書き込みおよび読み出しが可能であり、小さな容量を有し、大きな書き換え上限回数を有する。
【００１７】
メモリ４ａの具体例は、あらゆるＲＡＭであり、典型的には、一般的なコンピュータにおいてメインメモリとしての使用に要求される仕様を満たすメモリである。メモリ４ａのより具体的な例には、ＭＲＡＭ（magnetoresistive random access memory）、ＤＲＡＭ（dynamic random access memory）、ＦｅＲＡＭ（dynamic random access memory）、ＰＣＲＡＭ（phase change random access memory）、ＲｅＲＡＭ（resistive random access memory）が含まれる。さらに、ＦＰＭ−ＤＲＡＭ、ＥＤＯ−ＤＲＡＭ、ＳＤＲＡＭなどのような一般的なコンピュータにおいてメインメモリとして利用されるメモリが含まれる。しかしながら、これらのメモリのうちでＤＲＡＭ以外のものは不揮発である点、しかし同時にＭＲＡＭ、ＦｅＲＡＭなどはＤＲＡＭと同様に高速でのデータの書き込みおよび読み出しが可能である点から、ＭＲＡＭやＦｅＲＡＭが好ましい。例えば、不揮発性のメモリが使用されれば、電源再投入時に２次記憶装置からメインメモリへロードする必要があるデータの量の削減が削減され、使用が可能になるのに必要な時間が短縮される。
【００１８】
メモリ４ｂの具体例は、不揮発性半導体メモリである。メモリ４ｂのより具体的な例には、ＳＬＣ（single level cell）タイプのＮＡＮＤ型フラッシュメモリが含まれる。ＮＡＮＤ型フラッシュメモリは、ページ単位でデータを読み出しまたはデータを書き込み、ブロック単位でデータを消去する。ページは、複数の直列接続されたメモリセルからなり、ブロックは複数の連続するページからなる。ＳＬＣタイプのＮＡＮＤ型フラッシュメモリでは、１つのセルが１ビットのデータを記憶する。ＳＬＣタイプのＮＡＮＤ型フラッシュメモリは、後述のＭＬＣタイプのＮＡＮＤ型フラッシュメモリよりも、一般に高速でデータの読み出しおよび書き込みが可能であり、書き換え上限回数が多い。しかしながら、ＳＬＣタイプのＮＡＮＤ型フラッシュメモリは、ＭＬＣタイプのＮＡＮＤ型フラッシュメモリよりも、ビット密度が低く、大容量化には向いていない。
【００１９】
メモリ４ｃの具体例は、不揮発性半導体メモリである。メモリ４ｂのより具体的な例には、ＭＬＣ（multi level cell）タイプのＮＡＮＤ型フラッシュメモリが含まれる。ＭＬＣタイプのＮＡＮＤ型フラッシュメモリでは、１つのセルが２ビット以上のデータを記憶する。ＭＬＣタイプのＮＡＮＤ型フラッシュメモリは、ＳＬＣタイプのＮＡＮＤ型フラッシュメモリよりも、一般にデータの読み出しおよび書き込みが遅く、書き換え上限回数が少ない。しかしながら、ＭＬＣタイプのＮＡＮＤ型フラッシュメモリは、ＳＬＣタイプのＮＡＮＤ型フラッシュメモリよりも、ビット密度が高く、大容量化に向いている。メモリ４ｃは、例として１つのセルと用いて２ビットのデータを記憶する。
【００２０】
メモリ４ａ乃至４ｃは、上記の例に限定されない。さらに、メモリの個数も上記の例に限定されない。例えば、メモリ４ｄ（図示せず）が設けられていてもよい。メモリ４ｃは、メモリ４ｄよりも高速にデータの書き込みおよび読み出しが可能であり、小さな容量を有し、大きな書き換え上限回数を有する。同様の関係を有するさらなるメモリが設けられていてもよい。上記の例に従えば、メモリ４ｄの例は、１つのセルを用いて３ビットのデータを記憶するＭＬＣタイプのＮＡＮＤ型フラッシュメモリである。または、メモリ４ｄは、ハードディスクドライブであってもよい。
【００２１】
次に、本実施形態に係るメモリシステムの動作について説明する。以下の説明では、例として、記憶装置４ａ乃至４ｃが、それぞれＲＡＭ、ＳＬＣタイプＮＡＮＤ型フラッシュメモリ、ＭＬＣタイプＮＡＮＤ型フラッシュメモリであるとする。これに合わせて、記憶装置４ａ乃至４ｃが、それぞれＲＡＭ、ＳＬＣタイプＮＡＮＤ型フラッシュメモリ（ＳＬＣ型ＮＡＮＤフラッシュ）、ＭＬＣタイプＮＡＮＤ型フラッシュメモリ（ＭＬＣ型ＮＡＮＤフラッシュ）と称される場合がある。
【００２２】
メモリコントローラ３は、図２乃至図５に示されている表を用いて、ＲＡＭ４ａ、ＳＬＣ型ＮＡＮＤフラッシュメモリ４ｂ、ＭＬＣ型ＮＡＮＤフラッシュメモリ４ｃによるデータの記憶を管理する。メモリコントローラ３は、例えば、メモリシステム２への電源投入後に、例えば２次記憶装置からメモリコントローラ３の制御プログラムをＲＡＭ４ａ上に読み出す。メモリコントローラ３は、以降、この制御プログラムに従って動作する。制御プログラムは、メモリコントローラ３専用に設けられたＲＡＭに読み出されてもよい。
【００２３】
電源投入後、メモリコントローラ３は、制御プログラムに従って、図２乃至図５に示されている構造の表をＲＡＭ４ａにおいて作成する。これらの表は、上記のメモリコントローラ３専用ＲＡＭ上に作成されてもよい。
【００２４】
図２は、ページテーブル（論物変換テーブル）を示している。図３は、記憶装置４ａ（ＲＡＭ）の物理ページ管理テーブルを示している。図４は、記憶装置４ｂ（ＳＬＣ型ＮＡＮＤフラッシュメモリ）の物理ページ管理テーブルを示している。図５は、記憶装置４ｃ（ＭＬＣ型ＮＡＮＤフラッシュメモリ）の物理ページ管理テーブルを示している。
【００２５】
図２に示されているように、ページテーブルは、論理ページアドレスごとにエントリを有している。ページテーブルは、論理ページごとのデータの状態を示している。各エントリは、ＳＬＣ型ＮＡＮＤフラッシュ４ｂまたはＭＬＣ型ＮＡＮＤフラッシュ４ｃの１ページごとに独立している。典型的には、ＳＬＣ型ＮＡＮＤフラッシュ４ｂおよびＭＬＣ型ＮＡＮＤフラッシュ４ｃは同じ大きさのページを有し、その大きさは例えば４ｋＢである。したがって、１つの物理ページの大きさ（上記の例では４ｋＢ）ごとに論理ページアドレスが割り当てられる。これに合わせて、記憶装置４ａ（ＲＡＭ）も、ＮＡＮＤフラッシュ４ｂまたは４ｃの１物理ページ（例えば４ｋＢ）の大きさごとに、状態を管理され、データの読み出しまたは書き込みを要求される。
【００２６】
各エントリは、フラグ欄、ＲＡＭアドレス欄、ＮＡＮＤアドレス欄を含んでいる。フラグ欄は、対応する論理ページアドレスのデータの位置の概要を示す。フラグには、Ｅ、Ｍ、ＮＳ、ＮＭ、ＭＳ、ＭＭが含まれ、これらのいずれかがフラグ欄に記載される。Ｅは、対応する論理ページアドレスのデータが、ＲＡＭ４ａ、ＳＬＣ型ＮＡＮＤフラッシュ４ｂ、ＭＬＣ型ＮＡＮＤフラッシュ４ｃのいずれにも格納されていないことを示す。Ｍは、対応する論理ページアドレスのデータが、ＲＡＭ４ａ内に格納されていることを示す。ＮＳは、対応する論理ページアドレスのデータが、ＳＬＣ型ＮＡＮＤフラッシュ４ｂ内に格納されていることを示す。ＮＭは、対応する論理ページアドレスのデータが、ＭＬＣ型ＮＡＮＤフラッシュ４ｂ内に格納されていることを示す。ＭＳは、対応する論理ページアドレスのデータが、ＲＡＭ４ａおよびＳＬＣ型ＮＡＮＤフラッシュ４ｂの両方において格納されていることを示す。ＭＭは、対応する論理ページアドレスのデータが、ＲＡＭ４ａおよびＭＬＣ型ＮＡＮＤフラッシュ４ｂの両方において格納されていることを示す。
【００２７】
ＲＡＭアドレス欄には、対応するフラグがＭまたはＭＳまたはＭＭの場合に、対応する論理ページアドレスのデータを格納しているＲＡＭ４ａの物理ページが記述される。ＮＡＮＤアドレス欄には、対応するフラグがＮＳまたはＮＭまたはＭＳまたはＭＭの場合に、対応する論理ページアドレスのデータを格納しているＳＬＣ型ＮＡＮＤフラッシュ４ｂまたはＭＬＣ型ＮＡＮＤフラッシュ４ｃの物理ページが記述される。
【００２８】
図３に示されているように、ＲＡＭ（記憶装置４ａ）物理ページ管理テーブルは、ＲＡＭ４ａの物理ページごとにエントリを有している。各エントリは、有効／無効表示欄と最終アクセス時刻欄とを有している。有効／無効表示欄には、ＲＡＭ４ａの対応する物理ページが有効なデータを格納しているかまたはしていないかが示される。例えば、“１”は、対応する物理ページが有効なデータを格納していることを示し、“０”は、対応する物理ページが有効なデータを格納していないことを示す。
【００２９】
最終アクセス時刻欄には、対応する物理ページが最後にアクセスされた時刻が書き込まれている。この時刻は、例えば、メモリシステム２への電源投入後の所定のタイミングからの経過時間を用いて記述される。また、この時刻は、厳密な値ではなく、任意の所定の単位で表現された近似値であってもよい。
【００３０】
図４に示されているように、ＳＬＣ型ＮＡＮＤフラッシュ（記憶装置４ｂ）物理ページ管理テーブルは、ＳＬＣ型ＮＡＮＤフラッシュ４ｂのブロックごとにエントリを有している。各エントリは、読み出し回数欄、書き換え回数欄、最終アクセス時刻欄、各ページについての有効／無効表示欄を有している。読み出し回数欄には、対応するブロックの消去後の時点から計数して、このブロック内のいずれかの物理ページが読み出された回数が示されている。書き換え回数欄には、対応するブロックがこれまでに消去されて新しいデータに書き換えられた回数が示されている。各ページについての有効／無効表示欄は、対応するブロック内の各ページ用の表示欄を含んでおり、各ページが有効なデータを格納しているかまたはしていないかが示される。例えば、“１”は、対応する物理ページが有効なデータを格納していることを示し、“０”は、対応する物理ページがデータを格納していないことを示す。最終アクセス時刻欄には、対応するブロック内が最後に消去されて新しいデータが書き込まれた時刻が書き込まれている。この時刻は、例えば、対応するブロックの消去後またはメモリシステム２への電源投入後の所定のタイミングからの経過時間である。また、この時刻は、厳密な値ではなく、任意の所定の単位で表現された近似値であってもよい。
【００３１】
ここで示す実施形態の例では、最終アクセス時刻欄を、最も昔に消去および書き込みが行なわれたブロックを見つけるための情報として使用している。別の実施方法としては、最終アクセス時刻欄を用いずに、ページの消去および書き込みは必ず物理ページの順に行う方法も可能である。この方法では、ブロックが、最も昔に消去されて書き込まれたブロックから最も最近に消去されて書き込まれたブロックまで順に並んでいる。そのため、最も昔に消去されて書き込まれたブロックの番号を覚えておけば、最も昔に消去されて書き込まれたブロックを探すのは容易である。
【００３２】
図５に示されているように、ＭＬＣ型ＮＡＮＤフラッシュ（記憶装置４ｃ用）物理ページ管理テーブルは、ＭＬＣ型ＮＡＮＤフラッシュ４ｃのブロックごとにエントリを有している。各エントリは、読み出し回数欄、書き換え回数欄、最終アクセス時刻欄、各ページについての有効／無効表示欄を有している。各欄に記入されるデータの特性は、ＳＬＣ型ＮＡＮＤフラッシュ物理ページ管理テーブル（図４）と同じである。
【００３３】
次に、メモリシステム２（メモリコントローラ３）の動作の詳細について説明する。まず、図６を参照して、メモリコントローラ３による新しいメモリ領域の割り当てについて説明する。図６は、メモリコントローラ３による新しいメモリ領域の割り当てを示すフローチャートである。図６に示されているように、例えばユーザからメモリシステム２において新しくデータを格納するためのメモリ領域を確保する要求がプロセッサ１を介して出される。メモリコントローラ３は、このメモリの割り当て要求をプロセッサ１から受け取ると、以下の処理を行なう。
【００３４】
なお、以下の記述において、プロセッサ１が、ユーザがアプリケーションやオペレーティングシステムを介してプロセッサ１に要求した依頼をプログラムに従って行なう動作を、簡略化のために、プロセッサ１を自律的な動作主体として用いて記述する。同様に、メモリコントローラ３を制御するプログラムに従ってメモリコントローラ３がプロセッサ１からの要求を行なう動作を、簡略化のために、メモリコントローラ３を自律的な動作主体として用いて記述する。
【００３５】
メモリの割り当て要求を受ける（ステップＳ１）と、メモリコントローラ３は、最上層、すなわち最も書き換え限界数の少ないメモリ（ＲＡＭ）４ａへの割り当てを試みる。これを実行するために、まず、メモリコントローラ３は、ページテーブル内のフラグを参照する。次いで、メモリコントローラ３は、フラグから、割り当て要求を満たす大きさ分連続している、未使用ページ（有効データを格納していない論理ページ）を探す（ステップＳ２）。
【００３６】
次に、メモリコントローラ３は、ＲＡＭ物理ページ管理テーブル内の有効／無効表示欄を見て、割り当て対象のデータを格納するのに足る数の連続する未使用のＲＡＭ物理ページを確保できるかを判断する（ステップＳ３）。
【００３７】
必要なＲＡＭ物理ページが確保できる場合、処理はステップＳ４に移行する。ステップＳ４において、メモリコントローラ３は、ステップＳ３で確保されたＲＡＭ物理ページをステップＳ２で見つけられた未使用論理ページへの割り当てることを決定する。
【００３８】
次に、メモリコントローラ３は、各テーブルを更新して、ステップＳ４での割り当てに伴って生じた状態を反映させる（ステップＳ５）。すなわち、メモリコントローラ３は、１つ目として、ページテーブル内の割り当てられたデータに対応するエントリにおいて、フラグ欄にＭを書き込むとともに、ＲＡＭアドレス欄に割り当てられたＲＡＭ物理ページアドレスを書き込む。また、２つ目として、メモリコントローラ３は、ＲＡＭ物理ページ管理テーブル内の割り当てられたデータを格納するエントリにおいて、有効／無効表示欄に“１”を書き込み、最終アクセス時刻欄に対応する時刻を書き込む。
【００３９】
ステップＳ３での判断が偽である場合、処理はステップＳ６に移行する。ステップＳ６から開始する一連の処理によって、メモリコントローラ３は、ＲＡＭ４ａ内の領域を確保する。まず、ステップＳ６において、メモリコントローラ３は、ＲＡＭ物理ページ管理テーブル内の最終アクセス時刻欄を見て、最終アクセス時刻の最も古いエントリ（ＲＡＭ物理ページ）を見つける。
【００４０】
メモリコントローラ３は、ＲＡＭ４ａおよび１つ下層のメモリ（ＳＬＣ型ＮＡＮＤフラッシュ）４ｂを制御して、最も古いＲＡＭ物理ページのデータをＳＬＣ型ＮＡＮＤフラッシュ４ｂの消去済みページにコピーする（ステップＳ７）。
【００４１】
メモリコントローラ３は、各テーブルを更新して、ステップＳ６でのコピーに伴って変化した状態を反映させる（ステップＳ８）。すなわち、メモリコントローラ３は、１つ目として、ページテーブル内のコピー対象のデータに対応するエントリにおいて、フラグ欄にＮＳを書き込み、ＮＡＮＤアドレス欄にコピーされたデータを格納することになったＳＬＣ型ＮＡＮＤフラッシュの物理ページを書き込む。また、２つ目として、メモリコントローラ３は、ＲＡＭ物理ページ管理テーブル内のコピー対象のデータを格納していた物理ページに対応するエントリ内の有効／無効表示欄に“０”を書き込む。３つ目として、メモリコントローラ３は、ＳＬＣ型ＮＡＮＤフラッシュ物理ページ管理テーブル内のコピーされたデータを格納することになったページについての有効／無効表示欄に“１”を書き込み、このページを含むブロックに対応するエントリ内の最終アクセス時刻欄に対応する時刻を書き込む。こうして、メモリコントローラ３は、割り当て対象データを格納するに足る領域をＲＡＭ４ａ内に確保する。
【００４２】
処理はステップＳ３に戻り、メモリコントローラ３は、必要なＲＡＭ物理ページが確保できるかを判断する。確保できれば、処理はステップＳ４に進み、確保できなければ、確保できるまでステップＳ６乃至Ｓ８が繰り返される。
【００４３】
ステップＳ６乃至Ｓ８の処理は、書き込み対象データを格納するに必要な物理ページが確保できない場合に限られず、所定の条件が満たされた場合に実行されてもよい。ＲＡＭ４ａ内のデータをＳＬＣ型ＮＡＮＤフラッシュ４ｂ内へと移動する処理が開始する条件として、例えば、ＲＡＭ４ａの所定の容量（例えば全容量の８０％）が使用済みになったことが挙げられる。
【００４４】
以上に示した実施形態の例では、プロセッサ１からのメモリの割り当て要求をメモリコントローラ３が受け取ると、メモリコントローラ３がメモリ割り当ての処理を行なう。別の実施方法としては、メモリコントローラ３がプロセッサ１からのメモリ書き込み要求を受け取った時に、図２のページテーブル（論物変換テーブル）を参照して、書き込み対象の論理ページのフラグが未割り当てを示す“Ｅ”であれば、そのページを対象にして図６の手順でメモリを割り当て、その後、そのページに対して後述する書き込み処理を行うようにしても良い。
【００４５】
メモリコントローラ３は、また、所定の条件が満たされると、ＳＬＣ型ＮＡＮＤフラッシュ４ｂ内のデータに対してガベージコレクションを行って、集められたデータを下層のメモリ（ＭＬＣ型ＮＡＮＤフラッシュ）４ｃに移動する。このことについて、図７を参照して説明する。図７は、メモリコントローラ３によるＳＬＣ型ＮＡＮＤフラッシュ４ｂのガベージコレクションを示すフローチャートである。ＳＬＣ型ＮＡＮフラッシュ４ｂ内のデータをＭＬＣ型ＮＡＮＤフラッシュ４ｃ内へと移動する処理が開始する条件として、例えば、ＳＬＣ型ＮＡＮＤフラッシュ４ｂの所定の容量（例えば全容量の８０％）が使用済みになったことが挙げられる。または、図６のステップＳ７において、ＲＡＭ４ａからコピーされるデータを格納するＳＬＣ型ＮＡＮＤフラッシュ４ｂの消去済みページが不足している際に、図７の処理が実行される。
【００４６】
図７に示されているように、メモリコントローラ３は、ＳＬＣ型ＮＡＮＤフラッシュ物理ページ管理テーブル内の最終アクセス時刻欄を見る。そして、メモリコントローラ３は、最も古いエントリ（ＳＬＣ型ＮＡＮＤフラッシュ４ｂ内のブロック）から古い順に１つまたは複数のブロック内の有効／無効表示欄を見て、有効データを格納しているページを見つける。次いで、メモリコントローラ３は、ＳＬＣ型ＮＡＮＤフラッシュ４ｂおよびＭＬＣ型ＮＡＮＤフラッシュ４ｃを制御して、この見つけられた有効ページ内のデータを、ＭＬＣ型ＮＡＮＤフラッシュメモリ４ｂの消去済みページにコピーする（ステップＳ１１）。このコピーされるデータは、例えば、ＭＬＣ型ＮＡＮＤフラッシュの消去済みブロックの最低位の物理アドレスを有するページから順に詰めて書き込まれる。
【００４７】
次に、メモリコントローラ３は、各テーブルを更新して、ステップＳ１１でのコピーに伴って変化した状態を反映させる（ステップＳ１２）。すなわち、メモリコントローラ３は、１つ目として、ページテーブル内のコピー対象のデータに対応するエントリにおいて、フラグ欄にＮＭを書き込み、ＮＡＮＤアドレス欄にコピーされたデータを格納することになったＭＬＣ型ＮＡＮＤフラッシュの物理ページを書き込む。また、２つ目として、メモリコントローラ３は、ＳＬＣ型ＮＡＮＤフラッシュ物理ページ管理テーブル内のコピー対象のデータを格納していた物理ページに対応するエントリ内の有効／無効表示欄に“０”を書き込む。３つ目として、メモリコントローラ３は、ＭＬＣ型ＮＡＮＤフラッシュ物理ページ管理テーブル内のコピーされたデータを格納することになったページについての有効／無効表示欄に“１”を書き込み、このページを含むブロックに対応するエントリ内の最終アクセス時刻欄に対応する時刻を書き込む。
【００４８】
次に、メモリコントローラ３は、ＭＬＣ型ＮＡＮＤフラッシュ４ｃ内へのコピーの結果として生じた、無効データのみを含むＳＬＣ型ＮＡＮＤフラッシュ４ｂのブロックのデータを消去する（ステップＳ１３）。これにより、新しい消去済みブロックが作成される。
【００４９】
メモリコントローラ３は、また、所定の条件が満たされると、ＭＬＣ型ＮＡＮＤフラッシュ４ｃ内のデータに対してガベージコレクションを行う。このことについて、図８を参照して説明する。図８は、メモリコントローラ３によるＭＬＣ型ＮＡＮＤフラッシュ４ｃ４ｃのガベージコレクションを示すフローチャートである。ＭＬＣ型ＮＡＮＤフラッシュ４ｃのガベージコレクションが開始する条件として、例えば、ＭＬＣ型ＮＡＮＤフラッシュの所定の容量（例えば全容量の８０％）が使用済みになったことが挙げられる。
【００５０】
図８に示されているように、メモリコントローラ３は、ＭＬＣ型ＮＡＮＤフラッシュ物理ページ管理テーブル内の最終アクセス時刻欄を見る。そして、メモリコントローラ３は、最も古いエントリ（ＭＬＣ型ＮＡＮＤフラッシュ物理ブロック）内の有効／無効表示欄を見て、有効データを格納しているページを見つける（ステップＳ２１）。次いで、メモリコントローラ３は、ＭＬＣ型ＮＡＮＤフラッシュ４ｃを制御して、この見つけられた有効ページ内のデータを、ＭＬＣ型ＮＡＮＤフラッシュ内の消去済みブロック内の最低位物理アドレスのページから順に詰めて書き込む（ステップＳ２２）。
【００５１】
次に、メモリコントローラ３は、各テーブルを更新して、ステップＳ２２でのコピーに伴って変化した状態を反映させる（ステップＳ２３）。すなわち、メモリコントローラ３は、１つ目として、ページテーブル内のコピー対象のデータに対応するエントリにおいて、ＮＡＮＤアドレス欄にコピーされたデータを格納することになったＭＬＣ型ＮＡＮＤフラッシュ４ｃの物理ページを書き込む。また、２つ目として、メモリコントローラ３は、ＭＬＣ型ＮＡＮＤフラッシュ物理ページ管理テーブル内のコピー対象のデータを格納していた物理ページに対応するエントリ内の有効／無効表示欄に“０”を書き込む。３つ目として、メモリコントローラ３は、ＭＬＣ型ＮＡＮＤフラッシュ物理ページ管理テーブル内のコピーされたデータを格納することになったページについての有効／無効表示欄に“１”を書き込み、このページを含むブロックに対応するエントリ内の最終アクセス時刻欄に対応する時刻を書き込む。
【００５２】
次に、メモリコントローラ３は、コピーの結果として生じた、無効データのみを含むＭＬＣ型ＮＡＮＤフラッシュ４ｃのブロックのデータを消去する（ステップＳ２４）。これにより、新しい消去済みブロックが作成される。
【００５３】
メモリ４ｃより下層のメモリが設けられている場合、ＭＬＣ型ＮＡＮＤフラッシュ４ｃから集められた有効ページは、この下層メモリにコピーされる。この処理については、ＳＬＣ型ＮＡＮＤフラッシュ４ｂから集められたデータをＭＬＣ型ＮＡＮＤフラッシュへコピーする処理（図７）を全く同様である。以下、全く同様にして、あるメモリ内のデータが、ガベージコレクションによって、このメモリより下層のメモリにコピーされ、各テーブルが更新される。
【００５４】
次に、プロセッサ１からのメモリシステム２内のデータの更新要求（書き込み要求）に対する処理について図９を参照して説明する。図９は、メモリシステム２内のデータの更新要求に対する、メモリコントローラ３による処理のフローチャートである。図９に示されているように、プロセッサ１からデータ更新要求を受け取ると、メモリコントローラ３は、更新対象のデータがＲＡＭ４ａ内に格納されているかを調べる。すなわち、メモリコントローラ３は、ページテーブル内の更新対象データに対応するエントリ内のフラグを確認する（ステップＳ３１）。
【００５５】
ステップＳ３１の判断の結果、フラグがＭである場合、処理はステップＳ３２に移行する。ステップＳ３２において、メモリコントローラ３は、ＲＡＭ４ａを制御して更新要求に従ってデータを更新し、また、ＲＡＭ物理ページ管理テーブル内の更新対象のデータに対するエントリ内の最終アクセス時刻欄に対応する時刻を更新する。
【００５６】
ステップＳ３１の判断の結果、フラグがＭＳまたはＭＮである場合については、図１１を参照して後述する。
【００５７】
ステップＳ３１の判断の結果、フラグがＮＳまたはＮＭである場合、処理はステップＳ３３に移行する。メモリコントローラ３は、ステップＳ３３から開始する一連の処理によって、ＮＡＮＤフラッシュ４ｂまたは４ｃ内のデータをＲＡＭ４ａ上にコピーする。すなわち、メモリコントローラ３は、ページテーブル内の更新対象のデータに対応するエントリ内のＮＡＮＤアドレス欄を見て、この更新対象のデータを格納しているＮＡＮＤフラッシュ４ｂまたは４ｃの物理ページを知得する（ステップＳ３３）。
【００５８】
メモリコントローラ３は、ＲＡＭ４ａとＮＡＮＤフラッシュ４ｂまたは４ｃとを制御して、更新対象のデータをＲＡＭ４ａの未使用ページにコピーする（ステップＳ３４）。次に、メモリコントローラ３は、ＲＡＭ４ａを制御して更新要求に従ってデータを更新し、また、ＲＡＭ物理ページ管理テーブル内の更新対象のデータに対するエントリ内の最終アクセス時刻欄に対応する時刻を書き込む（ステップＳ３５）。
【００５９】
メモリコントローラ３は、各テーブルを更新して、ステップＳ３４でのコピーに伴って生じた状態を反映させる（ステップＳ３６）。すなわち、メモリコントローラ３は、１つ目として、ページテーブル内の更新対象のデータに対応するエントリにおいて、フラグ欄の記述をＮＳまたはＮＭからＭへと更新するとともに、ＲＡＭアドレス欄にコピーされたデータを格納することになったＲＡＭ物理ページを書き込む。また、２つ目として、メモリコントローラ３は、ＲＡＭ物理ページ管理テーブル内のコピーされたデータを格納することになった物理ページに対応するエントリにおいて、有効／無効表示欄に“１”を書き込むとともに、最終アクセス時刻欄に対応する時刻を書き込む。また、３つ目として、メモリコントローラ３は、ＳＬＣ型またはＭＬＣ型ＮＡＮＤフラッシュ物理ページ管理テーブル内の更新対象のデータを格納していたページについての有効／無効表示欄に“０”を書き込む。ＮＡＮＤフラッシュ４ｂまたは４ｃ内の無効データは、ガベージコレクション（後述）によって有効データを含まないブロックの消去によって消去される。
【００６０】
次に、プロセッサ１からのメモリシステム２内のデータの読み出し要求に対する処理について図１０を参照して説明する。図１０は、メモリシステム２内のデータの読み出し要求に対する、メモリコントローラ３による処理のフローチャートである。図１０に示されているように、プロセッサ１からのデータ読み出し要求を受け取ると、メモリコントローラ３は、読み出し対象のデータがＲＡＭ４ａ内に格納されているかを調べる。すなわち、メモリコントローラ３は、ページテーブル内の読み出し対象データに対応するエントリ内のフラグがＭまたはＭＳまたはＭＮであるか否かを判断する（ステップＳ４１）。
【００６１】
ステップＳ４１の判断が真である場合、処理はステップＳ４２に移行する。ステップＳ４２において、メモリコントローラ３は、ＲＡＭ４ａを制御して、読み出し対象データをプロセッサ１へと読み出し、また、ＲＡＭ物理ページ管理テーブル内の読み出し対象のデータに対するエントリ内の最終アクセス時刻欄に対応する時刻を更新する。
【００６２】
ステップＳ４２の判断が偽である場合、処理はステップＳ４３に移行する。メモリコントローラ３は、更新要求の場合（図９）と同様のステップＳ４３以降の処理によって、ＮＡＮＤフラッシュ４ｂまたは４ｃ内のデータをＲＡＭ４ａ上にコピーする。すなわち、メモリコントローラ３は、ページテーブル内の更新対象の論理ページアドレスに対応するエントリ内のＮＡＮＤアドレス欄を見て、この更新対象のデータを格納しているＮＡＮＤフラッシュ４ｂまたは４ｃの物理ページを知得する（ステップＳ４３）。
【００６３】
メモリコントローラ３は、ＲＡＭ４ａとＮＡＮＤフラッシュ４ｂまたは４ｃとを制御して、読み出し対象のデータをＲＡＭ４ａの未使用ページにコピーする（ステップＳ４４）。次に、メモリコントローラ３は、ＲＡＭ４ａを制御して、読み出し対象データをプロセッサ１へと読み出し、また、ＲＡＭ物理ページ管理テーブル内の読み出し対象のデータに対するエントリ内の最終アクセス時刻欄に対応する時刻を書き込む（ステップＳ４５）。
【００６４】
メモリコントローラ３は、各テーブルを更新して、ステップＳ４４でのコピーに伴って生じた状態を反映させる（ステップＳ４６）。すなわち、メモリコントローラ３は、１つ目として、ページテーブル内の更新対象のデータに対応するエントリにおいて、フラグ欄の記述をＮＳからＭＳへまたはＮＭからＭＭへと更新するとともに、ＲＡＭアドレス欄にコピーされたデータを格納することになったＲＡＭ物理ページを書き込む。また、２つ目として、メモリコントローラ３は、ＲＡＭ物理ページ管理テーブル内のコピーされたデータを格納することになった物理ページに対応するエントリにおいて、有効／無効表示欄に“１”を書き込み、最終アクセス時刻欄に対応する時刻を書き込む。
【００６５】
ステップＳ４６に続いてＲＡＭ４ａとＮＡＮＤフラッシュ４ｂまたは４ｃとの両方に有効に存在しているデータに対する更新要求が来た場合、図９のステップＳ３１においてフラグがＭＳまたはＭＭであると判断された場合に相当する。このような更新要求に対する処理について図１１を参照して説明する。図１１は、メモリシステム２内のデータへの更新要求に対する、メモリコントローラ３による処理の一部のフローチャートである。図１１に示されているように、ページテーブル内の更新対象データに対応するエントリ内のフラグがＭＳ／ＭＭである場合、処理はステップＳ５１に移行する。
【００６６】
メモリコントローラ３は、ページテーブル内の更新対象のデータに対応するエントリ内のＮＡＮＤアドレス欄を見て、この更新対象のデータを格納しているＲＡＭ物理ページを知得する（ステップＳ５１）。
【００６７】
メモリコントローラ３は、メモリコントローラ３は、ＲＡＭ４ａを制御して更新要求に従ってデータを更新する（ステップＳ５２）。次に、メモリコントローラ３は、各テーブルを更新して、ステップＳ５２での更新に伴って生じた状態を反映させる（ステップＳ５３）。すなわち、メモリコントローラ３は、１つ目として、ページテーブル内の更新対象のデータに対応するエントリにおいて、フラグ欄の記述をＭＳまたはＭＭからＭへと更新する。ＮＡＮＤフラッシュ４ｂまたは４ｃに格納されている更新対象データは、もはや無効となったからである。また、２つ目として、メモリコントローラ３は、ＳＬＣ型またはＭＬＣ型ＮＡＮＤフラッシュ物理ページ管理テーブル内の更新対象のデータを格納していたページについての有効／無効表示欄に“０”を書き込む。また、３つ目として、メモリコントローラ３は、ＲＡＭ物理ページ管理テーブル内の更新対象のデータに対するエントリ内の最終アクセス時刻欄に対応する時刻を更新する。
【００６８】
図１の構成では、メモリコントローラ３がプロセッサ１と独立して設けられている。しかしながら、本実施形態はこの構成に限られない。例えば、図１２に示されているように、プロセッサ１が、メモリコントローラ３の機能を実現する制御プラグラムに従って、メモリコントローラ３の機能を担ってもよい。この例の場合、ＲＡＭ４ａは、プロセッサ１にバス６によって直接接続される。ＮＡＮＤフラッシュ４ｂはＮＡＮＤフラッシュ４ｂを制御するＮＡＮＤコントローラを介してプロセッサ１と接続され、ＮＡＮＤフラッシュ４ｃはＮＡＮＤフラッシュ４ｃを制御するＮＡＮＤコントローラを介してプロセッサ１と接続される。
【００６９】
以上述べたように、本実施形態に係るメモリコントローラは、複数のメモリを階層を用いて一元管理する。書き込み要求に対して、メモリコントローラは、まず、最も書き換え上限回数の多い最上層のメモリでの書き込み対象データの格納を試み、また、アクセスされていない時間が長いものから順にある階層のメモリから１つ下層のメモリにデータを適宜移動する。そして、最上層以外のメモリ内のデータの読み出しまたは更新要求に対して、メモリコントローラは、読み出しまたは更新対象データを最上層のメモリにコピーして処理を行なう。このような格納位置の管理によって、アクセスされていない時間が短いデータは書き換え上限回数の多いメモリに留まり、アクセスされていない時間が長いデータは書き換え上限回数がより少ないメモリへと移動される。このため、本実施形態のメモリコントローラによって管理される複数のメモリの一部のみの劣化が進むことが回避される。
【００７０】
例えば、データの性質に応じてデータを記憶する記憶装置が選択されることが考えられるが、データの性質を正確に特定することは多くの処理を要し、必ずしも常に正確に特定されるとは限らない。また、データが構成するファイルの識別子を用いることも考えられるが、ある識別子のデータが常に同じ使い方をされるとは限らず、また、識別子を持たないファイルも存在する。これに対して、本実施形態よれば、アクセスされていない時間に従ってデータが移動されるので、このような問題を克服できる。
【００７１】
また、データの移動は、データのアクセスされていない時間という管理が容易な基準により自動的に決定される。このため、本実施形態のメモリコントローラを含むメモリシステムのユーザが移動の決定に必要な情報の入力を求められることや、データの属性を用いる場合と異なって移動の判断が不能に陥る状態が生じたりすることはない。
【００７２】
その他、本発明は、上記各実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で、種々に変形することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、上記各実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【符号の説明】
【００７３】
１…プロセッサ、２…メモリシステム、３…メモリコントローラ、４ａ…メモリ（ＲＡＭ）、４ｂ…メモリ（ＳＬＣ型ＮＡＮＤフラッシュメモリ）、４ｃ…メモリ（ＭＬＣ型ＮＡＮＤフラッシュメモリ）、６…バス。
【図１】
2011145838.tif 000003
【図２】
2011145838.tif 000004
【図３】
2011145838.tif 000005
【図４】
2011145838.tif 000006
【図５】
2011145838.tif 000007
【図６】
2011145838.tif 000008
【図７】
2011145838.tif 000009
【図８】
2011145838.tif 000010
【図９】
2011145838.tif 000011
【図１０】
2011145838.tif 000012
【図１１】
2011145838.tif 000013
【図１２】
2011145838.tif 000014