(57)【要約】      （修正有）【課題】処理能力を低下させずに消費電力を削減するプロセッサシステムを提供する。【解決手段】プロセッサシステム１は、それぞれ処理能力が異なる複数のコア部を複数個ずつ有するプロセッサコア（第１コア７、第２コア８）と、プロセッサコアによってアクセスされる不揮発メモリ３と、不揮発メモリに対するアクセス制御を行うとともに、動作中のコア部の数と、コア部の重み係数と、不揮発メモリに対する単位時間当たりのアクセス回数と、の少なくとも一つに基づいて、不揮発メモリに電源電圧を供給するか否かを制御するメモリコントローラ４と、を備える。【選択図】図１
2017016427.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ処理能力が異なる複数のコア部を複数個ずつ有するプロセッサコアと、
前記プロセッサコアによってアクセスされる不揮発メモリと、
前記不揮発メモリに対するアクセス制御を行うとともに、動作中の前記コア部の数と、前記コア部の重み係数と、前記不揮発メモリに対する単位時間当たりのアクセス回数と、の少なくとも一つに基づいて、前記不揮発メモリに電源電圧を供給するか否かを制御するメモリコントローラと、を備えるプロセッサシステム。
【請求項２】
前記処理能力が異なる前記コア部ごとに設けられる複数の第１キャッシュメモリを備え、
同一の処理能力を有する複数の前記コア部は、対応する前記第１キャッシュメモリにアクセスし、
前記メモリコントローラは、前記不揮発メモリと前記複数の第１キャッシュメモリとに対するアクセス制御を行う請求項１に記載のプロセッサシステム。
【請求項３】
前記メモリコントローラは、前記複数のコア部のうち処理能力が異なるもののそれぞれについて、動作中のコア部の数が対応する閾値より大きいか否かを判定して前記不揮発メモリに電源電圧を供給するか否かを制御する請求項１に記載のプロセッサシステム。
【請求項４】
前記メモリコントローラは、処理能力が異なる前記複数のコア部の中の少なくとも一つについて、動作中のコア部の数が前記閾値以下であれば、前記不揮発メモリへの電源電圧の供給を停止する請求項３に記載のプロセッサシステム。
【請求項５】
前記メモリコントローラは、前記複数のコア部のうち処理能力が異なるもののそれぞれについて、動作中のコア部の数に、対応する重み係数を乗じた乗算値を演算し、これら乗算値に基づいて、前記不揮発メモリに電源電圧を供給するか否かを制御する請求項１に記載のプロセッサシステム。
【請求項６】
前記メモリコントローラは、前記複数のコア部のうち処理能力が異なるものごとに計算された前記乗算値を足し合わせた合算値が所定の閾値以下の場合には、前記不揮発メモリへの電源電圧の供給を停止する請求項５に記載のプロセッサシステム。
【請求項７】
前記重み係数は、対応する前記コア部の処理量に応じた値である請求項５または６に記載のプロセッサシステム。
【請求項８】
前記メモリコントローラは、前記不揮発メモリに対する単位時間当たりのアクセス回数が所定の閾値以下の場合には、前記不揮発メモリへの電源電圧の供給を停止する請求項１に記載のプロセッサシステム。
【請求項９】
前記アクセス回数は、前記プロセッサコアによる前記不揮発メモリに対する読出要求の回数である請求項８に記載のプロセッサシステム。
【請求項１０】
前記不揮発メモリは、電源電圧を供給するか否かを個別独立に切替可能な複数のメモリ領域を有し、
前記メモリコントローラは、動作中の前記コア部の数と、前記コア部の重み係数と、前記不揮発メモリに対する単位時間当たりのアクセス回数と、の少なくとも一つに基づいて、前記不揮発メモリ中のすべての前記メモリ領域に電源電圧を供給するか、一部の前記メモリ領域への電源電圧の供給を停止するか、前記不揮発メモリ中のすべての前記メモリ領域への電源電圧の供給を停止するかを制御する請求項１に記載のプロセッサシステム。
【請求項１１】
前記メモリコントローラは、前記複数のコア部のうち処理能力が異なるもののそれぞれについて、動作中のコア部の数が第１閾値より大きい場合には前記不揮発メモリ中のすべての前記メモリ領域に電源電圧を供給し、前記数が前記第１閾値以下で第２閾値より大きい場合には前記不揮発メモリ中の一部の前記メモリ領域への電源電圧の供給を停止し、前記数が前記第２閾値以下の場合には、前記不揮発メモリ中のすべての前記メモリ領域への電源電圧の供給を停止する請求項１０に記載のプロセッサシステム。
【請求項１２】
前記メモリコントローラは、前記複数のコア部のうち処理能力が異なるものごとに、動作中のコア部の数に、対応する前記コア部の重み係数を乗じた乗算値を演算し、これら乗算値を処理能力が異なる前記コア部ごとに足し合わせた合算値が第３閾値より大きい場合には前記不揮発メモリ中のすべての前記メモリ領域に電源電圧を供給し、前記合算値が前記第３閾値以下で第４閾値より大きい場合には、前記不揮発メモリ中の一部の前記メモリ領域への電源電圧の供給を停止し、前記合算値が前記第４閾値以下の場合には、前記不揮発メモリ中のすべての前記メモリ領域への電源電圧の供給を停止する請求項１０に記載のプロセッサシステム。
【請求項１３】
前記メモリコントローラは、前記不揮発メモリに対する単位時間当たりのアクセス回数が第５閾値より大きい場合には前記不揮発メモリ中のすべての前記メモリ領域に電源電圧を供給し、前記アクセス回数が前記第５閾値以下で第６閾値より大きい場合には、前記不揮発メモリ中の一部の前記メモリ領域への電源電圧の供給を停止し、前記アクセス回数が前記第６閾値以下の場合には、前記不揮発メモリ中のすべての前記メモリ領域への電源電圧の供給を停止する請求項１０に記載のプロセッサシステム。
【請求項１４】
前記不揮発メモリは、前記複数のコア部がメインメモリよりも優先してアクセスする第２キャッシュメモリである請求項１乃至１３のいずれかに記載のプロセッサシステム。
【請求項１５】
前記複数のコア部のそれぞれに設けられた１次キャッシュメモリと、
前記１次キャッシュメモリよりアクセス優先度が低く、かつ前記メインメモリよりもアクセス優先度が高い、２次キャッシュメモリを含む高次キャッシュメモリと、を有し、
前記第２キャッシュメモリは、前記高次キャッシュメモリに含まれる少なくとも１階層のキャッシュメモリである請求項１４に記載のプロセッサシステム。
【請求項１６】
前記複数のコア部のそれぞれに設けられた１次キャッシュメモリと、
処理能力が異なる前記コア部ごとに設けられ、前記１次キャッシュメモリの次に優先してアクセスされる複数の２次キャッシュメモリと、
前記複数の２次キャッシュメモリよりアクセス優先度が低く、かつ前記メインメモリよりアクセス優先度が高い、３次キャッシュメモリを含む高次キャッシュメモリと、を備え、
前記第２キャッシュメモリは、前記高次キャッシュメモリに含まれる少なくとも１階層のキャッシュメモリである請求項１４に記載のプロセッサシステム。
【請求項１７】
前記メモリコントローラが前記不揮発メモリへの電源電圧の供給を停止している間に、前記不揮発メモリに対して書込み要求のあったデータを記憶するデータ記憶部を備える請求項１乃至１６のいずれかに記載のプロセッサシステム。
【請求項１８】
前記不揮発メモリは、ＭＲＡＭ（Magnetoresistive Random Access Memory）である請求項１乃至１７のいずれかに記載のプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、プロセッサシステムに関する。
【背景技術】
【０００２】
最近のプロセッサシステムでは、コアが動作していないときに、コアへの電源供給を段階的に遮断するパワーゲーティングを行って、低消費電力化を図っている。
【０００３】
しかしながら、既存のプロセッサシステムのキャッシュメモリは、揮発メモリであるＳＲＡＭ（Static Random Access Memory）で構成されているため、ＳＲＡＭ内のデータをメインメモリに待避させた後でなければ、ＳＲＡＭの電源を遮断することはできない。ＳＲＡＭは、メインメモリとして用いられるＤＲＡＭ（Dynamic Random Access Memory）よりも高速アクセスが可能だが、消費電力が大きい。このため、パワーゲーティングを行っても、ＳＲＡＭの消費電力を減らさない限り、プロセッサシステム全体の消費電力を減らすことはできない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許８２３０２４７号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする課題は、処理能力を低下させずに消費電力を削減することが可能なプロセッサシステムを提供することである。
【課題を解決するための手段】
【０００６】
本実施形態によれば、それぞれ処理能力が異なる複数のコア部を複数個ずつ有するプロセッサコアと、プロセッサコアによってアクセスされる不揮発メモリと、不揮発メモリに対するアクセス制御を行うとともに、動作中のコア部の数と、コア部の重み係数と、不揮発メモリに対する単位時間当たりのアクセス回数と、の少なくとも一つに基づいて、不揮発メモリに電源電圧を供給するか否かを制御するメモリコントローラと、を備えるプロセッサシステムが提供される。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態によるプロセッサシステムの概略構成を示すブロック図。
【図２】電源管理ユニットとメモリコントローラが行う電源管理の一具体例を示す図。
【図３】第１の実施形態によるメモリコントローラの電源管理処理を示すフローチャート。
【図４】メモリコントローラが行う書込み要求処理の一例を示すフローチャート。
【図５】第２の実施形態によるメモリコントローラの電源管理処理を示すフローチャート。
【図６】第３の実施形態によるメモリコントローラの電源管理処理を示すフローチャート。
【図７】第４の実施形態による不揮発メモリの構造を模式的に示す図。
【図８】第４の実施形態によるメモリコントローラの電源管理処理を示すフローチャート。
【図９】第５の実施形態によるメモリコントローラの電源管理処理を示すフローチャート。
【図１０】第６の実施形態におけるメモリコントローラの電源管理処理を示すフローチャート。
【発明を実施するための形態】
【０００８】
以下、図面を参照しながら、本発明の実施形態を説明する。
【０００９】
（第１の実施形態）
図１は第１の実施形態によるプロセッサシステム１の概略構成を示すブロック図である。図１のプロセッサシステム１は、プロセッサコア２と、不揮発メモリ３と、メモリコントローラ４と、電源管理ユニット５と、メモリバッファ（データ記憶部）６とを備えている。
【００１０】
プロセッサコア２は、それぞれ処理能力が異なる複数のコア部を複数個ずつ有する。ここで、処理能力とは、コア部の処理速度である。処理能力が高いほど、処理速度が速いが、その反面、消費電力がより高くなる。
【００１１】
例えば、図１の例では、プロセッサコア２は、第１コア７と、第１コア７よりも処理能力の低い第２コア８とを有する。第１コア７は、複数の第１コア部９と、これら第１コア部９によって共用される２次キャッシュメモリ（以下、Ｌ２キャッシュまたは第１キャッシュメモリ）１０とを有する。第２コア８は、複数の第２コア部１１と、これら第２コア部１１によって共用されるＬ２キャッシュ（第１キャッシュメモリ）１０とを有する。第１コア部９は、第２コア部１１よりも処理速度が速いが、消費電力が大きい。図１では、相対的に処理能力の高い第１コア部９をbigと表記し、相対的に処理能力の低い第２コア部１１をlittleと表記している。
【００１２】
第１コア部９と第２コア部１１のそれぞれは、不図示の１次キャッシュメモリ（以下、Ｌ１キャッシュ）を内蔵している。
【００１３】
なお、プロセッサコア２内のコア部の種類は、図１に示した２つに限定されるものではない。３種類以上のコア部を複数個ずつプロセッサコア２の内部に設けてもよい。
【００１４】
Ｌ１キャッシュとＬ２キャッシュ１０は、例えばＳＲＡＭ等の高速の揮発メモリである。不揮発メモリ３は、例えばＭＲＡＭ（Magnetoresistive Random Access Memory）である。ＭＲＡＭの中でも、動作速度が速いＳＴＴ（Spin Transfer Torque）−ＭＲＡＭが望ましい。
【００１５】
図１の例では、不揮発メモリ３を３次キャッシュメモリ（以下、Ｌ３キャッシュメモリまたは第２キャッシュメモリ）として用いている。Ｌ３キャッシュ３は、Ｌ２キャッシュ１０よりもアクセス順位が低くて、メインメモリ１３よりもアクセス順位の高いメモリである。なお、Ｌ２キャッシュ１０を不揮発メモリにして、後述する電源電圧の制御を行ってもよい。以下では、Ｌ３キャッシュ３を不揮発メモリとして電源電圧の制御を行う例を説明する。
【００１６】
図１に示すように、プロセッサコア２とＬ２キャッシュ１０との間には、高速でデータ転送を行う内部バス１２が設けられている。プロセッサコア２内の第１コア部９と第２コア部１１は、メモリアクセスの必要性が生じると、まずは、各コア部の内部にあるＬ１キャッシュにアクセスし、Ｌ１キャッシュにデータがなければ、複数の第１コア部９で共用するＬ２キャッシュ１０、あるいは複数の第２コア部１１で共用するＬ２キャッシュ１０にアクセスする。Ｌ２キャッシュ１０にもデータがない場合には、内部バス１２を介してＬ３キャッシュ３にアクセスする。Ｌ３キャッシュ３にもデータがない場合には、メインメモリ１３にアクセスする。
【００１７】
電源管理ユニット５は、プロセッサコア２に対する電源管理を行う。より具体的には、電源管理ユニット５は、プロセッサコア２が動作していないときに、プロセッサコア２に供給する電力を段階的に削減するパワーゲーティングを行う。
【００１８】
メモリコントローラ４は、不揮発メモリ３に対するアクセス制御を行う。また、メモリコントローラ４は、動作中のコア部の数と、コア部の重み係数と、不揮発メモリ３に対する単位時間当たりのアクセス回数と、の少なくとも一つに基づいて、不揮発メモリ３に電源電圧を供給するか否かを制御する。
【００１９】
特に、第１の実施形態によるメモリコントローラ４は、動作中のコア部の数に応じて、不揮発メモリ３に電源電圧を供給するか否かを制御する。
【００２０】
メモリバッファ６は、メモリコントローラ４が不揮発メモリ３への電源供給を停止している間に、プロセッサコア２から不揮発メモリ３への書込み要求があったときに、書込み要求のあったデータを一時的に記憶する。メモリバッファ６に記憶されたデータは、その後に不揮発メモリ３に電源電圧が供給された後に不揮発メモリ３に書き込まれる。あるいは、所定時間経過しても不揮発メモリ３に電源電圧が供給されない場合は、メモリバッファ６からメインメモリ１３にデータを書き込んでもよい。メモリバッファ６のメモリ容量は、不揮発メモリ３のメモリ容量よりも少ない。例えば，メモリバッファ６のメモリ容量は、不揮発メモリ３の数個のキャッシュライン分程度でもよい。これにより、メモリバッファ６を例えばＳＲＡＭで構成しても、メモリバッファ６での電力消費は少なくて済む。
【００２１】
図２は電源管理ユニット５とメモリコントローラ４が行う電源管理の一具体例を示す図である。電源管理ユニット５は、プロセッサコア２に対する電源管理を、例えばＣ０〜Ｃ７までの複数段階に分けて行う。まず、プロセッサコア２が動作を停止すると、Ｃ０からＣ１に移行し、プロセッサコア２に供給するコアクロックを停止する。その後、Ｃ１からＣ２に移行し、コアクロックを生成するための不図示のＰＬＬ回路とＬ１キャッシュへの電源電圧の供給を停止する。その後、Ｃ２〜Ｃ３に移行し、さらに第１コア部９と第２コア部１１への電源電圧をＶ０に下げる。その後、Ｃ３からＣ６に移行し、Ｌ２キャッシュ１０への電源電圧の供給を停止するとともに、第１コア部９と第２コア部１１への電源電圧をＶ０未満のＶ１まで下げる。その後、Ｃ６からＣ７に移行し、プロセッサコア２を完全に停止させる。
【００２２】
一方、メモリコントローラ４は、プロセッサコア２がＣ０〜Ｃ７のどの状態であっても、不揮発メモリ３に対する電源管理を行う。すなわち、プロセッサコア２がＣ０〜Ｃ７のどの状態であっても、不揮発メモリ３への電源電圧の供給を停止しても差し支えない場合には、積極的に電源供給を停止する。
【００２３】
図３は第１の実施形態によるメモリコントローラ４の電源管理処理を示すフローチャートである。まず、動作中の第１コア部９の数N_bigと、動作中の第２コア部１１の数N_littleとを計測する（ステップＳ１）。プロセッサコア２の動作状態は、電源管理ユニット５が常にモニタしているため、メモリコントローラ４は、電源管理ユニット５から、動作中の第１コア部９と第２コア部１１の情報を受け取り、上述したステップＳ１の処理を行う。
【００２４】
次に、動作中の第１コア部９の数N_bigが閾値N_Ac_bigより大きく、かつ動作中の第２コア部１１の数N_littleが閾値N_Ac_littleより大きいか否かを判定する（ステップＳ２）。ステップＳ２の判定がＹＥＳの場合、プロセッサコア２の処理量が多いと判断されるため、メモリコントローラ４は、不揮発メモリ３への電源供給を行う（ステップＳ３）。
【００２５】
一方、ステップＳ２の判定がＮＯの場合は、プロセッサコア２の処理量が少ないと判断されるため、メモリコントローラ４は、不揮発メモリ３への電源供給を停止する（ステップＳ４）。
【００２６】
このように、ステップＳ４では、N_big≦N_Ac_bigとN_little≦N_Ac_littleとの少なくとも一方の条件を満たす場合は、不揮発メモリ３への電源供給を停止する。
【００２７】
不揮発メモリ３での電源供給を停止した後に、プロセッサコア２が不揮発メモリ３に書込み要求を行ったとしても、上述したように、メモリバッファ６に一時的にデータを書き込むことで、データの整合性を維持することができる。
【００２８】
図４はメモリコントローラ４が行う書込み要求処理の一例を示すフローチャートである。メモリコントローラ４は、プロセッサコア２からの書込み要求があったときに、図４の処理を実行する。
【００２９】
まず、不揮発メモリ３への電源供給が停止中か否かを判定する（ステップＳ１１）。停止中でなければ、書込み要求に応じて、不揮発メモリ３への書込みを行う（ステップＳ１２）。
【００３０】
ステップＳ１１において、停止中と判定された場合は、メモリバッファ６にアクセスし、書込み要求のあったアドレスのデータがすでにメモリバッファ６に書き込まれているか否かを判定する（ステップＳ１３）。書き込まれていると判定されると、メモリバッファ６上の同じアドレスのデータを更新する（ステップＳ１４）。ステップＳ１３で書き込まれていないと判定されると、メモリバッファ６上に新規のエントリを追加し、書き込み要求のあったデータを一時的に格納する（ステップＳ１５）。
【００３１】
ステップＳ１４またはＳ１５の処理が終了すると、メモリバッファ６が満杯になったか否かを判定する（ステップＳ１６）。満杯でなければ処理を終了し、満杯であれば、不揮発メモリ３への電源供給を再開して、メモリバッファ６内のデータを不揮発メモリ３に転送する（ステップＳ１７）。
【００３２】
なお、プロセッサシステム１が電源遮断状態から電源供給状態に遷移した場合にも、メモリバッファ６内のデータは不揮発メモリ３に転送される。また、メモリコントローラ４は、各プロセッサコアの動作状況が変化するたびに、図３の処理を行う。そして、ステップＳ２の判定がＹｅｓの場合には、メモリコントローラ４は、不揮発メモリ３への電源供給を再開する。この時、メモリバッファ６内のデータを不揮発メモリ３に転送する。
【００３３】
このように、第１の実施形態では、動作中の第１コア部９の数と動作中の第２コア部１１の数とに基づいて、プロセッサコア２の処理量が多いか否かを判定し、判定結果によってプロセッサコア２の処理量が少ないと判断される場合には、不揮発メモリ３への電源供給を停止する。動作中の第１コア部９と第２コア部１１の数だけで、プロセッサコア２の処理量を判断するため、不揮発メモリ３への電源供給を停止するか否かの判断を迅速に行うことができる。
【００３４】
このように、本実施形態では、階層化されたキャッシュメモリ中の少なくとも１階層のキャッシュメモリを不揮発メモリ３とし、プロセッサコア２の処理量に応じて、不揮発メモリ３への電源供給を制御するため、キャッシュメモリでの消費電力を削減できる。特に、本実施形態では、ＳＴＴ−ＭＲＡＭ等の高速の不揮発メモリ３をキャッシュメモリとして用いるため、従来のようにＳＲＡＭにてキャッシュメモリを構成する場合と比べて、アクセス性能を低下させずに、大幅に消費電力を削減できる。ＳＲＡＭは揮発メモリであり、ＳＲＡＭへの電源電圧を停止させるには、事前にＳＲＡＭ内のデータを待避させるなどの処理が必要となるが、本実施形態のように、不揮発メモリ３を用いる場合は、電源電圧の供給を停止しても、不揮発メモリ３内のデータは消失しないため、ＳＲＡＭよりも簡易な制御で不揮発メモリ３への電源供給を停止できる。これはすなわち、より長期間にわたって不揮発メモリ３への電源供給を停止できることなり、その分消費電力の削減が図れる。
【００３５】
（第２の実施形態）
第２の実施形態は、動作中のコア部の数とコア部の重み係数とに基づいて、不揮発メモリ３に電源電圧を供給するか否かを判断するものである。
【００３６】
図５は第２の実施形態によるメモリコントローラ４の電源管理処理を示すフローチャートである。まず、動作中の第１コア部９の数N_bigおよび重み係数α_bigと、動作中の第２コア部１１の数N_littleおよび重み係数α_littleとを取得する（ステップＳ２１）。ここで、重み係数α_big、α_littleとは、第１コア部９または第２コア部１１の処理量を数値化したものである。重み係数に、動作中のコア部の数を乗じた乗算値は、動作中の第１コア部９または第２コア部１１の全処理量に相当する。重み係数は、各コア部に依存した固定値であるため、予め、メモリコントローラ４が重み係数をレジスタ等に記憶しておけばよい。一方、動作中の第１コア部９および第２コア部１１の数は、上述したように、電源管理ユニット５から取得する。
【００３７】
次に、各コア部ごとに、重み係数α_big、α_littleに動作中のコア部の数N_big、N_littleを乗じた乗算値を算出するとともに、各コア部の乗算値を足し合わせた合算値Ｗを算出する（ステップＳ２２）。この合算値Ｗは、プロセッサコア２の全体での処理量に相当し、以下の（１）式で表される。
【００３８】
合算値Ｗ＝N_big×α_big＋N_little×α_little    …（１）
【００３９】
次に、合算値Ｗが所定の閾値β_onoffより大きいか否かを判定する（ステップＳ２３）。大きい場合には、プロセッサコア２の処理量が多いと判断して、メモリコントローラ４は、不揮発メモリ３への電源供給を行う（ステップＳ２４）。ステップＳ２３で、合算値Ｗが閾値β_onoff以下と判定されると、プロセッサコア２の処理量が少ないと判断して、メモリコントローラ４は、不揮発メモリ３への電源供給を停止する（ステップＳ２５）。
【００４０】
このように、第２の実施形態では、動作中の第１コア部９と第２コア部１１の数と重み係数とを乗じることにより、プロセッサコア２の処理量を簡易かつ精度よく見積もることができる。よって、不揮発メモリ３への電源供給を停止するタイミングを最適化できる。
【００４１】
（第３の実施形態）
第３の実施形態は、不揮発メモリ３に対する単位時間当たりのアクセス回数に基づいて、不揮発メモリ３に電源電圧を供給するか否かを判断するものである。
【００４２】
図６は第３の実施形態によるメモリコントローラ４の電源管理処理を示すフローチャートである。まず、メモリコントローラ４は、不揮発メモリ３に対する単位時間当たりのアクセス回数を計測する（ステップＳ３１）。ここでは、アクセス回数として、リード要求の回数N_a_readを計測する。リード要求の回数N_a_readを計測するのは、不揮発メモリ３への電源供給を停止するか否かを判断する指標としては、書込み要求の回数よりも、リード要求の回数N_a_readの方が重要なためである。また、不揮発メモリ３への電源供給を停止したとしても、書込み要求については、不揮発メモリ３の代わりにメモリバッファ６にデータを書き込めるため、アクセス処理上の問題は起きない。
【００４３】
次に、アクセス回数N_a_readが所定の閾値γ_onoffより大きいか否かを判定する（ステップＳ３２）。アクセス回数N_a_readが閾値γ_onoffより大きいと判断される場合には、プロセッサコア２の処理量が多いと判断して、不揮発メモリ３への電源供給を行う（ステップＳ３３）。一方、ステップＳ３２で、アクセス回数N_a_readが閾値γ_onoff以下と判断される場合には、プロセッサコア２の処理量は少ないと判断して、不揮発メモリ３への電源供給を停止する（ステップＳ３４）。
【００４４】
このように、第３の実施形態によるメモリコントローラ４は、不揮発メモリ３に対するアクセス回数によって、不揮発メモリ３への電源供給を停止するか否かを判断する。例えば、プロセッサコア２の処理量が比較的多い場合であっても、不揮発メモリ３に対するリード要求がほとんどない場合は、不揮発メモリ３への電源電圧の供給を停止しても、実害はない。そこで、本実施形態では、プロセッサコア２の処理量に関係なく、不揮発メモリ３に対するリード要求の頻度が少ない場合に不揮発メモリ３への電源供給を停止するため、より消費電力を削減できる。
【００４５】
（第４の実施形態）
第４の実施形態は、不揮発メモリ３への電源供給を部分的に切り替えるものである。
【００４６】
図７は第４の実施形態による不揮発メモリ３の構造を模式的に示す図である。図７の不揮発メモリ３は、複数のメモリ領域を有する。以下、これらのメモリ領域をウェイｗ１〜ｗ８と呼ぶ。各ウェイは、それぞれ専用の不図示のタグメモリによってアクセス可能である。メモリコントローラ４は、各ウェイに電源電圧を供給するか否かを個別独立に制御することができる。
【００４７】
図８は第４の実施形態によるメモリコントローラ４の電源管理処理を示すフローチャートである。図８の電源管理処理は、第１の実施形態と同様に、動作中のコア部の数に応じて、不揮発メモリ３への電源供給を判断するものである。
【００４８】
まず、動作中の第１コア部９の数N_bigと、動作中の第２コア部１１の数N_littleとを計測する（ステップＳ４１）。次に、動作中の第１コア部９の数N_bigが閾値（第１閾値）N_Ac_bigより大きく、かつ動作中の第２コア部１１の数N_littleが閾値（第１閾値）N_Ac_littleより大きいか否かを判定する（ステップＳ４２）。ステップＳ４２の判定がＹＥＳの場合、プロセッサコア２の処理量が多いと判断されるため、メモリコントローラ４は、不揮発メモリ３への電源供給を行う（ステップＳ４３）。
【００４９】
ステップＳ４２の判定がＮＯの場合、動作中の第１コア部９の数N_bigが閾値（第２閾値）N_HalfAc_bigより大きく、かつ動作中の第２コア部１１の数N_littleが閾値（第２閾値）N_HalfAc_littleより大きいか否かを判定する（ステップＳ４４）。閾値N_HalfAc_bigは、例えば閾値N_Ac_bigより小さい値（例えば、半分の値）であり、閾値N_HalfAc_littleは、例えば閾値N_Ac_littleより小さい値（例えば、半分の値）である。
【００５０】
ステップＳ４４の判定がＹＥＳの場合、不揮発メモリ３内の一部のウェイの電源供給を停止し、残りのウェイのみに電源供給を行う（ステップＳ４５）。
【００５１】
ステップＳ４４の判定がＮＯの場合、不揮発メモリ３内のすべてのウェイの電源供給を停止する（ステップＳ４６）。
【００５２】
なお、図８の電源管理処理では、動作中の各コア部の数N_big、N_littleを、それぞれ２種類の閾値と比較して、不揮発メモリ３への電源供給を制御しているが、３種類以上の閾値を設けて、不揮発メモリ３への電源供給をより細かく制御してもよい。
【００５３】
このように、第４の実施形態では、不揮発メモリ３内の複数のメモリ領域への電源供給を細かく切替制御するため、プロセッサコア２の処理量に応じて、不揮発メモリ３への電源供給をより細かく制御できる。
【００５４】
（第５の実施形態）
第５の実施形態は、第２の実施形態において、不揮発メモリ３への電源供給を部分的に切り替えることができるようにしたものである。
【００５５】
図９は第５の実施形態によるメモリコントローラ４の電源管理処理を示すフローチャートである。まず、動作中の第１コア部９の数N_bigおよび重み係数α_bigと、動作中の第２コア部１１の数N_littleおよび重み係数α_littleとを取得する（ステップＳ５１）。
【００５６】
次に、各コア部ごとに、重み係数α_big、α_littleに動作中のコア部の数N_big、N_littleを乗じた乗算値を算出するとともに、各コア部の乗算値を足し合わせた合算値Ｗを算出する（ステップＳ５２）。
【００５７】
次に、合算値Ｗが所定の閾値（第３閾値）β_onoffより大きいか否かを判定する（ステップＳ５３）。大きい場合には、プロセッサコア２の処理量が多いと判断して、メモリコントローラ４は、不揮発メモリ３への電源供給を行う（ステップＳ５４）。ステップＳ１３で、合算値が閾値β_onoff以下と判定されると、合算値Ｗが閾値（第４閾値）β_Half_onoffより大きいか否かを判定する（ステップＳ５５）。
【００５８】
合算値Ｗが閾値β_Half_onoffより大きい場合には、不揮発メモリ３内の一部のウェイの電源供給を停止し、残りのウェイのみに電源供給を行う（ステップＳ５６）。閾値β_Half_onoffは、例えば閾値β_onoffの半分の値である。
【００５９】
合算値Ｗが閾値β_Half_onoff以下の場合には、不揮発メモリ３内のすべてのウェイの電源供給を停止する（ステップＳ５７）。
【００６０】
なお、図９の電源管理処理では、合算値Ｗを２種類の閾値と比較して、不揮発メモリ３への電源供給を制御しているが、３種類以上の閾値を設けて、不揮発メモリ３への電源供給をより細かく制御してもよい。
【００６１】
このように、第５の実施形態では、動作中のコア部の数および重み係数に応じて、不揮発メモリ３への電源供給をより細かく切替制御することができる。
【００６２】
（第６の実施形態）
第５の実施形態は、第３の実施形態において、不揮発メモリ３への電源供給を部分的に切り替えることができるようにしたものである。
【００６３】
図１０は第６の実施形態におけるメモリコントローラ４の電源管理処理を示すフローチャートである。まず、メモリコントローラ４は、不揮発メモリ３に対する単位時間当たりのアクセス回数（例えばリード要求の回数）N_a_readを計測する（ステップＳ６１）。
【００６４】
次に、アクセス回数N_a_readが所定の閾値（第５閾値）γ_onoffより大きいか否かを判定する（ステップＳ６２）。アクセス回数N_a_readが閾値γ_onoffより大きいと判断される場合には、プロセッサコア２の処理量が多いと判断して、不揮発メモリ３への電源供給を行う（ステップＳ６３）。一方、ステップＳ６２で、アクセス回数N_a_readが閾値γ_onoff以下と判断される場合には、アクセス回数N_a_readが閾値（第６閾値）γ_Half_onoffより大きいか否かを判定する（ステップＳ６４）。閾値γ_Half_onoffは、例えば閾値γ_onoffの半分の値である。
【００６５】
アクセス回数N_a_readが閾値γ_Half_onoffより大きい場合には、不揮発メモリ３内の一部のウェイの電源供給を停止し、残りのウェイのみに電源供給を行う（ステップＳ６５）。アクセス回数N_a_readが閾値γ_Half_onoff以下の場合には、不揮発メモリ３内のすべてのウェイの電源供給を停止する（ステップＳ６６）。
【００６６】
なお、図１０の電源管理処理では、アクセス回数N_a_readを２種類の閾値と比較して、不揮発メモリ３への電源供給を制御しているが、３種類以上の閾値を設けて、不揮発メモリ３への電源供給をより細かく制御してもよい。
【００６７】
このように、第６の実施形態では、不揮発メモリ３へのアクセス回数に応じて、不揮発メモリ３への電源供給をより細かく切替制御することができる。
【００６８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６９】
１  プロセッサシステム、２  プロセッサコア、３  不揮発メモリ、４  メモリコントローラ、５  電源管理ユニット、６  メモリバッファ、７  第１コア、８  第２コア、９  第１コア部、１０  Ｌ２キャッシュ、１１  第２コア部、１２  内部バス、１３  メインメモリ、
【図１】
2017016427.tif 000003
【図２】
2017016427.tif 000004
【図３】
2017016427.tif 000005
【図４】
2017016427.tif 000006
【図５】
2017016427.tif 000007
【図６】
2017016427.tif 000008
【図７】
2017016427.tif 000009
【図８】
2017016427.tif 000010
【図９】
2017016427.tif 000011
【図１０】
2017016427.tif 000012
【手続補正書】
【提出日】平成28年6月14日(2016.6.14)
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
処理能力が異なる複数のコア部を複数個ずつ有するプロセッサコアと、
前記プロセッサコアによってアクセスされる不揮発メモリと、
前記不揮発メモリに対するアクセス制御を行うとともに、動作中の前記コア部の数と前記動作中のコア部の処理量を表す値との積に基づいて、前記不揮発メモリに電源電圧を供給するか否かを制御するメモリコントローラと、を備えるプロセッサシステム。
【請求項２】
処理能力が異なる複数のコア部を複数個ずつ有するプロセッサコアと、
前記プロセッサコアによってアクセスされる不揮発メモリに対するアクセス制御を行うとともに、動作中の前記コア部の数と前記動作中のコア部の処理量を表す値との積に基づいて、前記不揮発メモリに電源電圧を供給するか否かを制御するメモリコントローラと、を備えるプロセッサシステム。
【請求項３】
同一の処理能力を有する複数の前記コア部ごとに設けられ、前記同一の処理能力を有する複数のコア部によりアクセスされる第１キャッシュメモリを備え、
前記メモリコントローラは、前記不揮発メモリと前記第１キャッシュメモリとに対するアクセス制御を行う請求項１または２に記載のプロセッサシステム。
【請求項４】
前記メモリコントローラは、前記複数のコア部のうち処理能力が異なるものについて、動作中のコア部の数と前記動作中のコア部の処理量を表す値との積に基づいて、前記不揮発メモリに電源電圧を供給するか否かを制御する請求項１乃至３のいずれか一項に記載のプロセッサシステム。
【請求項５】
前記メモリコントローラは、前記複数のコア部のうち処理能力が異なるものごとに計算された前記乗算値を足し合わせた合算値が所定の閾値以下の場合には、前記不揮発メモリへの電源電圧の供給を停止する請求項４に記載のプロセッサシステム。
【請求項６】
前記不揮発メモリは、電源電圧を供給するか否かを個別独立に切替可能な複数のメモリ領域を有し、
前記メモリコントローラは、動作中の前記コア部の数と前記動作中のコア部の処理量を表す値との積に基づいて、前記不揮発メモリ中のすべての前記メモリ領域に電源電圧を供給するか、一部の前記メモリ領域への電源電圧の供給を停止するか、前記不揮発メモリ中のすべての前記メモリ領域への電源電圧の供給を停止するかを制御する請求項１または２に記載のプロセッサシステム。
【請求項７】
前記メモリコントローラは、前記複数のコア部のうち処理能力が異なるものごとに、動作中のコア部の数と前記動作中のコア部の処理量を表す値との積を演算し、これら積を処理能力が異なる前記コア部ごとに足し合わせた合算値が第１閾値より大きい場合には前記不揮発メモリ中のすべての前記メモリ領域に電源電圧を供給し、前記合算値が前記第１閾値以下で第２閾値より大きい場合には、前記不揮発メモリ中の一部の前記メモリ領域への電源電圧の供給を停止し、前記合算値が前記第２閾値以下の場合には、前記不揮発メモリ中のすべての前記メモリ領域への電源電圧の供給を停止する請求項６に記載のプロセッサシステム。
【請求項８】
前記不揮発メモリは、前記複数のコア部がメインメモリよりも優先してアクセスする第２キャッシュメモリである請求項１乃至７のいずれかに記載のプロセッサシステム。
【請求項９】
前記複数のコア部のそれぞれに設けられた１次キャッシュメモリと、
前記１次キャッシュメモリよりアクセス優先度が低く、かつ前記メインメモリよりもアクセス優先度が高い、２次キャッシュメモリを含む高次キャッシュメモリと、を有し、
前記第２キャッシュメモリは、前記高次キャッシュメモリに含まれる少なくとも１階層のキャッシュメモリである請求項８に記載のプロセッサシステム。
【請求項１０】
前記複数のコア部のそれぞれに設けられた１次キャッシュメモリと、
処理能力が異なる前記コア部ごとに設けられ、前記１次キャッシュメモリの次に優先してアクセスされる複数の２次キャッシュメモリと、
前記複数の２次キャッシュメモリよりアクセス優先度が低く、かつ前記メインメモリよりアクセス優先度が高い、３次キャッシュメモリを含む高次キャッシュメモリと、を備え、
前記第２キャッシュメモリは、前記高次キャッシュメモリに含まれる少なくとも１階層のキャッシュメモリである請求項８に記載のプロセッサシステム。
【請求項１１】
前記メモリコントローラが前記不揮発メモリへの電源電圧の供給を停止している間に、前記不揮発メモリに対して書込み要求のあったデータを記憶するデータ記憶部を備える請求項１乃至１０のいずれかに記載のプロセッサシステム。
【請求項１２】
前記不揮発メモリは、ＭＲＡＭ（Magnetoresistive Random Access Memory）である請求項１乃至１１のいずれかに記載のプロセッサシステム。
【請求項１３】
処理能力が異なる複数のコア部を複数個ずつ有するプロセッサコアによってアクセスされる不揮発メモリに対するアクセス制御を行うとともに、動作中の前記コア部の数と前記動作中のコア部の処理量を表す値との積に基づいて、前記不揮発メモリに電源電圧を供給するか否かを制御するメモリコントローラを備えるメモリ制御回路。
【請求項１４】
処理能力が異なる複数のコア部を複数個ずつ有するプロセッサコアによってアクセスされる不揮発メモリと、
前記不揮発メモリに対するアクセス制御を行うとともに、動作中の前記コア部の数と前記動作中のコア部の処理量を表す値との積に基づいて、前記不揮発メモリに電源電圧を供給するか否かを制御するメモリコントローラを備えるメモリシステム。