(57)【要約】【課題】サービス処理の実行時に、プロセッサの適切な動作周波数及び動作電圧に設定することで、不要な電力消費を削減し、消費電力を低減することができる情報処理装置を提供することである。【解決手段】  実施の形態の情報処理装置は、プロセッサと、記憶部と、オペレーティングシステムと、動作周波数／動作電圧制御部とを有する。記憶部は、特権モードで動作する複数のサービス処理毎に予め定められた動作周波数及び動作電圧が記憶されている。オペレーティングシステムは、複数のサービス処理のいずれかが呼び出されると、呼び出されたサービス処理に対応した動作周波数及び動作電圧を記憶部から読み出す。動作周波数／動作電圧制御部は、プロセッサの動作周波数及び動作電圧を、オペレーティングシステムにより読み出された呼び出されたサービス処理に対応した動作周波数及び動作電圧に変更する。【選択図】図１
2014186615.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
特権モードで動作する複数のサービス処理毎に予め定められた動作周波数及び動作電圧が記憶された記憶部と、
前記複数のサービス処理のいずれかが呼び出されると、前記呼び出されたサービス処理に対応した動作周波数及び動作電圧を前記記憶部から読み出すオペレーティングシステムと、
前記プロセッサの動作周波数及び動作電圧を、前記オペレーティングシステムにより読み出された前記呼び出されたサービス処理に対応した動作周波数及び動作電圧に変更する動作周波数／動作電圧制御部と、
を備えたことを特徴とする情報処理装置。
【請求項２】
前記オペレーティングシステムは、前記複数のサービス処理のいずれかが呼び出されると、呼び出された時点の前記プロセッサの動作周波数及び動作電圧を前記記憶部に記憶することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記オペレーティングシステムは、前記呼び出されたサービス処理の実行が終了すると、前記プロセッサの動作周波数及び動作電圧を、前記記憶部に記憶された前記呼び出された時点の前記プロセッサの動作周波数及び動作電圧に変更するように前記動作周波数／動作電圧制御部を制御することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記オペレーティングシステムは、前記呼び出されたサービス処理に対応した動作周波数及び動作電圧が、前記呼び出された時点の前記プロセッサの動作周波数及び動作電圧より高い場合、前記呼び出された時点の前記プロセッサの動作周波数及び動作電圧で前記呼び出されたサービス処理を実行することを特徴とする請求項２に記載の情報処理装置。
【請求項５】
特権モードで動作する複数のサービス処理のいずれかが呼び出されると、前記複数のサービス処理毎に予め定められた動作周波数及び動作電圧が記憶された記憶部から、前記呼び出されたサービス処理に対応した動作周波数及び動作電圧を読み出し、
プロセッサの動作周波数及び動作電圧を、前記読み出された前記呼び出されたサービス処理に対応した動作周波数及び動作電圧に変更することを特徴とする動作周波数／動作電圧制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施の形態は、情報処理装置及び動作周波数／動作電圧制御方法に関する。
【背景技術】
【０００２】
従来、パーソナルコンピュータ等の情報処理装置は、低消費電力技術として、ＤＶＦＳ（Dynamic Voltage and Frequency Scaling）や電源遮断等が一般的に用いられている。この情報処理装置は、一般的に、ユーザアプリケーションを実行している時と、オペレーティングシステムによるサービス処理を実行している時とを区別せずに、ＤＶＦＳ制御や電源遮断等を行っていた。
【０００３】
ところが、オペレーティングシステムによるサービス処理は、メモリアクセスが多い、キャッシュミスが起きやすいなどの特徴があり、プロセッサの実行がストールしやすい。プロセッサの実行がストールしてメインメモリやキャッシュメモリにアクセスする場合、実行時間は、プロセッサの動作周波数及び動作電圧に依存せず、メインメモリやキャッシュメモリの性能によって決まる。したがって、サービス処理を実行している場合、プロセッサの動作周波数及び動作電圧を下げ、演算能力を下げても、処理時間に対する影響は少ないことがある。一方、プロセッサの演算機能を多用するアプリケーションを実行している時には、実行時間を速くするために、プロセッサの動作周波数及び動作電圧を高くし、プロセッサの演算能力を高くする必要がある。
【０００４】
しなしながら、従来では、システムコールにより、アプリケーションの実行からオペレーティングシステムによるサービス処理に遷移した後も、プロセッサの動作周波数及び動作電圧はアプリケーションの実行時の高い動作周波数及び動作電圧のまま変化せず、無駄に電力を消費することになっていた。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−３１０７５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の実施の形態の課題は、サービス処理の実行時に、プロセッサの適切な動作周波数及び動作電圧に設定することで、不要な電力消費を削減し、消費電力を低減することができる情報処理装置を提供することである。
【課題を解決するための手段】
【０００７】
実施の形態の情報処理装置は、プロセッサと、記憶部と、オペレーティングシステムと、動作周波数／動作電圧制御部とを有する。記憶部は、特権モードで動作する複数のサービス処理毎に予め定められた動作周波数及び動作電圧が記憶されている。オペレーティングシステムは、複数のサービス処理のいずれかが呼び出されると、呼び出されたサービス処理に対応した動作周波数及び動作電圧を記憶部から読み出す。動作周波数／動作電圧制御部は、プロセッサの動作周波数及び動作電圧を、オペレーティングシステムにより読み出された呼び出されたサービス処理に対応した動作周波数及び動作電圧に変更する。
【図面の簡単な説明】
【０００８】
【図１】一実施の形態に係る情報処理装置のハードウエアの構成を示すブロック図である。
【図２】情報処理装置１のソフトウエアの構成を説明するための図である。
【図３】ＯＳ１２が実行するサービス処理の例を説明するための図である。
【図４】サービス処理Ａ〜Ｚ毎に予め定めた動作周波数及び動作電圧について説明するための図である。
【図５】動作周波数と実行時間との関係を説明するための図である。
【図６】動作周波数と実行時間との関係を説明するための図である。
【図７】サービス処理Ａの動作周波数及び動作電圧毎の実行時間の例を説明するための図である。
【図８】サービス処理Ａ〜Ｚを実行時の動作周波数及び動作電圧の変更処理について説明するためのフローチャートである。
【図９】サービス処理Ａ〜Ｚを実行時の動作周波数及び動作電圧の変更処理の他の例について説明するためのフローチャートである。
【発明を実施するための形態】
【０００９】
以下、図面を参照して本発明の一実施の形態について詳細に説明する。
【００１０】
まず、図１に基づき、一実施の形態に係る情報処理装置の構成について説明する。
【００１１】
図１は、一実施の形態に係る情報処理装置のハードウエアの構成を示すブロック図である。
【００１２】
図１に示すように、情報処理装置１は、複数のプロセッサ２ａ、２ｂ・・・２ｎと、キャッシュメモリ３と、メインメモリ４と、動作周波数／動作電圧制御部５と、バス６〜８とを有して構成されている。また、複数のプロセッサ２ａ、２ｂ・・・２ｎは、それぞれキャッシュメモリ９ａ、９ｂ・・・９ｎを有して構成されている。
【００１３】
プロセッサ２ａ〜２ｎ及び動作周波数／動作電圧制御部５は、互いにバス６を介して接続されている。また、プロセッサ２ａ〜２ｎ及びキャッシュメモリ３は、互いにバス７を介して接続され、キャッシュメモリ３及びメインメモリ４は、互いにバス８を介して接続されている。
【００１４】
メインメモリ４には、プロセッサ２ａ〜２ｎにおいて実行されるプログラム及びデータが記憶される。メインメモリ４に記憶されたプログラムは、１次キャッシュであるキャッシュメモリ３にロードされた後、２次キャッシュであるキャッシュメモリ９ａ〜９ｎにロードされ、プロセッサ２ａ〜２ｎにおいてプログラムが実行される。
【００１５】
動作周波数／動作電圧制御部５は、後述するオペレーティングシステムが実行するするサービス処理やアプリケーションに対応した動作周波数及び動作電圧で動作するように、プロセッサ２ａ〜２ｎの動作周波数及び動作電圧を制御する。
【００１６】
図２は、情報処理装置１のソフトウエアの構成を説明するための図である。図２に示すように、情報処理装置１は、ＣＰＵ等のハードウエア１１と、ハードウエア１１上において実行されるプログラム群とから構成されているアプリケーションシステムである。そのシステムにおいて実行されるプログラム群は、オペレーティングシステム（以下、ＯＳという）１２と、ＯＳ１２上に設けられた複数のアプリケーション１３とを含んで構成されている。このシステム上では、各種サービスを提供する特権モードで動作するＯＳ１２が動作し、その上でアプリケーション１３が動作する。
【００１７】
本実施の形態のＯＳ１２は、プロセス管理及びメモリ管理等の機能を持ち、アプリケーション１３に対し、プロセス生成や終了、メモリ割り当てや解放等のサービス処理を提供するこれらの機能及びサービス処理は、それぞれが小さな機能を実現する関数群の集合である。ここで、本実施の形態のＯＳ１２が実行するサービス処理の構成例について、図３を用いて説明する。
【００１８】
図３は、ＯＳ１２が実行するサービス処理の例を説明するための図である。なお、以下の説明では、プロセッサ２ａについて説明するが、他のプロセッサ２ｂ〜２ｎでのサービス処理もプロセッサ２ａと同様である。
【００１９】
アプリケーション１３がＯＳ１２のサービス処理を呼び出すときには、プロセッサ２ａに備わっている特権モードへ移行する命令を実行する。特権命令を実行する際には、引数に利用したいサービス処理を指定する。命令が実行されると、プロセッサ２ａのモードが特権モードへ変更され、ＯＳ１２内の所定のアドレス（以後、エントリポイント１４と呼ぶ）にジャンプする。
【００２０】
エントリポイント１４は、予め決まっており、ＯＳ１２起動時に、プロセッサ２ａの所定の例外ベクタに書き込まれる。エントリポイント１４からは、アプリケーション１３が利用したいサービス処理毎に分岐する命令群が配置されている。
【００２１】
図３に示すように、エントリポイント１４からは、サービス処理Ａ、Ｂ、・・・Ｚが分岐されている。サービス処理Ａは、それぞれが小さな機能を実現する関数Ａ１〜Ａ３の関数群の集合で構成され、サービス処理Ｂは、それぞれが小さな機能を実現する関数Ｂ１〜Ｂ５の関数群の集合で構成され、サービス処理Ｚは、それぞれが小さな機能を実現する関数Ｚ１〜Ｚ４の関数群の集合で構成されている。
【００２２】
ＯＳ１２は、これらのサービス処理Ａ〜Ｚに分岐する前に、現在のプロセッサ２ａの動作周波数及び動作電圧を記憶し、サービス処理Ａ〜Ｚ毎に予め定めた動作周波数及び動作電圧に変更するよう、動作周波数／動作電圧制御部５を制御する命令群を実行した後、分岐して指定されたサービス処理Ａ〜Ｚのいずれかを実行する。例えば、この例では、サービス処理Ａが実行されたものとする。
【００２３】
動作周波数／動作電圧制御部５は、ＯＳ１２の制御に基づき、現在のプロセッサ２ａの動作周波数及び動作電圧を記憶する。現在のプロセッサ２ａの動作周波数及び動作電圧は、例えば、キャッシュメモリ９ａ、キャッシュメモリ３あるいはメインメモリ４に記憶される。また、動作周波数／動作電圧制御部５は、プロセッサ２ａの動作周波数及び動作電圧を、予め定められているサービス処理Ａに対応した動作周波数及び動作電圧に変更する。これにより、サービス処理Ａは、変更された動作周波数及び動作電圧で処理が実行される。
【００２４】
ＯＳ１２は、サービス処理Ａの実行が終わると、プロセッサ２ａの動作周波数及び動作電圧をサービス処理の呼び出し前に戻す命令群を実行した後、特権モードから復帰する命令を実行し、出口１５からアプリケーション１３に戻る。これにより、プロセッサ２ａの動作周波数及び動作電圧は、キャッシュメモリ９ａ、キャッシュメモリ３あるいはメインメモリ４に記憶されている、サービス処理の呼び出し前の動作周波数及び動作電圧に変更される。
【００２５】
ここで、サービス処理Ａ〜Ｚ毎に予め定めた動作周波数及び動作電圧について、図４を用いて説明する。
【００２６】
図４は、サービス処理Ａ〜Ｚ毎に予め定めた動作周波数及び動作電圧について説明するための図である。
【００２７】
図４に示すように、サービス処理Ａ〜Ｚと、サービス処理Ａ〜Ｚに対応した動作周波数と動作電圧との組が対応付けられたテーブル１６が、例えば記憶部としてのメインメモリ４に記憶されている。この動作周波数と動作電圧との組を（ｆ，Ｖ）と表す。例えば、サービス処理Ａでは、（ｆＡ，ＶＡ）という動作周波数及び動作電圧が予め定められており、サービス処理Ｚでは、（ｆＺ，ＶＺ）という動作周波数及び動作電圧が予め定められている。
【００２８】
ＯＳ１２は、サービス処理Ａをプロセッサ２ａで実行する場合、テーブル１６に記憶された（ｆＡ，ＶＡ）の動作周波数及び動作電圧を読み出し、動作周波数／動作電圧制御部５にこの値を設定する。動作周波数／動作電圧制御部５は、プロセッサ２ａの動作周波数及び動作電圧を、設定された（ｆＡ，ＶＡ）の動作周波数及び動作電圧に変更する。これにより、サービス処理Ａが予め定められた（ｆＡ，ＶＡ）の動作周波数及び動作電圧で実行される。
【００２９】
次に、エントリポイント１４に入った直後に、実行するサービス処理Ａ〜Ｚに対応した動作周波数及び動作電圧の決定方法の例を説明する。
【００３０】
図５及び図６は、動作周波数と実行時間との関係を説明するための図である。
【００３１】
図５に示す曲線１７は、アプリケーション１３が実行される場合の動作周波数と実行時間との関係を示し、曲線１８は、ＯＳ１２によるサービス処理Ａ〜Ｚが実行される場合の動作周波数と実行時間と示している。
【００３２】
プロセッサ２ａ〜２ｎの処理性能（アプリケーション１３やサービス処理Ａ〜Ｚの実行時間）は、図５に示すように、動作周波数に反比例する。しかしながら、実際には、メモリアクセスがあった場合にはキャッシュアクセスが発生し、さらに、キャッシュミスした場合にはメインメモリ４へのアクセスが発生する。この場合、キャッシュアクセスやメインメモリ４へのアクセスが完了するまで、アプリケーション１３やサービス処理Ａ〜Ｚの実行がストールする。従って、動作周波数を１／２にした場合、演算処理等の命令の実行時間は２倍に伸びるが、メモリアクセスに伴うストール時間は変わらないため、実際の実行時間は２倍未満となる。このような傾向を模式的に図６に示す。
【００３３】
図６は、アプリケーション１３をある動作周波数ｆで実行、及び、ある動作周波数ｆを１／２にして実行した場合の実行時間を示している。同様に、図６は、サービス処理Ａ〜Ｚをある動作周波数ｆで実行、及び、ある動作周波数ｆを１／２にして実行した場合の実行時間を示している。
【００３４】
図６に示すように、ある動作周波数ｆを１／２にしてアプリケーション１３及びサービス処理Ａ〜Ｚを実行した場合、演算処理の実行時間は２倍になる。これに対し、ストール時間は、ある動作周波数ｆを１／２にして実行した場合でも変化がない。そのため、実際の実行時間は、ある動作周波数ｆを１／２にしてアプリケーション１３及びサービス処理Ａ〜Ｚを実行した場合でも、２倍未満となる。
【００３５】
ここで、プロセッサ２ａ〜２ｎは、複数の動作可能な動作周波数と動作電圧との組を有する。この動作周波数と動作電圧との組を（ｆ，Ｖ）と表すことにし、動作周波数と動作電圧との組がn組設定可能とする。この場合、ｎ組の動作周波数と動作電圧とは、それぞれ（ｆ１，Ｖ１）〜（ｆｎ，Ｖｎ）と表される。
【００３６】
サービス処理Ａ〜Ｚ毎に、（ｆ１，Ｖ１）〜（ｆｎ，Ｖｎ）までのn組について、それぞれの実行時間を測定する。なお、プロセッサの消費電力は、一般にｆ×Ｖ2に比例することが知られており、（ｆ，Ｖ）を下げるほど、消費電力は下がる。
【００３７】
動作周波数と動作電圧との組を８（ｎ＝８）とし、あるサービス処理（ここでは、サービス処理Ａとする）の実行時間を（ｆ１，Ｖ１）〜（ｆ８，Ｖ８）毎に測定した例を図７に示す。
【００３８】
図７は、サービス処理Ａの動作周波数及び動作電圧毎の実行時間の例を説明するための図である。
【００３９】
図７の例では、（ｆ１，Ｖ１）が低動作周波数及び低動作電圧側であり、（ｆ８，Ｖ８）が高動作周波数及び高動作電圧側である。例えば、（ｆ１，Ｖ１）の動作周波数及び動作電圧では、サービス処理Ａの実行時間が２５０（ｍｓ）であり、（ｆ８，Ｖ８）の動作周波数及び動作電圧では、サービス処理Ａの実行時間が１００（ｍｓ）である。
【００４０】
例えば、サービス処理Ａの実行時間が最速の実行時間（図７の例では、１００（ｍｓ））に対し、１０％の遅延を許容できる場合には、サービス処理Ａの動作周波数及び動作電圧として（ｆ６，Ｖ６）を選択することができる。従って、サービス処理Ａの実行時には、プロセッサ２ａの動作周波数及び動作電圧を（ｆ６，Ｖ６）に設定するようにすることで、サービス処理Ａの実行時の消費電力を削減することが可能となる。すなわち、この（ｆ６，Ｖ６）が図４のサービス処理Ａの動作周波数及び動作電圧である（ｆＡ，ＶＡ）として、テーブル１６に記憶される。
【００４１】
このような実行時間を他の全てのサービス処理Ｂ〜Ｚについて測定することで、例えば１０％の実行時間の遅延を許容する（ｆ，Ｖ）を、他の全てのサービス処理Ｂ〜Ｚについても決定することができる。このように決定された動作周波数及び動作電圧が、図４のテーブル１６としてメインメモリ４に記憶される。そして、ＯＳ１２は、この決定された動作周波数及び動作電圧の値に従い、エントリポイント１４からサービス処理Ａ〜Ｚの実行に分岐する際に、動作周波数／動作電圧制御部５を制御することで、サービス処理Ａ〜Ｚのいずれかを実行時の消費電力を削減することが可能となる。
【００４２】
次に、このように構成された情報処理装置１の動作について説明する。
【００４３】
図８は、サービス処理Ａ〜Ｚを実行時の動作周波数及び動作電圧の変更処理について説明するためのフローチャートである。
【００４４】
まず、あるサービス処理（ここでは、サービス処理Ａとする）が呼び出されると、現在の動作周波数及び動作電圧が記憶される（ステップＳ１）。この現在の動作周波数及び動作電圧は、キャッシュメモリ９ａ〜９ｎ、キャッシュメモリ３あるいはメインメモリ４に記憶される。次に、呼び出されたサービス処理Ａに対応する動作周波数及び動作電圧が求められる（ステップＳ２）。このステップＳ２の処理では、図４のテーブル１６からサービス処理Ａに対応する動作周波数及び動作電圧である（ｆＡ，ＶＡ）が求められる。
【００４５】
次に、動作周波数／動作電圧制御部５に求められた動作周波数及び動作電圧の値が設定される（ステップＳ３）。このステップＳ３の処理により、動作周波数／動作電圧制御部５によって、例えばプロセッサ２ａの動作周波数及び動作電圧がサービス処理Ａに対応した動作周波数及び動作電圧に変更される。
【００４６】
次に、変更された動作周波数及び動作電圧でサービス処理Ａが実行される（ステップＳ４）。そして、ステップＳ１において記憶した動作周波数及び動作電圧が読み出され（ステップＳ５）、動作周波数／動作電圧制御部５に読み出された値が設定され（ステップＳ６）、処理を終了する。このステップＳ６の処理により、動作周波数／動作電圧制御部５によって、例えばプロセッサ２ａの動作周波数及び動作電圧がサービス処理Ａを呼び出す前の動作周波数及び動作電圧に変更される。
【００４７】
なお、図８のフローチャートの処理では、サービス処理Ａの実行時の動作周波数及び動作電圧を予め決定した値に常に設定していたが、より消費電力を抑えたい場合で、かつサービス処理Ａの実行時間に関する制約が緩い場合、サービス処理Ａの読み出し時の動作周波数及び動作電圧で実行してもよい。このような処理を図９に示す。
【００４８】
図９は、サービス処理Ａ〜Ｚを実行時の動作周波数及び動作電圧の変更処理の他の例について説明するためのフローチャートである。なお、図９において、図８と同様の処理については同一の符号を付して説明を省略する。
【００４９】
ステップＳ２において、呼び出されたサービス処理Ａに対応する動作周波数及び動作電圧が求められると、現在の動作周波数の方が求められた動作周波数より低いか否かが判定される（ステップＳ１１）。現在の動作周波数の方が求められた動作周波数より低くないと判定された場合、ＮＯとなり、ステップＳ３〜Ｓ６と同様の処理が実行され、処理を終了する。
【００５０】
一方、現在の動作周波数の方が求められた動作周波数より低いと判定された場合、ＹＥＳとなり、現在の動作周波数及び動作電圧でサービス処理Ａが実行され（ステップＳ１２）、処理を終了する。
【００５１】
以上のように、情報処理装置１は、サービス処理Ａ〜Ｚのそれぞれについて、複数の動作周波数及び動作電圧で計測した実行時間を測定し、この測定結果に応じたサービス処理Ａ〜Ｚ毎の動作周波数及び動作電圧を決定したテーブル１６をメインメモリ４に記憶している。そして、情報処理装置１は、システムコールによりＯＳ１２のサービス処理Ａ〜Ｚのいずれかに遷移した際に、プロセッサ２ａ〜２ｎの動作周波数及び動作電圧を、サービス処理Ａ〜Ｚ毎に予め決められたテーブル１６の動作周波数及び動作電圧に設定してサービス処理Ａ〜Ｚを実行する。そして、情報処理装置１は、サービス処理Ａ〜Ｚから戻る際に、サービス処理Ａ〜Ｚに遷移時の動作周波数及び動作電圧に戻すことにより、サービス処理Ａ〜Ｚを実行時の消費電力を削減するようにしている。
【００５２】
よって、本実施の形態の情報処理装置によれば、サービス処理の実行時に、プロセッサの適切な動作周波数及び動作電圧に設定することで、不要な電力消費を削減し、消費電力を低減することができる。
【００５３】
本発明のいくつかの実施の形態を説明したが、これらの実施の形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施の形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施の形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５４】
１…情報処理装置、２ａ〜２ｎ…プロセッサ、３，９ａ〜９ｎ…キャッシュメモリ、４…メインメモリ、５…動作周波数／動作電圧制御部、６〜８…バス、１１…ハードウエア、１２…オペレーティングシステム、１３…アプリケーション、１４…エントリポイント、１５…出口、１６…テーブル。
【図１】
2014186615.tif 000003
【図２】
2014186615.tif 000004
【図３】
2014186615.tif 000005
【図４】
2014186615.tif 000006
【図５】
2014186615.tif 000007
【図６】
2014186615.tif 000008
【図７】
2014186615.tif 000009
【図８】
2014186615.tif 000010
【図９】
2014186615.tif 000011