(57)【要約】【課題】オペレーティングシステムによる電力管理以外の手法で、キャッシュメモリの効率的な電力制御を行う。【解決手段】メモリ制御回路は、ｎ（ｎは２以上の整数）次のキャッシュメモリのうち不揮発性メモリを備えた特定のメモリに対して、他のメモリから読み出しおよび書き込みの要求を行っていない期間が所定時間以上継続したか否かを判定する要求判定部と、前記要求判定部の判定結果に基づいて、前記特定のメモリに対する電源遮断のタイミングを制御する電源制御部と、を備える。【選択図】図１
2015022330.tif 000002
【特許請求の範囲】
【請求項１】
ｎ（ｎは２以上の整数）次のキャッシュメモリのうち不揮発性メモリを備えた特定のメモリに対して、他のメモリから読み出しおよび書き込みの要求を行っていない期間が所定時間以上継続したか否かを判定する要求判定部と、
前記要求判定部の判定結果に基づいて、前記特定のメモリに対する電源遮断のタイミングを制御する電源制御部と、を備えるメモリ制御回路。
【請求項２】
前記電源制御部は、オペレーティングシステムによる電力管理処理とは無関係に、前記特定のメモリを含めて、前記ｎ次のキャッシュメモリのうち不揮発性メモリに対する電源遮断の制御を開始する請求項１に記載のメモリ制御回路。
【請求項３】
前記電源制御部は、前記特定のメモリに対する電源を遮断する際には、前記特定のメモリ以外の前記ｎ次のキャッシュメモリおよびメインメモリのうち、電源を遮断可能なメモリの電源をすべて一括で遮断する請求項１または２に記載のメモリ制御回路。
【請求項４】
前記電源制御部は、前記特定のメモリを含めて前記ｎ次のキャッシュメモリのうち不揮発性メモリのそれぞれについて、個別に電源遮断のタイミングを制御する請求項１または２に記載のメモリ制御回路。
【請求項５】
前記特定のメモリよりも一つ次数の小さな低次メモリから、前記特定のメモリへの読み出し要求があったときにカウントアップし、該要求に従って前記特定のメモリから前記低次メモリにデータを伝送したときにカウントダウンするリード要求カウンタを備え、
前記要求判定部は、前記リード要求カウンタのカウント値により前記特定のメモリの電源を遮断するか否かを判定する請求項１乃至４のいずれかに記載のメモリ制御回路。
【請求項６】
前記要求判定部は、前記リード要求カウンタのカウント値が特定の値である期間が前記所定時間以上継続した場合に、前記特定のメモリの電源遮断を前記特定のメモリに指示する請求項５に記載のメモリ制御回路。
【請求項７】
前記特定のメモリにおける書き込み待機ジョブおよび読み出し待機ジョブがなくなってからの継続時間が所定時間を超えたか否かを判定する動作状況判定部を備え、
前記要求判定部は、前記動作状況判定部の判定結果に基づいて、前記特定のメモリの電源を遮断するか否かを判定する請求項１乃至４のいずれかに記載のメモリ制御回路。
【請求項８】
前記特定のメモリは、書き込み待機ジョブを順に格納するライトバッファと、読み出し待機ジョブを順に格納するリードバッファと、を有し、
前記動作状況判定部は、前記ライトバッファおよび前記リードバッファが空になると、前記書き込み待機ジョブおよび読み出し待機ジョブがなくなったと判定する請求項７に記載のメモリ制御回路。
【請求項９】
前記電源制御部は、前記特定のメモリを複数の回路ブロックに分けて、各回路ブロックの電源を、タイミングをずらして遮断する請求項１乃至８のいずれかに記載のメモリ制御回路。
【請求項１０】
前記複数の回路ブロックの少なくとも二つは、前記特定のメモリ内のメモリセルアレイ周辺の周辺回路部と、前記周辺回路部以外のロジック部とであり、
前記電源制御部は、前記要求判定部の判定結果に応じて、最初に前記周辺回路部の電源を遮断し、次に前記ロジック部の電源を遮断する請求項１乃至９のいずれかに記載のメモリ制御回路。
【請求項１１】
前記複数の回路ブロックは、前記周辺回路部および前記ロジック部に加えて、前記特定のメモリが使用するクロック信号を生成するクロック部を有し、
前記電源制御部は、前記要求判定部の判定結果に応じて、最初に前記クロック部の電源を遮断し、次に前記周辺回路部の電源を遮断し、次に前記ロジック部の電源を遮断する請求項１０に記載のメモリ制御回路。
【請求項１２】
与えられた命令を実行するプロセッサコアと、
前記プロセッサコアからの指示に従って算術論理演算処理を行う算術論理演算ユニットと、
前記プロセッサコアおよび前記算術論理演算ユニットからの指示により、キャッシュメモリに対するアクセスを制御するメモリ制御回路と、を備え、
前記メモリ制御回路は、
ｎ（ｎは２以上の整数）次のキャッシュメモリのうち不揮発性メモリを備えた特定のメモリに対して、他のメモリから読み出しおよび書き込みの要求を行っていない期間が所定時間以上継続したか否かを判定する要求判定部と、
前記要求判定部の判定結果に基づいて、前記特定のメモリに対する電源遮断のタイミングを制御する電源制御部と、を有するプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、キャッシュメモリを制御するメモリ制御回路およびプロセッサに関する。
【背景技術】
【０００２】
近年、プロセッサシステムの低消費電力化が重要な課題となっている。現在使用されているプロセッサシステムでは、キャッシュメモリに揮発性メモリを用いるのが一般的である。この種のプロセッサシステムでは、プロセッサシステムの動作中にキャッシュメモリへの電源供給を遮断してしまうと、キャッシュメモリ上のデータが消失してしまう。このため、データ要求が起きた場合に、より上位のメモリからデータを読み出さなければならず、読み出し時間が非常に長くかかってしまい、性能劣化につながる。このような背景から、プロセッサシステムのコア上で何かの演算操作が行われている間は、キャッシュメモリを含むプロセッサシステム全体に電力供給を行い続ける必要がある。
【０００３】
不揮発性メモリは、揮発性メモリに対して待機電力が低いため、更なる低消費電力化を目指してプロセッサの２次以上の高次のキャッシュメモリを不揮発性メモリにすることが考えられる。不揮発性メモリを使用しているキャッシュメモリは、例え電力を落としてもデータの損失が起きないため、復帰時間が揮発性メモリに比べて格段に短くできる特徴がある。特に２次以上の高次のキャッシュメモリは、プロセッサ自体が動作していても、アクセス間隔が長いため、動作していない時間が多く存在する。しかしながら、従来のプロセッサシステムでは、オペレーティングシステムによる電力管理（パワーマネージメント）に基づいて電源制御を行っているため、プロセッサが動作している時に、プロセッサ自身の判断でキャッシュメモリのみの電力管理を行うことは出来ない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許公報第８，３４７，１１９号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする課題は、オペレーティングシステムによる電力管理以外の手法で、キャッシュメモリの効率的な電力制御を行うことが可能なメモリ制御回路およびプロセッサを提供することである。
【課題を解決するための手段】
【０００６】
本実施形態では、ｎ（ｎは２以上の整数）次のキャッシュメモリのうち不揮発性メモリを備えた特定のメモリに対して、他のメモリから読み出しおよび書き込みの要求を行っていない期間が所定時間以上継続したか否かを判定する要求判定部と、
前記要求判定部の判定結果に基づいて、前記特定のメモリに対する電源遮断のタイミングを制御する電源制御部と、を備えるメモリ制御回路が提供される。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態に係るメモリ制御回路１を内蔵するプロセッサ２の概略構成を示すブロック図。
【図２】不揮発性メモリを備えたＬ２キャッシュ７の概略構成を示す図。
【図３】各サブアレイ１１の内部構成の一例を示すブロック図。
【図４】（ａ）はＭＲＡＭセル３１の回路構成の一例を示す図、（ｂ）は磁気抵抗効果素子３２の断面構造を示す図。
【図５】電源制御コントローラ１０の処理動作の一例を示すフローチャート。
【図６】（ａ）と（ｂ）は第１の実施形態に係るプロセッサ２の動作状態と電源遮断箇所との対応関係を示す図。
【図７】第２の実施形態に係る電源制御コントローラ１０の処理動作を示すフローチャート。
【図８】（ａ）と（ｂ）は第２の実施形態に係るプロセッサ２の動作状態と電源遮断箇所との対応関係を示す図。
【図９Ａ】第３の実施形態に係る電源制御コントローラ１０の処理動作を示すフローチャート。
【図９Ｂ】図９Ａに続くフローチャート。
【図１０】（ａ）と（ｂ）は第３の実施形態に係るプロセッサ２の動作状態と電源遮断箇所との対応関係を示す図。
【図１１】第４の実施形態に係るプロセッサ２の概略構成を示すブロック図。
【図１２】第４の実施形態に係るＬ２キャッシュ７の主要部の内部構成を示すブロック図。
【図１３】第４の実施形態に係る動作状況監視部１４の処理動作を示すフローチャート。
【図１４】第４の実施形態に係る電源制御コントローラ１０の処理動作を示すフローチャート。
【図１５】第５の実施形態に係る電源制御コントローラ１０の処理動作を示すフローチャート。
【図１６Ａ】第６の実施形態に係る電源制御コントローラ１０の処理動作を示すフローチャート。
【図１６Ｂ】図１６Ａに続くフローチャート。
【発明を実施するための形態】
【０００８】
以下、図面を参照しながら、本発明の実施形態を説明する。
【０００９】
（第１の実施形態）
図１は第１の実施形態に係るメモリ制御回路１を内蔵するプロセッサ２の概略構成を示すブロック図である。図１のプロセッサ２は、与えられた命令を実行するコア３と、コア３からの指示に従って算術論理演算処理を行う算術論理演算部（ＡＬＵ：Arithmetic Logic Unit）４と、レジスタ５と、Ｌ１キャッシュ６と、Ｌ２キャッシュ７と、コア３とＡＬＵ４からの指示によりＬ１キャッシュ６に対するアクセスを制御するメモリ制御回路１とを備えている。
【００１０】
Ｌ１キャッシュ６は、小容量で高速のキャッシュメモリであり、通常はＳＲＡＭ（Static RAM）で構成される。Ｌ２キャッシュ７は、Ｌ１キャッシュ６よりも大容量のキャッシュメモリである。本実施形態では、Ｌ２キャッシュ７をＭＲＡＭ（Magnetoresistive RAM）等の不揮発性メモリで構成する例を説明する。Ｌ１キャッシュ６と主記憶メモリについては、従来と同様に揮発性メモリで構成してもよいし、あるいは、不揮発性メモリで構成してもよい。
【００１１】
プロセッサ２のコア３が頻繁にアクセスするデータは優先的にＬ１キャッシュ６に格納され、Ｌ１キャッシュ６に格納できないデータはＬ２キャッシュ７に格納される。Ｌ１キャッシュ６およびＬ２キャッシュ７に格納されたデータは、最終的には、メインメモリ８に書き戻される。
【００１２】
なお、Ｌ１キャッシュ６とＬ２キャッシュ７の少なくとも一方は、プロセッサ２の内部に設けてもよいし、プロセッサ２に外付けしてもよい。また、Ｌ２キャッシュ７よりも高次のキャッシュメモリが設けられる場合もあるが、図１では省略している。
【００１３】
メモリ制御回路１は、リード要求カウンタ９と電源制御コントローラ（電源制御部）１０とを有する。リード要求カウンタ９は、Ｌ１キャッシュ６からのリード要求がＬ２キャッシュ７に届いたときにカウントアップし、この要求に応じてＬ２キャッシュ７からＬ１キャッシュ６にデータが転送されたときにカウントダウンする。電源制御コントローラ１０は、リード要求カウンタ９のカウント値とＬ２キャッシュ７の書き込み要求の有無とに基づいて、Ｌ２キャッシュ７を電源遮断するか否かを制御する。
【００１４】
図２は不揮発性メモリを備えたＬ２キャッシュ７の概略構成を示す図である。図２に示すように、Ｌ２キャッシュ７は、それぞれが複数のメモリセルを有するサブアレイ１１を縦横に複数個ずつ配置して構成されている。各サブアレイ１１の間には、ワード線、ビット線、制御線、クロック線、電源線等を含む配線部１２と、任意の一つのサブアレイ１１を選択するための複数の方向切替回路１３とが配置されている。
【００１５】
図３は各サブアレイ１１の内部構成の一例を示すブロック図である。各サブアレイ１１は、複数のメモリセルを備えたセルアレイ２１と、ロウデコーダ２２と、カラムデコーダ２３と、カラム選択回路２４と、クランプ回路２５と、センスアンプ２６と、データラッチ回路２７と、制御回路２８と、冗長セル群２９とを有する。ロウデコーダ２２は、外部から供給されたロウアドレスに基づいて、いずれか一つのワード線を選択する。カラムデコーダ２３とカラム選択回路２４は、外部から供給されたカラムアドレスに基づいて、いずれか一つのビット線を選択する。クランプ回路２５は、ビット線データの電圧振幅を制限する。センスアンプ２６は、クランプ回路２５の出力信号のゲイン調整を行い、データラッチ回路２７は所定のタイミングでセンスアンプ２６の出力信号をラッチする。冗長セル群２９は、セルアレイ２１内の一部のメモリセルが故障したときに置換される複数の冗長セルからなる。
【００１６】
セルアレイ２１を構成する複数のメモリセルは不揮発性メモリセルであり、例えば、ＭＲＡＭセルで構成されている。図４（ａ）はＭＲＡＭセル３１の回路構成の一例を示す図である。図示のように、ＭＲＡＭセル３１は、磁気抵抗効果素子３２とトランジスタ３３とで構成されている。磁気抵抗効果素子３２は、電流の流れる方向によって抵抗値が大きく変化する。よって、この抵抗値の変化を０または１のデータの記録に利用している。
【００１７】
図４（ｂ）は磁気抵抗効果素子３２の断面構造を示す図である。磁気抵抗効果素子３２は、図４（ｂ）の上から下に向かって、非磁性層３４、参照層３５、トンネル障壁層３６、記録層３７および下地層３８を有する。参照層３５は、磁化の向きが膜面に平行な固定方向であるのに対し、記録層３７は、磁化の向きが膜面に平行な可変方向である。なお、参照層３５および記録層３７では、磁化の向きが膜面に垂直な材料を用いてもよい。
【００１８】
図５は電源制御コントローラ１０の処理動作の一例を示すフローチャートである。リード要求カウンタ９のカウント値がゼロか否かを判定する（ステップＳ１）。リード要求カウンタ９のカウント値がゼロということは、Ｌ１キャッシュ６からのリード（読み出し）要求とそれに対する応答処理とが残存していないことを示している。
【００１９】
リード要求カウンタ９のカウント値がゼロになるまでステップＳ１に留まり、ゼロになると、電源制御コントローラ１０内のＬ２動作なしカウンタを起動する（ステップＳ２）。このＬ２動作なしカウンタは、Ｌ２キャッシュ７へのアクセスが継続して起きない時間を計測するカウンタである。Ｌ２動作なしカウンタは、例えば電源制御コントローラ１０の内部に設けられる。Ｌ２動作なしカウンタは、その起動後に、例えばシステムクロックに同期して、カウントアップ動作を行う。
【００２０】
次に、リード要求カウンタ９のカウント値がゼロになったか、またはＬ１キャッシュ６からＬ２キャッシュ７へのライト要求があったか否かを判定する（ステップＳ３）。ステップＳ３の判定がＹＥＳの場合は、Ｌ２動作なしカウンタをリセットし（ステップＳ４）、再びステップＳ１に戻る。
【００２１】
ステップＳ３の判定がＮＯの場合は、Ｌ２動作なしカウンタのカウント値が予め定めた所定値を超えたか否かを判定する（ステップＳ５）。カウント値が所定値を超えていなければ、Ｌ２動作なしカウンタをカウントアップ（更新）して（ステップＳ６）、ステップＳ３に戻る。カウント値が所定値を超えていれば、Ｌ２キャッシュ７に電源遮断の通知を行う（ステップＳ７）。
【００２２】
次に、リード要求カウンタ９のカウント値がゼロになったか否かを判定する（ステップＳ８）。カウント値がゼロでない場合は、ステップＳ４に戻って、Ｌ２動作なしカウンタをリセットした後、ステップＳ１以降の処理を行う。カウント値がゼロの場合は、Ｌ２キャッシュ７から遮断準備信号が届いたか否かを判定し（ステップＳ９）、遮断準備信号が届くまでステップＳ９に留まり、遮断準備信号が届くと、Ｌ２キャッシュ７に電源遮断を指示する（ステップＳ１０）。
【００２３】
ステップＳ１０でＬ２キャッシュ７に電源遮断の通知を行った後、Ｌ１キャッシュ６からＬ２キャッシュ７に読み出しまたは書き込み要求があると、電源制御コントローラ１０は、Ｌ２キャッシュ７の電源を復帰する処理を行う。図５のフローチャートにおいて、ステップＳ５の処理が要求判定部に該当する。
【００２４】
図５のフローチャートは、電源制御コントローラ１０が、不揮発性メモリで構成されたＬ２キャッシュ７の電源遮断を制御する例を示しているが、Ｌ２キャッシュ７よりも高次のキャッシュメモリで、かつ不揮発性メモリであれば、図５と同様の処理により、電源遮断を制御することができる。例えば、ｎ（ｎは２以上の整数）次の不揮発性メモリからなるキャッシュメモリの電源遮断を制御する場合は、リード要求カウンタ９は、（ｎ−１）次のキャッシュメモリからｎ次のキャッシュメモリへの読み出し要求があるとカウントアップし、この要求に応じてｎ次のキャッシュメモリが（ｎ−１）次のキャッシュメモリに応答するとカウントダウンする。
【００２５】
図６は第１の実施形態に係るプロセッサ２の動作状態と電源遮断箇所との対応関係を示す図である。C0-stateは、プロセッサ２の内部に常に電源が供給されている状態である。H-stateは、上述した図６の処理により、Ｌ２キャッシュ７の電源遮断を行う状態である。なお、H-stateでは、Ｌ２キャッシュ７だけでなく、Ｌ２キャッシュ７以降の高次のキャッシュメモリとメインメモリ８のうち、不揮発性メモリのそれぞれについて、図６と同様の処理にて電源遮断を行ってもよい。
【００２６】
C1/C2-stateは、Ｌ２キャッシュ７の電源遮断に加えて、プロセッサ２のクロック信号を生成するブロックの電源遮断を行う状態である。C3-stateは、さらにクロック信号の生成に用いるＰＬＬ回路とＬ１キャッシュ６の電源遮断を行う状態である。C4-stateは、さらにそれ以外の回路ブロックの電源遮断を行う状態である。図６（ａ）のようにH-stateを新たに設けることで、オペレーティングシステムが電力制御処理を開始する前に、Ｌ２キャッシュ７の電源を遮断することが可能となる。また、オペレーティングシステムは、通常C1-stateから電力制御を始めるが、図６（ｂ）のように、C1/C2-stateの後にH-stateを設けることで、オペレーティングシステムによる電力管理処理中に、オペレーティングシステムの指示とは関係なくＬ２キャッシュ７の電源を遮断することも可能となる。
【００２７】
このように、第１の実施形態では、プロセッサ２内部にリード要求カウンタ９と電源制御コントローラ１０を設けて、不揮発性メモリからなるＬ２キャッシュ７へのＬ１キャッシュ６からの読み出し要求と、それに対する応答処理とをリード要求カウンタ９でカウントし、電源制御コントローラ１０は、リード要求カウンタ９のカウント値とＬ１キャッシュ６からＬ２キャッシュ７への書き込み要求とに基づいて、Ｌ２キャッシュ７の電源遮断を制御する。これにより、プロセッサ２の動作に支障が起きないように、できるだけ早期にＬ２キャッシュ７の電源遮断を行うことができ、プロセッサ２の消費電力を効率よく削減できる。
【００２８】
特に、本実施形態によれば、オペレーティングシステムによる電力管理が開始される前に、すなわちオペ-レーティングシステムによる電力管理処理とは無関係に、プロセッサ２内部のハードウェア、具体的にはリード要求カウンタ９と電源制御コントローラ１０によって不揮発性メモリからなるキャッシュメモリの電源遮断を制御でき、オペレーティングシステムに依存せずにプロセッサ２の消費電力の削減が図れる。
【００２９】
なお、不揮発性メモリからなるＬ３以降の高次のキャッシュメモリについても、図５と同様の処理手順で、リード要求カウンタ９と電源制御コントローラ１０とによって電源遮断を制御することができる。したがって、本実施形態の特徴的な処理をより一般化すると、図５のステップＳ５の処理を行う要求判定部は、ｎ（ｎは２以上の整数）次のキャッシュメモリのうち不揮発性メモリからなる特定のメモリに対して、他のメモリから読み出しおよび書き込みの要求を行っていない期間が所定時間以上継続したか否かを判定する。また、電源制御コントローラ１０に対応する電源制御部は、要求判定部の判定結果に基づいて、上述した特定のメモリに対する電源遮断のタイミングを制御する。
【００３０】
（第２の実施形態）
以下に説明する第２の実施形態は、第１の実施形態よりも細かくＬ２キャッシュ７の電源遮断制御を行うものである。第２の実施形態に係るプロセッサ２の内部構成は、図１と同様であるため、説明を省略する。
【００３１】
図７は第２の実施形態に係る電源制御コントローラ１０の処理動作を示すフローチャートである。ステップＳ２１〜Ｓ２６では、図６のステップＳ１〜Ｓ６と同様に、Ｌ２動作なしカウンタのカウント値が予め定めた第１基準値を超えたか否かを判定する（ステップＳ２５）。Ｌ２動作なしカウンタのカウント値が第１基準値を超えた場合には、Ｌ２キャッシュ７の周辺回路部の電源遮断を行うよう、Ｌ２キャッシュ７に通知する（ステップＳ２７）。
【００３２】
このように、第２の実施形態では、Ｌ２キャッシュ７を周辺回路部とロジック部の二つに分けて、まず最初に周辺回路部の電源を遮断する。周辺回路部とは、例えば、図３に示したサブアレイ１１内の各回路ブロックである。
【００３３】
ステップＳ２５における第１基準値は、図５のステップＳ５の所定値よりも、例えば低い値に設定される。これにより、ステップＳ２７でＬ２キャッシュ７の電源遮断を通知するタイミングを第１の実施形態よりも早めることができる。
【００３４】
次に、リード要求カウンタ９のカウント値がゼロになったか否かを判定する（ステップＳ２８）。ゼロでなければ、Ｌ２キャッシュ７から遮断準備信号が届いたか否かを判定し（ステップＳ２９）、届いていなければステップＳ２８に戻り、届いたら、Ｌ２キャッシュ７の周辺回路部の電源遮断を指示する（ステップＳ３０）。
【００３５】
次に、Ｌ２動作なしカウンタのカウント値が予め定めた第２基準値を超えたか否かを判定する（ステップＳ３１）。まだ超えていなければＬ２動作なしカウンタのカウント値を更新して（ステップＳ３２）、ステップＳ３１に戻り、超えていればＬ２キャッシュ７のロジック部の電源遮断を指示する（ステップＳ３３）。これにより、Ｌ２キャッシュ７全体の電源が遮断されることになる。
【００３６】
ここで、Ｌ２キャッシュ７のロジック部とは、Ｌ２キャッシュ７の周辺回路部以外の回路部分であり、例えば、図２のサブアレイ１１の間にある方向切替回路１３や、不図示のＩ／Ｏ部などである。また、図３のサブアレイ１１の少なくとも一部、例えばロウデコーダ２２、カラムデコーダ２３および制御回路２８などをロジック部に含めて、ステップＳ３３の処理を行うときに電源を遮断してもよい。このように、Ｌ２キャッシュ７の内部構成をどのように周辺回路部とロジック部に分けるかは、任意に変更して構わない。
【００３７】
図７のフローチャートにおいて、ステップＳ２５とＳ３１の処理が要求判定部に該当する。
【００３８】
図８（ａ）および図８（ｂ）は第２の実施形態に係るプロセッサ２の動作状態と電源遮断箇所との対応関係を示す図である。図８（ａ）および図８（ｂ）は、図６（ａ）および図６（ｂ）のH-stateの代わりに、H1-stateとH2-stateを有する。図８（ａ）におけるC0-stateの次の状態であるH1-stateでは、Ｌ２キャッシュ７の周辺回路部の電源を遮断し、その次の状態であるH2-stateでは、ロジック部を含めてＬ２キャッシュ７全体の電源を遮断する。その後のC1〜C4-stateの電源遮断箇所は、図６（ａ）と同様である。また、図８（ｂ）は、C1/C2-stateの後にH1-stateとH2-stateを設けており、それ以外は図６（ｂ）と同様である。
【００３９】
このように、第２の実施形態では、Ｌ２キャッシュ７を周辺回路部とロジック部とに分けて、それぞれ別個のタイミングで電源を遮断するため、第１の実施形態よりもＬ２キャッシュ７の一部の電源遮断を開始するタイミングを早めることができ、より消費電力の削減が図れる。
【００４０】
上述した第２の実施形態では、Ｌ２キャッシュ７を周辺回路部とロジック部とに分けて電源遮断制御を行う例を示したが、Ｌ２キャッシュ７以降の不揮発性メモリからなる高次のキャッシュメモリのそれぞれについて、図７と同様の処理動作により、周辺回路部とロジック部とに分けて、別個のタイミングで電源を遮断してもよい。
【００４１】
（第３の実施形態）
以下に説明する第３の実施形態は、第２の実施形態よりもさらに細かくＬ２キャッシュ７の電源遮断制御を行うものである。第３の実施形態に係るプロセッサ２の内部構成は、図１と同様であるため、説明を省略する。
【００４２】
図９Ａおよび図９Ｂは第３の実施形態に係る電源制御コントローラ１０の処理動作を示すフローチャートである。ステップＳ４１〜Ｓ４６では、図７のステップＳ２１〜Ｓ２６と同様に、Ｌ２動作なしカウンタのカウント値が予め定めた第１基準値を超えたか否かを判定する（ステップＳ４５）。Ｌ２動作なしカウンタのカウント値が第１基準値を超えた場合には、Ｌ２キャッシュ７のクロック部の電源遮断を行うよう、Ｌ２キャッシュ７に通知する（ステップＳ４７）。
【００４３】
このように、第３の実施形態では、Ｌ２キャッシュ７を、クロック部、周辺回路部およびロジック部の３つに分けて、まず最初にクロック部の電源を遮断する。クロック部とは、Ｌ２キャッシュ７で利用するクロック信号を生成するバッファやフリップフロップ等である。
【００４４】
ステップＳ４５における第１基準値は、ステップＳ２５における第１基準値よりも、例えば低い値に設定される。これにより、ステップＳ４７でＬ２キャッシュ７の電源遮断を通知するタイミングを第２の実施形態よりも早めることができる。
【００４５】
ステップＳ４８〜Ｓ５６の処理は、図７のステップＳ２３以降の処理と同様であり、Ｌ２動作なしカウンタのカウント値が第２基準値を超えた場合には（ステップＳ５１でＹＥＳ）、Ｌ２キャッシュ７の周辺回路部の電源遮断を指示し（ステップＳ５２）、さらに、Ｌ２動作なしカウンタのカウント値が第３基準値を超えた場合には（ステップＳ５４でＹＥＳ）、Ｌ２キャッシュ７のロジック部の電源遮断を指示する（ステップＳ５６）。なお、第１〜第３基準値は、例えば第１基準値＜第２基準値＜第３基準値の関係にある。
【００４６】
図９Ａと図９Ｂのフローチャートにおいて、ステップＳ４５、Ｓ５１およびＳ５４の処理が要求判定部に該当する。
【００４７】
図１０（ａ）および図１０（ｂ）は第３の実施形態に係るプロセッサ２の動作状態と電源遮断箇所との対応関係を示す図である。図１０（ａ）および図１０（ｂ）は、図８（ａ）および図８（ｂ）と比較して、H3-stateが新たに追加になっている。C0-stateの次の状態であるH1-stateでは、Ｌ２キャッシュ７のクロック部の電源を遮断し、その次の状態であるH2-stateでは、Ｌ２キャッシュ７の周辺回路部の電源を遮断し、その次の状態であるH3-stateでは、ロジック部を含むＬ２キャッシュ７全体の電源を遮断する。その後のC1〜C4-stateの電源遮断箇所は、図６や図８と同様である。
【００４８】
このように、第３の実施形態では、Ｌ２キャッシュ７を、クロック部、周辺回路部およびロジック部の３つに分けて、それぞれ別個のタイミングで電源を遮断するため、第２の実施形態よりもさらに細かくＬ２キャッシュ７の電源を制御でき、より消費電力の削減が図れる。
【００４９】
上述した第３の実施形態では、Ｌ２キャッシュ７をクロック部、周辺回路部およびロジック部の３つに分けて電源遮断制御を行う例を示したが、Ｌ２キャッシュ７以降の不揮発性メモリからなる高次のキャッシュメモリのそれぞれについて、図７と同様の処理動作により、クロック部、周辺回路部およびロジック部に分けて、別個のタイミングで電源を遮断してもよい。
【００５０】
（第４の実施形態）
上述した第１〜第３の実施形態では、メモリ制御回路１の内部にリード要求カウンタ９を設けて、Ｌ１キャッシュ６からＬ２キャッシュ７への読み出し要求とそれに対する応答の回数を計測したが、以下に説明する第４の実施形態では、リード要求カウンタ９の代わりに、Ｌ２キャッシュ７内に動作状況監視部を設けるものである。
【００５１】
図１１は第４の実施形態に係るプロセッサ２の概略構成を示すブロック図である。図１１のプロセッサ２は、図１と比較して、リード要求カウンタ９がない代わりに、Ｌ２キャッシュ７の内部に動作状況監視部１４を備えている。
【００５２】
動作状況監視部１４は、Ｌ２キャッシュ７に対する読み出し要求、その要求に対する応答、Ｌ２キャッシュ７より高次のキャッシュメモリに対する読み出しおよび書き込み要求の有無を監視する。すなわち、第１〜第３の実施形態で説明したリード要求カウンタ９は、Ｌ１キャッシュ６からの読み出し要求とその応答回数だけを計測したが、動作状況監視部１４は、Ｌ１キャッシュ６だけでなく、Ｌ２キャッシュ７よりも高次のキャッシュメモリに対する読み出しおよび書き込み要求も監視する。
【００５３】
図１２は第４の実施形態に係るＬ２キャッシュ７の主要部の内部構成を示すブロック図である。図１２のＬ２キャッシュ７は、動作状況監視部１４と、Ｌ２キャッシュ７への書き込み待ちジョブを格納するライトバッファ１５と、Ｌ２キャッシュ７からの読み出し待ちジョブを格納するリードバッファ１６と、ライトバッファ１５の出力およびリードバッファ１６の出力のいずれか一方を選択するセレクタ１７と、セレクタ１７の出力をデコードするアドレスデコーダ１８と、図３に示したサブアレイ１１の周辺回路部１９とを有する。
【００５４】
動作状況監視部１４は、ライトバッファ１５に格納されている書き込み待ちジョブとリードバッファ１６に格納されている読み出し待ちジョブとに基づいて、Ｌ２キャッシュ７に書き込むべきジョブと、Ｌ２キャッシュ７から読み出すべきジョブとが残存するか否かを監視する。
【００５５】
より具体的には、動作状況監視部１４は、その内部に不図示の第１ジョブなしカウンタを有する。この第１ジョブなしカウンタは、ライトバッファ１５に格納されている書き込み待ちジョブとリードバッファ１６に格納されている読み出し待ちジョブとがなくなった時点で計測動作を開始し、Ｌ２キャッシュ７が書き込みおよび読み出しのジョブをいずれも持たない期間の長さを計測する。
【００５６】
図１３は第４の実施形態に係る動作状況監視部１４の処理動作を示すフローチャートである。まず、Ｌ２キャッシュ７上に処理待ちのジョブがあるか否かを判定する（ステップＳ６１）。ここでは、ライトバッファ１５とリードバッファ１６に処理待ちジョブが入っているか否かで判定する。
【００５７】
処理待ちのジョブがある場合は、ジョブがなくなるまでステップＳ６１に留まり、処理待ちのジョブがなくなると、第１ジョブなしカウンタを起動する（ステップＳ６２）。第１ジョブなしカウンタは、その起動後は、例えばプロセッサ２のシステムクロックに同期して、周期的にカウントアップ動作を行う。
【００５８】
次に、電源制御コントローラ１０、他のキャッシュメモリまたはメインメモリ８からジョブ要求が来たか否かを判定する（ステップＳ６３）。ステップＳ６３でジョブ要求が来たと判定されると、第１ジョブなしカウンタをリセットして（ステップＳ６４）、ステップＳ６１以降の処理を行う。
【００５９】
ステップＳ６３でジョブ要求が来ていないと判定されると、第１ジョブなしカウンタのカウント値が予め定めた所定値を超えたか否かを判定する（ステップＳ６５）。カウント値が所定値を超えていない場合は、第１ジョブなしカウンタのカウント動作を継続し（ステップＳ６６）、ステップＳ６３に戻る。
【００６０】
一方、ステップＳ６５でカウント値が所定値を超えたと判定されると、電源制御コントローラ１０に対してＬ２キャッシュ７の電源遮断許可信号を送る（ステップＳ６７）。その後、第１ジョブなしカウンタをリセットする（ステップＳ６８）。図１３のフローチャートにおいて、ステップＳ６５の処理が要求判定部に該当する。
【００６１】
図１４は第４の実施形態に係る電源制御コントローラ１０の処理動作を示すフローチャートである。まず、Ｌ２キャッシュ７は電源遮断状態か否かを判定する（ステップＳ７１）。電源遮断状態でなければ、動作状況監視部１４から電源遮断許可信号が送られてきたか否かを判定する（ステップＳ７２）。この電源遮断許可信号が送られてくるまでステップＳ７２に待機し、送られてくると、Ｌ２キャッシュ７に対して電源遮断を指示する（ステップＳ７３）。
【００６２】
ステップＳ７１でＬ２キャッシュ７が電源遮断状態と判定された場合、またはステップＳ７３の処理が終了した場合は、動作状況監視部１４、他のキャッシュメモリまたはメインメモリ８からジョブ要求が来たか否かを判定する（ステップＳ７４）。ジョブ要求が来るまでステップＳ７４で待機し、ジョブ要求が来ると、Ｌ２キャッシュ７の電源を復帰する処理を行う（ステップＳ７５）。
【００６３】
このように、第４の実施形態では、Ｌ２キャッシュ７内に動作状況監視部１４を設けて、Ｌ２キャッシュ７内のライトバッファ１５とリードバッファ１６に処理待ちジョブが入っているか否かを監視して、Ｌ２キャッシュ７内に処理待ちジョブがない状態が所定時間以上継続したか否かを第１ジョブなしカウンタのカウント値で判断する。これにより、Ｌ２キャッシュ７内に処理待ちジョブがない状態が所定時間以上継続すると、Ｌ２キャッシュ７の電源を遮断することができる。第１〜第３の実施形態では、Ｌ１キャッシュ６からＬ２キャッシュ７への読み出し要求とその応答の回数をリード要求カウンタ９で計測して、Ｌ２キャッシュ７の電源遮断のタイミングを制御したが、本実施形態の動作状況監視部１４は、ライトバッファ１５とリードバッファ１６の内容により、Ｌ１キャッシュ６に限らず、他のキャッシュメモリやメインメモリ８からＬ２キャッシュ７メモリに何らかのジョブ要求があったか否かを監視できるため、第１〜第３の実施形態よりも、より信頼性よく、Ｌ２キャッシュ７が何らかのジョブ要求を受けているか否かを判断できる。
【００６４】
（第５の実施形態）
上述した第４の実施形態では、Ｌ２キャッシュ７を一括して電源遮断していたが、以下に説明する第５の実施形態では、第２の実施形態と同様に、Ｌ２キャッシュ７を周辺回路部とロジック部に分けて、それぞれ異なるタイミングで段階的に電源遮断するものである。第５の実施形態に係るプロセッサ２の内部構成は第４の実施形態と同様であるため、説明を省略する。
【００６５】
図１５は第５の実施形態に係る電源制御コントローラ１０の処理動作を示すフローチャートである。まず、Ｌ２キャッシュ７は電源遮断状態か否かを判定する（ステップＳ８１）。電源遮断状態でなければ、動作状況監視部１４から電源遮断信号が送られて来たか否かを判定し（ステップＳ８２）、電源遮断信号が送られて来るまでステップＳ８２に待機する。
【００６６】
動作状況監視部１４から電源遮断信号が送られて来ると、Ｌ２キャッシュ７の周辺回路部の電源遮断をＬ２キャッシュ７に対して指示し（ステップＳ８３）、第２ジョブなしカウンタを起動する（ステップＳ８４）。ここで、第２ジョブなしカウンタは、電源制御コントローラ１０内に設けられるもので、Ｌ２キャッシュ７内の一部の電源を遮断した後に、Ｌ２キャッシュ７にジョブ要求がない状態が所定時間以上継続したか否かを判断するために用いられる。第２ジョブなしカウンタは、起動すると、例えばプロセッサ２のシステムクロックに同期して、周期的にカウントアップ動作を行う。
【００６７】
次に、動作状況監視部１４、他のキャッシュメモリまたはメインメモリ８からＬ２に対してジョブ要求があったか否かを判定する（ステップＳ８５）。ジョブ要求がなければ、第２ジョブなしカウンタのカウント値が予め定めた所定値を超えたか否かを判定し（ステップＳ８６）、所定値を超えていなければ、第２ジョブなしカウンタのカウント動作を継続し（ステップＳ８７）、ステップＳ８６に戻る。所定値を超えた場合には、Ｌ２キャッシュ７のロジック部の電源遮断をＬ２キャッシュ７に対して指示する（ステップＳ８８）。
【００６８】
次に、動作状況監視部１４、他のキャッシュメモリまたはメインメモリ８からＬ２キャッシュ７に対してジョブ要求があったか否かを判定する（ステップＳ８９）。ジョブ要求があるまでステップＳ８９で待機し、ジョブ要求があると、Ｌ２キャッシュ７の電源復帰をＬ２キャッシュ７に対して指示する（ステップＳ９０）。
【００６９】
一方、ステップＳ８１でＬ２キャッシュ７は電源遮断状態であると判定された場合、Ｌ２キャッシュ７の周辺回路部のみを電源遮断しているか否かを判定する（ステップＳ９１）。ステップＳ９１がＹＥＳの場合は、ステップＳ８５の処理を行い、ＮＯの場合は、ステップＳ８９の処理を行う。
【００７０】
図１５のフローチャートにおいて、ステップＳ８２およびＳ８６の処理が要求判定部に該当する。
【００７１】
このように、第５の実施形態では、Ｌ２キャッシュ７の内部に動作状況監視部１４を設けて、Ｌ２キャッシュ７の処理待ちジョブの有無を監視し、その監視結果に基づいて、Ｌ２キャッシュ７を周辺回路部とロジック部に分けて段階的に電源遮断することができる。
【００７２】
（第６の実施形態）
以下に説明する第６の実施形態は、動作状況監視部１４を用いて、Ｌ２キャッシュ７を３つに分けて段階的に電源遮断するものである。
【００７３】
図１６Ａおよび図１６Ｂは第６の実施形態に係る電源制御コントローラ１０の処理動作を示すフローチャートである。まず、Ｌ２キャッシュ７は電源遮断状態か否かを判定する（ステップＳ１０１）。電源遮断状態でなければ、動作状況監視部１４から電源遮断信号が送られて来たか否かを判定する（ステップＳ１０２）。電源遮断信号が送られて来るまでステップＳ１０２に待機し、送られて来ると、Ｌ２キャッシュ７のクロック部の電源遮断をＬ２キャッシュ７に対して指示する（ステップＳ１０３）とともに、第２ジョブなしカウンタを起動する（ステップＳ１０４）。
【００７４】
次に、動作状況監視部１４、他のキャッシュメモリまたはメインメモリ８からＬ２キャッシュ７に対して何らかのジョブ要求があったか否かを判定する（ステップＳ１０５）。ジョブ要求がなければ、第２ジョブなしカウンタのカウント値が第１基準値を超えたか否かを判定する（ステップＳ１０６）。第１基準値を超えていなければ、第２ジョブなしカウンタのカウントアップ動作を継続し（ステップＳ１０７）、ステップＳ１０５に戻る。
【００７５】
ステップＳ１０６で第１基準値を超えたと判定された場合は、Ｌ２キャッシュ７の周辺回路部の電源遮断をＬ２キャッシュ７に対して指示する（ステップＳ１０８）。
【００７６】
次に、動作状況監視部１４、他のキャッシュメモリまたはメインメモリ８からＬ２キャッシュ７に対して何らかのジョブ要求があったか否かを判定する（ステップＳ１０９）。ステップＳ１０９でジョブ要求がないと判定されると、第２ジョブなしカウンタのカウント値が第２基準値を超えたか否かを判定する（ステップＳ１１０）。第２基準値を超えていなければ、第２ジョブなしカウンタのカウントアップ動作を継続し（ステップＳ１１１）、ステップＳ１０９に戻る。
【００７７】
ステップＳ１１０で第２基準値を超えたと判定されると、Ｌ２キャッシュ７のロジック部の電源遮断をＬ２キャッシュ７に対して指示する（ステップＳ１１２）。
【００７８】
次に、動作状況監視部１４、他のキャッシュメモリまたはメインメモリ８からＬ２キャッシュ７に対して何らかのジョブ要求があったか否かを判定する（ステップＳ１１３）。ジョブ要求があるまでステップＳ１１３に待機し、ジョブ要求があると、Ｌ２キャッシュ７に対して電源復帰を指示する（ステップＳ１１４）。
【００７９】
一方、ステップＳ１０１でＬ２キャッシュ７は電源遮断状態であると判定されると、Ｌ２キャッシュ７のクロック部のみを電源遮断中であるか否かを判定する（ステップＳ１１５）。ステップＳ１１５がＹＥＳであれば、ステップＳ１０５に進み、ＮＯであれば、Ｌ２キャッシュ７の周辺回路部のみを電源遮断中であるか否かを判定する（ステップＳ１１６）。ステップＳ１１６がＹＥＳであれば、ステップＳ１０９に進み、ＮＯであれば、ステップＳ１１３に進む。
【００８０】
図１６Ａおよび図１６Ｂのフローチャートにおいて、ステップＳ１０２、Ｓ１０６およびＳ１１０の処理が要求判定部に該当する。
【００８１】
このように、第６の実施形態では、Ｌ２キャッシュ７の内部に動作状況監視部１４を設けて、Ｌ２キャッシュ７の処理待ちジョブの有無を監視し、その監視結果に基づいて、Ｌ２キャッシュ７をクロック部、周辺回路部およびロジック部に分けて段階的に電源遮断することができる。
【００８２】
上述した各実施形態では、Ｌ２キャッシュ７のメモリセルがＭＲＡＭセルの例を説明したが、他の不揮発性メモリ（例えば、ＮＡＮＤフラッシュメモリセル）で構成されていてもよい。また、上述した各実施形態において、メモリ制御回路１の一部あるいは全部は、Ｌ１キャッシュ６またはＬ２キャッシュ７に内蔵してもよい。さらに、上述した各実施形態において、特定のメモリに対する電源を遮断する際には、特定のメモリ以外のｎ（ｎは２以上の整数）のキャッシュメモリとメインメモリ８のうち、電源を遮断可能なメモリ内の一部または全部をすべて一括で遮断してもよい。あるいは、特定のメモリを含めてｎ次のキャッシュメモリのうち不揮発性メモリのそれぞれについて、個別に電源遮断のタイミングを制御してもよい。
【００８３】
上述した実施形態で説明したメモリ制御回路１およびプロセッサ２の少なくとも一部は、ハードウェアで構成してもよいし、ソフトウェアで構成してもよい。ソフトウェアで構成する場合には、メモリ制御回路１およびプロセッサ２の少なくとも一部の機能を実現するプログラムをフレキシブルディスクやＣＤ−ＲＯＭ等の記録媒体に収納し、コンピュータに読み込ませて実行させてもよい。記録媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でもよい。
【００８４】
また、メモリ制御回路１およびプロセッサ２の少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線（無線通信も含む）を介して頒布してもよい。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布してもよい。
【００８５】
本発明の態様は、上述した個々の実施形態に限定されるものではなく、当業者が想到しうる種々の変形も含むものであり、本発明の効果も上述した内容に限定されない。すなわち、特許請求の範囲に規定された内容およびその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲で種々の追加、変更および部分的削除が可能である。
【符号の説明】
【００８６】
１  メモリ制御回路、２  プロセッサ、３  コア、４  ＡＬＵ、５  レジスタ、６  Ｌ１キャッシュ、７  Ｌ２キャッシュ、８  メインメモリ、９  リード要求カウンタ、１０  電源制御コントローラ、１１  サブアレイ、１２  配線部、１３  方向切替回路、１４  動作状況監視部、１５  ライトバッファ、１６  リードバッファ、１７  セレクタ、１８  アドレスデコーダ、１９  周辺回路部、２１  セルアレイ、２２  ロウデコーダ、２３  カラムデコーダ、２４  カラム選択回路、２５  クランプ回路、２６  センスアンプ、２７  データラッチ回路、２８  制御回路、２９  冗長セル群、３１  ＭＲＡＭセル、３２  磁気抵抗効果素子
【図１】
2015022330.tif 000003
【図２】
2015022330.tif 000004
【図３】
2015022330.tif 000005
【図４】
2015022330.tif 000006
【図５】
2015022330.tif 000007
【図６】
2015022330.tif 000008
【図７】
2015022330.tif 000009
【図８】
2015022330.tif 000010
【図９Ａ】
2015022330.tif 000011
【図９Ｂ】
2015022330.tif 000012
【図１０】
2015022330.tif 000013
【図１１】
2015022330.tif 000014
【図１２】
2015022330.tif 000015
【図１３】
2015022330.tif 000016
【図１４】
2015022330.tif 000017
【図１５】
2015022330.tif 000018
【図１６Ａ】
2015022330.tif 000019
【図１６Ｂ】
2015022330.tif 000020