(57)【要約】【課題】例えばシステム・オン・チップ（ＳｏＣ）上で実現されるべきアプリケーションに対応するソフトウェア／ハードウェア（ＳＷ／ＨＷ）分割を最適化する。【解決手段】ＳＷ／ＨＷ分割評価プログラムは、ハードウェアで実行されるべき部分にマークが付けられたソースコードをコンパイルして、ＳｏＣ上のＣＰＵのシミュレータ用の実行プログラムを生成する手順と、その実行プログラムの実行結果をメモリに格納する手順と、その実行結果によってＳＷ／ＨＷ分割を評価する手順とを計算機に実行させる。【選択図】図１
2007286671.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションを実現するためのソースコードをソフトウェア部とハードウェア部とに分割する計算機によって使用されるプログラムであって、
前記アプリケーションに対応するソースコードの内部でハードウェアで実行されるべきハードウェア部にマークが付けられたソースコードをコンパイルして、アプリケーション実現のために用いられる中央処理装置のシミュレータ用の実行プログラムを生成する手順と、
該シミュレータによる、該実行プログラムの実行結果をメモリに格納する手順と、
該メモリに格納された実行結果によって、前記ハードウェア部に付けられたマークに対応するソフトウェア部とハードウェア部の分割を評価する手順とを計算機に実行させることを特徴とするソフトウェア／ハードウェア分割評価プログラム。
【請求項２】
前記実行プログラムが、前記マークとして前記ハードウェア部の始点と終点に対応する命令コードを含むことを特徴とする請求項１記載のソフトウェア／ハードウェア分割評価プログラム。
【請求項３】
前記シミュレータが、前記実行プログラムの内部で、前記ハードウェア部の始点と終点に対応する命令コードによって、ハードウェア部と該ハードウェア部を除くソフトウェア部とを識別することを特徴とする請求項２記載のソフトウェア／ハードウェア分割評価プログラム。
【請求項４】
前記実行プログラムが、前記ハードウェア部と該ハードウェア部を除くソフトウェア部とを区別することなく前記シミュレータによって実行され、
該シミュレータによる実行結果がハードウェア部とソフトウェア部とに対応して区別してメモリに格納され、
該格納結果に基づいて、前記ソフトウェアとハードウェアの分割を評価することを特徴とする請求項１記載のソフトウェア／ハードウェア分割評価プログラム。
【請求項５】
前記ハードウェア部に付けられるマークの位置が、グラフィック・ユーザ・インターフェースを介して指定されることを特徴とする請求項１記載のソフトウェア／ハードウェア分割評価プログラム。
【請求項６】
アプリケーションを実現するためのソースコードをソフトウェア部とハードウェア部とに分割する計算機によって使用されるプログラムであって、
前記アプリケーションに対応するソースコード内部でハードウェアで実行されるべきハードウェア部にマークが付けられたソースコードをコンパイルして、ハードウェアによって実現されるべき処理部分としてのハードウェア部のモデルと、アプリケーション実現のために用いられる中央処理装置のシミュレータ用の実行プログラムと、該実行プログラム側から該ハードウェア部のモデルを呼び出すためのインターフェースとを生成する手順と、
前記ハードウェア部のモデルを呼び出すことによって実行された結果を含み、該シミュレータによる該実行プログラムの実行結果をメモリに格納する手順と、
該メモリに格納された実行結果によって、前記ハードウェア部に付けられたマークに対応するソフトウェアとハードウェアの分割を評価する手順とを計算機に実行させることを特徴とするソフトウェア／ハードウェア分割評価プログラム。
【請求項７】
前記シミュレータが、前記ソフトウェア部に対応する処理に加えて、前記ハードウェア部のモデルに対応する処理を含めて、前記アプリケーションのソースコードに対応する処理を全て実行することを特徴とする請求項６記載のソフトウェア／ハードウェア分割評価プログラム。
【請求項８】
前記コンパイル時に、前記実行プログラム側が前記ハードウェア部のモデル内のブロックを呼び出すにあたって指定すべき該ブロックのアドレスを格納したアドレス指定ファイルを生成する手順をさらに計算機に実行させることを特徴とする請求項６記載のソフトウェア／ハードウェア分割評価プログラム。
【請求項９】
アプリケーションを実現するためのソースコードをソフトウェア部とハードウェア部とに分割する方法であって、
前記アプリケーションに対応するソースコードの内部でハードウェアで実行されるべきハードウェア部にマークが付けられたソースコードをコンパイルして、アプリケーション実現のために用いられる中央処理装置のシミュレータ用の実行プログラムを生成し、
該シミュレータによる、該実行プログラムの実行結果をメモリに格納し、
該メモリに格納された実行結果によって、前記ハードウェア部に付けられたマークに対応するソフトウェア部とハードウェア部の分割を評価することを特徴とするソフトウェア／ハードウェア分割評価方法。
【請求項１０】
アプリケーションを実現するためのソースコードをソフトウェア部とハードウェア部とに分割する方法であって、
前記アプリケーションに対応するソースコード内部でハードウェアで実行されるべきハードウェア部にマークが付けられたソースコードをコンパイルして、ハードウェアによって実現されるべき処理部分としてのハードウェア部のモデルと、アプリケーション実現のために用いられる中央処理装置のシミュレータ用の実行プログラムと、該実行プログラム側から該ハードウェア部のモデルを呼び出すためのインターフェースとを生成し、
前記ハードウェア部のモデルを呼び出すことによって実行された結果を含み、該シミュレータによる該実行プログラムの実行結果をメモリに格納し、
該メモリに格納された実行結果によって、前記ハードウェア部に付けられたマークに対応するソフトウェアとハードウェアの分割を評価することを特徴とするソフトウェア／ハードウェア分割評価方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はあるアプリケーションを実行するための大規模集積回路の開発方式に係り、さらに詳しくは、そのアプリケーションを実現するためのシステム・オン・チップ（ＳｏＣ）の開発時において、ソフトウェアとハードウェアとの分割を決定するためのソフトウェア／ハードウェア分割プログラム、および分割方法に関する。
【背景技術】
【０００２】
最近では１つのアプリケーション、例えばＨ．２６４方式の画像処理を実現するためのＬＳＩとして、ＣＰＵとユーザ・ハードウェアとを１つのチップ上に搭載するシステム・オン・チップ（ＳｏＣ）が広く用いられるようになっている。
【０００３】
一般的に、このような画像処理を実現する場合にはデータの演算量が膨大となり、処理速度を向上させるためには、大量のデータ処理はハードウェアによって実現し、ＣＰＵは時間管理などの制御動作などを分担させる方が効率的となる。そこでどの処理をハードウェアに分担させ、またどの処理をソフトウェアに分担させるかというソフトウェア／ハードウェアの分割を適切に決定することが性能向上のために極めて重大となる。
【０００４】
すなわち、１つのアプリケーションをＣＰＵとユーザ・ハードウェアとで分割処理する場合に、ＣＰＵ側ではアプリケーションの一部をプログラムとして実行し、ユーザ・ハードウェア側にはソフトウェアの一部をハードエンジンとして実装し、ＣＰＵとユーザ・ハードウェアとが協調して１つのアプリケーションが実行される。このアプリケーションをＣＰＵとハードウェアとで分割するための設計は、当然アプリケーションとＣＰＵのアーキテクチャに依存する。
【０００５】
従来はこのソフトウェア／ハードウェアの分割を決定するためには、人手によってアプリケーション・プログラムのソースコードを、ソフトウェアで実行すべき部分とハードウェアによって実行すべき部分とに分割して、例えばパソコンを用いてＶｉｓｕａｌＣプログラムの実行データを集計し、ソフトウェア／ハードウェア（ＳＷ／ＨＷ）の分割を評価する方法が用いられていた。しかしながらこのような方法では、例えばＳｏＣ上に実際に搭載される組み込みＣＰＵとユーザ・ハードウェアとの間のＳＷ／ＨＷ分割を適切に評価することができないという問題点があった。
【０００６】
このようなシステム記述のシミュレーション、ソフトウェア／ハードウェア協調設計などに関連する従来技術の１つとしての特許文献１では、ハードウェア候補とソフトウェア候補の実行時間を正確に測定できるシステム仕様記述のシミュレーション方法が開示されている。
【０００７】
また特許文献２では、ベンチマークプログラムのセットに基づいて、ソフトウェアの実行時間の推定値を判定し、ベンチマークプログラムから開発されたモデルの評価によって、ソフトウェアの能力を評価する技術が開示されている。
【０００８】
さらに特許文献３では、ハードウェアのシミュレーションとソフトウェアのシミュレーションを一つのアプリケーションに統合し、かつ双方のデバッグができるようにし、高速な協調シミュレーションを実現する技術が開示されている。
【０００９】
しかしながらこのような従来技術を用いても、組み込みＣＰＵとユーザ・ハードウェアとの間のＳＷ／ＨＷ分割を適切に評価できないという問題点を解決することはできなかった。
【特許文献１】特開平１１−２５９５５２号公報  「システム仕様記述のシミュレーション方法」
【特許文献２】特表２００４−５３０１９３号公報  「組込形ソフトウェアの実行時間の統計的評価のための方法及び装置」
【特許文献３】特開２００５−３３２１１０号公報  「シミュレーションシステム」
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明の課題は、上述の問題点に鑑み、例えばシステム・オン・チップ上で搭載される組み込みＣＰＵ専用のシミュレータを用いて、実際に使用される組み込みＣＰＵとソースコード上で分割されたハードウェアとに対応する形式で、実行されるアプリケーションに最適となるようにソフトウェア／ハードウェア分割を決定可能とすることである。
【課題を解決するための手段】
【００１１】
図１は、本発明のソフトウェア／ハードウェア分割評価プログラムの原理的な機能ブロック図である。同図（ａ）は後述する第１の実施例、（ｂ）は第２の実施例に対応するものであり、いずれもアプリケーションを実現するためのソースコードをソフトウェア部とハードウェア部とに分割する計算機によって使用されるプログラムの原理的な機能ブロック図である。
【００１２】
図１（ａ）においては、ステップＳ１でアプリケーションに対応するソースコードの内部で、ハードウェア側で実行されるべきハードウェア部にマークがつけられたコードをコンパイルして、アプリケーション実現のために用いられる中央処理装置のシミュレータ用の実行プログラムを生成する手順が実行され、ステップＳ２でそのシミュレータによる実行プログラムの実行結果をメモリに格納する手順が実行され、ステップＳ３でメモリに格納された実行結果によって、前述のハードウェア部につけられたマークに対応するソフトウェアとハードウェアとの分割を評価する手順が実行される。
【００１３】
図１（ｂ）においては、ステップＳ４で前述と同様にハードウェア部にマークがつけられたコードがコンパイルされて、ハードウェアによって実現されるべき処理部分としてのハードウェア部のモデルと、アプリケーション実現のために用いられる中央処理装置のシミュレータ用の実行プログラムと、その実行プログラム側からハードウェア部のモデルを呼び出すためのインターフェースとが生成され、ステップＳ５でハードウェア部モデルを呼び出すことによって実行された結果を含み、シミュレータによる実行プログラムの実行結果がメモリに格納され、ステップＳ６でメモリの格納内容を用いてハードウェア部のマークに対応するソフトウェアとハードウェアとの分割の評価が行われる。
【００１４】
以上のように本発明によれば、ハードウェア部にマークが付けられたソースコードがコンパイルされ、作成された実行プログラムが、例えばアプリケーション実現のために用いられる中央処理装置のシミュレータによって実行され、その実行結果に対応してソフトウェアとハードウェアとの分割の評価が行われる。
【発明の効果】
【００１５】
本発明によれば、ソフトウェアとハードウェアとの分割を、アプリケーション実現のために用いられる中央処理装置のシミュレータによるプログラムの実行結果によって適切に評価することが可能になり、ソフトウェアとハードウェアの分割案の評価をＳｏＣの設計初期の段階で簡単に行うことが可能となる。
【発明を実施するための最良の形態】
【００１６】
図２は、本発明のソフトウェア／ハードウェア（ＳＷ／ＨＷ）分割、すなわち仮想パーティショニング方式の全体処理フローチャートである。同図において、あるアプリケーションに特化したＬＳＩを開発する目的で、実装しようとするアプリケーション、あるいはミドルウェア１０に対してステップＳ１０でＳＷ／ＨＷ分割、すなわち仮想パーティショニングが行われ、ステップＳ１１で各種モデル（ＳＷ＋ＨＷ）の開発が行われる。
【００１７】
ステップＳ１０の仮想パーティショニング処理では、アプリケーションのソースコードの内部でハードウェアによって実行したほうが効率的と考えられるＨＷ部（ハードブロック）の始点と終点を示すマークが埋め込まれる。すなわち、組み込みソフトウェアを開発するためのソフトウェア開発環境としてのツール上でＨＷ部の始点と終点を示すマークが識別できるようなコーディングが行われる。
【００１８】
あるアプリケーション、例えばＨ．２６４などに特化したＬＳＩの開発時には、実装しようとするアプリケーション、すなわちソフトウェアを組み込みＣＰＵのシミュレータで動くソフトウェアにする必要がある。そのような目的で組み込み用のソフトウェア開発環境においては、開発対象のＣＰＵシミュレータとして、例えばインストラクション・セット・シミュレータ（ＩＳＳ）が組み込まれているか、あるいはＩＳＳの代わりにＣＰＵアーキテクチャによって実行できる他のシミュレータが組み込まれているが、本実施形態ではＩＳＳが組み込まれているものとして以下を説明する。なおＩＳＳはプログラムを命令レベルで実行できるシミュレータである。
【００１９】
ステップＳ１０の仮想パーティショニングではＳＷ／ＨＷの分割が仮想的に行われ、例えばＩＳＳを用いたシミュレーション結果によってその分割が評価される。評価結果が満足できない場合には仮想的なＳＷ／ＨＷ分割に戻り、異なる分割に対して再びその評価が行われる。評価結果がＯＫとなった時点でＳＷ／ＨＷ分割が終了し、ステップＳ１１の各種モデル開発が行われる。各種モデルとしてはＩＳＳ＋ＨＷのＣ／Ｃ＋＋モデル、ＩＳＳ＋ＨＷのＳｙｓｔｅｍＣモデル、あるいはＲＴＬモデルなどがあるが、このモデル自体は本発明と直接の関係はないため、その詳細な説明は省略する。
【００２０】
図３は、本発明の第１の実施例における、図２のステップＳ１０における仮想パーティショニングの基本処理フローチャートである。同図において、ステップＳ２０でＨＷのマークがアプリケーション１０のソースコードに直接挿入され、ＳＷ部と分割されるＨＷ部の指定が行われる。ＨＷ部として指定される部分は、図２で説明したようにＨＷ部の始点と終点を示すマークで挟まれる部分であり、このＨＷマーク以外はすべてＣＰＵ上で実行されるソースコードとなっており、ＨＷマークが挿入されたソースコードはステップＳ２１のコンパイル処理に与えられる。
【００２１】
ステップＳ２１では、例えば前述のＩＳＳ上で実行可能な実行プログラム、すなわちロード・モジュール１１が作成され、ロード・モジュール１１を用いてステップＳ２２でＣＰＵモデルに対するシミュレーション実行処理が行われる。このシミュレーションにおいては、図２で説明したようにＨＷマークが埋め込まれたＨＷ部は、その他のＳＷ部と識別されるが、ＳＷ部と同様にＩＳＳ上で通常と同様に実行され、そのシミュレーション実行結果はＳＷ部とＨＷ部に対応して、区別されてメモリ１２に格納される。
【００２２】
一方、ステップＳ２３では、ステップＳ２２のシミュレーション実行処理の途中でシミュレーションの結果が参照され、必要に応じてロード・モジュール１１に対してもデバッグの処理が行われる。
【００２３】
そしてステップＳ２４でメモリ１２に格納されたＳＷ／ＨＷの仮想パーティショニングに対応するシミュレーション結果に対する評価が行われ、評価結果がＯＫであればＳＷ／ＨＷの分割が終了し、評価がＯＫでない場合にはステップＳ２０に戻り、異なるＳＷ／ＨＷ分割処理が行われて、ステップＳ２１以降の処理が繰り返される。
【００２４】
この第１の実施例では、ＨＷ部も、前述のように例えばＩＳＳによってＳＷ部と同様に実行処理が行われるが、ＩＳＳはあるアプリケーションに特化したＬＳＩ、すなわちシステム・オン・チップ（ＳｏＣ）に組み込まれるＣＰＵのシミュレータであり、従来技術におけるように組み込みＣＰＵと関係のない一般的なパソコンなどを用いてＳＷ／ＨＷの分割を評価する場合に比べて、実際のＳｏＣ上でのＳＷ／ＨＷ分割に対してより適切な評価を行うことが可能となる。ＩＳＳは、ユーザＣ関数をＨａｒｄ関数として実行する機能を持ち、ＩＳＳだけを用いてＳＷ／ＨＷの仮想パーティショニングの評価が可能となる。
【００２５】
図４は、図３のステップＳ２２におけるシミュレーションの全体処理フローチャートである。同図において実行プログラム１１が与えられ、ステップＳ２６で全体的なメイン処理がスタートすると、ステップＳ２７でアプリケーションとして実行すべき命令があるか否かが判定され、命令がある場合にはステップＳ２８で、例えばプロセッサ・エレメント（ＰＥ）０モデルとしてのＥｘｅ＿ｌｏｏｐ関数の実行処理が行われ、ステップＳ２７で実行すべき命令がなくなるまでステップＳ２７、Ｓ２８のループが繰り返され、実行すべき命令がないと判定された時点で処理を終了する。ここでは、プロセッサ・エレメント０に対する処理の実行だけが示されているが、この処理がマルチコアによって実行される処理でも良いことは当然である。
【００２６】
図５は、ステップＳ２８におけるプロセッサ・エレメント０モデルの実行処理の詳細フローチャートである。ここではＩＳＳの実行エンジンとしてのＥｘｅ−ｌｏｏｐ関数に実行ステップ数が渡され、その関数がコールされるものとして処理を説明する。
【００２７】
図５において処理が開始されると、ステップＳ３０で命令すべき実行があるか否かが判定され、ある場合にはステップＳ３１で命令がフェッチされ、デコードが行われ、ステップＳ３２でその命令が特殊命令としてのＨＷ部マークであるか否かが判定され、そのマークである場合にはステップＳ３３でＨＷ部の開始のマークに対してはＨＷ部実行フラグがオンとされた後に、ＨＷマークでない場合には直ちに、ステップＳ３４で命令実行処理が行われる。なお、ステップＳ３３で、ＨＷ部マークがＨＷ部の終点を示す場合にはＨＷ部実行フラグはオフとされる。
【００２８】
ステップＳ３４では、実行される命令の種類が把握され、命令によってサイクル数が決定され、その命令の実行結果としての実行情報がステップＳ３５で蓄積される。その実行情報は、ＨＷ部フラグがオンであればＨＷ部の命令実行情報としてメモリ１４に、またＨＷ部フラグがオフであればＳＷ部の実行情報としてメモリ１５に格納される。
【００２９】
その後、ステップＳ３６で割込み処理が行われ、ステップＳ３０に戻り、実行すべき命令がまだある場合にはステップＳ３１以降の処理が繰り返され、実行すべき命令がない場合には実行関数としてのＥｘｅ−ｌｏｏｐを抜けて図４のステップＳ２７の処理に戻ることになる。なおここでステップＳ３６の割込み処理は、例えばタイマ割込みなどに対する一般的な処理であり、本発明と直接の関連はなく、そのような処理が不要な場合には、ステップＳ３６の処理は実行されない。
【００３０】
図６は、図５のステップＳ３５で蓄積される実行情報の例である。実行情報としては、まず実行命令の種類、演算量を含む命令数、例えば全体としてのサイクル数、例えばメモリに対するロード／ストアによるデータアクセス量、アクセス種類などの情報が得られる。
【００３１】
そしてマルチプロセッサシステムにおいては、プロセッサ間での制御や情報伝達のための通信回数や通信データ量、およびプロセッサ間でのプログラムの並列度、すなわちデータ依存の確認情報などが得られ、前述のようにＨＷ部の結果とＳＷ部の結果とに分けてこのような情報が図５のメモリ１４、１５に格納される。
【００３２】
続いてＨＷ部マークのソースコードへの挿入について、図７から図９を用いてさらに説明する。図７では、特殊命令としてのｐｒａｇｍａ部をソースコード１６に挿入することによって、ＨＷ部の始点と終点が示される、すなわち“＃ｐｒａｇｍａ”によってＨＷ部の始点、また“＃ｅｎｄ”によってＨＷ部の終点を示す特殊命令がＣ／Ｃ＋＋ソースコードに挿入され、ＨＷ部の開始と終了が、例えばＩＳＳによって認識されることになる。
【００３３】
図８は、例えばＣソースコード１６に挿入される異なるＨＷ部マークの例である。ここでは、ＳＴＡＲＴ＿ＵＳＥＲ＿ＨＷがＨＷ部の始点を示す特殊命令として、またＥＮＤ＿ＵＳＥＲ＿ＨＷが終点を示す特殊命令として挿入されるが、これらの特殊命令の定義については、例えばヘッダファイル１７を参照することによってハードウェアアクセスであることがＩＳＳによって認識され、またその変数“ａｄｄｒ，１”によってＨＷ部の開始が、また“ａｄｄｒ，０”によって終了が示される。
【００３４】
なおこのようにソースコードに挿入される特殊命令は元々のアプリケーションのソースコードとは全く無関係の命令であり、ＣＰＵシミュレータとしての、例えばＩＳＳのみが認識できる命令である。また始点と終点の間に挟まれるＨＷ部内の命令コードはＨＷ部の一部としてのＨＷブロックを識別できるデータ、例えばアドレスを含むこともできる。
【００３５】
図９は、ＧＵＩ（グラフィック・ユーザ・インターフェース）を用いたＨＷマークの埋め込み例の説明図である。同図においてユーザは、例えばマウスを用いてＨＷ部の始点と終点を指定することが可能であり、この始点と終点の間が仮想ＨＷ部として指定されることになる。
【００３６】
以上で第１の実施例の説明を終わり、以下第２の実施例について説明する。第１の実施例においては、ＳＷ／ＨＷの分割がＨＷ部マークのソースコードへの挿入によって行われるが、実際の命令実行はＣＰＵモデルとしての、例えばＩＳＳによってＳＷ部とＨＷ部とに対して同様に実行され、シミュレーションの実行結果としての実行情報がＳＷ部に対する実行情報とＨＷ部に対する実行情報とに分けて蓄積される。これに対して第２の実施例では、ＨＷ部に対してはＣＰＵモデルとは異なるモデルが、例えばＣモデルのＨＷ部として存在し、ソースコード上でＨＷ部の始点のマークが認識されると、アプリケーション・プログラム・インターフェース（ＡＰＩ）を介してＨＷ部に処理が移され、ＨＷ部の終点を示すマークが認識された時点で処理が再びＣＰＵモデルとしてのＩＳＳに返される形式でシミュレーションが行われる。
【００３７】
図１０は、第２の実施例における仮想パーティショニング処理の基本フローチャートである。同図を第１の実施例に対する図３と比較すると、アプリケーション１０に対してステップＳ４０で、図３におけると同様にＨＷマークがソースコードに直接挿入されてＨＷ部が指定され、ステップＳ４１でコンパイルが行われるが、このコンパイルの内容が図３とは異なってくる。
【００３８】
すなわちこのコンパイル処理では、ＳＷ／ＨＷの分割結果に対応してＨＷ部２２が独立したオブジェクトとして分離される。例えばＩＳＳに与えられる実行プログラムとしてのロード・モジュール２１は、ＳＷ部のみとすることもできるが、後述するようにＨＷ部の命令の実行もＩＳＳによって可能とするために、ＳＷ部とＨＷ部との両方を含むこともできるものとする。
【００３９】
そしてステップＳ４２でＣＰＵモデル、例えばＩＳＳを用いてシミュレーションが実行され、その結果は図３におけると同様にメモリ１２に格納されるが、ＨＷ部の始点のマークが認識されると、ＡＰＩ（アプリケーション・プログラミング・インターフェース）２３によるアドレス指定によってＨＷ部２２が呼び出されて、ＨＷ部の処理が行われる。なおステップＳ４３のデバッグ処理、ステップＳ４４の分割評価判定処理は図３におけると同様である。
【００４０】
図１１は、第２の実施例におけるＥｘｅ−ｌｏｏｐ、すなわち命令実行関数からのＨＷ部呼び出し方式の説明図である。同図においてはアプリケーション・プログラム・インターフェース（ＡＰＩ）２３がＥｘｅ−ｌｏｏｐ２４とＨＷ部２５との間に存在し、ＨＷ部２５は、それぞれ例えばＨＷ関数に対応する複数のＨＷブロック２５１から２５Ｎまでによって構成されているが、どのブロックを呼び出すべきかはアドレス指定ファイル２６の内容によって決定される。アドレス指定ファイル２６は、ＨＷブロック、すなわちＨＷ関数とそのアドレスとの対応を示すものであり、どのＨＷ関数を呼び出すべきかによって、対応するアドレスのＨＷ関数が呼び出されることになる。なおＨＷ部の処理は呼び出されたＨＷ関数の内部で閉じたものでなければならず、リターン値はＡＰＩ２３を介してＣＰＵモデル側に返される。
【００４１】
図１２は、図１１の命令実行関数、すなわちＥｘｅ−ｌｏｏｐ処理の詳細フローチャートである。同図を第１の実施例における図５と比較すると、まずステップＳ５０、Ｓ５１で図５のステップＳ３０、Ｓ３１と同様に、実行すべき命令がある場合には、命令がフェッチされ、命令のデコードが行われ、ステップＳ５２でＨＷ部マークが検出されたか否かが判定される。
【００４２】
検出された場合には、第２の実施例においてはＡＰＩ２３を用いて、例えばＣモデルとしてのＨＷ部２５が呼び出され、ＨＷ関数の実行が行われ、その結果はＡＰＩ２３を介して、例えばＩＳＳ側に返される。
【００４３】
ＩＳＳ側での処理が再開され、ステップＳ５３でＨＷ部実行フラグがＨＷ部マークの始点に対してはオン、終点に対してはオフとされた後に、ステップＳ５４で命令を実行すべきか否かが判定される。この判定は、ＨＷ部２５によってＨＷ関数の実行が行われた命令に対してもＩＳＳ側で再び命令を実行すべきか否かを判定するものであり、その判定結果がマークとしての始点と終点で挟まれた１つのＨＷ部に対しては同じとなるように判定が行われる。
【００４４】
そしてステップＳ５５で命令が実行されるが、ここではステップＳ５２でＨＷ部マークであると認識されなかった命令、すなわちＳＷ部の命令は当然実行され、またステップＳ５４でＨＷ部の命令を実行すべき場合にはその命令も実行される。またＨＷ部の命令をＩＳＳ側で実行しない場合には、ステップＳ５５の命令実行は行われず、ステップＳ５６の処理に移行する。
【００４５】
ステップＳ５６では、第１の実施例におけると同様にＨＷ部に対する命令実行結果の情報はメモリ１４に、ＳＷ部に対する実行情報はメモリ１５に蓄積される。なお、ＨＷ部に対してＩＳＳによる命令実行が行われた場合の実行情報もメモリ１４に蓄積されるものとする。ステップＳ５７における割込み処理などは第１の実施例に対する図５と同様であり、その説明を省略する。
【００４６】
図１３は、第２の実施例においてＩＳＳに接続されるＨＷ部の生成方式の説明図である。同図においてソースコード１６の内部でマークによって区切られたＨＷ部は、ステップＳ６０のＨＷ部コード切り出し処理によって切り出され、ＳＷ部３０とＨＷ部３１とが分割され、ＡＰＩ部３２、およびアドレス指定ファイル３３が新たに作成され、ＨＷ部３１とＡＰＩ部３２は、計算機ＯＳでのソフトウェア開発環境３６に与えられ、またＳＷ部３０はＣＰＵシミュレーションのＳＷ開発環境３５に与えられる。なおアドレス指定ファイルの内容は図１０のステップＳ４１のコンパイル時に自動設定されることも、あるいはハードウェア部にマークが付けられる時点で、例えばユーザによって指定されることもできる。
【００４７】
ＣＰＵシミュレーションのＳＷ開発環境３５にはＩＳＳ３７が備えられており、また計算機ＯＳでのソフトウェア開発環境３６に対応してＡＰＩ部（オブジェクト）３８、およびＨＷ部（オブジェクト）３９が生成される。そしてＩＳＳ３７は、ＨＷ部オブジェクト３９とＡＰＩ部オブジェクト３８を介して接続されるが、この接続は前述のようにアドレス指定ファイル３３の内容によって制御される。このアドレス指定については、ここに示すようにアドレス指定ファイル３３のような別のファイルによる指定でも良く、ＡＰＩ部３８にそのファイルの内容を埋め込んで指定を行うこともできる。このように第２の実施例では、ＨＷ部の処理をＩＳＳ上で実行する代わりに、ＩＳＳと同レベルのオブジェクト関数として実行することができ、第１の実施例よりも処理が高速となる。
【００４８】
図１４は、ＩＳＳとＨＷ部の接続例としてのＩＳＳ側からのＨＷ部、例えばメモリへのデータライトアクセスの説明図である。ここでＩＳＳ側のＡＰＩはｗｒｉｔｅ＿ｂｉｍ（）であり、ＨＷ側のＡＰＩオブジェクトはｖ＿ｒｅｇ＿ｗｒｉｔｅ（）を介してＨＷ部のオブジェクトとしてのＨＷブロック（ユニット）にアクセスする。
【００４９】
図１５は、第２の実施例におけるアドレス指定ファイルの例の説明図である。ＩＳＳはソースコード１６に埋め込まれたＨＷ部の開始マークとしてのＳＴＡＲＴ＿ＵＳＥＲ＿ＨＷが特殊命令であることから、ヘッダファイル１７を参照し、この命令がハードウェアアクセスを定義するものであることを認識する。そしてアドレス指定ファイル３３の内容によって“ａｄｄｒ０”が“０ｘｆｆ００００１０”であることを認識し、このアドレスを用いてＨＷ部ブロックとしての関数を呼び出すことが可能となる。
【００５０】
第２の実施例においても仮想ＳＷ／ＨＷ分割後のシミュレーションの結果として図６に示した各種の情報が得られる。またＨＷ部マークのソースコードへの挿入や、ＧＵＩを利用した指定などについては第１の実施例に対する図７から図９と同様であり、その説明を省略する。
【００５１】
次にコアモデルとしてのＩＳＳと仮想ＨＷ部とによって構成されるＣＰＵモデルが含まれるＳｏＣ（システム・オン・チップ）モデルについて、図１６と図１７を用いて説明する。このようなシステムモデルは前述の第１の実施例、および第２の実施例を区別することなく、構成することが可能である。
【００５２】
図１６においてＳｏＣモデルとしてのシステムモデルは複数の周辺Ｉ／Ｏ（入出力部）４１ａから４１ｃ、複数のＣＰＵモデル４２ａから４２ｃがいずれもバス４３に接続される構成となっている。各ＣＰＵモデルの内部にはそれぞれＩＳＳが１台以上備えられ、例えばＣＰＵモデル４２ｂは１つのコアモデル、すなわちＩＳＳ４４と、仮想ＨＷ部４５とによって構成され、ＣＰＵモデル４２ｃは２つのコアモデル、すなわちＩＳＳ４４と、２つの仮想ＨＷ部４５とによって構成されている。
【００５３】
図１６において仮想ＳＷ／ＨＷパーティショニングの結果は同種、あるいは異種構成のマルチＣＰＵモデルを使った分割シミュレーションによる評価が可能である。そのような分割シミュレーションにおいては、例えば図５のフローチャートの処理が並列に実行されるため、プログラムの並列度の抽出も可能となる。さらに例えばＳｙｓｔｅｍＣ、あるいはＣ／Ｃ＋＋のＳｏＣモデルにおいて、ＣＰＵコア（ＩＳＳ）内でＳＷ／ＨＷ分割の再設計や、ＳＷ／ＨＷ分割の最適化を検討することができる。
【００５４】
図１７は、図１６のシステムにおけるデータの持ち方の説明図である。図１６のＣＰＵモデル４２ｃの内部の２つのＩＳＳ４４をそれぞれＩＳＳ０、ＩＳＳ１とすると、ＩＳＳ０側では仮想ＨＷ部がＨＷ部マークによって検出され、第１の実施例、または第２の実施例で説明したようにＳＷ部とＨＷ部とに対応する処理が実行されており、もう１つのＩＳＳ１側ではＳＷ部だけの処理が実行されている場合を示している。ただし、ここでデータのフォーマットについては様々な形式が可能であり、特にそれを限定するものではない。
【００５５】
以上において本発明のＳＷ／ＨＷ分割評価プログラム、および分割評価方法についてその詳細を説明したが、このプログラムをツールとして用いる設計システムは一般的なコンピュータシステムを基本として構成することが可能である。図１８はそのようなコンピュータシステム、すなわちハードウェア環境の構成ブロック図である。
【００５６】
図１８においてコンピュータシステムは中央処理装置（ＣＰＵ）５０、リード・オンリ・メモリ（ＲＯＭ）５１、ランダム・アクセス・メモリ（ＲＡＭ）５２、通信インターフェース５３、記憶装置５４、入出力装置５５、可搬型記憶媒体の読取り装置５６、およびこれらの全てが接続されたバス５７によって構成されている。
【００５７】
記憶装置５４としてはハードディスク、磁気ディスクなど様々な形式の記憶装置を使用することができ、このような記憶装置５４、またはＲＯＭ５１に図３〜図５、図１０、図１２のフローチャートに示されたプログラムや、本発明の特許請求の範囲の請求項１〜８のプログラムなどが格納され、そのようなプログラムがＣＰＵ５０によって実行されることにより、本実施形態におけるＳＷ／ＨＷ分割の評価、適切な分割結果に対応した各種モデル開発などが可能となる。
【００５８】
このようなプログラムは、プログラム提供者５８からネットワーク５９、および通信インターフェース５３を介して、例えば記憶装置５４に格納されることも、また市販され、流通している可搬型記憶媒体６０に格納され、読取り装置５６にセットされて、ＣＰＵ５０によって実行されることも可能である。可搬型記憶媒体６０としてはＣＤ−ＲＯＭ、フレキシブルディスク、光ディスク、光磁気ディスク、ＤＶＤなど様々な形式の記憶媒体を使用することができ、このような記憶媒体に格納されたプログラムが読取り装置５６によって読取られることにより、本実施形態におけるＳＷ／ＨＷ分割の評価などが可能となる。
【００５９】
（付記１）  アプリケーションを実現するためのソースコードをソフトウェア部とハードウェア部とに分割する計算機によって使用されるプログラムであって、
前記アプリケーションに対応するソースコードの内部でハードウェアで実行されるべきハードウェア部にマークが付けられたソースコードをコンパイルして、アプリケーション実現のために用いられる中央処理装置のシミュレータ用の実行プログラムを生成する手順と、
該シミュレータによる、該実行プログラムの実行結果をメモリに格納する手順と、
該メモリに格納された実行結果によって、前記ハードウェア部に付けられたマークに対応するソフトウェア部とハードウェア部の分割を評価する手順とを計算機に実行させることを特徴とするソフトウェア／ハードウェア分割評価プログラム。
（付記２）  前記実行プログラムが、前記マークとして前記ハードウェア部の始点と終点に対応する命令コードを含むことを特徴とする付記１記載のソフトウェア／ハードウェア分割評価プログラム。
（付記３）  前記シミュレータが、前記実行プログラムの内部で、前記ハードウェア部の始点と終点に対応する命令コードによって、ハードウェア部と該ハードウェア部を除くソフトウェア部とを識別することを特徴とする付記２記載のソフトウェア／ハードウェア分割評価プログラム。
（付記４）  前記実行プログラムが、前記ハードウェア部と該ハードウェア部を除くソフトウェア部とを区別することなく前記シミュレータによって実行され、
該シミュレータによる実行結果がハードウェア部とソフトウェア部とに対応して区別してメモリに格納され、
該格納結果に基づいて、前記ソフトウェアとハードウェアの分割を評価することを特徴とする付記１記載のソフトウェア／ハードウェア分割評価プログラム。
（付記５）  前記ハードウェア部に付けられるマークの位置が、グラフィック・ユーザ・インターフェースを介して指定されることを特徴とする付記１記載のソフトウェア／ハードウェア分割評価プログラム。
（付記６）  前記マークが付けられたハードウェア部内の命令コードが、該ハードウェア部の一部としてのハードウェアブロックを識別できるデータを含むことを特徴とする付記１記載のソフトウェア／ハードウェア分割評価プログラム。
（付記７）  アプリケーションを実現するためのソースコードをソフトウェア部とハードウェア部とに分割する計算機によって使用されるプログラムであって、
前記アプリケーションに対応するソースコードの内部でハードウェアで実行されるべきハードウェア部にマークが付けられたソースコードをコンパイルして、アプリケーション実現のために用いられる中央処理装置のシミュレータが移植されたソフトウェア環境で組み込まれる中央処理装置用の実行プログラムを生成する手順と、
該シミュレータによる、該実行プログラムの実行結果をメモリに格納する手順と、
該メモリに格納された実行結果によって、前記ハードウェア部に付けられたマークに対応するソフトウェア部とハードウェア部の分割を評価する手順とを計算機に実行させることを特徴とするソフトウェア／ハードウェア分割評価プログラム。
（付記８）  アプリケーションを実現するためのソースコードをソフトウェア部とハードウェア部とに分割する計算機によって使用されるプログラムであって、
前記アプリケーションに対応するソースコード内部でハードウェアで実行されるべきハードウェア部にマークが付けられたソースコードをコンパイルして、ハードウェアによって実現されるべき処理部分としてのハードウェア部のモデルと、アプリケーション実現のために用いられる中央処理装置のシミュレータ用の実行プログラムと、該実行プログラム側から該ハードウェア部のモデルを呼び出すためのインターフェースとを生成する手順と、
前記ハードウェア部のモデルを呼び出すことによって実行された結果を含み、該シミュレータによる該実行プログラムの実行結果をメモリに格納する手順と、
該メモリに格納された実行結果によって、前記ハードウェア部に付けられたマークに対応するソフトウェアとハードウェアの分割を評価する手順とを計算機に実行させることを特徴とするソフトウェア／ハードウェア分割評価プログラム。
（付記９）  前記シミュレータが、前記ソフトウェア部に対応する処理に加えて、前記ハードウェア部のモデルに対応する処理を含めて、前記アプリケーションのソースコードに対応する処理を全て実行することを特徴とする付記８記載のソフトウェア／ハードウェア分割評価プログラム。
（付記１０）  前記コンパイル時に、前記実行プログラム側が前記ハードウェア部のモデル内のブロックを呼び出すにあたって指定すべき該ブロックのアドレスを格納したアドレス指定ファイルを生成する手順をさらに計算機に実行させることを特徴とする付記８記載のソフトウェア／ハードウェア分割評価プログラム。
（付記１１）  前記アドレス指定ファイルに格納されるアドレスが、前記コンパイル時に自動設定されることを特徴とする付記１０記載のソフトウェア／ハードウェア分割評価プログラム。
（付記１２）  前記アドレス指定ファイルに格納されるアドレスが、前記ハードウェア部にマークが付けられる時点で、外部からの指定に対応して設定されることを特徴とする付記１０記載のソフトウェア／ハードウェア分割評価プログラム。
（付記１３）  アプリケーションを実現するためのソースコードをソフトウェア部とハードウェア部とに分割する計算機によって使用される記憶媒体であって、
前記アプリケーションに対応するソースコードの内部でハードウェアで実行されるべきハードウェア部にマークが付けられたソースコードをコンパイルして、アプリケーション実現のために用いられる中央処理装置のシミュレータ用の実行プログラムを生成するステップと、
該シミュレータによる、該実行プログラムの実行結果をメモリに格納するステップと、
該メモリに格納された実行結果によって、前記ハードウェア部に付けられたマークに対応するソフトウェア部とハードウェア部の分割を評価するステップとを計算機に実行させるプログラムを格納した計算機読み出し可能可搬型記憶媒体。
（付記１４）  アプリケーションを実現するためのソースコードをソフトウェア部とハードウェア部とに分割する方法であって、
前記アプリケーションに対応するソースコードの内部でハードウェアで実行されるべきハードウェア部にマークが付けられたソースコードをコンパイルして、アプリケーション実現のために用いられる中央処理装置のシミュレータ用の実行プログラムを生成し、
該シミュレータによる、該実行プログラムの実行結果をメモリに格納し、
該メモリに格納された実行結果によって、前記ハードウェア部に付けられたマークに対応するソフトウェア部とハードウェア部の分割を評価することを特徴とするソフトウェア／ハードウェア分割評価方法。
（付記１５）  アプリケーションを実現するためのソースコードをソフトウェア部とハードウェア部とに分割する方法であって、
前記アプリケーションに対応するソースコード内部でハードウェアで実行されるべきハードウェア部にマークが付けられたソースコードをコンパイルして、ハードウェアによって実現されるべき処理部分としてのハードウェア部のモデルと、アプリケーション実現のために用いられる中央処理装置のシミュレータ用の実行プログラムと、該実行プログラム側から該ハードウェア部のモデルを呼び出すためのインターフェースとを生成し、
前記ハードウェア部のモデルを呼び出すことによって実行された結果を含み、該シミュレータによる該実行プログラムの実行結果をメモリに格納し、
該メモリに格納された実行結果によって、前記ハードウェア部に付けられたマークに対応するソフトウェアとハードウェアの分割を評価することを特徴とするソフトウェア／ハードウェア分割評価方法。
【図面の簡単な説明】
【００６０】
【図１】本発明のソフトウェア／ハードウェア分割プログラムの原理的な機能ブロック図である。
【図２】本発明における仮想パーティショニング方式の全体処理フローチャートである。
【図３】第１の実施例におけるソフトウェア／ハードウェア分割処理の基本フローチャートである。
【図４】ＣＰＵモデルシミュレーション実行処理の全体フローチャートである。
【図５】図４における命令実行関数処理の詳細フローチャートである。
【図６】シミュレーションの結果として得られる情報の例である。
【図７】ソースコードへのハードウェア部マーク挿入例（その１）である。
【図８】ソースコードへのハードウェア部マーク挿入例（その２）である。
【図９】グラフィック・ユーザ・インターフェースを利用したハードウェア部マークの挿入方法の説明図である。
【図１０】第２の実施例におけるソフトウェア／ハードウェア分割処理の基本フローチャートである。
【図１１】第２の実施例におけるハードウェア部呼出し方式の説明図である。
【図１２】第２の実施例における命令実行関数処理の詳細フローチャートである。
【図１３】命令セットシミュレータと接続されるハードウェア部生成方式の説明図である。
【図１４】アプリケーション・プログラミング・インターフェースを介した命令セットシミュレータからハードウェア部へのアクセス例を説明する図である。
【図１５】第２の実施例におけるアドレス指定ファイルの例である。
【図１６】システム・オン・チップモデルの構成例である。
【図１７】図１６のシステムにおけるデータの持ち方の説明図である。
【図１８】本発明におけるプログラムのコンピュータへのローディングを説明する図である。
【符号の説明】
【００６１】
１０  アプリケーション（ミドルウェア）
１１、２１  実行プログラム（ロード・モジュール）
１２  シミュレーション結果格納メモリ
１４  ハードウェア部実行結果格納メモリ
１５  ソフトウェア部実行結果格納メモリ
１６  ソースコード
１７  ヘッダファイル
２２、２５、３１  ハードウェア部
２３  アプリケーション・プログラミング・インターフェース（ＡＰＩ）
２４  命令実行関数（Ｅｘｅ−ｌｏｏｐ関数）
２６、３３  アドレス指定ファイル
３０  ソフトウェア部
３２  ＡＰＩ部
３５  ＣＰＵシミュレーションのソフトウェア開発環境
３６  計算機ＯＳでのソフトウェア開発環境
３７  命令セットシミュレータ（ＩＳＳ）
３８  ＡＰＩ部オブジェクト
３９  ハードウェア部オブジェクト
４１  周辺Ｉ／Ｏ
４２  ＣＰＵモデル
４３  バス
４４  コアモデル（ＩＳＳ）
４５  仮想ハードウェア部
５０  中央処理装置（ＣＰＵ）
５１  リード・オンリ・メモリ（ＲＯＭ）
５２  ランダム・アクセス・メモリ（ＲＡＭ）
５３  通信インターフェース
５４  記憶装置
５５  入出力装置
５６  読み取り装置
５７  バス
５８  プログラム提供者
５９  ネットワーク
６０  可搬型記憶媒体
【図１】
2007286671.tif 000003
【図２】
2007286671.tif 000004
【図３】
2007286671.tif 000005
【図４】
2007286671.tif 000006
【図５】
2007286671.tif 000007
【図６】
2007286671.tif 000008
【図７】
2007286671.tif 000009
【図８】
2007286671.tif 000010
【図１０】
2007286671.tif 000011
【図１１】
2007286671.tif 000012
【図１２】
2007286671.tif 000013
【図１３】
2007286671.tif 000014
【図１４】
2007286671.tif 000015
【図１５】
2007286671.tif 000016
【図１６】
2007286671.tif 000017
【図１７】
2007286671.tif 000018
【図１８】
2007286671.tif 000019
【図９】
2007286671.tif 000020