以下の各図において、同一の構成要素については同一の符号を付して説明を省略する。
(第1の実施の形態)
本実施の形態においては、メインメモリとして複数の種類のメモリを含む混成メインメモリが用いられている場合に、この混成メインメモリに対するアクセスを管理する装置について説明する。本実施の形態において、混成メインメモリは、不揮発性の半導体メモリを含む。
図1は、本実施の形態に係るメモリ管理装置の構成の一例を示すブロック図である。
また、図2は、本実施の形態に係るメモリ管理装置の処理部の構成の一例を示すブロック図である。
メモリ管理装置1は、機種の異なる複数のメモリを組み合わせて形成された混成メインメモリ2に対するアクセスを管理する。ここで、アクセスとは、記憶装置に対する書き込みと読み出しとのうちの少なくとも一方を意味するとする。
メモリ管理装置1は、例えばMPUなどのようなプロセッサを含む情報処理装置、又はプロセッサ及びメモリを含む情報処理装置に具備される。
本実施の形態においては、プロセッサ3a〜3cとメモリ管理装置1とが分離した構成の場合を例として説明するが、メモリ管理装置1はプロセッサ3a〜3cのうちの少なくとも一つに内蔵されるとしてもよい。
プロセッサ3a〜3cは、それぞれ1次キャッシュメモリ4a〜4c、2次キャッシュメモリ5a〜5cを備えている。プロセッサ3a〜3cは、それぞれ仮想論理アドレスを含むプロセス6a〜6cを実行する。上記の図1では、3つのプロセッサ3a〜3cが図示されているが、プロセッサの数は1以上であればよい。
複数のプロセッサ3a〜3cは、バス7、メモリ管理装置1を経由して、混成メインメモリ2と接続されている。
以下においては、プロセッサ3bを用いて本実施の形態の説明を行うがプロセッサ3a,3cについても同様である。
本実施の形態において、プロセッサ3bは、論理アドレスを用いて、1次キャッシュメモリ4b、2次キャッシュメモリ5bをアクセス可能である。
混成メインメモリは、第1のメモリ、第2のメモリ、第3のメモリを備えている。第1のメモリは、第2のメモリよりもアクセス可能回数が多い。第2のメモリは、第3のメモリよりもアクセス可能回数が多い。
本実施の形態では、第1のメモリは揮発性半導体メモリ8であるとする。揮発性半導体メモリ8としては、例えば、DRAM(Dynamic Random Access Memory)、FPM−DRAM、EDO−DRAM、SDRAMなどのような一般的なコンピュータにおいてメインメモリとして利用されるメモリが用いられる。
第2のメモリは不揮発性半導体メモリ9であるとする。不揮発性半導体メモリ9としては、例えば、SLC(Single Level Cell)タイプのNAND型フラッシュメモリが用いられる。SLCは、MLCと比較して、読み出し及び書き込みが高速であり、信頼性が高い。しかしながら、SLCは、MLCと比較して、素子の集積度が低く、大容量化には向いていない。
第3のメモリは不揮発性半導体メモリ10であるとする。不揮発性半導体メモリ10としては、例えば、MLC(Multi Level Cell)タイプのNAND型フラッシュメモリが用いられる。MLCは、SLCと比較して、読み出し及び書き込みが低速であり、信頼性が低い。しかしながら、MLCは、SLCと比較して、素子の集積度が高く、大容量化に向いている。
なお、信頼性とは、記憶装置からデータを読み出す場合におけるデータの欠損の起こりにくさの程度を意味する。
SLCの耐久性は、MLCの耐久性よりも高い。ここで、耐久性が高いとは、アクセス可能回数が多く、耐久性が低いとは、アクセス可能回数が少ないことを意味する。
SLCは1つのメモリセルにM(1以上の整数)のビットの情報を記憶可能である。MLCは1つのメモリセルにM+1ビット以上の情報を記憶可能である。
すなわち、本実施の形態に係る混成メインメモリ2は、第1に、揮発性メモリ8、第2に、不揮発性メモリ9、第3に不揮発性メモリ10、の順で耐久性が高い。
NAND型フラッシュメモリなどの不揮発性半導体メモリ9,10は、揮発性半導体メモリ8と比較して、安価で大容量化が可能である。
なお、NAND型フラッシュメモリに代えて、例えばNOR型フラッシュメモリなどのような他の種類のフラッシュメモリ、PRAM(Phase change memory)、ReRAM(Resistive Random access memory)を用いることもできる。
メインメモリとして不揮発性半導体メモリ9,10を利用する場合と、2次記憶装置として不揮発性半導体メモリ9,10を利用する場合とを比較すると、メインメモリとして不揮発性半導体メモリ9,10を使用した場合にはこの不揮発性半導体メモリ9,10へのアクセス頻度が高くなる。本実施の形態においては、揮発性半導体メモリ8とSLCの不揮発性半導体メモリ9とMLCの不揮発性半導体メモリ10とを混成してメインメモリとする混成メインメモリ2を備えた情報処理装置を実現している。混成メインメモリ2は、異機種混在型の主記憶装置であり、メモリ管理装置1によってデータの格納位置が管理される。
メモリ使用情報11、メモリ固有情報12、アドレス変換情報13、カラーリングテーブル14は、不揮発性半導体メモリ9と不揮発性半導体メモリ10のうちのいずれかに記憶される。ここで、カラーリングテーブル14は、各データに対するデータ固有情報を、エントリとして持つテーブルである。
なお、混成メインメモリ2は、異なる複数の種別のメモリを含み、複数のメモリのうちの少なくとも一つが不揮発性メモリであり、複数のメモリのうちの第1のメモリは、この複数のメモリのうちの第2のメモリよりも、耐久性が低ければよい。
メモリ管理装置1は、処理部15、作業メモリ16、情報記憶部17を具備する。
処理部15は、情報記憶部17に記憶されている情報に基づいて、作業メモリ16を使用しつつ各種処理を実行する。
作業メモリ16は、例えばバッファとして利用され、各種のデータ変換などの作業領域として使用される。
処理部15は、受付部18、アドレス決定部19、アドレス管理部20、書き込み部21、再配置部22、アドレス変換部23、読み出し部24、転送部25を具備する。処理部15の機能は、例えばオペレーティングシステム27などのようなプログラムを処理部15が実行することで実現されるとしてもよい。
本実施の形態において、オペレーティングシステム27は、混成メインメモリ2に対する書き込み及び読み出しを管理するメモリ管理装置1を制御する。
メモリ管理装置1は、メモリ管理装置1の動作開始時に、不揮発性メモリ9又は不揮発性メモリ10に記憶されているメモリ使用情報11、メモリ固有情報12、アドレス変換情報13、カラーリングテーブル14を読み出し、メモリ使用情報11、メモリ固有情報12、アドレス変換情報13、カラーリングテーブル14を情報記憶部17に記憶する。不揮発性メモリ9,10に記憶されているメモリ使用情報11、メモリ固有情報12、アドレス変換情報13、カラーリングテーブル14を起動時に情報記憶部17に記憶する処理は、例えば、メモリ管理装置1の処理部15、受付部18によって実行される。
メモリ使用情報11は、混成メインメモリ2の各領域についてのアクセス発生回数(読み出し回数及び書き込み回数)、混成メインメモリ2に含まれる各種メモリの使用率情報(空きスペースの割合)など、混成メインメモリ2の各領域の使用状態を表す。
メモリ固有情報12は、混成メインメモリ2のページサイズ及びブロックサイズ、混成メインメモリ2における領域ごとのアクセス可能回数(書き込み可能回数及び読み出し可能回数)など、混成メインメモリ2の各領域の特徴を表す。
アドレス変換情報13は、例えばテーブル形式で、論理アドレスと、この論理アドレスに対応する物理アドレスとを関係付けた情報である。
カラーリングテーブル14は、上述したように、各データのデータ固有情報をエントリとして持つテーブルである。
データ固有情報は、対応付けられているデータについてのアクセス回数(書き込み回数及び読み出し回数)などのデータ固有の情報を含む。
情報記憶部17は、上記のメモリ使用情報11、メモリ固有情報12、アドレス変換情報14、カラーリングテーブル14を記憶する装置である。情報記憶部17としては、例えばレジスタが用いられる。なお、情報記憶部17は、複数のレジスタに分割されてもよい。
以下に、処理部15による書き込み動作について説明する。
受付部18は、プロセッサ3bからの書き込み対象データを混成メインメモリ2に書き込む場合に、プロセッサ3bから書き込み先論理アドレスと書き込み対象データとを受け付ける。
そして、受付部18は、書き込み先論理アドレスと書き込み対象データを作業メモリ16に記憶する。
アドレス決定部19は、書き込み対象データの重要度とアクセス頻度とのうちの少なくとも一つに基づいて、揮発性半導体メモリ8へのアクセス回数が不揮発性半導体メモリ9へのアクセス回数よりも多くなり、かつ、不揮発性半導体メモリ9へのアクセス回数が不揮発性半導体メモリ10へのアクセス回数よりも多くなるように、前記書き込み先論理アドレスに対応する書き込み先物理アドレスを決定する。
ここで、アドレス決定部19は、各メモリ8,9,10内では、アクセス頻度が均等化されるように、作業メモリ16に記憶された書き込み先論理アドレスに対応する書き込み先物理アドレスを決定する。
そして、アドレス決定部19は、書き込み先物理アドレスを作業メモリ16に記憶する。
より具体的に説明すると、アドレス決定部19は、メモリ使用情報11、メモリ固有情報12、データ固有情報に基づいて、書き込み対象データがアクセス頻度の高グループ、中グループ、低グループのいずれに属するか判断する。
アドレス決定部19は、書き込み対象データが高グループに属すると判断された場合に、揮発性半導体メモリ8における未使用の物理アドレスを書き込み先物理アドレスとして決定する。
アドレス決定部19は、書き込み対象データが中グループに属する場合に、不揮発性半導体メモリ9における未使用の物理アドレスを書き込み先物理アドレスとして決定する。
アドレス決定部19は、書き込み対象データが低グループに属する場合に、不揮発性半導体メモリ10における未使用の物理アドレスを書き込み先物理アドレスとして決定する。
書き込み対象データの重要度とアクセス頻度とのうちの少なくとも一つは、書き込み対象データの種類、ユーザによって設定されたデータ、書き込み対象データの最後のアクセスから現在までの未使用時間、書き込み対象データのデータ種別によって決定されるアクセス頻度の推測値と書き込み対象データのアクセス頻度の観測値とのうちの少なくとも一つを含むアクセス頻度情報(読み書き頻度情報)に基づいて求められる。
さらに、本実施の形態において、アドレス決定部19は、揮発性メモリ8の記憶装置使用率、不揮発性メモリ9の記憶装置使用率、不揮発性メモリ10の記憶装置使用率に応じて、書き込み対象データを揮発性メモリ8と不揮発性メモリ9と不揮発性メモリ10のうちのどの装置に記憶するか判断する際に用いるしきい値を変更する。
アドレス決定部19は、メモリ使用情報11に含まれている揮発性半導体メモリ8の使用率情報、不揮発性半導体メモリ9の使用率情報、不揮発性半導体メモリ10の使用率情報に基づいて、書き込み対象データを揮発性半導体メモリ8、不揮発性半導体メモリ9、不揮発性半導体メモリ10のいずれに記憶するかを判断するために用いられるしきい値を変更する。
例えば、不揮発性半導体メモリ9,10の空き領域に比べて揮発性メモリ8の空き領域が多い場合には、たとえ中グループ、低グループに属する書き込み対象データであっても、揮発性メモリ8に記憶するようにアドレスを決定する。
アドレス管理部20は、受付部18によって取得され作業メモリ16に記憶された書き込み先論理アドレスと、アドレス決定部19によって決定され作業メモリ16に記憶された書き込み先物理アドレスとを対応付けて情報記憶部17に記憶されているアドレス変換情報13に記憶する。アドレス変換情報13は、例えばテーブル形式により、論理アドレスと物理アドレスとの関係を管理する。
書き込み部21は、混成メインメモリ2に対して、作業メモリ16に記憶されている書き込み対象データを、アドレス決定部19によって決定され作業メモリ16に記憶されている書き込み先物理アドレスの示す位置に書き込む。
例えば、書き込み部21は、書き込み対象データを、書き込み単位(例えばページ単位)のデータに変換して作業メモリ16に記憶し、この作業メモリ16に記憶されている書き込み単位のデータを、混成メインメモリ2に記憶する。
再配置部22は、書き込み対象データの重要度とアクセス頻度とのうちの少なくとも一方に基づいて、混成メインメモリ2におけるあるメモリに記憶された書き込み対象データを、混成メインメモリ2における他のメモリに再配置するための再配置後の書き込み先物理アドレスを決定し、書き込み対象データの再配置を行う。
なお、再配置部22は、アドレス決定部19の一機能であってもよい。再配置のための書き込みは、書き込み部21によって行われるとしてもよい。
再配置部22によって再配置が実行されると、アドレス管理部20は、情報記憶部17に記憶されているメモリ使用情報11、アドレス変換情報13、データ固有情報などを、再配置後の書き込み先物理アドレスによって更新する。すなわち、アドレス管理部20は、書き込み対象データの書き込み先論理アドレスと再配置後の書き込み先物理アドレスを関係付けてアドレス変換情報に登録する。さらに、アドレス管理部20は、メモリ使用情報11、データ固有情報が再配置後の状態を表すように、書き込み回数、書き込み頻度などを更新する。
この再配置は、書き込み対象データの重要度又はアクセス頻度が時間の経過に応じて変化する場合(動的である場合)に有効である。
例えば、書き込み対象データのデータ種別、アクセス頻度の推測値などのような、データ書き込み前に得ることが可能な静的情報に基づいて、書き込み対象データは、アドレス決定部19及び書き込み部21によってSLCの不揮発性半導体メモリ9に書き込まれたとする。その後、再配置部22は、書き込み対象データのアクセス頻度の観測値などのような、書き込み後に時間経過にそって変化する動的情報に基づいて、前回の書き込み時よりも書き込み対象データの重要度とアクセス頻度のうちの少なくとも一方がある程度を超えて高くなっている場合に、書き込み対象データの記憶先をSLCの不揮発性半導体メモリ9から揮発性半導体メモリ8に変える。再配置部22は、動的情報に基づいて、前回の書き込み時よりも書き込み対象データの重要度とアクセス頻度のうちの少なくとも一方がある程度を超えて低くなっている場合に、書き込み対象データの記憶先をSLCの不揮発性半導体メモリ9からMLCの不揮発性半導体メモリ10に変える。
同様に、再配置部22は、静的情報に基づいて揮発性半導体メモリ8に記憶された書き込み対象データを、動的情報に基づいて、不揮発性半導体メモリ9又は不揮発性半導体メモリ10に再配置してもよい。
再配置部22は、静的情報に基づいて不揮発性半導体メモリ10に記憶された書き込み対象データを、動的情報に基づいて、揮発性半導体メモリ8又は不揮発性半導体メモリ9に再配置してもよい。
再配置部22は、揮発性半導体メモリ8、不揮発性半導体メモリ9,10の領域内で、書き込み対象データの記憶位置を移動させるとしてもよい。
再配置部22は、上記の再配置処理を、例えば、所定の時間経過するたびに実行するとしてもよく、例えば、揮発性半導体メモリ8及び不揮発性半導体メモリ9,10のいずれかの領域において記憶容量がしきい値を超えた場合に実行するとしてもよい。
以下に、処理部15による読み出し動作について説明する。
受付部18は、プロセッサ3bが混成メインメモリ2からデータを読み出す場合に、プロセッサ3bから読み出し先論理アドレスを受け付け、この読み出し先論理アドレスを作業メモリ16に記憶する。
アドレス変換部23は、情報記憶部17に記憶されているアドレス変換情報13に基づいて、作業メモリ16に記憶された読み出し先論理アドレスを読み出し先物理アドレスに変換し、この読み出し先物理アドレスを作業メモリ16に記憶する。
読み出し部24は、混成メインメモリ2から、作業メモリ16に記憶されている読み出し先物理アドレスに対応する読み出し単位(例えばページ単位)のデータを読み出し、作業メモリ16に記憶する。
転送部25は、混成メインメモリ2から読み出され作業メモリ16に記憶された読み出し単位のデータから、読み出し先物理アドレスに対応する部分の読み出し対象データ(例えばバイト単位のデータ)を抽出し、この抽出された読み出し対象データをプロセッサ1bに送る。
本実施の形態において、混成メインメモリ2に対する書き込み単位及び読み出しのデータ単位は、ページサイズ、ページサイズの整数倍(2倍以上)、ブロックサイズ、ブロックサイズの整数倍(2倍以上)としてもよい。
なお、転送部25は、読み出し単位のデータをプロセッサ3bに送信し、プロセッサ3bでは、読み出し単位のデータを1次キャッシュメモリ4b又は2次キャッシュメモリ5bに記憶するとしてもよい。
すなわち、本実施の形態においては、1次キャッシュメモリ4b又は2次キャッシュメモリ5bの書き込み単位及び読み出し単位についても、ページサイズ、ページサイズの整数倍(2倍以上)、ブロックサイズ、ブロックサイズの整数倍(2倍以上)としてもよい。
図3は、本実施の形態に係るメモリ管理装置1によって実現される物理アドレス空間の一例を示すブロック図である。
本実施の形態に係るメモリ管理装置1は、例えば、各種のキャッシュメモリ4a〜4c,5a〜5c、揮発性半導体メモリ8、不揮発性半導体メモリ9,10を含む物理アドレス空間26を形成する。メモリ管理装置1は、この物理アドレス空間26上でアドレス決定などのアドレス管理を行う。これにより、キャッシュメモリ4a〜4c,5a〜5c、揮発性半導体メモリ8、不揮発性半導体メモリ9,10をフラットなメモリ階層で扱うことができる。
図4は、本実施の形態に係るオペレーティングシステム27の動作の一例を示すブロック図である。
本実施の形態においては、オペレーティングシステム27において混成メインメモリ2のどのメモリにデータを記憶するかの選択が行われる。
オペレーティングシステム27は、プロセスにおいて、プロセス生成時要求領域へのデータ書き込み、ファイルマップ用領域へのデータ書き込み、プロセスが動的に要求する領域へのデータ書き込みが発生した場合、または、カーネル内で使用するパラメータ用領域へのデータ書き込みが発生した場合、これらのデータ書き込みについて定められている重要度、アクセス頻度、記憶装置毎の使用可能領域の残量に基づいて、記憶装置選択用のしきい値を求める。そして、オペレーティングシステム27は、データの重要度とアクセス頻度とのうちの少なくとも一方に基づいて求められるデータ書き込みの評価値(カラーリングレベル)と、決定された記憶装置選択用のしきい値とを比較することによって、揮発性半導体メモリ、不揮発性半導体メモリ(SLC)、不揮発性半導体メモリ(MLC)を含む混在メインメモリのうち、どのメモリにデータを配置するか決定する。
例えば、データの重要度は、静的情報によって決定され、データのアクセス頻度は、静的情報と動的情報とによって決定される。カラーリングレベルは、静的情報と動的情報とのうちの少なくとも一方に基づいて求められる。
本実施の形態においては、耐久性の観点から、異機種のメモリを含む混成メインメモリ2を効果的に使用する。すなわち、本実施の形態においては、混成メインメモリ2の寿命を可能な限り延ばすために、各メモリの耐久性に基づいてデータ配置が決定される。
さらに、本実施の形態においては、信頼性の観点から、異機種のメモリを含む混成メインメモリ2を効果的に使用する。本実施の形態においては、混成メインメモリ2における致命的なデータ欠損を避けるために、各メモリの信頼性に基づいてデータ配置が決定される。
上記のように、オペレーティングシステム27は、例えば、書き込み対象データのアクセス頻度、データの重要度などの情報に基づいてカラーリングレベル(評価値)を算出し、このカラーリングレベルを求める。
そして、オペレーティングシステム27は、例えば、各メモリの使用可能領域の残量、カラーリングレベルなどの情報に基づいて、揮発性半導体メモリ8、不揮発性半導体メモリ9,10のどの位置に書き込み対象データを格納するか決定する。
このように、本実施の形態においては、オペレーティングシステム27によって重要度、アクセス頻度が生成及び解釈され、この解釈の結果得られるカラーリングレベルは保存される。カラーリングレベルの演算において、例えば、ユーザによる設定データ、オペレーティングシステム27による解釈結果などの情報のうち、どの情報を用いるかは情報処理装置の実装に依存する。
オペレーティングシステム27は、MMU置き換えアルゴリズムの最適化を行う。また、オペレーティングシステム27は、すべてのデータに対して、そのデータのアクセス頻度を含むデータ固有情報を付加する処理を行う。
データの重要度の評価指標としては、例えば、実行可能ファイルか否かの区別、メディアファイルか否かの区別、ファイルの位置情報などが用いられる。
実行可能ファイルか否かの区別は、ファイルの実行可能パーミッションにより判別可能である。例えば、実行可能ファイルの重要度は、高く設定される。
メディアファイルか否かの区別は、ファイルの拡張子によって判別可能である。例えば、メディアファイルの重要度は低く設定される。
ファイルの位置情報としては、例えば、ファイルの位置が、情報処理装置におけるメールボックスか、ゴミ箱かなどの判別に用いられる。例えば、メールボックスにあるファイル、ゴミ箱にあるファイルの重要度は低く設定される。
また、データの重要度の評価指標としては、例えば、ユーザによって指定された情報が用いられる。例えば、データの重要度の評価指標を含むファイルとして、ファイルの拡張子を変えたシャドウファイルが使用される、ユーザによって指定された重要度の設定は、このシャドウファイルに記入される。シャドウファイルには、例えば、データ識別情報と重要度との関係、フォルダ位置と重要度との関係、データの種別と重要度との関係などのような、データの特徴と重要度との関係が記述されている。オペレーティングシステム27は、このシャドウファイルの情報、書き込み対象データの識別情報、書き込み対象データのフォルダ位置、書き込み対象データの種別に基づいて、書き込み対象データの重要度を決定する。
また、データの重要度の評価指標として、例えば、データの最終アクセス時刻から現在の時刻までの間隔(データの未使用時間)を用いるとしてもよい。例えば、重要度は、データの未使用時間の長さに比例して小さくなるとする。
データのアクセス頻度の評価指標としては、例えば、ファイルの形式、アクセスパターン、ELFフォーマットのセグメント、ユーザによって設定されたデータ、アクセス頻度の実測値が用いられる。
例えば、ファイルの形式がメディアファイルの場合、このデータに対する書き込み頻度は低いと推測される。
例えば、アクセス頻度は、アクセスパターンについて、システムコールによって指定されたパーミッションと、ファイルのパーミッションとのうちのいずれであるかに応じて変更される。
例えば、ELFフォーマットのセグメントについて、リード・オンリーセクションにおけるセグメントは、書き込み頻度が低いと推測される。また、textセクション、リード及びライトが可能なセクションにおけるセグメントは、書き込み頻度が高いと推測される。
例えば、アクセス頻度を表す複数の評価指標が異なる値を表す場合に、アクセス頻度が高いことを示す評価指標が優先して用いられるとしてもよい。
本実施の形態においては、カラーリングレベルCLを下記の(1)及び(2)式のように定義する。なお、このカラーリングレベルCLの算出は一例であり、自由に変更可能である。
CL=min(9,(重要度×W+アクセス頻度×(1−W))) …(1)
0≦W≦1:重要度、アクセス頻度の重み付けを行う補正値 …(2)
この場合、CLは、0≦CL≦9の範囲となる。
カーネル内で使用されるパラメータ用領域について、重要度は、9(固定値)とする。
プロセス生成時に要求される領域について、重要度は、9(固定値)とする。
プロセスが動的に要求する領域について、重要度は、5(固定値)とする。
プロセスがファイルを混成メインメモリ2にマップするための領域について、重要度は、(3)(4)式に基づいて求められる。
重要度=min(9,max(静的重要度,ユーザ指定重要度)) …(3)
0≦静的重要度≦9 …(4)
アクセス頻度は、(5)〜(8)式に基づいて求められる。
アクセス頻度=静的アクセス頻度×T …(5)
静的アクセス頻度=max(ユーザ指定アクセス頻度,OS指定アクセス頻度) …(6)
T=max(0,−(アクセス時間間隔/最大アクセス時間間隔)+1) …(7)
0≦T≦1 …(8)
ここで、静的重要度は、データの形式に基づいて経験的に判断される値である。時間補正値Tは、データの未使用時間に応じて経験的に設定される。例えば、時間補正値Tは、データの未使用時間が長くなるほど小さくなる値となるとする。
最大アクセス時間間隔は、経験的に定義される値である。アクセス時間間隔は実測値である。
上記の(3)式によって得られる重要度は、0≦重要度≦9となる。
図5は、プロセスがファイルを混成メインメモリ2にマップするための領域についての動的重要度の算出例を示す図である。
アクセス時間間隔(月単位の未使用時間)がそれぞれ0,1,…,10の場合、時間補正値Tは、それぞれ1,0.9,…,0と設定されている。
この図5において、データ形式が実行可能ファイル、メディアファイル、ゴミ箱ファイルの場合、静的重要度はそれぞれ9,4,2とする。
例えば、データ形式が実行可能ファイルであり、アクセス時間間隔が0(1ヶ月未満)の場合、動的重要度は(少数点以下切捨て)9となる。他の場合も図5の関係に基づいて動的重要度が決定される。
カーネル内で使用するパラメータ用領域について、アクセス頻度は、9(固定値)とする。
プロセスが使用する領域について、アクセス頻度は、アクセスパターンに基づいて決定される。例えば、データに対するアクセスパターンが読み出しのみの場合、アクセス頻度は3とする。例えば、データに対して書き込みの可能性がある場合、アクセス頻度は5とする。
以下に、メモリの選択の具体例について説明する。
混成メインメモリ2に含まれる揮発性半導体メモリ8、不揮発性半導体メモリ(SLC)9、不揮発性半導体メモリ(MLC)10のうちのいずれのメモリにデータを記憶するかを選択するために用いられるしきい値は、各メモリの使用可能領域の残量(使用率)に基づいて決定される。カラーリングレベルと決定されたしきい値との大小関係に基づいて、書き込み先のメモリが選択される。
図6は、本実施の形態に係るメモリの使用率としきい値との関係の一例を示す図である。
しきい値ONRAMは、データを揮発性半導体メモリ8に配置するか否かを判断するためのしきい値である。本実施の形態において、カラーリングレベルがしきい値ONRAM以上のデータは、揮発性半導体メモリ8に記憶される。
しきい値ONRAMは、以下の(9)式で算出され、少数点以下の値は切り捨てられる。
ONRAM=min(9,(9×(記憶装置使用率(%)/100)+6))…(9)
上記の図6において、しきい値ONRAMの範囲は、6≦ONRAM≦9である。揮発性半導体メモリ8の使用率が高いほど、しきい値ONRAMは大きくなり、書き込み先として揮発性半導体メモリ8が選択されにくくなる。
しきい値ONSLCは、データを不揮発性半導体メモリ(SLC)9に配置するか否かを判断するためのしきい値である。本実施の形態においては、しきい値ONSLC以上であり、上記のしきい値ONRAM未満のカラーリングレベルを持つデータは、不揮発性半導体メモリ9に配置される。
しきい値ONSLCは、以下の(10)式で算出され、少数点以下は切り捨てて扱う。
ONSLC=min(5,(9×(記憶装置使用率(%)/100)+3))…(10)
上記の図6において、しきい値ONSLCの範囲は、3≦ONSLC≦5である。不揮発性半導体メモリ9の使用率が高いほど、しきい値ONSLCは大きくなり、書き込み先として不揮発性半導体メモリ9が選択されにくくなる。
そして、しきい値ONSLC未満であり、揮発性半導体メモリ8と不揮発性半導体メモリ9とのどちらにも配置されないデータは、不揮発性半導体メモリ(MLC)10に配置される。
上記図6において、揮発性半導体メモリ8の使用率が20%、不揮発性半導体メモリ9の使用率が20%の場合、しきい値ONRAMは7、しきい値ONSLCは4となる。この場合、カラーリングレベルが7≦CL≦10のデータは、揮発性半導体メモリ8に記憶される。カラーリングレベルが4≦CL<7のデータは、不揮発性半導体メモリ9に記憶される.カラーリングレベルが0≦CL<4のデータは、不揮発性半導体メモリ10に記憶される。他の場合についても同様である。
図7は、本実施の形態に係るメモリ管理装置1による混成メインメモリ2へのデータ書き込み動作の一例を示すフローチャートである。
ステップS1において、メモリ管理装置1は、データと論理アドレスを受け付ける。
ステップS2において、メモリ管理装置1は、メモリ使用情報11、メモリ固有情報12、カラーリングテーブル14内のデータ固有情報を参照し、混成メインメモリ2における書き込み先となるメモリを選択する。
ステップS3において、メモリ管理装置1は、選択されたメモリ内の空き領域を選択する。
ステップS4において、メモリ管理装置1は、選択された空き領域に、データを書き込む。
ステップS5において、メモリ管理装置1は、書き込みが正常に終了したか判断する。
書き込みが正常に終了していない場合、ステップS6において、メモリ管理装置1は、エラー処理を実行し、書き込み処理を終了する。
書き込みが正常に終了した場合、ステップS7において、メモリ管理装置1は、受け付けた論理アドレスと、選択された空き領域に対応する物理アドレスとに基づいて、アドレス変換情報13を更新する。
ステップS8において、メモリ管理装置1は、メモリ使用情報11におけるメモリの書き込み回数、カラーリングテーブル14に記憶されているデータ固有情報の書き込み回数、書き込み対象データに付されているデータ固有情報の書き込み回数を更新する。
図8は、本実施の形態に係る書き込み対象データ及び読み出し対象データのデータ構造の一例を示す図である。
データ28は、データ本体29と、このデータの書き込み頻度、読み出し頻度などを含むデータ固有情報30とを組み合わせたデータ構造を持つ。
カラーリングテーブル14は、各データに付されているデータ固有情報30に基づいて生成される。
図9は、カラーリングテーブル14の一例を示す図である。
カラーリングテーブル14の各エントリは、データの最小IO単位に割り当てられる。
エントリにおける書き込み頻度、読み出し頻度、重要度は、オペレーティングシステム27又はユーザによって推測(予測)された値である。
書き込み頻度、読み出し頻度、重要度がオペレーティングシステム27によって推測される場合、オペレーティングシステム27は、データに関する拡張子又はパーミッションを参照し、書き込み頻度、読み出し頻度、重要度を決定する。
書き込み頻度、読み出し頻度、重要度がユーザによって設定される場合、設定のための専用のGUI(Graphical User Interface)又はコンフィグレーションが用意される。
この書き込み頻度は、下記の第2の実施の形態に係るSW_Colorに対応する。
本実施の形態における重要度及び読み出し頻度は、下記の第2の実施の形態に係るSR_Colorに対応する。
書き込み頻度、読み出し頻度、重要度は、データ生成時に、オペレーティングシステム27によって書き込まれる。
エントリにおける最終アクセス時刻は、対応するデータが最後にアクセスされた時間情報である。最終アクセス時刻と現在時刻との差は、上記(7)のアクセス時間間隔となる。
エントリにおけるカラーリングレベルは、例えば上記の(1)式で算出される。
カラーリングテーブル14におけるカラーリングレベルと最終アクセス時刻とは、上記図7のステップS8において、メモリ管理装置1によって更新される。
図10は、本実施の形態に係る混成メインメモリ2のアドレスマップの一例を示す図である。
混成メインメモリ2は、揮発性半導体メモリ8の記憶領域31A、不揮発性半導体メモリ9の記憶領域31B、不揮発性半導体メモリ9用の冗長ブロック領域31C、不揮発性半導体メモリ10の記憶領域31D、不揮発性半導体メモリ10用の冗長ブロック領域31Eを具備する。
データの書き込みの際に、記憶領域31A、記憶領域31B、記憶領域31Dのうちのいずれの領域を選択するかは、上記のようにカラーリングレベルとしきい値とに基づいて決定される。
記憶領域31B、記憶領域31D内においてどの位置にデータを記憶するかは、例えば、追記式の書き込みが採用される。
追記式の書き込みでは、それぞれの記憶領域31B,31D内では、シーケンシャルに記憶位置を変えてデータが書き込まれる。このような追記式の書き込みにより、記憶領域31B,31D内におけるアクセス頻度を均等化することができる。
本実施の形態では、アドレス決定部19は、記憶領域31B,31Dがデータの書き込み先として選択されると、記憶領域31B,31D内における書き込み先物理アドレスをシーケンシャルに発生させる。書き込み部21は、シーケンシャルに発生された物理アドレスに基づいてデータの書き込みを行う。
記憶領域31B,31Dに対して、追記式の書き込みがある程度進むと、ガーベージコレクションが行われる。
ガーベージコレクションの一例としては、例えば現在の記憶領域31B,31D内をサーチし、複数のエントリのうち一つにまとめられるものを一つにまとめる処理、記憶領域31B,31D内で有効なデータと消去されたデータとが混在する場合に、有効なデータをのみを集めて再配置する処理、アクセス頻度の低いデータ、重要度の低いデータを他のメモリに移動させて空き領域を増やす処理などがある。
記憶領域31Bに対するガーベージコレクションが実行される場合には、冗長領域31Cが利用される。記憶領域31Dに対するガーベージコレクションが実行される場合には、冗長領域31Eが利用される。
ガーベージコレクションは、例えば再配置部22によって実行される。ガーベージコレクションのための書き込みは、書き込み部21によって行われるとしてもよい。
再配置部22によってガーベージコレクションが実行されると、アドレス管理部20は、情報記憶部17に記憶されているメモリ使用情報11、アドレス変換情報13、データ固有情報などを、ガーベージコレクション後の書き込み先物理アドレスによって更新する。
以上説明した本実施の形態においては、書き換え回数又は読み出し回数に制限のある不揮発性半導体メモリをメインメモリとして効果的に利用することができる。
本実施の形態においては、メモリ管理装置1とオペレーティングシステム27とが協調してデータ固有のアクセス頻度情報を生成し、メモリ管理装置1はこのアクセス頻度情報に基づいて最適な書き込み方式を実現することができる。
これにより、混成メインメモリ2における不揮発性半導体メモリ9,10に記憶されたデータに、過剰に劣化することを防止することができ、不揮発性半導体メモリ9,10を用いた高速で安価な情報処理装置を実現することができる。
(第2の実施の形態)
本実施の形態においては、上記第1の実施の形態で説明したメモリ管理装置1及び混成メインメモリ2の詳細について説明する。
本実施の形態に係るオペレーティングシステム27は、データ固有のアクセス頻度情報(読み書き頻度情報)を生成する。メモリ管理装置1は、データ固有のアクセス頻度情報を用いてデータの書き込み先を決定する。また、メモリ管理装置1は、データ固有のアクセス情報、メモリ使用情報、メモリ固有情報に基づいて最適なウェアレベリングを実行する。上記第1の実施の形態においては、カラーリングレベルを用いて記憶領域を決定しているが、本実施の形態においては、データから推測されるアクセス頻度を示す値SW_Color,SR_Colorを用いて記憶領域を決定する。
NAND型フラッシュメモリは上書き動作が行えない。このため、有効なデータが存在しないNAND型フラッシュメモリのブロックに対して新たなデータを書き込む場合、そのブロック全体を消去してからデータを書き込む動作が行われる。ブロックの消去処理を繰り返すと、ブロックは劣化し、データを書き込むことが困難になる。このため特定のブロックのみにデータの書き込み処理が集中すると、一部の領域だけ書き込み処理ができなくなる現象が生じる。これを回避するために、データ管理装置1は、ウェアレベリング機能を備える。このウェアレベリング機能は、ブロックの消去回数に応じて、データの入れ替えを定期的に行う。
従来においては、不揮発性半導体メモリは2次記憶装置として用いられており、MPUは、2次記憶装置をアクセスする場合に、I/Oインタフェースを介したデータの転送が必要であった。
これに対して、本実施の形態では、不揮発性半導体メモリ9,10が、メインメモリ領域に配置される。メモリ管理装置1は、オペレーティングシステム27が揮発性半導体メモリ8と同じレベルで不揮発性半導体メモリ9,10にアクセスできるような構成を持つ。これにより、MPUと不揮発性半導体メモリ9,10との間でI/Oインタフェースを介したデータの転送必要なくなり、不揮発性半導体メモリ9,10に対して高速なアクセスが可能となる。
また、本実施の形態では、従来のモバイル機器のように安価なフラッシュメモリと同等な容量の高価なDRAMメモリを配置する必要がなく、安価なシステムを提供することができる。
オペレーティングシステム27がメインメモリと同じレベルで不揮発性半導体メモリにアクセスできるようにシステムを設計する場合、2次記憶装置として不揮発性半導体メモリを使用していた従来のシステムと比較して、不揮発性半導体メモリへの書き込みは増加する。
不揮発性半導体メモリがNAND型フラッシュメモリの場合、過度な書き込みを避け、システムの寿命を延ばすような方式が必要である。
本実施の形態では、書き換え回数に制限のある不揮発性半導体メモリ9,10をメインメモリとして使用できるように書き込み方式が改善されている。本実施の形態では、データ固有のアクセス頻度情報を用いて、データが書き込まれる頻度が予測される。アクセス頻度の高いデータは、耐久性が高いDRAM、SLC領域に配置する等の処理を行い、情報処理装置のメモリ領域を保護する。データ固有のアクセス頻度情報はウェアレベリングに適用される。例えば、データ固有のアクセス頻度情報に基づいて、ウェアレベリングにおけるデータの移動が抑制される。
上記図1に示すように、メモリ管理装置(フラットメモリ管理装置)1は、MPUであるプロセッサ(Graphic IPなどでもよい)3a〜3cなどが接続される論理アドレスバス7と混成メインメモリ2との間に備えられる。メモリ管理装置1は、混成メインメモリ2についてメモリ管理を行う。上記図1ではMPU2個とGPU1個が共通に論理バス7に接続された例を示しているが、単一のプロセッサを実装する機器に応用しても得られる効果は同じである。
メモリ管理装置1はメモリ管理のためのMPUなどのような処理部15、処理部15によって使用される作業メモリ16、不揮発性半導体メモリ9,10への書き込み方式を決定する情報などを保持する情報記憶部17を具備する。
なお、メモリ管理装置1は、情報記憶部17とは独立して、不揮発性半導体メモリ9,10へ書き込まれるデータ毎のデータ固有のアクセス頻度情報を保持するカラーリングテーブルのベースアドレスを示すカラーリングテーブルレジスタを備えるとしてもよい。
メモリ管理装置1に接続される混成メインメモリ2は、例えばDRAMなどのような揮発性半導体メモリ8と不揮発性半導体メモリ9,10とを備えている。
不揮発性半導体メモリ9,10としては、例えばNAND型フラッシュメモリが用いられるが、例えばPRAM、ReRAMなどのような他のファイルメモリでもよい。
不揮発性半導体メモリ9,10のメモリ空間内の所定の番地には、メモリ使用情報11、メモリ固有情報12、アドレス変換情報(ページテーブル)13、カラーリングテーブル(データ毎のデータ固有のアクセス情報を保持するテーブル)14が記憶されている。メモリ使用情報11、メモリ固有情報12、アドレス変換情報13は、システムのパワーオン後に、不揮発性半導体メモリ9,10の領域から情報記憶部17にコピーされる。情報記憶部17は、高速にアドレス変換を行なうためにメモリ管理装置1のチップ上にSRAMで構成されるのが好ましい。また、カラーリングテーブル14のベースアドレス(論理アドレス)は、システムのパワーオン後に、メモリ管理装置1内に存在する情報記憶部17又はカラーリングテーブルレジスタにセットされる。
アドレス変換情報13は、混成メインメモリ2の物理マップ情報(CHIPアドレス、Blockアドレス、Pageアドレス)と論理アドレスを関連付けたテーブルである。
アドレス変換情報13によって保持される不揮発性半導体メモリのメモリ領域のマッピングデータは、論理アドレスと混成メインメモリ2との間でアドレスを関連付けた情報に加えて、それぞれのブロックが書き込み可能な状態かどうかを示すフラグ情報、それぞれのPageデータが最新で有効かあるいはすでに他のページに更新されたため無効であるかを判別するためのフラグ情報を含む。
図11は、本実施の形態に係る混成メインメモリ2のメモリマップの一例を示す図である。
メモリ固有情報12は、1)混成メインメモリ2のメモリ空間内のDRAM空間サイズ、2)混成メインメモリ2のメモリ空間内の不揮発性半導体メモリ9,10のメモリサイズ、3)混成メインメモリ2のメモリ空間を構成するNAND型フラッシュメモリのブロックのサイズ、ページのサイズ、4)不揮発性半導体メモリ9内のSLC領域(2値領域)として割り付けられたメモリ空間情報(上限消去回数、上限読み出し回数を含む)、5)2bit/Cellの多値領域に割り付けられたメモリ空間情報(上限消去回数、上限読み出し回数を含む)、6)3bit/Cellの多値領域に割り付けられたメモリ空間情報(上限消去回数、上限読み出し回数を含む)、7)4bit/Cellの多値領域に割り付けられたメモリ空間情報(上限消去回数、上限読み出し回数を含む)を含む。
メモリ管理装置1は、オペレーティングシステム27からのデータ書き込み処理の命令に対して、メモリ固有情報12と、カラーリングテーブル14を参照して、どのメモリ空間(SLC領域(2値領域)、2bit/Cellの多値領域、3bit/Cellの多値領域、4bit/Cellの多値領域)にデータを書き込むか決定し、さらにそのメモリ空間内のどの物理アドレスに書き込むかについてメモリ使用情報11と、データ固有のアクセス頻度情報を参照して決定する。
また、メモリ管理装置1は、オペレーティングシステム27によってデータの読み出し処理が実行される場合に、カラーリングテーブル14を参照して読み出し方式を決定する。
メモリ使用情報11は不揮発性半導体メモリ9,10のメモリ領域内の各ブロックが何回消去されたかと、何回読み出されたかを示す情報である。各ブロックが消去されるたびに、メモリ使用情報11におけるそれぞれのブロックの消去回数(書き換え回数)はインクリメントされる。また、各ページが読み出されるたびに、メモリ使用情報11におけるそのページの読み出し回数がインクリメントされる。
図12は、カラーリングテーブル14の一例を示す図である。
カラーリングテーブル14は、各データについて、それぞれのデータ固有のアクセス頻度情報を保持するテーブルである。
カラーリングテーブル14は、任意のデータが生成された場合に、データがマップされた論理アドレス空間とデータ固有のアクセス頻度情報を関連付けるために使用される。
カラーリングテーブル14の各エントリは、データの最少の読み書きサイズ(たとえばNAND型フラッシュメモリのページサイズ)に対応しており、データから推測される書き込み頻度を示す値SW_Color、データから推測される読み出し頻度を示す値SR_Color、データから推測されるデータの寿命、データの生成された時刻、データへの書き込み回数、データの読み出し回数を含む。
図13は、カラーリングテーブル14の生成処理の一例を示すフローチャートである。
カラーリングテーブル14は、不揮発性半導体メモリ9,10上の任意の領域に配置される。カラーリングテーブル14の配置されている番地は、メモリ管理装置1の実装により決定されるとしてもよい。
ステップT1において、メモリ管理装置1は、電源が投入され、起動する。
ステップT2において、メモリ管理装置1は、カラーリングテーブル14のベースアドレスを論理アドレスに変換し、各データについてのインデックスを生成する。
ステップT3において、メモリ管理装置1は、情報記憶部17又はカラーリングテーブルレジスタに、カラーリングテーブル14のベースアドレスをセットする。
オペレーティングシステム27及びメモリ管理装置1は、情報記憶部17又はカラーリングテーブルレジスタを介して、カラーリングテーブル14を参照する。
図14は、オペレーティングシステム27によるカラーリングテーブル14のエントリの生成処理の一例を示すフローチャートである。この図14は、プロセス6bが任意のデータを生成する際に、オペレーティングシステム27がカラーリングテーブル14のエントリにデータをセットする動作を示している。新たなデータを不揮発性半導体メモリ9,10に書き込む場合、オペレーティングシステム27は、データ固有のアクセス頻度情報の値SW_Color,SR_Color、データの寿命、データ生成時刻をカラーリングテーブル27のエントリに書き込む。
SW_Color,SR_Colorは、オペレーティングシステム27がデータの書き込み頻度及び、読み出し頻度を予測して設定する値である。SW_Color、SR_Colorには、それぞれ書き込み頻度及び読み出し頻度が高いと予測される場合ほど、高い値が設定される。データの寿命は、このデータがどのくらい長く混成メインメモリ2上に存在するか予測され、この予測に基づいて設定される。これらの値は、データを生成するプログラムのソースコードにより静的に指定されるとしてもよく、オペレーティングシステム27がその値をカラーリングテーブル14に書き込むとしてもよく、オペレーティングシステム27がファイルの拡張子又はファイルヘッダ等を参照することにより予測されるとしてもよい。
ステップU1において、任意のプロセス6bは、データ書き込み要求を発生させる。
ステップU2において、オペレーティングシステム27は、不揮発性半導体メモリ9,10のページサイズごとのスタティック情報を生成する。
ステップU3において、オペレーティングシステム27は、情報記憶部17又はカラーリングテーブルレジスタの記憶内容に基づいてカラーリングテーブル14を参照する。
ステップU4において、オペレーティングシステム27は、スタティック情報をカラーリングテーブル14に書き込む。
ステップU5において、オペレーティングシステム27は、書き込み先論理アドレスをメモリ管理装置1に通知する。
そして、ステップU6において、メモリ管理装置1は、書き込み処理を実行する。
W_Color及びSR_Colorの範囲、後述するオペレーティングシステム27による頻度予測のパターン、SW_Color及びSR_Colorを用いてメモリ領域を決定するメモリ管理装置1の動作は一例である。システム実装者は、メモリ管理装置1の動作を適切にチューニング可能としてもよい。
ここで、任意のデータに対するオペレーティングシステム27によるSW_Color、SR_Color、データ寿命の割り当てについて説明する。
図15は、各種のデータに対するSW_Color、SR_Color、データ寿命の割り当ての設定の第1の例を示す図である。
図16は、各種のデータに対するSW_Color、SR_Color、データ寿命の割り当ての設定の第2の例を示す図である。
カーネルのテキスト領域は読み込まれるケースが多く、書き込まれる可能性は低い。オペレーティングシステム27は自身が動作するテキスト領域のSR_Colorを5、SW_Colorを1と設定する。また、オペレーティングシステム27は、カーネルのテキスト領域のデータ寿命は長い(LONG)と予測している。
一方、カーネルのデータ領域は、読み込み、書き込みの頻度がともに高い。よって、オペレーティングシステム27は、カーネルのデータ領域について、SR_Colorを5、SW_Colorを5に設定する。
カーネルが動的に確保するデータ領域は、データが不要になると削除されるためデータの寿命は短い(SHORT)とする。
ユーザプログラムのテキスト領域は、すべてのプロセスからリエントラントに呼び出されるカーネルと比べて、読み出し頻度は低い。ただし、プロセスがアクティブになっている状態ではカーネル同様読み出し頻度が高くなる。このため、ユーザプログラムのテキスト領域においては、SW_Colorが1、SR_Colorが4に設定される。ユーザプログラムのテキスト領域について、データ寿命は、そのプログラムがアンインストールされるまでの期間であるため、一般的には長くなる。よって、ユーザプログラムのテキスト領域について、データ寿命は長い(LONG)と設定される。
プログラムが動的に確保する領域は、大きく分けて2種類ある。まず1つはプログラムの実行終了とともに廃棄されるデータ(stack領域を含む)である。これらのデータはデータ寿命が短く、読み出しと書き込みの頻度は高い。したがって、プログラムの実行終了とともに廃棄されるデータについて、SR_Colorとして4が設定され、SW_Colorとして4が設定される。もう1つのプログラムが動的に確保する領域は、プログラムが新たなファイルのために生成した領域である。プログラムによって生成されたデータはデータ寿命が長く、読み出しと書き込みの頻度は生成するファイルの種別に依存する。
プロセスによって参照されるファイルとして扱われるデータについて、ファイルのデータ寿命は長いと設定される。
例えばファイルの拡張子がSYS,dll,DRVなどで示されるようなシステムファイルが読み込まれる場合について説明する。このような拡張子を持つデータは、オペレーティングシステムが様々な処理を実行する場合に読み込まれるファイルである。混成メインメモリ2上にオペレーティングシステムがインストールされる場合に、1度書き込まれるとその後更新されることはほとんどない。これらの拡張子を持つファイルは、ファイルのなかでも比較的アクセス頻度は高いが、プログラム(カーネル)のテキスト領域と比較してアクセス頻度は低いと予測される。したがって、オペレーティングシステム27は、これらの拡張子を持つデータのSW_Colorを1に設定し、SR_Colorを3に設定する。この設定は、データから予測される書き込み頻度は極めて低く、予測される読み出し頻度は高いことを示している。すなわち、これらの拡張子を持つデータは、オペレーティングシステムのアップデートや他のプログラムをインストールする場合に数度書き換わる程度であり、ほとんどRead Onlyとして扱われると予測される。
拡張子がJPEGで代表されるような写真データ、及び拡張子がMOVで代表されるようなムービーデータは、一度書かれると再度度書き込みが行なわれることは少ない。このような写真及びムービーデータはプログラムから何度もアクセスされる頻度が少ないと予測される。したがって、オペレーティングシステム27は、写真及びムービーデータに対して、SW_Color及びSR_Colorの設定値は小さくなる。
図17は、カラーリングテーブルのエントリのアライメントの第1の例を示す図である。
図18は、カラーリングテーブルのエントリのアライメントの第2の例を示す図である。
カラーリングテーブルのエントリは、データの最少の読み書きサイズ(たとえばNAND型フラッシュメモリのページサイズ)に対応しているが、プロセスは、論理アドレス空間にデータをマップする際、データの最少の読み書きサイズにアライメントしてマップすることを義務づけられていない。このため、カラーリングテーブルの1エントリに対して複数のデータが対応する可能性がある。
このような場合、オペレーティングシステム27は、図17に示すように、1エントリに対応する複数のデータのうちで、最も読み出し頻度及び書き込み頻度が高いと予測されるデータを代表とする。
あるいは、オペレーティングシステム27は、図18に示すように、1エントリを占めるデータのサイズを重みとし、各データのSW_Color、SR_Colorの加重平均値を設定する。
カラーリングテーブル14によって示されているSW_ColorとSR_Colorとは、プログラム作成者によりオペレーティングシステム27などのソースコードに埋め込まれるか、オペレーティングシステム27によって予測される。しかしながら、プログラム開発者が意図した場合と別の用途でファイルや写真データが使われる場合もある。一般的に、写真などのようなデータのアクセスはほとんどが読み出しであり、写真の内容が書き換えられることは少ない。しかしながら、写真を加工するプログラムが特定の写真を扱う場合、加工中の写真が頻繁に書き換えられることがある。このような場合、カラーリングテーブル14のSW_ColorとSR_Colorをユーザが書き換え可能であれば、特定のファイルを、より高速で書き換え回数に余裕のある領域に移動することが可能になる。このような動作を実現させるため、各データのデータ固有のアクセス頻度情報は、オペレーティングシステム27のソフトウェア上で書き換えられるように、オペレーティングシステム27のファイルシステムを設計することが好ましい。たとえば一般的なブラウザでファイルのプロパティを開けば、カラーリングテーブル27に相当する属性がGUI画面上で見ることができるようにシステムが設計されており、その初期データをユーザがGUI上で変更できるようオペレーティングシステム27を設計するのが好ましい。
次に、本実施の形態に係るメモリ管理装置1を使用した情報処理装置による混成メインメモリ2からのデータ読み出し動作について詳細に説明する。
プロセッサ3bからデータの読み出し要求が発生すると、それぞれのプロセッサが発行する仮想論理アドレスは論理アドレス空間に割り付けられた論理アドレスに変換(CPUID プロセスIDの付加)される。そして、メモリ管理装置1は、変換後の論理アドレスに対応して揮発性半導体メモリ8、不揮発性半導体メモリ9,10からデータの読み出しを行う。論理アドレスに対応するデータが揮発性半導体メモリ8のメモリ領域に存在する場合には、揮発性半導体メモリ8上のデータは、メモリ管理装置1を介して2次キャッシュメモリ5bに取り込まれる。
揮発性半導体メモリ8上に論理アドレスに対応するデータが存在しない場合、メモリ管理装置1は論理アドレスに対応する不揮発性半導体メモリ9,10のチップ内のブロックアドレス、ページアドレスを情報記憶部17内のアドレス変換情報13に基づいて検索し、必要なデータを不揮発性半導体メモリ9,10のチップにおける指し示されたブロック内の所定ページから読み出す。
このとき、メモリ管理装置1は、カラーリングテーブル14に基づいて、論理アドレスに対応するデータの固有のアクセス頻度情報を参照し、読み出し方法を決定する。
図19は、カラーリングテーブル14における書き込み頻度及び読み出し頻度の算出の方法の一例を示す図である。
オペレーティングシステム27の開発者は、メモリ管理装置1のデータ読み込み方式とデータ書き込み方式の実装により、先で説明した基準などを用いてSW_Color、SR_Colorを設定する。
図20は、本実施の形態に係るメモリ管理装置1による読み出し方式の決定動作の一例を示すフローチャートである。
この図20におけるSR_Colorは、カラーリングテーブル14のSR_Colorに対応している。カラーリングテーブル14の書き込み頻度及び読み出し頻度は、メモリ管理装置1がメモリ使用情報11、メモリ固有情報12、カラーリングテーブル14に含まれている書き込み回数、読み出し回数、データ生成時刻を用いて算出される値である。
図20のフローチャートのステップV1〜V13では、上記図15,16において設定されているSR_Colorなどに基づいて、データがメモリ管理装置1によってどのように読み出されるかが説明されている。
まず、SR_Colorを5、SW_Colorを1と指定されたカーネルのテキスト領域は、読み込まれるケースが多く、書き込まれる可能性は低いと推測される。このカーネルのテキスト領域における第1のデータは、オペレーティングシステムが様々な処理をする際に読み出されるため、読み出し回数は多くなり、さらに高速に読み出される必要がある。
メモリ管理装置1は、不揮発性半導体メモリ9,10から読み出された第1のデータを、プロセッサ3bの2次キャッシュメモリ5b又は1次キャッシュメモリ4bに対して書き込むとともに、並行して、混成メインメモリ2内の揮発性半導体メモリ8のメモリ領域にも読み出された第1のデータを転送する。
再度同じ第1のデータが読み出される場合には、プロセッサ3bの2次キャッシュメモリ5b又は1次キャッシュメモリ4b上から、又はキャッシュヒットしない場合は混成メインメモリ2の揮発性半導体記憶メモリ8のメモリ領域から、第1のデータの読み出しが行なわれる。混成メインメモリ2上の揮発性半導体メモリ8のメモリ領域に記憶された第1のデータは、電源がオフされるまで揮発性半導体メモリ8上に保持される。
次に、SR_Colorを5、SW_Colorを5と指定されたカーネルのデータ領域は、システムが起動するたびに新たに生成、初期化する領域である。このため、カーネルのデータ領域における第2のデータの寿命は短いと推測される。メモリ管理装置1は、最初に第2のデータの寿命を参照する。第2のデータは、システム稼働中に必ず揮発性半導体メモリ8上に存在し、電源がオフされるとともに揮発性半導体メモリ8から消去される。
次に、SR_Colorを4、SW_Colorを1と指定されたユーザプログラムの領域は、すべてのプロセスからリエントラントに呼び出されるカーネルと比べて、読み出し頻度は低い。ユーザプログラムの領域における第3のデータは揮発性半導体メモリ8のメモリ領域に配置されるが、混成メインメモリ2の揮発性半導体メモリ8のメモリ領域がFullに埋まった場合、揮発性半導体メモリ8上から不揮発性半導体メモリ9,10のメモリ領域へのライトバック対象となる。消去される第3のデータの順番は、カラーリングテーブル14の情報に基づいて決定される。ライトバックされる場合には、読み出しが少ない順に、第3のデータが揮発性半導体メモリ8上から不揮発性半導体メモリ9,10上に移される。
SR_Colorを4、SW_Colorを4と指定したプログラムが動的に確保する領域における第4のデータのうち、データ寿命が短いと指定された第4のデータは、カーネルのデータ領域と同様に、システム稼働中に必ず揮発性半導体メモリ8上に存在し、電源がオフされるとともに揮発性半導体メモリ8から消去される。
一方、データ寿命が長いと指定された第4のデータは、揮発性半導体メモリ8のメモリ領域に配置されるが、混成メインメモリ2の揮発性半導体メモリ8のメモリ領域がFullに埋まった場合、揮発性半導体メモリ8上から不揮発性半導体メモリ9,10のメモリ領域へのライトバック対象となる。
次に、プロセスが参照するファイルとして扱われるデータについて説明する。上記図15,16ではファイルのデータ寿命はすべて長いと設定されている。
SW_Colorを1とし、SR_Colorを3と指定されたファイル類に含まれる第5のデータは、書き込み頻度が極めて低く、予測される読み出し頻度が高いことがオペレーティングシステム27によって推測される。このとき、メモリ管理装置1は、第5のデータを揮発性半導体メモリ8のメモリ領域に配置するが、混成メインメモリ2の揮発性半導体メモリ8のメモリ領域がFullに埋まった場合、揮発性半導体メモリ8上から不揮発性半導体メモリ9,10のメモリ領域へのライトバック対象となる。
SW_Colorを1とし、SR_Colorを2と指定されたファイル類に含まれる第6のデータは、書き込み頻度が極めて低く、予測される読み出し頻度も低いことがオペレーティングシステム27によって推測される。このように、メモリ管理装置1は、読み出し頻度が高いと判定されていない場合、読み出し時に揮発性半導体メモリ8のメモリ領域にコピーを行わず、不揮発性半導体メモリ9,10に直接アクセスする。
SW_Colorを1とし、SR_Colorを1と指定したファイル類に含まれる第7のデータは、書き込み頻度が極めて低く、予測される読み出し頻度も極めて低いことがオペレーティングシステム27によって推測される。このように、メモリ管理装置1は、読み出し頻度が高いと判定されていない場合、読み出し時に揮発性半導体メモリ8のメモリ領域にコピーを行わず、不揮発性半導体メモリ9,10に直接アクセスする。
図21は、本実施の形態に係るメモリ管理装置1のデータ読み出しの処理の一例を示すフローチャートである。
この図21のステップW1〜W10において、メモリ管理装置1は、情報記憶装置17内のメモリ使用情報11のうち対応するページアドレスの読み出し回数とメモリ固有情報12の読み出し上限回数を参照する。
メモリ管理装置1は、メモリ使用情報11から読み出されたメモリの読み出し回数が、読み出し上限回数を超えているか否かチェックする。
メモリの読み出し回数が、読み出し上限回数を超えていない場合、メモリ管理装置1は、情報記憶部17内の読み出し回数をインクリメントする処理をする。
メモリの読み出し回数が、読み出し上限回数を超えている場合は、メモリ管理装置1は、同じメモリ空間(SLC領域(2値領域)、2bit/Cellの多値領域、3bit/Cellの多値領域、4bit/Cellの多値領域)の他のブロックに、ブロック内の総てのページのデータをコピーする。このようにコピーを行う場合、メモリ管理装置1は、読み出し回数の少ないフレッシュなブロックを検索し、そこに総てのページデータを再配置する(引っ越す)ことが好ましい。読み出し処理が成功した場合、メモリ管理装置1はカラーリングテーブル14の読み出し回数をインクリメントする。
図22は、本実施の形態に係るメモリ管理装置1のデータ書き込みの処理の一例を示すフローチャートである。
この図22のステップX1〜X8において、プロセス(プログラム)6a〜6cからデータの書き込み要求が発生すると、それぞれのプロセッサ3a〜3cは、それぞれのプロセッサ3a〜3cが備える1次キャッシュメモリ4a〜4c、2次キャッシュメモリ5a〜5c上にデータが存在するかどうかチェックする。
1次キャッシュメモリ4a〜4c又は2次キャッシュメモリ5a〜5c上にデータが存在する場合、プロセッサ3a〜3cは、1次キャッシュメモリ4a〜4c又は2次キャッシュメモリ5a〜5c上のデータを書き換えて書き込み動作が終了する。
1次キャッシュメモリ4a〜4c又は2次キャッシュメモリ5a〜5c上にデータが存在しない場合、メモリ管理装置1は、仮想論理アドレスを論理アドレス空間に割り付けられた論理アドレスに変換する。
変換後の論理アドレスに対応するデータが揮発性半導体メモリ8上に存在する場合、メモリ管理装置1は、混成メインメモリ1の揮発性半導体メモリ8に対して書き込み動作を行う。
論理アドレスに対するデータが揮発性半導体メモリ8上に存在しない場合、図22に示すように、メモリ管理装置1は、不揮発性半導体メモリ9,10のメモリ領域に対して書き込み動作を行う。データ生成時には、この論理アドレスに対応した不揮発性半導体メモリ9,10の書き込み番地は、論理アドレスに対応するカラーリングテーブル14のエントリとメモリ管理装置1の情報管理装置17内に保存されたメモリ使用情報11、メモリ固有情報12とに基づいて決定される。書き込み番地の決定後、メモリ管理装置1は、決定された書き込み番地に関する情報をアドレス変換情報13に書き込む。書き込みが成功した場合、メモリ管理装置1はカラーリングテーブル14の書き込み回数をインクリメントする。
図23は、本実施の形態に係るメモリ管理装置1による書き込み先領域の決定動作の一例を示すフローチャートである。メモリ管理装置1は、この図23の書き込み先領域の決定を、カラーリングテーブル14に基づいて実行する。メモリ領域を決定するために使用するカラーリングテーブル14の属性はSW_Color、SR_Color、書き込み頻度とする。
オペレーティングシステム27の開発者は、メモリ管理装置1のデータ読み込み方式とデータ書き込み方式の実装に対して、上記図15及び図16に示すような設定を行う。この図23のステップY1〜Y12は、上記図15及び図16に示す設定にしたがって、データがメモリ管理装置1によってどのように読み出されるかを表している。
まず、SR_Colorを5、SW_Colorを1と指定されたカーネルのテキスト領域における第1のデータは読み込まれる回数が多く、書き込まれる可能性は低いと推測される。第1のデータは、上記図20に示されている読み出し方式の決定動作に基づいて、システム稼働中に揮発性半導体メモリ8に移され読み書きされる。このため、第1のデータが実際に不揮発性半導体メモリ9,10に書き出される頻度は低い。しかし、第1のデータの重要性は高いため、この図23において、メモリ管理装置1は、第1のデータを、SLCである第1のデータを不揮発性半導体メモリ9のB領域に書き込む。
次に、SR_Colorを5、SW_Colorを5と指定されたカーネルのデータ領域は、システムが起動するたびに新たに生成、初期化する領域なので、カーネルのデータ領域における第2のデータの寿命は短いと推測される。メモリ管理装置1は、最初に第2のデータの寿命を参照する。第2のデータは、システム稼働中に必ず揮発性半導体メモリ8上に存在し、電源がオフされるとともに揮発性半導体メモリ8から消去される。したがって、第2のデータは、不揮発性半導体メモリ9,10のメモリ領域に書き込まれることはない。
次に、SR_Colorを4、SW_Colorを1と指定されたユーザプログラムの領域は、すべてのプロセスからリエントラントに呼び出されるカーネルと比べて、読み出し頻度は低い。上記図20に示した読み出し動作から、ユーザプログラムの領域における第3のデータは、長期にわたりアクセスされない場合にのみ不揮発性半導体メモリ9,10のメモリ領域に書き出される。したがって、第3のデータが不揮発性半導体メモリ9,10に書き込まれる頻度は低い。第3のデータは、カーネルのテキスト領域におけるデータと比較して重要度は低いため、図23ではMLC領域であるA領域に書き込まれる。
SR_Colorを4、SW_Colorを4と指定されたプログラムが動的に確保する領域における第4のデータのうち、データ寿命が短いと指定された第4のデータは、カーネルのデータ領域と同様に、システム稼働中に必ず揮発性半導体メモリ8上に存在する。メモリ管理装置1は、最初にデータの寿命を参照する。第4のデータは、システム稼働中に必ず揮発性半導体メモリ8上に存在し、電源がオフされるとともに揮発性半導体メモリ8から消去されるので不揮発性半導体メモリ9,10のメモリ領域に書き込まれることはない。
一方、データ寿命が長いと指定された第4のデータは、揮発性半導体メモリ8のメモリ領域に配置されるが、混成メインメモリ2の揮発性半導体メモリ8のメモリ領域がFullに埋まった場合、揮発性半導体メモリ8上から不揮発性半導体メモリ9,10のメモリ領域へのライトバック対象となる。プログラムのテキスト領域はデータの重要度が高いため、プログラムのテキスト領域におけるデータは、SLC領域であるC領域に書き込むようにしている。
次にプロセスが参照するファイルとして扱われるデータについて説明する。図15及び図16ではファイルのデータ寿命はすべて長いと設定されている。
SW_Colorを1とし、SR_Colorを3と指定されたシステムファイル類における第5のデータは、書き込み頻度が極めて低く、予測される読み出し頻度が高いことがオペレーティングシステム27によって推測される。このとき、メモリ管理装置1は、第5のデータを揮発性半導体メモリ8のメモリ領域に配置するが、混成メインメモリ2の揮発性半導体メモリ8のメモリ領域がFullに埋まった場合、揮発性半導体メモリ8上から不揮発性半導体メモリ9,10のメモリ領域へのライトバック対象となる。第5のデータの書き込み頻度は低いと判断できるのでメモリ管理装置1は第5のデータをMLC領域へ配置する。
SW_Colorを3とし、SR_Colorを3と指定されたファイル類は、書き込み頻度が極めて高く、予測される読み出し頻度も高いことがオペレーティングシステム27によって推測される。したがって、メモリ管理装置1は、SW_Colorが3であり、SR_Colorが3のファイル類におけるデータをSLC領域へ配置する。
SW_Colorを1とし、SR_Colorを2と指定されたファイル類に含まれる第6のデータは、書き込み頻度が極めて低く、予測される読み出し頻度も低いことがオペレーティングシステム27によって推測される。第6のデータについては、ファイルとしての重要度も低いと判断されるため、メモリ管理装置1は、第6のデータをMLC領域へ配置する。
SW_Colorを1とし、SR_Colorを1と指定されたファイル類に含まれる第7のデータは、書き込み頻度が極めて低く、予測される読み出し頻度も極めて低いことがオペレーティングシステム27によって推測される。第7のデータについては、ファイルとしての重要度も低いと判断されるため、メモリ管理装置1は、第7のデータをMLC領域へ配置する。
次に、メモリ領域内での書き込み先物理アドレスの決定について説明する。
上記の処理により書き込み対象のメモリ領域が決定された場合、メモリ管理装置1は、書き込み先のブロックアドレスを決定する。この場合、メモリ管理装置1は、カラーリングテーブル14を参照し、書き込み先ブロックアドレスを適切に選択することでウェアレベリングの発生を抑え、不要な消去処理を低減する。
以下にこのウェアレベリングの発生を抑制する手法の詳細について説明する。
一般に、ウェアレベリングは、ブロック間でデータの入れ替えを行う。このため、ウェアレベリングが行われる頻度によって消去回数の平準化が行われる。ウェアレベリングでは、その都度ブロックに対する消去処理が実行される。ウェアレベリングの頻度を下げると、消去処理の回数は減少するが、消去ブロックの平準化が行われないというトレードオフをもつ。ブロック間の消去回数の差がウェアレベリング発動のトリガとなるアルゴリズムにおいて、ウェアレベリングの頻度は、消去回数の差の閾値に依存する。本実施の形態において、メモリ管理装置1は、ウェアレベリングによる消去処理の増加を避けつつ、平準化を行うために、データ固有のアクセス頻度情報を使用し、ブロックへの書き込み時に適切なブロックを選択する。
図24は、不揮発性半導体メモリ9,10の任意のブロックにおける消去回数の推移の一例を示すグラフである。
時間の経過により理想的な消去回数は、変化する。NAND型フラッシュメモリを使用する情報処理装置では、将来的にNAND型フラッシュメモリが劣化し、メモリを交換する必要が生じる。メモリの交換期までNAND型フラッシュメモリの多数のブロックを使用するためにはウェアレベリングによる消去回数の平準化が必要である。この図24では、NAND型フラッシュメモリの任意のブロックにおける消去回数の推移を示している。
すべてのブロックが図24で示した消去回数の推移に従うためには、ウェアレベリングにおいて各ブロックの消去回数の差に対するしきい値を小さく設定する。
図25は、ウェアレベリングにおいて消去回数の差に対するしきい値を小さく設定した場合の変化の一例を示すグラフである。
この図25における破線は各ブロックの消去回数のばらつきの範囲を示している。図25では、しきい値を小さくすることでウェアレベリングのための消去処理が増加し、NAND型フラッシュメモリ全体の寿命が短くなる状態が図示されている。
メモリ管理装置1は、消去回数の分散を低減させ、ウェアレベリングによる消去処理を抑えるために、データを書き込む際にデータのアクセス頻度情報に基づいた消去ブロックの選択を行う。
図26は、カラーリングテーブル14の情報から基準となる消去回数を決定する決定表の一例を示している。
メモリ管理装置1は、カラーリングテーブル14のパラメータに基づき、基準となる消去回数を算出し、基準となる消去回数にもっとも近い消去回数をもつブロックを選択する。基準となるブロックの消去回数は、現在のメモリ領域内のブロックの最少の消去回数を最小値(使用率0%)とし、最小の消去回数にウェアレベリングのしきい値を加算した値を最大値(使用率100%)とする。
この図26においては、カラーリングテーブル14のSW_Colorと書き込み頻度とを用いて、基準となる消去回数が算出される。しかしながら、パラメータとしてSR_Colorや読み出し頻度を用いてウェアレベリングの抑制を行うとしてもよい。
図27は、消去可能回数に応じたブロックのグループ分けの一例を示すグラフである。
図28は、消去可能回数に応じたブロックのグループ分けの判断基準を表す図である。
本実施の形態においては、メモリ領域毎に消去回数によるブロックのグループ分けが行われる。ブロックのグループ分けの結果を示す情報は、メモリ固有情報12として保存される。なお、ブロックのグループ分けの結果を示す情報は、メモリ使用情報11として保存されるとしてもよい。
図27の太線は、最小の消去回数の推移を示しており、破線はウェアレベリングのしきい値を表している。図27に示すように、各ブロックはウェアレベリングのしきい値の範囲内(ばらつきの範囲内)で消去回数ごとのグループに分割される。
メモリ管理装置1は、あるブロックのデータが消去され、再度書き込み可能になったとき、図28に示すような判定表に基づいて、ブロックのグループがどこに属するか判定し、メモリ固有情報12に記憶する。
図29は、カラーリングテーブル14の情報に基づいてウェアレベリングにおけるブロックの属するグループの探索の一例を示す図である。
メモリ管理装置1は、カラーリングテーブル14の情報に基づいて、ブロックを探索する基準となるブロックのグループを決定する。
探索基準となるブロックのグループが決定されると、図29に示すように、メモリ管理装置1はブロックが見つかるまで、その近傍のブロックグループを探索する。この探索処理によってデータを書き込む領域の物理アドレスが決定されると、メモリ管理装置1は、データの書き込みを行い、アドレス変換情報13を更新する。
なお、メモリ管理装置1は、他のブロック探索法を用いて書き込み番地を決定するとしてもよい。例えば、メモリ管理装置1は消去回数をキーとし、消去ブロックをノードとする木構造(B-Tree B+Tree RB-Tree等)で書き込み可能なブロック(消去処理済み)を管理し、メモリ固有情報12又はメモリ使用情報11に保存する。メモリ管理装置1、基準となる消去回数をキーにツリーを探索し、最も近い消去回数をもつブロックを選択する。
任意のプロセス3bによってデータが消去されると、オペレーティングシステム27はこのデータについてのカラーリングテーブル14の内容を消去する。メモリ管理装置1は、カラーリングテーブル14の内容が消去されたとき、アドレス変換情報13における消去対象データの論理アドレスに対応する物理アドレスを消去する。
データが揮発性半導体メモリ8上に存在する場合は、揮発性半導体メモリ8上のデータが消去される。
図30は、本実施の形態に係るメモリ管理装置1にさらにキャッシュメモリを備えたメモリ管理装置の一例を示すブロック図である。
メモリ管理装置は、上記メモリ管理装置1と同様の構成に加えて、キャッシュメモリ33を備えている。
プロセッサ3bは、1次キャッシュメモリ4b、2次キャッシュメモリ5bに加えて、キャッシュメモリ33を直接アクセス可能である。
メモリ管理装置32は、1次キャッシュメモリ4b、2次キャッシュメモリ5b、キャッシュメモリ33のいずれかにおいて、ページイン又はページアウトが発生した場合に、混成メインメモリ2をアクセスする。
以上説明した本実施の形態においては、混成メインメモリ2の各メモリの耐久性に基づいてデータ配置が実現され、混成メインメモリ2の寿命を延ばすことができる。
また、本実施の形態においては、混成メインメモリ2の各メモリの信頼性に基づいてデータ配置が実現されるため、混成メインメモリ2における致命的なデータ欠損を防止することができる。
本実施の形態に係るメモリ管理装置1及び混成メインメモリ2を用いることにより、スワップをなくすことができる。
本実施の形態においては、不揮発半導体メモリ9,10がメインメモリとして用いられる。これにより、メインメモリの記憶容量を大容量化することができ、HDD/SSDを用いた2次記憶システムを使用しなくてもよい。
本実施の形態においては、メモリ階層を少なくすることができ、オペレーティングシステム27の構造を簡単にすることができる。例えば、本実施の形態においては、1次キャッシュメモリ4a〜4c,2次キャッシュメモリ5a〜5c,混成メインメモリ2を同じ階層で扱うことができる。
本実施の形態においては、不揮発性半導体メモリ9,10をメインメモリとして用いるため、インスタント・オンを高速化できる。
本実施の形態においては、メモリ使用情報11、メモリ固有情報12、データ固有情報を含むカラーリングテーブル14を用いて混成メインメモリ2の寿命を延ばすことができ、また、高速アクセス可能なメモリ変換を行うことができる。
本実施の形態においては、混成メインメモリ2からのデータ読み出しにおいて、不揮発性半導体メモリ9,10のページサイズ、ページサイズの倍数、ブロックサイズ、ブロックサイズの倍数の読み出し単位のデータを、一旦作業メモリ16に記憶し、この作業メモリ16からさらに必要なデータ(例えばバイトデータ)のみをプロセッサ3bに送信することができる。これにより、データ読み出しにおいてバイトアクセスを可能にできる。
なお、作業メモリ16は、プロセッサ3a〜3c内の1次キャッシュメモリ4a〜4c,2次キャッシュメモリ5a〜5c、情報記憶部17を用いて実現するとしてもよい。
上記各実施の形態において、書き込み頻度とは、単位時間当たりの書き込み回数としてもよい。読み出し頻度は、単位時間当たりの読み出し回数としてもよい。
(第3の実施の形態)
本実施の形態のメモリ管理装置(フラットメモリ管理装置)は、MPUに具備されており、キャッシュメモリとメインメモリとについてメモリ管理を行う。メモリ管理装置は、メモリアクセスに関するメモリ階層の数を削減し、メモリアクセスの最適化を容易に実現可能にする。
なお、下記の各実施の形態において、メインメモリとしては、例えば、上記各実施の形態で説明した混成メインメモリ1が用いられるとしてもよく、例えば、単に不揮発性半導体メモリが用いられるとしてもよい。
ここで、下記のメインメモリとして混成メインメモリ1が用いられる場合には、下記のメモリ管理装置は、上記各実施の形態で説明したメモリ管理装置1,32の機能を実現可能であり、さらに、各種のメモリを同一の記憶階層で扱うとする。
本実施の形態においては、MPUのMMUと、MPUのキャッシュコントローラと、メインメモリ用MMUとを統合したメモリ管理装置について説明する。
図31は、本実施の形態に係るメモリ管理装置の一例を示すブロック図である。なお、本実施の形態においては、メインメモリがNAND型フラッシュメモリの場合を例として説明するが、上述したように、例えば混成メインメモリ1,32などのような他の記憶装置を用いることもできる。また、本実施の形態において、アクセスとは、データ(又はプログラム)の読み出しと書き込みの少なくとも一方を含むとする。
MPU101は、メモリ管理装置102を具備し、NAND型フラッシュメインメモリ104をアクセスする。
NAND型フラッシュメインメモリ104は、内部に、アドレス変換テーブル105、書き換え回数データ106を記憶する。書き換え回数データ106は、メインメモリのアクセス状態を示すメインメモリ履歴データに対応する。
アドレス変換テーブル105は、NAND型フラッシュメインメモリ104における論理アドレスと、物理位置(Physical Location)又は物理アドレスとを関連付けたデータである。
書き換え回数データ106は、NAND型フラッシュメインメモリ104の各ページ又はブロックの書き換え回数を表す。
メモリ管理装置102は、MMU107、キャッシュコントローラ108、1次キャッシュメモリ103、2次キャッシュメモリ122、メインメモリ用MMU109、アクセス履歴格納部(NAND Information Registers)110を具備する。また、キャッシュコントローラ108は、1次キャッシュメモリ103用の第1のキャッシュコントローラ108aと2次キャッシュメモリ122用の第2のキャッシュコントローラ108bとを具備する。さらに、メインメモリ用MMU109は、アドレス関係格納部123を具備する。なお、メインメモリ用MMU109と、アドレス関係格納部123とは、分離していてもよい。
例えば、メモリ管理装置102は、1チップ上に統合された状態で形成される。
本実施の形態においては、キャッシュメモリが2つの場合を例に説明するが、キャッシュメモリの数は1つ又は3以上であってもよい。
MMU107は、キャッシュメモリ103,122の論理アドレスを物理アドレスに変換する。
1次キャッシュメモリ103は、タグ格納領域103aと、ライン格納領域103bとを持つ。
2次キャッシュメモリ122は、タグ格納領域122aと、ライン格納領域122bとを持つ。
本実施の形態において、1次キャッシュメモリ103のラインサイズ及び2次キャッシュメモリ122のラインサイズは、NAND型フラッシュメインメモリ104のブロックと同じサイズ(例えば256キロバイト)又はブロックサイズの倍数か、NAND型フラッシュメインメモリ104のページサイズ又はページサイズの倍数となるサイズとする。これにより、NAND型フラッシュメインメモリ104のデータを1次キャッシュメモリ103又は2次キャッシュメモリ122に移動する動作、及び1次キャッシュメモリ103又は2次キャッシュメモリ122のデータをNAND型フラッシュメインメモリ104に移動する動作をページ単位、ページサイズの整数倍単位、ブロック単位、ブロックサイズの整数倍単位で行うことができ、データの移動を簡素化できる。
本実施の形態において、1次キャッシュメモリ103及び2次キャッシュメモリ122は、例えばライトバック型であるとする。また、2次キャッシュメモリ122は、1次キャッシュメモリ103よりも記憶容量が大きいが低速であるとする。
第1のキャッシュコントローラ108aは、1次キャッシュメモリ103に対するアクセスを制御する。
より具体的には、第1のキャッシュコントローラ108aは、1次キャッシュメモリ103からデータを読み出す場合には、MMU107から得られた物理アドレスにそって、1次キャッシュメモリ103における物理アドレスに対応するデータを読み出す。また、第1のキャッシュコントローラ108aは、1次キャッシュメモリ103にデータを書き込む場合には、MMU107から得られた物理アドレスにそって、1次キャッシュメモリ103における物理アドレスに対応する位置に、書き込み対象のデータを書き込む。
第2のキャッシュコントローラ108bは、2次キャッシュメモリ122に対するアクセスを制御する。
より具体的には、第2のキャッシュコントローラ108bは、2次キャッシュメモリ122からデータを読み出す場合には、MMU107から得られた物理アドレスにそって、2次キャッシュメモリ122における物理アドレスに対応するデータを読み出す。また、第2のキャッシュコントローラ108bは、2次キャッシュメモリ122にデータを書き込む場合には、MMU107から得られた物理アドレスにそって、2次キャッシュメモリ122における物理アドレスに対応する位置に、書き込み対象のデータを書き込む。
メインメモリ用MMU109は、NAND型フラッシュメインメモリ104に対するアクセスを制御する。
メインメモリ用MMU109は、必要に応じて、NAND型フラッシュメインメモリ104のアドレス変換テーブル105の一部又は全部を、アドレス関係データとして、アドレス関係格納部123に格納する。また、メインメモリ用MMU109は、必要に応じて、NAND型フラッシュメインメモリ104の書き換え回数データ106の一部又は全部を、アクセス履歴データとして、アクセス履歴格納部110に格納する。
メインメモリ用MMU109は、NAND型フラッシュメインメモリ104の論理アドレスを物理位置に変換する。
メインメモリ用MMU109は、NAND型フラッシュメインメモリ104の物理位置に基づいて、NAND型フラッシュメインメモリ104からデータの読み出しを行い、第1のキャッシュコントローラ108a又は第2のキャッシュコントローラ108bを経由して、1次キャッシュメモリ103又は2次キャッシュメモリ122にデータを記憶する。
メインメモリ用MMU109は、NAND型フラッシュメインメモリ104から新たなデータを読み出した場合には、その新たなデータに関するアドレス変換テーブルのデータ、及び書き換え回数データを読み出し、それぞれアドレス関係格納部123及びアクセス履歴格納部110に格納する。
メインメモリ用MMU109は、NAND型フラッシュメインメモリ104にデータを書き込む場合、アドレス関係データ及びアクセス履歴データに基づいて、NAND型フラッシュメインメモリ104の全領域又は全ブロックを隔たりなくアクセスさせる制御、NAND型フラッシュメインメモリ104の各領域又はブロックの書き換え回数を均等化するための制御、不良領域又は不良ブロックを避ける制御などを行う。さらに、メインメモリ用MMU109は、1次キャッシュメモリ103又は2次キャッシュメモリ122に記憶されていたデータを、第1のキャッシュコントローラ108a又は第2のキャッシュコントローラ108bを経由して取得し、この取得したデータをNAND型フラッシュメインメモリ104の物理位置に基づいてNAND型フラッシュメインメモリ104に記憶する。
メインメモリ用MMU109は、NAND型フラッシュメインメモリ104にデータが書き込まれた場合に、書き込まれたデータに関する論理アドレスと物理位置との関係に基づいてアドレス関係格納部123のアドレス関係データを更新し、また、アクセス履歴格納部110のアクセス履歴データを更新する。
メインメモリ用MMU109は、必要に応じて、メインメモリ用MMU109に格納されているアドレス関係データと、アクセス履歴格納部110に記憶されているアクセス履歴データとを、それぞれNAND型フラッシュメインメモリ104のアドレス変換テーブル105と書き換え回数データ106とに対して反映する。すなわち、メインメモリ用MMU109は、MPU101に記憶されているアドレス関係データと、NAND型フラッシュメインメモリ104に記憶されているアドレス変換テーブル105とを整合させる。また、メインメモリ用MMU109は、アクセス履歴格納部110のアクセス履歴データと、NAND型フラッシュメインメモリ104の書き換え回数データ106とを整合させる。
アクセス履歴格納部110は、NAND型フラッシュメインメモリ104のページ又はブロック(物理位置)のアクセス状態の履歴を格納する。本実施の形態において、アクセス履歴格納部110は、NAND型フラッシュメインメモリ104における各ページ又はブロックの書き換え回数データ106のうち、一部又は全部のページ又はブロックについての書き換え回数データを格納する。
例えば、各ブロックの書き換え回数は4バイトで記録され、各ブロックサイズは256キロバイトとする。この場合において、NAND型フラッシュメインメモリ104の記憶容量が1メガバイトであるとすると、NAND型フラッシュメインメモリ104に記憶されるブロック数は4ブロックであり、各ブロックの書き換え回数を記憶するために必要な記憶容量は16バイトとなる。同様の場合において、NAND型フラッシュメインメモリ104の記憶容量が1ギガバイトであるとすると、NAND型フラッシュメインメモリ104に記憶されるブロック数は4096ブロックであり、各ブロックの書き換え回数を記憶するために必要な記憶容量は16キロバイトとなる。さらに、同様の場合において、NAND型フラッシュメインメモリ104の記憶容量が16ギガバイトであるとすると、各ブロックの書き換え回数を記憶するために必要な記憶容量は64キロバイトとなる。
例えば、NAND型フラッシュメインメモリ104の記憶容量が例えば128ギガバイトなどのように大きくなった場合、アクセス履歴格納部110は、NAND型フラッシュメインメモリ104における書き換え回数データ106の一部を格納する。このように、アクセス履歴格納部110は、書き換え回数データ106の一部を格納するため、書き換え回数にはposが付されている。posはキャッシュタグと同様の手法で使用される。
メインメモリ用MMU109の動作例の概略を説明する。
メインメモリ用MMU109は、NAND型フラッシュメインメモリ104のアドレス変換テーブル105の一部を、アドレス関係格納部123に記憶し、書き換え回数データ106の一部をアクセス履歴格納部110に記憶する。
メインメモリ用MMU109は、キャッシュメモリ103,122に読み出し対象のデータが記憶されておらず、NAND型フラッシュメインメモリ104からデータの読み出しを行う場合、NAND型フラッシュメインメモリ104からデータを読み出す。そして、メインメモリ用MMU109は、アドレス変換テーブル105のうち読み出したデータに関するデータをアドレス関係格納部123に記憶する。また、メインメモリ用MMU109は、書き換え回数データ106のうち読み出したデータに関するデータをアクセス履歴格納部110に記憶する。
MPU101からNAND型フラッシュメインメモリ104へのデータの書き込みを行う場合、メインメモリ用MMU109は、NAND型フラッシュメインメモリ104における論理アドレスを物理位置に変換し、キャッシュライン103b,122bにおける書き込み対象のデータをNAND型フラッシュメインメモリ104に書き込む。加えて、メインメモリ用MMU109は、アドレス関係格納部123に記憶しているアドレス関係データと、アクセス履歴格納部110に記憶されているアクセス履歴データとを更新する。
そして、メインメモリ用MMU109は、アドレス関係格納部123のアドレス関係データと、アクセス履歴格納部110のアクセス履歴データとに基づいて、それぞれアドレス変換テーブル105と書き換え回数データ106を更新する。
例えば、1次キャッシュメモリ103がリード・オンリー(Read Only)の場合、MPU101からキャッシュライン103bへの書き込みはない。この場合、メインメモリ用MMU109は、第1のキャッシュコントローラ108aを用いて、NAND型フラッシュメインメモリ104から読み出したデータを1次キャッシュメモリ103に上書きする。この1次キャッシュメモリ103に記憶されたデータの読み出しが発生すると、第1のキャッシュコントローラ108aは、1次キャッシュメモリ103からデータを読み出す。
一方、1次キャッシュメモリ103がリード・オンリーでない場合、MPU101は、プログラムを実行して得られたデータをキャッシュメモリ103に書き込む。MPU101からキャッシュライン103bにデータの書き込みが発生した場合、キャッシュライン103bのデータをNAND型フラッシュメインメモリ104にライトバック(Write Back)する。この場合、メインメモリ用MMU109は、ライトバックされるデータをキャッシュメモリ103から第1のキャッシュコントローラ108a経由で読み出す。そして、メインメモリ用MMU109は、アクセス履歴格納部110のアクセス履歴データに基づいて、NAND型フラッシュメインメモリ104においてライトバックされる位置として、所定数より少ない書き換え回数のページ又はブロックを選択する。メインメモリ用MMU109は、この選択されたページ又はブロックにライトバックされるデータを記憶し、選択されたページ又はブロックについて、NAND型フラッシュメインメモリ104用の論理アドレスと物理位置との変換関係を示すアドレス関係データを更新し、選択されたページ又はブロックについてアクセス履歴格納部110の書き換え回数を更新する。
その後、必要に応じて、アドレス関係格納部123とアクセス履歴格納部110の内容により、アドレス変換テーブル105と書き換え回数データ106とを更新する。
図32は、本実施の形態に係るメモリ管理装置102のメモリ階層の一例を示す図である。
この例におけるメモリ階層は、MMU107の属する階層と、メインメモリ用MMU109及びキャッシュコントローラ108との属する階層を持つ。
MMU107の階層では、論理アドレスが物理アドレスに変換される。
メインメモリ用MMU109の属する階層では、例えば、アクセス先となるNAND型フラッシュメインメモリ104の物理位置又は物理アドレスが決定される。メインメモリ用MMU109の属する階層では、書き込み回数が所定数以下(例えば最小)のページ又はブロックをアクセスさせる制御が行われる。
そして、メモリ管理装置102は、決定された物理位置に基づいて、NAND型フラッシュメインメモリ104をアクセスする。
図33は、本実施の形態に係るメモリ管理装置102を備えたMPU101が、NAND型フラッシュメインメモリ104のデータ、書き換え回数データ106の一部、アドレス変換テーブル105の一部を記憶する場合の動作の一例を示すフローチャートである。
ステップSS1において、メインメモリ用MMU109は、MPU101によって使用されるNAND型フラッシュメインメモリ104のデータの一部(最初は、先頭から1ギガバイト分などでもよい)のデータを読み出す。キャッシュコントローラ108は、読み出されたデータを、キャッシュメモリ103,122のキャッシュライン103b,122bに書き込む。
ステップSS2において、メインメモリ用MMU109は、NAND型フラッシュメインメモリ104に保管されている書き換え回数データ106の一部(キャッシュメモリ103,122に格納されたデータに対するブロックの書き換え回数など。なお、最初は、先頭から1ギガバイト分などでもよい)を、MPU101内のアクセス履歴格納部110にコピーする。
ステップSS3において、メインメモリ用MMU109は、NAND型フラッシュメインメモリ104に保管されているアドレス変換テーブル105の一部(キャッシュメモリ103,122に格納されたデータに対応するブロックの論理アドレスと物理位置との関係を示すデータなど。なお、最初は、先頭から1ギガバイト分などでもよい)を、MPU101内のメインメモリ用MMU109のアドレス関係格納部123にコピーする。
なお、このステップSS1〜SS3は、自由な順序で実行されてよく、並列に実行されてもよい。
図34は、本実施の形態に係るメモリ管理装置102を備えたMPU101において、1次キャッシュメモリ103又はNAND型フラッシュメインメモリ104からデータを読み出す場合の動作の一例を示すフローチャートである。なお、2次キャッシュメモリ122からデータを読み出す場合についても、1次キャッシュメモリ103の場合と同様である。
ステップTT1において、MMU107及びメインメモリ用MMU109は、読み出し対象の論理アドレスを物理アドレスに変換する。
読み出し対象の物理アドレスが1次キャッシュメモリ103を示す場合、ステップTT2aにおいて、第1のキャッシュコントローラ108aは、物理アドレスに基づいて1次キャッシュメモリ103から読み出し対象のデータを読み出す。
読み出し対象の物理アドレス(物理位置)がNAND型フラッシュメインメモリ104を示す場合、ステップTT2bにおいて、メインメモリ用MMU109は、物理アドレスに対応するデータを、NAND型フラッシュメインメモリ104から読み出す。
ステップTT3bにおいて、メインメモリ用MMU109は、NAND型フラッシュメインメモリ104から読み出したデータを、第1のキャッシュコントローラ108a経由で、1次キャッシュメモリ103に上書きする。
なお、メインメモリ用MMU109は、NAND型フラッシュメインメモリ104から新たに読み出したデータに対応するアドレス関係データ及びアクセス履歴データがそれぞれアドレス関係格納部及びアクセス履歴格納部に記憶されていない場合、NAND型フラッシュメインメモリ104のアドレス変換テーブル105及び書き換え回数データ106に基づいてアドレス関係格納部及びアクセス履歴格納部に新たに読み出したデータに対応するデータを記憶する。
図35は、本実施の形態に係るメモリ管理装置102を備えたMPU101から、1次キャッシュメモリ103のキャッシュライン103bへの上書きが発生し、さらに1次キャッシュメモリ103のデータをNAND型フラッシュメインメモリ104に記憶する場合の動作の一例を示すフローチャートである。なお、2次キャッシュメモリ122への上書きが発生した場合についても、この1次キャッシュメモリ103の場合と同様である。
ステップUU1において、MMU107は、論理アドレスから物理アドレスへの変換を行う。
ステップUU2において、第1のキャッシュコントローラ108aは、物理アドレスに応じて、書き込み対象のデータを、1次キャッシュメモリ103に記憶する。
ステップUU3において、メインメモリ用MMU109は、アドレス関係格納部123のアドレス関係データと、アクセス履歴格納部110のアクセス履歴データとに基づいて、書き換え回数がある値より少ないブロックの位置又は一番書き換えの少ないブロックの位置を、NAND型フラッシュメインメモリ104における書き込み位置として選択する。
ステップUU4において、メインメモリ用MMU109は、NAND型フラッシュメインメモリ104における選択された位置に、書き込み対象のデータを記憶する。
ステップUU5において、メインメモリ用MMU109は、上書き後のキャッシュライン103bに対応するように、アドレス関係格納部123のアドレス関係データを更新し、アクセス履歴格納部110のアクセス履歴データを更新する。
ステップUU6において、メインメモリ用MMU109は、メインメモリ用MMU109に格納されているアドレス関係データと整合するように、NAND型フラッシュメインメモリ104のアドレス変換テーブル105を更新し、また、アクセス履歴格納部110に格納されているアドレス履歴データと整合するように、NAND型フラッシュメインメモリ104の書き換え回数データ106を更新する。例えば、NAND型フラッシュメインメモリ104の書き換え回数データの更新は、MPU101の電源が切られるとき、又は、MPU101のアクセス履歴格納部110の書き換え時に、実行される。
本実施の形態において、メモリ管理装置102は、書き換え回数に基づいて書き換えを行うブロックの物理位置を選択している。しかしながら、これに代えて、メモリ管理装置102は、不良領域又は不良ブロックを避ける制御、NAND型フラッシュメインメモリ104の全領域又は全ブロックを隔たりなくアクセスさせる制御、アクセス先の領域又はブロックの位置が分散されるようにする制御を行うとしてもよい。この場合、アクセス履歴格納部110には、NAND型フラッシュメインメモリ104に記憶されている不良領域又は不良ブロックの発生位置、NAND型フラッシュメインメモリ104の書き換え位置の分布などのデータが記憶される。また、メモリ管理装置102は、各種の制御を自由に組み合わせて、書き換えを行う領域又はブロックの位置を選択するとしてもよい。
本実施の形態において、メモリ管理装置102は、キャッシュメモリ103のデータ入れ替え時に、NAND型フラッシュメインメモリ104のガーベージコレクション処理又は消去のための制御を行うとしてもよい。
本実施の形態において、メインメモリ用MMU109のアドレス関係格納部123とアクセス履歴格納部110とのうち、少なくとも一方について、二次キャッシュメモリを用いてデータを格納するとしてもよい。すなわち、アドレス関係格納部123に記憶されているアドレス関係データは、2次キャッシュメモリ122に格納されるとしてもよい。また、アクセス履歴格納部110に記憶される書き込み回数などを含むアクセス履歴データは、2次キャッシュメモリ122に格納されるとしてもよい。
本実施の形態に係るMPU101のメモリ管理装置102においては、アクセス履歴格納部110に格納されているデータを用いて書き込みを行う対象となるNAND型フラッシュメインメモリ104の物理位置を選択し、ライトバックするアルゴリズムを採用し、このアルゴリズムを実行するプログラムを用いることができる。例えば、書き換え回数の多い領域又はブロックの書き換えを避けるなどのような高度なアルゴリズムを用いることができる。
以上説明した本実施の形態に係るメモリ管理装置102においては、MPU101内で、MMU107、第1のキャッシュコントローラ108a、第1のキャッシュコントローラ108b、キャッシュメモリ103、キャッシュメモリ122、メインメモリ用MMU109、アクセス履歴格納部110が統合された構成が採用されている。すなわち、本実施の形態においては、NAND型フラッシュメインメモリ104のメモリマッピング管理がMPU101のメモリ管理装置102で実行されるアーキテクチャが実現されている。
これにより、メモリ階層において、オーバーヘッドの大きい階層を削除することができる。
本実施の形態においては、一般的なNAND型フラッシュメモリに備えられているメモリコントローラの動作を、MPU101側で実行する。このように、MPUの動作とメモリコントローラの動作とを組み合わせてMPU101で実行することで、メモリ制御を協調させることができる。
本実施の形態においては、多層化されていたメモリ階層を単純化することができ、アクセスに必要な時間、製造時に必要な時間、製造時に必要な費用などの様々なコストを削減することができる。
本実施の形態においては、メモリ階層がシンプルになるため、プログラマはどこの階層でMMU変換、キャッシュメモリの置き換えが発生するかを把握することが容易であり、プログラム・オプティマイズを容易に行うことができる。
本実施の形態においては、MPU101のキャッシュ動作とメインメモリのアクセス動作との間で最適化を容易に実現することができる。
従来の不揮発性メモリに対しては、この不揮発性メモリへのアクセスを制御するメモリコントローラがMPUと別に用意されていた。そして、従来において、MPUが不揮発性メモリにアクセスする場合には、MPUは、I/Oインタフェースを介してメモリコントローラにデータ転送を行い、メモリコントローラは、MPUから受信したデータに基づいて不揮発性メモリへのアクセス制御を行っていた。
これに対して、本実施の形態においては、不揮発性メモリがメインメモリ領域に配置され、オペレーティングシステムは、メインメモリと同じレベルで不揮発性メモリにアクセス可能である。
これにより、本実施の形態においては、I/Oインタフェースを介したデータの転送の必要がなく、高速なアクセスが可能であり、安価な不揮発性メモリをメインメモリとして用いることができる。
(第4の実施の形態)
本実施の形態においては、上記第3の実施の形態の変形例について説明する。
図36は、本実施の形態に係るメモリ管理装置の一例を示すブロック図である。
MPU111には、本実施の形態に係るメモリ管理装置112が備えられている。統合MMU113は、上記第3の実施の形態に係るMMU107とメインメモリ用MMU109とを統合した機能を実現する。
本実施の形態において、1次キャッシュメモリ103のタグ及び2次キャッシュメモリ122のタグは、プロセスIDと論理アドレスとで、それぞれ1次キャッシュメモリ103及び2次キャッシュメモリ122を管理するために用いられる。
本実施の形態においては、プロセッサであるMPU111の統合MMU113により、1次キャッシュメモリ103、2次キャッシュメモリ122、NAND型フラッシュメインメモリ104のメモリマッピング管理が行われ、各種メモリの一括管理が行われる。
図37は、本実施の形態に係るメモリ管理装置112のメモリ階層の一例を示す図である。
この例におけるメモリ階層は、統合MMU113とキャッシュコントローラ108とが同じ階層に属している。メモリ管理装置112は、1次キャッシュメモリ103及び2次キャッシュメモリ122に対するアドレス変換と、NAND型フラッシュメインメモリ104に対するアドレス変換とを統合し、同等のメモリ階層で扱う。メモリ管理装置112は、ある基準にそって、キャッシュメモリ103、キャッシュメモリ122、NAND型フラッシュメインメモリ104のどの領域をアクセスするか決定する。
このメモリ階層では、論理アドレスがNAND型フラッシュメインメモリ104の物理位置に変換される場合、書き込み回数が所定数以下の領域又はブロックをアクセスさせる制御が行われる。
そして、メモリ管理装置112は、決定された物理位置に基づいて、NAND型フラッシュメインメモリ104をアクセスする。
以上説明した本実施の形態においては、上記第3の実施の形態に係るMMU107とメインメモリ用MMU109とを統合することにより、構成がシンプルになり、アクセスに必要な時間コストや製造時に必要な経済コストなどの様々なコストを削減できる。
統合MMU113を用いることにより、1次キャッシュメモリ103及び2次キャッシュメモリ122に対するアドレス変換と、NAND型フラッシュメインメモリ104に対するアドレス変換とを統合することができる。例えば、あるプロセスに関する記憶内容を、なるべくNAND型フラッシュメインメモリ104内の近い位置に記憶することにより、高速アクセスが可能となる。また、例えば、書き換え回数の少ない領域又はブロックだけを選んで一つのプロセスに割り当てることができる。
(第5の実施の形態)
本実施の形態においては、上記第3又は第4の実施の形態に係るメモリ管理装置102,112の変形例について説明する。
図38は、上記図31に示す第3の実施の形態に係るメモリ管理装置102の変形例を示す図である。
上記第3の実施の形態においては、物理位置に基づくNAND型フラッシュメインメモリ104へのアクセスは、メインメモリ用MMU109によって実行している。しかしながら、物理位置に基づくNAND型フラッシュメインメモリ104へのアクセスは、キャッシュコントローラ108が行うとしてもよい。
この場合、メインメモリ用MMU109は、論理アドレスを物理位置に変換する制御を行い、このメインメモリ用MMU109で選択された物理位置に基づいて、キャッシュコントローラ108は、NAND型フラッシュメインメモリ104をアクセスする。なお、本実施の形態において、キャッシュコントローラ108は、メインメモリ用MMU109に代わって、NAND型フラッシュメインメモリ104のアドレス変換テーブル105の読み出し及び更新、書き換え回数データ106の読み出し及び更新をするとしてもよい。
図39は、上記図36に示す第4の実施の形態に係るメモリ管理装置112の変形例を示す図である。
上記第4の実施の形態においては、物理位置に基づくNAND型フラッシュメインメモリ104へのアクセスは、統合MMU113によって実行している。しかしながら、物理位置に基づくNAND型フラッシュメインメモリ104へのアクセスは、キャッシュコントローラ108が行うとしてもよい。
この場合、統合MMU113は、論理アドレスを物理位置に変換する制御を行い、この統合MMU113で選択された物理位置に基づいて、キャッシュコントローラ108は、NAND型フラッシュメインメモリ104をアクセスする。なお、本実施の形態において、キャッシュコントローラ108は、NAND型フラッシュメインメモリ104のアドレス変換テーブル105の読み出し及び更新、書き換え回数データ106の読み出し及び更新をするとしてもよい。
(第6の実施の形態)
本実施の形態においては、上記第3乃至第5の実施の形態に係るメモリ管理装置102,112の適用例に付いて説明する。
図40は、本実施の形態に係るメモリ管理装置の適用例を示すブロック図である。
例えば、ゲーム機や、カーナビゲーションシステムでは、ディスクドライブにより読み出されたデータ又はプログラムがメインメモリに一度書き込まれ、その後、このメインメモリに書き込まれたデータ又はプログラムが多回数リードされる。本実施の形態において、メモリ管理装置120は、ゲーム機に適用される場合について説明するが、カーナビゲーションシステムなどの他の装置に適用される場合も同様である。メモリ管理装置120の代わりに、上記メモリ管理装置102,112を用いるとしてもよい。
ポータブル・ゲーム・コンソール・プロセッサ114は、グラフィクス・プロセッサ115とプロセッサ116とを具備する。
グラフィクス・プロセッサ115、プロセッサ116、2次キャッシュメモリ117、NAND型フラッシュメインメモリ104、ディスクドライブ118はバス119に接続されている。
プロセッサ116は、1次キャッシュメモリ103、2次キャッシュメモリ117をアクセスするための2次キャッシュタグ121、キャッシュコントローラ108、統合MMU113を具備する。
さらに、プロセッサ116は、書き換え回数格納部110を具備するが、この図40では省略している。なお、プロセッサ116は、1次キャッシュメモリ103又は2次キャッシュメモリ117を、書き換え回数格納部110として用いるとしてもよい。
キャッシュコントローラ108は、1次キャッシュメモリ103、2次キャッシュメモリ117へのアクセスを制御する。2次キャッシュメモリ117には、例えば、DRAMを用いることができる。本実施の形態において、2次キャッシュメモリ117は、ポータブル・ゲーム・コンソール・プロセッサ114と分離している。
2次キャッシュメモリ117に対するバンド幅は、NAND型フラッシュメインメモリ104の10倍程度とする。ディスクドライブ118としては、例えば、光ディスクドライブを用いることができる。
本実施の形態において、NAND型フラッシュメインメモリ104への書き込みは、ゲームカートリッジの交換時とし、他の時点ではNAND型フラッシュメインメモリ104はリード・オンリーで利用されるとする。頻繁に書き込まれるデータ又はプログラムコード、頻繁に読み出されるデータ又はプログラムコードは、2次キャッシュメモリ17に格納される。さらに頻繁に読み出されるデータ又はプログラムコードは、1次キャッシュメモリ103に格納される。
なお、例えば、1次キャッシュメモリ103又は2次キャッシュメモリ117に記憶されているデータ又はプログラムコードのうち、使用頻度の低いデータ又はプログラムコードをNAND型フラッシュメインメモリ104に書き込み、NAND型フラッシュメインメモリ104に記憶されているデータ又はプログラムコードのうち、使用頻度の高いデータ又はプログラムコードを1次キャッシュメモリ103又は2次キャッシュメモリ117に記憶するとしてもよい。
本実施の形態では、例えば、1次キャッシュメモリ103は64キロバイト程度であり、2次キャッシュメモリ117は16〜128メガバイト程度であり、NAND型フラッシュメインメモリ104は1ギガバイト程度であるとする。
例えば、グラフィクス・プロセッサ115の処理能力は、1/10バンド幅のNAND型フラッシュメインメモリ104の速度とつりあうか、その2〜3倍程度の能力とする。使用頻度の低いデータは、NAND型フラッシュメインメモリ104から読み出し、使用頻度の高いデータは、1次キャッシュメモリ103又は2次キャッシュメモリ117から読み出すとする。
本実施の形態においては、キャッシュ入れ替え(キャッシュミスなど)時に、NAND型フラッシュメインメモリ104のガーベージコレクション処理やイレースを行う、などのような最適化を実現することができるプロセッサ116を提供することができ、高度な最適化を行うことができる。
なお、2次キャッシュメモリ117のエントリーサイズを1メガバイト程度とすると、NAND型フラッシュメインメモリ104との相性がよくなる。
本実施の形態においては、例えば2重に仮想メモリ変換が行われてオーバーヘッドが大きくなることを防止できる。
本実施の形態においては、プロセッサ116に統合MMU113が備えられることにより、1次キャッシュメモリ103と二次キャッシュメモリ117とNAND型フラッシュメインメモリ104とを一括管理することができる。
そして、本実施の形態では、レジューム時に保存するデータ量を削減することができる。
本実施の形態においては、NAND型フラッシュメインメモリ104にデータ又はプログラムを記憶することにより、ディスクドライブ118へのアクセスを削減でき、待ち時間を削減でき、ユーザの操作性及び満足度を向上させることができる。
本実施の形態においては、二次キャッシュメモリ117(DRAM)よりもメモリ単価の安いNAND型フラッシュメインメモリ104を用いることにより、より多くのデータ又はプログラムを高速にアクセスすることができる。
(第7の実施の形態)
本実施の形態においては、プロセッサとメインメモリとの間に備えられたメモリ管理装置について説明する。
図41は、本実施の形態に係るメモリ管理装置の一例を示すブロック図である。
本実施の形態に係るメモリ管理装置124は、システムバス130経由で、複数のプロセッサ(例えばCodec IP、Graphic IPを含む)1251〜1254と接続されている。メモリ管理装置124は、マルチプロセッサ構成に対して適用される。また、メモリ管理装置124は、例えばNAND型フラッシュメモリなどのような不揮発性のメインメモリ126と接続されている。なお、本実施の形態において、プロセッサの数は1又は2以上で自由に変更可能である。
メインメモリ126では、書き込み及び読み込みは、ページと呼ばれる複数ビット単位で行われる。消去は、ブロックと呼ばれる、複数のページをまとめた単位で一括して行われる。
複数のプロセッサ1251〜1254のうちのいくつかでは、論理アドレスを含むプロセスが実行されている。この例では、プロセッサ1251,1252,1254でプロセス1271,1272,1274が実行されている。なお、プロセス1271,1272,1274は、オペレーティングシステムであってもよい。
複数のプロセッサ1251〜1254のそれぞれは、1次キャッシュメモリ1281〜1284、2次キャッシュメモリ1291〜1294を具備する。
メモリ管理装置124は、ウェアレベリングと、論理アドレスから物理アドレスへの変換を行う。
メモリ管理装置124は、メインメモリ126のページ単位、ページサイズの整数倍単位、ブロック単位、ブロックサイズの整数倍単位でウェアレベリングを行う。ウェアレベリングカウンタは、メインメモリ126のリダンダンシ領域126aに記憶される。リダンダンシ領域126aは、メインメモリ126のページ又はブロック毎に設けられている冗長領域である。メモリ管理装置124は、メモリ空間にマッピングを行う場合に、ウェアレベリングを考慮してメモリ確保を行う。
メモリ管理装置124は、リムーバブルメモリもメインメモリとして扱い、メモリ空間にマッピングする。
このメモリ管理装置124は、複数のプロセッサ1251〜1254側というよりむしろメインメモリ126側に備えられている。しかしながら、メモリ管理装置124は、複数のプロセッサ1251〜1254側に備えられるとしてもよい。
メモリ管理装置124は、命令とデータとで、ページサイズを切り換える。例えば、命令用のページサイズは16キロバイトなどのように小さいサイズとし、データ用のページサイズは512キロバイトなどのように大きいサイズとする。
メインメモリ126は、メモリ管理装置124のページサイズ(プロセス又はOS)と同じメモリページサイズ又はメモリ管理装置124のページサイズの倍数となるメモリページサイズを持つ。
1次キャッシュメモリ1281〜1284及び2次キャッシュメモリ1291〜1294と、メインメモリ126との間では、一括してページの転送が実行される。この一括の転送は、例えば、メインメモリのページ単位、ページサイズの整数倍単位、ブロック単位(例えば、256 kilobyte 〜 512 kilobyte)、又は、ブロックサイズの整数倍単位で行われる。
1次キャッシュメモリ1281〜1284に対するアクセス、及び2次キャッシュメモリ1291〜1294に対するアクセスは論理アドレスに基づいて行われる。システムバス130上でも、論理アドレスが用いられる。
統一的なメモリ管理装置124は、複数のプロセッサ1251〜1254に対して、プロセスレベルの論理アドレスから物理アドレスへの変換、さらに、メインメモリ126のページ単位、ページサイズの整数倍単位、ブロック単位、又は、ブロックサイズの整数倍単位でのウェアレベリングのための論理ページ又は論理ブロックから物理ページ又は物理ブロックへの変換を総合して行う。
本実施の形態においては、図42に示す形式のシステム論理アドレス131が用いられる。このシステム論理アドレス131は、プロセッサIDとプロセスID、プロセス内論理アドレスを含む。なお、プロセッサIDとプロセスIDとのうちの少なくとも一つは変換され(例えばハッシングなどを用いてIDの長さが短くされ)、システム論理アドレス131は、変換後の内容を含むとしてもよい。例えば、プロセッサIDとプロセスIDをハッシングで変換し、システム論理アドレス131は、このハッシングで変換されたビットとプロセス内論理アドレスとを含むとしてもよい。
メインメモリ126は、システム全体で単一のページテーブル126bを記憶する。すなわち、メインメモリ126は、プロセス1271,1272,1274毎のページテーブルを持つのではなく、プロセス1271,1272,1274全体で統一したページテーブル126bを持つ。
本実施の形態においては、メインメモリ126にハードディスクドライブ(HDD)と同じ程度の容量を持つメインメモリ126を使用する。この場合、物理メモリよりも大きなメモリ空間を使用するために2次記憶(スワップアウト)を使用する必要はない。従来においては、物理メインメモリが例えばDRAMであって記憶容量が1GB程度であるが、プロセス毎に4GBの論理メモリ空間を使いたい場合に、より記憶容量の大きいハードディスクドライブ上に2次記憶領域を確保し、スワップイン/スワップアウトを行う必要があった。しかしながら、本実施の形態では、メインメモリ126がハードディスクドライブと同レベル以上の記憶容量を持つため、2次記憶を用いる必要がない。
したがって、装置構成及び動作をシンプルにすることができる。
本実施の形態においては、インスタントON/OFFを行うことができ、レジュームなどを高速化することができる。
従来においては、実行する前にファイルをロードする必要があった。これに対して、本実施の形態においては、キャッシュメモリ1281〜1284,1291〜1294又はメインメモリ126上の実行アドレスにジャンプするのみでよく、実行する前にファイルをロードする必要がない。
(第8の実施の形態)
本実施の形態においては、上記第7の実施の形態の変形例について説明する。
図43は、本実施の形態に係る記憶装置の一例を示すブロック図である。
本実施の形態に係る記憶装置において、複数のメモリ管理装置1241,1242は、ネットワーク133経由で、複数のプロセッサ(Codec IP、Graphic IPを含む)1251〜1254と接続されている。メモリ管理装置1241,1242は、例えばNAND型フラッシュメモリなどのような不揮発性の複数のメインメモリ1261,1262と接続されている。
なお、メモリ管理装置の数、メインメモリの数は、自由に変更可能である。
メインメモリ1261は、上記第7の実施の形態におけるメインメモリ126と同様の特徴を持ち、ウェアレベリングカウンタを記憶するリンダンシ領域1261a、プロセス1271,1272,1274全体で統一したページテーブル1261bを持つ。メインメモリ1262も、このメインメモリ1261と同様の特徴を持つ。
本実施の形態で用いられる論理アドレス134は、図44に示すように、ネットワーク133のIPアドレス又はIPv6アドレス、プロセッサIDとプロセスID、プロセス内論理アドレスを含む。なお、各アドレス及びIDのうちの少なくとも一つは、変換され(例えばハッシングなどを用いてIDの長さが短くされ)、論理アドレス134は、変換後の内容を含むとしてもよい。例えば、IPアドレス又はIPv6アドレス、プロセッサIDとプロセスIDをハッシングで変換し、論理アドレス134は、このハッシングで変換されたビットとプロセス内論理アドレスとを含むとしてもよい。
メインメモリ1261,1262は、メモリ管理装置1241,1242のページサイズと同じメモリページサイズ又はMMU1241,1242のページサイズの整数倍となるメモリページサイズを持つ。
1次キャッシュメモリ1281〜1284及び2次キャッシュメモリ1291〜1294と、メインメモリ1261,1262との間では、一括してページの転送が実行される。この一括の転送は、例えば、メインメモリのページ単位、ページサイズの整数倍単位、ブロック単位(例えば、256 kilobyte 〜 512 kilobyte)、又は、ブロックサイズの整数倍単位で行われる。
本実施の形態において、1次キャッシュメモリ1281〜1284に対するアクセス、及び2次キャッシュメモリ1291〜1294に対するアクセスは、論理アドレスに基づいて実行される。ネットワーク133上でも、論理アドレスが用いられる。
統一的なメモリ管理装置1241,1242は、複数のプロセッサ1251〜1254に対して、プロセスレベルの論理アドレスから物理アドレスへの変換、さらに、不揮発性のメインメモリ1261,1242のページ単位、ページサイズの整数倍単位、ブロック単位、又は、ブロックサイズの整数倍単位でのウェアレベリングのための論理ページ又は論理ブロックから物理ページ又は物理ブロックへの変換を総合して行う。
本実施の形態においては、ネットワーク133経由の広大なメモリ空間において上記第7の実施の形態と同様の効果を得ることができる。
(第9の実施の形態)
本実施の形態においては、上記第7及び第8の実施の形態の変形例について説明する。以下においては、上記第7の実施の形態の変形例について説明するが、上記第8の実施の形態についても同様に変形可能である。
図45は、本実施の形態に係るメモリ管理装置の一例を示すブロック図である。
複数のプロセッサ1351〜1354は、システムバス130経由で、メインメモリ126と接続されている。なお、本実施の形態において、プロセッサの数は自由に変更可能である。
複数のプロセッサ1351〜1354のうちのいくつかでは、論理アドレスを含むプロセスが実行されている。この例では、プロセッサ1351,1352,1354でプロセス1271,1272,1274が実行されている。プロセス1271,1272,1274はオペレーティングシステムであってもよい。
複数のプロセッサ1351〜1354のそれぞれは、1次キャッシュメモリ1361〜1364、2次キャッシュメモリ1371〜1374、メモリ管理装置1381〜1384を具備する。
メモリ管理装置1381〜1384は、ウェアレベリングと、論理アドレスから物理アドレスへの変換を行う。メモリ管理装置1381〜1384は、複数のプロセッサ1351〜1354側に備えられている。
メインメモリ126は、メモリ管理装置1381〜1384のページサイズと同じメモリページサイズ又はメモリ管理装置1381〜1384のページサイズの整数数となるメモリページサイズを持つ。
1次キャッシュメモリ1361〜1364及び2次キャッシュメモリ1371〜1374と、メインメモリ126との間では、一括してページの転送が実行される。この一括の転送は、例えば、メインメモリのブロック(ページの整数倍)単位(例えば、256 kilobyte 〜 512 kilobyte)で行われる。
本実施の形態において、1次キャッシュメモリ1361〜1364に対するアクセス、及び2次キャッシュメモリ1371〜1374に対するアクセスでは物理アドレスが用いられる。システムバス130上では、論理アドレスが用いられる。
複数のプロセッサ1351〜1354毎に備えられるメモリ管理装置1381〜1384は、プロセスレベルの論理アドレスから物理アドレスへの変換、さらに、メインメモリ126のページ単位、ページサイズの整数倍単位又はブロック単位でのウェアレベリングのための論理ページ又は論理ブロックから物理ページ又は物理ブロックへの変換を行う。
以上説明した本実施の形態においては、メモリ管理装置1381〜1384をプロセッサ1351〜1354側に設けた場合であっても、上記第7と同様の効果を得ることができる。
(第10の実施の形態)
本実施の形態では、上記第7の実施の形態の詳細について説明する。
図46は、本実施の形態に係るメモリ管理装置124の構成の一例を示すブロック図である。
NAND型フラッシュメインメモリ126は、物理アドレスに対応する物理ブロック139、ページテーブル126b、メモリ使用情報140、メモリ固有情報141を備える。
各プロセッサ1251〜1254の1次キャッシュメモリ1281〜1284、2次キャッシュメモリ1291〜1294のキャッシュラインサイズと、NAND型フラッシュメインメモリ126のブロックサイズ又はページサイズの整数倍とは、同じサイズであり、データ転送の効率化が図られている。
NAND型フラッシュメインメモリ126において、各種のデータは、例えばデータD1のように複数の物理ブロック139にまたがって存在するとしてもよい。また、例えば複数のデータD1,D2のように、複数のデータが一つの物理ブロック139に存在するとしてもよい。
そして、各データD1,D2は、固有の読み書き頻度情報E1,E2を持つとしてもよい。例えば、各データD1,D2は、スタティック情報とダイナミック情報とのうちの少なくとも一方を備えている。スタティック情報は、当初から決まっている値である。ダイナミック情報は、実際にそのデータが書き換えられた回数、読み出された回数を含む。
例えば、デジタルカメラの画像データのスタティック情報として、撮影された直後に2時間に1回読み出し及び書き込みが行われる旨の情報、撮影されて3日経過後に2週間に一度読み出しが行われ、書き込みは行われない旨の情報、などが記憶される。また、例えば、ウェブブラウザのキャッシュ情報のスタティック情報として、数分に1回書き込み及び読み出しが行われる旨の情報、ある程度以上アクセスされるサイトの情報が1日に1回書き込まれる旨の情報、周期性のアクセスパターンがある場合にはその情報が書き込まれる旨の情報、所定の時間において書き込みが多い旨の情報、などが記憶される。
スタティック情報は、様々なデータの種類に対して、効果的な値を設定する必要がある。このスタティック情報の設定ファイルは、ネットワーク上で共有されるとしてもよい。
ページテーブル126bは、全システムで一つあればよい。あるいは、ページテーブル126bはなくてもよい。
メモリ使用情報140は、各メモリ領域の読み書き回数と、各データの読み書き回数を含む。より詳細に説明すると、例えば、メモリ使用情報140は、各メモリ領域(ページ又はブロック)について、書き換え回数、読み出し回数、この領域内に存在するデータ情報(個数、種類、各データ固有の読み出し回数、書き換え回数などを含む)を具備する。
メモリ固有情報141は、NAND型フラッシュメインメモリ126のページサイズ、ブロックサイズ、書き換え可能回数、読み出し可能回数などを含む。より詳細に説明すると、例えば、メモリ固有情報141は、NAND型フラッシュメインメモリ126のページサイズ、ブロックサイズ、全記憶容量、SLC(Single Level Cell)領域情報(ブロック位置、サイズ、読み出し可能回数(読み出し可能回数の予測値でもよい)、書き込み可能回数(書き込み可能回数の予測値でもよい)などを含む)、MLC(Multi Level Cell)領域情報(ブロック位置、サイズ、読み出し可能回数、書き込み可能回数などを含む)を具備する。
メモリ管理装置124は、各プロセス(OSでもよい)用論理アドレスを物理アドレスに変換し、NAND型フラッシュメインメモリ126用の論理アドレスを物理アドレスに変換する。
また、メモリ管理装置124は、データD1,D2固有の読み書き頻度情報E1,E2、メモリ使用情報140、メモリ固有情報141に基づいて、最適なウェアレベリングを実行する。
メモリ管理装置124は、マイクロプロセッサ142、作業メモリ143、情報レジスタ144、キャッシュメモリ145を具備する。
マイクロプロセッサ142は、情報レジスタ144、作業メモリ143を利用しつつ、メモリ管理を実行する。キャッシュメモリ145は、各プロセッサ1251〜1254からのデータ及びNAND型フラッシュメインメモリ126からのデータの一時保存などに用いられる。なお、キャッシュメモリ145は、外付けのDRAMでもよい。
図47は、マイクロプロセッサ142の機能の一例を示すブロック図である。
マイクロプロセッサ142は、取得機能142a、アドレス変換機能142b、アクセス機能142c、転送機能142dを備える。
複数のプロセッサ1251〜1254のいずれかが、NAND型フラッシュメインメモリ126のデータを読み出す場合、取得機能142aは、複数のプロセッサ1251〜1254のいずれかから、読み出し論理アドレスを取得する。
アドレス変換機能142bは、取得機能142aによって取得された読み出し先論理アドレスを、NAND型フラッシュメインメモリ126の読み出し先物理アドレスに変換する。例えば、NAND型フラッシュメインメモリ126は、複数のグループ属性を持つ領域に分割されており、それぞれのグループ属性がメモリ固有情報141として保有されているとする。この場合、アドレス変換機能142bは、いずれかのプロセッサ上で動作するファイル管理プログラム(プロセス)により定義されたデータD1,D2固有の読み書き頻度情報E1,E2と、メモリ固有情報141とを参照し、データD1,D2固有の読み書き頻度情報E1,E2に対応するグループ属性の領域内に書き込み先物理アドレスを対応させる。
アクセス機能142cは、NAND型フラッシュメインメモリ126から、読み出し先物理アドレスに対応するデータを読み出す。ここで、この読み出されるデータのデータサイズは、NAND型フラッシュメインメモリ126のページサイズの整数倍又はブロックサイズとする。
転送機能142dは、読み出されたデータを、読み出し論理アドレスを発行したプロセッサのキャッシュメモリに転送する。ここで、読み出し論理アドレスを発行したプロセッサのキャッシュメモリのキャッシュサイズは、NAND型フラッシュメインメモリ126のページサイズ、ページサイズの整数倍又はブロックサイズに依存している。
複数のプロセッサ1251〜1254のいずれかが、NAND型フラッシュメインメモリ126へデータを書き込む場合、取得機能142aは、プロセッサから、書き込み先論理アドレスと、書き込みデータとを取得する。ここで、書き込みデータのサイズは、キャッシュサイズとする。
アドレス変換機能142bは、取得機能142aによって取得された書き込み先論理アドレスを、NAND型フラッシュメインメモリ126の書き込み先物理アドレスに変換する。
アクセス機能142cは、NAND型フラッシュメインメモリ126の書き込み先物理アドレスに対応する位置に、書き込みデータを書き込む。
マイクロプロセッサ142のアドレス変換機能142bは、データ固有の読み書き頻度情報、メモリ使用情報140と、メモリ固有情報141とのうちの少なくとも一つに基づいて、ウェアレベリングを行う。
図48は、メモリ管理装置124の転送アルゴリズムの第1の動作の例を示す図である。
メモリ管理装置124のマイクロプロセッサ142は、起動時に、メモリ使用情報140及びメモリ固有情報141を読み込み、情報レジスタ144に格納する。メモリ固有情報141には、NAND型フラッシュメインメモリ126のページサイズ及びブロックサイズが含まれている。各プロセッサ1251〜1254のキャッシュサイズは、NAND型フラッシュメインメモリ126のページサイズ、ページサイズの整数倍、ブロックサイズ、又は、ブロックサイズの整数倍である。
従来から使用されているプロセッサにメモリ管理装置124を適用する場合であって、この従来のプロセッサについてキャッシュサイズを変更できない場合には、マイクロプロセッサ142は、作業メモリ143又はキャッシュメモリ145でバッファリングを行い、プロセッサ1251〜1254のキャッシュサイズとNAND型フラッシュメインメモリ126のページサイズ、ページサイズの整数倍、ブロックサイズ、又は、ブロックサイズの整数倍との差を調整する。例えば、マイクロプロセッサ142は、ページサイズ256kilobyte分のデータを作業メモリ143又はキャッシュメモリ145に読み込み、プロセッサ1251〜1254のいずれかに対して、キャッシュライン4kilobyte分のデータを出力する。
図49は、メモリ管理装置124の転送アルゴリズムの第2の動作の例を示す図である。
メモリ管理装置124のマイクロプロセッサ142は、プロセッサ1252から、1キャッシュライン分のアクセス要求を受信する(Tr19A)。
次に、マイクロプロセッサ142は、アクセス要求に対応するページサイズ、ページサイズの整数倍、ブロックサイズ、又は、ブロックサイズの整数倍のデータを、NAND型フラッシュメインメモリ126から読み出し、キャッシュメモリ145に記憶する(Tr19B)。
次に、マイクロプロセッサ142は、アクセス要求に対応するデータを、キャッシュメモリ145からプロセッサ1252に送信する(Tr19C)。
図50は、メモリ管理装置124の転送アルゴリズムの第3の動作の例を示す図である。
プロセッサ1252は、キャッシュメモリ1282又はキャッシュメモリ1292のデータを書き換える(Tr20A)。
次に、メモリ管理装置124のマイクロプロセッサ142は、キャッシュメモリ1282又はキャッシュメモリ1292の書き換えられたデータをキャッシュアウトし、キャッシュメモリ145に転送する(Tr20B)。
すると、マイクロプロセッサ142は、このデータが持つ読み書き頻度情報、情報レジスタ144に記憶されているメモリ使用情報140及びメモリ固有情報141に基づいて、ウェアレベリングを行い、NAND型フラッシュメインメモリ126の複数の物理ブロックの中から書き込みを行う物理ブロック139を決定する。
マイクロプロセッサ142は、キャッシュメモリ145に記憶されている書き換えられたデータを、決定された物理ブロック139に記憶する(Tr20C)。
この書き込みにおいては、必要に応じて、メモリブロックの移動、ガーベージコレクションが行われる。
図51は、ウェアレベリングの一例を示すブロック図である。
NAND型フラッシュメインメモリ126は、2以上のバンク146a,146bを備える。
マイクロプロセッサ142は、データ(ブロック又はページ)を、順次、一方のバンク146aに追加記憶していく。すなわち、NAND型フラッシュメインメモリ126に対して追記式のデータ書き込みが行われる。
データの削除が発生すると、マイクロプロセッサ142は、バンク146a上の削除対象のデータを削除する。しかしながら、このバンク146aにおける最後の領域にデータが記憶されるまで、順次、追加記憶は継続される。書き込み対象となっているバンク146aでは、途中で削除された部分に書き込みは行われない。したがって、書き込み対象となっているバンク146aにおいてデータの削除が発生すると、この削除された領域のデータが欠けた状態となる。
マイクロプロセッサ142は、一方のバンク146aの最後の領域までデータを記憶すると、このバンク146aのうち削除されていない有効なデータを、他方のバンク146bにガーベージコレクションしながらコピーし、この他方のバンク148bにおいて、コピーされたデータの次から新たなデータを追加記憶していく。また、マイクロプロセッサ142は、一方のバンク146aのデータを他方のバンク146bにコピーした後、一方のバンク146aに対してクリアを行う。その後、同様の処理が繰り返される。
なお、上記のような空き領域を整理する処理は、NAND型フラッシュメインメモリ126におけるメモリ領域のデータを、NAND型フラッシュメインメモリ126の冗長領域に移動させて実現されてもよい。
ここで、メモリ管理装置124のマイクロプロセッサ142で用いられるウェアレベリング・アルゴリズムの具体的動作例について説明する。
まず、マイクロプロセッサ142は、いずれかのプロセッサ又はオペレーティングシステムから、書き込まれるデータを受信する。書き込まれるデータが複数の場合には、書き込み頻度の一番高いデータを基準として用いる。プロセッサ又はオペレーティングシステムが従来型の場合、マイクロプロセッサ142は、データの先頭などを調べて、データの種類を判断する。
例えば、マイクロプロセッサ142は、書き込まれるデータの種別が圧縮された画像データの場合、この書き込まれるデータの書き込み頻度は少ないため、MLC領域を書き換え領域に決定する。または、マイクロプロセッサ142は、書き込まれるデータの種別が圧縮された画像データの場合、すでに書き換え回数が多くなっている空領域を書き換え領域に決定する。
例えば、マイクロプロセッサ142は、書き込まれるデータの種別がウェブブラウザのキャッシュデータの場合、書き込み頻度が高いため、SLC領域を書き換え領域に決定する。
例えば、マイクロプロセッサ142は、SLC領域又はMLC領域の中から、書き換え回数の一番少ない空ブロックを、書き込み領域に決定する。
例えば、マイクロプロセッサ142は、NAND型フラッシュメインメモリ126における全ての空き領域(例えば空きブロック)の書き換え回数が、最大書き込み可能回数の所定の割合(例えば80%など)に達している場合に、すでにデータの書き込まれている領域のうち、スタティック情報に基づく書き換え頻度が少なく、さらにダイナミック情報に基づく書き換え回数も少ない領域を選択し、この選択された領域のデータを、空き領域に記憶する。そして、マイクロプロセッサ142は、この選択された領域のデータを削除する。すなわち、空き領域と選択された領域との間でデータの入れ替えを行う。
本実施の形態において、メモリ管理装置124のマイクロプロセッサ142は、複数のNAND型フラッシュメインメモリ126を管理するとしてもよい。
図52は、複数のNAND型フラッシュメインメモリ126を管理するメモリ管理装置124の一例を示す斜視図である。
一つのメモリ管理装置124と、複数のNAND型フラッシュメインメモリ126とで、一つのメモリユニット147が形成される。図52の例では、3つのメモリユニット147が形成されている。
メモリ管理装置124は、同じメモリユニット147に属する複数のNAND型フラッシュメインメモリ126に対するアクセスを管理する。
さらに、複数のメモリユニット147内に備えられている複数のメモリ管理装置124は、互いに連携して一つのメモリ管理装置にように動作する。
メモリユニット147のメモリ管理装置124は、メモリユニット147内の複数のNAND型フラッシュメインメモリ126に対するECC機能及びRAID機能を備え、ミラーリング及びストライピングを行う。
それぞれのNAND型フラッシュメインメモリ126は、メモリユニット147が通電中(動作中)であっても、ホットスワップ(交換)可能である。複数のNAND型フラッシュメインメモリ126のそれぞれには、ボタン148が備えられている。
ボタン148は、警告出力部(例えばLEDなど)を備える。例えば、警告出力部が第1の色(緑)の場合は、正常状態を表し、第2の色(赤)の場合には交換必要な状態を表す。
ボタン148を押すと、プロセス及びオペレーティングシステムに通知が送信され、アクセスなどが発生していない取り外し安全なときに、ボタン148は、第3の色(青)になり、このボタン148に対応するNAND型フラッシュメインメモリ126は、ホットスワップ可能となる。
ホットスワップ実行時には、ホットスワップを要求するボタン148が押された後、ライトバックが完了した時点で、交換可能であることを示すランプが点灯し、NAND型フラッシュメインメモリ126の交換が行われる。
メモリ管理装置126のマイクロプロセッサ142は、情報レジスタ144に記憶されているメモリ使用情報140とメモリ固有情報141とを参照し、各NAND型フラッシュメインメモリ126の書き換え回数又は読み出し回数とが、メモリ固有情報141に記述されている上限に達したか否か判断する。そして、マイクロプロセッサ142は、書き換え回数又は読み出し回数が上限に達している場合、メモリ交換を通知又は警告する。
本実施の形態において、NAND型フラッシュメインメモリ126のページサイズ又はブロックサイズが大きい場合、プリロードが有効である。
プリロードを行う場合、メモリ管理装置124のマイクロプロセッサ142は、NAND型フラッシュメインメモリ126におけるデータ固有情報E1,E2を参照し、頻繁にアクセスされる可能性の高いデータを、予めキャッシュメモリ145にプリロードしておく。
あるいは、マイクロプロセッサ142は、周期性のあるデータであって、所定の時間にアクセスされる可能性の高いデータを、その所定時間の前にプリロードしておく。
図53は、MMUを備えている既存のプロセッサに対して、本実施の形態に係るメモリ管理装置124を用いたマルチプロセッサシステムの一例を示すブロック図である。
プロセッサ1255は、既存のプロセッサであり、MMU1495、1次キャッシュメモリ1285、2次キャッシュメモリ1295を備え、プロセス1275を実行する。この図53のシステムでは、通常のMMU1495によるアドレス変換と、本実施の形態に係るメモリ管理装置124によるアドレス変換とが混在することになる。この場合、プロセッサ1255のMMU1495は、NAND型フラッシュメインメモリ126へアクセスする場合に、まずNAND型フラッシュメインメモリ126のページテーブル126bをアクセスする。しかしながら、このページテーブル126bは、アドレス変換を行うことなく、変換をスルーする内容とする。例えば、ページテーブル126bでは、変換前のアドレスと変換後のアドレスとが同じに設定されている。これにより、プロセッサ1255のMMU1495ではアドレス変換が行われず、メモリ管理装置124でアドレス変換を行うことが可能となる。
上記の図46に示す本実施の形態に係るメモリ管理装置124を用いたシステムと、従来のマルチプロセッサシステムとの相違点を、以下で説明する。
図54は、一般的な従来のマルチプロセッサシステムの一例を示すブロック図である。
従来のマルチプロセッサシステムでは、既存のプロセッサ1255〜1258とメインメモリ150と2次記憶装置151とがシステムバス130で接続されている。
各プロセッサ1255〜1258は、それぞれ、MMU1495〜1498、1次キャッシュメモリ1285〜1288、2次キャッシュメモリ1295〜1298を具備する。各プロセッサ1255,1256,1258は、それぞれプロセス1275,1276,1278を実行する。
MMU1495〜1498は、論理アドレスと物理アドレスとの間の変換を行う。各プロセッサ1255〜1258から、1次キャッシュメモリ1285〜1288、2次キャッシュメモリ1295〜1298、メインメモリ150、2次記憶装置151のいずれかへのアクセスは、物理アドレスに基づいて行われる。
メインメモリ150には、例えばDRAMなどのような揮発性の記憶装置が用いられる。メインメモリ150は、各プロセス1275〜1278ごとのページテーブル1525〜1528を備える。
2次記憶装置151には、例えば、ハードディスクドライブ、SSD(Solid State Drive)、NAND型フラッシュメモリなどが用いられる。
従来のマルチプロセッサシステムではメインメモリにDRAMなどが用いられているのに対して、本実施の形態に係るマルチプロセッサシステムでは、NAND型フラッシュメインメモリ126がメインメモリとして用いられている。通常、DRAMのビット単価は、NAND型フラッシュメインメモリ126のビット単価よりも高い。したがって、本実施の形態においては、コストを削減させることができる。
従来のマルチプロセッサシステムではメインメモリが揮発性であるのに対して、本実施の形態に係るマルチプロセッサシステムではメインメモリとして不揮発性のNAND型フラッシュメインメモリ126が用いられる。これにより、本実施の形態においては、インスタントオンが可能となり、メインメモリへプログラム又はデータなどのロード時間などを削除することができ、動作速度を向上させることができる。
従来のマルチプロセッサシステムでは、揮発性のメインメモリ150と不揮発性の2次記憶装置151との双方が搭載される。これに対して、本実施の形態に係るマルチプロセッサシステムでは、NAND型フラッシュメインメモリ126を搭載することで、メインメモリを不揮発性にすることができ、ハードディスクなどのような2次記憶装置を除去することができる。本実施の形態においては、メインメモリとしてDRAMを搭載する必要がない。そして、本実施の形態においては、キャッシュとしてDRAMを搭載する場合に、このキャッシュの記憶容量が少なくてもよい。したがって、本実施の形態においては、システム構成及びメモリ管理を簡略化することができ、コストを削減することができる。
従来のマルチプロセッサシステムでは、ページテーブル1525〜1528を共有しなければならず、アクセスネックが発生する。これに対して、本実施の形態に係るマルチプロセッサシステムでは、ページテーブルを共有する必要がなく、アクセスネックを解消することができる。
従来のように、2次記憶装置にDRAM又はSSDを用いた場合、ファイル、SATA(Serial ATA)などの概念が用いられる。この場合、必ずオーバーヘッドが存在する。これに対して、本実施の形態では、データはファイルによって抽象化されることはなく、メモリが直接アクセスされる。したがって、本実施の形態では、データに対するアクセスを効率化できる。
従来のように2次記憶装置にDRAM又はSSDを用いた場合と比べて、本実施の形態では、立ち上り時に、ディスクサーチ時間が必要ないため、立ち上り時間を短縮化できる。本実施の形態では、アプリケーションの立ち上りスピードも高速化できる。本実施の形態では、検索速度及びアプリケーションの実行速度を高速化できる。本実施の形態では、複数のプロセッサ毎にアプリケーションを動作させることができる。本実施の形態では、不揮発性のメインメモリが利用されるため、システムのスリープ時に、バッテリの寿命を考慮する必要がない。本実施の形態では、部品数を削減させることができ、コストを抑制できる。本実施の形態は、マルチプロセッサ環境に容易に適応できる。本実施の形態では、インストールが必要なく、プロセスマイグレーションをなくすことができる。
本実施の形態においては、データ固有の読み書き頻度情報E1,E2、メモリ使用情報140、メモリ固有情報141に基づいて、メモリ管理装置124によって最適なウェアレベリングが行われる。本実施の形態においては、データ固有の読み書き頻度情報E1,E2に基づいてウェアレベリングを行うことにより、SSDよりも効率よくウェアレベリングを行うことができる。
一般的に、NAND型フラッシュメモリの世代が異なる場合には、ページサイズ及びブロックサイズも相違している。本実施の形態において、メモリ管理装置124は、NAND型フラッシュメインメモリ126からメモリ固有情報141を読み出し、このメモリ固有情報141で示されるページサイズ又はブロックサイズに応じた処理を行う。これにより、様々な世代のNAND型フラッシュメモリを、NAND型フラッシュメインメモリ126として用いることができる。本実施の形態において、メインメモリ管理装置124は、NAND型フラッシュメインメモリ126からページサイズ又はブロックサイズを含むメモリ固有情報141を読み出し、NAND型フラッシュメインメモリ126のページサイズ又はブロックサイズと、各プロセッサのキャッシュラインサイズとを合わせることができる。
本実施の形態において、メモリ管理装置124は、NAND型フラッシュメインメモリ126の寿命管理を行い、警告を行う。これにより、不具合の発生を防止することができる。
本実施の形態において、メモリ管理装置124は、複数のNAND型フラッシュメインメモリ126に対するRAID機能を持ち、取り替え換え対象のNAND型フラッシュメインメモリ126のホットスワップを実現することができる。これにより、寿命のつきたNAND型フラッシュメインメモリ126を容易に取り替えることができる。
ここで、複数のプロセッサに対して、複数のNAND型フラッシュメインメモリを備えた場合の仮想記憶アクセスの一例について説明する。
図55は、広いアドレス空間用のポインタを求める処理の一例を示すブロック図である。
ポインタ153は、狭いアドレス空間用のポインタ153aと、狭いアドレス空間用のポインタ153bとを含む。
セグメントテーブル154は、プロセスID155ごとに設けられており、広いアドレス空間用のポインタ156を備える。
例えば、広いアドレス空間用のポインタ157は、狭いアドレス空間用のポインタ153bと、狭いアドレス空間用のポインタ153aによって特定されるセグメントテーブル154上の広いアドレス空間用のポインタ156とを組み合わせることで得られる。なお、広いアドレス空間用のポインタ157は、狭いアドレス空間用のポインタ153bと、狭いアドレス空間用のポインタ153aと、セグメントテーブル54上の広いアドレス空間用のポインタ156とを組み合わせて生成されるとしてもよい。
図56は、複数のキャッシュメモリと複数のNAND型フラッシュメインメモリとで形成される仮想記憶空間の一例を示すブロック図である。
広いアドレス空間用のポインタ157は、プロセッサのキャッシュメモリ1581〜158nと、複数のNAND型フラッシュメインメモリ1591〜159mとによって構成される仮想記憶空間160のいずれかを指す。
これにより、プロセッサのキャッシュメモリ1581〜158nと、複数のNAND型フラッシュメインメモリ1591〜159mとを統合的に扱うことが可能である。
上記各実施の形態に係るメモリ管理装置は、キャッシュがライトバック型の場合及びライトスルー型の場合のいずれにおいても適用可能である。