以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明を省略する場合がある。
<第1の実施の形態>
図1は、第1の実施の形態におけるデータ記憶装置1000の構成を示すブロック図である。
データ記憶装置1000は、メモリ管理ユニット(MMU(Memory Management Unit))100と、DRAM200と、DRAM制御回路210とを含む。
メモリ管理ユニット100は、メモリ管理方式としてのセグメント方式にしたがって、メモリであるDRAM200の状態を管理する。メモリ管理ユニット100は、詳細は後述するが、論理アドレスを物理アドレスに変換するための処理を行う。
DRAM200は、当該DRAM200に格納されているデータを保持するために、オートリフレッシュを行う機能と、セルフリフレッシュを行う機能とを有する。オートリフレッシュは、図示しない外部の回路の指示により行われる。オートリフレッシュは、周知な処理なので詳細な説明は行わない。
特に、DRAM200は、当該DRAM200の一部に対しセルフリフレッシュを行うパーシャルセルフリフレッシュを行う機能を有する。また、DRAM200は、バンクインターリーブ(メモリインタリーブ)によるアクセスに対応するメモリである。バンクインターリーブとは、複数のバンクに対し並行してアクセスすることにより、メモリのアクセスの高速化を行う手法である。なお、バンクインターリーブによる処理は、周知な技術であるので詳細な説明は行わない。
なお、DRAM200において、セルフリフレッシュが行われるために必要な電力は、オートリフレッシュが行われるために必要な電力より小さい。
本明細書において、「アクセス」とは、データの格納(記憶)およびデータの読出しの各々の総括的な表現である。
なお、メモリ管理ユニット100が管理の対象とするメモリは、DRAMに限定されず、データを保持するために、定期的にオートリフレッシュを行う必要がある揮発性メモリであれば、DRAM以外の揮発性メモリであってもよい。
図2は、DRAM200を説明するための図である。
図2には、説明のために、DRAM200を管理するためのセグメントテーブルT10を示す。セグメントテーブルT10は、詳細は後述するが、複数のセグメントを含む。セグメントは、論理アドレスから物理アドレスへの変換を行うための情報を示す。なお、本実施の形態におけるセグメントは、さらに、領域を確保するための情報を示す。
DRAM200は、行列状に配置されるu(4以上の整数)個の記憶領域C10を含む。当該u個の記憶領域C10は、n(2以上の整数)行p(2以上の整数)列の行列(以下、領域行列という)を構成する。領域行列におけるp個の列の各々に対応するn個の記憶領域C10により、1つのバンクが形成される。
すなわち、DRAM200は、p個のバンクを含む。
p個のバンクは、それぞれ、領域行列のp個の列に対応する。p個のバンクの各々は、該バンクに対応する、領域行列の列に対応するn個の記憶領域により形成される。本実施の形態では、p=8であるとする。すなわち、DRAM200は、一例として、8個のバンク(バンクBK0,BK1,BK2,BK3,BK4,BK5,BK6,BK7)を含むとする。
なお、DRAM200に含まれるバンクの数は、8に限定されず、例えば、4、16、24等であってもよい。
u個の記憶領域C10の各々は、ロウアドレスおよびカラムアドレスにより特定される。
なお、DRAM200は、複数のDRAMから構成されていてもよい。また、物理メモリ空間において、u個の記憶領域C10は行列状に配置されていなくてもよい。この場合、図2に示されるu個の記憶領域C10は、論理メモリ空間において、行列状に配置される。
すなわち、DRAM200は、物理メモリ空間または論理メモリ空間において行列状に配置されるu個の記憶領域C10を含む。
DRAM200では、セグメントにより確保される1以上の記憶領域C10に対してアクセスが許可される。以下においては、セグメントにより確保される記憶領域C10を、確保領域ともいう。確保領域は、アクセスが可能な領域である。また、以下においては、セグメントにより確保されていない記憶領域C10を、不確保領域ともいう。不確保領域は、アクセスが不可な領域である。
また、以下においては、DRAM200の全ての記憶領域C10を、全記憶領域ともいう。以下においては、DRAM200の全ての記憶領域C10の合計容量を、最大記憶容量ともいう。すなわち、全記憶領域の容量は、最大記憶容量である。
u個の記憶領域C10のうち、領域行列におけるn個の行の各々に対応するp個の記憶領域C10により行に対応する領域(以下、単位領域ともいう)が形成される。すなわち、領域行列におけるn個の行の各々に対応するp個の記憶領域C10により、1つの単位領域が形成される。単位領域は、バンクインターリーブによるアクセスの対象となる領域である。u個の記憶領域C10により、n個の単位領域が形成される。つまり、メモリとしてのDRAM200は、n個の単位領域を含む。
n個の単位領域は、それぞれ、領域行列のn個の行に対応する。また、n個の単位領域の各々は、該単位領域に対応する、領域行列の行に対応するp個の記憶領域により形成される。
DRAM200は、単位領域RW[1],RW[2],・・・,RW[n]を含む。
以下においては、単位領域RW[1],RW[2],・・・,RW[n]の各々を、単に、単位領域RWともいう。すなわち、DRAM200は、n個の単位領域RWを含む。つまり、DRAM200の記憶領域全体は、n個の単位領域RWに分割される。n個の単位領域RWの各々の容量は同じである。
また、セグメントテーブルT10を構成するセグメントの数は、単位領域RWの数と等しい。
すなわち、セグメントテーブルT10は、セグメントSG[1],SG[2],・・・,SG[n]を含む。セグメントSG[1],SG[2],・・・,SG[n]には、それぞれ、論理アドレスLAD[1],LAD[2],・・・,LAD[n]が対応づけられる。
以下においては、セグメントSG[1],SG[2],・・・,SG[n]の各々を、単に、セグメントSGともいう。すなわち、セグメントテーブルT10は、n個のセグメントSGから構成される。詳細は後述するが、セグメントSGは、メモリとしてのDRAM200に対するアクセスに必要な情報を示す。すなわち、セグメントSGは、メモリとしてのDRAM200に対するアクセスに必要なものである。
なお、セグメントテーブルT10を構成するセグメントの数は、単位領域RWの数と異なっていてもよい。例えば、1つのセグメントSGが、複数の単位領域RWに対応づけられていてもよい。
なお、領域行列の行および列は、それぞれ、単位領域およびバンクに対応するとしたが、これに限定されない。領域行列の行および列は、それぞれ、バンクおよび単位領域に対応してもよい。
また、以下においては、論理アドレスLAD[1],LAD[2],・・・,LAD[n]の各々を、単に、論理アドレスLADともいう。
また、本実施の形態では、n個の単位領域RWの各々は、一例として、8個の記憶領域C10から構成されるとする。各単位領域RWを構成する8個の記憶領域C10の各々は、バンクに対応する領域である。以下においては、バンクに対応する記憶領域C10を、バンク対応領域ともいう。
例えば、単位領域RW[1]において、バンクBK0に対応する記憶領域C10は、バンクBK0に対応するバンク対応領域である。
n個の単位領域RWの各々は、当該単位領域RWに対応するセグメントSGが示す各種情報により管理される。
図3は、セグメントSGを説明するための図である。
図3を参照して、セグメントSGは、有効判定情報FGと、物理アドレスSDと、確保容量CPとを示す。有効判定情報FGは、当該有効判定情報FGを示すセグメントSGが、有効であるか否かを示す情報である。有効判定情報FGは、「有効」または「無効」を示す。有効判定情報FGが「有効」を示す場合、当該有効判定情報FGを示すセグメントSGは、有効である。有効判定情報FGが「無効」を示す場合、当該有効判定情報FGを示すセグメントSGは、無効である。
なお、初期状態では、セグメントテーブルT10に含まれるn個のセグメントSGの各々が示す有効判定情報FGは、「無効」を示す。
すなわち、n個のセグメントの各々は、該セグメントが有効であるか否かを示す有効判定情報FGを示す。
物理アドレスSDは、n個の単位領域RWのいずれかの先頭アドレス(開始アドレス)である。各単位領域RWの先頭アドレスは、図2のロウアドレスに対応する。すなわち、セグメントSGが示す物理アドレスSDにより特定される単位領域RWは、当該セグメントSGに対応づけられる。n個のセグメントSGの各々が示す物理アドレスSDは、互いに異なる単位領域RWの先頭アドレスである。
これにより、n個のセグメントSGは、それぞれ、n個の単位領域RWに対応づけられる。すなわち、n個の単位領域RWは、それぞれ、メモリとしてのDRAM200に対するアクセスに必要なn個のセグメントに対応づけられる。また、n個のセグメントSGの各々は、該セグメントSGに対応する単位領域RWの先頭アドレス(物理アドレスSD)を示す。
ここで、一例として、セグメントSG[1]が示す物理アドレスSDが、単位領域RW[2]の先頭アドレスであり、セグメントSG[n]が示す物理アドレスSDが、単位領域RW[1]の先頭アドレスであるとする。
この場合、図2のように、一例として、セグメントSG[1]は単位領域RW[2]に対応づけられており、セグメントSG[n]は単位領域RW[1]に対応づけられている。前述したように、各セグメントSGには、論理アドレスLADが対応づけられる。
したがって、セグメントテーブルT10を用いることにより、DRAM200において、物理アドレスが連続していないアクセス対象の各記憶領域C10に対し、連続した論理アドレスによりアクセスすることが可能となる。
確保容量CPは、当該確保容量CPを示すセグメントSGに対応する単位領域RWにおいて、当該セグメントSGが確保する容量である。
なお、初期状態では、セグメントテーブルT10に含まれるn個のセグメントSGの各々が示す確保容量CPは、0(バイト)に設定されている。
セグメント方式では、セグメントSGが示す確保容量CPの最大容量は、DRAM200の容量により可変である。
ここで、一例として、セグメントSG[n]が示す物理アドレスSDが、単位領域RW[1]の先頭アドレス(開始アドレス)であるとする。また、確保容量CPが、一例として、4つ分の記憶領域C10の合計容量を示すとする。この場合、DRAM200の単位領域RW[1]において、バンクBK0〜BK3にそれぞれ対応する4つのバンク対応領域(記憶領域C10)が、確保領域である。
すなわち、確保容量CPは、該確保容量CPを示すセグメントSGが確保する記憶領域である確保領域を特定するための特定情報である。つまり、n個のセグメントSGの各々は、確保領域を特定するための特定情報(確保容量CP)を示す。
つまり、n個のセグメントSGの各々は、該セグメントに対応する単位領域を形成するp個の記憶領域のうち該セグメントが確保する記憶領域である確保領域を特定するための特定情報を示す。
再び、図1を参照して、メモリ管理ユニット100は、アドレス変換回路110と、制御部120とを備える。
アドレス変換回路110は、詳細は後述するが、論理アドレスを物理アドレスに変換するための処理を行う。
制御部120は、セグメント設定部121と、消費電力制御部122と、メモリ容量監視部123と、容量設定部124とを含む。
セグメント設定部121は、DRAM200を管理するための前述のセグメントテーブルT10を有する。
メモリ容量監視部123は、詳細は後述するが、セグメントにより確保される領域の容量を監視している。
容量設定部124は、詳細は後述するが、セグメントSGの確保容量CPを設定するための処理を行う。
消費電力制御部122は、詳細は後述するが、セグメントテーブルT10を随時監視し、未使用バンクがある場合、DRAM200の消費電力を抑えるための処理を行う。
アドレス変換回路110が行う処理は、メモリ管理ユニット(MMU)が行う周知な処理であるため、詳細な説明は繰り返さない。以下、簡単に説明する。
アドレス変換回路110は、外部のCPU(Central Processing Unit)等から送信されるメモリアクセス要求RQを受信する。メモリアクセス要求RQは、DRAM200における特定の単位領域RWにアクセスするための要求である。メモリアクセス要求RQには、アクセス対象の単位領域RWに対応する論理アドレスLADが示される。
また、メモリアクセス要求RQには、データ格納指示およびデータ読出し指示のいずれかが示される。データ格納指示は、データを格納するための指示である。データ読出し指示は、データを読み出すための指示である。なお、メモリアクセス要求RQにデータ格納指示が示される場合、当該メモリアクセス要求RQに格納対象のデータも付加される。
アドレス変換回路110は、メモリアクセス要求RQを受信する毎に、アドレス変換処理を行う。
アドレス変換処理では、アドレス変換回路110が、セグメントテーブルT10を参照して、メモリアクセス要求RQに示される論理アドレスLADに対応づけられるセグメントSGを選択する。
そして、アドレス変換回路110は、選択したセグメントSGが示す物理アドレスSDを、アクセス対象の単位領域RWの物理アドレスとして取得する。すなわち、アドレス変換回路110は、メモリアクセス要求RQに示される論理アドレスLADを、物理アドレスに変換する。
セグメント設定部121は、セグメントテーブルT10において、アドレス変換回路110により選択されたセグメントSGの有効判定情報FGが「無効」を示す場合、当該有効判定情報FGが「有効」を示すように、有効判定情報FGを変更する。
また、詳細は後述するが、セグメント設定部121は、有効判定情報FGの変更とともに、アドレス変換回路110により選択されたセグメントSGの確保容量CPの値を設定する。
これにより、選択されたセグメントSGが更新されるとともに、セグメントテーブルT10が更新される。
すなわち、セグメント設定部121は、セグメントの更新が必要な処理であって、かつ、単位領域RWに対してアクセスを行うための処理が行われる毎に、更新が必要な該セグメントが示す特定情報(確保容量CP)を更新する。ここで、セグメントの更新が必要な処理であって、かつ、単位領域に対してアクセスを行うための処理は、セグメントの更新が必要となるメモリアクセス要求RQを用いて行われる上記のアドレス変換処理である。
すなわち、セグメントの更新が必要な処理であって、かつ、単位領域に対してアクセスを行うための処理は、メモリ(DRAM200)の状態の変化を伴う、メモリ(DRAM200)に対してアクセスを行うための処理である。
セグメント設定部121が、更新が必要な該セグメントが示す特定情報(確保容量CP)を更新する処理は、p個のバンクのうち、アクセス対象のバンクを動的に決定(設定)する処理である。
そして、アドレス変換回路110は、メモリアクセス要求RQが示す論理アドレスLADを、取得した物理アドレスに置き換えることによりメモリアクセス要求RQAを生成し、当該メモリアクセス要求RQAを、DRAM制御回路210へ送信する。すなわち、メモリアクセス要求RQAは、メモリアクセス要求RQと比較して、論理アドレスLADの代わりに取得された物理アドレスを示す点のみが異なる。
DRAM制御回路210は、メモリアクセス要求RQAにしたがって、DRAM200にアクセスする。
具体的には、メモリアクセス要求RQAがデータ格納指示を示す場合、DRAM制御回路210は、メモリアクセス要求RQAに付加されるデータを、DRAM200に格納するためのデータ格納処理を、バンクインターリーブを用いて行う。当該データ格納処理において、データが格納される領域は、メモリアクセス要求RQAが示す物理アドレスに対応する単位領域RWである。
一方、メモリアクセス要求RQAがデータ読出し指示を示す場合、DRAM制御回路210は、DRAM200からデータを読み出すためのデータ読出し処理を、バンクインターリーブを用いて行う。当該データ読出し処理において、データが読み出される領域は、メモリアクセス要求RQAが示す物理アドレスに対応する単位領域RWである。
データ読出し処理において、DRAM制御回路210は、読出したデータを、アドレス変換回路110を介して、外部のCPU等へ送信する。
なお、詳細は後述するが、DRAM制御回路210は、後述するアクセス領域制限指示を受信した場合、DRAM200のうち、アクセス領域制限指示により指定される領域のみにアクセスする。
なお、従来のセグメント方式では、メモリにアクセスが行われている期間において、セグメントにより確保される領域の容量は固定であった。
一方、本実施の形態では、DRAM200の容量が固定であり、DRAM200に対しアクセスが行われている期間において、セグメントSGが示す確保容量CPを、動的に変化させる。すなわち、各単位領域RWにおいて、アクセスが許可される記憶領域C10の数を、動的に変化させる。つまり、DRAM200のアクセスにおいて、ロウアドレスは固定とし、カラムアドレス(バンク)を変化させる。
つまり、本実施の形態では、バンクインターリーブによりアクセスの対象となるバンク対応領域の数を変化することによって、バンク全体のアクセスが許可されない当該バンクを発生させる。
本実施の形態では、確保容量CPを、バンク対応領域の容量単位で、段階的に切替える。バンクインターリーブによりメモリにアクセスする場合、アクセス効率を落とさずにメモリアクセスするには、最低4バンクが必要である。
つまり、8バンク構成のメモリでは、確保容量CPに設定される容量は、5種類の容量のいずれかである。当該5種類の容量は、それぞれ、4,5,6,7,8個のバンク対応領域の容量である。
本実施の形態では、説明を簡単にするために、確保容量CPに設定される容量を、4個のバンク対応領域の容量、8個のバンク対応領域の容量(単位領域RWの容量)の2種類として説明する。以下においては、単位領域RWの容量を、単位領域最大容量ともいう。
メモリ容量監視部123は、所定時間(例えば、1マイクロ秒)経過毎に、DRAM200における全ての確保領域の合計容量を監視するための容量監視処理を行う。すなわち、メモリ容量監視部123は、DRAM200における全ての確保領域の合計容量を、随時、監視している。
容量監視処理では、メモリ容量監視部123が、セグメントテーブルT10に含まれるn個のセグメントSGのうち、有効判定情報FGが「有効」を示す全てのセグメントSGを特定する。以下においては、有効判定情報FGが「有効」を示すセグメントSGを、有効セグメントともいう。
そして、メモリ容量監視部123は、全ての有効セグメントの各々が示す確保容量CPを加算することにより、DRAM200における全ての確保領域の合計容量を算出する。以下においては、DRAM200における全ての確保領域の合計容量を、確保領域合計容量ともいう。
メモリ容量監視部123は、確保領域合計容量を算出する毎に、確保領域合計容量を、容量設定部124へ通知する。そして、この容量監視処理は終了する。
なお、容量監視処理では、DRAM200の最大記憶容量に対する、確保領域合計容量の割合を、容量確保率として算出してもよい。
ここで、一例として、最大記憶容量は、1000メガバイトであるとする。また、一例として、確保領域合計容量は、500メガバイトであるとする。この場合、容量確保率は、0.5(50%)である。
ここで、仮に、DRAM200の容量確保率が50%であるとする。この場合、例えば、n個のセグメントSGの各々が示す確保容量CPは、当該確保容量CPを示すセグメントSGに対応する単位領域RWの容量の50%となる。
ここで、DRAM200が、一例として、8個のバンクを含むとする。この場合、DRAM200の全記憶領域における4バンクを用いて、DRAM200をインターリーブにより動作させることが可能である。この場合、n個のセグメントSG全てが有効である。
つまり、物理メモリ空間においては(実際には)、DRAM200の全記憶領域の半分のみが確保領域であり、当該全記憶領域の残りの半分が、データの格納が可能な状態であるにも関わらず、利用されていない。
以下においては、単位領域RWにおいて、k(自然数)個のバンク対応領域を用いたインターリーブによる動作を、kバンクインターリーブ動作ともいう。例えば、単位領域RWにおいて、4個のバンク対応領域を用いたインターリーブによる動作を、4バンクインターリーブ動作ともいう。
しかしながら、n個のセグメントSGが有効であるため、論理メモリ空間においては、DRAM200の全記憶領域が利用されているとみなされる。そのため、DRAM200に、さらなる、データの格納が不可能になってしまう。
これを防止するために、本実施の形態では、DRAM200における確保領域合計容量に基づいて、確保容量CPを、第1容量および第2容量のいずれかに設定するための処理(以下、容量設定処理という)が行われる。
ここで、第1容量は、一例として、4個のバンク対応領域の容量であるとする。第2容量は、一例として、単位領域RWの容量(単位領域最大容量)であるとする。すなわち、第2容量は、8個のバンク対応領域の容量であるとする。つまり、特定情報としての確保容量CPは、バンクに対応する1つの記憶領域の容量単位で設定される。
なお、第2容量は、8個のバンク対応領域の容量に限定されず、4個のバンク対応領域の容量より大きい容量であればよい。例えば、第2容量は、7個のバンク対応領域の容量であってもよい。
本実施の形態では、容量設定処理により、データの格納が可能な記憶領域C10が存在するにも関わらず、セグメントSGの確保容量CPを設定できない状態を防ぐ。
具体的には、メモリ容量監視部123が、確保領域合計容量を容量設定部124に通知する毎に、容量設定処理が行われる。
図4は、容量設定処理のフローチャートである。
図4を参照して、ステップS110では、容量設定部124が、最新の確保領域合計容量が所定の第1閾値TH1以下であるか否かを判定する。第1閾値TH1は、DRAM200の最大記憶容量の半分未満の値である。すなわち、第1閾値TH1は、DRAM200のu個の記憶領域C10の合計容量の半分未満の値である。
第1閾値TH1は、一例として、DRAM200の最大記憶容量の8分の3とする。なお、第1閾値TH1は、最大記憶容量の8分の3に限定されず、例えば、最大記憶容量の8分の2〜最大記憶容量の8分の3の範囲の値であってもよい。
すなわち、容量設定部124は、メモリの確保状態に関する所定条件が満たされるか否かを判定する。この場合、メモリの確保状態に関する所定条件は、最新の確保領域合計容量が所定の第1閾値TH1以下であるという条件である。すなわち、メモリの状態に関する所定条件は、各セグメントSGが示す最新の特定情報(確保容量CP)により特定される全ての確保領域の合計容量が、所定の第1閾値TH1以下であるという条件である。
容量設定部124は、上記所定条件が満たされる場合、すなわち、確保領域合計容量が所定の第1閾値TH1以下である場合(ステップS110でYES)、ステップS121の処理を行う。
ステップS121では、容量設定部124は、セグメントSGの確保容量CPを第1容量に設定するための第1容量設定指示を、セグメント設定部121へ送信する。
セグメント設定部121は、第1容量設定指示を受信した場合、後述の第2容量設定指示を受信するまでは、前述のアドレス変換処理においてアドレス変換回路110により選択されたセグメントSGの確保容量CPを第1容量に設定する。
消費電力制御部122は、セグメントテーブルT10に含まれる各セグメントSGの状態を常に監視している。
セグメントSGの確保容量CPが第1容量に設定された場合、消費電力制御部122は、アクセス対象の領域を制限するためのアクセス領域制限指示を、DRAM制御回路210へ送信する。
DRAM制御回路210は、アクセス領域制限指示を受信した場合、当該アクセス領域制限指示により指定される領域のみにアクセスする。
ここで、第1容量は、一例として、4個のバンク対応領域の容量であるとする。この場合、消費電力制御部122が送信するアクセス領域制限指示は、単位領域RWに含まれる8個のバンク対応領域のうちバンクBK0〜3に対応するバンク対応領域のみにアクセスするための指示である。また、DRAM制御回路210は、一例として、単位領域RW[2]にアクセスするためのメモリアクセス要求RQAを受信したとする。
この場合、DRAM制御回路210は、アクセス領域制限指示およびメモリアクセス要求RQAにしたがって、単位領域RW[2]に含まれる8個のバンク対応領域のうちバンクBK0〜3に対応するバンク対応領域のみにアクセスする。
この場合、DRAM制御回路210は、前述したメモリアクセス要求RQAにしたがって、当該第1容量に設定されたセグメントSGに対応する単位領域RWにアクセスする場合、当該単位領域RWのうち、第1容量に対応する部分のみにアクセスする。
一方、容量設定部124は、確保領域合計容量が第1閾値TH1より大きい場合(ステップS110でNO)、ステップS122の処理を行う。
ステップS122では、容量設定部124は、セグメントSGの確保容量CPを第2容量に設定するための第2容量設定指示を、セグメント設定部121へ送信する。
セグメント設定部121は、第2容量設定指示を受信した場合、第1容量設定指示を受信するまでは、前述のアドレス変換処理において、アドレス変換回路110により選択されたセグメントSGの確保容量CPを第2容量に設定する。
すなわち、制御部120(容量設定部124およびセグメント設定部121)が行うステップS121,S122の処理は、前記p個のバンクのうち、アクセス対象のバンクを動的に決定(設定)するための処理である。つまり、制御部120(容量設定部124およびセグメント設定部121)が行う容量設定処理は、前記p個のバンクのうち、アクセス対象のバンクを動的に決定(設定)する処理である。言い換えれば、制御部120が行う容量設定処理は、メモリ(DRAM200)のうち、アクセス対象とする、該メモリの一部を動的に決定する処理である。
消費電力制御部122は、他の処理とは独立して、セグメントテーブルT10を用いた消費電力制御処理を常時行っている。すなわち、消費電力制御部122は、セグメントテーブルT10を、随時監視している。
図5は、消費電力制御処理のフローチャートである。
ステップS210では、消費電力制御部122が、最新のセグメントテーブルT10を参照して、未使用バンクが存在するか否かを判定する。未使用バンクとは、当該未使用バンクを構成する全ての記憶領域C10が不確保領域であるバンクである。すなわち、未使用バンクは、当該未使用バンクを構成する全ての記憶領域C10が、アクセス不可なバンクである。言い換えれば、未使用バンクは、アクセス対象に決定(設定)されていないバンク、すなわち、アクセス対象でないバンクである。
例えば、図2のバンクBK7を構成するn個の記憶領域C10が、不確保領域である場合、バンクBK7は未使用バンクである。
具体的には、消費電力制御部122は、セグメントテーブルT10が示すn個のセグメントSGがそれぞれ示すn個の確保容量CPの全てが、第2容量を示さないか否かを判定する。当該n個の確保容量CPの全てが第2容量を示さない場合は、例えば、当該n個の確保容量CPの各々が、第1容量または0が設定されている場合である。
消費電力制御部122は、当該n個の確保容量CPの全てが第2容量を示さない場合、未使用バンクが存在すると判定する。一方、消費電力制御部122は、当該n個の確保容量CPの少なくとも1つが第2容量を示す場合、未使用バンクが存在しないと判定する。
ステップS210において、YESならば処理はステップS220に移行する。一方、ステップS210において、NOならば、再度ステップS210の処理が行われる。
すなわち、メモリ(DRAM200)の確保状態の変化を伴う、メモリに対してアクセスを行うための処理が行われる毎に、メモリの確保状態に関する所定条件が満たされた場合であって、かつ、p個のバンクのうちアクセス対象でない(アクセスが不可な)未使用バンクが存在する場合、制御部120(消費電力制御部122)により、ステップS220の消費電力低減処理が行われる。
上記のメモリの確保状態に関する所定条件とは、最新の確保領域合計容量が所定の第1閾値TH1以下であるという条件である。すなわち、メモリの確保状態に関する所定条件は、各セグメントSGが示す最新の特定情報(確保容量CP)により特定される全ての確保領域の合計容量が、所定の第1閾値以下であるという条件である。
なお、前述したように、メモリ(DRAM200)の状態の変化を伴う、メモリに対してアクセスを行うための処理は、セグメントの更新が必要な処理であって、かつ、単位領域に対してアクセスを行うための処理である。
ステップS220では、消費電力制御部122により消費電力低減処理が行われる。消費電力低減処理では、消費電力制御部122が、未使用バンクにセルフリフレッシュを行うためのセルフリフレッシュ指示(コマンド)を、DRAM制御回路210を介して、DRAM200へ送信する。そして、この消費電力低減処理は終了する。
DRAM200は、受信したセルフリフレッシュ指示にしたがって、当該セルフリフレッシュ指示により指定される当該未使用バンクに対しセルフリフレッシュを行う。すなわち、DRAM200は、パーシャルセルフリフレッシュを行う。すなわち、消費電力低減処理は、未使用バンクに対しセルフリフレッシュが行われるよう消費電力制御部122(制御部120)がメモリ(DRAM200)を制御する処理である。
なお、バンクBK0〜BK7のうち、セルフリフレッシュが行われた未使用バンク以外のバンクに対しては、前述したオートリフレッシュが行われる。セルフリフレッシュが行われる時間の間隔と、オートリフレッシュが行われる時間の間隔は、ほぼ同等であるとする。前述したように、セルフリフレッシュが行われるために必要な電力は、オートリフレッシュが行われるために必要な電力より小さい。
したがって、DRAM200に記憶されているデータを保持するための処理を行いつつ、未使用バンクの消費電力を低減することができる。すなわち、消費電力低減処理は、該未使用バンクの消費電力を、該未使用バンク以外のバンクより低くするよう消費電力制御部122(制御部120)がメモリ(DRAM200)を制御する処理である。
セルフリフレッシュが行われている未使用バンクは、アクセス不能であるため、論理メモリ空間においては、当該未使用バンクは使用されているとみなされる。
なお、消費電力制御部122は、DRAM200における単位時間(例えば、1時間)当たりの消費電力の増加を防ぐために、セルフリフレッシュ指示を送信した後、所定時間(例えば、1秒)経過するまでは、再度、セルフリフレッシュ指示を、DRAM制御回路210へ送信しない。そして、この消費電力低減処理は終了し、再度、ステップS210の処理が行われる。
次に、メモリ管理ユニット100の動作の一例を説明する。
図6は、メモリ管理ユニット100の動作の一例を説明するための図である。
ここで、メモリ管理ユニット100に対応するDRAM200は、一例として、8バンクで構成されるとする。なお、メモリ管理ユニット100において、前述した、容量監視処理、図4の容量設定処理および図5の消費電力制御処理が行われているとする。
図6を参照して、縦軸は、メモリ容量監視部123が随時算出する、前述の確保領域合計容量を示す。図6において、「MAX」とは、DRAM200の最大記憶容量である。「MAX/2」とは、DRAM200の全記憶領域の半分の容量である。「TH1」は、前述の第1閾値TH1である。すなわち、第1閾値TH1は、一例として、DRAM200のu個の記憶領域C10の合計容量の半分未満の値である。
なお、少なくとも1つのセグメントSGが有効になる毎に、確保領域合計容量が変化する。
期間T1では、確保領域合計容量は、最大記憶容量の2分の1以下である。そのため、図4のステップS110でYESと判定され、前述のステップS121の処理が行われる。これにより、消費電力制御部122は、アクセス対象の領域を制限するためのアクセス領域制限指示を、DRAM制御回路210へ送信する。
DRAM制御回路210は、アクセス領域制限指示を受信した場合、当該アクセス領域制限指示により指定される領域のみにアクセスする。ここで、アクセス領域制限指示は、一例として、単位領域RWのうちバンクBK0〜3に対応するバンク対応領域のみにアクセスするための指示である。
この場合、図5の消費電力制御処理により、未使用バンク(バンクBK4〜7)が存在すると判定され(S210でYES)、ステップS220の消費電力低減処理が行われる。
この消費電力低減処理により、DRAM200は、バンクBK4〜7に対しセルフリフレッシュを行う。これにより、DRAM200に記憶されているデータを保持するための処理を行いつつ、未使用バンクの消費電力を低減することができる。
図7は、期間T1におけるDRAM200の状態の一例を示す図である。
図7において、確保領域とは、前述したので詳細な説明は繰り返さない。
前述したように、セルフリフレッシュが行われている未使用バンクは、アクセス不能であるため、論理メモリ空間においては、当該未使用バンクは使用されているとみなされる。
ここで、例えば、DRAM200が8バンクインターリーブ動作を行っており、セグメントSGの確保容量CPが8個のバンク対応領域の容量に設定されているとする。この場合、仮に、DRAM200が4バンクインターリーブ動作を行うには、セグメントを2つ使用する必要がある。このため、実際の確保容量に対して、論理メモリ空間で見える容量は、4バンクインターリーブ時では、8バンクインターリーブ時に対して2倍になる。
次に、容量設定部124が、セグメントにより確保する確保容量CPを切替えるタイミングについて説明する。
前述したように、確保領域合計容量が第1閾値TH1以下であり、かつ、未使用バンクが存在する場合、セルフリフレッシュが行われる。
一方、図6に示すように、期間T1の直後に、確保領域合計容量が第1閾値TH1より大きくなった場合、容量設定部124は、次に有効にするセグメントにより確保する確保容量CPを、前述の第2容量(単位領域最大容量)に設定する。ここで、次に有効にするセグメントとは、無効のセグメントSGであって、かつ、容量設定部124が処理した最新のセグメントSGの次のセグメントSGである。
同時に、消費電力制御部122は、セルフリフレッシュの実行を停止させるためのセルフリフレッシュ停止指示(コマンド)を、DRAM制御回路210を介して、DRAM200へ送信する。
DRAM200は、セルフリフレッシュ停止指示に従って、セルフリフレッシュの実行を停止する。すなわち、パーシャルセルフリフレッシュの実行が停止される。これにより、DRAM200のバンクBK0〜BK7が使用可能になる。
期間T2では、前述のセグメント設定部121の処理により、新しく有効にされるセグメントSGにより確保される確保容量CPは、第2容量(単位領域最大容量)に設定される。これにより、DRAM200へのアクセスは、8バンクインターリーブによるアクセスとなる。
図8は、期間T2におけるDRAM200の状態の一例を示す図である。
図8において、確保領域および不確保領域は、前述したので詳細な説明は繰り返さない。
図8では、単位領域RW[1]では、4個のバンク対応領域の各々が、確保領域である。すなわち、単位領域RW[1]では、4バンクインターリーブ動作が行われる。また、単位領域RW[3]では、8個のバンク対応領域の各々が、確保領域である。すなわち、単位領域RW[3]では、8バンクインターリーブ動作が行われる。
つまり、期間T2では、DRAM200には、4バンクインターリーブ動作が行われる単位領域RW[1]と、8バンクインターリーブ動作が行われる単位領域RW[3]とが混在するようになる。
この場合、4バンクインターリーブ動作が行われる単位領域RW[1]において、バンクBK4〜BK7にそれぞれ対応する4個の不確保領域は使用不可のままである。
図6の期間T2において、単位領域RW[1]を、4バンクインターリーブ動作させるための処理(メモリアクセス要求に対応する処理)が終了した場合、単位領域RW[1]は解放される。具体的には、セグメント設定部121が、単位領域RW[1]に対応するセグメントSGを、無効に設定する。
そして、期間T2において、再度、単位領域RW[1]を使用するためのメモリアクセス要求があった場合、セグメント設定部121は、単位領域RW[1]に対応するセグメントSGを有効に設定するとともに、当該セグメントSGの確保容量CPを、第2容量(単位領域最大容量)に設定する。これにより、当該単位領域RW[1]は、8バンクインターリーブ動作を行うことが可能となる。
図6において、期間T3は、確保領域合計容量が第1閾値TH1以下である期間である。すなわち、確保領域合計容量が第1閾値TH1より大きい期間T2において、確保領域合計容量が第1閾値TH1以下になると、期間T3に移行する。すなわち、期間T2から期間T3への移行は、期間T1から期間T2への移行と同様に、第1閾値TH1が用いられる。
確保領域合計容量が第1閾値TH1以下になると、容量設定部124は、前述した図4の容量設定処理により、次に有効にするセグメントにより確保する確保容量CPを、第1容量(単位領域最大容量の2分の1)に設定する。すなわち、確保容量CPが第1容量に設定されたセグメントに対応する単位領域RWは、4バンクインターリーブ動作を行うことが可能となる。
この場合、消費電力制御部122は、バンクBK0〜BK3にそれぞれ対応する4個のバンク対応領域において、インターリーブ動作させるための指示を、DRAM制御回路210へ送信する。具体的には、前述したように、消費電力制御部122は、アクセス対象の領域を制限するためのアクセス領域制限指示を、DRAM制御回路210へ送信する。
また、消費電力制御部122は、8バンクインターリーブ動作の対象となる単位領域RWがなくなった時点で、セルフリフレッシュ指示を、DRAM制御回路210を介して、DRAM200へ送信する。すなわち、図5のステップS220の処理が行われる。
以上説明したように、本実施の形態によれば、バンクインターリーブによるアクセスが行われている期間に、セグメントSGを使用して、確保領域合計容量を随時算出し、当該確保領域合計容量に応じて、セグメントにより確保する確保容量CPを変化させる。
すなわち、各単位領域RWにおいて、インターリーブの対象となるバンク対応領域の数を動的に変更させ、未使用バンクが存在する場合、当該未使用バンクをセルフリフレッシュする。これにより、バンクインターリーブによるアクセスが行われる際にデータの転送効率を落とすことなく、DRAM200の消費電力を効率的に抑えることが可能である。
つまり、確保領域合計容量が第1閾値TH1以下である場合、セグメントSGが確保する容量を少なくする。すなわち、バンクインターリーブによるアクセスの対象となるバンク対応領域の数を少なくする。これにより、未使用バンクを発生させる。そして、当該未使用バンクをセルフリフレッシュする。これにより、DRAM200の消費電力を効率的に抑えることが可能である。
すなわち、本実施の形態によれば、バンクインターリーブによるアクセスに対応するメモリにおいて、メモリの確保状態の変化を伴う処理が行われる毎に、メモリの確保状態に関する所定条件が満たされた場合(S110でYES)であって、かつ、未使用バンクが存在する場合、未使用バンクの消費電力を、該未使用バンク以外のバンクより低くするようメモリを制御する消費電力低減処理が行われる。
これにより、メモリの確保状態が変化したときにおいて、メモリの確保状態に関する所定条件が満たされた場合であって、未使用バンクが存在する場合、未使用バンクの消費電力を抑えることができる。
すなわち、バンクインターリーブによるアクセスに対応するメモリの確保状態の変化に伴って生じる未使用バンクの消費電力を抑えることができる。したがって、メモリの確保状態の変化に応じて、メモリの消費電力を効率よく抑えることができる。
なお、本実施の形態では、確保領域合計容量を使用したがこれに限定されない。最大記憶容量に対する確保領域合計容量の割合である前述した容量確保率を用いて、インターリーブの対象となる、バンク対応領域の数を動的に変更させてもよい。
なお、本実施の形態では、DRAM200の消費電力の低減のために、パーシャルセルフリフレッシュを用いたがこれに限定されない。例えば、前述の不確保領域への電力供給を停止することにより、DRAM200の消費電力を低減させてもよい。
<第2の実施の形態>
本実施の形態では、2つの要素に基づいて、容量設定部124が、確保容量CPを設定するための処理を行うための構成について説明する。当該2つの要素は、前述の確保領域合計容量および有効セグメント数である。有効セグメント数とは、有効判定情報FGが「有効」を示すセグメントSGの数である。
図9は、第2の実施の形態におけるデータ記憶装置1000Aの構成を示すブロック図である。
図9を参照して、データ記憶装置1000Aは、図1のデータ記憶装置1000と比較して、メモリ管理ユニット100の代わりにメモリ管理ユニット100Aを含む点が異なる。それ以外のデータ記憶装置1000Aの構成は、データ記憶装置1000と同様なので詳細な説明は繰り返さない。
メモリ管理ユニット100Aは、図1のメモリ管理ユニット100と比較して、制御部120の代わりに制御部120Aを備える点が異なる。それ以外のメモリ管理ユニット100Aの構成は、メモリ管理ユニット100と同様なので詳細な説明は繰り返さない。
制御部120Aは、図1の制御部120と比較して、セグメント設定部121の代わりにセグメント設定部121Aを含む点と、容量設定部124の代わりに容量設定部124Aを含む点とが異なる。それ以外の制御部120Aの構成は、制御部120と同様なので詳細な説明は繰り返さない。
セグメント設定部121Aは、セグメント設定部121と同様な構成を有する。すなわち、セグメント設定部121Aは、セグメントテーブルT10を有する。
また、セグメント設定部121Aは、セグメント設定部121と同様な処理を行う。すなわち、アドレス変換処理が行われる毎に、セグメント設定部121Aは、セグメント設定部121と同様、必要に応じて、有効判定情報FGの変更とともに、セグメントSGを更新するための処理を行う。
すなわち、セグメント設定部121Aは、セグメントの更新が必要な処理であって、かつ、単位領域に対してアクセスを行うための処理が行われる毎に、更新が必要な該セグメントが示す特定情報および更新が必要な該セグメントが示す有効判定情報の少なくとも一方を更新する。ここで、セグメントの更新が必要な処理であって、かつ、単位領域に対してアクセスを行うための処理は、セグメントの更新が必要となるメモリアクセス要求RQを用いて行われる上記のアドレス変換処理である。
すなわち、セグメントの更新が必要な処理であって、かつ、単位領域に対してアクセスを行うための処理は、メモリ(DRAM200)の状態の変化を伴う、メモリ(DRAM200)に対してアクセスを行うための処理である。
セグメント設定部121Aが、更新が必要な該セグメントが示す特定情報および更新が必要な該セグメントが示す有効判定情報の少なくとも一方を更新する処理は、p個のバンクのうち、アクセス対象のバンクを動的に決定(設定)する処理である。
セグメント設定部121Aは、さらに、セグメントテーブルT10に含まれる有効セグメント数が変化する毎に、当該有効セグメント数を、容量設定部124Aへ通知する。これにより、容量設定部124Aは、有効セグメント数を、常に把握している。
なお、有効セグメント数に限定されず、有効セグメント率が、容量設定部124Aへ通知されてもよい。有効セグメント率は、セグメントSGの総数に対する、有効セグメント数の割合である。
メモリ容量監視部123は、第1の実施の形態と同様に、容量監視処理を行う。すなわち、メモリ容量監視部123は、確保領域合計容量を算出し、確保領域合計容量を算出する毎に、確保領域合計容量を、容量設定部124Aへ通知する。
これにより、容量設定部124Aには、メモリ容量監視部123から、確保領域合計容量が随時通知される。これにより、容量設定部124Aは、確保領域合計容量を、常に把握している。
本実施の形態では、メモリ容量監視部123が、確保領域合計容量を容量設定部124Aに通知する毎に、容量設定処理Aが行われる。
図10は、容量設定処理Aのフローチャートである。
図10を参照して、ステップS110Aでは、容量設定部124Aが、最新の確保領域合計容量が所定の第1閾値TH1以下であり、かつ、最新の有効セグメント数が、所定の第2閾値TH2以下であるか否かを判定する。第1閾値TH1は、前述したように、DRAM200のu個の記憶領域C10の合計容量(最大記憶容量)の半分未満の値である。第2閾値TH2は、n/2未満の値である。
すなわち、容量設定部124Aは、メモリの確保状態に関する所定条件が満たされるか否かを判定する。この場合、当該メモリの確保状態に関する所定条件は、各セグメントSGが示す最新の特定情報(確保容量CP)により特定される全ての確保領域の合計容量が所定の第1閾値TH1以下であり、かつ、有効であるセグメントの数が所定の第2閾値TH2以下であるという条件である。
なお、第2閾値TH2は、第1閾値TH1が、DRAM200の最大記憶容量の半分未満の値である場合、n/2未満の値以外の値であってもよい。例えば、第2閾値TH2は、n/2≦TH2≦3n/4の関係式を満たすような値であってもよい。
また、第1閾値TH1は、第2閾値TH2がn/2未満の値である場合、DRAM200の最大記憶容量の半分未満の値以外の値であってもよい。第1閾値TH1は、例えば、最大記憶容量の半分の値以上であって、かつ、当該最大記憶容量未満の範囲の値であってもよい。
ステップS110Aにおいて、YESならば、処理はステップS121Aに移行する。一方、ステップS110Aにおいて、NOならば、処理はステップS122Aに移行する。
ステップS121Aでは、ステップS121と同様な処理が行われるので詳細な説明は繰り返さない。すなわち、容量設定部124Aは、セグメントSGの確保容量CPを第1容量に設定するための第1容量設定指示を、セグメント設定部121Aへ送信する。
セグメント設定部121Aは、第1容量設定指示を受信した場合、第2容量設定指示を受信するまでは、前述のアドレス変換処理においてアドレス変換回路110により選択されたセグメントSGの確保容量CPを第1容量に設定する。
ステップS122Aでは、ステップS122と同様な処理が行われるので詳細な説明は繰り返さない。すなわち、容量設定部124Aは、セグメントSGの確保容量CPを第2容量に設定するための第2容量設定指示を、セグメント設定部121Aへ送信する。
セグメント設定部121Aは、第2容量設定指示を受信した場合、第1容量設定指示を受信するまでは、前述のアドレス変換処理においてアドレス変換回路110により選択されたセグメントSGの確保容量CPを第2容量に設定する。
すなわち、制御部120A(容量設定部124Aおよびセグメント設定部121A)が行うステップS121A,S122Aの処理は、前記p個のバンクのうち、アクセス対象のバンクを動的に決定(設定)するための処理である。つまり、制御部120A(容量設定部124Aおよびセグメント設定部121A)が行う容量設定処理Aは、前記p個のバンクのうち、アクセス対象のバンクを動的に決定(設定)する処理である。言い換えれば、制御部120Aが行う容量設定処理Aは、メモリ(DRAM200)のうち、アクセス対象とする、該メモリの一部を動的に決定する処理である。
なお、消費電力制御部122は、前述した図5の消費電力制御処理を行っている。
次に、メモリ管理ユニット100Aの動作の一例を説明する。
図11は、メモリ管理ユニット100Aの動作の一例を説明するための図である。ここで、メモリ管理ユニット100Aに対応するDRAM200は、一例として、8バンクで構成されるとする。なお、メモリ管理ユニット100Aにおいて、前述した、容量監視処理、図10の容量設定処理Aおよび図5の消費電力制御処理が行われているとする。
図11において、図6が示す用語と同じ用語は、前述したので詳細な説明は繰り返さない。図11において、左側の縦軸は確保領域合計容量を示し、右側の縦軸は、有効セグメント数を示す。「TH2」は、第2閾値TH2である。
図11において、特性線L1は、時間経過に伴う確保領域合計容量の変化を示す線である。特性線L2は、時間経過に伴う有効セグメント数の変化を示す線である。
メモリ管理ユニット100Aの動作開始時は、DRAM200が4バンクインターリーブ動作を行っているものとする。
期間T11では、確保領域合計容量が第1閾値TH1以下であり、有効セグメント数が、第2閾値TH2以下である。そのため、期間T11では、容量設定部124Aは、セグメントにより確保される確保容量CPを第2容量に設定するための処理を行う。すなわち、期間T11では、セグメント設定部121Aは、設定対象のセグメントSGの確保容量CPを第1容量(単位領域最大容量の半分)に設定する。
なお、期間T11では、図6の期間T1と同様に、図5の消費電力制御処理により、消費電力低減処理が行われる。すなわち、パーシャルセルフリフレッシュが行われる。
期間T12の序盤(先頭の期間)では、確保領域合計容量は第1閾値TH1以下であるが、有効セグメント数が第2閾値TH2より大きい。
そのため、図10のステップS110AでNOと判定され、容量設定部124Aは、ステップS122Aの処理を行う。これにより、容量設定部124Aは、次に有効にするセグメントにより確保する確保容量CPを、前述の第2容量(単位領域最大容量)に設定する。この場合、第2容量に設定されたセグメントSGに対応する単位領域RWは、8バンクインターリーブ動作を行う。
期間T12の終盤(最後の期間)では、有効セグメント数は第2閾値TH2以下であるが、確保領域合計容量が第1閾値TH1より大きい。そのため、図10のステップS110AでNOと判定され、容量設定部124Aは、ステップS122Aの処理を行う。すなわち、期間T12の終盤(最後の期間)では、セグメント設定部121Aは、設定対象のセグメントSGの確保容量CPを第2容量(単位領域最大容量)に設定する。
なお、期間T12では、図6の期間T2と同様な処理が行われることにより、セルフリフレッシュの実行が停止される。
期間T13では、確保領域合計容量が第1閾値TH1以下であり、有効セグメント数が、第2閾値TH2以下である。そのため、期間T13では、容量設定部124Aは、セグメントにより確保される確保容量CPを第2容量に設定するための処理を行う。すなわち、期間T13では、セグメント設定部121Aは、設定対象のセグメントSGの確保容量CPを第1容量(単位領域最大容量の半分)に設定する。
また、期間T13においては、図6の期間T3と同様に、図5の消費電力制御処理により、消費電力低減処理が行われる。すなわち、パーシャルセルフリフレッシュが行われる。
なお、容量設定部124A以外の、セグメント設定部121A、消費電力制御部122と、メモリ容量監視部123等は、第1の実施の形態で説明した処理と同様な処理を行う。
以上説明したように、本実施の形態によれば、確保領域合計容量および有効セグメント数という2つの要素を利用して、DRAM200における未使用バンクをセルフリフレッシュするか否かを判定する。これにより、DRAM200の消費電力の状態を、第1の実施の形態よりも、精密に制御することができる。すなわち、バンクインターリーブによるアクセスが行われる際にデータの転送効率を落とすことなく、DRAM200の消費電力を、より効率的に抑えることが可能である。
すなわち、本実施の形態においても、第1の実施の形態と同様な効果を得ることができる。つまり、バンクインターリーブによるアクセスに対応するメモリの確保状態の変化に伴って生じる未使用バンクの消費電力を抑えることができる。したがって、メモリの確保状態の変化に応じて、メモリの消費電力を効率よく抑えることができる。
また、4バンクインターリーブ動作と8バンクインターリーブ動作が混在する期間において起こる可能性がある、データの格納が可能な記憶領域C10が存在するにも関わらず、セグメントSGの確保容量CPを設定できない状態を防ぐことができる。
なお、本実施の形態では、有効セグメント数を使用したがこれに限定されない。有効セグメント数の代わりに前述した有効セグメント率を使用した処理が行われてもよい。
また、確保容量CPに設定される値を切替えるための基準となる要素は、確保領域合計容量、容量確保率、有効セグメント数、有効セグメント率等に限定されることなく、他の要素であってもよい。
<第3の実施の形態>
本実施の形態では、データ記憶装置1000またはデータ記憶装置1000Aを備える画像処理装置について説明する。本実施の形態では、一例として、データ記憶装置1000を備える画像処理装置について説明する。
図12は、第3の実施の形態における画像処理装置2000の構成を示すブロック図である。画像処理装置2000は、一例として、撮像装置である。撮像装置は、例えば、ネットワークカメラ、車載カメラ、デジタルビデオカメラ、デジタルスチルカメラである。
図12を参照して、画像処理装置2000は、データ記憶装置1000と、CPU301と、記録メディアインタフェース310と、符号化部321と、復号部322と、画像サイズ変更部330と、表示部340とを含む。
データ記憶装置1000に含まれる各部は、第1の実施の形態で説明したので詳細な説明は繰り返さない。なお、DRAM200は、一例として、8個のバンクを含むとする。
CPU301は、メモリ管理ユニット100を制御する。また、CPU301は、前述したメモリアクセス要求RQを、アドレス変換回路110へ送信する。なお、CPU301は、記録メディアインタフェース310と通信可能であるとする。
記録メディアインタフェース310は、図示しない記録メディアに接続される。
符号化部321は、画像を符号化する。復号部322は、符号化された画像データを復号する。画像サイズ変更部330は、画像を、縮小または拡大する。
表示部340は、画像を表示する表示装置である。なお、表示部340は、外部の表示機器に画像データを送信するための装置であってもよい。すなわち、表示部340は、外部の表示機器を制御する装置であってもよい。
本実施の形態では、画像の再生処理について説明する。当該画像は、一例として、JPEG(Joint Photographic Experts Group)方式に従った画像であるとする。
図示しない記録メディアには、JPEG方式により符号化された画像データが記憶されているとする。当該画像データは、撮像された画像のデータであるとする。
再生処理において、CPU301は、記録メディアインタフェース310を介して、記録メディアから画像データを読み出す。そして、CPU301は、メモリ管理ユニット100を利用して、当該画像データをDRAM200へ格納するための処理を行う。
復号部322は、メモリ管理ユニット100を利用して、DRAM200から画像データを読出し、当該画像データを復号することにより、画像を示すYCデータを得る。YCデータは、Y(輝度)データとC(色差)データとから構成されるデータである。
そして、復号部322は、メモリ管理ユニット100を利用して、DRAM200において、画像データが記憶された領域とは別の領域にYCデータを格納するための処理を行う。
画像サイズ変更部330は、メモリ管理ユニット100を利用して、DRAM200からYCデータを読出す。そして、画像サイズ変更部330は、当該YCデータが示す画像を拡大または縮小する。以下においては、画像サイズ変更部330により、拡大または縮小された画像を示すYCデータを、変更済YCデータともいう。
そして、画像サイズ変更部330は、メモリ管理ユニット100を利用して、DRAM200において、画像データおよびYCデータが記憶された領域とは別の領域に変更済YCデータを格納するための処理を行う。
CPU301は、DRAM200から、表示対象のYCデータを読出し、当該YCデータを、表示部340へ送信する。
表示部340は、受信したYCデータが示す画像を表示する。以下においては、表示部340が表示対象のYCデータが示す画像を表示する処理を、画像表示処理ともいう。
以上の再生処理により、撮像された画像を再生することができる。
図13は、上記再生処理による、確保領域合計容量の変化を示す図である。
図13を参照して、期間T21では、再生処理の開始時にCPU301が記録メディアから読み出した画像データをDRAM200に格納するための処理と、復号部322がDRAM200から画像データを読出す処理とが行われる。以下においては、CPU301が、画像データをDRAM200に格納するための処理を画像データ格納処理という。
再生処理の開始時は、処理対象データは、画像データのみであり、確保領域合計容量は、最大記憶容量の8分の1である。よって、消費電力制御部122は、バンクBK0〜3に対応するバンク対応領域のみにアクセスするためのアクセス領域制限指示を、DRAM制御回路210へ送信する。これにより、DRAM200は、4バンクインターリーブ動作を行う。
このとき、バンクBK4〜BK7は未使用バンクである。そのため、図5の消費電力制御処理が行われることにより、DRAM200は、バンクBK4〜7に対しセルフリフレッシュを行う。すなわち、DRAM200は、パーシャルセルフリフレッシュを行う。これにより、未使用バンクの消費電力を低減することができる。
期間T22では、既にDRAM200に画像データが格納されている状態で、復号部322が、復号により得たYCデータを、さらに、DRAM200に格納する。そのため、期間T22は、期間T21より、確保領域合計容量は増加する。しかしながら、期間T22では、確保領域合計容量が第1閾値TH1以下である。そのため、期間T22では、期間T21と同様に、DRAM200が、4バンクインターリーブ動作を行う。
期間T23では、画像サイズ変更部330が、画像のサイズを変更したYCデータを、DRAM200に格納する。期間T23では、確保領域合計容量が第1閾値TH1より大きい。期間T22から期間23へ移行した直後では、容量設定部124は、次に有効にするセグメントにより確保する確保容量CPを、前述の第2容量(単位領域最大容量)に設定する。
同時に、消費電力制御部122は、セルフリフレッシュの実行を停止させるためのセルフリフレッシュ停止指示(コマンド)を、DRAM制御回路210を介して、DRAM200へ送信する。
DRAM200は、セルフリフレッシュ停止指示に従って、セルフリフレッシュの実行を停止する。すなわち、パーシャルセルフリフレッシュの実行が停止される。これにより、DRAM200のバンクBK0〜BK7が使用可能になる。
期間T24では、再生対象のYCデータ表示するための複数の処理が行われる期間である。
以下においては、前述した復号部322がYCデータを格納するための処理を、YCデータ格納処理という。また、以下においては、画像サイズ変更部330がDRAM200からYCデータを読出す処理を、YCデータ読出し処理という。また、以下においては、画像サイズ変更部330が変更済YCデータをDRAM200に格納するための処理を、変更済YCデータ格納処理という。また、以下においては、CPU301が表示対象のYCデータを読出す処理を、表示対象YCデータ読出し処理という。
期間T24では、YCデータ格納処理と、YCデータ読出し処理と、変更済YCデータ格納処理と、表示対象YCデータ読出し処理と、前述の画像表示処理が行われる。
期間T24は、期間T23と同様、確保領域合計容量が第1閾値TH1より大きい。そのため、期間T24は、DRAM200が8バンクインターリーブ動作を行うことが可能な期間である。
期間T25では、前述の画像データ格納処理と、前述のYCデータ格納処理とが終了している。なお、期間T25では、変更済YCデータ格納処理および表示対象YCデータ読出し処理は行われている。期間T25では、確保領域合計容量が第1閾値TH1より大きい。そのため、期間T25は、期間T24と同様、DRAM200が8バンクインターリーブ動作を行う事が可能な期間である。
期間T26では、変更済YCデータ格納処理が終了している。期間T26では、前述の表示対象YCデータ読出し処理および画像表示処理のみが行われている。期間T26では、確保領域合計容量が第1閾値TH1以下であるため、DRAM200は4バンクインターリーブ動作を行う事が可能である。
しかし、表示対象YCデータ読出し処理は、8バンクインターリーブ動作により行われる。そのため、このままでは、バンクBK4〜BK7に対し、パーシャルセルフリフレッシュを行うことが出来ない。
そこで、DMA(ダイレクトメモリアクセス)を利用して、表示対象のYCデータを構成するYデータおよびCデータのうち、バンクBK4〜BK7において使用していたデータを、空き領域のバンクBK0〜バンクBK3へ転送する。すなわち、DMA転送中は8バンクのデータを読み続け、DMA転送完了後に、処理対象のセグメントを変更して4バンクのデータを2個読む処理が行われる。
これにより、バンクBK4〜BK7に対し、パーシャルセルフリフレッシュする。その際、セグメントにより確保する確保容量CPを、第1容量(最大記憶容量の2分の1)に設定し、セグメントの使用する数を2倍にする必要がある。
以上説明した、JPEG画像の再生処理では、復号された画像データを表示する処理である。また、上記の再生処理では、表示対象YCデータ読出し処理がほとんどの時間を占めているため、効果的にDRAM200の消費電力を抑えることが可能となる。
上記の画像処理装置2000のメモリ管理ユニット100は、DRAM200を外部メモリとして使用する。この場合、メモリ管理ユニット100は、外部メモリの大部分をワークメモリとして使用することが多くなる。
例えば、前述した画像処理装置2000(例えば、カメラ)では、処理前に画像データを記憶するためのメモリ領域を1フレーム分確保し、処理が終了次第、そのメモリ領域を開放することを繰り返し行われる。そのため、上記画像処理装置2000では、メモリの確保領域合計容量が随時増減する。そのため、画像処理装置2000が行う再生処理において、本発明が有効である。
なお、画像処理装置2000は、データ記憶装置1000の代わりにデータ記憶装置1000Aを備えていてもよい。この場合、上記再生処理は、メモリ管理ユニット100Aを利用して行われる。なお、メモリ管理ユニット100Aを利用して行われる再生処理は、図12、図13で説明した再生処理と同様なので詳細な説明は繰り返さない。
すなわち、画像処理装置2000は、メモリ管理ユニット100またはメモリ管理ユニット100Aを利用して画像処理を行う。
(機能ブロック図)
図14は、メモリ管理ユニット400の特徴的な機能構成を示すブロック図である。メモリ管理ユニット400は、メモリ管理ユニット100またはメモリ管理ユニット100Aに相当する。つまり、図14は、メモリ管理ユニット100またはメモリ管理ユニット100Aの有する機能のうち、本発明に関わる主要な機能を示すブロック図である。なお、図14には、説明のために、メモリ420も示される。
メモリ420は、バンクインターリーブによるアクセスに対応するメモリである。メモリ420は、p(2以上の整数)個のバンクを含む。メモリ420は、DRAM200に相当する。
メモリ管理ユニット400は、メモリ420の状態を管理する。
メモリ管理ユニット400は、機能的には、制御部410を備える。
制御部410は、メモリ420の前記p個のバンクのうち、アクセス対象のバンクを動的に決定する処理を行う。
また、制御部410は、さらに、前記メモリ420の確保状態に関する所定条件が満たされた場合であって、かつ、前記p個のバンクのうちアクセス対象でない未使用バンクが存在する場合、該未使用バンクの消費電力を、該未使用バンク以外のバンクより低くするよう前記メモリを制御する消費電力低減処理を行う。制御部410は、制御部120または制御部120Aに相当する。
なお、メモリ管理ユニット400に含まれるは制御部410は、LSI(Large Scale Integration:大規模集積回路)等のハードウエアで構成されてもよい。また、制御部410は、CPU等のプロセッサにより実行されるプログラムのモジュールであってもよい。
以上、本発明におけるメモリ管理ユニット又はデータ記憶装置について、実施の形態に基づいて説明したが、本発明は、これらの実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したもの、あるいは異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
また、上記のメモリ管理ユニットを構成する複数の構成要素の全てまたは一部は、ハードウエアで構成されてもよい。また、上記のメモリ管理ユニットを構成する構成要素の全てまたは一部は、CPU(Central Processing Unit)等により実行されるプログラムのモジュールであってもよい。
また、上記のメモリ管理ユニット100またはメモリ管理ユニット100Aを構成する複数の構成要素の全てまたは一部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されてもよい。システムLSIは、複数の構成要素を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM(Read Only Memory)及びRAM(Random Access Memory)などを含んで構成されるコンピュータシステムである。
例えば、メモリ管理ユニット100またはメモリ管理ユニット100Aは、1個のシステムLSI(集積回路)から構成されてもよい。すなわち、メモリ管理ユニット100またはメモリ管理ユニット100Aは、集積回路であってもよい。
また、本発明は、メモリ管理ユニット100またはメモリ管理ユニット100Aが備える特徴的な構成部の動作をステップとするメモリ管理方法として実現してもよい。また、本発明は、そのようなメモリ管理方法に含まれる各ステップをコンピュータに実行させるプログラムとして実現してもよい。また、本発明は、そのようなプログラムを格納するコンピュータ読み取り可能な記録媒体として実現されてもよい。また、当該プログラムは、インターネット等の伝送媒体を介して配信されてもよい。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。