(57)【要約】【課題】電源供給の状態に基づいて、プロセッサコア毎にクロック信号を供給又は停止する制御を行うことにより消費電力を低減する。【解決手段】プロセッサ装置１は、複数のプロセッサコア１５を搭載するマルチコアプロセッサ１１と、電源供給の状態を検知し、クロック信号を供給するあるいは供給しないプロセッサコア１５を指定するための制御信号を出力するシステムコントローラ１２と、制御信号に基づいて、クロック信号を供給するあるいは供給しないプロセッサコア１５の指定を制御する制御回路１６とを有する。【選択図】図１
2009193536.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサコアを搭載するマルチコアプロセッサと、
電源供給の状態を検知し、クロック信号を供給するあるいは供給しないプロセッサコアを指定するための制御信号を出力するシステムコントローラと、
前記制御信号に基づいて、前記クロック信号を供給するあるいは供給しないプロセッサコアの指定を制御する制御部と、
を有することを特徴とするプロセッサ装置。
【請求項２】
前記システムコントローラは、前記クロック信号を供給するあるいは供給しないプロセッサコアを指定するための情報が格納されている設定データを有し、
前記設定データは、ユーザからの指示に応じて設定又は変更可能なことを特徴とする請求項１に記載のプロセッサ装置。
【請求項３】
前記システムコントローラは、前記電源供給の状態がACアダプタからバッテリに変化した又はバッテリの残量が所定値以下まで低下した場合、クロック信号を供給しないプロセッサを指定するための前記制御信号を前記制御部に出力することを特徴とする請求項１又は請求項２に記載のプロセッサ装置。
【請求項４】
前記システムコントローラは、演算の処理量が増大した場合、クロック信号を供給していない全部又は所定数のプロセッサコアに対し、クロック信号を強制供給するための前記制御信号を前記制御部に出力することを特徴とする請求項１から請求項３の何れか１項に記載のプロセッサ装置。
【請求項５】
前記クロック信号を強制供給する場合、前記演算の処理量に応じた所定数のプロセッサコアに対して、前記クロック信号を強制供給することを特徴とする請求項４に記載のプロセッサ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ装置に関し、特に、電源供給の状態を検知し、クロック信号を供給するあるいは供給しないプロセッサコアを指定するようにしたプロセッサ装置に関する。
【背景技術】
【０００２】
近年、コンピュータの処理性能を増大させるため、１つのチップに複数のプロセッサコアを搭載したマルチコアプロセッサが採用されている。このマルチコアプロセッサを搭載したプロセッサ装置では、複数のプロセッサコアが複数のプログラムを並列に処理することにより、処理性能の向上が図られている。
【０００３】
ところが、複数のプロセッサコアが搭載されたプロセッサ装置は、複数のプロセッサコアが同時に動作するため、消費電力の増大が問題となる。
【０００４】
そこで、プロセッサコアの使用率に基づいて、使用するプロセッサコアを制御するプロセッサ装置が提案されている（例えば、特許文献１参照）。
【０００５】
例えば、ノート型パーソナルコンピュータ等では、使用環境によってはバッテリにより電力を供給することがある。ところが、バッテリにより電力を供給している場合、ACアダプタのように安定して電力を供給できない使用環境であることが多く、プロセッサコアの使用率に基づいて、動作するプロセッサコアを多くすると、バッテリの残量が直ぐに低下してしまう。
【０００６】
よって、特許文献１に記載のプロセッサ装置では、電源供給の状態を考慮して消費電量の低減をすることができないという問題があった。
【特許文献１】米国特許出願公開第２００７／０１８８１８６号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００７】
そこで、本発明は、電源供給の状態に基づいて、プロセッサコア毎にクロック信号を供給又は停止する制御を行うことにより消費電力を低減することができるプロセッサ装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一態様によれば、複数のプロセッサコアを搭載するマルチコアプロセッサと、電源供給の状態を検知し、クロック信号を供給するあるいは供給しないプロセッサコアを指定するための制御信号を出力するシステムコントローラと、前記制御信号に基づいて、前記クロック信号を供給するあるいは供給しないプロセッサコアの指定を制御する制御部と、を有することを特徴とするプロセッサ装置を提供することができる。
【発明の効果】
【０００９】
本発明のプロセッサ装置によれば、電源供給の状態に基づいて、プロセッサコア毎にクロック信号を供給又は停止する制御を行うことにより消費電力を低減することができる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して本発明の実施の形態を詳細に説明する。  
図１は、本発明の一実施の形態に係るプロセッサ装置のハードウエアの構成を示すブロック図である。本実施の形態のプロセッサ装置１は、マルチコアプロセッサ１１と、システムコントローラ１２とが１チップに集積されて構成されている。なお、マルチコアプロセッサ１１と、システムコントローラ１２とが別々のチップに集積されていてもよい。
【００１１】
プロセッサ装置１の外には、システム電源１３及び電源マイクロコンピュータ（以下、電源マイコンという）１４を有している。システム電源１３は、プロセッサ装置１に電力を供給するための電源であり、例えば、ACアダプタ及びバッテリ等である。電源マイコン１４は、プロセッサ装置１の電源監視及び制御を行う。また、電源マイコン１４は、システム電源１３の電源供給の状態を検知し、検知した電源供給の状態の変化に応じて割り込み信号を発生して、システムコントローラ１２に通知する。ここで、電源供給の状態の変化とは、電源がACアダプタからバッテリに変化した場合、電源がバッテリからACアダプタに変化した場合、或いは、バッテリの残量が低下した場合等である。
【００１２】
マルチコアプロセッサ１１は、複数の、ここではプロセッサコアAからプロセッサコアHまで８個のプロセッサコア１５と、制御回路１６とを有して構成されている。なお、複数のプロセッサコア１５は、別々のチップに集積されているマルチプロセッサの構成でもよい。各プロセッサコア１５には、後述する制御回路１６からクロック信号CLKが供給される。各プロセッサコア１５は、このクロック信号CLKに基づいて、演算等の処理を行う。
【００１３】
制御回路１６には、クロック信号CLKが入力される。制御回路１６は、このクロック信号CLKを分配し、各プロセッサコア１５に供給する。また、制御回路１６には、後述するシステムコントローラ１２からの制御信号CSが入力され、制御回路１６は、この制御信号CSに基づいて、各プロセッサコア１５にクロック信号CLKを個別に供給するか否かの制御を行う。即ち、制御回路１６は、制御信号CSに基づいて、クロック信号CLKを供給するかあるいは供給しないプロセッサコア１５の指定を制御する。
【００１４】
システムコントローラ１２は、システムコントローラ１２の中のメモリに記憶されるプロセッサコア状態テーブル１７及び設定データ１８を含んで構成されている。設定データ１８には、プロセッサコア１５をON又はOFFにするためのデータが格納されている。ここで、プロセッサコア１５をONにするとは、プロセッサコア１５にクロック信号CLKを供給することであり、プロセッサコア１５をOFFにするとは、プロセッサコア１５にクロック信号CLKの供給を停止することである。
【００１５】
また、システムコントローラ１２は、電源マイコン１４からのリセット及び割り込み制御等を行うと共に、電源マイコン１４からシステム電源１３の電源の状態が通知されると、設定データ１８を参照して、各プロセッサコア１５にクロック信号CLKを個別に供給するか否かの制御を行うための制御信号CSを制御回路１６に出力する。
【００１６】
図２は、本実施の形態に係るプロセッサ装置のソフトウエアの構成を示すブロック図である。図２に示すように、プロセッサ装置１は、複数のプロセッサコア１５を有するハードウエア２１と、ハードウエア２１上において実行されるプログラム群とから構成されているアプリケーションシステムである。そのシステムにおいて実行されるプログラム群は、オペレーティングシステム（以下、OSという）２２と、OS２２上に設けられた複数のアプリケーション２３とを含んで構成されている。
【００１７】
OS２２は、複数のアプリケーション２３の処理を複数のプロセッサコア１５内、動作中のプロセッサコア１５のリソースのそれぞれに割り当てる処理を行う。また、OS２２は、プロセッサコア１５のリソースの開放処理等も行う。ここで、リソースの開放処理とは、全てのプロセッサコア１５が、その開放されるリソースを使用できない状態にすることである。また、プロセッサコア１５のリソースとは、例えば、ローカルメモリ、演算ユニット及びI/O等である。
【００１８】
ここで、システムコントローラ１２に含まれるプロセッサコア状態テーブル１７について説明する。図３は、プロセッサコア状態テーブルの例を説明するための説明図である。図３に示すように、プロセッサコア１５毎にON状態かOFF状態かを示す１ビットの情報が対応付けられている。テーブルの値が０の場合、対応するプロセッサコア１５がOFF状態を示し、テーブルの値が１の場合、対応するプロセッサコア１５がON状態を示す。図３の例では、プロセッサコアA及びプロセッサコアHがOFF状態であり、プロセッサコアB及びプロセッサコアCがON状態である。
【００１９】
上述したように、システムコントローラ１２は、このプロセッサコア状態テーブル１７を参照し、プロセッサコア１５に供給されるクロック信号CLKを制御する。
【００２０】
次に、このように構成された実施の形態の動作について説明する。  
先ず、システム電源１３がONにされた時に、具体的には、ユーザがACアダプタ又はバッテリを用いプロセッサ装置１に電力を供給した時に、所定のプロセッサコア１５をOFFにする処理について説明する。図４は、電源ON時のプロセッサコアOFFの処理の流れの例を示すフローチャートである。
【００２１】
先ず、システム電源１３がONにされると図4の処理が開始される。電源マイコン１４は、電源供給源がバッテリか否かを検出する（ステップＳ１）。電源マイコン１４は、システム電源１３から供給される電圧のレベルを検知し、電源供給源を検出する。電源供給源がバッテリではない場合、即ち、ACアダプタの場合、NOとなり、通常起動の処理が実行される（ステップＳ２）。この通常起動の処理とは、全てのプロセッサコア１５にクロック信号CLKを供給することである。電源供給源がバッテリの場合、YESとなり、電源マイコン１４からシステムコントローラ１２にバッテリの駆動を通知する（ステップＳ３）。
【００２２】
システムコントローラ１２は、電源マイコン１４からバッテリ駆動の通知を受けると、設定データ１８を参照して、OFFにするプロセッサコア１５を指定し、OS２２に通知する（ステップＳ４）。なお、設定データ１８は、複数あってもよい。また、複数ある設定データ１８の内、どの設定データを参照するかをユーザにより設定するようにしてもよい。OS２２は、指定されたプロセッサコア１５のリソース開放処理を実施（ステップＳ５）した後、システムコントローラ１２に指定されたプロセッサコア１５のリソース開放処理の完了を通知する（ステップＳ６）。
【００２３】
システムコントローラ１２は、OS２２からリソース開放処理の完了の通知を受けると、指定したプロセッサコア１５にクロック信号CLKの供給を停止する（ステップＳ７）。最後に、システムコントローラ１２は、プロセッサコア状態テーブル１７を更新し（ステップＳ８）、処理を終了する。
【００２４】
以上の処理の結果、システム電源１３がONされると、電源供給源がACアダプタの場合、全てのプロセッサコア１５にクロック信号CLKを供給し、電源供給源がバッテリの場合、システムコントローラ１２が指定したプロセッサコア１５にクロック信号CLKの供給を停止するようにした。この結果、電源供給源がバッテリの場合、所定のプロセッサコア１５だけにクロック信号CLKが供給されるため、消費電力を低減することができる。
【００２５】
次に、システム電源１３がONにされた時以外に、所定のプロセッサコア１５をOFFにする処理について説明する。図５は、電源ON時以外のプロセッサコアOFFの処理の流れの例を示すフローチャートである。ステップＳ４からステップＳ８は、上述した図４の処理と同様であるため説明を省略する。
【００２６】
先ず、電源マイコン１４は、電源供給の状態が変化したか否かを検出する（ステップＳ１１）。電源供給の状態が変化していない場合、NOとなり、継続動作が行われる（ステップＳ１２）。電源供給の状態が変化した場合、YESとなり、電源マイコン１４は、システムコントローラ１２に割り込み信号を発生して、その変化のあったことを通知する（ステップＳ１３）。
【００２７】
システムコントローラ１２は、電源マイコン１４からの割り込み信号を判別し（ステップＳ１４）、電源供給の状態がACアダプタからバッテリに変化したか否かを検出する（ステップＳ１５）。電源供給の状態がACアダプタからバッテリに変化した場合、YESとなり、上述したステップＳ４からステップＳ８が実行される。電源供給状態がACアダプタからバッテリに変化していない場合、NOとなり、システムコントローラ１２は、バッテリの残量がスレッショルド（以下、THという）まで低下したか否かを検出する（ステップＳ１６）。具体的には、バッテリの残量が後述する図６の矢印により示すTH１又はTH２以下に低下した場合に、バッテリの残量に応じて、OFFするプロセッサコアの数を動的に徐々に増やす処理が行われる。バッテリの残量がTH以下に低下していない場合、NOとなり、判別異常終了の処理が実行される（ステップＳ１７）。
【００２８】
バッテリの残量がTH以下に低下した場合、YESとなり、システムコントローラ１２は、演算の処理量が所定値以上になったか否か又は演算の処理量の増加に伴い、OS２２からの強制ONの指示があったか否かを検出する（ステップＳ１８）。演算の処理量が所定値以上でなく、かつ、OS２２からの強制ONの指示がない場合、NOとなり、上述したステップＳ４からステップＳ８が実行される。演算の処理量が所定値以上である又はOS２２からの強制ONの指示がある場合、YESとなり、プロセッサコア１５を全てONにする処理が実行される（ステップＳ１９）。このプロセッサコア１５を全てONにする処理については、後述する図７のステップＳ２３からステップＳ２６において、詳細に説明する。なお、プロセッサコア１５を全てONにする処理は、演算の処理量又はOS２２から指示に基づいて、停止しているプロセッサコア１５の内、所定数だけONにしてもよい。
【００２９】
以上の処理の結果、電源供給源がACアダプタからバッテリに変化した場合、及び、バッテリの残量がTH以下に低下した場合、システムコントローラ１２が指定したプロセッサコア１５にクロック信号CLKの供給を停止するようにした。この結果、所定のプロセッサコア１５だけにクロック信号CLKが供給されるため、消費電力を低減することができる。
【００３０】
ここで、バッテリの残量に応じて、OFFするプロセッサコアの数を動的に徐々に増やしていく処理について説明する。図６は、バッテリの残量とクロック信号CLKが供給されるプロセッサコアの数との関係の例を説明するための説明図である。図６の例では、プロセッサコアの数が８個として説明する。
【００３１】
電源供給源がACアダプタの場合、８個のプロセッサコアにクロック信号CLKが供給される。先ず、電源供給源がACアダプタからバッテリに変化した場合、クロック信号CLKが供給されるプロセッサコアの数を８個から５個にする。バッテリの残量が５０％以下になるまでは、クロック信号CLKが供給されるプロセッサコアの数を５個に保ち、バッテリの残量が５０％以下、即ち、矢印によって示すTH１以下に低下するとクロック信号CLKが供給されるプロセッサコアの数を４個にする。更に、バッテリの残量が２５％以下、即ち、矢印によって示すTH２以下に低下するとクロック信号CLKが供給されるプロセッサコアの数を３個にするように予め設定されている。
【００３２】
このように、バッテリの残量に応じて、クロック信号CLKが供給されるプロセッサコアの数を減らすと、処理量は低下するが、消費電力は低減する。OFFにするプロセッサコアの数及び対象プロセッサコアは、システムコントローラ１２内の設定データ１８に設定される。なお、OFFにするプロセッサコアの数及び対象プロセッサコアは、ユーザにより設定、或いは、変更できるようにしてもよい。即ち、ユーザによっては、処理量を優先させたい、或いは、バッテリを長く持たせたい場合などがある。
【００３３】
処理量を優先させたい場合、例えば、ユーザは、OFFにするプロセッサコアの数を２個に設定する。これにより、消費電力の低減の効果は小さくなるが、処理量を増やすことができる。また、バッテリを長く持たせたい場合、例えば、ユーザは、OFFにするプロセッサコアの数を６個に設定する。これにより、処理量は低減するが、バッテリの駆動時間を長くすることができる。
【００３４】
次に、プロセッサコアをONにする処理について説明する。図７は、プロセッサコアONの処理の流れの例を示すフローチャートである。ステップＳ１１からステップＳ１４は、上述した図５の処理と同様であるため説明を省略する。
【００３５】
先ず、ステップＳ１４において、システムコントローラ１２は、電源マイコン１４から割り込みを判別した後、電源供給の状態がバッテリからACアダプタに変化したか否かを検出する（ステップＳ２１）。電源供給状態がバッテリからACアダプタに変化していない場合、NOとなり、判別異常終了の処理が実行される（ステップＳ２２）。電源供給状態がバッテリからACアダプタに変化した場合、YESとなり、システムコントローラ１２は、プロセッサコア状態テーブル１７を参照して、ONにするプロセッサコア１５を指定し、OS２２に通知する（ステップＳ２３）。このONにするプロセッサコア１５を指定する処理は、システムコントローラがプロセッサコア状態テーブル１７を参照し、OFFになっているプロセッサコア１５を認識することにより実行される。
【００３６】
次に、システムコントローラ１２は、指定したプロセッサコア１５にクロック信号CLKを供給（ステップＳ２４）し、クロック信号CLKを供給したことをOS２２に通知する（ステップＳ２５）。最後に、システムコントローラ１２は、プロセッサコア状態テーブル１７を更新し（ステップＳ２６）、処理を終了する。
【００３７】
以上の処理の結果、電源供給源がバッテリからACアダプタに変化した場合、システムコントローラ１２が指定したプロセッサコア１５にクロック信号CLKを供給するようにした。
【００３８】
以上のように、プロセッサ装置１は、電力供給源がバッテリの場合、指定された１以上のプロセッサコア１５にクロック信号CLKの供給を停止することができる。また、プロセッサ装置１は、バッテリの残量の低下に伴って、プロセッサコア１５にクロック信号CLKの供給を停止することができる。
【００３９】
よって、本実施の形態のプロセッサ装置によれば、電源供給の状態に基づいて、プロセッサコア毎にクロック信号を供給又は停止する制御を行うことにより消費電力を低減することができる。
【００４０】
なお、本明細書における各フローチャート中の各ステップは、その性質に反しない限り、実行順序を変更し、複数同時に実行し、あるいは実行毎に異なった順序で実行してもよい。
【００４１】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【図面の簡単な説明】
【００４２】
【図１】本発明の一実施の形態に係るプロセッサ装置のハードウエアの構成を示すブロック図である。
【図２】本実施の形態に係るプロセッサ装置のソフトウエアの構成を示すブロック図である。
【図３】プロセッサコア状態テーブルの例を説明するための説明図である。
【図４】電源ON時のプロセッサコアOFFの処理の流れの例を示すフローチャートである。
【図５】電源ON時以外のプロセッサコアOFFの処理の流れの例を示すフローチャートである。
【図６】バッテリの残量と駆動しているプロセッサコアの数との関係の例を説明するための説明図である。
【図７】プロセッサコアONの処理の流れの例を示すフローチャートである。
【符号の説明】
【００４３】
１  プロセッサ装置、１１  マルチコアプロセッサ、１２  システムコントローラ、１３  システム電源、１４  電源マイコン、１５  プロセッサコア、１６  制御回路、１７  プロセッサコア状態テーブル、１８  設定データ、２１  ハードウエア、２２  OS、２３  アプリケーション
【図１】
2009193536.tif 000003
【図２】
2009193536.tif 000004
【図３】
2009193536.tif 000005
【図４】
2009193536.tif 000006
【図５】
2009193536.tif 000007
【図６】
2009193536.tif 000008
【図７】
2009193536.tif 000009