(57)【特許請求の範囲】
【請求項１】
複数のプロセッサコア上で動作する複数のオペレーティングシステム間の共有リソースの排他制御を行なうマルチプロセッサ装置であって、
前記複数のプロセッサコアは、それぞれ異なる動作周波数で動作可能であり、
前記複数のプロセッサコアのそれぞれに対応して設けられ、電源電圧の変更動作の禁止期間が設定される複数のタイマと、
前記複数のタイマのいずれかが前記禁止期間を経過したときに、当該タイマに対応するプロセッサコアの動作周波数の変更の要否を判定する第１の判定手段と、
前記第１の判定手段によって動作周波数の変更が必要と判定されたときに、前記複数のプロセッサコアに供給する電源電圧の変更の要否を判定する第２の判定手段と、
前記第１の判定手段によって動作周波数の変更が必要と判定されたときに、当該プロセッサコアに供給するクロックの周波数を変更する動作周波数変更手段と、
前記第２の判定手段によって電源電圧の変更が必要と判定されたときに、前記複数のプロセッサコアに供給する電源電圧を変更する電源電圧変更手段とを含む、マルチプロセッサ装置。
【請求項２】
前記複数のタイマは、それぞれ異なるカウンタ値が設定されてからカウントダウンを開始し、前記複数のタイマのいずれかが０となったときに全てのタイマのカウントダウンが停止する、請求項１記載のマルチプロセッサ装置。
【請求項３】
前記電源電圧変更手段は、前記複数のプロセッサコアに供給されるクロックの中で最も動作周波数が高いクロックに対応する電源電圧を前記複数のプロセッサコアに供給する、請求項１または２記載のマルチプロセッサ装置。
【請求項４】
前記動作周波数変更手段は、前記第１の判定手段によって当該プロセッサコアの動作周波数を上げると判定された場合に、前記電源電圧変更手段によって電源電圧が上昇された後に動作周波数を上げる、請求項１〜３のいずれかに記載のマルチプロセッサ装置。
【請求項５】
前記動作周波数変更手段は、前記第１の判定手段によって当該プロセッサコアの動作周波数を下げると判定された場合に、前記複数のタイマのカウンタ値に関係なく動作周波数を下げる、請求項１〜３のいずれかに記載のマルチプロセッサ装置。
【請求項６】
複数のプロセッサコア上で動作する複数のオペレーティングシステム間の共有リソースの排他制御を行なうマルチプロセッサ装置であって、
前記複数のプロセッサコアは、それぞれ異なる動作周波数で動作可能であり、
前記複数のオペレーティングシステムのそれぞれに対応して設けられ、電源電圧の変更動作の禁止期間が設定される複数のタイマと、
前記複数のタイマのいずれかが前記禁止期間を経過したときに、当該タイマに対応するオペレーティングシステムが動作するプロセッサコアの動作周波数の変更の要否を判定する第１の判定手段と、
前記第１の判定手段によって動作周波数の変更が必要と判定されたときに、前記複数のプロセッサコアに供給する電源電圧の変更の要否を判定する第２の判定手段と、
前記第１の判定手段によって動作周波数の変更が必要と判定されたときに、当該プロセッサコアに供給するクロックの周波数を変更する動作周波数変更手段と、
前記第２の判定手段によって電源電圧の変更が必要と判定されたときに、前記複数のプロセッサコアに供給する電源電圧を変更する電源電圧変更手段とを含む、マルチプロセッサ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコア（マルチプロセッサ）上で複数のＯＳ（Operating System）が動作する環境において共有リソースの排他制御を行なう技術に関し、特に、ＯＳ間ロックを使用せずに共有リソースの排他制御を行なうマルチプロセッサ装置に関する。
【背景技術】
【０００２】
近年、マルチメディア処理や高精細画像処理などのさまざまな分野で、プロセッサ性能の向上に対する要求が高まっている。しかし、現在のＬＳＩ（Large Scale Integrated circuit）製造技術ではデバイスの高速化にも限度がある。そこで、並列処理が注目を浴びており、マルチプロセッサシステムに関する研究、開発が盛んに行なわれている。
【０００３】
一般に、マルチコア（マルチプロセッサ）上で複数のＯＳが動作する環境においては、ＯＳ間のロックによって、各ＯＳに共有されるリソースへのアクセスの排他制御が行なわれている。これに関連する技術として、下記の特許文献１〜３に開示された発明および非特許文献１に開示された技術がある。
【０００４】
特許文献１は、複数のＣＰＵを集積するプロセッサシステムにおいて、オーバヘッドが少なく省電力状態を使用することができる半導体装置を提供することを目的とする。複数コアプロセッサシステムにおいて、パッケージ上で１つまたは複数のＯＳとアプリケーションプログラムを実行させ、それらの実行時に１つまたは複数のＣＰＵをその動作時の消費電力が低い省電力状態に移行させるクロック停止機構に加えて、チップ内において、クロック停止機構により省電力状態に移行させた１つまたは複数のＣＰＵの省電力状態を解除するクロック停止解除機構と、パッケージ内のチップ間において、クロック停止機構により省電力状態に移行させた１つまたは複数のＣＰＵの省電力状態を解除する割込み制御回路とを備える。
【０００５】
特許文献２は、消費電力を大きく削減することが可能なマルチプロセッサシステムを提供することを目的とする。プロセッサＡは、プログラムＡの処理時間見積値ＴａとプログラムＢの処理時間見積値Ｔｂとの比率に応じて、クロック周波数制御部を制御してプロセッサＡに入力されるクロックの周波数を変更する。また、プロセッサＡは、プロセッサＡに入力されるクロックの周波数に応じて可変電源を制御して、プロセッサＡに供給される電源電圧を変更する。したがって、プロセッサＡの消費電力を大きく削減することが可能となる。
【０００６】
特許文献３は、マルチコアプロセッサの構成を変更するための方法及び装置が開示されている。一実施の形態では、スロットルモジュール（又はスロットルロジック）が、現在実行されているプログラムに存在する並列性の量を求めることができ、さまざまなコアにおけるそのプログラムのスレッドの実行を変更することができる。並列性の量が多い場合には、少ない電力を消費するように構成されたコアで多くの量のスレッドを実行するようにプロセッサを構成することができる。並列性の量が低い場合には、より大きなスカラー性能を得るように構成されたコアで少ない量のスレッドを実行するようにプロセッサを構成することができる。
【０００７】
非特許文献１は、各ＯＳに共有されるリソースである共有メモリへのアクセスを、プロセッサの同期命令を使用して排他制御することを開示している。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１０−１４０３１９号公報
【特許文献２】特開２００２−２１５５９９号公報
【特許文献３】特表２００８−５１３９１２号公報
【非特許文献】
【０００９】
【非特許文献１】菅井、遠藤、山口、近藤、「シングルチップマルチプロセッサ上のハイブリッドＯＳ環境の実現−ＯＳ間インタフェースの実装−」、情報処理学会第６６回全国大会２Ｄ−６、２００４年３月
【発明の概要】
【発明が解決しようとする課題】
【００１０】
従来のＯＳ間ロックを用いたＯＳ間リソース排他制御方式においては、ＯＳ数の増加に伴ってロック取得時間が増加するため、システム全体の処理効率が低下するといった問題点があった。
【００１１】
また、ＯＳ間ロックのために使用されるメモリ領域に対して複数のプロセッサのアクセスが集中するため、バス性能が低下するといった問題点もあった。
【００１２】
本発明は、上記問題点を解決するためになされたものであり、その目的は、ＯＳ間によるロック取得を行なう必要がなく、処理効率を向上させることが可能なマルチプロセッサ装置を提供することである。
【課題を解決するための手段】
【００１３】
本発明のある局面に従えば、複数のプロセッサコア上で動作する複数のオペレーティングシステム間の共有リソースの排他制御を行なうマルチプロセッサ装置であって、複数のプロセッサコアは、それぞれ異なる動作周波数で動作可能であり、複数のプロセッサコアのそれぞれに対応して設けられ、電源電圧の変更動作の禁止期間が設定される複数のタイマと、複数のタイマのいずれかが禁止期間を経過したときに、当該タイマに対応するプロセッサコアの動作周波数の変更の要否を判定する第１の判定手段と、第１の判定手段によって動作周波数の変更が必要と判定されたときに、複数のプロセッサコアに供給する電源電圧の変更の要否を判定する第２の判定手段と、第１の判定手段によって動作周波数の変更が必要と判定されたときに、当該プロセッサコアに供給するクロックの周波数を変更する動作周波数変更手段と、第２の判定手段によって電源電圧の変更が必要と判定されたときに、複数のプロセッサコアに供給する電源電圧を変更する電源電圧変更手段とを含む。
【００１４】
好ましくは、複数のタイマは、それぞれ異なるカウンタ値が設定されてからカウントダウンを開始し、複数のタイマのいずれかが０となったときに全てのタイマのカウントダウンが停止する。
【００１５】
好ましくは、電源電圧変更手段は、複数のプロセッサコアに供給されるクロックの中で最も動作周波数が高いクロックに対応する電源電圧を複数のプロセッサコアに供給する。
【００１６】
好ましくは、動作周波数変更手段は、第１の判定手段によって当該プロセッサコアの動作周波数を上げると判定された場合に、電源電圧変更手段によって電源電圧が上昇された後に動作周波数を上げる。
【００１７】
好ましくは、動作周波数変更手段は、第１の判定手段によって当該プロセッサコアの動作周波数を下げると判定された場合に、複数のタイマのカウンタ値に関係なく動作周波数を下げる。
【００１８】
本発明の別の局面に従えば、複数のプロセッサコア上で動作する複数のオペレーティングシステム間の共有リソースの排他制御を行なうマルチプロセッサ装置であって、複数のプロセッサコアは、それぞれ異なる動作周波数で動作可能であり、複数のオペレーティングシステムのそれぞれに対応して設けられ、電源電圧の変更動作の禁止期間が設定される複数のタイマと、複数のタイマのいずれかが禁止期間を経過したときに、当該タイマに対応するオペレーティングシステムが動作するプロセッサコアの動作周波数の変更の要否を判定する第１の判定手段と、第１の判定手段によって動作周波数の変更が必要と判定されたときに、複数のプロセッサコアに供給する電源電圧の変更の要否を判定する第２の判定手段と、第１の判定手段によって動作周波数の変更が必要と判定されたときに、当該プロセッサコアに供給するクロックの周波数を変更する動作周波数変更手段と、第２の判定手段によって電源電圧の変更が必要と判定されたときに、複数のプロセッサコアに供給する電源電圧を変更する電源電圧変更手段とを含む。
【発明の効果】
【００１９】
複数のタイマのいずれかが禁止期間を経過したときに、第１の判定手段が、当該タイマに対応するプロセッサコアの動作周波数の変更の要否を判定し、第１の判定手段によって動作周波数の変更が必要と判定されたときに、第２の判定手段が、複数のプロセッサコアに供給する電源電圧の変更の要否を判定する。したがって、動作周波数および電源電圧の変更を排他的に行なうことができるため、ＯＳ間によるロック取得を行なう必要がなく、処理効率を向上させることが可能となる。
【００２０】
また、複数のタイマは、それぞれ異なるカウンタ値が設定されてからカウントダウンを開始するので、カウンタ値が“０”となるタイマが１つだけとなり、そのタイマに対応するプロセッサコアの動作周波数の変更の必要性と、電源電圧の変更の必要性との判断を排他的に行なうことが可能となる。
【００２１】
また、電源電圧変更手段は、複数のプロセッサコアに供給されるクロックの中で最も動作周波数が高いクロックに対応する電源電圧を複数のプロセッサコアに供給するので、最適な電源電圧を供給することが可能となる。
【００２２】
また、動作周波数変更手段は、第１の判定手段によって当該プロセッサコアの動作周波数を上げると判定された場合に、電源電圧変更手段によって電源電圧が上昇された後に動作周波数を上げるので、プロセッサコアの誤動作を防止することが可能となる。
【００２３】
また、動作周波数変更手段は、第１の判定手段によって当該プロセッサコアの動作周波数を下げると判定された場合に、複数のタイマのカウンタ値に関係なく動作周波数を下げるので、消費電力の削減を図ることが可能となる。
【図面の簡単な説明】
【００２４】
【図１】本発明の第１の実施の形態におけるマルチプロセッサ装置の構成例を示すブロック図である。
【図２】周波数電圧対応表の一例を示す図である。
【図３】本発明の第１の実施の形態におけるマルチプロセッサ装置の動作を説明するためのフローチャートである。
【図４】本発明の第１の実施の形態におけるマルチプロセッサ装置の電源電圧を上昇させる場合の具体例を示す図である。
【図５】本発明の第１の実施の形態におけるマルチプロセッサ装置の電源電圧下降時の動作を説明するためのフローチャートである。
【図６】本発明の第１の実施の形態におけるマルチプロセッサ装置の電源電圧を下降させる場合の具体例を示す図である。
【発明を実施するための形態】
【００２５】
（第１の実施の形態）
図１は、本発明の第１の実施の形態におけるマルチプロセッサ装置の構成例を示すブロック図である。このマルチプロセッサ装置は、複数のＣＰＵ（Central Processing Unit）コア＃０〜＃３（１０〜１３）と、ＣＰＵコア＃０〜＃１（１０〜１１）上で動作するＯＳ＃Ａ（１４）と、ＣＰＵコア＃２〜＃３（１２〜１３）上で動作するＯＳ＃Ｂ（１５）と、ＣＰＵコア＃０〜＃３（１０〜１３）のそれぞれに対応して設けられるクロック生成部＃０〜＃３（１６〜１９）と、電源電圧変更部２０と、システムクロック値取得部２１と、ＣＰＵコア＃０〜＃３（１０〜１３）のそれぞれに対応して設けられるタイマ＃０〜＃３（２２〜２５）と、タイマクロック生成部２６と、タイマカウンタ値取得部２７とを含む。
【００２６】
ＣＰＵコア＃０〜＃３（１０〜１３）は、クロック生成部＃０〜＃３（１６〜１９）のそれぞれから出力されるクロックを受けて動作する。また、ＣＰＵコア＃０〜＃３（１０〜１３）は、電源電圧変更部２０から出力される電源電圧を受けて動作する。
【００２７】
クロック生成部＃０〜＃３（１６〜１９）は、ＣＰＵコア＃０〜＃３（１０〜１３）からの指示、またはＯＳ＃Ａ（１４）およびＯＳ＃Ｂ（１５）からの指示に応じてクロック周波数を変更可能である。したがって、ＣＰＵコア＃０〜＃３（１０〜１３）は、それぞれ異なるクロック周波数で動作可能である。
【００２８】
電源電圧変更部２０は、ＯＳ＃Ａ（１４）またはＯＳ＃Ｂ（１５）からの指示に応じて、ＣＰＵコア＃０〜＃３（１０〜１３）に供給する電源電圧を変更する。なお、ＣＰＵ＃０〜＃３（１０〜１３）のそれぞれには、同じ電源電圧が与えられる。
【００２９】
システムクロック値取得部２１は、ＯＳ＃Ａ（１４）またはＯＳ＃Ｂ（１５）からの指示に応じて、クロック生成部＃０〜＃３（１６〜１９）から出力されるクロックの周波数（システムクロック値）を取得して、ＯＳ＃Ａ（１４）またはＯＳ＃Ｂ（１５）に出力する。
【００３０】
タイマ＃０〜＃３（２２〜２５）は、ＣＰＵコア＃０〜＃３（１０〜１３）のそれぞれに対応して設けられている。タイマ＃０〜＃３（２２〜２５）には、電源電圧の変更動作を禁止する期間が設定され、タイマクロック生成部２６から出力されるタイマクロックに同期してカウントダウンを行なう。カウンタ値が“０”となったタイマは、対応するＣＰＵコアに割り込み要求を出力する。
【００３１】
電源電圧の変更動作を禁止する期間として、たとえば対応するＣＰＵコアのクロック周波数の変更の要否を判定する周期が設定される。タイマ＃０〜＃３（２２〜２５）に設定されるカウンタ値は任意である。ここで重要なのは、タイマ＃０〜＃３（２２〜２５）に設定されるカウンタ値がそれぞれ異なる値であり、必ずカウンタ値が“０”となるタイマが１つだけであるということである。
【００３２】
タイマクロック生成部２６は、タイマ＃０〜＃３（２２〜２５）に供給するタイマクロックを生成する。なお、タイマ＃０〜＃３（２２〜２５）には、同じタイマクロックが供給される。
【００３３】
タイマカウンタ値取得部２７は、タイマ＃０〜＃３（２２〜２５）のカウンタ値を取得し、カウンタ値が“０”となっているタイマがある場合には、タイマ＃０〜＃３（２２〜２５の全てのカウントダウンを停止する。また、タイマカウンタ値取得部２７は、ＯＳ＃Ａ（１４）またはＯＳ＃Ｂ（１５）からの指示に応じてタイマ＃０〜＃３（２２〜２５）のカウンタ値を取得して、ＯＳ＃Ａ（１４）またはＯＳ＃Ｂ（１５）に出力する。
【００３４】
図２は、周波数電圧対応表の一例を示す図である。この周波数電圧対応表は、ＣＰＵコア＃０〜＃３（１０〜１３）の中の最大動作周波数と、ＣＰＵ＃０〜＃３（１０〜１３）に供給する電源電圧との対応を示している。
【００３５】
最大動作周波数が１５０ＭＨｚであれば、ＣＰＵコア＃０〜＃３（１０〜１３）の電源電圧として１．０Ｖが設定される。最大動作周波数が３００ＭＨｚであれば、ＣＰＵコア＃０〜＃３（１０〜１３）の電源電圧として１．２Ｖが設定される。また、最大動作周波数が６００ＭＨｚであれば、ＣＰＵコア＃０〜＃３（１０〜１３）の電源電圧として１．４Ｖが設定される。
【００３６】
この周波数電圧対応表は、ＯＳ＃Ａ（１４）およびＯＳ＃Ｂ（１５）内に設けられていてもよいし、電源電圧変更部２０またはシステムクロック値取得部２１内に設けられていてもよい。
【００３７】
図３は、本発明の第１の実施の形態におけるマルチプロセッサ装置の動作を説明するためのフローチャートである。まず、タイマ＃０〜＃３（２２〜２５）にカウンタ値が設定され、タイマ＃０〜＃３（２２〜２５）がカウントダウンを開始する（Ｓ１１）。たとえば、ＣＰＵコア＃０〜＃３（１０〜１３）がタイマ＃０〜＃３（２２〜２５）のそれぞれにカウンタ値を設定し、同じタイミングでカウントダウンを開始させる。
【００３８】
また、ＯＳ＃Ａ（１４）およびＯＳ＃Ｂ（１５）がタイマ＃０〜＃３（２２〜２５）のカウンタ値を設定するようにしてもよい。なお、上述のように、タイマ＃０〜＃３（２２〜２５）に設定されるカウンタ値はそれぞれ異なる値であり、必ずカウンタ値が“０”となるタイマが１つだけとなるようにカウントダウンが開始される。
【００３９】
次に、タイマカウンタ値取得部２７は、タイマ＃０〜＃３（２２〜２５）のカウンタ値を取得し、カウンタ値が“０”のタイマがあるか否かを判定する（Ｓ１２）。カウンタ値が“０”のタイマがなければ（Ｓ１２，Ｎｏ）、ステップＳ１２の処理が繰り返される。
【００４０】
また、カウンタ値が“０”のタイマがあれば（Ｓ１２，Ｙｅｓ）、タイマカウンタ値取得部２７は、タイマ＃０〜＃３（２２〜２５）の全てのカウントダウンを停止する（Ｓ１３）。このとき、カウンタ値が“０”となっているタイマが、対応するＣＰＵコアに割り込み要求を出力する。
【００４１】
ＣＰＵコア＃０〜＃３（１０〜１３）のいずれかが割り込み要求を受けると、そのＣＰＵコア上で動作するＯＳ＃Ａ（１４）またはＯＳ＃Ｂ（１５）が割り込み要求を受け付け、対応のＣＰＵコアの動作周波数変更の必要性を判断する（Ｓ１４）。たとえば、ＯＳ＃Ａ（１４）またはＯＳ＃Ｂ（１５）が、そのＣＰＵコアの処理負荷を管理しており、処理負荷が小さくてクロック周波数が高すぎる場合にはクロック周波数を低くすると判断し、処理負荷が大きくてクロック周波数が低すぎる場合にはクロック周波数を高くすると判断する。
【００４２】
対応のＣＰＵコアの周波数変更の必要性がない場合には（Ｓ１５，Ｎｏ）、ステップＳ１９に処理が進む。また、対応のＣＰＵコアの周波数変更の必要性がある場合には（Ｓ１５，Ｙｅｓ）、ＯＳ＃Ａ（１４）またはＯＳ＃Ｂ（１５）が電源電圧を変更する必要性があるか否かを判定する（Ｓ１６）。
【００４３】
このとき、ＯＳ＃Ａ（１４）またはＯＳ＃Ｂ（１５）は、システムクロック値取得部２１からＣＰＵコア＃０〜＃３（１０〜１３）のクロック周波数を取得し、クロック周波数を変更した後の最大動作周波数を求める。そして、図２に示す周波数電圧対応表を参照して、最大動作周波数に対応する電源電圧を抽出し、その電源電圧と現在の電源電圧とを比較する。電源電圧が異なれば電源電圧の変更の必要性があると判断し、電源電圧が同じであれば電源電圧の変更の必要性がないと判断する。
【００４４】
電源電圧を変更する必要性がない場合には（Ｓ１６，Ｎｏ）、ステップＳ１８に処理が進む。また、電源電圧を変更する必要性がある場合には（Ｓ１６，Ｙｅｓ）、ＯＳ＃Ａ（１４）またはＯＳ＃Ｂ（１５）が電源電圧変更部２０に対して電源電圧の変更を指示し（Ｓ１７）、ステップＳ１８に処理が進む。
【００４５】
ステップＳ１８において、ＯＳ＃Ａ（１４）またはＯＳ＃Ｂ（１５）は、対応のＣＰＵコアの動作周波数を変更して、ステップＳ１９に処理が進む。
【００４６】
ステップＳ１９において、ＯＳ＃Ａ（１４）またはＯＳ＃Ｂ（１５）は、カウンタ値が“０”となっているタイマのカウンタ値を更新する。そして、タイマ＃０〜＃３（２２〜２５）の全てのカウントダウンを再開させ（Ｓ２０）、ステップＳ１２に戻って以降の処理を繰り返す。
【００４７】
図４は、本発明の第１の実施の形態におけるマルチプロセッサ装置の電源電圧を上昇させる場合の具体例を示す図である。図４に示すように、クロック生成部＃０〜＃３（１６〜１９）のそれぞれは、３００ＭＨｚ、３００ＭＨｚ、３００ＭＨｚ、１５０ＭＨｚのクロックを出力するように設定されている。また、タイマ＃０〜＃３（２２〜２５）のそれぞれには、５００、１０００、２０００、３０００のカウンタ値が設定されている。また、電源電圧変更部２０は、ＣＰＵコア＃０〜＃３（１０〜１３）に１．２Ｖの電源電圧を供給している。
【００４８】
タイマ＃０〜＃３（２２〜２５）のカウントダウンによって、最初にタイマ＃０（２２）のカウンタ値が“０”となり、タイマカウンタ値取得部２７は、タイマ＃０〜＃３（２２〜２５）の全てのカウントダウンを停止する。このとき、タイマ＃０（２２）は、ＣＰＵコア＃０（１０）に対して割り込み要求を出力する。
【００４９】
ＣＰＵコア＃０（１０）上で動作するＯＳ＃Ａ（１４）が割り込み要求を受け付けると、ＣＰＵコア＃０（１０）の動作周波数の変更の必要性を判断する。ここで、ＯＳ＃Ａ（１４）が、ＣＰＵコア＃０（１０）の動作周波数を３００ＭＨｚから６００ＭＨｚに変更する必要性があると判断すると、システムクロック値取得部２１から全てのＣＰＵコアのクロック周波数を取得する。
【００５０】
そして、周波数電圧対応表を参照して、電源電圧の変更の必要性を判断する。このとき、ＣＰＵコア＃０（１０）の動作周波数を６００ＭＨｚに変更するため、ＯＳ＃Ａ（１４）は、電源電圧を１．２Ｖから１．４Ｖに変更する必要があると判断する。
【００５１】
ＯＳ＃Ａ（１４）は、電源電圧変更部２０に対して電源電圧を１．４Ｖに変更するよう指示した後、ＣＰＵコア＃０（１０）にクロックを供給するクロック生成部＃０（１６）にクロック周波数を６００ＭＨｚに変更するよう指示する。そして、タイマ＃０（２２）のカウンタ値を更新して、タイマ＃０〜＃３（２２〜２５）のカウントダウンを再開するようタイマカウンタ値取得部２７に指示する。
【００５２】
図５は、本発明の第１の実施の形態におけるマルチプロセッサ装置の電源電圧下降時の動作を説明するためのフローチャートである。まず、タイマ＃０〜＃３（２２〜２５）にカウンタ値が設定され、タイマ＃０〜＃３（２２〜２５）がカウントダウンを開始する（Ｓ３１）。
【００５３】
次に、ＯＳ＃Ａ（１４）およびＯＳ＃Ｂ（１５）は、動作周波数の変更の必要性があるＣＰＵコアがあるか否かを判断する（Ｓ３２）。動作周波数の変更の必要性があるＣＰＵコアがなければ（Ｓ３２，Ｎｏ）、ステップＳ３２の処理が繰り返される。
【００５４】
また、動作周波数の変更の必要性があるＣＰＵコアがあれば（Ｓ３２，Ｙｅｓ）、タイマ＃０〜＃３（２２〜２５）のカウンタ値に関係なく、ＯＳ＃Ａ（１４）またはＯＳ＃Ｂ（１５）は、対応のＣＰＵコアの動作周波数を変更する（Ｓ３３）。
【００５５】
次に、タイマカウンタ値取得部２７は、タイマ＃０〜＃３（２２〜２５）のカウンタ値を取得し、カウンタ値が“０”のタイマがあるか否かを判定する（Ｓ３４）。カウンタ値が“０”のタイマがあれば（Ｓ３４，Ｙｅｓ）、タイマ＃０〜＃３（２２〜２５）の全てのカウントダウンを停止して処理を終了する。
【００５６】
また、カウンタ値が“０”のタイマがなければ（Ｓ３４，Ｎｏ）、ＯＳ＃Ａ（１４）またはＯＳ＃Ｂ（１５）が電源電圧を下げる必要性があるか否かを判定する（Ｓ３５）。電源電圧を下げる必要性がない場合には（Ｓ３５，Ｎｏ）、ステップＳ３２に戻って以降の処理を繰り返す。また、電源電圧を下げる必要性がある場合には（Ｓ３５，Ｙｅｓ）、ＯＳ＃Ａ（１４）またはＯＳ＃Ｂ（１５）が電源電圧変更部２０に対して電源電圧の下降を指示し（Ｓ３６）、ステップＳ３２に戻って以降の処理を繰り返す。
【００５７】
図６は、本発明の第１の実施の形態におけるマルチプロセッサ装置の電源電圧を下降させる場合の具体例を示す図である。図６に示すように、クロック生成部＃０〜＃３（１６〜１９）のそれぞれは、６００ＭＨｚ、３００ＭＨｚ、３００ＭＨｚ、１５０ＭＨｚのクロックを出力するように設定されている。また、タイマ＃０〜＃３（２２〜２５）のそれぞれには、５００、１０００、２０００、３０００のカウンタ値が設定されている。また、電源電圧変更部２０は、ＣＰＵコア＃０〜＃３（１０〜１３）に１．４Ｖの電源電圧を供給している。
【００５８】
ここで、ＣＰＵコア＃０（１０）上で動作するＯＳ＃Ａ（１４）が、ＣＰＵコア＃０（１０）の動作周波数の変更の必要性を判断するとする。このとき、ＯＳ＃Ａ（１４）が、ＣＰＵコア＃０（１０）の動作周波数を６００ＭＨｚから３００ＭＨｚに変更する必要性があると判断すると、クロック生成部＃０（１６）にクロック周波数を３００ＭＨｚに変更するよう指示する。
【００５９】
次に、ＯＳ＃Ａ（１４）は、タイマカウンタ値取得部２７からタイマ＃０〜＃３（２２〜２５）のカウンタ値を取得し、カウンタ値が“０”となっているタイマがあるか否かを判定する。カウンタ値が“０”となっているタイマがあれば、そのまま処理を終了する。この場合、図３に示すステップＳ１３以降の処理が行なわれるため、電源電圧の変更の必要性を判断する必要はない。
【００６０】
また、カウンタ値が“０”となっているタイマがなければ、ＯＳ＃Ａ（１４）は、周波数電圧対応表を参照して、電源電圧の変更の必要性を判断する。このとき、ＣＰＵコア＃０（１０）の動作周波数を３００ＭＨｚに変更するため、ＯＳ＃Ａ（１４）は、電源電圧を１．４Ｖから１．２Ｖに変更する必要があると判断し、電源電圧変更部２０に対して電源電圧を１．２Ｖに変更するよう指示する。
【００６１】
以上説明したように、本実施の形態におけるマルチプロセッサ装置によれば、タイマ＃０〜＃３（２２〜２５）にそれぞれ異なるカウンタ値を設定し、カウンタ値が“０”となったタイマに対応するＣＰＵコアの動作周波数の変更の必要性および電源電圧の変更の必要性を判断するようにした。したがって、共有リソースである電源電圧を排他的に制御することができ、ＯＳ間によるロック取得を行なう必要がなくなり、処理効率を向上させることが可能となった。
【００６２】
また、ＯＳ間によるロックの取得が不要となるため、ＯＳ間ロックで使用されるメモリ領域へのアクセスが集中するといった不具合が発生せず、バス性能の低下を防止することが可能となった。
【００６３】
（第２の実施の形態）
本発明の第１の実施の形態におけるマルチプロセッサ装置は、ＣＰＵコア＃０〜＃３（１０〜１３）のそれぞれに対応してタイマ＃０〜＃３（２２〜２５）が設けられていた。それに対して、本発明の第２の実施の形態におけるマルチプロセッサ装置は、ＯＳ＃Ａ（１４）およびＯＳ＃Ｂ（１５）のそれぞれに対応してタイマが設けられる構成を有する。
【００６４】
たとえば、タイマ＃１（２３）およびタイマ＃３（２５）を削除し、ＯＳ＃Ａ（１４）にはタイマ＃０（２２）が対応するようにし、ＯＳ＃Ｂ（１５）にはタイマ＃２（２４）が対応するようにする。
【００６５】
そして、タイマ＃０（２２）のカウンタ値が“０”となったときに、ＯＳ＃Ａ（１４）がＣＰＵコア＃０（１０）およびＣＰＵコア＃１（１１）の動作周波数の変更の必要性を判断する。また、タイマ＃２（２４）のカウンタ値が“０”となったときに、ＯＳ＃Ｂ（１５）がＣＰＵコア＃２（１２）およびＣＰＵコア＃３（１３）の動作周波数の変更の必要性を判断する。それ以降の動作については、第１の実施の形態において説明したものと同様である。
【００６６】
以上説明したように、本実施の形態におけるマルチプロセッサ装置によれば、ＯＳのそれぞれに対応してタイマを設けるようにしたので、第１の実施の形態において説明した効果に加えて、ハードウェア構成および排他制御の処理をさらに簡略化することが可能となった。
【００６７】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００６８】
１０〜１３  ＣＰＵコア、１４，１５  ＯＳ、１６〜１９  クロック生成部、２０  電源電圧変更部、２１  システムクロック値取得部、２２〜２５  タイマ、２６  タイマクロック生成部、２７  タイマカウンタ値取得部。
【図１】
0005568491.tif 000002
【図２】
0005568491.tif 000003
【図３】
0005568491.tif 000004
【図４】
0005568491.tif 000005
【図５】
0005568491.tif 000006
【図６】
0005568491.tif 000007