以下、図面を参照しながら本発明の各実施の形態について説明する。なお、以下の説明において、略又は実質的に同一の機能及び構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
(第1の実施の形態)
本実施の形態の統合メモリ管理装置(フラットメモリ管理装置)は、MPUに具備されており、キャッシュメモリとメインメモリとについてメモリ管理を行う。統合メモリ管理装置は、メモリアクセスに関するメモリ階層の数を削減し、メモリアクセスの最適化を容易に実現可能にする。
本実施の形態においては、MPUのMMUと、MPUのキャッシュコントローラと、メインメモリ用MMUとを統合した統合メモリ管理装置について説明する。
図1は、本実施の形態に係る統合メモリ管理装置の一例を示すブロック図である。なお、本実施の形態においては、メインメモリがNAND型フラッシュメモリの場合を例として説明するが、他の記憶装置を用いることもできる。また、本実施の形態において、アクセスとは、データ(又はプログラム)の読み出しと書き込みの少なくとも一方を含むとする。
MPU1は、統合メモリ管理装置2を具備し、NAND型フラッシュメインメモリ4をアクセスする。
NAND型フラッシュメインメモリ4は、内部に、アドレス変換テーブル5、書き換え回数データ6を記憶する。書き換え回数データ6は、メインメモリのアクセス状態を示すメインメモリ履歴データに対応する。
アドレス変換テーブル5は、NAND型フラッシュメインメモリ4における論理アドレスと物理位置(Physical Location)又は物理アドレスとを関連付けたデータである。
書き換え回数データ6は、NAND型フラッシュメインメモリ4の各ページ又はブロックの書き換え回数を表す。
統合メモリ管理装置2は、MMU7、キャッシュコントローラ8、1次キャッシュメモリ3、2次キャッシュメモリ22、メインメモリ用MMU9、アクセス履歴格納部(NAND Information Registers)10を具備する。また、キャッシュコントローラ8は、1次キャッシュメモリ3用の第1のキャッシュコントローラ8aと2次キャッシュメモリ22用の第2のキャッシュコントローラ8bとを具備する。さらに、メインメモリ用MMU9は、アドレス関係格納部23を具備する。なお、メインメモリ用MMU9と、アドレス関係格納部23とは、分離していてもよい。
本実施の形態においては、キャッシュメモリが2つの場合を例に説明するが、キャッシュメモリの数は1つ又は3以上であってもよい。
MMU7は、キャッシュメモリ3の論理アドレスを物理アドレスに変換する。
1次キャッシュメモリ3は、タグ格納領域3aと、ライン格納領域3bとを持つ。
2次キャッシュメモリ22は、タグ格納領域22aと、ライン格納領域22bとを持つ。
本実施の形態において、1次キャッシュメモリ3のラインサイズ及び2次キャッシュメモリ22のラインサイズは、NAND型フラッシュメインメモリ4のブロックと同じサイズ(例えば256キロバイト)か、NAND型フラッシュメインメモリ4のページサイズの倍数となるサイズとする。これにより、NAND型フラッシュメインメモリ4のデータを1次キャッシュメモリ3又は2次キャッシュメモリ22に移動する動作、及び1次キャッシュメモリ3又は2次キャッシュメモリ22のデータをNAND型フラッシュメインメモリ4に移動する動作をページ単位、ページサイズの整数倍単位、又はブロック単位で行うことができ、データの移動を簡素化できる。
本実施の形態において、1次キャッシュメモリ3及び2次キャッシュメモリ22は、例えばライトバック型であるとする。また、2次キャッシュメモリ22は、1次キャッシュメモリよりも記憶容量が大きいが低速であるとする。
第1のキャッシュコントローラ8aは、1次キャッシュメモリ3に対するアクセスを制御する。
より具体的には、第1のキャッシュコントローラ8aは、1次キャッシュメモリ3からデータを読み出す場合には、MMU7から得られた物理アドレスにそって、1次キャッシュメモリ3における物理アドレスに対応するデータを読み出す。また、第1のキャッシュコントローラ8aは、1次キャッシュメモリ3にデータを書き込む場合には、MMU7から得られた物理アドレスにそって、1次キャッシュメモリ3における物理アドレスに対応する位置に、書き込み対象のデータを書き込む。
第2のキャッシュコントローラ8bは、2次キャッシュメモリ22に対するアクセスを制御する。
より具体的には、第2のキャッシュコントローラ8bは、2次キャッシュメモリ22からデータを読み出す場合には、MMU7から得られた物理アドレスにそって、2次キャッシュメモリ22における物理アドレスに対応するデータを読み出す。また、第2のキャッシュコントローラ8bは、2次キャッシュメモリ22にデータを書き込む場合には、MMU7から得られた物理アドレスにそって、2次キャッシュメモリ22における物理アドレスに対応する位置に、書き込み対象のデータを書き込む。
メインメモリ用MMU9は、NAND型フラッシュメインメモリ4に対するアクセスを制御する。
メインメモリ用MMU9は、必要に応じて、NAND型フラッシュメインメモリ4のアドレス変換テーブル5の一部又は全部を、アドレス関係データとして、アドレス関係格納部23に格納する。また、メインメモリ用MMU9は、必要に応じて、NAND型フラッシュメインメモリ4の書き換え回数データ6の一部又は全部を、アクセス履歴データとして、アクセス履歴格納部10に格納する。
メインメモリ用MMU9は、NAND型フラッシュメインメモリ4の論理アドレスを物理位置に変換する。
メインメモリ用MMU9は、NAND型フラッシュメインメモリ4の物理位置に基づいて、NAND型フラッシュメインメモリ4からデータの読み出しを行い、第1のキャッシュコントローラ8a又は第2のキャッシュコントローラ8bを経由して、1次キャッシュメモリ3又は2次キャッシュメモリ22にデータを記憶する。
メインメモリ用MMU9は、NAND型フラッシュメインメモリ4から新たなデータを読み出した場合には、その新たなデータに関するアドレス変換テーブルのデータ、及び書き換え回数データを読み出し、それぞれアドレス関係格納部23及びアクセス履歴格納部10に格納する。
メインメモリ用MMU9は、NAND型フラッシュメインメモリ4にデータを書き込む場合、アドレス関係データ及びアクセス履歴データに基づいて、NAND型フラッシュメインメモリ4の全領域又は全ブロックを隔たりなくアクセスさせる制御、NAND型フラッシュメインメモリ4の各領域又はブロックの書き換え回数を均等化するための制御、不良領域又は不良ブロックを避ける制御などを行う。さらに、メインメモリ用MMU9は、1次キャッシュメモリ3又は2次キャッシュメモリ22に記憶されていたデータを、第1のキャッシュコントローラ8a又は第2のキャッシュコントローラ8bを経由して取得し、この取得したデータをNAND型フラッシュメインメモリ4の物理位置に基づいてNAND型フラッシュメインメモリ4に記憶する。
メインメモリ用MMU9は、NAND型フラッシュメインメモリ4にデータが書き込まれた場合に、書き込まれたデータに関する論理アドレスと物理位置との関係に基づいてアドレス関係格納部23のアドレス関係データを更新し、また、アクセス履歴格納部10のアクセス履歴データを更新する。
メインメモリ用MMU9は、必要に応じて、メインメモリ用MMU9に格納されているアドレス関係データと、アクセス履歴格納部10に記憶されているアクセス履歴データとを、それぞれNAND型フラッシュメインメモリ4のアドレス変換テーブル5と書き換え回数データ6とに対して反映する。すなわち、メインメモリ用MMU9は、MPU1に記憶されているアドレス関係データと、NAND型フラッシュメインメモリ4に記憶されているアドレス変換テーブル5とを整合させる。また、メインメモリ用MMU9は、アクセス履歴格納部10のアクセス履歴データと、NAND型フラッシュメインメモリ4の書き換え回数データ6とを整合させる。
アクセス履歴格納部10は、NAND型フラッシュメインメモリ4のページ又はブロック(物理位置)のアクセス状態の履歴を格納する。本実施の形態において、アクセス履歴格納部10は、NAND型フラッシュメインメモリ4における各ページ又はブロックの書き換え回数データ6のうち、一部又は全部のページ又はブロックについての書き換え回数データを格納する。
例えば、各ブロックの書き換え回数は4バイトで記録され、各ブロックサイズは256キロバイトとする。この場合において、NAND型フラッシュメインメモリ4の記憶容量が1メガバイトであるとすると、NAND型フラッシュメインメモリ4に記憶されるブロック数は4ブロックであり、各ブロックの書き換え回数を記憶するために必要な記憶容量は16バイトとなる。同様の場合において、NAND型フラッシュメインメモリ4の記憶容量が1ギガバイトであるとすると、NAND型フラッシュメインメモリ4に記憶されるブロック数は4096ブロックであり、各ブロックの書き換え回数を記憶するために必要な記憶容量は16キロバイトとなる。さらに、同様の場合において、NAND型フラッシュメインメモリ4の記憶容量が16ギガバイトであるとすると、各ブロックの書き換え回数を記憶するために必要な記憶容量は64キロバイトとなる。
例えば、NAND型フラッシュメインメモリ4の記憶容量が例えば128ギガバイトなどのように大きくなった場合、アクセス履歴格納部10は、NAND型フラッシュメインメモリ4における書き換え回数データ6の一部を格納する。このように、アクセス履歴格納部10は、書き換え回数データ6の一部を格納するため、書き換え回数にはposが付されている。posはキャッシュタグと同様の手法で使用される。
メインメモリ用MMU9の動作例の概略を説明する。
メインメモリ用MMU9は、NAND型フラッシュメインメモリ4のアドレス変換テーブル5の一部を、アドレス関係格納部23に記憶し、書き換え回数データ6の一部をアクセス履歴格納部10に記憶する。
メインメモリ用MMU9は、キャッシュメモリ3,22に読み出し対象のデータが記憶されておらず、NAND型フラッシュメインメモリ4からデータの読み出しを行う場合、NAND型フラッシュメインメモリ4からデータを読み出す。そして、メインメモリ用MMU9は、アドレス変換テーブル5のうち読み出したデータに関するデータをアドレス関係格納部23に記憶する。また、メインメモリ用MMU9は、書き換え回数データ6のうち読み出したデータに関するデータをアクセス履歴格納部10に記憶する。
MPU1からNAND型フラッシュメインメモリ4へのデータの書き込みを行う場合、メインメモリ用MMU9は、NAND型フラッシュメインメモリ4における論理アドレスを物理位置に変換し、キャッシュライン3b,22bにおける書き込み対象のデータをNAND型フラッシュメインメモリ4に書き込む。加えて、メインメモリ用MMU9は、アドレス関係格納部23に記憶しているアドレス関係データと、アクセス履歴格納部10に記憶されているアクセス履歴データとを更新する。
そして、メインメモリ用MMU9は、アドレス関係格納部23のアドレス関係データと、アクセス履歴格納部10のアクセス履歴データとに基づいて、それぞれアドレス変換テーブル5と書き換え回数データ6を更新する。
例えば、1次キャッシュメモリ3がリード・オンリー(Read Only)の場合、MPU1からキャッシュライン3bへの書き込みはない。この場合、メインメモリ用MMU9は、第1のキャッシュコントローラ8aを用いて、NAND型フラッシュメインメモリ4から読み出したデータを1次キャッシュメモリ3に上書きする。この1次キャッシュメモリ3に記憶されたデータの読み出しが発生すると、第1のキャッシュコントローラ8aは、1次キャッシュメモリ3からデータを読み出す。
一方、1次キャッシュメモリ3がリード・オンリーでない場合、MPU1は、プログラムを実行して得られたデータをキャッシュメモリ3に書き込む。MPU1からキャッシュライン3bにデータの書き込みが発生した場合、キャッシュライン3bのデータをNAND型フラッシュメインメモリ4にライトバック(Write Back)する。この場合、メインメモリ用MMU9は、ライトバックされるデータをキャッシュメモリ3から第1のキャッシュコントローラ8a経由で読み出す。そして、メインメモリ用MMU9は、アクセス履歴格納部10のアクセス履歴データに基づいて、NAND型フラッシュメインメモリ4においてライトバックされる位置として、所定数より少ない書き換え回数のページ又はブロックを選択する。メインメモリ用MMU9は、この選択されたページ又はブロックにライトバックされるデータを記憶し、選択されたページ又はブロックについて、NAND型フラッシュメインメモリ4用の論理アドレスと物理位置との変換関係を示すアドレス関係データを更新し、選択されたページ又はブロックについてアクセス履歴格納部10の書き換え回数を更新する。
その後、必要に応じて、アドレス関係格納部23とアクセス履歴格納部10の内容により、アドレス変換テーブル5と書き換え回数データ6とを更新する。
図2は、本実施の形態に係る統合メモリ管理装置2のメモリ階層の一例を示す図である。
この例におけるメモリ階層は、MMU7の属する階層と、メインメモリ用MMU9及びキャッシュコントローラ8との属する階層を持つ。
MMU7の階層では、論理アドレスが物理アドレスに変換される。
メインメモリ用MMU9の属する階層では、例えば、アクセス先となるNAND型フラッシュメインメモリ4の物理位置又は物理アドレスが決定される。メインメモリ用MMU9の属する階層では、書き込み回数が所定数以下(例えば最小)のページ又はブロックをアクセスさせる制御が行われる。
そして、統合メモリ管理装置2は、決定された物理位置に基づいて、NAND型フラッシュメインメモリ4をアクセスする。
図3は、本実施の形態に係る統合メモリ管理装置2を備えたMPU1が、NAND型フラッシュメインメモリ4のデータ、書き換え回数データ6の一部、アドレス変換テーブル5の一部を記憶する場合の動作の一例を示すフローチャートである。
ステップS1において、メインメモリ用MMU9は、MPU1によって使用されるNAND型フラッシュメインメモリ4のデータの一部(最初は、先頭から1ギガバイト分などでもよい)のデータを読み出す。キャッシュコントローラ8は、読み出されたデータを、キャッシュメモリ3,8のキャッシュライン3b,8bに書き込む。
ステップS2において、メインメモリ用MMU9は、NAND型フラッシュメインメモリ4に保管されている書き換え回数データ6の一部(キャッシュメモリ3,8に格納されたデータに対するブロックの書き換え回数など。なお、最初は、先頭から1ギガバイト分などでもよい)を、MPU1内のアクセス履歴格納部10にコピーする。
ステップS3において、メインメモリ用MMU9は、NAND型フラッシュメインメモリ4に保管されているアドレス変換テーブル5の一部(キャッシュメモリ3,8に格納されたデータに対応するブロックの論理アドレスと物理位置との関係を示すデータなど。なお、最初は、先頭から1ギガバイト分などでもよい)を、MPU1内のメインメモリ用MMU9のアドレス関係格納部23にコピーする。
なお、このステップS1〜S3は、自由な順序で実行されてよく、並列に実行されてもよい。
図4は、本実施の形態に係る統合メモリ管理装置2を備えたMPU1において、1次キャッシュメモリ3又はNAND型フラッシュメインメモリ4からデータを読み出す場合の動作の一例を示すフローチャートである。なお、2次キャッシュメモリ22からデータを読み出す場合についても、1次キャッシュメモリ3の場合と同様である。
ステップT1において、MMU7及びメインメモリ用MMU9は、読み出し対象の論理アドレスを物理アドレスに変換する。
読み出し対象の物理アドレスが1次キャッシュメモリ3を示す場合、ステップT2aにおいて、第1のキャッシュコントローラ8aは、物理アドレスに基づいて1次キャッシュメモリ3から読み出し対象のデータを読み出す。
読み出し対象の物理アドレス(物理位置)がNAND型フラッシュメインメモリ4を示す場合、ステップT2bにおいて、メインメモリ用MMU9は、物理アドレスに対応するデータを、NAND型フラッシュメインメモリ4から読み出す。
ステップT3bにおいて、メインメモリ用MMU9は、NAND型フラッシュメインメモリ4から読み出したデータを、第1のキャッシュコントローラ8a経由で、1次キャッシュメモリ3に上書きする。
なお、メインメモリ用MMU9は、NAND型フラッシュメインメモリ4から新たに読み出したデータに対応するアドレス関係データ及びアクセス履歴データがそれぞれアドレス関係格納部及びアクセス履歴格納部に記憶されていない場合、NAND型フラッシュメインメモリ4のアドレス変換テーブル5及び書き換え回数データ6に基づいてアドレス関係格納部及びアクセス履歴格納部に新たに読み出したデータに対応するデータを記憶する。
図5は、本実施の形態に係る統合メモリ管理装置2を備えたMPU1から、1次キャッシュメモリ3のキャッシュライン3bへの上書きが発生し、さらに1次キャッシュメモリ3のデータをNAND型フラッシュメインメモリ4に記憶する場合の動作の一例を示すフローチャートである。なお、2次キャッシュメモリ22への上書きが発生した場合についても、この1次キャッシュメモリ3の場合と同様である。
ステップU1において、MMU7は、論理アドレスから物理アドレスへの変換を行う。
ステップU2において、第1のキャッシュコントローラ8aは、物理アドレスに応じて、書き込み対象のデータを、1次キャッシュメモリ3に記憶する。
ステップU3において、メインメモリ用MMU9は、アドレス関係格納部23のアドレス関係データと、アクセス履歴格納部10のアクセス履歴データとに基づいて、書き換え回数がある値より少ないブロックの位置又は一番書き換えの少ないブロックの位置を、NAND型フラッシュメインメモリ4における書き込み位置として選択する。
ステップU4において、メインメモリ用MMU9は、NAND型フラッシュメインメモリ4における選択された位置に、書き込み対象のデータを記憶する。
ステップU5において、メインメモリ用MMU9は、上書き後のキャッシュライン3bに対応するように、アドレス関係格納部23のアドレス関係データを更新し、アクセス履歴格納部10のアクセス履歴データを更新する。
ステップU6において、メインメモリ用MMU9は、メインメモリ用MMU9に格納されているアドレス関係データと整合するように、NAND型フラッシュメインメモリ4のアドレス変換テーブル5を更新し、また、アクセス履歴格納部10に格納されているアドレス履歴データと整合するように、NAND型フラッシュメインメモリ4の書き換え回数データ6を更新する。例えば、NAND型フラッシュメインメモリ4の書き換え回数データの更新は、MPU1の電源が切られるとき、又は、MPU1のアクセス履歴格納部10の書き換え時に、実行される。
本実施の形態において、統合メモリ管理装置2は、書き換え回数に基づいて書き換えを行うブロックの物理位置を選択している。しかしながら、これに代えて、統合メモリ管理装置2は、不良領域又は不良ブロックを避ける制御、NAND型フラッシュメインメモリ4の全領域又は全ブロックを隔たりなくアクセスさせる制御、アクセス先の領域又はブロックの位置が分散されるようにする制御を行うとしてもよい。この場合、アクセス履歴格納部10には、NAND型フラッシュメインメモリ4に記憶されている不良領域又は不良ブロックの発生位置、NAND型フラッシュメインメモリ4の書き換え位置の分布などのデータが記憶される。また、統合メモリ管理装置2は、各種の制御を自由に組み合わせて、書き換えを行う領域又はブロックの位置を選択するとしてもよい。
本実施の形態において、統合メモリ管理装置2は、キャッシュメモリ3のデータ入れ替え時に、NAND型フラッシュメインメモリ4のガーベージコレクション処理又は消去のための制御を行うとしてもよい。
本実施の形態において、メインメモリ用MMU9のアドレス関係格納部23とアクセス履歴格納部10とのうち、少なくとも一方について、二次キャッシュメモリを用いてデータを格納するとしてもよい。すなわち、アドレス関係格納部23に記憶されているアドレス関係データは、2次キャッシュメモリ22に格納されるとしてもよい。また、アクセス履歴格納部10に記憶される書き込み回数などを含むアクセス履歴データは、2次キャッシュメモリ22に格納されるとしてもよい。
本実施の形態に係るMPU1の統合メモリ管理装置2においては、アクセス履歴格納部10に格納されているデータを用いて書き込みを行う対象となるNAND型フラッシュメインメモリ4の物理位置を選択し、ライトバックするアルゴリズムを採用し、このアルゴリズムを実行するプログラムを用いることができる。例えば、書き換え回数の多い領域又はブロックの書き換えを避けるなどのような高度なアルゴリズムを用いることができる。
以上説明した本実施の形態に係る統合メモリ管理装置2においては、MPU1内で、MMU7、第1のキャッシュコントローラ8a、第1のキャッシュコントローラ8b、キャッシュメモリ3、キャッシュメモリ22、メインメモリ用MMU9、アクセス履歴格納部10が統合された構成が採用されている。すなわち、本実施の形態においては、NAND型フラッシュメインメモリ4のメモリマッピング管理がMPU1の統合メモリ管理装置2で実行されるアーキテクチャが実現されている。
これにより、メモリ階層において、オーバーヘッドの大きい階層を削除することができる。
本実施の形態においては、一般的なNAND型フラッシュメモリに備えられているメモリコントローラの動作を、MPU1側で実行する。このように、MPUの動作とメモリコントローラの動作とを組み合わせてMPU1で実行することで、メモリ制御を協調させることができる。
本実施の形態においては、多層化されていたメモリ階層を単純化することができ、アクセスに必要な時間、製造時に必要な時間、製造時に必要な費用などの様々なコストを削減することができる。
本実施の形態においては、メモリ階層がシンプルになるため、プログラマはどこの階層でMMU変換、キャッシュメモリの置き換えが発生するかを把握することが容易であり、プログラム・オプティマイズを容易に行うことができる。
本実施の形態においては、MPU1のキャッシュ動作とメインメモリのアクセス動作との間で最適化を容易に実現することができる。
(第2の実施の形態)
本実施の形態においては、上記第1の実施の形態の変形例について説明する。
図6は、本実施の形態に係る統合メモリ管理装置の一例を示すブロック図である。
MPU11には、本実施の形態に係る統合メモリ管理装置12が備えられている。統合MMU13は、上記第1の実施の形態に係るMMU7とメインメモリ用MMU9とを統合した機能を実現する。
本実施の形態において、1次キャッシュメモリ3のタグ及び2次キャッシュメモリ22のタグは、プロセスIDと論理アドレスとで、それぞれ1次キャッシュメモリ3及び2次キャッシュメモリ22を管理するために用いられる。
本実施の形態においては、プロセッサであるMPU11の統合MMU13により、1次キャッシュメモリ3、2次キャッシュメモリ22、NAND型フラッシュメインメモリ4のメモリマッピング管理が行われ、各種メモリの一括管理が行われる。
図7は、本実施の形態に係る統合メモリ管理装置12のメモリ階層の一例を示す図である。
この例におけるメモリ階層は、統合MMU13とキャッシュコントローラ8とが同じ階層に属している。統合メモリ管理装置12は、1次キャッシュメモリ3及び2次キャッシュメモリ22に対するアドレス変換と、NAND型フラッシュメインメモリ4に対するアドレス変換とを統合し、同等のメモリ階層で扱う。統合メモリ管理装置2は、ある基準にそって、キャッシュメモリ3、キャッシュメモリ22、NAND型フラッシュメインメモリ4のどの領域をアクセスするか決定する。
このメモリ階層では、論理アドレスがNAND型フラッシュメインメモリ4の物理位置に変換される場合、書き込み回数が所定数以下の領域又はブロックをアクセスさせる制御が行われる。
そして、統合メモリ管理装置2は、決定された物理位置に基づいて、NAND型フラッシュメインメモリ4をアクセスする。
以上説明した本実施の形態においては、上記第1の実施の形態に係るMMU7とメインメモリ用MMU9とを統合することにより、構成がシンプルになり、アクセスに必要な時間コストや製造時に必要な経済コストなどの様々なコストを削減できる。
統合MMU13を用いることにより、1次キャッシュメモリ3及び2次キャッシュメモリ22に対するアドレス変換と、NAND型フラッシュメインメモリ4に対するアドレス変換とを統合することができる。例えば、あるプロセスに関する記憶内容を、なるべくNAND型フラッシュメインメモリ4内の近い位置に記憶することにより、高速アクセスが可能となる。また、例えば、書き換え回数の少ない領域又はブロックだけを選んで一つのプロセスに割り当てることができる。
(第3の実施の形態)
本実施の形態においては、上記第1又は第2の実施の形態に係る統合メモリ管理装置2,12の変形例について説明する。
図8は、上記図1に示す第1の実施の形態に係る統合メモリ管理装置2の変形例を示す図である。
上記第1の実施の形態においては、物理位置に基づくNAND型フラッシュメインメモリ4へのアクセスは、メインメモリ用MMU9によって実行している。しかしながら、物理位置に基づくNAND型フラッシュメインメモリ4へのアクセスは、キャッシュコントローラ8が行うとしてもよい。
この場合、メインメモリ用MMU9は、論理アドレスを物理位置に変換する制御を行い、このメインメモリ用MMU9で選択された物理位置に基づいて、キャッシュコントローラ8は、NAND型フラッシュメインメモリ4をアクセスする。なお、本実施の形態において、キャッシュコントローラ8は、メインメモリ用MMU9に代わって、NAND型フラッシュメインメモリ4のアドレス変換テーブル5の読み出し及び更新、書き換え回数データ6の読み出し及び更新をするとしてもよい。
図9は、上記図6に示す第1の実施の形態に係る統合メモリ管理装置12の変形例を示す図である。
上記第2の実施の形態においては、物理位置に基づくNAND型フラッシュメインメモリ4へのアクセスは、統合MMU13によって実行している。しかしながら、物理位置に基づくNAND型フラッシュメインメモリ4へのアクセスは、キャッシュコントローラ8が行うとしてもよい。
この場合、統合MMU13は、論理アドレスを物理位置に変換する制御を行い、この統合MMU13で選択された物理位置に基づいて、キャッシュコントローラ8は、NAND型フラッシュメインメモリ4をアクセスする。なお、本実施の形態において、キャッシュコントローラ8は、NAND型フラッシュメインメモリ4のアドレス変換テーブル5の読み出し及び更新、書き換え回数データ6の読み出し及び更新をするとしてもよい。
(第4の実施の形態)
本実施の形態においては、上記第1乃至第3の実施の形態に係る統合メモリ管理装置2,12の適用例に付いて説明する。
図10は、本実施の形態に係る統合メモリ管理装置の適用例を示すブロック図である。
例えば、ゲーム機や、カーナビゲーションシステムでは、ディスクドライブにより読み出されたデータ又はプログラムがメインメモリに一度書き込まれ、その後、このメインメモリに書き込まれたデータ又はプログラムが多回数リードされる。本実施の形態において、統合メモリ管理装置20は、ゲーム機に適用される場合について説明するが、カーナビゲーションシステムなどの他の装置に適用される場合も同様である。統合メモリ管理装置20の代わりに、上記第1の実施の形態に係る統合メモリ管理装置2,12を用いるとしてもよい。
ポータブル・ゲーム・コンソール・プロセッサ14は、グラフィクス・プロセッサ15とプロセッサ16とを具備する。
グラフィクス・プロセッサ15、プロセッサ16、2次キャッシュメモリ17、NAND型フラッシュメインメモリ4、ディスクドライブ18はバス19に接続されている。
プロセッサ16は、1次キャッシュメモリ3、2次キャッシュメモリ17をアクセスするための2次キャッシュタグ21、キャッシュコントローラ8、統合MMU13を具備する。
さらに、プロセッサ16は、書き換え回数格納部10を具備するが、この図10では省略している。なお、プロセッサ16は、1次キャッシュメモリ3又は2次キャッシュメモリ17を、書き換え回数格納部10として用いるとしてもよい。
キャッシュコントローラ8は、1次キャッシュメモリ3、2次キャッシュメモリ17へのアクセスを制御する。2次キャッシュメモリ17には、例えば、DRAMを用いることができる。本実施の形態において、2次キャッシュメモリ17は、ポータブル・ゲーム・コンソール・プロセッサ14と分離している。
2次キャッシュメモリ17に対するバンド幅は、NAND型フラッシュメインメモリ4の10倍程度とする。ディスクドライブ18としては、例えば、光ディスクドライブを用いることができる。
本実施の形態において、NAND型フラッシュメインメモリ4への書き込みは、ゲームカートリッジの交換時とし、他の時点ではNAND型フラッシュメインメモリ4はリード・オンリーで利用されるとする。頻繁に書き込まれるデータ又はプログラムコード、頻繁に読み出されるデータ又はプログラムコードは、2次キャッシュメモリ17に格納される。さらに頻繁に読み出されるデータ又はプログラムコードは、1次キャッシュメモリ3に格納される。
なお、例えば、1次キャッシュメモリ3又は2次キャッシュメモリ17に記憶されているデータ又はプログラムコードのうち、使用頻度の低いデータ又はプログラムコードをNAND型フラッシュメインメモリ4に書き込み、NAND型フラッシュメインメモリ4に記憶されているデータ又はプログラムコードのうち、使用頻度の高いデータ又はプログラムコードを1次キャッシュメモリ3又は2次キャッシュメモリ17に記憶するとしてもよい。
本実施の形態では、例えば、1次キャッシュメモリ3は64キロバイト程度であり、2次キャッシュメモリ17は16〜128メガバイト程度であり、NAND型フラッシュメインメモリ4は1ギガバイト程度であるとする。
例えば、グラフィクス・プロセッサ15の処理能力は、1/10バンド幅のNAND型フラッシュメインメモリ4の速度とつりあうか、その2〜3倍程度の能力とする。使用頻度の低いデータは、NAND型フラッシュメインメモリ4から読み出し、使用頻度の高いデータは、1次キャッシュメモリ3又は2次キャッシュメモリ17から読み出すとする。
本実施の形態においては、キャッシュ入れ替え(キャッシュミスなど)時に、NAND型フラッシュメインメモリ4のガーベージコレクション処理やイレースを行う、などのような最適化を実現することができるプロセッサ16を提供することができ、高度な最適化を行うことができる。
なお、2次キャッシュメモリ17のエントリーサイズを1メガバイト程度とすると、NAND型フラッシュメインメモリ4との相性がよくなる。
本実施の形態においては、例えば2重に仮想メモリ変換が行われてオーバーヘッドが大きくなることを防止できる。
本実施の形態においては、プロセッサ16に統合MMU13が備えられることにより、1次キャッシュメモリ3と二次キャッシュメモリ17とNAND型フラッシュメインメモリ4とを一括管理することができる。
そして、本実施の形態では、レジューム時に保存するデータ量を削減することができる。
本実施の形態においては、NAND型フラッシュメインメモリ4にデータ又はプログラムを記憶することにより、ディスクドライブ18へのアクセスを削減でき、待ち時間を削減でき、ユーザの操作性及び満足度を向上させることができる。
本実施の形態においては、二次キャッシュメモリ17(DRAM)よりもメモリ単価の安いNAND型フラッシュメインメモリ4を用いることにより、より多くのデータ又はプログラムを高速にアクセスすることができる。
(第5の実施の形態)
本実施の形態においては、プロセッサとメインメモリとの間に備えられた統合メモリ管理装置について説明する。
図11は、本実施の形態に係る統合メモリ管理装置の一例を示すブロック図である。
本実施の形態に係る統合メモリ管理装置24は、システムバス30経由で、複数のプロセッサ(例えばCodec IP、Graphic IPを含む)251〜254と接続されている。統合メモリ管理装置24は、マルチプロセッサ構成に対して適用される。また、統合メモリ管理装置24は、例えばNAND型フラッシュメモリなどのような不揮発性のメインメモリ26と接続されている。なお、本実施の形態において、プロセッサの数は1又は2以上で自由に変更可能である。
メインメモリ26では、書き込み及び読み込みは、ページと呼ばれる複数ビット単位で行われる。消去は、ブロックと呼ばれる、複数のページをまとめた単位で一括して行われる。
複数のプロセッサ251〜254のうちのいくつかでは、論理アドレスを含むプロセスが実行されている。この例では、プロセッサ251,252,254でプロセス271,272,274が実行されている。なお、プロセス271,272,274は、オペレーティングシステムであってもよい。
複数のプロセッサ251〜254のそれぞれは、1次キャッシュメモリ281〜284、2次キャッシュメモリ291〜294を具備する。
統合メモリ管理装置24は、ウェアレベリングと、論理アドレスから物理アドレスへの変換を行う。
統合メモリ管理装置24は、メインメモリ26のページ単位、ページサイズの整数倍単位、又はブロック単位でウェアレベリングを行う。ウェアレベリングカウンタは、メインメモリのリダンダンシ領域26aに記憶される。リダンダンシ領域26aは、メインメモリ26のページ又はブロック毎に設けられている冗長領域である。統合メモリ管理装置24は、メモリ空間にマッピングを行う場合に、ウェアレベリングを考慮してメモリ確保を行う。
統合メモリ管理装置24は、リムーバブルメモリもメインメモリとして扱い、メモリ空間にマッピングする。
この統合メモリ管理装置24は、複数のプロセッサ271〜274側というよりむしろメインメモリ26側に備えられている。しかしながら、統合メモリ管理装置24は、複数のプロセッサ271〜274側に備えられるとしてもよい。
統合メモリ管理装置24は、命令とデータとで、ページサイズを切り換える。例えば、命令用のページサイズは16キロバイトなどのように小さいサイズとし、データ用のページサイズは512キロバイトなどのように大きいサイズとする。
メインメモリ26は、統合メモリ管理装置24のページサイズ(プロセス又はOS)と同じメモリページサイズ又は統合メモリ管理装置34のページサイズの倍数となるメモリページサイズを持つ。
1次キャッシュメモリ281〜284及び2次キャッシュメモリ291〜294と、メインメモリ26との間では、一括してページの転送が実行される。この一括の転送は、例えば、メインメモリのページ単位、ページサイズの整数倍単位又はブロック単位(例えば、256 kilobyte 〜 512 kilobyte)で行われる。
1次キャッシュメモリ281〜284に対するアクセス、及び2次キャッシュメモリ291〜294に対するアクセスは論理アドレスに基づいて行われる。システムバス30上でも、論理アドレスが用いられる。
統一的な統合メモリ管理装置24は、複数のプロセッサ271〜274に対して、プロセスレベルの論理アドレスから物理アドレスへの変換、さらに、メインメモリ26のページ単位、ページサイズの整数倍単位、又はブロック単位でのウェアレベリングのための論理ページ又は論理ブロックから物理ページ又は物理ブロックへの変換を総合して行う。
本実施の形態においては、図12に示す形式のシステム論理アドレス31が用いられる。このシステム論理アドレス31は、プロセッサIDとプロセスID、プロセス内論理アドレスを含む。なお、プロセッサIDとプロセスIDとのうちの少なくとも一つは変換され(例えばハッシングなどを用いてIDの長さが短くされ)、システム論理アドレス31は、変換後の内容を含むとしてもよい。例えば、プロセッサIDとプロセスIDをハッシングで変換し、システム論理アドレス31は、このハッシングで変換されたビットとプロセス内論理アドレスとを含むとしてもよい。
メインメモリ26は、システム全体で単一のページテーブル26bを記憶する。すなわち、メインメモリ26は、プロセス271,272,274毎のページテーブルを持つのではなく、プロセス271,272,274全体で統一したページテーブル26bを持つ。
本実施の形態においては、メインメモリ26にハードディスクドライブ(HDD)と同じ程度の容量を持つメインメモリ26を使用する。この場合、物理メモリよりも大きなメモリ空間を使用するために2次記憶(スワップアウト)を使用する必要はない。従来においては、物理メインメモリが例えばDRAMであって記憶容量が1GB程度であるが、プロセス毎に4GBの論理メモリ空間を使いたい場合に、より記憶容量の大きいハードディスクドライブ上に2次記憶領域を確保し、スワップイン/スワップアウトを行う必要があった。しかしながら、本実施の形態では、メインメモリ26がハードディスクドライブと同レベル以上の記憶容量を持つため、2次記憶を用いる必要がない。
したがって、装置構成及び動作をシンプルにすることができる。
本実施の形態においては、インスタントON/OFFを行うことができ、レジュームなどを高速化することができる。
従来においては、実行する前にファイルをロードする必要があった。これに対して、本実施の形態においては、キャッシュメモリ281〜284,291〜294又はメインメモリ26上の実行アドレスにジャンプするのみでよく、実行する前にファイルをロードする必要がない。
(第6の実施の形態)
本実施の形態においては、上記第5の実施の形態の変形例について説明する。
図13は、本実施の形態に係る記憶装置の一例を示すブロック図である。
本実施の形態に係る記憶装置において、複数の統合メモリ管理装置241,242は、ネットワーク33経由で、複数のプロセッサ(Codec IP、Graphic IPを含む)251〜254と接続されている。統合メモリ管理装置241,242は、例えばNAND型フラッシュメモリなどのような不揮発性の複数のメインメモリ261,262と接続されている。
なお、統合メモリ管理装置の数、メインメモリの数は、自由に変更可能である。
メインメモリ261は、上記第5の実施の形態におけるメインメモリ26と同様の特徴を持ち、ウェアレベリングカウンタを記憶するリンダンシ領域261a、プロセス271,272,274全体で統一したページテーブル261bを持つ。メインメモリ262も、このメインメモリ261と同様の特徴を持つ。
本実施の形態で用いられる論理アドレス34は、図14に示すように、ネットワーク33のIPアドレス又はIPv6アドレス、プロセッサIDとプロセスID、プロセス内論理アドレスを含む。なお、各アドレス及びIDのうちの少なくとも一つは、変換され(例えばハッシングなどを用いてIDの長さが短くされ)、論理アドレス34は、変換後の内容を含むとしてもよい。例えば、IPアドレス又はIPv6アドレス、プロセッサIDとプロセスIDをハッシングで変換し、論理アドレス34は、このハッシングで変換されたビットとプロセス内論理アドレスとを含むとしてもよい。
メインメモリ261,262は、統合メモリ管理装置241,242のページサイズと同じメモリページサイズ又はMMU241,242のページサイズの整数倍となるメモリページサイズを持つ。
1次キャッシュメモリ281〜284及び2次キャッシュメモリ291〜294と、メインメモリ261,262との間では、一括してページの転送が実行される。この一括の転送は、例えば、メインメモリのページ単位、ページサイズの整数倍単位、又はブロック単位(例えば、256 kilobyte 〜 512 kilobyte)で行われる。
本実施の形態において、1次キャッシュメモリ281〜284に対するアクセス、及び2次キャッシュメモリ291〜294に対するアクセスは、論理アドレスに基づいて実行される。ネットワーク33上でも、論理アドレスが用いられる。
統一的な統合メモリ管理装置241,242は、複数のプロセッサ271〜274に対して、プロセスレベルの論理アドレスから物理アドレスへの変換、さらに、不揮発性のメインメモリ261,242のページ単位、ページサイズの整数倍単位、又はブロック単位でのウェアレべリングのための論理ページ又は論理ブロックから物理ページ又は物理ブロックへの変換を総合して行う。
本実施の形態においては、ネットワーク33経由の広大なメモリ空間において上記第5の実施の形態と同様の効果を得ることができる。
(第7の実施の形態)
本実施の形態においては、上記第5及び第6の実施の形態の変形例について説明する。以下においては、上記第5の実施の形態の変形例について説明するが、上記第6の実施の形態についても同様に変形可能である。
図15は、本実施の形態に係る統合メモリ管理装置の一例を示すブロック図である。
複数のプロセッサ351〜354は、システムバス30経由で、メインメモリ26と接続されている。なお、本実施の形態において、プロセッサの数は自由に変更可能である。
複数のプロセッサ351〜354のうちのいくつかでは、論理アドレスを含むプロセスが実行されている。この例では、プロセッサ351,352,354でプロセス271,272,274が実行されている。プロセス271,272,274はオペレーティングシステムであってもよい。
複数のプロセッサ351〜354のそれぞれは、1次キャッシュメモリ361〜364、2次キャッシュメモリ371〜374、統合メモリ管理装置381〜384を具備する。
統合メモリ管理装置381〜384は、ウェアレベリングと、論理アドレスから物理アドレスへの変換を行う。統合メモリ管理装置381〜384は、複数のプロセッサ351〜354側に備えられている。
メインメモリ26は、統合メモリ管理装置381〜384のページサイズと同じメモリページサイズ又は統合メモリ管理装置381〜384のページサイズの整数数となるメモリページサイズを持つ。
1次キャッシュメモリ361〜364及び2次キャッシュメモリ371〜374と、メインメモリ26との間では、一括してページの転送が実行される。この一括の転送は、例えば、メインメモリのブロック(ページの整数倍)単位(例えば、256 kilobyte 〜 512 kilobyte)で行われる。
本実施の形態において、1次キャッシュメモリ361〜364に対するアクセス、及び2次キャッシュメモリ371〜374に対するアクセスでは物理アドレスが用いられる。システムバス30上でも、物理アドレスが用いられる。
複数のプロセッサ351〜354毎に備えられる統合メモリ管理装置381〜384は、プロセスレベルの論理アドレスから物理アドレスへの変換、さらに、メインメモリ26のページ単位、ページサイズの整数倍単位又はブロック単位でのウェアレべリングのための論理ページ又は論理ブロックから物理ページ又は物理ブロックへの変換を行う。
以上説明した本実施の形態においては、統合メモリ管理装置381〜384をプロセッサ351〜354側に設けた場合であっても、上記第5と同様の効果を得ることができる。
(第8の実施の形態)
本実施の形態では、上記第5の実施の形態の詳細について説明する。
図16は、本実施の形態に係る統合メモリ管理装置24の構成の一例を示すブロック図である。
NAND型フラッシュメインメモリ26は、物理アドレスに対応する物理ブロック39、ページテーブル26b、メモリ使用情報40、メモリ固有情報41を備える。
各プロセッサ251〜254の1次キャッシュメモリ281〜284、2次キャッシュメモリ291〜294のキャッシュラインサイズと、NAND型フラッシュメインメモリ26のブロックサイズ又はページサイズの整数倍とは、同じサイズであり、データ転送の効率化が図られている。
NAND型フラッシュメインメモリ26において、各種のデータは、例えばデータD1のように複数の物理ブロック39にまたがって存在するとしてもよい。また、例えば複数のデータD1,D2のように、複数のデータが一つの物理ブロック39に存在するとしてもよい。
そして、各データD1,D2は、固有の読み書き頻度情報E1,E2を持つとしてもよい。例えば、各データD1,D2は、スタティック情報とダイナミック情報とのうちの少なくとも一方を備えている。スタティック情報は、当初から決まっている値である。ダイナミック情報は、実際にそのデータが書き換えられた回数、読み出された回数を含む。
例えば、デジタルカメラの画像データのスタティック情報として、撮影された直後に2時間に1回読み出し及び書き込みが行われる旨の情報、撮影されて3日経過後に2週間に一度読み出しが行われ、書き込みは行われない旨の情報、などが記憶される。また、例えば、ウェブブラウザのキャッシュ情報のスタティック情報として、数分に1回書き込み及び読み出しが行われる旨の情報、ある程度以上アクセスされるサイトの情報が1日に1回書き込まれる旨の情報、周期性のアクセスパターンがある場合にはその情報が書き込まれる旨の情報、所定の時間において書き込みが多い旨の情報、などが記憶される。
スタティック情報は、様々なデータの種類に対して、効果的な値を設定する必要がある。このスタティック情報の設定ファイルは、ネットワーク上で共有されるとしてもよい。
ページテーブル26bは、全システムで一つあればよい。あるいは、ページテーブル26bはなくてもよい。
メモリ使用情報40は、各メモリ領域の読み書き回数と、各データの読み書き回数を含む。より詳細に説明すると、例えば、メモリ使用情報40は、各メモリ領域(ページ又はブロック)について、書き換え回数、読み出し回数、この領域内に存在するデータ情報(個数、種類、各データ固有の読み出し回数、書き換え回数などを含む)を具備する。
メモリ固有情報41は、NAND型フラッシュメインメモリ26のページサイズ、ブロックサイズ、書き換え可能回数、読み出し可能回数などを含む。より詳細に説明すると、例えば、メモリ固有情報41は、NAND型フラッシュメインメモリ26のページサイズ、ブロックサイズ、全記憶容量、SLC(Single Level Cell)領域情報(ブロック位置、サイズ、読み出し可能回数、書き込み可能回数などを含む)、MLC(Multi Level Cell)領域情報(ブロック位置、サイズ、読み出し可能回数、書き込み可能回数などを含む)を具備する。
統合メモリ管理装置24は、各プロセス(OSでもよい)用論理アドレスを物理アドレスに変換し、NAND型フラッシュメインメモリ26用の論理アドレスを物理アドレスに変換する。
また、メモリ管理装置24は、データD1,D2固有の読み書き頻度情報E1,E2、メモリ使用情報40、メモリ固有情報41に基づいて、最適なウェアレべリングを実行する。
メモリ管理装置24は、マイクロプロセッサ42、作業メモリ43、情報レジスタ44、キャッシュメモリ45を具備する。
マイクロプロセッサ42は、情報レジスタ44、作業メモリ43を利用しつつ、メモリ管理を実行する。キャッシュメモリ45は、各プロセッサ271〜274からのデータ及びNAND型フラッシュメインメモリ26からのデータの一時保存などに用いられる。なお、キャッシュメモリ45は、外付けのDRAMでもよい。
図17は、マイクロプロセッサ42の機能の一例を示すブロック図である。
マイクロプロセッサ42は、取得機能42a、アドレス変換機能42b、アクセス機能42c、転送機能42dを備える。
複数のプロセッサ251〜254のいずれかが、NAND型フラッシュメインメモリ26のデータを読み出す場合、取得機能42aは、複数のプロセッサ251〜254のいずれかから、読み出し論理アドレスを取得する。
アドレス変換機能42bは、取得機能42aによって取得された読み出し先論理アドレスを、NAND型フラッシュメインメモリ26の読み出し先物理アドレスに変換する。例えば、NAND型フラッシュメインメモリ26は、複数のグループ属性を持つ領域に分割されており、それぞれのグループ属性がメモリ固有情報41として保有されているとする。この場合、アドレス変換機能42bは、いずれかのプロセッサ上で動作するファイル管理プログラム(プロセス)により定義されたデータD1,D2固有の読み書き頻度情報E1,E2と、メモリ固有情報41とを参照し、データD1,D2固有の読み書き頻度情報E1,E2に対応するグループ属性の領域内に書き込み先物理アドレスを対応させる。
アクセス機能42cは、NAND型フラッシュメインメモリ26から、読み出し先物理アドレスに対応するデータを読み出す。ここで、この読み出されるデータのデータサイズは、NAND型フラッシュメインメモリ26のページサイズの整数倍又はブロックサイズとする。
転送機能42dは、読み出されたデータを、読み出し論理アドレスを発行したプロセッサのキャッシュメモリに転送する。ここで、読み出し論理アドレスを発行したプロセッサのキャッシュメモリのキャッシュサイズは、NAND型フラッシュメインメモリ26のページサイズの整数倍又はブロックサイズに依存している。
複数のプロセッサ251〜254のいずれかが、NAND型フラッシュメインメモリ26へデータを書き込む場合、取得機能42aは、プロセッサから、書き込み先論理アドレスと、書き込みデータとを取得する。ここで、書き込みデータのサイズは、キャッシュサイズとする。
アドレス変換機能42bは、取得機能42aによって取得された書き込み先論理アドレスを、NAND型フラッシュメインメモリ26の書き込み先物理アドレスに変換する。
アクセス機能42cは、NAND型フラッシュメインメモリ26の書き込み先物理アドレスに対応する位置に、書き込みデータを書き込む。
マイクロプロセッサ42のアドレス変換機能42bは、データ固有の読み書き頻度情報、メモリ使用情報40と、メモリ固有情報41とのうちの少なくとも一つに基づいて、ウェアレべリングを行う。
図18は、メモリ管理装置24の転送アルゴリズムの第1の動作の例を示す図である。
メモリ管理装置24のマイクロプロセッサ42は、起動時に、メモリ使用情報40及びメモリ固有情報41を読み込み、情報レジスタ44に格納する。メモリ固有情報41には、NAND型フラッシュメインメモリ26のページサイズ及びブロックサイズが含まれている。各プロセッサ271〜274のキャッシュサイズは、NAND型フラッシュメインメモリ26のブロックサイズ又はページサイズの整数倍である。
従来から使用されているプロセッサにメモリ管理装置24を適用する場合であって、この従来のプロセッサについてキャッシュサイズを変更できない場合には、マイクロプロセッサ42は、キャッシュメモリ45でバッファリングを行い、プロセッサ271〜274のキャッシュサイズとNAND型フラッシュメインメモリ26のブロックサイズ又はページサイズの整数倍との差を調整する。例えば、マイクロプロセッサ42は、ページサイズ256kilobyte分のデータをキャッシュメモリ45に読み込み、プロセッサ271〜274のいずれかに対して、キャッシュライン4kilobyte分のデータを出力する。
図19は、メモリ管理装置24の転送アルゴリズムの第2の動作の例を示す図である。
メモリ管理装置24のマイクロプロセッサ42は、いずれかのプロセッサ252から、1キャッシュライン分のアクセス要求を受信する(Tr19A)。
次に、マイクロプロセッサ42は、アクセス要求に対応するブロック又はページの整数倍のデータを、NAND型フラッシュメインメモリ26から読み出し、キャッシュメモリ45に記憶する(Tr19B)。
次に、マイクロプロセッサ42は、アクセス要求に対応するデータを、キャッシュメモリ45からプロセッサ252に送信する(Tr19C)。
図20は、メモリ管理装置24の転送アルゴリズムの第3の動作の例を示す図である。
いずれかのプロセッサ252は、キャッシュメモリ282又はキャッシュメモリ292のデータを書き換える(Tr20A)。
次に、メモリ管理装置24のマイクロプロセッサ42は、キャッシュメモリ282又はキャッシュメモリ292の書き換えられたデータをキャッシュアウトし、キャッシュメモリ45に転送する(Tr20B)。
すると、マイクロプロセッサ42は、このデータが持つ読み書き頻度情報、情報レジスタ44に記憶されているメモリ使用情報40及びメモリ固有情報41に基づいて、ウェアレべリングを行い、NAND型フラッシュメインメモリ26の複数の物理ブロックの中から書き込みを行ういずれかの物理ブロック39を決定する。
マイクロプロセッサ42は、キャッシュメモリ45に記憶されている書き換えられたデータを、決定された物理ブロック39に記憶する(Tr20C)。
この書き込みにおいては、必要に応じて、メモリブロックの移動、ガーページコレクションが行われる。
図21は、ウェアレべリングの一例を示すブロック図である。
NAND型フラッシュメインメモリ26は、2以上のバンク46a,46bを備える。
マイクロプロセッサ42は、データ(ブロック又はページ)を、順次、一方のバンク46aに追加記憶していく。
データの削除が発生すると、マイクロプロセッサ42は、バンク46a上の削除対象のデータを削除する。しかしながら、このバンク46aにおける最後の領域にデータが記憶されるまで、順次、追加記憶は継続される。書き込み対象となっているバンク46aでは、途中で削除された部分に書き込みは行われない。したがって、書き込み対象となっているバンク46aにおいてデータの削除が発生すると、この削除された領域のデータが欠けた状態となる。
マイクロプロセッサ42は、一方のバンク46aの最後の領域までデータを記憶すると、このバンク46aのうち削除されていない有効なデータを、他方のバンク46bにガーベージコレクションしながらコピーし、この他方のバンク48bにおいて、コピーされたデータの次から新たなデータを追加記憶していく。また、マイクロプロセッサ42は、一方のバンク46aのデータを他方のバンク46bにコピーした後、一方のバンク46aに対してクリアを行う。その後、同様の処理が繰り返される。
ここで、メモリ管理装置24のマイクロプロセッサ42で用いられるウェアレべリング・アルゴリズムの具体的動作例について説明する。
まず、マイクロプロセッサ42は、いずれかのプロセッサ又はOSから、書き込まれるデータを受信する。書き込まれるデータが複数の場合には、書き込み頻度の一番高いデータを基準として用いる。プロセッサ又はOSが従来型の場合、マイクロプロセッサ42は、データの先頭などを調べて、データの種類を判断する。
例えば、マイクロプロセッサ42は、書き込まれるデータの種別が圧縮された画像データの場合、この書き込まれるデータの書き込み頻度は少ないため、MLC領域を書き換え領域に決定する。または、マイクロプロセッサ42は、書き込まれるデータの種別が圧縮された画像データの場合、すでに書き換え回数が多くなっている空領域を書き換え領域に決定する。
例えば、マイクロプロセッサ42は、書き込まれるデータの種別がウェブブラウザのキャッシュデータの場合、書き込み頻度が高いため、SLC領域を書き換え領域に決定する。
例えば、マイクロプロセッサ42は、SLC領域又はMLC領域の中から、書き換え回数の一番少ない空ブロックを、書き込み領域に決定する。
例えば、マイクロプロセッサ42は、NAND型フラッシュメインメモリ26における全ての空き領域(例えば空きブロック)の書き換え回数が、最大書き込み可能回数の所定の割合(例えば80%など)に達している場合に、すでにデータの書き込まれている領域のうち、スタティック情報に基づく書き換え頻度が少なく、さらにダイナミック情報に基づく書き換え回数も少ない領域を選択し、この選択された領域のデータを、空き領域に記憶する。そして、マイクロプロセッサ42は、この選択された領域のデータを削除する。すなわち、空き領域と選択された領域との間でデータの入れ替えを行う。
本実施の形態において、メモリ管理装置24のマイクロプロセッサ42は、複数のNAND型フラッシュメインメモリ26を管理するとしてもよい。
図22は、複数のNAND型フラッシュメインメモリ26を管理する統合メモリ管理装置24の一例を示す斜視図である。
一つの統合メモリ管理装置24と、複数のNAND型フラッシュメインメモリ26とで、一つのメモリユニット47が形成される。図22の例では、3つのメモリユニット47が形成されている。
統合メモリ管理装置24は、同じメモリユニット47に属する複数のNAND型フラッシュメインメモリ26に対するアクセスを管理する。
さらに、複数のメモリユニット47内に備えられている複数の統合メモリ管理装置24は、互いに連携して一つのメモリ管理装置にように動作する。
メモリユニット47の統合メモリ管理装置24は、メモリユニット47内の複数のNAND型フラッシュメインメモリ26に対するECC機能及びRAID機能を備え、ミラーリング及びストライピングを行う。
それぞれのNAND型フラッシュメインメモリ26は、メモリユニット47が通電中(動作中)であっても、ホットスワップ(交換)可能である。複数のNAND型フラッシュメインメモリ26のそれぞれには、ボタン48が備えられている。
ボタン48は、警告出力部(例えばLEDなど)を備える。例えば、警告出力部が第1の色(緑)の場合は、正常状態を表し、第2の色(赤)の場合には交換必要な状態を表す。
ボタン48を押すと、プロセス及びOSに通知が送信され、アクセスなどが発生していない取り外し安全なときに、ボタン48は、第3の色(青)になり、このボタン48に対応するNAND型フラッシュメインメモリ26は、ホットスワップ可能となる。
ホットスワップ実行時には、ホットスワップを要求するボタン48が押された後、ライトバックが完了した時点で、交換可能であることを示すランプが点灯し、NAND型フラッシュメインメモリ26の交換が行われる。
メモリ管理装置26のマイクロプロセッサ42は、情報レジスタ44に記憶されているメモリ使用情報40とメモリ固有情報41とを参照し、各NAND型フラッシュメインメモリ26の書き換え回数又は読み出し回数とが、メモリ固有情報41に記述されている上限に達したか否か判断する。そして、マイクロプロセッサ42は、書き換え回数又は読み出し回数が上限に達している場合、メモリ交換を通知又は警告する。
本実施の形態において、NAND型フラッシュメインメモリ26のページサイズ又はブロックサイズが大きい場合、プリロードが有効である。
プリロードを行う場合、統合メモリ管理装置24のマイクロプロセッサ42は、NAND型フラッシュメインメモリ26におけるデータ固有情報E1,E2を参照し、頻繁にアクセスされる可能性の高いデータを、予めキャッシュメモリ45にプリロードしておく。
あるいは、マイクロプロセッサ42は、周期性のあるデータであって、所定の時間にアクセスされる可能性の高いデータを、その所定時間の前にプリロードしておく。
図23は、MMUを備えている既存のプロセッサに対して、本実施の形態に係る統合メモリ管理装置24を用いたマルチプロセッサシステムの一例を示すブロック図である。
プロセッサ255は、既存のプロセッサであり、MMU495、1次キャッシュメモリ285、2次キャッシュメモリ295を備え、プロセス275を実行する。この図23のシステムでは、通常のMMU495によるアドレス変換と、本実施の形態に係る統合メモリ管理装置24によるアドレス変換とが混在することになる。この場合、プロセッサ255のMMU495は、NAND型フラッシュメインメモリ26へアクセスする場合に、まずNAND型フラッシュメインメモリ26のページテーブル26bをアクセスする。しかしながら、このページテーブル26bは、アドレス変換を行うことなく、変換をスルーする内容とする。例えば、ページテーブル26bでは、変換前のアドレスと変換後のアドレスとが同じに設定されている。これにより、プロセッサ255のMMU495ではアドレス変換が行われず、メモリ管理装置24でアドレス変換を行うことが可能となる。
上記の図16に示す本実施の形態に係るメモリ管理装置24を用いたシステムと、従来のマルチプロセッサシステムとの相違点を、以下で説明する。
図24は、一般的な従来のマルチプロセッサシステムの一例を示すブロック図である。
従来のマルチプロセッサシステムでは、既存のプロセッサ255〜258とメインメモリ50と2次記憶装置51とがシステムバス30で接続されている。
各プロセッサ255〜258は、それぞれ、MMU495〜498、1次キャッシュメモリ285〜288、2次キャッシュメモリ295〜298を具備する。各プロセッサ255〜258は、それぞれプロセス275〜277を実行する。
MMU495〜498は、論理アドレスと物理アドレスとの間の変換を行う。各プロセッサ255〜258から、1次キャッシュメモリ285〜288、2次キャッシュメモリ295〜298、メインメモリ50、2次記憶装置51のいずれかへのアクセスは、物理アドレスに基づいて行われる。
メインメモリ50には、例えばDRAMなどのような揮発性の記憶装置が用いられる。メインメモリ50は、各プロセス275〜277ごとのページテーブル525〜528を備える。
2次記憶装置51には、例えば、ハードディスクドライブ、SSD(Solid State Drive)、NAND型フラッシュメモリなどが用いられる。
従来のマルチプロセッサシステムではメインメモリにDRAMなどが用いられているのに対して、本実施の形態に係るマルチプロセッサシステムでは、NAND型フラッシュメインメモリ26がメインメモリとして用いられている。通常、DRAMのビット単価は、NAND型フラッシュメインメモリ26のビット単価よりも高い。したがって、本実施の形態においては、コストを削減させることができる。
従来のマルチプロセッサシステムではメインメモリが揮発性であるのに対して、本実施の形態に係るマルチプロセッサシステムではメインメモリとして不揮発性のNAND型フラッシュメインメモリ26が用いられる。これにより、本実施の形態においては、インスタントオンが可能となり、メインメモリへプログラム又はデータなどのロード時間などを削除することができ、動作速度を向上させることができる。
従来のマルチプロセッサシステムでは、揮発性のメインメモリ50と不揮発性の2次記憶装置51との双方が搭載される。これに対して、本実施の形態に係るマルチプロセッサシステムでは、NAND型フラッシュメインメモリ26を搭載することで、メインメモリを不揮発性にすることができ、ハードディスクなどのような2次記憶装置を除去することができる。本実施の形態においては、メインメモリとしてDRAMを搭載する必要がない。そして、本実施の形態においては、キャッシュとしてDRAMを搭載する場合に、このキャッシュの記憶容量が少なくてもよい。したがって、本実施の形態においては、システム構成及びメモリ管理を簡略化することができ、コストを削減することができる。
従来のマルチプロセッサシステムでは、ページテーブル525〜528を共有しなければならず、アクセスネックが発生する。これに対して、本実施の形態に係るマルチプロセッサシステムでは、ページテーブルを共有する必要がなく、アクセスネックを解消することができる、
従来のように、2次記憶装置にDRAM又はSSDを用いた場合、ファイル、SATA(Serial ATA)などの概念が用いられる。この場合、必ずオーバーヘッドが存在する。これに対して、本実施の形態では、データはファイルによって抽象化されることはなく、メモリが直接アクセスされる。したがって、本実施の形態では、データに対するアクセスを効率化できる。
従来のように2次記憶装置にDRAM又はSSDを用いた場合と比べて、本実施の形態では、立ち上り時に、ディスクサーチ時間が必要ないため、立ち上り時間を短縮化できる。本実施の形態では、アプリケーションの立ち上りスピードも高速化できる。本実施の形態では、検索速度及びアプリケーションの実行速度を高速化できる。本実施の形態では、複数のプロセッサ毎にアプリケーションを動作させることができる。本実施の形態では、不揮発性のメインメモリが利用されるため、システムのスリープ時に、バッテリの寿命を考慮する必要がない。本実施の形態では、部品数を削減させることができ、コストを抑制できる。本実施の形態は、マルチプロセッサ環境に容易に適応できる。本実施の形態では、インストールが必要なく、プロセスマイグレーションをなくすことができる。
本実施の形態においては、データ固有の読み書き頻度情報E1,E2、メモリ使用情報40、メモリ固有情報41に基づいて、メモリ管理装置24によって最適なウェアレべリングが行われる。本実施の形態においては、データ固有の読み書き頻度情報E1,E2に基づいてウェアレべリングを行うことにより、SSDよりも効率よくウェアレべリングを行うことができる。
一般的に、NAND型フラッシュメモリの世代が異なる場合には、ページサイズ及びブロックサイズも相違している。本実施の形態において、メモリ管理装置24は、NAND型フラッシュメインメモリ26からメモリ固有情報41を読み出し、このメモリ固有情報41で示されるページサイズ又はブロックサイズに応じた処理を行う。これにより、様々な世代のNAND型フラッシュメモリを、NAND型フラッシュメインメモリ26として用いることができる。本実施の形態において、メインメモリ管理装置24は、NAND型フラッシュメインメモリ26からページサイズ又はブロックサイズを含むメモリ固有情報41を読み出し、NAND型フラッシュメインメモリ26のページサイズ又はブロックサイズと、各プロセッサのキャッシュラインサイズとを合わせることができる。
本実施の形態において、メモリ管理装置24は、NAND型フラッシュメインメモリ26の寿命管理を行い、警告を行う。これにより、不具合の発生を防止することができる。
本実施の形態において、メモリ管理装置24は、複数のNAND型フラッシュメインメモリ26に対するRAID機能を持ち、取り替え換え対象のNAND型フラッシュメインメモリ26のホットスワップを実現することができる。これにより、寿命のつきたNAND型フラッシュメインメモリ26を容易に取り替えることができる。
ここで、複数のプロセッサに対して、複数のNAND型フラッシュメインメモリを備えた場合の仮想記憶アクセスの一例について説明する。
図25は、広いアドレス空間用のポインタを求める処理の一例を示すブロック図である。
ポインタ53は、狭いアドレス空間用のポインタ53aと、狭いアドレス空間用のポインタ53bとを含む。
セグメントテーブル54は、プロセスID55ごとに設けられており、広いアドレス空間用のポインタ56を備える。
例えば、広いアドレス空間用のポインタ57は、狭いアドレス空間用のポインタ53bと、狭いアドレス空間用のポインタ53aによって特定されるセグメントテーブル54上の広いアドレス空間用のポインタ56とを組み合わせることで得られる。なお、広いアドレス空間用のポインタ57は、狭いアドレス空間用のポインタ53bと、狭いアドレス空間用のポインタ53aと、セグメントテーブル54上の広いアドレス空間用のポインタ56とを組み合わせて生成されるとしてもよい。
図26は、複数のキャッシュメモリと複数のNAND型フラッシュメインメモリとで形成される仮想記憶空間の一例を示すブロック図である。
広いアドレス空間用のポインタ57は、プロセッサのキャッシュメモリ581〜58nと、複数のNAND型フラッシュメインメモリ591〜59mとによって構成される仮想記憶空間60のいずれかを指す。
これにより、プロセッサのキャッシュメモリ581〜58nと、複数のNAND型フラッシュメインメモリ591〜59mとを統合的に扱うことが可能である。
上記各実施の形態において、メインメモリには、NAND型フラッシュメモリに代えて、他の不揮発性メモリを用いるとしてもよい。
上記各実施の形態に係る統合メモリ管理装置は、キャッシュがライトバック型の場合及びライトスルー型の場合のいずれにおいても適用可能である。
1,11…MPU、2,12,24,381〜384…統合メモリ管理装置、3,281〜284…1次キャッシュメモリ、3a,22a…タグ格納領域、3b,22b…ライン格納領域、4,26,261,262…NAND型フラッシュメインメモリ、5…アドレス変換テーブル、6…書き換え回数データ、7…MMU、8…キャッシュコントローラ、8a…第1のキャッシュコントローラ、8b…第2のキャッシュコントローラ、9…メインメモリ用MMU、10…アクセス履歴格納部、13…統合MMU、16,251〜254…プロセッサ、17,22,291〜294…2次キャッシュメモリ、23…アドレス関係格納部、271〜274…プロセス、30…システムバス、33…ネットワーク、40…メモリ使用情報、41…メモリ固有情報、42…マイクロプロセッサ、42a…取得機能、42b…アドレス変換機能、42c…アクセス機能、42d…転送機能、43…作業メモリ、44…情報レジスタ、45…キャッシュメモリ、E1,E2…読み書き頻度情報、39…物理ブロック