(57)【要約】【課題】マルチコアプロセッサ内のメモリ領域を有効に活用し、高速にメモリ領域にアクセスする。【解決手段】マルチコアプロセッサにおけるコアメモリの有効活用方法であって、複数のコア（１２１殻２４）の各々に付随するコア付随メモリ（１２６〜１２９）を備えたマルチコアプロセッサ（１２）内の複数のコアの状態を制御部（１１）により監視し、状態が所定条件を満たすようになったコアを制御部により休止状態にし、休止状態になったコアに付随するコア付随メモリを休止状態以外のコアにより使用可能にするというステップを備える。【選択図】図６
2009037403.tif 000002
【特許請求の範囲】
【請求項１】
複数のコアと該コアの各々に付随するコア付随メモリとを備えたマルチコアプロセッサ内の前記複数のコアの状態を制御部により監視し、
前記状態が所定条件を満たすようになったコアを前記制御部により休止状態にし、
前記休止状態になったコアに付随するコア付随メモリを前記休止状態以外のコアにより使用可能にする、
というステップを備えることを特徴とするマルチコアプロセッサにおけるコアのメモリ領域の有効活用方法。
【請求項２】
前記所定条件はコアの負荷率が所定閾値以下となる条件である請求項１記載のマルチコアプロセッサにおけるコアのメモリ領域の有効活用方法。
【請求項３】
前記休止状態となったコアに付随するコア付随メモリの空きメモリ領域を、前記コアの各々のメモリ領域を管理するコア共有メモリに登録し、
前記コア共有メモリに登録された空きメモリ領域が前記休止状態以外のいずれかのコアにより使用中か否かを識別可能にし、
前記コア共有メモリに登録された空きメモリ領域が前記休止状態以外のいずれかのコアにより使用中でない場合に前記休止状態以外のコアの一つにより使用可能にする、
というステップを備える請求項１又は２記載のマルチコアプロセッサにおけるコアのメモリ領域の有効活用方法。
【請求項４】
前記コア共有メモリに登録された空きメモリ領域が前記休止状態以外のいずれかのコアにより使用中か否かを識別可能にするステップは、前記コアの各々に付随するコア付随メモリ毎に前記空きメモリ領域を所定サイズのブロック毎に使用中か否かを識別可能にし、
前記コア共有メモリに登録された空きメモリ領域が前記休止状態以外のいずれかのコアにより使用中でない場合に前記所定サイズのブロック毎に前記休止状態以外のコアの一つにより使用可能にする、
というステップを備える請求項３記載のマルチコアプロセッサにおけるコアのメモリ領域の有効活用方法。
【請求項５】
前記コアの各々に付随するコア付随メモリ毎に前記空きメモリ領域を所定サイズのブロック毎に使用中か否かを識別可能にするステップは、前記所定サイズのブロック毎に使用中か否かを表すフラグを前記制御部の制御により立てること及び、使用中の場合は使用中のコアを特定する識別子を前記制御部の制御により入力することを含む請求項４記載のマルチコアプロセッサにおけるコアのメモリ領域の有効活用方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコアを備えたマルチコアプロセッサに関し、特に休止したコアに含まれているコア付随メモリを他のコアで有効に使用することにより、マルチコアプロセッサにおけるメモリの有効利用を図ったマルチコアプロセッサにおけるコアメモリの有効活用方法に関する。本明細書においては、マルチコアプロセッサには、複数のコアを備えたデジタルシグナルプロセッサ（DSP）も含まれるものとする。
【背景技術】
【０００２】
図１は本発明の背景を説明するマルチコアを備えたプロセッサの構成例を示すブロック図である。図１において、１１は制御部、１２はプロセッサ、１３は外部メモリ、１２１〜１２４はコア、１２５はコア共有メモリ、１２６〜１２９はそれぞれコア１２１〜１２４に付随するコア付随メモリである。
【０００３】
プロセッサ１２は端末内に存在する。コア１２１〜１２４はそれぞれ演算ユニットであって、コアによる演算の結果はコア付随メモリ１２６〜１２９に格納される。コア１２１とコア付随メモリ１２６とで第１プロセッサが構成されており、コア１２２とコア付随メモリ１２７とで第２プロセッサが構成されており、コア１２３とコア付随メモリ１２８とで第３プロセッサが構成されており、コア１２４とコア付随メモリ１２９とで第４プロセッサが構成されている。プロセッサ１２内に複数のコア１２１〜１２４が存在するので、プロセッサ１２はマルチコアプロセッサと称される。
【０００４】
このマルチコアプロセッサ１２において、消費電力を抑えるために、制御部１１から命令を発行することによりコアを休止させることが出来る。制御部１１は、定期的に各コアの負荷率をポーリングし、コア毎にアクティブ状態か休止(スリープ)状態か認識可能である。一般的に各コアに付随するコア付随メモリに対するアクセス速度は全コア共有のメモリに対するアクセス速度より速いので、高性能が求められるＤＳＰなどではコア付随メモリはキャッシュメモリ等に用いられることが多い。
【０００５】
従来の技術では、使用されないコアが休止命令によって休止された後は、休止中のコアはもちろん休止したコアに付随したコア付随メモリも未使用のままであった。
【０００６】
【特許文献１】特開平１０−４０１６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来の技術では、休止中のコアに付随するコア付随メモリも休止しているので、他のコアが外部メモリ１３又はコア共有メモリ１２５を使用している状態では、休止中のコアに付随するコア付随メモリを使用することが出来なかった。このため、メモリ領域を有効に活用することが出来ないという課題があった。
【０００８】
また、従来の技術では、外部メモリ１３又はコア共有メモリ１２５に対するアクセス速度はコア付随メモリに対するアクセス速度より遅いので、高速にメモリ領域にアクセスすることが出来ないという課題があった。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明の第１の態様により、複数のコアの各々に付随するコア付随メモリを備えたマルチコアプロセッサ内の複数のコアの状態を制御部により監視し、状態が所定条件を満たすようになったコアを制御部により休止状態にし、休止状態になったコアに付随するコア付随メモリを休止状態以外のコアにより使用可能にする、というステップを備えることを特徴とするマルチコアプロセッサにおけるコアのメモリ領域の有効活用方法が提供される。
【００１０】
所定条件とは例えばコアの負荷率が所定閾値以下となる条件である。
【００１１】
休止状態となったコアに付随するコア付随メモリの空きメモリ領域を、コアの各々のメモリ領域を管理するコア共有メモリに登録し、コア共有メモリに登録された空きメモリ領域が休止状態以外のいずれかのコアにより使用中か否かを識別可能にし、コア共有メモリに登録された空きメモリ領域が休止状態以外のいずれかのコアにより使用中でない場合に休止状態以外のコアの一つにより使用可能にする、というステップを備えることが好ましい。
【００１２】
コア共有メモリに登録された空きメモリ領域が休止状態以外のいずれかのコアにより使用中か否かを識別可能にするステップは、コアの各々に付随するコア付随メモリ毎に空きメモリ領域を所定サイズのブロック毎に使用中か否かを識別可能にし、コア共有メモリに登録された空きメモリ領域が休止状態以外のいずれかのコアにより使用中でない場合に所定サイズのブロック毎に休止状態以外のコアの一つにより使用可能にする、というステップを備えることが好ましい。
【００１３】
コアの各々に付随するコア付随メモリ毎に空きメモリ領域を所定サイズのブロック毎に使用中か否かを識別可能にするステップは、所定サイズのブロック毎に使用中か否かを表すフラグを制御部の制御により立てること及び、使用中の場合は使用中のコアを特定する識別子を制御部の制御により入力することを含むことが好ましい。
【発明の効果】
【００１４】
本発明により、休止中のコアに付随する従来は使用されていなかったコア付随メモリを有効活用することが可能となる。
【００１５】
また、従来はアクティブなコアがコア付随メモリのアクセス速度より速度の遅い外部メモリ１３やコア共有メモリ１２５を使用していたが、本発明によりアクティブなコアが休止コアのコア付随メモリを活用することにより高速にメモリ領域にアクセス可能となる。
【発明を実施するための最良の形態】
【００１６】
以下の説明において、全図を通じて同一参照番号は同一のものを示す。
図２は本発明の実施の形態によるマルチコアプロセッサにおけるコアメモリの有効活用方法を説明するためのマルチコアアーキテクチャを示すブロック図である。
【００１７】
コア１２１が演算をしていない場合を例とする（１）。コア１２１〜１２４の各々は定期的に自コアの負荷率を測定する手段を備えており、制御部１１内の負荷率判定処理部１１１は定期的にコア１２１〜１２４の各々の負荷率をポーリングする（２）。負荷率判定処理部１１１では、コア１２１〜１２４の各々の負荷率が所定値より大きいコアを演算中のコアと判定し、負荷率が所定値以下のコアを演算休止中のコアと判定する。演算休止中のコアに対しては、制御部１１から休止命令を発行することで（３）、コア１２１が休止(スリープ)状態に入る。
【００１８】
コア１２１はスリープ状態に移行する前にコア１２１の内部の開放可能なメモリ領域を空け(４)、コア共有メモリ１２５に、他コアで使用可能なメモリ領域を所定サイズのブロック単位で通知する(５)。
【００１９】
アクティブコア１２２、１２３及び１２４は、制御部１１からコア１２１が休止状態に入ったことを知らされ、コア１２１の付随メモリ１２６を使用する場合は、そのコア付随メモリ１２６を一時メモリ領域として使用する。図２においては、コア１２４がコア付随メモリ１２６を一時メモリ領域として使用する例が示されている（６）。
【００２０】
図３は本発明の実施の形態により、マルチコアプロセッサにおいて休止中のコア１２１がアクティブ状態に戻る場合の動作を説明するブロック図である。図３において、制御部１１は、コア１２１〜１２４の各々の負荷率を定期的にポーリングし、アクティブ状態にあるコア１２２〜１２４の負荷率が所定値より高くなるとそれらを休止状態にするべく、休止していたコア１２１をアクティブ状態に変化させる。制御部１１からコア１２１のアクティブ要求（復帰命令）をコア１２１〜１２４が受けて(１)、コア１２２，１２３及び１２４は使用していたコア１２１の付随メモリ１２６を開放する(２)。コア付随メモリ１２６を開放するコア１２２，１２３又は１２４は、まだ保持しておきたい情報がコア付随メモリ１２６内にあればその情報を自コアのメモリか、領域が無ければ外部メモリ１３に退避する。次いでコア１２２、１２３及び１２４は、コア１２１にコア付随メモリ１２６を開放したことを通知する(３)。コア１２１は、他のコア１２２、１２３及び１２４からのメモリ開放通知を受けてから、通常処理状態に遷移する。
【００２１】
以下に、（１）コアがアクティブ状態から休止状態に遷移する場合、（２）休止状態のコアに付随するコア付随メモリの獲得への遷移、及び（３）コアが休止状態からアクティブ状態に遷移する場合を詳細に説明する。
【００２２】
（１）コアがアクティブ状態から休止状態に遷移する場合
図４は図２及び図３に示したコア共有メモリ１２５の内部の構成例を示すブロック図である。図４において、コア共有メモリ１２５はメモリ管理テーブル１２５１を備えている。メモリ管理テーブル１２５１においては、コア共有メモリ１２５にはコア１２１〜１２４の各々の空きメモリ領域が所定メモリサイズのブロック単位で割り当てられている。図示例では、コア１２１を休止状態にあるコアとし、コア１２２〜１２４をアクティブ状態にあるコアとしており、休止状態にあるコア１２１に付随するコア付随メモリ１２６には空きメモリＡ〜Ｅがブロック単位で割り当てられており、アクティブ状態にあるコア１２２〜１２４にそれぞれ付随するコア付随メモリ１２７〜１２９には空きメモリは割り当てられていない。ブロックのメモリサイズは制御部１１が管理しやすい適当な大きさに選定される。なお、コア付随メモリ１２６には空きメモリの割り当てられていない領域もあるが、この領域はコア１２１を休止状態からアクティブ状態に復帰させるために使うかも知れない領域である。
【００２３】
図５はコアが定常状態（アクティブ状態）からスリープ状態（休止状態）に遷移する際の制御部１１の動作を説明するフローチャートである。図５において、ステップＳ５１にて制御部１１は各コアの負荷率を定期的に判定する。次いでステップ５２にて負荷率が所定閾値以上か否かを判定し、所定閾値以上であれば負荷率は高いと判断してそのコアをアクティブ状態のままにしておきステップＳ５１による負荷率の判定を定期的に行う。所定閾値より小さい場合は負荷率が低いのでそのコアを休止状態に遷移させてもよいと判断し、ステップＳ５３にて制御部１１よりそのコアに対して休止命令を発行する。次いでステップＳ５４にて当該コアに付随するコア付随メモリ１２６の空き領域をブロック単位でコア共有メモリ１２５に設定する。これにより、コア１２１はスリープ状態となる。
【００２４】
（２）休止状態のコアに付随するコア付随メモリの獲得への遷移
図６はアクティブ状態にあるコアが休止状態にあるコアに付随するコア付随メモリを獲得するまでの遷移を説明するブロック図である。図６に示すように、休止状態にあるコア１２１に付随するコア付随メモリ１２６に空きメモリＡ〜Ｅがブロック単位に割り当てられており、これらの空きメモリＡ〜Ｅは最初は未使用である。空きメモリが使用中か未使用かは、コア共有メモリ１２５の空きメモリの各ブロックにフラグ”１”又は”０”を立てることによりアクティブ状態にあるコア１２２〜１２４及び制御部１１が識別できる。空きメモリを使用中の場合は、空きメモリの各ブロックがコア１２１，１２２、１２３、１２４のうちいずれにより使用されているかを識別するために２進数の識別子”００”、”０１”、”１０”、”１１”をそれぞれ割り当てる。例えば、使用中の空きメモリがコア１２４により使用中であることは識別子”１１”を空きメモリ領域１２５の対応するブロックに書き込んでおき、その識別子をチェックすることにより分かる。アクティブ状態にあるコア１２２、１２３及び１２４はコア共有メモリ１２５の空きメモリ領域を参照することで、休止状態のコアに付随するコア付随メモリの空きメモリの各ブロックが使用可能かどうかをチェックする。コア１２１が休止状態でコア１２１に付随するコア付随メモリ１２６内の空きメモリのブロックが未使用（フラグが”０”）の場合に、アクティブコア１２２〜１２４はコア付随メモリ１２６内のそのブロックを使用することが可能となる。
【００２５】
例えば、アクティブ状態にあるコア１２４が休止状態にあるコア１２１に付随するコア付随メモリ１２６を使用する場合、アクティブ状態にある他のコア１２２及び１２３がコア１２１に付随するコア付随メモリ１２６を使用してないことを、コア共有メモリ１２５内の空きメモリ領域に格納されている識別子をチェックしてから使用する必要がある。アクティブ状態にあるコア１２２及び１２３がコア付随メモリ１２６を使用していない場合は、コア１２４は一時メモリ領域としてそのコア付随メモリ１２６を使用することが可能となる。
【００２６】
コア付随メモリ１２６が未使用の状態においては、コア共有メモリ１２５にはコア付随メモリ１２６が未使用であることが通知されている。すなわち、コア１２１の空きメモリのブロックＡ〜Ｅのフラグは”０”になっている。この状態で、アクティブ状態にある例えばコア１２４は、コア共有メモリ１２５を参照することで、未使用のコア付随メモリ１２６があることを確認する。
【００２７】
アクティブ状態にあるコア１２４が休止状態にあるコア１２１に付随するコア付随メモリ１２６を使用中は、コア共有メモリ１２５内のメモリ管理テーブル１２５１にコア付随メモリ１２６の空きメモリをコア１２４が使用中であることを設定する（フラグ”１”を立てて識別子”１１”を書き込む）。この設定によって、アクティブ状態にあるコア１２２及び１２３がコア付随メモリ１２６を使用したくなった場合でも、アクティブコア４が使用中であるコア付随メモリ１２６を、アクティブ状態にあるコア１２２及び１２３が共有して使用することは出来なくなる。
【００２８】
アクティブコア１２４は未使用の空きメモリブロックがあることを確認してその空きメモリブロックを使用することにし、コア共有メモリ１２５内の使用するコア付随メモリのブロックのフラグを使用中であることを示す”１”に変更する。
【００２９】
図６では、アクティブ状態にあるコア１２４がコア付随メモリ１２６のブロックＡ〜Ｃを使用中であることを示している。すなわち、ブロックＡ〜Ｃに使用中を示すフラグ”１”を立て、コア１２４により使用中であることを示す識別子”１１”が書き込まれた例を示している(１)。この状態では、アクティブ状態にあるコア１２４はコア１２１に付随するコア付随メモリ１２６内のブロックＡ〜Ｃを使用可能である（２）。
【００３０】
図７は、アクティブ状態にあるコア、例えば、コア１２４、が休止状態にあるコア、例えば、コア１２１に付随するコア付随メモリ１２６を獲得するまでの、アクティブ状態にあるコア１２４における処理の流れを示すフローチャートである。図７において、定常状態で動作していたアクティブ状態にあるコア１２４に対してステップＳ７１にて制御部１１より休止状態にあるコア１２１の通知があるか否かを判定し、休止状態のコア１２１の通知があればステップＳ７２にて外部メモリ１３を使用中か否かの判定をし、当該通知がなければステップＳ７３にて外部メモリ１３２を使用するか否かを判定する。外部メモリ１３は、メモリ量が豊潤にあるがアクセス速度が非常に遅い。またメモリ容量が大きいので、基本的に制御部１１は外部メモリ１３の管理を実施しない。コア１２４がステップＳ７２の判断で外部メモリ１３を使用中又はステップＳ７３の判断で外部メモリ１３を使用する場合、ステップＳ７４にてコア共有メモリ１２５内に休止状態にあるコア１２１に付随するコア付随メモリにの空きメモリブロックがあるかどうかを確認する。空きメモリブロックがない場合は、ステップＳ７５にてコア１２４は外部メモリ１３を使用する。空きメモリブロックがある場合はステップＳ７６にてコア共有メモリ１２５に対してコア付随メモリ１２６のその空きメモリがコア１２４により使用中であることを示すためにフラグ”１”を立て、識別子”１１”を書き込む。この時、外部メモリ１３の内容はコア付随メモリ１２６にコピーされる。次いでステップＳ７７にて、コア１２４は休止中のコア１２１に付随するコア付随メモリ１２６を使用することが可能となる。
【００３１】
また、アクティブ状態にあるコア１２４が外部メモリ１３を使用中にステップＳ７１にて制御部１１より休止中の別のコアの通知があった場合に、コア共有メモリ１２５のそのコアに付随するコア付随メモリの空きメモリに使用中であることを示すフラグ”１”を立てた後、外部メモリ１３を開放し、当該別のコアに付随するコア付随メモリを使用することも可能となる。
【００３２】
図８は、図６の状態において、さらにアクティブ状態にあるコア１２２がコア付随メモリ１２６を使用する場合を示すブロック図である。図８において、コア１２２がコア共有メモリ１２５内の空きメモリ領域を示すテーブルを参照することにより、コア付随メモリ１２６内の空きメモリＡ，Ｂ，Ｃのブロックにフラグ”１”がすでに立っており、識別子が！１１”なので、これらのブロックはコア１２４にて使用中であることがわかる。しかし、コア付随メモリ１２６内の未使用ブロックは、空きメモリＤ，Ｅであるので、アクティブ状態にあるコア１２２は空きメモリＤ，Ｅを使用することが可能となる。したがって、コア共有メモリ１２５内で、使用するコア付随メモリ１２６の空きメモリＤ，Ｅのブロックに使用中であることを示すフラグ”１”を立て、識別子”０１”を書き込むことにより（１）、アクティブ状態にあるコア１２２はコア付随メモリ１２６を使用可能となる(２)。
【００３３】
アクティブ状態にあるコア１２２が、さらにコア付随メモリ１２６内のブロックを使用したくても、もう使用可能なブロックが残っていないことがわかる。その場合は、外部メモリ１３を使用する(３)。
【００３４】
コア付随メモリ１２６〜１２９はプロセッサ１２内にあるため、外部メモリ１３を使用するよりもアクセス時間が速い。休止状態にあるコアに付随するコア付随メモリを優先的に使用することで、コアのメモリアクセスが速くなる。休止状態にあるコアに付随するコア付随メモリを全て使い切った場合は、コア付随メモリよりもアクセス時間が遅い、プロセッサ１２の外にある外部メモリ１３を使用する。
【００３５】
図９は、図６に示した状態の直前で、全コアがアクティブ状態にある場合のコア１２４のメモリ使用状況を示すブロック図である。図９において、全コアがアクティブ状態にある場合は、例えばコア１２４は、コア付随メモリ１２９とコア１２４に割り当てられたコア共有メモリの一定領域であるコア１２４割り当てメモリ９１とを使用する。コア１２４割り当てメモリ９１には、図に拡大して示されているように、プログラム領域、データ領域、スタック領域などが割り当てられる。
【００３６】
図１０は図９に示した状態においてコア１２４がコア付随メモリ１２６を全て使い切り、他メモリ領域を獲得する場合を例として示すブロック図である。図１０に示すように、コア１２４によるデータ処理中に、コア付随メモリ１２９及びコア１２４割り当てメモリ９１に割り当てられたメモリ領域を超えてデータ処理などを行う場合でも、コア１２１〜１２４の全てがアクティブ状態にある場合は、休止中のコアに付随するコア付随メモリを使用出来ない。したがって、この場合は図１０に示すようにコア１２４は外部メモリ１３の一定領域（コア１２４使用メモリ）を獲得して使用する。なお、一般的にメモリ９１を使い切ってしまうようなアプリケーションとしては、下記が挙げられる。
・プログラム量が多い(処理量が多い)アプリケーション
・データの保持目的などでデータ領域を多量に使用するアプリケーション
【００３７】
図１１は図６に示した状態を詳細に示すブロック図である。休止状態のコアが存在する場合には、図６のように、コア共有メモリ１２５内の使用するコア付随メモリのブロックに使用中を示すフラグ”１”を立ててコア共有メモリ１２５にメモリを獲得したことを通知した後、休止状態のコア１２１に付随するコア付随メモリ１２６のそのブロック、例えば、ブロックＡ〜Ｃを使用する。
【００３８】
（３）休止状態からアクティブ状態への復帰への遷移
図１２は、図６に示したようにコア１２４がコア１２１に付随するコア付随メモリ１２６を使用中に、コア１２１が休止状態からアクティブ状態に復帰する場合の遷移を説明するブロック図である。図１２において、まず、制御部１１よりコア１２１が休止状態からアクティブ状態に復帰することを残りの全コア１２２〜１２４に通知する。コア１２４は制御部１１からコア１２１のアクティブ状態への復帰の要求を受けて、コア１２１に付随する使用していたコア付随メモリ１２６を開放しコア付随メモリ１２６にあった情報を外部メモリ１３に転送する(１)。また、コア共有メモリ１２５内の空きメモリＡ，Ｂ，Ｃを未使用状態に変更するためにそれらのブロックのフラグを”１”から”０”に変更すると共に識別子の欄をブランクにする(２)。その後、コア１２４からコア１２１に対してコア付随メモリ１２６の開放通知を行う(３)。コア付随メモリ１２６を使用していないアクティブ状態にあるコア１２２及び１２３も、コア１２１に対してコア付随メモリ１２６の開放通知を行う(コア付随メモリ１２６は未使用であるが、コア１２１へ通知する)(４)。コア１２１は、全コアからこのコア付随メモリ１２６の開放通知を受けて、アクティブ状態に遷移する。
【００３９】
図１３は、休止状態のコアがアクティブ状態に復帰するまでの処理の流れを示すフローチャートである。図１３において、ステップＳ１３１にて制御部１１から休止状態のコアに対して復帰命令を発行する。復帰命令を受けた休止状態のコアは、定常状態で動作していたアクティブ状態のコアが休止状態のコアに付随するコア付随メモリを使用している可能性があるので、ステップＳ１３２にてアクティブな状態にあるコアからの付随メモリ開放通知を待って、定常状態へ移行する。
【００４０】
図１４は、アクティブ状態にあるコアが休止状態にあるコアに付随するコア付随メモリを開放するまでの処理の流れを示すフローチャートである。図１４において、あるコアが定常処理をしている状態（アクティブな状態）で、ステップＳ１４１にて制御部１１より休止状態のコアに対して復帰命令を発行する。次いでステップＳ１４２にて休止状態にあるコアに付随するコア付随メモリは他のアクティブ状態にあるコアにより未使用かを判定する。この判定で使用中であればステップＳ１４３にて上記コア付随メモリをアクティブ状態にあるコアの使用から開放をし、ステップＳ１４４にて共有メモリ１３５内の該当ブロックのフラグを未使用を示す”０”にすると共に識別子の欄をブランクにして初期化し、ステップＳ１４５にて上記コア付随メモリをアクティブ状態にある全コアから開放したことを休止状態にあるコアに通知してコア付随メモリの開放動作を終了する。ステップＳ１４２の判断で未使用であればステップＳ１４３及びステップＳ１４４は実行せずにステップＳ１４５を実行してコア付随メモリの開放動作を終了する。
【００４１】
以上説明した実施例ではコアの負荷率に基づいてコアを休止状態に遷移させるかどうかを判定しているが、本発明はこれに限定されず、コアを休止状態に遷移させるきっかけは何であってもよい。例えば、各コアの時間的なスケジュールを予め定めておき、所定の時刻になったらコアを休止状態に遷移させてもよい。
【００４２】
また、マルチコアプロセッサとして４つのコアからなる例を用いて説明したが、本発明はこれに限定されないことはもちろんであり、コアの数の４つより多くても少なくても本発明は適用可能である。
【００４３】
さらに、休止状態に遷移するコアの数は１個に限定されるものではなく、複数個のコアが同時にあるいは休止期間の一部が重複するようにして休止状態に入っても本発明は適用可能である。
【産業上の利用可能性】
【００４４】
本発明により、マルチコアプロセッサにおいて休止状態にあるコアに付随するコア付随メモリをアクティブ状態にあるコアが使用可能になるので、メモリ領域を有効に活用できる。
【００４５】
また、コア付随メモリは外部メモリよりもアクセス速度が速いのでマルチコアプロセッサによる高速処理が実現できる。
【図面の簡単な説明】
【００４６】
【図１】本発明の背景を説明するマルチコアを備えたプロセッサの構成例を示すブロック図である。
【図２】本発明の実施の形態によるマルチコアプロセッサにおけるコアメモリの有効活用方法を説明するためのマルチコアアーキテクチャを示すブロック図である。
【図３】本発明の実施の形態により、マルチコアプロセッサにおいて休止中のコア１２１がアクティブ状態に戻る場合の動作を説明するブロック図である。
【図４】図２及び図３に示したコア共有メモリ１２５の内部の構成例を示すブロック図である。
【図５】コアが定常状態（アクティブ状態）からスリープ状態（休止状態）に遷移する際の制御部１１の動作を説明するフローチャートである。
【図６】休止状態のコアに付随するコア付随メモリの獲得への遷移を説明するブロック図である。
【図７】アクティブ状態にあるコア、例えば、コア１２４が休止中のコア、例えば、コア１２１に付随するコア付随メモリ１２６を獲得するまでの、アクティブ状態にあるコア１２４における処理の流れを示すフローチャートである。
【図８】図６の状態において、さらにアクティブ状態にあるコア１２２がコア付随メモリ１２６を使用する場合を示すブロック図である。
【図９】図６に示した状態の直前で、全コアがアクティブ状態にある場合のコア１２４のメモリ使用状況を示すブロック図である。
【図１０】図９に示した状態においてコア１２４がコア付随メモリ１２６を全て使い切り、他メモリ領域を獲得する場合を例として示すブロック図である。
【図１１】図６に示した状態を詳細に示すブロック図である。
【図１２】図６に示したようにコア１２４がコア１２１に付随するコア付随メモリ１２６を使用中に、コア１２１が休止状態からアクティブ状態に復帰する場合の遷移を説明するブロック図である。
【図１３】休止状態のコアがアクティブ状態に復帰するまでの処理の流れを示すフローチャートである。
【図１４】アクティブ状態にあるコアが休止状態にあるコアに付随するコア付随メモリを開放するまでの処理の流れを示すフローチャートである。
【符号の説明】
【００４７】
１１    制御部
１２    プロセッサ
１３    外部メモリ
１２１〜１２４    コア
１２５    コア共有メモリ
１２６〜１２９    コア付随メモリ
【図１】
2009037403.tif 000003
【図２】
2009037403.tif 000004
【図３】
2009037403.tif 000005
【図４】
2009037403.tif 000006
【図５】
2009037403.tif 000007
【図６】
2009037403.tif 000008
【図７】
2009037403.tif 000009
【図８】
2009037403.tif 000010
【図９】
2009037403.tif 000011
【図１０】
2009037403.tif 000012
【図１１】
2009037403.tif 000013
【図１２】
2009037403.tif 000014
【図１３】
2009037403.tif 000015
【図１４】
2009037403.tif 000016