(57)【特許請求の範囲】
【請求項１】
半導体回路の性能を見積もるための半導体回路性能見積装置であって、
前記半導体回路の設計データであるソースコードに含まれる記憶領域ごとに、該記憶領域に割り当てられるメモリのメモリ種別情報を格納する手段と、
前記メモリの種別ごとのアクセスコストの情報を格納する手段と、
前記記憶領域それぞれへのアクセス回数を算出する性能評価モデルを生成する手段と、
前記性能評価モデルを動作させて計測した記憶領域別アクセス回数と前記メモリ種別情報から、前記メモリの種別ごとのメモリ種別アクセス回数を算出する手段と、
前記アクセスコストの情報と前記メモリ種別アクセス回数からアクセスコストの総計を算出し、該総計をもとに前記半導体回路の見積性能を生成する見積性能生成手段と、
を備え、
前記性能評価モデルは、前記ソースコードに前記アクセス回数のカウント手段を追加して生成され、あるいは、前記アクセス回数のカウント手段を組み込んだライブラリを前記ソースコードと組み合わせて生成され、あるいは、前記アクセス回数のカウント手段を組み込んだシミュレータと前記ソースコードを組み合わせて生成され、
前記見積性能生成手段は、前記アクセスコストが複数種類ある場合には該種類ごとに前記見積性能を生成することを特徴とする半導体回路性能見積装置。
【請求項２】
請求項１に記載の半導体回路性能見積装置であって、
前記ソースコードを変更した場合、前記見積性能生成手段は、該ソースコードの変更後におけるアクセスコストの総計を、該ソースコードの変更前におけるアクセスコストの総計と対比可能に算出することを特徴とする半導体回路性能見積装置。
【請求項３】
請求項１に記載の半導体回路性能見積装置であって、
前記記憶領域へのメモリの割り当てを変更した場合、前記見積性能生成手段は、該メモリの割り当て変更後におけるアクセスコストの総計を、該メモリの割り当て変更前におけるアクセスコストの総計と対比可能に算出することを特徴とする半導体回路性能見積装置。
【請求項４】
請求項１乃至３の何れか１に記載の半導体回路性能見積装置であって、
前記アクセスコストは、アクセスタイム、アクセスクロックサイクル数、アクセス消費電力、アクセス発生熱量、アクセス対象メモリ面積若しくはアクセス対象メモリ占有時間割合又はこれらの組合せであることを特徴とする半導体回路性能見積装置。
【請求項５】
半導体回路の性能を見積もるための半導体回路性能見積方法であって、
前記半導体の設計データであるソースコードに含まれる記憶領域それぞれへのアクセス回数を算出する性能評価モデルを生成するステップと、
前記性能評価モデルを動作させて計測した記憶領域別アクセス回数と、あらかじめ記憶した、前記記憶領域に割り当てられるメモリのメモリ種別情報とから、前記メモリの種別ごとのメモリ種別アクセス回数を算出するステップと、
あらかじめ記憶した前記メモリの種別ごとのアクセスコストの情報と、前記メモリ種別アクセス回数とからアクセスコストの総計を算出し、該総計をもとに前記半導体回路の見積性能を生成するステップと、
を備え、
前記性能評価モデルは、前記ソースコードに前記アクセス回数のカウント手段を追加して生成され、あるいは、前記アクセス回数のカウント手段を組み込んだライブラリを前記ソースコードと組み合わせて生成され、あるいは、前記アクセス回数のカウント手段を組み込んだシミュレータと前記ソースコードを組み合わせて生成され、
前記見積性能生成ステップは、前記アクセスコストが複数種類ある場合には該種類ごとに前記見積性能を生成することを特徴とする半導体回路性能見積方法。
【請求項６】
半導体回路の性能を見積もるための半導体回路性能見積装置としてコンピュータを機能させるための半導体回路性能見積プログラムであって、
前記コンピュータを、
前記半導体の設計データであるソースコードに含まれる記憶領域それぞれへのアクセス回数を算出する性能評価モデルを生成する手段、
前記性能評価モデルを動作させて計測した記憶領域別アクセス回数と、あらかじめ記憶した、前記記憶領域に割り当てられるメモリのメモリ種別情報とから、前記メモリの種別ごとのメモリ種別アクセス回数を算出する手段、
あらかじめ記憶した前記メモリの種別ごとのアクセスコストの情報と、前記メモリ種別アクセス回数とからアクセスコストの総計を算出し、該総計をもとに前記半導体回路の見積性能を生成する見積性能生成手段、
として動作させ、
前記性能評価モデルは、前記ソースコードに前記アクセス回数のカウント手段を追加して生成され、あるいは、前記アクセス回数のカウント手段を組み込んだライブラリを前記ソースコードと組み合わせて生成され、あるいは、前記アクセス回数のカウント手段を組み込んだシミュレータと前記ソースコードを組み合わせて生成され、
前記見積性能生成手段は、前記アクセスコストが複数種類ある場合には該種類ごとに前記見積性能を生成することを特徴とする半導体回路性能見積プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体回路性能見積装置、その方法及びそのプログラムに関し、特に、半導体回路のアーキテクチャ設計において半導体回路の性能を見積もるための半導体回路性能見積装置、その方法及びそのプログラムに関する。
【背景技術】
【０００２】
近年、複雑なアルゴリズムを実現する半導体回路の設計の重要性が増している。画像処理、認識処理などの処理アルゴリズムでは、扱うデータ量が増え、かつ、リアルタイム処理への要求も大きくなってきている。汎用プロセッサ単体での処理では要求を満たせなくなってきており、これらアルゴリズムを実現する半導体回路を専用回路として設計を行わなければならない。
【０００３】
複雑なアルゴリズムを実現する半導体回路の設計は概略以下のように行われる。
【０００４】
まず、半導体回路として実現するために好適なアルゴリズムの設計を行う。アルゴリズムの設計は、一般に、設計者がアルゴリズムを実現するプログラムのソースコードを作成し、該ソースコードをコンパイルし、プロセッサ上でプログラムを実行することにより、アルゴリズムの動作を確認することによって行われる。アルゴリズム設計の際には、半導体回路として実現する際のアーキテクチャ（パイプラインアーキテクチャなど）は考慮されない。また、アルゴリズム中で用いられる記憶領域（配列等）をどのような種類のメモリ（モジュール内メモリ、モジュール外メモリ、チップ内メモリ、チップ外メモリ、占有メモリ、共有メモリなど）に割り当てるかなども考慮されない。アルゴリズムの設計には、Ｃ＋＋、Ｃ＃、ＪＡＶＡ（登録商標）などのプログラミング言語およびＳｙｓｔｅｍＣ、ＳｐｅｃＣ等のプログラミング言語に回路設計のための拡張を施した言語が用いられる。
【０００５】
次に、前記アルゴリズムを実現する動作レベルの設計を行う。動作レベルの設計は、一般に、設計者が動作記述を作成することにより行う。動作レベル設計において、半導体回路として実現する際のアーキテクチャが決定される。また、記憶領域をどのような種類のメモリに割り当てるかが決定される。
【０００６】
次に、ハードウェアレベルの設計を行う。ハードウェアレベルの設計は、一般に、動作合成装置がＲＴＬ(Register Transfer Level)記述を作成することにより行う。ハードウェアレベル設計において、前記動作レベル設計において決定されたアーキテクチャに応じて、必要な制御処理（パイプライン制御など）が実装される。また、前記動作レベル設計において決定されたメモリの種類に応じて、必要なインタフェイス回路（Static Random Access Memory (SRAM)インタフェイス、Dynamic Random Access Memory(DRAM)インタフェイス、バスインタフェイス等）が実装される。
【０００７】
複雑なアルゴリズムを半導体回路として実現する場合、メモリアクセスのコストが処理性能を決定する。しかしながら、アルゴリズム設計の際には、記憶領域がどのような種類のメモリに割り当てられるかを考慮しないため、処理性能を簡易に見積もることができない。そのため、アルゴリズム設計、動作レベル設計、ハードウェア設計が終わった後（記憶領域を実際にメモリに割り当てて、必要なインタフェイス回路を実装した後）でしか処理性能がわからない。たとえば、ハードウェア設計の完了後に処理性能が目標性能に達していないことが判明した場合には、再度アルゴリズム設計から設計をやり直す必要があり、大きな手戻りとなる。
【０００８】
もしも、アルゴリズム設計時に半導体回路に実現した時の性能を簡易に見積もることができれば、アルゴリズムの良し悪しを早期に判断することができるため、手戻りを起こさず、設計期間の短縮を図ることができる。
【０００９】
半導体回路の性能を早期に見積もる手法は、従来いくつか開示されている。特許文献１、特許文献２では、詳細な動作を行うモデルと、性能を見積もるための簡易なモデルの２つを用意して、高速に性能を見積もる手法を開示している。しかしながら、性能を見積もるために新たにモデルを作成しなければならず、簡易な見積もりを実現しているとは言い難い。
【００１０】
特許文献３などでは、メモリのアクセス回数を測定することで性能を見積もる手法を開示している。しかしながら、主にプロセッサ上で動作するプログラムの性能を評価する手法である。アルゴリズムを専用の半導体回路として実現する場合は、プロセッサ上で動作させる場合と異なり、メモリによるアクセスコストの違いにより、記憶領域をどの種類のメモリに割り当てるかによって性能が大幅に異なってくる。そのため、記憶領域が割り当てられるメモリ種類の考慮を行うことが、簡易な見積もりには必要不可欠である。しかしながら、特許文献３では、記憶領域をどの種類のメモリに割り当てるかの考慮がなされていない。
【００１１】
特許文献４及び特許文献５では、記憶領域へのアクセス回数から、好適なメモリ割り当てを決定する手法が開示されている。しかしながら、簡易な見積もりを実現する手法は開示されていない。
【００１２】
特許文献６では、記憶領域へのメモリアクセスのパターン（メモリ要素へのアクセスの順番）を解析し、好適な回路を自動合成する手法が開示されている。しかしながら、簡易な見積もりを実現する手法は開示されていない。
【００１３】
特許文献７では、複数の半導体回路からのメモリへのアクセス競合を解析することにより、複数のプログラム実行装置上で動作するプログラムの処理時間を算出する手法が開示されている。しかしながら、プログラミング言語で記述された複雑なアルゴリズムを実現する半導体回路の性能を簡易に見積もる手法は開示されていない。
【００１４】
以上のように、既存技術をもってしても、プログラミング言語で記述された複雑なアルゴリズムを実現する半導体回路の性能を簡易に見積もることができない。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００３−２５６４９４号公報
【特許文献２】米国公開公報２００８／０２６３４８６Ａ１
【特許文献３】特開平３−２３５１３８号公報
【特許文献４】特開２００５−１７３６４８号公報
【特許文献５】特開２０１１−２２８６３号公報
【特許文献６】特開２００７−３２３２０６号公報
【特許文献７】特開２０１０−２８６８９２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
第１の問題点は、複雑なアルゴリズムを実現する半導体回路を設計する際に、アルゴリズムの良し悪しを判断する方法がないということである。
【００１７】
その理由は、プログラミング言語で記述された複雑なアルゴリズムを実現する論理回路の性能を簡易に見積もる方法がないためである。
【００１８】
本発明の目的は、所定のアルゴリズムを実現する半導体回路の性能を簡易に見積もることのできる半導体回路性能見積装置、その方法及びそのプログラムを提供することにある。
【課題を解決するための手段】
【００１９】
本発明の第１の観点によれば、半導体回路の性能を見積もるための半導体回路性能見積装置であって、前記半導体回路の設計データであるソースコードに含まれる記憶領域ごとに、該記憶領域に割り当てられるメモリのメモリ種別情報を格納する手段と、前記メモリの種別ごとのアクセスコストの情報を格納する手段と、前記記憶領域それぞれへのアクセス回数を算出する性能評価モデルを生成する手段と、前記性能評価モデルを動作させて計測した記憶領域別アクセス回数と前記メモリ種別情報から、前記メモリの種別ごとのメモリ種別アクセス回数を算出する手段と、前記アクセスコストの情報と前記メモリ種別アクセス回数からアクセスコストの総計を算出し、該総計をもとに前記半導体回路の見積性能を生成する見積性能生成手段とを備え、前記性能評価モデルは、前記ソースコードに前記アクセス回数のカウント手段を追加して生成され、あるいは、前記アクセス回数のカウント手段を組み込んだライブラリを前記ソースコードと組み合わせて生成され、あるいは、前記アクセス回数のカウント手段を組み込んだシミュレータと前記ソースコードを組み合わせて生成され、前記見積性能生成手段は、前記アクセスコストが複数種類ある場合には該種類ごとに前記見積性能を生成することを特徴とする半導体回路性能見積装置が提供される。
【００２０】
本発明の第２の観点によれば、半導体回路の性能を見積もるための半導体回路性能見積方法であって、前記半導体の設計データであるソースコードに含まれる記憶領域それぞれへのアクセス回数を算出する性能評価モデルを生成するステップと、前記性能評価モデルを動作させて計測した記憶領域別アクセス回数と、あらかじめ記憶した、前記記憶領域に割り当てられるメモリのメモリ種別情報とから、前記メモリの種別ごとのメモリ種別アクセス回数を算出するステップと、あらかじめ記憶した前記メモリの種別ごとのアクセスコストの情報と、前記メモリ種別アクセス回数とからアクセスコストの総計を算出し、該総計をもとに前記半導体回路の見積性能を生成するステップとを備え、前記性能評価モデルは、前記ソースコードに前記アクセス回数のカウント手段を追加して生成され、あるいは、前記アクセス回数のカウント手段を組み込んだライブラリを前記ソースコードと組み合わせて生成され、あるいは、前記アクセス回数のカウント手段を組み込んだシミュレータと前記ソースコードを組み合わせて生成され、前記見積性能生成ステップは、前記アクセスコストが複数種類ある場合には該種類ごとに前記見積性能を生成することを特徴とする半導体回路性能見積方法が提供される。
【００２１】
本発明の第３の観点によれば、半導体回路の性能を見積もるための半導体回路性能見積装置としてコンピュータを機能させるための半導体回路性能見積プログラムであって、前記コンピュータを、前記半導体の設計データであるソースコードに含まれる記憶領域それぞれへのアクセス回数を算出する性能評価モデルを生成する手段、前記性能評価モデルを動作させて計測した記憶領域別アクセス回数と、あらかじめ記憶した、前記記憶領域に割り当てられるメモリのメモリ種別情報とから、前記メモリの種別ごとのメモリ種別アクセス回数を算出する手段、あらかじめ記憶した前記メモリの種別ごとのアクセスコストの情報と、前記メモリ種別アクセス回数とからアクセスコストの総計を算出し、該総計をもとに前記半導体回路の見積性能を生成する見積性能生成手段として動作させ、前記性能評価モデルは、前記ソースコードに前記アクセス回数のカウント手段を追加して生成され、あるいは、前記アクセス回数のカウント手段を組み込んだライブラリを前記ソースコードと組み合わせて生成され、あるいは、前記アクセス回数のカウント手段を組み込んだシミュレータと前記ソースコードを組み合わせて生成され、前記見積性能生成手段は、前記アクセスコストが複数種類ある場合には該種類ごとに前記見積性能を生成することを特徴とする半導体回路性能見積プログラムが提供される。
【発明の効果】
【００２２】
本発明によれば、所定のアルゴリズムを実現する半導体回路の性能を簡易に見積もることができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施形態による半導体回路性能見積装置の構成を示すブロック図である。
【図２】図１に示す半導体回路性能見積装置により行なわれる半導体回路性能見積方法を示すフローチャートである。
【図３−１】図１に示す解析対象ソースコード記憶部に記憶される解析対象ソースコードの一例を示すプログラムリスト（１／２）である。
【図３−２】図１に示す解析対象ソースコード記憶部に記憶される解析対象ソースコードの一例を示すプログラムリスト（２／２）である。
【図４】図１に示すメモリ割当情報記憶部に記憶されている、解析対象ソースコードに記述されている変数と該変数の割当先メモリの種類との対応関係を表すメモリ割当情報の一例を示す図である。
【図５】図１に示すアクセスコスト対応表記憶部に記憶されている、メモリの種類毎のアクセスコストを表すアクセスコスト対応表の一例を示す図である。
【図６−１】図１に示す性能評価モデル生成部が、図３−１、３−２に示す解析対象ソースコードに基づいて生成した性能評価モデルのプログラムリスト（１／２）である。
【図６−２】図１に示す性能評価モデル生成部が、図３−１、３−２に示す解析対象ソースコードに基づいて生成した性能評価モデルのプログラムリスト（２／２）である。
【図７】図１に示すアクセス回数解析部が、図６−１、６−２に示す性能評価モデルに基づいて生成したアクセス回数対応表を示す図である。
【図８】図１に示す見積性能計算部が、図４に示すメモリ割当情報と図７に示すアクセス回数対応表に基づいて生成したメモリの種類毎のアクセス回数を示す図である。
【図９】図１に示す見積性能計算部が、図５に示すアクセスコスト対応表と図８に示すメモリの種類毎のアクセス回数に基づいて生成した見積性能を示す図である。
【図１０−１】図１に示す解析対象ソースコード記憶部に記憶される解析対象ソースコードの他の一例を示すプログラムリスト（１／２）である。
【図１０−２】図１に示す解析対象ソースコード記憶部に記憶される解析対象ソースコードの他の一例を示すプログラムリスト（２／２）である。
【図１１】図１０−１、１０−２に示す解析ソースコードに基づいて図１に示す性能評価モデル生成部が生成した性能評価モデルに基づいて、図１に示すアクセス回数解析部が生成したアクセス回数対応表を示す図である。
【図１２】図１に示す見積性能計算部が、図４に示すメモリ割当情報と図５に示すアクセスコスト対応表と図１１に示すアクセス回数対応表とに基づいて生成した見積性能を示す図である。
【図１３】図１に示すメモリ割当情報記憶部に記憶されている、解析対象ソースコードに記述されている変数と該変数の割当先メモリの種類との対応関係を表すメモリ割当情報の他の一例を示す図である。
【図１４】図１に示す見積性能計算部が、図１３に示すメモリ割当情報と図５に示すアクセスコスト対応表と図７に示すアクセス回数対応表とに基づいて生成した見積性能を示す図である。
【発明を実施するための形態】
【００２４】
以下、図面を参照して本発明を実施するための形態について詳細に説明する。
【００２５】
図１を参照すると、本実施形態の半導体回路性能見積装置は、性能評価モデル生成部１０１と、アクセス回数解析部１０２と、見積性能計算部１０３を含み、性能評価モデル生成部１０１が解析対象のソースコードに含まれる記憶領域それぞれへのアクセス回数を算出することのできる性能評価モデルを生成し、アクセス回数解析部１０２が該性能評価モデルを実行させて該実行中の記憶領域毎のアクセス回数を算出し、見積性能計算部１０３が前記記憶領域毎のアクセス回数と記憶領域毎の割当先メモリ種類の情報とメモリ種類毎のアクセスコストの情報からアクセスコストの総計を算出して見積性能を生成するよう動作する。このような構成を採用することにより本発明の目的を達成することができる。
【００２６】
図１を参照すると、本発明の実施の形態は、プログラム制御により動作するコンピュータ（中央処理装置；プロセッサ；データ処理装置）１００と、記憶装置２００を含む。
【００２７】
コンピュータ１００は、性能評価モデル生成部１０１と、アクセス回数解析部１０２と、見積性能計算部１０３とを含む。
【００２８】
記憶装置２００は、解析対象ソースコード記憶部１１１と、性能評価モデル記憶部１１２と、記憶領域別アクセス回数対応表記憶部１１３と、メモリ割当情報記憶部１１４と、メモリ種類別アクセス回数対応表記憶部１１５、アクセスコスト対応表記憶部１１６と、性能見積結果記憶部１１７とを含む。
【００２９】
次に、図１及び図２のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
【００３０】
動作に先立ち、解析対象ソースコード記憶部１１１は、半導体回路の設計データである解析対象となるソースコードをあらかじめ記憶している。解析対象のソースコードは、たとえばＣ言語、Ｃ＋＋言語、Ｊａｖａ（登録商標）言語などのソフトウェアプログラミング言語で記述される。ＳｙｓｔｅｍＣやＳｐｅｃＣといったソフトウェアプログラム言語に半導体回路設計のために拡張を施した言語で記述されていてもよい。
【００３１】
メモリ割当情報記憶部１１４は、解析対象となるソースコード中に含まれる記憶領域（配列等）ごとに、該記憶領域が割り当てられるメモリの種類の情報を、あらかじめ記憶している。なお、ソースコード、メモリ割当情報などを基に、これを反映した半導体装置を製造することができる。
【００３２】
メモリの種類とは、たとえば、チップの内部に実装されるメモリである。あるいは、チップ外に実装されるメモリである。あるいは、解析対象となるソースコードを実現する半導体回路に占有されるメモリである。あるいは、他の半導体回路と共有されるメモリである。あるいは、解析対象となるソースコードを実現する半導体回路と直接接続されたメモリである。あるいは、バスを介して接続されたメモリである。
【００３３】
アクセスコスト対応表記憶部１１６は、メモリの種類ごとのアクセスのコストの情報を、あらかじめ記憶している。
【００３４】
アクセスのコストとは、たとえば、アクセスに必要となる時間（アクセスタイム）である。あるいは、アクセスに必要となる、クロックサイクル数（アクセスクロックサイクル数）である。あるいは、アクセスによって消費される電力（アクセス消費電力）である。あるいは、アクセスによって発生する熱量（アクセス発生熱量）である。あるいは、アクセス対象のメモリの面積（アクセス対象メモリ面積）である。あるいは、アクセス対象のメモリを占有する時間の割合（アクセス対象メモリ占有時間割合）である。あるいは、これらのうちの２以上のものの組合せ(例えば加重平均)であってもよい。
【００３５】
まず、性能評価モデル生成部１０１は、解析対象ソースコード記憶部１１１からソースコードを読み出す（図２のステップＡ１）。
【００３６】
次に、性能評価モデル生成部１０１は、該ソースコードに含まれる記憶領域を検出する（図２のステップＡ２）。
【００３７】
記憶領域とは、たとえば、ソースコード中に宣言された配列である。あるいは、たとえば、ソースコード中にmalloc関数で確保されたメモリ領域である。あるいは、たとえば、new 関数で確保されたメモリ領域である。
【００３８】
次に、性能評価モデル生成部１０１は、該記憶領域それぞれについて、アクセス（読み出し、書き込み）の回数を数え上げる手段を該ソースコードに追加し、これを性能評価モデルとして生成する（図２のステップＡ３）。
【００３９】
アクセスの回数を数え上げる手段とは、たとえば、記憶領域毎にカウンタを用意し、アクセスのたびにカウンタをインクリメントするような動作をソースコードに追加したものである。あるいは、アクセスの回数を数え上げる手段を組み込んだ関数を用意しメモリの読み出しや書き込みを該関数に置き換えたものである。
【００４０】
性能評価モデルは、たとえば、解析対象のソースコードを改変して得られる。あるいは、アクセスの回数を数え上げる手段を組み込んだライブラリを解析対象のソースコードと組み合わせて得られる。あるいは、アクセスの回数を数え上げる手段を組み込んだシミュレータと解析対象のソースコードを組み合わせて得られる。
【００４１】
次に、性能評価モデル生成部１０１は、前記性能評価モデルを、性能評価モデル記憶部１１２に格納する。
【００４２】
次に、アクセス回数解析部１０２は、前記性能評価モデル記憶部１１２から、前記性能評価モデルを読み出す。
【００４３】
次に、アクセス回数解析部１０２は、該性能評価モデルを動作させ、ソースコードに含まれる記憶領域毎に、アクセスの回数を計測し、記憶領域別アクセス回数対応表を作成する（図２のステップＡ４）。
【００４４】
記憶領域別アクセス回数対応表は、たとえば、前記性能評価モデルをコンパイラによってプロセッサ上で実行可能なコードに変換し、プロセッサ上で動作させることによって得られる。あるいは、前記性能評価モデルを、アクセスの回数を数え上げる手段を組み込んだライブラリとともに、プロセッサ上で実行可能なコードに変換し、プロセッサ上で動作させることによって得られる。あるいは、前記性能評価モデルを、アクセスの回数を数え上げる手段を組み込んだシミュレータ上で実行させることによって得られる。
【００４５】
次に、アクセス回数解析部１０２は、前記記憶領域別アクセス回数対応表を、記憶領域別アクセス回数対応表記憶部１１３に格納する。
【００４６】
次に、見積性能計算部１０３は、前記記憶領域別アクセス回数対応表記憶部１１３から、前記記憶領域別アクセス回数対応表を読み出す。
【００４７】
次に、見積性能計算部１０３は、前記メモリ割当情報記憶部１１４から、前記メモリ割当情報を読み出す（図２のステップＡ５）。
【００４８】
次に、見積性能計算部１０３は、前記記憶領域別アクセス回数対応表に記載された記憶領域毎のアクセス回数の情報と、前記メモリ割当情報に記載された記憶領域毎の割当先のメモリの種類の情報から、メモリ種類ごとのアクセス回数を算出して、それをメモリ種類別アクセス回数対応表としてメモリ種類別アクセス回数対応表記憶部１１５に格納する（図２のステップＡ６）。
【００４９】
次に、見積性能計算部１０３は、前記アクセスコスト対応表記憶部１１６から、前記アクセスコスト対応表を読み出す（図２のステップＡ７）。
【００５０】
次に、見積性能計算部１０３は、メモリ種類別アクセス回数対応表に記載された前記メモリ種類ごとのアクセス回数の情報と、前記アクセスコスト対応表に記載されたメモリ種類ごとのアクセスコストの情報から、アクセスコストの総計を算出し、見積性能を生成する（図２のステップＡ８）。
【００５１】
最後に、見積性能計算部１０３は、前記見積性能を、見積性能記憶部１１７に格納する。
【００５２】
なお、複数の種類のアクセスコストについて、アクセスコストの種類毎に見積性能を算出し、これらを組み合わせることにより得られた値を（例えば、加重平均をとることにより得られた値を）、最終的な見積性能としても良い。
【００５３】
次に、本実施の形態の効果について説明する。
【００５４】
本実施の形態では、性能評価モデル生成部１０１が解析対象のソースコードに含まれる記憶領域それぞれへのアクセス回数を算出することのできる性能評価モデルを生成し、アクセス回数解析部１０２が前記性能評価モデルを実行させて該実行中の記憶領域毎のアクセス回数を算出し、見積性能計算部１０３が前記記憶領域毎のアクセス回数と記憶領域毎の割当先メモリ種類の情報とメモリ種類毎のアクセスコストの情報からアクセスコストの総計を算出して見積性能を生成するというように構成されているため、複雑なアルゴリズムを実現する論理回路の性能を簡易に見積もることのできる半導体回路性能見積装置を提供することができる。
【実施例１】
【００５５】
次に、具体的な実施例を用いて本発明を実施するための最良の形態の動作を説明する。
【００５６】
図３−１、３−２を参照すると、解析対象のソースコードが例示されている。当該ソースコードは「ＳｙｓｔｅｍＣ言語」を用いて表記されているが、本発明の説明に関連ない部分は一部省略されている。
【００５７】
図３―１、３−２のソースコードは、概略以下のように動作する。２つの入力端子 in0 と in4 をもち、一つの出力端子 out3 をもつ。入力端子in0 およびin4から１２８個のデータが読み出され、該データが一度配列に格納される。その後、配列に格納されたデータに基づき演算がなされた後、その結果が配列に格納される。さらに、配列に格納された１２８個のデータが、出力端子out3に書き出される。
【００５８】
図３−１のソースコードの1行目から５行目までは入出力端子が宣言されている。具体的には、符号なし型8ビット幅の入力端子in0, in4 ならびに出力端子out3が宣言されている。
【００５９】
図３−２のソースコードの６行目から３１行目までは動作が定義されている。７行目から１１行目で、符号なし型８ビットの配列ary0〜ary4が宣言されている。１５行目から１８行目までで、入力端子in0 とin4 からそれぞれ１２８個のデータを読み出し、配列ary0とary4に書き込んでいる。
【００６０】
図３−２のソースコードの２０行目から２４行目までで計算を行っている。具体的には、２０行目ではループカウンタiの値が0から１２３になるまで２１行目から２３行目を繰り返すことが指定されている。２１行目では配列ary0のi番目、i+1番目、i+2番目の要素を読み出し、その総和を計算して、配列ary1のi番目の要素として書き込むことが指定されている。２２行目では、同様に、配列ary0のi+3番目、i+4番目の要素を読み出し、その和を計算して、配列ary2のi番目の要素として書き込むことが指定されている。２３行目では、配列ary4のi番目、i+1番目の要素を読み出し、その値を用いて配列ary1とary2から値を読み出し、その和を計算して、配列ary3のi番目の要素として書き込むことが指定されている。
【００６１】
図３−２のソースコードの２６行目から２８行目では、配列ary3の１２８個の値を出力端子out3に書き出すことが指定されている。
【００６２】
図３―１、３−２のソースコードは、解析対象ソースコード記憶部１１１にあらかじめ記憶されている。
【００６３】
図４を参照すると、メモリ割当情報が例示されている。図４のメモリ割当情報では、第１の外部メモリ、第１の内部メモリ、第２の内部メモリの３種類のメモリが使用されること、並びに、図３のソースコード中の５つの記憶領域（配列）ary0〜ary4に対して、それぞれが割り当てられるメモリの種類が指定されている。たとえば、配列ary0が第一の外部メモリに割り当てられること、配列ary1が第一の内部メモリに割り当てられること、などが指定されている。
【００６４】
図４のメモリ割当情報は、メモリ割当情報記憶部１１４にあらかじめ記憶されている。
【００６５】
図５を参照すると、アクセスコスト対応表が例示されている。図５のアクセスコスト対応表には、第１の外部メモリ、第１の内部メモリ、第２の内部メモリへのアクセスに必要となる時間（クロックサイクル数）がそれぞれ示されている。
【００６６】
図５のアクセスコスト対応表は、アクセスコスト対応表記憶部１１６にあらかじめ記憶されている。
【００６７】
まず、性能評価モデル生成部１０１は、解析対象ソースコード記憶部１１１から図３−１、３−２のソースコードを読み出し（図２のステップＡ１）、該ソースコードに含まれる記憶領域である配列ary0〜ary4を検出する（図２のステップＡ２）。
【００６８】
次に、性能評価モデル生成部１０１は、該記憶領域それぞれについて、アクセス（読み出し、書き込み）の回数を数え上げる手段を該ソースコードに追加し、これを性能評価モデルとして生成する（図２のステップＡ３）。
【００６９】
図６−１、６−２を参照すると、性能評価モデルが例示されている。図６−１、６−２の性能評価モデルでは、図３−１、３−２のソースコードに対して、５つの配列ary0〜ary4に対して、５つのカウンタcnt[0]〜cnt[4]を用意し、配列にアクセスするたびに、カウンタを増加させるように動作する部分が追加されている点が異なる。
【００７０】
図６−２の性能評価モデルの１２行目では５つのカウンタcnt[0]〜cnt[4]が宣言され、値０で初期化されている。
【００７１】
１７行目および１８行目では、配列ary0およびary4へのアクセスのたびにcnt[0]およびcnt[4]をそれぞれインクリメントしている。２２行目〜２４行目、および２８行目でも同様に、配列へのアクセスのたびに対応するカウンタの値を増加させている。
【００７２】
次に、性能評価モデル生成部１０１は、図６の性能評価モデルを、性能評価モデル記憶部１１２に記憶する。
【００７３】
次に、アクセス回数解析部１０２は、前記性能評価モデル記憶部１１２から、図６の性能評価モデルを読み出す。
【００７４】
次に、アクセス回数解析部１０２は、図６の性能評価モデルを動作させ、ソースコードに含まれる記憶領域毎に、アクセスの回数を計測し、記憶領域別アクセス回数対応表を作成する（図２のステップＡ４）。
【００７５】
図７を参照すると記憶領域別アクセス回数対応表が例示されている。図７の記憶領域別アクセス回数対応表には、図６の性能評価モデルの１５行目から３０行目を、一度実行して得られる、配列ごとのアクセス回数（カウンタcnt[0]〜cnt[4]の値）が示されている。
【００７６】
次に、アクセス回数解析部１０２は、図７の記憶領域別アクセス回数対応表を、記憶領域別アクセス回数対応表記憶部１１３に記憶する。
【００７７】
次に、見積性能計算部１０３は、記憶領域別アクセス回数対応表記憶部１１３から図７のアクセス回数対応表を読み出し、メモリ割当情報記憶部１１４から、図４のメモリ割当情報を読み出す。
【００７８】
次に、図７の記憶領域別アクセス回数対応表に記載された記憶領域毎のアクセス回数の情報と、図４のメモリ割当情報に記載された記憶領域毎の割当先のメモリの種類の情報から、メモリ種類ごとのアクセス回数を算出する。
【００７９】
図８を参照すると、メモリ種類ごとのアクセス回数が例示されている。図８には、第一の外部メモリ、第１の内部メモリ、第２の内部メモリそれぞれのアクセス回数が例示されている。たとえば、第一の外部メモリに割り当てられる配列ary0およびary3のアクセス回数はそれぞれ743回と251回であるため、第一の外部メモリへのアクセスの総数はその和である994回となる。
【００８０】
次に、見積性能計算部１０３は、前記アクセスコスト対応表記憶部１１６から、図５のアクセスコスト対応表を読み出し、図８のメモリ種類ごとのアクセス回数の情報と図５のアクセス対応表の情報から、アクセスコストの総計を算出し、見積性能を生成する。
【００８１】
図９を参照すると、メモリ種類ごとのアクセスコストが例示されている。図９には、第一の外部メモリ、第１の内部メモリ、第２の内部メモリそれぞれのアクセスコストが例示されている。たとえば、第一の外部メモリの一回当たりのアクセスコストは１０であり、アクセス回数が994回であるため、第一の外部メモリのアクセスコストは9940と算出される。第１の内部メモリ、第２の内部メモリのアクセスコストもそれぞれ同様に算出され、これらの総和である見積性能は10,806と算出される。つまり、アクセス先のメモリ種類別のアクセス回数とアクセス先のメモリ種類別の１アクセス毎のアクセスコストの積和が見積性能として算出される。
【００８２】
最後に、見積性能計算部１０３は、前記見積性能を、見積性能記憶部１１７に記憶する。
【００８３】
次に、図３−１、３−２のソースコードを図１０−１、１０−２に示すように変更したことを考える。図１０−１、１０−２に例示されるソースコードは、図３−１、３−２のソースコードとは機能的に同一であるが、配列ary0の同一要素からの読み込みを削減するように変更されていることが異なる。
【００８４】
図１０−２のソースコードの１２行目に再利用されるデータを一時的に格納する配列srが宣言されている。２０行目から２２行目で、配列aryの０番目の要素から３番目の要素までを読み出し、配列srに書き込んでいる。
【００８５】
２５行目では配列ary0から新たな値を読み出し配列srの４番目の要素に書き込んでいる。２６行目および２７行目では、配列ary0から値を読み出す代わりに配列srから値を読み出し、図３のソースコードと同様に和を計算し、その結果を配列ary1ならびにary2に格納している。
【００８６】
２９行目から３１行目で、配列srの値をシフトし、次の計算に備えている。
【００８７】
性能評価モデル生成部１０１は、図１０−１、１０−２のソースコードから性能評価モデルを生成し、アクセス回数解析部１０２は該性能評価モデルを実行し配列ごとのアクセスの回数を計測し、アクセス回数対応表を作成する。
【００８８】
図１１を参照すると、図１０のソースコードに対する、アクセス回数対応表が例示されている。図７に例示されているアクセス回数対応表と比較し、配列ary0のアクセス回数が削減されていることがわかる。
【００８９】
見積性能計算部１０３は、図１１のアクセス回数対応表と、図４のメモリ割当て並びに、図５のアクセスコストを読み出し、メモリ種類ごとのアクセス回数を算出し、さらに、メモリ種類ごとのアクセスコストを算出する。
【００９０】
図１２を参照すると、図１１のソースコードと、図４のメモリ割当て並びに、図５のアクセスコストから得られる、メモリ種類ごとのアクセスコスト並びにその総和が例示されている。図９に例示されているアクセスコストと比較して、第一の外部メモリのアクセスコストが削減され、結果的にアクセスコストの総和も削減されていることがわかる。
【００９１】
このように、図１０―１、１０−２のソースコードを実現する半導体回路は、図３―１、３−２のソースコードを実現する半導体回路よりも低コストであることを簡易に見積もることができる。
【００９２】
次に、図４のメモリの割当てを図１３に示すように変更したことを考える。図１３のメモリ割当ては、図４のメモリ割当てと比較して、配列ary0が第一の内部メモリに割り当てられていることが異なる。
【００９３】
見積性能１０３は、図１１のアクセス回数対応表と、図１３のメモリ割当て並びに、図５のアクセスコストを読み出し、メモリ種類ごとのアクセス回数を算出し、さらに、メモリ種類ごとのアクセスコストを算出する。
【００９４】
図１４を参照すると、図１１のソースコードと、図１３のメモリ割当て並びに、図５のアクセスコストから得られる、メモリ種類ごとのアクセスコスト並びにその総和が例示されている。図１２に例示されているアクセスコストと比較して、第一の内部メモリのアクセスコストは増加しているものの、第一の外部メモリのアクセスコストが削減され、結果的にアクセスコストの総和も削減されていることがわかる。
【００９５】
このように、図１３のメモリ割当てを用いて図１０のソースコードを実現する半導体回路は、図４のメモリ割当てを用いて図１０のソースコードを実現する半導体回路よりも低コストであることを簡易に見積もることができる。
【００９６】
本実施形態によれば、アルゴリズムを変更した時に、該アルゴリズムに対応するソースコードを実現する論理回路の性能を簡易に見積ることができ、アルゴリズム検討の判断材料に利用できる。また、本実施形態によれば、メモリへの割当てを変更した時に、該ソースコードを実現する論理回路の性能を簡易に見積もることができ、アーキテクチャ検討の判断材料に利用できる。
【００９７】
なお、上記の半導体回路性能見積装置は、ハードウェア、ソフトウェア又はこれらの組合わせにより実現することができる。また、上記の半導体回路性能見積装置により行なわれる半導体回路性能見積方法も、ハードウェア、ソフトウェア又はこれらに組合わせにより実現することができる。ここで、ソフトウェアによって実現されるとは、コンピュータがプログラムを読み込んで実行することにより実現されることを意味する。
【００９８】
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば、光磁気ディスク）、ＣＤ−ＲＯＭ(Read Only Memory)、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ(Programmable ROM)、ＥＰＲＯＭ(Erasable PROM)、フラッシュＲＯＭ、ＲＡＭ(random access memory)）を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００９９】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１００】
（付記１）
半導体回路の性能を見積もるための半導体回路性能見積装置であって、
前記半導体の設計データであるソースコードを基に、アクセス先のメモリ種類別のアクセス回数を求め、該アクセス先のメモリ種類別のアクセス回数とアクセス先のメモリ種類別のアクセスコストを基に、見積性能を算出することを特徴とする半導体回路性能見積装置。
【０１０１】
（付記２）
付記１に記載の半導体回路性能見積装置であって、
前記アクセス先のメモリ種類別のアクセス回数は、記憶領域別のアクセス回数と記憶領域別のメモリ種類を基に求めることを特徴とする半導体回路性能見積装置。
【０１０２】
（付記３）
付記２に記載の半導体回路性能見積装置であって、
前記アクセス先の記憶領域別のアクセス回数を、前記ソースコードを基に生成した性能評価モデルを実行させることにより求めることを特徴とする半導体回路性能見積装置。
【０１０３】
（付記４）
付記３に記載の半導体回路性能見積装置であって、
前記性能評価モデルは、該性能評価モデルの実行時に記憶領域別のアクセス回数をカウントするための記述を含むことを特徴とする半導体回路性能見積装置。
【０１０４】
（付記５）
付記１乃至４の何れか１に記載の半導体回路性能見積装置であって、
前記アクセス先のメモリ種類別のアクセス回数と前記アクセス先のメモリ種類別のアクセスコストを基に算出した前記アクセス先のメモリ種類別のアクセス回数と前記アクセス先のメモリ種類別のアクセスコストの積和を前記見積性能として算出することを特徴とする半導体回路性能見積装置。
【０１０５】
（付記６）
付記１乃至５の何れか１に記載の半導体回路性能見積装置であって、
前記アクセスコストは、アクセスタイム、アクセスクロックサイクル数、アクセス消費電力、アクセス発生熱量、アクセス対象メモリ面積若しくはアクセス対象メモリ占有時間割合又はこれらの組合せであることを特徴とする半導体回路性能見積装置。
【０１０６】
（付記７）
付記１乃至５の何れか１に記載の半導体回路性能見積装置であって、
複数の種類のアクセスコストについて、アクセスコストの種類毎に見積性能を算出し、これらを組み合わせることにより得られた値を、最終的な見積性能とすることを特徴とする半導体回路性能見積装置。
【０１０７】
（付記８）
半導体回路の性能を見積もるための半導体回路性能見積方法であって、
前記半導体の設計データであるソースコードを基に、アクセス先のメモリ種類別のアクセス回数を求め、該アクセス先のメモリ種類別のアクセス回数とアクセス先のメモリ種類別のアクセスコストを基に、見積性能を算出することを特徴とする半導体回路性能見積方法。
【０１０８】
（付記９）
付記８に記載の半導体回路性能見積方法であって、
前記アクセス先のメモリ種類別のアクセス回数は、記憶領域別のアクセス回数と記憶領域別のメモリ種類を基に求めることを特徴とする半導体回路性能見積方法。
【０１０９】
（付記１０）
付記９に記載の半導体回路性能見積方法であって、
前記アクセス先の記憶領域別のアクセス回数を、前記ソースコードを基に生成した性能評価モデルを実行させることにより求めることを特徴とする半導体回路性能見積方法。
【０１１０】
（付記１１）
付記１０に記載の半導体回路性能見積方法であって、
前記性能評価モデルは、該性能評価モデルの実行時に記憶領域別のアクセス回数をカウントするための記述を含むことを特徴とする半導体回路性能見積方法。
【０１１１】
（付記１２）
付記８乃至１１の何れか１に記載の半導体回路性能見積方法であって、
前記アクセス先のメモリ種類別のアクセス回数と前記アクセス先のメモリ種類別のアクセスコストを基に算出した前記アクセス先のメモリ種類別のアクセス回数と前記アクセス先のメモリ種類別のアクセスコストの積和を前記見積性能として算出することを特徴とする半導体回路性能見積方法。
【０１１２】
（付記１３）
付記８乃至１２の何れか１に記載の半導体回路性能見積方法であって、
前記アクセスコストは、アクセスタイム、アクセスクロックサイクル数、アクセス消費電力、アクセス発生熱量、アクセス対象メモリ面積若しくはアクセス対象メモリ占有時間割合又はこれらの組合せであることを特徴とする半導体回路性能見積方法。
【０１１３】
（付記１４）
付記８乃至１２の何れか１に記載の半導体回路性能見積方法であって、
複数の種類のアクセスコストについて、アクセスコストの種類毎に見積性能を算出し、これらを組み合わせることにより得られた値を、最終的な見積性能とすることを特徴とする半導体回路性能見積方法。
【０１１４】
（付記１５）
半導体回路の性能を見積もるための半導体回路性能見積装置としてコンピュータを機能させるための半導体回路性能見積プログラムであって、
前記半導体回路性能見積り装置は、
前記半導体の設計データであるソースコードを基に、アクセス先のメモリ種類別のアクセス回数を求め、該アクセス先のメモリ種類別のアクセス回数とアクセス先のメモリ種類別のアクセスコストを基に、見積性能を算出することを特徴とする半導体回路性能見積プログラム。
【０１１５】
（付記１６）
付記１５に記載の半導体回路性能見積プログラムであって、
前記半導体回路性能見積り装置は、前記アクセス先のメモリ種類別のアクセス回数は、記憶領域別のアクセス回数と記憶領域別のメモリ種類を基に求めることを特徴とする半導体回路性能見積プログラム。
【０１１６】
（付記１７）
付記１６に記載の半導体回路性能見積プログラムであって、
前記半導体回路性能見積り装置は、前記アクセス先の記憶領域別のアクセス回数を、前記ソースコードを基に生成した性能評価モデルを実行させることにより求めることを特徴とする半導体回路性能見積プログラム。
【０１１７】
（付記１８）
付記１７に記載の半導体回路性能見積プログラムであって、
前記性能評価モデルは、該性能評価モデルの実行時に記憶領域別のアクセス回数をカウントするための記述を含むことを特徴とする半導体回路性能見積プログラム。
【０１１８】
（付記１９）
付記１５乃至１８の何れか１に記載の半導体回路性能見積プログラムであって、
前記半導体回路性能見積り装置は、前記アクセス先のメモリ種類別のアクセス回数と前記アクセス先のメモリ種類別のアクセスコストを基に算出した前記アクセス先のメモリ種類別のアクセス回数と前記アクセス先のメモリ種類別のアクセスコストの積和を前記見積性能として算出することを特徴とする半導体回路性能見積プログラム。
【０１１９】
（付記２０）
付記１５乃至１９の何れか１に記載の半導体回路性能見積プログラムであって、
前記アクセスコストは、アクセスタイム、アクセスクロックサイクル数、アクセス消費電力、アクセス発生熱量、アクセス対象メモリ面積若しくはアクセス対象メモリ占有時間割合又はこれらの組合せであることを特徴とする半導体回路性能見積プログラム。
【０１２０】
（付記２１）
付記１５乃至１９の何れか１に記載の半導体回路性能見積プログラムであって、
前記半導体回路性能見積り装置は、複数の種類のアクセスコストについて、アクセスコストの種類毎に見積性能を算出し、これらを組み合わせることにより得られた値を、最終的な見積性能とすることを特徴とする半導体回路性能見積プログラム。
【産業上の利用可能性】
【０１２１】
本発明は、複雑なアルゴリズムを実現する論理回路の性能を簡易に見積もることに利用できる。
【符号の説明】
【０１２２】
１００  コンピュータ
１０１  性能評価モデル生成部
１０２  アクセス回数解析部
１０３  見積性能計算部
１１１  解析対象ソースコード記憶部
１１２  性能評価モデル記憶部
１１３  記憶領域別アクセス回数対応表記憶部
１１４  メモリ割当情報記憶部
１１５  メモリ種類別アクセス回数対応表記憶部
１１６  アクセスコスト対応表記憶部
１１７  見積性能記憶部
２００記憶装置
【図１】
0005903814.tif 000002
【図２】
0005903814.tif 000003
【図３−１】
0005903814.tif 000004
【図３−２】
0005903814.tif 000005
【図４】
0005903814.tif 000006
【図５】
0005903814.tif 000007
【図６−１】
0005903814.tif 000008
【図６−２】
0005903814.tif 000009
【図７】
0005903814.tif 000010
【図８】
0005903814.tif 000011
【図９】
0005903814.tif 000012
【図１０−１】
0005903814.tif 000013
【図１０−２】
0005903814.tif 000014
【図１１】
0005903814.tif 000015
【図１２】
0005903814.tif 000016
【図１３】
0005903814.tif 000017
【図１４】
0005903814.tif 000018