説明

メモリの制御装置、及び制御方法

【課題】データの格納状態に応じた消費電力の抑制が可能なメモリの制御装置、及び制御方法を提供する。
【解決手段】メモリの制御装置であって、スタックポインタによってスタックの基点から空き領域へ向けて後入れ先出し処理されるスタック内のデータを格納する複数のメモリブロック14A〜14Dと、メモリブロック14A〜14Dにそれぞれ独立に電力を供給可能な電力供給部と、を有するメモリ装置の、各メモリブロック14A〜14Dの境界のアドレス情報を保持するアドレス情報保持部と、各メモリブロック14A〜14Dのうち、スタックポインタが示すアドレスが存在する特定のメモリブロック以外のメモリブロックに供給する電力を、特定のメモリブロックに供給する電力よりも抑制する電源制御部と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本願は、メモリの制御装置、及び制御方法を開示する。
【背景技術】
【0002】
近年、コンピュータが備えるプロセッサやメモリ等のデバイスには、消費電力を削減するための各種機能が備わっている(例えば、特許文献1〜2を参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平5−19917号公報
【特許文献2】特開平7−105686号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
コンピュータがLIFO(Last In First Out)方式でデータを取り扱う場合、コンピ
ュータのメモリには次のような種類の領域が発生する。第1の領域は、例えば、直ちにアクセスされる可能性がある特定のデータが格納されている領域である。第2の領域は、例えば、上記第1の領域へのアクセスが行なわれない限りアクセスされ得ない他のデータが格納されている領域である。第3の領域は、例えば、当面の間、データが格納され得ない領域である。
【0005】
ところで、メモリの大容量化に伴い、データの格納状態によっては電力供給を必要としない領域における消費電力が無視できなくなりつつある。しかし、データの格納状態はプロセッサにおける処理の進捗に応じて時々刻々と変化していくため、メモリ内の各領域に必要な電力を適切に配分して省電力を実現することは難しい。
【0006】
そこで、本願は、データの格納状態に応じた消費電力の抑制が可能なメモリの制御装置、及び制御方法を提供することを課題とする。
【課題を解決するための手段】
【0007】
本願は、次のような装置を開示する。
スタックポインタによってスタックの基点から空き領域へ向けて後入れ先出し処理されるスタック内のデータを格納する複数のメモリブロックと、前記メモリブロックにそれぞれ独立に電力を供給可能な電力供給部と、を有するメモリ装置の、各メモリブロックの境界のアドレス情報を保持するアドレス情報保持部と、
前記各メモリブロックのうち、前記スタックポインタが示すアドレスが存在する特定のメモリブロック以外のメモリブロックに供給する電力を、前記特定のメモリブロックに供給する電力よりも抑制する電源制御部と、を備える、
メモリの制御装置。
【0008】
また、本願は、次のような方法を開示する。
スタックポインタによってスタックの基点から空き領域へ向けて後入れ先出し処理されるスタック内のデータを格納する複数のメモリブロックと、前記メモリブロックにそれぞれ独立に電力を供給可能な電力供給部と、を有するメモリ装置の、各メモリブロックの境界のアドレス情報を保持するアドレス情報保持部にアクセスし、
前記各メモリブロックのうち、前記スタックポインタが示すアドレスが存在する特定のメモリブロック以外のメモリブロックに供給する電力を、前記特定のメモリブロックに供
給する電力よりも抑制する、
メモリの制御方法。
【発明の効果】
【0009】
データの格納状態に応じた消費電力の抑制が可能となる。
【図面の簡単な説明】
【0010】
【図1】メモリ制御装置の構成図である。
【図2】テーブルの内容を示す図である。
【図3】メモリ制御装置が実行する処理フロー図である。
【図4】スタック領域のデータと電源モードを示した第1の図である。
【図5】スタック領域のデータと電源モードを示した第2の図である。
【図6】スタック領域のデータと電源モードを示した第3の図である。
【図7】スタック領域のデータと電源モードを示した第4の図である。
【図8】変形例に係るメモリ制御装置が実行する処理フロー図である。
【図9】変形例に係るスタック領域のデータと電源モードを示した第1の図である。
【図10】変形例に係るスタック領域のデータと電源モードを示した第2の図である。
【図11】変形例に係るスタック領域のデータと電源モードを示した第3の図である。
【図12】変形例に係るスタック領域のデータと電源モードを示した第4の図である。
【図13】単一のアプリケーションが実行される場合の、仮想記憶空間と物理記憶空間との関係を示した図である。
【図14】複数のアプリケーションが実行される場合の、仮想記憶空間と物理記憶空間との関係を示した図である。
【図15】変形例に係るコンピュータのOSが実行する処理フロー図である。
【図16】スタック用領域が複数ある場合の、仮想記憶空間と物理記憶空間との関係を示した図である。
【図17】変形例に係るコンピュータのOSが実行する処理フロー図である。
【図18】変形例に係るコンピュータを示した図である。
【発明を実施するための形態】
【0011】
メモリ制御装置の構成を図1に示す。メモリ制御装置1は、図1に示すように、CPU(Central Processing Unit)2とメモリ3を備えるコンピュータ4に内蔵されている。
なお、メモリ制御装置1は、メモリ3に内蔵されていてもよい。
【0012】
メモリ制御装置1は、CPU2のレジスタ10に格納されるスタックポインタが示すアドレス(以下、SP値という)を取得し、メモリ3の電源モードを制御するモード制御部5と、メモリ3の各ブロックのアドレスの情報を保持するテーブル6とを備える。
【0013】
モード制御部5は、CPU2のレジスタ10から取得したSP値を取得する取得部5A、取得部5Aが取得したSP値とテーブル6とを比較する比較部5B、及び比較部5Bの比較結果に基づいてメモリ3の電源モードを決定する決定部5Cを備える。モード制御部5は、メモリ3の電源モードが、決定部5Cが決定した電源モードになるように、メモリ3のセレクタ7を制御する。
【0014】
なお、取得部5Aは、CPU2のレジスタ10にクロックサイクル毎にアクセスを行なうことでSP値を取得するものであってもよいし、SP値の変化を契機にレジスタ10にアクセスを行ない、SP値を取得するものであってもよい。取得部5Aは、SP値の変化
を契機にして動作する場合、SP値が変化した場合にCPU2から通知される信号をトリガにしてもよいし、或いは、レジスタ10のSP値が変化したことを検知する回路を別途に設けておき、この回路から通知される信号をトリガにしてもよい。比較部5Bや決定部5Cについても、取得部5Aと同様、比較処理や決定処理をクロックサイクル毎に繰り返すものであってもよいし、SP値の変化を契機に処理を実行するものであってもよい。
【0015】
CPU2は、各種の演算を行うハードウェアであり、ALU(Arithmetic Logic Unit
)8やLSU(Load/Store Unit)9、レジスタ10、プログラムカウンタ11を備える

【0016】
メモリ3は、記憶保持動作が必要な揮発性メモリである。メモリ3は、m×n個のメモリセルがアレイ状に配置されたメモリセルアレイ12、及び各メモリセルへ供給する電力を制御するセレクタ7を備える。セレクタ7は、メモリ制御装置1からの指令に応じてスイッチ群13を制御し、メモリセルアレイ12の各ブロック14A〜Dを、動作用の電力を供給する電力線L1やデータ保持用の電力を供給する電力線L2に接続する。すなわち、メモリセルアレイ12は、ブロック毎に電源モードを制御可能なようになっている。各ブロック14A〜Dは、スタック用領域として使われる。なお、メモリ3には、スタック用のメモリ領域の他に、汎用のメモリ領域を有していてもよい。
【0017】
各ブロック14A〜Dは、電力線L1から電力が供給されるとデータを読み書き可能な通常の動作状態(On)になり、電力線L2から電力が供給されると読み書き不能なデータ保持状態(Retention)になり、電力の供給が遮断されるとデータの読み書きのみならず
データの保持も不能な停止状態(Off)になる。消費電力については、通常の動作状態(On)での消費電力が最も大きく、データ保持状態(Retention)での消費電力が次に大きく、停止状態(Off)での消費電力が最も小さい。
【0018】
テーブル6は、図2に示すように、メモリセルアレイ12の各ブロック14A〜Dのアドレスの範囲(ブロックの境界のアドレス)、例えば、各ブロックの先頭のアドレスと末端のアドレスの情報を保持している。なお、図2において、第1〜4ブロックは、図1の符号14A〜Dにそれぞれ対応している。また、図2では、説明の便宜上、「ブロック名」の列を示しているが、テーブル6は「アドレス」の列を有していればよい。
【0019】
メモリ制御装置1が実行する処理を、図3の処理フロー図に沿って説明する。なお、本実施形態では、ハードウェアとしてのメモリ制御装置1をCPU2とは別にコンピュータ4内に設けているが、メモリ制御装置1が実行する処理はソフトウェアによりCPU2で実現されるものであってもよい。
【0020】
コンピュータ4が起動すると、メモリ3には、図4に示すように、データを格納するスタック用のメモリ領域が確保される。このとき、スタックには未だデータが格納されていないため、SP値は、スタックの基点(図4におけるスタックの下端)となるアドレスを指している。なお、本願では、スタックの基点と反対側(データが蓄積されていく方向側)を終点とする(図4におけるスタックの上端)。
【0021】
CPU2による処理によりスタックにデータが格納されると、SP値は、図5に示すように、格納されたデータのサイズ分だけ変更される。
【0022】
ここで、モード制御部5は、CPU2のレジスタ10からSP値を取得する(S101)。このステップS101の処理は、取得部5Aがクロックサイクル毎に動作する場合にはSP値の変化の有無に関わらず繰り返し実行され、取得部5AがCPU2から通知される信号を契機に動作する場合にはこの信号を契機に実行される。
【0023】
モード制御部5は、取得したSP値と図2のテーブルとの相関から、スタックポインタが示すアドレスが属するブロックを特定する。モード制御部5は、スタックポインタが示すアドレスが属するブロックに変更が無ければ、再びステップS101の処理を繰り返す(S102)。また、モード制御部5は、ブロックに変更があれば、セレクタ7を制御して各ブロック14A〜Dの電源モードを切り替える(S103)。
【0024】
CPU2による処理によりスタックにデータが更に格納され、スタックポインタが示すアドレスが属するブロックが、図6に示すように第1ブロックから第2ブロックへ変化したとする。この場合、モード制御部5は、SP値と図2のテーブルとの相関から、スタックポインタが示すアドレスが属するブロックが変更されたことを検知し、セレクタ7を制御して各ブロック14A〜Dの電源モードを切り替える(S103)。
【0025】
図6に示す例では、スタックポインタが示すアドレスが存在するブロックが、第1ブロックから第2ブロックへ変化しているため、セレクタ7は、第1ブロックに接続する電力線を電力線L1から電力線L2へ切り替え、第2ブロックに電力線L1を接続する。これにより、第1ブロックの電源モードは通常の動作状態(On)からデータ保持状態(Retention)へ切り替わり、第2ブロックの電源モードは停止状態(Off)から通常の動作状態(On)へ切り替わる。なお、セレクタ7によるブロックの切り替えを開始してから第2ブロックが通常の動作状態(On)へ遷移してデータの書き込みが可能になるまでの間、モード制御部5からLSU9へWait信号が送られ、CPU2からメモリ3へ書き込まれるデータは、LSU9に保留される。
【0026】
一方、CPU2による処理によりスタックのデータが取り出され、スタックポインタが示すアドレスが属するブロックが、図7に示すように第2ブロックから第1ブロックへ変化したとする。この場合、セレクタ7は、第2ブロックに接続されていた電力線L1を切断し、第2ブロックに接続する電力線をL2から電力線L1へ切り替える。これにより、第2ブロックの電源モードは通常の動作状態(On)から停止状態(Off)へ切り替わり、
第1ブロックの電源モードはデータ保持状態(Retention)から動作状態(On)へ切り替
わる。
【0027】
メモリ制御装置1が各ブロックの電源を適切に制御することにより、メモリ3の消費電力が削減される。また、各ブロックの電源がメモリ制御装置1によって自動的に制御されているため、アプリケーションの作成者がメモリ3の電源制御について配慮しなくても、メモリ3の誤作動を誘発することなくメモリ3の消費電力を自動的に削減できる。なお、上記実施形態では、メモリ領域が4つのブロック14A〜Dに分割されているが、4ブロックに限定されるものではない。すなわち、スタック用のメモリ領域が複数の電源領域に分割されていれば如何なるブロック数に分割されていてもよい。
【0028】
上記実施形態の第一変形例について説明する。セレクタ7による電源モードの切り替えには時間を要するため、上記実施形態では、データがLSU9に保留される場合があった。しかし、モード制御部5がセレクタ7を以下のように制御すれば、データをスタックへシームレスに格納できる。
【0029】
本変形例では、スタックポインタが示すアドレスがブロックの境界に近づくと、モード制御部5がセレクタ7の制御を実行する。本変形例でモード制御部5が実行する処理フローを図8に示す。
【0030】
本変形例では、図9に示すような境界領域が各ブロックの境界付近に予め設定されており、モード制御部5は、SP値が境界領域の範囲内に入ると(S202)、隣接するブロ
ックを電力線L1に接続する(S203)。境界領域は、例えば、図2に示したテーブルに付加された情報によって特定されてもよいし、図2のテーブルが示す各ブロックの境界のアドレス値から既定のオフセット量を加算あるいは減算して特定されるものであってもよい。
【0031】
境界領域は、その大きさが大きいほどデータをよりシームレスに格納できるが、消費電力とトレードオフの関係にある。よって、境界領域の大きさは、CPU2が処理するデータ量やセレクタ7の処理速度に応じて適宜決定すればよい。
【0032】
CPU2による処理によりスタックにデータが更に格納され、SP値が図10に示すように第1ブロックと第2ブロックとの間の境界領域を示しているとする。この場合、モード制御部5は、セレクタ7を制御して第2ブロックに電力線L1を接続し、第2ブロックの電源モードを停止状態(Off)から通常の動作状態(On)へ切り替える。これにより、
第1ブロックと第2ブロックの両方が通常の動作状態(On)になる。
【0033】
CPU2による処理によりスタックにデータが更に格納され、SP値が図11に示すように境界領域を外れて第2ブロックを示したとする(S204)。この場合、スタックポインタが第2ブロックを示しているので(S205)、モード制御部5は、第1ブロックに電力線L2を接続し、第1ブロックの電源モードを通常の動作状態(On)からデータ保持状態(Retention)へ切り替える。
【0034】
一方、図10に示す状態から、CPU2による処理によりスタック領域のデータが消去され、SP値が図12に示すように境界領域を外れて第1ブロックを示したとする。この場合、モード制御部5は、第2ブロックを電力線L2から切り離し、第2ブロックの電源モードを通常の動作状態(On)から停止状態(Off)へ切り替える。
【0035】
モード制御部5がセレクタ7を上記のように制御することにより、SP値が増減して各ブロックの電源モードが切り替わる場合でも、データをスタックへシームレスに格納できる。
【0036】
上記実施形態の第二変形例について説明する。仮想記憶システムでは、論理アドレスと物理アドレスとの相関関係は一意に定まらず、起動時の条件等に応じて変化する。このため、何ら対策を施さない場合、スタック領域が物理アドレス上で何れの位置に確保されるか特定できない。
【0037】
一方、メモリ3の各ブロックは、実在の回路構成によって区画されており、図2のテーブルも物理アドレスを示している。そこで、仮想記憶システムにおいて上記のようなSP値に基づく電源制御を行う場合、コンピュータ4を以下のように変形する。
【0038】
すなわち、アプリケーションのスタックが、コンピュータ4のOS(Operating System)が形成する仮想記憶空間のうち上記各ブロックに対応する特定の仮想記憶空間に確保されるように、OSを予め規定する。例えば、OSが形成する仮想記憶空間のうちスタック用の空間の仮想アドレスについては、ブロック14A〜Dの物理アドレスに対応してマッピングする。また、OSが形成する仮想記憶空間のうち汎用のデータを格納する空間の仮想アドレスについてはメモリ3のうちブロック14A〜D以外の任意の領域の物理アドレスに対応してマッピングする。
【0039】
このOSでは、アプリケーションが取り扱うデータのうちスタックに格納するデータについては、上記各ブロック14A〜Dに対応する特定の仮想記憶空間に格納される一方、スタックに格納しないデータについては仮想記憶空間のうち前記特定の仮想記憶空間以外
の空間に格納される。
【0040】
このように、スタックに格納するデータについては、仮想記憶空間のうちブロック14A〜Dに対応する特定の仮想記憶空間に格納されることにより、図13に示すように、スタックに格納するデータについてはブロック14A〜Dの物理記憶空間へ格納され、スタックに格納しないデータについてはその他の物理記憶空間へ格納されることになる。
【0041】
レジスタ10が示すSP値は、物理アドレスを示しているため、メモリ制御装置1は、図2のテーブルが示す物理アドレスとレジスタ10のSP値とに基づいて各ブロック14A〜Dの電源モードを制御すれば、メモリ3の誤作動を誘発することなくメモリ3の消費電力を自動的に削減できる。
【0042】
なお、アプリケーションが図14のように複数実行される場合、スタックに格納したデータは以下のように処理する。
【0043】
複数のアプリケーションをタスクの切り替えによって並列に実行する場合に、OSが実行すべきスタックのデータの処理フローを図15に示す。ユーザ操作や入出力待ち等によってタスクの切り替えが発生すると、OSは、スタックに格納されているブロック14A〜Dのデータを他のメモリ領域へ移動させる(S301)。ここで、他のメモリ領域とは、スタックのデータを退避するための領域であり、データを退避可能であれば如何なる記憶媒体であってもよい。ブロック14A〜Dのデータを他のメモリ領域へ移動させる場合、ブロック14A〜DのうちSP値が示すアドレスよりも下側の全ての領域に対してデータの読み出しが行なわれるため、メモリ制御装置1は、SP値のアドレスが存在するブロックのみならず、データが格納されている全てのブロックの電源モードを通常の動作状態(On)にする。
【0044】
OSは、切り替え前のタスクのスタックを退避させると、次に、切り替え後のタスクのスタックのデータを他のメモリ領域から読み出し、ブロック14A〜Dに格納する(S302)。メモリ制御装置1は、切り替え後のタスクのスタックのデータがブロック14A〜Dに格納されると、次に、SP値のアドレスが存在するブロックの電源モードを通常の動作状態(On)にしたまま、他のブロックの電源モードを停止状態(Off)あるいはデー
タ保持状態(Retention)にする。
【0045】
複数のアプリケーションをタスクの切り替えによって並列に実行する場合、ブロック14A〜Dに格納されるスタックのデータを上記のように処理すれば、メモリ3の消費電力を削減しながら複数のアプリケーションを実行できる。
【0046】
なお、ブロック14A〜Dのようなスタック用のメモリ領域が、図16に示すように、コンピュータ4内に複数用意されている場合、各アプリケーションのスタックに格納したデータは以下のように処理される。
【0047】
各ブロックの電源モードを独立して切り替え可能なスタック用のメモリ領域が複数あり、複数のアプリケーションをタスクの切り替えによって並列に実行する場合にOSが実行すべきスタックのデータの処理フローを図17に示す。ユーザ操作等によってタスクの切り替えが発生すると、OSは、当該アプリケーションに対応するスタックがスタック用のメモリ領域A〜Cにあるか否かを判定する(S401)。肯定判定の場合には、何ら処理を行うことなくタスクを切り替える。
【0048】
一方、ステップS401の判定処理が否定判定だった場合、OSは、何れかのスタック用のメモリ領域A〜Cが空いているか否かを、各メモリ領域A〜CのSP値に基づいて判
定する(S402)。肯定判定の場合、OSは、新たなタスクのアプリケーションのスタックのデータを空いているメモリ領域に移動させる(S405)。
【0049】
一方、ステップS402の判定処理が否定判定だった場合、OSは、消去すべきスタックを選択する(S403)。消去するスタックの優先順位は、例えば、タスクを選択する頻度やスタックに格納されているデータの大きさ等に基づいて決定する。
【0050】
OSは、ステップS403で選択した消去すべきスタックに格納されているデータを、他のメモリ領域へ移動させる(S404)。この場合、既述したステップS301と同様、メモリ制御装置1は、SP値のアドレスが存在するブロックのみならず、データが格納されている全てのブロックの電源モードを通常の動作状態(On)にする。
【0051】
OSは、切り替え前のタスクのスタックを退避すると、次に、切り替え後のタスクのスタックのデータを他のメモリ領域から読み出し、ブロック14A〜Dに格納する(S405)。メモリ制御装置1は、既述したステップS302と同様、切り替え後のタスクのスタックのデータがブロック14A〜Dに格納されると、次に、SP値のアドレスが存在するブロックの電源モードを通常の動作状態(On)にしたまま、他のブロックの電源モードを停止状態(Off)あるいはデータ保持状態(Retention)にする。
【0052】
スタック用のメモリ領域が複数ある場合、各アプリケーションのスタックのデータを上記のように取り扱えば、メモリ3の消費電力を削減しながら複数のアプリケーションを実行しつつ、タスクの切り替えもシームレスに行うことができる。
【0053】
なお、上記メモリ制御装置1は、例えば、図18に示すように、ディスプレイやNIC(Network Interface Card)、無線LAN、ハードディスクドライブ、或いはブルーレイ(登録商標)ディスクドライブ、DVDドライブ等の周辺機器15を備えるコンピュータに内蔵されていてもよい。また、上記メモリ制御装置1は、コンピュータ1に代わり、携帯電話やPDA、車載機器、サーバ装置等に適用されてもよい。
【符号の説明】
【0054】
1・・メモリ制御装置
2・・CPU
3・・メモリ
4・・コンピュータ
5・・モード制御部
6・・テーブル
7・・セレクタ
14A〜D・・ブロック

【特許請求の範囲】
【請求項1】
スタックポインタによってスタックの基点から空き領域へ向けて後入れ先出し処理されるスタック内のデータを格納する複数のメモリブロックと、前記メモリブロックにそれぞれ独立に電力を供給可能な電力供給部と、を有するメモリ装置の、各メモリブロックの境界のアドレス情報を保持するアドレス情報保持部と、
前記各メモリブロックのうち、前記スタックポインタが示すアドレスが存在する特定のメモリブロック以外のメモリブロックに供給する電力を、前記特定のメモリブロックに供給する電力よりも抑制する電源制御部と、を備える、
メモリの制御装置。
【請求項2】
前記電源制御部は、前記各メモリブロックのうち、前記特定のメモリブロックよりも前記基点側のメモリブロックに、データ保持用の電力を供給する、
請求項1に記載のメモリの制御装置。
【請求項3】
前記電源制御部は、前記各メモリブロックのうち、前記特定のメモリブロックよりも前記空き領域側のメモリブロックに供給する電力を遮断する、
請求項1または2に記載のメモリの制御装置。
【請求項4】
前記電源制御部は、前記スタックポインタが前記特定のメモリブロックの境界から所定範囲内のアドレスを示す場合に、前記境界を挟んで前記特定のメモリブロックに隣接するメモリブロックに動作用の電力を供給する、
請求項1から3の何れか一項に記載のメモリの制御装置。
【請求項5】
スタックポインタによってスタックの基点から空き領域へ向けて後入れ先出し処理されるスタック内のデータを格納する複数のメモリブロックと、前記メモリブロックにそれぞれ独立に電力を供給可能な電力供給部と、を有するメモリ装置の、各メモリブロックの境界のアドレス情報を保持するアドレス情報保持部にアクセスし、
前記各メモリブロックのうち、前記スタックポインタが示すアドレスが存在する特定のメモリブロック以外のメモリブロックに供給する電力を、前記特定のメモリブロックに供給する電力よりも抑制する、
メモリの制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate


【公開番号】特開2012−43249(P2012−43249A)
【公開日】平成24年3月1日(2012.3.1)
【国際特許分類】
【出願番号】特願2010−184823(P2010−184823)
【出願日】平成22年8月20日(2010.8.20)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】