説明

半導体回路性能見積装置、その方法及びそのプログラム

【課題】所定のアルゴリズムを実現する半導体回路の性能を簡易に見積もることのできる半導体回路性能見積装置を提供する。
【解決手段】半導体回路の性能を見積もるための半導体回路性能見積装置であって、前記半導体の設計データであるソースコードを基に、アクセス先のメモリ種類別のアクセス回数を求め、該アクセス先のメモリ種類別のアクセス回数とアクセス先のメモリ種類別のアクセスコストを基に、見積性能を算出する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体回路性能見積装置、その方法及びそのプログラムに関し、特に、半導体回路のアーキテクチャ設計において半導体回路の性能を見積もるための半導体回路性能見積装置、その方法及びそのプログラムに関する。
【背景技術】
【0002】
近年、複雑なアルゴリズムを実現する半導体回路の設計の重要性が増している。画像処理、認識処理などの処理アルゴリズムでは、扱うデータ量が増え、かつ、リアルタイム処理への要求も大きくなってきている。汎用プロセッサ単体での処理では要求を満たせなくなってきており、これらアルゴリズムを実現する半導体回路を専用回路として設計を行わなければならない。
【0003】
複雑なアルゴリズムを実現する半導体回路の設計は概略以下のように行われる。
【0004】
まず、半導体回路として実現するために好適なアルゴリズムの設計を行う。アルゴリズムの設計は、一般に、設計者がアルゴリズムを実現するプログラムのソースコードを作成し、該ソースコードをコンパイルし、プロセッサ上でプログラムを実行することにより、アルゴリズムの動作を確認することによって行われる。アルゴリズム設計の際には、半導体回路として実現する際のアーキテクチャ(パイプラインアーキテクチャなど)は考慮されない。また、アルゴリズム中で用いられる記憶領域(配列等)をどのような種類のメモリ(モジュール内メモリ、モジュール外メモリ、チップ内メモリ、チップ外メモリ、占有メモリ、共有メモリなど)に割り当てるかなども考慮されない。アルゴリズムの設計には、C++、C#、JAVA(登録商標)などのプログラミング言語およびSystemC、SpecC等のプログラミング言語に回路設計のための拡張を施した言語が用いられる。
【0005】
次に、前記アルゴリズムを実現する動作レベルの設計を行う。動作レベルの設計は、一般に、設計者が動作記述を作成することにより行う。動作レベル設計において、半導体回路として実現する際のアーキテクチャが決定される。また、記憶領域をどのような種類のメモリに割り当てるかが決定される。
【0006】
次に、ハードウェアレベルの設計を行う。ハードウェアレベルの設計は、一般に、動作合成装置がRTL(Register Transfer Level)記述を作成することにより行う。ハードウェアレベル設計において、前記動作レベル設計において決定されたアーキテクチャに応じて、必要な制御処理(パイプライン制御など)が実装される。また、前記動作レベル設計において決定されたメモリの種類に応じて、必要なインタフェイス回路(Static Random Access Memory (SRAM)インタフェイス、Dynamic Random Access Memory(DRAM)インタフェイス、バスインタフェイス等)が実装される。
【0007】
複雑なアルゴリズムを半導体回路として実現する場合、メモリアクセスのコストが処理性能を決定する。しかしながら、アルゴリズム設計の際には、記憶領域がどのような種類のメモリに割り当てられるかを考慮しないため、処理性能を簡易に見積もることができない。そのため、アルゴリズム設計、動作レベル設計、ハードウェア設計が終わった後(記憶領域を実際にメモリに割り当てて、必要なインタフェイス回路を実装した後)でしか処理性能がわからない。たとえば、ハードウェア設計の完了後に処理性能が目標性能に達していないことが判明した場合には、再度アルゴリズム設計から設計をやり直す必要があり、大きな手戻りとなる。
【0008】
もしも、アルゴリズム設計時に半導体回路に実現した時の性能を簡易に見積もることができれば、アルゴリズムの良し悪しを早期に判断することができるため、手戻りを起こさず、設計期間の短縮を図ることができる。
【0009】
半導体回路の性能を早期に見積もる手法は、従来いくつか開示されている。特許文献1、特許文献2では、詳細な動作を行うモデルと、性能を見積もるための簡易なモデルの2つを用意して、高速に性能を見積もる手法を開示している。しかしながら、性能を見積もるために新たにモデルを作成しなければならず、簡易な見積もりを実現しているとは言い難い。
【0010】
特許文献3などでは、メモリのアクセス回数を測定することで性能を見積もる手法を開示している。しかしながら、主にプロセッサ上で動作するプログラムの性能を評価する手法である。アルゴリズムを専用の半導体回路として実現する場合は、プロセッサ上で動作させる場合と異なり、メモリによるアクセスコストの違いにより、記憶領域をどの種類のメモリに割り当てるかによって性能が大幅に異なってくる。そのため、記憶領域が割り当てられるメモリ種類の考慮を行うことが、簡易な見積もりには必要不可欠である。しかしながら、特許文献3では、記憶領域をどの種類のメモリに割り当てるかの考慮がなされていない。
【0011】
特許文献4及び特許文献5では、記憶領域へのアクセス回数から、好適なメモリ割り当てを決定する手法が開示されている。しかしながら、簡易な見積もりを実現する手法は開示されていない。
【0012】
特許文献6では、記憶領域へのメモリアクセスのパターン(メモリ要素へのアクセスの順番)を解析し、好適な回路を自動合成する手法が開示されている。しかしながら、簡易な見積もりを実現する手法は開示されていない。
【0013】
特許文献7では、複数の半導体回路からのメモリへのアクセス競合を解析することにより、複数のプログラム実行装置上で動作するプログラムの処理時間を算出する手法が開示されている。しかしながら、プログラミング言語で記述された複雑なアルゴリズムを実現する半導体回路の性能を簡易に見積もる手法は開示されていない。
【0014】
以上のように、既存技術をもってしても、プログラミング言語で記述された複雑なアルゴリズムを実現する半導体回路の性能を簡易に見積もることができない。
【先行技術文献】
【特許文献】
【0015】
【特許文献1】特開2003−256494号公報
【特許文献2】米国公開公報2008/0263486A1
【特許文献3】特開平3−235138号公報
【特許文献4】特開2005−173648号公報
【特許文献5】特開2011−22863号公報
【特許文献6】特開2007−323206号公報
【特許文献7】特開2010−286892号公報
【発明の概要】
【発明が解決しようとする課題】
【0016】
第1の問題点は、複雑なアルゴリズムを実現する半導体回路を設計する際に、アルゴリズムの良し悪しを判断する方法がないということである。
【0017】
その理由は、プログラミング言語で記述された複雑なアルゴリズムを実現する論理回路の性能を簡易に見積もる方法がないためである。
【0018】
本発明の目的は、所定のアルゴリズムを実現する半導体回路の性能を簡易に見積もることのできる半導体回路性能見積装置、その方法及びそのプログラムを提供することにある。
【課題を解決するための手段】
【0019】
本発明の第1の観点によれば、半導体回路の性能を見積もるための半導体回路性能見積装置であって、前記半導体の設計データであるソースコードを基に、アクセス先のメモリ種類別のアクセス回数を求め、該アクセス先のメモリ種類別のアクセス回数とアクセス先のメモリ種類別のアクセスコストを基に、見積性能を算出することを特徴とする半導体回路性能見積装置が提供される。
【0020】
本発明の第2の観点によれば、半導体回路の性能を見積もるための半導体回路性能見積方法であって、前記半導体の設計データであるソースコードを基に、アクセス先のメモリ種類別のアクセス回数を求め、該アクセス先のメモリ種類別のアクセス回数とアクセス先のメモリ種類別のアクセスコストを基に、見積性能を算出することを特徴とする半導体回路性能見積方法が提供される。
【0021】
本発明の第3の観点によれば、半導体回路の性能を見積もるための半導体回路性能見積装置としてコンピュータを機能させるための半導体回路性能見積プログラムであって、前記半導体回路性能見積り装置は、前記半導体の設計データであるソースコードを基に、アクセス先のメモリ種類別のアクセス回数を求め、該アクセス先のメモリ種類別のアクセス回数とアクセス先のメモリ種類別のアクセスコストを基に、見積性能を算出することを特徴とする半導体回路性能見積プログラムが提供される。
【発明の効果】
【0022】
本発明によれば、所定のアルゴリズムを実現する半導体回路の性能を簡易に見積もることができる。
【図面の簡単な説明】
【0023】
【図1】本発明の実施形態による半導体回路性能見積装置の構成を示すブロック図である。
【図2】図1に示す半導体回路性能見積装置により行なわれる半導体回路性能見積方法を示すフローチャートである。
【図3−1】図1に示す解析対象ソースコード記憶部に記憶される解析対象ソースコードの一例を示すプログラムリスト(1/2)である。
【図3−2】図1に示す解析対象ソースコード記憶部に記憶される解析対象ソースコードの一例を示すプログラムリスト(2/2)である。
【図4】図1に示すメモリ割当情報記憶部に記憶されている、解析対象ソースコードに記述されている変数と該変数の割当先メモリの種類との対応関係を表すメモリ割当情報の一例を示す図である。
【図5】図1に示すアクセスコスト対応表記憶部に記憶されている、メモリの種類毎のアクセスコストを表すアクセスコスト対応表の一例を示す図である。
【図6−1】図1に示す性能評価モデル生成部が、図3−1、3−2に示す解析対象ソースコードに基づいて生成した性能評価モデルのプログラムリスト(1/2)である。
【図6−2】図1に示す性能評価モデル生成部が、図3−1、3−2に示す解析対象ソースコードに基づいて生成した性能評価モデルのプログラムリスト(2/2)である。
【図7】図1に示すアクセス回数解析部が、図6−1、6−2に示す性能評価モデルに基づいて生成したアクセス回数対応表を示す図である。
【図8】図1に示す見積性能計算部が、図4に示すメモリ割当情報と図7に示すアクセス回数対応表に基づいて生成したメモリの種類毎のアクセス回数を示す図である。
【図9】図1に示す見積性能計算部が、図5に示すアクセスコスト対応表と図8に示すメモリの種類毎のアクセス回数に基づいて生成した見積性能を示す図である。
【図10−1】図1に示す解析対象ソースコード記憶部に記憶される解析対象ソースコードの他の一例を示すプログラムリスト(1/2)である。
【図10−2】図1に示す解析対象ソースコード記憶部に記憶される解析対象ソースコードの他の一例を示すプログラムリスト(2/2)である。
【図11】図10−1、10−2に示す解析ソースコードに基づいて図1に示す性能評価モデル生成部が生成した性能評価モデルに基づいて、図1に示すアクセス回数解析部が生成したアクセス回数対応表を示す図である。
【図12】図1に示す見積性能計算部が、図4に示すメモリ割当情報と図5に示すアクセスコスト対応表と図11に示すアクセス回数対応表とに基づいて生成した見積性能を示す図である。
【図13】図1に示すメモリ割当情報記憶部に記憶されている、解析対象ソースコードに記述されている変数と該変数の割当先メモリの種類との対応関係を表すメモリ割当情報の他の一例を示す図である。
【図14】図1に示す見積性能計算部が、図13に示すメモリ割当情報と図5に示すアクセスコスト対応表と図7に示すアクセス回数対応表とに基づいて生成した見積性能を示す図である。
【発明を実施するための形態】
【0024】
以下、図面を参照して本発明を実施するための形態について詳細に説明する。
【0025】
図1を参照すると、本実施形態の半導体回路性能見積装置は、性能評価モデル生成部101と、アクセス回数解析部102と、見積性能計算部103を含み、性能評価モデル生成部101が解析対象のソースコードに含まれる記憶領域それぞれへのアクセス回数を算出することのできる性能評価モデルを生成し、アクセス回数解析部102が該性能評価モデルを実行させて該実行中の記憶領域毎のアクセス回数を算出し、見積性能計算部103が前記記憶領域毎のアクセス回数と記憶領域毎の割当先メモリ種類の情報とメモリ種類毎のアクセスコストの情報からアクセスコストの総計を算出して見積性能を生成するよう動作する。このような構成を採用することにより本発明の目的を達成することができる。
【0026】
図1を参照すると、本発明の実施の形態は、プログラム制御により動作するコンピュータ(中央処理装置;プロセッサ;データ処理装置)100と、記憶装置200を含む。
【0027】
コンピュータ100は、性能評価モデル生成部101と、アクセス回数解析部102と、見積性能計算部103とを含む。
【0028】
記憶装置200は、解析対象ソースコード記憶部111と、性能評価モデル記憶部112と、記憶領域別アクセス回数対応表記憶部113と、メモリ割当情報記憶部114と、メモリ種類別アクセス回数対応表記憶部115、アクセスコスト対応表記憶部116と、性能見積結果記憶部117とを含む。
【0029】
次に、図1及び図2のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
【0030】
動作に先立ち、解析対象ソースコード記憶部111は、半導体回路の設計データである解析対象となるソースコードをあらかじめ記憶している。解析対象のソースコードは、たとえばC言語、C++言語、Java(登録商標)言語などのソフトウェアプログラミング言語で記述される。SystemCやSpecCといったソフトウェアプログラム言語に半導体回路設計のために拡張を施した言語で記述されていてもよい。
【0031】
メモリ割当情報記憶部114は、解析対象となるソースコード中に含まれる記憶領域(配列等)ごとに、該記憶領域が割り当てられるメモリの種類の情報を、あらかじめ記憶している。なお、ソースコード、メモリ割当情報などを基に、これを反映した半導体装置を製造することができる。
【0032】
メモリの種類とは、たとえば、チップの内部に実装されるメモリである。あるいは、チップ外に実装されるメモリである。あるいは、解析対象となるソースコードを実現する半導体回路に占有されるメモリである。あるいは、他の半導体回路と共有されるメモリである。あるいは、解析対象となるソースコードを実現する半導体回路と直接接続されたメモリである。あるいは、バスを介して接続されたメモリである。
【0033】
アクセスコスト対応表記憶部116は、メモリの種類ごとのアクセスのコストの情報を、あらかじめ記憶している。
【0034】
アクセスのコストとは、たとえば、アクセスに必要となる時間(アクセスタイム)である。あるいは、アクセスに必要となる、クロックサイクル数(アクセスクロックサイクル数)である。あるいは、アクセスによって消費される電力(アクセス消費電力)である。あるいは、アクセスによって発生する熱量(アクセス発生熱量)である。あるいは、アクセス対象のメモリの面積(アクセス対象メモリ面積)である。あるいは、アクセス対象のメモリを占有する時間の割合(アクセス対象メモリ占有時間割合)である。あるいは、これらのうちの2以上のものの組合せ(例えば加重平均)であってもよい。
【0035】
まず、性能評価モデル生成部101は、解析対象ソースコード記憶部111からソースコードを読み出す(図2のステップA1)。
【0036】
次に、性能評価モデル生成部101は、該ソースコードに含まれる記憶領域を検出する(図2のステップA2)。
【0037】
記憶領域とは、たとえば、ソースコード中に宣言された配列である。あるいは、たとえば、ソースコード中にmalloc関数で確保されたメモリ領域である。あるいは、たとえば、new 関数で確保されたメモリ領域である。
【0038】
次に、性能評価モデル生成部101は、該記憶領域それぞれについて、アクセス(読み出し、書き込み)の回数を数え上げる手段を該ソースコードに追加し、これを性能評価モデルとして生成する(図2のステップA3)。
【0039】
アクセスの回数を数え上げる手段とは、たとえば、記憶領域毎にカウンタを用意し、アクセスのたびにカウンタをインクリメントするような動作をソースコードに追加したものである。あるいは、アクセスの回数を数え上げる手段を組み込んだ関数を用意しメモリの読み出しや書き込みを該関数に置き換えたものである。
【0040】
性能評価モデルは、たとえば、解析対象のソースコードを改変して得られる。あるいは、アクセスの回数を数え上げる手段を組み込んだライブラリを解析対象のソースコードと組み合わせて得られる。あるいは、アクセスの回数を数え上げる手段を組み込んだシミュレータと解析対象のソースコードを組み合わせて得られる。
【0041】
次に、性能評価モデル生成部101は、前記性能評価モデルを、性能評価モデル記憶部112に格納する。
【0042】
次に、アクセス回数解析部102は、前記性能評価モデル記憶部112から、前記性能評価モデルを読み出す。
【0043】
次に、アクセス回数解析部102は、該性能評価モデルを動作させ、ソースコードに含まれる記憶領域毎に、アクセスの回数を計測し、記憶領域別アクセス回数対応表を作成する(図2のステップA4)。
【0044】
記憶領域別アクセス回数対応表は、たとえば、前記性能評価モデルをコンパイラによってプロセッサ上で実行可能なコードに変換し、プロセッサ上で動作させることによって得られる。あるいは、前記性能評価モデルを、アクセスの回数を数え上げる手段を組み込んだライブラリとともに、プロセッサ上で実行可能なコードに変換し、プロセッサ上で動作させることによって得られる。あるいは、前記性能評価モデルを、アクセスの回数を数え上げる手段を組み込んだシミュレータ上で実行させることによって得られる。
【0045】
次に、アクセス回数解析部102は、前記記憶領域別アクセス回数対応表を、記憶領域別アクセス回数対応表記憶部113に格納する。
【0046】
次に、見積性能計算部103は、前記記憶領域別アクセス回数対応表記憶部113から、前記記憶領域別アクセス回数対応表を読み出す。
【0047】
次に、見積性能計算部103は、前記メモリ割当情報記憶部114から、前記メモリ割当情報を読み出す(図2のステップA5)。
【0048】
次に、見積性能計算部103は、前記記憶領域別アクセス回数対応表に記載された記憶領域毎のアクセス回数の情報と、前記メモリ割当情報に記載された記憶領域毎の割当先のメモリの種類の情報から、メモリ種類ごとのアクセス回数を算出して、それをメモリ種類別アクセス回数対応表としてメモリ種類別アクセス回数対応表記憶部115に格納する(図2のステップA6)。
【0049】
次に、見積性能計算部103は、前記アクセスコスト対応表記憶部116から、前記アクセスコスト対応表を読み出す(図2のステップA7)。
【0050】
次に、見積性能計算部103は、メモリ種類別アクセス回数対応表に記載された前記メモリ種類ごとのアクセス回数の情報と、前記アクセスコスト対応表に記載されたメモリ種類ごとのアクセスコストの情報から、アクセスコストの総計を算出し、見積性能を生成する(図2のステップA8)。
【0051】
最後に、見積性能計算部103は、前記見積性能を、見積性能記憶部117に格納する。
【0052】
なお、複数の種類のアクセスコストについて、アクセスコストの種類毎に見積性能を算出し、これらを組み合わせることにより得られた値を(例えば、加重平均をとることにより得られた値を)、最終的な見積性能としても良い。
【0053】
次に、本実施の形態の効果について説明する。
【0054】
本実施の形態では、性能評価モデル生成部101が解析対象のソースコードに含まれる記憶領域それぞれへのアクセス回数を算出することのできる性能評価モデルを生成し、アクセス回数解析部102が前記性能評価モデルを実行させて該実行中の記憶領域毎のアクセス回数を算出し、見積性能計算部103が前記記憶領域毎のアクセス回数と記憶領域毎の割当先メモリ種類の情報とメモリ種類毎のアクセスコストの情報からアクセスコストの総計を算出して見積性能を生成するというように構成されているため、複雑なアルゴリズムを実現する論理回路の性能を簡易に見積もることのできる半導体回路性能見積装置を提供することができる。
【実施例1】
【0055】
次に、具体的な実施例を用いて本発明を実施するための最良の形態の動作を説明する。
【0056】
図3−1、3−2を参照すると、解析対象のソースコードが例示されている。当該ソースコードは「SystemC言語」を用いて表記されているが、本発明の説明に関連ない部分は一部省略されている。
【0057】
図3―1、3−2のソースコードは、概略以下のように動作する。2つの入力端子 in0 と in4 をもち、一つの出力端子 out3 をもつ。入力端子in0 およびin4から128個のデータが読み出され、該データが一度配列に格納される。その後、配列に格納されたデータに基づき演算がなされた後、その結果が配列に格納される。さらに、配列に格納された128個のデータが、出力端子out3に書き出される。
【0058】
図3−1のソースコードの1行目から5行目までは入出力端子が宣言されている。具体的には、符号なし型8ビット幅の入力端子in0, in4 ならびに出力端子out3が宣言されている。
【0059】
図3−2のソースコードの6行目から31行目までは動作が定義されている。7行目から11行目で、符号なし型8ビットの配列ary0〜ary4が宣言されている。15行目から18行目までで、入力端子in0 とin4 からそれぞれ128個のデータを読み出し、配列ary0とary4に書き込んでいる。
【0060】
図3−2のソースコードの20行目から24行目までで計算を行っている。具体的には、20行目ではループカウンタiの値が0から123になるまで21行目から23行目を繰り返すことが指定されている。21行目では配列ary0のi番目、i+1番目、i+2番目の要素を読み出し、その総和を計算して、配列ary1のi番目の要素として書き込むことが指定されている。22行目では、同様に、配列ary0のi+3番目、i+4番目の要素を読み出し、その和を計算して、配列ary2のi番目の要素として書き込むことが指定されている。23行目では、配列ary4のi番目、i+1番目の要素を読み出し、その値を用いて配列ary1とary2から値を読み出し、その和を計算して、配列ary3のi番目の要素として書き込むことが指定されている。
【0061】
図3−2のソースコードの26行目から28行目では、配列ary3の128個の値を出力端子out3に書き出すことが指定されている。
【0062】
図3―1、3−2のソースコードは、解析対象ソースコード記憶部111にあらかじめ記憶されている。
【0063】
図4を参照すると、メモリ割当情報が例示されている。図4のメモリ割当情報では、第1の外部メモリ、第1の内部メモリ、第2の内部メモリの3種類のメモリが使用されること、並びに、図3のソースコード中の5つの記憶領域(配列)ary0〜ary4に対して、それぞれが割り当てられるメモリの種類が指定されている。たとえば、配列ary0が第一の外部メモリに割り当てられること、配列ary1が第一の内部メモリに割り当てられること、などが指定されている。
【0064】
図4のメモリ割当情報は、メモリ割当情報記憶部114にあらかじめ記憶されている。
【0065】
図5を参照すると、アクセスコスト対応表が例示されている。図5のアクセスコスト対応表には、第1の外部メモリ、第1の内部メモリ、第2の内部メモリへのアクセスに必要となる時間(クロックサイクル数)がそれぞれ示されている。
【0066】
図5のアクセスコスト対応表は、アクセスコスト対応表記憶部116にあらかじめ記憶されている。
【0067】
まず、性能評価モデル生成部101は、解析対象ソースコード記憶部111から図3−1、3−2のソースコードを読み出し(図2のステップA1)、該ソースコードに含まれる記憶領域である配列ary0〜ary4を検出する(図2のステップA2)。
【0068】
次に、性能評価モデル生成部101は、該記憶領域それぞれについて、アクセス(読み出し、書き込み)の回数を数え上げる手段を該ソースコードに追加し、これを性能評価モデルとして生成する(図2のステップA3)。
【0069】
図6−1、6−2を参照すると、性能評価モデルが例示されている。図6−1、6−2の性能評価モデルでは、図3−1、3−2のソースコードに対して、5つの配列ary0〜ary4に対して、5つのカウンタcnt[0]〜cnt[4]を用意し、配列にアクセスするたびに、カウンタを増加させるように動作する部分が追加されている点が異なる。
【0070】
図6−2の性能評価モデルの12行目では5つのカウンタcnt[0]〜cnt[4]が宣言され、値0で初期化されている。
【0071】
17行目および18行目では、配列ary0およびary4へのアクセスのたびにcnt[0]およびcnt[4]をそれぞれインクリメントしている。22行目〜24行目、および28行目でも同様に、配列へのアクセスのたびに対応するカウンタの値を増加させている。
【0072】
次に、性能評価モデル生成部101は、図6の性能評価モデルを、性能評価モデル記憶部112に記憶する。
【0073】
次に、アクセス回数解析部102は、前記性能評価モデル記憶部112から、図6の性能評価モデルを読み出す。
【0074】
次に、アクセス回数解析部102は、図6の性能評価モデルを動作させ、ソースコードに含まれる記憶領域毎に、アクセスの回数を計測し、記憶領域別アクセス回数対応表を作成する(図2のステップA4)。
【0075】
図7を参照すると記憶領域別アクセス回数対応表が例示されている。図7の記憶領域別アクセス回数対応表には、図6の性能評価モデルの15行目から30行目を、一度実行して得られる、配列ごとのアクセス回数(カウンタcnt[0]〜cnt[4]の値)が示されている。
【0076】
次に、アクセス回数解析部102は、図7の記憶領域別アクセス回数対応表を、記憶領域別アクセス回数対応表記憶部113に記憶する。
【0077】
次に、見積性能計算部103は、記憶領域別アクセス回数対応表記憶部113から図7のアクセス回数対応表を読み出し、メモリ割当情報記憶部114から、図4のメモリ割当情報を読み出す。
【0078】
次に、図7の記憶領域別アクセス回数対応表に記載された記憶領域毎のアクセス回数の情報と、図4のメモリ割当情報に記載された記憶領域毎の割当先のメモリの種類の情報から、メモリ種類ごとのアクセス回数を算出する。
【0079】
図8を参照すると、メモリ種類ごとのアクセス回数が例示されている。図8には、第一の外部メモリ、第1の内部メモリ、第2の内部メモリそれぞれのアクセス回数が例示されている。たとえば、第一の外部メモリに割り当てられる配列ary0およびary3のアクセス回数はそれぞれ743回と251回であるため、第一の外部メモリへのアクセスの総数はその和である994回となる。
【0080】
次に、見積性能計算部103は、前記アクセスコスト対応表記憶部116から、図5のアクセスコスト対応表を読み出し、図8のメモリ種類ごとのアクセス回数の情報と図5のアクセス対応表の情報から、アクセスコストの総計を算出し、見積性能を生成する。
【0081】
図9を参照すると、メモリ種類ごとのアクセスコストが例示されている。図9には、第一の外部メモリ、第1の内部メモリ、第2の内部メモリそれぞれのアクセスコストが例示されている。たとえば、第一の外部メモリの一回当たりのアクセスコストは10であり、アクセス回数が994回であるため、第一の外部メモリのアクセスコストは9940と算出される。第1の内部メモリ、第2の内部メモリのアクセスコストもそれぞれ同様に算出され、これらの総和である見積性能は10,806と算出される。つまり、アクセス先のメモリ種類別のアクセス回数とアクセス先のメモリ種類別の1アクセス毎のアクセスコストの積和が見積性能として算出される。
【0082】
最後に、見積性能計算部103は、前記見積性能を、見積性能記憶部117に記憶する。
【0083】
次に、図3−1、3−2のソースコードを図10−1、10−2に示すように変更したことを考える。図10−1、10−2に例示されるソースコードは、図3−1、3−2のソースコードとは機能的に同一であるが、配列ary0の同一要素からの読み込みを削減するように変更されていることが異なる。
【0084】
図10−2のソースコードの12行目に再利用されるデータを一時的に格納する配列srが宣言されている。20行目から22行目で、配列aryの0番目の要素から3番目の要素までを読み出し、配列srに書き込んでいる。
【0085】
25行目では配列ary0から新たな値を読み出し配列srの4番目の要素に書き込んでいる。26行目および27行目では、配列ary0から値を読み出す代わりに配列srから値を読み出し、図3のソースコードと同様に和を計算し、その結果を配列ary1ならびにary2に格納している。
【0086】
29行目から31行目で、配列srの値をシフトし、次の計算に備えている。
【0087】
性能評価モデル生成部101は、図10−1、10−2のソースコードから性能評価モデルを生成し、アクセス回数解析部102は該性能評価モデルを実行し配列ごとのアクセスの回数を計測し、アクセス回数対応表を作成する。
【0088】
図11を参照すると、図10のソースコードに対する、アクセス回数対応表が例示されている。図7に例示されているアクセス回数対応表と比較し、配列ary0のアクセス回数が削減されていることがわかる。
【0089】
見積性能計算部103は、図11のアクセス回数対応表と、図4のメモリ割当て並びに、図5のアクセスコストを読み出し、メモリ種類ごとのアクセス回数を算出し、さらに、メモリ種類ごとのアクセスコストを算出する。
【0090】
図12を参照すると、図11のソースコードと、図4のメモリ割当て並びに、図5のアクセスコストから得られる、メモリ種類ごとのアクセスコスト並びにその総和が例示されている。図9に例示されているアクセスコストと比較して、第一の外部メモリのアクセスコストが削減され、結果的にアクセスコストの総和も削減されていることがわかる。
【0091】
このように、図10―1、10−2のソースコードを実現する半導体回路は、図3―1、3−2のソースコードを実現する半導体回路よりも低コストであることを簡易に見積もることができる。
【0092】
次に、図4のメモリの割当てを図13に示すように変更したことを考える。図13のメモリ割当ては、図4のメモリ割当てと比較して、配列ary0が第一の内部メモリに割り当てられていることが異なる。
【0093】
見積性能103は、図11のアクセス回数対応表と、図13のメモリ割当て並びに、図5のアクセスコストを読み出し、メモリ種類ごとのアクセス回数を算出し、さらに、メモリ種類ごとのアクセスコストを算出する。
【0094】
図14を参照すると、図11のソースコードと、図13のメモリ割当て並びに、図5のアクセスコストから得られる、メモリ種類ごとのアクセスコスト並びにその総和が例示されている。図12に例示されているアクセスコストと比較して、第一の内部メモリのアクセスコストは増加しているものの、第一の外部メモリのアクセスコストが削減され、結果的にアクセスコストの総和も削減されていることがわかる。
【0095】
このように、図13のメモリ割当てを用いて図10のソースコードを実現する半導体回路は、図4のメモリ割当てを用いて図10のソースコードを実現する半導体回路よりも低コストであることを簡易に見積もることができる。
【0096】
本実施形態によれば、アルゴリズムを変更した時に、該アルゴリズムに対応するソースコードを実現する論理回路の性能を簡易に見積ることができ、アルゴリズム検討の判断材料に利用できる。また、本実施形態によれば、メモリへの割当てを変更した時に、該ソースコードを実現する論理回路の性能を簡易に見積もることができ、アーキテクチャ検討の判断材料に利用できる。
【0097】
なお、上記の半導体回路性能見積装置は、ハードウェア、ソフトウェア又はこれらの組合わせにより実現することができる。また、上記の半導体回路性能見積装置により行なわれる半導体回路性能見積方法も、ハードウェア、ソフトウェア又はこれらに組合わせにより実現することができる。ここで、ソフトウェアによって実現されるとは、コンピュータがプログラムを読み込んで実行することにより実現されることを意味する。
【0098】
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば、光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0099】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0100】
(付記1)
半導体回路の性能を見積もるための半導体回路性能見積装置であって、
前記半導体の設計データであるソースコードを基に、アクセス先のメモリ種類別のアクセス回数を求め、該アクセス先のメモリ種類別のアクセス回数とアクセス先のメモリ種類別のアクセスコストを基に、見積性能を算出することを特徴とする半導体回路性能見積装置。
【0101】
(付記2)
付記1に記載の半導体回路性能見積装置であって、
前記アクセス先のメモリ種類別のアクセス回数は、記憶領域別のアクセス回数と記憶領域別のメモリ種類を基に求めることを特徴とする半導体回路性能見積装置。
【0102】
(付記3)
付記2に記載の半導体回路性能見積装置であって、
前記アクセス先の記憶領域別のアクセス回数を、前記ソースコードを基に生成した性能評価モデルを実行させることにより求めることを特徴とする半導体回路性能見積装置。
【0103】
(付記4)
付記3に記載の半導体回路性能見積装置であって、
前記性能評価モデルは、該性能評価モデルの実行時に記憶領域別のアクセス回数をカウントするための記述を含むことを特徴とする半導体回路性能見積装置。
【0104】
(付記5)
付記1乃至4の何れか1に記載の半導体回路性能見積装置であって、
前記アクセス先のメモリ種類別のアクセス回数と前記アクセス先のメモリ種類別のアクセスコストを基に算出した前記アクセス先のメモリ種類別のアクセス回数と前記アクセス先のメモリ種類別のアクセスコストの積和を前記見積性能として算出することを特徴とする半導体回路性能見積装置。
【0105】
(付記6)
付記1乃至5の何れか1に記載の半導体回路性能見積装置であって、
前記アクセスコストは、アクセスタイム、アクセスクロックサイクル数、アクセス消費電力、アクセス発生熱量、アクセス対象メモリ面積若しくはアクセス対象メモリ占有時間割合又はこれらの組合せであることを特徴とする半導体回路性能見積装置。
【0106】
(付記7)
付記1乃至5の何れか1に記載の半導体回路性能見積装置であって、
複数の種類のアクセスコストについて、アクセスコストの種類毎に見積性能を算出し、これらを組み合わせることにより得られた値を、最終的な見積性能とすることを特徴とする半導体回路性能見積装置。
【0107】
(付記8)
半導体回路の性能を見積もるための半導体回路性能見積方法であって、
前記半導体の設計データであるソースコードを基に、アクセス先のメモリ種類別のアクセス回数を求め、該アクセス先のメモリ種類別のアクセス回数とアクセス先のメモリ種類別のアクセスコストを基に、見積性能を算出することを特徴とする半導体回路性能見積方法。
【0108】
(付記9)
付記8に記載の半導体回路性能見積方法であって、
前記アクセス先のメモリ種類別のアクセス回数は、記憶領域別のアクセス回数と記憶領域別のメモリ種類を基に求めることを特徴とする半導体回路性能見積方法。
【0109】
(付記10)
付記9に記載の半導体回路性能見積方法であって、
前記アクセス先の記憶領域別のアクセス回数を、前記ソースコードを基に生成した性能評価モデルを実行させることにより求めることを特徴とする半導体回路性能見積方法。
【0110】
(付記11)
付記10に記載の半導体回路性能見積方法であって、
前記性能評価モデルは、該性能評価モデルの実行時に記憶領域別のアクセス回数をカウントするための記述を含むことを特徴とする半導体回路性能見積方法。
【0111】
(付記12)
付記8乃至11の何れか1に記載の半導体回路性能見積方法であって、
前記アクセス先のメモリ種類別のアクセス回数と前記アクセス先のメモリ種類別のアクセスコストを基に算出した前記アクセス先のメモリ種類別のアクセス回数と前記アクセス先のメモリ種類別のアクセスコストの積和を前記見積性能として算出することを特徴とする半導体回路性能見積方法。
【0112】
(付記13)
付記8乃至12の何れか1に記載の半導体回路性能見積方法であって、
前記アクセスコストは、アクセスタイム、アクセスクロックサイクル数、アクセス消費電力、アクセス発生熱量、アクセス対象メモリ面積若しくはアクセス対象メモリ占有時間割合又はこれらの組合せであることを特徴とする半導体回路性能見積方法。
【0113】
(付記14)
付記8乃至12の何れか1に記載の半導体回路性能見積方法であって、
複数の種類のアクセスコストについて、アクセスコストの種類毎に見積性能を算出し、これらを組み合わせることにより得られた値を、最終的な見積性能とすることを特徴とする半導体回路性能見積方法。
【0114】
(付記15)
半導体回路の性能を見積もるための半導体回路性能見積装置としてコンピュータを機能させるための半導体回路性能見積プログラムであって、
前記半導体回路性能見積り装置は、
前記半導体の設計データであるソースコードを基に、アクセス先のメモリ種類別のアクセス回数を求め、該アクセス先のメモリ種類別のアクセス回数とアクセス先のメモリ種類別のアクセスコストを基に、見積性能を算出することを特徴とする半導体回路性能見積プログラム。
【0115】
(付記16)
付記15に記載の半導体回路性能見積プログラムであって、
前記半導体回路性能見積り装置は、前記アクセス先のメモリ種類別のアクセス回数は、記憶領域別のアクセス回数と記憶領域別のメモリ種類を基に求めることを特徴とする半導体回路性能見積プログラム。
【0116】
(付記17)
付記16に記載の半導体回路性能見積プログラムであって、
前記半導体回路性能見積り装置は、前記アクセス先の記憶領域別のアクセス回数を、前記ソースコードを基に生成した性能評価モデルを実行させることにより求めることを特徴とする半導体回路性能見積プログラム。
【0117】
(付記18)
付記17に記載の半導体回路性能見積プログラムであって、
前記性能評価モデルは、該性能評価モデルの実行時に記憶領域別のアクセス回数をカウントするための記述を含むことを特徴とする半導体回路性能見積プログラム。
【0118】
(付記19)
付記15乃至18の何れか1に記載の半導体回路性能見積プログラムであって、
前記半導体回路性能見積り装置は、前記アクセス先のメモリ種類別のアクセス回数と前記アクセス先のメモリ種類別のアクセスコストを基に算出した前記アクセス先のメモリ種類別のアクセス回数と前記アクセス先のメモリ種類別のアクセスコストの積和を前記見積性能として算出することを特徴とする半導体回路性能見積プログラム。
【0119】
(付記20)
付記15乃至19の何れか1に記載の半導体回路性能見積プログラムであって、
前記アクセスコストは、アクセスタイム、アクセスクロックサイクル数、アクセス消費電力、アクセス発生熱量、アクセス対象メモリ面積若しくはアクセス対象メモリ占有時間割合又はこれらの組合せであることを特徴とする半導体回路性能見積プログラム。
【0120】
(付記21)
付記15乃至19の何れか1に記載の半導体回路性能見積プログラムであって、
前記半導体回路性能見積り装置は、複数の種類のアクセスコストについて、アクセスコストの種類毎に見積性能を算出し、これらを組み合わせることにより得られた値を、最終的な見積性能とすることを特徴とする半導体回路性能見積プログラム。
【産業上の利用可能性】
【0121】
本発明は、複雑なアルゴリズムを実現する論理回路の性能を簡易に見積もることに利用できる。
【符号の説明】
【0122】
100 コンピュータ
101 性能評価モデル生成部
102 アクセス回数解析部
103 見積性能計算部
111 解析対象ソースコード記憶部
112 性能評価モデル記憶部
113 記憶領域別アクセス回数対応表記憶部
114 メモリ割当情報記憶部
115 メモリ種類別アクセス回数対応表記憶部
116 アクセスコスト対応表記憶部
117 見積性能記憶部
200記憶装置

【特許請求の範囲】
【請求項1】
半導体回路の性能を見積もるための半導体回路性能見積装置であって、
前記半導体の設計データであるソースコードを基に、アクセス先のメモリ種類別のアクセス回数を求め、該アクセス先のメモリ種類別のアクセス回数とアクセス先のメモリ種類別のアクセスコストを基に、見積性能を算出することを特徴とする半導体回路性能見積装置。
【請求項2】
請求項1に記載の半導体回路性能見積装置であって、
前記アクセス先のメモリ種類別のアクセス回数は、記憶領域別のアクセス回数と記憶領域別のメモリ種類を基に求めることを特徴とする半導体回路性能見積装置。
【請求項3】
請求項2に記載の半導体回路性能見積装置であって、
前記アクセス先の記憶領域別のアクセス回数を、前記ソースコードを基に生成した性能評価モデルを実行させることにより求めることを特徴とする半導体回路性能見積装置。
【請求項4】
請求項3に記載の半導体回路性能見積装置であって、
前記性能評価モデルは、該性能評価モデルの実行時に記憶領域別のアクセス回数をカウントするための記述を含むことを特徴とする半導体回路性能見積装置。
【請求項5】
請求項1乃至4の何れか1に記載の半導体回路性能見積装置であって、
前記アクセス先のメモリ種類別のアクセス回数と前記アクセス先のメモリ種類別のアクセスコストを基に算出した前記アクセス先のメモリ種類別のアクセス回数と前記アクセス先のメモリ種類別のアクセスコストの積和を前記見積性能として算出することを特徴とする半導体回路性能見積装置。
【請求項6】
請求項1乃至5の何れか1に記載の半導体回路性能見積装置であって、
前記アクセスコストは、アクセスタイム、アクセスクロックサイクル数、アクセス消費電力、アクセス発生熱量、アクセス対象メモリ面積若しくはアクセス対象メモリ占有時間割合又はこれらの組合せであることを特徴とする半導体回路性能見積装置。
【請求項7】
請求項1乃至5の何れか1に記載の半導体回路性能見積装置であって、
複数の種類のアクセスコストについて、アクセスコストの種類毎に見積性能を算出し、これらを組み合わせることにより得られた値を、最終的な見積性能とすることを特徴とする半導体回路性能見積装置。
【請求項8】
半導体回路の性能を見積もるための半導体回路性能見積方法であって、
前記半導体の設計データであるソースコードを基に、アクセス先のメモリ種類別のアクセス回数を求め、該アクセス先のメモリ種類別のアクセス回数とアクセス先のメモリ種類別のアクセスコストを基に、見積性能を算出することを特徴とする半導体回路性能見積方法。
【請求項9】
半導体回路の性能を見積もるための半導体回路性能見積装置としてコンピュータを機能させるための半導体回路性能見積プログラムであって、
前記半導体回路性能見積り装置は、
前記半導体の設計データであるソースコードを基に、アクセス先のメモリ種類別のアクセス回数を求め、該アクセス先のメモリ種類別のアクセス回数とアクセス先のメモリ種類別のアクセスコストを基に、見積性能を算出することを特徴とする半導体回路性能見積プログラム。

【図1】
image rotate

【図2】
image rotate

【図3−1】
image rotate

【図3−2】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6−1】
image rotate

【図6−2】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10−1】
image rotate

【図10−2】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2013−65069(P2013−65069A)
【公開日】平成25年4月11日(2013.4.11)
【国際特許分類】
【出願番号】特願2011−201857(P2011−201857)
【出願日】平成23年9月15日(2011.9.15)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】