(57)【特許請求の範囲】
【請求項１】
記憶領域に格納される半導体集積回路を評価するための評価用プログラムを用いた第一のシミュレーションによって得られる、メモリへのアクセスに応じて該メモリ内での対象データに対するアクセスに係る回数情報を用いて、論理的なread回数及び論理的なwrite回数を計算する計算手段と、
前記評価用プログラムを用いて、前記記憶領域に格納される前記半導体集積回路の設計データに従った第二のシミュレーションによって、前記メモリへの実際のread回数及び実際のwrite回数を取得する取得手段と、
前記実際のread回数が前記論理的なread回数より大きい場合、又は、前記実際のwrite回数が前記論理的なwrite回数より大きい場合、前記メモリに無駄な電力が有ると判定する無駄電力判定手段と
を有することを特徴とする半導体集積回路の低電力設計支援装置。
【請求項２】
前記評価用プログラムを用いて、前記第一のシミュレーションを実行する性能評価シミュレータを有し、
前記評価用プログラムを用いて、前記設計データに従った前記第二のシミュレーションを実行する論理シミュレータを有することを特徴とする請求項１記載の低電力設計支援装置。
【請求項３】
前記設計データは、イベントカウンタを有し、
前記評価用プログラムを用いて、前記イベントカウンタを有する設計データに従って、前記第一のシミュレーションを含む前記第二のシミュレーションを実行する論理シミュレータを有し、
前記回数情報は、前記第二のシミュレーションにより前記イベントカウンタが動作することによって抽出され、
前記取得手段は、前記第二のシミュレーションから前記実際のアクセス回数を取得すること
を特徴とする請求項１記載の低電力設計支援装置。
【請求項４】
前記回数情報は、load/store回数、キャッシュミス率、MOVE
IN/MOVE OUT回数を含むことを特徴とする請求項１乃至３のいずれか一項記載の低電力設計支援装置。
【請求項５】
記憶領域に格納される半導体集積回路を評価するための評価用プログラムを用いた第一のシミュレーションによって得られる、メモリへのアクセスに応じて該メモリ内での対象データに対するアクセスに係る回数情報を用いて、論理的なread回数及び論理的なwrite回数を計算し、
前記評価用プログラムを用いて、前記記憶領域に格納される前記半導体集積回路の設計データに従った第二のシミュレーションによって、前記メモリへの実際のread回数及び実際のwrite回数を取得し、
前記実際のread回数が前記論理的なread回数より大きい場合、又は、前記実際のwrite回数が前記論理的なwrite回数より大きい場合、前記メモリに無駄な電力が有ると判定すること
をコンピュータが実行する半導体集積回路の低電力設計支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路における低電力なメモリの設計を支援する技術に関する。
【背景技術】
【０００２】
近年、半導体集積回路の高密度化すると共に、その消費電力を削減することが重要な課題となっている。半導体集積回路において、ＲＡＭ（Random Access Memory）の電力が占める割合は大きく、ＲＡＭの無駄な動作を削除した低電力な集積回路を設計することによって、大きな電力削減の効果を得ることができる。
【０００３】
例えば、多ウェイ・セットアソシアティブ対応のキャッシュメモリにおいて、ウェイ数分のタグアドレスを格納した大規模なアドレスメモリと、タグアドレスに対応するデータメモリの内容の有効／無効を示す有効ビットを格納した小規模な有効ビットメモリとに分離して配置し、有効ビットが無効であるウェイに関しては大規模なアドレスメモリの読み出し又は出力の動作を停止させるように構成したり、ＲＡＭの後続回路をモニタして、ＲＡＭから読み出したデータが後続回路に使われたか否かをチェックすることにより、無駄なＲＡＭのread動作を検出する等が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−１１１８３２号公報
【非特許文献】
【０００５】
【非特許文献１】"PowerPro MG automates memory power optimization"、［online］、Calypto、［平成２２年１０月５日検索］、インターネット＜URL: http://www.calypto.com/powerpromg.php＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した従来技術では、実際のデータアクセスにおけるＲＡＭの無駄な動作を十分に検出することができていなかった。
【０００７】
例えば、ＲＡＭから読み出したデータが後続回路に使われたか否かをチェックする検出方法では、ＲＡＭの後段の全ての回路を網羅的にチェックすることが困難であり、モニタした回路が無駄なアクセスで動作してその更に後段のモニタしきれなかった回路でデータが捨てられた場合、必要最小限のＲＡＭのread動作回数の論理値を参照していないため、すべての無駄なアクセスを検出できないと言った問題があった。
【課題を解決するための手段】
【０００８】
開示の技術は、記憶領域に格納される半導体集積回路を評価するための評価用プログラムを用いた第一のシミュレーションによって得られる、メモリへのアクセスに応じて該メモリ内での対象データに対するアクセスに係る回数情報を用いて、論理的なread回数及び論理的なwrite回数を計算する計算手段と、前記評価用プログラムを用いて、前記記憶領域に格納される前記半導体集積回路の設計データに従った第二のシミュレーションによって、前記メモリへの実際のread回数及び実際のwrite回数を取得する取得手段と、前記実際のread回数が前記論理的なread回数より大きい場合、又は、前記実際のwrite回数が前記論理的なwrite回数より大きい場合、前記メモリに無駄な電力が有ると判定する無駄電力判定手段とを有することを特徴とする半導体集積回路の低電力設計支援装置として構成される。
【０００９】
また、上記課題を解決するための手段として、コンピュータに上記低電力設計支援装置として機能させるためのプログラム、そのプログラムを記録した記録媒体、及び半導体集積回路の低電力設計支援方法とすることもできる。
【発明の効果】
【００１０】
開示の技術では、メモリを構成するＲＡＭへのアクセス回数の論理値を定め、その論理値と、ＲＡＭへの実際のアクセス回数との比較によって、メモリ全体で無駄なアクセスが存在するか否かを判定できる。よって、メモリ全体での無駄な電力の有無を判定可能とする。
【図面の簡単な説明】
【００１１】
【図１】低電力設計支援装置のハードウェア構成を示す図である。
【図２】低電力設計支援装置の第一の機能構成例を示す図である。
【図３】ＲＡＭアクセスの無駄を判断する第一の処理例を説明するためのフローチャート図である。
【図４】低電力設計支援装置の第二の機能構成例を示す図である。
【図５】ＲＡＭアクセスの無駄を判断する第二の処理例を説明するためのフローチャート図である。
【図６】メモリシステムの構成例を示す図である。
【図７】適用例における計算方法（手順３）を説明するための図である。
【図８】キャッシュの動作対応表を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態を図面に基づいて説明する。本実施の形態に係る低電力設計支援装置は、例えば、図１に示すようなハードウェア構成を有する。図１は、低電力設計支援装置のハードウェア構成を示す図である。
【００１３】
図１において、低電力設計支援装置１００は、コンピュータによって制御される装置であって、ＣＰＵ（Central Processing Unit）１１と、メモリユニット１２と、表示ユニット１３と、出力ユニット１４と、入力ユニット１５と、通信ユニット１６と、記憶装置１７と、ドライバ１８とを有し、システムバスＢに接続される。
【００１４】
ＣＰＵ１１は、メモリユニット１２に格納されたプログラムに従って低電力設計支援装置１００を制御する。メモリユニット１２には、ＲＡＭ（Random Access Memory）及びＲＯＭ（Read-Only Memory）等が用いられ、ＣＰＵ１１にて実行されるプログラム、ＣＰＵ１１での処理に必要なデータ、ＣＰＵ１１での処理にて得られたデータ等を格納する。また、メモリユニット１２の一部の領域が、ＣＰＵ１１での処理に利用されるワークエリアとして割り付けられている。
【００１５】
表示ユニット１３は、ＣＰＵ１１の制御のもとに必要な各種情報を表示する。出力ユニット１４は、プリンタ等を有し、利用者からの指示に応じて各種情報を出力するために用いられる。入力ユニット１５は、マウス、キーボード等を有し、利用者が低電力設計支援装置１００が処理を行なうための必要な各種情報を入力するために用いられる。
【００１６】
通信ユニット１６は、例えばインターネット、ＬＡＮ（Local Area Network）等に接続し、外部装置との間の通信制御をするための装置である。記憶装置１７には、例えば、ハードディスクユニットが用いられ、各種処理を実行するプログラム等のデータを格納する。
【００１７】
低電力設計支援装置１００によって行われる処理を実現するプログラムは、例えば、ＣＤ−ＲＯＭ（Compact Disc Read-Only Memory）等の記憶媒体１９によって低電力設計支援装置１００に提供される。即ち、プログラムが保存された記憶媒体１９がドライバ１８にセットされると、ドライバ１８が記憶媒体１９からプログラムを読み出し、その読み出されたプログラムがシステムバスＢを介して記憶装置１７にインストールされる。そして、プログラムが起動されると、記憶装置１７にインストールされたプログラムに従ってＣＰＵ１１がその処理を開始する。尚、プログラムを格納する媒体としてＣＤ−ＲＯＭに限定するものではなく、コンピュータが読み取り可能な媒体であればよい。コンピュータ読取可能な記憶媒体として、ＣＤ−ＲＯＭの他に、ＤＶＤディスク、ＵＳＢメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリであっても良い。
【００１８】
また、消費電力解析装置１００によって行われる処理を実現するプログラムが、通信ユニット１６を介して外部装置から提供されてもよい。
【００１９】
図２は、低電力設計支援装置の第一の機能構成例を示す図である。図２において、低電力設計支援装置１００は、論理シミュレータ１２１と、性能評価シミュレータ１２３と、アクセス数計算部１２５と、無駄電力有無判定部１２６等の処理部を有する。ＣＰＵ１１が対応するプログラムを実行することによって、これらの各処理部として機能する。
【００２０】
また、低電力設計支援装置１００は、メモリユニット１２又は／及び記憶装置１７の記憶領域１７０に、設計データ１７１、評価用プログラム１７２、実際のアクセス数１７５を含む論理評価結果１７３、性能評価結果１７４、論理的なアクセス数１７６、判定結果１７６等の第一の機能構成例における処理を行うためのデータ等を格納する。
【００２１】
論理シミュレータ１２１は、評価用プログラム１７２を用いて、設計データ１７１に従って論理シミュレーションを行う処理部である。論理シミュレーションによるＲＡＭマクロへのアクセス回数が抽出されて、実際のアクセス数１７５として記憶領域１７０に格納される。
【００２２】
性能評価シミュレータ１２３は、評価用プログラム１７２を用いて、半導体集積回路を構成する機能ブロックの動作を表すマクロ（ＣＰＵマクロ、ＲＡＭマクロ、Ｉ／Ｏマクロ等を含む）の性能評価シミュレーションを行う処理部である。性能評価シミュレーションから、ＲＡＭマクロに係るLoad/store回数、キャッシュミス率、MOVE IN/MOVE OUT回数が抽出されて性能評価結果１７４として記憶領域１７０に格納される。
【００２３】
アクセス数計算部１２５は、設計データ１７１と性能評価結果１７４とを用いて、論理的なＲＡＭマクロのアクセス数を計算して、論理的なアクセス数１７６として記憶領域１７０に格納する処理部である。
【００２４】
無駄電力有無判定部１２６は、実際のアクセス数１７５と、論理的なアクセス数１７６とを記憶領域１７０から取得して比較することにより、ＲＡＭへのアクセスに関して無駄電力が有ったか否かを判定する処理部である。判定した結果を示す判定結果１７６が記憶領域１７０に格納される。
【００２５】
記憶領域１７０に格納された判定結果１７６が、表示ユニット１３に表示されることにより、半導体集積回路の設計者は、低電力化の設計を見直すことができる。
【００２６】
設計データ１７１は、ウェイ数、ライン構造、セル間の入出力関係等を示すデータを含む。
【００２７】
評価用プログラム１７２は、論理シミュレータ１２１及び性能評価シミュレータ１２３で動作する評価用のプログラムであり、少なくともＲＡＭマクロに係る動作パタンを含んでいる。また、評価用プログラム１７２は、各マクロの動作を評価するための動作パタンを含んでいる。
【００２８】
論理評価結果１７３は、論理シミュレータ１２１が評価用プログラム１７２を用いて、設計データ１７１に基づく論理シミュレーションを行うことによって得られた結果を示すデータである。論理評価結果１７３には、実際のＲＡＭマクロのアクセス数が含まれる。
【００２９】
性能評価結果１７４は、性能評価シミュレータ１２３が評価用プログラム１７２を用いて、性能評価シミュレーションを行うことによって得られた結果を示すデータである。性能評価結果１７４には、ＲＡＭマクロへのLoad/store回数、キャッシュミス率、下位のメモリへのMOVE IN/MOVE OUT回数が含まれる。
【００３０】
実際のアクセス数１７５は、論理シミュレータ１２１が評価用プログラム１７２を用いて、設計データ１７１に基づく論理シミュレーションを行うことによって得られた実際のＲＡＭマクロのアクセス数を示す。
【００３１】
論理的なアクセス数１７６は、性能評価シミュレータ１２３が評価用プログラム１７２を用いて、性能評価シミュレーションを行うことによって得られた論理的なＲＡＭマクロのアクセス数を示す。
【００３２】
判定結果１７６は、無駄電力有無判定部１２６による判定結果を示し、無駄電力が有ると判定されたか、無駄電力が無いと判定されたかを示す。
【００３３】
次に、上述した処理部１２１〜１２６によって行われるＲＡＭアクセスの無駄を判断する処理について説明する。図３は、ＲＡＭアクセスの無駄を判断する第一の処理例を説明するためのフローチャート図である。図３では、図２に示す第一の機能構成例における処理例を示している。
【００３４】
図３において、性能評価シミュレータ１２３は、記憶領域１７０に格納されている評価用プログラム１７２を入力して、半導体集積回路の性能を評価する性能評価シミュレーションを実行し、その結果を示す性能評価結果１７４を記憶領域１７０に格納する（ステップＳ１１）。性能評価シミュレータ１２３によって評価用プログラム１７２が実行されている一定の期間において、ＲＡＭマクロに係るLoad/store回数、キャッシュミス率、MOVE IN/MOVE OUT回数が抽出されるため、性能評価結果１７４にそれらデータが含まれている。
【００３５】
性能評価シミュレーションの実行後、アクセス数計算部１２５は、性能評価結果１７４からＲＡＭマクロに係るLoad/store回数、キャッシュミス率、MOVE IN/MOVE OUT回数を取得する（ステップＳ１２）。
【００３６】
そして、アクセス数計算部１２５は、設計データ１７１を記憶領域１７０から読み込んでＲＡＭの構成情報を取得して、取得したＲＡＭの構成情報に基づいて、ステップＳ１２で取得したＲＡＭマクロに係るLoad/store回数、キャッシュミス率、MOVE IN/MOVE OUT回数を用いて、論理的なＲＡＭマクロへのアクセス（read/write）回数を算出する（ステップＳ１３）。算出した論理的なＲＡＭマクロへのアクセス（read/write）回数を示す論理的なアクセス数１７６を記憶領域１７０に格納する。
【００３７】
一方、論理シミュレータ１２１は、記憶領域１７０に格納されている設計データ１７１と評価用プログラム１７２とを入力して、設計データ１７１に従って論理シミュレーションを実行、その結果を示す論理評価結果１７３を記憶領域１７０に格納する（ステップＳ２１）。この論理シミュレーションの実行によって、ＲＡＭマクロのアクセス数を示す実際のアクセス数１７５が抽出されるため、論理評価結果１７３にそのデータが含まれている。
【００３８】
性能評価シミュレーションと論理シミュレーションの実行後、無駄電力有無判定部１２６は、記憶領域１７０から実際のアクセス数１７５を読み出して実際のＲＡＭマクロのアクセス数Ｍに設定する（ステップＳ２２）。また、無駄電力有無判定部１２６は、記憶領域１７０から論理的なアクセス数１７６を読み出して論理的なＲＡＭマクロのアクセス数Ｎに設定する（ステップＳ２３）。
【００３９】
そして、無駄電力有無判定部１２６は、アクセス数Ｍがアクセス数Ｎより大きいか否かを判定し、その判定結果１７６を記憶領域１７０に出力して格納する（ステップＳ２４）。アクセス数Ｍがアクセス数Ｎより大きい場合、無駄電力有無判定部１２６は、ＲＡＭマクロの動作において無駄電力が有ることを示す判定結果１７６を記憶領域１７０に出力する。一方、アクセス数Ｍがアクセス数Ｎ以下である場合、無駄電力有無判定部１２６は、ＲＡＭマクロの動作において無駄電力が無いことを示す判定結果１７６を記憶領域１７０に出力する。
【００４０】
図３において、ステップＳ２１での論理シミュレーションの実行と、ステップＳ１１での性能評価シミュレーションの実行の順序を問わない。即ち、ステップＳ１１での性能評価シミュレーションの実行前に、論理シミュレーションを実行してもよい。
【００４１】
図４は、低電力設計支援装置の第二の機能構成例を示す図である。図４に示す第二の機能構成例において、図２に示す第一の機能構成例と同様の構成部には同様の符号を付し、その説明を省略する。図２の第一の機能構成例との違いは、設計データ１７１にイベントの統計情報をカウントするイベントカウンタ（ＰＡ１７ａ）を内蔵させ、論理シミュレータ１２１による論理シミュレーションから得られる論理評価結果１７３のみを用いて、性能評価シミュレータ１２３を必要とせずに、ＲＡＭマクロの無駄電力の有無を判定する点にある。
【００４２】
図４に示す第二の機能構成例では、低電力設計支援装置１００は、論理シミュレータ１２１と、アクセス数計算部１３５と、無駄電力有無判定部１２６等の処理部を有する。ＣＰＵ１１が対応するプログラムを実行することによって、これらの各処理部として機能する。
【００４３】
また、低電力設計支援装置１００は、メモリユニット１２又は／及び記憶装置１７の記憶領域１７０に、ＰＡ１７ａを有する設計データ１７１、評価用プログラム１７２、実際のアクセス数１７５を含む論理評価結果１７３、論理的なアクセス数１７６、判定結果１７６等の第二の機能構成例における処理を行うためのデータ等を格納する。
【００４４】
論理シミュレータ１２１は、評価用プログラム１７２を用いて、ＰＡ１７ａを内蔵した設計データ１７１に従って論理シミュレーションを行う処理部である。
【００４５】
アクセス数計算部１３５は、設計データ１７１と論理評価結果１７３とを用いて、論理的なＲＡＭマクロのアクセス数を計算して、論理的なアクセス数１７６として記憶領域１７０に格納する処理部である。
【００４６】
設計データ１７１には、Load/storeの発生、キャッシュミスの発生、MOVE IN/MOVE OUTの発生を夫々カウントするＰＡ１７ａが回路的に設計されている。キャッシュミスが発生した回数に基づいてキャッシュミス率が求められ、Load/store回数、キャッシュミス率、下位のメモリへのMOVE IN/MOVE OUT回数が、ＰＡ情報として論理評価結果１７３に含まれて、記憶領域１７０に出力され格納される。
【００４７】
次に、上述した処理部１２１、１３５、及び１２６によって行われるＲＡＭアクセスの無駄を判断する処理について説明する。図５は、ＲＡＭアクセスの無駄を判断する第二の処理例を説明するためのフローチャート図である。図５では、図４に示す第二の機能構成例における処理例を示している。
【００４８】
図５において、論理シミュレータ１２１は、記憶領域１７０に格納されているＰＡ１７ａを内蔵した設計データ１７１と評価用プログラム１７２とを入力して、設計データ１７１に従って論理シミュレーションを実行し、その結果を示す論理評価結果１７３を記憶領域１７０に格納する（ステップＳ３１）。論理シミュレータ１２１によって論理シミュレーションが実行されることにより、ＰＡ１７ａでカウントしたLoad/store回数、キャッシュミス率、MOVE IN/MOVE OUT回数が抽出されるため、論理評価結果１７３にそれらデータが含まれている。
【００４９】
論理シミュレーションの実行後、アクセス数計算部１３５は、論理評価結果１７３からＲＡＭマクロに係るLoad/store回数、キャッシュミス率、MOVE IN/MOVE OUT回数を取得する（ステップＳ３２）。
【００５０】
そして、アクセス数計算部１３５は、設計データ１７１を記憶領域１７０から読み込んでＲＡＭの構成情報を取得して、取得したＲＡＭの構成情報に基づいて、ステップＳ３２で取得したＲＡＭマクロに係るLoad/store回数、キャッシュミス率、MOVE IN/MOVE OUT回数を用いて、論理的なＲＡＭマクロへのアクセス（read/write）回数を算出する（ステップＳ３３）。算出した論理的なＲＡＭマクロへのアクセス（read/write）回数を示す論理的なアクセス数１７６を記憶領域１７０に格納する。
【００５１】
その後、無駄電力有無判定部１２６は、記憶領域１７０から実際のアクセス数１７５を読み出して実際のＲＡＭマクロのアクセス数Ｍに設定する（ステップＳ３４）。また、無駄電力有無判定部１２６は、記憶領域１７０から論理的なアクセス数１７６を読み出して論理的なＲＡＭマクロのアクセス数Ｎに設定する（ステップＳ３５）。
【００５２】
そして、無駄電力有無判定部１２６は、アクセス数Ｍがアクセス数Ｎより大きいか否かを判定し、その判定結果１７６を記憶領域１７０に出力して格納する（ステップＳ３５）。
【００５３】
次に、図６に示すようなメモリシステム２００におけるＲＡＭのアクセス回数の計算例について説明する。図６は、メモリシステムの構成例を示す図である。図６において、メモリシステム２００は、Ｌ１キャッシュとＬ２キャッシュとからなる階層構造のメモリシステムである。
【００５４】
Ｌ１キャッシュを構成するＲＡＭは、ウェイ１〜ウェイｎ毎に分かれ、タグＲＡＭとデータラインＲＡＭとが一体になっているもので、ラインデータを一回で読み出せる構成を有する。また、同一インデックスを有するタグとラインデータの集合を１セットとする。
【００５５】
アドレスメモリ６１は、アドレスの所定の上位ビットを示すタグと、データラインを指定するインデックスと、バイトオフセットとを有する。
【００５６】
各ウェイ１〜ウェイｎは、インデックス毎に、データラインの有効／無効を示す有効ビットと、アドレスの所定の上位ビットを示すタグと、データが格納されるデータラインとで構成される。
【００５７】
各ウェイ１〜ウェイｎに対応する各比較部６２は、アドレスメモリ６１のタグと各ウェイ１〜ウェイｎのインデックスで指定されたタグとを比較する。各ウェイ１〜ウェイｎに対応する各ＡＮＤ回路６２は、対応するウェイのインデックスで指定された有効ビットと比較部６２の比較結果との論理積を出力する。
【００５８】
ＯＲ回路６４は、全ＡＮＤ回路６２からの出力の論理和を出力し、データのヒット又はミスを示す。ｎ：１マルチプレクサ６５は、各ＡＮＤ回路６２からの出力に応じてウェイを選択して、インデックスで指定されたデータラインのデータを出力する。
【００５９】
バッファ６６は、Ｌ１キャッシュとＬ２キャッシュ間で行われるデータの書き込み、読み取り時に一時的にデータを保存するためのメモリである。
【００６０】
このメモリシステム２００では、Ｌ１キャッシュの書き込み方式はライトバック方式とする。また、Ｌ１キャッシュはｎウェイセット・アソシアティブ方式とする。
【００６１】
本実施例に係る処理は、Ｌ１キャッシュは、必ずしもＲＡＭがウェイ毎に分かれている必要はなく、また、タグＲＡＭとデータＲＡＭとが分離されている構成でも適用でき、一回の読み出しでラインデータの一部を読み出せる構成であっても適用できる。
【００６２】
次に、上述したメモリシステム２００を例として、無駄電力の有無を判定する方法の適用例を説明する。
【００６３】
（手順１）図３のステップＳ２１、図５のステップＳ３１に相当
評価用プログラム１７２を用いて、設計データ１７１に従った論理シミュレーションを実行することにより、Ｌ１キャッシュを構成するＲＡＭへのアクセス回数Ｍを取得する。アクセス種別毎の、Read回数Ｍ（Ｒ１）、write回数Ｍ（Ｗ１）を取得する。なお、本実施例において、カウントされるＬ１キャッシュを構成するＲＡＭへのreadアクセスは、Ｌ１キャッシュを構成するウェイ数分のＲＡＭへの合計値である。writeアクセスについても同様である。
【００６４】
（手順２）図３のステップＳ１１、図５のステップＳ３１に相当
評価用プログラム１７２を用いた性能評価シミュレーション、又は、ＰＡ１７ａを内蔵している設計データ１７１に従った論理シミュレーションにより、Load/store回数、キャッシュミス率、Ｌ２キャッシュからＬ１キャッシュへのバッファ６６を介したMOVE IN/MOVE OUT回数がカウントされる。カウントした回数を含む性能評価結果１７４、又は、論理評価結果１７３が記憶領域１７０に格納される。
【００６５】
（手順３）図３のステップＳ１２及びＳ１３、図５のステップＳ３２及びＳ３３に相当
上述した手順２でカウントした回数と、設計データ１７１から得られるメモリシステム２００の構成情報に基づいて、理論上Ｌ１キャッシュを構成するＲＡＭへのアクセス回数Ｎを計算する。アクセス種別毎の、Read回数Ｍ（Ｒ１）、write回数Ｍ（Ｗ１）を取得する。計算方法は、例えば、図７を参照しつつ下記の手順で示される。図７は、適用例における計算方法（手順３）を説明するための図である。
【００６６】
Ｌ１キャッシュの動作に関して、下記のケースを考える。（ａ）、（ｂ）、及び（ｃ）のＬ１キャッシュへのloadの場合、（ｄ）、（ｅ）、及び（ｆ）のstoreとなる。図８に、図７の（ａ）から（ｆ）に対応するＬ１キャッシュの動作を示す。図７及び図８を参照しつつ、以下に計算方法（手順３）を、図７及び図８に対応させて（ａ）から（ｆ）に詳述する。
【００６７】
（ａ）loadで、Ｌ１キャッシュにヒットした場合
Ｌ１キャッシュを構成するＲＡＭに対して、初期のｎ回のreadアクセスで済む。ＣＰＵ６９は、Ｌ１キャッシュからデータを取得する。
【００６８】
動作回数は、初期のreadアクセスの１回となる。図６に示すように、Ｌ１キャッシュはｎ個のウェイで構成されるため、loadの場合に、タグ情報を読むと同時に、ｎウェイ個のデータラインも同時に読み出して、その後、ヒットかミスかを示す情報に基づき、マルチプレクサで必要なデータを選ぶ。その時、Ｌ１キャッシュを構成するｎウェイ個のＲＡＭに対して、同時に１回のアクセスが発生しているので、初期でｎ回のreadアクセス（１回*n(way)）が必要となる。
【００６９】
（ｂ）loadで、Ｌ１キャッシュでミスした場合
まず、Ｌ１キャッシュのヒット/ミス判定時の初期のreadアクセスがｎ回必要となる。その次に、Ｌ２キャッシュからデータを読み出して、対応するＬ１キャッシュの書き換え対象のデータラインに書き込む必要がある。書き換え対象のデータラインの旧データがcleanである場合に（若しくは空）、旧データは上書き可能であるので、ＣＰＵ６９は、Ｌ２キャッシュから１回のMOVE INで書き換え対象のデータラインに新データを書き込む。
【００７０】
動作回数は、初期のreadアクセスのｎ回と、MOVE INによるwriteアクセスの１回となる。Ｌ１キャッシュでミスした場合に、Ｌ２キャッシュから持ってきたデータは直接にloadオーダー先（プロセッサなど）に渡すと同時に、通常、Ｌ１キャッシュにも書き込まれる。そのデータは近いうちに使われる可能性か高いからである。下記（ｃ）に関しても同様である。
【００７１】
（ｃ）loadで、Ｌ１キャッシュにミスした場合
まず、Ｌ１キャッシュのヒット/ミス判定時の初期のreadアクセスがｎ回必要となる。その次に、Ｌ２キャッシュからデータを読み出して、対応するＬ１キャッシュの書き換え対象のデータラインに書き込む必要がある。書き換え対象のデータラインの旧データがdirtyとなる場合に、ＣＰＵ６９は、旧データをMOVE OUTでＬ２キャッシュに一回書き戻してから、書き換え対象のデータラインにＬ２キャッシュから読み出した新データを書き込む。
【００７２】
但し、初期のreadアクセスで旧データをバッファ６６に格納し、MOVE OUTではＬ１キャッシュからでなく、バッファ６６からＬ２キャッシュに書き込む場合を想定すると、Ｌ１キャッシュに対してMOVE OUTによる１回のreadアクセスを無視する。
【００７３】
動作回数は、初期のreadアクセスのｎ回と、MOVE INによるwriteアクセスの１回となる。Ｌ１キャッシュのヒット/ミス判定の際に読み出したデータをバッファ６６に格納してＬ２キャッシュに書き戻すため、Ｌ１キャッシュに対してMOVE OUTによる１回のreadアクセスは無視される。
【００７４】
（ｄ）storeで、Ｌ１キャッシュにヒットした場合
Ｌ１キャッシュのヒット/ミス判定で、Ｌ１キャッシュを構成するＲＡＭに対して初期のreadアクセスがｎ回必要となる。その後、ＣＰＵ６９によるstoreデータの書き込みで、対象となるウェイへの１回のwriteアクセスとなる。
【００７５】
動作回数は、初期のreadアクセスのｎ回と、storeデータの書き込みによるwriteアクセスの１回となる。storeデータはＬ１キャッシュのヒット/ミス判定時に読み出したデータとマージして、Ｌ１キャッシュに書き戻す。
【００７６】
（ｅ）storeで、Ｌ１キャッシュでミスした場合
まず、Ｌ１キャッシュのヒット/ミス判定で、Ｌ１キャッシュを構成するＲＡＭに対して初期のreadアクセスがｎ回必要となる。その後、ＣＰＵ６９は、対応データラインのデータをバッファ６６に格納し、storeデータに対応する箇所を更新して、Ｌ１キャッシュに書き込む。Ｌ１キャッシュの書き込み対象のデータラインの旧データがcleanとなる場合には、旧データをＬ２キャッシュに書き戻す必要がない。
【００７７】
動作回数は、初期のreadアクセスのｎ回と、storeデータの書き込みによるwriteアクセスの１回となる。Storeの場合、Ｌ２キャッシュからＬ１キャッシュのMOVE INとなるデータラインに存在するデータを一旦バッファ６６に格納して、storeデータの部分を更新してＬ１キャッシュに書き込むため、storeデータの書き込みとMOVE INデータの書き込みは、合わせて１回のwriteアクセスとしてカウントされる。従って、Ｌ１キャッシュに対してそのMOVE INによる１回のwriteアクセスは無視される。
【００７８】
（ｆ）storeで、Ｌ１キャッシュでミスした場合
まず、Ｌ１キャッシュのヒット/ミス判定で、Ｌ１キャッシュを構成するＲＡＭに対して初期のreadアクセスがｎ回必要となる。その後、ＣＰＵ６９は、対応データラインのデータをバッファ６６に格納し、storeデータに対応する箇所を更新して、Ｌ１キャッシュに書き込む。Ｌ１キャッシュの書き込む対象のラインの旧データがdirtyとなる場合には、MOVE OUTで旧データをＬ２キャッシュに書き戻す必要がある。
【００７９】
動作回数は、初期のreadアクセスのｎ回と、storeデータの書き込みによるwriteアクセスの１回となる。Ｌ１キャッシュのヒット/ミス判定の際に読み出したデータをバッファ６６に格納してＬ２キャッシュに書き戻すため、Ｌ１キャッシュに対してMOVE OUTによる１回のreadアクセスは無視される。また、Storeの場合、Ｌ２キャッシュからＬ１キャッシュのMOVE INとなるデータラインに存在するデータを一旦バッファ６６に格納して、storeデータの部分を更新してＬ１キャッシュに書き込むため、storeデータの書き込みとMOVE INデータの書き込みは、合わせて１回のwriteアクセスとしてカウントされる。従って、Ｌ１キャッシュに対してそのMOVE INによる１回のwriteアクセスは無視される。
【００８０】
上述したＲＡＭに係るアクセス情報に基づいて、下記のように変数を設定する。
【００８１】
・Load回数を、変数Ｌに設定する
・store回数を、変数Ｓに設定する
・Ｌ１キャッシュのstoreミス率を、ＭＷ１％に設定する
・Ｌ１キャッシュに対するMOVE IN回数を、ＭＩ１に設定する
・Ｌ１キャッシュに対するMOVE OUT回数を、ＭＯ１に設定する
そして、メモリシステム２００において、そのｎウェイのＬ１キャッシュに関して、
Ｌ１キャッシュの理論上のreadアクセス回数は、
Ｎ（Ｒ１）  ＝  ｎ×（Ｌ  ＋  Ｓ）                          （１）
によって計算される。また、Ｌ１キャッシュの理論上のwriteアクセス回数は、
Ｎ（Ｗ１）  ＝  Ｓ  ＋  ＭＩ１  −  Ｓ×ＭＷ１％            （２）
によって計算される。
【００８２】
（手順４）図３のステップＳ２２〜Ｓ２４、図５のステップＳ３４〜Ｓ３６に相当
上述した（手順１）で求めたRead回数Ｍ（Ｒ１）及びwrite回数Ｍ（Ｗ１）を、アクセス種別毎の実際のＲＡＭマクロのアクセス数として取得し、上述した（手順３）の（ｆ）の計算式（１）及び（２）で計算した論理的なreadアクセス回数Ｎ（Ｒ１）及び論理的なwriteアクセス回数Ｎ（Ｗ１）と夫々比較する。
【００８３】
Ｍ（Ｒ１）＞Ｎ（Ｒ１）であるか否かを判断することによって、Ｍ（Ｒ１）＞Ｎ（Ｒ１）である場合に、Ｌ１キャッシュを構成するＲＡＭに対して無駄なreadアクセスがあると判断することができる。
【００８４】
Ｍ（Ｗ１）＞Ｎ（Ｗ１）であるか否かを判断することによって、Ｍ（Ｗ１）＞Ｎ（Ｗ１）である場合に、Ｌ１キャッシュを構成するＲＡＭに対して無駄なwriteアクセスがあると判断することができる。
【００８５】
Ｌ１キャッシュとＬ２キャッシュとの構成に従って、Ｌ１キャッシュに係る無駄なアクセスの存在を判定する方法について説明したが、Ｌ２キャッシュと更に下位のメモリ間とのアクセスに関しても上記同様な方法によって、Ｌ２キャッシュの無駄アクセスを抽出することができる。
【００８６】
上述したように、本実施例では、ＲＡＭに対する必要最小限のアクセス回数の論理値を定めて（図３のステップＳ１２、Ｓ１３、Ｓ２３、又は、図５のＳ３２、Ｓ３３、Ｓ３４）、論理シミュレーションによる実際のＲＡＭに対するアクセス回数と比較する（図３のＳ２４、又は、図５のＳ３６）。
【００８７】
従って、階層構造を有するメモリシステムであっても、下位メモリのMOVE IN/MOVE OUT回数を抽出しておくことで、メモリシステム全体で無駄なアクセスが存在するか否かを判定できる。無駄なアクセスが存在すると判定した場合には、無駄な電力が消費されていると判断することができる。
【００８８】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【００８９】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
記憶領域に格納される半導体集積回路を評価するための評価用プログラムを用いた第一のシミュレーションによって得られる、メモリへのアクセスに応じて該メモリ内での対象データに対するアクセスに係る回数情報を用いて、論理的なアクセス回数を計算する計算手段と、
前記評価用プログラムを用いて、前記記憶領域に格納される前記半導体集積回路の設計データに従った第二のシミュレーションによって、前記メモリへの実際のアクセス回数を取得する取得手段と、
前記実際のアクセス回数が前記論理的なアクセス回数より大きい場合、前記メモリに無駄な電力が有ると判定する無駄電力判定手段と
を有することを特徴とする半導体集積回路の低電力設計支援装置。
（付記２）
前記評価用プログラムを用いて、前記第一のシミュレーションを実行する性能評価シミュレータを有し、
前記評価用プログラムを用いて、前記設計データに従った前記第二のシミュレーションを実行する論理シミュレータを有することを特徴とする付記１記載の低電力設計支援装置。
（付記３）
前記設計データは、イベントカウンタを有し、
前記評価用プログラムを用いて、前記イベントカウンタを有する設計データに従って、前記第二のシミュレーションを含む前記第一のシミュレーションを実行する論理シミュレータを有し、
前記回数情報は、前記第一のシミュレーションにより前記イベントカウンタが動作することによって抽出され、
前記取得手段は、前記第一のシミュレーションから前記実際のアクセス回数を取得すること
を特徴とする付記１記載の低電力設計支援装置。
（付記４）
前記回数情報は、load/store回数、キャッシュミス率、MOVE IN/MOVE OUT回数を含むことを特徴とする付記１乃至３のいずれか一項記載の低電力設計支援装置。
（付記５）
前記メモリは、階層構造を有するキャッシュメモリであることを特徴とする付記１乃至４のいずれか一項記載の低電力設計支援装置。
（付記６）
前記アクセス回数は、前記メモリに対するreadアクセス回数とwriteアクセス回数であり、
前記無駄電力判定手段は、前記readアクセス回数とwriteアクセス回数の各々について、前記メモリの無駄な電力の有無を判定することを特徴とする付記１乃至５のいずれか一項記載の低電力設計支援装置。
（付記７）
記憶領域に格納される半導体集積回路を評価するための評価用プログラムを用いた第一のシミュレーションによって得られる、メモリへのアクセスに応じて該メモリ内での対象データに対するアクセスに係る回数情報を用いて、論理的なアクセス回数を計算し、
前記評価用プログラムを用いて、前記記憶領域に格納される前記半導体集積回路の設計データに従った第二のシミュレーションによって、前記メモリへの実際のアクセス回数を取得し、
前記実際のアクセス回数が前記論理的なアクセス回数より大きい場合、前記メモリに無駄な電力が有ると判定すること
をコンピュータが実行する半導体集積回路の低電力設計支援方法。
（付記８）
記憶領域に格納される半導体集積回路を評価するための評価用プログラムを用いた第一のシミュレーションによって得られる、メモリへのアクセスに応じて該メモリ内での対象データに対するアクセスに係る回数情報を用いて、論理的なアクセス回数を計算し、
前記評価用プログラムを用いて、前記記憶領域に格納される前記半導体集積回路の設計データに従った第二のシミュレーションによって、前記メモリへの実際のアクセス回数を取得し、
前記実際のアクセス回数が前記論理的なアクセス回数より大きい場合、前記メモリに無駄な電力が有ると判定すること
をコンピュータに実行させて半導体集積回路の低電力設計支援装置として機能させるためのプログラムを格納したコンピュータ読取可能な記憶媒体。
【符号の説明】
【００９０】
１１          ＣＰＵ
１２          メモリユニット
１３          表示ユニット
１４          出力ユニット
１５          入力ユニット
１６          通信ユニット
１７          記憶装置
１８          ドライバ
１９          記憶媒体
６１          アドレスメモリ
６２          比較器
６３          ＡＮＤ回路
６４          ＯＲ回路
６５          ｎ：１マルチプレクサ
６６          バッファ
１００        低電力設計支援装置
１２１        論理シミュレータ
１２３        性能評価シミュレータ
１２５        アクセス数計算部
１２６        無駄電力有無判定部
１７０        記憶領域
１７１        設計データ
１７２        評価用プログラム
１７３        論理評価結果
１７４        性能評価結果
１７５        実際のアクセス数
１７６        論理的なアクセス数
１７７        判定結果
【図１】
0005609657.tif 000002
【図２】
0005609657.tif 000003
【図３】
0005609657.tif 000004
【図４】
0005609657.tif 000005
【図５】
0005609657.tif 000006
【図６】
0005609657.tif 000007
【図７】
0005609657.tif 000008
【図８】
0005609657.tif 000009