(57)【特許請求の範囲】
【請求項１】
第１のキャッシュメモリと、
前記第１のキャッシュメモリよりも消費電力が大きい、前記第１のキャッシュメモリよりも下位レベルに設定される第２のキャッシュメモリと、
前記第２のキャッシュメモリよりも消費電力が大きいメインメモリと、
上位装置からデータの読み出しが要求されたときに、前記第１のキャッシュメモリがヒットした場合、前記第２のキャッシュメモリの少なくとも一部の動作を停止させる制御回路と、を備え、
前記第１のキャッシュメモリ及び前記第２のキャッシュメモリのそれぞれの容量は、前記第１のキャッシュメモリ、前記第２のキャッシュメモリ及び前記メインメモリのそれぞれの電流値を、それぞれのヒット率に応じて調整した値の合計値が、所定の電流閾値以下となるように決定され、
前記第１のキャッシュメモリ及び前記第２のキャッシュメモリのそれぞれは、
前記上位装置からデータの読み出しが要求された場合に、当該読み出しが要求されたデータを検索する検索回路と、
前記検索回路によって検出されたデータを、前記上位装置に出力する出力制御回路と、を有し、
前記制御回路は、前記少なくとも一部の動作の停止として、前記第２のキャッシュメモリの検索回路による前記データの検索を抑止する、
半導体装置。
【請求項２】
前記第２のキャッシュメモリは、前記第１のキャッシュメモリよりも同一の容量に対する面積が小さく、
前記第１のキャッシュメモリ及び前記第２のキャッシュメモリのそれぞれの容量は、さらに、前記第１のキャッシュメモリ及び前記第２のキャッシュメモリのそれぞれの面積の合計値が、所定の面積閾値以下となるように決定されている、
請求項１に記載の半導体装置。
【請求項３】
前記合計値は、前記第１のキャッシュメモリ、前記第２のキャッシュメモリ、及び、前記メインメモリのそれぞれの電流値と、それぞれのヒット率との乗算結果の合計値である、
請求項１に記載の半導体装置。
【請求項４】
前記制御回路は、前記少なくとも一部の動作の停止として、さらに、前記第２のキャッシュメモリの出力制御回路による前記データの出力を抑止する、
請求項１に記載の半導体装置。
【請求項５】
前記第１のキャッシュメモリの検索回路と、前記第２のキャッシュメモリの検索回路は、前記上位装置からデータの読み出しが要求されたクロックサイクルで検索結果を前記出力制御回路に通知する、
請求項４に記載の半導体装置。
【請求項６】
前記第１のキャッシュメモリの検索回路は、前記上位装置からデータの読み出しが要求されたクロックサイクルで検索結果を前記出力制御回路に通知し、
前記第２のキャッシュメモリの検索回路は、前記上位装置からデータの読み出しが要求されたクロックサイクルよりも後のクロックサイクルで検索結果を前記出力制御回路に通知する、
請求項１に記載の半導体装置。
【請求項７】
前記第２のキャッシュメモリの動作周波数は、前記上位装置及び前記第１のキャッシュメモリの動作周波数よりも低速であり、
前記第２のキャッシュメモリは、さらに、前記上位装置による読み出し要求の出力の終了後にも、前記検索回路がアドレス情報を利用可能とするために、前記アドレス情報を保持するバッファを有する、
請求項１に記載の半導体装置。
【請求項８】
前記第１のキャッシュメモリ及び第２のキャッシュメモリのそれぞれは、データの読み出しを要求する上位装置に対して０ウエイトで動作する、
請求項１に記載の半導体装置。
【請求項９】
上位装置からデータの読み出しが要求されたときに、第１のキャッシュメモリがヒットしたか否かを判定する判定ステップと、
前記第１のキャッシュメモリがヒットしたと判定した場合、前記第１のキャッシュメモリよりも下位レベルの第２のキャッシュメモリの少なくとも一部の動作を停止させる停止ステップと、
前記第１のキャッシュメモリ及び前記第２のキャッシュメモリのそれぞれが、前記上位装置からのデータの読み出しの要求に応じて、読み出しが要求されたデータを検索する検索ステップと、
前記第１のキャッシュメモリ及び前記第２のキャッシュメモリのそれぞれが、前記検索によってデータが検出された場合に、当該検出されたデータを前記上位装置に出力する出力ステップと、を備え、
前記停止ステップでは、前記少なくとも一部の動作の停止として、前記第２のキャッシュメモリによる前記データの検索を抑止する、
キャッシュメモリ制御方法。
【請求項１０】
前記停止ステップでは、前記少なくとも一部の動作の停止として、さらに、前記第２のキャッシュメモリによる前記データの出力を抑止する、
請求項９に記載のキャッシュメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置及びキャッシュメモリ制御方法に関し、例えばキャッシュメモリを備えた半導体装置に関する。
【背景技術】
【０００２】
マイクロコンピュータには、メインメモリにアクセスする際に大きなウエイトが発生する場合、性能を向上させるために、バスマスタ（例えばＣＰＵ（Central Processing Unit））とメインメモリとの間にキャッシュメモリを配置する。キャッシュメモリは、速度（ウエイト数）と容量（面積、コスト）の間にトレードオフの関係がある。キャッシュメモリは、高速・小容量のキャッシュメモリと、低速・大容量のキャッシュメモリを直列に接続することで階層化される。この場合におけるキャッシュメモリの容量は、コスト当たりの性能が最高となるように決定される。
【０００３】
特許文献１には、高速小容量キャッシュの高速アクセス性能と低速大容量キャッシュの高ヒット率とを最大限に活用することを目的としたキャッシュメモリ装置が開示されている。このキャッシュメモリ装置では、演算制御部から仮想アドレスによるロードリクエストが発行されると、高速小容量仮想キャッシュ及びＴＬＢ（Translation Look-aside Buffer：アドレス変換バッファ）がアクセスされる。高速小容量仮想キャッシュがヒットした場合、ヒットしたエントリのデータがセレクタにより選択されて演算制御部に出力される。高速小容量仮想キャッシュがミスヒットした場合、ＴＬＢを用いて変換された物理アドレスにより低速大容量物理キャッシュがアクセスされる。低速大容量物理キャッシュがヒットした場合、ヒットしたエントリのデータがセレクタにより選択されて演算制御部に出力される。
【０００４】
特許文献２には、上位メモリ及び下位メモリよりなる階層化メモリの制御を合理化し、上位メモリによる無駄な電力消費を削減することを目的とした情報処理装置が開示されている。この情報処理装置では、プロセッサの高速動作時には、ＣＰＵコアが情報出力の要求をキャッシュメモリとＭＭＵの両方に同時発行するように制御し、プロセッサの低速動作時には、ＭＭＵのみに情報出力の要求を発行する。
【０００５】
しかしながら、特許文献１に開示のキャッシュメモリ装置は、高速アクセス性能の向上と高ヒット率を目的としたものであるが、消費電力の削減を図るための技術は開示されていない。また、特許文献２に開示の情報処理装置は、プロセッサの低速動作時に下記メモリへの要求のみを発行することで低消費電力化を図っているが、プロセッサの低速動作時のみに消費電力が削減されるものである。そのため、消費電力の削減効果は限定的であるという問題がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平５−３５５８９号公報
【特許文献２】特開平１１−１４３７７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述したように、特許文献１及び特許文献２に開示の技術では、消費電力を効果的に削減することができていないという問題がある。
【０００８】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
一実施の形態によれば、半導体装置は、第１のキャッシュメモリ及び第２のキャッシュメモリのそれぞれの容量が、第１のキャッシュメモリ、第２のキャッシュメモリ及びメインメモリのそれぞれの電流値を、それぞれのヒット率に応じて調整した値の合計値が、所定の電流閾値以下となるように決定されるものである。
【発明の効果】
【００１０】
前記一実施の形態によれば、消費電力を効果的に削減することができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１に係る半導体装置の構成を示すブロック図である。
【図２】第１及び第２のキャッシュメモリの容量と、面積の関係を示す図である。
【図３】第１及び第２のキャッシュメモリの容量と、電流の関係を示す図である。
【図４】実施の形態１に係る第１及び第２のキャッシュメモリの詳細構成を示すブロック図である。
【図５】実施の形態１に係る第１及び第２のキャッシュメモリにおいて処理される信号のタイミングチャートである。
【図６】実施の形態１に係る半導体装置の動作を示すフローチャートである。
【図７】実施の形態２に係る半導体装置の構成を示すブロック図である。
【図８】実施の形態２に係る第２のキャッシュメモリにおいて処理される信号のタイミングチャートである。
【図９】実施の形態２に係る半導体装置の動作を示すフローチャートである。
【図１０】実施の形態３に係る第１及び第２のキャッシュメモリの詳細構成を示すブロック図である。
【図１１】実施の形態３に係る第２のキャッシュメモリにおいて処理される信号のタイミングチャートである。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら、好適な実施の形態について説明する。以下の実施の形態に示す具体的な数値などは、実施の形態の理解を容易とするための例示にすぎず、特に断る場合を除き、それに限定されるものではない。また、以下の記載及び図面では、説明の明確化のため、当業者にとって自明な事項などについては、適宜、省略及び簡略化がなされている。
【００１３】
＜実施の形態１＞
図１を参照して、実施の形態１に係る半導体装置１の構成について説明する。図１は、実施の形態１に係る半導体装置１の構成を示すブロック図である。
【００１４】
図１に示すように、半導体装置１は、ＣＰＵコア１０と、第１のキャッシュメモリ２０と、第２のキャッシュメモリ３０と、ＲＯＭ（Read Only Memory）４０とを有する。
【００１５】
ＣＰＵコア１０は、ＲＯＭ４０に格納されたデータを読み出し、読み出したデータに基づいて処理を実行する演算回路である。例えば、ＣＰＵコア１０は、ＲＯＭ４０に格納されたプログラムを読み出し、読み出したプログラムを実行することで、その処理を実行する。ＣＰＵコア１０は、ＲＯＭ４０から読み出そうとしたデータのコピーが第１のキャッシュメモリ２０又は第２のキャッシュメモリ３０に格納されている場合、ＲＯＭ４０に代えて第１のキャッシュメモリ２０又は第２のキャッシュメモリ３０からそのコピーされたデータを読み出す。
【００１６】
第１のキャッシュメモリ２０は、ＲＯＭ４０に記憶されているデータのコピーが一時的に格納される記憶回路である。第１のキャッシュメモリ２０は、第２のキャッシュメモリ３０及びＲＯＭ４０よりも上位レベルのメモリである。第１のキャッシュメモリ２０は、第２のキャッシュメモリ３０及びＲＯＭ４０よりも容量（記憶できるデータ量）が小さい。第１のキャッシュメモリ２０は、第２のキャッシュメモリ３０及びＲＯＭ４０よりも、消費電力が小さく、同一面積当たりに記憶できるデータ量も少ない。第１のキャッシュメモリ２０は、ＣＰＵコア１０からのデータに対するアクセス速度が、第２のキャッシュメモリ３０と同等であるが、ＲＯＭ４０よりも速い。
【００１７】
第１のキャッシュメモリ２０は、タグメモリ２１と、データメモリ２２とを有する。タグメモリ２１は、データメモリ２２に格納されているデータのコピー元のデータのＲＯＭ４０におけるアドレスが格納される。データメモリ２２は、ＲＯＭ４０に記憶されているデータがコピーされたデータが格納される。第１のキャッシュメモリ２０は、ＣＰＵコア１０から読み出しが要求されたＲＯＭ４０のデータのコピーが自身に格納されている場合、そのコピーされたデータをＣＰＵコア１０に出力する。
【００１８】
より具体的には、データメモリ２２は、複数のエントリを有する。データメモリ２２の複数のエントリのそれぞれは、ＲＯＭ４０における異なるアドレスのデータのコピーを格納することが可能である。タグメモリ２１は、データメモリ２２が有する複数のエントリのそれぞれに対応する複数のエントリを有する。タグメモリ２１の複数のエントリのそれぞれは、そのエントリに対応するデータメモリ２２のエントリに格納されるデータのコピー元のデータのＲＯＭ４０におけるアドレスが格納される。
【００１９】
ＣＰＵコア１０は、データのＲＯＭ４０におけるアドレスを指定して、データの読み出しを要求する。第１のキャッシュメモリ２０は、ＣＰＵコア１０からデータの読み出しの要求があった場合、タグメモリ２１が有する複数のエントリから、ＣＰＵコア１０から指定されたアドレスと一致するアドレスを検索する。第１のキャッシュメモリ２０は、ＣＰＵコア１０から指定されたアドレスと一致するアドレスを検出した場合（第１のキャッシュメモリ２０がヒットした場合）、その検出したアドレスが格納されたエントリに対応するデータメモリ２２のエントリに格納されたデータをＣＰＵコア１０に出力する。これにより、ＣＰＵコア１０は、ＲＯＭ４０に代えて、ＲＯＭ４０よりも高速な第１のキャッシュメモリ２０からデータを読み出すことができる。
【００２０】
第２のキャッシュメモリ３０は、ＲＯＭ４０に記憶されているデータのコピーが一時的に格納される記憶回路である。第２のキャッシュメモリ３０は、第１のキャッシュメモリ２０よりも下位レベルのメモリであり、ＲＯＭ４０よりも上位レベルのメモリである。第２のキャッシュメモリ３０は、第１のキャッシュメモリ２０よりも容量（記憶できるデータ量）が大きく、ＲＯＭ４０よりも容量が小さい。第２のキャッシュメモリ３０は、第１のキャッシュメモリ２０よりも、消費電力が大きく、同一面積当たりに記憶できるデータ量も多い。一方で、第２のキャッシュメモリ３０は、ＲＯＭ４０よりも、消費電力が小さく、同一面積当たりに記憶できるデータ量も少ない。第２のキャッシュメモリ３０は、ＣＰＵコア１０からのデータに対するアクセス速度が、第１のキャッシュメモリ２０と同一であるが、ＲＯＭ４０よりも速い。
【００２１】
第２のキャッシュメモリ３０は、タグメモリ３１と、データメモリ３２とを有する。タグメモリ３１は、データメモリ３２に格納されているデータのコピー元のデータのＲＯＭ４０におけるアドレスが格納される。データメモリ３２は、ＲＯＭ４０に記憶されているデータがコピーされたデータが格納される。第２のキャッシュメモリ３０は、ＣＰＵコア１０から読み出しが要求されたＲＯＭ４０のデータのコピーが自身に格納されている場合、そのコピーされたデータをＣＰＵコア１０に出力する。
【００２２】
より具体的には、第２のキャッシュメモリ３０のタグメモリ３１及びデータメモリ３２も、第１のキャッシュメモリ２０のタグメモリ２１及びデータメモリ２２と同様に、複数のエントリを有する。タグメモリ３１及びデータメモリ３２のそれぞれのエントリに格納される内容も、それらを利用した第２のキャッシュメモリ３０の動作についても、第１のキャッシュメモリ２０について説明した内容と同様であるため、その説明は省略する。
【００２３】
ここで、第２のキャッシュメモリ３０は、タグメモリ３１に対するアドレス検索を、第１のキャッシュメモリ２０によるタグメモリ２１に対するアドレス検索と並列に行う。ただし、第２のキャッシュメモリ３０は、ＣＰＵコア１０から指定されたアドレスと一致するアドレスを検出した場合（第２のキャッシュメモリ３０がヒットした場合）であっても、第１のキャッシュメモリ２０がＣＰＵコア１０から指定されたアドレスと一致するアドレスを検出しなかった場合（第１のキャッシュメモリ２０がミスヒットした場合）のみに、ＣＰＵコア１０にデータを出力する。これにより、ＣＰＵコア１０は、第１のキャッシュメモリ２０がミスヒットした場合であっても、ＲＯＭ４０に代えて、ＲＯＭ４０よりも高速な第２のキャッシュメモリ３０からデータを読み出すことができる。
【００２４】
なお、ＣＰＵコア１０は、第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０のいずれもミスヒットした場合は、ＲＯＭ４０からデータを読み出す。
【００２５】
ＲＯＭ４０は、ＣＰＵコア１０がその処理の実行に利用する各種データが格納される記憶回路である。このデータは、例えば、上述したようにＣＰＵコア１０が実行するプログラムが含まれる。ＲＯＭ４０は、メインメモリとして機能する。ＲＯＭ４０は、例えば、フラッシュメモリであってもよい。
【００２６】
続いて、図２及び図３を参照して、実施の形態１に係る第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０の容量の決定方法について説明する。図２は、第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０のそれぞれの容量と、第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０のそれぞれの面積の合計との関係を示す表である。図３は、第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０のそれぞれの容量と、第１のキャッシュメモリ２０、第２のキャッシュメモリ３０及びＲＯＭ４０のそれぞれの電流値の合計との関係を示す表である。
【００２７】
ここで、本実施の形態１では、第１のキャッシュメモリ２０、第２のキャッシュメモリ３０及びＲＯＭ４０のそれぞれについて、速度（ＣＰＵコア１０からのデータに対するアクセス速度）、面積（１Ｋバイト当たりの面積）、及び、電流のそれぞれが、以下の通りである例について説明する。なお、より具体的には、電流は、連続してデータへのアクセスが発生した場合における平均消費電流を示している。この平均消費電流は、例えば、いくつかのベンチマークプログラムにより、事前に第１のキャッシュメモリ２０、第２のキャッシュメモリ３０及びＲＯＭ４０のそれぞれの消費電力の評価を行うことで得るようにすればよい。
【００２８】
・第１のキャッシュメモリ２０
速度：０ウエイト、面積：１．０ｕｍ２／Ｋバイト、電流：０．１ｍＡ
・第２のキャッシュメモリ３０
速度：０ウエイト、面積：０．１ｕｍ２／Ｋバイト、電流：１ｍＡ
・ＲＯＭ４０
速度：８ウエイト、面積：０．０１ｕｍ２／Ｋバイト、電流：１０ｍＡ
【００２９】
このように、メモリは、単位容量当たりの面積と、消費電力とがトレードオフの関係にある。本実施の形態１では、この関係を考慮して、面積（＝コスト）当たりの消費電力を最小化するように、メモリ構成が最適化されている。
【００３０】
図２は、第１のキャッシュメモリ２０の容量が、０バイト、３２バイト、６４バイト、１２８バイト、２５６バイト、及び、５１２バイトの場合と、第２のキャッシュメモリ３０の容量が、０バイト、１０００バイト、２０００バイト、４０００バイト、８０００バイトの場合との組み合わせのそれぞれについて、第１のキャッシュメモリ２０と第２のキャッシュメモリ３０の合計面積を示している。
【００３１】
この合計面積は、第１のキャッシュメモリ２０と第２のキャッシュメモリ３０のそれぞれについて、上述した１Ｋバイト当たりの面積に対して容量（Ｋバイト単位）を乗算した結果となる値を合計することで算出することができる。その結果、第１のキャッシュメモリ２０の容量と第２のキャッシュメモリ３０の容量の組み合わせのそれぞれについて、図２に示すように合計面積が得られる。
【００３２】
図３は、第１のキャッシュメモリ２０の容量が、０バイト、３２バイト、６４バイト、１２８バイト、２５６バイト、及び、５１２バイトの場合と、第２のキャッシュメモリ３０の容量が、０バイト、１０００バイト、２０００バイト、４０００バイト、８０００バイトの場合との組み合わせのそれぞれについて、第１のキャッシュメモリ２０、第２のキャッシュメモリ３０及びＲＯＭ４０の合計電流を示している。この合計電流は、次式（１）によって算出されている。
【００３３】
合計電流  ＝
第１のキャッシュメモリ２０の電流×第１のキャッシュメモリ２０のヒット率Ａ  ＋
第２のキャッシュメモリ３０の電流×第２のキャッシュメモリ３０のヒット率Ｂ  ＋
ＲＯＭ４０の電流×ＲＯＭ４０のヒット率（１−Ａ−Ｂ）  ・・・  （１）
【００３４】
なお、第１のキャッシュメモリ２０のヒット率は、第１のキャッシュメモリ２０の容量が大きくなるに従って大きくなる。第２のキャッシュメモリ３０のヒット率は、第２のキャッシュメモリ３０の容量が大きくなるに従って大きくなる。ＲＯＭ４０のヒット率は、第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０の容量が小さくなる（ヒット率が小さくなる）に従って大きくなる。
【００３５】
この場合に、面積要求が０．８ｕｍ２以下であり、かつ、電流要求が０．９ｍＡ以下であるものとする。これらの要求を満たす構成は、以下の２つの組み合わせとなる。
【００３６】
｛第１のキャッシュメモリ２０の容量、第２のキャッシュメモリ３０の容量｝
＝｛２５６バイト、４Ｋバイト｝、｛５１２バイト、２Ｋバイト｝
【００３７】
よって、この場合には、この２つの組み合わせのうち、いずれかの組み合わせとなるように、第１のキャッシュメモリ２０の容量と第２のキャッシュメモリ３０の容量が決定される。
【００３８】
続いて、図４を参照して、実施の形態１に係る第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０の詳細構成について説明する。図４は、実施の形態１に係る第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０の詳細構成を示すブロック図である。
【００３９】
第１のキャッシュメモリ２０は、タグメモリ２１及びデータメモリ２２の他に、タグ制御回路２３と、データ入出力制御回路２４とを有する。なお、図４では、第１のキャッシュメモリ２０が２ｗａｙセットアソシアティブ方式を採用したキャッシュメモリである例について示している。
【００４０】
タグメモリ２１は、上述したように、複数のエントリを有している。図４では、１ｗａｙ当たりのエントリ数が１２８である例について示している。よって、ｗａｙ数は２であるため、エントリ数は、全体で１２８×２個となる。１ｗａｙ当たりの１２８個のエントリのそれぞれは、ＣＰＵコア１０が指定する３２ビット（０ビット目〜３１ビット目）のＲＯＭ４０のアドレスのうち、３ビット目〜９ビット目がとり得る値のそれぞれに対応付けられている。すなわち、ＣＰＵコア１０から指定された３２ビットのＲＯＭ４０のアドレスのうち、３ビット目〜９ビット目は、いわゆるエントリアドレスに相当する。また、タグメモリ２１は、同一のエントリアドレスに対応するエントリを２つ（ｗａｙ数）有することになる。
【００４１】
データメモリ２２は、上述したように、複数のエントリを有している。データメモリ２２も、タグメモリ２１と同様に、エントリ数が１２８×２個である。また、データメモリ２２が有する複数のエントリのそれぞれは、上述したように、タグメモリ２１が有する複数のエントリのそれぞれに対応する。すなわち、タグメモリ２１のエントリに対応するデータメモリ２２のエントリは、ＲＯＭ４０において、そのタグメモリ２１のエントリで特定されるアドレスに記憶されたデータのコピーが格納されている。
【００４２】
タグメモリ２１のエントリのそれぞれは、ＬＲＵ（Least Recently Used）ビットが格納される領域と、Ｖａｌｉｄビットが格納される領域と、ＲＯＭ４０のアドレスのうちの１０ビット目〜１７ビット目の値（いわゆるフレームアドレス）が格納される領域とを含んでいる。
【００４３】
ＬＲＵビットは、同一のエントリアドレスで特定される２つのエントリのうち、最後にアクセスされてからの時間が最も長いデータ（最古にアクセスされたデータ）が格納されるエントリを示すデータである。例えば、ＬＲＵビットは、２つのエントリのうち、最後にアクセスされてからの時間が最も長いデータが格納されるエントリは“１”を示し、最後にアクセスされてからの時間が最も長くない（最古にアクセスされていない）データが格納されるエントリは“０”を示す。
【００４４】
Ｖａｌｉｄビットは、そのＶａｌｉｄビットが格納されるエントリに対応するデータメモリ２２のエントリに格納されるデータが有効であるか無効であるかを示すデータである。例えば、Ｖａｌｉｄビットは、データメモリ２２のデータが有効である場合には、該データが有効であること（例えば“１”）を示し、データメモリ２２のデータが無効である場合には、該データが無効であること（例えば“０”）を示す。
【００４５】
フレームアドレスは、上述したように、そのフレームアドレスが格納されるエントリに対応するデータメモリ２２のエントリに格納されるデータのコピー元のデータのＲＯＭ４０におけるアドレスのうち、０ビット目〜１７ビット目の値を示す。よって、ＣＰＵコア１０が指定する３２ビットのＲＯＭ４０のアドレスのうち、０ビット目〜１７ビット目の値が、エントリアドレスによって特定されたエントリに格納されたフレームアドレスと一致する場合、そのＣＰＵコア１０が指定したＲＯＭ４０のアドレスのデータのコピーがデータメモリ２２に格納されていることになる。
【００４６】
タグ制御回路２３は、（１）ＲＯＭ領域判定、（２）アドレス比較、（３）Ｖビット制御、（４）ＬＲＵ制御などのタグメモリ２１に関する制御を行う。
【００４７】
（１）ＲＯＭ領域判定
タグ制御回路２３は、ＣＰＵコア１０から指定された３２ビットのＲＯＭ４０のアドレスのうち、１８ビット目〜３１ビット目の値に基づいて、ＲＯＭ４０のアドレスが指定されているか否かを判定する。例えば、ＲＯＭ４０のアドレスが、００００−００００ｈ〜０００Ｆ−ＦＦＦＦｈにマッピングされている場合、タグ制御回路２３は、１８ビット目〜３１ビット目の値のうち、上位１６ビットがオール０であるか否かを判定する。上位１６ビットがオール０である場合、タグ制御回路２３は、ＲＯＭ４０のアドレスが指定されていると判定する。一方、上位１６ビットがオール０でない場合、タグ制御回路２３は、ＲＯＭ４０のアドレスが指定されていないと判定する。タグ制御回路２３は、ＲＯＭ４０のアドレスが指定されていると判定した場合、次に説明する（２）アドレス比較を行う。一方、タグ制御回路２３は、ＲＯＭ４０のアドレスが指定されていないと判定した場合、（２）アドレス比較は行わない。
【００４８】
（２）アドレス比較
タグ制御回路２３は、ＣＰＵコア１０から指定された３２ビットのＲＯＭ４０のアドレスのうち、エントリアドレスで特定される２つのエントリに格納されたフレームアドレスと、ＣＰＵコア１０から指定された３２ビットのＲＯＭ４０のアドレスにおけるフレームアドレスとを比較する。例えば、ＣＰＵコア１０から指定されたＲＯＭ４０のアドレスにおけるエントリアドレスをタグメモリ２１に入力することで、タグメモリ２１がそのエントリアドレスに対応する２つのエントリに格納されたデータをタグ制御回路２３に出力する。タグ制御回路２３は、タグメモリ２１から出力されたデータに基づいてアドレス比較を行う。
【００４９】
比較したアドレスが一致する場合、タグ制御回路２３は、ＣＰＵコア１０から指定されたＲＯＭ４０のアドレスのデータのコピーがデータメモリ２２に格納されている（第１のキャッシュメモリ２０がヒットした）と判定する。この場合、タグ制御回路２３は、データの出力を指示するデータ制御情報をデータ入出力制御回路２４に出力すると共に、ヒットしたことを示すヒット情報を第２のキャッシュメモリ３０のデータ入出力制御回路３４に出力する。このデータ制御情報は、ＣＰＵコア１０から指定されたＲＯＭ４０のアドレスにおけるフレームアドレスと一致するフレームアドレスが格納されたエントリに対応するデータメモリ２２のエントリを示す。
【００５０】
一方、比較したアドレスが一致しない場合、タグ制御回路２３は、ＣＰＵコア１０から指定されたＲＯＭ４０のアドレスのデータのコピーがデータメモリ２２に格納されていない、即ちミスヒットしたと判定する。この場合、タグ制御回路２３は、データの出力を指示するデータ制御情報をデータ入出力制御回路２４に出力せず、ヒットしなかった（ミスヒットした）ことを示すヒット情報を第２のキャッシュメモリ３０のデータ入出力制御回路３４に出力する。
【００５１】
（３）Ｖビット制御
タグ制御回路２３は、データ入出力制御回路２４がデータメモリ２２のいずれかのエントリにＲＯＭ４０のデータのコピーを格納した場合、そのエントリに対応するタグメモリ２１のエントリにおけるＶａｌｉｄビットを有効である旨を示すように更新する。また、タグ制御回路２３は、データメモリ２２のいずれかのエントリに格納されるＲＯＭ４０のデータのコピーが無効化された場合、そのエントリに対応するタグメモリ２１のエントリにおけるＶａｌｉｄビットを無効である旨を示すように更新する。
【００５２】
（４）ＬＲＵ制御
タグ制御回路２３は、データメモリ２２のいずれかのエントリに格納されるデータがアクセスされた場合、そのエントリに対応するタグメモリ２１のエントリにおけるＬＲＵビットを、最後にアクセスされてからの時間が最も長いことを示すように更新し、そのエントリと同一のエントリアドレスに対応する他のｗａｙのエントリにおけるＬＲＵビットを、最後にアクセスされてからの時間が最も長くないことを示すように更新する。
【００５３】
データ入出力制御回路２４は、タグ制御回路２３からのデータ制御情報に応じて、そのデータ制御情報で示されるエントリに格納されたＲＯＭ４０のデータのコピーをデータメモリ２２から取得し、取得したデータを選択回路５０に出力する。
【００５４】
第２のキャッシュメモリ３０は、タグメモリ３１及びデータメモリ３２の他に、タグ制御回路４３と、データ入出力制御回路３４とを有する。なお、図４では、第２のキャッシュメモリ３０も、第１のキャッシュメモリ２０と同様に、２ｗａｙセットアソシアティブ方式を採用したキャッシュメモリである例について示している。
【００５５】
タグメモリ３１、データメモリ３２、タグ制御回路３３、及び、データ入出力制御回路３４の動作内容については、上述したタグメモリ２１、データメモリ２２、タグ制御回路２３、及び、データ入出力制御回路２４の動作内容と同様であるため、その説明を省略する。
【００５６】
ただし、タグ制御回路３３は、タグ制御回路２３と異なり、ヒット情報を出力しない。また、データ入出力制御回路３４は、データ入出力制御回路２４と異なり、タグ制御回路４３からデータ制御情報が出力されている場合であっても、タグ制御回路２３からヒットしなかったことを示すヒット情報が出力されている場合には、データメモリ２２からデータを取得して選択回路５０に出力する動作は実行しない。
【００５７】
選択回路５０は、第１のキャッシュメモリ２０のデータ入出力制御回路２４から出力されるデータと、第２のキャッシュメモリ３０のデータ入出力制御回路３４から出力されるデータのうち、いずれか一方のデータを選択的に、データバスを介してＣＰＵコア１０に出力する。
【００５８】
選択回路５０は、第１のキャッシュメモリ２０がヒットした場合には、データ入出力制御回路２４から出力されるデータを選択してＣＰＵコア１０に出力する。選択回路５０は、第１のキャッシュメモリ２０がミスヒットし、かつ、第２のキャッシュメモリ３０がヒットした場合には、データ入出力制御回路３４から出力されたデータを選択してＣＰＵコア１０に出力する。ＣＰＵコア１０は、ＲＯＭ４０のデータの読み出しとして、この出力されたデータを取得する。
【００５９】
また、この場合には、データ入出力制御回路２４は、データ入出力制御回路３４から出力されたデータを、データメモリ２２に格納する。このデータは、そのデータのアドレスにおけるエントリアドレスに対応するデータメモリ２２のエントリに格納される。また、このデータは、エントリアドレスに対応する２つのエントリのうち、Ｖａｌｉｄビットが無効を示すタグメモリ２１のエントリ、もしくは、Ｖａｌｉｄビットが有効を示すが、ＬＲＵビットが最後にアクセスされてからの時間が最も長いことを示すタグメモリ２１のエントリに対応するデータメモリ２２のエントリに選択的に格納される。
【００６０】
このときに、タグ制御回路２３は、データを格納したエントリに対応するタグメモリ２１のそれぞれのエントリのデータを更新する。より具体的には、タグ制御回路２３は、Ｖａｌｉｄビットが無効を示している場合には、有効を示すように変更する。タグ制御回路２３は、ＬＲＵビットを最後にアクセスされてからの時間が最も長くないことを示す値に変更すると共に、同一のエントリアドレスに対応する他のｗａｙのエントリにおけるＬＲＵビットを最後にアクセスされてからの時間が最も長いことを示す値に変更する。また、タグ制御回路２３は、フレームアドレスを、そのデータのコピー元のデータのＲＯＭ４０におけるアドレスのうち、１０ビット目〜１７ビット目の値に変更する。
【００６１】
一方、第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０の両方がミスヒットした場合には、ＣＰＵコア１０は、ＲＯＭ４０からデータを読み出す。すなわち、ＲＯＭ４０は、ＣＰＵコア１０から指定されたアドレスに格納されるデータをＣＰＵコア１０に出力する。ＣＰＵコア１０は、ＲＯＭ４０から出力されたデータを取得する。
【００６２】
また、この場合には、データ入出力制御回路２４及びデータ入出力制御回路３４のそれぞれは、そのＲＯＭ４０から読み出されたデータを、メモリバスを介して取得し、データメモリ２２及びデータメモリ３２のそれぞれに格納する。このときに、タグ制御回路２３及びタグ制御回路３３のそれぞれは、データを格納したエントリに対応するタグメモリ２１及びタグメモリ３１のそれぞれのエントリのデータを更新する。
【００６３】
データメモリ２２、３２においてデータを格納するエントリの選択方法、及び、タグメモリ２１、３１におけるエントリの更新内容については、上述した内容と同様であるため、その説明を省略する。
【００６４】
続いて、図５を参照して、実施の形態１に係る第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０の動作方式について説明する。図５は、実施の形態１に係る第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０において処理される信号（情報）のタイミングチャートである。なお、以下、図５に示す動作方式を「第１の方式」とも呼ぶ。
【００６５】
ＣＰＵコア１０は、ＲＯＭ４０のデータを読み出す場合、読み出し要求を出力する。この読み出し要求は、ＲＯＭ４０からのデータの読み出しを要求する情報であり、そのデータのアドレスを示すアドレス情報が含まれる。上述したように、第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０は、ＣＰＵコア１０からの読み出し要求を０ウエイトで処理する。すなわち、図５に示すように、ＣＰＵコア１０からの読み出し要求の出力に応じて、その読み出し要求が出力されたクロックサイクルの次のクロックサイクルで要求されたデータをＣＰＵコア１０に出力することができる。なお、ＲＯＭ４０は、ＣＰＵコア１０からの読み出し要求を８ウエイトで処理するものであるため、その読み出し要求が出力されたクロックサイクルの９つ後のクロックサイクルで要求されたデータをＣＰＵコア１０に出力することになる。
【００６６】
１つ目のクロックサイクル：
図５に示すように、ＣＰＵコア１０から読み出し要求が出力されたタイミングを１つ目のクロックサイクルとする。この場合、第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０のタグ制御回路２３、３３のそれぞれは、この１つ目のクロックサイクルで、タグメモリ２１からの読み出し要求に含まれるアドレス情報が示すアドレスに対応するエントリを検索し、その検索結果に応じて、データ制御情報及びヒット情報をデータ入出力制御回路２４、３４のそれぞれに出力する（以下、「エントリ検索動作」とも呼ぶ）。
【００６７】
２つ目のクロックサイクル：
２つ目のクロックサイクルでは、第１のキャッシュメモリ２０のデータ入出力制御回路２４は、タグ制御回路２３からデータ制御情報が出力された場合、そのデータ制御情報が示すエントリに格納されたデータを取得し、選択回路５０に出力する。第２のキャッシュメモリ３０のデータ入出力制御回路３４は、タグ制御回路２３からヒットしなかったことを示すヒット情報が出力され、かつ、タグ制御回路３３からデータ制御情報が出力された場合、そのデータ制御情報が示すエントリに格納されたデータをデータメモリ３２から取得し、選択回路５０に出力する。一方、データ入出力制御回路３４は、タグ制御回路２３からヒットしたことを示すヒット情報が出力された場合、タグ制御回路３３からデータ制御情報が出力されたとしても、データメモリ３２からデータの取得及び出力の動作（以下、「データ出力動作」とも呼ぶ）を抑止する。
【００６８】
続いて、図６を参照して、実施の形態１に係る半導体装置１の動作について説明する。図６は、実施の形態１に係る半導体装置１の動作を示すフローチャートである。
【００６９】
ＣＰＵコア１０は、ＲＯＭ４０のデータを読み出す場合、読み出し要求を出力する（Ｓ１）。タグ制御回路２３及びタグ制御回路３３のそれぞれは、並列に、読み出し要求に含まれるアドレス情報が示すアドレスに基づいて、第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０のそれぞれからデータを検索する（Ｓ２、Ｓ３）。より具体的には、上述したように、タグ制御回路２３及びタグ制御回路３３のそれぞれは、タグメモリ２１及びタグメモリ３１のそれぞれから、アドレス情報が示すアドレスにおけるフレームアドレスと一致するフレームアドレスを示すエントリを検索する。
【００７０】
タグ制御回路２３が、フレームアドレスが一致するエントリを検出し、ヒットしたと判定した場合（Ｓ４：Ｙｅｓ）、タグ制御回路２３は、ヒットしたことを示すヒット情報をデータ入出力制御回路３４に出力することで、データ入出力制御回路３４によるデータ出力動作を抑止する（Ｓ５）。また、この場合、タグ制御回路２３は、データ制御情報をデータ入出力制御回路２４に出力する。データ入出力制御回路２４は、タグ制御回路２３からのデータ制御情報に応じて、データメモリ２２からデータを取得し、選択回路５０を介してＣＰＵコア１０に出力する（Ｓ６）。
【００７１】
タグ制御回路２３が、フレームアドレスが一致するエントリを検出できず、ミスヒットしたと判定し（Ｓ４：Ｎｏ）、かつ、タグ制御回路３３が、フレームアドレスが一致するエントリを検出し、ヒットしたと判定した場合（Ｓ７：Ｙｅｓ）、タグ制御回路２３は、ヒットしなかったことを示すヒット情報をデータ入出力制御回路３４に出力している。また、タグ制御回路３３は、データ制御情報をデータ入出力制御回路３４に出力している。そのため、データ入出力制御回路３４は、タグ制御回路３３からのデータ制御情報に応じて、データメモリ３２からデータを取得し、選択回路５０を介してＣＰＵコア１０に出力する（Ｓ８）。
【００７２】
タグ制御回路２３が、フレームアドレスが一致するエントリを検出できず、ミスヒットしたと判定し（Ｓ４：Ｎｏ）、かつ、タグ制御回路３３もフレームアドレスが一致するエントリを検出できず、ミスヒットしたと判定した場合（Ｓ７：Ｎｏ）、ＲＯＭ４０は、読み出し要求に含まれるアドレス情報が示すアドレスのデータをＣＰＵコア１０に出力する（Ｓ９）。
【００７３】
ＣＰＵコア１０は、データ入出力制御回路２４、データ入出力制御回路３４及びＲＯＭ４０のいずれかから出力されたデータを取得する（Ｓ１０）。これにより、ＣＰＵコア１０によるデータの読み出しが完了する。
【００７４】
以上に説明したように、本実施の形態１では、第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０のそれぞれの容量は、第１のキャッシュメモリ２０、第２のキャッシュメモリ３０及びＲＯＭ４０（メインメモリ）のそれぞれの電流値を、それぞれのヒット率に応じて調整した値の合計値が、所定の電流閾値以下となるように決定されている。
【００７５】
２つのキャッシュメモリを組み合わせたメモリ構成を構築する場合には、コスト当たりの速度を最適化することが一般的である。それに対し、本実施の形態１では、第１のキャッシュメモリ２０、第２のキャッシュメモリ３０及びＲＯＭ４０（メインメモリ）のそれぞれの電流値を、それぞれのヒット率に応じて調整した値の合計値が、所定の電流閾値以下となるように、第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０のそれぞれの容量を決定するようにしている。これによれば、半導体装置１の消費電力を効果的に削減することができる。
【００７６】
また、本実施の形態１では、第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０のそれぞれの容量は、さらに、第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０のそれぞれの面積の合計値が、所定の面積閾値以下となるように決定されている。これによれば、面積（コスト）当たりの消費電力を削減することができる。言い換えると、面積（コスト）及び消費電力を最小化することができる。
【００７７】
また、本実施の形態１では、ＣＰＵコア１０（上位装置）からデータの読み出しが要求されたときに、第１のキャッシュメモリ２０がヒットした場合、タグ制御回路２３は、第２のキャッシュメモリ３０の少なくとも一部の動作を停止させるようにしている。より具体的には、少なくとも一部の動作の停止として、第２のキャッシュメモリ３０のデータ入出力制御回路３４（出力制御回路）によるデータの出力を抑止するようにしている。これによれば、不要な第２のキャッシュメモリ３０の動作を抑止して、半導体装置１の消費電力を削減することができる。
【００７８】
＜実施の形態２＞
続いて、実施の形態２について説明する。以下の実施の形態２の説明では、上述した実施の形態１と同様の内容については、同一の符号を付す等して、適宜、その説明を省略する。図７を参照して、実施の形態２に係る半導体装置２の構成について説明する。図７は、実施の形態２に係る半導体装置２の構成を示すブロック図である。
【００７９】
図７に示すように、実施の形態２に係る半導体装置２は、実施の形態１に係る半導体装置１と同様に、ＣＰＵコア１０と、第１のキャッシュメモリ２０と、第２のキャッシュメモリ３０と、ＲＯＭ４０とを有する。
【００８０】
ただし、本実施の形態２に係る半導体装置２では、実施の形態１に係る半導体装置１と異なり、第１のキャッシュメモリ２０がヒットした場合に、第２のキャッシュメモリ３０のデータ入出力制御回路３４によるデータ出力動作のみを抑止するのではなく、さらに、その前段階のタグ制御回路３３によるエントリ検索動作においても、ヒットを判定した以降の動作を抑止する。
【００８１】
ここで、実施の形態１では、より具体的には、タグメモリ３１は、フリップフロップ（ＦＦ）で構成されており、データメモリ３２は、ＳＲＡＭ（Static Random Access Memory）で構成されている。そのため、エントリの検索を高速に行うことができる。一方で、本実施の形態２では、タグメモリ３１とデータメモリ３２の両方をＳＲＡＭで構成している。そのため、タグ制御回路３３によるエントリの検索は、実施の形態１と比較して低速となるが、タグメモリ３１のエントリ数を増加させて、第２のキャッシュメモリ３０を大容量化することができる。
【００８２】
なお、第１のキャッシュメモリ２０のタグメモリ２１は、フリップフロップで構成されており、第１のキャッシュメモリ２０のデータメモリ２２は、ＳＲＡＭで構成されている。すなわち、タグ制御回路３３によるエントリの検索は、タグ制御回路２３によるエントリの検索よりも低速である。
【００８３】
そのため、本実施の形態２では、タグ制御回路２３による第１のキャッシュメモリ２０がヒットしたか否かの判定が、タグ制御回路３３による第２のキャッシュメモリ３０がヒットしたか否かの判定よりも早く行われる。言い換えると、タグ制御回路２３による判定結果が得られたときには、タグ制御回路３３は、第２のキャッシュメモリ３０がヒットしたか否かの判定（タグメモリ３１におけるエントリを検索）を実行途中である。よって、本実施の形態２では、上述したように、タグ制御回路２３によって第１のキャッシュメモリ２０がヒットしたと判定した場合に、それ以降のタグ制御回路３３によるエントリ検索動作を抑止することで、データの出力動作も抑止する。
【００８４】
なお、本実施の形態２に係る第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０の詳細構成については、図４に示した実施の形態１に係る第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０の詳細構成と同様であるため、その説明を省略する。ただし、本実施の形態２では、実施の形態１と異なり、上述したように、タグ制御回路２３が、ヒット情報をデータ入出力制御回路３４に代えてタグ制御回路３３に出力する。
【００８５】
続いて、図８を参照して、実施の形態２に係る第２のキャッシュメモリ３０の動作方式について説明する。図８は、実施の形態２に係る第２のキャッシュメモリ３０において処理される信号（情報）のタイミングチャートである。なお、以下、図８に示す動作方式を「第２の方式」とも呼ぶ。
【００８６】
上述したように、本実施の形態２では、実施の形態１と比較して、第２のキャッシュメモリ３０によるエントリ検索動作が低速である。よって、図８に示す第２の方式は、図５に示した第１の方式と異なり、第２のキャッシュメモリ３０のタグ制御回路３３が、２つ目のクロックサイクルでデータ制御情報を出力する。そのため、第１のキャッシュメモリ２０のタグ制御回路２３が、１つ目のクロックサイクルでヒット情報を出力することで、第２のキャッシュメモリ３０のタグ制御回路３３によるエントリ検索動作を停止して、データ制御情報の出力を抑止することができる。
【００８７】
なお、第２の方式であっても、タグ制御回路３３は、２クロックサイクルで、データ制御情報に応じて、データメモリ３２からデータを取得し、ＣＰＵコア１０に出力する。よって、第２の方式により動作する場合であっても、タグ制御回路３３は、ＣＰＵコア１０からの読み出し要求を０ウエイトで処理する。
【００８８】
なお、第１のキャッシュメモリ２０の動作方式については、図５に示した第１の方式であるため、その説明を省略する。
【００８９】
続いて、図９を参照して、実施の形態２に係る半導体装置２の動作について説明する。図９は、実施の形態２に係る半導体装置２の動作を示すフローチャートである。
【００９０】
本実施の形態２に係る半導体装置２の動作は、図６に示した実施の形態１に係る半導体装置１の動作と異なり、ステップＳ６に代えて、ステップＳ１１を有する。すなわち、タグ制御回路２３がヒットしたと判定した場合（Ｓ４：Ｙｅｓ）、タグ制御回路２３は、ヒットしたことを示すヒット情報をタグ制御回路３３に出力することで、タグ制御回路３３による以降のエントリ検索動作と、データ入出力制御回路３４によるデータ出力動作を抑止する（Ｓ１１）。他の動作については、実施の形態１と同様であるため、その説明を省略する。
【００９１】
以上に説明したように、本実施の形態２では、ＣＰＵコア１０（上位装置）からデータの読み出しが要求されたときに、第１のキャッシュメモリ２０がヒットした場合、タグ制御回路２３は、第２のキャッシュメモリ３０の少なくとも一部の動作を停止させるようにしている。より具体的には、少なくとも一部の動作の停止として、第２のキャッシュメモリ３０のタグ制御回路３３（検索回路）によるデータの検索を抑止するようにしている。これによれば、そのデータの検索後に行われるデータの出力も抑止することができるため、半導体装置１の消費電力をより削減することができる。
【００９２】
＜実施の形態３＞
続いて、実施の形態３について説明する。以下の実施の形態３の説明では、上述した実施の形態１と同様の内容については、同一の符号を付す等して、適宜、その説明を省略する。実施の形態３に係る半導体装置３の構成については、図１に示した実施の形態１に係る半導体装置１の構成と同様であるため、その説明を省略する。
【００９３】
ただし、実施の形態１、２では、ＣＰＵコア１０、第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０の動作周波数が同一とされていたが、実施の形態３では、第２のキャッシュメモリ３０の動作周波数が、ＣＰＵコア１０及び第１のキャッシュメモリ２０の動作周波数よりも低い場合における動作を示すものである。これによれば、第２のキャッシュメモリ３０の消費電力を、より削減することができる。本実施の形態３では、第２のキャッシュメモリ３０の動作周波数が、ＣＰＵコア１０及び第１のキャッシュメモリ２０の動作周波数の１／２である例について説明する。なお、ＣＰＵコア１０及び第１のキャッシュメモリ２０の動作周波数に対する、第２のキャッシュメモリ３０の動作周波数の割合は、この例に限られない。ＣＰＵコア１０及び第１のキャッシュメモリ２０の動作周波数よりも低いのであれば、他の割合を採用するようにしてもよい。
【００９４】
続いて、図１０を参照して、実施の形態３に係る第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０の詳細構成について説明する。図１０は、実施の形態３に係る第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０の詳細構成を示すブロック図である。
【００９５】
ＣＰＵコア１０は、図５及び図８に示したように、ＣＰＵコア１０の動作クロックの１クロックサイクル（１つ目のクロックサイクル）の間だけ読み出し要求（アドレス情報）を出力する。しかし、本実施の形態３では、実施の形態１と比較して、上述したように、第２のキャッシュメモリ３０の動作周波数が、ＣＰＵコア１０及び第１のキャッシュメモリ２０の動作周波数の１／２である。そのため、第２のキャッシュメモリ３０は、その読み出し要求が出力されるクロックサイクルの２倍となる２クロックサイクル（１つ目及び２つ目のクロックサイクル）の間、エントリ検索動作を行う。よって、実施の形態１の第２のキャッシュメモリ３０の構成のままでは、２クロックサイクルで、タグ制御回路２３が、読み出しが期待されるアドレス情報（１クロックサイクルのアドレス情報）とは異なるアドレス情報の出力を受けることで、エントリの検索が正常に行われなくなってしまう可能性がある。
【００９６】
そこで、本実施の形態３に係る第２のキャッシュメモリ３０は、実施の形態１に係る第２のキャッシュメモリと比較して、さらに、アクセス要求保存用バッファ３５を有している。アクセス要求保存用バッファ３５は、ＣＰＵコア１０から出力されたアドレス情報を保持し、保持したアドレス情報を、ＣＰＵコア１０によるアドレス情報の出力終了後も、第２のキャッシュメモリ３０の内部に対して出力し続ける。例えば、上述したように、ＣＰＵコア１０が１つ目のクロックサイクルでアドレス情報の出力を終了してしまう場合には、アクセス要求保存用バッファ３５は、２つ目のクロックサイクルにおいても、保持したアドレス情報をタグメモリ３１及びタグ制御回路３３に出力する。これによれば、タグ制御回路２３が、読み出しが期待されるアドレス情報の参照を継続可能となる。すなわち、アクセス要求保存用バッファ３５がアドレス情報を保持して出力するクロックサイクル数は、ＣＰＵコア１０から読み出し要求（アドレス情報）が出力されているクロックサイクルを含めて、次のように定めればよい。
【００９７】
アクセス要求保存用バッファ３５がアドレス情報を保持・出力するクロックサイクル数
＝  ＣＰＵコア１０が読み出し要求（アドレス情報）を出力するクロックサイクル数
×  （ＣＰＵコア１０の動作周波数  ／  第２のキャッシュメモリ３０の動作周波数）
【００９８】
続いて、図１１を参照して、実施の形態３に係る第２のキャッシュメモリ３０の動作について説明する。図１１は、実施の形態３に係る第２のキャッシュメモリ３０において処理される信号（情報）のタイミングチャートを示す図である。なお、図１１におけるクロックは、ＣＰＵコア１０及び第１のキャッシュメモリ２０の動作クロックを示している。
【００９９】
１つ目のクロックサイクル：
ＣＰＵコア１０は、ＲＯＭ４０のデータを読み出す場合、読み出し要求を出力する。第２のキャッシュメモリ３０のアクセス要求保存用バッファ３５は、その読み出し要求に含まれるアドレス情報を格納する。なお、第１のキャッシュメモリ２０のタグ制御回路２３及び第２のキャッシュメモリ３０のタグ制御回路３３は、その読み出し要求に含まれるアドレス情報に基づいて、エントリ検索動作を行う。
【０１００】
２つ目のクロックサイクル：
ＣＰＵコア１０は、読み出し要求の出力を終了する。また、第１のキャッシュメモリ２０のタグ制御回路２３は、エントリ検索動作を終了する。第２のキャッシュメモリ３０のアクセス要求保存用バッファ３５は、１つ目のクロックサイクルで格納したアドレス情報をタグメモリ３１及びタグ制御回路３３に出力する。これにより、第２のキャッシュメモリ３０のタグ制御回路３３は、２つ目のクロックサイクルでも、エントリ検索動作を継続することになるが、アクセス要求保存用バッファ３５から出力されるアドレス情報に基づいて、正常にエントリ検索動作を継続することが可能となる。タグ制御回路３３は、ヒットした場合に、データ制御情報をデータ入出力制御回路３４に出力する。
【０１０１】
３つ目のクロックサイクル及び４つ目のクロックサイクル：
データ入出力制御回路３４は、タグ制御回路３３からデータ制御情報が出力された場合、そのデータ制御情報で指定されたエントリに格納されたデータをデータメモリ３２から取得し、選択回路５０に出力する。
【０１０２】
＜実施の形態３の変形例＞
上述した実施の形態３では、第２のキャッシュメモリ３０の動作周波数が、ＣＰＵコア１０及び第１のキャッシュメモリ２０の動作周波数よりも低い場合に、アクセス要求保存用バッファ３５を利用することで、第２のキャッシュメモリ３０が正常なアドレス情報の認識を継続可能としているが、これに限られない。
【０１０３】
例えば、第２のキャッシュメモリ３０のタグ制御回路３３は、第１のキャッシュメモリ２０のタグ制御回路２３からミスしたことを示すヒット情報が入力された場合に、読み出し要求の出力の継続を要求する要求情報をＣＰＵコア１０に出力するようにしてもよい。そして、ＣＰＵコア１０は、タグ制御回路３３からの要求情報に応じて、さらにもうタグ制御回路３３がエントリ検索動作を終了するまでのクロックサイクルの間、アドレス情報の出力を継続するようにしてもよい。
【０１０４】
以上に説明したように、本実施の形態３では、第２のキャッシュメモリ３０の動作周波数は、ＣＰＵコア１０（上位装置）及び第１のキャッシュメモリ２０の動作周波数よりも低速である。そして、第２のキャッシュメモリ３０は、ＣＰＵコア１０による読み出し要求の出力の終了後にも、タグ制御回路３３（検索回路）がアドレス情報を利用可能とするために、アドレス情報を保持するアクセス要求保存用バッファ３５を有している。これによれば、第２のキャッシュメモリ３０の動作周波数を下げることで、より消費電力を低減することができると共に、動作が低速な第２のキャッシュメモリ３０の検索動作を正常に行うことができる。
【０１０５】
なお、以上の各実施の形態１〜３の説明では、説明の簡略化のため、ＣＰＵコア１０からデータの読み出しを要求する例のみについて説明したが、当然に、ＣＰＵコア１０からデータの書き込みを要求するようにしてもよい。この場合、ＣＰＵコア１０は、アドレス情報と書き込むデータとを含む情報である書き込み要求を出力する。第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０のタグ制御回路２３、３３は、書き込み要求に含まれるアドレス情報が示すアドレスについて、上述と同様に、エントリ検索を行う。そして、データ入出力制御回路２４、３４は、タグ制御回路２３、３３から出力されたデータ制御情報が示すデータメモリ２２、３２のエントリに、書き込み要求に含まれるデータを格納する。
【０１０６】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【０１０７】
上述した各実施の形態１〜３では、第１のキャッシュメモリ２０と第２のキャッシュメモリ３０の容量を、式（１）に基づいて決定する例について説明したが、これに限られない。第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０のそれぞれの容量は、第１のキャッシュメモリ２０、第２のキャッシュメモリ３０及びＲＯＭ４０のそれぞれの電流値を、それぞれのヒット率に応じて調整した値の合計値が、所定の電流閾値以下となるように決定されるのであれば、他の方法で決定してもよい。例えば、第１のキャッシュメモリ２０、第２のキャッシュメモリ３０及びＲＯＭ４０のそれぞれの電流値に対して、それぞれのヒット率に比例する値を乗算した結果として得られた値の合計値が、所定の電流閾値以下となるように決定してもよい。
【０１０８】
また、上述した各実施の形態１〜３では、データメモリ２２、３２においてデータを格納するエントリを選択するアルゴリズムとして、ＬＲＵを使用した例について説明したが、これに限られない。データメモリ２２、３２においてデータを格納するエントリを選択するアルゴリズムとして、ＬＦＵ（Least Frequently Used）を採用してもよい。この場合、タグメモリ２１、３１は、ＬＲＵビットに代えて、データがアクセスされた頻度を示すＬＦＵ情報が格納される。
【０１０９】
また、上述した各実施の形態１〜３では、第１のキャッシュメモリ２０及び第２のキャッシュメモリ３０のｗａｙ数が２つである例について説明したが、他のｗａｙ数を採用してもよい。
【符号の説明】
【０１１０】
１、２、３  半導体装置
１０  ＣＰＵコア
２０  第１のキャッシュメモリ
２１、３１  タグメモリ
２２、３２  データメモリ
２３、３３  タグ制御回路
２４、３４  データ入出力制御回路
３０  第２のキャッシュメモリ
３５  アクセス要求保存用バッファ
４０  ＲＯＭ
５０  選択回路
【図１】
0006478843.tif 000002
【図２】
0006478843.tif 000003
【図３】
0006478843.tif 000004
【図４】
0006478843.tif 000005
【図５】
0006478843.tif 000006
【図６】
0006478843.tif 000007
【図７】
0006478843.tif 000008
【図８】
0006478843.tif 000009
【図９】
0006478843.tif 000010
【図１０】
0006478843.tif 000011
【図１１】
0006478843.tif 000012