(57)【要約】【課題】メモリのアクセスに関するメモリ階層の数を削減し、メモリアクセス動作の最適化を容易に実現可能とする。【解決手段】本発明の一態様に係る統合メモリ管理装置２は、キャッシュ３のアクセス先を示す論理アドレスを物理アドレスに変換するプロセッサ１の第１のＭＭＵ７と、キャッシュ３のアクセス先を示す物理アドレスに基づいてキャッシュ３をアクセスするプロセッサ１のキャッシュコントローラ８と、プロセッサ１外のメインメモリ４に対するアクセス状態を示す履歴データを格納するプロセッサ１の履歴格納部１０と、メインメモリ４における論理アドレスと物理アドレスとの関係を示す関係データを格納するプロセッサ１の関係格納部２３と、アクセス履歴データとアドレス関係データとに基づいてメインメモリ４をアクセスするための論理アドレスを物理アドレスに変換し、この物理アドレスに基づいてメインメモリ４をアクセスするプロセッサ１の第２のＭＭＵ９とを具備する。【選択図】      図１
2010066914.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリをアクセスするための論理アドレスを、前記キャッシュメモリをアクセスするための物理アドレスに変換する、プロセッサに備えられる第１のメモリマネジメントユニットと、
前記キャッシュメモリをアクセスするための物理アドレスに基づいて、前記キャッシュメモリをアクセスする、前記プロセッサに備えられるキャッシュコントローラと、
前記プロセッサ外のメインメモリに対するアクセス状態を示すアクセス履歴データを格納する、前記プロセッサに備えられるアクセス履歴格納部と、
前記メインメモリにおける論理アドレスと物理アドレスとの関係を示すアドレス関係データを格納する、前記プロセッサに備えられているアドレス関係格納部と、
前記アクセス履歴データと前記アドレス関係データとに基づいて、前記メインメモリをアクセスするための論理アドレスを、前記メインメモリをアクセスするための物理アドレスに変換し、前記メインメモリをアクセスするための物理アドレスに基づいて、前記メインメモリをアクセスする、前記プロセッサに備えられる第２のメモリマネジメントユニットと
を具備する統合メモリ管理装置。
【請求項２】
キャッシュメモリをアクセスするための論理アドレスを、前記キャッシュメモリをアクセスするための物理アドレスに変換する、プロセッサに備えられる第１のメモリマネジメントユニットと、
前記プロセッサ外のメインメモリに対するアクセス状態を示すアクセス履歴データを格納する、前記プロセッサに備えられるアクセス履歴格納部と、
前記メインメモリにおける論理アドレスと物理アドレスとの関係を示すアドレス関係データを格納する、前記プロセッサに備えられているアドレス関係格納部と、
前記アクセス履歴データと前記アドレス関係データとに基づいて、前記メインメモリをアクセスするための論理アドレスを、前記メインメモリをアクセスするための物理アドレスに変換する、前記プロセッサに備えられる第２のメモリマネジメントユニットと、
前記キャッシュメモリをアクセスするための物理アドレスに基づいて、前記キャッシュメモリをアクセスするとともに、前記メインメモリをアクセスするための物理アドレスに基づいて、前記メインメモリをアクセスする、前記プロセッサに備えられるキャッシュコントローラと
を具備する統合メモリ管理装置。
【請求項３】
請求項１又は請求項２記載の統合メモリ管理装置において、
前記メインメモリは、不揮発性記憶装置であることを特徴とする統合メモリ管理装置。
【請求項４】
少なくとも一つのプロセッサに含まれている第１のプロセッサから、読み出し先論理アドレスを取得する取得手段と、
前記取得手段によって取得された読み出し先論理アドレスを、不揮発性メインメモリの読み出し先物理アドレスに変換するアドレス変換手段と、
前記不揮発性メインメモリから、前記不揮発性メインメモリのページサイズの整数倍又はブロックサイズの前記読み出し先物理アドレスに対応するデータを読み出すアクセス手段と、
読み出されたデータを、前記不揮発性メインメモリのページサイズの整数倍又はブロックサイズに依存しているキャッシュサイズの前記第１のプロセッサのキャッシュメモリに転送する転送手段と
を具備する統合メモリ管理装置。
【請求項５】
請求項４記載の統合メモリ管理装置において、
前記取得手段は、前記第１のプロセッサから、書き込み先論理アドレスと、前記キャッシュサイズの書き込みデータとを取得し、
前記アドレス変換手段は、前記取得手段によって取得された書き込み先論理アドレスを、前記不揮発性メインメモリの書き込み先物理アドレスに変換し、
前記アクセス手段は、前記不揮発性メインメモリの前記書き込み先物理アドレスに対応する位置に、前記書き込みデータを書き込む
ことを特徴とする統合メモリ管理装置。
【請求項６】
請求項５記載の統合メモリ管理装置において、
前記アドレス変換手段は、データ固有の読み書き頻度情報と、前記不揮発性メインメモリの各領域の読み書き回数を含むメモリ使用情報と、前記不揮発性メインメモリのページサイズ、ブロックサイズ、記憶領域ごとの書き換え可能回数及び読み出し可能回数を含むメモリ固有情報とのうちの少なくとも一つに基づいて、ウェアレべリングを行うことを特徴とする統合メモリ管理装置。
【請求項７】
複数のグループ属性を持つ領域に分割され、それぞれのグループ属性をメモリ固有情報として保有する不揮発性メインメモリと、
少なくとも一つのプロセッサに含まれている第１のプロセッサから、書き込み先論理アドレスを取得する取得手段と、
前記取得手段によって取得された書き込み先論理アドレスを、前記不揮発性メインメモリの書き込み先物理アドレスに変換するアドレス変換手段と
を具備し、
前記アドレス変換手段は、前記第１のプロセッサ上で動作するファイル管理プログラムにより定義されたデータ固有の読み書き頻度情報と、前記メモリ固有情報とを参照し、前記データ固有の読み書き頻度情報に対応するグループ属性の領域内に書き込み先物理アドレスを対応させる
ことを特徴とする統合メモリ管理装置。
【請求項８】
プロセッサに備えられる統合メモリ管理装置により、前記プロセッサ外の不揮発性メインメモリに対するアクセス状態を示すアクセス履歴データと、前記不揮発性メインメモリにおける論理アドレスと物理アドレスとの関係を示すアドレス関係データとを参照し、
前記統合メモリ管理装置により、前記アクセス履歴データと前記アドレス関係データとに基づいて、前記不揮発性メインメモリをアクセスするための論理アドレスを、前記不揮発性メインメモリをアクセスするための物理アドレスに変換し、前記不揮発性メインメモリをアクセスするための物理アドレスに基づいて、前記不揮発性メインメモリをアクセスする
ことを特徴とするメモリ管理方法。
【請求項９】
統合メモリ管理装置により、少なくとも一つのプロセッサに含まれている第１のプロセッサから、読み出し先論理アドレスを取得し、
前記統合メモリ管理装置により、取得された前記読み出し先論理アドレスを、不揮発性メインメモリの読み出し先物理アドレスに変換し、
前記統合メモリ管理装置により、前記不揮発性メインメモリから、前記不揮発性メインメモリのページサイズの整数倍又はブロックサイズの前記読み出し先物理アドレスに対応するデータを読み出し、
前記統合メモリ管理装置により、読み出されたデータを、前記不揮発性メインメモリのページサイズの整数倍又はブロックサイズに依存しているキャッシュサイズの前記第１のプロセッサのキャッシュメモリに転送する
ことを特徴とするメモリ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリとメインメモリとに対する書き込み又は読み出しを管理する装置及びメモリ管理方法に関する。
【背景技術】
【０００２】
従来において、ＮＡＮＤ型フラッシュメモリの管理機能は、ファイルシステムに実装される。
【０００３】
ＭＰＵ（Micro Processing Unit）内にキャッシュメモリが備えられており、メインメモリとしてＤＲＡＭ（Dynamic Random Access Memory）が用いられており、さらにＭＰＵがＮＡＮＤ型フラッシュメモリをアクセスする場合、従来においては、以下のメモリ階層にそった動作が行われる。
【０００４】
まず、ＭＰＵは、ＭＭＵ（Memory Management Unit）により、論理アドレスを物理アドレスに変換し、キャッシュメモリをアクセスする。
【０００５】
ここで、ＭＰＵは、オペレーティングシステム（ＯＳ）の仮想記憶管理により、一部のデータについて、メインメモリであるＤＲＡＭにアクセスを行う。
【０００６】
さらに、ＭＰＵは、ＮＡＮＤ型フラッシュメモリにアクセスが必要な場合に、フラッシュファイルシステム（Flash File System）により、ＮＡＮＤ型フラッシュメモリにおける不良ブロックを避ける制御、ＮＡＮＤ型フラッシュメモリの全ブロックを隔たりなくアクセスさせる制御などを行い、ＮＡＮＤ型フラッシュメモリの物理位置を決定する。
【０００７】
ＭＰＵは、決定された物理位置に基づいて、ＮＡＮＤ型フラッシュメモリをアクセスする。
【０００８】
従来のＭＰＵにおいては、メモリ階層の数が多くなるほど、異なる階層に含まれる動作が多くなり、異なる階層の動作間で最適化を行うことが困難である。例えば、ＭＰＵがキャッシュメモリのデータを入れ替える時に、ＮＡＮＤ型フラッシュメモリ特有の不良ブロック管理を行うなどのような制御は、それぞれの動作が異なるメモリ階層に属するため、実現困難である。
【０００９】
特許文献１（特開２００１−２６６５８０号公報）においては、種類の異なる半導体メモリ装置を共通のバスに接続することを可能にする発明が開示されている。
【００１０】
この特許文献１の半導体メモリ装置は、ランダムアクセスメモリチップと、前記ランダムアクセスメモリチップを備えたパッケージを含む。前記パッケージは、前記ランダムアクセスメモリチップを外部装置に電気的に連結する複数のピンを有する。複数のピンは、前記ランダムアクセスメモリと、電気的に消去及びプログラム可能な不揮発性半導体メモリとに、共通にメモリ機能を提供する。前記複数のピンの各々は、不揮発性半導体メモリの対応するピンの位置に配列されている。
【特許文献１】特開２００１−２６６５８０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明は、以上のような実情に鑑みてなされたもので、メモリのアクセスに関するメモリ階層の数を削減し、メモリアクセス動作の最適化を容易に実現可能とするためのメモリ管理装置及びメモリ管理方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の第１の態様に係る統合メモリ管理装置は、キャッシュメモリをアクセスするための論理アドレスを、キャッシュメモリをアクセスするための物理アドレスに変換する、プロセッサに備えられる第１のメモリマネジメントユニットと、キャッシュメモリをアクセスするための物理アドレスに基づいて、キャッシュメモリをアクセスする、プロセッサに備えられるキャッシュコントローラと、プロセッサ外のメインメモリに対するアクセス状態を示すアクセス履歴データを格納する、プロセッサに備えられるアクセス履歴格納部と、メインメモリにおける論理アドレスと物理アドレスとの関係を示すアドレス関係データを格納する、プロセッサに備えられているアドレス関係格納部と、アクセス履歴データとアドレス関係データとに基づいて、メインメモリをアクセスするための論理アドレスを、メインメモリをアクセスするための物理アドレスに変換し、メインメモリをアクセスするための物理アドレスに基づいて、メインメモリをアクセスする、プロセッサに備えられる第２のメモリマネジメントユニットとを具備する。
【００１３】
本発明の第２の態様に係る統合メモリ管理装置は、キャッシュメモリをアクセスするための論理アドレスを、キャッシュメモリをアクセスするための物理アドレスに変換する、プロセッサに備えられる第１のメモリマネジメントユニットと、プロセッサ外のメインメモリに対するアクセス状態を示すアクセス履歴データを格納する、プロセッサに備えられるアクセス履歴格納部と、メインメモリにおける論理アドレスと物理アドレスとの関係を示すアドレス関係データを格納する、プロセッサに備えられているアドレス関係格納部と、アクセス履歴データとアドレス関係データとに基づいて、メインメモリをアクセスするための論理アドレスを、メインメモリをアクセスするための物理アドレスに変換する、プロセッサに備えられる第２のメモリマネジメントユニットと、キャッシュメモリをアクセスするための物理アドレスに基づいて、キャッシュメモリをアクセスするとともに、メインメモリをアクセスするための物理アドレスに基づいて、メインメモリをアクセスする、プロセッサに備えられるキャッシュコントローラとを具備する。
【００１４】
本発明の第３の態様に係る統合メモリ管理装置は、少なくとも一つのプロセッサに含まれている第１のプロセッサから、読み出し先論理アドレスを取得する取得手段と、取得手段によって取得された読み出し先論理アドレスを、不揮発性メインメモリの読み出し先物理アドレスに変換するアドレス変換手段と、不揮発性メインメモリから、不揮発性メインメモリのページサイズの整数倍又はブロックサイズの読み出し先物理アドレスに対応するデータを読み出すアクセス手段と、読み出されたデータを、不揮発性メインメモリのページサイズの整数倍又はブロックサイズに依存しているキャッシュサイズの第１のプロセッサのキャッシュメモリに転送する転送手段とを具備する。
【００１５】
本発明の第４の態様に係る統合メモリ管理装置は、複数のグループ属性を持つ領域に分割され、それぞれのグループ属性をメモリ固有情報として保有する不揮発性メインメモリと、少なくとも一つのプロセッサに含まれている第１のプロセッサから、書き込み先論理アドレスを取得する取得手段と、取得手段によって取得された書き込み先論理アドレスを、不揮発性メインメモリの書き込み先物理アドレスに変換するアドレス変換手段とを具備する。アドレス変換手段は、第１のプロセッサ上で動作するファイル管理プログラムにより定義されたデータ固有の読み書き頻度情報と、メモリ固有情報とを参照し、データ固有の読み書き頻度情報に対応するグループ属性の領域内に書き込み先物理アドレスを対応させる。
【００１６】
本発明の第５の態様に係るメモリ管理方法は、プロセッサに備えられる統合メモリ管理装置により、プロセッサ外の不揮発性メインメモリに対するアクセス状態を示すアクセス履歴データと、不揮発性メインメモリにおける論理アドレスと物理アドレスとの関係を示すアドレス関係データとを参照し、統合メモリ管理装置により、アクセス履歴データとアドレス関係データとに基づいて、不揮発性メインメモリをアクセスするための論理アドレスを、不揮発性メインメモリをアクセスするための物理アドレスに変換し、不揮発性メインメモリをアクセスするための物理アドレスに基づいて、不揮発性メインメモリをアクセスする。
【００１７】
本発明の第６の態様に係るメモリ管理方法は、統合メモリ管理装置により、少なくとも一つのプロセッサに含まれている第１のプロセッサから、読み出し先論理アドレスを取得し、統合メモリ管理装置により、取得された読み出し先論理アドレスを、不揮発性メインメモリの読み出し先物理アドレスに変換し、統合メモリ管理装置により、不揮発性メインメモリから、不揮発性メインメモリのページサイズの整数倍又はブロックサイズの読み出し先物理アドレスに対応するデータを読み出し、統合メモリ管理装置により、読み出されたデータを、不揮発性メインメモリのページサイズの整数倍又はブロックサイズに依存しているキャッシュサイズの第１のプロセッサのキャッシュメモリに転送する。
【発明の効果】
【００１８】
本発明により、メモリのアクセスに関するメモリ階層の数を削減することができ、メモリアクセス動作の最適化を容易に実現することができる。
【発明を実施するための最良の形態】
【００１９】
以下、図面を参照しながら本発明の各実施の形態について説明する。なお、以下の説明において、略又は実質的に同一の機能及び構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【００２０】
（第１の実施の形態）
本実施の形態の統合メモリ管理装置（フラットメモリ管理装置）は、ＭＰＵに具備されており、キャッシュメモリとメインメモリとについてメモリ管理を行う。統合メモリ管理装置は、メモリアクセスに関するメモリ階層の数を削減し、メモリアクセスの最適化を容易に実現可能にする。
【００２１】
本実施の形態においては、ＭＰＵのＭＭＵと、ＭＰＵのキャッシュコントローラと、メインメモリ用ＭＭＵとを統合した統合メモリ管理装置について説明する。
【００２２】
図１は、本実施の形態に係る統合メモリ管理装置の一例を示すブロック図である。なお、本実施の形態においては、メインメモリがＮＡＮＤ型フラッシュメモリの場合を例として説明するが、他の記憶装置を用いることもできる。また、本実施の形態において、アクセスとは、データ（又はプログラム）の読み出しと書き込みの少なくとも一方を含むとする。
【００２３】
ＭＰＵ１は、統合メモリ管理装置２を具備し、ＮＡＮＤ型フラッシュメインメモリ４をアクセスする。
【００２４】
ＮＡＮＤ型フラッシュメインメモリ４は、内部に、アドレス変換テーブル５、書き換え回数データ６を記憶する。書き換え回数データ６は、メインメモリのアクセス状態を示すメインメモリ履歴データに対応する。
【００２５】
アドレス変換テーブル５は、ＮＡＮＤ型フラッシュメインメモリ４における論理アドレスと物理位置（Physical Location）又は物理アドレスとを関連付けたデータである。
【００２６】
書き換え回数データ６は、ＮＡＮＤ型フラッシュメインメモリ４の各ページ又はブロックの書き換え回数を表す。
【００２７】
統合メモリ管理装置２は、ＭＭＵ７、キャッシュコントローラ８、１次キャッシュメモリ３、２次キャッシュメモリ２２、メインメモリ用ＭＭＵ９、アクセス履歴格納部（NAND Information Registers）１０を具備する。また、キャッシュコントローラ８は、１次キャッシュメモリ３用の第１のキャッシュコントローラ８ａと２次キャッシュメモリ２２用の第２のキャッシュコントローラ８ｂとを具備する。さらに、メインメモリ用ＭＭＵ９は、アドレス関係格納部２３を具備する。なお、メインメモリ用ＭＭＵ９と、アドレス関係格納部２３とは、分離していてもよい。
【００２８】
本実施の形態においては、キャッシュメモリが２つの場合を例に説明するが、キャッシュメモリの数は１つ又は３以上であってもよい。
【００２９】
ＭＭＵ７は、キャッシュメモリ３の論理アドレスを物理アドレスに変換する。
【００３０】
１次キャッシュメモリ３は、タグ格納領域３ａと、ライン格納領域３ｂとを持つ。
【００３１】
２次キャッシュメモリ２２は、タグ格納領域２２ａと、ライン格納領域２２ｂとを持つ。
【００３２】
本実施の形態において、１次キャッシュメモリ３のラインサイズ及び２次キャッシュメモリ２２のラインサイズは、ＮＡＮＤ型フラッシュメインメモリ４のブロックと同じサイズ（例えば２５６キロバイト）か、ＮＡＮＤ型フラッシュメインメモリ４のページサイズの倍数となるサイズとする。これにより、ＮＡＮＤ型フラッシュメインメモリ４のデータを１次キャッシュメモリ３又は２次キャッシュメモリ２２に移動する動作、及び１次キャッシュメモリ３又は２次キャッシュメモリ２２のデータをＮＡＮＤ型フラッシュメインメモリ４に移動する動作をページ単位、ページサイズの整数倍単位、又はブロック単位で行うことができ、データの移動を簡素化できる。
【００３３】
本実施の形態において、１次キャッシュメモリ３及び２次キャッシュメモリ２２は、例えばライトバック型であるとする。また、２次キャッシュメモリ２２は、１次キャッシュメモリよりも記憶容量が大きいが低速であるとする。
【００３４】
第１のキャッシュコントローラ８ａは、１次キャッシュメモリ３に対するアクセスを制御する。
【００３５】
より具体的には、第１のキャッシュコントローラ８ａは、１次キャッシュメモリ３からデータを読み出す場合には、ＭＭＵ７から得られた物理アドレスにそって、１次キャッシュメモリ３における物理アドレスに対応するデータを読み出す。また、第１のキャッシュコントローラ８ａは、１次キャッシュメモリ３にデータを書き込む場合には、ＭＭＵ７から得られた物理アドレスにそって、１次キャッシュメモリ３における物理アドレスに対応する位置に、書き込み対象のデータを書き込む。
【００３６】
第２のキャッシュコントローラ８ｂは、２次キャッシュメモリ２２に対するアクセスを制御する。
【００３７】
より具体的には、第２のキャッシュコントローラ８ｂは、２次キャッシュメモリ２２からデータを読み出す場合には、ＭＭＵ７から得られた物理アドレスにそって、２次キャッシュメモリ２２における物理アドレスに対応するデータを読み出す。また、第２のキャッシュコントローラ８ｂは、２次キャッシュメモリ２２にデータを書き込む場合には、ＭＭＵ７から得られた物理アドレスにそって、２次キャッシュメモリ２２における物理アドレスに対応する位置に、書き込み対象のデータを書き込む。
【００３８】
メインメモリ用ＭＭＵ９は、ＮＡＮＤ型フラッシュメインメモリ４に対するアクセスを制御する。
【００３９】
メインメモリ用ＭＭＵ９は、必要に応じて、ＮＡＮＤ型フラッシュメインメモリ４のアドレス変換テーブル５の一部又は全部を、アドレス関係データとして、アドレス関係格納部２３に格納する。また、メインメモリ用ＭＭＵ９は、必要に応じて、ＮＡＮＤ型フラッシュメインメモリ４の書き換え回数データ６の一部又は全部を、アクセス履歴データとして、アクセス履歴格納部１０に格納する。
【００４０】
メインメモリ用ＭＭＵ９は、ＮＡＮＤ型フラッシュメインメモリ４の論理アドレスを物理位置に変換する。
【００４１】
メインメモリ用ＭＭＵ９は、ＮＡＮＤ型フラッシュメインメモリ４の物理位置に基づいて、ＮＡＮＤ型フラッシュメインメモリ４からデータの読み出しを行い、第１のキャッシュコントローラ８ａ又は第２のキャッシュコントローラ８ｂを経由して、１次キャッシュメモリ３又は２次キャッシュメモリ２２にデータを記憶する。
【００４２】
メインメモリ用ＭＭＵ９は、ＮＡＮＤ型フラッシュメインメモリ４から新たなデータを読み出した場合には、その新たなデータに関するアドレス変換テーブルのデータ、及び書き換え回数データを読み出し、それぞれアドレス関係格納部２３及びアクセス履歴格納部１０に格納する。
【００４３】
メインメモリ用ＭＭＵ９は、ＮＡＮＤ型フラッシュメインメモリ４にデータを書き込む場合、アドレス関係データ及びアクセス履歴データに基づいて、ＮＡＮＤ型フラッシュメインメモリ４の全領域又は全ブロックを隔たりなくアクセスさせる制御、ＮＡＮＤ型フラッシュメインメモリ４の各領域又はブロックの書き換え回数を均等化するための制御、不良領域又は不良ブロックを避ける制御などを行う。さらに、メインメモリ用ＭＭＵ９は、１次キャッシュメモリ３又は２次キャッシュメモリ２２に記憶されていたデータを、第１のキャッシュコントローラ８ａ又は第２のキャッシュコントローラ８ｂを経由して取得し、この取得したデータをＮＡＮＤ型フラッシュメインメモリ４の物理位置に基づいてＮＡＮＤ型フラッシュメインメモリ４に記憶する。
【００４４】
メインメモリ用ＭＭＵ９は、ＮＡＮＤ型フラッシュメインメモリ４にデータが書き込まれた場合に、書き込まれたデータに関する論理アドレスと物理位置との関係に基づいてアドレス関係格納部２３のアドレス関係データを更新し、また、アクセス履歴格納部１０のアクセス履歴データを更新する。
【００４５】
メインメモリ用ＭＭＵ９は、必要に応じて、メインメモリ用ＭＭＵ９に格納されているアドレス関係データと、アクセス履歴格納部１０に記憶されているアクセス履歴データとを、それぞれＮＡＮＤ型フラッシュメインメモリ４のアドレス変換テーブル５と書き換え回数データ６とに対して反映する。すなわち、メインメモリ用ＭＭＵ９は、ＭＰＵ１に記憶されているアドレス関係データと、ＮＡＮＤ型フラッシュメインメモリ４に記憶されているアドレス変換テーブル５とを整合させる。また、メインメモリ用ＭＭＵ９は、アクセス履歴格納部１０のアクセス履歴データと、ＮＡＮＤ型フラッシュメインメモリ４の書き換え回数データ６とを整合させる。
【００４６】
アクセス履歴格納部１０は、ＮＡＮＤ型フラッシュメインメモリ４のページ又はブロック（物理位置）のアクセス状態の履歴を格納する。本実施の形態において、アクセス履歴格納部１０は、ＮＡＮＤ型フラッシュメインメモリ４における各ページ又はブロックの書き換え回数データ６のうち、一部又は全部のページ又はブロックについての書き換え回数データを格納する。
【００４７】
例えば、各ブロックの書き換え回数は４バイトで記録され、各ブロックサイズは２５６キロバイトとする。この場合において、ＮＡＮＤ型フラッシュメインメモリ４の記憶容量が１メガバイトであるとすると、ＮＡＮＤ型フラッシュメインメモリ４に記憶されるブロック数は４ブロックであり、各ブロックの書き換え回数を記憶するために必要な記憶容量は１６バイトとなる。同様の場合において、ＮＡＮＤ型フラッシュメインメモリ４の記憶容量が１ギガバイトであるとすると、ＮＡＮＤ型フラッシュメインメモリ４に記憶されるブロック数は４０９６ブロックであり、各ブロックの書き換え回数を記憶するために必要な記憶容量は１６キロバイトとなる。さらに、同様の場合において、ＮＡＮＤ型フラッシュメインメモリ４の記憶容量が１６ギガバイトであるとすると、各ブロックの書き換え回数を記憶するために必要な記憶容量は６４キロバイトとなる。
【００４８】
例えば、ＮＡＮＤ型フラッシュメインメモリ４の記憶容量が例えば１２８ギガバイトなどのように大きくなった場合、アクセス履歴格納部１０は、ＮＡＮＤ型フラッシュメインメモリ４における書き換え回数データ６の一部を格納する。このように、アクセス履歴格納部１０は、書き換え回数データ６の一部を格納するため、書き換え回数にはｐｏｓが付されている。ｐｏｓはキャッシュタグと同様の手法で使用される。
【００４９】
メインメモリ用ＭＭＵ９の動作例の概略を説明する。
【００５０】
メインメモリ用ＭＭＵ９は、ＮＡＮＤ型フラッシュメインメモリ４のアドレス変換テーブル５の一部を、アドレス関係格納部２３に記憶し、書き換え回数データ６の一部をアクセス履歴格納部１０に記憶する。
【００５１】
メインメモリ用ＭＭＵ９は、キャッシュメモリ３，２２に読み出し対象のデータが記憶されておらず、ＮＡＮＤ型フラッシュメインメモリ４からデータの読み出しを行う場合、ＮＡＮＤ型フラッシュメインメモリ４からデータを読み出す。そして、メインメモリ用ＭＭＵ９は、アドレス変換テーブル５のうち読み出したデータに関するデータをアドレス関係格納部２３に記憶する。また、メインメモリ用ＭＭＵ９は、書き換え回数データ６のうち読み出したデータに関するデータをアクセス履歴格納部１０に記憶する。
【００５２】
ＭＰＵ１からＮＡＮＤ型フラッシュメインメモリ４へのデータの書き込みを行う場合、メインメモリ用ＭＭＵ９は、ＮＡＮＤ型フラッシュメインメモリ４における論理アドレスを物理位置に変換し、キャッシュライン３ｂ，２２ｂにおける書き込み対象のデータをＮＡＮＤ型フラッシュメインメモリ４に書き込む。加えて、メインメモリ用ＭＭＵ９は、アドレス関係格納部２３に記憶しているアドレス関係データと、アクセス履歴格納部１０に記憶されているアクセス履歴データとを更新する。
【００５３】
そして、メインメモリ用ＭＭＵ９は、アドレス関係格納部２３のアドレス関係データと、アクセス履歴格納部１０のアクセス履歴データとに基づいて、それぞれアドレス変換テーブル５と書き換え回数データ６を更新する。
【００５４】
例えば、１次キャッシュメモリ３がリード・オンリー（Read Only）の場合、ＭＰＵ１からキャッシュライン３ｂへの書き込みはない。この場合、メインメモリ用ＭＭＵ９は、第１のキャッシュコントローラ８ａを用いて、ＮＡＮＤ型フラッシュメインメモリ４から読み出したデータを１次キャッシュメモリ３に上書きする。この１次キャッシュメモリ３に記憶されたデータの読み出しが発生すると、第１のキャッシュコントローラ８ａは、１次キャッシュメモリ３からデータを読み出す。
【００５５】
一方、１次キャッシュメモリ３がリード・オンリーでない場合、ＭＰＵ１は、プログラムを実行して得られたデータをキャッシュメモリ３に書き込む。ＭＰＵ１からキャッシュライン３ｂにデータの書き込みが発生した場合、キャッシュライン３ｂのデータをＮＡＮＤ型フラッシュメインメモリ４にライトバック（Write Back）する。この場合、メインメモリ用ＭＭＵ９は、ライトバックされるデータをキャッシュメモリ３から第１のキャッシュコントローラ８ａ経由で読み出す。そして、メインメモリ用ＭＭＵ９は、アクセス履歴格納部１０のアクセス履歴データに基づいて、ＮＡＮＤ型フラッシュメインメモリ４においてライトバックされる位置として、所定数より少ない書き換え回数のページ又はブロックを選択する。メインメモリ用ＭＭＵ９は、この選択されたページ又はブロックにライトバックされるデータを記憶し、選択されたページ又はブロックについて、ＮＡＮＤ型フラッシュメインメモリ４用の論理アドレスと物理位置との変換関係を示すアドレス関係データを更新し、選択されたページ又はブロックについてアクセス履歴格納部１０の書き換え回数を更新する。
【００５６】
その後、必要に応じて、アドレス関係格納部２３とアクセス履歴格納部１０の内容により、アドレス変換テーブル５と書き換え回数データ６とを更新する。
【００５７】
図２は、本実施の形態に係る統合メモリ管理装置２のメモリ階層の一例を示す図である。
【００５８】
この例におけるメモリ階層は、ＭＭＵ７の属する階層と、メインメモリ用ＭＭＵ９及びキャッシュコントローラ８との属する階層を持つ。
【００５９】
ＭＭＵ７の階層では、論理アドレスが物理アドレスに変換される。
【００６０】
メインメモリ用ＭＭＵ９の属する階層では、例えば、アクセス先となるＮＡＮＤ型フラッシュメインメモリ４の物理位置又は物理アドレスが決定される。メインメモリ用ＭＭＵ９の属する階層では、書き込み回数が所定数以下（例えば最小）のページ又はブロックをアクセスさせる制御が行われる。
【００６１】
そして、統合メモリ管理装置２は、決定された物理位置に基づいて、ＮＡＮＤ型フラッシュメインメモリ４をアクセスする。
【００６２】
図３は、本実施の形態に係る統合メモリ管理装置２を備えたＭＰＵ１が、ＮＡＮＤ型フラッシュメインメモリ４のデータ、書き換え回数データ６の一部、アドレス変換テーブル５の一部を記憶する場合の動作の一例を示すフローチャートである。
【００６３】
ステップＳ１において、メインメモリ用ＭＭＵ９は、ＭＰＵ１によって使用されるＮＡＮＤ型フラッシュメインメモリ４のデータの一部（最初は、先頭から１ギガバイト分などでもよい）のデータを読み出す。キャッシュコントローラ８は、読み出されたデータを、キャッシュメモリ３，８のキャッシュライン３ｂ，８ｂに書き込む。
【００６４】
ステップＳ２において、メインメモリ用ＭＭＵ９は、ＮＡＮＤ型フラッシュメインメモリ４に保管されている書き換え回数データ６の一部（キャッシュメモリ３，８に格納されたデータに対するブロックの書き換え回数など。なお、最初は、先頭から１ギガバイト分などでもよい）を、ＭＰＵ１内のアクセス履歴格納部１０にコピーする。
【００６５】
ステップＳ３において、メインメモリ用ＭＭＵ９は、ＮＡＮＤ型フラッシュメインメモリ４に保管されているアドレス変換テーブル５の一部（キャッシュメモリ３，８に格納されたデータに対応するブロックの論理アドレスと物理位置との関係を示すデータなど。なお、最初は、先頭から１ギガバイト分などでもよい）を、ＭＰＵ１内のメインメモリ用ＭＭＵ９のアドレス関係格納部２３にコピーする。
【００６６】
なお、このステップＳ１〜Ｓ３は、自由な順序で実行されてよく、並列に実行されてもよい。
【００６７】
図４は、本実施の形態に係る統合メモリ管理装置２を備えたＭＰＵ１において、１次キャッシュメモリ３又はＮＡＮＤ型フラッシュメインメモリ４からデータを読み出す場合の動作の一例を示すフローチャートである。なお、２次キャッシュメモリ２２からデータを読み出す場合についても、１次キャッシュメモリ３の場合と同様である。
【００６８】
ステップＴ１において、ＭＭＵ７及びメインメモリ用ＭＭＵ９は、読み出し対象の論理アドレスを物理アドレスに変換する。
【００６９】
読み出し対象の物理アドレスが１次キャッシュメモリ３を示す場合、ステップＴ２ａにおいて、第１のキャッシュコントローラ８ａは、物理アドレスに基づいて１次キャッシュメモリ３から読み出し対象のデータを読み出す。
【００７０】
読み出し対象の物理アドレス（物理位置）がＮＡＮＤ型フラッシュメインメモリ４を示す場合、ステップＴ２ｂにおいて、メインメモリ用ＭＭＵ９は、物理アドレスに対応するデータを、ＮＡＮＤ型フラッシュメインメモリ４から読み出す。
【００７１】
ステップＴ３ｂにおいて、メインメモリ用ＭＭＵ９は、ＮＡＮＤ型フラッシュメインメモリ４から読み出したデータを、第１のキャッシュコントローラ８ａ経由で、１次キャッシュメモリ３に上書きする。
【００７２】
なお、メインメモリ用ＭＭＵ９は、ＮＡＮＤ型フラッシュメインメモリ４から新たに読み出したデータに対応するアドレス関係データ及びアクセス履歴データがそれぞれアドレス関係格納部及びアクセス履歴格納部に記憶されていない場合、ＮＡＮＤ型フラッシュメインメモリ４のアドレス変換テーブル５及び書き換え回数データ６に基づいてアドレス関係格納部及びアクセス履歴格納部に新たに読み出したデータに対応するデータを記憶する。
【００７３】
図５は、本実施の形態に係る統合メモリ管理装置２を備えたＭＰＵ１から、１次キャッシュメモリ３のキャッシュライン３ｂへの上書きが発生し、さらに１次キャッシュメモリ３のデータをＮＡＮＤ型フラッシュメインメモリ４に記憶する場合の動作の一例を示すフローチャートである。なお、２次キャッシュメモリ２２への上書きが発生した場合についても、この１次キャッシュメモリ３の場合と同様である。
【００７４】
ステップＵ１において、ＭＭＵ７は、論理アドレスから物理アドレスへの変換を行う。
【００７５】
ステップＵ２において、第１のキャッシュコントローラ８ａは、物理アドレスに応じて、書き込み対象のデータを、１次キャッシュメモリ３に記憶する。
【００７６】
ステップＵ３において、メインメモリ用ＭＭＵ９は、アドレス関係格納部２３のアドレス関係データと、アクセス履歴格納部１０のアクセス履歴データとに基づいて、書き換え回数がある値より少ないブロックの位置又は一番書き換えの少ないブロックの位置を、ＮＡＮＤ型フラッシュメインメモリ４における書き込み位置として選択する。
【００７７】
ステップＵ４において、メインメモリ用ＭＭＵ９は、ＮＡＮＤ型フラッシュメインメモリ４における選択された位置に、書き込み対象のデータを記憶する。
【００７８】
ステップＵ５において、メインメモリ用ＭＭＵ９は、上書き後のキャッシュライン３ｂに対応するように、アドレス関係格納部２３のアドレス関係データを更新し、アクセス履歴格納部１０のアクセス履歴データを更新する。
【００７９】
ステップＵ６において、メインメモリ用ＭＭＵ９は、メインメモリ用ＭＭＵ９に格納されているアドレス関係データと整合するように、ＮＡＮＤ型フラッシュメインメモリ４のアドレス変換テーブル５を更新し、また、アクセス履歴格納部１０に格納されているアドレス履歴データと整合するように、ＮＡＮＤ型フラッシュメインメモリ４の書き換え回数データ６を更新する。例えば、ＮＡＮＤ型フラッシュメインメモリ４の書き換え回数データの更新は、ＭＰＵ１の電源が切られるとき、又は、ＭＰＵ１のアクセス履歴格納部１０の書き換え時に、実行される。
【００８０】
本実施の形態において、統合メモリ管理装置２は、書き換え回数に基づいて書き換えを行うブロックの物理位置を選択している。しかしながら、これに代えて、統合メモリ管理装置２は、不良領域又は不良ブロックを避ける制御、ＮＡＮＤ型フラッシュメインメモリ４の全領域又は全ブロックを隔たりなくアクセスさせる制御、アクセス先の領域又はブロックの位置が分散されるようにする制御を行うとしてもよい。この場合、アクセス履歴格納部１０には、ＮＡＮＤ型フラッシュメインメモリ４に記憶されている不良領域又は不良ブロックの発生位置、ＮＡＮＤ型フラッシュメインメモリ４の書き換え位置の分布などのデータが記憶される。また、統合メモリ管理装置２は、各種の制御を自由に組み合わせて、書き換えを行う領域又はブロックの位置を選択するとしてもよい。
【００８１】
本実施の形態において、統合メモリ管理装置２は、キャッシュメモリ３のデータ入れ替え時に、ＮＡＮＤ型フラッシュメインメモリ４のガーベージコレクション処理又は消去のための制御を行うとしてもよい。
【００８２】
本実施の形態において、メインメモリ用ＭＭＵ９のアドレス関係格納部２３とアクセス履歴格納部１０とのうち、少なくとも一方について、二次キャッシュメモリを用いてデータを格納するとしてもよい。すなわち、アドレス関係格納部２３に記憶されているアドレス関係データは、２次キャッシュメモリ２２に格納されるとしてもよい。また、アクセス履歴格納部１０に記憶される書き込み回数などを含むアクセス履歴データは、２次キャッシュメモリ２２に格納されるとしてもよい。
【００８３】
本実施の形態に係るＭＰＵ１の統合メモリ管理装置２においては、アクセス履歴格納部１０に格納されているデータを用いて書き込みを行う対象となるＮＡＮＤ型フラッシュメインメモリ４の物理位置を選択し、ライトバックするアルゴリズムを採用し、このアルゴリズムを実行するプログラムを用いることができる。例えば、書き換え回数の多い領域又はブロックの書き換えを避けるなどのような高度なアルゴリズムを用いることができる。
【００８４】
以上説明した本実施の形態に係る統合メモリ管理装置２においては、ＭＰＵ１内で、ＭＭＵ７、第１のキャッシュコントローラ８ａ、第１のキャッシュコントローラ８ｂ、キャッシュメモリ３、キャッシュメモリ２２、メインメモリ用ＭＭＵ９、アクセス履歴格納部１０が統合された構成が採用されている。すなわち、本実施の形態においては、ＮＡＮＤ型フラッシュメインメモリ４のメモリマッピング管理がＭＰＵ１の統合メモリ管理装置２で実行されるアーキテクチャが実現されている。
【００８５】
これにより、メモリ階層において、オーバーヘッドの大きい階層を削除することができる。
【００８６】
本実施の形態においては、一般的なＮＡＮＤ型フラッシュメモリに備えられているメモリコントローラの動作を、ＭＰＵ１側で実行する。このように、ＭＰＵの動作とメモリコントローラの動作とを組み合わせてＭＰＵ１で実行することで、メモリ制御を協調させることができる。
【００８７】
本実施の形態においては、多層化されていたメモリ階層を単純化することができ、アクセスに必要な時間、製造時に必要な時間、製造時に必要な費用などの様々なコストを削減することができる。
【００８８】
本実施の形態においては、メモリ階層がシンプルになるため、プログラマはどこの階層でＭＭＵ変換、キャッシュメモリの置き換えが発生するかを把握することが容易であり、プログラム・オプティマイズを容易に行うことができる。
【００８９】
本実施の形態においては、ＭＰＵ１のキャッシュ動作とメインメモリのアクセス動作との間で最適化を容易に実現することができる。
【００９０】
（第２の実施の形態）
本実施の形態においては、上記第１の実施の形態の変形例について説明する。
【００９１】
図６は、本実施の形態に係る統合メモリ管理装置の一例を示すブロック図である。
【００９２】
ＭＰＵ１１には、本実施の形態に係る統合メモリ管理装置１２が備えられている。統合ＭＭＵ１３は、上記第１の実施の形態に係るＭＭＵ７とメインメモリ用ＭＭＵ９とを統合した機能を実現する。
【００９３】
本実施の形態において、１次キャッシュメモリ３のタグ及び２次キャッシュメモリ２２のタグは、プロセスＩＤと論理アドレスとで、それぞれ１次キャッシュメモリ３及び２次キャッシュメモリ２２を管理するために用いられる。
【００９４】
本実施の形態においては、プロセッサであるＭＰＵ１１の統合ＭＭＵ１３により、１次キャッシュメモリ３、２次キャッシュメモリ２２、ＮＡＮＤ型フラッシュメインメモリ４のメモリマッピング管理が行われ、各種メモリの一括管理が行われる。
【００９５】
図７は、本実施の形態に係る統合メモリ管理装置１２のメモリ階層の一例を示す図である。
【００９６】
この例におけるメモリ階層は、統合ＭＭＵ１３とキャッシュコントローラ８とが同じ階層に属している。統合メモリ管理装置１２は、１次キャッシュメモリ３及び２次キャッシュメモリ２２に対するアドレス変換と、ＮＡＮＤ型フラッシュメインメモリ４に対するアドレス変換とを統合し、同等のメモリ階層で扱う。統合メモリ管理装置２は、ある基準にそって、キャッシュメモリ３、キャッシュメモリ２２、ＮＡＮＤ型フラッシュメインメモリ４のどの領域をアクセスするか決定する。
【００９７】
このメモリ階層では、論理アドレスがＮＡＮＤ型フラッシュメインメモリ４の物理位置に変換される場合、書き込み回数が所定数以下の領域又はブロックをアクセスさせる制御が行われる。
【００９８】
そして、統合メモリ管理装置２は、決定された物理位置に基づいて、ＮＡＮＤ型フラッシュメインメモリ４をアクセスする。
【００９９】
以上説明した本実施の形態においては、上記第１の実施の形態に係るＭＭＵ７とメインメモリ用ＭＭＵ９とを統合することにより、構成がシンプルになり、アクセスに必要な時間コストや製造時に必要な経済コストなどの様々なコストを削減できる。
【０１００】
統合ＭＭＵ１３を用いることにより、１次キャッシュメモリ３及び２次キャッシュメモリ２２に対するアドレス変換と、ＮＡＮＤ型フラッシュメインメモリ４に対するアドレス変換とを統合することができる。例えば、あるプロセスに関する記憶内容を、なるべくＮＡＮＤ型フラッシュメインメモリ４内の近い位置に記憶することにより、高速アクセスが可能となる。また、例えば、書き換え回数の少ない領域又はブロックだけを選んで一つのプロセスに割り当てることができる。
【０１０１】
（第３の実施の形態）
本実施の形態においては、上記第１又は第２の実施の形態に係る統合メモリ管理装置２，１２の変形例について説明する。
【０１０２】
図８は、上記図１に示す第１の実施の形態に係る統合メモリ管理装置２の変形例を示す図である。
【０１０３】
上記第１の実施の形態においては、物理位置に基づくＮＡＮＤ型フラッシュメインメモリ４へのアクセスは、メインメモリ用ＭＭＵ９によって実行している。しかしながら、物理位置に基づくＮＡＮＤ型フラッシュメインメモリ４へのアクセスは、キャッシュコントローラ８が行うとしてもよい。
【０１０４】
この場合、メインメモリ用ＭＭＵ９は、論理アドレスを物理位置に変換する制御を行い、このメインメモリ用ＭＭＵ９で選択された物理位置に基づいて、キャッシュコントローラ８は、ＮＡＮＤ型フラッシュメインメモリ４をアクセスする。なお、本実施の形態において、キャッシュコントローラ８は、メインメモリ用ＭＭＵ９に代わって、ＮＡＮＤ型フラッシュメインメモリ４のアドレス変換テーブル５の読み出し及び更新、書き換え回数データ６の読み出し及び更新をするとしてもよい。
【０１０５】
図９は、上記図６に示す第１の実施の形態に係る統合メモリ管理装置１２の変形例を示す図である。
【０１０６】
上記第２の実施の形態においては、物理位置に基づくＮＡＮＤ型フラッシュメインメモリ４へのアクセスは、統合ＭＭＵ１３によって実行している。しかしながら、物理位置に基づくＮＡＮＤ型フラッシュメインメモリ４へのアクセスは、キャッシュコントローラ８が行うとしてもよい。
【０１０７】
この場合、統合ＭＭＵ１３は、論理アドレスを物理位置に変換する制御を行い、この統合ＭＭＵ１３で選択された物理位置に基づいて、キャッシュコントローラ８は、ＮＡＮＤ型フラッシュメインメモリ４をアクセスする。なお、本実施の形態において、キャッシュコントローラ８は、ＮＡＮＤ型フラッシュメインメモリ４のアドレス変換テーブル５の読み出し及び更新、書き換え回数データ６の読み出し及び更新をするとしてもよい。
【０１０８】
（第４の実施の形態）
本実施の形態においては、上記第１乃至第３の実施の形態に係る統合メモリ管理装置２，１２の適用例に付いて説明する。
【０１０９】
図１０は、本実施の形態に係る統合メモリ管理装置の適用例を示すブロック図である。
【０１１０】
例えば、ゲーム機や、カーナビゲーションシステムでは、ディスクドライブにより読み出されたデータ又はプログラムがメインメモリに一度書き込まれ、その後、このメインメモリに書き込まれたデータ又はプログラムが多回数リードされる。本実施の形態において、統合メモリ管理装置２０は、ゲーム機に適用される場合について説明するが、カーナビゲーションシステムなどの他の装置に適用される場合も同様である。統合メモリ管理装置２０の代わりに、上記第１の実施の形態に係る統合メモリ管理装置２，１２を用いるとしてもよい。
【０１１１】
ポータブル・ゲーム・コンソール・プロセッサ１４は、グラフィクス・プロセッサ１５とプロセッサ１６とを具備する。
【０１１２】
グラフィクス・プロセッサ１５、プロセッサ１６、２次キャッシュメモリ１７、ＮＡＮＤ型フラッシュメインメモリ４、ディスクドライブ１８はバス１９に接続されている。
【０１１３】
プロセッサ１６は、１次キャッシュメモリ３、２次キャッシュメモリ１７をアクセスするための２次キャッシュタグ２１、キャッシュコントローラ８、統合ＭＭＵ１３を具備する。
【０１１４】
さらに、プロセッサ１６は、書き換え回数格納部１０を具備するが、この図１０では省略している。なお、プロセッサ１６は、１次キャッシュメモリ３又は２次キャッシュメモリ１７を、書き換え回数格納部１０として用いるとしてもよい。
【０１１５】
キャッシュコントローラ８は、１次キャッシュメモリ３、２次キャッシュメモリ１７へのアクセスを制御する。２次キャッシュメモリ１７には、例えば、ＤＲＡＭを用いることができる。本実施の形態において、２次キャッシュメモリ１７は、ポータブル・ゲーム・コンソール・プロセッサ１４と分離している。
【０１１６】
２次キャッシュメモリ１７に対するバンド幅は、ＮＡＮＤ型フラッシュメインメモリ４の１０倍程度とする。ディスクドライブ１８としては、例えば、光ディスクドライブを用いることができる。
【０１１７】
本実施の形態において、ＮＡＮＤ型フラッシュメインメモリ４への書き込みは、ゲームカートリッジの交換時とし、他の時点ではＮＡＮＤ型フラッシュメインメモリ４はリード・オンリーで利用されるとする。頻繁に書き込まれるデータ又はプログラムコード、頻繁に読み出されるデータ又はプログラムコードは、２次キャッシュメモリ１７に格納される。さらに頻繁に読み出されるデータ又はプログラムコードは、１次キャッシュメモリ３に格納される。
【０１１８】
なお、例えば、１次キャッシュメモリ３又は２次キャッシュメモリ１７に記憶されているデータ又はプログラムコードのうち、使用頻度の低いデータ又はプログラムコードをＮＡＮＤ型フラッシュメインメモリ４に書き込み、ＮＡＮＤ型フラッシュメインメモリ４に記憶されているデータ又はプログラムコードのうち、使用頻度の高いデータ又はプログラムコードを１次キャッシュメモリ３又は２次キャッシュメモリ１７に記憶するとしてもよい。
【０１１９】
本実施の形態では、例えば、１次キャッシュメモリ３は６４キロバイト程度であり、２次キャッシュメモリ１７は１６〜１２８メガバイト程度であり、ＮＡＮＤ型フラッシュメインメモリ４は１ギガバイト程度であるとする。
【０１２０】
例えば、グラフィクス・プロセッサ１５の処理能力は、１／１０バンド幅のＮＡＮＤ型フラッシュメインメモリ４の速度とつりあうか、その２〜３倍程度の能力とする。使用頻度の低いデータは、ＮＡＮＤ型フラッシュメインメモリ４から読み出し、使用頻度の高いデータは、１次キャッシュメモリ３又は２次キャッシュメモリ１７から読み出すとする。
【０１２１】
本実施の形態においては、キャッシュ入れ替え（キャッシュミスなど）時に、ＮＡＮＤ型フラッシュメインメモリ４のガーベージコレクション処理やイレースを行う、などのような最適化を実現することができるプロセッサ１６を提供することができ、高度な最適化を行うことができる。
【０１２２】
なお、２次キャッシュメモリ１７のエントリーサイズを１メガバイト程度とすると、ＮＡＮＤ型フラッシュメインメモリ４との相性がよくなる。
【０１２３】
本実施の形態においては、例えば２重に仮想メモリ変換が行われてオーバーヘッドが大きくなることを防止できる。
【０１２４】
本実施の形態においては、プロセッサ１６に統合ＭＭＵ１３が備えられることにより、１次キャッシュメモリ３と二次キャッシュメモリ１７とＮＡＮＤ型フラッシュメインメモリ４とを一括管理することができる。
【０１２５】
そして、本実施の形態では、レジューム時に保存するデータ量を削減することができる。
【０１２６】
本実施の形態においては、ＮＡＮＤ型フラッシュメインメモリ４にデータ又はプログラムを記憶することにより、ディスクドライブ１８へのアクセスを削減でき、待ち時間を削減でき、ユーザの操作性及び満足度を向上させることができる。
【０１２７】
本実施の形態においては、二次キャッシュメモリ１７（ＤＲＡＭ）よりもメモリ単価の安いＮＡＮＤ型フラッシュメインメモリ４を用いることにより、より多くのデータ又はプログラムを高速にアクセスすることができる。
【０１２８】
（第５の実施の形態）
本実施の形態においては、プロセッサとメインメモリとの間に備えられた統合メモリ管理装置について説明する。
【０１２９】
図１１は、本実施の形態に係る統合メモリ管理装置の一例を示すブロック図である。
【０１３０】
本実施の形態に係る統合メモリ管理装置２４は、システムバス３０経由で、複数のプロセッサ（例えばCodec IP、Graphic IPを含む）２５１〜２５４と接続されている。統合メモリ管理装置２４は、マルチプロセッサ構成に対して適用される。また、統合メモリ管理装置２４は、例えばＮＡＮＤ型フラッシュメモリなどのような不揮発性のメインメモリ２６と接続されている。なお、本実施の形態において、プロセッサの数は１又は２以上で自由に変更可能である。
【０１３１】
メインメモリ２６では、書き込み及び読み込みは、ページと呼ばれる複数ビット単位で行われる。消去は、ブロックと呼ばれる、複数のページをまとめた単位で一括して行われる。
【０１３２】
複数のプロセッサ２５１〜２５４のうちのいくつかでは、論理アドレスを含むプロセスが実行されている。この例では、プロセッサ２５１，２５２，２５４でプロセス２７１，２７２，２７４が実行されている。なお、プロセス２７１，２７２，２７４は、オペレーティングシステムであってもよい。
【０１３３】
複数のプロセッサ２５１〜２５４のそれぞれは、１次キャッシュメモリ２８１〜２８４、２次キャッシュメモリ２９１〜２９４を具備する。
【０１３４】
統合メモリ管理装置２４は、ウェアレベリングと、論理アドレスから物理アドレスへの変換を行う。
【０１３５】
統合メモリ管理装置２４は、メインメモリ２６のページ単位、ページサイズの整数倍単位、又はブロック単位でウェアレベリングを行う。ウェアレベリングカウンタは、メインメモリのリダンダンシ領域２６ａに記憶される。リダンダンシ領域２６ａは、メインメモリ２６のページ又はブロック毎に設けられている冗長領域である。統合メモリ管理装置２４は、メモリ空間にマッピングを行う場合に、ウェアレベリングを考慮してメモリ確保を行う。
【０１３６】
統合メモリ管理装置２４は、リムーバブルメモリもメインメモリとして扱い、メモリ空間にマッピングする。
【０１３７】
この統合メモリ管理装置２４は、複数のプロセッサ２７１〜２７４側というよりむしろメインメモリ２６側に備えられている。しかしながら、統合メモリ管理装置２４は、複数のプロセッサ２７１〜２７４側に備えられるとしてもよい。
【０１３８】
統合メモリ管理装置２４は、命令とデータとで、ページサイズを切り換える。例えば、命令用のページサイズは１６キロバイトなどのように小さいサイズとし、データ用のページサイズは５１２キロバイトなどのように大きいサイズとする。
【０１３９】
メインメモリ２６は、統合メモリ管理装置２４のページサイズ（プロセス又はＯＳ）と同じメモリページサイズ又は統合メモリ管理装置３４のページサイズの倍数となるメモリページサイズを持つ。
【０１４０】
１次キャッシュメモリ２８１〜２８４及び２次キャッシュメモリ２９１〜２９４と、メインメモリ２６との間では、一括してページの転送が実行される。この一括の転送は、例えば、メインメモリのページ単位、ページサイズの整数倍単位又はブロック単位（例えば、256 kilobyte 〜 512 kilobyte）で行われる。
【０１４１】
１次キャッシュメモリ２８１〜２８４に対するアクセス、及び２次キャッシュメモリ２９１〜２９４に対するアクセスは論理アドレスに基づいて行われる。システムバス３０上でも、論理アドレスが用いられる。
【０１４２】
統一的な統合メモリ管理装置２４は、複数のプロセッサ２７１〜２７４に対して、プロセスレベルの論理アドレスから物理アドレスへの変換、さらに、メインメモリ２６のページ単位、ページサイズの整数倍単位、又はブロック単位でのウェアレベリングのための論理ページ又は論理ブロックから物理ページ又は物理ブロックへの変換を総合して行う。
【０１４３】
本実施の形態においては、図１２に示す形式のシステム論理アドレス３１が用いられる。このシステム論理アドレス３１は、プロセッサＩＤとプロセスＩＤ、プロセス内論理アドレスを含む。なお、プロセッサＩＤとプロセスＩＤとのうちの少なくとも一つは変換され（例えばハッシングなどを用いてＩＤの長さが短くされ）、システム論理アドレス３１は、変換後の内容を含むとしてもよい。例えば、プロセッサＩＤとプロセスＩＤをハッシングで変換し、システム論理アドレス３１は、このハッシングで変換されたビットとプロセス内論理アドレスとを含むとしてもよい。
【０１４４】
メインメモリ２６は、システム全体で単一のページテーブル２６ｂを記憶する。すなわち、メインメモリ２６は、プロセス２７１，２７２，２７４毎のページテーブルを持つのではなく、プロセス２７１，２７２，２７４全体で統一したページテーブル２６ｂを持つ。
【０１４５】
本実施の形態においては、メインメモリ２６にハードディスクドライブ（ＨＤＤ）と同じ程度の容量を持つメインメモリ２６を使用する。この場合、物理メモリよりも大きなメモリ空間を使用するために２次記憶（スワップアウト）を使用する必要はない。従来においては、物理メインメモリが例えばＤＲＡＭであって記憶容量が１ＧＢ程度であるが、プロセス毎に４ＧＢの論理メモリ空間を使いたい場合に、より記憶容量の大きいハードディスクドライブ上に２次記憶領域を確保し、スワップイン／スワップアウトを行う必要があった。しかしながら、本実施の形態では、メインメモリ２６がハードディスクドライブと同レベル以上の記憶容量を持つため、２次記憶を用いる必要がない。
【０１４６】
したがって、装置構成及び動作をシンプルにすることができる。
【０１４７】
本実施の形態においては、インスタントＯＮ／ＯＦＦを行うことができ、レジュームなどを高速化することができる。
【０１４８】
従来においては、実行する前にファイルをロードする必要があった。これに対して、本実施の形態においては、キャッシュメモリ２８１〜２８４，２９１〜２９４又はメインメモリ２６上の実行アドレスにジャンプするのみでよく、実行する前にファイルをロードする必要がない。
【０１４９】
（第６の実施の形態）
本実施の形態においては、上記第５の実施の形態の変形例について説明する。
【０１５０】
図１３は、本実施の形態に係る記憶装置の一例を示すブロック図である。
【０１５１】
本実施の形態に係る記憶装置において、複数の統合メモリ管理装置２４１，２４２は、ネットワーク３３経由で、複数のプロセッサ（Codec IP、Graphic IPを含む）２５１〜２５４と接続されている。統合メモリ管理装置２４１，２４２は、例えばＮＡＮＤ型フラッシュメモリなどのような不揮発性の複数のメインメモリ２６１，２６２と接続されている。
【０１５２】
なお、統合メモリ管理装置の数、メインメモリの数は、自由に変更可能である。
【０１５３】
メインメモリ２６１は、上記第５の実施の形態におけるメインメモリ２６と同様の特徴を持ち、ウェアレベリングカウンタを記憶するリンダンシ領域２６１ａ、プロセス２７１，２７２，２７４全体で統一したページテーブル２６１ｂを持つ。メインメモリ２６２も、このメインメモリ２６１と同様の特徴を持つ。
【０１５４】
本実施の形態で用いられる論理アドレス３４は、図１４に示すように、ネットワーク３３のＩＰアドレス又はＩＰｖ６アドレス、プロセッサＩＤとプロセスＩＤ、プロセス内論理アドレスを含む。なお、各アドレス及びＩＤのうちの少なくとも一つは、変換され（例えばハッシングなどを用いてＩＤの長さが短くされ）、論理アドレス３４は、変換後の内容を含むとしてもよい。例えば、ＩＰアドレス又はＩＰｖ６アドレス、プロセッサＩＤとプロセスＩＤをハッシングで変換し、論理アドレス３４は、このハッシングで変換されたビットとプロセス内論理アドレスとを含むとしてもよい。
【０１５５】
メインメモリ２６１，２６２は、統合メモリ管理装置２４１，２４２のページサイズと同じメモリページサイズ又はＭＭＵ２４１，２４２のページサイズの整数倍となるメモリページサイズを持つ。
【０１５６】
１次キャッシュメモリ２８１〜２８４及び２次キャッシュメモリ２９１〜２９４と、メインメモリ２６１，２６２との間では、一括してページの転送が実行される。この一括の転送は、例えば、メインメモリのページ単位、ページサイズの整数倍単位、又はブロック単位（例えば、256 kilobyte 〜 512 kilobyte）で行われる。
【０１５７】
本実施の形態において、１次キャッシュメモリ２８１〜２８４に対するアクセス、及び２次キャッシュメモリ２９１〜２９４に対するアクセスは、論理アドレスに基づいて実行される。ネットワーク３３上でも、論理アドレスが用いられる。
【０１５８】
統一的な統合メモリ管理装置２４１，２４２は、複数のプロセッサ２７１〜２７４に対して、プロセスレベルの論理アドレスから物理アドレスへの変換、さらに、不揮発性のメインメモリ２６１，２４２のページ単位、ページサイズの整数倍単位、又はブロック単位でのウェアレべリングのための論理ページ又は論理ブロックから物理ページ又は物理ブロックへの変換を総合して行う。
【０１５９】
本実施の形態においては、ネットワーク３３経由の広大なメモリ空間において上記第５の実施の形態と同様の効果を得ることができる。
【０１６０】
（第７の実施の形態）
本実施の形態においては、上記第５及び第６の実施の形態の変形例について説明する。以下においては、上記第５の実施の形態の変形例について説明するが、上記第６の実施の形態についても同様に変形可能である。
【０１６１】
図１５は、本実施の形態に係る統合メモリ管理装置の一例を示すブロック図である。
【０１６２】
複数のプロセッサ３５１〜３５４は、システムバス３０経由で、メインメモリ２６と接続されている。なお、本実施の形態において、プロセッサの数は自由に変更可能である。
【０１６３】
複数のプロセッサ３５１〜３５４のうちのいくつかでは、論理アドレスを含むプロセスが実行されている。この例では、プロセッサ３５１，３５２，３５４でプロセス２７１，２７２，２７４が実行されている。プロセス２７１，２７２，２７４はオペレーティングシステムであってもよい。
【０１６４】
複数のプロセッサ３５１〜３５４のそれぞれは、１次キャッシュメモリ３６１〜３６４、２次キャッシュメモリ３７１〜３７４、統合メモリ管理装置３８１〜３８４を具備する。
【０１６５】
統合メモリ管理装置３８１〜３８４は、ウェアレベリングと、論理アドレスから物理アドレスへの変換を行う。統合メモリ管理装置３８１〜３８４は、複数のプロセッサ３５１〜３５４側に備えられている。
【０１６６】
メインメモリ２６は、統合メモリ管理装置３８１〜３８４のページサイズと同じメモリページサイズ又は統合メモリ管理装置３８１〜３８４のページサイズの整数数となるメモリページサイズを持つ。
【０１６７】
１次キャッシュメモリ３６１〜３６４及び２次キャッシュメモリ３７１〜３７４と、メインメモリ２６との間では、一括してページの転送が実行される。この一括の転送は、例えば、メインメモリのブロック（ページの整数倍）単位（例えば、256 kilobyte 〜 512 kilobyte）で行われる。
【０１６８】
本実施の形態において、１次キャッシュメモリ３６１〜３６４に対するアクセス、及び２次キャッシュメモリ３７１〜３７４に対するアクセスでは物理アドレスが用いられる。システムバス３０上でも、物理アドレスが用いられる。
【０１６９】
複数のプロセッサ３５１〜３５４毎に備えられる統合メモリ管理装置３８１〜３８４は、プロセスレベルの論理アドレスから物理アドレスへの変換、さらに、メインメモリ２６のページ単位、ページサイズの整数倍単位又はブロック単位でのウェアレべリングのための論理ページ又は論理ブロックから物理ページ又は物理ブロックへの変換を行う。
【０１７０】
以上説明した本実施の形態においては、統合メモリ管理装置３８１〜３８４をプロセッサ３５１〜３５４側に設けた場合であっても、上記第５と同様の効果を得ることができる。
【０１７１】
（第８の実施の形態）
本実施の形態では、上記第５の実施の形態の詳細について説明する。
【０１７２】
図１６は、本実施の形態に係る統合メモリ管理装置２４の構成の一例を示すブロック図である。
【０１７３】
ＮＡＮＤ型フラッシュメインメモリ２６は、物理アドレスに対応する物理ブロック３９、ページテーブル２６ｂ、メモリ使用情報４０、メモリ固有情報４１を備える。
【０１７４】
各プロセッサ２５１〜２５４の１次キャッシュメモリ２８１〜２８４、２次キャッシュメモリ２９１〜２９４のキャッシュラインサイズと、ＮＡＮＤ型フラッシュメインメモリ２６のブロックサイズ又はページサイズの整数倍とは、同じサイズであり、データ転送の効率化が図られている。
【０１７５】
ＮＡＮＤ型フラッシュメインメモリ２６において、各種のデータは、例えばデータＤ１のように複数の物理ブロック３９にまたがって存在するとしてもよい。また、例えば複数のデータＤ１，Ｄ２のように、複数のデータが一つの物理ブロック３９に存在するとしてもよい。
【０１７６】
そして、各データＤ１，Ｄ２は、固有の読み書き頻度情報Ｅ１，Ｅ２を持つとしてもよい。例えば、各データＤ１，Ｄ２は、スタティック情報とダイナミック情報とのうちの少なくとも一方を備えている。スタティック情報は、当初から決まっている値である。ダイナミック情報は、実際にそのデータが書き換えられた回数、読み出された回数を含む。
【０１７７】
例えば、デジタルカメラの画像データのスタティック情報として、撮影された直後に２時間に１回読み出し及び書き込みが行われる旨の情報、撮影されて３日経過後に２週間に一度読み出しが行われ、書き込みは行われない旨の情報、などが記憶される。また、例えば、ウェブブラウザのキャッシュ情報のスタティック情報として、数分に１回書き込み及び読み出しが行われる旨の情報、ある程度以上アクセスされるサイトの情報が１日に１回書き込まれる旨の情報、周期性のアクセスパターンがある場合にはその情報が書き込まれる旨の情報、所定の時間において書き込みが多い旨の情報、などが記憶される。
【０１７８】
スタティック情報は、様々なデータの種類に対して、効果的な値を設定する必要がある。このスタティック情報の設定ファイルは、ネットワーク上で共有されるとしてもよい。
【０１７９】
ページテーブル２６ｂは、全システムで一つあればよい。あるいは、ページテーブル２６ｂはなくてもよい。
【０１８０】
メモリ使用情報４０は、各メモリ領域の読み書き回数と、各データの読み書き回数を含む。より詳細に説明すると、例えば、メモリ使用情報４０は、各メモリ領域（ページ又はブロック）について、書き換え回数、読み出し回数、この領域内に存在するデータ情報（個数、種類、各データ固有の読み出し回数、書き換え回数などを含む）を具備する。
【０１８１】
メモリ固有情報４１は、ＮＡＮＤ型フラッシュメインメモリ２６のページサイズ、ブロックサイズ、書き換え可能回数、読み出し可能回数などを含む。より詳細に説明すると、例えば、メモリ固有情報４１は、ＮＡＮＤ型フラッシュメインメモリ２６のページサイズ、ブロックサイズ、全記憶容量、ＳＬＣ（Single Level Cell）領域情報（ブロック位置、サイズ、読み出し可能回数、書き込み可能回数などを含む）、ＭＬＣ（Multi Level Cell）領域情報（ブロック位置、サイズ、読み出し可能回数、書き込み可能回数などを含む）を具備する。
【０１８２】
統合メモリ管理装置２４は、各プロセス（ＯＳでもよい）用論理アドレスを物理アドレスに変換し、ＮＡＮＤ型フラッシュメインメモリ２６用の論理アドレスを物理アドレスに変換する。
【０１８３】
また、メモリ管理装置２４は、データＤ１，Ｄ２固有の読み書き頻度情報Ｅ１，Ｅ２、メモリ使用情報４０、メモリ固有情報４１に基づいて、最適なウェアレべリングを実行する。
【０１８４】
メモリ管理装置２４は、マイクロプロセッサ４２、作業メモリ４３、情報レジスタ４４、キャッシュメモリ４５を具備する。
【０１８５】
マイクロプロセッサ４２は、情報レジスタ４４、作業メモリ４３を利用しつつ、メモリ管理を実行する。キャッシュメモリ４５は、各プロセッサ２７１〜２７４からのデータ及びＮＡＮＤ型フラッシュメインメモリ２６からのデータの一時保存などに用いられる。なお、キャッシュメモリ４５は、外付けのＤＲＡＭでもよい。
【０１８６】
図１７は、マイクロプロセッサ４２の機能の一例を示すブロック図である。
【０１８７】
マイクロプロセッサ４２は、取得機能４２ａ、アドレス変換機能４２ｂ、アクセス機能４２ｃ、転送機能４２ｄを備える。
【０１８８】
複数のプロセッサ２５１〜２５４のいずれかが、ＮＡＮＤ型フラッシュメインメモリ２６のデータを読み出す場合、取得機能４２ａは、複数のプロセッサ２５１〜２５４のいずれかから、読み出し論理アドレスを取得する。
【０１８９】
アドレス変換機能４２ｂは、取得機能４２ａによって取得された読み出し先論理アドレスを、ＮＡＮＤ型フラッシュメインメモリ２６の読み出し先物理アドレスに変換する。例えば、ＮＡＮＤ型フラッシュメインメモリ２６は、複数のグループ属性を持つ領域に分割されており、それぞれのグループ属性がメモリ固有情報４１として保有されているとする。この場合、アドレス変換機能４２ｂは、いずれかのプロセッサ上で動作するファイル管理プログラム（プロセス）により定義されたデータＤ１，Ｄ２固有の読み書き頻度情報Ｅ１，Ｅ２と、メモリ固有情報４１とを参照し、データＤ１，Ｄ２固有の読み書き頻度情報Ｅ１，Ｅ２に対応するグループ属性の領域内に書き込み先物理アドレスを対応させる。
【０１９０】
アクセス機能４２ｃは、ＮＡＮＤ型フラッシュメインメモリ２６から、読み出し先物理アドレスに対応するデータを読み出す。ここで、この読み出されるデータのデータサイズは、ＮＡＮＤ型フラッシュメインメモリ２６のページサイズの整数倍又はブロックサイズとする。
【０１９１】
転送機能４２ｄは、読み出されたデータを、読み出し論理アドレスを発行したプロセッサのキャッシュメモリに転送する。ここで、読み出し論理アドレスを発行したプロセッサのキャッシュメモリのキャッシュサイズは、ＮＡＮＤ型フラッシュメインメモリ２６のページサイズの整数倍又はブロックサイズに依存している。
【０１９２】
複数のプロセッサ２５１〜２５４のいずれかが、ＮＡＮＤ型フラッシュメインメモリ２６へデータを書き込む場合、取得機能４２ａは、プロセッサから、書き込み先論理アドレスと、書き込みデータとを取得する。ここで、書き込みデータのサイズは、キャッシュサイズとする。
【０１９３】
アドレス変換機能４２ｂは、取得機能４２ａによって取得された書き込み先論理アドレスを、ＮＡＮＤ型フラッシュメインメモリ２６の書き込み先物理アドレスに変換する。
【０１９４】
アクセス機能４２ｃは、ＮＡＮＤ型フラッシュメインメモリ２６の書き込み先物理アドレスに対応する位置に、書き込みデータを書き込む。
【０１９５】
マイクロプロセッサ４２のアドレス変換機能４２ｂは、データ固有の読み書き頻度情報、メモリ使用情報４０と、メモリ固有情報４１とのうちの少なくとも一つに基づいて、ウェアレべリングを行う。
【０１９６】
図１８は、メモリ管理装置２４の転送アルゴリズムの第１の動作の例を示す図である。
【０１９７】
メモリ管理装置２４のマイクロプロセッサ４２は、起動時に、メモリ使用情報４０及びメモリ固有情報４１を読み込み、情報レジスタ４４に格納する。メモリ固有情報４１には、ＮＡＮＤ型フラッシュメインメモリ２６のページサイズ及びブロックサイズが含まれている。各プロセッサ２７１〜２７４のキャッシュサイズは、ＮＡＮＤ型フラッシュメインメモリ２６のブロックサイズ又はページサイズの整数倍である。
【０１９８】
従来から使用されているプロセッサにメモリ管理装置２４を適用する場合であって、この従来のプロセッサについてキャッシュサイズを変更できない場合には、マイクロプロセッサ４２は、キャッシュメモリ４５でバッファリングを行い、プロセッサ２７１〜２７４のキャッシュサイズとＮＡＮＤ型フラッシュメインメモリ２６のブロックサイズ又はページサイズの整数倍との差を調整する。例えば、マイクロプロセッサ４２は、ページサイズ２５６kilobyte分のデータをキャッシュメモリ４５に読み込み、プロセッサ２７１〜２７４のいずれかに対して、キャッシュライン４kilobyte分のデータを出力する。
【０１９９】
図１９は、メモリ管理装置２４の転送アルゴリズムの第２の動作の例を示す図である。
【０２００】
メモリ管理装置２４のマイクロプロセッサ４２は、いずれかのプロセッサ２５２から、１キャッシュライン分のアクセス要求を受信する（Ｔｒ１９Ａ）。
【０２０１】
次に、マイクロプロセッサ４２は、アクセス要求に対応するブロック又はページの整数倍のデータを、ＮＡＮＤ型フラッシュメインメモリ２６から読み出し、キャッシュメモリ４５に記憶する（Ｔｒ１９Ｂ）。
【０２０２】
次に、マイクロプロセッサ４２は、アクセス要求に対応するデータを、キャッシュメモリ４５からプロセッサ２５２に送信する（Ｔｒ１９Ｃ）。
【０２０３】
図２０は、メモリ管理装置２４の転送アルゴリズムの第３の動作の例を示す図である。
【０２０４】
いずれかのプロセッサ２５２は、キャッシュメモリ２８２又はキャッシュメモリ２９２のデータを書き換える（Ｔｒ２０Ａ）。
【０２０５】
次に、メモリ管理装置２４のマイクロプロセッサ４２は、キャッシュメモリ２８２又はキャッシュメモリ２９２の書き換えられたデータをキャッシュアウトし、キャッシュメモリ４５に転送する（Ｔｒ２０Ｂ）。
【０２０６】
すると、マイクロプロセッサ４２は、このデータが持つ読み書き頻度情報、情報レジスタ４４に記憶されているメモリ使用情報４０及びメモリ固有情報４１に基づいて、ウェアレべリングを行い、ＮＡＮＤ型フラッシュメインメモリ２６の複数の物理ブロックの中から書き込みを行ういずれかの物理ブロック３９を決定する。
【０２０７】
マイクロプロセッサ４２は、キャッシュメモリ４５に記憶されている書き換えられたデータを、決定された物理ブロック３９に記憶する（Ｔｒ２０Ｃ）。
【０２０８】
この書き込みにおいては、必要に応じて、メモリブロックの移動、ガーページコレクションが行われる。
【０２０９】
図２１は、ウェアレべリングの一例を示すブロック図である。
【０２１０】
ＮＡＮＤ型フラッシュメインメモリ２６は、２以上のバンク４６ａ，４６ｂを備える。
【０２１１】
マイクロプロセッサ４２は、データ（ブロック又はページ）を、順次、一方のバンク４６ａに追加記憶していく。
【０２１２】
データの削除が発生すると、マイクロプロセッサ４２は、バンク４６ａ上の削除対象のデータを削除する。しかしながら、このバンク４６ａにおける最後の領域にデータが記憶されるまで、順次、追加記憶は継続される。書き込み対象となっているバンク４６ａでは、途中で削除された部分に書き込みは行われない。したがって、書き込み対象となっているバンク４６ａにおいてデータの削除が発生すると、この削除された領域のデータが欠けた状態となる。
【０２１３】
マイクロプロセッサ４２は、一方のバンク４６ａの最後の領域までデータを記憶すると、このバンク４６ａのうち削除されていない有効なデータを、他方のバンク４６ｂにガーベージコレクションしながらコピーし、この他方のバンク４８ｂにおいて、コピーされたデータの次から新たなデータを追加記憶していく。また、マイクロプロセッサ４２は、一方のバンク４６ａのデータを他方のバンク４６ｂにコピーした後、一方のバンク４６ａに対してクリアを行う。その後、同様の処理が繰り返される。
【０２１４】
ここで、メモリ管理装置２４のマイクロプロセッサ４２で用いられるウェアレべリング・アルゴリズムの具体的動作例について説明する。
【０２１５】
まず、マイクロプロセッサ４２は、いずれかのプロセッサ又はＯＳから、書き込まれるデータを受信する。書き込まれるデータが複数の場合には、書き込み頻度の一番高いデータを基準として用いる。プロセッサ又はＯＳが従来型の場合、マイクロプロセッサ４２は、データの先頭などを調べて、データの種類を判断する。
【０２１６】
例えば、マイクロプロセッサ４２は、書き込まれるデータの種別が圧縮された画像データの場合、この書き込まれるデータの書き込み頻度は少ないため、ＭＬＣ領域を書き換え領域に決定する。または、マイクロプロセッサ４２は、書き込まれるデータの種別が圧縮された画像データの場合、すでに書き換え回数が多くなっている空領域を書き換え領域に決定する。
【０２１７】
例えば、マイクロプロセッサ４２は、書き込まれるデータの種別がウェブブラウザのキャッシュデータの場合、書き込み頻度が高いため、ＳＬＣ領域を書き換え領域に決定する。
【０２１８】
例えば、マイクロプロセッサ４２は、ＳＬＣ領域又はＭＬＣ領域の中から、書き換え回数の一番少ない空ブロックを、書き込み領域に決定する。
【０２１９】
例えば、マイクロプロセッサ４２は、ＮＡＮＤ型フラッシュメインメモリ２６における全ての空き領域（例えば空きブロック）の書き換え回数が、最大書き込み可能回数の所定の割合（例えば８０％など）に達している場合に、すでにデータの書き込まれている領域のうち、スタティック情報に基づく書き換え頻度が少なく、さらにダイナミック情報に基づく書き換え回数も少ない領域を選択し、この選択された領域のデータを、空き領域に記憶する。そして、マイクロプロセッサ４２は、この選択された領域のデータを削除する。すなわち、空き領域と選択された領域との間でデータの入れ替えを行う。
【０２２０】
本実施の形態において、メモリ管理装置２４のマイクロプロセッサ４２は、複数のＮＡＮＤ型フラッシュメインメモリ２６を管理するとしてもよい。
【０２２１】
図２２は、複数のＮＡＮＤ型フラッシュメインメモリ２６を管理する統合メモリ管理装置２４の一例を示す斜視図である。
【０２２２】
一つの統合メモリ管理装置２４と、複数のＮＡＮＤ型フラッシュメインメモリ２６とで、一つのメモリユニット４７が形成される。図２２の例では、３つのメモリユニット４７が形成されている。
【０２２３】
統合メモリ管理装置２４は、同じメモリユニット４７に属する複数のＮＡＮＤ型フラッシュメインメモリ２６に対するアクセスを管理する。
【０２２４】
さらに、複数のメモリユニット４７内に備えられている複数の統合メモリ管理装置２４は、互いに連携して一つのメモリ管理装置にように動作する。
【０２２５】
メモリユニット４７の統合メモリ管理装置２４は、メモリユニット４７内の複数のＮＡＮＤ型フラッシュメインメモリ２６に対するＥＣＣ機能及びＲＡＩＤ機能を備え、ミラーリング及びストライピングを行う。
【０２２６】
それぞれのＮＡＮＤ型フラッシュメインメモリ２６は、メモリユニット４７が通電中（動作中）であっても、ホットスワップ（交換）可能である。複数のＮＡＮＤ型フラッシュメインメモリ２６のそれぞれには、ボタン４８が備えられている。
【０２２７】
ボタン４８は、警告出力部（例えばＬＥＤなど）を備える。例えば、警告出力部が第１の色（緑）の場合は、正常状態を表し、第２の色（赤）の場合には交換必要な状態を表す。
【０２２８】
ボタン４８を押すと、プロセス及びＯＳに通知が送信され、アクセスなどが発生していない取り外し安全なときに、ボタン４８は、第３の色（青）になり、このボタン４８に対応するＮＡＮＤ型フラッシュメインメモリ２６は、ホットスワップ可能となる。
【０２２９】
ホットスワップ実行時には、ホットスワップを要求するボタン４８が押された後、ライトバックが完了した時点で、交換可能であることを示すランプが点灯し、ＮＡＮＤ型フラッシュメインメモリ２６の交換が行われる。
【０２３０】
メモリ管理装置２６のマイクロプロセッサ４２は、情報レジスタ４４に記憶されているメモリ使用情報４０とメモリ固有情報４１とを参照し、各ＮＡＮＤ型フラッシュメインメモリ２６の書き換え回数又は読み出し回数とが、メモリ固有情報４１に記述されている上限に達したか否か判断する。そして、マイクロプロセッサ４２は、書き換え回数又は読み出し回数が上限に達している場合、メモリ交換を通知又は警告する。
【０２３１】
本実施の形態において、ＮＡＮＤ型フラッシュメインメモリ２６のページサイズ又はブロックサイズが大きい場合、プリロードが有効である。
【０２３２】
プリロードを行う場合、統合メモリ管理装置２４のマイクロプロセッサ４２は、ＮＡＮＤ型フラッシュメインメモリ２６におけるデータ固有情報Ｅ１，Ｅ２を参照し、頻繁にアクセスされる可能性の高いデータを、予めキャッシュメモリ４５にプリロードしておく。
【０２３３】
あるいは、マイクロプロセッサ４２は、周期性のあるデータであって、所定の時間にアクセスされる可能性の高いデータを、その所定時間の前にプリロードしておく。
【０２３４】
図２３は、ＭＭＵを備えている既存のプロセッサに対して、本実施の形態に係る統合メモリ管理装置２４を用いたマルチプロセッサシステムの一例を示すブロック図である。
【０２３５】
プロセッサ２５５は、既存のプロセッサであり、ＭＭＵ４９５、１次キャッシュメモリ２８５、２次キャッシュメモリ２９５を備え、プロセス２７５を実行する。この図２３のシステムでは、通常のＭＭＵ４９５によるアドレス変換と、本実施の形態に係る統合メモリ管理装置２４によるアドレス変換とが混在することになる。この場合、プロセッサ２５５のＭＭＵ４９５は、ＮＡＮＤ型フラッシュメインメモリ２６へアクセスする場合に、まずＮＡＮＤ型フラッシュメインメモリ２６のページテーブル２６ｂをアクセスする。しかしながら、このページテーブル２６ｂは、アドレス変換を行うことなく、変換をスルーする内容とする。例えば、ページテーブル２６ｂでは、変換前のアドレスと変換後のアドレスとが同じに設定されている。これにより、プロセッサ２５５のＭＭＵ４９５ではアドレス変換が行われず、メモリ管理装置２４でアドレス変換を行うことが可能となる。
【０２３６】
上記の図１６に示す本実施の形態に係るメモリ管理装置２４を用いたシステムと、従来のマルチプロセッサシステムとの相違点を、以下で説明する。
【０２３７】
図２４は、一般的な従来のマルチプロセッサシステムの一例を示すブロック図である。
【０２３８】
従来のマルチプロセッサシステムでは、既存のプロセッサ２５５〜２５８とメインメモリ５０と２次記憶装置５１とがシステムバス３０で接続されている。
【０２３９】
各プロセッサ２５５〜２５８は、それぞれ、ＭＭＵ４９５〜４９８、１次キャッシュメモリ２８５〜２８８、２次キャッシュメモリ２９５〜２９８を具備する。各プロセッサ２５５〜２５８は、それぞれプロセス２７５〜２７７を実行する。
【０２４０】
ＭＭＵ４９５〜４９８は、論理アドレスと物理アドレスとの間の変換を行う。各プロセッサ２５５〜２５８から、１次キャッシュメモリ２８５〜２８８、２次キャッシュメモリ２９５〜２９８、メインメモリ５０、２次記憶装置５１のいずれかへのアクセスは、物理アドレスに基づいて行われる。
【０２４１】
メインメモリ５０には、例えばＤＲＡＭなどのような揮発性の記憶装置が用いられる。メインメモリ５０は、各プロセス２７５〜２７７ごとのページテーブル５２５〜５２８を備える。
【０２４２】
２次記憶装置５１には、例えば、ハードディスクドライブ、ＳＳＤ（Solid State Drive）、ＮＡＮＤ型フラッシュメモリなどが用いられる。
【０２４３】
従来のマルチプロセッサシステムではメインメモリにＤＲＡＭなどが用いられているのに対して、本実施の形態に係るマルチプロセッサシステムでは、ＮＡＮＤ型フラッシュメインメモリ２６がメインメモリとして用いられている。通常、ＤＲＡＭのビット単価は、ＮＡＮＤ型フラッシュメインメモリ２６のビット単価よりも高い。したがって、本実施の形態においては、コストを削減させることができる。
【０２４４】
従来のマルチプロセッサシステムではメインメモリが揮発性であるのに対して、本実施の形態に係るマルチプロセッサシステムではメインメモリとして不揮発性のＮＡＮＤ型フラッシュメインメモリ２６が用いられる。これにより、本実施の形態においては、インスタントオンが可能となり、メインメモリへプログラム又はデータなどのロード時間などを削除することができ、動作速度を向上させることができる。
【０２４５】
従来のマルチプロセッサシステムでは、揮発性のメインメモリ５０と不揮発性の２次記憶装置５１との双方が搭載される。これに対して、本実施の形態に係るマルチプロセッサシステムでは、ＮＡＮＤ型フラッシュメインメモリ２６を搭載することで、メインメモリを不揮発性にすることができ、ハードディスクなどのような２次記憶装置を除去することができる。本実施の形態においては、メインメモリとしてＤＲＡＭを搭載する必要がない。そして、本実施の形態においては、キャッシュとしてＤＲＡＭを搭載する場合に、このキャッシュの記憶容量が少なくてもよい。したがって、本実施の形態においては、システム構成及びメモリ管理を簡略化することができ、コストを削減することができる。
【０２４６】
従来のマルチプロセッサシステムでは、ページテーブル５２５〜５２８を共有しなければならず、アクセスネックが発生する。これに対して、本実施の形態に係るマルチプロセッサシステムでは、ページテーブルを共有する必要がなく、アクセスネックを解消することができる、
従来のように、２次記憶装置にＤＲＡＭ又はＳＳＤを用いた場合、ファイル、ＳＡＴＡ（Serial ATA）などの概念が用いられる。この場合、必ずオーバーヘッドが存在する。これに対して、本実施の形態では、データはファイルによって抽象化されることはなく、メモリが直接アクセスされる。したがって、本実施の形態では、データに対するアクセスを効率化できる。
【０２４７】
従来のように２次記憶装置にＤＲＡＭ又はＳＳＤを用いた場合と比べて、本実施の形態では、立ち上り時に、ディスクサーチ時間が必要ないため、立ち上り時間を短縮化できる。本実施の形態では、アプリケーションの立ち上りスピードも高速化できる。本実施の形態では、検索速度及びアプリケーションの実行速度を高速化できる。本実施の形態では、複数のプロセッサ毎にアプリケーションを動作させることができる。本実施の形態では、不揮発性のメインメモリが利用されるため、システムのスリープ時に、バッテリの寿命を考慮する必要がない。本実施の形態では、部品数を削減させることができ、コストを抑制できる。本実施の形態は、マルチプロセッサ環境に容易に適応できる。本実施の形態では、インストールが必要なく、プロセスマイグレーションをなくすことができる。
【０２４８】
本実施の形態においては、データ固有の読み書き頻度情報Ｅ１，Ｅ２、メモリ使用情報４０、メモリ固有情報４１に基づいて、メモリ管理装置２４によって最適なウェアレべリングが行われる。本実施の形態においては、データ固有の読み書き頻度情報Ｅ１，Ｅ２に基づいてウェアレべリングを行うことにより、ＳＳＤよりも効率よくウェアレべリングを行うことができる。
【０２４９】
一般的に、ＮＡＮＤ型フラッシュメモリの世代が異なる場合には、ページサイズ及びブロックサイズも相違している。本実施の形態において、メモリ管理装置２４は、ＮＡＮＤ型フラッシュメインメモリ２６からメモリ固有情報４１を読み出し、このメモリ固有情報４１で示されるページサイズ又はブロックサイズに応じた処理を行う。これにより、様々な世代のＮＡＮＤ型フラッシュメモリを、ＮＡＮＤ型フラッシュメインメモリ２６として用いることができる。本実施の形態において、メインメモリ管理装置２４は、ＮＡＮＤ型フラッシュメインメモリ２６からページサイズ又はブロックサイズを含むメモリ固有情報４１を読み出し、ＮＡＮＤ型フラッシュメインメモリ２６のページサイズ又はブロックサイズと、各プロセッサのキャッシュラインサイズとを合わせることができる。
【０２５０】
本実施の形態において、メモリ管理装置２４は、ＮＡＮＤ型フラッシュメインメモリ２６の寿命管理を行い、警告を行う。これにより、不具合の発生を防止することができる。
【０２５１】
本実施の形態において、メモリ管理装置２４は、複数のＮＡＮＤ型フラッシュメインメモリ２６に対するＲＡＩＤ機能を持ち、取り替え換え対象のＮＡＮＤ型フラッシュメインメモリ２６のホットスワップを実現することができる。これにより、寿命のつきたＮＡＮＤ型フラッシュメインメモリ２６を容易に取り替えることができる。
【０２５２】
ここで、複数のプロセッサに対して、複数のＮＡＮＤ型フラッシュメインメモリを備えた場合の仮想記憶アクセスの一例について説明する。
【０２５３】
図２５は、広いアドレス空間用のポインタを求める処理の一例を示すブロック図である。
【０２５４】
ポインタ５３は、狭いアドレス空間用のポインタ５３ａと、狭いアドレス空間用のポインタ５３ｂとを含む。
【０２５５】
セグメントテーブル５４は、プロセスＩＤ５５ごとに設けられており、広いアドレス空間用のポインタ５６を備える。
【０２５６】
例えば、広いアドレス空間用のポインタ５７は、狭いアドレス空間用のポインタ５３ｂと、狭いアドレス空間用のポインタ５３ａによって特定されるセグメントテーブル５４上の広いアドレス空間用のポインタ５６とを組み合わせることで得られる。なお、広いアドレス空間用のポインタ５７は、狭いアドレス空間用のポインタ５３ｂと、狭いアドレス空間用のポインタ５３ａと、セグメントテーブル５４上の広いアドレス空間用のポインタ５６とを組み合わせて生成されるとしてもよい。
【０２５７】
図２６は、複数のキャッシュメモリと複数のＮＡＮＤ型フラッシュメインメモリとで形成される仮想記憶空間の一例を示すブロック図である。
【０２５８】
広いアドレス空間用のポインタ５７は、プロセッサのキャッシュメモリ５８１〜５８ｎと、複数のＮＡＮＤ型フラッシュメインメモリ５９１〜５９ｍとによって構成される仮想記憶空間６０のいずれかを指す。
【０２５９】
これにより、プロセッサのキャッシュメモリ５８１〜５８ｎと、複数のＮＡＮＤ型フラッシュメインメモリ５９１〜５９ｍとを統合的に扱うことが可能である。
【０２６０】
上記各実施の形態において、メインメモリには、ＮＡＮＤ型フラッシュメモリに代えて、他の不揮発性メモリを用いるとしてもよい。
【０２６１】
上記各実施の形態に係る統合メモリ管理装置は、キャッシュがライトバック型の場合及びライトスルー型の場合のいずれにおいても適用可能である。
【図面の簡単な説明】
【０２６２】
【図１】本発明の第１の実施の形態に係る統合メモリ管理装置の一例を示すブロック図。
【図２】第１の実施の形態に係る統合メモリ管理装置のメモリ階層の第１例を示す図。
【図３】第１の実施の形態に係る統合メモリ管理装置を備えたＭＰＵが、ＮＡＮＤ型フラッシュメインメモリのデータ、書き換え回数データの一部、アドレス変換テーブルの一部を記憶する場合の動作の一例を示すフローチャート。
【図４】第１の実施の形態に係る統合メモリ管理装置を備えたＭＰＵにおいて、１次キャッシュメモリ又はＮＡＮＤ型フラッシュメインメモリからデータを読み出す場合の動作の一例を示すフローチャート。
【図５】第１の実施の形態に係る統合メモリ管理装置を備えたＭＰＵから、１次キャッシュメモリのキャッシュラインへの上書きが発生し、さらに１次キャッシュメモリ３のデータをＮＡＮＤ型フラッシュメインメモリ４に記憶する場合の動作の一例を示すフローチャート。
【図６】本発明の第２の実施の形態に係る統合メモリ管理装置の一例を示すブロック図。
【図７】第２の実施の形態に係る統合メモリ管理装置のメモリ階層の一例を示す図。
【図８】本発明の第３の実施の形態に係る統合メモリ管理装置の第１例を示すブロック図。
【図９】第３の実施の形態に係る統合メモリ管理装置の第２例を示すブロック図。
【図１０】本発明の第４の実施の形態に係る統合メモリ管理装置の適用例を示すブロック図。
【図１１】本発明の第５の実施の形態に係る記憶装置の一例を示すブロック図。
【図１２】第５の実施の形態に係るシステム論理アドレスの一例を示す図。
【図１３】本発明の第６の実施の形態に係る記憶装置の一例を示すブロック図。
【図１４】第６の実施の形態に係るシステム論理アドレスの一例を示す図。
【図１５】本発明の第７の実施の形態に係る統合メモリ管理装置の一例を示すブロック図。
【図１６】本発明の第８の実施の形態に係る統合メモリ管理装置の構成の一例を示すブロック図。
【図１７】第８の実施の形態に係る統合メモリ管理装置のマイクロプロセッサの機能の一例を示すブロック図。
【図１８】第８の実施の形態に係る統合メモリ管理装置の転送アルゴリズムの第１の動作の例を示すブロック図。
【図１９】第８の実施の形態に係る統合メモリ管理装置の転送アルゴリズムの第２の動作の例を示すブロック図。
【図２０】第８の実施の形態に係る統合メモリ管理装置の転送アルゴリズムの第３の動作の例を示すブロック図。
【図２１】ウェアレべリングの一例を示すブロック図。
【図２２】複数のＮＡＮＤ型フラッシュメインメモリを管理する統合メモリ管理装置の一例を示す斜視図。
【図２３】ＭＭＵを備えている既存のプロセッサに対して、第８の実施の形態に係る統合メモリ管理装置を用いたマルチプロセッサシステムの一例を示すブロック図。
【図２４】従来のマルチプロセッサシステムの一例を示すブロック図。
【図２５】広いアドレス空間用のポインタを求める処理の一例を示すブロック図。
【図２６】複数のキャッシュメモリと複数のＮＡＮＤ型フラッシュメインメモリとで形成される仮想記憶空間の一例を示すブロック図。
【符号の説明】
【０２６３】
１，１１…ＭＰＵ、２，１２，２４，３８１〜３８４…統合メモリ管理装置、３，２８１〜２８４…１次キャッシュメモリ、３ａ，２２ａ…タグ格納領域、３ｂ，２２ｂ…ライン格納領域、４，２６，２６１，２６２…ＮＡＮＤ型フラッシュメインメモリ、５…アドレス変換テーブル、６…書き換え回数データ、７…ＭＭＵ、８…キャッシュコントローラ、８ａ…第１のキャッシュコントローラ、８ｂ…第２のキャッシュコントローラ、９…メインメモリ用ＭＭＵ、１０…アクセス履歴格納部、１３…統合ＭＭＵ、１６，２５１〜２５４…プロセッサ、１７，２２，２９１〜２９４…２次キャッシュメモリ、２３…アドレス関係格納部、２７１〜２７４…プロセス、３０…システムバス、３３…ネットワーク、４０…メモリ使用情報、４１…メモリ固有情報、４２…マイクロプロセッサ、４２ａ…取得機能、４２ｂ…アドレス変換機能、４２ｃ…アクセス機能、４２ｄ…転送機能、４３…作業メモリ、４４…情報レジスタ、４５…キャッシュメモリ、Ｅ１，Ｅ２…読み書き頻度情報、３９…物理ブロック
【図１】
2010066914.tif 000003
【図２】
2010066914.tif 000004
【図３】
2010066914.tif 000005
【図４】
2010066914.tif 000006
【図５】
2010066914.tif 000007
【図６】
2010066914.tif 000008
【図７】
2010066914.tif 000009
【図８】
2010066914.tif 000010
【図９】
2010066914.tif 000011
【図１０】
2010066914.tif 000012
【図１１】
2010066914.tif 000013
【図１２】
2010066914.tif 000014
【図１３】
2010066914.tif 000015
【図１４】
2010066914.tif 000016
【図１５】
2010066914.tif 000017
【図１６】
2010066914.tif 000018
【図１７】
2010066914.tif 000019
【図１８】
2010066914.tif 000020
【図１９】
2010066914.tif 000021
【図２０】
2010066914.tif 000022
【図２１】
2010066914.tif 000023
【図２２】
2010066914.tif 000024
【図２３】
2010066914.tif 000025
【図２４】
2010066914.tif 000026
【図２５】
2010066914.tif 000027
【図２６】
2010066914.tif 000028