(57)【要約】【課題】マイクロプロセッサにおいて、要求された評価値を実現すること。【解決手段】キャシュメモリのラインのうちで値を保持して活性状態とするラインを識別するための活性ライン識別情報を記憶する活性ライン識別情報メモリと、活性ライン識別情報メモリに記憶されている活性ライン識別情報により指定されるラインに給電し、残りのラインに対して給電を遮断又は給電電力を低下させた待機状態とする給電制御手段と、活性ライン識別情報メモリに記憶される活性ライン識別情報の数を所定値に制御し、その所定値を減少させる場合には、活性ライン識別情報メモリに最も古くエントリされた活性ライン識別情報から順に削除し、キャッシュミスヒットが発生した場合に、主記憶装置から読み出されたデータを記憶するラインを活性ラインとして指定する活性ライン識別情報で、活性ライン識別情報メモリに最も古くエントリされた活性ライン識別情報を書き換え更新するメモリ制御手段とを設けた。【選択図】 図１
2009134382.tif 000002
【特許請求の範囲】
【請求項１】
複数のラインから構成されるキャッシュメモリと主記憶装置とを有し、キャッシュミスヒットが発生した場合には、主記憶装置からデータを読み出して、前記ラインに記憶する演算処理装置において、
前記キャシュメモリのラインのうちで値を保持して活性状態とするラインを識別するための活性ライン識別情報を記憶する活性ライン識別情報メモリと、
前記活性ライン識別情報メモリに記憶されている前記活性ライン識別情報により指定されるラインに給電し、残りのラインに対して給電を遮断又は給電電力を低下させた待機状態とする給電制御手段と、
前記活性ライン識別情報メモリに記憶される活性ライン識別情報の数を所定値に制御し、その所定値を減少させる場合には、前記活性ライン識別情報メモリに最も古くエントリされた活性ライン識別情報から順に削除し、キャッシュミスヒットが発生した場合に、前記主記憶装置から読み出されたデータを記憶するラインを活性ラインとして指定する活性ライン識別情報で、前記活性ライン識別情報メモリに最も古くエントリされた活性ライン識別情報を書き換え更新するメモリ制御手段と
を有することを特徴とする演算処理装置。
【請求項２】
単位時間当たりのメモリの消費電力を測定する消費電力測定手段と、
目標となる単位時間当たりの目標消費電力を設定する目標消費電力設定手段と、
前記目標消費電力設定手段により設定された目標消費電力の前記消費電力測定手段により測定された前記消費電力に対する偏差の比例・積分により、前記所定値を変化させる制御値として演算する制御値演算手段とを
さらに、有することを特徴とする請求項１に記載の演算処理装置。
【請求項３】
メモリの消費エネルギーを測定する消費エネルギー測定手段と、
目標消費エネルギーを設定する目標消費エネルギー設定手段と、
前記目標消費エネルギー設定手段により設定された目標消費エネルギーの前記消費エネルギー測定手段により測定された前記消費エネルギーに対する偏差の比例・積分により、前記所定値を変化させる制御値として演算する制御値演算手段とを
さらに、有することを特徴とする請求項１に記載の演算処理装置。
【請求項４】
メモリの消費エネルギー遅延時間積を測定する消費エネルギー遅延時間積測定手段と、
目標消費エネルギー遅延時間積を設定する目標消費エネルギー遅延時間積設定手段と、
前記目標消費エネルギー遅延時間積設定手段により設定された目標消費エネルギー遅延時間積の前記消費エネルギー遅延時間積測定手段により測定された前記消費エネルギー遅延時間積に対する偏差の比例・積分により、前記所定値を変化させる制御値として演算する制御値演算手段とを
さらに、有することを特徴とする請求項１に記載の演算処理装置。
【請求項５】
単位時間当たりの命令実行数を測定する命令実行数測定手段と、
目標となる単位時間当たりの目標命令実行数を設定する目標命令実行数設定手段と、
前記目標命令実行数設定手段により設定された目標命令実行数の前記命令実行数測定手段により測定された前記命令実行数に対する偏差の比例・積分により、前記所定値を変化させる制御値として演算する制御値演算手段とを
さらに、有することを特徴とする請求項１に記載の演算処理装置。
【請求項６】
単位命令実行数当たりメモリの消費エネルギーを測定する消費エネルギー測定手段と、
目標となる単位命令実行数当たりの目標消費エネルギーを設定する目標消費エネルギー設定手段と、
前記目標消費エネルギー測定手段により設定された目標消費エネルギーの前記消費エネルギー測定手段により測定された前記消費エネルギーに対する偏差の比例・積分により、前記所定値を変化させる制御値として演算する制御値演算手段とを
さらに、有することを特徴とする請求項１に記載の演算処理装置。
【請求項７】
単位命令実行数当たりメモリの消費エネルギーを測定する消費エネルギー測定手段と、
前記消費エネルギー測定手段により測定された消費エネルギーが最小となるように、前記所定数を決定する活性ライン数決定手段とを、
さらに、有することを特徴とする請求項１に記載の演算処理装置。
【請求項８】
活性ライン識別情報メモリから削除された前記活性ライン識別情報を待機ライン識別情報として、削除された順に所定数だけ記憶する非活性化履歴情報メモリと、
待機状態への切り換えをせずに、常に、活性状態とするラインの識別情報を常活性ライン識別情報として、活性状態とした順に所定数だけ記憶する常活性ライン識別情報メモリとを有し、
前記メモリ制御手段は、活性ライン識別情報を削除する時に、その前記活性ライン識別情報を待機ライン識別情報として前記活性化履歴メモリに記憶し、キャッシュミスヒットが発生した場合において、そのアクセスしたラインの待機状態ライン識別情報が、前記非活性化履歴メモリに記憶されている場合には、そのラインを常に活性状態にするために、常活性ライン識別情報として、常活性ライン識別情報メモリに記憶し、
前記給電制御手段は、前記常活性ライン識別情報メモリに記憶されている識別情報に対応したラインを常に活性状態とする
ことを特徴とする請求項１乃至請求項７の何れか１項に記載の演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリの活性ライン数を動的に制御できる装置に関する。特に、消費電力、消費エネルギー、消費エネルギー遅延時間積(Energy Delay Product)（以下、「EDP」という。）、演算速度、若しくは、単位命令実行数当たりの消費エネルギーを目標値に追従するように制御し、又は、単位命令実行数当たりの消費エネルギーが最小となるように制御すべく、キャッシュメモリの活性ライン数を動的に制御するようにした演算処理装置に関する。
【背景技術】
【０００２】
近年、プロセス技術の進歩により、メモリのリーク電流によって消費される静的電力が問題となってきている。これに対し、チップ上のトランジスタを数多く使用しているキャッシュメモリ（以下、単に、「キャッシュ」という。）のリーク電流を削減する手法としてCache Decay が提案されている。
【０００３】
近年の携帯機器では、バッテリー駆動時間の延長や発熱の抑制に加え、機能の高度化も重要である。そのため、モバイル・プロセッサの設計においては、性能の向上と消費電力の削減をともに実現することが要求されるようになってきている。
【０００４】
CMOS 回路の消費電力は、負荷容量の充放電による動的消費電力と、トランジスタのリーク電流による静的消費電力に分けることができる。従来、動的消費電力が全消費電力の大部分を占めていた。そのため、プロセス技術の進歩により、性能の向上と消費電力の削減をともに実現することができていた。しかし、近年、トランジスタの閾値電圧の低下に伴って、動的消費電力は低下するものの、リーク電流が増加するために、静的消費電力の全消費電力に占める割合が高くなってきている。そのため、全消費電力を低減させるには、その静的消費電力の削減が重要な課題となってきている。
【０００５】
チップ上において、キャッシュは多くのトランジスタを使用しているため、多くのリーク電流が流れる。そのため、キャッシュのリーク電流を削減する研究がいくつも行われている。いずれの研究も、キャッシュ・ライン(以下、単に、「ライン」という。) を高リーク状態(以下、「活性状態」という。)から低リーク状態(以下、「待機状態」という。) に切替えることにより、リーク電流を削減するものである。
【０００６】
ラインの状態を切替えることによってリーク電流を削減する代表的な手法として、下記非特許文献1に開示されているCache Decay法と、非特許文献2に記載されているDrowsy Cache法とがある。Cache Decay では、ラインへの給電を停止することで、ラインを待機状態にし、リーク電流が削減される。これにより、リーク電流を大幅に削減できるという利点がある。しかし、一方で、SRAM セルがデータを保持できないため、待機ラインへのアクセスはキャッシュ・ミスヒットとなり、主記憶装置へのアクセス回数が増加して、プロセッサの性能が低下するという問題がある。一方、Drowsy Cache では、ラインの電源電圧が動的に低下されて、ラインが待機状態とされ、リーク電流が削減される。この場合、SRAM セルのデータは保持されるが、それを参照するためには、電源電圧を上げてラインを活性状態に戻す必要があり、それに要する時間がペナルティとなって、プロセッサの性能が低下する。
【０００７】
リーク電流の削減に関しては、待機状態を実現するために給電を停止するCache Decay が有利である。一方、性能低下の抑制に関しては、待機状態においてSRAM セルのデータが保持されるDrowsy Cacheが有利である。
【０００８】
つぎに、Cache Decay におけるライン状態切替え方式について述べる。Cache Decay では、各ラインへのアクセスを監視し、一定サイクル以上参照されなかったラインは待機状態へと遷移させる。これを実現させるための機構として、各ラインごとに活性状態であるか否かを示す1ビット・フラグ、ラインに対する非アクセス時間を記憶するための2ビットのローカル・カウンタと20ビットのグローバル・カウンタが必要となる。グローバル・カウンタは閾値となるサイクル数の1/4 までをカウントし、グローバル・カウンタが飽和すると、ローカル・カウンタがカウントアップする。ラインがアクセスされた場合には、ローカル・カウンタはリセットされる。そして、ローカル・カウンタが飽和したラインは1 ビット・フラグが1 にセットされ、ラインのデータ領域およびタグ領域への給電が停止され、ラインは待機状態へと遷移する。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし、アプリケーションプログラムの実行において、データ参照のパターンが、時間的に変化すると、消費エネルギーや性能低下率が、時間的に変化する。例えば、Cache Decay において、ラインを待機状態へ遷移させるために連続してアクセスがないと判定するための時間の判定閾値となるサイクル数を64K サイクルとした場合、幾つかのアプリケーションプログラムでの全消費エネルギーは、リーク電流を削減しない場合の消費エネルギーに対し、最小で36 ％、最大で81 ％となった。すなわち、ラインへの平均アクセス間隔が閾値の間隔（ここでは64Kサイクル）よりも短いプログラムでは、消費エネルギーの削減効果が小さくなり、平均アクセス間隔が閾値の間隔よりも長いプログラムでは、消費エネルギーの削減効果が大きくなる。その結果、消費エネルギーを31%に削減できたプログラムと、81%になったプログラムがあった。したがって従来方式では、消費エネルギーなどが、タスクによって大きく変動するので、消費エネルギーや性能低下率をある一定の値以下に制限したいという要求に応えることができない。すなわち、一定時間だけアクセスがないラインは、待機状態になるので、無駄に活性化させている分のエネルギー消費は抑制されるものの、活性状態にあるラインの数は、制限されずに、時間的に変動するために、消費電力や消費エネルギーも、タスクに応じて、時間的に変動することになる。
【００１０】
また、携帯機器には、発熱による温度上昇を抑えるために、消費電力をある一定の値以下に制限したいという要求や、リアルタイム性を満たすために、性能低下率をある一定の値以下に制限したいという要求がある。しかし、アプリケーションによって、要求される演算速度や、タスクを完了するまでの要求時間が異なるために、消費電力や、タクスの完了までに消費されるエネルギーの値が異なる。このために、目標とする消費電力や消費リネルギー、演算速度などを、アプリケーションプログラム毎に、又は、一つのアプリケーションにおけるデータ処理の態様毎に、設定できないとすると、消費電力、消費エネルギー、EDP、タスク実行速度、タスク終了までの使用時間など、各種の評価値を、最適化することができない。
【００１１】
従来の方法は、何れの方法であっても、消費エネルギーなどが、各タスクに応じて変動するものであり、上記の評価値を、所望の値に制御することはできなかった。
このことは、各携帯機器毎に要求される評価値を実現することができないということを意味する。
【００１２】
そこで、本発明では、目標とする性能、消費電力、消費エネルギー、EDP、単位有効実行命令数当たりの消費エネルギーなどの評価値を、目標値に制御し、又は、単位有効実行命令数当たりの消費エネルギーを最小とするように、活性ラインの数を、時間の経過に伴って、動的に制御した演算処理装置を提供することを目的とする。これにより、要求された所望の評価値を達成できる演算処理装置を実現することを発明の目的とする。
【００１３】
【非特許文献１】S．Kaxiras，et al., ”Cache Decay: Exploiting Generational Behavior to Reduce Cache Leakage Power,” Proc. of the 28th Int. Symp. on Computer Architecture, pp.240-251, June 2001.
【非特許文献２】K. Flautner, et al., ”Drowsy Caches: Simple Techniques for Reducing Leakage Power,” Proc.of the 29th Int. Symp. on Computer Architecture,pp.148-157, May 2002.
【非特許文献３】間所峻洋ほか、パイプラインステージ統合のオンチップ制御機構、情報処理学会研究報告2007-ARC-172, pp.37-42, 2007 年3 月.
【課題を解決するための手段】
【００１４】
上記課題を解決するための発明の構成は、複数のラインから構成されるキャッシュメモリと主記憶装置とを有し、キャッシュミスヒットが発生した場合には、主記憶装置からデータを読み出して、ラインに記憶する演算処理装置において、キャシュメモリのラインのうちで値を保持して活性状態とするラインを識別するための活性ライン識別情報を記憶する活性ライン識別情報メモリと、活性ライン識別情報メモリに記憶されている活性ライン識別情報により指定されるラインに給電し、残りのラインに対して給電を遮断又は給電電力を低下させた待機状態とする給電制御手段と、活性ライン識別情報メモリに記憶される活性ライン識別情報の数を所定値に制御し、その所定値を減少させる場合には、活性ライン識別情報メモリに最も古くエントリされた活性ライン識別情報から順に削除し、キャッシュミスヒットが発生した場合に、主記憶装置から読み出されたデータを記憶するラインを活性ラインとして指定する活性ライン識別情報で、活性ライン識別情報メモリに最も古くエントリされた活性ライン識別情報を書き換え更新するメモリ制御手段とを有することを特徴とする演算処理装置である。
本発明は、キャッシュの複数のラインのうちで、活性状態とするラインの数を所定値として指定でき、この所定値の数だけの活性ライン識別情報を記憶する活性ライン識別情報メモリと、待機状態のラインを活性状態とする場合に、最も古く活性状態に遷移したラインの識別情報を、新たに活性状態とするラインの活性ライン情報識別情報で書き換えるメモリ制御手段とを設けたことが特徴である。これにより、活性ラインの数を、動的に制御することができる。
【００１５】
また、他の発明は、第1の発明において、単位時間当たりのメモリの消費電力を測定する消費電力測定手段と、目標となる単位時間当たりの目標消費電力を設定する目標消費電力設定手段と、目標消費電力設定手段により設定された目標消費電力の消費電力測定手段により測定された消費電力に対する偏差の比例・積分により、所定値を変化させる制御値として演算する制御値演算手段とを、さらに、設けたものである。
本発明は、評価値を消費電力としたものである。すなわち、瞬時の消費電力が目標消費電力に追従するように、活性ラインの数が制御されることが特徴である。目標消費電力は、タスク毎に、異なる一定の値で与えられても、一つのタスク内で時間の経過と共に変化する値や、実行負荷が大きい場合に大きくなる値として、与えられても良い。
【００１６】
また、他の発明は、第１の発明において、メモリの消費エネルギーを測定する消費エネルギー測定手段と、目標消費エネルギーを設定する目標消費エネルギー設定手段と、目標消費エネルギー設定手段により設定された目標消費エネルギーの消費エネルギー測定手段により測定された消費エネルギーに対する偏差の比例・積分により、所定値を変化させる制御値として演算する制御値演算手段とを、さらに、設けたものである。
本発明は、評価値を消費エネルギー、すなわち、消費電力の時間積分としたものである。すなわち、時間的に変化するその時までの消費エネルギーが、その時までの目標消費エネルギーに追従するように、活性ラインの数が制御されることが特徴である。目標消費エネルギーは、タスク毎に、異なる一定の値で与えられても、一つのタスク内で時間の経過と共に変化する値や、実行負荷が大きい場合に大きくなる値として、与えられても良い。
【００１７】
また、他の発明は、第１の発明において、メモリの消費エネルギー遅延時間積を測定する消費エネルギー遅延時間積測定手段と、目標消費エネルギー遅延時間積を設定する目標消費エネルギー遅延時間積設定手段と、目標消費エネルギー遅延時間積設定手段により設定された目標消費エネルギー遅延時間積の消費エネルギー遅延時間積測定手段により測定された消費エネルギー遅延時間積に対する偏差の比例・積分により、所定値を変化させる制御値として演算する制御値演算手段とを、さらに、設けたものである。
本発明は、評価値を消費エネルギー遅延時間積（EDP）、すなわち、消費エネルギーの時間積分としたものである。すなわち、時間的に変化するその時までのEDPが、その時の目標EDPに追従するように、活性ラインの数が制御されることが特徴である。目標EDPは、タスク毎に、異なる一定の値で与えられても、一つのタスク内で時間の経過と共に変化する値や、実行負荷が大きい場合に大きくなる値として、与えられても良い。
【００１８】
また、他の発明は、第1の発明において、単位時間当たりの命令実行数を測定する命令実行数測定手段と、目標となる単位時間当たりの目標命令実行数を設定する目標命令実行数設定手段と、目標命令実行数設定手段により設定された目標命令実行数の命令実行数測定手段により測定された命令実行数に対する偏差の比例・積分により、所定値を変化させる制御値として演算する制御値演算手段とを、さらに、設けたものである。
本発明は、評価値を、単位時間当たりの命令実行数としたものである。すなわち、実行速度が、所定の値となるように、活性ラインの数を制御することが特徴である。この命令実行数は、有効命令実行数であり、キャッシュミスヒットなどで、命令語を繰り返し実行する場合の実行数を除いた値である。キャッシュを無限大の容量とすれば、キャッシュミスヒットは発生しないので、この仮定での、命令実行数を意味する。要するに、あるタスクを実行する場合に、無駄なく実行される有効命令実行数を意味し、タクスの性質、負荷によって、本来的に決定される値である。
【００１９】
また、他の発明は、第1の発明において、単位命令実行数当たりメモリの消費エネルギーを測定する消費エネルギー測定手段と、目標となる単位命令実行数当たりの目標消費エネルギーを設定する目標消費エネルギー設定手段と、目標消費エネルギー測定手段により設定された目標消費エネルギーの消費エネルギー測定手段により測定された消費エネルギーに対する偏差の比例・積分により、所定値を変化させる制御値として演算する制御値演算手段とを、さらに、設けたものである。
本発明は、評価値を単位命令実行数当たりの消費エネルギーとしたものである。ただし、この命令実行数は、上記で説明した有効命令実行数であり、キャッシュミスヒットなどで、命令語を繰り返し実行する場合の実行数を除いた値である。単位命令実行数当たりの消費エネルギーは、一つのタスクを完成するのに掛かった消費エネルギーを仕事量で割算した値を意味する。すなわち、この値が小さい程、低消費エネルギーで、多くの仕事ができることを意味する。仕事量に対するエネルギー消費効率を意味する。また、単位有効命令実行数当たりのEDPを制御するようにして良い。 
【００２０】
評価値には、幾つかの考え方が有り得る。消費電力は、単位時間当たりの消費エネルギーであるから、同一タスクを実行するのに、消費電力が同一でも、実行時間が長くなると、
そのタスクを実行するのに要した全消費エネルギーが大きくなる。また、同一タスクを実行するのに、総合の消費エネルギーが同一であっても、実行時間が長くなると、時間資源を無駄に使用したことになる。したがって、消費エネルギー遅延時間積（EDP)を評価値として制御すると、エネルギー資源と時間資源とを有効に用いることができる。さらに、時間資源を考慮せずに、仕事量に対するエネルギー効率だけを考えるのであれば、単位実行命令数当たりの消費エネルギーを、評価値として制御すると、エネルギー効率を最適化した制御が可能となる。さらに、単位命令実行数当たりのEDPを評価値として、制御すると、仕事量に対するEDP効率を最適化した制御が可能となる。
【００２１】
また、他の発明は、第1の発明において、単位命令実行数当たりメモリの消費エネルギーを測定する消費エネルギー測定手段と、消費エネルギー測定手段により測定された消費エネルギーが最小となるように、所定数を決定する活性ライン数決定手段とを、さらに、設けたものである。
活性ラインス数を増加させて、評価値が減少するようであれば、活性ライン数を増加させ、活性ライン数を増加させて、評価値が増加するようであれば、活性ライン数を減少させる。また、活性ライン数を減少させて、評価値が減少するようであれば、活性ラインを減少させ、活性ライン数を減少させて、評価値が増加するようであれば、活性ライン数を増加させるという制御を行うことで、評価値を極小に維持することができる。これにより、仕事量に対する最大エネルギー効率を実現できる。
【００２２】
また、他の発明は、上記の発明において、活性ライン識別情報メモリから削除された活性ライン識別情報を待機ライン識別情報として、削除された順に所定数だけ記憶する非活性化履歴情報メモリと、待機状態への切り換えをせずに、常に、活性状態とするラインの識別情報を常活性ライン識別情報として、活性状態とした順に所定数だけ記憶する常活性ライン識別情報メモリとを有し、メモリ制御手段は、活性ライン識別情報を削除する時に、その活性ライン識別情報を待機ライン識別情報として活性化履歴メモリに記憶し、キャッシュミスヒットが発生した場合において、そのアクセスしたラインの待機状態ライン識別情報が、非活性化履歴メモリに記憶されている場合には、そのラインを常に活性状態にするために、常活性ライン識別情報として、常活性ライン識別情報メモリに記憶し、給電制御手段は、常活性ライン識別情報メモリに記憶されている識別情報に対応したラインを常に活性状態としたものである。
この発明では、ラインが活性状態から待機状態になった後、そのようなラインの数が所定数以下で、再度、アクセスされた場合には、そのラインは、頻度が高くアクセルされると判定できる。このため、このラインを常活性ラインとすることで、ラインが、頻繁に活性状態と待機状態とを繰り返すことにより、演算速度が低下することを防止するようにしたことが特徴である。
【発明の効果】
【００２３】
本第１の発明は、キャッシュの複数のラインのうちで、活性状態とするラインの数を所定値として指定でき、この所定値の数だけの活性ライン識別情報を記憶する活性ライン識別情報メモリと、待機状態のラインを活性状態とする場合に、最も古く活性状態に遷移したラインの識別情報を、新たに活性状態とするラインの活性ライン識別情報で書き換えるメモリ制御手段とを設けたことにより、活性ラインの数を、動的に制御することができる。したがって、活性ライン数を動的に制御して、要求される各種の評価値を実現することができる。
【００２４】
また、他の発明は、それぞれ、評価値を、消費電力、消費エネルギー、EDP、単位時間当たりの有効命令実行数（有効実行速度）、単位有効実行命令数当たりの消費エネルギーとしたことが特徴である。そして、この評価値の測定値が、目標値に追従するように、制御するようにしているので、各タスクに応じて、適正な評価値を実現できる。これにより、消費エネルギーの節減、エネルギー資源と時間資源との節減、仕事量に対するエネルギー効率の向上、エネルギー効率の最大化、実行速度の最適化を実現することができる。
【発明を実施するための最良の形態】
【００２５】
以下、本発明を実施の形態に基づいて説明する。本発明は以下の実施形態に限定されるものではない。
【実施例１】
【００２６】
消費エネルギーや性能低下率をある一定の値以下に制限するため、活性ラインの数に着目する。活性ライン数が多ければ、静的消費電力は増加し、性能低下率は減少する。一方、活性ライン数が少なければ、消費エネルギーは減少し、性能低下率は増加する。そこで本発明は、活性ライン数を制御することで、目標とする消費エネルギーや性能低下率を達成するものである。
【００２７】
１．全体の構成
図１に、本実施例に係る演算処理装置の構成を示す。主として、ＣＰＵ１、主記憶装置２、キャッシュ（請求項のキャッシュメモリ）１０、メモリ制御装置３（請求項のモメリ制御手段）、活性ライン・バッファ２０（請求項の活性ライン識別情報メモリ）と、リーク電流削減回路１１（請求項の給電制御手段）とから構成されている。図１において、キャッシュ１０は、トランジスタ（ＳＲＡＭ）から成るメモリ１５と、そのメモリ１５の各セルのリーク電流を制御するリーク電流削減回路１１と、アドレス・デコーダ１２から成る。このキャッシュ１０のラインの活性状態（給電状態）、待機状態（給電停止状態）を制御するための活性ライン識別情報を記憶するために、活性ライン・バッファ２０と、比較回路２１とを有している。活性ライン・バッファ２０は、FIFO形式のバッファメモリであり、活性ライン数が、指定された所定値となるように制御するためのものである。メモリ１５は、主記憶装置２のアドレスを記憶するタグ・アレイ１３と、主記憶装置２に対する入出力データを記憶するデータ・アレイ１４とから構成されている。リーク電流削減回路１１は、活性ラインバッファ２０に記憶されている活性ライン識別情報に従って、ラインを活性状態にしたり、待機状態にして、メモリセルのリーク電流を削減するものである。
【００２８】
ラインの活性状態と待機状態との切替え動作の概要を以下に示す。待機状態にあるライン(Ls と表記) が、ＣＰＵ１からアクセスされ活性状態にされると、Ls の識別情報（以下、「インデクス」という。）が活性ライン・バッファ２０に書き込まれる。ただし、活性ライン数が所定値Thnormalを超える場合は、そのインデックスを消去するラインに記憶されているデータを読み出して、そのラインのタグで指定される主記憶装置２のアドレスにデータを書き込む。その後、最も古いライン(Ln と表記) のインデクスを読み出してクリアし、新たに活性状態とするラインの識別情報を活性ライン識別情報として、活性ライン・バッファ２０に書き込む。また、リーク電流削減回路１１は、活性ラインバッファ２０を、常時監視していて、それに記憶されるインデッスクのうち、活性状態の指定があるラインだけに給電を継続する。したがって、Ln のインデクスは、待機状態となるので、Lnは、活性状態から待機状態に遷移する。
【００２９】
次に、目標とする消費エネルギー、あるいは、性能低下率を達成する方法を示す。
消費エネルギー、あるいは、性能低下率は活性ライン数によって一意に決まる。そこで、所定値Thnormal を目標値と現在値を比較しながら動的に変化させ、目標値を超えないようにする。このとき、制御にはPI（比例・積分） 制御を用いる。
【００３０】
２．活性ライン・バッファ
活性ライン・バッファ２０は、活性ラインのインデクスを保持するFIFO 形式のバッファである。活性ライン数が所定値Thnormal を超えないようにするため、0 番目から(Thnormal -1) 番目のエントリを用いる。更新の際は、ラウンドロビン方式で、活性化したラインのインデクスを書き込んで行く。これにより、最も古いインデクスが最も新しいインデクスで上書きされる。つまり、FIFO 形式で更新が行われる。ただし、最も古いエントリのインデックスは、ラインを待機状態にするために必要なので、上書きされる前に読み出れて、リーク電流削減回路１１により、待機状態とされる。
【００３１】
活性ライン・バッファ２０の構成は、図２に示す通りである。図２において、点線で囲まれた部分は、活性ライン識別情報を記憶するメモリセル２００〜２０４であり、エントリを示す。活性ライン・バッファ２０は、メモリ制御装置３によって、識別情報の更新が制御される。左側に付加した数字がエントリ番号を示す。各ラインは、P flag、W flag、T flag、活性ラインのインデクスを保持する。P flag は電源のON/OFF を示す。P flagが1 のエントリは電源がON の状態であり、保持しているデータは有効なデータであることを示す。W flagはそのエントリが、活性ラインのインデクスを更新するエントリであることを示す。すなわち、記憶されている活性ライン識別情報が、最も古く記憶されたものであることを示している。W flag が1 であるエントリのインデクスを読み出すことで、最も古く活性ライン・バッファ２０に記憶された活性ライン識別情報が読み出される。
【００３２】
そして、そのエントリに、最も新しく、活性ラインにすべき活性ラインの識別情報、すなわち、インデクスを上書きする。T flagが1 であるエントリは、エントリ番号が(Thnormal-1)であることを示す。したがって、0 番エントリから、Tflag が1 であるエントリまでが、更新の対象となる。図２では、最大エントリ可能数が5、0 番エントリから2 番エントリまでのP flag が1、1 番エントリのW flag が1、2 番エントリのT flag が1 で表されている。すなわち、0番エントリから2番エントリまで、活性ラインのインデックスが記憶されており、活性ライン数を決定する所定値Thnormalが3、最も古く記憶された活性ラインのインデッスクは、1番エントリに記憶されているインデックスのラインである。
【００３３】
図２を用いて、参照／更新動作を説明する。ここで、待機状態にあるライン(L1) が活性化されたとする。このとき、まず、W flag が1 である1 番エントリに記憶されているインデックを読み出す。このインデックスは、活性ライン・バッファ２０に、最も古く記憶された活性ライン(L2) のインデクスであることを意味する。すなわち、最も古くから活性状態となっているライン(L2)のインデックスであることを意味する。そして、その1番エントリにL1 のインデクスを書き込む。そして、書き込みの終了した1 番エントリにおいてW flag を0 にリセットする。また、書き込み先のエントリがラウンドロビンに決まるように、別のエントリにW flag をセットする。この場合、書き込みの終了した1 番エントリのT flagは1 ではないので、それに隣接する2 番エントリにおいてW flag を1 にセットする。                  
【００３４】
また、次回の更新では、2 番エントリのT flag は1 であるので、それに隣接する3 番エントリではなく、先頭に戻り0 番エントリにおいてW flag を1 にセットすることで、0番エントリは、その時点で、最も古く活性状態になったラインのインデックスを記憶していることになる。このように、所定値Thnormalの数のインデックにおいて、インデックスの更新が行われる毎に、最も古く活性状態になったラインのインデックスであるを示すフラグW flagを1とするエントリの位置を順次、移動させる。
【００３５】
３．制御回路
本実施例において、制御回路は、制御値演算手段に対応する。制御対象は、消費エネルギーと性能の2 つである。どちらの場合においても、サンプリング周期をSP サイクルとする。そして、SP サイクル毎にPI 制御に基づいて制御を行う。PI 制御の制御式は（１）式で表される。
【数１】
2009134382.tif 000003
【００３６】
Δy(t) は制御対象となるパラメータ(消費エネルギー、あるいは、性能) の目標値と現在値の差であり、Kp とKi は比例定数と積分定数である。Δx(t) は、制御量であり、活性ライン数（所定値Thnormal）を変化させる量となる。
まず、消費エネルギーを制御する場合について説明する。消費エネルギーE は（２）式で表される。
【数２】
2009134382.tif 000004
【００３７】
上記の式において、SEcache はキャッシュの静的消費エネルギー、DEcache はキャッシュの動的消費エネルギー、DEmemory はメモリの動的消費エネルギーである。本実施例では、組み込み機器を想定しているため、レベル１キャッシュの下位の記憶階層は主記憶装置となる。さらに、キャッシュ・ミスヒットによって起こる影響を考えるため、主記憶装置２の動的消費エネルギーも計算に加える。SEcacheは、1 ライン当たり1SPサイクル当たりの静的消費エネルギーSEline に、各サイクルにおける活性ライン数を掛けた値のspサイクル毎の累積値で求めることができ、DEcache は、キャッシュ・アクセス1 回当たりの動的消費エネルギーDEca に、1SPサイクル当たりのキャッシュ・アクセス回数をかけた値のSPサイクル毎の累積値、DEmemory はメモリ・アクセス1 回当たりの動的消費エネルギーDEmaに1SPサイクル当たりの主記憶装置・アクセス(キャッシュ・ミスヒット) 回数をかけ値のSPサイクル毎の累積値となる。SEline は4.42E-13J、DEca は2.94E-10Jとした。これらの値は、非特許文献２を参考にした。また、DEma は、DEca の20 倍である5.88E-9J とした。このように、エネルギーの単位が極めて小さいため、KpとKi は、Δx(t) が1 以上の値となるような値とした。具体的には、106とした。Kp とKi が制御に与える影響については、後に説明する。
【００３８】
消費エネルギーを算出するための回路（請求項の消費エネルギー測定手段、消費エネルギー遅延時間積測定手段）を図3 に示す。この回路は、1SPサイクル(サンプリング周期)毎に、活性ライン数×SElineの値を累積加算する加算器３１とその累積加算値を保持するSEcacheメモリ４１と、キャッシュアクセス回数×DEcaの値を累積加算する加算器３２とその累積加算値を保持するDEcacheメモリ４２と、主記憶装置アクセス回数×DEmaの値を累積加算する加算器３３とその累積値を保持するDEmemoryメモリ４３と、SEcacheメモリ４１と、DEcacheメモリ４２と、DEmemoryメモリ４３に保持されている値を加算する加算器４４とから構成されている。
【００３９】
回路で計算する際、上で定めたエネルギー量で計算することは、計算量が大きいため、簡単化する。まず、SEline を1 とすると、DEca は665、DEma は1330 となる。それぞれの値に、各サイクルにおける活性ライン数、キャッシュ・アクセス回数、主記憶装置アクセス回数をかけて、足し合わせることで現在の消費エネルギーを計算することが出来る。
【００４０】
一方、目標値の求め方は次のようになる。まず、リーク電流の削減を行わないキャッシュを用いて実行したときに、総活性ライン数、総キャッシュ・アクセス回数、総主記憶装置アクセス回数が分かっているもののとする。これにより、あるアプリケーションプログラムを実行するのに必要な総消費エネルギーを求めることができる。次に、活性ライン数の制御を行う場合には、その総消費エネルギーに(SP ／総実行サイクル＝１SPサイクルの全実行時間に占める割合）を掛け算することで、SP サイクル内における単位目標消費エネルギーを算出する。この値は定数となるため、あらかじめ求めることが出来る。そのため、活性ラインス数の制御を行う際は、この単位消費エネルギーを、SP サイクル毎に加算することで、現時点ので総目標消費エネルギーを算出することができる。
【００４１】
上記のように、測定された消費エネルギーと与えられた目標消費エネルギーとの差に基づき（１）式で、比例積分演算を行って制御値を求める。この制御値に応じて、活性状態とするライン数の増減を制御することになる。
【００４２】
次に、性能を制御する場合について説明する。性能を制御する場合の回路（請求項の命令実行数測定手段と、目標命令実行数設定手段と、制御値演算手段）を図４に示す。加算器５１は、単位時間当たりの実際の命令実行数を累積加算する加算器５１とその値を記憶するメモリ５２と、単位時間当たりの目標命令実行数を累積加算する加算器５３とその累積値を記憶するメモリ５４とを有する。そして、加算器５３の出力と加算器５４の出力の差による比例積分演算を行う比例積分演算器５５を有している。比例積分演算器５５は、（１）式の演算を実行する装置である。特許文献３にあるように、性能を制御する場合は、実行した命令数の比較に置き換えることで簡単化できる。
【００４３】
４．評価
まず、評価環境について述べる。次に、活性ライン数が性能と消費エネルギーに与える影響について示す。その後、目標値に応じて、活性ライン数を動的に変化させた場合の評価結果を示す。
【００４４】
４−１．評価環境
シミュレータには、SimpleScalar Tool Set のスーパスカラ・プロセッサ用シミュレータを用い、提案手法を組み込んで評価した。測定条件として表1を用いた。命令セットにはMIPS R10000 を拡張したSimpleScalar/PISA を用いた。
ベンチマーク・プログラムは、SPECint2000 のbzip2、gcc、gzip、mcf、paser、perl、votex、vpr の8 本を使用した。gcc では10 億命令、その他では20 億命令をスキップした後、1000 万命令を実行した。また、今回の評価では、回路の簡単化は行わず、評価を行った。
【００４５】
【表１】
2009134382.tif 000005
【００４６】
４−２． 活性ライン数が性能と消費エネルギーに与える影響
活性ライン数が性能、あるいは、消費エネルギーに与える影響に着目する。活性ライン数の制御は行わず、活性ライン数を複数のある固定値に保ったまま各ベンチマーク・プログラムを実行し、制御可能な範囲を調べる。ただし、活性ライン数は、50 から1000 までとし、50 から200 の間は50 ずつ、200 から1000 の間は200 ずつ変化させた。
【００４７】
図５に、活性ライン数と消費エネルギーの関係を示す。グラフはベンチマーク平均であり、グラフの縦軸は、リーク電流の削減を行わないキャッシュを使用した場合の消費エネルギーで正規化した消費エネルギーを示し、横軸は活性ライン数を示す。
【００４８】
図５より、消費エネルギーは、活性ライン数を減少させるにつれて低下することが分かる。図６に、活性ライン数と性能(IPC)の関係を示す。グラフは、ベンチマーク平均であり、縦軸はリーク電流を削減しない場合のIPCで正規化したIPCを示し、横軸は活性ライン数を示す。
【００４９】
図５に示されるように、消費エネルギーは、活性ライン数を減少させるにつれて減少することが分かる。しかし、活性ライン数を100 から50 に減少させた場合には、消費エネルギーは増加する。これは、静的消費エネルギーの削減量に対して、キャッシュ・ミスヒットによるメモリの動的消費エネルギーの増加量が多くなるためである。そこで、消費エネルギーの制御を行う際には、活性ライン数を100 から1000 の間で変化させるものとする。そのため、消費エネルギーの制御範囲は34 ％から92 ％となる。また、図６に示されるように、活性ライン数を変化させることで、IPC を81 ％から98 ％の範囲で制御できることがわかる。
【００５０】
４−３．動的に活性ライン数を変化させた場合の制御
この節では、目標とする消費エネルギーEtarget に応じて活性ライン数を変化させた場合の評価結果を示す。以降は、消費エネルギーの制御についてのみ述べる。なぜなら、性能の制御は、制御の対象が変わるだけで、消費エネルギーの場合とほとんど変わらないからである。
【００５１】
まず、SP、比例定数Kp、積分定数Ki が制御に与える影響を調べる。表2 に、SP、Kp:Ki を変化させた場合の誤差を示す。
(a) はSP と誤差の関係であり、SP は8K、16K、32K、64K サイクルとした。このとき、Kp:Ki は1:1である。表より、Etarget が90 ％、70 ％のとき、SPを変化させても目標値との誤差はほとんど変わらないが、50 ％のときは、SP が大きくなるにつれて、誤差が小さくなることが分かる。
(b) は定数と誤差の関係であり、比例定数Kp と積分定数Ki の比は1:1、2:1、4:1、8:1 とした。表より、Etarget がどの場合においても、定数の比が大きくなるにつれて、誤差が小さくなることが分かる。
以上のことより、以降の評価では、SP を64K サイクル、Kp:Ki=8:1 に固定する。
【００５２】
【表２】
2009134382.tif 000006
【００５３】
図７に、Etarget を達成するように、動的に活性ライン数を変化させた場合の消費エネルギーを示す。グラフの縦軸は、リーク電流の削減を行わないキャッシュを用いた場合の消費エネルギーで正規化した消費エネルギーを示す。3本で組になった棒グラフは、左から順に、Etarget が90％、70 ％、50 ％の場合である。
【００５４】
図７より、どのベンチマークにおいても、目標となるEtarget を達成している。また、目標値との誤差が最も大きい、Etarget が50 ％のときにおいても、誤差は、2.7 ％ポイント以下に抑えている。
【００５５】
４−４．動的制御と静的制御の比較
活性ライン数を、変化させる動的制御と変化させない静的制御を比較する。動的制御においてEtarget が70 ％のときの結果と、静的制御において活性ライン数を700 とした場合の結果を比較する。これらはベンチマーク平均における正規化した消費エネルギーがほとんど同じである。
【００５６】
評価結果を、図８と図９に示す。図８は消費エネルギーの結果である。図より、動的制御の場合は静的制御の場合に比べて、消費エネルギーのバラつきが小さくなっている。
一方、図９は、そのときの性能を示している。図より、どのベンチマークにおいても、IPC は、動的制御と静的制御に違いは見られない。
【実施例２】
【００５７】
上記の構成は、評価値を消費エネルギーとしたものである。これを、単位時間当たりの消費エネルギー、すなわち、消費電力としても良い。図３の消費エネルギーの測定回路を用いて、所定時間間隔でリセットすることで、所定時間における消費エネルギーを求め、それをその測定期間の時間で割算して、消費電力を求めることができる。一方、目標消費電力は、別に設定して、（１）式により、その時の測定消費電力とその時の目標消費電力との差の比例積分演算により活性ライン数の制御値を求めるようにしても良い。この場合には、瞬時の消費電力を、所望の目標消費電力に設定することができる。一般的には、目標消費電力を大きくすると、活性ライン数が大きくなり、キャッシュミスヒット率が低下するので、単位時間当たりの有効命令実行速度が向上する。
【実施例３】
【００５８】
また、実施例１で、測定された消費エネルギーに、経過時間を掛け算することで、EDPを測定することができる。一方、目標EDPは、別に設定して、（１）式により、その時の測定EDPとその時の目標EDPとの差の比例積分演算により活性ライン数の制御値を求めるようにしても良い。この場合には、EDPを制御することができる。
【実施例４】
【００５９】
本実施例では、プロクラムカウンタの更新回数を計測するカウンタを設けて、有効実行命令数を計測するようにしたものである。そして、このカウンタを所定時間間隔でリセトする。キャッシュミスヒットの場合には、プログラムカウンタは、更新されない。したがって、このプログラムカウンタの更新回数をカウンタで計数することで、その時間間隔内での有効命令実行数を得ることができる。すなわち、この命令実行数をその間隔の時間で割算すれば、単位時間当たりの有効命令実行数を測定することができる。一方、単位時間当たりの目標命令実行数は、別に設定して、（１）式により、その時の測定命令実行数と、その時の目標命令実行数との差の比例積分演算により活性ライン数の制御値を求めるようにしても良い。この場合には、有効命令実行速度を所望の値となるように、活性ラインの数を制御することができる。
【実施例５】
【００６０】
さらに、実施例２と実施例４とを組み合わせて、実施例２と同様にして、瞬時の単位時間当たりの消費電力を求め、実施例４と同様にして、瞬時の単位時間当たりの有効命令実行数を測定する。そして、この消費電力を、単位時間当たりの有効命令実行数で、割算して、単位有効命令実行数当たりの消費エネルギーを測定する。一方、単位有効命令実行数当たりの目標消費エネルギーは、別に設定する。そして、（１）式により、その時の単位有効命令実行数当たりの測定された消費エネルギーと、単位有効命令実行数当たりの目標消費エネルギーとの差の比例積分演算により活性ライン数の制御値を求めるようにしても良い。この場合には、仕事量に対するエネルギー効率を、所望の値に制御できることになる。
【実施例６】
【００６１】
また、実施例５において、活性ラインス数を増加させて、単位有効命令実行数当たりの消費エネルギーが、減少するようであれば、活性ライン数を増加させ、活性ライン数を増加させて、単位有効命令実行数当たりの消費エネルギーが増加するようであれば、活性ライン数を減少させるように制御する。また、活性ライン数を減少させて、単位有効命令実行数当たりの消費エネルギーが減少するようであれば、活性ラインを減少させ、活性ライン数を減少させて、単位有効命令実行数当たりの消費エネルギーが増加するようであれば、活性ライン数を増加させるという制御を行うようにしたものである。この制御により、単位有効命令実行数当たりの消費エネルギーを極小に維持することができる。これにより、仕事量に対する最大エネルギー効率を実現できる。
【実施例７】
【００６２】
本実施例の特徴部分だけが、図１０に示されている。他の構成は、実施例１の図１、その他の図で示す構成と同一である。図１と同一構成部分には、同一符号が付されており、図１のＣＰＵ１、メモリ制御措置３、主記憶装置３は、図１０では省略されている。活性ライン・バッファ２０の他に、非活性化履歴バッファ６１（請求項の非活性化履歴情報メモリ）と、常活性ライン・バッファ６２（請求項の常活性ライン識別情報メモリ）とを設けたことが特徴である。
【００６３】
活性ライン・バッファ２０の機能は、実施例１と、全く同一である。非活性化履歴バッファ６１は、活性ライン・バッファ２０から削除されたラインのインデックスを、待機ライン識別情報として、削除した順に所定数だけ記憶するFIFO形式のブッファメモリであり、活性ライン・バッファ２０と同様な構成である。活性状態を示すフラグが設定されていないことのみ異なる。常活性ライン・バッファ６２は、常活性状態として順に所定数のインデックスを記憶するFIFO形式のバッファであり、活性ライン・バッファ２０と同一の構成である。ラインを活性状態とするフラグが常に設定されている点のみ異なる。メモリ制御装置３は、最も古く活性状態になった活性ラインの活性ライン識別情報を削除する時に、その活性ライン識別情報であるインデックスを、非活性化履歴バッファ６１に、非活性に遷移した順に、所定数まで、順次、記憶する。これにより、このラインは待機状態となる。また、メモリ制御装置３は、キャッシュミスヒットが発生した場合において、非活性化履歴バッファ６１を、まず、アクセスして、そのアクセスしたラインのインデックスがそのバッファ６１に記憶されている場合には、そのラインを常に活性状態にするために、そのインデックスを常活性ライン識別情報として、常活性ライン・バッファ６２に記憶させる。そして、リーク電流削減回路１１は、活性ライン・バッファ２０、常活性ライン・バッファ６２、非活性化履歴バッファ６１に記憶されているラインのインデックスの状態フラグに応じて、給電と給電の遮断とを制御する。
【００６４】
このように制御することで、ラインが活性状態から待機状態になった後、そのようなラインの数が所定数以下で、再度、アクセスされた場合には、そのラインのアクセス頻度が高いと判定することができる。このため、このラインを常活性ラインとすることで、ラインが頻繁に活性状態と待機状態とで繰り返されることにより、演算速度が低下するということを防止することができる。
【産業上の利用可能性】
【００６５】
本発明は、ＭＰＵなどの演算処理装置における消費エネルギーや実行速度などの評価値を制御して、エネルギー効率を高くするのに用いることができる。
【図面の簡単な説明】
【００６６】
【図１】本発明の実施例１の全体を示す構成図。
【図２】本発明の実施例１の活性ライン・バッファを示す構成図。
【図３】本発明の実施例１に係る消費エネルギーを測定する回路の構成図。
【図４】本発明の実施例１の実行速度を制御する制御装置を示した構成図。
【図５】本発明の実施例１の装置を評価する活性ライン数と消費エネルギーとの関係を示した特性図。
【図６】本発明の実施例１の装置を評価する活性ライン数とＩＰＣ（単位時間当たりの実行命令数）との関係を示した特性図。
【図７】本発明の実施例１の装置の消費エネルギーと各ベンチマークとの関係を示した特性図。
【図８】本発明の実施例１の装置を目標７０％にした時の消費エネルギーと、評価する各ベンチマークとの関係を、活性ライン数を７００に固定した場合の消費エネルギーに比較して示した特性図。
【図９】本発明の実施例１の装置を目標７０％にした時のＩＰＣと、評価する各ベンチマークとの関係を、活性ライン数を７００に固定した場合のＩＰＣに比較して示した特性図。
【図１０】本発明の実施例７の装置を示した構成図。
【符号の説明】
【００６７】
１０…キャッシュ
１１…リーク電流削減回路
３…メモリ制御装置
２０…活性ライン・バッファ
【図１】
2009134382.tif 000007
【図２】
2009134382.tif 000008
【図３】
2009134382.tif 000009
【図４】
2009134382.tif 000010
【図５】
2009134382.tif 000011
【図６】
2009134382.tif 000012
【図１０】
2009134382.tif 000013
【図７】
2009134382.tif 000014
【図８】
2009134382.tif 000015
【図９】
2009134382.tif 000016