(57)【要約】  複数のプロセッサのうちの消費電力の大きいプロセッサを一時的に起動させることに起因する電力の消費を削減する。  マルチプロセッサシステム１は、第一命令コードを実行する第一プロセッサ１４１と、第二命令コードを実行する第二プロセッサ１５１と、第二命令コードを第一プロセッサ１４１が実行できる命令コードに変換するハイパバイザ１３０と、第一プロセッサ１４１及び第二プロセッサ１５１のうちの少なくとも一方のプロセッサの動作を制御する電源制御回路１７０とを備え、ハイパバイザ１３０は、電源制御回路１７０によって第二プロセッサ１５１の動作が抑制されている場合、第二命令コードを第一プロセッサ１４１が実行できる命令コードに変換し、第一プロセッサ１４１は、変換した命令コードを実行する。
2008152790.tif 000002
【特許請求の範囲】
【請求項１】
第一の命令コードを実行する第一のプロセッサと、
前記第一の命令コードとは異なる第二の命令コードを実行する第二のプロセッサと、
前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換する命令変換部と、
前記第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方のプロセッサの動作を制御する制御部とを備え、
前記命令変換部は、前記制御部によって前記第二のプロセッサの動作が抑制されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換し、
前記第一のプロセッサは、前記変換した命令コードを実行することを特徴とするマルチプロセッサ制御装置。
【請求項２】
前記制御部は、第二のプロセッサに供給する電力を制御する電力制御部を含み、
前記命令変換部は、前記電力制御部によって前記第二のプロセッサへ供給する電力が抑制されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換し、
前記第一のプロセッサは、前記変換した命令コードを実行することを特徴とする請求項１記載のマルチプロセッサ制御装置。
【請求項３】
前記第一のプロセッサが消費する消費電力は、前記第二のプロセッサが消費する消費電力より低いことを特徴とする請求項２記載のマルチプロセッサ制御装置。
【請求項４】
前記電力制御部は、前記第二のプロセッサへ供給する電力を停止させ、
前記命令変換部は、前記電力制御部によって前記第二のプロセッサへ供給する電力が停止されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換することを特徴とする請求項２記載のマルチプロセッサ制御装置。
【請求項５】
前記電力制御部は、前記第二のプロセッサへ供給する電力を抑制している間に、前記第二のプロセッサに対し割込み処理を要求する通知を受け取ると、前記第一のプロセッサへ前記割込み処理の要求を通知し、
前記命令変換部は、前記電力制御部によって通知された前記割込み処理に対応する第二の命令コードを変換することを特徴とする請求項２記載のマルチプロセッサ制御装置。
【請求項６】
前記第一の命令コードと前記第二の命令コードとを格納するメモリをさらに備え、
前記第一のプロセッサは、前記メモリに格納された前記第一の命令コードを実行し、
前記第二のプロセッサは、前記メモリに格納された前記第二の命令コードを実行することを特徴とする請求項２記載のマルチプロセッサ制御装置。
【請求項７】
前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換するための変換テーブルを保持する変換テーブル保持部をさらに備え、
前記命令変換部は、前記変換テーブル保持部によって保持されている前記変換テーブルに基づき前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換することを特徴とする請求項６に記載のマルチプロセッサ制御装置。
【請求項８】
前記第一のプロセッサは、前記第一の命令コード及び前記変換した命令コードのいずれかを実行することにより生成される第一のデータを前記メモリへ格納し、
前記第二のプロセッサは、前記第二の命令コードを実行することにより生成される第二のデータを前記メモリへ格納することを特徴とする請求項６記載のマルチプロセッサ制御装置。
【請求項９】
第一のキャッシュメモリと、第二のキャッシュメモリとをさらに備え、
前記第一のプロセッサは、前記メモリに格納された前記第一のデータを用いて前記第一の命令コードを実行することにより生成される新たなデータを第一のキャッシュメモリへ格納し、前記メモリに格納された前記第二のデータを用いて前記変換した命令コードを実行することにより生成される新たなデータを第一のキャッシュメモリへ格納し、
前記第二のプロセッサは、前記メモリに格納された第二のデータを用いて前記第二の命令コードを実行することにより生成される新たなデータを第二のキャッシュメモリへ格納することを特徴とする請求項８記載のマルチプロセッサ制御装置。
【請求項１０】
前記第二のキャッシュメモリに格納されたデータと前記メモリに格納されたデータとの間に一貫性が保証されたデータの数を保持する有効データ数保持部をさらに備え、
前記電力制御部は、前記第二のプロセッサへ供給する電力を抑制している間に、前記有効データ数保持部により保持された前記一貫性が保証されたデータの数が所定値以下になった場合、前記第二のキャッシュメモリへの電力の供給を抑制することを特徴とする請求項９記載のマルチプロセッサ制御装置。
【請求項１１】
前記電力制御部によって前記第二のプロセッサへ供給する電力が抑制されている間に、前記第一のプロセッサが、前記変換した命令コードを実行することにより生成される新たなデータを前記メモリへ格納することに起因して、前記第二のキャッシュメモリに格納されたデータと前記メモリに格納されたデータとの間に一貫性が保証されなくなった場合、前記第二のプロセッサは、前記第二のキャッシュメモリに格納され、前記一貫性が保証されなくなった前記データを無効にすることを特徴とする請求項９に記載のマルチプロセッサ制御装置。
【請求項１２】
前記第一のキャッシュメモリへ格納されたデータと重複しないデータを格納するフルアソシアティブキャッシュメモリをさらに備え、
前記第一のプロセッサによって前記第一のキャッシュメモリへ格納されたデータが更新され、かつ、前記第一のプロセッサによって前記第一のキャッシュメモリから利用されていないデータが破棄される場合、前記フルアソシアティブキャッシュメモリは、前記第一のキャッシュメモリから破棄されたデータを格納することを特徴とする請求項９記載のマルチプロセッサ制御装置。
【請求項１３】
前記制御部は、前記第二のプロセッサにクロック信号を供給するか否かを制御し、
前記命令変換部は、前記制御部によって前記第二のプロセッサへ供給するクロック信号が停止されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換することを特徴とする請求項１記載のマルチプロセッサ制御装置。
【請求項１４】
前記制御部は、前記第二のプロセッサを動作させるか待機させるかを制御し、
前記命令変換部は、前記制御部によって前記第二のプロセッサが待機されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換することを特徴とする請求項１記載のマルチプロセッサ制御装置。
【請求項１５】
第一の命令コードを実行する第一のプロセッサと、前記第一の命令コードとは異なる第二の命令コードを実行する第二のプロセッサとを制御するためのマルチプロセッサ制御方法であって、
前記第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方のプロセッサの動作を制御する制御ステップと、
前記制御ステップにおいて前記第二のプロセッサの動作が抑制されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換する命令変換ステップと、
前記命令変換ステップにおいて変換された命令コードを前記第一のプロセッサにて実行する実行ステップとを含むことを特徴とするマルチプロセッサ制御方法。
【請求項１６】
第一の命令コードを実行する第一のプロセッサと、前記第一の命令コードとは異なる第二の命令コードを実行する第二のプロセッサとを制御するマルチプロセッサ制御回路であって、
前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換する命令変換回路と、
前記第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方のプロセッサの動作を制御する制御回路とを備え、
前記命令変換回路は、前記制御回路によって前記第二のプロセッサの動作が抑制されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換し、
前記第一のプロセッサは、前記変換した命令コードを実行することを特徴とするマルチプロセッサ制御回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ及び内部バスを共有する複数のプロセッサを制御するマルチプロセッサ制御装置、マルチプロセッサ制御方法及びマルチプロセッサ制御回路に関連し、特に、メモリを共有する複数のプロセッサを備えたマルチプロセッサシステム、内部バスを共有する複数のプロセッサコアを有するシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）及びこれらのシステムにおいて、複数のプロセッサへ供給する電力を制御するマルチプロセッサ制御装置、マルチプロセッサ制御方法及びマルチプロセッサ制御回路に関するものである。
【背景技術】
【０００２】
複数のプロセッサがメモリを共有するマルチプロセッサシステムは、各種産業分野で既に数多く応用されている。また、近年のシステムＬＳＩの技術潮流として、複数のプロセッサコアを搭載したマルチコアアーキテクチャが盛んになっている。特に、組込み向けシステムＬＳＩにおいては、コスト及び消費電力などの観点から、超高速プロセッサコアを１個実装するよりも、中規模程度以下のプロセッサコアを複数個搭載したほうが有利な場合が多い。【０００３】
このような複数のプロセッサ（以下、“プロセッサ”及び“プロセッサコア”を総称して“プロセッサ”と呼ぶ）を搭載するマルチプロセッサシステム及びマルチコアＬＳＩにおける低消費電力化技術として、同一のプロセッサを複数個搭載し、必要とするプログラムの負荷又は発熱量に応じて、動作するプロセッサの個数を定める方法が、特許文献１及び特許文献２などに開示されている。【０００４】
特許文献１では、読み込んだ命令を解読し、プロセッサの数より並列実行すべき演算処理が少ない場合、動作しないプロセッサの動作クロック信号を停止する。これにより、不所望な電力消費を随時抑制することができると述べている。【０００５】
一方、特許文献２では、逆に、マルチプロセッサシステム及びマルチコアＬＳＩ内部に設けられた複数のプロセッサの並列利用度を温度に応じて切り替える方法を示している。特許文献２では、定められた発熱量以下になるように、動作させるべきプロセッサ数を定める。なお、発熱量は、消費電力に言い換えることが可能である。これにより、常に定められた消費電力の範囲内で、プログラムを並列に動作させることができる。【０００６】
さらに、特許文献３には、異なるプロセッサ（メインプロセッサとサブプロセッサ）を用意してプログラムを機能分散的に割り付け、省電力動作時にはサブプロセッサのみで動作させる方法が開示されている。高度なエラー処理など、サブプロセッサに割り付けられていないプログラムを動作させる必要がある場合のみ、メインプロセッサに電力供給を行い、処理を実行させる。これにより、メインプロセッサが動作している時間を短縮し、消費電力を削減することが可能である。【０００７】
携帯電話機及び携帯端末などに代表されるモバイル型組込み計算機システムにおいては、高機能化及び高性能化とともに、低消費電力化が重要な位置を占める。特に、前述したように、組込み向けシステムＬＳＩにおいては、コスト及び消費電力などの観点から、超高速プロセッサコアを１個搭載するよりも、中規模程度以下のプロセッサコアを複数個搭載したマルチコアアーキテクチャが選択されるようになってきている。【０００８】
特許文献１及び特許文献２では、通常、ＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）又はＳＭＰ（Ｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉ  Ｐｒｏｃｅｓｓｏｒ）と呼ばれるマルチプロセッサシステム又はマルチコアＬＳＩにおいて、同一のプロセッサを複数個用意し、プログラムの並列性に応じて動作させるべきプロセッサ数を決定する。このとき、低性能なプロセッサを多数（１０個以上）用意してもオーバヘッドが大きくなるだけであり、性能の側面から、中規模程度以上のプロセッサを数個（２〜４個）搭載することへの要求が大きい。このため、たとえ実行すべきプログラムの負荷が軽くなり、１つのプロセッサを残して他のプロセッサの電源を停止できたとしても、残ったプロセッサの消費電力が比較的高いために、必要とされる消費電力がある程度大きくなる。【０００９】
また、ＶＬＩＷ及びＳＭＰのような均質なアーキテクチャでは、どのプログラムがどのプロセッサで動作してもよいため、複数のプロセッサ間で命令セット及びメモリマップなどの相違があってはならず、例えば、動作状態のまま残しておくプロセッサだけを、低消費電力なプロセッサアーキテクチャとすることは難しい。逆に、プロセッサ間での相違がある場合には、個々のプログラムが予めいずれのプロセッサ上で動作するかを決定しておく必要がある。このようなプロセッサが均一でない場合の低消費電力化技術は、特許文献３に記載されている。【００１０】
特許文献３に記載された技術を用いると、省電力動作時にはサブプロセッサのみを動作させる。このため、当該サブプロセッサに比較的低性能かつ低消費電力なプロセッサアーキテクチャを選択すれば、特許文献１及び特許文献２に記載された技術に比べて省電力動作時の消費電力を削減することができる。主として省電力動作時に実行すべきプログラムをサブプロセッサに、高速に動作させるべきプログラムを高性能なメインプロセッサに割り振ることで、省電力動作時の消費電力を削減できる技術である。【００１１】
しかしながら、外部イベントなどの影響で、省電力動作時においても、メインプロセッサに割り振っているプログラムが必要となることがある。このとき、高性能なメインプロセッサへの電力供給、安定化待ち、プログラム実行、及び電力遮断といった流れが必要となり、期待するほど低消費電力化を図れないことがある。特に、省電力動作時にも動作させなければならず、かつ、高速動作時には短時間で動作させなければならないプログラムは、高性能なメインプロセッサに搭載せざるを得なく、低消費電力化の課題となる。【００１２】
例えば、携帯電話機などの時計表示処理を考察する。近年の携帯電話機では、Ｊａｖａ（登録商標）及びブラウザなどの搭載及び進化に伴い、高速な画面描画処理が要求されるようになっている。上述したようなプロセッサが均一でないアーキテクチャを採用すると、一般に、画面描画処理は、高性能なメインプロセッサに割り当てられる。しかしながら、時計表示処理は、携帯電話機の待受け時（何も操作を行っていない状態）でも、定期的に（１秒又は１分おきに）画面描画を行わなければならない。すなわち、待受け状態が長時間に渡る場合でも定期的に高性能なメインプロセッサを立ち上げる必要があり、この分、消費電力削減効果が低下してしまう。
【特許文献１】特開２００１−９２６６１号公報（第４〜１１頁、図１〜図１２）
【特許文献２】特開２００６−１１５４８号公報（第６〜１３頁、図１〜図１２）
【特許文献３】特開平７−１３７８７号公報（第３〜４頁、図１〜図３）
【発明の開示】
【００１３】
本発明は、上記の問題を解決するためになされたもので、複数のプロセッサのうちの消費電力の大きいプロセッサを一時的に起動させることに起因する電力の消費を削減することができるマルチプロセッサ制御装置、マルチプロセッサ制御方法及びマルチプロセッサ制御回路を提供することを目的とするものである。
【００１４】
本発明の一局面に係るマルチプロセッサ制御装置は、第一の命令コードを実行する第一のプロセッサと、前記第一の命令コードとは異なる第二の命令コードを実行する第二のプロセッサと、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換する命令変換部と、前記第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方のプロセッサの動作を制御する制御部とを備え、前記命令変換部は、前記制御部によって前記第二のプロセッサの動作が抑制されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換し、前記第一のプロセッサは、前記変換した命令コードを実行する。
【００１５】
本発明の他の局面に係るマルチプロセッサ制御方法は、第一の命令コードを実行する第一のプロセッサと、前記第一の命令コードとは異なる第二の命令コードを実行する第二のプロセッサとを制御するためのマルチプロセッサ制御方法であって、前記第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方のプロセッサの動作を制御する制御ステップと、前記制御ステップにおいて前記第二のプロセッサの動作が抑制されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換する命令変換ステップと、前記命令変換ステップにおいて変換された命令コードを前記第一のプロセッサにて実行する実行ステップとを含む。
【００１６】
本発明の他の局面に係るマルチプロセッサ制御回路は、第一の命令コードを実行する第一のプロセッサと、前記第一の命令コードとは異なる第二の命令コードを実行する第二のプロセッサとを制御するマルチプロセッサ制御回路であって、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換する命令変換回路と、前記第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方のプロセッサの動作を制御する制御回路とを備え、前記命令変換回路は、前記制御回路によって前記第二のプロセッサの動作が抑制されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換し、前記第一のプロセッサは、前記変換した命令コードを実行する。
【００１７】
これらの構成によれば、第二のプロセッサの動作を抑制している間に、第二のプロセッサ上で動作させるべき第二の命令コードが発生したとしても、第二のプロセッサを起動させることなく、第二の命令コードを第一のプロセッサが実行できる命令コードに変換し、変換した命令コードを第一のプロセッサで動作させることが可能となる。
【００１８】
本発明によれば、第二のプロセッサの動作を抑制している間に、第二のプロセッサを一時的に起動させる機会を削減することができ、複数のプロセッサのうちの消費電力の大きいプロセッサを一時的に起動させることに起因する電力の消費を削減することができる。
【００１９】
本発明の目的、特徴及び利点は、以下の詳細な説明と添付図面とによって、より明白となる。
【図面の簡単な説明】
【００２０】
【図１】本実施の形態１のマルチプロセッサシステムの具体的な構成の一例を示す図である。
【図２】本実施の形態１におけるマルチプロセッサシステムの省電力動作モード時におけるソフトウェア階層と、ハードウェア階層との関係を説明するための図である。
【図３】本実施の形態１におけるマルチプロセッサシステムの高速動作モード時におけるソフトウェア階層と、ハードウェア階層との関係を説明するための図である。
【図４】ハイパバイザの動作の一例を説明するためのフローチャートである。
【図５】本実施の形態１のハイパバイザが用いる変換テーブルの一例を説明するための図である。
【図６】本実施の形態１のマルチプロセッサシステムの構成の他の例を示す図である。
【図７】本実施の形態２のマルチプロセッサシステムの構成の一例を示す図である。
【図８】電源モードレジスタの取り得る電源モードに対応する動作対象とハイパバイザの動作内容とを示した対応表の一例を示す図である。
【図９】本実施の形態２における電源制御回路の動作の一例を説明するためのフローチャートである。
【図１０】本実施の形態３のマルチプロセッサシステムの構成の一例を示す図である。
【図１１】本実施の形態３で用いる割込み対応表の一例を示す図である。
【図１２】電源モードレジスタ及び割込み対応表に基づく動作内容を示した動作対応表の一例を示す図である。
【図１３】本実施の形態３の電源制御回路の動作の一例を説明するための第１のフローチャートである。
【図１４】本実施の形態３の電源制御回路の動作の一例を説明するための第２のフローチャートである。
【図１５】本実施の形態４のマルチプロセッサシステムの構成の一例を示す図である。
【図１６】本実施の形態４のスヌープ制御回路の動作の一例を説明するための第１のフローチャートである。
【図１７】本実施の形態４のスヌープ制御回路の動作の一例を説明するための第２のフローチャートである。
【図１８】本実施の形態５のマルチプロセッサシステムの構成の一例を示す図である。
【図１９】本実施の形態５のフルアソシアティブキャッシュメモリの具体的な構成の一例を示す図である。
【発明を実施するための最良の形態】
【００２１】
以下添付図面を参照しながら、本発明の実施の形態について説明する。尚、以下の実施の形態は、本発明を具体化した一例であって、本発明の技術的範囲を限定する性格のものではない。【００２２】
（実施の形態１）
図１は、本実施の形態１のマルチプロセッサ制御装置（以下、マルチプロセッサシステムと称す）の具体的な構成の一例を示す図である。【００２３】
図１において、本実施の形態のマルチプロセッサシステム１は、内部バス１８０、内部バス１８０に接続するメモリ１１０、メモリ１１０に格納された命令コードを実行する第一プロセッサ１４１、メモリ１１０に格納された命令コードを実行する第二プロセッサ１５１、電源制御回路１７０、及び内部バス１８０に接続する周辺モジュール群１６０を備える。【００２４】
本実施の形態において、第一プロセッサ１４１は、第二プロセッサ１５１と比して性能が低くかつ電力の消費が少ないプロセッサ（以降、“低消費電力プロセッサ”とも呼ぶ）である。第二プロセッサ１５１は、第一プロセッサ１４１に比して性能が高くかつ電力の消費が多いプロセッサ（以降、“高性能プロセッサ”とも呼ぶ）である。すなわち、低消費電力プロセッサ１４１が消費する消費電力は、高性能プロセッサ１５１が消費する消費電力より低い。【００２５】
なお、例えば、第一プロセッサ１５１は、主に通信に関する処理を実行するプロセッサであり、第二プロセッサ１５１は、主にユーザインタフェース等のアプリケーションに関する処理を実行するプロセッサである。また、本実施の形態のマルチプロセッサシステム１は、例えば、携帯電話機、デジタルビデオカメラ、デジタルスチールカメラ及びＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）等に搭載される。【００２６】
電源制御回路１７０は、制御部及び電力制御部の一例に相当し、低消費電力プロセッサ１４１及び高性能プロセッサ１５１のうちの少なくとも一方のプロセッサの動作を制御する。具体的に、電源制御回路１７０は、電源から低消費電力プロセッサ１４１並びに高性能プロセッサ１５１へ供給される電力を制御する。電源制御回路１７０は、低消費電力プロセッサ１４１又は高性能プロセッサ１５１からの要求に応じて、電源（図示せず）から後述する第一電源ブロック１４０及び／又は第二電源ブロック１５０への電力の供給を制御するハードウェアモジュールである。【００２７】
電源制御回路１７０は、高性能プロセッサ１５１へ供給する電力を抑制する場合、高性能プロセッサ１５１へ供給する電力を停止する。【００２８】
電源制御回路１７０は、現在の電源からの電力の供給状態を示す情報（電源モード）を格納するためのレジスタである電源モードレジスタ１７１を有する。電源モードには、第一電源ブロック１４０及び第二電源ブロック１５０へ電力を供給する高速動作モード、第一電源ブロック１４０へ電力を供給し、第二電源ブロック１５０への電力の供給を停止する省電力動作モードなどがある。電源モードレジスタ１７１には、高速動作モード及び省電力動作モードといった電源モードに対応する値が格納されている。【００２９】
ここで、省電力動作モード及び高速動作モードへの移行について説明する。電源制御回路１７０は、低消費電力プロセッサ１４１から制御信号線２０を介して電源制御回路１７０へ送出される信号、例えば省電力動作モードから高速動作モードへの変更を指令する信号、又は高性能プロセッサ１５１から制御信号線２１を介して電源制御回路１７０へ送出される信号、例えば高速動作モードから省電力動作モードへの変更を指令する信号を受け取る。電源制御回路１７０は、低消費電力プロセッサ１４１又は高性能プロセッサ１５１から受け取った信号に基づいて、電源モードレジスタ１７１内に格納される電源モードを変更する。そして、電源制御回路１７０は、変更した電源モードに応じた電力を第一電源ブロック１４０及び／又は第二電源ブロック１５０へ供給する。【００３０】
ここで、電源ブロックとは、電源制御回路１７０から供給される電力の制御が及ぶ範囲をブロック単位として示すものである。第一電源ブロック１４０は、第一プロセッサ１４１を含み、第二電源ブロック１５０は、第二プロセッサ１５１を含む。図１に示す例では、電源制御回路１７０が電力供給線３０を介して第一電源ブロック１４０へ供給する電力を変えると、低消費電力プロセッサ１４１へ供給される電力が変化し、電力供給線３１を介して第二電源ブロック１５０へ供給する電力を変えると、高性能プロセッサ１５１へ供給される電力が変化する。【００３１】
なお、ここで、省電力動作モード又は高速動作モードへの動作の移行のための制御方法として、電源電圧のオン・オフを切り替える方法だけとは限らないことを追記しておく。別の実施の形態として、電源制御回路１７０は、省電力動作モード時には、低消費電力プロセッサ１４１のみにクロック信号を供給し、高性能プロセッサ１５１へのクロック信号の供給を停止し、高速動作モード時には、低消費電力プロセッサ１４１及び高性能プロセッサ１５１の両者にクロック信号を供給する。これにより、電源電圧を変化させずに、省電力動作モード又は高速動作モードへの動作の移行が可能である。【００３２】
さらにまた、別の実施の形態として、電源制御回路１７０は、電源電圧及びクロック信号の供給は変化させずに、省電力動作モード時には、高性能プロセッサ１５１を割込み発生待機状態に移行させ、高速動作モード時には、高性能プロセッサ１５１を通常動作状態に復帰させる。これにより、電源電圧及びクロック信号の供給は変化させずに、省電力動作モード又は高速動作モードへの動作の移行が可能である。【００３３】
通常、電源電圧のオン・オフを実施する際には、その状態遷移期間として、電源電圧が安定するまで処理実行を待つ必要性がある。同様に、クロック信号の供給・停止を制御する際にも、クロック信号が安定するまで処理実行を待つ必要性がある。一般に、低消費電力化の効果は、電源電圧のオン・オフ、クロック信号の供給・停止、及び割込み発生待機状態への移行・解除の順で高い。逆に、状態遷移期間は、割込み発生待機状態への移行・解除、クロック信号の供給・停止、及び電源電圧のオン・オフの順で短い。これらのトレードオフを考慮して、いずれかの方法を選択する必要がある。【００３４】
なお、以降、電力供給の制御についての説明においては、電源制御回路１７０は、上記三つの方法のいずれの方法を用いても構わないものとする。【００３５】
タスク１１１〜１１５は、単一又は複数の命令コードを含む。タスク１１１〜１１２は、低消費電力プロセッサ１４１にて実行できる第一命令コードを含み、タスク１１３〜１１５は、高性能プロセッサ１５１にて実行できる第二命令コードを含む。タスク１１１〜１１２は、第一ＯＳ（オペレーティングシステム：以下、ＯＳと記載する）上で動作し、タスク１１３〜１１５は、第二ＯＳ上で動作する。【００３６】
低消費電力プロセッサ１４１及び高性能プロセッサ１５１は、例えばメモリ１１０に格納されているアプリケーションプログラムに含まれるタスクを読み出して実行する。タスク１１１〜１１５は、メモリ１１０上のデータ、周辺モジュール群１６０からの入出力データを参照して動作する。図１に示した実施の形態では、タスク１１１〜１１２は、本来、低消費電力プロセッサ１４１上で動作し、タスク１１３〜１１５は、本来、高性能プロセッサ１５１上で動作するようにコンパイルされている。【００３７】
また、メモリ１１０上の第一ＯＳ１２０はタスク１１１〜１１２の実行状態を管理し、第二ＯＳ１２１はタスク１１３〜１１５の実行状態を管理する。なお、タスク数、ＯＳ数、及びタスクとＯＳとの関係は、図１で示した例に一致しなくてもよい。例えば、低消費電力プロセッサ１４１及び高性能プロセッサ１５１の数に応じて、動作するＯＳの数を変更しても構わないし、プロセッサの数によらず、ＯＳを一つ又は固定数にすることは可能である。【００３８】
また、低消費電力プロセッサ１４１及び高性能プロセッサ１５１が機能するように電源制御回路１７０から電力が供給されている状態において、第一ＯＳ１２０上で動作するタスク１１１〜１１２に含まれる第一命令コードは低消費電力プロセッサ１４１にて実行され、第二ＯＳ１２１上で動作するタスク１１３〜１１５に含まれる第二命令コードは高性能プロセッサ１５１にて実行される。【００３９】
ハイパバイザ１３０は、命令変換部の一例に相当し、電源制御回路１７０が第二電源ブロック１５０への電力の供給を停止した場合、つまり高性能プロセッサ１５１が機能しなくなった場合、タスク１１３〜タスク１１５に含まれる第二命令コードを低消費電力プロセッサ１４１が実行できる命令コードへ変換する。【００４０】
ハイパバイザ１３０は、低消費電力プロセッサ１４１上で動作し、電源制御回路１７０によって高性能プロセッサ１５１における動作が抑制されている場合、本来は高性能プロセッサ１５１により実行されるタスク１１３〜１１５及び第二ＯＳ１２１に含まれる第二命令コードを低消費電力プロセッサ１４１で実行できる命令コードに変換し、変換した命令コードを低消費電力プロセッサ１４１で実行させるようにする。【００４１】
これにより、低消費電力プロセッサ１４１は高性能プロセッサ１５１の動作を模擬（エミュレート）する。前述したように、第二ＯＳ１２１及びタスク１１３〜１１５は、本来、高性能プロセッサ１５１上で動作する第二命令コードを含むプログラムである。しかしながら、省電力時において高性能プロセッサ１５１への電力の供給を抑制し、高性能プロセッサ１５１の機能が停止している間に、ハイパバイザ１３０によって、高性能プロセッサ１５１が実行すべきタスクに含まれる第二命令コード群が低消費電力プロセッサ１４１において実行できる命令コード群に変換されるので、低消費電力プロセッサ１４１上でも動作させることが可能である。【００４２】
ここで、命令コードの変換とは、いわゆる命令のオペレーションフィールドのみの変換とは限らない。例えば、低消費電力プロセッサ１４１と高性能プロセッサ１５１との間で、命令セット自体が同一で、周辺モジュール群１６０のアドレスマップのみが異なっている（低消費電力プロセッサ１４１で利用できるアドレスマップを小さくする）場合もある。本実施の形態では、これらの“アドレス変換”も“命令コード変換”の一例とみなすが、以降の実施の形態では、特に区別を行わずに説明を行う。【００４３】
ハイパバイザ１３０は、命令コードの変換のほか、省電力動作モード時には、第一ＯＳ１２０と第二ＯＳ１２１とを低消費電力プロセッサ１４１で共存（時分割で並行実行）させる役割も有する。これらのハイパバイザ１３０の詳細な動作については、図４にて詳細に説明する。【００４４】
以上のような構成を採用することにより、高性能プロセッサ１５１を動作させていない省電力動作モードの間において、高性能プロセッサ１５１により実行すべき第二命令コードを含むタスクがメモリ１１０にある場合、ハイパバイザ１３０は、このタスクに含まれる第二命令コードを低消費電力プロセッサ１４１が実行できる命令コードに変換し、低消費電力プロセッサ１４１は、ハイパバイザ１３０によって変換された命令コードを実行する。これにより、省電力動作モードの間において、高性能プロセッサ１５１を一時的に起動させることがなくなり、省電力動作モード時におけるマルチプロセッサシステムの電力消費をより抑えることが可能となる。【００４５】
例えば、携帯電話機における表示画面に時刻のグラフィックス表示を高性能プロセッサ１５１で動作させているような場合、待受け時などには、ユーザが特に画面を注視しているわけではないため、必ずしも時計表示を高速に行う必要がないといえる。したがって、待ち受け時といった省電力動作モード時には、プログラムは必ずしも高速に動作する必要がない。このため、ハイパバイザ１３０によって、低消費電力プロセッサ１４１が高性能プロセッサ１５１の動作を模擬するように構成する。これにより、時刻表示などの処理をそのまま高性能プロセッサ１５１で動作させるよりも、性能的には大幅に劣化するものの、ハイパバイザ１３０による性能劣化が問題になることがないため、高性能プロセッサ１５１を一時的に動作させる場合に比べて、電力の消費を削減できる。【００４６】
なお、図１の説明において、低消費電力プロセッサ１４１上で動作する第一ＯＳ１２０、及び高性能プロセッサ１５１上で動作する第二ＯＳ１２１がそれぞれ異なる場合を例に説明をしたが、低消費電力プロセッサ１４１及び高性能プロセッサ１５１上で動作するＯＳは同一のＯＳであってもよい。この場合は、ハイパバイザ１３０が二つのＯＳを共存させる機能を有する必要はなく、本来高性能プロセッサ１５１上で実行される第二命令コードを低消費電力プロセッサ１４１上で実行される命令コードに変換する命令変換部をマルチプロセッサシステム内に備え、この高性能プロセッサ１５１が機能していない間に命令変換部が機能するように構成すればよい。【００４７】
このように、メモリ１１０は、第一命令コードと第二命令コードとを格納し、低消費電力プロセッサ１４１は、メモリ１１０に格納された第一命令コードを実行し、高性能プロセッサ１５１は、メモリ１１０に格納された第二命令コードを実行する。そして、ハイパバイザ１３０は、電源制御回路１７０によって高性能プロセッサ１５１へ供給する電力が抑制されている場合、第二命令コードを低消費電力プロセッサ１４１が実行できる命令コードに変換する。【００４８】
なお、ハイパバイザ１３０は、変換した命令コードをメモリ１１０に格納してもよく、低消費電力プロセッサ１４１は、メモリ１１０に格納された変換した命令コードを実行してもよい。また、低消費電力プロセッサ１４１は、第一命令コード及び変換した命令コードのいずれかを実行することにより生成される第一データをメモリ１１０へ格納してもよく、高性能プロセッサ１５１は、第二命令コードを実行することにより生成される第二データをメモリ１１０へ格納してもよい。【００４９】
また、ハイパバイザ１３０は、電源制御回路１７０によって高性能プロセッサ１５１へ供給するクロック信号が停止されている場合、第二命令コードを低消費電力プロセッサ１４１が実行できる命令コードに変換する。【００５０】
さらに、ハイパバイザ１３０は、電源制御回路１７０によって高性能プロセッサ１５１が待機されている場合、第二命令コードを低消費電力プロセッサ１４１が実行できる命令コードに変換する。【００５１】
図２は、本実施の形態１におけるマルチプロセッサシステムの省電力動作モード時におけるソフトウェア階層と、ハードウェア階層との関係を説明するための図であり、図３は本実施の形態１におけるマルチプロセッサシステムの高速動作モード時におけるソフトウェア階層と、ハードウェア階層との関係を説明するための図である。【００５２】
前述したように、省電力動作モード時には、高性能プロセッサ１５１への電力の供給が停止されるため、図２に示すように高性能プロセッサ１５１は動作しない。このとき、ハイパバイザ１３０を動作させ、低消費電力プロセッサ１４１上で、第二ＯＳ１２１及びタスク１１３〜タスク１１５に含まれるデータ（例えば第二命令コード、第二命令コードが参照するデータ、及び第二命令コードの実行により出力されるデータ等）を低消費電力プロセッサ１４１が処理できるデータへ変換する。このように、変換したデータを低消費電力プロセッサ１４１が処理するために、低消費電力プロセッサ１４１のインタフェースを追加したり、変更したりする必要がなくなる。【００５３】
図２のソフトウェアアーキテクチャを構成することにより、省電力動作モード時にも、高性能プロセッサ１５１を動作させる機会を極力少なくすることができ、タスク１１３〜タスク１１５に含まれる命令コードを低消費電力プロセッサ１４１が実行できるようになる。【００５４】
高速動作モード時には、図３に示すように第二ＯＳ１２１上で動作するタスク１１３〜１１５は、高性能プロセッサ１５１上で実行される。すなわち、高性能プロセッサ１５１は、第二ＯＳ１２１上で動作するタスク１１３〜１１５に含まれる第二命令コードを実行する。【００５５】
一方、低消費電力プロセッサ１４１は、第一ＯＳ１２０上で動作するタスク１１１、１１２に含まれる第一命令コードを実行する。【００５６】
高速動作モード時において、図３のソフトウェアアーキテクチャを構成することにより、メモリを共有しつつ、複数のプロセッサが並列に動作するマルチプロセッサシステムを提供することができる。低消費電力プロセッサ１４１及び高性能プロセッサ１５１を並列動作させることにより、より高速な処理性能及び応答性能が期待できる。【００５７】
また、第一ＯＳ１２０が利用するハードウェア資源（図示せず）へのインタフェース部（図示せず）を電源モードに応じて入れ替える方法、又はハイパバイザ１３０が低消費電力プロセッサ１４１と全く同一のインタフェースを第一ＯＳ１２０に提供する方法などを利用すれば、高速動作モード時には、ハイパバイザ１３０を起動する必要はない。このとき、直接、低消費電力プロセッサ１４１上で第一ＯＳ１２０を動作させることができる。【００５８】
すなわち、図３においては、高速動作モード時においてハイパバイザ１３０を起動させる構成を示しているが、省電力動作モード時又は高速動作モード時に応じて第一ＯＳ１２０が利用するハードウェア資源へのインタフェースを切り替えたり、高速動作モード時において、省電力動作モード時と同一のハードウェア資源へのインタフェースを第一ＯＳ１２０に提供したりするような構成を採用すれば、高速動作モード時において、ハイパバイザ１３０を起動させる必要はない。【００５９】
図４は、ハイパバイザ１３０の動作の一例を説明するためのフローチャートである。【００６０】
ここで、図２にて説明したように、ハイパバイザ１３０は、省電力動作モード時には、低消費電力プロセッサ１４１上で二つのＯＳを動作させる役割を有することに注意が必要である。したがって、高性能プロセッサ１５１の動作を模擬するエミュレーションの動作を実現するほか、複数のＯＳを時分割で共存及び実行させる必要がある。【００６１】
ハイパバイザ１３０は、起動後、第一ＯＳ１２０及び第二ＯＳ１２１のいずれか一方にタスクを動作させるための制御権を与え、制御権を与えられたＯＳは、実行すべきタスクの動作を制御する。このとき、ハイパバイザ１３０は、一旦、処理要求待ち状態に移行し、処理要求を受ければステップＳ２へ進む（ステップＳ１）。【００６２】
次に、割込み、未定義命令例外又は保護領域アクセス違反などの現在の処理を中断する必要のある例外、あるいは、第一ＯＳ１２０又は第二ＯＳ１２１から関数コールなどの明示的な処理要求を受けると、ハイパバイザ１３０は、その要因を調査する。本実施の形態では、ハイパバイザ１３０は、第一に、例外が発生したか否かをチェックする（ステップＳ２）。例外が発生したと判断した場合（ステップＳ２でＹＥＳ）、ステップＳ８の処理に進み、例外が発生していないと判断した場合（ステップＳ２でＮＯ）、ステップＳ３の処理へ進む。【００６３】
本実施の形態では、上述したように、複数のＯＳを時分割で実行する必要があるため、例外以外が要因であった場合、つまり、ステップＳ２において、例外が発生していないと判断した場合、ハイパバイザ１３０が受けた処理要求を現状で動作しているＯＳを切替える要求であると見なす。ハイパバイザ１３０は、第一ＯＳ１２０及び第二ＯＳ１２１のうち、次に、いずれのＯＳを優先して実行させるべきかを決定する（ステップＳ３）。【００６４】
優先して実行させるＯＳを決定する方法については、例えば、特開平５−１９７５７７号公報、米国特許５９９５７４５号公報及び特開２０００−２４２５１２号公報などに示される方法が代表的である。例えば、特開平５−１９７５７７号公報には、予め個々のＯＳに定められたタイムスライスを与え、そのタイムスライスを使い果たしたときに、別のＯＳを実行させる方法が示されている。また、米国特許５９９５７４５号公報には、一方のＯＳを完全に優先させ、当該ＯＳがアイドル状態になったときに、もう一方のＯＳを実行させる方法が示されている。さらに、特開２０００−２４２５１２号公報には、さらに拡張性の高い方法が示されており、個々のＯＳが実行しているタスクの優先順位を比較し、より優先順位の高いタスクを実行しているＯＳを動作させる方法が示されている。【００６５】
ステップＳ３の処理において用いられる方法として、特開平５−１９７５７７号公報、米国特許５９９５７４５号公報及び特開２０００−２４２５１２号公報のいずれの方法を利用してもよい。また、これら以外の方法を用いることも可能である。本実施の形態のハイパバイザ１３０においては、複数個のＯＳが適切に時分割で実行されていればよく、ＯＳ選択のアルゴリズムの内容は問わない。【００６６】
次に、ハイパバイザ１３０は、ステップＳ３において選択したＯＳが、現在実行しているＯＳと同一か否かを判断する（ステップＳ４）。同一のＯＳを選択したと判断した場合（ステップＳ４でＮＯ）、ステップＳ７へ進み、異なるＯＳを選択したと判断した場合（ステップＳ４でＹＥＳ）、ステップＳ５へ進む。【００６７】
異なるＯＳを選択したと判断した場合、ハイパバイザ１３０は、現在実行しているＯＳの動作環境をメモリ１１０上に退避させる（ステップＳ５）。そして、ハイパバイザ１３０は、次に実行すべきＯＳの動作環境をメモリ１１０から復旧させる（ステップＳ６）。ここで、ＯＳの動作環境とは、例えばプロセッサのレジスタ値及び動作モードなどに関する情報である。【００６８】
その後、ハイパバイザ１３０は、選択したＯＳにタスクを動作させるための制御権を移行させ（ステップＳ７）、ステップＳ１の処理に戻る。【００６９】
一方、ステップＳ２において、受け取った処理要求の要因が例外発生であると判断した場合、ハイパバイザ１３０は、第一に、発生した例外が、高性能プロセッサ１５１が実行すべき第二命令コードを低消費電力プロセッサ１４１で実行したことに起因する例外であるか否かを判断する（ステップＳ８）。なお、ステップＳ８において判断される例外とは、例えば高性能プロセッサ１５１で実行できる命令コードである一方、低消費電力プロセッサ１４１においては定義がされていない命令コードであるために生じる例外であり、このような例外を未定義命令例外と称し、以下では未定義命令例外について説明する。未定義命令例外でないと判断した場合（ステップＳ８でＮＯ）、ステップＳ９の処理へ進み、未定義命令例外であると判断した場合（ステップＳ８でＹＥＳ）、ステップＳ１０の処理へ進む。【００７０】
ステップＳ８において、発生した例外が未定義命令例外でないと判断した場合、ハイパバイザ１３０は、現在実行しているＯＳ、あるいは、現在実行しているＯＳ上で動作するタスク群に含まれる命令コードの実行に伴う例外が発生したため、現在実行しているＯＳを切り替えることなく、そのまま継続実行することを決定し（ステップＳ９）、ステップＳ７の処理へ進む。【００７１】
ステップＳ８において、発生した例外が未定義命令例外であると判断した場合、ハイパバイザ１３０は、未定義命令と判断した命令コードを低消費電力プロセッサ１４１で実行できる命令コードに変換する（ステップＳ１０）。その後、ハイパバイザ１３０は、変換した命令コードを低消費電力プロセッサ１４１で実行させる。低消費電力プロセッサ１４１は、ハイパバイザ１３０によって変換された命令コードを実行する（ステップＳ１１）。その後、ステップＳ１の処理に戻る。【００７２】
図４で示すようにハイパバイザ１３０を動作させることにより、複数のＯＳを低消費電力プロセッサ１４１上で動作させることができる。同時に、高性能プロセッサ１５１のみに実装されている命令コードを低消費電力プロセッサ１４１が実行したとしても、ハイパバイザ１３０が当該命令コードの実行に起因して生じる未定義命令例外を検出する。その後、ハイパバイザ１３０は、変換テーブルなどを用いて未定義命令例外に対応する命令コードを低消費電力プロセッサ１４１上で解釈実行できる命令コード（群）に変換した後、変換した命令コード（群）を低消費電力プロセッサ１４１で実行させる。このような形で処理を継続実行することにより、省電力時に高性能プロセッサ１５１を一時的に起動させる機会をより少なくすることができるようになり、更なる省電力化が可能となる。【００７３】
なお、図４を用いて説明した例では、高性能プロセッサ１５１のみに実装されている命令コードを低消費電力プロセッサ１４１に実行させ、発生した例外が未定義命令例外であるか否かを判断する構成について説明したが、これに限定される必要はなく、当該命令コードのアドレスを事前に解析し、ハイパバイザ１３０内に記憶しておくことや、高性能プロセッサ１５１が利用するアドレス空間を低消費電力プロセッサ１４１で参照禁止状態にしておき、参照禁止例外を発生させることで判断することも可能である。【００７４】
図５は、ハイパバイザ１３０において、未定義命令例外に対応する命令コードを低消費電力プロセッサ１４１上で解釈実行できる命令コード（群）に変換するときに用いる変換テーブルの一例を説明するための図である。【００７５】
本実施の形態のマルチプロセッサシステムは、図５に示す変換テーブル２００を例えばメモリ１１０に格納している。変換テーブル２００は、図５に示すように高性能プロセッサ（第二プロセッサ）１５１で実行するための第二命令コード２０１、及びこの命令コードに相当する機能を低消費電力プロセッサ１４１で実行させるための第一命令コード（群）２０２をテーブル内に保持している。【００７６】
メモリ１１０は、第二命令コードを低消費電力プロセッサ１４１が実行できる命令コードに変換するための変換テーブル２００を保持する。なお、メモリ１１０が変換テーブル保持部の一例に相当する。ハイパバイザ１３０は、メモリ１１０によって保持されている変換テーブル２００に基づき第二命令コードを低消費電力プロセッサ１４１が実行できる命令コードに変換する。【００７７】
例えば、低消費電力プロセッサ１４１が３２ビット演算機能を有しており、高性能プロセッサ１５１が６４ビット演算機能を有している場合、高性能プロセッサ１５１は、６４ビット演算に対応する命令コードを解釈実行できるが、低消費電力プロセッサ１４１は３２ビット演算機能しか有しないため、６４ビット演算に対応する命令コード２０１を直接実行することができず未定義命令例外が発生する。そこで、変換テーブル２００は、６４ビット演算に対応する命令コードを３２ビット演算に置き換える命令コード（群）２０２を保持する。そして、未定義命令例外が発生したとき、ハイパバイザ１３０は、図５に示す変換テーブル２００を参照し、未定義命令例外に対応する６４ビット演算の命令コードを３２ビット演算の命令コードに置き換える。【００７８】
図５に示した例では、変換テーブル２００は、加算、減算及び乗算に対応する６４ビットの命令コードと、それぞれに対応する３２ビットの命令コード群とを対応付けて保持する。【００７９】
例えば、６４ビットの加減算については、６４ビットを上位の桁３２ビットと、下位の桁３２ビットとにそれぞれ分けて、桁上がり及び桁下がりを考慮した、３２ビットの加減算を行うように変換する。【００８０】
同様に、乗算では、６４ビットの乗算を、三つの３２ビットの乗算（結果は６４ビット）、二つの３２ビットの加算、及びワークレジスタの退避復旧処理で代行している。なお、命令変換規則はこのような６４ビット演算機能に限定されるものではない。また、命令コードの変換だけでなく、高性能プロセッサ１５１のみがアクセス可能な周辺モジュール群１６０の動作を、低消費電力プロセッサ１４１で実行するソフトウェア（図示せず）で模擬するなどの応用例も考えられる。【００８１】
このように、ハイパバイザ１３０が命令コードの変換を行うことにより、高性能プロセッサ１５１でのみ実行が可能な命令コードが検出された場合でも、図５に示す変換テーブル２００を参照し、低消費電力プロセッサ１４１で実行できる命令コード（群）に変換して、低消費電力プロセッサ１４１で動作させることができる。【００８２】
なお、図５では、ハイパバイザ１３０が変換テーブル２００を参照することにより、命令コードの変換を実現する例を説明したが、これに限定される必要はなく、リスト形式などで実現する方法もある。また、例外が発生した命令コード及び例外コードやそれらの識別子をオフセットとしたサブルーチンコールの集合体などで実現してもよい。【００８３】
なお、低消費電力プロセッサ１４１で実行する場合、命令変換のオーバヘッド及び命令数の増加に伴い、高性能プロセッサ１５１で実行する場合に比べて、性能は大きく劣化する。しかしながら、前述した携帯電話機における、待受け状態（省電力動作モード時）における主画面の描画処理のように、利用者が画面を注視していない場合が殆どであるような状況下では、省電力動作モード時において、本来高性能プロセッサ１５１に行わせるべき命令コードを低消費電力プロセッサ１４１に行わせたことに起因する性能劣化は許容できるものみなせる。【００８４】
前述したように、本実施の形態で説明した個々のハードウェア部品が一つのＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）内に共存するか、あるいは、別々のＬＳＩ内に分割して配置されるかについての限定はない。図１に示すハイパバイザ１３０及び電源制御回路１７０を１つの集積回路で構成してもよく、また、図１に示す第一プロセッサ１４１、第二プロセッサ１５１、ハイパバイザ１３０及び電源制御回路１７０を１つの集積回路で構成してもよい。【００８５】
図６は、本実施の形態１におけるマルチプロセッサシステムの構成の他の例を示す図である。【００８６】
図６において、図１に示したものと同一の符号を付したものは、同一又はこれに相当する構成要素であるため、ここではその詳細な説明を省略する。【００８７】
図６において、マルチプロセッサシステム２は、メモリ１１０と、システムＬＳＩに相当するマルチコアＬＳＩチップ１９０とを備える。【００８８】
マルチコアＬＳＩチップ１９０は、内部バス１８０、低消費電力プロセッサ１４１、高性能プロセッサ１５１、周辺モジュール群１６０、電源制御回路１７０、低消費電力プロセッサ１４１が利用する第一キャッシュメモリ１４２、高性能プロセッサ１５１が利用する第二キャッシュメモリ１５２、制御信号線２０，２１、電力供給線３０，３１及び内蔵メモリ１９１を含む。電源制御回路１７０は、電源モードレジスタ１７１を備える。【００８９】
第一電源ブロック１４０には、低消費電力プロセッサ１４１に加え、低消費電力プロセッサ１４１が利用する第一キャッシュメモリ１４２が含まれる。第二電源ブロック１５０には、高性能プロセッサ１５１に加え、高性能プロセッサ１５１が利用する第二キャッシュメモリ１５２が含まれる。【００９０】
マルチコアＬＳＩチップ１９０は、更に、内蔵メモリ１９１を搭載する。内蔵メモリ１９１には、ハイパバイザ１３０の動作を実現するプログラムが格納されている。これにより、メモリ１１０内にハイパバイザ１３０の動作を実現するプログラムを格納する場合に比して、エミュレーション動作を高速に行うことを可能としている。通常、ハイパバイザ１３０は、複数のＯＳの共存及び切替えや、高性能プロセッサ１５１の命令コードのエミュレーションなど、限定的かつ固定化した処理のみを行う。したがって、メモリ１１０に比べて小容量の内蔵メモリ１９１を実装することで、ハイパバイザ１３０を動作させることができる。また、一旦、システムＬＳＩのアーキテクチャが決定すると、ハイパバイザ１３０の動作を実現するプログラムの変更が行われることはまれであるため、ハイパバイザ１３０のプログラムを、マスクＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）又はＦＬＡＳＨメモリなどに格納することも可能である。【００９１】
以上のような構成により、マルチコアＬＳＩチップ１９０の内部での消費電力をできる限り減少させることができる。さらに、電源制御回路１７０を含んだ形でＬＳＩが構成されているため、図１に示したシステムＬＳＩ間の配線は不要であり、マルチコアＬＳＩチップ１９０とメモリ１１０とを接続するだけで、低消費電力システムを構築することが可能である。【００９２】
図６に示すマルチプロセッサシステム２は上述のような構成を採用するため、省電力動作モード時には、比較的低性能かつ低消費電力で動作する低消費電力プロセッサ１４１のみでプログラムを実行することができ、省電力動作モード時の消費電力をできる限り削減することが可能である。特に、組込み計算機システムにおける適用効果は高い。【００９３】
なお、上記実施の形態においては、低消費電力プロセッサ１４１、高性能プロセッサ１５１及び周辺モジュール群１６０などがそれぞれ一つしか存在しない例を説明したが、プロセッサの数は２個でなければ本実施の形態の効果が得られないというわけではない。プロセッサの数が３個以上であっても、省電力時において、電力の供給が停止されたプロセッサが本来行うべき命令コードを、省電力時において動作可能な他のプロセッサが解釈して実行できる命令コードに変換し、変換した命令コードを他のプロセッサが実行するように構成すれば、３個以上のプロセッサを有するマルチコアシステムであっても適用が可能となる。【００９４】
（実施の形態２）
図７は、本実施の形態２のマルチプロセッサシステムの構成の一例を示す図である。図７において、図１及び図６と同一の符号を付したものは同一又はこれに相当するものであるため、ここではその詳細な説明を省略する。【００９５】
図７において、本実施の形態２のマルチプロセッサシステム３は、内部バス１８０、メモリ１１０、第一プロセッサ１４１、第一キャッシュメモリ１４２、第二プロセッサ１５１、第二キャッシュメモリ１５２、電源制御回路１７０及び周辺モジュール群１６０を備える。【００９６】
本実施の形態のマルチプロセッサシステム３は、電源制御回路１７０が、低消費電力プロセッサ１４１、高性能プロセッサ１５１、第一キャッシュメモリ１４２及び第二キャッシュメモリ１５２のそれぞれに供給する電力を制御できるように構成したことを特徴とする。【００９７】
図７に示す実施の形態２では、実施の形態１と比べて、電源ブロックの切り分けを詳細化している。【００９８】
図７に示すマルチプロセッサシステム３では、新たにプロセッサ電源ブロック及びキャッシュ電源ブロックを導入する。第一プロセッサ電源ブロック１４０ａは、低消費電力プロセッサ１４１を含む電源ブロックであり、第二プロセッサ電源ブロック１５０ａは、高性能プロセッサ１５１を含む電源ブロックである。電源制御回路１７０は、これらのプロセッサへの電力供給を独立して操作することができる。一方、第一キャッシュ電源ブロック１４０ｂは、第一キャッシュメモリ１４２を含む電源ブロックであり、第二キャッシュ電源ブロック１５０ｂは、第二キャッシュメモリ１５２を含む電源ブロックである。第一プロセッサ電源ブロック１４０ａ、第二プロセッサ電源ブロック１５０ａ、第一キャッシュ電源ブロック１４０ｂ及び第二キャッシュ電源ブロック１５０ｂは、それぞれ、電力供給線３０〜３３を介して電力の供給が行われる。【００９９】
プロセッサの電源ブロックとキャッシュメモリの電源ブロックとを各々独立させることによって、例えば、プロセッサへの電力の供給を遮断した状態で、キャッシュメモリに電力を供給させることができる。キャッシュメモリへの電力の供給遮断をプロセッサへの電力の供給遮断と同時に行い、再度、キャッシュメモリ及びプロセッサへの電力の供給を行ったときには、キャッシュメモリ内に格納したデータ（動作環境に関する情報、命令コード、及び命令コードが参照するデータなど）の更新、及びプロセッサによるキャッシュメモリにロードした命令コードの実行といった処理を行う必要がある。プロセッサへの電力の供給を遮断しつつ、遮断したプロセッサが利用するキャッシュメモリへ電力を供給させることが可能であれば、このような電源モードの切替えに伴うキャッシュメモリ内のデータ更新に起因する時間の遅れを解消することが可能である。【０１００】
なお、本実施の形態では、プロセッサの電源ブロックとキャッシュメモリの電源ブロックとを各々独立させることによって、より詳細な電力制御が可能となるため、省電力動作モード及び高速動作モードの他に、シャットダウンモード、スタンバイモード及び高速スタンバイモードなどの動作状態（電源モード）を設けた。電源制御回路１７０が行う制御は、前述と同様に、電力供給のオン・オフ、クロック信号の供給・停止、又は割込み待ち状態への遷移などが可能である。本実施の形態では、特に、電力供給のオン・オフと、クロック信号の供給・停止との二種類を連携して制御するとして、以降、説明を行う。【０１０１】
図８は、電源モードレジスタ１７１の取り得る電源モードに対応する動作対象とハイパバイザ１３０の動作内容とを示した対応表の一例を示す図である。【０１０２】
電源制御回路１７０は、複数の電源モードと、各電源モードにおける電力供給対象、クロック信号供給対象及びハイパバイザの動作内容とを対応付けた対応表２１０を予め記憶している。電源制御回路１７０は、例えば、対応表２１０に基づいて、各電源ブロックに対する電源からの電力の供給、各電源ブロックに対するクロック信号の供給、及びハイパバイザ１３０の実行の可否を判断する。【０１０３】
図８において、対応表２１０は、電源モード２１１と、電源モード２１１に対応する電源電力を供給する対象を示す電力供給対象２１２と、電源モード２１１に対応するクロック信号を供給する対象を示すクロック信号供給対象２１３と、電源モード２１１に対応するハイパバイザ１３０のエミュレーション機能を有効にするか否かに関する情報２１４とを含む。【０１０４】
電源モード２１１がシャットダウンモードである場合、マルチプロセッサシステム３自体は動作していない。シャットダウンモードのとき、低消費電力プロセッサ１４１、高性能プロセッサ１５１、第一キャッシュメモリ１４２及び第二キャッシュメモリ１５２のいずれにも電力の供給及びクロック信号の供給は行われない。いずれのプロセッサも動作していないため、ハイパバイザ１３０自体も動作しない。【０１０５】
電源モード２１１がスタンバイモードである場合、システムの高速復旧を目的として、第一キャッシュメモリ１４２に記憶されたデータが保持される。スタンバイモードでは、電源制御回路１７０は、第一キャッシュメモリ１４２（第一キャッシュ電源ブロック１４０ｂ）にのみ電力を供給し、第一キャッシュメモリ１４２に記憶されたデータが保持される。しかしながら、電源制御回路１７０は、それ以外の電源ブロックに対して電力供給を行わないため、第一キャッシュメモリ１４２に記憶された情報に基づく処理は行われない。したがって、電源制御回路１７０は、クロック信号の供給も行わなくてよい。また、スタンバイモードにおいても、低消費電力プロセッサ１４１及び高性能プロセッサ１５１は動作しないため、ハイパバイザ１３０は動作しない。【０１０６】
電源モード２１１が省電力動作モードである場合、前述した省電力動作モードを意味する。省電力動作モードでは、低消費電力プロセッサ１４１を利用して、マルチプロセッサシステム３に存在する全てのタスクを動作させる。このため、電源制御回路１７０は、低消費電力プロセッサ１４１及び第一キャッシュメモリ１４２に対し、電力を供給するとともにクロック信号を供給する。なお、電源制御回路１７０は、第二プロセッサ１５１及び第二キャッシュメモリ１５２に電力及びクロック信号を供給しない。さらに、同時に、ハイパバイザ１３０を動作させ、本来高性能プロセッサ１５１上で動作するタスク及び第二ＯＳ１２１が低消費電力プロセッサ１４１上でも動作するように、高性能プロセッサ１５１に用いられる第二命令コードを変換させる。【０１０７】
電源モード２１１が高速スタンバイモードである場合、高性能プロセッサ１５１の高速復旧を目的として、第二キャッシュメモリ１５２に記憶されたデータが保持される。高速スタンバイモードでは、低消費電力プロセッサ１４１、第一キャッシュメモリ１４２及びハイパバイザ１３０の動作内容が省電力動作モードと同一である。また、高速スタンバイモードでは、電源制御回路１７０は、第二キャッシュメモリ１５２に電力を供給し、第二キャッシュメモリ１５２に記憶されたデータが保持される。なお、電源制御回路１７０は、第二プロセッサ１５１に電力を供給せず、第二プロセッサ１５１及び第二キャッシュメモリ１５２にクロック信号を供給しない。これにより、高性能プロセッサ１５１は、起動すると、直ちに、第二キャッシュメモリ１５２に記憶した情報を用いて処理を行うことができる。【０１０８】
なお、高速スタンバイモードでは、データを保持するのみであるため、第二キャッシュメモリ１５２には、クロック信号の供給は行わなくてよい。ただし、後述するスヌープ制御を行う場合には、第二キャッシュメモリ１５２に対して無効化処理を行わせなければならず、クロック信号の供給を行う必要があることに注意すべきである。【０１０９】
最後に、電源モード２１１が高速動作モードである場合、前述した高速動作モードを意味している。高速動作モードでは、電源制御回路１７０は、低消費電力プロセッサ１４１、高性能プロセッサ１５１、第一キャッシュメモリ１４２及び第二キャッシュメモリ１５２の全てに対して電力を供給するとともにクロック信号を供給する。本来、高性能プロセッサ１５１上で動作するタスク及び第二ＯＳ１２１は、そのまま高性能プロセッサ１５１で実行されるため、低消費電力プロセッサ１４１で第二命令コードを変換する必要はない。したがって、ハイパバイザ１３０を動作させる必要はない。【０１１０】
以上のように、電源制御回路１７０が電源モードレジスタ１７１の個々の値（電源モード）に応じて電力の供給動作、クロック信号の供給動作、及びハイパバイザ１３０の動作を変更させることで、きめ細かな省電力化が可能である。また、省電力動作モード及び高速スタンバイモードにおいて、ハイパバイザ１３０にエミュレーション動作を行わせることで、本来高性能プロセッサ１５１で動作させるべきタスク及びＯＳを低消費電力プロセッサ１４１で動作させることができる。なお、エミュレーション動作とは、高性能プロセッサ１５１で用いられる第二命令コードを低消費電力プロセッサ１４１で実行できる命令コードに変換し、変換した命令コードを低消費電力プロセッサ１４１で実行させる動作を表す。【０１１１】
これにより、省電力時における高性能プロセッサ１５１への電力の供給をできる限り抑えることが可能であり、さらなる省電力化を行うことができる。同時に、スタンバイモード及び高速スタンバイモードを設けることで、低消費電力プロセッサ１４１又は高性能プロセッサ１５１への電力の供給を再開した時点でのキャッシュミスによる遅れをより低減することが可能となり、更なる高速化及び応答時間短縮などの効果もある。【０１１２】
図９は、本実施の形態２における電源制御回路１７０の動作の一例を説明するためのフローチャートである。【０１１３】
なお、本実施の形態では、電源制御回路１７０内部に電源制御用マイクロプロセッサが存在するものと仮定し、処理フローでの実現例を記載しているが、これを論理回路又は順序回路などのハードウェアで実現することも可能である。【０１１４】
まず、電源制御回路１７０は、電源モードレジスタ１７１の設定値（この例では電源モード）の変更を監視し、設定値の変更を検出すればステップＳ２２の処理へ進む（ステップＳ２１）。【０１１５】
電源モードレジスタ１７１の設定値の変更を検出した場合、電源制御回路１７０は、変更された設定値（電源モード）に対応する制御対象を図８に示した対応表２１０を用いて特定し、特定した制御対象（電源ブロック）に電力を供給する（ステップＳ２２）。【０１１６】
この後、新たに電力を供給した電源ブロックに含まれるハードウェア（プロセッサ及びキャッシュメモリなど）の動作が安定すれば、電源制御回路１７０は、同じく対応表２１０に記憶されている特定した電源ブロックにクロック信号を供給する（ステップＳ２３）。【０１１７】
なお、通常、電力の供給及びクロック信号の供給の安定待ち時間は、ハードウェア固有の定数である。したがって、動作を安定させるには、クロック・ウォッチドッグタイマ（図示せず）などを利用して、割込み待ち又はポーリングで定められた時間分だけ経過するのを待つだけでよい。【０１１８】
その後、新たにクロック信号を供給した電源ブロックに含まれるハードウェア（プロセッサ及びキャッシュメモリなど）の動作が安定すれば、電源制御回路１７０は、対応表２１０に従い、変更前の電源モードと変更後の電源モードとにおけるハイパバイザ１３０のエミュレーション動作に変更があるか否かを判断する（ステップＳ２４）。変更があると判断した場合（ステップＳ２４でＹＥＳ）、ステップＳ２５の処理へ進み、変更が無いと判断した場合（ステップＳ２４でＮＯ）、ステップＳ２１の処理へ戻る。【０１１９】
図８に示すように対応表２１０は、電源モード２１１毎に、ハイパバイザ１３０のエミュレーション機能を有効にするか否かに関する情報２１４を保持している。例えば、“シャットダウンモード”又は“スタンバイモード”に対応するハイパバイザ１３０の情報２１４は“動作せず”となっている。これは、電源モードがシャットダウンモード又はスタンバイモードである場合にはハイパバイザ１３０は動作しないことを意味する。この場合、当然のことながらハイパバイザ１３０のエミュレーション動作は有効でない（つまり無効である）。【０１２０】
また、“省電力動作モード”又は“高速スタンバイモード”に対応するハイパバイザ１３０の情報２１４は“エミュレーション動作”となっている。これは、電源モードが“省電力動作モード又は高速スタンバイモードである場合には、ハイパバイザ１３０を動作させるとともに、ハイパバイザ１３０のエミュレーション機能を有効にすることを意味する。【０１２１】
また、“高速動作モード”に対応するハイパバイザ１３０の情報２１４は“動作せず、あるいは、動作（ただし、エミュレーションは行わず）”となっている。これは、電源モードが“高速動作モード”である場合において、ハイパバイザ１３０を動作させる可能性があるものの、ハイパバイザ１３０のエミュレーション機能を無効にすることを意味する。【０１２２】
ステップＳ２４において、エミュレーション動作に変更があるか否かを判断するというのは、変更前の電源モードと変更後の電源モードとにおけるハイパバイザ１３０のエミュレーション動作が無効から有効又は有効から無効に変更されたか否かを判断することである。【０１２３】
例えば、電源モードが高速動作モードから省電力動作モードへ変更される場合、エミュレーション機能が無効から有効に変更されるので、電源制御回路１７０は、エミュレーション動作に変更があると判断する。一方、電源モードが高速スタンバイモードから省電力動作モードへ変更される場合、エミュレーション機能に変更はないため、電源制御回路１７０は、エミュレーション動作に変更は無いと判断する。【０１２４】
ステップＳ２４において、エミュレーション動作に変更があると判断した場合、電源制御回路１７０は、エミュレーション動作を有効又は無効にするための通知を低消費電力プロセッサ１４１に発行する（ステップＳ２５）。エミュレーション動作を有効にするための通知を受けた場合、低消費電力プロセッサ１４１は、メモリ１１０内に格納されたハイパバイザ１３０内のエミュレーション動作を機能させるためのプログラムを実行する。また、エミュレーション動作を無効にするための通知を受けた場合、低消費電力プロセッサ１４１は、エミュレーション動作を機能させるためのプログラムの実行を停止する。【０１２５】
ステップＳ２５における低消費電力プロセッサ１４１への通知の具体的手法であるが、例えば割込みによる通知が考えられる。また、低消費電力プロセッサ１４１へ割込みで通知する以外にも、ハイパバイザ１３０が電源モードレジスタ１７１の値をポーリングして確認する方法を採用してもよい。【０１２６】
ステップＳ２５の処理を終了した後、ステップＳ２１の処理へ戻る。【０１２７】
図９に示した処理フローに基づいて電源制御回路１７０を動作させることで、個々の電源モードレジスタ１７１の値に応じて電力の供給、クロック信号の供給及びエミュレーション動作の変更を行うことが可能となる。【０１２８】
なお、本実施の形態において、低消費電力プロセッサ１４１は、第一命令コード及び変換した命令コードのいずれかを実行することにより生成される第一データをメモリ１１０へ格納してもよく、高性能プロセッサ１５１は、第二命令コードを実行することにより生成される第二データをメモリ１１０へ格納してもよい。【０１２９】
また、低消費電力プロセッサ１４１は、メモリ１１０に格納された第一データを用いて第一命令コードを実行することにより生成される新たなデータを第一キャッシュメモリ１４２へ格納し、メモリ１１０に格納された第二データを用いて変換した命令コードを実行することにより生成される新たなデータを第一キャッシュメモリ１４２へ格納してもよく、高性能プロセッサ１５１は、メモリ１１０に格納された第二データを用いて第二命令コードを実行することにより生成される新たなデータを第二キャッシュメモリ１５２へ格納してもよい。【０１３０】
さらに、低消費電力プロセッサ１４１は、メモリ１１０に格納された第一データを用いて第一命令コードを実行することにより生成される新たなデータをメモリ１１０及び第一キャッシュメモリ１４２へ格納し、メモリ１１０に格納された第二データを用いて変換した命令コードを実行することにより生成される新たなデータをメモリ１１０及び第一キャッシュメモリ１４２へ格納してもよく、高性能プロセッサ１５１は、メモリ１１０に格納された第二データを用いて第二命令コードを実行することにより生成される新たなデータをメモリ１１０及び第二キャッシュメモリ１５２へ格納してもよい。【０１３１】
（実施の形態３）
本発明の前述した実施の形態においては、プロセッサを中心とした低消費電力化技術を説明した。しかしながら、一般に、低消費電力化技術は、メモリ及び周辺モジュールを含めて実現する必要がある。例えば、通常のマルチプロセッサシステム及びマルチコアＬＳＩにおいて、周辺モジュール群は、通常、ハードウェア的に又は初期化時に、個々のプロセッサに１対１で対応付けられるか、もしくは、処理要求を行ったプロセッサに対して割込みなどの結果通知を行う。【０１３２】
しかしながら、前述した実施の形態において、割込みなどを行うようなプロセッサと周辺モジュール群との関係があると、割込みなどのタイミングで意図しないプロセッサが動作することがあり、所望の低消費電力化を実現することができない場合がある。【０１３３】
前述したように、従来のマルチプロセッサシステムでは、個々の割込みは、当該割込みの種類に応じて個別のプロセッサに割り当てられていることが多い。しかしながら、本実施の形態３のマルチプロセッサシステムは、周辺モジュール群からの割込み信号を受け取ると、電源モードに応じて、いずれかのプロセッサに割込みを通知するための構成を設けている。【０１３４】
図１０は、本実施の形態３のマルチプロセッサシステムの構成の一例を示す図である。図１０において図１又は図６に付した符号と同一の構成要素は同一又はこれに相当する構成要素であるため、ここでは、その詳細な説明を省略する。【０１３５】
図１０において、本実施の形態３のマルチプロセッサシステム４は、内部バス１８０、メモリ１１０、第一プロセッサ１４１、第一キャッシュメモリ１４２、第二プロセッサ１５１、第二キャッシュメモリ１５２、電源制御回路１７０ａ及び周辺モジュール群１６０ａを備える。【０１３６】
なお、図１０において、周辺モジュール群１６０ａが割込みコントローラ１６１を含む構成を示しているが、割込みコントローラ１６１は、周辺モジュール群１６０ａとは別個に独立とした構成としても良い。【０１３７】
割込みコントローラ１６１は、周辺モジュール群１６０ａ内において、ユーザ又は外部環境からのイベント発生、あるいは、プロセッサから要求された処理が完了した時点で、プロセッサに対して割込みを発生させ、必要な処理を行わせる。【０１３８】
信号線２５は、周辺モジュール群１６０ａにて発生したイベントを含む割込み信号を伝送する。【０１３９】
電源制御回路１７０ａは、電源モードレジスタ１７１に加え、割込み時間制御回路１７２、割込み対応表１７３及びデマルチプレクサ１７４を含む。【０１４０】
デマルチプレクサ１７４は、割込み信号線２５を介して受け取った割込み信号を低消費電力プロセッサ１４１又は高性能プロセッサ１５１のいずれに通知するかを決定するための回路である。デマルチプレクサ１７４は、低消費電力プロセッサ１４１と信号線２２を介して接続されており、高性能プロセッサ１５１と信号線２３を介して接続されている。デマルチプレクサ１７４は、低消費電力プロセッサ１４１に割込み信号を通知する場合には信号線２２を介して割込み信号を伝送し、高性能プロセッサ１５１に割込み信号を通知する場合には、信号線２３を介して割込み信号を伝送する。【０１４１】
割込み対応表１７３は、個々の割込み要因に応じて、割込み通知対象プロセッサを特定するためのテーブルデータである。割込み対応表１７３内にはデフォルトの割込み通知対象プロセッサが設定されるが、デマルチプレクサ１７４は、当該テーブルデータのみを利用するのではなく、電源モードレジスタ１７１に格納された電源モードの値も参照して割込み対象プロセッサを特定する。具体的には、デマルチプレクサ１７４は、省電力動作モード時には低消費電力プロセッサ１４１に割込みを通知し、高速動作モード時には割込み対応表１７３を用いて選択したプロセッサに割込みを通知する方法を基本とする。【０１４２】
なお、電源モードの種類としては図８に示したものと同様に、シャットダウンモード、スタンバイモード、省電力動作モード、高速スタンバイモード及び高速動作モードといった五つの動作モード（電源モード）を設けたものを例に説明する。図１０に対応した割込み対象プロセッサの特定方法については、理解が容易なように、図１１〜図１４に示すテーブル及び処理フローを用いて説明する。【０１４３】
割込み時間制御回路１７２は、割込みコントローラ１６１より受け取った割込み信号を対応するプロセッサへ通知するタイミングを制御するための回路である。例えば、割込みを通知すべきプロセッサの電源モードがスタンバイモード又はシャットダウンモードである場合、対応するプロセッサが割込みを受理できる状態になるまで待つ必要がある。一方、割込みは、プロセッサが割込み受理可能状態であるか否かに関わらず独立して発生する。このため、割込み時間制御回路１７２は、例えば遅延回路などで構成され、割込み信号を受け取った場合、対応するプロセッサが割込みを受理可能な状態になるのを待って通知できるようにするために、対応するプロセッサへの割込み信号の伝達を遅延させる機能を有する。【０１４４】
なお、スタンバイモード又はシャットダウンモードのプロセッサに割込みを通知する必要がある場合、対応するプロセッサを起動し、プロセッサが安定化した時点で割込みを通知する機能が通常、一般的なプロセッサには搭載されている。しかしながら、本実施の形態においては、ハイパバイザ１３０の起動、第一キャッシュメモリ１４２及び第二キャッシュメモリ１５２等を用いた動作環境の設定が必要である。本実施の形態では、割込み時間制御回路１７２における割込み信号の伝送を遅延する遅延時間を、ハイパバイザ１３０の起動処理の完了に要する時間以上とした点に特徴がある。これにより、ハイパバイザ１３０を起動する前に対応するプロセッサへ割込みが通知されることに起因して、割込み処理実行中に、未定義命令例外が発生し、当該例外を捕捉できないといったことがなくなり、安全に処理を継続できるようになる。【０１４５】
本実施の形態では、割込み時間制御回路１７２をハードウェア（回路）として実現する例を説明したが、上述の機能を実現するソフトウェア（プログラム）を備える構成としても構わない。【０１４６】
以上のような構成を採用することにより、省電力動作モード時には低消費電力プロセッサ１４１に割込みを通知し、高速動作モード時には対応するプロセッサに割込みを通知することができ、省電力動作モード時において、高性能プロセッサ１５１への割込み通知を行わないようにすることができる。【０１４７】
図１１は、本実施の形態３で用いる割込み対応表の一例を示す図である。割込み対応表は、デフォルトで、割込み要求対象プロセッサが低消費電力プロセッサ１４１又は高性能プロセッサ１５１に割り当てられるときに用いられる。【０１４８】
図１１において、割込み対応表１７３は、後述する割込み要求元情報２２１及び割込み対象情報２２２を含む。割込み要求元情報２２１は、割込みコントローラ１６１から受けた割込み信号の要求元を特定するための情報である。割込み対象情報２２２は、要求元からの要求を低消費電力プロセッサ１４１及び高性能プロセッサ１５１のいずれに実行させるのかを示す情報である。【０１４９】
電源制御回路１７０ａは、割込みコントローラ１６１から受けた割込み信号の要求元と、要求元からの要求を実行させるプロセッサとを対応付けた割込み対応表１７３を記憶する。【０１５０】
図１１では、割込み要求元が、省電力動作モード時でも動作するシリアル通信又はネットワークデバイスである場合には、対応する処理を低消費電力プロセッサ１４１にデフォルトで割り振り、割込み要求元が、画像処理又はディスプレイ表示などの高速処理が必要なデバイスである場合には、対応する処理を高性能プロセッサ１５１にデフォルトで割り振る例を示している。【０１５１】
電源制御回路１７０ａは、割込みコントローラ１６１からの割込みの通知を受けた場合、要求元を特定し、特定した要求元に基づいてデフォルトで割り当てたプロセッサを特定する。要求元の特定は、例えば割込みの要求とともに要求元の情報も割込みの要求に対応付けて伝送すればよい。すなわち、割込みコントローラ１６１は、割込みの要求と、要求元を特定するための要求元特定情報とを含む割込み信号を電源制御回路１７０ａへ伝送する。【０１５２】
図１２は、電源モードレジスタ１７１及び割込み対応表１７３に基づく動作内容を示した動作対応表の一例を示す図である。なお、本実施の形態における電源制御は、電源制御回路１７０ａは、内部に電源制御用マイクロプロセッサを搭載し、動作対応表２３０をテーブルデータとして所持したプログラムで構成して電源制御を行ってもよいし、動作対応表２３０を順序回路又は論理回路で構成して電源制御を行ってもよい。【０１５３】
電源制御回路１７０ａは、図１１に示す割込み対応表１７３を用いて、デフォルトで割り当てるプロセッサを特定した後、図１２に示す動作対応表２３０を用いて、電源モードに応じて実際に割り当てるプロセッサを特定するとともに、割込み時間制御回路１７２及びデマルチプレクサ１７４をどのように動作させるかを決定する。【０１５４】
図１２において、動作対応表２３０には、電源制御回路１７０ａにより制御している電源モード２３１と、図１１に示す割込み対応表１７３を用いて特定したデフォルトのプロセッサ２３２と、デマルチプレクサ１７４が実際に割込みを通知するプロセッサ２３３と、割込み時間制御回路１７２の動作内容２３４とが対応付けられている。【０１５５】
電源制御回路１７０ａは、電源モードと、割込み対応表１７３を用いて特定したプロセッサと、デマルチプレクサ１７４が実際に割込みを通知するプロセッサと、割込み時間制御回路１７２の動作内容とを対応付けた動作対応表２３０を記憶する。【０１５６】
電源制御回路１７０ａは、図１２に示す動作対応表２３０を保持しており、電源モードレジスタ１７１及び割込み対応表１７３を用いて、デマルチプレクサ１７４の動作及び割込み時間制御回路１７２の動作を制御する。【０１５７】
図１２において、例えば電源モード２３１がシャットダウンモード又はスタンバイモードであり、割込み対応表１７３を参照して特定されたデフォルトのプロセッサ２３２が低消費電力プロセッサ１４１である場合、デマルチプレクサ１７４が割込みを通知するプロセッサ２３３は低消費電力プロセッサ１４１となり、割込み時間制御回路１７２の動作２３４は低消費電力プロセッサ１４１の安定化待ちとなる。これは、電源制御回路１７０ａが第一電源ブロック１４０（低消費電力プロセッサ１４１及び第一キャッシュメモリ１４２）へ電力の供給を開始した後、低消費電力プロセッサ１４１が安定するまでの時間だけ、デマルチプレクサ１７４から低消費電力プロセッサ１４１への割込みの通知を割込み時間制御回路１７２を用いて遅延させることを意味する。このとき、第一キャッシュメモリ１４２の安定に要する時間は、低消費電力プロセッサ１４１の安定に要する時間よりも短いと想定している。【０１５８】
また、電源モード２３１がシャットダウンモード又はスタンバイモードであり、割込み対応表１７３を参照して特定されたデフォルトのプロセッサ２３２が高性能プロセッサ１５１である場合、デマルチプレクサ１７４が割込みを通知するプロセッサ２３３は低消費電力プロセッサ１４１となり、割込み時間制御回路１７２の動作２３４は低消費電力プロセッサ１４１の安定化待ち及びハイパバイザ１３０の起動待ちとなる。これは、電源制御回路１７０ａが第一電源ブロック１４０（低消費電力プロセッサ１４１及び第一キャッシュメモリ１４２）へ電力の供給を開始した後、低消費電力プロセッサ１４１が安定するまでの時間と、ハイパバイザ１３０を起動してエミュレーション動作が有効となるまでの時間とを加算した時間だけ、デマルチプレクサ１７４から低消費電力プロセッサ１４１への割込みの通知を割込み時間制御回路１７２を用いて遅延させることを意味する。【０１５９】
また、電源モード２３１が省電力動作モード又は高速スタンバイモードであり、割込み対応表１７３を参照して特定されたデフォルトのプロセッサ２３２が低消費電力プロセッサ１４１である場合、デマルチプレクサ１７４が割込みを通知するプロセッサ２３３は低消費電力プロセッサ１４１となり、割込み時間制御回路１７２の動作２３４は即時割込み通知となる。これは、割込み時間制御回路１７２による遅延処理を行うことなく、デマルチプレクサ１７４から低消費電力プロセッサ１４１への割込みの通知を行うことを意味する。【０１６０】
また、電源モード２３１が省電力動作モードであり、割込み対応表１７３を参照して特定されたデフォルトのプロセッサ２３２が高性能プロセッサ１５１である場合、デマルチプレクサ１７４が割込みを通知するプロセッサ２３３は低消費電力プロセッサ１４１となり、割込み時間制御回路１７２の動作２３４はハイパバイザ１３０の起動待ちとなる。これは、本来高性能プロセッサ１５１で実行すべき内容を低消費電力プロセッサ１４１で実行するため、ハイパバイザ１３０の起動が完了するまでの時間だけ、デマルチプレクサ１７４から低消費電力プロセッサ１４１への割込みの通知を割込み時間制御回路１７２を用いて遅延させることを意味する。【０１６１】
また、電源モード２３１が高速スタンバイモードであり、割込み対応表１７３を参照して特定されたデフォルトのプロセッサ２３２が高性能プロセッサ１５１である場合、デマルチプレクサ１７４が割込みを通知するプロセッサ２３３は高性能プロセッサ１５１となり、割込み時間制御回路１７２の動作２３４は高性能プロセッサ１５１の安定化待ち及びキャッシュメモリ間データ移動待ちとなる。これは、電源制御回路１７０ａが第二電源ブロック１５０（高性能プロセッサ１５１及び第二キャッシュメモリ１５２）へ電力の供給を開始した後、高性能プロセッサ１５１が安定するまでの時間と、高性能プロセッサ１５１による第二キャッシュメモリ１５２のデータ（第二ＯＳ１２１の動作環境及び命令コードが参照するデータなど）を更新するのに要する時間を加算した時間だけ、デマルチプレクサ１７４から高性能プロセッサ１５１への割込みの通知を割込み時間制御回路１７２を用いて遅延させることを意味する。【０１６２】
このとき、第二キャッシュメモリ１５２の安定に要する時間は、高性能プロセッサ１５１の安定に要する時間よりも短いと想定している。また、第二キャッシュメモリ１５２のデータ、例えば、第二ＯＳ１２１の動作環境及び命令コードが参照するデータなどを更新するのに要する時間というのは、高性能プロセッサ１５１が必要とするデータに関して、第一キャッシュメモリ１４２から第二キャッシュメモリ１５２へのデータ転送を行い、データ転送の完了までに要する時間である。【０１６３】
電源モード２３１が省電力動作モード及び高速スタンバイモードである場合、低消費電力プロセッサ１４１上で高性能プロセッサ１５１のプログラムをエミュレーションしているため、第一キャッシュメモリ１４２上に、高性能プロセッサ１５１が本来使用すべき命令コード及びデータが存在していることがある。アドレス情報に代表される識別情報により、第一キャッシュメモリ１４２上に存在する高性能プロセッサ１５１の命令コード及びデータを特定することができれば、それらの記憶内容を第二キャッシュメモリ１５２に転送することで、エミュレーション動作により低消費電力プロセッサ１４１で実行していたタスクを高性能プロセッサ１５１へ引継ぐことができ、かつ高速な処理を期待することができる。なお、後述するスヌープ制御回路の動作を用いることを想定し、キャッシュメモリ間でデータ転送を行わない方法もある。【０１６４】
また、電源モード２３１が高速動作モードであり、割込み対応表１７３を参照して特定されたデフォルトのプロセッサ２３２が低消費電力プロセッサ１４１及び高性能プロセッサ１５１のいずれかである場合、デマルチプレクサ１７４が割込みを通知するプロセッサ２３３はデフォルトのプロセッサと同一となり、割込み時間制御回路１７２の動作２３４は即時割込み通知となる。これは、割込み時間制御回路１７２による遅延処理を行うことなく、デマルチプレクサ１７４からデフォルトのプロセッサへの割込みの通知を行うことを意味する。【０１６５】
なお、図１２において、電源モード２３１がシャットダウンモード、スタンバイモード又は省電力動作モードである場合、割込みコントローラ１６１より受けた割込みが、高性能プロセッサ１５１に対して発行されたとしても、デマルチプレクサ１７４は、実際の割込みの通知を高性能プロセッサ１５１から低消費電力プロセッサ１４１へ切り替えている。これは、電力消費を低減させるためである。【０１６６】
図１３及び図１４は、本実施の形態３の電源制御回路１７０ａの動作の一例を説明するためのフローチャートである。【０１６７】
図１３及び図１４に示す動作は、電源制御回路１７０ａに存在する電源制御用マイクロプロセッサ上で動作するプログラムで実現してもよく、図１２に示す動作を実現する順序回路又は論理回路で構成されるハードウェアで実現してもよい。【０１６８】
電源制御回路１７０ａは、割込みコントローラ１６１から信号線２５を介して割込みが通知されると、図１１に示したテーブル情報（割込み対応表１７３）を参照し、デフォルトで設定された割込みを通知すべきプロセッサを特定する（ステップＳ３１）。【０１６９】
次に、電源制御回路１７０ａは、電源モードレジスタ１７１の状態をチェックする（ステップＳ３２）。【０１７０】
この後、電源制御回路１７０ａは、図１２で説明した動作対応表２３０を参照し、デフォルトで設定されたプロセッサと、現在の電源モードレジスタ１７１の電源モードとに基づき、実際に割込みを通知すべきプロセッサを特定する（ステップＳ３３）。【０１７１】
次に、電源制御回路１７０ａは、ステップＳ３３にて特定した実際に通知すべきプロセッサが停止状態であるか否かを判断する（ステップＳ３４）。ここで、停止状態であると判断した場合（ステップＳ３４でＹＥＳ）、ステップＳ３５の処理へ進み、停止状態ではないと判断した場合（ステップＳ３４でＮＯ）、ステップＳ４０の処理へ進む。【０１７２】
ステップＳ３４において、特定したプロセッサが停止状態であれば、電源制御回路１７０ａは、特定したプロセッサを含む電源ブロックに電力及びクロック信号を供給する（ステップＳ３５）。次に、電源制御回路１７０ａは、特定したプロセッサが安定動作状態になったか否かを判断する（ステップＳ３６）。ここで、特定したプロセッサが安定動作状態になったと判断された場合（ステップＳ３６でＹＥＳ）、ステップＳ３７の処理へ移行し、特定したプロセッサが安定動作状態になっていないと判断された場合（ステップＳ３６でＮＯ）、特定したプロセッサが安定動作状態になるまで、ステップＳ３６の判断を繰り返し実行する。【０１７３】
次に、電源制御回路１７０ａは、安定動作状態に移行したプロセッサが高性能プロセッサ１５１であるか否かを判断する（ステップＳ３７）。安定したプロセッサが高性能プロセッサ１５１であると判断した場合（ステップＳ３７でＹＥＳ）、ステップＳ３８の処理へ進み、安定したプロセッサが高性能プロセッサ１５１でないと判断した場合（ステップＳ３７でＮＯ）、ステップＳ４０の処理へ進む。【０１７４】
ステップＳ３７において、安定動作状態に移行したプロセッサが高性能プロセッサ１５１であると判断した場合、安定動作状態になる以前に、本来高性能プロセッサ１５１で動作すべきプログラム（命令コード）を低消費電力プロセッサ１４１上でエミュレーション動作させていた可能性がある。このため、電源制御回路１７０ａは、性能向上対策の一環として、高性能プロセッサ１５１が必要とする命令コードと、命令コードが参照するデータと、低消費電力プロセッサ１４１上で動作をさせていた第二ＯＳ１２１の動作環境とを第一キャッシュメモリ１４２から第二キャッシュメモリ１５２に移動させる（ステップＳ３８）。【０１７５】
次に、電源制御回路１７０ａは、第一キャッシュメモリ１４２から第二キャッシュメモリ１５２へのデータの移動が完了したか否かを判断する（ステップＳ３９）。ここで、データの移動が完了したと判断した場合（ステップＳ３９でＹＥＳ）、ステップＳ４０の処理へ進み、データの移動が完了していないと判断された場合（ステップＳ３９でＮＯ）、データの移動が完了するまで、ステップＳ３９の判断を繰り返し実行する。【０１７６】
これにより、高性能プロセッサ１５１が必要とする命令コード及びデータを予め第二キャッシュメモリ１５２上に記憶し、高性能プロセッサ１５１の動作を効率化させることができる。また、高性能プロセッサ１５１がキャッシュミスを起こした場合、スヌープ動作などにより第一キャッシュメモリ１４２上に存在していた命令コード及びデータを無効化又は更新させる手間も必要なくなる。【０１７７】
次に、電源制御回路１７０ａは、ステップＳ３１において特定したデフォルトで設定されたプロセッサと、ステップＳ３３において特定した実際に割込みを通知すべきプロセッサとが同じプロセッサであるか否かを判断する（ステップＳ４０）。デフォルトのプロセッサと割込み対象のプロセッサとが同一であると判断した場合（ステップＳ４０でＹＥＳ）、ステップＳ４３の処理へ進む。一方、デフォルトのプロセッサと割込み対象のプロセッサとが同一でないと判断した場合（ステップＳ４０でＮＯ）、ステップＳ４１の処理へ進む。【０１７８】
ステップＳ４０において、同じプロセッサでないと判断された場合、デフォルトでは高性能プロセッサ１５１に割り当てていた割込み処理が、実際には低消費電力プロセッサ１４１に割り当てられることとなる。この場合、ハイパバイザ１３０の特にエミュレーション動作を機能させる必要がある。そのため、電源制御回路１７０ａは、ハイパバイザ１３０が起動していなければ、ハイパバイザ１３０を起動させる（ステップＳ４１）。【０１７９】
次に、電源制御回路１７０ａは、ハイパバイザ１３０の起動が完了したか否かを判断する（ステップＳ４２）。ここで、ハイパバイザ１３０の起動が完了したと判断した場合（ステップＳ４２でＹＥＳ）、ステップＳ４３の処理へ進む。一方、ハイパバイザ１３０の起動が完了していないと判断した場合（ステップＳ４２でＮＯ）、ハイパバイザ１３０の起動が完了するまで、ステップＳ４２の判断を繰り返し実行する。【０１８０】
ハイパバイザ１３０の起動が完了し、ハイパバイザ１３０が機能するようになった時点で、電源制御回路１７０ａは、通知すべきプロセッサに割込みを通知する（ステップＳ４３）。【０１８１】
図１３及び図１４に示すような動作で割込みを通知することにより、省電力動作モード時には低消費電力プロセッサ１４１に割込みを通知し、高速動作モード時には割込み要求に対応するプロセッサに割込みを通知することができる。すなわち、省電力動作モード時において、高性能プロセッサ１５１への割込み通知を行わないようにすることが可能である。さらに、スタンバイモードにおいて、プロセッサへの割込み通知を遅延させることが可能であり、ハイパバイザ１３０、第一キャッシュメモリ１４２及び第二キャッシュメモリ１５２のより確実かつより効率的な動作を保証することも可能となる。【０１８２】
（実施の形態４）
上述した実施の形態３において、第一キャッシュメモリ１４２及び第二キャッシュメモリ１５２の効率的な利用方法について述べた。しかしながら、複数のプロセッサがメモリを共有して動作する場合には、通常、キャッシュメモリ間でスヌープ制御が行われる。スヌープ制御とは、複数のプロセッサ間で共有される命令コードやデータの一貫性を保証する制御方法である。【０１８３】
スヌープ制御では、個々のプロセッサから共有メモリへの書込み動作を監視しておき、一方のプロセッサで書込みが行われると、もう一方のプロセッサが利用しているキャッシュメモリの対応するエントリを無効化又は更新する。これにより、複数のプロセッサに対応するキャッシュメモリ間での命令コード及びデータの一貫性が保証され、論理的矛盾が発生しなくなる。【０１８４】
図１５は、本実施の形態４のマルチプロセッサシステムの構成の一例を示す図である。図１５において図１、図６及び図７に付した符号と同一の構成要素は同一又はこれに相当する構成要素であるため、ここでは、その詳細な説明を省略する。【０１８５】
図１５において、本実施の形態４のマルチプロセッサシステム５は、内部バス１８０、メモリ１１０、第一プロセッサ１４１、第一キャッシュメモリ１４２、第一スヌープ制御回路１４３、第二プロセッサ１５１、第二キャッシュメモリ１５２、第二スヌープ制御回路１５３、電源制御回路１７０及び周辺モジュール群１６０を備える。【０１８６】
第一プロセッサ電源ブロック１４０ａには、低消費電力プロセッサ１４１が含まれ、第一キャッシュ電源ブロック１４０ｃには、第一キャッシュメモリ１４２及び第一スヌープ制御回路１４３が含まれる。第二プロセッサ電源ブロック１５０ａには、第二プロセッサ１５１が含まれ、第二キャッシュ電源ブロック１５０ｃには、第二キャッシュメモリ１５２及び第二スヌープ制御回路１５３が含まれる。【０１８７】
図１５において、第一スヌープ制御回路１４３は、低消費電力プロセッサ１４１から第一キャッシュメモリ１４２へのデータの書込み動作を監視し、書込みが行われると、第二キャッシュメモリ１５２の対応するエントリの無効化又は更新を依頼する。【０１８８】
また、第二スヌープ制御回路１５３は、高性能プロセッサ１５１から第二キャッシュメモリ１５２へのデータの書込み動作を監視し、書込みが行われると、第一キャッシュメモリ１４２の対応するエントリの無効化又は更新を依頼する。【０１８９】
なお、スヌープ制御回路の一般的な制御方法は、例えば、特開平４−１９１９４６号公報などに開示されている。【０１９０】
本実施の形態４において、第一スヌープ制御回路１４３は有効カウンタ１４３１を備え、第二スヌープ制御回路１５３は有効カウンタ１５３１を備える。なお、有効カウンタ１４３１，１５３１は、有効データ数保持部の一例に相当する。【０１９１】
有効カウンタ１４３１は、第一キャッシュメモリ１４２に記憶されている有効なデータエントリ数を示すものであり、有効カウンタ１５３１は、第二キャッシュメモリ１５２に記憶されている有効なデータエントリ数を示すものである。【０１９２】
例えば、該当するキャッシュメモリにデータが存在しない等の、キャッシュミスが発生すると、メモリ１１０から該当するデータへアクセスするとともに、対応するキャッシュメモリにアクセスしたデータを書込み（ロードし）、以後の処理においてはキャッシュメモリに書き込んだデータを用いて処理を行うので、データアクセスに係る処理を短縮することが可能となる。このとき、有効カウンタ１４３１，１５３１は、キャッシュメモリに新たに書き込んだ有効なデータの数に相当する分、計数値を増加させる。【０１９３】
本実施の形態４において、タスク１１３に含まれる複数の命令コードの実行中に電源モードが高速動作モードから高速スタンバイモードを経て省電力動作モードに変化したときに、有効カウンタ１４３１，１５３１の計数値がどのように変化するのかを説明する。【０１９４】
まず、電源モードが高速動作モードである場合においては、タスク１１３に含まれる命令コード及び第二ＯＳ１２１は高性能プロセッサ１５１にて実行される。このときタスク１１３に含まれる命令コードの実行に起因して、高性能プロセッサ１５１が内部バス１８０を通してメモリ１１０からデータを読み込んだとする。この場合、メモリ１１０から読み込んだデータは、第二キャッシュメモリ１５２にも書き込まれる。このとき有効カウンタ１５３１の計数値は新たに読み込んだデータの数に相当する分増加する。【０１９５】
次に、電源モードが高速スタンバイモードに切り替わるとする。現在実行している命令コードの実行を高性能プロセッサ１５１が完了した後、高性能プロセッサ１５１への電力の供給を停止する。高性能プロセッサ１５１が本来実行すべきタスク１１３に含まれる複数の命令コードのうち、高性能プロセッサ１５１にて処理を完了させた命令コードに後続する命令コードをハイパバイザ１３０のエミュレート動作により、低消費電力プロセッサ１４１にて実行させる。このとき、低消費電力プロセッサ１４１が内部バス１８０を通してメモリ１１０にデータを書き込んだとする。このとき、メモリ１１０に書き込む前のデータが第二キャッシュメモリ１５２に記憶されている可能性がある。この場合、新たに書き込まれたデータと第二キャッシュメモリ１５２に記憶されたデータとの一貫性は保証されなくなる。【０１９６】
したがって、第一スヌープ制御回路１４３は、第一キャッシュメモリ１４２への書込みを監視し、書込みが行われた場合、第二スヌープ制御回路１５３を介し、第二キャッシュメモリ１５２に対して同一データの無効化又は更新を依頼する。これによって、第二キャッシュメモリ１５２の有効なデータエントリ数は減少するため、第二スヌープ制御回路１５３は、減少させたデータの数に相当する分、有効カウンタ１５３１の値を減少させる。【０１９７】
高性能プロセッサ１５１が必要とする有効なデータエントリ数が一定値以下になっていれば、対応する第二キャッシュメモリ１５２への電力の供給を停止するようにしても、再度電力供給した時のキャッシュミスによる性能劣化が大きくならないことが多い。このため、上述した第一スヌープ制御回路１４３及び第二スヌープ制御回路１５３の動作により、有効カウンタ１５３１の値が一定値以下になった場合、電源モードを省電力動作モードに設定し、第二キャッシュメモリ１５２への電力供給を停止させることができる。【０１９８】
このように構成することにより、第二キャッシュメモリ１５２とメモリ１１０との一貫性を保証する有効なデータの数を有効カウンタ１５３１より得ることが可能となる。第一キャッシュメモリ１４２とメモリ１１０との一貫性を保証する有効なデータの数を有効カウンタ１４３１より得る方法も同様である。【０１９９】
本実施の形態４では、第一スヌープ制御回路１４３が有効カウンタ１４３１の値を定期的にチェックし、第二スヌープ制御回路１５３が有効カウンタ１５３１の値を定期的にチェックする。第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、必要に応じて、制御信号線２６又は２７を介して、該当するキャッシュ電源ブロックへの電力供給を停止させる指令信号を電源制御回路１７０へ伝送する。指令信号を受けた電源制御回路１７０は、電力供給線３２又は３３を介して該当するキャッシュ電源ブロック（この例では第一キャッシュ電源ブロック１４０ｃ又は第二キャッシュ電源ブロック１５０ｃ）への電力の供給を停止する。【０２００】
有効カウンタ１５３１は、第二キャッシュメモリ１５２に格納されたデータとメモリ１１０に格納されたデータとの間に一貫性が保証されたデータの数を保持し、電源制御回路１７０は、高性能プロセッサ１５１へ供給する電力を抑制している間に、有効カウンタ１５３１により保持された一貫性が保証されたデータの数が所定値以下になった場合、第二キャッシュメモリ１５２への電力の供給を抑制する。【０２０１】
また、電源制御回路１７０が高性能プロセッサ１５１へ供給する電力を抑制している間に、低消費電力プロセッサ１４１が、変換した命令コードを実行することにより生成される新たなデータをメモリ１１０へ格納することに起因して、第二キャッシュメモリ１５２に格納されたデータとメモリ１１０に格納されたデータとの間に一貫性が保証されなくなった場合、第二スヌープ制御回路１５３は、第二キャッシュメモリ１５２に格納され、一貫性が保証されなくなったデータを無効にする。【０２０２】
図１５に示したマルチプロセッサシステム５は、キャッシュメモリを含む電源ブロックにのみ電力が供給されている場合でも、当該キャッシュメモリ内の有効なデータが減少した時点で、電力の供給を自動的に停止させることができ、無駄な電力の消費をさらに削減することができる。【０２０３】
図１６及び図１７は、本実施の形態４のスヌープ制御回路（第一スヌープ制御回路１４３及び第二スヌープ制御回路１５３）の動作の一例を説明するためのフローチャートである。図１６及び図１７に示す動作は、プログラムで実現してもよいし、順序回路又は論理回路で構成されるハードウェアで実現してもよい。【０２０４】
スヌープ制御回路が監視するキャッシュメモリを含むキャッシュ電源ブロックに電力の供給が行われると、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、自身の監視するキャッシュメモリの初期化処理を行う（ステップＳ５１）。すなわち、第一キャッシュ電源ブロック１４０ｃに電力の供給が行われると、第一スヌープ制御回路１４３は、自身の監視する第一キャッシュメモリ１４２の初期化処理を行う。また、第二キャッシュ電源ブロック１５０ｃに電力の供給が行われると、第二スヌープ制御回路１５３は、自身の監視する第二キャッシュメモリ１５２の初期化処理を行う。初期化処理では、キャッシュメモリ内の全てのエントリの無効化、及び有効カウンタ１４３１（第二スヌープ制御回路の場合には有効カウンタ１５３１）のゼロクリア（リセット）などが行われる。【０２０５】
この後、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、内部バス１８０を通じたメモリ１１０内のデータへのトランザクション監視、及びキャッシュミスによるキャッシュメモリ内へのデータロードの監視待ち状態に移行する。すなわち、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、他方のプロセッサからメモリ１１０へのデータの書き込みを監視するとともに、キャッシュミスによるキャッシュメモリ内へのデータの書き込みを監視するイベント監視待ち状態に移行する（ステップＳ５２）。【０２０６】
第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、監視対象イベントが発生した場合、発生したイベントが、別のスヌープ制御回路が監視するキャッシュメモリを用いるプロセッサ（以下、別プロセッサと称す）が内部バス１８０を通じてメモリ１１０へ書き込みを行ったか否かを判断する（ステップＳ５３）。すなわち、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、別プロセッサがメモリ１１０にデータを書き込んだか否かを判断する。【０２０７】
例えば、対象とするプロセッサが高性能プロセッサ１５１であったとする。このとき、別プロセッサである低消費電力プロセッサ１４１がメモリ１１０へ書き込みを行った場合、当該トランザクションを監視している、別のスヌープ制御回路である第一スヌープ制御回路１４３は、第二スヌープ制御回路１５３を介し、第二キャッシュメモリ１５２内の同一データの無効化又は更新を依頼する。そのため、第二スヌープ制御回路１５３は、第二キャッシュメモリ１５２内の同一データの無効化又は更新の依頼かどうかを判定することによって、低消費電力プロセッサ１４１がメモリ１１０にデータを書き込んだか否かをチェックすることが可能である。ここで、別プロセッサによるメモリ１１０への書き込みであると判断した場合（ステップＳ５３でＹＥＳ）、ステップＳ５７の処理へ進み、別プロセッサによるメモリ１１０への書き込みでないと判断した場合（ステップＳ５３でＮＯ）、ステップＳ５４の処理へ進む。【０２０８】
ステップＳ５３において、別プロセッサによるメモリ１１０への書込みでない、すなわち、自プロセッサによるキャッシュメモリへのデータロードであると判断した場合、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、自身が監視するキャッシュメモリ内でのキャッシュミスが発生したか否かを判断する（ステップＳ５４）。ここで、キャッシュミスが発生したと判断した場合（ステップＳ５４でＹＥＳ）、ステップＳ５５の処理へ進み、キャッシュミスが発生していないと判断した場合（ステップＳ５４でＮＯ）、ステップＳ５２の処理へ戻る。【０２０９】
ステップＳ５４にて、キャッシュミスが発生したと判断した場合、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、該当するアドレスのキャッシュデータをメモリ１１０から自身が監視するキャッシュメモリ（以下、自キャッシュメモリと称す）へロードする（ステップＳ５５）。【０２１０】
次に、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、自キャッシュメモリへロードして増加した有効エントリ数に相当する数だけ、有効カウンタ１４３１（第二スヌープ制御回路１５３の場合には有効カウンタ１５３１）の値を増加させる（ステップＳ５６）。【０２１１】
これにより、自キャッシュメモリに存在するデータであって、メモリ１１０のデータと一貫性が保証されたデータのエントリ数が有効カウンタ１４３１（第二スヌープ制御回路の場合には有効カウンタ１５３１）内に記憶されることになる。次に、ステップＳ５６の処理の完了後、ステップＳ５２の処理へ戻る。【０２１２】
また、ステップＳ５３において、別プロセッサによるメモリ１１０への書込みであると判断した場合、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、自キャッシュメモリ上データの一貫性保証のため、別プロセッサがメモリ１１０に書き込んだデータが自キャッシュメモリに存在するか否かを判断する（ステップＳ５７）。ここで、自キャッシュメモリに該当するデータが存在すると判断した場合（ステップＳ５７でＹＥＳ）、ステップＳ５８の処理へ進み、自キャッシュメモリに該当するデータが存在しないと判断した場合（ステップＳ５７でＮＯ）、ステップＳ５２の処理へ戻る。【０２１３】
ステップＳ５７において、自キャッシュメモリに該当するデータが存在すると判断した場合、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、該当するデータのキャッシュエントリを無効化又は更新する（ステップＳ５８）。【０２１４】
なお、ステップＳ５８において、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３がデータの無効化又は更新のいずれの処理を実行するかについては、通常、複数のプロセッサ間のデータ共有形態に依存する。例えば、共有データを複数のプロセッサが並列に処理する場合、更新方式を採用したほうがよい。無効化方式を採用すると、相互に無効化を行うスラッシング現象が発生し得る。逆に、一方のプロセッサで動作していたプログラムが他方のプロセッサに移動（マイグレーション）する場合には、無効化方式を採用すべきである。更新方式を採用すると、いつまでも無駄なデータが移動前のキャッシュメモリに残存することになる。本実施の形態４では、低消費電力プロセッサ１４１上でハイパバイザ１３０を介して動作していたタスクが、高性能プロセッサ１５１との間でマイグレーションする可能性を想定している。そのため、処理フローでは、無効化方式を採用するものとして説明している。【０２１５】
つまり、他のプロセッサからメモリ１１０へ書き込んだデータに該当するデータが自キャッシュメモリ上に存在する場合、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、該当するデータに対応するキャッシュエントリを無効化する（ステップＳ５８）。【０２１６】
次に、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、無効化したエントリ数に相当する数だけ、該当する有効カウンタの値を減少させる（ステップＳ５９）。なお、図示していないが、他のプロセッサからのメモリ１１０への書き込みによらず、キャッシュ無効化命令等によりキャッシュエントリが無効化される場合もある。この場合にも、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、無効化したエントリ数に相当する数だけ、該当する有効カウンタの値を減少させる必要がある。【０２１７】
次に、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、有効カウンタの値が予め定められた所定値以下であるか否かを判断する（ステップＳ６０）。ここで、有効カウンタの値が所定値以下であると判断した場合（ステップＳ６０でＹＥＳ）、ステップＳ６１の処理へ進み、有効カウンタの値が所定値より大きいと判断した場合（ステップＳ６０でＮＯ）、ステップＳ５２の処理へ戻る。【０２１８】
ステップＳ６０において、有効カウンタの値が予め定められた所定値以下であると判断した場合、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、自プロセッサへの電力の供給が停止しているか否かを判断する（ステップＳ６１）。ここで、自プロセッサへの電力の供給が停止していると判断した場合（ステップＳ６１でＹＥＳ）、ステップＳ６２の処理へ進み、自プロセッサへの電力の供給が停止していないと判断した場合（ステップＳ６１でＮＯ）、ステップＳ５２の処理へ戻る。【０２１９】
ステップＳ６１において、自プロセッサへの電力の供給が停止していると判断した場合、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、自キャッシュメモリ内のデータをクリーン（パージ）する（ステップＳ６２）。【０２２０】
次に、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、自キャッシュメモリを含むキャッシュ電源ブロックへの電力の供給を停止する指令を電源制御回路１７０へ送る。この指令を受けた電源制御回路１７０は、該当するキャッシュ電源ブロックへの電力の供給を停止する（ステップＳ６３）。【０２２１】
本実施の形態４のマルチプロセッサシステムは上述の構成を採用するので、自キャッシュメモリ内の有効なデータの数が予め定めた数を下回れば、自キャッシュメモリを含むキャッシュ電源ブロックへの電力の供給を自動的に停止させることができ、無駄な電力の消費を更に削減することができる。【０２２２】
また、キャッシュメモリ内の有効なデータエントリ数が所定値以下になって始めて電力の供給を停止するため、電力の供給を停止したキャッシュメモリを利用するプロセッサを再起動した場合でも、キャッシュメモリへの電力の供給を停止させたことに起因する影響を少なくすることが可能となる。【０２２３】
（実施の形態５）
前述した実施の形態１〜４においては、低消費電力プロセッサ１４１に対して、通常のキャッシュメモリを装備することを想定している。一般的には、キャッシュメモリは、２ウェイ〜８ウェイのセットアソシアティブキャッシュ方式を採用することが多い。同時にアドレスを比較する対象が２〜８に限定されるため、比較器の個数に依存する消費電力及び回路規模を抑えることが可能である。【０２２４】
しかしながら、逆に、プロセッサ及びキャッシュメモリのみで動作する状態のほうが、一般に、キャッシュミスが発生してメモリ１１０上のデータにアクセスする状態よりも、電力消費が少ない。【０２２５】
本実施の形態５では、キャッシュミスに起因した消費電力の増加を抑制する構成を提供することを特徴とする。【０２２６】
図１８は、本実施の形態５のマルチプロセッサシステムの構成の一例を示す図である。図１８において図１及び図６に付した符号と同一の構成要素は同一又はこれに相当する構成要素であるため、ここでは、その詳細な説明を省略する。【０２２７】
図１８において、本実施の形態５のマルチプロセッサシステム６は、内部バス１８０、メモリ１１０、第一プロセッサ１４１、第一キャッシュメモリ１４２、フルアソシアティブキャッシュメモリ１４４、第二プロセッサ１５１、第二キャッシュメモリ１５２、電源制御回路１７０及び周辺モジュール群１６０を備える。【０２２８】
図１８において、第一電源ブロック１４０ｄには、低消費電力プロセッサ１４１、第一キャッシュメモリ１４２及び後述するフルアソシアティブキャッシュメモリ１４４が含まれる。【０２２９】
フルアソシアティブキャッシュメモリ１４４は、第一キャッシュメモリ１４２のキャッシュミスを吸収する機能を有する。フルアソシアティブキャッシュメモリ１４４は、第一キャッシュメモリ１４２において、第一キャッシュメモリ１４２内のデータの更新に伴い、利用されなくなったデータを破棄する場合に、利用されなくなったデータを格納する。つまり、第一キャッシュメモリ１４２内のデータと、フルアソシアティブキャッシュメモリ１４４内のデータとは互いに重複することがない。【０２３０】
フルアソシアティブキャッシュメモリ１４４は、第一キャッシュメモリ１４２へ格納されたデータと重複しないデータを格納する。低消費電力プロセッサ１４１によって第一キャッシュメモリ１４２へ格納されたデータが更新され、かつ、低消費電力プロセッサ１４１によって第一キャッシュメモリ１４２から利用されていないデータが破棄される場合、フルアソシアティブキャッシュメモリ１４４は、第一キャッシュメモリ１４２から破棄されたデータを格納する。【０２３１】
フルアソシアティブキャッシュメモリ１４４は、アクセス要求が行われたアドレスと、当該フルアソシアティブキャッシュメモリ１４４内の全てのエントリとを比較する機能を有する。【０２３２】
なお、ここで、全てのエントリと比較する機能は、第一キャッシュメモリ１４２内のエントリ数に相当する数の比較器を備えることにより実現されるものではない。低消費電力プロセッサ１４１は、低速であっても、低消費電力で動作すればよいので、一つの比較器が、順次、第一キャッシュメモリ１４２内のエントリとの一致をチェックするように構成すればよい。フルアソシアティブキャッシュメモリ１４４の詳細については、図１９において説明する。【０２３３】
図１８に示す実施の形態５を採用することにより、直前に破棄したデータに関して、第一キャッシュメモリ１４２でミスしたアクセスをフルアソシアティブキャッシュメモリ１４４で吸収することができ、メモリ１１０へのアクセス数を低減させることが可能である。これにより、省電力動作モード時の消費電力をさらに削減することが可能である。【０２３４】
図１９は、本実施の形態５のフルアソシアティブキャッシュメモリ１４４の具体的な構成の一例を示す図である。図１９は、フルアソシアティブキャッシュメモリ１４４に対して、インデクス値３０１及びタグ値３０２から構成されるアドレス信号が入力され、入力されたアドレス信号に対応するデータ３０３が出力されるまでの回路構成の一例を模式的に示している。【０２３５】
なお、図１９では、フルアソシアティブキャッシュメモリ１４４上にデータが存在しない場合のメモリ１１０とのロード／ストア回路の記載は省略している。フルアソシアティブキャッシュメモリ１４４の本体に対応するデータメモリ３３０は、データを記憶する。データメモリ３３０の中に記憶されるデータは、インデクス値３３１、有効ビット３３２及びデータ本体３３３を有する。【０２３６】
また、図示したデータ以外に、ダーティビット（第一キャッシュメモリ１４２上で書き換えられたかどうかを示すビット、すなわち、最終的には、メモリ１１０上に書き戻さなければならないことを示すビット）、及び共有ビット（他のプロセッサ及び周辺モジュール群などとデータを共有することを示すビット）などを設けることは可能である。【０２３７】
ハッシュテーブル３１０は、タグ値３０２から、キャッシュメモリ内のデータメモリ３３０内のデータのアドレスのヒントを示すための変換テーブルに対応する。ハッシュテーブル３１０は、具体的には、配列で構成される。【０２３８】
図１９に示すフルアソシアティブキャッシュメモリ１４４は、第一に、タグ値３０２をキーとしてハッシュテーブル３１０を参照することによりデータメモリ３３０のアドレス３１１を得る。すなわち、フルアソシアティブキャッシュメモリ１４４は、ハッシュテーブル３１０から、タグ値３０２で示される番号のデータを取り出すことにより、データメモリ３３０のアドレス３１１を得る。しかしながら、セットアソシアティブ方式と異なり、アドレス３１１が必ずしも対応するキャッシュエントリを指すとは限らない。このため、フルアソシアティブキャッシュメモリ１４４は、０を初期値とするカウンタ３２１を備える。フルアソシアティブキャッシュメモリ１４４は、インクリメンタ３２０で当該カウンタ３２１の計数値を増加させながら、カウンタ３２１とアドレス３１１とを加算器３２２で加算した結果が示すエントリをチェックする。フルアソシアティブキャッシュメモリ１４４は、有効なエントリが存在しなくなった時点でカウントアップを終了し、キャッシュミスとみなす。【０２３９】
キャッシュメモリのデータメモリ３３０内の該当するエントリのインデクス値３３１とアドレス信号内のインデクス値３０１とが一致し、かつ、有効ビット３３２が“Ｖａｌｉｄ”を示す場合、キャッシュヒットであると判断される。回路上は、インデクス値の比較を比較器３４０で実施し、有効ビットの判定を論理積回路３５０で実施している。なお、図面の説明上、比較器３４０の出力を論理積回路３５０に入力しているが、有効ビット３３２の判定を行った後に、比較器３４０の動作を行わせるほうが、比較器３４０の無駄な動作を避け、消費電力の削減を行える場合がある。キャッシュヒットであると判断されれば、ゲート３６０は、データメモリ３３０に記憶されている該当データ本体３３３を出力データ値３０３として出力する。【０２４０】
そして、出力データ値３０３を用いて低消費電力プロセッサ１４１による処理が行われたり、第一キャッシュメモリ１４２への出力データ値３０３の書き込みなどが行われる。このとき、第一キャッシュメモリ１４２へ書き込むために用いたフルアソシアティブキャッシュメモリ１４４内のデータをデータメモリ３３０から削除する。このようにすることにより、第一キャッシュメモリ１４２及びフルアソシアティブキャッシュメモリ１４４（具体的には、データメモリ３３０）に重複したデータを格納することを避け、第一キャッシュメモリ１４２及びフルアソシアティブキャッシュメモリ１４４の限られた容量をより有効に活用することが可能となる。【０２４１】
本実施の形態５では、図１９に示す１個の比較器３４０を有するフルアソシアティブキャッシュメモリ１４４を備えたことにより、消費電力を大幅に増大させることなく、キャッシュミスを最低限に抑えることができるキャッシュメモリを搭載することが可能となる。キャッシュミスを減少させることにより、メモリ１１０へのアクセスによる消費電力の増加を抑えることができ、全体として、マルチプロセッサシステム６の消費電力をさらに低下させることができる。【０２４２】
なお、上述した具体的実施形態には以下の構成を有する発明が主に含まれている。【０２４３】
本発明の一局面に係るマルチプロセッサ制御装置は、第一の命令コードを実行する第一のプロセッサと、前記第一の命令コードとは異なる第二の命令コードを実行する第二のプロセッサと、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換する命令変換部と、前記第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方のプロセッサの動作を制御する制御部とを備え、前記命令変換部は、前記制御部によって前記第二のプロセッサの動作が抑制されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換し、前記第一のプロセッサは、前記変換した命令コードを実行する。【０２４４】
本発明の他の局面に係るマルチプロセッサ制御方法は、第一の命令コードを実行する第一のプロセッサと、前記第一の命令コードとは異なる第二の命令コードを実行する第二のプロセッサとを制御するためのマルチプロセッサ制御方法であって、前記第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方のプロセッサの動作を制御する制御ステップと、前記制御ステップにおいて前記第二のプロセッサの動作が抑制されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換する命令変換ステップと、前記命令変換ステップにおいて変換された命令コードを前記第一のプロセッサにて実行する実行ステップとを含む。【０２４５】
本発明の他の局面に係るマルチプロセッサ制御回路は、第一の命令コードを実行する第一のプロセッサと、前記第一の命令コードとは異なる第二の命令コードを実行する第二のプロセッサとを制御するマルチプロセッサ制御回路であって、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換する命令変換回路と、前記第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方のプロセッサの動作を制御する制御回路とを備え、前記命令変換回路は、前記制御回路によって前記第二のプロセッサの動作が抑制されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換し、前記第一のプロセッサは、前記変換した命令コードを実行する。【０２４６】
これらの構成によれば、第二のプロセッサの動作を抑制している間に、第二のプロセッサ上で動作させるべき第二の命令コードが発生したとしても、第二のプロセッサを起動させることなく、第二の命令コードを第一のプロセッサが実行できる命令コードに変換し、変換した命令コードを第一のプロセッサで動作させることが可能となる。【０２４７】
したがって、第二のプロセッサの動作を抑制している間に、第二のプロセッサを一時的に起動させる機会を削減することができ、複数のプロセッサのうちの消費電力の大きいプロセッサを一時的に起動させることに起因する電力の消費を削減することができる。【０２４８】
また、上記のマルチプロセッサ制御装置において、前記制御部は、第二のプロセッサに供給する電力を制御する電力制御部を含み、前記命令変換部は、前記電力制御部によって前記第二のプロセッサへ供給する電力が抑制されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換し、前記第一のプロセッサは、前記変換した命令コードを実行することが好ましい。【０２４９】
この構成によれば、第二のプロセッサへ供給する電力を抑制している間に、第二のプロセッサで動作させるべき第二の命令コードが発生したとしても、第二のプロセッサを起動させることなく、第二の命令コードを第一のプロセッサが実行できる命令コードに変換し、変換した命令コードを第一のプロセッサで動作させることが可能となる。【０２５０】
したがって、第二のプロセッサへ供給する電力を抑制している間に、第二のプロセッサを一時的に起動させる機会を削減することができ、複数のプロセッサのうちの消費電力の大きいプロセッサを一時的に起動させることに起因する電力の消費を削減することができる。【０２５１】
また、上記のマルチプロセッサ制御装置において、前記第一のプロセッサが消費する消費電力は、前記第二のプロセッサが消費する消費電力より低いことが好ましい。【０２５２】
この構成によれば、第二のプロセッサへ供給する電力を抑制している間に、変換した命令コードを第一のプロセッサで実行させるので、第二の命令コードを第二のプロセッサで実行させる場合に比して消費電力を削減することができる。【０２５３】
また、上記のマルチプロセッサ制御装置において、前記電力制御部は、前記第二のプロセッサへ供給する電力を停止させ、前記命令変換部は、前記電力制御部によって前記第二のプロセッサへ供給する電力が停止されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換することが好ましい。【０２５４】
この構成によれば、第二のプロセッサへ供給する電力が停止されるので、消費電力の一層の削減が可能となる。【０２５５】
また、上記のマルチプロセッサ制御装置において、前記電力制御部は、前記第二のプロセッサへ供給する電力を抑制している間に、前記第二のプロセッサに対し割込み処理を要求する通知を受け取ると、前記第一のプロセッサへ前記割込み処理の要求を通知し、前記命令変換部は、前記電力制御部によって通知された前記割込み処理に対応する第二の命令コードを変換することが好ましい。【０２５６】
この構成によれば、第二のプロセッサへ供給する電力が抑制されている間に、第二のプロセッサに対し割込み処理を要求する通知を受け取った場合でも、第二のプロセッサを一時的に起動させる機会を削減することができ、第二のプロセッサで割込み処理を行う場合に比べて消費電力を削減することができる。【０２５７】
また、上記のマルチプロセッサ制御装置において、前記第一の命令コードと前記第二の命令コードとを格納するメモリをさらに備え、前記第一のプロセッサは、前記メモリに格納された前記第一の命令コードを実行し、前記第二のプロセッサは、前記メモリに格納された前記第二の命令コードを実行することが好ましい。【０２５８】
この構成によれば、第二のプロセッサへ供給する電力が抑制されている間に、メモリに格納されている第二の命令コードが、第一のプロセッサが実行できる命令コードに変換されるので、第一のプロセッサは変換された命令コードを実行することができる。【０２５９】
また、上記のマルチプロセッサ制御装置において、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換するための変換テーブルを保持する変換テーブル保持部をさらに備え、前記命令変換部は、前記変換テーブル保持部によって保持されている前記変換テーブルに基づき前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換することが好ましい。【０２６０】
この構成によれば、変換テーブルに基づき第一のプロセッサが実行できる命令コードに第二の命令コードが変換されるので、第二の命令コードを第一のプロセッサが実行できる命令コードに容易に変換することができる。【０２６１】
また、上記のマルチプロセッサ制御装置において、前記第一のプロセッサは、前記第一の命令コード及び前記変換した命令コードのいずれかを実行することにより生成される第一のデータを前記メモリへ格納し、前記第二のプロセッサは、前記第二の命令コードを実行することにより生成される第二のデータを前記メモリへ格納することが好ましい。【０２６２】
この構成によれば、第一のプロセッサによって、第一の命令コード及び変換した命令コードのいずれかを実行することにより生成される第一のデータがメモリへ格納され、第二のプロセッサによって、第二の命令コードを実行することにより生成される第二のデータがメモリへ格納されるので、第一のプロセッサ又は第二のプロセッサの命令コードの実行に伴い生成されるデータを、後続する命令コードの実行に用いることが可能となる。【０２６３】
また、上記のマルチプロセッサ制御装置において、第一のキャッシュメモリと、第二のキャッシュメモリとをさらに備え、前記第一のプロセッサは、前記メモリに格納された前記第一のデータを用いて前記第一の命令コードを実行することにより生成される新たなデータを第一のキャッシュメモリへ格納し、前記メモリに格納された前記第二のデータを用いて前記変換した命令コードを実行することにより生成される新たなデータを第一のキャッシュメモリへ格納し、前記第二のプロセッサは、前記メモリに格納された第二のデータを用いて前記第二の命令コードを実行することにより生成される新たなデータを第二のキャッシュメモリへ格納することが好ましい。【０２６４】
この構成によれば、第一の命令コードを実行することにより生成される新たなデータが第一のキャッシュメモリへ格納され、第二のデータを用いて変換した命令コードを実行することにより生成される新たなデータが第一のキャッシュメモリへ格納され、第二の命令コードを実行することにより生成される新たなデータが第二のキャッシュメモリへ格納される。したがって、第一のプロセッサは第一のキャッシュメモリへアクセスし、第二のプロセッサは第二のキャッシュメモリへアクセスするので、メモリへアクセスする場合に比べて、高速にアクセスすることができる。【０２６５】
また、上記のマルチプロセッサ制御装置において、前記第二のキャッシュメモリに格納されたデータと前記メモリに格納されたデータとの間に一貫性が保証されたデータの数を保持する有効データ数保持部をさらに備え、前記電力制御部は、前記第二のプロセッサへ供給する電力を抑制している間に、前記有効データ数保持部により保持された前記一貫性が保証されたデータの数が所定値以下になった場合、前記第二のキャッシュメモリへの電力の供給を抑制することが好ましい。【０２６６】
この構成によれば、電力供給を抑制した第二のキャッシュメモリを利用する第二のプロセッサを再起動した場合でも、第二のキャッシュメモリへの電力の供給を抑制したことに起因する影響を少なくすることが可能となる。【０２６７】
また、上記のマルチプロセッサ制御装置において、前記電力制御部によって前記第二のプロセッサへ供給する電力が抑制されている間に、前記第一のプロセッサが、前記変換した命令コードを実行することにより生成される新たなデータを前記メモリへ格納することに起因して、前記第二のキャッシュメモリに格納されたデータと前記メモリに格納されたデータとの間に一貫性が保証されなくなった場合、前記第二のプロセッサは、前記第二のキャッシュメモリに格納され、前記一貫性が保証されなくなった前記データを無効にすることが好ましい。【０２６８】
この構成によれば、電力供給を抑制した第二のプロセッサを再起動した場合でも、第二のキャッシュメモリに格納されたデータのうち、メモリに格納されたデータと一貫性が保証されたデータのみ、第二のプロセッサは利用できるようになるので、再起動後の第二のプロセッサによる第二のキャッシュメモリの無効化処理を不要とすることができる。【０２６９】
また、上記のマルチプロセッサ制御装置において、前記第一のキャッシュメモリへ格納されたデータと重複しないデータを格納するフルアソシアティブキャッシュメモリをさらに備え、前記第一のプロセッサによって前記第一のキャッシュメモリへ格納されたデータが更新され、かつ、前記第一のプロセッサによって前記第一のキャッシュメモリから利用されていないデータが破棄される場合、前記フルアソシアティブキャッシュメモリは、前記第一のキャッシュメモリから破棄されたデータを格納することが好ましい。【０２７０】
この構成によれば、直前に破棄したデータに関して、第一のキャッシュメモリによるキャッシュミスが発生してもフルアソシアティブキャッシュメモリから該当するデータを取り出すことが可能となり、第一のキャッシュメモリによるキャッシュミスを補完することが可能となる。すなわち、第一のキャッシュメモリ及びフルアソシアティブキャッシュメモリの容量以内であれば、メモリへアクセスしなくてもよく、消費電力をさらに削減することができる。【０２７１】
また、上記のマルチプロセッサ制御装置において、前記制御部は、前記第二のプロセッサにクロック信号を供給するか否かを制御し、前記命令変換部は、前記制御部によって前記第二のプロセッサへ供給するクロック信号が停止されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換することが好ましい。【０２７２】
この構成によれば、第二のプロセッサに供給するクロック信号を停止している間に、第二のプロセッサで動作させるべき第二の命令コードが発生したとしても、第二のプロセッサを動作させることなく、第二の命令コードを第一のプロセッサが実行できる命令コードに変換し、変換した命令コードを第一のプロセッサで動作させることが可能となる。【０２７３】
したがって、第二のプロセッサに供給するクロック信号を停止している間に、第二のプロセッサを一時的に動作させる機会を削減することができ、複数のプロセッサのうちの消費電力の大きいプロセッサを一時的に動作させることに起因する電力の消費を削減することができる。【０２７４】
また、上記のマルチプロセッサ制御装置において、前記制御部は、前記第二のプロセッサを動作させるか待機させるかを制御し、前記命令変換部は、前記制御部によって前記第二のプロセッサが待機されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換することが好ましい。【０２７５】
この構成によれば、第二のプロセッサを待機させている間に、第二のプロセッサで動作させるべき第二の命令コードが発生したとしても、第二のプロセッサを待機させたままで、第二の命令コードを第一のプロセッサが実行できる命令コードに変換し、変換した命令コードを第一のプロセッサで動作させることが可能となる。【０２７６】
したがって、第二のプロセッサを待機させている間に、第二のプロセッサを一時的に動作させる機会を削減することができ、複数のプロセッサのうちの消費電力の大きいプロセッサを一時的に動作させることに起因する電力の消費を削減することができる。
【産業上の利用可能性】
【０２７７】
本発明にかかるマルチプロセッサ制御装置、マルチプロセッサ制御方法及びマルチプロセッサ制御回路は、例えばユーザの利用状態に応じて第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方の動作を制御する機器、例えば携帯電話機などの携帯機器及び情報家電などの組み込み機器などへの適用が可能である。【０２７８】
より具体的には、携帯電話機の待受け状態、又は情報家電の待機状態では、ユーザからの操作待ち及び電波状態の監視などを実施しつつ、消費電力の小さいプロセッサのみを動作させ、消費電力の大きいプロセッサへの電力を抑制する。一方、ユーザが携帯電話機又は情報家電を操作している状態では、ブラウザ及び動画表示など、高性能なプロセッサの実行を必要とするので、消費電力の小さいプロセッサ及び消費電力の大きいプロセッサを並行して動作させる。本発明にかかるマルチプロセッサ制御装置、マルチプロセッサ制御方法及びマルチプロセッサ制御回路は、このような電力制御を行う携帯電話機及び組込み機器などに好適である。
【図１】
2008152790.tif 000003
【図２】
2008152790.tif 000004
【図３】
2008152790.tif 000005
【図４】
2008152790.tif 000006
【図５】
2008152790.tif 000007
【図６】
2008152790.tif 000008
【図７】
2008152790.tif 000009
【図８】
2008152790.tif 000010
【図９】
2008152790.tif 000011
【図１０】
2008152790.tif 000012
【図１１】
2008152790.tif 000013
【図１２】
2008152790.tif 000014
【図１３】
2008152790.tif 000015
【図１４】
2008152790.tif 000016
【図１５】
2008152790.tif 000017
【図１６】
2008152790.tif 000018
【図１７】
2008152790.tif 000019
【図１８】
2008152790.tif 000020
【図１９】
2008152790.tif 000021
【手続補正書】
【提出日】平成20年12月11日(2008.12.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第一の命令コードを実行する第一のプロセッサと、
前記第一の命令コードとは異なる第二の命令コードを実行する、前記第一のプロセッサとは異なる第二のプロセッサと、
前記第二の命令コードを前記第一のプロセッサが実行できる前記第一の命令コードに変換する命令変換部と、
前記第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方のプロセッサの動作を制御する制御部と、
前記制御部によって前記第二のプロセッサの動作が抑制されている場合、前記第一のプロセッサ上で、前記第一の命令コードから構成された第一のプログラム群と、前記第二の命令コードから構成された第二のプログラム群とを時分割で実行するハイパバイザとを備え、
前記ハイパバイザは、前記第一のプログラム群が実行中であるか、前記第二のプログラム群が実行中であるかを判定し、前記第一のプログラム群が実行中であれば、前記第一のプログラム群の前記第一の命令コードをそのまま前記第一のプロセッサに通知し、前記第二のプログラム群が実行中であれば、前記命令変換部を用いて、前記第二のプログラム群の前記第二の命令コードを前記第一のプロセッサが実行できる前記第一の命令コードに変換して前記第一のプロセッサに通知し、
前記第一のプロセッサは、前記ハイパバイザから通知された前記第一の命令コードを実行することを特徴とするマルチプロセッサ制御装置。
【請求項２】
前記制御部は、第二のプロセッサに供給する電力を制御する電力制御部を含み、
前記命令変換部は、前記電力制御部によって前記第二のプロセッサへ供給する電力が抑制されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換し、
前記第一のプロセッサは、前記変換した命令コードを実行することを特徴とする請求項１記載のマルチプロセッサ制御装置。
【請求項３】
前記第一のプロセッサが消費する消費電力は、前記第二のプロセッサが消費する消費電力より低いことを特徴とする請求項２記載のマルチプロセッサ制御装置。
【請求項４】
前記電力制御部は、前記第二のプロセッサへ供給する電力を停止させ、
前記命令変換部は、前記電力制御部によって前記第二のプロセッサへ供給する電力が停止されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換することを特徴とする請求項２記載のマルチプロセッサ制御装置。
【請求項５】
前記電力制御部は、前記第二のプロセッサへ供給する電力を抑制している間に、前記第二のプロセッサに対し割込み処理を要求する通知を受け取ると、前記第一のプロセッサへ前記割込み処理の要求を通知し、
前記命令変換部は、前記電力制御部によって通知された前記割込み処理に対応する第二の命令コードを変換することを特徴とする請求項２記載のマルチプロセッサ制御装置。
【請求項６】
前記第一の命令コードと前記第二の命令コードとを格納するメモリをさらに備え、
前記第一のプロセッサは、前記メモリに格納された前記第一の命令コードを実行し、
前記第二のプロセッサは、前記メモリに格納された前記第二の命令コードを実行することを特徴とする請求項２記載のマルチプロセッサ制御装置。
【請求項７】
前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換するための変換テーブルを保持する変換テーブル保持部をさらに備え、
前記命令変換部は、前記変換テーブル保持部によって保持されている前記変換テーブルに基づき前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換することを特徴とする請求項６に記載のマルチプロセッサ制御装置。
【請求項８】
前記第一のプロセッサは、前記第一の命令コード及び前記変換した命令コードのいずれかを実行することにより生成される第一のデータを前記メモリへ格納し、
前記第二のプロセッサは、前記第二の命令コードを実行することにより生成される第二のデータを前記メモリへ格納することを特徴とする請求項６記載のマルチプロセッサ制御装置。
【請求項９】
（削除）
【請求項１０】
前記第二のキャッシュメモリに格納されたデータと前記メモリに格納されたデータとの間に一貫性が保証されたデータの数を保持する有効データ数保持部をさらに備え、
前記電力制御部は、前記第二のプロセッサへ供給する電力を抑制している間に、前記有効データ数保持部により保持された前記一貫性が保証されたデータの数が所定値以下になった場合、前記第二のキャッシュメモリへの電力の供給を抑制することを特徴とする請求項８記載のマルチプロセッサ制御装置。
【請求項１１】
（削除）
【請求項１２】
（削除）
【請求項１３】
前記制御部は、前記第二のプロセッサにクロック信号を供給するか否かを制御し、
前記命令変換部は、前記制御部によって前記第二のプロセッサへ供給するクロック信号が停止されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換することを特徴とする請求項１記載のマルチプロセッサ制御装置。
【請求項１４】
前記制御部は、前記第二のプロセッサを動作させるか待機させるかを制御し、
前記命令変換部は、前記制御部によって前記第二のプロセッサが待機されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換することを特徴とする請求項１記載のマルチプロセッサ制御装置。
【請求項１５】
第一の命令コードを実行する第一のプロセッサと、前記第一の命令コードとは異なる第二の命令コードを実行する、前記第一のプロセッサとは異なる第二のプロセッサとを制御するためのマルチプロセッサ制御方法であって、
前記第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方のプロセッサの動作を制御する制御ステップと、
前記制御ステップにおいて前記第二のプロセッサの動作が抑制されている場合、前記第一のプロセッサ上で、前記第一の命令コードから構成された第一のプログラム群と、前記第二の命令コードから構成された第二のプログラム群とを時分割で実行する第一の実行ステップと、
前記第一のプログラム群が実行中であるか、前記第二のプログラム群が実行中であるかを判定し、前記第一のプログラム群が実行中であれば、前記第一のプログラム群の前記第一の命令コードをそのまま前記第一のプロセッサに通知し、前記第二のプログラム群が実行中であれば、前記第二のプログラム群の前記第二の命令コードを前記第一のプロセッサが実行できる前記第一の命令コードに変換して前記第一のプロセッサに通知する通知ステップと、
前記通知ステップにおいて通知された前記第一の命令コードを前記第一のプロセッサにて実行する第二の実行ステップとを含むことを特徴とするマルチプロセッサ制御方法。
【請求項１６】
第一の命令コードを実行する第一のプロセッサと、前記第一の命令コードとは異なる第二の命令コードを実行する、前記第一のプロセッサとは異なる第二のプロセッサとを制御するマルチプロセッサ制御回路であって、
前記第二の命令コードを前記第一のプロセッサが実行できる前記第一の命令コードに変換する命令変換回路と、
前記第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方のプロセッサの動作を制御する制御回路と、
前記制御回路によって前記第二のプロセッサの動作が抑制されている場合、前記第一のプロセッサ上で、前記第一の命令コードから構成された第一のプログラム群と、前記第二の命令コードから構成された第二のプログラム群とを時分割で実行するハイパバイザとを備え、
前記ハイパバイザは、前記第一のプログラム群が実行中であるか、前記第二のプログラム群が実行中であるかを判定し、前記第一のプログラム群が実行中であれば、前記第一のプログラム群の前記第一の命令コードをそのまま前記第一のプロセッサに通知し、前記第二のプログラム群が実行中であれば、前記命令変換回路を用いて、前記第二のプログラム群の前記第二の命令コードを前記第一のプロセッサが実行できる前記第一の命令コードに変換して前記第一のプロセッサに通知し、
前記第一のプロセッサは、前記ハイパバイザから通知された前記第一の命令コードを実行することを特徴とするマルチプロセッサ制御回路。
【手続補正書】
【提出日】平成21年12月7日(2009.12.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第一の命令コードを実行する第一のプロセッサと、
前記第一の命令コードとは異なる第二の命令コードを実行する、前記第一のプロセッサとは異なる第二のプロセッサと、
前記第二の命令コードを前記第一のプロセッサが実行できる前記第一の命令コードに変換する命令変換部と、
前記第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方のプロセッサの動作を制御する制御部と、
前記制御部によって前記第二のプロセッサの動作が抑制されている場合、前記第一のプロセッサ上で、前記第一の命令コードから構成された第一のプログラム群と、前記第二の命令コードから構成された第二のプログラム群とを時分割で実行するハイパバイザとを備え、
前記ハイパバイザは、前記第一のプログラム群が実行中であるか、前記第二のプログラム群が実行中であるかを判定し、前記第一のプログラム群が実行中であれば、前記第一のプログラム群の前記第一の命令コードをそのまま前記第一のプロセッサに通知し、前記第二のプログラム群が実行中であれば、前記命令変換部を用いて、前記第二のプログラム群の前記第二の命令コードを前記第一のプロセッサが実行できる前記第一の命令コードに変換して前記第一のプロセッサに通知し、
前記第一のプロセッサは、前記ハイパバイザから通知された前記第一の命令コードを実行することを特徴とするマルチプロセッサ制御装置。
【請求項２】
前記制御部は、第二のプロセッサに供給する電力を制御する電力制御部を含み、
前記命令変換部は、前記電力制御部によって前記第二のプロセッサへ供給する電力が抑制されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換し、
前記第一のプロセッサは、前記変換した命令コードを実行することを特徴とする請求項１記載のマルチプロセッサ制御装置。
【請求項３】
前記第一のプロセッサが消費する消費電力は、前記第二のプロセッサが消費する消費電力より低いことを特徴とする請求項２記載のマルチプロセッサ制御装置。
【請求項４】
前記電力制御部は、前記第二のプロセッサへ供給する電力を停止させ、
前記命令変換部は、前記電力制御部によって前記第二のプロセッサへ供給する電力が停止されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換することを特徴とする請求項２記載のマルチプロセッサ制御装置。
【請求項５】
前記電力制御部は、前記第二のプロセッサへ供給する電力を抑制している間に、前記第二のプロセッサに対し割込み処理を要求する通知を受け取ると、前記第一のプロセッサへ前記割込み処理の要求を通知し、
前記命令変換部は、前記電力制御部によって通知された前記割込み処理に対応する第二の命令コードを変換することを特徴とする請求項２記載のマルチプロセッサ制御装置。
【請求項６】
前記第一の命令コードと前記第二の命令コードとを格納するメモリをさらに備え、
前記第一のプロセッサは、前記メモリに格納された前記第一の命令コードを実行し、
前記第二のプロセッサは、前記メモリに格納された前記第二の命令コードを実行することを特徴とする請求項２記載のマルチプロセッサ制御装置。
【請求項７】
前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換するための変換テーブルを保持する変換テーブル保持部をさらに備え、
前記命令変換部は、前記変換テーブル保持部によって保持されている前記変換テーブルに基づき前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換することを特徴とする請求項６に記載のマルチプロセッサ制御装置。
【請求項８】
前記第一のプロセッサは、前記第一の命令コード及び前記変換した命令コードのいずれかを実行することにより生成される第一のデータを前記メモリへ格納し、
前記第二のプロセッサは、前記第二の命令コードを実行することにより生成される第二のデータを前記メモリへ格納することを特徴とする請求項６記載のマルチプロセッサ制御装置。
【請求項９】
前記第二のキャッシュメモリに格納されたデータと前記メモリに格納されたデータとの間に一貫性が保証されたデータの数を保持する有効データ数保持部をさらに備え、
前記電力制御部は、前記第二のプロセッサへ供給する電力を抑制している間に、前記有効データ数保持部により保持された前記一貫性が保証されたデータの数が所定値以下になった場合、前記第二のキャッシュメモリへの電力の供給を抑制することを特徴とする請求項８記載のマルチプロセッサ制御装置。
【請求項１０】
前記制御部は、前記第二のプロセッサにクロック信号を供給するか否かを制御し、
前記命令変換部は、前記制御部によって前記第二のプロセッサへ供給するクロック信号が停止されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換することを特徴とする請求項１記載のマルチプロセッサ制御装置。
【請求項１１】
前記制御部は、前記第二のプロセッサを動作させるか待機させるかを制御し、
前記命令変換部は、前記制御部によって前記第二のプロセッサが待機されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換することを特徴とする請求項１記載のマルチプロセッサ制御装置。
【請求項１２】
第一の命令コードを実行する第一のプロセッサと、前記第一の命令コードとは異なる第二の命令コードを実行する、前記第一のプロセッサとは異なる第二のプロセッサとを制御するためのマルチプロセッサ制御方法であって、
前記第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方のプロセッサの動作を制御する制御ステップと、
前記制御ステップにおいて前記第二のプロセッサの動作が抑制されている場合、前記第一のプロセッサ上で、前記第一の命令コードから構成された第一のプログラム群と、前記第二の命令コードから構成された第二のプログラム群とを時分割で実行する第一の実行ステップと、
前記第一のプログラム群が実行中であるか、前記第二のプログラム群が実行中であるかを判定し、前記第一のプログラム群が実行中であれば、前記第一のプログラム群の前記第一の命令コードをそのまま前記第一のプロセッサに通知し、前記第二のプログラム群が実行中であれば、前記第二のプログラム群の前記第二の命令コードを前記第一のプロセッサが実行できる前記第一の命令コードに変換して前記第一のプロセッサに通知する通知ステップと、
前記通知ステップにおいて通知された前記第一の命令コードを前記第一のプロセッサにて実行する第二の実行ステップとを含むことを特徴とするマルチプロセッサ制御方法。
【請求項１３】
第一の命令コードを実行する第一のプロセッサと、前記第一の命令コードとは異なる第二の命令コードを実行する、前記第一のプロセッサとは異なる第二のプロセッサとを制御するマルチプロセッサ制御回路であって、
前記第二の命令コードを前記第一のプロセッサが実行できる前記第一の命令コードに変換する命令変換回路と、
前記第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方のプロセッサの動作を制御する制御回路と、
前記制御回路によって前記第二のプロセッサの動作が抑制されている場合、前記第一のプロセッサ上で、前記第一の命令コードから構成された第一のプログラム群と、前記第二の命令コードから構成された第二のプログラム群とを時分割で実行するハイパバイザとを備え、
前記ハイパバイザは、前記第一のプログラム群が実行中であるか、前記第二のプログラム群が実行中であるかを判定し、前記第一のプログラム群が実行中であれば、前記第一のプログラム群の前記第一の命令コードをそのまま前記第一のプロセッサに通知し、前記第二のプログラム群が実行中であれば、前記命令変換回路を用いて、前記第二のプログラム群の前記第二の命令コードを前記第一のプロセッサが実行できる前記第一の命令コードに変換して前記第一のプロセッサに通知し、
前記第一のプロセッサは、前記ハイパバイザから通知された前記第一の命令コードを実行することを特徴とするマルチプロセッサ制御回路。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ及び内部バスを共有する複数のプロセッサを制御するマルチプロセッサ制御装置、マルチプロセッサ制御方法及びマルチプロセッサ制御回路に関連し、特に、メモリを共有する複数のプロセッサを備えたマルチプロセッサシステム、内部バスを共有する複数のプロセッサコアを有するシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）及びこれらのシステムにおいて、複数のプロセッサへ供給する電力を制御するマルチプロセッサ制御装置、マルチプロセッサ制御方法及びマルチプロセッサ制御回路に関するものである。
【背景技術】
【０００２】
複数のプロセッサがメモリを共有するマルチプロセッサシステムは、各種産業分野で既に数多く応用されている。また、近年のシステムＬＳＩの技術潮流として、複数のプロセッサコアを搭載したマルチコアアーキテクチャが盛んになっている。特に、組込み向けシステムＬＳＩにおいては、コスト及び消費電力などの観点から、超高速プロセッサコアを１個実装するよりも、中規模程度以下のプロセッサコアを複数個搭載したほうが有利な場合が多い。
【０００３】
このような複数のプロセッサ（以下、“プロセッサ”及び“プロセッサコア”を総称して“プロセッサ”と呼ぶ）を搭載するマルチプロセッサシステム及びマルチコアＬＳＩにおける低消費電力化技術として、同一のプロセッサを複数個搭載し、必要とするプログラムの負荷又は発熱量に応じて、動作するプロセッサの個数を定める方法が、特許文献１及び特許文献２などに開示されている。
【０００４】
特許文献１では、読み込んだ命令を解読し、プロセッサの数より並列実行すべき演算処理が少ない場合、動作しないプロセッサの動作クロック信号を停止する。これにより、不所望な電力消費を随時抑制することができると述べている。
【０００５】
一方、特許文献２では、逆に、マルチプロセッサシステム及びマルチコアＬＳＩ内部に設けられた複数のプロセッサの並列利用度を温度に応じて切り替える方法を示している。特許文献２では、定められた発熱量以下になるように、動作させるべきプロセッサ数を定める。なお、発熱量は、消費電力に言い換えることが可能である。これにより、常に定められた消費電力の範囲内で、プログラムを並列に動作させることができる。
【０００６】
さらに、特許文献３には、異なるプロセッサ（メインプロセッサとサブプロセッサ）を用意してプログラムを機能分散的に割り付け、省電力動作時にはサブプロセッサのみで動作させる方法が開示されている。高度なエラー処理など、サブプロセッサに割り付けられていないプログラムを動作させる必要がある場合のみ、メインプロセッサに電力供給を行い、処理を実行させる。これにより、メインプロセッサが動作している時間を短縮し、消費電力を削減することが可能である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００１−９２６６１号公報（第４〜１１頁、図１〜図１２）
【特許文献２】特開２００６−１１５４８号公報（第６〜１３頁、図１〜図１２）
【特許文献３】特開平７−１３７８７号公報（第３〜４頁、図１〜図３）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
携帯電話機及び携帯端末などに代表されるモバイル型組込み計算機システムにおいては、高機能化及び高性能化とともに、低消費電力化が重要な位置を占める。特に、前述したように、組込み向けシステムＬＳＩにおいては、コスト及び消費電力などの観点から、超高速プロセッサコアを１個搭載するよりも、中規模程度以下のプロセッサコアを複数個搭載したマルチコアアーキテクチャが選択されるようになってきている。
【０００９】
特許文献１及び特許文献２では、通常、ＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）又はＳＭＰ（Ｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉ  Ｐｒｏｃｅｓｓｏｒ）と呼ばれるマルチプロセッサシステム又はマルチコアＬＳＩにおいて、同一のプロセッサを複数個用意し、プログラムの並列性に応じて動作させるべきプロセッサ数を決定する。このとき、低性能なプロセッサを多数（１０個以上）用意してもオーバヘッドが大きくなるだけであり、性能の側面から、中規模程度以上のプロセッサを数個（２〜４個）搭載することへの要求が大きい。このため、たとえ実行すべきプログラムの負荷が軽くなり、１つのプロセッサを残して他のプロセッサの電源を停止できたとしても、残ったプロセッサの消費電力が比較的高いために、必要とされる消費電力がある程度大きくなる。
【００１０】
また、ＶＬＩＷ及びＳＭＰのような均質なアーキテクチャでは、どのプログラムがどのプロセッサで動作してもよいため、複数のプロセッサ間で命令セット及びメモリマップなどの相違があってはならず、例えば、動作状態のまま残しておくプロセッサだけを、低消費電力なプロセッサアーキテクチャとすることは難しい。逆に、プロセッサ間での相違がある場合には、個々のプログラムが予めいずれのプロセッサ上で動作するかを決定しておく必要がある。このようなプロセッサが均一でない場合の低消費電力化技術は、特許文献３に記載されている。
【００１１】
特許文献３に記載された技術を用いると、省電力動作時にはサブプロセッサのみを動作させる。このため、当該サブプロセッサに比較的低性能かつ低消費電力なプロセッサアーキテクチャを選択すれば、特許文献１及び特許文献２に記載された技術に比べて省電力動作時の消費電力を削減することができる。主として省電力動作時に実行すべきプログラムをサブプロセッサに、高速に動作させるべきプログラムを高性能なメインプロセッサに割り振ることで、省電力動作時の消費電力を削減できる技術である。
【００１２】
しかしながら、外部イベントなどの影響で、省電力動作時においても、メインプロセッサに割り振っているプログラムが必要となることがある。このとき、高性能なメインプロセッサへの電力供給、安定化待ち、プログラム実行、及び電力遮断といった流れが必要となり、期待するほど低消費電力化を図れないことがある。特に、省電力動作時にも動作させなければならず、かつ、高速動作時には短時間で動作させなければならないプログラムは、高性能なメインプロセッサに搭載せざるを得なく、低消費電力化の課題となる。
【００１３】
例えば、携帯電話機などの時計表示処理を考察する。近年の携帯電話機では、Ｊａｖａ（登録商標）及びブラウザなどの搭載及び進化に伴い、高速な画面描画処理が要求されるようになっている。上述したようなプロセッサが均一でないアーキテクチャを採用すると、一般に、画面描画処理は、高性能なメインプロセッサに割り当てられる。しかしながら、時計表示処理は、携帯電話機の待受け時（何も操作を行っていない状態）でも、定期的に（１秒又は１分おきに）画面描画を行わなければならない。すなわち、待受け状態が長時間に渡る場合でも定期的に高性能なメインプロセッサを立ち上げる必要があり、この分、消費電力削減効果が低下してしまう。
【００１４】
本発明は、上記の問題を解決するためになされたもので、複数のプロセッサのうちの消費電力の大きいプロセッサを一時的に起動させることに起因する電力の消費を削減することができるマルチプロセッサ制御装置、マルチプロセッサ制御方法及びマルチプロセッサ制御回路を提供することを目的とするものである。
【課題を解決するための手段】
【００１５】
本発明の一局面に係るマルチプロセッサ制御装置は、第一の命令コードを実行する第一のプロセッサと、前記第一の命令コードとは異なる第二の命令コードを実行する第二のプロセッサと、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換する命令変換部と、前記第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方のプロセッサの動作を制御する制御部とを備え、前記命令変換部は、前記制御部によって前記第二のプロセッサの動作が抑制されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換し、前記第一のプロセッサは、前記変換した命令コードを実行する。
【００１６】
本発明の他の局面に係るマルチプロセッサ制御方法は、第一の命令コードを実行する第一のプロセッサと、前記第一の命令コードとは異なる第二の命令コードを実行する第二のプロセッサとを制御するためのマルチプロセッサ制御方法であって、前記第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方のプロセッサの動作を制御する制御ステップと、前記制御ステップにおいて前記第二のプロセッサの動作が抑制されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換する命令変換ステップと、前記命令変換ステップにおいて変換された命令コードを前記第一のプロセッサにて実行する実行ステップとを含む。
【００１７】
本発明の他の局面に係るマルチプロセッサ制御回路は、第一の命令コードを実行する第一のプロセッサと、前記第一の命令コードとは異なる第二の命令コードを実行する第二のプロセッサとを制御するマルチプロセッサ制御回路であって、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換する命令変換回路と、前記第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方のプロセッサの動作を制御する制御回路とを備え、前記命令変換回路は、前記制御回路によって前記第二のプロセッサの動作が抑制されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換し、前記第一のプロセッサは、前記変換した命令コードを実行する。
【００１８】
これらの構成によれば、第二のプロセッサの動作を抑制している間に、第二のプロセッサ上で動作させるべき第二の命令コードが発生したとしても、第二のプロセッサを起動させることなく、第二の命令コードを第一のプロセッサが実行できる命令コードに変換し、変換した命令コードを第一のプロセッサで動作させることが可能となる。
【発明の効果】
【００１９】
本発明によれば、第二のプロセッサの動作を抑制している間に、第二のプロセッサを一時的に起動させる機会を削減することができ、複数のプロセッサのうちの消費電力の大きいプロセッサを一時的に起動させることに起因する電力の消費を削減することができる。
【図面の簡単な説明】
【００２０】
【図１】本実施の形態１のマルチプロセッサシステムの具体的な構成の一例を示す図である。
【図２】本実施の形態１におけるマルチプロセッサシステムの省電力動作モード時におけるソフトウェア階層と、ハードウェア階層との関係を説明するための図である。
【図３】本実施の形態１におけるマルチプロセッサシステムの高速動作モード時におけるソフトウェア階層と、ハードウェア階層との関係を説明するための図である。
【図４】ハイパバイザの動作の一例を説明するためのフローチャートである。
【図５】本実施の形態１のハイパバイザが用いる変換テーブルの一例を説明するための図である。
【図６】本実施の形態１のマルチプロセッサシステムの構成の他の例を示す図である。
【図７】本実施の形態２のマルチプロセッサシステムの構成の一例を示す図である。
【図８】電源モードレジスタの取り得る電源モードに対応する動作対象とハイパバイザの動作内容とを示した対応表の一例を示す図である。
【図９】本実施の形態２における電源制御回路の動作の一例を説明するためのフローチャートである。
【図１０】本実施の形態３のマルチプロセッサシステムの構成の一例を示す図である。
【図１１】本実施の形態３で用いる割込み対応表の一例を示す図である。
【図１２】電源モードレジスタ及び割込み対応表に基づく動作内容を示した動作対応表の一例を示す図である。
【図１３】本実施の形態３の電源制御回路の動作の一例を説明するための第１のフローチャートである。
【図１４】本実施の形態３の電源制御回路の動作の一例を説明するための第２のフローチャートである。
【図１５】本実施の形態４のマルチプロセッサシステムの構成の一例を示す図である。
【図１６】本実施の形態４のスヌープ制御回路の動作の一例を説明するための第１のフローチャートである。
【図１７】本実施の形態４のスヌープ制御回路の動作の一例を説明するための第２のフローチャートである。
【図１８】本実施の形態５のマルチプロセッサシステムの構成の一例を示す図である。
【図１９】本実施の形態５のフルアソシアティブキャッシュメモリの具体的な構成の一例を示す図である。
【発明を実施するための形態】
【００２１】
以下添付図面を参照しながら、本発明の実施の形態について説明する。尚、以下の実施の形態は、本発明を具体化した一例であって、本発明の技術的範囲を限定する性格のものではない。
【００２２】
（実施の形態１）
図１は、本実施の形態１のマルチプロセッサ制御装置（以下、マルチプロセッサシステムと称す）の具体的な構成の一例を示す図である。
【００２３】
図１において、本実施の形態のマルチプロセッサシステム１は、内部バス１８０、内部バス１８０に接続するメモリ１１０、メモリ１１０に格納された命令コードを実行する第一プロセッサ１４１、メモリ１１０に格納された命令コードを実行する第二プロセッサ１５１、電源制御回路１７０、及び内部バス１８０に接続する周辺モジュール群１６０を備える。
【００２４】
本実施の形態において、第一プロセッサ１４１は、第二プロセッサ１５１と比して性能が低くかつ電力の消費が少ないプロセッサ（以降、“低消費電力プロセッサ”とも呼ぶ）である。第二プロセッサ１５１は、第一プロセッサ１４１に比して性能が高くかつ電力の消費が多いプロセッサ（以降、“高性能プロセッサ”とも呼ぶ）である。すなわち、低消費電力プロセッサ１４１が消費する消費電力は、高性能プロセッサ１５１が消費する消費電力より低い。
【００２５】
なお、例えば、第一プロセッサ１４１は、主に通信に関する処理を実行するプロセッサであり、第二プロセッサ１５１は、主にユーザインタフェース等のアプリケーションに関する処理を実行するプロセッサである。また、本実施の形態のマルチプロセッサシステム１は、例えば、携帯電話機、デジタルビデオカメラ、デジタルスチールカメラ及びＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）等に搭載される。
【００２６】
電源制御回路１７０は、制御部及び電力制御部の一例に相当し、低消費電力プロセッサ１４１及び高性能プロセッサ１５１のうちの少なくとも一方のプロセッサの動作を制御する。具体的に、電源制御回路１７０は、電源から低消費電力プロセッサ１４１並びに高性能プロセッサ１５１へ供給される電力を制御する。電源制御回路１７０は、低消費電力プロセッサ１４１又は高性能プロセッサ１５１からの要求に応じて、電源（図示せず）から後述する第一電源ブロック１４０及び／又は第二電源ブロック１５０への電力の供給を制御するハードウェアモジュールである。
【００２７】
電源制御回路１７０は、高性能プロセッサ１５１へ供給する電力を抑制する場合、高性能プロセッサ１５１へ供給する電力を停止する。
【００２８】
電源制御回路１７０は、現在の電源からの電力の供給状態を示す情報（電源モード）を格納するためのレジスタである電源モードレジスタ１７１を有する。電源モードには、第一電源ブロック１４０及び第二電源ブロック１５０へ電力を供給する高速動作モード、第一電源ブロック１４０へ電力を供給し、第二電源ブロック１５０への電力の供給を停止する省電力動作モードなどがある。電源モードレジスタ１７１には、高速動作モード及び省電力動作モードといった電源モードに対応する値が格納されている。
【００２９】
ここで、省電力動作モード及び高速動作モードへの移行について説明する。電源制御回路１７０は、低消費電力プロセッサ１４１から制御信号線２０を介して電源制御回路１７０へ送出される信号、例えば省電力動作モードから高速動作モードへの変更を指令する信号、又は高性能プロセッサ１５１から制御信号線２１を介して電源制御回路１７０へ送出される信号、例えば高速動作モードから省電力動作モードへの変更を指令する信号を受け取る。電源制御回路１７０は、低消費電力プロセッサ１４１又は高性能プロセッサ１５１から受け取った信号に基づいて、電源モードレジスタ１７１内に格納される電源モードを変更する。そして、電源制御回路１７０は、変更した電源モードに応じた電力を第一電源ブロック１４０及び／又は第二電源ブロック１５０へ供給する。
【００３０】
ここで、電源ブロックとは、電源制御回路１７０から供給される電力の制御が及ぶ範囲をブロック単位として示すものである。第一電源ブロック１４０は、第一プロセッサ１４１を含み、第二電源ブロック１５０は、第二プロセッサ１５１を含む。図１に示す例では、電源制御回路１７０が電力供給線３０を介して第一電源ブロック１４０へ供給する電力を変えると、低消費電力プロセッサ１４１へ供給される電力が変化し、電力供給線３１を介して第二電源ブロック１５０へ供給する電力を変えると、高性能プロセッサ１５１へ供給される電力が変化する。
【００３１】
なお、ここで、省電力動作モード又は高速動作モードへの動作の移行のための制御方法として、電源電圧のオン・オフを切り替える方法だけとは限らないことを追記しておく。別の実施の形態として、電源制御回路１７０は、省電力動作モード時には、低消費電力プロセッサ１４１のみにクロック信号を供給し、高性能プロセッサ１５１へのクロック信号の供給を停止し、高速動作モード時には、低消費電力プロセッサ１４１及び高性能プロセッサ１５１の両者にクロック信号を供給する。これにより、電源電圧を変化させずに、省電力動作モード又は高速動作モードへの動作の移行が可能である。
【００３２】
さらにまた、別の実施の形態として、電源制御回路１７０は、電源電圧及びクロック信号の供給は変化させずに、省電力動作モード時には、高性能プロセッサ１５１を割込み発生待機状態に移行させ、高速動作モード時には、高性能プロセッサ１５１を通常動作状態に復帰させる。これにより、電源電圧及びクロック信号の供給は変化させずに、省電力動作モード又は高速動作モードへの動作の移行が可能である。
【００３３】
通常、電源電圧のオン・オフを実施する際には、その状態遷移期間として、電源電圧が安定するまで処理実行を待つ必要性がある。同様に、クロック信号の供給・停止を制御する際にも、クロック信号が安定するまで処理実行を待つ必要性がある。一般に、低消費電力化の効果は、電源電圧のオン・オフ、クロック信号の供給・停止、及び割込み発生待機状態への移行・解除の順で高い。逆に、状態遷移期間は、割込み発生待機状態への移行・解除、クロック信号の供給・停止、及び電源電圧のオン・オフの順で短い。これらのトレードオフを考慮して、いずれかの方法を選択する必要がある。
【００３４】
なお、以降、電力供給の制御についての説明においては、電源制御回路１７０は、上記三つの方法のいずれの方法を用いても構わないものとする。
【００３５】
タスク１１１〜１１５は、単一又は複数の命令コードを含む。タスク１１１〜１１２は、低消費電力プロセッサ１４１にて実行できる第一命令コードを含み、タスク１１３〜１１５は、高性能プロセッサ１５１にて実行できる第二命令コードを含む。タスク１１１〜１１２は、第一ＯＳ（オペレーティングシステム：以下、ＯＳと記載する）上で動作し、タスク１１３〜１１５は、第二ＯＳ上で動作する。
【００３６】
低消費電力プロセッサ１４１及び高性能プロセッサ１５１は、例えばメモリ１１０に格納されているアプリケーションプログラムに含まれるタスクを読み出して実行する。タスク１１１〜１１５は、メモリ１１０上のデータ、周辺モジュール群１６０からの入出力データを参照して動作する。図１に示した実施の形態では、タスク１１１〜１１２は、本来、低消費電力プロセッサ１４１上で動作し、タスク１１３〜１１５は、本来、高性能プロセッサ１５１上で動作するようにコンパイルされている。
【００３７】
また、メモリ１１０上の第一ＯＳ１２０はタスク１１１〜１１２の実行状態を管理し、第二ＯＳ１２１はタスク１１３〜１１５の実行状態を管理する。なお、タスク数、ＯＳ数、及びタスクとＯＳとの関係は、図１で示した例に一致しなくてもよい。例えば、低消費電力プロセッサ１４１及び高性能プロセッサ１５１の数に応じて、動作するＯＳの数を変更しても構わないし、プロセッサの数によらず、ＯＳを一つ又は固定数にすることは可能である。
【００３８】
また、低消費電力プロセッサ１４１及び高性能プロセッサ１５１が機能するように電源制御回路１７０から電力が供給されている状態において、第一ＯＳ１２０上で動作するタスク１１１〜１１２に含まれる第一命令コードは低消費電力プロセッサ１４１にて実行され、第二ＯＳ１２１上で動作するタスク１１３〜１１５に含まれる第二命令コードは高性能プロセッサ１５１にて実行される。
【００３９】
ハイパバイザ１３０は、命令変換部の一例に相当し、電源制御回路１７０が第二電源ブロック１５０への電力の供給を停止した場合、つまり高性能プロセッサ１５１が機能しなくなった場合、タスク１１３〜タスク１１５に含まれる第二命令コードを低消費電力プロセッサ１４１が実行できる命令コードへ変換する。
【００４０】
ハイパバイザ１３０は、低消費電力プロセッサ１４１上で動作し、電源制御回路１７０によって高性能プロセッサ１５１における動作が抑制されている場合、本来は高性能プロセッサ１５１により実行されるタスク１１３〜１１５及び第二ＯＳ１２１に含まれる第二命令コードを低消費電力プロセッサ１４１で実行できる命令コードに変換し、変換した命令コードを低消費電力プロセッサ１４１で実行させるようにする。
【００４１】
これにより、低消費電力プロセッサ１４１は高性能プロセッサ１５１の動作を模擬（エミュレート）する。前述したように、第二ＯＳ１２１及びタスク１１３〜１１５は、本来、高性能プロセッサ１５１上で動作する第二命令コードを含むプログラムである。しかしながら、省電力時において高性能プロセッサ１５１への電力の供給を抑制し、高性能プロセッサ１５１の機能が停止している間に、ハイパバイザ１３０によって、高性能プロセッサ１５１が実行すべきタスクに含まれる第二命令コード群が低消費電力プロセッサ１４１において実行できる命令コード群に変換されるので、低消費電力プロセッサ１４１上でも動作させることが可能である。
【００４２】
ここで、命令コードの変換とは、いわゆる命令のオペレーションフィールドのみの変換とは限らない。例えば、低消費電力プロセッサ１４１と高性能プロセッサ１５１との間で、命令セット自体が同一で、周辺モジュール群１６０のアドレスマップのみが異なっている（低消費電力プロセッサ１４１で利用できるアドレスマップを小さくする）場合もある。本実施の形態では、これらの“アドレス変換”も“命令コード変換”の一例とみなすが、以降の実施の形態では、特に区別を行わずに説明を行う。
【００４３】
ハイパバイザ１３０は、命令コードの変換のほか、省電力動作モード時には、第一ＯＳ１２０と第二ＯＳ１２１とを低消費電力プロセッサ１４１で共存（時分割で並行実行）させる役割も有する。これらのハイパバイザ１３０の詳細な動作については、図４にて詳細に説明する。
【００４４】
以上のような構成を採用することにより、高性能プロセッサ１５１を動作させていない省電力動作モードの間において、高性能プロセッサ１５１により実行すべき第二命令コードを含むタスクがメモリ１１０にある場合、ハイパバイザ１３０は、このタスクに含まれる第二命令コードを低消費電力プロセッサ１４１が実行できる命令コードに変換し、低消費電力プロセッサ１４１は、ハイパバイザ１３０によって変換された命令コードを実行する。これにより、省電力動作モードの間において、高性能プロセッサ１５１を一時的に起動させることがなくなり、省電力動作モード時におけるマルチプロセッサシステムの電力消費をより抑えることが可能となる。
【００４５】
例えば、携帯電話機における表示画面に時刻のグラフィックス表示を高性能プロセッサ１５１で動作させているような場合、待受け時などには、ユーザが特に画面を注視しているわけではないため、必ずしも時計表示を高速に行う必要がないといえる。したがって、待ち受け時といった省電力動作モード時には、プログラムは必ずしも高速に動作する必要がない。このため、ハイパバイザ１３０によって、低消費電力プロセッサ１４１が高性能プロセッサ１５１の動作を模擬するように構成する。これにより、時刻表示などの処理をそのまま高性能プロセッサ１５１で動作させるよりも、性能的には大幅に劣化するものの、ハイパバイザ１３０による性能劣化が問題になることがないため、高性能プロセッサ１５１を一時的に動作させる場合に比べて、電力の消費を削減できる。
【００４６】
なお、図１の説明において、低消費電力プロセッサ１４１上で動作する第一ＯＳ１２０、及び高性能プロセッサ１５１上で動作する第二ＯＳ１２１がそれぞれ異なる場合を例に説明をしたが、低消費電力プロセッサ１４１及び高性能プロセッサ１５１上で動作するＯＳは同一のＯＳであってもよい。この場合は、ハイパバイザ１３０が二つのＯＳを共存させる機能を有する必要はなく、本来高性能プロセッサ１５１上で実行される第二命令コードを低消費電力プロセッサ１４１上で実行される命令コードに変換する命令変換部をマルチプロセッサシステム内に備え、この高性能プロセッサ１５１が機能していない間に命令変換部が機能するように構成すればよい。
【００４７】
このように、メモリ１１０は、第一命令コードと第二命令コードとを格納し、低消費電力プロセッサ１４１は、メモリ１１０に格納された第一命令コードを実行し、高性能プロセッサ１５１は、メモリ１１０に格納された第二命令コードを実行する。そして、ハイパバイザ１３０は、電源制御回路１７０によって高性能プロセッサ１５１へ供給する電力が抑制されている場合、第二命令コードを低消費電力プロセッサ１４１が実行できる命令コードに変換する。
【００４８】
なお、ハイパバイザ１３０は、変換した命令コードをメモリ１１０に格納してもよく、低消費電力プロセッサ１４１は、メモリ１１０に格納された変換した命令コードを実行してもよい。また、低消費電力プロセッサ１４１は、第一命令コード及び変換した命令コードのいずれかを実行することにより生成される第一データをメモリ１１０へ格納してもよく、高性能プロセッサ１５１は、第二命令コードを実行することにより生成される第二データをメモリ１１０へ格納してもよい。
【００４９】
また、ハイパバイザ１３０は、電源制御回路１７０によって高性能プロセッサ１５１へ供給するクロック信号が停止されている場合、第二命令コードを低消費電力プロセッサ１４１が実行できる命令コードに変換する。
【００５０】
さらに、ハイパバイザ１３０は、電源制御回路１７０によって高性能プロセッサ１５１が待機されている場合、第二命令コードを低消費電力プロセッサ１４１が実行できる命令コードに変換する。
【００５１】
図２は、本実施の形態１におけるマルチプロセッサシステムの省電力動作モード時におけるソフトウェア階層と、ハードウェア階層との関係を説明するための図であり、図３は本実施の形態１におけるマルチプロセッサシステムの高速動作モード時におけるソフトウェア階層と、ハードウェア階層との関係を説明するための図である。
【００５２】
前述したように、省電力動作モード時には、高性能プロセッサ１５１への電力の供給が停止されるため、図２に示すように高性能プロセッサ１５１は動作しない。このとき、ハイパバイザ１３０を動作させ、低消費電力プロセッサ１４１上で、第二ＯＳ１２１及びタスク１１３〜タスク１１５に含まれるデータ（例えば第二命令コード、第二命令コードが参照するデータ、及び第二命令コードの実行により出力されるデータ等）を低消費電力プロセッサ１４１が処理できるデータへ変換する。このように、変換したデータを低消費電力プロセッサ１４１が処理するために、低消費電力プロセッサ１４１のインタフェースを追加したり、変更したりする必要がなくなる。
【００５３】
図２のソフトウェアアーキテクチャを構成することにより、省電力動作モード時にも、高性能プロセッサ１５１を動作させる機会を極力少なくすることができ、タスク１１３〜タスク１１５に含まれる命令コードを低消費電力プロセッサ１４１が実行できるようになる。
【００５４】
高速動作モード時には、図３に示すように第二ＯＳ１２１上で動作するタスク１１３〜１１５は、高性能プロセッサ１５１上で実行される。すなわち、高性能プロセッサ１５１は、第二ＯＳ１２１上で動作するタスク１１３〜１１５に含まれる第二命令コードを実行する。
【００５５】
一方、低消費電力プロセッサ１４１は、第一ＯＳ１２０上で動作するタスク１１１、１１２に含まれる第一命令コードを実行する。
【００５６】
高速動作モード時において、図３のソフトウェアアーキテクチャを構成することにより、メモリを共有しつつ、複数のプロセッサが並列に動作するマルチプロセッサシステムを提供することができる。低消費電力プロセッサ１４１及び高性能プロセッサ１５１を並列動作させることにより、より高速な処理性能及び応答性能が期待できる。
【００５７】
また、第一ＯＳ１２０が利用するハードウェア資源（図示せず）へのインタフェース部（図示せず）を電源モードに応じて入れ替える方法、又はハイパバイザ１３０が低消費電力プロセッサ１４１と全く同一のインタフェースを第一ＯＳ１２０に提供する方法などを利用すれば、高速動作モード時には、ハイパバイザ１３０を起動する必要はない。このとき、直接、低消費電力プロセッサ１４１上で第一ＯＳ１２０を動作させることができる。
【００５８】
すなわち、図３においては、高速動作モード時においてハイパバイザ１３０を起動させる構成を示しているが、省電力動作モード時又は高速動作モード時に応じて第一ＯＳ１２０が利用するハードウェア資源へのインタフェースを切り替えたり、高速動作モード時において、省電力動作モード時と同一のハードウェア資源へのインタフェースを第一ＯＳ１２０に提供したりするような構成を採用すれば、高速動作モード時において、ハイパバイザ１３０を起動させる必要はない。
【００５９】
図４は、ハイパバイザ１３０の動作の一例を説明するためのフローチャートである。
【００６０】
ここで、図２にて説明したように、ハイパバイザ１３０は、省電力動作モード時には、低消費電力プロセッサ１４１上で二つのＯＳを動作させる役割を有することに注意が必要である。したがって、高性能プロセッサ１５１の動作を模擬するエミュレーションの動作を実現するほか、複数のＯＳを時分割で共存及び実行させる必要がある。
【００６１】
ハイパバイザ１３０は、起動後、第一ＯＳ１２０及び第二ＯＳ１２１のいずれか一方にタスクを動作させるための制御権を与え、制御権を与えられたＯＳは、実行すべきタスクの動作を制御する。このとき、ハイパバイザ１３０は、一旦、処理要求待ち状態に移行し、処理要求を受ければステップＳ２へ進む（ステップＳ１）。
【００６２】
次に、割込み、未定義命令例外又は保護領域アクセス違反などの現在の処理を中断する必要のある例外、あるいは、第一ＯＳ１２０又は第二ＯＳ１２１から関数コールなどの明示的な処理要求を受けると、ハイパバイザ１３０は、その要因を調査する。本実施の形態では、ハイパバイザ１３０は、第一に、例外が発生したか否かをチェックする（ステップＳ２）。例外が発生したと判断した場合（ステップＳ２でＹＥＳ）、ステップＳ８の処理に進み、例外が発生していないと判断した場合（ステップＳ２でＮＯ）、ステップＳ３の処理へ進む。
【００６３】
本実施の形態では、上述したように、複数のＯＳを時分割で実行する必要があるため、例外以外が要因であった場合、つまり、ステップＳ２において、例外が発生していないと判断した場合、ハイパバイザ１３０が受けた処理要求を現状で動作しているＯＳを切替える要求であると見なす。ハイパバイザ１３０は、第一ＯＳ１２０及び第二ＯＳ１２１のうち、次に、いずれのＯＳを優先して実行させるべきかを決定する（ステップＳ３）。
【００６４】
優先して実行させるＯＳを決定する方法については、例えば、特開平５−１９７５７７号公報、米国特許５９９５７４５号公報及び特開２０００−２４２５１２号公報などに示される方法が代表的である。例えば、特開平５−１９７５７７号公報には、予め個々のＯＳに定められたタイムスライスを与え、そのタイムスライスを使い果たしたときに、別のＯＳを実行させる方法が示されている。また、米国特許５９９５７４５号公報には、一方のＯＳを完全に優先させ、当該ＯＳがアイドル状態になったときに、もう一方のＯＳを実行させる方法が示されている。さらに、特開２０００−２４２５１２号公報には、さらに拡張性の高い方法が示されており、個々のＯＳが実行しているタスクの優先順位を比較し、より優先順位の高いタスクを実行しているＯＳを動作させる方法が示されている。
【００６５】
ステップＳ３の処理において用いられる方法として、特開平５−１９７５７７号公報、米国特許５９９５７４５号公報及び特開２０００−２４２５１２号公報のいずれの方法を利用してもよい。また、これら以外の方法を用いることも可能である。本実施の形態のハイパバイザ１３０においては、複数個のＯＳが適切に時分割で実行されていればよく、ＯＳ選択のアルゴリズムの内容は問わない。
【００６６】
次に、ハイパバイザ１３０は、ステップＳ３において選択したＯＳが、現在実行しているＯＳと同一か否かを判断する（ステップＳ４）。同一のＯＳを選択したと判断した場合（ステップＳ４でＮＯ）、ステップＳ７へ進み、異なるＯＳを選択したと判断した場合（ステップＳ４でＹＥＳ）、ステップＳ５へ進む。
【００６７】
異なるＯＳを選択したと判断した場合、ハイパバイザ１３０は、現在実行しているＯＳの動作環境をメモリ１１０上に退避させる（ステップＳ５）。そして、ハイパバイザ１３０は、次に実行すべきＯＳの動作環境をメモリ１１０から復旧させる（ステップＳ６）。ここで、ＯＳの動作環境とは、例えばプロセッサのレジスタ値及び動作モードなどに関する情報である。
【００６８】
その後、ハイパバイザ１３０は、選択したＯＳにタスクを動作させるための制御権を移行させ（ステップＳ７）、ステップＳ１の処理に戻る。
【００６９】
一方、ステップＳ２において、受け取った処理要求の要因が例外発生であると判断した場合、ハイパバイザ１３０は、第一に、発生した例外が、高性能プロセッサ１５１が実行すべき第二命令コードを低消費電力プロセッサ１４１で実行したことに起因する例外であるか否かを判断する（ステップＳ８）。なお、ステップＳ８において判断される例外とは、例えば高性能プロセッサ１５１で実行できる命令コードである一方、低消費電力プロセッサ１４１においては定義がされていない命令コードであるために生じる例外であり、このような例外を未定義命令例外と称し、以下では未定義命令例外について説明する。未定義命令例外でないと判断した場合（ステップＳ８でＮＯ）、ステップＳ９の処理へ進み、未定義命令例外であると判断した場合（ステップＳ８でＹＥＳ）、ステップＳ１０の処理へ進む。
【００７０】
ステップＳ８において、発生した例外が未定義命令例外でないと判断した場合、ハイパバイザ１３０は、現在実行しているＯＳ、あるいは、現在実行しているＯＳ上で動作するタスク群に含まれる命令コードの実行に伴う例外が発生したため、現在実行しているＯＳを切り替えることなく、そのまま継続実行することを決定し（ステップＳ９）、ステップＳ７の処理へ進む。
【００７１】
ステップＳ８において、発生した例外が未定義命令例外であると判断した場合、ハイパバイザ１３０は、未定義命令と判断した命令コードを低消費電力プロセッサ１４１で実行できる命令コードに変換する（ステップＳ１０）。その後、ハイパバイザ１３０は、変換した命令コードを低消費電力プロセッサ１４１で実行させる。低消費電力プロセッサ１４１は、ハイパバイザ１３０によって変換された命令コードを実行する（ステップＳ１１）。その後、ステップＳ１の処理に戻る。
【００７２】
図４で示すようにハイパバイザ１３０を動作させることにより、複数のＯＳを低消費電力プロセッサ１４１上で動作させることができる。同時に、高性能プロセッサ１５１のみに実装されている命令コードを低消費電力プロセッサ１４１が実行したとしても、ハイパバイザ１３０が当該命令コードの実行に起因して生じる未定義命令例外を検出する。その後、ハイパバイザ１３０は、変換テーブルなどを用いて未定義命令例外に対応する命令コードを低消費電力プロセッサ１４１上で解釈実行できる命令コード（群）に変換した後、変換した命令コード（群）を低消費電力プロセッサ１４１で実行させる。このような形で処理を継続実行することにより、省電力時に高性能プロセッサ１５１を一時的に起動させる機会をより少なくすることができるようになり、更なる省電力化が可能となる。
【００７３】
なお、図４を用いて説明した例では、高性能プロセッサ１５１のみに実装されている命令コードを低消費電力プロセッサ１４１に実行させ、発生した例外が未定義命令例外であるか否かを判断する構成について説明したが、これに限定される必要はなく、当該命令コードのアドレスを事前に解析し、ハイパバイザ１３０内に記憶しておくことや、高性能プロセッサ１５１が利用するアドレス空間を低消費電力プロセッサ１４１で参照禁止状態にしておき、参照禁止例外を発生させることで判断することも可能である。
【００７４】
図５は、ハイパバイザ１３０において、未定義命令例外に対応する命令コードを低消費電力プロセッサ１４１上で解釈実行できる命令コード（群）に変換するときに用いる変換テーブルの一例を説明するための図である。
【００７５】
本実施の形態のマルチプロセッサシステムは、図５に示す変換テーブル２００を例えばメモリ１１０に格納している。変換テーブル２００は、図５に示すように高性能プロセッサ（第二プロセッサ）１５１で実行するための第二命令コード２０１、及びこの命令コードに相当する機能を低消費電力プロセッサ１４１で実行させるための第一命令コード（群）２０２をテーブル内に保持している。
【００７６】
メモリ１１０は、第二命令コードを低消費電力プロセッサ１４１が実行できる命令コードに変換するための変換テーブル２００を保持する。なお、メモリ１１０が変換テーブル保持部の一例に相当する。ハイパバイザ１３０は、メモリ１１０によって保持されている変換テーブル２００に基づき第二命令コードを低消費電力プロセッサ１４１が実行できる命令コードに変換する。
【００７７】
例えば、低消費電力プロセッサ１４１が３２ビット演算機能を有しており、高性能プロセッサ１５１が６４ビット演算機能を有している場合、高性能プロセッサ１５１は、６４ビット演算に対応する命令コードを解釈実行できるが、低消費電力プロセッサ１４１は３２ビット演算機能しか有しないため、６４ビット演算に対応する命令コード２０１を直接実行することができず未定義命令例外が発生する。そこで、変換テーブル２００は、６４ビット演算に対応する命令コードを３２ビット演算に置き換える命令コード（群）２０２を保持する。そして、未定義命令例外が発生したとき、ハイパバイザ１３０は、図５に示す変換テーブル２００を参照し、未定義命令例外に対応する６４ビット演算の命令コードを３２ビット演算の命令コードに置き換える。
【００７８】
図５に示した例では、変換テーブル２００は、加算、減算及び乗算に対応する６４ビットの命令コードと、それぞれに対応する３２ビットの命令コード群とを対応付けて保持する。
【００７９】
例えば、６４ビットの加減算については、６４ビットを上位の桁３２ビットと、下位の桁３２ビットとにそれぞれ分けて、桁上がり及び桁下がりを考慮した、３２ビットの加減算を行うように変換する。
【００８０】
同様に、乗算では、６４ビットの乗算を、三つの３２ビットの乗算（結果は６４ビット）、二つの３２ビットの加算、及びワークレジスタの退避復旧処理で代行している。なお、命令変換規則はこのような６４ビット演算機能に限定されるものではない。また、命令コードの変換だけでなく、高性能プロセッサ１５１のみがアクセス可能な周辺モジュール群１６０の動作を、低消費電力プロセッサ１４１で実行するソフトウェア（図示せず）で模擬するなどの応用例も考えられる。
【００８１】
このように、ハイパバイザ１３０が命令コードの変換を行うことにより、高性能プロセッサ１５１でのみ実行が可能な命令コードが検出された場合でも、図５に示す変換テーブル２００を参照し、低消費電力プロセッサ１４１で実行できる命令コード（群）に変換して、低消費電力プロセッサ１４１で動作させることができる。
【００８２】
なお、図５では、ハイパバイザ１３０が変換テーブル２００を参照することにより、命令コードの変換を実現する例を説明したが、これに限定される必要はなく、リスト形式などで実現する方法もある。また、例外が発生した命令コード及び例外コードやそれらの識別子をオフセットとしたサブルーチンコールの集合体などで実現してもよい。
【００８３】
なお、低消費電力プロセッサ１４１で実行する場合、命令変換のオーバヘッド及び命令数の増加に伴い、高性能プロセッサ１５１で実行する場合に比べて、性能は大きく劣化する。しかしながら、前述した携帯電話機における、待受け状態（省電力動作モード時）における主画面の描画処理のように、利用者が画面を注視していない場合が殆どであるような状況下では、省電力動作モード時において、本来高性能プロセッサ１５１に行わせるべき命令コードを低消費電力プロセッサ１４１に行わせたことに起因する性能劣化は許容できるものみなせる。
【００８４】
前述したように、本実施の形態で説明した個々のハードウェア部品が一つのＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）内に共存するか、あるいは、別々のＬＳＩ内に分割して配置されるかについての限定はない。図１に示すハイパバイザ１３０及び電源制御回路１７０を１つの集積回路で構成してもよく、また、図１に示す第一プロセッサ１４１、第二プロセッサ１５１、ハイパバイザ１３０及び電源制御回路１７０を１つの集積回路で構成してもよい。
【００８５】
図６は、本実施の形態１におけるマルチプロセッサシステムの構成の他の例を示す図である。
【００８６】
図６において、図１に示したものと同一の符号を付したものは、同一又はこれに相当する構成要素であるため、ここではその詳細な説明を省略する。
【００８７】
図６において、マルチプロセッサシステム２は、メモリ１１０と、システムＬＳＩに相当するマルチコアＬＳＩチップ１９０とを備える。
【００８８】
マルチコアＬＳＩチップ１９０は、内部バス１８０、低消費電力プロセッサ１４１、高性能プロセッサ１５１、周辺モジュール群１６０、電源制御回路１７０、低消費電力プロセッサ１４１が利用する第一キャッシュメモリ１４２、高性能プロセッサ１５１が利用する第二キャッシュメモリ１５２、制御信号線２０，２１、電力供給線３０，３１及び内蔵メモリ１９１を含む。電源制御回路１７０は、電源モードレジスタ１７１を備える。
【００８９】
第一電源ブロック１４０には、低消費電力プロセッサ１４１に加え、低消費電力プロセッサ１４１が利用する第一キャッシュメモリ１４２が含まれる。第二電源ブロック１５０には、高性能プロセッサ１５１に加え、高性能プロセッサ１５１が利用する第二キャッシュメモリ１５２が含まれる。
【００９０】
マルチコアＬＳＩチップ１９０は、更に、内蔵メモリ１９１を搭載する。内蔵メモリ１９１には、ハイパバイザ１３０の動作を実現するプログラムが格納されている。これにより、メモリ１１０内にハイパバイザ１３０の動作を実現するプログラムを格納する場合に比して、エミュレーション動作を高速に行うことを可能としている。通常、ハイパバイザ１３０は、複数のＯＳの共存及び切替えや、高性能プロセッサ１５１の命令コードのエミュレーションなど、限定的かつ固定化した処理のみを行う。したがって、メモリ１１０に比べて小容量の内蔵メモリ１９１を実装することで、ハイパバイザ１３０を動作させることができる。また、一旦、システムＬＳＩのアーキテクチャが決定すると、ハイパバイザ１３０の動作を実現するプログラムの変更が行われることはまれであるため、ハイパバイザ１３０のプログラムを、マスクＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）又はＦＬＡＳＨメモリなどに格納することも可能である。
【００９１】
以上のような構成により、マルチコアＬＳＩチップ１９０の内部での消費電力をできる限り減少させることができる。さらに、電源制御回路１７０を含んだ形でＬＳＩが構成されているため、図１に示したシステムＬＳＩ間の配線は不要であり、マルチコアＬＳＩチップ１９０とメモリ１１０とを接続するだけで、低消費電力システムを構築することが可能である。
【００９２】
図６に示すマルチプロセッサシステム２は上述のような構成を採用するため、省電力動作モード時には、比較的低性能かつ低消費電力で動作する低消費電力プロセッサ１４１のみでプログラムを実行することができ、省電力動作モード時の消費電力をできる限り削減することが可能である。特に、組込み計算機システムにおける適用効果は高い。
【００９３】
なお、上記実施の形態においては、低消費電力プロセッサ１４１、高性能プロセッサ１５１及び周辺モジュール群１６０などがそれぞれ一つしか存在しない例を説明したが、プロセッサの数は２個でなければ本実施の形態の効果が得られないというわけではない。プロセッサの数が３個以上であっても、省電力時において、電力の供給が停止されたプロセッサが本来行うべき命令コードを、省電力時において動作可能な他のプロセッサが解釈して実行できる命令コードに変換し、変換した命令コードを他のプロセッサが実行するように構成すれば、３個以上のプロセッサを有するマルチコアシステムであっても適用が可能となる。
【００９４】
（実施の形態２）
図７は、本実施の形態２のマルチプロセッサシステムの構成の一例を示す図である。図７において、図１及び図６と同一の符号を付したものは同一又はこれに相当するものであるため、ここではその詳細な説明を省略する。
【００９５】
図７において、本実施の形態２のマルチプロセッサシステム３は、内部バス１８０、メモリ１１０、第一プロセッサ１４１、第一キャッシュメモリ１４２、第二プロセッサ１５１、第二キャッシュメモリ１５２、電源制御回路１７０及び周辺モジュール群１６０を備える。
【００９６】
本実施の形態のマルチプロセッサシステム３は、電源制御回路１７０が、低消費電力プロセッサ１４１、高性能プロセッサ１５１、第一キャッシュメモリ１４２及び第二キャッシュメモリ１５２のそれぞれに供給する電力を制御できるように構成したことを特徴とする。
【００９７】
図７に示す実施の形態２では、実施の形態１と比べて、電源ブロックの切り分けを詳細化している。
【００９８】
図７に示すマルチプロセッサシステム３では、新たにプロセッサ電源ブロック及びキャッシュ電源ブロックを導入する。第一プロセッサ電源ブロック１４０ａは、低消費電力プロセッサ１４１を含む電源ブロックであり、第二プロセッサ電源ブロック１５０ａは、高性能プロセッサ１５１を含む電源ブロックである。電源制御回路１７０は、これらのプロセッサへの電力供給を独立して操作することができる。一方、第一キャッシュ電源ブロック１４０ｂは、第一キャッシュメモリ１４２を含む電源ブロックであり、第二キャッシュ電源ブロック１５０ｂは、第二キャッシュメモリ１５２を含む電源ブロックである。第一プロセッサ電源ブロック１４０ａ、第二プロセッサ電源ブロック１５０ａ、第一キャッシュ電源ブロック１４０ｂ及び第二キャッシュ電源ブロック１５０ｂは、それぞれ、電力供給線３０〜３３を介して電力の供給が行われる。
【００９９】
プロセッサの電源ブロックとキャッシュメモリの電源ブロックとを各々独立させることによって、例えば、プロセッサへの電力の供給を遮断した状態で、キャッシュメモリに電力を供給させることができる。キャッシュメモリへの電力の供給遮断をプロセッサへの電力の供給遮断と同時に行い、再度、キャッシュメモリ及びプロセッサへの電力の供給を行ったときには、キャッシュメモリ内に格納したデータ（動作環境に関する情報、命令コード、及び命令コードが参照するデータなど）の更新、及びプロセッサによるキャッシュメモリにロードした命令コードの実行といった処理を行う必要がある。プロセッサへの電力の供給を遮断しつつ、遮断したプロセッサが利用するキャッシュメモリへ電力を供給させることが可能であれば、このような電源モードの切替えに伴うキャッシュメモリ内のデータ更新に起因する時間の遅れを解消することが可能である。
【０１００】
なお、本実施の形態では、プロセッサの電源ブロックとキャッシュメモリの電源ブロックとを各々独立させることによって、より詳細な電力制御が可能となるため、省電力動作モード及び高速動作モードの他に、シャットダウンモード、スタンバイモード及び高速スタンバイモードなどの動作状態（電源モード）を設けた。電源制御回路１７０が行う制御は、前述と同様に、電力供給のオン・オフ、クロック信号の供給・停止、又は割込み待ち状態への遷移などが可能である。本実施の形態では、特に、電力供給のオン・オフと、クロック信号の供給・停止との二種類を連携して制御するとして、以降、説明を行う。
【０１０１】
図８は、電源モードレジスタ１７１の取り得る電源モードに対応する動作対象とハイパバイザ１３０の動作内容とを示した対応表の一例を示す図である。
【０１０２】
電源制御回路１７０は、複数の電源モードと、各電源モードにおける電力供給対象、クロック信号供給対象及びハイパバイザの動作内容とを対応付けた対応表２１０を予め記憶している。電源制御回路１７０は、例えば、対応表２１０に基づいて、各電源ブロックに対する電源からの電力の供給、各電源ブロックに対するクロック信号の供給、及びハイパバイザ１３０の実行の可否を判断する。
【０１０３】
図８において、対応表２１０は、電源モード２１１と、電源モード２１１に対応する電源電力を供給する対象を示す電力供給対象２１２と、電源モード２１１に対応するクロック信号を供給する対象を示すクロック信号供給対象２１３と、電源モード２１１に対応するハイパバイザ１３０のエミュレーション機能を有効にするか否かに関する情報２１４とを含む。
【０１０４】
電源モード２１１がシャットダウンモードである場合、マルチプロセッサシステム３自体は動作していない。シャットダウンモードのとき、低消費電力プロセッサ１４１、高性能プロセッサ１５１、第一キャッシュメモリ１４２及び第二キャッシュメモリ１５２のいずれにも電力の供給及びクロック信号の供給は行われない。いずれのプロセッサも動作していないため、ハイパバイザ１３０自体も動作しない。
【０１０５】
電源モード２１１がスタンバイモードである場合、システムの高速復旧を目的として、第一キャッシュメモリ１４２に記憶されたデータが保持される。スタンバイモードでは、電源制御回路１７０は、第一キャッシュメモリ１４２（第一キャッシュ電源ブロック１４０ｂ）にのみ電力を供給し、第一キャッシュメモリ１４２に記憶されたデータが保持される。しかしながら、電源制御回路１７０は、それ以外の電源ブロックに対して電力供給を行わないため、第一キャッシュメモリ１４２に記憶された情報に基づく処理は行われない。したがって、電源制御回路１７０は、クロック信号の供給も行わなくてよい。また、スタンバイモードにおいても、低消費電力プロセッサ１４１及び高性能プロセッサ１５１は動作しないため、ハイパバイザ１３０は動作しない。
【０１０６】
電源モード２１１が省電力動作モードである場合、前述した省電力動作モードを意味する。省電力動作モードでは、低消費電力プロセッサ１４１を利用して、マルチプロセッサシステム３に存在する全てのタスクを動作させる。このため、電源制御回路１７０は、低消費電力プロセッサ１４１及び第一キャッシュメモリ１４２に対し、電力を供給するとともにクロック信号を供給する。なお、電源制御回路１７０は、第二プロセッサ１５１及び第二キャッシュメモリ１５２に電力及びクロック信号を供給しない。さらに、同時に、ハイパバイザ１３０を動作させ、本来高性能プロセッサ１５１上で動作するタスク及び第二ＯＳ１２１が低消費電力プロセッサ１４１上でも動作するように、高性能プロセッサ１５１に用いられる第二命令コードを変換させる。
【０１０７】
電源モード２１１が高速スタンバイモードである場合、高性能プロセッサ１５１の高速復旧を目的として、第二キャッシュメモリ１５２に記憶されたデータが保持される。高速スタンバイモードでは、低消費電力プロセッサ１４１、第一キャッシュメモリ１４２及びハイパバイザ１３０の動作内容が省電力動作モードと同一である。また、高速スタンバイモードでは、電源制御回路１７０は、第二キャッシュメモリ１５２に電力を供給し、第二キャッシュメモリ１５２に記憶されたデータが保持される。なお、電源制御回路１７０は、第二プロセッサ１５１に電力を供給せず、第二プロセッサ１５１及び第二キャッシュメモリ１５２にクロック信号を供給しない。これにより、高性能プロセッサ１５１は、起動すると、直ちに、第二キャッシュメモリ１５２に記憶した情報を用いて処理を行うことができる。
【０１０８】
なお、高速スタンバイモードでは、データを保持するのみであるため、第二キャッシュメモリ１５２には、クロック信号の供給は行わなくてよい。ただし、後述するスヌープ制御を行う場合には、第二キャッシュメモリ１５２に対して無効化処理を行わせなければならず、クロック信号の供給を行う必要があることに注意すべきである。
【０１０９】
最後に、電源モード２１１が高速動作モードである場合、前述した高速動作モードを意味している。高速動作モードでは、電源制御回路１７０は、低消費電力プロセッサ１４１、高性能プロセッサ１５１、第一キャッシュメモリ１４２及び第二キャッシュメモリ１５２の全てに対して電力を供給するとともにクロック信号を供給する。本来、高性能プロセッサ１５１上で動作するタスク及び第二ＯＳ１２１は、そのまま高性能プロセッサ１５１で実行されるため、低消費電力プロセッサ１４１で第二命令コードを変換する必要はない。したがって、ハイパバイザ１３０を動作させる必要はない。
【０１１０】
以上のように、電源制御回路１７０が電源モードレジスタ１７１の個々の値（電源モード）に応じて電力の供給動作、クロック信号の供給動作、及びハイパバイザ１３０の動作を変更させることで、きめ細かな省電力化が可能である。また、省電力動作モード及び高速スタンバイモードにおいて、ハイパバイザ１３０にエミュレーション動作を行わせることで、本来高性能プロセッサ１５１で動作させるべきタスク及びＯＳを低消費電力プロセッサ１４１で動作させることができる。なお、エミュレーション動作とは、高性能プロセッサ１５１で用いられる第二命令コードを低消費電力プロセッサ１４１で実行できる命令コードに変換し、変換した命令コードを低消費電力プロセッサ１４１で実行させる動作を表す。
【０１１１】
これにより、省電力時における高性能プロセッサ１５１への電力の供給をできる限り抑えることが可能であり、さらなる省電力化を行うことができる。同時に、スタンバイモード及び高速スタンバイモードを設けることで、低消費電力プロセッサ１４１又は高性能プロセッサ１５１への電力の供給を再開した時点でのキャッシュミスによる遅れをより低減することが可能となり、更なる高速化及び応答時間短縮などの効果もある。
【０１１２】
図９は、本実施の形態２における電源制御回路１７０の動作の一例を説明するためのフローチャートである。
【０１１３】
なお、本実施の形態では、電源制御回路１７０内部に電源制御用マイクロプロセッサが存在するものと仮定し、処理フローでの実現例を記載しているが、これを論理回路又は順序回路などのハードウェアで実現することも可能である。
【０１１４】
まず、電源制御回路１７０は、電源モードレジスタ１７１の設定値（この例では電源モード）の変更を監視し、設定値の変更を検出すればステップＳ２２の処理へ進む（ステップＳ２１）。
【０１１５】
電源モードレジスタ１７１の設定値の変更を検出した場合、電源制御回路１７０は、変更された設定値（電源モード）に対応する制御対象を図８に示した対応表２１０を用いて特定し、特定した制御対象（電源ブロック）に電力を供給する（ステップＳ２２）。
【０１１６】
この後、新たに電力を供給した電源ブロックに含まれるハードウェア（プロセッサ及びキャッシュメモリなど）の動作が安定すれば、電源制御回路１７０は、同じく対応表２１０に記憶されている特定した電源ブロックにクロック信号を供給する（ステップＳ２３）。
【０１１７】
なお、通常、電力の供給及びクロック信号の供給の安定待ち時間は、ハードウェア固有の定数である。したがって、動作を安定させるには、クロック・ウォッチドッグタイマ（図示せず）などを利用して、割込み待ち又はポーリングで定められた時間分だけ経過するのを待つだけでよい。
【０１１８】
その後、新たにクロック信号を供給した電源ブロックに含まれるハードウェア（プロセッサ及びキャッシュメモリなど）の動作が安定すれば、電源制御回路１７０は、対応表２１０に従い、変更前の電源モードと変更後の電源モードとにおけるハイパバイザ１３０のエミュレーション動作に変更があるか否かを判断する（ステップＳ２４）。変更があると判断した場合（ステップＳ２４でＹＥＳ）、ステップＳ２５の処理へ進み、変更が無いと判断した場合（ステップＳ２４でＮＯ）、ステップＳ２１の処理へ戻る。
【０１１９】
図８に示すように対応表２１０は、電源モード２１１毎に、ハイパバイザ１３０のエミュレーション機能を有効にするか否かに関する情報２１４を保持している。例えば、“シャットダウンモード”又は“スタンバイモード”に対応するハイパバイザ１３０の情報２１４は“動作せず”となっている。これは、電源モードがシャットダウンモード又はスタンバイモードである場合にはハイパバイザ１３０は動作しないことを意味する。この場合、当然のことながらハイパバイザ１３０のエミュレーション動作は有効でない（つまり無効である）。
【０１２０】
また、“省電力動作モード”又は“高速スタンバイモード”に対応するハイパバイザ１３０の情報２１４は“エミュレーション動作”となっている。これは、電源モードが省電力動作モード又は高速スタンバイモードである場合には、ハイパバイザ１３０を動作させるとともに、ハイパバイザ１３０のエミュレーション機能を有効にすることを意味する。
【０１２１】
また、“高速動作モード”に対応するハイパバイザ１３０の情報２１４は“動作せず、あるいは、動作（ただし、エミュレーションは行わず）”となっている。これは、電源モードが“高速動作モード”である場合において、ハイパバイザ１３０を動作させる可能性があるものの、ハイパバイザ１３０のエミュレーション機能を無効にすることを意味する。
【０１２２】
ステップＳ２４において、エミュレーション動作に変更があるか否かを判断するというのは、変更前の電源モードと変更後の電源モードとにおけるハイパバイザ１３０のエミュレーション動作が無効から有効又は有効から無効に変更されたか否かを判断することである。
【０１２３】
例えば、電源モードが高速動作モードから省電力動作モードへ変更される場合、エミュレーション機能が無効から有効に変更されるので、電源制御回路１７０は、エミュレーション動作に変更があると判断する。一方、電源モードが高速スタンバイモードから省電力動作モードへ変更される場合、エミュレーション機能に変更はないため、電源制御回路１７０は、エミュレーション動作に変更は無いと判断する。
【０１２４】
ステップＳ２４において、エミュレーション動作に変更があると判断した場合、電源制御回路１７０は、エミュレーション動作を有効又は無効にするための通知を低消費電力プロセッサ１４１に発行する（ステップＳ２５）。エミュレーション動作を有効にするための通知を受けた場合、低消費電力プロセッサ１４１は、メモリ１１０内に格納されたハイパバイザ１３０内のエミュレーション動作を機能させるためのプログラムを実行する。また、エミュレーション動作を無効にするための通知を受けた場合、低消費電力プロセッサ１４１は、エミュレーション動作を機能させるためのプログラムの実行を停止する。
【０１２５】
ステップＳ２５における低消費電力プロセッサ１４１への通知の具体的手法であるが、例えば割込みによる通知が考えられる。また、低消費電力プロセッサ１４１へ割込みで通知する以外にも、ハイパバイザ１３０が電源モードレジスタ１７１の値をポーリングして確認する方法を採用してもよい。
【０１２６】
ステップＳ２５の処理を終了した後、ステップＳ２１の処理へ戻る。
【０１２７】
図９に示した処理フローに基づいて電源制御回路１７０を動作させることで、個々の電源モードレジスタ１７１の値に応じて電力の供給、クロック信号の供給及びエミュレーション動作の変更を行うことが可能となる。
【０１２８】
なお、本実施の形態において、低消費電力プロセッサ１４１は、第一命令コード及び変換した命令コードのいずれかを実行することにより生成される第一データをメモリ１１０へ格納してもよく、高性能プロセッサ１５１は、第二命令コードを実行することにより生成される第二データをメモリ１１０へ格納してもよい。
【０１２９】
また、低消費電力プロセッサ１４１は、メモリ１１０に格納された第一データを用いて第一命令コードを実行することにより生成される新たなデータを第一キャッシュメモリ１４２へ格納し、メモリ１１０に格納された第二データを用いて変換した命令コードを実行することにより生成される新たなデータを第一キャッシュメモリ１４２へ格納してもよく、高性能プロセッサ１５１は、メモリ１１０に格納された第二データを用いて第二命令コードを実行することにより生成される新たなデータを第二キャッシュメモリ１５２へ格納してもよい。
【０１３０】
さらに、低消費電力プロセッサ１４１は、メモリ１１０に格納された第一データを用いて第一命令コードを実行することにより生成される新たなデータをメモリ１１０及び第一キャッシュメモリ１４２へ格納し、メモリ１１０に格納された第二データを用いて変換した命令コードを実行することにより生成される新たなデータをメモリ１１０及び第一キャッシュメモリ１４２へ格納してもよく、高性能プロセッサ１５１は、メモリ１１０に格納された第二データを用いて第二命令コードを実行することにより生成される新たなデータをメモリ１１０及び第二キャッシュメモリ１５２へ格納してもよい。
【０１３１】
（実施の形態３）
本発明の前述した実施の形態においては、プロセッサを中心とした低消費電力化技術を説明した。しかしながら、一般に、低消費電力化技術は、メモリ及び周辺モジュールを含めて実現する必要がある。例えば、通常のマルチプロセッサシステム及びマルチコアＬＳＩにおいて、周辺モジュール群は、通常、ハードウェア的に又は初期化時に、個々のプロセッサに１対１で対応付けられるか、もしくは、処理要求を行ったプロセッサに対して割込みなどの結果通知を行う。
【０１３２】
しかしながら、前述した実施の形態において、割込みなどを行うようなプロセッサと周辺モジュール群との関係があると、割込みなどのタイミングで意図しないプロセッサが動作することがあり、所望の低消費電力化を実現することができない場合がある。
【０１３３】
前述したように、従来のマルチプロセッサシステムでは、個々の割込みは、当該割込みの種類に応じて個別のプロセッサに割り当てられていることが多い。しかしながら、本実施の形態３のマルチプロセッサシステムは、周辺モジュール群からの割込み信号を受け取ると、電源モードに応じて、いずれかのプロセッサに割込みを通知するための構成を設けている。
【０１３４】
図１０は、本実施の形態３のマルチプロセッサシステムの構成の一例を示す図である。図１０において図１又は図６に付した符号と同一の構成要素は同一又はこれに相当する構成要素であるため、ここでは、その詳細な説明を省略する。
【０１３５】
図１０において、本実施の形態３のマルチプロセッサシステム４は、内部バス１８０、メモリ１１０、第一プロセッサ１４１、第一キャッシュメモリ１４２、第二プロセッサ１５１、第二キャッシュメモリ１５２、電源制御回路１７０ａ及び周辺モジュール群１６０ａを備える。
【０１３６】
なお、図１０において、周辺モジュール群１６０ａが割込みコントローラ１６１を含む構成を示しているが、割込みコントローラ１６１は、周辺モジュール群１６０ａとは別個に独立とした構成としても良い。
【０１３７】
割込みコントローラ１６１は、周辺モジュール群１６０ａ内において、ユーザ又は外部環境からのイベント発生、あるいは、プロセッサから要求された処理が完了した時点で、プロセッサに対して割込みを発生させ、必要な処理を行わせる。
【０１３８】
信号線２５は、周辺モジュール群１６０ａにて発生したイベントを含む割込み信号を伝送する。
【０１３９】
電源制御回路１７０ａは、電源モードレジスタ１７１に加え、割込み時間制御回路１７２、割込み対応表１７３及びデマルチプレクサ１７４を含む。
【０１４０】
デマルチプレクサ１７４は、割込み信号線２５を介して受け取った割込み信号を低消費電力プロセッサ１４１又は高性能プロセッサ１５１のいずれに通知するかを決定するための回路である。デマルチプレクサ１７４は、低消費電力プロセッサ１４１と信号線２２を介して接続されており、高性能プロセッサ１５１と信号線２３を介して接続されている。デマルチプレクサ１７４は、低消費電力プロセッサ１４１に割込み信号を通知する場合には信号線２２を介して割込み信号を伝送し、高性能プロセッサ１５１に割込み信号を通知する場合には、信号線２３を介して割込み信号を伝送する。
【０１４１】
割込み対応表１７３は、個々の割込み要因に応じて、割込み通知対象プロセッサを特定するためのテーブルデータである。割込み対応表１７３内にはデフォルトの割込み通知対象プロセッサが設定されるが、デマルチプレクサ１７４は、当該テーブルデータのみを利用するのではなく、電源モードレジスタ１７１に格納された電源モードの値も参照して割込み対象プロセッサを特定する。具体的には、デマルチプレクサ１７４は、省電力動作モード時には低消費電力プロセッサ１４１に割込みを通知し、高速動作モード時には割込み対応表１７３を用いて選択したプロセッサに割込みを通知する方法を基本とする。
【０１４２】
なお、電源モードの種類としては図８に示したものと同様に、シャットダウンモード、スタンバイモード、省電力動作モード、高速スタンバイモード及び高速動作モードといった五つの動作モード（電源モード）を設けたものを例に説明する。図１０に対応した割込み対象プロセッサの特定方法については、理解が容易なように、図１１〜図１４に示すテーブル及び処理フローを用いて説明する。
【０１４３】
割込み時間制御回路１７２は、割込みコントローラ１６１より受け取った割込み信号を対応するプロセッサへ通知するタイミングを制御するための回路である。例えば、割込みを通知すべきプロセッサの電源モードがスタンバイモード又はシャットダウンモードである場合、対応するプロセッサが割込みを受理できる状態になるまで待つ必要がある。一方、割込みは、プロセッサが割込み受理可能状態であるか否かに関わらず独立して発生する。このため、割込み時間制御回路１７２は、例えば遅延回路などで構成され、割込み信号を受け取った場合、対応するプロセッサが割込みを受理可能な状態になるのを待って通知できるようにするために、対応するプロセッサへの割込み信号の伝達を遅延させる機能を有する。
【０１４４】
なお、スタンバイモード又はシャットダウンモードのプロセッサに割込みを通知する必要がある場合、対応するプロセッサを起動し、プロセッサが安定化した時点で割込みを通知する機能が通常、一般的なプロセッサには搭載されている。しかしながら、本実施の形態においては、ハイパバイザ１３０の起動、第一キャッシュメモリ１４２及び第二キャッシュメモリ１５２等を用いた動作環境の設定が必要である。本実施の形態では、割込み時間制御回路１７２における割込み信号の伝送を遅延する遅延時間を、ハイパバイザ１３０の起動処理の完了に要する時間以上とした点に特徴がある。これにより、ハイパバイザ１３０を起動する前に対応するプロセッサへ割込みが通知されることに起因して、割込み処理実行中に、未定義命令例外が発生し、当該例外を捕捉できないといったことがなくなり、安全に処理を継続できるようになる。
【０１４５】
本実施の形態では、割込み時間制御回路１７２をハードウェア（回路）として実現する例を説明したが、上述の機能を実現するソフトウェア（プログラム）を備える構成としても構わない。
【０１４６】
以上のような構成を採用することにより、省電力動作モード時には低消費電力プロセッサ１４１に割込みを通知し、高速動作モード時には対応するプロセッサに割込みを通知することができ、省電力動作モード時において、高性能プロセッサ１５１への割込み通知を行わないようにすることができる。
【０１４７】
図１１は、本実施の形態３で用いる割込み対応表の一例を示す図である。割込み対応表は、デフォルトで、割込み要求対象プロセッサが低消費電力プロセッサ１４１又は高性能プロセッサ１５１に割り当てられるときに用いられる。
【０１４８】
図１１において、割込み対応表１７３は、後述する割込み要求元情報２２１及び割込み対象情報２２２を含む。割込み要求元情報２２１は、割込みコントローラ１６１から受けた割込み信号の要求元を特定するための情報である。割込み対象情報２２２は、要求元からの要求を低消費電力プロセッサ１４１及び高性能プロセッサ１５１のいずれに実行させるのかを示す情報である。
【０１４９】
電源制御回路１７０ａは、割込みコントローラ１６１から受けた割込み信号の要求元と、要求元からの要求を実行させるプロセッサとを対応付けた割込み対応表１７３を記憶する。
【０１５０】
図１１では、割込み要求元が、省電力動作モード時でも動作するシリアル通信又はネットワークデバイスである場合には、対応する処理を低消費電力プロセッサ１４１にデフォルトで割り振り、割込み要求元が、画像処理又はディスプレイ表示などの高速処理が必要なデバイスである場合には、対応する処理を高性能プロセッサ１５１にデフォルトで割り振る例を示している。
【０１５１】
電源制御回路１７０ａは、割込みコントローラ１６１からの割込みの通知を受けた場合、要求元を特定し、特定した要求元に基づいてデフォルトで割り当てたプロセッサを特定する。要求元の特定は、例えば割込みの要求とともに要求元の情報も割込みの要求に対応付けて伝送すればよい。すなわち、割込みコントローラ１６１は、割込みの要求と、要求元を特定するための要求元特定情報とを含む割込み信号を電源制御回路１７０ａへ伝送する。
【０１５２】
図１２は、電源モードレジスタ１７１及び割込み対応表１７３に基づく動作内容を示した動作対応表の一例を示す図である。なお、本実施の形態における電源制御は、電源制御回路１７０ａは、内部に電源制御用マイクロプロセッサを搭載し、動作対応表２３０をテーブルデータとして所持したプログラムで構成して電源制御を行ってもよいし、動作対応表２３０を順序回路又は論理回路で構成して電源制御を行ってもよい。
【０１５３】
電源制御回路１７０ａは、図１１に示す割込み対応表１７３を用いて、デフォルトで割り当てるプロセッサを特定した後、図１２に示す動作対応表２３０を用いて、電源モードに応じて実際に割り当てるプロセッサを特定するとともに、割込み時間制御回路１７２及びデマルチプレクサ１７４をどのように動作させるかを決定する。
【０１５４】
図１２において、動作対応表２３０には、電源制御回路１７０ａにより制御している電源モード２３１と、図１１に示す割込み対応表１７３を用いて特定したデフォルトのプロセッサ２３２と、デマルチプレクサ１７４が実際に割込みを通知するプロセッサ２３３と、割込み時間制御回路１７２の動作内容２３４とが対応付けられている。
【０１５５】
電源制御回路１７０ａは、電源モードと、割込み対応表１７３を用いて特定したプロセッサと、デマルチプレクサ１７４が実際に割込みを通知するプロセッサと、割込み時間制御回路１７２の動作内容とを対応付けた動作対応表２３０を記憶する。
【０１５６】
電源制御回路１７０ａは、図１２に示す動作対応表２３０を保持しており、電源モードレジスタ１７１及び割込み対応表１７３を用いて、デマルチプレクサ１７４の動作及び割込み時間制御回路１７２の動作を制御する。
【０１５７】
図１２において、例えば電源モード２３１がシャットダウンモード又はスタンバイモードであり、割込み対応表１７３を参照して特定されたデフォルトのプロセッサ２３２が低消費電力プロセッサ１４１である場合、デマルチプレクサ１７４が割込みを通知するプロセッサ２３３は低消費電力プロセッサ１４１となり、割込み時間制御回路１７２の動作２３４は低消費電力プロセッサ１４１の安定化待ちとなる。これは、電源制御回路１７０ａが第一電源ブロック１４０（低消費電力プロセッサ１４１及び第一キャッシュメモリ１４２）へ電力の供給を開始した後、低消費電力プロセッサ１４１が安定するまでの時間だけ、デマルチプレクサ１７４から低消費電力プロセッサ１４１への割込みの通知を割込み時間制御回路１７２を用いて遅延させることを意味する。このとき、第一キャッシュメモリ１４２の安定に要する時間は、低消費電力プロセッサ１４１の安定に要する時間よりも短いと想定している。
【０１５８】
また、電源モード２３１がシャットダウンモード又はスタンバイモードであり、割込み対応表１７３を参照して特定されたデフォルトのプロセッサ２３２が高性能プロセッサ１５１である場合、デマルチプレクサ１７４が割込みを通知するプロセッサ２３３は低消費電力プロセッサ１４１となり、割込み時間制御回路１７２の動作２３４は低消費電力プロセッサ１４１の安定化待ち及びハイパバイザ１３０の起動待ちとなる。これは、電源制御回路１７０ａが第一電源ブロック１４０（低消費電力プロセッサ１４１及び第一キャッシュメモリ１４２）へ電力の供給を開始した後、低消費電力プロセッサ１４１が安定するまでの時間と、ハイパバイザ１３０を起動してエミュレーション動作が有効となるまでの時間とを加算した時間だけ、デマルチプレクサ１７４から低消費電力プロセッサ１４１への割込みの通知を割込み時間制御回路１７２を用いて遅延させることを意味する。
【０１５９】
また、電源モード２３１が省電力動作モード又は高速スタンバイモードであり、割込み対応表１７３を参照して特定されたデフォルトのプロセッサ２３２が低消費電力プロセッサ１４１である場合、デマルチプレクサ１７４が割込みを通知するプロセッサ２３３は低消費電力プロセッサ１４１となり、割込み時間制御回路１７２の動作２３４は即時割込み通知となる。これは、割込み時間制御回路１７２による遅延処理を行うことなく、デマルチプレクサ１７４から低消費電力プロセッサ１４１への割込みの通知を行うことを意味する。
【０１６０】
また、電源モード２３１が省電力動作モードであり、割込み対応表１７３を参照して特定されたデフォルトのプロセッサ２３２が高性能プロセッサ１５１である場合、デマルチプレクサ１７４が割込みを通知するプロセッサ２３３は低消費電力プロセッサ１４１となり、割込み時間制御回路１７２の動作２３４はハイパバイザ１３０の起動待ちとなる。これは、本来高性能プロセッサ１５１で実行すべき内容を低消費電力プロセッサ１４１で実行するため、ハイパバイザ１３０の起動が完了するまでの時間だけ、デマルチプレクサ１７４から低消費電力プロセッサ１４１への割込みの通知を割込み時間制御回路１７２を用いて遅延させることを意味する。
【０１６１】
また、電源モード２３１が高速スタンバイモードであり、割込み対応表１７３を参照して特定されたデフォルトのプロセッサ２３２が高性能プロセッサ１５１である場合、デマルチプレクサ１７４が割込みを通知するプロセッサ２３３は高性能プロセッサ１５１となり、割込み時間制御回路１７２の動作２３４は高性能プロセッサ１５１の安定化待ち及びキャッシュメモリ間データ移動待ちとなる。これは、電源制御回路１７０ａが第二電源ブロック１５０（高性能プロセッサ１５１及び第二キャッシュメモリ１５２）へ電力の供給を開始した後、高性能プロセッサ１５１が安定するまでの時間と、高性能プロセッサ１５１による第二キャッシュメモリ１５２のデータ（第二ＯＳ１２１の動作環境及び命令コードが参照するデータなど）を更新するのに要する時間を加算した時間だけ、デマルチプレクサ１７４から高性能プロセッサ１５１への割込みの通知を割込み時間制御回路１７２を用いて遅延させることを意味する。
【０１６２】
このとき、第二キャッシュメモリ１５２の安定に要する時間は、高性能プロセッサ１５１の安定に要する時間よりも短いと想定している。また、第二キャッシュメモリ１５２のデータ、例えば、第二ＯＳ１２１の動作環境及び命令コードが参照するデータなどを更新するのに要する時間というのは、高性能プロセッサ１５１が必要とするデータに関して、第一キャッシュメモリ１４２から第二キャッシュメモリ１５２へのデータ転送を行い、データ転送の完了までに要する時間である。
【０１６３】
電源モード２３１が省電力動作モード及び高速スタンバイモードである場合、低消費電力プロセッサ１４１上で高性能プロセッサ１５１のプログラムをエミュレーションしているため、第一キャッシュメモリ１４２上に、高性能プロセッサ１５１が本来使用すべき命令コード及びデータが存在していることがある。アドレス情報に代表される識別情報により、第一キャッシュメモリ１４２上に存在する高性能プロセッサ１５１の命令コード及びデータを特定することができれば、それらの記憶内容を第二キャッシュメモリ１５２に転送することで、エミュレーション動作により低消費電力プロセッサ１４１で実行していたタスクを高性能プロセッサ１５１へ引継ぐことができ、かつ高速な処理を期待することができる。なお、後述するスヌープ制御回路の動作を用いることを想定し、キャッシュメモリ間でデータ転送を行わない方法もある。
【０１６４】
また、電源モード２３１が高速動作モードであり、割込み対応表１７３を参照して特定されたデフォルトのプロセッサ２３２が低消費電力プロセッサ１４１及び高性能プロセッサ１５１のいずれかである場合、デマルチプレクサ１７４が割込みを通知するプロセッサ２３３はデフォルトのプロセッサと同一となり、割込み時間制御回路１７２の動作２３４は即時割込み通知となる。これは、割込み時間制御回路１７２による遅延処理を行うことなく、デマルチプレクサ１７４からデフォルトのプロセッサへの割込みの通知を行うことを意味する。
【０１６５】
なお、図１２において、電源モード２３１がシャットダウンモード、スタンバイモード又は省電力動作モードである場合、割込みコントローラ１６１より受けた割込みが、高性能プロセッサ１５１に対して発行されたとしても、デマルチプレクサ１７４は、実際の割込みの通知を高性能プロセッサ１５１から低消費電力プロセッサ１４１へ切り替えている。これは、電力消費を低減させるためである。
【０１６６】
図１３及び図１４は、本実施の形態３の電源制御回路１７０ａの動作の一例を説明するためのフローチャートである。
【０１６７】
図１３及び図１４に示す動作は、電源制御回路１７０ａに存在する電源制御用マイクロプロセッサ上で動作するプログラムで実現してもよく、図１２に示す動作を実現する順序回路又は論理回路で構成されるハードウェアで実現してもよい。
【０１６８】
電源制御回路１７０ａは、割込みコントローラ１６１から信号線２５を介して割込みが通知されると、図１１に示したテーブル情報（割込み対応表１７３）を参照し、デフォルトで設定された割込みを通知すべきプロセッサを特定する（ステップＳ３１）。
【０１６９】
次に、電源制御回路１７０ａは、電源モードレジスタ１７１の状態をチェックする（ステップＳ３２）。
【０１７０】
この後、電源制御回路１７０ａは、図１２で説明した動作対応表２３０を参照し、デフォルトで設定されたプロセッサと、現在の電源モードレジスタ１７１の電源モードとに基づき、実際に割込みを通知すべきプロセッサを特定する（ステップＳ３３）。
【０１７１】
次に、電源制御回路１７０ａは、ステップＳ３３にて特定した実際に通知すべきプロセッサが停止状態であるか否かを判断する（ステップＳ３４）。ここで、停止状態であると判断した場合（ステップＳ３４でＹＥＳ）、ステップＳ３５の処理へ進み、停止状態ではないと判断した場合（ステップＳ３４でＮＯ）、ステップＳ４０の処理へ進む。
【０１７２】
ステップＳ３４において、特定したプロセッサが停止状態であれば、電源制御回路１７０ａは、特定したプロセッサを含む電源ブロックに電力及びクロック信号を供給する（ステップＳ３５）。次に、電源制御回路１７０ａは、特定したプロセッサが安定動作状態になったか否かを判断する（ステップＳ３６）。ここで、特定したプロセッサが安定動作状態になったと判断された場合（ステップＳ３６でＹＥＳ）、ステップＳ３７の処理へ移行し、特定したプロセッサが安定動作状態になっていないと判断された場合（ステップＳ３６でＮＯ）、特定したプロセッサが安定動作状態になるまで、ステップＳ３６の判断を繰り返し実行する。
【０１７３】
次に、電源制御回路１７０ａは、安定動作状態に移行したプロセッサが高性能プロセッサ１５１であるか否かを判断する（ステップＳ３７）。安定したプロセッサが高性能プロセッサ１５１であると判断した場合（ステップＳ３７でＹＥＳ）、ステップＳ３８の処理へ進み、安定したプロセッサが高性能プロセッサ１５１でないと判断した場合（ステップＳ３７でＮＯ）、ステップＳ４０の処理へ進む。
【０１７４】
ステップＳ３７において、安定動作状態に移行したプロセッサが高性能プロセッサ１５１であると判断した場合、安定動作状態になる以前に、本来高性能プロセッサ１５１で動作すべきプログラム（命令コード）を低消費電力プロセッサ１４１上でエミュレーション動作させていた可能性がある。このため、電源制御回路１７０ａは、性能向上対策の一環として、高性能プロセッサ１５１が必要とする命令コードと、命令コードが参照するデータと、低消費電力プロセッサ１４１上で動作をさせていた第二ＯＳ１２１の動作環境とを第一キャッシュメモリ１４２から第二キャッシュメモリ１５２に移動させる（ステップＳ３８）。
【０１７５】
次に、電源制御回路１７０ａは、第一キャッシュメモリ１４２から第二キャッシュメモリ１５２へのデータの移動が完了したか否かを判断する（ステップＳ３９）。ここで、データの移動が完了したと判断した場合（ステップＳ３９でＹＥＳ）、ステップＳ４０の処理へ進み、データの移動が完了していないと判断された場合（ステップＳ３９でＮＯ）、データの移動が完了するまで、ステップＳ３９の判断を繰り返し実行する。
【０１７６】
これにより、高性能プロセッサ１５１が必要とする命令コード及びデータを予め第二キャッシュメモリ１５２上に記憶し、高性能プロセッサ１５１の動作を効率化させることができる。また、高性能プロセッサ１５１がキャッシュミスを起こした場合、スヌープ動作などにより第一キャッシュメモリ１４２上に存在していた命令コード及びデータを無効化又は更新させる手間も必要なくなる。
【０１７７】
次に、電源制御回路１７０ａは、ステップＳ３１において特定したデフォルトで設定されたプロセッサと、ステップＳ３３において特定した実際に割込みを通知すべきプロセッサとが同じプロセッサであるか否かを判断する（ステップＳ４０）。デフォルトのプロセッサと割込み対象のプロセッサとが同一であると判断した場合（ステップＳ４０でＹＥＳ）、ステップＳ４３の処理へ進む。一方、デフォルトのプロセッサと割込み対象のプロセッサとが同一でないと判断した場合（ステップＳ４０でＮＯ）、ステップＳ４１の処理へ進む。
【０１７８】
ステップＳ４０において、同じプロセッサでないと判断された場合、デフォルトでは高性能プロセッサ１５１に割り当てていた割込み処理が、実際には低消費電力プロセッサ１４１に割り当てられることとなる。この場合、ハイパバイザ１３０の特にエミュレーション動作を機能させる必要がある。そのため、電源制御回路１７０ａは、ハイパバイザ１３０が起動していなければ、ハイパバイザ１３０を起動させる（ステップＳ４１）。
【０１７９】
次に、電源制御回路１７０ａは、ハイパバイザ１３０の起動が完了したか否かを判断する（ステップＳ４２）。ここで、ハイパバイザ１３０の起動が完了したと判断した場合（ステップＳ４２でＹＥＳ）、ステップＳ４３の処理へ進む。一方、ハイパバイザ１３０の起動が完了していないと判断した場合（ステップＳ４２でＮＯ）、ハイパバイザ１３０の起動が完了するまで、ステップＳ４２の判断を繰り返し実行する。
【０１８０】
ハイパバイザ１３０の起動が完了し、ハイパバイザ１３０が機能するようになった時点で、電源制御回路１７０ａは、通知すべきプロセッサに割込みを通知する（ステップＳ４３）。
【０１８１】
図１３及び図１４に示すような動作で割込みを通知することにより、省電力動作モード時には低消費電力プロセッサ１４１に割込みを通知し、高速動作モード時には割込み要求に対応するプロセッサに割込みを通知することができる。すなわち、省電力動作モード時において、高性能プロセッサ１５１への割込み通知を行わないようにすることが可能である。さらに、スタンバイモードにおいて、プロセッサへの割込み通知を遅延させることが可能であり、ハイパバイザ１３０、第一キャッシュメモリ１４２及び第二キャッシュメモリ１５２のより確実かつより効率的な動作を保証することも可能となる。
【０１８２】
（実施の形態４）
上述した実施の形態３において、第一キャッシュメモリ１４２及び第二キャッシュメモリ１５２の効率的な利用方法について述べた。しかしながら、複数のプロセッサがメモリを共有して動作する場合には、通常、キャッシュメモリ間でスヌープ制御が行われる。スヌープ制御とは、複数のプロセッサ間で共有される命令コードやデータの一貫性を保証する制御方法である。
【０１８３】
スヌープ制御では、個々のプロセッサから共有メモリへの書込み動作を監視しておき、一方のプロセッサで書込みが行われると、もう一方のプロセッサが利用しているキャッシュメモリの対応するエントリを無効化又は更新する。これにより、複数のプロセッサに対応するキャッシュメモリ間での命令コード及びデータの一貫性が保証され、論理的矛盾が発生しなくなる。
【０１８４】
図１５は、本実施の形態４のマルチプロセッサシステムの構成の一例を示す図である。図１５において図１、図６及び図７に付した符号と同一の構成要素は同一又はこれに相当する構成要素であるため、ここでは、その詳細な説明を省略する。
【０１８５】
図１５において、本実施の形態４のマルチプロセッサシステム５は、内部バス１８０、メモリ１１０、第一プロセッサ１４１、第一キャッシュメモリ１４２、第一スヌープ制御回路１４３、第二プロセッサ１５１、第二キャッシュメモリ１５２、第二スヌープ制御回路１５３、電源制御回路１７０及び周辺モジュール群１６０を備える。
【０１８６】
第一プロセッサ電源ブロック１４０ａには、低消費電力プロセッサ１４１が含まれ、第一キャッシュ電源ブロック１４０ｃには、第一キャッシュメモリ１４２及び第一スヌープ制御回路１４３が含まれる。第二プロセッサ電源ブロック１５０ａには、第二プロセッサ１５１が含まれ、第二キャッシュ電源ブロック１５０ｃには、第二キャッシュメモリ１５２及び第二スヌープ制御回路１５３が含まれる。
【０１８７】
図１５において、第一スヌープ制御回路１４３は、低消費電力プロセッサ１４１から第一キャッシュメモリ１４２へのデータの書込み動作を監視し、書込みが行われると、第二キャッシュメモリ１５２の対応するエントリの無効化又は更新を依頼する。
【０１８８】
また、第二スヌープ制御回路１５３は、高性能プロセッサ１５１から第二キャッシュメモリ１５２へのデータの書込み動作を監視し、書込みが行われると、第一キャッシュメモリ１４２の対応するエントリの無効化又は更新を依頼する。
【０１８９】
なお、スヌープ制御回路の一般的な制御方法は、例えば、特開平４−１９１９４６号公報などに開示されている。
【０１９０】
本実施の形態４において、第一スヌープ制御回路１４３は有効カウンタ１４３１を備え、第二スヌープ制御回路１５３は有効カウンタ１５３１を備える。なお、有効カウンタ１４３１，１５３１は、有効データ数保持部の一例に相当する。
【０１９１】
有効カウンタ１４３１は、第一キャッシュメモリ１４２に記憶されている有効なデータエントリ数を示すものであり、有効カウンタ１５３１は、第二キャッシュメモリ１５２に記憶されている有効なデータエントリ数を示すものである。
【０１９２】
例えば、該当するキャッシュメモリにデータが存在しない等の、キャッシュミスが発生すると、メモリ１１０から該当するデータへアクセスするとともに、対応するキャッシュメモリにアクセスしたデータを書込み（ロードし）、以後の処理においてはキャッシュメモリに書き込んだデータを用いて処理を行うので、データアクセスに係る処理を短縮することが可能となる。このとき、有効カウンタ１４３１，１５３１は、キャッシュメモリに新たに書き込んだ有効なデータの数に相当する分、計数値を増加させる。
【０１９３】
本実施の形態４において、タスク１１３に含まれる複数の命令コードの実行中に電源モードが高速動作モードから高速スタンバイモードを経て省電力動作モードに変化したときに、有効カウンタ１４３１，１５３１の計数値がどのように変化するのかを説明する。
【０１９４】
まず、電源モードが高速動作モードである場合においては、タスク１１３に含まれる命令コード及び第二ＯＳ１２１は高性能プロセッサ１５１にて実行される。このときタスク１１３に含まれる命令コードの実行に起因して、高性能プロセッサ１５１が内部バス１８０を通してメモリ１１０からデータを読み込んだとする。この場合、メモリ１１０から読み込んだデータは、第二キャッシュメモリ１５２にも書き込まれる。このとき有効カウンタ１５３１の計数値は新たに読み込んだデータの数に相当する分増加する。
【０１９５】
次に、電源モードが高速スタンバイモードに切り替わるとする。現在実行している命令コードの実行を高性能プロセッサ１５１が完了した後、高性能プロセッサ１５１への電力の供給を停止する。高性能プロセッサ１５１が本来実行すべきタスク１１３に含まれる複数の命令コードのうち、高性能プロセッサ１５１にて処理を完了させた命令コードに後続する命令コードをハイパバイザ１３０のエミュレート動作により、低消費電力プロセッサ１４１にて実行させる。このとき、低消費電力プロセッサ１４１が内部バス１８０を通してメモリ１１０にデータを書き込んだとする。このとき、メモリ１１０に書き込む前のデータが第二キャッシュメモリ１５２に記憶されている可能性がある。この場合、新たに書き込まれたデータと第二キャッシュメモリ１５２に記憶されたデータとの一貫性は保証されなくなる。
【０１９６】
したがって、第一スヌープ制御回路１４３は、第一キャッシュメモリ１４２への書込みを監視し、書込みが行われた場合、第二スヌープ制御回路１５３を介し、第二キャッシュメモリ１５２に対して同一データの無効化又は更新を依頼する。これによって、第二キャッシュメモリ１５２の有効なデータエントリ数は減少するため、第二スヌープ制御回路１５３は、減少させたデータの数に相当する分、有効カウンタ１５３１の値を減少させる。
【０１９７】
高性能プロセッサ１５１が必要とする有効なデータエントリ数が一定値以下になっていれば、対応する第二キャッシュメモリ１５２への電力の供給を停止するようにしても、再度電力供給した時のキャッシュミスによる性能劣化が大きくならないことが多い。このため、上述した第一スヌープ制御回路１４３及び第二スヌープ制御回路１５３の動作により、有効カウンタ１５３１の値が一定値以下になった場合、電源モードを省電力動作モードに設定し、第二キャッシュメモリ１５２への電力供給を停止させることができる。
【０１９８】
このように構成することにより、第二キャッシュメモリ１５２とメモリ１１０との一貫性を保証する有効なデータの数を有効カウンタ１５３１より得ることが可能となる。第一キャッシュメモリ１４２とメモリ１１０との一貫性を保証する有効なデータの数を有効カウンタ１４３１より得る方法も同様である。
【０１９９】
本実施の形態４では、第一スヌープ制御回路１４３が有効カウンタ１４３１の値を定期的にチェックし、第二スヌープ制御回路１５３が有効カウンタ１５３１の値を定期的にチェックする。第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、必要に応じて、制御信号線２６又は２７を介して、該当するキャッシュ電源ブロックへの電力供給を停止させる指令信号を電源制御回路１７０へ伝送する。指令信号を受けた電源制御回路１７０は、電力供給線３２又は３３を介して該当するキャッシュ電源ブロック（この例では第一キャッシュ電源ブロック１４０ｃ又は第二キャッシュ電源ブロック１５０ｃ）への電力の供給を停止する。
【０２００】
有効カウンタ１５３１は、第二キャッシュメモリ１５２に格納されたデータとメモリ１１０に格納されたデータとの間に一貫性が保証されたデータの数を保持し、電源制御回路１７０は、高性能プロセッサ１５１へ供給する電力を抑制している間に、有効カウンタ１５３１により保持された一貫性が保証されたデータの数が所定値以下になった場合、第二キャッシュメモリ１５２への電力の供給を抑制する。
【０２０１】
また、電源制御回路１７０が高性能プロセッサ１５１へ供給する電力を抑制している間に、低消費電力プロセッサ１４１が、変換した命令コードを実行することにより生成される新たなデータをメモリ１１０へ格納することに起因して、第二キャッシュメモリ１５２に格納されたデータとメモリ１１０に格納されたデータとの間に一貫性が保証されなくなった場合、第二スヌープ制御回路１５３は、第二キャッシュメモリ１５２に格納され、一貫性が保証されなくなったデータを無効にする。
【０２０２】
図１５に示したマルチプロセッサシステム５は、キャッシュメモリを含む電源ブロックにのみ電力が供給されている場合でも、当該キャッシュメモリ内の有効なデータが減少した時点で、電力の供給を自動的に停止させることができ、無駄な電力の消費をさらに削減することができる。
【０２０３】
図１６及び図１７は、本実施の形態４のスヌープ制御回路（第一スヌープ制御回路１４３及び第二スヌープ制御回路１５３）の動作の一例を説明するためのフローチャートである。図１６及び図１７に示す動作は、プログラムで実現してもよいし、順序回路又は論理回路で構成されるハードウェアで実現してもよい。
【０２０４】
スヌープ制御回路が監視するキャッシュメモリを含むキャッシュ電源ブロックに電力の供給が行われると、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、自身の監視するキャッシュメモリの初期化処理を行う（ステップＳ５１）。すなわち、第一キャッシュ電源ブロック１４０ｃに電力の供給が行われると、第一スヌープ制御回路１４３は、自身の監視する第一キャッシュメモリ１４２の初期化処理を行う。また、第二キャッシュ電源ブロック１５０ｃに電力の供給が行われると、第二スヌープ制御回路１５３は、自身の監視する第二キャッシュメモリ１５２の初期化処理を行う。初期化処理では、キャッシュメモリ内の全てのエントリの無効化、及び有効カウンタ１４３１（第二スヌープ制御回路の場合には有効カウンタ１５３１）のゼロクリア（リセット）などが行われる。
【０２０５】
この後、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、内部バス１８０を通じたメモリ１１０内のデータへのトランザクション監視、及びキャッシュミスによるキャッシュメモリ内へのデータロードの監視待ち状態に移行する。すなわち、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、他方のプロセッサからメモリ１１０へのデータの書き込みを監視するとともに、キャッシュミスによるキャッシュメモリ内へのデータの書き込みを監視するイベント監視待ち状態に移行する（ステップＳ５２）。
【０２０６】
第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、監視対象イベントが発生した場合、発生したイベントが、別のスヌープ制御回路が監視するキャッシュメモリを用いるプロセッサ（以下、別プロセッサと称す）が内部バス１８０を通じてメモリ１１０へ書き込みを行ったか否かを判断する（ステップＳ５３）。すなわち、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、別プロセッサがメモリ１１０にデータを書き込んだか否かを判断する。
【０２０７】
例えば、対象とするプロセッサが高性能プロセッサ１５１であったとする。このとき、別プロセッサである低消費電力プロセッサ１４１がメモリ１１０へ書き込みを行った場合、当該トランザクションを監視している、別のスヌープ制御回路である第一スヌープ制御回路１４３は、第二スヌープ制御回路１５３を介し、第二キャッシュメモリ１５２内の同一データの無効化又は更新を依頼する。そのため、第二スヌープ制御回路１５３は、第二キャッシュメモリ１５２内の同一データの無効化又は更新の依頼かどうかを判定することによって、低消費電力プロセッサ１４１がメモリ１１０にデータを書き込んだか否かをチェックすることが可能である。ここで、別プロセッサによるメモリ１１０への書き込みであると判断した場合（ステップＳ５３でＹＥＳ）、ステップＳ５７の処理へ進み、別プロセッサによるメモリ１１０への書き込みでないと判断した場合（ステップＳ５３でＮＯ）、ステップＳ５４の処理へ進む。
【０２０８】
ステップＳ５３において、別プロセッサによるメモリ１１０への書込みでない、すなわち、自プロセッサによるキャッシュメモリへのデータロードであると判断した場合、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、自身が監視するキャッシュメモリ内でのキャッシュミスが発生したか否かを判断する（ステップＳ５４）。ここで、キャッシュミスが発生したと判断した場合（ステップＳ５４でＹＥＳ）、ステップＳ５５の処理へ進み、キャッシュミスが発生していないと判断した場合（ステップＳ５４でＮＯ）、ステップＳ５２の処理へ戻る。
【０２０９】
ステップＳ５４にて、キャッシュミスが発生したと判断した場合、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、該当するアドレスのキャッシュデータをメモリ１１０から自身が監視するキャッシュメモリ（以下、自キャッシュメモリと称す）へロードする（ステップＳ５５）。
【０２１０】
次に、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、自キャッシュメモリへロードして増加した有効エントリ数に相当する数だけ、有効カウンタ１４３１（第二スヌープ制御回路１５３の場合には有効カウンタ１５３１）の値を増加させる（ステップＳ５６）。
【０２１１】
これにより、自キャッシュメモリに存在するデータであって、メモリ１１０のデータと一貫性が保証されたデータのエントリ数が有効カウンタ１４３１（第二スヌープ制御回路の場合には有効カウンタ１５３１）内に記憶されることになる。次に、ステップＳ５６の処理の完了後、ステップＳ５２の処理へ戻る。
【０２１２】
また、ステップＳ５３において、別プロセッサによるメモリ１１０への書込みであると判断した場合、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、自キャッシュメモリ上データの一貫性保証のため、別プロセッサがメモリ１１０に書き込んだデータが自キャッシュメモリに存在するか否かを判断する（ステップＳ５７）。ここで、自キャッシュメモリに該当するデータが存在すると判断した場合（ステップＳ５７でＹＥＳ）、ステップＳ５８の処理へ進み、自キャッシュメモリに該当するデータが存在しないと判断した場合（ステップＳ５７でＮＯ）、ステップＳ５２の処理へ戻る。
【０２１３】
ステップＳ５７において、自キャッシュメモリに該当するデータが存在すると判断した場合、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、該当するデータのキャッシュエントリを無効化又は更新する（ステップＳ５８）。
【０２１４】
なお、ステップＳ５８において、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３がデータの無効化又は更新のいずれの処理を実行するかについては、通常、複数のプロセッサ間のデータ共有形態に依存する。例えば、共有データを複数のプロセッサが並列に処理する場合、更新方式を採用したほうがよい。無効化方式を採用すると、相互に無効化を行うスラッシング現象が発生し得る。逆に、一方のプロセッサで動作していたプログラムが他方のプロセッサに移動（マイグレーション）する場合には、無効化方式を採用すべきである。更新方式を採用すると、いつまでも無駄なデータが移動前のキャッシュメモリに残存することになる。本実施の形態４では、低消費電力プロセッサ１４１上でハイパバイザ１３０を介して動作していたタスクが、高性能プロセッサ１５１との間でマイグレーションする可能性を想定している。そのため、処理フローでは、無効化方式を採用するものとして説明している。
【０２１５】
つまり、他のプロセッサからメモリ１１０へ書き込んだデータに該当するデータが自キャッシュメモリ上に存在する場合、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、該当するデータに対応するキャッシュエントリを無効化する（ステップＳ５８）。
【０２１６】
次に、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、無効化したエントリ数に相当する数だけ、該当する有効カウンタの値を減少させる（ステップＳ５９）。なお、図示していないが、他のプロセッサからのメモリ１１０への書き込みによらず、キャッシュ無効化命令等によりキャッシュエントリが無効化される場合もある。この場合にも、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、無効化したエントリ数に相当する数だけ、該当する有効カウンタの値を減少させる必要がある。
【０２１７】
次に、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、有効カウンタの値が予め定められた所定値以下であるか否かを判断する（ステップＳ６０）。ここで、有効カウンタの値が所定値以下であると判断した場合（ステップＳ６０でＹＥＳ）、ステップＳ６１の処理へ進み、有効カウンタの値が所定値より大きいと判断した場合（ステップＳ６０でＮＯ）、ステップＳ５２の処理へ戻る。
【０２１８】
ステップＳ６０において、有効カウンタの値が予め定められた所定値以下であると判断した場合、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、自プロセッサへの電力の供給が停止しているか否かを判断する（ステップＳ６１）。ここで、自プロセッサへの電力の供給が停止していると判断した場合（ステップＳ６１でＹＥＳ）、ステップＳ６２の処理へ進み、自プロセッサへの電力の供給が停止していないと判断した場合（ステップＳ６１でＮＯ）、ステップＳ５２の処理へ戻る。
【０２１９】
ステップＳ６１において、自プロセッサへの電力の供給が停止していると判断した場合、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、自キャッシュメモリ内のデータをクリーン（パージ）する（ステップＳ６２）。
【０２２０】
次に、第一スヌープ制御回路１４３又は第二スヌープ制御回路１５３は、自キャッシュメモリを含むキャッシュ電源ブロックへの電力の供給を停止する指令を電源制御回路１７０へ送る。この指令を受けた電源制御回路１７０は、該当するキャッシュ電源ブロックへの電力の供給を停止する（ステップＳ６３）。
【０２２１】
本実施の形態４のマルチプロセッサシステムは上述の構成を採用するので、自キャッシュメモリ内の有効なデータの数が予め定めた数を下回れば、自キャッシュメモリを含むキャッシュ電源ブロックへの電力の供給を自動的に停止させることができ、無駄な電力の消費を更に削減することができる。
【０２２２】
また、キャッシュメモリ内の有効なデータエントリ数が所定値以下になって始めて電力の供給を停止するため、電力の供給を停止したキャッシュメモリを利用するプロセッサを再起動した場合でも、キャッシュメモリへの電力の供給を停止させたことに起因する影響を少なくすることが可能となる。
【０２２３】
（実施の形態５）
前述した実施の形態１〜４においては、低消費電力プロセッサ１４１に対して、通常のキャッシュメモリを装備することを想定している。一般的には、キャッシュメモリは、２ウェイ〜８ウェイのセットアソシアティブキャッシュ方式を採用することが多い。同時にアドレスを比較する対象が２〜８に限定されるため、比較器の個数に依存する消費電力及び回路規模を抑えることが可能である。
【０２２４】
しかしながら、逆に、プロセッサ及びキャッシュメモリのみで動作する状態のほうが、一般に、キャッシュミスが発生してメモリ１１０上のデータにアクセスする状態よりも、電力消費が少ない。
【０２２５】
本実施の形態５では、キャッシュミスに起因した消費電力の増加を抑制する構成を提供することを特徴とする。
【０２２６】
図１８は、本実施の形態５のマルチプロセッサシステムの構成の一例を示す図である。図１８において図１及び図６に付した符号と同一の構成要素は同一又はこれに相当する構成要素であるため、ここでは、その詳細な説明を省略する。
【０２２７】
図１８において、本実施の形態５のマルチプロセッサシステム６は、内部バス１８０、メモリ１１０、第一プロセッサ１４１、第一キャッシュメモリ１４２、フルアソシアティブキャッシュメモリ１４４、第二プロセッサ１５１、第二キャッシュメモリ１５２、電源制御回路１７０及び周辺モジュール群１６０を備える。
【０２２８】
図１８において、第一電源ブロック１４０ｄには、低消費電力プロセッサ１４１、第一キャッシュメモリ１４２及び後述するフルアソシアティブキャッシュメモリ１４４が含まれる。
【０２２９】
フルアソシアティブキャッシュメモリ１４４は、第一キャッシュメモリ１４２のキャッシュミスを吸収する機能を有する。フルアソシアティブキャッシュメモリ１４４は、第一キャッシュメモリ１４２において、第一キャッシュメモリ１４２内のデータの更新に伴い、利用されなくなったデータを破棄する場合に、利用されなくなったデータを格納する。つまり、第一キャッシュメモリ１４２内のデータと、フルアソシアティブキャッシュメモリ１４４内のデータとは互いに重複することがない。
【０２３０】
フルアソシアティブキャッシュメモリ１４４は、第一キャッシュメモリ１４２へ格納されたデータと重複しないデータを格納する。低消費電力プロセッサ１４１によって第一キャッシュメモリ１４２へ格納されたデータが更新され、かつ、低消費電力プロセッサ１４１によって第一キャッシュメモリ１４２から利用されていないデータが破棄される場合、フルアソシアティブキャッシュメモリ１４４は、第一キャッシュメモリ１４２から破棄されたデータを格納する。
【０２３１】
フルアソシアティブキャッシュメモリ１４４は、アクセス要求が行われたアドレスと、当該フルアソシアティブキャッシュメモリ１４４内の全てのエントリとを比較する機能を有する。
【０２３２】
なお、ここで、全てのエントリと比較する機能は、第一キャッシュメモリ１４２内のエントリ数に相当する数の比較器を備えることにより実現されるものではない。低消費電力プロセッサ１４１は、低速であっても、低消費電力で動作すればよいので、一つの比較器が、順次、第一キャッシュメモリ１４２内のエントリとの一致をチェックするように構成すればよい。フルアソシアティブキャッシュメモリ１４４の詳細については、図１９において説明する。
【０２３３】
図１８に示す実施の形態５を採用することにより、直前に破棄したデータに関して、第一キャッシュメモリ１４２でミスしたアクセスをフルアソシアティブキャッシュメモリ１４４で吸収することができ、メモリ１１０へのアクセス数を低減させることが可能である。これにより、省電力動作モード時の消費電力をさらに削減することが可能である。
【０２３４】
図１９は、本実施の形態５のフルアソシアティブキャッシュメモリ１４４の具体的な構成の一例を示す図である。図１９は、フルアソシアティブキャッシュメモリ１４４に対して、インデクス値３０１及びタグ値３０２から構成されるアドレス信号が入力され、入力されたアドレス信号に対応するデータ３０３が出力されるまでの回路構成の一例を模式的に示している。
【０２３５】
なお、図１９では、フルアソシアティブキャッシュメモリ１４４上にデータが存在しない場合のメモリ１１０とのロード／ストア回路の記載は省略している。フルアソシアティブキャッシュメモリ１４４の本体に対応するデータメモリ３３０は、データを記憶する。データメモリ３３０の中に記憶されるデータは、インデクス値３３１、有効ビット３３２及びデータ本体３３３を有する。
【０２３６】
また、図示したデータ以外に、ダーティビット（第一キャッシュメモリ１４２上で書き換えられたかどうかを示すビット、すなわち、最終的には、メモリ１１０上に書き戻さなければならないことを示すビット）、及び共有ビット（他のプロセッサ及び周辺モジュール群などとデータを共有することを示すビット）などを設けることは可能である。
【０２３７】
ハッシュテーブル３１０は、タグ値３０２から、キャッシュメモリ内のデータメモリ３３０内のデータのアドレスのヒントを示すための変換テーブルに対応する。ハッシュテーブル３１０は、具体的には、配列で構成される。
【０２３８】
図１９に示すフルアソシアティブキャッシュメモリ１４４は、第一に、タグ値３０２をキーとしてハッシュテーブル３１０を参照することによりデータメモリ３３０のアドレス３１１を得る。すなわち、フルアソシアティブキャッシュメモリ１４４は、ハッシュテーブル３１０から、タグ値３０２で示される番号のデータを取り出すことにより、データメモリ３３０のアドレス３１１を得る。しかしながら、セットアソシアティブ方式と異なり、アドレス３１１が必ずしも対応するキャッシュエントリを指すとは限らない。このため、フルアソシアティブキャッシュメモリ１４４は、０を初期値とするカウンタ３２１を備える。フルアソシアティブキャッシュメモリ１４４は、インクリメンタ３２０で当該カウンタ３２１の計数値を増加させながら、カウンタ３２１とアドレス３１１とを加算器３２２で加算した結果が示すエントリをチェックする。フルアソシアティブキャッシュメモリ１４４は、有効なエントリが存在しなくなった時点でカウントアップを終了し、キャッシュミスとみなす。
【０２３９】
キャッシュメモリのデータメモリ３３０内の該当するエントリのインデクス値３３１とアドレス信号内のインデクス値３０１とが一致し、かつ、有効ビット３３２が“Ｖａｌｉｄ”を示す場合、キャッシュヒットであると判断される。回路上は、インデクス値の比較を比較器３４０で実施し、有効ビットの判定を論理積回路３５０で実施している。なお、図面の説明上、比較器３４０の出力を論理積回路３５０に入力しているが、有効ビット３３２の判定を行った後に、比較器３４０の動作を行わせるほうが、比較器３４０の無駄な動作を避け、消費電力の削減を行える場合がある。キャッシュヒットであると判断されれば、ゲート３６０は、データメモリ３３０に記憶されている該当データ本体３３３を出力データ値３０３として出力する。
【０２４０】
そして、出力データ値３０３を用いて低消費電力プロセッサ１４１による処理が行われたり、第一キャッシュメモリ１４２への出力データ値３０３の書き込みなどが行われる。このとき、第一キャッシュメモリ１４２へ書き込むために用いたフルアソシアティブキャッシュメモリ１４４内のデータをデータメモリ３３０から削除する。このようにすることにより、第一キャッシュメモリ１４２及びフルアソシアティブキャッシュメモリ１４４（具体的には、データメモリ３３０）に重複したデータを格納することを避け、第一キャッシュメモリ１４２及びフルアソシアティブキャッシュメモリ１４４の限られた容量をより有効に活用することが可能となる。
【０２４１】
本実施の形態５では、図１９に示す１個の比較器３４０を有するフルアソシアティブキャッシュメモリ１４４を備えたことにより、消費電力を大幅に増大させることなく、キャッシュミスを最低限に抑えることができるキャッシュメモリを搭載することが可能となる。キャッシュミスを減少させることにより、メモリ１１０へのアクセスによる消費電力の増加を抑えることができ、全体として、マルチプロセッサシステム６の消費電力をさらに低下させることができる。
【０２４２】
なお、上述した具体的実施形態には以下の構成を有する発明が主に含まれている。
【０２４３】
本発明の一局面に係るマルチプロセッサ制御装置は、第一の命令コードを実行する第一のプロセッサと、前記第一の命令コードとは異なる第二の命令コードを実行する第二のプロセッサと、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換する命令変換部と、前記第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方のプロセッサの動作を制御する制御部とを備え、前記命令変換部は、前記制御部によって前記第二のプロセッサの動作が抑制されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換し、前記第一のプロセッサは、前記変換した命令コードを実行する。
【０２４４】
本発明の他の局面に係るマルチプロセッサ制御方法は、第一の命令コードを実行する第一のプロセッサと、前記第一の命令コードとは異なる第二の命令コードを実行する第二のプロセッサとを制御するためのマルチプロセッサ制御方法であって、前記第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方のプロセッサの動作を制御する制御ステップと、前記制御ステップにおいて前記第二のプロセッサの動作が抑制されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換する命令変換ステップと、前記命令変換ステップにおいて変換された命令コードを前記第一のプロセッサにて実行する実行ステップとを含む。
【０２４５】
本発明の他の局面に係るマルチプロセッサ制御回路は、第一の命令コードを実行する第一のプロセッサと、前記第一の命令コードとは異なる第二の命令コードを実行する第二のプロセッサとを制御するマルチプロセッサ制御回路であって、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換する命令変換回路と、前記第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方のプロセッサの動作を制御する制御回路とを備え、前記命令変換回路は、前記制御回路によって前記第二のプロセッサの動作が抑制されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換し、前記第一のプロセッサは、前記変換した命令コードを実行する。
【０２４６】
これらの構成によれば、第二のプロセッサの動作を抑制している間に、第二のプロセッサ上で動作させるべき第二の命令コードが発生したとしても、第二のプロセッサを起動させることなく、第二の命令コードを第一のプロセッサが実行できる命令コードに変換し、変換した命令コードを第一のプロセッサで動作させることが可能となる。
【０２４７】
したがって、第二のプロセッサの動作を抑制している間に、第二のプロセッサを一時的に起動させる機会を削減することができ、複数のプロセッサのうちの消費電力の大きいプロセッサを一時的に起動させることに起因する電力の消費を削減することができる。
【０２４８】
また、上記のマルチプロセッサ制御装置において、前記制御部は、第二のプロセッサに供給する電力を制御する電力制御部を含み、前記命令変換部は、前記電力制御部によって前記第二のプロセッサへ供給する電力が抑制されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換し、前記第一のプロセッサは、前記変換した命令コードを実行することが好ましい。
【０２４９】
この構成によれば、第二のプロセッサへ供給する電力を抑制している間に、第二のプロセッサで動作させるべき第二の命令コードが発生したとしても、第二のプロセッサを起動させることなく、第二の命令コードを第一のプロセッサが実行できる命令コードに変換し、変換した命令コードを第一のプロセッサで動作させることが可能となる。
【０２５０】
したがって、第二のプロセッサへ供給する電力を抑制している間に、第二のプロセッサを一時的に起動させる機会を削減することができ、複数のプロセッサのうちの消費電力の大きいプロセッサを一時的に起動させることに起因する電力の消費を削減することができる。
【０２５１】
また、上記のマルチプロセッサ制御装置において、前記第一のプロセッサが消費する消費電力は、前記第二のプロセッサが消費する消費電力より低いことが好ましい。
【０２５２】
この構成によれば、第二のプロセッサへ供給する電力を抑制している間に、変換した命令コードを第一のプロセッサで実行させるので、第二の命令コードを第二のプロセッサで実行させる場合に比して消費電力を削減することができる。
【０２５３】
また、上記のマルチプロセッサ制御装置において、前記電力制御部は、前記第二のプロセッサへ供給する電力を停止させ、前記命令変換部は、前記電力制御部によって前記第二のプロセッサへ供給する電力が停止されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換することが好ましい。
【０２５４】
この構成によれば、第二のプロセッサへ供給する電力が停止されるので、消費電力の一層の削減が可能となる。
【０２５５】
また、上記のマルチプロセッサ制御装置において、前記電力制御部は、前記第二のプロセッサへ供給する電力を抑制している間に、前記第二のプロセッサに対し割込み処理を要求する通知を受け取ると、前記第一のプロセッサへ前記割込み処理の要求を通知し、前記命令変換部は、前記電力制御部によって通知された前記割込み処理に対応する第二の命令コードを変換することが好ましい。
【０２５６】
この構成によれば、第二のプロセッサへ供給する電力が抑制されている間に、第二のプロセッサに対し割込み処理を要求する通知を受け取った場合でも、第二のプロセッサを一時的に起動させる機会を削減することができ、第二のプロセッサで割込み処理を行う場合に比べて消費電力を削減することができる。
【０２５７】
また、上記のマルチプロセッサ制御装置において、前記第一の命令コードと前記第二の命令コードとを格納するメモリをさらに備え、前記第一のプロセッサは、前記メモリに格納された前記第一の命令コードを実行し、前記第二のプロセッサは、前記メモリに格納された前記第二の命令コードを実行することが好ましい。
【０２５８】
この構成によれば、第二のプロセッサへ供給する電力が抑制されている間に、メモリに格納されている第二の命令コードが、第一のプロセッサが実行できる命令コードに変換されるので、第一のプロセッサは変換された命令コードを実行することができる。
【０２５９】
また、上記のマルチプロセッサ制御装置において、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換するための変換テーブルを保持する変換テーブル保持部をさらに備え、前記命令変換部は、前記変換テーブル保持部によって保持されている前記変換テーブルに基づき前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換することが好ましい。
【０２６０】
この構成によれば、変換テーブルに基づき第一のプロセッサが実行できる命令コードに第二の命令コードが変換されるので、第二の命令コードを第一のプロセッサが実行できる命令コードに容易に変換することができる。
【０２６１】
また、上記のマルチプロセッサ制御装置において、前記第一のプロセッサは、前記第一の命令コード及び前記変換した命令コードのいずれかを実行することにより生成される第一のデータを前記メモリへ格納し、前記第二のプロセッサは、前記第二の命令コードを実行することにより生成される第二のデータを前記メモリへ格納することが好ましい。
【０２６２】
この構成によれば、第一のプロセッサによって、第一の命令コード及び変換した命令コードのいずれかを実行することにより生成される第一のデータがメモリへ格納され、第二のプロセッサによって、第二の命令コードを実行することにより生成される第二のデータがメモリへ格納されるので、第一のプロセッサ又は第二のプロセッサの命令コードの実行に伴い生成されるデータを、後続する命令コードの実行に用いることが可能となる。
【０２６３】
また、上記のマルチプロセッサ制御装置において、第一のキャッシュメモリと、第二のキャッシュメモリとをさらに備え、前記第一のプロセッサは、前記メモリに格納された前記第一のデータを用いて前記第一の命令コードを実行することにより生成される新たなデータを第一のキャッシュメモリへ格納し、前記メモリに格納された前記第二のデータを用いて前記変換した命令コードを実行することにより生成される新たなデータを第一のキャッシュメモリへ格納し、前記第二のプロセッサは、前記メモリに格納された第二のデータを用いて前記第二の命令コードを実行することにより生成される新たなデータを第二のキャッシュメモリへ格納することが好ましい。
【０２６４】
この構成によれば、第一の命令コードを実行することにより生成される新たなデータが第一のキャッシュメモリへ格納され、第二のデータを用いて変換した命令コードを実行することにより生成される新たなデータが第一のキャッシュメモリへ格納され、第二の命令コードを実行することにより生成される新たなデータが第二のキャッシュメモリへ格納される。したがって、第一のプロセッサは第一のキャッシュメモリへアクセスし、第二のプロセッサは第二のキャッシュメモリへアクセスするので、メモリへアクセスする場合に比べて、高速にアクセスすることができる。
【０２６５】
また、上記のマルチプロセッサ制御装置において、前記第二のキャッシュメモリに格納されたデータと前記メモリに格納されたデータとの間に一貫性が保証されたデータの数を保持する有効データ数保持部をさらに備え、前記電力制御部は、前記第二のプロセッサへ供給する電力を抑制している間に、前記有効データ数保持部により保持された前記一貫性が保証されたデータの数が所定値以下になった場合、前記第二のキャッシュメモリへの電力の供給を抑制することが好ましい。
【０２６６】
この構成によれば、電力供給を抑制した第二のキャッシュメモリを利用する第二のプロセッサを再起動した場合でも、第二のキャッシュメモリへの電力の供給を抑制したことに起因する影響を少なくすることが可能となる。
【０２６７】
また、上記のマルチプロセッサ制御装置において、前記電力制御部によって前記第二のプロセッサへ供給する電力が抑制されている間に、前記第一のプロセッサが、前記変換した命令コードを実行することにより生成される新たなデータを前記メモリへ格納することに起因して、前記第二のキャッシュメモリに格納されたデータと前記メモリに格納されたデータとの間に一貫性が保証されなくなった場合、前記第二のプロセッサは、前記第二のキャッシュメモリに格納され、前記一貫性が保証されなくなった前記データを無効にすることが好ましい。
【０２６８】
この構成によれば、電力供給を抑制した第二のプロセッサを再起動した場合でも、第二のキャッシュメモリに格納されたデータのうち、メモリに格納されたデータと一貫性が保証されたデータのみ、第二のプロセッサは利用できるようになるので、再起動後の第二のプロセッサによる第二のキャッシュメモリの無効化処理を不要とすることができる。
【０２６９】
また、上記のマルチプロセッサ制御装置において、前記第一のキャッシュメモリへ格納されたデータと重複しないデータを格納するフルアソシアティブキャッシュメモリをさらに備え、前記第一のプロセッサによって前記第一のキャッシュメモリへ格納されたデータが更新され、かつ、前記第一のプロセッサによって前記第一のキャッシュメモリから利用されていないデータが破棄される場合、前記フルアソシアティブキャッシュメモリは、前記第一のキャッシュメモリから破棄されたデータを格納することが好ましい。
【０２７０】
この構成によれば、直前に破棄したデータに関して、第一のキャッシュメモリによるキャッシュミスが発生してもフルアソシアティブキャッシュメモリから該当するデータを取り出すことが可能となり、第一のキャッシュメモリによるキャッシュミスを補完することが可能となる。すなわち、第一のキャッシュメモリ及びフルアソシアティブキャッシュメモリの容量以内であれば、メモリへアクセスしなくてもよく、消費電力をさらに削減することができる。
【０２７１】
また、上記のマルチプロセッサ制御装置において、前記制御部は、前記第二のプロセッサにクロック信号を供給するか否かを制御し、前記命令変換部は、前記制御部によって前記第二のプロセッサへ供給するクロック信号が停止されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換することが好ましい。
【０２７２】
この構成によれば、第二のプロセッサに供給するクロック信号を停止している間に、第二のプロセッサで動作させるべき第二の命令コードが発生したとしても、第二のプロセッサを動作させることなく、第二の命令コードを第一のプロセッサが実行できる命令コードに変換し、変換した命令コードを第一のプロセッサで動作させることが可能となる。
【０２７３】
したがって、第二のプロセッサに供給するクロック信号を停止している間に、第二のプロセッサを一時的に動作させる機会を削減することができ、複数のプロセッサのうちの消費電力の大きいプロセッサを一時的に動作させることに起因する電力の消費を削減することができる。
【０２７４】
また、上記のマルチプロセッサ制御装置において、前記制御部は、前記第二のプロセッサを動作させるか待機させるかを制御し、前記命令変換部は、前記制御部によって前記第二のプロセッサが待機されている場合、前記第二の命令コードを前記第一のプロセッサが実行できる命令コードに変換することが好ましい。
【０２７５】
この構成によれば、第二のプロセッサを待機させている間に、第二のプロセッサで動作させるべき第二の命令コードが発生したとしても、第二のプロセッサを待機させたままで、第二の命令コードを第一のプロセッサが実行できる命令コードに変換し、変換した命令コードを第一のプロセッサで動作させることが可能となる。
【０２７６】
したがって、第二のプロセッサを待機させている間に、第二のプロセッサを一時的に動作させる機会を削減することができ、複数のプロセッサのうちの消費電力の大きいプロセッサを一時的に動作させることに起因する電力の消費を削減することができる。
【産業上の利用可能性】
【０２７７】
本発明にかかるマルチプロセッサ制御装置、マルチプロセッサ制御方法及びマルチプロセッサ制御回路は、例えばユーザの利用状態に応じて第一のプロセッサ及び第二のプロセッサのうちの少なくとも一方の動作を制御する機器、例えば携帯電話機などの携帯機器及び情報家電などの組み込み機器などへの適用が可能である。
【０２７８】
より具体的には、携帯電話機の待受け状態、又は情報家電の待機状態では、ユーザからの操作待ち及び電波状態の監視などを実施しつつ、消費電力の小さいプロセッサのみを動作させ、消費電力の大きいプロセッサへの電力を抑制する。一方、ユーザが携帯電話機又は情報家電を操作している状態では、ブラウザ及び動画表示など、高性能なプロセッサの実行を必要とするので、消費電力の小さいプロセッサ及び消費電力の大きいプロセッサを並行して動作させる。本発明にかかるマルチプロセッサ制御装置、マルチプロセッサ制御方法及びマルチプロセッサ制御回路は、このような電力制御を行う携帯電話機及び組込み機器などに好適である。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2008152790.tif 000022
【図２】
2008152790.tif 000023
【図３】
2008152790.tif 000024
【図４】
2008152790.tif 000025
【図５】
2008152790.tif 000026
【図６】
2008152790.tif 000027
【図７】
2008152790.tif 000028
【図８】
2008152790.tif 000029
【図９】
2008152790.tif 000030
【図１０】
2008152790.tif 000031
【図１１】
2008152790.tif 000032
【図１２】
2008152790.tif 000033
【図１３】
2008152790.tif 000034
【図１４】
2008152790.tif 000035
【図１５】
2008152790.tif 000036
【図１６】
2008152790.tif 000037
【図１７】
2008152790.tif 000038
【図１８】
2008152790.tif 000039
【図１９】
2008152790.tif 000040
【国際調査報告】
2008152790.tif 000041
2008152790.tif 000042
2008152790.tif 000043
2008152790.tif 000044
2008152790.tif 000045
2008152790.tif 000046
2008152790.tif 000047