(57)【特許請求の範囲】
【請求項１】
データが格納される下位メモリと、前記下位メモリのデータがキャッシュされるキャッシュメモリとを有するメモリ部と、
前記下位メモリの電源を制御する電源制御回路と、
前記メモリ部とバスを介して接続されており、前記バスをロックして前記メモリ部のデータにアクセスするバスマスタと、を備え、
前記キャッシュメモリのミスが発生したときに前記下位メモリの電源が遮断されている場合、前記電源制御回路が、前記下位メモリの電源を復帰するとともに、前記メモリ部が、前記アクセスに対するレスポンスを前記バスマスタに出力し、
前記バスマスタは、前記メモリ部からのレスポンスに応じて前記バスのロックを一旦解除し、前記下位メモリの電源の復帰が完了した後に、前記バスをロックしてのアクセスを再実行する、
半導体装置。
【請求項２】
前記メモリ部は、前記バスマスタからのアクセスが正常である場合、前記アクセスに対するレスポンスとして、アクセスが正常完了したことを示す正常完了データを前記バスマスタに出力し、前記バスマスタからのアクセスが不正である場合、前記アクセスに対するレスポンスとして、アクセスがエラー完了したことを示すエラー完了データを前記バスマスタに出力するものであり、
前記バスマスタは、前記メモリ部から前記正常完了データが入力された場合、及び、前記メモリ部から前記エラー完了データが入力された場合、前記バスのロックを解除するものであり、
前記メモリ部は、前記キャッシュメモリのミスが発生したときに前記下位メモリの電源が遮断されている場合に出力するレスポンスとして、前記エラー完了データを前記バスマスタに出力する、
請求項１に記載の半導体装置。
【請求項３】
前記バスマスタは、前記メモリ部から前記エラー完了データが入力された場合、前記アクセスを再実行するものであり、
前記メモリ部は、前記キャッシュメモリのミスが発生したときに前記下位メモリの電源が遮断されている場合、キャッシュミス割込信号を出力し、
前記バスマスタは、前記メモリ部から前記エラー完了データが入力された場合であっても、前記メモリ部からキャッシュミス割込信号が出力された場合、前記下位メモリの電源の復帰が完了するまで、前記バスをロックしてのアクセスの再実行を抑止する、
請求項２に記載の半導体装置。
【請求項４】
前記メモリ部は、前記キャッシュミス割込信号を前記電源制御回路に出力し、
前記電源制御回路は、前記メモリ部からのキャッシュミス割込信号に応じて、前記下位メモリの電源を復帰するとともに、キャッシュミス割込信号を前記バスマスタに出力し、
前記バスマスタは、前記電源制御回路からのキャッシュミス割込信号の入力により、前記メモリ部からのキャッシュミス割込信号の出力を認識する、
請求項３に記載の半導体装置。
【請求項５】
前記メモリ部は、前記キャッシュミス割込信号を前記バスマスタに出力し、
前記バスマスタは、前記メモリ部からのキャッシュミス割込信号の入力により、前記メモリ部からのキャッシュミス割込信号の出力を認識するとともに、前記メモリ部からのキャッシュミス割込信号に応じて前記下位メモリの電源の復帰を指示する信号を前記電源制御回路に出力し、
前記電源制御回路は、前記バスマスタからの信号に応じて、前記下位メモリの電源を復帰する、
請求項３に記載の半導体装置。
【請求項６】
前記バスマスタは、ＤＭＡコントローラであり、
前記半導体装置は、さらに、ＣＰＵを有し、
前記メモリ部は、前記キャッシュメモリのミスが発生したときに前記下位メモリの電源が遮断されている場合、キャッシュミス割込信号を出力し、
前記ＣＰＵは、前記メモリ部からキャッシュミス割込信号が出力された場合、前記下位メモリの電源の復帰が完了するまで、前記ＤＭＡコントローラによる前記バスをロックしてのアクセスの再実行を抑止する、
請求項１に記載の半導体装置。
【請求項７】
前記バスマスタは、前記電源制御回路からキャッシュミス割込信号が入力されたときから、前記下位メモリの電源の復帰が完了する時間として予め定められた時間が経過したときに、前記下位メモリの電源の復帰が完了したものとして、前記バスをロックしてのアクセスを再実行する、
請求項４に記載の半導体装置。
【請求項８】
前記半導体装置は、さらに、前記バスマスタから指定された時間の経過を計測し、当該指定された時間が経過したときに、タイマ割込信号を前記バスマスタに出力するタイマを備え、
前記バスマスタは、前記タイマからのタイマ割込信号に応じて、前記下位メモリの電源の遮断を前記電源制御回路に指示し、
前記電源制御回路は、前記バスマスタからの指示に応じて、前記下位メモリの電源を遮断する、
請求項１に記載の半導体装置。
【請求項９】
前記下位メモリは、メインメモリである、
請求項１に記載の半導体装置。
【請求項１０】
前記メインメモリは、不揮発性メモリである、
請求項９に記載の半導体装置。
【請求項１１】
データが格納される下位メモリと、前記下位メモリのデータがキャッシュされるキャッシュメモリとを有するメモリ部とバスを介して接続されるバスマスタが、前記バスをロックして前記メモリ部のデータにアクセスし、
前記キャッシュメモリのミスが発生したときに前記下位メモリの電源が遮断されている場合、前記下位メモリの電源を復帰するとともに、前記メモリ部が、前記アクセスに対するレスポンスを前記バスマスタに送信し、
前記バスマスタが、前記メモリ部からのレスポンスに応じて前記バスのロックを一旦解除し、前記下位メモリの電源の復帰が完了した後に、前記バスをロックしてのアクセスを再実行する
メモリアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置及びメモリアクセス制御方法に関し、例えば、バスマスタがメモリ部にアクセスするときに、バスをロックしてアクセスする技術に関する。
【背景技術】
【０００２】
特許文献１には、オペレーティングシステムによる電力管理以外の手法で、キャッシュメモリの効率的な電力制御を行うことを目的としたメモリ制御回路が開示されている。メモリ制御回路は、１次のキャッシュメモリから２次のキャッシュメモリへの読み出し要求があるとリード要求カウンタをカウントアップし、この要求に応じて２次のキャッシュメモリが１次のキャッシュメモリに応答するとリード要求カウンタをカウントダウンする。メモリ制御回路は、リード要求カウンタのカウント値がゼロになると、Ｌ２動作なしカウンタを起動する。メモリ制御回路は、Ｌ２動作なしカウンタのカウント値が予め定めた所定値を超えた場合、Ｌ２キャッシュの電源遮断を行う。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１５−２２３３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、この特許文献１に開示の技術では、Ｌ２キャッシュの電源遮断後に、バスマスタからＬ１キャッシュに対してキャッシュミスが発生するバスアクセスが行われた場合、Ｌ２キャッシュの電源を復帰し、Ｌ２キャッシュに格納されたデータのリードが可能となるまでは、バスアクセスが完了せず、バスマスタにレスポンスを返すことができない。
【０００５】
よって、バスアクセスが完了するまでに長い時間が掛かってしまうことになるが、その間、そのバスアクセスによってバスがロックされた状態となってしまう。すなわち、長い時間の間、他のバスアクセスを実行することができなくなってしまうため、そのバスアクセスをしたバスマスタ又は他のバスマスタがバスアクセスを伴う緊急な処理（例えば割込に応じたバスアクセスを伴う処理等）を迅速に実行できなくなってしまう、という問題がある。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、半導体装置は、バスマスタからのアクセスで、メモリ部のキャッシュメモリのミスが発生したときに下位メモリの電源が遮断されている場合、電源制御回路が、下位メモリの電源を復帰するとともに、メモリ部が、アクセスに対するレスポンスをバスマスタに出力し、バスマスタは、メモリ部からのレスポンスに応じてバスのロックを一旦解除し、下位メモリの電源の復帰が完了した後に、バスをロックしてのアクセスを再実行するものである。
【発明の効果】
【０００８】
前記一実施の形態によれば、メモリの低消費電力化を実現しつつも、バスマスタがバスアクセスを伴う緊急な処理を、より迅速に実行することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係る半導体装置の構成を示す図である。
【図２】実施の形態１に係る半導体装置によるＬ２キャッシュの電源遮断時の動作を示すフローチャートである。
【図３】実施の形態１に係る半導体装置によるＬ２キャッシュの電源復帰時の動作を示すフローチャートである。
【図４】実施の形態１に係るＣＰＵによるＬ２キャッシュの電源復帰時の動作を示すフローチャートである。
【図５】実施の形態２に係る半導体装置の構成を示す図である。
【図６】実施の形態２に係る半導体装置によるＬ２キャッシュの電源遮断時の動作を示すフローチャートである。
【図７】実施の形態２に係る半導体装置によるＬ２キャッシュの電源復帰時の動作を示すフローチャートである。
【図８】実施の形態３に係る半導体装置の構成を示す図である。
【図９】実施の形態３に係るＣＰＵによるＬ２キャッシュの電源復帰時の動作を示すフローチャートである。
【図１０】実施の形態４に係る半導体装置の構成を示す図である。
【図１１】実施の形態５に係る半導体装置の構成を示す図である。
【図１２】実施の形態に係る半導体装置の概略構成を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照しながら、好適な実施の形態について説明する。以下の実施の形態に示す具体的な数値などは、実施の形態の理解を容易とするための例示にすぎず、特に断る場合を除き、それに限定されるものではない。また、以下の記載及び図面では、説明の明確化のため、当業者にとって自明な事項などについては、適宜、省略及び簡略化がなされている。
【００１１】
＜実施の形態１＞
まず、図１を参照して、実施の形態１に係る半導体装置１の構成について説明する。図１に示すように、半導体装置１は、ＣＰＵ（Central Processing Unit）１０と、メモリサブシステム２０と、ハードウェアシーケンサ３０と、タイマ４０と、ＳＲＡＭ（Static Random Access Memory）５０とを有する。
【００１２】
この半導体装置１は、ＰＣ（Personal Computer）、スマートフォン、タブレット及びウェアラブルコンピュータ等の情報処理装置、家電機器、又は、工場における制御装置などの各種装置に実装することができる。
【００１３】
ＣＰＵ１０、メモリサブシステム２０、ハードウェアシーケンサ３０、タイマ４０及びＳＲＡＭ５０のそれぞれは、バス９０を介して相互に接続されている。
【００１４】
本実施の形態１に係る半導体装置１の構成の特徴を以下に示す。
・電源遮断しないメモリ  ＝  Ｌ１キャッシュ２１
・電源遮断するメモリ  ＝  Ｌ２キャッシュ２３
・バスマスタ  ＝  ＣＰＵ１０
・電源制御モジュール  ＝  ハードウェアシーケンサ３０
・電源遮断のトリガ  ＝  タイマ割込
・電源復帰のトリガ  ＝  キャッシュミス割込
【００１５】
ＣＰＵ１０は、メインメモリ２４に格納されるデータを用いて、半導体装置１を制御する処理を実行する演算装置である。例えば、メインメモリ２４には、ＣＰＵ１０により演算中のデータ、及び、上述の半導体装置１を制御する処理をＣＰＵ１０に実行させるプログラム等が格納される。ＣＰＵ１０は、メインメモリ２４に格納されたプログラムを実行することで、上述の半導体装置１を制御する処理を実行する。
【００１６】
ＣＰＵ１０は、通常はメインメモリ２４に格納されたデータ及びプログラムを、ＳＲＡＭ５０へはロードせずに、直接読み出して利用する。しかし、ＣＰＵ１０は、必要に応じて、メインメモリ２４に格納されるデータをＳＲＡＭ５０にロードし、ＳＲＡＭ５０にロードしたデータを用いて処理を実行してもよい。この場合、ＣＰＵ１０は、適宜、プログラムをメインメモリ２４からＳＲＡＭ５０にロードして実行する。
【００１７】
すなわち、ＣＰＵ１０は、バススレーブ（メモリサブシステム２０、ハードウェアシーケンサ３０、タイマ４０及びＳＲＡＭ５０等）に対して、バス９０を介してアクセスするバスマスタである。
【００１８】
メモリサブシステム２０は、Ｌ１キャッシュ２１、電源遮断セル２２、Ｌ２キャッシュ２３及びメインメモリ２４を有する。Ｌ１キャッシュ２１とＬ２キャッシュ２３は、電源遮断セル２２を介して接続されている。Ｌ２キャッシュ２３は、メインメモリ２４と接続されている。
【００１９】
Ｌ１キャッシュ２１は、メインメモリ２４に格納されるデータのうち、一部のデータがキャッシュされるキャッシュメモリである。Ｌ１キャッシュ２１は、ＣＰＵ１０からメモリサブシステム２０に対して、メインメモリ２４における、あるアドレスのデータのリードが要求されたときに、そのアドレスのデータが自身にキャッシュされている場合（すなわち、Ｌ１キャッシュ２１にヒットした場合）、その自身に格納されているデータをＣＰＵ１０に出力するとともに、リードの完了をＣＰＵ１０に通知する。一方、Ｌ１キャッシュ２１は、ＣＰＵ１０からメモリサブシステム２０に対して、メインメモリ２４における、あるアドレスのデータのリードが要求されたときに、そのアドレスのデータが自身にキャッシュされていない場合（すなわち、Ｌ１キャッシュ２１がミスした場合）、そのアドレスのデータのリードをＬ２キャッシュ２３に要求する。
【００２０】
電源遮断セル２２は、Ｌ２キャッシュ２３を電源遮断する前に、ハードウェアシーケンサ３０によって有効化される。電源遮断セル２２は、ハードウェアシーケンサ３０によって有効化されている間、Ｌ２キャッシュ２３が電源遮断されている場合であっても、Ｌ１キャッシュ２１のノードが中間電位にならないようにする等の処理を行う回路である。また、電源遮断セル２２は、Ｌ２キャッシュ２３を電源復帰させた後に、ハードウェアシーケンサ３０によって無効化される。電源遮断セル２２は、ハードウェアシーケンサ３０によって無効化されている間は、上述のＬ１キャッシュ２１のノードが中間電位にならないようにする等の処理は行わない。
【００２１】
Ｌ２キャッシュ２３は、メインメモリ２４に格納されるデータのうち、一部のデータがキャッシュされるキャッシュメモリである。Ｌ２キャッシュ２３は、Ｌ１キャッシュ２１よりも下位レベルのメモリであり、Ｌ１キャッシュ２１よりも多くのデータをキャッシュすることができる。言い換えると、Ｌ１キャッシュ２１には、そのＬ２キャッシュ２３に格納されるデータのうち、一部のデータがキャッシュされる。
【００２２】
Ｌ２キャッシュ２３は、ＣＰＵ１０からメモリサブシステム２０に対して、Ｌ１キャッシュ２１から、あるアドレスのデータのリードが要求されたときに、そのアドレスのデータが自身にキャッシュされている場合（すなわち、Ｌ２キャッシュ２３にヒットした場合）、その自身に格納されているデータをＬ１キャッシュ２１に出力する。この場合、Ｌ１キャッシュ２１は、Ｌ２キャッシュ２３から出力されたデータを、ＣＰＵ１０に出力するとともに、リードの完了をＣＰＵ１０に通知する。また、Ｌ１キャッシュ２１は、このＬ２キャッシュ２３から出力されたデータを、自身にキャッシュする。
【００２３】
一方、Ｌ２キャッシュ２３は、Ｌ１キャッシュ２１から、メインメモリ２４における、あるアドレスのデータのリードが要求されたときに、そのアドレスのデータが自身にキャッシュされていない場合（すなわち、Ｌ２キャッシュ２３がミスした場合）、そのアドレスのデータのリードをメインメモリ２４に要求する。
【００２４】
メインメモリ２４は、上述したように、ＣＰＵ１０によって利用されるデータが格納される。メインメモリ２４は、メモリサブシステム２０において最下位レベルのメモリであり、他のメモリのデータをキャッシュするものではない。メインメモリ２４は、例えば、ＤＲＡＭ（Dynamic Random Access Memory）、又は、不揮発性メモリ（ＮＶＭ：Non-Volatile Memory）等である。
【００２５】
メインメモリ２４は、Ｌ２キャッシュ２３から、あるアドレスのデータのリードが要求されたとき、そのアドレスのデータをＬ２キャッシュ２３に出力する。この場合、Ｌ２キャッシュ２３は、メインメモリ２４から出力されたデータを、自身にキャッシュするとともに、Ｌ１キャッシュ２１に出力する。Ｌ１キャッシュ２１は、Ｌ２キャッシュ２３から出力されたデータを、ＣＰＵ１０に出力するとともに、リードの完了をＣＰＵ１０に通知する。また、Ｌ１キャッシュ２１は、このＬ２キャッシュ２３から出力されたデータを、自身にキャッシュする。
【００２６】
ＣＰＵ１０は、メモリサブシステム２０（Ｌ１キャッシュ２１）からリードの完了が通知された場合、メモリサブシステム２０（Ｌ１キャッシュ２１）から出力されているデータを、メモリサブシステム２０からリードしたデータとして取得する。
【００２７】
ハードウェアシーケンサ３０は、Ｌ２キャッシュ２３の電源状態を制御する回路である。より具体的には、ハードウェアシーケンサ３０は、Ｌ２キャッシュ２３の電源遮断（電源オフ）、及び、Ｌ２キャッシュ２３の電源復帰（電源オン）を行うことができる。また、ハードウェアシーケンサ３０は、上述したように、電源遮断セル２２を有効化／無効化状態を制御する。より具体的には、ハードウェアシーケンサ３０は、電源遮断セル２２の有効化、及び、電源遮断セル２２の無効化を行うことができる。
【００２８】
タイマ４０は、ＣＰＵ１０からの指示に基づいて、ＣＰＵ１０から設定された時間の経過を計測し、その設定された時間が経過したことをＣＰＵ１０に通知する回路である。タイマ４０は、ＣＰＵ１０から設定された時間が経過したことの通知として、タイマ割込信号をＣＰＵ１０に出力する。
【００２９】
ＳＲＡＭ５０は、上述したように、ＣＰＵ１０によって利用されるデータが格納されるメモリである。
【００３０】
バス９０は、アドレス線（アドレスバス）と、データ線（データバス）と、制御線（コントロールバス）とが含まれる。ＣＰＵ１０は、上述したように、メモリサブシステム２０に対して、メインメモリ２４における、あるアドレスに格納されたデータのリードを要求する場合、そのアドレスを示すアドレスデータを、アドレス線を介してメモリサブシステム２０に出力するとともに、リードを要求することを示すリード要求データを、制御線を介してメモリサブシステム２０に出力する。
【００３１】
Ｌ１キャッシュ２１は、ＣＰＵ１０から制御線を介してリード要求データが入力された場合、上述したように、ＣＰＵ１０からアドレス線を介して入力されたアドレスデータが示すアドレスのデータを、自身、Ｌ２キャッシュ２３又はメインメモリ２４から取得する処理を行う。Ｌ１キャッシュ２１は、取得したデータを、データ線を介してＣＰＵ１０に出力するとともに、リードが完了したことを示すリード完了データを、制御線を介してＣＰＵ１０に出力する。
【００３２】
ここで、ＣＰＵ１０は、リード要求データをメモリサブシステム２０に出力するときから、メモリサブシステム２０からリード完了データが入力されるまで、バス９０をロックする。より具体的には、ＣＰＵ１０は、リード要求データを出力する前に、制御線を介してバスロック信号の出力を開始し、リード完了データが入力された後に、バスロック信号の出力を終了する。バスマスタは、自身に制御線を介してバスロック信号が入力されている間は、バス９０を介した他の回路（他のバスマスタ又はバススレーブ）へのアクセスを抑止する。これにより、複数のバスマスタによるバス９０へのアクセスが競合することを回避するようにしている。
【００３３】
一方で、上述したように、Ｌ２キャッシュ２３が電源遮断されている状態でＬ１キャッシュ２１がミスした場合に、Ｌ１キャッシュ２１が、Ｌ２キャッシュ２３を電源復帰してから、Ｌ２キャッシュ２３にリードを要求し、その要求に応じてデータを取得してから、リードの完了をＣＰＵ１０に通知するようにしてしまうと、長い時間の間、バス９０がロックされた状態となる。そのため、ＣＰＵ１０又は他のバスマスタ（図示せず）がバスアクセスを伴う緊急な処理を迅速に実行することができなくなってしまうという問題がある。
【００３４】
この問題を解決するために、本実施の形態１では、一般的には、Ｌ１キャッシュがＣＰＵからのリード要求が不正な場合（例えばアドレスデータが示すアドレスが不正な場合）にＣＰＵに返していたバスエラー（リードがエラー完了したことを示すリード完了データの出力）を、Ｌ２キャッシュ２３が電源遮断されている状態でＬ１キャッシュ２１がミスした場合にも発生させることで、Ｌ２キャッシュ２３が電源復帰するまでに、一旦、ＣＰＵ１０によるバス９０のロックを解除させ、バスマスタによる他のバスアクセスを可能とする。以下、その動作について具体的に説明していく。
【００３５】
続いて、図２を参照して、実施の形態１に係る半導体装置１によるＬ２キャッシュ２３の電源遮断時の動作について説明する。
【００３６】
ＣＰＵ１０は、上述のプログラムとして、ＣＰＵ１０上で動作する任意のアプリケーションソフトウェアを実行する（Ｓ１）。このアプリケーションプログラムの実行は、タイマ４０がカウントする値が、予め定められた値未満である間（Ｓ２：ＮＯ）、継続される。ここで、この「予め定められた値」とは、ＣＰＵ１０が、タイマ４０に時間の計測を指示するときに、その計測する時間としてタイマ４０に設定する値である。すなわち、このアプリケーションプログラムの実行は、タイマ４０が、ＣＰＵ１０から設定された時間の経過を計測し、タイマ割込信号をＣＰＵ１０に出力するまで継続される。
【００３７】
ここで、このＣＰＵ１０が設定する時間として、以下の（１）〜（４）のいずれかの方法を利用してよい。
（１）半導体装置１の起動完了時から所定時間
（２）アプリケーションソフトウェアの起動完了時から所定時間
（３）バスマスタからメモリサブシステム２０への最後のアクセス時から所定時間
（４）所定時刻までの時間
【００３８】
（１）の方法の場合、ＣＰＵ１０は、半導体装置１の起動が完了したときに、タイマ４０に対して所定時間の計測の開始を指示する。この「半導体装置１の起動が完了したとき」とは、例えば、半導体装置１の電源投入後、ＣＰＵ１０によってアプリケーションソフトウェアの起動を開始するとき（アプリケーションソフトウェアの起動が可能となったとき）としてもよい。よって、この場合、タイマ４０は、半導体装置１の起動が完了した時点から、所定時間が経過した時点で、タイマ割込信号をＣＰＵ１０に出力する。
【００３９】
（２）の方法の場合、ＣＰＵ１０は、アプリケーションソフトウェアの起動が完了したときに、タイマ４０に対して所定時間の計測の開始を指示する。よって、この場合、タイマ４０は、アプリケーションソフトウェアの起動が完了した時点から、所定時間が経過した時点で、タイマ割込信号をＣＰＵ１０に出力する。
【００４０】
（３）の方法の場合、メモリサブシステム２０は、バスマスタ（例えばＣＰＵ１０）から自身に対するアクセスがあったときに、タイマ４０に対して所定時間の計測の開始を指示する。なお、タイマ４０による所定時間の経過の計測中に、メモリサブシステム２０に対するアクセスがあったときには、メモリサブシステム２０は、タイマ４０による現在実行中の時間の計測を解除し、新たに、タイマ４０に対して所定時間の計測の開始を指示する。よって、この場合、タイマ４０は、バスマスタからメモリサブシステム２０への最後のアクセスから所定時間が経過した時点で、タイマ割込信号をＣＰＵ１０に出力する。
【００４１】
（４）の方法の場合、ＣＰＵ１０は、現在時刻から、所定時刻までの差となる時間の計測の開始を指示する。よって、この場合、タイマ４０は、所定時刻までの時間が経過した時点（所定時刻）で、タイマ割込信号をＣＰＵ１０に出力する。
【００４２】
タイマ４０がカウントする値が、予め定められた値以上となったとき（Ｓ２：ＹＥＳ）、タイマ４０は、タイマ割込信号をＣＰＵ１０に出力する（Ｓ３）。タイマ４０からのタイマ割込信号に応じて、ＣＰＵ１０は、ハードウェアシーケンサ３０に対してＬ２キャッシュ２３の電源遮断のトリガとなる信号を出力する（Ｓ４）。すなわち、この信号は、ハードウェアシーケンサ３０に対してＬ２キャッシュ２３の電源遮断を指示する信号である。
【００４３】
ハードウェアシーケンサ３０は、ＣＰＵ１０からの信号に応じて、電源遮断セル２２を有効化する（Ｓ５）。その後、ハードウェアシーケンサ３０は、Ｌ２キャッシュ２３の電源をオフする（Ｓ６）。
【００４４】
これによれば、ＣＰＵ１０によるメモリサブシステム２０へのアクセスが発生しないときに、Ｌ２キャッシュ２３を電源遮断して、メモリサブシステム２０を低消費電力化することができる。例えば、半導体装置１の起動完了から暫くの間、ＣＰＵ１０からメモリサブシステム２０へのアクセスが無い場合には、上記（１）の方法を採用すればよい。また、アプリケーションソフトウェアの起動中は、各種初期化処理の実行に伴いメモリサブシステム２０へのアクセスが頻発するが、その起動完了後はメモリサブシステム２０へのアクセス頻度が低い場合には、上記（２）の方法を採用すればよい。また、上記（３）の方法によれば、ＣＰＵ１０によるメモリサブシステム２０へのアクセス状況に応じて、ＣＰＵ１０からメモリサブシステム２０へのアクセスが無い場合に、効果的にメモリサブシステム２０の消費電力を低減することができる。また、所定時刻から暫くの間、ＣＰＵ１０からメモリサブシステム２０へのアクセスが無い場合には、上記（４）の方法を採用すればよい。
【００４５】
続いて、図３を参照して、実施の形態１に係る半導体装置１によるＬ２キャッシュ２３の電源復帰時の動作について説明する。すなわち、図３に示す動作は、図２を参照して説明した動作によって、Ｌ２キャッシュ２３が電源遮断された後に実行される動作となる。
【００４６】
ＣＰＵ１０は、アプリケーションソフトウェアの実行に応じて、Ｌ１キャッシュ２１にアクセス要求を行う（Ｓ１１）。すなわち、ＣＰＵ１０は、メモリサブシステム２０に対して、メインメモリ２４における、あるアドレスに格納されたデータのリードを要求する。Ｌ１キャッシュ２１にヒットしている場合は（Ｓ１２：ＹＥＳ）、Ｌ２キャッシュ２３を電源遮断したまま、Ｌ１キャッシュ２１は、動作を継続する。
【００４７】
一方、Ｌ１キャッシュ２１においてミスヒットが発生した場合（Ｓ１２：ＮＯ）、Ｌ１キャッシュ２１は、キャッシュミス割込信号をハードウェアシーケンサ３０に出力する（Ｓ１３）。また、この場合、Ｌ１キャッシュ２１は、バス９０に対しては、バスエラーを発生させ、一旦、ＣＰＵ１０からのバスアクセスを終了させる（Ｓ１４）。これにより、ＣＰＵ１０によるバス９０のロックが解除される。
【００４８】
なお、Ｌ１キャッシュ２１においてミスヒットが発生した場合であっても、Ｌ２キャッシュ２３が電源遮断されていないときには、上述したように、Ｌ１キャッシュ２１は、データのリードをＬ２キャッシュ２３に要求する。
【００４９】
ハードウェアシーケンサ３０は、Ｌ１キャッシュ２１からのキャッシュミス割込信号に応じて、Ｌ２キャッシュ２３の電源をオンする（Ｓ１５）。ハードウェアシーケンサ３０は、Ｌ２キャッシュ２３の電源オンの完了後、電源遮断セル２２を無効化する（Ｓ１６）。また、ハードウェアシーケンサ３０は、Ｌ１キャッシュ２１からのキャッシュミス割込信号に応じて、キャッシュミス割込信号をＣＰＵ１０に出力する。
【００５０】
一方で、ＣＰＵ１０は、Ｌ１キャッシュ２１が発生させたバスエラーを、バス９０を介して、アクセス要求の完了（リードの完了）の通知として受ける。ＣＰＵ１０は、一般的にはバスエラーに応じて、アクセス要求（リードの要求）をリトライするが、本実施の形態１では、そのアクセス要求のリトライの前に、キャッシュミス割込信号が入力されているか否かを確認する。ＣＰＵ１０は、キャッシュミス割込信号の入力を確認した場合、アクセス要求のリトライを抑止し、Ｌ２キャッシュ２３が電源オンされるのを待ち合わせる。ＣＰＵ１０は、Ｌ２キャッシュ２３が電源オンされた後、改めて、バス９０をロックし、Ｌ１キャッシュ２１に対してアクセス要求を行う。これにより、ＣＰＵ１０は、Ｌ２キャッシュ２３のデータに対して正常にアクセスすることができる。また、Ｌ２キャッシュ２３が電源オンされるまでは、バス９０のロックが解除されるため、他のバスアクセスが可能となる。
【００５１】
続いて、図４を参照して、実施の形態１に係るＣＰＵ１０によるＬ２キャッシュ２３の電源復帰時の動作について説明する。
【００５２】
ＣＰＵ１０は、メモリサブシステム２０からデータをリードする前に、バス９０をロックする（Ｓ２１）。すなわち、ＣＰＵ１０は、バス９０の制御線を介したバスロック信号の出力を開始する。
【００５３】
ＣＰＵ１０は、バス９０がロックした後、データのリードをメモリサブシステム２０に要求する（Ｓ２２）。すなわち、ＣＰＵ１０は、リードするデータのアドレスを示すアドレスデータをバス９０のアドレス線を介してメモリサブシステム２０に出力するとともに、リード要求データをバス９０の制御線を介してメモリサブシステム２０に出力する。
【００５４】
Ｌ１キャッシュ２１は、Ｌ２キャッシュ２３の電源がオフされているときに、ミスヒットを検知した場合、バスエラーとして、リードがエラー完了したことを示すリード完了データを、バス９０の制御線を介してＣＰＵ１０に出力する（Ｓ２３）。
【００５５】
ＣＰＵ１０は、Ｌ１キャッシュ２１からのリード完了データに応じて、バス９０のロックを解除する（Ｓ２４）。すなわち、ＣＰＵ１０は、バス９０の制御線を介したバスロック信号の出力を終了する。
【００５６】
ＣＰＵ１０は、Ｌ１キャッシュ２１からのリードがエラー完了したことを示すリード完了データに応じて、リードの要求をリトライする前に、ハードウェアシーケンサ３０からキャッシュミス割込信号が入力されているか否かを確認し、キャッシュミス割込信号が入力されていることを検出した場合（Ｓ２５）、Ｌ２キャッシュ２３が電源オンされるのを待ち合わせる。
【００５７】
ここで、このＬ２キャッシュ２３の電源オン完了の待ち合わせとして、以下の（１）〜（３）のいずれかの方法を利用してよい。
（１）ＣＰＵ１０が、所定時間の間、ループ処理を行うことで待ち合わせる
（２）ＣＰＵ１０が、電源オンを示すレジスタに対してポーリングを行う
（３）電源オン時に割込信号をＣＰＵ１０に出力する
【００５８】
（１）の方法の場合、ＣＰＵ１０は、例えば、ループ処理として、カウンタをインクリメントする処理を繰り返す。そして、ＣＰＵ１０は、カウンタの値が所定閾値に達したときに、Ｌ２キャッシュ２３の電源オンが完了したと判定し、ループ処理を抜ける。すなわち、この所定閾値は、カウンタの値が所定閾値に達するまでの時間が、Ｌ２キャッシュ２３の電源オンが完了する時間となるように、予め定められた値である。
【００５９】
（２）の方法の場合、ＣＰＵ１０は、Ｌ２キャッシュ２３の電源状態を示すレジスタの値を、所定時間間隔毎に確認する。そして、ＣＰＵ１０は、レジスタの値が、Ｌ２キャッシュ２３の電源がオフであることを示す値から、Ｌ２キャッシュ２３の電源がオンであることを示す値に変化したときに、Ｌ２キャッシュ２３の電源オンが完了したと判定する。
【００６０】
なお、このレジスタは、メモリサブシステム２０（Ｌ２キャッシュ２３）が有していてもよく、ハードウェアシーケンサ３０が有していてもよい。このレジスタをメモリサブシステム２０（Ｌ２キャッシュ２３）が有する場合、メモリサブシステム２０（Ｌ２キャッシュ２３）は、Ｌ２キャッシュ２３の電源オンが完了したときに、レジスタの値を、Ｌ２キャッシュ２３の電源がオンであることを示す値に更新する。一方、このレジスタをハードウェアシーケンサ３０が有する場合、ハードウェアシーケンサ３０は、Ｌ２キャッシュ２３の電源オンが完了したときに、レジスタの値を、Ｌ２キャッシュ２３の電源がオンであることを示す値に更新する。
【００６１】
（３）の方法の場合、ＣＰＵ１０は、Ｌ２キャッシュ２３の電源オンを通知する割込信号が入力されたときに、Ｌ２キャッシュ２３の電源オンが完了したと判定する。この割込信号は、メモリサブシステム２０（Ｌ２キャッシュ２３）が出力してもよく、ハードウェアシーケンサ３０が出力してもよい。この割込信号をメモリサブシステム２０（Ｌ２キャッシュ２３）が出力する場合、メモリサブシステム２０（Ｌ２キャッシュ２３）は、Ｌ２キャッシュ２３の電源オンが完了したときに、割込信号をＣＰＵ１０に出力する。一方、この割込信号をハードウェアシーケンサ３０が出力する場合、ハードウェアシーケンサ３０は、Ｌ２キャッシュ２３の電源オンが完了したときに、割込信号をＣＰＵ１０に出力する。
【００６２】
なお、これを実現するＣＰＵ１０における処理としては、多重割込みを採用してもよい。例えば、ＣＰＵ１０は、キャッシュミス割込信号に応じた割込ハンドラで、無限ループ処理を実行し、メモリサブシステム２０（Ｌ２キャッシュ２３）又はハードウェアシーケンサ３０からの上記割込信号に応じた割込ハンドラで、その無限ループ処理外のアドレスにジャンプし、以降に説明する処理を実行するようにしてもよい。
【００６３】
ＣＰＵ１０は、Ｌ２キャッシュ２３の電源オンが完了したと判定した場合（Ｓ２６）、再度、メモリサブシステム２０からデータをリードする前に、バス９０をロックする（Ｓ２７）。ＣＰＵ１０は、バス９０がロックした後、データのリードをメモリサブシステム２０に要求する（Ｓ２８）。
【００６４】
Ｌ１キャッシュ２１は、自身におけるミスヒットを検知するが、今回はＬ２キャッシュ２３の電源がオンであるため、データのリードをＬ２キャッシュ２３に要求する。これにより、Ｌ１キャッシュ２１は、ＣＰＵ１０によって要求されたデータをＬ２キャッシュ２３又はメインメモリ２４から取得することができる。ＣＰＵ１０は、取得したデータを、データ線を介してＣＰＵ１０に出力するとともに、リードが正常完了したことを示すリード完了データを、制御線を介してＣＰＵ１０に出力する（Ｓ２９）。
【００６５】
ＣＰＵ１０は、Ｌ１キャッシュ２１から制御線を介してリードが正常完了したことを示すリード完了データの入力を受けた場合、Ｌ１キャッシュ２１からデータ線を介して入力されているデータを、メモリサブシステム２０からリードしたデータとして取得する。そして、ＣＰＵ１０は、Ｌ１キャッシュ２１からのリード完了データに応じて、バス９０のロックを解除する（Ｓ３０）。
【００６６】
以上に説明したように、本実施の形態１に係る半導体装置１は、メモリサブシステム２０と、ハードウェアシーケンサ３０と、ＣＰＵ１０とを有する。メモリサブシステム２０は、データが格納されるＬ２キャッシュ２３と、Ｌ２キャッシュ２３のデータがキャッシュされるＬ１キャッシュ２１とを有する。ハードウェアシーケンサ３０は、Ｌ２キャッシュ２３の電源を制御する。ＣＰＵ１０は、メモリサブシステム２０とバス９０を介して接続されており、バス９０をロックしてメモリサブシステム２０のデータにアクセスする。
【００６７】
そして、Ｌ１キャッシュ２１のミスが発生したときにＬ２キャッシュ２３の電源が遮断されている場合、ハードウェアシーケンサ３０が、Ｌ２キャッシュ２３の電源を復帰するとともに、メモリサブシステム２０が、アクセスに対するレスポンスをＣＰＵ１０に出力する。ＣＰＵ１０は、メモリサブシステム２０からのレスポンスに応じてバスのロックを一旦解除し、Ｌ１キャッシュ２１の電源の復帰が完了した後に、バス９０をロックしてのアクセスを再実行する。
【００６８】
これによれば、Ｌ２キャッシュ２３の電源が遮断されている場合に、Ｌ２キャッシュ２３の電源が復帰するまで、バス９０のロックを一旦解除し、バス９０に対して他のバスアクセスを実行することができる。よって、Ｌ２キャッシュ２３の電源を遮断して、メモリの低消費電力化を実現しつつも、ＣＰＵ１０又は他のバスマスタがバスアクセスを伴う緊急な処理を、より迅速に実行することができる。
【００６９】
また、Ｌ２キャッシュ２３の電源復帰後は、Ｌ１キャッシュ２１のミスが発生したバスアクセスが自動的に再実行されるため、ユーザ又はアプリケーションソフトウェアが、バスアクセスを再実行するための特別な操作又は処理をすることなく、システムとして正常動作をすることができる。
【００７０】
また、本実施の形態１では、メモリサブシステム２０は、ＣＰＵ１０からのアクセスが正常である場合、アクセスに対するレスポンスとして、アクセスが正常完了したことを示す正常完了データ（リードが正常完了したことを示すリード完了データ）をＣＰＵ１０に出力するものである。また、メモリサブシステム２０は、ＣＰＵ１０からのアクセスが不正である場合、アクセスに対するレスポンスとして、アクセスがエラー完了したことを示すエラー完了データ（リードがエラー完了したことを示すリード完了データ）をＣＰＵ１０に出力するものである。また、ＣＰＵ１０は、メモリサブシステム２０から正常完了データが入力された場合、及び、メモリサブシステム２０からエラー完了データが入力された場合、バス９０のロックを解除するものである。
【００７１】
そして、メモリサブシステム２０は、Ｌ１キャッシュ２１のミスが発生したときにＬ２キャッシュ２３の電源が遮断されている場合に出力するレスポンスとして、上記エラー完了データをＣＰＵ１０に送信するようにしている。
【００７２】
これによれば、通常のＣＰＵ１０からメモリサブシステム２０へのアクセスに対するレスポンスを流用することで、簡易に、上述のバスマスタによるバスアクセスを伴う緊急な処理の迅速な実行を実現することができる。よって、半導体装置に対して本実施の形態１に係る構成を実装する工数を低減することができる。
【００７３】
また、本実施の形態１では、ＣＰＵ１０は、メモリサブシステム２０からエラー完了データが入力された場合、アクセスを再実行するものである。
【００７４】
そして、メモリサブシステム２０は、Ｌ１キャッシュ２１のミスが発生したときにＬ２キャッシュ２３の電源が遮断されている場合、Ｌ１キャッシュ２１のミスの発生を通知するキャッシュミス割込信号を出力する。ＣＰＵ１０は、メモリサブシステム２０からエラー完了データが入力された場合であっても、メモリサブシステム２０からキャッシュミス割込信号が出力された場合、Ｌ２キャッシュ２３の電源の復帰が完了するまで、バス９０をロックしてのアクセスの再実行を抑止する。
【００７５】
これによれば、Ｌ１キャッシュ２１のミスが発生したときにＬ２キャッシュ２３の電源が遮断されている場合におけるエラー完了データの出力と、それに応じたアクセスの再実行とが繰り返されることを防止することができる。
【００７６】
＜実施の形態２＞
次に、実施の形態２について説明する。以下、実施の形態１と同様の内容については、同一の符号を付す等して、説明を省略する。まず、図５を参照して、実施の形態２に係る半導体装置１の構成について説明する。
【００７７】
図５に示すように、本実施の形態２に係る半導体装置１は、実施の形態１に係る半導体装置１と比較して、ハードウェアシーケンサ３０に代えて、電源遮断モジュール６０を有する点が異なる。
【００７８】
本実施の形態２に係る半導体装置１の構成の特徴を以下に示す。
・電源遮断しないメモリ  ＝  Ｌ１キャッシュ２１
・電源遮断するメモリ  ＝  Ｌ２キャッシュ２３
・バスマスタ  ＝  ＣＰＵ１０
・電源制御モジュール  ＝  ＣＰＵ１０＋ＳＲＡＭ５０＋電源遮断モジュール６０
・電源遮断のトリガ  ＝  タイマ割込
・電源復帰のトリガ  ＝  キャッシュミス割込
【００７９】
すなわち、実施の形態１では、ハードウェアシーケンサ３０が、ＣＰＵ１０からの電源遮断トリガに応じて、電源遮断セル２２の有効化とＬ２キャッシュ２３の電源オフの全てを制御し、Ｌ１キャッシュ２１からのキャッシュミス割込信号に応じて、電源遮断セル２２の無効化とＬ２キャッシュ２３の電源オンの全てを制御するようにしていたが、本実施の形態２では、ＣＰＵ１０が電源遮断モジュール６０を介して、それらの制御を行う。
【００８０】
電源遮断モジュール６０は、ハードウェアシーケンサ３０と同様に、Ｌ２キャッシュ２３の電源状態の制御と、電源遮断セル２２の有効化／無効化状態の制御とを行うものであるが、ＣＰＵ１０からの指示に応じて、それぞれの制御を行う点がハードウェアシーケンサ３０と異なる。
【００８１】
なお、本実施の形態２では、ＣＰＵ１０が電源遮断モジュール６０を介して電源遮断セル２２の無効化とＬ２キャッシュ２３の電源オンの制御を行うため、Ｌ１キャッシュ２１は、電源遮断モジュール６０ではなく、ＣＰＵ１０にキャッシュミス割込信号を出力する。
【００８２】
続いて、図６を参照して、実施の形態２に係る半導体装置１によるＬ２キャッシュ２３の電源遮断時の動作について説明する。
【００８３】
ステップＳ１〜Ｓ３については、実施の形態１（図２のステップＳ１〜Ｓ３）と同様であるため、説明を省略する。ここで、本実施の形態２では、ＣＰＵ１０が電源遮断セル２２の有効化とＬ２キャッシュ２３の電源オフの全てを制御するため、ＣＰＵ１０が、ステップＳ３で出力されたタイマ割込信号を、Ｌ２キャッシュ２３の電源遮断のトリガとなる信号として受ける（Ｓ７）。
【００８４】
ＣＰＵ１０は、タイマ４０からのタイマ割込信号に応じて、電源遮断モジュール６０に対して電源遮断セル２２の有効化を指示する信号を出力する。電源遮断モジュール６０は、ＣＰＵ１０からの信号に応じて、電源遮断セル２２を有効化する（Ｓ８）。
【００８５】
ＣＰＵ１０は、電源遮断セル２２を有効化した後、Ｌ２キャッシュ２３の電源遮断を指示する信号を電源遮断モジュール６０に出力する。電源遮断モジュール６０は、ＣＰＵ１０からの信号に応じて、Ｌ２キャッシュ２３の電源をオフする（Ｓ９）。
【００８６】
続いて、図７を参照して、実施の形態２に係る半導体装置１によるＬ２キャッシュ２３の電源復帰時の動作について説明する。すなわち、図７に示す動作は、図６を参照して説明した動作によって、Ｌ２キャッシュ２３が電源遮断された後に実行される動作となる。
【００８７】
ステップＳ１１、Ｓ１２については、実施の形態１（図３のステップＳ１１、Ｓ１２）と同様であるため、説明を省略する。Ｌ１キャッシュ２１においてミスヒットが発生した場合（Ｓ１２：ＮＯ）、Ｌ１キャッシュ２１は、キャッシュミス割込信号をＣＰＵ１０に出力する（Ｓ１７）。また、この場合、Ｌ１キャッシュ２１は、バス９０に対しては、バスエラーを発生させ、一旦、ＣＰＵ１０からのバスアクセスを終了させる（Ｓ１８）。これにより、ＣＰＵ１０によるバス９０のロックが解除される。
【００８８】
ＣＰＵ１０は、Ｌ１キャッシュ２１からのキャッシュミス割込信号に応じて、Ｌ２キャッシュ２３の電源復帰を指示する信号を電源遮断モジュール６０に出力する。電源遮断モジュール６０は、ＣＰＵ１０からの信号に応じて、Ｌ２キャッシュ２３の電源をオンする（Ｓ１９）。
【００８９】
ＣＰＵ１０は、Ｌ２キャッシュ２３の電源をオンした後、電源遮断モジュール６０に対して電源遮断セル２２の無効化を指示する信号を出力する。電源遮断モジュール６０は、ＣＰＵ１０からの信号に応じて、電源遮断セル２２を無効化する（Ｓ２０）。
【００９０】
なお、実施の形態２に係るＣＰＵ１０によるＬ２キャッシュの電源復帰時の動作については、実施の形態１（図４を参照して説明した動作）と同様であるため、説明を省略する。すなわち、本実施の形態２では、ＣＰＵ１０が、自らＬ２キャッシュ２３の電源オンを指示するとともに、そのＬ２キャッシュ２３が電源オンになるまで待ち合わせる。
【００９１】
以上に説明したように、本実施の形態２では、メモリサブシステム２０は、キャッシュミス割込信号をＣＰＵ１０に出力している。ＣＰＵ１０は、メモリサブシステム２０からのキャッシュミス割込信号に応じて、Ｌ２キャッシュ２３の電源の復帰を指示する信号を電源遮断モジュール６０に出力している。そして、電源遮断モジュール６０は、ＣＰＵ１０からの信号に応じて、Ｌ２キャッシュ２３の電源を復帰している。
【００９２】
これによれば、電源遮断モジュール６０として、ＣＰＵ１０からの指示に応じて、Ｌ２キャッシュ２３の電源状態を制御する簡易なハードウェアを用意すればよく、自らＬ１キャッシュ２１のミスの発生を検出してＬ２キャッシュ２３の電源を復帰する特別なハードウェアを用意する必要がないため、半導体装置に対して本実施の形態２に係る構成を実装する工数を低減することができる。
【００９３】
＜実施の形態３＞
次に、実施の形態３について説明する。以下、実施の形態１と同様の内容については、同一の符号を付す等して、説明を省略する。まず、図８を参照して、実施の形態３に係る半導体装置１の構成について説明する。
【００９４】
図８に示すように、本実施の形態３に係る半導体装置１は、実施の形態１に係る半導体装置１と比較して、さらに、ＤＭＡＣ（Direct Memory Access Controller）７０を有する点が異なる。ＤＭＡＣ７０は、バス９０に接続されている。ＤＭＡＣ７０は、ＣＰＵ１０と同様に、バススレーブに対して、バス９０を介してアクセスするバスマスタである。
【００９５】
本実施の形態３に係る半導体装置１の構成の特徴を以下に示す。
・電源遮断しないメモリ  ＝  Ｌ１キャッシュ２１
・電源遮断するメモリ  ＝  Ｌ２キャッシュ２３
・バスマスタ  ＝  ＣＰＵ１０とＤＭＡＣ７０
・電源制御モジュール  ＝  ハードウェアシーケンサ３０
・電源遮断のトリガ  ＝  タイマ割込
・電源復帰のトリガ  ＝  キャッシュミス割込
【００９６】
ＤＭＡＣ７０は、ＣＰＵ１０からの指示に応じて、メモリサブシステム２０に格納されるデータを、バス９０に接続される他の回路に転送する回路である。ＤＭＡＣ７０は、この転送の際に、ＣＰＵ１０と同様に、メモリサブシステム２０に対してメインメモリ２４におけるデータのリードを要求する。
【００９７】
すなわち、ＤＭＡＣ７０は、上述したように、メインメモリ２４における、あるアドレスに格納されたデータのリードを要求する場合、そのアドレスを示すアドレスデータを、アドレス線を介してメモリサブシステム２０に出力するとともに、リードを要求することを示すリード要求データを、制御線を介してメモリサブシステム２０に出力する。
【００９８】
Ｌ１キャッシュ２１は、ＤＭＡＣ７０から制御線を介してリード要求データが入力された場合、上述したように、ＤＭＡＣ７０からアドレス線を介して入力されたアドレスデータが示すアドレスのデータを、自身、Ｌ２キャッシュ２３又はメインメモリ２４から取得する処理を行う。Ｌ１キャッシュ２１は、取得したデータを、データ線を介してＤＭＡＣ７０に出力するとともに、リードが正常完了したことを示すリード完了データを、制御線を介してＤＭＡＣ７０に出力する。
【００９９】
ＤＭＡＣ７０は、ＣＰＵ１０と同様に、Ｌ１キャッシュ２１から制御線を介してリードが正常完了したことを示すリード完了データが入力された場合、Ｌ１キャッシュ２１からデータ線を介して入力されているデータを、メモリサブシステム２０からリードしたデータとして取得する。そして、ＤＭＡＣ７０は、取得したデータを転送先の回路に転送する。
【０１００】
ここで、ＤＭＡＣ７０も、ＣＰＵ１０と同様に、リード要求データをメモリサブシステム２０に出力するときから、メモリサブシステム２０からリード完了データが入力されるまで、バス９０をロックする。より具体的には、ＤＭＡＣ７０は、リード要求データを出力する前に、制御線を介してバスロック信号の出力を開始し、リード完了データが入力された後に、バスロック信号の出力を終了する。  
【０１０１】
よって、ＣＰＵ１０に限られず、ＤＭＡＣ７０に対しても、バスエラー（リードがエラー完了したことを示すリード完了データの出力）を、Ｌ２キャッシュ２３が電源遮断されている状態でＬ１キャッシュ２１がミスした場合に発生させることで、Ｌ２キャッシュ２３が電源復帰するまでに、一旦、ＤＭＡＣ７０によるバス９０のロックを解除させ、バスマスタによる他のバスアクセスが可能となる。
【０１０２】
続いて、実施の形態３に係る半導体装置１による動作について説明するが、実施の形態３に係る半導体装置１によるＬ２キャッシュ２３の電源遮断時の動作については、実施の形態１（図２を参照して説明した動作）と同様であるため、説明を省略する。
【０１０３】
また、実施の形態３に係る半導体装置１によるＬ２キャッシュ２３の電源復帰時の動作についても、ＣＰＵ１０がＤＭＡＣ７０に置き換わる点は異なるが、実施の形態１（図３を参照して説明した動作）と同様であるため、説明を省略する。
【０１０４】
ただし、実施の形態１では、ＣＰＵ１０が、キャッシュミス割込信号の入力に応じて、Ｌ２キャッシュ２３が電源オンになるまで、アクセス要求の再実行を抑止するようにしていたが、本実施の形態３では、キャッシュミス割込信号が入力されるバスマスタ（ＣＰＵ１０）と、アクセス要求を再実行するバスマスタ（ＤＭＡＣ７０）が異なる。よって、本実施の形態３では、ＣＰＵ１０が、キャッシュミス割込信号の入力に応じて、Ｌ２キャッシュ２３が電源オンになるまでＤＭＡＣ７０によるアクセス要求の再実行を抑止するように、ＤＭＡＣ７０を制御する。その制御について、図９を参照して、次で説明する。
【０１０５】
続いて、図９を参照して、実施の形態３に係るＣＰＵ１０及びＤＭＡＣ７０によるＬ２キャッシュ２３の電源復帰時の動作について説明する。
【０１０６】
ステップＳ３１〜Ｓ３４については、動作主体が、ＣＰＵ１０ではなく、ＤＭＡＣ７０となること以外は、実施の形態１（図４を参照して説明したステップＳ２１〜Ｓ２４）と同様であるため、説明を省略する。
【０１０７】
ＣＰＵ１０は、ハードウェアシーケンサ３０からのキャッシュミス割込信号に応じて（Ｓ３５）、動作停止を指示する信号のＤＭＡＣ７０への出力を開始する（Ｓ３６）。ＤＭＡＣ７０は、Ｌ１キャッシュ２１からのリードがエラー完了したことを示すリード完了データに応じてリードの要求をリトライする前に、ＣＰＵ１０から動作停止を指示する信号が入力されているか否かを確認し、その信号が入力されている場合、動作を停止する。
【０１０８】
ＣＰＵ１０は、Ｌ２キャッシュ２３の電源オンが完了したと判定した場合（Ｓ３７）、動作停止を指示する信号のＤＭＡＣ７０への出力を終了する（Ｓ３８）。ＤＭＡＣ７０は、ＣＰＵ１０から動作停止を指示する信号が入力されなくなったとき、動作を再開する（ステップＳ３９〜Ｓ４２の動作を実行する）。
【０１０９】
以降、ステップＳ３９〜Ｓ４２については、動作主体が、ＣＰＵ１０ではなく、ＤＭＡＣ７０となること以外は、実施の形態１（図４を参照して説明したステップＳ２７〜Ｓ３０）と同様であるため、説明を省略する。
【０１１０】
以上に説明したように、本実施の形態３では、メモリサブシステム２０は、Ｌ１キャッシュ２１のミスが発生したときにＬ２キャッシュ２３の電源が遮断されている場合、キャッシュミス割込信号を出力している。ＣＰＵ１０は、メモリサブシステム２０からキャッシュミス割込信号が出力された場合、Ｌ２キャッシュ２３の電源の復帰が完了するまで、ＤＭＡＣ７０によるバス９０をロックしてのアクセスの再実行を抑止している。
【０１１１】
これによれば、Ｌ１キャッシュ２１のミスが発生したときにＬ２キャッシュ２３の電源が遮断されている場合に、そのＬ１キャッシュ２１のミスを引き起こしたバスマスタが専用ハードウェア（ＤＭＡＣ７０）であっても、汎用のハードウェア（ＣＰＵ１０）によって、Ｌ２キャッシュ２３の電源の復帰が完了して正常にアクセス可能となるまで、ＤＭＡＣ７０による無駄なアクセスを抑止することができる。また、これによれば、ＤＭＡＣ７０によってメモリからのデータの転送効率を向上しつつも、バスマスタがバスアクセスを伴う緊急な処理を、より迅速に実行することができる。
【０１１２】
なお、以上の説明では、実施の形態３として、ＤＭＡＣ７０、及び、ＣＰＵ１０によるＤＭＡＣ７０の動作停止制御を実施の形態１に適用した例について説明したが、これに限られない。ＤＭＡＣ７０、及び、ＣＰＵ１０によるＤＭＡＣ７０の動作停止制御を実施の形態２に適用してもよい。
【０１１３】
＜実施の形態４＞
次に、実施の形態４について説明する。以下、実施の形態１と同様の内容については、同一の符号を付す等して、説明を省略する。まず、図１０を参照して、実施の形態４に係る半導体装置１の構成について説明する。
【０１１４】
図１０に示すように、本実施の形態４に係る半導体装置１は、実施の形態１に係る半導体装置１と比較して、さらに、入力デバイス８０を有する点が異なる。入力デバイス８０は、バス９０に接続されている。
【０１１５】
本実施の形態４に係る半導体装置１の構成の特徴を以下に示す。
・電源遮断しないメモリ  ＝  Ｌ１キャッシュ２１
・電源遮断するメモリ  ＝  Ｌ２キャッシュ２３
・バスマスタ  ＝  ＣＰＵ１０
・電源制御モジュール  ＝  ハードウェアシーケンサ３０
・電源遮断のトリガ  ＝  モード遷移、ユーザからの指示など
・電源復帰のトリガ  ＝  キャッシュミス割込
【０１１６】
本実施の形態４では、Ｌ２キャッシュ２３の電源遮断のトリガは、実施の形態１で例示したトリガ（図２を参照して説明したトリガ）に限られない。すなわち、Ｌ２キャッシュ２３の電源遮断のトリガは、タイマ４０がカウントする値が、予め定めた値以上となった場合に限られない。
【０１１７】
例えば、半導体装置１のモード遷移、又は、ユーザからの指示を、Ｌ２キャッシュ２３の電源遮断のトリガとしてもよい。
【０１１８】
（１）半導体装置１のモード遷移をＬ２キャッシュ２３の電源遮断のトリガとする場合
例えば、半導体装置１のモードが、所定の動作を実行する通常動作モードと、その所定の動作を停止してＬ２キャッシュ２３の電源遮断をする省電力モードとの間で遷移する。
【０１１９】
通常動作モードは、例えば、半導体装置１が情報処理装置に実装される場合、ＣＰＵ１０が、情報処理装置が有するセンサによって、情報処理装置内の情報を収集し、ＳＲＡＭ５０又はメモリサブシステム２０に格納する動作を、上記所定の動作として実行するものであってもよい。この場合、ＣＰＵ１０は、例えば、一定時間間隔毎に、所定時間の間、通常動作モードとして動作し、それ以外の時間は、省電力モードとして動作する。
【０１２０】
また、通常動作モードは、例えば、半導体装置１がウェアラブルコンピュータに実装される場合、ＣＰＵ１０が、そのウェアラブルコンピュータが有するセンサによってユーザの動きを検出し、検出した動きを示す情報をＳＲＡＭ５０又はメモリサブシステム２０に格納する動作を、上記所定の動作として実行するものであってもよい。この場合、ＣＰＵ１０は、例えば、センサによってユーザの動きを検出した場合に、通常動作モードに遷移し、所定時間の間、センサによってユーザの動きが検出されなかった場合に、省電力モードに遷移する。
【０１２１】
また、通常動作モードは、例えば、半導体装置１が家電機器に実装される場合、その家電機器としての動作（例えば電気炊飯器であれば炊飯中）を、上記所定の動作として実行するものであってもよい。この場合、ＣＰＵ１０は、例えば、上記家電機器としての動作を実行中、通常動作モードとして動作し、その動作の終了後は、省電力モードとして動作する。
【０１２２】
そして、これらの動作では、通常動作モードから省電力モードに遷移したときに、ＣＰＵ１０は、ハードウェアシーケンサ３０に対してＬ２キャッシュ２の電源遮断のトリガとなる信号を出力し、Ｌ２キャッシュ２３を電源遮断する。
【０１２３】
（２）ユーザからの指示をＬ２キャッシュ２３の電源遮断のトリガとする場合
ユーザからＬ２キャッシュ２３の電源遮断の指示が入力デバイス８０に入力されたときに、ＣＰＵ１０は、ハードウェアシーケンサ３０に対してＬ２キャッシュ２３の電源遮断のトリガとなる信号を出力し、Ｌ２キャッシュ２３を電源遮断する。
【０１２４】
入力デバイス８０は、ユーザから入力された内容を示す信号を生成し、ＣＰＵ１０に出力する。ＣＰＵ１０は、入力デバイス８０から入力された信号に基づいて、ユーザが入力した内容を認識する。そして、ＣＰＵ１０は、ユーザが入力した内容が、Ｌ２キャッシュ２３の電源遮断の指示である場合には、上述したように、Ｌ２キャッシュ２３を電源遮断する。なお、入力デバイス８０として、キーボード、マウス、タッチパネル、又は、ボタン等のうち、任意の入力デバイスを採用してよい。例えば、半導体装置１がＰＣに実装される場合には、入力デバイス８０は、キーボード及びマウスとしてよく、半導体装置１がスマートフォンに実装される場合には、入力デバイス８０は、タッチパネル又はボタンとしてよい。
【０１２５】
以上に説明したように、Ｌ２キャッシュ２３の電源遮断のトリガは、タイマ４０からのタイマ割込信号に限られず、モード遷移（通常動作モードから省電力モードへの遷移）又はユーザからの指示としてもよい。
【０１２６】
なお、以上の説明では、実施の形態４として、入力デバイス８０、及び、Ｌ２キャッシュ２３の電源遮断のトリガにモード遷移及びユーザからの指示を追加した点を実施の形態１に適用した例について説明したが、これに限られない。入力デバイス８０、及び、Ｌ２キャッシュ２３の電源遮断のトリガにモード遷移及びユーザからの指示を追加した点を実施の形態２に適用してもよい。
【０１２７】
＜実施の形態５＞
次に、実施の形態５について説明する。以下、実施の形態１と同様の内容については、同一の符号を付す等して、説明を省略する。まず、図１１を参照して、実施の形態５に係る半導体装置１の構成について説明する。
【０１２８】
図１１に示すように、本実施の形態５に係る半導体装置１は、実施の形態１に係る半導体装置１と比較して、さらに、Ｌ１キャッシュ２１及びＬ２キャッシュ２３のそれぞれに代えてキャッシュ２５及びメインメモリ２６を有する点、及び、メインメモリ２４を有さない点が異なる。すなわち、本実施の形態５では、メモリサブシステム２０は、電源遮断セル２２、キャッシュ２５及びメインメモリ２６を有する。
【０１２９】
本実施の形態５に係る半導体装置１の構成の特徴を以下に示す。
・電源遮断しないメモリ  ＝  キャッシュ２５
・電源遮断するメモリ  ＝  メインメモリ２６
・バスマスタ  ＝  ＣＰＵ１０
・電源制御モジュール  ＝  ハードウェアシーケンサ３０
・電源遮断のトリガ  ＝  タイマ割込
・電源復帰のトリガ  ＝  キャッシュミス割込
【０１３０】
本実施の形態５に係る半導体装置１の動作については、Ｌ１キャッシュ２１及びＬ２キャッシュ２３のそれぞれが、キャッシュ２５及びメインメモリ２６のそれぞれに置き換わること以外は、本実施の形態１に係る半導体装置１の動作と同様であるため、説明を省略する。
【０１３１】
ただし、本実施の形態５では、メインメモリ２６が最下位レベルのメモリとなるため、当然に、Ｌ２キャッシュ２３のように、ここでミスが発生することはない。また、メインメモリ２６が電源遮断されることになるため、メインメモリ２６として、電源遮断されてもそれに格納されるデータが消去されないように、不揮発性メモリ（ＮＶＭ）が採用される。
【０１３２】
以上に説明したように、本実施の形態５では、電源遮断が行われるメモリとして、他のメモリのデータをキャッシュするものではない最下位レベルのメインメモリを採用するようにしている。
【０１３３】
このようなメインメモリは、メインメモリのデータをキャッシュするキャッシュメモリと比較して、容量が大きく、電源遮断後に再度電源復帰をする際に、電源復帰が完了するまでの時間が長い。そのため、キャッシュ２５がミスした場合に、メインメモリ２６の電源が復帰するまでバスアクセスを完了させないと、バス９０がロックされる時間も非常に長くなり、他のバスアクセスを伴う緊急な処理を実行できない時間も非常に長くなってしまう問題がある。
【０１３４】
それに対して、本実施の形態５によれば、これまでの実施の形態１〜４でも説明したように、メインメモリ２６の電源が復帰するまでに、一旦、バス９０のロックを解除することができるため、上記の問題を解消することができる。すなわち、本実施の形態５に、容量及び電源復帰時間が大きいメモリを電源遮断対象とした場合に、他のバスアクセスを伴う緊急な処理を実行できない時間を大幅に無くすことができ、より顕著な効果を奏することができる。
【０１３５】
また、以上の説明では、メインメモリ２６が不揮発性メモリである例について説明したが、これに限られない。メインメモリ２６は、揮発性メモリ（例えばＤＲＡＭ又はＳＲＡＭ等）であってもよい。しかしながら、この場合は、メインメモリ２６を電源遮断したときにデータが消えてしまうため、ＣＰＵ１０が、電源遮断前に半導体装置１が有する他の不揮発性メモリにデータを退避し、電源復帰後にその不揮発性メモリからメインメモリ２６にデータを復元する必要がある。よって、好ましくは、メインメモリ２６を不揮発性メモリとすることで、このような処理を無くすことができ、ＣＰＵ１０の処理負荷を低減することができる。
【０１３６】
なお、以上の説明では、実施の形態５として、キャッシュ２５及びメインメモリ２６を実施の形態１に適用した例について説明したが、これに限られない。キャッシュ２５及びメインメモリ２６を実施の形態２に適用してもよい。
【０１３７】
＜実施の形態の概略構成＞
続いて、図１２を参照して、上述した実施の形態１〜５に係る半導体装置１の概略構成となる半導体装置１００の構成について説明する。すなわち、実施の形態１〜５に係る半導体装置１における特徴的構成の一部は、図１２に示すように抽出される。
【０１３８】
図１２に示すように、半導体装置１００は、メモリ部１０１と、バスマスタ１０２と、電源制御回路１０３とを有する。メモリ部１０１は、メモリサブシステム２０に対応し、バスマスタ１０２は、ＣＰＵ１０及びＤＭＡＣ７０のそれぞれに対応し、電源制御回路１０３は、ハードウェアシーケンサ３０及び電源遮断モジュール６０のそれぞれに対応する。
【０１３９】
メモリ部１０１は、データが格納される下位メモリ１１２と、下位メモリ１１２のデータがキャッシュされるキャッシュメモリ１１１とを有する。電源制御回路１０３は、下位メモリ１１２の電源を制御する。バスマスタ１０２は、メモリ部１０１とバス１０９を介して接続されており、バス１０９をロックしてメモリ部１０１のデータにアクセスする。キャッシュメモリ１１１は、Ｌ１キャッシュ２１に対応し、下位メモリ１１２は、Ｌ２キャッシュ２３に対応し、バス１０９は、バス９０に対応する。
【０１４０】
そして、キャッシュメモリ１１１のミスが発生したときに下位メモリ１１２の電源が遮断されている場合、電源制御回路１０３が、下位メモリ１１２の電源を復帰するとともに、メモリ部１０１が、アクセスに対するレスポンスをバスマスタ１０２に出力する。バスマスタ１０２は、メモリ部１０１からのレスポンスに応じてバスのロックを一旦解除し、下位メモリ１１２の電源の復帰が完了した後に、バス１０９をロックしてのアクセスを再実行する。
【０１４１】
これによれば、下位メモリ１１２の電源が遮断されている場合に、下位メモリ１１２の電源が復帰するまで、バス１０９のロックを一旦解除し、バス１０９に対して他のバスアクセスを実行することができる。よって、下位メモリ１１２の電源を遮断して、メモリの低消費電力化を実現しつつも、バスマスタ１０２又は他のバスマスタがバスアクセスを伴う緊急な処理を、より迅速に実行することができる。
【０１４２】
また、下位メモリ１１２の電源復帰後は、キャッシュメモリ１１１のミスが発生したバスアクセスが自動的に再実行されるため、ユーザ又はアプリケーションソフトウェアが、バスアクセスを再実行するための特別な操作又は処理をすることなく、システムとして正常動作をすることができる。
【０１４３】
ここで、上述したＣＰＵ１０が実行するプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、半導体装置１が実装されるコンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【０１４４】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【０１４５】
例えば、上記実施の形態１、３〜５では、Ｌ１キャッシュ２１が、キャッシュミス割込信号をハードウェアシーケンサ３０に出力し、ハードウェアシーケンサ３０が、そのキャッシュミス割込信号に応じてキャッシュミス割込信号をＣＰＵ１０に出力する例について説明したが、これに限られない。Ｌ１キャッシュ２１がキャッシュミス割込信号をハードウェアシーケンサ３０及びＣＰＵ１０に出力し、ハードウェアシーケンサ３０がキャッシュミス割込信号をＣＰＵ１０に出力しないようにしてもよい。
【０１４６】
例えば、上記実施の形態１〜５では、タイマ４０が、タイマ割込信号をＣＰＵ１０に出力し、ＣＰＵ１０が、そのタイマ割込信号に応じてハードウェアシーケンサ３０にＬ２キャッシュ２３の電源遮断を指示する例について説明したが、これに限られない。タイマ４０が、タイマ割込信号をハードウェアシーケンサ３０に出力し、ハードウェアシーケンサ３０が、そのタイマ割込信号に応じてＬ２キャッシュ２３の電源遮断を行うようにしてもよい。
【符号の説明】
【０１４７】
１、１００  半導体装置
１０  ＣＰＵ
２０  メモリサブシステム
２１  Ｌ１キャッシュ
２２  電源遮断セル
２３  Ｌ２キャッシュ
２４、２６  メインメモリ
２５  キャッシュ
３０  ハードウェアシーケンサ
４０  タイマ
５０  ＳＲＡＭ
６０  電源遮断モジュール
７０  ＤＭＡＣ
８０  入力デバイス
９０  バス
１０１  メモリ部
１０２  バスマスタ
１０３  電源制御回路
１０９  バス
１１１  キャッシュメモリ
１１２  下位メモリ
【図１】
0006475151.tif 000002
【図２】
0006475151.tif 000003
【図３】
0006475151.tif 000004
【図４】
0006475151.tif 000005
【図５】
0006475151.tif 000006
【図６】
0006475151.tif 000007
【図７】
0006475151.tif 000008
【図８】
0006475151.tif 000009
【図９】
0006475151.tif 000010
【図１０】
0006475151.tif 000011
【図１１】
0006475151.tif 000012
【図１２】
0006475151.tif 000013